From 8a08f2e280fd6ad4f38bffe8389b200c901f3b61 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Fri, 5 May 2023 07:22:45 +0100 Subject: [PATCH 001/142] Add experimental notebook --- .../01 - The heart of Rx, IObservable.dib | 230 ++++++++++++++++++ tempidgcourse/JsInteractivityExperiments.dib | 71 ++++++ 2 files changed, 301 insertions(+) create mode 100644 tempidgcourse/01 - The heart of Rx, IObservable.dib create mode 100644 tempidgcourse/JsInteractivityExperiments.dib diff --git a/tempidgcourse/01 - The heart of Rx, IObservable.dib b/tempidgcourse/01 - The heart of Rx, IObservable.dib new file mode 100644 index 0000000..d0e66f8 --- /dev/null +++ b/tempidgcourse/01 - The heart of Rx, IObservable.dib @@ -0,0 +1,230 @@ +#!meta + +{"kernelInfo":{"defaultKernelName":"csharp","items":[{"aliases":[],"languageName":"csharp","name":"csharp"}]}} + +#!csharp + +//#r "nuget:System.Reactive,6.0-*" +using System.Reactive; +using System.Reactive.Linq; + +#!markdown + +# The heart of Rx: `IObservable` + +The Reactive Extensions to .NET (Rx.NET, or Rx for short) are useful in any program that needs to take action when something happens. + +Rx embodies a fundamental programming concept in the same way that loops, lists, and recursion are each fundamental programming concepts. At its core is a deceptively simple abstraction, `IObservable`. Here's one: + +#!csharp + +IObservable numbers = Observable.Range(1, 5); + +#!markdown + +This `numbers` observable represents a sequence of numbers, from 1 to 5. You might be thinking that C# already knows all about sequences of things. Can't we represent this sort of thing with `IEnumerable`? Well, yes: + +#!csharp + +// Non-reactive +IEnumerable nonReactive = Enumerable.Range(1, 5); +foreach (int value in nonReactive) +{ + Console.WriteLine(value); +} + +#!markdown + +The difference is that an `IObservable` gives us values when they are available; an `IEnumerable` supplies values when we ask for them. That makes `IObservable` a better model for some sources of information. For example, financial information, data from monitoring devices, and user interactions all tend to happen on their own schedule. If you want to run code when the price of a financial instrument crosses some threshold, a `foreach` loop is not a natural way to model that. + +Since an `IObservable` provides values as and when they are available, the code to consume these values looks different. We need to provide code that the `IObservable` can call when it has a value: + +#!csharp + +numbers.Subscribe(value => Console.WriteLine(value)); + +#!markdown + +Here, we've _subscribed_ to the observable source, `numbers`, supplying it with a method that it can call back each time it has a value for us. + +Now this particular example is a bit pointless because the nature of the source means that all the numbers are available immediately, so it supplies the first value as soon as we call `Subscribe`, and as soon as we've processed that, it immediately supplies the next, and so on. + +Although you _can_ represent a sequence of numbers as an `IObservable`, doing so doesn't really offer any advantage over an `IEnumerable`. `IObservable` is better suited to situations where values naturally become available at a particular moment in time. + +Let's look at a real example: observing the movement of ships through the water. + +## Using Rx with AIS to track ships + +Ocean-going ships typically have equipment that tracks location using GPS (Global Positioning System) and which also monitors speed, heading, and various other attributes, and then transmits this information in radio messages. This enables vessels that are close to one another to be aware of which other vessels are in the area, where they are, and where they're going. The standard for these radio messages is called AIS (Automatic Identification System), and it is a legal requirement for many kinds of vessels to operate AIS equipment. + +Ships send AIS messages on their own schedule, typically increasing the rate when they are on the move. This makes this kind of information a natural fit for Rx. + +[endjin](endjin.com) maintains [Ais.Net](https://github.com/ais-dotnet/), a set of open source libraries for working with AIS messages. We're going to use these libraries to show how Rx can handle live information sources. + +First, we'll bring in the library that provides an Rx wrapper around AIS: + +#!csharp + +#r nuget:Ais.Net.Receiver + +#!markdown + +We will be using types from this library in a couple of namespaces. One provides types that represent the structure of AIS messages. The other provides the "AIS Receiver", a component that can receive live AIS messages over the internet. + +#!csharp + +using Ais.Net.Models.Abstractions; +using Ais.Net.Receiver.Receiver; + +#!markdown + +Now we can connect a receiver to a publicly available source of live AIS messages. The Norwegian government very helpfully provides live AIS messages from its coastal waters. + +Our `NetworkStreamNmeaReceiver` provides access to the raw messages. (NMEA is the format in which the messages are sent.) And the `ReceiverHost` parses those messages and presents them through Rx as an `IObservable`. + +#!csharp + +INmeaReceiver receiver = new NetworkStreamNmeaReceiver( + host: "153.44.253.27", // Norwegian government AIS service + port: 5631, + retryPeriodicity: TimeSpan.FromSeconds(1), + retryAttemptLimit: 100); + +ReceiverHost receiverHost = new (receiver); + +IObservable aisMessages = receiverHost.Messages; + +// Note that by starting the receiver now, it will be running (inside the .NET Interactive +// host process for this Polyglot Notebook) until either the notebook is closed, or we +// explicitly stop the host through the cancellation token passed here. +System.Threading.CancellationTokenSource aisReceiverStop = new(); +_ = Task.Run(async () => await receiverHost.StartAsync(aisReceiverStop.Token)); + +#!markdown + +**Note**: towards the end of this notebook there's a cell to shut down the `ReceiverHost` we just started. It will remain connected until shut down, or until you close this notebook (or restat the notebook kernel). + +#!markdown + +The AIS observer uses the TPL thread pool, so it will deliver notifications on thread pool threads. Rx is perfectly happy with that, but when you do that in a Polyglot Notebook, calls to `Console.WriteLine` stop working. We need to jump through some hoops to ensure output continues to work. This class enables us to produce output even when we're no longer on the main thread: + +#!csharp + +using Microsoft.DotNet.Interactive; + +public class OutContext +{ + private KernelInvocationContext ctx = KernelInvocationContext.Current; + + public void WriteLine(string text) => + KernelInvocationContextExtensions.DisplayStandardOut(ctx, text + System.Environment.NewLine); +} + +#!markdown + +Now that we've got a way of displaying output, let's subscribe to the AIS for a few seconds and see what happens: + +#!csharp + +// Unlike Observable.Range, the AIS message source does not naturally come to an end, so we should +// unsubscribe from it once we're done. To enable this, IObservable.Subscribe returns an +// IDisposable. We can call Dispose on that to tell the observable source that we no longer wish +// to continue receiving messages. + +OutContext ctx = new(); +using (aisMessages.Subscribe(m => ctx.WriteLine($"Message type: {m.MessageType}, vessel id: {m.Mmsi}"))) +{ + // Listen briefly. (Very briefly - it's a busy source!) + await Task.Delay(TimeSpan.FromSeconds(2)); +} + +#!markdown + +## The power of Rx: expressiveness and LINQ + +So far, we've not seen anything particularly special—this just appears to be simple callback-based event delivery. But the true power of Rx is that it offers a very expressive way to describe how to process events. To demonstrate this, let's build up an example. + +If you have run the code cells up to this point, you'll have seen in the last example that there are several different kinds of AIS message. The libraries define specialized interfaces available only on certain messages. For example, ships don't tend to change name very often so they don't broadcast their name every time they report their location. They send much less frequent messages that report fixed information such as their name and dimensions. We can use LINQ's `OfType` operator to filter the messages down just to this kind of message: + +#!csharp + +IObservable vesselNames = aisMessages.OfType(); + +#!markdown + +And now we can subscribe to that to report vessel names: + +#!csharp + +OutContext ctx = new(); +using (vesselNames.Subscribe(m => ctx.WriteLine($"Vessel: {m.VesselName}"))) +{ + await Task.Delay(TimeSpan.FromSeconds(2)); +} + +#!markdown + +Notice that we get far fewer messages. This confirms that vessels typically report their names far less often than they report their locations. + +We can write more complex expressions. What if we want to take the separate messages that report the vessel name and position and recombine them, in order to get a stream of messages that tell us both the name and location? We could use LINQ's grouping features to first group all messages by vessel ID: + +#!csharp + +IObservable> vesselsGroupedById = aisMessages.GroupBy(m => m.Mmsi); + +#!markdown + +This is an observable source of observable sources: each time the `GroupBy` operator sees a message from a vessel it hasn't seen before (based on the vessel's `Mmsi`), it creates a new `IGroupedObservable` to represent that and emits that as output of this `vesselsGroupedById` source. + +Now, within each of these groups, let's pick out the latest messages reporting vessel name and navigation data: + +#!csharp + +IObservable<(IVesselName Name, IVesselNavigation Navigation)> namesAndNavigation = vesselsGroupedById + .SelectMany(g => Observable.CombineLatest( + g.OfType(), + g.OfType(), + (name, nav) => (name, nav))); + +#!markdown + +Of course, to see this information, we need to subscribe to this new observable source: + +#!csharp + +OutContext ctx = new(); +using (namesAndNavigation.Subscribe(m => ctx.WriteLine($"Vessel: {m.Name.VesselName} is at {m.Navigation.Position}, moving at speed {m.Navigation.SpeedOverGround}"))) +{ + await Task.Delay(TimeSpan.FromSeconds(10)); +} + +#!markdown + +Most of the standard LINQ operators are available, so we could, for example use `Where` to ensure we only show vessels moving above a certain speed: + +#!csharp + +IObservable<(IVesselName Name, IVesselNavigation Navigation)> movingVessels = namesAndNavigation + .Where(m => m.Navigation.SpeedOverGround > 0.1); + +#!markdown + +Again, defining an `IObservable` just describes the information source. To receive events from that source we must subscribe: + +#!csharp + +OutContext ctx = new(); +using (movingVessels.Subscribe(m => ctx.WriteLine($"Vessel: {m.Name.VesselName} is at {m.Navigation.Position}, moving at speed {m.Navigation.SpeedOverGround}"))) +{ + // We'll give this a little longer, since a lot of vessels are stationary. + await Task.Delay(TimeSpan.FromSeconds(30)); +} + +#!markdown + +The AIS `ReceiverHost` is what Rx calls a 'hot' source, meaning it represents a live source of data. Although we had to subscribe to receive the data it supplies, our implementation remains connected to the AIS server even if there are currently no active subscribers. It has been running in the background the whole time. It will stop when you close the notebook, but if you want to disconnect right now, you can run this next code cell: + +#!csharp + +// This shuts down the AIS receiver +aisReceiverStop.Cancel(); diff --git a/tempidgcourse/JsInteractivityExperiments.dib b/tempidgcourse/JsInteractivityExperiments.dib new file mode 100644 index 0000000..50ec4f7 --- /dev/null +++ b/tempidgcourse/JsInteractivityExperiments.dib @@ -0,0 +1,71 @@ +#!meta + +{"kernelInfo":{"defaultKernelName":"csharp","items":[{"aliases":[],"languageName":"csharp","name":"csharp"}]}} + +#!csharp + +using Microsoft.DotNet.Interactive; +using Microsoft.DotNet.Interactive.Commands; +var jsKernel = Kernel.Root.FindKernelByName("javascript"); + +#!html + +Output: +
+
+ +#!javascript + +show = function(text) { + var o = document.getElementById("output"); + o.innerText += text; +} + +#!javascript + +show("test"); + +#!csharp + +Kernel.Javascript("show(from c#);") + +#!csharp + +var jsKernel = Kernel.Root.FindKernelByName("javascript"); + +#!csharp + +jsKernel + +#!csharp + +await jsKernel.SendAsync(new SubmitCode("show(\"from C#\");")); + +#!csharp + +//#r System.Reactive,6* +using System; +using System.Reactive; +using System.Reactive.Linq; + +#!csharp + +{ + using var _ = Observable + .Timer(TimeSpan.FromSeconds(0), TimeSpan.FromSeconds(1)) + .Subscribe(t => Console.WriteLine($"Tick {t}")); + await Task.Delay(TimeSpan.FromSeconds(5)); +} + +#!csharp + +TaskCompletionSource done = new(); +Observable + .Timer(TimeSpan.FromSeconds(0), TimeSpan.FromSeconds(1)) + .Take(5) + .Subscribe( + t => Console.WriteLine($"Tick {t}"), + () => done.SetResult() + ); + +await done.Task; From 7243a4fcae7b1f18fe2f9d314bf4da8d77f9599e Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Tue, 23 May 2023 08:18:17 +0100 Subject: [PATCH 002/142] Decent first draft of ch01 --- content/01_WhyRx.md | 213 ++++++++++++++++++++------------------------ 1 file changed, 95 insertions(+), 118 deletions(-) diff --git a/content/01_WhyRx.md b/content/01_WhyRx.md index a95b2d7..4c0a5c1 100644 --- a/content/01_WhyRx.md +++ b/content/01_WhyRx.md @@ -4,146 +4,123 @@ title : Why Rx? # PART 1 - Getting started +Rx is a .NET library for processing event streams. Why might you want that? + ## Why Rx? -Users expect real time data. They want their tweets now. Their order confirmed now. They need prices accurate as of now. Their online games need to be responsive. As a developer, you demand fire-and-forget messaging. You don't want to be blocked waiting for a result. You want to have the result pushed to you when it is ready. Even better, when working with result sets, you want to receive individual results as they are ready. You do not want to wait for the entire set to be processed before you see the first row. The world has moved to push; users are waiting for us to catch up. Developers have tools to push data, this is easy. Developers need tools to react to push data. - -Welcome to [Reactive Extensions for .NET](https://github.com/dotnet/reactive) (Rx). This book is aimed at any .NET developer curious about the `IObservable` and `IObserver` interfaces in .NET. The Reactive Extensions libraries from Microsoft are the implementations of these interfaces that are quickly picking up traction with Server, Client and Web developers alike. Rx is a powerfully productive development tool. Rx enables developers to solve problems in an elegant, familiar and declarative style; often crucially with less code than was possible without Rx. By leveraging LINQ, Rx gets to boast the standard benefits of a LINQ implementation1. - -
-
Integrated
-
LINQ is integrated into the C# language.
-
Unitive
-
Using LINQ allows you to leverage your existing skills for querying data at rest (LINQ to SQL, LINQ to XML or LINQ to objects) to query data in motion. You could think of Rx as LINQ to events. LINQ allows you to transition from other paradigms into a common paradigm. For example you can transition a standard .NET event, an asynchronous method call, a `Task` or perhaps a 3rd party middleware API into a single common Rx paradigm. By leveraging our existing language of choice and using familiar operators like `Select`, `Where`, `GroupBy` etc, developers can rationalize and communicate designs or code in a common form.
-
Extensible
-
You can extend Rx with your own custom query operators (extension methods).
-
Declarative
-
LINQ allows your code to read as a declaration of _what_ your code does and leaves the _how_ to the implementation of the operators.
-
Composable
-
LINQ features, such as extension methods, lambda syntax and query comprehension syntax, provide a fluent API for developers to consume. Queries can be constructed with numerous operators. Queries can then be composed together to further produce composite queries.
-
Transformative
-
Queries can transform their data from one type to another. A query might translate a single value to another value, aggregated from a sequence of values to a single average value or expand a single data value into a sequence of values.
-
+Users want timely information. If you're expecting a parcel, live reports of the delivery van's progress give you more freedom than a suspect 2 hour delivery window. Financial applications depend on continuous streams of up-to-date data. We expect our phones and computers to provide us with all sorts of important notifications. And some applications simply can't work without live information—online collaboration tools and multiplayer games absolutely depend on the rapid distribution and delivery of data. + +In short, our systems need to react when interesting things happen. + +Live information streams are a basic, ubiquitous element of computer systems. Despite this, they are often a second class citizen in programming languages. Most languages support sequences of data through something like an array, which presumes that the data is sitting in memory ready for our code to read at its leisure. If your application deals with events, arrays might work for historical data, but they aren't a good way to represent events that occur while the application is running. And although streamed data is a pretty venerable concept in computing, it tends to be clunky, with the abstractions often surfaced through APIs that are poorly integrated with our programming language's type system. + +This is bad. Live data is critical to a wide range of applications. It should be as easy to work with as lists, dictionaries, and other collections. + +The [Reactive Extensions for .NET](https://github.com/dotnet/reactive) (Rx.NET or Rx for short) elevate live data sources to first class citizens. Rx does not require any special programming language support. It exploits .NET's type system to represent streams of data in a way that .NET languages such as C#, F#, and VB.NET can all work with as naturally as they use collection types. + +(A brief grammatical aside: although the phrase "Reactive Extensions" is plural, when we reduce it to just Rx.NET or Rx, we treat it as a singular noun. This is inconsistent, but saying "Rx are..." sounds plain weird.) + +For example, C# has integrated query features that we might use to find all of the entries in a list that meet some criteria. If we have some `List trades` variable, we might write this: + +```cs +var bigTrades = + from trade in trades + where trade.Volume > 1_000_000; +``` + +With Rx, we could use this exact same code with live data. Instead of being a `List`, the `trades` variable could be an `IObservable`. (`IObservable` is the fundamental abstraction in Rx. It is essentially a live version of `IEnumerable`.) In this case, `bigTrades` would also be an `IObservable`, a live data source able to notify us of all trades whose `Volume` exceeds one million. Crucially, it will report each such trade immediately—this is what we mean by a 'live' data source. + +Rx is a powerfully productive development tool. It enables developers to work with live event streams using language features familiar to all .NET developers. It enables an elegant, declarative approach that often allows us to express complex behaviour more elegantly and with less code than would be possible without Rx. + +Rx builds on LINQ (Language Integrated Query). This enables us to use the query syntax shown above (or you can use the explicit function call approach that some .NET developers prefer). LINQ is widely used in .NET both for data access (e.g., in Entity Framework Core), but also for working with in-memory collections (with LINQ to Objects), meaning that experienced .NET developers will tend to feel at home with Rx. Crucially, LINQ is a highly composable design: you can connect operators together in any combination you like, expressing potentially complex processing in a straightforward way. + ## When is Rx appropriate? -Rx offers a natural paradigm for dealing with sequences of events. A sequence can contain zero or more events. Rx proves to be most valuable when composing sequences of events. +Rx is designed for processing sequences of events, meaning that it suits some scenarios better than others. The next sections describe some of these scenarios, and also cases in which it is a less obvious match but still worth considering. Finally, we describe some cases in which it is possible to use Rx but where alternatives are likely to be better. + + +### Good Fit with Rx -### Should use Rx +Rx is well suited to representing events that originate from outside of your code, and which your application needs to respond to, such as: -Managing events like these is what Rx was built for: +- Integration events like a broadcast from a message bus or a push event from WebSockets API or other low latency middleware like [Azure Event Grid](https://azure.microsoft.com/en-gb/products/event-grid/), [Azure Event Hubs](https://azure.microsoft.com/en-gb/products/event-hubs/) and [Azure Service Bus](https://azure.microsoft.com/en-gb/products/service-bus/) +- Reports from monitoring devices such as a flow sensor in a water utility's infrastructure, or the monitoring and diagnostic features in networking equipment +- Location data from mobile systems such as [AIS](https://github.com/ais-dotnet/) messages from ships, or automotive telemetry +- Operating system events such as filesystem activity, or WMI events +- Road traffic information, such as notifications of accidents or changes in average speed +- Integration with a [Complex Event Processing (CEP)](https://en.wikipedia.org/wiki/Complex_event_processing) engine +- UI events such as mouse movement or button clicks -- UI events like mouse move, button click -- Domain events like property changed, collection updated, "Order Filled", "Registration accepted" etc. -- Infrastructure events like from file watcher, system and WMI events -- Integration events like a broadcast from a message bus or a push event from WebSockets API or other low latency middleware like [Azure Service Bus](https://azure.microsoft.com/en-gb/products/service-bus/) -- Integration with a CEP engine like [StreamInsight](http://www.microsoft.com/sqlserver/en/us/solutions-technologies/business-intelligence/complex-event-processing.aspx) or [StreamBase](http://www.streambase.com). +Rx is also good way to model domain events—these may occur as a result of some of the events just described, but after processing them to produce events that more directly represent application concepts. These might include: -Interestingly Microsoft's CEP product StreamInsight, which is part of the SQL Server family, also uses LINQ to build queries over streaming events of data. +- Property or state changes on domain objects such as "Order Status Updated", or "Registration Accepted" +- Changes to collections of domain objects, such as "New Registration Created" -Rx is also very well suited for introducing and managing concurrency for the purpose of _offloading_. -That is, performing a given set of work concurrently to free up the current thread. -A very popular use of this is maintaining a responsive UI. +Events might also represent insights derived from incoming events and historical data such as: -You should consider using Rx if you have an existing `IEnumerable` that is attempting to model data in motion. -While `IEnumerable` _can_ model data in motion (by using lazy evaluation like `yield return`), it probably won't scale. Iterating over an `IEnumerable` will consume/block a thread. You should either favor the non-blocking nature of Rx via either `IObservable` or consider the `async` features in .NET 4.5. - -### Could use Rx +- A broadband customer might have become an unwitting participant in a DDoS attack +- [CNC](https://en.wikipedia.org/wiki/Numerical_control) [Milling Machine](https://en.wikipedia.org/wiki/Milling_(machining)) MFZH12's number 4 axis bearing is exhibiting signs of wear at a significantly higher rate than the nominal profile +- If the user wants to arrive on time at their meeting half way across town, the current traffic conditions suggest they should leave in the next 10 minutes -Rx can also be used for asynchronous calls. These are effectively sequences of one event. +These three sets of examples show how applications might progressively increase the value of the information as they process events. We start with raw events, which we then enhance to produce domain-specific events, and we then perform analysis to produce notifications that the application's users will really care about. Each stage of processing increases the value of the messages that emerge. Each stage will typically also reduce the volume of messages—if we presented the raw events in the first category directly to users, they might be overwhelmed by the volume of messages, making it impossible to spot the important events. But if we only present them with notifications when our processing has detected something important, this will enable them to work more efficiently and accurately. -* Result of a `Task` or `Task` -* Result of an APM method call like `FileStream` BeginRead/EndRead +The [`System.Reactive` library](https://www.nuget.org/packages/System.Reactive) provides tools for building exactly this kind of value-adding process, in which we tame high-volume raw event sources to produce high-value live insights. It provides a suite of operators that enable our code to express this kind of processing declaratively, as you'll see in subsequent chapters. -You may find the using TPL, Dataflow or `async` keyword proves to be a more natural way of composing asynchronous methods. While Rx can definitely help with these scenarios, if there are other more appropriate frameworks at your disposal you should consider them first. +Rx is also well suited for introducing and managing concurrency for the purpose of _offloading_. +That is, performing a given set of work concurrently, so that the thread that detected an event doesn't also have to be the thread that handles that event. +A very popular use of this is maintaining a responsive UI. (UI event handling has become _such_ a popular use of Rx—both in .NET. but also in [RxJS](https://rxjs.dev/), which originated as an offshoot of Rx.NET—that it would be easy to think that this is what it's for. But its success there should not blind us to its wider applicability.) -Rx can be used, but is less suited for, introducing and managing concurrency for the purposes of _scaling_ or performing _parallel_ computations. Other dedicated frameworks like TPL (Task Parallel Library) or [C++ AMP](https://learn.microsoft.com/en-us/cpp/parallel/amp/cpp-amp-cpp-accelerated-massive-parallelism) are more appropriate for performing parallel compute intensive work. +You should consider using Rx if you have an existing `IEnumerable` that is attempting to model live events. +While `IEnumerable` _can_ model data in motion (by using lazy evaluation like `yield return`), there's a problem. If the code consuming the collection has reached the point where it wants the next item (e.g., because a `foreach` loop has just completed an iteration) but no item is yet available, the `IEnumerable` implementation would have no choice but to block the calling thread in its `MoveNext` until such time as data is available, which can cause scalability problems in some applications. Even in cases where thread blocking is acceptable (or if you use the newer `IAsyncEnumerable`, which can take advantage of C#'s `await foreach` feature to avoid blocking a thread in these cases) `IEnumerable` and `IAsyncEnumerable` are misleading types for representing live information sources. These interfaces represent a 'pull' programming model: code asks for the next item in the sequence. Rx is a more natural choice for modelling information sources that naturally produce information on their own schedule. -See more on TPL, [TPL Dataflow](https://learn.microsoft.com/en-us/dotnet/standard/parallel-programming/dataflow-task-parallel-library), [PLINQ](https://learn.microsoft.com/en-us/dotnet/standard/parallel-programming/introduction-to-plinq) `async` and [C++ AMP](https://learn.microsoft.com/en-us/cpp/parallel/amp/cpp-amp-cpp-accelerated-massive-parallelism). -### Won't use Rx +### Possible Fit with Rx -Rx and specifically `IObservable` is not a replacement for `IEnumerable`. -I would not recommend trying to take something that is naturally pull based and force it to be push based. +Rx can be used to represent asynchronous operations. .NET's `Task` or `Task` effectively represent a single event, and `IObservable` can be thought if as a generalization of this to a sequence of events. (The relationship between, say, `Task` and `IObservable` is similar to the relationship between `int` and `IEnumerable`.) -* Translating existing `IEnumerable` values to `IObservable` just so that the code base can be "more Rx" -* Message queues. - Queues like in MSMQ or a JMS implementation generally have transactionality and are by definition sequential. - I feel `IEnumerable` is a natural fit for here. +This means that there are some scenarios that can be dealt with either using tasks and the `async` keyword or through Rx. If at any point in your processing you need to deal with multiple values as well as single ones, Rx can do both; tasks don't handle multiple items so well. You can have a `Task>`, which enables you to `await` for a collection, and that's fine if all the items in the collection can be collected in a single step. The limitation with this is that once the task has produced its `IEnumerable` result, your `await` has completed, and you're back to non-asynchronous iteration over that `IEnumerable`. If the data can't be fetched in a single step—perhaps the `IEnumerable` represents data from an API in which results are fetched in batches of 100 items at a time—its `MoveNext` will have to block your thread every time it needs to wait. + +For the first 5 years of its existence, Rx was arguably the best way to represent collections that wouldn't necessarily have all the items available immediately. However, the introduction of [`IAsyncEnumerable`](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.iasyncenumerable-1) in .NET Core 3.0 and C# 8 provided a way to handle sequences while remaining in the world of `async`/`await` (and the [`Microsoft.Bcl.AsyncInterfaces` NuGet package](https://www.nuget.org/packages/Microsoft.Bcl.AsyncInterfaces/) makes this available on .NET Framework and .NET Standard 2.0). So the choice to use Rx to now tends to boil down to whether a 'pull' model (exemplified by `foreach` or `await foreach`) or a 'push' model (in which code supplies callbacks to be invoked by the event source when items become available) is a better fit for the concepts being modelled. + +Earlier, I mentioned _offloading_: using Rx to push work onto other threads. Although this technique can enable Rx to introduce and manage concurrency for the purposes of _scaling_ or performing _parallel_ computations, other dedicated frameworks like [TPL (Task Parallel Library) Dataflow](https://learn.microsoft.com/en-us/dotnet/standard/parallel-programming/dataflow-task-parallel-library) or [PLINQ](https://learn.microsoft.com/en-us/dotnet/standard/parallel-programming/introduction-to-plinq) are more appropriate for performing parallel compute intensive work. However, TPL Dataflow offers some integration with Rx through its [`AsObserver`](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.dataflow.dataflowblock.asobserver) and [`AsObservable`](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.dataflow.dataflowblock.asobservable) extension methods. So it is common to use Rx to integrate TPL Dataflow with the rest of your application. + + +### Poor Fit with Rx + +Rx's `IObservable` is not a replacement for `IEnumerable` or `IAsyncEnumerable`. It would be a mistake to take something that is naturally pull based and force it to be push based. + +Also, there are some situations in which the simplicity of Rx's programming model can work against you. For example, although some message queuing technologies such as MSMQ are by definition sequential, and thus might look like a good fit for Rx, these are often chosen for their transaction handling support. Rx does not have any direct way to surface transaction semantics, so in scenarios that require this you might be better off just working directly with the relevant technology's API. + +By choosing the best tool for the job your code should be easier to maintain, it will likely provide better performance and you will probably get better support. -By choosing the best tool for the job your code should be easier to maintain, provide better performance and you will probably get better support. ## Rx in action -Adopting and learning Rx can be an iterative approach where you can slowly apply it to your infrastructure and domain. -In a short time you should be able to have the skills to produce code, or reduce existing code, to queries composed of simple operators. -For example this simple ViewModel is all I needed to code to integrate a search that is to be executed as a user types. - -```csharp -public class MemberSearchViewModel : INotifyPropertyChanged -{ - //Fields removed... - public MemberSearchViewModel(IMemberSearchModel memberSearchModel, - ISchedulerProvider schedulerProvider) - { - _memberSearchModel = memberSearchModel; - - //Run search when SearchText property changes - this.PropertyChanges(vm => vm.SearchText) - .Subscribe(Search); - } - - //Assume INotifyPropertyChanged implementations of properties... - public string SearchText { get; set; } - public bool IsSearching { get; set; } - public string Error { get; set; } - public ObservableCollection Results { get; } - - //Search on background thread and return result on dispatcher. - private void Search(string searchText) - { - using (_currentSearch) { } - IsSearching = true; - Results.Clear(); - Error = null; - - _currentSearch = _memberSearchModel.SearchMembers(searchText) - .Timeout(TimeSpan.FromSeconds(2)) - .SubscribeOn(_schedulerProvider.TaskPool) - .ObserveOn(_schedulerProvider.Dispatcher) - .Subscribe( - Results.Add, - ex => - { - IsSearching = false; - Error = ex.Message; - }, - () => { IsSearching = false; }); - } - - ... -} +You can get up and running with a simple Rx example very quickly. If you have the .NET SDK installed. Run the following at a command line: + +```ps1 +mkdir TryRx +cd TryRx +dotnet new console +dotnet add package System.Reactive +``` + +Alternatively, if you have Visual Studio installed, create a new .NET Console project, and then use the NuGet package manager to add a reference to `System.Reactive`. + +This code creates an observable source (`ticks`) that produces an event once every second. The code also passes a handler to that source that writes a message to the console for each event: + +```cs +using System.Reactive.Linq; + +IObservable ticks = Observable.Timer( + dueTime: TimeSpan.Zero, + period: TimeSpan.FromSeconds(1)); + +ticks.Subscribe( + tick => Console.WriteLine($"Tick {tick}")); + +Console.ReadLine(); ``` -While this code snippet is fairly small it supports the following requirements: - -- Maintains a responsive UI -- Supports timeouts -- Knows when the search is complete -- Allows results to come back one at a time -- Handles errors -- Is unit testable, even with the concurrency concerns -- If a user changes the search, cancel current search and execute new search with new text. - -To produce this sample is almost a case of composing the operators that match the requirements into a single query. The query is small, maintainable, declarative and far less code than "rolling your own". There is the added benefit of reusing a well tested API. The less code _you_ have to write, the less code _you_ have to test, debug and maintain. - -Creating other queries like the following is simple: - -- calculating a moving average of a series of values e.g. *service level agreements* for average latencies or downtime -- combining event data from multiple sources e.g.: *search results* from Bing, Google and Yahoo, or *sensor data* from Accelerometer, Gyro, Magnetometer or temperatures -- grouping data e.g. *tweets* by topic or user, or *stock prices* by delta or liquidity* -- filtering data e.g. *online game servers* within a region, for a specific game or with a minimum number of participants. - -Push is here. Arming yourself with Rx is a powerful way to meet users' expectations of a push world. By understanding and composing the constituent parts of Rx you will be able to make short work of complexities of processing incoming events. - -Rx is set to become a day-to-day part of your coding experience. \ No newline at end of file +If this doesn't seem very exciting, it's because it's about as basic an example as it's possible to create, and at its heart, Rx has a very simple programming model. The power comes from composition—we can use the building blocks in the `System.Reactive` library to describe the processing that will takes us from raw, low-level events to high-value insights. But to do that, we must first understand [Rx's key types, `IObservable` and `IObserver`](01_WhyRx.md). \ No newline at end of file From ef67a52c619672c5a6ef7a4c1379eee87cdf8c22 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Tue, 23 May 2023 12:48:11 +0100 Subject: [PATCH 003/142] WIP on ch02 --- content/02_KeyTypes.md | 100 +++++++++++++++++++++++++++++++++++------ 1 file changed, 86 insertions(+), 14 deletions(-) diff --git a/content/02_KeyTypes.md b/content/02_KeyTypes.md index 6e48fe4..021c44f 100644 --- a/content/02_KeyTypes.md +++ b/content/02_KeyTypes.md @@ -4,25 +4,76 @@ title : Key Types # Key types -To use a framework you need to have a familiarty with the key features and their benefits. Without this you find yourself just pasting samples from forums and hacking code until it works, kind of. Then the next poor developer to maintain the code base ha to try to figure out what the intention of your code base was. Fate is only too kind when that maintenence developer is the same as the original developer. Rx is powerful, but also allows for a simplification of your code. To write good Reactive code you have to know the basics. +Rx is a powerful framework that can greatly simplify code that response to events. But to write good Reactive code you have to understand the basic concepts. -There are two key types to understand when working with Rx, and a subset of auxiliary types that will help you to learn Rx more effectively. The `IObserver` and `IObservable` form the fundamental building blocks for Rx, while implementations of `ISubject` reduce the learning curve for developers new to Rx. +The fundamental building block of Rx is an interface called `IObservable`. Understanding this, and its counterpart `IObserver`, is the key to success with Rx. This chapter will also describe a family of types called _subjects_, which implement both `IObserver` and `IObservable`. Although subjects are not quite as important as the two fundamental types, they can be very helpful when using Rx, and can sometimes provide an easy way in for developers new to Rx. -Many are familiar with LINQ and its many popular forms like LINQ to Objects, LINQ to SQL & LINQ to XML. Each of these common implementations allows you query _data at rest_; Rx offers the ability to query _data in motion_. Essentially Rx is built upon the foundations of the [Observer](http://en.wikipedia.org/wiki/Observer_pattern) pattern. .NET already exposes some other ways to implement the Observer pattern such as multicast delegates or events (which are usually multicast delegates). Multicast delegates are not ideal however as they exhibit the following less desirable features; +Most .NET developers will be familiar with [LINQ](https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/basic-linq-query-operations) in at least one of its many popular forms such as [LINQ to Objects](https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/linq-to-objects), or [Entity Framework Core queries](https://learn.microsoft.com/en-us/ef/core/querying/). Most LINQ implementations allow you to query _data at rest_—LINQ to objects works on arrays or other collections; LINQ queries in Entity Framework Core run against data in a database. But Rx is different: it offers the ability to define queries over live event streams—what you might call _data in motion_. + +The preceding chapter had this example: + +```cs +var bigTrades = + from trade in trades + where trade.Volume > 1_000_000; +``` + +If you don't like the query expression syntax, you can write exactly equivalent code by invoking LINQ operators directly: + +```cs +var bigTrades = trades + .Where(trade => trade.Volume > 1_000_000); +``` + +Whichever style we use, this is the LINQ way of saying that we want `bigTrades` to have just those items in `trades` where the `Volume` property is greater than one million. + +We can't tell exactly what these examples do because we can't see the type of the `trades` or `bigTrades` variables. The meaning of this code is going to vary greatly depending on these types. If we were using LINQ to objects, these would both likely be `IEnumerable`. That would mean that these were both objects representing collections whose contents we could enumerate with a `foreach` loop. This would represent _data at rest_, data that our code could inspect directly. + +But let's make it clear what the code means by being explicit about the type: + +```cs +IObservable bigTrades = trades + .Where(trade => trade.Volume > 1_000_000); +``` + +This removes all ambiguity. It is now clear that we're not dealing with data at rest. We're working with an `IObservable`. But what exactly is that? -- In C#, events have a curious interface. Some find the `+=` and ` -=` operators an unnatural way to register a callback -- Events are difficult to compose -- Events don't offer the ability to be easily queried over time -- Events are a common cause of accidental memory leaks -- Events do not have a standard pattern for signaling completion -- Events provide almost no help for concurrency or multithreaded applications. e.g. To raise an event on a separate thread requires you to do all of the plumbing - -Rx looks to solve these problems. Here I will introduce you to the building blocks and some basic types that make up Rx. ## IObservable -[`IObservable`](http://msdn.microsoft.com/en-us/library/dd990377.aspx "IObservable(Of T) interface - MSDN") is one of the two new core interfaces for working with Rx. It is a simple interface with just a [Subscribe](http://msdn.microsoft.com/en-us/library/dd782981(v=VS.100).aspx) method. Microsoft is so confident that this interface will be of use to you it has been included in the BCL as of version 4.0 of .NET. You should be able to think of anything that implements `IObservable` as a streaming sequence of `T` objects. -So if a method returned an `IObservable` I could think of it as a stream of Prices. +The [`IObservable` interface](https://learn.microsoft.com/en-us/dotnet/api/system.iobservable-1 "IObservable interface - Microsoft Learn") represents Rx's fundamental abstraction: a sequence of values of some type `T`. In a very abstract sense, this means it represents the same thing as `IEnumerable`. The difference is in how code consumes those values. Whereas `IEnumerable` enables code to retrieve values (typically with a `foreach` loop), an `IObservable` provides values when they become available. This distinction is sometimes characterised as _push_ vs _pull_. We can _pull_ values out of an `IEnumerable` by executing a `foreach` loop, but and `IObservable` will _push_ values into our code. + +How will an `IObservable` push its values into our code? If we want these values, our code must _subscribe_ to the `IObservable`, which means providing it with some methods it can invoke. + +In fact, subscription is the only operation an `IObservable` directly supports. Here's the entire definition of the interface: + +```cs +public interface IObservable +{ + IDisposable Subscribe(IObserver observer); +} +``` + +You can see [the source for `IObservable` on GitHub](https://github.com/dotnet/runtime/blob/b4008aefaf8e3b262fbb764070ea1dd1abe7d97c/src/libraries/System.Private.CoreLib/src/System/IObservable.cs). Notice that it is part of the .NET runtime libraries, and not the `System.Reactive` NuGet package. `IObservable` is of such fundamental importance that it is baked into .NET. (So you might be wondering what the `System.Reactive` NuGet package is for. The .NET runtime libraries define only the `IObservable` and `IObserver` interfaces, and not the LINQ implementation. The Rx NuGet package gives us LINQ support, and also deals with threading.) + +Observant readers will have noticed that the example in the preceding chapter looks like it shouldn't work. Having created an `IObservable` that produced events once per second, it subscribed to it with this code: + +```cs +ticks.Subscribe( + tick => Console.WriteLine($"Tick {tick}")); +``` + +That's passing a delegate, but we can see that `IObservable.Subscribe` requires something called an `IObserver`. We'll get to `IObserver` shortly, but all that's happening here is that this example is using an extension method from the Rx NuGet package: + +```cs +// From the System.Reactive library's ObservableExtensions class +public static IDisposable Subscribe(this IObservable source, Action onNext) +``` + +This is a convenient helper method that wraps a delegate in an implementation of `IObserver` and then passes that to `IObservable.Subscribe`. The effect is that we can write just a simple method (instead of a complete implementation of `IObserver`) and the observable source will invoke our callback each time it wants to supply a value. + +Because + ```csharp //Defines a provider for push-based notification. @@ -399,4 +450,25 @@ public static ISubject>TSource, TResult< Create>TSource, TResult<( Subjects provide a convenient way to poke around Rx, however they are not recommended for day to day use. An explanation is in the [Usage Guidelines](18_UsageGuidelines.md) in the appendix. Instead of using subjects, favor the factory methods we will look at in [Part 2](04_CreatingObservableSequences.md). -The fundamental types `IObserver` and `IObservable` and the auxiliary subject types create a base from which to build your Rx knowledge. It is important to understand these simple types and their implicit contracts. In production code you may find that you rarely use the `IObserver` interface and subject types, but understanding them and how they fit into the Rx eco-system is still important. The `IObservable` interface is the dominant type that you will be exposed to for representing a sequence of data in motion, and therefore will comprise the core concern for most of your work with Rx and most of this book. \ No newline at end of file +The fundamental types `IObserver` and `IObservable` and the auxiliary subject types create a base from which to build your Rx knowledge. It is important to understand these simple types and their implicit contracts. In production code you may find that you rarely use the `IObserver` interface and subject types, but understanding them and how they fit into the Rx eco-system is still important. The `IObservable` interface is the dominant type that you will be exposed to for representing a sequence of data in motion, and therefore will comprise the core concern for most of your work with Rx and most of this book. + + + +# Spare parts + +## Comparison with events + +This was originally the opening text. I don't think it belongs there, but we probably do want to talk about it in the context of why we need `IObservable` at all. + +
+ +Essentially Rx is built upon the foundations of the [Observer](http://en.wikipedia.org/wiki/Observer_pattern) pattern. .NET already exposes some other ways to implement the Observer pattern such as multicast delegates or events (which are usually multicast delegates). Multicast delegates are not ideal however as they exhibit the following less desirable features; + +- In C#, events have a curious interface. Some find the `+=` and ` -=` operators an unnatural way to register a callback +- Events are difficult to compose +- Events don't offer the ability to be easily queried over time +- Events are a common cause of accidental memory leaks +- Events do not have a standard pattern for signaling completion +- Events provide almost no help for concurrency or multithreaded applications. e.g. To raise an event on a separate thread requires you to do all of the plumbing + +Rx looks to solve these problems. Here I will introduce you to the building blocks and some basic types that make up Rx. From 026b062a21728c5bbf34a50f8a05e01d8950a2f4 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Thu, 25 May 2023 10:41:53 +0100 Subject: [PATCH 004/142] More progress on Ch02 --- content/02_KeyTypes.md | 375 +++- content/A_IoStreams.md | 49 + ...h02-Quiescent-Marbles-Input-And-Output.svg | 83 + .../Ch02-Quiescent-Marbles-On-Offs.svg | 260 +++ ...02-Quiescent-Marbles-Outstanding-Value.svg | 96 + .../Ch02-Quiescent-Marbles-Outstanding.svg | 131 ++ .../GraphicsIntro/Ch02-Quiescent-Marbles.ai | 1734 +++++++++++++++++ .../GraphicsIntro/Ch02-Quiescent-Marbles.svg | 99 + content/GraphicsIntro/Input-And-Output.svg | 99 + content/GraphicsIntro/Outstanding.svg | 129 ++ 10 files changed, 3022 insertions(+), 33 deletions(-) create mode 100644 content/A_IoStreams.md create mode 100644 content/GraphicsIntro/Ch02-Quiescent-Marbles-Input-And-Output.svg create mode 100644 content/GraphicsIntro/Ch02-Quiescent-Marbles-On-Offs.svg create mode 100644 content/GraphicsIntro/Ch02-Quiescent-Marbles-Outstanding-Value.svg create mode 100644 content/GraphicsIntro/Ch02-Quiescent-Marbles-Outstanding.svg create mode 100644 content/GraphicsIntro/Ch02-Quiescent-Marbles.ai create mode 100644 content/GraphicsIntro/Ch02-Quiescent-Marbles.svg create mode 100644 content/GraphicsIntro/Input-And-Output.svg create mode 100644 content/GraphicsIntro/Outstanding.svg diff --git a/content/02_KeyTypes.md b/content/02_KeyTypes.md index 021c44f..4a217f7 100644 --- a/content/02_KeyTypes.md +++ b/content/02_KeyTypes.md @@ -21,19 +21,17 @@ var bigTrades = If you don't like the query expression syntax, you can write exactly equivalent code by invoking LINQ operators directly: ```cs -var bigTrades = trades - .Where(trade => trade.Volume > 1_000_000); +var bigTrades = trades.Where(trade => trade.Volume > 1_000_000); ``` Whichever style we use, this is the LINQ way of saying that we want `bigTrades` to have just those items in `trades` where the `Volume` property is greater than one million. -We can't tell exactly what these examples do because we can't see the type of the `trades` or `bigTrades` variables. The meaning of this code is going to vary greatly depending on these types. If we were using LINQ to objects, these would both likely be `IEnumerable`. That would mean that these were both objects representing collections whose contents we could enumerate with a `foreach` loop. This would represent _data at rest_, data that our code could inspect directly. +We can't tell exactly what these examples do because we can't see the type of the `trades` or `bigTrades` variables. The meaning of this code is going to vary greatly depending on these types. If we were using LINQ to objects, these would both likely be `IEnumerable`. That would mean that these variables both referred to objects representing collections whose contents we could enumerate with a `foreach` loop. This would represent _data at rest_, data that our code could inspect directly. But let's make it clear what the code means by being explicit about the type: ```cs -IObservable bigTrades = trades - .Where(trade => trade.Volume > 1_000_000); +IObservable bigTrades = trades.Where(trade => trade.Volume > 1_000_000); ``` This removes all ambiguity. It is now clear that we're not dealing with data at rest. We're working with an `IObservable`. But what exactly is that? @@ -43,7 +41,7 @@ This removes all ambiguity. It is now clear that we're not dealing with data at The [`IObservable` interface](https://learn.microsoft.com/en-us/dotnet/api/system.iobservable-1 "IObservable interface - Microsoft Learn") represents Rx's fundamental abstraction: a sequence of values of some type `T`. In a very abstract sense, this means it represents the same thing as `IEnumerable`. The difference is in how code consumes those values. Whereas `IEnumerable` enables code to retrieve values (typically with a `foreach` loop), an `IObservable` provides values when they become available. This distinction is sometimes characterised as _push_ vs _pull_. We can _pull_ values out of an `IEnumerable` by executing a `foreach` loop, but and `IObservable` will _push_ values into our code. -How will an `IObservable` push its values into our code? If we want these values, our code must _subscribe_ to the `IObservable`, which means providing it with some methods it can invoke. +How can an `IObservable` push its values into our code? If we want these values, our code must _subscribe_ to the `IObservable`, which means providing it with some methods it can invoke. In fact, subscription is the only operation an `IObservable` directly supports. Here's the entire definition of the interface: @@ -56,7 +54,7 @@ public interface IObservable You can see [the source for `IObservable` on GitHub](https://github.com/dotnet/runtime/blob/b4008aefaf8e3b262fbb764070ea1dd1abe7d97c/src/libraries/System.Private.CoreLib/src/System/IObservable.cs). Notice that it is part of the .NET runtime libraries, and not the `System.Reactive` NuGet package. `IObservable` is of such fundamental importance that it is baked into .NET. (So you might be wondering what the `System.Reactive` NuGet package is for. The .NET runtime libraries define only the `IObservable` and `IObserver` interfaces, and not the LINQ implementation. The Rx NuGet package gives us LINQ support, and also deals with threading.) -Observant readers will have noticed that the example in the preceding chapter looks like it shouldn't work. Having created an `IObservable` that produced events once per second, it subscribed to it with this code: +Observant readers will have noticed that an example in the preceding chapter looks like it shouldn't work. Having created an `IObservable` that produced events once per second, it subscribed to it with this code: ```cs ticks.Subscribe( @@ -70,55 +68,364 @@ That's passing a delegate, but we can see that `IObservable.Subscribe` requir public static IDisposable Subscribe(this IObservable source, Action onNext) ``` -This is a convenient helper method that wraps a delegate in an implementation of `IObserver` and then passes that to `IObservable.Subscribe`. The effect is that we can write just a simple method (instead of a complete implementation of `IObserver`) and the observable source will invoke our callback each time it wants to supply a value. +This is a helper method that wraps a delegate in an implementation of `IObserver` and then passes that to `IObservable.Subscribe`. The effect is that we can write just a simple method (instead of a complete implementation of `IObserver`) and the observable source will invoke our callback each time it wants to supply a value. -Because +Since `IObservable` defines just one method, `Subscribe`, you might be wondering how we can do anything interesting with it. The power comes from the LINQ operators that the `System.Reactive` NuGet library supplies. +### LINQ Operators and Composition -```csharp -//Defines a provider for push-based notification. -public interface IObservable +So far I've shown only a very simple LINQ example, using the `Where` operator to filter events down to ones that meet certain criteria. To give you a flavour of how we can build more advanced functionality through composition, I'm going to introduce an example scenario. + +Suppose you want to write a program that watches some folder on a filesystem, and performs automatic processing any time something in that folder changes. For example, web developers often to trigger automatic rebuilds of their client side code when they save changes in the editor so they can quickly see the effect of their changes. Often in these cases, filesystem changes often come in bursts—text editors might perform a few distinct operations when saving a file. (Some save modifications to a new file, then perform a couple of renames once this is complete, because this avoids data loss if a power failure or system crash happens to occur at the moment you save the file.) So you typically won't want to take action as soon as you detect file activity. It would be better to give it a moment to see if any more activity occurs, and take action only after everything has settled down. + +So what we really want to report is those moments when everything goes quiet after a flurry of activity. The following code defines an Rx operator that detects and reports such things. If you're new to Rx (which seems likely if you're reading this) it probably won't be instantly obvious how this works, so I'll walk through it. + +```cs +static class RxExt { - //Notifies the provider that an observer is to receive notifications. - IDisposable Subscribe(IObserver observer); + public static IObservable> Quiescent( + this IObservable src, + TimeSpan minimumInactivityPeriod, + IScheduler scheduler) + { + IObservable onoffs = + from _ in src + from delta in Observable.Return(1, scheduler).Concat(Observable.Return(-1, scheduler).Delay(minimumInactivityPeriod, scheduler)) + select delta; + IObservable outstanding = onoffs.Scan(0, (total, delta) => total + delta); + IObservable zeroCrossings = outstanding.Where(total => total == 0); + return src.Buffer(zeroCrossings); + } } ``` -> .NET already has the concept of Streams with the type and sub types of `System.IO.Stream`. -The `System.IO.Stream` implementations are commonly used to stream data (generally bytes) to or from an I/O device like a file, network or block of memory. -> `System.IO.Stream` implementations can have both the ability to read and write, and sometimes the ability to seek (i.e. fast forward through a stream or move backwards). -> When I refer to an instance of `IObservable` as a stream, it does not exhibit the seek or write functionality that streams do. -This is a fundamental difference preventing Rx being built on top of the `System.IO.Stream` paradigm. -Rx does however have the concept of forward streaming (push), disposing (closing) and completing (eof). -Rx also extends the metaphor by introducing concurrency constructs, and query operations like transformation, merging, aggregating and expanding. -> These features are also not an appropriate fit for the existing `System.IO.Stream` types. Some others refer to instances of `IObservable` as Observable Collections, which I find hard to understand. While the observable part makes sense to me, I do not find them like collections at all. You generally cannot sort, insert or remove items from an `IObservable` instance like I would expect you can with a collection. Collections generally have some sort of backing store like an internal array. The values from an `IObservable` source are not usually pre-materialized as you would expect from a normal collection. There is also a type in WPF/Silverlight called an `ObservableCollection` that does exhibit collection-like behavior, and is very well suited to this description. -> In fact `IObservable` integrates very well with `ObservableCollection` instances. -So to save on any confusion we will refer to instances of `IObservable` as *sequences*. -While instances of `IEnumerable` are also sequences, we will adopt the convention that they are sequences of _data at rest_, and `IObservable` instances are sequences of _data in motion_. +The first thing to say about this is that we are effectively defining a custom LINQ-style operator: this is an extension method which, like all of the LINQ operators Rx supplies, takes an `IObservable` as its implicit argument, and produces another observable source as its result. The return type is slightly different: it's `IObservable>`. That's because once we return to a state of inactivity, we will want to process everything that just happened, so this operator will produce a list containing every value that the source reported in its most recent flurry of activity. + +When we want to show how an Rx operator behaves, we typically draw a 'marble' diagram. This is a diagram showing one or more `IObservable` event sources, with each one being illustrated by a horizontal line. Each event that a source produces is illustrated by a circle (or 'marble') on that line, with the horizontal position representing timing. Typically, the line has a vertical bar on its left indicating the instant at which the source comes into existence, unless it happens to produce events from the very instant it is created, in which case it will start with a marble. If the line has an arrowhead on the right, that indicates that the observable's lifetime extends beyond the diagram. Here's a diagram showing how the `Quiescent` operator above response to a particular input: + +![An Rx marble diagram illustrating two observables. The first is labelled 'source', and it shows six events, labelled numerically. These fall into three groups: events 1 and 2 occur close together, and are followed by a gap. Then events 3, 4, and 5 are close together. And then after another gap event 6 occurs, not close to any. The second observable is labelled 'source.Quiescent(TimeSpan.FromSeconds(2), Scheduler.Default). It shows three events. The first is labelled '[1, 2], and its horizontal position shows that it occurs a little bit after the '2' event on the 'source' observable. The second event on the second observable is labelled '[3,4,5]' and occurs a bit after the '5' event on the 'source' observable. The third event from on the second observable is labelled '[6]', and occurs a bit after the '6' event on the 'source' observable. The image conveys the idea that each time the source produces some events and then stops, the second observable will produce an event shortly after the source stops, which will contain a list with all of the events from the source's most recent burst of activity.](GraphicsIntro/Ch02-Quiescent-Marbles-Input-And-Output.svg) + +This shows that the source produced a couple of events (the values `1` and `2`, in this example), and then stopped for a bit. A little while after it stopped, the observable returned by the `Quiescent` operator produced a single event with a list containing both of those events (`[1,2]`). Then the source started up again, producing the values `3`, `4`, and `5` in quick succession, and then going quiet for a bit. Again, once the quiet spell had gone on for long enough, the source returned by `Quiescent` produced a single event containing all of the source events from this second burst of activity (`[3,4,5]`). And then the final bit of source activity shown in this diagram consists of a single event, `6`, followed by more inactivity, and again, once the inactivity has gone on for long enough the `Quiescent` source produces a single event to report this. And since that last 'burst' of activity from the source contained only a single event, the list reported by this final output from the `Quiescent` observable is a list with a single value: `[6]`. + +So how does the code shown achieve this? The first thing to notice about the `Quiescent` method is that it's just using other Rx LINQ operators (the `Return`, `Scan`, `Where`, and `Buffer` operators are explicitly visible, and the query expression will be using the `SelectMany` operator, because that's what C# query expressions do when they contain to `from` clauses in a row) in a combination that produces the final `IObservable>` output. + +This is Rx's _compositional_ approach, and it is how we normally use Rx. We use a mixture of operators, combined (_composed_) in a way that produces the effect we want. + +But how is this producing the effect we want? There are a few ways we could get the behaviour that we're looking for from a `Quiescent` operator, but the basic idea of this particular implementation is that it keeps count of how many events have happened recently, and then produces a result every time that number drops back to zero. The `oustanding` variable refers to the `IObservable` that tracks the number of recent events, and this marble diagram shows what it produces in response to the same `source` events as were shown on the preceding diagram: + +![](GraphicsIntro/Ch02-Quiescent-Marbles-Outstanding.svg) + +I've colour coded the events this time so that I can show the relationship between `source` events and corresponding events produced by `outstanding`. Each time `source` produces an event, `oustanding` produces an event at the same time, in which the value is one higher than the preceding value produced by `outstanding`. But each such `source` event also causes `outstanding` to produce a second event two seconds later. (It's two seconds because in these examples, I've presumed that the first argument to `Quiescent` is `TimeSpan.FromSeconds(2)`, as shown on the first marble diagram.) That second event always produces a value that is one lower than whatever the preceding value was. + +This means that each event to emerge from `outstanding` tells us how many events `source` produced within the last two seconds. This diagram shows that same information in a slightly different form—it shows the most recent value produced by `outstanding` as a graph. You can see the value goes up by one each time `source` produces a new value. And two seconds after each value produced by `source`, it drops back down by one. + +![](GraphicsIntro/Ch02-Quiescent-Marbles-Outstanding-Value.svg) + +In simple cases like the final event `6`, in which it's the only event that happens at around that time, the `outstanding` value goes up by one when the event happens, and drops down again two seconds later. Over on the left of the picture it's a little more complex: we get two events in fairly quick succession, so the `outstanding` value goes up to one and then up to two, before falling back down to one and then down to zero again. The middle section looks a little more messy—the count goes up by one when the `source` produces event `3`, and then up to two when event `4` comes in. It then drops down to one again once two seconds have passed since the `3` event, but then another event, `5`, comes in taking the total back up to two. Shortly after that it drops back to one again because it has now been two seconds since the `4` event happened. And then a bit later, two seconds after the `5` event it drops back to zero again. + +That middle section is the messiest, but it's also most representative of the kind of activity this operator is designed to deal with. Remember, the whole point here is that we're expecting to see flurries of activity, and if those represents filesystem activity, they will tend to be slightly chaotic in nature, because storage devices don't always have entirely predictable performance characteristics (especially if it's a magnetic storage device with moving parts, or remote storage in which variable networking delays might come into play). + +With this measure of recent activity in hand, we can spot the end of bursts of activity by watching for when `oustanding` drops back to zero, which is what the observable referred to by `zeroCrossing` in the code above does. (That's just using the `Where` operator to filter out everything except the events where `outstanding`'s currently value returns to zero.) + +But how does `outstanding` itself work? The basic approach here is that every time `source` produces a value, we actually create a brand new `IObservable`, which produces exactly two values. It immediately produces the value 1, and then after the specified timespan (2 seconds in these examples) it produces the value -1. That's what's going in in this clause of the query expression: + +```cs +from delta in Observable.Return(1, scheduler).Concat(Observable.Return(-1, scheduler).Delay(minimumInactivityPeriod, scheduler)) +``` + +I said Rx is all about composition, and that's certainly the case here. We are using the very simple `Return` operator to create an `IObservable` that immediately produces just a single value and then terminates. This code calls that twice, once to produce the value `1` and again to produce the value `-1`. It uses the `Delay` operator so that with instead of getting that `-1` value immediately, we get an observable that waits for the specified time period (2 seconds in these examples, but whatever `minimumInactivityPeriod` is in general) before producing the value. And then we use `Concat` to stitch those two together into a single `IObservable` that produces the value `1`, and then two seconds later produces the value `-1`. + +Although this produces a brand new `IObservable` for each `source` event, the `from` clause shown above is part of a query expression of the form `from ... from .. select`, which the C# compiler turns into a call to `SelectMany`, which has the effect of flattening those all back into a single observable, which is what the `onoffs` variable refers to. This marble diagram illustrates that: + +![](GraphicsIntro/Ch02-Quiescent-Marbles-On-Offs.svg) + +This also shows the `outstanding` observable again, but we can now see where that comes from: it is just the running total of the values emitted by the `onoffs` observable. This running total observable is created with this code: + +```cs +IObservable outstanding = onoffs.Scan(0, (total, delta) => total + delta); +``` + +Rx's `Scan` operator works much like the standard LINQ [`Aggregate`](https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/aggregation-operations) operator, in that it repeatedly applies an operation (adding, in this case) to every single item in a sequence. The different is that whereas `Aggregate` produces just the final result once it reaches the end of the sequence, `Scan` shows all of its working, producing the aggregated value so far after each input. So this means that `outstanding` will produce an event every time `onoffs` produces one, and that event's value will be the running total—the sum total of every value from `onoffs` so far. + +So that's how `outstanding` comes to tell us how many events `source` produced within the last two seconds (or whatever `minimumActivityPeriod` has been specified). + +The final piece of the puzzle is how we go from the `zeroCrossings` (which produces an event every time the source has gone quiescent) to the output `IObservable>`, which provides all of the events that happened in the most recent burst of activity. Here we're just using Rx's `Buffer` operator, which is designed for exactly this scenario: it slices its input into chunks, producing an event for each chunk, the value of which is an `IList` containing the items for the chunk. `Buffer` can slice things up a few ways, but in this case we're using the form that starts a new slice each time some `IObservable` produces an item. Specifically, we're telling `Buffer` to slice up the `source` by creating a new chunk every time `zeroCrossings` produces a new event. + +(One last detail, just in case you saw it and were wondering, is that this method requires an `IScheduler`. This is an Rx abstraction for dealing with timing and concurrency. We need it because we need to be able to generate events after a one second delay, and that sort of time-driven activity requires a scheduler.) + +We'll get into all of these operators, and the workings of schedulers in more detail in later chapters. For now, the key point is that we typically use Rx by using a combination of LINQ operators that process and combine `IObservable` sources to define the logic that we require. + +Notice that nothing in that example actually called the one and only method that `IObservable` defines (`Subscribe`). There will always be something somewhere that ultimately consumes the events, but most of the work of using Rx tends to entail declaratively defining the `IObservable`s we need. + +Now that you've seen an example of what Rx programming looks like, we can address some obvious questions about why Rx exists at all. + +### What was wrong with .NET Events? + +.NET has had built-in support for events from the very first version that shipped over two decades ago—events are part of .NET's type system. The C# language has intrinsic support for this in the form of the `event` keyword, along with specialized syntax for subscribing to events. So why, when Rx turned up some 10 years later, did it feel the need to invent its own representation for streams of events? What was wrong with the `event` keyword? + +The basic problem with .NET events is that they get special handling from the .NET type system. Ironically, this makes them less flexible than if there had been no built-in support for the idea of events. Without .NET events, we would have needed some sort of object-based representation of events, at which point you can do all the same things with events that you can do with any other objects: you could store them in fields, pass them as arguments to methods, define methods on them and so on. + +To be fair to .NET version 1, it wasn't really possible to define a good object-based representation of events without generics, and .NET didn't get those until version 2 (three and a half years after .NET 1.0 shipped). Different event sources need to be able to report different data, and .NET events could provided a way to parameterize events by type. But once generics came along, it became possible to define types such as `IObservable`, and the main advantage that events offered went away. (The other benefit was some language support for implementing and subscribing to events, but in principle that's something that could have been done for Rx if Microsoft had chosen to. It's not a feature that required events to be fundamentally different from other features of the type system.) + +Consider the example we've just worked through. It was possible to define our own custom LINQ operator, `Quiescent`, because `IObservable` is just an interface like any other, meaning that we're free to write extension methods for it. You can't write an extension method for an event. + +Also, we are able to wrap or adapt `IObservable` sources. `Quiescent` took an `IObservable` as an input, and combined various Rx operators to produce another observable as an output. Its input was a source of events that could be subscribed to, and its output was also a source of events that could be subscribed to. You can't do this with .NET events—you can't write a method that accepts an event as an argument, or that returns an event. + +These limitations are sometimes described by saying that .NET events are not _first class citizens_—there are things you can do with values or references in .NET that you can't do with events. + +If we represent an event source as a plain old interface, then it _is_ a first class citizen: it can use all of the functionality we expect with other objects and values precisely because it's not something special. + + +### What about Streams? + +I've described `IObservable` as representing a _stream_ of events. This raises an obvious question: .NET already has [`System.IO.Stream`](https://learn.microsoft.com/en-us/dotnet/api/system.io.stream), so why not just use that? + +The short answer is that streams are weird because they represent an ancient concept in computing dating back long before the first ever Windows operating system shipped, and as such they have quite a lot of historical baggage. This means that even a scenario as simple as "I have some data, and want to make that available immediately to all interested parties" is surprisingly complex to implement though the `Stream` type. + +Moreover, `Stream` doesn't provide any way to indicate what type of data will emerge—it only knows about bytes. Since .NET's type system supports generics, it is natural to want the types that represent event streams to indicate the event type through a type parameter. + +So even if you did use `Stream` as part of your implementation, you'd want to introduce some sort of wrapper abstraction. If `IObservable` didn't exist, you'd need to invent it. + +It's certainly possible to use IO streams in Rx, but they are not the right primary abstraction. + +(If you are unconvinced, see [Appendix A: What's Wrong with Classic IO Streams](A_IoStreams.md) for a far more detailed explanation of exactly why `Stream` is not well suited to this task.) + +Now that we've seen why `IObservable` needs to exist, we need to look at its counterpart, `IObserver`. ## IObserver -[`IObserver`](http://msdn.microsoft.com/en-us/library/dd783449.aspx "IObserver(Of T) interface - MSDN") is the other one of the two core interfaces for working with Rx. It too has made it into the BCL as of .NET 4.0. Don't worry if you are not on .NET 4.0 yet as the Rx team have included these two interfaces in a separate assembly for .NET 3.5 and Silverlight users. `IObservable` is meant to be the "functional dual of `IEnumerable`". If you want to know what that last statement means, then enjoy the hours of videos on [Channel9](http://channel9.msdn.com/tags/Rx/) where they discuss the mathematical purity of the types. For everyone else it means that where an `IEnumerable` can effectively yield three things (the next value, an exception or the end of the sequence), so too can `IObservable` via `IObserver`'s three methods `OnNext(T)`, `OnError(Exception)` and `OnCompleted()`. +Earlier, I showed the definition of `IObservable`. As you saw, it has just one method, `Subscribe`. And this method takes just one argument, of type [`IObserver`](https://learn.microsoft.com/en-us/dotnet/api/system.iobserver-1). So if you want to observe the events that an `IObservable` has to offer, you must supply it with an `IObserver`. In the examples so far, we've just supplied a simple callback, and Rx has wrapper that in an implementation of `IObserver` for us, but to use Rx effectively you need to understand `IObserver`. It is not a complex interface: -```csharp -//Provides a mechanism for receiving push-based notifications. +```cs public interface IObserver { - //Provides the observer with new data. void OnNext(T value); - //Notifies the observer that the provider has experienced an error condition. void OnError(Exception error); - //Notifies the observer that the provider has finished sending push-based notifications. void OnCompleted(); } ``` -Rx has an implicit contract that must be followed. An implementation of `IObserver` may have zero or more calls to `OnNext(T)` followed optionally by a call to either `OnError(Exception)` or `OnCompleted()`. This protocol ensures that if a sequence terminates, it is always terminated by an `OnError(Exception)`, *or* an `OnCompleted()`. This protocol does not however demand that an `OnNext(T)`, `OnError(Exception)` or `OnCompleted()` ever be called. This enables to concept of empty and infinite sequences. We will look into this more later. +As with `IObservable`, you can find [the source for `IObserver`](https://github.com/dotnet/runtime/blob/7cf329b773fa5ed544a9377587018713751c73e3/src/libraries/System.Private.CoreLib/src/System/IObserver.cs) in the .NET runtime GitHub repository, because both of these interfaces are built into the runtime libraries. + +If you're wondering whether the relationship between `IObservable` and `IObserver` is similar to the relationship between [`IEnumerable`](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.ienumerable-1) and [`IEnumerator`](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.ienumerator-1), then you're onto something. Both `IEnumerator` and `IObservable` represent _potential_ sequences. With both of these interfaces, they will only supply data if we ask them for it. To get values out of an `IEnumerable`, an `IEnumerator` needs to come into existence, and similarly, to get values out of an `IObservable` requires an `IObserver`. + +The difference reflects the fundamental _pull vs push_ difference between `IEnumerable` and `IObservable`. Whereas with `IEnumerable` we ask the source to create an `IEnumerator` for us which we can then use to retrieve items (which is what a C# `foreach` loop does), with `IObservable`, the source does not _implement_ `IObserver`: it expects _us_ to supply an `IObserver` and it will then push its values into that observer. + +So why does `IObserver` have these three methods? It's because, when I said earlier that in an abstract sense, `IObserver` represents the same thing as `IEnumerable`, I meant it. It might be an abstract sense, but it is precise: `IObservable` and `IObserver` were designed to preserve the exact meaning of `IEnumerable` and `IEnumerator`, changing only the detailed mechanism of consumption. + +When you iterate over an `IEnumerable` (with, say, a `foreach` loop), then with each iteration (and more precisely, on each call to the enumerator's [`MoveNext`](https://learn.microsoft.com/en-us/dotnet/api/system.collections.ienumerator.movenext) method) there are three things that could happen: + +* `MoveNext` could return `true` to indicate that a value is available in the enumerator's [`Current`](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.ienumerator-1.current) property +* `MoveNext` could throw an exception +* `MoveNext` could return `false` to indicate that you've reached the end of the collection + +These three outcomes correspond precisely to the three method defined by `IObserver`. We could describe these in slightly more abstract terms: + +* Here's another item +* It has all gone wrong +* There are no more items + +That describes the three things that either can happen next when consuming either an `IEnumerable` or an `IObservable`. The only difference is the means by which consumers discover this. With an `IEnumerable` source, each call to `MoveNext` will tell us which of these three applies. And with an `IObservable` source, it will tell you one of these three things with a call to the corresponding member of your `IObserver` implementation. + +### The Rules of `IObserver` + +Notice that two of the three outcomes in the list above are terminal. If you're iterating through an `IEnumerable` with a `foreach` loop, and it throws an exception, the `foreach` loop will terminate. The C# compiler understands that if `MoveNext` throws, the `IEnumerator` is now done, so it disposes it and then allows the exception to propagate. Likewise, if you get to the end of a sequence, then you're done, and the compiler understands that too: the code it generates for a `foreach` loop detects when `MoveNext` returns false and when that happens it disposes the enumerator and then moves onto the code after the loop. + +These rules might seem so obvious that we might never even think about them when iterating over `IEnumerable` sequences. What might be less immediately obvious is that exactly the same rules apply for an `IObservable` sequence. + +That means these examples would be breaking the rules: + +```cs +public static void WrongOnError(IObserver obs) +{ + obs.OnNext(1); + obs.OnError(new ArgumentException("This isn't an argument!")); + obs.OnNext(2); // Against the rules! We already reported failure, so iteration must stop +} + +public static void WrongOnCompletedError(IObserver obs) +{ + obs.OnNext(1); + obs.OnCompleted(); + obs.OnNext(2); // Against the rules! We already said we were done, so iteration must stop +} + +public static void WrongOnErrorAndOnCompleted(IObserver obs) +{ + obs.OnNext(1); + obs.OnError(new ArgumentException("This isn't an argument!")); + + // This next call is against the rule because we reported an error, and you're not + // allowed to make any further calls after you did that. + obs.OnCompleted(); +} + +public static void WrongOnCompletedAndOnError(IObserver obs) +{ + obs.OnNext(1); + obs.OnCompleted(); + + // This next call is against the rule because already said we were done. + // When you terminate a sequence you have to pick between OnCompleted or OnError + obs.OnError(new ArgumentException("This isn't an argument!")); +} +``` + +These correspond in a pretty straightforward way to things we already know about `IEnumerable`: + +* If an enumerator throws from `MoveNext`, it's done and you mustn't call `MoveNext` again, so you won't be getting any more items out of it +* If an enumerator returns `false` from `MoveNext`, it's done and you mustn't call `MoveNext` again, so you won't be getting any more items out of it +* If an enumerator throws from `MoveNext`, that means its done, it's done and you mustn't call `MoveNext` again, meaning it won't have any opportunity to tell that it's done by returning `false` from `MoveNext` +* If an enumerator returns `false` from `MoveNext`, it's done and you mustn't call `MoveNext` again, meaning it won't have any opportunity to also throw an exception +* If an enumerator tells you it's done by returning `false` from `MoveNext`, you can't get anything more out of it + +Because `IObservable` is push-based, the onus for obeying all of these rules fall on the observable source. With `IEnumerable`, which is pull-based, it's up to the code using the `IEnumerator` (e.g. a `foreach` loop) to obey these rules. But they are essentially the same rules. + +There's an additional rule for `IObserver`: if you call `OnNext` you must wait for it to return before making any more method calls into the same `IObserver`. That means this code breaks the rules: + +```cs +public static void EverythingEverywhereAllAtOnce(IEnumerable obs) +{ + Random r = new(); + for (int i = 0; i < 10000; ++i) + { + int v = r.Next(); + Task.Run(() => obs.OnNext(v)); + }} +``` + +This calls `obs.OnNext` 10,000 times, but it executes these calls as individual tasks to be run on the thread pool. The thread pool is designed to be able to execute work in parallel, and that's a a problem here because nothing here ensures that one call to `OnNext` completes before the next begins. We've broken the rule that says we must wait for each call to `OnNext` to return before calling either `OnNext`, `OnError`, or `OnComplete` on the same observer. (Note: this assumes that the caller won't subscribe the same observer to multiple different sources. If you do that, you can't assume that all calls to its `OnNext` will obey the rules, because the different sources won't have any way of knowing they're talking to the same observer.) + +This rule in which we must wait for `OnNext` to return is tricky and subtle. It's perhaps less obvious than the others, because there's no equivalent rule for `IEnumerable`—the opportunity to break this rule only arises when the source pushes data into the application. You might look at the example above and think "well who would do that?" However, multithreading is just an easy way to understand how it might be technically possible to break the rule. The harder cases are where single-threaded re-entrancy occurs. Take this code: + +```cs +public class GoUntilStopped +{ + private readonly IObserver observer; + private bool running; + + public GoUntilStopped(IObserver observer) + { + this.observer = observer; + } + + public void Go() + { + this.running = true; + for (int i = 0; this.running; ++i) + { + this.observer.OnNext(i); + } + } + + public void Stop() + { + this.running = false; + this.observer.OnCompleted(); + } +} +``` + +This class takes an `IObserver` as a constructor argument. When you call its `Go` method, it repeatedly calls the observer's `OnNext` until something calls its `Stop` method. + +Can you see the bug? + +We can take a look at what happens by supplying an `IObserver` implementation: + +```cs +public class MyObserver : IObserver +{ + private GoUntilStopped? runner; + + public void Run() + { + this.runner = new(this); + Console.WriteLine("Starting..."); + this.runner.Go(); + Console.WriteLine("Finished"); + } + + public void OnCompleted() + { + Console.WriteLine("OnCompleted"); + } + + public void OnError(Exception error) { } + + public void OnNext(int value) + { + Console.WriteLine($"OnNext {value}"); + if (value > 3) + { + Console.WriteLine($"OnNext calling Stop"); + this.runner?.Stop(); + } + Console.WriteLine($"OnNext returning"); + } +} +``` + +Notice that the `OnNext` method looks at its input, and if it's greater than 3, it tells the `GoUntilStopped` object to stop. + +Let's look at the output: + +``` +Starting... +OnNext 0 +OnNext returning +OnNext 1 +OnNext returning +OnNext 2 +OnNext returning +OnNext 3 +OnNext returning +OnNext 4 +OnNext calling Stop +OnCompleted +OnNext returning +Finished +``` + +The problem is right near the end. Specifically, these two lines: + +``` +OnCompleted +OnNext returning +``` + +This tells us that the call to our observer's `OnCompleted` happened before a call in progress to `OnNext` occurred. It didn't take multiple threads to make this occur. It happened because the code in `OnNext` decides whether it wants to keep receiving events, and when it wants to stop, it immediately calls the `GoUntilStopped` object's `Stop` method. There's nothing wrong with that—observers are allowed to make outbound calls to other objects inside `OnNext`, and it's actually quite common for an observer to inspect an incoming event and decide that it wants to stop. + +The problem is in the `GoUntilStopped.Stop` method. This calls `OnCompleted` but it makes no attempt to determine whether a call to `OnNext` is in progress. + +This can be a surprisingly tricky problem to solve. Suppose `GoUntilStopped` _did_ detect that. What then? In the multithreaded case, we could have solved this by using `lock` or some other synchronization primitive to ensure that calls into the observer happened one at at time, but that won't work here: the call to `Stop` has happened on _the same thread_ that called `OnNext`. We need to wait for `OnNext` to return, but it can't return until we return from `Stop`. + +In this case it's not all that hard to fix: we could modify `Stop` so it just sets the `running` field to `false`, and then move the call to `OnComplete` into the `Go` method, after the `for` loop. But more generally this can be a hard problem to fix, and it's one of the reasons for using the `System.Reactive` library instead of just attempting to implement `IObservable` and `IObserver` directly. Rx has general purpose mechanisms for solving exactly this kind of problem. (We'll see these when we look at [Scheduling](15_SchedulingAndThreading.md).) Moreover, all of the implementations Rx provides take advantage of these mechanisms for you. If you're using Rx by composing its built-in operators in a declarative way, you never have to think about these rules, because all of Rx's operators obey the rules. + +So as long as you're using Rx to build the observable sources you need, you get to depend on these rules in your callbacks that receive the events, but it's Rx's problem to keep to the rules. + +These rules are sometimes expressed as a _grammar_. For example, consider this regular expression: + +``` +(OnNext)*(OnError|OnComplete) +``` + +This formally captures the basic idea: there can be any number of calls to `OnNext` (maybe even zero calls), that occur in sequence, followed by either an `OnError` or an `OnComplete`, but not both, and there must be nothing after either of these. + +One last point: sequences may be infinite. This is true for `IEnumerable`—it's perfectly possible for an enumerator to return `true` every time `MoveNext` is returned, in which case a `foreach` loop iterating over it will never reach the end. It might choose to stop (with a `break` or `return`), or some exception that did not originate from the enumerator might cause the loop to terminate, but it's absolutely acceptable for an `IEnumerable` to produce items for as long as you keep asking for them. The same is true of a `IObservable`—if you subscribe to an observable source, and by the time your program exits you've not received a call to either `OnComplete` or `OnError`, that's not a bug. + +So you might argue that this is a slightly better way to describe the rules formally: + +``` +(OnNext)*(OnError|OnComplete)? +``` + +More subtly, observable sources are allowed to do nothing at all. In fact there's a built-in implementation. If you call `Observable.Never()` it will return an `IObservable`, and if you subscribe to that, it will never call any methods on your observer. This might not look immediately useful—it is logically equivalent to an `IEnumerable` in which the enumerator's `MoveNext` method never returns. That might not be usefully distinguishable from crashing. It's slightly different with Rx, because when we model this "no items emerge ever" behaviour, we don't need to block a thread forever to do it. We can just decide never to call any methods on the observer. This may seem daft, but as you've seen with the `Quiescent` example, sometimes we create observable sources not because we want the actual items that emerge from it, but because we're interested in the instants where interesting things happen. It can sometimes be useful to be able to model "nothing interesting ever happens" cases. -Interestingly, while you will be exposed to the `IObservable` interface frequently if you work with Rx, in general you will not need to be concerned with `IObserver`. This is due to Rx providing anonymous implementations via methods like `Subscribe`. ### Implementing IObserver and IObservable +TODO: I've not reviewed past here. + It is quite easy to implement each interface. If we wanted to create an observer that printed values to the console it would be as easy as this. ```csharp @@ -179,6 +486,8 @@ The problem we have here is that this is not really reactive at all. This implem This problem of implementing the interfaces should not concern us too much. You will find that when you use Rx, you do not have the need to actually implement these interfaces, Rx provides all of the implementations you need out of the box. Let's have a look at the simple ones. ## Subject + +TODO: move this into a separate chapter? I'm not convinced all the subject types are really intro stuff. `Subject` is useful, but the rest? I like to think of the `IObserver` and the `IObservable` as the 'reader' and 'writer' or, 'consumer' and 'publisher' interfaces. If you were to create your own implementation of `IObservable` you may find that while you want to publicly expose the IObservable characteristics you still need to be able to publish items to the subscribers, throw errors and notify when the sequence is complete. Why that sounds just like the methods defined in `IObserver`! While it may seem odd to have one type implementing both interfaces, it does make life easy. This is what [subjects](http://msdn.microsoft.com/en-us/library/hh242969(v=VS.103).aspx "Using Rx Subjects - MSDN") can do for you. [`Subject`](http://msdn.microsoft.com/en-us/library/hh229173(v=VS.103).aspx "Subject(Of T) - MSDN") is the most basic of the subjects. Effectively you can expose your `Subject` behind a method that returns `IObservable` but internally you can use the `OnNext`, `OnError` and `OnCompleted` methods to control the sequence. diff --git a/content/A_IoStreams.md b/content/A_IoStreams.md new file mode 100644 index 0000000..558c402 --- /dev/null +++ b/content/A_IoStreams.md @@ -0,0 +1,49 @@ +# What's Wrong with Classic IO Streams + +The abstraction that `System.IO.Stream` represents was designed as a way for an operating system to enable application code to communicate with devices that could receive and/or produce streams of bytes. This makes them a good model for the [reel to reel tape storage devices](https://en.wikipedia.org/wiki/IBM_7-track) that were commonplace back when this kind of stream was designed, but unnecessarily cumbersome if you just want to represent a sequence of values. Over the years, streams have been co-opted to represent an increasingly diverse range of things, including files, keyboards, network connections, and OS status information, meaning that by the time .NET came along in 2002, its `Stream` type needed a mixture of features to accommodate some quite diverse scenarios. And since not all streams are alike, it's quite common for some of these features to not to work on some streams. + +IO streams were designed to support efficient delivery of fairly high volumes of byte data, often with devices that inherently work with data in big chunks. In the main scenarios for which they were designed, read and write operations would involve calls into operating system APIs, which are typically relatively expensive, so the basic read and write operations expect to work with arrays of bytes. (If you make one system call to deliver thousands of bytes, the overhead of that single call is far lower than if you were working one byte at a time.) While that's good for efficiency, it can be inconvenient for developers (and irksome if you were hoping to use streams purely to represent in-process event streams that don't actually need to make system calls, and therefore don't get to enjoy the upside of this performance/convenience trade off). + +There is a standard band-aid kind of a fix for this: libraries that present streams to application code often don't represent the underlying OS stream directly. Instead, they are often _buffered_, meaning that the library will perform reads fairly large chunks, and hold recently-fetched bytes in memory until the application code asks for them. This can enable methods like .NET's single-byte [`Stream.ReadByte`](https://learn.microsoft.com/en-us/dotnet/api/system.io.stream.readbyte) method to work reasonably efficiently: several thousand calls to that might correspond to only one call to the operating system API that provides access to whatever physical device the stream represents. Likewise, if you're sending data into an IO stream, a buffered stream will wait until you've supplied some minimum quantity of data (4096 bytes is a common default with certain .NET `Stream`s) before it actually sends any data to its destination. + +But this could be a serious problem for the kinds of event sources we represent in Rx. If an IO stream deliberately insulates you from the real movement of data, that could introduce delays that might be disastrous in a financial application where delays in delivery and receipt of information can have enormous financial consequences. And even if there aren't direct financial implications, this kind of buffering would be unhelpful in representing events in a user interface—nobody wants to have to click a button several thousand times before the application starts to act on that input. + +There's also the problem that you don't always know which kind of stream you've been given. If you know for a fact that you've got an unbuffered stream representing a file on disk (because you created that stream yourself) you'd typically right quite different code than you would if you knew you had a buffered stream. But if you've written a method that takes a `Stream` argument, it's not clear what you've got, so you don't necessarily know which coding strategy is best. + +Another problem is that because they are byte-oriented, there's no such thing as a `System.IO.Stream` that produces more complex values. If you want a stream of `int` values (which isn't a _much_ more complex idea than a stream of _byte_ values) `System.IO.Stream` does nothing to help you, and might even hinder you. You can try reading four bytes at a time but a `System.IO.Stream` is at liberty to decide that it's only going to return three. (The reason streams are allowed to be petty in this way is that the original design presumes that a stream represents some underlying device that might inherently work with fixed size units of data. Disk drives and SSDs are incapable of reading or writing individual bytes; instead, each operation works with some whole number of 'sectors' each of which are hundreds or thousands of bytes long. So a read operation might simply be unable to give you exactly as many bytes as you asked for.) It's now the consuming code's problem to work out how to deal with that. + +You can write wrappers to deal with these issues caused by `Stream`'s origins as an abstraction for a magnetic tape storage device, but if you want the type system to help you to distinguish between a stream of `int` values and a stream of `float` values, `Stream` won't help you. You'll end up needing some different abstraction that has a type parameter. Something like `IObservable` in fact. + + + + + +Going back to the 'stream of `int` values' idea, + + Some `Stream` instances don't have this 'buffering' layer, and operate more immediately (at the price of being unable to handle one-value-at-a-time operations as efficient, or maybe even at all) but the problem is you don't necessarily know which kind you've got. If you've written a method with an argument of type `Stream`, callers could be passing you anything. + + +And although they do get used for one-byte-at-a-time devices (notably the keyboard input in a command line tool that presents an interactive prompt) they're not especially well suited to that. + + + + + + + + +if you want to implement your own type that derives from `Stream` to represents some source of events, you'll need to implement all ten of the abstract members it defines: 5 properties and 5 methods + + +The essence of a `System.IO.Stream` is + +The `System.IO.Stream` implementations are commonly used to stream data (generally bytes) to or from an I/O device like a file, network or block of memory. +> `System.IO.Stream` implementations can have both the ability to read and write, and sometimes the ability to seek (i.e. fast forward through a stream or move backwards). +> When I refer to an instance of `IObservable` as a stream, it does not exhibit the seek or write functionality that streams do. +This is a fundamental difference preventing Rx being built on top of the `System.IO.Stream` paradigm. +Rx does however have the concept of forward streaming (push), disposing (closing) and completing (eof). +Rx also extends the metaphor by introducing concurrency constructs, and query operations like transformation, merging, aggregating and expanding. +> These features are also not an appropriate fit for the existing `System.IO.Stream` types. Some others refer to instances of `IObservable` as Observable Collections, which I find hard to understand. While the observable part makes sense to me, I do not find them like collections at all. You generally cannot sort, insert or remove items from an `IObservable` instance like I would expect you can with a collection. Collections generally have some sort of backing store like an internal array. The values from an `IObservable` source are not usually pre-materialized as you would expect from a normal collection. There is also a type in WPF/Silverlight called an `ObservableCollection` that does exhibit collection-like behavior, and is very well suited to this description. +> In fact `IObservable` integrates very well with `ObservableCollection` instances. +So to save on any confusion we will refer to instances of `IObservable` as *sequences*. +While instances of `IEnumerable` are also sequences, we will adopt the convention that they are sequences of _data at rest_, and `IObservable` instances are sequences of _data in motion_. diff --git a/content/GraphicsIntro/Ch02-Quiescent-Marbles-Input-And-Output.svg b/content/GraphicsIntro/Ch02-Quiescent-Marbles-Input-And-Output.svg new file mode 100644 index 0000000..a10ff94 --- /dev/null +++ b/content/GraphicsIntro/Ch02-Quiescent-Marbles-Input-And-Output.svg @@ -0,0 +1,83 @@ + + + + + + + + source + source.Quiescent(TimeSpan.FromSeconds(2), Scheduler.Default) + + + 1 + + + + 2 + + + + [1, 2] + + + + [3,4,5] + + + + [6] + + + + 3 + + + + 4 + + + + 5 + + + + 6 + + + + + + \ No newline at end of file diff --git a/content/GraphicsIntro/Ch02-Quiescent-Marbles-On-Offs.svg b/content/GraphicsIntro/Ch02-Quiescent-Marbles-On-Offs.svg new file mode 100644 index 0000000..c6db024 --- /dev/null +++ b/content/GraphicsIntro/Ch02-Quiescent-Marbles-On-Offs.svg @@ -0,0 +1,260 @@ + + + + + + + + + -1 + + + + outstanding + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 1 + + + + 1 + + + + + + 2 + + + + 2 + + + + 1 + + + + 1 + + + + 2 + + + + 1 + + + source + onoffs (collected by select delta, which uses SelectMany) + from _ in srcfrom delta in Observable .Return(1, scheduler) .Concat(Observable.Return(-1, scheduler).Delay(minimumInactivityPeriod, scheduler)) + + + 1 + + + + 2 + + + + 3 + + + + 4 + + + + 5 + + + + 6 + + + + + + + + + 1 + + + + 1 + + + + + -1 + + + + + 1 + + + + -1 + + + + 1 + + + + + -1 + + + + + 1 + + + + 1 + + + + + -1 + + + + + 1 + + + + 1 + + + + + -1 + + + + + 1 + + + + -1 + + + + + -1 + + + + + 1 + + + + -1 + + + + 1 + + + + -1 + + + + -1 + + + + 1 + + + + -1 + + \ No newline at end of file diff --git a/content/GraphicsIntro/Ch02-Quiescent-Marbles-Outstanding-Value.svg b/content/GraphicsIntro/Ch02-Quiescent-Marbles-Outstanding-Value.svg new file mode 100644 index 0000000..95a33d3 --- /dev/null +++ b/content/GraphicsIntro/Ch02-Quiescent-Marbles-Outstanding-Value.svg @@ -0,0 +1,96 @@ + + + + + + + source + outstanding value + + + 1 + + + + 2 + + + + 3 + + + + 4 + + + + 5 + + + + 6 + + + + + + + + 0 + 1 + 2 + + \ No newline at end of file diff --git a/content/GraphicsIntro/Ch02-Quiescent-Marbles-Outstanding.svg b/content/GraphicsIntro/Ch02-Quiescent-Marbles-Outstanding.svg new file mode 100644 index 0000000..653247f --- /dev/null +++ b/content/GraphicsIntro/Ch02-Quiescent-Marbles-Outstanding.svg @@ -0,0 +1,131 @@ + + + + + + + + source + outstanding + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 1 + + + + 1 + + + + 2 + + + + 3 + + + + 4 + + + + 5 + + + + 6 + + + + + + + + 2 + + + + 2 + + + + 1 + + + + 1 + + + + 2 + + + + 1 + + \ No newline at end of file diff --git a/content/GraphicsIntro/Ch02-Quiescent-Marbles.ai b/content/GraphicsIntro/Ch02-Quiescent-Marbles.ai new file mode 100644 index 0000000..f9f4cf3 --- /dev/null +++ b/content/GraphicsIntro/Ch02-Quiescent-Marbles.ai @@ -0,0 +1,1734 @@ +%PDF-1.6 % +1 0 obj <>/OCGs[25 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream + + + + + application/pdf + + + Ch02-Quiescent-Marbles + + + Adobe Illustrator 27.5 (Windows) + 2023-05-24T09:57:03+01:00 + 2023-05-24T09:57:03+01:00 + 2023-05-24T09:57:03+01:00 + + + + 120 + 256 + JPEG + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAB4AwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9B+cPLPlTXriyh18NSJJ WtmFzJbAUkgdv7t46mqLTwFfHFWL6FpX5faJ5jtrrTreSKW2hd47h7yaQmBx6TTvEzMrI3Xkxr1a lS1a/FF06/8AlGHicFHnV9LZRaefdJuNTezqsaosTs7P8apOSsTuhAAVyOoY070xGQE0nH2hCU+G juaBTz9LaV/y2wf8jU/rljnu/S2lf8tsH/I1P64qk2u+eNJ0ox/vIpUeSKEzGULEJZ24Rx81Enxs abe48chKdOHqNbHFLhok1e3csvPPulwNAqcT60ot6SyLExnIr6KCjc5AAajp7negOUNWTtKEaoE7 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 I0bkoPzoP8/Hrir/AP/Z + + + + proof:pdf + uuid:65E6390686CF11DBA6E2D887CEACB407 + xmp.did:14709273-42b8-4844-95f8-dd7dcca7f08e + uuid:27c6700f-edc2-4596-8c7e-6d5a89794448 + + uuid:d12d0cae-8e1f-654f-a69a-77158b6e30dd + xmp.did:142446db-8e24-4829-9ba0-84db788810a6 + uuid:65E6390686CF11DBA6E2D887CEACB407 + proof:pdf + + + + + saved + xmp.iid:14709273-42b8-4844-95f8-dd7dcca7f08e + 2023-05-24T06:57:15+01:00 + Adobe Illustrator 27.5 (Windows) + / + + + + Web + Document + AIRobin + 1 + False + False + + 504.807339 + 492.571400 + Pixels + + + + + Tahoma + Tahoma + Regular + Open Type + Version 7.01 + False + tahoma.ttf + + + Consolas + Consolas + Regular + Open Type + Version 7.00 + False + consola.ttf + + + + + + Cyan + Magenta + Yellow + Black + + + + + + Default Swatch Group + 0 + + + + White + RGB + PROCESS + 255 + 255 + 255 + + + Black + RGB + PROCESS + 0 + 0 + 0 + + + code keyword + PROCESS + 100.000000 + RGB + 44 + 50 + 200 + + + RGB Red + RGB + PROCESS + 255 + 0 + 0 + + + RGB Yellow + RGB + PROCESS + 255 + 255 + 0 + + + RGB Green + RGB + PROCESS + 0 + 255 + 0 + + + RGB Cyan + RGB + PROCESS + 0 + 255 + 255 + + + RGB Blue + RGB + PROCESS + 0 + 0 + 255 + + + RGB Magenta + RGB + PROCESS + 255 + 0 + 255 + + + R=193 G=39 B=45 + RGB + PROCESS + 193 + 39 + 45 + + + R=237 G=28 B=36 + RGB + PROCESS + 237 + 28 + 36 + + + R=241 G=90 B=36 + RGB + PROCESS + 241 + 90 + 36 + + + R=247 G=147 B=30 + RGB + PROCESS + 247 + 147 + 30 + + + R=251 G=176 B=59 + RGB + PROCESS + 251 + 176 + 59 + + + R=252 G=238 B=33 + RGB + PROCESS + 252 + 238 + 33 + + + R=217 G=224 B=33 + RGB + PROCESS + 217 + 224 + 33 + + + R=140 G=198 B=63 + RGB + PROCESS + 140 + 198 + 63 + + + R=57 G=181 B=74 + RGB + PROCESS + 57 + 181 + 74 + + + R=0 G=146 B=69 + RGB + PROCESS + 0 + 146 + 69 + + + R=0 G=104 B=55 + RGB + PROCESS + 0 + 104 + 55 + + + R=34 G=181 B=115 + RGB + PROCESS + 34 + 181 + 115 + + + R=0 G=169 B=157 + RGB + PROCESS + 0 + 169 + 157 + + + R=41 G=171 B=226 + RGB + PROCESS + 41 + 171 + 226 + + + R=0 G=113 B=188 + RGB + PROCESS + 0 + 113 + 188 + + + R=46 G=49 B=146 + RGB + PROCESS + 46 + 49 + 146 + + + R=27 G=20 B=100 + RGB + PROCESS + 27 + 20 + 100 + + + R=102 G=45 B=145 + RGB + PROCESS + 102 + 45 + 145 + + + R=147 G=39 B=143 + RGB + PROCESS + 147 + 39 + 143 + + + R=158 G=0 B=93 + RGB + PROCESS + 158 + 0 + 93 + + + R=212 G=20 B=90 + RGB + PROCESS + 212 + 20 + 90 + + + R=237 G=30 B=121 + RGB + PROCESS + 237 + 30 + 121 + + + R=199 G=178 B=153 + RGB + PROCESS + 199 + 178 + 153 + + + R=153 G=134 B=117 + RGB + PROCESS + 153 + 134 + 117 + + + R=115 G=99 B=87 + RGB + PROCESS + 115 + 99 + 87 + + + R=83 G=71 B=65 + RGB + PROCESS + 83 + 71 + 65 + + + R=198 G=156 B=109 + RGB + PROCESS + 198 + 156 + 109 + + + R=166 G=124 B=82 + RGB + PROCESS + 166 + 124 + 82 + + + R=140 G=98 B=57 + RGB + PROCESS + 140 + 98 + 57 + + + R=117 G=76 B=36 + RGB + PROCESS + 117 + 76 + 36 + + + R=96 G=56 B=19 + RGB + PROCESS + 96 + 56 + 19 + + + R=66 G=33 B=11 + RGB + PROCESS + 66 + 33 + 11 + + + + + + Grays + 1 + + + + R=0 G=0 B=0 + RGB + PROCESS + 0 + 0 + 0 + + + R=26 G=26 B=26 + RGB + PROCESS + 26 + 26 + 26 + + + R=51 G=51 B=51 + RGB + PROCESS + 51 + 51 + 51 + + + R=77 G=77 B=77 + RGB + PROCESS + 77 + 77 + 77 + + + R=102 G=102 B=102 + RGB + PROCESS + 102 + 102 + 102 + + + R=128 G=128 B=128 + RGB + PROCESS + 128 + 128 + 128 + + + R=153 G=153 B=153 + RGB + PROCESS + 153 + 153 + 153 + + + R=179 G=179 B=179 + RGB + PROCESS + 179 + 179 + 179 + + + R=204 G=204 B=204 + RGB + PROCESS + 204 + 204 + 204 + + + R=230 G=230 B=230 + RGB + PROCESS + 230 + 230 + 230 + + + R=242 G=242 B=242 + RGB + PROCESS + 242 + 242 + 242 + + + + + + Web Color Group + 1 + + + + R=63 G=169 B=245 + RGB + PROCESS + 63 + 169 + 245 + + + R=122 G=201 B=67 + RGB + PROCESS + 122 + 201 + 67 + + + R=255 G=147 B=30 + RGB + PROCESS + 255 + 147 + 30 + + + R=255 G=29 B=37 + RGB + PROCESS + 255 + 29 + 37 + + + R=255 G=123 B=172 + RGB + PROCESS + 255 + 123 + 172 + + + R=189 G=204 B=212 + RGB + PROCESS + 189 + 204 + 212 + + + + + + + Adobe PDF library 17.00 + 21.0.0 + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3 0 obj <> endobj 5 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>>/TrimBox[0.0 0.0 504.807 168.651]/Type/Page/PieceInfo<>>> endobj 23 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>>/TrimBox[0.0 0.0 504.807 168.651]/Type/Page/PieceInfo<>>> endobj 24 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>>/TrimBox[0.0 0.0 504.807 205.477]/Type/Page/PieceInfo<>>> endobj 27 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>>/TrimBox[0.0 0.0 504.807 492.571]/Type/Page/PieceInfo<>>> endobj 35 0 obj <>stream +HW]O+}ЏFZ7]կˮDl,D`6>53V"{Sӟ3ǧNΝ9;71gY>u9@!2'1Y>~RD3q#oe! ,d&/yJ¨RNGS>8$)z}X2EYy_}l"fN`~Q]J¨2N|=7QkZayB띬RMh1(_@Hd 8#Z.AqH"ƚDό{Fa<D,7Qժ&jQ\9d|;u1Fq 1fZ_zEՃbZ;_gՕGVu# at|ݼ5ަFr&9ꛛbB\$[Mmi E6>xC1YoY>{\.f1vvcY= +l/a|\|+C!W\yLr:1K\)}5_x H/O.zaf88<2b`W&mem槯_Z4Wxvcqq1nrbvt1^|=;)w.,.gO>}ş揷W>bfN$jP}ܖJwU p6wlF14"ak̒[j+[ocR\9$ W&H]z3Z [Cɺ)m"P=⨳fTNG7}fj+Vt8ꤧ$IOUdUd]/*>.`z<7!!XTfMb}S`p!u]%"F-u + ȚsI! o+/FZG yYvyKQU D\=CZ/m)bH+ y;D}5iE-V1Z9ú:º:ìDC<Iυ8P^RK33X\E/\@Y<%2$ոg-jqԵfTjǺ:#º:ìDCaYN!H2zgC$WO⨪ţlY0ʅpO6gg,jqԍYKqdԹPcnr?l`mDI>V>Тw\\E/\H>r>q~ill+qY;ޅTJv f'ǵTkAñ @FĀtAwՕkeWceK!wlg${&u8c(?<ʪ@`~19KrE8b;ͳC"f}WjqY,Gz;/Q_z]-: ,/gf?iQ' +endstream endobj 8 0 obj <> endobj 9 0 obj <> endobj 10 0 obj <>stream +%!PS-Adobe-3.0 +%%Creator: Adobe Illustrator(R) 24.0 +%%AI8_CreatorVersion: 27.5.0 +%%For: (Ian Griffiths) () +%%Title: (Ch02-Quiescent-Marbles.ai) +%%CreationDate: 5/24/2023 9:57 AM +%%Canvassize: 16383 +%%BoundingBox: 11 -1083 501 -15 +%%HiResBoundingBox: 11.3603515625 -1082.88091908026 500.9033203125 -15.64892578125 +%%DocumentProcessColors: Cyan Magenta Yellow Black +%AI5_FileFormat 14.0 +%AI12_BuildNumber: 695 +%AI3_ColorUsage: Color +%AI7_ImageSettings: 0 +%%RGBProcessColor: 0 0 0 ([Registration]) +%%+ 0.172549024224281 0.196078434586525 0.7843137383461 (code keyword) +%AI3_Cropmarks: 0 -1111.50717975022 504.807339449542 -618.935779816515 +%AI3_TemplateBox: 683.5 -384.5 683.5 -384.5 +%AI3_TileBox: -168.466320512286 -1162.82148588688 673.393659959146 -567.801527390788 +%AI3_DocumentPreview: None +%AI5_ArtSize: 14400 14400 +%AI5_RulerUnits: 6 +%AI24_LargeCanvasScale: 1 +%AI9_ColorModel: 1 +%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 +%AI5_TargetResolution: 800 +%AI5_NumLayers: 1 +%AI17_Begin_Content_if_version_gt:24 4 +%AI10_OpenToVie: -842.715596330274 101.34862385321 1.00925925925926 0 7713.57798165138 8341.26605504587 4318 2607 18 1 0 89 170 0 0 0 1 1 0 1 1 0 0 +%AI17_Alternate_Content +%AI9_OpenToView: -842.715596330274 101.34862385321 1.00925925925926 4318 2607 18 1 0 89 170 0 0 0 1 1 0 1 1 0 0 +%AI17_End_Versioned_Content +%AI5_OpenViewLayers: 7 +%AI17_Begin_Content_if_version_gt:24 4 +%AI17_Alternate_Content +%AI17_End_Versioned_Content +%%PageOrigin:283 -684 +%AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 +%AI9_Flatten: 1 +%AI12_CMSettings: 00.MS +%%EndComments + +endstream endobj 11 0 obj <>stream +%AI24_ZStandard_Data(/X / MkZp*\0wl73Gz"7]1irxSo h(DEbz$ΰHE=P$YAb/TJ]]"Y8w<=Vu`@4tɢFP$P$cz4P40-5-`qkl1ܸѝjtƳlxxx+\'^T^;_f7T43Rz6{'!UCEe{)RGh_}"L9@Z "7r(žFzx5Uu_EXBv-pcAp`CV$ qGne$dkٵrhJ6)ҪHѠr\@!shkaFetH2Nx"jj&BKCU*Z:J}׈]B !xC5=AXsp\5 / GpУgU*YHc=+=Βs1sBRPA?R)'khK-Sj0ɂH:;3*3р4(븃p8 ?}x8!ABa@D(GHް){(E[b!ͽr"tBHT$EZyxVǂH jU$_Eϊ CC8t0:X<Iz[j(R$D< ⫉E.I߬6vn_J@[NIDDDIKjIU?~ϾgYK봆ʓh4R(+#cʪ: U$"qa( \" ) ϼkHYKƭ"i8J*2p(}a Ed""Q$vS:Hr)U$E)d$#p<0u0[0_EERՎzЛoEYBԡ)3.kSiEb+"BX|HVKK@⩉P$ dWO\(/Hep)k*x=я]-CIPQ$l J,&r!,CӞkvt3<TH$АC << E"ϯc[nu"**B%n R^OH>٩l)Pɡrz捈j;ۡU JC)*{Mt-^}/EV4T͒6V*GfG[[պmTa,8J]wLЖ,TX`P$ZdXܣP$ƃh0 cq"Y2fA](zH]0zVz#MEB/O<W$H C,HP$BC8IH_EVV$*=+CU+=BNE0#U< +RVkpH~8a$;/P0Bκm*Tm*½Av ]8Q")0= bt:;<8=rBCD@>Yiy\$#GBZjzz](CЇB[k{HvelcXH~qwqiE-lq \Bb`, ⱀ, 1(1d(cg, F`<5ܨ5xh<H::X8x8 zQ{>X8bH!$!0 0P$P$eCP""9%P$Ç"Hȃ\ERԅH`4H"9S$x0}C>a{z@p4 "a8u#89ƣh4І6k\֨Ԁ0 X0X"QF2cfp, bb.na ?x/+:d2v]\[Z/-DІ.zjj%$$HF.rҲI A: <.&"!85qޝ]bkÞH Xf RR bZ /vkMxfH5b48vi)I)I"QY@0_,jH_R$xV.SA C q(^HV6`tZЂHIyfR$P$ʙ 0E"ADP(x4@X8'%D&$6 0  4,@CāD"<8"AD ,(&@h "20ЀA pₒĄFah@  +LD0а 4, X1Q""    $""!⁇ "%@Hᡁa!A`! 8@!b!2 h0" &8DXh>Na%F"8pH[.҅H$$=ZvN[T\{1 +6^%AsQET; noy,<;rǴK5B4Uw_14y\fM ̼k/^uj[m!RF~ݓuk4zSU?29C]]9tFIǷy?Yv\kޣe1ΧYMWvVq6N̆&ڛé[iߕ:JNp_K~=/yi̼WYj&'ϩwwݑ!ofSh)U HsuZDVU<&V֩PoKZMQіҟ.dʛfUc:jGyxG-y%!Ks7U:v'K)f^6e %/HVe-[ruT!Z]Ҕ$oj\̗v&Z]zߦV!]7XTcs))Kl"iP9ՙ6qZc۵ ~>?"xcDe?Y5KK5nTG;^=`sUh_M;IA*❶lU$)}5iJ;hn]dIՉ x|)P'knyY\f}nR.%vLjO"wuylÓ)׶Ÿ&הuS'~[Us.Mj^u0mS"lUթ2ʧz8.dFzջQ;h[Z>IxY6VVcʯ,5Oq'Mb7M[}es!.š;Q GzDע3Yx:&1 "ꦍn/5s5e=Z_<=㳮nJm:7ٗnF鍧IrY],'*$)yw!=o _wխVycS EiJgxKo#Lפ3*UkX}]M3Ћ{u+ܫf|ݴS/蓮:QZ<}s\Εw?峛nwՆ\EՌfJ*YnECTIu?j [9xϔ.||]ׇGץ_v#!Iud}q.Rnn> 4~ %u vsj#m5CTtZK;)_OR_fZLyC<2=RQ.Lw,{syZ钕9YhVNe$ӾsO9Veѯ1UA"ĒYw))~&ܽcMQ+ՄҤzR3ܺLHr2c#$}%w=k-AL>O6Y-JC vT\ʠdhOsWo'\KŧuW32{~UŷITNY[kkʪZNEpeIu?,|ATRͽGdO%i*y<=ieUNIHyKIuzR=k,5bk3biZgW.7u.Fܩ-hjyؙᛃ/fYr&!&]VWKvѼYllN>j9oRd֣NQ$XU=z|iG#C*T,)*zN Z 9Hɰ~Ct\cX"00/FM]%)6~x#tG#\ūk'AMz~}Ot'qw+o\|2Z&M1yDžvxM2}u+iI72릷S YYޞZ&Z*ݜR=HGylnAl ^M:[MM2|r iRqTؖ"\B_Ζ5Oje85^qr7o5k/Cgm)Jl5͗=8eEMT542b'n-/Vy%>ZK43C^^|gSTIh5s,/ZgdRM7~&=l ˧.ʚd(\rU5ZY\;G6.J;nR vweQƮ"5!d;g{:#):+޽6w!(+kҦnRݵD,;.]jZ{tFr^Uli*muWbcVV7f-:7W\oy2SZ>pGSghwwXI!'*ixm.T22`qnw.=V^R PG]y/՚tUã҅;FL̀oYU;3D?ѴW{{uWjE[ZzxkSUˏp{i5x*D;W+ hOzZӬp56tDy&S}2V%:ceUsOgiɷj-~v4\[-jn=Ѧ_PK\._h-Ob9B\r^ɼLJL=PtdCA}.jaMfsiLk|5L#̴SJOȃW&R$uSOiOg,ZMriw/sڳEGGV\cl¼#]ҩnKn.lTdXhb$#Z۳ZhKds+OMEyZ9:)a]k^g03~ʙ>Hfk4W]e9TӭáũCZ";ZCҵΝ%T⥿$oV7sjMqsri9DeqU)m ʿ; }Z]-%RZz.\453,FYyM+z31w}E4Wb9qnƊZ{Tz.5ӆc(wɦ8ihǺC[{Ͳb{hi&έZmKcXIrON4-*E?Oߩ]UL弖hwFcK+}>;}?=>zR"21ڍg][;$׎4o\r}|U[νy»Ά7̳Ќ.MGjsWz_]y hv4SYʺi2BNO:;~%UnZ^کݙcufi[v>,)7W_.{ͺ-]uΨqndmODڱCvdB-G)-YN+uk6zЦ4C#4줯=fXV;ivWfɲ3;;&mU{}c-y\Ɇ2?ҝ*үEs=MU%ReЋLv/5~NW.+i%-*TS\:$u6+ՕjZw-w|7zL4˦Y*}AK]bݸ:8<{wnjlKkt_tR})yw]-(lun_tN2yvYOk9ͧvO\J>=r)KU}Tx  0a`DP"<4DLXP$0  P-kVVZjݏ&U~vV-LƪnV2Xixi +_)D[9nVR {B!R-mՙTC$e̼'i1zxiKMnb 5Z!yuіu"-]}]nQmFFyxW%D[Rocx{HXV"Mwg.eUSiTK,M,u 1QJ=6 +]5o3+Ûͭm˶C3\hn}[:Y.gƯn2 HJ{lwJR4ӡ*_S4jjL8*Ki#=Qu~xbW˦?;RPͫܭ*M +-^wzUoUt4YRD+2UanKz,HL7IhXJHX5j7T.ohWow; U:T6]RSu,}w\ӸjϊVrh*vN$M^x/ιt\Q֍%jGV*wq/1Ӿg7eU9o)J8V5mc%s bIoJh.x7,OU;"*M<}x%m%ţJ&HiHMEs嚫YVZC.^\gӬ/iilc?!gʢ'Vx/ݠp͜SW~;ʱM᪭zxkՅ/-,/EyS1\g,v7V=<Лxgxʭ+T+Yj*ghѭHqCe¥)ӊ_9[,f#n%as5յW[4UCK,%,\K,]Zx(U^ΦtOORSШUYm~V-! ?5HǴ;fVj3Kq2K]EH4{\x軺p,~̮:F^3Z>zsʇć\7~?@8TRݐsW~b7$e JSbxT| |8' L*L$ JX=Z[z :|MYK|SqDE@MZͯƷp.ypʒ5%-plQ@aÆumS"uS-~K3q'f#' s[9TVc`7c%‡;jb9gOss͹=Cl6{ ;9G?nFOE.3lkM$>Kf\|2#hVuj*XbV9ckįH*?B Y?i"=g<̈CK!U~@\!ςc&z E͚E49S>0R6"cXę9@P>?2$XlTLQ7*>+ AwLRĵL_4MdPTK=:D;hW9wVlRS)q=X^No#'=>1TbV +ʤ66{HZoH3.΅Ҳeaz 1 K"8^Vp*!ݻө /Er.'TrLVZh?LC6ܲ5UG"faIQϻm"lNH>@gJt)`H8A'bd-@uGBVH +8@:Kuw|4Xuӷ&=n/Ze{,(nzgږD8JwK9aO۳r=55ئTT$<9 C&A`$Y],?7W4f$_>( è*9yN? +~#l[uX# HD&Z9f 7BA319 7 +kwU=0j3O@ĂѱU "f})b -IoPPx^A!py[t=Uj *Z~aL& /r+Ę;ȡ`=&M{.¿4* deS̈́I,ߥ_{OIߦ0qŅϖYpm[*0XjSS;+׎_D5|fUцE4S0צ,.[JB8D4Wwݹ`uw>m|Lh|0.}icҵZ}h(Gdj [ ?:|)iE8X`zq+/Rk2!UA8ŶwL}۠i~x=8w#4 _n $&uJAB; ¾~[㥄$ s2 +mgztg.O!Ӽ7yiөݾczeH9x?۾tH(g=oe&( -FXKiA9:b'Yd`Q _~V GUCTwĄ$qn7KbAC zx VlԺ z m2-EԍY7$^sjPX ?WCޢ6 +Ǣ1JyY =jj44NLHU< LгnC?>K * ,_Z'ֲaE@N:~2`S9Jݏ]&|sISh_ X/xHM[YN)qCI+),A-vuD1tkq "OP`>:˳v>uaZ"tN-v;\>I_!k{JSoj%}yCG-]tOvL=><׍`] w2|ܭ&̍/+ 4P>e \pJy xX+o߾ ,G` l+=Evݵa&]HY*/ʓYMӕsD_tR2H"#"@Y-{ eG e1*N {{w+9)] Tjxz~#F%!y=XITy9%dFr.uQ_` R;&Y(IO+u>5ܖ)e >;K)yo +wfB 3IP, P-\RS`6j !\w) mbAQcW=TF +!Y* %;ʐll'\FywEV${RNdptt;tK٢7@'! 'u* 11gq%={9QuVE}yN  +`0fS--zq:mC_ +p;5\ˌX/!( c.6͚sOLz owbNny(Ӂ3? 5p 6BN Nj[Ecf gLr'/IN!`ޮb6VvzS+6 +l$#Oba掃uS!ݜ,(wWN\Q摬fpټ 6qRW/'@r@;vK,JU <31 +B(6擃393z- 6-lIbp C4(54wiHo}/ b.w z8,{ il|D~1lD( + 7+1@DiAǗZyU%2Y&fbaM]:<>)Pjo.{+~Dbx LaZ28jŒ'wYTUۢWM®g6עTaK8aD$o,t#QE Y%3HӾb窉+"Z|A0eK38O5薩п`0a 6b'ai0F?fp"z Qhib$ƆItňʂQ]iTreN8A6J{ Qf$ +JqLPpQwbPO_o9 Wb}Ja8r-]=;z4 h6&K àSU6xoŕ\|ۣ%u0;_GnyM0ɁaWuBVe6qF9HuS$ umQd|Z?I{HU%e.?|G!Y:ZEY^VR9jgB:בq?wE6)곕[U~UđJQ&oی-y-: ަG~@[9qHCn%oBRoUb0ثSb{C#jp3%}~ܚZ2s<\NrZFW׆;:{H3,e9 k >+y0UΔx4Nv\B P0㭱h74~hV }Rԕdh._.bP hQI YZ -=ȜquFYQp_Ú0dM` +iVv4in\)~&k=v.0smMO{xkDK)_w`ڕWBb5OfžNj$:vRBpڞd&M~ W%@@*8KK{YWgQw5j!_3ª2 xvͥ@%.kw_5h1- *m}(J?oxIKMUt6UɕmNogX.򹂋ҟ=Tm/CQntXfòRS_WXrz9잾/C3NR#9;7<]ZAbOn l|n&$* Lwj82!L9 410-۴ƂV/fVǶ_8%W*I 5C"ܤ31Lb犛,Ha?og@WS61Kỵ@%>$84 q+ų])$Jb9B5uOSb¦X;i0!~w$')qs px +kZh>Qt24+guv|!Σ X ̸Aت s!^OIC05ğdzbHH,9(1jKd-c&_(oIIWOVc >e42 43&QìWCojZ*PRwGU$QBuӵV\&.ЇJu +|":M`ƸjÚc,1qxK=gˬw2`? + J} ~'Rznh #OduA ('Η5tK +>ɵfg=v9OL1wFK)%khky Rߐ;a:1+wF)S>=|ɴ?CIYX)6Qt)SټǞ#[àqrDk>.@7dG~ZNO" PlŃtStvs?h^=7[.i6i +* qiVcvw Cͣ$Ä,hAxycOGN˸^P00. O3͵ᄣuJti0 +8 SS;@O& ‚č>aYڧ\y;-M +9JL my!x̕Z6 VۆY:k@Zb _l(z=$^-a%6)ʟ=gT"W0HGi(qt<ͦU`.xrP^|~5,=^D9)ܴmT#|U4ViX|Y瓒/G8W&VF!5lhse2`m׵oϑP鼵1€)2nU&.vGi  B'CJ Q`*…?24B(x!m<îQDUC='5JCTvp($s%cY0TeP` (DExW\~MśGњ-uP(l)*%d?r =;eSU{Wh:\S_6،yoń +NLFN^pC~/0|Y1vJmߗ;f]o3-ak8씩:Xv +~ +*Ir6IXE$*&,Ut#c*4a}u|{B2D/*|H';3oJgN8q/6QhsÀ + +Zy[sL(9O*fL "z$[X0۱A(o&^oj&⫑j}gOP#{y26;`+k,0͙98< +yǎM{2J`т I|'cyk5_>t/RBJ\ wU &Q#O] |V[vbޒue4 +B!R&(yOe HjPQ $to %) ~JPw+2 Cg^EX:$3,} YdtHP.,ïBz, + +*4قH!bBvEHxˎ\j?"'Ha .W"~0g %|~w)rJZ˽ޗWQJW7) %^}^ +"*2¨&MX_ESJ-#O.{c<븀81%y{4 +=kd[oN'goj wQh8S1r!;'Gfu))rqP"'NŅzTiNwۇ,(w6,F?BPS^R}@Aut PkdDQ*@VS$Tv6;B-nɜUUz?8 +P.m+Vӝ}KB[2`UH_F'wK}M<:n p; e5ba_ңRσ'x&5ҭeLS A>HȞ} 1нթQOlz:3ϘהfO&6C7M4vjeRtR ?a IJ؏ {l7Pپ=MOeYU@Lܨzepj'AhD-KX4 Ժ[?Cwl<|m'KGOC)Cy*M+!,FɪLԻnxoA"WqRChp d}Twj*'6(Fe""MP-wq"*Q7 {rT(_' ʄMM+{R_ Jвma;+^q#amykAl 3KӲ(8ܴ|Q v; m H%0y Ũ+64-PbRăBg""ps-x$7c_#w'-00eFv4>ב*(fY͕୛"Ad[*v&/R;4a*T M(`qd'rGOcqB* [&l} zE[;BYtM.ZTmdJnto)<@K)VަVT~eUp楪mޔX"uI!IJW0XҺ VNǴ4M*VVXaZT~/ε" ʦMyt77*qXSdo$O8!uŠ˨(H1[Ad2Kբy> k+a>ܡP%6-#T h=u@bYWWׂs*3,= @^ĕ0^U[^p$ͮDʒ 0x ̋ +5QE^ DUg' !)͠C@A*@j#9WeBv6hg8?|a\xjFJnʌG6$AFۆaPAD"!>`Ǣ,AoQt@;DYbD@pVEL<ĚV,l!JVTYlC( }NFC("C DB-۴Bd&9؄T&+I7-Ɏn;du|c)WSkaJf2-5=uPI;kw NvD+<T ^*,D0$D2 աvfT"p ,a/[|0lSAYfRĚ32d4cK_Ά<z0scN"Y1`Z ~.17ܧ %+ҟ9C(J$^(s1\ǫowB2o6@ +y7}Ym)p=i8e[^'ڦܥ۳6ƬEVh_`G& + xuH25Zm;u5/+OwY"6r9*'>jCΣ4I\Gہ;WT+ ?<)Iy(% Ȩ'{ rχpc<=q}n#J;nIɒଣ8z \f7+_lA֤ Mx~4?kP + &2\ +6{a]]QjGr+kTrDk$I%b6wBp]i.Xx]F*RTY`EL*ȢAٳ-~6Bz^R߃MmUPl$>| 53D@ /AD=p U|E?e&뭃6xcK\F#o2zK˸odkhkYYR|dҼ0o_UƸl=5d-+NUՓJ`!3픙cbW&`ۼ/uKc4E+Y,_5K*X{: +AZU;RU8EtSӚ e~eY c"0a轊UDžmnѦ+"uv˧]PgfQnQ)놑]Dwu8؆1l->[XW[cUgtӸ=EĈyCkz8P^Ȯ;Ls[{z=K|aN +zjwg +~o9їQ*rr '7Wy"߫ol.0c%dE +D'mdj^ 3ůfª|S +Ц®$Sl`腑0.p[j`|~xи'Zr%Ġ\Ls_⭴@<vL!^l4]:>;qE^pzx / Il7 ZKd㓁>"# Go둠Qºk ؔ& Mk&=|2E.]~-Q$<0Yy2_h ax;, 5䕽jc{_𨕙H›Dm`DT'rJ|'"FA)TWϫ]Ut*ԹwNM:ԝ>U0'ㅠxW:fS叏JX;X|<ݙ1)>I7(&=,˥_6BT-7^a$սE'TUWnNe #g-OcDDH3*p ?cΣ4~Dv_UoBf;1Bw:|aXzb OWSW'[kGOg+u`nvưxdLDžŒli}A.~+.P^ +ſ bhX!TGh3@.!#kO- zY@ ',$͈p5o&vʅM0> +FMc;./8 Am"iD7sl>R0*=s9]dPU!t_]65@05Z9~Ƨӏ'(6뀬mfCf؄2Hݑx[0/|A̴[׆ +Oa:v/jX!DQ;|%㾕},wl{SkH;1F 3cВ7vY"hu܆gFOn1b{ ݧL,%\uvBpsXM/ 6ؒn3ዧLX(G$XΪ"c@1 \"IsMiFCa܊ܮŝBgM{UsHAWU\~Dg"B5 G?LLT +cN%%cljmlFSйf)%'Y|8ɼq.ڗK$}0- ]\_,\/!Fw:o;lp:>1Ox!d},.3 |UpD,#*ʼo +='lK+ nX!ie}{']* +IIm +OwǬ;Q^p Ha,]+8KeNq%UPct"2[omM"ghd2rW Y|u%$O>87l 'b+3-RfsݣDQ]ߢ\9܊u(E -;hش ;zd.w_~-Z)QPtI#F3kw]q6T٪Icqa1/cUwC_JTK2?ݤҎKi'uT|P#uqe&w3lUCFH:K*gS#8ܤ 'xo^#z+V';f\*xМK-C33gZyTKmwDg昻iIa9fL!Y" jDpemd]r{65iL;ˊ$ZYيZ'F2f Yr๮ONH~g_牠mF[dhrj( 46 kA!2U44#*jwVUm+f3/+ٕ uPacRk`pZRErYiWdI @]ҨM+ .-(BY[aQa۪NI:'pgk uֵ-QٲsSj&]j%{QTґEÙXla- e(#;pqD$@=]"iY{y<$Hw$yx`;z^mqaf}ֆ'ĖCv[YO0$L"_U]&#K[%@qrvn5'.>"z枒r }5@F\يj\ ,v'+MOIK+JRfU"CsODZ03$ +JxLsMHN5JP[0p +UOFAtHi:&dKnhqo'LJEÿ:t]'ld͐'7 +qS_ ٝܧvUKhbKϙ}( i>:⩻Iu4[}i|;=7Weyh nFaA#\)NoAu?WT戄qXo!|;UFs5_ ^W;ymP77μ[Kv>X!77RslT3~oT;bvݵt":trCXfıVlCÛ  Eڟ*p^cW;T`RLl8NT 'ޖ9& /%S;1G$Tf]saj,e^#PgzE qW"VT]?Q%P$)TP9,F~O/0S׏;4ݰHM^"B3߀7a`wVZ5&,A6"n$ʝ7sVN[SkVbQqc. KK{'.dFf漸 ba(htr~l< +M}Ϛ~ha'a6G`[9LJJ?~-!L-h}՜/ͭBL)@ +FZ0\:Bk i=MJmݙG(bWVKGOL-AQFS`QF[X_oopXMX42nC?>>mE=A5=yN]Y|vP\2܆GW3~jԛl?B}F&s59qͼYKAQ=#"TMh.ԞL;mv7UviPz· qj/3撻Qme=ZnCF쀕8qIPVG֝ap5ŃKУ%zKt-7W-lp  HS,gFPS&|ϫ]tE.L.Ν )o>d.S5>|@͌AՅN !X9>/˭ܾSh4HLX%İ(ÎUL(0T^A{-̝@ ybON洩sMX<@$^ H/~y?_zEY"!ߢJX/KSbN! XUX@݃ŲxVXsX<ֿ +bb + qADrX`. 62Lh4o븀,M.UB0fK=>.[hOL~&@ t:Nߴ}~3K{;m*03}0Pu_YD +d<>6ai-}eBX;L[oٸ+h|D>㑄^m|EeXQG )8_0-"7(wB{> 7!9>C7F=i|ӵ3di_ BD6 tv'mABipɾred4 U{\?CpQMp@pJsceͬnHE-;8xC27H5 Y@J9!ƆZmp|=7yO˒cGڰvwQg`AQ=p_d8v^XƵ#?ZN 3`ys%"EҒ#fL@Qːm# y_ۨnz.5?'E[ g  ssYGTR5p'|CƗ#`мQ#$ra,Ģ#yvw(c̱# 6+Ro¬_"e L ri 9ƀUI/cCsxeMO{ZM9.5څE`N1@ f +0wvTb_̀`?cnRrRB_R0*/}D]>1?ferNDwߞoN113l=UCRZJQ63"R/.=њ'`(l29ku~EnnA^ F[ze9[J;؈= Wܒ y>I#oQ ܍qƞ_- [n>@:;*4 +;;~( M45g%7a2؛qI[_F0vl'BgնvA,&l1Q#LP/Qs.o ΧKRqS9J2I$ D{INo6!ɺr{DG#=ް#QRyRse@BӬPdo!+>Gu'(/@]]@n!\Ar['b.fC#MM6fG,Tu-쒚c? mQg`r^1 Xi9VU2'Br΅l)%.9(Opk0gk\Pk? wozQKj}S -8Fݸ3>\\8KnÑHk&pmV`X. WsVv)ַ|lo1aax›]I'`\ݓ&,=B8ũˮ+]oqp2m9>2$B:\h=s:;m$*HEEanJ/ꊶ_xD i7^Bд5߻ +#1/*ƸE|j\FR"/b`M ];yݡEs'; + h,[CIQ*̼".nr.X V7~%f`XGQVZIn A5S-#hMs-/jUd7NHһv{űHm3Q/#k*V3nHF j` X皣dpm鄁s.~aX5}V]C +~:-o%&tsvʯ+iR7)h @T]32o ]Hq؄V(4Z}@GDHeJ41e_Pma¸r9/jD+Tao㡇h+"HˈchUy%^^,tk>8- ̰7zPQFw dUJδT (y@~d_N"&53z_}1}2$~_Rю43ٮ,pͬOfk~m2I7\L@஥:rh9!J=}~T [hU{Lkya\n||؎iuj{9#kR#&Ǎ;Ж1g #l`j :#fP'|A%ʅp : Xa1=c@9 JP AM)VA҉1]5<L޳HGP2Üvf+ϥ5z]}쁽xY!{WN5cX$1v<ºAW-H$ +97[On,1o>WoC;cɤkMPj&X3qk{$IUnꕗoքu52^``^#ci +gڅ$/ 6d2/<4BCi4&c$$P!5nܷEr7-H9my%0'Ŧ'GhZXiw/->y5iۖ)eހi`VZ{ h(S}F1Y6ǰԤUߍ[l[ >`5HWW .Ў]D^>(})>JI r %;]*՚rHO<cߘ*]e!^cz +- r5~%Ջ&etjB x$ N%3n4z<:RrH,D1H-;cmm&?Bt4P2Y`,KCG ܯ>ľXIgM`/@V?U+{ȇLUp]WbTj zWR(Js+-aXX!iNcvs{) }+fU_-՞/c5'?ְh ) (8$(aژAl*ZQ g?\hJ%`[SUAF:?BVpIB=N v'qFJRI""gW/+Udh?!%Q%S5UPtrOc +3c]crb'Vx*wvΔOٌF$\U(^B2]Q$,²cW2lnC-HDD&Cތ!AؤoV!FΗ8/&,P\'*O ܼ= fa6ed)FFbjb;+Hȃ US:QhS@DB$-BUeNE,_pWp\26&x*j&8hnM6)ؘ׋jsnN +Č󽝇.P 5fyabon̽;2E#r3=bHb26nٱafgބeuBuyna=xs"hN5Ҕ>})3{f'!bָy̬Q+xEeP!#aJy1+5f8֜R&iaF#-_lȎꂿDM kU?Hd*6\};mvA2W)L NfzhfCTHWEq]Lr*n(XƳ59/tØP\3*2.ZقDyl&fahDZ*{^UG A14m~ryv= u!ST ]өn8k oBqs{^t:*͘CWQ\;ct,-fo^?~O|\  Qrm'j=Sz~,ʣlO0.ԜǓY3&$s&tkظ+dF7+V b6"d8s m6nqm: +cȋfnFZuK:LzIL mD' ⋈H"%ITNo q)3ܺjСƶreѯFyc;u=N*H2_5(Qj(ZrVފ9ᢒ %aG3OSԈZ"&#ިGj]yBAل5 39^̼]"hľZ樑l8Cgѽ9ѻolA!42U԰f +wm.W9%|$e,m}۲ƁYLZ'OmJHܱBH(Z gnmBL#V)-XBD?M| |w*߈aqcD!t*qJSb;틝Нe6QiDirOz*Otc] ;T@i/e/K(bxy"Fa +{FN5?]"/^*)$I?yHHb1S^2/"-Ɠ]mdN7Wapb&e4X!qj۷(EDPƤtJBjZCfa)~8CyvIhTxyTiO%3߮.a N&g1rJȀ4$%)m'{GЭhGJbc)Q?w 0}HME u4~ +1b7j +'A +|M-%*R./{3مZָͩ\Jy1J hW65XDx"Aj98=t9oҗN{?}۴5hVx1VIJZ҄94 ÓΕ1tf#H' EX dӗW݅fBFowu9^3Mr,"F9SZbePT0"ˀTThf +' +'Tex\nT#RP*@i$iFhčIa#hм!`hZ|Y<橎;1qIpH +sNř ƛakÊ@e-CG(>,rڌ~ +0ׄ;yͼ0}Ӈ;$ÿKZ;\?3hFz#^7Kw!^&eH&p c˜B:LԄ[ʲMжi%5ԁ4L 8&+Ŏ@A< Ha\r AZ*T3* y6LƜʁm ;ėה3 bv,*1,kح@L)JVUR4m:ԡ:1I &ga.S1RRca3,e j[um2 NeɱcN(K9-2^X[zTe%_Ih Lw_FOӂJ-?0 @A.u2xCwS!Jc: I-l6/g(R11MeІg>Q3C3.W#tBe fUϨ92E`eT`N JYhR. Jh+rٟQB3LEU2**C!!!:AY˔5AB$HH;Ad" +xPG(EH2 v,E# F㓘e*c:5# c)8@ F%T,.!߿2WmБVЭ[@jLx)Tc"DžȖAi/D*R^^bL8&zaL)T) c8Jd+C\u5.QGD +!)]&PJe`0' +AU  `#!#)ClO$P`+0%AjpR"e*@A+ gh՞hQ{ɃNk4,W߾f`2=.L$F0|b&÷ F@'+4NK8n~ ̛9JxAo&m$uk2F m]fjq<%n}\:a%[~t5@G85!U|vT&uy?'}P؇M k,8{Gm\uy#d.(D\3S<ƚՔF}=]|FpTx&m=Re) +ah(.D6HIr'\D"YҰON 9D,3l˭w +hfUI)l#+srRC!Va`~~3-AzpV{I{;kVy q CI*"s/So9$WIDŽhvٷjڹ6f/ xz&zY[=RkT^w՝)GS&#LJ&6ڛgY5u{W̯" ;d7uȝ)A[#pGrĶYԈ4YoutaZ,'a6i%#T_^vzdeGb,:4;qdKy8ɳՏ>[iT%Q|L0#/i$WIHi61e%2Oi +ytq +8y:ۛ4=~|Jz]X +a!e)׮% #~i::M[-XmScmVxؖ-iJdnt R )(Ldd<.[^@"/q:HU-z(R[;4zyV^iTOiF`960e':?77:Ӷd=P15i6/qq{6Vue{-y0BRޡ^WSOfuJ,` ]%[G!3h|(#\,S/`v'kz +󐚔FUp0A=arTJ" ?:M(qj'\C.m[IC0Jc6M?|i3<[_G..67Sk !j-R%9p4 ㈴*aQJd P ?d*ehZBKa8Y]D(@k-EbyeMvKNR3"UK9zY ͞fxSGځWl *Sx@Z/DŽ2@ؚALE[ဏ`o'Pň7b>ƝT +A(>l퉛95js2uy G tT;AJ1Έ6Wd߳nDE$6= h0)p߅Ć-_*CQY8ӓQcaْqw 1~nܡB˒M.)u[!:j*DպS +伶Cr$y-7lS̙])92Ibv;ms! gY-?S>) +v+!*K |> +݊r1kz24PEnuC%(Cjg +o[ҫh +>mP3!iX,Тŧ.r͉|Nz&8ekGk68˔mM@ː#ZC)g! &#FMm;=a|K:ވ2ැĀ%SqHqXA@"ޕL_Ak1/Fh)z dgH +^(<u93${_oRvdox 6%Fʇh؍yw $*2i(VV@^^5/8MСN-0p? # 6ls %\ҚXvͯ'luwޘCwh붠$[y wI~˜KSh .h*da{D$@D5ɰWnЖ׿̅nژZ5npꫠ0Q`ƸWǶن ]=Ł``{\x%VGl앏jRW(2If.EgUɜܓD +0,9;YL;,gP? j *G}IeOp0E$D|/,%ލb|Fw>9R/,+0 +-;O؊]KG2:'W0څz@V2X>Qɟ'§({# 5Y'Llc-,$"X t|){JcND5!xgy DdZxU$c]+q5[Mq:P}3}ȓ3 dǟ TjbOPY<ا@ x~])M$angrhP%.NK]xEs[^}}mz.A/G֖N^E/uP)Eaϳ!9̱s )_8X./}Є } +ԕ.G |zq_E(4qwhs6f̄a2Ҙ o Dm1Ճ2CDНHG0ƻkqb5#C~=݁L9@X5&io: טTIy$2 (rAkL @DZ8Fk3abI"&E(#L[*$E>oaH@FgDOFlGu`RGP L K?$4$`$n7$!/*uș\"$%FQB2)oW )o ,!K%_.!I-!`b eIAeX"%5+Z6qV{J@URNP% QI7 Dh}R"'s,N޸L +JZ@]O$IH= +F9zRsIbk$[R @q]j +1RmG%| +$>IDmI"Qub$\*z$xPJ4zfn0b D$yVR}X+[1"!ثHxDbWH %ća1aH؊c OMY@H=3Edy0ԃ<'-G*>"Z =bZkayl!-tJ*-;[H#b )U.Ș#.υ8bkhN{]p]lF9/xU./s^xF瑣Aw/ޟea+>/L5.v"")U0d#Tb$qF,00#EN`ËbE01q]T1^Z$۝Y$;cHE(3+bE Sd>EM2TK $BXEd[HN-C'"DF2Pi"^d LDF3+#DՠDH!jЫhh!" k D^ ?HiCbzH^!A u 6ąq3ސamxe4m`C eYX"Cqbtm~!úo^Fvļ֖@4)ݨ;)d|jЭ88LI#&8d!@BTGt|wAhnnxu䨛P 5B  aÚ悘19D }'H֏iK+D`C#':r |^ǚec,젿zq ܱ Y +J <@  *wAUPA%wk|lRK|< @pDpy@{Ã(ǎ!j0L}sA (A&c?2`^=;9! kd 7.gN{tAqzQ#Va^#삈\=@[)SABxR8Q "鑅!$σD_灋KTSW<(%7!<(A1۫Q<,F#ǃ{dyaVE C .k~ 2l5 F | )YX2c3 K"W M4lR>P#mF` & ҙژS+m0mp8\ < 0d( B-L6H FB0]czט<;k{ !ȎX)v5td'_AW'8Q$ 54OOix 5 +!,ab4 'pB#:"h҅j4§gh, 8}H!4" n?33;Ȟab3_;PH3ND Т$Dی5CjŠ!GR1KEzWff2-CQ2z FD^cVa)#L 3bd8L#WLkDBF-]$#J baǸ$1i71͏~SY 4F> bH@c) =$W DbN D1ڒD8b4uIyj㠙Du$20$HWPaXd1M`LJQ8FWQ Y ! +Jt wQ"8QPBPJ$ D=~уJ)B*_Q^8N%^(^o8q'$o^’EM%*& SEp<){Oo +|;%51IL1P` +E07A])pTJ(9):]($%vC,RQh6"QpQExQc}66 +^EQLE(zHPXBR2YF +(W)@OKPpfB?qۘ> x) dS8:a-m hթOYMa>OSp) CE`2FЬ^T2UDN&<'h-7Ĝ*˄dUѓL֍s)11A $DT[Eb/UZ"(mUd G^ {+wz(2rDx)!lAl(!{d!\XȁFeE{ae=#@.+.2bV3)BSVwZp!e@ )R$ŊNXǚ +VSP:'X)Iɍ#A2Hp%M$TB"1aE_`& HITew^EB!8*pD|ګFUK# Έg;qD'^"߳h*Bed*P3Zˉ}U^" $B"ȑ)"H6XE1BdJ~U7D4h5D Zz Q7QUe zU>b!*SbƫDFb+X?T@ThbOV +dZ"D܊ W&H zjJKWF_wEL + +I"az_7!IP2T$N `Ht9ghRaN-ղ{>q-` oAW(i˝ѶH<[ A"z=[-\ءE#8㢎y"ݡ a.là H:z,zq߿B;iwTi"Exv0.^rh&ۼ` }^੽l\bU:_l0{9X$* zx3_~0#π`@,IM#qP^0`G8`0 0{Tl ;o0HTo0<r3ynp݈7Ƚ%m0*fؠRpc1nц^C5 cܙ sC6a"y-5 1UWHY !ǑQE1dD6 +&SDTdZGFCRF@KeV$m 633 22sjfd v4#efV A07utf(23@KхQЇ$h.T T ihL &hHw,F#cG,4;F`p z1 ui|ۦӼYL^HQT/15^[H/.SNBK?=LC ]4Fe\Y8uHoټF=n4 ~mADZ @rBj;l: *e7l cAm7m|oUت6FwymƁgm A+Hy\93?ōR Yʍl'S*^^7g׍TQ]*H7F7\~O)(7jSoW +#rWZ5Kf0LD= +%8z((I8h r* (? 2`dqs8;_H:9?IaH`t#Qi6ŕc_BPrE"̄`ȄaB ʑ%Yt 2Z„-]p?Pe&Ad`I=0bh$<<"A0 9?c5g#Q#-9BѵsPx@g`$t"8-acٮ69LVg|:Q#q":ڰ3z #Yi uh@dԾ f] uPEpFi:2S)>@dnnSO}0H}`fCzڱbd}nduAz(cQ|43=|5?pUYB=0}}\Ue{@ȥ G@Xt**il +x ۃ[.РefmDQ9ؗep^PS"8 9$84 K=#8Aa @.FRy5{-CA6#nEp.xD"R6RB~U"c;}$m6\Y5l(-qQzekV-HbZ^9PKԧ_M8DBgDfttA4 M!c94`R +sx'R3 \&}?G< ;@ĭw$,>c3" V7Wh ֘$V{ce-j,rhB%CU g[]@r)ɤ޻ [* "sq09/)p\P9 Ẁ}{wPla ӂ$R@OEx`+,H^J7>mƂvNň@fh3f1CaofJPa\C¬U`3! + SVΦ.T /.YD'hq{)>r1F+axƌϑ6 &F<#Fz۲D? 5[´N˫acy)'ZDRO ޢW;UZ!'6v:F2 *X,+C&PWsLDޢ z{]i O{qjPO[/Ajh_門$,J UzK _ +8 /'B% h։p'w|bP ʉq{ H{ `#u#ʺY.0SipF"@lއTzR x irP;Ǯ1FuN[[?pفzgk|B8Tr$LxB vDŽ( cq#hhEfkр}]9gU&Dn ⩸Lq[G:5ʹݻhOEq tGD0 Dv_)ʀ nXH <|21o/bdL+a`7##tz 80Xt_@wyBA(L!0y'jj H(4m%J$icJ1% lvnxҮ́@UjchD9/e K$@H+NxR ZWh$N|l3b0PoAw3ģ0Bs榜WV0ˉeZu (?MH6@ < [0''Os[/B lU^n=;R:0~(GFM|# DYDdЭ 9e^^8KG!0qy 0U!.&MS,w5A\NfwJF`kX,:`vz"9sq+ tހ+8 pE V-?""A!@bYx 5xfhxc+ +BL/-?T/@bA5\zg'HSgHinsӽ.zT@PDSvZ +O\Uwo"M&ྌ%e s nl.JP- C +sx<4&04Zj V'YN% Q'xƬG]!x*[8@:ko-sjxb"A>h + 62@qxZ A6 ̺+ "VRN +P|4\ 匵'7rC) faų+99-p  E""PTW\8:PШ3Wh֌ӚUCq=ܸWگPب. EY4T_@z%pJ@`X 6?P#'F!`4J^\UfE +8ńe`c(,@|8mK + n)f^ + +o8?0)^OĊcp x6R^ջΏ:ε~1:|^>^"|FЕ +K-gD8xJ`@x /0~'F8fQK/*)şZbz6' z*(ʇroK]Xt=JE,~A92%ٻ#h?U<$ff3)l' +o ^SⓎVYsȓ3 +AC?jT|\?ʅIU3.u{EXnLmڪZ?<O !˯7l;l_(Y)mq~h|8d~`{)XƟO ZOJ9fW:&ßib#1ME.̈pׅCM$-ُ[\Q|s%3B}vyjUco+"I }U $F)F(hZVp qHf훙' i@Z~żpdc}^]H=/{ʽ\0x׿'f`Y6YP-/K!Qtq2'`;A[KE=Js[l{TV-!qRQ +z~_ն2 PK?K+;뇱^*ROkaeGįqU1w }w< +tsmoen!}̾S.<]sk Wro>P;sC=bP 0s\UHR6ǜ?ߤ[7bQ|ÒĮ Qv- +)5|3ODCoFt; O] \_69:P9`Da|ބlF;̠C1Х濭Glqhdj>2ܓW1#L?`i>nКd*4b|jl`hS`H$OXJ 62wU +^@ǵs77FA|'ow)<ڶE>R6 \Vʊ6z?HK8c:1K\&Z}>CJjVxi"- βyQ=2>dM_$& {MpV甲}L~3K4n5 Ѳ2Bԩ3o @dB`;:j:D:G]i.?{}{Z+(cf\3-FȭV'WMǝ){j?vKx.aRW2䏯xMyJ)Ո|w["SRaCy+ =حP ^\zyXF y CO_Ù%`+f[gzY7<}>j~7ҨOcFP!D K T*y: +;gsX⪨ cҳ.Z'3z0LcDZ>yO _~[R"$d@7 +b.䷪z`]ʡC߀KÄހD)oFj(9 +葹Ox"=O 8$44XqKC5rRd +V='NL&Ss>u]!xdnrl{£9MvI <46%׼{-=1O8cO )-(dM<~൅ޤ r 8Ŗw\1߬<7} Y xV^1.W퉁KoFyIHYZO$RGR'>U=)I+loümGbL{Z`?`|M}nW½dzaGq1!ᲁŷe#*Eu|mZ*.YuFG&#Cm&[:MdSR<^kA 'UA&Q1亗DuAowQ įp>jьxAIox"W|UTXS,9g ydDWFYTxH_ZngB̉J9xfE*_{|g*$Yr?ӇiV h `r ++W/a˙6J/!. ֿӸIio IiēLߙL>H~پ kB }'YԊBȃs6ܒݹ܉T(wke AUT?e\Q߃bz 0хX5i7yOPsKFyojndLp>Dz(2v_KP!3RF+st6}:\V3캗OUBpX[,oKft*ݹ*Ȩ|> `ܕz, +TOQ>lk=_I _=[Z½K[m7WhPpȷ ^tn<7kDwLmwl2腯]?vZ(2 5gQ{o%HӞX}r';'ex- n`8}:.cʉgkuHxv勉LUgbʛTS,UÓܛZ}k/{qm(ϳz+5V=RcQ*dfXe-"},h/ kv3zB[K +zgX `rtf\iMdUPr wϛ$`γlw!7ɏٶ3-+hLJDxV"c?JVO%sq =.z$3p1, JbK-;bKKUzJ:h]>OފNọ8GX Ia9+|ui +:΋&D=VvKODi[ +1 ^wXH x*&bw(B)WbutbG}$"s>8nx!axLcUi9\OA]sfoZ{j 'cqX0M')03G!t#hc%if.oJR(x_fxI(>O/\$'%L%ݩDe }A^i }Qz y^V99)z+_4 #D2pz!."G ?t %-eFQB$~x"_Uf]8ƜS tiLy*tʓ &ȫF]\%GZkJ,0uӗI*m%}':.bWE(Cb4@ (Эp|}ob@ K%TkR}Yl6NO&'@|07ɇfnNTbt6r7,M|Tw=c&$)-%Ӌ?C*}΄܂:-YYK9V7!̶=$3{:)@sAsWiL;񃯼Pu`1x.[3y+ÝWZLCΏc̙-1F& b:}D(93>:n#?c·8'oI!8oe̶!r30pz<D VTQͅKOUuid +=\ȑny [U3g3MӽsCakH+Ȼ"wK|@+QQ٥0/pkYg'UXdzw&V$1wGwEeŪup騩7Zn1&]3*r]oXjz VSsiPDj?XN$rO.Y(t>H!U(*u }Aeg"*OHq#[Iy)`3:ʃy/p*UɏQiP5|䪑~eܬu*:&L+.[G+(`n16O \,o?lq(r7A9cȝCKdwQ93cV*?9l`|+pٜ򾔯C". gf$BWχU~x]wHz~ܩ8.Q|M}j͏Gd"fo1?ޓ B9.М7vtZ45E~ط#?N>xE>\ΉC@^hŊN7 + y6`tT/%I' N+˥oiHU& +tξ ⷬ#'jXuN9+P#$>T-/ {Tqpa7\Du!&'p6s4txPrQKBAp7 ``@pi6gww]VǷluͤdN![אj7I_MӷUF  +U{wXξ"}ahЪ1oDΧзfmm хoj0>X VvE$;"GP{GIOao[ˎeS#;>[:Slaag,EuXy4|2Ȼ|{Gs`+(#ޡ~8њ +Qv}|ws+& RU%aw/cJҠfv?GQۓ?h7-vC2Tg>c _{M~sѺj}Uw8c,u; L^۹y*ͭxQ06,/,QhST^Rdԉ嶲!Ԥ[@H)6M$ i[\^[1j73tZqe'eĽuV 7Aܕ V[- r/H'?W6@cR~~5~7}FŠ#VIOaކ0 5Yt (Y?@ân;*BNۙimHXi"AAF*"0±myb\Qj;\IGmEI+[r{Ebl@lgnV$гƓN)Rh^zv^JU{{4e;d4<rP;(W Ct~yP;S@9'UrFc̟gmOTǾghڡ&*@{(vZ>p2 ƳQzv՘QtSPYdyYeAZKmn2l62Zt%gyR_Tko7leҤus'[.&r  , z> ;sH6coIpyhͲRyv㬖PUiY<3=ʚ۸YP= +Uco3lޟMCM =M+na:'J_,=jkԲ(S鰀MUhľ ΥS\:mh#x γf ߩ +endstream endobj 12 0 obj <>stream +0LGkXڤ;O*BTy*r^m._ \+#"FGbVE]$(361 @Mww:@f#N(/8Ӕ̷3Trk +G[;.!k Y:j-RiXYQnVAmgE9K<ʬw(eXG6Ӓ;lSd% vOpJҴD}Xk~b'<%xnwqVWJ +i)4:ǘ}'quNtx;QEj "mp r=44WmH_uLE$.6QZ:KJoc]~IVwMU;Ne<!{Ck15n/ U*yUmV*j9*V!GlJ=cJZ ߕ*$%ytWI[esq`-ži<>ŪXc}ݚufIO+iYS" +)jM@ՉG,j2a[˩[c'իsWbF>[;ؖk+Sέ#ڕPfBt&>gR?%M=˄[ +{,,b_/2]M:{u!UK +X\u0& 3`aڸ6Dt0Δl ڊ~S +}Æı*ڠǞZj K ȾT* y,]s~Uq+K7/sBSVeY&7 -zcIor99%>r$wy , T2W0U?(wĤ6S0QlLaerZ ]-;jCM*1N\fmɉRX+`+iv!\ٖ-϶\\xj+:5~;,v&F&sLxn n]d˟6ҙFI~o1< pb' |QpE2sqhN6Ξ!g(q!(17EdT"[4\ <__B{](vrOw.-_]#F=~a7eaD`;O[0_ܕj{wC). +xK5]^G鯎ɔeUe.FU "ݙHzԋf^2=\Ff ma! +F, !V|q8 |qIїOLWmt}!:_ho^1iD+q^~:OLjh KIk w@6s +X$^SE0 cN065xœq)Z@R..VpHw;e3Z}J_H' X`~;D,,Û ~3CO wsa*tXH\=<`q&$;"5l ^*;U]ZЉqDR 450Z&Z^pXC"z^ 8'Gh;2|gZ +Te-4JA3I8uo1yqK8*{dWmr^tH]tQݼޖz9{zA-qp2r|FfMYgc8_?JJO˺hpoVrbsibb- 9NNԔ 0dzYY9v2$?!l4nrl:(,oZr\NnR*LbR9ecJrR?a1<6V3 J+ǘ.o08 1%^1`2?,8jrPn@ +p(c(lōNe4#Q6{G61 ʶi~nc/2.sEiqqCWlc:/-m<#Mxւ!{O@û-5߫Cû{Suݤ@<$:i-^+"v= ')kq-i794xd0XqP6{yĢ0-mJ`8;/LL C +cQ*c%JXl>#MXtewXU7`< cw),$;&1ڝqXg1& + Z׺E^\,sv\Îq!_N̘PE+ŒAɤϥc<Ȩ1̸j'䍘q4FE7, +ȸV CC c̝D-B~D + +0;>/.文E%%-;c0VPS1p3^=d'_#6<^kjvPtw=_ǹ;X7 1@=N8N\E@#mLt +&(a1o F4Aj͢mhʭ%z8-{0ʻmO4d={<˵VU?QK^ \ioiFkb٨:ye#a9P54sGh>G!88txSv9]nW.GzO_v/lzw/N1dNU}~̲AR_L%/V-`~_(2vmŗ`6hneJ&xCWu *rc/5,ިE:zh&DCLƸ _|sCV/]J6ٸJ5ajt!F?^fgwv wϮ!f gPl^"4̌4=e#]-9R",bZ Vsx"3Q&ހngKv5 +~˰& ؉e3@?xff[nYЎ7*P/=)zG4S҇U?CA}  +A3Sнg[b 5)`% ͖`:&PcAJk'ÃoA P>l)Oк)";VJa0œv:_D1u6 2M{Т[wqfC!<}BG4b7LP\} z:Ag͚69'y4*i3ʪB 6&jBSE/tLAO3 N)Ȕ<R$& E ~p?(wvX-VnC_W*6t295mhow.".f`D?BB3F7t)(׬/7SVO)Z]gv.:HFYEkJߎz@k(}N~$1+M:$Q1eqz5Uc8zd{hOe'8͘ aJOd&>A݇s?La 'RK3Z_Qa7kv? ?T43:(t3fQSsiHS` X#d&k[!<+qE(19w[7$A:ݴ BOu]]GťC0h0B.!.!luِ¬kBtI^g . :F>Oh0m`H-fʬk>v7ƖXB&Bnu'imQIѦ#Hh]Zm pn/{w8PjaAu;Y' nق`Gen}^mQ'R)VmÑu/춌~ovp$bmAbf8-Qp!=}wi v + JsJu(;`>w`9NgTŇg GW3=3oá@Eߖхx%=}{N]$$G@{ɷKtʔ&ecmnegNw}) ͠SC'}ct o9p0xƷ//D7Im/_Uo|wmxX oGЭk.޾-Q8mtc&<ofx;3"mM^Q].PŧpZE nkl 9K'@$6<{pJ +? ,M5ˁn爟yn>t c_"mP͖nҬOo5߶gb!ڷ=% X3jm\~`m $٩]x8/+M ו_bF:e&$!6if[98 TbFA%oi&wqan*ju? Wf^"VfR5z)Ie6Qcq9m$/WJr۠ۯVٞM 0Zvmqa7a;aˌf;jvm~Ok?Lݺ(~g#V%xݶs耪/n[owLhQo۩ycdcNJqCZNɲ@F=$S0$wέf$2TNH~D6q1^{PX6`#HCƵ?;xwxT4wibv@ψd pnm;伻3Ԯ,v7#=39lgnd +Cnwv(QD)ׄNЈc󂜻աOM\SU>pL%ԣs䵁#|h-MB!e:Zك[ x6V`a<䁝Y +QFpck 7?bcc>JtndntF9ed߭Hwo wB +ޝ8_-xs+[vR`ζ6 -ɗ.-Gݳ]9wxy\J8EZ f9Y[eo%ߒ[@9t rg K9vU(^ț:JJ^CQ7[~ˀvX0 u]~;cT^2U 9 ڨ8fQ_jZ1nl! [Y/*lS{2ܢHi+PNĻN|yo{7"ϗA|ẟ%RTm%#PaXʩ: B䞕#X8Y*GxN 7=.KWcKQn }C*NB(aXk%uzuHLUedsBdP/ehs&ש2Zgg$1ݿ^3A_=D;9Gv,;9κB/qèt YI;6G(@"n{ZB!!{F#wQ>1$g1 iԱV٬i9E>2NJ d3ysaL^.(_HISG/$LRb!6ޜ>H9B}<ASzj[_u(vw Å#UT/IhH1}B;ftŲʼn=(:Ծo= E-0$!)P>g(782ޕfnU~ TAgC``#-NO7ce;kK /n/":t~(ʘc%y`_^U) =C hCP|VV(/'UkKA s)ʞn@0b&ޘm':9j0Ӊ~.ȥnUn OEeI3^-}4eUL*B18y>_;w/{SL%;/7*řhڿ/!߲JD@|~ß Si$rDȤ!v?mݯ?w"O_Ј0]GSS[/!yfF10jSKK} cZ+q2Û 0l3QdK8eXHԑHMӱۍ-IEmzRiBl5(a@rlZTԩe7}!9FaRCa?"P'ʐߍ*ؖEO +!q]@8AR,NYs ]rD+%2xRS79T:<؃@%P0'azyut0? h@\$c9^;O‹ ՋG'x*^~秤b[3$?ɑ-Ga{MC6f Eky;cUg>Jt٠V4ݠ?h8<u_ԡՓ_L{| +C bF\\r\b,"3o$=cv8UIa<\GA& h2U] +=mb- ]C[ +62@)F8VlVd *ҙ нI/pUm& PhkK!<69;_w #W1؂ ADf0m7cO`9S;5Ԇxi::z}B?nӼqF "6#ksBgT(DsMihtwajꭋL.PJtbF+8p5B::z[;*EGрCX`@ASvfAG 63 '1-gw T]XVՒÆ# 'D_{Sf} ]g1ꏹ~H<ʟBg}Ef;ڛۄk{)G;SXʮs Z2j*— eɚp}srh^ a6^X^Y?5c_:ݏXEGNI\L+EF ̾ػhN()]76SÔ&g+0}.;F*ED#H&3cBg}]W]g*.uL\gG@F "mw[Ʀ∔>OY^ВL4/-&M\~hNe `MASjtqh&?d *xn: +!sb Z1SJ) n״<7pkq+0GYqxE1Չ(:.ygnӴCq +RRt:n):d<:L;{iVߜ)[Pe ͉y'$Z 4/NᎠqA҇k#Jmy>&#*)ܒ ud#ߪ@. + 4< H ǧoTUNF" .ldur%n% #?bq^pOhΙ{!)%)9C TDE +"##yg5& ϚBgG^FwY{r]ָbY:lsP[ bZY8yQunM }VN A@u]ΒY/81Ye(6tk}F7d02F!u$Tb*?J+v6 ):*DG +=T"E 4OZh ȾdXT~%Û@z]OT-,u~ܗكkCcHm22~qĵNT>1uo;aijizL|sH drY'PUI_yyu>~ L@%$=R衍`9#BGTdwؑ>q[ydߤk +j¹n3Xm ~W,ַ8bC:A(ȯL+G)eQ>|U..{d8xi&lG*B~u@4z=ΩU;&@6 yCuw6R65;$yz|͡ܧ!EiUF~ ?u} lҮgSLvoC} +ڪ&͠d}5#>={*RDT+,h϶5rFPx>z]I{'1UmVY88}SPHec֪I_B68bwƅ;w{>o0^BވLï%ͅvb]:iU3zm&^su&/+3&HL8]V)L[sPj |cfd XD hT[;>g.34+O$yHâDdreIy~g*EL÷bGIl#}@Ev)Txe>}6Ox 0 !JA>z^qehö>mHߞJUsz9evG?swޟs7thUP6QfsXg2Jnۏ[m6f9|7`:Rإq.Pg#ׇ. ѧ` :WB~^A +G?F@bh7:+m:cߧyīe虿8D}KC"gFș5r2i5̞cF}A ֔;bODvJt + JH) KOTys m[84{#3#ПCfBM;|47n쫛RP$2̺(t]u%UĚkfM!J)@d0xir62L +q4xJߏsyj GDvJ:jdtBQ * +Ee?w{8K`U#Z N(y"NA K{h=8G_Hej޻6 mvwD$Mt9h$H=b?b a9gor6ً6Ȓ+e fykG4*8w?5I`'m +|d+h]$Fw w6Й0vݙp4CU/tG 0xf2 _Lk +0^y1&';z]FPKe@:oq^߀j@:0{m ~IgY32)R(V|'Q|hHd qvL,&8߻^Skz8aAG|<#@ih0_̶0zkܜ{gxOd',B~ k㼍ܯ6t/GraBu3{oFPNa +HO߷!5s}QgxN^'$J^;R߀뺌LbG +=IE절XńvDT7u'y8~?{GR3mu;q^jeEүۈ\ߺd1~kGp6=Dk L:R,< &p_B~(}":ХiwzT FG(VQg/ufܗ:Rwkt,Wkq֥Z@w|&1~mmuH>)Bgh?7ZpQ#}`huMᜯ!|4n]1F5 TL%R_C(cd7pZW"yq^쫑H^y} `>~HWD~jm PP X` NHK|Mᜏce:䟍CwZUB#OQ ԊH?{os^g8} }ǼDgi~Fou(yJos>*'Hi{7iU45s6픪dh@,=|Ϳ:;[ik;"v:ƽw,7^_Ca?37ҩO RXz_2y.jt$: hEc':v+PYg|xS- e;y{o %wj] ^Hz'EkM ݷ99޺nc#g$ļ?'Gġ/rftN Q +>|(#}=^64qr^}OdI=~ucq^ø6?؇2 {N89uO$2?ԇE*F&Dd_2?>'DozeQ!ҩqOI؋@ {ǺA Z 5±GpM_Y(>CXV7&'D+߄*:(y;x$}!ADh7">?0B;lm?~1>NT]Ix8$g<v1xg 8||fl-P@~f"5Qh)1{jtߏ2hKߏXG1|j2 \q4 }QnݚAfP{5rf0>: gY{4m^&00vha]hKA~ @:3͖ad]={pkD}^3sQ;=?< ?(Z"Muw6O,}ϣzsy}FPhD¸f0E;Om>N6s?/t w&|lEens|$N#cmq'j0^yqP={'Lc[~ro ^]sGٵs^θ0tlKWo)l3nNκl͍Se;]C6ء\a˶}m86 +-1tnL9*!݇;_3η8}û5r, O +~ClW8a<:'Y +L߄Nb]N q`?-H7R衽t*Z@k3I5><^jwbeJ`;Hr@>;|~7,?}wݓ{>%?- " < \bgs]Ҹc.i[[1m>Ma}6: ˲q^wokn[ߺ27eM&rmr4"&0yi,ܽͶ}-d.jVƏm_\4nĸ됍Z f &~i4ouopD纱&%SqsGQ eP*WJ`Q7t^h2!p,>'<mi<{F06sHV"=6ݯ)l:{F,U8y͡ܯ 1uj ֕c=4NMy G[rzoBne( +6LQ"M7k [E7 5CF4km*h5~s}1r< o(>4Lh Tq]n뺐_w, x>!}㍳eh3fB2m˙L,lÆnYvej.;u^vIvc*pOgR[u/q].Gsie6/k'$4^8%mK9\❌Coe>5 f:j6X9tpQɲs]~ѻ0zm04-K[\걬Mmdٳ>ș8:{wlq6z"KÞD4B/)q.@ǒL:|aobEIw#i̻qus6Ã`?@d7`rpZ +PH<We! <1 2q؁G5x06Vrhx%_$F!AdO0q($Cč<\%^ď8R!8xAfP?5F4 +g?܈p$.ė΄0 dj؂)Z$~b,栒J\X4=}DyJʤ3NU0d~@m4 `W 0CG3xIUQ*r P$>rHs'"Q E GM4s$RLI{: cdb79&H@N$@O$@,o 28 c Yf)(Agx9)WO eUb@c>bK. Ųh [53 "Qh-LP4Y`Q!mʕ:PVF(NV6c\I,Mԕikl&l[ +a1t\\bքQE2+N$yI:7nwnz6$bH"˙dZ`)[!W Y[K@%;2 I4,"sp K@%8,`< Q;SLiSdID*OI,[ øX-ZRHXn")HTdSēv\ke += +$S܃Ӓ2H1#'HRE؀J||#?l'7""]X(>M1=`|z{$2#EfDB` = D,*-!DJ.mmr7>=":+șZeؙ=uڸ'sKE!WV-@rNlxNN5xO!D&1r%0ދ[f{ƺr=IPr,I[ʉ;- +k9Ư?.v]!AJ9@R9CN7?RdaxĆe JrX.a eDLpTzf6 A 79rs0emicRJ#:Ur3(0 +NiRkrv#K +ъ2,8ʔdrI'jzʫӚ̀W&WV[Hc[< 5]PQ4Wb扪vr ˚iǏ!A.VR hDvP-="RRLH_ܕ2 q +zxq N31̸ѴPeAX+uz&l#1fXh桐F\5DX;`v6&a4Tm GT'H1%}[DRPq- {䖷J堔V@+͊ (FbFdYG,Ah{RzsM>| 79ӦaU\-XOjGe_gВZ9Ia%@do(lӃP%z+E:QG>9O:A퉂Jۨ)QJ#aF#a!AN?Y V6!6'ĺ]Q eE>)k2}P0s"s£\:)=H"SMUL4DZG"Npdj|P *Iqqyq!Uʅ~@eaיX6PsƔH&Yl!YnOO6SParw2 H0T ++j9/ol14Q]'GDA=]!.ȸ7Y쇮'F>5fJR%f2!y{$1].5u 't4!Ia786f`d״ +HzQ-;KwҐ C +$#h6UrGe)R_TIeY`Z^ QL%VԳ`HB;#\-u -fN>KqMNTNW2uT9agXhЀF`&c-s6PSF?8-%.s!o#PɌާZV(!Ai᜸ȰmMfN܍OXhDJA5SRf{DF/ 6%+ 0>ZG64*i*u :/z2s6K"܎JxBp |f[FqBG.b72PDt+P*&yݰ/_ 2}Bu@E̬ 7M'DD6&eF[bþ;q1o93$s1 ړ=.aT^>I!gwKdhm۶Ԩ!cܒMؚ>}F@)Bʛ"LP L4]QjXԌX?F9KbK8"pVSL-#ܤUB[+&!Kj‚J_:gJ5aeP\qaq# ,pGnhr-߁[+\/ni-.0Fep$Ѣ/H[@TKmdpl[<>+&@sS7afRC@663N*bcb;5IRޠ=̍rbWb̶uMEEmk1IRERQQIlAwȘg*,-DD`@  !f'0<6 ]Fe]7!值q&EwI UsZw%':Z +ۆRNI~U9“RyWkȐ侣F;5SF3:+>j*?j,9hlqOnt5(ݽb=Y^XPKDwD?Mak3HQ/(4)tH3!#иEVd_I!, |͈v(+V[䄍׃it@T!ѽyJftiAĘ EeC@6: Y )bv n1Yaw7ӦoVhۀsNw 1w0@A ,-]@B *]CVBj텄F^bJXWa +k DcJSr:kऩjT^TReGLgCV|2֌m&'o¢oi(%zs!j1Ǵ)(S}dtƠu|mOdx7$/~7I,Kz +BUځYҙ+'%c֪Xf>zgEQ3?cxBg$geLVm +NHk/*/.B@ $[kDVĄݑݹ$1l; kqA] atsXpt<+BhԌQxj ۴)pF@V`- YP2*WD:KP',* j'-sJv\T/uhD*GHT9*i Pي0[rlRǒiěthr+4)Z!Ϛ[DNP BD)>5P$k/' VXiو{^2«Qqq)* jxT<,s=E?[NL>ƒfFJ^ +_;k'(j7&0l:)9^߬ +'\ WPrWk[<>g.!2""2"s$r&4%~,ke+ĢZ>8/.'=A_'(@utC/9_PX r+)K=~IQ'0AD`t`t‚ZYq9Di_SPpdvEHgU /Hh \ò5QGŽϯ=E h3׮% +ƤG@# I+~%7t'E<<{*-E]Rѿhx{t6f3hbH>W0MDZ8\BW:8)"k! " I dobEb!6_J= ~ >ziGh :yѹC>A@:cĊ<(5*s)Ę&lu 3݂+.R3~k◊!YcȤxO!i- Nzj%%*XVE$Tq9Wᨤv|r +LHM%\ RXxO?I4jm +LpT`vOZ |59_ɸ!Kޮ%ୣhÓtNAr4#ؠSjr]rI?1:{1np NDŮ ĺh+~H 5<0 pdv)vԫwZE /PE6Ұّ'Dy+&="*^i؅( G;fl. <9Xo餭lXIߎed@7ưNc_̶1l\;83_[mp]&pmN7a9UŎ@O>F(SG?/vNm]FFX86$>~І +EgrR+({R*'"EؙTU3$}Q+,"3Ҫ*[h*_hJk褗NO03@1ٳppX10{ 5yzjhY88gމu4 ,TIa Dio j>UbOEKR($}ˏ23l8J`6ՊJģ__?4X;=Dg5#g|`A`MP mJŤãMI}Z;+W&U_BFHZaA`ܝhZxzPz nf,/{;,<یTjH7G|缠[68#CEՌˡzsIg[84ddv&_~re G"w/TIF0A?{q*x?Z3@(|Mhם\dpY3<%=>cS*=dYB6ΕÓ~ +؁2zH?h~S&.T)RQYO<4~$OMIW@" +DĢĺTzT^Jdw $lIꗰT/tg>mЦ m#b!0 gM9)\!F==՚ˇ'quO$?}I^\DHF' |~.l^2{!)Z;1HYb=x +PLeS?J_B1 'XF5btR#*pU ?+u$pW@"30!H$HfqN L`˅tnb/hp[9>(9b:a +ɿny&%֍>AI)U$zJ_mN/͠[\1yk2:0Ǎ3+b[e'UFSP_r U5E7#}$j轆vjxҏ#~E6O"',^5o0lɿTşãĺ4 w"_AI{/P<4|(=fG5qOكwwݛ:vIZ~s8 `| 2[hrJsFdɗTn"~B]<]%OD[ D0U-2U:Jd? +8ƻQ-GQi5;> +mY]gl,u(>fmc,]rVܩmsh<ǒ =7ZwZIAP7:o+)H[) `=k YPu `LP)k*$2ďDj\& HH2|n5鷻ewP_u'U7J?f.淬}y3n(/#[G|a,f:q϶jqDTI7^=sf1wk>C EeaJ+Jj@TfBMG^OI$n``MtO^{ mbn2 2xn5ms4: "tӪ1^a`}e\S7\7t2ҪaIXM7w04m6͠[GT*.Ҩ߀8\G]~L@Gw8= +JNg RZ#BwPDTr:UYF$CQ!ǫkGgI;*~Jlܟ_h6/V̔>wda'gEJөm4n +M^$}*$UobL, v GB4VZ ±Q05$T Ejo~'SF[hks(y%2X^?6~TE)4LDYhՂZaJ(rC}XfpV/0;%Nb?f|ChqO'Wܵԩ/qhLZMmOc-tץ!||i04mW0uj3Ŭ]jm hx,"T..k]Dm)~ fzeHU;27?~BVoaɿ`c-c/u6¸x Π! ns$L3Gu4q b\Vo91>F6}e?5PBԙ wj/m铫i<=i}A:;|}(WѸU/*O$qs +!F{x/~ejA? i̻af#{&/-r*r," 𰕂a9:%f[15 '|7O T<\r mL CG 3nrOe_Ǜ\3h7eyKaڇ,?` t98qvR> SX_rxhS.*/2$Oݺu-[4Z21!5ż~<P,nF'\,,\ YNeL?okeS%v*0a)ez5%1* n Oci1W@ VK񽖠T..BUkM)-A lq4Tž L,hmܭtkB~]!  8eZ<7݌1ylܬVk9l\] 0`ʌP#+=ƹea1yn\'u\rzhr+dyRPunAB%([_Y)1!JR!*n3"#cP\}׏R .%"uNbLC8'xfGy'2VJ^SVZG:QaM~]1^w < +y𝜝,]v('ioK^Wh70([H@U&RRB eu4qnHObl R@VȔ> }"j]=*H +R0,g xöĒrF!dP6꣇bmQ!"{ceG^ʅ-h@ٵ̷a8 xJߪ!T0id.k\,')\#[ul)XIn Imخ=yˮxnBE`Dq*:%*gHU2U"7{@T65Wb?NNfJ {/&ӮU3&.gZ961vjo خy̫}0/vjd Làb``x  … ܊o Iq*WM,ϧv TAR>pHDZA>^ZZL@5vܝDjtdj#lQv@AQ1g*,d +Y#}_n;uZ>ցCp`_x`+4<<bt,>}\52پyes1d~X["HDZ%@3s*% BprRZ^ZV1iDbXX?iKB_ȡPmKᎀ$*:i&BۛȈj-*A1iEualZu9\̺Xyy .+7qcմY<[ 68EXpbTv`Sk Cll, dJ]1nk%dTuh=n>lxNvt +B n-(AE`lg$?rCHy)Q. +5B #S؏B +LyWzD +xF8G[G|gevC[\*z]Z\Ev=ȃG4 C&.l'OE=%ƬG\w֏On.Lt&#ܠNѮ4Pm|d(;{3^ؙ3p37[ڪt ^^dv^Preabac8uo`&6ΒZ.Ma Ӫ:ƥ6K2- JNAt an!EQf2{lC؀0 +!vdz<.mp n\.PKKƜŅ2`u URW2?X]퉌NKSLx.$u`Wg򎻡d @&ƿvRE&Kz*ltc2|zc0ovcCcccbWpKԔ7tCAD [c0NPD 34=p0n0MF4@n_f%cTfR[XxjR8i-؀ +BXUNǒJɤhic cs)ec-\qc11y|w$m|8dt51$,YN3@$pÐu*}E='`WŸcjށLlR%{$x"".}qld[L0T:P/#al1c ,BP6(D_o˘L;.zx`v=s[./zZGG7qoxV@R BĕBF+N cZ@-GH(|T:a\Y ,vZpBD*` Ъ . +ly /C@i;\ m|C 1 Zf`L=.HY{-CTbX 8\)ΧOJ@ P|n?[ĵLJG7pHBxM&7l"- m,Rb1)P߫Ó,*vCҏH ~\%,#޷ڳq4|Y[\@OG :1\6X7xiAx +Y!^QcƯtLn|▿_pEyU@ɢג@4Ĺx,`4Bzh,I6ӐG_-4:ZdxyE#,fk~28t]BbZg+KLXr+cm-bQ,Lg2‘bi S\RlyAOiM| A2BW?G|K)$a&xj[OV/ q;B\饇ȼ9C?;)H@7RJO[Ǭa l\X[N.:8v&9)F'fLd`TTJlXVAʪxkMS pA3) %q FGB**ZDG|w KDRT705q/%&d3\LM6hq5"; +)!J \!-42EԐN4<8Zp.ńm   P4~u2륄,K,3!i{ q0#.TJRbNF<̩[Hj3ĕ^?kMLKU)@Yfha L92H/06~p~m$)1bS%%jPn12 +c% GH9&#xFpsUMmI1qF +H+M8@!M5C\( OK3@?@3ęn8 $(,0k~fII3t ߧ#J_6Rk )M,h +6’=sPo,c .(8qʪQLmR_I4тNJMo">2%s|Džg˲mw02ZxD砑,Bxi'" 7zk$ciEKX2|9; 4 >De(">8_2۰ :.zx"eSĉA|g<4AՁ,\WX8|m]qbqa*^m@*>˥[q/G5 HD +Kp3?< +&/,:Ç`z8SP1eGk§CXX!LL\Iɢ +beU)LR9p2LaƧ*:KRƢ.m5+'%dįpx S7> Y>B|+hsq@FJ? >ùKV煈`b`/Ё3 `fL4 { X`Lđayf"VMعIZ"a ;-|7q|n2|āyxJo0SNP5q5=wO1?|)Ï9\e'q"~o / +1,X*k!>R7' nf1 btC'G7oD!3QN"4f2j_q? + 8A!F|p.S_xON'T-a;D98\pzuiĈGl)bX$H:8|"0yĮQfg<MURbF9r] +P 7;!<~Z s*tu"dd&xIU c'EEr#Éx7p2gLc85,ךjl5o -4 B0ͯVN B<*76ht" !w OD.87^tk|!JIo1"` 3`?p]<_pxosacCx YK6";J67Zhzu@1SL#Ŧ*'cD8X;i<iCMU") +rHIXh8 0|e8. &!R tez`RE!Jqzd'r=>5=TE@_Ѯʾ Q7DIq@%hCyhN_~pĔ꿊I'z{<m ID Ĥg`bkJsZdUdW12iL1qzYW\Qٟ^?ѥ?Vq$Pe?=RTGA{AI"/iĻDZeQ!= }42 k@ ""< x#z*:zMW"~#qt/T#RiIq7`:oc dd'U_HWC8W+&v,OR9*D̔؏:hۉ8 Zd[:@e&U{]L׷hhv =H*G`ձ3&z"KC?)*TD{T{" `wscdEO"1*SȬ@EwG6?)Sg5Cs1ʍ@H7JL}t|bHZt*AP J@~@FDDg s ̾eWE>| PHz#D4ج&@J K䑧d_'EC] +*;B;#3 +-<{Ɛ l0{vUGhZ12?WEûgE<$jS,~(Nyg-&ƒ٫ZP-sL;qvuX1vl1zj Nc' osާ>OW/4JB5$=WPRZH}Of !(}5s!*k`ZgJ'gh,ֵ;=BD'4Q& 4 + LP-63+#h6,B[ĤWF<9Xg-ĮW/6kb,}TȞ`DU-D)і#G1ZS=Y%Y?Ɉ[ KV o^B! @Ji%P_9x]:YKZghv mOĶ0u~,ggpBuzRf`#>  w5p57'$,&p̜[F8vuNXfj,H@}7PArۙ=zg褳ddv lyW[01nfjw<>~)l8}3: +a~3>}J9tU.$'TF +?u'IwU $.m1B΅+жED/ +HUvK*E1DD DN'VɚH(% Rm(WEIK ^#p!:oLXvAvW:=cxR#*{S*n"%O T^\qV(ѹjG_ȬqtFF6Ͻ Sg+ 9BJv'5=G2#A@LHHn"gѸ[3:{ib$ཱི"qJ0z6R'bФ٫^\N &~A SiټZ3P9`<6v5ށWDKem%6> {?.P?ҧmC8ouDAo2ʲlɻe!KA f~vGPYԳuxP-a3Gӎyppz <@=792T?C˂ BL63Zh7Mbd_b!:G5z/XzQ8OFgri?&KtSX/:4 :Ǥ[Ub>8B:zwB]L!!Ġu"dn53&!(k?Lri%n LNVϹLzr5r xYKl[Mc6tvXA7(I>Fg +@B=W*6XqYKD'.^Ĥ±Rh<|_ϭkqv^f* 'VFպh/(!@,("mPE3%O; DwFE&͵#TIO.vL#Gu^ŝ4QG|4jx:M \ g&g:Kږsb^ T4o5'a#zeDw ZHw.i2^c 7VokjSZBSYN2_pJWN=( ܳ4"˯ruIS8BZoH^ F}C;$oiOv, ?S"VV+6k&]3ah>8cx, ?7V +YG`[JdZhCP: 1nö{ם\=%r-s&EK0BgzxvNî`\fNI3˂ŌW,2;% JU/.%1h|x_BJ=5V !*=Q`gnBk:J9gd*6car3]f w˳gcS!5|$&+VUF@6:}DW ]Qve=We!s1} +8!ً: =Lޚ2mr'cq^ $)i-^L!6kE mᣣ!|/se+;xRnՍ͹ȓ3|p7^:'EL)"1}ius]f%s2|mH^(Y( b; +ģO@'ze -gjΌ鳻" o%NĮө}4n +M\ +V=kgX˧ PRk:5aȇ.7Hh]exn$MnX+jbm>IۡB," NK)m`qggɈ_@L}U t +e}R;B.AHhGqQ N>GúcVܭ@;3A 6 8O0uj44Ŭfĸo|5oBM^\("SC%b`MqIB[Z1Ё,y,u ˚ފi]:Y6?ƽܡs`Ĺ&jc^hO9Q)V* 5.$$ fj]54}" &L2w2}k^LGl7o"[)-,<oP-twH3|n[ɾ;c.P0|fଡ@4ej;5yNB=Y7uwm ND~2#ޣkhɾUbSx*-1Y@R#( M[Ik'qz>|L] yz6<{1zj&@f dk|\%ƻbcH}熍4y@FGR[<>g MT KPi&ߝI;b=:οVrFoef0aF>jdr|5<&elMn3qlY̟w)D 홿Ң[!6LU(,Tjݳovm'~w>Į K{ źJx+z$@mAny< vbX~. !m3X[12aH\$B;;x庁5tu&Zٻr|R$&}砐!pF\Gun~mBFعldFȒЬGw,ڙU@~v_ ΣN0qpQ&Od}a5 ZC_藷ήs/tpIjoj:x;2zNBJ+G)υt8_/mrv ۚͶMw-sjmcHPo +KJi >u3i@,4>}v@d=$ōaJѥ\YOX2JW`rJgp7,Q_DH?֋̾$a^ruR+"]mv O6'!d5n/"Fďhp3m&BP;J^Pmhs(sdJn\{}5WӾMjFăD[pr@c}@Ul#}zm"ONvK;A i8sѢɫ P?#sXwg.-1;)BB:+zmEΓ0 Sk#ηΆC2~i=yY2׹1{l\>M),Jk=/F^"Չu3(!w{vZ!;DLb'ϮA;ek k㟿*pG' G8(- o/1`] L ?P]'M#׷8dj#^ 2|m[6w.&l70X']“SU,ʫXDqZA٥L\uk駋iU)*횿֕c`Wni}!)!I-(}b')XK#INRJ#y~?M[MC2 o AB +LN +ONi GF sSkbG;|VR$G>(33{<"8ٷ[+#5B<5(T]AIZ oj^#u{N_Ɏt|`CR_5P'3jKH,)SǞ8GܩKBFze9a6N[GIU} Y\m^8]&Roi,g0yJ0 +y"hZc/ugZAJnhu|=I4ܕBx u#NYsjKRJ>|[2.m&RC6ZKVSPr:SXRJ3"z& .  \179'NoJHD盷tH D4XSn+=,KkA tupVi%o- +=Lk{+":I=+z=Az=)K7;OKFf_: w ITbM OL=&}#hF*Y98 QX +MJk' `@~} CP:KA=oM+3&6ptM J]i!.xDG3Yԣ3LiE\.3A [T*.7ә Фa_`OAZw謉0 혽6[hpv }`Ck:=alr[.{yY.;ׁ&v<Ӡs3d9NZh:}~;:mXX@DPЂFJPx@H8yT*."ev&Dw6/6s&Hy"Bg>Z,\w#G;h}.9424ŵx 1~k9YMo|(GLc3܏B}+ńta+WK(W @ %?%DI?b\R'( nBPa1A TdL(vY?zQ2o[I7<"LÎJV2=,x*h;1~;(Lb8%ԥmuBc5" H$/tfK]WQK`tqD\t?QkNo0vctn:MB7cshy]:>𗱃ifL@[j Ťr@UR%(?UzE%}zwjq90ri4۱l'[a6osh7YGߞ#Ϋmk7dt>`"*_:8\K!fM&@ P0$z^fNZ0)P͓4?9#z}Ȏ@$ 4 cۼS"lPRם]иdpw8 rwocִÄ/΅s@Eˁ ' y:{dT083  $Y+.j&;|5VO.R_Ȥ3IJ]!!a`Q@Jf݀e:AYSbJk8ZŞ Ӫc48_c̠#G q]챬'klfڛ]tB^K'u91wVVѭmvOÚ.l6VeP_%Dۤ*5t~L~;&&ՌL:' y.$\4d_bMYhX2bJ{ )ps^?~ѯ]~$oԇCTpU:*Chcyqn1~n\Dj} "]}h7my&d ?:QOKԥm{,Q)!9م.쫩``Q$"io?P"v*6VK Ƨ3|r5U.EZ7ȉ;i4L@*q>` iTZW K#c.m\8b5?n\ p2/ 4qZDr#XAnVNj^a[aw ̸-m52+ h,\"NC@c2lQLbG=tfP\t)#f V\!t }{+\7>\KPW8@ RLByPK_AĢmò+xR)" !s`R3m,i̿.9X/;He<{0/3фs'\۟JA.M}/tƫH0]EBe Y@p#09"09pr"^$BoZ4t䯴,KQ}S/+霡OzGj]J&9a_SuuA"V)S_R|`T)Xt!;9Gbp~vsq%u˫q|$_%&Wo hgvvknCo[%ݍ=ώwOf)R|" Zg Gq5uN'-h_v9̚{,wz%r0C{& 3\h gBW_@$^FpY2մT7Y8ʚZ,gqsu ޝuh?dI0o? 7Bp>Ͻ +n Ϲ|XU XLV&`?;-y}]k+1sGT :΃REI]-=-_޺wȍړ~㞇.ӫi?ԋ aaxQnH%U2+͙՛:>r3,B:=E&nJ `;O5 +ƻ)[ߏ!?T% d+!Ql-#x, eU6%vtX>YHۻOi];lar;hC鴳>_bin^! yJoD +5;,\c]$ӡ*z.4?aF"ȕJg<<Uߨe }wޯ6}Qv kp|C}IawOwr +"(}0|*ͯ_E5+a$,wءˣ 6GEyT՛QS:GsV d6'f#y^sPx:oݣP DR0=O k[ 0?5wS!ʙM z0bAw(M mKrTA[6T?E1xsb7yYKIa>,ۙ Փ/^S6:[ߥWʮhafDN}Dκ8{7KVm9!+rUYgޟaU6c] {%jmTa{XZ%ggAi 5!p{KrZzFFO0P~+ +~ h3Uzuu4VLީk/HU`? D\ۓȁ ǀ&Ԛ&;.]Z1|67(Z ǝaGvCRtkK͹ SO{F3GWT. |#~<7_#9t&ޕXf|} +brtsNISD 6{~6=.Zmo#l{F`AK^H--`+8jhck*!9ToW`p!g0LMmIR 43so]̯Q80dzFC dϳKiX $$oOķzKn|ڇd, \M/}WQwՃf~Q]\a@拫}]LL/2گR}c|xó ?Pk X;V;ͤw,' ZLu.3HM„nVM?D]*Q^HukV8~b+%cnV %<)Cx58Afp<]*] -Ԋm J<ޭiJ#ܪ C^G%{RE} %543TIoe7u774hcKϑR(|~]'6IeyG<c(f4FNh&m3%pwx]u~F(/6t|Xj0?kD)ҋʟZ[T 9mT1 k}Р;ވ yEDA}RVr\)'o=@S} Cr`“qF#'N\%` ?9W3_gW\^TNh]3L +6QKާNr> ][ztѕ8=R`M?Ld{+DkiM#sNgۺtNuŝ r%n60#x8JNP/KGeCWA<~\ʗij&*bOcGf=c`Xl+Ib}S~`pߵ) _Ωz Kp2SH }AS /+HK=཰m2FfL,R +g3.e~gT+yHd $sP^p!i-dgV_H_SuL&1 :,s9Ӵ-OƸEak?a2]Ht<WAWiҹ%m Ë}4l'/>#d~ot$⊺3WbQp Wl=rI}tQAQJjLEv SE]p62hٍʢQסm*OJmm~s +a|!Rw S #-ԗ Fױ絫gh^ucP. +|e@I]luÂc6:m;lkO|=FÅ d74-b9"RԽ tC1΋T\T<3S9PPmf׮L4V%ƙoX+ rUY$=Wҍ6[U{fl3Ymբ1sIX+U_Tl+ak? +Ay(AĶ50+5 w>IPs RtӶJؠ 7'0%Um0} ZχYJW&!@Duk#52 KzͅS?73Z~RxV_HZ uvl $() lzo#No]*"Ԟ2QoV&Uҗ&|>f/3Kzodʅ3ҍTxbT8{,rdJ4UWv1F +Tiw!uCTSA˨#*( +v(%وsgtSt:2cdGLax[5,:t'.4#K_~D(帑:XavUv4jܥmÞuiTNz>ڠu ,)>p#Q2Zai*g tdzq +aݵlYEH|W8%u;D`oDU~+pX@,4 Oը(ERǵ} &Z~Pjs#8GR G {m{ՐH]p^C|&67#eWC6;,B<ߩG ]sv†0cCnzD(.!fC63(3"ߕ,!BN∤@k+4S*A+K)@Ѩ%]/~jوG0Α$6Dw$.4r 9ΰenfJ;H[]燠dƜ6'!e]#mEwRnGqxvi>?8n_LN}J2ܽ8²KRUq.qkR+T@go&/=ބF_ .Sd… k;W-\~1p)*G@x̛XU\O J r=>&etC/JIDt>c.V -z%OnAr!(jװB SRjaKN# 9kyZkW%pL+7rѢρElzDvB%N\G<\I\5?k~|(Dk4Px HX(Z )I-;,7}?w9&@O9KOk,w!sR򉘶!^Q+B$`(Yqna ~M80uxrzhys4zlӮsIdF3V&F@Zw B8M&mlpOx?|fTv(-#;ar4R}+v:f:K@hU#.o +YXʊY,kCΐ_ +9'ϔ+d(]<DT5Uw(iw)q/>xXhp@ YwKLW*eEd۶. Z&-'*g,{P8W#vBI^ݖ싑JEc1HQ`&82I+|BZ?D+ fCK>I`jI!0,d=2+'N!BݼTRhW=m4X)+|$uQ%h˼z{\C\}Z1>+L32ezqdUu ~&ƧqΗG\vݻՇc1)Gc}X%@n8+dLI N ;>Dpy@cfS.R&Msf55)dȘŷsTZIaC +d`$?ܱ0;W^`4h{iq:X)Z*ɕ|=Jv=BpJ,ʅ>CufQMߝ`X\ TcfͰNJZVpssӣyf[ˬpz'aT*&T.n#g8w t+Kɡ9;d5kl|V騺 +Ovy݀1JS"D#\H"+#ϷǘAݐsU.}DVX.ԸZ#3]JXՀUa\YXaE6msJT7č0эP Xr8/ØKhce3")ZH6%[%!HɱTD#ڸie8Vm'&NA5ʔc~ҫZdil՝)WHA6:DU,+`V-\Uouȹ :D2(Tެ~mۘxO =fp@xr8xɮM?Cs$,wB%6dCU]D4Š;߉"Q Y"S'Bgh?kr$B׬7%\b D*p)FϬyȫ6fI Bg4I&l Ƨk +TpL1h1ϼj|MvI*U -͢7PW7ZmiN+ ѨX 8JK>`Aב o C"}jBL;>M`!摧]c|'.P~Vw8)̣z5nIz֊&F&FoJh8/}PƩxpV>gsPv24\׹C El" MGe߫~^;u[--[7Ӟw~+<[wfl5ݪ}ZZk:;vy9]z9mswci?;z߸nalgs2mҿiOm~^g.Syw/xZ7_qQ:oSnw<:Vsy)V|)~ÕwXgM9Kkj9xnurrOo{tSO{~i}Moq^-6NN9͟x,;퉳vvPjCmmt?֚um3O/77w7wXzǙNN㧜{N_ܩy;\L<3797_57Rx8}w[S]u\>S뼵8q[w\MyGgo-~~M377[l-19˿ܴTj9>3͙s~riX:^7TgZ1)g*L:_jc7][NɵŖb̩};u {_spSsvr㦞z97;xt>\5ݝwMxf"}Gyw?w9g+W9Jr3m}޿~n{Z{_y덉 +:uNub]uu u]jGW)v<:9~ibL}k;~?+]flf/ŏ99ugkc1Z?u͹};ݟ+juPo)pl3E +jp@ 6Ԇ0NqPjk9̏ +27[l?m99\_2hP 4{farsVyrfm6jCm@>YĘY1P +9̄L:GHoG\Ϙc-[cw;[^gYs7ݺn[5oi榮Sw]K{1wzol{K_]o|sn4ougomSVߊb|Ss9#g u{cK̚[̷n+gmƹgZk?ko-tt]:?sT}kw";ܼ^kݺs<:975ݝ=קx8?+ Pq 6,ѦWӯ(R)6`s<:8ǣtsGG91\Tͬ3ĕL=VNj\s~ޣY_3s/ooov7+][=VN=:579^nbnb{͙YNk|nf9nhb7777~ojo_5x@WzyxĝqXv^5?٭rZkܴvK{NsG3kf)g}sss/x;֯o>gi~r;oiN{9yqxfx,7@DbY8+p B:js<,4sݭT?D92 +>X ?+jCm<:\쩞y=k2QjCm 6ԆPjCm 6ԆPjCm 6Ԇڴ㱚uνfGW9TO+Νs:^/-wq_~onbXg/ݖkPgxn1z;}_ySz5vy[nn37uboǝѱ7gSoow<|ͷZnvZN?w-v\+il9i&~ygsk}׺W8LL/lZD6e1,2F2kB;:7}U8Ky% { &*=]2/4aAꃥWz0]7]y;6ȹǖ'#Co,gmZ/;Ο^ >$Ao/IkyVu7nd1lwY{V]989ڕyY_,ZܳZ +}+UcUR9[i^9ﮕ?uew=Jaq=$˙ůI$B Ou)_*W\珲!E*+g*pLJ hïU{/&E]L;Xmǔ +gR3޷Bp3y`G  !,F &L"C  +jCm4wCQrߨM! `orAU(?ج. L`}]ߡq`2z0_a^jƯ$q!8o8Q&WT&v`4`3hRm :}*]*%@8V_*)1s׽ՖuuV +'L~,&v`` +,=YL<$rHa/pnΚWn-usy +.ڐLdWQa HrRT4`}HyEIAj6Q+Ed0oFOL7{,?Is¯4EodA)0"&)CP$@Ky_ky*#=+CJ3QA)L([ZcfR",KW ,d"` jVqSU`'kp<8ĝoyn֏x_fnjny_{sW[ƻbv^|ۭ3IPcL͔(6Ù^7;yֶL?yW^~̟s֛̍?Nqj~͵gB[7Zo3̈́6m[g8Lh\Wo9֫sݷs{e[~늿mM_ 7Wuo [ycMƹWPBHQ`"E_Y~0 +?.lQfXd[fr[wޫռck?_;ܘҟu.w(>\g=ʓ09`Fo K5UKu&GΦL=ZwS,q|iP#b#͊{z{^7[mgjoδR4RVس KƯbI~* +?`ǶҺq@ٙfm͵nlijm|_?_f\Z5W_uW_1rͫ^oYuگҺZ׺|Sq^ksg/5}uV}/]g?m[\q[ZZmΟυ6j\+ƶ]v5k yMd۷7s5N+LMj+'/3 +$CQ B`fT},g~nR>Gࣔ"XTp< VV7vZ\&Jbrhzf,Նe :S!}.bqƪzXi1*'M8 \UJY:HA$y&RB'qJ@.ROUZx}ɘp%PSDODEEX6(U9h 03=D` + 06CB14 ,uqQn M\hRVZBޢ|bbDB*`VE*C2.ѫ5a@8Lh`(艏5J@6^!jm$68 ui\gbxH0UD0Xp""'%"*[\@4YA)U„LcZh0TTIJ/("Ì=Jiv "E<%M^ VЈ:x.b ,`ћWk_4ȂԌNWF'WgLLxp,*Qҕ{_$"@Z8P4ɵ0-\"f* ck:*Fi D-%&^#ɣaUa\6B#ՆKCET +Y:@]!1Q,g]D|* ce<R=ĀJ: eih:\KlE58Gg2Nl9 M46,ĦEl@ n^[%hŔ0{ 9`'< 0 «q(lU4" C#hFYaʨ\^Ch2 +.Q8\p@r@NAPDJɂʠ@`0`9 X s}!B\X&0B% /7ǣ:H@0ou7ac&݈ܹohT$mmV6D-B@>^&k7fO$Χn1Gb<9E5߇TN5B**`CԔ&OX [8`(:YqLT0w 0сD%('9[JDӑBkEkƹJō$.2{OȂ1p nl8B8W*F*K  *D~,DAB9)/4. .H4\X5sIA .( FRXb,,eO\u@4M#AiZiᵅJMdM6tLE4o A(ߨ +T r DdiZe㔐5M\З qii@haLi>]Yhdb4OFE +( BkF \@`/ +J +XUQ nL̸y \BCqH}4m[ϓH1m0`0z!|G~u] =YW@tRd&+@h36"+ąIS7a^d4%jx |0)QL 7DLyHi`jZPLPЖdeDG}帉#Ub(ƲP=^*P1|I,q~l¼0l EK5# +d,glz3g )s}ᜉ$gzo =l> Iz󃁬9CoBpGs 0VG\Fo~炠daqFoz>BxJ}%^! !>28BP|0R*=xca")KTlJoZ_ dC"+}-2 +\}P _&Kl L$n”RQ!e؈+3-؎Mi.#jb"5ƅĄ$x +endstream endobj 13 0 obj <>stream +;ȹl\l\4$|gژƄUeĥ!lǃxOI< xtw:/I<]$)d4i|W)W_H)dd(VP;8Cv.(%)y`[ +dp72 +"2"{d#\*(۸i. ~!Fws<b`.d} /¥01aU\DqvqBJa7cPD$H#5Eb؎dUGDS!E>5(㮝*4r5o +-kzL,)8 +J LSHc*9Q6Q~5AP bf6 CYQe&`DP@U7#\"q<8ŧ$a<BT2FQ\ ~PFP +U_GBI_ (>ǂvX#*D B$Eċi|usehd{Ń%\02РQN "Ҙ0*s ;AHB0( ^k,1ARWh3. tEqpp:.AstcEHt ԎRΝv0iPa/2@H2 b0(E M"e0*@ՓP\ ++Ym gi ^3)/zyqᢋp86h%*z(' PILZD.B@q"CBHns11 KDeİF#PxAddUA:rę0nGdET;Ph&vT%l鯁%cHV D89l!1P לgs<:b$8l<*bBr!hQ7rh94T 0*(7(% ɐp t Wv &$n݉R-,ɩv,6ǃp`2ߊcW` <^ hk +jB>:pɶdUGZF891ځCB4Bus6a6%Ұp- +(c*V-$Zny Mp@@c= 1PE4-Dt."-1q wi mw.sAxMŠD{cyaD$VP.OH-P8L"Pt%xN71+ F <pjgv)$ +lCAf x>UO``†GDE<Ԛ@B\xlfULK AXB2 KMKAblG{4 f85PEJ;˓p$$&a!kS9p$*2N=-Kfs:[)&)j(*eJW<<܂lGL ]0:!\vF\/l "t2}JSd +LIɓ2A'X-RdNS gRg@Xg~h"a*׊DTSdQ%FJXt5>r&FY )QZHJʾGeF*# `7Sc,X(TF ` L#&I̱޿3[L㗂L+ɒ~-/QMk(djV$sQlg/Y25 LEe`L6fAenQE?G~aX2Q&Z_2lEːEGLEGQ5TQ2TH+֒f$-CVzTF@X_WcT2SQi_w> H +Yu0ئDA@wB !Q_4@m&UжM?z$6&olǂve(IqVvID tQ?N + 3$4 H?|`L|Z$d˅IC"is %RDH0(BI:diZ2N>4"H#1(bdC5e}Z۽1cʵ,m} "09xsįCxzNpvC~CK k5-.BY :3qd_G YcUȳ ȸ[g1IOqǫG +oyd(x]i{} K 6,i@#[pRڅ\%BhJ^iv/ +tA6_59ou~&F 淪w *+@F&ſ:mS6pwaM0'coD-^:NOd%WCŇ>%k׹K'IJ%+m+B|VMXA8m鷑 (YuѶJѪl#ъ5Xv|7d~+B=xj zh@ @Έr :뢭koRP\t"uіG7Cc#8bc;}ͰdJt||GXOP.Ac> eLJwL +Xg̈CPݜ:w.$T`> Y6Qh@pJB$0O W1O@%Z&ͫ J0|m*lKH%(æR֤tJ2Κ* [I-'v^mYF])hSmXB+ ƒZwX\UMFO9()! +V̾U *zv" k<<"T_pIMNM~|KޱhBb + #6w *` :S.OP[U˦^G#OLM. g ϸj*wC@t9TuDTfj K7nOAQ]8T!ѸCI gNdi@x<ɈF 0AA@;{*;W#ih|⊤T}$ZI=l8M"#R L)kS|D:U\${=}/=KW@05+RY |RYvGJ +h+Ey|vD7.j$6Iv\U?$˃SOB=OJ6vAVfgiŷtRJvm >sf[NX-f( + -D=͏^'!HYmho+36ڏ?hZP&Fdm""*``ZmN򘃊qH~1hq#mj'l;ٝl7:=ȲGQѵ]Q`qqejqnAҊ͜Bq1dEw/7O譕gtѯX:_MDU ?~+\W?kV7mzl06Ɍ/KYՕCCgQƒ2@y"3!wݐv6)(M5h"`h*u`ӴRN/[;hQ4v{赒9%d,?XT lEѧ|vkgpmM}H0[L7 +0Tie +h,2&E9`2jA3\Pn;#}dv <:}Aـe8k%lS֓?99{{ +KH)-a{9˟ZQ9謴R0[΀H3vRNk}GTԢ/Z}y)U3G eęÂȾr[i EU>Sx!2W MjhnSøcXT' ٚ+wSD(4Slڦ`mQ'z{&;nlS$pjwm)\^|%[jn/) Vsqi+95?ݹEG2]L*-%?HZW<3Lhnz -ĩuE36>Rd yv2Y x_I3%2˽wxP–X@>w +{*fbTxXc%1!I?\P.he?xI ;w#Y |+ X{\kd~*~`yn>?쏟1[.?(vVYǧT՚,+B`Q[% ~ 3 `5uJ[Z`<挱4j*R%gev$VvcYww0$ JGTLK.#2ZKRVuVJ+Y%O)wQi׿q 6/.iXV.@GoshÐ.O_: )D֤kEr,@KHAxh8ڿXk}i:\ 3$aQVҳ4 "`Gas. +{V7ueHvX`4\iHHOCq63CZNlN$~5v81qi΅Ns׍װw +v.](I&23X@7R[WC귢JWٵ>?{$ [[%wC#¤Zi7g 0 q_ñ!2{(f;@xղi@g!8Ё`BDŽZDĄcHc7O1ʭ?ֲoM;da4< +CP+-Cb<|?|c~B52L"&B t" +'$ ^ =T"%8=y4 +2A94OlE ?33YթԒ3b.9p$I!""wj|Qbd:Hs)p3E ^X"H=_CrX'8C06dAd9AMOksAK$8ٚ89ċ^^:xYkH-WL~C0iKŒ6ƂZ%'dfQ1I$shbQ,hAqRf݅ {@vuNvYB8pZ\5op HE1Hr~PauBd=׈x<;ȇGwlV=\^A4 qNNu M'c5麿>8h)77]P#F=K6>OS;G'0܈"!XaeOɛ +I+L/T7ǟn;}n6YSFJ cde埠I[ K"-$'gplAǘ$kJv4 А?,sDxJ"2lZ|KX 'xd$PC"շ&7' dғ^BK2$Ǵ <1i? 8.9Ongљ dosH 2⚦{|eӭCi*tFq 5q Ǧ_EIhls14O9 {nAxfnV9ØRciq=&%/1n( [^XѐLjs{yq龯ON <IuWwLP"0$=Ҿ,{&):@cܬ F+DDIOW%lˬUaKs)ige +'ߜ ]%S S1 =­*uTuI8-"}R)*2#w#d)~^YxbGzGtnV~82Gqc%#ЃA r:0(\k\ god)$q49`IXTLBgLI-̥ 8ցu<@tg$ +&r?g@\ ;djnvnF'')+bmoLšǭD5\6pp +A*՗CɖAFq2YW}ʼ~Epc˙hwf (Bt2a'v(-ΙӶʞg'N YDzxșJ`'W@`lb]Լk(-WOYRM g {wLTD*: ZP-⏼a%:%*Z MgO^my9P nΓ_eCjC%עdieIIﺅD/_!%t1lݪV~̌r_M):p0ԭE0HkBVؿ\vk]: |y>M{r-I!@NqV0R'j@C73q_mٽuR3y.9ƚpa q]b Έra&(o_kYe1%_kV;eU[ϛ籠X7iOj:io9@8 1VԚ=P8 H"bGaG'[d"~&"?l[ +75xͬBSE?ǡ< K$3Օ$0/a] z#.9b.ST4 s䮝&4.}7k mUhΫ&gORu+2mخgiױB ?O47mn!)h7y<͌;-5e6*r56 TDŤ)0R]U'yb'$lRVZJ.4kx`(pC׷x2_BD,Q,0C2;j*hXqPJц5&uF^gL!)[-!m)8K7xUll=求2px՜~Pi&cw𰊛YWb)E|ӑ[@#DEFc)9fs>f:0'kxw&@&e }z\̀f@@йB'17kNpR +œ=r!y/9k8jG,$GmYбDqcq9hюi2i˂E!gSYG;IY殘xw2 ~VT[.! +*\)? '%ywLXCΊ<@QP ]X^Rh6@?/ӂ>`$''Τˊvۢ Dx,cr 2B|֔/d 0&`i^OC-{=$}pY0̦% oVaqM1Cơp:$*=@O~0}5cY#4QM9Q%I=pxs5U@Ji?]($tc|V:!rJ& +%KI,3=Δ:-+C}np Җ Ft+zm4 > >akCP1Y/4*v +qb77M cC +ſŢq&DL&\ %k)z}nVwJ5]'N6N}ы8bo dne$V1*O}X3G>-,#pqMM`)H]Ā>%`Hpђ.}E[w;a @HD8p`6åHnl ̘Ȗ'5tTV4n+&H۪30;B-/k7|01#]9Ú},4X1HGDm"( +B!dY$byNh1="G)V Jz).BBljXК=@d yjӟ‚s;/M-7D>.\<UxjFza_D.|qc8\Ob~?AB>jWXWp;ieD7rJ|VT\6u̞@Jrtr\ȘlN;& L?!3(= +VбmdօP^& f'vK7Yy*b-!TINYRIlB!M$~$xCJq~xOKziSꂸR!3.6q7c`@`ų;MVy,eLydl`&V`q+k2BH,@lW?sIn:P4$Â#UD3ۻqn…`sG6A7 Q MI|gNMk=l`xiZ!*3B/$;ci$63糦LMC/qKzow8/x)^qV2CVӐhի]_+C"6]ң"H4#]W[1 nAєU +]0uZ4E"MEXQ%9x󐌧Dry0Cn+~HX9d<`VFhkAohdl-$?0*Fz!: +@U%l%* V&fN!_ +ja 9tR1b`4u ~o@B][<j/W&=װ)5O䠐hL +A4"B))up;c,  +E=l]`i: +5T7Mʽ$|=-\6}32A׾tK(o1>KgS'U4 )t&G"N F=USS +4({jdWRhwujͶ +p*RU&-d:"*)V>--m?%8-LeU4[YzK ]5} Q 佣 X7w /֟} 1[E=f'ys_ ᯉIa#4I  +qluqBSPplj_h!cg!dEQ%mHhq#S l0rKz%݇Jػs$X,"%=6^vtlQ_/&=8#h}, H]w9ԗK0rO6OWr`?;xgs">E7mD֞=5'QUF̟04 `&بdΓUSU!7km^szjMADFVVOPY*O}mNAW@4X_vhQ,a[Yv ~ ǺJ"ck[!9!;h.Rd"i>sU\, )/5%uFnZSVִOʮ,"WN_Ro CR˩D8Gz Mrkq I }߰t Ћ((㮽_Fe)n(Ph{kṣ r7ZŪY~gx0h* ) +۔B_aL~/HnpayQLHڈ^4&Bh < [6?9aMp6;7̀*;۵(-݂1mMB=#'וxYve$De.ga0zYX஽pz0!TpVHilLۉɹ p&+e&.V$On>/c!k^L iYLB\u"q+1vz_W,~O> mu鈫IE8 + D??I4Q%\>*dZCW'- ]".IӹX1Dڣڟg}w| ?)d]TKLޱQ5/(|;KˇBDZBmW>AHЌpw#DaŀbxЇ6*m('<^bCq u?p9e \qH9B@#p_ e`kƕjpCsan eTo!r;>:#7_| D(ށ,/,lJn^?~)qkF Blq:\-%0KX)8, PUѨN-tM-(k)HkjFq&4r)耡x=!ު/y E&&l(ᕱ8, Ʀm, cJ'+WaHSnଖY5Ml˿HPꝨX:^B,o ;)!6n)Kfa%*0|b kfJ['2ƜHd1nPt_)h철a UB3K"E/,|͝>>AdѠJqGB*<,E30<'*k22+YRemCJ*zt=9x'!H6@<15UR)@P_}3t VJZ=%"ZKh!w-L0qkW@D0Շ ۺ`TDøm-)cӃ"Գ5tڤX)GbfUKȖ&\AVͷQpR}Jh Nӻc$.$*Ғǔ(Dyz4&:Lv(Jцhz@°s!'x/1s5񕜩0pI + ͖!+ԟ4ĽqWYɌH0w0CPN#+p&::nv;%/Q5lU )e]r)],Ϥhp38 j5ڨ"{qr`8n *>BCSg"3ܲB#?;)fW C0|H5)M[^n8S?,wbmZWHcWXG<$% +IovˬJ><&!2!%\~[g @SyR݃Ɵ|ܸ<φj ;0h#%j;oV:9D\DljY45ar8?JF`CI +m4XS:Ґfb*4-$IoX|{w"[:g*Ѥ-,xA 5L +*8>̓-x`CX+B1FRHJM4=Gv2<(S쩂ld(cOB8,Js ŽG|3!L`ROT!c]ygB|9ֳ.wR6Cȴ=ũlTpflfʿg5g`$fRʠ{dOEɎ86U~icu#7'8ɲj9.}U/+{|%46=pŗۚUkY^Xximaw m%^mmݨ;UU]Řϔ:dI7vCu$znzJ f8֏ +EɊSvL#$Τ>OER`C@K*BvU[s:B,0ZX-7M@yM4'} }#sH-W`-6 r1A +q!:;\w|cZH=Y_^|)D"e@vIVD1YHzChq-]inmՏN&DDz7s +, 3EQ(ˎa7/EƼNˬ_%`BGdžo;AWlBPcK X h M.+)萟W*DDDZcWcP>d5{>/A +VvIX0F^DK+v@Ljn)Gsh#tL!0D.01B8 L7G8:r)pYEQ[zo#M/WH,SqW@e|D",V{՜R51JT3W˾uWO%U318B#տz-GqC#63 rc*.eI_I_t2>@]wN +dol~I97ߦ"\^6yIUFoQHot%PǵL9pFgj b% b?41`xr7!0, 0&6Zn-2r-,K}n$bS#[G0yh.DxKsSZ2&^QOljy]xa & kVs%*+G ɗBKd 7"UF!@#F `s{6=[P49Q +00RK& %0 oJ!UMZo80sĢf.#hsB yVvۯj0$E% ոJKrA5\py`@8)bI?.n !$ti6]*'%QFoPyݥk-5 B/'cH؛f_( UK$뙙.?[hzs/2N +|˃&t UNfɓ<PcfG<Ȥ >EYQ$D ZRȐ3\m{H3t\v3tܧ8S5x` -$~wfGfsj}o1D4|\<@ +~a߀f1gFPi7NP/G?P cf8aA3ZBFhf~mۑIfT_<=H ָ zS@!p|R.kD |GAsAΆn UvITqhyigPG={3lyEUT{e"'"TF%sRN˦iYܐ%sxr $Hu%Fڄ yUK^Bѡ]@cp- ߂ msɼ&%6H?d)qMI1i01^G\7VU ,쐊l0fżҜ8W\ wt?FrTgӤMs1#qq<=U?ȇ~R#,ii. +K+:0BL aWt="!(L Q׷*Hq5JkF(0r]|ˢi,)*[¸K1dhQuG;btM?~UUMSnZ$i;&(Ket6:4vA쯇l?"IOێW\+ _J_zGX`|!ХPidM-ⶅ}L/~{d :E~:͘oKkHXY]@xUpWT)H-WVgs'8cN7!$[%SbI@+lԅ뢿O%= I C$+H{4Uϫ ֿ; GHP8eO PsǷ_lQ;h:)-+`Sm(k2]H$ ??&MfE*"̉Rv}c2g, Szl#̞kDd> } |Ok2R(IǺw[t p ޝumӻ#cWO;xiUn֞Xq_Sg>"iZ.}yoE-PG߫*8wհY=(?\Ǔ{rJzTkP({1+>OdD6;eĤ=r G_]܎\% ^5*ګk|yi,5$P( 'NUڇdxRZ,cfUM,Uoɂf$pj)D>D yC zX%22W!_";F9X mΙIŀrtfW n५+9L1,=z H*P$6'L%Qmp%&xVq5qb +X|u(e߅ayXYgQ7 V@4uZ*Js#d.as/(Xf;mGn^?ʸ^go;$iUMUs|(5Bh -8ET@ n +nLK^s $WJ:IDIY/-i15مmq?W[^v Sz7@]Tߌt)*6ZɆTKO̚ŵh1Qe~PkM4Z.F6=\c"%uRaڲz®Eo2MyYVXsFy-$mDz M "JBAӫcNCpuRR`d-@j?WXD^_.1ee syȱfo 1ݻ֤) GC*^z&M&E|cZ~VHU +m]L#f-밋{uP埠|N{%z 2) +>?~ 1RI,I-o|M qyŴQy.K0ª ȅ`.w?]9!șɥEЄ ~OM_&`ڐH-\ Ԝ3T(#Ŧt; ]Iv~h5uHrULRdi--8tJGl\S1p"9x-v֥+9w(*0 + + PB LWݛc"y}/z +RGHE&.AЩz=PB8Bix!M\!k/i [{̱:QZlʮR-ߦ!$瘁.mB>Ňc|J0UsTEU㬕 z@N&ANEU^]6 _C:e<{m'HH*iCZh\* mB+X2 Yfp#Q%* o+\`r:Iwb!5O_YㅸAO@ۋ(7C]=UrxzOW P;.xeeQ²,Upfekz +ayJ~hJd_P 2%72vcֹ/; V +]uIylػup7Y>~mWY4,Y>+sA9<}x2mǗC'$8Pʽ |.XWUPoB ׈J:NQq(%': *CH0BvnF)M޸H,Ke#-Dи4xkXP0O l 6"GȨGC곮 ᅃ?o*>T$OZR!˟Q?sns5U![- V='1&}hc02~tQw/N6ءSktgeHqw>{q% غT.W,z]徬{@i@ `^=6U: Zn%AUkwqW:~SoyH> ɍ&? f RYsk  ;qq{IS R$/g} T!!f ++Qw,`1iPYM\LCT`?TQ0.Nzs<'1Ո}cT~c;:)%1Eҫo)TJ7s͏eʤ@~ *oOb/'(rm F u->n'7E­0vsVE^|YOj~a7`$;6,#;]rJV4pJF LWrGx4TTD>!T1Awˁl\ҷ S-/'7e]3P  \N@@"~ċdX d~f|%{rUS_#7lպ+v'zep +U}B7¹r\4ր ֞޻)Y1ڧ7suy9ڪ n-du99`R75Ho @n{ %*;::zIY? `дᣃ4.)pXNK#q@ԘOt` srTaM +ļDsB'mGbFmD \^vJ&lR&W} \Mt FH&CL0S  TxHBm¾:gV ~<+epM4#)[UE+B%>G>`?㵈Hǹt,~@(5bZ},|ڷg66*'b6m03:4ErWr.F 8~ sQ3oj)' b8is i * d!P@%@b@@ *<~^$.XZD? %8FMO UtKP-M0#h^޽g&ٛ/0;mCH/̢0i4FRu, F8f i(%L@@®Fpry:|, 1b9A+BQ0Jrl+-%Ld$YF)q"[1dh99*T:mk@@;K]%:z&{@YQꓕ-'<le:PU.c@&t+EpJ98.:[)a[YXd=paG 5<$,p965 "QIZ54e%isMOVKʎ-5Нɯקy2D-]m>X(Tfg +r +1 +EeĢ/"Y^7ZrM0 +X!7NС &4" KkvH+#s$peMuƈm$I?GNqI5ho d*7Y9|h)kUJ@>V?`ERCcc~)l<͋ |H݄4ʇǠ A1);:1 .!: 9GJh6u+=@^?ea|RFh6<(E bV;7(Jo\ 1'h v^C&E\B.'mDAys<O!P@.atʂwRBɕGwسR䬀ҢF,dRe2Lq-m(50P (T]b:#tͳ)H3'bYXǂ|| :ZC['>~ ;HdmxYty{sf~&(~|΁Vˢ;H"Z$ PC)H=.eɄS,@!!4|6KP;5/WHJu5qIX((48zĺ $$m"=qUD:5Mhe=F`F44IM= >}@ +W7qլH^eDtQTDz ƀ#|1 ]01эP:4%99jd({Z=aC>f/L':;ŋoM XD"Y{T#v0iN#NgPi +J[5 B`BVigy6Q2 +* Q̄aVZbfHwyEEYZ~7Jq/iwvց2JOIJ##=J_c4R$5wRuR7!yVg-CgVPiì￀,\8NsĻ Rt +LkZGkHB t7w68bƳ b #o_ 7wRjև#ڳ;q>)0Zw""ՓXb@.`⾴bOZ?f(!wEJ1Y[g__V*OfTHldE[$%)1434-w k#AR6A +R!)^0A]'q-ERf@5TtݏT+Usi?4 >J?%0׬_:t#o|zdpK度%nZ9/|UFp.~mrɱGc2inL"" "E3adj4M4hQ)qv^DiGL3b_3qakDH9%/r[WV.!^7 {" 9=Ln%5NHsP[6lR*퍖Tfq7!/#+K؇['n/^KJ"=Ԭ?)9؟aB]j˙;$j"8:e_)' abm#n|k_1ٛsluHh*-V>n4,)=/$޻)7i/BedMfR&UӞ,A)`kM#n5vo&07tQӎiFp.-nH;S4""b0yf_2qzFj [ +J%{=\ygFJ! ҽ_#-SXlGw:rM[j"n7H@6\>L)MaxJ~ip8a]1wG-*RA>.cohH2P$IZ{\TYʰ5U3-n[4+;<]Zᕒim˴cgmž!qjyiĭ e x|;Tz9^a +/ #!f'>+kuR 4|2CaPCaCnYT9df0S'8C>jp#ZSbP{n4Õ]M) bїYo\5- 1r?m&J2 YBǐXY d<]l.2C|@ )㦒d[p6Ig}/4{& |88zkz(kRI&]o5%%w ,nI`.[9 'W؎}y3xd Ғ)JegqUP)WDX=h‰Z;dDHׁ>.)݀ZИZ>bުBXT쐽[2Pq#iTs@.OPap1r”cPd$a_(d RI_Aj=ü+ cú]nVh_LO)R20|"sO`7~},0rxVay;t`+uP$C@*S +fn3Tsʐ5 G2 PGp<rl.CKy:3)oeh&Kp-CXSL$–~R*)Y3О}"h)& 4qj_.?MǍ_M4jbo09wLD0 G!"%[{:rY[ gYu 1^o Op֝`q!+f 46Y-6wi\~ףt. rlJikߟ R=[wvaxNz8{ )Ŀ;Fw DH&iF{"T7YeMIpOz gNO;exvB ފMpҞ7Éy|Dr7kJ`rf}~|]GVv3 +Kg `H"%onUKW#bi3(N]> m"*1$|rN{Y@BBڒ@@q9r'!rH TU\菤>oR9/KJ~"-kޓSD:O F:-1"<‰K^@m~6ϔ'm݉;3P2ԲvtY;-%@>P &(]wI0x+ӞxZ@#=FvGV2Ӯ-ugWc+)&%2F/O ~+CʃzuI9d5^ӎ7z\|v"Zl{cˀ_Hu_>5=y=*әY$m#*&ḩJɒ?퉪 T.uhg 1gmT =̻Zݡ@C +䈂+) \̻C'#(p2TץJkVTrCH9-{J\@b\IN;j]#;$dPn<7؛WlZĥ+ڜüzrr1Vћ51]V#Ơl$nuMae#rAX_r*Y_5pΠvIiN4! Ʉ'R@9b2P\ !gVz ÕL$*gfx}\&\])).~sKҋL eJ@MR>haR~zd8 &AD`|b.kbpJS~_5e+#TqB +nŘ)jl)MpNH˳/ٛ -A *{|"fm555n,U2Yh&Us!*T%JǜwX; 5g헨kX?hG*}q| < ao!է+\RO;RgU%FO&+$*H[#xpHi5Y/XSZ2p~q)=wKdagOIm3 /fQ17D12 C1Oءw ^4*Uo-GpsW{iPw/whO%")9xx="#2`q,nשּ8w YR2;׽AOpݡ W3sC0s+.m yBC"=a!擏wٖX-gG˱ArJZ$_Ә=oƬ7tL!n.[yvjxhFK7|IWx.ߡ`Pٛ=#ߊ༹N[r•ҲM:i?mǮ8j* qa(1##dEMBQ{=ArސGā}N0&Ow-LP18mJuX4zr1DR#Duvݍe$GA =ĀSkGiF?֚ʏ"f& G45dR`mpaHO;"~؛-A`M\Cz^N? VPӮ"{s!7D*[(e _N/\3r졑{HشSBɟY3_cYޏ{XmXm>#A}`"Rs5R[ST.N4QcߺYJɂHڃoP( [Ztm\Wefp)645$1cSMI$psd<1HNYlf_*0_H tTSoH!;f&Ѻ wx`wE_#ϑтs۩{%HWU@ssdJK^O^uGJ#SƒڇM&,wTvʎ>7j.(ق/WvPz5 -% jLG "W nќaȚ~4=Ko!oBxl$gW-ۃf4ˍ)/r4Xٺˏlu]qoEc %q)g%m~ 9 (jm!'¤"ŧ}|YZRYu(^%kH~0?Aт Dʼn9;iyݻߺaMh1SLC81 u'"2pcR(+Sʔ 'W]<5#oYt_L[*H==_RRV~/C\Np ⶁ n`m$JZ +{Qz? zʍ)W_uBhL<~Ai7 |:X4@R1e?UNC(Lh]pU]-n +~H xo3PF#KXhct)mMN/ִ C ʗ%YMr J^CDJf_ ߃ϡCd dQk z +̴+j7 Oh=7Huݱ=/.`C;y{5 YV? J{r$`A +&_[5SPDSY!Zp2ܢ IѪ B(^<<{;l4Rf6SeY$)Cqҽf#ҎdkA5Ri04"o0S(嵖F}(zЅ?ېP ҆ġKћ=S#lz~-S-8>4%ҊWe_2B|jʛrO +`vDը|ǑY?Q-OZ׎{FAbȑs X"WQW(MTJMfd6dBc:3FRuP.NBN&( &E#aH (1XΠ?6N5㜾:I/]q@vOhږ2>F'f)_a.:GxU猂,wC!&Uj>+"t pfPPIARb;3, =,RTjRrYZU(^gekW0y"ER"P !D*0:Q3 ʌ +rt[ɖZ"ITLPVքb6`I>)7H>[ ?.pXK>L*߁FH{Fb| !(x&i$+ja$N"@ꦨLn+<` P7Pqp/0ݙdi7Ō= +b558nD U[' ٧j!FWiWמ>m|?`˅O.ɤAJ7K>I)&j(A;{'4 +AQv4q/ f֏KuhɸX @&AXrbIdA lk` +2 + ]vðEb:̒0HOCA%\k]#Þ85~Ԓ<Ȓ4Akf9IDn˹g @17!`PGrPKBj.S,5Ov2Exosۈy%:@8xd'eas6`jEfC%ҷ{p~fbhd!?ܘyB 6zpoiH5]!>̟ _{F Ab^> cpЪC43Aȴ/;;3MB H(!_ㅖ‹[A!).Z"Κ8BԮxNlp8 ;!.e ?,b f'{wqN.o ! +s 4!ijN& 2^;Dpg8Ћ"+!Q18I&d`Ssr_1jއPK"K+Ǭ qu~!GJREЇ`-Tr!ݢM;t|Lez9S + zt2(t~Jsԛ>9`%9"W2ztǑ>wӅ:bcVaG'fV"B Gx/j8B4PrMNwp w)ݦ|aAEW;µ8@iAT)PYu}Ha{HhϦ&<Kd\ԽYA¢$[ۛI'#V{:# + FߜdA>O?-c%Mab>;;,),rĒx0q*y70^C1BRg~k5A~S0ݢ#R@f5њjfE"HX49{,8C¬!!dj+hd!mGHp:О0זWiWS*A! ,~%_yyg >H'ѽqH|QLB̊ DOD? +r/r,,:QSz&txeؐ'O::DmHKȷ +ŨO'jf82h!twS28 vȪNa)5!Ĉ巳M]vf+e>MG%gAF&fȽ^_ Vޑ4o> 2a +X2pf! *d$0? 8N7"Ets"HM7E1GZ$$I7[})^?;&|fu5AL7aOF!3BfzH$ +$ -UQQnz~\mh Aθ<ЧUeq n~x\-W !M +q`,l!V?s^EegM)sۀKSHiCHpBm:m~C`knŕ_h2]-DcXnu ~u$M/s-{s5Coj'Aȩ;# s0EXJ爻ze5NL;p!;[>3;-zSQ0" {dIPeɤ eC~DQ#؛bշL֙6^†"(ȩw#IEapyfEr ~ {XMe$#HyW$tg_ zEzAk:n%_؏2!B+ \o[ hvbz Bj4x=K9fjV;Ěf{w,n=?c' F ,װI&90Q +]x gs^׹~oY: +9IW.+jGOdx7a˨;MaG^F_bKv|)?RD^Nm5rNx(O%H0 l?fi4Pr֩H}9=A'LJo@ͱ3w}>gCѥ?*_^!Iz%oܒޝvOqVjW L`s-4O'g2u$>?T֝ hM2qYɿ-9p8&33>6 B!AHFqt˷һ P߶&`5=8 G 9ry'Idt}Te_.@OA?)֏8f1ƈKYBFOoRd!9@!'Ÿ{ߠFZEO X?@?v14'g$fo# 9!׍5vZ~0_lLb"tҐMߺd>#iQZ!d_,fzGw.3d]L)AS@Qy]ڧh=f*;H~Wr7Wڰ7bqT/@ QB5ZUv,eDCpkwyꥪ 3$cHHQe zR( pFr25Xg8;p9T): ~eD I2}AL%H-O j7z{i1|?9HDw`.MEd7fvAEaX;: ':8 O -dpDl䍇i7Β'/Y4 4/z`4N$ U` V\H ' +u|B&$޼Bb B1$aOHιB~\l}{Oԕƻ"=Q0}24]c=),Ω>#Hua\B@3^O&*M#DX Z]L<!:@NUa;k +pw+8nQ/2$KU@W!:^24Z![Ь%gXE/=Oxb s@) { P.aƒ2 Qm'ϱ`w:WQeT0j(00:]f A9D?RdqPĠ= M9o.pt5oyMp՟ ʐ%{2nR) *kFԒ(sYJ)\}WeV.rz/N ]]yx;y8 DMJ] j"$!3(!4!"|l1}#40#! >IA-xѸiB vTM 3p؄xRٜN\'God+UOҜNR/Af`tGBl۴g(S-ANI:f|OɈ򲫹;]Vwűq+$=RRĻ7!D{pGo5pyx҅ylNAk# EZғW.yWPD:S0 /Iv[͡LnueCi!AI|OKEEf_ AyBkyt\v,RW=OTJ'JrV/ᅠ>k{YwYh&El K3&&Ó/flQ +eo%m:3;H6uOFTis"&̭3q軰P:X6@8|r ]EAn_qMKF1St}zśH]ׯ[y)tи9P/@78e^4]yQ}QRVr@zD뼺qLBRgS۹砞U`QSBx;YGkL'^1/Ԃj*y!M+)z+Az_a2_fN'(BP߀0k + փ/8u FBOG\'=OqNO]SƒBq2=%M:3 (QvtL# \f_nj9MphzjP/,% SVMohbNzpdS짶ηr%`q'Ϟ?FUȝqIPu!i$c([(OZڔ^'u9s;CTf#ix ǁIdmVFCVNK\EXi3UQ[Ռ,->!rA#pԕתmۜG ɶMq+14:4ª64hf" G7O_;m%gN ytЛ)Ӑ +OފgƋPpzgzL1~79yrm )@qM~_>1YBM[n;`GLȏ_-yz lCIW֜:g6؇. +2dݺF#|"I g;,{tגD[{IԕX>䔲Wtu\WgPfh$İ3`óNd"[-Clq9ז |-tꠡ<#GFNn%5PMb/i& @&V:ee'쮳 yi28AļL'?lC%s:}dcD=g5'j^C Q:q*NB(Q8l6uHFhido)"~qc0X{ܗ  +ƞHBuQ]hՇNgCHuH|j*}:6:VңR-"eaD{.fOeֽȄ7'p'.b={w$YPY፹0;=JƉaV Hk.t B!IN|Pv\a{^<5$KMA +"/,ʾT4  5#Nr!~aQ-+b[s"3.R11P~#jDM\LLKcpT/h;l2Q(<3e"_u󄭋=4+ܶ"~ͣ^\&^(@ KҠ>4h<5MaN*:h!ڡO0SI#jTp m.֋`ygg5=#Ĥ{KHRGg0PjvIGװD 0/C =zR&ǒ*]lcid~Xi lY66} =7y{b~Bﭣ4t175H#I +NME eJªfS/b{9@Q/3 wV@'V#~pyʍcS6ŵOkGzR}+$[dZM!1{֫|sݟ t}QvbTM ;ߒ=r3yP4Y4 52A5Kw$p)M-g~{G*-SlE["P-aN0,:42ObVOA_p`UT.Sie3.FFkvjrd('z2iE46=DݣGXM|d7WZnIJ ~:3g:gI 3hþqYw4n {9uٰYZ:9lxL wy`ÊviSl9&$\jsӾ|%Ԝj?y!iN>i²S{/ḓi0d7JO@X%K넮i +c"hqF9mHK qmA#`{]'c[<`}s5βHr-@d#.($ xCj/1acnCY* ]}uЗ>OLw.oqbA2s|m<}wz1:|dzJOU}!wꊈҐHʒ]()Ԑp ZmWAN+lglEx$l/ʁ:Ժs=k.6x4Q~A^Q bE, Ja-T5>[cA׃ C=sx5ZZz,CdH7³&%7"o >q3`OB|E8E8jh-Rc='nh,|5qODVgf9.k> 㥴OKa3U} *pם8N + zP&8MᓤvZ<>jؽP%ķZva"< +0Qʛ6S +*)"$RoПYY঑77]t$7~بv H p>zhq 'w ۢ)[${4/ ~$u+ E%*#{ bvXpƻu,^YkV,4am˲i۠|uɢǥެBHj߲6E5ţ8 t +s%smjox-#A R^=ȟjwXT9 +%p%BI+\eEHN57:ha~ *p#U%aτs *H8 ܕR;s~j7fjӴԶSNZT|%Kч?xo̒Zj!I1M[$֑ixjA?jhrϦSDPb*WkS8 뚑,y>@.4)U*!Cx14Ķ\aku٦"8lNG3 I)Z#=? STQ25cd҄ -h>qh$]&s%_B#BޞN0XD.tU#keQYDe uwBqg~ٷ/cavP1> ދw0{W,ՎXTʻrGPF5*qABi +7f>,tN+A[Gi@e3C5X74yN֦5Hj[%i_=pوޭ;.&MV5Q&%IdU#1~S 7э͠0{>uT82c`WP86=*M7/ĎsAX0GXKN;biYCא .(/_Ϳ+q͒"A@F NЈP.*Уrpzn5,v;q*px%EI_RY9P) NfK}͒,>:%rawa|ZnsH 8LzQ +`c;2Uq՝qlk\DgoF3CU~;o&) 3D=`vkKheg|CF6ft`9N)I (0,)*בuPo֩2-H_,&5B\vdKt?`x\} vaDl幝c%=8~Mv\Aki'06*8j7z+8mR{D0s'G>D{r=ΤP %$Pa s6OI(!=Qwz9z|Obn +&WOb9YZ@+<*iRW %oK߃Uu%&%^iRďS &P 4B3vhRAJ&̖gaՉm1 dAbeCuX^B,wT|>{ @`LLM$Dך+f\xv#usf@23Ű(^O8&2؟[lB7v޾mj)O۝z.1iBp]bS9 $TTįu)J<"o`gȏpV_ vtR`5,*["&gR: 90/a5xL>bzr|!Vf[dGa!1AĂO5G_t }\Ge7%CN2w/I"kn0D";[󣃊Z-l9N 7V@δ>2BI\Vq`nq'v{ #q|Z?M{kds9{ۄ'[3K$e`tt9m]!zp;23HKs!Te =CMPF\3ʆ=j# 5Lx7DŤ0,!8]:-m.:~/u2R*ΡK"jb&bZ^KW2'wP$!%12!!qGZct!m1t=Z/2c:]HCdDOI/Ռhb^\EQ8Bс*XJE؇Are BliB|i@Cs؁ lݜlCLm&Q(1s)ˆ=d xFcH_qZUeBt_J"e@}p /f,>R86 ",.ȓl>#ۧDhdi-(rNU[`<] Zp.`bÐZnln`d%\Ҁ@mU<>~5=cZTo4d*󴻈mHB9ŀ("/ϐmS;(z;`)\-ێ+8S\eze+O'VaoL!vZ!I $ys~tͻkk5rJP 䋳 +B^-R3eA@u( I !~dC.}f@$%e#̦3طD:d@_Da@TrJA&2|և K|^Y@1OM'gv[`v xqt> [Ռ4h05\q⣃oަZplj0RNB>O /8jV<c5Qw&kY 606]!Rs1l0;d+T$e1<$K*WKJ7cGj=[òBIul4Yp %\R8!I*͸FE9'^( ^N0橥=ު85+lgHZ9<^^w_2:q +CrléKo g$4ۀD\T1S+d{?ҤĨ3& Eforkl4D;J*}J6m'I#ωCk<1F`ϢM[Mj%opnym^FToY{ #x_Yp65!?-S"ً(e4EZH(cGESKs Μtp9ЖfiIyT修AU _O,fā^rP1.($*71rl^O6YZÖ Űe@tWDSϣzzx"Hf*cÓMk7)Õv914mhblBZƉ+-cZ5_a=K[yi0J0hL1+!J0jgBHF]XR"L=&'`d}J3|mR&/yJ-0)6A$\E @ؾ1t3^(/;0@8kf +N=2t(@i, X+eq]״/-Vw[Gi;X~96xﭪ5Nx7jh.7=$-590p{ IG|8{LVIK=Z; 9~z]p~emN֘$0DfS!2skPJ|I+xn T-<;+ <30;<L$9Ԁu3 >{kJ,Yi0J⭅x \W:ޭ +vضnyue;U6 +Kl䮯oHYB}6鮯_k?X\%WVs6G}(EOދkãqtNﳍ8oMu9ke:e!{ӘSSXm*ïlyOU:07n\9{=pp -% 0Ӫ2T¡,gA"qgjTplmjH>]pbp_K.ᾘT[=!%}0 <6/.,W0_P4Gȡކc꒝v0!S<ȲP釠)|>lC X{uBJ] s^dpW4GzO`0O +<7V>$$@N}`sL!51o+>ĂC q m=Gn4iY")eo5ҟW-dث #B[K9]aT‡c-pxX$3E\ytD!6;c I#C0JM.%)`PeS m/H%xGfXK\H6&lL Pc`IAcyƌ n{O<#2 #NәF4&EHRK; Lh@w{ C┦0GCKً1)? gGzTcj2NكR?Uw9T`X\Hsw` N\tjⓃBi9T_TkBhy>? VYB,z{G];I>|m@p7\vRuZFnsnOiv [| 3YE>K ڇ7 .a?%a6_u;k0Wpi +^\5΋[E $HYh˟*4,Xhd:W.0w *J]NBSE*P4zD"Dt^Ӛ+m@[OIo@MTS >U50ZiGZiM/8U(k,Dcn~ ziD wF X1""ȲĀI c&0C1'3~ymAq֐bGLItFXt$da%h^ d`d*CT 5%{D.E7CCmrx H0vSCurlU86Ge/ѣ0OD0#j1&\X .+fJ'VCA<{Tb`3aDc(@Amң1"(Qd2 9#>60\eMFh {DR#p VВ` +\+LcX<HF5<ԕ +/J2p ^Aj$N:|=.0JmzgDBtSEKUTzK``(d٘g~ŠJȍL#"Ss) =%bD5K.SV al]ƌ/1OVX5dLYfL>։@; v!z%;`" |k!*23#" P|:F Bj(I7LX&"OR1z9@4V'P>PB#긩&V'˽sR1esJ:nM*f%LH7?rLX4Lf36ύn˫ڲi}?B.9r]!*~ʓ:.$RqeF+G'p8i'0Sb} }@M<Qٵsظc,$|H`B^^y 5‡bA)xaeātjpbvA367o H@(DбF\q=p;ɳ$DCP|KW)!US +%&X ;d;D{ b +# T@iQH$`{R6{E+1xQH8AVM8p"bl>e&6O`W1`40D`-BR= Q5!1 P늅(RT5HXHi4^T ,)@LJ4?a< P,Ps 6 HXƿQ9t|P/H@x[$D?+mBW$[ 6mC#;j!%.|k 6|MA|9xHWa$"b! o nbt"sLgCD3;'ex:MPPT +D3< qA vj 4.zaRJ7JT:p$S +%~i\R8I1fJi<2L)L c4}#=`yt8'tx\6p_:t$A⠡u ǹ4JE"iцI!Th5|$ 4%Hv-jv,% n6b՜{TO RoOzk{U%$MD0@EC G h#P7a *Q ц@,LD?)G8;GC06< U؜Gal7E33NH~B@4D<.N0z(`?0XXo'xM0cP, f2Y[s `E>F^|Zxu|C<`ʼ@4 | r' w"4zUBXSVS' R`ƪӤp1L=: H@:֋̓Dc" +TEgrjDC͙d(9 +# il2Q\̓gY@$TQȰqks踥|Ƨ*UHu DOgFbń/GLӅH&<Aj􏪄φ<#*`A9H'.CJ($D59-I~X!- LDW:}N+iX+%>Yt.ȓ!DpK[G|  1Ib}Z 55^`֥,jK]8: iQ5&.䱈ᅄѤ@DS(B:qMvh!H +l,( P,;|ٛVbtT'0Dbj5QP"(}(!rÎJI ŚwA8@Sb7(/ڔ=L, |H`mdM$Tg3Ñm7B7N/2:n!KtG@f&OF@:l˓RT RF*@qif L<ա q( gr J8GھVk4,Pr҆q~rG RѶTCa5rm6i +E +@b 0ٚ}N 5;8*Rn\ſqc۳ld4 ըymKu,ίU*U5)kHOrW Q#%b!)P,DnznlR`cJ[|3ڈb1 0q$E) +@T{Y* @] EP,Zq+H!By9IS6 +v2xXx +:A9v]GYP'KrP,bu P,jC& +lu4n5|̃c e #P\jjK6{AۗBeC#,jh~.)T%B? ٗOsAy.f;Cn0^┳F=ro@wT /H&q8,>l[P,.bPxcOobmHjZ<A$-QK F`FP,H p<XAO4by)4p>"m&q@L`àq BgtF$gqu|~cs\ȱHbe: 7rb"99.Z9@TB ]7/̃&D% ^؇b0[pH'O{ LДt~Pp"V0@: fBXzJ4B7#(Ye ʛ]Ң'6Fiwu PE>eQCsD@S'ր;V.֤1"N%>!j"_l +Di%祈Շi*2Cš70DrbPb=cgX:phFG8f?bz~)A z>q;?77NcA HJ*YTHIcEͧI[P,p1 +PQD4aiD:9yS)lb *@/Y`'pD?C!JJP +G"A[=h؅cPO{.C04&Es"oB^DeʜLgh|VC!S_0E;r6͑((P,PvHXN P ?k!" e bq.x;  ;.Sة'uGw>W?DA)#q6`Q9'5;P,:@2GuyH2?i\Ag*aiQ,@h.'. |1hI@G* P04.#$". +1qI#OrM'$HZ!U#{ J:6܋Ea,e\n n!2s< GO9*XXdkxҿHC ~, Q +"!ލ N%H!>HJV5ɫ( O"-_@T]JOW&~]%5{dIwzOiyfҥ;W\ku[sU?n9\_֭YުGnW]gVkz-_}_ۿRkukk+θR.owoޟo=oQ||uk[osiM};cf#'EZfN[MrE+ٲ$ҵigso.Z\U;b}ouSjk5h7k}֙׺}g;oSjZw~o꼯,1S1lAgVm/8bp$5iz.P0J;S9%$kCٍ^ p0^CEKMϥ:bU|zkH%`< >B + (QyƗDHZKJ^g0g֑YeH.u$<5&VZyF,W82p'[|0[d>! [#B9`*y-nգy1+DbxzmzWBB&Hmȑ&Jb̤)&b%=V+IQ㠰3r y3Tr nxC$A8,RQOcؘ[~Uڛ"oޤI;-+-fn $+ Xܠ{lF]PH+N/tJ +jY$\Հ'=Z@[:TPඩ+/ .&~"A>rkG3q +NmLxC}mUKZ i}-1U`l_ߕCs3̀JZ}|+A!N[YQƲnTCo?"9K6MMKG.*Pqd|O?5ZJݯKGf2Q_֜ +y₊_w4 ՋK/lns᭝n?e 4$ jҰX,r&WjdV@yVOL[RB2I%Wz<'P\e}bgBVc GXnMz,yI`&[iڗ,V+7LW(%ݑ`?1A3\q +9M4+2ɒH`o=HRzm-y,#B0^\F0׫>)4r=B5T(1}נ-ڒClKq^wa:Pw.&tR\ +Mg^e%yN[hED~EU <yyARs+)7{!'ݬhQݨ@'R(+z9_Ӂ&AxcfDh &ύ݉bAΌ*17(;khxZe +ُ_` *ؽEƜFڵ$OlhI3e؞ibHU],v7SG) OwJgSh[kuW^^"tkѥ<˚"$1z٭ݚb zsjV:MI2DzɠJBT~E, &3[X90֫C Rɪ|3Ef]B " s +XD8BiS pA#))$]L bvc(r*')R;;,m@@Ha)Je6c6bi.9Č|BFa 93xE]hPH% W~ s"kb2#otbKk $-ȫqxD>4 dHmOK&{/ey45P*,K'dQS1#G;k{r9MwYV޾=rRbUI^! +nM|L&I(tf`23b\$ rv}8ܷdß".nq%56%WHE6#<$}8 +2]5!SDcfq2՘GIYbm oeG{47M?ϟď=u~p8A&VO1:fH:1FSԐ8uja]ETCz"YMX1~힯SRiXOi,::s| ks]O~S[Sv:%Ytu|3ֶz;GT1EOK~Xrz=nmSoxC")oj,b[ƚsߋvDiQwv/s/PH}BQcʌCZ8u fA[Sw(n 9ʉ(^QDqFI\DㅡX"XDu_T +6Lq7v n -Iָ9 +I fVAFRUNqk]ٹs^'t-,[^"!Ȃ1kU1R#@/cIhQz"yۋ@$(#D9cFh7 Q;L\&@+$f;<.KCW;VqV +0pbb9#ཧ)' /3h!c$hr6!Y>_ W +2, embf^͜Kp[ʧѝer‘MϞb%1I])L,M'A(&!c~|FpNݍ[{;AsةTD[.d{պVᦩZkrHHԺo(JFdT6ڼpx#dtp[?!z3:H̳3: +qP%<25Y0wi26ZwiGV624Vַ>J=:Uy V*3;Wl_J3kwbUGÎ6@r&wv(aZ5˿l=2 +ZL6fb a(X1z{*2~6͈RB4qJ-Y및 Ujdِ7=ۋ3dn~Z3Lɚy(sk.WjѿDЮ;X j"6, cDR +.mH;Nu2v2fo'sؒO1+}+ԁOmwd ٳ[_ +N]L#|HlG΂؏,L >K_eɋ_;aA{*M  l)i$C*XdĀx!Y)& "78,ҍE :[g~(8o. +8&΄"O|+h8]#3cqqẉ?&IVA5Ze958=M{|r~u~&TP'2q=-A%hN\'iw&I=KU6+_;{Fiq\XX3@jrFRX e/-4 ?@.Ծ#Yʠ\'H'Ի0+o L]wi'[ݤ$u['*䒁U5 d4ZP*D BatzJD3BjB 9v;Uo%b']9K5zHt1 *SD D=xj! GE~߻gޚ TU:p@"Nc2IdT[BaXѨ,K(bPE=yMbNS#yңϜt؈H$"C9U(k0q&ی#Di`ś•Q]\IBWJx̨wp0Lr:u m(Y'#Ϋu+ ^%Oy2Ά"CvlX DR8`JDghSO +8!JRXZR)ה0>0M ? ?3L'7.Ντt[v+OgiSq'˺ݒ,DXekS3 ,~04ExЎ ttFt}' Df%Zm7OKMzCh1KKƒ/r g.)o~{V5cR{uGxDaTT|**^t]NI&xi&Z`pɬbqes:o h2f<{lSP9+:^Wp_W> ]}}% ͜A6 [-8wvr#Y!RPaf[‘yF\0?y䠑N$Gܝbkn'@ 1AI V;\NQ*g*`c/uBo H3'iXWbQ`?k[vfR45WZdPK]?JɩT# "bcirLH#PXka"M#d`)#Q/dlP\g!V#1>!q nvuhȘ+75ؾuSbO<-k (6T;僢ׁιQ+rl+j]SNσ܏dPO, 0ASkﰾRvya\7m 6b(|HVP_̶l ρɜvӈ?XdѰz^mȒ!ń5f-[}er,6gvP3a:ҨFNaDfѱ-󉖩Ci(-@^،HxZ(;vZ=R!IZz̳C,!_5 ]҄;X4I¬DpMbk7B{dWA6MAZkK1_C6C@FH}x7\A6FHLOBk0[S1,5xguDh 2 uj ~u>X$zi1gmWG{(ƭ9﹵Akiϥ񼧒d053Cp{|cwe\xf.(-}b˪OjCg lIj)aǁAԄH6_{adOu!ʵXg`K/Fј$ 5!i`b8'SBKH1܎8 wu]\}]wĺ;no +~/hg i>D?T,f|@tŘذ_VKc^`WȷxhƄ$8#WF(6 9aA0q7-jtF_ɴ]d{䤳H|<(TO/ 1z + F?r5n7NY) |T2}Z G..= [.͉<_yjS-(AӴ5G+bؔ[ޯ1B +B BɒR%׷9F9;K9b>`*$x@@F1B"HVKFPG&~JFO^A͇')9w8ߗi2«\5%d9[p۱4o4#QL3;E_e` +1YnjDtAvX=唤8XuF1^E}!kbg>(xԂY!nOo +$yt4>5@gNE'wId9!^{C k:3be9x&5:h\W%h3#8f&Sڸ, 7<}k,LKHy& Zyx?]$ص#!"aA/?V^>4=U9ݩᶱMx9a ̫_@ v01* <( bp,ϛ>4=ISP /זtHd/Ћ|} +FrP6*Mvhr+&aZM%E%o4]E^<3 +FvB;1s]0,ļo r |̯NW;TLr#j{ oD*yJs2ecu^Y C \l`"]o\5PUk +X>Hqw¬nPz@ӤYqӓ\2i6_;Iщ8l@ش`ϵ +>/cB2;oMG>r@*S\vt-nں3xMAq|@d"KeiiZvv !Pkw>NW?: 8Ϳ6S Rc\_GW$"q]V­?i^r稯L1Sn(gu^sDd]e/ $~+[]9A2Z|k.UG`?eE-%J ekKaՠ< l#1PHhsZqTܤA_xz2+ 9`KwQ~XaAPZϔ;fTUS]hkԞ3;8NֱIv@h,D Ф'\*ҫ~ +.Ng^R;}0ƸG}whka6z0DsW`a̦&#C9;Z 6Vٗ'עw5:dvC\Pߘڳ\Fׄ-t!u?+TZA?zз{]RODYp۞voOq̀߫4c KS\ +X(ܪ^l31>I%X`[>v{YG)dJ ]$;P=fxAbHR=vkR3s X& Q̞L6ViwkXƜŵT?9wvFXd@~r#_\qDh>jH0T3E!sđYs_PU11BdG* d 9Ųt?ܖ_.}9~-QiitHF]OrǃHBtOYC?ub@ic@ e؀#r.|@MwҴ0P:\2>Vs$@t_cI1^4(.6v3‘I + klԍ4Ǖ"w|RPt&YHίnЮ$ .܂H{J2m%X٫Q~33^HgX ~QٙH.S!B{ϮC IQR %n +endstream endobj 14 0 obj <>stream +_056kDܺ)NJCF3k OF> 3ncO2RSʚd@ۑH쐷6R:mܛv2"z#HHN#GEٺUO \h%2iTwK# };Ƒ#96$,wmG;G(K$)8H V3l=ȥ+*?tT]?Ds(8Ҏİ(j{B:ju#rȑ y~.Ĝ8:e'+Rhᐉ)ܗLӽ~9wޕ]n +_g{6lPgď ;ݘ.n(3hmJW*#8)_T̃6"B$re'o;2Ň?jK+m a^ 5Cl[:+mj*V"&bպDIwiNƭb[/:p5vщjLzKӢ?Y}' z-T?SʎY2#ݽqF Ġ}{Eϴrئh\(Fi>"B$4}aw" !M3tVHjBsZ#CgX|:1W4\FQN喀$(]OlW1!g88;YBQwbthAInqQ$D5:D `N'qqWhqvD\~FXl]LhA͝Gamn*ArܻK>RZ}hCIZOlF7!_xnL\,E $%67> ,n<_<%X n(F(1Å3Jև"Ed>NrjɮY1z,hMwFBԬQ{7[(2eVTm43>>bCi*eG$/,IY2`~J48U)7v#_I7r]¢[Rf+cP QBT͡n$2+1 \#IR]S<#^>,>J2je,J9XJz E}ěNτ8U|2n"oQ~Vsg# RucE<뚴(mB<σ:2d dA%nc.l<&30}̐XI< @o4rÚ9n%C zQ)䧺bRI*j_'E!H .F pQ)QnR@ (5ǃ#mHP]Ggͫ|^pjHxf.!_Og AP zEAHA!x^^oOa \(p> Q؇PB>J #!@I +p<=hk[yFzi\vtA23%/<զבB~&PYM)6QQDO)-HKNl) +"vtXVL .Sh^S[nE+Uz+ǕtVSiVƅ|lDraҶSY +KuKE4;Fq sӳ)]Sﵐ̧s1OZ.BIh0)h{'g) SG YN+k$[\3AA|U_^Ȭ^,[g閉bo(H(ȹgZwcKe-3LHLoq2\Ӿ+ﶆ^mvCXsw.N=VX=M41&8sfChvP79%fl?k>n-;w+kVd)Lʧ>AB+& lƖ4thL𩐡TJkHQ1fH "$W[wC;7!s ?+q de!h|Oź av̭jgo/$:lFmyU%QΩKg z+l>Zq9>%0zfH|fiZQ^df irT82m6qٮC- "tIH +W335NcHӭ9uH 5iH!TH6ӑ*cFo?K S6k2z}&Jӿ +SU+.䨑#ȑiAZ +qɰ<-Ud :ӓ@#Jw3M̺++ӻ.EXg}ix|qqϊ{ 8gש5_jۻ +jyt ZLFax'S4vU(t jƒv&kbeTb\ +3RUvX}CoJ$sWc~nCMs4=$)SѤ'tBX9e s>ϑOv;9G\3b02mK_.̈́CTѭhӚ" #Zt[!@.F,螎Un22}aMYB+O]Y36~L&Ʃ(j5gҤn-٪>9Bx&Ͱ67; [zV1m3Zxou͢BHI7Xwu;h&jPL۠4P=ea:N%šCL5 Yjǜ1AӘBff%Wovsn2Sɮ S/aB?^7ejzi;ĀffÇ>5,V*L7ae|+* ʷ{W+kfX\el.,DƐyjx6$,(򩘗^V1r$P3%T6. x(TM)9NZziiY6KaeWj*ES {Gƻp?^7BH&ØL|ȶG퐽#^Unm֘hfhW{lYw ZiWvڻ4k޶ڠZǘi mܩ77r}^?yy = +E-x2!"'L[&+a:~ wMLVev۾dr͖s5VlCjrWqv_ax4k፽-ߦBTJmޮ .vDuS9!5=nDZjV$&H SF!(6[o\4@ƼZn;Ľlf]poϲWV%}2ժ3V^3p{D{63 ҔG +:2ht9R$9hkrt) 9w ^>/Qk:Ğ̊Sur ;۾moﯻB-V9Ѫ.\+˰Zo~;n12 +gŐB!#3$S(8T $ 2*L>Aa0,Q$-W 5׾!Ӝph5Xj(!zHinʼY2v6LbҡqZ&5ei<;)qUZZMy7PK=ĝWي`Hg\5ur]āHiD=)+=H_ "S>+p-퍩]?vWa+bKRW&j7ٍJ@/b @5٤:o@ZhX05+<9ۮ$J@m^hTW ٝI&1:_\ +JH2ՁHnHΰ,Brz>O T7Lf=YmIT71zGZ".N!c;[VV`٢ vaDp"ɨd:2c~ +IM{+{DMS4<0D/5jخ$D MH7E 1D/L,x 4^tueDL0)ƅ:=-ke"f8(#D[(GAR`$ljflǿU#Ѥ_S f2aGf9vGo$a bTPw=j&4u900*sPfY\OgF(6mILhrQh@"R# y ++|kh 9qOQ(cӬ*'KWENnL<:YLb D(!2OOQ +DJ!F)MDD2,%[f +韴,C’8e8= ؛w JfsL;Y`SJ„,Sh +x+a/BgsZC?W0 -4e%Iܳ+=}?($ OaFTy2w.d9@t *WsD+,GR[k^fk` 32M{a +Q_<,X aGY9V<ύֆ1ڈoз9'd )S~TWN +MrrB q}Й1G7UBJ <ЇQX$, s^{(-}Pٿ Gjg[/ݹۅr/Lg"iC iz(ʛi!E>E@;*eUϑe뭷fAԟ_);P^"iŽVP @.5C& +O#T"Rjn}`j[|5zQ5L,`uǀSI Zog,o]0:/$]}V#a]YgX> ꆾ^eDV6U]c-%HR㷯N /j׳f$;!܄D O3RUS"8 +@KTr535.{¸%%#9y v*U>7$ےbnI>9RG]Xw%حۡtv~Is 2bѦEOhNź}Xe:q!-/K(+ÁT,u.qYw/(Ev DӤ?So]'2B[$KУ|UEJCNl#*zps~ +'k6,.WEN\tiI2s۝J2.?@97a쁁R^MH>ζ%B:gFJ`ۤ#=rO:( aa#Zh )u%S,s4t%Fb-yҵ Ƽ!ۮ"~Cy'+kyMg +aG>dKXJڴ@A=V<~c2f6aN1k2 oKG x\6dy1Mb?jzҼm@#c!?cp]qBD/%` wr.(yI>DD-e`4&LdZb;uY8R>dKRi5@MGhY +F^4c!( +@BZѧll#-]R 撟f;WAyűddd-(P&_cH #Y@e =$Bz+``c|'R4!_+P4N7i PeAR,,D]S.[10ѮfVkf7 +#4Q14ۋOw[N4؟i?(i 2fփ2%*z[dZ*IskAIS3{0aLx"4f ,8JDO'd+]Inޡ'JZ4WFnR\XnؠX ' rw5$#FBVdWTu+*c:[^wМW͗0d&]Q1+'M;V2v13i#8s A՞(`6,ؼF j434wnI:їus~?8s/\d<$8>"p~!GÄK08l* |愿) 43[IM!紡TEm;vĩ7RBdzV݆bBuIC`ϕ^PskGd⢛}eF9#3)oBhЄ̀Wtb +/9(Se +9I8nк1(gaXx!j,KK]JFcx%[.[ĝǙt ,(,pVz#.MuoQ}GR"QVHn:{_'LBV*Q5<7T^G/#eT딝pFe' 7O|J_A_[- cܘˬÆÔQԖS0Y.\6 smeD쀷Z]6V Ԇ_NK -`\]+NJh +ӣ ۏ0w`3=׍RVD̢} ?:LUDmI6I.6;zɭuRVѫ3D0(Z \f|[DY 'a *R%Pp STF]қӒBHE) h#' $Enj穬Rwp0Xx=dήRGJw9 +|ـ35MULM}N#,!~-/$%S3YM4bnf"|(;Vb=#v4`*cA2ˣoՍSH,:-4 ]RSf3 pk-*`%%6g.ڊωiX4ѱ:LDsr: \EĹg[KN]e97&~+03!<76f/ŧXъgO"_KdVC(M~+zȚNL݃?ԙ8#ݚu#;pgLuF?Yfwk6XuP8C=Wrǀ3v ŊeCRªWjL-7"@hCCyn_ZN""2R̖n]u&!H@Mܛ(,6QVÞPAm[TrЬhAA@SSƸmb^^gkʘg |b#b֦̔#%aaÏ^7[aGC\YK6Ҹpt#:k*AAVGHt1Y%.4g%ZqűIQ#s;ey)5 97%ٿm H,YmhY4X жHdïI$1]}6rǢl_#aKWpk7ZLr5agךzIځ%JiTruNۛ!7+ybLzߍֽ*+Oy7E9/(JD q<ϹP^ ]ݚ]SnGOaO*Q+]0>on>.ZA8+pMR+0B= X} XTK8o+HOUv- CG,CƠ0 +.(?D"|X' ͓/N  ȟ鑖 "Y0,Iuλ$,*v p&-0IJn~CsqUQ]1̹<׻lgfLdž`‚^/L<.a>X5S)C2Ƈ +4Y!V+chCJH#*uArL>҄ A!n1.6[DEI4I4t 0#▀+P4.bGtb'x.yѱȕ7:?uDlǫkHm[gRGs/=ɰf,Ю߰=zzs 0v/8#,P"pOc-&m(&uh՜"c +18d5z$UJJ@"$I܉n(aT}=ε*{}RF汼aĞ7[ۡHfا¼ӬIV emůFvI 7:.W'!]x-5"3/)i =N3Լ{4 [qetô՜f NdLPÁ=Đn)9 b'$Zv;I 7pt޶mo6zR}xcY2W< \=ä! lڠ}. +endstream endobj 25 0 obj <> endobj 36 0 obj [/View/Design] endobj 37 0 obj <>>> endobj 32 0 obj <> endobj 31 0 obj <> endobj 39 0 obj <> endobj 40 0 obj <>stream +HUy\~fvev[/ +* r(Q(@GFc5j$֦51'[5D&M Mw3;;̼<52($2z 9R&͚a<^@3kЯ7405k|FTg@r'J]QNK%ܔ + l+ Kn~~2rf }(@@Ĥ$t7}ϰjr Fƫm)ݸ^r?YSs*`Ǚ씬VNJb t"JEP~u Ս8:.ϥ<9RU!QW=f .[ܸ,S'x4F[n_&?u:fy2prY[g,ųi< hhh_c|wxXXB, +D<k6c6l:+C.A[Qw!>8R,_uq3&b +4Lfn֛fos3s+b`d0)~?kZZ۪j1vR+j_iZjIZ&Z2ۅ eUXy^S|yz%K+tۅԙbFKhD ӾJ EU"zԉJrXBؕ'O*To' 5DP j% 744-45n,Q4Gm5';QV{5m>/Q_PXҝX%j]lR֣f5Ϝ廷MmU%g^+t.wUw]wo#{Pg wNENk򎷮(?qq[8V9pG#WP;jk/ߨ˰þѾ^l/nϐf3v*_vv٭ﻗ^ +$[#ݯ#&S"/sq˥GȭE6@t oC!!p9|Cl Ke{*' St5F^ø=M{Fc(3äY5:Ɏ]yHɱ$~%Ql}<籞4[)0X6w,Y"+dC$ӇJSϑG;yr H@g@7K88p|8q=)^I)i?>@|A8="p?b( ׈E 7o1kkcQܬU$.q+&oH}&fLcdGLϘ_RPxlY\@. +`.xDF+Ɛ"^%o PSaDH"ERs1^ ԂZR.&ğ"ڊɤLEB$,*]G#'f)fF#fS;K>4S.9b.| rEuoP'B +,ޤbEP(uK(L,nb$ +XNb,VRQDUԓzj#P_VoS?XV멿@D1  "&"60D E#b;"r]?fAn{sޗni;DЋJJW)a4c#c v/'+Vp{Z_*V7;Zw ܑ6r'ĝi3w܍DpwA[h+m{qo}h'ݴ^Gxƃ5ᷜ8N 4A R JP.iimnl~[~l BJ"-f-eK2-ꍺ<4lE[V!jP[ְ5m-[i*Vkmhƶmj1qao[cmk={>#ؕr]W֕}*B0 b8#P#4xU x/a$^(b*FC;WU[x`<&`"LJS|7b$ jwbSJ*LPVF9('ܔQ*H0bTJUJBU)jP-qp-u.pa ZXal 043`&̂0< `!,Ű2X+`%հ6i8gDV;`'ݰ~pA8Jpq8'Dy D"դ2ROKs)' 4R_KC(&+}}@9#RCjIS)*UTfRL*H#)ť4lƤv%F1jҘ&ƙ&jʦ 1ULnjڦkj2&i2|.2.eu]6WewLlq9]Qs]qǕpi:rA'gΥת:Lp L%i 5uZ[h]OmcF:^mNf:YmSS-uZgg:K:[ms _|.PWX%.LuvUIWkg]]tvuMAFn^E{V۴n~CNQwO[{gݧ~a:XzP!~i~gY~y~_E~_e~_WUTP#jLMԚP[jG_Iyc/ot1Gy< Os޽g4%~5C^R!ڪ1T +Y$hL7\ ԦKupESnuĥ彜Db~_|{sι? <]M'qqZg qF 1T b&>el !RϋbX ObP,E*6Nlnx[tl!eSqAQqQT.2B6ⶸ%J Q!DcEl,_MS. -%fb$+# YP1QLs1O6Y"mr!w/.[{>lm+e2TɐKJO%Uy_TҔ^JoyH)P +ؖ-QJ<;lưQ,fcXrYǼ, +X!&l̦lflH'IޚiVg9ތuyQ^yU~-irB;, Y*d)+-y/󖼕Z[œ<'-l2mdxOVc0?98|B\q"W*\kp-b\0 ?Ǎ|(~M|n-XV܆@܁;K܅q¿~<?cxOAxOi ^GiOc.>>}@S4qj6ͮ ދ}x_ޏN.Jxs>w❹o`831 Ga6ƿzMvU7RUe*媦ԲQZ6Zhc +)zWqW +Bm^nii%Rm +6gjmV[`[ՑtvwXJS94K.9n+695.5K}pwɗ`ߦ65jRw}cZ%?Rr jZP{4O WVA7*ShI=hJSfii + F@$3`$dh yf(BsaCx@H63<+q`k*fI0:2fG'HdB4BgTϖgM| ~s`u|!,>%V@s,d9s<2I *ugmiMSTTJ T>0R-Eji̬O(SY<U`&0yMLs-,ߓٙjE+a2_N$m (EYF]cy/|̶ kysH'֓dVa_J=mBv{`/UI;a7pҏy(pPNQO.e +uˠn]CC:f"SnqN$Ē=#+F +o(+9} 0!MSe`W9hF.I@*ޣJ͉30}@~}|^i=Sz$'u^»]ݝ17^_Wor.mQjr7~12aX ԯtOh(ݦLG7}ټml1_].9MKU"A#!vnjRCBiXVRW%ڨ7j޼yo jTh>ڶF +}"1pHήJ CL1^,Utҫ(K0!7gC[s 8v>JXc b#"ם|z]@NhN]hoPSM1-g(0^H{# j^)#gh0 +uU:Tve찖QUD{vuhl ̏F>IlQi0z/C/!@dK"(3 +!* +E .\~XH^Q Xp +0JUT"d` `3`A4~&WfURmSp `RM(rR3 t,cS.?O9Fg|'7r@т?cUaڕȧǴd )腇$vng- M܂p+-l,ZAi'H%2'/&B]a u[ڝ9 :q$ܩ P/pp2 HuH%E ab24~<3ث.ߐič x9췇d@܀ȰN|j812ml@F *Gy$caˮ6@x۱9lM$ \Шr) `@u.Umӗ%PLQi. +hNA3a f ˢ#/cրZN;v2!g QIB{l8X$73\3 +a0cxSڱy]aOϔ.=E〫RFH*ZDt 6n.\~LM?\Û[k-,GM _Gu4cJ0;Hj^ZSywy@$Ax}WI&$\Vi_<!aV͕◗!Nu+#Qc2:iCdMcA|%9aQT;(uuP Gm w_^%#` הF J!IhUؑ +0B7 HH55?? + 'qDJCB U!dVta0wFV0 +{zYO [U&vÿ(XRK&/2:1YqeiW*I@@bӢ4zMk.((6{It"m%M] EctF?;1:wdOoyD\j*5]LҦHȉV^uEdPe`r/&Ihi_g*x|b6 ׺JC],w,l:%^;KKgjbHpWJS7G:rm5^8Kߝ4WJۗI{ I@VF rwơEܝSd2vۑc:moYG40^'e{2 l`w"8a S+.)d?Vu8繿쁗:LJpm=\&Ayjc7Nr*} +_wbfx[^u.mO%bWC܋N[`>mk%&BBD_L1UTG}&w:ZssKOo +/'GrV yR=B렓FEUdUe V 5[A&#¼w6NI($4MMZ|/ xM3_XQr /}@m_Vcj&B3ct i d> `:x'(wGtК/hŋKqط|PUWp9%a}HfST'Z V(Ys9vFŢX_؀OwDcٺ2ԿJO` bhX%, l L;>a*|$Fik_977psewƕ UDSN1eyZ=sjE}ٽmM [X1xnTrx㿼y^3lSN% +[`\W PSg\$r$!J8#PB'ZRV-SeuujuKu\;=f펝f*J{/`a}wa0C#Xz\^⇢7 ]|cBG_d{o~Џ;D]/v6w~zJ2Y^42?yP}缤5A>|wjGO`fYOd **d\_3 ?)2PP/ttSx{En[nˋ䝿? t[֚lGsЁz׆/ΜBKF@:ʪLAӈr($IgIRIK%haY$}99}q0( +V@I8ΰU{l].v'lbxgDiDj=~ۂaؾsz>8_Ye'r4+ע%A`uW,d5".Ͼ##x4dEChl.:$kr`{T۲$eQX*)/w'YSZmon}ˇW 6ƻ1[aU*V_wV-Y`Ӵ>wgoGK[.4G~(!\v[gRLɞ:ЙWܸ͕%Lt\l9J^ވ:ЄBe;x$+KW'⃉?R\#1cۉ1~ߓÈG{Pw1`9`7;j14̶Qǀ\K݄&`VBd*c}G¸%q:>C{IP7hb UlQ}2؊}XjfیynOSBSeB?a[Ӷ`q˃-e?Y="C@v/]?;ݲp5(MΉ`^gP<^`ltwH'g $\ lc S y!!8z%q`wgmh_RgQѪ=%zZopdi!f"BI15EɈL#Ȥ):" K#gm3LdVIS 4>bJ<Ε=#\`ermsRPsjyS_cxw.;;ɩ߮0UgDy̫#L&lR.^13ZeuP0JG8cų[ ZOD%|P08*Xaq&ƉG|MϜpDjMU#z|śO1O'L+|Y$ϞRrArϕmk>9lo"Cs KHC* +)ÁdTJ RȨT.)$'U,*Ж}nddUћQJB&"T$@2lno.'/ZO6|`hz( ,'xrh`:w}$HmB1Z*S!+.`?]tpp(Мlt67;3 2CXeue(AV*EKw 7!&.#Iچ/ +Po'P,A_MȒIW*cLu(r~»LAzRt.ع[pw+8-HZ2xaω¬2d2so׫9NrOl1gyVE+3m1nr8bN&O L勣0 +9sL*"RRF"/GaXU0*"@G @$ӟ۟?qOvx ~O +\ju @muR\VJ18j?ҫ +^^ I 7 @cHdnJ`uЍ>?NqZ]RtpBQT0YݙN3uv\SdV,y`;+;̗r{9ߕo!Q  {S/])uf]4h:heUc> k. +S6M2ⳝV-&"; YIq*3}q)4kbկ 7pbELa!ӗ7,8%ޒ -e| ҙ vR3bm=jk^AIڜS,ǘ2 ne}y䬈y ~& E֘ 21UHLZr/FRPB+!1l!"[*!l]j(48@^)RA][|Iy,πJqb+hd_ +|[z沰XDbqnx 䮫X_ܜH; +6Qj][$tDGZ>MEeRY{^KCk$zkPT9aʤ + I|5,bG>Vyǣ yuQxw9빽_? +dI?5 2p<` X׌q4!mD:fL&2IBOPً™Cmo*}su+rsfKq'`IB]Y;151hww"EP*Z^Ou T64˟>Dnjp&*46:0Z3"*ҧ A|E9 N i,{)uvFgLem{-qox\GC떒C+ͩ+6ǻu.JƱsr[-ֹe3F׼oVg;22VZ2\6tZRxJmҩ*7^[LVZI 3xV &8򜹻R^HhXKv[uѳܟ̎it0ؘ-^9,2:VÛ J@BM TF!tD"tՈ@vG Ks\e>~y +-?=̡P}<1bU9|XFKU^ȦVl._QJW*92{r,Nj',Pk g*sa{ypa>fkN9:n J3G-Lb Y?^ \VfW=l/L. ;ɰ: ԆF3PS]4Iii@4xb"Il+\u5ӒP[`Ml]^)Ü`WV'2G!ˁ̒ήanYtxFv!vScA)(6ϠwSD)u2!׊f%&]v$;[ތ̂tsR2Oկ6C %Pϲ.1,Adu:cZ:HExzH,&fF'jK,%=EzH{r0'V[lndNH X  C,p 6:MfF6ҢtrW5!#E89,,6!1<]yM];ݸ*3 ΣǏ7w9_՗a 1kGjP k5 *GQl&MkXFT|n!h(oߓ8T{^|!H%ÖdȒ1U)̵qk~G== :oO:I~HN阤?I/EC-]6EbK$|2Do x AV/*7YKYu8B| b?)/o'|^` CQxsM>q)]#>$Il=BKa _ޫʫ gRud +"TMB7*2*N fB;JƲ,1r30\B &fơ2p42 nӬ><~_@<׌!ACWx}!OKHɷn=MeJ\Ew37&=b#ůRDz6c$8tI}q +:ts<[Nټ}C_, >0֏,}]ԚI1{ +-%h:9 E<{URǸ)gn؆:ضu={&j~!OC7 ѷCqSUm!*n`W94,q~La+=9؟ؘ(--E㜝}1R;$6gc]03wr/u1z>_BZ-w.:q8.{ vٱ꺖^߷{9_gTİ4a~ \8WGuq3:1flayqb-;`{9/ƏA#u@V϶>& -E'g$o?~†Gͫwg} 6q:j$myN }lM!& h^s?߿~otz~0CW:ac*ĻBH 1WO;?];La o|ѫD<}HPW(!{+Ft0A):!m6>]I{/CNBv;Nȁ3_a$ͤԛ_K!9֗@~JEL&e< SIVPAt7g@-rq`j/5Ǐ~9ɯUccqė |>@e:)z7ϴt]}-ĉ5&GO䦷~3w>x3kMtu_(2qmKKedgƘ|Bpξ`b\&|Cggnk%oSa{ ^NoD?s ǂ{]!I~zyn,cfЂ?lQ Q_4j5yd4V7L~=>_nMdџrغ+»0u~~K{!Z{kz"&7yO9XۛgHYU/n֙z觍tVеQMej&~3j d  wd.}x{:H&=7b }._xs"O:h|䛢>& 5Uȴ!:n}Ƹ<1ٺX Wf #S F ;yyr9w߹r@Uc.>?g\=x%DgM!Y-% DzkRю %BtWzY*eo4%1 bb7Σ_l}97]Fmg) vD& F7q~jbvrdds<΃{#Fʑ<'߬<<2qW$@ܲ$l%Xgv+l-7tX'd|o]t9{P4ć&AYtk83AG5LyDޏۍwm"<27QA^F0#1$-:-"#13#*&8ĞunKKNKMe+96-KKMK y!-y=)1^+qDb|@ 7z,]'ӻGNw@^Ao-侶_ `ߥ7?MsbA[¾^f[؏=g{X{c=G;Ͻml}\`58q9ƞ_aWPY7,@/93Tp l (I|o<_3Qv55O2&~4)ջMKkj6!h&8]Y~OH}d8>8r&QwpeyQNH.Ra![ԃsBAz[jԧ{xU/ v +)!xpmlQw~S}ep2HOՃ-Eכ#eP7TVVqkJ%K^<7#*mS0EoSJmPsdC]PTIj*UEj6[N~!U"P5*רv=I-Q*f7%Ji㔬dnUijջHp*<,[-{GSPm`+5Pf;Pw gtz^ꭚQl"8;+UbR/F)U}q| JcßQ&(ϜߞrA SRJhJܯQt_*HJ +nUE<}NX꨿TQ+;7qE=OZGkvߺ*=wwtCG;LeŽTW5TmTCR1ʣ*ī4@yTo:ƅJVbWIbK%DlK-qp:f,=cN;k,l{T[^ٻ%k=%;dw3kԶ6txܩ4kۓ8\`=)q%$Z=qqGwr;əˋb+괦yq휞Vw5-1&xRcRɮ_iV @r?MW$'[SO|~~ح$e'؞뛙lTw8cpUXXZou MBC{*D'G%Hܗ'qWm[7%nH\&qUeK%.H8'qVď?H8%qRqcG%H8$qP~}{%H%Sbvm[%Hl$Qbzuk%HX%+RbreK%H,ȑX$w %% %$J̑-1Kb $JL,1IbD$J-1Jb_K Jb$H|)_ ~}%H)]]%:Kt(.&*pK$KHh+F%( /'+#Z)JD $>Dc$>@!LDchFK4/DD] DD[u$^-QK5J"*QCDDp7~*V-齱K;1p}d|k꽰o`fShcn9z7ԲXgjzi3p \% 3Ի` [QQN27ݾz:´;nq-ɺ%:l8[# miJoaidsКٚ:šjMLo[cG#HˌR(Gil6#ToՓAuQSTW ՙDuҩTJyT +妒vTՖjCD*X*jM9VTK) ՜x}H}@9fTS ՘QS {T}]*zަQT]NSa_7:TmdkUzz( R5:BS6EIתQUU?S2{&LU=;2UjB"UQe2TiUz*AQATQU*d}*HT>*/ +tJTSx  n + .8΁ NS$8c(8C 8}EX=`7v`;-`36 `=Xւ5`5XGb+r ,Kbw`!XPe>\0.m3t0 LS`2&L ƃq G_el!e  F`W`(`ZJe1_߯MqI\?]+RJO'nEi֤u[*WDUpo=ȥuQSuo[[N-* <=w=C%ޒh1Fcfcg6X͑cI/ Q()҆()SzPkMRzF/D/ ]Ǝ_㜼<)УRF7rPZkr0%5,1UM9 r\%rg]Q5VUU#]BQݚj֫- %Z[Zh CU/49#g $)K _ o +/ OqwqըmMu\U\e\E\yC%*pgpp'ppGppP {؅؁(A16ll&l:EXXXXXXB y9lBfbcb +&'I NBq1Qa!, @ @C_Aod'z'ґ$# 膮ÆXNhvh6hVhC,KYurj[nS9 +endstream endobj 38 0 obj <> endobj 41 0 obj <>stream +H|y\Uǟ?ALx_.n0nIj +# +XΌアHi:hVJ"z9`Ss~g!&"W%-Ѿӏ}\=WGǦdy#0!S%VDHĴHLdDK&==T֑(دKl?Ch[&eOuB KM_,n4O1tZN]Pa?jY$; b)"E֟FDɂ[=A3z + !..nԷ׏/? - Ncq>M<6=oڽiߕ J)RfK{yPr)k QвY4i4H֖.AK|&=8H!Ew[iPZ*ו0%UUreQ)U(/)rY;oHtHlHBȄv9O->_|عc`b;kckzUU9َZYt6p* "}G}~~\@@c Q}Ф7%HPCj& )W\itL^&UJ2 r\ 6F%D%$I(JI#%A{#A":ŕ;:`*Hi`?_;. pL$jN j0_}iG'D3_ֺ]SU-^i{ZKۭ֭۬"&kuuu-5{#ĻX]bѽ*2<GTA-U7w}wZ>QO%Zfj&֯SNj[+Y([퐭ж޶ζbSw$$ooZ㿌k|l|K +QCo*Z*s4ǔc5537o ͛E-b6vsykAd؄"l}-؊blv`J vSnEFLdp"C8#_(1 |N qpp\e+kO n&n6A=<#nKEQ3:H)a:Bt 1adAǑO":e ,PEQ Q%Q +QeQQQ QfڣARn馔Etr(N):Myt9݌H2]t I6ݡt>=T@1=CL̬Xpdeap.Ÿ8\Ks.vvmرvo'؉vlةvngؙ6Ml;ε|.b.x1'Z_5T S5AMRTjZVjU*UmU;^!o:riuN]R uomw}~|}߽z7t7tn!#~O)?S!ER:Dwi@DžHX "TR[KcUG*Hi+Ei/ tnC5+K/D/UmJzG/.#e2UfY Kd K$I"u]G> 9,,ɕSu>YmyrV3r^.E$\kr]nM%ܕ{/?eS$"$"½n[ָ .%n2\r.ϝwuw4pd~~~ `WU{Ϲ=Kw 0n+9CDERnPBD1@yV66və%䑀R@H1)!\+r]nx缋~G~7[N~gw{=^~o?ΏDﲔRFJ9)/TREJTRCjJH--&!%7t't!P' w:˜ +g3w&8Idg3ՙLwrLg{޽Ͻvw{}}>vO?ݿܿgs_?}v߸ow2QF2d3Mc&g)d +")f)eJ2)gʛ +d** 2LuS4&2M 3&D(S5Ѧ1MĚq,1缜s.ȅ0\s .ɥ4\sȕ2Wո:!\ks(q8Gp$Gq\c>7ˍ17܌s nɭ5܎sȝ3w܍sɽ7q<'p"܏>ȇ0| >IũRTPY*GUJTPU +jTjPM +E)("(եhG1TPCFԘPSjFͩVԚP[jGuNԙPWFݩ^ԛ((P_Gi%Q2 JA4(2(h lFiQ4XGiMI4TF)fLEiͥy4BZDi -eVJZE{=Ϟo/5z@imi }@[C>m>Oi}F;eL 4UJT}T_OWTJVUJU`UTYj05\P#(5ZQc85^MP$5YMQS45]nv;Nn{^:A'>:I':EAzN:Cg,{HgazGQ2]rd̔Y2vnC{i}N A:DctNI:E2CPmfiFfz~1NkbZ{} {c41+xwe̕y2_mwϮkG{=Yv,xO?ޟ_o{^y7[,Pp yp<#G^C~Y$e,e\VsY)dPPEpE1G D)Y/PePPPy p*B%TFTE:j8;]뙽Թܷ#CuT:wssぃC[rBNJwPA-Զ!aG":hC ꣁUQM-ښ6hvzGtD'tFtzBo! HDE?$!T `!D`(0 $10c0 +{ +11 1S1 ӑY9yXEX%XeXXUX5XuX ؈M|>lz׬c븵Z$ۭ&v!Zg_K5× +_kB^ʫ@@@3w|C^y+<˳=i|1a;>؁ϰ{9 |8C8̙888888pp5e\U\÷p&~ ?2pwO4v qAEqkp5{[ƨь1jcƅ(Q&:$%j\PAM3zrN9S֭Us?U5ukZjmG葖--,ծjMS[\ +*a + : Ax UQ AMBmԁ ;^F^A=G4D8"FBc4AS4Cs@KBkA[C{tN:#1p.XtCz} Dp#)Ta8F jKW{##q0c0Y񘀉x S0030Ϙxs00 Fxs8 qIO3L}>JY8}>AO'S4}>W K &x + +6`-_b=l&؂c|؅؃||؇|8B 2\Q/=[k7QJRN]{"@ `PۜlN1!Gcq|R>%W5\,ߐoʷGǛRQ(l>D Os~_M VNR5 +L}2MYDr_O4zTPCLi`$ЎIS ER#ԄR3j{e#o+kLg9̷c*3],}Gw3˜_kC[KRaZ FhZF1C,V(K N0c:8 sN9ϴpI utS zK-QK[;zO^A>ҴE]+R7SZA3|u9Kݧ~Zm$m6f17Io>B=eS3ed[Vjf5a\Gz 61n-0pv&Dq}B;wg^Kq?Bf b,/Kt1:N'$si:C_1Mt"]LW*]c,t)J6淾qgO?'G!C?#K[J8 b:|0N eeOyEkE=!J+>ExR +[&Pϖb,⇧bP,bi4\!b;{A{TB:(I4AZ+=cPm"ɱQN"[ki|B~wƳG#1Qޒ6EcX@,kM+y9UH%!H.L j:bnGN(!. +u ddHL&bs8foLq߬b ouȊsy$1{Mx@t)t2[uX$qb G-M"o[_]1T+1VΊhnNi&N?.kѣFff2tA\߫go׶MV-[4oִIF ԯJ:k Q=Z՗Vh_ٯb"YW/<$44Yѯ|ߠ0PCTynR F5_z_i! =:ƻpp"А E +;U9R3 zt1vpޏpŷv9 !,YYyU'NGZ ϰ־*W+C m{w$Wh*Y +;nszܞY)vɋd9ܼk|"[19.Nr7'cHzҍ|b}('7{w=1xuN>f:6bJ6cnve'Ǝb7kMi@M?htԾ@DgcS A*m$H>T"4^~άT`=3s=su8ldpђO%#w78thn{C4):/4v6Q +;_aNyrE%JEYY^eqĬϯԟ3PN ?RґҪ埤}s m8S!cwK/KW +T9|aJOZsj HbWPQ ^B7c9B,Bh6Ѷ֗\^hOo~Z!;hm,7Ru@ HH1,A%Aq᩹kң$04J>ٖ'EX;N9#H)b)X^@ F&KfI=MP7DFۊtOl@< Ou\ݚ¢*W F<`*L4 򜌖b i\$P *0bȊKUS;JBJԪj;(De4BƦ%{/O)rU(?Nƛ5ZrrFѼAoe֏ qLc%.dT+_D)Z3΂c==2\) y!4t4bBg +Y{W.Oodz|KjNuaona&]"aA6n]*@KБG*cU ǽ +Cţf\t?;#9 7 ¹n}1& =B3p#4yʶ*s8EgTa+C! Y<%w>Uς2nv/{<h:]F^dȣ #4s!(`L1~ >}ϓvRxEfOA#Y"D{DN»e~ nȬz_ݕN#u8 S`XSEDtm7>\0t˳⚲e1v9imOLK$wqllm;9Lv%y*=s-ZԈhaf0ϊŮ|O'>Xr+/ڵ̮]Yٹ^\~ߜx?6ҡw?]OמklOyuFcP"JG6|$ߑggҩ 2YUF'JIea}yZ2_1wWogx 3#._{W}Kѿ'~~/pm(y}y[`E~o9}ۢC8\1˾ΒBD6S]L@Gڎƭ~{>ti]h9&EgiNO$ lC&af).)~Ýl-E)+C|T}moDӱf-h.&IY6֪qkMF B*%wTUF tZ/CּҸ8l,R!|+P`= hKM +.'4 J* +ŘV42C nXm4oH +9-ݾK)+%8pKN*]<st$vA;2ggQdݏdP: ;z=zlӆ 7?:5͝Ʀǧ'/?o,7.}Ç>xW0yh0 Fۻp$"j_ +;j;jmZ_TZD >`QI0-όg F֤3{B/t/ѰgG4+/vsj n{Wj%kɖ+ɶֶl=Vl#+`bDx瀣qic~Ii36%I$80L'Ӗ!?h'Ӗthd&qXw%?N=x9뽯sw]Fw@4x]8d"&&cJ*n5d)}^@5wOl|ǁ򵺏0ux yd,vOZܳBlx>l5 B9d%ⶄ FI1)ќ+ffiCֶ3; #]>iT#iN&*P(gc!~|hS6M0Gk>*fǼ׍@c&Gzّ +̩ 6#L +i2ooo'!ɂz8U,㉍łH*\yB|b1TGWB$6S +ݻZZ2ndov=F"z7?Tުv97FĖg$Ƿ>ݷ\ hoj[[9}Hz N5eudxAl 7uC$S q`DH5nGe +(WI K$|qDXNPf+| 7qXD*5;gIwBN~~\"k寴dK2+z}MF~>KKk@E;d*++(1aPH|8bjR*P5Q*V{|L7dH%Jn9URyל #KsKDB<.zt&IaM5bN3r}TkIt2aO)AP渒^չӻv2f㺇J,/{2ſi7֯}R3[9j$ǿrrw@_ 2j;Ug1EJ.{֣Mg᭶hU8u=CpMшB& E1~ +(!-"N"*hTF0L J$fgh2T俾~4JvZAvhHwSv&.zG~r'( ک\W4_ڐ^MO2_;19*x{Fݫ{e!BR GBg[n:IO)TLxY çVtJ/paa;΅tw0W b4Aw ?\e,,c|9;ZFP$ݡ,d$̐S2ZRZ$XI|"->%SJᇬ^֜? +na{fJ{xEg<\2@ ō/g[Y*!N?AqNB=\%;7ٻ͋ E X39^3"mar͋ty^ƼL* +Q! (Gh"0IZ2S^a$c:*P7 +Hxb%N6°K8ivGin`ϩ.>}g׳KMݢc\JjTYMs88goJ1v})m_%gyz&56̎w=;3׬}l7+qG䶫"PJyRZ)%E*)EjJ J?QAM' WЈ SU +I PE=g {w?j+_ Xr@ +X([2S7dA{2e{z3,˕H +h9]rd4ZcZ>L 3T*N<}=b PX;U0U<&s)eF 2*lAr僙 La +,~ HE?RH[J|NrK^p%?BI93==;71qнM*f+xֽ؎wΝsC Folߝ-\P;}ZaճU1Eސ[ӺCF"fOezmfzɄLEuH/!1Ei;5 hxhriZ2$T͌A#P3]sɩM,,ՆMOy+"X?Hk#Hq:Rqӡq:ҡs5CC:FwXqjtHlªز^8͞xmA`AhE\]-ٙ=/nf'~Ӌ?7W;̖]+;=;?MWoN[+}:S0=@މIԫz~AB)RQV)Ft?ǯ̋*:EUy܁VA ȵp豐tTzֺ̄@v +y,fX; IƎQ'UN3EΒQ]=" )n\VС( +nTt)*@q.H 2 P,:-3UW[U7 beSF +ܦC@(cqq7;Գp4%˻T&wy!"iWYrGת1%>7@b_3OT~vȳplFE\|ە5ŝ<7KͲgLQàqw ҙEEY 0f&4lmSy}:<'&1j@,莾6>47uJ%b4ȋy+OUr0.[}}ۖc,9l@P*:~ >ЩDC){Z=珝8qBe4Jqʅ +oI-B֜ae6JuI_ F$?>jv@sy1cIp+,,;GIJ{g^~+oE߷YiY+v5tli%L'Ğ}Bx,tp̌Ez̞Ȩ9Hov~i{6E*&Ḙ- ϡ9OqʭP9կqbRh(]z{Vim#b'Nat͕d)k[|bVa0`M-^o$Uq]d/ 2+ + g=ۏv"{4f-1^Uwgwpo$7C,0  2S2}P +~%"F`kg- [0m0C( QPdP)j:S4INs.I(mٳoc'k^(o=ZSųo ~M0f +SZr}d@d=X:z|F5^sM"aÓk=)'g¸k?apQϗXlxrPAKh-OmP-ƱsPHi tn;l(*Q|_*EP(KR[.WIeF)-VlK^>6u‚DD^f`NQ,>cz.*!-K9?/W-xXp~$_eA|ڞgMn(e'r㮈=Bw՗xdaA2dEֹ>\fK Aݖ |iș]Ä[_Z* +U+*ټCV2=i!ֳP]O'(.B֝p7pdd  Ph\>7\vM+hj2c쁔a^F;'G]3r4R:+ Nf}uIWq\OMḾg9:EExyAb5WDD~@<' +=9:fLfFEXOz[YG2S2$lm^,aCr^9d9ⱞQ1eL1,?%MY2ھh 'ˠ En˭zX2̪0:#e8mQG',iOAP8]bO*OT<-ˉ!™Hiu]'Ypӄ +nP_.$cQ|蒖VTdj&0w?S:VxqOĽ^7[J:)YАuO$))RzOKʷZvub7qZk>&q#"zq'ۧG~E.ߞ׺=o5ť?(s{_֋nem*]ŴT:hIc^#3i>0qg|g]G`ȸ . @` 0x gXg84ʷh36uuj;4Z/] =׳jHO5&ͽ]G՜ ?ϝװư)p~}7"~7e4mthɺ +,^Of~W`ƥlϨ!UfYoi˾Z?O8=Xy֡І\m<w1w_H 0)hZv:;PL}z  zc}zavq\u !Ϸ}O{ye!4+&!kwzzv䳣q)p7Fm<?CgREG` ɔ ɨ/FyvR6 |:s~= +q.#8'y0q߮owMcK2mݖSc/9+h}.K<+o7A1gbQ'1bx2ޕw>#sc~5;?:~U5{<}?S1; )}|0%jho}{֙8fASCȡ:ebƔ^_\w}:9M>4Տ͘_@;5`}sf_ZcyLjl]w~ kIr_%x{rP@#Qs+QT|wqx*Ƨk;ykw0;Ī[y1zCnq6.)뿉|wGA&)Qij:WÿPWk4~߬ pTfE-ӖeT*ƘHFFTA *hj3V-Tit0S#::T;VъAl f$߹M%lPww޻{9ʭ*n|[t~Ij|qxx<EviYܥoۏ'FnI<)%ǟr\bj=b 00g4A}(~N3Zc`%t4 ߛ3'ڼd_}-'->9-萦\s٫lg\'Ma2Tځټ. to'~&溰? >==:bg>*k8"Ix6{_aÎGr\$x +pkU+_y!<8x5S0%D0_*7}շ 3^Ws.n! FΏ?^pGɽ!Yv\Hl{YG}OZyKك XuQ;qX}̉Si^:t0F'md9+J,Vڃ˷ KnvjFe7mF FXijmn&Zmyr޷>~lng{c&c\߼av-`lp>M5"T:(M-|8)NgڵJrZj ݧNXsϣXƗļ]s4kM#ϊljX=ی5[yv5;u>u:V#ԱY9T&{j6QA>X}0\ WcÓX̱O+SR&Q@s2X.>gNT9Pyd\_)WSٻZ$wf*ri"ď +1ls_.čr8ǃ6b7=>(I{:xnHmL|-Afk#/{>5!'gl(BgqIZh/O-+Qbt1󂇸]\y'/~G; +112c$v/ۅ5n(>ލo{}dܾ|YޟޒF\|&fK&TrĭLSz dkq[ mM>%~p\ȜEEa>|p#_G}' +]p=9IxIσw7PeA^! ߋc]>M ?rm=7g~Q?]P$kx>}vs1po(+5|G__]kЏ9:lz&쐚A-%WW,ɽK<^E]u=ʧǙܶG'.]-aSVgS\9]p GZͯ@N9d|a[Q*T}'0!_F]e2ubP) d][񡬮+m؛?ҖmݹNnMj33BNlNXcW¾r>EsTSO=f!>2oԌ`ۏxi2[]'8xT&ݢUm3ba=ߧlcTt!?&>Wm>+jIoǯ2 JDȤddA 'IABO(C6.5)riRkwR_5pːZ$: GHk6`wѱ}b"2D8 ]enD eI9x@*Jw^r7: pݷ?!*1**RV'jd<0Q$JLkh;XcD;!h +#Z:XAkit?!L3ޱE].mv#nܹ{ISv2}hO\zo8\qx  gJYp$-223J~x DyPyfO☩&C~Kر}0[ +W}b DwL\XT_|xjܒyS +\[E}؊mp,7{dlv*[1~# +ma;{*.G{ve$kh?w%cfuJYӇ'wal%~g&Orw0ViЫ&H^eI%߲Ӡ?XGOA_|]a=}i=:A?-bXT! 񱊦RYډ,(#,31Cm|eJo+`%(Ÿ)E)1!hξGP-;}qkbk&ѦX2ݏ)1II~^͎ھO8WJj^!9U2{]4 5{ r`gNmjlKVRl *a%!ʒ& *{LO=v/m[);9wHyy'3f@:UQƫ9d^dYw&Bd㠃v)qgFOs</bOwG(C|T|w X&djB9VIF"dk|z[׳y*"5ے%^rO2AcHJ[z6~1^Zl 2k}TO}lq@u6DNՄn9fV}}1R=69/,cgr}OGt48QsH98_sEn^EyԸ(תmU!g7"{RhNmCh?lyӒ*}H-8 Y{vljO  Ăen+g'OGeq$!Wl+w̄{goqg޹%2(.2~ĝg#+b]Σ:~p[V}#Q?s$L1)򧐇dOIN ωUȻG}lry_ Asli9PMVwߤ4Gj9Ȼ'h~_B'៶ss=n|\ r+AKhxDMjy Ι;d2ܯ>kgPi,cyA|Ho P-WFsM1{\J>*onKKVT.<>!'͗KIqb?mWtwG>ޟ!ꔹ˂ԯQ g:SxZb8}yd~{v`&3VsY2"Koƿzl|r8&L7];ܱ_:ʒ܉ĚUrFHcB!R?l s -y9ǟwoMvӱA:c3=?Aebٱ~rRx9=K8dUfM>KslePÖH:~3^F_v7}dGn1DeROt}G&rj$k1 Rd;1 +gfK%?! Y^o䃏2I~J~Y&0]WS^ribgi؞u\,bvhB[`#ld<^6gnǑצřܱ3|ř?-zzr^f]^ƪJ.Jy]7h^D$HnԨ^GNw"r&KeNp`9sѸƯgzqљ$[ŝHbc2rqH1 |* Vr~E}]q,aOvx(&! K‚PV@^jSC;h[T]HF$3X_}1k5tL8ﹿ߂ĚLDž=;sQVWB||g> wr1Kb))b|2tND\EĥZFS,#jq> om0V7wA[(>gQYr(~?ԫ7%{p߇CC1{Tʹ C1Ǻ8=j.bU~geXʸ Ba÷0n |~D 4v;U(ǹw.1w9 #D)⡵COPH906lJb>| @N!zk,=K;mqԱO\ c wx_QDY6:bRD]KsTϰ/w?Buاۍ:3w=R*|iːgc*E ٮp{g6}:\m}JS4 >Pu]vcRvR5,z@ӈ_\|Oa^^1b]5ICcuvJV.YjpyAE,w<@|b2T6ToQKvPGq`SY_ +]1O[WLmns+EbqS77VqQN`[Ny )Ǻ G6N.ofm.MEG{וh`ݎG Cfܳ}&ky>-b{Ѿb$,ʀKf_a_Zo=օ}numz1ݑ|Q|9*7@e_Ũ:yǫ(mn=8 1?D^P`BZΰM# >"{j|R(d^E|~In6rl[lkNn"nٌ>+p.<_"9>*i7v&j]Rw+}$aɴKpHj2X==ЫIG]%$ݡc4^&Or)2*GfZ9\N!,]"H$D"H$D"H$D"H$D"H$D"H$D"H$D"H$D"HgqvTR1$N{!u"m^( CNrdR:*zF3Ytu#rd uC&oQE0j٬pCˆ+<)r~*F6jvPOhR0Z!5\< R~7zjvQCY L"kMW10R%m[0z7 +iXϖf$p\8BLG"b2e˜w9${p_XnoLbٹAYle-riJ Z,[*K9ŒFċc)-9B(6U{ +'Y,M(1e^̿_d^Y>a613QF4Dy@hI Z7O{g D}iOi;kliC[|ũ=7qj;mףFvX~iGxO?kE?颸N1턴SGX@-`%8xU* 2e +ĎYy!T/)5^SZZ QGEFp(^v$XVLvӺ ZOL>N$m%84oZٜy2$cQXRMKs)ϸFkH@X"2ڿB9Ni_c8wqm>\T +>xwƽw]:ė*Cȇ@Ƽl8Jb\Y7z0f$q`CPˡϐHX:`CzG\34 +HISZw:k[O,QGv%@ +endstream endobj 30 0 obj <> endobj 29 0 obj [/ICCBased 42 0 R] endobj 42 0 obj <>stream +HyTSwoɞc [5laQIBHADED2mtFOE.c}08׎8GNg9w߽'0 ֠Jb  + 2y.-;!KZ ^i"L0- @8(r;q7Ly&Qq4j|9 +V)gB0iW8#8wթ8_٥ʨQQj@&A)/g>'Kt;\ ӥ$պFZUn(4T%)뫔0C&Zi8bxEB;Pӓ̹A om?W= +x-[0}y)7ta>jT7@tܛ`q2ʀ&6ZLĄ?_yxg)˔zçLU*uSkSeO4?׸c. R ߁-25 S>ӣVd`rn~Y&+`;A4 A9=-tl`;~p Gp| [`L`< "A YA+Cb(R,*T2B- +ꇆnQt}MA0alSx k&^>0|>_',G!"F$H:R!zFQd?r 9\A&G rQ hE]a4zBgE#H *B=0HIpp0MxJ$D1D, VĭKĻYdE"EI2EBGt4MzNr!YK ?%_&#(0J:EAiQ(()ӔWT6U@P+!~mD eԴ!hӦh/']B/ҏӿ?a0nhF!X8܌kc&5S6lIa2cKMA!E#ƒdV(kel }}Cq9 +N')].uJr + wG xR^[oƜchg`>b$*~ :Eb~,m,-ݖ,Y¬*6X[ݱF=3뭷Y~dó ti zf6~`{v.Ng#{}}jc1X6fm;'_9 r:8q:˜O:ϸ8uJqnv=MmR 4 +n3ܣkGݯz=[==<=GTB(/S,]6*-W:#7*e^YDY}UjAyT`#D="b{ų+ʯ:!kJ4Gmt}uC%K7YVfFY .=b?SƕƩȺy چ k5%4m7lqlioZlG+Zz͹mzy]?uuw|"űNwW&e֥ﺱ*|j5kyݭǯg^ykEklD_p߶7Dmo꿻1ml{Mś nLl<9O[$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! +zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Km +endstream endobj 34 0 obj <>stream +HKk1::5n(RC!8!qѮ>n)>X͌$[OK\=f\],Z~4jߙgK x +ɒ@1f~4e8O9i{cV9!n5*i;Cܤd 0XrVf{z{YߞU507&Ӡ'Ź84( +S}td Y24!zޣk1D! udVǐc1п;O9K_?fvI +endstream endobj 33 0 obj <>stream +HԗKo0 :v*Da m6m'Ml+FP&VDϟGgW苯VjkhfJ=ilv`<тqZxPʃ"&ğ\,qH--ubqbXY]7V[hM": FtVϋ/?6ˤkuzk.k?`L=I}&H0ΑH&(P:/ԹE>lWl4hWh}ެta ZK=0beiKwaG-_ +l5&%o}b G_[H@J7lț7GӉPQ$G5rd'UXEd=WuēTԥ\ӥ(]L[i+H +֟|2 W\r!8oT$Aސ3h(B {#..X{r8ɽGݝ4CP\(Swh2pIQQ~K. Xe122@ȉ֞NNVG=A}'4 tǯ}ȬeܷNxvåP`)aٍ6*x#oGŦȇC:Ik6i2r\ {"-V{i2&o+#{Ņj@\"qD6)ͩ\|2 UQNZd +BgV&LʩY}us& 2B9_^UZ`_ +endstream endobj 28 0 obj <>stream +HԗMo0 :&@ʈ|  P!Iפd: +9ؖB/Z?25ɴT2r\{2*CɛfkBHY%"x +rLvxo:& ڤL.6r{b[yQ^Hh0gV*l_wN*p{e~_LUyX×*v1tz- \UObZ;.7**YTVګJ~u"BugFL7@$\&:jY2XgήerAں y@Ju0<+J7:4X[eERJBtVʴ.) >j /m]8RZwhm +x}\*yhoebiw8St?t6[У1 )@LQQFo 8|uG+c!Cty7 O(kѵ.xu vB͑v`hu SgMzjeG=ZԽjGݎv4ėޙ.ZKHȤΐse, mC&r ~`]KijH-# +sG^Mv]dJ.> +endstream endobj 26 0 obj [25 0 R] endobj 43 0 obj <> endobj xref +0 44 +0000000004 65535 f +0000000016 00000 n +0000000147 00000 n +0000049675 00000 n +0000000000 00000 f +0000049747 00000 n +0000000000 00000 f +0000000000 00000 f +0000053611 00000 n +0000053683 00000 n +0000053900 00000 n +0000055637 00000 n +0000121226 00000 n +0000186815 00000 n +0000252404 00000 n +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000050191 00000 n +0000050636 00000 n +0000261723 00000 n +0000313689 00000 n +0000051081 00000 n +0000312960 00000 n +0000308610 00000 n +0000308497 00000 n +0000262300 00000 n +0000261910 00000 n +0000312093 00000 n +0000311294 00000 n +0000051526 00000 n +0000261794 00000 n +0000261825 00000 n +0000281988 00000 n +0000262714 00000 n +0000262964 00000 n +0000282235 00000 n +0000308645 00000 n +0000313714 00000 n +trailer +<]>> +startxref +313937 +%%EOF diff --git a/content/GraphicsIntro/Ch02-Quiescent-Marbles.svg b/content/GraphicsIntro/Ch02-Quiescent-Marbles.svg new file mode 100644 index 0000000..4ce2ab9 --- /dev/null +++ b/content/GraphicsIntro/Ch02-Quiescent-Marbles.svg @@ -0,0 +1,99 @@ + + + + + + + + source + source.Quiescent(TimeSpan.FromSeconds(2), Scheduler.Default) + + + 1 + + + + 2 + + + + [1, 2] + + + + [3,4,5] + + + + [6] + + + + 3 + + + + 4 + + + + 5 + + + + 6 + + + + + + \ No newline at end of file diff --git a/content/GraphicsIntro/Input-And-Output.svg b/content/GraphicsIntro/Input-And-Output.svg new file mode 100644 index 0000000..19560f3 --- /dev/null +++ b/content/GraphicsIntro/Input-And-Output.svg @@ -0,0 +1,99 @@ + + + + + + + + source + source.Quiescent(TimeSpan.FromSeconds(2), Scheduler.Default) + + + 1 + + + + 2 + + + + [1, 2] + + + + [3,4,5] + + + + [6] + + + + 3 + + + + 4 + + + + 5 + + + + 6 + + + + + + \ No newline at end of file diff --git a/content/GraphicsIntro/Outstanding.svg b/content/GraphicsIntro/Outstanding.svg new file mode 100644 index 0000000..5ff9047 --- /dev/null +++ b/content/GraphicsIntro/Outstanding.svg @@ -0,0 +1,129 @@ + + + + + + + + source + outstanding + + + 1 + + + + 0 + + + + 0 + + + + 0 + + + + 1 + + + + 1 + + + + 1 + + + + 2 + + + + 3 + + + + 4 + + + + 5 + + + + 6 + + + + + + + + + 2 + + + + 2 + + + + 1 + + + + 1 + + + + 2 + + + + 1 + + \ No newline at end of file From 9f6cf6bcaa0c8f43d2e5b9bc97bee51e6dce0249 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Fri, 26 May 2023 18:11:36 +0100 Subject: [PATCH 005/142] Ch01 and ch02 structure now in place Moved some stuff into placeholders in later chapters. --- content/02_KeyTypes.md | 382 ++++--------------- content/03_LifetimeManagement.md | 2 + content/04_CreatingObservableSequences.md | 439 ++++++++++++++++++++++ 3 files changed, 506 insertions(+), 317 deletions(-) diff --git a/content/02_KeyTypes.md b/content/02_KeyTypes.md index 4a217f7..268c6be 100644 --- a/content/02_KeyTypes.md +++ b/content/02_KeyTypes.md @@ -207,6 +207,41 @@ public interface IObserver As with `IObservable`, you can find [the source for `IObserver`](https://github.com/dotnet/runtime/blob/7cf329b773fa5ed544a9377587018713751c73e3/src/libraries/System.Private.CoreLib/src/System/IObserver.cs) in the .NET runtime GitHub repository, because both of these interfaces are built into the runtime libraries. +If we wanted to create an observer that printed values to the console it would be as easy as this: + +```csharp +public class MyConsoleObserver : IObserver +{ + public void OnNext(T value) + { + Console.WriteLine($"Received value {value}"); + } + + public void OnError(Exception error) + { + Console.WriteLine($"Sequence faulted with {error}"); + } + + public void OnCompleted() + { + Console.WriteLine("Sequence terminated"); + } +} +``` + +In the preceding chapter, I used a `Subscribe` extension method that accepted a delegate which it invoked each time the source produced an item. Rx's `ObservableExtensions` class defines that, and various other extension methods for `IObservable`. It includes overloads of `Subscribe` that enable me to write exactly equivalent code without needing to provide my own implementation of `IObserver`: + +```csharp +source.Subscribe( + value => Console.WriteLine($"Received value {value}"), + error => Console.WriteLine($"Sequence faulted with {error}"), + () => Console.WriteLine("Sequence terminated") +); +``` + +The overloads of `Subscribe` where we don't pass all three methods (e.g., my earlier example just supplied a single callback corresponding to `OnNext`) are equivalent to writing an `IObserver` implementation where one or more of the methods simply has an empty body. Whether we find it more convenient to write our own type that implements `IObserver`, or just supply callbacks for some or all of its `OnNext`, `OnError` and `OnCompleted` method, and `IObservable` source reports each event with a call to `OnNext`, and tells us that the events have come to an end either by calling `OnError` or `OnCompleted`. + + If you're wondering whether the relationship between `IObservable` and `IObserver` is similar to the relationship between [`IEnumerable`](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.ienumerable-1) and [`IEnumerator`](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.ienumerator-1), then you're onto something. Both `IEnumerator` and `IObservable` represent _potential_ sequences. With both of these interfaces, they will only supply data if we ask them for it. To get values out of an `IEnumerable`, an `IEnumerator` needs to come into existence, and similarly, to get values out of an `IObservable` requires an `IObserver`. The difference reflects the fundamental _pull vs push_ difference between `IEnumerable` and `IObservable`. Whereas with `IEnumerable` we ask the source to create an `IEnumerator` for us which we can then use to retrieve items (which is what a C# `foreach` loop does), with `IObservable`, the source does not _implement_ `IObserver`: it expects _us_ to supply an `IObserver` and it will then push its values into that observer. @@ -227,6 +262,7 @@ These three outcomes correspond precisely to the three method defined by `IObser That describes the three things that either can happen next when consuming either an `IEnumerable` or an `IObservable`. The only difference is the means by which consumers discover this. With an `IEnumerable` source, each call to `MoveNext` will tell us which of these three applies. And with an `IObservable` source, it will tell you one of these three things with a call to the corresponding member of your `IObserver` implementation. + ### The Rules of `IObserver` Notice that two of the three outcomes in the list above are terminal. If you're iterating through an `IEnumerable` with a `foreach` loop, and it throws an exception, the `foreach` loop will terminate. The C# compiler understands that if `MoveNext` throws, the `IEnumerator` is now done, so it disposes it and then allows the exception to propagate. Likewise, if you get to the end of a sequence, then you're done, and the compiler understands that too: the code it generates for a `foreach` loop detects when `MoveNext` returns false and when that happens it disposes the enumerator and then moves onto the code after the loop. @@ -421,345 +457,57 @@ So you might argue that this is a slightly better way to describe the rules form More subtly, observable sources are allowed to do nothing at all. In fact there's a built-in implementation. If you call `Observable.Never()` it will return an `IObservable`, and if you subscribe to that, it will never call any methods on your observer. This might not look immediately useful—it is logically equivalent to an `IEnumerable` in which the enumerator's `MoveNext` method never returns. That might not be usefully distinguishable from crashing. It's slightly different with Rx, because when we model this "no items emerge ever" behaviour, we don't need to block a thread forever to do it. We can just decide never to call any methods on the observer. This may seem daft, but as you've seen with the `Quiescent` example, sometimes we create observable sources not because we want the actual items that emerge from it, but because we're interested in the instants where interesting things happen. It can sometimes be useful to be able to model "nothing interesting ever happens" cases. +## Subscription Lifetime -### Implementing IObserver and IObservable +Before we can move on to seeing how to create `IObservable` sources that represent streams of events that are meaningful to our applications, there's one more thing we need to understand about the relationship between observers and observables: the lifetime of a subscription. -TODO: I've not reviewed past here. +You already know from the rules of `IObserver` that a call to either `OnComplete` or `OnError` denotes the end of a sequence. We passed an `IObserver` to `IObservable.Subscribe`, and now the subscription is over. But what if we want to stop the subscription earlier. -It is quite easy to implement each interface. If we wanted to create an observer that printed values to the console it would be as easy as this. +You might have noticed that the `Subscribe` method returns an `IDisposable`. It does that so that we can cancel our subscription. Perhaps we only subscribed to a source because our application opened some window showing the status of some process, and we wanted to update the window to reflect that's process's progress. If the user closes that window, we no longer have any use for the notifications. And although we could just ignore all further notifications, that could be a problem if the thing we're monitoring never reaches a natural end—our observer would continue to receive notifications for the lifetime of the application. This is a waste of CPU power (with corresponding implications for battery life and environmental impact) and it can also prevent the garbage collector from reclaiming memory that should have become free. -```csharp -public class MyConsoleObserver : IObserver -{ - public void OnNext(T value) - { - Console.WriteLine("Received value {0}", value); - } +So we are free to indicate that we no longer wish to receive notifications by calling `Dispose` on the object returned by `Subscribe`. There are a few non-obvious details, however. - public void OnError(Exception error) - { - Console.WriteLine("Sequence faulted with {0}", error); - } +First, you aren't required to call `Dispose`. Obviously if you want to remain subscribed to events for the lifetime of your process, this makes sense, but what might be less obvious is that if you subscribe to an `IObservable` that does come to an end, it automatically tidies up after itself: `IObservable` implementations are not allowed to assume that you will definitely call `Dispose`, so they are required to perform whatever cleanup they need to do if they stop by calling the observer's `OnCompleted` or `OnError`. This is unusual—in most cases where a .NET API returns a brand new object created on your behalf that implements `IDisposable`, it's an error not to dispose it. But `IDisposable` objects representing Rx subscriptions are an exception to this rule. You only need to dispose them if you want them to stop earlier than they otherwise would. - public void OnCompleted() - { - Console.WriteLine("Sequence terminated"); - } -} -``` +Second, `Dispose` won't necessarily take effect instantly. Obviously it will take some non-zero amount of time in between your code reaching the point where it calls `Dispose`, and the `Dispose` implementation reaching the point where it actually does something. Less obviously, some observable sources may need to do non-trivial work to shut things down. A source might create a thread to be able to monitor for and report whatever events it represents. (That would happen with the filesystem source shown above when running on Linux on .NET 7, because the `FileSystemWatcher` class itself creates its own thread on Linux.) It might take a while for the thread to detect that it is supposed to shut down. -Implementing an observable sequence is a little bit harder. An overly simplified implementation that returned a sequence of numbers could look like this. +Thirdly, sources have considerable latitude about when they stop producing events. The only guarantee is that once the call to `Dispose` has returned, the source will make no further calls to the relevant observer. But otherwise, observable sources have latitude here. Any of the following would be legal: -```csharp -public class MySequenceOfNumbers : IObservable -{ - public IDisposable Subscribe(IObserver observer) - { - observer.OnNext(1); - observer.OnNext(2); - observer.OnNext(3); - observer.OnCompleted(); - return Disposable.Empty; - } -} -``` - -We can tie these two implementations together to get the following output - -```csharp -var numbers = new MySequenceOfNumbers(); -var observer = new MyConsoleObserver(); -numbers.Subscribe(observer); -``` - -Output: - -``` -Received value 1 -Received value 2 -Received value 3 -Sequence terminated -``` - -The problem we have here is that this is not really reactive at all. This implementation is blocking, so we may as well use an `IEnumerable` implementation like a `List` or an array. - -This problem of implementing the interfaces should not concern us too much. You will find that when you use Rx, you do not have the need to actually implement these interfaces, Rx provides all of the implementations you need out of the box. Let's have a look at the simple ones. - -## Subject - -TODO: move this into a separate chapter? I'm not convinced all the subject types are really intro stuff. `Subject` is useful, but the rest? - -I like to think of the `IObserver` and the `IObservable` as the 'reader' and 'writer' or, 'consumer' and 'publisher' interfaces. If you were to create your own implementation of `IObservable` you may find that while you want to publicly expose the IObservable characteristics you still need to be able to publish items to the subscribers, throw errors and notify when the sequence is complete. Why that sounds just like the methods defined in `IObserver`! While it may seem odd to have one type implementing both interfaces, it does make life easy. This is what [subjects](http://msdn.microsoft.com/en-us/library/hh242969(v=VS.103).aspx "Using Rx Subjects - MSDN") can do for you. [`Subject`](http://msdn.microsoft.com/en-us/library/hh229173(v=VS.103).aspx "Subject(Of T) - MSDN") is the most basic of the subjects. Effectively you can expose your `Subject` behind a method that returns `IObservable` but internally you can use the `OnNext`, `OnError` and `OnCompleted` methods to control the sequence. - -In this very basic example, I create a subject, subscribe to that subject and then publish values to the sequence (by calling `subject.OnNext(T)`). - -```csharp -static void Main(string[] args) -{ - var subject = new Subject(); - WriteSequenceToConsole(subject); +* stopping calls to `IObserver` almost immediately after `Dispose` begins, even when it takes a relatively long time to bring any relevant underlying processes to a halt, in which case your observer will never receive an `OnCompleted` or `OnError` +* producing notifications that reflect the process of shutting down (including calling `OnError` if an error occurs while trying to bring things to a neat halt, or `OnCompleted` if it halted without problems) +* producing a few more notifications for some time after the call to `Dispose` begins, but cutting them off at some arbitrary point, potentially losing track even of important things like errors that occurred while trying to bring things to a halt - subject.OnNext("a"); - subject.OnNext("b"); - subject.OnNext("c"); - Console.ReadKey(); -} - -// Takes an IObservable as its parameter. -// Subject implements this interface. -static void WriteSequenceToConsole(IObservable sequence) -{ - // The next two lines are equivalent. - // sequence.Subscribe(value=>Console.WriteLine(value)); - sequence.Subscribe(Console.WriteLine); -} -``` - -Note that the `WriteSequenceToConsole` method takes an `IObservable` as it only wants access to the subscribe method. Hang on, doesn't the `Subscribe` method need an `IObserver` as an argument? Surely `Console.WriteLine` does not match that interface. Well it doesn't, but the Rx team supply me with an Extension Method to `IObservable` that just takes an [`Action`](http://msdn.microsoft.com/en-us/library/018hxwa8.aspx "Action(Of T) Delegate - MSDN"). The action will be executed every time an item is published. There are [other overloads to the Subscribe extension method](http://msdn.microsoft.com/en-us/library/system.observableextensions(v=VS.103).aspx "ObservableExtensions class - MSDN") that allows you to pass combinations of delegates to be invoked for `OnNext`, `OnCompleted` and `OnError`. This effectively means I don't need to implement `IObserver`. Cool. +As it happens, Rx has a preference for the first option. If you're using an `IObservable` implemented by Rx (e.g., one returned by a LINQ operator) it is highly likely to have this characteristic. This is partly to avoid trick situations in which observers try to do things to their sources inside their notification callbacks—re-entrancy tends to be awkward to deal with, and Rx avoids ever having to deal with this particular form of re-entrancy by ensuring that it has already stopped delivering notifications to the observer before it begins the work of shutting down a subscription. -As you can see, `Subject` could be quite useful for getting started in Rx programming. `Subject` however, is a basic implementation. There are three siblings to `Subject` that offer subtly different implementations which can drastically change the way your program runs. +This sometimes catches people out. If you need to be able to cancel some process that you are observing but you need to be able to observe everything it does up until the point that it stops, then you can't use unsubscription as the shutdown mechanism. As soon as you've called `Dispose`, the `IObservable` that returned that `IDisposable` is no longer under any obligation to tell you anything. This can be frustrating, because the `IDisposable` returned by `Subscribe` can sometimes seem like such a natural and easy way to shut something down. But basic truth is this: once you've initiated unsubscription, you can't rely on getting any further notifications associated with that subscription. You _might_ receive some—the source is allowed to do that. But you can't rely on it—the source is also allowed to silence itself immediately, and that's what most Rx-implemented sources will do. - +### Subscription Lifetime and Composition -## ReplaySubject +We typically combine multiple LINQ operators to express our processing requirements in Rx. What does this mean for subscription lifetime. -[`ReplaySubject`](http://msdn.microsoft.com/en-us/library/hh211810(v=VS.103).aspx "ReplaySubject(Of T) - MSDN") provides the feature of caching values and then replaying them for any late subscriptions. Consider this example where we have moved our first publication to occur before our subscription +For example, consider this: -```csharp -static void Main(string[] args) -{ - var subject = new Subject(); - - subject.OnNext("a"); - WriteSequenceToConsole(subject); - - subject.OnNext("b"); - subject.OnNext("c"); - Console.ReadKey(); -} -``` - -The result of this would be that 'b' and 'c' would be written to the console, but 'a' ignored. -If we were to make the minor change to make subject a `ReplaySubject` we would see all publications again. - -```csharp -var subject = new ReplaySubject(); - -subject.OnNext("a"); -WriteSequenceToConsole(subject); - -subject.OnNext("b"); -subject.OnNext("c"); -``` - -This can be very handy for eliminating race conditions. Be warned though, the default constructor of the `ReplaySubject` will create an instance that caches every value published to it. In many scenarios this could create unnecessary memory pressure on the application. `ReplaySubject` allows you to specify simple cache expiry settings that can alleviate this memory issue. One option is that you can specify the size of the buffer in the cache. In this example we create the `ReplaySubject` with a buffer size of 2, and so only get the last two values published prior to our subscription: - -```csharp -public void ReplaySubjectBufferExample() -{ - var bufferSize = 2; - var subject = new ReplaySubject(bufferSize); - - subject.OnNext("a"); - subject.OnNext("b"); - subject.OnNext("c"); - subject.Subscribe(Console.WriteLine); - subject.OnNext("d"); -} -``` - -Here the output would show that the value 'a' had been dropped from the cache, but values 'b' and 'c' were still valid. The value 'd' was published after we subscribed so it is also written to the console. - -``` -Output: -b -c -d -``` - -Another option for preventing the endless caching of values by the `ReplaySubject`, is to provide a window for the cache. In this example, instead of creating a `ReplaySubject` with a buffer size, we specify a window of time that the cached values are valid for. - -```csharp -public void ReplaySubjectWindowExample() -{ - var window = TimeSpan.FromMilliseconds(150); - var subject = new ReplaySubject(window); - - subject.OnNext("w"); - Thread.Sleep(TimeSpan.FromMilliseconds(100)); - subject.OnNext("x"); - Thread.Sleep(TimeSpan.FromMilliseconds(100)); - subject.OnNext("y"); - subject.Subscribe(Console.WriteLine); - subject.OnNext("z"); -} -``` - -In the above example the window was specified as 150 milliseconds. Values are published 100 milliseconds apart. Once we have subscribed to the subject, the first value is 200ms old and as such has expired and been removed from the cache. - -``` -Output: -x -y -z -``` - -## BehaviorSubject - -[`BehaviorSubject`](http://msdn.microsoft.com/en-us/library/hh211949(v=VS.103).aspx "BehaviorSubject(Of T) - MSDN") is similar to `ReplaySubject` except it only remembers the last publication. `BehaviorSubject` also requires you to provide it a default value of `T`. This means that all subscribers will receive a value immediately (unless it is already completed). - -In this example the value 'a' is written to the console: - -```csharp -public void BehaviorSubjectExample() -{ - //Need to provide a default value. - var subject = new BehaviorSubject("a"); - subject.Subscribe(Console.WriteLine); -} -``` - -In this example the value 'b' is written to the console, but not 'a'. - -```csharp -public void BehaviorSubjectExample2() -{ - var subject = new BehaviorSubject("a"); - subject.OnNext("b"); - subject.Subscribe(Console.WriteLine); -} -``` - -In this example the values 'b', 'c' & 'd' are all written to the console, but again not 'a' - -```csharp -public void BehaviorSubjectExample3() -{ - var subject = new BehaviorSubject("a"); - - subject.OnNext("b"); - subject.Subscribe(Console.WriteLine); - subject.OnNext("c"); - subject.OnNext("d"); -} -``` - -Finally in this example, no values will be published as the sequence has completed. Nothing is written to the console. - -```csharp -public void BehaviorSubjectCompletedExample() -{ - var subject = new BehaviorSubject("a"); - subject.OnNext("b"); - subject.OnNext("c"); - subject.OnCompleted(); - subject.Subscribe(Console.WriteLine); -} -``` - -That note that there is a difference between a `ReplaySubject` with a buffer size of one (commonly called a 'replay one subject') and a `BehaviorSubject`. A `BehaviorSubject` requires an initial value. With the assumption that neither subjects have completed, then you can be sure that the `BehaviorSubject` will have a value. You cannot be certain with the `ReplaySubject` however. With this in mind, it is unusual to ever complete a `BehaviorSubject`. Another difference is that a replay-one-subject will still cache its value once it has been completed. So subscribing to a completed `BehaviorSubject` we can be sure to not receive any values, but with a `ReplaySubject` it is possible. - -`BehaviorSubject`s are often associated with class [properties](http://msdn.microsoft.com/en-us/library/65zdfbdt(v=vs.71).aspx). -As they always have a value and can provide change notifications, they could be candidates for backing fields to properties. - -## AsyncSubject - -[`AsyncSubject`](http://msdn.microsoft.com/en-us/library/hh229363(v=VS.103).aspx "AsyncSubject(Of T) - MSDN") is similar to the Replay and Behavior subjects in the way that it caches values, however it will only store the last value, and only publish it when the sequence is completed. The general usage of the `AsyncSubject` is to only ever publish one value then immediately complete. This means that is becomes quite comparable to `Task`. - -In this example no values will be published as the sequence never completes. -No values will be written to the console. - -```csharp -static void Main(string[] args) -{ - var subject = new AsyncSubject(); - subject.OnNext("a"); - WriteSequenceToConsole(subject); - subject.OnNext("b"); - subject.OnNext("c"); - Console.ReadKey(); -} -``` - -In this example we invoke the `OnCompleted` method so the last value 'c' is written to the console: - -```csharp -static void Main(string[] args) -{ - var subject = new AsyncSubject(); - - subject.OnNext("a"); - WriteSequenceToConsole(subject); - subject.OnNext("b"); - subject.OnNext("c"); - subject.OnCompleted(); - Console.ReadKey(); -} -``` - -## Implicit contracts - -There are implicit contacts that need to be upheld when working with Rx as mentioned above. The key one is that once a sequence is completed, no more activity can happen on that sequence. A sequence can be completed in one of two ways, either by `OnCompleted()` or by `OnError(Exception)`. - -The four subjects described in this chapter all cater for this implicit contract by ignoring any attempts to publish values, errors or completions once the sequence has already terminated. - -Here we see an attempt to publish the value 'c' on a completed sequence. Only values 'a' and 'b' are written to the console. - -```csharp -public void SubjectInvalidUsageExample() -{ - var subject = new Subject(); - - subject.Subscribe(Console.WriteLine); - - subject.OnNext("a"); - subject.OnNext("b"); - subject.OnCompleted(); - subject.OnNext("c"); -} -``` - -## ISubject interfaces - -While each of the four subjects described in this chapter implement the `IObservable` and `IObserver` interfaces, they do so via another set of interfaces: - -```csharp -//Represents an object that is both an observable sequence as well as an observer. -public interface ISubject - : IObserver, IObservable -{ -} +```cs +IObservable source = GetSource(); +IObservable filtered = source.Where(i => i % 2 == 0); +IDisposable subscription = filtered.Subscribe( + i => Console.WriteLine(i), + error => Console.WriteLine($"OnError: {error}"), + () => Console.WriteLine("OnCompleted")); ``` -As all the subjects mentioned here have the same type for both `TSource` and `TResult`, they implement this interface which is the superset of all the previous interfaces: - -```csharp -//Represents an object that is both an observable sequence as well as an observer. -public interface ISubject : ISubject, IObserver, IObservable -{ -} -``` +We're calling `Subscribe` on the observable returned by `Where`. When we do that, it will in turn call `Subscribe` on the the `IObservable` returned by `GetSource` (stored in the `source` variable). So there is in effect a chain of subscriptions here. (We only have access to the `IDisposable` returned by `filtered.Subscribe` but the object that returns will be storing the `IDisposable` that it received when it called `source.Subscribe`.) -These interfaces are not widely used, but prove useful as the subjects do not share a common base class. We will see the subject interfaces used later when we discover [Hot and cold observables](14_HotAndColdObservables.html). +If the source comes to an end all by itself (by calling either `OnCompleted` or `OnError`), this cascades through the chain. So `source` will call `OnCompleted` on the `IObserver` that was supplied by the `Where` operator. And that in turn will call `OnCompleted` on the `IObserver` that the was supplied in the call to `filtered.Subscribe`, and that will have references to the three methods we passed, so it will call our completion handler. So you could look at this by saying that `source` completes, it tells `filtered` that it has completed, which invokes our completion handler. (In reality this is a very slight oversimplification, because `source` doesn't tell `filtered` anything; it's actually talking to the `IObserver` that `filtered` supplied. This distinction matters if you have multiple subscriptions active simultaneously for the same chain of observables. But in this case, the simpler way of describing it is good enough even if it's not absolutely precise.) -## Subject factory +In short, completion bubbles up from the source, through all the operators, and arrives at our handler. -Finally it is worth making you aware that you can also create a subject via a factory method. Considering that a subject combines the `IObservable` and `IObserver` interfaces, it seems sensible that there should be a factory that allows you to combine them yourself. The `Subject.Create(IObserver, IObservable)` factory method provides just this. +What if we unsubscribe early by calling `subscription.Dispose()`? In that case it all happens the other way round—the `subscription` returned by `filtered.Subscribe` is the first to know that we're unsubscribing, but it will then call `Dispose` on the object that was returned when it called `source.Subscribe` for us. -```csharp -//Creates a subject from the specified observer used to publish messages to the subject -// and observable used to subscribe to messages sent from the subject -public static ISubject>TSource, TResult< Create>TSource, TResult<( - IObserver>TSource< observer, - IObservable>TResult< observable) -{...} -``` +Either way, everything from the source to the observer, including any operators that were sitting in between, gets shut down in either case. -Subjects provide a convenient way to poke around Rx, however they are not recommended for day to day use. An explanation is in the [Usage Guidelines](18_UsageGuidelines.md) in the appendix. Instead of using subjects, favor the factory methods we will look at in [Part 2](04_CreatingObservableSequences.md). -The fundamental types `IObserver` and `IObservable` and the auxiliary subject types create a base from which to build your Rx knowledge. It is important to understand these simple types and their implicit contracts. In production code you may find that you rarely use the `IObserver` interface and subject types, but understanding them and how they fit into the Rx eco-system is still important. The `IObservable` interface is the dominant type that you will be exposed to for representing a sequence of data in motion, and therefore will comprise the core concern for most of your work with Rx and most of this book. +Now that we understand the relationship between an `IObservable` source and the `IObserver` interface that received event notifications, we can look at how we might create an `IObservable` instance to represent events of interest in our application. diff --git a/content/03_LifetimeManagement.md b/content/03_LifetimeManagement.md index bb7f368..66d7576 100644 --- a/content/03_LifetimeManagement.md +++ b/content/03_LifetimeManagement.md @@ -2,6 +2,8 @@ title: Lifetime management --- +TODO: I think most of this is critical to use of `IObservable` so I don't think it really makes sense for this to be in its own chapter. I've covered it in Ch02. However, I need to go through this and work out if there's anything in here that I've not covered, and if so, work out what do to with it. + # Lifetime management The very nature of Rx code is that you as a consumer do not know when a sequence will provide values or terminate. This uncertainty does not prevent your code from providing a level of certainty. You can control when you will start accepting values and when you choose to stop accepting values. You still need to be the master of your domain. Understanding the basics of managing Rx resources allow your applications to be as efficient, bug free and predictable as possible. diff --git a/content/04_CreatingObservableSequences.md b/content/04_CreatingObservableSequences.md index ca3fe96..621c48a 100644 --- a/content/04_CreatingObservableSequences.md +++ b/content/04_CreatingObservableSequences.md @@ -2,6 +2,445 @@ title : Creating a sequence --- +# TODO: content that was originally in ch02 that really belongs in here + +## Creating an IObservable to Represent Events + +Here's an overly simplified implementation of an `IObservable` that produces a sequence of numbers: + +```csharp +public class MySequenceOfNumbers : IObservable +{ + public IDisposable Subscribe(IObserver observer) + { + observer.OnNext(1); + observer.OnNext(2); + observer.OnNext(3); + observer.OnCompleted(); + return Disposable.Empty; + } +} +``` + +We can test this by constructing it, and then creating an instance of the console-based `IObserver` defined earlier, and subscribing that to the `MySequenceOfNumbers` instance: + +```csharp +var numbers = new MySequenceOfNumbers(); +var observer = new MyConsoleObserver(); +numbers.Subscribe(observer); +``` + +This produces the following output: + +``` +Received value 1 +Received value 2 +Received value 3 +Sequence terminated +``` + +This is a little too simple to be useful. For one thing, we typically use Rx when there are events of interest, but this is not really reactive at all—it just produces a fixed set of numbers immediately. Moreover, the implementation is blocking—it doesn't even return from `Subscribe` until after it has finished producing all of its values. This example illustrates the basics of how a source provides events to a subscriber, but for this example we might as well use an `IEnumerable` implementation like a `List` or an array. + +Here's something a little more realistic. This is a wrapper around .NET's `FileSystemWatcher`, presenting filesystem change notifications as an `IObservable`. + +```cs +// Represents filesystem changes as an Rx observable sequence. +// NOTE: this is an oversimplified example for illustration purposes. +// It does not handle multiple subscribers efficiently, and it does not +// use IScheduler. +public class RxFsEvents : IObservable +{ + private readonly string folder; + + public RxFsEvents(string folder) + { + this.folder = folder; + } + + public IDisposable Subscribe(IObserver observer) + { + // Inefficient if we get multiple subscribers. + FileSystemWatcher watcher = new(this.folder); + + // FileSystemWatcher's documentation says nothing about which thread + // it raises events on (unless you use its SynchronizationObject, + // which integrates well with Windows Forms, but which might prove + // more complex here) nor does it promise to wait until we've + // finished handling one event before it delivers the next. The Mac, + // Windows, and Linux implementations are all significantly different, + // so it would be unwise to rely on anything not guaranteed by the + // documentation. (As it happens, the Win32 implementation on .NET 7 + // does appear to wait until each event handler returns before + // delivering the next event, so we probably would get way with + // ignoring this issue. For now. On Windows. And actually the Linux + // implementation dedicates a single thread to this job, but there's + // a comment in the source code saying that this should probably + // change - another reason to rely only on documented behaviour.) + // So it's our problem to ensure we obey the rules of IObserver. + // First, we need to make sure that we only make one call at a time + // into the observer. A more realistic example would use an Rx + // IScheduler, but since we've not explained what those are yet, + // we're just going to use lock with this object. + object sync = new(); + + // More subtly, the FileSystemWatcher documentation doesn't make it + // clear whether we might continue to get a few more change events + // after it has reported an error. Since there are no promises about + // threads, it's possible that race conditions exist that would lead to + // us trying to handle an event from a FileSystemWatcher after it has + // reported an error. So we need to remember if we've already called + // OnError to make sure we don't break the IObserver rules in that + // case. + bool onErrorAlreadyCalled = false; + + void SendToObserver(object _, FileSystemEventArgs e) + { + lock (sync) + { + if (!onErrorAlreadyCalled) + { + observer.OnNext(e); + } + } + } + + watcher.Created += SendToObserver; + watcher.Changed += SendToObserver; + watcher.Renamed += SendToObserver; + watcher.Deleted += SendToObserver; + + watcher.Error += (_, e) => + { + lock (sync) + { + // Maybe the FileSystemWatcher can report multiple errors, but + // we're only allowed to report one to IObservable. + if (onErrorAlreadyCalled) + { + observer.OnError(e.GetException()); + onErrorAlreadyCalled = true; + } + } + }; + + watcher.EnableRaisingEvents = true; + + return watcher; + } +} +``` + +That got more complex fast. This illustrates that `IObservable` implementations are responsible for obeying the `IObserver` rules. This is generally a good thing: it keeps the messy concerns around concurrency contained in a single place. Any `IObserver` that I subscribe to this `RxFsEvents` is free from having to manage concurrency, because it can count on the `IObserver` rules, which guarantee that it will only have to handle one thing at a time. If I hadn't been required to enforce these rules in the source, it might have made my `RxFsEvents` class simpler, but all of that complexity of dealing with overlapping events would have spread out into the code that handles the events. Concurrency is hard enough to deal with when its effects are contained. Once it starts to spread across multiple types, it can become almost impossible to reason about. Rx's `IObserver` rules prevent this from happening. + +There are a couple of issues with this code. One is that when `IObservable` implementations produce events modelling real-life asynchronous activity (such as filesystem changes) applications will often want some way to take control over which threads notifications arrive on. For example, UI frameworks tend to have thread affinity requirements—you typically need to be on a particular thread to be allowed to update the user interface. So we would normally expect to be able to provide this sort of observer with an `IScheduler`, and for it to deliver notifications through that. We'll discuss schedulers in later chapters. + +The other issue is that this does not deal with multiple subscribers efficiently. You're allowed to call `IObservable.Subscribe` multiple times, and if you do that with this code, it will create a new `FileSystemWatcher` each time. That could happen more easily than you might think. Suppose we had an instance of this watcher, and wanted to handle different events in different ways. We might use the `Where` operator to define observable sources that split events up in the way we want: + +```cs +IObservable configChanges = + fs.Where(e => Path.GetExtension(e.Name) == ".config"); +IObservable deletions = + fs.Where(e => e.ChangeType == WatcherChangeTypes.Deleted); +``` + +When you call `Subscribe` on the `IObservable` returned by the `Where` operator, it will call `Subscribe` on its input. So in this case, if we call `Subscribe` on both `configChanges` and `deletion`, that will result in _two_ calls to `Subscribe` on `rs`. So if `rs` is an instance of our `RxFsEvents` type above, each one will construct its own `FileSystemEventWatcher`, which is inefficient. + +Rx offers a few ways to deal with this. It provides operators designed specifically to take an `IObservable` that does not tolerate multiple subscribers and wrap it in an adapter that handles multiple subscribers for you: + +```cs +IObservable fs = + new RxFsEvents(@"c:\temp") + .Publish() + .RefCount(); +``` + +But this is leaping ahead somewhat. If you want to build a type that is inherently multi-subscriber-friendly, all you really need to do is keep track of all your subscribers, and notify them + + +This problem of implementing the interfaces should not concern us too much. You will find that when you use Rx, you do not have the need to actually implement these interfaces, Rx provides all of the implementations you need out of the box. Let's have a look at the simple ones. + +## Subject + +TODO: move this into a separate chapter? I'm not convinced all the subject types are really intro stuff. `Subject` is useful, but the rest? + +I like to think of the `IObserver` and the `IObservable` as the 'reader' and 'writer' or, 'consumer' and 'publisher' interfaces. If you were to create your own implementation of `IObservable` you may find that while you want to publicly expose the IObservable characteristics you still need to be able to publish items to the subscribers, throw errors and notify when the sequence is complete. Why that sounds just like the methods defined in `IObserver`! While it may seem odd to have one type implementing both interfaces, it does make life easy. This is what [subjects](http://msdn.microsoft.com/en-us/library/hh242969(v=VS.103).aspx "Using Rx Subjects - MSDN") can do for you. [`Subject`](http://msdn.microsoft.com/en-us/library/hh229173(v=VS.103).aspx "Subject(Of T) - MSDN") is the most basic of the subjects. Effectively you can expose your `Subject` behind a method that returns `IObservable` but internally you can use the `OnNext`, `OnError` and `OnCompleted` methods to control the sequence. + +In this very basic example, I create a subject, subscribe to that subject and then publish values to the sequence (by calling `subject.OnNext(T)`). + +```csharp +static void Main(string[] args) +{ + var subject = new Subject(); + WriteSequenceToConsole(subject); + + subject.OnNext("a"); + subject.OnNext("b"); + subject.OnNext("c"); + Console.ReadKey(); +} + +// Takes an IObservable as its parameter. +// Subject implements this interface. +static void WriteSequenceToConsole(IObservable sequence) +{ + // The next two lines are equivalent. + // sequence.Subscribe(value=>Console.WriteLine(value)); + sequence.Subscribe(Console.WriteLine); +} +``` + +Note that the `WriteSequenceToConsole` method takes an `IObservable` as it only wants access to the subscribe method. Hang on, doesn't the `Subscribe` method need an `IObserver` as an argument? Surely `Console.WriteLine` does not match that interface. Well it doesn't, but the Rx team supply me with an Extension Method to `IObservable` that just takes an [`Action`](http://msdn.microsoft.com/en-us/library/018hxwa8.aspx "Action(Of T) Delegate - MSDN"). The action will be executed every time an item is published. There are [other overloads to the Subscribe extension method](http://msdn.microsoft.com/en-us/library/system.observableextensions(v=VS.103).aspx "ObservableExtensions class - MSDN") that allows you to pass combinations of delegates to be invoked for `OnNext`, `OnCompleted` and `OnError`. This effectively means I don't need to implement `IObserver`. Cool. + +As you can see, `Subject` could be quite useful for getting started in Rx programming. `Subject` however, is a basic implementation. There are three siblings to `Subject` that offer subtly different implementations which can drastically change the way your program runs. + + + +## ReplaySubject + +[`ReplaySubject`](http://msdn.microsoft.com/en-us/library/hh211810(v=VS.103).aspx "ReplaySubject(Of T) - MSDN") provides the feature of caching values and then replaying them for any late subscriptions. Consider this example where we have moved our first publication to occur before our subscription + +```csharp +static void Main(string[] args) +{ + var subject = new Subject(); + + subject.OnNext("a"); + WriteSequenceToConsole(subject); + + subject.OnNext("b"); + subject.OnNext("c"); + Console.ReadKey(); +} +``` + +The result of this would be that 'b' and 'c' would be written to the console, but 'a' ignored. +If we were to make the minor change to make subject a `ReplaySubject` we would see all publications again. + +```csharp +var subject = new ReplaySubject(); + +subject.OnNext("a"); +WriteSequenceToConsole(subject); + +subject.OnNext("b"); +subject.OnNext("c"); +``` + +This can be very handy for eliminating race conditions. Be warned though, the default constructor of the `ReplaySubject` will create an instance that caches every value published to it. In many scenarios this could create unnecessary memory pressure on the application. `ReplaySubject` allows you to specify simple cache expiry settings that can alleviate this memory issue. One option is that you can specify the size of the buffer in the cache. In this example we create the `ReplaySubject` with a buffer size of 2, and so only get the last two values published prior to our subscription: + +```csharp +public void ReplaySubjectBufferExample() +{ + var bufferSize = 2; + var subject = new ReplaySubject(bufferSize); + + subject.OnNext("a"); + subject.OnNext("b"); + subject.OnNext("c"); + subject.Subscribe(Console.WriteLine); + subject.OnNext("d"); +} +``` + +Here the output would show that the value 'a' had been dropped from the cache, but values 'b' and 'c' were still valid. The value 'd' was published after we subscribed so it is also written to the console. + +``` +Output: +b +c +d +``` + +Another option for preventing the endless caching of values by the `ReplaySubject`, is to provide a window for the cache. In this example, instead of creating a `ReplaySubject` with a buffer size, we specify a window of time that the cached values are valid for. + +```csharp +public void ReplaySubjectWindowExample() +{ + var window = TimeSpan.FromMilliseconds(150); + var subject = new ReplaySubject(window); + + subject.OnNext("w"); + Thread.Sleep(TimeSpan.FromMilliseconds(100)); + subject.OnNext("x"); + Thread.Sleep(TimeSpan.FromMilliseconds(100)); + subject.OnNext("y"); + subject.Subscribe(Console.WriteLine); + subject.OnNext("z"); +} +``` + +In the above example the window was specified as 150 milliseconds. Values are published 100 milliseconds apart. Once we have subscribed to the subject, the first value is 200ms old and as such has expired and been removed from the cache. + +``` +Output: +x +y +z +``` + +## BehaviorSubject + +[`BehaviorSubject`](http://msdn.microsoft.com/en-us/library/hh211949(v=VS.103).aspx "BehaviorSubject(Of T) - MSDN") is similar to `ReplaySubject` except it only remembers the last publication. `BehaviorSubject` also requires you to provide it a default value of `T`. This means that all subscribers will receive a value immediately (unless it is already completed). + +In this example the value 'a' is written to the console: + +```csharp +public void BehaviorSubjectExample() +{ + //Need to provide a default value. + var subject = new BehaviorSubject("a"); + subject.Subscribe(Console.WriteLine); +} +``` + +In this example the value 'b' is written to the console, but not 'a'. + +```csharp +public void BehaviorSubjectExample2() +{ + var subject = new BehaviorSubject("a"); + subject.OnNext("b"); + subject.Subscribe(Console.WriteLine); +} +``` + +In this example the values 'b', 'c' & 'd' are all written to the console, but again not 'a' + +```csharp +public void BehaviorSubjectExample3() +{ + var subject = new BehaviorSubject("a"); + + subject.OnNext("b"); + subject.Subscribe(Console.WriteLine); + subject.OnNext("c"); + subject.OnNext("d"); +} +``` + +Finally in this example, no values will be published as the sequence has completed. Nothing is written to the console. + +```csharp +public void BehaviorSubjectCompletedExample() +{ + var subject = new BehaviorSubject("a"); + subject.OnNext("b"); + subject.OnNext("c"); + subject.OnCompleted(); + subject.Subscribe(Console.WriteLine); +} +``` + +That note that there is a difference between a `ReplaySubject` with a buffer size of one (commonly called a 'replay one subject') and a `BehaviorSubject`. A `BehaviorSubject` requires an initial value. With the assumption that neither subjects have completed, then you can be sure that the `BehaviorSubject` will have a value. You cannot be certain with the `ReplaySubject` however. With this in mind, it is unusual to ever complete a `BehaviorSubject`. Another difference is that a replay-one-subject will still cache its value once it has been completed. So subscribing to a completed `BehaviorSubject` we can be sure to not receive any values, but with a `ReplaySubject` it is possible. + +`BehaviorSubject`s are often associated with class [properties](http://msdn.microsoft.com/en-us/library/65zdfbdt(v=vs.71).aspx). +As they always have a value and can provide change notifications, they could be candidates for backing fields to properties. + +## AsyncSubject + +[`AsyncSubject`](http://msdn.microsoft.com/en-us/library/hh229363(v=VS.103).aspx "AsyncSubject(Of T) - MSDN") is similar to the Replay and Behavior subjects in the way that it caches values, however it will only store the last value, and only publish it when the sequence is completed. The general usage of the `AsyncSubject` is to only ever publish one value then immediately complete. This means that is becomes quite comparable to `Task`. + +In this example no values will be published as the sequence never completes. +No values will be written to the console. + +```csharp +static void Main(string[] args) +{ + var subject = new AsyncSubject(); + subject.OnNext("a"); + WriteSequenceToConsole(subject); + subject.OnNext("b"); + subject.OnNext("c"); + Console.ReadKey(); +} +``` + +In this example we invoke the `OnCompleted` method so the last value 'c' is written to the console: + +```csharp +static void Main(string[] args) +{ + var subject = new AsyncSubject(); + + subject.OnNext("a"); + WriteSequenceToConsole(subject); + subject.OnNext("b"); + subject.OnNext("c"); + subject.OnCompleted(); + Console.ReadKey(); +} +``` + +## Implicit contracts + +There are implicit contacts that need to be upheld when working with Rx as mentioned above. The key one is that once a sequence is completed, no more activity can happen on that sequence. A sequence can be completed in one of two ways, either by `OnCompleted()` or by `OnError(Exception)`. + +The four subjects described in this chapter all cater for this implicit contract by ignoring any attempts to publish values, errors or completions once the sequence has already terminated. + +Here we see an attempt to publish the value 'c' on a completed sequence. Only values 'a' and 'b' are written to the console. + +```csharp +public void SubjectInvalidUsageExample() +{ + var subject = new Subject(); + + subject.Subscribe(Console.WriteLine); + + subject.OnNext("a"); + subject.OnNext("b"); + subject.OnCompleted(); + subject.OnNext("c"); +} +``` + +## ISubject interfaces + +While each of the four subjects described in this chapter implement the `IObservable` and `IObserver` interfaces, they do so via another set of interfaces: + +```csharp +//Represents an object that is both an observable sequence as well as an observer. +public interface ISubject + : IObserver, IObservable +{ +} +``` + +As all the subjects mentioned here have the same type for both `TSource` and `TResult`, they implement this interface which is the superset of all the previous interfaces: + +```csharp +//Represents an object that is both an observable sequence as well as an observer. +public interface ISubject : ISubject, IObserver, IObservable +{ +} +``` + +These interfaces are not widely used, but prove useful as the subjects do not share a common base class. We will see the subject interfaces used later when we discover [Hot and cold observables](14_HotAndColdObservables.html). + +## Subject factory + +Finally it is worth making you aware that you can also create a subject via a factory method. Considering that a subject combines the `IObservable` and `IObserver` interfaces, it seems sensible that there should be a factory that allows you to combine them yourself. The `Subject.Create(IObserver, IObservable)` factory method provides just this. + +```csharp +//Creates a subject from the specified observer used to publish messages to the subject +// and observable used to subscribe to messages sent from the subject +public static ISubject>TSource, TResult< Create>TSource, TResult<( + IObserver>TSource< observer, + IObservable>TResult< observable) +{...} +``` + +Subjects provide a convenient way to poke around Rx, however they are not recommended for day to day use. An explanation is in the [Usage Guidelines](18_UsageGuidelines.md) in the appendix. Instead of using subjects, favor the factory methods we will look at in [Part 2](04_CreatingObservableSequences.md). + +The fundamental types `IObserver` and `IObservable` and the auxiliary subject types create a base from which to build your Rx knowledge. It is important to understand these simple types and their implicit contracts. In production code you may find that you rarely use the `IObserver` interface and subject types, but understanding them and how they fit into the Rx eco-system is still important. The `IObservable` interface is the dominant type that you will be exposed to for representing a sequence of data in motion, and therefore will comprise the core concern for most of your work with Rx and most of this book. + + + + +# TODO: end of content relocated from ch02. There follows the original text for this chapter. + + # PART 2 - Sequence basics So you want to get involved and write some Rx code, but how do you get started? We have looked at the key types, but know that we should not be creating our own implementations of `IObserver` or `IObservable` and should favor factory methods over using subjects. Even if we have an observable sequence, how do we pick out the data we want from it? We need to understand the basics of creating an observable sequence, getting values into it and picking out the values we want from them. From ba2b9141b27db2a8535a0d2b0861dc33b622251a Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Mon, 5 Jun 2023 16:29:01 +0100 Subject: [PATCH 006/142] Lifetime Management chapter content moved into other chapters --- content/02_KeyTypes.md | 143 +++++++------ content/03_LifetimeManagement.md | 314 ---------------------------- content/11_AdvancedErrorHandling.md | 38 ++++ content/B_Disposables.md | 55 +++++ 4 files changed, 167 insertions(+), 383 deletions(-) delete mode 100644 content/03_LifetimeManagement.md create mode 100644 content/B_Disposables.md diff --git a/content/02_KeyTypes.md b/content/02_KeyTypes.md index 268c6be..86b3cda 100644 --- a/content/02_KeyTypes.md +++ b/content/02_KeyTypes.md @@ -4,13 +4,9 @@ title : Key Types # Key types -Rx is a powerful framework that can greatly simplify code that response to events. But to write good Reactive code you have to understand the basic concepts. +Rx is a powerful framework that can greatly simplify code that responds to events. But to write good Reactive code you have to understand the basic concepts. The fundamental building block of Rx is an interface called `IObservable`. Understanding this, and its counterpart `IObserver`, is the key to success with Rx. -The fundamental building block of Rx is an interface called `IObservable`. Understanding this, and its counterpart `IObserver`, is the key to success with Rx. This chapter will also describe a family of types called _subjects_, which implement both `IObserver` and `IObservable`. Although subjects are not quite as important as the two fundamental types, they can be very helpful when using Rx, and can sometimes provide an easy way in for developers new to Rx. - -Most .NET developers will be familiar with [LINQ](https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/basic-linq-query-operations) in at least one of its many popular forms such as [LINQ to Objects](https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/linq-to-objects), or [Entity Framework Core queries](https://learn.microsoft.com/en-us/ef/core/querying/). Most LINQ implementations allow you to query _data at rest_—LINQ to objects works on arrays or other collections; LINQ queries in Entity Framework Core run against data in a database. But Rx is different: it offers the ability to define queries over live event streams—what you might call _data in motion_. - -The preceding chapter had this example: +The preceding chapter showed this LINQ query expression as the first example: ```cs var bigTrades = @@ -18,6 +14,8 @@ var bigTrades = where trade.Volume > 1_000_000; ``` +Most .NET developers will be familiar with [LINQ](https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/basic-linq-query-operations) in at least one of its many popular forms such as [LINQ to Objects](https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/linq-to-objects), or [Entity Framework Core queries](https://learn.microsoft.com/en-us/ef/core/querying/). Most LINQ implementations allow you to query _data at rest_—LINQ to Objects works on arrays or other collections; LINQ queries in Entity Framework Core run against data in a database. But Rx is different: it offers the ability to define queries over live event streams—what you might call _data in motion_. + If you don't like the query expression syntax, you can write exactly equivalent code by invoking LINQ operators directly: ```cs @@ -52,16 +50,18 @@ public interface IObservable } ``` -You can see [the source for `IObservable` on GitHub](https://github.com/dotnet/runtime/blob/b4008aefaf8e3b262fbb764070ea1dd1abe7d97c/src/libraries/System.Private.CoreLib/src/System/IObservable.cs). Notice that it is part of the .NET runtime libraries, and not the `System.Reactive` NuGet package. `IObservable` is of such fundamental importance that it is baked into .NET. (So you might be wondering what the `System.Reactive` NuGet package is for. The .NET runtime libraries define only the `IObservable` and `IObserver` interfaces, and not the LINQ implementation. The Rx NuGet package gives us LINQ support, and also deals with threading.) +You can see [the source for `IObservable` on GitHub](https://github.com/dotnet/runtime/blob/b4008aefaf8e3b262fbb764070ea1dd1abe7d97c/src/libraries/System.Private.CoreLib/src/System/IObservable.cs). Notice that it is part of the .NET runtime libraries, and not the `System.Reactive` NuGet package. `IObservable` represents such a fundamentally important abstraction that it is baked into .NET. (So you might be wondering what the `System.Reactive` NuGet package is for. The .NET runtime libraries define only the `IObservable` and `IObserver` interfaces, and not the LINQ implementation. The Rx NuGet package gives us LINQ support, and also deals with threading.) + +This interface's only method makes it clear what we can do with an `IObservable`: if we want to receive the events it has to offer, we can _subscribe_ to it. (We can also unsubscribe: the `Subscribe` method returns an `IDisposable`, and if we call `Dispose` on that it cancels our subscription.) The `Subscribe` method requires us to pass in an implementation of `IObserver`, which we will get to shortly. -Observant readers will have noticed that an example in the preceding chapter looks like it shouldn't work. Having created an `IObservable` that produced events once per second, it subscribed to it with this code: +Observant readers will have noticed that an example in the preceding chapter looks like it shouldn't work. That code created an `IObservable` that produced events once per second, and then it subscribed to it with this code: ```cs ticks.Subscribe( tick => Console.WriteLine($"Tick {tick}")); ``` -That's passing a delegate, but we can see that `IObservable.Subscribe` requires something called an `IObserver`. We'll get to `IObserver` shortly, but all that's happening here is that this example is using an extension method from the Rx NuGet package: +That's passing a delegate, and not the `IObserver` that `IObservable.Subscribe` requires. We'll get to `IObserver` shortly, but all that's happening here is that this example is using an extension method from the `System.Reactive` NuGet package: ```cs // From the System.Reactive library's ObservableExtensions class @@ -76,9 +76,9 @@ Since `IObservable` defines just one method, `Subscribe`, you might be wonder So far I've shown only a very simple LINQ example, using the `Where` operator to filter events down to ones that meet certain criteria. To give you a flavour of how we can build more advanced functionality through composition, I'm going to introduce an example scenario. -Suppose you want to write a program that watches some folder on a filesystem, and performs automatic processing any time something in that folder changes. For example, web developers often to trigger automatic rebuilds of their client side code when they save changes in the editor so they can quickly see the effect of their changes. Often in these cases, filesystem changes often come in bursts—text editors might perform a few distinct operations when saving a file. (Some save modifications to a new file, then perform a couple of renames once this is complete, because this avoids data loss if a power failure or system crash happens to occur at the moment you save the file.) So you typically won't want to take action as soon as you detect file activity. It would be better to give it a moment to see if any more activity occurs, and take action only after everything has settled down. +Suppose you want to write a program that watches some folder on a filesystem, and performs automatic processing any time something in that folder changes. For example, web developers often want to trigger automatic rebuilds of their client side code when they save changes in the editor so they can quickly see the effect of their changes. Often in these cases, filesystem changes often come in bursts—text editors might perform a few distinct operations when saving a file. (Some save modifications to a new file, then perform a couple of renames once this is complete, because this avoids data loss if a power failure or system crash happens to occur at the moment you save the file.) So you typically won't want to take action as soon as you detect file activity. It would be better to give it a moment to see if any more activity occurs, and take action only after everything has settled down. -So what we really want to report is those moments when everything goes quiet after a flurry of activity. The following code defines an Rx operator that detects and reports such things. If you're new to Rx (which seems likely if you're reading this) it probably won't be instantly obvious how this works, so I'll walk through it. +So we should not react directly to filesystem activity. We want take action at those moments when everything goes quiet after a flurry of activity. The following code defines an Rx operator that detects and reports such things. If you're new to Rx (which seems likely if you're reading this) it probably won't be instantly obvious how this works, so I'll walk through it. ```cs static class RxExt @@ -105,9 +105,9 @@ When we want to show how an Rx operator behaves, we typically draw a 'marble' di ![An Rx marble diagram illustrating two observables. The first is labelled 'source', and it shows six events, labelled numerically. These fall into three groups: events 1 and 2 occur close together, and are followed by a gap. Then events 3, 4, and 5 are close together. And then after another gap event 6 occurs, not close to any. The second observable is labelled 'source.Quiescent(TimeSpan.FromSeconds(2), Scheduler.Default). It shows three events. The first is labelled '[1, 2], and its horizontal position shows that it occurs a little bit after the '2' event on the 'source' observable. The second event on the second observable is labelled '[3,4,5]' and occurs a bit after the '5' event on the 'source' observable. The third event from on the second observable is labelled '[6]', and occurs a bit after the '6' event on the 'source' observable. The image conveys the idea that each time the source produces some events and then stops, the second observable will produce an event shortly after the source stops, which will contain a list with all of the events from the source's most recent burst of activity.](GraphicsIntro/Ch02-Quiescent-Marbles-Input-And-Output.svg) -This shows that the source produced a couple of events (the values `1` and `2`, in this example), and then stopped for a bit. A little while after it stopped, the observable returned by the `Quiescent` operator produced a single event with a list containing both of those events (`[1,2]`). Then the source started up again, producing the values `3`, `4`, and `5` in quick succession, and then going quiet for a bit. Again, once the quiet spell had gone on for long enough, the source returned by `Quiescent` produced a single event containing all of the source events from this second burst of activity (`[3,4,5]`). And then the final bit of source activity shown in this diagram consists of a single event, `6`, followed by more inactivity, and again, once the inactivity has gone on for long enough the `Quiescent` source produces a single event to report this. And since that last 'burst' of activity from the source contained only a single event, the list reported by this final output from the `Quiescent` observable is a list with a single value: `[6]`. +This shows that the source produced a couple of events (the values `1` and `2`, in this example), and then stopped for a bit. A little while after it stopped, the observable returned by the `Quiescent` operator produced a single event with a list containing both of those events (`[1,2]`). Then the source started up again, producing the values `3`, `4`, and `5` in fairly quick succession, and then going quiet for a bit. Again, once the quiet spell had gone on for long enough, the source returned by `Quiescent` produced a single event containing all of the source events from this second burst of activity (`[3,4,5]`). And then the final bit of source activity shown in this diagram consists of a single event, `6`, followed by more inactivity, and again, once the inactivity has gone on for long enough the `Quiescent` source produces a single event to report this. And since that last 'burst' of activity from the source contained only a single event, the list reported by this final output from the `Quiescent` observable is a list with a single value: `[6]`. -So how does the code shown achieve this? The first thing to notice about the `Quiescent` method is that it's just using other Rx LINQ operators (the `Return`, `Scan`, `Where`, and `Buffer` operators are explicitly visible, and the query expression will be using the `SelectMany` operator, because that's what C# query expressions do when they contain to `from` clauses in a row) in a combination that produces the final `IObservable>` output. +So how does the code shown achieve this? The first thing to notice about the `Quiescent` method is that it's just using other Rx LINQ operators (the `Return`, `Scan`, `Where`, and `Buffer` operators are explicitly visible, and the query expression will be using the `SelectMany` operator, because that's what C# query expressions do when they contain two `from` clauses in a row) in a combination that produces the final `IObservable>` output. This is Rx's _compositional_ approach, and it is how we normally use Rx. We use a mixture of operators, combined (_composed_) in a way that produces the effect we want. @@ -125,7 +125,7 @@ In simple cases like the final event `6`, in which it's the only event that happ That middle section is the messiest, but it's also most representative of the kind of activity this operator is designed to deal with. Remember, the whole point here is that we're expecting to see flurries of activity, and if those represents filesystem activity, they will tend to be slightly chaotic in nature, because storage devices don't always have entirely predictable performance characteristics (especially if it's a magnetic storage device with moving parts, or remote storage in which variable networking delays might come into play). -With this measure of recent activity in hand, we can spot the end of bursts of activity by watching for when `oustanding` drops back to zero, which is what the observable referred to by `zeroCrossing` in the code above does. (That's just using the `Where` operator to filter out everything except the events where `outstanding`'s currently value returns to zero.) +With this measure of recent activity in hand, we can spot the end of bursts of activity by watching for when `oustanding` drops back to zero, which is what the observable referred to by `zeroCrossing` in the code above does. (That's just using the `Where` operator to filter out everything except the events where `outstanding`'s current value returns to zero.) But how does `outstanding` itself work? The basic approach here is that every time `source` produces a value, we actually create a brand new `IObservable`, which produces exactly two values. It immediately produces the value 1, and then after the specified timespan (2 seconds in these examples) it produces the value -1. That's what's going in in this clause of the query expression: @@ -133,7 +133,7 @@ But how does `outstanding` itself work? The basic approach here is that every ti from delta in Observable.Return(1, scheduler).Concat(Observable.Return(-1, scheduler).Delay(minimumInactivityPeriod, scheduler)) ``` -I said Rx is all about composition, and that's certainly the case here. We are using the very simple `Return` operator to create an `IObservable` that immediately produces just a single value and then terminates. This code calls that twice, once to produce the value `1` and again to produce the value `-1`. It uses the `Delay` operator so that with instead of getting that `-1` value immediately, we get an observable that waits for the specified time period (2 seconds in these examples, but whatever `minimumInactivityPeriod` is in general) before producing the value. And then we use `Concat` to stitch those two together into a single `IObservable` that produces the value `1`, and then two seconds later produces the value `-1`. +I said Rx is all about composition, and that's certainly the case here. We are using the very simple `Return` operator to create an `IObservable` that immediately produces just a single value and then terminates. This code calls that twice, once to produce the value `1` and again to produce the value `-1`. It uses the `Delay` operator so that instead of getting that `-1` value immediately, we get an observable that waits for the specified time period (2 seconds in these examples, but whatever `minimumInactivityPeriod` is in general) before producing the value. And then we use `Concat` to stitch those two together into a single `IObservable` that produces the value `1`, and then two seconds later produces the value `-1`. Although this produces a brand new `IObservable` for each `source` event, the `from` clause shown above is part of a query expression of the form `from ... from .. select`, which the C# compiler turns into a call to `SelectMany`, which has the effect of flattening those all back into a single observable, which is what the `onoffs` variable refers to. This marble diagram illustrates that: @@ -145,7 +145,7 @@ This also shows the `outstanding` observable again, but we can now see where tha IObservable outstanding = onoffs.Scan(0, (total, delta) => total + delta); ``` -Rx's `Scan` operator works much like the standard LINQ [`Aggregate`](https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/aggregation-operations) operator, in that it repeatedly applies an operation (adding, in this case) to every single item in a sequence. The different is that whereas `Aggregate` produces just the final result once it reaches the end of the sequence, `Scan` shows all of its working, producing the aggregated value so far after each input. So this means that `outstanding` will produce an event every time `onoffs` produces one, and that event's value will be the running total—the sum total of every value from `onoffs` so far. +Rx's `Scan` operator works much like the standard LINQ [`Aggregate`](https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/aggregation-operations) operator, in that it cumulatively applies an operation (adding, in this case) to every single item in a sequence. The different is that whereas `Aggregate` produces just the final result once it reaches the end of the sequence, `Scan` shows all of its working, producing the accumulated value so far after each input. So this means that `outstanding` will produce an event every time `onoffs` produces one, and that event's value will be the running total—the sum total of every value from `onoffs` so far. So that's how `outstanding` comes to tell us how many events `source` produced within the last two seconds (or whatever `minimumActivityPeriod` has been specified). @@ -153,7 +153,7 @@ The final piece of the puzzle is how we go from the `zeroCrossings` (which produ (One last detail, just in case you saw it and were wondering, is that this method requires an `IScheduler`. This is an Rx abstraction for dealing with timing and concurrency. We need it because we need to be able to generate events after a one second delay, and that sort of time-driven activity requires a scheduler.) -We'll get into all of these operators, and the workings of schedulers in more detail in later chapters. For now, the key point is that we typically use Rx by using a combination of LINQ operators that process and combine `IObservable` sources to define the logic that we require. +We'll get into all of these operators, and the workings of schedulers, in more detail in later chapters. For now, the key point is that we typically use Rx by creating a combination of LINQ operators that process and combine `IObservable` sources to define the logic that we require. Notice that nothing in that example actually called the one and only method that `IObservable` defines (`Subscribe`). There will always be something somewhere that ultimately consumes the events, but most of the work of using Rx tends to entail declaratively defining the `IObservable`s we need. @@ -165,7 +165,7 @@ Now that you've seen an example of what Rx programming looks like, we can addres The basic problem with .NET events is that they get special handling from the .NET type system. Ironically, this makes them less flexible than if there had been no built-in support for the idea of events. Without .NET events, we would have needed some sort of object-based representation of events, at which point you can do all the same things with events that you can do with any other objects: you could store them in fields, pass them as arguments to methods, define methods on them and so on. -To be fair to .NET version 1, it wasn't really possible to define a good object-based representation of events without generics, and .NET didn't get those until version 2 (three and a half years after .NET 1.0 shipped). Different event sources need to be able to report different data, and .NET events could provided a way to parameterize events by type. But once generics came along, it became possible to define types such as `IObservable`, and the main advantage that events offered went away. (The other benefit was some language support for implementing and subscribing to events, but in principle that's something that could have been done for Rx if Microsoft had chosen to. It's not a feature that required events to be fundamentally different from other features of the type system.) +To be fair to .NET version 1, it wasn't really possible to define a good object-based representation of events without generics, and .NET didn't get those until version 2 (three and a half years after .NET 1.0 shipped). Different event sources need to be able to report different data, and .NET events provided a way to parameterize events by type. But once generics came along, it became possible to define types such as `IObservable`, and the main advantage that events offered went away. (The other benefit was some language support for implementing and subscribing to events, but in principle that's something that could have been done for Rx if Microsoft had chosen to. It's not a feature that required events to be fundamentally different from other features of the type system.) Consider the example we've just worked through. It was possible to define our own custom LINQ operator, `Quiescent`, because `IObservable` is just an interface like any other, meaning that we're free to write extension methods for it. You can't write an extension method for an event. @@ -194,7 +194,7 @@ Now that we've seen why `IObservable` needs to exist, we need to look at its ## IObserver -Earlier, I showed the definition of `IObservable`. As you saw, it has just one method, `Subscribe`. And this method takes just one argument, of type [`IObserver`](https://learn.microsoft.com/en-us/dotnet/api/system.iobserver-1). So if you want to observe the events that an `IObservable` has to offer, you must supply it with an `IObserver`. In the examples so far, we've just supplied a simple callback, and Rx has wrapper that in an implementation of `IObserver` for us, but to use Rx effectively you need to understand `IObserver`. It is not a complex interface: +Earlier, I showed the definition of `IObservable`. As you saw, it has just one method, `Subscribe`. And this method takes just one argument, of type [`IObserver`](https://learn.microsoft.com/en-us/dotnet/api/system.iobserver-1). So if you want to observe the events that an `IObservable` has to offer, you must supply it with an `IObserver`. In the examples so far, we've just supplied a simple callback, and Rx has wrapped that in an implementation of `IObserver` for us, but to use Rx effectively you need to understand `IObserver`. It is not a complex interface: ```cs public interface IObserver @@ -229,7 +229,7 @@ public class MyConsoleObserver : IObserver } ``` -In the preceding chapter, I used a `Subscribe` extension method that accepted a delegate which it invoked each time the source produced an item. Rx's `ObservableExtensions` class defines that, and various other extension methods for `IObservable`. It includes overloads of `Subscribe` that enable me to write exactly equivalent code without needing to provide my own implementation of `IObserver`: +In the preceding chapter, I used a `Subscribe` extension method that accepted a delegate which it invoked each time the source produced an item. This method is defined by Rx's `ObservableExtensions` class, which also defines various other extension methods for `IObservable`. It includes overloads of `Subscribe` that enable me to write code that has the same effect as the preceding example, without needing to provide my own implementation of `IObserver`: ```csharp source.Subscribe( @@ -239,16 +239,15 @@ source.Subscribe( ); ``` -The overloads of `Subscribe` where we don't pass all three methods (e.g., my earlier example just supplied a single callback corresponding to `OnNext`) are equivalent to writing an `IObserver` implementation where one or more of the methods simply has an empty body. Whether we find it more convenient to write our own type that implements `IObserver`, or just supply callbacks for some or all of its `OnNext`, `OnError` and `OnCompleted` method, and `IObservable` source reports each event with a call to `OnNext`, and tells us that the events have come to an end either by calling `OnError` or `OnCompleted`. - +The overloads of `Subscribe` where we don't pass all three methods (e.g., my earlier example just supplied a single callback corresponding to `OnNext`) are equivalent to writing an `IObserver` implementation where one or more of the methods simply has an empty body. Whether we find it more convenient to write our own type that implements `IObserver`, or just supply callbacks for some or all of its `OnNext`, `OnError` and `OnCompleted` method, the basic behaviour is the same: an `IObservable` source reports each event with a call to `OnNext`, and tells us that the events have come to an end either by calling `OnError` or `OnCompleted`. If you're wondering whether the relationship between `IObservable` and `IObserver` is similar to the relationship between [`IEnumerable`](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.ienumerable-1) and [`IEnumerator`](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.ienumerator-1), then you're onto something. Both `IEnumerator` and `IObservable` represent _potential_ sequences. With both of these interfaces, they will only supply data if we ask them for it. To get values out of an `IEnumerable`, an `IEnumerator` needs to come into existence, and similarly, to get values out of an `IObservable` requires an `IObserver`. The difference reflects the fundamental _pull vs push_ difference between `IEnumerable` and `IObservable`. Whereas with `IEnumerable` we ask the source to create an `IEnumerator` for us which we can then use to retrieve items (which is what a C# `foreach` loop does), with `IObservable`, the source does not _implement_ `IObserver`: it expects _us_ to supply an `IObserver` and it will then push its values into that observer. -So why does `IObserver` have these three methods? It's because, when I said earlier that in an abstract sense, `IObserver` represents the same thing as `IEnumerable`, I meant it. It might be an abstract sense, but it is precise: `IObservable` and `IObserver` were designed to preserve the exact meaning of `IEnumerable` and `IEnumerator`, changing only the detailed mechanism of consumption. +So why does `IObserver` have these three methods? Remember when I said that in an abstract sense, `IObserver` represents the same thing as `IEnumerable`? I meant it. It might be an abstract sense, but it is precise: `IObservable` and `IObserver` were designed to preserve the exact meaning of `IEnumerable` and `IEnumerator`, changing only the detailed mechanism of consumption. -When you iterate over an `IEnumerable` (with, say, a `foreach` loop), then with each iteration (and more precisely, on each call to the enumerator's [`MoveNext`](https://learn.microsoft.com/en-us/dotnet/api/system.collections.ienumerator.movenext) method) there are three things that could happen: +To see what that means, think about what happens when you iterate over an `IEnumerable` (with, say, a `foreach` loop). With each iteration (and more precisely, on each call to the enumerator's [`MoveNext`](https://learn.microsoft.com/en-us/dotnet/api/system.collections.ienumerator.movenext) method) there are three things that could happen: * `MoveNext` could return `true` to indicate that a value is available in the enumerator's [`Current`](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.ienumerator-1.current) property * `MoveNext` could throw an exception @@ -263,11 +262,11 @@ These three outcomes correspond precisely to the three method defined by `IObser That describes the three things that either can happen next when consuming either an `IEnumerable` or an `IObservable`. The only difference is the means by which consumers discover this. With an `IEnumerable` source, each call to `MoveNext` will tell us which of these three applies. And with an `IObservable` source, it will tell you one of these three things with a call to the corresponding member of your `IObserver` implementation. -### The Rules of `IObserver` +## The Fundamental Rules of Rx Sequences Notice that two of the three outcomes in the list above are terminal. If you're iterating through an `IEnumerable` with a `foreach` loop, and it throws an exception, the `foreach` loop will terminate. The C# compiler understands that if `MoveNext` throws, the `IEnumerator` is now done, so it disposes it and then allows the exception to propagate. Likewise, if you get to the end of a sequence, then you're done, and the compiler understands that too: the code it generates for a `foreach` loop detects when `MoveNext` returns false and when that happens it disposes the enumerator and then moves onto the code after the loop. -These rules might seem so obvious that we might never even think about them when iterating over `IEnumerable` sequences. What might be less immediately obvious is that exactly the same rules apply for an `IObservable` sequence. +These rules might seem so obvious that we might never even think about them when iterating over `IEnumerable` sequences. What might be less immediately obvious is that exactly the same rules apply for an `IObservable` sequence. If an observable source either tells an observer that the sequence has finished, or reports an error, then in either case, that is the last thing the source is allowed to do to the observer. That means these examples would be breaking the rules: @@ -279,7 +278,7 @@ public static void WrongOnError(IObserver obs) obs.OnNext(2); // Against the rules! We already reported failure, so iteration must stop } -public static void WrongOnCompletedError(IObserver obs) +public static void WrongOnCompleted(IObserver obs) { obs.OnNext(1); obs.OnCompleted(); @@ -289,7 +288,7 @@ public static void WrongOnCompletedError(IObserver obs) public static void WrongOnErrorAndOnCompleted(IObserver obs) { obs.OnNext(1); - obs.OnError(new ArgumentException("This isn't an argument!")); + obs.OnError(new ArgumentException("A connected series of statements was not supplied")); // This next call is against the rule because we reported an error, and you're not // allowed to make any further calls after you did that. @@ -303,17 +302,16 @@ public static void WrongOnCompletedAndOnError(IObserver obs) // This next call is against the rule because already said we were done. // When you terminate a sequence you have to pick between OnCompleted or OnError - obs.OnError(new ArgumentException("This isn't an argument!")); + obs.OnError(new ArgumentException("Definite proposition not established")); } ``` These correspond in a pretty straightforward way to things we already know about `IEnumerable`: -* If an enumerator throws from `MoveNext`, it's done and you mustn't call `MoveNext` again, so you won't be getting any more items out of it -* If an enumerator returns `false` from `MoveNext`, it's done and you mustn't call `MoveNext` again, so you won't be getting any more items out of it -* If an enumerator throws from `MoveNext`, that means its done, it's done and you mustn't call `MoveNext` again, meaning it won't have any opportunity to tell that it's done by returning `false` from `MoveNext` -* If an enumerator returns `false` from `MoveNext`, it's done and you mustn't call `MoveNext` again, meaning it won't have any opportunity to also throw an exception -* If an enumerator tells you it's done by returning `false` from `MoveNext`, you can't get anything more out of it +* `WrongOnError`: if an enumerator throws from `MoveNext`, it's done and you mustn't call `MoveNext` again, so you won't be getting any more items out of it +* `WrongOnCompleted`: If an enumerator returns `false` from `MoveNext`, it's done and you mustn't call `MoveNext` again, so you won't be getting any more items out of it +* `WrongOnErrorAndOnCompleted` If an enumerator throws from `MoveNext`, that means its done, it's done and you mustn't call `MoveNext` again, meaning it won't have any opportunity to tell that it's done by returning `false` from `MoveNext` +* `WrongOnCompletedAndOnError` If an enumerator returns `false` from `MoveNext`, it's done and you mustn't call `MoveNext` again, meaning it won't have any opportunity to also throw an exception Because `IObservable` is push-based, the onus for obeying all of these rules fall on the observable source. With `IEnumerable`, which is pull-based, it's up to the code using the `IEnumerator` (e.g. a `foreach` loop) to obey these rules. But they are essentially the same rules. @@ -332,7 +330,7 @@ public static void EverythingEverywhereAllAtOnce(IEnumerable obs) This calls `obs.OnNext` 10,000 times, but it executes these calls as individual tasks to be run on the thread pool. The thread pool is designed to be able to execute work in parallel, and that's a a problem here because nothing here ensures that one call to `OnNext` completes before the next begins. We've broken the rule that says we must wait for each call to `OnNext` to return before calling either `OnNext`, `OnError`, or `OnComplete` on the same observer. (Note: this assumes that the caller won't subscribe the same observer to multiple different sources. If you do that, you can't assume that all calls to its `OnNext` will obey the rules, because the different sources won't have any way of knowing they're talking to the same observer.) -This rule in which we must wait for `OnNext` to return is tricky and subtle. It's perhaps less obvious than the others, because there's no equivalent rule for `IEnumerable`—the opportunity to break this rule only arises when the source pushes data into the application. You might look at the example above and think "well who would do that?" However, multithreading is just an easy way to understand how it might be technically possible to break the rule. The harder cases are where single-threaded re-entrancy occurs. Take this code: +This rule in which we must wait for `OnNext` to return is tricky and subtle. It's perhaps less obvious than the others, because there's no equivalent rule for `IEnumerable`—the opportunity to break this rule only arises when the source pushes data into the application. You might look at the example above and think "well who would do that?" However, multithreading is just an easy way to show that it is technically possible to break the rule. The harder cases are where single-threaded re-entrancy occurs. Take this code: ```cs public class GoUntilStopped @@ -429,15 +427,21 @@ OnCompleted OnNext returning ``` -This tells us that the call to our observer's `OnCompleted` happened before a call in progress to `OnNext` occurred. It didn't take multiple threads to make this occur. It happened because the code in `OnNext` decides whether it wants to keep receiving events, and when it wants to stop, it immediately calls the `GoUntilStopped` object's `Stop` method. There's nothing wrong with that—observers are allowed to make outbound calls to other objects inside `OnNext`, and it's actually quite common for an observer to inspect an incoming event and decide that it wants to stop. +This tells us that the call to our observer's `OnCompleted` happened before a call in progress to `OnNext` returned. It didn't take multiple threads to make this occur. It happened because the code in `OnNext` decides whether it wants to keep receiving events, and when it wants to stop, it immediately calls the `GoUntilStopped` object's `Stop` method. There's nothing wrong with that—observers are allowed to make outbound calls to other objects inside `OnNext`, and it's actually quite common for an observer to inspect an incoming event and decide that it wants to stop. The problem is in the `GoUntilStopped.Stop` method. This calls `OnCompleted` but it makes no attempt to determine whether a call to `OnNext` is in progress. -This can be a surprisingly tricky problem to solve. Suppose `GoUntilStopped` _did_ detect that. What then? In the multithreaded case, we could have solved this by using `lock` or some other synchronization primitive to ensure that calls into the observer happened one at at time, but that won't work here: the call to `Stop` has happened on _the same thread_ that called `OnNext`. We need to wait for `OnNext` to return, but it can't return until we return from `Stop`. +This can be a surprisingly tricky problem to solve. Suppose `GoUntilStopped` _did_ detect that there was a call in progress to `OnNext`. What then? In the multithreaded case, we could have solved this by using `lock` or some other synchronization primitive to ensure that calls into the observer happened one at at time, but that won't work here: the call to `Stop` has happened on _the same thread_ that called `OnNext`. The call stack will look something like this at the moment where `Stop` has been called and it wants to call `OnCompleted`: + +* `GoUntilStopped.Go` + * `MyObserver.OnNext` + * `GoUntilStopped.Stop` + + Our `GoUntilStopped.Stop` method needs to wait for `OnNext` to return before calling `OnCompleted`. But notice that the `OnNext` method can't return until our `Stop` method returns. We've managed to create a deadlock with single-threaded code! In this case it's not all that hard to fix: we could modify `Stop` so it just sets the `running` field to `false`, and then move the call to `OnComplete` into the `Go` method, after the `for` loop. But more generally this can be a hard problem to fix, and it's one of the reasons for using the `System.Reactive` library instead of just attempting to implement `IObservable` and `IObserver` directly. Rx has general purpose mechanisms for solving exactly this kind of problem. (We'll see these when we look at [Scheduling](15_SchedulingAndThreading.md).) Moreover, all of the implementations Rx provides take advantage of these mechanisms for you. If you're using Rx by composing its built-in operators in a declarative way, you never have to think about these rules, because all of Rx's operators obey the rules. -So as long as you're using Rx to build the observable sources you need, you get to depend on these rules in your callbacks that receive the events, but it's Rx's problem to keep to the rules. +So as long as you're using Rx to build the observable sources you need, you get to depend on these rules in your callbacks that receive the events, but it's mostly Rx's problem to keep to the rules. So the main effect of these rules is that it makes life simpler for code that consumes events. These rules are sometimes expressed as a _grammar_. For example, consider this regular expression: @@ -455,32 +459,54 @@ So you might argue that this is a slightly better way to describe the rules form (OnNext)*(OnError|OnComplete)? ``` -More subtly, observable sources are allowed to do nothing at all. In fact there's a built-in implementation. If you call `Observable.Never()` it will return an `IObservable`, and if you subscribe to that, it will never call any methods on your observer. This might not look immediately useful—it is logically equivalent to an `IEnumerable` in which the enumerator's `MoveNext` method never returns. That might not be usefully distinguishable from crashing. It's slightly different with Rx, because when we model this "no items emerge ever" behaviour, we don't need to block a thread forever to do it. We can just decide never to call any methods on the observer. This may seem daft, but as you've seen with the `Quiescent` example, sometimes we create observable sources not because we want the actual items that emerge from it, but because we're interested in the instants where interesting things happen. It can sometimes be useful to be able to model "nothing interesting ever happens" cases. +More subtly, observable sources are allowed to do nothing at all. In fact there's a built-in implementation to save developers from the effort of writing a source that does nothing: if you call `Observable.Never()` it will return an `IObservable`, and if you subscribe to that, it will never call any methods on your observer. This might not look immediately useful—it is logically equivalent to an `IEnumerable` in which the enumerator's `MoveNext` method never returns. That might not be usefully distinguishable from crashing. It's slightly different with Rx, because when we model this "no items emerge ever" behaviour, we don't need to block a thread forever to do it. We can just decide never to call any methods on the observer. This may seem daft, but as you've seen with the `Quiescent` example, sometimes we create observable sources not because we want the actual items that emerge from it, but because we're interested in the instants when interesting things happen. It can sometimes be useful to be able to model "nothing interesting ever happens" cases. + +We're not quite done with the Rx's rules, but the last one applies only when we choose to unsubscribe from a source before it comes to a natural end. ## Subscription Lifetime -Before we can move on to seeing how to create `IObservable` sources that represent streams of events that are meaningful to our applications, there's one more thing we need to understand about the relationship between observers and observables: the lifetime of a subscription. +There's one more aspect of the relationship between observers and observables to understand: the lifetime of a subscription. + +You already know from the rules of `IObserver` that a call to either `OnComplete` or `OnError` denotes the end of a sequence. We passed an `IObserver` to `IObservable.Subscribe`, and now the subscription is over. But what if we want to stop the subscription earlier? + +I mentioned earlier that the `Subscribe` method returns an `IDisposable`, which enables us to cancel our subscription. Perhaps we only subscribed to a source because our application opened some window showing the status of some process, and we wanted to update the window to reflect that's process's progress. If the user closes that window, we no longer have any use for the notifications. And although we could just ignore all further notifications, that could be a problem if the thing we're monitoring never reaches a natural end—our observer would continue to receive notifications for the lifetime of the application. This is a waste of CPU power (with corresponding implications for battery life and environmental impact) and it can also prevent the garbage collector from reclaiming memory that should have become free. + +So we are free to indicate that we no longer wish to receive notifications by calling `Dispose` on the object returned by `Subscribe`. There are, however, a few non-obvious details. + +### Disposal of Subscriptions is Optional + +You are not required to call `Dispose` on the object returned by `Subscribe`. Obviously if you want to remain subscribed to events for the lifetime of your process, this makes sense: you never stop using the object, so of course you don't dispose it. But what might be less obvious is that if you subscribe to an `IObservable` that does come to an end, it automatically tidies up after itself. -You already know from the rules of `IObserver` that a call to either `OnComplete` or `OnError` denotes the end of a sequence. We passed an `IObserver` to `IObservable.Subscribe`, and now the subscription is over. But what if we want to stop the subscription earlier. +`IObservable` implementations are not allowed to assume that you will definitely call `Dispose`, so they are required to perform any necessary cleanup if they stop by calling the observer's `OnCompleted` or `OnError`. This is unusual—in most cases where a .NET API returns a brand new object created on your behalf that implements `IDisposable`, it's an error not to dispose it. But `IDisposable` objects representing Rx subscriptions are an exception to this rule. You only need to dispose them if you want them to stop earlier than they otherwise would. -You might have noticed that the `Subscribe` method returns an `IDisposable`. It does that so that we can cancel our subscription. Perhaps we only subscribed to a source because our application opened some window showing the status of some process, and we wanted to update the window to reflect that's process's progress. If the user closes that window, we no longer have any use for the notifications. And although we could just ignore all further notifications, that could be a problem if the thing we're monitoring never reaches a natural end—our observer would continue to receive notifications for the lifetime of the application. This is a waste of CPU power (with corresponding implications for battery life and environmental impact) and it can also prevent the garbage collector from reclaiming memory that should have become free. +### Cancelling Subscriptions may be Slow or Even Ineffectual -So we are free to indicate that we no longer wish to receive notifications by calling `Dispose` on the object returned by `Subscribe`. There are a few non-obvious details, however. +`Dispose` won't necessarily take effect instantly. Obviously it will take some non-zero amount of time in between your code calling into `Dispose`, and the `Dispose` implementation reaching the point where it actually does something. Less obviously, some observable sources may need to do non-trivial work to shut things down. -First, you aren't required to call `Dispose`. Obviously if you want to remain subscribed to events for the lifetime of your process, this makes sense, but what might be less obvious is that if you subscribe to an `IObservable` that does come to an end, it automatically tidies up after itself: `IObservable` implementations are not allowed to assume that you will definitely call `Dispose`, so they are required to perform whatever cleanup they need to do if they stop by calling the observer's `OnCompleted` or `OnError`. This is unusual—in most cases where a .NET API returns a brand new object created on your behalf that implements `IDisposable`, it's an error not to dispose it. But `IDisposable` objects representing Rx subscriptions are an exception to this rule. You only need to dispose them if you want them to stop earlier than they otherwise would. +A source might create a thread to be able to monitor for and report whatever events it represents. (That would happen with the filesystem source shown above when running on Linux on .NET 7, because the `FileSystemWatcher` class itself creates its own thread on Linux.) It might take a while for the thread to detect that it is supposed to shut down. -Second, `Dispose` won't necessarily take effect instantly. Obviously it will take some non-zero amount of time in between your code reaching the point where it calls `Dispose`, and the `Dispose` implementation reaching the point where it actually does something. Less obviously, some observable sources may need to do non-trivial work to shut things down. A source might create a thread to be able to monitor for and report whatever events it represents. (That would happen with the filesystem source shown above when running on Linux on .NET 7, because the `FileSystemWatcher` class itself creates its own thread on Linux.) It might take a while for the thread to detect that it is supposed to shut down. +It is fairly common practice for an `IObservable` to represent some underlying work. For example, Rx can take any factory method that returns a `Task` and wrap it as an `IObservable`. It will invoke the factory once for each call to `Subscribe`, so if there are multiple subscribers to a single `IObservable` of this kind, each one effectively gets its own `Task`. This wrapper is able to supply the factory with a `CancellationToken`, and if an observer unsubscribes by calling `Dispose` before the task naturally runs to completion, it will put that `CancellationToken` into a cancelled state. This might have the effect of bringing the task to a halt, but that will work only if the task happens to be monitoring the `CancellationToken`. Even if it is, it might take some time to bring things to a complete halt. Crucially, the `Dispose` call doesn't wait for that to happen—it will attempt to initiate cancellation but it may return before cancellation is complete. -Thirdly, sources have considerable latitude about when they stop producing events. The only guarantee is that once the call to `Dispose` has returned, the source will make no further calls to the relevant observer. But otherwise, observable sources have latitude here. Any of the following would be legal: +### The Rules of Rx Sequences when Unsubscribing + +The fundamental rules of Rx sequences described earlier only considered sources that decided when (or whether) to come to a halt. What if a subscriber unsubscribes early? There is only one rule: + +Once the call to `Dispose` has returned, the source will make no further calls to the relevant observer. If you call `Dispose` on the object returned by `Subscribe`, then once that call returns you can be certain that the observer you passed in will receive no further calls to any of its three methods (`OnNext`, `OnError`, or `OnComplete`). + +That might seem clear enough, but it leaves a grey area: what happens when you've called `Dispose` but it hasn't returned yet? The rules permit sources to continue to emit events in this case. In fact they couldn't very well require otherwise: it will invariably take some non-zero length of time for the `Dispose` implementation to make enough progress to have any effect, so in a multi-threaded world it it's always going to be possible that an event gets delivered in between the call to `Dispose` starting, and the call having any effect. The only situation in which you could depend on no further events emerging would be if your call to `Dispose` happened inside the `OnNext` handler—in this case the source will already have noted a call to `OnNext` is in progress so further calls were already blocked before the call to `Dispose` started. + +But assuming that your observer wasn't already in the middle of an `OnNext` call, any of the following would be legal: * stopping calls to `IObserver` almost immediately after `Dispose` begins, even when it takes a relatively long time to bring any relevant underlying processes to a halt, in which case your observer will never receive an `OnCompleted` or `OnError` * producing notifications that reflect the process of shutting down (including calling `OnError` if an error occurs while trying to bring things to a neat halt, or `OnCompleted` if it halted without problems) * producing a few more notifications for some time after the call to `Dispose` begins, but cutting them off at some arbitrary point, potentially losing track even of important things like errors that occurred while trying to bring things to a halt -As it happens, Rx has a preference for the first option. If you're using an `IObservable` implemented by Rx (e.g., one returned by a LINQ operator) it is highly likely to have this characteristic. This is partly to avoid trick situations in which observers try to do things to their sources inside their notification callbacks—re-entrancy tends to be awkward to deal with, and Rx avoids ever having to deal with this particular form of re-entrancy by ensuring that it has already stopped delivering notifications to the observer before it begins the work of shutting down a subscription. +As it happens, Rx has a preference for the first option. If you're using an `IObservable` implemented by the `System.Reactive` library (e.g., one returned by a LINQ operator) it is highly likely to have this characteristic. This is partly to avoid tricky situations in which observers try to do things to their sources inside their notification callbacks—re-entrancy tends to be awkward to deal with, and Rx avoids ever having to deal with this particular form of re-entrancy by ensuring that it has already stopped delivering notifications to the observer before it begins the work of shutting down a subscription. This sometimes catches people out. If you need to be able to cancel some process that you are observing but you need to be able to observe everything it does up until the point that it stops, then you can't use unsubscription as the shutdown mechanism. As soon as you've called `Dispose`, the `IObservable` that returned that `IDisposable` is no longer under any obligation to tell you anything. This can be frustrating, because the `IDisposable` returned by `Subscribe` can sometimes seem like such a natural and easy way to shut something down. But basic truth is this: once you've initiated unsubscription, you can't rely on getting any further notifications associated with that subscription. You _might_ receive some—the source is allowed to do that. But you can't rely on it—the source is also allowed to silence itself immediately, and that's what most Rx-implemented sources will do. +In short, if you unsubscribe, then a source is not obliged to tell you when things stop, and in most cases it definitely won't tell you. + ### Subscription Lifetime and Composition We typically combine multiple LINQ operators to express our processing requirements in Rx. What does this mean for subscription lifetime. @@ -498,7 +524,7 @@ IDisposable subscription = filtered.Subscribe( We're calling `Subscribe` on the observable returned by `Where`. When we do that, it will in turn call `Subscribe` on the the `IObservable` returned by `GetSource` (stored in the `source` variable). So there is in effect a chain of subscriptions here. (We only have access to the `IDisposable` returned by `filtered.Subscribe` but the object that returns will be storing the `IDisposable` that it received when it called `source.Subscribe`.) -If the source comes to an end all by itself (by calling either `OnCompleted` or `OnError`), this cascades through the chain. So `source` will call `OnCompleted` on the `IObserver` that was supplied by the `Where` operator. And that in turn will call `OnCompleted` on the `IObserver` that the was supplied in the call to `filtered.Subscribe`, and that will have references to the three methods we passed, so it will call our completion handler. So you could look at this by saying that `source` completes, it tells `filtered` that it has completed, which invokes our completion handler. (In reality this is a very slight oversimplification, because `source` doesn't tell `filtered` anything; it's actually talking to the `IObserver` that `filtered` supplied. This distinction matters if you have multiple subscriptions active simultaneously for the same chain of observables. But in this case, the simpler way of describing it is good enough even if it's not absolutely precise.) +If the source comes to an end all by itself (by calling either `OnCompleted` or `OnError`), this cascades through the chain. So `source` will call `OnCompleted` on the `IObserver` that was supplied by the `Where` operator. And that in turn will call `OnCompleted` on the `IObserver` that was passed to `filtered.Subscribe`, and that will have references to the three methods we passed, so it will call our completion handler. So you could look at this by saying that `source` completes, it tells `filtered` that it has completed, which invokes our completion handler. (In reality this is a very slight oversimplification, because `source` doesn't tell `filtered` anything; it's actually talking to the `IObserver` that `filtered` supplied. This distinction matters if you have multiple subscriptions active simultaneously for the same chain of observables. But in this case, the simpler way of describing it is good enough even if it's not absolutely precise.) In short, completion bubbles up from the source, through all the operators, and arrives at our handler. @@ -508,24 +534,3 @@ Either way, everything from the source to the observer, including any operators Now that we understand the relationship between an `IObservable` source and the `IObserver` interface that received event notifications, we can look at how we might create an `IObservable` instance to represent events of interest in our application. - - - -# Spare parts - -## Comparison with events - -This was originally the opening text. I don't think it belongs there, but we probably do want to talk about it in the context of why we need `IObservable` at all. - -
- -Essentially Rx is built upon the foundations of the [Observer](http://en.wikipedia.org/wiki/Observer_pattern) pattern. .NET already exposes some other ways to implement the Observer pattern such as multicast delegates or events (which are usually multicast delegates). Multicast delegates are not ideal however as they exhibit the following less desirable features; - -- In C#, events have a curious interface. Some find the `+=` and ` -=` operators an unnatural way to register a callback -- Events are difficult to compose -- Events don't offer the ability to be easily queried over time -- Events are a common cause of accidental memory leaks -- Events do not have a standard pattern for signaling completion -- Events provide almost no help for concurrency or multithreaded applications. e.g. To raise an event on a separate thread requires you to do all of the plumbing - -Rx looks to solve these problems. Here I will introduce you to the building blocks and some basic types that make up Rx. diff --git a/content/03_LifetimeManagement.md b/content/03_LifetimeManagement.md deleted file mode 100644 index 66d7576..0000000 --- a/content/03_LifetimeManagement.md +++ /dev/null @@ -1,314 +0,0 @@ ---- -title: Lifetime management ---- - -TODO: I think most of this is critical to use of `IObservable` so I don't think it really makes sense for this to be in its own chapter. I've covered it in Ch02. However, I need to go through this and work out if there's anything in here that I've not covered, and if so, work out what do to with it. - -# Lifetime management - -The very nature of Rx code is that you as a consumer do not know when a sequence will provide values or terminate. This uncertainty does not prevent your code from providing a level of certainty. You can control when you will start accepting values and when you choose to stop accepting values. You still need to be the master of your domain. Understanding the basics of managing Rx resources allow your applications to be as efficient, bug free and predictable as possible. - -Rx provides fine grained control to the lifetime of subscriptions to queries. While using familiar interfaces, you can deterministically release resources associated to queries. This allows you to make the decisions on how to most effectively manage your resources, ideally keeping the scope as tight as possible. - -In the previous chapter we introduced you to the key types and got off the ground with some examples. For the sake of keeping the initial samples simple we ignored a very important part of the `IObservable` interface. The `Subscribe` method takes an `IObserver` parameter, but we did not need to provide that as we used the extension method that took an `Action` instead. The important part we overlooked is that both `Subscribe` methods have a return value. The return type is `IDisposable`. In this chapter we will further explore how this return value can be used to management lifetime of our subscriptions. - -## Subscribing - -Just before we move on, it is worth briefly looking at all of the overloads of the `Subscribe` extension method. The overload we used in the previous chapter was the simple [Overload to Subscribe](http://msdn.microsoft.com/en-us/library/ff626574(v=VS.92).aspx "Subscribe Extension method overloads on MSDN") which allowed us to pass just an `Action` to be performed when `OnNext` was invoked. Each of these further overloads allows you to avoid having to create and then pass in an instance of `IObserver`. - -```csharp -// Just subscribes to the Observable for its side effects. -// All OnNext and OnCompleted notifications are ignored. -// OnError notifications are re-thrown as Exceptions. -IDisposable Subscribe(this IObservable source); - -// The onNext Action provided is invoked for each value. -// OnError notifications are re-thrown as Exceptions. -IDisposable Subscribe(this IObservable source, Action onNext); - -// The onNext Action is invoked for each value. -// The onError Action is invoked for errors -IDisposable Subscribe(this IObservable source, Action onNext, Action onError); - -// The onNext Action is invoked for each value. -// The onCompleted Action is invoked when the source completes. -// OnError notifications are re-thrown as Exceptions. -IDisposable Subscribe(this IObservable source, Action onNext, Action onCompleted); - -// The complete implementation -IDisposable Subscribe(this IObservable source, Action onNext, Action onError, Action onCompleted); -``` - -Each of these overloads allows you to pass various combinations of delegates that you want executed for each of the notifications an `IObservable` instance could produce. A key point to note is that if you use an overload that does not specify a delegate for the `OnError` notification, any `OnError` notifications will be re-thrown as an exception. Considering that the error could be raised at any time, this can make debugging quite difficult. It is normally best to use an overload that specifies a delegate to cater for `OnError` notifications. - -In this example we attempt to catch error using standard .NET Structured Exception Handling: - -```csharp -var values = new Subject(); -try -{ - values.Subscribe(value => Console.WriteLine("1st subscription received {0}", value)); -} -catch (Exception ex) -{ - Console.WriteLine("Won't catch anything here!"); -} - -values.OnNext(0); - -//Exception will be thrown here causing the app to fail. -values.OnError(new Exception("Dummy exception")); -``` - -The correct way to way to handle exceptions is to provide a delegate for `OnError` notifications as in this example. - -```csharp -var values = new Subject(); - -values.Subscribe( - value => Console.WriteLine("1st subscription received {0}", value), - ex => Console.WriteLine("Caught an exception : {0}", ex)); - -values.OnNext(0); -values.OnError(new Exception("Dummy exception")); -``` - -We will look at other interesting ways to deal with errors on a sequence in later chapters in the book. - -## Unsubscribing - -We have yet to look at how we could unsubscribe from a subscription. If you were to look for an _Unsubscribe_ method in the Rx public API you would not find any. Instead of supplying an Unsubscribe method, Rx will return an `IDisposable` whenever a subscription is made. This disposable can be thought of as the subscription itself, or perhaps a token representing the subscription. Disposing it will dispose the subscription and effectively `unsubscribe`. Note that calling `Dispose` on the result of a Subscribe call will not cause any side effects for other subscribers; it just removes the subscription from the observable's internal list of subscriptions. This then allows us to call `Subscribe` many times on a single `IObservable`, allowing subscriptions to come and go without affecting each other. In this example we initially have two subscriptions, we then dispose of one subscription early which still allows the other to continue to receive publications from the underlying sequence: - -```csharp -var values = new Subject(); -var firstSubscription = values.Subscribe(value => Console.WriteLine("1st subscription received {0}", value)); -var secondSubscription = values.Subscribe(value => Console.WriteLine("2nd subscription received {0}", value)); -values.OnNext(0); -values.OnNext(1); -values.OnNext(2); -values.OnNext(3); -firstSubscription.Dispose(); -Console.WriteLine("Disposed of 1st subscription"); -values.OnNext(4); -values.OnNext(5); -``` - -Output: - -``` -1st subscription received 0 -2nd subscription received 0 -1st subscription received 1 -2nd subscription received 1 -1st subscription received 2 -2nd subscription received 2 -1st subscription received 3 -2nd subscription received 3 -Disposed of 1st subscription -2nd subscription received 4 -2nd subscription received 5 -``` - -The team building Rx could have created a new interface like _ISubscription_ or _IUnsubscribe_ to facilitate unsubscribing. They could have added an _Unsubscribe_ method to the existing `IObservable` interface. By using the `IDisposable` type instead we get the following benefits for free: - -- The type already exists -- People understand the type -- `IDisposable` has standard usages and patterns -- Language support via the `using` keyword -- Static analysis tools like FxCop can help you with its usage -- The `IObservable` interface remains very simple. - -As per the `IDisposable` guidelines, you can call `Dispose` as many times as you like. The first call will unsubscribe and any further calls will do nothing as the subscription will have already been disposed. - -## OnError and OnComplete - -Both the `OnError` and `OnCompleted` signify the completion of a sequence. If your sequence publishes an `OnError` or `OnCompleted` it will be the last publication and no further calls to `OnNext` can be performed. In this example we try to publish an `OnNext` call after an `OnCompleted` and the `OnNext` is ignored: - -```csharp -var subject = new Subject(); -subject.Subscribe( - Console.WriteLine, - () => Console.WriteLine("Completed")); -subject.OnCompleted(); -subject.OnNext(2); -``` - -Of course, you could implement your own `IObservable` that allows publishing after an `OnCompleted` or an `OnError`, however it would not follow the precedence of the current Subject types and would be a non-standard implementation. I think it would be safe to say that the inconsistent behavior would cause unpredictable behavior in the applications that consumed your code. - -An interesting thing to consider is that when a sequence completes or errors, you should still dispose of your subscription. - -## IDisposable - -The `IDisposable` interface is a handy type to have around and it is also integral to Rx. I like to think of types that implement `IDisposable` as having explicit lifetime management. I should be able to say "I am done with that" by calling the `Dispose()` method. - -By applying this kind of thinking, and then leveraging the C# `using` statement, you can create handy ways to create scope. As a reminder, the `using` statement is effectively a `try`/`finally` block that will always call `Dispose` on your instance when leaving the scope. - -If we consider that we can use the `IDisposable` interface to effectively create a scope, you can create some fun little classes to leverage this. For example here is a simple class to log timing events: - -```csharp -public class TimeIt : IDisposable -{ - private readonly string _name; - private readonly Stopwatch _watch; - - public TimeIt(string name) - { - _name = name; - _watch = Stopwatch.StartNew(); - } - - public void Dispose() - { - _watch.Stop(); - Console.WriteLine("{0} took {1}", _name, _watch.Elapsed); - } -} -``` - -This handy little class allows you to create scope and measure the time certain sections of your code base take to run. -You could use it like this: - -```csharp -using (new TimeIt("Outer scope")) -{ - using (new TimeIt("Inner scope A")) - { - DoSomeWork("A"); - } - using (new TimeIt("Inner scope B")) - { - DoSomeWork("B"); - } - Cleanup(); -} -``` - -Output: - -``` -Inner scope A took 00:00:01.0000000 -Inner scope B took 00:00:01.5000000 -Outer scope took 00:00:02.8000000 -``` - -You could also use the concept to set the color of text in a console application: - -```csharp -// Creates a scope for a console foreground color. When disposed, will return to -// the previous Console.ForegroundColor -public class ConsoleColor : IDisposable -{ - private readonly System.ConsoleColor _previousColor; - - public ConsoleColor(System.ConsoleColor color) - { - _previousColor = Console.ForegroundColor; - Console.ForegroundColor = color; - } - - public void Dispose() - { - Console.ForegroundColor = _previousColor; - } -} -``` - -I find this handy for easily switching between colors in little _spike_ console applications: - -```csharp -Console.WriteLine("Normal color"); -using (new ConsoleColor(System.ConsoleColor.Red)) -{ - Console.WriteLine("Now I am Red"); - using (new ConsoleColor(System.ConsoleColor.Green)) - { - Console.WriteLine("Now I am Green"); - } - Console.WriteLine("and back to Red"); -} -``` - -Output: - - -
Normal color
-
Now I am Red
-
Now I am Green
-
and back to Red
-
- -So we can see that you can use the `IDisposable` interface for more than just common use of deterministically releasing unmanaged resources. It is a useful tool for managing lifetime or scope of anything; from a stopwatch timer, to the current color of the console text, to the subscription to a sequence of notifications. - -The Rx library itself adopts this liberal usage of the `IDisposable` interface and introduces several of its own custom implementations: - -- Disposable -- BooleanDisposable -- CancellationDisposable -- CompositeDisposable -- ContextDisposable -- MultipleAssignmentDisposable -- RefCountDisposable -- ScheduledDisposable -- SerialDisposable -- SingleAssignmentDisposable - -For a full rundown of each of the implementations see the [Disposables](20_Disposables.html) reference in the Appendix. For now we will look at the extremely simple and useful `Disposable` static class: - -```csharp -namespace System.Reactive.Disposables -{ - public static class Disposable - { - // Gets the disposable that does nothing when disposed. - public static IDisposable Empty { get {...} } - - // Creates the disposable that invokes the specified action when disposed. - public static IDisposable Create(Action dispose) - {...} - } -} -``` - -As you can see it exposes two members: `Empty` and `Create`. The `Empty` method allows you get a stub instance of an `IDisposable` that does nothing when `Dispose()` is called. This is useful for when you need to fulfil an interface requirement that returns an `IDisposable` but you have no specific implementation that is relevant. - -The other overload is the `Create` factory method which allows you to pass an `Action` to be invoked when the instance is disposed. The `Create` method will ensure the standard Dispose semantics, so calling `Dispose()` multiple times will only invoke the delegate you provide once: - -```csharp -var disposable = Disposable.Create(() => Console.WriteLine("Being disposed.")); -Console.WriteLine("Calling dispose..."); -disposable.Dispose(); -Console.WriteLine("Calling again..."); -disposable.Dispose(); -``` - -Output: - -``` -Calling dispose... -Being disposed. -Calling again... -``` - -Note that "Being disposed." is only printed once. In a later chapter we cover another useful method for binding the lifetime of a resource to that of a subscription in the [Observable.Using](11_AdvancedErrorHandling.html#Using) method. - - - -## Resource management vs. memory management - -It seems many .NET developers only have a vague understanding of the .NET runtime's Garbage Collector and specifically how it interacts with Finalizers and `IDisposable`. As the author of the [Framework Design Guidelines](http://msdn.microsoft.com/en-us/library/ms229042.aspx) points out, this may be due to the confusion between 'resource management' and 'memory management': - -> Many people who hear about the Dispose pattern for the first time complain that the GC isn't doing its job. They think it should collect resources, and that this is just like having to manage resources as you did in the unmanaged world. The truth is that the GC was never meant to manage resources. It was designed to manage memory and it is excellent in doing just that. -
Krzysztof Cwalina from Joe Duffy's blog - -This is both a testament to Microsoft for making .NET so easy to work with and also a problem as it is a key part of the runtime to misunderstand. Considering this, I thought it was prudent to note that _subscriptions will not be automatically disposed of_. You can safely assume that the instance of `IDisposable` that is returned to you does not have a finalizer and will not be collected when it goes out of scope. If you call a `Subscribe` method and ignore the return value, you have lost your only handle to unsubscribe. The subscription will still exist, and you have effectively lost access to this resource, which could result in leaking memory and running unwanted processes. - -The exception to this cautionary note is when using the `Subscribe` extension methods. These methods will internally construct behavior that will _automatically detach_ subscriptions when the sequence completes or errors. Even with the automatic detach behavior; you still need to consider sequences that never terminate (by `OnCompleted` or `OnError`). You will need the instance of `IDisposable` to terminate the subscription to these infinite sequences explicitly. - -> You will find many of the examples in this book will not allocate the `IDisposable` return value. This is only for brevity and clarity of the sample. Usage guidelines and best practice information can be found in the appendix. - -By leveraging the common `IDisposable` interface, Rx offers the ability to have deterministic control over the lifetime of your subscriptions. Subscriptions are independent, so the disposable of one will not affect another. While some `Subscribe` extension methods utilize an automatically detaching observer, it is still considered best practice to explicitly manage your subscriptions, as you would with any other resource implementing `IDisposable`. As we will see in later chapters, a subscription may actually incur the cost of other resources such as event handles, caches and threads. It is also best practice to always provide an `OnError` handler to prevent an exception being thrown in an otherwise difficult to handle manner. - -With the knowledge of subscription lifetime management, you are able to keep a tight leash on subscriptions and their underlying resources. With judicious application of standard disposal patterns to your Rx code, you can keep your applications predictable, easier to maintain, easier to extend and hopefully bug free. \ No newline at end of file diff --git a/content/11_AdvancedErrorHandling.md b/content/11_AdvancedErrorHandling.md index fadce95..d7a9336 100644 --- a/content/11_AdvancedErrorHandling.md +++ b/content/11_AdvancedErrorHandling.md @@ -2,6 +2,44 @@ title: Advanced error handling --- +TODO: this was originally in the now-defunct Lifetime Management chapter. Do we need to re-integrate it somewhere else? + +In this example we attempt to catch error using standard .NET Structured Exception Handling: + +```csharp +var values = new Subject(); +try +{ + values.Subscribe(value => Console.WriteLine("1st subscription received {0}", value)); +} +catch (Exception ex) +{ + Console.WriteLine("Won't catch anything here!"); +} + +values.OnNext(0); + +//Exception will be thrown here causing the app to fail. +values.OnError(new Exception("Dummy exception")); +``` + +The correct way to way to handle exceptions is to provide a delegate for `OnError` notifications as in this example. + +```csharp +var values = new Subject(); + +values.Subscribe( + value => Console.WriteLine("1st subscription received {0}", value), + ex => Console.WriteLine("Caught an exception : {0}", ex)); + +values.OnNext(0); +values.OnError(new Exception("Dummy exception")); +``` + + +TODO end + + # Advanced error handling Exceptions happen. Exceptions themselves are not bad or good, however the way we raise or catch them can. Some exceptions are predictable and are due to sloppy code, for example a `DivideByZeroException`. Other exceptions cannot be prevented with defensive coding, for example an I/O exception like `FileNotFoundException` or `TimeoutException`. In these cases, we need to cater for the exception gracefully. Providing some sort of error message to the user, logging the error or perhaps retrying are all potential ways to handle these exceptions. diff --git a/content/B_Disposables.md b/content/B_Disposables.md new file mode 100644 index 0000000..edea40f --- /dev/null +++ b/content/B_Disposables.md @@ -0,0 +1,55 @@ + +TODO: these were in the now-defunct lifetime management chapter + + +The Rx library itself adopts this liberal usage of the `IDisposable` interface and introduces several of its own custom implementations: + +- Disposable +- BooleanDisposable +- CancellationDisposable +- CompositeDisposable +- ContextDisposable +- MultipleAssignmentDisposable +- RefCountDisposable +- ScheduledDisposable +- SerialDisposable +- SingleAssignmentDisposable + +For a full rundown of each of the implementations see the [Disposables](20_Disposables.html) reference in the Appendix. For now we will look at the extremely simple and useful `Disposable` static class: + +```csharp +namespace System.Reactive.Disposables +{ + public static class Disposable + { + // Gets the disposable that does nothing when disposed. + public static IDisposable Empty { get {...} } + + // Creates the disposable that invokes the specified action when disposed. + public static IDisposable Create(Action dispose) + {...} + } +} +``` + +As you can see it exposes two members: `Empty` and `Create`. The `Empty` method allows you get a stub instance of an `IDisposable` that does nothing when `Dispose()` is called. This is useful for when you need to fulfil an interface requirement that returns an `IDisposable` but you have no specific implementation that is relevant. + +The other overload is the `Create` factory method which allows you to pass an `Action` to be invoked when the instance is disposed. The `Create` method will ensure the standard Dispose semantics, so calling `Dispose()` multiple times will only invoke the delegate you provide once: + +```csharp +var disposable = Disposable.Create(() => Console.WriteLine("Being disposed.")); +Console.WriteLine("Calling dispose..."); +disposable.Dispose(); +Console.WriteLine("Calling again..."); +disposable.Dispose(); +``` + +Output: + +``` +Calling dispose... +Being disposed. +Calling again... +``` + +Note that "Being disposed." is only printed once. In a later chapter we cover another useful method for binding the lifetime of a resource to that of a subscription in the [Observable.Using](11_AdvancedErrorHandling.html#Using) method. From ce3ef9e0ae7d2054616ef3ac696942bcf15d464c Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Wed, 7 Jun 2023 18:35:01 +0100 Subject: [PATCH 007/142] Work in progress on Creating Observable Sequences --- content/02_KeyTypes.md | 4 + content/04_CreatingObservableSequences.md | 1217 ++++++++++++--------- 2 files changed, 677 insertions(+), 544 deletions(-) diff --git a/content/02_KeyTypes.md b/content/02_KeyTypes.md index 86b3cda..f27c6ce 100644 --- a/content/02_KeyTypes.md +++ b/content/02_KeyTypes.md @@ -505,6 +505,10 @@ As it happens, Rx has a preference for the first option. If you're using an `IOb This sometimes catches people out. If you need to be able to cancel some process that you are observing but you need to be able to observe everything it does up until the point that it stops, then you can't use unsubscription as the shutdown mechanism. As soon as you've called `Dispose`, the `IObservable` that returned that `IDisposable` is no longer under any obligation to tell you anything. This can be frustrating, because the `IDisposable` returned by `Subscribe` can sometimes seem like such a natural and easy way to shut something down. But basic truth is this: once you've initiated unsubscription, you can't rely on getting any further notifications associated with that subscription. You _might_ receive some—the source is allowed to do that. But you can't rely on it—the source is also allowed to silence itself immediately, and that's what most Rx-implemented sources will do. +One subtle consequence of this is that if an observable source reports an error after a subscriber has unsubscribed, that error might be lost. A source might call `OnError` on its observer, but if that's a wrapper provided by Rx relating to a subscription that has already been disposed, it just ignores the exception. So it's best to think of early unsubscription as inherently messy, a bit like aborting a thread: it can be done but information can be lost, and there are race conditions that will disrupt normal exception handling. + +TODO: write a test for this. I want to check whether there any scenarios in which we get an unhandled exception report. + In short, if you unsubscribe, then a source is not obliged to tell you when things stop, and in most cases it definitely won't tell you. ### Subscription Lifetime and Composition diff --git a/content/04_CreatingObservableSequences.md b/content/04_CreatingObservableSequences.md index 621c48a..d1033fa 100644 --- a/content/04_CreatingObservableSequences.md +++ b/content/04_CreatingObservableSequences.md @@ -1,12 +1,16 @@ --- -title : Creating a sequence +title : Creating Sequences --- -# TODO: content that was originally in ch02 that really belongs in here +# Creating Observable Sequences -## Creating an IObservable to Represent Events +In the preceding chapter, we saw the two fundamental Rx interfaces, `IObservable` and `IObserver`. We also saw how to receive events by implementing `IObserver`, and also by using implementations supplied by the `System.Reactive` package. In this chapter we'll see how to create `IObservable` sources to represent source events of interest in your application. -Here's an overly simplified implementation of an `IObservable` that produces a sequence of numbers: +We will begin by implementing `IObservable` directly. In practice, it's relatively unusual to do that, so we'll then look at the various ways you can get `System.Reactive` to supply an implementation that does most of the work for you. + +## A Very Basic `IObservable` Implementation + +Here's an implementation of an `IObservable` that produces a sequence of numbers: ```csharp public class MySequenceOfNumbers : IObservable @@ -17,17 +21,18 @@ public class MySequenceOfNumbers : IObservable observer.OnNext(2); observer.OnNext(3); observer.OnCompleted(); - return Disposable.Empty; + return System.Reactive.Disposables.Disposable.Empty; // Handy do-nothing IDisposable } } ``` -We can test this by constructing it, and then creating an instance of the console-based `IObserver` defined earlier, and subscribing that to the `MySequenceOfNumbers` instance: +We can test this by constructing an instance of it, and then subscribing to it: ```csharp var numbers = new MySequenceOfNumbers(); -var observer = new MyConsoleObserver(); -numbers.Subscribe(observer); +numbers.Subscribe( + number => Console.WriteLine($"Received value: {number}"), + () => Console.WriteLine("Sequence terminated")); ``` This produces the following output: @@ -39,15 +44,15 @@ Received value 3 Sequence terminated ``` -This is a little too simple to be useful. For one thing, we typically use Rx when there are events of interest, but this is not really reactive at all—it just produces a fixed set of numbers immediately. Moreover, the implementation is blocking—it doesn't even return from `Subscribe` until after it has finished producing all of its values. This example illustrates the basics of how a source provides events to a subscriber, but for this example we might as well use an `IEnumerable` implementation like a `List` or an array. +Although `MySequenceOfNumbers` is technically a correct implementation of `IObservable`, it is a little too simple to be useful. For one thing, we typically use Rx when there are events of interest, but this is not really reactive at all—it just produces a fixed set of numbers immediately. Moreover, the implementation is blocking—it doesn't even return from `Subscribe` until after it has finished producing all of its values. This example illustrates the basics of how a source provides events to a subscriber, but if we just want to represent a predetermined sequence of numbers, we might as well use an `IEnumerable` implementation such as `List` or an array. -Here's something a little more realistic. This is a wrapper around .NET's `FileSystemWatcher`, presenting filesystem change notifications as an `IObservable`. +Let's look at something a little more realistic. This is a wrapper around .NET's `FileSystemWatcher`, presenting filesystem change notifications as an `IObservable`. (Note: this is not necessarily the best design for an Rx `FileSystemWatcher` wrapper. The watcher provides events for several different types of change, and one of them, `Renamed`, provides details as an `RenamedEventArgs`. That derives from `FileSystemEventArgs` so collapsing everything down to a single event stream does work, but this would be inconvenient for applications that wanted access to the details of rename events. A more serious design problem is that this is incapable of reporting more than one event from `FileSystemWatcher.Error`. Such errors might be transient and recoverable, in which case an application might want to continue operating, but since this class chooses to represent everything with a single `IObservable`, it reports errors by invoking the observer's `OnError`, at which point the rules of Rx oblige us to stop. It would be possible to work around this with Rx's `Retry` operator, which can automatically resubscribe after an error, but it might be better to offer a separate `IObservable` so that we can report errors in a non-terminating way. However, the additional complication of that won't always be warranted—the simplicity of this design means it will be a good fit for some applications. As is often the way with software design, there isn't a one-size-fits-all approach.) ```cs // Represents filesystem changes as an Rx observable sequence. // NOTE: this is an oversimplified example for illustration purposes. -// It does not handle multiple subscribers efficiently, and it does not -// use IScheduler. +// It does not handle multiple subscribers efficiently, it does not +// use IScheduler, and it stops immediately after the first error. public class RxFsEvents : IObservable { private readonly string folder; @@ -64,8 +69,8 @@ public class RxFsEvents : IObservable // FileSystemWatcher's documentation says nothing about which thread // it raises events on (unless you use its SynchronizationObject, - // which integrates well with Windows Forms, but which might prove - // more complex here) nor does it promise to wait until we've + // which integrates well with Windows Forms, but is inconvenient for + // us to use here) nor does it promise to wait until we've // finished handling one event before it delivers the next. The Mac, // Windows, and Linux implementations are all significantly different, // so it would be unwise to rely on anything not guaranteed by the @@ -119,6 +124,7 @@ public class RxFsEvents : IObservable { observer.OnError(e.GetException()); onErrorAlreadyCalled = true; + watcher.Dispose(); } } }; @@ -130,9 +136,11 @@ public class RxFsEvents : IObservable } ``` -That got more complex fast. This illustrates that `IObservable` implementations are responsible for obeying the `IObserver` rules. This is generally a good thing: it keeps the messy concerns around concurrency contained in a single place. Any `IObserver` that I subscribe to this `RxFsEvents` is free from having to manage concurrency, because it can count on the `IObserver` rules, which guarantee that it will only have to handle one thing at a time. If I hadn't been required to enforce these rules in the source, it might have made my `RxFsEvents` class simpler, but all of that complexity of dealing with overlapping events would have spread out into the code that handles the events. Concurrency is hard enough to deal with when its effects are contained. Once it starts to spread across multiple types, it can become almost impossible to reason about. Rx's `IObserver` rules prevent this from happening. +That got more complex fast. This illustrates that `IObservable` implementations are responsible for obeying the `IObserver` rules. This is generally a good thing: it keeps the messy concerns around concurrency contained in a single place. Any `IObserver` that I subscribe to this `RxFsEvents` doesn't have to worry about concurrency, because it can count on the `IObserver` rules, which guarantee that it will only have to handle one thing at a time. If I hadn't been required to enforce these rules in the source, it might have made my `RxFsEvents` class simpler, but all of that complexity of dealing with overlapping events would have spread out into the code that handles the events. Concurrency is hard enough to deal with when its effects are contained. Once it starts to spread across multiple types, it can become almost impossible to reason about. Rx's `IObserver` rules prevent this from happening. + +(Note: this is a significant feature of Rx. The rules keep things simple for observers. This becomes increasingly important as the complexity of your event sources or event process grows.) -There are a couple of issues with this code. One is that when `IObservable` implementations produce events modelling real-life asynchronous activity (such as filesystem changes) applications will often want some way to take control over which threads notifications arrive on. For example, UI frameworks tend to have thread affinity requirements—you typically need to be on a particular thread to be allowed to update the user interface. So we would normally expect to be able to provide this sort of observer with an `IScheduler`, and for it to deliver notifications through that. We'll discuss schedulers in later chapters. +There are a couple of issues with this code (aside from the API design issues already mentioned). One is that when `IObservable` implementations produce events modelling real-life asynchronous activity (such as filesystem changes) applications will often want some way to take control over which threads notifications arrive on. For example, UI frameworks tend to have thread affinity requirements—you typically need to be on a particular thread to be allowed to update the user interface. Rx provides mechanisms for redirecting notifications onto different schedulers, so we can work around it, but we would normally expect to be able to provide this sort of observer with an `IScheduler`, and for it to deliver notifications through that. We'll discuss schedulers in later chapters. The other issue is that this does not deal with multiple subscribers efficiently. You're allowed to call `IObservable.Subscribe` multiple times, and if you do that with this code, it will create a new `FileSystemWatcher` each time. That could happen more easily than you might think. Suppose we had an instance of this watcher, and wanted to handle different events in different ways. We might use the `Where` operator to define observable sources that split events up in the way we want: @@ -143,9 +151,9 @@ IObservable deletions = fs.Where(e => e.ChangeType == WatcherChangeTypes.Deleted); ``` -When you call `Subscribe` on the `IObservable` returned by the `Where` operator, it will call `Subscribe` on its input. So in this case, if we call `Subscribe` on both `configChanges` and `deletion`, that will result in _two_ calls to `Subscribe` on `rs`. So if `rs` is an instance of our `RxFsEvents` type above, each one will construct its own `FileSystemEventWatcher`, which is inefficient. +When you call `Subscribe` on the `IObservable` returned by the `Where` operator, it will call `Subscribe` on its input. So in this case, if we call `Subscribe` on both `configChanges` and `deletions`, that will result in _two_ calls to `Subscribe` on `rs`. So if `rs` is an instance of our `RxFsEvents` type above, each one will construct its own `FileSystemEventWatcher`, which is inefficient. -Rx offers a few ways to deal with this. It provides operators designed specifically to take an `IObservable` that does not tolerate multiple subscribers and wrap it in an adapter that handles multiple subscribers for you: +Rx offers a few ways to deal with this. It provides operators designed specifically to take an `IObservable` that does not tolerate multiple subscribers and wrap it in an adapter that can: ```cs IObservable fs = @@ -154,425 +162,323 @@ IObservable fs = .RefCount(); ``` -But this is leaping ahead somewhat. If you want to build a type that is inherently multi-subscriber-friendly, all you really need to do is keep track of all your subscribers, and notify them +But this is leaping ahead. If you want to build a type that is inherently multi-subscriber-friendly, all you really need to do is keep track of all your subscribers and notify each of them in a loop. Here's a modified version of the filesystem watcher: +```cs +public class RxFsEventsMultiSubscriber : IObservable +{ + private readonly object sync = new(); + private readonly List subscribers = new(); + private readonly FileSystemWatcher watcher; -This problem of implementing the interfaces should not concern us too much. You will find that when you use Rx, you do not have the need to actually implement these interfaces, Rx provides all of the implementations you need out of the box. Let's have a look at the simple ones. - -## Subject + public RxFsEventsMultiSubscriber(string folder) + { + this.watcher = new FileSystemWatcher(folder); -TODO: move this into a separate chapter? I'm not convinced all the subject types are really intro stuff. `Subject` is useful, but the rest? - -I like to think of the `IObserver` and the `IObservable` as the 'reader' and 'writer' or, 'consumer' and 'publisher' interfaces. If you were to create your own implementation of `IObservable` you may find that while you want to publicly expose the IObservable characteristics you still need to be able to publish items to the subscribers, throw errors and notify when the sequence is complete. Why that sounds just like the methods defined in `IObserver`! While it may seem odd to have one type implementing both interfaces, it does make life easy. This is what [subjects](http://msdn.microsoft.com/en-us/library/hh242969(v=VS.103).aspx "Using Rx Subjects - MSDN") can do for you. [`Subject`](http://msdn.microsoft.com/en-us/library/hh229173(v=VS.103).aspx "Subject(Of T) - MSDN") is the most basic of the subjects. Effectively you can expose your `Subject` behind a method that returns `IObservable` but internally you can use the `OnNext`, `OnError` and `OnCompleted` methods to control the sequence. + watcher.Created += SendEventToObservers; + watcher.Changed += SendEventToObservers; + watcher.Renamed += SendEventToObservers; + watcher.Deleted += SendEventToObservers; -In this very basic example, I create a subject, subscribe to that subject and then publish values to the sequence (by calling `subject.OnNext(T)`). + watcher.Error += SendErrorToObservers; + } -```csharp -static void Main(string[] args) -{ - var subject = new Subject(); - WriteSequenceToConsole(subject); + public IDisposable Subscribe(IObserver observer) + { + Subscription sub = new(this, observer); + lock (this.sync) + { + this.subscribers.Add(sub); - subject.OnNext("a"); - subject.OnNext("b"); - subject.OnNext("c"); - Console.ReadKey(); -} + if (this.subscribers.Count == 1) + { + // We had no subscribers before, but now we've got one so we need + // to start up the FileSystemWatcher. + watcher.EnableRaisingEvents = true; + } + } -// Takes an IObservable as its parameter. -// Subject implements this interface. -static void WriteSequenceToConsole(IObservable sequence) -{ - // The next two lines are equivalent. - // sequence.Subscribe(value=>Console.WriteLine(value)); - sequence.Subscribe(Console.WriteLine); -} -``` + return sub; + } -Note that the `WriteSequenceToConsole` method takes an `IObservable` as it only wants access to the subscribe method. Hang on, doesn't the `Subscribe` method need an `IObserver` as an argument? Surely `Console.WriteLine` does not match that interface. Well it doesn't, but the Rx team supply me with an Extension Method to `IObservable` that just takes an [`Action`](http://msdn.microsoft.com/en-us/library/018hxwa8.aspx "Action(Of T) Delegate - MSDN"). The action will be executed every time an item is published. There are [other overloads to the Subscribe extension method](http://msdn.microsoft.com/en-us/library/system.observableextensions(v=VS.103).aspx "ObservableExtensions class - MSDN") that allows you to pass combinations of delegates to be invoked for `OnNext`, `OnCompleted` and `OnError`. This effectively means I don't need to implement `IObserver`. Cool. + private void Unsubscribe(Subscription sub) + { + lock (this.sync) + { + this.subscribers.Remove(sub); -As you can see, `Subject` could be quite useful for getting started in Rx programming. `Subject` however, is a basic implementation. There are three siblings to `Subject` that offer subtly different implementations which can drastically change the way your program runs. + if (this.subscribers.Count == 0) + { + watcher.EnableRaisingEvents = false; + } + } + } - + void SendEventToObservers(object _, FileSystemEventArgs e) + { + lock (this.sync) + { + foreach (var subscription in this.subscribers) + { + subscription.Observer.OnNext(e); + } + } + } -## ReplaySubject + void SendErrorToObservers(object _, ErrorEventArgs e) + { + Exception x = e.GetException(); + lock (this.sync) + { + foreach (var subscription in this.subscribers) + { + subscription.Observer.OnError(x); + } -[`ReplaySubject`](http://msdn.microsoft.com/en-us/library/hh211810(v=VS.103).aspx "ReplaySubject(Of T) - MSDN") provides the feature of caching values and then replaying them for any late subscriptions. Consider this example where we have moved our first publication to occur before our subscription + this.subscribers.Clear(); + } + } -```csharp -static void Main(string[] args) -{ - var subject = new Subject(); + private class Subscription : IDisposable + { + private RxFsEventsMultiSubscriber? parent; - subject.OnNext("a"); - WriteSequenceToConsole(subject); + public Subscription( + RxFsEventsMultiSubscriber rxFsEventsMultiSubscriber, + IObserver observer) + { + this.parent = rxFsEventsMultiSubscriber; + this.Observer = observer; + } + + public IObserver Observer { get; } - subject.OnNext("b"); - subject.OnNext("c"); - Console.ReadKey(); + public void Dispose() + { + this.parent?.Unsubscribe(this); + this.parent = null; + } + } } ``` -The result of this would be that 'b' and 'c' would be written to the console, but 'a' ignored. -If we were to make the minor change to make subject a `ReplaySubject` we would see all publications again. +This creates only a single `FileSystemWatcher` instance no matter how many times `Subscribe` is called. Notice that I've had to introduce a nested class to provide the `IDisposable` that `Subscribe` returns. I didn't need that with the very first `IObservable` implementation in this chapter because it had already completed the sequence before returning, so it was able to return the `Disposable.Empty` property conveniently supplied by Rx. (This is handy in cases where you're obliged to supply an `IDisposable`, but you don't actually need to do anything when disposed.) And in my first `FileSystemWatcher` wrapper, `RxFsEvents`, I just returned the `FileSystemWatcher` itself from `Dispose`. (This works because `FileSystemWatcher.Dispose` shuts down the watcher, and each subscriber was given its own `FileSystemWatcher`.) But now that a single `FileSystemWatcher` supports multiple observers, we need to do a little more work when an observer unsubscribes. -```csharp -var subject = new ReplaySubject(); +One a `Subscription` instance that we returned from `Subscribe` gets disposed, it removes itself from the list of subscribers, ensuring that it won't receive any more notifications. It also sets the `FileSystemWatcher`'s `EnableRaisingEvents` to false if there are no more subscribers, ensuring that this source does not do unnecessary work if nothing needs notifications right now. -subject.OnNext("a"); -WriteSequenceToConsole(subject); +This is looking more realistic than the first example. This is truly a source of events that could occur at any moment (making this exactly the sort of thing Rx does well) and it now handles multiple subscribers intelligently. However, we wouldn't often write things this way. We're doing all the work ourselves here—this code doesn't even require a reference to the `System.Reactive` package because the only Rx types it refers to are `IObservable` and `IObserver`, both of which are built into the .NET runtime libraries. In practice we typically defer to helpers in `System.Reactive` because they can do a lot of work for us. -subject.OnNext("b"); -subject.OnNext("c"); +For example, suppose we only cared about `Changed` events. We could write just this: + +```cs +FileSystemWatcher watcher = new (@"c:\temp"); +IObservable changes = Observable + .FromEventPattern(watcher, nameof(watcher.Changed)) + .Select(ep => ep.EventArgs); +watcher.EnableRaisingEvents = true; ``` -This can be very handy for eliminating race conditions. Be warned though, the default constructor of the `ReplaySubject` will create an instance that caches every value published to it. In many scenarios this could create unnecessary memory pressure on the application. `ReplaySubject` allows you to specify simple cache expiry settings that can alleviate this memory issue. One option is that you can specify the size of the buffer in the cache. In this example we create the `ReplaySubject` with a buffer size of 2, and so only get the last two values published prior to our subscription: +Here we're using the `FromEventPattern` helper from the `System.Reactive` library's `Observable` class, which can be used to build an `IObservable` from any .NET event that conforms the the normal pattern (in which event handlers take two arguments: a sender of type `object`, and then some `EventArgs`-derived type containing information about the event). This is not as flexible as the earlier example—it reports only one of the events, and we have to manually start (and, if necessary stop) the `FileSystemWatcher`. But for some applications that will be good enough, and this is a lot less code to write. If we were aiming to write a fully-featured wrapper for `FileSystemWatcher` suitable for many different scenarios, it might be worth writing a specialized `IObservable` implementation as shown earlier. (We could easily extend this last example to watch all of the events—we'd just use the `FromEventPattern` once for each event, and then use `Observable.Merge` to combine the four resulting observables into one. The only real benefit we're getting from a full custom implementation is that we can automatically start and stop the `FileSystemWatcher` depending on whether there are currently any observers.) But if we just need to represent some events as an `IObservable` so that we can work with them in our application, we can just use this simpler approach. -```csharp -public void ReplaySubjectBufferExample() -{ - var bufferSize = 2; - var subject = new ReplaySubject(bufferSize); +In practice, we almost always get `System.Reactive` to implement `IObservable` for us. Even if we want to take control of certain aspects (such as automatically starting up and shutting down the `FileSystemWatcher` in these examples) we can almost always find a combination of operators that enable this. The following code uses various methods from `System.Reactive` to return an `IObservable` that has all the same functionality as the fully-featured hand-written `RxFsEventsMultiSubscriber` above, but with considerably less code. - subject.OnNext("a"); - subject.OnNext("b"); - subject.OnNext("c"); - subject.Subscribe(Console.WriteLine); - subject.OnNext("d"); +```cs +IObservable ObserveFileSystem(string folder) +{ + return + // Observable.Defer enables us to avoid doing any work + // until we have a subscriber. + Observable.Defer(() => + { + FileSystemWatcher fsw = new(folder); + fsw.EnableRaisingEvents = true; + + return Observable.Return(fsw); + }) + // Once the preceding parts emits the FileSystemWatcher + // (which will happen when someone first subscribes), we + // want to wrap all the events as IObservables, for which + // we'll use a projection. To avoid ending up with an + // IObservable>, we use + // SelectMany, which effectively flattens it by one level. + .SelectMany(fsw => + Observable.Merge(new[] + { + Observable.FromEventPattern( + h => fsw.Created += h, h => fsw.Created -= h), + Observable.FromEventPattern( + h => fsw.Changed += h, h => fsw.Changed -= h), + Observable.FromEventPattern( + h => fsw.Renamed += h, h => fsw.Renamed -= h), + Observable.FromEventPattern( + h => fsw.Deleted += h, h => fsw.Deleted -= h) + }) + // FromEventPattern supplies both the sender and the event + // args. Extract just the latter. + .Select(ep => ep.EventArgs) + // The Finally here ensures the watcher gets shut down once + // we have no subscribers. + .Finally(() => fsw.Dispose())) + // This combination of Publish and RefCount means that multiple + // subscribers will get to share a single FileSystemWatcher, + // but that it gets shut down if all subscribers unsubscribe. + .Publish() + .RefCount(); } ``` -Here the output would show that the value 'a' had been dropped from the cache, but values 'b' and 'c' were still valid. The value 'd' was published after we subscribed so it is also written to the console. +I've used a lot of methods there, most of which I've not talked about before. For that example to make any sense, I clearly need to start describing the numerous ways in which the `System.Reactive` package can implement `IObservable` for you. -``` -Output: -b -c -d -``` +## Simple factory methods -Another option for preventing the endless caching of values by the `ReplaySubject`, is to provide a window for the cache. In this example, instead of creating a `ReplaySubject` with a buffer size, we specify a window of time that the cached values are valid for. +Due to the large number of methods available for creating observable sequences, we will break them down into categories. Our first category of methods create `IObservable` sequences produce at most a single result. + +### Observable.Return + +One of the simplest factory methods is `Observable.Return(T value)`, which you've already seen in the `Quiescent` example in the preceding chapter. This method takes a value of type `T` and returns an `IObservable` which will produce this single value and then complete. In a sense, this _wraps_ a value in an `IObservable`; it's conceptually similar to writing `new T[] { value }`, in that it's a sequence containing just one element. ```csharp -public void ReplaySubjectWindowExample() -{ - var window = TimeSpan.FromMilliseconds(150); - var subject = new ReplaySubject(window); +var singleValue = Observable.Return("Value"); +``` - subject.OnNext("w"); - Thread.Sleep(TimeSpan.FromMilliseconds(100)); - subject.OnNext("x"); - Thread.Sleep(TimeSpan.FromMilliseconds(100)); - subject.OnNext("y"); - subject.Subscribe(Console.WriteLine); - subject.OnNext("z"); -} +I specified the type parameter for clarity, but this is not necessary as the compiler can inferred the type from argument provided: + +```csharp +var singleValue = Observable.Return("Value"); ``` -In the above example the window was specified as 150 milliseconds. Values are published 100 milliseconds apart. Once we have subscribed to the subject, the first value is 200ms old and as such has expired and been removed from the cache. +### Observable.Empty + +Sometimes it can be useful to have an empty sequence. .NET's `Enumerable.Empty()` does this for `IEnumerable`, and Rx has a direct equivalent in the form of `Observable.Empty()`, which returns an empty `IObservable`. We need to provide the type argument because there's no value from which the compiler can infer the type. + +```csharp +var empty = Observable.Empty(); ``` -Output: -x -y -z + +In practice, an empty sequence is one that immediately provides an `OnCompleted` notification to any subscriber. + +### Observable.Never + +The `Observable.Never()` method returns a sequence which, like `Empty`, does not produce any values, but unlike `Empty`, it never ends. In practice, that means that it never invokes any method (neither `OnNext`, `OnCompleted`, nor `OnError`) on subscribers. Whereas `Observable.Empty()` completes immediately, `Observable.Never` has infinite duration. + +```csharp +var never = Observable.Never(); ``` -## BehaviorSubject +It might not seem obvious why this could be useful. It tends to be used in places where we use observables to represent time-based information. Sometimes we don't actually care what emerges from an observable; we might care only _when_ something (anything) happens. For example, in the preceding chapter, the `Quiescent` example used the `Buffer` operator, which works over two observable sequences: the first contains the items of interest, and the second is used purely to determine how to cut the first into chunks. `Buffer` doesn't do anything with the values produced by the second observable: it pays attention only to _when_ value emerge, completing the previous chunk each time the second observable produces a value. And if we're representing temporal information it can sometimes be useful to have a way to represent the idea that some event never occurs. -[`BehaviorSubject`](http://msdn.microsoft.com/en-us/library/hh211949(v=VS.103).aspx "BehaviorSubject(Of T) - MSDN") is similar to `ReplaySubject` except it only remembers the last publication. `BehaviorSubject` also requires you to provide it a default value of `T`. This means that all subscribers will receive a value immediately (unless it is already completed). +### Observable.Throw -In this example the value 'a' is written to the console: +`Observable.Throw(Exception)` returns a sequence that immediately reports an error to any subscriber. As with `Empty` and `Never`, we don't supply a value to this method (just an exception) so we need to provide a type parameter so that it knows what `T` to use in the `IObservable` that it returns. (It will never actually a produce a `T`, but you can't have an instance of `IObservable` without picking some particular type for `T`.) ```csharp -public void BehaviorSubjectExample() -{ - //Need to provide a default value. - var subject = new BehaviorSubject("a"); - subject.Subscribe(Console.WriteLine); -} +var throws = Observable.Throw(new Exception()); +// Behaviorally equivalent to +var subject = new ReplaySubject(); +subject.OnError(new Exception()); ``` -In this example the value 'b' is written to the console, but not 'a'. +### Observable.Create + +The `Create` factory method is more powerful than the other creation methods because it can be used to create any kind of sequence. You could implement any of the preceding four methods with `Observable.Create`. +The method signature itself may seem more complex than necessary at first, but becomes quite natural once you have used it. ```csharp -public void BehaviorSubjectExample2() -{ - var subject = new BehaviorSubject("a"); - subject.OnNext("b"); - subject.Subscribe(Console.WriteLine); -} +// Creates an observable sequence from a specified Subscribe method implementation. +public static IObservable Create( + Func, IDisposable> subscribe) +{...} +public static IObservable Create( + Func, Action> subscribe) +{...} ``` -In this example the values 'b', 'c' & 'd' are all written to the console, but again not 'a' +You provide this with a delegate that will be executed anytime a subscription is made. Your delegate will be passed an `IObserver`. Logically speaking, this represents the observer passed to the `Subscribe` method, although in practice Rx puts a wrapper around that for various reasons. You can call the `OnNext`/`OnError`/`OnCompleted` methods as you need. This is one of the few scenarios where you will work directly with the `IObserver` interface. Here's a simple example that produces two items: ```csharp -public void BehaviorSubjectExample3() +private IObservable SomeLetters() { - var subject = new BehaviorSubject("a"); + return Observable.Create( + (IObserver observer) => + { + observer.OnNext("a"); + observer.OnNext("b"); + observer.OnCompleted(); - subject.OnNext("b"); - subject.Subscribe(Console.WriteLine); - subject.OnNext("c"); - subject.OnNext("d"); + return Disposable.Empty; + }); } ``` -Finally in this example, no values will be published as the sequence has completed. Nothing is written to the console. +Your delegate must return either an `IDisposable` or an `Action` to enable unsubscription. When the subscriber disposes their subscription in order to unsubscribe, Rx will invoke `Dispose()` on the `IDisposable` you returned, or in the case where you returned an `Action`, it will invoke that. -```csharp -public void BehaviorSubjectCompletedExample() -{ - var subject = new BehaviorSubject("a"); - subject.OnNext("b"); - subject.OnNext("c"); - subject.OnCompleted(); - subject.Subscribe(Console.WriteLine); -} +This example is reminiscent of the `MySequenceOfNumbers` example from the start of this chapter, in that it immediately produces a few fixed values. The main difference in this case is that Rx adds some wrappers that can handle awkward situations such as re-entrancy. Rx will sometimes automatically defer work to prevent deadlocks, so it's possible that code consuming the `IObservable` returned by this method will see a call to `Subscribe` return before the callback in the code above runs, in which case it would be possible for them to unsubscribe inside their `OnNext` handler. (In the `MySequenceOfNumbers` case that can't actually happen because that doesn't return an `IDisposable` until after it has finished producing all values. This might look like it would do the same, but the `IDisposable` we return isn't necessarily the one the subscriber sees, and in cases where deferred execution is occurring, the subscriber may well already have an `IDisposable` in hand by the time we call `OnNext`.) + +You might be wondering how the `IDisposable` or callback can ever do anything useful, given that it's the return value of the callback, so we can only return it to Rx as the last thing our callback does. Won't we always have finished our work by the time we return, meaning there's nothing to cancel? Not necessarily—we might kick off some work that continues to run after we return. This next example does that, meaning that the unsubscription action it returns is able to do something useful—it sets a cancellation token that is being observed by the loop that generates our observable's output. + +```cs +IObservable KeyPresses() => + Observable.Create(observer => + { + CancellationTokenSource cts = new(); + Task.Run(() => + { + while (!cts.IsCancellationRequested) + { + ConsoleKeyInfo ki = Console.ReadKey(); + observer.OnNext(ki.KeyChar); + } + }); + + return () => cts.Cancel(); + }); ``` -That note that there is a difference between a `ReplaySubject` with a buffer size of one (commonly called a 'replay one subject') and a `BehaviorSubject`. A `BehaviorSubject` requires an initial value. With the assumption that neither subjects have completed, then you can be sure that the `BehaviorSubject` will have a value. You cannot be certain with the `ReplaySubject` however. With this in mind, it is unusual to ever complete a `BehaviorSubject`. Another difference is that a replay-one-subject will still cache its value once it has been completed. So subscribing to a completed `BehaviorSubject` we can be sure to not receive any values, but with a `ReplaySubject` it is possible. +This illustrates how cancellation won't necessarily take effect immediately. The `Console.ReadKey` API does not offer an overload accepting a `CancellationToken`, so this observable won't be able to detect that cancellation is requested until the user next presses a key, causing `ReadKey` to return. -`BehaviorSubject`s are often associated with class [properties](http://msdn.microsoft.com/en-us/library/65zdfbdt(v=vs.71).aspx). -As they always have a value and can provide change notifications, they could be candidates for backing fields to properties. +Bearing in mind that cancellation might have been requested while we were waiting for `ReadKey` to return, you might think we should check for that after `ReadKey` returns and before calling `OnNext`. In fact it doesn't matter if we don't, because Rx ensures that you can't break the rule that says an observable source must not call into an observer after a call to `Dispose` on that observer's subscription returns. This is one reason why the `IObserver` it passes to you is a wrapper: if you continue to call methods on that `IObserver` after a request to unsubscribe, Rx just ignores the calls. This means there are two important things to be aware of: if you _do_ ignore attempts to unsubscribe and continue to do work to produce items, you are just wasting time because nothing will receive those items; if you call `OnError` it's possible that nothing is listening and that the error will be completely ignored. -## AsyncSubject +There are overloads of `Create` designed to support `async` methods. This methods exploits this to be able to the asynchronous `ReadLineAsync` method to present lines of text from a file as an observable source. -[`AsyncSubject`](http://msdn.microsoft.com/en-us/library/hh229363(v=VS.103).aspx "AsyncSubject(Of T) - MSDN") is similar to the Replay and Behavior subjects in the way that it caches values, however it will only store the last value, and only publish it when the sequence is completed. The general usage of the `AsyncSubject` is to only ever publish one value then immediately complete. This means that is becomes quite comparable to `Task`. +```cs +IObservable ReadFileLines(string path) => + Observable.Create(async (observer, cancellationToken) => + { + using (var reader = File.OpenText(path)) + { + while (cancellationToken.IsCancellationRequested) + { + string? line = await reader.ReadLineAsync(cancellationToken); + if (line is null) + { + break; + } -In this example no values will be published as the sequence never completes. -No values will be written to the console. + observer.OnNext(line); + } -```csharp -static void Main(string[] args) -{ - var subject = new AsyncSubject(); - subject.OnNext("a"); - WriteSequenceToConsole(subject); - subject.OnNext("b"); - subject.OnNext("c"); - Console.ReadKey(); -} + observer.OnCompleted(); + } + }); ``` -In this example we invoke the `OnCompleted` method so the last value 'c' is written to the console: +Reading data from a storage device typically doesn't happen instantaneously (unless it happens to be in the filesystem cache already), so this source will provide data as quickly as it can be read from storage. -```csharp -static void Main(string[] args) -{ - var subject = new AsyncSubject(); +Notice that because this is an `async` method, it will typically return to its caller before it completes. (The first `await` that actually has to wait returns, and the remainder of the method runs via a callback when the work completes.) That means that subscribers will typically be in possession of the `IDisposable` representing their subscription before this method returns, so we're using a different mechanism to handle unsubscription here. This particular overload of `Create` passes its callback not just an `IObserver` but also a `CancellationToken`, with which it will request cancellation when unsubscription occurs. - subject.OnNext("a"); - WriteSequenceToConsole(subject); - subject.OnNext("b"); - subject.OnNext("c"); - subject.OnCompleted(); - Console.ReadKey(); -} -``` +File IO can encounter errors. The file we're looking for might not exist, or we might be unable to open it due to security restrictions, or because some other application is using it. The file might be on a remote storage server, and we could lose network connectivity. For this reason, we must expect exceptions from such code. This example has done nothing to detect exceptions, and yet the `IObservable` that this `ReadFileLines` method returns will in fact report any exceptions that occur. This is because the `Create` method will catch any exception that emerges from our callback and report it with `OnError`. (If our code already called `OnComplete` on the observer, Rx won't call `OnError` because that would violate the rules. Instead it will silently drop the exception, so it's best not to attempt to do any work after you call `OnCompleted`.) -## Implicit contracts +This automatic exception delivery is another example of why the `Create` factory method is the preferred way to implement custom observable sequences. It is almost always a better option than creating custom types that implement the `IObservable` interface. This is not just because it saves you some time. It's also that Rx tackles the intricacies that you may not think of such as thread safety of notifications and disposal of subscriptions. -There are implicit contacts that need to be upheld when working with Rx as mentioned above. The key one is that once a sequence is completed, no more activity can happen on that sequence. A sequence can be completed in one of two ways, either by `OnCompleted()` or by `OnError(Exception)`. +The `Create` method entails lazy evaluation, which is a very important part of Rx. It opens doors to other powerful features such as scheduling and combination of sequences that we will see later. The delegate will only be invoked when a subscription is made. So in the `ReadFileLines` example, it won't attempt to open the file until you subscribe to the `IObservable` that is returned. If you subscribe multiple times, it will execute the callback each time. (So if the file has changed, you can retrieve the latest contents by calling `Subscribe` again.) -The four subjects described in this chapter all cater for this implicit contract by ignoring any attempts to publish values, errors or completions once the sequence has already terminated. +As an exercise, try to build the `Empty`, `Return`, `Never` & `Throw` extension methods yourself using the `Create` method. If you have Visual Studio or [LINQPad](http://www.linqpad.net/) available to you right now, code it up as quickly as you can. If you don't (perhaps you are on the train on the way to work), try to conceptualize how you would solve this problem. -Here we see an attempt to publish the value 'c' on a completed sequence. Only values 'a' and 'b' are written to the console. +You completed that last step before moving onto this paragraph, right? Because you can now compare your versions with these examples of `Empty`, `Return`, `Never` and `Throw` recreated with `Observable.Create`: ```csharp -public void SubjectInvalidUsageExample() -{ - var subject = new Subject(); - - subject.Subscribe(Console.WriteLine); - - subject.OnNext("a"); - subject.OnNext("b"); - subject.OnCompleted(); - subject.OnNext("c"); -} -``` - -## ISubject interfaces - -While each of the four subjects described in this chapter implement the `IObservable` and `IObserver` interfaces, they do so via another set of interfaces: - -```csharp -//Represents an object that is both an observable sequence as well as an observer. -public interface ISubject - : IObserver, IObservable -{ -} -``` - -As all the subjects mentioned here have the same type for both `TSource` and `TResult`, they implement this interface which is the superset of all the previous interfaces: - -```csharp -//Represents an object that is both an observable sequence as well as an observer. -public interface ISubject : ISubject, IObserver, IObservable -{ -} -``` - -These interfaces are not widely used, but prove useful as the subjects do not share a common base class. We will see the subject interfaces used later when we discover [Hot and cold observables](14_HotAndColdObservables.html). - -## Subject factory - -Finally it is worth making you aware that you can also create a subject via a factory method. Considering that a subject combines the `IObservable` and `IObserver` interfaces, it seems sensible that there should be a factory that allows you to combine them yourself. The `Subject.Create(IObserver, IObservable)` factory method provides just this. - -```csharp -//Creates a subject from the specified observer used to publish messages to the subject -// and observable used to subscribe to messages sent from the subject -public static ISubject>TSource, TResult< Create>TSource, TResult<( - IObserver>TSource< observer, - IObservable>TResult< observable) -{...} -``` - -Subjects provide a convenient way to poke around Rx, however they are not recommended for day to day use. An explanation is in the [Usage Guidelines](18_UsageGuidelines.md) in the appendix. Instead of using subjects, favor the factory methods we will look at in [Part 2](04_CreatingObservableSequences.md). - -The fundamental types `IObserver` and `IObservable` and the auxiliary subject types create a base from which to build your Rx knowledge. It is important to understand these simple types and their implicit contracts. In production code you may find that you rarely use the `IObserver` interface and subject types, but understanding them and how they fit into the Rx eco-system is still important. The `IObservable` interface is the dominant type that you will be exposed to for representing a sequence of data in motion, and therefore will comprise the core concern for most of your work with Rx and most of this book. - - - - -# TODO: end of content relocated from ch02. There follows the original text for this chapter. - - -# PART 2 - Sequence basics - -So you want to get involved and write some Rx code, but how do you get started? We have looked at the key types, but know that we should not be creating our own implementations of `IObserver` or `IObservable` and should favor factory methods over using subjects. Even if we have an observable sequence, how do we pick out the data we want from it? We need to understand the basics of creating an observable sequence, getting values into it and picking out the values we want from them. - -In Part 2 we discover the basics for constructing and querying observable sequences. We assert that LINQ is fundamental to using and understanding Rx. On deeper inspection, we find that _functional programming_ concepts are core to having a deep understanding of LINQ and therefore enabling you to master Rx. To support this understanding, we classify the query operators into three main groups. Each of these groups proves to have a root operator that the other operators can be constructed from. Not only will this deconstruction exercise provide a deeper insight to Rx, functional programming and query composition; it should arm you with the ability to create custom operators where the general Rx operators do not meet your needs. - -# Creating a sequence - -In the previous chapters we used our first Rx extension method, the `Subscribe` method and its overloads. We also have seen our first factory method in `Subject.Create()`. We will start looking at the vast array of other methods that enrich `IObservable` to make Rx what it is. It may be surprising to see that there are relatively few public instance methods in the Rx library. There are however a large number of public static methods, and more specifically, a large number of extension methods. Due to the large number of methods and their overloads, we will break them down into categories. - -> Some readers may feel that they can skip over parts of the next few chapters. I would only suggest doing so if you are very confident with LINQ and functional composition. The intention of this book is to provide a step-by-step introduction to Rx, with the goal of you, the reader, being able to apply Rx to your software. -> The appropriate application of Rx will come through a sound understanding of the fundamentals of Rx. The most common mistakes people will make with Rx are due to a misunderstanding of the principles upon which Rx was built. With this in mind, I encourage you to read on. - -It seems sensible to follow on from our examination of our key types where we simply constructed new instances of subjects. Our first category of methods will be _creational_ methods: simple ways we can create instances of `IObservable` sequences. These methods generally take a seed to produce a sequence: either a single value of a type, or just the type itself. In functional programming this can be described as _anamorphism_ or referred to as an '_unfold_'. - -## Simple factory methods - -### Observable.Return - -In our first and most basic example we introduce `Observable.Return(T value)`. This method takes a value of `T` and returns an `IObservable` with the single value and then completes. It has _unfolded_ a value of `T` into an observable sequence. - -```csharp -var singleValue = Observable.Return("Value"); - -// which could have also been simulated with a replay subject -var subject = new ReplaySubject(); -subject.OnNext("Value"); -subject.OnCompleted(); -``` - -Note that in the example above that we could use the factory method or get the same effect by using the replay subject. The obvious difference is that the factory method is only one line and it allows for declarative over imperative programming style. In the example above we specified the type parameter as `string`, this is not necessary as it can be inferred from the argument provided. - -```csharp -singleValue = Observable.Return("Value"); -// Can be reduced to the following -singleValue = Observable.Return("Value"); -``` - -### Observable.Empty - -The next two examples only need the type parameter to unfold into an observable sequence. The first is `Observable.Empty()`. This returns an empty `IObservable` i.e. it just publishes an `OnCompleted` notification. - -```csharp -var empty = Observable.Empty(); -// Behaviorally equivalent to -var subject = new ReplaySubject(); -subject.OnCompleted(); -``` - -### Observable.Never - -The `Observable.Never()` method will return infinite sequence without any notifications. - -```csharp -var never = Observable.Never(); -// similar to a subject without notifications -var subject = new Subject(); -``` - -### Observable.Throw - -`Observable.Throw(Exception)` method needs the type parameter information, it also need the `Exception` that it will `OnError` with. This method creates a sequence with just a single `OnError` notification containing the exception passed to the factory. - -```csharp -var throws = Observable.Throw(new Exception()); -// Behaviorally equivalent to -var subject = new ReplaySubject(); -subject.OnError(new Exception()); -``` - -### Observable.Create - -The `Create` factory method is a little different to the above creation methods. -The method signature itself may be a bit overwhelming at first, but becomes quite natural once you have used it. - -```csharp -// Creates an observable sequence from a specified Subscribe method implementation. -public static IObservable Create( - Func, IDisposable> subscribe) -{...} -public static IObservable Create( - Func, Action> subscribe) -{...} -``` - -Essentially this method allows you to specify a delegate that will be executed anytime a subscription is made. The `IObserver` that made the subscription will be passed to your delegate so that you can call the `OnNext`/`OnError`/`OnCompleted` methods as you need. This is one of the few scenarios where you will need to concern yourself with the `IObserver` interface. Your delegate is a `Func` that returns an `IDisposable`. This `IDisposable` will have its `Dispose()` method called when the subscriber disposes from their subscription. - -The `Create` factory method is the preferred way to implement custom observable sequences. The usage of subjects should largely remain in the realms of samples and testing. Subjects are a great way to get started with Rx. They reduce the learning curve for new developers, however they pose several concerns that the `Create` method eliminates. Rx is effectively a functional programming paradigm. Using subjects means we are now managing state, which is potentially mutating. Mutating state and asynchronous programming are very hard to get right. Furthermore many of the operators (extension methods) have been carefully written to ensure correct and consistent lifetime of subscriptions and sequences are maintained. When you introduce subjects you can break this. Future releases may also see significant performance degradation if you explicitly use subjects. - -The `Create` method is also preferred over creating custom types that implement the `IObservable` interface. There really is no need to implement the observer/observable interfaces yourself. Rx tackles the intricacies that you may not think of such as thread safety of notifications and subscriptions. - -A significant benefit that the `Create` method has over subjects is that the sequence will be lazily evaluated. Lazy evaluation is a very important part of Rx. It opens doors to other powerful features such as scheduling and combination of sequences that we will see later. The delegate will only be invoked when a subscription is made. - -In this example we show how we might first return a sequence via standard blocking eagerly evaluated call, and then we show the correct way to return an observable sequence without blocking by lazy evaluation. - -```csharp -private IObservable BlockingMethod() -{ - var subject = new ReplaySubject(); - subject.OnNext("a"); - subject.OnNext("b"); - subject.OnCompleted(); - Thread.Sleep(1000); - - return subject; -} - -private IObservable NonBlocking() -{ - return Observable.Create( - (IObserver observer) => - { - observer.OnNext("a"); - observer.OnNext("b"); - observer.OnCompleted(); - Thread.Sleep(1000); - - return Disposable.Create(() => Console.WriteLine("Observer has unsubscribed")); - // or can return an Action like - // return () => Console.WriteLine("Observer has unsubscribed"); - }); -} -``` - -While the examples are somewhat contrived, the intention is to show that when a consumer calls the eagerly evaluated, blocking method, they will be blocked for at least 1 second before they even receive the `IObservable`, regardless of if they do actually subscribe to it or not. The non blocking method is lazily evaluated so the consumer immediately receives the `IObservable` and will only incur the cost of the thread sleep if they subscribe. - -As an exercise, try to build the `Empty`, `Return`, `Never` & `Throw` extension methods yourself using the `Create` method. If you have Visual Studio or [LINQPad](http://www.linqpad.net/) available to you right now, code it up as quickly as you can. If you don't (perhaps you are on the train on the way to work), try to conceptualize how you would solve this problem. When you are done move forward to see some examples of how it could be done... - -Examples of `Empty`, `Return`, `Never` and `Throw` recreated with `Observable.Create`: - -```csharp -public static IObservable Empty() +public static IObservable Empty() { return Observable.Create(o => { @@ -609,157 +515,43 @@ public static IObservable Throws(Exception exception) } ``` -You can see that `Observable.Create` provides the power to build our own factory methods if we wish. You may have noticed that in each of the examples we only are able to return our subscription token (the implementation of `IDisposable`) once we have produced all of our `OnNext` notifications. This is because inside of the delegate we provide, we are completely sequential. It also makes the token rather pointless. Now we look at how we can use the return value in a more useful way. First is an example where inside our delegate we create a Timer that will call the observer's `OnNext` each time the timer ticks. - -```csharp -// Example code only -public void NonBlocking_event_driven() -{ - var ob = Observable.Create( - observer => - { - var timer = new System.Timers.Timer(); - timer.Interval = 1000; - timer.Elapsed += (s, e) => observer.OnNext("tick"); - timer.Elapsed += OnTimerElapsed; - timer.Start(); - - return Disposable.Empty; - }); - - var subscription = ob.Subscribe(Console.WriteLine); - Console.ReadLine(); - subscription.Dispose(); -} - -private void OnTimerElapsed(object sender, ElapsedEventArgs e) -{ - Console.WriteLine(e.SignalTime); -} -``` - -Output: - -``` -tick -01/01/2012 12:00:00 -tick -01/01/2012 12:00:01 -tick -01/01/2012 12:00:02 -01/01/2012 12:00:03 -01/01/2012 12:00:04 -01/01/2012 12:00:05 -``` - -The example above is broken. When we dispose of our subscription, we will stop seeing "tick" being written to the screen; however we have not released our second event handler "`OnTimerElasped`" and have not disposed of the instance of the timer, so it will still be writing the `ElapsedEventArgs.SignalTime` to the console after our disposal. The extremely simple fix is to return `timer` as the `IDisposable` token. - -```csharp -// Example code only -var ob = Observable.Create( - observer => - { - var timer = new System.Timers.Timer(); - timer.Interval = 1000; - timer.Elapsed += (s, e) => observer.OnNext("tick"); - timer.Elapsed += OnTimerElapsed; - timer.Start(); - - return timer; - }); -``` - -Now when a consumer disposes of their subscription, the underlying `Timer` will be disposed of too. +You can see that `Observable.Create` provides the power to build our own factory methods if we wish. -`Observable.Create` also has an overload that requires your `Func` to return an `Action` instead of an `IDisposable`. In a similar example to above, this one shows how you could use an action to un-register the event handler, preventing a memory leak by retaining the reference to the timer. -```csharp -// Example code only -var ob = Observable.Create( - observer => - { - var timer = new System.Timers.Timer(); - timer.Enabled = true; - timer.Interval = 100; - timer.Elapsed += OnTimerElapsed; - timer.Start(); - - return ()=>{ - timer.Elapsed -= OnTimerElapsed; - timer.Dispose(); - }; - }); -``` - -These last few examples showed you how to use the `Observable.Create` method. These were just examples; there are actually better ways to produce values from a timer that we will look at soon. The intention is to show that `Observable.Create` provides you a lazily evaluated way to create observable sequences. We will dig much deeper into lazy evaluation and application of the `Create` factory method throughout the book especially when we cover concurrency and scheduling. - -## Functional unfolds +## Sequence Generators -As a functional programmer you would come to expect the ability to unfold a potentially infinite sequence. An issue we may face with `Observable.Create` is that is that it can be a clumsy way to produce an infinite sequence. Our timer example above is an example of an infinite sequence, and while this is a simple implementation it is an annoying amount of code for something that effectively is delegating all the work to the `System.Timers.Timer` class. The `Observable.Create` method also has poor support for unfolding sequences using corecursion. +The creation methods we've looked at so far are straightforward in that they either produce very simple sequences (such as single-element, or empty sequences), or they rely on our code to tell them exactly what to produce. Now we'll look at some methods that can produce longer sequences. -### Corecursion - -Corecursion is a function to apply to the current state to produce the next state. Using corecursion by taking a value, applying a function to it that extends that value and repeating we can create a sequence. A simple example might be to take the value 1 as the seed and a function that increments the given value by one. This could be used to create sequence of [1,2,3,4,5...]. - -Using corecursion to create an `IEnumerable` sequence is made simple with the `yield return` syntax. - -```csharp -private static IEnumerable Unfold(T seed, Func accumulator) -{ - var nextValue = seed; - while (true) - { - yield return nextValue; - nextValue = accumulator(nextValue); - } -} -``` +### Observable.Range -The code above could be used to produce the sequence of natural numbers like this. +`Observable.Range(int, int)` returns an `IObserable` that produces a range of integers. The first integer is the initial value and the second is the number of values to yield. This example will write the values '10' through to '24' and then complete. ```csharp -var naturalNumbers = Unfold(1, i => i + 1); -Console.WriteLine("1st 10 Natural numbers"); -foreach (var naturalNumber in naturalNumbers.Take(10)) -{ - Console.WriteLine(naturalNumber); -} -``` - -Output: - -``` -1st 10 Natural numbers -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 +var range = Observable.Range(10, 15); +range.Subscribe(Console.WriteLine, () => Console.WriteLine("Completed")); ``` -Note the `Take(10)` is used to terminate the infinite sequence. +### Observable.Generate -Infinite and arbitrary length sequences can be very useful. First we will look at some that come with Rx and then consider how we can generalize the creation of infinite observable sequences. +Suppose you wanted to emulate the `Range` factory method using `Observable.Create`. You might try this: -### Observable.Range - -`Observable.Range(int, int)` simply returns a range of integers. The first integer is the initial value and the second is the number of values to yield. This example will write the values '10' through to '24' and then complete. +```cs +// Not the best way to do it! +IObservable Range(int start, int count) => + Observable.Create(observer => + { + for (int i = 0; i < count; ++i) + { + observer.OnNext(start + i); + } -```csharp -var range = Observable.Range(10, 15); -range.Subscribe(Console.WriteLine, ()=>Console.WriteLine("Completed")); + return Disposable.Empty; + }); ``` -### Observable.Generate - -It is difficult to emulate the `Range` factory method using `Observable.Create`. It would be cumbersome to try and respect the principles that the code should be lazily evaluated and the consumer should be able to dispose of the subscription resources when they so choose. This is where we can use corecursion to provide a richer unfold. In Rx the unfold method is called `Observable.Generate`. +This will work, but it does not respect request to unsubscribe. That won't cause direct harm, because Rx detects unsubscription, and will simply ignore any further values we produce. However, it's a waste of CPU time (and therefore energy, with consequent battery lifetime and/or environmental impact) to carry on generating numbers after nobody is listening. How bad that is depends on how long a range was requested. But imagine you wanted an infinite sequence? Perhaps it's useful to you to have an `IObservable` that produces value from the Fibonacci sequence, or prime numbers. How would you write that with `Create`? You'd certainly want some means of handling unsubscription in that case. We need our callback to return if we're to be notified of unsubscription (or we need to supply an `async` method, which doesn't really seem suitable here). -The simple version of `Observable.Generate` takes the following parameters: +There's a different approach that can work better here: `Observable.Generate`. The simple version of `Observable.Generate` takes the following parameters: - an initial state - a predicate that defines when the sequence should terminate @@ -774,19 +566,13 @@ public static IObservable Generate( Func resultSelector) ``` -As an exercise, write your own `Range` factory method using `Observable.Generate`. - -Consider the `Range` signature `Range(int start, int count)`, which provides the seed and a value for the conditional predicate. You know how each new value is derived from the previous one; this becomes your iterate function. Finally, you probably don't need to transform the state so this makes the result selector function very simple. - -Continue when you have built your own version... - -Example of how you could use `Observable.Generate` to construct a similar `Range` factory method. +This shows how you could use `Observable.Generate` to construct a `Range` method: ```csharp // Example code only public static IObservable Range(int start, int count) { - var max = start + count; + int max = start + count; return Observable.Generate( start, value => value < max, @@ -794,26 +580,42 @@ public static IObservable Range(int start, int count) value => value); } ``` - -### Observable.Interval -Earlier in the chapter we used a `System.Timers.Timer` in our observable to generate a continuous sequence of notifications. As mentioned in the example at the time, this is not the preferred way of working with timers in Rx. As Rx provides operators that give us this functionality it could be argued that to not use them is to re-invent the wheel. More importantly the Rx operators are the preferred way of working with timers due to their ability to substitute in schedulers which is desirable for easy substitution of the underlying timer. There are at least three various timers you could choose from for the example above: +The `Generate` method calls us back repeatedly until either our `condition` callback says we're done, or the observer unsubscribes. We can define an infinite sequence simply by never saying we are done: + +``` +IObservable Fibonacci() +{ + return Observable.Generate( + (v1: new BigInteger(1), v2: new BigInteger(1)), + value => true, // It never ends! + value => (value.v2, value.v1 + value.v2), + value => value.v1); ; +} +``` + +## Timed Sequence Generators + +Most of the methods we've looked at so far have returned sequences that produce all of their values immediately. (The only exception is where we called `Observable.Create` and produced values when we were ready to.) However, Rx is able to generate sequences on a schedule. -- `System.Timers.Timer` -- `System.Threading.Timer` -- `System.Windows.Threading.DispatcherTimer` +As we'll see, operators that schedule their work do so through an abstraction called a _scheduler_. If you don't specify one, they will pick a default scheduler, but sometimes the timer mechanism is significant. For example, there are timers that integrate with UI frameworks, delivering notifications on the same thread that mouse clicks and other input are delivered on, and we might want Rx's time-based operators to use these. For testing purposes it can be useful to virtualize timings, so we can verify what happens in timing-sensitive code without necessarily waiting for tests to execute in real time. -By abstracting the timer away via a scheduler we are able to reuse the same code for multiple platforms. More importantly than being able to write platform independent code is the ability to substitute in a test-double scheduler/timer to enable testing. Schedulers are a complex subject that is out of scope for this chapter, but they are covered in detail in the later chapter on [Scheduling and threading](15_SchedulingAndThreading.html). +Schedulers are a complex subject that is out of scope for this chapter, but they are covered in detail in the later chapter on [Scheduling and threading](15_SchedulingAndThreading.html). -There are three better ways of working with constant time events, each being a further generalization of the former. The first is `Observable.Interval(TimeSpan)` which will publish incremental values starting from zero, based on a frequency of your choosing. +There are three ways of producing timed events. + + +### Observable.Interval + +The first is `Observable.Interval(TimeSpan)` which will publish incremental values starting from zero, based on a frequency of your choosing. This example publishes values every 250 milliseconds. ```csharp - var interval = Observable.Interval(TimeSpan.FromMilliseconds(250)); - interval.Subscribe( - Console.WriteLine, - () => Console.WriteLine("completed")); +IObservable interval = Observable.Interval(TimeSpan.FromMilliseconds(250)); +interval.Subscribe( + Console.WriteLine, + () => Console.WriteLine("completed")); ``` Output: @@ -827,16 +629,19 @@ Output: 5 ``` -Once subscribed, you must dispose of your subscription to stop the sequence. It is an example of an infinite sequence. +Once subscribed, you must dispose of your subscription to stop the sequence, because `Interval` returns an infinite sequence. Rx presumes that you might have considerable patience, because the sequences returned by `Interval` are of type `IObservable` (`long`, not `int`) meaning you won't hit problems if you produce more than a paltry 2.1475 billion event (i.e. more than `int.MaxValue`). + -### Observable.Timer +### Observable.Timer The second factory method for producing constant time based sequences is `Observable.Timer`. It has several overloads; the first of which we will look at being very simple. The most basic overload of `Observable.Timer` takes just a `TimeSpan` as `Observable.Interval` does. The `Observable.Timer` will however only publish one value (0) after the period of time has elapsed, and then it will complete. - var timer = Observable.Timer(TimeSpan.FromSeconds(1)); - timer.Subscribe( - Console.WriteLine, - () => Console.WriteLine("completed")); +```cs +var timer = Observable.Timer(TimeSpan.FromSeconds(1)); +timer.Subscribe( + Console.WriteLine, + () => Console.WriteLine("completed")); +``` Output: @@ -845,9 +650,9 @@ Output: completed ``` -Alternatively, you can provide a `DateTimeOffset` for the `dueTime` parameter. This will produce the value 0 and complete at the due time. +Alternatively, you can provide a `DateTimeOffset` for the `dueTime` parameter. This will produce the value 0 and complete at the specified time. -A further set of overloads adds a `TimeSpan` that indicates the period to produce subsequent values. This now allows us to produce infinite sequences and also construct `Observable.Interval` from `Observable.Timer`. +A further set of overloads adds a `TimeSpan` that indicates the period to produce subsequent values. This now allows us to produce infinite sequences. It also shows how `Observable.Interval` is really just a special case of `Observable.Timer`—`Interval` could be implemented like this: ```csharp public static IObservable Interval(TimeSpan period) @@ -856,13 +661,17 @@ public static IObservable Interval(TimeSpan period) } ``` -Note that this now returns an `IObservable` of `long` not `int`. While `Observable.Interval` would always wait the given period before producing the first value, this `Observable.Timer` overload gives the ability to start the sequence when you choose. With `Observable.Timer` you can write the following to have an interval sequence that started immediately. +While `Observable.Interval` would always wait the given period before producing the first value, this `Observable.Timer` overload gives the ability to start the sequence when you choose. With `Observable.Timer` you can write the following to have an interval sequence that starts immediately. ```csharp Observable.Timer(TimeSpan.Zero, period); ``` -This takes us to our third way and most general way for producing timer related sequences, back to `Observable.Generate`. This time however, we are looking at a more complex overload that allows you to provide a function that specifies the due time for the next value. +This takes us to our third way and most general way for producing timer related sequences, back to `Observable.Generate`. + +### Timed Observable.Generate + + There's a more complex overload of `Observable.Generate` that allows you to provide a function that specifies the due time for the next value. ```csharp public static IObservable Generate( @@ -873,7 +682,7 @@ public static IObservable Generate( Func timeSelector) ``` -Using this overload, and specifically the extra `timeSelector` argument, we can produce our own implementation of `Observable.Timer` and in turn, `Observable.Interval`. +Using this overload, and specifically the extra `timeSelector` argument, we can produce our own implementation of `Observable.Timer` (and as you've already seen, this in turn would enable us to write our own `Observable.Interval`). ```csharp public static IObservable Timer(TimeSpan dueTime) @@ -907,15 +716,16 @@ public static IObservable Interval(TimeSpan period) } ``` -This shows how you can use `Observable.Generate` to produce infinite sequences. I will leave it up to you the reader, as an exercise using `Observable.Generate`, to produce values at variable rates. I find using these methods invaluable not only in day to day work but especially for producing dummy data. +This shows how you can use `Observable.Generate` to produce infinite sequences. I will leave it up to you the reader, as an exercise using `Observable.Generate`, to produce values at variable rates. I find using these methods invaluable not only in day to day work but especially for producing dummy data for test purposes. -## Transitioning into IObservable<T> -Generation of an observable sequence covers the complicated aspects of functional programming i.e. corecursion and unfold. You can also start a sequence by simply making a transition from an existing synchronous or asynchronous paradigm into the Rx paradigm. +## Adapting Common Type to IObservable<T> -### From delegates +Although we've now seen two very general ways to produce arbitrary sequences—`Create` and `Generate`—what if you already have an existing source of information in some other form that you'd like to make available as an `IObservable`? Rx provides a few adapters for common source types. -The `Observable.Start` method allows you to turn a long running `Func` or `Action` into a single value observable sequence. By default, the processing will be done asynchronously on a ThreadPool thread. If the overload you use is a `Func` then the return type will be `IObservable`. When the function returns its value, that value will be published and then the sequence completed. If you use the overload that takes an `Action`, then the returned sequence will be of type `IObservable`. The `Unit` type is a functional programming construct and is analogous to `void`. In this case `Unit` is used to publish an acknowledgement that the `Action` is complete, however this is rather inconsequential as the sequence is immediately completed straight after `Unit` anyway. The `Unit` type itself has no value; it just serves as an empty payload for the `OnNext` notification. Below is an example of using both overloads. +### From delegates + +The `Observable.Start` method allows you to turn a long running `Func` or `Action` into a single value observable sequence. By default, the processing will be done asynchronously on a ThreadPool thread. If the overload you use is a `Func` then the return type will be `IObservable`. When the function returns its value, that value will be published and then the sequence completed. If you use the overload that takes an `Action`, then the returned sequence will be of type `IObservable`. The `Unit` type is represents the absence of information, so it's somewhat analogous to `void`, except you can have an instance of the `Unit` type. It's particularly useful in Rx because we often care only about when something has happened, and there might not be any information besides timing. In these cases, we often use an `IObservable` so that it's possible to produce definite events even though there's no meaningful data in them. (The name comes from the world of functional programming, where this kind of construct is used a lot.) In this case `Unit` is used to publish an acknowledgement that the `Action` is complete, because an `Action` does not return any information. The `Unit` type itself has no value; it just serves as an empty payload for the `OnNext` notification. Below is an example of using both overloads. ```csharp static void StartAction() @@ -954,11 +764,17 @@ static void StartFunc() } ``` -Note the difference between `Observable.Start` and `Observable.Return`; `Start` lazily evaluates the value from a function, `Return` provided the value eagerly. This makes `Start` very much like a `Task`. This can also lead to some confusion on when to use each of the features. Both are valid tools and the choice come down to the context of the problem space. Tasks are well suited to parallelizing computational work and providing workflows via continuations for computationally heavy work. Tasks also have the benefit of documenting and enforcing single value semantics. Using `Start` is a good way to integrate computationally heavy work into an existing code base that is largely made up of observable sequences. We look at [composition of sequences](12_CombiningSequences.html) in more depth later in the book. +Note the difference between `Observable.Start` and `Observable.Return`. `Start` invokes our callback only upon subscription, so it is an example of a 'lazy' operation. Conversely, `Return` requires us to supply the value up front. + +The observable returned by `Start` may seem to have a superficial resemblance to `Task` or `Task` (depending on whether you use the `Action` or `Func` overload). Each represents work that may take some time before eventually completing, perhaps producing a result. However, there's a significant difference: `Start` doesn't begin the work until you subscribe to it. And it will re-execute the callback every time you subscribe to it. So it is more like a factory for a task-like entity. + + +### From events -### From events +As we discussed early in the book, .NET has a model for events that is baked into its type system. This predates Rx (not least because Rx wasn't feasible until .NET got generics in .NET 2.0) so it's common for types to support events but not Rx. To be able to integrate with the existing event model, Rx provides methods to take an event and turn it into an observable sequence. I showed this briefly in the file system watcher example earlier, but let's look in a bit more detail. There are several different varieties you can use. + +TODO: done up to here. Two of these next seem to be the same thing just applied arbitrarily to two different events. And none of these looks like a good choice of example in 2023. -As we discussed early in the book, .NET already has the event model for providing a reactive, event driven programming model. While Rx is a more powerful and useful framework, it is late to the party and so needs to integrate with the existing event model. Rx provides methods to take an event and turn it into an observable sequence. There are several different varieties you can use. Here is a selection of common event patterns. @@ -985,7 +801,7 @@ So while the overloads can be confusing, they key is to find out what the event' It is very common to want to expose property changed events as observable sequences. These events can be exposed via `INotifyPropertyChanged` interface, a `DependencyProperty` or perhaps by events named appropriately to the Property they are representing. If you are looking at writing your own wrappers to do this sort of thing, I would strongly suggest looking at the Rxx library on [https://github.com/dotnet/reactive](https://github.com/dotnet/reactive) first. Many of these have been catered for in a very elegant fashion. -### From Task +### From Task Rx provides a useful, and well named set of overloads for transforming from other existing paradigms to the Observable paradigm. The `ToObservable()` method overloads provide a simple route to make the transition. @@ -1001,7 +817,7 @@ There are two reasons to use the extension method: - From Framework 4.5, almost all I/O-bound functions return `Task` - If `Task` is a good fit, it's preferable to use it over `IObservable` - because it communicates single-value result in the type system. -In other words, a function that returns a single value in the future should return a `Task`, not an `IObservable`. Then if you need to combine it with other observables, use `ToObservable()`. +In other words, a function that returns a single value in the future should return a `Task`, not an `IObservable`. Then if you need to combine it with other observables, use `ToObservable()`. Usage of the extension method is also simple. @@ -1022,7 +838,7 @@ completed There is also an overload that converts a `Task` (non generic) to an `IObservable`. -### From IEnumerable<T> +### From IEnumerable<T> The final overload of `ToObservable` takes an `IEnumerable`. This is semantically like a helper method for an `Observable.Create` with a `foreach` loop in it. @@ -1047,7 +863,7 @@ This crude implementation however is naive. It does not allow for correct dispos When transitioning from `IEnumerable` to `IObservable`, you should carefully consider what you are really trying to achieve. You should also carefully test and measure the performance impacts of your decisions. Consider that the blocking synchronous (pull) nature of `IEnumerable` sometimes just does not mix well with the asynchronous (push) nature of `IObservable`. Remember that it is completely valid to pass `IEnumerable`, `IEnumerable`, arrays or collections as the data type for an observable sequence. If the sequence can be materialized all at once, then you may want to avoid exposing it as an `IEnumerable`. If this seems like a fit for you then also consider passing immutable types like an array or a `ReadOnlyCollection`. We will see the use of `IObservable>` later for operators that provide batching of data. -### From APM +### From APM Finally we look at a set of overloads that take you from the [Asynchronous Programming Model](http://msdn.microsoft.com/en-us/magazine/cc163467.aspx) (APM) to an observable sequence. This is the style of programming found in .NET that can be identified with the use of two methods prefixed with `Begin...` and `End...` and the iconic `IAsyncResult` parameter type. This is commonly seen in the I/O APIs. @@ -1133,7 +949,7 @@ Now we look at the EndXXX method and see it returns an `int`, which completes th Observable.FromAsyncPattern ``` -The result of the call to `Observable.FromAsyncPattern` does _not_ return an observable sequence. It returns a delegate that returns an observable sequence. The signature for this delegate will match the generic arguments of the call to `FromAsyncPattern`, except that the return type will be wrapped in an observable sequence. +The result of the call to `Observable.FromAsyncPattern` does _not_ return an observable sequence. It returns a delegate that returns an observable sequence. The signature for this delegate will match the generic arguments of the call to `FromAsyncPattern`, except that the return type will be wrapped in an observable sequence. ```csharp var fileLength = (int) stream.Length; @@ -1176,4 +992,317 @@ As a quick recap: - IEnumerable<T>.ToObservable - Observable.FromAsyncPattern -Creating an observable sequence is our first step to practical application of Rx: create the sequence and then expose it for consumption. Now that we have a firm grasp on how to create an observable sequence, we can discover the operators that allow us to query an observable sequence. \ No newline at end of file +Creating an observable sequence is our first step to practical application of Rx: create the sequence and then expose it for consumption. Now that we have a firm grasp on how to create an observable sequence, we can discover the operators that allow us to query an observable sequence. + + + +## Subject + +TODO: move this into a separate chapter? I'm not convinced all the subject types are really intro stuff. `Subject` is useful, but the rest? + +I like to think of the `IObserver` and the `IObservable` as the 'reader' and 'writer' or, 'consumer' and 'publisher' interfaces. If you were to create your own implementation of `IObservable` you may find that while you want to publicly expose the IObservable characteristics you still need to be able to publish items to the subscribers, throw errors and notify when the sequence is complete. Why that sounds just like the methods defined in `IObserver`! While it may seem odd to have one type implementing both interfaces, it does make life easy. This is what [subjects](http://msdn.microsoft.com/en-us/library/hh242969(v=VS.103).aspx "Using Rx Subjects - MSDN") can do for you. [`Subject`](http://msdn.microsoft.com/en-us/library/hh229173(v=VS.103).aspx "Subject(Of T) - MSDN") is the most basic of the subjects. Effectively you can expose your `Subject` behind a method that returns `IObservable` but internally you can use the `OnNext`, `OnError` and `OnCompleted` methods to control the sequence. + +In this very basic example, I create a subject, subscribe to that subject and then publish values to the sequence (by calling `subject.OnNext(T)`). + +```csharp +static void Main(string[] args) +{ + var subject = new Subject(); + WriteSequenceToConsole(subject); + + subject.OnNext("a"); + subject.OnNext("b"); + subject.OnNext("c"); + Console.ReadKey(); +} + +// Takes an IObservable as its parameter. +// Subject implements this interface. +static void WriteSequenceToConsole(IObservable sequence) +{ + // The next two lines are equivalent. + // sequence.Subscribe(value=>Console.WriteLine(value)); + sequence.Subscribe(Console.WriteLine); +} +``` + +Note that the `WriteSequenceToConsole` method takes an `IObservable` as it only wants access to the subscribe method. Hang on, doesn't the `Subscribe` method need an `IObserver` as an argument? Surely `Console.WriteLine` does not match that interface. Well it doesn't, but the Rx team supply me with an Extension Method to `IObservable` that just takes an [`Action`](http://msdn.microsoft.com/en-us/library/018hxwa8.aspx "Action(Of T) Delegate - MSDN"). The action will be executed every time an item is published. There are [other overloads to the Subscribe extension method](http://msdn.microsoft.com/en-us/library/system.observableextensions(v=VS.103).aspx "ObservableExtensions class - MSDN") that allows you to pass combinations of delegates to be invoked for `OnNext`, `OnCompleted` and `OnError`. This effectively means I don't need to implement `IObserver`. Cool. + +As you can see, `Subject` could be quite useful for getting started in Rx programming. `Subject` however, is a basic implementation. There are three siblings to `Subject` that offer subtly different implementations which can drastically change the way your program runs. + + + +## ReplaySubject + +[`ReplaySubject`](http://msdn.microsoft.com/en-us/library/hh211810(v=VS.103).aspx "ReplaySubject(Of T) - MSDN") provides the feature of caching values and then replaying them for any late subscriptions. Consider this example where we have moved our first publication to occur before our subscription + +```csharp +static void Main(string[] args) +{ + var subject = new Subject(); + + subject.OnNext("a"); + WriteSequenceToConsole(subject); + + subject.OnNext("b"); + subject.OnNext("c"); + Console.ReadKey(); +} +``` + +The result of this would be that 'b' and 'c' would be written to the console, but 'a' ignored. +If we were to make the minor change to make subject a `ReplaySubject` we would see all publications again. + +```csharp +var subject = new ReplaySubject(); + +subject.OnNext("a"); +WriteSequenceToConsole(subject); + +subject.OnNext("b"); +subject.OnNext("c"); +``` + +This can be very handy for eliminating race conditions. Be warned though, the default constructor of the `ReplaySubject` will create an instance that caches every value published to it. In many scenarios this could create unnecessary memory pressure on the application. `ReplaySubject` allows you to specify simple cache expiry settings that can alleviate this memory issue. One option is that you can specify the size of the buffer in the cache. In this example we create the `ReplaySubject` with a buffer size of 2, and so only get the last two values published prior to our subscription: + +```csharp +public void ReplaySubjectBufferExample() +{ + var bufferSize = 2; + var subject = new ReplaySubject(bufferSize); + + subject.OnNext("a"); + subject.OnNext("b"); + subject.OnNext("c"); + subject.Subscribe(Console.WriteLine); + subject.OnNext("d"); +} +``` + +Here the output would show that the value 'a' had been dropped from the cache, but values 'b' and 'c' were still valid. The value 'd' was published after we subscribed so it is also written to the console. + +``` +Output: +b +c +d +``` + +Another option for preventing the endless caching of values by the `ReplaySubject`, is to provide a window for the cache. In this example, instead of creating a `ReplaySubject` with a buffer size, we specify a window of time that the cached values are valid for. + +```csharp +public void ReplaySubjectWindowExample() +{ + var window = TimeSpan.FromMilliseconds(150); + var subject = new ReplaySubject(window); + + subject.OnNext("w"); + Thread.Sleep(TimeSpan.FromMilliseconds(100)); + subject.OnNext("x"); + Thread.Sleep(TimeSpan.FromMilliseconds(100)); + subject.OnNext("y"); + subject.Subscribe(Console.WriteLine); + subject.OnNext("z"); +} +``` + +In the above example the window was specified as 150 milliseconds. Values are published 100 milliseconds apart. Once we have subscribed to the subject, the first value is 200ms old and as such has expired and been removed from the cache. + +``` +Output: +x +y +z +``` + +## BehaviorSubject + +[`BehaviorSubject`](http://msdn.microsoft.com/en-us/library/hh211949(v=VS.103).aspx "BehaviorSubject(Of T) - MSDN") is similar to `ReplaySubject` except it only remembers the last publication. `BehaviorSubject` also requires you to provide it a default value of `T`. This means that all subscribers will receive a value immediately (unless it is already completed). + +In this example the value 'a' is written to the console: + +```csharp +public void BehaviorSubjectExample() +{ + //Need to provide a default value. + var subject = new BehaviorSubject("a"); + subject.Subscribe(Console.WriteLine); +} +``` + +In this example the value 'b' is written to the console, but not 'a'. + +```csharp +public void BehaviorSubjectExample2() +{ + var subject = new BehaviorSubject("a"); + subject.OnNext("b"); + subject.Subscribe(Console.WriteLine); +} +``` + +In this example the values 'b', 'c' & 'd' are all written to the console, but again not 'a' + +```csharp +public void BehaviorSubjectExample3() +{ + var subject = new BehaviorSubject("a"); + + subject.OnNext("b"); + subject.Subscribe(Console.WriteLine); + subject.OnNext("c"); + subject.OnNext("d"); +} +``` + +Finally in this example, no values will be published as the sequence has completed. Nothing is written to the console. + +```csharp +public void BehaviorSubjectCompletedExample() +{ + var subject = new BehaviorSubject("a"); + subject.OnNext("b"); + subject.OnNext("c"); + subject.OnCompleted(); + subject.Subscribe(Console.WriteLine); +} +``` + +That note that there is a difference between a `ReplaySubject` with a buffer size of one (commonly called a 'replay one subject') and a `BehaviorSubject`. A `BehaviorSubject` requires an initial value. With the assumption that neither subjects have completed, then you can be sure that the `BehaviorSubject` will have a value. You cannot be certain with the `ReplaySubject` however. With this in mind, it is unusual to ever complete a `BehaviorSubject`. Another difference is that a replay-one-subject will still cache its value once it has been completed. So subscribing to a completed `BehaviorSubject` we can be sure to not receive any values, but with a `ReplaySubject` it is possible. + +`BehaviorSubject`s are often associated with class [properties](http://msdn.microsoft.com/en-us/library/65zdfbdt(v=vs.71).aspx). +As they always have a value and can provide change notifications, they could be candidates for backing fields to properties. + +## AsyncSubject + +[`AsyncSubject`](http://msdn.microsoft.com/en-us/library/hh229363(v=VS.103).aspx "AsyncSubject(Of T) - MSDN") is similar to the Replay and Behavior subjects in the way that it caches values, however it will only store the last value, and only publish it when the sequence is completed. The general usage of the `AsyncSubject` is to only ever publish one value then immediately complete. This means that is becomes quite comparable to `Task`. + +In this example no values will be published as the sequence never completes. +No values will be written to the console. + +```csharp +static void Main(string[] args) +{ + var subject = new AsyncSubject(); + subject.OnNext("a"); + WriteSequenceToConsole(subject); + subject.OnNext("b"); + subject.OnNext("c"); + Console.ReadKey(); +} +``` + +In this example we invoke the `OnCompleted` method so the last value 'c' is written to the console: + +```csharp +static void Main(string[] args) +{ + var subject = new AsyncSubject(); + + subject.OnNext("a"); + WriteSequenceToConsole(subject); + subject.OnNext("b"); + subject.OnNext("c"); + subject.OnCompleted(); + Console.ReadKey(); +} +``` + + + +## Implicit contracts + +There are implicit contacts that need to be upheld when working with Rx as mentioned above. The key one is that once a sequence is completed, no more activity can happen on that sequence. A sequence can be completed in one of two ways, either by `OnCompleted()` or by `OnError(Exception)`. + +The four subjects described in this chapter all cater for this implicit contract by ignoring any attempts to publish values, errors or completions once the sequence has already terminated. + +Here we see an attempt to publish the value 'c' on a completed sequence. Only values 'a' and 'b' are written to the console. + +```csharp +public void SubjectInvalidUsageExample() +{ + var subject = new Subject(); + + subject.Subscribe(Console.WriteLine); + + subject.OnNext("a"); + subject.OnNext("b"); + subject.OnCompleted(); + subject.OnNext("c"); +} +``` + +## ISubject interfaces + +While each of the four subjects described in this chapter implement the `IObservable` and `IObserver` interfaces, they do so via another set of interfaces: + +```csharp +//Represents an object that is both an observable sequence as well as an observer. +public interface ISubject + : IObserver, IObservable +{ +} +``` + +As all the subjects mentioned here have the same type for both `TSource` and `TResult`, they implement this interface which is the superset of all the previous interfaces: + +```csharp +//Represents an object that is both an observable sequence as well as an observer. +public interface ISubject : ISubject, IObserver, IObservable +{ +} +``` + +These interfaces are not widely used, but prove useful as the subjects do not share a common base class. We will see the subject interfaces used later when we discover [Hot and cold observables](14_HotAndColdObservables.html). + +## Subject factory + +Finally it is worth making you aware that you can also create a subject via a factory method. Considering that a subject combines the `IObservable` and `IObserver` interfaces, it seems sensible that there should be a factory that allows you to combine them yourself. The `Subject.Create(IObserver, IObservable)` factory method provides just this. + +```csharp +//Creates a subject from the specified observer used to publish messages to the subject +// and observable used to subscribe to messages sent from the subject +public static ISubject>TSource, TResult< Create>TSource, TResult<( + IObserver>TSource< observer, + IObservable>TResult< observable) +{...} +``` + +Subjects provide a convenient way to poke around Rx, however they are not recommended for day to day use. An explanation is in the [Usage Guidelines](18_UsageGuidelines.md) in the appendix. Instead of using subjects, favor the factory methods we will look at in [Part 2](04_CreatingObservableSequences.md). + +The fundamental types `IObserver` and `IObservable` and the auxiliary subject types create a base from which to build your Rx knowledge. It is important to understand these simple types and their implicit contracts. In production code you may find that you rarely use the `IObserver` interface and subject types, but understanding them and how they fit into the Rx eco-system is still important. The `IObservable` interface is the dominant type that you will be exposed to for representing a sequence of data in motion, and therefore will comprise the core concern for most of your work with Rx and most of this book. + + + +... + +weird bit from Observable.Return + +```csharp +var singleValue = Observable.Return("Value"); + +// which could have also been simulated with a replay subject +var subject = new ReplaySubject(); +subject.OnNext("Value"); +subject.OnCompleted(); +``` + +Note that in the example above that we could use the factory method or get the same effect by using the replay subject. The obvious difference is that the factory method is only one line and it allows for declarative over imperative programming style. In the example above we specified the type parameter as `string`, this is not necessary as it can be inferred from the argument provided. + +```csharp +singleValue = Observable.Return("Value"); +// Can be reduced to the following +singleValue = Observable.Return("Value"); +``` + +... + +From Observable.Create: + +The usage of subjects should largely remain in the realms of samples and testing. Subjects are a great way to get started with Rx. They reduce the learning curve for new developers, however they pose several concerns that the `Create` method eliminates. Rx is effectively a functional programming paradigm. Using subjects means we are now managing state, which is potentially mutating. Mutating state and asynchronous programming are very hard to get right. Furthermore many of the operators (extension methods) have been carefully written to ensure correct and consistent lifetime of subscriptions and sequences are maintained. When you introduce subjects you can break this. Future releases may also see significant performance degradation if you explicitly use subjects. + + +.. +A significant benefit that the `Create` method has over subjects is that the sequence will be lazily evaluated. Lazy evaluation is a very important part of Rx. It opens doors to other powerful features such as scheduling and combination of sequences that we will see later. The delegate will only be invoked when a subscription is made. From 8371a36e0ffd3f2b466e9be2424c3844a15c5809 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Thu, 8 Jun 2023 16:59:27 +0100 Subject: [PATCH 008/142] First full draft of Creating Observable Sequences --- content/04_CreatingObservableSequences.md | 594 ++++++++-------------- 1 file changed, 223 insertions(+), 371 deletions(-) diff --git a/content/04_CreatingObservableSequences.md b/content/04_CreatingObservableSequences.md index d1033fa..6a39c9b 100644 --- a/content/04_CreatingObservableSequences.md +++ b/content/04_CreatingObservableSequences.md @@ -771,58 +771,67 @@ The observable returned by `Start` may seem to have a superficial resemblance to ### From events -As we discussed early in the book, .NET has a model for events that is baked into its type system. This predates Rx (not least because Rx wasn't feasible until .NET got generics in .NET 2.0) so it's common for types to support events but not Rx. To be able to integrate with the existing event model, Rx provides methods to take an event and turn it into an observable sequence. I showed this briefly in the file system watcher example earlier, but let's look in a bit more detail. There are several different varieties you can use. +As we discussed early in the book, .NET has a model for events that is baked into its type system. This predates Rx (not least because Rx wasn't feasible until .NET got generics in .NET 2.0) so it's common for types to support events but not Rx. To be able to integrate with the existing event model, Rx provides methods to take an event and turn it into an observable sequence. I showed this briefly in the file system watcher example earlier, but let's look in a bit more detail. There are several different varieties you can use. This show the most succinct form: -TODO: done up to here. Two of these next seem to be the same thing just applied arbitrarily to two different events. And none of these looks like a good choice of example in 2023. +```cs +FileSystemWatcher watcher = new (@"c:\temp"); +IObservable> changeEvents = Observable + .FromEventPattern(watcher, nameof(watcher.Changed)); +``` +If you have an object that provides an event you can use this overload of `FromEventPattern`, passing in the object and the name of the event that you'd like to use with Rx. There are a few problems with this. -Here is a selection of common event patterns. +Firstly, why do I need to pass the event name as a string? Identifying members with strings is an error-prone technique—the compiler won't notice if there's a mismatch between the first and second argument (e.g., if I passed the arguments `(somethingElse, nameof(watcher.Changed))` by mistake). Couldn't I just pass `watcher.Changed` itself? Unfortunately not—this is an example of the issue I mentioned in the first chapter: .NET events are not first class citizens. We can't use them in the way we can use other objects or values. For example, we can't pass an event as an argument to a method. In fact the only thing you can do with a .NET event is attach and remove event handlers. If I want to get some other method to attach handlers to the event of my choosing (e.g., here I want Rx to handle the events), then the only way to do that is to specify the event's name so that the method (`FromEventPattern`) can then use reflection to attach its own handlers. -```csharp -// Activated delegate is EventHandler -var appActivated = Observable.FromEventPattern( - h => Application.Current.Activated += h, - h => Application.Current.Activated -= h); - -// PropertyChanged is PropertyChangedEventHandler -var propChanged = Observable.FromEventPattern - ( - handler => handler.Invoke, - h => this.PropertyChanged += h, - h => this.PropertyChanged -= h); - -// FirstChanceException is EventHandler -var firstChanceException = Observable.FromEventPattern( - h => AppDomain.CurrentDomain.FirstChanceException += h, - h => AppDomain.CurrentDomain.FirstChanceException -= h); +This is a problem for some deployment scenarios. It is increasingly common in .NET to do extra work at build time to optimize runtime behaviour, and reliance on reflection can compromise these techniques. For example, instead of relying on Just In Time (JIT) compilation of code, we might use Ahead of time (AoT) mechanisms. .NET's Ready to Run (R2R) system enables you to include pre-compiled code targeting specific CPU types alongside the normal IL, avoiding having to wait for .NET to compile the IL into runnable code. This can have a significant effect on startup times, making it an important technique both in client side applications, where it can fix problems where applications are sluggish when they first start up, and also in server-side applications, especially in cloud environments where code may be moved from one compute node to another fairly frequently, making it important to minimize cold start costs. There are also scenarios where JIT compilation is not even an option, in which case AoT compilation isn't simply an optimization: it's the only means by which code can run at all. + +The problem with reflection is that it makes it difficult for the build tools to work out what code will execute at runtime. When they inspect this call to `FromEventPattern` they will just see arguments of type `object` and `string`. It's not self-evident that this is going to result in reflection-driven calls to the `add` and `remove` methods for `FileSystemWatcher.Changed` at runtime. There are attributes that can be used to provide hints, but there are limits to how well these can work. Sometimes the build tools will be unable to determine what code would need to be AoT compiled to enable this method to execute without relying on runtime JIT. + +There's another, related problem. The .NET build tools support a feature called 'trimming', in which they remove unused code. The `System.Reactive.dll` file is about 1.3MB in size, but it would be a very unusual application that used every member of every type in that component. Basic use of Rx might need only a few tens of kilobytes. The idea with trimming is to work out which bits are actually in use, and produce a copy of the DLL that contains only that code. This can dramatically reduce the volume of code that needs to be deployed for an executable to run. This can be especially important in client-side Blazor applications, where .NET components end up being downloaded by the browser. Having to download an entire 1.3MB component might make you think twice about using it. But if trimming means that basic usage requires only a few tens of KB, and that the size would increase only if you were making more extensive use of the component, that can make it reasonable to use a component that would, without trimming, have imposed too large a penalty to justify its inclusion. But as with AoT compilation, trimming can only work if the tools can determine which code is in use. If they can't do that, it's not just a case of falling back to a slower path, waiting while the relevant code gets JIT compiler—if code has been trimmed, it will be unavailable at runtime, and your application might crash with a `MissingMethodException`. + +So reflection-based APIs can be problematic if you're using any of these techniques. Fortunately, there's an alternative. We can use an overload that takes a couple of delegates, and Rx will invoke these when it wants to add or remove handlers for the event: + +```cs +IObservable> changeEvents = Observable + .FromEventPattern( + h => watcher.Changed += h, + h => watcher.Changed -= h); ``` -So while the overloads can be confusing, they key is to find out what the event's signature is. If the signature is just the base `EventHandler` delegate then you can use the first example. If the delegate is a sub-class of the `EventHandler`, then you need to use the second example and provide the `EventHandler` sub-class and also its specific type of `EventArgs`. Alternatively, if the delegate is the newer generic `EventHandler`, then you need to use the third example and just specify what the generic type of the event argument is. +This is code that AoT and trimming tools can understand easily. We've written methods that explicitly add and remove handlers for the `FileSystemWatcher.Changed` event, so AoT tools can pre-compile those two methods, and trimming tools know that they cannot remove the add and remove handlers for those events. -It is very common to want to expose property changed events as observable sequences. These events can be exposed via `INotifyPropertyChanged` interface, a `DependencyProperty` or perhaps by events named appropriately to the Property they are representing. If you are looking at writing your own wrappers to do this sort of thing, I would strongly suggest looking at the Rxx library on [https://github.com/dotnet/reactive](https://github.com/dotnet/reactive) first. Many of these have been catered for in a very elegant fashion. +The downside is that this is a pretty cumbersome bit of code to write. If you've not already bought into the idea of using Rx, this might well be enough to make you think "I'll just stick with ordinary .NET events, thanks. But the cumbersome nature is a symptom of what is wrong with .NET events. We wouldn't have had to write anything so ugly if events had been first class citizens in the first place. + +Not only has that second-class status meant we couldn't just pass the event itself as an argument, it has also meant that we've had to state type arguments explicitly. The relationship between an event's delegate type (`FileSystemEventHandler` in this example) and its event argument type (`FileSystemEventArgs` here) is, in general, not something that C#'s type inference can determine automatically, which is why we've had to specify both types explicitly. (Events that use the generic `EventHandler` type are more amenable to type inference, and can use a slightly less verbose version of `FromEventPattern`. Unfortunately, relatively few events actually use that. Some events provide information besides the fact that something just happened, and use the base `EventHandler` type, and for those kinds of events, you can in fact omit the type arguments completely, making the code slightly less ugly. You still need to provide the add and remove callbacks though.) + +Notice that the return type of `FromEventPattern` in this example is `IObservable>`. The `EventPattern` type encapsulates the information that the event passes to handlers. Most .NET events follow a common pattern in which handler methods take two arguments: an `object sender`, which just tells you which object raised the event (useful if you attach one event handler to multiple objects) and then a second argument of some type derived from `EventArgs` that provides information about the event. `EventPattern` just packages these two arguments into a single object that offers `Sender` and `EventArgs` properties. In cases where you don't in fact want to attach one handler to multiple sources, you only really need that `EventArgs` property, which is why the earlier `FileSystemWatcher` examples went on to extract that just that, to get a simpler result of type `IObservable`. It did this with the `Select` operator, which we'll get to in more detail later: + +```cs +IObservable changes = changeEvents.Select(ep => ep.EventArgs); +``` + +It is very common to want to expose property changed events as observable sequences. The .NET runtime libraries define a .NET-event-based interface for advertising property changes, `INotifyPropertyChanged`, and some user interface frameworks have more specialized systems for this, such as WPF's `DependencyProperty`. If you are contemplating writing your own wrappers to do this sort of thing, I would strongly suggest looking at the [Reactive UI libraries](https://github.com/reactiveui/ReactiveUI/) first. It has a set of [features for wrapping properties as `IObservable`](https://www.reactiveui.net/docs/handbook/when-any/). ### From Task -Rx provides a useful, and well named set of overloads for transforming from other existing paradigms to the Observable paradigm. The `ToObservable()` method overloads provide a simple route to make the transition. +The `Task` and `Task` types are very widely used in .NET. Widely used .NET languages have built-in support for working with them (e.g., C#'s `async` and `await` keywords). There's some conceptual overlap between tasks an `IObservable`: both represent some sort of work that might take a while to complete. There is a sense in which an `IObservable` is a generalization of a `Task`—both represent potentially long-running work, but an `IObservable` can produce multiple results whereas `Task` can produce just one. -As we mentioned earlier, the `AsyncSubject` is similar to a `Task`. They both return you a single value from an asynchronous source. They also both cache the result for any repeated or late requests for the value. The first `ToObservable()` extension method overload we look at is an extension to `Task`. The implementation is simple; +Since `IObservable` is the more general abstraction, we should be able to represent a `Task` as an `IObservable`. And Rx defines various extension methods for `Task` and `Task` to do this. These methods are all called `ToObservable()`, and it offers various overloads offering control of the details where required, and simplicity for the most common scenarios. -- if the task is already in a status of `RanToCompletion` then the value is added to the sequence and then the sequence completed -- if the task is Cancelled then the sequence will error with a `TaskCanceledException` -- if the task is Faulted then the sequence will error with the task's inner exception -- if the task has not yet completed, then a continuation is added to the task to perform the above actions appropriately +Although they are conceptually similar, `Task` does a few things differently in the details. For example, you can retrieve its [`Status` property](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task.status), which might report that it is in a cancelled or faulted state. `IObservable` doesn't provide a way to ask a source for its state; it just tells you things. So `ToObservable` makes some decisions about how to present status in a way that makes makes sense in an Rx world: -There are two reasons to use the extension method: +- if the task is [Cancelled](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.taskstatus#system-threading-tasks-taskstatus-canceled), `IObservable` invoke a subscriber's `OnError` passing a `TaskCanceledException` +- if the task is [Faulted](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.taskstatus#system-threading-tasks-taskstatus-faulted) then the sequence will error with the task's inner exception +- if the task is not yet in a final state (neither [Cancelled](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.taskstatus#system-threading-tasks-taskstatus-canceled), [Faulted](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.taskstatus#system-threading-tasks-taskstatus-faulted), or [RanToCompletion](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.taskstatus#system-threading-tasks-taskstatus-rantocompletion)), the `IObservable` will not produce any notifications until such time as the task does enter one of these final states -- From Framework 4.5, almost all I/O-bound functions return `Task` -- If `Task` is a good fit, it's preferable to use it over `IObservable` - because it communicates single-value result in the type system. +It does not matter whether the task is already in a final state at the moment that you call `ToObservable`. If it has finished, `ToObservable` will just return a sequence representing that state. (In fact, it uses either the `Return` or `Throw` creation methods you saw earlier.) If the task has not yet finished, `ToObservable` will attach a continuation to the task to detect the outcome once it does complete. -In other words, a function that returns a single value in the future should return a `Task`, not an `IObservable`. Then if you need to combine it with other observables, use `ToObservable()`. +Tasks come in two forms: `Task`, which produces a result, and `Task`, which does not. But in Rx, there is only `IObservable`—there isn't a no-result form. We've already seen this problem once before, when the `Observable.Start` method needed to be able to [adapt a delegate as an `IObservable`](#from-delegates) even when the delegate was an `Action` that produced no result. The solution was to return an `IObservable`, and that's also exactly what you get when you call `ToObservable` on a `Task`. -Usage of the extension method is also simple. +The extension method is simple to use: ```csharp -var t = Task.Factory.StartNew(()=>"Test"); +var t = Task.Factory.StartNew(() => "Test"); var source = t.ToObservable(); source.Subscribe( Console.WriteLine, @@ -836,15 +845,15 @@ Test completed ``` -There is also an overload that converts a `Task` (non generic) to an `IObservable`. - ### From IEnumerable<T> -The final overload of `ToObservable` takes an `IEnumerable`. This is semantically like a helper method for an `Observable.Create` with a `foreach` loop in it. +Rx defines another extension method called `ToObservable`, this time for `IEnumerable`. In earlier chapters I described how `IObserable` was designed to represent the same basic abstraction as `IEnumerable`, with the only difference being the mechanism we use to obtain the elements in the sequence: with `IEnumerable`, we write code that _pulls_ values out of the collection (e.g., a `foreach` loop), whereas `IObservable` _pushes_ values to us by invoking `OnNext` on our `IObserver`. + +We could write code that bridges from _pull_ to _push_: ```csharp -// Example code only -public static IObservable ToObservable(this IEnumerable source) +// Example code only - do not use! +public static IObservable ToObservableOversimplified(this IEnumerable source) { return Observable.Create(o => { @@ -853,409 +862,257 @@ public static IObservable ToObservable(this IEnumerable source) o.OnNext(item); } - // Incorrect disposal pattern + o.OnComplete(); + + // Incorrectly ignoring unsubscription. return Disposable.Empty; }); } ``` -This crude implementation however is naive. It does not allow for correct disposal, it does not handle exceptions correctly and as we will see later in the book, it does not have a very nice concurrency model. The version in Rx of course caters for all of these tricky details so you don't need to worry. +This crude implementation conveys the basic idea, but it is naive. It does not attempt to handle unsubscription, and it's not easy to fix that when using `Observable.Create` for this particular scenario. And as we will see later in the book, it does not have a very nice concurrency model. The implementation that Rx supplies does of course cater for all of these tricky details. That makes it rather more complex, but that's Rx's problem; you can think of it as being logically equivalent to the code shown above, but without the shortcomings. -When transitioning from `IEnumerable` to `IObservable`, you should carefully consider what you are really trying to achieve. You should also carefully test and measure the performance impacts of your decisions. Consider that the blocking synchronous (pull) nature of `IEnumerable` sometimes just does not mix well with the asynchronous (push) nature of `IObservable`. Remember that it is completely valid to pass `IEnumerable`, `IEnumerable`, arrays or collections as the data type for an observable sequence. If the sequence can be materialized all at once, then you may want to avoid exposing it as an `IEnumerable`. If this seems like a fit for you then also consider passing immutable types like an array or a `ReadOnlyCollection`. We will see the use of `IObservable>` later for operators that provide batching of data. +When transitioning from `IEnumerable` to `IObservable`, you should carefully consider what you are really trying to achieve. Consider that the blocking synchronous (pull) nature of `IEnumerable` does always not mix well with the asynchronous (push) nature of `IObservable`. As soon as something subscribes to an `IObservable` created in this way, it is effectively asking to iterate over the `IEnumerable`, immediately producing all of the values. The call to `Subscribe` might not return until it has reached the end of the `IEnumerable`, making it similar to the very simple example shown [at the start of this chapter](#a-very-basic-iobservablet-implementation). (I say "might" because as we'll see when we get to schedulers, the exact behaviour depends on the context.) `ToObservable` can't work magic—something somewhere has to execute what amounts to a `foreach` loop. -### From APM +So although this can be a convenient way to bring sequences of data into an Rx world, you should carefully test and measure the performance impact. -Finally we look at a set of overloads that take you from the [Asynchronous Programming Model](http://msdn.microsoft.com/en-us/magazine/cc163467.aspx) (APM) to an observable sequence. This is the style of programming found in .NET that can be identified with the use of two methods prefixed with `Begin...` and `End...` and the iconic `IAsyncResult` parameter type. This is commonly seen in the I/O APIs. -```csharp -class webrequest -{ - public webresponse getresponse() - {...} - - public iasyncresult begingetresponse( - asynccallback callback, - object state) - {...} - - public webresponse endgetresponse(iasyncresult asyncresult) - {...} - ... -} -class stream -{ - public int read( - byte[] buffer, - int offset, - int count) - {...} - - public iasyncresult beginread( - byte[] buffer, - int offset, - int count, - asynccallback callback, - object state) - {...} - - public int endread(iasyncresult asyncresult) - {...} - ... -} -``` - -> At time of writing .NET 4.5 was still in preview release. Moving forward with .NET 4.5 the APM model will be replaced with `Task` and new `async` and `await` keywords. Rx 2.0 which is also in a beta release will integrate with these features. .NET 4.5 and Rx 2.0 are not in the scope of this book. - -APM, or the Async Pattern, has enabled a very powerful, yet clumsy way of for .NET programs to perform long running I/O bound work. If we were to use the synchronous access to IO, e.g. `WebRequest.GetResponse()` or `Stream.Read(...)`, we would be blocking a thread but not performing any work while we waited for the IO. This can be quite wasteful on busy servers performing a lot of concurrent work to hold a thread idle while waiting for I/O to complete. Depending on the implementation, APM can work at the hardware device driver layer and not require any threads while blocking. Information on how to follow the APM model is scarce. Of the documentation you can find it is pretty shaky, however, for more information on APM, see Jeffrey Richter's brilliant book CLR via C# or Joe Duffy's comprehensive Concurrent Programming on Windows. Most stuff on the internet is blatant plagiary of Richter's examples from his book. An in-depth examination of APM is outside of the scope of this book. - -To utilize the Asynchronous Programming Model but avoid its awkward API, we can use the `Observable.FromAsyncPattern` method. Jeffrey van Gogh gives a brilliant walk through of the `Observable.FromAsyncPattern` in [Part 1](http://blogs.msdn.com/b/jeffva/archive/2010/07/23/rx-on-the-server-part-1-of-n-asynchronous-system-io-stream-reading.aspx) of his Rx on the Server blog series. While the theory backing the Rx on the Server series is sound, it was written in mid 2010 and targets an old version of Rx. - -With 30 overloads of `Observable.FromAsyncPattern` we will look at the general concept so that you can pick the appropriate overload for yourself. First if we look at the normal pattern of APM we will see that the BeginXXX method will take zero or more data arguments followed by an `AsyncCallback` and an `Object`. The BeginXXX method will also return an `IAsyncResult` token. - -```csharp -// Standard Begin signature -IAsyncResult BeginXXX(AsyncCallback callback, Object state); - -// Standard Begin signature with data -IAsyncResult BeginYYY(string someParam1, AsyncCallback callback, object state); -``` - -The EndXXX method will accept an `IAsyncResult` which should be the token returned from the BeginXXX method. The EndXXX can also return a value. - -```csharp -// Standard EndXXX Signature -void EndXXX(IAsyncResult asyncResult); - -// Standard EndXXX Signature with data -int EndYYY(IAsyncResult asyncResult); -``` +### From APM -The generic arguments for the `FromAsyncPattern` method are just the BeginXXX data arguments if any, followed by the EndXXX return type if any. If we apply that to our `Stream.Read(byte[], int, int, AsyncResult, object)` example above we see that we have a `byte[]`, an `int` and another `int` as our data parameters for `BeginRead` method. +Rx provides support for the ancient [.NET Asynchronous Programming Model (APM)](https://learn.microsoft.com/en-us/dotnet/standard/asynchronous-programming-patterns/asynchronous-programming-model-apm). Back in .NET 1.0, this was the only pattern for representing asynchronous operations. It was superseded in 2010 when .NET 4.0 introduced the [Task-based Asynchronous Pattern (TAP)](https://learn.microsoft.com/en-us/dotnet/standard/asynchronous-programming-patterns/task-based-asynchronous-pattern-tap). The old APM offers no benefits over the TAP. Moreover, C#'s `async` and `await` keywords (and equivalents in other .NET languages) only support the TAP, meaning that the APM is best avoided. However, the TAP was fairly new back in 2011 when Rx 1.0 was released, so it offered adapters for presenting an APM implementation as an `IObservable`. -```csharp - // IAsyncResult BeginRead( - // byte[] buffer, - // int offset, - // int count, - // AsyncCallback callback, object state) {...} - Observable.FromAsyncPattern -``` +The result of the call to `Observable.FromAsyncPattern` does _not_ return an observable sequence. It returns a delegate that returns an observable sequence. (So it is essentially a factory factory) The signature for this delegate will match the generic arguments of the call to `FromAsyncPattern`, except that the return type will be wrapped in an observable sequence. The following example wraps the `Stream` class's `BeginRead`/`EndRead` methods (which are an implementation of the APM). -The result of the call to `Observable.FromAsyncPattern` does _not_ return an observable sequence. It returns a delegate that returns an observable sequence. The signature for this delegate will match the generic arguments of the call to `FromAsyncPattern`, except that the return type will be wrapped in an observable sequence. +**Note**: this is purely to illustrate how to wrap the APM. You would never do this in practice because `Stream` has supported the TAP for years. ```csharp +Stream stream = GetStreamFromSomewhere(); var fileLength = (int) stream.Length; -// read is a Func> -var read = Observable.FromAsyncPattern( + +Func> read = Observable.FromAsyncPattern( stream.BeginRead, stream.EndRead); var buffer = new byte[fileLength]; -var bytesReadStream = read(buffer, 0, fileLength); +IObservable bytesReadStream = read(buffer, 0, fileLength); bytesReadStream.Subscribe(byteCount => { Console.WriteLine("Number of bytes read={0}, buffer should be populated with data now.", byteCount); }); ``` -Note that this implementation is just an example. For a very well designed implementation that is built against the latest version of Rx you should look at the Rxx project on [https://github.com/dotnet/reactive](https://github.com/dotnet/reactive). - -This covers the first classification of query operators: creating observable sequences. We have looked at the various eager and lazy ways to create a sequence. We have introduced the concept of corecursion and show how we can use it with the `Generate` method to unfold potentially infinite sequences. We can now produce timer based sequences using the various factory methods. We should also be familiar with ways to transition from other synchronous and asynchronous paradigms and be able to decide when it is or is not appropriate to do so. +## Subjects -As a quick recap: +So far, this chapter has explored various factory methods that return `IObservable` implementations. There is another way though: `System.Reactive` defines various types that implement `IObservable` that we can instantiate directly. But how do we determine what values these types produce? We're able to do that because they also implement `IObserver`. -- Factory Methods - - Observable.Return - - Observable.Empty - - Observable.Never - - Observable.Throw - - Observable.Create +Types that implement both `IObservable` and `IObserver` are called _subjects_ in Rx. There's an an `ISubject` to represent this. (This is in the `System.Reactive` NuGet package, unlike `IObservable` and `IObserver`, which are both built into the .NET runtime libraries.) `ISubject` looks like this: -- Unfold methods - - Observable.Range - - Observable.Interval - - Observable.Timer - - Observable.Generate +```cs +public interface ISubject : ISubject +{ +} +``` -- Paradigm Transition - - Observable.Start - - Observable.FromEventPattern - - Task.ToObservable - - Task<T>.ToObservable - - IEnumerable<T>.ToObservable - - Observable.FromAsyncPattern +So it turns out there's also a two-argument `ISubject` to accommodate the fact that something that is both an observer and an observable might transform the data that flows through it in some way, meaning that the input and output types are not necessarily the same. Here's the two-type-argument definition: -Creating an observable sequence is our first step to practical application of Rx: create the sequence and then expose it for consumption. Now that we have a firm grasp on how to create an observable sequence, we can discover the operators that allow us to query an observable sequence. +```cs +public interface ISubject : IObserver, IObservable +{ +} +``` +As you can see the `ISubject` interfaces don't define any members of their own. They just inherit from `IObserver` and `IObservable`—these interfaces are nothing more than a direct expression of the fact that a subject is both an observer and an observable. +But what is this for? You can think of the `IObserver` and the `IObservable` as the 'reader' and 'writer' or, 'consumer' and 'publisher' interfaces respectively. A subject, then is both a reader and a writer, a consumer and a publisher. Data flows both into and out of a subject. -## Subject +Rx offers a few subject implementations that can occasionally be useful in code that wants to make an `IObservable` available. Although `Observable.Create` is usually the preferred way to do this, there's one important case where a subject might make more sense: if you have some code that discovers events of interest (e.g., by using the client API for some messaging technology) and wants to make them available through an `IObservable`, subjects can sometimes provide a more convenient way to to this than wither `Observable.Create` or a custom implementation. -TODO: move this into a separate chapter? I'm not convinced all the subject types are really intro stuff. `Subject` is useful, but the rest? - -I like to think of the `IObserver` and the `IObservable` as the 'reader' and 'writer' or, 'consumer' and 'publisher' interfaces. If you were to create your own implementation of `IObservable` you may find that while you want to publicly expose the IObservable characteristics you still need to be able to publish items to the subscribers, throw errors and notify when the sequence is complete. Why that sounds just like the methods defined in `IObserver`! While it may seem odd to have one type implementing both interfaces, it does make life easy. This is what [subjects](http://msdn.microsoft.com/en-us/library/hh242969(v=VS.103).aspx "Using Rx Subjects - MSDN") can do for you. [`Subject`](http://msdn.microsoft.com/en-us/library/hh229173(v=VS.103).aspx "Subject(Of T) - MSDN") is the most basic of the subjects. Effectively you can expose your `Subject` behind a method that returns `IObservable` but internally you can use the `OnNext`, `OnError` and `OnCompleted` methods to control the sequence. +Rx offers a few subject types. We'll start with the most straightforward one to understand. -In this very basic example, I create a subject, subscribe to that subject and then publish values to the sequence (by calling `subject.OnNext(T)`). +### Subject -```csharp -static void Main(string[] args) -{ - var subject = new Subject(); - WriteSequenceToConsole(subject); +The `Subject` type immediately forwards any calls to `IObserver` methods on to all of the observers currently subscribed to it. This example shows its basic operation: - subject.OnNext("a"); - subject.OnNext("b"); - subject.OnNext("c"); - Console.ReadKey(); -} +```cs +Subject s = new(); +s.Subscribe(x => Console.WriteLine($"Sub1: {x}")); +s.Subscribe(x => Console.WriteLine($"Sub2: {x}")); -// Takes an IObservable as its parameter. -// Subject implements this interface. -static void WriteSequenceToConsole(IObservable sequence) -{ - // The next two lines are equivalent. - // sequence.Subscribe(value=>Console.WriteLine(value)); - sequence.Subscribe(Console.WriteLine); -} +s.OnNext(1); +s.OnNext(2); +s.OnNext(3); ``` -Note that the `WriteSequenceToConsole` method takes an `IObservable` as it only wants access to the subscribe method. Hang on, doesn't the `Subscribe` method need an `IObserver` as an argument? Surely `Console.WriteLine` does not match that interface. Well it doesn't, but the Rx team supply me with an Extension Method to `IObservable` that just takes an [`Action`](http://msdn.microsoft.com/en-us/library/018hxwa8.aspx "Action(Of T) Delegate - MSDN"). The action will be executed every time an item is published. There are [other overloads to the Subscribe extension method](http://msdn.microsoft.com/en-us/library/system.observableextensions(v=VS.103).aspx "ObservableExtensions class - MSDN") that allows you to pass combinations of delegates to be invoked for `OnNext`, `OnCompleted` and `OnError`. This effectively means I don't need to implement `IObserver`. Cool. +I've created a `Subject`. I've subscribed to it twice, and then called its `OnNext` method repeatedly. This produces the following output, illustrating that the `Subject` forwards each `OnNext` call onto both subscribers: -As you can see, `Subject` could be quite useful for getting started in Rx programming. `Subject` however, is a basic implementation. There are three siblings to `Subject` that offer subtly different implementations which can drastically change the way your program runs. - - - -## ReplaySubject +``` +Sub1: 1 +Sub2: 1 +Sub1: 2 +Sub2: 2 +Sub1: 3 +Sub2: 3 +``` -[`ReplaySubject`](http://msdn.microsoft.com/en-us/library/hh211810(v=VS.103).aspx "ReplaySubject(Of T) - MSDN") provides the feature of caching values and then replaying them for any late subscriptions. Consider this example where we have moved our first publication to occur before our subscription +We could use this as a way to bridge between some API from which we receive data into the world of Rx. You could imagine writing something of this kind: -```csharp -static void Main(string[] args) +```cs +public class MessageQueueToRx : IDisposable { - var subject = new Subject(); + private readonly Subject messages = new(); + + public IObservable Messages => messages; - subject.OnNext("a"); - WriteSequenceToConsole(subject); + public void Run() + { + while (true) + { + // Receive a message from some hypothetical message queuing service + string message = MqLibrary.ReceiveMessage(); + messages.OnNext(message); + } + } - subject.OnNext("b"); - subject.OnNext("c"); - Console.ReadKey(); + public void Dispose() + { + message.Dispose(); + } } ``` -The result of this would be that 'b' and 'c' would be written to the console, but 'a' ignored. -If we were to make the minor change to make subject a `ReplaySubject` we would see all publications again. +It wouldn't be too hard to modify this to use `Observable.Create` instead. But where this approach can become easier is if you need to provide multiple different `IObservable` sources. Imagine we distinguish between different message types based on their content, and publish them through different observables. That's hard to arrange with `Observable.Create` if we still want a single loop pulling messages off the queue. -```csharp -var subject = new ReplaySubject(); +`Subject` also distributes calls to either `OnCompleted` or `OnError` to all subscribers. Of course, the rules of Rx require that once you have called either of these methods on an `IObserver` (and any `ISubject` is an `IObserver`, so this rule applies to `Subject`) you must not call `OnNext`, `OnError`, or `OnComplete` on that observer ever again. In fact, `Subject` will tolerate calls that break this rule—it just ignores them, so even if your code doesn't quite stick to these rules internally, the `IObservable` you present to the outside world will behave correctly, because Rx enforces this. -subject.OnNext("a"); -WriteSequenceToConsole(subject); +`Subject` implements `IDisposable`. Disposing a `Subject` puts it into a state where it will throw an exception if you call any of its methods. The documentation also describes it as unsubscribing all observers, but since a disposed `Subject` isn't capable of producing any further notifications in any case, this doesn't really mean much. (Note that it does _not_ call `OnCompleted` on its observers when you `Dispose` it.) The one practical effect is that its internal field that keeps track of observers is reset to a special sentinel value indicating that it has been disposed, meaning that the one externally observable effect of "unsubscribing" the observers is that if, for some reason, your code held onto a reference to a `Subject` after disposing it, that would no longer keep all the subscribers reachable for GC purposes. If a `Subject` remains reachable indefinitely after it is no longer in use, that in itself is effectively a memory leak, but disposal would at least limit the effects: only the `Subject` itself would remain reachable, and not all of its subscribers. -subject.OnNext("b"); -subject.OnNext("c"); -``` +`Subject` is the most straightforward subject, but there are other, more specialized ones. -This can be very handy for eliminating race conditions. Be warned though, the default constructor of the `ReplaySubject` will create an instance that caches every value published to it. In many scenarios this could create unnecessary memory pressure on the application. `ReplaySubject` allows you to specify simple cache expiry settings that can alleviate this memory issue. One option is that you can specify the size of the buffer in the cache. In this example we create the `ReplaySubject` with a buffer size of 2, and so only get the last two values published prior to our subscription: +## ReplaySubject -```csharp -public void ReplaySubjectBufferExample() -{ - var bufferSize = 2; - var subject = new ReplaySubject(bufferSize); - - subject.OnNext("a"); - subject.OnNext("b"); - subject.OnNext("c"); - subject.Subscribe(Console.WriteLine); - subject.OnNext("d"); -} -``` +`Subject` does not remember anything: it immediately distributes incoming values to subscribers. If new subscribers come along, they will only see events that occur after they subscribe. `ReplaySubject`, on the other hand, can remember every value it has ever seen. If a new subject comes along, it will receive the complete history of events so far. -Here the output would show that the value 'a' had been dropped from the cache, but values 'b' and 'c' were still valid. The value 'd' was published after we subscribed so it is also written to the console. +This is a variation on the first example in the preceding [Subject section](#subject). It creates a `ReplaySubject` instead of a `Subject`. And instead of immediately subscribing twice, it creates an initial subscription, and then a second one only after a couple of values have been emitted. -``` -Output: -b -c -d -``` +```cs +ReplaySubject s = new(); +s.Subscribe(x => Console.WriteLine($"Sub1: {x}")); -Another option for preventing the endless caching of values by the `ReplaySubject`, is to provide a window for the cache. In this example, instead of creating a `ReplaySubject` with a buffer size, we specify a window of time that the cached values are valid for. +s.OnNext(1); +s.OnNext(2); -```csharp -public void ReplaySubjectWindowExample() -{ - var window = TimeSpan.FromMilliseconds(150); - var subject = new ReplaySubject(window); - - subject.OnNext("w"); - Thread.Sleep(TimeSpan.FromMilliseconds(100)); - subject.OnNext("x"); - Thread.Sleep(TimeSpan.FromMilliseconds(100)); - subject.OnNext("y"); - subject.Subscribe(Console.WriteLine); - subject.OnNext("z"); -} +s.Subscribe(x => Console.WriteLine($"Sub2: {x}")); + +s.OnNext(3); ``` -In the above example the window was specified as 150 milliseconds. Values are published 100 milliseconds apart. Once we have subscribed to the subject, the first value is 200ms old and as such has expired and been removed from the cache. +This produces the following output: ``` -Output: -x -y -z +Sub1: 1 +Sub1: 2 +Sub2: 1 +Sub2: 2 +Sub1: 3 +Sub2: 3 ``` -## BehaviorSubject - -[`BehaviorSubject`](http://msdn.microsoft.com/en-us/library/hh211949(v=VS.103).aspx "BehaviorSubject(Of T) - MSDN") is similar to `ReplaySubject` except it only remembers the last publication. `BehaviorSubject` also requires you to provide it a default value of `T`. This means that all subscribers will receive a value immediately (unless it is already completed). - -In this example the value 'a' is written to the console: +As you'd expect, we initially see output only from `Sub1`. But when we make the second call to subscribe, we can see that `Sub2` also received the first two values. And then when we report the third value, both see it. If this example had used `Subject` instead, we would have seen just this output: -```csharp -public void BehaviorSubjectExample() -{ - //Need to provide a default value. - var subject = new BehaviorSubject("a"); - subject.Subscribe(Console.WriteLine); -} +``` +Sub1: 1 +Sub1: 2 +Sub1: 3 +Sub2: 3 ``` -In this example the value 'b' is written to the console, but not 'a'. +There's an obvious potential problem here: if `ReplaySubject` remembers every value published to it, we mustn't use with endless event sources, because it will eventually cause us to run out of memory. -```csharp -public void BehaviorSubjectExample2() -{ - var subject = new BehaviorSubject("a"); - subject.OnNext("b"); - subject.Subscribe(Console.WriteLine); -} -``` +`ReplaySubject` offers constructors that accept simple cache expiry settings that can limit memory consumption. One option is to specify the maximum number of item to remember. This next example creates a `ReplaySubject` with a buffer size of 2: -In this example the values 'b', 'c' & 'd' are all written to the console, but again not 'a' +```csharp +ReplaySubject s = new(2); +s.Subscribe(x => Console.WriteLine($"Sub1: {x}")); -```csharp -public void BehaviorSubjectExample3() -{ - var subject = new BehaviorSubject("a"); +s.OnNext(1); +s.OnNext(2); +s.OnNext(3); - subject.OnNext("b"); - subject.Subscribe(Console.WriteLine); - subject.OnNext("c"); - subject.OnNext("d"); -} +s.Subscribe(x => Console.WriteLine($"Sub2: {x}")); + +s.OnNext(4); ``` -Finally in this example, no values will be published as the sequence has completed. Nothing is written to the console. +Since the second subscription only comes along after we've already produced 3 values, it no longer sees all of them—it only receives the last two values published prior to subscription (but the first subscription continues to see everything of course): -```csharp -public void BehaviorSubjectCompletedExample() -{ - var subject = new BehaviorSubject("a"); - subject.OnNext("b"); - subject.OnNext("c"); - subject.OnCompleted(); - subject.Subscribe(Console.WriteLine); -} +``` +Sub1: 1 +Sub1: 2 +Sub1: 3 +Sub2: 2 +Sub2: 3 +Sub1: 4 +Sub2: 4 ``` -That note that there is a difference between a `ReplaySubject` with a buffer size of one (commonly called a 'replay one subject') and a `BehaviorSubject`. A `BehaviorSubject` requires an initial value. With the assumption that neither subjects have completed, then you can be sure that the `BehaviorSubject` will have a value. You cannot be certain with the `ReplaySubject` however. With this in mind, it is unusual to ever complete a `BehaviorSubject`. Another difference is that a replay-one-subject will still cache its value once it has been completed. So subscribing to a completed `BehaviorSubject` we can be sure to not receive any values, but with a `ReplaySubject` it is possible. +Alternatively, you can specify a time-based limit by passing a `TimeSpan to the `ReplaySubject` constructor. -`BehaviorSubject`s are often associated with class [properties](http://msdn.microsoft.com/en-us/library/65zdfbdt(v=vs.71).aspx). -As they always have a value and can provide change notifications, they could be candidates for backing fields to properties. -## AsyncSubject +## BehaviorSubject -[`AsyncSubject`](http://msdn.microsoft.com/en-us/library/hh229363(v=VS.103).aspx "AsyncSubject(Of T) - MSDN") is similar to the Replay and Behavior subjects in the way that it caches values, however it will only store the last value, and only publish it when the sequence is completed. The general usage of the `AsyncSubject` is to only ever publish one value then immediately complete. This means that is becomes quite comparable to `Task`. +Like `ReplaySubject`, `BehaviorSubject` also has a memory, but it remembers exactly one value. However, it's not quite the same as a `ReplaySubject` with a buffer size of 1, because a `ReplaySubject` starts off in a state where it has nothing in its memory. But `BehaviorSubject` always remembers _exactly_ one item. How can that work before we've made our first call to `OnNext`? `BehaviorSubject` enforces this by requiring us to supply the initial value when we construct it. -In this example no values will be published as the sequence never completes. -No values will be written to the console. +So you can think of `BehaviorSubject` as a subject that _always_ has a value available. If you subscribe to a `BehaviorSubject` it will instantly produce a single value. (It may then go on to produce more values, but it always produces one right away.) As it happens, it also makes that value available through a property called `Value`, so you don't need to subscribe an `IObserver` to it just to retrieve the value. -```csharp -static void Main(string[] args) -{ - var subject = new AsyncSubject(); - subject.OnNext("a"); - WriteSequenceToConsole(subject); - subject.OnNext("b"); - subject.OnNext("c"); - Console.ReadKey(); -} -``` +A `BehaviorSubject` could be thought of an as observable property. Like a normal property, it can immediately supply a value whenever you ask it. The difference is that it can then go on to notify you every time its value changes. -In this example we invoke the `OnCompleted` method so the last value 'c' is written to the console: +This analogy falls down slightly when it comes to completion. If you call `OnCompleted`, it immediately calls `OnCompleted` on all of its observers, and if any new observers subscribe, they will also immediately be completed—it does not first supply the last value. (So this is another way in which it is different from a `ReplaySubject` with a buffer size of 1.) -```csharp -static void Main(string[] args) -{ - var subject = new AsyncSubject(); - - subject.OnNext("a"); - WriteSequenceToConsole(subject); - subject.OnNext("b"); - subject.OnNext("c"); - subject.OnCompleted(); - Console.ReadKey(); -} -``` +Simlarly, if you call `OnError`, all current observers will receive an `OnError` call, and any subsequent subscribers will also receive nothing but an `OnError` call. +backing fields to properties. -## Implicit contracts +## AsyncSubject -There are implicit contacts that need to be upheld when working with Rx as mentioned above. The key one is that once a sequence is completed, no more activity can happen on that sequence. A sequence can be completed in one of two ways, either by `OnCompleted()` or by `OnError(Exception)`. +`AsyncSubject` provides all observers with the final value it receives. Since it can't know which is the final value until `OnCompleted` is called, it will not invoke any methods on any of its subscribers until either its `OnCompleted` or `OnError` method is called. (If `OnError` is called, it just forwards that to all current and future subscribers.) -The four subjects described in this chapter all cater for this implicit contract by ignoring any attempts to publish values, errors or completions once the sequence has already terminated. +If no calls were made to `OnNext` before `OnCompleted` then there was no final value, so it will just complete any observers without providing a value. -Here we see an attempt to publish the value 'c' on a completed sequence. Only values 'a' and 'b' are written to the console. +In this example no values will be published as the sequence never completes. +No values will be written to the console. ```csharp -public void SubjectInvalidUsageExample() -{ - var subject = new Subject(); - - subject.Subscribe(Console.WriteLine); - - subject.OnNext("a"); - subject.OnNext("b"); - subject.OnCompleted(); - subject.OnNext("c"); -} +AsyncSubject subject = new(); +subject.OnNext("a"); +subject.Subscribe(x => Console.WriteLine($"Sub1: {x}")); +subject.OnNext("b"); +subject.OnNext("c"); ``` -## ISubject interfaces - -While each of the four subjects described in this chapter implement the `IObservable` and `IObserver` interfaces, they do so via another set of interfaces: +In this example we invoke the `OnCompleted` method so there will be a final value ('c') for the subject to produce: ```csharp -//Represents an object that is both an observable sequence as well as an observer. -public interface ISubject - : IObserver, IObservable -{ -} +AsyncSubject subject = new(); + +subject.OnNext("a"); +subject.Subscribe(x => Console.WriteLine($"Sub1: {x}")); +subject.OnNext("b"); +subject.OnNext("c"); +subject.OnCompleted(); +subject.Subscribe(x => Console.WriteLine($"Sub2: {x}")); ``` -As all the subjects mentioned here have the same type for both `TSource` and `TResult`, they implement this interface which is the superset of all the previous interfaces: +This produces the following output: -```csharp -//Represents an object that is both an observable sequence as well as an observer. -public interface ISubject : ISubject, IObserver, IObservable -{ -} +``` +Sub1: c +Sub2: c ``` -These interfaces are not widely used, but prove useful as the subjects do not share a common base class. We will see the subject interfaces used later when we discover [Hot and cold observables](14_HotAndColdObservables.html). + ## Subject factory @@ -1265,44 +1122,39 @@ Finally it is worth making you aware that you can also create a subject via a fa //Creates a subject from the specified observer used to publish messages to the subject // and observable used to subscribe to messages sent from the subject public static ISubject>TSource, TResult< Create>TSource, TResult<( - IObserver>TSource< observer, - IObservable>TResult< observable) + IObserver observer, + IObservable observable) {...} ``` -Subjects provide a convenient way to poke around Rx, however they are not recommended for day to day use. An explanation is in the [Usage Guidelines](18_UsageGuidelines.md) in the appendix. Instead of using subjects, favor the factory methods we will look at in [Part 2](04_CreatingObservableSequences.md). - -The fundamental types `IObserver` and `IObservable` and the auxiliary subject types create a base from which to build your Rx knowledge. It is important to understand these simple types and their implicit contracts. In production code you may find that you rarely use the `IObserver` interface and subject types, but understanding them and how they fit into the Rx eco-system is still important. The `IObservable` interface is the dominant type that you will be exposed to for representing a sequence of data in motion, and therefore will comprise the core concern for most of your work with Rx and most of this book. - +Subjects provide a convenient way to poke around Rx, and are occasionally useful in production scenarios, but they are not recommended for most cases. An explanation is in the [Usage Guidelines](18_UsageGuidelines.md) in the appendix. Instead of using subjects, favour the factory methods shown earlier in this chapter.. -... +## Summary -weird bit from Observable.Return - -```csharp -var singleValue = Observable.Return("Value"); +We have looked at the various eager and lazy ways to create a sequence. We have seen how to produce timer based sequences using the various factory methods. And we've also explored ways to transition from other synchronous and asynchronous representations. -// which could have also been simulated with a replay subject -var subject = new ReplaySubject(); -subject.OnNext("Value"); -subject.OnCompleted(); -``` - -Note that in the example above that we could use the factory method or get the same effect by using the replay subject. The obvious difference is that the factory method is only one line and it allows for declarative over imperative programming style. In the example above we specified the type parameter as `string`, this is not necessary as it can be inferred from the argument provided. - -```csharp -singleValue = Observable.Return("Value"); -// Can be reduced to the following -singleValue = Observable.Return("Value"); -``` - -... +As a quick recap: -From Observable.Create: +- Factory Methods + - Observable.Return + - Observable.Empty + - Observable.Never + - Observable.Throw + - Observable.Create -The usage of subjects should largely remain in the realms of samples and testing. Subjects are a great way to get started with Rx. They reduce the learning curve for new developers, however they pose several concerns that the `Create` method eliminates. Rx is effectively a functional programming paradigm. Using subjects means we are now managing state, which is potentially mutating. Mutating state and asynchronous programming are very hard to get right. Furthermore many of the operators (extension methods) have been carefully written to ensure correct and consistent lifetime of subscriptions and sequences are maintained. When you introduce subjects you can break this. Future releases may also see significant performance degradation if you explicitly use subjects. +- Generative methods + - Observable.Range + - Observable.Interval + - Observable.Timer + - Observable.Generate +- Adaptation + - Observable.Start + - Observable.FromEventPattern + - Task.ToObservable + - Task<T>.ToObservable + - IEnumerable<T>.ToObservable + - Observable.FromAsyncPattern -.. -A significant benefit that the `Create` method has over subjects is that the sequence will be lazily evaluated. Lazy evaluation is a very important part of Rx. It opens doors to other powerful features such as scheduling and combination of sequences that we will see later. The delegate will only be invoked when a subscription is made. +Creating an observable sequence is our first step to practical application of Rx: create the sequence and then expose it for consumption. Now that we have a firm grasp on how to create an observable sequence, we can look in more detail at the operators that allow us to describe processing to be applied, to build up more complex observable sequences. \ No newline at end of file From 32fa630821bcbaf045c60163f771269930a902fd Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Mon, 12 Jun 2023 08:13:24 +0100 Subject: [PATCH 009/142] Add hot/cold section to Key Types --- content/02_KeyTypes.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/content/02_KeyTypes.md b/content/02_KeyTypes.md index f27c6ce..d5fc717 100644 --- a/content/02_KeyTypes.md +++ b/content/02_KeyTypes.md @@ -70,6 +70,30 @@ public static IDisposable Subscribe(this IObservable source, Action onN This is a helper method that wraps a delegate in an implementation of `IObserver` and then passes that to `IObservable.Subscribe`. The effect is that we can write just a simple method (instead of a complete implementation of `IObserver`) and the observable source will invoke our callback each time it wants to supply a value. +### Hot and Cold Sources + +Since an `IObservable` cannot supply us with values until we subscribe, the time at which we subscribe can be important. Imagine an `IObservable` describing trades occurring in some market. If the information it supplies is live, it's not going to tell you about any trades that occurred before you subscribed. In Rx, sources of this kind are described as being _hot_. + +Not all sources are _hot_. There's nothing stopping an `IObservable` always supplying the exact same sequence of events to any subscriber no matter when the call to `Subscribe` occurs. (Imagine an `IObservable` which, instead of reporting live information, generates notifications based on recorded historical trade data.) Sources where it doesn't matter at all when you subscribe are known as _cold_ source. + +Not all sources are strictly completely _hot_ or _cold_. For example, you could imagine a slight variation on a live `IObservable` where the source always reports the most recent trade to new subscribers. Subscribers can count on immediately receiving something, and will then be kept up to date as new information arrives. The fact that new subscribers will always receive (potentially quite old) information is a _cold_-like characteristic, but it's only that first event that is _cold_—it's still likely that a brand new subscriber will have missed lots of information that would have been available to earlier subscribers, making this source more _hot_ than _cold_. + +There's an interesting special case in which a source of events has been designed to enable applications to receive every single event in order, exactly once. Event streaming systems such as Kafka or Azure Event Hub have this characteristic—they retain events for a while, to ensure that consumers don't miss out even if they fall behind from time to time. The standard input (_stdin_) for a process also has this characteristic: if you run a command line tool and start typing input before it is ready to process it, the operating system will hold that input in a buffer, to ensure that nothing is lost. Windows does something similar for desktop applications—each application thread gets a message queue so that if you click or type when it's not able to respond, the input will eventually be processed. We might think of these sources as _cold_-then-_host_. They're like _cold_ sources in that we won't miss anything just because it took us some time to start receiving events, but once we start retrieving the data, then we can't generally rewind back to the start. So once we're up and running they are more like _hot_ events. + +This kind of _cold_-then-_hot_ source can present a problem if we want to attach multiple subscribers. If the source starts providing events as soon as subscription occurs, then that's fine for the very first subscriber: it will receive any events that were backed up waiting for us to start. But if we wanted to attach multiple subscribers, we've got a problem: that first subscriber might receive all the notifications that were sitting waiting in some buffer before we manage to attach the second subscriber. The second subscriber will miss out. + +In these cases, we really want some way to rig up all our subscribers before kicking things off. We want subscription to be separate from the act of starting. By default, subscribing to a source implies that we want it to start, but rx defines a specialised interface that can give us more control: [`IConnectableObservable`](https://github.com/dotnet/reactive/blob/f4f727cf413c5ea7a704cdd4cd9b4a3371105fa8/Rx.NET/Source/src/System.Reactive/Subjects/IConnectableObservable.cs). This derives from `IObservable`, and adds just a single method, `Connect`: + +```cs +public interface IConnectableObservable : IObservable +{ + IDisposable Connect(); +} +``` + +This is useful in these scenarios where there will be some process that fetches or generates events and we need to make sure we're prepared before that starts. Because an `IConnectableObservable` won't start until you call `Connect`, it provides you with a way to attach however many subscribers you need before events begin to flow. + +The 'temperature' of a source is not necessarily evident from its type. Even when the underlying source is an `IConnectableObservable`, that can often be hidden behind layers of code. So whether a source is hot, cold, or something in between, most of the time we just see an `IObservable`. Since `IObservable` defines just one method, `Subscribe`, you might be wondering how we can do anything interesting with it. The power comes from the LINQ operators that the `System.Reactive` NuGet library supplies. ### LINQ Operators and Composition From ee34c18177e6c890a72c6658be34116f12b1fee1 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Mon, 12 Jun 2023 17:06:54 +0100 Subject: [PATCH 010/142] Add PART 2 break --- ...s.md => 03_CreatingObservableSequences.md} | 0 content/04_Part2.md | 10 +++ content/05_Filtering.md | 70 +++++++++++++++++-- 3 files changed, 76 insertions(+), 4 deletions(-) rename content/{04_CreatingObservableSequences.md => 03_CreatingObservableSequences.md} (100%) create mode 100644 content/04_Part2.md diff --git a/content/04_CreatingObservableSequences.md b/content/03_CreatingObservableSequences.md similarity index 100% rename from content/04_CreatingObservableSequences.md rename to content/03_CreatingObservableSequences.md diff --git a/content/04_Part2.md b/content/04_Part2.md new file mode 100644 index 0000000..f155e51 --- /dev/null +++ b/content/04_Part2.md @@ -0,0 +1,10 @@ +--- +title: PART 2 +--- + +# PART 2 - From Events to Insights + +We live in the information age. Data is being created, stored and distributed at a phenomenal rate. Consuming this data can be overwhelming, like trying to drink directly from a fire hose. We need the ability to identify the important data, meaning we need ways to determine what is and is not relevant. We need to take groups of data and process them collectively to discover patterns or other information that might not be apparent from any individual raw input. Users, customers and managers need you do this with more data than ever before, while still delivering higher performance and tighter deadlines. + +Rx provides some powerful mechanisms for extracting meaningful insights from raw data streams. This is one of the main reasons for representing information as `IObservable` streams in the first place. The preceding chapter showed how to create an observable sequence, so now we will look at how to exploit the power this has unlocked using the the various Rx methods that can process and transform an observable sequence. + diff --git a/content/05_Filtering.md b/content/05_Filtering.md index c0e274a..f47228a 100644 --- a/content/05_Filtering.md +++ b/content/05_Filtering.md @@ -1,12 +1,14 @@ --- -title : Reducing a sequence +title : Transforming Simple Sequences into Valuable Insights --- -# Reducing a sequence +TODO: this feels more like a "PART" heading and introduction, because it's not just this chapter that covers this ground. The next four chapters are really all connected with this. -We live in the information age. Data is being created, stored and distributed at a phenomenal rate. Consuming this data can be overwhelming, like trying to drink directly from the fire hose. We need the ability to pick out the data we need, choose what is and is not relevant, and roll up groups of data to make it relevant. Users, customers and managers need you do this with more data than ever before, while still delivering higher performance and tighter deadlines. +# Transforming Simple Sequences into Valuable Insights + + +TODO: this categorization feels a bit arbitrary. For one thing, aggregation and folding are the same thing. `Aggregate` is just LINQ's name for `fold`. The distinction being made here is a minor technical distinction: is the fold result emitted from an `IObservable` or returned directly as a `T`. That's really an operational distinction—it just provides two slightly different technical modes of consuming the same basic capability. -Given that we know how to create an observable sequence, we will now look at the various methods that can reduce an observable sequence. We can categorize operators that reduce a sequence to the following:
@@ -21,6 +23,66 @@ We can categorize operators that reduce a sequence to the following: Reduce the source sequence to a single element as a scalar value
+TODO contd...: so how do I want to categorise it? Maybe: + +* testing/discrimination/scrutinisation/picking + * where, ignoreelements (segue by pointing out that Where might filter out everything but will still forward end/error) + * OfType + * Skip/Take[While/Until] + * distinct + * First(OrDefault), Last(OrDefault), Single(OrDefault) + * DefaultIfEmpty + * ElementAt + +* transformation + * Select + * Cast + * SelectMany + * Materialize/Dematerialize +* aggregation + * to Boolean + * Any + * All + * Contains + * SequenceEqual + * To numeric + * Count + * Sum, Average + * Min(By), Max(By) + * Custom + * Aggregate + * Scan +* partitioning + * GroupBy + * Buffer + * Window +* combination + * Concat + * Repeat + * Zip + * CombineLatest + * StartWith (prepend) + * Append? + * merge + * join + * Amb + * Switch + * And/Then/When +* Error Handling + * Catch + * Finally + * Using + * Retry + * OnErrorResumeNext +* Timing + * TimeStamp TimeInterval + * Delay + * Sample + * Throttle + * Timeout + * (Buffer/Window again?) + + We discovered that the creation of an observable sequence from a scalar value is defined as _anamorphism_ or described as an _'unfold'_. We can think of the anamorphism from `T` to `IObservable` as an 'unfold'. This could also be referred to as "entering the monad" where in this case (and for most cases in this book) the monad is `IObservable`. What we will now start looking at are methods that eventually get us to the inverse which is defined as _catamorphism_ or a `fold`. Other popular names for fold are 'reduce', 'accumulate' and 'inject'. ## Where From b90523a6e2de8e8ee222fa0ff7906ef744065c63 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Thu, 15 Jun 2023 13:47:30 +0100 Subject: [PATCH 011/142] First full draft of Filtering --- content/04_Part2.md | 70 ++++ content/05_Filtering.md | 614 +++++++++++++------------------ content/07_Aggregation.md | 28 +- content/C_AlgebraicUnderpinnings | 9 + 4 files changed, 339 insertions(+), 382 deletions(-) create mode 100644 content/C_AlgebraicUnderpinnings diff --git a/content/04_Part2.md b/content/04_Part2.md index f155e51..eda6295 100644 --- a/content/04_Part2.md +++ b/content/04_Part2.md @@ -8,3 +8,73 @@ We live in the information age. Data is being created, stored and distributed at Rx provides some powerful mechanisms for extracting meaningful insights from raw data streams. This is one of the main reasons for representing information as `IObservable` streams in the first place. The preceding chapter showed how to create an observable sequence, so now we will look at how to exploit the power this has unlocked using the the various Rx methods that can process and transform an observable sequence. +Rx supports most of the standard LINQ operators. It also defines numerous additional operators. These fall broadly into categories, and each of the following chapters tackles one category: + +* [Filtering](./05_Filtering.md) +* [Transformation]() +* [Aggregation] +* [Partitioning] +* [Combination] +* [Error Handling] +* [Timing] + + +Notes: +* testing/discrimination/scrutinisation/picking + * where, ignoreelements (segue by pointing out that Where might filter out everything but will still forward end/error) + * OfType + * Skip/Take[While/Until] + * distinct + * First(OrDefault), Last(OrDefault), Single(OrDefault) + * DefaultIfEmpty + * ElementAt + +* transformation + * Select + * SelectMany + * Cast + * Materialize/Dematerialize +* aggregation + * to Boolean + * Any + * All + * Contains + * SequenceEqual + * To numeric + * Count + * Sum, Average + * Min(By), Max(By) + * Custom + * Aggregate + * Scan +* partitioning + * GroupBy + * Buffer + * Window +* combination + * Concat + * Repeat + * Zip + * CombineLatest + * StartWith (prepend) + * Append? + * merge + * join + * Amb + * Switch + * TakeUntil (the flavour that accepts an IObservable as its cut-off) + * And/Then/When +* Error Handling + * Catch + * Finally + * Using + * Retry + * OnErrorResumeNext +* Timing + * TimeStamp TimeInterval + * TakeUntil (time-based) + * Delay + * Sample + * Throttle + * Timeout + * (Buffer/Window again?) diff --git a/content/05_Filtering.md b/content/05_Filtering.md index f47228a..ca0ed2d 100644 --- a/content/05_Filtering.md +++ b/content/05_Filtering.md @@ -1,103 +1,31 @@ --- -title : Transforming Simple Sequences into Valuable Insights +title : Filtering --- -TODO: this feels more like a "PART" heading and introduction, because it's not just this chapter that covers this ground. The next four chapters are really all connected with this. - -# Transforming Simple Sequences into Valuable Insights - - -TODO: this categorization feels a bit arbitrary. For one thing, aggregation and folding are the same thing. `Aggregate` is just LINQ's name for `fold`. The distinction being made here is a minor technical distinction: is the fold result emitted from an `IObservable` or returned directly as a `T`. That's really an operational distinction—it just provides two slightly different technical modes of consuming the same basic capability. - -We can categorize operators that reduce a sequence to the following: - -
-
Filter and partition operators
-
- Reduce the source sequence to a sequence with at most the same number of elements
-
Aggregation operators
-
- Reduce the source sequence to a sequence with a single element
-
Fold operators
-
- Reduce the source sequence to a single element as a scalar value
-
- -TODO contd...: so how do I want to categorise it? Maybe: - -* testing/discrimination/scrutinisation/picking - * where, ignoreelements (segue by pointing out that Where might filter out everything but will still forward end/error) - * OfType - * Skip/Take[While/Until] - * distinct - * First(OrDefault), Last(OrDefault), Single(OrDefault) - * DefaultIfEmpty - * ElementAt - -* transformation - * Select - * Cast - * SelectMany - * Materialize/Dematerialize -* aggregation - * to Boolean - * Any - * All - * Contains - * SequenceEqual - * To numeric - * Count - * Sum, Average - * Min(By), Max(By) - * Custom - * Aggregate - * Scan -* partitioning - * GroupBy - * Buffer - * Window -* combination - * Concat - * Repeat - * Zip - * CombineLatest - * StartWith (prepend) - * Append? - * merge - * join - * Amb - * Switch - * And/Then/When -* Error Handling - * Catch - * Finally - * Using - * Retry - * OnErrorResumeNext -* Timing - * TimeStamp TimeInterval - * Delay - * Sample - * Throttle - * Timeout - * (Buffer/Window again?) - - -We discovered that the creation of an observable sequence from a scalar value is defined as _anamorphism_ or described as an _'unfold'_. We can think of the anamorphism from `T` to `IObservable` as an 'unfold'. This could also be referred to as "entering the monad" where in this case (and for most cases in this book) the monad is `IObservable`. What we will now start looking at are methods that eventually get us to the inverse which is defined as _catamorphism_ or a `fold`. Other popular names for fold are 'reduce', 'accumulate' and 'inject'. - -## Where -Applying a filter to a sequence is an extremely common exercise and the most common filter is the `Where` clause. In Rx you can apply a where clause with the `Where` extension method. For those that are unfamiliar, the signature of the `Where` method is as follows: - - IObservable Where(this IObservable source, Fun predicate) - -Note that both the source parameter and the return type are the same. This allows for a fluent interface, which is used heavily throughout Rx and other LINQ code. In this example we will use the `Where` to filter out all even values produced from a `Range` sequence. +# Filtering + +Rx provides us with tools to take potentially vast quantities of events and process these to produce higher level insights. This can often involve a reduction in volume—a small number of events may be more useful than a large number if the individual events in that lower-volume stream are, on average, more informative. The simplest mechanisms for achieving this involve simply filtering out events we don't want. Rx defines several operators that can do this. + +## Where + +Applying a filter to a sequence is an extremely common exercise and the most straightforward filter in LINQ is the `Where` operator. As usual with LINQ, Rx provides its operators in the form of extension methods. If you are already familiar with LINQ, the signature of Rx's `Where` method will come as no surprise: + +```cs +IObservable Where(this IObservable source, Func predicate) +``` + +Note that the element type is the same for the `source` parameter as it is for the return type. This is because `Where` doesn't modify elements—it can filter some out, but those that it does not remove are passed through unaltered. + +This example uses `Where` to filter out all even values produced from a `Range` sequence. ```csharp -var oddNumbers = Observable.Range(0, 10) - .Where(i => i % 2 == 0) - .Subscribe( - Console.WriteLine, - () => Console.WriteLine("Completed")); +IObservable xs = Observable.Range(0, 10); // The numbers 0-9 + +IObservable oddNumbers = xs.Where(i => i % 2 == 0); + +oddNumbers.Subscribe( + Console.WriteLine, + () => Console.WriteLine("Completed")); ``` Output: @@ -111,221 +39,276 @@ Output: Completed ``` -The `Where` operator is one of the many standard LINQ operators. This and other LINQ operators are common use in the various implementations of query operators, most notably the `IEnumerable` implementation. In most cases the operators behave just as they do in the `IEnumerable` implementations, but there are some exceptions. We will discuss each implementation and explain any variation as we go. By implementing these common operators Rx also gets language support for free via C# query comprehension syntax. For the examples in this book however, we will keep with using extension methods for consistency. +The `Where` operator is one of the many standard LINQ operators. This and other LINQ operators are common use in the various implementations of query operators, most notably the `IEnumerable` implementation. In most cases the operators behave just as they do in the `IEnumerable` implementations, although there are some exceptions as we'll see later. We will discuss each implementation and explain any variation as we go. By implementing these common operators Rx also gets language support for free via C# query comprehension syntax. For example, we could have written the first statement this way, and it would have compiled to effectively identical code: -## Distinct and DistinctUntilChanged -As I am sure most readers are familiar with the `Where` extension method for `IEnumerable`, some will also know the `Distinct` method. In Rx, the `Distinct` method has been made available for observable sequences too. For those that are unfamiliar with `Distinct`, and as a recap for those that are, `Distinct` will only pass on values from the source that it has not seen before. +```cs +IObservable oddNumbers = + from i in xs + where i % 2 == 0 + select i; +``` -```csharp -var subject = new Subject(); -var distinct = subject.Distinct(); - -subject.Subscribe( - i => Console.WriteLine("{0}", i), - () => Console.WriteLine("subject.OnCompleted()")); +For the examples in this book however, we will keep with using extension methods, partly because Rx implements some operators for which there is no corresponding query syntax, and partly because the method call approach can sometimes make it easier to see what is happening. -distinct.Subscribe( - i => Console.WriteLine("distinct.OnNext({0})", i), - () => Console.WriteLine("distinct.OnCompleted()")); +As with most Rx operators, `Where` does not subscribe immediately to its source. (Rx LINQ operators are much like those in LINQ to Objects: the `IEnumerable` version of `Where` returns without attempting to enumerate its source. It's only when something attempts to enumerate the `IEnumerable` that `Where` returns that it will in turn start enumerating the source.) Only when something calls `Susbcribe on the `IObservable` returned by `Where` will it call `Subscribe` on its source. And it will do so once for each such call to `Subscribe`. More generally, when you chain LINQ operators together, each `Subscribe` call on the resulting `IObservable` results in a cascading series of calls to `Subscribe` all the way down the chain. -subject.OnNext(1); -subject.OnNext(2); -subject.OnNext(3); -subject.OnNext(1); -subject.OnNext(1); -subject.OnNext(4); -subject.OnCompleted(); -``` +A side effect of this cascading `Subscribe` is that `Where` (and most other LINQ operators) is neither inherently _hot_ or _cold_: since it just subscribes to its source, then it will be hot if its source is hot, and cold if its source is cold. -Output: +The `Where` operator passes on all elements for which its `predicate` callback returns `true`. To be more precise, `Where` will create its own `IObserver` which it passes as the argument to `source.Subscribe`, and this observer invokes the `predicate` for each call to `OnNext`. If that predicate returns `true`, then and only then will the observer created by `Where` call `OnNext` on the observer that was passed to `Where`. + +`Where` always passes the final call to either `OnComplete` or `OnError` through. That means that if you were to write this: +```cs +IObservable dropEverything = xs.Where(_ => false); ``` -1 -distinct.OnNext(1) -2 -distinct.OnNext(2) -3 -distinct.OnNext(3) -1 -1 -4 -distinct.OnNext(4) -subject.OnCompleted() -distinct.OnCompleted() + +then although this would filter out all elements (because the predicate ignores its argument and always returns `false`, instructing `Where` to drop everything), this won't filter out error or completion. + +In fact if that's what you want—an operator that drops all the elements and just tells you when a source completes or fails—there's a simpler way. + + +## IgnoreElements + +The `IgnoreElements` extension method allows you to receive just the `OnCompleted` or `OnError` notifications. It is equivalent to using the `Where` operator with a predicate that always returns false, as this example illustrates: + +```cs +IObservable xs = Observable.Range(1, 3); +IObservable dropEverything = xs.IgnoreElements(); + +Console.WriteLine("Unfiltered:"); +xs.Subscribe( + i => Console.WriteLine("xs.OnNext({0})", i), + () => Console.WriteLine("xs.OnCompleted()")); + +Console.WriteLine(); +Console.WriteLine("IgnoreElements:"); +dropEverything.Subscribe( + i=>Console.WriteLine("dropEverything.OnNext({0})", i), + () => Console.WriteLine("dropEverything.OnCompleted()")); ``` -Take special note that the value 1 is pushed 3 times but only passed through the first time. There are overloads to `Distinct` that allow you to specialize the way an item is determined to be distinct or not. One way is to provide a function that returns a different value to use for comparison. Here we look at an example that uses a property from a custom class to define if a value is distinct. +As the output shows, the `xs` source produces the numbers 1 to 3 then completes, but if we run that through `IgnoreElements`, all we see is the `OnCompleted`. -```csharp -public class Account -{ - public int AccountId { get; set; } - //... etc -} +``` +Unfiltered: +xs.OnNext(1) +xs.OnNext(2) +xs.OnNext(3) +xs.OnCompleted() -public void Distinct_with_KeySelector() -{ - var subject = new Subject(); - var distinct = subject.Distinct(acc => acc.AccountId); -} +IgnoreElements: +dropEverything.OnCompleted() ``` -In addition to the `keySelector` function that can be provided, there is an overload that takes an `IEqualityComparer` instance. This is useful if you have a custom implementation that you can reuse to compare instances of your type `T`. Lastly there is an overload that takes a `keySelector` and an instance of `IEqualityComparer`. Note that the equality comparer in this case is aimed at the selected key type (`TKey`), not the type `T`. +## OfType -A variation of `Distinct`, that is peculiar to Rx, is `DistinctUntilChanged`. This method will surface values only if they are different from the previous value. Reusing our first `Distinct` example, note the change in output. +Some observable sequence produce items of various types. For example, consider an application that wants to keep track of ships as they move. This is possible with an AIS receiver. AIS is the Automatic Identification System, which most ocean-going ships use to report their location, heading, speed, and other information. There are numerous kinds of AIS message—some report a ship's location and speed, but its name is reported in a different kind of message. (This is because most ships move more often than they change their names, so they broadcast these two types of information at quite different frequencies.) -```csharp -var subject = new Subject(); -var distinct = subject.DistinctUntilChanged(); - -subject.Subscribe( - i => Console.WriteLine("{0}", i), - () => Console.WriteLine("subject.OnCompleted()")); +Imagine how this might look in Rx. Actually you don't have to imagine it. The open source [Ais.Net project](https://github.com/ais-dotnet) includes a [`ReceiverHost` class](https://github.com/ais-dotnet/Ais.Net.Receiver/blob/15de7b2908c3bd67cf421545578cfca59b24ed2c/Solutions/Ais.Net.Receiver/Ais/Net/Receiver/Receiver/ReceiverHost.cs) that makes AIS messages available through Rx. The `ReceiverHost` defines a `Messages` property of type `IObservable`. Since AIS defines numerous message types, this observable source can produce many different kinds of objects. Everything it emits will implement the [`IAisMessage` interface](https://github.com/ais-dotnet/Ais.Net.Receiver/blob/15de7b2908c3bd67cf421545578cfca59b24ed2c/Solutions/Ais.Net.Models/Ais/Net/Models/Abstractions/IAisMessage.cs), which reports the ship's unique identifier, but not much else. But the [`Ais.Net.Models` library](https://www.nuget.org/packages/Ais.Net.Models/) defines numerous other interfaces, including [`IVesselNavigation`](https://github.com/ais-dotnet/Ais.Net.Receiver/blob/15de7b2908c3bd67cf421545578cfca59b24ed2c/Solutions/Ais.Net.Models/Ais/Net/Models/Abstractions/IVesselNavigation.cs), which reports location, speed, and heading, and [`IVesselName`](https://github.com/ais-dotnet/Ais.Net.Receiver/blob/15de7b2908c3bd67cf421545578cfca59b24ed2c/Solutions/Ais.Net.Models/Ais/Net/Models/Abstractions/IVesselName.cs), which tells you the vessel's name. -distinct.Subscribe( - i => Console.WriteLine("distinct.OnNext({0})", i), - () => Console.WriteLine("distinct.OnCompleted()")); +Suppose you are interested only in the locations of vessels in the water, and you don't care about the vessels' names. You will want to see all messages that implement the `IVesselNavigation` interface, and to ignore all those that don't. You could try to achieve this with the `Where` operator: -subject.OnNext(1); -subject.OnNext(2); -subject.OnNext(3); -subject.OnNext(1); -subject.OnNext(1); -subject.OnNext(4); -subject.OnCompleted(); +```cs +// Won't compile! +IObservable vesselMovements = receiverHost.Messages + .Where(m => m is IVesselNavigation); ``` -Output: +However, that won't compile. You will get this error: ``` -1 -distinct.OnNext(1) -2 -distinct.OnNext(2) -3 -distinct.OnNext(3) -1 -distinct.OnNext(1) -1 -4 -distinct.OnNext(4) -subject.OnCompleted() -distinct.OnCompleted() +Cannot implicitly convert type 'System.IObservable' to 'System.IObservable' +``` +Remember that the return type of `Where` is always the same as its input. Since `receiverHost.Messages` is of type `IObservable`, that's is also the type that `Where` will return. It so happens that our predicate ensures that only those messages that implement `IVesselNavigation` make it through, but there's no way for the C# compiler to understand the relationship between the predicate and the output. (For all it knows, `Where` might do the exact opposite, including only those elements for which the predicate returns `false`. In fact the compiler can't guess anything about how `Where` might use its predicate.) + +Fortunately, Rx provides an operator specialized for this case. `OfType` filters items down to just those that are of a particular type—items must be either the exact type specified, or if it's an interface they must implement it, or otherwise they must inherit from it. This enables us to fix the last example: + +```cs +IObservable vesselMovements = receiverHost.Messages + .OfType(); ``` -The difference between the two examples is that the value 1 is pushed twice. However the third time that the source pushes the value 1, it is immediately after the second time value 1 is pushed. In this case it is ignored. Teams I have worked with have found this method to be extremely useful in reducing any noise that a sequence may provide. -## IgnoreElements -The `IgnoreElements` extension method is a quirky little tool that allows you to receive the `OnCompleted` or `OnError` notifications. We could effectively recreate it by using a `Where` method with a predicate that always returns false. -```csharp -var subject = new Subject(); +## Positional Filtering -// Could use subject.Where(_=>false); -var noElements = subject.IgnoreElements(); +Sometimes, we don't care about what an element is, so much as where it is in the sequence. -subject.Subscribe( - i=>Console.WriteLine("subject.OnNext({0})", i), - () => Console.WriteLine("subject.OnCompleted()")); -noElements.Subscribe( - i=>Console.WriteLine("noElements.OnNext({0})", i), - () => Console.WriteLine("noElements.OnCompleted()")); +### FirstAsync and FirstOrDefaultAsync -subject.OnNext(1); -subject.OnNext(2); -subject.OnNext(3); -subject.OnCompleted(); -``` +LINQ providers typically implement a `First` operator that provides the first element of a sequence. Rx is no exception, but the nature of Rx means we typically need this to work slightly differently. With providers for data at rest (such as LINQ to Objects or Entity Framework Core) the source elements already exist, so retrieving the first item is just a matter of reading it. But with Rx, sources produce data when they choose, so there's no way of knowing when the first item will become available. -Output: +So with Rx, we typically use `FirstAsync`. This returns an `IObservable` that will produce the first value that emerges from the source sequence and will then complete. (There is also a `First` method, but it can be problematic. See the [**Blocking Versions of First/Last/Single[OrDefault]** section later](#blocking-versions-of-firstlastsingleordefault) for details.) + +For example, this code uses the AIS.NET source introduced earlier to report the first time a particular boat (the aptly named HMS Example, as it happens) reports that it is moving: +```cs +uint exampleMmsi = 235009890; +IObservable moving = receiverHost.Messages + .Where(v => v.Mmsi == exampleMmsi) + .OfType() + .Where(vn => vn.SpeedOverGround > 1f) + .FirstAsync(); ``` -subject.OnNext(1) -subject.OnNext(2) -subject.OnNext(3) -subject.OnCompleted() -noElements.OnCompleted() +As well as using `FirstAsync`, this also uses a couple of the other filter elements already described. It starts with a [`Where`](#where) step that filters message down to those from the one boat we happen to be interested in. (Specifically, we filter based on that boat's [Maritime Mobile Service Identity, or MMSI](https://en.wikipedia.org/wiki/Maritime_Mobile_Service_Identity).) Then we use [`OfType`](#oftype) so that we are looking only at those messages that report movement. Then we use another `Where` clause so that we can ignore messages indicating that the boat is not actually moving, finally, we use `FirstAsync` so that we get only the first message indicating movement. As soon as the boat moves, this `moving` source will emit a single `IVesselNavigation` event and will then immediately complete. + +We can simplify that query slightly, because `FirstAsync` optionally takes a predicate. This enables us to collapse the final `Where` and `FirstAsync` into a single operator: + +```cs +IObservable moving = receiverHost.Messages + .Where(v => v.Mmsi == exampleMmsi) + .OfType() + .FirstAsync(vn => vn.SpeedOverGround > 1f); ``` -As suggested earlier we could use a `Where` to produce the same result +What if the input to `FirstAsync` is empty? If its completes without ever producing an item, `FirstAsync` invokes its subscriber's `OnError` with an `InvalidOperationException` with an error message reporting that the sequence contains no elements. The same is true if we're using the form that takes a predicate (as in this second example), and no elements matching the predicate emerged. This is consistent with the LINQ to Objects `First` operator. (Note that we wouldn't expect this to happen with the examples just shown, because the source will continue to report AIS messages for as long as the application is running, meaning there's no reason for it ever to complete.) -```csharp -subject.IgnoreElements(); -// Equivalent to -subject.Where(value=>false); -// Or functional style that implies that the value is ignored. -subject.Where(_=>false); +Sometimes, we might want to tolerate this kind of absence of events. Most LINQ providers offer not just `First` but `FirstOrDefault`. We can use this by modify the preceding example. This uses the [`TakeUntil` operator](#skipuntil-and-takeuntil) to introduce a cut-off time: this example is prepared to wait for 5 minutes, but gives up after that. (So although the AIS receiver can produce messages endlessly, this example has decided it won't wait forever.) And since that means we might complete without ever seeing the boat move, we've replaced `FirstAsync` with `FirstOrDefaultAsync`: + +```cs +IObservable moving = receiverHost.Messages + .Where(v => v.Mmsi == exampleMmsi) + .OfType() + .TakeUntil(DateTimeOffset.Now.AddMinutes(5)) + .FirstOrDefaultAsync(vn => vn.SpeedOverGround > 1f); ``` -Just before we leave `Where` and `IgnoreElements`, I wanted to just quickly look at the last line of code. Until recently, I personally was not aware that '`_`' was a valid variable name; however it is commonly used by functional programmers to indicate an ignored parameter. This is perfect for the above example; for each value we receive, we ignore it and always return false. The intention is to improve the readability of the code via convention. +If, after 5 minutes, we've not seen a message from the boat indicating that it's moving at 1 knot or faster, `TakeUntil` will unsubscribe from its upstream source and will call `OnCompleted` on the observer supplied by `FirstOrDefaultAsync`. Whereas `FirstAsync` would treat this as an error, `FirstOrDefaultAsync` will produce the default value for its element type (`IVesselNavigation` in this case; the default value for an interface type is `null`), pass that to its subscriber's `OnNext` and then call `OnCompleted`. -## Skip and Take +In short, this `moving` observable will always produce exactly one item. Either it will produce an `IVesselNavigation` indicating that the boat has moved, or it will produce `null` to indicate that this didn't happen in the 5 minutes that this code has allowed. -The other key methods to filtering are so similar I think we can look at them as one big group. First we will look at `Skip` and `Take`. These act just like they do for the `IEnumerable` implementations. These are the most simple and probably the most used of the Skip/Take methods. Both methods just have the one parameter; the number of values to skip or to take. +This production of a `null` might be an OK way to indicate that something didn't happen, but there's something slightly clunky about it: anything consuming this `moving` source now has to work out whether a notification signifies the event of interest, or the absence of any such event. If that happens to be convenient for your code, then great, but Rx provides a more direct way to represent the absence of an event: an empty sequence. -If we first look at `Skip`, in this example we have a range sequence of 10 items and we apply a `Skip(3)` to it. +You could imagine a _first or empty_ operator that worked this way. This wouldn't make sense for LINQ providers that return an actual value. For example, as LINQ to Objects' `First` returns `T`, not `IEnumerable`, so there's no way for it to return an empty sequence. But because Rx's offers `First`-like operators that return `IObservable`, it would be technically possible to have an operator that returns either the first item or no items at all. There is no such operator built into Rx, but we can get exactly the same effect by using a more generalised operator, `Take`. -```csharp -Observable.Range(0, 10) - .Skip(3) - .Subscribe(Console.WriteLine, () => Console.WriteLine("Completed")); -``` +### Take -Output: +`Take` is a standard LINQ operator that takes the first few items from a sequence and then discards the rest. -``` -3 -4 -5 -6 -7 -8 -9 -Completed +In a sense, `Take` is a generalization of `First`: `Take(1)` returns only the first item, so you could think of LINQ's `First` as being a special case of `Take`. That's not strictly correct because these operators respond differently to missing elements: as we've just seen, `First` (and Rx's `FirstAsync`) insists on receiving at least one element, producing an `InvalidOperationException` if you supply it with an empty sequence. Even the more existentially relaxed `FirstOrDefault` still insists on producing something. `Take` works slightly differently. + +If the input to `Take` completes before producing as many elements as have been specified, `Take` does not complain—it just forwards whatever the source has provided. If the source did nothing other than call `OnCompleted`, then `Take` just calls `OnCompleted` on its observer. If we used `Take(5)`, but the source produced three items and then completed, `Take(5)` will forward those three items to its subscriber, and will then complete. This means we could use `Take` to implement the hypothetical `FirstOrEmpty` discussed in the preceding section: +```cs +public static IObservable FirstOrEmpty(this IObservable src) => src.Take(1); ``` -Note the first three values (0, 1 & 2) were all ignored from the output. Alternatively, if we used `Take(3)` we would get the opposite result; i.e. we would only get the first 3 values and then the Take operator would complete the sequence. +Now would be a good time to remind you that most Rx operators (and all the ones in this chapter) are not intrinsically either hot or cold. They defer to their source. Given some hot `source`, `source.Take(1)` is also hot. The AIS.NET `receiverHost.Messages` source I've been using in these examples is hot (because it reports live message broadcasts from ships), so observable sequences derived from it are also hot. Why is now a good time to discuss this? Because it enables me to make the following absolutely dreadful pun: -```csharp -Observable.Range(0, 10) - .Take(3) - .Subscribe(Console.WriteLine, () => Console.WriteLine("Completed")); +```cs +IObservable hotTake = receiverHost.Messages.Take(1); ``` -Output: +Thank you. I'm here all week. + +The `FirstAsync` and `Take` operators work from the start of the sequence. What if we're interested only in the tail end? + +### LastAsync and LastOrDefaultAsync + +LINQ providers typically provide `Last` and `LastOrDefault`. These do almost exactly the same thing as `First` or `FirstOrDefault` except, as the name suggests, they return the final element instead of the first one. As with `First`, the nature of Rx means that unlike with LINQ providers working with data at rest, the final element might not be just sitting there waiting to be fetched. So just as Rx offers `FirstAsync` and `FirstOrDefault`, it offers `LastAsync` and `LastOrDefaultAsync`. (It does also offer `Last`, but again, as the [Blocking Versions of First/Last/Single[OrDefault]](#blocking-versions-of-firstlastsingleordefault) section discusses, this can be problematic.) + +The distinction between these two operators is the same as with `FirstAsync` and `FirstOrDefaultAsync`. If the source completes having produced nothing, `LastAsync` reports an error, whereas `LastOrDefaultAsync` emits the default value for its element type and then completes. + +Reporting the final element of a sequence entails a challenge that `First` does not face. It's very easy to know when you've received the first element from a source: if the source produces an element, and it hasn't previously produced an element, then that's the first element right there. This means that operators such as `FirstAsync` can report the first element immediately. But `LastAsync` and `LastOrDefaultAsync` don't have that luxury. + +If you receive an element from a source, how do you know that it is the last element? In general, you can't know this at the instant that you receive it. You will only know that you have received the last element when the source goes on to invoke your `OnCompleted` method. This won't necessarily happen immediately. An earlier example used `TakeUntil(DateTimeOffset.Now.AddMinutes(5))` to bring a sequence to an end after 5 minutes, and if you do that, it's entirely possible that a significant amount of time might elapse between the final element being emitted, and `TakeUntil` shutting things down. In the AIS scenario, boats might only emit messages once every few minutes, so it's quite plausible that we could end up with `TakeUntil` forwarding a message, and then discovering a few minutes later that the cutoff time has been reached without any further messages coming in. Several minutes could have elapsed between the final `OnNext` and the `OnComplete`. + +Because of this. `LastAsync` and `LastOrDefaultAsync` emit nothing at all until their source completes. + +**This has an important consequence:** there might be a significant delay between `LastAsync` receiving the final element from the source, and it forwarding that element to its subscriber. + +### TakeLast + +Earlier we saw that Rx implements the standard `Take` operator, which forwards up to a specified number of elements from the start of a sequence and then stops. `TakeLast` forwards the elements at the end of a sequence. For example, `TakeLast(3)` asks for the final 3 elements of the source sequence. As with `Take`, `TakeLast` is tolerant of sources that produce too few items—if a source produces fewer than 3 items, `TaskLast(3)` will just forward the entire sequence. + +`TaskLast` faces the same challenge as `Last`: it doesn't know when it is near the end of the sequence. It therefore has to hold onto copies of the most recently seen values. Note that it will need enough memory to hold onto however many values you've specified. If you write `TakeLast(1_000_000)`, it will need to allocate a buffer large enough to store 1,000,000 values. It doesn't know if the first element it receives will be one of the final million. It can't know that until either the source completes, or the source has emitted more than 1,000,000 items. When the source finally does complete, `TakeLast` will now know what the final million elements were and will need to pass all of them to its subscriber's `OnNext` method one after another. + + +### SingleAsync and SingleOrDefaultAsync + +LINQ operators typically provide a `Single` operator, for use when a source should provide exactly one item, and it would be an error for it to contain more, or for it to be empty. The same Rx considerations apply here as for `First` and `Last`, so you will probably be unsurprised to learn that Rx offers a `SingleAsync` method that returns an `IObservable` that will either call its observer's `OnNext` exactly once, or will call its `OnError` to indicate either that the source reported an error, or that the source did not produce exactly one item. + +With `SingleAsync`, you will get an error if the source is empty, just like with `FirstAsync` and `LastAsync`, but you will also get an error if the source contains multiple items. There is a `SingleOrDefault` which, like its first/last counterparts, tolerates an empty input sequence, generating a single element with the element type's default value in that case. + +`Single` and `SingleAsync` share with `Last` and `LastAsync` the characteristic that they know when they receive an item from the source whether it should be the output. That may seem odd: since `Single` requires the source stream to provide just one item, surely it must know that the item it will deliver to its subscriber will be the first item it receives. This is true, but the thing it doesn't yet know when it receives the first item is whether the source is going to produce a second one. It can't forward the first item unless and until the source completes. We could say that `SingleAsync`'s job is to first verify that the source contains exactly one item, and then to forward that item if it does, but to report an error if it does not. In the error case, `SingleAsync` will know it has gone wrong if it ever receives a second item, so it can immediately call `OnError` on its subscriber at that point. But in the success scenario, it can't know that all is well until the source confirms that nothing more is coming by completing. Only then will `SingleAsync` emit the result. +### Skip and SkipLast + +What if we want the exact opposite of the `Take` or `TakeLast` operators? Instead of taking the first 5 items from a source, maybe I want to discard the first 5 items instead? Perhaps I have some `IObservable` taking readings from a sensor, and I have discovered that the sensor produces garbage values for its first few readings, so I'd like to ignore those, and only start listening once it has settled down. I can achieve this with `Skip(5)`. + +`SkipLast` does the same thing at the end of the sequence—it omits the specified number of elements at the tail end. As with some of the other operators we've just been looking at, this has to deal with the problem that it can't tell when it's near the end of the sequence. It only gets to discover which were the last (say) 4 elements after the source has emitted all of them, followed by an `OnComplete`. So `SkipLast` will introduce a delay. If you use `SkipLast(4)`, it won't forward the first element that the source produces until the source produces a 5th element. So it doesn't need to wait for `OnCompleted` or `OnError` before it can start doing things, it just has to wait until its certain that an element is not one of the ones we want to discard. + +The other key methods to filtering are so similar I think we can look at them as one big group. First we will look at `Skip` and `Take`. These act just like they do for the `IEnumerable` implementations. These are the most simple and probably the most used of the Skip/Take methods. Both methods just have the one parameter; the number of values to skip or to take. + + +### Blocking Versions of First/Last/Single[OrDefault] + +Several of the operators described in the preceding sections end in the name `Async`. This is a little strange because normally, .NET methods that end in `Async` return a `Task` or `Task`, and yet these all return an `IObservable`. Also, as already discussed, each of these methods corresponds to a standard LINQ operator which does not generally end in `Async`. (And to further add to the confusion, some LINQ providers such as Entity Framework Core do include `Async` versions of some of these operators, but they are different. Unlike Rx, these do in fact return a `Task`, so they still produce a single value, and not an `IQueryable` or `IEnumerable`.) This naming arises from an unfortunate choice early in Rx's design. + +If Rx were being designed from scratch today, the relevant operators in the preceding section would just have the normal names: `First`, and `FirstOrDefault`, and so on. The reason they all end with `Async` is that these were added in Rx 2.0, and Rx 1.0 had already defined operators with those names. This example shows the `First` operator: + +```cs +int v = Observable.Range(1, 10).First(); +Console.WriteLine(v); ``` -0 -1 -2 -Completed +This prints out the value `1`, which is the first item returned by `Range` here. But look at the type of that variable `v`. It's not an `IObservable`, it's just an `int`. What would happen if we used this on an Rx operator that didn't immediately produce values upon subscription? Here's one example: + + +```cs +long v = Observable.Timer(TimeSpan.FromSeconds(2)).First(); +Console.WriteLine(v); ``` -Just in case that slipped past any readers, it is the `Take` operator that completes once it has received its count. We can prove this by applying it to an infinite sequence. +If you run this, you'll find that the call to `First` doesn't return until a value is produced. It is a _blocking_ operator. We typically avoid blocking operators in Rx, because it's easy to create deadlocks with them. The whole point of Rx is that we can create code that reacts to events, so to just sit and wait until a specific observable source produces a value is not really in the spirit of things. If you find yourself wanting to do that, there are often better ways to achieve the results you're looking for. (Or perhaps Rx isn't good model for whatever you're doing.) -```csharp -Observable.Interval(TimeSpan.FromMilliseconds(100)) - .Take(3) - .Subscribe(Console.WriteLine, () => Console.WriteLine("Completed")); +If you really do need to wait for a value like this, it might be better to use the `Async` forms in conjunction with Rx's integrated support for C#'s `async`/`await`: + +```cs +long v = await Observable.Timer(TimeSpan.FromSeconds(2)).FirstAsync(); +Console.WriteLine(v); ``` -Output: +This logically has the same effect, but because we're using `await`, this won't block the calling thread while it waits for the observable source to produce a value. This might reduce the chances of deadlock. + +The fact that we're able to use `await` makes some sense of the fact that these methods end with `Async`, but you might be wondering what's going on here. We've seen that these methods all return `IObservable`, not `Task`, so how are we able to use `await`? + +Although `await` is most often used with `Task`, `Task`, or `ValueTask`, it is actually an extensible language feature. It's possible to make `await` work for more or less any type by defining some suitable extension methods and some supporting types. And that's precisely what Rx does. If your source file includes a `using System.Reactive.Linq;` directive, a suitable extension method will be available, so you can `await` any task. (The way this actually works is that the relevant `GetAwaiter` extension method wraps the `IObservable` in an `AsyncSubject`, which provides everything that C# requires to support `await`. And as you may recall from the [`AsyncSubject` section of chapter 3](./03_CreatingObservableSequences.md#asyncsubject), `AsyncSubject` reports only the final value to emerge from its source. So if you `await` a sequence that reports multiple items, all but the final item will be ignored.) + +Note that there are occasionally situations in which values are available immediately. For example, the [`BehaviourSubject` section in chapter 3](./03_CreatingObservableSequences.md#behaviorsubject), showed that the defining feature of `BehaviourSubject` is that it always has a current value. That means that Rx's `First` method won't actually block—it will subscribe to the `BehaviourSubject`, and `BehaviourSubject.Subscribe` calls `OnNext` on its subscriber's observable before returning. That enables `First` to return a value immediately without blocking. (Of course, if you use the overload of `First` that accepts a predicate, and if the `BehaviourSubject`'s value doesn't satisfy the predicate, `First` will then block.) + + +### ElementAt + +There is yet another standard LINQ operator for selecting one particular element from the source: `ElementAt`. You provide this with a number indicating the position in the sequence of the element you require. In data-at-rest LINQ providers, this is logically equivalent to accessing an array element by index. Rx implements this operator, but whereas most LINQ providers' `ElementAt` implementation returns a `T`, Rx's returns an `IObservable`. Unlike with `First`, `Last`, and `Single`, Rx does not provide a blocking form of `ElementAt`. But since you can await any `IObservable`, you can always do this: +```cs +IAisMessage fourth = await recieverHost.Message.ElementAt(4); ``` -0 -1 -2 -Completed +## Temporal Filtering + +The `Take` and `TakeLast` operators let us filter out everything except elements either at the very start or very end (and `Skip` and `SkipLast` let see everything but those), but these all require us to know the exact number of elements. What if we want to specify the cut-off not in terms of an element count, but in terms of a particular instant in time? + +In fact you've already seen one example: earlier I used `TakeUntil` to convert an endless `IObservable` into one that would complete after five minutes. This is one of a family of operators. + +### SkipWhile and TakeWhile + +In the [`Skip` and `SkipLast` section](#skip-and-skiplast), I described a sensor that produces garbage values for its first few readings. This is quite common. For example, gas monitoring sensors often need to get some component up to a correct operator temperature before they can produce accurate readings. In the example in that section, I used `Skip(5)` to ignore the first few readings, but that is a crude solution. How do we know that 5 is enough? Or might it be ready sooner, in which case 5 is too few. + +What we really want to do is discard readings until we know the readings will be valid. And that's exactly the kind of scenario that `SkipWhile` can be useful for. Suppose we have a gas sensor that reports concentrations of some particular gas, but which also reports the temperature of the sensor plate that is performing the detection. Instead of hoping that 5 readings is a sensible number to skip, we could express the actual requirement: + +```cs +const int MinimumSensorTemperature = 74; +IObservable readings = sensor.RawReadings + .SkipUntil(r => r.SensorTemperature >= MinimumSensorTemperature); ``` -### SkipWhile and TakeWhile +This directly expresses the logic we require: this will discard readings until the device is up to its minimum operating temperature. The next set of methods allows you to skip or take values from a sequence while a predicate evaluates to true. For a `SkipWhile` operation this will filter out all values until a value fails the predicate, then the remaining sequence can be returned. @@ -387,138 +370,59 @@ Completed ``` -### SkipLast and TakeLast +### SkipUntil and TakeUntil -These methods become quite self explanatory now that we understand Skip/Take and SkipWhile/TakeWhile. Both methods require a number of elements at the end of a sequence to either skip or take. The implementation of the `SkipLast` could cache all values, wait for the source sequence to complete, and then replay all the values except for the last number of elements. The Rx team however, has been a bit smarter than that. The real implementation will queue the specified number of notifications and once the queue size exceeds the value, it can be sure that it may drain a value from the queue. +In addition to `SkipWhile` and `TakeWhile`, Rx defines `SkipUntil` and `TakeUntil`. These may sound like nothing more than an alternate expression of the same idea: you might expect `SkipUntil` to do almost exactly the same thing as `SkipWhile`, with the only difference being that `SkipWhile` runs for as long as its predicate returns `true`, whereas `SkipUntil` runs for as long as its predicate returns `false`. And there is an overload of `SkipUntil` that does exactly that (and a corresponding one for `TakeUntil`). If that's all these were they wouldn't be interesting. However, there are overloads of `SkipUtil` and `TakeUntil` that enable us to do things we can't do with `SkipWhile` and `TakeWhile`. -```csharp -var subject = new Subject(); -subject - .SkipLast(2) - .Subscribe(Console.WriteLine, () => Console.WriteLine("Completed")); -Console.WriteLine("Pushing 1"); -subject.OnNext(1); -Console.WriteLine("Pushing 2"); -subject.OnNext(2); -Console.WriteLine("Pushing 3"); -subject.OnNext(3); -Console.WriteLine("Pushing 4"); -subject.OnNext(4); -subject.OnCompleted(); -``` +You've already seen one example. The [`FirstAsync` and `FirstOrDefaultAsync`](#firstasync-and-firstordefaultasync) included an example that used an overload of `TakeUntil` that accepted a `DateTimeOffset`. This wraps any `IObservable`, returning an `IObservable` that will forward everything from the source until the specified time, at which point it will immediately complete (and will unsubscribe from the underlying source). -Output: +We couldn't have achieved this with `TakeWhile`, because that consults its predicate only when the source produces an item. If we want the source to complete at a specific time, the only way we could do that with `TakeWhile` is if its source happens to produce an item at the exact moment we wanted to finish. `TakeWhile` will only ever complete as a result of its source producing an item. `TakeUntil` can complete asynchronously—if we specified a time 5 minutes into the future, it doesn't matter if the source is completely idle when that time arrives. `TakeUntil` will complete anyway. (It relies on Schedulers to be able to do this.) -``` -Pushing 1 -Pushing 2 -Pushing 3 -1 -Pushing 4 -2 -Completed +We don't have to use a time, `TakeUntil` offers an overload that accept a second `IObservable`. This enables us to tell it to stop when something interesting happens, without needing to know in advance exactly when that will occur. This overload of `TakeUntil` forwards items from the source until that second `IObservable` produces a value. `SkipUntil` offers a similar overload in which the second `IObservable` determines when it should start forwarding items from the source. -``` +**Note**: these overloads require the second observable to produce a value in order to trigger the start or end. If that second observable completes without producing a single notification, then it has no effect—`TakeUntil` will continue to take items indefinitely; `SkipUntil` will never produce anything. In other words, these operators would treat `Observable.Empty()` as being effectively equivalent to `Observable.Never()`. -Unlike `SkipLast`, `TakeLast` does have to wait for the source sequence to complete to be able to push its results. As per the example above, there are `Console.WriteLine` calls to indicate what the program is doing at each stage. -```csharp -var subject = new Subject(); -subject - .TakeLast(2) - .Subscribe(Console.WriteLine, () => Console.WriteLine("Completed")); -Console.WriteLine("Pushing 1"); -subject.OnNext(1); -Console.WriteLine("Pushing 2"); -subject.OnNext(2); -Console.WriteLine("Pushing 3"); -subject.OnNext(3); -Console.WriteLine("Pushing 4"); -subject.OnNext(4); -Console.WriteLine("Completing"); -subject.OnCompleted(); -``` +### Distinct and DistinctUntilChanged -Output: +`Distinct` is yet another standard LINQ operator. It removes duplicates from a sequence. To do this, it needs to remember all the values that its source has ever product, so that it can filter out any items that it has seen before. Rx includes an implementation of `Distinct`, and this example uses it to display the unique identifier of vessels generating AIS messages, but ensuring that we only display each such identifier the first time we see it: -``` -Pushing 1 -Pushing 2 -Pushing 3 -Pushing 4 -Completing -3 -4 -Completed +```cs +IObservable newIds = receiverHost.Messages + .Select(m => m.Mmsi) + .Distinct(); +newIds.Subscribe(id => Console.WriteLine($"New vessel: {id}")); ``` -### SkipUntil and TakeUntil +(This is leaping ahead a little—it uses `Select`, which we'll get to in Chapter XXX. However, this is a very widely used LINQ operator, so you are probably already familiar with it. I'm using it here to extract just the MMSI—the vessel identifier—from the message.) -Our last two methods make an exciting change to the methods we have previously looked. These will be the first two methods that we have discovered together that require two observable sequences. - -`SkipUntil` will skip all values until any value is produced by a secondary observable sequence. - -```csharp -var subject = new Subject(); -var otherSubject = new Subject(); -subject - .SkipUntil(otherSubject) - .Subscribe(Console.WriteLine, () => Console.WriteLine("Completed")); -subject.OnNext(1); -subject.OnNext(2); -subject.OnNext(3); -otherSubject.OnNext(Unit.Default); -subject.OnNext(4); -subject.OnNext(5); -subject.OnNext(6); -subject.OnNext(7); -subject.OnNext(8); +This example is fine if we are only interested in vessels' identifiers. But what if we want to inspect the detail of these messages? How can we retain the ability to see messages only for vessels we've never previously heard of, but still be able to look at the information in those message? The use of `Select` to extract the id stops us from doing this. Fortunately, `Distinct` provides an overload enabling us to change how it determines uniqueness. Instead of getting `Distinct` to look at the values it is processing, we can provide it with a function that lets us pick whatever characteristics we like. So instead of filtering the stream down to values that have never been seen before, we can instead filter the stream down to values that have some particular property of combination of properties we've never seen before. Here's a simple example: -subject.OnCompleted(); +```cs +IObservable newVesselMessages = receiverHost.Messages + .Distinct(m => m.Mmsi); ``` -Output: +Here, the input to `Distinct` is now an `IObservable`. (In the preceding example it was actually `IObservable`, because the `Select` clause picked out just the MMSI.) So `Distinct` now receives the entire `IAisMessage` each time the source emits one. But because we've supplied a callback, it's not going try and compare entire `IAisMessage` messages with one another. Instead, each time it receives one, it passes that to our callback, and then looks at the value our callback returns, and compares that with the values the callback returned for all previously seen messages, and lets the message through only if that's new. -``` -4 -5 -6 -7 -Completed +So the effect is similar to before—messages will be allowed through only if they have an MMSI not previously seen. But the difference is that the `Distinct` operator's output here is `IObservable`, so when `Distinct` lets an item through, the entire original message remains available. -``` +In addition to the standard LINQ `Distinct` operator, Rx also provides `DistinctUntilChanged`. This only lets through notifications when something has changed, which it achieved by filtering out only adjacent duplicates. For example, given the sequence `1,2,2,3,4,4,5,4,3,3,2,1,1` it would produce `1,2,3,4,5,4,3,2,1`. Whereas `Distinct` remembers every value ever produced, `DistinctUntilChanged` remembers only the most recently emitted value, and filters out new values if and only if they match that most recent value. -Obviously, the converse is true for `TakeWhile`. When the secondary sequence produces a value, then the `TakeWhile` operator will complete the output sequence. +This example uses `DistinctUntilChanged` to detect when a particular vessel reports a change in `NavigationStatus`. -```csharp -var subject = new Subject(); -var otherSubject = new Subject(); -subject - .TakeUntil(otherSubject) - .Subscribe(Console.WriteLine, () => Console.WriteLine("Completed")); -subject.OnNext(1); -subject.OnNext(2); -subject.OnNext(3); -otherSubject.OnNext(Unit.Default); -subject.OnNext(4); -subject.OnNext(5); -subject.OnNext(6); -subject.OnNext(7); -subject.OnNext(8); - -subject.OnCompleted(); +```cs +uint exampleMmsi = 235009890; +IObservable newIds = receiverHost.Messages + .Where(v => v.Mmsi == exampleMmsi) + .OfType() + .DistinctUntilChanged(m => m.NavigationStatus); ``` -Output: +For example, if the vessel had repeatedly been reporting a status of `AtAnchor`, `DistinctUntilChanged` would drop each such message because the status was the same as it had previously been. But if the status were to change to `UnderwayUsingEngine`, that would cause `DistinctUntilChanged` to let the first message reporting that status through. It would then not allow any further messages through until there was another change in value, either back to `AtAnchor`, or to something else such as `Moored`. -``` -1 -2 -3 -Completed -``` -That was our quick run through of the filtering methods available in Rx. While they are pretty simple, as we will see, the power in Rx is down to the composability of its operators. +That was our quick run through of the filtering methods available in Rx. While they are relatively simple, as we have already begun to see, the power in Rx is down to the composability of its operators. -These operators provide a good introduction to the filtering in Rx. The filter operators are your first stop for managing the potential deluge of data we can face in the information age. We now know how to remove unmatched data, duplicate data or excess data. Next, we will move on to the other two sub classifications of the reduction operators, inspection and aggregation. \ No newline at end of file +The filter operators are your first stop for managing the potential deluge of data we can face in the information age. We now know how to remove unmatched data, duplicate data or excess data. Next, we will move on to operators that can transform data. \ No newline at end of file diff --git a/content/07_Aggregation.md b/content/07_Aggregation.md index fd21626..fa9a7aa 100644 --- a/content/07_Aggregation.md +++ b/content/07_Aggregation.md @@ -88,34 +88,8 @@ Caution should be prescribed whenever using any of these fold methods on an obse > It is worth noting that in the soon to be released .NET 4.5 and Rx 2.0 will provide support for avoiding these concurrency problems. The new `async`/`await` keywords and related features in Rx 2.0 can help exit the monad in a safer way. -### First +TODO: this was where First, Last, and Single were. (That was an odd choice. They are technically catamorphisms, but they are degenerate cases. `Aggregate` is the canonical example but that wasn't in this section! `Sum`, `Average`, `Min`, and `Max` are also all good examples (more specialized than Aggregate, but at least they look at every input), but they're also not in here. To be fair, the Rx source code puts FirstAsync and SingleAsync in Observable.Aggregates.cs. But it's the fact that this section _only_ contained these, and none of the other more obviously aggregating catamorphisms.) I've moved those out into filtering, because they feel more akin to Take and Last. From a structural algebra perspective these are different kinds of things, but in terms of what they actually do, they are positional filters, so they seem to fit better in the filtering chapter than Aggregation because they don't aggregate. -The `First()` extension method simply returns the first value from a sequence. - -```csharp -var interval = Observable.Interval(TimeSpan.FromSeconds(3)); - -// Will block for 3s before returning -Console.WriteLine(interval.First()); -``` - -If the source sequence does not have any values (i.e. is an empty sequence) then the `First` method will throw an exception. You can cater for this in three ways: - -- Use a try/catch blocks around the `First()` call -- Use `Take(1)` instead. However, this will be asynchronous, not blocking. -- Use `FirstOrDefault` extension method instead - -The `FirstOrDefault` will still block until the source produces any notification. If the notification is an `OnError` then it will be thrown. If the notification is an `OnNext` then that value will be returned, otherwise if it is an `OnCompleted` the default will be returned. As we have seen in earlier methods, we can either choose to use the parameterless method in which the default value will be `default(T)` (i.e. null for reference types or the zero value for value types), alternatively we can provide our own default value to use. - -A special mention should be made for the unique relationship that `BehaviorSubject` and the `First()` extension method has. The reason behind this is that the `BehaviorSubject` is guaranteed to have a notification, be it a value, an error or a completion. This effectively removes the blocking nature of the `First` extension method when used with a `BehaviorSubject`. This can be used to make behavior subjects act like properties. - -### Last - -The `Last` and `LastOrDefault` will block until the source completes and then return the last value. Just like the `First()` method any `OnError` notifications will be thrown. If the sequence is empty then `Last()` will throw an `InvalidOperationException`, but you can use `LastOrDefault` to avoid this. - -### Single - -The `Single` extension method is for getting the single value from a sequence. The difference between this and `First()` or `Last()` is that it helps to assert your assumption that the sequence will only contain a single value. The method will block until the source produces a value and then completes. If the sequence produces any other combination of notifications then the method will throw. This method works especially well with `AsyncSubject` instances as they only produce a single value sequences. ## Build your own aggregations diff --git a/content/C_AlgebraicUnderpinnings b/content/C_AlgebraicUnderpinnings new file mode 100644 index 0000000..d723bbc --- /dev/null +++ b/content/C_AlgebraicUnderpinnings @@ -0,0 +1,9 @@ + + +TODO: I had originally written this to explain why there's no `FirstOrEmpty`, but ultimately felt it was a distraction, and that it was better to use the opportunity to segue into `Take` (which is effectively a generalization of `First` that is flexible enough to do what `FirstOrEmpty` would do). + +But I think this is an important point, and I'd like to make it somewhere. + +`First` and its variants are all examples of a group of operators that take a collection-like input and reduce it to a single value. This makes it structurally similar to some other operators we'll see later such as `Max`, `Average`, and `Sum`—they all reduce their entire input example to a single output value. (A function of this type is sometimes referred to as a _fold_, or if you like fancy but mathematically precise language, a [_catamorphism_](https://bartoszmilewski.com/2013/06/10/understanding-f-algebras/).) A hypothetical `FirstOrEmpty` would not fit the mould—sometimes its result would produce a single element and sometimes it would produce nothing. + +This might seem like an unnecessarily academic argument. However, this underestimates the extent to which LINQ in general and Rx in particular benefit from academic research. Composition is fundamental to how we use Rx—any real Rx program will tend to plug multiple operators together. This generally just works, but the fact that it does work is not an accident. Rx's design is heavily informed by research on how abstract algebra can be applied to software to ensure that such composition is sound. Rx does not make a big song and dance about this—you don't need to know what Monads or anamorphisms are to use it successfully. It just quietly relies on solid underlying theory to ensure that everything works smoothly. From 3e429b45e87c7ea38e35613017262f80bb5c16f4 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Thu, 15 Jun 2023 15:03:31 +0100 Subject: [PATCH 012/142] Remove Inspection chapter. Start on Transformation --- content/05_Filtering.md | 9 + content/06_Inspection.md | 353 ----------------- ...Transformation.md => 06_Transformation.md} | 362 ++++++++++-------- content/07_Aggregation.md | 268 ++++++++++++- content/12_CombiningSequences.md | 59 ++- content/13_TimeShiftedSequences.md | 47 ++- content/C_AlgebraicUnderpinnings | 25 ++ 7 files changed, 589 insertions(+), 534 deletions(-) delete mode 100644 content/06_Inspection.md rename content/{08_Transformation.md => 06_Transformation.md} (85%) diff --git a/content/05_Filtering.md b/content/05_Filtering.md index ca0ed2d..621c382 100644 --- a/content/05_Filtering.md +++ b/content/05_Filtering.md @@ -290,6 +290,15 @@ There is yet another standard LINQ operator for selecting one particular element IAisMessage fourth = await recieverHost.Message.ElementAt(4); ``` +If your source sequence only produces five values and we ask for `ElementAt(5)`, the sequence that `ElementAt` returns will report an `ArgumentOutOfRangeException` error to its subscriber when the source completes. There are three ways we can deal with this: + +- Handle the OnError gracefully +- Use `.Skip(5).Take(1);` This will ignore the first 5 values and the only take the 6th value. +If the sequence has less than 6 elements we just get an empty sequence, but no errors. +- Use ElementAtOrDefault + +`ElementAtOrDefault` extension method will protect us in case the index is out of range, by pushing the `default(T)` value. Currently there is not an option to provide your own default value. + ## Temporal Filtering The `Take` and `TakeLast` operators let us filter out everything except elements either at the very start or very end (and `Skip` and `SkipLast` let see everything but those), but these all require us to know the exact number of elements. What if we want to specify the cut-off not in terms of an element count, but in terms of a particular instant in time? diff --git a/content/06_Inspection.md b/content/06_Inspection.md deleted file mode 100644 index b031a74..0000000 --- a/content/06_Inspection.md +++ /dev/null @@ -1,353 +0,0 @@ ---- -title: Inspection ---- - -# Inspection - -Making sense of all the data we consume is not always about just filtering out the redundant and superfluous. Sometimes we need to pluck out data that is relevant or validate that a sequence even meets our expectations. Does this data have any values that meet this specification? Is this specific value in the sequence? Get me that specific value from the sequence! - -In the last chapter we looked at a series of ways to reduce your observable sequence via a variety of filters. Next we will look at operators that provide inspection functionality. Most of these operators will reduce your observable sequence down to a sequence with a single value in it. As the return value of these methods is not a scalar (it is still `IObservable`) these methods do not actually satisfy our definition of catamorphism, but suit our examination of reducing a sequence to a single value. - -The series of methods we will look at next are useful for inspecting a given sequence. Each of them returns an observable sequence with the single value containing the result. This proves useful, as by their nature they are asynchronous. They are all quite simple so we will be brief with each of them. - -## Any - -First we can look at the parameterless overload for the extension method `Any`. This will simply return an observable sequence that has the single value of `false` if the source completes without any values. If the source does produce a value however, then when the first value is produced, the result sequence will immediately push `true` and then complete. If the first notification it gets is an error, then it will pass that error on. - -```csharp -var subject = new Subject(); -subject.Subscribe(Console.WriteLine, () => Console.WriteLine("Subject completed")); -var any = subject.Any(); - -any.Subscribe(b => Console.WriteLine("The subject has any values? {0}", b)); - -subject.OnNext(1); -subject.OnCompleted(); -``` - -Output: - -``` -1 -The subject has any values? True -subject completed -``` - -If we now remove the OnNext(1), the output will change to the following - -``` -subject completed -The subject has any values? False -``` - -If the source errors it would only be interesting if it was the first notification, otherwise the `Any` method will have already pushed true. If the first notification is an error then `Any` will just pass it along as an `OnError` notification. - -```csharp -var subject = new Subject(); -subject.Subscribe(Console.WriteLine, - ex => Console.WriteLine("subject OnError : {0}", ex), - () => Console.WriteLine("Subject completed")); -var any = subject.Any(); - -any.Subscribe(b => Console.WriteLine("The subject has any values? {0}", b), - ex => Console.WriteLine(".Any() OnError : {0}", ex), - () => Console.WriteLine(".Any() completed")); - -subject.OnError(new Exception()); -``` - -Output: - -``` -subject OnError : System.Exception: Fail -.Any() OnError : System.Exception: Fail -``` - -The `Any` method also has an overload that takes a predicate. This effectively makes it a `Where` with an `Any` appended to it. - -```csharp -subject.Any(i => i > 2); -// Functionally equivalent to -subject.Where(i => i > 2).Any(); -``` - -As an exercise, write your own version of the two `Any` extension method overloads. While the answer may not be immediately obvious, we have covered enough material for you to create this using the methods you know... - -Example of the `Any` extension methods written with `Observable.Create`: - -```csharp -public static IObservable MyAny(this IObservable source) -{ - return Observable.Create( - o => - { - var hasValues = false; - return source - .Take(1) - .Subscribe( - _ => hasValues = true, - o.OnError, - () => - { - o.OnNext(hasValues); - o.OnCompleted(); - }); - }); -} - -public static IObservable MyAny( - this IObservable source, - Func predicate) -{ - return source - .Where(predicate) - .MyAny(); -} -``` - -## All - -The `All`() extension method works just like the `Any` method, except that all values must meet the predicate. As soon as a value does not meet the predicate a `false` value is returned then the output sequence completed. If the source is empty, then `All` will push `true` as its value. As per the `Any` method, and errors will be passed along to the subscriber of the `All` method. - -```csharp -var subject = new Subject(); -subject.Subscribe(Console.WriteLine, () => Console.WriteLine("Subject completed")); -var all = subject.All(i => i < 5); -all.Subscribe(b => Console.WriteLine("All values less than 5? {0}", b)); - -subject.OnNext(1); -subject.OnNext(2); -subject.OnNext(6); -subject.OnNext(2); -subject.OnNext(1); -subject.OnCompleted(); -``` - -Output: - -``` -1 -2 -6 -All values less than 5? False -all completed -2 -1 -subject completed -``` - -Early adopters of Rx may notice that the `IsEmpty` extension method is missing. You can easily replicate the missing method using the `All` extension method. - -```csharp -// IsEmpty() is deprecated now. -// var isEmpty = subject.IsEmpty(); -var isEmpty = subject.All(_ => false); -``` - -## Contains - -The `Contains` extension method overloads could sensibly be overloads to the `Any` extension method. The `Contains` extension method has the same behavior as `Any`, however it specifically targets the use of `IComparable` instead of the usage of predicates and is designed to seek a specific value instead of a value that fits the predicate. I believe that these are not overloads of `Any` for consistency with `IEnumerable`. - -```csharp -var subject = new Subject(); -subject.Subscribe( - Console.WriteLine, - () => Console.WriteLine("Subject completed")); - -var contains = subject.Contains(2); - -contains.Subscribe( - b => Console.WriteLine("Contains the value 2? {0}", b), - () => Console.WriteLine("contains completed")); - -subject.OnNext(1); -subject.OnNext(2); -subject.OnNext(3); - -subject.OnCompleted(); -``` - -Output: - -``` -1 -2 -Contains the value 2? True -contains completed -3 -Subject completed -``` - -There is also an overload to `Contains` that allows you to specify an implementation of `IEqualityComparer` other than the default for the type. This can be useful if you have a sequence of custom types that may have some special rules for equality depending on the use case. - -## DefaultIfEmpty - -The `DefaultIfEmpty` extension method will return a single value if the source sequence is empty. Depending on the overload used, it will either be the value provided as the default, or `Default(T)`. `Default(T)` will be the zero value for _struct_ types and will be `null` for classes. If the source is not empty then all values will be passed straight on through. - -In this example the source produces values, so the result of `DefaultIfEmpty` is just the source. - -```csharp -var subject = new Subject(); - -subject.Subscribe( - Console.WriteLine, - () => Console.WriteLine("Subject completed")); - -var defaultIfEmpty = subject.DefaultIfEmpty(); - -defaultIfEmpty.Subscribe( - b => Console.WriteLine("defaultIfEmpty value: {0}", b), - () => Console.WriteLine("defaultIfEmpty completed")); - -subject.OnNext(1); -subject.OnNext(2); -subject.OnNext(3); - -subject.OnCompleted(); -``` - -Output: - -``` -1 -defaultIfEmpty value: 1 -2 -defaultIfEmpty value: 2 -3 -defaultIfEmpty value: 3 -Subject completed -defaultIfEmpty completed -``` - -If the source is empty, we can use either the default value for the type (i.e. 0 for int) or provide our own value in this case 42. - -```csharp -var subject = new Subject(); - -subject.Subscribe( - Console.WriteLine, - () => Console.WriteLine("Subject completed")); - -var defaultIfEmpty = subject.DefaultIfEmpty(); - -defaultIfEmpty.Subscribe( - b => Console.WriteLine("defaultIfEmpty value: {0}", b), - () => Console.WriteLine("defaultIfEmpty completed")); - -var default42IfEmpty = subject.DefaultIfEmpty(42); - -default42IfEmpty.Subscribe( - b => Console.WriteLine("default42IfEmpty value: {0}", b), - () => Console.WriteLine("default42IfEmpty completed")); - -subject.OnCompleted(); -``` - -Output: - -``` -Subject completed -defaultIfEmpty value: 0 -defaultIfEmpty completed -default42IfEmpty value: 42 -default42IfEmpty completed -``` - -## ElementAt - -The `ElementAt` extension method allows us to "cherry pick" out a value at a given index. Like the `IEnumerable` version it is uses a 0 based index. - -```csharp -var subject = new Subject(); - -subject.Subscribe( - Console.WriteLine, - () => Console.WriteLine("Subject completed")); - -var elementAt1 = subject.ElementAt(1); - -elementAt1.Subscribe( - b => Console.WriteLine("elementAt1 value: {0}", b), - () => Console.WriteLine("elementAt1 completed")); - -subject.OnNext(1); -subject.OnNext(2); -subject.OnNext(3); - -subject.OnCompleted(); -``` - -Output: - -``` -1 -2 -elementAt1 value: 2 -elementAt1 completed -3 -subject completed -``` - -As we can't check the length of an observable sequence it is fair to assume that sometimes this method could cause problems. If your source sequence only produces five values and we ask for `ElementAt(5)`, the result sequence will error with an `ArgumentOutOfRangeException` inside when the source completes. - -There are three options we have: - -- Handle the OnError gracefully -- Use `.Skip(5).Take(1);` This will ignore the first 5 values and the only take the 6th value. -If the sequence has less than 6 elements we just get an empty sequence, but no errors. -- Use ElementAtOrDefault - -`ElementAtOrDefault` extension method will protect us in case the index is out of range, by pushing the `Default(T)` value. Currently there is not an option to provide your own default value. - -## SequenceEqual - -Finally `SequenceEqual` extension method is perhaps a stretch to put in a chapter that starts off talking about catamorphism and fold, but it does serve well for the theme of inspection. This method allows us to compare two observable sequences. As each source sequence produces values, they are compared to a cache of the other sequence to ensure that each sequence has the same values in the same order and that the sequences are the same length. This means that the result sequence can return `false` as soon as the source sequences produce diverging values, or `true` when both sources complete with the same values. - -```csharp -var subject1 = new Subject(); - -subject1.Subscribe( - i=>Console.WriteLine("subject1.OnNext({0})", i), - () => Console.WriteLine("subject1 completed")); - -var subject2 = new Subject(); - -subject2.Subscribe( - i=>Console.WriteLine("subject2.OnNext({0})", i), - () => Console.WriteLine("subject2 completed")); - -var areEqual = subject1.SequenceEqual(subject2); - -areEqual.Subscribe( - i => Console.WriteLine("areEqual.OnNext({0})", i), - () => Console.WriteLine("areEqual completed")); - -subject1.OnNext(1); -subject1.OnNext(2); - -subject2.OnNext(1); -subject2.OnNext(2); -subject2.OnNext(3); - -subject1.OnNext(3); - -subject1.OnCompleted(); -subject2.OnCompleted(); -``` - -Output: - -``` -subject1.OnNext(1) -subject1.OnNext(2) -subject2.OnNext(1) -subject2.OnNext(2) -subject2.OnNext(3) -subject1.OnNext(3) -subject1 completed -subject2 completed -areEqual.OnNext(True) -areEqual completed -``` - -This chapter covered a set of methods that allow us to inspect observable sequences. The result of each, generally, returns a sequence with a single value. We will continue to look at methods to reduce our sequence until we discover the elusive functional fold feature. \ No newline at end of file diff --git a/content/08_Transformation.md b/content/06_Transformation.md similarity index 85% rename from content/08_Transformation.md rename to content/06_Transformation.md index 18c8440..af9fdcb 100644 --- a/content/08_Transformation.md +++ b/content/06_Transformation.md @@ -6,25 +6,26 @@ title: Transformation of sequences The values from the sequences we consume are not always in the format we need. Sometimes there is too much noise in the data so we strip the values down. Sometimes each value needs to be expanded either into a richer object or into more values. By composing operators, Rx allows you to control the quality as well as the quantity of values in the observable sequences you consume. -Up until now, we have looked at creation of sequences, transition into sequences, and, the reduction of sequences by filtering, aggregating or folding. In this chapter we will look at _transforming_ sequences. This allows us to introduce our third category of functional methods, _bind_. A bind function in Rx will take a sequence and apply some set of transformations on each element to produce a new sequence. +Up until now, we have looked at creation of sequences, transition into sequences, and, the reduction of sequences by filtering. In this chapter we will look at _transforming_ sequences. -To review: +TODO: should we move this one chapter earlier? Would it be handy to have this in Filtering? -``` -Ana(morphism) T --> IObservable -Cata(morphism) IObservable --> T -Bind IObservable --> IObservable -``` +Just before we move on to introducing the new operators, we will quickly create our own extension method. We will use this 'Dump' extension method to help build our samples. -Now that we have been introduced to all three of our higher order functions, you may find that you already know them. Bind and Cata(morphism) were made famous by [MapReduce](http://en.wikipedia.org/wiki/MapReduce) framework from Google. Here Google refer to Bind and Cata by their perhaps more common aliases; Map and Reduce. +```csharp +public static class SampleExtentions +{ + public static void Dump(this IObservable source, string name) + { + source.Subscribe( + i=>Console.WriteLine("{0}-->{1}", name, i), + ex=>Console.WriteLine("{0} failed-->{1}", name, ex.Message), + ()=>Console.WriteLine("{0} completed", name)); + } +} +``` -It may help to remember our terms as the `ABCs` of higher order functions. -``` -Ana enters the sequence. T --> IObservable -Bind modifies the sequence. IObservable --> IObservable -Cata leaves the sequence. IObservable --> T -``` ## Select @@ -104,185 +105,98 @@ query.Dump("anon"); In Rx, `Select` has another overload. The second overload provides two values to the `selector` function. The additional argument is the element's index in the sequence. Use this method if the index of the element in the sequence is important to your selector function. -## Cast and OfType - -If you were to get a sequence of objects i.e. `IObservable`, you may find it less than useful. There is a method specifically for `IObservable` that will cast each element to a given type, and logically it is called `Cast()`. - -```csharp -var objects = new Subject(); -objects.Cast().Dump("cast"); -objects.OnNext(1); -objects.OnNext(2); -objects.OnNext(3); -objects.OnCompleted(); -``` - -Output: - -``` -cast --> 1 -cast --> 2 -cast --> 3 -cast completed -``` - -If however we were to add a value that could not be cast into the sequence then we get errors. - -```csharp -var objects = new Subject(); -objects.Cast().Dump("cast"); -objects.OnNext(1); -objects.OnNext(2); -objects.OnNext("3");//Fail -``` - -Output: - -``` -cast --> 1 -cast --> 2 -cast failed --> Specified cast is not valid. -``` - -Thankfully, if this is not what we want, we could use the alternative extension method `OfType()`. - -```csharp -var objects = new Subject(); -objects.OfType().Dump("OfType"); -objects.OnNext(1); -objects.OnNext(2); -objects.OnNext("3");//Ignored -objects.OnNext(4); -objects.OnCompleted(); -``` - -Output: - -``` -OfType --> 1 -OfType --> 2 -OfType --> 4 -OfType completed -``` - -It is fair to say that while these are convenient methods to have, we could have created them with the operators we already know about. - -```csharp -// source.Cast(); is equivalent to -source.Select(i=>(int)i); - -// source.OfType(); -source.Where(i=>i is int).Select(i=>(int)i); -``` - -## Timestamp and TimeInterval - -As observable sequences are asynchronous it can be convenient to know timings for when elements are received. The `Timestamp` extension method is a handy convenience method that wraps elements of a sequence in a light weight `Timestamped` structure. The `Timestamped` type is a struct that exposes the value of the element it wraps, and the timestamp it was created with as a `DateTimeOffset`. +## SelectMany -In this example we create a sequence of three values, one second apart, and then transform it to a time stamped sequence. The handy implementation of `ToString()` on `Timestamped` gives us a readable output. +Whereas `Select` produces one output for each input, `SelectMany` enables each input element to be transformed into any number of outputs. To see how this can work, let's first look at an example that uses just `Select`: -```csharp -Observable.Interval(TimeSpan.FromSeconds(1)) - .Take(3) - .Timestamp() - .Dump("TimeStamp"); +```cs +Observable + .Range(1, 5) + .Select(i => new string((char)(i+64), i)) + .Dump("strings"); ``` -Output +which produces this output: ``` -TimeStamp --> 0@01/01/2012 12:00:01 a.m. +00:00 -TimeStamp --> 1@01/01/2012 12:00:02 a.m. +00:00 -TimeStamp --> 2@01/01/2012 12:00:03 a.m. +00:00 -TimeStamp completed +strings-->A +strings-->BB +strings-->CCC +strings-->DDDD +strings-->EEEEE +strings completed ``` -We can see that the values 0, 1 & 2 were each produced one second apart. An alternative to getting an absolute timestamp is to just get the interval since the last element. The `TimeInterval` extension method provides this. As per the `Timestamp` method, elements are wrapped in a light weight structure. This time the structure is the `TimeInterval` type. +As you can see, for each of the numbers produced by `Range`, our output contains a string whose length is that many characters. What if, instead of transforming each number into a string, we transformed it into an `IObservable`. We can do that just by adding `.ToObservable()` after constructing the string: -```csharp -Observable.Interval(TimeSpan.FromSeconds(1)) - .Take(3) - .TimeInterval() - .Dump("TimeInterval"); +```cs +Observable + .Range(1, 5) + .Select(i => new string((char)(i+64), i).ToObservable()) + .Dump("sequences"); ``` -Output: +(Alternatively, we could have replaced the selection expression with `i => Observable.Repeat((char)(i+64), i)`. Either has exactly the same effect.) The output isn't terribly useful: ``` -TimeInterval --> 0@00:00:01.0180000 -TimeInterval --> 1@00:00:01.0010000 -TimeInterval --> 2@00:00:00.9980000 -TimeInterval completed +strings-->System.Reactive.Linq.ObservableImpl.ToObservableRecursive`1[System.Char] +strings-->System.Reactive.Linq.ObservableImpl.ToObservableRecursive`1[System.Char] +strings-->System.Reactive.Linq.ObservableImpl.ToObservableRecursive`1[System.Char] +strings-->System.Reactive.Linq.ObservableImpl.ToObservableRecursive`1[System.Char] +strings-->System.Reactive.Linq.ObservableImpl.ToObservableRecursive`1[System.Char] +strings completed ``` -As you can see from the output, the timings are not exactly one second but are pretty close. - -## Materialize and Dematerialize +We have an observable sequence of observable sequences. But look at what happens if we now replace that `Select` with a `SelectMany`: -The `Timestamp` and `TimeInterval` transform operators can prove useful for logging and debugging sequences, so too can the `Materialize` operator. `Materialize` transitions a sequence into a metadata representation of the sequence, taking an `IObservable` to an `IObservable>`. The `Notification` type provides meta data for the events of the sequence. - -If we materialize a sequence, we can see the wrapped values being returned. - -```csharp -Observable.Range(1, 3) - .Materialize() - .Dump("Materialize"); +```cs +Observable + .Range(1, 5) + .SelectMany(i => new string((char)(i+64), i).ToObservable()) + .Dump("chars"); ``` -Output: +This gives us an `IObservable`, with this output: ``` -Materialize --> OnNext(1) -Materialize --> OnNext(2) -Materialize --> OnNext(3) -Materialize --> OnCompleted() -Materialize completed +chars-->A +chars-->B +chars-->B +chars-->C +chars-->C +chars-->D +chars-->C +chars-->D +chars-->E +chars-->D +chars-->E +chars-->D +chars-->E +chars-->E +chars-->E +chars completed ``` -Note that when the source sequence completes, the materialized sequence produces an 'OnCompleted' notification value and then completes. `Notification` is an abstract class with three implementations: +The order has become a little scrambled, but if you look carefully you'll see that the number of occurrences of each letter is the same as when we were emitting strings. There is just one `A`, for example, but `C` appears three times, and `E` five times. - * OnNextNotification - * OnErrorNotification - * OnCompletedNotification - -`Notification` exposes four public properties to help you discover it: `Kind`, `HasValue`, `Value` and `Exception`. Obviously only `OnNextNotification` will return true for `HasValue` and have a useful implementation of `Value`. It should also be obvious that `OnErrorNotification` is the only implementation that will have a value for `Exception`. The `Kind` property returns an `enum` which should allow you to know which methods are appropriate to use. - -```csharp -public enum NotificationKind -{ - OnNext, - OnError, - OnCompleted, -} -``` - -In this next example we produce a faulted sequence. Note that the final value of the materialized sequence is an `OnErrorNotification`. Also that the materialized sequence does not error, it completes successfully. - -```csharp -var source = new Subject(); -source.Materialize() - .Dump("Materialize"); +`SelectMany` expects the transformation function to return an `IObservable` for each input, and it then combines the result of those back into a single result. The LINQ to Objects equivalent is a little less chaotic. If you were to run this: -source.OnNext(1); -source.OnNext(2); -source.OnNext(3); - -source.OnError(new Exception("Fail?")); +```cs +Enumerable + .Range(1, 5) + .SelectMany(i => new string((char)(i+64), i)) + .ToList() ``` -Output: +it would produce a list with these elements: ``` -Materialize --> OnNext(1) -Materialize --> OnNext(2) -Materialize --> OnNext(3) -Materialize --> OnError(System.Exception) -Materialize completed +[ A, B, B, C, C, C, D, D, D, D, E, E, E, E, E ] ``` -Materializing a sequence can be very handy for performing analysis or logging of a sequence. You can unwrap a materialized sequence by applying the `Dematerialize` extension method. The `Dematerialize` will only work on `IObservable>`. +there, the order is less odd. -## SelectMany +TBD: from here. Of the transformation operators above, we can see that `Select` is the most useful. It allows very broad flexibility in its transformation output and can even be used to reproduce some of the other transformation operators. The `SelectMany` operator however is even more powerful. In LINQ and therefore Rx, the _bind_ method is `SelectMany`. Most other transformation operators can be built with `SelectMany`. Considering this, it is a shame to think that `SelectMany` may be one of the most misunderstood methods in LINQ. @@ -681,4 +595,126 @@ On deeper analysis of the operators we find that most of the operators are actua - Accumulate - Inject -Now you should feel that you have a strong understanding of how a sequence can be manipulated. What we have learnt up to this point however can all largely be applied to `IEnumerable` sequences too. Rx can be much more complex than what many people will have dealt with in `IEnumerable` world, as we have seen with the `SelectMany` operator. In the next part of the book we will uncover features specific to the asynchronous nature of Rx. With the foundation we have built so far we should be able to tackle the far more challenging and interesting features of Rx. \ No newline at end of file +Now you should feel that you have a strong understanding of how a sequence can be manipulated. What we have learnt up to this point however can all largely be applied to `IEnumerable` sequences too. Rx can be much more complex than what many people will have dealt with in `IEnumerable` world, as we have seen with the `SelectMany` operator. In the next part of the book we will uncover features specific to the asynchronous nature of Rx. With the foundation we have built so far we should be able to tackle the far more challenging and interesting features of Rx. + + + +## Cast + +If you were to get a sequence of objects i.e. `IObservable`, you may find it less than useful. There is a method specifically for `IObservable` that will cast each element to a given type, and logically it is called `Cast()`. + +```csharp +var objects = new Subject(); +objects.Cast().Dump("cast"); +objects.OnNext(1); +objects.OnNext(2); +objects.OnNext(3); +objects.OnCompleted(); +``` + +Output: + +``` +cast --> 1 +cast --> 2 +cast --> 3 +cast completed +``` + +If however we were to add a value that could not be cast into the sequence then we get errors. + +```csharp +var objects = new Subject(); +objects.Cast().Dump("cast"); +objects.OnNext(1); +objects.OnNext(2); +objects.OnNext("3");//Fail +``` + +Output: + +``` +cast --> 1 +cast --> 2 +cast failed --> Specified cast is not valid. +``` + +That is the difference between `Cast` and the [`OfType` operator shown in Chapter 5](./05_Filtering.md#oftype). `OfType` is a filtering operator, and it removes any items that are not of the specified type. `Cast` doesn't remove anything—it is more like `Select` in that it applies a transformation (specifically a cast) to every input. If the cast fails, we get an error. + +This distinction might be easier to see if we recreate the functionality of `Cast` and `OfType` using other more fundamental operators. + +```csharp +// source.Cast(); is equivalent to +source.Select(i=>(int)i); + +// source.OfType(); +source.Where(i=>i is int).Select(i=>(int)i); +``` + + + +## Materialize and Dematerialize + +The `Timestamp` and `TimeInterval` transform operators can prove useful for logging and debugging sequences, so too can the `Materialize` operator. `Materialize` transitions a sequence into a metadata representation of the sequence, taking an `IObservable` to an `IObservable>`. The `Notification` type provides meta data for the events of the sequence. + +If we materialize a sequence, we can see the wrapped values being returned. + +```csharp +Observable.Range(1, 3) + .Materialize() + .Dump("Materialize"); +``` + +Output: + +``` +Materialize --> OnNext(1) +Materialize --> OnNext(2) +Materialize --> OnNext(3) +Materialize --> OnCompleted() +Materialize completed +``` + +Note that when the source sequence completes, the materialized sequence produces an 'OnCompleted' notification value and then completes. `Notification` is an abstract class with three implementations: + + * OnNextNotification + * OnErrorNotification + * OnCompletedNotification + +`Notification` exposes four public properties to help you discover it: `Kind`, `HasValue`, `Value` and `Exception`. Obviously only `OnNextNotification` will return true for `HasValue` and have a useful implementation of `Value`. It should also be obvious that `OnErrorNotification` is the only implementation that will have a value for `Exception`. The `Kind` property returns an `enum` which should allow you to know which methods are appropriate to use. + +```csharp +public enum NotificationKind +{ + OnNext, + OnError, + OnCompleted, +} +``` + +In this next example we produce a faulted sequence. Note that the final value of the materialized sequence is an `OnErrorNotification`. Also that the materialized sequence does not error, it completes successfully. + +```csharp +var source = new Subject(); +source.Materialize() + .Dump("Materialize"); + +source.OnNext(1); +source.OnNext(2); +source.OnNext(3); + +source.OnError(new Exception("Fail?")); +``` + +Output: + +``` +Materialize --> OnNext(1) +Materialize --> OnNext(2) +Materialize --> OnNext(3) +Materialize --> OnError(System.Exception) +Materialize completed +``` + +Materializing a sequence can be very handy for performing analysis or logging of a sequence. You can unwrap a materialized sequence by applying the `Dematerialize` extension method. The `Dematerialize` will only work on `IObservable>`. + diff --git a/content/07_Aggregation.md b/content/07_Aggregation.md index fa9a7aa..6ff763c 100644 --- a/content/07_Aggregation.md +++ b/content/07_Aggregation.md @@ -8,21 +8,6 @@ Data is not always valuable is its raw form. Sometimes we need to consolidate, c Continuing with the theme of reducing an observable sequence, we will look at the aggregation functions that are available to us in Rx. Our first set of methods continues on from our last chapter, as they take an observable sequence and reduce it to a sequence with a single value. We then move on to find operators that can transition a sequence back to a scalar value, a functional fold. -Just before we move on to introducing the new operators, we will quickly create our own extension method. We will use this 'Dump' extension method to help build our samples. - -```csharp -public static class SampleExtentions -{ - public static void Dump(this IObservable source, string name) - { - source.Subscribe( - i=>Console.WriteLine("{0}-->{1}", name, i), - ex=>Console.WriteLine("{0} failed-->{1}", name, ex.Message), - ()=>Console.WriteLine("{0} completed", name)); - } -} -``` - Those who use [LINQPad](http://www.linqpad.net/) will recognize that this is the source of inspiration. For those who have not used LINQPad, I highly recommend it. It is perfect for whipping up quick samples to validate a snippet of code. LINQPad also fully supports the `IObservable` type. ## Count @@ -401,4 +386,255 @@ When working with nested observables, it can be handy to adopt the convention th In this chapter we are starting to uncover the power of LINQ and how it applies to Rx. We chained methods together to recreate the effect that other methods already provide. While this is academically nice, it also allows us to starting thinking in terms of functional composition. We have also seen that some methods work nicely with certain types: `First()` + `BehaviorSubject`, `Single()` + `AsyncSubject`, `Single()` + `Aggregate()` etc. We have covered the second of our three classifications of operators, _catamorphism_. Next we will discover more methods to add to our functional composition tool belt and also find how Rx deals with our third functional concept, _bind_. -Consolidating data into groups and aggregates enables sensible consumption of mass data. Fast moving data can be too overwhelming for batch processing systems and human consumption. Rx provides the ability to aggregate and partition on the fly, enabling real-time reporting without the need for expensive CEP or OLAP products. \ No newline at end of file +Consolidating data into groups and aggregates enables sensible consumption of mass data. Fast moving data can be too overwhelming for batch processing systems and human consumption. Rx provides the ability to aggregate and partition on the fly, enabling real-time reporting without the need for expensive CEP or OLAP products. + + + +TODO: integrate these, which were previously in the vaguely titled Inspection chapter + + +## Any + +First we can look at the parameterless overload for the extension method `Any`. This will simply return an observable sequence that has the single value of `false` if the source completes without any values. If the source does produce a value however, then when the first value is produced, the result sequence will immediately push `true` and then complete. If the first notification it gets is an error, then it will pass that error on. + +```csharp +var subject = new Subject(); +subject.Subscribe(Console.WriteLine, () => Console.WriteLine("Subject completed")); +var any = subject.Any(); + +any.Subscribe(b => Console.WriteLine("The subject has any values? {0}", b)); + +subject.OnNext(1); +subject.OnCompleted(); +``` + +Output: + +``` +1 +The subject has any values? True +subject completed +``` + +If we now remove the OnNext(1), the output will change to the following + +``` +subject completed +The subject has any values? False +``` + +If the source errors it would only be interesting if it was the first notification, otherwise the `Any` method will have already pushed true. If the first notification is an error then `Any` will just pass it along as an `OnError` notification. + +```csharp +var subject = new Subject(); +subject.Subscribe(Console.WriteLine, + ex => Console.WriteLine("subject OnError : {0}", ex), + () => Console.WriteLine("Subject completed")); +var any = subject.Any(); + +any.Subscribe(b => Console.WriteLine("The subject has any values? {0}", b), + ex => Console.WriteLine(".Any() OnError : {0}", ex), + () => Console.WriteLine(".Any() completed")); + +subject.OnError(new Exception()); +``` + +Output: + +``` +subject OnError : System.Exception: Fail +.Any() OnError : System.Exception: Fail +``` + +The `Any` method also has an overload that takes a predicate. This effectively makes it a `Where` with an `Any` appended to it. + +```csharp +subject.Any(i => i > 2); +// Functionally equivalent to +subject.Where(i => i > 2).Any(); +``` + +As an exercise, write your own version of the two `Any` extension method overloads. While the answer may not be immediately obvious, we have covered enough material for you to create this using the methods you know... + +Example of the `Any` extension methods written with `Observable.Create`: + +```csharp +public static IObservable MyAny(this IObservable source) +{ + return Observable.Create( + o => + { + var hasValues = false; + return source + .Take(1) + .Subscribe( + _ => hasValues = true, + o.OnError, + () => + { + o.OnNext(hasValues); + o.OnCompleted(); + }); + }); +} + +public static IObservable MyAny( + this IObservable source, + Func predicate) +{ + return source + .Where(predicate) + .MyAny(); +} +``` + +## All + +The `All`() extension method works just like the `Any` method, except that all values must meet the predicate. As soon as a value does not meet the predicate a `false` value is returned then the output sequence completed. If the source is empty, then `All` will push `true` as its value. As per the `Any` method, and errors will be passed along to the subscriber of the `All` method. + +```csharp +var subject = new Subject(); +subject.Subscribe(Console.WriteLine, () => Console.WriteLine("Subject completed")); +var all = subject.All(i => i < 5); +all.Subscribe(b => Console.WriteLine("All values less than 5? {0}", b)); + +subject.OnNext(1); +subject.OnNext(2); +subject.OnNext(6); +subject.OnNext(2); +subject.OnNext(1); +subject.OnCompleted(); +``` + +Output: + +``` +1 +2 +6 +All values less than 5? False +all completed +2 +1 +subject completed +``` + +Early adopters of Rx may notice that the `IsEmpty` extension method is missing. You can easily replicate the missing method using the `All` extension method. + +```csharp +// IsEmpty() is deprecated now. +// var isEmpty = subject.IsEmpty(); +var isEmpty = subject.All(_ => false); +``` + +## Contains + +The `Contains` extension method overloads could sensibly be overloads to the `Any` extension method. The `Contains` extension method has the same behavior as `Any`, however it specifically targets the use of `IComparable` instead of the usage of predicates and is designed to seek a specific value instead of a value that fits the predicate. I believe that these are not overloads of `Any` for consistency with `IEnumerable`. + +```csharp +var subject = new Subject(); +subject.Subscribe( + Console.WriteLine, + () => Console.WriteLine("Subject completed")); + +var contains = subject.Contains(2); + +contains.Subscribe( + b => Console.WriteLine("Contains the value 2? {0}", b), + () => Console.WriteLine("contains completed")); + +subject.OnNext(1); +subject.OnNext(2); +subject.OnNext(3); + +subject.OnCompleted(); +``` + +Output: + +``` +1 +2 +Contains the value 2? True +contains completed +3 +Subject completed +``` + +There is also an overload to `Contains` that allows you to specify an implementation of `IEqualityComparer` other than the default for the type. This can be useful if you have a sequence of custom types that may have some special rules for equality depending on the use case. + + + + +## DefaultIfEmpty + +The `DefaultIfEmpty` extension method will return a single value if the source sequence is empty. Depending on the overload used, it will either be the value provided as the default, or `Default(T)`. `Default(T)` will be the zero value for _struct_ types and will be `null` for classes. If the source is not empty then all values will be passed straight on through. + +In this example the source produces values, so the result of `DefaultIfEmpty` is just the source. + +```csharp +var subject = new Subject(); + +subject.Subscribe( + Console.WriteLine, + () => Console.WriteLine("Subject completed")); + +var defaultIfEmpty = subject.DefaultIfEmpty(); + +defaultIfEmpty.Subscribe( + b => Console.WriteLine("defaultIfEmpty value: {0}", b), + () => Console.WriteLine("defaultIfEmpty completed")); + +subject.OnNext(1); +subject.OnNext(2); +subject.OnNext(3); + +subject.OnCompleted(); +``` + +Output: + +``` +1 +defaultIfEmpty value: 1 +2 +defaultIfEmpty value: 2 +3 +defaultIfEmpty value: 3 +Subject completed +defaultIfEmpty completed +``` + +If the source is empty, we can use either the default value for the type (i.e. 0 for int) or provide our own value in this case 42. + +```csharp +var subject = new Subject(); + +subject.Subscribe( + Console.WriteLine, + () => Console.WriteLine("Subject completed")); + +var defaultIfEmpty = subject.DefaultIfEmpty(); + +defaultIfEmpty.Subscribe( + b => Console.WriteLine("defaultIfEmpty value: {0}", b), + () => Console.WriteLine("defaultIfEmpty completed")); + +var default42IfEmpty = subject.DefaultIfEmpty(42); + +default42IfEmpty.Subscribe( + b => Console.WriteLine("default42IfEmpty value: {0}", b), + () => Console.WriteLine("default42IfEmpty completed")); + +subject.OnCompleted(); +``` + +Output: + +``` +Subject completed +defaultIfEmpty value: 0 +defaultIfEmpty completed +default42IfEmpty value: 42 +default42IfEmpty completed +``` diff --git a/content/12_CombiningSequences.md b/content/12_CombiningSequences.md index 448d532..2e6de28 100644 --- a/content/12_CombiningSequences.md +++ b/content/12_CombiningSequences.md @@ -732,4 +732,61 @@ zippedSequence.Subscribe( The `And`/`Then`/`When` trio has more overloads that enable you to group an even greater number of sequences. They also allow you to provide more than one 'plan' (the output of the `Then` method). This gives you the `Merge` feature but on the collection of 'plans'. I would suggest playing around with them if this functionality is of interest to you. The verbosity of enumerating all of the combinations of these methods would be of low value. You will get far more value out of using them and discovering for yourself. -As we delve deeper into the depths of what the Rx libraries provide us, we can see more practical usages for it. Composing sequences with Rx allows us to easily make sense of the multiple data sources a problem domain is exposed to. We can concatenate values or sequences together sequentially with `StartWith`, `Concat` and `Repeat`. We can process multiple sequences concurrently with `Merge`, or process a single sequence at a time with `Amb` and `Switch`. Pairing values with `CombineLatest`, `Zip` and the `And`/`Then`/`When` operators can simplify otherwise fiddly operations like our drag-and-drop examples and monitoring system status. \ No newline at end of file +As we delve deeper into the depths of what the Rx libraries provide us, we can see more practical usages for it. Composing sequences with Rx allows us to easily make sense of the multiple data sources a problem domain is exposed to. We can concatenate values or sequences together sequentially with `StartWith`, `Concat` and `Repeat`. We can process multiple sequences concurrently with `Merge`, or process a single sequence at a time with `Amb` and `Switch`. Pairing values with `CombineLatest`, `Zip` and the `And`/`Then`/`When` operators can simplify otherwise fiddly operations like our drag-and-drop examples and monitoring system status. + + +TODO: Was in Inspection but I think this might go more naturally after Zip + + +## SequenceEqual + +Finally `SequenceEqual` extension method is perhaps a stretch to put in a chapter that starts off talking about catamorphism and fold, but it does serve well for the theme of inspection. This method allows us to compare two observable sequences. As each source sequence produces values, they are compared to a cache of the other sequence to ensure that each sequence has the same values in the same order and that the sequences are the same length. This means that the result sequence can return `false` as soon as the source sequences produce diverging values, or `true` when both sources complete with the same values. + +```csharp +var subject1 = new Subject(); + +subject1.Subscribe( + i=>Console.WriteLine("subject1.OnNext({0})", i), + () => Console.WriteLine("subject1 completed")); + +var subject2 = new Subject(); + +subject2.Subscribe( + i=>Console.WriteLine("subject2.OnNext({0})", i), + () => Console.WriteLine("subject2 completed")); + +var areEqual = subject1.SequenceEqual(subject2); + +areEqual.Subscribe( + i => Console.WriteLine("areEqual.OnNext({0})", i), + () => Console.WriteLine("areEqual completed")); + +subject1.OnNext(1); +subject1.OnNext(2); + +subject2.OnNext(1); +subject2.OnNext(2); +subject2.OnNext(3); + +subject1.OnNext(3); + +subject1.OnCompleted(); +subject2.OnCompleted(); +``` + +Output: + +``` +subject1.OnNext(1) +subject1.OnNext(2) +subject2.OnNext(1) +subject2.OnNext(2) +subject2.OnNext(3) +subject1.OnNext(3) +subject1 completed +subject2 completed +areEqual.OnNext(True) +areEqual completed +``` + +This chapter covered a set of methods that allow us to inspect observable sequences. The result of each, generally, returns a sequence with a single value. We will continue to look at methods to reduce our sequence until we discover the elusive functional fold feature. \ No newline at end of file diff --git a/content/13_TimeShiftedSequences.md b/content/13_TimeShiftedSequences.md index fa2f88e..5b65c74 100644 --- a/content/13_TimeShiftedSequences.md +++ b/content/13_TimeShiftedSequences.md @@ -518,4 +518,49 @@ public static IObservable Timeout( TODO: Observable.Merge reprise(has options to take schedulers too) --> -Rx provides features to tame the unpredictable element of time in a reactive paradigm. Data can be buffered, throttled, sampled or delayed to meet your needs. Entire sequences can be shifted in time with the delay feature, and timeliness of data can be asserted with the `Timeout` operator. These simple yet powerful features further extend the developer's tool belt for querying data in motion. \ No newline at end of file +Rx provides features to tame the unpredictable element of time in a reactive paradigm. Data can be buffered, throttled, sampled or delayed to meet your needs. Entire sequences can be shifted in time with the delay feature, and timeliness of data can be asserted with the `Timeout` operator. These simple yet powerful features further extend the developer's tool belt for querying data in motion. + + +TODO: this is about timing but not timeshifting. Decide whether to rename this chapter, or split it, so that we can accommodate these (which were in the Transformation chapter): + +## Timestamp and TimeInterval + +As observable sequences are asynchronous it can be convenient to know timings for when elements are received. The `Timestamp` extension method is a handy convenience method that wraps elements of a sequence in a light weight `Timestamped` structure. The `Timestamped` type is a struct that exposes the value of the element it wraps, and the timestamp it was created with as a `DateTimeOffset`. + +In this example we create a sequence of three values, one second apart, and then transform it to a time stamped sequence. The handy implementation of `ToString()` on `Timestamped` gives us a readable output. + +```csharp +Observable.Interval(TimeSpan.FromSeconds(1)) + .Take(3) + .Timestamp() + .Dump("TimeStamp"); +``` + +Output + +``` +TimeStamp --> 0@01/01/2012 12:00:01 a.m. +00:00 +TimeStamp --> 1@01/01/2012 12:00:02 a.m. +00:00 +TimeStamp --> 2@01/01/2012 12:00:03 a.m. +00:00 +TimeStamp completed +``` + +We can see that the values 0, 1 & 2 were each produced one second apart. An alternative to getting an absolute timestamp is to just get the interval since the last element. The `TimeInterval` extension method provides this. As per the `Timestamp` method, elements are wrapped in a light weight structure. This time the structure is the `TimeInterval` type. + +```csharp +Observable.Interval(TimeSpan.FromSeconds(1)) + .Take(3) + .TimeInterval() + .Dump("TimeInterval"); +``` + +Output: + +``` +TimeInterval --> 0@00:00:01.0180000 +TimeInterval --> 1@00:00:01.0010000 +TimeInterval --> 2@00:00:00.9980000 +TimeInterval completed +``` + +As you can see from the output, the timings are not exactly one second but are pretty close. diff --git a/content/C_AlgebraicUnderpinnings b/content/C_AlgebraicUnderpinnings index d723bbc..666a823 100644 --- a/content/C_AlgebraicUnderpinnings +++ b/content/C_AlgebraicUnderpinnings @@ -7,3 +7,28 @@ But I think this is an important point, and I'd like to make it somewhere. `First` and its variants are all examples of a group of operators that take a collection-like input and reduce it to a single value. This makes it structurally similar to some other operators we'll see later such as `Max`, `Average`, and `Sum`—they all reduce their entire input example to a single output value. (A function of this type is sometimes referred to as a _fold_, or if you like fancy but mathematically precise language, a [_catamorphism_](https://bartoszmilewski.com/2013/06/10/understanding-f-algebras/).) A hypothetical `FirstOrEmpty` would not fit the mould—sometimes its result would produce a single element and sometimes it would produce nothing. This might seem like an unnecessarily academic argument. However, this underestimates the extent to which LINQ in general and Rx in particular benefit from academic research. Composition is fundamental to how we use Rx—any real Rx program will tend to plug multiple operators together. This generally just works, but the fact that it does work is not an accident. Rx's design is heavily informed by research on how abstract algebra can be applied to software to ensure that such composition is sound. Rx does not make a big song and dance about this—you don't need to know what Monads or anamorphisms are to use it successfully. It just quietly relies on solid underlying theory to ensure that everything works smoothly. + + + +Originally from Transformation: + +To review: + +``` +Ana(morphism) T --> IObservable +Cata(morphism) IObservable --> T +Bind IObservable --> IObservable +``` + + +Now that we have been introduced to all three of our higher order functions, you may find that you already know them. Bind and Cata(morphism) were made famous by [MapReduce](http://en.wikipedia.org/wiki/MapReduce) framework from Google. Here Google refer to Bind and Cata by their perhaps more common aliases; Map and Reduce. + + + +It may help to remember our terms as the `ABCs` of higher order functions. + +``` +Ana enters the sequence. T --> IObservable +Bind modifies the sequence. IObservable --> IObservable +Cata leaves the sequence. IObservable --> T +``` From 83674a96537a186341ad72b6bbccabd7bf17e659 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Mon, 19 Jun 2023 08:21:36 +0100 Subject: [PATCH 013/142] Transformation WIP --- content/03_CreatingObservableSequences.md | 2 + content/06_Transformation.md | 243 +-- content/C_AlgebraicUnderpinnings | 102 + .../Ch06-Transformation-Marbles.ai | 1671 +++++++++++++++++ ...nsformation-MarblesSelect-Many-Marbles.svg | 202 ++ 5 files changed, 2032 insertions(+), 188 deletions(-) create mode 100644 content/GraphicsIntro/Ch06-Transformation-Marbles.ai create mode 100644 content/GraphicsIntro/Ch06-Transformation-MarblesSelect-Many-Marbles.svg diff --git a/content/03_CreatingObservableSequences.md b/content/03_CreatingObservableSequences.md index 6a39c9b..d86d1d3 100644 --- a/content/03_CreatingObservableSequences.md +++ b/content/03_CreatingObservableSequences.md @@ -46,6 +46,8 @@ Sequence terminated Although `MySequenceOfNumbers` is technically a correct implementation of `IObservable`, it is a little too simple to be useful. For one thing, we typically use Rx when there are events of interest, but this is not really reactive at all—it just produces a fixed set of numbers immediately. Moreover, the implementation is blocking—it doesn't even return from `Subscribe` until after it has finished producing all of its values. This example illustrates the basics of how a source provides events to a subscriber, but if we just want to represent a predetermined sequence of numbers, we might as well use an `IEnumerable` implementation such as `List` or an array. +## Representing Filesystem Events in Rx + Let's look at something a little more realistic. This is a wrapper around .NET's `FileSystemWatcher`, presenting filesystem change notifications as an `IObservable`. (Note: this is not necessarily the best design for an Rx `FileSystemWatcher` wrapper. The watcher provides events for several different types of change, and one of them, `Renamed`, provides details as an `RenamedEventArgs`. That derives from `FileSystemEventArgs` so collapsing everything down to a single event stream does work, but this would be inconvenient for applications that wanted access to the details of rename events. A more serious design problem is that this is incapable of reporting more than one event from `FileSystemWatcher.Error`. Such errors might be transient and recoverable, in which case an application might want to continue operating, but since this class chooses to represent everything with a single `IObservable`, it reports errors by invoking the observer's `OnError`, at which point the rules of Rx oblige us to stop. It would be possible to work around this with Rx's `Retry` operator, which can automatically resubscribe after an error, but it might be better to offer a separate `IObservable` so that we can report errors in a non-terminating way. However, the additional complication of that won't always be warranted—the simplicity of this design means it will be a good fit for some applications. As is often the way with software design, there isn't a one-size-fits-all approach.) ```cs diff --git a/content/06_Transformation.md b/content/06_Transformation.md index af9fdcb..b6e5ddd 100644 --- a/content/06_Transformation.md +++ b/content/06_Transformation.md @@ -194,211 +194,55 @@ it would produce a list with these elements: [ A, B, B, C, C, C, D, D, D, D, E, E, E, E, E ] ``` -there, the order is less odd. +The order is less odd. It's worth exploring the reasons for this in a little more detail. -TBD: from here. -Of the transformation operators above, we can see that `Select` is the most useful. It allows very broad flexibility in its transformation output and can even be used to reproduce some of the other transformation operators. The `SelectMany` operator however is even more powerful. In LINQ and therefore Rx, the _bind_ method is `SelectMany`. Most other transformation operators can be built with `SelectMany`. Considering this, it is a shame to think that `SelectMany` may be one of the most misunderstood methods in LINQ. - -In my personal discovery of Rx, I struggled to grasp the `SelectMany` extension method. One of my colleagues helped me understand `SelectMany` better by suggesting I think of it as from one, select many. An even better definition is From one, select zero or more. If we look at the signature for `SelectMany` we see that it takes a source sequence and a function as its parameters. - -```csharp -IObservable SelectMany( - this IObservable source, - Func> selector) -``` - -The `selector` parameter is a function that takes a single value of `T` and returns a sequence. Note that the sequence the `selector` returns does not have to be of the same type as the `source`. Finally, the `SelectMany` return type is the same as the `selector` return type. - -This method is very important to understand if you wish to work with Rx effectively, so let's step through this slowly. It is also important to note its subtle differences to `IEnumerable`'s `SelectMany` operator, which we will look at soon. - -Our first example will take a sequence with the single value '3' in it. The selector function we provide will produce a further sequence of numbers. This result sequence will be a range of numbers from 1 to the value provided i.e. 3. So we take the sequence [3] and return the sequence [1,2,3] from our `selector` function. - -```csharp -Observable.Return(3) - .SelectMany(i => Observable.Range(1, i)) - .Dump("SelectMany"); -``` - -Output: - -``` -SelectMany --> 1 -SelectMany --> 2 -SelectMany --> 3 -SelectMany completed -``` - -If we modify our source to be a sequence of [1,2,3] like this... - -```csharp -Observable.Range(1,3) - .SelectMany(i => Observable.Range(1, i)) - .Dump("SelectMany"); -``` - -...we will now get an output with the result of each sequence ([1], [1,2] and [1,2,3]) flattened to produce [1,1,2,1,2,3]. - -``` -SelectMany --> 1 -SelectMany --> 1 -SelectMany --> 2 -SelectMany --> 1 -SelectMany --> 2 -SelectMany --> 3 -SelectMany completed -``` - -This last example better illustrates how `SelectMany` can take a `single` value and expand it to many values. When we then apply this to a `sequence` of values, the result is each of the child sequences combined to produce the final sequence. In both examples, we have returned a sequence that is the same type as the source. This is not a restriction however, so in this next example we return a different type. We will reuse the `Select` example of transforming an integer to an ASCII character. To do this, the `selector` function just returns a char sequence with a single value. - -```csharp -Func letter = i => (char)(i + 64); -Observable.Return(1) - .SelectMany(i => Observable.Return(letter(i))); - .Dump("SelectMany"); -``` - -So with the input of [1] we return a sequence of [A]. - -``` -SelectMany --> A -SelectMany completed -``` - -Extending the source sequence to have many values, will give us a result with many values. - -```csharp -Func letter = i => (char)(i + 64); -Observable.Range(1,3) - .SelectMany(i => Observable.Return(letter(i))) - .Dump("SelectMany"); -``` - -Now the input of [1,2,3] produces [[A], [B], [C]] which is flattened to just [A,B,C]. - -``` -SelectMany --> A -SelectMany --> B -SelectMany --> C -``` - -Note that we have effectively recreated the `Select` operator. - -The last example maps a number to a letter. As there are only 26 letters, it would be nice to ignore values greater than 26. This is easy to do. While we must return a sequence for each element of the source, there aren't any rules that prevent it from being an empty sequence. In this case if the element value is a number outside of the range 1-26 we return an empty sequence. - -```csharp -Func letter = i => (char)(i + 64); -Observable.Range(1, 30) - .SelectMany( - i => - { - if (0 < i && i < 27) - { - return Observable.Return(letter(i)); - } - else - { - return Observable.Empty(); - } - }) - .Dump("SelectMany"); -``` - -Output: - -``` -A -B -C -... -X -Y -Z -Completed -``` - -To be clear, for the source sequence [1..30], the value 1 produced a sequence [A], the value 2 produced a sequence [B] and so on until value 26 produced a sequence [Z]. When the source produced value 27, the `selector` function returned the empty sequence []. Values 28, 29 and 30 also produced empty sequences. Once all the sequences from the calls to the selector had been fattened to produce the final result, we end up with the sequence [A..Z]. - -Now that we have covered the third of our three higher order functions, let us take time to reflect on some of the methods we have already learnt. First we can consider the `Where` extension method. We first looked at this method in the chapter on [Reducing a sequence](05_Filtering.html#Where). While this method does reduce a sequence, it is not a fit for a functional _fold_ as the result is still a sequence. Taking this into account, we find that `Where` is actually a fit for _bind_. As an exercise, try to write your own extension method version of `Where` using the `SelectMany` operator. Review the last example for some help... +### IEnumerable vs. IObservable SelectMany -An example of a `Where` extension method written using `SelectMany`: +`IEnumerable` is pull based—sequences produce elements only when asked. `Enumerable.SelectMany` pulls items from its sources in a very particular order. It begins by asking its source `IEnumerable` (the one returned by `Range` in the preceding example), and then retrieves the first value. `SelectMany` then invokes our callback, passing this first item, and then enumerates everything in the `IEnumerable` our callback returns. Only when it has exhausted this does it ask the source (`Range`) for a second item. Again, it passes that second item to our callback and then fully enumerates the `IEnumerable`, we return, and so on. So we get everything from the first nested sequence first, then everything from the second, etc. -```csharp -public static IObservable Where(this IObservable source, Func predicate) -{ - return source.SelectMany(item => - { - if (predicate(item)) - { - return Observable.Return(item); - } - else - { - return Observable.Empty(); - } - }); -} -``` +`Enumerable.SelectMany` is able to proceed in this way for two reasons. First, the pull-based nature of `IEnumerable` enables it to decide on the order in which it processes things. Second, with `IEnumerable` it is normal for operations to block, i.e., not to return until they have something for us. When the preceding example calls `ToList`, it won't return until it has fully populated a `List` with all of the results. -Now that we know we can use `SelectMany` to produce `Where`, it should be a natural progression for you the reader to be able to extend this to reproduce other filters like `Skip` and `Take`. +Rx is not like that. First, consumers don't get to tell sources when to produce each item—sources emit items when they are ready to. Second, Rx typically models ongoing processes, so we don't expect method calls to block until they are done. There are some cases where Rx sequences will naturally produce all of their items very quickly and complete as soon as they can, but kinds of information sources that we tend to want model with Rx typically don't behave that way. So most operations in Rx do not block—they immediately return something (such as an `IObservable`, or an `IDisposable` representing a subscription) and will then produce values later. -As another exercise, try to write your own version of the `Select` extension method using `SelectMany`. Refer to our example where we use `SelectMany` to convert `int` values into `char` values if you need some help... +The Rx version of the example we're currently examining is in fact one of these unusual cases where each of the sequences emits items as soon as it can. Logically speaking, all of the nested `IObservable` sequences are in progress concurrently. The result is a mess because each of the observable sources here attempts to produce every element as quickly as the source can consume them. The fact that they end up being interleaved has to do with the way these kinds of observable sources use Rx's _scheduler_ system, which we will describe in chapter XXX. Schedulers ensure that even when we are modelling logically concurrent processes, the rules of Rx are maintained, and observers of the output of `SelectMany` will only be given one item at a time. The following marble diagram shows the events that lead to the scrambled output we see: -An example of a `Select` extension method written using `SelectMany`: +![An Rx marble diagram illustrating two observables. The first is labelled 'source', and it shows six events, labelled numerically. These fall into three groups: events 1 and 2 occur close together, and are followed by a gap. Then events 3, 4, and 5 are close together. And then after another gap event 6 occurs, not close to any. The second observable is labelled 'source.Quiescent(TimeSpan.FromSeconds(2), Scheduler.Default). It shows three events. The first is labelled '[1, 2], and its horizontal position shows that it occurs a little bit after the '2' event on the 'source' observable. The second event on the second observable is labelled '[3,4,5]' and occurs a bit after the '5' event on the 'source' observable. The third event from on the second observable is labelled '[6]', and occurs a bit after the '6' event on the 'source' observable. The image conveys the idea that each time the source produces some events and then stops, the second observable will produce an event shortly after the source stops, which will contain a list with all of the events from the source's most recent burst of activity.](GraphicsIntro/Ch06-Transformation-MarblesSelect-Many-Marbles.svg) -```csharp -public static IObservable MySelect( - this IObservable source, - Func selector) -{ - return source.SelectMany(value => Observable.Return(selector(value))); -} -``` - -### IEnumerable vs. IObservable SelectMany -It is worth noting the difference between the implementations of `IEnumerable` `SelectMany` and `IObservable` `SelectMany`. Consider that `IEnumerable` sequences are pull based and blocking. This means that when an `IEnumerable` is processed with a `SelectMany` it will pass one item at a time to the `selector` function and wait until it has processed all of the values from the `selector` before requesting (pulling) the next value from the source. +We can make a small tweak to prevent the child sequences all from trying to run at the same time: -Consider an `IEnumerable` source sequence of `[1,2,3]`. If we process that with a `SelectMany` operator that returns a sequence of `[x*10, (x*10)+1, (x*10)+2]`, we would get the `[[10,11,12]`, `[20,21,22]`, `[30,31,32]]`. - -```csharp -private IEnumerable GetSubValues(int offset) -{ - yield return offset * 10; - yield return (offset * 10) + 1; - yield return (offset * 10) + 2; -} -``` - -We then apply the `GetSubValues` method with the following code: - -```csharp -var enumerableSource = new [] {1, 2, 3}; -var enumerableResult = enumerableSource.SelectMany(GetSubValues); - -foreach (var value in enumerableResult) -{ - Console.WriteLine(value); -} +```cs +Observable + .Range(1, 5) + .SelectMany(i => Observable.Repeat((char)(i+64), i).Delay(TimeSpan.FromMilliseconds(i * 100))) + .Dump("chars"); ``` -The resulting child sequences are flattened into [10,11,12,20,21,22,30,31,32]. +Now we get output consistent with the `IEnumerable` version: ``` -10 -11 -12 -20 -21 -22 -30 -31 -32 +chars-->A +chars-->B +chars-->B +chars-->C +chars-->C +chars-->C +chars-->D +chars-->D +chars-->D +chars-->D +chars-->E +chars-->E +chars-->E +chars-->E +chars-->E +chars completed ``` -The difference with `IObservable` sequences is that the call to the `SelectMany`'s `selector` function is not blocking and the result sequence can produce values over time. This means that subsequent 'child' sequences can overlap. Let us consider again a sequence of [1,2,3], but this time values are produced three second apart. The `selector` function will also produce sequence of [x*10, (x*10)+1, (x*10)+2] as per the example above, however these values will be four seconds apart. +This clarifies that `SelectMany` lets you produce a sequence for each item that the source produces, and to have all of the items from all of those new sequences flattened back out into one sequence that contains everything. -To visualize this kind of asynchronous data we need to represent space and time. +However, we probably won't want production code to introduce delays just to make it easier to see what's going. Rx's ability to model concurrent process is one of the big reasons for using it. So we need to be able to think about this style of concurrency, so it can be helpful to visualize this kind of asynchronous operation. ### Visualizing sequences @@ -598,6 +442,29 @@ On deeper analysis of the operators we find that most of the operators are actua Now you should feel that you have a strong understanding of how a sequence can be manipulated. What we have learnt up to this point however can all largely be applied to `IEnumerable` sequences too. Rx can be much more complex than what many people will have dealt with in `IEnumerable` world, as we have seen with the `SelectMany` operator. In the next part of the book we will uncover features specific to the asynchronous nature of Rx. With the foundation we have built so far we should be able to tackle the far more challenging and interesting features of Rx. +### The Significant of SelectMany + +If you've been reading this book's chapters in order, you had already seen two examples of `SelectMany` in earlier chapters. The first example in the [**LINQ Operators and Composition** section of Chapter 2](./02_KeyTypes.md#linq-operators-and-composition) used it. Here's the relevant code: + +```cs +IObservable onoffs = + from _ in src + from delta in Observable.Return(1, scheduler).Concat(Observable.Return(-1, scheduler).Delay(minimumInactivityPeriod, scheduler)) + select delta; +``` + +(If you're wondering where the call to `SelectMany` is in that, remember that if a Query Expression contains two `from` clauses, the C# compiler turns those into a call to `SelectMany`.) This illustrates a common pattern in Rx, which might be described as fanning out, and then back in again. + +As you may recall, this example worked by creating a new, short-lived `IObservable` for each item produced by `src`. (These child sequences, represented by the `delta` range variable in the example, produce the value `1`, and then after the specified `minimumActivityPeriod`, they produce `-1`. This enabled us to keep count of the number of recent events emitted.) This is the _fanning out_ part, where items in a source sequence produce new observable sequences. `SelectMany` is crucial in these scenarios because it enables all of those new sequences to be flattened back out into a single output sequence. + +The second place I used `SelectMany` was slightly different: it was the final example of the [**Representing Filesystem Events in Rx** section in Chapter 3](./03_CreatingObservableSequences.md#representing-filesystem-events-in-rx). Although that example also combined multiple observable sources into a single observable, that list of observables was fixed: there was one for each of the different events from `FileSystemWatcher`. It used a different operator `Merge` (which we'll get to in XXX), which was simpler to use in that scenario because you just pass it the list of all the observables you'd like to combine. However, because of a few other things this code wanted to do (including deferred startup, automated disposal, and sharing a single source when multiple subscribers were active), the particular combination of operators used to achieve this meant our merging code that returned an `IObservable`, needed to be invoked as a transforming step. If we'd just used `Select`, the result would have been an `IObservable>`. The structure of the code meant that it would only ever produce a single `IObservable`, so the double-wrapped type would be rather inconvenient. `SelectMany` is very useful in these scenarios—if composition of operators has introduced an extra layer of observables-in-observables that you don't want, `SelectMany` can unwrap one layer for you. + +These two cases—fanning out then back in, and removing or avoiding a layer of observables of observables—come up quite often, which makes `SelectMany` an important method. (It's not surprising that I was unable to avoid using it in earlier examples.) + +As it happens, `SelectMany` is also a particularly important operator in the mathematical theory that Rx is based on. It is a fundamental operator, in the sense that it is possible to build many other Rx operators with it. [Section XXX in Appendix C](./C_AlgebraicUnderpinnings) shows how you can implement `Select` and `Where` using `SelectMany`. + + + ## Cast diff --git a/content/C_AlgebraicUnderpinnings b/content/C_AlgebraicUnderpinnings index 666a823..c230b36 100644 --- a/content/C_AlgebraicUnderpinnings +++ b/content/C_AlgebraicUnderpinnings @@ -32,3 +32,105 @@ Ana enters the sequence. T --> IObservable Bind modifies the sequence. IObservable --> IObservable Cata leaves the sequence. IObservable --> T ``` + + +Add a section on how `SelectMany` is the monadic bind operator. + +This excerpt originally in chapter 4 illustrates that `Select` and `Where` can be built from `SelectMany`: + +---begin + +Extending the source sequence to have many values, will give us a result with many values. + +```csharp +Func letter = i => (char)(i + 64); +Observable.Range(1,3) + .SelectMany(i => Observable.Return(letter(i))) + .Dump("SelectMany"); +``` + +Now the input of [1,2,3] produces [[A], [B], [C]] which is flattened to just [A,B,C]. + +``` +SelectMany --> A +SelectMany --> B +SelectMany --> C +``` + +Note that we have effectively recreated the `Select` operator. + + + +The last example maps a number to a letter. As there are only 26 letters, it would be nice to ignore values greater than 26. This is easy to do. While we must return a sequence for each element of the source, there aren't any rules that prevent it from being an empty sequence. In this case if the element value is a number outside of the range 1-26 we return an empty sequence. + +```csharp +Func letter = i => (char)(i + 64); +Observable.Range(1, 30) + .SelectMany( + i => + { + if (0 < i && i < 27) + { + return Observable.Return(letter(i)); + } + else + { + return Observable.Empty(); + } + }) + .Dump("SelectMany"); +``` + +Output: + +``` +A +B +C +... +X +Y +Z +Completed +``` + +To be clear, for the source sequence [1..30], the value 1 produced a sequence [A], the value 2 produced a sequence [B] and so on until value 26 produced a sequence [Z]. When the source produced value 27, the `selector` function returned the empty sequence []. Values 28, 29 and 30 also produced empty sequences. Once all the sequences from the calls to the selector had been fattened to produce the final result, we end up with the sequence [A..Z]. + +Now that we have covered the third of our three higher order functions, let us take time to reflect on some of the methods we have already learnt. First we can consider the `Where` extension method. We first looked at this method in the chapter on [Reducing a sequence](05_Filtering.html#Where). While this method does reduce a sequence, it is not a fit for a functional _fold_ as the result is still a sequence. Taking this into account, we find that `Where` is actually a fit for _bind_. As an exercise, try to write your own extension method version of `Where` using the `SelectMany` operator. Review the last example for some help... + +An example of a `Where` extension method written using `SelectMany`: + +```csharp +public static IObservable Where(this IObservable source, Func predicate) +{ + return source.SelectMany(item => + { + if (predicate(item)) + { + return Observable.Return(item); + } + else + { + return Observable.Empty(); + } + }); +} +``` + +Now that we know we can use `SelectMany` to produce `Where`, it should be a natural progression for you the reader to be able to extend this to reproduce other filters like `Skip` and `Take`. + +As another exercise, try to write your own version of the `Select` extension method using `SelectMany`. Refer to our example where we use `SelectMany` to convert `int` values into `char` values if you need some help... + +An example of a `Select` extension method written using `SelectMany`: + +```csharp +public static IObservable MySelect( + this IObservable source, + Func selector) +{ + return source.SelectMany(value => Observable.Return(selector(value))); +} +``` + + +---end \ No newline at end of file diff --git a/content/GraphicsIntro/Ch06-Transformation-Marbles.ai b/content/GraphicsIntro/Ch06-Transformation-Marbles.ai new file mode 100644 index 0000000..75c8b45 --- /dev/null +++ b/content/GraphicsIntro/Ch06-Transformation-Marbles.ai @@ -0,0 +1,1671 @@ +%PDF-1.6 % +1 0 obj <>/OCGs[24 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream + + + + + application/pdf + + + Ch04-SelectMany-Marbles + + + Adobe Illustrator 27.6 (Windows) + 2023-06-19T08:16:13+01:00 + 2023-06-19T08:16:14+01:00 + 2023-06-19T08:16:14+01:00 + + + + 256 + 172 + JPEG + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgArAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9F+ftH1bWvJWt6RpEwt9 UvrKaCznZ2jCSuhCkugLLv3AxV5Y/wCXv59Wk2mWGk+Y4LfRbVZYbp/rEhnkRrqeRXUSQyhT6bRc QD8A+CrAbqpXb6L/AM5KXOt6vpjanPbxQWlvFYai7RC2lZfqvrEOF5eowWbg4Qn4m58fhxVktz5H /MGXS9Thk/0rzK+r6RqC6ybt7SKe1tI4DJF+4XcK8Myei0fCsnqDfFXpWl3eqanZ6gL6xbTStzcW 1p+8q8sCHhHcdP3fPcgb+PfFXnflPyD5x0i28q2d1xa50zVZ7qTUFm9aSPTPqfovBczFYvXluJSp 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 + + + + proof:pdf + uuid:65E6390686CF11DBA6E2D887CEACB407 + xmp.did:53d0f07e-3f0a-3147-a46a-ae5b0dc8d9f3 + uuid:de51097c-382c-4fb4-bfdc-26858164ead7 + + uuid:27c6700f-edc2-4596-8c7e-6d5a89794448 + xmp.did:14709273-42b8-4844-95f8-dd7dcca7f08e + uuid:65E6390686CF11DBA6E2D887CEACB407 + proof:pdf + + + + + saved + xmp.iid:14709273-42b8-4844-95f8-dd7dcca7f08e + 2023-05-24T06:57:15+01:00 + Adobe Illustrator 27.5 (Windows) + / + + + saved + xmp.iid:53d0f07e-3f0a-3147-a46a-ae5b0dc8d9f3 + 2023-06-19T08:14:09+01:00 + Adobe Illustrator 27.6 (Windows) + / + + + + Web + Document + AIRobin + 1 + False + False + + 504.807339 + 337.678899 + Pixels + + + + + Consolas + Consolas + Regular + Open Type + Version 7.00 + False + consola.ttf + + + Tahoma + Tahoma + Regular + Open Type + Version 7.01 + False + tahoma.ttf + + + + + + Cyan + Magenta + Yellow + Black + + + + + + Default Swatch Group + 0 + + + + White + RGB + PROCESS + 255 + 255 + 255 + + + Black + RGB + PROCESS + 0 + 0 + 0 + + + code keyword + PROCESS + 100.000000 + RGB + 44 + 50 + 200 + + + RGB Red + RGB + PROCESS + 255 + 0 + 0 + + + RGB Yellow + RGB + PROCESS + 255 + 255 + 0 + + + RGB Green + RGB + PROCESS + 0 + 255 + 0 + + + RGB Cyan + RGB + PROCESS + 0 + 255 + 255 + + + RGB Blue + RGB + PROCESS + 0 + 0 + 255 + + + RGB Magenta + RGB + PROCESS + 255 + 0 + 255 + + + R=193 G=39 B=45 + RGB + PROCESS + 193 + 39 + 45 + + + R=237 G=28 B=36 + RGB + PROCESS + 237 + 28 + 36 + + + R=241 G=90 B=36 + RGB + PROCESS + 241 + 90 + 36 + + + R=247 G=147 B=30 + RGB + PROCESS + 247 + 147 + 30 + + + R=251 G=176 B=59 + RGB + PROCESS + 251 + 176 + 59 + + + R=252 G=238 B=33 + RGB + PROCESS + 252 + 238 + 33 + + + R=217 G=224 B=33 + RGB + PROCESS + 217 + 224 + 33 + + + R=140 G=198 B=63 + RGB + PROCESS + 140 + 198 + 63 + + + R=57 G=181 B=74 + RGB + PROCESS + 57 + 181 + 74 + + + R=0 G=146 B=69 + RGB + PROCESS + 0 + 146 + 69 + + + R=0 G=104 B=55 + RGB + PROCESS + 0 + 104 + 55 + + + R=34 G=181 B=115 + RGB + PROCESS + 34 + 181 + 115 + + + R=0 G=169 B=157 + RGB + PROCESS + 0 + 169 + 157 + + + R=41 G=171 B=226 + RGB + PROCESS + 41 + 171 + 226 + + + R=0 G=113 B=188 + RGB + PROCESS + 0 + 113 + 188 + + + R=46 G=49 B=146 + RGB + PROCESS + 46 + 49 + 146 + + + R=27 G=20 B=100 + RGB + PROCESS + 27 + 20 + 100 + + + R=102 G=45 B=145 + RGB + PROCESS + 102 + 45 + 145 + + + R=147 G=39 B=143 + RGB + PROCESS + 147 + 39 + 143 + + + R=158 G=0 B=93 + RGB + PROCESS + 158 + 0 + 93 + + + R=212 G=20 B=90 + RGB + PROCESS + 212 + 20 + 90 + + + R=237 G=30 B=121 + RGB + PROCESS + 237 + 30 + 121 + + + R=199 G=178 B=153 + RGB + PROCESS + 199 + 178 + 153 + + + R=153 G=134 B=117 + RGB + PROCESS + 153 + 134 + 117 + + + R=115 G=99 B=87 + RGB + PROCESS + 115 + 99 + 87 + + + R=83 G=71 B=65 + RGB + PROCESS + 83 + 71 + 65 + + + R=198 G=156 B=109 + RGB + PROCESS + 198 + 156 + 109 + + + R=166 G=124 B=82 + RGB + PROCESS + 166 + 124 + 82 + + + R=140 G=98 B=57 + RGB + PROCESS + 140 + 98 + 57 + + + R=117 G=76 B=36 + RGB + PROCESS + 117 + 76 + 36 + + + R=96 G=56 B=19 + RGB + PROCESS + 96 + 56 + 19 + + + R=66 G=33 B=11 + RGB + PROCESS + 66 + 33 + 11 + + + + + + Grays + 1 + + + + R=0 G=0 B=0 + RGB + PROCESS + 0 + 0 + 0 + + + R=26 G=26 B=26 + RGB + PROCESS + 26 + 26 + 26 + + + R=51 G=51 B=51 + RGB + PROCESS + 51 + 51 + 51 + + + R=77 G=77 B=77 + RGB + PROCESS + 77 + 77 + 77 + + + R=102 G=102 B=102 + RGB + PROCESS + 102 + 102 + 102 + + + R=128 G=128 B=128 + RGB + PROCESS + 128 + 128 + 128 + + + R=153 G=153 B=153 + RGB + PROCESS + 153 + 153 + 153 + + + R=179 G=179 B=179 + RGB + PROCESS + 179 + 179 + 179 + + + R=204 G=204 B=204 + RGB + PROCESS + 204 + 204 + 204 + + + R=230 G=230 B=230 + RGB + PROCESS + 230 + 230 + 230 + + + R=242 G=242 B=242 + RGB + PROCESS + 242 + 242 + 242 + + + + + + Web Color Group + 1 + + + + R=63 G=169 B=245 + RGB + PROCESS + 63 + 169 + 245 + + + R=122 G=201 B=67 + RGB + PROCESS + 122 + 201 + 67 + + + R=255 G=147 B=30 + RGB + PROCESS + 255 + 147 + 30 + + + R=255 G=29 B=37 + RGB + PROCESS + 255 + 29 + 37 + + + R=255 G=123 B=172 + RGB + PROCESS + 255 + 123 + 172 + + + R=189 G=204 B=212 + RGB + PROCESS + 189 + 204 + 212 + + + + + + + Adobe PDF library 17.00 + 21.0.0 + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3 0 obj <> endobj 5 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>>/Thumb 29 0 R/TrimBox[0.0 0.0 504.807 337.679]/Type/Page/PieceInfo<>>> endobj 26 0 obj <>stream +HWMoFWQF~ZVܠ1^tqTqa2%Z2b`I$| ߼0Ws.Uq1j~tnOw +Q>*PHA-calyM[qYn*.uqQUsfSp-I0ZU>b[]=Paz}o1W?֫קb->-.ީ}zu٫2,%a\)et?/9:E{!8(83r B懧UZ\˺4 +]vwf[ +!t u۽ hwGL4i{W]\ث+wr+}&ƗZSxHq9dwF~}O#X-wɱmA'^)S\~\u%#9 u54ok"AW=k xc:ۣDO{ntt-H1 +fz74/4zc8~kSR,fq{U̦L2=S#' +Zם2?FT7jEVWu8{^a%FcA LQ=#oFs&2JSANo?q50HDi\ X4~-b"c%ʷvIh:$o !~g bqeЂխVUxô1YyluU#:UZV-Y''Xyѽ;ToO2x `f8* ^|#"BHvJ [Q@$Όoq5(LOiT i03$o44X[/p@o1U!~gG8=c +#o E>7XwQưE. %baOEFq=eĩ).FVqkj_Dq tGUOq0{ k:ZG> 9LڷIT!oMȶ (UqOZ{`ǽRqOUqO7MNF@ܓc>stream +8;Yhs9+HRs&:KmfiDI26X*=itNNtHIV_c+2/S^EQBmaO`)T\BiUX\"I!tI_AC2IpM +06tW:\p^YtdEocq#C;cX<5D<\pGZ=0g[8J,b@2V>,!*lJq/^30nmf\B*W1J'!-)tN(s7DqOZ47DG:9tl-L +)!Q',&ckq]bGpK7(*PiFdI>PLDiW&jBAd\9bQ_NFnf=+72M- +O[75DhOZf5,-QZd[iO;n4aODfhU5u.=f)-'_K>4i1GK>IIdU@)G0@>&/ngd_Y5nX"=<":~> +endstream endobj 8 0 obj <> endobj 9 0 obj <> endobj 10 0 obj <>stream +%!PS-Adobe-3.0 +%%Creator: Adobe Illustrator(R) 24.0 +%%AI8_CreatorVersion: 27.6.1 +%%For: (Ian Griffiths) () +%%Title: (Ch04-SelectMany-Marbles.ai) +%%CreationDate: 6/19/2023 8:16 AM +%%Canvassize: 16383 +%%BoundingBox: 16 -321 478 -15 +%%HiResBoundingBox: 16.134253203335 -320.412844036699 477.690925701381 -15.64892578125 +%%DocumentProcessColors: Cyan Magenta Yellow Black +%AI5_FileFormat 14.0 +%AI12_BuildNumber: 210 +%AI3_ColorUsage: Color +%AI7_ImageSettings: 0 +%%RGBProcessColor: 0 0 0 ([Registration]) +%%+ 0.172549024224281 0.196078434586525 0.7843137383461 (code keyword) +%AI3_Cropmarks: 0 -337.678899082567 504.807339449542 0 +%AI3_TemplateBox: 683.5 -384.5 683.5 -384.5 +%AI3_TileBox: -168.466320512286 -466.439455644799 673.393659959146 128.580502851295 +%AI3_DocumentPreview: None +%AI5_ArtSize: 14400 14400 +%AI5_RulerUnits: 6 +%AI24_LargeCanvasScale: 1 +%AI9_ColorModel: 1 +%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 +%AI5_TargetResolution: 800 +%AI5_NumLayers: 1 +%AI17_Begin_Content_if_version_gt:24 4 +%AI10_OpenToVie: -642.009174311924 43.7889908256893 1.00925925925926 0 7914.28440366973 8398.82568807339 4318 2607 18 1 0 89 170 0 0 0 1 1 0 1 1 0 0 +%AI17_Alternate_Content +%AI9_OpenToView: -642.009174311924 43.7889908256893 1.00925925925926 4318 2607 18 1 0 89 170 0 0 0 1 1 0 1 1 0 0 +%AI17_End_Versioned_Content +%AI5_OpenViewLayers: 7 +%AI17_Begin_Content_if_version_gt:24 4 +%AI17_Alternate_Content +%AI17_End_Versioned_Content +%%PageOrigin:283 -684 +%AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 +%AI9_Flatten: 1 +%AI12_CMSettings: 00.MS +%%EndComments + +endstream endobj 11 0 obj <>stream +%AI24_ZStandard_Data(/X̊E / MkZp*\F'@L.EvwoV?g0cx񰍧p ׳h(E^>h4&. Epxz, "!~("i~a+EHy8G)GH +`|H ǂhH d5laV[j Zbq ;M/H3g VNTwPnigmNB2~R2R.>V&9@Z "7r(žFzx5Uu_EXBv-pcAp`CV$ qGne$dkٵrhJ6)ҪHѠr\@!shkaFetH2Nx"jj&BKCU*Z:JFF,LBbAH7>Qz< ǚ. qoxX88R՗ UBYq,=KJJ +TH9h\C_j!j}THHER7*3р4(븃p8 ?}x8!ABa@D(GHް){(E[b!ͽr"tBHQcB C@HD  A "ɇ"q,`d9tرx(-P$HL "y8W\(לUwu*d4+?o<3'NHiu>OΤk=:CAV$vCP!'.Eac2x5 ݂p<V$H n*[,Mp0*d䳼*"^W5 #H9qVVcT$jE HHώ7"Bo@Ƣ"qF:$^І:*bX>tn8;8.r]|X0cX@f@F23 p0 nTmp4 HqtCdw, Gp<==|c,1]@yP\v m(m~h(HR\h(rC`~P$A.")HaBQ$_0$Q)j<c>|== p8C0 q:ԑtEHp4EmhC5a kT j@`,g,C(#@1a 3Y8cX| ]yA wqy^ ulcn.muhCz]UM=5Bl$#LEriY餄 {ǸOήG15aOS$gfedz,3rC) )QCk1L޵"Ai< Q$rЃ1`NHT 쨬 H/P$߯fiab)<+ !8Iq /V|V$g+h0A Er:-hA_<3)(LE" CC (Lk^IiҜ?ͶvNIg׵MCA34R'mUDr|+0HƠVWi4%>ɛ,VWti+U8yHd;<\ +mE=f.Hi1wNuMb֘vmy¼.㏈n-2.;Q}n{Gy3|͒RͿժ뎪};X;\xScNRyexx-[{9IeJ{_MR7<[!Y}Rdu1cjB=c*_J4~f&%ɬZ|[޹;uV#רyyycxxKSH]2|>6dg5eyl]hTIo՜KogLOL#>Tzy_BϮMyj4;Mވ݆4{[mgN&%=m>җFSY{tdYv{ fn5ջFPk׉tgu 7Kso/Z;?ͤ2ο[ӼT[}l3-(s/'S_GG +w[%v^XiS,IlvSs,v;kfمd+[V3Z +kG5=y]ϤOfi8ƀ6&&L6V+JS{hmJ~ϺG+Uz#ho3g_Zަ7&euoD𦸃Gޅ%|U[卭'O1i*-}Zl0]^>ϨVbVs)vq6@/ElruNO:{܋Gi!rI;WMnVWkyUrU3S*diYQ%}]W$n]>SnEgu)^6^~ǻE'we9dKm.E4\5Hf׵23\ۡΩRe3k-\p|a>UK19hjU*3S3EB ]0.JE3ݱ%gi[bKVlfY9]eK8R]ſr-kb]nȐѪb,K*V&Q:en9K)bh9r#-ɗ%njϻSK5UKSYl?~4J#ڻvY<9RU9B"C;ov~&!)-m-]#*1-x;m|vxSbd[˝ڂ9ߥ,=:=K.$Ĥ +Qs.7˛G-g5X콚RR.,%l(7l_ BSzѩh}Fdd55:=};yp(@Pă 4X` +" D&"D @֮u*Z^H"XaA!B=:a2nP$~0 E`C,V8H E" Ln2ѢݥM>2'L7ǦCuJc=+J]_TD滚ϱC !m;:WEuWO iPX9-h7C#% 23scjQ 7z,N< EHLOi9tx^9a-+JO]=nHw8̟M^-]F6eM;f,y͹i3k lFT># fK}[y,*^)y3=;$够sY,YuCXJq:wE+{gMz7JdJT:kܕT4"+󯜝t-褛%Rtsiz3Zs +펮wg|/Է,7pim5y/zg+|iB,ګ)֍(}EJ5ƢkخŲ]= vJS\ݩ,fJM]MiJdzbE$ۜ5U2"Sv̜8fXw88u;[Jh+\[fr簎[ǣ__H\"+s'؈&59+뻜O3`*B+o'm~W"3uQV32Ѥi7*:^U,o[us7V bj朖}=h.˵-hRf{jcY*klrvi?Ϛ=v+eI'Y 淆Uym~7tjjUoJ˯&Zh;%!>i-?"5hsDO"ukƖj3O1wҷ樵r6T IczR=&NuOSD,ҩi*v,QΊ +s"2ՙ Z~2={ǜKTs% m 5Үx%N-O/TdӴg)Ls9tiGc8{S[%Co0ֆ=1]Oxv4; jjӺުMmxsHݛ}rEt/N)ab1`^)vJR|m,?F!j]=FWNz񫗃 T7+=-NV޸=eZU3Lb8 -6dvVrndXMo =ߵ,Md+3T9{z*V<:t/t՛d^.^-Es5D:-k4pīykƫM㢗n kl6_ΚR+j:-OW/O{qʊ.Ou5;=潩*jhe(ucX Fmc+VkjWXeX{X_avϜ_-9h㬲nyKEsZMl*um~dgI&uieZ-8]wJ3᠋\[Ulsn!;=-wDwUfJm1&:_j|G{O O]5Pf5Kl}SkԵv vl\xw.ܤʚ]EjjiCɪ;ZwjtfGSVuZW{ymBCQ*VkM:H ek&bYqRZޫK4kJwB߭fKSixÝw趶6k>y|r}˓wAS<ڜ: heFJRa>QɌFOks")XvwEvfRҖZx8Ȁ:{֤ˮZ͇.1fzlm~˚ڙ!b:3#]׼V UT-re{^z^~4|[ULh7W&ڹZhxG{ךfYXL'>x3<5!yx*a]+t=O{:KK5Wk)OK.}ub͝ nQw6wNZrBnyˌWE^1e撫J楗eRb)O7u' +pVS+m +-6Kcu_aa:URx5~F2"KzJ{%++ɈV*/;|Vh4Z܊SSoecVN<}suWע̼_r2Ҳ"U~N3Utphqj됖Ȏ֦쐶tC{jsg4Uxo:ɛ7u͜ZS\C|ir_VwKuTKi4W%M QVf/yʼ.Lf]ml͕hN\=>+-Kʹ5=s)ȥ.UQ=@4L,L@@@A1QBL0`@Z%[ijrAw?šTE*Y݋ƪ0?mZӮʌwcIL*|~m攺YI{HuK7Hj. +T{He:UgS{哔a3󞨦Lb&n)/5U ͋XhS<2ZE[]n{+Ss+tguiGUswU?EQQ^pmIe!eb*RNbY6y!VvҊOiESs/4ór2D;+6&XFۤ+td&ά ov7-~semd&$"+Mﱭߕj*IrL|Mԫ1m␫,_UF%_v/J֮C5r4}kXs+vTxUUS]S gIrΊʨsVI>. )fw73$Rb)#5bըPSLTϾi^r=4dDdHWKWbٮq):;i\5XgEuc+{clQ'&ZV^\srZ +HVݿ|+i߳Ѫطx+JV6ձ1ˤ7%4I<&>D%Uqs4r,+ki-f!^pR/OwwֳiVΗ4YYisZwi3e[SVUODnPrufΩ+ILXpV=××"<nWOU+noK3< +^gwPg[WVXs2Ҕix^CJګ-%o%.-7MOЬh[XE m ͖fjͫ:\a֜0* Ku<;,؋ge/i4,UQ跗G۵nGjj̤r:ޭ6[mhRdcZnGJmnw2-Hd*`U]9:ݱ*s[걪*ޙJ|6M!zRW3SStDx?{jw$ʩ*#2M2]x6X"K˩^?wfGzG74o)M}ZXW>Py}Qii<} 69]N4īߝtϗ UgʳY;QY͸zWT%Eu:Rs7FFg$}Ϳ[қ|_Lf"ݲYE3L}6fH}޴:d. YN^4VT{VuIWYwy& WڵkM5L^6zjLWQY_ln[J4gku:[tetuHz[T袪Iy3/-}{zF7xzVd8h?+j]felR9uZ*TVjIjf'=:|Gk-e6ǚJ\:J%]lGZz4;w.˺Z岠JCpT9;Z+U'- +x+o,Yt:RZ1WCu3'&Ovy*R|]kҜU ϴtnuV[W]ݮgIuS(շZYeVѐE-󐕲\̵̤گ6[jdl>/DLOc )P#08< AP~B\@9GrNdCZ93sq3zo7$NԾGQXzIlS4qd.PbWEA+j sufyRxx⺧ +ޠi#&/zGTN(4rd95v!npa4iIz242U?enH#&vnQ^K!Vi.ilޝ,>LT]Z\TVfB/8<$k`S}cuT1KqGp -:ێqLJ>Vlwj:Q$eX*$.Y!k'^1ګ5'~ M-ww0z1Itذ}wv]k{KP21`qDՇ"T6_+(w?A˛,jm*pI&[ݪ)1d7l=`G- @h@NJL#0*B4yp+rrGY7fyƚ@ D1?9سblp +¤^~CxBGgP!c35j}nŸO5D1[M,9/KO9 +M'=2Qf|f 1zif2$"&9? y9c09 EPQ}USK▴@ ܮf߀,]!+2/\mSqaEz 2(u⡞#8J-Ōq;FjAK1JTwW5 I88]+VL- +sRڳFIH5i% gZJA[ 9]V` c ܃mLpT맡Oe5 HVZ4Y@LaZ(-%cfm:}PI&p,txfj(]5G'|n7&f0 W]"m/Ric_-6rU!y aNOCS.q =g 6򍩔bZ^l:n]M[(^iErY=OmSRS/׈2BڳJq؃Eo(EljʌC ܸ{9条[}>F5Q˼BpAL.tuh" "73mLa pv9SD]VjWQD HA"y)5m"5H=KھrB[J$%7 "j^آP3I]&!I>lOh&_ +50>d=-L?+dIe 1T/> ^<_PdfVn#yg@4&|g6O1]UeY&PcU9G!ajCA,_ --x- }x!Zo*x ++'u +gHRqV*}͹QCoDH ~-MWf| {II;-'{4Ztڳ_R [+U=OyaWAQ팛0QK +&r~:F=;A +PL8 봬Ia'BEC"|/EڛML?"{V|7W_A 0n͙ U'z'(bM`M`V>mB{)&pDx[LH699ujBqD#>٭O`  +@Jވ39F?*m#Ja.zȒ7 ,$Le%fPVj\k1b-,*{V*dBAC.  6'U~AL +q| f]d൛iӛ>4ӂ=@ &`@I3_P|'òI5H[rѭ2򲠈9Vu6!مluw`TtGƒuHIPEPW?UI#ݜnZ|RE\`u=S\ OgE43 OoHdw[/E^ Sz HL6P58g:N JdJF}~8v5Ts&:G(G3 $U0? |ۧP5<pd{JiI8DY'݃ l[Rav/=f¾p2\~4 q?Q[VxX ;tEqi}(sbZD΂z3`䬄{SN ~]GYbC!ʎaqz lp:oN2 + &iA(&GxI&WU,^rؾ$@-#`$=wD~]:.gX~nUݑ݋@$o`c$eDp׷o ˷%u> II" +ȮQw_} iՅ٦QO)y.Q2z`ll&>p`y* zz6Yx>͛?u"rXjFA?99H(`h%c߶OُKP`qRGv]2kH@ ut0HX,Whf]8[sQOQ"<+,zƖ!^Ap,{pP@E74W Y@ᛛl;%0-YI'WQUn6h$Yt$Vǯ86}!s@pbי ]lEQ牥ؙ'*s=`>?Bg٦:;ȴZLl]#lUKr# H36zUJ~x} 'Ldjp/n`Ng$m)]1E?ag+(~QovWɘuT9^SI5j (:͉jH` +K"zQ:DsB qa#}_#ԽA1ӸIۑ:WPɍe8]tԚtO0S*Ԥ^w +@쒪)c*le(K-Lm>ܹ("Y:~y ԐP 2Ȟdq0>5ΩW=,AК2 Si?)ٺe|NkE:oW”^?\wKUpXJkFYO&B1X <oqS6`Oޭ=+ oF%QIQSQ0JR\,Va6(ʥoڧ6#%iBt) 3HBQc`ա 9|Z/P's[/4}CPՒY%YW9l: b9u: u1B,&!5[`R DY +j +bt.L"pT$妒>45 +ќSj|x>(CI(lp횶]leg_81GUܭ0JSrT^sm*(8xy@LRω yܻ0ۀMcc-/`U5WN]kp0si`bM.8f՗ѨL eD,INJ8 +㑯RƗR;GM*y$G^X|iC/G&[\DwJCE +mKBD9L weH6__ 3Ztgʲ ? F2ޚFd<:NO<1_i~(hHѺ=«+OEF29؏YJrؙwjFƄ JmZ JܛD1ZD#[0ԟ< ;kS!c^74Fz/*fPLOrhzX@'7hJjĥRqh詇Hs&FaIS%bcjr83W4I@^ '0OEjQiS+ f)k[rr$Ӌ)!ȏvDZM+X2gr:}Q&(Q࠭(E*)dؒ D'aM8+D4v>Ny&&WkkRZ\IѠ"%ڧ0N|iai4#J59joHEGx2K IOSN'F(4 yA a2ܼ[X#\ie3f1mR}-)RD"N蛈@UX#[)Sn'm+> R$@.hwn'د4zFMp< kv4&`(İTE +@)i̪TLqQY.AAIɠM4z`9Z |.\M)¥p<@Bt}^725?bZՕ<rrJK/@s +2jeJyq\C(lX !g=4e+넥&KaiBu4897qQQlNC,XjdǰE^&FNc +i[Y+;4DϴET̒e{.ff +#ɍ;Mn;T0 +w Rh3슠h5rNb>PؓLswpC8*]J{Y^سGw +O +uοx@AV;n{4\ZxAiӟ7x Yʈ9}KNWgw(&u[}䀶XǹE A.\]ڜ$EWؗã_E+#P"ͤC"lҙK.!Cga5Ӗr@sƔ1Ц$8 qE,Ž]2Brb!佂N56uHSby° +.F6stѷ1!^X$'8>0Ek_h=04du{!r/6 LAsEڦn>4b{bjl=KigGwr6`QMPwSUz]m 7d3'D,x% g kE%L[y<)8ޒ_DbA ^]A!DTo~z"t-TEhm33䳦YK|*B`z2Qnc\6Uz[co탚ifUլ/0;ʣC>%d_GV f%j*/?MH9B1=?Ș^@&\'طDU~W8{2Tzmm]P$%-f8[ą$Q$' q;pPCBmAՑ |'l\A'|؅eb=}a<4@Gb +3aTsl&tlQddHݪEV'@Uf K{e3E<Iw20랡N+x-ȮvJ ?~KdA*s*UJ5v\f&z*?,D|S ӦIJ:&QN O]c'Tb+ g"i\'n@J!rdvΩp}t-6*A+.#(O7CUǞ'r }3kt.X 8WH[^&h>\7 + ;Q:r*L"v7V +A +Ff^ ˘1=^38үfO1h } h1'%/D){>NDb^5e4%\F\[S%(A,OE |vQ $4o,*')Mb B2V4eJIN$D:*!ښ2]οFƞg;65 / TKP5YZaօ +YExtN1K-_ɵcڣuid +jugi3?p3STaxQ"=gޠ,Ga5Z?֛7+.u|kؿۃC>9n+L;ixi_r$ +`Μ4h"9CRz2F KGOG8?@ZWgU +c@CVsx}O"q}))KP3(w6S[U9Ud1(z"W[Н:[rZI8(&sT U85ъm)Ju[X\+CED[@*=UqMNT༫ {8<"*{pr9 7Kwݞ&D\oM + Ƕ6 OI*-#&D8I(+P[s+=eK ZdI-PxR6io$l3olISUpt#tIu?"x?(|Ge=~THAݡH9Pڐ^A[@U-VT|˲0w%jx';/( +o>RTǣYqD/`¥ .d w7O78`6_CD1P\z@ +T:1 +Ci?zrE]˅ DŽw&M̿=M߇òJZ4=DT:F 伲##$`&cČʼH-6d NjZ&-#!QD: -rXv5B 1}! SXQQ*T$ByoW=IT$l&'}p6'׭#pTNU V*1Se@)Ǝ;5Y*oNQO A22eAxm Gr:/iUG*? hBg8Cs֧ℷT _$,rzߪ방&sqN3EU-_W>1{fɉE187:0@7K$jNL=mcU. +=V3)H! +ݥ&v: 6~e47n ~cjWuUha _4MP}@X";2-I#lNR6 ,xn HҔ)dJ;,/Qтi`bQAz%KU]9N6?orJTR'/0PGe]]] -EYA 8N O`ZWM'FePE<Q89R4@ E)su$(mna@J(fQ/ {X0]K]rS)pVh}h(Y +5I*(ޣ{B[u|4}Q(P!O +f`.t ORXXUEfݡT)Kjn$n2n]PP$MM+TM.j`QU5C1!i5!I gN>zNE=t$QJ숭tt>8}#qJø6BPgp D#e+3:ِhF/:.r8\[#ǢGJأ"uDi_qUD"<8CX/hÝ:9zI:PyNfs EX!.v3a @ +2Nr Lޒ[:":p$ *&G詓mC$o%@*r6TEP>_a(&_ꐍyL=zq4T4`S857%5YٗGdI7 G9p<3շ]}/m9>>m0 cɵyL,)\9(U?C$= +E@SA+ hHC,ZU]EJX'2.2c0jK@2R&D^@ga[GA͗Au'evu٤,g0?J`W8?M5Reޘ4n"KXIp#9 H~J0/- +e*!@90wfi%=QJU5~c  +ol 8ց*bD^Flkg(B EzTiC>.S{,z+a])Y +™|Go8rt8s eG֙낝FCVij8'2k*9V4/shs+$5/vZM[ņMJہ3R]3.;"'s} B)}Åze}"jt^PiN^1h.Q^iZV :|P+\4s@H{ ix åYq0RgSXZ [ʐ +/s'ohްGlW +;!b`b["߻4R`k +]4jy@QD*;ri9w3b:wGL8~(9!\:w-z +A^JA`q*I棧")C&\‘n$c@x@w څP S @@'?('z+G +n4.W)o$ IjpXdT;P7DPw8P}˷O:id_z,KH:gªqY~{.dңkv +&] 쌥/t" +*xLżÌIVP;~W.*CGlԜ!"uA^ϣ[s|mn'$Rγ |3<˫Ba!dMNNOl`KT7nI]pS4 +~-~#eict罍(oϬX 1]M +4d =h 6㣆,reبNYSOY,8{w \PG>ɲ+Vx}V;#/ dXՑJT)+Tn {/3Kuԍ5 xR[F@ w%db x>{v% yV" +[I 7.[O-,<īqI06USuuѬ5s;Of!R2FQQVXk)śT趹,x,_8w"r2q+J+AGVZ ܗ ?C"JF::8w'&}9HzE!Fs >(&M>K#&95epюJt%RfW iڼWQTAfp [:f(@F@$qЇg5QGB[uuT)jgCsPcD}/ +^ap+8C r>mHW9W;$>C "M y #{_X˯o9U8bwT%q_yr#Up[B2z8!W"bЂ]ÿ5 b|*N/{u-nXA +tǤʷii= ubHN5j\cJB>r4qCAeFͷ/T+u| q@u grV<1BgvQӱ+L_~G:rջY};$Xت= +Art[g"^ HU0kdFDܫSx>}w/vR.@SWR)a?n-J +.w["^KWsf/()zggW?kwf=q('êrQn`LrVN5Mdt~ULm˙*!l2+bl=0)fqovD{2t%T×#!(M(IeKZa#3/RHHR& +,0SY)j+2[o NX-3)@Ex0+ mGg$:1lR+X7 +G˯a;`dUEEM]H=AbM`gu$P]ĥ ;l+Qe{►8d`nC)ª8qԽg[^: Ģ/b 4my:PׯyߥpNa`HNPod R-_x!_mr9T"+2 PI®o'ģ 2hణ`]j`i|qo 񢡡(!^ZMKIL@_⧶Byw4BL#:#Wf~As8Ǚ Gw(v + Il +wyWQKb&JKAG.:H$\QJV9J3G`5?=~ɄpQ?‰:X>eV/"Dy8GPv1^5ѱ=p_(.c3ZҢ$v Vy '" +Lm0QW?u*~XI;GM^[vP=U(߿BDtFNVBG%?8CRRBwaX]lG CT\^}ǠgҪtj +*G'cQ4WGI_'CO$aHD;2b4⏟1rg2xuG,X[J1SH=cYY͂0>0 0>A)ETi2 +P+գ礠ѭJ00ch|L9tkLr- I9yNDVzObjX|n'kH< 4З &5ʨv2 Yx?}ًS1ʛIVlsaS1cR1mxѢe RWCY= +p>ĕ:uQݶ:@@i_d3` HLezz۳6t$#v (@E.9ᨚ)-0$_T泙~ j~ƀn2[?tiLx*$cIÂ)+/OD~,a(I>ÀQ~}rGoQSp1nDk)CnB\B3seNxU^5M8Vg;`VSىdSqi(GFOZo6sYd[fZGȭ_g!FX݃*3lop9Zi2~mxA?w2411-I> .$sy.a<;1ۣ +\i.҅UgOh0[r i;QV(v$d"Ħ8Lz$3sX.%2o쏣}l~%S Åz)ُ?g}=Z9sr !㼰uL_y-pm+~F`IPf*ڷE77ɷBX-.;BTXtO>uB>X@4r=[(d%F-v l]͝j/U7::'UXZrMꨎH`Ֆϒ?#{ڧ &$@WpnPE0iry?[OFn$فi4=Mo_%~`I:-k8 +Ë1 0f a}z([dpg{@nnW8\[SZ&fTA`1coMjyRƵ4%"/ /=]}>|6֤J(*`X:_ެB?:YInЍτ?-6V66טG)-d7M m~ИevYQ;#g աdފ&ܨXc-|bAeDtCoač>@z]`A0ų8ۡ)cpٕS"^_9_^_2x/KF;eTzG:U1–4 @ȟ,eܣ@T;qtt֠ :? 3q?Um֝_+JFx_ 9$!t8aW2hl(IҰٗK6"_9Mb+?&P `dZvJDVlQp+E mU/K49/9S1J[r\6Ѭ}Fk֚C"E!O9xSۙc{Rۡ+ܜ8d]m'%fcq\W- ЎdPUfQ>{aJ^Z K`!O޷WtP=%-"S +ߡslTL(תg@jTP~HD]HEߘ-)vs‰+#; lokΚW{lZyJ w^^]w}<)H\ɴX ODBWjN$3bD`ζ +u-2x)8+ K> - :=;C+g+j˝ +LvEwD;n(.7G[A2){k! `Vm";#4SJK PD@Ksz%N 5YrBTYu=pT,[dJ٤K•_*Sؤ*;Ȣ!*<æKU`ިjUD=< HCGXjJh}o;ed?\!^kzus*rԄdK6vvcd4SC1s>ѓ>#Rp:DW!\NɵgU48n܆_"xcY%2 P*d+Z;ń:ʄZOI}WxU"Hk-_ +ݰŗi[% -}wb^qL@G=$iInHq.OhR"ːtuٺiOB7_C]ܧvUuZ@қKN}Lvٷt_QJu-vw N7VWHm _܌e=!/9NlA2?fXyk6ދȁUC +t& f wi~m w_珔e !ylB{5nZ}vN|yiu""DD䮬3C {̈cKw_ Elj V3a+Tm϶_=8S72>@Y79/6TMV'2d"Fc +,tII؏L]U#{ Z%`V]>Du|6 @,paئvQ}3JcLFLWݡ!!F;aZ +ÚM+;f9,-.>TL65^UwtjY!^VlSCY_x1—EkV߆N=ls %>.؟nm32LZUW{}d.Ǣz:G`ZφD1<RAU H#aM%M!F[GI,Ӿ/L~y$f> vٛN|h(JZ^3ů&MYU҆cږ=ɖ ;y.xu.GnZhʳd/vOzAb{JW|5mh3 >[ cƷh_Ñ2Oj:Wئ:/*6NffC,2޻OY$?5;f6g4,Ze/D_9Yb \]gR|5-^~xieA_!2ߥ`/֯_xHsL냶χF`go'lr}lvma8ȗ~jd2( +㍢݂a~xo*z(N>}>Zc6#{w Ad:6ۧ79maL tGf䩁7߅[߁pMN59g=S<1j2ҾL:-n*ynWxj3+$ v#mĂXPI7C!KL|2,xY5c <6,JɊUX "pfYiݎr@j^ nLL >`/סՂ8-ebsnCPtO (4VUmZ_+ fn@N1n\4eb8SX2i<-"BIxF"qP!3kQ/}ӶSL_jހFAG0ݍX>#]}aHzyX7mA aC6|7U N=,pUtr7@05Tk)_;#3 dK c^@?TsщIyL=Vͨ U4y>h7P9? !iy۴k]2D0a_~! ++1XuVXkS.k ]AOAS-":sSINv(\8B~uÂ"0*EWXo6^\eↇ҈z9ZR5a| +۱ +J ?>Z!_ǧZmP* ϝv ̈́'pO `.ͦrݿWuu^-Af4v]Q:p_[ V;hV @fCq+%sI<:[rw-TEU"Dn,id9b~#$5b$ZIυwO)5LTJ0lTΡW>^)6(x%o?|]UIkσ]Ph[AKsL] &vEY?S ^-ޯIo[7bT`?mh6"Q z7@B8rnXvHEG耞 ^6+O=Ӱ'4ęVK!;aBv}~L", 5ăDXI} 1&A /ЙzeWJ,,jshE[O1@[ +ОԨ|! %|%w%iJ$%pd ia*H,[z+!2 $H8YònFSXd j!2d[]L Bև;ئ=Д0Xq0SY%a|Yq<:OP6E`Va$/5K pJ8Jw~~/=~(/%) $<D{/T7J%IhȰdinH8Xq'ɡ`o+"sZ+E g+Ϋwt+F|uZỽya~B+ߗGd Jjv1]Ht#c{;tb.$)F ^5b7wƙ'/m X{P)Iב!a1Le$jeVQޜ>kĎKtOZF4B 'M"0M> gO&ҎI)a`fdv>X" JO%J;% %ONb$ +IH\#as=$+'>"#v߅sd6P;/ύxB>m%X鍙 -d&zU2 ,o c<"Ԅ> ŃT@&SD_ocҖ-3w Yi%/zݠ\qTb*\*Mjw + S"Жӳ0&Q#ڇC49ך|v.QvȆ38V`í0.'$'0ЯLm)oDŵW9+n) wK||]45xs +ÃmaZp%cvT~PR;(!;*<Ƙΰ+T-S쒸;b~mQ3n9޴ܴҥ*Ӹ$MrDЀBf^R%%8 VbĿ2Po:97AaI %ִݥu?.a1 7FŌ3.ƒ+. rpy"ۥaĸU,ˆ\Z0\a,W8j\Nݷ _ګ{Lo[o6u*>^t%kz_"WcvE7V8;Wi+^cF[ge#?OcXϳid +a5QӺSFԘ;<[:ITiKϬ]іe|6AV~\]]T2R҈,,0/y ?U-]~2ɭ/ccv1\FIq+8\bYUL,,bZi|8֌ +y}ΨCOAc{hx՜cxHdu`R}1E6әE~F8H۝V9͘ {_.j;sC'|y"coMn0NGa("ToF!SƢbkgpQ%F#oA)űɭ50~*Sզ>Rp s@ ~iIЯgѸS>-_ *tLZ}|2i˳MR˒OttA4ɽ(ʮR+oLET@*r{Yٸy5>I:1(ֽ`8N,J[R9~%~_AbPiǹ gGe|g')>tҟAu!Q}@nF5S-/!yFs]=7{t%b~K\j)؅ාc,"]C}9K|eB젣>I7贜VWV4fܽ#j&4y@+U@bHSw6&L~Z +qh^%~ _\bCܭG칬 ޾XIYM`}>Cu aDb6#S/Č+8&f)E 4؀Vzp(_ĚCvI3-My|_X?ȟ~e`majj,';O@HL4bs?u^aEϟ_s(v}?VpIB=N v'q;6RʔLGW +"gX/}KH~* +24dǟɒ*(:cTI♊.L191NP[+^;Wy;WgJ lF#nX*Wxhu/d^நQfmha1+6Lpb"I"oƐ blR Y޷+Q#QKq Ea(.'bn^Q؞o30qFffzJ22U4L[?1lyjvL=FoT%$ptiF#1E5l1rrHA}z*)H(b)T "b! +BV2X"/+\ VMMmb5QE}IWPkelLEF7'PbO" 7 Ɍ +L6G.T^KV +$NހCY҄P(b Ӥ&  NTGJ+ IHBB C + +0P$1=Ae !-c3N 6BpB;bF"cxxp R E"+BBx:LXŠЪ[ڡ졮۶`_`˂N4hh&괳ڣ= +}=@0S@i98D яC!Vʇ7RCM݁LCYN "58eTQ@e«&pVI_(܉)#,&TZ*CcBUts&kRD)T T‰>$Vv&J^j:0МBMC4Լj"4fjA\KuY&m  +P-4CMH(zsXgSa(T +%e+BM8p +@gjQp(V3ڼ07Kp7D㢑q9Ιxx$xF7TC03~o+s $ċ=ǞI@sa ?Mɝ3; icͣdfMU%D4燈ZA,*j~  U|ȋ>_$y7ñZ454IC7Q].hbCvT%jb^:1F"SM-i jՔbm&HM5F HeNp2C3B/bSY,tpԥ#2"q$d#G&e4ʼn@~njDƍƿ/WeUErP^eWg#TĈ16yh+^Z[K+|+".FhE)Lfi*2.ZقDyl&fŘf"АjSX+6YNTWH !oHh+rBA0Q<+F?籃!~aC4sy+u1Z ++_6Oҏ'B,VHjg^LsU(NTSE+$nNJ.nO#es&{y,</M+gLLU6ae4JtPE0}6T~D ?E/d0ZAs^xeX,h/*v1-gQIkչ{qFMF1]F'^k5 _k*ZJ5Eͩ M,Lv|fVz- 379ŽN/:ATQ^f!Oԫ_(Qda1:g3gq7OgZ?'>B^Ǝ(96UĞ)y{D?ho^]6~'y|j~ɬN9:5l\2+R1f} ~9686a֕1ED^{7D}%&$rH^VpvNEDHtV*d'O̔n˹ՠCmgP2WVб'FJ VQhf$EqƯ (5-9+ +GEkoEDœpQICӒİ)jZkdBYjoԣQY2F6}>mY,H&U_%$UXDd!$3 +6!K+I\Up,F|!nEcY;|ȍoD참H"RT:wEYގ81N?2F\B~4du'J='E1[.*ju UF4ԗʗELQĸbL'E.Rj}E^)vUSIfcd^DZ'b7ʝ oDL1=ny[mטn_IHRTkl^47Og(ώ"\/ϵ!Т"1Md۵ژ?!b\کb֕d,F.S[ F$ D(u^H)Pll9%.d~(ƯP>FBLf߰B-W^$(AAEqrDe#XvObF30\9UK#q6"QiAjf2HB=H-W=r2ה8M҉|/4~Ҋ6*IICI09 )qYJLC"STAbIQ2ʿt$ʓ+Fݜ9C.&2D-*)Y)Ttp^!C^ HhG I G-=94HIHKrjY.3ɚG!faxҹ4ӌ>bDR2" D;lՐ0L(h_-񎼎2kɐS%"(˖ke=2 Մ!=‰I(>Ux2WĈT2J##FI:@}'>qcRA;)4ohHf8)OyNx\`'Sqfb¸y6bs1"PYPoʥτ:64 +5ao^3;paǎ7 R%%? , ڷ(ވW.FID Ø05l8mlI @60u =J#~GR9\C +U2DLe>Ce $Se1r`[e5@` JD~(> Z"v+ewwT+#MN:u|/dD*- ,@˔*e T`TX=KeDDXx͸\jjL@(" ADFT=FHASJiC9*,gQnJr/(e:D s 9X^3!Uy+`LUfCć GLX\e},C i %wD %PБeйX("G<\'1ˠUt"&jF@Rp6EA*PKX\!*Be ,H#&[Uxn|DNlD45#M@EڥJ AuyJ'x) yz2w + E,AN/ mm^J(Aa`` Q^PK8eO8}0|͂<&% ?DSC/bpP^{jV,P$#/1H,fxCM,Ԋ9̘LXSbLb"xa#4*@`Wxo8^*O:Rga1e'ld. u OQYr5aపWc ƄB5F,M~\lDm/H/.LoA+z)6˄SioP/n$ܜBeOB0&D߉P=UI͐Q`]V5ŏ C\SLZ$6>1WJ EAEш<Iqb}" 揰SP@J Z@8`8 C]W@Є=y>14E] 7?U _O彊'bxz q*"$t^Fdd +CLvdPU,2t`@ +Cbvx6H aqPPZ 2@8bx4"ac+IX :,6OnjGb*2CS#)sYw=C65nm1$ZRZ UV#//#͛ؽAual_78Afg{fD(WΜpt8JAɷt[!jQ{ '[pByj-Q}( +  D!K")OH!2} +@6VyRlIm-Lf |GcE`܇*|ddH?6f儱R rZ}q$}YF&5up<;klLFFلwZR%Ĝg/NE Tѻ; Ctye) +rD>cc}rtXٛjA"E7c}IoP^Ne $_÷5 p"r`\^UdPKuº׈Uz$qoɺh}{H$pK:(g]8d`:"p5T zP2"N#}yN?=`2m:^٬ĎOE?E@vM΃!l^x/P6 S%)#1 DGH:%~X*>tJVpg$Db@iO 2aq>^);I4l3b09o>jA-BlX' ()LOڰj :*z;t]wTTdɚednʺ%8 щ!XpVHj5 +TH`:ak +D%yGxl,{π۠9*J&Xȥm#>wZi3POcܣpxVFI ͶМ?+MZ6U'd8 w⠰DաaUkK8 \ҝR@=?d?\DJu_9R@ $nZܡ w7lx uׁ$7feR(А@z^ȉQU@`sQGBAC7<7I3&!zQ~IYB(6#:7J_/M-Bמj4:eNKғ1Dy7 X+0m-(C73$X,}/9yLju \*2/98΄P搘|$Yru.dm6Ia6Vy?H;sk;k6`oBڬݶs0-?voCJ:*G|;"Dd>QC-bnQ6zS"߳8EN)5@37 E lfbXd$J2mˁ&55=0)a}WTrQ v0QrMC?*gzb]߳^U"u:kgs ZlBOkRdmXrN{A&:2p691ݕDy>NnBc[ω6Ԟ q 7 : A ffѐKS 1M]֢~QD6  M4OfQspEI;. sN~{Hq{K +`F{A Q5/$-[3hvK)"r5@$ wJAi5?vOkKeݚZ 0Nqn٣Mt)ݫqn*f2eG/^mq7l ßڞRΥLG6~Nlֵ #Jy˰EJ9zhk3.wx8nz ⃉4F{.(Q i#52D}3< +2-5(=NkvHՐw蕍,Ϯ4W^9+j[W0E J,ɿXAR7.DؖHhoG7hc,u}q4,}oWq\[`~xUzLɔ[S5 pR.lu:`SZ.]GVXoRd JtRM05PJy".^ w7's#/q.:J51O(Š=/TrykjD\RX`iԋuuAhPU*@'?/:Sg96Ͼuej=f35!y/u{{dbuLcj1YD ,N5V9K&6 + O=83`* +D{\+FuD.]9? LL$!$n a=i?-$4+zoJܕh#qE7Sؽ)vc43_֥u+&ڔ⮖;iEGb\ $bq0`{]fM3)eWð ^b"w.T A|~1[j=pPtTF<׿7Q,W? ~Zdv1J":6IJʊ(<ҹ̇8[]&ZA;Vg=^.ZD"eP60]8z҇\((L;XGPoxMIZaap?FJ Ah^K[V~ j4fC<'m+%vǞm?XVѥG2L,E14eIV 'gB) $&%P@?ot.;!a;w_ܪŅ7!$"2b>M%mR1؃@ŋ"9WY 'K'K"W<FPNz.47c▞jJކ&'@FKN.ؖz͜&}cW]xuZ=^Q-fHZ`)o+zjxaM@sb?a^$ޤLXʑw8F D.) m@:r,Xj;Φĝ#agd-P6;d09zBW<0\w s!@u[j$A(!xCX ҨCY[$p :U|X&Ed5:v +3-WÞRLj5VEIC+> +}ѹ.s۱Xe@!l NS +Y%HݴbmL|<~T捲l9d-S`EϴO}鄨L8āGHcF,peIXY`ř XIp)3FbJ⌿p-uQ$BPɁ9Sư5nˡ>Ѧ,hCaDD 0"DF9c.-ӕ$15D!9ѡ]bW.J@,cP6l%ǘ6擾`S t֪,!CQҭ øSw.:]ZW!FKAgսv@;&)>0ͮybiT"/MD)Q iRwr"AB=JG@5F՟e0*nbY/ K\^#FӤk''P +"a˓EP.V7 +zH*esxcHKOa~'AXI"ftufW6 YOT܊`FOska'Y $ezУM@/>@r4aJҞИSf%֔Xë 4٩]"SZTcdI6>?8%h(e>xf+,mьnKʺܑTQ)U4 +Fx,;%]!a^UT bm +7/)P"ĩ M`s|i֛޵qlh[v/ˋ"Y%5E-ap_> !_=LQ M؅$h=Q[&GʼnGoY:'L}mZc-Y$3FuRK#Y5!C5wsQg!Qd +K쐨F{ruC u{[M&xwxpk|5JX}$؅y\Q~\l&Xy O`nӜ:܋'Г +.f$vR!`xp.FRXe 6*6dΠ!poTlH;P3:}7C~xdgvM.˦r'numZc +PiS$:*0n4V$!@6jL 0+H,^(PxPj؝i'Y"B^erAI0jT3!o'oK|y{Ի,0%T[4 #;f]x}qOE&m!RGsPjkIpPybӀ{3"yVDl(yPh{ _Qgz`8B!2(,@_һJ]īT~kZ*,v؂oܘ$0Yn8aJaq7Yև!sI֤%s9FhKSi9Gc #Ui8>,jW͙Y- + A@%+5Nذ`` \he(*ĵ:l_1K /T}0hP0u [ʃ_7e7xq@آwa3--€E`9mBY qjwLjެgцe3X0]-KsCΈɦ^h5taTYT1杳c/,0C9(2Hsy˅+'A_zӽT|0ԋ@tVyPک\סyutz (^?kH0M  sy"vo.sj>p_+ԟl*_2Mp >M["Ixu>^]eB%6g`I ]{X=_hB^KgV.؝ {L G D0` l&͘I$1~b&* ei(OwJ `YpED+aM.:Q*YJDSdOT5%& GJdؠN3Q( s@ z"$= +F +IrIh"IÉ<| dtIj +j, ٽZPkQyD~( [L%.;-H#RpQ\qQ$*$̑s~jA]Fn/x*YS/Fw/b3_P+&/`M2=viJ2bV0h#FEbdyF0#Fíp 1E014"U1ZZ՝Y$?cPE&3+RbE Td>EM2ZK $IxE.[C=]-'2D 2Xi"_dLF3W"՜Dո<UzF#b3ĠVxhP!"< EGcH@u(Ci|^ANXQ6UCn"v5!̛5ڐ[RSlLd`Dȥ 0(2BmTxsہyѾ/EStvv|F +ioƾb8%!GOH8H +!Q G bqd ~ /3 8 ~}nB9:jY2HsTAk b: + | X=: WF>JҪOuDɁydΌ40 +ٵHnpGob/wĀw%B1@" VRx@p<]ɃK[=h? +7|=?tht?Nf1(T?쯡ha~|B}Ζ#Ѩ`}GG2\^Q' %iXǚO^Q#cNUIu2L1@ + * 9{N " p<63 ȯv2=A((0)Ha|P^ɠP{2eCn6X5 ݫf1 U$%=0H>zAL.HsF +i/H="™z`\G.zGx +¬#z ~S~?.yDx +ҲyVs"9 KUr,!\rer1 $$鐃 H|K NA{@ ,(#X8 #ampb O#G+7FB}Y`|W8@\ 7w q׍Qhscrc7#|0n.' HNl#_ۈ;x!V3o7)5 F iTUbڅXT3 R@Zl l##P9퀖ڐG6V$ml8 +B )'i d FjƆ ]נο`"5@=@A] b W'ҽ`ۣiۧQ#aix{+!Ә!Afi@'HB#)(Յj4a C"{f#C[ 4< nHa2l;a0gHU;c!3:ODm ͸M" Ɨ5ckPk3cRR4ԊfW pj2B\!!2 Fj^1¬(SF: { 3dxM#?&kDɐFH+]̔#cg1厔1"#7 IV͏P~S$44:z bpVH%ɬЭ<$,WDR.ŐHb'91% -b<#w$VU$\KP"¨1`4LJIHA4Ɠ#^00 JsgQB QP0Q0qNԖ}QD}/rm//^ܼ^|6/!ɋ"ċ RUr *Y.&."C@ EWT br0KqM\ +c%$R*`n2WMw$HfA[X-vCAS Xi-UiJ[hQnd⛶gn+!7gpYl,6Z*+,(#Ex K^,tɒœdENX +d `1)-Wt{,r `/i­%tH [FL/n[=5C& +5̈́"_bQ(Xq{0ʫ Y +[ŴBl&G&l&~MpRzTX*"0':*NhQtv+T0w'Oѹy҉PVO:Gޓ"OH+S +%B@!q)8'(+ŇB*%>'.q8PE( +#HIp(8I|F1Ѣ^qFaTQLu"G!QL)L.HJLj&Np U +wA9PRH^J?N4Oz'&h +™ٔqT'l +'wg'Z*6M~SsII Q8l>LƔ)oP!&>Ũ&2RZ5QS +KO%0UD` +2a[U$gctβJL,Q*s +`"VK|*dDG.![%~2Y7JJJ9D }0KVFJ({&Jj%%P8%*;r0aY,ZXi+J`bňaLJ%.z6 +s(U=I7b,+t$Ŧ$>$ب VAcsH .\d `C"աHDX$Ar~D"6|D,eBQݫPRGAr@J,4F*,׈|҈3+Fqr`Dщ(7,b UE"&Z!h V9_Va6P<$Ey!B.@ VaC!_"  ] X3C^5cx4 )T1`a#nc fahH1 Qh G +Y*'!0k^a0t<yp'l W9.!o\K%e%,'+^(!W'!IHP, ;$ .H(8a!$\f!P\wsC9mc.D#4:42BDEntH[oECthO.)Du)Bա,=[: ?:9Z_4p q4;юkکF'ȷZǝ*";$;TA"CMf OsWDE<,VV<^.Y!3ȇSF"*!\6ysx0"jg}0b~Z"с U}>7K_>>"wl+F1Y˂^D}HHRLF?Y(S)>zܦ8*-{}}̗da{ +db{ q W + J$TЄ:v_|!WN2qRsq3 TBep0،i=B RRL萻̫}o(FARxt݀I|DOu.5Ԟm lfKsh!?*G; =#>+m6]~5|Ab-NVQz9k-HbZ^ lħ_PnGW`g@Tf~I4[ VMAbk4XTwTKJ)83 0'}eY ? {$6c1/- A&ԝ Ԗ6D8 ݰ?}ı{yPF/J +2^IϷ»@93wA[*U"s0sR \ps&*}a xEIihK9)fuxHQ]Y | 7~|, ~2*l`̀mz,[R[c–]ԠRg&hD296 _8T +MùT`/pttq۱SAP1WwQ(˜u7v^<@FAB@~(pW/<JW! + +&R2 (E5߫ )Bذm:A2T,;.CMj&H;vN0,>ORvaxm|`!0`).mHAL!Q>Pp@91#Vr Y}*G2c >jVa?P|v*NQ ~Z> O'\B6%t,^ ls@Kˁv荤8w)ށݽ^!mh5 +-0IB/t&> 61VV8xj  pͿ 9]keA6% + k@:Ns# cl~#ƒ5KC3t&YH(+hݾRɕ˜52Z -3PK5$mc\15ɜZToAL-@ /8)ݿ@6UBr`^t2bF":.ݴj;1{"9ۃo҈MT;t>I曃[ͶWCKSX*ܗK7,Uq#8x)I]}wMƕ{ͨL@c&b?vx։NM 67m^yL6/ Z%@[ϢJ@ɅP/fI_>b + \H@2ӻ5`'3jb ʚ&qO6oe;V\Ə 嵹Tbu@@g +P,ۄ b̙)5jz؜(/뀹etGX021z$56`lЀty6 7b;[G^|b1 8al}%]*H3YH>I4R\x[8pc64;E5n +3s3L +M(R>MU}yDlP +iNXF[&(`Pb/GzXP2߹i"DW͔oWa"(i@@uz=mJX7A+imoA2iQ@7%0I5z?WZǢ>XQ¿I'JpLkˋ~e]$Vކw{9 *6w>oԪDu8S" +!? }\!i/=0uM q ̼#JZ8_V'bYo?#/8JT3ʽٟnfO䕬G. +rw<9`%KW$feQPbbcr7^ nL?k@:^gONǕ +?(~𩾵/w:oh觺3'a{wH1-Vt]b51Wb~7&\Y#CJ n&!>QM1L4~}Ж(yEO62NGyl$2n*jrqNpv=^T8lķ=>`/#Y8_ݯSrݯ?\D7*}7c1ŸSˎ;+ח#kXhNK,>hKbQwg n7W9Q"}0K@<DejCDOY߳, @wJDc P2;[{R" 3ܖ-1q_>U RIQC~ࠔ軲-7QeSq7ЇTS>A=.Q|q||V<wbwP>՜#wyъG c7[ +W։7f'z)MN(n%b"[ؤ~YZD.c͈움?z˦|&)&j> \/՛p6oE@r4:1 B4SQ9rS Su|4_ Zۻ+ m~X`/JnzvtvkW~q-kymLQx[!5Sw-"*S`c( .2q;KeX'8~ ;-*L*#\FwҽE枴.n)EF9>ᤩM2|1Qr_6\8;hB+@)t [kx1۬Jqtˇ-2Pd4/<ě_ZTײuV- ɭ6N%3:G-/C>CH "xmfݿ gc \KoW[g$`xC(|ei }IĢ/8aºo62@}ؗ }#;&c) zSYe?fQ@ȵ"} yC=&1(w,M/6若:?1LlYCеBbK9y?dŗF05O%.8$T|#<Ɉ<[p yADEe7nE[[*c/",t]\eVAcN ~,[/h׎'t3i@E|p +&ڗsT)#sˌ3RLHu_6k#9c+/Cs%% wUq&ʭ{)8g= a/a* ^<.Yﶍ|xi khDq|vbV>W `\;}\ x)(0ć.i-Z +C>@ϡaWkn>t 3fa7Y.l{@2хQ6 ++Yx!cw@?9Rf^h(ʺ +rayiaAձ˨G?d*&? qfWC'7@*)#=fRY:$LwF&2ߧnʫf,vĥadn ft":y2 ) HAzoJݟ&\ ԋ0BB[afΔyPs쥄Nyg*72Hhppx; `xwg3FkeD 9::!ԺQޓFzh{ܟ%p-62Ts Ⱦ܃=V +OVYm{QgLjը=wSuyj[Avմk02Kb`prj.CD_ gk-su"4<{)E&*=)(UI:- }/ qm>믲5-ZssEbd-denp/kqwM$4>!DrKy :9jb3&O؉&T +vsy;Wϛ^ʡ*`gYooRRI7 +| +Sf_*hrH%Dx X]od*ZW6sDO.!#\h@) N~K:[ǖoUTк<} Oexo ߳8[@}aa#s|u|su/xJVꘞҶ(/^61.XuM>0-h*].,[.{@k: ؠ:SwFC|nH]z$ҋ.Z9/>ǦR=]ا忽u->Vcћ[\BX27f|5LҶAs}"+yJNVJo<_*83N:hdL3G~@iMR<1K7[A=int*;dtǪnxuᢩJ-ͣIG,We|9 +3A@rLtn)G3R9%s6VM9yeoKq|f4P?paf[1@3\1jΘ.EIPfʛsT ]-_z uvo<8ɰ].y櫈\:8r4@S9.9I{䀧r]:R>3'x$S:wN^0`%:yɓ& pT2UrQRnPaՐI^crH?ebHNu%s:rNOEG&QB`nN \B>f\(r7q9BKGBdwR9z6bVh?yb(T?98>_E( bIAWޟj~~_)ѻ3O;7t~ĕ_*w}J4?92A~|_H'ǟ+_4{!m&5U9ٟEW+x>NӨ&ܵb̠Jݤ vx gz)wW=*'R,Nȅ2KzhɄܢ<"ugYЄ.(fE{|4t~uRAnN#Af7˞ tG)J[0A^{ j} -y|&H@VMvhK;If\䶟}'ȟa֠ rj!%I Fۂ@^HCS@@:_lIK]AnSYg wr'VS@o>! yC{qCJYXB.bhV0 UhxP˴)^D or +u#SԟiD{VgJ?\/$BG[dž rHǝ?>7ݍjp5ʬwC F+4]'?˓"(k/8A H0E`ɪ*sQopqH4[tWHS.+3iTŽv"{ %*hJ,; |EQ'>RO8.. +xKp}zcwg%QVc qCd4!7 @ ċ?p#R>i9|O]Q1[zX穞M *LT#3Õn۰~e0abGT Ⱥp;G,, +D;wZ7%n$d֠jQ$3NA!f>tPeQ;~vt,?&9wi4j~UjF,NOp;xҵy4mxdam./$'n +gmV1}Po^e@dԉ^-!Vpr6)9$ d$۽ (B݆:8Nm@Rt2wacLK,۱HA2+kV&a/_lJp/LRvc1A'5q`Ƌ)GüIݞBa,Zֲ+^n +ƖZnI]`{-kzCG_k/tjS pa{?J*l+>stream +̳T#ƸTrлάz :_?KfumxB[$^ [sKTe嬾,$p4MbGi[ g0mu !֓Q F6=?c쬣(Ms ~!:!|)k^9;rg'rDَM]CnuX/gsrs>+[f_vg}*{jS0!2%eWC披i6-x5ZAn1 N5@}Շ3mUw| + sU-{ V0ɤ@ToU["bxZ#(zX!]"SPq۩d_ٞM}zg%SC+/9Z?iȺJSL483:+[Zj2[x1YmԱfvvoIJ$sRlHMm%NnD~s[HB%D1Q_L`N֘B]T~]AmuiQfc'(" ++)+DVPoO[i\AIcދ tG=@w%jΏCN&j&*jOm +))@%RK#~t`!OߜjdӁ4EM%,Е^Է ]PjMGUp " PŢm52yo9d(5Z 5֐SPOÌ@@r56;QZQi:=f>e^*?/eͩnW{ڨfwUBm)gs]Sz͟HFdx<-='>C@GKq-RcPרPoZ¦v 46=Tej2@T4m`qLAk|;d:p2bOp0=Z,Ғ/,vti6IR}:MK KFRq$chYiN+Λ:R|hp|RUzQgplqdiwh(,dWxB|T9rm; +SףBx\2Aӯq%TtW 'Q>ѢmclG=PJ7F / MCC2NZ4%TݙTT2|JyT6`P/RUYE̪ԩ&LjT:3vi*meH:-*N}aO[Q, J*SXvJ_'6+^=?+މVA D|G&uuұ5o񰔭{mB +]̩w4YlђԽM(+"5JΛ]c޵_3f,a +a_ENx/{?qI&eP,P1%f 2k^\N2(V\6H+iL}=!*i憳8 >xLoWB7^| K+v.C.[aխ W#]n?\؍o%{V]ۥ` +Bf]](t* +Zkq *iO5%%CIyUz_wMz.}m7ݛ3=Was8%{[6S#_M7NߚI5_#);*p[&O*6*BҦeB E+}1=w84R>3]3l!r# di pB,i2!l[!O(i0l]1-WHlQBÙ9z Ca8K ]X!nNO OGoKpi0\T%t;Î @̏C IٛksQ%Q11zU]Sk2dt8h> iOJӈ|apq?}ЋrcUHz㹩P{boQP)$O#7738yB?bU0x 4ֽr`Il!:{ؘێob/=|C9n7(3u( _d1p֑ɗyJ9Mo țZ繴!1d +eщz BE* 9b?__&䧚ēMSuCgI= +VMq'}1x0W<(l ~r@UZ~r܅7<7q}{r\ql֖M2Us]pIK 8s~L6Pcft8^E͠}pOzEIfs >>E?yo$5+A<f`M$cTQwRcjlCL6 y;,Ⱦ9BtpKJ/Y_!aƻEI@5b4ٖ8kGcXz1EcdRh,Yy( V߄`ц,-wv}@d.c谾q RRH1} )a,J6˸0p ln06΃]:8} 1S67MbOT|1g4y(8d4#/FA"N[*.V{6bn;L/&>O/VxЏfYA9[/&> x*1%mc0MY%]|(+Ǝ^X3Wc/n`4 A\&U( _|y!S=։\"gt0>S ,Fqf't+x6:s r~1N||41~]]rAZȳ%70s632k*u'xﳐ<(BO4&8CS$nl^XzF#2`Ϸ^..0\ᙀ5h*mRp13Ylؐ=UT~>@ +? Z Мf2fҠwKQHgUkaXP1?9"ʟ :kƖ?ڹRYL&iHN/z\|9Ur+mA/=-+@r}(DӾOI0^LRD)}cP(N*؟e< J 7XǸCmvf/h=pBj8݂FVZ+ o4CDw`ȹ-*GP/0hM:SAa7UڬO +YsJ?hV׏ĀmmNσ3^ ں=1 Fq't\+a4/T]'R ;t֠,sBg6T%լ,q,9gBڲS`[4[8ex''>igjʅ$t#Mш?xR Uaߓ6AI6gbUsH@ӽJnC(ֆfC&z% "`PY(/4{CkK.eXe }t~u/ $!Eķahv:9h| _VPtOR֠숤6T'ё]|O( ! AWN+QqPi;>0Kl*j]фtzL7l'U"5kC`1yIG3rgiD +I{&2SRUeRmO5~(x4oXzۃ*е?n8v=N. n[n70LUWꟿdImv|Mwwv>hܺuB{CnݝFR*kө-8Fh wwvitm`0dVtwW{?XqM/bey__wyu6'_bҿ[{U%&QNٛtw+Yo}(x++//@W$r'ӯ!tT*ІX&ZvJuAyxRUX:qk'fYD.O8Z_"F[yS%<ߢS8!g@C0쒛XsvۘU(, : $yV>p;޷TFo6휻%C0N."/;NL" Rp/x.b³o$ܧq$}<zǓ:D8'ʆx7k$Mv%.1@8@鉇zSbgԆ-OX`|Ku9נRii!Y9E嘌]/@+YY@=ΎqezĩmpYpq0ԎjgE$R $aj9L&m )Y{lI_dO#wՏz!s~AVB~.|؋J%f}:Dm /E Ab:c:1G7t."2|-|\?Niϭ(k I=! x7 +y!~Nlgm,_!>EyB}7ms 2L[uI@OxrQ6gu"!vK|yWWտ;bjȅ/TˆMEPRNЙ@Xi8љBJ  +`谄 rUP>j>x @| ɗyudW>g^@ +j u'b1KO]M_Ty1t 0t= 4l 0/\LJϜ +RR^ F^e3G'CYϋ@ ډ+EyJbKҢoI.} i@ \PKJBT]7V:<aƦņtwBt".1 +V?‹_"<:)xyǐ=gLZ@VV;p͡coRFVFThr4uΛ+>[L(!FD$hEP&UOyX=4S$f?& T7lMĔYg]F%qmiDP4M +}w +HYi=nS+rc?]%OЁRm.qOo1hBPDqLo,:;R ś/\2iXu U\[<%ic] kT $tVQUaP]~ >̢yJ!,ްQ{[GT#urK]ATD-J% &UۂS)f/`5nPfg~ g|it|;75-St U ^ݦ^]W"r=3ދ-(MDqmx}Zyȋ`>hkj'lL\p+PA!w?}7=z(Ai{ Nh{Fh,mN `.xPMo]0INxpQOb.MiI*nbsg?TC齳YT=CzYhp3?t6(e72w3]e&2 cd1;QrF{E#E~TrbMU +cб4toWH3/ Oh VZ./,Ǹ܋Gy)PXk&_iM^ +?nMg%6F& +ٕcy+=YE`2s)bM^9c7ʝ o="f-ˡ1N()ɂ /Ūr)JsT\_QnZS3FlGfJ(3c^p']JPlvQZrV7: ɂ +Wzɍb٘y ?h*^W=GAg\p<4DQUwpBX-{PJ)u,m,D\QM\wEubJL9"(,v(A,J.X&ǚd@6ߛ<Wׄ~pgYKp~#r7y?n=UC{sb߉;] cuFeŪVCkǖ>n$aIvNpqbĈ6*!a5~^")-i^8CWnƈJFnf +;?HX*E}'|7g(d$)A[q+n(֫Ӣy_^%#?bq^pOhΙ{!)%)9C TDE +"##3LYchg³Pѥrw|Q&$9w^\5X&7AE6aAԳqw]o[}"hb9CyP>|{ׄ*dp NLE:vM }?$*x No(śIKbk5X{ J@9{:G|'g|_ێ8YԳ?2~J^$cԺټu; 87̧CB:GEv ~JݢB{  +BH=Ϣ-çF9boYe +E91|jt}2~l4 v 9ysVs9ҶcMdixUl'+& OYǮdzhY}O@e(ÓV!G}hZ''2Y} 7V_!l2l4P^k;&v, mý_7eAPqeD8$q2_L[uylA651٭\hIT{mvDaϣA Izh#Xq|8g"+@ٝ@(vO`\uE#7)hBچp uC+˾-mNp_7ão"+?)cQ38AyO$_4m>!y}=Ǒ堟d/v9&M4qߛ ؛P6*ؾ Y8y}e8v3KŐ@4v#;AG,Wi/Kj_8RL7iR1ٯXdv%QYSCw L](+VQC($s"u#3~4} _[-F NB,2LflJ^5'~9CwO#QC<6˔V݂-2a~e79о12~l3_bAIO`R:ŞvAFg5( Y#_ $zh;2)4 N +ڀ*"N-φzel'XH&T1D?:vq~q?qQԳk +K=}9M[ވ:THK(wZɎ/!ɕ8X]Q^pϦsjUN6PM_j ~͎: oǼ1}s(ikzQoZQ_`Ov-ۡY<,$T]i(P&a_BI3h!Y_ȤmzO?l3? +K ţm~ ܯ9޺^hĨEU[U(r@bT@"kجjxW10kP 8ο؝qaOpb[@2+ P>om~7⹺(+(AIsXmNwZUL^Ƀ7yq݇K :w4uls6@h6c&Tg꘼'g/u֎ϙ Eo:M +B@"}:h' ٟ\}E}Ǽ3t9J&u_H>zwѥdx3"FOc޳""L{R>$&a0zj\@4氭|۸5s4g:w^hDĽsg!'$Z;Mx7[#clͅ;k οu0viܠK@/gHK)E~NAo3mWOX?}Mu¹)wj?7z/a?r0Ɛș/rfsL`Z gFإ6rF?5bNS0$@+~Je=EUĻ~F (%gФP#M㍛}&TŮ;!L". +@]IYSRJ/P}$: ^\ㅣL=S+b=Gh\2 &RuDi?R!!PTz?*DBQ޿9>{)FUD0zVF :xSȒ$sz~FǑy=FnBۀ*CC}4I{];y'ROB}fm۬Mbw $)`am1B*+=N᝽@ R' yB:4hGh +F8D;xQ&ᝨw0tf3]w1\6؝mwj,(i ELeoϺ}-n^\]Miر` Bf!Qwp򁾊Ix󾏣wReY22{֌̮D +F7)>{vƮ;3}puL lc旹/}9vkp,fMdkj]MSVݲ/f[2ns^l)dgh!N@@^s_޺[q6^mlZۘ3noy AJ_)0DyoWv=ӈ4 m&U4ZhLyȼs{"ffFڨK38GНqiMAD0~ \sh@fЭ(}#OCdu.skZc͸1;=57PQٝZ;8: >{0A>h"mIܵ2{oF0!]=Qaml»;ү "uGvѥ8x'<9&oMV6*;V Mz1v{L7(3Ш7&]PF_ZC R*Q8;JFGD'Mw> l4pg(rgƅCѸe5ze> |in4 -mvkt6YWNqԫkj5.] #F5quby@(3P1p5su̞Ӹ<Q7'Wgl9gs]ܺ6;woa>59lvA\27.#I7;'RYz]='75r4A#Ϋ}8_;g&"P8Zm)e9-7'1&,H_g0{h:vuӪYyݯ3~n _[ū!v *yo2MFvP7޺4 ei:i8o#(kM Dea]9(puޛ$C6ҧmz \aY7:׉8 7.6Dy&S?ؑB3pQ9?`"*;("*?6y1!&aIr{>|OԳqv`[nosfZ79g69;׷.o5Y7n."-Dk#6 k"º5@,JHtwFU;Jg`Y1yiK,]/luiDzq֥.;h8E<_I,}_l[ㅣos=|qu'a +~P8Zύq\vGt9X4użnS8k<[a̫D ?}6YM).nUsx^G{$j$Rp4F@mvȿ> '$6fg*EZ;tRq8_;oS8ch$g#V:vG/"(Y=|_G|sv1QDߧ|oA:x$JA/d96?R_MᯠģwZU?vߜͣg;*+5v#ߟk/ogVN]Aq@>|yyϭ& Mbt*S)&^ /r˻1IòG@Z+`؉@ +TDY980*.T H?dx|NbC?tIZ}u$?9oHm~wH;y'1/qhB#/4H`W2j4MaW0yGuz_sw>GW0MA*LžΫkjE<(laѶI+ ٗLI=z>۟^TGt*Dq"Pen²VpGpQ!}juz ʿP!MI6?f74J`47N}N#A;y_r3"M"AХGh2L~ye;4|}"~O㞯!m::i$E3&N❗si!t +&OwI@UN(x:N{)ӫO=N_{]~jI_ +HDz& TMI&c ,uxO}#O4x?*~VFH<~Ӹ2 K@o^у8u6ާ1wmM aFvF{ʄgP~Je|?kyNm |drU`.?0@~N8y@9G>4:ϲ} -6_7[gglg1ɽӈeho8b'W@uD;/.|O _CW2ltv.ܱ3. ƕ[i +̟[Sn77vscfsyC>k萍0vh4rcm_#ΫB } [=qnʿcHa>~xz!B?t9Bо6s5NIA(77XkFzCo#X@ .(zh/?L;CwRM4WX(?~GA8ߺ={dDg$EOtI@ mvSkMxC:V<|=yQ;zϖk2xn5YPD;jAVD6  o%OĻʅݠ'$BvPfߟ鋣gj=Iַ.lō.sY`\HG3k5L^7 wom_˻2ڼckꗺ.[01:df+uY9}Z{m ,'AG=f̝8t#4~qg/~oqm:'yzo_{aGnlk8}QB6F(a6v!LH!!GI:b;sy<㞧2zoMHMxk +۾/$8 C6a^ms(k|Lg6u嘻59FSuz;[th +.MĻig.kzwд: Ayh +2~ps\A̻#O[(28 m&}$ZhUl\u8.d9@]#KC3EsHwxl6a̶Y8/`r&1 e[eY#{(dD]ҴX +w{S+ԫqor]K\\ڸc9K,6p4NvIےqx'}[@9OBٷNƹ¸ ց\d\_-=s,MKV621z,ve>Y/rf3ηD<[oyܫ:Ұ'<z#C i +vûb}hn4%`={"mj؛XҨ{no5o(S~b]>5.Nw$mhgj%o]θlWG|g=9fsefF=C_demv+>8/V3|lF.Ϊ}٥;s]L o +h=g :⺮^{(OIh/~KcxkM!6t^g3~o*vQMm~A0xi3x&>7(kYh+}~Ng;zw3~puaWv$A7ηΖl]z/z7wЍκ2Šoŷ4 ̬, L;fmqufڰ@18 N~C+cfn26p2 x^aqŲx]1Yw W&[qe +۸3m!卫? k/`>LKX214y,;dhM沶x _ޠfCmåUmV[DdĥUtoQI1Q1Q1})wvMN)AMN۞TU+-)-&--=42/CVՔV֔WWTW]UVU֕**,.++,),+*+.*.,-,,-,-,,,.-,,),,.+,- [\VUXZZV[XWXZSXZ[ST[SWtUWVUWTW[WUYWY\V]Wt[趶趴dUYVWZXZYSUTVZXXtX[XWSWW\UVVSW\VVXTW\X[tWW]U\Zt}kk +ˊj+j늋JJkJkʊ+kKJJ KJ+KKKJ˪ KkkJj + + +j +j k + +Jk*J**J*k + Jˊj +˪j +K+kˊJKJJ kjJ+JJJkKkj˪j*KJKkʪkJkj +jʪ+kJkʊJkk +KKk ++JˊjJˊJUWTWVWVTWWUUWUVזTWVVVUV֖VWVVUV֔VUTUVVVVVVVTUUVVWU֕UVVUVWUUVTUUWWVVUUה֕VU*-.***++**.*-**-+--*).,,*....*+,...).-.,.* ]VW]V]V],XY}L* +DriG Mo4{D챊Y裆a8X7;R59>hon*$)" +\$*b޲CR+cd1 @[7N,8CҖP/(\Ie[ 8ӏza@|^mx 7<q'!&~ox9B@ T xc!&dj C Sal KKJ&I*bx^.!_B@JZ'LE;BhuTA*Z9q4r"lg'bLC/.ao`ЁiX&)gwkc3pH4VwdY|B aP4H eyK/?q(NCp͐%7_2jhp!H\/q! iax4DzСQI:& NH\.adWH d;{s'OEI>Kfh~s,"-PʒGvZJ.֒!-S5.3VQqGͰTMB'-0E5eѧ%-';G +H 2?29B"QDLɤ *mA). H l}27i{Ig +*m8a,J(hLa!D?f*ɣTrA %I|*OD A6M7hHș Zt(nrM:&HdHD7.@Yej-q0?vc+S:P)J'b)rS̟AʪbKŀH |HŖ\@e)*61hkf )nEn[ɍi9B$>b+uȍP 0mƸY"+ؼMX5b^ -$]ʭ e+]MW&qI6Kun!` lIĐE3 ~t R7BٳDNC%Jvd1 iX$DJpX*jy$$ wҦ*ɝ"$TXB' +nqc[̡%đ6 +$%DR)ޑک3Ȥ'oq%Fz2H%epcGNH=4%at G~tOnE"EP|d(qbO%8{IdF!l!%0 ,$B{2XT26ZB +^#]n4|{Dt3V3E$3{`9qe-sǕ3RNLK!.Cܭ$[;jB +LM + + @1k.x@"kiD˯Uݧ#&5V&C\ +,2ȏA!8.[k xFf C&3)nBQ\27Iܦ (k$=PrA9DPŪpL`xP~uSzԄVԜ2qw`*Y1 c:0D+}Z9zЏEܥ"Б2+]e ~fb)aq)q)qi)[3WXIL($rG$cͰC!!0 jzv"*lLhj# $4c&O0Q#bR#K2a)%atC & +#[-oy!7𡩕A)7ɭ V.P+Č ;Y"a5|nrMQê[Վʾ`Ϡ%>sKDm$ +Pd 'qK6WTYt|rt})$QS&{F¢F"ABD=~6#@6llClBNuii%*:A)a|NS:e\Y"R)`DH=G=W%#@8tRzԑDܛ<5&b#*i1\1 u )mDtk +NN/U3LC4 q(73 +m%5)kLؔCܞ"mF 4erabs&&BV*sp_bi +'*N>D=%(z>C\)q&#n]O $g}>jt͔eK^dDwC;Hb6 \j>O8iHQSCn +qm4: i C[`w0!e6HG4m!vOQQk;,PBV9qa!a)ۚ + Eш0S#k&$En_fmJ +cW@a|l hTT:.+ nt^!d +*mDlDm ?hℎ\Rnd7.+`VULa1_h@BkeSr뀊jYoǍN;. ;mJ MʌĆ}wDǿ;2c/ rfH8dǭǧcR2'{49\ö-(h7+4|\C 8ȸ)hA+,e2mQQQI9BCB%X5}T9Dō2S7E A9Qi:bh?*9;R @rŖqE +@,*[F@IVMzCP%upekˠ;3a,GxY8"&& [JFZW<^pZ\53a +3, bˀeH'E_-%Z"ڠ@iUc؜x| VLA4Q砧qIo8vF-(%I݇mlD{7fTL1vk^A{&'< Ęm),ꚊcΓ2ދ"֓U`b1TX[()f2BhO`x%(l AnBy!MVoA +ĵJNtX eEr'-4J -J5!!}GHv'0k@8f8twW|xU~nYrlبjP + {FGņ{w 9N;6!AgZ9Q_PPi RVnflCFqvb]XVVeCXJw+"ށQWr  4@3耨@;3B{7) +&aUP 1'Arx de)](U$-g'q'QrB R&dK8%<38V+sM(6ڮ,\\~0(?eOPW͐Y60;!VM.)X/hv* ޳CawfUL ts0By'𩕽Хi-I81d9w6@Lkجd\X60;yֺ׺;]YgC`m>' |\7ltRp;v\dEOc&Q'%o2MQ߬1^EvFfiQ@b`r*! X^ [2 UP?nOZʅ)kI_&F3h8h=aI)=UJrTJ)a6&%ӈ7SVhRZC.C!5 +];8%S}$jH0^NZҲdW+3STpr)xXU?,z +~$ŗ},ύ%͌v"NPnL`tRrt(;Y5\eNBn(&j2QYy+DQ)@9x|\>_ {&AMA\f$] KL;IG@V*K#λoOfxx UTk[ +nI  -2ia/*J,*4lf +И +[1,!h |`5%`p䓅>tp RDB;D*AĊ8B mz=zh89o~}(<* +t u#"sX_)}b'6+uǺ?yPY?.k +UN +SPg1uq3LٌXiADg2%' V\'mgj~/CI'0؟B4Z<<AFg- +JJFg UXi&HLrQIo!0!zE9X KT& ^h8I:ST)2-j'sqYCZ70AB]!K[G.+'-ibG0A ˧Hh"~ct:bJoQ#']9>+݉uV"."("}jx3ajR*Wﴊ@_zm$Pa#O['2m!VMzEdQg?5EU2*;Ӱ Q"9߻Bw\>3ysI[ٰLlW2na,6ؙmcظ0vjqf\'R|LڜorH ^m .. \}6QF  F_3#绌r7TqplIų}h 3X@ {^ ץVP.!U N:*DdՋJ5±3fH. rWYjEgJ Uq#TФUD֪I/E`dgbgb`*=jd?bЬ' 1'()ppT+,- hiY~UA(g>}b*Eq+A@PH*˅eg>p*DZm^AGȿſ~i&~%w{>kG>- Ƀ?@$R) I[G496vWƯ4 +Mb $>|p'"; #XcL?'g̴Y_RwY1xpԐoyA:FomqG~ȫCP`-)3w5#κٷphbLeʘ9aE_:?`.>4T~p#fP9ZѮ;.Vfx JCR١X䠽;3k:w0 oFk +jSNRH] Ǻ@ E*pD52rڽvu K駱h/?)i仃&m'UFub>8B:а hGFHv-k ?RoNJ]BQ (i?L^OVY ӞSn8໮mo]/$$K`CZSPr:s z1#k綖scu]#w0Na(QuRo$"M{G"z{ X3.#Nq[F=}Ȓ/4 + Ex7yJhG`ZdY7we[2!< ϣjbw +}:h}`c8YP }V cWY8.S$:y%=$H/x!I{&!n"&'#+  3otWSIS"!zv' >QF!q)Adp BJ6=a~ ʅ'We7@h#} ej&ow^\N;CoB A~6\ZoY֕g:P_GؙYͶunmOB o{Ͷc|67tA:ÔVzH̄؏:HH20)kg3`?H.F@'EjŤdejniu@F EJUc,ʐ7๚roodUÞ#6o ailA鵩T\vQ3q  B685q<{Gt/@1H6B4(W10{׎vZU@~ٸ?2|m^ϭ ߙ)}~".Ox$8]SۀixG6 H8TI:kŸXL߽5=]?>i P +cKakHA*=e*a5AN$`P,u KLe$JfZmN6ShЪ'M/~?P`hkଭ^`vK<4>V >5sOkS_f}>[KCƁ`h +<ԇů4af魋YM40-@BgY54 XDp-4Q\\T/"R($@wRe[o~[3 (93%ء?Z3m_l.;q *08AC݀jHf~ri +dĸ%r2b|l,62j;\="3$2m3 ^L'WyE={Ӷ6vuΗ/(!/LYwP&aqI{I1)P1^TzHhB T;U^*4nӘwԝ5)KK\ +!}\,ʺ9So:GE3@iJ`>~>omYcϲu.h]rLscMmq1/?ۢ#<K*WBS'OZr0@ ]ņ-" +LXD@+cMAv +-6Ư[XZƒF@|%3:CdDkZS0bJKP*pu< &Uo~ Z@wkZ5nf4n_AǾ Ege1~kY&Mk3x7zL7foZx< B2#y눩 +3fqnYXLIb]!m-ܪ +Y^h""ry0C[/xЪAA=x&`A= +W>0>{vv+mXaB^!Rjd:w2_,b +Ȗ@(n`9-ۺrJV5CRa"kO^+#h,s%?p_ p hǬ&)D#)>@cM!"n+$}󽓙Rދ |!k̲ɲ˙VΪuZ:wjL@'0he`^A.apz8mq@R +G鷝2UPT<4O'e(VOn-V.tMw'pvtZ)[T,xP~sLv + BZ\ܱ+ mהUWy,J:L +SRyAI@ZP~"8~iq\s8'#(XiyS7&i0{0l]]G<{QjS7|[c0pCdD>e zpj)$MbRN@bq93. PH[F4i#+"!* 8jm<\C'^B@ev$u# 8#*eSJж6W_y;^ol>64ցܓ9WCw%?*Pned<2 0p!|)gwbݶtHYl1$ }Em ,ɋ{sR~;#sAn +Y^ +0B͢Bvb]1T +ThdYPp)dPUtKA +&HSp*j$/!rΚ9[`*{-Y  1dcK PLk#ni)0 $P{ id߶C'CpD>-da d7vܠPmRȭ<]XDJ}@XY^N9 n`S:`uӞU=4MeF$jthBܩr [MC֮ +q +8:u]>8b9Èg߀[v9eݾuXXJ> 8?3/K=geCo{\d ٿV1<.ǖH8j>2eጠܡJ 9!nU9AFA֏hG)W%u1r%aTi# I/kCuqP&2;+akhZK ʥ{:k`L@}]:Vo]2.Vryf`o{9d0gܘA5mz!0NQC'ţ8X!` #EWL[$ZAo%"~eD>Zq[a9'6<v[ +|jX!Ϥܐ-d=R^JeB iPB԰a/-Sހŕ.i&%?#'*10Cnעx6Oc x]9,P%&= +vR66!FaB bZZTǨ`A&C BbJv#<"@4IzHTRcb`U.NOɥ`@*WiU< ur- 𺵣oCJqxړ86%DhUtx3|r /.C 2p, +![؊f7Y>6aB $#6t'CKKCC:QA,0 +\Tj1 `v_Rn'4X֞$}/Q݀ǖxbJN +QTe)&i@Yqo~)cNU2HQY3%#$TɟSh~rZ+ƻ[2/BlLă{]. k@ዛijh#(h(6aIE! kY;AU@$6Bbbf!Aхq 1Ȑ{ ES95@bkO1+6DƝ[@4Ӫ"I)7A o(TGߤ8"G }0vf ܌ͫef.6Ʒ*%]<;51]2GYxXؘ$`[2dp0k@p* cd*ȴ%qBŠŃA mP ]CX' +UB:b2{SA\ ?&E}ȕ@U +,I ~t&x~|^3UA_) SZeކM{#GFjC>JUēbƐUeBM:I#{ʜ[g7  cPdP/0ɬiQT1lV0?2b̩Zg,ik\W 11Eq X-Hiŵև=dGW{"Ұ f3ՙn(Y>ݠTbɒp@'D ̛,-5-PQ48 r90#QC cc$`C,(!@ [0"x`<#pn3?ǰc@ܑ3bXuҎ6Ņp1Akİ~xn^#ZdZAnD 86`f#-Vӱb2'd1xJX Wmy DL+ c v7x4.DaLy2 !Kj};#Nf`F-lup$"Lg@u6Ӣ‡>{.l$_EUIus]ye(Wt`@,Mh-\1-8v  [ +d[~d&L/G5u5`[/6.8c4pT:ЁCn3jR<\' nF0dJf_yQI0%ҦP6!fx@: H}%GCEG[`/KuTFo +d01G$#RW Hm)l0 (_VQ7B.. ^ZzD>00!kLJBal2#^!Z6 }b4QG M9^d`K$4 xdyʼG.$ _oWJ+P +ń^Qc"aM8ÚgC1>|# ss3yrd8Tc,6=B-`4w4غ4N?]eيRD,VXxXq Y,pXZxy^PS5qACĹ9R>G|'GX2 ĠU= HGWzF722/<@F +?0Ѝ!:1k(0N/6hNʠĬ cc*8*Ҹ&U4@*pSEq8+F q +CI\Pĵ"*]DB|T)8 LMK'9>w Ӂq a!D H1BJB$WH L5$¤ӻG' /7B1!w86.i3ȶBB&_(z)!g%p:Kjch^FC鈋)85s* q>~R}U +PA:ZXH ,G $% L_I84hcؔaIZ.1nXn(neGIH&)Ľ\UobhRL +xxonxS{ 73 q Nsx1 +3 @` ]R{#׆HJ 2ڸediT8X +;NfT(ݰ)K!:J <1=$C#WBalH QS,M>_ 5NA +e׋5,50H, +I3!!.#)!?"!}x.yqٲ`?9h$g-?hH(I@؄!*yn51 (_9G!Nm FFk(-qWp 6, #ޠGql߱,Mwpu K)ו6V!;rlzs4Cӛ#& =P;uj{xr*h٘sFd Qcr>aRF74!NTķ8ف$t% q,!$sħn!yjh͌ 4^ xXLy#!^765q`޸oxxsp BDAM?Ý`vS_#xrI/Aȥ.m yB l V9ʚfxH&I!A 73j&0P Q) :>kL11)%lmc:$Y#W܏BEı|;4\ UxKQN0^/::ht1"[#V# w/6l*kԡٙ:$D6q8q\n#Tcp 8pnqLl(ig LE|dHKA"A2><|Z kzx׹iDNAœJ8]m6|1 AE4)I0dQѴ܃(~a;p" 40慿./1|y 8|'KĵdۼF(~ii`@)%†4 bb+1d#,#M 3rto@ц $8gRraLkX0 O3B1s,`8^`;7BR8A0,"󰇒^/6;PhzqH)ɘs3G*g"ND4<9~~.&jCtHoc-b +!fl"p `)\$,6pEk +Qײ8"sNV2s 0\&9g s9܅p^ox 1|g 7pnģxY1 NK?'6,l> c!:6;Ph~{( "{CFMD&67V7qr2\ѹxS&d24;cx%q8 /no80=TE@_Ѯʾ Q7DIq@%hCyhN_~pĔ꿊I'z{<m ID Ĥg`bkJsZdUdW12iL1qzYW\Qٟ^?ѥ?Vq$Pe?=RTGA{AI"/iĻDZeQ!= }42 k@ ""< x#z*:zMW"~#qt/T#RiIq7`:oc dd'U_HWC8W+&v,OR9*D̔؏:hۉ8 Zd[:@e&U{]L׷hhv =H*G`ձ3&z"KC?)*TD{T{" `wscdEO"1*SȬ@EwG6?)Sg5Cs1ʍ@H7JL}t|bHZt*AP J@~@FDDg s ̾eWE>| PHz#D4ج&@J K䑧d_'EC] +*;B;#3 +-<{Ɛ l0{vUGhZ12?WEûgE<$jS,~(Nyg-&ƒ٫ZP-sL;qvuX1vl1zj Nc' osާ>OW/4JB5$=WPRZH}Of !(}5s!*k`ZgJ'gh,ֵ;=BD'4Q& 4 + LP-63+#h6,B[ĤWF<9Xg-ĮW/6kb,}TȞ`DU-D)і#G1ZS=Y%Y?Ɉ[ KV o^B! @Ji%P_9x]:YKZghv mOĶ0u~,ggpBuzRf`#>  w5p57'$,&p̜[F8vuNXfj,H@}7PArۙ=zg褳ddv lyW[01nfjw<>~)l8}3: +a~3>}J9tU.$'TF +?u'IwU $.m1B΅+жED/ +HUvK*E1DD DN'VɚH(% Rm(WEIK ^#p!:oLXvAvW:=cxR#*{S*n"%O T^\qV(ѹjG_ȬqtFF6Ͻ Sg+ 9BJv'5=G2#A@LHHn"gѸ[3:{ib$ཱི"qJ0z6R'bФ٫^\N &~A SiټZ3P9`<6v5ށWDKem%6> {?.P?ҧmC8ouDAo2ʲlɻe!KA f~vGPYԳuxP-a3Gӎyppz <@=792T?C˂ BL63Zh7Mbd_b!:G5z/XzQ8OFgri?&KtSX/:4 :Ǥ[Ub>8B:zwB]L!!Ġu"dn53&!(k?Lri%n LNVϹLzr5r xYKl[Mc6tvXA7(I>Fg +@B=W*6XqYKD'.^Ĥ±Rh<|_ϭkqv^f* 'VFպh/(!@,("mPE3%O; DwFE&͵#TIO.vL#Gu^ŝ4QG|4jx:M \ g&g:Kږsb^ T4o5'a#zeDw ZHw.i2^c 7VokjSZBSYN2_pJWN=( ܳ4"˯ruIS8BZoH^ F}C;$oiOv, ?S"VV+6k&]3ah>8cx, ?7V +YG`[JdZhCP: 1nö{ם\=%r-s&EK0BgzxvNî`\fNI3˂ŌW,2;% JU/.%1h|x_BJ=5V !*=Q`gnBk:J9gd*6car3]f w˳gcS!5|$&+VUF@6:}DW ]Qve=We!s1} +8!ً: =Lޚ2mr'cq^ $)i-^L!6kE mᣣ!|/se+;xRnՍ͹ȓ3|p7^:'EL)"1}ius]f%s2|mH^(Y( b; +ģO@'ze -gjΌ鳻" o%NĮө}4n +M\ +V=kgX˧ PRk:5aȇ.7Hh]exn$MnX+jbm>IۡB," NK)m`qggɈ_@L}U t +e}R;B.AHhGqQ N>GúcVܭ@;3A 6 8O0uj44Ŭfĸo|5oBM^\("SC%b`MqIB[Z1Ё,y,u ˚ފi]:Y6?ƽܡs`Ĺ&jc^hO9Q)V* 5.$$ fj]54}" &L2w2}k^LGl7o"[)-,<oP-twH3|n[ɾ;c.P0|fଡ@4ej;5yNB=Y7uwm ND~2#ޣkhɾUbSx*-1Y@R#( M[Ik'qz>|L] yz6<{1zj&@f dk|\%ƻbcH}熍4y@FGR[<>g MT KPi&ߝI;b=:οVrFoef0aF>jdr|5<&elMn3qlY̟w)D 홿Ң[!6LU(,Tjݳovm'~w>Į K{ źJx+z$@mAny< vbX~. !m3X[12aH\$B;;x庁5tu&Zٻr|R$&}砐!pF\Gun~mBFعldFȒЬGw,ڙU@~v_ ΣN0qpQ&Od}a5 ZC_藷ήs/tpIjoj:x;2zNBJ+G)υt8_/mrv ۚͶMw-sjmcHPo +KJi >u3i@,4>}v@d=$ōaJѥ\YOX2JW`rJgp7,Q_DH?֋̾$a^ruR+"]mv O6'!d5n/"Fďhp3m&BP;J^Pmhs(sdJn\{}5WӾMjFăD[pr@c}@Ul#}zm"ONvK;A i8sѢɫ P?#sXwg.-1;)BB:+zmEΓ0 Sk#ηΆC2~i=yY2׹1{l\>M),Jk=/F^"Չu3(!w{vZ!;DLb'ϮA;ek k㟿*pG' G8(- o/1`] L ?P]'M#׷8dj#^ 2|m[6w.&l70X']“SU,ʫXDqZA٥L\uk駋iU)*횿֕c`Wni}!)!I-(}b')XK#INRJ#y~?M[MC2 o AB +LN +ONi GF sSkbG;|VR$G>(33{<"8ٷ[+#5B<5(T]AIZ oj^#u{N_Ɏt|`CR_5P'3jKH,)SǞ8GܩKBFze9a6N[GIU} Y\m^8]&Roi,g0yJ0 +y"hZc/ugZAJnhu|=I4ܕBx u#NYsjKRJ>|[2.m&RC6ZKVSPr:SXRJ3"z& .  \179'NoJHD盷tH D4XSn+=,KkA tupVi%o- +=Lk{+":I=+z=Az=)K7;OKFf_: w ITbM OL=&}#hF*Y98 QX +MJk' `@~} CP:KA=oM+3&6ptM J]i!.xDG3Yԣ3LiE\.3A [T*.7ә Фa_`OAZw謉0 혽6[hpv }`Ck:=alr[.{yY.;ׁ&v<Ӡs3d9NZh:}~;:mXX@DPЂFJPx@H8yT*."ev&Dw6/6s&Hy"Bg>Z,\w#G;h}.9424ŵx 1~k9YMo|(GLc3܏B}+ńta+WK(W @ %?%DI?b\R'( nBPa1A TdL(vY?zQ2o[I7<"LÎJV2=,x*h;1~;(Lb8%ԥmuBc5" H$/tfK]WQK`tqD\t?QkNo0vctn:MB7cshy]:>𗱃ifL@[j Ťr@UR%(?UzE%}zwjq90ri4۱l'[a6osh7YGߞ#Ϋmk7dt>`"*_:8\K!fM&@ P0$z^fNZ0)P͓4?9#z}Ȏ@$ 4 cۼS"lPRם]иdpw8 rwocִÄ/΅s@Eˁ ' y:{dT083  $Y+.j&;|5VO.R_Ȥ3IJ]!!a`Q@Jf݀e:AYSbJk8ZŞ Ӫc48_c̠#G q]챬'klfڛ]tB^K'u91wVVѭmvOÚ.l6VeP_%Dۤ*5t~L~;&&ՌL:' y.$\4d_bMYhX2bJ{ )ps^?~ѯ]~$oԇCTpU:*Chcyqn1~n\Dj} "]}h7my&d ?:QOKԥm{,Q)!9م.쫩``Q$"io?P"v*6VK Ƨ3|r5U.EZ7ȉ;i4L@*q>` iTZW K#c.m\8b5?n\ p2/ 4qZDr#XAnVNj^a[aw ̸-m52+ h,\"NC@c2lQLbG=tfP\t)#f V\!t }{+\7>\KPW8@ RLByPK_AĢmò+xR)" !s`R3m,i̿.9X/;He<{0/3фs'\۟JA.M}/tƫH0]EBe Y@p#09"09pr,{~9FsBNYWnɕ}7Bc(W|+Otm)T;хO[)aeIvPcY2ɝGp>d*_\uMey&@eˋoK7rb+q:/)L"`z?kz[^X,2J;%%G{BL!sHN~6 /{|aWx\^=UrO}+|'|<vu!m֢ĨG.?k{~:Wvgsr^~*'>ʈwJ/4UqyLh_*׼=ٛ?\8&_:{M;4ch\$gɽ5zzjm}ǹ[?\ |՜SRS/ˇyxT0e#-{s68upx'7f/i Bߴ>se-ĝ΂yg\Rjբ9]k7~r\VyF`7;+cDcV`GǠlg}Q=I,:: m,;g[ڏ<˻9`߯FKu$ Jqb2 .gUoABWv8}CFĆqseۢNOŸݷmQ/y1Gjr-YgkZ+dXcC>oX(pS,e~ۈ JY1^ԺXdugIb\DM6,vTgMܪ=?;u"ved=l!r ?(YgЬmxX;2L~֠Led5M㾯2^Y"P@eg-.6bP Nܫ"]Bu{{mvVj$׬C<`$I we[p'zpB/af}[ +-:|r'ܛRȿ! %'Yܞ{6豀G:G^x[$,}-I4\wfpE +OGGHR \d[i05gHO[/‹>ǶORtuJ/Z\{r[P忼xM'f׵'=#]WgQ 4/r+uҋFf DHfgVǘ?%@JvmsC-h.+}`Kn!Axy!U>M/8ĦNʭ ӚM&8 yٔ_ J;BY ]"󴻭;n-are,8aF5M\:䪙+nc#:Pn pͮdAv-v_#E.}/H@&T$ӐC61ySmFurOuש;SY[!9oyAis]+λBwC9/>Jô .-qHn'=m U$:h3UX)(P HVR0B񗄖\C\jlI|$Sy19S.W!3W/9T̄b<&ߴZU]_ٕk#;sק;qe=^#|qb"o,#ܭnVV /M`>xE"icp~ШLW]~Lg᳛$6t:j dB🡹ѹCr; C)xeϼF "~mGNL~S5yg]  ^ @o3IJi Rٝ| &D% ΣR`??ϓd_9Ȣ-i@p~f%Oֶ++d}6~<( +z|?E@/}v$|H|Ƨ}HƪХOU{;e{>\4[RȵI0 (8Qͫ_%GGz/eo$=kx6 k{ng?zG sىn=?}^I^a>DSLϨӻKE .Oi(t: &lNnx8,pA[5vx="P Λ;FMի<*Har rI⏵rA<,KV*KL- ~ݾ"\iKL:`bT|E/ d^9\ԝVN# +` +pq'*f;9*O!"0*iwpT +4'tND/9Ue@ĵwXI[RC 6*x8>k"^d ئI,_v0#F2IW+(%\owFoEhA r824d^ #Ƥ&ø-KKu;次 +ONam2G^s'q@cP_ЇDaJ3 (B-T72~E3P+yzl0 -{>\.r!E| ѕyl6̤ڷE2"pqN"WÂQ1<ގe_'r fCnF˅m LS] w?bXT1Ԇ}уqA1΋T `{rT-]]ۨ34) "*\>D RPjpxD!1KΐR|W A|O[ӗ B9^sˌU00T~zя*'OvHL"zF .ߵb춙*,aTAV +L~9dE>L T~-Bk|]%_F]x.3 9Bځ(<ԎM) p w2dT%W\QXPbhdCxW s:1uH{-簘h0Z"qr3g5ALA"# V¸Øo!x\6 ,`Gٮ6L$"~X7zOYI a gbʇRERE0TBL4O8 h?m)"ͻ-:: "xlT2*bL( +} }jDջq!67]i +Ǟٿ| t)`5)\p]ȭԹ +"ܐi$R\8Cd~:bSC1o>{}ZB^"xtnMj خ){B &^= g0h (Ls,֘h ?xXy\ qUV:$0% r-$]x5X&cxRzqx>ΆYPsj `<$tl n2^'{b'l)9e3BLm֌ĕK 钼tg\4Ũ-ISj2h%̱u΂YIɇ;1ފG"GKtPxJ`ts!9pQG3, +Q-8.⿁!wnWO"tqnt 4fBM9*$a: gy\ְ !P/YLXZsryP4l&ɬI-Zy94#/[rF(}D}'aSפ5K*6(N߃ nGO#A-% -X~lc9rWZ4K`j +_mcnLܺLH/w!186UfP+g5NVZ]ȌA]׹@+z2vRrm`VqPvN(;PgbmF61T?a@mԺ ^+XH\=ĥ{#sLꡇ2sҡ $2jU-^S^eh7`UoqƳH"W`[)6CY]KߜV;)o͓.@"GMmtv lZ[ޭ 4E㨞ĸS|b217dS_K~;Oi`C'JS ̇6[G #54.aulWj?83OmcHPxY*p0ђ1Ȉ`JcWesj2*bǹz^ܲMV*Q"? F\Ƹ^G]f<[0'sWNiOg-y}e|?? Q' 5,\jG"^(ktKbv5BBNNt`΂ƏxO} h̙N[\|;m/KK\Й Eh8c$CӎߐCbŷl)|uk"kJ73*8?F|VJJߝaj釱H#XɾF\& P@kmz,DK}=k>`^DS V䊃`eԤ4$E6'3y h`(;+iN# iYu7U6n܃!иؼߑ̍摲Q^H?dA\LiPSW* !Y& UlkJC@L[0UċbPaIWE@XMOݮ.jJ[4K݄F("(dE]Q)ҍ + +\4OJM ް:dKsv6d}u9_O MEzO/QJAof[nmdMW36/JWYD9F62'@s*.C^s?e_Ij~Ȭشyt3Nͅ;y"3=czǂ"ӜKMK_Zuڰ+Y\=d>jw/t^$6R?95QJ7zeA6,2yӂ'8NӨ6xƅpb4zKn0`q9^¸u^c`簀Yg\6( Ԝ++9X +?{_5j[N3OhG:紹⨻$UWy~0dGB3Hᒝ'qsBhY)-dh +&4;)_0{S!& Ecm;dmhkyd@\G6۳ +MU a&zh22RdI۬ I1f %h4+BbFTY6^pe?>n_-  *"bx9?xo3[k}~ +^cO4*V&p/0y,gZYJT?KL%>LT[>2746FhKMxĜڃ"R۪5Uno1lZ4AeY@&V1N< +#Z*޹b #҉h<㫥Ȣ.1߭%6o )Fv|:VG[Ē2O[K{*| ]/!ogq^^Kdi>ڔy3O`cl7y 4]C`F.v+CEfG"6.4*EVβN<+#aݠ{͛Jm[kK +<>kZ tP˂bl{WA_tV# 2x&Q e=1{ =fHY.z}L.SQQFW/AT%8ֳ uh!ul.ejҺ'eZ9uCT0ɏqv 1ላ&>{S+O~1b^7Y/(/`~ۯιy=0cD&4@0_{s%720*$Κ"bhMHǢwZQbɜi3Z>yjx\01rO gH_d>TZz ;!t}Nn/\NOwBf (KC El" Vݝ7D46ҍFZX &RJWE + +Z + MZ3ק8ܬ`VYh睘9+IsZM99$ؚJ{O:QL5duL~n&lclI$gqS=zszybk-ϖ[Zvk-Yӛi;[K?qRރy;3nվjV5}UXi~s_;<ӏx.v;1^۟ډxto\70wKtsZ{vkJ?r'iگ_יmK7MWs[_ۿ_gjv^}_b;mp>swRr3ڟZN;y[k5jm<_Z_S<[ik8gͽSmk}y;3 ]R;s;S` 66YkMwsKSՙ׻;S=~Luzkj'{S=o{\g.}'M왛/ޚyWNsZmwv=9fn٧7s޹I:('J5t.l嶶;_sZNmo{SkoK37oPw]ӡ.NNסPAm:ԆbY)޵}w{Ə9sK}Xm)K:8?a;Zp7v뺎uw{oi߼s]:sݾnK9ѩUNκ_jNs{n_Jxys<:)Kcşvsٚ_L7;8㽯OmsvsnNq~mZ]i(j ?2EgX6S6PjCm i>"R z U +Ho4 (0͞Y㟧{ܮsYÛ-6ΜۜczSP +6 [w^Ll*Po 6ԆBm,3ھ ^7@G\Ϙc-[cw;[^gYs7ݺn[5oi榮Sw]K{1wzol{K_]o|sn4ougomSVߊb|Ss9#g1`:ǖ֙5oVk;|یsϴ~|}Z~Nu,8Dwymֺ߽uxtsnj;{O9=Hq~V#Pq 6ѦWӯ>S6`8usU9ǣwƜjeq3Lp%ʩ7S~n{4_ckun|>~͎G |o{o[c17qjzݛ7ߛ7fk'ʩ~}gY&]MMqSso9sSs1ts~͛ͬ375MԚۜV1omu_kw`J?Os<:?s^/ΚVOkiS[nZ;={91mj:Wy5~N]ZsZլq6wms&8?3}sTyqܴ7ܴOڹYoxtxY=޺N{wY;ǣ3zrN[ڧ^w^-s:Y;3daY8+p d ;uxXli[k1 +>Xʓ}WԆx{uS=}|{׼S6 6ԆPjCm 6ԆPjCm 6ԆPjCmM;Yg۫Nkxt5ۙ3NԽR<9WK?yz^rrWʟ&pmLoVU~MkM7WiN&6sS)v9{s^1vPqǣn8|Kf:9lsr9zmǵj9vn^1͖V[nO71Zy:ʿVZ׼_{%8<\T~f[>polP"~#?slT(¦UEʼ}s_iJ) ˽nJ( 7jBO()ID` lOvDgJM 3Ei1@< u<`3hRXyJ. d|<Kىh+C[o{a߀JfKvY#KyRzrJp/YKu_ dT%]$("027kEK 0՛zQc@,;ހSf76XX3I(^y>Ȃd>XGoWz+b +jCm 6?K>WTaGzDWDSz +D ʾbaYkZchH ̣ڱPsDO=d}` y˯6Hވ# FiS?̄FȾ,K KJX?OqojUz:7b8vP[,?Ksd_)么7d,5҃$ؚ,|Bk5Er&3RE~E' +[Hʼ=5-q S~s֨}P؊6b9r +JǃSzL֝nm{vۿߜWſδیb3Y뵽o}s˿w3UNhjiʱwޫW[]}u5ێ~wθb~uϿ3Vֿoެs^>;/zm~{Ϙ(Yͯk{sߌ7׼w3΄ޚ|{{c֙lo״ g~Θ(63<[m7kusγM3Y[R] +VZ~1׻v}sX+3{^ݷsŗm[Zꌹ9U_no\j˭׻]묯zZ5[_گk;Ƽf|]τ&3]?Jk9j뾘q}\pLh^no=[9zs[[yƛߌo=w+[;ʹ\g3gB<_]r8oy>־^wso۫/uwŕmy=Ù5<&[ovg}9Zl;[swWg83Lh?[kl5ugk:Z?Ùjo=}mgBSjmg5=gƹ;f8gL?Ù]/zƴZݯ1Z[;״κwL\+bw9juXg3n[wߝw=眭^wmc]bkrw3kzk[1|o?ƛֽ/WcXW^;j͵k6ij6sXۚs3_y1NkϽZo37Lhnl;Ҫ5מ omߜjޟ6Lo_g~3ygL~s]1֖_[u1xj?_W`noZ'7v@G\mY}cj]7k\'v_\5ν>LEUr<yF6X"SWH5o-XZ;V󵾳΍)Y9~CǙ+'9ݩoj$U#LEz$ze譲q)0-gZͭdK+W4l \Wr^iV{Wjj[8ۼWs5^I~lHJg/恞3}~l+4`>Fjɺ*/4smkv_gKWuŖWl;[?ob/7o^kjivW|Uk^5~z?~m;ֺ֭-ڎZ=~q{w|5:so[ߺs5Zls.̷yUZ1cVy?_f0k"۾WikwZab  ! m&9MbI@ JprJxRR1 0# fW8'Hz+OHeb \7,Uq_k)*2B {s@[O*=̧$8rPͼ3:xT(G +&}9~o֒^EF +d_ir慪su&ET0ipA3h,0p@(BH"l&ns<8(FNJpн! @V( /µpz8-X"f* ck: +Fi. &^cɣaUaX6B#vKCE\e*Z,I)kuDjHL@1, > seKC)iC6g5DRBY:n:v6âEN$Udf:p\DcÒhIlZumWlmSM&D$tO<PDؠAxu8A"fs}+`aPc-pc%هO!ď'zWyLs<:h7|RUӊRPA^Fĭ +0J<`a0 `nY@`(:YqLd0w`T]D0آ+RMG Z3e/n$a],'Ѱ6\,^2'J.%BHD~.!wpiAQ.MBHò2N$,0ϥªK +``AZ.Zƒ0 %U xa υ&TH(eódۨlƒ0haFE0QYhBz6BJb T4]+%KSQ}I))r`N\XQTEr=P4ˈ2aPJ)E)ZF3lB«D]lbЬ5ØPb(MV'hC`B/"dqNL$*LB%<2IEZ VO +9d.510Dds<(0ARdcP5`oIb*2P5V M-V06+Xi$ eSM5f1YaBmGffm4T325b*"@)c1*b +t4A31-h0W2\&,dW$lՈN/2z%/EdRPDC;X"DՓB0%DXҋJrS܏(H K" 9"^!b$٠!Vd(X +N(xQB@d0V$ID"fAN&WA1&@b!+0P& P!x +HR:ĄD8Ȉ#F 3OA6$TZBm )TK+ХuK'V.!C9`hbBW%@\ 1 &*GnRHKJZłР663A$f!n +ZF Tt4AG,Ake"4҂Fm IFR204MvG \Q5Ek iվMPU-0ZKQMciqhԀ@ OVChZ06#2MsMKYD DhmixB&X`.PyHE4M.(ZmcA.*MӴrA:GӰG4V-D4+@h\ PoRNbfM]N(p_eS[q.,h%T8tcxذ" ٥>$Rd0P|6y"7ǣ\,r,Xj, Sj6puX +a#R;*I"h +cd9 +p@˪D(d^cE)Q`> ʴ1 6X\prlhi(iiDƅM+9(i$HD8 EhZ +&p8cPp.h0LQ *\ieC 6Ư]YhdBi(P@BkFA,F hUbԴEF'3nȠ+0Ph(B>mPy2: fL拵>Q+E/)YhSTxM(T}cKE:%SO$=s$>DpTe/l +90O摉&MjFN&,g!6=pΰYH` 2k}SN,$$Ĥ ̛7?ȚS͖ S䜟͏\[ɼdc7D>->kF'Z^,cdɾ(z ,էCesxcR< K_>)kAU( GRD+Yؑ zxc{帉#UD(d_y@ P O_YAP(OS+e!胉` Iv*I/HEKxUz"%$DOv%,T}*ԀHSM2ISh3o&X647s0((G$O>%jQ(ZcHcP؏s?R&%EJE0QTTZNMNDRR32l58lZ*JQR%T| 1UjT>p jEGQ E/V) +5BqDƢQ%EQ%k䷢PE>c}+,HjȒ_ǐ5-e,^} +=9cB!]KPcIIX`)`%XB D18#8#)9ƐT`)8&V`&IL( O"tԻ`X9dOHKM&m!DxQ1AY0uSQ%BD2bԙRȂI4?,H,`8y2 8%&as<6>RMv 6(0(6#Ar7^V> 2\ L[9mcc;ЄeQ +X02;Ap)e&v$> yCU7,BW < !"$R4'0W$ӆ;E~/F@L0aBSr2jr(﫱RHsu 790 w@Ws(`p(@`"Z> ܍Xk,#*,l{g Յ$V +-P$`0<2K*ҨP4.– +ȡA 4  +BXDb*1jcJB]XB8RhiJ壅42p;~ɪu\'3T 9 _nL쌿4js<@!29"Y(B +endstream endobj 13 0 obj <>stream +6Q.̏ ޶Mi,u9Ц*hU-JKaX>Z* +3I*( Iv QaP,$IB7D^|c](Ȕす xJJƄUÈxN!2z@^Y!KAĐ P7IB-AnJc!G"1ۖꆤ88pXFWCPD< y>C嘼NdUcFT.ĚH!Qi,2l"YU"jj6jds<i5k$E; -odE5"0ͤpPP`@"oHV>pXFD_1ZBbP l IBZT42ф+e&2VLlʀȈl"aNU}5V6TPm #I< rs,P( u ӅdRfl=f"\gT:Z6]071i CaE5ti, VZM6Uh&a2JP<0A++о>T-@aH8IlF2QU,FE&.Ŏ|Dm!pP3DD +XAL%Zv$Z2 U4|B˂T6N_2f$0ؠdHrs<.sgc*!tK"\8D!@QG- +&00x\`.'HX>N*DG2a@Z=DcԈHvzt 0.l;T\ ʠH\ED*G@iMb(huUܒU"FJ$L +IxwU6e6u@!UBy80h7"AL1E>Τz +̈́%R@`rbavi 2bJE\~IIc X2oWR9aL!H&] F i+Ars<8jAY| *nGvP +2f㈤2LTpl;h8#BnG!"N14!Nbuq\CTRb@#y($ʊH-xw)oK2d NrLxoŸa" ՑeE3.J [+'PD@`D^XYƀBBYc+-oGe8aM뢅Lh$.H x. d28. g+ + `Y +1lz%>vs<2f([* Wz[PcC2pD$[ƛEcm٦9 1PE4-D#X$E%ZJs*mw,BH4X$K4 e{C%ぉ.:'I¡ \>*]HLH|29b|/_ɲ̔06\/XlRGZBgF  23[E<< NVb._ă#Z3&@o7L-$ +4 OU,$/ܴ%KbJGˠ0K4-۴ hv85PEJ;/SH'$1 3 a;Jj2H\ʁ@$  X0'hӰPdD^X@fbuFT%U:Z>`u^:1 9TFًf1pTͥM"YBXJ`:x&POeӠ2/OX2aH84mLnF4a0 }#as< (H|XuR(9MRjPT˘" +Pgy85p؎,zK3`*&`Ycq<f30@m +.`h3.3y4@m&U&@4aF'Ț 9 %3P!U+hRP*,%ݗ0S1*O>ILd b$>0O _{x`ʈZFbqJZcs<&] (p *Ô\2BBINۺ k6!Ab6.dЁ}җ*XU+E<CxL)1UXEJ%Aʡ$yRO""HAA ذ;9@\ + .6CB/ n MXhR +e Y_U>1aAB*=M) ȰPFքBиP kl\|T$4>VHE|#G F +D$BEbp,A0N)&t|DC̄qL*rIf ͡(Q\4y}6Hd+dQ  HrsERDH0$ʤbI:dkZ0L@4q@$)0d135d68>س0Es[β)3p mɚ[V! /O;˄HE*^r_URH|§Nkg8x~*E^_|@ -023 + ;" q(X?LUvw|Ӻh8?q<̾qܾ `p9|f*Y3VCWd'he{ ͫUzUZkh]YC:17UQmW7|<<Û:"1' +t׷% cFq(C8B[ +UfS{@͊:rQԗ摩#&<%ћ{`Sx[I$g F/i#F'H!fk6)#^8=s A`i<@5g0,eP--9NL{(MFl䂃E5Y0Pj RbV42Wc]1 K E1i=5,46UJS\4!/rFsUpom$O;gd M󾽠x|Dp~FܼX%]=;pNxG ߝȂ֠Ȼ#9d8{9;Ř5y?mK8TdNZ8'S5$zxWx-\u.tF+4SPZVc$yvŬ3k1x`c+HUAv k`39xU`bzֱ4%8|թՙr z4̢+넲n: ۝}!mWW+樏>edHdOWd WÌh +S6Ek@>,Uׂv*ZP(6"Bb\k'_cɂ +a:`,K8pĊ9HvI?5: &q&Eܓ!ַhh >rHb37SY8kIL[- &l@^$͎h^ 32Qh)'c^G5 +Kn@i8JD*/~*JxMJXV|I| %_ThsX=Ϛ\njYM J% $7RlS'ԡbE~GZtR sCvVky3nd [yN8%|YOҨ%joP[pQAAS-C~kjvA#-(,Aʽj$Cr*jZepX5=ϘI"KʥyHBaM H@hluG $2:joA{T}r*7=y )}:p`8+;H@0{u/\vN FkcȤ"f&#⍷?`i%&-zqz=k1.q؛L|-CX:jaTǣQBAMĿyυ Z +TXh5gEswW,)=gJc~::_rN,v_Xb&>tHG$2ވp57@}QRkf-) d9p]h| +E +;t>*eq"a$]p-c5ŏ +a]{37t$Z*JT)ุ8ؼPB 4TøfԳ yRoɠ:16o#yI//ĨjP!xK@I?L%8n*w&_@y.k <* loA") +;mk N&\-p^SzsjhQgn{k%DI؂aRy-$2s4#N<'5}>#exRbM{\pNBHt1r Fv^x;yIѼć2|hhD wU"; Hl13lV~ݦn&Z/teeLiqpWTz¸Px":PZh"yrg/ xߵ9ٔDm:J" )ږeیFw~ԞUȡPt[߷e m@_W#$n܉\;'dz\/pBujaf볕u66iRH.gg)$d~5Cëɦ'g&&.<S6;/u 3@9ʠ@_:FzjBc  f +恋Q Mh4h[`aMQ4\? +)]̰'\JÈ?M?`ܤ!$AҸgMK'oο1H 9LjN)Ìk}Pl+}yq?fJ69ZWTA|U$ZӇa,#O6>KiQ-ܢPi7 zH+9`k75cu '&4\Ց ' s(9O^Vo"9zE9n\hP%bR(j6y+c _)^V| [fq0 ehH䱢9(S<у}JtA[n +`~fdL#9b3=5ϡnN9x?xkM7z!`&0Tz@kƵyUl]rQBGթ(E$bQo!։hl5zAgF/H$Tz3t$KZBflS.yXbr>m@:pY*F%0sKFAIQӧI:S=-w1YaEah1qd)e4(ǽ‚b)?]*KSB<bLGҒ0F 1 Xvf08b4z˱sydI>v[]׿[!o枱DӍoX.>]ꚬqb"xu-zGëѾcxqMq^gjN5vBc WB|q /WJ 7O62 OwubTG@*.lU^~VI] -G(c +i7LhܣZp@($h7gpuk4ܖuw{_Zbu~G,Qɱ|(z)4$+ȑY|(sȀN&R .Xw'_ׇ Bnl+ C 8M#IHB˵yZiWI]= zsfN ʴؿPh8+]'KEVӵ +nr& C9ƅ%<7TP:\ @:67SL$ՍmTp()2&#Qi[Ƭ3$bfUfTwgPaeJ6`S@$) Ճ G`{[?SL|7=ХcPo+,T,~GdE < Q%LiyoJZi% 5>&leCٝ~jL'P#-g,UPpi.ҋ*iؚ(qt\ȯ`޿yAk11>ێlO0O࿊!it /߹-9 +?)-WD)y{)eHe + GtQQE1}xjH2ktO=ͪ|ȀŒ<! P.M̪Q"G!`HgS3yAİS@oZQN>`OD)),K )ۀ_b@ K;s=sMg9ch`O +7Z,=8m |qH.-#V\DW< ⊌؂:.=aRM$t\X!_mk>)!a֡aUԒ%- +HD7u3>o b;Ls_0| +𔆃 Lj$P1K]eD).A(ј 7zփ 3wvS-O %5ſ  zN0 ^Ԃ2~њ&<.il$ +'sogjt$؎_0z,k B4J%F?rGUu @| ~0765 ۞C+xot䞷93@d1RgQ9ˠ8 Fàe01u pKM(mԊ­/ Nlomi"øvP6p HDWp~"5ׄj瞁]PxeK{;/v; o :2VkE)f +*R4|ʸOm{cH9ELZת *+̼w'HR@hC`،ThݲDNU kPdu15:xăpD& C*RtESmZYNÊQwEq3ѬSUu\11 +nh_)ȕ-HjՌJ/'*sVŨn6-IlƠLB<,iXE$ \HԵItyrzF eI@}0BLӤ@\|; ^"ldD9o l6S*E40Vx蘠iej +{-RjD"4cg nЗ8:u+bY zBK!4kF:8xb#2Co̷ወr?:.i!r'.1mrR +YS|S$ +zuМ@ړ'2k.ÞƘCKA x@:OOq U>]XOT D G^n .֊c}qAs;bA9@Q:A1Pt[ov6<ŕ G^!SD-Bo?B"bЈÇJ9;H뗟,$u?a+G~]4)w(UTR%chiW{JYJ96wIMXz;5w1zoQM:&")6KLJ]j|/28SrP"Qf?[`6Á3h_#*m!T@ƇՂzW[Vmgt~|p#W1.uZ;oJcc\i/6O^/͵>M)!=P5HyZlU~xAvu d~隸+Y$E"{`bb̰/"ݠDӓ0l{ng_Ia(Xno| UF8,v-I.;XNg(z/gT5=+|ܯBU<+Ɗ,v9>,br^Q.6[wGHn%."δC,1ѽpjy+B7_#}[I ^9]1&Pgf>#d +Jh38EknJ]UNK!Vװ"tYYos5fdTη yZ.IJ4'bjի  +Vl @iw:"3ʈ3&U9#j3J|K-D)-wTÍ`0 1+A^K1z/}R@a+"b٦ѵݵ VP]{@-' n %n8ʞS{sC>-/B4uLF{h=G ^JUԼJ6Mߩ2SVT3 {xe =ABxOq,MUb߸KO(-@K2 ՚jh~EݡuN(*]{Lj jA߂tGZs2J+nnmy^dd';&rL~/˖j # / &ކ+ ܴ\O~^B%SvD2E(Qeޤ#r^iR[8ylQI(teQR@c"imCGar>7>Q%J$9_} gvٰ|̾:B)$1ag^cn%j}ݲ(gܼZ\L,8GR`| B꫽>fQ{,^<"/MyP A`_gw%wXi$r@P xWc@'dF'8 Y@ +9E{XMB `c{RߝV GTL1GOC+_؈MbM.LmBߣP"/_ ߋWn>B D j2ahP4yg~PYKFtrUMS)*%+|QeacdlQa`Rs+{紥XJR:04_3h1tjirrk"aFW'=8PL). OHqD!6 9vluTo)6̸T)[/Zچi:jo l _J,<ƚ/-pD,ʑ4L 7z w&j5Ymꪳ"7Xpя7`V5_tb'Pӓ[@-7 qy1 ÛdHM}G:V@c7(%_98R.E'Wȥp.ᄡ'CCUNy y ڂo*}Vr|MDg#ѬyvG6LЕknE!y 7~_"qzQzAYVCaVbiSNsY/k&2FFL.{.O*%]`tգ)׀jއiкq +8`umBtpy\ Ymj&!/~ +j.ق||Nm5(UPp&noLdH9ͲzSΖ2)3=dJcw~F|:v4$fU]"EDiD'wE\-ٲk0פs!n7DtRru£tosJюus #vGЍҚI$eQ:8 +m+9QYc R +G wjB L5[E6Ҷx7f:3ajXPSo%,wU}V-_8l:f?c>`k,,iS^^+o'7'᠚0\!3FONd8]^Z&P̹m% (eG(-[_co8Cyf@P I3GM{u^2U)0f ʭt9iWՅ[:ea7BFq7=7@6"py*s'*}xT M:* #dw/0* lq.LؒNFc `'TX cp$dq}0_?^"ai$*asH[wtW,Wpc@[ذQ}J5/ oB4̤&g8ی S[,Ry`f \as\}Y o.wj8jA.sUL{JCxNY_Uց|ȵdIwmA0ͱC30T! zJ ,3sq~b 8p#QЁ VyK )M(ΐwnXy +.])F?\7DךDE?~g⇌C*@s4Srt,ʗ[3 +g+ 'V.z>.a.!pFcbwL)yYL:]yrff ߬!ec_W[ Į$\d3!A$ԇ=~?**U5+ ?ciMNS&"GT^K$帚% LtĞk 8 M_ETD$:~Vn <M|7FEOX;p X@FP@kȚ6߾m9IVƼ\=ILH ׌1ܔ<{167xfCU.B)>l#4K^g3WMNqHM6wXf۹%T uXЀp@9$ }N0";_2`gdlje}8^@<C'^ºS qF\7>W! #l&x%Πj^)vl4]'?%>J+GLFZȿuZٮg YYis. 7v5+{5 +52GoZY42*:=x޴Vvl Tc.e Y&pI'hIșENz~!:ӝPq*hUw쨯oyVP 0hÂQ^朐;{' + ?>2 |9ˇv 7(Xuut˘cŪ2w!\B ;w5VPH_"P"K"@n;+V[1qecCfβ}O~Qli_b{X1`*rW2BP\J,X vpeJy^4N~qqtu^^|q8*"B6Ϣq&ۏru,H~![07\1`({$7t"in._Θ/.93m]!0F'xB 1O Ƹ$ +TٗRU Rr߀aˬ$WIcqD3 4rtcU#_\ HdF֖n\e=\'Z90M<*4E^q,)0NC U5ҏ#jJ_Ju FDf\L 1j|5 +b]p! kSJL$Ͳ }8bC@XNJ4޿!cqV6:<.g;hqj DBԪ]+ґsYq#Kmo#2.m:"s, Nń587 pJcABqVAcj$'_>~FF{zq7Ǚd %jM>DNş8u8F7{@^9 B4ow=OTƱ047ys?^VF߬a &vgp,:G0ײEo"{ nkje87s>0w>\p1mjov<%A;`4"hOI[ Z^(5M ?W#q]k~ց#l\傮iXI}D32}` \m  Q\ׄp#Ed>1 i@7In z3ۦב +`j>2CH>Ӂ{c0 ؀)|^fE;i>h+ZC Q;G42H%a xxFXL*;TII :;,Vȵ268B.12գ=rģ$2 +@~W5:U{M6#.yM :Dt{fl^|J;Xs6@཯0MK,l^/+nWGg3 %9ŒYPKMu1tD^OhTe ghm=3FEM)III[ +; x2#yoUa8P6": f`@[yMo" <jploeNQ@3ɓ 䘄=>|gtTh(|e0qc@&~46{} +D8nր"ȡʚ>[xKosD-.r?T ^W# +n y2'0 It0 cΝDv&M]pC75"bjqpBHƱߑ<@R y@kѮHp;ë4>iy3"v d9-vKd~OX(IqZ.$8lM?юvYz8܈nGGLFK.W獽a[W&YpێCAO +ҡDIvn3C&\Li#;#7B##e!ը %P|Gd_Q}Q* +sN +9&:~K#A!v"]tîKH s Iw#9\Bsm :Fx g *vp6 S$DGWLNd5OZ\}ng.(sO'3:<<<WxY)!""Fc%MW/)RE`b<ضpG }Sg87Bx\7D5)vMM=F @תi-M!Fk:E%`U8@/ii^t۩' +Hxc'b(!z*\V2ٴ=cdD!X(o2 ~ Bv5AwN·̯etރ`܅W"¡CM{=rDBq)bXx̑ 4V9a,qFU!'no_FH"$=n+ +kFXR)V̆RI+z.˵I7J7>/*<)B6Ǣ Q%*$ r: ˱0}B~5Xav+.'^W-$8n_lk xvo~Qy*MFeҸ4x.9i7`E3܋BGsU_8|ԡJ72ji mn:.Qpdؑ =c1e<LMjB岅 'vldRTJTM`=tm<˴ ljZASZ*U;Qg(#̓Ww؞ʨ|pvSIe7FqmdfU-+`؅x\- +7JXyYu?-QebNB"a~҄L1te-&%Aʀj.RRBb.D 4~8p "bwe9@n&𷤌d*ni~c sQ; Ny"fukﰲuX1H~_\f|@ŚwGqj<(ء}KxOG%[>W$,ɩ]BkGK݉ +:y{4]!8,AP`>)P!5/-HT>AVR%fIPo$'a_3 dٶ1#a?2[5j,J}H%d4?9f{Sڮlb%qʸVgxuDq\w(! +qChPo}X>裎&o|DxyTd ܱ]N*qG{&9jlsJ787EP UjmP׼Ӗ .E_*BkH܎w$J!rl I"R@lS':ŭ$*׮sAӏ CxYCKqI p:K)9;bcJTbBc',WQZ?*KXA{yyzV`ÁcCvSrCWP$qÜ1wptзP*&C:Ο֎7AɍWq9hkAqΝ9 9My#Ty o.-UK_$&M'Vc+IMNV#duݥ +(G^@J=JW\PexB5+ӷ6LBaDS/ ݃8β:"L1 ̳GrOC\&sBRa=F$9>! 8w(Tvk/z(8˯\$'lP `,Tk/KHM9 U4t +X~.!bX'`o󟆒^H Y<&oJ;W~/A.std([wWPI>@nO圗,Y`Ftޏs' x|9cL9 n(|1[#>I{URKPBemf2`o$7fOǶ\4 +Mu"3Biil Zm!Z+. hQXA1itj8&{6b̈́Un%Zd0& *JD.DW%I]FN!~u/!*:!"5d y}< VB\@P[HM]*l(=5nlE myfICQcqXQah!Ѥ(͌Ls;tY=D=6lc |`ԕ%3t @E@|a\#8GbK;&GV-=ɍgXh +B[jo j kWC'3_״ٰ9]{@\Vݪ, +ZPI8$~b92qj]$j!_Ֆ#|9| `Q;I-{-&),ТVdP *6) +h^{ST)*؍L` +Ո):bRSIgݸ\@yN]OoFq'pȻ,LޢRWǧ=v_lĞf|@OĬJjfY!lVBꬶ|2ͻ9i\_BO; n8\ ~gN0+Ӭ>8F~C%W23EQ6!4.t u ]"ei2z3]jՄ ਃ?xj0-7 TNG]/cWA~5.Vm +6 +մ#R 0;@>ij~3,꒒E#Aₒ&t+U|j!Fr c+_^-%l. P7*(#`S5NܖZ&7. lmt@sy+k[\&yW[fij4,3g&P/tDV~gsy@㠧@⠧lhh82/5"i^4SQ>԰ٌh{eF$&f9 SEzZ;";~H#(Y *?Ci0L=L<+י7]w"@vPwӀ>v\WP*U +*~o?XWyP{T@C Z`$1Cu *]p(;]c8W+w@w 1q:•Y9-28Ѣd,k*W69*i1 bxHwEAPX? fѼ3]n_+L](/Dg%;+JT)^;qVJo=*qRpFݦ++(+RFe^jy)FacX[3_lPp2.UΆ( +(몸*/z4h9+30g 7.1e¯E#pY,n) +2DZCh!9X,!H8U~rVSam "e(=iPP=UPJ E= +4<_'Z2à =Fv+ܾ$Pά7t. vҜ7Z]xd\W#$掁$(,/CmYJ-N23/esdu,l- 1?3m=H-!ZzzG wy 7vP 5(cRA_{7 &R 'k޴ Վ*u. P?ޘ5iRRzp^Ze[llɬ`VWRI#lBJzaS2ooP:M&R>By~6`##ChV×v1P"/$oBjc5J\KY*Q;P.c\_Ph( N\ ԇ FPvi8,)&Q@yp(.u~R7JVgw. h> wi2UGYE˔ iaY/clX3ˮJK: ,v W൚0C rK[?4. PRbzd2Cj=oo0yGql?b0emN ^KoO,@1mh3oPNHK:Iݏ'WLH` ?)/jri`a3k}"Y + 0d^։]6R13}*B3VF"?qlP<=M+izhF8Φ:N FD}h ƫۋڵ6-&* pVd_0 /4ah PKPA*Bcc@ya9}1T28~]x,ǒMЖze^"*P*z0mdb6 RF]S`g-mr62'jjPBV*@z|oGn7ߢV4*B$6Q1P1qADZY^T4C&j8)fƥ9|^,W^cvKzGdzLTL}Tg%Oj5*dB {^fZ*mNs) +¨<=Kf@#؂>Υ]ew⤸aqL+b?3l^*FI+^t=칳yX)ÊM"Ԣt lЗ/s*NYRƕk$haيFyHa3}bpZ{@q2I˄CvHgcc|c7Ϗ)l=CD9W$&JE).4Q#j"Sssx9h07 %9xGlq6WZ&l8En|;'DBi.('L*n]2(6T#[7úC8bY{ľ}-38o}(|bQG +IR4C(w[WCn`i0Q1D!Puxt XV(_WyW/f,αL9^䤅 N}!Ao!j<&qH7P.쪟P y7l $ 1]. yb TYL%p~dwԬr;;kG]#. pb&7W1"͸ռaUb^hbZIg'Dyuק=2RHS 84K(hOw4 p5M:*% % +ծl#bh"¹ b'y_摙 +a(ip{*qyQ=A찼9c?3`6l.ebP^8+I. ?RFy!>€nS Lc%P QA8pA4#7yq[K)<p;xs%~c]#ռ;uaS~Fxm*4-ӘmVG s-/w)5mfm8!}]W{8%!+R"TR/)y39Ό2̫⥩杊+Tf`F O_lFUጽV +Y c>G<`Чˆ{.E#fČ3*rN_ e6Wc&P XȀ!OP)4հGFЂ0o8HZ@YI8zx>la>,b'/nʨJNWJucs5Hȩ 3}Lyg\KRV{a5.?kʀ$䕸 JâkC$)[BT%xR3V /m{[IQf!9});FH\)vyE#logB84հ.SȼAO>N KD<(xr5AbꌘG' BmN(.0N#0yWֻݪ{4>bp}:sqdgd#ja}3.ꗰ=3aLOhoɐDo9Cjƪ&+vBw>Zjx~݉rS'9voGO2 qv'/ p98 ݉-ekF@nWf!\LQ.t8|x~rAp3ŹHhOzQ{^T4EwD]w %}C2eB)Vg!/kV"Lzd=, +(o!{6M홒pH͙ȯڌg ט)0^%]y˓v.C#+z;#\jdRXIbW繀@}/&gh̗䞩R;ưqT>CgLix>ưdsUNe3=A'Ud8J)3%R =G)W៌/s\@๐X%AZ@]+6}NV+r,&UīL7 ҒBs[!eo2sxI](kHw/Yqɽ,1>C%Ȫ$C*C򎀚3ڳƃ%tW`W  8y'UVb_}cUeQn^ +Ej"%/ *\t?>@&CPDpzpN̥ .~DhVckޓZgdJ#ZuVh\F2 +XqL6n zxdRA Jkh;:zSBj\ .5i7I /.֑nMf58yOSuDUjcRg J%u,l.*Eqzj}99lFUZ + x_$hXL+j꯸W]=>/ ɛ0l%\-t6͛ڜ)d ~)B뻘A3פ!@_htaŸU#LPvze@@3XTբ9mJJLr@aH+EbDŽv̤8QAZ38Xj6LˀԿn6'yQ 48zly8>O߈!F|f!Hɒ0j.Mv0d|BAj_k "i㔩2`e ]28-hYq@z|0DSțM@׋>5 hI1~cbـ[1[ilBubȠz3c34|@rs@1Q.1Q`كX -&*=V-D9|" U%;J;RyB;3)CLق5 +xaU*ѣ +#T?Bs/\@B#`)\@(UUgi8{[{"K4@1Lޜ$~ HV<&J,P^S^%ɾcP2[@1Su*F)yKC Ci6B-ĉU ĻnռEc/u-NupgdGv. ,*ݗxwݪGPY&}7k x ~yVP<oA";jHog(\@&"Q ׸ڱA5#sY}-u +bv7݃U . ߆fT%=l; 8jBlr*sAi:\v1X)aKw>Io!(L6" (dm3 U ]K:q|z䩜[oYљ)m>]d;b=eG RkTQTAnF@hr#SIkv4 LUL?g* Ow)l; dX hs"v)ybjgI#<+W 7ڗͭW!+`r|%a ̠WOu \@7 b1YGH{֑՚yCs9#׬VLK0 ګeHޓF1ѳRLև"Z׋4=3)~rUS_O gTY7$)G?}#51z'H5o [:AE,AX%ꪻF[&o!Qz٠LӤdf"<[@RޘF ,;{GAV:Ұ4HP)`_yxR)L ,Hx%L>^b8.X{HA"g8FMW/ݹja!?5<%([83)Pګ#݉CQoiaA鯢oGYԄI$zA<,e)* `iFa{5P+{n 1{UiI7@3+(DU@׫%l ^3X%Nkave;JmOE4< Gy8ݍ'9s+\@NhFUzI3>Kx y=ʾ; P8~ItaY5oQ!ˤ f1s"z1jwFݶR"م@v URPm_IN,jx3YгWxʏêk[Loљ ;S==:k4TE{p AvMo069{,O3]vJz:Ϩ43$BȈȬ  EDZe J,"TBN&& $BaXPRE(IQf)%q;@RqE.Z{(2qt&#Jr&`%<@K *Ys19G% Bp w]4@/DHkSC'UoL(7f`0*9'NCD pg)5bCt><Gx=V@h{7ڐ,_v"k[fݨaCr7+ϾV'XGH +ec +AuE&ĕRJhXw%Dpw^ hjtzc[ҡb?-7I6? +;Wivh旒Fz`Ýh hqbkyME@+MHyﷺ HR9/@wU- +GY. +D=N40lh"|ܨ _6?'Z9})F-ro斿l#x@ DVB$8:6?%:7TT[<lP(6?ƄURRnrh X~ҁ3mg)ɩ9lT Fez_,F禬,s?k.Z1VBgD~2ؾj 1˳<M~!*;*~ޛ?5$UTDm ݍ(R-bFE|\x3dv)>OH[P~af +ͻk$9YJۻ̀f, Ja*QZʏ+wq\DM4b#诇= qf9<, AF>l$?[эMel$0"(oĒ;+㮨-  )U[)i?&b8|m-q5O 42H[>s:0hz*]]_|0+!i)Ա:;| #]+$ה~Ic&ῷ(S]=_L\TeuVIg8d(e5rN΀VbqmuՅ¦[>VtWH7U6m#T&:F0GGi(y&G0_`g@ +j6lV1bF>?!$ JԱ >;|bM5w~k8 a%5 i0lf4Igh"0F(GP!t LLZ`]3|`MOw.P ևdCa=o5Zئ^XVYQs Ԉ.s7IxKƽ_ 6N&=:%z -&3`-⴦>2:(U=F?AA5ƤFul.)؜8[Wc<ޓinIk1̣kC&,{Pk@P jFk 47U)V"1pVGa܌^=,Ǥ{'N`etO{ ӛ>-JȪG9? @sn. [Rir QiXpqixH4Z HXQH|qac t 4h;AAg92dl_|@H &`#A=hS(WQz) a)y4墿B.x;q2GŠC.áA>eK"T8l.zpxaR~#Q6ye@ЦggE-J`|>QN`4F*x ,u؍u sy +d㇌CȐN7IW ҵZ#u *x5ZX !9C|iDJu!~)Әop'ictߣ, 6YYD BUAGF2 h*DGo $&cG360$!ݨ:$ >gN.JAm,HI=Iuf%B " \ǣ@%+HbuVrT3RO4^ +BSr6E!ʚZG:m?& BsBA<@؅xgU$𐿟4l8?c%W蠩Ʊ +bA Dp4 :@$!W83@d" 5l-RFCl2nF/&0YU1I;ҍ qa#S&[$wX&rvd29J&a`l,֍ {ASr@`ۥ<ǩXSNtA yQΈKL ,e`5.ÚC$MA5gpv`[0vh:kٽkNaMV} D>9"9<$zn+ v*}Lwnp,V@@q?(Y7#M*{P < +4ݏ t +a; +wT[BTm]fwVbfZ[u~ ޝyZt12DBFe7F83߱ēV?,cg ߁"bRlHD +gTe+OкP73}fC2٩vFu7kؼ: ,`?h@/7%Ryҁb,QVfZe_LLBFYb)>}ClE؊6Nِ=@/XTPBHG2j?DYICeg ?L pm1v&+MGeAsY48VD& &hʣb&isoX@aے8ՇR|"U²G\" +h QY$0$r)}[DV2$ Fm1=I{!T_7$zߍI62=@V[l8Ecw֒F9:Ӱ穼0k"?ƑL>\fhdJlcZпJRAFkE` $!+ +{I*f;|Тא">+d30rbX !3Rܐt0Hlx, 2+%vv%AO|R)n:# 8i6HտzB! ̚ d bQ#$i:>i]wO&:`-1@=jOPC; hjMBNi (bq > +UTJx;v Z+ $X*v5)bx$D%VO.pOӰHhh¥ [sJ44$FDcD SYc!=u65Ԡ#$@{i脔*!=z!;6BŘ3F+md962'aW 9Ϡ=Z˰c紴~_0 +8/4,cŢv*^,αcy鰝X[qԋI3 !hc35jeH:-ʨkسҺ4Ws԰:, v-\ ÆYl؆kعF=4, Km8I*Tϻ#!wXO\) O}2!W:*Q`WÎstXdR֭r~4 +Eɕycqƶy(đ-猍}Wg{ 3S[̘M/ !\fD @ 48G ԑJW39РpF7mxu  GљB˿y%QÛDm;?hL_IN"㼂((lC?d!R$E~VD'訯 lsl0%&CRNe\_}}ddZABFC +24}><D9zD ;Q  9O&THvN4Sl-'ĉ.dGüYƜA[#ڻ"i_ ?nv!bb. ?LA6r80Pha/Fpx30ې +9ClUELѬ [y gFi=td' ";!U'@dlBD:E?-/jcKC]$j:O̻"']iE 05ZG\Z؟AUmP;^7 !!>{c:D6_AF;31!(^˺I)ȡ/Z  cSnrnY[˾;UK/)8a[EkcҳڷҲj]1!4@m0LcJ4rk#-Pm +M(Bv'Hm,Hc+RcqI4cƝX-rk3eg93hzٌxe$NȑnƢe$ d5cWXNr Gm)>GlZ:>#) K@}4%4đтJ 'K"+" +Gv IBk؅DŽ$~GԂRyG [J(>U v.4uZ''.b̢*4P롲oj40fml-&Bmfp2"A5Yczkcr3D>ȅGMړoubz=)V~b[ 0v!%b=yrQnZ'pX8K<33ǸhM-4~D:Y,20c"&X(d=`yg12 }]( rk hpOP1d 0Z&p~a( R /e@7:M:p GHc=65Dw'),OZ@p~n%BtU<^:vؽOGz(5)^t->z%oh'ީ= +!EzVQ)dU}jρEgHPq5 ( ^*ŀX|)oÁ-uPg,Tf/\$Jpzɻ|Pk6Zh ,bb+k+z3ɑh¹=gMYr48B҆T +Gjx`J]x7~C$O,)Fj 8'էKFR6P k@2u6yde2_?V_x@\ѿ 🔕 +t!u eJN@];4A=ob|xTWb6AC#nF̏-=AhتZH+~A#STa58Y9u#O*2Zʠ_<ΛG:~Wd5 r̟i-q[ %=bwI)ጚSY'ƠBSY"Ttukl7I`X:ߠ^Lnoo$vhr95rf" $mjAl@O#F"ĭ`PdQW<T0GkVhI&6H|YasykLq-s+fٵ]<\2ޞf4OY%٠RE#hW @`\^d!0S­A7hS8f%Q2#,-8}K[8RoC/-.qxaYQ͂I=*?mL0:yipЭL4QiP &rr+ךw{cJx0bG(CLd;]4eݸA^ն'$T# yېGYA5 qPO"U"dSڡk׭{ȏ"D5{Yd|Ɨc\:цU5SI%f3E"'FtyCM WT*G-Pw\ڮ%4;!(#ջZ‰d9aH]7Ym2#3#ȓ_mdv{ʘ$nK~LkB~4ߔ'r~VVR"ix/ـ:$Ry ! FgNBgO|_l E #v̎?*Ѯݒ#Cs`OK\lYl^F2f&xc$&0vG*՝Xbm.jH`pZTVsI Y$F-{9 Kx0 +1B +8gNQWFl*B 5=g!G6_XA &#@ $ *M8rdMg s 1Z[z(< tU q<ԦlÅG5:24YftYfX6=/b)Q ǥh+aΦ:I%̝W>RM )04&4e4c\m+ Jwր[ P^˜H>=4PT.dN +oX:ac("TASǐíO.ơ 8 .@{҅4hu(F@h !KKXB?޳\ ><8?5TzaӁK@ȵ':xZs_@Џ 1,2v2\}DOdQBsxqa`T쉌"D6d]pfRk@Z8 +@M:VN-eMr1 {+wn[M/ͳfQ>m\U&O,hek49 S8G%4^-w{>zLNT!6̀j /B:7!qiy  CN~.*`q.¹c;90asEp&K* )7!CDgWlK6(m2TtNc퍧Fkh34v/!1LC5Iq7k Ep$t3mڨ9ӱ7 \r{坅`@zhͱmF vf = wtՆ5 r+] 3JW; P"N)Q>5qd>+k:57/Q68PZ:a2nC;Ȥj+mnocȾBַ*2I^}>fD)SeE*kwYPR]TYMzoe~'@#>&N0좁kW&t5`}1q%"y[)]$+b<[JO~k!i@% W+vZd1@_E^X5GH`wraޠɉ-\5J^]5}kt8umZ> +Ȃr&熣1~؆iʕ䝸U/'g3.O"&mc!1BOֵ"IiXo 8,p"t5e%H/%ouy뼓8.kqbwŸY<8E!AͲ& f>kFFL-^uAJYK:8xT?aqZL[I.򐒄Lq +\޵.w=%M'~vop|YjQ!a_C YQ 5EŸ9w_c:аs4j.})>ݥ$BRŽNMfrRєSi 5nun"?"34 \ $=zOYHDY7 Pl=H2@r˄D-X1X +IJO.Hy W6AϮ~Y -v7e>c* Z .D81Sd,&Yuh5:rm L4s؈J Scd-;Q+FKm +j<>ZJ[mSm@A( LDj;d}ݹ3d8jbAb5crǁޛ5Lʫ]YwҀ:J[W`&Ԓ.=cܦ( .{F0 )<t / =PA2k2FdTQPX&0B \. N50o5"o>]RG[vP6'8P1ʙ!w2?T̪Y>'|. + y{Iu|0 %.A>>le5͵е&w+@`A~xw}P/t4Ұ9*HFhlO"hVs>.3nF%ao5֬$i|L'S(dcz KDQ-oo[NZQGdXqD& \'U!pc +Ɖ X0)n e)gwJYז4BTLKW7kl w`^i%[Qk2&HeA$@,A:J+GVܮlj fgYaձv5iW;FIV2kYY(B7~F36?q3ML[CȪ*A 7',y$s7=7q +.N6#`%FjӐav&KEB[\d@tқ%`& +FJ?N<{$2@F$o=vN5]agNMZ݌WF1rDfVouG0h|Hq\qe5Rf[B:猷QxwPq + +NIG޻dwTʆ\u_iNWl -ļ$tmz!3UuTƔ1 <˛ ձ)ԋ ",ѐNN4Αt,c}ZpqU(HZzP(n >gc¼Yq qO e/ OoYCFIMetRQV_۩BYУ2.sc%W j8%K_RV7 ٧*E7˒<'%I&5rZi5-;,'}=K+nȆ35?y)p 7TY Y3͌;ȏ N~FhMe0Tu`+s_W(Ymfȓ3*pDEi uƛ?rt-DB5! +[ĿZɕ3ڣNi&ckU2%Q&lmdI3bwl ϥ R&,?Ȝ]wie0PH@bW՜۵qjƌ.479ޮX$В*]]G +M\!UɈ]SRߘOZg ޡ +j­~)P`6IL¸Ťr.핀30Ø\[js?aQ`Ĥj[I)ήwN +V.AĤC2u3p];/blФN8St}{h K4 OM[BvO8oT=gTpÆOIR佾\Fыv^C y/29AuhJd5WDmH&zj, IRHI#WWx-YŹcJªOPN\Sw+S&B)` |[`1(v Wh Vf<ܙGz`r*lq4YwUdY؂9;2'HAkiFSJ7LDE$Io LPhtҋ]%!6,&Ħ(| + ć*VhR\8qHB83[zp5Ayb3Fkp=δ) 9!$/H@\SŬ0U4y6Ɓk]!Cw]7ZN`YV+'n*S}3j#=QM+7 &e Y+&r^5#?: Y gPQ :(ͦn\r$I6 `w0gnr+6E-/R.tLH1Kެc 2rT](YU- q.Tt!4e0ϛݖrZAY% &枑8*|Fm/Jmd .Tb{ij5rH?j?8:TJ ;(xV%T-~2_Lu1S5k%T[}sL8s̾:qCPӍ-ֱqA~Ȱ(M bH00Oy\cag8pbQ|QT0᧟}1N w GA߈8j[ N)4 g8EK {U 'QW\ qh@ɂ|+ɋ!'u?Gx:]M|ƙ`ppe;*]olm`]CGCkJ܊~0ݗ) -Z`2@G{/},2ޮ`AANj-{{Mz1uMnBT0gPCNLBL[xoK7 S1PS&C &#\TRa,~rI2nd&˘1Y cVvWtdjLY!។64*9yI$+`,UB ICG`>$ M^dv.J)J olS8u.Հ&z ?(e vʧ )E^{2?Ƞ}YZ6ܿ^w* E $Xs8j"NY*3ۢܭ + JnClsD+N􂃒iȲE>`%cS ž?D(h,EM}x'܄ m~@?*7쒇܊D꘷(s8iNVD<>C5"$Wd>_f"8W^+[4Xp *$^7h$ӪDm18Tʱ쉰<;e,&ܶFK4;3X& |?gf=tPڀ̸r +*ُXfRLi2s3(8p-o{H55VdXHхR5Ӵ-&l+\>EXNG0Nӳ(5z2>+'}ÊhqDqped!E\ u\vYvZZcA]mۀ&Y&HOq Sxz fq |qIgƄOֿ]Dž4P7aŻ bQ|9o"KWa}N 5@-Z,Zo^.^b・ "^B{Y9 T270XF[9BVHVa DjLm \&2'jI:[Otb9KBi>u~rlV` BEP?4IU퐾bE|چ8)Bzo}w3LbȬ]-*fJmE͸t@}_BNj2zä&U0}NFaKbdOMZfZdS"֥/}%&T4)DHc_HZOo5'HoƊ3v{5+iMm6 Ss.qcЮCP[GVT*MlN~2KO&#X\I&>uv2y&nz )&;bdh YJQ9j_2Pќ>$>N%,e< `5s%CN>{|*S~5OHb":l(x"?\]7%Wک?~I)#=BȈ*þXA}R\$9K1udw枃mՀkɍzgx]:تhS6:E;0H4-XfYt.1P R_VEr}6 GMR_wq}Pj@8/z?L䜕/__nEx*-jnCf VW ָWWldʹ})gрhS38F ǎZQlFl,|baH"`) \2JP$PzܒÎ/ pn"Kp]X˾S Y$6񃃅f/8;FR < ZrxҳiXgEGMd"[Jdzɩm~%q̔][4xHfyн(tF(}QPE~lM쓅 ]_N݊8^k-cV;/A$bk % "C](;"Jc[±S$X"j%!+4+nc3IsʏbdaN"yڎC q*K?$Ed!=7R j60_,z6눦Z4THm0:}f[G}[N,;'gQ2 F? +;0q?,MOIg\ 3TX5pJNXzpt +ٵL=YԒ-5Ղ%O/+LVU'*!\0oxMT!r~L 7QX-wJy~kÈ$ֹoGTA"sꆸjtw +a}D qk}yr)'L= vwD*GǛ}v|c^ѹ>E/p]c} pܻ!Zp]slT2P GQˬf} q?U1wlX:kUF=cV0[Sn\[>ȅ75~ڜ˻fe6 0F=#% 12d6ƀȑz Ϧ^,!d7#%n+4HI +gvU]vY ]**G.X%*0Qux,Drr0fEDǂ2 OP@#- Y JH.$H  +RH f''GFAV$A>tXEEDR A9"Eq1c2CP1Q6 +HLe3$ @8Ðh8dp҄n  0D=`#2@x"bb> pbPh(h +xL,M2c12@HLB!с$Ȳ8iPa2ab ,E`d&@dHx2& 9R \h$Pa"l7)CcDAAG#<(F#SaAcd126C#|a 9@ /d h4 x`5-,FYX fȘh,,FF (Hf؁,F> /@|l$P NL(`A(U4F&xbdn]>Ȭ 'B +H@`qc14~Pq֞ %**aasLT, +"MDb!Dž!L0LFH)$2BP"l>xh2 PlBlƅw +8  0,ED +x0P<8 K`C@<4! H=@P`:`.|FBh;0a2fhDF  2i eaAS2 +8ʁ `A&c$S`cM0АpⱡADIGF + 4";& Ȁ @$>L&#((Ifà"PǑ< + >2P4#C l`&:`<3i @8"2nAJ)AFƠFAZo60M J611IP$ , V H +t5ʱsΨθغۮpGS%-$)h]^OgS.X_^khfޗx|m3U=&t͈!gRT9OLO^ZKGCsV_\|W@ތ.okvο˨֛ISĨ$Ir*?+M6I=W,Py.56jdފ4ocuw7}>=Wg +%T5ݛ2^ףŨdCrT:|8'CJ" L<8P>taVS@KmLy)*5~d_i׸:/oxv7oɽR5׬ёU[q9;ܿKseחoY;z}TW<:QɮꉠT6C @>:FU%^+4R h.H + W,HQIipD%H bD8@w=DJ)a/dn% N;~{!|ƹ-8SYV,m-rKKGGrvZ]tL!܊v6OoυW@jo߸Lbs{Q]xs5b:FFt]؎׬l7Y7[ܚ/||7+'ԯ;,+\F +]*ds;vEN>Z=jW:gbnW+I՝K%'r/-N2[/.kLLEoO\Y}uhw7v}}jCVOcl{gyn]o)4~U+PFL<wY֟n6sۭEm7]l{kotclAv#^^%vS~r"r?T?]wjhM7|kOqG:ņR5E R~>_}Mż$^JX 4\Y@gy\lץ|x뙗=l囻])bjַfjmkfىȹ-BwR}T +rrzH1q4e +IU)vv>f=U+HMmjݯy{1~WңOU8nGѥE i"\Wj\G:>țt{;[fsdNfL_*Gd tx{z0Uu%gw65^nnA5y^Yyt=IrN)d!!>$橠VK(((",j\8ǁ( B ( + CB=Qjagl 5ݽ',r,^+yysjD %L3Vt:&l@k9pOA&ْFXYZ8c `WݠzpqST +% g0 =}j}H~@ /^*iZʈ" PJ0/zz 9\ο=M2Ȋ[ V칪Ś>FL|n[@ K1F;GOq/K.$9є6\"+iq$[}rɘ.i + ,M&{/\ZP5\DHmbf}~r榭 +glͥHeڠCPLgzdS0)%i#U3$-(AaS +1iFn4I265',Ux^THw"]yNF\KKӃzC=FW*nx R%W[$D%IpVO0cAJM% +g8/6{#%SDV@D NB?te܆ eFw:+5|-X +!s1-a²3~W=3KdK2^a@|;-O$t(DI5i) + ]r]<&.]#LuMf>$'Ƕ9u*Q;u=pREU|B#:m NFģa>uPVӛ)^4dex\uyMn99ҖI!Mo!*nAnHޗw)^}dҏ _ނڳ˒N#ʰPh+V +MurR*փߋE_32%ռ': /Ӗ2YLMe=[(zsibII=3"L$)dVp*>~LUCoL4%C3kWFRzU +^ A#L2ђ= Se5ݡ9qL(`:E"qSjnrȌ 1%/f :h4 mO$gʍR_onLYT"<߮Hb։&QJ`RzRGyVD&ڌq{Nd}'5`NRի[V;YVM/9]jJ~$OjZj] EIc +E{1JJ67NatB6CRvgjīȈ|hGWO_MuKQ8'G!z2L=YǏp*`AlytSL-µ +NYOFĮp GhީϪđI#}HFI-D +|5ߨ9 +V= +5DG˄GnD6eH.6Pp~qmЅ/Dh=Vg_Dj@ݱ}stGlyOX.ƧC] MS] Tl(OT\RupQ&E /̓f; +~ǤӍ4i9B1@etRÀȡ)wWȽ-k`h;VD LaA`:@UO.#jB>vu#l5D8.mCb'=M<. $ؗӍIuN 6_D%'Eq ǟ=),~oTYXd:d z1pKƀX8حb:\-@qfO1)I1[htIrRe1{ʼn5a)JO6$F*E'ź+[y68HS*nRW rA@Ud#;гe Aj"QT5mߓtkܞ lһDpJCmJh$Ocu1t7'z(Yl}u:WxOmU i[c$’zӎ;xZD$E%C㝚>_0Z֗Rtd@d%#=`J0aewCx:$聚u) vqQT¿8cv.v-oga`+Mu>>fi $ZA H(TGk0`. 3EaGD7=2 'R}uF^(u3.t$k6p2׻:Z )`FՑs#?zwYE1.kx]UzO@/&!zHὴoBVC$$h#$7/*>fMI{S2n4L קW *FC.Va4CXu񘸍5]]&B_):;~8b ☘pPJRHUYPrObmkqTX [nUMI9~!$in37 l)!:mYA,Pegb#az}ֶƛtܡ"z7̘zT1Sڙz@[5EJ}$Y]NTۇk'YHll}4tI3OqU?RCtudA tf#en -c?lBfF{c2;O[D3`Y@, 7zr8Ԓ*A59!1E04ʏ&J4ԟ)" ߸Ꭺ)1E(Q! ۞|Ta[OvDtXq2Z 3I5_ +H!ːV6Jܫ UP 2i!Zb*yz +'Y;Sd$DM!A뒠v,a;BJʡ0S"&rh&0W/yJK]a$ +kB88!+@ueC5V 8@\ӓPUe jݫ}t&ق~eZ&υc&ӚF|9+I$a`0\ƮV+z^T3a>B@ҵ^\lչJ''93N[Ǧk%Lt/L$o'*4:&N'ܗVTb%>^ž6kZz"W?UT1IbIhQn#MK2{d/zJ?)RYczjmNA98Wy#[SՖ)YY%(0pbN`ta=%:<=@:ǝk\N}VO r+=5!O'a{d9a}SS`mVq2RIIgQ:d5E6= ":$[3)+BSd} T9yS/FfyTu9_ ;l`1NILyDJh0[Um7#8dvgˮ&w(R>60 nJ*SR*2pNhNhyg F0n +d$MmN@ D@kdJ@e*RCS|w`O9 M.Cf2!9(` O0 +¬rKe?q d?-z/E[3CAshߒ!z6簪BfFM% m!$ 2гarQ \C)ggku +Ox 宒_02p/kT 2rT z-_μnhAZ%srm j0q_ b~2Χhk#v 478i|d?5L6$-1 칊ot!5DCL0Zԓe;jj/*!^l\c3я<`PJEmC&c0ʾj%a :LjxP D3@ ( }8V ~6toR05ŽtaA;U#e˧7 ̪hppX7$g!A0O\DF0,T ;՛&VZY;k< +7䘥K?Ԥ1a[?X0 +"o&5VT|~TLU';{}E5g[&y};-E' ?mM+%*\">ecr2@Qj';봶JĬ&V'T|#S`pPI)Y[ּX!@)x͚%9%)gS2ѣYHG,Y{ 3A&x*^KoMͩLH^;VTce3jH1.!|5aƷR0b{+'Y\s>q;0_ +B]_H֣l%&Q6 I2ܼCr]!C2=͇"W2R'LcտV ]lAl+}yuMkc+mCYK'ZE 4KN)(ٟmb] D4NgpI~h~`*Obo3M>#ȶeM/s*:oSlh4a?C0d +1* 5{?"CȲ)I]Vr5/AB[둞'κԬGR^MwMu)Uz4wX⤟Ną Y4z}YNqx/@.|;މ'RxZy`4gzu^eS~^Llx+~-nOLeyӀ#y&(69Ջ(f_W>ѿ;=M(.Wse2챌p* +ɋ-Ȝ(@  !n?Vz's2M,e?BEenʉ4_]q;MTv㷳0*mQ஖tCp `jŀA_˧=>5lmmt*ilI'Fo(W>ybPrL ȣKsFBĩ,$/gkqCdѵRI#BEaJe7'.pC6:MOפh!MH5%Muty[6uⴙnBٳ9yv6DߠJ 8m9E/ڌľ6&BIj" +Rgnv%&4?%}x6wKcnfD_[Z'$$8L5@RF15G[8|_kk2C1tk>WG~ !@B(08Wv68T7Yv"@ +endstream endobj 30 0 obj [/Indexed/DeviceRGB 255 31 0 R] endobj 31 0 obj <>stream +8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> +endstream endobj 24 0 obj <> endobj 32 0 obj [/View/Design] endobj 33 0 obj <>>> endobj 22 0 obj <> endobj 23 0 obj <> endobj 35 0 obj <> endobj 36 0 obj <>stream +H|wXWϙ a# ƞ$V4*HGTNpM]ׂXFund5q XJb4aCu`f/'9s=CLDΔMj +1c&znNJ.sDġDCgfV\1Q@.qi)%-# +#rk<'pD\&F<;V"t8_ob>IHɜ=τ>@40495:I[JP谔i>=Kq O^t{ݿT0i!M&J It]z$HvS)ݔgh:nmz*]fYgv5{ͭ̒y9 +r +IVFM[ʭ6r-9TNyZ^'oQ |V _  !+RndfqjٺBmm}mm'l> 5 {p48M +s9Dz6BFV[}#]>\(!\nQD]oZJ&i RtH:%}+ݔZL|SA +o&.HIDcH~Dx3|@.j&Q*H\$z6 N$"Ck)$Xt]chT?!Kɞf)H;dvR֗/OUk6UMxunںϺZl-Z;ۭ۬&Fj^U#x=PU(XET*"ዊDbew)S@\Uʕ%CISR$%qStQ]POV_ϱڵBć3MX;+!ҝщ_#UX<9=Edp:W{HqQyT6iot?v)ymu̧ȷ95 +QJq_?P6ʡ^R.*Di;Ji _i9ȏh3S*b:CSBєO1TJt sd8* TF{)ZL%}Rh%Q"MJiT@Ni42heLEh6ͥ94|:L[)<*p*Vdzȃx0 rP~a>HhXCc>DLdD" +S"H@"ReW SLC*Ґ@&f`&fa6`.a>`!E75!X%R:2, +*Za :|OsCN Yl"bCa!װ̰xX`j,4n3n704ZE=bl&l]۰]%v`',؅(Sg؇8D/Q_ ]8NK|/N4k9q q;\5|븁n~]XqQ UxxxjOl 6&dbSmbVn;Nqw3C/h36skfYhfYjfYiVfYk֙fh6&rWgMI4I&٤Tftl323sdC9l 6Ls3M6'L5')sّvc~{nFn=d#9k!H@"" [lb ۱#32*:T9ȦhEi8͡4BZDi 5 +jH+i5z@imjDG@DɔBFi SjJ[imvnC{itA0L:Jx0 Q'O 2CACHax((((((򨀊ʨb3 )HRh7ƍutSʢl:A9K'<:CgnF]KtUFݤ[t]GtC*GSz!&fVY8 G2ز0{b\KpI.ť r\+pEĕ +Wj\kpMŵnuܐqcnM9qs-%jj " +-my x/=^+x x :+;zp+nWUx=jo-V?7M#>‡Ho1:Vx >g:Q'd/7W'[|>?E?uN/W!w pH[t:Fc bc&b&c +b&`:f׆ׇׅ777a&1 1s1 K Û1p\;&6.|_/Ǡo/) AN N>E|Q_%}KR/r+JjkZzoF7Qo[o|b};;ʎcX;ΎD;NST;N3L&Yvcyv]`Ev]be?Pup=ݛnfh7 ?'"J)tRj~ S {$BR\UR^*Ku-#iav򢴗WttNYH7HOyKޕ|"_ȗ|%U #}e RM~2VED*3e,%Bч%A$M]tDg:Kv.# +gLRI):G,Զ<9+9/\rE5.7ܒrG=ɗAGyvʩCyAssĭpk\Kws.e\λ]{pD82l}??CP?c]Um= +.#6 5a66FwnCDERnPBDàC P dV66və%䑀R@H1)!\+r]nx缋~GQ~?o;]~7{}~??ƏRJJK)+夼TRI*K*ARMK )"J pH8ÝT'tҝ 'YpN3ޙLt&9)Tg3ݙtYlg{޽{ͽq}>qw? }qߺel6eȼgr<5ư 1M^7LAS6ELQS7%LISʔ6eLYSΔ7LEST6ULUdꦆiMejPSDŽpa"M]SDih&L`a>| pA.ąb\KpI.ť r\+pEĕ +W չ`Z\Cq8Gp$z7Fܘ 7fܜ[pKnŭ vܞ;pGĝ wnܝ{pOŽ~ñyA<!>G(|ORq*A%2TQy@U*TUT)jQm +:FATQէԐQc&ԔQsjA-6ԖQ{@u.ԕQwA=>ԗQ R4`J$BCi%S + TJ4)2i14x@iM)4tA3)flCsiͧbZBKi-M+)Vj{=Ϟo/ڋh u6FD}BV>imOSAN&2CS1*Vũj*^%DjJV)jJUijUTh5FUx5AMTd5EMUt5CTYjn;κ{޺t=@ԃ`tNCP=L'=\4{D Gz̔,%e̥]^G~ta:BGtNi:c3Ҥ iFfkƙꞺ-g`v!vgZ=IhMYY/ޯo6wǻ+d,o[{v=;$yCu:=b{{iyϽK{  @x. 30x|E>%TrY!ٲRKղF:@ABaPP%Pdl@iAYCyT@ENDN!<PUPAv8wgrsw8Q=:؆b>Nn^؏/% 0NN y\E\qWq : |?'G{@Euda޻D~'DQ\;.Ҹ5 +׌ƽ-ch5j1B(q_5&gbfvF=9'䜩z}Vݪ[U_zzzZb-޶#HזK˖+jW]U{XG̰@ +U `TG &j6Pԅ/# "D#D1)9Z%Z5ڠ-ڡ=:UtD' 8DtE7tG,z'z7}A!ap# bF" jO[S p1c1 I)x S1 131 Ϙ9xs1 FHx󸀋pYO }>Zx}>QO֧Sit}>O/"K˰+&x k6b_bFlf-؊m9vcN|]؍=؋<|}؏||8  +A(ugK(ni%ZvnryyyyymN2'__Gcq|R>%g"|M.7-D.fŢTlJu9Qj*8S*+WScdT8SLWfpD(S+ էPi4S+-:0 ch:e:Ma:c:KԈ15Ԍs~QĹZe+9?L8˿`H]o +Em6LskIZ6\KRH-MK2Qhf%ResILa+2)e>N~uXTo%jz[~~U߫?ԂZѿ unԝbx֓f,5OgTkx6@%h.-Q Lyo0c[iCY̷o97V2մp-wӻyp#mL[h+mc6a:| `FI.&=~gj<@s:D 9ctNI:yWL]dD +e]k̗tn2eP)f>̜Gz@<'zD?r{K ALXa㩏Sh'X%rħPOJ>{S2G[1qITF +,͒FH3rv@c8$~jUH ܃;"&JKyբ3g,٢ ?P2uVZy:Vуk8/HL8nGB]lٟ|7N,:EJE7=xN'>khq#}-7+9K⮘#6?iR>N|٠(D +o?I"El5g7kX[s]+~s?YL^D4Cmi(\3ǢX:gKSHۖowW }H{M{su1a1SI'7vQi#G&:dDWB~}0p@۵mӺU͛5m8QdDxnNZ5CjTV*j1WHDdG'V  uEVk<7( UQ^~e i.+%4 Cxw{NF #ݨvEj3*\kGDF3fxnf|U 6WJ!9-f+H#ye 6{"KQ)kK7:%"˖Qγdw%Ş4#> + +s{6w0Gkl4 #O{ [UUaFe8mޮdzflhra b|Ȉ3U ŝ3##J7Ց/&fy<#%)sFxߗOLCPULo +-vl߄hcTаd/`؆ 7S[{gxk uIlY6CaHnk*4¬Wtڝni9=nOR^djz2n5.elauIm91$Tw== +R|̾p Ufwgcx7q:vĎ֎/q'8ISľX !Q $fPnkVxJ@H#* +}gv +9||7OTXd 씥 HWF6*og:5 -aᖦZgK]fMG0jY”j-.*>1&Uљ]k "Uyi̥թ%Ng3ٻ$Fr;p51K@e:-i +"5@  RIP=X(%6 X5j?`+y +0q¬3&ޯ4V$`)VR嘬%daS!WR9liE SfT6F#ބ*;],"/yh]_ ݝ7 YVqtq0:[!ɆhVo[`^+n7k}ĩmwsPaߟn,8m\˺V[H&oM8*ǹ@E +%%I`lK&e +S(!?>GC)[erQ|JwH:3߯ Ig ? !2s'1kMf_M-KxYNGc̏AFxqč|؃ #H:U'QMP24 .#B^Dzm^i(@w'R!Ozo(9Q]eK H&0$@1.xGSb +0&mDt=/A7dRQvyI7EC1TѰfg + BN|d:kT2yjQdt,_2CC'd۞buJn5AU7$fsRZH +H xQ@x"x\ݑ*?ECikTL{%\,4&ĞKm(' N?U_2(9 +z\/Dũ%,_mD$N|+.r ^d>y'zp)쒗};~|F$"B@-M9[ϡCP4!Fb޵xwIU97⢹!E`YtWiQ(A ) x<_-~z(xǡI8% D!m1.04:仈Or(RTtqy +aV6y$zO\1ˋSxfzĊ*}p'k$"hr -IΈYDzUqT{KXڅylصUNJ۫҂x9 =( + c> M +~Fosh0H`aPJwLeo5`U$%ͤ_$ pT*u.jubb碊CQ]}%l~,&aĊRĪł.86ogtOzpOzpfo$_eERa ͮ0U/N۝i0|OHuO$)o>Z={iA#N۳-b5Lb`eϴڊ-9-niTKBW2K6?fQ9n}UnMnM$,=@{X61lP'IZњvխ` )^=Z0ȼe2}LԾTC`ӝhn+KK(R%+)8|3`7XnqGf鯮='7d$齑f=YHJX|󞓉 & +^}/#c 㺷\كae=DYh_U1yeeRq_!>I-*rLѿeK|ADJ{$j-nJpnp/3)=`J1񚤝θs}iה5[⺾]$ЁL?gz]jpW|kr$d϶M5_Wܔupnx>5{^e߭婪ؼ`҂4N}EA( L=,Շ` dP&ZSʑd f}xX0b|^IX2^zI~JGDQEՇo &1fR[ ߇&Uꖉ$"Q9Jdn.̿[yRC*T80<0YY[d}r DX.Z6^q6[-nr^oTVC4S`//#E6JNmXVcD$Á%g=JS7R**LbV,dGm`?[l6s/bƵ@/6X62E6#:A[ۊk>}jsՖg;/}7M?Ѻ?XҪM1w?#UkV͛U‚yͷFsrw ]W&_3 F !uOd6vrBk Ԫ9m 1wPߧ! S_gV*\F]\\Tz ֓L44Jc"4SbJɐ C4͊HVLP8Ae#zy?$!^jᾃwmzg4ts1ǫā_?`ӗ +0ipe7K"~›ْErKIiF֙d$dddd#+`dQHN}Xe`HxPSSn8?"?Bx0#0q0=lD?/ދp7ā5'N=~r{]Tkx +b}ߡohƀ҄& +a_Dzٚ1ΎY*Sܫ)|tWM/jq"'`-o"7_rs_l9b=b9 2A]LJMpQBTf݆;!ʍB;&4Dٵ֦o)ḮC@#ExK pGy |خw8a şzl:ހ<o]*Џ,~C]9z9>[pW^ !`̿ 8du5kbs?`sU]G\@\۷9lm-aK :ȟ|Nk5>U؃ccEX|^cat!ZăU\bFGyxq t"K?Fؘsp~ܤuz c婾МӺ7?BDX\;0>wa5rh%(G4ӘyqqqsOsm!#R-|"CWY3 sk؉@ .cRc?F?ꪎ{蒢9%+ĐX*\h +Z W a<D,p|0" FՁa4-E"k&ܽvg{^"͍nYy@9Uu2AϯX3ޯ+{OH[UװG ǃr>v:s,9heީ쇹r~E`Յc27F6rR<&w"o,R^&e~<<<5'29sOp2{Nrj`x^}-VD!&;r*W&dbJ;jjn#q$Xc`d)FkwxȖ ]oUXp z~TQ8Oa*]2_ڮmCD>}?}fz"_Ojew3l>IyzgLK=+ZiX۬O~ԧ SQz%eg}g%k?*rΕGp5L2+ NbYhLQYj;#x>2̵ch? +i0Ub;Rm֧ϏW3CK>UvawE㠿~M:o="E/W jk؏M{`K3?C_ShſK]zr( ӼIsb=sllr@ȌR.Yֺȿ ||Sݷ$p kfI;|U }w>'8o_0+ rZu.x;Wސ'])r.=H`) j?x|54M7L6WnNuscuOc0eQiVKLrfWk?iIM=)5ZVxz]!`}'6i3gR[/|P^ێf}?)yb 1Fy[R::jNɡSGetZ~d-JJ<{}mOܟ<^{-:y[̱ܥQjJkX/kRe :Սί`Maߕ*w̯[uq\6 `d%;>a\q|OO|/uAY :'>ȿgWKWv&/)3gew(?){W3fy(BTh=Ø^n#ƼwCY_oSேzxMZrY6Nsꫧp6g.|+kM.e"iD25LdJbuHY#G\93:{J*l—O\Ay?y,6+8Sࢫ epY;><%X[lv|JY>k,'cKgh 1S|=J\Q,z6?ʋ]Er'cy4jӣ}|:{}^u_^zKcgq=}|zI kcLy4'b3+OxC˓~u qe[M9sbX8RWi{þuR❒DZz-ywټcm?tg?;w xΡZR +o-~+F}t#"&B<Rp8Ck1+9ݟ腄dƒE÷Ђrk5H02DG ='G'9(x}7oq{T|#kub:wG{ots~qO֗Ny7?  ɐC^eēfW3Pp[ rЛc`̳آ"̰:"d\cs'A_AtOewX B|!o`jlNV DSs#3mk۳o"h-eMmkfu0ZOv-" V>ӢmclT71C20h2#8"XwRǹU1X9UU{~kH%2YJF)BP&1h?8$h5R:&N:2@4"%忐o +L{ϻ|n^ih\IRE5k˘F9RFnUl~S/u-Z`yDe|S)k# rdt81v%}UMwƔaUIcb$2 „_<#=.qBg;98< gHn<~OlgO#]|pV&{&~ 9Tlo5}H>#'Icx_|!ዛ8R EF=5EsmjC⻵wIt鏯+viΓ&K 5Pl +;aCK{ քkkg7zS )f 3l!T+gJ{1v{Lqk-#ļpWgp7` _w>/tsf}v' +# g-{PLpq(o7ۥLf[].'ilznԛfbiSq.Ȃ~(R|J*y=RLi'j_׳%·biʵBW[{ڥOTa/|Hc6Ú87YcSs? ~s'Ƨ{*,,s)^{-_nKF t|? wn^='Nj?g/dn=Y +wՎï9Nj_Tml(EgH_8AU'Ob4'M~K{<{;%QK>\# +D3.\X<X*oIfe"{_j,v_\)NYidZWa q )=nOZEScx[izpE +3լus-~e%߱S<}U*?D;UV}ǬTNS:N5ni>Зf}~S|tu}M:DoՀc +p)y"bnSCNߵ~&XOE G%OOK-[eNgИ1/_>W$v~8U +/fdf$ewb #["0 Yqrd} ;8FWNn>ד/.Z;8M/o'DcўbtwdhWAK\<bQu:ch xbB|ÇaKۑ䏵A| VPM^i%XE3/R}R wv\FIo_ -gC~׌?&}HA;+1/%e>k!9r>MxTw#Q.Z '?1y\Ss! +t{A [`e3V;'jM%q?!:  &ho~sp˒f3v3*bvFɫZ;Iu.s8 R 3A!+b}3a7/p AF%T7;=^nzKLɁ^Mo7s !3RVGd7OQSJ9M|E.ϜQGQ/c{jeAzzrdyz{G[L-}>\ѷReSbVn[Y"uR}>\6q=)CT<h~9j&jF7ՙ +oC4ܩz|*$,ـu!z/O$vw|-h{a9口QyV9˻8Rb*bgrHy^M©笄_{cdW?~|9`,}\;V@^>0ݐX71.٧,ZfUcL\EAfsOڇQN~A~gN~]ڼ,#2>!}J)I.O^u=HDҘo'0S}ɚC9j i9fNSfT{"yĊ(_a-ް]Rئ?%ɍ wz{=N@N*3%Ѷ%z;pMY[\f am*a2\j w dRQT6*6Ki?{Еȅr>,g\|i0XGu{Opom.vbyԿy-gN"!ۥaQO%W}G6SN27SGrҗ\y[?P }d/)mu,lm5yuxksQ\Oru"ʃ,L/AL\~ ~|qW~P&ba̯j6fԤԯ\Hiںie]z1?S2nuٝpX>{>ϗϷ~~~<_)!Τ@ڑ^>&=ڭBnrYm&Yh꺶j^tn^Kv}sUmcn<dwi뽢aְV5 oūA;#n 5\!*C3QDRɜ{3zljv$:ZhfF 61&XT!}Ǽ]DZHkKX;j;hm5!-xzT-GkHu>&Y0mFJ'L +@2^nEW9gbJ0֐v. +loKXEd}k+I_>*_S;FSݴ/l`Mr?A##̿3Z)\\}W 9ӾB7e.f>>WWwYs"Qz~oWkl"d YNVGԻ v4k(ZІpNh?<6EQVwΪ׫>W~R\H2p&Fpoo{s(h do %?lti?)1?{sф\]c4xCn9\M*DQ/l"klMRA C?5.{#FaכHܦp57_5wJVG2Z*$gJmް3L]Kd Ol^FuٞqQޫF{k#5; C9 6^+Йw3^,붼{>9dpq?gQ-Ygaه+#u ^_CMtcRQ`~𮋦~[fu~DO"[pi^/^F=cjݕܯg6U]xLڧ*}v.g4Jz0,ѺZ=sB<&*ۅnWa{ҏ[o9s`_65#Xj.;LY%?_@/9x7&sL 9Zꥧxo½y+dc8$,IT3"vo sd`A')^7gC4`Hܛ2}yV-27͖r=~~_6qs}s'],Qd}_ٶ10vV)B~¸C}5p&AA>wD@Yvs +K']/E^!3yGRsfO> =H3|Ƹ +}0^Q_0q +yGl\c{/E؟&PdGkՌΩKd;GP"H.w")u9tZkrБ4%g}cc%%ї$g8?zw!=k<<)̖!R}s3>!g!\KQI>sYoSB/|X/u1iwFk|*.0WqYny>ҩQAZd,XA~ ;(tPE|sԻzɻ +чpCpǔʸy^XdacQZ>)wأ _ ${+O,^bȽ̓kԐc0-bs`u{ + +"0>{%|?SdPWtgdK DVmW5M5߂X߷H;(y@bvmlΚ~:y)ֻ"GL#d/PJ?QmIX,&5V=J8>o<ڝp!*)g=̰/fv9=>jmÿzRgc:Zon<}hT{F==K[=г]\ [%cw짍 sku5͟rh5{1Ąܐz],5XY5ү~Q'_{, s.5@IlIqɚJn5Xr2>¯d?oہu+:Z8^%S:ORoՙ 'pK =c>V- +BP( +BP( +BP( +BP( +BP( +BP( +BP( +BP( +BB/?@&…Dd0&> +s * 8.uᯚ3k : xQ09^3.w>OY^6TcO*Fac.1`>מh.*reGs?TOSW?[4-pA-ci`*ho+866HRhDFm5>,%!1YԲd LI|O}e=~s{?>g9>XE#W1Y" |Xگ/Dc%r:d 1Y];7&;v&' +<)cyO1bհPeb>N&QɆ0X I.q;N,ߩCfI:"-p| {ȕ’;֣rs j2&%mrDzDWip#_Q!dQK ð'Q8v&B:β~͜B-1d XHInB eF˒ѷ8-xqy%#/#\?56dbb>J!)W1(;2=JNi +;1@9HY1 CiHQn΋jjˆA4AAk4FkFku}gs(Nuz?}m}Jŏ;+?e3Ը8؄ChGŌX²,F&:x˓mmЯEճh⫓9%Ø3.frhx9+3lIs'=icG"وQVƮ؝;JliMefpI Cm18;hPR[R]̉'ěHN}og4HRcRZ[ l ]jm3 F21Et:~edJ5[cY.dJ3=xt?|T=zc%@_uo߸M)绞RWLmhOk0 `N2LFIga!$> endobj 37 0 obj <>stream +HUiXTG=U]q n "Fb\p%[DH$qTQhԨQ8dd\ب18QM&@Lf?[]zT= !:jl`pdrR%1Ú],N>@+K\K=%#*`SMH)sS]܀6֤VSzr%OZ~sJ6<9he@`\uNv\k2^ʹf$ΐY@4;kFnXlIjw3B'RX1TB=$ +_R8]ޅs}LcUg1we׿MRz;Bϛa=LFsG? :fy0X>[c1,ű<G3_%XB,r@VbVXXuX x %x l) +H&h@C,rPwC| +Y\7:lO#Q>dzUl[|<'l(C~[i~WOX?|2?rbIʏy?O,MFL߰l.O!Y1g+B6C @ pLg`6`cX$Ǣ,Ey"kK\G-'O7[[+m"PDQ ZJi{?S>V2XT&(1J2IYR(_*וVTMjV5LR*uzJdla6fc18o,072qa223).nՔ}=}~3hZVikmvH;Nh' +vA117-Dsy9Sh<rcyQڻַY]{_7OW Qm"HDSw!+-5|N*mUPQ'(arI)+?P`GƫjZ5n݄:8ָX܄DԱŔ@Y5.ʴD}EkBlNso QݢVmD:wOC1ۚk$5B}U]s/%72^∻Y~,{AܽS%gզ?Ϩ:n~~h{={ǿ~vVeѐaa)mԶVb+nϖf36|PyvozW^$n]#]6#&S"trӥGĥEn4n ^PCa!qq8Cl e{*z ߹ wsݹܛ5zM2ݫңoCx5of!3=FIju%ɟcJv0ɽ{yg}iZ28Of9|'/XQEV%K9#$OpD y-sPeRޑlW"THMW}RKUIEdҧ]j_ ?lG'DWn؍a>c?z0^Q#!胏N/NNK{ 00 Dc83F/H|(\(| +cW+K81 UzA"E2! wa*Tm!-lh+mⶄ-iKҶ-kB7يVm[Նj6Vaikڶ5.M&m][ַ lC6MlS6-ccUgmfem{޵}>cWƕu\yWl* p<xgxO@SxYW Qx +]x0^xoa"ƻxc|O> +-&\.Lb +(dIɑt!MY(+e씃rQnCy)?BTPQ*N%IsWDU(B)jRm?jԑR 1ba u6y S`*L0f, s`.̃"X K`),V*X3p` lv. {`~8!$ 8 Gp"\ p@ RFJ9/5TREJyi T&RךIo\@:wHԔLK5 \JH%i,҆MИX#FM:d08d2j*S̈́cze.o2.+ಸ.+䲹]vWpE\Nb劺\1wy\ וt\)Ρ#tr\F aZ]0nTZKGjmutߵ^1@Ԇ:FXm㴉צ:ADmN֖:E?֩Jikmt~3~:G?ӹ| t~K]_Z7LЎR;*ѮV:^kwݠ=tMK7koݢ}tmOkݡ?NQwݭu{gݧ4\~E=C5O?O}w ??// +SCjLM)5ԊP[jGs#<"x4ſ!/a:c< t'ID东crB:J,ݤtr^E9#DI#[Kܓ;@n}+e2J~򛌖$孼72F8(ce**(k@IefԬYk&ͦY4̕2_#el$ _X,KgbX$ HlEX/ xW#8Bײ( ☸$RE$2\6⎸-n\<+ƊT(ɧd=)]<b%fb /gS>#C$1Qs|XJn[e&r%WWɯap%M/)yHIUz+}aeRWVIx'cbl4rX8c6 l"&)l*Ʀl&f yRx{yZʳ<[(/*ouvr\FWjR`] )oY*d-VeޚQ몷y<'D-S&b< +Sp>.p!.ŸG4,p5z, ć7̇܊|(nƝ ݸ>>w<cxOI>Oi#$>+x>GX~ 4Echfyޗ;q)ygޅy p$(LlUUjSPoTZejYZ6Zhcr)Zjy8ͧkm^j/k%Rm~~G[ smV[*ՉA4Π"JGsh\Asn(Uls#\j0ߪ?啗+m?ԣF@dEeFqXx?ؒaR z:iP{4O䨋TW!Aw*iI?=iFSf*i4AЗ&40B X3 \0 +`L$$%*d='Z9{,f2L̂1 &>i0Й5Y_\O_K;d),PH\ YGZVjX`=Uj_EZRYNX =f[<lTH2/a[ж@1!a섽?J. pn}8 W' +\o%P +ePA=zHzH'Su:!ԭ?I\3X{Ti1_Jo_p|D@A˞KDWUҎwz0Un|xlO` +ZȕoHZ2DU63= HeYE3 ;vxhͤn+~If)P9ԠJ)8ҡD A5*+K(㇗)N쒔43, LѰG Ų!2Uu >3Y:xrnP{Irܗ8h}Q~ OxT*Th`zB)U8d;pB H'P/p9%߯ub + ' '|VXDO*Ur˚0(!T +>C3+g~?O6@Ie/J$f4i0rhuRc5mQmzt]HV]7]$ׅ3Ei/s܏xb5mJBxkӹnQb+p>Rᚻ0 ohJROß2Y]Q`5ڼZ;J6 +-[Cٓbb "w5L[89mZ,U׻jQ0=aÞjJѡC t^\] F +8wp^["|@e/u[Ρ7'}뇰¡b%Ad-9ƣe}V)k55Pa ̳_VbuABp,E"10G{@|y6ǹ?-U#c3cE<c1O>_7Wo}ѫG/N6ܶi~ש7g{6ăFy&;/LWFdkK_ BڙtV^A]n7[iC1i+Pu{qx~7;w,X 4ۍeCjXx<«k(K!F2b&I|̭[rdVS_;_jjٺ(x`/ 6D(K(RSo;aVj2E10F#9|9 'b4䌟ry5S\Bz8onp_MJ,uV!/2=%rIYPCRjLt0Z&_qGe'ʧeѮ;XnV#n!AOBr-,,?@y?s&|ސ땉;t{ebY4uG ƲwEa ^> qNa TF#)ۓ mh*HÛe/7_`uͨ mȫ_tH͉&iFd̯vKĉ Fpk=i )ф7oɎd0V1On{@mMлScT,9EVNE—Ζ8b@|}%4P&%QӪ) Q@|'H s9;jHItˑSɿ_ WyFcߖZAk/ P]lF?V6\Kh%폢SQq}ЂaۘRN-p9?rS'瘁E|aR2&BeLfak#4!d@ss"6Al ) si_zPGfcxx~ّH@#tUCߖi]Hlֺ3l9M%DZ@B"XuAyq@8^ozyW#IC+ z>:chʭCVP(#aBɩ W* C ;DJٔ ̉bNUD3T=s6lh-z<|G_o=`)m !}ruY qH.9r%ӕRC2«1 \H-.1TD}VsI#4.) Tq N3%J5nZ? RhbDSѳ4<9 +lݛ &:4Ts`k͉׃՝fchkAKZWe9.d +H;-gaf/?l w hqQXjVXg(1gA&n@g(j#45s KJ#`ǝZ$ZXߤe4Yow*1HaeSI吿5l!Tx R ++iT>@х/"*@+ +КntEVy?G>h@itܜ*) 緟[cz=OJP0_J)'yre9NOrmWy7 ƒI1,Z-RFt\Fp`Bk_ +gzIlnu"p /R"9uo81>N{Йl3xX *&7TT+%Hy#b&^ +3a׫jX @ó-jY$'mA0 C53ߚT^5@Q]Wݷ- + " ++dӤF"P]BAb0I?5vLj)XRbÏ6Ֆ Cδ)u5c&2izν>6&Lw{߽{ιvՈ6NYct¤ܹ;` 8TLҚrܸٙ8uk/UwiE|/w/ 5l9FuoPk{YE"jL峒MIxeX!dc#Q'Zqodk1b/ϖލfbޔ\{>-ONN2wf+7v?(1>#"GdUH<-6LeV{"$7s9)<܂dR0 {2Vb)U{iDQB8*V7m3$ 㥸Ɏxߚ7-sY34<\[isojޅ38cQ5Rո3;pXlm?\7?BEv#W<+on/j2w}vh뀪2x$EFAlael@[wuHay$?~ x1i8lvd3NZ~_afπ(Nbj7QUGX,jV𜅐Vj޸:rq^ىe#fQSq0a̭d]k; Ϲ}Mr%֮1M?5t +yxuK;$ow;oc;dO:7|cbe|nnVƐeQh9R6tkFsgL{ICJ0 oycWo9MYmhچ٧bSF~9tGE1]>%Eфtėt`U?B*5e8}ZIxhezʟų!0sltlN$cJFPfv;N( >?֢=#A@0y0@˜̟! oi\`h>1uFn|9yqSyh6Cc5Jƪ!sI|k@k`Ke귐,yh1Obq +ϫLϥvY؇ds6:c hdC<{Ck<_ ofZcKaֿ:FPZ0M|kV 2I'h1A@ c4Ksc-蹞GzI&|U!m<$A{a 4) ڧC7pP/ KpZ1ONhsP;e' /{T ToLcw ߂,&#sVX!$a.q1`>y7> +#_ A{R3.ڣ4(0aJ~u{&گZU؇Z|Iz` Wz?7mT|)vö0NT*zs?د(+|RHy.&` M5A䥤a%!ɐd3RSqQ0Ph:#8Q)VAP|Qh{νd֎|=1siX]Au%I_MR +2.6dxf,ϵy%~ٖT!cPm5~c=F[/k ʾ5L9g\q; >TyXИfhuc1~]yZm \_BgYM|ύf\R3P(vXYнR$rN@9۪f/7-f}o;:r)oo/[ +g1&n60e+{W?yQevmR¾yk|#1@bQr.SÈ"Njާ*Nj1HjKme0l5xϠR.Kd h=mc[s(@~Mg˭wn0@߰Zؾq7xG[QZ%6{ &,/T4i_]%' ݯ@J<b/N&:#K$9܅Ι<|TFg&5׹?:&nh11 ꈣxOϽ8aϐ1+xfWZԧum1cxvqwl };411c&|EX.+1oMgognGm81=b_:̺Y7QA{euFq\&cxo.eݣgr_mGiO7s{a{vFY\&tgK/a}3p/P .`5N1Y.&;=/1԰]yQn$x%eȹzݥWݏq5C2W~\zOodĹ;iwqXȇTv("@cm=vdt\O7Fbxl5<{_1~ǬWZm||k~@y>|✇а8f%ɇ>|Ç>|Ç>|Ç>|Ç>:p5fA#dB`,趪ӧA3W3a_c=TwwF>y&܂_DNҩ3W0P<g3`` o?_c!.+~cQa`=UXzP0?GO0K?5#d D &O! LE! + B>w!|,#! +@B yOȻB +9#!򶐓B&B"䄐rLțB +yCȟ.䈐ׄIȫB CB^rP!/ yIȋB^_B}B !{1_~My˫Xp5;z#CfdlAz2eVedpȑJJ+d,LRKd,HB d̗-#K<sȇ1[,3e̐1]4SeL1Y$2&ʘ #Cxd+c4e1Re "c2(c 2eGFodCFwd$*#^Fq2:ˈ#2:h/#JFv2ʰˈ&#TF`mdJFK622,2e4TFe4PFeԓ':2|esk#u.^Mh\t%BUSo{TzWDj*= +@|uf-1C-a6ϔgy܏M\Ǩc=T3t<@<'ίՁdb5&ƾ͜`jw1;}ccNvcta})ZmkJ9+Y̡s=)X V@(PI T,=l[վZ[[qݫHM+SVAuC6~Z|U}UÈE +R¼g12o& yżd^0ϙgZ_)yd1?1f63`3Әf23d&2 G_x{dΌe0ihf3IeF0ÙaL +3 f1L2dL$2}>Loӓtg1 LW&1X&td:0h&Ծ#혶`™0& a6LkLӊi236;Ӝ `ge1`2g0qH#!Ӏ* ~L]f̚+V&70adTg7@WL5ͳRTf*1>7%Sb*0_0Oƃ10嘲G9 ) 1gTFat=_- +^ x)<.܁p n *\p .8,p +N 8n3pC1p> {`7삝6 +[2g!lM6z(|Xka < \9 \q9 X `! `>dC`.́|5ݒPqvD, 3`:L0&$Ȅ0 <++IS+IR+>>>z>;[xW1ĤX(SP%aABڻtWpi v}٣G*ʄ\Em*봌 ] WHM]- *ȕK.qo%iHJ*Qj%S/)UdžZjxkؒ 00 +endstream endobj 28 0 obj <> endobj 27 0 obj [/ICCBased 38 0 R] endobj 38 0 obj <>stream +HyTSwoɞc [5laQIBHADED2mtFOE.c}08׎8GNg9w߽'0 ֠Jb  + 2y.-;!KZ ^i"L0- @8(r;q7Ly&Qq4j|9 +V)gB0iW8#8wթ8_٥ʨQQj@&A)/g>'Kt;\ ӥ$պFZUn(4T%)뫔0C&Zi8bxEB;Pӓ̹A om?W= +x-[0}y)7ta>jT7@tܛ`q2ʀ&6ZLĄ?_yxg)˔zçLU*uSkSeO4?׸c. R ߁-25 S>ӣVd`rn~Y&+`;A4 A9=-tl`;~p Gp| [`L`< "A YA+Cb(R,*T2B- +ꇆnQt}MA0alSx k&^>0|>_',G!"F$H:R!zFQd?r 9\A&G rQ hE]a4zBgE#H *B=0HIpp0MxJ$D1D, VĭKĻYdE"EI2EBGt4MzNr!YK ?%_&#(0J:EAiQ(()ӔWT6U@P+!~mD eԴ!hӦh/']B/ҏӿ?a0nhF!X8܌kc&5S6lIa2cKMA!E#ƒdV(kel }}Cq9 +N')].uJr + wG xR^[oƜchg`>b$*~ :Eb~,m,-ݖ,Y¬*6X[ݱF=3뭷Y~dó ti zf6~`{v.Ng#{}}jc1X6fm;'_9 r:8q:˜O:ϸ8uJqnv=MmR 4 +n3ܣkGݯz=[==<=GTB(/S,]6*-W:#7*e^YDY}UjAyT`#D="b{ų+ʯ:!kJ4Gmt}uC%K7YVfFY .=b?SƕƩȺy چ k5%4m7lqlioZlG+Zz͹mzy]?uuw|"űNwW&e֥ﺱ*|j5kyݭǯg^ykEklD_p߶7Dmo꿻1ml{Mś nLl<9O[$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! +zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Km +endstream endobj 25 0 obj [24 0 R] endobj 39 0 obj <> endobj xref +0 40 +0000000004 65535 f +0000000016 00000 n +0000000147 00000 n +0000055191 00000 n +0000000000 00000 f +0000055242 00000 n +0000000000 00000 f +0000000000 00000 f +0000057567 00000 n +0000057639 00000 n +0000057834 00000 n +0000059560 00000 n +0000125149 00000 n +0000190738 00000 n +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000246745 00000 n +0000247145 00000 n +0000246558 00000 n +0000290731 00000 n +0000055698 00000 n +0000288047 00000 n +0000287934 00000 n +0000057090 00000 n +0000245996 00000 n +0000246044 00000 n +0000246629 00000 n +0000246660 00000 n +0000269429 00000 n +0000247358 00000 n +0000247605 00000 n +0000269679 00000 n +0000288082 00000 n +0000290756 00000 n +trailer +<<2AF2C1EA3CF5714491792EBFDF2860B4>]>> +startxref +290980 +%%EOF diff --git a/content/GraphicsIntro/Ch06-Transformation-MarblesSelect-Many-Marbles.svg b/content/GraphicsIntro/Ch06-Transformation-MarblesSelect-Many-Marbles.svg new file mode 100644 index 0000000..3e7fb41 --- /dev/null +++ b/content/GraphicsIntro/Ch06-Transformation-MarblesSelect-Many-Marbles.svg @@ -0,0 +1,202 @@ + + + + + + + Range(1, 5) + .SelectMany(i => new string((char)(i+64), i).ToObservable()) + + + + + + + 1 + + + + 2 + + + + 3 + + + + 4 + + + + 5 + + + + A + + + + A + + + + + B + + + + + B + + + + B + + + + B + + + + + C + + + + C + + + + + C + + + + C + + + + C + + + + C + + + + + D + + + + D + + + + D + + + + + D + + + + D + + + + D + + + + D + + + + D + + + + + E + + + + E + + + + E + + + + E + + + + + E + + + + E + + + + E + + + + E + + + + E + + + + E + + \ No newline at end of file From 5dec03d5d5da589d58a9dc686f105f6be640fdcd Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Mon, 19 Jun 2023 16:49:30 +0100 Subject: [PATCH 014/142] Feature complete draft of Transformation chapter --- content/06_Transformation.md | 267 +-- content/07_Aggregation.md | 34 + .../Ch06-Transformation-Marbles.ai | 1997 +++++++++-------- ...ation-MarblesSelect-Many-Marbles-Delay.svg | 202 ++ 4 files changed, 1305 insertions(+), 1195 deletions(-) create mode 100644 content/GraphicsIntro/Ch06-Transformation-MarblesSelect-Many-Marbles-Delay.svg diff --git a/content/06_Transformation.md b/content/06_Transformation.md index b6e5ddd..377d783 100644 --- a/content/06_Transformation.md +++ b/content/06_Transformation.md @@ -207,10 +207,10 @@ Rx is not like that. First, consumers don't get to tell sources when to produce The Rx version of the example we're currently examining is in fact one of these unusual cases where each of the sequences emits items as soon as it can. Logically speaking, all of the nested `IObservable` sequences are in progress concurrently. The result is a mess because each of the observable sources here attempts to produce every element as quickly as the source can consume them. The fact that they end up being interleaved has to do with the way these kinds of observable sources use Rx's _scheduler_ system, which we will describe in chapter XXX. Schedulers ensure that even when we are modelling logically concurrent processes, the rules of Rx are maintained, and observers of the output of `SelectMany` will only be given one item at a time. The following marble diagram shows the events that lead to the scrambled output we see: -![An Rx marble diagram illustrating two observables. The first is labelled 'source', and it shows six events, labelled numerically. These fall into three groups: events 1 and 2 occur close together, and are followed by a gap. Then events 3, 4, and 5 are close together. And then after another gap event 6 occurs, not close to any. The second observable is labelled 'source.Quiescent(TimeSpan.FromSeconds(2), Scheduler.Default). It shows three events. The first is labelled '[1, 2], and its horizontal position shows that it occurs a little bit after the '2' event on the 'source' observable. The second event on the second observable is labelled '[3,4,5]' and occurs a bit after the '5' event on the 'source' observable. The third event from on the second observable is labelled '[6]', and occurs a bit after the '6' event on the 'source' observable. The image conveys the idea that each time the source produces some events and then stops, the second observable will produce an event shortly after the source stops, which will contain a list with all of the events from the source's most recent burst of activity.](GraphicsIntro/Ch06-Transformation-MarblesSelect-Many-Marbles.svg) +![An Rx marble diagram showing 7 observables. The first illustrates the Range operator producing the values 1 through 5. These are colour coded as follows: green, blue, yellow, red, and pink. These colour correspond to observables further down in the diagram, as will be described shortly. The items in this first observable are not evenly spaced—the 2nd value immediately follows the 1st, but there are gaps before the 3rd, 4th, and 5th items. These gaps correspond with activity shown further down in the diagram. Beneath the first observable is code invoking the SelectMany operator, passing this lamba: "i => new string((char)(i+64),i).ToObservable()". Beneath this are 6 more observables. The first 5 show the individual observables that the lambda produces for each of the inputs. These are colour coded to show how they correspond—the first observable's item is green, to indicate that this observable corresponds to the first item emitted by Range, the second observable's items are blue showing that it corresponds to the second item emitted by Range, and so on with the same colour sequence as described earlier for Range. Each observable's first item is aligned horizontally with the corresponding item from Range, signifying the fact that each one of these observables starts when the Range observable emits a value. These 5 observables show the values produced by the observable returned by the lambda for each of the 5 values from Range. The first of these child observables shows a single item with value 'A', vertically aligned with the value 1 from the Range observable to indicate that this item is produced immediately when Range produces its first value. This child observable then immediately ends, indicating that only one item was produced. The second child observable contains two 'B' values, the third three 'C' values, the fourth four 'D' values and the fifth give 'E' values. The horizontal positioning of these items indicates that all of first 6 observables in the diagram (the Range observable, and the 5 observables produced by the lambda) overlap to some extent. Initially this overlap is minimal: the first of the lambda-produced observables starts at the same time the Range produces its first value so these two observables overlap, but since this first child completes immediately it overlaps with nothing else. The second child starts when Range produces its second value, and manages to produce two values and then completes before anything else happens, so thus far, the child observables produced by the lambda overlap only with the Range one, and not with each other. However, when Range produces its third value, the resulting child observable produces two 'C' values, but the next thing that happens (as denoted by the horizontal position of the items) is that Range manages to produce its 4th value and its corresponding child observable produces the first of its 'D' values next. After this, the third child observable produces its third and final 'C'—so this third child overlaps not just with the Range observable, but also with the fourth child. Then the fourth observable produces its second 'D'. Then the Range produces its fifth and final value, and the corresponding child observable produces its first 'E'. Then the fourth and fifth child observable alternate, producing 'D', 'E' and 'D', at which point the fourth child observable is complete, and now the fifth child observable produces its final three 'E' values without interruption, because by this time it is the only observable still running. At the bottom of the diagram is the 7th observable representing the output of the SelectMany. This shows all the of the values from each of the 5 child observables each with the exact same horizontal position (signifying that the observable returned by SelectMany produces a value whenever any of its child observables produces a value). So we can see that this output observable produces the sequence 'ABBCCDCDEDEDEEE', which is exactly what we saw in the example output earlier.](GraphicsIntro/Ch06-Transformation-MarblesSelect-Many-Marbles.svg) -We can make a small tweak to prevent the child sequences all from trying to run at the same time: +We can make a small tweak to prevent the child sequences all from trying to run at the same time. (This also uses `Observable.Repeat` instead of the rather indirect route of constructing a `string` and then calling `ToObserable` on that. I did that in earlier examples to emphasize the similarity with the LINQ to Objects example, but you wouldn't really do it that way in Rx.) ```cs Observable @@ -240,209 +240,24 @@ chars-->E chars completed ``` -This clarifies that `SelectMany` lets you produce a sequence for each item that the source produces, and to have all of the items from all of those new sequences flattened back out into one sequence that contains everything. - -However, we probably won't want production code to introduce delays just to make it easier to see what's going. Rx's ability to model concurrent process is one of the big reasons for using it. So we need to be able to think about this style of concurrency, so it can be helpful to visualize this kind of asynchronous operation. - -### Visualizing sequences - -Let's divert quickly and talk about a technique we will use to help communicate the concepts relating to sequences. Marble diagrams are a way of visualizing sequences. Marble diagrams are great for sharing Rx concepts and describing composition of sequences. When using marble diagrams there are only a few things you need to know - -1. a sequence is represented by a horizontal line -2. time moves to the right (i.e. things on the left happened before things on the right) -3. notifications are represented by symbols: - *. '0' for OnNext - *. 'X' for an OnError - *. '|' for OnCompleted -1. many concurrent sequences can be visualized by creating rows of sequences - -This is a sample of a sequence of three values that completes: - -
-
--0--0--0-|
-
- -This is a sample of a sequence of four values then an error: - -
-
--0--0--0--0--X
-
- -Now going back to our `SelectMany` example, we can visualize our input sequence by using values in instead of the 0 marker. This is the marble diagram representation of the sequence [1,2,3] spaced three seconds apart (note each character represents one second). - -
-
--1--2--3|
-
- -Now we can leverage the power of marble diagrams by introducing the concept of time and space. Here we see the visualization of the sequence produced by the first value 1 which gives us the sequence [10,11,12]. These values were spaced four seconds apart, but the initial value is produce immediately. - -
-
1---1---1|
-
0   1   2|
-
- -As the values are double digit they cover two rows, so the value of 10 is not confused with the value 1 immediately followed by the value 0. We add a row for each sequence produced by the `selector` function. - -
-
--1--2--3|
-
 
-
  1---1---1|
-
  0   1   2|
-
 
-
     2---2---2|
-
     0   1   2|
-

-    
        3---3---3|
-
        0   1   2|
-
- -Now that we can visualize the source sequence and its child sequences, we should be able to deduce the expected output of the `SelectMany` operator. To create a result row for our marble diagram, we simple allow the values from each child sequence to 'fall' into the new result row. - -
-
--1--2--3|
-
 
-
  1---1---1|
-
  0   1   2|
-
 
-
     2---2---2|
-
     0   1   2|
-

-    
        3---3---3|
-
        0   1   2|
-

-    
--1--21-321-32--3|
-
  0  01 012 12  2|
-

-
- -If we take this exercise and now apply it to code, we can validate our marble diagram. First our method that will produce our child sequences: +This clarifies that `SelectMany` lets you produce a sequence for each item that the source produces, and to have all of the items from all of those new sequences flattened back out into one sequence that contains everything. While that might make it easier to understand, you wouldn't want to introduce this sort of delay in reality purely for the goal of making it easier to understand. These delays mean it will take about a second and a half for all the elements to emerge. This marble diagram shows that the code above produces a sensible-looking ordering by making each child observable produce a little bunch of items, and we've just introduced dead time to get the separation: -```csharp -private IObservable GetSubValues(long offset) -{ - //Produce values [x*10, (x*10)+1, (x*10)+2] 4 seconds apart, but starting immediately. - return Observable.Timer(TimeSpan.Zero, TimeSpan.FromSeconds(4)) - .Select(x => (offset*10) + x) - .Take(3); -} -``` - -This is the code that takes the source sequence to produce our final output: - -```csharp -// Values [1,2,3] 3 seconds apart. -Observable.Interval(TimeSpan.FromSeconds(3)) - .Select(i => i + 1) //Values start at 0, so add 1. - .Take(3) //We only want 3 values - .SelectMany(GetSubValues) //project into child sequences - .Dump("SelectMany"); -``` - -The output produced matches our expectations from the marble diagram. - -``` -SelectMany --> 10 -SelectMany --> 20 -SelectMany --> 11 -SelectMany --> 30 -SelectMany --> 21 -SelectMany --> 12 -SelectMany --> 31 -SelectMany --> 22 -SelectMany --> 32 -SelectMany completed -``` - -We have previously looked at the `Select` operator when it is used in Query Comprehension Syntax, so it is worth noting how you use the `SelectMany` operator. The `Select` extension method maps quite obviously to query comprehension syntax, `SelectMany` is not so obvious. As we saw in the earlier example, the simple implementation of just suing select is as follows: - -```csharp -var query = from i in Observable.Range(1, 5) - select i; -``` +![](GraphicsIntro/Ch06-Transformation-MarblesSelect-Many-Marbles-Delay.svg) -If we wanted to add a simple `where` clause we can do so like this: - -```csharp -var query = from i in Observable.Range(1, 5) - where i%2==0 - select i; -``` - -To add a `SelectMany` to the query, we actually add an extra `from` clause. - -```csharp -var query = from i in Observable.Range(1, 5) - where i%2==0 - from j in GetSubValues(i) - select j; - -// Equivalent to -var query = Observable.Range(1, 5) - .Where(i=>i%2==0) - .SelectMany(GetSubValues); -``` - -An advantage of using the query comprehension syntax is that you can easily access other variables in the scope of the query. In this example we select into an anon type both the value from the source and the child value. - -```csharp -var query = from i in Observable.Range(1, 5) - where i%2==0 - from j in GetSubValues(i) - select new {i, j}; - -query.Dump("SelectMany"); -``` +I introduced these gaps purely to provide a slightly less confusing example, but if you really wanted this sort of strictly-in-order handling, you wouldn't use `SelectMany` in this way in practice. For one thing, it's not completely guaranteed to work. (If you try this example, but modify it to use shorter and shorter timespans, eventually you reach a point where the items start getting jumbled up again. And since .NET is not a real-time programming system, there's actually no safe timespan you can specific here that absolutely guarantees the ordering.) If you absolutely need all the items from the first child sequence before seeing any from the second, there's actually a robust way to ask for that: -Output - -``` -SelectMany --> { i = 2, j = 20 } -SelectMany --> { i = 4, j = 40 } -SelectMany --> { i = 2, j = 21 } -SelectMany --> { i = 4, j = 41 } -SelectMany --> { i = 2, j = 22 } -SelectMany --> { i = 4, j = 42 } -SelectMany completed +```cs +Observable + .Range(1, 5) + .Select(i => Observable.Repeat((char)(i+64), i)) + .Concat()) + .Dump("chars"); ``` -This brings us to a close on Part 2. The key takeaways from this were to allow you the reader to understand a key principal to Rx: functional composition. As we move through Part 2, examples became progressively more complex. We were leveraging the power of LINQ to chain extension methods together to compose complex queries. - -We didn't try to tackle all of the operators at once, we approached them in groups. - -- Creation -- Reduction -- Inspection -- Aggregation -- Transformation +However, that would not have been a good way to show what `SelectMany` does, since this no longer uses it. (It uses `Concat`, which will be discussed in Chapter XXX.) We use `SelectMany` either when we know we're unwrapping a single-valued sequence, or when we don't have specific ordering requirements, and want to take elements as and when they emerge from child observables. -On deeper analysis of the operators we find that most of the operators are actually specialization of the higher order functional concepts. We named them the ABC's of functional programming: -- Anamorphism, aka: - - Ana - - Unfold - - Generate -- Bind, aka: - - Map - - SelectMany - - Projection - - Transform -- Catamorphism, aka: - - Cata - - Fold - - Reduce - - Accumulate - - Inject - -Now you should feel that you have a strong understanding of how a sequence can be manipulated. What we have learnt up to this point however can all largely be applied to `IEnumerable` sequences too. Rx can be much more complex than what many people will have dealt with in `IEnumerable` world, as we have seen with the `SelectMany` operator. In the next part of the book we will uncover features specific to the asynchronous nature of Rx. With the foundation we have built so far we should be able to tackle the far more challenging and interesting features of Rx. - - -### The Significant of SelectMany +### The Significance of SelectMany If you've been reading this book's chapters in order, you had already seen two examples of `SelectMany` in earlier chapters. The first example in the [**LINQ Operators and Composition** section of Chapter 2](./02_KeyTypes.md#linq-operators-and-composition) used it. Here's the relevant code: @@ -463,66 +278,35 @@ These two cases—fanning out then back in, and removing or avoiding a layer of As it happens, `SelectMany` is also a particularly important operator in the mathematical theory that Rx is based on. It is a fundamental operator, in the sense that it is possible to build many other Rx operators with it. [Section XXX in Appendix C](./C_AlgebraicUnderpinnings) shows how you can implement `Select` and `Where` using `SelectMany`. - - - ## Cast -If you were to get a sequence of objects i.e. `IObservable`, you may find it less than useful. There is a method specifically for `IObservable` that will cast each element to a given type, and logically it is called `Cast()`. - -```csharp -var objects = new Subject(); -objects.Cast().Dump("cast"); -objects.OnNext(1); -objects.OnNext(2); -objects.OnNext(3); -objects.OnCompleted(); -``` - -Output: - -``` -cast --> 1 -cast --> 2 -cast --> 3 -cast completed -``` +C#'s type system is not omniscient. Sometimes we might know something about the type of the values emerging from an observable source that is not reflected in that source's type. This might be based on domain-specific knowledge. For example, with the AIS message broadcast by ships, we might know that if the message type is 3, it will contain navigation information. That means we could write this: -If however we were to add a value that could not be cast into the sequence then we get errors. - -```csharp -var objects = new Subject(); -objects.Cast().Dump("cast"); -objects.OnNext(1); -objects.OnNext(2); -objects.OnNext("3");//Fail +```cs +IObservable type3 = receiverHost.Messages + .Where(v => v.MessageType == 3) + .Cast(); ``` -Output: - -``` -cast --> 1 -cast --> 2 -cast failed --> Specified cast is not valid. -``` +This uses `Cast`, a standard LINQ operator that we can use whenever we know that the items in some collection are of some more specific type than the type system ahs been able to deduce. -That is the difference between `Cast` and the [`OfType` operator shown in Chapter 5](./05_Filtering.md#oftype). `OfType` is a filtering operator, and it removes any items that are not of the specified type. `Cast` doesn't remove anything—it is more like `Select` in that it applies a transformation (specifically a cast) to every input. If the cast fails, we get an error. +The difference between `Cast` and the [`OfType` operator shown in Chapter 5](./05_Filtering.md#oftype) is the way in which they handle items that are not of the specified type. `OfType` is a filtering operator, so it just filters out any items that are not of the specified type. But with `Cast` (as with a normal C# cast expression) we are asserting that we expect the source items to be of the specified type, so the observable returned by `Cast` will invoke its subscriber's `OnError` if its source produces an item that is not compatible with the specified type. This distinction might be easier to see if we recreate the functionality of `Cast` and `OfType` using other more fundamental operators. ```csharp // source.Cast(); is equivalent to -source.Select(i=>(int)i); +source.Select(i => (int)i); // source.OfType(); -source.Where(i=>i is int).Select(i=>(int)i); +source.Where(i=> i is int).Select(i=>(int)i); ``` - - ## Materialize and Dematerialize -The `Timestamp` and `TimeInterval` transform operators can prove useful for logging and debugging sequences, so too can the `Materialize` operator. `Materialize` transitions a sequence into a metadata representation of the sequence, taking an `IObservable` to an `IObservable>`. The `Notification` type provides meta data for the events of the sequence. +The `Materialize` operator transforms a source of `IObservable` into one of type `IObservable>`. It will provide one `Notification` for each item the source produces, and, if the sourced terminates, it will produce one final `Notification` indicating whether it completed successfully or with an error. + +This can be useful because it produces objects that describe a whole sequence. If you wanted to record the output of an observable in a way that could later be replayed...well you'd probably use a `ReplaySubject` because it is designed for precisely that job. But if you wanted to be able to inspect or modify the items in the sequence once they had been collectors, you might want to write your own code to store items. `Notification` can be helpful because it enables you to represent everything a source does in a uniform way. You don't need to store information about whether or how the sequence terminates separately—this information is just the final `Notification`. If we materialize a sequence, we can see the wrapped values being returned. @@ -585,3 +369,4 @@ Materialize completed Materializing a sequence can be very handy for performing analysis or logging of a sequence. You can unwrap a materialized sequence by applying the `Dematerialize` extension method. The `Dematerialize` will only work on `IObservable>`. +This completes our tour of the transformation operators. Their common characteristic is that they produce an output (or, in the case of `SelectMany`, a set of outputs) for each input item. Next we will look at the operators that can combine information from multiple items in their source. \ No newline at end of file diff --git a/content/07_Aggregation.md b/content/07_Aggregation.md index 6ff763c..a457041 100644 --- a/content/07_Aggregation.md +++ b/content/07_Aggregation.md @@ -638,3 +638,37 @@ defaultIfEmpty completed default42IfEmpty value: 42 default42IfEmpty completed ``` + + + + + +This brings us to a close on Part 2. The key takeaways from this were to allow you the reader to understand a key principal to Rx: functional composition. As we move through Part 2, examples became progressively more complex. We were leveraging the power of LINQ to chain extension methods together to compose complex queries. + +We didn't try to tackle all of the operators at once, we approached them in groups. + +- Creation +- Reduction +- Inspection +- Aggregation +- Transformation + +On deeper analysis of the operators we find that most of the operators are actually specialization of the higher order functional concepts. We named them the ABC's of functional programming: + +- Anamorphism, aka: + - Ana + - Unfold + - Generate +- Bind, aka: + - Map + - SelectMany + - Projection + - Transform +- Catamorphism, aka: + - Cata + - Fold + - Reduce + - Accumulate + - Inject + +Now you should feel that you have a strong understanding of how a sequence can be manipulated. What we have learnt up to this point however can all largely be applied to `IEnumerable` sequences too. Rx can be much more complex than what many people will have dealt with in `IEnumerable` world, as we have seen with the `SelectMany` operator. In the next part of the book we will uncover features specific to the asynchronous nature of Rx. With the foundation we have built so far we should be able to tackle the far more challenging and interesting features of Rx. diff --git a/content/GraphicsIntro/Ch06-Transformation-Marbles.ai b/content/GraphicsIntro/Ch06-Transformation-Marbles.ai index 75c8b45..83727bc 100644 --- a/content/GraphicsIntro/Ch06-Transformation-Marbles.ai +++ b/content/GraphicsIntro/Ch06-Transformation-Marbles.ai @@ -1,5 +1,5 @@ %PDF-1.6 % -1 0 obj <>/OCGs[24 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream +1 0 obj <>/OCGs[23 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream @@ -20,27 +20,27 @@ application/pdf - Ch04-SelectMany-Marbles + Ch06-Transformation-Marbles Adobe Illustrator 27.6 (Windows) - 2023-06-19T08:16:13+01:00 - 2023-06-19T08:16:14+01:00 - 2023-06-19T08:16:14+01:00 + 2023-06-19T11:04:02+01:00 + 2023-06-19T11:04:02+01:00 + 2023-06-19T11:04:02+01:00 - 256 - 172 + 176 + 256 JPEG - /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgArAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9F+ftH1bWvJWt6RpEwt9 UvrKaCznZ2jCSuhCkugLLv3AxV5Y/wCXv59Wk2mWGk+Y4LfRbVZYbp/rEhnkRrqeRXUSQyhT6bRc QD8A+CrAbqpXb6L/AM5KXOt6vpjanPbxQWlvFYai7RC2lZfqvrEOF5eowWbg4Qn4m58fhxVktz5H /MGXS9Thk/0rzK+r6RqC6ybt7SKe1tI4DJF+4XcK8Myei0fCsnqDfFXpWl3eqanZ6gL6xbTStzcW 1p+8q8sCHhHcdP3fPcgb+PfFXnflPyD5x0i28q2d1xa50zVZ7qTUFm9aSPTPqfovBczFYvXluJSp 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 2pyiVAdHXdo6mE+GMNxHq//Z proof:pdf uuid:65E6390686CF11DBA6E2D887CEACB407 xmp.did:53d0f07e-3f0a-3147-a46a-ae5b0dc8d9f3 - uuid:de51097c-382c-4fb4-bfdc-26858164ead7 + uuid:391542e6-30f4-4890-8c42-1c5b67c368bc uuid:27c6700f-edc2-4596-8c7e-6d5a89794448 xmp.did:14709273-42b8-4844-95f8-dd7dcca7f08e @@ -73,7 +73,7 @@ False 504.807339 - 337.678899 + 363.678899 Pixels @@ -626,29 +626,23 @@ -endstream endobj 3 0 obj <> endobj 5 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>>/Thumb 29 0 R/TrimBox[0.0 0.0 504.807 337.679]/Type/Page/PieceInfo<>>> endobj 26 0 obj <>stream -HWMoFWQF~ZVܠ1^tqTqa2%Z2b`I$| ߼0Ws.Uq1j~tnOw -Q>*PHA-calyM[qYn*.uqQUsfSp-I0ZU>b[]=Paz}o1W?֫קb->-.ީ}zu٫2,%a\)et?/9:E{!8(83r B懧UZ\˺4 -]vwf[ +!t u۽ hwGL4i{W]\ث+wr+}&ƗZSxHq9dwF~}O#X-wɱmA'^)S\~\u%#9 u54ok"AW=k xc:ۣDO{ntt-H1 -fz74/4zc8~kSR,fq{U̦L2=S#' -Zם2?FT7jEVWu8{^a%FcA LQ=#oFs&2JSANo?q50HDi\ X4~-b"c%ʷvIh:$o !~g bqeЂխVUxô1YyluU#:UZV-Y''Xyѽ;ToO2x `f8* ^|#"BHvJ [Q@$Όoq5(LOiT i03$o44X[/p@o1U!~gG8=c -#o E>7XwQưE. %baOEFq=eĩ).FVqkj_Dq tGUOq0{ k:ZG> 9LڷIT!oMȶ (UqOZ{`ǽRqOUqO7MNF@ܓc>stream -8;Yhs9+HRs&:KmfiDI26X*=itNNtHIV_c+2/S^EQBmaO`)T\BiUX\"I!tI_AC2IpM -06tW:\p^YtdEocq#C;cX<5D<\pGZ=0g[8J,b@2V>,!*lJq/^30nmf\B*W1J'!-)tN(s7DqOZ47DG:9tl-L -)!Q',&ckq]bGpK7(*PiFdI>PLDiW&jBAd\9bQ_NFnf=+72M- -O[75DhOZf5,-QZd[iO;n4aODfhU5u.=f)-'_K>4i1GK>IIdU@)G0@>&/ngd_Y5nX"=<":~> -endstream endobj 8 0 obj <> endobj 9 0 obj <> endobj 10 0 obj <>stream +endstream endobj 3 0 obj <> endobj 5 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>>/TrimBox[0.0 0.0 504.807 337.679]/Type/Page/PieceInfo<>>> endobj 25 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/Properties<>>>/TrimBox[0.0 0.0 504.807 363.679]/Type/Page/PieceInfo<>>> endobj 31 0 obj <>stream +HԗMoF{x;3uhFv{rzEQąvPCJLjIتxlH,ݙ=71Wk^LLu>frmlk'WɥϏ5! ޅdyYU +9z;]E\<tZ~B6:2D hwĽ1~vz:Kf9 ~Nzy\|;;1?l}x\>3p\?Gdv2ʠNߘM΀\BOo׻ۛzVbB\N 6mغD&mG8] !9~⬼y6 ^2gqd\@b6K òW}"LLBT6$擠 XW| fօV[!{!A/B5FC-Xϫ.r2=IMeEN/@."O=+K\"}o^Φ2s[".q:>9DG,oBIY]zu;KrJHIȇlW98+7k6)ϋ?1FJ^$8H!);r=BԯJ/('W!JĐd Mr+g&%s:ò# ]YM?]#g L]zu (r8wkWzdAÓ]-ҋ(0kC^v5˩0+M/:EDB)sjbb+Od< Ů҂9\+(͝_9njQ,vX &[ Wem@/0̥.{+VZe;@ޝ_mGW`ͪ"צb||潇\!$:|2Jl"MVlVGz"⑨cdR*Kxy-jj`w&c|s? +ͫ͞]}_-2ry6 ) 1=fQNy!%klՃVG@6#AOrϬt:#`LG RX +{̵(#'w*ᐷPW]z~m@9&cy[y5P̵L#,bb ƪ.q2 le<q/JΪq2)@C<8SgUVe3iG ѫG\2 u[? +qywrS[#UFFmyY5йi1޹xhjs&cs; +f@MxvmˣͪMέDjbk +endstream endobj 8 0 obj <> endobj 9 0 obj <> endobj 10 0 obj <>stream %!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 24.0 %%AI8_CreatorVersion: 27.6.1 %%For: (Ian Griffiths) () -%%Title: (Ch04-SelectMany-Marbles.ai) -%%CreationDate: 6/19/2023 8:16 AM +%%Title: (Ch06-Transformation-Marbles.ai) +%%CreationDate: 6/19/2023 11:04 AM %%Canvassize: 16383 -%%BoundingBox: 16 -321 478 -15 -%%HiResBoundingBox: 16.134253203335 -320.412844036699 477.690925701381 -15.64892578125 +%%BoundingBox: 16 -704 480 -15 +%%HiResBoundingBox: 16.134253203335 -703.045871559636 479.752527499077 -15.64892578125 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 14.0 %AI12_BuildNumber: 210 @@ -656,9 +650,9 @@ endstream endobj 8 0 obj < %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %%+ 0.172549024224281 0.196078434586525 0.7843137383461 (code keyword) -%AI3_Cropmarks: 0 -337.678899082567 504.807339449542 0 +%AI3_Cropmarks: 0 -727.311926605506 504.807339449542 -363.633027522936 %AI3_TemplateBox: 683.5 -384.5 683.5 -384.5 -%AI3_TileBox: -168.466320512286 -466.439455644799 673.393659959146 128.580502851295 +%AI3_TileBox: -168.466320512286 -843.072483167736 673.393659959146 -248.052524671642 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 6 @@ -668,9 +662,9 @@ endstream endobj 8 0 obj < %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI17_Begin_Content_if_version_gt:24 4 -%AI10_OpenToVie: -642.009174311924 43.7889908256893 1.00925925925926 0 7914.28440366973 8398.82568807339 4318 2607 18 1 0 89 170 0 0 0 1 1 0 1 1 0 0 +%AI10_OpenToVie: -116.880733944952 -313.366972477066 2.27083333333333 0 7857.02752293578 8402.8623853211 4318 2607 18 1 0 89 170 0 0 0 1 1 0 1 1 0 0 %AI17_Alternate_Content -%AI9_OpenToView: -642.009174311924 43.7889908256893 1.00925925925926 4318 2607 18 1 0 89 170 0 0 0 1 1 0 1 1 0 0 +%AI9_OpenToView: -116.880733944952 -313.366972477066 2.27083333333333 4318 2607 18 1 0 89 170 0 0 0 1 1 0 1 1 0 0 %AI17_End_Versioned_Content %AI5_OpenViewLayers: 7 %AI17_Begin_Content_if_version_gt:24 4 @@ -683,443 +677,473 @@ endstream endobj 8 0 obj < %%EndComments endstream endobj 11 0 obj <>stream -%AI24_ZStandard_Data(/X̊E / MkZp*\F'@L.EvwoV?g0cx񰍧p ׳h(E^>h4&. Epxz, "!~("i~a+EHy8G)GH -`|H ǂhH d5laV[j Zbq ;M/H3g VNTwPnigmNB2~R2R.>V&9@Z "7r(žFzx5Uu_EXBv-pcAp`CV$ qGne$dkٵrhJ6)ҪHѠr\@!shkaFetH2Nx"jj&BKCU*Z:JFF,LBbAH7>Qz< ǚ. qoxX88R՗ UBYq,=KJJ -TH9h\C_j!j}THHER7*3р4(븃p8 ?}x8!ABa@D(GHް){(E[b!ͽr"tBHQcB C@HD  A "ɇ"q,`d9tرx(-P$HL "y8W\(לUwu*d4+?o<3'NHiu>OΤk=:CAV$vCP!'.Eac2x5 ݂p<V$H n*[,Mp0*d䳼*"^W5 #H9qVVcT$jE HHώ7"Bo@Ƣ"qF:$^І:*bX>tn8;8.r]|X0cX@f@F23 p0 nTmp4 HqtCdw, Gp<==|c,1]@yP\v m(m~h(HR\h(rC`~P$A.")HaBQ$_0$Q)j<c>|== p8C0 q:ԑtEHp4EmhC5a kT j@`,g,C(#@1a 3Y8cX| ]yA wqy^ ulcn.muhCz]UM=5Bl$#LEriY餄 {ǸOήG15aOS$gfedz,3rC) )QCk1L޵"Ai< Q$rЃ1`NHT 쨬 H/P$߯fiab)<+ !8Iq /V|V$g+h0A Er:-hA_<3)(LE" CC (Lk^IiҜ?ͶvNIg׵MCA34R'mUDr|+0HƠVWi4%>ɛ,VWti+U8yHd;<\ -mE=f.Hi1wNuMb֘vmy¼.㏈n-2.;Q}n{Gy3|͒RͿժ뎪};X;\xScNRyexx-[{9IeJ{_MR7<[!Y}Rdu1cjB=c*_J4~f&%ɬZ|[޹;uV#רyyycxxKSH]2|>6dg5eyl]hTIo՜KogLOL#>Tzy_BϮMyj4;Mވ݆4{[mgN&%=m>җFSY{tdYv{ fn5ջFPk׉tgu 7Kso/Z;?ͤ2ο[ӼT[}l3-(s/'S_GG -w[%v^XiS,IlvSs,v;kfمd+[V3Z -kG5=y]ϤOfi8ƀ6&&L6V+JS{hmJ~ϺG+Uz#ho3g_Zަ7&euoD𦸃Gޅ%|U[卭'O1i*-}Zl0]^>ϨVbVs)vq6@/ElruNO:{܋Gi!rI;WMnVWkyUrU3S*diYQ%}]W$n]>SnEgu)^6^~ǻE'we9dKm.E4\5Hf׵23\ۡΩRe3k-\p|a>UK19hjU*3S3EB ]0.JE3ݱ%gi[bKVlfY9]eK8R]ſr-kb]nȐѪb,K*V&Q:en9K)bh9r#-ɗ%njϻSK5UKSYl?~4J#ڻvY<9RU9B"C;ov~&!)-m-]#*1-x;m|vxSbd[˝ڂ9ߥ,=:=K.$Ĥ +%AI24_ZStandard_Data(/X̊. / MkZp*\F'@L.EvwoV?g0cx񰍧w (E^>h4&. Epxz, "!~("i~a+EHy8G)GH +`|H ǂhH d5laV[j Zbq ;M/H3g VNTwPnigmNB2~R2R.ѾDXxh!gh5 / ȡHJCHRSTu~ c E6!Á }X,+9d])"ڐ3K"QGqER<υ=Wұ"h;v❛{eZ- JWh+*:T0 Q!q<oh#ݠF2G=p4kr ƽch8zJU_6T% igŶY`4b.Y(=T**2SRZj"$q -xQM"q"i8IިHRww, b8`0NGҠt8>x@! +9q@ EH "yHHma<7ˡ i #GEb] ų<EQ{"*U$xV$y4$ıP?aHrPC"15 h0_Ml,rHf-U$tRtJ:,T" "R$ MR\ZUL{=2^:_5TGF@&)#cʪX/T,ҊH"pP D$,<AbD)LU$"q<ȥHSW4ĦHx?lEX|I5W;)[Co d Q:H̸MER Hʊ y(Gc"Y=,-Ei8&C4_\=mَ։jXo +ú5Kz?!djk4XC%ʍ>Tg7":lW-o4T|Գ*ɦ\ O+7ѵHzj^;:ZPA4KڼZ}Փnm=TV.o!,Yp$( +%-YT"áHⱸGH `4 Ee(# 8PBxAi/"a(JHG6D/! ^"y3޸CN /ja["cX8dHaF1q d$C8c`0 0F5q  Gр4@G:ԡHqp4qÏzȇ>AC +! i@5eІ"ц");L/*A."!>  Ex@(.Ex@ə"ƃX<CG>q{أ~x8h8 ñp,wC@9Q4 GX4؆6 l\ְF5ܠ`8 Ƃq22 d0cX0E.pq [qg|u_!X6zi!P6tUSS+)$!F2rT$NJ:Ё \q1а9q|tsX4ErfVF0c 1Ґ<h0ʤH^x]k*4:3E =pA KKIJIDɎbQ Ejmm&"r +b~bC4bgEr!P$ӂEJ3")"`,P$Ll0AALP0B!   ăB"(D" + <,HDPx +D B PA 8 + +L<(@ +EPx(4  bPP$  D "" 6yPu B"Ypphax0@Pu A!21a!`B!!" L(HLxh 1AE!B"aAHD$B!d0A% ! 4`PPش"X! 2]6`xDDL`Pt0,h P$$"P84HHD& (D $"$D ,DL(D 84LH(d !0qppD"<&0884LP LDD4P@ ".a"hР!r " @DLx(lD8A!_"$"6pS$P$LT"  ( +0D h<Ă΋NTigK)V:151u/%J?3dVy-{~-ܝ:k켼|]1<ڥWݎWIsn>O[mx2^䚲<.4B|$ojΥI͋Nfvx/gצ<5fhd㝈cw&oDnC63'oᒞ6hN =:,;^꽅?W37ox{i#e(ڵD7͗K-}nꝟfPk-ui^>vvwE[{GS_ùSÓyϣh孒Tsg4}v\6okyk捕.{)5:of:7iLzڬYo +w, 7xRQ}iZ±ݰ֦ux˥zjEMMyQMgx֭S9﫥q9z46Wnld;xs'G8u~Jµj:UFRT[Hz7jgmKs; /j\U)IBFٹ|kWϝ5L4u.$^e߲VXs=YσZU|&}2 OS1DDݴѭ04ef^fV,ޣGkWg|m.Yki# ZAS:W):o肇YuQ*şs/y=[]w.Or3]2g3 ʩywۡu)Ǫ,5*HX2;?eϳ؄wL)rՂtWw]T\_jR[ i^QSz\٠}Dge4i`Q֮u*Z^H"XaA!B=:a2nP$~0 E`C,V8H E" Ln2ѢݥM>2'L7ǦCuJc=+J]_TD滚ϱC !m;:WEuWO iPX9-h7C#% 23scjQ 7z,N< EHLOi9tx^9a-+JO]=nHw8̟M^-]F6eM;f,y͹i3k lFT># fK}[y,*^)y3=;$够sY,YuCXJq:wE+{gMz7JdJT:kܕT4"+󯜝t-褛%Rtsiz3Zs -펮wg|/Է,7pim5y/zg+|iB,ګ)֍(}EJ5ƢkخŲ]= vJS\ݩ,fJM]MiJdzbE$ۜ5U2"Sv̜8fXw88u;[Jh+\[fr簎[ǣ__H\"+s'؈&59+뻜O3`*B+o'm~W"3uQV32Ѥi7*:^U,o[us7V bj朖}=h.˵-hRf{jcY*klrvi?Ϛ=v+eI'Y 淆Uym~7tjjUoJ˯&Zh;%!>i-?"5hsDO"ukƖj3O1wҷ樵r6T IczR=&NuOSD,ҩi*v,QΊ -s"2ՙ Z~2={ǜKTs% m 5Үx%N-O/TdӴg)Ls9tiGc8{S[%Co0ֆ=1]Oxv4; jjӺުMmxsHݛ}rEt/N)ab1`^)vJR|m,?F!j]=FWNz񫗃 T7+=-NV޸=eZU3Lb8 -6dvVrndXMo =ߵ,Md+3T9{z*V<:t/t՛d^.^-Es5D:-k4pīykƫM㢗n kl6_ΚR+j:-OW/O{qʊ.Ou5;=潩*jhe(ucX Fmc+VkjWXeX{X_avϜ_-9h㬲nyKEsZMl*um~dgI&uieZ-8]wJ3᠋\[Ulsn!;=-wDwUfJm1&:_j|G{O O]5Pf5Kl}SkԵv vl\xw.ܤʚ]EjjiCɪ;ZwjtfGSVuZW{ymBCQ*VkM:H ek&bYqRZޫK4kJwB߭fKSixÝw趶6k>y|r}˓wAS<ڜ: heFJRa>QɌFOks")XvwEvfRҖZx8Ȁ:{֤ˮZ͇.1fzlm~˚ڙ!b:3#]׼V UT-re{^z^~4|[ULh7W&ڹZhxG{ךfYXL'>x3<5!yx*a]+t=O{:KK5Wk)OK.}ub͝ nQw6wNZrBnyˌWE^1e撫J楗eRb)O7u' +" D&"D @8):O֝½}ʻ)ri:J8ƴ+f]:u^ϦHG̲1dIԋ ]Ud^U]U[5^:jie6vUCsƶ +󈥣湖ܵ#۝:6fNn)~ kn֭A-KzJ k1ЃZ24^zihƚUï*Yv0j"" @xx<0 ,x9yZ76ࢍ.k=4GQ!':JG7.>hVU EK;&ܤVuo),ow-K-ي n^Cģ]|cW̠#J簎=y a躭ڜWYzl~֊rM +,kϰK9^%wUV6U#2-o]hN˾IM%ѰՏlV4R٤.LnTi3tޜkj{#m0dwt<]jUM#τVK͗OhO=)ᩋ& +׬\imojn3NwŀT]YsTHM-my6YuG+Yά4HqʪNw/]t9Jx[lw31Kf^%]Q>\wB߭fKSixÝw趶6k>y|r}˓wAS<ڜ: heFJRa>QɌFOks")XvwEvfRҖZx8Ȁ:{֤ˮZ͇.1fzlm~˚ڙ!b:3#]׼V UT-re{^z^~4|[ULh7W&ڹZhxG{ךfYXL'>x3<5!yx*a]+t=O{:KK5Wk)OK.}ub͝ nQw6wNZrBnyˌWE^1e撫J楗eRb)O7u' pVS+m --6Kcu_aa:URx5~F2"KzJ{%++ɈV*/;|Vh4Z܊SSoecVN<}suWע̼_r2Ҳ"U~N3Utphqj됖Ȏ֦쐶tC{jsg4Uxo:ɛ7u͜ZS\C|ir_VwKuTKi4W%M QVf/yʼ.Lf]ml͕hN\=>+-Kʹ5=s)ȥ.UQ=@4L,L@@@A1QBL0`@Z%[ijrAw?šTE*Y݋ƪ0?mZӮʌwcIL*|~m攺YI{HuK7Hj. -T{He:UgS{哔a3󞨦Lb&n)/5U ͋XhS<2ZE[]n{+Ss+tguiGUswU?EQQ^pmIe!eb*RNbY6y!VvҊOiESs/4ór2D;+6&XFۤ+td&ά ov7-~semd&$"+Mﱭߕj*IrL|Mԫ1m␫,_UF%_v/J֮C5r4}kXs+vTxUUS]S gIrΊʨsVI>. )fw73$Rb)#5bըPSLTϾi^r=4dDdHWKWbٮq):;i\5XgEuc+{clQ'&ZV^\srZ -HVݿ|+i߳Ѫطx+JV6ձ1ˤ7%4I<&>D%Uqs4r,+ki-f!^pR/OwwֳiVΗ4YYisZwi3e[SVUODnPrufΩ+ILXpV=××"<nWOU+noK3< -^gwPg[WVXs2Ҕix^CJګ-%o%.-7MOЬh[XE m ͖fjͫ:\a֜0* Ku<;,؋ge/i4,UQ跗G۵nGjj̤r:ޭ6[mhRdcZnGJmnw2-Hd*`U]9:ݱ*s[걪*ޙJ|6M!zRW3SStDx?{jw$ʩ*#2M2]x6X"K˩^?wfGzG74o)M}ZXW>Py}Qii<} 69]N4īߝtϗ UgʳY;QY͸zWT%Eu:Rs7FFg$}Ϳ[қ|_Lf"ݲYE3L}6fH}޴:d. YN^4VT{VuIWYwy& WڵkM5L^6zjLWQY_ln[J4gku:[tetuHz[T袪Iy3/-}{zF7xzVd8h?+j]felR9uZ*TVjIjf'=:|Gk-e6ǚJ\:J%]lGZz4;w.˺Z岠JCpT9;Z+U'- -x+o,Yt:RZ1WCu3'&Ovy*R|]kҜU ϴtnuV[W]ݮgIuS(շZYeVѐE-󐕲\̵̤گ6[jdl>/DLOc )P#08< AP~B\@9GrNdCZ93sq3zo7$NԾGQXzIlS4qd.PbWEA+j sufyRxx⺧ -ޠi#&/zGTN(4rd95v!npa4iIz242U?enH#&vnQ^K!Vi.ilޝ,>LT]Z\TVfB/8<$k`S}cuT1KqGp -:ێqLJ>Vlwj:Q$eX*$.Y!k'^1ګ5'~ M-ww0z1Itذ}wv]k{KP21`qDՇ"T6_+(w?A˛,jm*pI&[ݪ)1d7l=`G- @h@NJL#0*B4yp+rrGY7fyƚ@ D1?9سblp -¤^~CxBGgP!c35j}nŸO5D1[M,9/KO9 -M'=2Qf|f 1zif2$"&9? y9c09 EPQ}USK▴@ ܮf߀,]!+2/\mSqaEz 2(u⡞#8J-Ōq;FjAK1JTwW5 I88]+VL- -sRڳFIH5i% gZJA[ 9]V` c ܃mLpT맡Oe5 HVZ4Y@LaZ(-%cfm:}PI&p,txfj(]5G'|n7&f0 W]"m/Ric_-6rU!y aNOCS.q =g 6򍩔bZ^l:n]M[(^iErY=OmSRS/׈2BڳJq؃Eo(EljʌC ܸ{9条[}>F5Q˼BpAL.tuh" "73mLa pv9SD]VjWQD HA"y)5m"5H=KھrB[J$%7 "j^آP3I]&!I>lOh&_ -50>d=-L?+dIe 1T/> ^<_PdfVn#yg@4&|g6O1]UeY&PcU9G!ajCA,_ --x- }x!Zo*x -+'u -gHRqV*}͹QCoDH ~-MWf| {II;-'{4Ztڳ_R [+U=OyaWAQ팛0QK -&r~:F=;A -PL8 봬Ia'BEC"|/EڛML?"{V|7W_A 0n͙ U'z'(bM`M`V>mB{)&pDx[LH699ujBqD#>٭O`  -@Jވ39F?*m#Ja.zȒ7 ,$Le%fPVj\k1b-,*{V*dBAC.  6'U~AL -q| f]d൛iӛ>4ӂ=@ &`@I3_P|'òI5H[rѭ2򲠈9Vu6!مluw`TtGƒuHIPEPW?UI#ݜnZ|RE\`u=S\ OgE43 OoHdw[/E^ Sz HL6P58g:N JdJF}~8v5Ts&:G(G3 $U0? |ۧP5<pd{JiI8DY'݃ l[Rav/=f¾p2\~4 q?Q[VxX ;tEqi}(sbZD΂z3`䬄{SN ~]GYbC!ʎaqz lp:oN2 - &iA(&GxI&WU,^rؾ$@-#`$=wD~]:.gX~nUݑ݋@$o`c$eDp׷o ˷%u> II" -ȮQw_} iՅ٦QO)y.Q2z`ll&>p`y* zz6Yx>͛?u"rXjFA?99H(`h%c߶OُKP`qRGv]2kH@ ut0HX,Whf]8[sQOQ"<+,zƖ!^Ap,{pP@E74W Y@ᛛl;%0-YI'WQUn6h$Yt$Vǯ86}!s@pbי ]lEQ牥ؙ'*s=`>?Bg٦:;ȴZLl]#lUKr# H36zUJ~x} 'Ldjp/n`Ng$m)]1E?ag+(~QovWɘuT9^SI5j (:͉jH` -K"zQ:DsB qa#}_#ԽA1ӸIۑ:WPɍe8]tԚtO0S*Ԥ^w -@쒪)c*le(K-Lm>ܹ("Y:~y ԐP 2Ȟdq0>5ΩW=,AК2 Si?)ٺe|NkE:oW”^?\wKUpXJkFYO&B1X <oqS6`Oޭ=+ oF%QIQSQ0JR\,Va6(ʥoڧ6#%iBt) 3HBQc`ա 9|Z/P's[/4}CPՒY%YW9l: b9u: u1B,&!5[`R DY -j -bt.L"pT$妒>45 -ќSj|x>(CI(lp횶]leg_81GUܭ0JSrT^sm*(8xy@LRω yܻ0ۀMcc-/`U5WN]kp0si`bM.8f՗ѨL eD,INJ8 -㑯RƗR;GM*y$G^X|iC/G&[\DwJCE +mKBD9L weH6__ 3Ztgʲ ? F2ޚFd<:NO<1_i~(hHѺ=«+OEF29؏YJrؙwjFƄ JmZ JܛD1ZD#[0ԟ< ;kS!c^74Fz/*fPLOrhzX@'7hJjĥRqh詇Hs&FaIS%bcjr83W4I@^ '0OEjQiS+ f)k[rr$Ӌ)!ȏvDZM+X2gr:}Q&(Q࠭(E*)dؒ D'aM8+D4v>Ny&&WkkRZ\IѠ"%ڧ0N|iai4#J59joHEGx2K IOSN'F(4 yA a2ܼ[X#\ie3f1mR}-)RD"N蛈@UX#[)Sn'm+> R$@.hwn'د4zFMp< kv4&`(İTE -@)i̪TLqQY.AAIɠM4z`9Z |.\M)¥p<@Bt}^725?bZՕ<rrJK/@s -2jeJyq\C(lX !g=4e+넥&KaiBu4897qQQlNC,XjdǰE^&FNc -i[Y+;4DϴET̒e{.ff -#ɍ;Mn;T0 +w Rh3슠h5rNb>PؓLswpC8*]J{Y^سGw -O -uοx@AV;n{4\ZxAiӟ7x Yʈ9}KNWgw(&u[}䀶XǹE A.\]ڜ$EWؗã_E+#P"ͤC"lҙK.!Cga5Ӗr@sƔ1Ц$8 qE,Ž]2Brb!佂N56uHSby° -.F6stѷ1!^X$'8>0Ek_h=04du{!r/6 LAsEڦn>4b{bjl=KigGwr6`QMPwSUz]m 7d3'D,x% g kE%L[y<)8ޒ_DbA ^]A!DTo~z"t-TEhm33䳦YK|*B`z2Qnc\6Uz[co탚ifUլ/0;ʣC>%d_GV f%j*/?MH9B1=?Ș^@&\'طDU~W8{2Tzmm]P$%-f8[ą$Q$' q;pPCBmAՑ |'l\A'|؅eb=}a<4@Gb -3aTsl&tlQddHݪEV'@Uf K{e3E<Iw20랡N+x-ȮvJ ?~KdA*s*UJ5v\f&z*?,D|S ӦIJ:&QN O]c'Tb+ g"i\'n@J!rdvΩp}t-6*A+.#(O7CUǞ'r }3kt.X 8WH[^&h>\7 - ;Q:r*L"v7V -A -Ff^ ˘1=^38үfO1h } h1'%/D){>NDb^5e4%\F\[S%(A,OE |vQ $4o,*')Mb B2V4eJIN$D:*!ښ2]οFƞg;65 / TKP5YZaօ -YExtN1K-_ɵcڣuid -jugi3?p3STaxQ"=gޠ,Ga5Z?֛7+.u|kؿۃC>9n+L;ixi_r$ -`Μ4h"9CRz2F KGOG8?@ZWgU -c@CVsx}O"q}))KP3(w6S[U9Ud1(z"W[Н:[rZI8(&sT U85ъm)Ju[X\+CED[@*=UqMNT༫ {8<"*{pr9 7Kwݞ&D\oM + Ƕ6 OI*-#&D8I(+P[s+=eK ZdI-PxR6io$l3olISUpt#tIu?"x?(|Ge=~THAݡH9Pڐ^A[@U-VT|˲0w%jx';/( -o>RTǣYqD/`¥ .d w7O78`6_CD1P\z@ -T:1 -Ci?zrE]˅ DŽw&M̿=M߇òJZ4=DT:F 伲##$`&cČʼH-6d NjZ&-#!QD: -rXv5B 1}! SXQQ*T$ByoW=IT$l&'}p6'׭#pTNU V*1Se@)Ǝ;5Y*oNQO A22eAxm Gr:/iUG*? hBg8Cs֧ℷT _$,rzߪ방&sqN3EU-_W>1{fɉE187:0@7K$jNL=mcU. -=V3)H! -ݥ&v: 6~e47n ~cjWuUha _4MP}@X";2-I#lNR6 ,xn HҔ)dJ;,/Qтi`bQAz%KU]9N6?orJTR'/0PGe]]] -EYA 8N O`ZWM'FePE<Q89R4@ E)su$(mna@J(fQ/ {X0]K]rS)pVh}h(Y -5I*(ޣ{B[u|4}Q(P!O -f`.t ORXXUEfݡT)Kjn$n2n]PP$MM+TM.j`QU5C1!i5!I gN>zNE=t$QJ숭tt>8}#qJø6BPgp D#e+3:ِhF/:.r8\[#ǢGJأ"uDi_qUD"<8CX/hÝ:9zI:PyNfs EX!.v3a @ -2Nr Lޒ[:":p$ *&G詓mC$o%@*r6TEP>_a(&_ꐍyL=zq4T4`S857%5YٗGdI7 G9p<3շ]}/m9>>m0 cɵyL,)\9(U?C$= -E@SA+ hHC,ZU]EJX'2.2c0jK@2R&D^@ga[GA͗Au'evu٤,g0?J`W8?M5Reޘ4n"KXIp#9 H~J0/- -e*!@90wfi%=QJU5~c  -ol 8ց*bD^Flkg(B EzTiC>.S{,z+a])Y -™|Go8rt8s eG֙낝FCVij8'2k*9V4/shs+$5/vZM[ņMJہ3R]3.;"'s} B)}Åze}"jt^PiN^1h.Q^iZV :|P+\4s@H{ ix åYq0RgSXZ [ʐ -/s'ohްGlW -;!b`b["߻4R`k -]4jy@QD*;ri9w3b:wGL8~(9!\:w-z -A^JA`q*I棧")C&\‘n$c@x@w څP S @@'?('z+G -n4.W)o$ IjpXdT;P7DPw8P}˷O:id_z,KH:gªqY~{.dңkv -&] 쌥/t" -*xLżÌIVP;~W.*CGlԜ!"uA^ϣ[s|mn'$Rγ |3<˫Ba!dMNNOl`KT7nI]pS4 -~-~#eict罍(oϬX 1]M -4d =h 6㣆,reبNYSOY,8{w \PG>ɲ+Vx}V;#/ dXՑJT)+Tn {/3Kuԍ5 xR[F@ w%db x>{v% yV" -[I 7.[O-,<īqI06USuuѬ5s;Of!R2FQQVXk)śT趹,x,_8w"r2q+J+AGVZ ܗ ?C"JF::8w'&}9HzE!Fs >(&M>K#&95epюJt%RfW iڼWQTAfp [:f(@F@$qЇg5QGB[uuT)jgCsPcD}/ -^ap+8C r>mHW9W;$>C "M y #{_X˯o9U8bwT%q_yr#Up[B2z8!W"bЂ]ÿ5 b|*N/{u-nXA -tǤʷii= ubHN5j\cJB>r4qCAeFͷ/T+u| q@u grV<1BgvQӱ+L_~G:rջY};$Xت= -Art[g"^ HU0kdFDܫSx>}w/vR.@SWR)a?n-J -.w["^KWsf/()zggW?kwf=q('êrQn`LrVN5Mdt~ULm˙*!l2+bl=0)fqovD{2t%T×#!(M(IeKZa#3/RHHR& -,0SY)j+2[o NX-3)@Ex0+ mGg$:1lR+X7 -G˯a;`dUEEM]H=AbM`gu$P]ĥ ;l+Qe{►8d`nC)ª8qԽg[^: Ģ/b 4my:PׯyߥpNa`HNPod R-_x!_mr9T"+2 PI®o'ģ 2hణ`]j`i|qo 񢡡(!^ZMKIL@_⧶Byw4BL#:#Wf~As8Ǚ Gw(v + Il -wyWQKb&JKAG.:H$\QJV9J3G`5?=~ɄpQ?‰:X>eV/"Dy8GPv1^5ѱ=p_(.c3ZҢ$v Vy '" -Lm0QW?u*~XI;GM^[vP=U(߿BDtFNVBG%?8CRRBwaX]lG CT\^}ǠgҪtj -*G'cQ4WGI_'CO$aHD;2b4⏟1rg2xuG,X[J1SH=cYY͂0>0 0>A)ETi2 -P+գ礠ѭJ00ch|L9tkLr- I9yNDVzObjX|n'kH< 4З &5ʨv2 Yx?}ًS1ʛIVlsaS1cR1mxѢe RWCY= -p>ĕ:uQݶ:@@i_d3` HLezz۳6t$#v (@E.9ᨚ)-0$_T泙~ j~ƀn2[?tiLx*$cIÂ)+/OD~,a(I>ÀQ~}rGoQSp1nDk)CnB\B3seNxU^5M8Vg;`VSىdSqi(GFOZo6sYd[fZGȭ_g!FX݃*3lop9Zi2~mxA?w2411-I> .$sy.a<;1ۣ -\i.҅UgOh0[r i;QV(v$d"Ħ8Lz$3sX.%2o쏣}l~%S Åz)ُ?g}=Z9sr !㼰uL_y-pm+~F`IPf*ڷE77ɷBX-.;BTXtO>uB>X@4r=[(d%F-v l]͝j/U7::'UXZrMꨎH`Ֆϒ?#{ڧ &$@WpnPE0iry?[OFn$فi4=Mo_%~`I:-k8 -Ë1 0f a}z([dpg{@nnW8\[SZ&fTA`1coMjyRƵ4%"/ /=]}>|6֤J(*`X:_ެB?:YInЍτ?-6V66טG)-d7M m~ИevYQ;#g աdފ&ܨXc-|bAeDtCoač>@z]`A0ų8ۡ)cpٕS"^_9_^_2x/KF;eTzG:U1–4 @ȟ,eܣ@T;qtt֠ :? 3q?Um֝_+JFx_ 9$!t8aW2hl(IҰٗK6"_9Mb+?&P `dZvJDVlQp+E mU/K49/9S1J[r\6Ѭ}Fk֚C"E!O9xSۙc{Rۡ+ܜ8d]m'%fcq\W- ЎdPUfQ>{aJ^Z K`!O޷WtP=%-"S -ߡslTL(תg@jTP~HD]HEߘ-)vs‰+#; lokΚW{lZyJ w^^]w}<)H\ɴX ODBWjN$3bD`ζ -u-2x)8+ K> - :=;C+g+j˝ -LvEwD;n(.7G[A2){k! `Vm";#4SJK PD@Ksz%N 5YrBTYu=pT,[dJ٤K•_*Sؤ*;Ȣ!*<æKU`ިjUD=< HCGXjJh}o;ed?\!^kzus*rԄdK6vvcd4SC1s>ѓ>#Rp:DW!\NɵgU48n܆_"xcY%2 P*d+Z;ń:ʄZOI}WxU"Hk-_ -ݰŗi[% -}wb^qL@G=$iInHq.OhR"ːtuٺiOB7_C]ܧvUuZ@қKN}Lvٷt_QJu-vw N7VWHm _܌e=!/9NlA2?fXyk6ދȁUC -t& f wi~m w_珔e !ylB{5nZ}vN|yiu""DD䮬3C {̈cKw_ Elj V3a+Tm϶_=8S72>@Y79/6TMV'2d"Fc -,tII؏L]U#{ Z%`V]>Du|6 @,paئvQ}3JcLFLWݡ!!F;aZ -ÚM+;f9,-.>TL65^UwtjY!^VlSCY_x1—EkV߆N=ls %>.؟nm32LZUW{}d.Ǣz:G`ZφD1<RAU H#aM%M!F[GI,Ӿ/L~y$f> vٛN|h(JZ^3ů&MYU҆cږ=ɖ ;y.xu.GnZhʳd/vOzAb{JW|5mh3 >[ cƷh_Ñ2Oj:Wئ:/*6NffC,2޻OY$?5;f6g4,Ze/D_9Yb \]gR|5-^~xieA_!2ߥ`/֯_xHsL냶χF`go'lr}lvma8ȗ~jd2( -㍢݂a~xo*z(N>}>Zc6#{w Ad:6ۧ79maL tGf䩁7߅[߁pMN59g=S<1j2ҾL:-n*ynWxj3+$ v#mĂXPI7C!KL|2,xY5c <6,JɊUX "pfYiݎr@j^ nLL >`/סՂ8-ebsnCPtO (4VUmZ_+ fn@N1n\4eb8SX2i<-"BIxF"qP!3kQ/}ӶSL_jހFAG0ݍX>#]}aHzyX7mA aC6|7U N=,pUtr7@05Tk)_;#3 dK c^@?TsщIyL=Vͨ U4y>h7P9? !iy۴k]2D0a_~! -+1XuVXkS.k ]AOAS-":sSINv(\8B~uÂ"0*EWXo6^\eↇ҈z9ZR5a| -۱ -J ?>Z!_ǧZmP* ϝv ̈́'pO `.ͦrݿWuu^-Af4v]Q:p_[ V;hV @fCq+%sI<:[rw-TEU"Dn,id9b~#$5b$ZIυwO)5LTJ0lTΡW>^)6(x%o?|]UIkσ]Ph[AKsL] &vEY?S ^-ޯIo[7bT`?mh6"Q z7@B8rnXvHEG耞 ^6+O=Ӱ'4ęVK!;aBv}~L", 5ăDXI} 1&A /ЙzeWJ,,jshE[O1@[ -ОԨ|! %|%w%iJ$%pd ia*H,[z+!2 $H8YònFSXd j!2d[]L Bև;ئ=Д0Xq0SY%a|Yq<:OP6E`Va$/5K pJ8Jw~~/=~(/%) $<D{/T7J%IhȰdinH8Xq'ɡ`o+"sZ+E g+Ϋwt+F|uZỽya~B+ߗGd Jjv1]Ht#c{;tb.$)F ^5b7wƙ'/m X{P)Iב!a1Le$jeVQޜ>kĎKtOZF4B 'M"0M> gO&ҎI)a`fdv>X" JO%J;% %ONb$ -IH\#as=$+'>"#v߅sd6P;/ύxB>m%X鍙 -d&zU2 ,o c<"Ԅ> ŃT@&SD_ocҖ-3w Yi%/zݠ\qTb*\*Mjw + S"Жӳ0&Q#ڇC49ך|v.QvȆ38V`í0.'$'0ЯLm)oDŵW9+n) wK||]45xs -ÃmaZp%cvT~PR;(!;*<Ƙΰ+T-S쒸;b~mQ3n9޴ܴҥ*Ӹ$MrDЀBf^R%%8 VbĿ2Po:97AaI %ִݥu?.a1 7FŌ3.ƒ+. rpy"ۥaĸU,ˆ\Z0\a,W8j\Nݷ _ګ{Lo[o6u*>^t%kz_"WcvE7V8;Wi+^cF[ge#?OcXϳid -a5QӺSFԘ;<[:ITiKϬ]іe|6AV~\]]T2R҈,,0/y ?U-]~2ɭ/ccv1\FIq+8\bYUL,,bZi|8֌ +y}ΨCOAc{hx՜cxHdu`R}1E6әE~F8H۝V9͘ {_.j;sC'|y"coMn0NGa("ToF!SƢbkgpQ%F#oA)űɭ50~*Sզ>Rp s@ ~iIЯgѸS>-_ *tLZ}|2i˳MR˒OttA4ɽ(ʮR+oLET@*r{Yٸy5>I:1(ֽ`8N,J[R9~%~_AbPiǹ gGe|g')>tҟAu!Q}@nF5S-/!yFs]=7{t%b~K\j)؅ාc,"]C}9K|eB젣>I7贜VWV4fܽ#j&4y@+U@bHSw6&L~Z -qh^%~ _\bCܭG칬 ޾XIYM`}>Cu aDb6#S/Č+8&f)E 4؀Vzp(_ĚCvI3-My|_X?ȟ~e`majj,';O@HL4bs?u^aEϟ_s(v}?VpIB=N v'q;6RʔLGW -"gX/}KH~* -24dǟɒ*(:cTI♊.L191NP[+^;Wy;WgJ lF#nX*Wxhu/d^நQfmha1+6Lpb"I"oƐ blR Y޷+Q#QKq Ea(.'bn^Q؞o30qFffzJ22U4L[?1lyjvL=FoT%$ptiF#1E5l1rrHA}z*)H(b)T "b! -BV2X"/+\ VMMmb5QE}IWPkelLEF7'PbO" 7 Ɍ -L6G.T^KV -$NހCY҄P(b Ӥ&  NTGJ+ IHBB C - -0P$1=Ae !-c3N 6BpB;bF"cxxp R E"+BBx:LXŠЪ[ڡ졮۶`_`˂N4hh&괳ڣ= -}=@0S@i98D яC!Vʇ7RCM݁LCYN "58eTQ@e«&pVI_(܉)#,&TZ*CcBUts&kRD)T T‰>$Vv&J^j:0МBMC4Լj"4fjA\KuY&m  +P-4CMH(zsXgSa(T -%e+BM8p -@gjQp(V3ڼ07Kp7D㢑q9Ιxx$xF7TC03~o+s $ċ=ǞI@sa ?Mɝ3; icͣdfMU%D4燈ZA,*j~  U|ȋ>_$y7ñZ454IC7Q].hbCvT%jb^:1F"SM-i jՔbm&HM5F HeNp2C3B/bSY,tpԥ#2"q$d#G&e4ʼn@~njDƍƿ/WeUErP^eWg#TĈ16yh+^Z[K+|+".FhE)LfiHfk4W]e9TӭáũCZ";ZCҵΝ%T⥿$oV7sjMqsri9DeqU)m! ʿ; }Z]-%RZz.\453,FYyM+z31w}E4Wb9qnƊZ{Tz.5ӆc(wɦ8ihǺC[{Ͳb{hi&έZmKcXIrON4-*E?Oߩ]UL弖hwFcK+}>;}?=>zR"21ڍg][;$׎4o\r}|U[νy»Ά7̳Ќ.MGjsWz_]y hv4SYʺi2BNO:;~%UnZ^کݙcufi[v>,)7W_.{ͺ-]uΨqndmODڱCvdB-G)-YN+uk6zЦ4C#4줯=fXV;ivWfɲ3;;&mU{}c-y\Ɇ2?ҝ*үEs=MU%ReЋLv/5~NW.+i%-*TS\:$u6+ՕjZw-w|7zL4˦Y*}AK]bݸ:8<{wnjlKkt_tR})yw]-(lun_tN2yvYOk9ͧvO\J>=r)KU}Tx0a`@P"<4DLTP"0 P-kVVZjݏ&U~vV-LƪnV2Xixi +_)D[9nVR {B!R-mՙTC$e̼'i1zxiKMnb 5Z!yuіu"-]}ݣ*ڍ((J8D221)'EJ<\vx;iŧӢXXzY9b杕Lo{,mk2 KgV7[ۖm?fx2C{X our] +p_Feq 𕦃J5hz[9CIUiԘ6qU/*GV{d~PbMTwTZkסW[}GU5T;[*bYUtߪ)Y鮩itVx9gEeT9$LX}wn )ґjn)]&*[g4 + +Yw2"2ӫ%ݍtvl׸T~K4,ųC䱕=DZE{ݨIW+Ks.]9W9rTgCucFjs]K̴v{hUl[Rm<%+xMX܂eқ Syd^I[Ihyɸ9RR`Q\j3K8;W4+KZ,X紹C;|⏴|)+ꪧU"K7{9:\3ԕ_&rDSxjZxuK KiTuy7+]ͪn77%rkni +ws~/ +wVZ٭+Zt+,RܹmpibWV/!و[IX\AuMK 7K}G#,J)%ӦԔ~j=4jlb*=yuzKey6Cje31펙ZR̒gWQ;^1W!+\$3=k4뢎Lֲtű4/g7ӋfNk%nJ[yhzLKnW4¢S)MJ6SC&buitZYֲ]^sItC=bXgzv󛦧wkhEܭAXfK3RgJUO^R.Z0KkΈeg:k kgrvZϳŲ_nܪo裋ZVIkzfڎiZMwpV^^skL~U[v?1-eyy;VC${sXvC9w_V]i-XnLI>ަOUthCZ:MZS"nyڽL;T&u _kd,O%wT};T_#=ͣb&>-JU+MϼRШt4Wz4i_Z.jV]UaN:ˆG3٬|f\+SI:Dz)鹃##R[3Vk>Sq -M/TsM3nt,"LfvslEL W3m>BoH}JMR}'/m^B=TCۺ- eGF;}vH>4\aSvw":Q&ݵ\zgY!7_u/Mnј`6 Mӻ;_~B19I:,پ;Pk{/;P2`OBQ +/X;LӞ?='d\LSI&[ժKih}`g- hB\O#T]|W}aH<+U89Y3Kyf1 D1?Ycldp +$ +^F?p?Ax١P!O35jh}8ò_|w "-x^\诉%Xulu܄&'ۓ]2Qj|f 1{pf 2umaxHA0_o9 wh(|ؾJ[KbPq@_To,`I/[m.mS a¢~J:}š\|q;&m1;vJ%/zͫE$M.ܪ(b&N sRj$5x#-Bϵ|ZX%J`5ڬZ&"Gݘ`OFR $)ʮk@uXiȑ-3 ¬PZK`% "<!Q/ ,j?tULVY2%{0)SWP*,GkpN7"ͦ`گ,mO+1¥m`_m +mBT˜𗶇":]!zvm ŴtF 15:YQxk6ga& }4<Ȩδp:twļ',3˪͏6>;P#*91spn=7A6 +<+MbgY_҄@ىhdZ֍/st=/x7^yd}f6D  }}o+SREXCquT%C*p@dlڼ6&}2'*_G)+e1hY*T9jl,,]PB}GR`GXIھvCh<Ga!ծz . (Cr恭PRk:}1Sdzm蜢Bc1b6駧 +.O6nzX;:>)FKG6IMä1Cj>z杒BFioj+"<ڑ EC]lzHrL^f\z? %gL15;u >/WU^+ x+|Epf$Jۇocv"ڀ)"إ!NOVR_?R&)#/bǚШVy{,׶q] l$,KեBMJ}OJ t=|y<*T94EA c10}ү%][1P&p0 +;1#|>yT!URm@Ve S +iBlh@OkiQ{ qDܹ V+mPx v| I*DGTq7熚<"3E"hsވz4O){)v$pIޑ@88R!@l9QaPsl䅙j!|RG7iG#,U/ 5u<]h0?A!20̩W .p oCOT 2= ,M1"7lu8S6RT`B .O,'%Q*3#|$b$6)S@Ļ9v'`nqƑd۟sH:ge_͞¬dA9oʵ&f/̟f08Ԩs 2|pBkTS2BYV?90Tf̟1H2)$≮$k7}9ޱ7?9jAmpi@PL+M9P^@-Nekd淎[39VuFY:R߮wi}#Όۢ{_8CzOq35'9Űf}[8>S$ZύUhDDžV4`Iw~9;aPW"z))ʴi+0sV OIYs7gܨƁ .yGYo99܃ L +g)y73s)p>Gi.^dIk|'=W 2疥Ob:&,XE삦)PHOBz)3Ԝ-$"""Zy +P4;Qڄr1Fs+!=d^CmO@_rN,qu51L :Gxҙ8'nBRFx4dyR6R*?jP_(Q <碝D1PcB!xCe{mÍr;RL`v!FP@a7{X̑mV;n),%5- ~cllHrQd$h*n"HvZea"|PTJ(\/p6E>]%pHDF~rxީvoOOau@#ȡş<ˇ?JX?%1i"ub9Bt$(08#j~µz{*"]ɋ2]+ VDfn`w7%u~]QyB)vDiO0/OFPGG#547y$2n4[:9RA\ $ *rPu&.A b}1I :[Zܻ[4ShI۰CHWO\ +¯kۛ?Uh:faAΠT͟4!J)ΰ9Q’D`)O$omZE1"IDUaޞmp`P a)܀v Ik`2Lx?kMfo\~Mw1jZ+Q C %j0pOiui%( K7mOmd W +t!4Pԩʂ/8 =c-cg0'Ov#>3+VqI֕ui0\vys塡nB]f,^(* jHt6,TlxfԳDh4h+8oj $tQL9qVka40^U-0QTw8y%wAm3{-fYY;NLuM`%w+T*o݆mJ5&.8CEfwbcd6`fPDK.EzM՟sD:ر\/Asj5e4 +FKQ({⥪bQ<>i!ixlNQbS񵹊 V#_P!;dˑ%Edl,]MWj>'}Zyۅs!T&l4C[)p$/Ō|ݙz$(OqGE@"bn͵Q2S_9 O̷42q44haTKJ4'Xk<},ۼ"ek̍4gcJô<%6I}hW-0|*b!(laQA}e/Kt!`WϺ6m}&]J>q&EoJȲRGtHN\Jvw7ZpȤF6>%wgK9N!@„M:JVMԢV.N|Uҿ Z\ZB2O1Ճ xQ3dzB.EՃ trRzxMA܀畊CFzxTEpb=cN +, |SǙ F-HjDbx!x(R˚Ndio /Xs^z88 r|E~4|AH(_7 +F.@Ci)G[yt6tcYƽf&.#Gj53Η:sݒEbmL8qZ88P!5Œy/ U7 oFamͣQIQÖ/Vo!|kXghh;QbvpH^a[YiqFFo@ԾN@9K׎+ה6?Dz i^dDpjD>'>`L%7}8!F8F"ble@Lۅ1P9da@ϣw`4q4xXO P +ÒW+ S; +nPyŕGed%%vioiA06U<j\V%= az'#ѓ4O= ε45 +dǸ6?~=O +IO6G!6(,4Ǯtgڑ^Yס`?za`ɧF&7gKF.1 o5=p1HpoOL0.u +6Pf + Yzl ה~}hUW>Hd(?Ĕ\(%{/|) ɨ)}zvQGʋuAdώn>hx̭\,Рx\E +?bѮBP'6h*۳U a m]76=&S1EֶF!?s Ha{+ Hns4FN5RV i ^^9k0-;{ JgL)g9tw?AF7O_O9=m&bbPεvQJ}yQ3MԷW]ĂxaD9A+):+%S NYRoY= 4cAl("S޸* V+}PPoNeb{:a@b[k.X2L#dS(WwCeIk\2rrig +rx4ː1Sݜq4\xb4jQD<6ؾ]3IEt&&R⺋GYnhpc%k$ jV1e (1M{M&h3j7҇ +k]jI{b,Sбm]Y,1 @ )C.c"b~)! \]dG!L/#k/k r':ĶZ@˰MwФ*o.1biIcPgt%|l> I"pG턬y8 + P7! +zLa%'oi8=1DպbEA~k'QJE!7BhLbTsg*D]sz|eRԶa/DQc |؎0KO<)xuE]+#gAwTՄ^sg-,D(D82A;>t|_Rʓioc 'GzkH,|K*e1e웟~VJv궨b6M~c<4Oq4OELG1C/"qeպvkϷ]Q/XRT1Gsub*i\JT1_[˫h 7&%Ĕf2LJq +NkhBC"L^KA3CLL[u9U/cvFv,{`MɔkUGִ?-%̾ՍLU$KcOtX8'7PBU[x3jaF8U`I&9 SN'nbr2,=!Gu] 79c6jR +`XX$i`O4J:=!23ZX\  >5`-lʣ4C"͔<'ϛj (\I h^gm/qQԕOuŦ׮ɝ:FrF0 cZk\.S[Ý5wo Yr';N`^C2ls[1 2*N5zȇѡ 22ɹ`7+ WRjJ*?W#̏]K@&U*1^]mb+DSs"yB +׆(mB2I+~]p2!R9up{"!-کʜw"#v4w_40P#A$3xdNu~6nQC2bX|`9?@UDez= e"砘 uuh5/4E놼@\dW{_XF]9.]4vT%>^:w%`=A&7&YLJelp×(1h^}Is LL zm%V*us[/3"!V?)~&O?,Cb({yvi`'R:& BM|'DGٽOE[OjH l,Un[47 %8exc*5< ƶS\ڗRmTʿn'RˎTHΡc\9er:S,T0gI +\K]F/{BGk+xcS!y`r&{;ϛB+a;# 3HgGn XsFefϺY/vUWse3Tߧ8 _Dis}Á3i ɇfG4B'D){> 2M˚2Ir#) ֧n6J;^u(Z7FXӒ&źѕ0h_RHKԢ,mGBI>QSp.{'A+Ybڊ$=KK蕤A~洌CȮ oi?@C2RB+@JB)kf=,͠7{Bq%.srNkqzҁׂs"z[82YO#ᱎ2f(b?Gw0#<#a*tˈpaisv'dxv܌c\/) 1xmI1 OLmxd:` MehL/ӐbaPv7qfa3]ghϴ`g9D!AA+eJ٤q7|P}"BӈPf*!"ۚ2]o_#Jac?f9658KH,@| +Y"4:ïɵcڣu42jegi3?;p3S}jd +V1dxQuB]o,Ga1-??֛70u|ܿ߃A>9n+L3˟0G%,rW(q Is~? +Hq7׹97a! '1uHtX(8vѢգdpDD.2ɮʓ^CUfos„_FB2ϐm2JrIT% #߉ug?n.eO/JȠEEI3^##ZԔ^]:`;zpai Xz4CU<Ե "$dsB{o:E .?"I}3}MMq'l$xe!&-Zrݾ)䰔yjrg%l"?3ʗxxr)S + JjS ݠ!e0چx&-\4EUd1t[Dϩ.?ݥ'{bcZwIV;q%Z_{GPzЖR +%c:, |?ζCzB.߰n>zH08y?/:8ԳJ^5k󟬫m + &(XKTQօt]ıASJũЩ7ZiOi*yyaSu9`O+phj!p_ZNHzat?tbZ9x) O <֤27yBM"ޮS!'9;=%,˖a\( Q6Sfr&1"$ɉH +V`2 Hxj\aq'ZAxYP,U>WW,(Co)g+wu;!NfNCv\M,q^AbW@D;3c7 G$p7b_)3"^]`dFG"3hg)Eͤ4dD)R߳eڿS˚kҧ>h_ uFZcQ9tRb&8|U0Iq1` WfS)(HEbhi{l<0)T,Դ7$MXdQB#6jK0ҍtC,RI9SIp)qЄ5(CXmFHV)5h3:i, \_k(=܀*J]2XK~ vk`Ɛi? +"GJI_BZ2\ IJZ%y-/rWߌ4>\;aе_Bn* +m؇eԶ?^!I{tZhC/J*DӨjhޅI + (ȡ(;tUjW#eI͍ FETMI$!՝YEY33D2e3Ɛ0p3$ Ac Up4Tԣο$<*W CGΏ#!7GiFHCB4Y63# Ial!JE7tE./rw,xDKMT$H7?-^E9r(CKs AG#١ÛqiC6d`7 +P+B%Ћ- A# -o G!APKߠ!%"Z{<:>ArV 7։"O \|=3|MvɁbٜwlڣWm?4xA"ıS %2" U_w>'ѥOK)S;6tOgX2T/+\/փT qOu}dVnh( q( 'Ym_,'"?-Yt,S1 x9C+ ^y$PRx=jڪ(2l +_Q 86wK+?M].{[) ѬF煒x5-rB܀*@sJӲBfiυZ!C @B_@[jqSai\ZF2oX1ia&Q{QH]5QؾEYxبYSO +Y/38@.Xp5G<>ɸ+}V;#/ + qK*+S63K:8u +x 6wl8KŸa +g JڬDb:Bn;7]#ZX|lW`7Ua*YPkv+3B:d&VVƄ˃R'0$msy,_;`Ee4b_VJ#AgVZ A!ݗCц"JF::}p*N<9HzfE}C|(WQg .TXaM ?xD1L|s@((ݕ>KP"СbK?,Ix% _RoG~1t(V "jۡ !dE݋CrjΉ +O +Rׇ ,́@:D (y]p Y 0*GZ%b\W(6m@3ˌED٢=hU;k+9jOoJQs7Qp$XĥYФ!M*H, g2ق 'Ae@bM[ 2/ۧ"~ҸЧB)7Fk?@A'ޙO%o +րQ67\q@d#&Rv>| %3:CD LOE=!Ek/U'j*뱃F [05toғ$A$krk Uȕ-!=k_();W* ztB`yb):GcW&asuK8!4iV7)_%wګUC{ V0Pavnx?,XHx^J+mAD:t} +29F!MR0 +=SŲudĺ)C[4f@ -ʪkK +YUݏn XXC10q0Xzxq2sbނ=QI]~20,֡aUzjuWbgD^: Ϣ/b 4~_t0O@_ߍu) p&(x7HsodK& (-Xm’VsHyEVd@A!?}޲G/ Îu<;CCB䛢~ hbhiGr_ҕ9Dg,rsxki`xeogHbW?2$ 6 54tX7J +$a1}&^>F,3|2CD+(N8**_2QVR@K}=A[Ťq m'PO/VV5/\;f;j@ƭp%CźjخSs#6Ͽ34=TQd{W'I")S{ubͦ:YwOx ]ë3#V +Q(3@1iȒ!0!}.=@Uu*JP˛tLZլNM48dc +7]?d(ɒ$ hFB3F̣XFNu>c#V}K)d1 gmwV]Ɠ4 pOG7Hޠ~6:MƌWjz7R f M/I9:z/Ie= *܁a*vZ/M B b I#Wq=DFN=`=Ow2o8{4#r?Cful\&fn&.R pJg.Fy}=FѽwQ"yYH\W@` UԿ +t,;bٺ.\׆b3[65 |ԕ/B1O}98\ DU+q8PbMOs")xwT+;7Xx˶o 5W1z=ro޷[ x&Gn?+b#PFC},(Q F/Rc,IXuBPI QJPn[x Njh/0 + z\vD>Ƚ5>v`Tq$fzz6t$v 7P\,(=0d_T泙~ j~ƀn2X?tiN*a$cÂ/-+/OD~,a(I>Q?VdSϩDb̈@͘h ++A Ju'c_M;uWv"T\ڦ,Jюdcl"n,y\*Yh+Yr+2|3vּ"dpqh _^ MCALJRuSC'}xKBXv8}较-)o thY@SZ rTG]M=4Y0)N~?)<}ŧˉ쵈i?{!9Ho:Q*K +-Q&V -o?V,֧.YV!]Fe!Y`bD9*>g g@gS-@VGfIVhK@qY8Xdgd.=zdT42[;tQ*>L\te| HU<:f?9p0m0gW ;,I傔hcޠ@a89bYGrq8v=Pu,l?n{k*Ќ*L9gLI<;/TX +BD$xaS3ƚY \2TKG؟YgV k;Iq ?35^1EA3g"vĦ>[,NY>+'3rP1ԐƬn2ӷbTQKixr.߃堘} Vqئv[W&6E Nf gjBspD*\JTCKt;͗՗ +-y. UEz90'|A8W&"?1~tęMOoPUMk̛iUJ?we>7ID[!Ӄs»׭;Jmv)}eNIlcgٿ ؊,]nSy[\b"t 6rM&n5|hb6fo},.+3| D-*ʌ7E"O.6+e,$i']*JKIH oՏIwcF;^ Z4@M +:0ەT8%dq%{@:Scam͐p2r Y@Oث87'@XB+Lu!H(*[];-*"JSSˎ05vG`-6/vtyհD8spɮ[*_QXDYES旾ULOPoiQaa){jbۺYx֖ٓX*мfd~w ]tzZ_f8"PcŵrdRdp {U5ɩ8J=3uJ +ˣ lJ6qdnL6c$N2? 1V'i55Ah3ö9F#g^UT&%dZEHVL~Պ^?%|015ch̪ӘOd-tD8S/8;OvAP"ׂFPP¬/^MS:bxV]yqdW4E4*tCzEws~(Kkݒʸ&>˰ Ӧ]-'>dDI>54d }G T+$餜%'ĖUYϦs GòEͺ*\\UFJTXrK,"mڸ[Dz*A"}C214p$4PDek`6ISF[WG2gzV>()GMHn7fOF154=\|D!CUFΞJ$$ >ť畓+k<׺qMTxuJ]<vZ \*x+:dBL"XHhǩW&4j}JZIH נc'0kZ9=E rcgrֺpmBw՟VBK_DtNWt\9t˙c"tlI>?6Ą^d`VuWn L$F3ukȀӫ}Jlw&,_]ON|#j@TG/}/m_bwx{cyt_6 ،Hڐ(yP#9pFJ$[S=I+j+f㥨:jdL1LgRQbpj +g1uN_ +ʻh +ħuW}YAm +La͇hyw-/"LDLʝjc8Pf#HY`5# +Vj{ljأcY +~)!B`aNUdu#SKI>b4&ѩ—Ȝ}Ե Y[5ZU'9oH/DdCc;j'e޷QB40^cqU u. !5 THmA^a05 Qhqbz=5I U : ղb?T~.b^sU-t&dO\(᙭~gǑ=UM)6u>j.mXjoF͞bO^H2q}Vߚ)U7% aK%:׭TFqqlKZ#  ,͊1zM+&¯_%MdtR9n;_+-JVkC(ȔQaג:R0w*a1fCﶮ+~8QĈrĝ%pO,G[Vq,>V,JPy]asE'w[J~y'A|uJ|U{<t ) Y.6쥣j~)ƅ' pF2?`Br dX) G]xY6Onh&!hMeTM?*Sж267j)%b +Be3# lq +1mbz1`Ck%4i`tOE)Ed'3|gmjU0ϪS64۶_Mlsvs1r'jGP+5g:+^!״0H o?o-ޘwn~Gʤ +?k\b?'i+y9 l( *zvIf='17|\_XEVҰh!kp>ا|c]-p!tJsاu-˖m~I(x~ׂA +Z_Z]!͔Ҧ>G$N8%SRk|q[ex!T*8;!E詋8gG}i!ƌ@ &6*u(`Ooys,wÒ37>]ͨSo? οvjJ\kn?U={XbeP5dyřJuZTOBeڮ lo8IFۈ1١jt+0nCę$&,fX恲2+ k yl8_{mka̟L>_j +FA`JKi$ˍ|yG [7sÐL_E;87^"~2c"{҆ MdQna-zX$~na^kNj)_;#3 d25¬?5X +cujjtDp +k3IU$zO9fP꜇ +FunN6记L"ԈƗ_kyP+O,*O 5v1 yUgIC&VO,DV ږ Zc Xx '  Ua-nCq,2|dE7]F&Tu~9i8s(fp̋p "0#4en(G}w~`y~ Yo7,Gw>*M:ӬEYr 03g*zH~|jDɬa}:W1/|݁`[ +#a(Q+۳#Gx+{ l(9kϴ41-#A*l+,OH*¸J"u}g σ% [spR p^p - &9r`;asXoʷAj@>`909F? n>"%gTwqv:g`+QqdJq"u 0sOx׫~TN7L3AכrE!&B+r u}̄HԹʥnCYE3"XŮ nXŏD &7!.)C(az̢F:k E=vior],+T|4rd,@T,m\߷\-KJْkyZ.zZ^GK)I&Z헉iYN%˱}Xx+!#J*{JarUr1fr*yA|JfWB]MH7誺yZ{}kLB˼p \V +f6Q5E|3ςZeD]Em~?GH~˨ܸbQwHԻ(sòC.R?JAtjXj0\/Q̸>U􀆽uN g:Xt^ + 2gPgp\ʎL>&s^jj`g&!/+f;/9 )ҧ +sOi&z)"Ƚ Ei +b$@#tSs7@| +PWb{Pç7 %eAI66lu]JobѳNBTSϛJ9G-Yum◞wʡj.UiZ-G l/dƩ\)!:%YjN-Ar d9At-w?¹#ݥZǡQXbC9 ?(ma'v:GU8%ȃ]6+\_ [R/7![zK/iaayvWqv;L.jIWZ>heqKuPW%\w. R[*/Lߧ?ljc?(i a7Q&uvԘ; +֌/}衾NAc{(Xc؜ֲRRM'niCj=rf?}[q.Мgh\vm.yP*Ž `qn+j$CB& Ä6}ae j{ X5gH;¼\ŰkRAAA<#< Ϸ'$l{gZ<%Y! +pmQc~4W^ǗI0n7u."YYD$mϜ|;ϒѬ(X?i?nP^nUQQDE]-!t0=Ln"?Ff0VEHu\$@~K4G!$c7 #Ft݀1bO4 .P`d=4Ba<)v=xDiT)]Vzwǡ]+ɡXQ@&ӡ,sz2ajzF2MUXn8IM+LjĔ*-ֈThԡ1Bc }5)gv@5A(* KQXLRajgªL )5LC&BMa&챡6u14^EnpAR:+* +5B3:4 Ԍ7eq6FHOPR)لS^tӔܙ=F1vk1wfO`|ETψ. jק".bDF5lȤ8Mm#x׸sw%2U0%hy(b*bD<\^wz[]^[ZWdML#kd&4թjs+~ ȥKWwnmċ&(G~~U]:I6p2&vb_&2>Evj*"Lk2c^vX%Ah,e2*44B2ɰB(: A}珂&2 BN!9{P:lKdb"y$*<.p%i68WPd{DSSQ*2.ZقDyl&fŘf"АjSX+6YNTWH !oHh+rBA0Q<+F?籃!~aC4sy+u1Z -+_6Oҏ'B,VHjg^LsU(NTSE+$nNJ.nO#es&{y,</M+gLLU6ae4JtPE0}6T~D ?E/d0ZAs^xeX,h/*v1-gQIkչ{qFMF1]F'^k5 _k*ZJ5Eͩ M,Lv|fVz- 379ŽN/:ATQ^f!Oԫ_(Qda1:g3gq7OgZ?'>B^Ǝ(96UĞ)y{D?ho^]6~'y|j~ɬN9:5l\2+R1f} ~9686a֕1ED^{7D}%&$rH^VpvNEDHtV*d'O̔n˹ՠCmgP2WVб'FJ VQhf$EqƯ (5-9+ +u.7pmqN*Z +o[ "J EZ%qp;I% Q8mhJ8:pjo|TE1ESQIwQT*$+d31.&!{Ȋix(bji9(wװ(h$Nt*R[EzѪ[Y&1kqzq;&D. &k +E"7Ɇ8"q:̸2ch.ZfIO!""XL5-$_]IFmžde/PBc'#W9kMSV;!BE%R-UՉԢBP^I;cRB|b+T?1teRU5RUUjb~+1W2oEЫU1[ s"P1C]jzV5NXA*<0xX>O-|>Řf"АjSX+6Yl"aܙ;5M} ~Sye^nvZ<&}1X1Sfu˹ՠCmgP2WVб'FJ VQhf$EqƯ (5-9+ GEkoEDœpQICӒİ)jZkdBYjoԣQY2F6}>mY,H&U_%$UXDd!$3 -6!K+I\Up,F|!nEcY;|ȍoD참H"RT:wEYގ81N?2F\B~4du'J='E1[.*ju UF4ԗʗELQĸbL'E.Rj}E^)vUSIfcd^DZ'b7ʝ oDL1=ny[mטn_IHRTkl^47Og(ώ"\/ϵ!Т"1Md۵ژ?!b\کb֕d,F.S[ F$ D(u^H)Pll9%.d~(ƯP>FBLf߰B-W^$(AAEqrDe#XvObF30\9UK#q6"QiAjf2HB=H-W=r2ה8M҉|/4~Ҋ6*IICI09 )qYJLC"STAbIQ2ʿt$ʓ+Fݜ9C.&2D-*)Y)Ttp^!C^ HhG I G-=94HIHKrjY.3ɚG!faxҹ4ӌ>bDR2" D;lՐ0L(h_-񎼎2kɐS%"(˖ke=2 Մ!=‰I(>Ux2WĈT2J##FI:@}'>qcRA;)4ohHf8)OyNx\`'Sqfb¸y6bs1"PYPoʥτ:64 -5ao^3;paǎ7 R%%? , ڷ(ވW.FID Ø05l8mlI @60u =J#~GR9\C -U2DLe>Ce $Se1r`[e5@` JD~(> Z"v+ewwT+#MN:u|/dD*- ,@˔*e T`TX=KeDDXx͸\jjL@(" ADFT=FHASJiC9*,gQnJr/(e:D s 9X^3!Uy+`LUfCć GLX\e},C i %wD %PБeйX("G<\'1ˠUt"&jF@Rp6EA*PKX\!*Be ,H#&[Uxn|DNlD45#M@EڥJ AuyJ'x) yz2w + E,AN/ mm^J(Aa`` Q^PK8eO8}0|͂<&% ?DSC/bpP^{jV,P$#/1H,fxCM,Ԋ9̘LXSbLb"xa#4*@`Wxo8^*O:Rga1e'ld. u OQYr5aపWc ƄB5F,M~\lDm/H/.LoA+z)6˄SioP/n$ܜBeOB0&D߉P=UI͐Q`]V5ŏ C\SLZ$6>1WJ EAEш<Iqb}" 揰SP@J Z@8`8 C]W@Є=y>14E] 7?U _O彊'bxz q*"$t^Fdd -CLvdPU,2t`@ -Cbvx6H aqPPZ 2@8bx4"ac+IX :,6OnjGb*2CS#)sYw=C65nm1$ZRZ UV#//#͛ؽAual_78Afg{fD(WΜpt8JAɷt[!jQ{ '[pByj-Q}( -  D!K")OH!2} -@6VyRlIm-Lf |GcE`܇*|ddH?6f儱R rZ}q$}YF&5up<;klLFFلwZR%Ĝg/NE Tѻ; Ctye) -rD>cc}rtXٛjA"E7c}IoP^Ne $_÷5 p"r`\^UdPKuº׈Uz$qoɺh}{H$pK:(g]8d`:"p5T zP2"N#}yN?=`2m:^٬ĎOE?E@vM΃!l^x/P6 S%)#1 DGH:%~X*>tJVpg$Db@iO 2aq>^);I4l3b09o>jA-BlX' ()LOڰj :*z;t]wTTdɚednʺ%8 щ!XpVHj5 -TH`:ak -D%yGxl,{π۠9*J&Xȥm#>wZi3POcܣpxVFI ͶМ?+MZ6U'd8 w⠰DաaUkK8 \ҝR@=?d?\DJu_9R@ $nZܡ w7lx uׁ$7feR(А@z^ȉQU@`sQGBAC7<7I3&!zQ~IYB(6#:7J_/M-Bמj4:eNKғ1Dy7 X+0m-(C73$X,}/9yLju \*2/98΄P搘|$Yru.dm6Ia6Vy?H;sk;k6`oBڬݶs0-?voCJ:*G|;"Dd>QC-bnQ6zS"߳8EN)5@37 E lfbXd$J2mˁ&55=0)a}WTrQ v0QrMC?*gzb]߳^U"u:kgs ZlBOkRdmXrN{A&:2p691ݕDy>NnBc[ω6Ԟ q 7 : A ffѐKS 1M]֢~QD6  M4OfQspEI;. sN~{Hq{K -`F{A Q5/$-[3hvK)"r5@$ wJAi5?vOkKeݚZ 0Nqn٣Mt)ݫqn*f2eG/^mq7l ßڞRΥLG6~Nlֵ #Jy˰EJ9zhk3.wx8nz ⃉4F{.(Q i#52D}3< -2-5(=NkvHՐw蕍,Ϯ4W^9+j[W0E J,ɿXAR7.DؖHhoG7hc,u}q4,}oWq\[`~xUzLɔ[S5 pR.lu:`SZ.]GVXoRd JtRM05PJy".^ w7's#/q.:J51O(Š=/TrykjD\RX`iԋuuAhPU*@'?/:Sg96Ͼuej=f35!y/u{{dbuLcj1YD ,N5V9K&6 + O=83`* -D{\+FuD.]9? LL$!$n a=i?-$4+zoJܕh#qE7Sؽ)vc43_֥u+&ڔ⮖;iEGb\ $bq0`{]fM3)eWð ^b"w.T A|~1[j=pPtTF<׿7Q,W? ~Zdv1J":6IJʊ(<ҹ̇8[]&ZA;Vg=^.ZD"eP60]8z҇\((L;XGPoxMIZaap?FJ Ah^K[V~ j4fC<'m+%vǞm?XVѥG2L,E14eIV 'gB) $&%P@?ot.;!a;w_ܪŅ7!$"2b>M%mR1؃@ŋ"9WY 'K'K"W<FPNz.47c▞jJކ&'@FKN.ؖz͜&}cW]xuZ=^Q-fHZ`)o+zjxaM@sb?a^$ޤLXʑw8F D.) m@:r,Xj;Φĝ#agd-P6;d09zBW<0\w s!@u[j$A(!xCX ҨCY[$p :U|X&Ed5:v -3-WÞRLj5VEIC+> -}ѹ.s۱Xe@!l NS -Y%HݴbmL|<~T捲l9d-S`EϴO}鄨L8āGHcF,peIXY`ř XIp)3FbJ⌿p-uQ$BPɁ9Sư5nˡ>Ѧ,hCaDD 0"DF9c.-ӕ$15D!9ѡ]bW.J@,cP6l%ǘ6擾`S t֪,!CQҭ øSw.:]ZW!FKAgսv@;&)>0ͮybiT"/MD)Q iRwr"AB=JG@5F՟e0*nbY/ K\^#FӤk''P -"a˓EP.V7 -zH*esxcHKOa~'AXI"ftufW6 YOT܊`FOska'Y $ezУM@/>@r4aJҞИSf%֔Xë 4٩]"SZTcdI6>?8%h(e>xf+,mьnKʺܑTQ)U4 -Fx,;%]!a^UT bm -7/)P"ĩ M`s|i֛޵qlh[v/ˋ"Y%5E-ap_> !_=LQ M؅$h=Q[&GʼnGoY:'L}mZc-Y$3FuRK#Y5!C5wsQg!Qd -K쐨F{ruC u{[M&xwxpk|5JX}$؅y\Q~\l&Xy O`nӜ:܋'Г -.f$vR!`xp.FRXe 6*6dΠ!poTlH;P3:}7C~xdgvM.˦r'numZc -PiS$:*0n4V$!@6jL 0+H,^(PxPj؝i'Y"B^erAI0jT3!o'oK|y{Ի,0%T[4 #;f]x}qOE&m!RGsPjkIpPybӀ{3"yVDl(yPh{ _Qgz`8B!2(,@_һJ]īT~kZ*,v؂oܘ$0Yn8aJaq7Yև!sI֤%s9FhKSi9Gc #Ui8>,jW͙Y- - A@%+5Nذ`` \he(*ĵ:l_1K /T}0hP0u [ʃ_7e7xq@آwa3--€E`9mBY qjwLjެgцe3X0]-KsCΈɦ^h5taTYT1杳c/,0C9(2Hsy˅+'A_zӽT|0ԋ@tVyPک\סyutz (^?kH0M  sy"vo.sj>p_+ԟl*_2Mp >M["Ixu>^]eB%6g`I ]{X=_hB^KgV.؝ {L G D0` l&͘I$1~b&* ei(OwJ `YpED+aM.:Q*YJDSdOT5%& GJdؠN3Q( s@ z"$= -F -IrIh"IÉ<| dtIj -j, ٽZPkQyD~( [L%.;-H#RpQ\qQ$*$̑s~jA]Fn/x*YS/Fw/b3_P+&/`M2=viJ2bV0h#FEbdyF0#Fíp 1E014"U1ZZ՝Y$?cPE&3+RbE Td>EM2ZK $IxE.[C=]-'2D 2Xi"_dLF3W"՜Dո<UzF#b3ĠVxhP!"< EGcH@u(Ci|^ANXQ6UCn"v5!̛5ڐ[RSlLd`Dȥ 0(2BmTxsہyѾ/EStvv|F -ioƾb8%!GOH8H -!Q G bqd ~ /3 8 ~}nB9:jY2HsTAk b: - | X=: WF>JҪOuDɁydΌ40 -ٵHnpGob/wĀw%B1@" VRx@p<]ɃK[=h? -7|=?tht?Nf1(T?쯡ha~|B}Ζ#Ѩ`}GG2\^Q' %iXǚO^Q#cNUIu2L1@ - * 9{N " p<63 ȯv2=A((0)Ha|P^ɠP{2eCn6X5 ݫf1 U$%=0H>zAL.HsF -i/H="™z`\G.zGx -¬#z ~S~?.yDx -ҲyVs"9 KUr,!\rer1 $$鐃 H|K NA{@ ,(#X8 #ampb O#G+7FB}Y`|W8@\ 7w q׍Qhscrc7#|0n.' HNl#_ۈ;x!V3o7)5 F iTUbڅXT3 R@Zl l##P9퀖ڐG6V$ml8 -B )'i d FjƆ ]נο`"5@=@A] b W'ҽ`ۣiۧQ#aix{+!Ә!Afi@'HB#)(Յj4a C"{f#C[ 4< nHa2l;a0gHU;c!3:ODm ͸M" Ɨ5ckPk3cRR4ԊfW pj2B\!!2 Fj^1¬(SF: { 3dxM#?&kDɐFH+]̔#cg1厔1"#7 IV͏P~S$44:z bpVH%ɬЭ<$,WDR.ŐHb'91% -b<#w$VU$\KP"¨1`4LJIHA4Ɠ#^00 JsgQB QP0Q0qNԖ}QD}/rm//^ܼ^|6/!ɋ"ċ RUr *Y.&."C@ EWT br0KqM\ -c%$R*`n2WMw$HfA[X-vCAS Xi-UiJ[hQnd⛶gn+!7gpYl,6Z*+,(#Ex K^,tɒœdENX -d `1)-Wt{,r `/i­%tH [FL/n[=5C& -5̈́"_bQ(Xq{0ʫ Y -[ŴBl&G&l&~MpRzTX*"0':*NhQtv+T0w'Oѹy҉PVO:Gޓ"OH+S -%B@!q)8'(+ŇB*%>'.q8PE( -#HIp(8I|F1Ѣ^qFaTQLu"G!QL)L.HJLj&Np U -wA9PRH^J?N4Oz'&h -™ٔqT'l -'wg'Z*6M~SsII Q8l>LƔ)oP!&>Ũ&2RZ5QS -KO%0UD` -2a[U$gctβJL,Q*s -`"VK|*dDG.![%~2Y7JJJ9D }0KVFJ({&Jj%%P8%*;r0aY,ZXi+J`bňaLJ%.z6 -s(U=I7b,+t$Ŧ$>$ب VAcsH .\d `C"աHDX$Ar~D"6|D,eBQݫPRGAr@J,4F*,׈|҈3+Fqr`Dщ(7,b UE"&Z!h V9_Va6P<$Ey!B.@ VaC!_"  ] X3C^5cx4 )T1`a#nc fahH1 Qh G +Y*'!0k^a0t<yp'l W9.!o\K%e%,'+^(!W'!IHP, ;$ .H(8a!$\f!P\wsC9mc.D#4:42BDEntH[oECthO.)Du)Bա,=[: ?:9Z_4p q4;юkکF'ȷZǝ*";$;TA"CMf OsWDE<,VV<^.Y!3ȇSF"*!\6ysx0"jg}0b~Z"с U}>7K_>>"wl+F1Y˂^D}HHRLF?Y(S)>zܦ8*-{}}̗da{ -db{ q W - J$TЄ:v_|!WN2qRsq3 TBep0،i=B RRL萻̫}o(FARxt݀I|DOu.5Ԟm lfKsh!?*G; =#>+m6]~5|Ab-NVQz9k-HbZ^ lħ_PnGW`g@Tf~I4[ VMAbk4XTwTKJ)83 0'}eY ? {$6c1/- A&ԝ Ԗ6D8 ݰ?}ı{yPF/J -2^IϷ»@93wA[*U"s0sR \ps&*}a xEIihK9)fuxHQ]Y | 7~|, ~2*l`̀mz,[R[c–]ԠRg&hD296 _8T -MùT`/pttq۱SAP1WwQ(˜u7v^<@FAB@~(pW/<JW! - -&R2 (E5߫ )Bذm:A2T,;.CMj&H;vN0,>ORvaxm|`!0`).mHAL!Q>Pp@91#Vr Y}*G2c >jVa?P|v*NQ ~Z> O'\B6%t,^ ls@Kˁv荤8w)ށݽ^!mh5 --0IB/t&> 61VV8xj  pͿ 9]keA6% + k@:Ns# cl~#ƒ5KC3t&YH(+hݾRɕ˜52Z -3PK5$mc\15ɜZToAL-@ /8)ݿ@6UBr`^t2bF":.ݴj;1{"9ۃo҈MT;t>I曃[ͶWCKSX*ܗK7,Uq#8x)I]}wMƕ{ͨL@c&b?vx։NM 67m^yL6/ Z%@[ϢJ@ɅP/fI_>b - \H@2ӻ5`'3jb ʚ&qO6oe;V\Ə 嵹Tbu@@g -P,ۄ b̙)5jz؜(/뀹etGX021z$56`lЀty6 7b;[G^|b1 8al}%]*H3YH>I4R\x[8pc64;E5n -3s3L -M(R>MU}yDlP +iNXF[&(`Pb/GzXP2߹i"DW͔oWa"(i@@uz=mJX7A+imoA2iQ@7%0I5z?WZǢ>XQ¿I'JpLkˋ~e]$Vކw{9 *6w>oԪDu8S" -!? }\!i/=0uM q ̼#JZ8_V'bYo?#/8JT3ʽٟnfO䕬G. -rw<9`%KW$feQPbbcr7^ nL?k@:^gONǕ -?(~𩾵/w:oh觺3'a{wH1-Vt]b51Wb~7&\Y#CJ n&!>QM1L4~}Ж(yEO62NGyl$2n*jrqNpv=^T8lķ=>`/#Y8_ݯSrݯ?\D7*}7c1ŸSˎ;+ח#kXhNK,>hKbQwg n7W9Q"}0K@<DejCDOY߳, @wJDc P2;[{R" 3ܖ-1q_>U RIQC~ࠔ軲-7QeSq7ЇTS>A=.Q|q||V<wbwP>՜#wyъG c7[ -W։7f'z)MN(n%b"[ؤ~YZD.c͈움?z˦|&)&j> \/՛p6oE@r4:1 B4SQ9rS Su|4_ Zۻ+ m~X`/JnzvtvkW~q-kymLQx[!5Sw-"*S`c( .2q;KeX'8~ ;-*L*#\FwҽE枴.n)EF9>ᤩM2|1Qr_6\8;hB+@)t [kx1۬Jqtˇ-2Pd4/<ě_ZTײuV- ɭ6N%3:G-/C>CH "xmfݿ gc \KoW[g$`xC(|ei }IĢ/8aºo62@}ؗ }#;&c) zSYe?fQ@ȵ"} yC=&1(w,M/6若:?1LlYCеBbK9y?dŗF05O%.8$T|#<Ɉ<[p yADEe7nE[[*c/",t]\eVAcN ~,[/h׎'t3i@E|p -&ڗsT)#sˌ3RLHu_6k#9c+/Cs%% wUq&ʭ{)8g= a/a* ^<.Yﶍ|xi khDq|vbV>W `\;}\ x)(0ć.i-Z +C>@ϡaWkn>t 3fa7Y.l{@2хQ6 -+Yx!cw@?9Rf^h(ʺ -rayiaAձ˨G?d*&? qfWC'7@*)#=fRY:$LwF&2ߧnʫf,vĥadn ft":y2 ) HAzoJݟ&\ ԋ0BB[afΔyPs쥄Nyg*72Hhppx; `xwg3FkeD 9::!ԺQޓFzh{ܟ%p-62Ts Ⱦ܃=V -OVYm{QgLjը=wSuyj[Avմk02Kb`prj.CD_ gk-su"4<{)E&*=)(UI:- }/ qm>믲5-ZssEbd-denp/kqwM$4>!DrKy :9jb3&O؉&T -vsy;Wϛ^ʡ*`gYooRRI7 -| +Sf_*hrH%Dx X]od*ZW6sDO.!#\h@) N~K:[ǖoUTк<} Oexo ߳8[@}aa#s|u|su/xJVꘞҶ(/^61.XuM>0-h*].,[.{@k: ؠ:SwFC|nH]z$ҋ.Z9/>ǦR=]ا忽u->Vcћ[\BX27f|5LҶAs}"+yJNVJo<_*83N:hdL3G~@iMR<1K7[A=int*;dtǪnxuᢩJ-ͣIG,We|9 -3A@rLtn)G3R9%s6VM9yeoKq|f4P?paf[1@3\1jΘ.EIPfʛsT ]-_z uvo<8ɰ].y櫈\:8r4@S9.9I{䀧r]:R>3'x$S:wN^0`%:yɓ& pT2UrQRnPaՐI^crH?ebHNu%s:rNOEG&QB`nN \B>f\(r7q9BKGBdwR9z6bVh?yb(T?98>_E( bIAWޟj~~_)ѻ3O;7t~ĕ_*w}J4?92A~|_H'ǟ+_4{!m&5U9ٟEW+x>NӨ&ܵb̠Jݤ vx gz)wW=*'R,Nȅ2KzhɄܢ<"ugYЄ.(fE{|4t~uRAnN#Af7˞ tG)J[0A^{ j} -y|&H@VMvhK;If\䶟}'ȟa֠ rj!%I Fۂ@^HCS@@:_lIK]AnSYg wr'VS@o>! yC{qCJYXB.bhV0 UhxP˴)^D or -u#SԟiD{VgJ?\/$BG[dž rHǝ?>7ݍjp5ʬwC F+4]'?˓"(k/8A H0E`ɪ*sQopqH4[tWHS.+3iTŽv"{ %*hJ,; |EQ'>RO8.. -xKp}zcwg%QVc qCd4!7 @ ċ?p#R>i9|O]Q1[zX穞M *LT#3Õn۰~e0abGT Ⱥp;G,, -D;wZ7%n$d֠jQ$3NA!f>tPeQ;~vt,?&9wi4j~UjF,NOp;xҵy4mxdam./$'n -gmV1}Po^e@dԉ^-!Vpr6)9$ d$۽ (B݆:8Nm@Rt2wacLK,۱HA2+kV&a/_lJp/LRvc1A'5q`Ƌ)GüIݞBa,Zֲ+^n -ƖZnI]`{-kzCG_k/tjS pa{?J*l+FBLf߰B-W^$(AAEqrDe#XvObF30\9UK#q6"QiAjf2`IY\GRI_:Q2o֐QZQC\Z%)i}H &'!%9n#XiHXDr*Q2QR,)JVFXDyr%ר"ghDFB%5%k5EbѴ ++dkI4H ! ᨅBR'ÒB)[zIPWp2ef°U3Yh>, O:W}g6SH"X_&AĿcA҃(vGM__u %;K%ޑ|Xx4cuo,DVAQÈ,RQM!c*(S'sQMJ%C42a3 8jy7&AtiagA>RT:Ĉ&!)p9g&&o^mC f9S+ F\Lj3L3\65 MϏzx@_$"ءGaA6Y…2)C4`sa&wRmGM-A(=gZ1Y)va`@ +3kR@ Uy`gHdJ 84Tl!l4,]cUׯgA\@n`NQ +|ei U7TաPLHe0!<sR +@ qg,qW'zk;ܖA]p-㞀MˮpBYʡlDw?Ƣ 2 [" -.JB[g2 +WoɈeH @nơ]FQ1LA63 Zc2h3 Oӡ+PCM ED:!23ÈgTˆ"02ht*BBv0 x?'Q,4ʍr[)_%4Z}pO(an!a&*oe_U&*3BC!C#t&,.>١4HHHH;Ad" +xPG(EH2 v,E# F㓘e*c:5# c)8@  e"] +͂:jUus)wOOD+FDS>҄O dZT]0>T'4~h>r/0AK C|yRBRжUJHʯB$n  f | qGyAm/q?25 0COA  @xY&Z5U$;BRaĂOjL=ԄJ 3*s1lc;"x|D*G< +hT5=-p:T, t`j`yC {  RRq{ U.W Lp>@jLx)Tc"DžȖAi/D*R^^bL8&zaL)T) c8Jd+C\ y%jUSP:5J p@p@isO RԪJ@0YS\P!'P`+0%AjDˠeh 0uD M 0/yGCS@}S٩n|*U< ]pL}D3ckW!E:5 ˦'íU"E%e# bISd`@ +Cbvx6H AqPPZ 2@&6bT,^3G Q9\ I%Xg݀bRxb ;ě 6!.Ǡ4vV z. SDKU m=*ܓxT{Dn^.hZVBgym 4J))Ҡ?ugFA&6;Q +*q +߿d+ε`߉Ԫ`gB Ypa*¿ +@"s~ȐKc%'njS(E[PJp43/| @}¶L$Ӧ6^NWJ%j 9-W +h0/p^󿨓C G ϳqƽ։gW{k#}pEx:պI\}+G-*rZ:-J0= Ί=ӕMf̊+U(#w%{r:헻MiM y 73(\ AR pi5 -RT&RHD)l 9`q k՚($x>sb\x?DUU (5+ABr)(Ӎ:G'ōP<\  1|!ΰDsi^f^&==Mq&߲nuvץr_zs?Z.#Eg5E )]Q7){g RwP^_hivK ?ߊDIF y9YϽ& ƜQq aEu/m(<ǀcV3"J^4 +?! {5X-QTy<% J 2|?)d"(jҦC̬z)ggTL^sY.k]<6wzgXBm!n!Hav|蘰r ѰfT4Dc7!ct~ JD)bއhID;)Fν5;/hwGpnQᷪ䐇έ߰=p +䥃$XcI^ͣ2)ӮCLԡ˭L=iv'l< +H}MS0xx]Ĭ6OiSXb=WH$u? &|&TYt8Yj7 JZbH6~~5o`(DŽ\ %}N=,|rX`/Mկۮ x 62szhlG!`#-"qFʥn r1kpwe.eGCG*$EXC%M,|#ﻤ"e뇜k{ʒP +z_Q?=MDC136[?c&@@yo楖ܺ>n`JUV7lŃ5)p>ˈ͘yeBR{I?2Sb0dm 7Ns a*BLUyfW(%' k E42KT#: @BSd,9CLC}m0Βh +}SP%cga2S^ +SLbwJ~@lwfeF(^Τ Ԅ'jR0)ܦTCww߰(\݉+X'ph"PE+% ?tߘd7!@_a;pq0\zPHcgrA5y9oaY09XmcM>kex܌Z*jpX$z,J,}·%Yl,tarHMJ P׈GP9*%7tt&85S.-zK$ӁY1y^,7J`YeKm4`yHHh9BPD&hW +XԄ +22P כ9kq6>xT;y!s%IށNG i6<xC 0#nFa\E*9ڜٮxUM,;ŜqnR?8'wBKXM%`vG|-ą7vIbE !>άKV3)#goJyT4W]C|h>̓7?*S%wNu*dXpϐנ6&T)(jP/c^=Wiّ07O).͒i|P_^Er]Sea%GيdТC-=.EY?kDg=Q5 ` L'QA:?YX[Tg#![n<񫧾(zeMAm 1Qb!v{R~ %Mvd5WZ-dk +t2TNa}{ B[ӄ١R|c +;*h5 x$˚-8-y)jLg%4ҏtO2 ,վ٦ +JLj'B39R_ď2RUY9Hz(asʝߧ!kݖC>XH l1*D(ʠv-(٭.1c1D!g43hkR +քQ5p+SELrEN37퐨B[9UVDO}Jz1n,lF|-4td ĢC1lo[jHRF:8=!~tQj!)Ȅ쑜ICW%x#J]5,d8u7B=^МNEQ:)L*770Q.|kKr .(Xr}GA&vR,cNt04q˼/ZO*-z~Ztf50-Gm[Ȼ^FZ<R̕+XT&10 E:Q֑yK}gLIj޿T;WR m߰KRy=ё򁲖"łvC$le:Qb$ف^Q5c/8LPNT:uKdSPB9DHpH ijV fǨdUvϩ/Ft%ZNe,n?å Ȑ!|ϖd XQ*u'ذ* E9岰T| <IeN460v X; "_}39wSȹD :CbYiEN*Ǟj6$:bYr"-BZxEhkdk⡤#jm!6zt\-Jrr;4 w;Z]ZS 6?K]q9: kW1 d(xfNǑ.NN)vjnеjc,UPL+هALuQpLYӮ66N G`%v (P'Gy$Qnuz$ct}\7oj{/Ha~1W-yM`8OJj(-Bz@VDyD>&QI'RuM(+# QڣYl걖 #XB :{aJ#h!Q=;ʁϨҴ#QpA-t87cڕ Oyd=u«J/92x¼}s8vM'ۊټ 5!tO`ӜEiI(>ꤺy5.r.V٢X26NlPlI̱P d=Qpr2 vLA/Gerg:G ޾mZ&0H pi) *F`9 $'WhM^w/l9(b>l ,PYvER m1uL'XP!CA-<}P%ODq:nb􄾛^R͊V=[]C*I⧔P5A)*[zݯ$=[Qj"+j|%PoC uBm7t{E%6Fɀ_AՒ+_ZWk( T +Y@]X!%uF|١9b DNtfSXAQDXқKaLΧj>ɖZaHUGqe^MNtKn֊B!hP> 3!p{~%oU,R2qxBXPk@֐H ~=5 aXY?DxShVPXx# MʃUDJ%`χQ~]#2'HԂEI @=P(+ }BR8lʘuaI"B^9 ~社BC֛pR/ۚ[ʃg^jө)pg,@^:ڽ5]Û31Ct]{CxEs^˾ ) G<#kT&_/1z/NjL"rؼy?;8Kr'oM\rʥ3zI{Q&>3Cz,!3isx 8D4f #у[$~PeL!82e=Cc,NQ?f]d5@/Ѹ ɡs_D@X-p r vA7BkL$DW +|L[ZC̆r 5& b2"-|50$&E4#L[l,E0}naAF gOFtGuD`RGT L K?$Xi`$`4$Q/* uIș\2$%EQ2)׮*oI%XK%B\BI-q%ϒ`"􌉪e AeX2 Kz_k+1&6dyf@3(J6̣n<)R'#%uYEN,.Jy@ (I= +F +3sIpi$KQ4Ld3] j +2dRmG%| +&>IFmIQQ7;HBTz$(!BIx-)4+4OVݷERW +h I/b ǂA,zH}g9 Pcr!-pOZǏ\"jA }$`{p`m=ע٢5<[|T[v䗷 hE E:R\#/ Htb5wB5"p;7F| eyqu{!z?Y O]1utfʹm'f(s1b`$#'0R0(q:.^\DhgcubԪEE3eXDк"x*V QEEFSxQ[ɘjR)RkPdA2{"AN/JAf\08Af$­IgglDHΟA HF"bz/֘@ !i> ux_dJ!^r o ׆5kHGC6>͐\A)'^eF32)m!/XA o͋- )R0cݨBLPH݄X :, 8B}"DH)h86@HmA~,9Q#A,r| Y19\xW>$eёZt,AP !K:}Z`@d@+(O !A2pA! 2@Wȕ h&*Q9?CC@o(!/+ڣaIC ?GIQ}X:u[kຏJ~t}83?ZtyAgBlPQJGE?m>z? $rT0/$|>zra 㱻Y@jc ^C8BX%MA Wv:'7G-.{8 E 5< "e.()(8<4RkauGT Sǩ=KiyX T()q5EvWǔՐtR5+$.5tԠ P1 24 9 oUӠ&bp b!, RPeTHB>u!mY4aHEDc3Ȫ!@ I3|!>y3! 8 kg"茸H9Cː3IdaA%¶f>iFlf̙a&3RbtE&^F&.Beh" H+c2*H)o( GPQ2<#ypk]?adq1h#M=Fwy @#8#oƏ12HH_ +$pr+Ƴ͋@P򢨩e xQTǔ*uqJVdYa{Q0E +b\0\ĥp\'.Bzı>" )0yh +!׫~m-WRv|dYO/[,9o] k8B(e!ȩ,WRȖhD2Z/2hݳhXJ^:,6b-eD$ QJY|"<%/dIobaNZ"q',0b P+m 9`vIc紗TVbb„U#& +NIV*C +f@Yb;LU b)8.6ABU&Gg&?Z& +k8)>N,M1':*C'FEQ3;!*0N@*OyRЪ':cM'PS8?)bLaTPp'(}WAR$J(-''Jyo("Ep +-Ha%Qy2s8iQ^uF(Vu"0()tʐ.L6RP8/J *yAH9PR +N/?IOS'Z/42ßlJ)NqU',`'걝w4(|5|)GI(vrDFL.! +-a%F +9Y XbJU\%9O@D }0+fGJ=&Jdd%%0U*9xCX5~aY^Xig +`2VNb`NJVx%n}\%S(UB=إC7f-h+V\$6 +u$ب.+Acqq$ .\d `!ڥH$$I`r~D"|D eB鎨ޫPRGl9'J,F*,׈|҈3™#HqR`D7\,b UE"&Z!` V9_KDVa6^U<$E>i!B.@ VaC!#_"U X3C^Z)c[b0d-5|nڃdz?~<H +Vу`14[{=b=lҚe8zyXhEf@ 8kβW$F׻~Yo$~zSZҗRRPj\X=@հJYRBG$⹃M#~(45wp$2~@ ;o2m Ml:R;Ml M7'gjPm +xjESیihmE؟)iqi6N5VtPgl>#AEdV%_`s _yf%{A=.ӉNQDTK98w劔Ia%\"\^6L؍@*4/Ս`Ff^0J + m *GlT 7Z!l ;^^VJCaVWi l0Yk*ЪրWJ 21YqG DJhe # EryFU=/ў~%h܎%!5%b'Ѭ7377A ͋ҪR?]JLU $*>!I1[d6BTFҹ| C%ԏRpJ->|+HenDa; Zo,}C$ٴ 5 e*O. +OϢ\mثoS2ؠmP!UeX *-ٙ#Sn5\`v&pdNG&X uo_Ր+z[XЕ`ᑫ+%m ($`pbM$LK& !*|@'RŌsd#@@N G)f]rxFP78]ExO:.WHA 2uҁe"r;rz٬!@viKxT;ǴȨrj {$E!c{8ǜ9 ;+([l"P>i Q{m +& J@F͒6|(>!%cuvzW<#qg0eSw`sH Mف*ow Vyv& ){ГЁbħ?c%PX4M1eˁ`T4:|6gmg2:TЪ T%h@徬#` @Aui`HX.o,Qxfi x]a" hReԹ2p2HG:_ g%Ū)m71Z%s i0^Mua:t<|S(̡^nKL o6mINS@1";Uk(6XDGza߉!B +]S ̋F2˻pYQ  <, '8B.!l5 .w:l+G&D#AYD7 ̰pV 6ˢXq @*ʢ9Q0tNSM+A _wJͷFhsk`rz+ Hyfc6UK430~F8ă{I=~u)XBUmXurWtiz(@F"}~] +oCQ%m}UEۏ\m|k 扈XQ:Ӣ=zZEd8U@>1FiS5(HueR?4ύsiFښxkyȾFv})'c=J&r{). N0ꡌ6*ˢ!yuqA`I[ uJfv؅PW--qRQ +A>ض K-} +cT*aҏ2]t1q:aq3"rۚ>?jz!}%|cv• s~վ0w9ߗ3EI|Ek|\O 1Ϳ]LV+tI8Oj} ̾w?u;<썚og JÂ+huR~(w/MSF + qD[Q|w05ߕ963WOAkb/X PeÛ"yCW`~A)M̎V\>uTʏ78ϔ)) +bQ :k#"J%XTeT ll^~WW#y a縥Fib=s9 BK؈NBW,o=ݓ-q߄('4]/1j&TIЋsS^Xy( |p!.r!Qp}0q ]/W⺎U>n";E=F~㷾}EcUZn;8 j@7d=\#;ewysV{Ȱv +!M]_,Ge[/\k)%Gb"+Ք/S~FuN uNjo7cf7[Q}Qalg3 &~ECoؕzgЬhblչ{e!lu]i [{%g>6x&t1=% +QQ7ىN)|}Fxλ%B*F|V2*L+kY_ +>Ra=d& d x|%r6o⛙>2-]^>) w#P{扞oo5i$p" xb0u*ʆNګ<ZMKyU4O`L!xi +v=MM}jd #}, G_6SO?H:X"џح ~.sʡP=cdW"=ȴaA1  ]+$=7$4Rj-nv"Wn^'!&9-낮ىz T{2oB6t`|idR|$p#Bg> \u `w1*z Q7-^V~aPt&`˯@,h7=cy-} , xV~ZQyBCo:Ջ|L/EpT)#Ieg2/R-4ֹ6FX9!!//CsL ` /-m3v&+{)8gaj*^<.uﶍ|p+kӒT9BnLo48n>nIՖobjNQD{>r)K)md,%ޡ&KTujJ  糭;xx,?s/!]W5c[J߻ l?1btaI7t>޲%|N+WϜw_UewZr'xnZ<}udG3:(U%JbBjfi%"hi +}0)W'.>A)ד{&J +^`p9~g=.#s"gߚ's&=E$C>xI,잖}=ㄋFheYV74#GBvhjX2^pk/ õ8vBM1R}/=%C<9b3&[S0{<< YR墈 kc<_ + +.bޟ+ŤVs9 +\Ory>:W#au[ +_RW;gKS&.xŻ[_Ǝ>H«/sXd_4˺`ދQU:mE/>~&/V]?vQ%뗰ΡAR2^"EK~=͇sZ.˥*t7Qt8k,jwpkLinr ہ-h5'r$!cҡSgYJlg^B /h:XUf]&9^ tiLtȓ fȬFͨ^%ޞ+K,0`՗N1:=&]0XjC9O?@ *A)0 ͈ <.RЅEz!l)豞DO*5 Dũ +sM=.BMm4"P :߱M*z)t;JVZS$M3K(gy}U)~fs 0+{=ZAy^[.Cԁ9j$wo1t:=g1 +а鼟c;x rC!Cbܼ%]>ܕ2ۆ[ xp'Y@ln[sq{j.<:{Dsey] +7gnlf7MWFI 1#LiW2wﬡ"hcU&+|[WGMmF|򃹙 C̟cHEPrp]tLh4\= ʴ-Vx9:X,sPPI~qEkؑj3 VAX̏[TZIHi mX|y06A5 @<*ŗ$LrIj~|*L33ƃKl1[I69jzV=fOŮ f@SNý i#( +RIQIXd|W?J2(M+6pZ@e +n|,O|#gbTiB~2\8FH5w-ت,\LݱmV$ϗ\A^&BZb4)vHvȹLwZ=WZ:%5vݍrޒgg G iF;o!K| +&lƱ=n7,AnwqAfM 'KR*9`OIșa|-݌:rj k*@^)9Żn5Apoȉ/6pޠ?kH5m] +rJs2 o? +rUBirثhu5I}YL1aEiSAt?,.8yZpn8)Ǎ^pn|ݰ^Qqxi|/D3hB#z޵ѳ|)ϻEx_"l7Vա6/.ÈB|c)yuG2 v^*n#M(]A` Sz@I +:A:.\tǀXb~QH_c;#ID8lZu#O"Y^{~JX ^Is:î|y6+UX< +-: jYahXKކ-S-JЅܹb**<ÛB0qɵFGe n3fҐh~ A]%h x[b pECW. +8fMBuT`PTu |3BQ= ;>+A--z~Kfl{H!51/SEڢͅ^,=epyȾJv; lWѳ[$dz}~o>`)sPlT|Ys#5#i'̰0JE[ű<[o:SNMxޚaL3ÞM9\yi_oۡ{}zxwqbx3 +)t"ޠ~њjDҤt}Y.+& =Lgw/ƪJAv+G?H*5]vC2t|Xʔcw _[Y?&suC6qՌ X<u;<-2 Mw~} [|P.Aɂ2۬t7S^rqέQc^QὪ:=pBKw˽l[B:,ma NcmR/3sVIW4ȾQ HB Ep|m/4d++- ɗRK6wp״<-2]=70 .ƙ^\d>ǤL{˃ Łk#`{{ӍXy ܋SXZ uKe YnrmDÝ7n|>O)\QcF QB*ȼ?Zo@ȭ>stream -̳T#ƸTrлάz :_?KfumxB[$^ [sKTe嬾,$p4MbGi[ g0mu !֓Q F6=?c쬣(Ms ~!:!|)k^9;rg'rDَM]CnuX/gsrs>+[f_vg}*{jS0!2%eWC披i6-x5ZAn1 N5@}Շ3mUw| - sU-{ V0ɤ@ToU["bxZ#(zX!]"SPq۩d_ٞM}zg%SC+/9Z?iȺJSL483:+[Zj2[x1YmԱfvvoIJ$sRlHMm%NnD~s[HB%D1Q_L`N֘B]T~]AmuiQfc'(" -+)+DVPoO[i\AIcދ tG=@w%jΏCN&j&*jOm -))@%RK#~t`!OߜjdӁ4EM%,Е^Է ]PjMGUp " PŢm52yo9d(5Z 5֐SPOÌ@@r56;QZQi:=f>e^*?/eͩnW{ڨfwUBm)gs]Sz͟HFdx<-='>C@GKq-RcPרPoZ¦v 46=Tej2@T4m`qLAk|;d:p2bOp0=Z,Ғ/,vti6IR}:MK KFRq$chYiN+Λ:R|hp|RUzQgplqdiwh(,dWxB|T9rm; -SףBx\2Aӯq%TtW 'Q>ѢmclG=PJ7F / MCC2NZ4%TݙTT2|JyT6`P/RUYE̪ԩ&LjT:3vi*meH:-*N}aO[Q, J*SXvJ_'6+^=?+މVA D|G&uuұ5o񰔭{mB -]̩w4YlђԽM(+"5JΛ]c޵_3f,a -a_ENx/{?qI&eP,P1%f 2k^\N2(V\6H+iL}=!*i憳8 >xLoWB7^| K+v.C.[aխ W#]n?\؍o%{V]ۥ` -Bf]](t* -Zkq *iO5%%CIyUz_wMz.}m7ݛ3=Was8%{[6S#_M7NߚI5_#);*p[&O*6*BҦeB E+}1=w84R>3]3l!r# di pB,i2!l[!O(i0l]1-WHlQBÙ9z Ca8K ]X!nNO OGoKpi0\T%t;Î @̏C IٛksQ%Q11zU]Sk2dt8h> iOJӈ|apq?}ЋrcUHz㹩P{boQP)$O#7738yB?bU0x 4ֽr`Il!:{ؘێob/=|C9n7(3u( _d1p֑ɗyJ9Mo țZ繴!1d -eщz BE* 9b?__&䧚ēMSuCgI= -VMq'}1x0W<(l ~r@UZ~r܅7<7q}{r\ql֖M2Us]pIK 8s~L6Pcft8^E͠}pOzEIfs >>E?yo$5+A<f`M$cTQwRcjlCL6 y;,Ⱦ9BtpKJ/Y_!aƻEI@5b4ٖ8kGcXz1EcdRh,Yy( V߄`ц,-wv}@d.c谾q RRH1} )a,J6˸0p ln06΃]:8} 1S67MbOT|1g4y(8d4#/FA"N[*.V{6bn;L/&>O/VxЏfYA9[/&> x*1%mc0MY%]|(+Ǝ^X3Wc/n`4 A\&U( _|y!S=։\"gt0>S ,Fqf't+x6:s r~1N||41~]]rAZȳ%70s632k*u'xﳐ<(BO4&8CS$nl^XzF#2`Ϸ^..0\ᙀ5h*mRp13Ylؐ=UT~>@ -? Z Мf2fҠwKQHgUkaXP1?9"ʟ :kƖ?ڹRYL&iHN/z\|9Ur+mA/=-+@r}(DӾOI0^LRD)}cP(N*؟e< J 7XǸCmvf/h=pBj8݂FVZ+ o4CDw`ȹ-*GP/0hM:SAa7UڬO -YsJ?hV׏ĀmmNσ3^ ں=1 Fq't\+a4/T]'R ;t֠,sBg6T%լ,q,9gBڲS`[4[8ex''>igjʅ$t#Mш?xR Uaߓ6AI6gbUsH@ӽJnC(ֆfC&z% "`PY(/4{CkK.eXe }t~u/ $!Eķahv:9h| _VPtOR֠숤6T'ё]|O( ! AWN+QqPi;>0Kl*j]фtzL7l'U"5kC`1yIG3rgiD -I{&2SRUeRmO5~(x4oXzۃ*е?n8v=N. n[n70LUWꟿdImv|Mwwv>hܺuB{CnݝFR*kө-8Fh wwvitm`0dVtwW{?XqM/bey__wyu6'_bҿ[{U%&QNٛtw+Yo}(x++//@W$r'ӯ!tT*ІX&ZvJuAyxRUX:qk'fYD.O8Z_"F[yS%<ߢS8!g@C0쒛XsvۘU(, : $yV>p;޷TFo6휻%C0N."/;NL" Rp/x.b³o$ܧq$}<zǓ:D8'ʆx7k$Mv%.1@8@鉇zSbgԆ-OX`|Ku9נRii!Y9E嘌]/@+YY@=ΎqezĩmpYpq0ԎjgE$R $aj9L&m )Y{lI_dO#wՏz!s~AVB~.|؋J%f}:Dm /E Ab:c:1G7t."2|-|\?Niϭ(k I=! x7 -y!~Nlgm,_!>EyB}7ms 2L[uI@OxrQ6gu"!vK|yWWտ;bjȅ/TˆMEPRNЙ@Xi8љBJ  -`谄 rUP>j>x @| ɗyudW>g^@ -j u'b1KO]M_Ty1t 0t= 4l 0/\LJϜ -RR^ F^e3G'CYϋ@ ډ+EyJbKҢoI.} i@ \PKJBT]7V:<aƦņtwBt".1 -V?‹_"<:)xyǐ=gLZ@VV;p͡coRFVFThr4uΛ+>[L(!FD$hEP&UOyX=4S$f?& T7lMĔYg]F%qmiDP4M -}w -HYi=nS+rc?]%OЁRm.qOo1hBPDqLo,:;R ś/\2iXu U\[<%ic] kT $tVQUaP]~ >̢yJ!,ްQ{[GT#urK]ATD-J% &UۂS)f/`5nPfg~ g|it|;75-St U ^ݦ^]W"r=3ދ-(MDqmx}Zyȋ`>hkj'lL\p+PA!w?}7=z(Ai{ Nh{Fh,mN `.xPMo]0INxpQOb.MiI*nbsg?TC齳YT=CzYhp3?t6(e72w3]e&2 cd1;QrF{E#E~TrbMU -cб4toWH3/ Oh VZ./,Ǹ܋Gy)PXk&_iM^ -?nMg%6F& -ٕcy+=YE`2s)bM^9c7ʝ o="f-ˡ1N()ɂ /Ūr)JsT\_QnZS3FlGfJ(3c^p']JPlvQZrV7: ɂ -Wzɍb٘y ?h*^W=GAg\p<4DQUwpBX-{PJ)u,m,D\QM\wEubJL9"(,v(A,J.X&ǚd@6ߛ<Wׄ~pgYKp~#r7y?n=UC{sb߉;] cuFeŪVCkǖ>n$aIvNpqbĈ6*!a5~^")-i^8CWnƈJFnf -;?HX*E}'|7g(d$)A[q+n(֫Ӣy_^%#?bq^pOhΙ{!)%)9C TDE -"##3LYchg³Pѥrw|Q&$9w^\5X&7AE6aAԳqw]o[}"hb9CyP>|{ׄ*dp NLE:vM }?$*x No(śIKbk5X{ J@9{:G|'g|_ێ8YԳ?2~J^$cԺټu; 87̧CB:GEv ~JݢB{  -BH=Ϣ-çF9boYe -E91|jt}2~l4 v 9ysVs9ҶcMdixUl'+& OYǮdzhY}O@e(ÓV!G}hZ''2Y} 7V_!l2l4P^k;&v, mý_7eAPqeD8$q2_L[uylA651٭\hIT{mvDaϣA Izh#Xq|8g"+@ٝ@(vO`\uE#7)hBچp uC+˾-mNp_7ão"+?)cQ38AyO$_4m>!y}=Ǒ堟d/v9&M4qߛ ؛P6*ؾ Y8y}e8v3KŐ@4v#;AG,Wi/Kj_8RL7iR1ٯXdv%QYSCw L](+VQC($s"u#3~4} _[-F NB,2LflJ^5'~9CwO#QC<6˔V݂-2a~e79о12~l3_bAIO`R:ŞvAFg5( Y#_ $zh;2)4 N -ڀ*"N-φzel'XH&T1D?:vq~q?qQԳk -K=}9M[ވ:THK(wZɎ/!ɕ8X]Q^pϦsjUN6PM_j ~͎: oǼ1}s(ikzQoZQ_`Ov-ۡY<,$T]i(P&a_BI3h!Y_ȤmzO?l3? -K ţm~ ܯ9޺^hĨEU[U(r@bT@"kجjxW10kP 8ο؝qaOpb[@2+ P>om~7⹺(+(AIsXmNwZUL^Ƀ7yq݇K :w4uls6@h6c&Tg꘼'g/u֎ϙ Eo:M -B@"}:h' ٟ\}E}Ǽ3t9J&u_H>zwѥdx3"FOc޳""L{R>$&a0zj\@4氭|۸5s4g:w^hDĽsg!'$Z;Mx7[#clͅ;k οu0viܠK@/gHK)E~NAo3mWOX?}Mu¹)wj?7z/a?r0Ɛș/rfsL`Z gFإ6rF?5bNS0$@+~Je=EUĻ~F (%gФP#M㍛}&TŮ;!L". -@]IYSRJ/P}$: ^\ㅣL=S+b=Gh\2 &RuDi?R!!PTz?*DBQ޿9>{)FUD0zVF :xSȒ$sz~FǑy=FnBۀ*CC}4I{];y'ROB}fm۬Mbw $)`am1B*+=N᝽@ R' yB:4hGh -F8D;xQ&ᝨw0tf3]w1\6؝mwj,(i ELeoϺ}-n^\]Miر` Bf!Qwp򁾊Ix󾏣wReY22{֌̮D -F7)>{vƮ;3}puL lc旹/}9vkp,fMdkj]MSVݲ/f[2ns^l)dgh!N@@^s_޺[q6^mlZۘ3noy AJ_)0DyoWv=ӈ4 m&U4ZhLyȼs{"ffFڨK38GНqiMAD0~ \sh@fЭ(}#OCdu.skZc͸1;=57PQٝZ;8: >{0A>h"mIܵ2{oF0!]=Qaml»;ү "uGvѥ8x'<9&oMV6*;V Mz1v{L7(3Ш7&]PF_ZC R*Q8;JFGD'Mw> l4pg(rgƅCѸe5ze> |in4 -mvkt6YWNqԫkj5.] #F5quby@(3P1p5su̞Ӹ<Q7'Wgl9gs]ܺ6;woa>59lvA\27.#I7;'RYz]='75r4A#Ϋ}8_;g&"P8Zm)e9-7'1&,H_g0{h:vuӪYyݯ3~n _[ū!v *yo2MFvP7޺4 ei:i8o#(kM Dea]9(puޛ$C6ҧmz \aY7:׉8 7.6Dy&S?ؑB3pQ9?`"*;("*?6y1!&aIr{>|OԳqv`[nosfZ79g69;׷.o5Y7n."-Dk#6 k"º5@,JHtwFU;Jg`Y1yiK,]/luiDzq֥.;h8E<_I,}_l[ㅣos=|qu'a -~P8Zύq\vGt9X4użnS8k<[a̫D ?}6YM).nUsx^G{$j$Rp4F@mvȿ> '$6fg*EZ;tRq8_;oS8ch$g#V:vG/"(Y=|_G|sv1QDߧ|oA:x$JA/d96?R_MᯠģwZU?vߜͣg;*+5v#ߟk/ogVN]Aq@>|yyϭ& Mbt*S)&^ /r˻1IòG@Z+`؉@ -TDY980*.T H?dx|NbC?tIZ}u$?9oHm~wH;y'1/qhB#/4H`W2j4MaW0yGuz_sw>GW0MA*LžΫkjE<(laѶI+ ٗLI=z>۟^TGt*Dq"Pen²VpGpQ!}juz ʿP!MI6?f74J`47N}N#A;y_r3"M"AХGh2L~ye;4|}"~O㞯!m::i$E3&N❗si!t -&OwI@UN(x:N{)ӫO=N_{]~jI_ -HDz& TMI&c ,uxO}#O4x?*~VFH<~Ӹ2 K@o^у8u6ާ1wmM aFvF{ʄgP~Je|?kyNm |drU`.?0@~N8y@9G>4:ϲ} -6_7[gglg1ɽӈeho8b'W@uD;/.|O _CW2ltv.ܱ3. ƕ[i -̟[Sn77vscfsyC>k萍0vh4rcm_#ΫB } [=qnʿcHa>~xz!B?t9Bо6s5NIA(77XkFzCo#X@ .(zh/?L;CwRM4WX(?~GA8ߺ={dDg$EOtI@ mvSkMxC:V<|=yQ;zϖk2xn5YPD;jAVD6  o%OĻʅݠ'$BvPfߟ鋣gj=Iַ.lō.sY`\HG3k5L^7 wom_˻2ڼckꗺ.[01:df+uY9}Z{m ,'AG=f̝8t#4~qg/~oqm:'yzo_{aGnlk8}QB6F(a6v!LH!!GI:b;sy<㞧2zoMHMxk -۾/$8 C6a^ms(k|Lg6u嘻59FSuz;[th -.MĻig.kzwд: Ayh -2~ps\A̻#O[(28 m&}$ZhUl\u8.d9@]#KC3EsHwxl6a̶Y8/`r&1 e[eY#{(dD]ҴX -w{S+ԫqor]K\\ڸc9K,6p4NvIےqx'}[@9OBٷNƹ¸ ց\d\_-=s,MKV621z,ve>Y/rf3ηD<[oyܫ:Ұ'<z#C i -vûb}hn4%`={"mj؛XҨ{no5o(S~b]>5.Nw$mhgj%o]θlWG|g=9fsefF=C_demv+>8/V3|lF.Ϊ}٥;s]L o -h=g :⺮^{(OIh/~KcxkM!6t^g3~o*vQMm~A0xi3x&>7(kYh+}~Ng;zw3~puaWv$A7ηΖl]z/z7wЍκ2Šoŷ4 ̬, L;fmqufڰ@18 N~C+cfn26p2 x^aqŲx]1Yw W&[qe -۸3m!卫? k/`>LKX214y,;dhM沶x _ޠfCmåUmV[DdĥUtoQI1Q1Q1})wvMN)AMN۞TU+-)-&--=42/CVՔV֔WWTW]UVU֕**,.++,),+*+.*.,-,,-,-,,,.-,,),,.+,- [\VUXZZV[XWXZSXZ[ST[SWtUWVUWTW[WUYWY\V]Wt[趶趴dUYVWZXZYSUTVZXXtX[XWSWW\UVVSW\VVXTW\X[tWW]U\Zt}kk -ˊj+j늋JJkJkʊ+kKJJ KJ+KKKJ˪ KkkJj - - -j -j k - -Jk*J**J*k - Jˊj -˪j -K+kˊJKJJ kjJ+JJJkKkj˪j*KJKkʪkJkj -jʪ+kJkʊJkk -KKk -+JˊjJˊJUWTWVWVTWWUUWUVזTWVVVUV֖VWVVUV֔VUTUVVVVVVVTUUVVWU֕UVVUVWUUVTUUWWVVUUה֕VU*-.***++**.*-**-+--*).,,*....*+,...).-.,.* ]VW]V]V],XY}L* -DriG Mo4{D챊Y裆a8X7;R59>hon*$)" -\$*b޲CR+cd1 @[7N,8CҖP/(\Ie[ 8ӏza@|^mx 7<q'!&~ox9B@ T xc!&dj C Sal KKJ&I*bx^.!_B@JZ'LE;BhuTA*Z9q4r"lg'bLC/.ao`ЁiX&)gwkc3pH4VwdY|B aP4H eyK/?q(NCp͐%7_2jhp!H\/q! iax4DzСQI:& NH\.adWH d;{s'OEI>Kfh~s,"-PʒGvZJ.֒!-S5.3VQqGͰTMB'-0E5eѧ%-';G -H 2?29B"QDLɤ *mA). H l}27i{Ig -*m8a,J(hLa!D?f*ɣTrA %I|*OD A6M7hHș Zt(nrM:&HdHD7.@Yej-q0?vc+S:P)J'b)rS̟AʪbKŀH |HŖ\@e)*61hkf )nEn[ɍi9B$>b+uȍP 0mƸY"+ؼMX5b^ -$]ʭ e+]MW&qI6Kun!` lIĐE3 ~t R7BٳDNC%Jvd1 iX$DJpX*jy$$ wҦ*ɝ"$TXB' +nqc[̡%đ6 -$%DR)ޑک3Ȥ'oq%Fz2H%epcGNH=4%at G~tOnE"EP|d(qbO%8{IdF!l!%0 ,$B{2XT26ZB -^#]n4|{Dt3V3E$3{`9qe-sǕ3RNLK!.Cܭ$[;jB -LM - - @1k.x@"kiD˯Uݧ#&5V&C\ -,2ȏA!8.[k xFf C&3)nBQ\27Iܦ (k$=PrA9DPŪpL`xP~uSzԄVԜ2qw`*Y1 c:0D+}Z9zЏEܥ"Б2+]e ~fb)aq)q)qi)[3WXIL($rG$cͰC!!0 jzv"*lLhj# $4c&O0Q#bR#K2a)%atC & -#[-oy!7𡩕A)7ɭ V.P+Č ;Y"a5|nrMQê[Վʾ`Ϡ%>sKDm$ -Pd 'qK6WTYt|rt})$QS&{F¢F"ABD=~6#@6llClBNuii%*:A)a|NS:e\Y"R)`DH=G=W%#@8tRzԑDܛ<5&b#*i1\1 u )mDtk -NN/U3LC4 q(73 -m%5)kLؔCܞ"mF 4erabs&&BV*sp_bi -'*N>D=%(z>C\)q&#n]O $g}>jt͔eK^dDwC;Hb6 \j>O8iHQSCn -qm4: i C[`w0!e6HG4m!vOQQk;,PBV9qa!a)ۚ - Eш0S#k&$En_fmJ -cW@a|l hTT:.+ nt^!d -*mDlDm ?hℎ\Rnd7.+`VULa1_h@BkeSr뀊jYoǍN;. ;mJ MʌĆ}wDǿ;2c/ rfH8dǭǧcR2'{49\ö-(h7+4|\C 8ȸ)hA+,e2mQQQI9BCB%X5}T9Dō2S7E A9Qi:bh?*9;R @rŖqE -@,*[F@IVMzCP%upekˠ;3a,GxY8"&& [JFZW<^pZ\53a -3, bˀeH'E_-%Z"ڠ@iUc؜x| VLA4Q砧qIo8vF-(%I݇mlD{7fTL1vk^A{&'< Ęm),ꚊcΓ2ދ"֓U`b1TX[()f2BhO`x%(l AnBy!MVoA -ĵJNtX eEr'-4J -J5!!}GHv'0k@8f8twW|xU~nYrlبjP - {FGņ{w 9N;6!AgZ9Q_PPi RVnflCFqvb]XVVeCXJw+"ށQWr  4@3耨@;3B{7) -&aUP 1'Arx de)](U$-g'q'QrB R&dK8%<38V+sM(6ڮ,\\~0(?eOPW͐Y60;!VM.)X/hv* ޳CawfUL ts0By'𩕽Хi-I81d9w6@Lkجd\X60;yֺ׺;]YgC`m>' |\7ltRp;v\dEOc&Q'%o2MQ߬1^EvFfiQ@b`r*! X^ [2 UP?nOZʅ)kI_&F3h8h=aI)=UJrTJ)a6&%ӈ7SVhRZC.C!5 -];8%S}$jH0^NZҲdW+3STpr)xXU?,z -~$ŗ},ύ%͌v"NPnL`tRrt(;Y5\eNBn(&j2QYy+DQ)@9x|\>_ {&AMA\f$] KL;IG@V*K#λoOfxx UTk[ -nI  -2ia/*J,*4lf -И -[1,!h |`5%`p䓅>tp RDB;D*AĊ8B mz=zh89o~}(<* -t u#"sX_)}b'6+uǺ?yPY?.k -UN -SPg1uq3LٌXiADg2%' V\'mgj~/CI'0؟B4Z<<AFg- -JJFg UXi&HLrQIo!0!zE9X KT& ^h8I:ST)2-j'sqYCZ70AB]!K[G.+'-ibG0A ˧Hh"~ct:bJoQ#']9>+݉uV"."("}jx3ajR*Wﴊ@_zm$Pa#O['2m!VMzEdQg?5EU2*;Ӱ Q"9߻Bw\>3ysI[ٰLlW2na,6ؙmcظ0vjqf\'R|LڜorH ^m .. \}6QF  F_3#绌r7TqplIų}h 3X@ {^ ץVP.!U N:*DdՋJ5±3fH. rWYjEgJ Uq#TФUD֪I/E`dgbgb`*=jd?bЬ' 1'()ppT+,- hiY~UA(g>}b*Eq+A@PH*˅eg>p*DZm^AGȿſ~i&~%w{>kG>- Ƀ?@$R) I[G496vWƯ4 -Mb $>|p'"; #XcL?'g̴Y_RwY1xpԐoyA:FomqG~ȫCP`-)3w5#κٷphbLeʘ9aE_:?`.>4T~p#fP9ZѮ;.Vfx JCR١X䠽;3k:w0 oFk -jSNRH] Ǻ@ E*pD52rڽvu K駱h/?)i仃&m'UFub>8B:а hGFHv-k ?RoNJ]BQ (i?L^OVY ӞSn8໮mo]/$$K`CZSPr:s z1#k綖scu]#w0Na(QuRo$"M{G"z{ X3.#Nq[F=}Ȓ/4 - Ex7yJhG`ZdY7we[2!< ϣjbw -}:h}`c8YP }V cWY8.S$:y%=$H/x!I{&!n"&'#+  3otWSIS"!zv' >QF!q)Adp BJ6=a~ ʅ'We7@h#} ej&ow^\N;CoB A~6\ZoY֕g:P_GؙYͶunmOB o{Ͷc|67tA:ÔVzH̄؏:HH20)kg3`?H.F@'EjŤdejniu@F EJUc,ʐ7๚roodUÞ#6o ailA鵩T\vQ3q  B685q<{Gt/@1H6B4(W10{׎vZU@~ٸ?2|m^ϭ ߙ)}~".Ox$8]SۀixG6 H8TI:kŸXL߽5=]?>i P -cKakHA*=e*a5AN$`P,u KLe$JfZmN6ShЪ'M/~?P`hkଭ^`vK<4>V >5sOkS_f}>[KCƁ`h -<ԇů4af魋YM40-@BgY54 XDp-4Q\\T/"R($@wRe[o~[3 (93%ء?Z3m_l.;q *08AC݀jHf~ri -dĸ%r2b|l,62j;\="3$2m3 ^L'WyE={Ӷ6vuΗ/(!/LYwP&aqI{I1)P1^TzHhB T;U^*4nӘwԝ5)KK\ -!}\,ʺ9So:GE3@iJ`>~>omYcϲu.h]rLscMmq1/?ۢ#<K*WBS'OZr0@ ]ņ-" -LXD@+cMAv --6Ư[XZƒF@|%3:CdDkZS0bJKP*pu< &Uo~ Z@wkZ5nf4n_AǾ Ege1~kY&Mk3x7zL7foZx< B2#y눩 -3fqnYXLIb]!m-ܪ -Y^h""ry0C[/xЪAA=x&`A= -W>0>{vv+mXaB^!Rjd:w2_,b -Ȗ@(n`9-ۺrJV5CRa"kO^+#h,s%?p_ p hǬ&)D#)>@cM!"n+$}󽓙Rދ |!k̲ɲ˙VΪuZ:wjL@'0he`^A.apz8mq@R -G鷝2UPT<4O'e(VOn-V.tMw'pvtZ)[T,xP~sLv - BZ\ܱ+ mהUWy,J:L -SRyAI@ZP~"8~iq\s8'#(XiyS7&i0{0l]]G<{QjS7|[c0pCdD>e zpj)$MbRN@bq93. PH[F4i#+"!* 8jm<\C'^B@ev$u# 8#*eSJж6W_y;^ol>64ցܓ9WCw%?*Pned<2 0p!|)gwbݶtHYl1$ }Em ,ɋ{sR~;#sAn -Y^ -0B͢Bvb]1T -ThdYPp)dPUtKA -&HSp*j$/!rΚ9[`*{-Y  1dcK PLk#ni)0 $P{ id߶C'CpD>-da d7vܠPmRȭ<]XDJ}@XY^N9 n`S:`uӞU=4MeF$jthBܩr [MC֮ -q -8:u]>8b9Èg߀[v9eݾuXXJ> 8?3/K=geCo{\d ٿV1<.ǖH8j>2eጠܡJ 9!nU9AFA֏hG)W%u1r%aTi# I/kCuqP&2;+akhZK ʥ{:k`L@}]:Vo]2.Vryf`o{9d0gܘA5mz!0NQC'ţ8X!` #EWL[$ZAo%"~eD>Zq[a9'6<v[ -|jX!Ϥܐ-d=R^JeB iPB԰a/-Sހŕ.i&%?#'*10Cnעx6Oc x]9,P%&= -vR66!FaB bZZTǨ`A&C BbJv#<"@4IzHTRcb`U.NOɥ`@*WiU< ur- 𺵣oCJqxړ86%DhUtx3|r /.C 2p, -![؊f7Y>6aB $#6t'CKKCC:QA,0 -\Tj1 `v_Rn'4X֞$}/Q݀ǖxbJN -QTe)&i@Yqo~)cNU2HQY3%#$TɟSh~rZ+ƻ[2/BlLă{]. k@ዛijh#(h(6aIE! kY;AU@$6Bbbf!Aхq 1Ȑ{ ES95@bkO1+6DƝ[@4Ӫ"I)7A o(TGߤ8"G }0vf ܌ͫef.6Ʒ*%]<;51]2GYxXؘ$`[2dp0k@p* cd*ȴ%qBŠŃA mP ]CX' -UB:b2{SA\ ?&E}ȕ@U -,I ~t&x~|^3UA_) SZeކM{#GFjC>JUēbƐUeBM:I#{ʜ[g7  cPdP/0ɬiQT1lV0?2b̩Zg,ik\W 11Eq X-Hiŵև=dGW{"Ұ f3ՙn(Y>ݠTbɒp@'D ̛,-5-PQ48 r90#QC cc$`C,(!@ [0"x`<#pn3?ǰc@ܑ3bXuҎ6Ņp1Akİ~xn^#ZdZAnD 86`f#-Vӱb2'd1xJX Wmy DL+ c v7x4.DaLy2 !Kj};#Nf`F-lup$"Lg@u6Ӣ‡>{.l$_EUIus]ye(Wt`@,Mh-\1-8v  [ -d[~d&L/G5u5`[/6.8c4pT:ЁCn3jR<\' nF0dJf_yQI0%ҦP6!fx@: H}%GCEG[`/KuTFo -d01G$#RW Hm)l0 (_VQ7B.. ^ZzD>00!kLJBal2#^!Z6 }b4QG M9^d`K$4 xdyʼG.$ _oWJ+P -ń^Qc"aM8ÚgC1>|# ss3yrd8Tc,6=B-`4w4غ4N?]eيRD,VXxXq Y,pXZxy^PS5qACĹ9R>G|'GX2 ĠU= HGWzF722/<@F -?0Ѝ!:1k(0N/6hNʠĬ cc*8*Ҹ&U4@*pSEq8+F q -CI\Pĵ"*]DB|T)8 LMK'9>w Ӂq a!D H1BJB$WH L5$¤ӻG' /7B1!w86.i3ȶBB&_(z)!g%p:Kjch^FC鈋)85s* q>~R}U -PA:ZXH ,G $% L_I84hcؔaIZ.1nXn(neGIH&)Ľ\UobhRL -xxonxS{ 73 q Nsx1 -3 @` ]R{#׆HJ 2ڸediT8X -;NfT(ݰ)K!:J <1=$C#WBalH QS,M>_ 5NA -e׋5,50H, -I3!!.#)!?"!}x.yqٲ`?9h$g-?hH(I@؄!*yn51 (_9G!Nm FFk(-qWp 6, #ޠGql߱,Mwpu K)ו6V!;rlzs4Cӛ#& =P;uj{xr*h٘sFd Qcr>aRF74!NTķ8ف$t% q,!$sħn!yjh͌ 4^ xXLy#!^765q`޸oxxsp BDAM?Ý`vS_#xrI/Aȥ.m yB l V9ʚfxH&I!A 73j&0P Q) :>kL11)%lmc:$Y#W܏BEı|;4\ UxKQN0^/::ht1"[#V# w/6l*kԡٙ:$D6q8q\n#Tcp 8pnqLl(ig LE|dHKA"A2><|Z kzx׹iDNAœJ8]m6|1 AE4)I0dQѴ܃(~a;p" 40慿./1|y 8|'KĵdۼF(~ii`@)%†4 bb+1d#,#M 3rto@ц $8gRraLkX0 O3B1s,`8^`;7BR8A0,"󰇒^/6;PhzqH)ɘs3G*g"ND4<9~~.&jCtHoc-b -!fl"p `)\$,6pEk -Qײ8"sNV2s 0\&9g s9܅p^ox 1|g 7pnģxY1 NK?'6,l> c!:6;Ph~{( "{CFMD&67V7qr2\ѹxS&d24;cx%q8 /no80=TE@_Ѯʾ Q7DIq@%hCyhN_~pĔ꿊I'z{<m ID Ĥg`bkJsZdUdW12iL1qzYW\Qٟ^?ѥ?Vq$Pe?=RTGA{AI"/iĻDZeQ!= }42 k@ ""< x#z*:zMW"~#qt/T#RiIq7`:oc dd'U_HWC8W+&v,OR9*D̔؏:hۉ8 Zd[:@e&U{]L׷hhv =H*G`ձ3&z"KC?)*TD{T{" `wscdEO"1*SȬ@EwG6?)Sg5Cs1ʍ@H7JL}t|bHZt*AP J@~@FDDg s ̾eWE>| PHz#D4ج&@J K䑧d_'EC] +J$2{6ϦSWǥa\:A &O}Ek.%kHlA + mz2#llghӝL㝦Đ +l +&Pn-F<}&`CKZOUGaZtҴ.,'GPDksU𽳮+@!_2E{ %j@h!k{=K֬iu;64uZb= +|l(^"uڝ׫j|ʔ] c_n_$Lg=AEhk ǀF3rvUbV!q+2ULYˠZ$@SYmЎXZMc\ftOV}o\e}g6ULj\j'\!#n1#}l5ʴnE?He2QGgY-myF5[b0WBH9@:7GBbin!= +@6YY +uUo`fe`m*ŎݝWP_IY +ļ=mJ +Nc8*~f$j:}糨drP[pW. PgwjQ9w~ZHaWi'jq?ir29y]B}:ւ;rogcA{n2\P*B-l^*Ϟw,QK^1yPϺ]ԚV5Nfjԫ @se|ph-Zi7ӻRoNNOw{}Rvb-ci>׾uzGro̐$>i2njEyN}Pa(ׄAou qq6{dijZW2d$N`᜙<%14DS`TJBa:joXSZSK#ϿoYdtimI5\A:-ԥ$ƽ5.$kb+.U' R^ij%UwtRU\\qx3u>ZFzKqt7`zV@abZ5I[']v.hjs^J[O갖 +]Yu}n`nv潔20*:STAiŔVNpbzoI(")r2z9S.Mp_pMypZ'SPh3^V0w 8ܬ!lzSsc QWC \fO__]% +V#Q >ע6lG(# RYjDRfb#- kt-)r UZ<1ZsP!"̪T5yպMZjqDHF"P4Cw1;fNQ.8guGd;59x!aPJ?ТsJtE& +3MZ#"iNmAR%BTmV&O%ZZ0ӬtbY ke`{ AH&VDKݳm9m$ڊWcNYEx8ܞ(xcnW B32@6 3[&~w.=BL nM$p!.j7\&Lq#q!,n@\~qfH. J>_ȷޛ͛JQe08{Z_ԾT葯֍k&šs*~kWY_DX}jpZX eDVo=Nk(%4‡y@bp^V}f"0xC`%Pj 9sXS"8jB8NpT ip?Q.ئ\aoFp;b +9y"aik +)jcs1L;M.Bb^4z`0jʥUMZ1o)Pէ/GYo\_z2s= +%63,ÒaSPvUAa{?b iL `O=q 6P.1nCB/ǐUhߋyW 淮6yMt/u؝EAяϺ.N.j,6C9|cb1SjEಁq)SOū@יc'j33[}A)/}<0V|ǫ!ml إD L /$LDm՘$8]'~o5G&MUU;Za7j<8hkEhE$f@eyxq̊9z6Yx67s 1 +w~FzIU>SVb?sYYvA,%0E sEd,#Zޣv,+ 9<|,0K[M8C RǡWDJZYﭜp4O`- +ZeLo9k\$epovIg@l[A!h{blClLd ̪_~~ +\ƙC:hX9%#泽f>>dvYy.IB-ӓq]ݤJXX{d4"`ϧ^$r冈K' ڇ,ϮQNWߋ3Ŗ's]u9s!u(A53( J l>1bZ^Zs?05Z*c.p]Z3af3ԯ)e5l1L0äghPrV/} +5ؓ@sO=%}^NAKZav3ie^.Ha/y\;pVA,\ +iu94v2<GA " Yб X^`rt!.FiS<>h NV>hb#fN-ʃngL8 ~Զu~B#,ÍO蘹@sX~SzV@qBgISY[P3;EmFJXY;X`݄6(&4=hw(6AB[bABf82$4Д+IrG"rAJ#pV&.m}gǪ6H@,ņN( rІfmCVK@a.PaTn~CL.eX o} 䆾u $z5R EbhN;9hQљ!2t OR̈wx1dEGU +IX{`Gֹ<`]S&zYMQ vJ}.c9C&&+oaBIi|'NS{\ 5)Ko@MhpZ!3-$4s<V#d$V$0@1|9\Mi}v[|;DoH$`Px8:nRvзDo3DľoOyFѠco#y Vˆfr)Ey?NfNTmdy7gChǃK*VB6U?\5 nkYI"~:!pm.K^G`nGMwrCr hn/_EN\`fXk[jkfk۫ Ymt=Libgn6:6 v0Hӻ4Ël?IHp +b. <8N+5/"34fl lڛuISf%NuݤϨ4cbђd#/XI ۿ9 [6Tj;76l>kng^6{[Y6,u3m :ctB,fW410 &5#AouoY;MF^tԓ{6'sKs_D[ t"B/WB~M=#?@ҭ1sc.e7w%jLQј$&;~N$o`oetwhw R}Hx9lw#;YOs?÷y\}I4G<w篨nk݀1{ɑ/dh'?6 ʗPhem +:n% s4ZYj"VQ +xg)F7NAϥ1L VWUirT=IrU݇܁ qR*c{G"x~lexIy`𶴘h'tiw\mv匾ÛEђoi6nl'ețxUyߠ{jmy`Ŵvx\Ba!o0QRO-[7 p7+BpRk" [w2no4{lYA]˸~|4}E=iƐ^./0oeIInwջ0h$8Fɍ{p~3J`(>~m\L-ӑvp xy3; z`ppbE&ؔz8;!&Ov#VGHt GpB;$\}QioK\-O<7ř[6/~aU2>˹6?`fZS]OU)|\Bt琐O:#zoϳF~u aÒ톫ɋ >*c%r1r0h&H-y1;gz9L0GS U}m_g rLsnߐr+z +AGϒ(,e/bW}*!]rJv,I#n<'UhMϊ#Vc(x(IJ}p+FISuH9D*}Z _[3 ZkyzQ_ 'Gh>"NrixFv\h^qsaTJXkj k'9l 1 }1 +9wȝ-)U0MYBrBU>k:|wCTvWe!G$wSʽ9Da3Y3;2x/?-#H)8 5{<1N#d׿0>C.-55sf yr6xh#.<kwz?a>fQ82vIϣ*gaozZ P1 +$FR@6g$֬ L)T_/k$rYzMFWq0 n}@%s( f>\ %{ عf6qGўވrc~‘ͷ/Tǽ P ݷ;t>J?1tBnϛ0 ] +)fR0Mp?H[5P!!?{0o X'/ph$"F!~|(B|E9B-nP1j1ؠ ٶs* OXs.c(j +IJ)B秷eVu :4,rW&Uњ왾;6 cnH_r9Bꏼh|*u{O_{ +y THf'xF>|o}/H~AFױ8!x; &{HD%_Ro͚}?OvӀG>~DO15ioWv52`ܡK K_;_(i̿ ud h/}G7MJDžep!LßZs.6@J3GOo&}pr3 !@!?\_P|| ]A @?`ɓ)00 oS&: Fwd@?gyV@T <I5vce@RMT11h?!8&z8RGiؤHG`0/{,yl΄jϜ))[ȭFiC9Kxۉ+LJjKѢɷN.}a4+ [\wq,r%J ~T-tˍm+T)i*M0c^ޠ!/! .ʩFĪOҗvMQ <:)x]mȐ\>cNZ@;pMqoTH#,FTR9uk- +&>(!Ţ{$$âb)3T"7e M~bJgճ m7z?G4X\&pC%ЍbהּmSk!ʮRXp)x6FXq YQw"7] Pμ(M׼;W՘4^CUnYu߮EpNZ'm*fgoIWG..hhN)dQX6j`#K+f*"%F vj=k6$1'VǙ_#=::=P:KJT~Hj@ܶij+^Gόb  n,T<7Ciiݼy"G7X`fZ٭6t:O8Ջ5! dߍGNJQQ._C=g!dn$ӵXaPMX9,נMYU(rǏ,<`Ƃ + "̰@ڀ/;Lqwh 4,c=YAc9#A$PKzޖ8|Զ$@\l%of`bՄ{C~3EҼ!m@V5r/y&K]/3IELv2myo+6WXĜ8~U9srGb3w8+UUt`wp:8 +"(f(Xqc,R6'PyzlF|滠!Mo!iqCsB,4foG3QS jPt<^V( mtueЊїRJaaMo\k0=ʂcE8'❅NL0WA;4t㜮Zɱ&OtvHOE^khgN w"Ɏ h1*} %TAΐ>{1桤 + % uฦҟx}އE9EF4NЕ0{h9L!-i)DF? +uQI= q!zhJ죁?p<%q=HnK[zh~tp>Ϝ֓rКP% #?bq^pOhΙ{!)%)9C TDE +"##5& ϚBgG^FwY{r]ָbY:lsP[ bZY8yQunM }VN A@u]ΒY/81Ye(6tk}F7d02F!u$Tb*?J+v6 ):*DG +=T"E 4OZh ȾdXT~%Û@z]OT-,u~ܗكkCcHm22~qĵNT>1uo;aijizL|sH drY'PUI_yyu>~ L@%$=R衍`9#BGTdwؑ>q[ydߤk +j¹n3Xm ~W,ַ8bC:A(ȯL+G)eQ>|U..{d8xi&lG*B~u@4z=ΩU;&@6 yCuw6R65;$yz|͡ܧ!EiUF~ ?u} lҮgSLvoC} +ڪ&͠d}5#>={*RDT+,h϶5rFPx>z]I{'1UmVY88}SPHec֪I_B68bwƅ;w{>o0^BވLï%ͅvb]:iU3zm&^su&/+3&HL8]V)L[sPj |cfd XD hT[;>g.34+O$yHâDdreIy~g*EL÷bGIl#}@Ev)Txe>}6Ox 0 !JA>z^qehö>mHߞJUsz9evG?swޟs7thUP6QfsXg2Jnۏ[m6f9|7`:Rإq.Pg#ׇ. ѧ` :WB~^A +G?F@bh7:+m:cߧyīe虿8D}KC"gFș5r2i5̞cF}A ֔;bODvJt + JH) KOTys m[84{#3#ПCfBM;|47n쫛RP$2̺(t]u%UĚkfM!J)@d0xir62L +q4xJߏsyj GDvJ:jdtBQ * +Ee?w{8K`U#Z N(y"NA K{h=8G_Hej޻6 mvwD$Mt9h$H=b?b a9gor6ً6Ȓ+e fykG4*8w?5I`'m +|d+h]$Fw w6Й0vݙp4CU/tG 0xf2 _Lk +0^y1&';z]FPKe@:oq^߀j@:0{m ~IgY32)R(V|'Q|hHd qvL,&8߻^Skz8aAG|<#@ih0_̶0zkܜ{gxOd',B~ k㼍ܯ6t/GraBu3{oFPNa +HO߷!5s}QgxN^'$J^;R߀뺌LbG +=IE절XńvDT7u'y8~?{GR3mu;q^jeEүۈ\ߺd1~kGp6=Dk L:R,< &p_B~(}":ХiwzT FG(VQg/ufܗ:Rwkt,Wkq֥Z@w|&1~mmuH>)Bgh?7ZpQ#}`huMᜯ!|4n]1F5 TL%R_C(cd7pZW"yq^쫑H^y} `>~HWD~jm PP X` NHK|Mᜏce:䟍CwZUB#OQ ԊH?{os^g8} }ǼDgi~Fou(yJos>*'Hi{7iU45s6픪dh@,=|Ϳ:;[ik;"v:ƽw,7^_Ca?37ҩO RXz_2y.jt$: hEc':v+PYg|xS- e;y{o %wj] ^Hz'EkM ݷ99޺nc#g$ļ?'Gġ/rftN Q +>|(#}=^64qr^}OdI=~ucq^ø6?؇2 {N89uO$2?ԇE*F&Dd_2?>'DozeQ!ҩqOI؋@ {ǺA Z 5±GpM_Y(>CXV7&'D+߄*:(y;x$}!ADh7">?0B;lm?~1>NT]Ix8$g<v1xg 8||fl-P@~f"5Qh)1{jtߏ2hKߏXG1|j2 \q4 }QnݚAfP{5rf0>: gY{4m^&00vha]hKA~ @:3͖ad]={pkD}^3sQ;=?< ?(Z"Muw6O,}ϣzsy}FPhD¸f0E;Om>N6s?/t w&|lEens|$N#cmq'j0^yqP={'Lc[~ro ^]sGٵs^θ0tlKWo)l3nNκl͍Se;]C6ء\a˶}m86 +-1tnL9*!݇;_3η8}û5r, O +~ClW8a<:'Y +L߄Nb]N q`?-H7R衽t*Z@k3I5><^jwbeJ`;Hr@>;|~7,?}wݓ{>%?- " < \bgs]Ҹc.i[[1m>Ma}6: ˲q^wokn[ߺ27eM&rmr4"&0yi,ܽͶ}-d.jVƏm_\4nĸ됍Z f &~i4ouopD纱&%SqsGQ eP*WJ`Q7t^h2!p,>'<mi<{F06sHV"=6ݯ)l:{F,U8y͡ܯ 1uj ֕c=4NMy G[rzoBne( +6LQ"M7k [E7 5CF4km*h5~s}1r< o(>4Lh Tq]n뺐_w, x>!}㍳eh3fB2m˙L,lÆnYvej.;u^vIvc*pOgR[u/q].Gsie6/k'$4^8%mK9\❌Coe>5 f:j6X9tpQɲs]~ѻ0zm04-K[\걬Mmdٳ>ș8:{wlq6z"KÞD4B/)q.@ǒL:|aobEIw#i̻quE)hIXTKˊW`q +\F]x{˰CY(Fa\@Xl5slAqe-r_T1rsPI +A%.,bwx*Y1ōo@vdp=!-5`/vKe`X74yŠ,f&uyjzu A#Ef&F'CK@;mQ@d3AHiTˌUDB3#U'!u Lz{l@@Fiɡkˉ01RfB̏LH?x~~2u}B穢Jf-fKxC)RE*=[̍b>"<%e療J['*jAt? 6 +0ӫgG!DJ(\CA(HwI9}D(cM"&9)r&ȤVs1 +2q $ 'Y'Q P7@xKz̏,a +{ciƉX3u+'@R1 R1@%bY +i-@byB`(&erc(e,q6IDXJ(+r#|' +k1y&56o6V-0?:arK.rW.rk¨FJWӕI\i$xC7;X7?B=D~f1t{x-]`,QŭP%FLd~f 98d%JpZ  ()praI"$IJ-a\cXG-sh )qB,IIcF7rwv* u2)[xv;Q2 )AiIi$G$bMIX)]"Al@%>>6ݓ~Hb,ĀJܦSG 0>=dhi"pH B"!0 L" F"Wr6 LQe2 X:m\YqT9%|KbƐ+w+l d9'6'hEB"QEa-q=aasc]m XTe Z\xKtP$w(9 q$FĝE^md~ ;Fy〮gEN ` !)2 ( `ᤸ8Ӑ* B\?2ͰaBEI9cZ$,6,'p)Qj;Mq}nzp\ Psܗ7mƉĮ#gQO O@tJdܿɈ,CBhY]3%)~ْ?3ݐ=ht:NRԐBlMs32kZ$n(%;iHY! 4MO*u@9{ۂ2l/@kФv0-(XS0$X ʖ҆3NW'rK8A&Eer'*\+k:}0xN|3,4h@#_QH۱9 ()oЍ +ZȑO(DdFSTZ-+ ՠpN\uHdvJn&3zCFq',j4"%Ԉ))q Iѽ"dYuf#s4Ky +[eE={J%nG%[<QhpC>3-~l8#T`KJ"X@t:ZfքEq"K"NRn2-a̸7qq9L`Mm*/y + + פE%2n +ZP + rٶm[jwT|~RАPn&VlMU>QDqbe!s&dENT&vN(ab,ZjF,JT%l%}`{B)C& +Pn*Dސ%aA/TI3\YŚ2(ǎİ8 k#G7 4IkwÖ@ѭO\r n# 2`AYc8zh$}KI- Vȥ6h2vZUX86-tf M9`\0]Q JIR!dnލp'l1}d1S$boО BF91+1f[ +Ę wUxt6ؠXd3JY~"w0 3m +~Bw.2r@^tz8s¢;[*9q-VmCYi)'$EpIa+͵RFR@Mdwn}rQRc )Pcf#5^[46'7|‚^QQ,/hn,d(S";"ŦMH`NTTU[$ېh"]X/֤ՃUY]E>gfDEw;wd@-r ƌ4: *ΌMJ<%3IzqUl4Ԡmb̉Cܢ2irFDJ2J?DI +k=`aԀ 00"7N%d `+7d +ઍ@+K(+׭*( Ja`U3$} A(CF` q + ZH2:c:P>'2? +I^%D=D}*,̕ÓΒYkOa3E"ۀ(♁Tz1gLH^QNg&$&zU) Hs~&z(T +_bV&$>}N+}/H!@$?- 0@feACB-FGGL>"AҰ} Uf"ML;1~iwi&٥RD~'ݣgDe4nUE$KXb*i3n 6hSIKA3& + HȞjÓ8ߺTZ`Hi>$jH +LHU/.Sk}$Zh#| PHz +A>? +K6_V/񽐔Mf_ +e<( LکUI/ !|PJ`xGxY1:i@kBQ:vh+ O$k$Uo}8'ۄfW:7H1FX48 KJs]t 0_7<Z_Ff*Z=Afp +NHTŶQfЭs.X5Dۏ *T`v(/9h|Ά*̚N"L›>5^CJk IDZ5<@AȢB'aPEwhe7_Swx_O~b]E;z~G i +ޤx PDzqu@ 3#?'W;Ma cF}-c0>-49lI^I=#;(!RzJ%$eŃvێ وH8IHחT +%aO4*K2|k5bYZc蔓T5aW±2:3P9C` +#bMv!g];&Kd +}@IsଵXpP~)4lC2Q?]AEHԛRPuJSדUyVg,=(yC[׋4 :*kФ3IJ\6He"^̈}i?%2%@`]t׈|x==(2!A~ݧT[ FHSE^B@?֌K{DgacK*h7Hy?.M⮒'vQ"u O*Ff%z}`]٨~BD#O؝Bx6r.3X6kw:GUC6X1|mr.s9`Զ9ydcG ^HҞI;kH$ ( j`v݉5|@|,ouU : H0&i5AQJDG"5Mnu@TPĔk-vO65pƐnG ƥg3""Y"S"&ƛGQF5!, ! )R058Y;c6SbdUΐusz GHgŚU\+PY/Pٯfd <<@v"Aԣ`H\k +EPg-R zOC*~Xcrɕ:A *H`oyij>ݲdt~W/WﺓPvP 3V[־u?@g#0vfsomøg[S"*›f/sm옻5M!g0%G R*3&N'$ L +Y70 O'R?~uѶZ1i7o<6AyBRiU/˰gǾ2dl xܛ}.E:iհgȤ &ûnhwn6fЭ#uzm*]iTov `}.P&#λ~M`O%3)h?;("*{i9 PLk#M? +U ޵?V?P_6/pg _swwfJ߻H޳" o%NpT6`h7&QwAu}1n&wo@#u׏O+feT؁(Rk*cJAYJXo BP)-4 ص9<|]S, kRٟVS&,jISK9ء>,Z38kp'1ϟm!8vw ܧ铫cb8Yo{6rߧu>q46a+~o:wzbV.f56q 4sV z\ MTe*UŮDK +ICC2z$P?Te H?!JAEΌvI0vh_G0 1xpۗ:a\C +<NgАe7Zo_\81vI#˾Ͳ̟y(WGO;~L` 64oGQ´m뾍] JH SVE>Iثh\^RLi +TL'89#}UŎCrUJ2yl540ug3LY#{&/-r*r," 𰕂a9:%f[15 '|7O T<\r mL CG 3nrOe_Ǜ\3h7eyKaڇ,?` t98qvR> SX_rxhS.*/2$Oݺu-[4Z21!5ż~<P,nF'\,,\ YNeL?okeS%v*0a)ez5%1* n Oci1W@ VK񽖠T..BUkM)-A lq4Tž L,hmܭtkB~]!  8eZ<7݌1ylܬVk9l\] 0`ʌP#+=ƹea1yn\'u\rzhr+dyRPunAB%([_Y)1!JR!*n3"#cP\}׏R .%"uNbLC8'xfGy'2VJ^SVZG:QaM~]1^w < +y𝜝,]v('ioK^Wh70([H@U&RRB eu4qnHObl R@VȔ> }"j]=*H +R0,g xöĒrF!dP6꣇bmQ!"{ceG^ʅ-h@ٵ̷a8 xJߪ!T0id.k\,')\#[ul)XIn Imخ=yˮxnBE`Dq*:%*gHU2U"7{@T65Wb?NNfJ {/&ӮU3&.gZ961vjo خy̫}0/vjd Làb``x  … ܊o Iq*WM,ϧv TAR>pHDZA>^ZZL@5vܝDjtdj#lQv@AQ1g*,d +Y#}_n;uZ>ցCp`_x`+4<<bt,>}\52پyes1d~X["HDZ%@3s*% BprRZ^ZV1iDbXX?iKB_ȡPmKᎀ$*:i&BۛȈj-*A1iEualZu9\̺Xyy .+7qcմY<[ 68EXpbTv`Sk Cll, dJ]1nk%dTuh=n>lxNvt +B n-(AE`lg$?rCHy)Q. +5B #S؏B +LyWzD +xF8G[G|gevC[\*z]Z\Ev=ȃG4 C&.l'OE=%ƬG\w֏On.Lt&#ܠNѮ4Pm|d(;{3^ؙ3p37[ڪt ^^dv^Preabac8uo`&6ΒZ.Ma Ӫ:ƥ6K2- JNAt an!EQf2{lC؀0 +!vdz<.mp n\.PKKƜŅ2`u URW2?X]퉌NKSLx.$u`Wg򎻡d @&ƿvRE&Kz*ltc2|zc0ovcCcccbWpKԔ7tCAD [c0NPD 34=p0n0MF4@n_f%cTfR[XxjR8i-؀ +BXUNǒJɤhic cs)ec-\qc11y|w$m|8dt51$,YN3@$pÐu*}E='`WŸcjށLlR%{$x"".}qld[L0T:P/#al1c ,BP6(D_o˘L;.zx`v=s[./zZGG7qoxV@R BĕBF+N cZ@-GH(|T:a\Y ,vZpBD*` Ъ . +ly /C@i;\ m|C 1 Zf`L=.HY{-CTbX 8\)ΧOJ@ P|n?[ĵLJG7pHBxM&7l"- m,Rb1)P߫Ó,*vCҏH ~\%,#޷ڳq4|Y[\@OG :1\6X7xiAx +Y!^QcƯtLn|▿_pEyU@ɢג@4Ĺx,`4Bzh,I6ӐG_-4:ZdxyE#,fk~28t]BbZg+KLXr+cm-bQ,Lg2‘bi S\RlyAOiM| A2BW?G|K)$a&xj[OV/ q;B\饇ȼ9C?;)H@7RJO[Ǭa l\X[N.:8v&9)F'fLd`TTJlXVAʪxkMS pA3) %q FGB**ZDG|w KDRT705q/%&d3\LM6hq5"; +)!J \!-42EԐN4<8Zp.ńm   P4~u2륄,K,3!i{ q0#.TJRbNF<̩[Hj3ĕ^?kMLKU)@Yfha L92H/06~p~m$)1bS%%jPn12 +c% GH9&#xFpsUMmI1qF +H+M8@!M5C\( OK3@?@3ęn8 $(,0k~fII3t ߧ#J_6Rk )M,h +6’=sPo,c .(8qʪQLmR_I4тNJMo">2%s|Džg˲mw02ZxD砑,Bxi'" 7zk$ciEKX2|9; 4 >De(">8_2۰ :.zx"eSĉA|g<4AՁ,\WX8|m]qbqa*^m@*>˥[q/G5 HD +Kp3?< +&/,:Ç`z8SP1eGk§CXX!LL\Iɢ +beU)LR9p2LaƧ*:KRƢ.m5+'%dįpx S7> Y>B|+hsq@FJ? >ùKV煈`b`/Ё3 `fL4 { X`Lđayf"VMعIZ"a ;-|7q|n2|āyxJo0SNP5q5=wO1?|)Ï9\e'q"~o / +1,X*k!>R7' nf1 btC'G7oD!3QN"4f2j_q? + 8A!F|p.S_xON'T-a;D98\pzuiĈGl)bX$H:8|"0yĮQfg<MURbF9r] +P 7;!<~Z s*tu"dd&xIU c'EEr#Éx7p2gLc85,ךjl5o -4 B0ͯVN B<*76ht" !w OD.87^tk|!JIo1"` 3`?p]<_pxosacCx YK6";J67Zhzu@1SL#Ŧ*'cD8X;i<iCMU") +rHIXh8 0|e8. &!R tez`RE!Jqzd'r=>5=TE@_Ѯʾ Q7DIq@%hCyhN_~pĔ꿊I'z{<m ID Ĥg`bkJsZdUdW12iL1qzYW\Qٟ^?ѥ?Vq$Pe?=RTGA{AI"/iĻDZeQ!= }42 k@ ""< x#z*:zMW"~#qt/T#RiIq7`:oc dd'U_HWC8W+&v,OR9*D̔؏:hۉ8 Zd[:@e&U{]L׷hhv =H*G`ձ3&z"KC?)*TD{T{" `wscdEO"1*SȬ@EwG6?)Sg5Cs1ʍ@H7JL}t|bHZt*AP J@~@FDDg s ̾eWE>| PHz#D4ج&@J K䑧d_'EC] *;B;#3 -<{Ɛ l0{vUGhZ12?WEûgE<$jS,~(Nyg-&ƒ٫ZP-sL;qvuX1vl1zj Nc' osާ>OW/4JB5$=WPRZH}Of !(}5s!*k`ZgJ'gh,ֵ;=BD'4Q& 4 LP-63+#h6,B[ĤWF<9Xg-ĮW/6kb,}TȞ`DU-D)і#G1ZS=Y%Y?Ɉ[ KV o^B! @Ji%P_9x]:YKZghv mOĶ0u~,ggpBuzRf`#>  w5p57'$,&p̜[F8vuNXfj,H@}7PArۙ=zg褳ddv lyW[01nfjw<>~)l8}3: @@ -1138,397 +1162,444 @@ LN ONi GF sSkbG;|VR$G>(33{<"8ٷ[+#5B<5(T]AIZ oj^#u{N_Ɏt|`CR_5P'3jKH,)SǞ8GܩKBFze9a6N[GIU} Y\m^8]&Roi,g0yJ0 y"hZc/ugZAJnhu|=I4ܕBx u#NYsjKRJ>|[2.m&RC6ZKVSPr:SXRJ3"z& .  \179'NoJHD盷tH D4XSn+=,KkA tupVi%o- =Lk{+":I=+z=Az=)K7;OKFf_: w ITbM OL=&}#hF*Y98 QX -MJk' `@~} CP:KA=oM+3&6ptM J]i!.xDG3Yԣ3LiE\.3A [T*.7ә Фa_`OAZw謉0 혽6[hpv }`Ck:=alr[.{yY.;ׁ&v<Ӡs3d9NZh:}~;:mXX@DPЂFJPx@H8yT*."ev&Dw6/6s&Hy"Bg>Z,\w#G;h}.9424ŵx 1~k9YMo|(GLc3܏B}+ńta+WK(W @ %?%DI?b\R'( nBPa1A TdL(vY?zQ2o[I7<"LÎJV2=,x*h;1~;(Lb8%ԥmuBc5" H$/tfK]WQK`tqD\t?QkNo0vctn:MB7cshy]:>𗱃ifL@[j Ťr@UR%(?UzE%}zwjq90ri4۱l'[a6osh7YGߞ#Ϋmk7dt>`"*_:8\K!fM&@ P0$z^fNZ0)P͓4?9#z}Ȏ@$ 4 cۼS"lPRם]иdpw8 rwocִÄ/΅s@Eˁ ' y:{dT083  $Y+.j&;|5VO.R_Ȥ3IJ]!!a`Q@Jf݀e:AYSbJk8ZŞ Ӫc48_c̠#G q]챬'klfڛ]tB^K'u91wVVѭmvOÚ.l6VeP_%Dۤ*5t~L~;&&ՌL:' y.$\4d_bMYhX2bJ{ )ps^?~ѯ]~$oԇCTpU:*Chcyqn1~n\Dj} "]}h7my&d ?:QOKԥm{,Q)!9م.쫩``Q$"io?P"v*6VK Ƨ3|r5U.EZ7ȉ;i4L@*q>` iTZW K#c.m\8b5?n\ p2/ 4qZDr#XAnVNj^a[aw ̸-m52+ h,\"NC@c2lQLbG=tfP\t)#f V\!t }{+\7>\KPW8@ RLByPK_AĢmò+xR)" !s`R3m,i̿.9X/;He<{0/3фs'\۟JA.M}/tƫH0]EBe Y@p#09"09pr,{~9FsBNYWnɕ}7Bc(W|+Otm)T;хO[)aeIvPcY2ɝGp>d*_\uMey&@eˋoK7rb+q:/)L"`z?kz[^X,2J;%%G{BL!sHN~6 /{|aWx\^=UrO}+|'|<vu!m֢ĨG.?k{~:Wvgsr^~*'>ʈwJ/4UqyLh_*׼=ٛ?\8&_:{M;4ch\$gɽ5zzjm}ǹ[?\ |՜SRS/ˇyxT0e#-{s68upx'7f/i Bߴ>se-ĝ΂yg\Rjբ9]k7~r\VyF`7;+cDcV`GǠlg}Q=I,:: m,;g[ڏ<˻9`߯FKu$ Jqb2 .gUoABWv8}CFĆqseۢNOŸݷmQ/y1Gjr-YgkZ+dXcC>oX(pS,e~ۈ JY1^ԺXdugIb\DM6,vTgMܪ=?;u"ved=l!r ?(YgЬmxX;2L~֠Led5M㾯2^Y"P@eg-.6bP Nܫ"]Bu{{mvVj$׬C<`$I we[p'zpB/af}[ --:|r'ܛRȿ! %'Yܞ{6豀G:G^x[$,}-I4\wfpE -OGGHR \d[i05gHO[/‹>ǶORtuJ/Z\{r[P忼xM'f׵'=#]WgQ 4/r+uҋFf DHfgVǘ?%@JvmsC-h.+}`Kn!Axy!U>M/8ĦNʭ ӚM&8 yٔ_ J;BY ]"󴻭;n-are,8aF5M\:䪙+nc#:Pn pͮdAv-v_#E.}/H@&T$ӐC61ySmFurOuש;SY[!9oyAis]+λBwC9/>Jô .-qHn'=m U$:h3UX)(P HVR0B񗄖\C\jlI|$Sy19S.W!3W/9T̄b<&ߴZU]_ٕk#;sק;qe=^#|qb"o,#ܭnVV /M`>xE"icp~ШLW]~Lg᳛$6t:j dB🡹ѹCr; C)xeϼF "~mGNL~S5yg]  ^ @o3IJi Rٝ| &D% ΣR`??ϓd_9Ȣ-i@p~f%Oֶ++d}6~<( -z|?E@/}v$|H|Ƨ}HƪХOU{;e{>\4[RȵI0 (8Qͫ_%GGz/eo$=kx6 k{ng?zG sىn=?}^I^a>DSLϨӻKE .Oi(t: &lNnx8,pA[5vx="P Λ;FMի<*Har rI⏵rA<,KV*KL- ~ݾ"\iKL:`bT|E/ d^9\ԝVN# -` -pq'*f;9*O!"0*iwpT -4'tND/9Ue@ĵwXI[RC 6*x8>k"^d ئI,_v0#F2IW+(%\owFoEhA r824d^ #Ƥ&ø-KKu;次 -ONam2G^s'q@cP_ЇDaJ3 (B-T72~E3P+yzl0 -{>\.r!E| ѕyl6̤ڷE2"pqN"WÂQ1<ގe_'r fCnF˅m LS] w?bXT1Ԇ}уqA1΋T `{rT-]]ۨ34) "*\>D RPjpxD!1KΐR|W A|O[ӗ B9^sˌU00T~zя*'OvHL"zF .ߵb춙*,aTAV -L~9dE>L T~-Bk|]%_F]x.3 9Bځ(<ԎM) p w2dT%W\QXPbhdCxW s:1uH{-簘h0Z"qr3g5ALA"# V¸Øo!x\6 ,`Gٮ6L$"~X7zOYI a gbʇRERE0TBL4O8 h?m)"ͻ-:: "xlT2*bL( -} }jDջq!67]i -Ǟٿ| t)`5)\p]ȭԹ -"ܐi$R\8Cd~:bSC1o>{}ZB^"xtnMj خ){B &^=Z,\w#G;h}.9424ŵx 1~k9YMo|(GLc3܏B}+ńta+WK(W @ %?%DI?b\R'( nBPa1A TdL(vY?zQ2o[I7<"LÎJV2=,x*h;1~;(Lb8%ԥmuBc5" H$/tfK]WQK`tqD\t?QkNo0vctn:MB7cshy]:>𗱃ifL@[j Ťr@UR%(?UzE%}zwjq90ri4۱l'[a6osh7YGߞ#Ϋmk7dt>`"*_:8\K!fM&@ P0$z^fNZ0)P͓4?9#z}Ȏ@$ 4 cۼS"lPRם]иdpw8 rwocִÄ/΅s@Eˁ ' y:{dT083  $Y+.j&;|5VO.R_Ȥ3IJ]!!a`Q@Jf݀e:AYSbJk8ZŞ Ӫc48_c̠#G q]챬'klfڛ]tB^K'u91wVVѭmvOÚ.l6VeP_%Dۤ*5t~L~;&&ՌL:' y.$\4d_bMYhX2bJ{ )ps^?~ѯ]~$oԇCTpU:*Chcyqn1~n\Dj} "]}h7my&d ?:QOKԥm{,Q)!9م.쫩``Q$"io?P"v*6VK Ƨ3|r5U.EZ7ȉ;i4L@*q>` iTZW K#c.m\8b5?n\ p2/ 4qZDr#XAnVNj^a[aw ̸-m52+ h,\"NC@c2lQLbG=tfP\t)#f V\!t }{+\7>\KPW8@ RLByPK_AĢmò+xR)" !s`R3m,i̿.9X/;He<{0/3фs'\۟JA.M}/tƫH0]EBe Y@p#09"09prd"_\uMey&>eˋoK7rb3q:/)L"`z|Xk:[^X,vr;%%G[L/B sOHLlF^|aaWx<=UrO>VJ|'|<vuCV%mעĪG]/b~:WtgpsriV-'nʈw_z_hVhqyLhΏUy9{:ٙ?\8&/tC;4ghח繺Ijϒ5zs8Ϲ[\ |9&^W/ˇyxTF[{s60zOf7v/i .i=s%];k.5ygƹP]խEUq)k7~r# ';{G~IK iigQ{3\Y:ɟu\> 4pb:k Y7*M6Ut!/AWy0}7=hŬ0Y\ʺu?+۸oģ^b3Cl+ۅߵXW jgǞ;$|Q<'Y^Ad-wcڽ`uf qyOMYYΚu{vwE nM{B.?QHW7/Mo/vdnAj**}_e潲 +YA:Z=^mE:ϩWEs./^C6$۹/^nY}8ԟ;IÇ̋lIaö?g~Obթᄛ_L=rkw݆ZNu8͟x7]WCJof/=#+amȽbHorZ<:kpݙ)R#J6smaj2ّ?m X+m;fաw4*m_nq wq)nAN,!kOrB +%sb9m>ûVwjra_5|Di\ +O{ɹ4",IuPfVRՋQ̋C ۑ\nh/ -Uh43)b6r뻔_`C¯f^JhS, xL>h ~ϻ_nWt6Oĕnz GNݣsG$[ݖ+iqW<8j'if`sx\ɏ)wŦm{Qk[7`Ʀ[cG~e>8 e߁ѽ5PfFi+P`F13`PO<8#ώhC0Ӡ:3$˟cr + cr1>] B'D qg=Z+XۛnD@g_7} [Cp:d_C2n\yŻ}n ڨ9ʨ&4u +FJ,z'F6wMH{퍺4"GgOWeA #}RJH.%k<U;T49Ma4m1صUӋ@58o&\ %iv3AwbjZϵxw3'Dz2ZA,W5lxRn;z.׽Q ޴xB - U7y[ss+ћ֪'3q6ݺ Jq, T) MG ONr~-͍6.!uՙM"0 7y z6%3Ϻ" +VW0*¡`C;fm!#lIhR7@rDs$`/ޞx$wvrZ Fž}LXuN~h}߀A71q]n2yU㯣Bÿv 8ߧftf&FM3% \~H%NyYl@y|&| +`c?X5b&˜;Ӭt}ia>(C\ 11΂S@j޽af9»%2ϏK^ mXE.1|RX/ahB w8MR}3Oi^yVAK?Opf9X"X6W *|3]LvdL_ֳKꀉS)`Zt(jsVPsZ;ޏ)@>*hŁ䨐?,ÜH6KB]-dDtS+c`9MIWAWVܒӶa>z'mM-tCv`&#0N:Ru!6 @Dr$\lr!2ʵߖdц@Gpd*i&FtF I]Mr[j8^swCeYU>Qd؏*O5LJ1?J=^ӿ+QrgfYVPͭ;Zv;Aneh^/%=vsL; A(X | ]-Bv3P+kr'4lIocdD + 10]5H%c y6&lmOd AEv tA-sOEi#t49Ңг&!E3m. +gb|ۊf"T>5 RYsp?z*\2V0/2m4Pq]nwMrm"Xuw''Px hG8P;6lxC Ĩ0ϱ xgP901hF?aY~U] +p?ŋpI]hCBDn-!3?p5ɲE6Is٦, Kv7usWS& +}HַX}(V2mvh@d/'9OJEh'qL\onV=Jî篑XJwSm(a4yDZXs\}ż m=OOչDIFpܟ 5QO5"2j-g:~>f of-ԿdU [V?eG]Ev+43nt:FvH}:1?VlC$pmeK2^1b,sDGێtAq!ZJY]xWQH ]d=9A!O /$SIJ`/0L g޸xpe^Pկ#" +cKX.!wuL4f<֫V79&0 d+OMVV6SI`, 'QT6 rQ^tKȦ’l]Cm;n#:{U 9>z"u($"iKI3uZiPz&PȞ_;bY8?!Y-og,P[-b9LTY +pt~ՑqwN1QG*h􌲤Lc_)i<ţan*m pREM  ד,e\$>w0fd +vQjAXPbh` DxW s:1uHkGR[ah?T"nT5LA! Ҹ5C"q/6XGͮ6D$"~X/z=OYI\ Gbʆ +ҢEQ$!T<LO8 8|()-;,q"{m}V2{sL[) +K"5qI^4aϬLΆ_ - t.V\KDl4) dSx2f?Q!)1od .xmWu<ESO7&H5lW󔿀[)l9SNP`yxZd835~l2$#K> }P>~S:!,  -1202230bf0-acd5-40be-833f9364b67152585ca4-61e5-4651-867a-fe8ec8c67fc1806 695.25237afb942da-0174-456b-bac4-46354d7e476401efca59-9f29-471e-8eb4-1267ea85791252537834 фD!E'"> g0h (Ls,֘h ?xXy\ qUV:$0% r-$]x5X&cxRzqx>ΆYv g0h (Ls,֘h ?xXy\ qUV:$0% r-$]x5X&cxRzqx>ΆYPsj `<$tl n2^'{b'l)9e3BLm֌ĕK 钼tg\4Ũ-ISj2h%̱u΂YIɇ;1ފG"GKtPxJ`ts!9pQG3, -Q-8.⿁!wnWO"tqnt 4fBM9*$a: gy\ְ !P/YLXZsryP4l&ɬI-Zy94#/[rF(}D}'aSפ5K*6(N߃ nGO#A-% -X~lc9rWZ4K`j -_mcnLܺLH/w!186UfP+g5NVZ]ȌA]׹@+z2vRrm`VqPvN(;PgbmF61T?a@mԺ ^+XH\=ĥ{#sLꡇ2sҡ $2jU-^S^eh7`UoqƳH"W`[)6CY]KߜV;)o͓.@"GMmtv lZ[ޭ 4E㨞ĸS|b217dS_K~;Oi`C'JS ̇6[G #54.aulWj?83OmcHPxY*p0ђ1Ȉ`JcWesj2*bǹz^ܲMV*Q"? F\Ƹ^G]f<[0'sWNiOg-y}e|?? Q' 5,\jG"^(ktKbv5BBNNt`΂ƏxO} h̙N[\|;m/KK\Й Eh8c$CӎߐCbŷl)|uk"kJ73*8?F|VJJߝaj釱H#XɾF\& P@kmz,DK}=k>`^DS V䊃`eԤ4$E6'3y h`(;+iN# iYu7U6n܃!иؼߑ̍摲Q^H?dA\LiPSW* !Y& UlkJC@L[0UċbPaIWE@XMOݮ.jJ[4K݄F("(dE]Q)ҍ - -\4OJM ް:dKsv6d}u9_O MEzO/QJAof[nmdMW36/JWYD9F62'@s*.C^s?e_Ij~Ȭشyt3Nͅ;y"3=czǂ"ӜKMK_Zuڰ+Y\=d>jw/t^$6R?95QJ7zeA6,2yӂ'8NӨ6xƅpb4zKn0`q9^¸u^c`簀Yg\6( Ԝ++9X -?{_5j[N3OhG:紹⨻$UWy~0dGB3Hᒝ'qsBhY)-dh -&4;)_0{S!& Ecm;dmhkyd@\G6۳ -MU a&zh22RdI۬ I1f %h4+BbFTY6^pe?>n_-  *"bx9?xo3[k}~ +^cO4*V&p/0y,gZYJT?KL%>LT[>2746FhKMxĜڃ"R۪5Uno1lZ4AeY@&V1N< -#Z*޹b #҉h<㫥Ȣ.1߭%6o )Fv|:VG[Ē2O[K{*| ]/!ogq^^Kdi>ڔy3O`cl7y 4]C`F.v+CEfG"6.4*EVβN<+#aݠ{͛Jm[kK -<>kZ tP˂bl{WA_tV# 2x&Q e=1{ =fHY.z}L.SQQFW/AT%8ֳ uh!ul.ejҺ'eZ9uCT0ɏqv 1ላ&>{S+O~1b^7Y/(/`~ۯιy=0cD&4@0_{s%720*$Κ"bhMHǢwZQbɜi3Z>yjx\01rO gH_d>TZz ;!t}Nn/\NOwBf (KC El" Vݝ7D46ҍFZX &RJWE +/XMLNodexmlnode-nodevalu(fnam/ArrayeTurbulence;children1 /Intnodetype/(turbresult2attribute; ,2noStitchsTiles2numOctav0.05baseFrequency,eCompositSourceGraphicininin2operator1100%wwAI__id)idhyxxo/Def ;fractalNois44GaussianBlu1b(stdDeviOffse1ddddySpecularLightingPointL1(-20000zz-1yy5xxspecOul-color:whstylsConstant25urface1ExponelitPaikk33kk4011arithmetMergNod114BevelShadow4-2xxMorphologyaai.adiusdilannb-nnb2252DisplacementMap133s22RxChannelSelecAyylorMatri132441manim1(from2(freezfill0beg5dalwayrestartotononaccumuredditlineacalcM2Nnnb5cc8cccccc8cccc1cccnn(11CoolB4-xxAI_D_663erAI_Erod6_127 1;20 15;200 200; 15 20;1 1 2(remo1spliRindefinrepeatD(c0AI_PixelPlay50 5;20 20;Diffuseyellow;green;blue;indigo;violet;red;oran5Di18azimu6elevd5l(1re01112red4(AI_688213-15xx0.50.22AI_Stat8yy.5oFloodfloodblack; opacity:nnsCdd13112Gray0xxO-CompBlurT1!IRH 0R"&jAa8HCA( AAQ 1)ڌ9o`نZY$̈́BMޥߜ 'k4yam]ԉORp–M%;g-_ j5͂#&>(9a{5$.O b*~Wfj(f :F\L + V.PL)UĕC\W 2W+yxo'5$+Dm(='O Q$'+l܉HĹ5q Q$ Tݎ t8K *ME_b-9@}HK.n*whry$*bmuFsg=fdتotOܤa+G0> q=MA"$E̾QD}cݝV,O302;6w,H!sR]UKƙjD›-Y GF1v=6G4fV;N-{)e.3"ik|Ƴս/0s0wqJx$>k/+\ Xt<Lamw U3BY.Ċ ٨8yuDsBOLwEc 8F3f;gnM.xԒ<[ixYZδg{(^FáH% Y&t܆ŋ5,evMy]QHSR~w؆ishfmM?H?~KKa0eDZc!VٜXMt]C%bWfn FƆ,?O$P;Xʎ`דc.yL(# Ad'࿞XwH,Hyi/]l/$c7$tK nD;iE"m0rH8dժ 8Eўe܈kڀaDžCYSWy%b`_`lNXaJelt=]. XI*GVA@Qg.747¡A"@M03g$-HXImN;gͺWyΰ4_6$f+W)YsVP&lI~/.3}GGy #/u4q :LCMQ^0@چj:D4U5_*rmA!`-AHU JSTD*#ĩN>nrQSB>ޢ)\4mn",9tJG$f!+bʑnTU xSjzæA/[C0S& Ϲnu$ybv/b*y|D6?۞ +L 6ڼj]%0*m'9;:<Sp>6r[,!/i# +b x4wwJ\gzD9D/}^^~h7_Un([{P8~gXrg& XL(zy닫ЏD9 Q:YzTApcwb2j]k)f\N%1LGkRA]Cj76Hٴ1Bojc僟f g5yZe+?8999l,d@͗m"D(FVDT Hل|,Z-?q%̙>19;ᓧ˥] #WNApavQKQk8;!M,#jLvgrJt' +C0EL\FDDDDDDDDDD +W1Vލ>yn1Fh6FRJ)$k4T) +w + `5&))΋V,\fWˋ|jC@OnR.YM4MZ杗9)#G/6rf+9?pxGv0ִ^e<3ݛӺЯ_g;޿3ϯ֎&Y[rכ-Ϋm'[{6gmwX[lyΚL{ZƏl͛ޙtWkWj[»cg7e~g7KomηL?vcu7^M=|;}]^ZRO9;ׯuLu6O+I-/ Gvo3;>ފ/OvN댻{g)Zcz{OmvSntOnji}O/)-δKOީ5ӼZe?=qԦXKq).bZݿn-~wu=TOz8Sݩޚډbw;?ok5~;}{&拷f޵ӜV]=w4kj;+ݾN<ާsnm/~iݚJ/mVcxӼ~Wƚr~=9S|:;ez73}m{t{ֻ^?lٮۺӿzo;:}}l)=mkio7?[_}:s7-պڮjLsݴ{gګ]o7;My2ՙVmokehb)??3ŸΗZY|׆nrmsj{~~sP};n~nNuSO>=9fo٧]7w޻@RuR1pjg}]mmwN浜un{wާnze{^8O8/ť8R\Iqϼd[*޵݁wƏ;wTxmVkz:A{bp7v߳~ݬSw&&ޜ;dyfֹfv&zwswSnjmNZںv_;ڎY10NM5^׿uu^9/gMnvݴکm75~Y,p|'YĿxgYj:;ݶVٟÙh9+μ8nZYěnZͧpqfݬWi8kKq<:ŝ쩞y=k9gcR\Kq).ťR\Kq).ťR\Kq).ťVĬv~5o8z^)v'y*}f4-uh3ex؉ΗXm`VM&v@k 6X4 (wSݸV/}3,g `&WVX \i2rBX T>_‘6Dzb`/or A٨?53v"ǯ4&8&2}隅,kbkVIrTߥ\S\!ʐOKt}5<(XξXlkpFQr7kE-S 0kkz5~phi|Z1;6ĒR,2h,@ p|JPb5h}*1?zseB[`9DObi2 C)N)/Whe)r!GRdhHcm +96;l c }˯6bu?/ȿZUYΪqo];*:ԙ6L)DΖ9ߚ31,CR,Dh*gXjo nY\Uq,V՛ N>pı0KXj%xTj! $MLX30`D2tͲ&V ƚMY5zI6ONV8>9rvմbsOT7Y:kخB =B)p&|s}vk~w6s=W_ gvo+s:7뷛n*b2[ gZ-4ά޷޾y;۪?'4qkX;kޚ׍mq;g\1c߷lo9[k_Kk6[|KcLkr̵9V[oƛksÙ{cBsoow=ア|k}ϷkZ33?cL gj Mku}-6j9Y}άI/t+u]gs9[ޕƘԽ|u޹w׶ڿO-vlu\c~/7Zjv]uW~{c{-/]WkVc^3}ۮcB߮ywu_ָ>Vc87&4/|k=}ϭ~4GU~rJxX42m1ebhKk8Ighx PkUl E*(4{ْ` =&l0HCq [Xd,\۲p0H6|p u8aڞB˜@Fr򸆃cSOb ^ +M +( raQ)3 FICcYM<0((@0r*2QƒGQU4R,!Ҋq e2 +Y.0-D * \Db@H@JlJs>a&rH4Qᡔ!C.0l1ATNBY:n:@;\aY4$ı:v > Ʀظ$XM8 b`2MN7Q!}GcT  u-ec2BBdFAFa¬^ªd0 M8P`zBALDJI8`10`5CX@{!#`{ -Z - MZ3ק8ܬ`VYh睘9+IsZM99$ؚJ{O:QL5duL~n&lclI$gqS=zszybk-ϖ[Zvk-Yӛi;[K?qRރy;3nվjV5}UXi~s_;<ӏx.v;1^۟ډxto\70wKtsZ{vkJ?r'iگ_יmK7MWs[_ۿ_gjv^}_b;mp>swRr3ڟZN;y[k5jm<_Z_S<[ik8gͽSmk}y;3 ]R;s;S` 66YkMwsKSՙ׻;S=~Luzkj'{S=o{\g.}'M왛/ޚyWNsZmwv=9fn٧7s޹I:('J5t.l嶶;_sZNmo{SkoK37oPw]ӡ.NNסPAm:ԆbY)޵}w{Ə9sK}Xm)K:8?a;Zp7v뺎uw{oi߼s]:sݾnK9ѩUNκ_jNs{n_Jxys<:)Kcşvsٚ_L7;8㽯OmsvsnNq~mZ]i(j ?2EgX6S6PjCm i>"R z U -Ho4 (0͞Y㟧{ܮsYÛ-6ΜۜczSP -6 [w^Ll*Po 6ԆBm,3ھ ^7@G\Ϙc-[cw;[^gYs7ݺn[5oi榮Sw]K{1wzol{K_]o|sn4ougomSVߊb|Ss9#g1`:ǖ֙5oVk;|یsϴ~|}Z~Nu,8Dwymֺ߽uxtsnj;{O9=Hq~V#Pq 6ѦWӯ>S6`8usU9ǣwƜjeq3Lp%ʩ7S~n{4_ckun|>~͎G |o{o[c17qjzݛ7ߛ7fk'ʩ~}gY&]MMqSso9sSs1ts~͛ͬ375MԚۜV1omu_kw`J?Os<:?s^/ΚVOkiS[nZ;={91mj:Wy5~N]ZsZլq6wms&8?3}sTyqܴ7ܴOڹYoxtxY=޺N{wY;ǣ3zrN[ڧ^w^-s:Y;3daY8+p d ;uxXli[k1 ->Xʓ}WԆx{uS=}|{׼S6 6ԆPjCm 6ԆPjCm 6ԆPjCmM;Yg۫Nkxt5ۙ3NԽR<9WK?yz^rrWʟ&pmLoVU~MkM7WiN&6sS)v9{s^1vPqǣn8|Kf:9lsr9zmǵj9vn^1͖V[nO71Zy:ʿVZ׼_{%8<\T~f[>polP"~#?slT(¦UEʼ}s_iJ) ˽nJ( 7jBO()ID` lOvDgJM 3Ei1@< u<`3hRXyJ. d|<Kىh+C[o{a߀JfKvY#KyRzrJp/YKu_ dT%]$("027kEK 0՛zQc@,;ހSf76XX3I(^y>Ȃd>XGoWz+b -jCm 6?K>WTaGzDWDSz -D ʾbaYkZchH ̣ڱPsDO=d}` y˯6Hވ# FiS?̄FȾ,K KJX?OqojUz:7b8vP[,?Ksd_)么7d,5҃$ؚ,|Bk5Er&3RE~E' -[Hʼ=5-q S~s֨}P؊6b9r -JǃSzL֝nm{vۿߜWſδیb3Y뵽o}s˿w3UNhjiʱwޫW[]}u5ێ~wθb~uϿ3Vֿoެs^>;/zm~{Ϙ(Yͯk{sߌ7׼w3΄ޚ|{{c֙lo״ g~Θ(63<[m7kusγM3Y[R] -VZ~1׻v}sX+3{^ݷsŗm[Zꌹ9U_no\j˭׻]묯zZ5[_گk;Ƽf|]τ&3]?Jk9j뾘q}\pLh^no=[9zs[[yƛߌo=w+[;ʹ\g3gB<_]r8oy>־^wso۫/uwŕmy=Ù5<&[ovg}9Zl;[swWg83Lh?[kl5ugk:Z?Ùjo=}mgBSjmg5=gƹ;f8gL?Ù]/zƴZݯ1Z[;״κwL\+bw9juXg3n[wߝw=眭^wmc]bkrw3kzk[1|o?ƛֽ/WcXW^;j͵k6ij6sXۚs3_y1NkϽZo37Lhnl;Ҫ5מ omߜjޟ6Lo_g~3ygL~s]1֖_[u1xj?_W`noZ'7v@G\mY}cj]7k\'v_\5ν>LEUr<yF6X"SWH5o-XZ;V󵾳΍)Y9~CǙ+'9ݩoj$U#LEz$ze譲q)0-gZͭdK+W4l \Wr^iV{Wjj[8ۼWs5^I~lHJg/恞3}~l+4`>Fjɺ*/4smkv_gKWuŖWl;[?ob/7o^kjivW|Uk^5~z?~m;ֺ֭-ڎZ=~q{w|5:so[ߺs5Zls.̷yUZ1cVy?_f0k"۾WikwZab  ! m&9MbI@ JprJxRR1 0# fW8'Hz+OHeb \7,Uq_k)*2B {s@[O*=̧$8rPͼ3:xT(G -&}9~o֒^EF -d_ir慪su&ET0ipA3h,0p@(BH"l&ns<8(FNJpн! @V( /µpz8-X"f* ck: -Fi. &^cɣaUaX6B#vKCE\e*Z,I)kuDjHL@1, > seKC)iC6g5DRBY:n:v6âEN$Udf:p\DcÒhIlZumWlmSM&D$tO<PDؠAxu8A"fs pzI"0@:B 28t8M$: oT,rWđa6 +5 o)*;"3tlSOH.k RѻB[e +!sN(?6Def%19 rl5⁹ø&pv>\ν`}g'J ^'eCa%,: +63"X 38*f/v^vO_/&#aiVmPU U!20íɤ,J,h],\nYp: ad.7qbTсE!&(5B1UDSBW{(#AP\t":S 26ݦ+؝%ua `*^nBBB!p plӣPN°p㳌$KC`i EXR" +bHee"U(bO4T+HST +d"B+ Wl4:mFհtQ,-}޶u +0(hhC(1Rp662mCD0pf=l" %!mL, zK8M?6PBn򷆒nu(nnCY6ΣQ&>m"lZ ٸ#3`"ܦ؁mC +*"-mu۶. +`u@ٶmlV-#b=**Ƕm[ٶ6 6 V=(!8Kѵ<JAtoB-X^[=&m +TtGqs[eocCqC2b< X026-¦FPU92 =lcKKX(@Z>[Cm(Y3C 8m +f{,3M!v)P`Uz},{@x0aRКa:\l@P"U\h +N!F>Xcp p(!'a6&56$ۖbض͠¶mPlۘ0m#eٶٶ;UZm+P@\a^N}AZ@ӣ.jĀǒc_dckqk +N$iy& +T Cp> pؔ V4ޥϋV$!Qܷm&O1mD=y8am۶@m]q!c6Ze6 CٶQ⛃Ƕmɶm7#lFɨ@!m۶W$"pBm[m[U7۶mm?jm[9p<&TsAٶ +мPI0$PKG +1nۂ ։dE d$'km8=F2 &\ )VPD<9m꣝*emB+p,*!ԩS<`R%G  zLq& fh|j c47˚H/S,' g&IY9fM$ä 7XؚsM,s૜M_c;de7hotcCƏM#t}$AdX~#8C!fa>Ҿ8ICCØXATY*ęH¦35bLCCl(ǍLAr6J<% lFF@jlyJωG N`@y +ND 0F XNSIބF+Z1,=\pHc N/f#W#8JĠ*cTFR1Lv`9jFm@8z&dz&*[-=4(R +}V1GHJ@r6B%iՊcaIY*(mj;g49!9QHZZ1JjqEijʙ$m1Jh" @i,(k\p)kEGM}2TQ!؊Z5#BdQᢴYk, +,HiT5 AGHh9k4 cZ%} Rָ?UW_~V VKd`LEa2W KAa@FFį |AgVZ)@b"F{4쁥A/>stream +02ȊFg( DUEt؇WFp쀦"צ)Y$*r\(VFb9Op:,21JfX0!Vk80u$Uq +{A$Ԭ +d = plFX҄C .D(pt)x">QP.H $Va?Fb%:,cDh #ħLNkLA`@ r X<*LxyH<>?}+`aPc-pc%هO!ď'zWyLs<:h7|RUӊRPA^Fĭ -0J<`a0 `nY@`(:YqLd0w`T]D0آ+RMG Z3e/n$a],'Ѱ6\,^2'J.%BHD~.!wpiAQ.MBHò2N$,0ϥªK -``AZ.Zƒ0 %U xa υ&TH(eódۨlƒ0haFE0QYhBz6BJb T4]+%KSQ}I))r`N\XQTEr=P4ˈ2aPJ)E)ZF3lB«D]lbЬ5ØPb(MV'hC`B/"dqNL$*LB%<2IEZ VO -9d.510Dds<(0ARdcP5`oIb*2P5V M-V06+Xi$ eSM5f1YaBmGffm4T325b*"@)c1*b -t4A31-h0W2\&,dW$lՈN/2z%/EdRPDC;X"DՓB0%DXҋJrS܏(H K" 9"^!b$٠!Vd(X -N(xQB@d0V$ID"fAN&WA1&@b!+0P& P!x -HR:ĄD8Ȉ#F 3OA6$TZBm )TK+ХuK'V.!C9`hbBW%@\ 1 &*GnRHKJZłР663A$f!n -ZF Tt4AG,Ake"4҂Fm IFR204MvG \Q5Ek iվMPU-0ZKQMciqhԀ@ OVChZ06#2MsMKYD DhmixB&X`.PyHE4M.(ZmcA.*MӴrA:GӰG4V-D4+@h\ PoRNbfM]N(p_eS[q.,h%T8tcxذ" ٥>$Rd0P|6y"7ǣ\,r,Xj, Sj6puX -a#R;*I"h -cd9 -p@˪D(d^cE)Q`> ʴ1 6X\prlhi(iiDƅM+9(i$HD8 EhZ -&p8cPp.h0LQ *\ieC 6Ư]YhdBi(P@BkFA,F hUbԴEF'3nȠ+0Ph(B>mPy2: fL拵>Q+E/)YhSTxM(T}cKE:%SO$=s$>DpTe/l +90O摉&MjFN&,g!6=pΰYH` 2k}SN,$$Ĥ ̛7?ȚS͖ S䜟͏\[ɼdc7D>->kF'Z^,cdɾ(z ,էCesxcR< K_>)kAU( GRD+Yؑ zxc{帉#UD(d_y@ P O_YAP(OS+e!胉` Iv*I/HEKxUz"%$DOv%,T}*ԀHSM2ISh3o&X647s0((G$O>%jQ(ZcHcP؏s?R&%EJE0QTTZNMNDRR32l58lZ*JQR%T| 1UjT>p jEGQ E/V) -5BqDƢQ%EQ%k䷢PE>c}+,HjȒ_ǐ5-e,^} -=9cB!]KPcIIX`)`%XB D18#8#)9ƐT`)8&V`&IL( O"tԻ`X9dOHKM&m!DxQ1AY0uSQ%BD2bԙRȂI4?,H,`8y2 8%&as<6>RMv 6(0(6#Ar7^V> 2\ L[9mcc;ЄeQ -X02;Ap)e&v$> yCU7,BW < !"$R4'0W$ӆ;E~/F@L0aBSr2jr(﫱RHsu 790 w@Ws(`p(@`"Z> ܍Xk,#*,l{g Յ$V --P$`0<2K*ҨP4.– -ȡA 4  -BXDb*1jcJB]XB8RhiJ壅42p;~ɪu\'3T 9 _nL쌿4js<@!29"Y(B -endstream endobj 13 0 obj <>stream -6Q.̏ ޶Mi,u9Ц*hU-JKaX>Z* -3I*( Iv QaP,$IB7D^|c](Ȕす xJJƄUÈxN!2z@^Y!KAĐ P7IB-AnJc!G"1ۖꆤ88pXFWCPD< y>C嘼NdUcFT.ĚH!Qi,2l"YU"jj6jds<i5k$E; -odE5"0ͤpPP`@"oHV>pXFD_1ZBbP l IBZT42ф+e&2VLlʀȈl"aNU}5V6TPm #I< rs,P( u ӅdRfl=f"\gT:Z6]071i CaE5ti, VZM6Uh&a2JP<0A++о>T-@aH8IlF2QU,FE&.Ŏ|Dm!pP3DD -XAL%Zv$Z2 U4|B˂T6N_2f$0ؠdHrs<.sgc*!tK"\8D!@QG- -&00x\`.'HX>N*DG2a@Z=DcԈHvzt 0.l;T\ ʠH\ED*G@iMb(huUܒU"FJ$L -IxwU6e6u@!UBy80h7"AL1E>Τz -̈́%R@`rbavi 2bJE\~IIc X2oWR9aL!H&] F i+Ars<8jAY| *nGvP -2f㈤2LTpl;h8#BnG!"N14!Nbuq\CTRb@#y($ʊH-xw)oK2d NrLxoŸa" ՑeE3.J [+'PD@`D^XYƀBBYc+-oGe8aM뢅Lh$.H x. d28. g+ - `Y -1lz%>vs<2f([* Wz[PcC2pD$[ƛEcm٦9 1PE4-D#X$E%ZJs*mw,BH4X$K4 e{C%ぉ.:'I¡ \>*]HLH|29b|/_ɲ̔06\/XlRGZBgF  23[E<< NVb._ă#Z3&@o7L-$ -4 OU,$/ܴ%KbJGˠ0K4-۴ hv85PEJ;/SH'$1 3 a;Jj2H\ʁ@$  X0'hӰPdD^X@fbuFT%U:Z>`u^:1 9TFًf1pTͥM"YBXJ`:x&POeӠ2/OX2aH84mLnF4a0 }#as< (H|XuR(9MRjPT˘" -Pgy85p؎,zK3`*&`Ycq<f30@m -.`h3.3y4@m&U&@4aF'Ț 9 %3P!U+hRP*,%ݗ0S1*O>ILd b$>0O _{x`ʈZFbqJZcs<&] (p *Ô\2BBINۺ k6!Ab6.dЁ}җ*XU+E<CxL)1UXEJ%Aʡ$yRO""HAA ذ;9@\ - .6CB/ n MXhR -e Y_U>1aAB*=M) ȰPFքBиP kl\|T$4>VHE|#G F -D$BEbp,A0N)&t|DC̄qL*rIf ͡(Q\4y}6Hd+dQ  HrsERDH0$ʤbI:dkZ0L@4q@$)0d135d68>س0Es[β)3p mɚ[V! /O;˄HE*^r_URH|§Nkg8x~*E^_|@ -023 - ;" q(X?LUvw|Ӻh8?q<̾qܾ `p9|f*Y3VCWd'he{ ͫUzUZkh]YC:17UQmW7|<<Û:"1' +t׷% cFq(C8B[ -UfS{@͊:rQԗ摩#&<%ћ{`Sx[I$g F/i#F'H!fk6)#^8=s A`i<@5g0,eP--9NL{(MFl䂃E5Y0Pj RbV42Wc]1 K E1i=5,46UJS\4!/rFsUpom$O;gd M󾽠x|Dp~FܼX%]=;pNxG ߝȂ֠Ȼ#9d8{9;Ř5y?mK8TdNZ8'S5$zxWx-\u.tF+4SPZVc$yvŬ3k1x`c+HUAv k`39xU`bzֱ4%8|թՙr z4̢+넲n: ۝}!mWW+樏>edHdOWd WÌh -S6Ek@>,Uׂv*ZP(6"Bb\k'_cɂ -a:`,K8pĊ9HvI?5: &q&Eܓ!ַhh >rHb37SY8kIL[- &l@^$͎h^ 32Qh)'c^G5 -Kn@i8JD*/~*JxMJXV|I| %_ThsX=Ϛ\njYM J% $7RlS'ԡbE~GZtR sCvVky3nd [yN8%|YOҨ%joP[pQAAS-C~kjvA#-(,Aʽj$Cr*jZepX5=ϘI"KʥyHBaM H@hluG $2:joA{T}r*7=y )}:p`8+;H@0{u/\vN FkcȤ"f&#⍷?`i%&-zqz=k1.q؛L|-CX:jaTǣQBAMĿyυ Z -TXh5gEswW,)=gJc~::_rN,v_Xb&>tHG$2ވp57@}QRkf-) d9p]h| -E -;t>*eq"a$]p-c5ŏ +a]{37t$Z*JT)ุ8ؼPB 4TøfԳ yRoɠ:16o#yI//ĨjP!xK@I?L%8n*w&_@y.k <* loA") -;mk N&\-p^SzsjhQgn{k%DI؂aRy-$2s4#N<'5}>#exRbM{\pNBHt1r Fv^x;yIѼć2|hhD wU"; Hl13lV~ݦn&Z/teeLiqpWTz¸Px":PZh"yrg/ xߵ9ٔDm:J" )ږeیFw~ԞUȡPt[߷e m@_W#$n܉\;'dz\/pBujaf볕u66iRH.gg)$d~5Cëɦ'g&&.<S6;/u 3@9ʠ@_:FzjBc  f +恋Q Mh4h[`aMQ4\? -)]̰'\JÈ?M?`ܤ!$AҸgMK'oο1H 9LjN)Ìk}Pl+}yq?fJ69ZWTA|U$ZӇa,#O6>KiQ-ܢPi7 zH+9`k75cu '&4\Ց ' s(9O^Vo"9zE9n\hP%bR(j6y+c _)^V| [fq0 ehH䱢9(S<у}JtA[n +`~fdL#9b3=5ϡnN9x?xkM7z!`&0Tz@kƵyUl]rQBGթ(E$bQo!։hl5zAgF/H$Tz3t$KZBflS.yXbr>m@:pY*F%0sKFAIQӧI:S=-w1YaEah1qd)e4(ǽ‚b)?]*KSB<bLGҒ0F 1 Xvf08b4z˱sydI>v[]׿[!o枱DӍoX.>]ꚬqb"xu-zGëѾcxqMq^gjN5vBc WB|q /WJ 7O62 OwubTG@*.lU^~VI] -G(c -i7LhܣZp@($h7gpuk4ܖuw{_Zbu~G,Qɱ|(z)4$+ȑY|(sȀN&R .Xw'_ׇ Bnl+ C 8M#IHB˵yZiWI]= zsfN ʴؿPh8+]'KEVӵ -nr& C9ƅ%<7TP:\ @:67SL$ՍmTp()2&#Qi[Ƭ3$bfUfTwgPaeJ6`S@$) Ճ G`{[?SL|7=ХcPo+,T,~GdE < Q%LiyoJZi% 5>&leCٝ~jL'P#-g,UPpi.ҋ*iؚ(qt\ȯ`޿yAk11>ێlO0O࿊!it /߹-9 -?)-WD)y{)eHe - GtQQE1}xjH2ktO=ͪ|ȀŒ<! P.M̪Q"G!`HgS3yAİS@oZQN>`OD)),K )ۀ_b@ K;s=sMg9ch`O -7Z,=8m |qH.-#V\DW< ⊌؂:.=aRM$t\X!_mk>)!a֡aUԒ%- -HD7u3>o b;Ls_0| -𔆃 Lj$P1K]eD).A(ј 7zփ 3wvS-O %5ſ  zN0 ^Ԃ2~њ&<.il$ -'sogjt$؎_0z,k B4J%F?rGUu @| ~0765 ۞C+xot䞷93@d1RgQ9ˠ8 Fàe01u pKM(mԊ­/ Nlomi"øvP6p HDWp~"5ׄj瞁]PxeK{;/v; o :2VkE)f -*R4|ʸOm{cH9ELZת *+̼w'HR@hC`،ThݲDNU kPdu15:xăpD& C*RtESmZYNÊQwEq3ѬSUu\11 -nh_)ȕ-HjՌJ/'*sVŨn6-IlƠLB<,iXE$ \HԵItyrzF eI@}0BLӤ@\|; ^"ldD9o l6S*E40Vx蘠iej -{-RjD"4cg nЗ8:u+bY zBK!4kF:8xb#2Co̷ወr?:.i!r'.1mrR -YS|S$ +zuМ@ړ'2k.ÞƘCKA x@:OOq U>]XOT D G^n .֊c}qAs;bA9@Q:A1Pt[ov6<ŕ G^!SD-Bo?B"bЈÇJ9;H뗟,$u?a+G~]4)w(UTR%chiW{JYJ96wIMXz;5w1zoQM:&")6KLJ]j|/28SrP"Qf?[`6Á3h_#*m!T@ƇՂzW[Vmgt~|p#W1.uZ;oJcc\i/6O^/͵>M)!=P5HyZlU~xAvu d~隸+Y$E"{`bb̰/"ݠDӓ0l{ng_Ia(Xno| UF8,v-I.;XNg(z/gT5=+|ܯBU<+Ɗ,v9>,br^Q.6[wGHn%."δC,1ѽpjy+B7_#}[I ^9]1&Pgf>#d -Jh38EknJ]UNK!Vװ"tYYos5fdTη yZ.IJ4'bjի  -Vl @iw:"3ʈ3&U9#j3J|K-D)-wTÍ`0 1+A^K1z/}R@a+"b٦ѵݵ VP]{@-' n %n8ʞS{sC>-/B4uLF{h=G ^JUԼJ6Mߩ2SVT3 {xe =ABxOq,MUb߸KO(-@K2 ՚jh~EݡuN(*]{Lj jA߂tGZs2J+nnmy^dd';&rL~/˖j # / &ކ+ ܴ\O~^B%SvD2E(Qeޤ#r^iR[8ylQI(teQR@c"imCGar>7>Q%J$9_} gvٰ|̾:B)$1ag^cn%j}ݲ(gܼZ\L,8GR`| B꫽>fQ{,^<"/MyP A`_gw%wXi$r@P xWc@'dF'8 Y@ -9E{XMB `c{RߝV GTL1GOC+_؈MbM.LmBߣP"/_ ߋWn>B D j2ahP4yg~PYKFtrUMS)*%+|QeacdlQa`Rs+{紥XJR:04_3h1tjirrk"aFW'=8PL). OHqD!6 9vluTo)6̸T)[/Zچi:jo l _J,<ƚ/-pD,ʑ4L 7z w&j5Ymꪳ"7Xpя7`V5_tb'Pӓ[@-7 qy1 ÛdHM}G:V@c7(%_98R.E'Wȥp.ᄡ'CCUNy y ڂo*}Vr|MDg#ѬyvG6LЕknE!y 7~_"qzQzAYVCaVbiSNsY/k&2FFL.{.O*%]`tգ)׀jއiкq -8`umBtpy\ Ymj&!/~ -j.ق||Nm5(UPp&noLdH9ͲzSΖ2)3=dJcw~F|:v4$fU]"EDiD'wE\-ٲk0פs!n7DtRru£tosJюus #vGЍҚI$eQ:8 -m+9QYc R -G wjB L5[E6Ҷx7f:3ajXPSo%,wU}V-_8l:f?c>`k,,iS^^+o'7'᠚0\!3FONd8]^Z&P̹m% (eG(-[_co8Cyf@P I3GM{u^2U)0f ʭt9iWՅ[:ea7BFq7=7@6"py*s'*}xT M:* #dw/0* lq.LؒNFc `'TX cp$dq}0_?^"ai$*asH[wtW,Wpc@[ذQ}J5/ oB4̤&g8ی S[,Ry`f \as\}Y o.wj8jA.sUL{JCxNY_Uց|ȵdIwmA0ͱC30T! zJ ,3sq~b 8p#QЁ VyK )M(ΐwnXy -.])F?\7DךDE?~g⇌C*@s4Srt,ʗ[3 -g+ 'V.z>.a.!pFcbwL)yYL:]yrff ߬!ec_W[ Į$\d3!A$ԇ=~?**U5+ ?ciMNS&"GT^K$帚% LtĞk 8 M_ETD$:~Vn <M|7FEOX;p X@FP@kȚ6߾m9IVƼ\=ILH ׌1ܔ<{167xfCU.B)>l#4K^g3WMNqHM6wXf۹%T uXЀp@9$ }N0";_2`gdlje}8^@<C'^ºS qF\7>W! #l&x%Πj^)vl4]'?%>J+GLFZȿuZٮg YYis. 7v5+{5 -52GoZY42*:=x޴Vvl Tc.e Y&pI'hIșENz~!:ӝPq*hUw쨯oyVP 0hÂQ^朐;{' - ?>2 |9ˇv 7(Xuut˘cŪ2w!\B ;w5VPH_"P"K"@n;+V[1qecCfβ}O~Qli_b{X1`*rW2BP\J,X vpeJy^4N~qqtu^^|q8*"B6Ϣq&ۏru,H~![07\1`({$7t"in._Θ/.93m]!0F'xB 1O Ƹ$ -TٗRU Rr߀aˬ$WIcqD3 4rtcU#_\ HdF֖n\e=\'Z90M<*4E^q,)0NC U5ҏ#jJ_Ju FDf\L 1j|5 -b]p! kSJL$Ͳ }8bC@XNJ4޿!cqV6:<.g;hqj DBԪ]+ґsYq#Kmo#2.m:"s, Nń587 pJcABqVAcj$'_>~FF{zq7Ǚd %jM>DNş8u8F7{@^9 B4ow=OTƱ047ys?^VF߬a &vgp,:G0ײEo"{ nkje87s>0w>\p1mjov<%A;`4"hOI[ Z^(5M ?W#q]k~ց#l\傮iXI}D32}` \m  Q\ׄp#Ed>1 i@7In z3ۦב -`j>2CH>Ӂ{c0 ؀)|^fE;i>h+ZC Q;G42H%a xxFXL*;TII :;,Vȵ268B.12գ=rģ$2 -@~W5:U{M6#.yM :Dt{fl^|J;Xs6@཯0MK,l^/+nWGg3 %9ŒYPKMu1tD^OhTe ghm=3FEM)III[ -; x2#yoUa8P6": f`@[yMo" <jploeNQ@3ɓ 䘄=>|gtTh(|e0qc@&~46{} -D8nր"ȡʚ>[xKosD-.r?T ^W# -n y2'0 It0 cΝDv&M]pC75"bjqpBHƱߑ<@R y@kѮHp;ë4>iy3"v d9-vKd~OX(IqZ.$8lM?юvYz8܈nGGLFK.W獽a[W&YpێCAO -ҡDIvn3C&\Li#;#7B##e!ը %P|Gd_Q}Q* -sN -9&:~K#A!v"]tîKH s Iw#9\Bsm :Fx g *vp6 S$DGWLNd5OZ\}ng.(sO'3:<<<WxY)!""Fc%MW/)RE`b<ضpG }Sg87Bx\7D5)vMM=F @תi-M!Fk:E%`U8@/ii^t۩' -Hxc'b(!z*\V2ٴ=cdD!X(o2 ~ Bv5AwN·̯etރ`܅W"¡CM{=rDBq)bXx̑ 4V9a,qFU!'no_FH"$=n+ -kFXR)V̆RI+z.˵I7J7>/*<)B6Ǣ Q%*$ r: ˱0}B~5Xav+.'^W-$8n_lk xvo~Qy*MFeҸ4x.9i7`E3܋BGsU_8|ԡJ72ji mn:.Qpdؑ =c1e<LMjB岅 'vldRTJTM`=tm<˴ ljZASZ*U;Qg(#̓Ww؞ʨ|pvSIe7FqmdfU-+`؅x\- -7JXyYu?-QebNB"a~҄L1te-&%Aʀj.RRBb.D 4~8p "bwe9@n&𷤌d*ni~c sQ; Ny"fukﰲuX1H~_\f|@ŚwGqj<(ء}KxOG%[>W$,ɩ]BkGK݉ -:y{4]!8,AP`>)P!5/-HT>AVR%fIPo$'a_3 dٶ1#a?2[5j,J}H%d4?9f{Sڮlb%qʸVgxuDq\w(! -qChPo}X>裎&o|DxyTd ܱ]N*qG{&9jlsJ787EP UjmP׼Ӗ .E_*BkH܎w$J!rl I"R@lS':ŭ$*׮sAӏ CxYCKqI p:K)9;bcJTbBc',WQZ?*KXA{yyzV`ÁcCvSrCWP$qÜ1wptзP*&C:Ο֎7AɍWq9hkAqΝ9 9My#Ty o.-UK_$&M'Vc+IMNV#duݥ -(G^@J=JW\PexB5+ӷ6LBaDS/ ݃8β:"L1 ̳GrOC\&sBRa=F$9>! 8w(Tvk/z(8˯\$'lP `,Tk/KHM9 U4t -X~.!bX'`o󟆒^H Y<&oJ;W~/A.std([wWPI>@nO圗,Y`Ftޏs' x|9cL9 n(|1[#>I{URKPBemf2`o$7fOǶ\4 -Mu"3Biil Zm!Z+. hQXA1itj8&{6b̈́Un%Zd0& *JD.DW%I]FN!~u/!*:!"5d y}< VB\@P[HM]*l(=5nlE myfICQcqXQah!Ѥ(͌Ls;tY=D=6lc |`ԕ%3t @E@|a\#8GbK;&GV-=ɍgXh -B[jo j kWC'3_״ٰ9]{@\Vݪ, -ZPI8$~b92qj]$j!_Ֆ#|9| `Q;I-{-&),ТVdP *6) -h^{ST)*؍L` -Ո):bRSIgݸ\@yN]OoFq'pȻ,LޢRWǧ=v_lĞf|@OĬJjfY!lVBꬶ|2ͻ9i\_BO; n8\ ~gN0+Ӭ>8F~C%W23EQ6!4.t u ]"ei2z3]jՄ ਃ?xj0-7 TNG]/cWA~5.Vm -6 -մ#R 0;@>ij~3,꒒E#Aₒ&t+U|j!Fr c+_^-%l. P7*(#`S5NܖZ&7. lmt@sy+k[\&yW[fij4,3g&P/tDV~gsy@㠧@⠧lhh82/5"i^4SQ>԰ٌh{eF$&f9 SEzZ;";~H#(Y *?Ci0L=L<+י7]w"@vPwӀ>v\WP*U -*~o?XWyP{T@C Z`$1Cu *]p(;]c8W+w@w 1q:•Y9-28Ѣd,k*W69*i1 bxHwEAPX? fѼ3]n_+L](/Dg%;+JT)^;qVJo=*qRpFݦ++(+RFe^jy)FacX[3_lPp2.UΆ( -(몸*/z4h9+30g 7.1e¯E#pY,n) -2DZCh!9X,!H8U~rVSam "e(=iPP=UPJ E= -4<_'Z2à =Fv+ܾ$Pά7t. vҜ7Z]xd\W#$掁$(,/CmYJ-N23/esdu,l- 1?3m=H-!ZzzG wy 7vP 5(cRA_{7 &R 'k޴ Վ*u. P?ޘ5iRRzp^Ze[llɬ`VWRI#lBJzaS2ooP:M&R>By~6`##ChV×v1P"/$oBjc5J\KY*Q;P.c\_Ph( N\ ԇ FPvi8,)&Q@yp(.u~R7JVgw. h> wi2UGYE˔ iaY/clX3ˮJK: ,v W൚0C rK[?4. PRbzd2Cj=oo0yGql?b0emN ^KoO,@1mh3oPNHK:Iݏ'WLH` ?)/jri`a3k}"Y - 0d^։]6R13}*B3VF"?qlP<=M+izhF8Φ:N FD}h ƫۋڵ6-&* pVd_0 /4ah PKPA*Bcc@ya9}1T28~]x,ǒMЖze^"*P*z0mdb6 RF]S`g-mr62'jjPBV*@z|oGn7ߢV4*B$6Q1P1qADZY^T4C&j8)fƥ9|^,W^cvKzGdzLTL}Tg%Oj5*dB {^fZ*mNs) -¨<=Kf@#؂>Υ]ew⤸aqL+b?3l^*FI+^t=칳yX)ÊM"Ԣt lЗ/s*NYRƕk$haيFyHa3}bpZ{@q2I˄CvHgcc|c7Ϗ)l=CD9W$&JE).4Q#j"Sssx9h07 %9xGlq6WZ&l8En|;'DBi.('L*n]2(6T#[7úC8bY{ľ}-38o}(|bQG -IR4C(w[WCn`i0Q1D!Puxt XV(_WyW/f,αL9^䤅 N}!Ao!j<&qH7P.쪟P y7l $ 1]. yb TYL%p~dwԬr;;kG]#. pb&7W1"͸ռaUb^hbZIg'Dyuק=2RHS 84K(hOw4 p5M:*% % -ծl#bh"¹ b'y_摙 -a(ip{*qyQ=A찼9c?3`6l.ebP^8+I. ?RFy!>€nS Lc%P QA8pA4#7yq[K)<p;xs%~c]#ռ;uaS~Fxm*4-ӘmVG s-/w)5mfm8!}]W{8%!+R"TR/)y39Ό2̫⥩杊+Tf`F O_lFUጽV -Y c>G<`Чˆ{.E#fČ3*rN_ e6Wc&P XȀ!OP)4հGFЂ0o8HZ@YI8zx>la>,b'/nʨJNWJucs5Hȩ 3}Lyg\KRV{a5.?kʀ$䕸 JâkC$)[BT%xR3V /m{[IQf!9});FH\)vyE#logB84հ.SȼAO>N KD<(xr5AbꌘG' BmN(.0N#0yWֻݪ{4>bp}:sqdgd#ja}3.ꗰ=3aLOhoɐDo9Cjƪ&+vBw>Zjx~݉rS'9voGO2 qv'/ p98 ݉-ekF@nWf!\LQ.t8|x~rAp3ŹHhOzQ{^T4EwD]w %}C2eB)Vg!/kV"Lzd=, -(o!{6M홒pH͙ȯڌg ט)0^%]y˓v.C#+z;#\jdRXIbW繀@}/&gh̗䞩R;ưqT>CgLix>ưdsUNe3=A'Ud8J)3%R =G)W៌/s\@๐X%AZ@]+6}NV+r,&UīL7 ҒBs[!eo2sxI](kHw/Yqɽ,1>C%Ȫ$C*C򎀚3ڳƃ%tW`W  8y'UVb_}cUeQn^ -Ej"%/ *\t?>@&CPDpzpN̥ .~DhVckޓZgdJ#ZuVh\F2 -XqL6n zxdRA Jkh;:zSBj\ .5i7I /.֑nMf58yOSuDUjcRg J%u,l.*Eqzj}99lFUZ - x_$hXL+j꯸W]=>/ ɛ0l%\-t6͛ڜ)d ~)B뻘A3פ!@_htaŸU#LPvze@@3XTբ9mJJLr@aH+EbDŽv̤8QAZ38Xj6LˀԿn6'yQ 48zly8>O߈!F|f!Hɒ0j.Mv0d|BAj_k "i㔩2`e ]28-hYq@z|0DSțM@׋>5 hI1~cbـ[1[ilBubȠz3c34|@rs@1Q.1Q`كX -&*=V-D9|" U%;J;RyB;3)CLق5 -xaU*ѣ -#T?Bs/\@B#`)\@(UUgi8{[{"K4@1Lޜ$~ HV<&J,P^S^%ɾcP2[@1Su*F)yKC Ci6B-ĉU ĻnռEc/u-NupgdGv. ,*ݗxwݪGPY&}7k x ~yVP<oA";jHog(\@&"Q ׸ڱA5#sY}-u -bv7݃U . ߆fT%=l; 8jBlr*sAi:\v1X)aKw>Io!(L6" (dm3 U ]K:q|z䩜[oYљ)m>]d;b=eG RkTQTAnF@hr#SIkv4 LUL?g* Ow)l; dX hs"v)ybjgI#<+W 7ڗͭW!+`r|%a ̠WOu \@7 b1YGH{֑՚yCs9#׬VLK0 ګeHޓF1ѳRLև"Z׋4=3)~rUS_O gTY7$)G?}#51z'H5o [:AE,AX%ꪻF[&o!Qz٠LӤdf"<[@RޘF ,;{GAV:Ұ4HP)`_yxR)L ,Hx%L>^b8.X{HA"g8FMW/ݹja!?5<%([83)Pګ#݉CQoiaA鯢oGYԄI$zA<,e)* `iFa{5P+{n 1{UiI7@3+(DU@׫%l ^3X%Nkave;JmOE4< Gy8ݍ'9s+\@NhFUzI3>Kx y=ʾ; P8~ItaY5oQ!ˤ f1s"z1jwFݶR"م@v URPm_IN,jx3YгWxʏêk[Loљ ;S==:k4TE{p AvMo069{,O3]vJz:Ϩ43$BȈȬ  EDZe J,"TBN&& $BaXPRE(IQf)%q;@RqE.Z{(2qt&#Jr&`%<@K *Ys19G% Bp w]4@/DHkSC'UoL(7f`0*9'NCD pg)5bCt><Gx=V@h{7ڐ,_v"k[fݨaCr7+ϾV'XGH +ec -AuE&ĕRJhXw%Dpw^ hjtzc[ҡb?-7I6? -;Wivh旒Fz`Ýh hqbkyME@+MHyﷺ HR9/@wU- -GY. -D=N40lh"|ܨ _6?'Z9})F-ro斿l#x@ DVB$8:6?%:7TT[<lP(6?ƄURRnrh X~ҁ3mg)ɩ9lT Fez_,F禬,s?k.Z1VBgD~2ؾj 1˳<M~!*;*~ޛ?5$UTDm ݍ(R-bFE|\x3dv)>OH[P~af -ͻk$9YJۻ̀f, Ja*QZʏ+wq\DM4b#诇= qf9<, AF>l$?[эMel$0"(oĒ;+㮨-  )U[)i?&b8|m-q5O 42H[>s:0hz*]]_|0+!i)Ա:;| #]+$ה~Ic&ῷ(S]=_L\TeuVIg8d(e5rN΀VbqmuՅ¦[>VtWH7U6m#T&:F0GGi(y&G0_`g@ -j6lV1bF>?!$ JԱ >;|bM5w~k8 a%5 i0lf4Igh"0F(GP!t LLZ`]3|`MOw.P ևdCa=o5Zئ^XVYQs Ԉ.s7IxKƽ_ 6N&=:%z -&3`-⴦>2:(U=F?AA5ƤFul.)؜8[Wc<ޓinIk1̣kC&,{Pk@P jFk 47U)V"1pVGa܌^=,Ǥ{'N`etO{ ӛ>-JȪG9? @sn. [Rir QiXpqixH4Z HXQH|qac t 4h;AAg92dl_|@H &`#A=hS(WQz) a)y4墿B.x;q2GŠC.áA>eK"T8l.zpxaR~#Q6ye@ЦggE-J`|>QN`4F*x ,u؍u sy -d㇌CȐN7IW ҵZ#u *x5ZX !9C|iDJu!~)Әop'ictߣ, 6YYD BUAGF2 h*DGo $&cG360$!ݨ:$ >gN.JAm,HI=Iuf%B " \ǣ@%+HbuVrT3RO4^ -BSr6E!ʚZG:m?& BsBA<@؅xgU$𐿟4l8?c%W蠩Ʊ -bA Dp4 :@$!W83@d" 5l-RFCl2nF/&0YU1I;ҍ qa#S&[$wX&rvd29J&a`l,֍ {ASr@`ۥ<ǩXSNtA yQΈKL ,e`5.ÚC$MA5gpv`[0vh:kٽkNaMV} D>9"9<$zn+ v*}Lwnp,V@@q?(Y7#M*{P < -4ݏ t -a; -wT[BTm]fwVbfZ[u~ ޝyZt12DBFe7F83߱ēV?,cg ߁"bRlHD -gTe+OкP73}fC2٩vFu7kؼ: ,`?h@/7%Ryҁb,QVfZe_LLBFYb)>}ClE؊6Nِ=@/XTPBHG2j?DYICeg ?L pm1v&+MGeAsY48VD& &hʣb&isoX@aے8ՇR|"U²G\" -h QY$0$r)}[DV2$ Fm1=I{!T_7$zߍI62=@V[l8Ecw֒F9:Ӱ穼0k"?ƑL>\fhdJlcZпJRAFkE` $!+ -{I*f;|Тא">+d30rbX !3Rܐt0Hlx, 2+%vv%AO|R)n:# 8i6HտzB! ̚ d bQ#$i:>i]wO&:`-1@=jOPC; hjMBNi (bq > -UTJx;v Z+ $X*v5)bx$D%VO.pOӰHhh¥ [sJ44$FDcD SYc!=u65Ԡ#$@{i脔*!=z!;6BŘ3F+md962'aW 9Ϡ=Z˰c紴~_0 -8/4,cŢv*^,αcy鰝X[qԋI3 !hc35jeH:-ʨkسҺ4Ws԰:, v-\ ÆYl؆kعF=4, Km8I*Tϻ#!wXO\) O}2!W:*Q`WÎstXdR֭r~4 -Eɕycqƶy(đ-猍}Wg{ 3S[̘M/ !\fD @ 48G ԑJW39РpF7mxu  GљB˿y%QÛDm;?hL_IN"㼂((lC?d!R$E~VD'訯 lsl0%&CRNe\_}}ddZABFC +24}><D9zD ;Q  9O&THvN4Sl-'ĉ.dGüYƜA[#ڻ"i_ ?nv!bb. ?LA6r80Pha/Fpx30ې -9ClUELѬ [y gFi=td' ";!U'@dlBD:E?-/jcKC]$j:O̻"']iE 05ZG\Z؟AUmP;^7 !!>{c:D6_AF;31!(^˺I)ȡ/Z  cSnrnY[˾;UK/)8a[EkcҳڷҲj]1!4@m0LcJ4rk#-Pm +M(Bv'Hm,Hc+RcqI4cƝX-rk3eg93hzٌxe$NȑnƢe$ d5cWXNr Gm)>GlZ:>#) K@}4%4đтJ 'K"+" -Gv IBk؅DŽ$~GԂRyG [J(>U v.4uZ''.b̢*4P롲oj40fml-&Bmfp2"A5Yczkcr3D>ȅGMړoubz=)V~b[ 0v!%b=yrQnZ'pX8K<33ǸhM-4~D:Y,20c"&X(d=`yg12 }]( rk hpOP1d 0Z&p~a( R /e@7:M:p GHc=65Dw'),OZ@p~n%BtU<^:vؽOGz(5)^t->z%oh'ީ= -!EzVQ)dU}jρEgHPq5 ( ^*ŀX|)oÁ-uPg,Tf/\$Jpzɻ|Pk6Zh ,bb+k+z3ɑh¹=gMYr48B҆T -Gjx`J]x7~C$O,)Fj 8'էKFR6P k@2u6yde2_?V_x@\ѿ 🔕 -t!u eJN@];4A=ob|xTWb6AC#nF̏-=AhتZH+~A#STa58Y9u#O*2Zʠ_<ΛG:~Wd5 r̟i-q[ %=bwI)ጚSY'ƠBSY"Ttukl7I`X:ߠ^Lnoo$vhr95rf" $mjAl@O#F"ĭ`PdQW<T0GkVhI&6H|YasykLq-s+fٵ]<\2ޞf4OY%٠RE#hW @`\^d!0S­A7hS8f%Q2#,-8}K[8RoC/-.qxaYQ͂I=*?mL0:yipЭL4QiP &rr+ךw{cJx0bG(CLd;]4eݸA^ն'$T# yېGYA5 qPO"U"dSڡk׭{ȏ"D5{Yd|Ɨc\:цU5SI%f3E"'FtyCM WT*G-Pw\ڮ%4;!(#ջZ‰d9aH]7Ym2#3#ȓ_mdv{ʘ$nK~LkB~4ߔ'r~VVR"ix/ـ:$Ry ! FgNBgO|_l E #v̎?*Ѯݒ#Cs`OK\lYl^F2f&xc$&0vG*՝Xbm.jH`pZTVsI Y$F-{9 Kx0 -1B -8gNQWFl*B 5=g!G6_XA &#@ $ *M8rdMg s 1Z[z(< tU q<ԦlÅG5:24YftYfX6=/b)Q ǥh+aΦ:I%̝W>RM )04&4e4c\m+ Jwր[ P^˜H>=4PT.dN -oX:ac("TASǐíO.ơ 8 .@{҅4hu(F@h !KKXB?޳\ ><8?5TzaӁK@ȵ':xZs_@Џ 1,2v2\}DOdQBsxqa`T쉌"D6d]pfRk@Z8 -@M:VN-eMr1 {+wn[M/ͳfQ>m\U&O,hek49 S8G%4^-w{>zLNT!6̀j /B:7!qiy  CN~.*`q.¹c;90asEp&K* )7!CDgWlK6(m2TtNc퍧Fkh34v/!1LC5Iq7k Ep$t3mڨ9ӱ7 \r{坅`@zhͱmF vf = wtՆ5 r+] 3JW; P"N)Q>5qd>+k:57/Q68PZ:a2nC;Ȥj+mnocȾBַ*2I^}>fD)SeE*kwYPR]TYMzoe~'@#>&N0좁kW&t5`}1q%"y[)]$+b<[JO~k!i@% W+vZd1@_E^X5GH`wraޠɉ-\5J^]5}kt8umZ> -Ȃr&熣1~؆iʕ䝸U/'g3.O"&mc!1BOֵ"IiXo 8,p"t5e%H/%ouy뼓8.kqbwŸY<8E!AͲ& f>kFFL-^uAJYK:8xT?aqZL[I.򐒄Lq -\޵.w=%M'~vop|YjQ!a_C YQ 5EŸ9w_c:аs4j.})>ݥ$BRŽNMfrRєSi 5nun"?"34 \ $=zOYHDY7 Pl=H2@r˄D-X1X -IJO.Hy W6AϮ~Y -v7e>c* Z .D81Sd,&Yuh5:rm L4s؈J Scd-;Q+FKm -j<>ZJ[mSm@A( LDj;d}ݹ3d8jbAb5crǁޛ5Lʫ]YwҀ:J[W`&Ԓ.=cܦ( .{F0 )<t / =PA2k2FdTQPX&0B \. N50o5"o>]RG[vP6'8P1ʙ!w2?T̪Y>'|. - y{Iu|0 %.A>>le5͵е&w+@`A~xw}P/t4Ұ9*HFhlO"hVs>.3nF%ao5֬$i|L'S(dcz KDQ-oo[NZQGdXqD& \'U!pc -Ɖ X0)n e)gwJYז4BTLKW7kl w`^i%[Qk2&HeA$@,A:J+GVܮlj fgYaձv5iW;FIV2kYY(B7~F36?q3ML[CȪ*A 7',y$s7=7q -.N6#`%FjӐav&KEB[\d@tқ%`& -FJ?N<{$2@F$o=vN5]agNMZ݌WF1rDfVouG0h|Hq\qe5Rf[B:猷QxwPq + -NIG޻dwTʆ\u_iNWl -ļ$tmz!3UuTƔ1 <˛ ձ)ԋ ",ѐNN4Αt,c}ZpqU(HZzP(n >gc¼Yq qO e/ OoYCFIMetRQV_۩BYУ2.sc%W j8%K_RV7 ٧*E7˒<'%I&5rZi5-;,'}=K+nȆ35?y)p 7TY Y3͌;ȏ N~FhMe0Tu`+s_W(Ymfȓ3*pDEi uƛ?rt-DB5! -[ĿZɕ3ڣNi&ckU2%Q&lmdI3bwl ϥ R&,?Ȝ]wie0PH@bW՜۵qjƌ.479ޮX$В*]]G -M\!UɈ]SRߘOZg ޡ -j­~)P`6IL¸Ťr.핀30Ø\[js?aQ`Ĥj[I)ήwN -V.AĤC2u3p];/blФN8St}{h K4 OM[BvO8oT=gTpÆOIR佾\Fыv^C y/29AuhJd5WDmH&zj, IRHI#WWx-YŹcJªOPN\Sw+S&B)` |[`1(v Wh Vf<ܙGz`r*lq4YwUdY؂9;2'HAkiFSJ7LDE$Io LPhtҋ]%!6,&Ħ(| - ć*VhR\8qHB83[zp5Ayb3Fkp=δ) 9!$/H@\SŬ0U4y6Ɓk]!Cw]7ZN`YV+'n*S}3j#=QM+7 &e Y+&r^5#?: Y gPQ :(ͦn\r$I6 `w0gnr+6E-/R.tLH1Kެc 2rT](YU- q.Tt!4e0ϛݖrZAY% &枑8*|Fm/Jmd .Tb{ij5rH?j?8:TJ ;(xV%T-~2_Lu1S5k%T[}sL8s̾:qCPӍ-ֱqA~Ȱ(M bH00Oy\cag8pbQ|QT0᧟}1N w GA߈8j[ N)4 g8EK {U 'QW\ qh@ɂ|+ɋ!'u?Gx:]M|ƙ`ppe;*]olm`]CGCkJ܊~0ݗ) -Z`2@G{/},2ޮ`AANj-{{Mz1uMnBT0gPCNLBL[xoK7 S1PS&C &#\TRa,~rI2nd&˘1Y cVvWtdjLY!។64*9yI$+`,UB ICG`>$ M^dv.J)J olS8u.Հ&z ?(e vʧ )E^{2?Ƞ}YZ6ܿ^w* E $Xs8j"NY*3ۢܭ - JnClsD+N􂃒iȲE>`%cS ž?D(h,EM}x'܄ m~@?*7쒇܊D꘷(s8iNVD<>C5"$Wd>_f"8W^+[4Xp *$^7h$ӪDm18Tʱ쉰<;e,&ܶFK4;3X& |?gf=tPڀ̸r -*ُXfRLi2s3(8p-o{H55VdXHхR5Ӵ-&l+\>EXNG0Nӳ(5z2>+'}ÊhqDqped!E\ u\vYvZZcA]mۀ&Y&HOq Sxz fq |qIgƄOֿ]Dž4P7aŻ bQ|9o"KWa}N 5@-Z,Zo^.^b・ "^B{Y9 T270XF[9BVHVa DjLm \&2'jI:[Otb9KBi>u~rlV` BEP?4IU퐾bE|چ8)Bzo}w3LbȬ]-*fJmE͸t@}_BNj2zä&U0}NFaKbdOMZfZdS"֥/}%&T4)DHc_HZOo5'HoƊ3v{5+iMm6 Ss.qcЮCP[GVT*MlN~2KO&#X\I&>uv2y&nz )&;bdh YJQ9j_2Pќ>$>N%,e< `5s%CN>{|*S~5OHb":l(x"?\]7%Wک?~I)#=BȈ*þXA}R\$9K1udw枃mՀkɍzgx]:تhS6:E;0H4-XfYt.1P R_VEr}6 GMR_wq}Pj@8/z?L䜕/__nEx*-jnCf VW ָWWldʹ})gрhS38F ǎZQlFl,|baH"`) \2JP$PzܒÎ/ pn"Kp]X˾S Y$6񃃅f/8;FR < ZrxҳiXgEGMd"[Jdzɩm~%q̔][4xHfyн(tF(}QPE~lM쓅 ]_N݊8^k-cV;/A$bk % "C](;"Jc[±S$X"j%!+4+nc3IsʏbdaN"yڎC q*K?$Ed!=7R j60_,z6눦Z4THm0:}f[G}[N,;'gQ2 F? -;0q?,MOIg\ 3TX5pJNXzpt -ٵL=YԒ-5Ղ%O/+LVU'*!\0oxMT!r~L 7QX-wJy~kÈ$ֹoGTA"sꆸjtw -a}D qk}yr)'L= vwD*GǛ}v|c^ѹ>E/p]c} pܻ!Zp]slT2P GQˬf} q?U1wlX:kUF=cV0[Sn\[>ȅ75~ڜ˻fe6 0F=#% 12d6ƀȑz Ϧ^,!d7#%n+4HI -gvU]vY ]**G.X%*0Qux,Drr0fEDǂ2 OP@#- Y JH.$H  -RH f''GFAV$A>tXEEDR A9"Eq1c2CP1Q6 -HLe3$ @8Ðh8dp҄n  0D=`#2@x"bb> pbPh(h -xL,M2c12@HLB!с$Ȳ8iPa2ab ,E`d&@dHx2& 9R \h$Pa"l7)CcDAAG#<(F#SaAcd126C#|a 9@ /d h4 x`5-,FYX fȘh,,FF (Hf؁,F> /@|l$P NL(`A(U4F&xbdn]>Ȭ 'B -H@`qc14~Pq֞ %**aasLT, -"MDb!Dž!L0LFH)$2BP"l>xh2 PlBlƅw -8  0,ED -x0P<8 K`C@<4! H=@P`:`.|FBh;0a2fhDF  2i eaAS2 -8ʁ `A&c$S`cM0АpⱡADIGF - 4";& Ȁ @$>L&#((Ifà"PǑ< - >2P4#C l`&:`<3i @8"2nAJ)AFƠFAZo60M J611IP$ , V H -t5ʱsΨθغۮpGS%-$)h]^OgS.X_^khfޗx|m3U=&t͈!gRT9OLO^ZKGCsV_\|W@ތ.okvο˨֛ISĨ$Ir*?+M6I=W,Py.56jdފ4ocuw7}>=Wg -%T5ݛ2^ףŨdCrT:|8'CJ" L<8P>taVS@KmLy)*5~d_i׸:/oxv7oɽR5׬ёU[q9;ܿKseחoY;z}TW<:QɮꉠT6C @>:FU%^+4R h.H - W,HQIipD%H bD8@w=DJ)a/dn% N;~{!|ƹ-8SYV,m-rKKGGrvZ]tL!܊v6OoυW@jo߸Lbs{Q]xs5b:FFt]؎׬l7Y7[ܚ/||7+'ԯ;,+\F -]*ds;vEN>Z=jW:gbnW+I՝K%'r/-N2[/.kLLEoO\Y}uhw7v}}jCVOcl{gyn]o)4~U+PFL<wY֟n6sۭEm7]l{kotclAv#^^%vS~r"r?T?]wjhM7|kOqG:ņR5E R~>_}Mż$^JX 4\Y@gy\lץ|x뙗=l囻])bjַfjmkfىȹ-BwR}T -rrzH1q4e -IU)vv>f=U+HMmjݯy{1~WңOU8nGѥE i"\Wj\G:>țt{;[fsdNfL_*Gd tx{z0Uu%gw65^nnA5y^Yyt=IrN)d!!>$橠VK(((",j\8ǁ( B ( - CB=Qjagl 5ݽ',r,^+yysjD %L3Vt:&l@k9pOA&ْFXYZ8c `WݠzpqST -% g0 =}j}H~@ /^*iZʈ" PJ0/zz 9\ο=M2Ȋ[ V칪Ś>FL|n[@ K1F;GOq/K.$9є6\"+iq$[}rɘ.i - ,M&{/\ZP5\DHmbf}~r榭 -glͥHeڠCPLgzdS0)%i#U3$-(AaS -1iFn4I265',Ux^THw"]yNF\KKӃzC=FW*nx R%W[$D%IpVO0cAJM% -g8/6{#%SDV@D NB?te܆ eFw:+5|-X -!s1-a²3~W=3KdK2^a@|;-O$t(DI5i) - ]r]<&.]#LuMf>$'Ƕ9u*Q;u=pREU|B#:m NFģa>uPVӛ)^4dex\uyMn99ҖI!Mo!*nAnHޗw)^}dҏ _ނڳ˒N#ʰPh+V -MurR*փߋE_32%ռ': /Ӗ2YLMe=[(zsibII=3"L$)dVp*>~LUCoL4%C3kWFRzU -^ A#L2ђ= Se5ݡ9qL(`:E"qSjnrȌ 1%/f :h4 mO$gʍR_onLYT"<߮Hb։&QJ`RzRGyVD&ڌq{Nd}'5`NRի[V;YVM/9]jJ~$OjZj] EIc -E{1JJ67NatB6CRvgjīȈ|hGWO_MuKQ8'G!z2L=YǏp*`AlytSL-µ -NYOFĮp GhީϪđI#}HFI-D -|5ߨ9 -V= -5DG˄GnD6eH.6Pp~qmЅ/Dh=Vg_Dj@ݱ}stGlyOX.ƧC] MS] Tl(OT\RupQ&E /̓f; -~ǤӍ4i9B1@etRÀȡ)wWȽ-k`h;VD LaA`:@UO.#jB>vu#l5D8.mCb'=M<. $ؗӍIuN 6_D%'Eq ǟ=),~oTYXd:d z1pKƀX8حb:\-@qfO1)I1[htIrRe1{ʼn5a)JO6$F*E'ź+[y68HS*nRW rA@Ud#;гe Aj"QT5mߓtkܞ lһDpJCmJh$Ocu1t7'z(Yl}u:WxOmU i[c$’zӎ;xZD$E%C㝚>_0Z֗Rtd@d%#=`J0aewCx:$聚u) vqQT¿8cv.v-oga`+Mu>>fi $ZA H(TGk0`. 3EaGD7=2 'R}uF^(u3.t$k6p2׻:Z )`FՑs#?zwYE1.kx]UzO@/&!zHὴoBVC$$h#$7/*>fMI{S2n4L קW *FC.Va4CXu񘸍5]]&B_):;~8b ☘pPJRHUYPrObmkqTX [nUMI9~!$in37 l)!:mYA,Pegb#az}ֶƛtܡ"z7̘zT1Sڙz@[5EJ}$Y]NTۇk'YHll}4tI3OqU?RCtudA tf#en -c?lBfF{c2;O[D3`Y@, 7zr8Ԓ*A59!1E04ʏ&J4ԟ)" ߸Ꭺ)1E(Q! ۞FfǦ\AQa DU##,E#)/EE;,)x .<Q8\Xxh6lc@"B +m$^B"+gIltKt!b#e8^dbƑN& !G6A C-Q"@&x`l ;TFAvYxtubl0":'EbL R0 pН88QxA59g{hAńfBy CRKAAR ,B-[,^EUx$$a`P> [ddeU0q&z%3M{6ª?z=HaU@5}FRZ(F`jc !qM)ȑD*HC(6ꁺT$ȑnIFbI5ʕ0U.FLUSI ڨB{.@l";ptHA`8hHUEDR5вr GbX80TTLQnRJ@Q4¥B,t =@4y\!,TxT@ T(ڸ3HPYk8@$tYxn1 uAs G=W`J 'TuA7%RL"r*}IPGۈhՒ p Ѓk84TH hg,Մk8Em28mEIgҪCQ1^ېã*faJ}`'''|$b Ƒ<VU]Hls $lƽKG1 @ ЃǑ,*ѝףN 0H_.Hh뽰 &ӆk8$ +>`L,3ZUcMƋ` <EPd#@.Dʢh.\p&^+Ȣ(x2>XD `υ<Hnn ,l>깆c*$Xp H%Nmf LtI 3%NR"" l\ɸp1Px>5Q18Z#FjP-p5F%(@00h?UFpbsdq ʗ0 A BmӌcLjAI쵡 +F0N=.%A"5' i@MDVX@ "+T@l]2&`"@`\Rje6a,V%䌥Ԕ $h<ς6-)S 醦K3 &@|Zp \7P:[VV'"[v}Ep@`k5M)Еe2Z 2IFJ,#TSp7ݶ@!v0M )D-lv#eϸܞE:m teٶҎ#p@`:ۛ'6"2 +4N*U @|0!.<9c$\$\^v3.dA#Zk8Hބ@Hs(@495#Q[c`pJ5h ؒ,z˗r!Y.Bi,"g, G9?p)N$o,?>ZmF}&Ϝ)8 +ڕԈ#H6>DF\ H,""u* 2qE bI7Ռ%O$N,!& G a{AXHaF.BqJk8$,(xh (8GX셒]J/Y}m" s"'-XZendЉk)(k@xTW&UeTP,T2Jw*! PB5VgS.,Ujd<;W"7}`20H 9h背kd}NJyҒ2։*R +p@\ypK)TyMd|jTV9p:!դ _4xa +$+dݒ~+|௠pm# Q82^ݲ8n(#Ap .EQ&znJ&ѰOD}O+Ñy &6+Rfq7`6MdIIb%mu8 +X:è BPN"ۜJ81;.ܥG z f+U˷2T)% :h %Um$Q +G_ ᔀzeճߒ(ϛr3Ug#[$NFD3T"-2D[$m+)R'j sբ6X# K@%Q%ia@(QAwisѥE^DZGC(!kXADNDKd*G #_!\@{ 0-+X'W}d8C݌8Nrv#̞%OMM-i뭔:אȸi5_'Ъcu$T.JԁI_d>#a)`AzP24K  U4^w@\Cn1%/h R 4>Gf$ksق5>J40A$j. cIE9*ʎ~)ECfDPrؠz4%=p8pM(x'ZI )YY(߆}r^uӇ(Lc>J]=;'sTR]L9PFm8 {:=gTlŸiPU)";4M:EFtSZ!qfɰE:V[[H.U뒡I{%lm"-r͑ͤYé}gAǨP~\"  &e@i=A~аy?ʻ>2JK {%CCGj܁Kx(5hۊX M$[~ʴ1j:)-q'B*8?? )?K FQ.h:k0takɭ#31Y\ dLU{\,y Юn4T9]yf.JvB_+ ՞FE0mf`$L,8N\[WޒCi9Hib ^̝5kTbnR0Șv2҂A0OԥrQ[ hӃn}6G4_ܛo$+n -htm" ++>_X*ցh-s_MY+(yd?tu&ߠvz机}*#O.:S%>A&νH9@5]Z\[sTReK>wH)YmXj?jhY2)*X~wBZ+*[d [Oٔ ,5AɦL{thnsx$ BZ Ԍh1e| @ vG'Mqni&}zl̶x+ǽgVhsP. o~rR\N\-\2 SnBVyރIdP{P;US|b{2}^-z|Av6kxɴz + R&C ND1JJwYSW孽yP? gv8ᤫtM h $ubQWn$1mH_UzAC-B TbG3} ͜DI. -$hTĦrvߓrůa䰏d\4G<,$iY.ԧI;/Nb(mP ;*^i~>祜F!@z6|&D!Z02iiHA.uUk^sB`Q&DL\:G縜Պ7Ȫ]O}̷(L%6y4R5zWVB}U$sx_Mhlte2f $ea.Ԕ:Q&dD X.% ~<];d`k9g`]0.aW? ְBI%'U~>n8Z6GhmїTK\+k5rk#^ldC !))E}UXDdRv V#Pt/3ݿ˝9򳆼nn4O=W]H+lRaa[ˀ euhhY042 2j͚pܻf})aʎ.5/HKPɼN-Eo) #ly{o?6ϱ-`vעu?`6`L#{*m KgRH ,HK­g į2*=װ/ 6ڴEP|c ,aRBFe‘3=AEa^EvZw21eҙUrBg{EI)B)ֱ:"ךGLoO@8wu8|Čaxز~ ٸva>cZWXKg.,ےԮ`!,=,El00e٘ޮX q>2h4RڮEp泮o%J[M jpll\MJnFS:4= W B:H^Y^V3)m F%O{>Q*Z  +Ӯc毗oe J$=r8L_8Jclh鰢`g}-'mK{x{Ƈ`OLmʼn%=RUP( +|z!d >݌Nq1.LLJnDO +[Yd5I4Ύ3Εw#ȳ8!>rwbc3z DկP򻺞6Ur0c}`~ A$|>,_>K.q8xǨ@wtL O6Vaoa%L K9VKCyH8 &z¿_J1OD >Dp I=9ER0SrkաN2wM`q*Vz̈́`܂X~fBXQEͰ6?W DhՁzA)ߓFփ٤;P:T1USOm#n d[93&,O&p-.YsFoSIooPXs5p\M䉵9') C$~B2?pĖog[玍~˝+dY'NQHH~ei&YLAF *j!r3XNxpD('""lFu%֜j ++l&dSK.G)J6pQʣ<05c=21t\+]f35(Ue &4жOnO+3qY&Єhgpm:CNdttĀV@ܱcidq s4mA2WڞSa5(w4҂1F4,TY;1dSKe^QpX y5mͭ3' p^$̒)d94@=:)^K}?ZomK2-SZϓ|j Rq 4s*R.귴CZLcB'Ӎ}`2Ho™x֦ހ3qjyLM4u,c:i}(D6\ӸA*`JͤkT ziwF/Y1PUĭiarԸ`B/414؊ ~rZ zfpDb~cL™`fMK,p4pKFGӪy˩;Ȇ褖'i ԝy.,49S)\ >:M5gm+!]T2xeh%m'ꃣ)TpJ&p $ӽL@LM2yMΪ$,OVjr 1QFUO jFUSFƀ}M#"'Q%V@J{:XnÉh^gȲƨ)h2Yk/hs#âwdD+ 恙Gs`Sha7H)ޣaֺ__+Mg{qڢ ] + DS6)anȝk &B즙B?Tcfhi C(~80P5"=܋C3]Ch.poşk~ _t& @M,9v6bSύ GR%3@jarܳk^娖 A3ՎZ^ +ut@i nnKKw.5I^Tq*-jO͜>f-.!#]ł|G w Jbn¨~-d&!S}DI"*I _ +1 :"4Ee`DDO`>7LdnUtH\756 fB kN9pC䨻PFC&(;'Jg Ɓؙv}׌½KaoR $}'-CGBvNϬibyawN%v(ۡ>k<DWtp!HTҏ@~P0g5HHQ>H{ y{qq=ݥ6tX )}v(f#QkBd*@4n]`be!]hwY!MRE~si>4Q=X4ʯu",Ψ_$'>FUj>8i︤ sX[D3g߂r^!eۘmaQ-S>FÇsF:O^!>53npɴjnV0^9rcbi^'Ye(o+*:g"w>١N̯+?aRHMtiUae_ˋ}fbA-Y¢:&c~KxXbm0A#g+=xJhBZ4ykN_* b0?dJ +}:dFtpWe4C0)qS;?5\@ƁlYYC E"ĎدqXz\q (*4щmk +m{_ lkmǁC$ݝ.(P6\\X$@EeYf G[:*SÓ"U[3 +qm%YpkvhMiZLMa|#bqY"K|Β~*杅&u6fr AE7f&4#%~ j6g,h Z܏uw\DV~GuNHerj N)`5G2.n]f%qua%/{#`Zƃ4vNUf<|~lfJ xmAmՎ:OPJ*Q D)k {^]4ws6vL;%ISVt-!@BRшEҥSH%,${@`+M;﬐x{z[ZL]3DnV`v\ҋ&{?XlL+,"YG_N ; qeGh^.X/}BLQp-泠GCZ6:_n\SSUl6}Dr)IPь(ӑV[=K +S, &D}v4j|Sd2SA}k1 +kӼɬyqT*U0' %mшNE ] bnCb٣ժ6T.X|" HhabI9Fh9쯁FJ[lq=Fzc^H{R1J۷D:NEŊckˌ^7A5GX[n͇U[Nr9ٳ)`{GXC>ܟ;hzlQ&#t÷)eVuXSFWR3 P=AB}FpՀ!U,mbCq߸[( Ht  RՐ%L"7ro*uZ u'{3twQcXELrPvUm~AVg*~uO<>՚G?~B l9j8_D=5bqYi^&eUWc_62k)aYBOO# ;Q2:'뇕{D3O0s +i<``?i(.bORM8Yt9:}\Dw4uPŏPi Q5&?S\+Kq>p'rI{y U . ye!Űpl#e=X jHAow)FD+r]}jH)pf ;ȭ| Zx- AhȾb|+J +{!J-.,F<[ڎR$dMxf _dq7?m^ҵQz Q+&@:x&Lʎ,AP%bu$.ܷA(}|~)A_b~_V6Ȋņg7(N_>.Py xQ_-Y +(yAvwJo"QdSy-%ְz]DGFatf$u?ܑ +BP&`L)d`9q ` e +k| f~قݶ{2UJ +bӹW\%HabP$6PUWʒؗdFX o1 V:d= **I!b%`ly6ils[3lFiK us.爹|f`x,4|-=/0 dzj"j2=S%4 X944nMoԄ|L5jbRpFTh45&e[8cCA@ीd"quCKl2:+.3h <K2|Cl]z>w5&K8'm%֔{Cjo#m!mZ"Wz 'DG΢!M;]ڛyF 5x1_f16%]z L"PP'v#?Kt/C̊oZ&' a8's}oL{;=`˾s:-ThiW 3N56 ^RHLNCRU CpeXݴ1RC<dQle([QFLw&dfv0ɑDmD-Ün2ש$lRk +w#xqsny"ڐbP_f>O`% + t lT);Hc^)-bP/1 +<fG3 kǧ%ZBh?érQ#)dgGRPmXѸ`n'H#Q;ͷyJT'1(Xdh"TE Hl\$e%߶z񃗙>5 %`9te׾ӀKď:Jz24VY +E.|`gݽ8P3,{RIrADX`XF?rexƉŽcʝb$qf 4Rb!™܄5o>0™i?Żlft$ȕF-}qJӑmZiF q! +o=v#O_Ժj*-.9W]not){?P0\XO V<ɹLNPi%.~Hϧ$Ec-4QW9S>s8gL&:}jkVEoEd%eRDVK:ti~+58q}Ђ_5+S~n==([sE|TXqUU0haUzŌ%E'h]O1% cUU}y5iGuXioc["ͫӨɶn +X!rΩ#"Rlq(zh~W((i!t|ߨ8OIS AC€I,mLu?`ti/F 𫐹0U}Ǥ $:9|Y>.u$R_4xd| ꃟDŽ،j5.!&58̆}&]Tvh'HChM8&P0ߊYȪݹtnq3PPz6-iF?W Nt˕+"TQ[@eS ,5 V0\[ )eQ KF[LҝRe$8QV #z*+RePglEr1O Q*nT2t]z)Vן*S yFPBމ'l9-" e&4iPwk>V+VvW^mIA 59* &bxh#NCP`kzt}dH!I+L Ig~Ѡb<ŒN]XX' &5?kJɈ*J!AEHևdY_;*6ZTC0m.oCEH4CEPQ^ +Gxk̥i\zɁ'mB֑eH96&ӖRI)-I허'֧0bEJ6T;v]ڡH5T]qFJUMH&\U:D(1[4ULd$pm"|GC"Ԧ5u6F\1G]pX-91fĆ|V/s$suOrbTт%f |bS̡z93r~q$2M1b~Ͽ>lzeoFߡطS(cŁz˪t#OX9#QWdkx|;MGYbĝ(T$i(0R[5@nnHLP @:_k׼ά`06R͟pJ^Ũ$( yu +gj;ċӜeyhZWR!SR4!S"$/(Q~miBٳ-p*F&Ba*>M͉#8@uE^85'?^7aZ6Q}dLC%Yڦ=xXQM-ܣ#:} 8r `1 c_ʩ6A ւhgW9sC0{~#߀Y=>KbaV]'4jIIJĈeZKn6 N(rXvcڬQWeb%7u-u:|8ፘ?/[ Kځ"6<bmjk(:B: uc~/RFJYX6Փ%{oEs!s(30JV gGAg+I^e/ܫ>dA?@[AJMqӂVVjZT*Ou9$^3 5e^ѵ V?ާs kt &{0\f˓CLip17d k3)kuFYba\mT7[MN9xC&fBk'8ٚnղ3T5=%Cz &W|S:wͅ}QDOM$;tݱ +{ ݀3H@c̳ZӓXf$q]̤=w,6UkIcS88 }Fef +%XGq'e5W0&; 2L'+ب|AygZYMKcE$ @=J!8< ihUBs*|9 +N*K!=W0+Ae~jJ dwqj'x~lx@1w\u;{NLV$D0XJ-Xݎׄ3ɼ -EmG(+ahÇ\ 29x)}Z0AtGx)hEr4tWk<6ڰG.RX @s e\Qز-\ ~Xl1(  `\'|aV~˩ 3X7r9۷kA\?T"6(LLˬ}OҶ4,>+iCsīE\ Q2-r YKV(d;'{(ṅ{?z>5=N=otxp'j6vHs=:)sfQP C?P-Ɠ;f']+J]d} +%fA,;Z{_V*{a~@vĒa7U|b)@{dW?8 b)r}K# +_,kC.oI)iߨZ8$Xuˈg @!r85Pa͕[%sUE"'=l[gWmO?ʝ b2sH =I좱cs+&(av-_8a9ў/8g 6!JZ ^̥eHdr9bɂM3jK!fҾ0?|w!@/{εYܣ>3"ޅdц +ꞥ :VhAٵT(,NG@r1yIoa9+ G\wOINo+e'ne#Z:]|$W^sh r 2dkަ|5Ha" zC7Z pXnV <6PrW +BDΕ=ԙu:E ^a} +D) <)z%S{hFHY@Q΅7͝^7a77y-ĭOszj-*D2׳]Im.8α"bC{I#@fHDLy#LMc,Z/ȩ S ‚,0hJ.oLpY7p37G]_i(dlL*SS-/LJ8Ic3`@ @]   CcynNp5N,4C+G[efyxA΃./ _ Y ++x ]ekCZ*'Q]_]d1;'e b'2A/ >}*A |NaLʮ!Q >HP<# gcXTd/ 0.h$5OĢ UBF:"lau&$T :ojڊpaTҕ@BQJACVqp +3ua%oYLH {B(H'gRCъ+{Y;f+5gOE12R9ѹϘL];MDicϒ@"m# j 0r. ; +WʎRy'+Y# 8AV]~Au[ZiCGus=Tx8rnkѧО7(5JL-VF_=SN/ `-:Q4ؾn{Pe48c<r{ hBlryK#by͇AV @&I8y*ܐR1 q@ɳs )Ue + N` 8[)Jӂ"Vm8~ ƌsl^_Xۺoei/ TvʉL iBXynHN&7hA@kZ/ P,%'P:~չ闊gH jm"]S 2sMak|ZFr02lbNI3y: +F(αjdW \c=i04QȎECcWɨ +jc\+‚펽Lt+}PeKA(&6U4qJ^.R/wF nEʿطsL/ޭBp:oƭ)`6q3(HfiJ#$}f]R^7/jL{ vQ2+řjr^4Ħ$2edmP}uçѺm2ϕځ<i$! cMԴ7b9XĒR9!TaXjnhY>%M,|cxǾR/ 3?ZwA]r #H]}ΏٜG7Gcxr6.;@eoD~]uTJ7ߤ1 _($qΧ'kCܑ6[عTiXNv3vC.;ICv#Cj!5vP%8Ʉ0=z%p^@;%lyHR}x宝!w^&E@]sT +luQ8U*k5V DW.HD,/т˓5\|4&Gä>齀9*SRO x6Ba<ʾ ί=e2eJ ;h^@V!z`NÅ݌ej,P1!fpnBee8 +3$ˬ%vDBi$fKbGkY)1GUTģ ZG.U(F#&6 >DXBWPū39.j2XiE9GaMwLX0t@svԳDa467=<߃*Ejxc!&6kj{@=CL`9 l4zp'xpڃͪj#gY`4 @hij9 Sn.4=5JNJ.-Ӡ < +e!Sh͉t +4"91 +ObF&;2>M(;BX$F2`dHF]~ +{C-n'Φ@t~Gtw9w1\TUQM;l ȱK=lF  .ZQe`*ʵz?Bb؁ $bxqA~7lctb12aK1^QE49iꀦM޶ EdqD0>Ђswm4Sy\?`<()KP7 R> N= 1}YͪRY38I ,f`@G2ZwJv#a7'|8*:L#B}4"B#`K#21kBn' 0v@ٓ`(L2Q ׍F郆Ep9K{.߇[{G2ZZ"A[[˩˙ƾ3l2X,\9L'ad$Ju/ xF\Fp [ۚ][!L.+x%e)D22u,Sa3i(#v4y2*mEL^9v.S2`[!$'6'*kůPzxk47TK}Z @C!eCCZR>ذ>χ4iQF'hh騎VjiiŚtv|nN;봜8n!K?NASiCMUooK{j>s]R(IlRc$RvdrhPvd2  KBw#q@#ۉ(LӞ;ݖjxw-At;m㭊[Zi XÃ(T(UP֮3Z7 jK9}-UAU.\9/nYK5BB˕bP jg)INfxåWNLqc7cBE3X!qζr\^t >O߽‚~=2'S]=5sSKI.F~7|R;d JNE050=,-ZMj47"h55_y D\okT+Hjb2En}*M1x6\]qK`o 9W +#{Vn$5wt) 1Od^v_PP +5ec +[qBف l@ ݭrv# )䴕]~ׯlqJ\M]1syeī}Ċk_f0i! +?diwjŭt H j[@/>Kf\q{?2L#.mS4rU!s2 `]IJ<2jܹHm%rEm䶄=]5Ѷ 5 ὀ g9+}خY]S48ʝԞtYcn* +?̢@'#'e457z4< %n)s΅^  -|Ta[OvDtXq2Z 3I5_ -H!ːV6Jܫ UP 2i!Zb*yz -'Y;Sd$DM!A뒠v,a;BJʡ0S"&rh&0W/yJK]a$ -kB88!+@ueC5V 8@\ӓPUe jݫ}t&ق~eZ&υc&ӚF|9+I$a`0\ƮV+z^T3a>B@ҵ^\lչJ''93N[Ǧk%Lt/L$o'*4:&N'ܗVTb%>^ž6kZz"W?UT1IbIhQn#MK2{d/zJ?)RYczjmNA98Wy#[SՖ)YY%(0pbN`ta=%:<=@:ǝk\N}VO r+=5!O'a{d9a}SS`mVq2RIIgQ:d5E6= ":$[3)+BSd} T9yS/FfyTu9_ ;l`1NILyDJh0[Um7#8dvgˮ&w(R>60 nJ*SR*2pNhNhyg F0n -d$MmN@ D@kdJ@e*RCS|w`O9 M.Cf2!9(` O0 -¬rKe?q d?-z/E[3CAshߒ!z6簪BfFM% m!$ 2гarQ \C)ggku -Ox 宒_02p/kT 2rT z-_μnhAZ%srm j0q_ b~2Χhk#v 478i|d?5L6$-1 칊ot!5DCL0Zԓe;jj/*!^l\c3я<`PJEmC&c0ʾj%a :LjxP D3@ ( }8V ~6toR05ŽtaA;U#e˧7 ̪hppX7$g!A0O\DF0,T ;՛&VZY;k< -7䘥K?Ԥ1a[?X0 -"o&5VT|~TLU';{}E5g[&y};-E' ?mM+%*\">ecr2@Qj';봶JĬ&V'T|#S`pPI)Y[ּX!@)x͚%9%)gS2ѣYHG,Y{ 3A&x*^KoMͩLH^;VTce3jH1.!|5aƷR0b{+'Y\s>q;0_ -B]_H֣l%&Q6 I2ܼCr]!C2=͇"W2R'LcտV ]lAl+}yuMkc+mCYK'ZE 4KN)(ٟmb] D4NgpI~h~`*Obo3M>#ȶeM/s*:oSlh4a?C0d -1* 5{?"CȲ)I]Vr5/AB[둞'κԬGR^MwMu)Uz4wX⤟Ną Y4z}YNqx/@.|;މ'RxZy`4gzu^eS~^Llx+~-nOLeyӀ#y&(69Ջ(f_W>ѿ;=M(.Wse2챌p* -ɋ-Ȝ(@  !n?Vz's2M,e?BEenʉ4_]q;MTv㷳0*mQ஖tCp `jŀA_˧=>5lmmt*ilI'Fo(W>ybPrL ȣKsFBĩ,$/gkqCdѵRI#BEaJe7'.pC6:MOפh!MH5%Muty[6uⴙnBٳ9yv6DߠJ 8m9E/ڌľ6&BIj" -Rgnv%&4?%}x6wKcnfD_[Z'$$8L5@RF15G[8|_kk2C1tk>WG~ !@B(08Wv68T7Yv"@ -endstream endobj 30 0 obj [/Indexed/DeviceRGB 255 31 0 R] endobj 31 0 obj <>stream -8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 -b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` -E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn -6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( -l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> -endstream endobj 24 0 obj <> endobj 32 0 obj [/View/Design] endobj 33 0 obj <>>> endobj 22 0 obj <> endobj 23 0 obj <> endobj 35 0 obj <> endobj 36 0 obj <>stream -H|wXWϙ a# ƞ$V4*HGTNpM]ׂXFund5q XJb4aCu`f/'9s=CLDΔMj -1c&znNJ.sDġDCgfV\1Q@.qi)%-# -#rk<'pD\&F<;V"t8_ob>IHɜ=τ>@40495:I[JP谔i>=Kq O^t{ݿT0i!M&J It]z$HvS)ݔgh:nmz*]fYgv5{ͭ̒y9 -r -IVFM[ʭ6r-9TNyZ^'oQ |V _  !+RndfqjٺBmm}mm'l> 5 {p48M -s9Dz6BFV[}#]>\(!\nQD]oZJ&i RtH:%}+ݔZL|SA -o&.HIDcH~Dx3|@.j&Q*H\$z6 N$"Ck)$Xt]chT?!Kɞf)H;dvR֗/OUk6UMxunںϺZl-Z;ۭ۬&Fj^U#x=PU(XET*"ዊDbew)S@\Uʕ%CISR$%qStQ]POV_ϱڵBć3MX;+!ҝщ_#UX<9=Edp:W{HqQyT6iot?v)ymu̧ȷ95 -QJq_?P6ʡ^R.*Di;Ji _i9ȏh3S*b:CSBєO1TJt sd8* TF{)ZL%}Rh%Q"MJiT@Ni42heLEh6ͥ94|:L[)<*p*Vdzȃx0 rP~a>HhXCc>DLdD" -S"H@"ReW SLC*Ґ@&f`&fa6`.a>`!E75!X%R:2, -*Za :|OsCN Yl"bCa!װ̰xX`j,4n3n704ZE=bl&l]۰]%v`',؅(Sg؇8D/Q_ ]8NK|/N4k9q q;\5|븁n~]XqQ UxxxjOl 6&dbSmbVn;Nqw3C/h36skfYhfYjfYiVfYk֙fh6&rWgMI4I&٤Tftl323sdC9l 6Ls3M6'L5')sّvc~{nFn=d#9k!H@"" [lb ۱#32*:T9ȦhEi8͡4BZDi 5 -jH+i5z@imjDG@DɔBFi SjJ[imvnC{itA0L:Jx0 Q'O 2CACHax((((((򨀊ʨb3 )HRh7ƍutSʢl:A9K'<:CgnF]KtUFݤ[t]GtC*GSz!&fVY8 G2ز0{b\KpI.ť r\+pEĕ -Wj\kpMŵnuܐqcnM9qs-%jj " --my x/=^+x x :+;zp+nWUx=jo-V?7M#>‡Ho1:Vx >g:Q'd/7W'[|>?E?uN/W!w pH[t:Fc bc&b&c -b&`:f׆ׇׅ777a&1 1s1 K Û1p\;&6.|_/Ǡo/) AN N>E|Q_%}KR/r+JjkZzoF7Qo[o|b};;ʎcX;ΎD;NST;N3L&Yvcyv]`Ev]be?Pup=ݛnfh7 ?'"J)tRj~ S {$BR\UR^*Ku-#iav򢴗WttNYH7HOyKޕ|"_ȗ|%U #}e RM~2VED*3e,%Bч%A$M]tDg:Kv.# -gLRI):G,Զ<9+9/\rE5.7ܒrG=ɗAGyvʩCyAssĭpk\Kws.e\λ]{pD82l}??CP?c]Um= -.#6 5a66FwnCDERnPBDàC P dV66və%䑀R@H1)!\+r]nx缋~GQ~?o;]~7{}~??ƏRJJK)+夼TRI*K*ARMK )"J pH8ÝT'tҝ 'YpN3ޙLt&9)Tg3ݙtYlg{޽{ͽq}>qw? }qߺel6eȼgr<5ư 1M^7LAS6ELQS7%LISʔ6eLYSΔ7LEST6ULUdꦆiMejPSDŽpa"M]SDih&L`a>| pA.ąb\KpI.ť r\+pEĕ -W չ`Z\Cq8Gp$z7Fܘ 7fܜ[pKnŭ vܞ;pGĝ wnܝ{pOŽ~ñyA<!>G(|ORq*A%2TQy@U*TUT)jQm -:FATQէԐQc&ԔQsjA-6ԖQ{@u.ԕQwA=>ԗQ R4`J$BCi%S - TJ4)2i14x@iM)4tA3)flCsiͧbZBKi-M+)Vj{=Ϟo/ڋh u6FD}BV>imOSAN&2CS1*Vũj*^%DjJV)jJUijUTh5FUx5AMTd5EMUt5CTYjn;κ{޺t=@ԃ`tNCP=L'=\4{D Gz̔,%e̥]^G~ta:BGtNi:c3Ҥ iFfkƙꞺ-g`v!vgZ=IhMYY/ޯo6wǻ+d,o[{v=;$yCu:=b{{iyϽK{  @x. 30x|E>%TrY!ٲRKղF:@ABaPP%Pdl@iAYCyT@ENDN!<PUPAv8wgrsw8Q=:؆b>Nn^؏/% 0NN y\E\qWq : |?'G{@Euda޻D~'DQ\;.Ҹ5 -׌ƽ-ch5j1B(q_5&gbfvF=9'䜩z}Vݪ[U_zzzZb-޶#HזK˖+jW]U{XG̰@ -U `TG &j6Pԅ/# "D#D1)9Z%Z5ڠ-ڡ=:UtD' 8DtE7tG,z'z7}A!ap# bF" jO[S p1c1 I)x S1 131 Ϙ9xs1 FHx󸀋pYO }>Zx}>QO֧Sit}>O/"K˰+&x k6b_bFlf-؊m9vcN|]؍=؋<|}؏||8  -A(ugK(ni%ZvnryyyyymN2'__Gcq|R>%g"|M.7-D.fŢTlJu9Qj*8S*+WScdT8SLWfpD(S+ էPi4S+-:0 ch:e:Ma:c:KԈ15Ԍs~QĹZe+9?L8˿`H]o -Em6LskIZ6\KRH-MK2Qhf%ResILa+2)e>N~uXTo%jz[~~U߫?ԂZѿ unԝbx֓f,5OgTkx6@%h.-Q Lyo0c[iCY̷o97V2մp-wӻyp#mL[h+mc6a:| `FI.&=~gj<@s:D 9ctNI:yWL]dD -e]k̗tn2eP)f>̜Gz@<'zD?r{K ALXa㩏Sh'X%rħPOJ>{S2G[1qITF -,͒FH3rv@c8$~jUH ܃;"&JKyբ3g,٢ ?P2uVZy:Vуk8/HL8nGB]lٟ|7N,:EJE7=xN'>khq#}-7+9K⮘#6?iR>N|٠(D -o?I"El5g7kX[s]+~s?YL^D4Cmi(\3ǢX:gKSHۖowW }H{M{su1a1SI'7vQi#G&:dDWB~}0p@۵mӺU͛5m8QdDxnNZ5CjTV*j1WHDdG'V  uEVk<7( UQ^~e i.+%4 Cxw{NF #ݨvEj3*\kGDF3fxnf|U 6WJ!9-f+H#ye 6{"KQ)kK7:%"˖Qγdw%Ş4#> +-Egv[i+%LjcxXkEPdt@{``;ſb{%S_6jpY2hRc'UL/aJ%濵Yl_O-e{.9g)Zj[&zYh#HOCUH1qY$iômr 0AD[H LY+}v/ad<1wd8ҷ,+[XI8%4΁?_+!݄EzT^s36l_?Yfi/T. %c~`g6؉Moݒ9j">Ww7!8X;$X9ۘ}܀3)YV-Ipnmg1>zŊڙId^@ ?re7'_h~go +%{Br?X YpVUG Z+Jj)ƼE=G.c:~5[„UE_:NT7_Us Z+9Rw%+9ZZejF8!>,Nݎ3<搛Rr2];qRͮyC݇m#f06cwaVa T \[@N`Գ3 ɴbCj.Lx4{.6YEM4J)zhݹ%P3DǣՉjnсW )M2QsԖyf2vR WO!5KzxwHB9v6e +瘈9VD8ccHBdy9Ũ#6:ޘ/*4U3QȋRM'/+ubf>r/ ؘX"ʐl&WsLjoy I$c3< )S&Bj{HB38ƠQ%Tڜ͐H<Ã6=N0vuD>5XZ>F/4u#Z KZnj.m&- Kq@jQs8FJ-i7n/ @ ΑB_7DE b2@(TҾ2QwΨA ^y3kO֠k@sӆ&%k eӯڲgxF8"cwiQy={> ¥IkEb#HۭJԖ?vq7WcRxUrqHZkǮєo;S! +hLU(3Duɮa5dC+i6We"KRDc…ZT ,ƈm41|oaAh.ug2ϑ\YJ)۾e㉹Uہ􂇑Qbp5 vk"3Z u]E N{$5Ϻ`e0fULԍLB'k*\YVLl5"I,f[ &r`zWr.QXhC *we⦓~2LH~42 9NEl+% $fA3A}}Bv*xx0S\FF "anQ^@> Nc1H@r]ڍݮ'_ƃ܃3 k7FjܴO<r+#MBӴh4Qg8>qT~%!p;\aB)@nL\[,͉tנy4X¨<~׾h$5ɉlfrzFSaڅ`^z|eԮl;RH ܏VܹSPo`a>IK ^Z*Hp愳P&R;}W*iA@}oCeB^^f-)j[j)ޑ5dsJ|/kޫZŜBZ}! +EWnv˺~"c7o^|mB&2=Y+_wAѧIy}M +ӃR!gJp6 (DCmM0}-TL6,@_4{"|=EpM,Rr"Od+K)=[kq'~z `0DԎ4u H!qLjl||CZ)EwZ$ݠHmd_<=Vn|JѴNڎhU2lgQò}=4X$hpB?gbko +?t|uKBt!JۜhA938^@n:k _+ڷ]b)3*ln|Hqv@ka;*ܡEj*D]}9ゥ1lF#S + Ul7\**Y#f/ANɘ ΑQ&ġGKܒYec6R_PT*fGMavn$~v{=(?y w856d0~݃z9 b:BQ"7j1_10s +Xܕni48SV2Z;`DFb!Jr\|!yS/o\;!{଱ V:HQ"7 zeN4i$!_Y<_1%k;J(G-h^}PΖvxXN:Lt*ڹ֋%e_lD7xdk73-"f48gʡsi>ڱVSoN4i3qbK{Nloi/ga2kgU/=ո⯩PrzeRV;E&g+EF/$ӧ O 丅A o-%)=﫨A]RHDݥ}.1A1+B>3/-[;6Ks@*W[PI%RN+25^HŘK,$#;˚`7&%9oW l-MŊWh%!-оmsDp縠~G99Ԟ&i9jR{P{=n$d&FO* gs4'*~%VN[ƙ\!S׆ ׯ r>MPn/  >;{]m+=)L\[+0]ؾnvq_ie`N+4D(.)o_ Ζ iD@$i)*!#=2@3) +#St?cWbde~`˱`eXqj;)BWAv ܬ!P3y + 9ʘT%`iTB&ȁ1pDjC Aln )Sedb.f`.Dt&D!r^gtFv-+W*=Vy ;OK%r>);s+"DG, r(׻ CpeٵavU εHqGAHđב L)!j\^@p:`rkPԶ)*B%vS|ץ.lkȄY$|?hŇŋ8e,L+6\3ޝa-R{cza %)/b=E{Pscw^"#FRPx{>7~Ѧ F"gڂxAH8+ynV#@nnv@[LnlM+Xtr|QnD/'ׯ%J)Ec3-)v+$|ub RJsQ @dXi&Љ"*OhSklCI +KLDb!G;=m$*AQ(Jdʟ6[n4.+IW-ń iD\9좺^O4U*o\VzATbvѺ "?\_i{(y k7ECx|/ Ȅh(6U +P.e ֎2xK}"ڕg%̗I_/OL_AУ~N',G *d"%CڨvN-䛆?sye>/]<_wV&R\wLWkDMSȢ6<+9JR(=Ӑ.>;>vTvEL[!;SO/&@xlD\+~< LOmXە< 0B&.)Ux֘C0o yz}}4 vdv{`Q*6b]CRV̥y}hoFt" lK{ҙhp03W*9_um9J݊ⴛp(3[{(VS3/l`{& ?E(tL~<$ۻ%,ҹtg1ǁdGv Ɋy lr7D+[kJV@$޻MuZYJT.1tnI'*@rΦ}fHr|_r(Syʈ|5HT fZF-Y"/nIDF0!+cV*_5MQ14c]i`P ](A|]|3:ƈ*;zM'J)} +@PBZ j{Fwns`/|k#*B'4Hx6~5ю hfƌHT:u.h]bY2Ʈ6//DVƶ2 ].!x57\ IjRww;038]d⒊(b" +M,(vwj/LnU rDn8s9҉tIeiUaiv0s5Z >HZdpHJ8ƮDN$,CĆDM/nc>c.(׏XJ)I(`&+9),O]3с"̶Jh4@miD-e=,P,i4w#@֠Ѻ}JPP9,=®#IA]G Yw/_&|%dDe66Y0Oh6Qev`EbDXR\$ yY WJ% +@1O4Jg)cE +%X)"8bK>{os +6uO1д_8v.:gM#LE6 ^pUiQ6 |NڙOiA"' cCa qĢQb<rTJK'JA0m#,xt^TU]rTpB-S.ZGI CTuV-E57,/;9"̩otgL5LhO Aba/E3:S/pDV>ZKx{ +4 +CJEbPuL׏PFCLQP{7YF:*skSK,E!iuM@Q_%ڴϽL:; +ЎGEv8Bmg EH2sYHX2bU6t,}9p2s}ƞ&Ikc5h|}N,FÊ8VL7[5C:r]|!@f98Mr%8B g}ftH=? !Z#A6,I^Zyaa-A87 K >,ĭ Zڜ#q4< V &R)*) 6e+ +b[tV + l+ + +*kBg5 +4*޸c VCF'jh՘oVӕIc=߳[z =0&2tw(<&z4Bz F[k0cRI?&Ƨ@DР7`V#ݎw>S`*[QAt +e:6>6yK6:?/꣛4B6V3*onEVMWy BAݹɎu7 6ph6ރ!Y;0~A)P#X +v0 TNkT>: \^}1νZ݇(zBc#V+cW9T͊g_ ؓaYǦ4&ج}*`LdթJ#ΘE{]n%|p?2@(psH94E9 8RmQ u*=sfSŐ^%r$ F0:|4H4pd~(6Xj647Bdq)"#b Aes}x&hBj-`ʥ#Dbv<о${ ~?{/g? `3,+SF=q&)EN8 +ǀ{ +=S 8a@8IѸDԎOt;S`*ZIdC @dwpP:} he_ĺlp^CkݻuwdY l8_$X?v'įDoRFm ,<<2&0]eV` :qbRLQ&NWbo=DpBQg{B҇Y?,HDv!0gDt?k=дCP-  `E@S?Wcƌi^WÛ\ |{` ?W"vQ%o@㏆mg"BX[gDmY2vvY0sgE@ .Ɏ-Mb*>/g턌N; MbKȘ VY ف VHtuzkW@ЁD@+j3^)-Ĵ%ҀhOhAt^Ԝߗq' _3.X,x*7XD6u.$ ʀD;X&Y}z,MZ;C< .%0 [Sue&:1*7 "%Ѭ"b| +Ԓ[?B[ +mS`YAep`h@xVEag?ZJ%hÝ/7ې$i,E8O%Bu*׊H{'A6}(JkREuVHB +afԁX)d忚" +Xwfm +54Ӥ- vO0@ NĢwBDBե_ 2[I20pP r3 @N-&y!>YJB_Qi[-hM m/S1>ʒϱ$R6beϥA1Jy<ȴtYSELyE.dDDX#1}ٍƊ(jP 5d̼.m9RmG,JyFBro$bN秣4s(ʍ<=Y`8X2Qiç$q? ?nP 7  1㶫z1AXTyXL2t$H`-)5$C3PH/U6NDUe? 9O182@ĿF` 盦 fgLs= pvOVXw7:1Н1i-?F h>_1|~$qc5^5*M9}>("L?_ q)u| V-\i>*MD7%?8꧕!&| ۧMHOϏi+ƁϧP&TGNX o|f|ySi +b^KqiYßwlg߇}A/T?fX{!Vu,{ aKƜW]I ,󞷼2S?K:h#(44k:Ӱyyj%__]nso"ECQH&hFB zRF ISmP~=XU't ؛{p#r}F#*i파MqdW/ +a4vڦ 2##:M<~?:#t yFL?Ƥ`b};CƊM-:kdcѴFҴR:xN_.;}PMeo2ˢ*4T5AQӾ p uKcC1>AYx +GꃴxMTxXjSY,f(=p<Hh.^Qf:Ax:OѶ#&1x5b+joT7|ke!cҌXO1F>7.5CvOt.y +@HX%Mhߞ&Lӟ&rS"։Hk2@J&HO ߭q _`\d qT31 (MZpˑ@cl02&mnA SցbD6/ER#m5"V}ixVp69yCz_JZ +e#`QK@u0@%k|6ʚ -$wq6K+"GSbQz=+0S &,f6$@@|1 +@[$!ѭB2!B%+LOzАQ?Tpr=m>;:a\ 00qq7xl\B=`0K hƇK0x8k9yZ"Q^\Y9# sDV[5f 0}ش#?IfȬp#r9,W$`YM=2#L!*me@p۳A?30RqD_Th#)i :pa#Qcf)\Z H]toSB?"lF^OS,M<@=GQAGL( 6o4}a.}S"a>kҧH@.A@M+Gfrt*)E^WKbr`!х  iÁ +:tYmq]:d;4ͫSwr)]*{}:dS?l&O'N{c\H=],J,9ݹDZ\߳O^RU ^Y'"4'f ~SPdE>) +]E֠#%ָNPw6} +hp;9j(?uMF_ +̒-ljJd") +Y1?hVGƁ&hP&i4 &RXdJ0cr )k@&WɆ8R*HpVIYGj@~\QNGLQ䘈g(^/iX_fq="•Hq!s#[NY޳y:g Wg^*dE_i+qq"1ѕPT*fkPv ZSP>iV Fϙk#s7II㔰.oeC7~7dOᐚ*ˈ!.xyЯ4ɇ30*:X*BGfC()-(;֖r١G8SeJ&Flń)^cE^ȂhǠ6|/Bԁ\4-O]zu~yĻ_H͛[8I0WG+ .w }$ wTY.7L-ǡ8zݾs:o>ۜZWO)Gѿ[^K{ۇ/If)w4x>&[N4EA#c1}fuTٻ!Z^RG0CO{XE=mpd˛'K9|G(J(dz?''Dõ:BOԀwZg $+sV~=̪(rVT +~bEb^ +Nƒ55hyȱ& + C]Ks _?H2KfZ46bLب>Dg-&!^fͦ'%3- Ҕ:BlZ Wf{+G6 :H=85B,jF\ȥtm+yX+S½u.ڿWL}Ay n˄gh`ME?Wx! +u_Y=7*2򚺹Ⳳ[iH<MC&jN# +xᐝn:HzM*n0_<%#Q:Ah7폤:F8RjnFG;(b8PBn +c套>q +کIB6x YP +v4q.XR&hq%\(U-UjG0罾!ˌtsoq84{cFB>oUq7I&ɡ$JVԆk$3Ua+ekz+d`|Y>p6J}J2ui}"e'mfar9n+KKIEt5)<<\tM6ߎ§g LU8qJB'M +|=+NfJ5ÐYI45识GP@{p}Zsӏ\g?i12}T)+%I:aMDN۽ⅈjeM2<-oSԖn0V6Hοa{3 !A|eX۸~j֌nB/)`8:ɮPf%Un~;oZ±Rv?qdyhpW0enG* 4" 3pTfidroG'Dbm꺣}!w!&0BOHU]6l-Nr? ińjcY%V +ʮ>߅^DKs +E%a;UB8¼*y|0ۂܥo>u1t?,? 툼NK/G6>@w!#J %\{>IdeiXȭ?364C8J9= #>TVpX*X jUR!p7ڑnD.A;t`~W+fqY + +]2ì۬>YX,SMmb;HYa,jRU$"M-*s`3/ݒ4䶊^V B>IƐV׭՚("$pJ0Ϟ!6(/tA\nH<%SW=ZM炶!YcJIe@ٙ!3o7uq +MSIlI Wt^z 2iEcɉu88g7+%a.E1/}zȉ} a/^tv2^f`MM'zF@eߐd? c'0_Us؋B验V. mu͓ +PI6Kw@VU%G W4rIuʄ[j&ֹU{Ma]]83]1hXM; +ϴI\4CwKQH^Ͽp$Cuk@ȳ'7_CiJB`J9yI=EfT;Ʉ8o̒J\q~×TGUj&@ߊjoYR]4 GʱdOT-}&t^&h:lGfYj0"/T݉?_?&s!X +p=~@T@Vxk*Qb[;ifm Wɳz@41I{ +s[c`N<  uA3E)x3*}G|T6Fh6ZPlR,qX 0E`"lHSxy͞+/mX>rT7G:" =ǝԌQ3|4gG6Lv*G2md\o +pyrh/ 1b9JiO!~yNTMhj SMy}]KU#ƤԴQSՋ&%p=D`}6gW>hRqF0Dk|#T**Ieu&edB Jn%[ il-I- iԩ=J˦ +BzAPt3PAdj#zbu|az2CR9@T򭻖"ScZ$Q&Ek +|=}`>t-~lV䙁cGɧeCp,*"s⭺`:PaJ3Q& ڥӡyb48eT mԌ`8o-k+v *"@;CKS֤zTyă?*;>iH {:JSr~-.{G +TfqI2ד l= h^<KG/ !Loq5G5pD}>1Z9.IMB`8g --"YrNU 4ywՅkN]bC" +P6:seLm2|0k=Zd@3O3nŧvsk_ ^r{$:Ϫ*u# %g炟r3Yc|-¯¢ALF)Z!HB[mdVlXmfpMWTԌDn1 ++\@fN()e +].Y7}x1g0JŦˍOA"=yE2( xV")$H5عwX\ɤaF pkE9>;SatWj@Xby$?c>pG]z&ўքs< :$$$o, +X1َrGΧMJ.;beTQIbO:"ukR8߀_ Ԥpwr"'#Y1Qi7Ɩv^\h?NLKT;3tBsqm#K~>?p&G\#ewΕa>䏂0~\[g!^h}mp/HG{Y虫b+X% )_ +X`p>0ςp>FM_cÎ U+]X'ΚQDʰį⤷]۳%o)Xŀ}vI܉4>x+ζ:v2FM%T,ŸawJ姿<0< l{h%˴b'ζ̱E>-nn;f~C$m.=l0^97?2/kv) ='ˤ&Z0 JOiv\4l"7V5v/L +t/P/!G8 +'ۏɁX\c>!pp +t3llV;.7GhcnAn)3lkw$PMt\niy;FJ/7yU-X|4 ՗3md_cd$[ѫշ>Z_:>Տ wUM)ӎa}ZC ` 7%5xXkÈ# >-g=r ,~XM@9q@ZZ z!V}(/囧12I(otR_nQi,Zm.J?˪K@=',a*\+'`!|ÔɎ?ؘuT7?%Yi+}ɾ[>R6}P^jzhN!>9!}o|b=ify ITk5C>_vN(oQ[+y [eəXM9o`w&l #-I2r#JBhL*Gsm[r*X?8L7(d;ZR?"UE^6.ʈG%¯xxUt`౺h{W˱ݽ·$wȗfDj0C(o>لN &>sL4drlϰ ]V@0I೅j: ٗ1i7/KpL' N?|PFDrޚ˘VsF'! NbY#k J8B"]`xre\>Xsyu*Ktwh4 K$D4ș>5L/D_es^Ʈ:IE0\%G2KZhahP2 gG0ǥO +ҏ=#1ff/+2}& ;x&\Ȗ1rݨ3" -`E^g]?Hj*a @,rA#B搏DBSL~;T$ujodR|yhrbrJDwkNs,]@i@P|Q2J5RC Ph`L`:i +"wĄ&1&%8ۼj0 & JEM4^˓ !- +qnPt:%N:as g@&P#Yt@i ..;/#E.8Mh*Q++t2:B |rD&5qR;N" njHuq|`z}4&v6nP<g# C@`{5l:6!)%8f*uu[xZT ouB_?%~^Rg0s N\NX+EqᒇN_006fZ]Nq CqZ )ѐXP zWH6+[ =6b`| ˘±v&`M [`W=I|Ij6*5ph_] `]s%D#MrTӑjRfEg)Lڤzubhӱ$$XRX'kR"ۅ@-y.M>D&Et2E4 +,_zh jQPrm^u!HHTe4Ⱍı649 +pat*Tet]1YεB' h@{L5h*e@Z 讱,MiPhpSqHF8IV IS2PmIh6QǕ2P8hp iF]RUy)ी +">!Ih&U|0|zYd2A<8՜ܐіz:͠%akudTSQ` \ X<]@ >[Qo.J@Q_x + BBrW4Cn- i:գ RY$1v(q:yVI LLZD|p +n& CӤ6[h{MGGAWVm5jJ˨``!Iq3$6=F5\"10CDlaB e L_0JQL$74DCdQ|Eź >1-Mt:=}J&!6V5(;Pm SzBY~$i :&M~I:܇`ݕdV̊@,ei"ۅK.NKIDouY9wI5%n^%La:Ӑ8QI˄O.>۩D[8"RQ`0!~a(m38m ȑQ͋l %$JF$VΉb7cE@cOib,aECаq*SéqmCu);PmJkpf6L@DL8 '!0H +a8GRxYBR\i  rc?N:"AcuRJqT'ũ*Z[+gnZuR8)F7q-Xh)T6&EbCx@&Cjm +ȨcҴ'լkЕQ%&)ՑF,1 +ʳȤI$UV@9DoıXd˴(nm2iP\ qJ2X#yΈ,߰ȨN\ƝA@p>x3^d-`E"%Q`-q2\n768QGL&,2J,,X&4 LW s$Ņ*$P`ytɎLe4%* +H6C(iBjc+Ȃf[JY ,EK`+j˪ty,\4$Ox0Pm/ VP2(!v"q[ +TMdr 4ȶe8yM"|<"Qܫ4M +zv3Nհ9hZDBaaZEjl ,~ 1 S |iR<  +*Hh¸q&O`a8 3 <ׄ@Bh: oU 48ԤS]y@& vh -0Z:ms]4AV.Cw䢅 RH5- _QD8Pa85b`ddչ_Y(@!'AR4@g&jʁ#fB$+QOgCЩFY`'"]a9mye61$NZ U3X>tZtq;`F!ԊڡCGeQtfLNiz9e' hzCH%Aiq#S! "cQᗭ^&*LuTH g <: {2dr]$Vۥ#Q@i /M82]T\%H$dX`i @#fZa3P:9GQ ɉH{ ,CC,aD_b F(m5 U μNf"l:`~bWaD6t,i.)0᠄ ^8pRSl \[Es#4IsX7φg'`$hpR})r#ptC>n~Dy; DVF1hp/90?;pDGCCi26@qw@J`t61fVps=qx-Dq!ƒqCT4`w hWQnLh5+/W +JqfhEy21i _ N>YPj q i 滍4 FdNi \4&kY3YM_4l)b,pK{XCȤe +\ [R1< +NQ8pMBEcRmDl&Mhu^bÀ0$ ¤@#|eRA%sb!3 q.&@7 +C&-00;0s%. 9@_ˋd%&`d6T[0 r/48 +LٸGcK|\T +'Ѱ(*pt&H"a3N(+~`h& Mg.Y䆁s^!\*d* }%T鸮339y4lqnxtk`dJ( Z@Keŵ8Az7qov[}-jG*ai"!Sza?Q>}@\7=\r> ` ߟ7JvY2i߸qmg紸7nRbofϿgxN6ܹ^lmZ\ߚm='RbG7[tu{׌umӬf9[foG2gIql* +5[k7bZq6m۷?mh=gvx>қKeX#:zmzϪ8m'3,vKNwӶ^_pqwWڴKsN/4)۟qNfsNlk~s;?=qstL?7RK'؎VN":>zf_iyRYo|oNimv;SKQ=9NwnI8Q;|@@Ҿ~->~kO|uzgnIkq?>v}՜eϚNyi+x+q<؂q^SXy0 (BC*c;Z羝wv҉ߌ~͝8f) ~1-ʀ羞S3߬<9o[boMKfkW^\f{ߌVY+: u4ЀEc9iIi;`DcڴD 2d9W`Md6 +0!E6QN[z1iOVNLkLmޯ?g47g1I[<]sk8}J;җ[ m~{XzOo2{ҫߴgaztlRvz*fz}4OV1SIayo{8^,yҊ^Yx6ŝQNsz6?u|=bߠwuV]3Dnkiƴ4K0_*t+pߚYkϮߙvg})H{3UTK֚-Yuzs3vyfnvV*N٠uPfQJe`6tv~w^fcŵkF? t>3[i'ȹ~c۷fW<<=Oli?1Aj4wZNg)Xq?4e]@m?k'vK]/k7y;/mZg{3ϟˀKuٽnWc2dN%ޏRvGYt2 oKףg`mkiSY%H'"SVj;y,?)?exGn̰;[z)tۍw=Yk NJ24K;J&ŁPH + BA!1eZÎ`Dʵ֗ ܋ȇ d2#pF+gUΨAϼ?\/ܦkyv׊%iX)ƨ9.>+tdŁ_kh/7(Zq#M{D®6!X&V Q .m̯;ɗ-%h4p1`XL)Ͷ>rV"+5<C`JSRw@Ҩi=mH)>"`` +?:CYw9J\v}2%4>OcR\%JD\g[QD {\Ukmja(-}]hVy2m, e$-S/tJsd_^=[+Rˈ ,V9 [ӌ'+>~o:Si 2^)l蛋c5s${ۚ%Im$DiB/ECz`i14l7\$U A[~XgJIW#Dǖ (eG肕IO&"Jjf)H;{]"@"sҍ,I6mmK:dJcfc hx0Q0R?$Tp(c:.Mi̟سpU*wἉ _$` nbܺt pC{3y1!lɪ~1ecuʚLD+Hδ*'I:ѸP-4؞a 1Z +]%%Ac,ɴF +:A8tPZJUW6-A5(bo* 0Yd m9t$Q$RdIL`/Vb̧lC(HrQOP^:$KD1*ᡲkڶxKm#k{8^1՜|7}N]"jXu:"|oaT^,hY˖-G*J4L}jr*,GZ4;;x4$!rؾHFߔs?3gn])@Q"38ƭ\jnDsbBV厨:Ä37PfQot%zE%f$`R 0HJ~cx3 }N/މ~l%7ƒ}\{A.M:]N܄k9Pɛ$fM26@Q#WOM$_79z(setAHGXrH0+ƽx%\[ rWj*u%s ̈́"$09n\N6i +.U8[dC$;iV.&9*9Y7b0x^ m')=X|w|V!ѣn -BE!lzf۝雷'P)R5VaIFm3Y1keB=)cC2\M3;,,fV!<bKڏ`Db01cW@Z1YcOdҁ^S-yr@+ٱv3Oj<9LIggkYݙ`}s-+/0f:aeTZ$w:W걩f7IPf\aq4&/BT)K`,.>A䒫pAb&rڥs˘Ѭm?sezornwҘBO*l=GQH5'cմvU]]$'+bt˯(uqOww߈`fyқKP]cZcQ^ADpO >pςo'W2$nS՟]hvȭu=bё?hg@W?|Jd@Ӏ{U'!IUZ<p- o/nA)4QO^D zosmhUNd0qh. E~_f#RDTMX#v EVL =$gh ` +L4$Pc#$у +)w mfRJri=U#k{<Ɨ;ˬ45 +9z=I wZSu׍!PT*Kj۳z9/jBPV]P*E)#2Nܟ# +f&UwڮF Pj|sYN$Uw[/cnwmhs̷B8\ZI.wWFp,+'/nޜj lx_xs{Jx^mT9 +۬75ZmTp?̾_.DmDO m20G[}Ϭ4Ow} ׿"mDeXA(.M]p>ޒf1kA +4ՇlM%qv+J1v8=N܁IFCdO!%4>gVC֧J;:Tݲb~퓏$|\%C6ܗOĒlmP27XΗC15չ> VQipWcx?m{ߺW8+Y)g[D(Hʈ +rQPfEóŒxp"ZKiVQY4sΓ$ =92g&ЕiAQ#+D>--W˸c.aY"$%VzJZϾN ԰ q:ިYNM A7Kלye#c&G1A ıQ +T th>6U56cPЗ*HeB3հJC6/)Xc5T+ ZIBIOQ\!4sw" 48"R|eieGPm١GZQ#t޼7LQv`_2qZ)7~ŐIj8kJdJV]*>YO^,jQ")(6 BLqѱxc,6Ș0&]ަuz0+ +س^9}n*WSّjs=DL:.P?*HH$1AZIs$NLM"2o\ؖ zV[!\>`Bn2(C-K.S޹'@eoX.(!r"zUWmg:J(K cL- +EKf@[>X/sm=cr_%^S!.JQ>F%y[񓦧 ]4 j^yxP A^y;} E&f>WQ_vb.;qE(}hLT`r|PE{ᴴP(l- ؃WX2JU7^Ix~R6HK"h=f Dk_(+,ly}Qc0V& 4,"@ΉTqBMUǾ1XUGn`A6T#%GN9:!<&8t6P-\IDsLi`8eys X,v/f䋴e7ʬ[>cƃ gGŗf-f"U ONkmnGF6@4+,i4?^pE +BW[uGbp>Ҹ5>*Oy9g>9mtHn[D:FǽD.vCGFR;lj8Pڋ*kU\L–{ p[FBDlU}@IYw4t.H әN Qhj6H>dWƩx,փ412yE b7\-K_:0߅EBfe~*PZ6~'EY^!Ⱥ'azr82 Q^pZ=SL[bYx[+ao^Q5`E;掿H!I(uF;YoJtl>_BgHzS;)Ж(mѫ;–rvҹ =H[#_p`+3u' .v N瞕lh7vjvy&K#*^R{-G(`uCC:w4k8Gi`&9}d6.lvh}k᯹ܴvy:nxKX(w@Of]]TSUcU!rl@%UմCV#D ~pˠ'Urtr7$zA:ǔE~V}+tAxi4^+9+qĿw6qjs# >$e0Šzk>ݝaAf 0U.EyV88ć1HQy{]]?*5 ofH\S83< :i$4ޥ)ڃP'zxhjܙ/nt(3$_<@7h(59Xu(J(8W>L=*(SRP (TBR@bA_B|eiAa` VZ ! q6ΧR"|Cntk#d؃D4`o&Li:g2^r}$ =:Ii8]/B,:+뵎tA^M(~X"8QOJ^Φ 8NMKijloE$Py>Po&Q; e PqL!/$,[& JB/$?ĢO tڀƜtV+7&V_Ky~Jw(|`[8Udbf(')HJ2lrvB@]w^P&V2PJ& +& +zͼ@MJ[[ >[$#K \v{ֺZ|m,t?}Wqɠ$ |җ$/oƼW`)MlS؉zbLMݭivjcXT{Cҁinq:tۤtR WUa/!ws٥0b 5Ad8duwey]* *.2_tIՐyGX69%uuTnfk;oW2 Y$BwbÜj+X@0Kۢ +Lhtc5RyӺ*h+VZ}vUt#'&,+fW&gP9MKт.bWjuZW3fJ֚Um۲4\2/ o8 i2ڀ6/n N?VǭơY7TU{5g۶+ƀ͛;,KX{5r*V1]TuhuR5D,~U>^*h'"kCWRꎉ%T4H<JggnwWGlwͰ8wMV.7xG^UU׌O C{TW\BhTx=A +endstream endobj 14 0 obj <>stream +w{yC3)#_l!ȘJy#Dm|yݺgo;5|rsgXYl8鎤5OճVWLKhV +oHaD2sN==f &D䒊 kKy!d`!ȴMhL<ƙe?^1()$G:5Y-m3i'& "ؐ#=(&O +i} {5ױqoWz%yCҭa[I䪨$cY0LwJp.ޓpAu2I6 V_6 ɆܨyY̮)xpO*w˘*mm˷WVY-D逭ާVsB%i&aڵu6ļTʼl }UrmgV|vg +0 0``A@4  -se[|jTS,)W'=<}zU$~ Z)8zAO?\ylHfd24@!Lӎm=ngj4M9q%r]BKh@8oĶyX&۩VEG%W FSZYR2E{˽̌ޱqc8 쟞G Hb)7o %ɬ޶U%[ӻϠh.J^l3,.UJY@Jߡқ|Hָ$&UڊS2u x/o7WuvɭHd$ٌC6]1ivipl4*Q!P@蹈( +ѓZr& "k,֡uJXLCA$8ыե남L=(1_:DR3޾t +5 LT E}+D + cb`{w󹞐Ziɬr%nJ|#ħMbd¶!Y#YU +bL Mqk?1MZ(<#MF6Q1WV^Y*M~L23_ք`KN?n65v H$vdJ%iIm` ;2APXXa+|5 +yH'¢ſ^P٩uJRe}pS S>Bٖ'h>*c/0U 9+8ݷjH =:1D|0VZ on (RFH>tHGQA_ Ij0RLf/X< X"qcdLDLM$W5yw#IToU_\a =!FR9Ҁ0ԍt6W9M+P>ǚ*E*Dtٙ&2?s[Jp+}.oEzSO@GԐu,3 }D_??;Ƌqlʰ'' +˜fdIlQ<Z JiQ \ME-%D$fCo ?hhhcȔn W+u'_K^T9{ fAmCE-lneCP i}4êVѭӫ~l(/)(3x2$RSްK_~ +k[]$r={-*|A7\]T+9FI$V݅H(L<߱̔Eөl6HyHEN(UEKE ©3#)vTm^:uYo^$/zE;NS k)Uo J]_cIB:]DxeyZH1OX +]\>9IY&ҬCKV;D Z$^E|C5W:鋩WMGFE[1NWL(ST'R xF125a ؄;MqQK{Q?XM=//`ەPxvdG4CLj RV  gyRb$td$/-E +HK,J%Ĉ`՘an3Nc^*~q#RtgwH;p5&BϚf \wBʧEǀxH85pcMQ*fl+,prj $lKb!нQHB2㌚4GK_bތ%,2hGTֳkh< %Ʊ$`{9P%"=sdZ6Jq7a՞A(@^UUS,U"Ms^̓P-KK*u&c%hM0h /y3|W9Ev7?F%NԻQAE !͜\l7%DjQrQZT2UJd썟hf 3ߓZ1tsFHg\*V;Evh$| 8":&V~j~T +;ih߈]D oҒQ}{kxD5;_z'Y `6g8LɁB֢<%(##ߘcX q<]sDm*{+$Drog'J"0[B* a0=졤9O3hqCHO:J x,yZyk|9} |6π +endstream endobj 23 0 obj <> endobj 32 0 obj [/View/Design] endobj 33 0 obj <>>> endobj 29 0 obj <> endobj 30 0 obj <> endobj 35 0 obj <> endobj 36 0 obj <>stream +H|wXWϙ a# =QIhT j]W"1]j!$h":0L9{!&"g&5ѱ}]=ׅGFDiq(7֯# +%R#.->>DyDngљs1˞بgGK+ :w111} 0 G8>8GHDa2X! H^¹r$a +HE1 tLl\|,@P^A&9X\XeXXU:?]+F>F>/Xu>w:tȰe6,4,2,6r K ˌ-"V6vŸӸXlm,F`6E؊m/;`NB1vb>^~SdE&:0BdRp_+qp_ Σ +{\u@%~p 3*(xGx'SjQN(}{ܜ{{ +,Qⶶd(U {M" @Bw׫O.>D0 Gq Ǒl@rq2:Sc8! +Ox`mM)6զ-6nvw73TΏ6l3fofYlfYnVfYm֘fYo6flbL,w5q&$DdMI5ifI7[60;.1{>0M9d#`4G1sdls\sҜ2Miw=voAᆹnFC=bΘ$" HA*Ұ؊m & ; ;+ë«ClY4Kh-EPZJh9VjZCki 6fFKqO HIL)JiԘP:5vA;i=q[O(AjNtʤt# "E>|)C 040`G"(b((R(2(r( +J*6 ōvcX7N7,ʦCtNiʣ3tft.ED +]ktnMEݥ{O=zD =gbbfŚ#p$-;瀋pQ.ŹR\pY.WJ\pUչZ\&\q}n 7&ܔ7Q܂[*:j&j6.>!1) - +ϡ-G;eWɿ z^7Sk&k:^ozބ?Ox >@/|fcu S|uN)_|_ w~ A_OAY47~o`(~0 (Ec4`,a<&`"&a2`*ncFxmx]x}xCxcxf"0s00 K˰<9 oo>Eo_~~ ``0(98Tp: x_|q_ا/K2/ ++*k:oThM|S澅o[־η-޷h;Ǝx;Nd;Nt;δneg9vgv]d%v]ƣx4<ȓxr8Tyhųus7Mq}Uut`n*_ukuuu\wCI>٧Tׂ4 5Xjƨ j\P-UJZUUJTjک~|STGqNs꒺n[|o8U^ ӽ馻nvlc~O +)RA'%O@?.?hG"J U)-奲TR_:LVFH[i'/J{yEgH$t]y_z'|jW[Ր>W H~w)cUL2SY"+dl}X$IIWOt>d=yfaT-dI2]uy쮻.aG#`?#(?O/ApUs.p=bQQ `cmt1:DTP$E %DD> :}@v`u`m`}`c`s`k`[`G [rI /r^.%"wλ~7~kw=~/cX?λ,RNK(T$դԐ,!RKjKԑ0 N3IuҜH'p2 +'Y8 Dg3ٙLu9ӝL'˙v7ݛOܟ__{Ͻ>pw}p_X6h\{&c\c 5L~S4LaS5LqS”4LiSƔ5LyST4LeST5Anj&؄Z 5uL 7&5Loils^B\pQ.ŹR\pY.WJ\pUj\kpMŵ9psGr]Q\pCnč9pSn͹Vܚp[nwNܙpWݹ^ܛp_1qܟ@ă |1>'$TJQi*Ce +T*QeBU)QuA5)BզPCaNIuEQ}j@ 5hjBM5ԒZQkjCmԑ:QgB]uԓzQoC}P,Q@i xJDJ!4Q2pJ4A#)2(FhCci 4&dBSiM4hͦ94|Z@ i-%rZAٴrh{ZZGimMާ-m#v>i2=-3T?bUjUJTIjdTF*]eL5JVcX5NWD5IMVST5MMW3Lf鶺n;莺论{螺辺ѱ:N@=H:A'$=DtNuNKtЙzLɒY2[\Ei}9/K:@#tq:A'3&͌0#M0fmƘfz~6 NkbZ{} {c4T똕fmn{w2OY(uʻg׳Lw{=Yc,yO߽ޟ/o{^y7[,Pp yp<#G^C~Y"Ke,-+*Y-kdCD!F; EQ Q%QJFE9GTN$CQ QUjmszf/w9pPc#a)<\-9!'%;`j:C8"(G4D##ZEF4AS4Cs@KBkA[kڡ=:X]^^-O}1Ecb# HD`(!)TaF)>td dlhXxLv +1 1S1 13Y9yXEX%XeXJ`Vc bc6bf-[5+zlXKd n~_yeWZ*,<ЂߐF;lOy#|m؎O)v3.>|_s*(8N$N4,+\%|opWp-;#~ TTGO~BťC\qߍ **[qh2FfQ0.D2!%.Q +hbq&fHn7hԓsrNΙ׷nխu_uYZY[77%Rm=B|mdlvUXKLPP ~  ThQKjFu@jjlE]2 +>!H4B ZZ ڢڣ^EGtŸшNtAWtCwĢzz#}H 7HA*F`$ҐT{820 +0c0㐉񘀉ɘ0030:٘700 XoY8 q 4=]G1X}'Id}>UO}!K ˱o/X +oc-.6=l&l؂؆a>\'؅؃ç؇g8(90*B}XYzD)Vjw+$sy|T>&O'Si|V.r|C)ߒKRqoV,JuFTR3|?}5%Xn:f:n:a:IvJ(3itegJ=ҀQ}j@ J3҂@;&SN3I(SjJͨ9)M뿭U֙23ߞt 6pN_ цj4%kõ-UҴt-CfX,U1d:8tpri(Y ^WMZ;w]z_Q}@-iPWF)Vzh=i&R}LuOkZA`͔s<&z1&Uљ]k "Uyi̥թ%Ng3ٻ$Fr;p51K@e:-i -"5@  RIP=X(%6 X5j?`+y -0q¬3&ޯ4V$`)VR嘬%daS!WR9liE SfT6F#ބ*;],"/yh]_ ݝ7 YVqtq0:[!ɆhVo[`^+n7k}ĩmwsPaߟn,8m\˺V[H&oM8*ǹ@E -%%I`lK&e -S(!?>GC)[erQ|JwH:3߯ Ig ? !2s'1kMf_M-KxYNGc̏AFxqč|؃ #H:U'QMP24 .#B^Dzm^i(@w'R!Ozo(9Q]eK H&0$@1.xGSb -0&mDt=/A7dRQvyI7EC1TѰfg - BN|d:kT2yjQdt,_2CC'd۞buJn5AU7$fsRZH -H xQ@x"x\ݑ*?ECikTL{%\,4&ĞKm(' N?U_2(9 -z\/Dũ%,_mD$N|+.r ^d>y'zp)쒗};~|F$"B@-M9[ϡCP4!Fb޵xwIU97⢹!E`YtWiQ(A ) x<_-~z(xǡI8% D!m1.04:仈Or(RTtqy +aV6y$zO\1ˋSxfzĊ*}p'k$"hr -IΈYDzUqT{KXڅylصUNJ۫҂x9 =( - c> M -~Fosh0H`aPJwLeo5`U$%ͤ_$ pT*u.jubb碊CQ]}%l~,&aĊRĪł.86ogtOzpOzpfo$_eERa ͮ0U/N۝i0|OHuO$)o>Z={iA#N۳-b5Lb`eϴڊ-9-niTKBW2K6?fQ9n}UnMnM$,=@{X61lP'IZњvխ` )^=Z0ȼe2}LԾTC`ӝhn+KK(R%+)8|3`7XnqGf鯮='7d$齑f=YHJX|󞓉 & -^}/#c 㺷\كae=DYh_U1yeeRq_!>I-*rLѿeK|ADJ{$j-nJpnp/3)=`J1񚤝θs}iה5[⺾]$ЁL?gz]jpW|kr$d϶M5_Wܔupnx>5{^e߭婪ؼ`҂4N}EA( L=,Շ` dP&ZSʑd f}xX0b|^IX2^zI~JGDQEՇo &1fR[ ߇&Uꖉ$"Q9Jdn.̿[yRC*T80<0YY[d}r DX.Z6^q6[-nr^oTVC4S`//#E6JNmXVcD$Á%g=JS7R**LbV,dGm`?[l6s/bƵ@/6X62E6#:A[ۊk>}jsՖg;/}7M?Ѻ?XҪM1w?#UkV͛U‚yͷFsrw ]W&_3 F !uOd6vrBk Ԫ9m 1wPߧ! S_gV*\F]\\Tz ֓L44Jc"4SbJɐ C4͊HVLP8Ae#zy?$!^jᾃwmzg4ts1ǫā_?`ӗ -0ipe7K"~›ْErKIiF֙d$dddd#+`dQHN}Xe`HxPSSn8?"?Bx0#0q0=lD?/ދp7ā5'N=~r{]Tkx -b}ߡohƀ҄& -a_Dzٚ1ΎY*Sܫ)|tWM/jq"'`-o"7_rs_l9b=b9 2A]LJMpQBTf݆;!ʍB;&4Dٵ֦o)ḮC@#ExK pGy |خw8a şzl:ހ<o]*Џ,~C]9z9>[pW^ !`̿ 8du5kbs?`sU]G\@\۷9lm-aK :ȟ|Nk5>U؃ccEX|^cat!ZăU\bFGyxq t"K?Fؘsp~ܤuz c婾МӺ7?BDX\;0>wa5rh%(G4ӘyqqqsOsm!#R-|"CWY3 sk؉@ .cRc?F?ꪎ{蒢9%+ĐX*\h -Z W a<D,p|0" FՁa4-E"k&ܽvg{^"͍nYy@9Uu2AϯX3ޯ+{OH[UװG ǃr>v:s,9heީ쇹r~E`Յc27F6rR<&w"o,R^&e~<<<5'29sOp2{Nrj`x^}-VD!&;r*W&dbJ;jjn#q$Xc`d)FkwxȖ ]oUXp z~TQ8Oa*]2_ڮmCD>}?}fz"_Ojew3l>IyzgLK=+ZiX۬O~ԧ SQz%eg}g%k?*rΕGp5L2+ NbYhLQYj;#x>2̵ch? -i0Ub;Rm֧ϏW3CK>UvawE㠿~M:o="E/W jk؏M{`K3?C_ShſK]zr( ӼIsb=sllr@ȌR.Yֺȿ ||Sݷ$p kfI;|U }w>'8o_0+ rZu.x;Wސ'])r.=H`) j?x|54M7L6WnNuscuOc0eQiVKLrfWk?iIM=)5ZVxz]!`}'6i3gR[/|P^ێf}?)yb 1Fy[R::jNɡSGetZ~d-JJ<{}mOܟ<^{-:y[̱ܥQjJkX/kRe :Սί`Maߕ*w̯[uq\6 `d%;>a\q|OO|/uAY :'>ȿgWKWv&/)3gew(?){W3fy(BTh=Ø^n#ƼwCY_oSேzxMZrY6Nsꫧp6g.|+kM.e"iD25LdJbuHY#G\93:{J*l—O\Ay?y,6+8Sࢫ epY;><%X[lv|JY>k,'cKgh 1S|=J\Q,z6?ʋ]Er'cy4jӣ}|:{}^u_^zKcgq=}|zI kcLy4'b3+OxC˓~u qe[M9sbX8RWi{þuR❒DZz-ywټcm?tg?;w xΡZR -o-~+F}t#"&B<Rp8Ck1+9ݟ腄dƒE÷Ђrk5H02DG ='G'9(x}7oq{T|#kub:wG{ots~qO֗Ny7?  ɐC^eēfW3Pp[ rЛc`̳آ"̰:"d\cs'A_AtOewX B|!o`jlNV DSs#3mk۳o"h-eMmkfu0ZOv-" V>ӢmclT71C20h2#8"XwRǹU1X9UU{~kH%2YJF)BP&1h?8$h5R:&N:2@4"%忐o -L{ϻ|n^ih\IRE5k˘F9RFnUl~S/u-Z`yDe|S)k# rdt81v%}UMwƔaUIcb$2 „_<#=.qBg;98< gHn<~OlgO#]|pV&{&~ 9Tlo5}H>#'Icx_|!ዛ8R EF=5EsmjC⻵wIt鏯+viΓ&K 5Pl -;aCK{ քkkg7zS )f 3l!T+gJ{1v{Lqk-#ļpWgp7` _w>/tsf}v' -# g-{PLpq(o7ۥLf[].'ilznԛfbiSq.Ȃ~(R|J*y=RLi'j_׳%·biʵBW[{ڥOTa/|Hc6Ú87YcSs? ~s'Ƨ{*,,s)^{-_nKF t|? wn^='Nj?g/dn=Y -wՎï9Nj_Tml(EgH_8AU'Ob4'M~K{<{;%QK>\# -D3.\X<X*oIfe"{_j,v_\)NYidZWa q )=nOZEScx[izpE -3լus-~e%߱S<}U*?D;UV}ǬTNS:N5ni>Зf}~S|tu}M:DoՀc -p)y"bnSCNߵ~&XOE G%OOK-[eNgИ1/_>W$v~8U -/fdf$ewb #["0 Yqrd} ;8FWNn>ד/.Z;8M/o'DcўbtwdhWAK\<bQu:ch xbB|ÇaKۑ䏵A| VPM^i%XE3/R}R wv\FIo_ -gC~׌?&}HA;+1/%e>k!9r>MxTw#Q.Z '?1y\Ss! -t{A [`e3V;'jM%q?!:  &ho~sp˒f3v3*bvFɫZ;Iu.s8 R 3A!+b}3a7/p AF%T7;=^nzKLɁ^Mo7s !3RVGd7OQSJ9M|E.ϜQGQ/c{jeAzzrdyz{G[L-}>\ѷReSbVn[Y"uR}>\6q=)CT<h~9j&jF7ՙ -oC4ܩz|*$,ـu!z/O$vw|-h{a9口QyV9˻8Rb*bgrHy^M©笄_{cdW?~|9`,}\;V@^>0ݐX71.٧,ZfUcL\EAfsOڇQN~A~gN~]ڼ,#2>!}J)I.O^u=HDҘo'0S}ɚC9j i9fNSfT{"yĊ(_a-ް]Rئ?%ɍ wz{=N@N*3%Ѷ%z;pMY[\f am*a2\j w dRQT6*6Ki?{Еȅr>,g\|i0XGu{Opom.vbyԿy-gN"!ۥaQO%W}G6SN27SGrҗ\y[?P }d/)mu,lm5yuxksQ\Oru"ʃ,L/AL\~ ~|qW~P&ba̯j6fԤԯ\Hiںie]z1?S2nuٝpX>{>ϗϷ~~~<_)!Τ@ڑ^>&=ڭBnrYm&Yh꺶j^tn^Kv}sUmcn<dwi뽢aְV5 oūA;#n 5\!*C3QDRɜ{3zljv$:ZhfF 61&XT!}Ǽ]DZHkKX;j;hm5!-xzT-GkHu>&Y0mFJ'L -@2^nEW9gbJ0֐v. -loKXEd}k+I_>*_S;FSݴ/l`Mr?A##̿3Z)\\}W 9ӾB7e.f>>WWwYs"Qz~oWkl"d YNVGԻ v4k(ZІpNh?<6EQVwΪ׫>W~R\H2p&Fpoo{s(h do %?lti?)1?{sф\]c4xCn9\M*DQ/l"klMRA C?5.{#FaכHܦp57_5wJVG2Z*$gJmް3L]Kd Ol^FuٞqQޫF{k#5; C9 6^+Йw3^,붼{>9dpq?gQ-Ygaه+#u ^_CMtcRQ`~𮋦~[fu~DO"[pi^/^F=cjݕܯg6U]xLڧ*}v.g4Jz0,ѺZ=sB<&*ۅnWa{ҏ[o9s`_65#Xj.;LY%?_@/9x7&sL 9Zꥧxo½y+dc8$,IT3"vo sd`A')^7gC4`Hܛ2}yV-27͖r=~~_6qs}s'],Qd}_ٶ10vV)B~¸C}5p&AA>wD@Yvs -K']/E^!3yGRsfO> =H3|Ƹ -}0^Q_0q -yGl\c{/E؟&PdGkՌΩKd;GP"H.w")u9tZkrБ4%g}cc%%ї$g8?zw!=k<<)̖!R}s3>!g!\KQI>sYoSB/|X/u1iwFk|*.0WqYny>ҩQAZd,XA~ ;(tPE|sԻzɻ -чpCpǔʸy^XdacQZ>)wأ _ ${+O,^bȽ̓kԐc0-bs`u{ - +"0>{%|?SdPWtgdK DVmW5M5߂X߷H;(y@bvmlΚ~:y)ֻ"GL#d/PJ?QmIX,&5V=J8>o<ڝp!*)g=̰/fv9=>jmÿzRgc:Zon<}hT{F==K[=г]\ [%cw짍 sku5͟rh5{1Ąܐz],5XY5ү~Q'_{, s.5@IlIqɚJn5Xr2>¯d?oہu+:Z8^%S:ORoՙ 'pK =c>V- -BP( +[seJdIDHFptBnuPWdE}¬B QI!/|_~^2¹Yb@C +2w)'TaHɰ;ҍ)n7[ح6y?ڹh{tj@d 0hffJW% ;mseQY0r2NYn1:WV`'R`$ ?߾tS!l ώz.+8 /G (?SER=3~:2lT>|Sib~oH;RR:mt}9t1 +U1F1`M:fO )O5 + +Om^m}Mh1GKxq dhGm=ހ @7OOg1g Ulv>{Oe`_l4BMsz‘~-BΚ։ߕ%~ 9~QlGǙ sYK(l8LVk +VRlvױMvnṻA{W:G_ƽ΂3 n/U=khЄSr TP,\Fo&dBPHΪ0՘ɍ"Ry<$@eQ[, ժګt3#t&+m c;y\/d5{R$x14nG(!0=x!>,Spr %Lb8,DMچmx.E}z +t'|-Ud CB*}1ky.)ٮmҦK$@.t)Of Emw.t#[4CE Klf{F +м*tGF5 #)NQѪHF%>xh=xB)/V;FQj) P [PHCb* 8'n ט!K  U)Sm?;@e4P•Bc8J (r깋ᄿSe%SS(ޠ7!p MTZ2bHFDMćj+qryk9No.wk)pe]OH.|A|g+ 7 +RA.yy3NnjNWgD""$ qҤ:Ti +%ACb/]LzD_!s3*.By1_f۞IG5`8nBMЀE"狂w +4m# [pHzK)8s N8HTa."EHWװ&heCGNJ>kGwF""&bK?txEd('`^ ^7jL'U]]Y头:*-Ϝ`؃ 2g>~(>!OJ/& `~T]3k }Q_ERLH GX"Y碪V'(&V|.<%Wɾ_b&O(| jPLX,(b iS{6hNO7wiV}0PNUV$6: SℽݙWT?^Gճ7>- +K;=ے-^8ȴ /[&L˼qؒӾ-MMud9.)/TJykceQAS֗[tD2Kt0isZKOÆ q፞EiW +գu;Z&ӗIKx[0 8`=݉&cTpg~ھ6{K;KG{ryG[^?v~=ZSCW{]|d YRйD]*3A~`XD)~|bv.,su .WW/47ezrR zTN&;֍HfHzjܐѐij𵧟ưVd-AFȑ0Mє\N&aI6nlHÕҌL/F0{V0V\U4['3<5gOOJO݄֑퇯XGto3UJ3KCM8 ckB>! j ƪs]KLW$]M]g;'׎c;%qˎ1ɈyM$g h@(UAclA!yU֭P鐘֎1F!w}CR绯weSbZ:EI*XI7ęXK v<K_urk\~3׽neR +39YrU6+f+\*9[ī;GzYԈ߆貁% dNB=KAXOpN%8sN۔0%PLfZIxMN.Wy~og\T|9Kֳiה5[8:]$ȎL7kj\jpkbDϖ'm5_WҔupvx.1sNe߭驪8oʢœ4NCyA( L>,b dPZʑd }hX0b|^IX2^z ~BJGDQEՇo &1 5V=gQLޞwւ +_" +/{}mNaRݸ1"5uCaG~h!{zke;'Wm\u޲ٕW~~>wb}gO#Jɟ ' +C4;3lD +܉ QUM mﶡBB0T9:: 9 9'vih0DhHo) +*!-ևi󡬘1ʔKG'!O_ftm{jg4Ous1G_7`;5ocV&?zd\/qR.eukD401Y1e0Y`$ +03$8ȑ~ M¾RA!679URm)|tW5/Jq a5o"7_qs_"lb-b)"A]{GMpQ@Tk݂;!ʍ@;&DZT| Sw pLF!|"~ + #>l;[ېP SO@=BsB>7.rr#_z`=/, }}uxm+a?נ tlnfcMltNlus s>p^|=v]Ѹԥ'gb0͛4)CN?v`+(9i@=}Ghts\W1qpyw~⸎b = Z_ɮ품͟s[ yҵ-P܋?+ǿ+{tOC(iхR F926}jT݃Q21Lyr[0,ϵ?=ΫO0Ky8t'"joKScln8\ [HӔ~4as5T77VLT>]vi 4)gJA{LÙRukڵ1Jpi +qb,Zmc&8s&_.UB`\x_mb)ƹno;)UCD:uTF5GbTQ_3'5QOkݢA]5)^)5]ƠSKzP f][`koZ NM^rmS~5Y4uȱO(ZsS^{v5}eg+KNP?|o_i |򃠜>wO>`mΚg)MѼߣ?7n{71خ95;m?+:zwwtO!G<a~4z g~F·D*aR+.M- ^# Ϥ&gԽAyV/w<CmI g}YbiDn_t41.bKo;6+ȯ 2ŗ鼭7eב 6 C@=Qy_2hZ)^J^|?[#>O-VC4G\ľ8g\dirًсGoQ͟'}?]˥T^= js/sܳbn*Bh"d#+?T(#9^HHV!<]tl1|ہ -+v_ӏ#sOp̰srtr̟r{wvWGW=F]G(v/swH7Dl}Ğ}2А 9U)Lz5: +Lw:U>/7i?&O&<-* >/B5FH>|UDTV?}WE/q;-'}V̾FvPn B45:|=Ω?۶=1oy.?ֲ}^v{ԶfvZ~;Q1 l"b`3-Z+;^6VfOusN=?d#Fi^*8bAi0*R%~WL.{>l,U{[s^>@^UU?w{+VˊĿXb) c ?kKlȊ,i2aCVC+c",L*XR \y}}vԛι{ q ;;\AYOƥ*$U_nFo)e6_vl~} Gd9H_7E"+[fk; WzAFcWW)tWoL9Y4+xL"ÚP.LEy3{*|~Ysmy7v4==eGGo%<`nܞG? Rb=Ζ ⽏N;r樔G{soGw^2:8O?pʽwx]dl9\}_H'I <1zMlvk-K-?&K' >r,O:gR*U"7ݳ9. ,H=Yvf~=\|h!\.d[KUWz]D"X{4f3s{56u:g|؀W=:-|b|*²]92GOn"Ƚےnt OSpƛˍ%Os2f~o>O3pg8X8 K6LڬL͆R~V\To;qb.$LsǓYRL]OU^$5 Jt=UHӁmXf+2/Jgbo噖hKEQI{~[_=E:^Kћ Z0S͚^+:ro>7K_ƚQ;U|Wy@H^eU>W}:NT8~p>T}i7)'89AYGM>KdVQ < '"F&:1t]g_ .Z2ͱUt +So|rI`sAObS021jFfF_&9~g.P?'bûu .w)MַC߉/cqEs=""ke4RvM4F /Fw~.Avsn!m q+h_PO8?0P',+:|HYPKXk ZoєᕶWU?~ ")߇+1!Pxgwe˜tr=ywcכks9{RRCyn,cڄKu9Rm«x3c55|ϭ@Yj 6X?3jsTR `V<+,i;:;#j7-fgʨ3 +dY2' o2s9jRA_x,7v# Ra ^O帎~S̟eaw$h%Tv3 2#eDFyd/05YS$H^9u[u2w?^tw,GwYQ pԚ~Bۧs}+L_k=/mՙ5/)Z/ åo^}r7Duȁfrft1Q96D͝晴KR QW>O2.i|.z'\c.\8:תoUk(o'%"9{-狔$*{J+EQ7>KvkNzk +䵩1 + [y<;;ț}˲yKeQ_8Zĥ*o^ +9_I$j6d~}o(oQ4Wqtץ2(#ǯ$Ξ^UK@/Yzi6{3%:jߗ9Dm\J`6h$:oVGiqj'G"EֲZ /mSp'st뤂;3\ ^m[1+ɬWȜ3 ?de leA9hff)&C8ϥvpAf*euOJkr o0/Կ]Z*!r˥A͗%{l4^bW>+ mN7Oۮ~$r+qHK]]zfy Zyw1n3'髹4)sci>uD.!'}寚^ ڧg?.Ab(2A&?I{[V]?${~Yn(rh q<BDpǟߟ| +5m"jQIiFM*+$Wd Κf[vZؕiicK{萻=%;[9ݩ |Y|{x'BL.Ioң*/G.+afkEHΏNՋi7777Z683~AyWi:К+znf +mUZ[*R24oQM ̉[7c# V ~3Ǧ,oiKsQkán4`cobEhqه~NmqzJ?4UB޹c6I3Zs Vޏ}-`| {RMGur[oq_cob +sf=l~̈́߫l D/UP k!&` oy8QD3E;HC,~n8% P'Hpt$DӁwzP:kL`OJ$gPḋgp>kyS f,!H=YCՑ3-B͚&ʮ-F3O`-{MfvTU*ϕ~`39<ܣ[ޜ?y$Z1HO=GZc"bbrL>O"=`4a8}}x$~3DXӽ'%㡧[z1hK$۫Z$[i{STPO^{&=)>܅$cyM͗G㱶Q +əReh'7SW4yՋ~H236n?> +{Ո6wxyd[f'v(痐a7kwy:_c#~{{~uNRt֋eݖw0 9BL2!,,s|s?k)nC8 +cܯuєoKﶝzIdNw?%ȷQ{l@0澽K7S4Z$ҮR%FI%Z[Ss^eR-~* 2zO1|-g˦zKͥ|<2@dv 5%}?f_?w$w#XK-]w8| ;HDM=y-nv >G/8L > 4{"^%/ ~y(;DDʽY/Ǜgn/skylY)׳e7yއ={E֧(0JͶqq{uGʘ +|ƥpB[Ǹq67 s$% +J?]z?B|JBt5q;j 5{(T8FjkKj8[[iWwA?+1=9}Q=iu:Iv ZpȹAK_^ھTOBsr/r\sOv! KS¹}&1{9?V}_}Nr#w߳Ƒ #X,+%OXЇ97Cyu͏$Hs< Z16u.,t罍R:yWaTJn̷Q*^;5-[G:^{=*c3BK–Pd"7EQw9G롗q}Y7 WzLkk6B8+<,r -s * 8.uᯚ3k : xQ09^3.w>OY^6TcO*Fac.1`>מh.*reGs?TOSW?[4-pA-ci`*ho+866HRhDFm5>,%!1YԲd LI|O}e=~s{?>g9>XE#W1Y" |Xگ/Dc%r:d 1Y];7&;v&' -<)cyO1bհPeb>N&QɆ0X I.q;N,ߩCfI:"-p| {ȕ’;֣rs j2&%mrDzDWip#_Q!dQK ð'Q8v&B:β~͜B-1d XHInB eF˒ѷ8-xqy%#/#\?56dbb>J!)W1(;2=JNi -;1@9HY1 CiHQn΋jjˆA4AAk4FkFku}gs(Nuz?}m}Jŏ;+?e3Ը8؄ChGŌX²,F&:x˓mmЯEճh⫓9%Ø3.frhx9+3lIs'=icG"وQVƮ؝;JliMefpI Cm18;hPR[R]̉'ěHN}og4HRcRZ[ l ]jm3 F21Et:~edJ5[cY.dJ3=xt?|T=zc%@_uo߸M)绞RWLmhOk0 `N2LFIga!$> endobj 37 0 obj <>stream -HUiXTG=U]q n "Fb\p%[DH$qTQhԨQ8dd\ب18QM&@Lf?[]zT= !:jl`pdrR%1Ú],N>@+K\K=%#*`SMH)sS]܀6֤VSzr%OZ~sJ6<9he@`\uNv\k2^ʹf$ΐY@4;kFnXlIjw3B'RX1TB=$ -_R8]ޅs}LcUg1we׿MRz;Bϛa=LFsG? :fy0X>[c1,ű<G3_%XB,r@VbVXXuX x %x l) -H&h@C,rPwC| -Y\7:lO#Q>dzUl[|<'l(C~[i~WOX?|2?rbIʏy?O,MFL߰l.O!Y1g+B6C @ pLg`6`cX$Ǣ,Ey"kK\G-'O7[[+m"PDQ ZJi{?S>V2XT&(1J2IYR(_*וVTMjV5LR*uzJdla6fc18o,072qa223).nՔ}=}~3hZVikmvH;Nh' -vA117-Dsy9Sh<rcyQڻַY]{_7OW Qm"HDSw!+-5|N*mUPQ'(arI)+?P`GƫjZ5n݄:8ָX܄DԱŔ@Y5.ʴD}EkBlNso QݢVmD:wOC1ۚk$5B}U]s/%72^∻Y~,{AܽS%gզ?Ϩ:n~~h{={ǿ~vVeѐaa)mԶVb+nϖf36|PyvozW^$n]#]6#&S"trӥGĥEn4n ^PCa!qq8Cl e{*z ߹ wsݹܛ5zM2ݫңoCx5of!3=FIju%ɟcJv0ɽ{yg}iZ28Of9|'/XQEV%K9#$OpD y-sPeRޑlW"THMW}RKUIEdҧ]j_ ?lG'DWn؍a>c?z0^Q#!胏N/NNK{ 00 Dc83F/H|(\(| -cW+K81 UzA"E2! wa*Tm!-lh+mⶄ-iKҶ-kB7يVm[Նj6Vaikڶ5.M&m][ַ lC6MlS6-ccUgmfem{޵}>cWƕu\yWl* p<xgxO@SxYW Qx +]x0^xoa"ƻxc|O> --&\.Lb -(dIɑt!MY(+e씃rQnCy)?BTPQ*N%IsWDU(B)jRm?jԑR 1ba u6y S`*L0f, s`.̃"X K`),V*X3p` lv. {`~8!$ 8 Gp"\ p@ RFJ9/5TREJyi T&RךIo\@:wHԔLK5 \JH%i,҆MИX#FM:d08d2j*S̈́cze.o2.+ಸ.+䲹]vWpE\Nb劺\1wy\ וt\)Ρ#tr\F aZ]0nTZKGjmutߵ^1@Ԇ:FXm㴉צ:ADmN֖:E?֩Jikmt~3~:G?ӹ| t~K]_Z7LЎR;*ѮV:^kwݠ=tMK7koݢ}tmOkݡ?NQwݭu{gݧ4\~E=C5O?O}w ??// -SCjLM)5ԊP[jGs#<"x4ſ!/a:c< t'ID东crB:J,ݤtr^E9#DI#[Kܓ;@n}+e2J~򛌖$孼72F8(ce**(k@IefԬYk&ͦY4̕2_#el$ _X,KgbX$ HlEX/ xW#8Bײ( ☸$RE$2\6⎸-n\<+ƊT(ɧd=)]<b%fb /gS>#C$1Qs|XJn[e&r%WWɯap%M/)yHIUz+}aeRWVIx'cbl4rX8c6 l"&)l*Ʀl&f yRx{yZʳ<[(/*ouvr\FWjR`] )oY*d-VeޚQ몷y<'D-S&b< -Sp>.p!.ŸG4,p5z, ć7̇܊|(nƝ ݸ>>w<cxOI>Oi#$>+x>GX~ 4Echfyޗ;q)ygޅy p$(LlUUjSPoTZejYZ6Zhcr)Zjy8ͧkm^j/k%Rm~~G[ smV[*ՉA4Π"JGsh\Asn(Uls#\j0ߪ?啗+m?ԣF@dEeFqXx?ؒaR z:iP{4O䨋TW!Aw*iI?=iFSf*i4AЗ&40B X3 \0 -`L$$%*d='Z9{,f2L̂1 &>i0Й5Y_\O_K;d),PH\ YGZVjX`=Uj_EZRYNX =f[<lTH2/a[ж@1!a섽?J. pn}8 W' -\o%P -ePA=zHzH'Su:!ԭ?I\3X{Ti1_Jo_p|D@A˞KDWUҎwz0Un|xlO` -ZȕoHZ2DU63= HeYE3 ;vxhͤn+~If)P9ԠJ)8ҡD A5*+K(㇗)N쒔43, LѰG Ų!2Uu >3Y:xrnP{Irܗ8h}Q~ OxT*Th`zB)U8d;pB H'P/p9%߯ub - ' '|VXDO*Ur˚0(!T ->C3+g~?O6@Ie/J$f4i0rhuRc5mQmzt]HV]7]$ׅ3Ei/s܏xb5mJBxkӹnQb+p>Rᚻ0 ohJROß2Y]Q`5ڼZ;J6 --[Cٓbb "w5L[89mZ,U׻jQ0=aÞjJѡC t^\] F -8wp^["|@e/u[Ρ7'}뇰¡b%Ad-9ƣe}V)k55Pa ̳_VbuABp,E"10G{@|y6ǹ?-U#c3cE<c1O>_7Wo}ѫG/N6ܶi~ש7g{6ăFy&;/LWFdkK_ BڙtV^A]n7[iC1i+Pu{qx~7;w,X 4ۍeCjXx<«k(K!F2b&I|̭[rdVS_;_jjٺ(x`/ 6D(K(RSo;aVj2E10F#9|9 'b4䌟ry5S\Bz8onp_MJ,uV!/2=%rIYPCRjLt0Z&_qGe'ʧeѮ;XnV#n!AOBr-,,?@y?s&|ސ땉;t{ebY4uG ƲwEa ^> qNa TF#)ۓ mh*HÛe/7_`uͨ mȫ_tH͉&iFd̯vKĉ Fpk=i )ф7oɎd0V1On{@mMлScT,9EVNE—Ζ8b@|}%4P&%QӪ) Q@|'H s9;jHItˑSɿ_ WyFcߖZAk/ P]lF?V6\Kh%폢SQq}ЂaۘRN-p9?rS'瘁E|aR2&BeLfak#4!d@ss"6Al ) si_zPGfcxx~ّH@#tUCߖi]Hlֺ3l9M%DZ@B"XuAyq@8^ozyW#IC+ z>:chʭCVP(#aBɩ W* C ;DJٔ ̉bNUD3T=s6lh-z<|G_o=`)m !}ruY qH.9r%ӕRC2«1 \H-.1TD}VsI#4.) Tq N3%J5nZ? RhbDSѳ4<9 -lݛ &:4Ts`k͉׃՝fchkAKZWe9.d -H;-gaf/?l w hqQXjVXg(1gA&n@g(j#45s KJ#`ǝZ$ZXߤe4Yow*1HaeSI吿5l!Tx R -+iT>@х/"*@+ -КntEVy?G>h@itܜ*) 緟[cz=OJP0_J)'yre9NOrmWy7 ƒI1,Z-RFt\Fp`Bk_ +gzIlnu"p /R"9uo81>N{Йl3xX *&7TT+%Hy#b&^ -3a׫jX @ó-jY$'mA0 C53ߚT^5@Q]Wݷ- - " -+dӤF"P]BAb0I?5vLj)XRbÏ6Ֆ Cδ)u5c&2izν>6&Lw{߽{ιvՈ6NYct¤ܹ;` 8TLҚrܸٙ8uk/UwiE|/w/ 5l9FuoPk{YE"jL峒MIxeX!dc#Q'Zqodk1b/ϖލfbޔ\{>-ONN2wf+7v?(1>#"GdUH<-6LeV{"$7s9)<܂dR0 {2Vb)U{iDQB8*V7m3$ 㥸Ɏxߚ7-sY34<\[isojޅ38cQ5Rո3;pXlm?\7?BEv#W<+on/j2w}vh뀪2x$EFAlael@[wuHay$?~ x1i8lvd3NZ~_afπ(Nbj7QUGX,jV𜅐Vj޸:rq^ىe#fQSq0a̭d]k; Ϲ}Mr%֮1M?5t -yxuK;$ow;oc;dO:7|cbe|nnVƐeQh9R6tkFsgL{ICJ0 oycWo9MYmhچ٧bSF~9tGE1]>%Eфtėt`U?B*5e8}ZIxhezʟų!0sltlN$cJFPfv;N( >?֢=#A@0y0@˜̟! oi\`h>1uFn|9yqSyh6Cc5Jƪ!sI|k@k`Ke귐,yh1Obq -ϫLϥvY؇ds6:c hdC<{Ck<_ ofZcKaֿ:FPZ0M|kV 2I'h1A@ c4Ksc-蹞GzI&|U!m<$A{a 4) ڧC7pP/ KpZ1ONhsP;e' /{T ToLcw ߂,&#sVX!$a.q1`>y7> -#_ A{R3.ڣ4(0aJ~u{&گZU؇Z|Iz` Wz?7mT|)vö0NT*zs?د(+|RHy.&` M5A䥤a%!ɐd3RSqQ0Ph:#8Q)VAP|Qh{νd֎|=1siX]Au%I_MR -2.6dxf,ϵy%~ٖT!cPm5~c=F[/k ʾ5L9g\q; >TyXИfhuc1~]yZm \_BgYM|ύf\R3P(vXYнR$rN@9۪f/7-f}o;:r)oo/[ -g1&n60e+{W?yQevmR¾yk|#1@bQr.SÈ"Njާ*Nj1HjKme0l5xϠR.Kd h=mc[s(@~Mg˭wn0@߰Zؾq7xG[QZ%6{ &,/T4i_]%' ݯ@J<b/N&:#K$9܅Ι<|TFg&5׹?:&nh11 ꈣxOϽ8aϐ1+xfWZԧum1cxvqwl };411c&|EX.+1oMgognGm81=b_:̺Y7QA{euFq\&cxo.eݣgr_mGiO7s{a{vFY\&tgK/a}3p/P .`5N1Y.&;=/1԰]yQn$x%eȹzݥWݏq5C2W~\zOodĹ;iwqXȇTv("@cm=vdt\O7Fbxl5<{_1~ǬWZm||k~@y>|✇а8f%ɇ>|Ç>|Ç>|Ç>|Ç>:p5fA#dB`,趪ӧA3W3a_c=TwwF>y&܂_DNҩ3W0P<g3`` o?_c!.+~cQa`=UXzP0?GO0K?5#d D &O! LE! - B>w!|,#! -@B yOȻB -9#!򶐓B&B"䄐rLțB -yCȟ.䈐ׄIȫB CB^rP!/ yIȋB^_B}B !{1_~My˫Xp5;z#CfdlAz2eVedpȑJJ+d,LRKd,HB d̗-#K<sȇ1[,3e̐1]4SeL1Y$2&ʘ #Cxd+c4e1Re "c2(c 2eGFodCFwd$*#^Fq2:ˈ#2:h/#JFv2ʰˈ&#TF`mdJFK622,2e4TFe4PFeԓ':2|esk#u.^Mh\t%BUSo{TzWDj*= -@|uf-1C-a6ϔgy܏M\Ǩc=T3t<@<'ίՁdb5&ƾ͜`jw1;}ccNvcta})ZmkJ9+Y̡s=)X V@(PI T,=l[վZ[[qݫHM+SVAuC6~Z|U}UÈE +R¼g12o& yżd^0ϙgZ_)yd1?1f63`3Әf23d&2 G_x{dΌe0ihf3IeF0ÙaL -3 f1L2dL$2}>Loӓtg1 LW&1X&td:0h&Ծ#혶`™0& a6LkLӊi236;Ӝ `ge1`2g0qH#!Ӏ* ~L]f̚+V&70adTg7@WL5ͳRTf*1>7%Sb*0_0Oƃ10嘲G9 ) 1gTFat=_- -^ x)<.܁p n *\p .8,p -N 8n3pC1p> {`7삝6 -[2g!lM6z(|Xka < \9 \q9 X `! `>dC`.́|5ݒPqvD, 3`:L0&$Ȅ0 <++IS+IR+>>>z>;[xW1ĤX(SP%aABڻtWpi v}٣G*ʄ\Em*봌 ] WHM]- *ȕK.qo%iHJ*Qj%S/)UdžZjxkؒ 00 +BP((42db)\HD`⣰8B@MケQ1 =.`#^ Mc5| y~ʌS?HE:bfbH)s) +Wfr4I4uE#Eh jA(TֲYBˏhƇ75$Kep=e8A}I!Y"I=2v{9=sza Xgl EW1FY" i|Hگ/QDa%rO:d QY=ױz&v + &g xRfMߏ1êaMnW=XLk=# ' `>\N٩SfI:,q| {ȕ";'ڧ#d3.MJv[/:"GYQ)dQK ð'Q8v&BN>G?.dk,$7WXwaɄq"O#eގy +漇e츼 㒑O}a +G;F 2 0ؠiKWhC M-g4u;!qd0 iH^v;%aQR*Q`wO tk9= Q?}adOI-v/o5fyq<(CB-3+FEE'$s *=&1AEFq }f93t,7.(4vKCHS/ ؎c KKh 㖁("Qzv@y ؠWk\9'(: +ϗiw'/ы^a9Vj!7 -T^?9YVU^عvq E EߤMݤMZ$Lu_uZ[ucۆ3ߠ=y\ß<6?GGJ&rbO)j\t{)4)bF ]-a]r#}^]h5}3m9wS'692dbpX2ԖT7SyrZ-ܥzyZʟWoW+ՆTvxcCoh<^7XR=IB;XZx޾n=a*%] -I'e2̍FܰKHyvxmc@6%og~ +endstream endobj 34 0 obj <> endobj 37 0 obj <>stream +HUiXTG=U]q n "FB\\AnYDA]D"(q5j'̘ĕ5nq\&A EL&3߭Ww|5:082z19R!͒a,Np%ifzo51#*`S5HS/*:ۤX/3r49gI/-#gvڐ#d&YP~˰jt'թ֌Z#0+szN/X ln>+;%+h:J@pR&Q(oHpvz΅ ;3iDVUjѣG,)s d=j[or^ғ=za2;z1 ɓy,hRa ,)9.w6\Oar6>X/6HG?-$?V>\gOx"Ϗi,Sj#Ê,6Mbl"K{gǷ,MeX.̦]C x18d" Sqa6bl f/~ɘ'qTyb{uty%b!EXJBZB+{9P|J2NQbx%W9RQ('J꩚T?լ!jK&jjSm4cq1X`\ci&ejajcRLL]L&)ŗz=H+Vi[~vX;ӎk)KvIi713[ITdsfyy;;U55jk wL}znA"R Yi1-sҧFiJ݀:QW*+ +ˁ:P V{j5ARsuFԑƅƒFM%֦ -djwׯuVg$uX#sLD +UjԬ|wst.yNoKNO odpfe92w"{AwݾY^+3*?n8Vt>eݱUڮgضٶKf`h+7fIgUܫ]q=+E_ ,s[GHK |I??+,tѸ,r)u=zέ~--}j3 5;."G[`(mal=_ccΆp?ݝ̽I8.#kܽ{=Z~=d[n2c4oY'Q+)9vdW+> ܻ|֋d+$ ͷ|'K<6:X`!#6pdqX>%Oֱe6r1lzP&{w(BԄ:E+5TT|/K&}nJVtvtƻ]v!+BOF>Fw8p|ppqR*?b8!3"pC/,"p#5F[Dwx1q cqq#H:An!wH]L# tu0ǘ1H'f +3 P0<3=^cx9!y1b +3 j/"2Eb%&ΫuE!fE~bCiKh>yS.-<|(r$D>uR( +(HN]" +MQu)T,b) XFab9(VP(JEbX#֊7?؆N nu4@h@b# hLQ#ަWVA:r]?fAn{sޗni;DЋJJW)a4c#c v/'+Vp{Z_*V7;Zw ܑ6r'ĝi3w܍DpwA[h+m{qo}h'ݴ^Gxƃ5ᷜ8N 4A R JP.iimnl~[~l BJ"-f-eK2-ꍺ<4lE[V!jP[ְ5m-[i*Vkmhƶmj1qao[cmk={>#ؕr]W֕}*B0 b8#P#4xU x/a$^(b*FC;WU[x`<&`"LJS|7b$ jwbSJ*LPVF9('ܔQ*H0bTJUJBU)jP-qp-u.pa ZXal 043`&̂0< `!,Ű2X+`%հ6i8gDV;`'ݰ~pA8Jpq8'Dy D"դ2ROKs)' 4R_KC(&+}}@9#RCjIS)*UTfRL*H#)ť4lƤv%F1jҘ&ƙ&jʦ 1ULnjڦkj2&i2|.2.eu]6WewLlq9]Qs]qǕpi:rA'gΥת:Lp L%i 5uZ[h]OmcF:^mNf:YmSS-uZgg:K:[ms _|.PWX%.LuvUIWkg]]tvuMAFn^E{V۴n~CNQwO[{gݧ~a:XzP!~i~gY~y~_E~_e~_WUTP#jLMԚP[jG_Iyc/ot1Gy< Os޽g4%~5C^R!ڪ1T +Y$hL7\ ԦKupESnuĥ彜Db~_|{sι? <]M'qqZg qF 1T b&>el !RϋbX ObP,E*6Nlnx[tl!eSqAQqQT.2B6ⶸ%J Q!DcEl,_MS. -%fb$+# YP1QLs1O6Y"mr!w/.[{>lm+e2TɐKJO%Uy_TҔ^JoyH)P +ؖ-QJ<;lưQ,fcXrYǼ, +X!&l̦lflH'IޚiVg9ތuyQ^yU~-irB;, Y*d)+-y/󖼕Z[œ<'-l2mdxOVc0?98|B\q"W*\kp-b\0 ?Ǎ|(~M|n-XV܆@܁;K܅q¿~<?cxOAxOi ^GiOc.>>}@S4qj6ͮ ދ}x_ޏN.Jxs>w❹o`831 Ga6ƿzMvU7RUe*媦ԲQZ6Zhc +)zWqW +Bm^nii%Rm +6gjmV[`[ՑtvwXJS94K.9n+695.5K}pwɗ`ߦ65jRw}cZ%?Rr jZP{4O WVA7*ShI=hJSfii + F@$3`$dh yf(BsaCx@H63<+q`k*fI0:2fG'HdB4BgTϖgM| ~s`u|!,>%V@s,d9s<2I *ugmiMSTTJ T>0R-Eji̬O(SY<U`&0yMLs-,ߓٙjE+a2_N$m (EYF]cy/|̶ kysH'֓dVa_J=mBv{`/UI;a7pҏy(pPNQO.e +uˠn]CC:f"SnqN$Ē=#+F +o(+9} 0!MSe`W9hF.I@*ޣJ͉30}@~}|^i=Sz$'u^»]ݝ17^_Wor.mQjr7~12aX ԯtOh(ݦLG7EŅa54CugD1wV'n}"E=.y\*,Hzu;H$E +ZWC3Hy{u6@2Q<(#~G$.vЍ D-6du9\F6rdɀ0EJHfۡۛ@ |ل]ӆ|wDg{u'h]xP |OH1(Ah4dfaNefEgIƴ.;9v4!PIZ{5=us_`^\9PpN MނÓm-;b||ն2)BP>ay4Tr?eHD5-`jG]0d*쵐+Jz2L560d HeYE3 +uixieKn+'H +}_Τ \VKPʲ8 + {G%a% +@va؁ RIӘbř |Xv /N=y@]&maPcAۏ?9 21OkrR)۝QIJ'. B{ @m +}>f۸TlP$1]^H4>%"ܫ@VI-°Z +EV0 |Φzopm./J$V4IqieVkšEiB^oCh$uLgh'IeY̭O|3k$~;|hy+ (@j:)5X؍TF 4/Oe>$0֖hY&Ж`W4 mSŃ:g;F-/js +{b|ryivW~ꊊfwW_#k^΃= i41ppoHk* cu1 ͆~"=8lՁʻ6ljzo-wv[ݼUVX %dS]rWB>COq4}W?~ۃ*|Jxtmen,Ez^q[gfޱ[A׽Ic>sTjUU|a/̘N̫?Qbj7?9*untx>Q$bxfSFkG% Vh,v;NJK$DNOɍDf%[zAk,&0EzQdDz] ajPFSyzrԟ8M?O=+wjE _F DA? ,Le|GCsOg޼{O0bdZd+ +rhT^=)~lQጾ@ y?@e/ukڶWǿw5XI~ V!Ѳ !JBA;Zr;o#N!9XvjṓgFܼ } D0([˹v~c14$BCNX`ZlbޣoljK_Opvyeuvxz5eG7N{,CP/;6r,DU: j+ZB=~# ԯ0;E6wk6݊agnޟFyiȖ$Rb2oBm -ʂ #[]EԵ[>3KngOfj n{Z뵒v-ɒezY2O !4<38А6M)L vcm +%@.0LKg#:Em$zv,=w-{aϥH_aO$grM9o[\Ѿ2x$K#R-\ @5{-‚ `Ip*,!p 6W^EI@[3v(`RO|!^ sch4`gIuX)7 Eoj&30x'3W3!8 P.r y&n۩`zz3BW9\u!!sABA?PXёkh9%MMOǾm޵{.st:ߚݫ-7d. 8mtnU[ImlIp]u҂!-;x!0DvBH-,,hPf'XDXn( *c3D DBDkԚQquovƵ)Z)VF,OMoo99!ƫݼq%y/aK֭MZpdפV'QY1X.2k< Y.0&L:uzG\1cG:M5Qedb``N"-@[Gc2dkj2 a}Tai;{xaڶ  oCe+prwņˡE+rT YٰuKMb"&F,ŐJm>*^ց{M2U@J`Pz;]O WA|yW5݁(;~w{c{qrwc4"R>AԵhc;Xj}Z8ę1m|T ujᨓIˆm"w$ٻ&g?RZ0,qU181TBzV8 a3׆OW->[c%+7WWlq`^ᒊ%H}ՒƯzP\]Q0 X[ʨ+sY9+bykj"zӏ/rL;#sD_FReғsfT9#O=Yqr ;ku7=t1F=l:  *7ZRR`i{}Ί#YtU.lᦙt;;C2-m0q.7S׈1#BTX7b{F`N@bIxáZGHD8&2 K"""__O?y>2b r@8H PR$Ji9j5j&дh2 A0w6q.e2FlZhN4*nQ4rc{d/D!M?~TЯv6No-P>RN-WCm} Ѕ&6D^^{!/J~(}wZ^*Cs +uR&3Ws 7NFV: +JX +%5Qk +o$&ptA:'0srJY,TgH˾߁\s᧶P-?zu[FnB31@P*DQ*ۃ¾sVfDK堬sf: V=BZ8Ӏ)նD=a9=!1uJv|6JId\|F9/޽?gqƂŕ mS*^yԾz~|aX_;SG}\iL7:&V{߽=ٸ^O*DŘV`YĀNԵ܃h "L,Jo^mşV5 j} ptHB7]di_N=-_W|ۑ)1R\QB d0=w7Fyv@⨩Jf;aDnAMJ<$, H!<,!8)`SGFZ2Bò0scTQ,Z vAd_HA֕"G7$%J=݆d +R%o^[i,@vu]WYoph)yݠ4#@Pr`G'.~SO-R.@'m5:"@4Y֤` 2N :>M }{YYU{*J[L,F lA2Epa1](H̆8 cSdXIQ4n2}o}+w9sU#_Kػ/ŷv ^ϥ[q:Mѭ(E>,K9;4_%l`ssV0E$:QwQEص7R{3'K[? aK]ng%S,1fͽ5G(n!sZi.NѾKoiFGR~~q>~PA͟GkRy)Y{x^q +~Ʒz`QҪǥЊ?׍Cۙ@<@]ԕzL=H~wC@,Lۇx5;Bh> rE|yoVe7u+Nc Ϲrm"fίeIƚ$wM{&S +5&q8NG 6mhߡ!Ci)-lao Fw}:Yl}&7A1*𹍴%h{9mk'=c٦8[(#}v6LClۺʞקt=Q?Cސt͡yCNK@.5H_N_(Y⼻{X{67=9,--ECNĮz_Tg ZA~6ΡvęM[LÝ$-iWzسab@#^}q~>@G~7ݞx.U M<+}ܴG? 0NLRc5pO<d^ф1ho%|b=e +iCXiS>?d\^u5^GxF4EE_CC_<{5Ğ"WI[7:=':xXMxWh $jz%~'6Ke6OqkӣYCzzՏ(i +%2X};Hz7]%x[d;px4¿x#go!WDoɿzv{R@7ė?%RPa:./ۈ0?J>S0$}?F<E_{,Q{FAB\C@݁zIg4>/%N^|\ <%55D;} cXdߍx4bWI8$gq?ZSybٗyZڶT[ A ۧ +дE=3t"=Kxu tn/keu/[~d߃6c_KaAPհ:IM]냟 wo r5|9^(~( E_}MrOo=w2ύÿZG[88F" Ԛ)~x6-hFY?_, C"\!Lߋj[sm7ysRQö"{FѶ86/]&8$xFFkIjhA$5x5Etm}}+CL/2-N`E|;2W<D?%yQn&7}pz"O6h|7C{l'WG*daPI>k|>3xn|]~Fy+I=NnMc-׀["{Y?39wtAl(I(_C)W;up IMquIri-j&r5" VN~_wo=rN鼄`Cj/jiQ,el\J&_i~իU_LP>NPU@>28?g"-P<5)C]_ûh\K[3Z H5if$GsC}G{ܙc=*Wۄ~MdG=.j/rq}3q_޹?N_i2nQE?v;.5FuY_V@}[W5:y*iZ)~?o)?UKMHJL՛:`fV5KF[iHUI۪dV-S֪͎jTVR>QjC['PUiǟ ;\ѩ ):hp upB\Y,Ep6˥mE Jlr}͙3tf;|D̢*Q2Q/߱?(8/ySlq_\VbPQ˯:gg~Vj ,~/%5 |hpW|>y +|e|FP|~Jh4<*PҸրRSjϿI\֪f+Z^*N%z~jcjPޞjUkkM-o}"v?_oGo6ۉE??m! +MTc +V3jmW+(0."Suat4g7շװ}V3g߽[okڀw63gΜ9s̙3gΜ9s̙3gΜ9s̙3gΜ9s̙3gܯ"kTHQ2%U/VEGޏ4mgA;}Gp7u5.Uϩ|(XF_Q*ܭ|];~4-" vNI&yxTbܔo|ɕG|rםIY|8KgB>=cGx1{qt +gM{nkWޒW=e]ɽS\>w+9w.%љvy\X;v8]y[N*XtwazZhҐ؞Cĺ<Χ8,nGZzÝmqeX +n|TWn#ϙ |ٓh?KO>Q&{e07G7/,F~n},jedhm!^aKv[y|PbDH/Jb +r$K+Lb.K$ޒxS %I&+/K$PbDD %I̕#s%xFi$%I<*L%fHL&1UDbD %J(((H%\y9#%Yi#$)%I<$1TA!%I K /OD=%zHKtIHDKt,I"RD$KDHK] [6Ҵ{|6϶nxKx[SN0>.i|,1~#Q̏ď\56oe]1{ +hъbFkne qB4[ӚeϴfӭiT#" fI^'NZh`MG'$Ujogkc*+A$xkw{5jǔkyz@` +-G#B<82Ԍ߲J[F- GZėk~zp_Pz{2P&kz6Up\Epכ1YpIpQpAp^I'f v`'߁o7`;l_鍣K|6M`#|>'`=ZPր>XV\odc`X +tx,[Mx,W+ex, @(/` s`6x<O',x< +><f 0LSP&I`"x0c@(A7 \HY dtR)`8C  vf`HA?A"3z <AwbA7`1 . + t#HtzLv ^IWmAn+^{@k +-E݁ 4MA4 APuAP@P jꁽ@ P TUЀSzwwwwwwwwwwwwwwwwwwwwwwwwww''3 7YĐIMnFdHU!lZ۴'};  ^(7^ԞnSRmI><7LEqp7pmrr qhA3pЈ8h) 1C+c 5QapqQJc+&؇ +coL;۰[~a6b#d)rb^P=E)`5Va%V`9(znRKy K^o_oKR|rxbO'ۭeݢ(|kIzVDP]t#5civ+0qYE0{2 DL뮴EkM#ZbGuky6a{KD(RWoS:bE8Ver@l rl^ݫUnH^R%Aa^ sBF3:d] JgpwЁv- \G*2.".-hFqgp 888z!ZԠGq!G**P؃؅؁؆- ?ʰXXXXXOP!>x.DDžXw68u +:#0slLdccb +&c&" 11HGR1:F58@ +4$c8^+x/abcb_7 +OW/Fw˫?`.R| endstream endobj 28 0 obj <> endobj 27 0 obj [/ICCBased 38 0 R] endobj 38 0 obj <>stream HyTSwoɞc [5laQIBHADED2mtFOE.c}08׎8GNg9w߽'0 ֠Jb  2y.-;!KZ ^i"L0- @8(r;q7Ly&Qq4j|9 @@ -1622,22 +1704,30 @@ N'  wG xR^[oƜchg`>b$*~ :Eb~,m,-ݖ,Y¬*6X[ݱF=3뭷Y~dó ti zf6~`{v.Ng#{}}jc1X6fm;'_9 r:8q:˜O:ϸ8uJqnv=MmR 4 n3ܣkGݯz=[==<=GTB(/S,]6*-W:#7*e^YDY}UjAyT`#D="b{ų+ʯ:!kJ4Gmt}uC%K7YVfFY .=b?SƕƩȺy چ k5%4m7lqlioZlG+Zz͹mzy]?uuw|"űNwW&e֥ﺱ*|j5kyݭǯg^ykEklD_p߶7Dmo꿻1ml{Mś nLl<9O[$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Km -endstream endobj 25 0 obj [24 0 R] endobj 39 0 obj <> endobj xref +endstream endobj 26 0 obj <>stream +HWMoFWQF~ZVܠ1^tqTqa2%Z2b`I$| ߼0Ws.Uq1j~tnOw +Q>*PHA-calyM[qYn*.uqQUsfSp-I0ZU>b[]=Paz}o1W?֫קb->-.ީ}zu٫2,%a\)et?/9:E{!8(83r B懧UZ\˺4 +]vwf[ +!t u۽ hwGL4i{W]\ث+wr+}&ƗZSxHq9dwF~}O#X-wɱmA'^)S\~\u%#9 u54ok"AW=k xc:ۣDO{ntt-H1 +fz74/4zc8~kSR,fq{U̦L2=S#' +Zם2?FT7jEVWu8{^a%FcA LQ=#oFs&2JSANo?q50HDi\ X4~-b"c%ʷvIh:$o !~g bqeЂխVUxô1YyluU#:UZV-Y''Xyѽ;ToO2x `f8* ^|#"BHvJ [Q@$Όoq5(LOiT i03$o44X[/p@o1U!~gG8=c +#o E>7XwQưE. %baOEFq=eĩ).FVqkj_Dq tGUOq0{ k:ZG> 9LڷIT!oMȶ (UqOZ{`ǽRqOUqO7MNF@ܓc> endobj xref 0 40 0000000004 65535 f 0000000016 00000 n 0000000147 00000 n -0000055191 00000 n +0000053770 00000 n 0000000000 00000 f -0000055242 00000 n +0000053828 00000 n 0000000000 00000 f 0000000000 00000 f -0000057567 00000 n -0000057639 00000 n -0000057834 00000 n -0000059560 00000 n -0000125149 00000 n -0000190738 00000 n +0000056172 00000 n +0000056244 00000 n +0000056461 00000 n +0000058210 00000 n +0000123799 00000 n +0000189388 00000 n +0000254977 00000 n 0000000000 00000 f 0000000000 00000 f 0000000000 00000 f @@ -1646,26 +1736,25 @@ endstream endobj 25 0 obj [24 0 R] endobj 39 0 obj <<2AF2C1EA3CF5714491792EBFDF2860B4>]>> +<<3791B17F253B3A4581A42622424D3014>]>> startxref -290980 +305919 %%EOF diff --git a/content/GraphicsIntro/Ch06-Transformation-MarblesSelect-Many-Marbles-Delay.svg b/content/GraphicsIntro/Ch06-Transformation-MarblesSelect-Many-Marbles-Delay.svg new file mode 100644 index 0000000..773ebc1 --- /dev/null +++ b/content/GraphicsIntro/Ch06-Transformation-MarblesSelect-Many-Marbles-Delay.svg @@ -0,0 +1,202 @@ + + + + + + + Range(1, 5) + .SelectMany(i => Observable .Repeat((char)(i+64), i) .Delay(TimeSpan.FromMilliseconds(i * 100))) + + + + + + + 1 + + + + 2 + + + + 3 + + + + 4 + + + + 5 + + + + A + + + + A + + + + + + B + + + + + + C + + + + + + D + + + + + + E + + + + B + + + + B + + + + B + + + + C + + + + C + + + + C + + + + C + + + + C + + + + D + + + + D + + + + D + + + + D + + + + D + + + + D + + + + D + + + + E + + + + E + + + + E + + + + E + + + + E + + + + E + + + + E + + + + E + + + + E + + \ No newline at end of file From 6c9ce4105922531722c2e9707236be34a00ad291 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Tue, 20 Jun 2023 18:24:41 +0100 Subject: [PATCH 015/142] Aggregation WIP --- content/04_Part2.md | 2 +- content/07_Aggregation.md | 551 +++++++++++++++---------------- content/08_Partitioning.md | 7 + content/12_CombiningSequences.md | 82 +++++ content/C_AlgebraicUnderpinnings | 20 +- 5 files changed, 373 insertions(+), 289 deletions(-) create mode 100644 content/08_Partitioning.md diff --git a/content/04_Part2.md b/content/04_Part2.md index eda6295..87d5031 100644 --- a/content/04_Part2.md +++ b/content/04_Part2.md @@ -26,7 +26,6 @@ Notes: * Skip/Take[While/Until] * distinct * First(OrDefault), Last(OrDefault), Single(OrDefault) - * DefaultIfEmpty * ElementAt * transformation @@ -53,6 +52,7 @@ Notes: * Window * combination * Concat + * DefaultIfEmpty * Repeat * Zip * CombineLatest diff --git a/content/07_Aggregation.md b/content/07_Aggregation.md index a457041..4c5ad7b 100644 --- a/content/07_Aggregation.md +++ b/content/07_Aggregation.md @@ -2,20 +2,27 @@ title: Aggregation --- -# Aggregation +# Aggregation -Data is not always valuable is its raw form. Sometimes we need to consolidate, collate, combine or condense the mountains of data we receive into more consumable bite sized chunks. Consider fast moving data from domains like instrumentation, finance, signal processing and operational intelligence. This kind of data can change at a rate of over ten values per second. Can a person actually consume this? Perhaps for human consumption, aggregate values like averages, minimums and maximums can be of more use. +Data is not always tractable is its raw form. Sometimes we need to consolidate, collate, combine or condense the mountains of data we receive. This might just be a case of reducing the volume of data to a manageable level. For example, consider fast moving data from domains like instrumentation, finance, signal processing and operational intelligence. This kind of data can change at a rate of over ten values per second for individual sources, and much higher rates if we're observing multiple sources. Can a person actually consume this? For human consumption, aggregate values like averages, minimums and maximums can be of more use. -Continuing with the theme of reducing an observable sequence, we will look at the aggregation functions that are available to us in Rx. Our first set of methods continues on from our last chapter, as they take an observable sequence and reduce it to a sequence with a single value. We then move on to find operators that can transition a sequence back to a scalar value, a functional fold. +We can often achieve more than this. The way in which we combine and correlate may enable us to reveal patterns, providing insights that would not be available from any individual message, or from simple reduction to a single statistical measure. Rx's composability enables us to express complex and subtle computations over streams of data enabling us not just to reduce the volume of messages that users have to deal with, but to increase the amount of value in each message a human receives. -Those who use [LINQPad](http://www.linqpad.net/) will recognize that this is the source of inspiration. For those who have not used LINQPad, I highly recommend it. It is perfect for whipping up quick samples to validate a snippet of code. LINQPad also fully supports the `IObservable` type. +We will start with the simplest aggregation functions, which reduce an observable sequence to a sequence with a single value in some specific way. We then move on to more general-purpose operators that enable you to define your own aggregation mechanisms. -## Count +## Simple Numeric Aggregation -`Count` is a very familiar extension method for those that use LINQ on `IEnumerable`. Like all good method names, it "does what it says on the tin". The Rx version deviates from the `IEnumerable` version as Rx will return an observable sequence, not a scalar value. The return sequence will have a single value being the count of the values in the source sequence. Obviously we cannot provide the count until the source sequence completes. +Rx supports various standard LINQ operators that reduce all of the values in a sequence down to a single numeric result. + + +### Count + +`Count` tells you how many elements a sequence contains. Although this is a standard LINQ operator, Rx's version deviates from the `IEnumerable` version as Rx will return an observable sequence, not a scalar value. As usual, this is because of the push-related nature of Rx. Rx's `Count` can't demand that its source supply all elements immediately, so it just has to wait until the source says that it has finished. + +The sequence that `Count` returns will always be of type `IObservable`, regardless of the source's element type. This will produce nothing until the source completes, at which point it will produce a single value reporting how many elements the source produced, and then it will in turn immediately complete. This example uses `Count` with `Range`, because `Range` produces all of its values as quickly as possible and then completes, meaning we get a result from `Count` immediately: ```csharp -var numbers = Observable.Range(0,3); +IObservable numbers = Observable.Range(0,3); numbers.Dump("numbers"); numbers.Count().Dump("count"); ``` @@ -31,56 +38,273 @@ count-->3 count Completed ``` -If you are expecting your sequence to have more values than a 32 bit integer can hold, there is the option to use the `LongCount` extension method. This is just the same as `Count` except it returns an `IObservable`. +If you are expecting your sequence to have more values than a 32-bit signed integer can count, you can use the `LongCount` operator instead. This is just the same as `Count` except it returns an `IObservable`. -## Min, Max, Sum and Average +### Sum -Other common aggregations are `Min`, `Max`, `Sum` and `Average`. Just like `Count`, these all return a sequence with a single value. Once the source completes the result sequence will produce its value and then complete. - -```csharp -var numbers = new Subject(); +The `Sum` operator adds together all the values in its source, producing the total as its only output. As with `Count`, Rx's `Sum` differs from most other LINQ providers in that it does not produce a scalar as its output—it produces an observable sequence that does nothing until its source completes. When the source completes, the observable returned by `Sum` produces a single value and then immediately completes. This example shows it in use: +```cs +IObservable numbers = Observable.Range(1,5); numbers.Dump("numbers"); -numbers.Min().Dump("Min"); -numbers.Average().Dump("Average"); - -numbers.OnNext(1); -numbers.OnNext(2); -numbers.OnNext(3); -numbers.OnCompleted(); +numbers.Sum().Dump("sum"); ``` -Output: +The output shows the numbers produced by the source, and also the single result produced by `Sum`: ``` numbers-->1 numbers-->2 numbers-->3 -numbers Completed -min-->1 -min Completed -avg-->2 -avg Completed +numbers-->4 +numbers-->5 +numbers completed +sum-->15 +sum completed +``` + +`Sum` is only able to work with values of type `int`, `long`, `float`, `double` `decimal`, or the nullable versions of these. This means that there are types you might expect to be able to `Sum` that you can't. For example the `BigInteger` type in the `System.Numerics` namespace represents integer values whose size is limited only by available memory, and how long you're prepared to wait for it to perform calculations. (Even basic arithmetic gets very slow on numbers with millions of digits.) You can use `+` to add these together because the type defines an overload for that operator. But `Sum` has historically had no way to find that. The introduction of [generic math in C# 11.0](https://learn.microsoft.com/en-us/dotnet/standard/generics/math#operator-interfaces) means that it would technically be possible to introduce a version of `Sum` that would work for any type `T` that implemented [`IAdditionOperators`](https://learn.microsoft.com/en-us/dotnet/api/system.numerics.iadditionoperators-3). However, that would mean a dependency on .NET 7.0 (because generic math is not available in order versions), and at the time of writing this, Rx supports .NET 7.0 through its `net6.0` target. It could need to introduce a separate `net7.0` target to enable this, but has not yet done so. (To be fair, [`Sum` in LINQ to Objects also doesn't support this yet](https://github.com/dotnet/runtime/issues/64031).) + +If you supply `Sum` with the nullable versions of these types (e.g., your source is an `IObservable`) then `Sum` will also return a sequence with a nullable item type, and it will produce `null` if any of the input values is `null`. + +Although `Sum` can work only with a small, fixed list of numeric types, your source doesn't necessarily have to produce values of those types. `Sum` offers overloads that accept a lambda that extracts a suitable numeric value from each input element. For example, suppose you wanted to answer the following unlikely question: if the next 10 ships that happen to broadcast descriptions of themselves over AIS were put side by side, would they all fit in a channel of some particular width? We could do this by filtering the AIS messages down to those that provide ship size information, using `Take` to collect the next 10 such messages, and then using `Sum`. The Ais.NET library's `IVesselDimensions` interface does not implement addition (and even if it did, we already just saw that Rx wouldn't be able to exploit that), but that's fine: all we need to do is supply a lambda that can take an `IVesselDimensions` and return a value of some numeric type that `Sum` can process: + +```cs +IObservable vesselDimensions = receiverHost.Messages + .OfType(); + +IObservable totalVesselWidths = vesselDimensions + .Take(10) + .Sum(dimensions => checked((int)(dimensions.DimensionToPort + dimensions.DimensionToStarboard))); +``` + +(If you're wondering what's with cast and the `checked` keyword here, AIS defines these values as unsigned integers, so the Ais.NET library reports them as `uint`, which is not a type Rx's `Sum` supports. In practice, it's very unlikely that a vessel will be wide enough to overflow a 32-bit signed integer, so we just cast it to `int`, and the `checked` keyword will throw an exception in the unlikely event that we encounter ship more than 2.1 billion metres wide.) + +### Average + +The standard LINQ operator `Average` effectively calculates the value that `Sum` would calculate, and then divides it by the value that `Count` would calculate. And once again, whereas most LINQ implementations would return a scalar, Rx's `Average` produces an observable. + +Although `Average` can process values of the same numeric types as `Sum`, the output type will be different in some cases. If the source is `IObservable`, or if you use one of the overloads that takes a lambda that extracts the value from the source, and that lambda returns an `int`, the result will be a `double.` This is because the average of a set of whole numbers is not necessarily a whole number. Likewise, averaging `long` values produces a `double`. However, inputs of type `decimal` produce outputs of type `decimal`, and likewise `float` inputs produce a `float output. + +As with `Sum`, if the inputs to `Average` are nullable, the output will be too. + + +### Min and Max + +Rx implements the standard LINQ `Min` and `Max` operators which find the element with the highest or lowest value. As with all the other operators in this section, these do not return scalars, and instead return an `IObservable` that produces a single value. + +Rx defines specialized implementations for the same numeric types that `Sum` and `Average` support. However, unlike those operators it also defines an overload that will accept source items of any type. When you use `Min` or `Max` on a source type where Rx does not define a specialized implementation, it uses [`Comparer.Default`](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.comparer-1.default) to compare items. There is also an overload enabling you to pass a comparer. + +As with `Sum` and `Average` there are overloads that accept a callback. If you use these overloads, `Min` and `Max` will invoke this callback for each source item, and will look for the lowest or highest value that your callback returns. Note that the single output they eventually produce will be a value returned by the callback, and not the original source item from which that value was derived. To see what that means, look at this example: + +```cs +IObservable widthOfWidestVessel = vesselDimensions + .Take(10) + .Max(dimensions => checked((int)(dimensions.DimensionToPort + dimensions.DimensionToStarboard))); +``` + +`Max` returns an `IObservable` here, which will be the width of the widest vessel out of the next 10 messages that report vessel dimensions. But what if you didn't just want to see the width? What if you wanted the whole message? + + +### MinBy and MaxBy + +Rx offers two subtle variations on `Min` and `Max`: `MinBy` and `MaxBy`. (These are not universally supported as LINQ operators. .NET only added these for LINQ to Objects in .NET 6.0. Rx has had them for much longer, so these were once Rx-specific operators that have now effectively been retconned as standard LINQ operators.) This example is similar to the preceding one, but replaces `Max` with `MaxBy`: + +```cs +IObservable widthOfWidestVessel = vesselDimensions + .Take(10) + .MaxBy(dimensions => checked((int)(dimensions.DimensionToPort + dimensions.DimensionToStarboard))); +``` + +Notice that the type of sequence we get is different. `Max` returned an `IObservable`, because it invokes the callback for every item in the source, and then produces the highest of the values that our callback returned. But with `MaxBy`, we get back an `IObservable`. + +`MinBy` and `MaxBy` return a sequence of the same type as their inputs. Instead of returning the minimum or maximum value, they remember which particular source value caused the callback to emit the minimum or maximum value, and once the source completes, they return that source value (instead of the value the callback returned for that source value, which is what the callback-based overloads of `Min` and `Max` do). + +`MinBy` and `MaxBy` are only available in the form where you supply a callback. The point of these operators is that they separate out the criteria for comparison from the result. (You could achieve the same effect by calling `Min` or `Max` with a custom comparer, but these operators are typically more convenient.) + + +## Simple Boolean Aggregation + +LINQ defines several standard operators that reduce entire sequences to a single boolean value. + +### Any + +There are two ways to use `Any`. First we can look at the parameterless overload for the extension method `Any`. This effectively asks the question "are there any elements in this sequence?" It returns an observable sequence that will produce a single value of `false` if the source completes without emitting any values. If the source does produce a value however, then when the first value is produced, the result sequence will immediately produce `true` and then complete. If the first notification it gets is an error, then it will pass that error on. + +```csharp +var subject = new Subject(); +subject.Subscribe(Console.WriteLine, () => Console.WriteLine("Subject completed")); +var any = subject.Any(); + +any.Subscribe(b => Console.WriteLine("The subject has any values? {0}", b)); + +subject.OnNext(1); +subject.OnCompleted(); +``` + +Output: + +``` +1 +The subject has any values? True +subject completed +``` + +If we now remove the OnNext(1), the output will change to the following + +``` +subject completed +The subject has any values? False +``` + +In the case where the source does produce a value, `Any` immediately unsubscribes from it. So if the source wants to report an error, `Any` will only see this if that is the first notification it produces. + +```csharp +var subject = new Subject(); +subject.Subscribe(Console.WriteLine, + ex => Console.WriteLine("subject OnError : {0}", ex), + () => Console.WriteLine("Subject completed")); +IObservable any = subject.Any(); + +any.Subscribe(b => Console.WriteLine("The subject has any values? {0}", b), + ex => Console.WriteLine(".Any() OnError : {0}", ex), + () => Console.WriteLine(".Any() completed")); + +subject.OnError(new Exception()); +``` + +Output: + +``` +subject OnError : System.Exception: Fail +.Any() OnError : System.Exception: Fail +``` + +The `Any` method also has an overload that takes a predicate. This effectively asks a slightly different question: "are there any elements in this sequence that meet these criteria?" The effect is similar to using `Where` followed by the no-arguments form of `Any`. + +```csharp +IObservable any = subject.Any(i => i > 2); +// Functionally equivalent to +IObservable longWindedAny = subject.Where(i => i > 2).Any(); +``` + +As an exercise, write your own version of the two `Any` extension method overloads. While the answer may not be immediately obvious, we have covered enough material for you to create this using the methods you know... + +Example of the `Any` extension methods written with `Observable.Create`: + +```csharp +public static IObservable MyAny(this IObservable source) +{ + return Observable.Create( + o => + { + var hasValues = false; + return source + .Take(1) + .Subscribe( + _ => hasValues = true, + o.OnError, + () => + { + o.OnNext(hasValues); + o.OnCompleted(); + }); + }); +} + +public static IObservable MyAny( + this IObservable source, + Func predicate) +{ + return source + .Where(predicate) + .MyAny(); +} ``` -The `Min` and `Max` methods have overloads that allow you to provide a custom implementation of an `IComparer` to sort your values in a custom way. The `Average` extension method specifically calculates the mean (as opposed to median or mode) of the sequence. For sequences of integers (int or long) the output of `Average` will be an `IObservable`. If the source is of nullable integers then the output will be `IObservable`. All other numeric types (`float`, `double`, `decimal` and their nullable equivalents) will result in the output sequence being of the same type as the input sequence. +## All -## Functional folds +The `All` operator is similar to the `Any` method that takes a predicate, except that all values must meet the predicate. As soon as a value does not meet the predicate a `false` value is returned then the output sequence completed. If the source reaches its end without producing any elements that do not satisfy the predicate, then `All` will push `true` as its value. (A consequence of this is that if you use `All` on an empty sequence, the result will be a sequence that produces `true`. This is consistent with how `All` works in other LINQ providers, but it might be surprising for anyone not familiar with the formal logic convention known as [vacuous truth](https://en.wikipedia.org/wiki/Vacuous_truth).) -Finally we arrive at the set of methods in Rx that meet the functional description of catamorphism/fold. These methods will take an `IObservable` and produce a `T`. +Once `All` decides to produce a `false` value, it immediately unsubscribes from the source (just like `Any` does as soon as it determines that it can produce `true`.) If the source produces an error before this happens, the error will be passed along to the subscriber of the `All` method. -Caution should be prescribed whenever using any of these fold methods on an observable sequence, as they are all blocking. The reason you need to be careful with blocking methods is that you are moving from an asynchronous paradigm to a synchronous one, and without care you can introduce concurrency problems such as locking UIs and deadlocks. We will take a deeper look into these problems in a later chapter when we look at concurrency. +```csharp +var subject = new Subject(); +subject.Subscribe(Console.WriteLine, () => Console.WriteLine("Subject completed")); +var all = subject.All(i => i < 5); +all.Subscribe(b => Console.WriteLine("All values less than 5? {0}", b)); -> It is worth noting that in the soon to be released .NET 4.5 and Rx 2.0 will provide support for avoiding these concurrency problems. The new `async`/`await` keywords and related features in Rx 2.0 can help exit the monad in a safer way. +subject.OnNext(1); +subject.OnNext(2); +subject.OnNext(6); +subject.OnNext(2); +subject.OnNext(1); +subject.OnCompleted(); +``` -TODO: this was where First, Last, and Single were. (That was an odd choice. They are technically catamorphisms, but they are degenerate cases. `Aggregate` is the canonical example but that wasn't in this section! `Sum`, `Average`, `Min`, and `Max` are also all good examples (more specialized than Aggregate, but at least they look at every input), but they're also not in here. To be fair, the Rx source code puts FirstAsync and SingleAsync in Observable.Aggregates.cs. But it's the fact that this section _only_ contained these, and none of the other more obviously aggregating catamorphisms.) I've moved those out into filtering, because they feel more akin to Take and Last. From a structural algebra perspective these are different kinds of things, but in terms of what they actually do, they are positional filters, so they seem to fit better in the filtering chapter than Aggregation because they don't aggregate. +Output: +``` +1 +2 +6 +All values less than 5? False +all completed +2 +1 +subject completed +``` + + +## IsEmpty + +The LINQ `IsEmpty` operator is logically the opposite of the no-arguments `Any` method. It returns `true` if and only if the source completes without producing any elements, and if the source produces an item, `IsEmpty` produces `false` and immediately unsubscribes. + + +## Contains + +The `Contains` operator determines whether a particular element is present in a sequence. You could implement it using `Any`, just supplying a callback that compares each item with the value you're looking for. However, it will typically be slightly more succinct, and may be a more direct expression of intent to write `Contains`. + +```csharp +var subject = new Subject(); +subject.Subscribe( + Console.WriteLine, + () => Console.WriteLine("Subject completed")); + +var contains = subject.Contains(2); + +contains.Subscribe( + b => Console.WriteLine("Contains the value 2? {0}", b), + () => Console.WriteLine("contains completed")); + +subject.OnNext(1); +subject.OnNext(2); +subject.OnNext(3); + +subject.OnCompleted(); +``` -## Build your own aggregations +Output: + +``` +1 +2 +Contains the value 2? True +contains completed +3 +Subject completed +``` + +There is also an overload to `Contains` that allows you to specify an implementation of `IEqualityComparer` other than the default for the type. This can be useful if you have a sequence of custom types that may have some special rules for equality depending on the use case. + + +Next time: continue from here. + +## Build your own aggregations If the provided aggregations do not meet your needs, you can build your own. Rx provides two different ways to do this. -### Aggregate +### Aggregate The `Aggregate` method allows you to apply an accumulator function to the sequence. For the basic overload, you need to provide a function that takes the current state of the accumulated value and the value that the sequence is pushing. The result of the function is the new accumulated value. @@ -149,7 +373,7 @@ public static IObservable MyMax(this IObservable source) } ``` -### Scan +### Scan While `Aggregate` allows us to get a final value for sequences that will complete, sometimes this is not what we need. If we consider a use case that requires that we get a running total as we receive values, then `Aggregate` is not a good fit. `Aggregate` is also not a good fit for infinite sequences. The `Scan` extension method however meets this requirement perfectly. The signatures for both `Scan` and `Aggregate` are the same; the difference is that `Scan` will push the _result_ from every call to the accumulator function. @@ -221,11 +445,11 @@ private static T MaxOf(T x, T y) While the only functional differences between the two examples is checking greater instead of less than, the examples show two different styles. Some people prefer the terseness of the first example, others like their curly braces and the verbosity of the second example. The key here was to compose the `Scan` method with the `Distinct` or `DistinctUntilChanged` methods. It is probably preferable to use the `DistinctUntilChanged` so that we internally are not keeping a cache of all values. -## Partitioning +## Partitioning Rx also gives you the ability to partition your sequence with features like the standard LINQ operator `GroupBy`. This can be useful for taking a single sequence and fanning out to many subscribers or perhaps taking aggregates on partitions. -### MinBy and MaxBy +### MinBy and MaxBy The `MinBy` and `MaxBy` operators allow you to partition your sequence based on a key selector function. Key selector functions are common in other LINQ operators like the `IEnumerable` `ToDictionary` or `GroupBy` and the [`Distinct`}(05_Filtering.html#Distinct) method. Each method will return you the values from the key that was the minimum or maximum respectively. @@ -280,7 +504,7 @@ We can see here that the minimum key is 0 and the maximum key is 2. If therefore If instead of the values for the minimum/maximum key, you wanted to get the minimum value for each key, then you would need to look at `GroupBy`. -### GroupBy +### GroupBy The `GroupBy` operator allows you to partition your sequence just as `IEnumerable`'s `GroupBy` operator does. In a similar fashion to how the `IEnumerable` operator returns an `IEnumerable>`, the `IObservable` `GroupBy` operator returns an `IObservable>`. @@ -342,7 +566,7 @@ group.SelectMany( .Dump("group"); ``` -### Nested observables +### Nested observables The concept of a sequence of sequences can be somewhat overwhelming at first, especially if both sequence types are `IObservable`. While it is an advanced topic, we will touch on it here as it is a common occurrence with Rx. I find it easier if I can conceptualize a scenario or example to understand concepts better. @@ -393,253 +617,6 @@ Consolidating data into groups and aggregates enables sensible consumption of ma TODO: integrate these, which were previously in the vaguely titled Inspection chapter -## Any - -First we can look at the parameterless overload for the extension method `Any`. This will simply return an observable sequence that has the single value of `false` if the source completes without any values. If the source does produce a value however, then when the first value is produced, the result sequence will immediately push `true` and then complete. If the first notification it gets is an error, then it will pass that error on. - -```csharp -var subject = new Subject(); -subject.Subscribe(Console.WriteLine, () => Console.WriteLine("Subject completed")); -var any = subject.Any(); - -any.Subscribe(b => Console.WriteLine("The subject has any values? {0}", b)); - -subject.OnNext(1); -subject.OnCompleted(); -``` - -Output: - -``` -1 -The subject has any values? True -subject completed -``` - -If we now remove the OnNext(1), the output will change to the following - -``` -subject completed -The subject has any values? False -``` - -If the source errors it would only be interesting if it was the first notification, otherwise the `Any` method will have already pushed true. If the first notification is an error then `Any` will just pass it along as an `OnError` notification. - -```csharp -var subject = new Subject(); -subject.Subscribe(Console.WriteLine, - ex => Console.WriteLine("subject OnError : {0}", ex), - () => Console.WriteLine("Subject completed")); -var any = subject.Any(); - -any.Subscribe(b => Console.WriteLine("The subject has any values? {0}", b), - ex => Console.WriteLine(".Any() OnError : {0}", ex), - () => Console.WriteLine(".Any() completed")); - -subject.OnError(new Exception()); -``` - -Output: - -``` -subject OnError : System.Exception: Fail -.Any() OnError : System.Exception: Fail -``` - -The `Any` method also has an overload that takes a predicate. This effectively makes it a `Where` with an `Any` appended to it. - -```csharp -subject.Any(i => i > 2); -// Functionally equivalent to -subject.Where(i => i > 2).Any(); -``` - -As an exercise, write your own version of the two `Any` extension method overloads. While the answer may not be immediately obvious, we have covered enough material for you to create this using the methods you know... - -Example of the `Any` extension methods written with `Observable.Create`: - -```csharp -public static IObservable MyAny(this IObservable source) -{ - return Observable.Create( - o => - { - var hasValues = false; - return source - .Take(1) - .Subscribe( - _ => hasValues = true, - o.OnError, - () => - { - o.OnNext(hasValues); - o.OnCompleted(); - }); - }); -} - -public static IObservable MyAny( - this IObservable source, - Func predicate) -{ - return source - .Where(predicate) - .MyAny(); -} -``` - -## All - -The `All`() extension method works just like the `Any` method, except that all values must meet the predicate. As soon as a value does not meet the predicate a `false` value is returned then the output sequence completed. If the source is empty, then `All` will push `true` as its value. As per the `Any` method, and errors will be passed along to the subscriber of the `All` method. - -```csharp -var subject = new Subject(); -subject.Subscribe(Console.WriteLine, () => Console.WriteLine("Subject completed")); -var all = subject.All(i => i < 5); -all.Subscribe(b => Console.WriteLine("All values less than 5? {0}", b)); - -subject.OnNext(1); -subject.OnNext(2); -subject.OnNext(6); -subject.OnNext(2); -subject.OnNext(1); -subject.OnCompleted(); -``` - -Output: - -``` -1 -2 -6 -All values less than 5? False -all completed -2 -1 -subject completed -``` - -Early adopters of Rx may notice that the `IsEmpty` extension method is missing. You can easily replicate the missing method using the `All` extension method. - -```csharp -// IsEmpty() is deprecated now. -// var isEmpty = subject.IsEmpty(); -var isEmpty = subject.All(_ => false); -``` - -## Contains - -The `Contains` extension method overloads could sensibly be overloads to the `Any` extension method. The `Contains` extension method has the same behavior as `Any`, however it specifically targets the use of `IComparable` instead of the usage of predicates and is designed to seek a specific value instead of a value that fits the predicate. I believe that these are not overloads of `Any` for consistency with `IEnumerable`. - -```csharp -var subject = new Subject(); -subject.Subscribe( - Console.WriteLine, - () => Console.WriteLine("Subject completed")); - -var contains = subject.Contains(2); - -contains.Subscribe( - b => Console.WriteLine("Contains the value 2? {0}", b), - () => Console.WriteLine("contains completed")); - -subject.OnNext(1); -subject.OnNext(2); -subject.OnNext(3); - -subject.OnCompleted(); -``` - -Output: - -``` -1 -2 -Contains the value 2? True -contains completed -3 -Subject completed -``` - -There is also an overload to `Contains` that allows you to specify an implementation of `IEqualityComparer` other than the default for the type. This can be useful if you have a sequence of custom types that may have some special rules for equality depending on the use case. - - - - -## DefaultIfEmpty - -The `DefaultIfEmpty` extension method will return a single value if the source sequence is empty. Depending on the overload used, it will either be the value provided as the default, or `Default(T)`. `Default(T)` will be the zero value for _struct_ types and will be `null` for classes. If the source is not empty then all values will be passed straight on through. - -In this example the source produces values, so the result of `DefaultIfEmpty` is just the source. - -```csharp -var subject = new Subject(); - -subject.Subscribe( - Console.WriteLine, - () => Console.WriteLine("Subject completed")); - -var defaultIfEmpty = subject.DefaultIfEmpty(); - -defaultIfEmpty.Subscribe( - b => Console.WriteLine("defaultIfEmpty value: {0}", b), - () => Console.WriteLine("defaultIfEmpty completed")); - -subject.OnNext(1); -subject.OnNext(2); -subject.OnNext(3); - -subject.OnCompleted(); -``` - -Output: - -``` -1 -defaultIfEmpty value: 1 -2 -defaultIfEmpty value: 2 -3 -defaultIfEmpty value: 3 -Subject completed -defaultIfEmpty completed -``` - -If the source is empty, we can use either the default value for the type (i.e. 0 for int) or provide our own value in this case 42. - -```csharp -var subject = new Subject(); - -subject.Subscribe( - Console.WriteLine, - () => Console.WriteLine("Subject completed")); - -var defaultIfEmpty = subject.DefaultIfEmpty(); - -defaultIfEmpty.Subscribe( - b => Console.WriteLine("defaultIfEmpty value: {0}", b), - () => Console.WriteLine("defaultIfEmpty completed")); - -var default42IfEmpty = subject.DefaultIfEmpty(42); - -default42IfEmpty.Subscribe( - b => Console.WriteLine("default42IfEmpty value: {0}", b), - () => Console.WriteLine("default42IfEmpty completed")); - -subject.OnCompleted(); -``` - -Output: - -``` -Subject completed -defaultIfEmpty value: 0 -defaultIfEmpty completed -default42IfEmpty value: 42 -default42IfEmpty completed -``` - - @@ -653,7 +630,7 @@ We didn't try to tackle all of the operators at once, we approached them in grou - Aggregation - Transformation -On deeper analysis of the operators we find that most of the operators are actually specialization of the higher order functional concepts. We named them the ABC's of functional programming: +On deeper analysis of the operators we find that most of the operators are actuallyspecialization of the higher order functional concepts. We named them the ABC's of functional programming: - Anamorphism, aka: - Ana diff --git a/content/08_Partitioning.md b/content/08_Partitioning.md new file mode 100644 index 0000000..40d78f3 --- /dev/null +++ b/content/08_Partitioning.md @@ -0,0 +1,7 @@ +--- +title: Partitioning +--- + +# Partitioning + + diff --git a/content/12_CombiningSequences.md b/content/12_CombiningSequences.md index 2e6de28..28d4381 100644 --- a/content/12_CombiningSequences.md +++ b/content/12_CombiningSequences.md @@ -137,6 +137,88 @@ rs-----1---2-3| You should note that the second sequence is only yielded once the first sequence has completed. To prove this, we explicitly put in a 500ms delay on producing a value and completing. Once that happens, the second sequence is then subscribed to. When that sequence completes, then the third sequence is processed in the same fashion. +TODO: this has moved, and it needs some work to integrate. It's a bit of an odd one, because it doesn't really neatly fit into any of the categories. But this chapter feels less inappropriate than the rest. (It's kind of similar to thins like Concat or StartWith and Append because it generally emits everything that comes into it, but it may add something.) + + + + +## DefaultIfEmpty + +The `DefaultIfEmpty` extension method will return a single value if the source sequence is empty. Depending on the overload used, it will either be the value provided as the default, or `Default(T)`. `Default(T)` will be the zero value for _struct_ types and will be `null` for classes. If the source is not empty then all values will be passed straight on through. + +In this example the source produces values, so the result of `DefaultIfEmpty` is just the source. + +```csharp +var subject = new Subject(); + +subject.Subscribe( + Console.WriteLine, + () => Console.WriteLine("Subject completed")); + +var defaultIfEmpty = subject.DefaultIfEmpty(); + +defaultIfEmpty.Subscribe( + b => Console.WriteLine("defaultIfEmpty value: {0}", b), + () => Console.WriteLine("defaultIfEmpty completed")); + +subject.OnNext(1); +subject.OnNext(2); +subject.OnNext(3); + +subject.OnCompleted(); +``` + +Output: + +``` +1 +defaultIfEmpty value: 1 +2 +defaultIfEmpty value: 2 +3 +defaultIfEmpty value: 3 +Subject completed +defaultIfEmpty completed +``` + +If the source is empty, we can use either the default value for the type (i.e. 0 for int) or provide our own value in this case 42. + +```csharp +var subject = new Subject(); + +subject.Subscribe( + Console.WriteLine, + () => Console.WriteLine("Subject completed")); + +var defaultIfEmpty = subject.DefaultIfEmpty(); + +defaultIfEmpty.Subscribe( + b => Console.WriteLine("defaultIfEmpty value: {0}", b), + () => Console.WriteLine("defaultIfEmpty completed")); + +var default42IfEmpty = subject.DefaultIfEmpty(42); + +default42IfEmpty.Subscribe( + b => Console.WriteLine("default42IfEmpty value: {0}", b), + () => Console.WriteLine("default42IfEmpty completed")); + +subject.OnCompleted(); +``` + +Output: + +``` +Subject completed +defaultIfEmpty value: 0 +defaultIfEmpty completed +default42IfEmpty value: 42 +default42IfEmpty completed +``` + + + + + ### Repeat Another simple extension method is `Repeat`. It allows you to simply repeat a sequence, either a specified or an infinite number of times. diff --git a/content/C_AlgebraicUnderpinnings b/content/C_AlgebraicUnderpinnings index c230b36..0705d67 100644 --- a/content/C_AlgebraicUnderpinnings +++ b/content/C_AlgebraicUnderpinnings @@ -133,4 +133,22 @@ public static IObservable MySelect( ``` ----end \ No newline at end of file +---end + + + +This was original in the Aggregation section. I didn't much like it, but we might want to mine this for ideas: + +---begin + +## Functional folds + +Finally we arrive at the set of methods in Rx that meet the functional description of catamorphism/fold. These methods will take an `IObservable` and produce a `T`. + +Caution should be prescribed whenever using any of these fold methods on an observable sequence, as they are all blocking. The reason you need to be careful with blocking methods is that you are moving from an asynchronous paradigm to a synchronous one, and without care you can introduce concurrency problems such as locking UIs and deadlocks. We will take a deeper look into these problems in a later chapter when we look at concurrency. + +> It is worth noting that in the soon to be released .NET 4.5 and Rx 2.0 will provide support for avoiding these concurrency problems. The new `async`/`await` keywords and related features in Rx 2.0 can help exit the monad in a safer way. + +TODO: this was where First, Last, and Single were. (That was an odd choice. They are technically catamorphisms, but they are degenerate cases. `Aggregate` is the canonical example but that wasn't in this section! `Sum`, `Average`, `Min`, and `Max` are also all good examples (more specialized than Aggregate, but at least they look at every input), but they're also not in here. To be fair, the Rx source code puts FirstAsync and SingleAsync in Observable.Aggregates.cs. But it's the fact that this section _only_ contained these, and none of the other more obviously aggregating catamorphisms.) I've moved those out into filtering, because they feel more akin to Take and Last. From a structural algebra perspective these are different kinds of things, but in terms of what they actually do, they are positional filters, so they seem to fit better in the filtering chapter than Aggregation because they don't aggregate. + +---end From ecc076beb3a6fd21e919d5866da9de06924ba60f Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Wed, 21 Jun 2023 16:27:17 +0100 Subject: [PATCH 016/142] Feature-complete draft of Aggregation chapter --- content/07_Aggregation.md | 429 ++++++------------ content/08_Partitioning.md | 187 ++++++++ ...gSequences.md => 09_CombiningSequences.md} | 35 +- .../{09_SideEffects.md => 09x_SideEffects.md} | 0 4 files changed, 357 insertions(+), 294 deletions(-) rename content/{12_CombiningSequences.md => 09_CombiningSequences.md} (96%) rename content/{09_SideEffects.md => 09x_SideEffects.md} (100%) diff --git a/content/07_Aggregation.md b/content/07_Aggregation.md index 4c5ad7b..365666e 100644 --- a/content/07_Aggregation.md +++ b/content/07_Aggregation.md @@ -105,23 +105,7 @@ IObservable widthOfWidestVessel = vesselDimensions `Max` returns an `IObservable` here, which will be the width of the widest vessel out of the next 10 messages that report vessel dimensions. But what if you didn't just want to see the width? What if you wanted the whole message? - -### MinBy and MaxBy - -Rx offers two subtle variations on `Min` and `Max`: `MinBy` and `MaxBy`. (These are not universally supported as LINQ operators. .NET only added these for LINQ to Objects in .NET 6.0. Rx has had them for much longer, so these were once Rx-specific operators that have now effectively been retconned as standard LINQ operators.) This example is similar to the preceding one, but replaces `Max` with `MaxBy`: - -```cs -IObservable widthOfWidestVessel = vesselDimensions - .Take(10) - .MaxBy(dimensions => checked((int)(dimensions.DimensionToPort + dimensions.DimensionToStarboard))); -``` - -Notice that the type of sequence we get is different. `Max` returned an `IObservable`, because it invokes the callback for every item in the source, and then produces the highest of the values that our callback returned. But with `MaxBy`, we get back an `IObservable`. - -`MinBy` and `MaxBy` return a sequence of the same type as their inputs. Instead of returning the minimum or maximum value, they remember which particular source value caused the callback to emit the minimum or maximum value, and once the source completes, they return that source value (instead of the value the callback returned for that source value, which is what the callback-based overloads of `Min` and `Max` do). - -`MinBy` and `MaxBy` are only available in the form where you supply a callback. The point of these operators is that they separate out the criteria for comparison from the result. (You could achieve the same effect by calling `Min` or `Max` with a custom comparer, but these operators are typically more convenient.) - +**Note**: Rx defines `MinBy` and `MaxBy` methods. Rx defined these years before .NET 6.0 added [`Enumerable.MinBy`](https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable.minby) and [`Enumerable.MaxBy`](https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable.maxby), and Rx's operators are significantly different from their LINQ to Objects namesakes. The Rx ones are described in the [Partitioning chapter](./08_Partitioning.md). ## Simple Boolean Aggregation @@ -222,7 +206,7 @@ public static IObservable MyAny( } ``` -## All +### All The `All` operator is similar to the `Any` method that takes a predicate, except that all values must meet the predicate. As soon as a value does not meet the predicate a `false` value is returned then the output sequence completed. If the source reaches its end without producing any elements that do not satisfy the predicate, then `All` will push `true` as its value. (A consequence of this is that if you use `All` on an empty sequence, the result will be a sequence that produces `true`. This is consistent with how `All` works in other LINQ providers, but it might be surprising for anyone not familiar with the formal logic convention known as [vacuous truth](https://en.wikipedia.org/wiki/Vacuous_truth).) @@ -256,12 +240,12 @@ subject completed ``` -## IsEmpty +### IsEmpty The LINQ `IsEmpty` operator is logically the opposite of the no-arguments `Any` method. It returns `true` if and only if the source completes without producing any elements, and if the source produces an item, `IsEmpty` produces `false` and immediately unsubscribes. -## Contains +### Contains The `Contains` operator determines whether a particular element is present in a sequence. You could implement it using `Any`, just supplying a callback that compares each item with the value you're looking for. However, it will typically be slightly more succinct, and may be a more direct expression of intent to write `Contains`. @@ -298,17 +282,13 @@ Subject completed There is also an overload to `Contains` that allows you to specify an implementation of `IEqualityComparer` other than the default for the type. This can be useful if you have a sequence of custom types that may have some special rules for equality depending on the use case. -Next time: continue from here. - ## Build your own aggregations -If the provided aggregations do not meet your needs, you can build your own. Rx provides two different ways to do this. +If the built-in aggregations described in the preceding sections do not meet your needs, you can build your own. Rx provides two different ways to do this. ### Aggregate -The `Aggregate` method allows you to apply an accumulator function to the sequence. For the basic overload, you need to provide a function that takes the current state of the accumulated value and the value that the sequence is pushing. The result of the function is the new accumulated value. - -This overload signature is as follows: +The `Aggregate` method is very flexible: it is possible to build any of the operators shown so far in this chapter with it. You supply it with a function, and it invokes that function once for every element. But it doesn't just pass the element into your function: it also provides a way for your function to collect—to _aggregate_—information. As well as the current element, it also passes in an _accumulator_. The accumulator can be any type you like—it will depend on what sort of information you're looking to collect. `Aggregate` passes in the current accumulator value, and then whatever value your function returns becomes the new accumulator value, and it will pass that into the function along with the next element from the source. There are a few variations on this, but the simplest overload looks like this: ```csharp IObservable Aggregate( @@ -316,336 +296,199 @@ IObservable Aggregate( Func accumulator) ``` -If you wanted to produce your own version of `Sum` for `int` values, you could do so by providing a function that just adds to the current state of the accumulator. +If you wanted to produce your own version of `Count` for `int` values, you could do so by providing a function that just adds 1 for each value the source produces: ```csharp -var sum = source.Aggregate((acc, currentValue) => acc + currentValue); +IObservable sum = source.Aggregate((acc, element) => acc + 1); ``` -This overload of `Aggregate` has several problems. First is that it requires the aggregated value must be the same type as the sequence values. We have already seen in other aggregates like `Average` this is not always the case. Secondly, this overload needs at least one value to be produced from the source or the output will error with an `InvalidOperationException`. +To understand exactly what this is doing, let's look at how `Aggregate` will call this lambda. To make that slightly easier to see, suppose we put that lambda in its own variable: -It should be completely valid for us to use `Aggregate` to create our own `Count` or `Sum` on an empty sequence. To do this you need to use the other overload. This overload takes an extra parameter which is the seed. The seed value provides an initial accumulated value. It also allows the aggregate type to be different to the value type. +```cs +Func c = (acc, element) => acc + 1; +``` -```csharp -IObservable Aggregate( - this IObservable source, - TAccumulate seed, - Func accumulator) +Now suppose the source produces an item with the value 100. `Aggregate` will invoke our function: + +```cs +c(0, 100) // returns 1 ``` -To update our `Sum` implementation to use this overload is easy. Just add the seed which will be 0. This will now return 0 as the sum when the sequence is empty which is just what we want. You also now can also create your own version of `Count`. +The first argument is the current accumulator. `Aggregate` has used `default(int)` for the initial accumulator value, which is 0. Our function returns 1, which becomes the new accumulator value. So if the source produces a second value, say, 200, `Aggregate` will pass the new accumulator, along with the second value from the source: -```csharp -var sum = source.Aggregate(0, (acc, currentValue) => acc + currentValue); -var count = source.Aggregate(0, (acc, currentValue) => acc + 1); -// or using '_' to signify that the value is not used. -var count = source.Aggregate(0, (acc, _) => acc + 1); +```cs +c(1, 200) // returns 2 ``` -As an exercise write your own `Min` and `Max` methods using `Aggregate`. You will probably find the `IComparer` interface useful, and in particular the static `Comparer.Default` property. When you have done the exercise, continue to the example implementations... +This particular function completely ignores its second argument (the element from the source). It just adds one to the accumulator each time. So the accumulator is nothing more than a record of the number of times our function has been called. -Examples of creating `Min` and `Max` from `Aggregate`: +Now let's look at how we might implement `Sum` using `Aggregate`: -```csharp -public static IObservable MyMin(this IObservable source) -{ - return source.Aggregate( - (min, current) => Comparer - .Default - .Compare(min, current) > 0 - ? current - : min); -} -public static IObservable MyMax(this IObservable source) -{ - var comparer = Comparer.Default; - Func max = - (x, y) => - { - if(comparer.Compare(x, y) < 0) - { - return y; - } - return x; - }; - return source.Aggregate(max); -} +```csharp +Func s = (acc, element) => acc + element +IObservable sum = source.Aggregate(s); ``` -### Scan +For the first element, `Aggregate` will again pass the default value for our chosen accumulator type, `int`: 0. And it will pass the first element value. So again if the first element is 100 it does this: + +```cs +s(0, 100) // returns 100 +``` -While `Aggregate` allows us to get a final value for sequences that will complete, sometimes this is not what we need. If we consider a use case that requires that we get a running total as we receive values, then `Aggregate` is not a good fit. `Aggregate` is also not a good fit for infinite sequences. The `Scan` extension method however meets this requirement perfectly. The signatures for both `Scan` and `Aggregate` are the same; the difference is that `Scan` will push the _result_ from every call to the accumulator function. +And then if the second element is 200, `Aggregate` will make this call: -So instead of being an aggregator that reduces a sequence to a single value sequence, it is an accumulator that we return an accumulated value for each value of the source sequence. In this example we produce a running total. +```cs +s(100, 200) // returns 300 +``` -```csharp -var numbers = new Subject(); -var scan = numbers.Scan(0, (acc, current) => acc + current); +Notice that this time, the first argument was 100, because that's what the previous invocation of `s` returned. So in this case, after seeing elements 100 and 200, the accumulator's value is 300, which is the sum of all the elements. -numbers.Dump("numbers"); -scan.Dump("scan"); +What if we want the initial accumulator value to be something other than `default(TAccumulator)`? There's an overload for that. For example, here's how we could implement something like `All` with `Aggregate`: -numbers.OnNext(1); -numbers.OnNext(2); -numbers.OnNext(3); -numbers.OnCompleted(); +```cs +IObservable all = source.Aggregate(true, (acc, element) => acc && element); ``` -Output: +This isn't exactly equivalent to the real `All` by the way: it handles errors differently. `All` instantly unsubscribes from its source if it sees a single element that is `false`, because it knows that nothing else the source produces can possibly change the outcome. That means that if the source had been about to produce an error, it will no longer have the opportunity to do so because `All` unsubscribed. But `Aggregate` has no way of knowing that the accumulator has entered a state from which it can never leave, so it will remain subscribed to the source until the source completes (or until whichever code subscribed to the `IObservable` returned by `Aggregate` unsubscribes). This means that if the source were to produce `true`, then `false`, `Aggregate` would, unlike `All`, remain subscribed to the source, so if the source goes on to call `OnError`, `Aggregate` will receive that error, and pass it on to its subscriber. -``` -numbers-->1 -sum-->1 -numbers-->2 -sum-->3 -numbers-->3 -sum-->6 -numbers completed -sum completed +Here's a way to think about `Aggregate` that some people find helpful. If your source produces the values 1 through 5, and if the function we pass to `Aggregate` is called `f`, then the value that `Aggregate` produces once the source completes will be this: + +```cs +T result = f(f(f(f(f(default(T), 1), 2), 3), 4), 5); ``` -It is probably worth pointing out that you use `Scan` with `TakeLast()` to produce `Aggregate`. +So in the case of our recreation of `Count`, the accumulator type was `int`, so that becomes: -```csharp -source.Aggregate(0, (acc, current) => acc + current); -// is equivalent to -source.Scan(0, (acc, current) => acc + current).TakeLast(); +```cs +int sum = s(s(s(s(s(0, 1), 2), 3), 4), 5); +// Note: Aggregate doesn't return this directly - +// it returns an IObservable that produces this value. ``` -As another exercise, use the methods we have covered so far in the book to produce a sequence of running minimum and running maximums. The key here is that each time we receive a value that is less than (or more than for a Max operator) our current accumulator we should push that value and update the accumulator value. We don't however want to push duplicate values. For example, given a sequence of [2, 1, 3, 5, 0] we should see output like [2, 1, 0] for the running minimum, and [2, 3, 5] for the running maximum. We don't want to see [2, 1, 2, 2, 0] or [2, 2, 3, 5, 5]. Continue to see an example implementation. +Rx's `Aggregate` doesn't perform all those invocations at once: it invokes the function as each element occurs. So the calculations will be spread out over time. (If your callback is a _pure function_—one that is unaffected by global variables and other environmental factors, and which will always return the same result for any particular input—this doesn't matter. The result of `Aggregate` will be the same as if it had all happened in one big expression like the preceding example. But if your callback's behaviour is affected by, say, a global variable, or by the current contents of the filesystem, then the fact that it will be invoked when the source produces each value may be more significant.) -Example of a running minimum: +`Aggregate` has other names in some programming systems by the way. It is often referred to as a _fold_. (Specifically a _left fold_. A right fold proceeds in reverse. Conventionally its function takes arguments in the reverse order, so it would look like `s(1, s(2, s(3, s(4, s(5, 0)))))`. Rx does not offer a built-in right fold. It would not be a natural fit because it would have to wait until it received the final element before it could begin, meaning it would need to hold onto every element in the entire sequence, and then evaluate the entire fold at once when the sequence completes.) Some systems call it `reduce`. -```csharp -var comparer = Comparer.Default; -Func minOf = (x, y) => comparer.Compare(x, y) < 0 ? x: y; -var min = source.Scan(minOf).DistinctUntilChanged(); -``` +You might have spotted that in my quest to re-implement some of the built-in aggregation operators, I went straight from `Sum` to `Any`. What about `Average`? It turns out we can't do that with the overloads I've shown you so far. And that's because `Average` needs to accumulate two pieces of information—the running total and the count—and it also needs to perform once final step right at the end: it needs to divide the total by the count. With the overloads shown so far, we can only get part way there: -Example of a running maximum: +```cs +IObservable nums = Observable.Range(1, 5); -```csharp -public static IObservable RunningMax(this IObservable source) -{ - return source.Scan(MaxOf) - .Distinct(); -} +IObservable<(int Count, int Sum)> avgAcc = nums.Aggregate( + (Count: 0, Sum: 0), + (acc, element) => (Count: acc.Count + 1, Sum: acc.Sum + element)); +``` -private static T MaxOf(T x, T y) -{ - var comparer = Comparer.Default; - if (comparer.Compare(x, y) < 0) - { - return y; - } - return x; -} +This uses a tuple as the accumulator, enabling it to accumulate two values: the count and the sum. But the final accumulator value becomes the result, and that's not what we want. We're missing that final step that calculates the average by dividing the sum by the count. Fortunately, `Aggregate` offers a 3rd overload that enables us to provide this final step. We pass a second callback which will be invoked just once when the source completes. `Aggregate` passes the final accumulator value into this lambda, and then whatever it returns becomes the single item produced by the observable that `Aggregate` returns. + +```cs +IObservable avg = nums.Aggregate( + (Count: 0, Sum: 0), + (acc, element) => (Count: acc.Count + 1, Sum: acc.Sum + element), + acc => ((double) acc.Sum) / acc.Count); ``` -While the only functional differences between the two examples is checking greater instead of less than, the examples show two different styles. Some people prefer the terseness of the first example, others like their curly braces and the verbosity of the second example. The key here was to compose the `Scan` method with the `Distinct` or `DistinctUntilChanged` methods. It is probably preferable to use the `DistinctUntilChanged` so that we internally are not keeping a cache of all values. +I've been showing how `Aggregate` can re-implement some of the built-in aggregation operators to illustrate that it is a powerful and very general operator. However, that's not what we use it for. `Aggregate` is useful precisely because it lets us define custom aggregation. -## Partitioning +For example, suppose I wanted to build up a list of the names of all the ships that have broadcast their details over AIS. Here's one way to do that: -Rx also gives you the ability to partition your sequence with features like the standard LINQ operator `GroupBy`. This can be useful for taking a single sequence and fanning out to many subscribers or perhaps taking aggregates on partitions. +```cs +IObservable> allNames = vesselNames + .Take(10) + .Aggregate( + ImmutableHashSet.Empty, + (set, name) => set.Add(name.VesselName)); +``` -### MinBy and MaxBy +I've used `ImmutableHashSet` here because its usage patterns happen to fit `Aggregate` neatly. An ordinary `HashSet` would also have worked, but is a little less convenient because its `Add` method doesn't return the set, so our function needs an extra statement to return the accumulated set: -The `MinBy` and `MaxBy` operators allow you to partition your sequence based on a key selector function. Key selector functions are common in other LINQ operators like the `IEnumerable` `ToDictionary` or `GroupBy` and the [`Distinct`}(05_Filtering.html#Distinct) method. Each method will return you the values from the key that was the minimum or maximum respectively. +```cs +IObservable> allNames = vesselNames + .Take(10) + .Aggregate( + new HashSet(), + (set, name) => + { + set.Add(name.VesselName); + return set; + }); +``` -```csharp -// Returns an observable sequence containing a list of zero or more elements that have a -// minimum key value. -public static IObservable> MinBy( - this IObservable source, - Func keySelector) -{...} +With either of these implementations, `vesselNames` will produce a single value that is a `IReadOnlySet` containing each vessel name seen in the first 10 messages that report a name. -public static IObservable> MinBy( - this IObservable source, - Func keySelector, - IComparer comparer) -{...} +I've had to fudge an issue in these last two examples. I've made them work over just the first 10 suitable messages to emerge. Think about what would happen if I didn't have the `Take(10)` in there. The code would compile, but we'd have a problem. The AIS message source I've been using in various examples is an endless source. Ships will continue to move around the oceans for the foreseeable future. Ais.NET does not contain any code designed to detect either the end of civilisation, or the invention of technologies that render the use of ships obsolete, so it will never call `OnCompleted` on its subscribers. The observable returned by `Aggregate` reports nothing until its source either completes or fails. So if we remove that `Take(10)`, the behaviour would be identical `Observable.Never>`. I had to force the input to `Aggregate` to come to an end to make it produce something. But there is another way. -// Returns an observable sequence containing a list of zero or more elements that have a -// maximum key value. -public static IObservable> MaxBy( - this IObservable source, - Func keySelector) -{...} -public static IObservable> MaxBy( - this IObservable source, - Func keySelector, - IComparer comparer) -{...} -``` +### Scan -Take note that each `Min` and `Max` operator has an overload that takes a comparer. This allows for comparing custom types or custom sorting of standard types. +While `Aggregate` allows us to reduce complete sequences to a single, final value, sometimes this is not what we need. If we are dealing with an endless source, we might want something more like a running total, updated each time we receive a value. The `Scan` operator is designed for exactly this requirement. The signatures for both `Scan` and `Aggregate` are the same; the difference is that `Scan` doesn't wait for the end of its input. It produces the aggregated value after every item. -Consider a sequence from 0 to 10. If we apply a key selector that partitions the values in to groups based on their modulus of 3, we will have 3 groups of values. The values and their keys will be as follows: +We can use this to build up a set of vessel names as in the preceding section, but with `Scan` we don't have to wait until the end. This will report the current list every time it receives a message containing a name: -```csharp -Func keySelector = i => i % 3; +``` +IObservable> allNames = vesselNames + .Scan( + ImmutableHashSet.Empty, + (set, name) => set.Add(name.VesselName)); ``` -- 0, key: 0 -- 1, key: 1 -- 2, key: 2 -- 3, key: 0 -- 4, key: 1 -- 5, key: 2 -- 6, key: 0 -- 7, key: 1 -- 8, key: 2 -- 9, key: 0 +Note that this `allNames` observable will produce elements even if nothing has changed. If the accumulated set of names already contained the name that just emerged from `vesselNames`, the call to `set.Add` will do nothing, because that name will already be in the set. But `Scan` scan produces one output for each input, and doesn't care if the accumulator didn't change. Whether this matters will depend on what you are planning to do with this `allNames` observable, but if you need to, you can fix this easily with the [`DistinctUntilChanged` operator shown in Chapter 5](./05_Filtering.md#distinct-and-distinctuntilchanged). -We can see here that the minimum key is 0 and the maximum key is 2. If therefore, we applied the `MinBy` operator our single value from the sequence would be the list of [0,3,6,9]. Applying the `MaxBy` operator would produce the list [2,5,8]. The `MinBy` and `MaxBy` operators will only yield a single value (like an `AsyncSubject`) and that value will be an `IList` with zero or more values. +You could think of `Scan` as being a version of `Aggregate` that shows its working. If we wanted to see how the process of calculating an average aggregates the count and sum, we could write this: -If instead of the values for the minimum/maximum key, you wanted to get the minimum value for each key, then you would need to look at `GroupBy`. +```cs +IObservable nums = Observable.Range(1, 5); -### GroupBy +IObservable<(int Count, int Sum)> avgAcc = nums.Scan( + (Count: 0, Sum: 0), + (acc, element) => (Count: acc.Count + 1, Sum: acc.Sum + element)); -The `GroupBy` operator allows you to partition your sequence just as `IEnumerable`'s `GroupBy` operator does. In a similar fashion to how the `IEnumerable` operator returns an `IEnumerable>`, the `IObservable` `GroupBy` operator returns an `IObservable>`. +avgAcc.Dump("acc"); +``` -```csharp -// Transforms a sequence into a sequence of observable groups, -// each of which corresponds to a unique key value, -// containing all elements that share that same key value. -public static IObservable> GroupBy( - this IObservable source, - Func keySelector) -{...} +That produces this output: -public static IObservable> GroupBy( - this IObservable source, - Func keySelector, - IEqualityComparer comparer) -{...} +``` +acc-->(1, 1) +acc-->(2, 3) +acc-->(3, 6) +acc-->(4, 10) +acc-->(5, 15) +acc completed +``` -public static IObservable> GroupBy( - this IObservable source, - Func keySelector, - Func elementSelector) -{...} +You can see clearly here that `Scan` is emitting the current accumulated values each time the source produces a value. -public static IObservable> GroupBy( - this IObservable source, - Func keySelector, - Func elementSelector, - IEqualityComparer comparer) -{...} +Unlike `Aggregate`, `Scan` doesn't offer an overload taking a second function to transform the accumulator into the result. So we can see the tuple containing the count and sum here, but not the actual average value we want. But we can achieve that by using the [`Select` operator described in the Transformation chapter](./06_Transformation.md): + +```cs +IObservable avg = nums.Scan( + (Count: 0, Sum: 0), + (acc, element) => (Count: acc.Count + 1, Sum: acc.Sum + element)) + .Select(acc => ((double) acc.Sum) / acc.Count); + +avg.Dump("avg"); ``` -I find the last two overloads a little redundant as we could easily just compose a `Select` operator to the query to get the same functionality. +Now we get this output: -In a similar fashion that the `IGrouping` type extends the `IEnumerable`, the `IGroupedObservable` just extends `IObservable` by adding a `Key` property. The use of the `GroupBy` effectively gives us a nested observable sequence. +``` +avg-->1 +avg-->1.5 +avg-->2 +avg-->2.5 +avg-->3 +avg completed +``` -To use the `GroupBy` operator to get the minimum/maximum value for each key, we can first partition the sequence and then `Min`/`Max` each partition. +`Scan` is a more generalised operator than `Aggregate`. You could implement `Aggregate` by combining `Scan` with the [`TakeLast()` operator described in the Filtering chapter](./05_Filtering.md#takelast). ```csharp -var source = Observable.Interval(TimeSpan.FromSeconds(0.1)).Take(10); -var group = source.GroupBy(i => i % 3); -group.Subscribe( - grp => - grp.Min().Subscribe( - minValue => - Console.WriteLine("{0} min value = {1}", grp.Key, minValue)), - () => Console.WriteLine("Completed")); +source.Aggregate(0, (acc, current) => acc + current); +// is equivalent to +source.Scan(0, (acc, current) => acc + current).TakeLast(); ``` -The code above would work, but it is not good practice to have these nested subscribe calls. We have lost control of the nested subscription, and it is hard to read. When you find yourself creating nested subscriptions, you should consider how to apply a better pattern. In this case we can use `SelectMany` which we will look at in the next chapter. -```csharp -var source = Observable.Interval(TimeSpan.FromSeconds(0.1)).Take(10); -var group = source.GroupBy(i => i % 3); -group.SelectMany( - grp => - grp.Max() - .Select(value => new { grp.Key, value })) - .Dump("group"); -``` - -### Nested observables - -The concept of a sequence of sequences can be somewhat overwhelming at first, especially if both sequence types are `IObservable`. While it is an advanced topic, we will touch on it here as it is a common occurrence with Rx. I find it easier if I can conceptualize a scenario or example to understand concepts better. - -Examples of Observables of Observables: - -
-
Partitions of Data
-
- You may partition data from a single source so that it can easily be filtered and - shared to many sources. Partitioning data may also be useful for aggregates as we - have seen. This is commonly done with the `GroupBy` operator. -
-
Online Game servers
-
- Consider a sequence of servers. New values represent a server coming online. The - value itself is a sequence of latency values allowing the consumer to see real time - information of quantity and quality of servers available. If a server went down - then the inner sequence can signify that by completing. -
-
Financial data streams
-
- New markets or instruments may open and close during the day. These would then stream - price information and could complete when the market closes. -
-
Chat Room
-
- Users can join a chat (outer sequence), leave messages (inner sequence) and leave - a chat (completing the inner sequence). -
-
File watcher
-
- As files are added to a directory they could be watched for modifications (outer - sequence). The inner sequence could represent changes to the file, and completing - an inner sequence could represent deleting the file. -
-
- -Considering these examples, you could see how useful it could be to have the concept of nested observables. There are a suite of operators that work very well with nested observables such as `SelectMany`, `Merge` and `Switch` that we look at in future chapters. - -When working with nested observables, it can be handy to adopt the convention that a new sequence represents a creation (e.g. A new partition is created, new game host comes online, a market opens, users joins a chat, creating a file in a watched directory). You can then adopt the convention for what a completed inner sequence represents (e.g. Game host goes offline, Market Closes, User leave chat, File being watched is deleted). The great thing with nested observables is that a completed inner sequence can effectively be restarted by creating a new inner sequence. - -In this chapter we are starting to uncover the power of LINQ and how it applies to Rx. We chained methods together to recreate the effect that other methods already provide. While this is academically nice, it also allows us to starting thinking in terms of functional composition. We have also seen that some methods work nicely with certain types: `First()` + `BehaviorSubject`, `Single()` + `AsyncSubject`, `Single()` + `Aggregate()` etc. We have covered the second of our three classifications of operators, _catamorphism_. Next we will discover more methods to add to our functional composition tool belt and also find how Rx deals with our third functional concept, _bind_. - -Consolidating data into groups and aggregates enables sensible consumption of mass data. Fast moving data can be too overwhelming for batch processing systems and human consumption. Rx provides the ability to aggregate and partition on the fly, enabling real-time reporting without the need for expensive CEP or OLAP products. - - - -TODO: integrate these, which were previously in the vaguely titled Inspection chapter - - - - - -This brings us to a close on Part 2. The key takeaways from this were to allow you the reader to understand a key principal to Rx: functional composition. As we move through Part 2, examples became progressively more complex. We were leveraging the power of LINQ to chain extension methods together to compose complex queries. - -We didn't try to tackle all of the operators at once, we approached them in groups. - -- Creation -- Reduction -- Inspection -- Aggregation -- Transformation - -On deeper analysis of the operators we find that most of the operators are actuallyspecialization of the higher order functional concepts. We named them the ABC's of functional programming: - -- Anamorphism, aka: - - Ana - - Unfold - - Generate -- Bind, aka: - - Map - - SelectMany - - Projection - - Transform -- Catamorphism, aka: - - Cata - - Fold - - Reduce - - Accumulate - - Inject - -Now you should feel that you have a strong understanding of how a sequence can be manipulated. What we have learnt up to this point however can all largely be applied to `IEnumerable` sequences too. Rx can be much more complex than what many people will have dealt with in `IEnumerable` world, as we have seen with the `SelectMany` operator. In the next part of the book we will uncover features specific to the asynchronous nature of Rx. With the foundation we have built so far we should be able to tackle the far more challenging and interesting features of Rx. +Aggregation is useful for reducing volumes of data or combining multiple elements to produce averages, or other measure that incorporate information from multiple elements. But to perform some kinds of analysis we will also need to slice up or otherwise restructure our data before calculating aggregated values. So in the next chapter we'll look at the various mechanisms Rx offers for partitioning data. \ No newline at end of file diff --git a/content/08_Partitioning.md b/content/08_Partitioning.md index 40d78f3..c99f52b 100644 --- a/content/08_Partitioning.md +++ b/content/08_Partitioning.md @@ -5,3 +5,190 @@ title: Partitioning # Partitioning +## Partitioning + +Rx also gives you the ability to partition your sequence with features like the standard LINQ operator `GroupBy`. This can be useful for taking a single sequence and fanning out to many subscribers or perhaps taking aggregates on partitions. + +### MinBy and MaxBy + +The `MinBy` and `MaxBy` operators allow you to partition your sequence based on a key selector function. Key selector functions are common in other LINQ operators like the `IEnumerable` `ToDictionary` or `GroupBy` and the [`Distinct`}(05_Filtering.html#Distinct) method. Each method will return you the values from the key that was the minimum or maximum respectively. + +```csharp +// Returns an observable sequence containing a list of zero or more elements that have a +// minimum key value. +public static IObservable> MinBy( + this IObservable source, + Func keySelector) +{...} + +public static IObservable> MinBy( + this IObservable source, + Func keySelector, + IComparer comparer) +{...} + +// Returns an observable sequence containing a list of zero or more elements that have a +// maximum key value. +public static IObservable> MaxBy( + this IObservable source, + Func keySelector) +{...} + +public static IObservable> MaxBy( + this IObservable source, + Func keySelector, + IComparer comparer) +{...} +``` + +Take note that each `Min` and `Max` operator has an overload that takes a comparer. This allows for comparing custom types or custom sorting of standard types. + +Consider a sequence from 0 to 10. If we apply a key selector that partitions the values in to groups based on their modulus of 3, we will have 3 groups of values. The values and their keys will be as follows: + +```csharp +Func keySelector = i => i % 3; +``` + +- 0, key: 0 +- 1, key: 1 +- 2, key: 2 +- 3, key: 0 +- 4, key: 1 +- 5, key: 2 +- 6, key: 0 +- 7, key: 1 +- 8, key: 2 +- 9, key: 0 + +We can see here that the minimum key is 0 and the maximum key is 2. If therefore, we applied the `MinBy` operator our single value from the sequence would be the list of [0,3,6,9]. Applying the `MaxBy` operator would produce the list [2,5,8]. The `MinBy` and `MaxBy` operators will only yield a single value (like an `AsyncSubject`) and that value will be an `IList` with zero or more values. + +If instead of the values for the minimum/maximum key, you wanted to get the minimum value for each key, then you would need to look at `GroupBy`. + +TODO: I wrote this but it was totally wrong! Rework to explain how Rx's Min/MaxBy are just not the same thing as LINQ to Objects' ones. + +### MinBy and MaxBy + +Rx offers two subtle variations on `Min` and `Max`: `MinBy` and `MaxBy`. (These are not universally supported as LINQ operators. .NET only added these for LINQ to Objects in .NET 6.0. Rx has had them for much longer, so these were once Rx-specific operators that have now effectively been retconned as standard LINQ operators.) This example is similar to the preceding one, but replaces `Max` with `MaxBy`: + +```cs +IObservable widthOfWidestVessel = vesselDimensions + .Take(10) + .MaxBy(dimensions => checked((int)(dimensions.DimensionToPort + dimensions.DimensionToStarboard))); +``` + +Notice that the type of sequence we get is different. `Max` returned an `IObservable`, because it invokes the callback for every item in the source, and then produces the highest of the values that our callback returned. But with `MaxBy`, we get back an `IObservable`. + +`MinBy` and `MaxBy` return a sequence of the same type as their inputs. Instead of returning the minimum or maximum value, they remember which particular source value caused the callback to emit the minimum or maximum value, and once the source completes, they return that source value (instead of the value the callback returned for that source value, which is what the callback-based overloads of `Min` and `Max` do). + +`MinBy` and `MaxBy` are only available in the form where you supply a callback. The point of these operators is that they separate out the criteria for comparison from the result. (You could achieve the same effect by calling `Min` or `Max` with a custom comparer, but these operators are typically more convenient.) + + + + +### GroupBy + +The `GroupBy` operator allows you to partition your sequence just as `IEnumerable`'s `GroupBy` operator does. In a similar fashion to how the `IEnumerable` operator returns an `IEnumerable>`, the `IObservable` `GroupBy` operator returns an `IObservable>`. + +```csharp +// Transforms a sequence into a sequence of observable groups, +// each of which corresponds to a unique key value, +// containing all elements that share that same key value. +public static IObservable> GroupBy( + this IObservable source, + Func keySelector) +{...} + +public static IObservable> GroupBy( + this IObservable source, + Func keySelector, + IEqualityComparer comparer) +{...} + +public static IObservable> GroupBy( + this IObservable source, + Func keySelector, + Func elementSelector) +{...} + +public static IObservable> GroupBy( + this IObservable source, + Func keySelector, + Func elementSelector, + IEqualityComparer comparer) +{...} +``` + +I find the last two overloads a little redundant as we could easily just compose a `Select` operator to the query to get the same functionality. + +In a similar fashion that the `IGrouping` type extends the `IEnumerable`, the `IGroupedObservable` just extends `IObservable` by adding a `Key` property. The use of the `GroupBy` effectively gives us a nested observable sequence. + +To use the `GroupBy` operator to get the minimum/maximum value for each key, we can first partition the sequence and then `Min`/`Max` each partition. + +```csharp +var source = Observable.Interval(TimeSpan.FromSeconds(0.1)).Take(10); +var group = source.GroupBy(i => i % 3); +group.Subscribe( + grp => + grp.Min().Subscribe( + minValue => + Console.WriteLine("{0} min value = {1}", grp.Key, minValue)), + () => Console.WriteLine("Completed")); +``` + +The code above would work, but it is not good practice to have these nested subscribe calls. We have lost control of the nested subscription, and it is hard to read. When you find yourself creating nested subscriptions, you should consider how to apply a better pattern. In this case we can use `SelectMany` which we will look at in the next chapter. + +```csharp +var source = Observable.Interval(TimeSpan.FromSeconds(0.1)).Take(10); +var group = source.GroupBy(i => i % 3); +group.SelectMany( + grp => + grp.Max() + .Select(value => new { grp.Key, value })) + .Dump("group"); +``` + +### Nested observables + +The concept of a sequence of sequences can be somewhat overwhelming at first, especially if both sequence types are `IObservable`. While it is an advanced topic, we will touch on it here as it is a common occurrence with Rx. I find it easier if I can conceptualize a scenario or example to understand concepts better. + +Examples of Observables of Observables: + +
+
Partitions of Data
+
+ You may partition data from a single source so that it can easily be filtered and + shared to many sources. Partitioning data may also be useful for aggregates as we + have seen. This is commonly done with the `GroupBy` operator. +
+
Online Game servers
+
+ Consider a sequence of servers. New values represent a server coming online. The + value itself is a sequence of latency values allowing the consumer to see real time + information of quantity and quality of servers available. If a server went down + then the inner sequence can signify that by completing. +
+
Financial data streams
+
+ New markets or instruments may open and close during the day. These would then stream + price information and could complete when the market closes. +
+
Chat Room
+
+ Users can join a chat (outer sequence), leave messages (inner sequence) and leave + a chat (completing the inner sequence). +
+
File watcher
+
+ As files are added to a directory they could be watched for modifications (outer + sequence). The inner sequence could represent changes to the file, and completing + an inner sequence could represent deleting the file. +
+
+ +Considering these examples, you could see how useful it could be to have the concept of nested observables. There are a suite of operators that work very well with nested observables such as `SelectMany`, `Merge` and `Switch` that we look at in future chapters. + +When working with nested observables, it can be handy to adopt the convention that a new sequence represents a creation (e.g. A new partition is created, new game host comes online, a market opens, users joins a chat, creating a file in a watched directory). You can then adopt the convention for what a completed inner sequence represents (e.g. Game host goes offline, Market Closes, User leave chat, File being watched is deleted). The great thing with nested observables is that a completed inner sequence can effectively be restarted by creating a new inner sequence. + +In this chapter we are starting to uncover the power of LINQ and how it applies to Rx. We chained methods together to recreate the effect that other methods already provide. While this is academically nice, it also allows us to starting thinking in terms of functional composition. We have also seen that some methods work nicely with certain types: `First()` + `BehaviorSubject`, `Single()` + `AsyncSubject`, `Single()` + `Aggregate()` etc. We have covered the second of our three classifications of operators, _catamorphism_. Next we will discover more methods to add to our functional composition tool belt and also find how Rx deals with our third functional concept, _bind_. + +Consolidating data into groups and aggregates enables sensible consumption of mass data. Fast moving data can be too overwhelming for batch processing systems and human consumption. Rx provides the ability to aggregate and partition on the fly, enabling real-time reporting without the need for expensive CEP or OLAP products. diff --git a/content/12_CombiningSequences.md b/content/09_CombiningSequences.md similarity index 96% rename from content/12_CombiningSequences.md rename to content/09_CombiningSequences.md index 28d4381..a5139cd 100644 --- a/content/12_CombiningSequences.md +++ b/content/09_CombiningSequences.md @@ -871,4 +871,37 @@ areEqual.OnNext(True) areEqual completed ``` -This chapter covered a set of methods that allow us to inspect observable sequences. The result of each, generally, returns a sequence with a single value. We will continue to look at methods to reduce our sequence until we discover the elusive functional fold feature. \ No newline at end of file +This chapter covered a set of methods that allow us to inspect observable sequences. The result of each, generally, returns a sequence with a single value. We will continue to look at methods to reduce our sequence until we discover the elusive functional fold feature. + + + + +This brings us to a close on Part 2. The key takeaways from this were to allow you the reader to understand a key principal to Rx: functional composition. As we move through Part 2, examples became progressively more complex. We were leveraging the power of LINQ to chain extension methods together to compose complex queries. + +We didn't try to tackle all of the operators at once, we approached them in groups. + +- Creation +- Reduction +- Inspection +- Aggregation +- Transformation + +On deeper analysis of the operators we find that most of the operators are actuallyspecialization of the higher order functional concepts. We named them the ABC's of functional programming: + +- Anamorphism, aka: + - Ana + - Unfold + - Generate +- Bind, aka: + - Map + - SelectMany + - Projection + - Transform +- Catamorphism, aka: + - Cata + - Fold + - Reduce + - Accumulate + - Inject + +Now you should feel that you have a strong understanding of how a sequence can be manipulated. What we have learnt up to this point however can all largely be applied to `IEnumerable` sequences too. Rx can be much more complex than what many people will have dealt with in `IEnumerable` world, as we have seen with the `SelectMany` operator. In the next part of the book we will uncover features specific to the asynchronous nature of Rx. With the foundation we have built so far we should be able to tackle the far more challenging and interesting features of Rx. diff --git a/content/09_SideEffects.md b/content/09x_SideEffects.md similarity index 100% rename from content/09_SideEffects.md rename to content/09x_SideEffects.md From 884fb836d8e9fe1083cc7a7bc0262b2bf0d0327a Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Fri, 30 Jun 2023 15:54:56 +0100 Subject: [PATCH 017/142] Structurally complete Partitioning chapter --- content/04_Part2.md | 4 +- content/05_Filtering.md | 7 +- content/07_Aggregation.md | 23 +- content/08_Partitioning.md | 405 ++++++++++++++++++++--------- content/13_TimeShiftedSequences.md | 224 +--------------- 5 files changed, 308 insertions(+), 355 deletions(-) diff --git a/content/04_Part2.md b/content/04_Part2.md index 87d5031..7871ad3 100644 --- a/content/04_Part2.md +++ b/content/04_Part2.md @@ -42,7 +42,7 @@ Notes: * To numeric * Count * Sum, Average - * Min(By), Max(By) + * Min, Max * Custom * Aggregate * Scan @@ -77,4 +77,4 @@ Notes: * Sample * Throttle * Timeout - * (Buffer/Window again?) + diff --git a/content/05_Filtering.md b/content/05_Filtering.md index 621c382..fff48de 100644 --- a/content/05_Filtering.md +++ b/content/05_Filtering.md @@ -423,13 +423,14 @@ This example uses `DistinctUntilChanged` to detect when a particular vessel repo ```cs uint exampleMmsi = 235009890; -IObservable newIds = receiverHost.Messages +IObservable statusChanges = receiverHost.Messages .Where(v => v.Mmsi == exampleMmsi) .OfType() - .DistinctUntilChanged(m => m.NavigationStatus); + .DistinctUntilChanged(m => m.NavigationStatus) + .Skip(1); ``` -For example, if the vessel had repeatedly been reporting a status of `AtAnchor`, `DistinctUntilChanged` would drop each such message because the status was the same as it had previously been. But if the status were to change to `UnderwayUsingEngine`, that would cause `DistinctUntilChanged` to let the first message reporting that status through. It would then not allow any further messages through until there was another change in value, either back to `AtAnchor`, or to something else such as `Moored`. +For example, if the vessel had repeatedly been reporting a status of `AtAnchor`, `DistinctUntilChanged` would drop each such message because the status was the same as it had previously been. But if the status were to change to `UnderwayUsingEngine`, that would cause `DistinctUntilChanged` to let the first message reporting that status through. It would then not allow any further messages through until there was another change in value, either back to `AtAnchor`, or to something else such as `Moored`. (The `Skip(1)` on the end is there because `DistinctUntilChanged` always lets through the very first message it sees. We have no way of knowing whether that actually represents a change in status, but it is very likely not to: ships report their status every few minutes, and change their status much less often, so the first time we receive a report of a ship's status, it probably doesn't represent a change of status. By dropping that first item, we ensure that `statusChanges` provides notifications only when we can be certain that the status changed.) That was our quick run through of the filtering methods available in Rx. While they are relatively simple, as we have already begun to see, the power in Rx is down to the composability of its operators. diff --git a/content/07_Aggregation.md b/content/07_Aggregation.md index 365666e..0284372 100644 --- a/content/07_Aggregation.md +++ b/content/07_Aggregation.md @@ -105,7 +105,28 @@ IObservable widthOfWidestVessel = vesselDimensions `Max` returns an `IObservable` here, which will be the width of the widest vessel out of the next 10 messages that report vessel dimensions. But what if you didn't just want to see the width? What if you wanted the whole message? -**Note**: Rx defines `MinBy` and `MaxBy` methods. Rx defined these years before .NET 6.0 added [`Enumerable.MinBy`](https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable.minby) and [`Enumerable.MaxBy`](https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable.maxby), and Rx's operators are significantly different from their LINQ to Objects namesakes. The Rx ones are described in the [Partitioning chapter](./08_Partitioning.md). + +## MinBy and MaxBy + +Rx offers two subtle variations on `Min` and `Max`: `MinBy` and `MaxBy`. These are similar to the callback-based `Min` and `Max` we just saw that enable us to work with sequences of elements that are not numeric values, but which may have numeric properties. The difference is that instead of returning the minimum or maximum value, `MinBy` and `MaxBy` tell you which source element produced that value. For example, suppose that instead of just discovering the width of the widest ship, we wanted to know what ship that actually was: + +```cs +IObservable widthOfWidestVessel = vesselDimensions + .Take(10) + .MaxBy(dimensions => checked((int)(dimensions.DimensionToPort + dimensions.DimensionToStarboard))); +``` + +This is very similar to the example in the preceding section. We're working with a sequence where the element type is `IVesselDimensions`, so we've supplied a callback that extracts the value we want to use for comparison purposes. (The same callback as last time, in fact.) Just like `Max`, `MaxBy` is trying to work out which element produces the highest value when passed to this callback. It can't know which that is until the source completes—if the source hasn't completed yet, all it can know is the highest _yet_, but that might be exceeded by a future value. So as with all the other operators we've looked at in this chapter, this produces nothing until the source completes, which is why I've put a `Take(10)` in there. + +However, the type of sequence we get is different. `Max` returned an `IObservable`, because it invokes the callback for every item in the source, and then produces the highest of the values that our callback returned. But with `MaxBy`, we get back an `IObservable` because `MaxBy` tells us which source element produced that value. + +Of course, there might be more than one item that has the highest width—there might be three equally large ships, for example. With `Max` this doesn't matter because it's only trying to return the actual value: it doesn't matter how many source items had the maximum value, because it's the same value in all cases. But with `MaxBy` we get back the +original items that produce the maximum, and if there were three that all did this, we wouldn't want Rx to pick just one arbitrarily. + +So unlike the other aggregation operators we've seen so far, an observable returned by `MinBy` or `MaxBy` doesn't necessarily produce just a single value. It might produce several. You might ask whether it really is an aggregation operator, since it's not reducing the input sequence to one output. But it is reducing it to a single value: the minimum (or maximum) returned by the callback. It's just that it presents the result slightly differently—it produces a sequence based on the result of the aggregation process. You could think of it as a combination of aggregation and filtering: it performs aggregation to determine the minimum or maximum, and then filters the source sequence down just to the elements for which the callback produces that value. + +**Note**: LINQ to Objects also defines [`MinBy`](https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable.minby) and [`MaxBy`](https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable.maxby) methods, but they are slightly different. These LINQ to Objects versions do in fact arbitrarily pick a single source element—if there are multiple source values all producing the minimum (or maximum) result, LINQ to Objects gives you just one whereas Rx gives you all of them. Rx defined its versions of these operators years before .NET 6.0 added their LINQ to Objects namesakes, so if you're wondering why Rx does it differently, the real question is why did LINQ to Objects not follow Rx's precedent. Presumably the .NET runtime library implementors decided they wanted to make `Min/MaxBy` feel as similar as possible to `Min` and `Max`. + ## Simple Boolean Aggregation diff --git a/content/08_Partitioning.md b/content/08_Partitioning.md index c99f52b..86d2a69 100644 --- a/content/08_Partitioning.md +++ b/content/08_Partitioning.md @@ -5,104 +5,132 @@ title: Partitioning # Partitioning -## Partitioning +Rx can split a single sequence into multiple sequences. This can be useful for taking a single sequence and fanning out to many subscribers or perhaps taking aggregates on partitions. You may already be familiar with the standard LINQ operator `GroupBy`. Rx supports this, and also defines some of its own. -Rx also gives you the ability to partition your sequence with features like the standard LINQ operator `GroupBy`. This can be useful for taking a single sequence and fanning out to many subscribers or perhaps taking aggregates on partitions. -### MinBy and MaxBy +## GroupBy -The `MinBy` and `MaxBy` operators allow you to partition your sequence based on a key selector function. Key selector functions are common in other LINQ operators like the `IEnumerable` `ToDictionary` or `GroupBy` and the [`Distinct`}(05_Filtering.html#Distinct) method. Each method will return you the values from the key that was the minimum or maximum respectively. +The `GroupBy` operator allows you to partition your sequence just as `IEnumerable`'s `GroupBy` operator does. Once again, the open source [Ais.Net project](https://github.com/ais-dotnet) can provide a useful example. Its [`ReceiverHost` class](https://github.com/ais-dotnet/Ais.Net.Receiver/blob/15de7b2908c3bd67cf421545578cfca59b24ed2c/Solutions/Ais.Net.Receiver/Ais/Net/Receiver/Receiver/ReceiverHost.cs) makes AIS messages available through Rx, defining a `Messages` property of type `IObservable`. This is a very busy source, because it reports every message it is able to access. For example, if you connect the receiver to the AIS message source generously provided by the Norwegian government, it produces a notification every time _any_ ship broadcasts an AIS message anywhere on the Norwegian coast. There are a lot of ships moving around Norway, so this is a bit of a firehose. -```csharp -// Returns an observable sequence containing a list of zero or more elements that have a -// minimum key value. -public static IObservable> MinBy( - this IObservable source, - Func keySelector) -{...} +If we know exactly which ships we're interested in, you saw how to filter this stream in the [Filtering chapter](05_Filtering.md). But what if we don't, and yet we still want to be able to perform processing relating to individual ships? For example, perhaps we'd like to discover any time any ship changes its `NavigationStatus` (which reports values such as `AtAnchor`, or `Moored`). The [`Distinct and DistinctUntilChanged` section of the Filtering chapter](05_Filtering.md#distinct-and-distinctuntilchanged) showed how to do exactly that, but it began by filtering the stream down to message from a single ship. If we tried to use `DistinctUntilChanged` directly on the all-ships stream it will not produce meaningful information. If ship A is moored and ship B is at anchor, and if we receive alternative status messages from ship A and ship B, `DistinctUntilChanged` would report each message as a change in status, even though neither ship's status has changed. -public static IObservable> MinBy( - this IObservable source, - Func keySelector, - IComparer comparer) -{...} +We can fix this by splitting the "all the ships" sequence into lots of little sequences: -// Returns an observable sequence containing a list of zero or more elements that have a -// maximum key value. -public static IObservable> MaxBy( - this IObservable source, - Func keySelector) -{...} +```cs +IObservable> perShipObservables = receiverHost.Messages + .GroupBy(message => message.Mmsi); +``` -public static IObservable> MaxBy( - this IObservable source, - Func keySelector, - IComparer comparer) -{...} +This `perShipObservables` is an observable sequence of observable sequences. More specifically, it's an observable sequence of grouped observable sequences, but as you can see from [the definition of `IGroupedObservable`](https://github.com/dotnet/reactive/blob/95d9ea9d2786f6ec49a051c5cff47dc42591e54f/Rx.NET/Source/src/System.Reactive/Linq/IGroupedObservable.cs#L18), a grouped observable is just a specialized kind of observable: + +```cs +public interface IGroupedObservable : IObservable +{ + TKey Key { get; } +} ``` -Take note that each `Min` and `Max` operator has an overload that takes a comparer. This allows for comparing custom types or custom sorting of standard types. +Each time `receiverHost.Message` reports an AIS message, the `GroupBy` operator will invoke the callback to find out which group this item belongs to. We refer to the value returned by the callback as the _key_, and `GroupBy` remembers each key it has already seen. If this is a new key, `GroupBy` creates a new `IGroupedObservable` whose `Key` property will be the value just returned by the callback. It emits this `IGroupedObservable` from the outer observable (the one we put in `perShipObservables`) and then immediately causes that new `IGroupedObservable` to emit the element (an `IAisMessage` in this example) that produced that key. But if the callback produces a key that `GroupBy` has seen before, it finds the `IGroupedObservable` that it already produced for that key, and causes that to emit the value. -Consider a sequence from 0 to 10. If we apply a key selector that partitions the values in to groups based on their modulus of 3, we will have 3 groups of values. The values and their keys will be as follows: +So in this example, the effect is that any time the `receiverHost` reports a message from a ship with we've not previously heard from, `perShipObservables` will emit a new observable that reports message just for that ship. We could use this to report each time we learn about a new ship: -```csharp -Func keySelector = i => i % 3; +```cs +perShipObservables.Subscribe(m => Console.WriteLine($"New ship! {m.Key}")); ``` -- 0, key: 0 -- 1, key: 1 -- 2, key: 2 -- 3, key: 0 -- 4, key: 1 -- 5, key: 2 -- 6, key: 0 -- 7, key: 1 -- 8, key: 2 -- 9, key: 0 +But that doesn't do anything we couldn't have achieved with `Distinct`. The power of `GroupBy` is that we get an observable sequence for each ship here, so we can go on to set up some per-ship processing: + +```cs +IObservable> shipStatusChangeObservables = + perShipObservables.Select(shipMessages => shipMessages + .OfType() + .DistinctUntilChanged(m => m.NavigationStatus) + .Skip(1)); +``` -We can see here that the minimum key is 0 and the maximum key is 2. If therefore, we applied the `MinBy` operator our single value from the sequence would be the list of [0,3,6,9]. Applying the `MaxBy` operator would produce the list [2,5,8]. The `MinBy` and `MaxBy` operators will only yield a single value (like an `AsyncSubject`) and that value will be an `IList` with zero or more values. +This uses [`Select` (introduced in the Transformation chapter)](06_Transformation.md#select) to apply processing to each group that comes out of `perShipObservables`. Remember, each such group represents a distinct ship, so the callback we've passed to `Select` here will be invoked exactly once for each ship. This means it's now fine for us to use `DistinctUntilChanged`—the input this example supplies to `DistinctUntilChanged` is a sequence representing the messages from just one ship, so this will tell us when that ship changes it status. This is now able to do what we want because each ship gets its own instance of `DistinctUntilChanged`. -If instead of the values for the minimum/maximum key, you wanted to get the minimum value for each key, then you would need to look at `GroupBy`. +At this point we have an observable sequence of observable sequences. The outer sequence produces a nested sequence for each distinct ship that it sees, and that nested sequence will report `NavigationStatus` changes for that particular ship. -TODO: I wrote this but it was totally wrong! Rework to explain how Rx's Min/MaxBy are just not the same thing as LINQ to Objects' ones. +I'm going to make a small tweak: -### MinBy and MaxBy +```cs +IObservable shipStatusChanges = + perShipObservables.SelectMany(shipMessages => shipMessages + .OfType() + .DistinctUntilChanged(m => m.NavigationStatus) + .Skip(1)); +``` -Rx offers two subtle variations on `Min` and `Max`: `MinBy` and `MaxBy`. (These are not universally supported as LINQ operators. .NET only added these for LINQ to Objects in .NET 6.0. Rx has had them for much longer, so these were once Rx-specific operators that have now effectively been retconned as standard LINQ operators.) This example is similar to the preceding one, but replaces `Max` with `MaxBy`: +I've replaced `Select` with [`SelectMany`, also described in the Transformation chapter](06_Transformation.md#selectmany). As you may recall, `SelectMany` flattens nested observables back into a single flat sequence. You can see this reflected in the return type—now we've got just an `IObservable` instead of a sequence of sequences. + +Wait a second! Haven't I just undone the work that `GroupBy` did? I asked it to partition the events by vessel id, so why am I now recombining it back into a single, flat stream? Isn't that what I started with? + +It's true that the stream type has the same shape as my original input: this will be a single observable sequence of AIS messages. (It's a little more specialized—the element type is `IAisMessageType1to3`, because that's where I can get `NavigationStatus` from, but these all still implement `IAisMessage`.) And all the different vessels will be mixed together in this one stream. But I've not actually negated the work that `GroupBy` did. A quick look at some output shows that this is very different from the raw `receiverHost.Messages`. First, I need to attach a subscriber: ```cs -IObservable widthOfWidestVessel = vesselDimensions - .Take(10) - .MaxBy(dimensions => checked((int)(dimensions.DimensionToPort + dimensions.DimensionToStarboard))); +shipStatusChanges.Subscribe(m => + Console.WriteLine($"Ship {((IAisMessage)m).Mmsi} changed status to {m.NavigationStatus} at {DateTimeOffset.UtcNow}")); ``` -Notice that the type of sequence we get is different. `Max` returned an `IObservable`, because it invokes the callback for every item in the source, and then produces the highest of the values that our callback returned. But with `MaxBy`, we get back an `IObservable`. +If I then let the receiver run for about ten minutes, I see this output: -`MinBy` and `MaxBy` return a sequence of the same type as their inputs. Instead of returning the minimum or maximum value, they remember which particular source value caused the callback to emit the minimum or maximum value, and once the source completes, they return that source value (instead of the value the callback returned for that source value, which is what the callback-based overloads of `Min` and `Max` do). +``` +Ship 257076860 changed status to UnderwayUsingEngine at 23/06/2023 06:42:48 +00:00 +Ship 257006640 changed status to UnderwayUsingEngine at 23/06/2023 06:43:08 +00:00 +Ship 259005960 changed status to UnderwayUsingEngine at 23/06/2023 06:44:23 +00:00 +Ship 259112000 changed status to UnderwayUsingEngine at 23/06/2023 06:44:33 +00:00 +Ship 259004130 changed status to Moored at 23/06/2023 06:44:43 +00:00 +Ship 257076860 changed status to NotDefined at 23/06/2023 06:44:53 +00:00 +Ship 258024800 changed status to Moored at 23/06/2023 06:45:24 +00:00 +Ship 258006830 changed status to UnderwayUsingEngine at 23/06/2023 06:46:39 +00:00 +Ship 257428000 changed status to Moored at 23/06/2023 06:46:49 +00:00 +Ship 257812800 changed status to Moored at 23/06/2023 06:46:49 +00:00 +Ship 257805000 changed status to Moored at 23/06/2023 06:47:54 +00:00 +Ship 259366000 changed status to UnderwayUsingEngine at 23/06/2023 06:47:59 +00:00 +Ship 257076860 changed status to UnderwayUsingEngine at 23/06/2023 06:48:59 +00:00 +Ship 257020500 changed status to UnderwayUsingEngine at 23/06/2023 06:50:24 +00:00 +Ship 257737000 changed status to UnderwayUsingEngine at 23/06/2023 06:50:39 +00:00 +Ship 257076860 changed status to NotDefined at 23/06/2023 06:51:04 +00:00 +Ship 259366000 changed status to Moored at 23/06/2023 06:51:54 +00:00 +Ship 232026676 changed status to Moored at 23/06/2023 06:51:54 +00:00 +Ship 259638000 changed status to UnderwayUsingEngine at 23/06/2023 06:52:34 +00:00 +``` -`MinBy` and `MaxBy` are only available in the form where you supply a callback. The point of these operators is that they separate out the criteria for comparison from the result. (You could achieve the same effect by calling `Min` or `Max` with a custom comparer, but these operators are typically more convenient.) +The critical thing to understand here is that in the space of ten minutes, `receiverHost.Messages` produced _thousands_ of messages. (The rate varies by time of day, but it's typically over a thousand messages a minute. The code would have processed roughly ten thousand messages when I ran to produce that output.) But as you can see, `shipStatusChanges` produced just 19 messages. +This shows how Rx can tame high volume event sources in ways that are much more powerful than mere aggregation. We've not just reduced the data down to some statistical measure that can only provide an overview. Statistical measures such as averages or variance wouldn't be able to tell us anything about any particular ship. But here, every message tells us something about a particular ship. We've been able to retain that level of detail, despite the fact that we are looking at every ship. We've been able to instruct Rx to tell us any time any ship changes its status. +It probably seems like I'm making too big a deal of this, but it took so little effort to achieve this result that it can be easy to miss just how much work Rx is doing for us here. This code does all of the following: + * monitors every single ship operating in Norwegian waters + * provides per-ship information + * reports events at a rate that a human could reasonable cope with -### GroupBy +It can take thousands of messages and perform the necessary processing to find the handful that really matter to us. -The `GroupBy` operator allows you to partition your sequence just as `IEnumerable`'s `GroupBy` operator does. In a similar fashion to how the `IEnumerable` operator returns an `IEnumerable>`, the `IObservable` `GroupBy` operator returns an `IObservable>`. +This is an example of the "fanning out, and then back in again" technique I described in ['The Significance of SelectMany' in the Transformation chapter](06_Transformation.md#the-significance-of-selectmany). This code uses `GroupBy` to fan out from a single observable to multiple observables. The key to this step is to create nested observables that provide the right level of detail for the processing we want to do—in this example that level of detail was "one specific ship" but it wouldn't have to be. You could imagine wanting to group messages by region—perhaps we're interesting in comparing different ports, so we'd want to partition the source based on whichever port a vessel is closest to, or perhaps by its destination port. (AIS provides a way for vessels to broadcast their intended destination.) Having partitioned the data by whatever criteria we require, we then define the processing to be applied for each group. In this case, we just watched for changes to `NavigationStatus`. This step will typically be where the reduction in volume happens. For example, most vessels will only change their `NavigationStatus` a few times a day at most. Having then reduced the notification stream to just those events we really care about, we can combine it back into a single stream that provides the high-value notifications we want. -```csharp -// Transforms a sequence into a sequence of observable groups, -// each of which corresponds to a unique key value, -// containing all elements that share that same key value. +Now that we've seen an example, let's look at `GroupBy` in a bit more detail. It comes in a few different flavours. We just used this overload: + +```cs public static IObservable> GroupBy( this IObservable source, Func keySelector) -{...} +``` +That overload uses whatever the default comparison behaviour is for your chosen key type. In our case we used `uint` (the type of the `Mmsi` property that uniquely identifies a vessel in an AIS message), which is just a number, so it's an intrinsically comparable type. In some cases you might want non-standard comparison—for example, if you use `string` as a key, you might want to be able to specify a locale-specific case-insensitive comparison. For these scenarios, there's an overload that takes a comparer: + +```cs public static IObservable> GroupBy( this IObservable source, Func keySelector, IEqualityComparer comparer) -{...} +``` + +There are two more overloads that extend the preceding two with an `elementSelector` argument: + +```cs public static IObservable> GroupBy( this IObservable source, @@ -118,77 +146,202 @@ public static IObservable> GroupBy + shipMessages + .OfType() + .DistinctUntilChanged(m => m.NavigationStatus) + .Skip(1) + .Subscribe(m => + Console.WriteLine( + $"Ship {((IAisMessage)m).Mmsi} changed status to {m.NavigationStatus} at {DateTimeOffset.UtcNow}"))); +``` + +This may seem to have the same effect: `perShipObservables` here is the sequence returned by `GroupBy`, so it will produce a observable stream for each distinct ship. This example subscribes to that, and then uses the same operators as before on each nested sequence, but instead of collecting the results out into a single output observable with `SelectMany`, this explicitly calls `Subscribe` for each nested stream. -In a similar fashion that the `IGrouping` type extends the `IEnumerable`, the `IGroupedObservable` just extends `IObservable` by adding a `Key` property. The use of the `GroupBy` effectively gives us a nested observable sequence. +This might seem like a more natural way to work if you're unfamiliar with Rx. But although this will seem to produce he same behaviour, it introduces a problem: Rx doesn't understand that these nested subscriptions are associated with the outer subscription. That won't necessarily cause a problem in this simple example, but it could if we start using additional operators. Consider this modification: + +```cs +IDisposable sub = perShipObservables.Subscribe(shipMessages => + shipMessages + .OfType() + .DistinctUntilChanged(m => m.NavigationStatus) + .Skip(1) + .Finally(() => Console.WriteLine($"Nested sub for {shipMessages.Key} ending")) + .Subscribe(m => + Console.WriteLine( + $"Ship {((IAisMessage)m).Mmsi} changed status to {m.NavigationStatus} at {DateTimeOffset.UtcNow}"))); +``` + +I've added a `Finally` operator for the nested sequence. This enables us to invoke a callback when a sequence comes to an end for any reason. But even if we unsubscribe from the outer sequence (by calling `sub.Dispose();`) this `Finally` will never do anything. That's because Rx has no way of knowing that these inner subscriptions are part of the outer one. + +If we made the same modification to the earlier version, in which these nested sequences were collected into one output sequence by `SelectMany`, Rx understands that subscriptions to the inner sequence exist only because of the subscription to the sequence returned by `SelectMany`. (In fact, `SelectMany` is what subscribes to those inner sequences.) So if we unsubscribe from the output sequence in that example, it will correctly run any `Finally` callbacks on any inners sequences. + +More generally, if you have lots of sequences coming into existence as part of a single processing chain, it is usually better to get Rx to manage the process from end to end. + + +## Buffer + +The `Buffer` operator is useful if you need to deal with events in batches. This can be useful for performance, especially if you're storing data about events. Take the AIS example. If you wanted to log notifications to a persistent store, the cost of storing a single record is likely to be almost identical to the cost of storing several. Most storage devices operate with blocks of data often several kilobytes in size, so the amount of work required to store a single byte of data is often identical to the amount of work required to store several thousand bytes. The pattern of buffering up data until we have a reasonably large chunk of work crops up all the time in programming—the .NET runtime library's `Stream` class has built-in buffering for exactly the reason, so it's no surprise that it's built into Rx. + +Efficiency concerns are not the only reason you might want to process multiple events in once batch instead of individual ones. Suppose you wanted to generate a stream of continuously updated statistics about some source of data. By carving the source into chunks with `Buffer`, you can calculate, say, an average over the last 10 events. + +`Buffer` can partition the elements from a source stream, so it's a similar kind of operator to `GroupBy`, but there are a couple of significant differences. First, `Buffer` doesn't inspect the elements to determine how to partition them—it partitions purely based on the order in which elements emerge. Second, `Buffer` waits until it has completely filled a partition, and then presents all of the elements as an `IList`. This can make certain tasks a lot easier because everything in the partition is available for immediate use—values aren't buried in a nested `IObservable`. Third, `Buffer` offers some overloads that make it possible for a single element to turn up in more than one 'partition'. (In this case, `Buffer` is no longer strictly partitioning the data, but as you'll see, it's just a small variation on the other behaviours.) + +The simplest way to use `Buffer` is to gather up adjacent elements into chunks. (LINQ to Objects now has an equivalent operator that it calls [`Chunk`](https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable.chunk). The reason Rx didn't use the same name is that Rx introduced this operator over 10 years before LINQ to Objects did. So the real question is why LINQ to Objects chose a different name, but you'd need to ask the .NET runtime library team.) This overload of `Buffer` takes a single argument, indicating the chunk size you would like: + +```cs +public static IObservable> Buffer( + this IObservable source, + int count) +{...} +``` -To use the `GroupBy` operator to get the minimum/maximum value for each key, we can first partition the sequence and then `Min`/`Max` each partition. +This example uses it to split navigation messages into chunks of 4, and then goes on to calculate the average speed across those 4 readings: + +```cs +IObservable> navigationChunks = receiverHost.Messages + .Where(v => v.Mmsi == 235009890) + .OfType() + .Where(n => n.SpeedOverGround.HasValue) + .Buffer(4); + +IObservable recentAverageSpeed = navigationChunks + .Select(chunk => chunk.Average(n => n.SpeedOverGround.Value)); +``` + +If the source completes, and has not produced an exact multiple of the chunk size, the final chunk will be smaller. We can see this with the following more artificial example: + +```cs +Observable + .Range(1, 5) + .Buffer(2) + .Select(chunk => string.Join(", ", chunk)) + .Dump("chunks"); +``` + +As you can see from this output, the final chunk has just a single item, even though we asked for 2 at a time: + +``` +chunks-->1, 2 +chunks-->3, 4 +chunks-->5 +chunks completed +``` + +`Buffer` had no choice here because the source completed, and if it hadn't produced that final under-sized chunk, we would never have seen the final item. But apart from this end-of-source case, this overload of `Buffer` waits until it has collected enough elements to fill a buffer of the specified size before passing it on. That means that `Buffer` introduces a delay. If source items are quite far apart (e.g., when a ship is not moving it might only report AIS navigation data every few minutes) this can lead to long delays. + +In some cases, we might want to handle multiple events in a batch when a source is busy without having to wait a long time when the source is operating more slowly. This would be useful in a user interface—if you want to provide fresh information, it might be better to accept an undersized chunk so that you can provide more timely information. For these scenarios, `Buffer` offers overloads that accept a `TimeSpan`: ```csharp -var source = Observable.Interval(TimeSpan.FromSeconds(0.1)).Take(10); -var group = source.GroupBy(i => i % 3); -group.Subscribe( - grp => - grp.Min().Subscribe( - minValue => - Console.WriteLine("{0} min value = {1}", grp.Key, minValue)), - () => Console.WriteLine("Completed")); +public static IObservable> Buffer( + this IObservable source, + TimeSpan timeSpan) +{...} + +public static IObservable> Buffer( + this IObservable source, + TimeSpan timeSpan, + int count) +{...} +``` + +The first of these partitions the source based on nothing but timing. This will emit one chunk every second no matter the rate at which `source` produces value: + +```cs +IObservable> output = source.Buffer(TimeSpan.FromSeconds(1)); ``` -The code above would work, but it is not good practice to have these nested subscribe calls. We have lost control of the nested subscription, and it is hard to read. When you find yourself creating nested subscriptions, you should consider how to apply a better pattern. In this case we can use `SelectMany` which we will look at in the next chapter. +If `source` happened to emit no values during any particular chunk's lifetime, `output` will emit an empty list. + +The second overload, taking both a `timespan` and a `count`, essentially imposes two upper limits: you'll never have to wait longer than `timespan` between chunks, and you'll never receive a chunk with more than `count` elements. As with the `timespan`-only overload, this can deliver under-full and even empty chunks if the source doesn't produce elements fast enough to fill the buffer within the time specified. + + +### Overlapping buffers + +In the preceding section, I showed an example that collected chunks of 4 `IVesselNavigation` entries for a particular vessel, and calculated the average speed. This sort of averaging over multiple samples can be a useful way of smoothing out slight random variations in readings. So the goal in this case wasn't to process items in batches for efficiency—it was to enable a particular kind of calculation. + +But there was a problem with the example: because it was averaging 4 readings, it produced an output only once every 4 input messages. And since vessels might report their speed only once every few minutes if they are not moving, we might be waiting a very long time. + +There's an overload of `Buffer` that enables us to do a little better: instead of averaging the first 4 readings, and then the 4 readings after that, and then the 4 after that, and so on, we might want to calculate the average of the last 4 readings _every time the vessel reports a new reading. + +This is sometimes called a sliding window. We want to process readings 1, 2, 3, 4, then 2, 3, 4, 5, then 3, 4, 5, 6, and so on. There's an overload of buffer that can do this. This example shows the first statement from the earlier average speed example, but with one small modification: + +```cs +IObservable> navigationChunks = receiverHost.Messages + .Where(v => v.Mmsi == 235009890) + .OfType() + .Where(n => n.SpeedOverGround.HasValue) + .Buffer(4, 1); +``` + +This calls an overload of `Buffer` that takes two `int` arguments. The first does the same thing as before: it indicates that we want 4 items in each chunk. But the second argument indicates how often to produce a buffer. This says we want a buffer for every `1` element (i.e., every single element) that the source produces. (The overload that accepts just a `count` is equivalent to passing the same value for both arguments to this overload.) + +So this will wait until the source has produce 4 suitable messages (i.e., messages that satisfy the `Where` and `OfType` operators here) and will then report those first four readings in the first `IList` to emerge from `navigationChunks`. But the source only has to produce one more suitable message, and then this will emit another `IList`, containing 3 of the same value as were in the first chunk, and then the new value. When the next suitable message emerges, this will emit another list with the 3rd, 4th, 5th, and 6th messages, and so on. + +This marble diagram illustrates the behaviour for `Buffer(4, 1)`. + +TODO: MARBLE DIAGRAM! + +If we fed this into the same `recentAverageSpeed` expression as the earlier example, we'd still get no output until the 4th suitable message emerges from the source, but from then on, every single suitable message to emerge from the source will emit a new average value. These average values will still always report the average of the 4 most recently reported speeds, but we will now get these averages four times as often. + +We could also use this to improve the example earlier that reported when ships changed their `NavigationStatus`. The last example told you what state a vessel had just entered, but this raises an obvious question: what state was it in before? We can use `Buffer(2, 1)` so that each time we see a message indicating a change in status, we also have access to the preceding change in status: + +```cs +IObservable> shipStatusChanges = + perShipObservables.SelectMany(shipMessages => shipMessages + .OfType() + .DistinctUntilChanged(m => m.NavigationStatus) + .Buffer(2, 1)); + +IDisposable sub = shipStatusChanges.Subscribe(m => Console.WriteLine( + $"Ship {((IAisMessage)m[0]).Mmsi} changed status from" + + $" {m[1].NavigationStatus} to {m[1].NavigationStatus}" + + $" at {DateTimeOffset.UtcNow}"));``` +``` + +As the output shows, we can now report the previous state as well as the state just entered: + +``` +Ship 259664000 changed status from UnderwayUsingEngine to Moored at 30/06/2023 13:36:39 +00:00 +Ship 257139000 changed status from AtAnchor to UnderwayUsingEngine at 30/06/2023 13:38:39 +00:00 +Ship 257798800 changed status from UnderwayUsingEngine to Moored at 30/06/2023 13:38:39 +00:00 +``` + +This change enabled us to remove the `Skip`—the earlier example had that because we can't tell whether the first message we receive from any particular ship after startup represents a change. But since we're telling `Buffer` we want pairs of messages, it won't give us anything for any single ship until it has seen messages with two different statuses. + +You can also ask for a sliding window defined by time instead of counts using this overload: ```csharp -var source = Observable.Interval(TimeSpan.FromSeconds(0.1)).Take(10); -var group = source.GroupBy(i => i % 3); -group.SelectMany( - grp => - grp.Max() - .Select(value => new { grp.Key, value })) - .Dump("group"); -``` - -### Nested observables - -The concept of a sequence of sequences can be somewhat overwhelming at first, especially if both sequence types are `IObservable`. While it is an advanced topic, we will touch on it here as it is a common occurrence with Rx. I find it easier if I can conceptualize a scenario or example to understand concepts better. - -Examples of Observables of Observables: - -
-
Partitions of Data
-
- You may partition data from a single source so that it can easily be filtered and - shared to many sources. Partitioning data may also be useful for aggregates as we - have seen. This is commonly done with the `GroupBy` operator. -
-
Online Game servers
-
- Consider a sequence of servers. New values represent a server coming online. The - value itself is a sequence of latency values allowing the consumer to see real time - information of quantity and quality of servers available. If a server went down - then the inner sequence can signify that by completing. -
-
Financial data streams
-
- New markets or instruments may open and close during the day. These would then stream - price information and could complete when the market closes. -
-
Chat Room
-
- Users can join a chat (outer sequence), leave messages (inner sequence) and leave - a chat (completing the inner sequence). -
-
File watcher
-
- As files are added to a directory they could be watched for modifications (outer - sequence). The inner sequence could represent changes to the file, and completing - an inner sequence could represent deleting the file. -
-
- -Considering these examples, you could see how useful it could be to have the concept of nested observables. There are a suite of operators that work very well with nested observables such as `SelectMany`, `Merge` and `Switch` that we look at in future chapters. - -When working with nested observables, it can be handy to adopt the convention that a new sequence represents a creation (e.g. A new partition is created, new game host comes online, a market opens, users joins a chat, creating a file in a watched directory). You can then adopt the convention for what a completed inner sequence represents (e.g. Game host goes offline, Market Closes, User leave chat, File being watched is deleted). The great thing with nested observables is that a completed inner sequence can effectively be restarted by creating a new inner sequence. - -In this chapter we are starting to uncover the power of LINQ and how it applies to Rx. We chained methods together to recreate the effect that other methods already provide. While this is academically nice, it also allows us to starting thinking in terms of functional composition. We have also seen that some methods work nicely with certain types: `First()` + `BehaviorSubject`, `Single()` + `AsyncSubject`, `Single()` + `Aggregate()` etc. We have covered the second of our three classifications of operators, _catamorphism_. Next we will discover more methods to add to our functional composition tool belt and also find how Rx deals with our third functional concept, _bind_. - -Consolidating data into groups and aggregates enables sensible consumption of mass data. Fast moving data can be too overwhelming for batch processing systems and human consumption. Rx provides the ability to aggregate and partition on the fly, enabling real-time reporting without the need for expensive CEP or OLAP products. +public static IObservable> Buffer( + this IObservable source, + TimeSpan timeSpan, + TimeSpan timeShift) +{...} +``` + +The `timeSpan` determines the length of time covered by each window, and the `timeShift` determines the interval at which new windows are started. + + +## Window + +The `Window` operator is very similar to the `Buffer`. It can split the input into chunks based either on element count or time, and it also offers support for overlapping windows. However, it has a different return type. Whereas using `Buffer` on an `IObservable` will return an `IObservable>`, `Window` will return an `IObservable>`. This means that `Window` doesn't have to wait until it has filled a complete buffer before producing anything. + +Because `Buffer` returns an `IObservable>`, it can't produce a chunk until it has all of the elements that will go into that chunk. `IList` supports random access—you can ask it how many elements it has, and you can retrieve any element by numeric index, and we expect these operations to complete immediately. (It would be technically possible to write an implementation of `IList` representing as yet unreceived data, and to make its `Count` and indexer properties block if you try to use them before that data is available, but this would be a strange thing to do. Developers expect lists to return information immediately.) So if you write, say, `Buffer(4)`, it can't produce anything until it has all 4 items that will constitute the first chunk. + +But because `Window` returns an observable that produces a nested observable to represent each chunk, it can emit that before necessarily having all of the elements. In fact, it emits a new window as soon as it knows it will need one. If you use `Window(4, 1)` for example, the observable it returns emits its first nested observable immediately. And then as soon as the source produces its first element, that nested observable will emit that element, and then the second nested observable will be produced. We passed `1` as the 2nd argument to `Window`, so we get a new window for every element the source produces. As soon as the first element has been emitted, the next item the source emits will appear in the second window (and also the first, since we've specified overlapping windows in this case), so the second window is effectively _open_ from immediately after the emergence of the first element. So the `IObservable>` that `Window` return produces a new ``IObservable` at that point. + +Nested observables produce their items as and when they become available. They complete once `Window` knows there will be no further items in that window (i.e., at exactly the same point `Buffer` would have produced the completed `IList` for that window.) + +`Window` can seem like it is better than `Buffer` because it lets you get your hands on the individual items in a chunk the instant they are available. However, if you were doing calculations that required access to every single item in the chunk, this doesn't necessarily help you. You're not going to be able to complete your processing until you've received every item in the chunk, so you're not going to produce a final result any earlier, and your code might be more complicated because it can no longer count on having an `IList` conveniently making all of the items available at once. However, if you're calcluating some sort of aggregation over the items in a chunk, `Window` might be more efficient because it enables you to process each item as it emerges and then discard it. If a chunk is very large, `Buffer` would have to hold onto every item until the chunk completes, which might use more memory. Moreover, in cases where you don't necessarily need to see every item in a chunk before you can do something useful with those items, `Window` might enable you to avoid introducing processing delays. + +`Window` doesn't help us in the AIS `NavigationStatus` example, because the goal there was to report both the _before_ and _after_ status for each change. We can't do that until we know what the _after_ value is, so we would get no benefit from receiving the _before_ value earlier. We need the second value to do what we're trying to do, so we might as well use `Buffer` because it's easier. + +TODO: need a good example for when you might actually use `Window`. + +TODO: summary for this chapter. \ No newline at end of file diff --git a/content/13_TimeShiftedSequences.md b/content/13_TimeShiftedSequences.md index 5b65c74..9454824 100644 --- a/content/13_TimeShiftedSequences.md +++ b/content/13_TimeShiftedSequences.md @@ -4,230 +4,8 @@ title: Time-shifted sequences # Time-shifted sequences -When working with observable sequences, the time axis is an unknown quantity: when will the next notification arrive? When consuming an `IEnumerable` sequence, asynchrony is not a concern; when we call `MoveNext()`, we are blocked until the sequence yields. This chapter looks at the various methods we can apply to an observable sequence when its relationship with time is a concern. +When working with observable sequences, the time axis is an unknown quantity: when will the next notification arrive? When consuming an `IEnumerable` sequence, asynchrony is not a concern; when we call `MoveNext()`, we are blocked until the sequence yields. We've already seen a couple of operators that offer optional time-based operation: [`Buffer`](./08_Partitioning.md#buffer) and [`Window`])(08_Partitioning#window). This chapter looks at the various operators that are all about timing. -## Buffer - -Our first subject will be the `Buffer` method. In some situations, you may not want a deluge of individual notifications to process. Instead, you might prefer to work with batches of data. It may be the case that processing one item at a time is just too expensive, and the trade-off is to deal with messages in batches, at the cost of accepting a delay. - -The `Buffer` operator allows you to store away a range of values and then re-publish them as a list once the buffer is full. You can temporarily withhold a specified number of elements, stash away all the values for a given time span, or use a combination of both count and time. `Buffer` also offers more advanced overloads that we will look at in a future chapter. - -```csharp -public static IObservable> Buffer( - this IObservable source, - int count) -{...} - -public static IObservable> Buffer( - this IObservable source, - TimeSpan timeSpan) -{...} - -public static IObservable> Buffer( - this IObservable source, - TimeSpan timeSpan, - int count) -{...} -``` - -The two overloads of `Buffer` are straight forward and should make it simple for other developers to understand the intent of the code. - -```csharp -IObservable> bufferedSequence; -bufferedSequence = mySequence.Buffer(4); - -// or -bufferedSequence = mySequence.Buffer(TimeSpan.FromSeconds(1)) -``` - -For some use cases, it may not be enough to specify only a buffer size and a maximum delay period. Some systems may have a sweet spot for the size of a batch they can process, but also have a time constraint to ensure that data is not stale. In this case buffering by both time and count would be suitable. - -In this example below, we create a sequence that produces the first ten values one second apart, then a further hundred values within another second. We buffer by a maximum period of three seconds and a maximum batch size of fifteen values. - -```csharp -var idealBatchSize = 15; -var maxTimeDelay = TimeSpan.FromSeconds(3); -var source = Observable.Interval(TimeSpan.FromSeconds(1)).Take(10) - .Concat(Observable.Interval(TimeSpan.FromSeconds(0.01)).Take(100)); - -source.Buffer(maxTimeDelay, idealBatchSize) - .Subscribe( - buffer => Console.WriteLine("Buffer of {1} @ {0}", DateTime.Now, buffer.Count), - () => Console.WriteLine("Completed")); -``` - -Output: - -``` -Buffer of 3 @ 01/01/2012 12:00:03 -Buffer of 3 @ 01/01/2012 12:00:06 -Buffer of 3 @ 01/01/2012 12:00:09 -Buffer of 15 @ 01/01/2012 12:00:10 -Buffer of 15 @ 01/01/2012 12:00:10 -Buffer of 15 @ 01/01/2012 12:00:10 -Buffer of 15 @ 01/01/2012 12:00:11 -Buffer of 15 @ 01/01/2012 12:00:11 -Buffer of 15 @ 01/01/2012 12:00:11 -Buffer of 11 @ 01/01/2012 12:00:11 -``` - -Note the variations in time and buffer size. We never get a buffer containing more than fifteen elements, and we never wait more than three seconds. A practical application of this is when you are loading data from an external source into an `ObservableCollection` in a WPF application. It may be the case that adding one item at a time is just an unnecessary load on the dispatcher (especially if you are expecting over a hundred items). You may have also measured, for example that processing a batch of fifty items takes 100ms. You decide that this is the maximum amount of time you want to block the dispatcher, to keep the application responsive. This could give us two reasonable values to use: `source.Buffer(TimeSpan.FromMilliseconds(100), 50)`. This means the longest we will block the UI is about 100ms to process a batch of 50 values, and we will never have values waiting for longer than 100ms before they are processed. - -### Overlapping buffers - -`Buffer` also offers overloads to manipulate the overlapping of the buffers. The variants we have looked at so far do not overlap and have no gaps between buffers, i.e. all values from the source are propagated through. - -```csharp -public static IObservable> Buffer( - this IObservable source, - int count, - int skip) -{...} - -public static IObservable> Buffer( - this IObservable source, - TimeSpan timeSpan, - TimeSpan timeShift) -{...} -``` - -There are three interesting things you can do with overlapping buffers: - -- **Overlapping behavior**: Ensure that current buffer includes some or all values from previous buffer -- **Standard behavior**: Ensure that each new buffer only has new data -- **Skip behavior**: Ensure that each new buffer not only contains new data exclusively, but also ignores one or more values since the previous buffer - - -#### Overlapping buffers by count - -If you are specifying a buffer size as a count, then you need to use this overload. - -```csharp -public static IObservable> Buffer( - this IObservable source, - int count, - int skip) -{...} -``` - -You can apply the above scenarios as follows: - -- **Overlapping behavior**: `skip` < `count` * -- **Standard behavior**: `skip` = `count` -- **Skip behavior**: `skip` > `count` - -> *The `skip` parameter cannot be less than or equal to zero. If you want to use a value of zero (i.e. each buffer contains all values), then consider using the
`Scan` method instead with an `IList` as the accumulator. - -Let's see each of these in action. In this example, we have a source that produces values every second. We apply each of the variations of the buffer overload. - -```csharp -var source = Observable.Interval(TimeSpan.FromSeconds(1)).Take(10); -source.Buffer(3, 1) - .Subscribe( - buffer => - { - Console.WriteLine("--Buffered values"); - foreach (var value in buffer) - { - Console.WriteLine(value); - } - }, () => Console.WriteLine("Completed")); -``` - -Output - -``` ---Buffered values -0 -1 -2 ---Buffered values -1 -2 -3 ---Buffered values -2 -3 -4 ---Buffered values -3 -4 -5 -etc.... -``` - -Note that in each buffer, one value is skipped from the previous batch. If we change the `skip` parameter from 1 to 3 (same as the buffer size), we see standard buffer behavior. - -```csharp -var source = Observable.Interval(TimeSpan.FromSeconds(1)).Take(10); -source.Buffer(3, 3) - ... -``` - -Output - -``` ---Buffered values -0 -1 -2 ---Buffered values -3 -4 -5 ---Buffered values -6 -7 -8 ---Buffered values -9 -Completed -``` - -Finally, if we change the `skip` parameter to 5 (a value greater than the count of 3), we can see that two values are lost between each buffer. - -```csharp -var source = Observable.Interval(TimeSpan.FromSeconds(1)).Take(10); -source.Buffer(3, 5) - ... -``` - -Output - -``` ---Buffered values -0 -1 -2 ---Buffered values -5 -6 -7 -Completed -``` - -#### Overlapping buffers by time - -You can, of course, apply the same three behaviors with buffers defined by time instead of count. - -```csharp -public static IObservable> Buffer( - this IObservable source, - TimeSpan timeSpan, - TimeSpan timeShift) -{...} -``` - -To exactly replicate the output from our [Overlapping Buffers By Count[(#OverlappingBuffersByCount) examples, we only need to provide the following arguments: - -```csharp -var source = Observable.Interval(TimeSpan.FromSeconds(1)).Take(10); -var overlapped = source.Buffer(TimeSpan.FromSeconds(3), TimeSpan.FromSeconds(1)); -var standard = source.Buffer(TimeSpan.FromSeconds(3), TimeSpan.FromSeconds(3)); -var skipped = source.Buffer(TimeSpan.FromSeconds(3), TimeSpan.FromSeconds(5)); -``` - -As our source produces values consistently every second, we can use the same values from our count example but as seconds. ## Delay From ebf676124e2943b6ef020c0b38122ff0d48ad7f5 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Mon, 3 Jul 2023 15:35:41 +0100 Subject: [PATCH 018/142] Reworked Concat in Combining Sequences --- content/09_CombiningSequences.md | 229 +++++++++++++++++++------------ 1 file changed, 141 insertions(+), 88 deletions(-) diff --git a/content/09_CombiningSequences.md b/content/09_CombiningSequences.md index a5139cd..bbc22a0 100644 --- a/content/09_CombiningSequences.md +++ b/content/09_CombiningSequences.md @@ -2,68 +2,103 @@ title: Combining sequences --- -# Combining sequences +# Combining sequences -Data sources are everywhere, and sometimes we need to consume data from more than just a single source. Common examples that have many inputs include: multi touch surfaces, news feeds, price feeds, social media aggregators, file watchers, heart-beating/polling servers, etc. The way we deal with these multiple stimuli is varied too. We may want to consume it all as a deluge of integrated data, or one sequence at a time as sequential data. We could also get it in an orderly fashion, pairing data values from two sources to be processed together, or perhaps just consume the data from the first source that responds to the request. +Data sources are everywhere, and sometimes we need to consume data from more than just a single source. Common examples that have many inputs include: price feeds, sensor networks, news feeds, social media aggregators, file watchers, multi touch surfaces, heart-beating/polling servers, etc. The way we deal with these multiple stimuli is varied too. We may want to consume it all as a deluge of integrated data, or one sequence at a time as sequential data. We could also get it in an orderly fashion, pairing data values from two sources to be processed together, or perhaps just consume the data from the first source that responds to the request. -We have uncovered the benefits of operator composition; now we turn our focus to sequence composition. Earlier on, we briefly looked at operators that work with multiple sequences such as `SelectMany`, `TakeUntil`/`SkipUntil`, `Catch` and `OnErrorResumeNext`. These give us a hint at the potential that sequence composition can deliver. By uncovering the features of sequence composition with Rx, we find yet another layer of game changing functionality. Sequence composition enables you to create complex queries across multiple data sources. This unlocks the possibility to write some very powerful and succinct code. +Earlier chapters have also shown some examples of the _fan out and back in_ style of data processing, where we partition data, and perform processing on each partition to convert high-volume data into lower-volume higher-value events before recombining. This ability to restructure streams greatly enhances the benefits of operator composition. If Rx only enabled us to apply composition as a simple linear processing chain, it would be a good deal less powerful. Being able to pull streams apart gives us much more flexibility. So even when there is a single source of events, we often still need to combine multiple observable streams as part of our processing. Sequence composition enables you to create complex queries across multiple data sources. This unlocks the possibility to write some very powerful and succinct code. -Now we will build upon the concepts covered in the [Advanced Error Handling](11_AdvancedErrorHandling.html) chapter. There we were able to provide continuations for sequences that failed. We will now examine operators aimed at composing sequences that are still operational instead of sequences that have terminated due to an error. +We've already used [`SelectMany`](06_Transformation.md#selectmany) in earlier chapters. This is one of the fundamental operators in Rx—as we saw in the [Transformation chapter](06_Transformation.md), it's possible to build several other operators from `SelectMany`, and its ability to combine streams is part of what makes it powerful. But there are several more specialized combination operators available, which make it easier to solve certain problems than it would be using `SelectMany`. Also, some operators we've seen before (including `TakeUntil` and `Buffer`) have overloads we've not yet explored that can combine multiple sequences. -## Sequential concatenation -The first methods we will look at are those that concatenate sequences sequentially. They are very similar to the methods we have seen before for dealing with faulted sequences. +## Concat -### Concat +`Concat` is arguably the simplest way to combine sequences. It does the same thing as its namesake in other LINQ providers: it concatenates two sequences. The resulting sequence produces all of the elements from the first sequence, followed by all of the elements from the second sequence. The simplest signature for `Concat` is as follows. -The `Concat` extension method is probably the most simple composition method. It simply concatenates two sequences. Once the first sequence completes, the second sequence is subscribed to and its values are passed on through to the result sequence. It behaves just like the `Catch` extension method, but will concatenate operational sequences when they complete, instead of faulted sequences when they `OnError`. The simple signature for `Concat` is as follows. - -// Concatenates two observable sequences. Returns an observable sequence that contains the -// elements of the first sequence, followed by those of the second the sequence. +```cs public static IObservable Concat( this IObservable first, IObservable second) -{ - ... -} +``` -Usage of `Concat` is familiar. Just like `Catch` or `OnErrorResumeNext`, we pass the continuation sequence to the extension method. +Since of `Concat` is an extension method, we can invoke it as a method on any sequence, passing the second sequence in as the only argument: -```csharp -// Generate values 0,1,2 -var s1 = Observable.Range(0, 3); -// Generate values 5,6,7,8,9 -var s2 = Observable.Range(5, 5); -s1.Concat(s2).Subscribe(Console.WriteLine); +```cs +IObservable s1 = Observable.Range(0, 3); +IObservable s2 = Observable.Range(5, 5); +IObservable c = s1.Concat(s2); +IDisposable sub = c.Subscribe(Console.WriteLine, x => Console.WriteLine("Error: " + x)); ``` -Returns: +This marble diagram shows the items emerging from the two sources, `s1` and `s2`, and how `Concat` combines them into the result, `c`: +TODO: draw properly ``` -s1 --0--1--2-| -s2 -5--6--7--8--| -r --0--1--2--5--6--7--8--| +s1 0-1-2| +s2 5-6-7-8-9| +c 0-1-2-5-6-7-8-9| ``` -If either sequence was to fault so too would the result sequence. In particular, if `s1` produced an `OnError` notification, then `s2` would never be used. If you wanted `s2` to be used regardless of how s1 terminates, then `OnErrorResumeNext` would be your best option. -`Concat` also has two useful overloads. These overloads allow you to pass multiple observable sequences as either a `params` array or an `IEnumerable>`. +Rx's `Concat` does nothing with its sources until something subscribes to the `IObservable` it returns. So in this case, when we call `Subscribe` on `c` (the source returned by `Concat`) it will subscribe to its first input, `s1`, and each time that produces a value, the `c` observable will emit that same value to its subscriber. If we went on to call `sub.Dispose()` before `s1` completes, `Concat` would unsubscribe from the first source, and would never subscribe to `s2`. If `s1` were to report an error, `c` would report that same error to is subscriber, and again, it will never subscribe to `s2`. Only if `s1` completes will the `Concat` operator subscribe to `s2`, at which point it will forward any items that second input produces until either the second source completes or fails, or the application unsubscribes from the concatenated observable. -```csharp +Although Rx's `Concat` has the same logical behaviour as the [LINQ to Objects `Concat`](https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable.concat), there are some Rx-specific details to be aware of. In particular, timing is often more significant in Rx than with other LINQ implementations. For example, in Rx we distinguish between [_hot_ and _cold_ source](02_KeyTypes.md#hot-and-cold-sources). With a cold source it typically doesn't matter exactly when you subscribe, but hot sources are essentially live, so you only get notified of things that happen while you are subscribed. This can mean that hot sources might not be a good fit with `Concat` The following marble diagram illustrates a scenario in which this produces results that have the potential to surprise: + +TODO: create marble diagram like this: +``` +cold |--0--1--2-| +hot |---A---B---C---D---E-| +Concat(cold, hot) |--0--1--2--C---D---E-| +``` + +Since `Concat` doesn't subscribe to its second input until the first has finished, it won't see the first couple of items that the `hot` source would deliver to any subscribers that been listening from the start. This might not be the behaviour you would expect: it certainly doesn't look like this concatenated all of the items from the first sequence with all of the items from the second one. It looks like it missed out `A` and `B` from `hot`. + +### Marble Diagram Limitations + +This last example reveals that marble diagrams gloss over a detail: they show when a source starts, when it produces values, and when it finishes, but they ignore the fact that to be able to produce items at all, an observable source needs a subscriber. If nothing subscribes to an `IObservable`, then it doesn't really produce anything. `Concat` doesn't subscribe to its second input until the first completes, so arguably instead of the diagram above, it would be more accurate to show this: + +``` +cold |--0--1--2-| +hot |C---D---E-| +Concat(cold, hot) |--0--1--2--C---D---E-| +``` + +This makes it easier to see why `Concat` produces the output it does. But since `hot` is a hot source here, this diagram fails to convey the fact that `hot` is producing items entirely on its own schedule. In a scenario where `hot` had multiple subscribers, then the first diagram would arguably be better because it correctly reflects every event coming out of `hot` (regardless of however many listeners might be subscribed at any particular moment). But although this convention works for hot sources, it doesn't work for cold ones, which typically start producing items upon subscription. A source returned by [`Timer`](03_CreatingObservableSequences.md#observabletimer) produces items on a regular schedule, but that schedule starts at the instant when subscription occurs. That means that if there are multiple subscriptions, there are multiple schedules. Even if I have just a single `IObservable` returned by `Observable.Timer`, each distinct subscriber will get items on its own schedule—subscribers receive events at a regular interval _starting from whenever they happened subscribe_. So for cold observables, it typically makes sense to use the convention used by this second diagram, in which we're looking at the events received by one particular subscription to a source. + +Most of the time we can get away with ignoring this subtlety, quietly using whichever convention suits us. To paraphrase [Humpty Dumpty: when I use a marble diagram, it means just what I choose it to mean—neither more nor less](https://www.goodreads.com/quotes/12608-when-i-use-a-word-humpty-dumpty-said-in-rather). But when you're combining hot and cold sources together, there might not be one obviously best way to represent this in a marble diagram. We could even do something like this, where we describe the events that `hot` represents separately from the events seen by a particular subscription to `hot`. + +``` +Concat subscription to cold |--0--1--2-| +Events available through hot ---A---B---C---D---E- +Concat subscription to hot |C---D---E-| +Concat(cold, hot) |--0--1--2--C---D---E-| +``` + +We're using a distinct 'lane' in the marble diagram to represent the events seen by a particular subscription to a source. With this technique, we can also show what would happen if you pass the same cold source into `Concat` twice: + +``` +Concat 1st subscription to cold |--0--1--2-| +Concat 2nd subscription to cold |--0--1--2-| +Concat(cold, cold) |--0--1--2----0--1--2-| +``` + +This highlights the fact that that being a cold source, `cold` provides items separately to each subscription. We see the same three values emerging from the same source, but at different times. + +### Concatenating Multiple Sources + +What if you wanted to concatenate more than two sequences? `Concat` has an overloads accepting multiple observable sequences as an array. This is annotated with the `params` keyword, so you don't need to construct the array explicitly—you can just pass any number of arguments, and the C# compiler will generate the code to create the array for you. There's also an overload taking an `IEnumerable>`, in case the observables you want to concatenate are already in some collection. + +```cs public static IObservable Concat( params IObservable[] sources) -{...} public static IObservable Concat( this IEnumerable> sources) -{...} ``` -The ability to pass an `IEnumerable>` means that the multiple sequences can be lazily evaluated. The overload that takes a `params` array is well-suited to times when we know how many sequences we want to merge at compile time, whereas the `IEnumerable>` overload is a better fit when we do not know this ahead of time. +The `IEnumerable>` overload evaluates `sources` lazily. It won't begin to ask it for source observables until someone subscribes to the observable that `Concat` returns, and it only calls `MoveNext` again on the resulting `IEnumerator>` when the current source completes meaning it's ready to start on the text. To illustrate this, the following example is an iterator method that returns a sequence of sequences and is sprinkled with logging. It returns three observable sequences each with a single value [1], [2] and [3]. Each sequence returns its value on a timer delay. -In the case of the lazily evaluated `IEnumerable>`, the `Concat` method will take one sequence, subscribe until it is completed and then switch to the next sequence. To help illustrate this, we create a method that returns a sequence of sequences and is sprinkled with logging. It returns three observable sequences each with a single value [1], [2] and [3]. Each sequence returns its value on a timer delay. - -```csharp +```cs public IEnumerable> GetSequences() { Console.WriteLine("GetSequences() called"); @@ -73,7 +108,8 @@ public IEnumerable> GetSequences() { Console.WriteLine("1st subscribed to"); return Observable.Timer(TimeSpan.FromMilliseconds(500)) - .Select(i=>1L) + .Select(i => 1L) + .Finally(() => Console.WriteLine("1st finished")) .Subscribe(o); }); @@ -83,7 +119,8 @@ public IEnumerable> GetSequences() { Console.WriteLine("2nd subscribed to"); return Observable.Timer(TimeSpan.FromMilliseconds(300)) - .Select(i=>2L) + .Select(i => 2L) + .Finally(() => Console.WriteLine("2nd finished")) .Subscribe(o); }); @@ -96,6 +133,7 @@ public IEnumerable> GetSequences() Console.WriteLine("3rd subscribed to"); return Observable.Timer(TimeSpan.FromMilliseconds(100)) .Select(i=>3L) + .Finally(() => Console.WriteLine("3rd finished")) .Subscribe(o); }); @@ -103,25 +141,28 @@ public IEnumerable> GetSequences() } ``` -When we call our `GetSequences` method and concatenate the results, we see the following output using our `Dump` extension method. +We can call this `GetSequences` method and pass the results to `Concat`, and then use our `Dump` extension method to watch what happens: -```csharp +```cs GetSequences().Concat().Dump("Concat"); ``` -Output: +Here's the output: ``` GetSequences() called Yield 1st sequence 1st subscribed to Concat-->1 +1st finished Yield 2nd sequence 2nd subscribed to Concat-->2 +2nd finished Yield 3rd sequence 3rd subscribed to Concat-->3 +3rd finished GetSequences() complete Concat completed ``` @@ -135,7 +176,53 @@ s3 -3| rs-----1---2-3| ``` -You should note that the second sequence is only yielded once the first sequence has completed. To prove this, we explicitly put in a 500ms delay on producing a value and completing. Once that happens, the second sequence is then subscribed to. When that sequence completes, then the third sequence is processed in the same fashion. +You should note that once the iterator has executed its first `yield return` to return the first sequence, the iterator does not continue until the first sequence has completed. The iterator calls `Console.WriteLine` to display the text `Yield 2nd sequence` immediately after that first `yield return`, but you can see that message doesn't appear in the output until after we see the `Concat-->1` message showing the first output from `Concat`, and also the `1st finished` message, produced by the `Finally` operator, which runs only after that first sequence has completed. (The code also includes a 500ms delay so that if you run this, you can see that everything stops for a bit until that first source produces its single value then completes.) Once the first source completes, the `GetSequences` method continues (because `Concat` will ask it for the next item once the first observable source completes). When `GetSequences` provides the second sequence with another `yield return`, `Concat` subscribes to that, and again `GetSequences` makes no further progress until that second observable sequence completes. The third sequence is processed in the same fashion. + +## StartWith + +Another simple concatenation method is the `StartWith` extension method. It allows you to prefix values to a sequence. The method signature takes a `params` array of values so it is easy to pass in as many or as few values as you need. + +```csharp +// prefixes a sequence of values to an observable sequence. +public static IObservable StartWith( + this IObservable source, + params TSource[] values) +{ + ... +} +``` + +Using `StartWith` can give a similar effect to a `BehaviorSubject` by ensuring a value is provided as soon as a consumer subscribes. It is not the same as a `BehaviorSubject` however, as it will not cache the last value. + +In this example, we prefix the values -3, -2 and -1 to the sequence [0,1,2]. + +```csharp +//Generate values 0,1,2 +var source = Observable.Range(0, 3); +var result = source.StartWith(-3, -2, -1); + +result.Subscribe( + Console.WriteLine, + () => Console.WriteLine("Completed")); +``` +Output: + +``` +-3 +-2 +-1 +0 +1 +2 +Completed +``` + + +## Append + +TODO + + TODO: this has moved, and it needs some work to integrate. It's a bit of an odd one, because it doesn't really neatly fit into any of the categories. But this chapter feels less inappropriate than the rest. (It's kind of similar to thins like Concat or StartWith and Append because it generally emits everything that comes into it, but it may add something.) @@ -219,7 +306,7 @@ default42IfEmpty completed -### Repeat +### Repeat Another simple extension method is `Repeat`. It allows you to simply repeat a sequence, either a specified or an infinite number of times. @@ -262,50 +349,12 @@ Output: Completed ``` -### StartWith -Another simple concatenation method is the `StartWith` extension method. It allows you to prefix values to a sequence. The method signature takes a `params` array of values so it is easy to pass in as many or as few values as you need. - -```csharp -// prefixes a sequence of values to an observable sequence. -public static IObservable StartWith( - this IObservable source, - params TSource[] values) -{ - ... -} -``` - -Using `StartWith` can give a similar effect to a `BehaviorSubject` by ensuring a value is provided as soon as a consumer subscribes. It is not the same as a `BehaviorSubject` however, as it will not cache the last value. - -In this example, we prefix the values -3, -2 and -1 to the sequence [0,1,2]. - -```csharp -//Generate values 0,1,2 -var source = Observable.Range(0, 3); -var result = source.StartWith(-3, -2, -1); - -result.Subscribe( - Console.WriteLine, - () => Console.WriteLine("Completed")); -``` -Output: - -``` --3 --2 --1 -0 -1 -2 -Completed -``` - -## Concurrent sequences +## Concurrent sequences The next set of methods aims to combine observable sequences that are producing values concurrently. This is an important step in our journey to understanding Rx. For the sake of simplicity, we have avoided introducing concepts related to concurrency until we had a broad understanding of the simple concepts. -### Amb +### Amb The `Amb` method was a new concept to me when I started using Rx. It is a non-deterministic function, first introduced by John McCarthy and is an abbreviation of the word _Ambiguous_. The Rx implementation will return values from the sequence that is first to produce values, and will completely ignore the other sequences. In the examples below I have three sequences that all produce values. The sequences can be represented as the marble diagram below. @@ -407,7 +456,7 @@ rs-3| Take note that the inner observable sequences are not subscribed to until the outer sequence has yielded them all. This means that the third sequence is able to return values the fastest even though there are two sequences yielded one second before it (due to the `Thread.Sleep`). -### Merge +### Merge The `Merge` extension method does a primitive combination of multiple concurrent sequences. As values from any sequence are produced, those values become part of the result sequence. All sequences need to be of the same type, as per the previous methods. In this diagram, we can see `s1` and `s2` producing values concurrently and the values falling through to the result sequence as they occur. @@ -525,7 +574,7 @@ s3 -3| rs---2-1-----3| ``` -### Switch +### Switch Receiving all values from a nested observable sequence is not always what you need. In some scenarios, instead of receiving everything, you may only want the values from the most recent inner sequence. A great example of this is live searches. As you type, the text is sent to a search service and the results are returned to you as an observable sequence. Most implementations have a slight delay before sending the request so that unnecessary work does not happen. Imagine I want to search for "Intro to Rx". I quickly type in "Into to" and realize I have missed the letter 'r'. I stop briefly and change the text to "Intro ". By now, two searches have been sent to the server. The first search will return results that I do not want. Furthermore, if I were to receive data for the first search merged together with results for the second search, it would be a very odd experience for the user. This scenario fits perfectly with the `Switch` method. @@ -581,11 +630,11 @@ RS --1--1-2-23--3| Also note that, even though the results from S1 and S2 are still being pushed, they are ignored as their subscription has been disposed of. This eliminates the issue of overlapping values from the nested sequences. -## Pairing sequences +## Pairing sequences The previous methods allowed us to flatten multiple sequences sharing a common type into a result sequence of the same type. These next sets of methods still take multiple sequences as an input, but attempt to pair values from each sequence to produce a single value for the output sequence. In some cases, they also allow you to provide sequences of different types. -### CombineLatest +### CombineLatest The `CombineLatest` extension method allows you to take the most recent value from two sequences, and with a given function transform those into a value for the result sequence. Each input sequence has the last value cached like `Replay(1)`. Once both sequences have produced at least one value, the latest output from each sequence is passed to the `resultSelector` function every time either sequence produces a value. The signature is as follows. @@ -647,7 +696,7 @@ var systemStatus = webServerStatus .StartWith(false); ``` -### Zip +### Zip The `Zip` extension method is another interesting merge feature. Just like a zipper on clothing or a bag, the `Zip` method brings together two sequences of values as pairs; two by two. Things to note about the `Zip` function is that the result sequence will complete when the first of the sequences complete, it will error if either of the sequences error and it will only publish once it has a pair of fresh values from each source sequence. So if one of the source sequences publishes values faster than the other sequence, the rate of publishing will be dictated by the slower of the two sequences. @@ -757,7 +806,7 @@ public static IObservable Zip( This allows us to zip sequences from both `IEnumerable` and `IObservable` paradigms! -### And-Then-When +### And-Then-When If `Zip` only taking two sequences as an input is a problem, then you can use a combination of the three `And`/`Then`/`When` methods. These methods are used slightly differently from most of the other Rx methods. Out of these three, `And` is the only extension method to `IObservable`. Unlike most Rx operators, it does not return a sequence; instead, it returns the mysterious type `Pattern`. The `Pattern` type is public (obviously), but all of its properties are internal. The only two (useful) things you can do with a `Pattern` are invoking its `And` or `Then` methods. The `And` method called on the `Pattern` returns a `Pattern`. On that type, you will also find the `And` and `Then` methods. The generic `Pattern` types are there to allow you to chain multiple `And` methods together, each one extending the generic type parameter list by one. You then bring them all together with the `Then` method overloads. The `Then` methods return you a `Plan` type. Finally, you pass this `Plan` to the `Observable.When` method in order to create your sequence. @@ -820,7 +869,7 @@ As we delve deeper into the depths of what the Rx libraries provide us, we can s TODO: Was in Inspection but I think this might go more naturally after Zip -## SequenceEqual +## SequenceEqual Finally `SequenceEqual` extension method is perhaps a stretch to put in a chapter that starts off talking about catamorphism and fold, but it does serve well for the theme of inspection. This method allows us to compare two observable sequences. As each source sequence produces values, they are compared to a cache of the other sequence to ensure that each sequence has the same values in the same order and that the sequences are the same length. This means that the result sequence can return `false` as soon as the source sequences produce diverging values, or `true` when both sources complete with the same values. @@ -905,3 +954,7 @@ On deeper analysis of the operators we find that most of the operators are actua - Inject Now you should feel that you have a strong understanding of how a sequence can be manipulated. What we have learnt up to this point however can all largely be applied to `IEnumerable` sequences too. Rx can be much more complex than what many people will have dealt with in `IEnumerable` world, as we have seen with the `SelectMany` operator. In the next part of the book we will uncover features specific to the asynchronous nature of Rx. With the foundation we have built so far we should be able to tackle the far more challenging and interesting features of Rx. + + + +TODO: `Buffer`, `Window`? \ No newline at end of file From 924cd6e377f1f33e415b3ec395ed1e6d6cdcca7c Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Fri, 7 Jul 2023 16:49:28 +0100 Subject: [PATCH 019/142] Basic structure of Combining Sequences --- content/03_CreatingObservableSequences.md | 2 +- content/04_Part2.md | 9 + content/08_Partitioning.md | 2 +- content/09_CombiningSequences.md | 588 ++++++++++------------ content/C_AlgebraicUnderpinnings | 34 ++ 5 files changed, 310 insertions(+), 325 deletions(-) diff --git a/content/03_CreatingObservableSequences.md b/content/03_CreatingObservableSequences.md index d86d1d3..d81d58c 100644 --- a/content/03_CreatingObservableSequences.md +++ b/content/03_CreatingObservableSequences.md @@ -884,7 +884,7 @@ So although this can be a convenient way to bring sequences of data into an Rx w Rx provides support for the ancient [.NET Asynchronous Programming Model (APM)](https://learn.microsoft.com/en-us/dotnet/standard/asynchronous-programming-patterns/asynchronous-programming-model-apm). Back in .NET 1.0, this was the only pattern for representing asynchronous operations. It was superseded in 2010 when .NET 4.0 introduced the [Task-based Asynchronous Pattern (TAP)](https://learn.microsoft.com/en-us/dotnet/standard/asynchronous-programming-patterns/task-based-asynchronous-pattern-tap). The old APM offers no benefits over the TAP. Moreover, C#'s `async` and `await` keywords (and equivalents in other .NET languages) only support the TAP, meaning that the APM is best avoided. However, the TAP was fairly new back in 2011 when Rx 1.0 was released, so it offered adapters for presenting an APM implementation as an `IObservable`. -Nobody should be using the APM today, but for completeness (and just in case you have to use an ancient library that only offers the APM) I will provide a very brief explantion. +Nobody should be using the APM today, but for completeness (and just in case you have to use an ancient library that only offers the APM) I will provide a very brief explanation. The result of the call to `Observable.FromAsyncPattern` does _not_ return an observable sequence. It returns a delegate that returns an observable sequence. (So it is essentially a factory factory) The signature for this delegate will match the generic arguments of the call to `FromAsyncPattern`, except that the return type will be wrapped in an observable sequence. The following example wraps the `Stream` class's `BeginRead`/`EndRead` methods (which are an implementation of the APM). diff --git a/content/04_Part2.md b/content/04_Part2.md index 7871ad3..ed2ee5f 100644 --- a/content/04_Part2.md +++ b/content/04_Part2.md @@ -64,6 +64,10 @@ Notes: * Switch * TakeUntil (the flavour that accepts an IObservable as its cut-off) * And/Then/When + +Does Part 3 start here? The existing book has the rather nondescriptive "Taming the sequence" title, and +I'd prefer to come up with something a bit more meaningful. + * Error Handling * Catch * Finally @@ -78,3 +82,8 @@ Notes: * Throttle * Timeout +TODO: side effects? + +TODO: where does Defer fit in? I use it in ch03. I refer to it in Combining Sequences. But it's not clear where its home is. + +TODO: where does integration with Task fit in? Chapter 3's From Task section talks about the ToObservable extension method. The chapter currently called "Leaving the Monad" talks about ToTask. What about ToAsync and FromAsync? Chapter 5 mentions in passing that you can `await` any sequence in the ElementAt section, but I don't think I mention that any point earlier than that. \ No newline at end of file diff --git a/content/08_Partitioning.md b/content/08_Partitioning.md index 86d2a69..46cbc9e 100644 --- a/content/08_Partitioning.md +++ b/content/08_Partitioning.md @@ -302,7 +302,7 @@ IObservable> shipStatusChanges = IDisposable sub = shipStatusChanges.Subscribe(m => Console.WriteLine( $"Ship {((IAisMessage)m[0]).Mmsi} changed status from" + $" {m[1].NavigationStatus} to {m[1].NavigationStatus}" + - $" at {DateTimeOffset.UtcNow}"));``` + $" at {DateTimeOffset.UtcNow}")); ``` As the output shows, we can now report the previous state as well as the state just entered: diff --git a/content/09_CombiningSequences.md b/content/09_CombiningSequences.md index bbc22a0..ce197bd 100644 --- a/content/09_CombiningSequences.md +++ b/content/09_CombiningSequences.md @@ -10,8 +10,11 @@ Earlier chapters have also shown some examples of the _fan out and back in_ styl We've already used [`SelectMany`](06_Transformation.md#selectmany) in earlier chapters. This is one of the fundamental operators in Rx—as we saw in the [Transformation chapter](06_Transformation.md), it's possible to build several other operators from `SelectMany`, and its ability to combine streams is part of what makes it powerful. But there are several more specialized combination operators available, which make it easier to solve certain problems than it would be using `SelectMany`. Also, some operators we've seen before (including `TakeUntil` and `Buffer`) have overloads we've not yet explored that can combine multiple sequences. +## Sequential Combination -## Concat +We'll start with the simplest kind of combining operator, which do not attempt concurrent combination. They deal with one source sequence at a time. + +### Concat `Concat` is arguably the simplest way to combine sequences. It does the same thing as its namesake in other LINQ providers: it concatenates two sequences. The resulting sequence produces all of the elements from the first sequence, followed by all of the elements from the second sequence. The simplest signature for `Concat` is as follows. @@ -53,7 +56,7 @@ Concat(cold, hot) |--0--1--2--C---D---E-| Since `Concat` doesn't subscribe to its second input until the first has finished, it won't see the first couple of items that the `hot` source would deliver to any subscribers that been listening from the start. This might not be the behaviour you would expect: it certainly doesn't look like this concatenated all of the items from the first sequence with all of the items from the second one. It looks like it missed out `A` and `B` from `hot`. -### Marble Diagram Limitations +#### Marble Diagram Limitations This last example reveals that marble diagrams gloss over a detail: they show when a source starts, when it produces values, and when it finishes, but they ignore the fact that to be able to produce items at all, an observable source needs a subscriber. If nothing subscribes to an `IObservable`, then it doesn't really produce anything. `Concat` doesn't subscribe to its second input until the first completes, so arguably instead of the diagram above, it would be more accurate to show this: @@ -84,7 +87,7 @@ Concat(cold, cold) |--0--1--2----0--1--2-| This highlights the fact that that being a cold source, `cold` provides items separately to each subscription. We see the same three values emerging from the same source, but at different times. -### Concatenating Multiple Sources +#### Concatenating Multiple Sources What if you wanted to concatenate more than two sequences? `Concat` has an overloads accepting multiple observable sequences as an array. This is annotated with the `params` keyword, so you don't need to construct the array explicitly—you can just pass any number of arguments, and the C# compiler will generate the code to create the array for you. There's also an overload taking an `IEnumerable>`, in case the observables you want to concatenate are already in some collection. @@ -178,152 +181,102 @@ rs-----1---2-3| You should note that once the iterator has executed its first `yield return` to return the first sequence, the iterator does not continue until the first sequence has completed. The iterator calls `Console.WriteLine` to display the text `Yield 2nd sequence` immediately after that first `yield return`, but you can see that message doesn't appear in the output until after we see the `Concat-->1` message showing the first output from `Concat`, and also the `1st finished` message, produced by the `Finally` operator, which runs only after that first sequence has completed. (The code also includes a 500ms delay so that if you run this, you can see that everything stops for a bit until that first source produces its single value then completes.) Once the first source completes, the `GetSequences` method continues (because `Concat` will ask it for the next item once the first observable source completes). When `GetSequences` provides the second sequence with another `yield return`, `Concat` subscribes to that, and again `GetSequences` makes no further progress until that second observable sequence completes. The third sequence is processed in the same fashion. -## StartWith - -Another simple concatenation method is the `StartWith` extension method. It allows you to prefix values to a sequence. The method signature takes a `params` array of values so it is easy to pass in as many or as few values as you need. - -```csharp -// prefixes a sequence of values to an observable sequence. -public static IObservable StartWith( - this IObservable source, - params TSource[] values) -{ - ... -} -``` -Using `StartWith` can give a similar effect to a `BehaviorSubject` by ensuring a value is provided as soon as a consumer subscribes. It is not the same as a `BehaviorSubject` however, as it will not cache the last value. +### Prepend -In this example, we prefix the values -3, -2 and -1 to the sequence [0,1,2]. +There's one particular scenario that `Concat` supports, but in a slightly cumbersome way. It can sometimes be useful to make a sequence that always emits some initial value immediately. Take the example I've been using a lot in this book, where ships transmit AIS messages to report their location and other information: in some applications you might not want to wait until the ship happens next to transmit a message. You could imagine an application that records the last known location of any vessel. This would make it possible for the application to offer, say, an `IObservable` which instantly reports the last known information upon subscription, and which then goes on to supply any newer messages if the vessel produces any. -```csharp -//Generate values 0,1,2 -var source = Observable.Range(0, 3); -var result = source.StartWith(-3, -2, -1); +How would we implement this? We want initially cold-source-like behaviour, but transitioning into hot. So we could just concatenate two sources. We could use [`Observable.Return`](03_CreatingObservableSequences.md#observablereturn) to create a single-element cold source, and then concatenate that with the live stream: -result.Subscribe( - Console.WriteLine, - () => Console.WriteLine("Completed")); -``` -Output: +```cs +IVesselNavigation lastKnown = ais.GetLastReportedNavigationForVessel(mmsi); +IObservable live = ais.GetNavigationMessagesForVessel(mmsi); +IObservable lastKnownThenLive = Observable.Concat( + Observable.Return(lastKnown), live); ``` --3 --2 --1 -0 -1 -2 -Completed -``` - - -## Append - -TODO - - - -TODO: this has moved, and it needs some work to integrate. It's a bit of an odd one, because it doesn't really neatly fit into any of the categories. But this chapter feels less inappropriate than the rest. (It's kind of similar to thins like Concat or StartWith and Append because it generally emits everything that comes into it, but it may add something.) - - +This is a common enough requirement that Rx supplies `Prepend` that has a similar effect. We can replace the final line with: -## DefaultIfEmpty +```cs +IObservable lastKnownThenLive = live.Prepend(lastKnown); +``` -The `DefaultIfEmpty` extension method will return a single value if the source sequence is empty. Depending on the overload used, it will either be the value provided as the default, or `Default(T)`. `Default(T)` will be the zero value for _struct_ types and will be `null` for classes. If the source is not empty then all values will be passed straight on through. +This observable will do exactly the same thing: subscribers will immediately receive the `lastKnown`, and then if the vessel should emit further navigation messages, they will receive those too. By the way, for this scenario you'd probably also want to ensure that the look up of the "last known" message happens as late as possible. We can delay this until the point of subscription by using `Defer`: -In this example the source produces values, so the result of `DefaultIfEmpty` is just the source. +```cs +public static IObservable GetLastKnownAndSubsequenceNavigationForVessel(uint mmsi) +{ + return Observable.Defer(() => + { + // This lambda will run each time someone subscribes. + IVesselNavigation lastKnown = ais.GetLastReportedNavigationForVessel(mmsi); + IObservable live = ais.GetNavigationMessagesForVessel(mmsi); -```csharp -var subject = new Subject(); + return live.Prepend(lastKnown); + } +} +``` -subject.Subscribe( - Console.WriteLine, - () => Console.WriteLine("Subject completed")); +`StartWith` might remind you of [`BehaviorSubject`](03_CreatingObservableSequences.md#behaviorsubject), because that also ensures that consumers receive a value as soon as they subscribe. It's not quite the same—`BehaviorSubject` caches the last value its own source emits. You might thank that would make it a better way to implement this vessel navigation example. However, since this example is able to return a source for any vessel (the `mmsi` argument is a [Maritime Mobile Service Identity](https://en.wikipedia.org/wiki/Maritime_Mobile_Service_Identity) uniquely identifying a vessel) it would need to keep a `BehaviorSubject` running for every single vessel you were interested in, which might be impractical. -var defaultIfEmpty = subject.DefaultIfEmpty(); +`BehaviorSubject` can hold onto only one value, which is fine for this AIS scenario, and `Prepend` shares this limitation. But what if you need a source to begin with some particular sequence? -defaultIfEmpty.Subscribe( - b => Console.WriteLine("defaultIfEmpty value: {0}", b), - () => Console.WriteLine("defaultIfEmpty completed")); -subject.OnNext(1); -subject.OnNext(2); -subject.OnNext(3); +### StartWith -subject.OnCompleted(); -``` +`StartWith` is a generalization of `Prepend` that enables us to provide any number of values to emit immediately upon subscription. As with `Prepend`, it will then go on to forward any further notifications that emerge from the source. -Output: +As you can see from its signature, this method takes a `params` array of values so you can pass in as many or as few values as you need: +```cs +// prefixes a sequence of values to an observable sequence. +public static IObservable StartWith( + this IObservable source, + params TSource[] values) ``` -1 -defaultIfEmpty value: 1 -2 -defaultIfEmpty value: 2 -3 -defaultIfEmpty value: 3 -Subject completed -defaultIfEmpty completed -``` - -If the source is empty, we can use either the default value for the type (i.e. 0 for int) or provide our own value in this case 42. -```csharp -var subject = new Subject(); - -subject.Subscribe( - Console.WriteLine, - () => Console.WriteLine("Subject completed")); +There's also an overload that accepts an `IEnumerable`. Note that Rx will _not_ defer its enumeration of this. `StartWith` immediately converts the `IEnumerable` into an array before returning. -var defaultIfEmpty = subject.DefaultIfEmpty(); +`StartsWith` is not a common LINQ operator, and its existence is peculiar to Rx. If you imagine what `StartsWith` would look like in LINQ to Objects, it would not be meaningfully different from [`Concat`](https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable.concat). There's a difference in Rx because `StartsWith` effectively bridges between _pull_ and _push_ worlds. It effectively converts the items we supply into an observable, and it then concatenates the `source` argument onto that. -defaultIfEmpty.Subscribe( - b => Console.WriteLine("defaultIfEmpty value: {0}", b), - () => Console.WriteLine("defaultIfEmpty completed")); +### Append -var default42IfEmpty = subject.DefaultIfEmpty(42); +The existence of `Prepend` might lead you to wonder whether there is an `Append` for adding a single item onto the end of any `IObservable`. After all, this is a common LINQ operator; [LINQ to Objects has an `Append` implementation](https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable.append), for example. And Rx does indeed supply such a thing: -default42IfEmpty.Subscribe( - b => Console.WriteLine("default42IfEmpty value: {0}", b), - () => Console.WriteLine("default42IfEmpty completed")); - -subject.OnCompleted(); +```cs +IObservable oneMore = arguments.Append("And another thing..."); ``` -Output: +There is no corresponding `EndWith`. Apparently there's not much demand—the [Rx repository](https://github.com/dotnet/reactive) has not yet had a feature request. So although the symmetry of `Prepend` and `Append` does suggest that there could be a similar symmetry between `StartWith` and an as-yet-hypothetical `EndWith`, the absence of this counterpart doesn't seem to have caused any problems. There's an obvious value to being able to create observable sources that always immediately produce a useful output; it's not clear what `EndWith` would be useful for beside satisfying a craving for symmetry. -``` -Subject completed -defaultIfEmpty value: 0 -defaultIfEmpty completed -default42IfEmpty value: 42 -default42IfEmpty completed -``` +### DefaultIfEmpty +The next operator we'll examine doesn't strictly performs sequential combination. However, it's a very close relative of `Append` and `Prepend`. Like those operators, this will emit everything their source does. And like those operators, `DefaultIfEmpty` takes one additional item. The difference is that it won't always emit that additional item. +Whereas `Prepend` emits its additional item at the start, and `Append` emits its additional item at the end, `DefaultIfEmpty` emits the additional item only if the source completes without producing anything. So this provides a way of guaranteeing that an observable will not be empty. +You don't have to supply `DefaultIfEmpty` with a value. If you use the overload in which you supply no such value, it will just use `default(T)`. This will be a zero-like value for _struct_ types and `null` for reference types. ### Repeat -Another simple extension method is `Repeat`. It allows you to simply repeat a sequence, either a specified or an infinite number of times. - -```csharp -// Repeats the observable sequence indefinitely and sequentially. -public static IObservable Repeat( - this IObservable source) -{...} +The final operator that combines sequences sequentially is `Repeat`. It allows you to simply repeat a sequence. It offers overloads where you can specify the number of times to repeat the input, and one that repeats infinitely: +```cs //Repeats the observable sequence a specified number of times. public static IObservable Repeat( this IObservable source, int repeatCount) -{...} + +// Repeats the observable sequence indefinitely and sequentially. +public static IObservable Repeat( + this IObservable source) ``` -If you use the overload that loops indefinitely, then the only way the sequence will stop is if there is an error or the subscription is disposed of. The overload that specifies a repeat count will stop on error, un-subscription, or when it reaches that count. This example shows the sequence [0,1,2] being repeated three times. +`Repeat` resubscribes to the source for each repetition. + +If you use the overload that repeats indefinitely, then the only way the sequence will stop is if there is an error or the subscription is disposed of. The overload that specifies a repeat count will stop on error, un-subscription, or when it reaches that count. This example shows the sequence [0,1,2] being repeated three times. ```csharp var source = Observable.Range(0, 3); @@ -352,22 +305,31 @@ Completed ## Concurrent sequences -The next set of methods aims to combine observable sequences that are producing values concurrently. This is an important step in our journey to understanding Rx. For the sake of simplicity, we have avoided introducing concepts related to concurrency until we had a broad understanding of the simple concepts. +We'll now move on to operators for combining observable sequences that are producing values concurrently. ### Amb -The `Amb` method was a new concept to me when I started using Rx. It is a non-deterministic function, first introduced by John McCarthy and is an abbreviation of the word _Ambiguous_. The Rx implementation will return values from the sequence that is first to produce values, and will completely ignore the other sequences. In the examples below I have three sequences that all produce values. The sequences can be represented as the marble diagram below. +`Amb` is a strangely named operator. It's short for _ambiguous_, but that doesn't tell us much more than `Amb`. If you're curious about the name you can read about the [origins of `Amb` in Appendix C](C_AlgebraicUnderpinnings#amb), but for now, let's look at what it actually does. +Rx's `Amb` takes any number of `IObservable` sources as inputs, and waits to see which, if any, first produces some sort of output. As soon as this happens, it immediately unsubscribes from all of the other sources, and forwards all notifications from the source that reacted first. + +Why is that useful? + +A common use case for `Amb` is when you want to produce some sort of result as quickly as possible, and you have multiple options for obtaining that result but you don't know in advance which will be fastest. Perhaps there are multiple servers that could all potentially give you the answer you want, and it's impossible to predict which will have the lowest response time. You could send requests to all of them, and then just use the first to respond. If you model each individual request as its own `IObservable`, `Amb` can handle this for you. Note that this isn't very efficient: you're asking several servers all to do the same work, and you're going to discard the results from most of them. (Since `Amb` unsubscribes from all the sources it's not going to use as soon as the first reacts, it's possible that you might be able to send a message to all the other servers to cancel the request. But this is still somewhat wasteful.) But there may be scenarios in which timeliness is crucial, and for those cases it might be worth tolerating a bit of wasted effort to produce faster results. + +To illustrate `Amb`'s behaviour, here's a marble diagram showing three sequences, `s1`, `s2`, and `s3`, each able to produce a sequence values. The line labelled `r` shows the result of passing all three sequences into `Amb`. As you can see, `r` provides exactly the same notifications as `s1`. This is because in this example, `s1` was the first sequence to produce a value. + +TODO: draw properly. ``` -s1 -1--1--| -s2 --2--2--| -s3 ---3--3--| -r -1--1--| +s1 -1---2----3--4| +s2 --99--88-| +s3 ----8---7--6---| +r -1---2----3--4| ``` -The code to produce the above is as follows. +This code creates exactly the situation described in that marble diagram, to verify that this is indeed how `Amb` behaves: -```csharp +```cs var s1 = new Subject(); var s2 = new Subject(); var s3 = new Subject(); @@ -379,13 +341,16 @@ result.Subscribe( () => Console.WriteLine("Completed")); s1.OnNext(1); -s2.OnNext(2); -s3.OnNext(3); -s1.OnNext(1); -s2.OnNext(2); -s3.OnNext(3); -s1.OnCompleted(); +s2.OnNext(99); +s3.OnNext(8); +s1.OnNext(2); +s2.OnNext(88); +s3.OnNext(7); s2.OnCompleted(); +s1.OnNext(3); +s3.OnNext(6); +s1.OnNext(4); +s1.OnCompleted(); s3.OnCompleted(); ``` @@ -393,22 +358,22 @@ Output: ``` 1 -1 +2 +3 +4 Completed ``` -If we comment out the first `s1.OnNext(1);` then s2 would produce values first and the marble diagram would look like this. +If we changed the order so that `s2.OnNext(99)` came before the call to `s1.OnNext(1);` then s2 would produce values first and the marble diagram would look like this. ``` -s1 ---1--| -s2 -2--2--| -s3 --3--3--| -r -2--2--| +s1 --1--2----3--4| +s2 99----88--| +s3 ---8-----7--6--| +r 99----88-| ``` -The `Amb` feature can be useful if you have multiple cheap resources that can provide values, but latency is widely variable. For an example, you may have servers replicated around the world. Issuing a query is cheap for both the client to send and for the server to respond, however due to network conditions the latency is not predictable and varies considerably. Using the `Amb` operator, you can send the same request out to many servers and consume the result of the first that responds. - -There are other useful variants of the `Amb` method. We have used the overload that takes a `params` array of sequences. You could alternatively use it as an extension method and chain calls until you have included all the target sequences (e.g. s1.Amb(s2).Amb(s3)). Finally, you could pass in an `IEnumerable>`. +There are a few overloads of `Amb`. The preceding example used the overload that takes a `params` array of sequences. There's also an overload that takes exactly two sources, avoiding the array allocation that occurs with `params`. Finally, you could pass in an `IEnumerable>`. (Note that there are no overloads that take an `IObservable>`. `Amb` requires all of the source observables it monitors to be supplied up front.) ```csharp // Propagates the observable sequence that reacts first. @@ -445,7 +410,7 @@ Amb-->3 Amb completed ``` -Marble: +Here is the marble diagram illustrating how this code behaves: ``` s1-----1| @@ -458,7 +423,11 @@ Take note that the inner observable sequences are not subscribed to until the ou ### Merge -The `Merge` extension method does a primitive combination of multiple concurrent sequences. As values from any sequence are produced, those values become part of the result sequence. All sequences need to be of the same type, as per the previous methods. In this diagram, we can see `s1` and `s2` producing values concurrently and the values falling through to the result sequence as they occur. +The `Merge` extension method takes multiple sequences as its input. Any time any of those input sequences produces a value, the observable returned by `Merge` produces that same value. If the input sequences produce values at the same time on different threads, `Merge` handles this safely, ensuring that it delivers items one at a time. + +Since `Merge` returns a single observable sequence that includes all of the values from all of its input sequences, there's a sense in which it is similar to `Concat`. But whereas `Concat` waits until each input sequence completes before moving onto the next, `Merge` supports concurrently active sequences. As soon as you subscribe to the observable returned by `Merge`, it immediately subscribes to all of its inputs, forwarding everything any of them produces. This marble diagram shows two sequences, `s1` and `s2`, running concurrently and `r` shows the effect of combining these with `Merge`—the values from both source sequences emerge from the merged sequence. + +TODO: draw. ``` s1 --1--1--1--| @@ -466,53 +435,25 @@ s2 ---2---2---2| r --12-1-21--2| ``` -The result of a `Merge` will complete only once all input sequences complete. By contrast, the `Merge` operator will error if any of the input sequences terminates erroneously. +The result of a `Merge` will complete only once all input sequences complete. However, the `Merge` operator will error if any of the input sequences terminates erroneously (at which point it will unsubscribe from all its other inputs). -```csharp -// Generate values 0,1,2 -var s1 = Observable.Interval(TimeSpan.FromMilliseconds(250)) - .Take(3); - -// Generate values 100,101,102,103,104 -var s2 = Observable.Interval(TimeSpan.FromMilliseconds(150)) - .Take(5) - .Select(i => i + 100); - -s1.Merge(s2) - .Subscribe( - Console.WriteLine, - ()=>Console.WriteLine("Completed")); -``` - -The code above could be represented by the marble diagram below. In this case, each unit of time is 50ms. As both sequences produce a value at 750ms, there is a race condition and we cannot be sure which value will be notified first in the result sequence (sR). - -``` -s1 ----0----0----0| -s2 --0--0--0--0--0| -sR --0-00--00-0--00| -``` +If you read the [Creating Observables chapter](03_CreatingObservableSequences.md), you've already seen one example of `Merge`. I used it to combine the individual sequences representing the various events provided by a `FileSystemWatcher` into a single stream at the end of the ['Representing Filesystem Events in Rx'](03_CreatingObservableSequences.md#representing-filesystem-events-in-rx) section. As another example, let's look at AIS once again. There is no publicly available single global source that can provide all AIS messages across the entire globe as an `IObservable`. Any single source is likely to cover just one area, or maybe even just a single AIS receiver. With `Merge`, it's straightforward to combine these into a single source: -Output: +```cs +IObservable station1 = aisStations.GetMessagesFromStation("AdurStation"); +IObservable station2 = aisStations.GetMessagesFromStation("EastbourneStation"); -``` -100 -0 -101 -102 -1 -103 -104 // Note this is a race condition. 2 could be -2 // published before 104. +IObservable allMessages = station1.Merge(station2); ``` -You can chain this overload of the `Merge` operator to merge multiple sequences. `Merge` also provides numerous other overloads that allow you to pass more than two source sequences. You can use the static method `Observable.Merge` which takes a `params` array of sequences that is known at compile time. You could pass in an `IEnumerable` of sequences like the `Concat` method. `Merge` also has the overload that takes an `IObservable>`, a nested observable. To summarize: +If you want to combine more than two sources, you have a few options:: - Chain `Merge` operators together e.g. `s1.Merge(s2).Merge(s3)` - Pass a `params` array of sequences to the `Observable.Merge` static method. e.g. `Observable.Merge(s1,s2,s3)` - Apply the `Merge` operator to an `IEnumerable>`. - Apply the `Merge` operator to an `IObservable>`. -Merge overloads: +The overloads look like this: ```csharp /// Merges two observable sequences into a single observable sequence. @@ -540,7 +481,16 @@ public static IObservable Merge( {...} ``` -For merging a known number of sequences, the first two operators are effectively the same thing and which style you use is a matter of taste: either provide them as a `params` array or chain the operators together. The third and fourth overloads allow to you merge sequences that can be evaluated lazily at run time. The `Merge` operators that take a sequence of sequences make for an interesting concept. You can either pull or be pushed observable sequences, which will be subscribed to immediately. +When you know at compile time exactly how many sequences you will be merging, choosing between the first two operators really is a matter of your preferred style: either provide them as a `params` array or chain the operators together. The third and fourth overloads allow to you merge sequences that can be evaluated lazily at run time. That last `Merge` overload that takes a sequence of sequences is particularly interesting, because it makes it possible for the set of sources being merged to grow over time. With that last overload, `Merge` will remain subscribed to `sources` for as long as your code remains subscribed to the `IObservable` that `Merge` returns. So if `sources` emits more and more `IObservable`s over time, these will all be included by `Merge`. + +That might sound familiar. In the [Transformation chapter](06_Transformation.md), we looked at the [`SelectMany` operator](06_Transformation.md#selectmany), which is able to flatten multiple observable sources back out into a single observable source. This is just another illustration of why I've described `SelectMany` as a fundamental operator in Rx: strictly speaking we don't need a lot of the operators that Rx gives us because we could build them using `SelectMany`. Here's a simple re-implementation of that last `Merge` overload using `SelectMany`: + +```cs +public static IObservable MyMerge(this IObservable> sources) => + sources.SelectMany(source => source); +``` + +As well as illustrating that we don't technically need Rx to provide that last `Merge` for us, it's also a good illustration of why it's helpful that it does. It's not immediately obvious what this does—why are we passing a lambda that just returns its argument? Unless you've seen this before, it can take some thought to work out that `SelectMany` expects us to pass a callback that it invokes for each incoming item, but that our input items are already nested sequences, so we can just return each item directly, and `SelectMany` will then take that and merge everything it produces into its output stream. And even if you have internalized `SelectMany` so completely that you know right away that this will just flatten `sources`, you'd still probably find `Observable.Merge(sources)` a more direct expression of intent. If we again reuse the `GetSequences` method, we can see how the `Merge` operator works with a sequence of sequences. @@ -574,11 +524,32 @@ s3 -3| rs---2-1-----3| ``` +For each of the `Merge` overloads that accept variable numbers of sources (either via an array, an `IEnumerable>`, or an `IObservable>`) there's an additional overload adding a `maxconcurrent` parameter. For example: + +```cs +public static IObservable Merge(this IEnumerable> sources, int maxConcurrent) +``` + +This enables you to limit the number of sources that `Merge` accepts inputs from at any single time. If the number of sources available exceeds `maxConcurrent` (either because you passed in a collection with more sources, or because you used the `IObservable`-based overload and the source emitted more nested sources than `maxConcurrent`) `Merge` will wait for existing sources to complete before moving onto new ones. A `maxConcurrent` of 1 makes `Merge` behave in the same way as `Concat`. + + ### Switch -Receiving all values from a nested observable sequence is not always what you need. In some scenarios, instead of receiving everything, you may only want the values from the most recent inner sequence. A great example of this is live searches. As you type, the text is sent to a search service and the results are returned to you as an observable sequence. Most implementations have a slight delay before sending the request so that unnecessary work does not happen. Imagine I want to search for "Intro to Rx". I quickly type in "Into to" and realize I have missed the letter 'r'. I stop briefly and change the text to "Intro ". By now, two searches have been sent to the server. The first search will return results that I do not want. Furthermore, if I were to receive data for the first search merged together with results for the second search, it would be a very odd experience for the user. This scenario fits perfectly with the `Switch` method. +Rx's `Switch` operator takes an `IObservable>`, and produces notifications from the most recent nested observable. Each time its source produces a new nested `IObservable`, `Switch` unsubscribes from the previous nested source (unless this is the first source, in which case there won't be a previous one) and subscribes to the latest one. + +`Switch` can be used in a 'time to leave' type application. In fact you can see the source code for a modified version of [how Bing provides (or at least provided; the implementation may have changed) notifications telling you that it's time to leave for an appointment](https://github.com/reaqtive/reaqtor/blob/c3ae17f93ae57f3fb75a53f76e60ae69299a509e/Reaqtor/Samples/Remoting/Reaqtor.Remoting.Samples/DomainFeeds.cs#L33-L76). Since that's derived from a real example, it's a little complex, so I'll describe just the essence here. + +The basic idea with a 'time to leave' notification is that we using map and route finding services to work out the expected journey time to get to wherever the appointment is, and to use the [`Timer` operator](03_CreatingObservableSequences.md#observabletimer) to create an `IObservable` that will produce a notification when it's time to leave. (Specifically this code produces an `IObservable` which reports the proposed route for the journey, and expected travel time.) However, there are two things that can change, rendering the initial predicted journey time useless. First, traffic conditions can change. When the user created their appointment, we have to guess the expected journey time based on how traffic normally flows at the time of day in question. However, if there turns out to be really bad traffic on the day, the estimate will need to be revised upwards, and we'll need to notify the end user earlier. + +The other thing that can change is the user's location. This will also obviously affect the predicted journey time. + +To handle this, the system will need observable sources that can report changes in the user's location, and changes in traffic conditions affecting the proposed journey. Every time either of these reports a change, we will need to produce a new estimated journey time, and a new `IObservable` that will produce a notification when it's time to leave. + +Every time we revise our estimate, we want to abandon the previously created `IObservable`. (Otherwise, the user will receive a bewildering number of notifications telling them to leave, one for every time we recalculated the journey time.) We just want to use the latest one. And that's exactly what `Switch` does. -In this example, there is a source that represents a sequence of search text. Values the user types are represented as the source sequence. Using `Select`, we pass the value of the search to a function that takes a `string` and returns an `IObservable`. This creates our resulting nested sequence, `IObservable>`. +You can see the [example for that scenario in the Reaqtor repo](https://github.com/reaqtive/reaqtor/blob/c3ae17f93ae57f3fb75a53f76e60ae69299a509e/Reaqtor/Samples/Remoting/Reaqtor.Remoting.Samples/DomainFeeds.cs#L33-L76). Here, I'm going to present a different, simpler scenario: live searches. As you type, the text is sent to a search service and the results are returned to you as an observable sequence. Most implementations have a slight delay before sending the request so that unnecessary work does not happen. Imagine I want to search for "Intro to Rx". I quickly type in "Into to" and realize I have missed the letter 'r'. I stop briefly and change the text to "Intro ". By now, two searches have been sent to the server. The first search will return results that I do not want. Furthermore, if I were to receive data for the first search merged together with results for the second search, it would be a very odd experience for the user. I really only want results corresponding to the latest search text. This scenario fits perfectly with the `Switch` method. + +In this example, there is a source that represents a sequence of search text. Values the user types are represented as the source sequence. Using `Select`, we pass the value of the search to a function that takes a `string` and returns an `IObservable`. This creates our resulting nested sequence, `IObservable>`. Search function signature: @@ -632,73 +603,19 @@ Also note that, even though the results from S1 and S2 are still being pushed, t ## Pairing sequences -The previous methods allowed us to flatten multiple sequences sharing a common type into a result sequence of the same type. These next sets of methods still take multiple sequences as an input, but attempt to pair values from each sequence to produce a single value for the output sequence. In some cases, they also allow you to provide sequences of different types. - -### CombineLatest - -The `CombineLatest` extension method allows you to take the most recent value from two sequences, and with a given function transform those into a value for the result sequence. Each input sequence has the last value cached like `Replay(1)`. Once both sequences have produced at least one value, the latest output from each sequence is passed to the `resultSelector` function every time either sequence produces a value. The signature is as follows. +The previous methods allowed us to flatten multiple sequences sharing a common type into a result sequence of the same type (with various strategies for deciding what to include and what to discard). The operators in this section still take multiple sequences as an input, but attempt to pair values from each sequence to produce a single value for the output sequence. In some cases, they also allow you to provide sequences of different types. -```csharp -// Composes two observable sequences into one observable sequence by using the selector -// function whenever one of the observable sequences produces an element. -public static IObservable CombineLatest( - this IObservable first, - IObservable second, - Func resultSelector) -{...} -``` +### Zip -The marble diagram below shows off usage of `CombineLatest` with one sequence that produces numbers (N), and the other letters (L). If the `resultSelector` function just joins the number and letter together as a pair, this would be the result (R): +`Zip` combines pairs of items from two sequences. So its first output is created by combining the first item from one input with the first item from the other. The second output combines the second item from each input. And so on. The name is meant to evoke a zipper on clothing or a bag, which brings the teeth on each half of the zipper together one pair at a time. -``` -N---1---2---3--- -L--a------bc---- -R---1---2-223--- - a a bcc -``` +Since `Zip` combines pairs of item in strict order, it will complete when the first of the sequences complete. If one of the sequence has reached its end, then even if the other continues to emit values, there will be nothing to pair any of these values with, so `Zip` just unsubscribes at this point and reports completion. -If we slowly walk through the above marble diagram, we first see that `L` produces the letter 'a'. `N` has not produced any value yet so there is nothing to pair, no value is produced for the result (R). Next, `N` produces the number '1' so we now have a pair '1a' that is yielded in the result sequence. We then receive the number '2' from `N`. The last letter is still 'a' so the next pair is '2a'. The letter 'b' is then produced creating the pair '2b', followed by 'c' giving '2c'. Finally the number 3 is produced and we get the pair '3c'. +If either of the sequences produces an error, the sequence returned by `Zip` will report that same error. -This is great in case you need to evaluate some combination of state which needs to be kept up-to-date when the state changes. A simple example would be a monitoring system. Each service is represented by a sequence that returns a Boolean indicating the availability of said service. The monitoring status is green if all services are available; we can achieve this by having the result selector perform a logical AND. -Here is an example. +If one of the source sequences publishes values faster than the other sequence, the rate of publishing will be dictated by the slower of the two sequences, because it can only emit an item when it has one from each source. -```csharp -IObservable webServerStatus = GetWebStatus(); -IObservable databaseStatus = GetDBStatus(); - -// Yields true when both systems are up. -var systemStatus = webServerStatus - .CombineLatest( - databaseStatus, - (webStatus, dbStatus) => webStatus && dbStatus); -``` - -Some readers may have noticed that this method could produce a lot of duplicate values. For example, if the web server goes down the result sequence will yield '`false`'. If the database then goes down, another (unnecessary) '`false`' value will be yielded. This would be an appropriate time to use the `DistictUntilChanged` extension method. The corrected code would look like the example below. - -```csharp -// Yields true when both systems are up, and only on change of status -var systemStatus = webServerStatus - .CombineLatest( - databaseStatus, - (webStatus, dbStatus) => webStatus && dbStatus) - .DistinctUntilChanged(); -``` - -To provide an even better service, we could provide a default value by prefixing `false` to the sequence. - -```csharp -// Yields true when both systems are up, and only on change of status -var systemStatus = webServerStatus - .CombineLatest( - databaseStatus, - (webStatus, dbStatus) => webStatus && dbStatus) - .DistinctUntilChanged() - .StartWith(false); -``` - -### Zip - -The `Zip` extension method is another interesting merge feature. Just like a zipper on clothing or a bag, the `Zip` method brings together two sequences of values as pairs; two by two. Things to note about the `Zip` function is that the result sequence will complete when the first of the sequences complete, it will error if either of the sequences error and it will only publish once it has a pair of fresh values from each source sequence. So if one of the source sequences publishes values faster than the other sequence, the rate of publishing will be dictated by the slower of the two sequences. +Here's an example: ```csharp // Generate values 0,1,2 @@ -806,72 +723,11 @@ public static IObservable Zip( This allows us to zip sequences from both `IEnumerable` and `IObservable` paradigms! -### And-Then-When - -If `Zip` only taking two sequences as an input is a problem, then you can use a combination of the three `And`/`Then`/`When` methods. These methods are used slightly differently from most of the other Rx methods. Out of these three, `And` is the only extension method to `IObservable`. Unlike most Rx operators, it does not return a sequence; instead, it returns the mysterious type `Pattern`. The `Pattern` type is public (obviously), but all of its properties are internal. The only two (useful) things you can do with a `Pattern` are invoking its `And` or `Then` methods. The `And` method called on the `Pattern` returns a `Pattern`. On that type, you will also find the `And` and `Then` methods. The generic `Pattern` types are there to allow you to chain multiple `And` methods together, each one extending the generic type parameter list by one. You then bring them all together with the `Then` method overloads. The `Then` methods return you a `Plan` type. Finally, you pass this `Plan` to the `Observable.When` method in order to create your sequence. - -It may sound very complex, but comparing some code samples should make it easier to understand. It will also allow you to see which style you prefer to use. - -To `Zip` three sequences together, you can either use `Zip` methods chained together like this: - -```csharp -var one = Observable.Interval(TimeSpan.FromSeconds(1)).Take(5); -var two = Observable.Interval(TimeSpan.FromMilliseconds(250)).Take(10); -var three = Observable.Interval(TimeSpan.FromMilliseconds(150)).Take(14); - -// lhs represents 'Left Hand Side' -// rhs represents 'Right Hand Side' -var zippedSequence = one - .Zip(two, (lhs, rhs) => new {One = lhs, Two = rhs}) - .Zip(three, (lhs, rhs) => new {One = lhs.One, Two = lhs.Two, Three = rhs}); - -zippedSequence.Subscribe( - Console.WriteLine, - () => Console.WriteLine("Completed")); -``` - -Or perhaps use the nicer syntax of the `And`/`Then`/`When`: - -```csharp -var pattern = one.And(two).And(three); -var plan = pattern.Then((first, second, third)=>new{One=first, Two=second, Three=third}); -var zippedSequence = Observable.When(plan); +### SequenceEqual -zippedSequence.Subscribe( - Console.WriteLine, - () => Console.WriteLine("Completed")); -``` +There's another operator that processes pairs of items from two source: `SequenceEqual`. But instead of producing an output for each pair of inputs, this compares each pair, and ultimately produces a single value indicating whether every pair of inputs was equal or not. -This can be further reduced, if you prefer, to: - -```csharp -var zippedSequence = Observable.When( - one.And(two) - .And(three) - .Then((first, second, third) => - new { - One = first, - Two = second, - Three = third - }) - ); - -zippedSequence.Subscribe( - Console.WriteLine, - () => Console.WriteLine("Completed")); -``` - -The `And`/`Then`/`When` trio has more overloads that enable you to group an even greater number of sequences. They also allow you to provide more than one 'plan' (the output of the `Then` method). This gives you the `Merge` feature but on the collection of 'plans'. I would suggest playing around with them if this functionality is of interest to you. The verbosity of enumerating all of the combinations of these methods would be of low value. You will get far more value out of using them and discovering for yourself. - -As we delve deeper into the depths of what the Rx libraries provide us, we can see more practical usages for it. Composing sequences with Rx allows us to easily make sense of the multiple data sources a problem domain is exposed to. We can concatenate values or sequences together sequentially with `StartWith`, `Concat` and `Repeat`. We can process multiple sequences concurrently with `Merge`, or process a single sequence at a time with `Amb` and `Switch`. Pairing values with `CombineLatest`, `Zip` and the `And`/`Then`/`When` operators can simplify otherwise fiddly operations like our drag-and-drop examples and monitoring system status. - - -TODO: Was in Inspection but I think this might go more naturally after Zip - - -## SequenceEqual - -Finally `SequenceEqual` extension method is perhaps a stretch to put in a chapter that starts off talking about catamorphism and fold, but it does serve well for the theme of inspection. This method allows us to compare two observable sequences. As each source sequence produces values, they are compared to a cache of the other sequence to ensure that each sequence has the same values in the same order and that the sequences are the same length. This means that the result sequence can return `false` as soon as the source sequences produce diverging values, or `true` when both sources complete with the same values. +In the case where the sources produce different values, `SequenceEqual` produces a single `false` value as soon as it detects this. But if the sources are equal, it can only report this when both have completed because until that happens, it doesn't yet know if there might a difference coming later. ```csharp var subject1 = new Subject(); @@ -920,41 +776,127 @@ areEqual.OnNext(True) areEqual completed ``` -This chapter covered a set of methods that allow us to inspect observable sequences. The result of each, generally, returns a sequence with a single value. We will continue to look at methods to reduce our sequence until we discover the elusive functional fold feature. +### CombineLatest + +The `CombineLatest` operator is similar to `Zip` in that it combines pairs of items from its sources. However, instead of pairing the first items, then the second, and so on, `CombineLatest` produces an output any time _either_ of its inputs produces a new value. For each new value to emerge from an input, `CombineLatest` uses that along with the most recently seen value from the other input. The signature is as follows. + +```csharp +// Composes two observable sequences into one observable sequence by using the selector +// function whenever one of the observable sequences produces an element. +public static IObservable CombineLatest( + this IObservable first, + IObservable second, + Func resultSelector) +{...} +``` + +The marble diagram below shows off usage of `CombineLatest` with one sequence that produces numbers (N), and the other letters (L). If the `resultSelector` function just joins the number and letter together as a pair, this would be the result (R): + +``` +N---1---2---3--- +L--a------bc---- +R---1---2-223--- + a a bcc +``` + +If we slowly walk through the above marble diagram, we first see that `L` produces the letter 'a'. `N` has not produced any value yet so there is nothing to pair, no value is produced for the result (R). Next, `N` produces the number '1' so we now have a pair '1a' that is yielded in the result sequence. We then receive the number '2' from `N`. The last letter is still 'a' so the next pair is '2a'. The letter 'b' is then produced creating the pair '2b', followed by 'c' giving '2c'. Finally the number 3 is produced and we get the pair '3c'. + +This is great in case you need to evaluate some combination of state which needs to be kept up-to-date when the state changes. A simple example would be a monitoring system. Each service is represented by a sequence that returns a Boolean indicating the availability of said service. The monitoring status is green if all services are available; we can achieve this by having the result selector perform a logical AND. +Here is an example. + +```csharp +IObservable webServerStatus = GetWebStatus(); +IObservable databaseStatus = GetDBStatus(); + +// Yields true when both systems are up. +var systemStatus = webServerStatus + .CombineLatest( + databaseStatus, + (webStatus, dbStatus) => webStatus && dbStatus); +``` + +Some readers may have noticed that this method could produce a lot of duplicate values. For example, if the web server goes down the result sequence will yield '`false`'. If the database then goes down, another (unnecessary) '`false`' value will be yielded. This would be an appropriate time to use the `DistictUntilChanged` extension method. The corrected code would look like the example below. + +```csharp +// Yields true when both systems are up, and only on change of status +var systemStatus = webServerStatus + .CombineLatest( + databaseStatus, + (webStatus, dbStatus) => webStatus && dbStatus) + .DistinctUntilChanged(); +``` +To provide an even better service, we could provide a default value by prefixing `false` to the sequence. +```csharp +// Yields true when both systems are up, and only on change of status +var systemStatus = webServerStatus + .CombineLatest( + databaseStatus, + (webStatus, dbStatus) => webStatus && dbStatus) + .DistinctUntilChanged() + .StartWith(false); +``` -This brings us to a close on Part 2. The key takeaways from this were to allow you the reader to understand a key principal to Rx: functional composition. As we move through Part 2, examples became progressively more complex. We were leveraging the power of LINQ to chain extension methods together to compose complex queries. -We didn't try to tackle all of the operators at once, we approached them in groups. +### And-Then-When -- Creation -- Reduction -- Inspection -- Aggregation -- Transformation +If `Zip` only taking two sequences as an input is a problem, then you can use a combination of the three `And`/`Then`/`When` methods. These methods are used slightly differently from most of the other Rx methods. Out of these three, `And` is the only extension method to `IObservable`. Unlike most Rx operators, it does not return a sequence; instead, it returns the mysterious type `Pattern`. The `Pattern` type is public (obviously), but all of its properties are internal. The only two (useful) things you can do with a `Pattern` are invoking its `And` or `Then` methods. The `And` method called on the `Pattern` returns a `Pattern`. On that type, you will also find the `And` and `Then` methods. The generic `Pattern` types are there to allow you to chain multiple `And` methods together, each one extending the generic type parameter list by one. You then bring them all together with the `Then` method overloads. The `Then` methods return you a `Plan` type. Finally, you pass this `Plan` to the `Observable.When` method in order to create your sequence. -On deeper analysis of the operators we find that most of the operators are actuallyspecialization of the higher order functional concepts. We named them the ABC's of functional programming: +It may sound very complex, but comparing some code samples should make it easier to understand. It will also allow you to see which style you prefer to use. -- Anamorphism, aka: - - Ana - - Unfold - - Generate -- Bind, aka: - - Map - - SelectMany - - Projection - - Transform -- Catamorphism, aka: - - Cata - - Fold - - Reduce - - Accumulate - - Inject +To `Zip` three sequences together, you can either use `Zip` methods chained together like this: -Now you should feel that you have a strong understanding of how a sequence can be manipulated. What we have learnt up to this point however can all largely be applied to `IEnumerable` sequences too. Rx can be much more complex than what many people will have dealt with in `IEnumerable` world, as we have seen with the `SelectMany` operator. In the next part of the book we will uncover features specific to the asynchronous nature of Rx. With the foundation we have built so far we should be able to tackle the far more challenging and interesting features of Rx. +```csharp +var one = Observable.Interval(TimeSpan.FromSeconds(1)).Take(5); +var two = Observable.Interval(TimeSpan.FromMilliseconds(250)).Take(10); +var three = Observable.Interval(TimeSpan.FromMilliseconds(150)).Take(14); +// lhs represents 'Left Hand Side' +// rhs represents 'Right Hand Side' +var zippedSequence = one + .Zip(two, (lhs, rhs) => new {One = lhs, Two = rhs}) + .Zip(three, (lhs, rhs) => new {One = lhs.One, Two = lhs.Two, Three = rhs}); + +zippedSequence.Subscribe( + Console.WriteLine, + () => Console.WriteLine("Completed")); +``` + +Or perhaps use the nicer syntax of the `And`/`Then`/`When`: + +```csharp +var pattern = one.And(two).And(three); +var plan = pattern.Then((first, second, third)=>new{One=first, Two=second, Three=third}); +var zippedSequence = Observable.When(plan); + +zippedSequence.Subscribe( + Console.WriteLine, + () => Console.WriteLine("Completed")); +``` + +This can be further reduced, if you prefer, to: + +```csharp +var zippedSequence = Observable.When( + one.And(two) + .And(three) + .Then((first, second, third) => + new { + One = first, + Two = second, + Three = third + }) + ); + +zippedSequence.Subscribe( + Console.WriteLine, + () => Console.WriteLine("Completed")); +``` + +The `And`/`Then`/`When` trio has more overloads that enable you to group an even greater number of sequences. They also allow you to provide more than one 'plan' (the output of the `Then` method). This gives you the `Merge` feature but on the collection of 'plans'. I would suggest playing around with them if this functionality is of interest to you. The verbosity of enumerating all of the combinations of these methods would be of low value. You will get far more value out of using them and discovering for yourself. +## Summary -TODO: `Buffer`, `Window`? \ No newline at end of file +This chapter covered a set of methods that allow us to combine observable sequences. This brings us to a close on Part 2. We've looked at the operators that are mostly concerned with defining the computations we want to perform on the data. In Part 3 we will move onto practical concerns such as managing side effects, error handling, and scheduling. The \ No newline at end of file diff --git a/content/C_AlgebraicUnderpinnings b/content/C_AlgebraicUnderpinnings index 0705d67..766a481 100644 --- a/content/C_AlgebraicUnderpinnings +++ b/content/C_AlgebraicUnderpinnings @@ -152,3 +152,37 @@ Caution should be prescribed whenever using any of these fold methods on an obse TODO: this was where First, Last, and Single were. (That was an odd choice. They are technically catamorphisms, but they are degenerate cases. `Aggregate` is the canonical example but that wasn't in this section! `Sum`, `Average`, `Min`, and `Max` are also all good examples (more specialized than Aggregate, but at least they look at every input), but they're also not in here. To be fair, the Rx source code puts FirstAsync and SingleAsync in Observable.Aggregates.cs. But it's the fact that this section _only_ contained these, and none of the other more obviously aggregating catamorphisms.) I've moved those out into filtering, because they feel more akin to Take and Last. From a structural algebra perspective these are different kinds of things, but in terms of what they actually do, they are positional filters, so they seem to fit better in the filtering chapter than Aggregation because they don't aggregate. ---end + +## Amb + +The `Amb` method was a new concept to me when I started using Rx. This function was first introduced by [John McCarthy](https://en.wikipedia.org/wiki/John_McCarthy_(computer_scientist)), in his 1961 paper ['A Basis for a Mathematical Theory of Computation'](https://www.cambridge.org/core/journals/journal-of-symbolic-logic/article/abs/john-mccarthy-a-basis-for-a-mathematical-theory-of-computation-preliminary-report-proceedings-of-the-western-joint-computer-conference-papers-presented-at-the-joint-ireaieeacm-computer-conference-los-angeles-calif-may-911-1961-western-joint-computer-conference-1961-pp-225238-john-mccarthy-a-basis-for-a-mathematical-theory-of-computation-computer-programming-and-formal-systems-edited-by-p-braffort-and-d-hirschberg-studies-in-logic-and-the-foundations-of-mathematics-northholland-publishing-company-amsterdam1963-pp-3370/D1AD4E0CDB7FBE099B04BB4DAF24AFFA) in the Proceedings of the Western Joint Computer Conference. (A digital copy of this is hard to find, but a later version was published in [1963](http://www-formal.stanford.edu/jmc/basis1.pdf) in 'Computer Programming and Format Systems'.) It is an abbreviation of the word _Ambiguous_. Rx diverges slightly from normal .NET class library naming conventions here in using this abbreviation, partly because `amb` is the established name for this operator, but also as a tribute to McCarthy, whose work was an inspiration for the design of Rx. + +But what does `Amb` do? The basic idea of an [_ambiguous function_](http://www-formal.stanford.edu/jmc/basis1/node7.html) is that we are allowed to define multiple ways to produce a result, and that some or all of these might in practice prove unable to produce a result. Suppose we've defined some ambiguous function called `equivocate`, and perhaps that for some particular input value, all of `equivocate`'s component parts—all the different ways we gave it of calculating a result—are unable to process the value. (Maybe every one of them divides a number by the input. If we supply an input of `0`, then none of the components can produce a value for this input because they would all attempt to divide by 0.) In cases such as these where none of `equivocate`'s component parts is able to produce a result, `equivocate` itself is unable to produce a result. But suppose we supply some input where exactly one of its component parts is able to produce a result. In that case this result becomes the result of `equivocate` for that input. + +So in essence, we're supplying a bunch of different ways to process the input, and if exactly one of those is able to produce a result, we select that result. And if none of the ways of processing the input produces anything, then our ambiguous function also produces nothing. + +Where it gets slightly more weird (and where Rx departs from the original definition of `amb`) is when more than one of an ambiguous function's constituents produces a result. In McCarthy's theoretical formulation, the ambiguous function effectively produces all of the results as possible outputs. (This is technically known as _nondeterministic_ computation. It is as though the computer evaluating the ambiguous function clones itself, producing a copy for each possible result, continuing to execute every single copy. You could imagine an multithreaded implementation of such a system, where every time an ambiguous function produces multiple possible results, we create that many new threads so as to be able to evaluate all possible outcomes. This is a reasonable mental model for nondeterministic computation, but it's not what actually happens with Rx's `Amb` operator.) In the kinds of theoretical work ambiguous functions were introduced for, the ambiguity often vanishes in the end—there may have been an enormous number of ways in which a computation could have proceeded, but they might all, finally, produce the same result. However, such theoretical concerns are taking us away from what Rx's `Amb` does, and how we might use it in practice. + +[Rx's `Amb`](09_CombiningSequences.md#amb) provides the behaviour described in the cases where either none of the inputs produces anything, or exactly one of them does. Howeever, it makes no attempt to support non-deterministic computation, so its handling of the case where multiple constituents are able to produce value is oversimplified, but then McCarthy's `amb` was first and foremost an analytical construct, so any practical implementation of it is always going to fall short. + + + +A bit from the end of Part 2: + +On deeper analysis of the operators we find that most of the operators are actuallyspecialization of the higher order functional concepts. We named them the ABC's of functional programming: + +- Anamorphism, aka: + - Ana + - Unfold + - Generate +- Bind, aka: + - Map + - SelectMany + - Projection + - Transform +- Catamorphism, aka: + - Cata + - Fold + - Reduce + - Accumulate + - Inject From 897f1cc56b46138da508280fc0836a403e384f61 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Thu, 13 Jul 2023 13:58:22 +0100 Subject: [PATCH 020/142] Re-order part 3 content --- content/04_Part2.md | 27 ++++++++++++------- content/{09x_SideEffects.md => 10_Part3.md} | 0 ...eading.md => 11_SchedulingAndThreading.md} | 0 ...ngTheMonad.md => 12_LeavingIObservable.md} | 0 ...3_TimeShiftedSequences.md => 13_Timing.md} | 0 ...ndling.md => 14_ErrorHandlingOperators.md} | 0 ...rvables.md => 90_HotAndColdObservables.md} | 0 content/{16_TestingRx.md => 91_TestingRx.md} | 0 ...idence.md => 92_SequencesOfCoincidence.md} | 0 .../{20_Disposables.md => 93_Disposables.md} | 0 ...spellingMyths.md => 94_DispellingMyths.md} | 0 ...sageGuidelines.md => C_UsageGuidelines.md} | 0 ...Underpinnings => D_AlgebraicUnderpinnings} | 0 13 files changed, 18 insertions(+), 9 deletions(-) rename content/{09x_SideEffects.md => 10_Part3.md} (100%) rename content/{15_SchedulingAndThreading.md => 11_SchedulingAndThreading.md} (100%) rename content/{10_LeavingTheMonad.md => 12_LeavingIObservable.md} (100%) rename content/{13_TimeShiftedSequences.md => 13_Timing.md} (100%) rename content/{11_AdvancedErrorHandling.md => 14_ErrorHandlingOperators.md} (100%) rename content/{14_HotAndColdObservables.md => 90_HotAndColdObservables.md} (100%) rename content/{16_TestingRx.md => 91_TestingRx.md} (100%) rename content/{17_SequencesOfCoincidence.md => 92_SequencesOfCoincidence.md} (100%) rename content/{20_Disposables.md => 93_Disposables.md} (100%) rename content/{19_DispellingMyths.md => 94_DispellingMyths.md} (100%) rename content/{18_UsageGuidelines.md => C_UsageGuidelines.md} (100%) rename content/{C_AlgebraicUnderpinnings => D_AlgebraicUnderpinnings} (100%) diff --git a/content/04_Part2.md b/content/04_Part2.md index ed2ee5f..ec02b4d 100644 --- a/content/04_Part2.md +++ b/content/04_Part2.md @@ -66,14 +66,13 @@ Notes: * And/Then/When Does Part 3 start here? The existing book has the rather nondescriptive "Taming the sequence" title, and -I'd prefer to come up with something a bit more meaningful. +I'd prefer to come up with something a bit more meaningful. Maybe "Getting Pragmatic" -* Error Handling - * Catch - * Finally - * Using - * Retry - * OnErrorResumeNext +* Schedulers + +* Leaving IObservable + * Do + * For * Timing * TimeStamp TimeInterval * TakeUntil (time-based) @@ -81,9 +80,19 @@ I'd prefer to come up with something a bit more meaningful. * Sample * Throttle * Timeout +* Error Handling + * Catch + * Finally + * Using + * Retry + * OnErrorResumeNext -TODO: side effects? TODO: where does Defer fit in? I use it in ch03. I refer to it in Combining Sequences. But it's not clear where its home is. -TODO: where does integration with Task fit in? Chapter 3's From Task section talks about the ToObservable extension method. The chapter currently called "Leaving the Monad" talks about ToTask. What about ToAsync and FromAsync? Chapter 5 mentions in passing that you can `await` any sequence in the ElementAt section, but I don't think I mention that any point earlier than that. \ No newline at end of file +TODO: where does integration with Task fit in? Chapter 3's From Task section talks about the ToObservable extension method. The chapter currently called "Leaving the Monad" talks about ToTask. What about ToAsync and FromAsync? Chapter 5 mentions in passing that you can `await` any sequence in the ElementAt section, but I don't think I mention that any point earlier than that. + + +Check these to see if there's anything in them not now covered earlier: +* HotAndColdObservables +* SequencesOfCoincidence diff --git a/content/09x_SideEffects.md b/content/10_Part3.md similarity index 100% rename from content/09x_SideEffects.md rename to content/10_Part3.md diff --git a/content/15_SchedulingAndThreading.md b/content/11_SchedulingAndThreading.md similarity index 100% rename from content/15_SchedulingAndThreading.md rename to content/11_SchedulingAndThreading.md diff --git a/content/10_LeavingTheMonad.md b/content/12_LeavingIObservable.md similarity index 100% rename from content/10_LeavingTheMonad.md rename to content/12_LeavingIObservable.md diff --git a/content/13_TimeShiftedSequences.md b/content/13_Timing.md similarity index 100% rename from content/13_TimeShiftedSequences.md rename to content/13_Timing.md diff --git a/content/11_AdvancedErrorHandling.md b/content/14_ErrorHandlingOperators.md similarity index 100% rename from content/11_AdvancedErrorHandling.md rename to content/14_ErrorHandlingOperators.md diff --git a/content/14_HotAndColdObservables.md b/content/90_HotAndColdObservables.md similarity index 100% rename from content/14_HotAndColdObservables.md rename to content/90_HotAndColdObservables.md diff --git a/content/16_TestingRx.md b/content/91_TestingRx.md similarity index 100% rename from content/16_TestingRx.md rename to content/91_TestingRx.md diff --git a/content/17_SequencesOfCoincidence.md b/content/92_SequencesOfCoincidence.md similarity index 100% rename from content/17_SequencesOfCoincidence.md rename to content/92_SequencesOfCoincidence.md diff --git a/content/20_Disposables.md b/content/93_Disposables.md similarity index 100% rename from content/20_Disposables.md rename to content/93_Disposables.md diff --git a/content/19_DispellingMyths.md b/content/94_DispellingMyths.md similarity index 100% rename from content/19_DispellingMyths.md rename to content/94_DispellingMyths.md diff --git a/content/18_UsageGuidelines.md b/content/C_UsageGuidelines.md similarity index 100% rename from content/18_UsageGuidelines.md rename to content/C_UsageGuidelines.md diff --git a/content/C_AlgebraicUnderpinnings b/content/D_AlgebraicUnderpinnings similarity index 100% rename from content/C_AlgebraicUnderpinnings rename to content/D_AlgebraicUnderpinnings From 25224d5094db9be48eb63a816be02326dc7ee1e1 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Fri, 21 Jul 2023 15:55:19 +0100 Subject: [PATCH 021/142] Partial update of scheduling chapter --- content/10_Part3.md | 446 +---------------- content/11_SchedulingAndThreading.md | 724 +++++++++++++++++++++------ content/12_LeavingIObservable.md | 447 ++++++++++++++++- 3 files changed, 1009 insertions(+), 608 deletions(-) diff --git a/content/10_Part3.md b/content/10_Part3.md index e939433..acda2f9 100644 --- a/content/10_Part3.md +++ b/content/10_Part3.md @@ -2,449 +2,11 @@ title: Side effects --- -# PART 3 - Taming the sequence +# PART 3 - Getting pragmatic. -In the third part to this book we will look the features that allow us to apply Rx to more than just sample code. When building production quality code we often need to be able to handle error scenarios, log workflow, retry in certain circumstances, dispose of resources and other real-life problems that are regularly excluded from examples and demos. +The first part of this book focused on the basic ideas and types of Rx. In the second part, I showed the operators Rx offers, enabling us to define the transformations and computations we want to apply to our source data. This second part was essentially functional programming—Rx's operators are mostly like mathematical functions, in that they will invariably behave in the same way for particular inputs. They are unaffected by the state of the world around them, and they also do nothing to change its state. In functional programming, such mechanisms are sometimes described as _pure_. -Part 3 of this book aims to equip you with the tools you need to be able to useRx as more than just a toy. If you use Rx properly, you will find it pervasive in your code base. You should not shy away from this, just like you would not shy away from using the `foreach` syntax with `IEnumerable` types, or, the `using` syntax with `IDisposable` types. Understanding and embracing Rx will improve your code base by reducing it, by making it more declarative, by identifying and eliminating race conditions, and therefore making it more maintainable. +This _purity_ can help us understand what our code will do. It means we don't need to know about the state of the rest of our program in order to understand how one particular part functions. However, code that is completely detached from the outside world is unlikely to achieve anything useful. In practice, we need to connect these pure computations with more pragmatic concerns. The [Creating Observable Sequences chapter](03_CreatingObservableSequences.md) already showed how to define observable streams, so we've already looked at how to connect real world inputs into the world of Rx. But what about the other end? How do we do something useful with the results of our processing? -Maintenance of Rx code obviously requires Rx knowledge but this creates a "chicken and egg" problem. I choose to believe that Rx is here to stay. I believe this because it solves a targeted set of problems very well. It is also complimentary to other libraries and features such as TPL (Task Parallel Library) and the future `async`/`await` features of .NET 4.5. Considering this, if Rx improves our code base then we should embrace it! +In some cases, it might be enough to do work inside `IObserver` implementations, or using the callback-based subscription mechanisms you've already seen. However, some situations will demand something more sophisticated. So in this third part of the book, we will look at some of the features Rx offers to help connect processes of the kind we looked at in part 2 with the rest of the world. -# Side effects - -Non-functional requirements of production systems often demand high availability, quality monitoring features and low lead time for defect resolution. Logging, debugging, instrumentation and journaling are common non-functional requirements that developers need to consider for production ready systems. These artifacts could be considered side effects of the main business workflow. Side effects are a real life problem that code samples and how-to guides often ignore, however Rx provides tools to help. - -In this chapter we will discuss the consequences of introducing side effects when working with an observable sequence. A function is considered to have a side effect if, in addition to any return value, it has some other observable effect. Generally the 'observable effect' is a modification of state. This observable effect could be - -* modification of a variable with a wider scope than the function (i.e. global, static or perhaps an argument) -* I/O such as a read/write from a file or network - -* updating a display - - -## Issues with side effects - -Functional programming in general tries to avoid creating any side effects. Functions with side effects, especially which modify state, require the programmer to understand more than just the inputs and outputs of the function. The surface area they are required to understand needs to now extend to the history and context of the state being modified. This can greatly increase the complexity of a function, and thus make it harder to correctly understand and maintain. - -Side effects are not always accidental, nor are they always intentional. An easy way to reduce the accidental side effects is to reduce the surface area for change. The simple actions coders can take are to reduce the visibility or scope of state and to make what you can immutable. You can reduce the visibility of a variable by scoping it to a code block like a method. You can reduce visibility of class members by making them private or protected. By definition immutable data can't be modified so cannot exhibit side effects. These are sensible encapsulation rules that will dramatically improve the maintainability of your Rx code. - -To provide a simple example of a query that has a side effect, we will try to output the index and value of the elements received by updating a variable (closure). - -```csharp -var letters = Observable.Range(0, 3) - .Select(i => (char)(i + 65)); - -var index = -1; -var result = letters.Select( - c => - { - index++; - return c; - }); - -result.Subscribe( - c => Console.WriteLine("Received {0} at index {1}", c, index), - () => Console.WriteLine("completed")); -``` - -Output: - -``` -Received A at index 0 -Received B at index 1 -Received C at index 2 -completed -``` - -While this seems harmless enough, imagine if another person sees this code and understands it to be the pattern the team is using. They in turn adopt this style themselves. For the sake of the example, we will add a duplicate subscription to our previous example. - -```csharp -var letters = Observable.Range(0, 3) - .Select(i => (char)(i + 65)); - -var index = -1; -var result = letters.Select( - c => - { - index++; - return c; - }); - -result.Subscribe( - c => Console.WriteLine("Received {0} at index {1}", c, index), - () => Console.WriteLine("completed")); - -result.Subscribe( - c => Console.WriteLine("Also received {0} at index {1}", c, index), - () => Console.WriteLine("2nd completed")); -``` - -Output - -``` -Received A at index 0 -Received B at index 1 -Received C at index 2 -completed -Also received A at index 3 -Also received B at index 4 -Also received C at index 5 -2nd completed -``` - - - -Now the second person's output is clearly nonsense. They will be expecting index values to be 0, 1 and 2 but get 3, 4 and 5 instead. I have seen far more sinister versions of side effects in code bases. The nasty ones often modify state that is a Boolean value e.g. `hasValues`, `isStreaming` etc. We will see in a later chapter far better ways of controlling workflow with observable sequences than using shared state. - -In addition to creating potentially unpredictable results in existing software, programs that exhibit side effects are far more difficult to test and maintain. Future refactoring, enhancements or other maintenance on programs that exhibits side effects are far more likely to be brittle. This is especially so in asynchronous or concurrent software. - -## Composing data in a pipeline - -The preferred way of capturing state is to introduce it to the pipeline. Ideally, we want each part of the pipeline to be independent and deterministic. That is, each function that makes up the pipeline should have its inputs and output as its only state. To correct our example we could enrich the data in the pipeline so that there is no shared state. This would be a great example where we could use the `Select` overload that exposes the index. - -```csharp -var source = Observable.Range(0, 3); -var result = source.Select((idx, value) => new - { - Index = idx, - Letter = (char) (value + 65) - }); - -result.Subscribe( - x => Console.WriteLine("Received {0} at index {1}", x.Letter, x.Index), - () => Console.WriteLine("completed")); - -result.Subscribe( - x => Console.WriteLine("Also received {0} at index {1}", x.Letter, x.Index), - () => Console.WriteLine("2nd completed")); -``` - -Output: - -``` -Received A at index 0 -Received B at index 1 -Received C at index 2 -completed -Also received A at index 0 -Also received B at index 1 -Also received C at index 2 -2nd completed -``` - -Thinking outside of the box, we could also use other features like `Scan` to achieve similar results. Here is an example. - -```csharp -var result = source.Scan( - new - { - Index = -1, - Letter = new char() - }, - (acc, value) => new - { - Index = acc.Index + 1, - Letter = (char)(value + 65) - }); -``` - -The key here is to isolate the state, and reduce or remove any side effects like mutating state. - -## Do - -We should aim to avoid side effects, but in some cases it is unavoidable. The `Do` extension method allows you to inject side effect behavior. The signature of the `Do` extension method looks very much like the `Select` method; - -- They both have various overloads to cater for combinations of `OnNext`, `OnError` and `OnCompleted` handlers -- They both return and take an observable sequence - -The overloads are as follows: - -```csharp -// Invokes an action with side effecting behavior for each element in the observable -// sequence. -public static IObservable Do( - this IObservable source, - Action onNext) -{...} - -// Invokes an action with side effecting behavior for each element in the observable -// sequence and invokes an action with side effecting behavior upon graceful termination -// of the observable sequence. -public static IObservable Do( - this IObservable source, - Action onNext, - Action onCompleted) -{...} - -// Invokes an action with side effecting behavior for each element in the observable -// sequence and invokes an action with side effecting behavior upon exceptional -// termination of the observable sequence. -public static IObservable Do( - this IObservable source, - Action onNext, - Action onError) -{...} - -// Invokes an action with side effecting behavior for each element in the observable -// sequence and invokes an action with side effecting behavior upon graceful or -// exceptional termination of the observable sequence. -public static IObservable Do( - this IObservable source, - Action onNext, - Action onError, - Action onCompleted) -{...} - -// Invokes the observer's methods for their side effects. -public static IObservable Do( - this IObservable source, - IObserver observer) -{...} -``` - -The `Select` overloads take `Func` arguments for their `OnNext` handlers and also provide the ability to return an observable sequence that is a different type to the source. In contrast, the `Do` methods only take an `Action` for the `OnNext` handler, and therefore can only return a sequence that is the same type as the source. As each of the arguments that can be passed to the `Do` overloads are actions, they implicitly cause side effects. - - - -For the next example, we first define the following methods for logging: - -```csharp -private static void Log(object onNextValue) -{ - Console.WriteLine("Logging OnNext({0}) @ {1}", onNextValue, DateTime.Now); -} -private static void Log(Exception onErrorValue) -{ - Console.WriteLine("Logging OnError({0}) @ {1}", onErrorValue, DateTime.Now); -} -private static void Log() -{ - Console.WriteLine("Logging OnCompleted()@ {0}", DateTime.Now); -} -``` - -This code can use `Do` to introduce some logging using the methods from above. - -```csharp -var source = Observable.Interval(TimeSpan.FromSeconds(1)) - .Take(3); - -var result = source.Do( - i => Log(i), - ex => Log(ex), - () => Log()); - -result.Subscribe( - Console.WriteLine, - () => Console.WriteLine("completed")); -``` - -Output: - -``` -Logging OnNext(0) @ 01/01/2012 12:00:00 -0 -Logging OnNext(1) @ 01/01/2012 12:00:01 -1 -Logging OnNext(2) @ 01/01/2012 12:00:02 -2 -Logging OnCompleted() @ 01/01/2012 12:00:02 -completed -``` - -Note that because the `Do` is earlier in the query chain than the `Subscribe`, it will receive the values first and therefore write to the console first. I like to think of the `Do` method as a [wire tap](http://en.wikipedia.org/wiki/Telephone_tapping) to a sequence. It gives you the ability to listen in on the sequence, without the ability to modify it. - -The most common acceptable side effect I see in Rx is the need to log. The signature of `Do` allows you to inject it into a query chain. This allows us to add logging into our sequence and retain encapsulation. When a repository, service agent or provider exposes an observable sequence, they have the ability to add their side effects (e.g. logging) to the sequence before exposing it publicly. Consumers can then append operators to the query (e.g. `Where`, `SelectMany`) and this will not affect the logging of the provider. - -Consider the method below. It produces numbers but also logs what it produces (to the console for simplicity). To the consuming code the logging is transparent. - -```csharp -private static IObservable GetNumbers() -{ - return Observable.Interval(TimeSpan.FromMilliseconds(250)) - .Do(i => Console.WriteLine("pushing {0} from GetNumbers", i)); -} -``` - -We then call it with this code. - -```csharp -var source = GetNumbers(); -var result = source.Where(i => i%3 == 0) - .Take(3) - .Select(i => (char) (i + 65)); - -result.Subscribe( - Console.WriteLine, - () => Console.WriteLine("completed")); -``` - -Output: - -``` -pushing 0 from GetNumbers -A -pushing 1 from GetNumbers -pushing 2 from GetNumbers -pushing 3 from GetNumbers -D -pushing 4 from GetNumbers -pushing 5 from GetNumbers -pushing 6 from GetNumbers -G -completed -``` - -This example shows how producers or intermediaries can apply logging to the sequence regardless of what the end consumer does. - -One overload to `Do` allows you to pass in an `IObserver`. In this overload, each of the `OnNext`, `OnError` and `OnCompleted` methods are passed to the other `Do` overload as each of the actions to perform. - -Applying a side effect adds complexity to a query. If side effects are a necessary evil, then being explicit will help your fellow coder understand your intentions. Using the `Do` method is the favored approach to doing so. This may seem trivial, but given the inherent complexity of a business domain mixed with asynchrony and concurrency, developers don't need the added complication of side effects hidden in a `Subscribe` or `Select` operator. - -## Encapsulating with AsObservable - -Poor encapsulation is a way developers can leave the door open for unintended side effects. Here is a handful of scenarios where carelessness leads to leaky abstractions. Our first example may seem harmless at a glance, but has numerous problems. - -```csharp -public class UltraLeakyLetterRepo -{ - public ReplaySubject Letters { get; set; } - - public UltraLeakyLetterRepo() - { - Letters = new ReplaySubject(); - Letters.OnNext("A"); - Letters.OnNext("B"); - Letters.OnNext("C"); - } -} -``` - -In this example we expose our observable sequence as a property. The first problem here is that it is a settable property. Consumers could change the entire subject out if they wanted. This would be a very poor experience for other consumers of this class. If we make some simple changes we can make a class that seems safe enough. - -```csharp -public class LeakyLetterRepo -{ - private readonly ReplaySubject _letters; - - public LeakyLetterRepo() - { - _letters = new ReplaySubject(); - _letters.OnNext("A"); - _letters.OnNext("B"); - _letters.OnNext("C"); - } - - public ReplaySubject Letters - { - get { return _letters; } - } -} -``` - -Now the `Letters` property only has a getter and is backed by a read-only field. This is much better. Keen readers will note that the `Letters` property returns a `ReplaySubject`. This is poor encapsulation, as consumers could call `OnNext`/`OnError`/`OnCompleted`. To close off that loophole we can simply make the return type an `IObservable`. - -```csharp -public IObservable Letters -{ - get { return _letters; } -} -``` - -The class now _looks_ much better. The improvement, however, is only cosmetic. There is still nothing preventing consumers from casting the result back to an `ISubject` and then calling whatever methods they like. In this example we see external code pushing their values into the sequence. - -```csharp -var repo = new ObscuredLeakinessLetterRepo(); -var good = repo.GetLetters(); -var evil = repo.GetLetters(); - -good.Subscribe(Console.WriteLine); - -// Be naughty -var asSubject = evil as ISubject; - -if (asSubject != null) -{ - // So naughty, 1 is not a letter! - asSubject.OnNext("1"); -} -else -{ - Console.WriteLine("could not sabotage"); -} -``` - -Output: - -``` -A -B -C -1 -``` - -The fix to this problem is quite simple. By applying the `AsObservable` extension method, the `_letters` field will be wrapped in a type that only implements `IObservable`. - -```csharp -public IObservable GetLetters() -{ - return _letters.AsObservable(); -} -``` - -Output: - -``` -A -B -C -could not sabotage -``` - -While I have used words like 'evil' and 'sabotage' in these examples, it is more often than not an oversight rather than malicious intent that causes problems. The failing falls first on the programmer who designed the leaky class. Designing interfaces is hard, but we should do our best to help consumers of our code fall into [the pit of success](http://blogs.msdn.com/b/brada/archive/2003/10/02/50420.aspx) by giving them discoverable and consistent types. Types become more discoverable if we reduce their surface area to expose only the features we intend our consumers to use. In this example we reduced the type's surface area. We did so by removing the property setter and returning a simpler type via the `AsObservable` method. - -## Mutable elements cannot be protected - -While the `AsObservable` method can encapsulate your sequence, you should still be aware that it gives no protection against mutable elements. Consider what consumers of a sequence of this class could do: - -```csharp -public class Account -{ - public int Id { get; set; } - public string Name { get; set; } -} -``` - -Here is a quick example of the kind of mess we can make if we choose to modify elements in a sequence. - -```csharp -var source = new Subject(); - -// Evil code. It modifies the Account object. -source.Subscribe(account => account.Name = "Garbage"); - -// unassuming well behaved code -source.Subscribe( - account=>Console.WriteLine("{0} {1}", account.Id, account.Name), - ()=>Console.WriteLine("completed")); - -source.OnNext(new Account {Id = 1, Name = "Microsoft"}); -source.OnNext(new Account {Id = 2, Name = "Google"}); -source.OnNext(new Account {Id = 3, Name = "IBM"}); -source.OnCompleted(); -``` - -Output: - -``` -1 Garbage -2 Garbage -3 Garbage -completed -``` - -Here the second consumer was expecting to get 'Microsoft', 'Google' and 'IBM' but received just 'Garbage'. - -Observable sequences will be perceived to be a sequence of resolved events: things that have happened as a statement of fact. This implies two things: first, each element represents a snapshot of state at the time of publication, secondly, the information emanates from a trustworthy source. We want to eliminate the possibility of tampering. Ideally the type `T` will be immutable, solving both of these problems. This way, consumers of the sequence can be assured that the data they get is the data that the source produced. Not being able to mutate elements may seem limiting as a consumer, but these needs are best met via the [Transformation](08_Transformation.html) operators which provide better encapsulation. - -Side effects should be avoided where possible. Any combination of concurrency with shared state will commonly demand the need for complex locking, deep understanding of CPU architectures and how they work with the locking and optimization features of the language you use. The simple and preferred approach is to avoid shared state, favor immutable data types and utilize query composition and transformation. Hiding side effects into `Where` or `Select` clauses can make for very confusing code. If a side effect is required, then the `Do` method expresses intent that you are creating a side effect by being explicit. \ No newline at end of file diff --git a/content/11_SchedulingAndThreading.md b/content/11_SchedulingAndThreading.md index ea439a2..08aed5c 100644 --- a/content/11_SchedulingAndThreading.md +++ b/content/11_SchedulingAndThreading.md @@ -2,223 +2,614 @@ title: Scheduling and threading --- -# PART 4 - Concurrency +# Scheduling and Threading -Rx is primarily a system for querying _data in motion_ asynchronously. To effectively provide the level of asynchrony that developers require, some level of concurrency control is required. We need the ability to generate sequence data concurrently to the consumption of the sequence data. +Rx is primarily a system for working with _data in motion_ asynchronously. To effectively provide the level of asynchrony that developers require, some level of concurrency control is required. If we are dealing with multiple information sources, they may well generate data concurrently. We may want some degree of parallelism when processing data to achieve our scalability targets, but we will need control over this. -In this fourth and final part of the book, we will look at the various concurrency considerations one must undertake when querying data in motion. We will look how to avoid concurrency when possible and use it correctly when justifiable. We will look at the excellent abstractions Rx provides, that enable concurrency to become declarative and also unit testable. In my opinion, theses two features are enough reason alone to adopt Rx into your code base. We will also look at the complex issue of querying concurrent sequences and analyzing data in sliding windows of time. +So far, we have managed to avoid any explicit usage of threading or concurrency. There are some methods that we have had to deal with timing to perform their jobs. (For example, `Buffer`, `Delay`, `Sample` must arrange for work to happen on a particular schedule.) Most of this however, has been kindly abstracted away from us. This chapter will look the Rx's scheduling system which offers an elegant system for managing these concerns. -# Scheduling and threading +## Rx, Threads and Concurrency -So far, we have managed to avoid any explicit usage of threading or concurrency. There are some methods that we have covered that implicitly introduce some level of concurrency to perform their jobs (e.g. `Buffer`, `Delay`, `Sample` each require a separate thread/scheduler/timer to work their magic). Most of this however, has been kindly abstracted away from us. This chapter will look at the elegant beauty of the Rx API and its ability to effectively remove the need for `WaitHandle` types, and any explicit calls to `Thread`s, the `ThreadPool` or `Task`s. +Rx does not impose constraints on which threads we use. An `IObservable` is free to invoke its subscribers' `OnNext/Completed/Error` methods on any thread, perhaps a different thread for each call. Despite this free-for-all, there is one aspect of Rx that prevents chaos: observable sources must obey the [Fundamental Rules of Rx Sequences](02_KeyTypes.md#the-fundamental-rules-of-rx-sequences) under all circumstances. -## Rx is single-threaded by default +When we first explored these rules, we focused on how they determine the ordering of calls into any single observer—there can be any number of calls to `OnNext`, but once either `OnError` or `OnCompleted` have been invoked, there must be no further calls. But now that we're looking at concurrency, a different aspect of these rules becomes more important: for any single subscription, an observable source must not make concurrent calls into that subscription's observer. So if a source calls `OnNext`, it must wait until that call returns before either calling `OnNext` again, or calling `OnError` or `OnComplete`. -To be more accurate, Rx is a free threaded model. +The upshot for observers is that as long as your observer is involved in just one subscription, it will only ever be asked to deal with one thing at a time. If doesn't matter if the source to which it is subscribed is a long and complex processing chain involving many different operators. Even if you build that source by combining multiple inputs (e.g., using [`Merge`](09_CombiningSequences.md#merge)), the fundamental rules require that if you called `Subscribe` just once on a single `IObservable`, that source is never allowed to make multiple concurrent calls into your `IObserver` methods. -A popular misconception is that Rx is multithreaded by default. It is perhaps more an idle assumption than a strong belief, much in the same way some assume that standard .NET events are multithreaded until they challenge that notion. We debunk this myth and assert that events are most certainly single threaded and synchronous in the [Appendix](19_DispellingMyths.html#DispellingEventMyths). +So although each call might come in on a different thread, the calls are strictly sequential (unless a single observer is involved in multiple subscriptions). -Like events, Rx is just a way of chaining callbacks together for a given notification. While Rx is a free-threaded model, this does not mean that subscribing or calling `OnNext` will introduce multi-threading to your sequence. Being free-threaded means that you are not restricted to which thread you choose to do your work. For example, you can choose to do your work such as invoking a subscription, observing or producing notifications, on any thread you like. The alternative to a free-threaded model is a _Single Threaded Apartment_ (STA) model where you must interact with the system on a given thread. It is common to use the STA model when working with User Interfaces and some COM interop. So, just as a recap: if you do not introduce any scheduling, your callbacks will be invoked on the same thread that the `OnNext`/`OnError`/`OnCompleted` methods are invoked from. +Rx operators that receive incoming notifications as well as producing them will notify their observers on whatever thread the incoming notification happened to arrive on. Suppose you have a sequence of operators like this: -In this example, we create a subject then call `OnNext` on various threads and record the threadId in our handler. +```cs +source + .Where(x => x.MessageType == 3) + .Buffer(10) + .Take(20) + .Subscribe(x => Console.WriteLine(x)); +``` -```csharp -Console.WriteLine("Starting on threadId:{0}", Thread.CurrentThread.ManagedThreadId); -var subject = new Subject(); +When that call to `Subscribe` happens, we end up with a chain of observers—the Rx-supplied observer that will invoke our callback was passed to the observable returned by `Take`, which will in turn create an observer that subscribed to the observable returned by `Buffer`, which will in turn create an observer subscribed to the `Where` observable, which will have created yet another observer which is subscribed to `source`. + +So when `source` decides to produce an item, it will invoke the `Where` operator's observer's `OnNext`. That will invoke the predicate, and if the `MessageType` is indeed 3, the `Where` observer will call `OnNext` on the `Buffer`'s observer, and it will do this on the same thread. The `Where` observer's `OnNext` isn't going to return until the `Buffer` observer's `OnNext` returns. Now if the `Buffer` observer determines that it has completely filled a buffer (e.g., it just received its 10th item), then it is also not going to return yet—it's going to invoke the `Take` observer's `OnNext`, and as long as `Take` hasn't already received 20 items, it's going to call `OnNext` on the Rx-supplied observer that will invoke our callback. + +So for the source notifications that make it all the way through to that `Console.WriteLine` in the callback passed to subscribe, we end up with a lot of nested calls on the stack: + +* `source` calls: + * `Where` observer, which calls: + * `Buffer` observer, which calls: + * `Take` observer, which calls: + * `Subscribe` observer, which calls our lambda + +This is all happening on one thread. Most Rx operators don't have any one particular thread that they call home. They just do their work on whatever thread the call comes in on. This makes Rx pretty efficient—passing data from one operator to the next merely involves a method call, and those are pretty fast. (In fact, there are typically a few more layers. Rx tends to add a few wrappers to handle errors and early unsubscription. So the call stack will look a bit more complex than what I've just shown. But it's still typically all just method calls.) + +You will sometimes hear Rx described as having a _free threaded_ model. All that means is that operators don't generally care what thread they use. As we will see, there are exceptions, but this direct calling by one operator of the next is the norm. + +An upshot of this is that it's typically the original source that determine which thread is used. This next example verifies by creating a subject, then calling `OnNext` on various threads and reporting the thread id. + +```cs +Console.WriteLine($"Main thread: {Environment.CurrentManagedThreadId}"); +var subject = new Subject(); subject.Subscribe( - o => Console.WriteLine("Received {1} on threadId:{0}", - Thread.CurrentThread.ManagedThreadId, - o)); + m => Console.WriteLine($"Received {m} on thread: {Environment.CurrentManagedThreadId}")); -ParameterizedThreadStart notify = obj => +object sync = new(); +ParameterizedThreadStart notify = arg => { - Console.WriteLine("OnNext({1}) on threadId:{0}", - Thread.CurrentThread.ManagedThreadId, - obj); - subject.OnNext(obj); + string message = arg?.ToString() ?? "null"; + Console.WriteLine( + $"OnNext({message}) on thread: {Environment.CurrentManagedThreadId}"); + lock (sync) + { + subject.OnNext(message); + } }; -notify(1); -new Thread(notify).Start(2); -new Thread(notify).Start(3); +notify("Main"); +new Thread(notify).Start("First worker thread"); +new Thread(notify).Start("Second worker thread"); ``` Output: ``` -Starting on threadId:9 -OnNext(1) on threadId:9 -Received 1 on threadId:9 -OnNext(2) on threadId:10 -Received 2 on threadId:10 -OnNext(3) on threadId:11 -Received 3 on threadId:11 +Main thread: 1 +OnNext(Main) on thread: 1 +Received Main on thread: 1 +OnNext(First worker thread) on thread: 10 +Received First worker thread on thread: 10 +OnNext(Second worker thread) on thread: 11 +Received Second worker thread on thread: 11 ``` -Note that each `OnNext` was called back on the same thread that it was notified on. This is not always what we are looking for. Rx introduces a very handy mechanism for introducing concurrency and multithreading to your code: Scheduling. +Note that the handler passed to `Subscribe` was called back on the same thread that made the call to `OnNext`. This is straightforward and efficient. However, things are not always this simple. -## SubscribeOn and ObserveOn +## Timed invocation -In the Rx world, there are generally two things you want to control the concurrency model for: +Some notifications will not be the immediate result of a source providing an item. For example, Rx offers a [`Delay`] operator, which time shifts the delivery of items. This next example is based on the preceding one, with the main difference being that we no longer subscribe directly to the source. We go via `Delay`: -- The invocation of the subscription -- The observing of notifications +```cs +Console.WriteLine($"Main thread: {Environment.CurrentManagedThreadId}"); +var subject = new Subject(); -As you could probably guess, these are exposed via two extension methods to `IObservable` called `SubscribeOn` and `ObserveOn`. Both methods have an overload that take an `IScheduler` (or `SynchronizationContext`) and return an `IObservable` so you can chain methods together. +subject + .Delay(TimeSpan.FromSeconds(0.25)) + .Subscribe( + m => Console.WriteLine($"Received {m} on thread: {Environment.CurrentManagedThreadId}")); -```csharp -public static class Observable +object sync = new(); +ParameterizedThreadStart notify = arg => { - public static IObservable ObserveOn( - this IObservable source, - IScheduler scheduler) - {...} - - public static IObservable ObserveOn( - this IObservable source, - SynchronizationContext context) - {...} - - public static IObservable SubscribeOn( - this IObservable source, - IScheduler scheduler) - {...} - - public static IObservable SubscribeOn( - this IObservable source, - SynchronizationContext context) - {...} -} + string message = arg?.ToString() ?? "null"; + Console.WriteLine( + $"OnNext({message}) on thread: {Environment.CurrentManagedThreadId}"); + lock (sync) + { + subject.OnNext(message); + } +}; + +notify("Main 1"); +Thread.Sleep(TimeSpan.FromSeconds(0.1)); +notify("Main 2"); +Thread.Sleep(TimeSpan.FromSeconds(0.3)); +notify("Main 3"); +new Thread(notify).Start("First worker thread"); +Thread.Sleep(TimeSpan.FromSeconds(0.1)); +new Thread(notify).Start("Second worker thread"); + +Thread.Sleep(TimeSpan.FromSeconds(2)); ``` -One pitfall I want to point out here is, the first few times I used these overloads, I was confused as to what they actually do. You should use the `SubscribeOn` method to describe how you want any warm-up and background processing code to be scheduled. For example, if you were to use `SubscribeOn` with `Observable.Create`, the delegate passed to the `Create` method would be run on the specified scheduler. +This also waits for a while between sending source items, so we can see the effect of `Delay`. Here's the output: -In this example, we have a sequence produced by `Observable.Create` with a standard subscription. +``` +Main thread: 1 +OnNext(Main 1) on thread: 1 +OnNext(Main 2) on thread: 1 +Received Main 1 on thread: 12 +Received Main 2 on thread: 12 +OnNext(Main 3) on thread: 1 +OnNext(First worker thread) on thread: 13 +OnNext(Second worker thread) on thread: 14 +Received Main 3 on thread: 12 +Received First worker thread on thread: 12 +Received Second worker thread on thread: 12 +``` -```csharp -Console.WriteLine("Starting on threadId:{0}", Thread.CurrentThread.ManagedThreadId); +Notice that in this case every `Received` message is on thread id 12, which is different from any of the three threads on which the notifications were raised. + +This shouldn't be entirely surprising. The only way Rx could have used the original thread here would be for `Delay` to block the thread for the specified time (a quarter of a second here) before forwarding the call. This would be unacceptable for most scenarios, so instead, the `Delay` operator arranges for a callback to occur after a suitable delay. As you can see from the output, these all seems to happen on one particular thread. No matter which thread calls `OnNext`, the delayed notification arrives on thread id 12. But this is not a thread created by the `Delay` operator. This is happening because `Delay` is using a _scheduler_. + + +## Schedulers + +Schedulers do three things: + +* determining the context in which to execute work (e.g., a certain thread) +* deciding when to execute work (e.g., immediately, or deferred) +* keeping track of time + +Here's a simple example to explore the first two of those: + +```cs +Console.WriteLine($"Main thread: {Environment.CurrentManagedThreadId}"); + +Observable + .Range(1, 5) + .Subscribe( + m => Console.WriteLine($"Received {m} on thread: {Environment.CurrentManagedThreadId}")); + +Console.WriteLine("Subscribe returned"); +Console.ReadLine(); +``` + +It might not be obvious that this has anything to do with scheduling, but in fact, `Range` always uses a scheduler to do its work. We've just let it use its default scheduler. Here's the output: + +``` +Main thread: 1 +Received 1 on thread: 1 +Received 2 on thread: 1 +Received 3 on thread: 1 +Received 4 on thread: 1 +Received 5 on thread: 1 +Subscribe returned +``` + +Looking at the first two items in our list of what schedulers do, we can see that the context in which this has executed the work is the thread on which I called `Suscribe`. And as for when it has decided to execute the work, it has decided to do it all before `Subscribe` returns. So you might think that `Range` immediately produces all of the items we've asked for and then returns. However, it's not quite as simple as that. Let's look at what happens if we have multiple `Range` instances running simultaneously. This introduces an extra operator—a `SelectMany` that calls `Range` again: -var source = Observable.Create(o => +```cs +Observable + .Range(1, 5) + .SelectMany(i => Observable.Range(i * 10, 5)) + .Subscribe( + m => Console.WriteLine($"Received {m} on thread: {Environment.CurrentManagedThreadId}")); +``` + +The output shows that `Range` doesn't in fact necessarily produce all of its items immediately: + +``` +Received 10 on thread: 1 +Received 11 on thread: 1 +Received 20 on thread: 1 +Received 12 on thread: 1 +Received 21 on thread: 1 +Received 30 on thread: 1 +Received 13 on thread: 1 +Received 22 on thread: 1 +Received 31 on thread: 1 +Received 40 on thread: 1 +Received 14 on thread: 1 +Received 23 on thread: 1 +Received 32 on thread: 1 +Received 41 on thread: 1 +Received 50 on thread: 1 +Received 24 on thread: 1 +Received 33 on thread: 1 +Received 42 on thread: 1 +Received 51 on thread: 1 +Received 34 on thread: 1 +Received 43 on thread: 1 +Received 52 on thread: 1 +Received 44 on thread: 1 +Received 53 on thread: 1 +Received 54 on thread: 1 +Subscribe returned +``` + +The first nested `Range` produces by the `SelectMany` callback produces a couple of values (10 and 11) but then the second one manages to get its first value out (20) before the first one produces its third (12). You can see there's some interleaving of progress here. So although the context in which work is executed continues to be the thread on which we invoked `Subscribe`, the second choice the scheduler has to make—when to execute the work—is more subtle than it first seems. This tells us that `Range` is not as simple as this naive implementation: + +```cs +public static IObservable NaiveRange(int start, int count) { - Console.WriteLine("Invoked on threadId:{0}", Thread.CurrentThread.ManagedThreadId); - o.OnNext(1); - o.OnNext(2); - o.OnNext(3); - o.OnCompleted(); - Console.WriteLine("Finished on threadId:{0}", - Thread.CurrentThread.ManagedThreadId); - return Disposable.Empty; -}); + return System.Reactive.Linq.Observable.Create(obs => + { + for (int i = 0; i < count; i++) + { + obs.OnNext(start + i); + } -source - //.SubscribeOn(Scheduler.ThreadPool) + return Disposable.Empty; + }); +} +``` + +If `Range`` worked like that, this code would produce all of the items from the first range returned by the `SelectMany` callback before moving on to the next. In fact, Rx does provide a scheduler that would give us that behaviour if that's what we want. This example passes `ImmediateScheduler.Instance` to the nested `Observable.Range` call: + +```cs +Observable + .Range(1, 5) + .SelectMany(i => Observable.Range(i * 10, 5, ImmediateScheduler.Instance)) .Subscribe( - o => Console.WriteLine("Received {1} on threadId:{0}", Thread.CurrentThread.ManagedThreadId, o), - () => Console.WriteLine("OnCompleted on threadId:{0}", Thread.CurrentThread.ManagedThreadId) - ); + m => Console.WriteLine($"Received {m} on thread: {Environment.CurrentManagedThreadId}")); +``` + +Here's the outcome: + +``` +Received 10 on thread: 1 +Received 11 on thread: 1 +Received 12 on thread: 1 +Received 13 on thread: 1 +Received 14 on thread: 1 +Received 20 on thread: 1 +Received 21 on thread: 1 +Received 22 on thread: 1 +Received 23 on thread: 1 +Received 24 on thread: 1 +Received 30 on thread: 1 +Received 31 on thread: 1 +Received 32 on thread: 1 +Received 33 on thread: 1 +Received 34 on thread: 1 +Received 40 on thread: 1 +Received 41 on thread: 1 +Received 42 on thread: 1 +Received 43 on thread: 1 +Received 44 on thread: 1 +Received 50 on thread: 1 +Received 51 on thread: 1 +Received 52 on thread: 1 +Received 53 on thread: 1 +Received 54 on thread: 1 +Subscribe returned +``` + +By specifying `ImmediateScheduler.Instance` we've asked for a particular policy: this invokes all work on the caller's thread, and it always does so immediately, avoiding introducing any concurrency. There are a couple of reasons this is not `Range`'s default. (Its default is `Scheduler.CurrentThread`, which always returns an instance of `CurrentThreadScheduler`.) First, `ImmediateScheduler.Instance` can end up causing fairly deep call stacks—most of the other schedulers maintain work queues, so if one operator decides it has new work to do while another is in the middle of doing something (e.g., a nested `Range` operator decides to start emitting its values), instead of starting that work immediately (which will involve invoking the method that will do the work) that work can be put on a queue instead, enabling the work already in progress to finish before starting on the next thing. Using the immediate scheduler everywhere can cause stack overflows when queries become complex. The second reason `Range` does not use the immediate scheduler is so that when multiple observables are all active at once, they can all make some progress—`Range` produces all of its items as quickly as it can, so it could end up starving other operators of CPU time if it didn't use a scheduler that enabled operators to take it in turns. + +Notice that the `Subscribe returned` message appears last. So although the `CurrentThreadScheduler` isn't quite as eager as the immediate scheduler, it still won't return to its called until it has completed all outstanding work. It maintains a work queue, enabling slightly more fairness, and avoiding stack overflows, but as soon as anything asks the `CurrentThreadScheduler` to do something, it won't return until it has drained its queue. + +Not all schedulers have this characteristic. Here's a variation on the earlier example in which we have just a single call to `Range`, without any nested observables. This time I'm asking it to use the `TaskPoolScheduler`. + +```cs +Observable + .Range(1, 5, TaskPoolScheduler.Default) + .Subscribe( + m => Console.WriteLine($"Received {m} on thread: {Environment.CurrentManagedThreadId}")); +``` -Console.WriteLine("Subscribed on threadId:{0}", Thread.CurrentThread.ManagedThreadId); +This makes a different decision about the context in which to run work from the immediate and current thread schedulers, as we can see from its output: + +```cs +Main thread: 1 +Subscribe returned +Received 1 on thread: 12 +Received 2 on thread: 12 +Received 3 on thread: 12 +Received 4 on thread: 12 +Received 5 on thread: 12 ``` -Output: +Notice that the notifications all happened on a different thread (with id 12) than the thread on which we invoked `Subscribe` (id 1). That's because the `TaskPoolScheduler`'s defining feature is that it invokes all work through the Task Parallel Library's (TPL) task pool. That's why we see a different thread id: the task pool doesn't own our application's main thread. In this case, it hasn't seen any need to spin up multiple threads. That's reasonable, there's just a single source here providing item one at a time. It's good that we didn't get more threads in this case—the thread pool is at its most efficient when a single thread processes work items sequentially, because it avoids context switching overheads, and since there's no actual scope for concurrent work here, we would gain nothing if it had created multiple threads in this case. + +There's one other very significant difference with this scheduler: notice that the call to `Subscribe` returned before _any_ of the notifications were made it through to our observer. That's because this is the first scheduler we've looked at that will introduce real parallelism. The `ImmediateScheduler` and `CurrentThreadScheduler` will never spin up new threads by themselves, no matter how much the operators executing might want to perform concurrent operations. And although the `TaskPoolScheduler` determined that there's no need for it to create multiple threads, the one thread it did create is a different thread from the application's main thread, meaning that the main thread can continue to run in parallel with this subscription. Since `TaskPoolScheduler` isn't going to do any work on the thread that initiated the work, it can return as soon as it has queued the work up, enabling the `Subscribe` method to return immediately. +What if we use the `TaskPoolScheduler` in the example with nested observables? This uses it just on the inner call to `Range`, so the outer one will still use the default `CurrentThreadScheduler`: + +```cs +Observable + .Range(1, 5) + .SelectMany(i => Observable.Range(i * 10, 5, TaskPoolScheduler.Default)) + .Subscribe( + m => Console.WriteLine($"Received {m} on thread: {Environment.CurrentManagedThreadId}")); +``` + +Now we can see a few more threads getting involved: + +``` +Received 10 on thread: 13 +Received 11 on thread: 13 +Received 12 on thread: 13 +Received 13 on thread: 13 +Received 40 on thread: 16 +Received 41 on thread: 16 +Received 42 on thread: 16 +Received 43 on thread: 16 +Received 44 on thread: 16 +Received 50 on thread: 17 +Received 51 on thread: 17 +Received 52 on thread: 17 +Received 53 on thread: 17 +Received 54 on thread: 17 +Subscribe returned +Received 14 on thread: 13 +Received 20 on thread: 14 +Received 21 on thread: 14 +Received 22 on thread: 14 +Received 23 on thread: 14 +Received 24 on thread: 14 +Received 30 on thread: 15 +Received 31 on thread: 15 +Received 32 on thread: 15 +Received 33 on thread: 15 +Received 34 on thread: 15 +``` + +Since we have only a single observer in this example, the rules of Rx require it to be given items one at a time, so in practice there wasn't really any scope for parallelism here, but the more complex structure would have resulted in more work items initially going into the scheduler's queue than in the preceding example, which is probably why the work got picked up by more than one thread this time. In practice most of these threads would have spent most of their time blocked in the code inside `SelectMany` that ensures that it delivers one item at a time to its target observer. It's perhaps a little surprising that the items are not more scrambled. The subranges themselves seem to have emerged in a random order, but it has almost produced the items sequentially within each subrange (with item 14 being the one exception to that). This is a quirk relating to the way in which `Range` interacts with the `TaskPoolScheduler`. + +I've not yet talked about the scheduler's third job: keeping track of time. This doesn't arise with `Range` because it attempts to produce all of its items as quickly as it can. But for the `Delay` operator I showed in the [Timed Invocation](#timed-invocation) section, timing is obviously a critical element. In fact this would be a good point to show the API that schedulers offer: + +```cs +public interface IScheduler +{ + DateTimeOffset Now { get; } + IDisposable Schedule(TState state, Func action); + IDisposable Schedule(TState state, TimeSpan dueTime, Func action); + IDisposable Schedule(TState state, DateTimeOffset dueTime, Func action); +} ``` -Starting on threadId:9 -Invoked on threadId:9 -Received 1 on threadId:9 -Received 2 on threadId:9 -Received 3 on threadId:9 -OnCompleted on threadId:9 -Finished on threadId:9 -Subscribed on threadId:9 + +You can see that all but one of these is concerned with timing. Only the first `Schedule` overload is not—operators call this when they want to schedule work to run as soon as the scheduler will allow. That's the overload used by `Range`. (Strictly speaking, `Range` interrogates the scheduler to find out whether it supports long-running operations, in which an operator can temporary control of a thread for an extended period. It prefers to use that when it can because it tends to be more efficient than submitting work to the scheduler for every single item it wishes to produce. The `TaskPoolScheduler` does support long running operations, which explains the slightly surprising output we saw earlier, but the `CurrentThreadScheduler`, `Range`'s default choice, does not. So by default, `Range` will invoke that first `Schedule` overload once for each item it wishes to produce.) + +`Delay` uses the second overload. The exact implementation is quite complex (mainly because of how it catches up efficiently when a busy source causes it to fall behind) but in essence, each time a new item arrives into the `Delay` operator, it schedules a work item to run after the configured delay, so that it can supply that item to its subscriber with the expected time shift. + +Schedulers have to be responsible for managing time, because .NET has several different timer mechanisms, and the choice of timer is often determined by the context in which you want to handle a timer callback. Since schedulers determine the context in which work runs, that means them must also choose the timer type. For example, UI frameworks typically provide timers that invoke their callbacks in a context suitable for making updates to the user interface. Rx provides some UI-framework-specific schedulers that use these timers, but these would be inappropriate choices for other scenarios. So each scheduler uses a timer suitable for the context in which it is going to run work items. + +There's a useful upshot of this: because `IScheduler` provides an abstraction for timing-related details, it is possible to virtualize time. This is very useful for testing. If you look at the extensive test suite in the [Rx repository](https://github.com/dotnet/reactive) you will find that there are many tests that verify timing-related behaviour. If these ran in real-time, the test suite would take far too long to run, and would also be likely to produce the odd spurious failure, because background tasks running on the same machine as the tests will occasionally change the speed of execution in a way that might confuse the test. Instead, these tests use a specialized scheduler that provides complete control over the passage of time. + +Notice that all three `IScheduler.Schedule` methods require a callback. A scheduler will invoke this at the time and in the context that it chooses. A scheduler callback takes another `IScheduler` as its first argument. This enables + +Rx supplies several schedulers. The following sections describe the most widely used ones. + +### ImmediateScheduler + +`ImmediateScheduler` is the simplest scheduler Rx offers. As you saw in the preceding sections, whenever it is asked to schedule some work, it just runs it immediately. It does this inside its `IScheduler.Schedule` method. + +This is a very simple strategy, and it makes `ImmediateScheduler` very efficient. For this reason, many operators default to using `ImmediateScheduler`. However, it can be problematic with operators that instantly produce multiple items, especially when the number of items might be large. For example, Rx defines the [`ToObservable` extension method for `IEnumerable`](03_CreatingObservableSequences.md#from-ienumerablet). When you subscribe to an `IObservable` returned by this, it will start iterating over the collection immediately, and if you were to tell it to use the `ImmediateScheduler`, `Subscribe` would not return until it reached the end of the collection. That would obviously be a problem for an infinite sequence, and it's why operators of this kind do not use `ImmediateScheduler` by default. + +The `ImmediateScheduler` also has potentially surprising behaviour when you invoke the `Schedule` overload that takes a `TimeSpan`. This asks the scheduler to run some work after the specified length of time. The way it achieves this is to call `Thread.Sleep`. With most of Rx's schedulers, this overload will arrange for some sort of timer mechanism to run the code later, enabling the current thread to get on with its business, but `ImmediateScheduler` is true to its name here, in that it refuses to engage in such deferred execution. It just blocks the current thread until it is time to do the work. This means that time-based observables like those returned by `Interval` would work if you specified this scheduler, but at the cost of preventing the thread from doing anything else. + +The `Schedule` overload that takes a `DateTime` is slightly different. If you specify a time less than 10 seconds into the future, it will block the calling thread like it does when you use `TimeSpan`. But if you pass a `DateTime` that is further into the future, it gives up on immediate execution, and falls back to using a timer. + +### CurrentThreadScheduler + +The `CurrentThreadScheduler` is very similar to the `ImmediateScheduler`. The difference is how it handles sources that logically produce multiple such as the [`ToObservable` extension method for `IEnumerable`](03_CreatingObservableSequences.md#from-ienumerablet), or [`Observable.Range`](03_CreatingObservableSequences.md#observablerange) + +These kinds of operators do not use normal `for` or `foreach` loops. They typically schedule a new work item for each iteration. Whereas the `ImmediateScheduler` will run such work immediately, the `CurrentThreadScheduler` checks to see if it is already processing a work item. That happens with this example from earlier: + +```cs +Observable + .Range(1, 5) + .SelectMany(i => Observable.Range(i * 10, 5)) + .Subscribe( + m => Console.WriteLine($"Received {m} on thread: {Environment.CurrentManagedThreadId}")); ``` -You will notice that all actions were performed on the same thread. Also, note that everything is sequential. When the subscription is made, the `Create` delegate is called. When `OnNext(1)` is called, the `OnNext` handler is called, and so on. This all stays synchronous until the `Create` delegate is finished, and the `Subscribe` line can move on to the final line that declares we are subscribed on thread 9. +Let's follow exactly what happens here. First, assume that this code is just running normally—perhaps inside the `Main` entry point of a program. When this code calls `Subscribe` on the `IObservable` returned by `SelectMany`, that will in turn will call `Subscribe` on the `IObservable` returned by `Observable.Range`, which will in turn schedule a work item for the generation of the first value in the range (`1`). + +The `Range` operator uses the `CurrentThreadScheduler` by default, and that will ask itself "Am I already in the middle of handling some work item on this thread?" In this case the answer will be no, so it will run the work item immediately (before returning from the `Schedule` call made by the `Range` operator). The `Range` operator will then produce its first value, calling `OnNext` on the `IObserver` that the `SelectMany` operator provided when it subscribed to the range. -If we apply `SubscribeOn` to the chain (i.e. un-comment it), the order of execution is quite different. +The `SelectMany` operator's `OnNext` method will now invoke its lambda, passing in the argument supplied (the value `1` from the `Range` operator). You can see from the example above that this lambda calls `Observable.Range` again, returning a new `IObservable`. `SelectMany` will immediately subscribe to this (before returning from its `OnNext`). This is the second time this code has ended up calling `Subscribe` on an `IObservable` returned by a `Range` (but it's a different instance than the last time), and `Range` will once again default to using the `CurrentThreadScheduler`, and will once again schedule a work item to perform the first iteration. +So once again,the `CurrentThreadScheduler` will ask itself "Am I already in the middle of handling some work item on this thread?" But this time, the answer will be yes. And this is where the behaviour is different than `ImmediateScheduler`. The `CurrentThreadScheduler` maintains a queue of work for each thread that it gets used on, and in this case it just adds the newly scheduled work to the queue, and returns back to the `SelectMany` operators `OnNext`. + +`SelectMany` has now completed its handling of this item (the value `1`) from the first `Range`, so its `OnNext` returns. At this point, this `Range` operator schedules another work item. Again, the `CurrentThreadScheduler` will detect that it is currently running a work item, so it just adds this to the queue. + +Having scheduled the work item that is going to generate its second value (`2`), the `Range` operator returns. Remember, the code in the `Range` operator that was running at this point was the callback for the first scheduled work item, so it's returning to the `CurrentThreadScheduler`—we are back inside its `Schedule` method. + +At this point, the `CurrentThreadScheduler` does not return from `Schedule` because it checks its work queue, and will see that there are now two items in the queue. (There's the work item that the nested `Range` observable scheduled to generate its first value, and there's also the work item that the top-level `Range` observable just scheduled to generate its second value.) The `CurrentThreadScheduler` will now execute the first of these—the nested `Range` operator now gets to generate its first value (which will be `10`), so it calls `OnNext` on the observer supplied thanks to the top-level call to `Subscribe` in the example. And that observer will just call the lambda we passed to `Subscribe`, causing our `Console.WriteLine` to run. After that returns, the nested `Range` operator will schedule another work item to generate its second item. Again, the `CurrentThreadScheduler` will realise that it's already in the middle of handling a work item on this thread, so it just puts it in the queue and then returns immediately from `Schedule`. The nested `Range` operator is now done for this iteration so it returns back to the scheduler. The scheduler will now pick up the next item in the queue, which in this case it the work item added by the top-level `Range` to produce the second item. + +And so it continues. This queuing of work items when work is already in progress is what enables multiple observable sources to make progress in parallel. + +By contrast, the `ImmediateScheduler` runs new work items immediately, which is why we don't see this parallel progress. + +(To be strictly accurate, there are certain scenarios in which `ImmediateScheduler` can't run work immediately. In these iterative scenarios, it actually supplies a slightly different scheduler that the operators use to schedule all work after the first item, and this checks whether it's being asked to process multiple work items simultaneously. If it is, it falls back to a queuing strategy similar to `CurrentThreadScheduler`, except it's a queue local to the initial work item, instead of a per-thread queue. This prevents problems either due to multithreading, and it also avoids stack overflows that would otherwise occur when an iterative operator schedules a new work item inside the handler for the current work item. Since the queue is not shared across all work in the thread, this still has the effect of ensuring that any nested work queued up by a work item completes before the call to `Schedule` returns. So even when this queueing kicks in, we typically don't see interleaving of work from separate source like we do with `CurrentThreadScheduler`.) + +### DefaultScheduler + +The `DefaultScheduler` is intended for work that may need to be spread out over time, or where you are likely to want concurrent execution. These features mean that this can't guarantee to run work on any particular thread, and in practice it schedulers work via the CLR's thread pool. This is the default scheduler for all of Rx's time-based operators, and also for the `Observable.ToAsync` operator that can wrap a .NET method as an `IObservable`. + +Although this scheduler is useful if you would prefer work not to happen on your current thread—perhaps you're writing an application with a user interface and your code is running on the thread responsible for updating the UI and responding to user input—the fact that it can end up running work on any thread may make like complicated. What if you want all the work to happen on one thread, just not the thread you're on now? There's another scheduler for that. + +### EventLoopScheduler + +The `EventLoopScheduler` provides one-at-a-time scheduling, queuing up newly scheduled work items. This is similar to how the `CurrentThreadScheduler` operates if you use it from just one thread. The difference is that `EventLoopScheduler` creates a dedicated thread for this work instead of using whatever thread you happen to schedule the work from. + +### HistoricalScheduler + +The `HistoricalScheduler`. Should we do this one? + +Many Rx operators provide overloads that accepts an `IScheduler` + +### NewThreadScheduler + +The `NewThreadScheduler` creates a new thread to execute every work item it is given. This is unlikely to make sense in most scenarios. However, it might be useful in cases where you want to execute some long running work, and represent its completion through an `IObservable`. The `Observable.ToAsync` does exactly this, and will normally use the `DefaultScheduler`, meaning it will run the work on a thread pool thread. But it the work is likely to take more than second or two, the thread pool may not be a good choice, because it is optimized for short execution times, and its heuristics for managing the size of the thread pool are not designed with long-running operations in mind. The `NewThreadScheduler` may be a better choice in this case. + +### SynchronizationContextScheduler + +This invokes all work through a [`SynchronizationContext`](https://learn.microsoft.com/en-us/dotnet/api/system.threading.synchronizationcontext). This is useful in user interface scenarios—most .NET client-side user interface frameworks make a `SynchronizationContext` available that can be used to invoke callbacks in a context suitable for making changes to the UI. (Typically this involves invoking them on the correct thread, but individual implementations can decide what constitutes the appropriate context.) + +### TaskPoolScheduler + +Invokes all work through the TPL task pool. The TPL task pool is newer than the CLR thread pool. Rx's DefaultScheduler uses the older CLR thread pool for backwards compatibility reasons, but the TPL task pool can offer performance benefits in some scenarios. + +### ThreadPoolScheduler + +Invokes all work through the CLR thread pool. + +TODO: it's not clear when you'd use this, not the DefaultScheduler. + +### UI Framework Schedulers: ControlScheduler, DispatcherScheduler and CoreDispatcherScheduler + +Although the `SynchronizationContextScheduler` will work for all widely used client-side UI frameworks in .NET, Rx offers more specialized schedulers. `ControlScheduler` is for Windows Forms applications, `DispatcherScheduler` for WPF, and `CoreDispatcherScheduler` for UWP. + +These more specialized types offer two benefits. First, you don't necessarily have to be on the target UI thread to obtain an instance of these schedulers. Whereas with `SynchronizationContextScheduler` the only way you can generally obtain the `SynchronizationContext` this requires is by retrieving `SynchronizationContext.Current` while running on the UI thread. But these other UI-framework-specific schedulers can be passed a suitable `Control`, `Dispatcher` or `CoreDispatcher`, which it's possible to obtain from a non-UI thread. Second, `DispatcherScheduler` and `CoreDispatcherScheduler` provide a way to use the prioritisation mechanism supported by the `Dispatcher` and `CoreDispatcher` types. + + + +## SubscribeOn and ObserveOn + +So far, I've talked about why some Rx sources need access to schedulers—this is necessary for timing-related behaviour, and also for sources that produce items as quickly as possible. But remember, schedulers control three things: + +* determining the context in which to execute work (e.g., a certain thread) +* deciding when to execute work (e.g., immediately, or deferred) +* keeping track of time + +The discussion so far as mostly focused on the 2nd and 3rd features. When it comes to our own application code, we are most likely to use schedulers to control that first aspect. Rx defines two extension methods to `IObservable` for this: `SubscribeOn` and `ObserveOn`. Both methods take an `IScheduler` and return an `IObservable` so you can chain more operators downstream of these. + +These methods do what their names suggest. If you use `SubscribeOn`, then when you call `Subscribe` on the resulting `IObservable` it arranges to call the original `IObservable`'s `Subscribe` method via the specified scheduler. Here's an example: + +```cs +Console.WriteLine($"Main thread: {Environment.CurrentManagedThreadId}"); + +Observable + .Interval(TimeSpan.FromSeconds(1)) + .SubscribeOn(new EventLoopScheduler((start) => + { + Thread t = new(start) { IsBackground = false }; + Console.WriteLine($"Created thread for EventLoopScheduler: {t.ManagedThreadId}"); + return t; + })) + .Subscribe( + tick => Console.WriteLine($"{DateTime.Now}-{Environment.CurrentManagedThreadId}: Tick {tick}")); + +Console.WriteLine($"{DateTime.Now}-{Environment.CurrentManagedThreadId}: Main thread exiting"); ``` -Starting on threadId:9 -Subscribed on threadId:9 -Invoked on threadId:10 -Received 1 on threadId:10 -Received 2 on threadId:10 -Received 3 on threadId:10 -OnCompleted on threadId:10 -Finished on threadId:10 + +This calls `Observable.Interval` (which uses `DefaultScheduler` by default), but instead of subscribing directly to this, it first takes the `IObservable` returned by `Interval` and invokes `SubscribeOn`. I've used an `EventLoopScheduler`, and I've passed it a factory callback for the thread that it will use to ensure that it is a non-background thread. (By default `EventLoopScheduler` creates itself a background thread, meaning that the thread won't force the process to stay alive. Normally that's what you'd want but I'm changing that in this example to show what's happening.) + +When I call `Subscribe` on the `IObservable` returned by `SubscribeOn`, it calls `Schedule` on the `EventLoopScheduler` that I supplied, and in the callback for that work item, it then calls `Subscribe` on the original `Interval` source. So the effect is that the subscription to the underlying source doesn't happen on my main thread, it happens on the thread created for my `EventLoopScheduler`. Running the program produces this output: + +``` +Main thread: 1 +Created thread for EventLoopScheduler: 12 +21/07/2023 14:57:21-1: Main thread exiting +21/07/2023 14:57:22-6: Tick 0 +21/07/2023 14:57:23-6: Tick 1 +21/07/2023 14:57:24-6: Tick 2 +... ``` -Observe that the subscribe call is now non-blocking. The `Create` delegate is executed on the thread pool and so are all our handlers. +Notice that my application's main thread exits before the source begins producing notifications. But also notice that the thread id for the newly created thread is 12, and yet my notifications are coming through on a different thread, with id 6! What's happening? -The `ObserveOn` method is used to declare where you want your notifications to be scheduled to. I would suggest the `ObserveOn` method is most useful when working with STA systems, most commonly UI applications. When writing UI applications, the `SubscribeOn`/`ObserveOn` pair is very useful for two reasons: +This often catches people out. The scheduler on which you subscribe to an observable source doesn't necessarily have any impact on how the source behaves once it is up and running. Remember earlier that I said `Observable.Interval` uses `DefaultScheduler` by default? Well we've not specified a scheduler for the `Interval` here, so it will be using that default. It doesn't care what context we invoke its `Subscribe` method from. So really, the only effect of introducing the `EventLoopScheduler` here has been to keep the process alive even after its main thread exits. That scheduler thread never actually gets used again after it makes its initial `Subscribe` call into the `IObservable` returned by `Observable.Interval`. It just sits patiently waiting for further calls to `Schedule` that never come. -- you do not want to block the UI thread -- but you do need to update UI objects on the UI thread. +Not all sources are completely unaffected by the context in which their `Subscribe` is invoked, though. If I were to replace this line: -It is critical to avoid blocking the UI thread, as doing so leads to a poor user experience. General guidance for Silverlight and WPF is that any work that blocks for longer than 150-250ms should not be performed on the UI thread (Dispatcher). This is approximately the period of time over which a user can notice a lag in the UI (mouse becomes sticky, animations sluggish). In the upcoming Metro style apps for Windows 8, the maximum allowed blocking time is only 50ms. This more stringent rule is to ensure a consistent fast and fluid experience across applications. With the processing power offered by current desktop processors, you can achieve a lot of processing 50ms. However, as processor become more varied (single/multi/many core, plus high power desktop vs. lower power ARM tablet/phones), how much you can do in 50ms fluctuates widely. In general terms: any I/O, computational intensive work or any processing unrelated to the UI should be marshaled off the UI thread. The general pattern for creating responsive UI applications is: +```cs + .Interval(TimeSpan.FromSeconds(1)) +``` -- respond to some sort of user action -- do work on a background thread -- pass the result back to the UI thread -- update the UI +with this: -This is a great fit for Rx: responding to events, potentially composing multiple events, passing data to chained method calls. With the inclusion of scheduling, we even have the power to get off and back onto the UI thread for that responsive application feel that users demand. +```cs + .Range(1, 5) +``` -Consider a WPF application that used Rx to populate an `ObservableCollection`. You would almost certainly want to use `SubscribeOn` to leave the `Dispatcher`, followed by `ObserveOn` to ensure you were notified back on the Dispatcher. If you failed to use the `ObserveOn` method, then your `OnNext` handlers would be invoked on the same thread that raised the notification. In Silverlight/WPF, this would cause some sort of not-supported/cross-threading exception. In this example, we subscribe to a sequence of `Customers`. We perform the subscription on a new thread and ensure that as we receive `Customer` notifications, we add them to the `Customers` collection on the `Dispatcher`. +then we get this output: -```csharp -_customerService.GetCustomers() - .SubscribeOn(Scheduler.NewThread) - .ObserveOn(DispatcherScheduler.Instance) - // or .ObserveOnDispatcher() - .Subscribe(Customers.Add); ``` +Main thread: 1 +Created thread for EventLoopScheduler: 12 +21/07/2023 15:02:09-12: Tick 1 +21/07/2023 15:02:09-1: Main thread exiting +21/07/2023 15:02:09-12: Tick 2 +21/07/2023 15:02:09-12: Tick 3 +21/07/2023 15:02:09-12: Tick 4 +21/07/2023 15:02:09-12: Tick 5 +``` + +Now all the notifications are coming in on thread 12, the thread created for the `EventLoopScheduler`. Note that even here, `Range` isn't using that scheduler. The difference is that `Range` defaults to `CurrentThreadScheduler`, so it will generate its outputs from whatever thread you happen to call it from. So even though it's not actually using the `EventLoopScheduler`, it does end up using that scheduler's thread, because we used that scheduler to subscribe to the `Range`. -## Schedulers +So this illustrates that `SubscribeOn` is doing what it promises: it does determine the context from which `Subscribe` is invoked. It's just that it doesn't always matter what context that is. If `Subscribe` does non-trivial work, it can matter. For example, if you use [`Observable.Create`](03_CreatingObservableSequences.md#observablecreate) to create a custom sequence, `SubscribeOn` determines the context in which the callback you passed to `Create` is invoked. But Rx doesn't have a concept of a 'current' scheduler—there's no way to ask "which scheduler was I invoked from?"—so Rx operators don't just their scheduler from the context on which they were subscribed. -The `SubscribeOn` and `ObserveOn` methods required us to pass in an `IScheduler`. Here we will dig a little deeper and see what schedulers are, and what implementations are available to us. +When it comes to emitting items, most of the sources Rx supplies fall into one of three categories. First, operators that produce outputs in response to inputs from an upstream source (e.g., `Where`, `Select`, or `GroupBy) generally call their observers methods from inside their own `OnNext`. So whatever context their source observable was running in when it called `OnNext`, that's the context the operator will use when calling its observer. Second, operators that produce items either iteratively, or based on timing will use a scheduler (either explicitly supplied, or a default type when none is specified). Third, some sources just produce items from whatever context they like. For example, if an `async` method uses `await` and specifies `ConfigureAwait(false)` then it could be on more or less any thread and in any context after the `await` completes, and it might then go on to invoke `OnNext` on an observer. -There are two main types we use when working with schedulers: +As long as a source follows [the fundamental rules of Rx sequences](02_KeyTypes.md#the-fundamental-rules-of-rx-sequences), it's allowed to invoke its observer's methods from any context it likes. It can choose to accept a scheduler as input and to use that, but it's under no obligation to. And if you have such an unruly source that you'd like to tame, that's where the `ObserveOn` extension method comes in. Consider the following rather daft example: -
-
The `IScheduler` interface
-
A common interface for all schedulers
-
The static `Scheduler` class
-
Exposes both implementations of `IScheduler` and helpful extension methods to the `IScheduler` interface
-
+```cs +Observable + .Interval(TimeSpan.FromSeconds(1)) + .SelectMany(tick => Observable.Return(tick, NewThreadScheduler.Default)) + .Subscribe( + tick => Console.WriteLine($"{DateTime.Now}-{Environment.CurrentManagedThreadId}: Tick {tick}")); +``` -The `IScheduler` interface is of less importance right now than the types that implement the interface. The key concept to understand is that an `IScheduler` in Rx is used to schedule some action to be performed, either as soon as possible or at a given point in the future. The implementation of the `IScheduler` defines how that action will be invoked i.e. asynchronously via a thread pool, a new thread or a message pump, or synchronously on the current thread. Depending on your platform (Silverlight 4, Silverlight 5, .NET 3.5, .NET 4.0), you will be exposed most of the implementations you will need via a static class `Scheduler`. +This deliberately causes every notification to arrive on a different thread, as this output shows: -Before we look at the `IScheduler` interface in detail, let's look at the extension method we will use the most often and then introduce the common implementations. +``` +Main thread: 1 +21/07/2023 15:19:56-12: Tick 0 +21/07/2023 15:19:57-13: Tick 1 +21/07/2023 15:19:58-14: Tick 2 +21/07/2023 15:19:59-15: Tick 3 +... +``` -This is the most commonly used (extension) method for `IScheduler`. It simply sets an action to be performed as soon as possible. +(It's achieving this by calling `Observable.Return` for every single tick that emerges from `Interval`, and telling `Return` to use the `NewThreadScheduler`. Each such call to `Return` will create a new thread. This is a terrible idea, but it is an easy way to get a source that calls from a different context every time.) If I want to impose some order, I can add a call to `ObserveOn`: -```csharp -public static IDisposable Schedule(this IScheduler scheduler, Action action) -{...} +```cs +Observable + .Interval(TimeSpan.FromSeconds(1)) + .SelectMany(tick => Observable.Return(tick, NewThreadScheduler.Default)) + .ObserveOn(new EventLoopScheduler()) + .Subscribe( + tick => Console.WriteLine($"{DateTime.Now}-{Environment.CurrentManagedThreadId}: Tick {tick}")); ``` -You could use the method like this: +I've created an `EventLoopScheduler` here because it creates a single thread, and runs every scheduled work item on that thread. The output now shows the same thread id (13) every time: -```csharp -IScheduler scheduler = ...; -scheduler.Schedule(()=>{ Console.WriteLine("Work to be scheduled"); }); ``` +Main thread: 1 +21/07/2023 15:24:23-13: Tick 0 +21/07/2023 15:24:24-13: Tick 1 +21/07/2023 15:24:25-13: Tick 2 +21/07/2023 15:24:26-13: Tick 3 +... +``` + +So although each new observable created by `Observable.Return` creates a brand new thread, `ObserveOn` ensures that my observer's `OnNext` (and `OnCompleted` or `OnError` in cases where those are called) is invoked via the specified scheduler. + +### SubscribeOn and ObserveOn in UI applications -These are the static properties that you can find on the `Scheduler` type. +If you're using Rx in a user interface, `ObserveOn` is useful when you are dealing with information sources that don't provide notifications on the UI thread. You can wrap any `IObservable` with `ObserveOn`, passing a `SynchronizationContextScheduler` (or a framework-specific type such as `DispatcherScheduler`), to ensure that your observer receives notifications on the UI thread, making it safe to update the UI. -- `Scheduler.Immediate` will ensure the action is not scheduled, but rather executed immediately. -- `Scheduler.CurrentThread` ensures that the actions are performed on the thread that made the original call. This is different from `Immediate`, as `CurrentThread` will queue the action to be performed. We will compare these two schedulers using a code example soon. -- `Scheduler.NewThread` will schedule work to be done on a new thread. -- `Scheduler.ThreadPool` will schedule all actions to take place on the Thread Pool. -- `Scheduler.TaskPool` will schedule actions onto the TaskPool. This is not available in Silverlight 4 or .NET 3.5 builds. +`SubscribeOn` can also be useful in user interfaces as a way to ensure that any initialization work that an observable source does to get started does not happen on the UI thread. -If you are using WPF or Silverlight, then you will also have access to `DispatcherScheduler.Instance`. This allows you to schedule tasks onto the `Dispatcher` with the common interface, either now or in the future. There is the `SubscribeOnDispatcher()` and `ObserveOnDispatcher()` extension methods to `IObservable`, that also help you access the Dispatcher. While they appear useful, you will want to avoid these two methods for production code, and we explain why in the [Testing Rx](16_TestingRx.html) chapter. +Most UI frameworks designate one particular thread for receiving notifications from the user and also for updating the UI, for any one window. It is critical to avoid blocking this UI thread, as doing so leads to a poor user experience—if you are doing work on the UI thread, it will be unavailable for responding to user input until that work is done. As a general rule, if you cause a user interface to become unresponsive for longer than 100ms, users will become irritated, so you should not be perform any work that will take longer than this on the UI thread. When Microsoft first introduced its application store (which came in with Windows 8) they specified an even more stringent limit—if your application blocked the UI thread for longer than 50ms, it might not be allowed into the store. With the processing power offered by modern processors, you can achieve a lot of processing 50ms—even on the relatively low-powered processors in mobile devices that's long enough to execute millions of instructions. However, anything involving I/O (reading or writing files, or waiting for a response from any kind of network service) should not be done on the UI thread. The general pattern for creating responsive UI applications is: + +- respond to some sort of user action +- if slow work is required, do this on a background thread +- pass the result back to the UI thread +- update the UI -Most of the schedulers listed above are quite self explanatory for basic usage. We will take an in-depth look at all of the implementations of `IScheduler` later in the chapter. +This is a great fit for Rx: responding to events, potentially composing multiple events, passing data to chained method calls. With the inclusion of scheduling, we even have the power to get off and back onto the UI thread for that responsive application feel that users demand. -## Concurrency pitfalls +Consider a WPF application that used Rx to populate an `ObservableCollection`. You could use `SubscribeOn` to ensure that the main work was not done on the UI thread, followed by `ObserveOn` to ensure you were notified back on the correct thread. If you failed to use the `ObserveOn` method, then your `OnNext` handlers would be invoked on the same thread that raised the notification. In most UI frameworks, this would cause some sort of not-supported/cross-threading exception. In this example, we subscribe to a sequence of `Customers`. I'm using `Defer` so that if `GetCustomers` does any slow initial work before returning its `IObservable`, that won't happen until we subscribe. We then use `SubscribeOn` to call that method and perform the subscription on a task pool thread. Then we ensure that as we receive `Customer` notifications, we add them to the `Customers` collection on the `Dispatcher`. + +```csharp +Observable + .Defer(() => _customerService.GetCustomers()) + .SubscribeOn(TaskPoolScheduler.Default) + .ObserveOn(DispatcherScheduler.Instance) + .Subscribe(Customers.Add); +``` + +Rx also offers `SubscribeOnDispatcher()` and `ObserveOnDispatcher()` extension methods to `IObservable`, that automatically use the current thread's `Dispatcher` (and equivalents for `CoreDispatcher`). While these might be slightly more convenient they can make it harder to test your code. We explain why in the [Testing Rx](16_TestingRx.html) chapter. + + + +## Concurrency pitfalls Introducing concurrency to your application will increase its complexity. If your application is not noticeably improved by adding a layer of concurrency, then you should avoid doing so. Concurrent applications can exhibit maintenance problems with symptoms surfacing in the areas of debugging, testing and refactoring. @@ -228,7 +619,7 @@ In my opinion, the biggest danger when introducing concurrency haphazardly to an In a later chapter, [Testing Rx](16_TestingRx.html), we will look at how Rx improves your ability to test concurrent workflows. -### Lock-ups +### Lock-ups When working on my first commercial application that used Rx, the team found out the hard way that Rx code can most certainly deadlock. When you consider that some calls (like `First`, `Last`, `Single` and `ForEach`) are blocking, and that we can schedule work to be done in the future, it becomes obvious that a race condition can occur. This example is the simplest block I could think of. Admittedly, it is fairly elementary but it will get the ball rolling. @@ -344,7 +735,7 @@ Rx will however make it easier to get it right, provided you follow these two si The last example came unstuck with one simple problem; the service was dictating the scheduling paradigm when, really, it had no business doing so. Before we had a clear idea of where we should be doing the scheduling in my first Rx project, we had all sorts of layers adding 'helpful' scheduling code. What it ended up creating was a threading nightmare. When we removed all the scheduling code and then confined it it in a single layer (at least in the Silverlight client), most of our concurrency problems went away. I recommend you do the same. At least in WPF/Silverlight applications, the pattern should be simple: "Subscribe on a Background thread; Observe on the Dispatcher". -## Advanced features of schedulers +## Advanced features of schedulers We have only looked at the most simple usage of schedulers so far: @@ -405,11 +796,11 @@ list.Add(1); Now that we are modifying shared state, we can get unpredictable results. In this example, we don't even know what type the scheduler is, so we cannot predict the race conditions we are creating. As with any concurrent software, you should avoid modifying shared state. -### Future scheduling +### Future scheduling As you would expect with a type called "IScheduler", you are able to schedule an action to be executed in the future. You can do so by specifying the exact point in time an action should be invoked, or you can specify the period of time to wait until the action is invoked. This is clearly useful for features such as buffering, timers etc. -Scheduling in the future is thus made possible by two styles of overloads, one that takes a `TimeSpan` and one that takes a `DateTimeOffset`. These are the two most simple overloads that execute an action in the future. +Scheduling in the future is thus made possible by two styles of overloads, one thattakes a `TimeSpan` and one that takes a `DateTimeOffset`. These are the two most simple overloads that execute an action in the future. ```csharp public static IDisposable Schedule( @@ -540,7 +931,7 @@ CancelLation requested The problem here is that we have introduced explicit use of `Task`. We can avoid explicit usage of a concurrency model if we use the Rx recursive scheduler features instead. -### Recursion +### Recursion The more advanced overloads of `Schedule` extension methods take some strange looking delegates as parameters. Take special note of the final parameter in each of these overloads of the `Schedule` extension method. @@ -618,7 +1009,7 @@ Running Note that we didn't have to write any cancellation code in our delegate. Rx handled the looping and checked for cancellation on our behalf. Brilliant! Unlike simple recursive methods in C#, we are also protected from stack overflows, as Rx provides an extra level of abstraction. Indeed, Rx takes our recursive method and transforms it to a loop structure instead. -#### Creating your own iterator +#### Creating your own iterator Earlier in the book, we looked at how we can use [Rx with APM](04_CreatingObservableSequences.html#FromAPM). In our example, we just read the entire file into memory. We also referenced Jeffrey van Gogh's [blog post](http://blogs.msdn.com/b/jeffva/archive/2010/07/23/rx-on-the-server-part-1-of-n-asynchronous-system-io-stream-reading.aspx), which sadly is now out of date; however, his concepts are still sound. Instead of the Iterator method from Jeffrey's post, we can use schedulers to achieve the same result. @@ -850,7 +1241,7 @@ This is example code and your mileage may vary. I find that increasing the buffe

--> -#### Combinations of scheduler features +#### Combinations of scheduler features We have discussed many features that you can use with the `IScheduler` interface. Most of these examples, however, are actually using extension methods to invoke the functionality that we are looking for. The interface itself exposes the richest overloads. The extension methods are effectively just making a trade-off; improving usability/discoverability by reducing the richness of the overload. If you want access to passing state, cancellation, future scheduling and recursion, it is all available directly from the interface methods. @@ -886,17 +1277,17 @@ namespace System.Reactive.Concurrency } ``` -## Schedulers in-depth +## Schedulers in-depth We have largely been concerned with the abstract concept of a scheduler and the `IScheduler` interface. This abstraction allows low-level plumbing to remain agnostic towards the implementation of the concurrency model. As in the file reader example above, there was no need for the code to know which implementation of `IScheduler` was passed, as this is a concern of the consuming code. Now we take an in-depth look at each implementation of `IScheduler`, consider the benefits and tradeoffs they each make, and when each is appropriate to use. -### ImmediateScheduler +### ImmediateScheduler -The `ImmediateScheduler` is exposed via the `Scheduler.Immediate` static property. This is the most simple of schedulers as it does not actually schedule anything. If you call `Schedule(Action)` then it will just invoke the action. If you schedule the action to be invoked in the future, the `ImmediateScheduler` will invoke a `Thread.Sleep` for the given period of time and then execute the action. In summary, the `ImmediateScheduler` is synchronous. +The `ImmediateScheduler` is exposed via the `ImmediateScheduler.Instance` static property. This is the most simple of schedulers as it does not actually schedule anything. If you call `Schedule(Action)` then it will just invoke the action. If you schedule the action to be invoked in the future, the `ImmediateScheduler` will invoke a `Thread.Sleep` for the given period of time and then execute the action. In summary, the `ImmediateScheduler` is synchronous. -### CurrentThreadScheduler +### CurrentThreadScheduler Like the `ImmediateScheduler`, the `CurrentThreadScheduler` is single-threaded. It is exposed via the `Scheduler.Current` static property. The key difference is that the `CurrentThreadScheduler` acts like a message queue or a _Trampoline_. If you schedule an action that itself schedules an action, the `CurrentThreadScheduler` will queue the inner action to be performed later; in contrast, the `ImmediateScheduler` would start working on the inner action straight away. This is probably best explained with an example. @@ -948,7 +1339,7 @@ public void ImmediateExample() Note how the `ImmediateScheduler` does not really "schedule" anything at all, all work is performed immediately (synchronously). As soon as `Schedule` is called with a delegate, that delegate is invoked. The `CurrentThreadScheduler`, however, invokes the first delegate, and, when nested delegates are scheduled, queues them to be invoked later. Once the initial delegate is complete, the queue is checked for any remaining delegates (i.e. nested calls to `Schedule`) and they are invoked. The difference here is quite important as you can potentially get out-of-order execution, unexpected blocking, or even deadlocks by using the wrong one. -### DispatcherScheduler +### DispatcherScheduler The `DispatcherScheduler` is found in `System.Reactive.Window.Threading.dll` (for WPF, Silverlight 4 and Silverlight 5). When actions are scheduled using the `DispatcherScheduler`, they are effectively marshaled to the `Dispatcher`'s `BeginInvoke` method. This will add the action to the end of the dispatcher's _Normal_ priority queue of work. This provides similar queuing semantics to the `CurrentThreadScheduler` for nested calls to `Schedule`. @@ -986,7 +1377,7 @@ This causes the create delegate to be executed on a new thread. The delegate wil This takes us to one of our guidelines regarding scheduling: the use of `SubscribeOn` and `ObserveOn` should only be invoked by the final subscriber. If you introduce scheduling in your own extension methods or service methods, you should allow the consumer to specify their own scheduler. We will see more reasons for this guidance in the next chapter. -### EventLoopScheduler +### EventLoopScheduler The `EventLoopScheduler` allows you to designate a specific thread to a scheduler. Like the `CurrentThreadScheduler` that acts like a trampoline for nested scheduled actions, the `EventLoopScheduler` provides the same trampoline mechanism. The difference is that you provide an `EventLoopScheduler` with the thread you want it to use for scheduling instead, of just picking up the current thread. @@ -1018,7 +1409,7 @@ Here we bind the lifetime of the `EventLoopScheduler` to that of the result from Observable.Using(() => new EventLoopScheduler(), els => GetPrices(els)).Subscribe(...) ``` -### New Thread +### New Thread If you do not wish to manage the resources of a thread or an `EventLoopScheduler`, then you can use `NewThreadScheduler`. You can create your own instance of `NewThreadScheduler` or get access to the static instance via the property `Scheduler.NewThread`. Like `EventLoopScheduler`, you can use the parameterless constructor or provide your own thread factory function. If you do provide your own factory, be careful to set the `IsBackground` property appropriately. @@ -1075,7 +1466,7 @@ A.inner end. ThreadId:10 A.inner.Leaf. ThreadId:10 ``` -As you can see, the results are very similar to the `CurrentThreadScheduler`, except that the trampoline happens on a separate thread. This is in fact exactly the output we would get if we used an `EventLoopScheduler`. The differences between usages of the `EventLoopScheduler` and the `NewThreadScheduler` start to appear when we introduce a second (non-nested) scheduled task. +As you can see, the results are very similar to the `CurrentThreadScheduler`, except that the trampoline happens on a separate thread. This is in fact exactly the output we would get if we used an `EventLoopScheduler`. The differences between usages of the `EventLoopScheduler` and the `NewThreadScheduler`start to appear when we introduce a second (non-nested) scheduled task. ```csharp Console.WriteLine("Starting on thread :{0}", Thread.CurrentThread.ManagedThreadId); @@ -1101,7 +1492,7 @@ B.inner.Leaf. ThreadId:11 Note that there are now three threads at play here. Thread 9 is the thread we started on and threads 10 and 11 are performing the work for our two calls to Schedule. -### Thread Pool +### Thread Pool The `ThreadPoolScheduler` will simply just tunnel requests to the `ThreadPool`. For requests that are scheduled as soon as possible, the action is just sent to `ThreadPool.QueueUserWorkItem`. For requests that are scheduled in the future, a `System.Threading.Timer` is used. @@ -1131,9 +1522,9 @@ B.inner.Leaf. ThreadId:11 Note, that as per the `NewThreadScheduler` test, we initially start on one thread but all the scheduling happens on two other threads. The difference is that we can see that part of the second run "B" runs on thread 11 while another part of it runs on 10. -### TaskPool +### TaskPool -The `TaskPoolScheduler` is very similar to the `ThreadPoolScheduler` and, when available (depending on your target framework), you should favor it over the later. Like the `ThreadPoolScheduler`, nested scheduled actions are not guaranteed to be run on the same thread. Running the same test with the `TaskPoolScheduler` shows us similar results. +The `TaskPoolScheduler` is very similar to the `ThreadPoolScheduler` and, when available (depending on your target framework), you should favor it overthe later. Like the `ThreadPoolScheduler`, nested scheduled actions are not guaranteed to be run on the same thread. Running the same test with the `TaskPoolScheduler` shows us similar results. ```csharp Console.WriteLine("Starting on thread :{0}", Thread.CurrentThread.ManagedThreadId); @@ -1161,7 +1552,7 @@ B.inner.Leaf. ThreadId:10 It is worth noting that there is also a `TestScheduler` accompanied by its base classes `VirtualTimeScheduler` and `VirtualTimeSchedulerBase`. The latter two are not really in the scope of an introduction to Rx, but the former is. We will cover all things testing including the `TestScheduler` in the next chapter, [Testing Rx](16_TestingRx.html). -## Selecting an appropriate scheduler +## Selecting an appropriate scheduler With all of these options to choose from, it can be hard to know which scheduler to use and when. Here is a simple check list to help you in this daunting task: @@ -1173,7 +1564,7 @@ With all of these options to choose from, it can be hard to know which scheduler - If the subscription will not block for more than 50ms then - Use the `TaskPoolScheduler` if available, or - Use the `ThreadPoolScheduler` - - If any part of the subscription could block for longer than 50ms, then you should use the `NewThreadScheduler`. + - If any part of the subscription could block for longer than 50ms, then you shoulduse the `NewThreadScheduler`. ### Service layer @@ -1183,8 +1574,11 @@ This way, you can preserve order of events * If you just need the scheduler for a timer, e.g. for `Observable.Interval` or `Observable.Timer`, then favor the `TaskPool`. Use the `ThreadPool` if the `TaskPool` is not available for your platform. -> The `ThreadPool` (and the `TaskPool` by proxy) have a time delay before they will increase the number of threads that they use. This delay is 500ms. Let us consider a PC with two cores that we will schedule four actions onto. By default, the thread pool size will be the number of cores (2). If each action takes 1000ms, then two actions will be sitting in the queue for 500ms before the thread pool size is increased. Instead of running all four actions in parallel, which would take one second in total, the work is not completed for 1.5 seconds as two of the actions sat in the queue for 500ms. For this reason, you should only schedule work that is very fast to execute (guideline 50ms) onto the ThreadPool or TaskPool. Conversely, creating a new thread is not free, but with the power of processors today the creation of a thread for work over 50ms is a small cost. +> The `ThreadPool` (and the `TaskPool` by proxy) have a time delay beforethey will increase the number of threads that they use. This delay is 500ms. Letus consider a PC with two cores that we will schedule four actions onto. By default,the thread pool size will be the number of cores (2). If each action takes 1000ms, then two actions will be sitting in the queue for 500ms before the thread pool size is increased. Instead of running all four actions in parallel, which would take one second in total, the work is not completed for 1.5 seconds as two of the actions sat in the queue for 500ms. For this reason, you should only schedule work thatis very fast to execute (guideline 50ms) onto the ThreadPool or TaskPool. Conversely,creating a new thread is not free, but with the power of processors today the creation of a thread for work over 50ms is a small cost. Concurrency is hard. We can choose to make our life easier by taking advantage of Rx and its scheduling features. We can improve it even further by only using Rx where appropriate. While Rx has concurrency features, these should not be mistaken for a concurrency framework. Rx is designed for querying data, and as discussed in [the first chapter](01_WhyRx.html#Could), parallel computations or composition of asynchronous methods is more appropriate for other frameworks. -Rx solves the issues for concurrently generating and consuming data via the `ObserveOn`/`SubscribeOn` methods. By using these appropriately, we can simplify our code base, increase responsiveness and reduce the surface area of our concurrency concerns. Schedulers provide a rich platform for processing work concurrently without the need to be exposed directly to threading primitives. They also help with common troublesome areas of concurrency such as cancellation, passing state and recursion. By reducing the concurrency surface area, Rx provides a (relatively) simple yet powerful set of concurrency features paving the way to the [pit of success](http://blogs.msdn.com/b/brada/archive/2003/10/02/50420.aspx). \ No newline at end of file +Rx solves the issues for concurrently generating and consuming data via the `ObserveOn`/`SubscribeOn` methods. By using these appropriately, we can simplify our code base, increase responsiveness and reduce the surface area of our concurrency concerns. Schedulers provide a rich platform for processing work concurrently without the need to be exposed directly to threading primitives. They also help with common troublesome areas of concurrency such as cancellation, passing state and recursion. By reducing the concurrency surface area, Rx provides a (relatively) simple yet powerful set of concurrency features paving the way to the [pit of success](http://blogs.msdn.com/b/brada/archive/2003/10/02/50420.aspx). + + +TODO: IScheduler.Catch extension method? \ No newline at end of file diff --git a/content/12_LeavingIObservable.md b/content/12_LeavingIObservable.md index 6026919..5a5e4af 100644 --- a/content/12_LeavingIObservable.md +++ b/content/12_LeavingIObservable.md @@ -508,4 +508,449 @@ Now that we know how to get back into .NET events, let's take a break and rememb - Events do not have a standard pattern for signaling completion - Events provide almost no help for concurrency or multithreaded applications. For instance, raising an event on a separate thread requires you to do all of the plumbing -The set of methods we have looked at in this chapter complete the circle started in the [Creating a Sequence](04_CreatingObservableSequences.html#TransitioningIntoIObservable) chapter. We now have the means to enter and leave the observable sequence monad. Take care when opting in and out of the `IObservable` monad. Doing so excessively can quickly make a mess of your code base, and may indicate a design flaw. \ No newline at end of file +The set of methods we have looked at in this chapter complete the circle started in the [Creating a Sequence](04_CreatingObservableSequences.html#TransitioningIntoIObservable) chapter. We now have the means to enter and leave the observable sequence monad. Take care when opting in and out of the `IObservable` monad. Doing so excessively can quickly make a mess of your code base, and may indicate a design flaw. + + + +... +This next content was originally in the intro to Part 3, which preceded a chapter called Side Effects. I don't think that is a chapter in its own right, because there are concerns around side effects in a few places. + + +# Side effects + +Non-functional requirements of production systems often demand high availability, quality monitoring features and low lead time for defect resolution. Logging, debugging, instrumentation and journaling are common non-functional requirements that developers need to consider for production ready systems. These artifacts could be considered side effects of the main business workflow. Side effects are a real life problem that code samples and how-to guides often ignore, however Rx provides tools to help. + +In this chapter we will discuss the consequences of introducing side effects when working with an observable sequence. A function is considered to have a side effect if, in addition to any return value, it has some other observable effect. Generally the 'observable effect' is a modification of state. This observable effect could be + +* modification of a variable with a wider scope than the function (i.e. global, static or perhaps an argument) +* I/O such as a read/write from a file or network + +* updating a display + + +## Issues with side effects + +Functional programming in general tries to avoid creating any side effects. Functions with side effects, especially which modify state, require the programmer to understand more than just the inputs and outputs of the function. The surface area they are required to understand needs to now extend to the history and context of the state being modified. This can greatly increase the complexity of a function, and thus make it harder to correctly understand and maintain. + +Side effects are not always accidental, nor are they always intentional. An easy way to reduce the accidental side effects is to reduce the surface area for change. The simple actions coders can take are to reduce the visibility or scope of state and to make what you can immutable. You can reduce the visibility of a variable by scoping it to a code block like a method. You can reduce visibility of class members by making them private or protected. By definition immutable data can't be modified so cannot exhibit side effects. These are sensible encapsulation rules that will dramatically improve the maintainability of your Rx code. + +To provide a simple example of a query that has a side effect, we will try to output the index and value of the elements received by updating a variable (closure). + +```csharp +var letters = Observable.Range(0, 3) + .Select(i => (char)(i + 65)); + +var index = -1; +var result = letters.Select( + c => + { + index++; + return c; + }); + +result.Subscribe( + c => Console.WriteLine("Received {0} at index {1}", c, index), + () => Console.WriteLine("completed")); +``` + +Output: + +``` +Received A at index 0 +Received B at index 1 +Received C at index 2 +completed +``` + +While this seems harmless enough, imagine if another person sees this code and understands it to be the pattern the team is using. They in turn adopt this style themselves. For the sake of the example, we will add a duplicate subscription to our previous example. + +```csharp +var letters = Observable.Range(0, 3) + .Select(i => (char)(i + 65)); + +var index = -1; +var result = letters.Select( + c => + { + index++; + return c; + }); + +result.Subscribe( + c => Console.WriteLine("Received {0} at index {1}", c, index), + () => Console.WriteLine("completed")); + +result.Subscribe( + c => Console.WriteLine("Also received {0} at index {1}", c, index), + () => Console.WriteLine("2nd completed")); +``` + +Output + +``` +Received A at index 0 +Received B at index 1 +Received C at index 2 +completed +Also received A at index 3 +Also received B at index 4 +Also received C at index 5 +2nd completed +``` + + + +Now the second person's output is clearly nonsense. They will be expecting index values to be 0, 1 and 2 but get 3, 4 and 5 instead. I have seen far more sinister versions of side effects in code bases. The nasty ones often modify state that is a Boolean value e.g. `hasValues`, `isStreaming` etc. We will see in a later chapter far better ways of controlling workflow with observable sequences than using shared state. + +In addition to creating potentially unpredictable results in existing software, programs that exhibit side effects are far more difficult to test and maintain. Future refactoring, enhancements or other maintenance on programs that exhibits side effects are far more likely to be brittle. This is especially so in asynchronous or concurrent software. + +## Composing data in a pipeline + +The preferred way of capturing state is to introduce it to the pipeline. Ideally, we want each part of the pipeline to be independent and deterministic. That is, each function that makes up the pipeline should have its inputs and output as its only state. To correct our example we could enrich the data in the pipeline so that there is no shared state. This would be a great example where we could use the `Select` overload that exposes the index. + +```csharp +var source = Observable.Range(0, 3); +var result = source.Select((idx, value) => new + { + Index = idx, + Letter = (char) (value + 65) + }); + +result.Subscribe( + x => Console.WriteLine("Received {0} at index {1}", x.Letter, x.Index), + () => Console.WriteLine("completed")); + +result.Subscribe( + x => Console.WriteLine("Also received {0} at index {1}", x.Letter, x.Index), + () => Console.WriteLine("2nd completed")); +``` + +Output: + +``` +Received A at index 0 +Received B at index 1 +Received C at index 2 +completed +Also received A at index 0 +Also received B at index 1 +Also received C at index 2 +2nd completed +``` + +Thinking outside of the box, we could also use other features like `Scan` to achieve similar results. Here is an example. + +```csharp +var result = source.Scan( + new + { + Index = -1, + Letter = new char() + }, + (acc, value) => new + { + Index = acc.Index + 1, + Letter = (char)(value + 65) + }); +``` + +The key here is to isolate the state, and reduce or remove any side effects like mutating state. + +## Do + +We should aim to avoid side effects, but in some cases it is unavoidable. The `Do` extension method allows you to inject side effect behavior. The signature of the `Do` extension method looks very much like the `Select` method; + +- They both have various overloads to cater for combinations of `OnNext`, `OnError` and `OnCompleted` handlers +- They both return and take an observable sequence + +The overloads are as follows: + +```csharp +// Invokes an action with side effecting behavior for each element in the observable +// sequence. +public static IObservable Do( + this IObservable source, + Action onNext) +{...} + +// Invokes an action with side effecting behavior for each element in the observable +// sequence and invokes an action with side effecting behavior upon graceful termination +// of the observable sequence. +public static IObservable Do( + this IObservable source, + Action onNext, + Action onCompleted) +{...} + +// Invokes an action with side effecting behavior for each element in the observable +// sequence and invokes an action with side effecting behavior upon exceptional +// termination of the observable sequence. +public static IObservable Do( + this IObservable source, + Action onNext, + Action onError) +{...} + +// Invokes an action with side effecting behavior for each element in the observable +// sequence and invokes an action with side effecting behavior upon graceful or +// exceptional termination of the observable sequence. +public static IObservable Do( + this IObservable source, + Action onNext, + Action onError, + Action onCompleted) +{...} + +// Invokes the observer's methods for their side effects. +public static IObservable Do( + this IObservable source, + IObserver observer) +{...} +``` + +The `Select` overloads take `Func` arguments for their `OnNext` handlers and also provide the ability to return an observable sequence that is a different type to the source. In contrast, the `Do` methods only take an `Action` for the `OnNext` handler, and therefore can only return a sequence that is the same type as the source. As each of the arguments that can be passed to the `Do` overloads are actions, they implicitly cause side effects. + + + +For the next example, we first define the following methods for logging: + +```csharp +private static void Log(object onNextValue) +{ + Console.WriteLine("Logging OnNext({0}) @ {1}", onNextValue, DateTime.Now); +} +private static void Log(Exception onErrorValue) +{ + Console.WriteLine("Logging OnError({0}) @ {1}", onErrorValue, DateTime.Now); +} +private static void Log() +{ + Console.WriteLine("Logging OnCompleted()@ {0}", DateTime.Now); +} +``` + +This code can use `Do` to introduce some logging using the methods from above. + +```csharp +var source = Observable.Interval(TimeSpan.FromSeconds(1)) + .Take(3); + +var result = source.Do( + i => Log(i), + ex => Log(ex), + () => Log()); + +result.Subscribe( + Console.WriteLine, + () => Console.WriteLine("completed")); +``` + +Output: + +``` +Logging OnNext(0) @ 01/01/2012 12:00:00 +0 +Logging OnNext(1) @ 01/01/2012 12:00:01 +1 +Logging OnNext(2) @ 01/01/2012 12:00:02 +2 +Logging OnCompleted() @ 01/01/2012 12:00:02 +completed +``` + +Note that because the `Do` is earlier in the query chain than the `Subscribe`, it will receive the values first and therefore write to the console first. I like to think of the `Do` method as a [wire tap](http://en.wikipedia.org/wiki/Telephone_tapping) to a sequence. It gives you the ability to listen in on the sequence, without the ability to modify it. + +The most common acceptable side effect I see in Rx is the need to log. The signature of `Do` allows you to inject it into a query chain. This allows us to add logging into our sequence and retain encapsulation. When a repository, service agent or provider exposes an observable sequence, they have the ability to add their side effects (e.g. logging) to the sequence before exposing it publicly. Consumers can then append operators to the query (e.g. `Where`, `SelectMany`) and this will not affect the logging of the provider. + +Consider the method below. It produces numbers but also logs what it produces (to the console for simplicity). To the consuming code the logging is transparent. + +```csharp +private static IObservable GetNumbers() +{ + return Observable.Interval(TimeSpan.FromMilliseconds(250)) + .Do(i => Console.WriteLine("pushing {0} from GetNumbers", i)); +} +``` + +We then call it with this code. + +```csharp +var source = GetNumbers(); +var result = source.Where(i => i%3 == 0) + .Take(3) + .Select(i => (char) (i + 65)); + +result.Subscribe( + Console.WriteLine, + () => Console.WriteLine("completed")); +``` + +Output: + +``` +pushing 0 from GetNumbers +A +pushing 1 from GetNumbers +pushing 2 from GetNumbers +pushing 3 from GetNumbers +D +pushing 4 from GetNumbers +pushing 5 from GetNumbers +pushing 6 from GetNumbers +G +completed +``` + +This example shows how producers or intermediaries can apply logging to the sequence regardless of what the end consumer does. + +One overload to `Do` allows you to pass in an `IObserver`. In this overload, each of the `OnNext`, `OnError` and `OnCompleted` methods are passed to the other `Do` overload as each of the actions to perform. + +Applying a side effect adds complexity to a query. If side effects are a necessary evil, then being explicit will help your fellow coder understand your intentions. Using the `Do` method is the favored approach to doing so. This may seem trivial, but given the inherent complexity of a business domain mixed with asynchrony and concurrency, developers don't need the added complication of side effects hidden in a `Subscribe` or `Select` operator. + +## Encapsulating with AsObservable + +Poor encapsulation is a way developers can leave the door open for unintended side effects. Here is a handful of scenarios where carelessness leads to leaky abstractions. Our first example may seem harmless at a glance, but has numerous problems. + +```csharp +public class UltraLeakyLetterRepo +{ + public ReplaySubject Letters { get; set; } + + public UltraLeakyLetterRepo() + { + Letters = new ReplaySubject(); + Letters.OnNext("A"); + Letters.OnNext("B"); + Letters.OnNext("C"); + } +} +``` + +In this example we expose our observable sequence as a property. The first problem here is that it is a settable property. Consumers could change the entire subject out if they wanted. This would be a very poor experience for other consumers of this class. If we make some simple changes we can make a class that seems safe enough. + +```csharp +public class LeakyLetterRepo +{ + private readonly ReplaySubject _letters; + + public LeakyLetterRepo() + { + _letters = new ReplaySubject(); + _letters.OnNext("A"); + _letters.OnNext("B"); + _letters.OnNext("C"); + } + + public ReplaySubject Letters + { + get { return _letters; } + } +} +``` + +Now the `Letters` property only has a getter and is backed by a read-only field. This is much better. Keen readers will note that the `Letters` property returns a `ReplaySubject`. This is poor encapsulation, as consumers could call `OnNext`/`OnError`/`OnCompleted`. To close off that loophole we can simply make the return type an `IObservable`. + +```csharp +public IObservable Letters +{ + get { return _letters; } +} +``` + +The class now _looks_ much better. The improvement, however, is only cosmetic. There is still nothing preventing consumers from casting the result back to an `ISubject` and then calling whatever methods they like. In this example we see external code pushing their values into the sequence. + +```csharp +var repo = new ObscuredLeakinessLetterRepo(); +var good = repo.GetLetters(); +var evil = repo.GetLetters(); + +good.Subscribe(Console.WriteLine); + +// Be naughty +var asSubject = evil as ISubject; + +if (asSubject != null) +{ + // So naughty, 1 is not a letter! + asSubject.OnNext("1"); +} +else +{ + Console.WriteLine("could not sabotage"); +} +``` + +Output: + +``` +A +B +C +1 +``` + +The fix to this problem is quite simple. By applying the `AsObservable` extension method, the `_letters` field will be wrapped in a type that only implements `IObservable`. + +```csharp +public IObservable GetLetters() +{ + return _letters.AsObservable(); +} +``` + +Output: + +``` +A +B +C +could not sabotage +``` + +While I have used words like 'evil' and 'sabotage' in these examples, it is more often than not an oversight rather than malicious intent that causes problems. The failing falls first on the programmer who designed the leaky class. Designing interfaces is hard, but we should do our best to help consumers of our code fall into [the pit of success](http://blogs.msdn.com/b/brada/archive/2003/10/02/50420.aspx) by giving them discoverable and consistent types. Types become more discoverable if we reduce their surface area to expose only the features we intend our consumers to use. In this example we reduced the type's surface area. We did so by removing the property setter and returning a simpler type via the `AsObservable` method. + +## Mutable elements cannot be protected + +While the `AsObservable` method can encapsulate your sequence, you should still be aware that it gives no protection against mutable elements. Consider what consumers of a sequence of this class could do: + +```csharp +public class Account +{ + public int Id { get; set; } + public string Name { get; set; } +} +``` + +Here is a quick example of the kind of mess we can make if we choose to modify elements in a sequence. + +```csharp +var source = new Subject(); + +// Evil code. It modifies the Account object. +source.Subscribe(account => account.Name = "Garbage"); + +// unassuming well behaved code +source.Subscribe( + account=>Console.WriteLine("{0} {1}", account.Id, account.Name), + ()=>Console.WriteLine("completed")); + +source.OnNext(new Account {Id = 1, Name = "Microsoft"}); +source.OnNext(new Account {Id = 2, Name = "Google"}); +source.OnNext(new Account {Id = 3, Name = "IBM"}); +source.OnCompleted(); +``` + +Output: + +``` +1 Garbage +2 Garbage +3 Garbage +completed +``` + +Here the second consumer was expecting to get 'Microsoft', 'Google' and 'IBM' but received just 'Garbage'. + +Observable sequences will be perceived to be a sequence of resolved events: things that have happened as a statement of fact. This implies two things: first, each element represents a snapshot of state at the time of publication, secondly, the information emanates from a trustworthy source. We want to eliminate the possibility of tampering. Ideally the type `T` will be immutable, solving both of these problems. This way, consumers of the sequence can be assured that the data they get is the data that the source produced. Not being able to mutate elements may seem limiting as a consumer, but these needs are best met via the [Transformation](08_Transformation.html) operators which provide better encapsulation. + +Side effects should be avoided where possible. Any combination of concurrency with shared state will commonly demand the need for complex locking, deep understanding of CPU architectures and how they work with the locking and optimization features of the language you use. The simple and preferred approach is to avoid shared state, favor immutable data types and utilize query composition and transformation. Hiding side effects into `Where` or `Select` clauses can make for very confusing code. If a side effect is required, then the `Do` method expresses intent that you are creating a side effect by being explicit. \ No newline at end of file From 7b96789ded03beafe7729ab332b69904829643c1 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Tue, 25 Jul 2023 13:10:17 +0100 Subject: [PATCH 022/142] More scheduler updates --- content/03_CreatingObservableSequences.md | 58 ++- content/11_SchedulingAndThreading.md | 434 ++++++---------------- 2 files changed, 167 insertions(+), 325 deletions(-) diff --git a/content/03_CreatingObservableSequences.md b/content/03_CreatingObservableSequences.md index d81d58c..d090e19 100644 --- a/content/03_CreatingObservableSequences.md +++ b/content/03_CreatingObservableSequences.md @@ -833,20 +833,72 @@ Tasks come in two forms: `Task`, which produces a result, and `Task`, which d The extension method is simple to use: ```csharp -var t = Task.Factory.StartNew(() => "Test"); -var source = t.ToObservable(); +Task t = Task.Run(() => +{ + Console.WriteLine("Task running..."); + return "Test"; +}); +IObservable source = t.ToObservable(); +source.Subscribe( + Console.WriteLine, + () => Console.WriteLine("completed")); source.Subscribe( Console.WriteLine, () => Console.WriteLine("completed")); ``` -Output: +Here's the output. ``` +Task running... +Test +completed Test completed ``` +Notice that even with two subscribers, the task runs only once. That shouldn't be surprising since we only created a single task. If the task has not yet finished, then all subscribers will receive the result when it does. If the task has finished, the `IObservable` effectively becomes a single-value cold observable. But there's a different way to wrap a task: `Observable.FromAsync`. + + +#### One Task per subscription + +There's a different way to get an `IObservable` for a source. I can replace the first statement in the preceding example with this: + +```cs +IObservable source = Observable.FromAsync(() => Task.Run(() => +{ + Console.WriteLine("Task running..."); + return "Test"; +})); +``` + +I get slightly different output now when subscribing twice: + +``` +Task running... +Task running... +Test +Test +completed +completed +``` + +Notice that this executes the task twice, once for each call to `Subscribe`. `FromAsync` can do this because instead of passing a `Task` we pass a callback that returns a `Task`. It calls that when we call `Subscribe`, so each subscriber essentially gets their own task. + +If I want to use `async` and `await` to define my task, then I don't need to bother with the `Task.Run` because an `async` lambda creates a `Func>`, which is exactly the type `FromAsync` wants: + +```cs +IObservable source = Observable.FromAsync(async () => +{ + Console.WriteLine("Task running..."); + await Task.Delay(50); + return "Test"; +}); +``` + +There is a subtle difference with this though. When I used `Task.Run` the lambda ran on a task pool thread from the start. But when I write it this way, the lambda will begin to run on whatever thread calls `Subscribe`. It's only when it hits the first `await` that it returns (and the call to `Subscribe` will then return), with the remainder of the method running on the thread pool. + + ### From IEnumerable<T> Rx defines another extension method called `ToObservable`, this time for `IEnumerable`. In earlier chapters I described how `IObserable` was designed to represent the same basic abstraction as `IEnumerable`, with the only difference being the mechanism we use to obtain the elements in the sequence: with `IEnumerable`, we write code that _pulls_ values out of the collection (e.g., a `foreach` loop), whereas `IObservable` _pushes_ values to us by invoking `OnNext` on our `IObserver`. diff --git a/content/11_SchedulingAndThreading.md b/content/11_SchedulingAndThreading.md index 08aed5c..62a41bf 100644 --- a/content/11_SchedulingAndThreading.md +++ b/content/11_SchedulingAndThreading.md @@ -425,16 +425,32 @@ Although this scheduler is useful if you would prefer work not to happen on your The `EventLoopScheduler` provides one-at-a-time scheduling, queuing up newly scheduled work items. This is similar to how the `CurrentThreadScheduler` operates if you use it from just one thread. The difference is that `EventLoopScheduler` creates a dedicated thread for this work instead of using whatever thread you happen to schedule the work from. -### HistoricalScheduler +Unlike the schedulers we've examined so far, there is no static property for obtaining an `EventLoopScheduler`. That's because each one has its own thread, so you need to create one explicitly. It offers two constructors: -The `HistoricalScheduler`. Should we do this one? +```cs +public EventLoopScheduler() +public EventLoopScheduler(Func<ThreadStart, Thread> threadFactory) +``` + +The first creates a thread for you. The second lets you control the thread creation process—it invokes the callback you supply, and it will pass this its own callback that you are required to run on the newly created thread. -Many Rx operators provide overloads that accepts an `IScheduler` +The `EventLoopScheduler` implements `IDisposable`, and calling Dispose will allow the thread to terminate. This can work nicely with the `Observable.Using` method. The following example shows how to use an `EventLoopScheduler` to iterate over all contents of an `IEnumerable` on a dedicated thread, ensuring that the thread exits once we have finished: + +```cs +IEnumerable xs = GetNumbers(); +Observable + .Using( + () => new EventLoopScheduler(), + scheduler => xs.ToObservable(scheduler)) + .Subscribe(...); +``` ### NewThreadScheduler The `NewThreadScheduler` creates a new thread to execute every work item it is given. This is unlikely to make sense in most scenarios. However, it might be useful in cases where you want to execute some long running work, and represent its completion through an `IObservable`. The `Observable.ToAsync` does exactly this, and will normally use the `DefaultScheduler`, meaning it will run the work on a thread pool thread. But it the work is likely to take more than second or two, the thread pool may not be a good choice, because it is optimized for short execution times, and its heuristics for managing the size of the thread pool are not designed with long-running operations in mind. The `NewThreadScheduler` may be a better choice in this case. +Although each call to `Schedule` creates a new thread, the `NewThreadScheduler` passes a different scheduler into work item callbacks, meaning that anything that attempts to perform iterative work will not create a new thread for every iteration. For example, if you use `NewThreadScheduler` with `Observable.Range`, you will get a new thread each time you subscribe to the resulting `IObservable`, but you won't get a new thread for each item, even though `Range` does schedule a new work item for each value it produces. It schedules these per-value work items through the nested scheduler supplied to the work item callback, and the nested scheduler that `NewThreadScheduler` supplies in these cases invokes all such nested work items on the same thread. + ### SynchronizationContextScheduler This invokes all work through a [`SynchronizationContext`](https://learn.microsoft.com/en-us/dotnet/api/system.threading.synchronizationcontext). This is useful in user interface scenarios—most .NET client-side user interface frameworks make a `SynchronizationContext` available that can be used to invoke callbacks in a context suitable for making changes to the UI. (Typically this involves invoking them on the correct thread, but individual implementations can decide what constitutes the appropriate context.) @@ -445,9 +461,10 @@ Invokes all work through the TPL task pool. The TPL task pool is newer than the ### ThreadPoolScheduler -Invokes all work through the CLR thread pool. +Invokes all work through the thread pool. This type is a historical artifact, dating back to when not all platforms offered the same kind of thread pool. In almost all cases, you should use the `DefaultScheduler`. The only scenario in which using `ThreadPoolScheduler` makes any difference is when writing UWP applications. The UWP target of `System.Reactive` v6.0 provides a different implementation of this class than you get for all other targets. It uses `Windows.System.Threading.ThreadPool` whereas all other targets use `System.Threading.ThreadPool`. The UWP version provides properties letting you configure some features specific to the UWP thread pool. + +In practice it's best to avoid this class in new code. The only reason the UWP target had a different implementation was that UWP used not to provide `System.Threading.ThreadPool`. But that changed when UWP added support for .NET Standard 2.0 in Windows version 10.0.19041. There is no longer any good reason for there to be a UWP-specific `ThreadPoolScheduler`, and it's a source of confusion that this type is quite different in the UWP target but it has to remain for backwards compatibility purposes. (It may well be deprecated because Rx 7 will be addressing some problems arising from the fact that the `System.Reactive` component currently has direct dependencies on UI frameworks.) If you use the `DefaultScheduler` you will be using the `System.Threading.ThreadPool` no matter which platform you are running on. -TODO: it's not clear when you'd use this, not the DefaultScheduler. ### UI Framework Schedulers: ControlScheduler, DispatcherScheduler and CoreDispatcherScheduler @@ -456,6 +473,10 @@ Although the `SynchronizationContextScheduler` will work for all widely used cli These more specialized types offer two benefits. First, you don't necessarily have to be on the target UI thread to obtain an instance of these schedulers. Whereas with `SynchronizationContextScheduler` the only way you can generally obtain the `SynchronizationContext` this requires is by retrieving `SynchronizationContext.Current` while running on the UI thread. But these other UI-framework-specific schedulers can be passed a suitable `Control`, `Dispatcher` or `CoreDispatcher`, which it's possible to obtain from a non-UI thread. Second, `DispatcherScheduler` and `CoreDispatcherScheduler` provide a way to use the prioritisation mechanism supported by the `Dispatcher` and `CoreDispatcher` types. +### Test Schedulers + +The Rx libraries define several schedulers that virtualize time, including `HistoricalScheduler`, `TestScheduler`, `VirtualTimeScheduler`, and `VirtualTimeSchedulerBase`. We will look at this sort of scheduler in the [Testing chapter](91_TestingRx.md). + ## SubscribeOn and ObserveOn @@ -613,15 +634,15 @@ Rx also offers `SubscribeOnDispatcher()` and `ObserveOnDispatcher()` extension m Introducing concurrency to your application will increase its complexity. If your application is not noticeably improved by adding a layer of concurrency, then you should avoid doing so. Concurrent applications can exhibit maintenance problems with symptoms surfacing in the areas of debugging, testing and refactoring. -The common problem that concurrency introduces is unpredictable timing. Unpredictable timing can be caused by variable load on a system, as well as variations in system configurations (e.g. varying core clock speed and availability of processors). These can ultimately can result in race conditions. Symptoms of race conditions include out-of-order execution, [deadlocks](http://en.wikipedia.org/wiki/Deadlock), [livelocks](http://en.wikipedia.org/wiki/Deadlock#Livelock) and corrupted state. +The common problem that concurrency introduces is unpredictable timing. Unpredictable timing can be caused by variable load on a system, as well as variations in system configurations (e.g. varying core clock speed and availability of processors). These can ultimately can result in [deadlocks](http://en.wikipedia.org/wiki/Deadlock), [livelocks](http://en.wikipedia.org/wiki/Deadlock#Livelock) and corrupted state. -In my opinion, the biggest danger when introducing concurrency haphazardly to an application, is that you can silently introduce bugs. These defects may slip past Development, QA and UAT and only manifest themselves in Production environments. Rx, however, does such a good job of simplifying the concurrent processing of observable sequences that many of these concerns can be mitigated. You can still create problems, but if you follow the guidelines then you can feel a lot safer in the knowledge that you have heavily reduced the capacity for unwanted race conditions. +A particularly significant danger of introducing concurrency to an application, is that you can silently introduce bugs. Bugs arising from unpredictable timing are notoriously difficult to detect, making easy for these kinds of defects to slip past Development, QA and UAT and only manifest themselves in Production environments. Rx, however, does such a good job of simplifying the concurrent processing of observable sequences that many of these concerns can be mitigated. You can still create problems, but if you follow the guidelines then you can feel a lot safer in the knowledge that you have heavily reduced the capacity for unwanted race conditions. In a later chapter, [Testing Rx](16_TestingRx.html), we will look at how Rx improves your ability to test concurrent workflows. ### Lock-ups -When working on my first commercial application that used Rx, the team found out the hard way that Rx code can most certainly deadlock. When you consider that some calls (like `First`, `Last`, `Single` and `ForEach`) are blocking, and that we can schedule work to be done in the future, it becomes obvious that a race condition can occur. This example is the simplest block I could think of. Admittedly, it is fairly elementary but it will get the ball rolling. +Rx can simplify handling of concurrency, but it is not immune deadlock. Some calls (like `First`, `Last`, `Single` and `ForEach`) are blocking—they do not return until something that they are waiting for occurs. The following example shows that this makes it very easy for deadlock to occur: ```csharp var sequence = new Subject(); @@ -634,7 +655,11 @@ sequence.OnNext(1); Console.WriteLine("I can never execute...."); ``` -Hopefully, we won't ever write such code though, and if we did, our tests would give us quick feedback that things went wrong. More realistically, race conditions often slip into the system at integration points. The next example may be a little harder to detect, but is only small step away from our first, unrealistic example. Here, we block in the constructor of a UI element which will always be created on the dispatcher. The blocking call is waiting for an event that can only be raised from the dispatcher, thus creating a deadlock. +The `First` method will not return until its source emits a sequence. But the code that causes this source to emit sequence is on the line _after_ the call to `First`. So the source can't emit a sequence until `First` returns. This style of deadlock, with two parties, each unable to proceed until the other proceeds, is often known as a _deadly embrace_. As this code shows, it's entirely possible for a deadly embrace to occur even in single threaded code. In fact, the single threaded nature of this code is what enables deadlock: we have two operations (waiting for the first notification, and sending the first notification) and only a single thread. That doesn't have to be a problem—it we'd used `FirstAsync` and attached an observer to that, `FirstAsync` would have executed its logic when the source `Subject` invoked its `OnNext`. But that is more complex than just calling `First` and assigning the result into a variable. + +This is an oversimplified example to illustrate the behaviour, and we would never write such code in production. (And even if we did, it fails so quickly and consistency that we would immediately become aware of a problem.) But in real application code, these kinds of problems can be harder to spot. Race conditions often slip into the system at integration points, so the problem isn't necessarily evidence in any one piece of code: timing problems can emerge as a result of how we plug multiple pieces of code together. + +The next example may be a little harder to detect, but is only small step away from our first, unrealistic example. The basic idea is that we've got a subject that represents button clicks in a user interface. Event handlers representing user input are invoked by the UI framework—we just provide the framework with event handler methods, and it calls them for us whenever the event of interest, such as a button being clicked, occurs. This code calls `First` on the subject representing clicks, but it's less obvious that this might cause a problem here than it was in the preceding example: ```csharp public Window1() @@ -646,8 +671,9 @@ public Window1() // Deadlock! We need the dispatcher to continue to allow me to click the button to produce a value Value = _subject.First(); - // This will give same result but will not be blocking (deadlocking). - _subject.Take(1).Subscribe(value => Value = value); + // This will have the intended effect, but because it does not block, + // we can call this on the UI thread without deadlocking. + //_subject.FirstAsync(1).Subscribe(value => Value = value); } private void MyButton_Click(object sender, RoutedEventArgs e) @@ -661,13 +687,24 @@ public string Value set { _value = value; - var handler = PropertyChanged; - if (handler != null) handler(this, new PropertyChangedEventArgs("Value")); + PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Value")); } } ``` -Next, we start seeing things that can become more sinister. The button's click handler will try to get the first value from an observable sequence exposed via an interface. +The earlier example called the subject's `OnNext` after `First` returned, making it relatively straightforward to see that if `First` didn't return, then the subject wouldn't emit a notification. But that's not as obvious here—the `MyButton_Click` event handler will be set up inside the call to `InitializeComponent` (as is normal in WPF code), so apparently we've done the necessary setup to enable events to flow. By the time we reach this call to `First, the UI framework already knows that if the user clicks `MyButton`, it should call `MyButton_Click`, and that method is going to cause the subject to emit a value. + +There's nothing intrinsically wrong with that use of `First`. (Risky, yes, but there are scenarios in which that exact code would be absolutely fine.) The problem is the context in which we've used it. This code is in the constructor of a UI element, and these always run on a particular thread associated with that window's UI elements. (This happens to be a WPF example, but other UI frameworks work the same way.) And that's the same thread that the UI framework will use to deliver notifications about user input. If we block this UI thread, we prevent the UI framework from invoking our button click event handler. So this blocking call is waiting for an event that can only be raised from the very thread that it is blocking, thus creating a deadlock. + +You might be starting to get the impression that we should try to avoid blocking calls in Rx. This is a good rule of thumb. We can fix the code above by commenting out the line that uses `First`, and uncommenting the one below it containing this code: + +```cs +_subject.FirstAsync(1).Subscribe(value => Value = value); +``` + +This uses `FirstAsync` which does the same job, but with a different approach. It implements the same logic but it returns an `IObservable` to which we must subscribe if we want to receive the first value whenever it does eventually appear. It is more complex than the just assigning the result of `First` into the `Value` property, but it is better adapted to the fact that we can't know when that source will produce a value. + +If you do a lot of UI development, that last example might have seemed obviously wrong to you: we had code in the constructor for a window that wouldn't allow the constructor to complete until the user clicked a button in that window. The window isn't even going to appear until construction is complete so it makes no sense to wait for the user to click a button. That button's not even going to be visible on screen until after our constructor completes. Moreover, seasoned UI developers know that you don't just stop the world and wait for a specific action from the user. (Even modal dialogs, which effectively do demand a response before continuing, don't block the UI thread.) But as the next example shows, it's easy for problems to be harder to see. In this example, a button's click handler will try to get the first value from an observable sequence exposed via an interface. ```csharp public partial class Window1 : INotifyPropertyChanged @@ -704,7 +741,9 @@ public partial class Window1 : INotifyPropertyChanged } ``` -There is only one small problem here in that we block on the `Dispatcher` thread (`First` is a blocking call), however this manifests itself into a deadlock if the service code is written incorrectly. +Unlike the earlier example, this does not attempt to block progress in the constructor. The blocking call to `First` occurs here in a button click handler (the `MyButton2_Click` method near the end). This example is more interesting because this sort of thing isn't necessarily wrong. Applications often perform blocking operations in click handlers: when we click a button to save a copy of a document, we expect the application to perform all necessary IO work to write our data out to storage. With modern solid state storage devices, this often happens so quickly as to appear instantaneous, but back in the days when mechanical hard drives were the norm, it was not unusual for an application to become briefly unresponsive while it saved our document. This can happen even today if your storage is remote, and networking issues are causing delays. + +So even if we've learned to be suspicious of blocking operations such as `First`, it's possible that it's OK in this example. It's not possible to tell for certain by looking at this code alone. It all depends on what sort of an observable `GetTemperature` returns, and the manner in which it produces its items. That call to `First` will block on the UI thread until a first item becomes available, so this will produce a deadlock if the production of that first item requires access to the UI thread. Here's a slightly contrived way to create that problem: ```csharp class MyService : IMyService @@ -724,97 +763,75 @@ class MyService : IMyService } ``` -This odd implementation, with explicit scheduling, will cause the three `OnNext` calls to be scheduled once the `First()` call has finished; however, `that` is waiting for an `OnNext` to be called: we are deadlocked. +This fakes up behaviour intended to simulate an actual temperature sensor by making a series of calls to `OnNext`. But it does some odd explicit scheduling: it calls `SubscribeOnDispatcher`. That's an extension method that effectively calls `SubscribeOn(DispatcherScheduler.Current.Dispatcher)`. This effectively tells Rx that when something tries to subscribe to the `IObservable` that `GetTemperature` returns, that subscription call should be done through a WPF-specific scheduler that runs its work items on the UI thread. (Strictly, speaking, WPF does allow multiple UI threads, so to more precise, this code only works if you call it on a UI thread, and if you do so, the scheduler will ensure that work items are scheduled onto the same UI thread.) -So far, this chapter may seem to say that concurrency is all doom and gloom by focusing on the problems you could face; this is not the intent though. -We do not magically avoid classic concurrency problems simply by adopting Rx. -Rx will however make it easier to get it right, provided you follow these two simple rules. +The effect is that when our click handler calls `First`, that will in turn subscribe to the `IObservable` returned by `GetTemperature`, and because that used `SubscribeOnDispatcher`, this does not invoke the callback passed to `Obserable.Create` immediately. Instead, it schedules a work item that will do that when the UI thread (i.e., the thread we're running on) becomes free. It's not considered to be free right now, because it's in the middle of handling the button click. Having handed this work item to the scheduler, the `Subscribe` call returns back to the `First` method. And the `First` method now sits and waits for the first item to emerge. Since it won't return until that happens, the UI thread will not be considered to be available until that happens, meaning that the scheduled work item that was supposed to produce that first item can never run, and we have deadlock. -- Only the final subscriber should be setting the scheduling -- Avoid using blocking calls: e.g. `First`, `Last` and `Single` +This boils down to the same basic problem as the first of these `First`-related deadlock examples. We have two processes: the generation of items, and waiting for an item to occur. These need to be in progress concurrently—we need the "wait for first item" logic to be up and running at the point when the source emits its first item. These examples all use just a single thread, which makes it a bad idea to use a single blocking call (`First`) both to set up the process of watching for the first item, and also to wait for that to happen. But even though it was the same basic problem in all three cases, it became harder to see as the code became more complex. With real application code, it's often a lot harder than this to see the root causes of deadlocks. -The last example came unstuck with one simple problem; the service was dictating the scheduling paradigm when, really, it had no business doing so. Before we had a clear idea of where we should be doing the scheduling in my first Rx project, we had all sorts of layers adding 'helpful' scheduling code. What it ended up creating was a threading nightmare. When we removed all the scheduling code and then confined it it in a single layer (at least in the Silverlight client), most of our concurrency problems went away. I recommend you do the same. At least in WPF/Silverlight applications, the pattern should be simple: "Subscribe on a Background thread; Observe on the Dispatcher". +So far, this chapter may seem to say that concurrency is all doom and gloom by focusing on the problems you could face, and the fact that they are often hard to spot in practice; this is not the intent though. +Although adopting Rx can't magically avoid classic concurrency problems, Rx can make it easier to get it right, provided you follow these two simple rules. -## Advanced features of schedulers +- Only the top-level subscriber should make scheduling decisions +- Avoid using blocking calls: e.g. `First`, `Last` and `Single` -We have only looked at the most simple usage of schedulers so far: +The last example came unstuck with one simple problem; the `GetTemperature` service was dictating the scheduling model when, really, it had no business doing so. Code representing a temperature sensor shouldn't need to know that I'm using a particular UI framework, and certainly shouldn't be unilaterally deciding that it is going to run certain work on a WPF user interface thread. When getting started with Rx, it can be easy to convince yourself that baking scheduling decisions into lower layers is somehow being 'helpful'. "Look!" you might say. "Not only have I provided temperature readings, I've also made this automatically notify you on the UI thread, so you won't have to bother with `ObserveOn`." The intentions may be good, but it's all too easy to create a threading nightmare. Only the code that sets up a subscription and consumes its results can have a complete overview of the concurrency requirements, so that is the right level at which to choose which schedulers to use. Lower levels of code should not try to get involved; they should just do what they are told. (Rx arguably breaks this rule slightly itself by choosing default schedulers where they are needed. But it makes very conservative choices designed to minimize the chances of deadlock, and always allows applications to take control by specifying the scheduler.) -- Scheduling an action to be executed as soon as possible -- Scheduling the subscription of an observable sequence -- Scheduling the observation of notifications coming from an observable sequence +Note that following either one of the two rules above would have been sufficient to prevent deadlock in this example. But it is best to follow both rules. -Schedulers also provide more advanced features that can help you with various problems. +This does leave one question unanswered: _how_ should the top-level subscriber make scheduling decisions? I've identified the area of the code that needs to make the decision, but what should the decision be? It will depend on the kind of application you are writing. For UI code, this pattern generally works well: "Subscribe on a background thread; Observe on the UI thread". With UI code, the risk of deadlock arises in because the UI thread is effectively a shared resource, and contention for that resource can produce deadlock. So the strategy is to avoid requiring that resource as much as possible: work that doesn't need to be on the thread should not be on that thread, which is why performing subscription on a worker thread (e.g., by using the `TaskPoolScheduler`) reduces the risk of deadlock. It follows that if you have observable sources that decide when to produce events (e.g., timers, or sources representing inputs from external information feeds or devices) you would also want those to schedule work on worker threads. It is only when we need to update the user interface that we need our code to run on the UI thread, and so we defer that until the last possible moment by using `ObserveOn` in conjunction with a suitable UI-aware scheduler (such as the WPF `DispatcherScheduler`). If we have a complex Rx query made up out of multiple operators, this `ObserveOn` should come right at the end, just before we call `Subscribe` to attach the handler that will update the UI. This way, only the final step, the updating of the UI, will need access to the UI thread. By the time this runs, all complex processing will be complete, and so this should be able to run very quickly, relinquishing control of the UI thread almost immediately, improving application responsiveness, and lowering the risk of deadlock. -### Passing state +Other scenarios will require other strategies, but the general principle with deadlocks is always the same: understand which shared resources require exclusive access. For example, if you have a sensor library, it might create a dedicated thread to monitor devices and report new measurements, and if it were to stipulate that certain work had to be done on that thread, this would be very similar to the UI scenario: there is a particular thread that you will need to avoid blocking. The same approach would likely apply here. But this is not the only kind of scenario. -In the extension method to `IScheduler` we have looked at, you could only provide an `Action` to execute. This `Action` did not accept any parameters. If you want to pass state to the `Action`, you could use a closure to share the data like this: +You could imagine a data processing application in which certain data structures are shared. It's quite common in these cases to be allowed to access such data structures from any thread, but to be required to do so one thread at a time. Typically we would use thread synchronization primitives to protect against concurrent use of these critical data structures. In these cases, the risks of deadlock do not arise from the use of particular threads. Instead, they arise from the possibility that one thread can't progress because some other threads is using a shared data structure, but that other thread is waiting for the first thread to do something, and won't relinquish its lock on that data structure until that happens. The simplest way to avoid problems here is to avoid blocking wherever possible. Avoid methods like `First`, preferring their non-blocking equivalents such as `FirstAsync`. (If there are cases where you can't avoid blocking, try to avoid doing so while in possession of locks that guard access to shared data. And if you really can't avoid that either, then there are no simple answers—you'll now have to start thinking about lock hierarchies to systematically avoid deadlock, just as you would if you weren't using Rx.) The non-blocking style is the natural way to do things with Rx, and that's the main way Rx can help you avoid concurrency related problems in these cases. -```csharp -var myName = "Lee"; -Scheduler.NewThread.Schedule(() => Console.WriteLine("myName = {0}", myName)); -``` +## Advanced features of schedulers -This could create a problem, as you are sharing state across two different scopes. I could modify the variable `myName` and get unexpected results. +Schedulers provide some features that are mainly of interest when writing observable sources that need to interact with a schedule. The most common way to use schedulers is when setting up a subscription, either supplying them as arguments when creating observable sources, or passing them to `SubscribeOn` and `ObserveOn`. But if you need to write an observable source that produces items on some schedule of its own choosing (e.g., suppose you are writing a library that represents some external data source and you want to present that as an `IObservable`), you might need to use some of these more advanced features. -In this example, we use a closure as above to pass state. I immediately modify the closure and this creates a race condition: will my modification happen before or after the state is used by the scheduler? +### Passing state -```csharp -var myName = "Lee"; -scheduler.Schedule(() => Console.WriteLine("myName = {0}", myName)); -myName = "John"; // What will get written to the console? -``` +All of the methods defined by `IScheduler` take a `state` argument. Here's the interface definition again: -In my tests, "John" is generally written to the console when `scheduler` is an instance of `NewThreadScheduler`. If I use the `ImmediateScheduler` then "Lee" would be written. The problem with this is the non-deterministic nature of the code. +```cs +public interface IScheduler +{ + DateTimeOffset Now { get; } + IDisposable Schedule(TState state, Func action); + IDisposable Schedule(TState state, TimeSpan dueTime, Func action); + IDisposable Schedule(TState state, DateTimeOffset dueTime, Func action); +} +``` -A preferable way to pass state is to use the `Schedule` overloads that accept state. This example takes advantage of this overload, giving us certainty about our state. +The scheduler does not care what is in this `state` argument. It just passes it unmodified into your callback when it executes your work item. This provides one way to provide context for that callback. It's not strictly necessary: the delegate we pass as the `action` can incorporate whatever state we need. The easiest way to do that is to capture variables in a lambda. However, if you look at the [Rx source code](https://github.com/dotnet/reactive/) you will find that it typically doesn't do that. For example, the heart of the `Range` operator is a method called `LoopRec` and if you look at [the source for `LoopRec`](https://github.com/dotnet/reactive/blob/95d9ea9d2786f6ec49a051c5cff47dc42591e54f/Rx.NET/Source/src/System.Reactive/Linq/Observable/Range.cs#L55-L73) you'll see that it includes this line: -```csharp -var myName = "Lee"; -scheduler.Schedule(myName, - (_, state) => - { - Console.WriteLine(state); - return Disposable.Empty; - }); -myName = "John"; +```cs +var next = scheduler.Schedule(this, static (innerScheduler, @this) => @this.LoopRec(innerScheduler)); ``` -Here, we pass `myName` as the state. We also pass a delegate that will take the state and return a disposable. The disposable is used for cancellation; we will look into that later. The delegate also takes an `IScheduler` parameter, which we name "_" (underscore). This is the convention to indicate we are ignoring the argument. When we pass `myName` as the state, a reference to the state is kept internally. So when we update the `myName` variable to "John", the reference to "Lee" is still maintained by the scheduler's internal workings. +Logically, `Range` is just a loop that executes once for each item it produces. But to enable concurrent execution and to avoid stack overflows, it implements this by scheduling each iteration of the loop as an individual work item. (The method is called `LoopRec` because it is logically a recursive loop: we kick it off by calling `Schedule`, and each time the scheduler calls this method, it calls `Schedule` again to ask for the next item to run. This doesn't actually cause recursion with any of Rx's built-in schedulers, even the `ImmediateScheduler`, because they all detect this and arrange to run the next item after the current one returns. But if you wrote the most naive scheduler possible, this would actually end up recursing at runtime, likely leading to stack overflows if you tried to create a large sequence.) -Note that in our previous example, we modify the `myName` variable to point to a new instance of a string. If we were to instead have an instance that we actually modified, we could still get unpredictable behavior. In the next example, we now use a list for our state. After scheduling an action to print out the element count of the list, we modify that list. +Notice that the lambda passed to `Schedule` has been annotated with `static`. This tells the C# compiler that it is our intention _not_ to capture any variables, and that any attempt to do so should cause a compiler error. The advantage of this is that the compiler is able to generate code that reuses the same delegate instance for every call. The first time this runs, it will create a delegate and store it in a hidden field. On every subsequent execution of this (either in future iterations of the same range, or for completely new range instances) it can just use that same delegate again and again and again. This is possible because the delegate captures no state. This avoids allocating a new object each time round the loop. -```csharp -var list = new List(); -scheduler.Schedule(list, - (innerScheduler, state) => - { - Console.WriteLine(state.Count); - return Disposable.Empty; - }); -list.Add(1); +Couldn't the Rx library have used this more straightforward approach? + +```cs +var next = scheduler.Schedule(() => LoopRec(scheduler)); // Don't do this. (See below.) ``` -Now that we are modifying shared state, we can get unpredictable results. In this example, we don't even know what type the scheduler is, so we cannot predict the race conditions we are creating. As with any concurrent software, you should avoid modifying shared state. +This uses an extension method that Rx supplies for cases where you have no need for the `state` argument. In fact it's the wrong thing to use here, because this could end up passing the wrong scheduler. If you look at the `IScheduler` interface, you'll see that the work item callback's first argument is an `IScheduler`, and you're supposed to use that scheduler for any logically recursive work. Some schedulers (e.g., the `ImmediateScheduler`) supply a special type of scheduler specifically to avoid logical recursion turning into actual recursion that could end up going so deep that the application crashes with a stack overflow. This particular extension method isn't meant for these logically recursive scenarios, so we can't quite make it this simple. But perhaps we could avoid that weirdness of passing our own `this` argument: -### Future scheduling +```cs +var next = scheduler.Schedule(null, (innerScheduler, _) => LoopRec(innerScheduler)); +``` -As you would expect with a type called "IScheduler", you are able to schedule an action to be executed in the future. You can do so by specifying the exact point in time an action should be invoked, or you can specify the period of time to wait until the action is invoked. This is clearly useful for features such as buffering, timers etc. +This fixes the problem with the preceding example: it correctly uses the correct scheduler for any further logically recursive calls. And now we're just invoking the `LoopRec` instance member in the ordinary way: we're implicitly using the `this` reference that is in scope. So this will create a delegate the captures that implicit `this` reference. But that's inefficient: it will force the compiler to generate code that allocates two objects each time this line runs. (And the same would happen with the preceding example—not only is it broken, it's also inefficient.) It creates one object that has a field holding onto the captured `this`, and then it needs to create a distinct delegate instance that has a reference to that capture object. -Scheduling in the future is thus made possible by two styles of overloads, one thattakes a `TimeSpan` and one that takes a `DateTimeOffset`. These are the two most simple overloads that execute an action in the future. +The more complex code that is actually in the `Range` implementation avoids this. It disables capture by annotating the lambda with `static`. That prevents code from relying on the implicit `this` reference. So it has had to arrange for the `this` reference to be available to the callback. And that's exactly the sort of thing the `state` argument is there for. It provides a way to pass in some per-work-item state so that you can avoid the overhead of capturing variables on each iteration. -```csharp -public static IDisposable Schedule( - this IScheduler scheduler, - TimeSpan dueTime, - Action action) -{...} +### Future scheduling -public static IDisposable Schedule( - this IScheduler scheduler, - DateTimeOffset dueTime, - Action action) -{...} -``` +I talked earlier about time-based operators, and also about the two time-based members of `ISchedule` that enable this, but I've not yet shown how to use it. These enable you to schedule an action to be executed in the future. You can do so by specifying the exact point in time an action should be invoked by calling the overload of `Schedule` that takes a `DateTimeOffset`, or you can specify the period of time to wait until the action is invoked with the `TimeSpan`-based overload. You can use the `TimeSpan` overload like this: @@ -834,22 +851,22 @@ After schedule at 2012-01-01T12:00:00.058000+00:00 Inside schedule at 2012-01-01T12:00:01.044000+00:00 ``` -We can see therefore that scheduling is non-blocking as the 'before' and 'after' calls are very close together in time. You can also see that approximately one second after the action was scheduled, it was invoked. +This illustrates that scheduling was non-blocking here, because the 'before' and 'after' calls are very close together in time. (It will be this way for most schedulers, but as discussed earlier, `ImmediateScheduler` works differently. In this case, you would see the After message after the Inside one. that's why none of the timed operators will use `ImmediateScheduler` by default.) You can also see that approximately one second after the action was scheduled, it was invoked. -You can specify a specific point in time to schedule the task with the `DateTimeOffset` overload. If, for some reason, the point in time you specify is in the past, then the action is scheduled as soon as possible. +You can specify a specific point in time to schedule the task with the `DateTimeOffset` overload. If, for some reason, the point in time you specify is in the past, then the action is scheduled as soon as possible. Be aware that changes in the system clock complicate matters. Rx's schedulers do make some accommodations to deal with clock drift, but sudden large changes to the system clock can cause some short term chaos. ### Cancellation -Each of the overloads to `Schedule` returns an `IDisposable`; this way, a consumer can cancel the scheduled work. In the previous example, we scheduled work to be invoked in one second. We could cancel that work by disposing of the cancellation token (i.e. the return value). +Each of the overloads to `Schedule` returns an `IDisposable`, and calling `Dispose` on this will cancel the scheduled work. In the previous example, we scheduled work to be invoked in one second. We could cancel that work by disposing of the return value. ```csharp var delay = TimeSpan.FromSeconds(1); Console.WriteLine("Before schedule at {0:o}", DateTime.Now); -var token = scheduler.Schedule(delay, () => Console.WriteLine("Inside schedule at {0:o}", DateTime.Now)); +var workItem = scheduler.Schedule(delay, () => Console.WriteLine("Inside schedule at {0:o}", DateTime.Now)); Console.WriteLine("After schedule at {0:o}", DateTime.Now); -token.Dispose(); +workItem.Dispose(); ``` Output: @@ -861,11 +878,11 @@ After schedule at 2012-01-01T12:00:00.058000+00:00 Note that the scheduled action never occurs, as we have cancelled it almost immediately. -When the user cancels the scheduled action method before the scheduler is able to invoke it, that action is just removed from the queue of work. This is what we see in example above. If you want to cancel scheduled work that is already running, then you can use one of the overloads to the `Schedule` method that takes a `Func`. This gives a way for users to cancel out of a job that may already be running. This job could be some sort of I/O, heavy computations or perhaps usage of `Task` to perform some work. +When the user cancels the scheduled action method before the scheduler is able to invoke it, that action is just removed from the queue of work. This is what we see in example above. It's possible to cancel scheduled work that is already running, and this is why the work item callback is required to return `IDisposable`: if work has already begun when you try to cancel the work item, Rx calls `Dispose` on the `IDisposable` that your work item callback returned. This gives a way for users to cancel out of a job that may already be running. This job could be some sort of I/O, heavy computations or perhaps usage of `Task` to perform some work. -Now this may create a problem; if you want to cancel work that has already been started, you need to dispose of an instance of `IDisposable`, but how do you return the disposable if you are still doing the work? You could fire up another thread so the work happens concurrently, but creating threads is something we are trying to steer away from. +You may be wondering how this mechanism can be any use: the work item callback needs to have returned already for Rx to be able to invoke the `IDisposable` that it returns. This mechanism can only be used in practice if work continues after returning to the scheduler. You could fire up another thread so the work happens concurrently, although we generally try to avoid creating threads in Rx. Another possibility would be it the scheduled work item invoked some asynchronous API and returned without waiting for it to complete—if that API offered cancellation, you could return an `IDisposable` that cancelled it. -In this example, we have a method that we will use as the delegate to be scheduled. It just fakes some work by performing a spin wait and adding values to the `list` argument. The key here is that we allow the user to cancel with the `CancellationToken` via the disposable we return. +To illustrate cancellation in operation, this slightly unrealistic example runs some work as a `Task` to enable it to continue after our callback returns. It just fakes some work by performing a spin wait and adding values to the `list` argument. The key here is that create a `CancellationToken` to be able to tell the task we want it to stop, and we return an `IDisposable` that puts this token in to a cancelled state. ```csharp public IDisposable Work(IScheduler scheduler, List list) @@ -888,7 +905,7 @@ public IDisposable Work(IScheduler scheduler, List list) if (cancelToken.IsCancellationRequested) { - Console.WriteLine("Cancelation requested"); + Console.WriteLine("Cancellation requested"); // cancelToken.ThrowIfCancellationRequested(); @@ -926,14 +943,14 @@ Enter to quit: ........ Cancelling... Cancelled -CancelLation requested +Cancellation requested ``` -The problem here is that we have introduced explicit use of `Task`. We can avoid explicit usage of a concurrency model if we use the Rx recursive scheduler features instead. +The problem here is that we have introduced explicit use of `Task` so we are increasing concurrency in a way that is outside of the control of the scheduler. The Rx library generally allowed control over the way in which concurrency is introduced by accepting a scheduler parameter. If the goal is to enable long-running iterative work, we can avoid having to spin up new threads or tasks but using Rx recursive scheduler features instead. I already talked a bit about this in the [Passing state](#passing-state) section, but there are a few ways to go about it. ### Recursion -The more advanced overloads of `Schedule` extension methods take some strange looking delegates as parameters. Take special note of the final parameter in each of these overloads of the `Schedule` extension method. +In addition to the `IScheduler` methods, Rx defines various overloads of `Schedule` in the form of extension methods. Some of these take some strange looking delegates as parameters. Take special note of the final parameter in each of these overloads of the `Schedule` extension method. ```csharp public static IDisposable Schedule( @@ -973,7 +990,7 @@ public static IDisposable Schedule( {...} ``` -Each of these overloads take a delegate "action" that allows you to call "action" recursively. This may seem a very odd signature, but it makes for a great API. This effectively allows you to create a recursive delegate call. This may be best shown with an example. +Each of these overloads take a delegate "action" that allows you to call "action" recursively. This may seem a very odd signature, but it allows us to achieve a similar logically recursive iterative approach as you saw in [Passing state](#passing-state) section, but in a potentially simpler way. This example uses the most simple recursive overload. We have an `Action` that can be called recursively. @@ -1007,239 +1024,12 @@ Cancelled Running ``` -Note that we didn't have to write any cancellation code in our delegate. Rx handled the looping and checked for cancellation on our behalf. Brilliant! Unlike simple recursive methods in C#, we are also protected from stack overflows, as Rx provides an extra level of abstraction. Indeed, Rx takes our recursive method and transforms it to a loop structure instead. - -#### Creating your own iterator - -Earlier in the book, we looked at how we can use [Rx with APM](04_CreatingObservableSequences.html#FromAPM). In our example, we just read the entire file into memory. We also referenced Jeffrey van Gogh's [blog post](http://blogs.msdn.com/b/jeffva/archive/2010/07/23/rx-on-the-server-part-1-of-n-asynchronous-system-io-stream-reading.aspx), which sadly is now out of date; however, his concepts are still sound. Instead of the Iterator method from Jeffrey's post, we can use schedulers to achieve the same result. - -The goal of the following sample is to open a file and stream it in chunks. This enables us to work with files that are larger than the memory available to us, as we would only ever read and cache a portion of the file at a time. In addition to this, we can leverage the compositional nature of Rx to apply multiple transformations to the file such as encryption and compression. By reading chunks at a time, we are able to start the other transformations before we have finished reading the file. - -First, let us refresh our memory with how to get from the `FileStream`'s APM methods into Rx. +Note that we didn't have to write any cancellation code in our delegate. Rx handled the looping and checked for cancellation on our behalf. Since each individual iteration was scheduled as a separate work item, there are no long-running jobs, so it's enough to let the scheduler deal entirely with cancellation. -```csharp -var source = new FileStream(@"C:\some-file.txt", FileMode.Open, FileAccess.Read); -var factory = Observable.FromAsyncPattern(source.BeginRead, source.EndRead); -var buffer = new byte[source.Length]; - -IObservable reader = factory(buffer, 0, (int)source.Length); - -reader.Subscribe(bytesRead => Console.WriteLine("Read {0} bytes from file into buffer", bytesRead)); -``` - -The example above uses `FromAsyncPattern` to create a factory. The factory will take a byte array (`buffer`), an offset (`0`) and a length (`source.Length`); it effectively returns the count of the bytes read as a single-value sequence. When the sequence (`reader`) is subscribed to, `BeginRead` will read values, starting from the offset, into the buffer. In this case, we will read the whole file. Once the file has been read into the buffer, the sequence (`reader`) will push the single value (`bytesRead`) in to the sequence. - -This is all fine, but if we want to read chunks of data at a time then this is not good enough. We need to specify the buffer size we want to use. Let's start with 4KB (4096 bytes). - -```csharp -var bufferSize = 4096; -var buffer = new byte[bufferSize]; -IObservable reader = factory(buffer, 0, bufferSize); -reader.Subscribe(bytesRead => Console.WriteLine("Read {0} bytes from file", bytesRead)); -``` - -This works but will only read a max of 4KB from the file. If the file is larger, we want to keep reading all of it. As the `Position` of the `FileStream` will have advanced to the point it stopped reading, we can reuse the `factory` to reload the buffer. Next, we want to start pushing these bytes into an observable sequence. Let's start by creating the signature of an extension method. - -```csharp -public static IObservable ToObservable( - this FileStream source, - int buffersize, - IScheduler scheduler) -{...} -``` - -We can ensure that our extension method is lazily evaluated by using `Observable.Create`. We can also ensure that the `FileStream` is closed when the consumer disposes of the subscription by taking advantage of the `Observable.Using` operator. - -```csharp -public static IObservable ToObservable( - this FileStream source, - int buffersize, - IScheduler scheduler) -{ - var bytes = Observable.Create(o => - { - ... - }); - - return Observable.Using(() => source, _ => bytes); -} -``` - -Next, we want to leverage the scheduler's recursive functionality to continuously read chunks of data while still providing the user with the ability to dispose/cancel when they choose. This creates a bit of a pickle; we can only pass in one state parameter but need to manage multiple moving parts (buffer, factory, filestream). To do this, we create our own private helper class: - -```csharp -private sealed class StreamReaderState -{ - private readonly int _bufferSize; - private readonly Func> _factory; - - public StreamReaderState(FileStream source, int bufferSize) - { - _bufferSize = bufferSize; - _factory = Observable.FromAsyncPattern( - source.BeginRead, - source.EndRead); - Buffer = new byte[bufferSize]; - } - - public IObservable ReadNext() - { - return _factory(Buffer, 0, _bufferSize); - } - - public byte[] Buffer { get; set; } -} -``` - -This class will allow us to read data into a buffer, then read the next chunk by calling `ReadNext()`. In our `Observable.Create` delegate, we instantiate our helper class and use it to push the buffer into our observable sequence. - -```csharp -public static IObservable ToObservable( - this FileStream source, - int buffersize, - IScheduler scheduler) -{ - var bytes = Observable.Create(o => - { - var initialState = new StreamReaderState(source, buffersize); - - initialState - .ReadNext() - .Subscribe(bytesRead => - { - for (int i = 0; i < bytesRead; i++) - { - o.OnNext(initialState.Buffer[i]); - } - }); - ... - }); - - return Observable.Using(() => source, _ => bytes); -} -``` - -So this gets us off the ground, but we are still do not support reading files larger than the buffer. Now, we need to add recursive scheduling. To do this, we need a delegate to fit the required signature. We will need one that accepts a `StreamReaderState` and can recursively call an `Action`. - -```csharp -public static IObservable ToObservable( - this FileStream source, - int buffersize, - IScheduler scheduler) -{ - var bytes = Observable.Create(o => - { - var initialState = new StreamReaderState(source, buffersize); - - Action> iterator; - iterator = (state, self) => - { - state.ReadNext() - .Subscribe(bytesRead => - { - for (int i = 0; i < bytesRead; i++) - { - o.OnNext(state.Buffer[i]); - } - self(state); - }); - }; - return scheduler.Schedule(initialState, iterator); - }); - - return Observable.Using(() => source, _ => bytes); -} -``` - -We now have an `iterator` action that will: - -- call `ReadNext()` -- subscribe to the result -- push the buffer into the observable sequence -- and recursively call itself. - -We also schedule this recursive action to be called on the provided scheduler. Next, we want to complete the sequence when we get to the end of the file. This is easy, we maintain the recursion until the `bytesRead` is 0. - -```csharp -public static IObservable ToObservable( - this FileStream source, - int buffersize, - IScheduler scheduler) -{ - var bytes = Observable.Create(o => - { - var initialState = new StreamReaderState(source, buffersize); - - Action> iterator; - iterator = (state, self) => - { - state.ReadNext() - .Subscribe(bytesRead => - { - for (int i = 0; i < bytesRead; i++) - { - o.OnNext(state.Buffer[i]); - } - if (bytesRead > 0) - self(state); - else - o.OnCompleted(); - }); - }; - return scheduler.Schedule(initialState, iterator); - }); - - return Observable.Using(() => source, _ => bytes); -} -``` - -At this point, we have an extension method that iterates on the bytes from a file stream. Finally, let us apply some clean up so that we correctly manage our resources and exceptions, and the finished method looks something like this: - -```csharp -public static IObservable ToObservable( - this FileStream source, - int buffersize, - IScheduler scheduler) -{ - var bytes = Observable.Create(o => - { - var initialState = new StreamReaderState(source, buffersize); - var currentStateSubscription = new SerialDisposable(); - Action> iterator = - (state, self) => - currentStateSubscription.Disposable = state.ReadNext() - .Subscribe( - bytesRead => - { - for (int i = 0; i < bytesRead; i++) - { - o.OnNext(state.Buffer[i]); - } - - if (bytesRead > 0) - self(state); - else - o.OnCompleted(); - }, - o.OnError); - - var scheduledWork = scheduler.Schedule(initialState, iterator); - return new CompositeDisposable(currentStateSubscription, scheduledWork); - }); - - return Observable.Using(() => source, _ => bytes); -} -``` +The main difference between these overloads, and using the `IScheduler` methods directly, is that you don't need to pass another callback directly into the scheduler. You just invoke the supplied `Action` and it schedules another call to your method. They also enable you not to pass a state argument if you don't have any use for one. -This is example code and your mileage may vary. I find that increasing the buffer size and returning `IObservable>` suits me better, but the example above works fine too. The goal here was to provide an example of an iterator that provides concurrent I/O access with cancellation and resource-efficient buffering. +As mentioned in the earlier section, although this logically represents recursion, Rx protects us from stack overflows. The schedulers implement this style of recursion by waiting for the method to return before performing the recursive call. (So it is always what's called "tail recursion" where the recursive call occurs right at the end of the current method.) - #### Combinations of scheduler features From 09098c9a272bb55c4550d8dda43d47461653f56a Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Wed, 2 Aug 2023 14:31:01 +0100 Subject: [PATCH 023/142] Feature-complete Leaving Observable chapter --- content/05_Filtering.md | 4 +- content/11_SchedulingAndThreading.md | 359 +-------------- content/12_LeavingIObservable.md | 662 +++++---------------------- content/D_AlgebraicUnderpinnings | 183 ++++++++ 4 files changed, 316 insertions(+), 892 deletions(-) diff --git a/content/05_Filtering.md b/content/05_Filtering.md index fff48de..108865c 100644 --- a/content/05_Filtering.md +++ b/content/05_Filtering.md @@ -275,9 +275,7 @@ Console.WriteLine(v); This logically has the same effect, but because we're using `await`, this won't block the calling thread while it waits for the observable source to produce a value. This might reduce the chances of deadlock. -The fact that we're able to use `await` makes some sense of the fact that these methods end with `Async`, but you might be wondering what's going on here. We've seen that these methods all return `IObservable`, not `Task`, so how are we able to use `await`? - -Although `await` is most often used with `Task`, `Task`, or `ValueTask`, it is actually an extensible language feature. It's possible to make `await` work for more or less any type by defining some suitable extension methods and some supporting types. And that's precisely what Rx does. If your source file includes a `using System.Reactive.Linq;` directive, a suitable extension method will be available, so you can `await` any task. (The way this actually works is that the relevant `GetAwaiter` extension method wraps the `IObservable` in an `AsyncSubject`, which provides everything that C# requires to support `await`. And as you may recall from the [`AsyncSubject` section of chapter 3](./03_CreatingObservableSequences.md#asyncsubject), `AsyncSubject` reports only the final value to emerge from its source. So if you `await` a sequence that reports multiple items, all but the final item will be ignored.) +The fact that we're able to use `await` makes some sense of the fact that these methods end with `Async`, but you might be wondering what's going on here. We've seen that these methods all return `IObservable`, not `Task`, so how are we able to use `await`? There's a full explanation in the [Leaving Rx's World](12_LeavingIObservable.md) chapter, but the short answer is that Rx provides extension methods that enable this to work. When you `await` an observable sequence, the `await` will complete once the source completes, and it will return the final value that emerges from the source. This works well for operators such as `FirstAsync` and `LastAsync` that produce exactly one item. Note that there are occasionally situations in which values are available immediately. For example, the [`BehaviourSubject` section in chapter 3](./03_CreatingObservableSequences.md#behaviorsubject), showed that the defining feature of `BehaviourSubject` is that it always has a current value. That means that Rx's `First` method won't actually block—it will subscribe to the `BehaviourSubject`, and `BehaviourSubject.Subscribe` calls `OnNext` on its subscriber's observable before returning. That enables `First` to return a value immediately without blocking. (Of course, if you use the overload of `First` that accepts a predicate, and if the `BehaviourSubject`'s value doesn't satisfy the predicate, `First` will then block.) diff --git a/content/11_SchedulingAndThreading.md b/content/11_SchedulingAndThreading.md index 62a41bf..44209c2 100644 --- a/content/11_SchedulingAndThreading.md +++ b/content/11_SchedulingAndThreading.md @@ -383,9 +383,9 @@ The `Schedule` overload that takes a `DateTime` is slightly different. If you sp ### CurrentThreadScheduler -The `CurrentThreadScheduler` is very similar to the `ImmediateScheduler`. The difference is how it handles sources that logically produce multiple such as the [`ToObservable` extension method for `IEnumerable`](03_CreatingObservableSequences.md#from-ienumerablet), or [`Observable.Range`](03_CreatingObservableSequences.md#observablerange) +The `CurrentThreadScheduler` is very similar to the `ImmediateScheduler`. The difference is how it handles requests to schedule work when an existing work item is already being handled on the current thread. This can happen if you chain together multiple operators that use schedulers to do their work. -These kinds of operators do not use normal `for` or `foreach` loops. They typically schedule a new work item for each iteration. Whereas the `ImmediateScheduler` will run such work immediately, the `CurrentThreadScheduler` checks to see if it is already processing a work item. That happens with this example from earlier: +To understand what happens, it's helpful to know how sources that produce multiple items in quick succession, such as the [`ToObservable` extension method for `IEnumerable`](03_CreatingObservableSequences.md#from-ienumerablet) or [`Observable.Range`](03_CreatingObservableSequences.md#observablerange), use schedulers. These kinds of operators do not use normal `for` or `foreach` loops. They typically schedule a new work item for each iteration. Whereas the `ImmediateScheduler` will run such work immediately, the `CurrentThreadScheduler` checks to see if it is already processing a work item. That happens with this example from earlier: ```cs Observable @@ -395,7 +395,7 @@ Observable m => Console.WriteLine($"Received {m} on thread: {Environment.CurrentManagedThreadId}")); ``` -Let's follow exactly what happens here. First, assume that this code is just running normally—perhaps inside the `Main` entry point of a program. When this code calls `Subscribe` on the `IObservable` returned by `SelectMany`, that will in turn will call `Subscribe` on the `IObservable` returned by `Observable.Range`, which will in turn schedule a work item for the generation of the first value in the range (`1`). +Let's follow exactly what happens here. First, assume that this code is just running normally and not in any unusual context—perhaps inside the `Main` entry point of a program. When this code calls `Subscribe` on the `IObservable` returned by `SelectMany`, that will in turn will call `Subscribe` on the `IObservable` returned by the first `Observable.Range`, which will in turn schedule a work item for the generation of the first value in the range (`1`). The `Range` operator uses the `CurrentThreadScheduler` by default, and that will ask itself "Am I already in the middle of handling some work item on this thread?" In this case the answer will be no, so it will run the work item immediately (before returning from the `Schedule` call made by the `Range` operator). The `Range` operator will then produce its first value, calling `OnNext` on the `IObserver` that the `SelectMany` operator provided when it subscribed to the range. @@ -403,17 +403,17 @@ The `SelectMany` operator's `OnNext` method will now invoke its lambda, passing So once again,the `CurrentThreadScheduler` will ask itself "Am I already in the middle of handling some work item on this thread?" But this time, the answer will be yes. And this is where the behaviour is different than `ImmediateScheduler`. The `CurrentThreadScheduler` maintains a queue of work for each thread that it gets used on, and in this case it just adds the newly scheduled work to the queue, and returns back to the `SelectMany` operators `OnNext`. -`SelectMany` has now completed its handling of this item (the value `1`) from the first `Range`, so its `OnNext` returns. At this point, this `Range` operator schedules another work item. Again, the `CurrentThreadScheduler` will detect that it is currently running a work item, so it just adds this to the queue. +`SelectMany` has now completed its handling of this item (the value `1`) from the first `Range`, so its `OnNext` returns. At this point, this outer `Range` operator schedules another work item. Again, the `CurrentThreadScheduler` will detect that it is currently running a work item, so it just adds this to the queue. -Having scheduled the work item that is going to generate its second value (`2`), the `Range` operator returns. Remember, the code in the `Range` operator that was running at this point was the callback for the first scheduled work item, so it's returning to the `CurrentThreadScheduler`—we are back inside its `Schedule` method. +Having scheduled the work item that is going to generate its second value (`2`), the `Range` operator returns. Remember, the code in the `Range` operator that was running at this point was the callback for the first scheduled work item, so it's returning to the `CurrentThreadScheduler`—we are back inside its `Schedule` method (which was invoked by the range operator's `Subscribe` method). -At this point, the `CurrentThreadScheduler` does not return from `Schedule` because it checks its work queue, and will see that there are now two items in the queue. (There's the work item that the nested `Range` observable scheduled to generate its first value, and there's also the work item that the top-level `Range` observable just scheduled to generate its second value.) The `CurrentThreadScheduler` will now execute the first of these—the nested `Range` operator now gets to generate its first value (which will be `10`), so it calls `OnNext` on the observer supplied thanks to the top-level call to `Subscribe` in the example. And that observer will just call the lambda we passed to `Subscribe`, causing our `Console.WriteLine` to run. After that returns, the nested `Range` operator will schedule another work item to generate its second item. Again, the `CurrentThreadScheduler` will realise that it's already in the middle of handling a work item on this thread, so it just puts it in the queue and then returns immediately from `Schedule`. The nested `Range` operator is now done for this iteration so it returns back to the scheduler. The scheduler will now pick up the next item in the queue, which in this case it the work item added by the top-level `Range` to produce the second item. +At this point, the `CurrentThreadScheduler` does not return from `Schedule` because it checks its work queue, and will see that there are now two items in the queue. (There's the work item that the nested `Range` observable scheduled to generate its first value, and there's also the work item that the top-level `Range` observable just scheduled to generate its second value.) The `CurrentThreadScheduler` will now execute the first of these—the nested `Range` operator now gets to generate its first value (which will be `10`), so it calls `OnNext` on the observer supplied by `SelectMany`, which will then call its observer, which was supplied thanks to the top-level call to `Subscribe` in the example. And that observer will just call the lambda we passed to `Subscribe`, causing our `Console.WriteLine` to run. After that returns, the nested `Range` operator will schedule another work item to generate its second item. Again, the `CurrentThreadScheduler` will realise that it's already in the middle of handling a work item on this thread, so it just puts it in the queue and then returns immediately from `Schedule`. The nested `Range` operator is now done for this iteration so it returns back to the scheduler. The scheduler will now pick up the next item in the queue, which in this case it the work item added by the top-level `Range` to produce the second item. And so it continues. This queuing of work items when work is already in progress is what enables multiple observable sources to make progress in parallel. By contrast, the `ImmediateScheduler` runs new work items immediately, which is why we don't see this parallel progress. -(To be strictly accurate, there are certain scenarios in which `ImmediateScheduler` can't run work immediately. In these iterative scenarios, it actually supplies a slightly different scheduler that the operators use to schedule all work after the first item, and this checks whether it's being asked to process multiple work items simultaneously. If it is, it falls back to a queuing strategy similar to `CurrentThreadScheduler`, except it's a queue local to the initial work item, instead of a per-thread queue. This prevents problems either due to multithreading, and it also avoids stack overflows that would otherwise occur when an iterative operator schedules a new work item inside the handler for the current work item. Since the queue is not shared across all work in the thread, this still has the effect of ensuring that any nested work queued up by a work item completes before the call to `Schedule` returns. So even when this queueing kicks in, we typically don't see interleaving of work from separate source like we do with `CurrentThreadScheduler`.) +(To be strictly accurate, there are certain scenarios in which `ImmediateScheduler` can't run work immediately. In these iterative scenarios, it actually supplies a slightly different scheduler that the operators use to schedule all work after the first item, and this checks whether it's being asked to process multiple work items simultaneously. If it is, it falls back to a queuing strategy similar to `CurrentThreadScheduler`, except it's a queue local to the initial work item, instead of a per-thread queue. This prevents problems due to multithreading, and it also avoids stack overflows that would otherwise occur when an iterative operator schedules a new work item inside the handler for the current work item. Since the queue is not shared across all work in the thread, this still has the effect of ensuring that any nested work queued up by a work item completes before the call to `Schedule` returns. So even when this queueing kicks in, we typically don't see interleaving of work from separate source like we do with `CurrentThreadScheduler`. For example, if we told the nested `Range` to use `ImmediateScheduler`, this queueing behaviour would kick in as `Range` starts to iterate, but because the queue is local to initial work item executed by that nested `Range`, it will end up producing all of the nested `Range` items before returning.) ### DefaultScheduler @@ -447,7 +447,7 @@ Observable ### NewThreadScheduler -The `NewThreadScheduler` creates a new thread to execute every work item it is given. This is unlikely to make sense in most scenarios. However, it might be useful in cases where you want to execute some long running work, and represent its completion through an `IObservable`. The `Observable.ToAsync` does exactly this, and will normally use the `DefaultScheduler`, meaning it will run the work on a thread pool thread. But it the work is likely to take more than second or two, the thread pool may not be a good choice, because it is optimized for short execution times, and its heuristics for managing the size of the thread pool are not designed with long-running operations in mind. The `NewThreadScheduler` may be a better choice in this case. +The `NewThreadScheduler` creates a new thread to execute every work item it is given. This is unlikely to make sense in most scenarios. However, it might be useful in cases where you want to execute some long running work, and represent its completion through an `IObservable`. The `Observable.ToAsync` does exactly this, and will normally use the `DefaultScheduler`, meaning it will run the work on a thread pool thread. But if the work is likely to take more than second or two, the thread pool may not be a good choice, because it is optimized for short execution times, and its heuristics for managing the size of the thread pool are not designed with long-running operations in mind. The `NewThreadScheduler` may be a better choice in this case. Although each call to `Schedule` creates a new thread, the `NewThreadScheduler` passes a different scheduler into work item callbacks, meaning that anything that attempts to perform iterative work will not create a new thread for every iteration. For example, if you use `NewThreadScheduler` with `Observable.Range`, you will get a new thread each time you subscribe to the resulting `IObservable`, but you won't get a new thread for each item, even though `Range` does schedule a new work item for each value it produces. It schedules these per-value work items through the nested scheduler supplied to the work item callback, and the nested scheduler that `NewThreadScheduler` supplies in these cases invokes all such nested work items on the same thread. @@ -478,6 +478,7 @@ These more specialized types offer two benefits. First, you don't necessarily ha The Rx libraries define several schedulers that virtualize time, including `HistoricalScheduler`, `TestScheduler`, `VirtualTimeScheduler`, and `VirtualTimeSchedulerBase`. We will look at this sort of scheduler in the [Testing chapter](91_TestingRx.md). + ## SubscribeOn and ObserveOn So far, I've talked about why some Rx sources need access to schedulers—this is necessary for timing-related behaviour, and also for sources that produce items as quickly as possible. But remember, schedulers control three things: @@ -1030,345 +1031,5 @@ The main difference between these overloads, and using the `IScheduler` methods As mentioned in the earlier section, although this logically represents recursion, Rx protects us from stack overflows. The schedulers implement this style of recursion by waiting for the method to return before performing the recursive call. (So it is always what's called "tail recursion" where the recursive call occurs right at the end of the current method.) - -#### Combinations of scheduler features - -We have discussed many features that you can use with the `IScheduler` interface. Most of these examples, however, are actually using extension methods to invoke the functionality that we are looking for. The interface itself exposes the richest overloads. The extension methods are effectively just making a trade-off; improving usability/discoverability by reducing the richness of the overload. If you want access to passing state, cancellation, future scheduling and recursion, it is all available directly from the interface methods. - -```csharp -namespace System.Reactive.Concurrency -{ - public interface IScheduler - { - - // Gets the scheduler's notion of current time. - DateTimeOffset Now { get; } - - // Schedules an action to be executed with given state. - // Returns a disposable object used to cancel the scheduled action (best effort). - IDisposable Schedule( - TState state, - Func action); - - // Schedules an action to be executed after dueTime with given state. - // Returns a disposable object used to cancel the scheduled action (best effort). - IDisposable Schedule( - TState state, - TimeSpan dueTime, - Func action); - - // Schedules an action to be executed at dueTime with given state. - // Returns a disposable object used to cancel the scheduled action (best effort). - IDisposable Schedule( - TState state, - DateTimeOffset dueTime, - Func action); - } -} -``` - -## Schedulers in-depth - -We have largely been concerned with the abstract concept of a scheduler and the `IScheduler` interface. This abstraction allows low-level plumbing to remain agnostic towards the implementation of the concurrency model. As in the file reader example above, there was no need for the code to know which implementation of `IScheduler` was passed, as this is a concern of the consuming code. - -Now we take an in-depth look at each implementation of `IScheduler`, consider the benefits and tradeoffs they each make, and when each is appropriate to use. - -### ImmediateScheduler - -The `ImmediateScheduler` is exposed via the `ImmediateScheduler.Instance` static property. This is the most simple of schedulers as it does not actually schedule anything. If you call `Schedule(Action)` then it will just invoke the action. If you schedule the action to be invoked in the future, the `ImmediateScheduler` will invoke a `Thread.Sleep` for the given period of time and then execute the action. In summary, the `ImmediateScheduler` is synchronous. - -### CurrentThreadScheduler - -Like the `ImmediateScheduler`, the `CurrentThreadScheduler` is single-threaded. It is exposed via the `Scheduler.Current` static property. The key difference is that the `CurrentThreadScheduler` acts like a message queue or a _Trampoline_. If you schedule an action that itself schedules an action, the `CurrentThreadScheduler` will queue the inner action to be performed later; in contrast, the `ImmediateScheduler` would start working on the inner action straight away. This is probably best explained with an example. - -In this example, we analyze how `ImmediateScheduler` and `CurrentThreadScheduler` perform nested scheduling differently. - -```csharp -private static void ScheduleTasks(IScheduler scheduler) -{ - Action leafAction = () => Console.WriteLine("----leafAction."); - Action innerAction = () => - { - Console.WriteLine("--innerAction start."); - scheduler.Schedule(leafAction); - Console.WriteLine("--innerAction end."); - }; - Action outerAction = () => - { - Console.WriteLine("outer start."); - scheduler.Schedule(innerAction); - Console.WriteLine("outer end."); - }; - scheduler.Schedule(outerAction); -} - -public void CurrentThreadExample() -{ - ScheduleTasks(Scheduler.CurrentThread); - /*Output: - outer start. - outer end. - --innerAction start. - --innerAction end. - ----leafAction. - */ -} - -public void ImmediateExample() -{ - ScheduleTasks(Scheduler.Immediate); - /*Output: - outer start. - --innerAction start. - ----leafAction. - --innerAction end. - outer end. - */ -} -``` - -Note how the `ImmediateScheduler` does not really "schedule" anything at all, all work is performed immediately (synchronously). As soon as `Schedule` is called with a delegate, that delegate is invoked. The `CurrentThreadScheduler`, however, invokes the first delegate, and, when nested delegates are scheduled, queues them to be invoked later. Once the initial delegate is complete, the queue is checked for any remaining delegates (i.e. nested calls to `Schedule`) and they are invoked. The difference here is quite important as you can potentially get out-of-order execution, unexpected blocking, or even deadlocks by using the wrong one. - -### DispatcherScheduler - -The `DispatcherScheduler` is found in `System.Reactive.Window.Threading.dll` (for WPF, Silverlight 4 and Silverlight 5). When actions are scheduled using the `DispatcherScheduler`, they are effectively marshaled to the `Dispatcher`'s `BeginInvoke` method. This will add the action to the end of the dispatcher's _Normal_ priority queue of work. This provides similar queuing semantics to the `CurrentThreadScheduler` for nested calls to `Schedule`. - -When an action is scheduled for future work, then a `DispatcherTimer` is created with a matching interval. The callback for the timer's tick will stop the timer and re-schedule the work onto the `DispatcherScheduler`. If the `DispatcherScheduler` determines that the `dueTime` is actually not in the future then no timer is created, and the action will just be scheduled normally. - -I would like to highlight a hazard of using the `DispatcherScheduler`. You can construct your own instance of a `DispatcherScheduler` by passing in a reference to a `Dispatcher`. The alternative way is to use the static property `DispatcherScheduler.Instance`. This can introduce hard to understand problems if it is not used properly. The static property does not return a reference to a static field, but creates a new instance each time, with the static property `Dispatcher.CurrentDispatcher` as the constructor argument. If you access `Dispatcher.CurrentDispatcher` from a thread that is not the UI thread, it will thus give you a new instance of a `Dispatcher`, but it will not be the instance you were hoping for. - -For example, imagine that we have a WPF application with an `Observable.Create` method. In the delegate that we pass to `Observable.Create`, we want to schedule the notifications on the dispatcher. We think this is a good idea because any consumers of the sequence would get the notifications on the dispatcher for free. - -```csharp -var fileLines = Observable.Create(o => -{ - var dScheduler = DispatcherScheduler.Instance; - var lines = File.ReadAllLines(filePath); - - foreach (var line in lines) - { - var localLine = line; - dScheduler.Schedule(() => o.OnNext(localLine)); - } - - return Disposable.Empty; -}); -``` - -This code may intuitively seem correct, but actually takes away power from consumers of the sequence. When we subscribe to the sequence, we decide that reading a file on the UI thread is a bad idea. So we add in a `SubscribeOn(Scheduler.NewThread)` to the chain as below: - -```csharp -fileLines - .SubscribeOn(Scheduler.ThreadPool) - .Subscribe(line => Lines.Add(line)); -``` - -This causes the create delegate to be executed on a new thread. The delegate will read the file then get an instance of a `DispatcherScheduler`. The `DispatcherScheduler` tries to get the `Dispatcher` for the current thread, but we are no longer on the UI thread, so there isn't one. As such, it creates a new dispatcher that is used for the `DispatcherScheduler` instance. We schedule some work (the notifications), but, as the underlying `Dispatcher` has not been run, nothing happens; we do not even get an exception. I have seen this on a commercial project and it left quite a few people scratching their heads. - -This takes us to one of our guidelines regarding scheduling: the use of `SubscribeOn` and `ObserveOn` should only be invoked by the final subscriber. If you introduce scheduling in your own extension methods or service methods, you should allow the consumer to specify their own scheduler. We will see more reasons for this guidance in the next chapter. - -### EventLoopScheduler - -The `EventLoopScheduler` allows you to designate a specific thread to a scheduler. Like the `CurrentThreadScheduler` that acts like a trampoline for nested scheduled actions, the `EventLoopScheduler` provides the same trampoline mechanism. The difference is that you provide an `EventLoopScheduler` with the thread you want it to use for scheduling instead, of just picking up the current thread. - -The `EventLoopScheduler` can be created with an empty constructor, or you can pass it a thread factory delegate. - -```csharp -// Creates an object that schedules units of work on a designated thread. -public EventLoopScheduler() -{...} - -// Creates an object that schedules units of work on a designated thread created by the -// provided factory function. -public EventLoopScheduler(Func<ThreadStart, Thread> threadFactory) -{...} -``` - -The overload that allows you to pass a factory enables you to customize the thread before it is assigned to the `EventLoopScheduler`. For example, you can set the thread name, priority, culture and most importantly whether the thread is a background thread or not. Remember that if you do not set the thread's property `IsBackground` to false, then your application will not terminate until it the thread is terminated. The `EventLoopScheduler` implements `IDisposable`, and calling Dispose will allow the thread to terminate. As with any implementation of `IDisposable`, it is appropriate that you explicitly manage the lifetime of the resources you create. - -This can work nicely with the `Observable.Using` method, if you are so inclined. This allows you to bind the lifetime of your `EventLoopScheduler` to that of an observable sequence - for example, this `GetPrices` method that takes an `IScheduler` for an argument and returns an observable sequence. - -```csharp -private IObservable<Price> GetPrices(IScheduler scheduler) -{...} -``` - -Here we bind the lifetime of the `EventLoopScheduler` to that of the result from the `GetPrices` method. - -```csharp -Observable.Using(() => new EventLoopScheduler(), els => GetPrices(els)).Subscribe(...) -``` - -### New Thread - -If you do not wish to manage the resources of a thread or an `EventLoopScheduler`, then you can use `NewThreadScheduler`. You can create your own instance of `NewThreadScheduler` or get access to the static instance via the property `Scheduler.NewThread`. Like `EventLoopScheduler`, you can use the parameterless constructor or provide your own thread factory function. If you do provide your own factory, be careful to set the `IsBackground` property appropriately. - -When you call `Schedule` on the `NewThreadScheduler`, you are actually creating an `EventLoopScheduler` under the covers. This way, any nested scheduling will happen on the same thread. Subsequent (non-nested) calls to `Schedule` will create a new `EventLoopScheduler` and call the thread factory function for a new thread too. - -In this example we run a piece of code reminiscent of our comparison between `Immediate` and `Current` schedulers. The difference here, however, is that we track the `ThreadId` that the action is performed on. We use the `Schedule` overload that allows us to pass the Scheduler instance into our nested delegates. This allows us to correctly nest calls. - -```csharp -private static IDisposable OuterAction(IScheduler scheduler, string state) -{ - Console.WriteLine("{0} start. ThreadId:{1}", state, Thread.CurrentThread.ManagedThreadId); - - scheduler.Schedule(state + ".inner", InnerAction); - - Console.WriteLine("{0} end. ThreadId:{1}", state, Thread.CurrentThread.ManagedThreadId); - - return Disposable.Empty; -} - -private static IDisposable InnerAction(IScheduler scheduler, string state) -{ - Console.WriteLine("{0} start. ThreadId:{1}", state, Thread.CurrentThread.ManagedThreadId); - scheduler.Schedule(state + ".Leaf", LeafAction); - - Console.WriteLine("{0} end. ThreadId:{1}", state, Thread.CurrentThread.ManagedThreadId); - - return Disposable.Empty; -} - -private static IDisposable LeafAction(IScheduler scheduler, string state) -{ - Console.WriteLine("{0}. ThreadId:{1}", state, Thread.CurrentThread.ManagedThreadId); - - return Disposable.Empty; -} -``` - -When executed with the `NewThreadScheduler` like this: - -```csharp -Console.WriteLine("Starting on thread :{0}", Thread.CurrentThread.ManagedThreadId); -Scheduler.NewThread.Schedule("A", OuterAction); -``` - -Output: - -``` -Starting on thread :9 -A start. ThreadId:10 -A end. ThreadId:10 -A.inner start . ThreadId:10 -A.inner end. ThreadId:10 -A.inner.Leaf. ThreadId:10 -``` - -As you can see, the results are very similar to the `CurrentThreadScheduler`, except that the trampoline happens on a separate thread. This is in fact exactly the output we would get if we used an `EventLoopScheduler`. The differences between usages of the `EventLoopScheduler` and the `NewThreadScheduler`start to appear when we introduce a second (non-nested) scheduled task. - -```csharp -Console.WriteLine("Starting on thread :{0}", Thread.CurrentThread.ManagedThreadId); -Scheduler.NewThread.Schedule("A", OuterAction); -Scheduler.NewThread.Schedule("B", OuterAction); -``` - -Output: - -``` -Starting on thread :9 -A start. ThreadId:10 -A end. ThreadId:10 -A.inner start . ThreadId:10 -A.inner end. ThreadId:10 -A.inner.Leaf. ThreadId:10 -B start. ThreadId:11 -B end. ThreadId:11 -B.inner start . ThreadId:11 -B.inner end. ThreadId:11 -B.inner.Leaf. ThreadId:11 -``` - -Note that there are now three threads at play here. Thread 9 is the thread we started on and threads 10 and 11 are performing the work for our two calls to Schedule. - -### Thread Pool - -The `ThreadPoolScheduler` will simply just tunnel requests to the `ThreadPool`. For requests that are scheduled as soon as possible, the action is just sent to `ThreadPool.QueueUserWorkItem`. For requests that are scheduled in the future, a `System.Threading.Timer` is used. - -As all actions are sent to the `ThreadPool`, actions can potentially run out of order. Unlike the previous schedulers we have looked at, nested calls are not guaranteed to be processed serially. We can see this by running the same test as above but with the `ThreadPoolScheduler`. - -```csharp -Console.WriteLine("Starting on thread :{0}", Thread.CurrentThread.ManagedThreadId); -Scheduler.ThreadPool.Schedule("A", OuterAction); -Scheduler.ThreadPool.Schedule("B", OuterAction); -``` - -The output - -``` -Starting on thread :9 -A start. ThreadId:10 -A end. ThreadId:10 -A.inner start . ThreadId:10 -A.inner end. ThreadId:10 -A.inner.Leaf. ThreadId:10 -B start. ThreadId:11 -B end. ThreadId:11 -B.inner start . ThreadId:10 -B.inner end. ThreadId:10 -B.inner.Leaf. ThreadId:11 -``` - -Note, that as per the `NewThreadScheduler` test, we initially start on one thread but all the scheduling happens on two other threads. The difference is that we can see that part of the second run "B" runs on thread 11 while another part of it runs on 10. - -### TaskPool - -The `TaskPoolScheduler` is very similar to the `ThreadPoolScheduler` and, when available (depending on your target framework), you should favor it overthe later. Like the `ThreadPoolScheduler`, nested scheduled actions are not guaranteed to be run on the same thread. Running the same test with the `TaskPoolScheduler` shows us similar results. - -```csharp -Console.WriteLine("Starting on thread :{0}", Thread.CurrentThread.ManagedThreadId); -Scheduler.TaskPool.Schedule("A", OuterAction); -Scheduler.TaskPool.Schedule("B", OuterAction); -``` - -Output: - -``` -Starting on thread :9 -A start. ThreadId:10 -A end. ThreadId:10 -B start. ThreadId:11 -B end. ThreadId:11 -A.inner start . ThreadId:10 -A.inner end. ThreadId:10 -A.inner.Leaf. ThreadId:10 -B.inner start . ThreadId:11 -B.inner end. ThreadId:11 -B.inner.Leaf. ThreadId:10 -``` - -### TestScheduler - -It is worth noting that there is also a `TestScheduler` accompanied by its base classes `VirtualTimeScheduler` and `VirtualTimeSchedulerBase`. The latter two are not really in the scope of an introduction to Rx, but the former is. We will cover all things testing including the `TestScheduler` in the next chapter, [Testing Rx](16_TestingRx.html). - -## Selecting an appropriate scheduler - -With all of these options to choose from, it can be hard to know which scheduler to use and when. Here is a simple check list to help you in this daunting task: - -### UI Applications - -- The final subscriber is normally the presentation layer and should control the scheduling. -- Observe on the `DispatcherScheduler` to allow updating of ViewModels -- Subscribe on a background thread to prevent the UI from becoming unresponsive - - If the subscription will not block for more than 50ms then - - Use the `TaskPoolScheduler` if available, or - - Use the `ThreadPoolScheduler` - - If any part of the subscription could block for longer than 50ms, then you shoulduse the `NewThreadScheduler`. - -### Service layer - -* If your service is reading data from a queue of some sort, consider using a dedicated `EventLoopScheduler`. -This way, you can preserve order of events -* If processing an item is expensive (>50ms or requires I/O), then consider using a `NewThreadScheduler` -* If you just need the scheduler for a timer, e.g. for `Observable.Interval` or `Observable.Timer`, then favor the `TaskPool`. -Use the `ThreadPool` if the `TaskPool` is not available for your platform. - -> The `ThreadPool` (and the `TaskPool` by proxy) have a time delay beforethey will increase the number of threads that they use. This delay is 500ms. Letus consider a PC with two cores that we will schedule four actions onto. By default,the thread pool size will be the number of cores (2). If each action takes 1000ms, then two actions will be sitting in the queue for 500ms before the thread pool size is increased. Instead of running all four actions in parallel, which would take one second in total, the work is not completed for 1.5 seconds as two of the actions sat in the queue for 500ms. For this reason, you should only schedule work thatis very fast to execute (guideline 50ms) onto the ThreadPool or TaskPool. Conversely,creating a new thread is not free, but with the power of processors today the creation of a thread for work over 50ms is a small cost. - -Concurrency is hard. We can choose to make our life easier by taking advantage of Rx and its scheduling features. We can improve it even further by only using Rx where appropriate. While Rx has concurrency features, these should not be mistaken for a concurrency framework. Rx is designed for querying data, and as discussed in [the first chapter](01_WhyRx.html#Could), parallel computations or composition of asynchronous methods is more appropriate for other frameworks. - -Rx solves the issues for concurrently generating and consuming data via the `ObserveOn`/`SubscribeOn` methods. By using these appropriately, we can simplify our code base, increase responsiveness and reduce the surface area of our concurrency concerns. Schedulers provide a rich platform for processing work concurrently without the need to be exposed directly to threading primitives. They also help with common troublesome areas of concurrency such as cancellation, passing state and recursion. By reducing the concurrency surface area, Rx provides a (relatively) simple yet powerful set of concurrency features paving the way to the [pit of success](http://blogs.msdn.com/b/brada/archive/2003/10/02/50420.aspx). - - -TODO: IScheduler.Catch extension method? \ No newline at end of file +This concludes our tour of scheduling and threading. Next, we will look at the boundary between Rx and the rest of the world. \ No newline at end of file diff --git a/content/12_LeavingIObservable.md b/content/12_LeavingIObservable.md index 5a5e4af..fa518bb 100644 --- a/content/12_LeavingIObservable.md +++ b/content/12_LeavingIObservable.md @@ -1,146 +1,100 @@ --- -title: Leaving the monad +title: Leaving Rx's World --- -# Leaving the monad +# Leaving Rx's World -An observable sequence is a useful construct, especially when we have the power of LINQ to compose complex queries over it. Even though we recognize the benefits of the observable sequence, sometimes it is required to leave the `IObservable` paradigm for another paradigm, maybe to enable you to integrate with an existing API (i.e. use events or `Task`). You might leave the observable paradigm if you find it easier for testing, or it may simply be easier for you to learn Rx by moving between an observable paradigm and a more familiar one. +An observable sequence is a useful construct, especially when we have the power of LINQ to compose complex queries over it. Even though we recognize the benefits of the observable sequence, sometimes we must leave the `IObservable` paradigm. This is necessary when we need to integrate with an existing non-Rx-based API (e.g. one that uses events or `Task`). You might leave the observable paradigm if you find it easier for testing, or it may simply be easier for you to learn Rx by moving between an observable paradigm and a more familiar one. -## What is a monad +Rx's compositional nature is the key to its power, but it can look like a problem when you need to integrate with a component that doesn't understand Rx. Most of the Rx library features we've looked at so far express their inputs and outputs as observables. How are you supposed to take some real world source of events and turn that into an observable? How are you supposed to do something meaningful with the output of an observable? -We have casually referred to the term _monad_ earlier in the book, but to most it will be a very foreign term. -I am going to try to avoid overcomplicating what a monad is, but give enough of an explanation to help us out with our next category of methods. -The full definition of a monad is quite abstract. -[Many others](http://www.haskell.org/haskellwiki/Monad_tutorials_timeline) have tried to provide their definition of a monad using all sorts of metaphors from astronauts to Alice in Wonderland. -Many of the tutorials for monadic programming use Haskell for the code examples which can add to the confusion. -For us, a monad is effectively a programming structure that represents computations. -Compare this to other programming structures: +You've already seem some answer to these questions. The [Creating Observable Sequences chapter](03_CreatingObservableSequences.md) showed various ways to create observable sources. But when it comes to handling the items that emerge from an `IObservable`, all we've really seen is how to implement [`IObserver`](02_KeyTypes.md#iobserver), and [how to use the callback based `Suscribe`` extension methods to subscribe to an `IObservable`](02_KeyTypes.md#iobservable). -
-
Data structure
-
- Purely state e.g. a List, a Tree or a Tuple -
-
Contract
-
- Contract definition or abstract functionality e.g. an interface or abstract class -
-
Object-Orientated structure
-
- State and behavior together -
-
+In this chapter, we will look at the methods in Rx which allow you to leave the `IObservable` world, so you can do some useful work with the notifications that emerge from a source. -Generally a monadic structure allows you to chain together operators to produce a pipeline, just as we do with our extension methods. +## Integration with `async` and `await` -Monads are a kind of abstract data type constructor that encapsulate program logic instead of data in the domain model. +You can use C#'s `await` keyword with any `IObservable`. We saw this earlier with [`FirstAsync`](05_Filtering.md#blocking-versions-of-firstlastsingleordefault): -This neat definition of a monad lifted from Wikipedia allows us to start viewing sequences as monads; the abstract data type in this case is the `IObservable` type. When we use an observable sequence, we compose functions onto the abstract data type (the `IObservable`) to create a query. This query becomes our encapsulated programming logic. +```cs +long v = await Observable.Timer(TimeSpan.FromSeconds(2)).FirstAsync(); +Console.WriteLine(v); +``` -The use of monads to define control flows is particularly useful when dealing with typically troublesome areas of programming such as IO, concurrency and exceptions. This just happens to be some of Rx's strong points! +Although `await` is most often used with `Task`, `Task`, or `ValueTask`, it is actually an extensible language feature. It's possible to make `await` work for more or less any type by defining some suitable extension methods and some supporting types. And that's precisely what Rx does. If your source file includes a `using System.Reactive.Linq;` directive, a suitable extension method will be available, so you can `await` any task. -## Why leave the monad? +The way this actually works is that the relevant `GetAwaiter` extension method wraps the `IObservable` in an `AsyncSubject`, which provides everything that C# requires to support `await`. These wrappers work in such a way that there will be a call to `Subscribe` each time you execute an `await` against an `IObservable`. -There is a variety of reasons you may want to consume an observable sequence in a different paradigm. Libraries that need to expose functionality externally may be required to present it as events or as `Task` instances. In demonstration and sample code you may prefer to use blocking methods to limit the number of asynchronous moving parts. This may help make the learning curve to Rx a little less steep! +If a source reports an error by invoking its observer's `OnError`, Rx's `await` integration handles this by putting the task into a faulted state, so that the `await` will rethrow the exception. -In production code, it is rarely advised to 'break the monad', especially moving from an observable sequence to blocking methods. Switching between asynchronous and synchronous paradigms should be done with caution, as this is a common root cause for concurrency problems such as deadlock and scalability issues. +Sequence can be empty—they call `OnCompleted` without ever having called `OnNext`. If you `await` a sequence that does this, it will throw an `InvalidOperationException` reporting that the sequence contains no elements. -In this chapter, we will look at the methods in Rx which allow you to leave the `IObservable` monad. +As you may recall from the [`AsyncSubject` section of chapter 3](./03_CreatingObservableSequences.md#asyncsubject), `AsyncSubject` reports only the final value to emerge from its source. So if you `await` a sequence that reports multiple items, all but the final item will be ignored. What if you want to see all of the items, but you'd still like to use `await` to handle completion and errors? -## ForEach +## ForEachAsync -The `ForEach` method provides a way to process elements as they are received. The key difference between `ForEach` and `Subscribe` is that `ForEach` will block the current thread until the sequence completes. +The `ForEachAsync` method supports `await`, but it provides a way to process each element. You could think of it as a hybrid of the `await` behaviour described in the preceding section, and the callback-based `Subscribe`. We can still use `await` to detect completion and errors, but we supply a callback enabling us to handle every item: -```csharp -var source = Observable.Interval(TimeSpan.FromSeconds(1)) +```cs +IObservable source = Observable.Interval(TimeSpan.FromSeconds(1)) .Take(5); -source.ForEach(i => Console.WriteLine("received {0} @ {1}", i, DateTime.Now)); -Console.WriteLine("completed @ {0}", DateTime.Now); +await source.ForEachAsync(i => Console.WriteLine("received {0} @ {1}", i, DateTime.Now)); +Console.WriteLine("finished @ {0}", DateTime.Now); ``` Output: ``` -received 0 @ 01/01/2012 12:00:01 a.m. -received 1 @ 01/01/2012 12:00:02 a.m. -received 2 @ 01/01/2012 12:00:03 a.m. -received 3 @ 01/01/2012 12:00:04 a.m. -received 4 @ 01/01/2012 12:00:05 a.m. -completed @ 01/01/2012 12:00:05 a.m. +received 0 @ 02/08/2023 07:53:46 +received 1 @ 02/08/2023 07:53:47 +received 2 @ 02/08/2023 07:53:48 +received 3 @ 02/08/2023 07:53:49 +received 4 @ 02/08/2023 07:53:50 +finished @ 02/08/2023 07:53:50 ``` -Note that the completed line is last, as you would expect. To be clear, you can get similar functionality from the `Subscribe` extension method, but the `Subscribe` method will not block. So if we substitute the call to `ForEach` with a call to `Subscribe`, we will see the completed line happen first. +Note that the `finished` line is last, as you would expect. Let's compare this with the `Subscribe` extension method, which also lets us provide a single callback for handling items: ```csharp -var source = Observable.Interval(TimeSpan.FromSeconds(1)) +IObservable source = Observable.Interval(TimeSpan.FromSeconds(1)) .Take(5); source.Subscribe(i => Console.WriteLine("received {0} @ {1}", i, DateTime.Now)); -Console.WriteLine("completed @ {0}", DateTime.Now); +Console.WriteLine("finished @ {0}", DateTime.Now); ``` -Output: +As the output shows, `Subscribe` returned immediately. Our per-item callback was invoked just like before, but this all happened later on: ``` -completed @ 01/01/2012 12:00:00 a.m. -received 0 @ 01/01/2012 12:00:01 a.m. -received 1 @ 01/01/2012 12:00:02 a.m. -received 2 @ 01/01/2012 12:00:03 a.m. -received 3 @ 01/01/2012 12:00:04 a.m. -received 4 @ 01/01/2012 12:00:05 a.m. +finished @ 02/08/2023 07:55:42 +received 0 @ 02/08/2023 07:55:43 +received 1 @ 02/08/2023 07:55:44 +received 2 @ 02/08/2023 07:55:45 +received 3 @ 02/08/2023 07:55:46 +received 4 @ 02/08/2023 07:55:47 ``` -Unlike the `Subscribe` extension method, `ForEach` has only the one overload; the one that take an `Action` as its single argument. In contrast, previous (pre-release) versions of Rx, the `ForEach` method had most of the same overloads as `Subscribe`. Those overloads of `ForEach` have been deprecated, and I think rightly so. There is no need to have an `OnCompleted` handler in a synchronous call, it is unnecessary. You can just place the call immediately after the `ForEach` call as we have done above. Also, the `OnError` handler can now be replaced with standard Structured Exception Handling like you would use for any other synchronous code, with a `try`/`catch` block. This also gives symmetry to the `ForEach` instance method on the `List` type. - -```csharp -var source = Observable.Throw(new Exception("Fail")); +This can be useful in batch-style programs that perform some work and then exit. The problem with using `Subscribe` in that scenario is that our program could easily exit without having finished the work it started. This is easy to avoid with `ForEachAsync` because we just use `await` to ensure that our method doesn't complete until the work is done. -try -{ - source.ForEach(Console.WriteLine); -} -catch (Exception ex) -{ - Console.WriteLine("error @ {0} with {1}", DateTime.Now, ex.Message); -} -finally -{ - Console.WriteLine("completed @ {0}", DateTime.Now); -} -``` +When we use `await` either directly against an `IObservable`, or through `ForEachAsync`, we are essentially choosing to handle sequence completion in a conventional way. Error and completion handling are no longer callback driven—Rx supplies the `OnCompleted` and `OnError` handlers for us, and instead represents these through the awaiter mechanism C# recognizes. (Specifically, when we `await` a source directly, Rx supplies a custom awaiter, and when we use `ForEachAsync` it just returns a `Task`.) -Output: +Note that there are some circumstances in which `Subscribe` will block until its source completes. [`Observable.Return`](03_CreatingObservableSequences.md#observablereturn) will do this by default, as will [`Observable.Range`](03_CreatingObservableSequences.md#observablerange). We could try to make the last example do it by specifying a different scheduler: +```csharp +// Don't do this! +IObservable source = Observable.Interval(TimeSpan.FromSeconds(1), ImmediateScheduler.Instance) + .Take(5); +source.Subscribe(i => Console.WriteLine("received {0} @ {1}", i, DateTime.Now)); +Console.WriteLine("finished @ {0}", DateTime.Now); ``` -error @ 01/01/2012 12:00:00 a.m. with Fail -completed @ 01/01/2012 12:00:00 a.m. -``` -The `ForEach` method, like its other blocking friends (`First` and `Last` etc.), should be used with care. -I would leave the `ForEach` method for spikes, tests and demo code only. -We will discuss the problems with introducing blocking calls when we look at concurrency. +However, this highlights the dangers of non-async blocking calls: although this looks like it should work, in practice it deadlocks in the current version of Rx. Rx doesn't consider the `ImmediateScheduler` to be suitable for timer-based operations, which is why it's not the default, and this scenario is a good example of why that is. (The fundamental issue is that the only way to cancel a scheduled work item is to call `Dispose` on the object returned by the call to `Schedule`. `ImmediateScheduler` by definition doesn't return until after it has finished the work, meaning it effectively can't support cancellation. So the call to `Interval` effectively creates a periodically scheduled work item that can't be cancelled, and which is therefore doomed to run forever.) + +This is why we need `ForEachAsync`. It might look like we can get the same effect through clever use of schedulers, but in practice if you need to wait for something asynchronous to happen, it's always better to use `await` than to use an approach that entails blocking the calling thread. - - -## ToEnumerable +## ToEnumerable -An alternative way to switch out of the `IObservable` is to call the `ToEnumerable` extension method. -As a simple example: +The two mechanisms we've explored so far convert completion and error handling from Rx's callback mechanism to a more conventional approach enabled by `await`, but if we wanted to handle each item from the source, each still used a callback for that. But the `ToEnumerable` extension method goes a step further: it enables the entire sequence to be consumed with a conventional `foreach` loop: ```csharp var period = TimeSpan.FromMilliseconds(200); @@ -169,10 +123,9 @@ done ``` The source observable sequence will be subscribed to when you start to enumerate the sequence (i.e. lazily). -In contrast to the `ForEach` extension method, using the `ToEnumerable` method means you are only blocked when you try to move to the next element and it is not available. -Also, if the sequence produces values faster than you consume them, they will be cached for you. +If no elements are available yet, or you have consumed all elements produced so far, the call that `foreach` makes to the enumerator's `MoveNext` will block until the source produces an element. So this approach relies on the source being able to generate elements from some other thread. (In this example, `Timer` defaults to the [`DefaultScheduler`](11_SchedulingAndThreading.md#defaultscheduler), which runs work on the thread pool.) If the sequence produces values faster than you consume them, they will be queued for you. (This means that it is technically possible to consume and generate items on the same thread when using `ToEnumerable` but this would rely on the producer always remaining ahead. This would be a dangerous approach because if the `foreach` loop ever caught up, it would then deadlock.) -To cater for errors, you can wrap your `foreach` loop in a `try`/`catch` as you do with any other enumerable sequence: +As with `await` and `ForEachAsync`, if the source reports an error, this will be thrown, so you can use ordinary C# exception handling as this example shows: ```csharp try @@ -188,36 +141,24 @@ catch (Exception e) } ``` -As you are moving from a push to a pull model (non-blocking to blocking), the standard warning applies. - -## To a single collection +## To a single collection -To avoid having to oscillate between push and pull, you can use one of the next four methods to get the entire list back in a single notification. -They all have the same semantics, but just produce the data in a different format. -They are similar to their corresponding `IEnumerable` operators, but the return values differ in order to retain asynchronous behavior. +Sometimes you will want all of the items a source produces as a single list. For example, perhaps you can't just process the elements in order—perhaps you will sometimes need to refer back to elements received earlier. The four operations described in following sections gather all of the items into a single collection. They all still produce an `IObservable` (e.g., an `IObservable` or an `IObservable>`), but these are all single-element observables, and as you've already seen, you can use the `await` keyword to get hold of this single output. -### ToArray and ToList +### ToArray and ToList -Both `ToArray` and `ToList` take an observable sequence and package it into an array or an instance of `List` respectively. -Once the observable sequence completes, the array or list will be pushed as the single value of the result sequence. +`ToArray` and `ToList` take an observable sequence and package it into an array or an instance of `List` respectively. As with all of the single collection operations, these return an observable source that waits for their input sequence to completes, and then produces the array or list as the single value, after which they immediately complete. This example uses `ToArray` to collect all 5 elements from a source sequence into an array, and uses the `await` to extract that array from the sequence that `ToArray` returns: -```csharp -var period = TimeSpan.FromMilliseconds(200); -var source = Observable.Timer(TimeSpan.Zero, period).Take(5); -var result = source.ToArray(); - -result.Subscribe( - arr => { - Console.WriteLine("Received array"); - foreach (var value in arr) - { - Console.WriteLine(value); - } - }, - () => Console.WriteLine("Completed") -); +```cs +TimeSpan period = TimeSpan.FromMilliseconds(200); +IObservable source = Observable.Timer(TimeSpan.Zero, period).Take(5); +IObservable resultSource = source.ToArray(); -Console.WriteLine("Subscribed"); +long[] result = await resultSource; +foreach (var value in result) +{ + Console.WriteLine(value); +} ``` Output: @@ -233,15 +174,17 @@ Received array Completed ``` -As these methods still return observable sequences we can use our `OnError` handler for errors. Note that the source sequence is packaged to a single notification; you either get the whole sequence *or* the error. If the source produces values and then errors, you will not receive any of those values. All four operators (`ToArray`, `ToList`, `ToDictionary` and `ToLookup`) handle errors like this. +As these methods still return observable sequences, you can also use the normal Rx `Subscribe` mechanisms, or use these as inputs to other operators. -### ToDictionary and ToLookup +If the source produces values and then errors, you will not receive any of those values—all values received up to that point will be discarded, and the operator will invoke its observer's `OnError` (and in the example above, that will result in the exception being thrown from the `await`). All four operators (`ToArray`, `ToList`, `ToDictionary` and `ToLookup`) handle errors like this. -As an alternative to arrays and lists, Rx can package an observable sequence into a dictionary or lookup with the `ToDictionary` and `ToLookup` methods. Both methods have the same semantics as the `ToArray` and `ToList` methods, as they return a sequence with a single value and have the same error handling features. +### ToDictionary and ToLookup -The `ToDictionary` extension method overloads: +Rx can package an observable sequence into a dictionary or lookup with the `ToDictionary` and `ToLookup` methods. Both methods take the same basic approach as the `ToArray` and `ToList` methods: they return a single-element sequence that produces the collection once the input source completes. -```csharp +`ToDictionary` provides four overloads that correspond directly to the `ToDictionary` extension methods for `IEnumerable` defined by LINQ to Objects: + +```cs // Creates a dictionary from an observable sequence according to a specified key selector // function, a comparer, and an element selector function. public static IObservable> ToDictionary( @@ -275,88 +218,24 @@ public static IObservable> ToDictionary> ToLookup( - this IObservable source, - Func keySelector, - Func elementSelector, - IEqualityComparer comparer) -{...} - -// Creates a lookup from an observable sequence according to a specified key selector -// function, and a comparer. -public static IObservable> ToLookup( - this IObservable source, - Func keySelector, - IEqualityComparer comparer) -{...} - -// Creates a lookup from an observable sequence according to a specified key selector -// function, and an element selector function. -public static IObservable> ToLookup( - this IObservable source, - Func keySelector, - Func elementSelector) -{...} - -// Creates a lookup from an observable sequence according to a specified key selector -// function. -public static IObservable> ToLookup( - this IObservable source, - Func keySelector) -{...} -``` - -Both `ToDictionary` and `ToLookup` require a function that can be applied each value to get its key. In addition, the `ToDictionary` method overloads mandate that all keys should be unique. If a duplicate key is found, it terminate the sequence with a `DuplicateKeyException`. On the other hand, the `ILookup` is designed to have multiple values grouped by the key. If you have many values per key, then `ToLookup` is probably the better option. +The `ToLookup` extension offers near-identical-looking overloads, the difference being the return type (and the name, obviously). They all return an `IObservable>`. As with LINQ to Objects, the distinction between a dictionary and a lookup is that the `ILookup>` interface allows each key to have any number of values, whereas a dictionary maps each key to one value. -## ToTask -We have compared `AsyncSubject` to `Task` and even showed how to [transition from a task](04_CreatingObservableSequences.html#FromTask) to an observable sequence. The `ToTask` extension method will allow you to convert an observable sequence into a `Task`. Like an `AsyncSubject`, this method will ignore multiple values, only returning the last value. +## ToTask -```csharp -// Returns a task that contains the last value of the observable sequence. -public static Task ToTask( - this IObservable observable) -{...} +Although Rx provides direct support for using `await` with an `IObservable`, it can sometimes be useful to obtain a `Task` representing an `IObservable`. This is useful because some APIs expect a `Task`. You can call `ToTask()` on any `IObservable`, and this will subscribe to that observable, returning a `Task` that will complete when the task completes, producing the sequence's final output as the task's result. If the source completes without producing an element, the task will enter a faulted state, with an `InvalidOperation` exception complaining that the inputs sequence contains no elements. -// Returns a task that contains the last value of the observable sequence, with state to -// use as the underlying task's AsyncState. -public static Task ToTask( - this IObservable observable, - object state) -{...} - -// Returns a task that contains the last value of the observable sequence. Requires a -// cancellation token that can be used to cancel the task, causing unsubscription from -// the observable sequence. -public static Task ToTask( - this IObservable observable, - CancellationToken cancellationToken) -{...} - -// Returns a task that contains the last value of the observable sequence, with state to -// use as the underlying task's AsyncState. Requires a cancellation token that can be used -// to cancel the task, causing unsubscription from the observable sequence. -public static Task ToTask( - this IObservable observable, - CancellationToken cancellationToken, - object state) -{...} -``` +You can optionally pass a cancellation token. If you cancel this before the observable sequence completes, Rx will unsubscribe from the source, and put the task into a cancelled state. This is a simple example of how the `ToTask` operator can be used. Note, the `ToTask` method is in the `System.Reactive.Threading.Tasks` namespace. -```csharp -var source = Observable.Interval(TimeSpan.FromSeconds(1)) +```cs +IObservable source = Observable.Interval(TimeSpan.FromSeconds(1)) .Take(5); -var result = source.ToTask(); //Will arrive in 5 seconds. -Console.WriteLine(result.Result); +Task resultTask = source.ToTask(); +long result = await resultTask; // Will take 5 seconds. +Console.WriteLine(result); ``` Output: @@ -365,49 +244,23 @@ Output: 4 ``` -If the source sequence was to manifest error then the task would follow the error-handling semantics of tasks. - -```csharp -var source = Observable.Throw(new Exception("Fail!")); -var result = source.ToTask(); - -try -{ - Console.WriteLine(result.Result); -} -catch (AggregateException e) -{ - Console.WriteLine(e.InnerException.Message); -} -``` - -Output: - -``` -Fail! -``` +If the source sequence calls `OnError`, Rx puts the task in a faulted state, using the exception supplied. Once you have your task, you can of course engage in all the features of the TPL such as continuations. -## ToEvent<T> +## ToEvent -Just as you can use an event as the source for an observable sequence with [`FromEventPattern`](04_CreatingObservableSequences.html#FromEvent), you can also make your observable sequence look like a standard .NET event with the `ToEvent` extension methods. +Just as you can use an event as the source for an observable sequence with [`FromEventPattern`](03_CreatingObservableSequences.md#from-events), you can also make your observable sequence look like a standard .NET event with the `ToEvent` extension methods. ```csharp // Exposes an observable sequence as an object with a .NET event. public static IEventSource ToEvent(this IObservable source) -{...} +{...} // Exposes an observable sequence as an object with a .NET event. public static IEventSource ToEvent( this IObservable source) -{...} - -// Exposes an observable sequence as an object with a .NET event. -public static IEventPatternSource ToEventPattern( - this IObservable> source) - where TEventArgs : EventArgs -{...} +{...} ``` The `ToEvent` method returns an `IEventSource`, which will have a single event member on it: `OnNext`. @@ -438,9 +291,18 @@ Output: 4 ``` -### ToEventPattern +This does not follow the standard .NET event pattern. We use a slightly different approach if we want that. + +### ToEventPattern -Note that this does not follow the standard pattern of events. Normally, when you subscribe to an event, you need to handle the `sender` and `EventArgs` parameters. In the example above, we just get the value. If you want to expose your sequence as an event that follows the standard pattern, you will need to use `ToEventPattern`. +Normally, .NET events supply `sender` and `EventArgs` arguments to their handlers. In the example above, we just get the value. If you want to expose your sequence as an event that follows the standard pattern, you will need to use `ToEventPattern`. + +```cs +// Exposes an observable sequence as an object with a .NET event. +public static IEventPatternSource ToEventPattern( + this IObservable> source) + where TEventArgs : EventArgs +``` The `ToEventPattern` will take an `IObservable>` and convert that into an `IEventPatternSource`. The public interface for these types is quite simple. @@ -464,7 +326,7 @@ public interface IEventPatternSource where TEventArgs : EventArgs } ``` -These look quite easy to work with. So if we create an `EventArgs` type and then apply a simple transform using `Select`, we can make a standard sequence fit the pattern. +To use this, we will need a suitable `EventArgs` type. You might be able to use one supplied by the .NET runtime libraries, but if not you can easily write your own: The `EventArgs` type: @@ -485,234 +347,42 @@ public class MyEventArgs : EventArgs } ``` -The transform: +We can then use this from Rx by applying a simple transform using `Select`: -```csharp -var source = Observable.Interval(TimeSpan.FromSeconds(1)) - .Select(i => new EventPattern(this, new MyEventArgs(i))); +```cs +IObservable> source = Observable + .Interval(TimeSpan.FromSeconds(1)) + .Select(i => new EventPattern(this, new MyEventArgs(i))); ``` Now that we have a sequence that is compatible, we can use the `ToEventPattern`, and in turn, a standard event handler. -```csharp -var result = source.ToEventPattern(); +```cs +IEventPatternSource result = source.ToEventPattern(); result.OnNext += (sender, eventArgs) => Console.WriteLine(eventArgs.Value); ``` Now that we know how to get back into .NET events, let's take a break and remember why Rx is a better model. -- In C#, events have a curious interface. Some find the `+=` and `-=` operators an unnatural way to register a callback +- In C#, events have a curious syntax. Some find the `+=` and `-=` operators an unnatural way to register a callback - Events are difficult to compose - Events do not offer the ability to be easily queried over time -- Events are a common cause of accidental memory leaks -- Events do not have a standard pattern for signaling completion +- Events do not have a standard pattern for reporting errors +- Events do not have a standard pattern for indicating the end of a sequence of values - Events provide almost no help for concurrency or multithreaded applications. For instance, raising an event on a separate thread requires you to do all of the plumbing -The set of methods we have looked at in this chapter complete the circle started in the [Creating a Sequence](04_CreatingObservableSequences.html#TransitioningIntoIObservable) chapter. We now have the means to enter and leave the observable sequence monad. Take care when opting in and out of the `IObservable` monad. Doing so excessively can quickly make a mess of your code base, and may indicate a design flaw. - - - -... -This next content was originally in the intro to Part 3, which preceded a chapter called Side Effects. I don't think that is a chapter in its own right, because there are concerns around side effects in a few places. - - -# Side effects - -Non-functional requirements of production systems often demand high availability, quality monitoring features and low lead time for defect resolution. Logging, debugging, instrumentation and journaling are common non-functional requirements that developers need to consider for production ready systems. These artifacts could be considered side effects of the main business workflow. Side effects are a real life problem that code samples and how-to guides often ignore, however Rx provides tools to help. - -In this chapter we will discuss the consequences of introducing side effects when working with an observable sequence. A function is considered to have a side effect if, in addition to any return value, it has some other observable effect. Generally the 'observable effect' is a modification of state. This observable effect could be - -* modification of a variable with a wider scope than the function (i.e. global, static or perhaps an argument) -* I/O such as a read/write from a file or network - -* updating a display - - -## Issues with side effects - -Functional programming in general tries to avoid creating any side effects. Functions with side effects, especially which modify state, require the programmer to understand more than just the inputs and outputs of the function. The surface area they are required to understand needs to now extend to the history and context of the state being modified. This can greatly increase the complexity of a function, and thus make it harder to correctly understand and maintain. - -Side effects are not always accidental, nor are they always intentional. An easy way to reduce the accidental side effects is to reduce the surface area for change. The simple actions coders can take are to reduce the visibility or scope of state and to make what you can immutable. You can reduce the visibility of a variable by scoping it to a code block like a method. You can reduce visibility of class members by making them private or protected. By definition immutable data can't be modified so cannot exhibit side effects. These are sensible encapsulation rules that will dramatically improve the maintainability of your Rx code. - -To provide a simple example of a query that has a side effect, we will try to output the index and value of the elements received by updating a variable (closure). - -```csharp -var letters = Observable.Range(0, 3) - .Select(i => (char)(i + 65)); - -var index = -1; -var result = letters.Select( - c => - { - index++; - return c; - }); - -result.Subscribe( - c => Console.WriteLine("Received {0} at index {1}", c, index), - () => Console.WriteLine("completed")); -``` - -Output: - -``` -Received A at index 0 -Received B at index 1 -Received C at index 2 -completed -``` - -While this seems harmless enough, imagine if another person sees this code and understands it to be the pattern the team is using. They in turn adopt this style themselves. For the sake of the example, we will add a duplicate subscription to our previous example. - -```csharp -var letters = Observable.Range(0, 3) - .Select(i => (char)(i + 65)); - -var index = -1; -var result = letters.Select( - c => - { - index++; - return c; - }); - -result.Subscribe( - c => Console.WriteLine("Received {0} at index {1}", c, index), - () => Console.WriteLine("completed")); - -result.Subscribe( - c => Console.WriteLine("Also received {0} at index {1}", c, index), - () => Console.WriteLine("2nd completed")); -``` - -Output - -``` -Received A at index 0 -Received B at index 1 -Received C at index 2 -completed -Also received A at index 3 -Also received B at index 4 -Also received C at index 5 -2nd completed -``` - - - -Now the second person's output is clearly nonsense. They will be expecting index values to be 0, 1 and 2 but get 3, 4 and 5 instead. I have seen far more sinister versions of side effects in code bases. The nasty ones often modify state that is a Boolean value e.g. `hasValues`, `isStreaming` etc. We will see in a later chapter far better ways of controlling workflow with observable sequences than using shared state. - -In addition to creating potentially unpredictable results in existing software, programs that exhibit side effects are far more difficult to test and maintain. Future refactoring, enhancements or other maintenance on programs that exhibits side effects are far more likely to be brittle. This is especially so in asynchronous or concurrent software. - -## Composing data in a pipeline +The set of methods we have looked at in this chapter complete the circle started in the [Creating Sequences chapter](03_CreatingObservableSequences.md). We now have the means to enter and leave Rx's world. Take care when opting in and out of the `IObservable`. It's best not to transition back and forth—having a bit of Rx-based processing, then some more conventional code, and then plumbing the results of that back into Rx can quickly make a mess of your code base, and may indicate a design flaw. Typically it is better to keep all of your Rx logic together, so you only need to integrating with the outside world twice: once for input and once for output. -The preferred way of capturing state is to introduce it to the pipeline. Ideally, we want each part of the pipeline to be independent and deterministic. That is, each function that makes up the pipeline should have its inputs and output as its only state. To correct our example we could enrich the data in the pipeline so that there is no shared state. This would be a great example where we could use the `Select` overload that exposes the index. -```csharp -var source = Observable.Range(0, 3); -var result = source.Select((idx, value) => new - { - Index = idx, - Letter = (char) (value + 65) - }); - -result.Subscribe( - x => Console.WriteLine("Received {0} at index {1}", x.Letter, x.Index), - () => Console.WriteLine("completed")); - -result.Subscribe( - x => Console.WriteLine("Also received {0} at index {1}", x.Letter, x.Index), - () => Console.WriteLine("2nd completed")); -``` - -Output: - -``` -Received A at index 0 -Received B at index 1 -Received C at index 2 -completed -Also received A at index 0 -Also received B at index 1 -Also received C at index 2 -2nd completed -``` - -Thinking outside of the box, we could also use other features like `Scan` to achieve similar results. Here is an example. +## Do -```csharp -var result = source.Scan( - new - { - Index = -1, - Letter = new char() - }, - (acc, value) => new - { - Index = acc.Index + 1, - Letter = (char)(value + 65) - }); -``` - -The key here is to isolate the state, and reduce or remove any side effects like mutating state. - -## Do +Non-functional requirements of production systems often demand high availability, quality monitoring features and low lead time for defect resolution. Logging, debugging, instrumentation and journaling are common non-functional requirements that developers need to consider for production ready systems. To enable this it can often be useful to 'tap into' your Rx queries, making them deliver monitoring and diagnostic information as a side effect of their normal operation. -We should aim to avoid side effects, but in some cases it is unavoidable. The `Do` extension method allows you to inject side effect behavior. The signature of the `Do` extension method looks very much like the `Select` method; +The `Do` extension method allows you to inject side effect behaviour. From an Rx perspective, `Do` doesn't appear to do anything: you can apply it to any `IObservable`, and it returns another `IObservable` that reports exactly the same elements and error or completion as its source. However, its various overloads takes callback arguments that look just like those for `Subscribe`: you can provide callbacks for individual items, completion, and errors. Unlike `Subscribe`, `Do` is not the final destination—everything the `Do` callbacks see will also be forwarded onto `Do`'s subscribers. This makes it useful for logging and similar instrumentation because you can use it to report how information is flowing through an Rx query without changing that query's behaviour. -- They both have various overloads to cater for combinations of `OnNext`, `OnError` and `OnCompleted` handlers -- They both return and take an observable sequence +You have to be a bit careful of course. Using `Do` will have a performance impact. And if the callback you supply to `Do` performs any operations that could change the inputs to the Rx query it is part of, you will have created a feedback loop making the behaviour altogether harder to understand. -The overloads are as follows: - -```csharp -// Invokes an action with side effecting behavior for each element in the observable -// sequence. -public static IObservable Do( - this IObservable source, - Action onNext) -{...} - -// Invokes an action with side effecting behavior for each element in the observable -// sequence and invokes an action with side effecting behavior upon graceful termination -// of the observable sequence. -public static IObservable Do( - this IObservable source, - Action onNext, - Action onCompleted) -{...} - -// Invokes an action with side effecting behavior for each element in the observable -// sequence and invokes an action with side effecting behavior upon exceptional -// termination of the observable sequence. -public static IObservable Do( - this IObservable source, - Action onNext, - Action onError) -{...} - -// Invokes an action with side effecting behavior for each element in the observable -// sequence and invokes an action with side effecting behavior upon graceful or -// exceptional termination of the observable sequence. -public static IObservable Do( - this IObservable source, - Action onNext, - Action onError, - Action onCompleted) -{...} - -// Invokes the observer's methods for their side effects. -public static IObservable Do( - this IObservable source, - IObserver observer) -{...} -``` - -The `Select` overloads take `Func` arguments for their `OnNext` handlers and also provide the ability to return an observable sequence that is a different type to the source. In contrast, the `Do` methods only take an `Action` for the `OnNext` handler, and therefore can only return a sequence that is the same type as the source. As each of the arguments that can be passed to the `Do` overloads are actions, they implicitly cause side effects. - - - -For the next example, we first define the following methods for logging: +Let's first define some logging methods that we can go on to use in an example: ```csharp private static void Log(object onNextValue) @@ -758,58 +428,13 @@ Logging OnCompleted() @ 01/01/2012 12:00:02 completed ``` -Note that because the `Do` is earlier in the query chain than the `Subscribe`, it will receive the values first and therefore write to the console first. I like to think of the `Do` method as a [wire tap](http://en.wikipedia.org/wiki/Telephone_tapping) to a sequence. It gives you the ability to listen in on the sequence, without the ability to modify it. - -The most common acceptable side effect I see in Rx is the need to log. The signature of `Do` allows you to inject it into a query chain. This allows us to add logging into our sequence and retain encapsulation. When a repository, service agent or provider exposes an observable sequence, they have the ability to add their side effects (e.g. logging) to the sequence before exposing it publicly. Consumers can then append operators to the query (e.g. `Where`, `SelectMany`) and this will not affect the logging of the provider. +Note that because the `Do` is part of the query, it necessarily sees the values earlier than the `Subscribe`, which is the final link in the chain. That's why the log messages appear before the lines produced by the `Subscribe` callbacks. I like to think of the `Do` method as a [wire tap](http://en.wikipedia.org/wiki/Telephone_tapping) to a sequence. It gives you the ability to listen in on the sequence without modifying it. -Consider the method below. It produces numbers but also logs what it produces (to the console for simplicity). To the consuming code the logging is transparent. +As with `Subscribe`, instead of passing callbacks, you can pass `Do` an `IObserver`. In this overload, each of the `OnNext`, `OnError` and `OnCompleted` methods are passed to the other `Do` overload as each of the actions to perform. -```csharp -private static IObservable GetNumbers() -{ - return Observable.Interval(TimeSpan.FromMilliseconds(250)) - .Do(i => Console.WriteLine("pushing {0} from GetNumbers", i)); -} -``` +## Encapsulating with AsObservable -We then call it with this code. - -```csharp -var source = GetNumbers(); -var result = source.Where(i => i%3 == 0) - .Take(3) - .Select(i => (char) (i + 65)); - -result.Subscribe( - Console.WriteLine, - () => Console.WriteLine("completed")); -``` - -Output: - -``` -pushing 0 from GetNumbers -A -pushing 1 from GetNumbers -pushing 2 from GetNumbers -pushing 3 from GetNumbers -D -pushing 4 from GetNumbers -pushing 5 from GetNumbers -pushing 6 from GetNumbers -G -completed -``` - -This example shows how producers or intermediaries can apply logging to the sequence regardless of what the end consumer does. - -One overload to `Do` allows you to pass in an `IObserver`. In this overload, each of the `OnNext`, `OnError` and `OnCompleted` methods are passed to the other `Do` overload as each of the actions to perform. - -Applying a side effect adds complexity to a query. If side effects are a necessary evil, then being explicit will help your fellow coder understand your intentions. Using the `Do` method is the favored approach to doing so. This may seem trivial, but given the inherent complexity of a business domain mixed with asynchrony and concurrency, developers don't need the added complication of side effects hidden in a `Subscribe` or `Select` operator. - -## Encapsulating with AsObservable - -Poor encapsulation is a way developers can leave the door open for unintended side effects. Here is a handful of scenarios where carelessness leads to leaky abstractions. Our first example may seem harmless at a glance, but has numerous problems. +Poor encapsulation is a way developers can leave the door open for bugs. Here is a handful of scenarios where carelessness leads to leaky abstractions. Our first example may seem harmless at a glance, but has numerous problems. ```csharp public class UltraLeakyLetterRepo @@ -909,48 +534,5 @@ could not sabotage While I have used words like 'evil' and 'sabotage' in these examples, it is more often than not an oversight rather than malicious intent that causes problems. The failing falls first on the programmer who designed the leaky class. Designing interfaces is hard, but we should do our best to help consumers of our code fall into [the pit of success](http://blogs.msdn.com/b/brada/archive/2003/10/02/50420.aspx) by giving them discoverable and consistent types. Types become more discoverable if we reduce their surface area to expose only the features we intend our consumers to use. In this example we reduced the type's surface area. We did so by removing the property setter and returning a simpler type via the `AsObservable` method. -## Mutable elements cannot be protected - -While the `AsObservable` method can encapsulate your sequence, you should still be aware that it gives no protection against mutable elements. Consider what consumers of a sequence of this class could do: - -```csharp -public class Account -{ - public int Id { get; set; } - public string Name { get; set; } -} -``` - -Here is a quick example of the kind of mess we can make if we choose to modify elements in a sequence. - -```csharp -var source = new Subject(); - -// Evil code. It modifies the Account object. -source.Subscribe(account => account.Name = "Garbage"); - -// unassuming well behaved code -source.Subscribe( - account=>Console.WriteLine("{0} {1}", account.Id, account.Name), - ()=>Console.WriteLine("completed")); - -source.OnNext(new Account {Id = 1, Name = "Microsoft"}); -source.OnNext(new Account {Id = 2, Name = "Google"}); -source.OnNext(new Account {Id = 3, Name = "IBM"}); -source.OnCompleted(); -``` - -Output: - -``` -1 Garbage -2 Garbage -3 Garbage -completed -``` - -Here the second consumer was expecting to get 'Microsoft', 'Google' and 'IBM' but received just 'Garbage'. - -Observable sequences will be perceived to be a sequence of resolved events: things that have happened as a statement of fact. This implies two things: first, each element represents a snapshot of state at the time of publication, secondly, the information emanates from a trustworthy source. We want to eliminate the possibility of tampering. Ideally the type `T` will be immutable, solving both of these problems. This way, consumers of the sequence can be assured that the data they get is the data that the source produced. Not being able to mutate elements may seem limiting as a consumer, but these needs are best met via the [Transformation](08_Transformation.html) operators which provide better encapsulation. -Side effects should be avoided where possible. Any combination of concurrency with shared state will commonly demand the need for complex locking, deep understanding of CPU architectures and how they work with the locking and optimization features of the language you use. The simple and preferred approach is to avoid shared state, favor immutable data types and utilize query composition and transformation. Hiding side effects into `Where` or `Select` clauses can make for very confusing code. If a side effect is required, then the `Do` method expresses intent that you are creating a side effect by being explicit. \ No newline at end of file +TODO: swap this and the next chapter over? timing follows naturally from scheduling. \ No newline at end of file diff --git a/content/D_AlgebraicUnderpinnings b/content/D_AlgebraicUnderpinnings index 766a481..858ea21 100644 --- a/content/D_AlgebraicUnderpinnings +++ b/content/D_AlgebraicUnderpinnings @@ -186,3 +186,186 @@ On deeper analysis of the operators we find that most of the operators are actua - Reduce - Accumulate - Inject + + + +From 12, leaving IObservable + + +## What is a monad + +We have casually referred to the term _monad_ earlier in the book, but to most it will be a very foreign term. +I am going to try to avoid overcomplicating what a monad is, but give enough of an explanation to help us out with our next category of methods. +The full definition of a monad is quite abstract. +[Many others](http://www.haskell.org/haskellwiki/Monad_tutorials_timeline) have tried to provide their definition of a monad using all sorts of metaphors from astronauts to Alice in Wonderland. +Many of the tutorials for monadic programming use Haskell for the code examples which can add to the confusion. +For us, a monad is effectively a programming structure that represents computations. +Compare this to other programming structures: + +
+
Data structure
+
+ Purely state e.g. a List, a Tree or a Tuple +
+
Contract
+
+ Contract definition or abstract functionality e.g. an interface or abstract class +
+
Object-Orientated structure
+
+ State and behavior together +
+
+ +Generally a monadic structure allows you to chain together operators to produce a pipeline, just as we do with our extension methods. + +Monads are a kind of abstract data type constructor that encapsulate program logic instead of data in the domain model. + +This neat definition of a monad lifted from Wikipedia allows us to start viewing sequences as monads; the abstract data type in this case is the `IObservable` type. When we use an observable sequence, we compose functions onto the abstract data type (the `IObservable`) to create a query. This query becomes our encapsulated programming logic. + +The use of monads to define control flows is particularly useful when dealing with typically troublesome areas of programming such as IO, concurrency and exceptions. This just happens to be some of Rx's strong points! + +## Why leave the monad? + +There is a variety of reasons you may want to consume an observable sequence in a different paradigm. Libraries that need to expose functionality externally may be required to present it as events or as `Task` instances. In demonstration and sample code you may prefer to use blocking methods to limit the number of asynchronous moving parts. This may help make the learning curve to Rx a little less steep! + +In production code, it is rarely advised to 'break the monad', especially moving from an observable sequence to blocking methods. Switching between asynchronous and synchronous paradigms should be done with caution, as this is a common root cause for concurrency problems such as deadlock and scalability issues. + + +... more from 12 + +In this chapter we will discuss the consequences of introducing side effects when working with an observable sequence. A function is considered to have a side effect if, in addition to any return value, it has some other observable effect. Generally the 'observable effect' is a modification of state. This observable effect could be + +* modification of a variable with a wider scope than the function (i.e. global, staticor perhaps an argument) +* I/O such as a read/write from a file or network + +* updating a display + + +## Issues with side effects + +Functional programming in general tries to avoid creating any side effects. Functions with side effects, especially which modify state, require the programmer to understand more than just the inputs and outputs of the function. The surface area they are required to understand needs to now extend to the history and context of the state being modified. This can greatly increase the complexity of a function, and thus make it harder to correctly understand and maintain. + +Side effects are not always accidental, nor are they always intentional. An easy way to reduce the accidental side effects is to reduce the surface area for change. The simple actions coders can take are to reduce the visibility or scope of state and to make what you can immutable. You can reduce the visibility of a variable by scoping it to a code block like a method. You can reduce visibility of class members by making them private or protected. By definition immutable data can't be modified so cannot exhibit side effects. These are sensible encapsulation rules that will dramatically improve the maintainability of your Rx code. + +To provide a simple example of a query that has a side effect, we will try to output the index and value of the elements received by updating a variable (closure). + +```csharp +var letters = Observable.Range(0, 3) + .Select(i => (char)(i + 65)); + +var index = -1; +var result = letters.Select( + c => + { + index++; + return c; + }); + +result.Subscribe( + c => Console.WriteLine("Received {0} at index {1}", c, index), + () => Console.WriteLine("completed")); +``` + +Output: + +``` +Received A at index 0 +Received B at index 1 +Received C at index 2 +completed +``` + +While this seems harmless enough, imagine if another person sees this code and understands it to be the pattern the team is using. They in turn adopt this style themselves. For the sake of the example, we will add a duplicate subscription to our previous example. + +```csharp +var letters = Observable.Range(0, 3) + .Select(i => (char)(i + 65)); + +var index = -1; +var result = letters.Select( + c => + { + index++; + return c; + }); + +result.Subscribe( + c => Console.WriteLine("Received {0} at index {1}", c, index), + () => Console.WriteLine("completed")); + +result.Subscribe( + c => Console.WriteLine("Also received {0} at index {1}", c, index), + () => Console.WriteLine("2nd completed")); +``` + +Output + +``` +Received A at index 0 +Received B at index 1 +Received C at index 2 +completed +Also received A at index 3 +Also received B at index 4 +Also received C at index 5 +2nd completed +``` + + + +Now the second person's output is clearly nonsense. They will be expecting index values to be 0, 1 and 2 but get 3, 4 and 5 instead. I have seen far more sinister versions of side effects in code bases. The nasty ones often modify state that is a Boolean value e.g. `hasValues`, `isStreaming` etc. We will see in a later chapter far better ways of controlling workflow with observable sequences than using shared state. + +In addition to creating potentially unpredictable results in existing software, programs that exhibit side effects are far more difficult to test and maintain. Future refactoring, enhancements or other maintenance on programs that exhibits side effects are far more likely to be brittle. This is especially so in asynchronous or concurrent software. + +## Composing data in a pipeline + +The preferred way of capturing state is to introduce it to the pipeline. Ideally, we want each part of the pipeline to be independent and deterministic. That is, each function that makes up the pipeline should have its inputs and output as its only state. To correct our example we could enrich the data in the pipeline so that there is no shared state. This would be a great example where we could use the `Select` overload that exposes the index. + +```csharp +var source = Observable.Range(0, 3); +var result = source.Select((idx, value) => new + { + Index = idx, + Letter = (char) (value + 65) + }); + +result.Subscribe( + x => Console.WriteLine("Received {0} at index {1}", x.Letter, x.Index), + () => Console.WriteLine("completed")); + +result.Subscribe( + x => Console.WriteLine("Also received {0} at index {1}", x.Letter, x.Index), + () => Console.WriteLine("2nd completed")); +``` + +Output: + +``` +Received A at index 0 +Received B at index 1 +Received C at index 2 +completed +Also received A at index 0 +Also received B at index 1 +Also received C at index 2 +2nd completed +``` + +Thinking outside of the box, we could also use other features like `Scan` to achieve similar results. Here is an example. + +```csharp +var result = source.Scan( + new + { + Index = -1, + Letter = new char() + }, + (acc, value) => new + { + Index = acc.Index + 1, + Letter = (char)(value + 65) + }); +``` + +The key here is to isolate the state, and reduce or remove any side effects like mutating state. From ac46387b9d46b2c6095a23dafe9623a3c7dcb7b0 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Tue, 8 Aug 2023 08:04:07 +0100 Subject: [PATCH 024/142] Feature complete Timing chapter --- content/13_Timing.md | 173 ++++++++++++++++++------------------------- 1 file changed, 74 insertions(+), 99 deletions(-) diff --git a/content/13_Timing.md b/content/13_Timing.md index 9454824..ec18a62 100644 --- a/content/13_Timing.md +++ b/content/13_Timing.md @@ -1,52 +1,71 @@ --- -title: Time-shifted sequences +title: Timing --- # Time-shifted sequences -When working with observable sequences, the time axis is an unknown quantity: when will the next notification arrive? When consuming an `IEnumerable` sequence, asynchrony is not a concern; when we call `MoveNext()`, we are blocked until the sequence yields. We've already seen a couple of operators that offer optional time-based operation: [`Buffer`](./08_Partitioning.md#buffer) and [`Window`])(08_Partitioning#window). This chapter looks at the various operators that are all about timing. +With event sources, timing is often important. In some cases, the only information of interest about some event might the time at which it occurred. The only way in which the core `IObservable` and `IObserver` interfaces address time is that a source can decide when it calls an observer's `OnNext` method. A subscriber knows when an event occurred because it is occurring right now. This isn't always the most convenient way in which to work with timing, so the Rx library provides some timing-related operators. We've already seen a couple of operators that offer optional time-based operation: [`Buffer`](./08_Partitioning.md#buffer) and [`Window`])(08_Partitioning#window). This chapter looks at the various operators that are all about timing. -## Delay +## Timestamp and TimeInterval -The `Delay` extension method is a purely a way to time-shift an entire sequence. You can provide either a relative time the sequence should be delayed by using a `TimeSpan`, or an absolute point in time that the sequence should wait for using a `DateTimeOffset`. The relative time intervals between the values are preserved. +As observable sequences are asynchronous it can be convenient to know timings for when elements are received. Obviously, a subscriber can always just use `DateTimeOffset.Now`, but if you want to refer to the arrival time as part of a larger query, the `Timestamp` extension method is a handy convenience method that attaches a timestamp to each element. It wraps elements from its source sequence in a light weight `Timestamped` structure. The `Timestamped` type is a struct that exposes the value of the element it wraps, and also a `DateTimeOffset` indicating when `Timestamp` operator received it. -```csharp -// Time-shifts the observable sequence by a relative time. -public static IObservable Delay( - this IObservable source, - TimeSpan dueTime) -{...} +In this example we create a sequence of three values, one second apart, and then transform it to a time stamped sequence. -// Time-shifts the observable sequence by a relative time. -public static IObservable Delay( - this IObservable source, - TimeSpan dueTime, - IScheduler scheduler) -{...} +```csharp +Observable.Interval(TimeSpan.FromSeconds(1)) + .Take(3) + .Timestamp() + .Dump("TimeStamp"); +``` -// Time-shifts the observable sequence by an absolute time. -public static IObservable Delay( - this IObservable source, - DateTimeOffset dueTime) -{...} +As you can see, `Timestamped`'s implementation of `ToString()` gives us a readable output. -// Time-shifts the observable sequence by an absolute time. -public static IObservable Delay( - this IObservable source, - DateTimeOffset dueTime, - IScheduler scheduler) -{...} +``` +TimeStamp-->0@07/08/2023 10:03:58 +00:00 +TimeStamp-->1@07/08/2023 10:03:59 +00:00 +TimeStamp-->2@07/08/2023 10:04:00 +00:00 +TimeStamp completed ``` -To show the `Delay` method in action, we create a sequence of values one second apart and timestamp them. This will show that it is not the subscription that is being delayed, but the actual forwarding of the notifications to our final subscriber. +We can see that the values 0, 1 & 2 were each produced one second apart. + +Rx also offers `TimeInterval`. Instead of reporting the time at which items arrived, it reports the interval between items (or, in the case of the first element, how long it took for that to emerge after subscription). Similarly to the `Timestamp` method, elements are wrapped in a light weight structure. But whereas `Timestamped` adorned each item with the arrival time, `TimeInterval` wraps each element with the `TimeInterval` type which adds a `TimeSpan`. We can modify the previous example to use `TimeInterval`: ```csharp -var source = Observable.Interval(TimeSpan.FromSeconds(1)) +Observable.Interval(TimeSpan.FromSeconds(1)) + .Take(3) + .TimeInterval() + .Dump("TimeInterval"); +``` + +As you can see, the output now reports the time between elements instead of the time of day at which they were received: + +``` +TimeStamp-->0@00:00:01.0183771 +TimeStamp-->1@00:00:00.9965679 +TimeStamp-->2@00:00:00.9908958 +TimeStamp completed``` + +As you can see from the output, the timings are not exactly one second but are pretty close. Some of this will be measurement noise in the `TimeInterval` operator, but most of this variability is likely to arise from the `Observable.Interval` class. There will always be a limit to the precision with which a scheduler can honour the timing request of it. Some scheduler introduce more variation than others—the schedulers that deliver work via a UI thread are ultimately limited by how quickly that thread's message loop responds. But even in the most favourable condition, schedulers are limited by the fact that .NET is not built for use in real-time systems (and nor are most of the operating systems Rx can be used on). So with all of the operators in this section, you should be aware that timing is always a _best effort_ affair in Rx. + + +## Delay + +The `Delay` extension method time-shifts an entire sequence. `Delay` attempts to preserve the relative time intervals between the values. There is inevitably a limit to the precision with which it can do this—it won't recreate timing down to the nearest nanosecond. The exact precision is determined by the scheduler you use, and will typically get worse under heavy load, but it will typically reproduce timings to within a few milliseconds. + +There are overloads of `Delay` accepting a `TimeSpan`, and an optional scheduler, which will delay the sequence by the specified amount. And there are also delays that accept a `DateTimeOffset` (and also, optionally, a scheduler) which will wait until the specified time occurs, and then start replaying the input. (This second, absolute time based approach is essentially equivalent to the `TimeSpan` overloads—you would get more or less the same effect by subtracting the current time from the target time to get a `TimeSpan`, except the `DateTimeOffset` version attempts to deal with changes in the system clock that occur between `Delay` being called, and the specified time arriving.) + +To show the `Delay` method in action, this example creates a sequence of values one second apart and timestamps them. This will show that it is not the subscription that is being delayed, but the actual forwarding of the notifications to our final subscriber. + +```cs +IObservable> source = Observable + .Interval(TimeSpan.FromSeconds(1)) .Take(5) .Timestamp(); -var delay = source.Delay(TimeSpan.FromSeconds(2)); +IObservable> delay = source.Delay(TimeSpan.FromSeconds(2)); source.Subscribe( value => Console.WriteLine("source : {0}", value), @@ -56,31 +75,31 @@ delay.Subscribe( () => Console.WriteLine("delay Completed")); ``` -Output: +If you look at the timestamps in the output, you can see that both the immediate and the delayed subscriptions subscribed to the source at the same time: both report the first timestamp as `10:15:46`. But you can also see that the `delay` subscription did not start receiving those events until 2 seconds later. ``` -source : 0@01/01/2012 12:00:00 pm +00:00 -source : 1@01/01/2012 12:00:01 pm +00:00 -source : 2@01/01/2012 12:00:02 pm +00:00 -delay : 0@01/01/2012 12:00:00 pm +00:00 -source : 3@01/01/2012 12:00:03 pm +00:00 -delay : 1@01/01/2012 12:00:01 pm +00:00 -source : 4@01/01/2012 12:00:04 pm +00:00 +source : 0@07/08/2023 10:15:46 +00:00 +source : 1@07/08/2023 10:15:47 +00:00 +source : 2@07/08/2023 10:15:48 +00:00 +delay : 0@07/08/2023 10:15:46 +00:00 +source : 3@07/08/2023 10:15:49 +00:00 +delay : 1@07/08/2023 10:15:47 +00:00 +delay : 2@07/08/2023 10:15:48 +00:00 +source : 4@07/08/2023 10:15:50 +00:00 source Completed -delay : 2@01/01/2012 12:00:02 pm +00:00 -delay : 3@01/01/2012 12:00:03 pm +00:00 -delay : 4@01/01/2012 12:00:04 pm +00:00 +delay : 3@07/08/2023 10:15:49 +00:00 +delay : 4@07/08/2023 10:15:50 +00:00 delay Completed ``` -It is worth noting that `Delay` will not time-shift `OnError` notifications. These will be propagated immediately. +Note that `Delay` will not time-shift `OnError` notifications. These will be propagated immediately. ## Sample -The `Sample` method simply takes the last value for every specified `TimeSpan`. This is great for getting timely data from a sequence that produces too much information for your requirements. This example shows sample in action. +The `Sample` method produces items whatever interval you ask. Each time it produces a value, it reports the last value that emerged from your source. If you have a source that produces data at a higher rate than you need (e.g. suppose you have an accelerometer that reports 100 measurements per second, but you only need to take a reading 10 times a second), `Sample` provides an easy way to reduce the data rate. This example shows `Sample` in action. ```csharp -var interval = Observable.Interval(TimeSpan.FromMilliseconds(150)); +IObservable interval = Observable.Interval(TimeSpan.FromMilliseconds(150)); interval.Sample(TimeSpan.FromSeconds(1)).Subscribe(Console.WriteLine); ``` @@ -92,7 +111,7 @@ Output: 18 ``` -This output is interesting and this is the reason why I choose the value of 150ms. If we plot the underlying sequence of values against the time they are produced, we can see that `Sample` is taking the last value it received for each period of one second. +If you looked at these numbers closely, you might have noticed that the interval between the values is not the same each time. I chose a source interval of 150ms and a sample interval of 1 second to highlight an aspect of sampling that can require careful handling: if the rate at which a source produces items doesn't line up neatly with the sampling rate, this can mean that `Sample` introduces irregularities that weren't present in the source. If we list the times at which the underlying sequence produces values, and the times at which `Sample` takes each value, we can see that with these particular timings, the sample intervals only line up with the source timings every 3 seconds. | Relative time (ms) | Source value | Sampled value | | :----------------- | :----------- | :------------ | @@ -158,6 +177,9 @@ This output is interesting and this is the reason why I choose the value of 150m | 2950 | | | | 3000 | 19 | 19 | +Since the first sample is taken after the source emits five, and two thirds of the way into the gap after which it will produce six, there's a sense in which the "right" current value is something like 5.67, but `Sample` doesn't attempt any such interpolation. It just reports the last value to emerge from the source. A related consequence is that if the sampling interval is short enough that you're asking `Sample` to report values faster than they are emerging from the source, it will just repeat values. + + ## Throttle The `Throttle` extension method provides a sort of protection against sequences that produce values at variable rates and sometimes too quickly. Like the `Sample` method, `Throttle` will return the last sampled value for a period of time. Unlike `Sample` though, `Throttle`'s period is a sliding window. Each time `Throttle` receives a value, the window is reset. Only once the period of time has elapsed will the last value be propagated. This means that the `Throttle` method is only useful for sequences that produce values at a variable rate. Sequences that produce values at a constant rate (like `Interval` or `Timer`) either would have all of their values suppressed if they produced values faster than the throttle period, or all of their values would be propagated if they produced values slower than the throttle period. @@ -176,11 +198,13 @@ public static IObservable Throttle( {...} ``` -A great application of the `Throttle` method would be to use it with a live search like "Google Suggest". While the user is still typing we can hold off on the search. Once there is a pause for a given period, we can execute the search with what they have typed. The Rx team has a great example of this scenario in the [Rx Hands On Lab](http://download.microsoft.com/download/C/5/D/C5D669F9-01DF-4FAF-BBA9-29C096C462DB/Rx%20HOL%20.NET.pdf "Rx Hands On Lab as PDF - Mcrosoft.com"). +We could apply `Throttle` to use a live search feature that makes suggestions as you type. We would typically want to wait until the user has stopped typing for a bit before searching for suggestions, because otherwise, we might end up kicking off several searches in a row, cancelling the last one each time the user presses another key. Only once there is a pause should we can execute a search with what they have typed so far. `Throttle` fits well with this scenario, because it won't allow any events through at all if the source is producing values faster than the specified rate. + +Note that the RxJS library decided to make their version of throttle work differently, so if you ever find yourself using both Rx.NET and RxJS, be aware that they don't work the same way. In RxJS, throttle doesn't shut off completely when the source exceeds the specified rate: it just drops enough items that the output never exceeds the specified rate. So RxJS's throttle implementation is a kind of rate limiter, whereas Rx.NET's `Throttle` is more like a self-resetting circuit breaker that shuts off completely during an overload. ## Timeout -We have considered handling timeout exceptions previously in the chapter on [Flow control](11_AdvancedErrorHandling.html#CatchSwallowingException). The `Timeout` extension method allows us terminate the sequence with an error if we do not receive any notifications for a given period. We can either specify the period as a sliding window with a `TimeSpan`, or as an absolute time that the sequence must complete by providing a `DateTimeOffset`. +The `Timeout` operator method allows us terminate a sequence with an error if the source does not produce any notifications for a given period. We can either specify the period as a sliding window with a `TimeSpan`, or as an absolute time that the sequence must complete by providing a `DateTimeOffset`. ```csharp // Returns either the observable sequence or a TimeoutException if the maximum duration @@ -231,9 +255,7 @@ Output: System.TimeoutException: The operation has timed out. ``` -Like the `Throttle` method, this overload is only useful for sequences that produce values at a variable rate. - -The alternative use of `Timeout` is to set an absolute time; the sequence must be completed by then. +Alternatively, we can pass `Timeout` an absolute time; if the sequence does not completed by that time, it produces an error. ```csharp var dueDate = DateTimeOffset.UtcNow.AddSeconds(4); @@ -254,10 +276,7 @@ Output: System.TimeoutException: The operation has timed out. ``` -Perhaps an even more interesting usage of the `Timeout` method is to substitute in an alternative sequence when a timeout occurs. -The `Timeout` method has overloads the provide the option of specifying a continuation sequence to use if a timeout occurs. -This functionality behaves much like the [Catch](11_AdvancedErrorHandling.html#Catch) operator. -It is easy to imagine that the simple overloads actually just call through to these over loads and specify an `Observable.Throw` as the continuation sequence. +There are other `Timeout` overloads enabling us to substitute an alternative sequence when a timeout occurs. ```csharp // Returns the source observable sequence or the other observable sequence if the maximum @@ -296,49 +315,5 @@ public static IObservable Timeout( TODO: Observable.Merge reprise(has options to take schedulers too) --> -Rx provides features to tame the unpredictable element of time in a reactive paradigm. Data can be buffered, throttled, sampled or delayed to meet your needs. Entire sequences can be shifted in time with the delay feature, and timeliness of data can be asserted with the `Timeout` operator. These simple yet powerful features further extend the developer's tool belt for querying data in motion. - - -TODO: this is about timing but not timeshifting. Decide whether to rename this chapter, or split it, so that we can accommodate these (which were in the Transformation chapter): - -## Timestamp and TimeInterval - -As observable sequences are asynchronous it can be convenient to know timings for when elements are received. The `Timestamp` extension method is a handy convenience method that wraps elements of a sequence in a light weight `Timestamped` structure. The `Timestamped` type is a struct that exposes the value of the element it wraps, and the timestamp it was created with as a `DateTimeOffset`. - -In this example we create a sequence of three values, one second apart, and then transform it to a time stamped sequence. The handy implementation of `ToString()` on `Timestamped` gives us a readable output. - -```csharp -Observable.Interval(TimeSpan.FromSeconds(1)) - .Take(3) - .Timestamp() - .Dump("TimeStamp"); -``` - -Output - -``` -TimeStamp --> 0@01/01/2012 12:00:01 a.m. +00:00 -TimeStamp --> 1@01/01/2012 12:00:02 a.m. +00:00 -TimeStamp --> 2@01/01/2012 12:00:03 a.m. +00:00 -TimeStamp completed -``` - -We can see that the values 0, 1 & 2 were each produced one second apart. An alternative to getting an absolute timestamp is to just get the interval since the last element. The `TimeInterval` extension method provides this. As per the `Timestamp` method, elements are wrapped in a light weight structure. This time the structure is the `TimeInterval` type. - -```csharp -Observable.Interval(TimeSpan.FromSeconds(1)) - .Take(3) - .TimeInterval() - .Dump("TimeInterval"); -``` - -Output: - -``` -TimeInterval --> 0@00:00:01.0180000 -TimeInterval --> 1@00:00:01.0010000 -TimeInterval --> 2@00:00:00.9980000 -TimeInterval completed -``` -As you can see from the output, the timings are not exactly one second but are pretty close. +As we've now seen, Rx provides features to manage timing in a reactive paradigm. Data can be timed, throttled, or sampled to meet your needs. Entire sequences can be shifted in time with the delay feature, and timeliness of data can be asserted with the `Timeout` operator. These simple yet powerful features further extend the developer's tool belt for querying data in motion. From 6fd006bf23e6161e8a42fd62076189c45932a312 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Tue, 8 Aug 2023 16:07:39 +0100 Subject: [PATCH 025/142] Feature complete Error Handling chapter --- content/14_ErrorHandlingOperators.md | 279 +++++---------------------- 1 file changed, 51 insertions(+), 228 deletions(-) diff --git a/content/14_ErrorHandlingOperators.md b/content/14_ErrorHandlingOperators.md index d7a9336..12854ea 100644 --- a/content/14_ErrorHandlingOperators.md +++ b/content/14_ErrorHandlingOperators.md @@ -1,78 +1,21 @@ --- -title: Advanced error handling +title: Error Handling Operators --- -TODO: this was originally in the now-defunct Lifetime Management chapter. Do we need to re-integrate it somewhere else? +Exceptions happen. Some exceptions are inherently avoidable, occurring only because of bugs in our code. For example, we shouldn't normally put the CLR into a situation where it has to raise a `DivideByZeroException`. But there are plenty of exceptions that cannot be prevented with defensive coding. For example, exceptions relating to I/O or networking failures such as like `FileNotFoundException` or `TimeoutException` can be caused by environmental factors outside of our code's control. In these cases, we need to handle the exception gracefully. The kind of handling will depend on the context—it might be appropriate to provide some sort of error message to the user; in some scenarios logging the error might be a more appropriate response. If the failure is likely to be transient, we could try to recover by retrying the operation that failed. -In this example we attempt to catch error using standard .NET Structured Exception Handling: +The `IObserver` interface defines the `OnError` method so that a source can report an error, but since this terminates the sequence, it provides no direct means of working out what to do next. However, Rx provides operators that provide a variety of error handling mechanisms. -```csharp -var values = new Subject(); -try -{ - values.Subscribe(value => Console.WriteLine("1st subscription received {0}", value)); -} -catch (Exception ex) -{ - Console.WriteLine("Won't catch anything here!"); -} - -values.OnNext(0); - -//Exception will be thrown here causing the app to fail. -values.OnError(new Exception("Dummy exception")); -``` - -The correct way to way to handle exceptions is to provide a delegate for `OnError` notifications as in this example. - -```csharp -var values = new Subject(); - -values.Subscribe( - value => Console.WriteLine("1st subscription received {0}", value), - ex => Console.WriteLine("Caught an exception : {0}", ex)); - -values.OnNext(0); -values.OnError(new Exception("Dummy exception")); -``` +## Catch +Rx defines a `Catch` operator. The name is deliberately reminiscent of C#'s `try`/`catch` syntax because it lets you handle errors from an Rx source in a similar way to exceptions that emerge from normal execution of code. It gives you the option of swallowing an exception, wrapping it in another exception or performing some other logic. -TODO end - - -# Advanced error handling - -Exceptions happen. Exceptions themselves are not bad or good, however the way we raise or catch them can. Some exceptions are predictable and are due to sloppy code, for example a `DivideByZeroException`. Other exceptions cannot be prevented with defensive coding, for example an I/O exception like `FileNotFoundException` or `TimeoutException`. In these cases, we need to cater for the exception gracefully. Providing some sort of error message to the user, logging the error or perhaps retrying are all potential ways to handle these exceptions. - -The `IObserver` interface and `Subscribe` extension methods provide the ability to cater for sequences that terminate in error, however they leave the sequence terminated. They also do not offer a composable way to cater for different `Exception` types. A functional approach that enables composition of error handlers, allowing us to remain in the monad, would be more useful. -Again, Rx delivers. - -## Control flow constructs - -Using marble diagrams, we will examine various ways to handle different control flows. Just as with normal .NET code, we have flow control constructs such as `try`/`catch`/`finally`. In this chapter we see how they can be applied to observable sequences. - -### Catch - -Just like a catch in SEH (Structured Exception Handling), with Rx you have the option of swallowing an exception, wrapping it in another exception or performing some other logic. - -We already know that observable sequences can handle erroneous situations with the `OnError` construct. A useful method in Rx for handling an `OnError` notification is the `Catch` extension method. Catch allows you to intercept a specific `Exception` type and then continue with another sequence. - -Below is the signature for the simple overload of catch: - -```csharp -public static IObservable Catch( - this IObservable first, - IObservable second) -{ - ... -} -``` -#### Swallowing exceptions +### Swallowing exceptions -With Rx, you can catch and swallow exceptions in a similar way to SEH. It is quite simple; we use the `Catch` extension method and provide an empty sequence as the second value. +The most basic (although rarely the best) way to handle an exception is to swallow it. In C#, we could write a `try` block with an empty `catch` block. We can achieve something similar with Rx's `Catch` operator. The basic idea with swallowing exceptions is that we carry on as though nothing had happened. We can represent an exception being swallowed like this with a marble diagram. -We can represent an exception being swallowed like this with a marble diagram. +TODO: make this a proper diagram. ``` S1--1--2--3--X @@ -80,31 +23,32 @@ S2 -| R --1--2--3----| ``` -Here `S1` represents the first sequence that ends with an error (`X`). `S2` is the continuation sequence, an empty sequence. `R` is the result sequence which starts as `S1`, then continues with `S2` when `S1` terminates. +Here `S1` represents the first sequence that ends with an error (`X`). If we're swallowing the exception, we want to make it look like the sequence just came to a normal halt. So `S2` here is an empty sequence we will substitute when the first throws an exception. `R` is the result sequence which starts as `S1`, then continues with `S2` when `S1` fails. This code creates the scenario described in that marble diagram: -```csharp +```cs var source = new Subject(); -var result = source.Catch(Observable.Empty()); +IObservable result = source.Catch(Observable.Empty()); result.Dump("Catch");); source.OnNext(1); source.OnNext(2); +source.OnNext(3); source.OnError(new Exception("Fail!")); ``` Output: ``` -Catch --> 1 -Catch --> 2 +Catch-->1 +Catch-->2 +Catch-->3 Catch completed ``` -The example above will catch and swallow all types of exceptions. -This is somewhat equivalent to the following with SEH: +This is conceptually similar to the following code: -```csharp +```cs try { DoSomeWork(); @@ -114,7 +58,11 @@ catch } ``` -Just as it is generally avoided in SEH, you probably also want to limit your use of swallowing errors in Rx. You may, however, have a specific exception you want to handle. Catch has an overload that enables you specify the type of exception. Just as the following code would allow you to catch a `TimeoutException`: +This kind of catch-and-ignore everything handling is generally discouraged in C#, and you probably also want to limit your use of its equivalent in Rx. + +### Swallowing only specific exception types + +It's much more common to want to handle a specific exception like this: ```csharp try @@ -126,65 +74,37 @@ catch (TimeoutException tx) // } ``` +`Catch` has an overload that enables you specify the type of exception: -Rx also offers an overload of `Catch` to cater for this. - -```csharp +```cs public static IObservable Catch( this IObservable source, Func> handler) where TException : Exception -{ - ... -} ``` -The following Rx code allows you to catch a `TimeoutException`. Instead of providing a second sequence, we provide a function that takes the exception and returns a sequence. This allows you to use a factory to create your continuation. In this example, we add the value -1 to the error sequence and then complete it. - -```csharp -var source = new Subject(); -var result = source.Catch(tx=>Observable.Return(-1)); +This enables us to write the Rx equivalent to the more selective `catch`, where we only swallow a `TimeoutException`: -result.Dump("Catch"); - -source.OnNext(1); -source.OnNext(2); -source.OnError(new TimeoutException()); -``` - -Output: - -``` -Catch-->1 -Catch-->2 -Catch-->-1 -Catch completed +```cs +IObservable result = source.Catch(_ => Observable.Empty()); ``` If the sequence was to terminate with an `Exception` that could not be cast to a `TimeoutException`, then the error would not be caught and would flow through to the subscriber. -```csharp -var source = new Subject(); -var result = source.Catch(tx=>Observable.Return(-1)); - -result.Dump("Catch"); +### Examining the exception -source.OnNext(1); -source.OnNext(2); -source.OnError(new ArgumentException("Fail!")); -``` +Notice that with the overload in the preceding example, we supplied a callback. If an exception of the specified type emerges, this overload of `Catch` will pass it to our callback so that if necessary, we can decide exactly what to return based on information in the exception. If you were to decide that, having inspected the exception, you don't want to swallow it after all, you can use `Observable.Throw` to return an observable that rethrows the exception. (This is effectively the Rx equivalent to a `throw;` statement inside a C# `catch` block.) The following example uses this to swallow all IO exceptions of type IOException or any type derived from that except for `FileNotFoundException`. -Output: +```csh +IObservable result = source.Catch( + tx => tx is FileNotFoundException ? Observable.Throw(tx) : Observable.Empty()); ``` -Catch-->1 -Catch-->2 -Catch failed-->Fail! -``` -### Finally -Similar to the `finally` statement with SEH, Rx exposes the ability to execute code on completion of a sequence, regardless of how it terminates. The `Finally` extension method accepts an `Action` as a parameter. This `Action` will be invoked if the sequence terminates normally or erroneously, or if the subscription is disposed of. +## Finally + +Similar to a `finally` block in C#, Rx enables us to execute some code on completion of a sequence, regardless of whether it runs to completion naturally, or fails. The `Finally` extension method accepts an `Action` as a parameter. This `Action` will be invoked when the sequence terminates, regardless of whether `OnCompleted` or `OnError` was called. It will also invoke the action if the subscription is disposed of before it completes. ```csharp public static IObservable Finally( @@ -243,9 +163,9 @@ Output: Finally ``` -Note that there is an anomaly in the current implementation of `Finally`. If there is no `OnError` handler provided, the error will be promoted to an exception and thrown. This will be done before the `Finally` action is invoked. We can reproduce this behavior easily by removing the `OnError` handler from our examples above. +Note that if the subscriber's `OnError` throws an exception, and if the source calls `OnNext` without a `try`/`catch` block, the CLR's unhandled exception reporting mechanism kicks in, and in some circumstances this can result in the application shutting down before the `Finally` operator has had an opportunity to invoke the callback. We can create this scenario with the following code: -```csharp +```cs var source = new Subject(); var result = source.Finally(() => Console.WriteLine("Finally")); result.Subscribe( @@ -256,41 +176,17 @@ source.OnNext(1); source.OnNext(2); source.OnNext(3); -// Brings the app down. Finally action is not called. +// Brings the app down. Finally action might not be called. source.OnError(new Exception("Fail")); ``` -Hopefully this will be identified as a bug and fixed by the time you read this in the next release of Rx. Out of academic interest, here is a sample of a `Finally` extension method that would work as expected. +If you run this directly from the program's entry point, without wrapping it in a `try`/`catch`, you may or may not see the `Finally` message displayed, because exception handling works subtly differently in the case an exception reaches all the way to the top of the stack without being caught. (Oddly, it usually does run, but if you have a debugger attached, the program usually exits without running the `Finally` callback.) -```csharp -public static IObservable MyFinally( - this IObservable source, - Action finallyAction) -{ - return Observable.Create(o => - { - var finallyOnce = Disposable.Create(finallyAction); - var subscription = source.Subscribe( - o.OnNext, - ex => - { - try { o.OnError(ex); } - finally { finallyOnce.Dispose(); } - }, - () => - { - try { o.OnCompleted(); } - finally { finallyOnce.Dispose(); } - }); - - return new CompositeDisposable(subscription, finallyOnce); - }); -} -``` +This is mostly just a curiosity: application frameworks such as ASP.NET Core or WPF typically install their own top-of-stack exception handlers, and in any case you shouldn't be subscribing to a source that you know will call `OnError` without supplying an error callback. This problem only emerges because the delegate-based `Subscribe` overload in use here supplies an `IObserver` implementation that throws in its `OnError`. However, if you're building console applications to experiment with Rx's behaviour you are quite likely to run into this. In practice, `Finally` will do the right thing in more normal situations. -### Using +## Using -The `Using` factory method allows you to bind the lifetime of a resource to the lifetime of an observable sequence. The signature itself takes two factory methods; one to provide the resource and one to provide the sequence. This allows everything to be lazily evaluated. +The `Using` factory method allows you to bind the lifetime of a resource to the lifetime of an observable sequence. The signature itself takes two callbacks; one to create the disposable resource and one to provide the sequence. This allows everything to be lazily evaluated—these callbacks are invoked when code calls `Subscribe` on the `IObservable` this method returns. ```csharp public static IObservable Using( @@ -302,35 +198,10 @@ public static IObservable Using( } ``` -The `Using` method will invoke both the factories when you subscribe to the sequence. The resource will be disposed of when the sequence is terminated gracefully, terminated erroneously or when the subscription is disposed. - -To provide an example, we will reintroduce the `TimeIt` class from [Chapter 3](03_LifetimeManagement.html#IDisposable). I could use this handy little class to time the duration of a subscription. In the next example we create an observable sequence with the `Using` factory method. We provide a factory for a `TimeIt` resource and a function that returns a sequence. - -```csharp -var source = Observable.Interval(TimeSpan.FromSeconds(1)); -var result = Observable.Using( - () => new TimeIt("Subscription Timer"), - timeIt => source); -result.Take(5).Dump("Using"); -``` - -Output: +The resource will be disposed of when the sequence terminates either with `OnCompleted` or `OnError`, or when the subscription is disposed. -``` -Using --> 0 -Using --> 1 -Using --> 2 -Using --> 3 -Using --> 4 -Using completed -Subscription Timer took 00:00:05.0138199 -``` -Due to the `Take(5)` decorator, the sequence completes after five elements and thus the subscription is disposed of. Along with the subscription, the `TimeIt` resource is also disposed of, which invokes the logging of the elapsed time. - -This mechanism can find varied practical applications in the hands of an imaginative developer. The resource being an `IDisposable` is convenient; indeed, it makes it so that many types of resources can be bound to, such as other subscriptions, stream reader/writers, database connections, user controls and, with `Disposable.Create(Action)`, virtually anything else. - -### OnErrorResumeNext +## OnErrorResumeNext Just the title of this section will send a shudder down the spines of old VB developers! In Rx, there is an extension method called `OnErrorResumeNext` that has similar semantics to the VB keywords/statement that share the same name. This extension method allows the continuation of a sequence with another sequence regardless of whether the first sequence completes gracefully or due to an error. Under normal use, the two sequences would merge as below: @@ -373,70 +244,23 @@ public static IObservable OnErrorResumeNext( It is simple to use; you can pass in as many continuations sequences as you like using the various overloads. Usage should be limited however. Just as the `OnErrorResumeNext` keyword warranted mindful use in VB, so should it be used with caution in Rx. It will swallow exceptions quietly and can leave your program in an unknown state. Generally, this will make your code harder to maintain and debug. -### Retry +## Retry -If you are expecting your sequence to encounter predictable issues, you might simply want to retry. One such example when you want to retry is when performing I/O (such as web request or disk access). I/O is notorious for intermittent failures. The `Retry` extension method offers the ability to retry on failure a specified number of times or until it succeeds. +If you are expecting your sequence to encounter predictable failures, you might simply want to retry. For example, if you are running in a cloud environment, it's very common for operations to fail occasionally for no obvious reason. Cloud platforms often relocate services on a fairly regular basis for operational reasons, which means it's not unusual for operations to fail, but for the exact same operation to succeed it you immediately retry it. Rx's `Retry` extension method offers the ability to retry on failure a specified number of times or until it succeeds. This works by resubscribing to the source if it reports an error. -```csharp -// Repeats the source observable sequence until it successfully terminates. -public static IObservable Retry( - this IObservable source) -{ - ... -} - -// Repeats the source observable sequence the specified number of times or until it -// successfully terminates. -public static IObservable Retry( - this IObservable source, int retryCount) -{ - ... -} -``` - -In the diagram below, the sequence (`S`) produces values then fails. It is re-subscribed, after which it produces values and fails again; this happens a total of two times. The result sequence (`R`) is the concatenation of all the successive subscriptions to (`S`). - -``` -S --1--2--X - --1--2--3--X - --1 -R --1--2------1--2--3------1 -``` - -In the next example, we just use the simple overload that will always retry on any exception. +This example uses the simple overload, which will always retry on any exception. ```csharp public static void RetrySample(IObservable source) { - source.Retry().Subscribe(t=>Console.WriteLine(t)); //Will always retry + source.Retry().Subscribe(t => Console.WriteLine(t)); // Will always retry Console.ReadKey(); } ``` -Given the source [0,1,2,X], the output would be: - -``` -0 -1 -2 -0 -1 -2 -0 -1 -2 -``` - -This output would continue forever, as we throw away the token from the subscribe method. As a marble diagram it would look like this: - -``` -S--0--1--2--x - --0--1--2--x - --0-- -R--0--1--2-----0--1--2-----0-- -``` +Given a source that produces the values 0, 1, and 2, and then calls `OnError`, the output would be the numbers 0, 1, 2 repeating over an over endlessly. This output would continue forever because this example never unsubscribes, and `Retry` will retry forever if you don't tell it otherwise. -Alternatively, we can specify the maximum number of retries. In this example, we only retry once, therefore the error that gets published on the second subscription will be passed up to the final subscription. Note that to retry once you pass a value of 2. Maybe the method should have been called `Try`? +We can specify the maximum number of retries. In this next example, we only retry once, therefore the error that gets published on the second subscription will be passed up to the final subscription. Note that we tell `Retry` the maximum number of attempts, so if we want it to retry once, you pass a value of 2—that's the initial attempt plus one retry. ```csharp source.Retry(2).Dump("Retry(2)"); @@ -464,8 +288,7 @@ R--0--1--2-----0--1--2--x Proper care should be taken when using the infinite repeat overload. Obviously if there is a persistent problem with your underlying sequence, you may find yourself stuck in an infinite loop. Also, take note that there is no overload that allows you to specify the type of exception to retry on. -A useful extension method to add to your own library might be a "Back Off and Retry" method. The teams I have worked with have found such a feature useful when performing I/O, especially network requests. The concept is to try, and on failure wait for a given period of time and then try again. Your version of this method may take into account the type of `Exception` you want to retry on, as well as the maximum number of times to retry. You may even want to lengthen the to wait period to be less aggressive on each subsequent retry. -Requirements for exception management that go beyond simple `OnError` handlers are commonplace. Rx delivers the basic exception handling operators which you can use to compose complex and robust queries. In this chapter we have covered advanced error handling and some more resource management features from Rx. We looked at the `Catch`, `Finally` and `Using` methods as well as the other methods like `OnErrorResumeNext` and `Retry`, that allow you to play a little 'fast and loose'. We have also revisited the use of marble diagrams to help us visualize the combination of multiple sequences. This will help us in our next chapter where we will look at other ways of composing and aggregating observable sequences. \ No newline at end of file +Requirements for exception management that go beyond simple `OnError` handlers are commonplace. Rx delivers the basic exception handling operators which you can use to compose complex and robust queries. In this chapter we have covered advanced error handling and some more resource management features from Rx. We looked at the `Catch`, `Finally` and `Using` methods as well as the other methods like `OnErrorResumeNext` and `Retry`, that allow you to respond to error scenarios with something more constructive than just terminating. \ No newline at end of file From 29f9158e0f2857efc868871332f87e2bf5dc18a6 Mon Sep 17 00:00:00 2001 From: Howard van Rooijen Date: Tue, 8 Aug 2023 18:12:44 +0100 Subject: [PATCH 026/142] Fix missing ` which were breaking pandoc --- content/11_SchedulingAndThreading.md | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/content/11_SchedulingAndThreading.md b/content/11_SchedulingAndThreading.md index 44209c2..7cba405 100644 --- a/content/11_SchedulingAndThreading.md +++ b/content/11_SchedulingAndThreading.md @@ -176,7 +176,7 @@ Received 5 on thread: 1 Subscribe returned ``` -Looking at the first two items in our list of what schedulers do, we can see that the context in which this has executed the work is the thread on which I called `Suscribe`. And as for when it has decided to execute the work, it has decided to do it all before `Subscribe` returns. So you might think that `Range` immediately produces all of the items we've asked for and then returns. However, it's not quite as simple as that. Let's look at what happens if we have multiple `Range` instances running simultaneously. This introduces an extra operator—a `SelectMany` that calls `Range` again: +Looking at the first two items in our list of what schedulers do, we can see that the context in which this has executed the work is the thread on which I called `Subscribe`. And as for when it has decided to execute the work, it has decided to do it all before `Subscribe` returns. So you might think that `Range` immediately produces all of the items we've asked for and then returns. However, it's not quite as simple as that. Let's look at what happens if we have multiple `Range` instances running simultaneously. This introduces an extra operator—a `SelectMany` that calls `Range` again: ```cs Observable @@ -234,7 +234,7 @@ public static IObservable NaiveRange(int start, int count) } ``` -If `Range`` worked like that, this code would produce all of the items from the first range returned by the `SelectMany` callback before moving on to the next. In fact, Rx does provide a scheduler that would give us that behaviour if that's what we want. This example passes `ImmediateScheduler.Instance` to the nested `Observable.Range` call: +If `Range` worked like that, this code would produce all of the items from the first range returned by the `SelectMany` callback before moving on to the next. In fact, Rx does provide a scheduler that would give us that behaviour if that's what we want. This example passes `ImmediateScheduler.Instance` to the nested `Observable.Range` call: ```cs Observable @@ -465,27 +465,24 @@ Invokes all work through the thread pool. This type is a historical artifact, da In practice it's best to avoid this class in new code. The only reason the UWP target had a different implementation was that UWP used not to provide `System.Threading.ThreadPool`. But that changed when UWP added support for .NET Standard 2.0 in Windows version 10.0.19041. There is no longer any good reason for there to be a UWP-specific `ThreadPoolScheduler`, and it's a source of confusion that this type is quite different in the UWP target but it has to remain for backwards compatibility purposes. (It may well be deprecated because Rx 7 will be addressing some problems arising from the fact that the `System.Reactive` component currently has direct dependencies on UI frameworks.) If you use the `DefaultScheduler` you will be using the `System.Threading.ThreadPool` no matter which platform you are running on. - ### UI Framework Schedulers: ControlScheduler, DispatcherScheduler and CoreDispatcherScheduler Although the `SynchronizationContextScheduler` will work for all widely used client-side UI frameworks in .NET, Rx offers more specialized schedulers. `ControlScheduler` is for Windows Forms applications, `DispatcherScheduler` for WPF, and `CoreDispatcherScheduler` for UWP. These more specialized types offer two benefits. First, you don't necessarily have to be on the target UI thread to obtain an instance of these schedulers. Whereas with `SynchronizationContextScheduler` the only way you can generally obtain the `SynchronizationContext` this requires is by retrieving `SynchronizationContext.Current` while running on the UI thread. But these other UI-framework-specific schedulers can be passed a suitable `Control`, `Dispatcher` or `CoreDispatcher`, which it's possible to obtain from a non-UI thread. Second, `DispatcherScheduler` and `CoreDispatcherScheduler` provide a way to use the prioritisation mechanism supported by the `Dispatcher` and `CoreDispatcher` types. - ### Test Schedulers The Rx libraries define several schedulers that virtualize time, including `HistoricalScheduler`, `TestScheduler`, `VirtualTimeScheduler`, and `VirtualTimeSchedulerBase`. We will look at this sort of scheduler in the [Testing chapter](91_TestingRx.md). - ## SubscribeOn and ObserveOn So far, I've talked about why some Rx sources need access to schedulers—this is necessary for timing-related behaviour, and also for sources that produce items as quickly as possible. But remember, schedulers control three things: -* determining the context in which to execute work (e.g., a certain thread) -* deciding when to execute work (e.g., immediately, or deferred) -* keeping track of time +- determining the context in which to execute work (e.g., a certain thread) +- deciding when to execute work (e.g., immediately, or deferred) +- keeping track of time The discussion so far as mostly focused on the 2nd and 3rd features. When it comes to our own application code, we are most likely to use schedulers to control that first aspect. Rx defines two extension methods to `IObservable` for this: `SubscribeOn` and `ObserveOn`. Both methods take an `IScheduler` and return an `IObservable` so you can chain more operators downstream of these. @@ -555,7 +552,7 @@ Now all the notifications are coming in on thread 12, the thread created for the So this illustrates that `SubscribeOn` is doing what it promises: it does determine the context from which `Subscribe` is invoked. It's just that it doesn't always matter what context that is. If `Subscribe` does non-trivial work, it can matter. For example, if you use [`Observable.Create`](03_CreatingObservableSequences.md#observablecreate) to create a custom sequence, `SubscribeOn` determines the context in which the callback you passed to `Create` is invoked. But Rx doesn't have a concept of a 'current' scheduler—there's no way to ask "which scheduler was I invoked from?"—so Rx operators don't just their scheduler from the context on which they were subscribed. -When it comes to emitting items, most of the sources Rx supplies fall into one of three categories. First, operators that produce outputs in response to inputs from an upstream source (e.g., `Where`, `Select`, or `GroupBy) generally call their observers methods from inside their own `OnNext`. So whatever context their source observable was running in when it called `OnNext`, that's the context the operator will use when calling its observer. Second, operators that produce items either iteratively, or based on timing will use a scheduler (either explicitly supplied, or a default type when none is specified). Third, some sources just produce items from whatever context they like. For example, if an `async` method uses `await` and specifies `ConfigureAwait(false)` then it could be on more or less any thread and in any context after the `await` completes, and it might then go on to invoke `OnNext` on an observer. +When it comes to emitting items, most of the sources Rx supplies fall into one of three categories. First, operators that produce outputs in response to inputs from an upstream source (e.g., `Where`, `Select`, or `GroupBy`) generally call their observers methods from inside their own `OnNext`. So whatever context their source observable was running in when it called `OnNext`, that's the context the operator will use when calling its observer. Second, operators that produce items either iteratively, or based on timing will use a scheduler (either explicitly supplied, or a default type when none is specified). Third, some sources just produce items from whatever context they like. For example, if an `async` method uses `await` and specifies `ConfigureAwait(false)` then it could be on more or less any thread and in any context after the `await` completes, and it might then go on to invoke `OnNext` on an observer. As long as a source follows [the fundamental rules of Rx sequences](02_KeyTypes.md#the-fundamental-rules-of-rx-sequences), it's allowed to invoke its observer's methods from any context it likes. It can choose to accept a scheduler as input and to use that, but it's under no obligation to. And if you have such an unruly source that you'd like to tame, that's where the `ObserveOn` extension method comes in. Consider the following rather daft example: @@ -629,8 +626,6 @@ Observable Rx also offers `SubscribeOnDispatcher()` and `ObserveOnDispatcher()` extension methods to `IObservable`, that automatically use the current thread's `Dispatcher` (and equivalents for `CoreDispatcher`). While these might be slightly more convenient they can make it harder to test your code. We explain why in the [Testing Rx](16_TestingRx.html) chapter. - - ## Concurrency pitfalls Introducing concurrency to your application will increase its complexity. If your application is not noticeably improved by adding a layer of concurrency, then you should avoid doing so. Concurrent applications can exhibit maintenance problems with symptoms surfacing in the areas of debugging, testing and refactoring. @@ -693,7 +688,7 @@ public string Value } ``` -The earlier example called the subject's `OnNext` after `First` returned, making it relatively straightforward to see that if `First` didn't return, then the subject wouldn't emit a notification. But that's not as obvious here—the `MyButton_Click` event handler will be set up inside the call to `InitializeComponent` (as is normal in WPF code), so apparently we've done the necessary setup to enable events to flow. By the time we reach this call to `First, the UI framework already knows that if the user clicks `MyButton`, it should call `MyButton_Click`, and that method is going to cause the subject to emit a value. +The earlier example called the subject's `OnNext` after `First` returned, making it relatively straightforward to see that if `First` didn't return, then the subject wouldn't emit a notification. But that's not as obvious here—the `MyButton_Click` event handler will be set up inside the call to `InitializeComponent` (as is normal in WPF code), so apparently we've done the necessary setup to enable events to flow. By the time we reach this call to `First`, the UI framework already knows that if the user clicks `MyButton`, it should call `MyButton_Click`, and that method is going to cause the subject to emit a value. There's nothing intrinsically wrong with that use of `First`. (Risky, yes, but there are scenarios in which that exact code would be absolutely fine.) The problem is the context in which we've used it. This code is in the constructor of a UI element, and these always run on a particular thread associated with that window's UI elements. (This happens to be a WPF example, but other UI frameworks work the same way.) And that's the same thread that the UI framework will use to deliver notifications about user input. If we block this UI thread, we prevent the UI framework from invoking our button click event handler. So this blocking call is waiting for an event that can only be raised from the very thread that it is blocking, thus creating a deadlock. @@ -1030,6 +1025,5 @@ Note that we didn't have to write any cancellation code in our delegate. Rx hand The main difference between these overloads, and using the `IScheduler` methods directly, is that you don't need to pass another callback directly into the scheduler. You just invoke the supplied `Action` and it schedules another call to your method. They also enable you not to pass a state argument if you don't have any use for one. As mentioned in the earlier section, although this logically represents recursion, Rx protects us from stack overflows. The schedulers implement this style of recursion by waiting for the method to return before performing the recursive call. (So it is always what's called "tail recursion" where the recursive call occurs right at the end of the current method.) - This concludes our tour of scheduling and threading. Next, we will look at the boundary between Rx and the rest of the world. \ No newline at end of file From 887b2a78a5e76480424ff200e568557c372961bb Mon Sep 17 00:00:00 2001 From: Howard van Rooijen Date: Tue, 8 Aug 2023 20:23:01 +0100 Subject: [PATCH 027/142] Fix formatting / typos --- content/01_WhyRx.md | 5 ---- content/02_KeyTypes.md | 5 +--- content/03_CreatingObservableSequences.md | 22 +++------------- content/04_Part2.md | 4 +-- content/05_Filtering.md | 13 +-------- content/06_Transformation.md | 5 ---- content/07_Aggregation.md | 10 ------- content/08_Partitioning.md | 11 +++----- content/09_CombiningSequences.md | 9 +------ content/10_Part3.md | 3 +-- content/11_SchedulingAndThreading.md | 32 +++++++++++------------ content/12_LeavingIObservable.md | 6 +---- content/13_Timing.md | 11 +++----- content/14_ErrorHandlingOperators.md | 5 ---- 14 files changed, 32 insertions(+), 109 deletions(-) diff --git a/content/01_WhyRx.md b/content/01_WhyRx.md index 4c0a5c1..5cec60e 100644 --- a/content/01_WhyRx.md +++ b/content/01_WhyRx.md @@ -34,12 +34,10 @@ Rx is a powerfully productive development tool. It enables developers to work wi Rx builds on LINQ (Language Integrated Query). This enables us to use the query syntax shown above (or you can use the explicit function call approach that some .NET developers prefer). LINQ is widely used in .NET both for data access (e.g., in Entity Framework Core), but also for working with in-memory collections (with LINQ to Objects), meaning that experienced .NET developers will tend to feel at home with Rx. Crucially, LINQ is a highly composable design: you can connect operators together in any combination you like, expressing potentially complex processing in a straightforward way. - ## When is Rx appropriate? Rx is designed for processing sequences of events, meaning that it suits some scenarios better than others. The next sections describe some of these scenarios, and also cases in which it is a less obvious match but still worth considering. Finally, we describe some cases in which it is possible to use Rx but where alternatives are likely to be better. - ### Good Fit with Rx Rx is well suited to representing events that originate from outside of your code, and which your application needs to respond to, such as: @@ -74,7 +72,6 @@ A very popular use of this is maintaining a responsive UI. (UI event handling ha You should consider using Rx if you have an existing `IEnumerable` that is attempting to model live events. While `IEnumerable` _can_ model data in motion (by using lazy evaluation like `yield return`), there's a problem. If the code consuming the collection has reached the point where it wants the next item (e.g., because a `foreach` loop has just completed an iteration) but no item is yet available, the `IEnumerable` implementation would have no choice but to block the calling thread in its `MoveNext` until such time as data is available, which can cause scalability problems in some applications. Even in cases where thread blocking is acceptable (or if you use the newer `IAsyncEnumerable`, which can take advantage of C#'s `await foreach` feature to avoid blocking a thread in these cases) `IEnumerable` and `IAsyncEnumerable` are misleading types for representing live information sources. These interfaces represent a 'pull' programming model: code asks for the next item in the sequence. Rx is a more natural choice for modelling information sources that naturally produce information on their own schedule. - ### Possible Fit with Rx Rx can be used to represent asynchronous operations. .NET's `Task` or `Task` effectively represent a single event, and `IObservable` can be thought if as a generalization of this to a sequence of events. (The relationship between, say, `Task` and `IObservable` is similar to the relationship between `int` and `IEnumerable`.) @@ -85,7 +82,6 @@ For the first 5 years of its existence, Rx was arguably the best way to represen Earlier, I mentioned _offloading_: using Rx to push work onto other threads. Although this technique can enable Rx to introduce and manage concurrency for the purposes of _scaling_ or performing _parallel_ computations, other dedicated frameworks like [TPL (Task Parallel Library) Dataflow](https://learn.microsoft.com/en-us/dotnet/standard/parallel-programming/dataflow-task-parallel-library) or [PLINQ](https://learn.microsoft.com/en-us/dotnet/standard/parallel-programming/introduction-to-plinq) are more appropriate for performing parallel compute intensive work. However, TPL Dataflow offers some integration with Rx through its [`AsObserver`](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.dataflow.dataflowblock.asobserver) and [`AsObservable`](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.dataflow.dataflowblock.asobservable) extension methods. So it is common to use Rx to integrate TPL Dataflow with the rest of your application. - ### Poor Fit with Rx Rx's `IObservable` is not a replacement for `IEnumerable` or `IAsyncEnumerable`. It would be a mistake to take something that is naturally pull based and force it to be push based. @@ -94,7 +90,6 @@ Also, there are some situations in which the simplicity of Rx's programming mode By choosing the best tool for the job your code should be easier to maintain, it will likely provide better performance and you will probably get better support. - ## Rx in action You can get up and running with a simple Rx example very quickly. If you have the .NET SDK installed. Run the following at a command line: diff --git a/content/02_KeyTypes.md b/content/02_KeyTypes.md index d5fc717..f9f7910 100644 --- a/content/02_KeyTypes.md +++ b/content/02_KeyTypes.md @@ -199,7 +199,6 @@ These limitations are sometimes described by saying that .NET events are not _fi If we represent an event source as a plain old interface, then it _is_ a first class citizen: it can use all of the functionality we expect with other objects and values precisely because it's not something special. - ### What about Streams? I've described `IObservable` as representing a _stream_ of events. This raises an obvious question: .NET already has [`System.IO.Stream`](https://learn.microsoft.com/en-us/dotnet/api/system.io.stream), so why not just use that? @@ -285,7 +284,6 @@ These three outcomes correspond precisely to the three method defined by `IObser That describes the three things that either can happen next when consuming either an `IEnumerable` or an `IObservable`. The only difference is the means by which consumers discover this. With an `IEnumerable` source, each call to `MoveNext` will tell us which of these three applies. And with an `IObservable` source, it will tell you one of these three things with a call to the corresponding member of your `IObserver` implementation. - ## The Fundamental Rules of Rx Sequences Notice that two of the three outcomes in the list above are terminal. If you're iterating through an `IEnumerable` with a `foreach` loop, and it throws an exception, the `foreach` loop will terminate. The C# compiler understands that if `MoveNext` throws, the `IEnumerator` is now done, so it disposes it and then allows the exception to propagate. Likewise, if you get to the end of a sequence, then you're done, and the compiler understands that too: the code it generates for a `foreach` loop detects when `MoveNext` returns false and when that happens it disposes the enumerator and then moves onto the code after the loop. @@ -560,5 +558,4 @@ What if we unsubscribe early by calling `subscription.Dispose()`? In that case i Either way, everything from the source to the observer, including any operators that were sitting in between, gets shut down in either case. - -Now that we understand the relationship between an `IObservable` source and the `IObserver` interface that received event notifications, we can look at how we might create an `IObservable` instance to represent events of interest in our application. +Now that we understand the relationship between an `IObservable` source and the `IObserver` interface that received event notifications, we can look at how we might create an `IObservable` instance to represent events of interest in our application. \ No newline at end of file diff --git a/content/03_CreatingObservableSequences.md b/content/03_CreatingObservableSequences.md index d090e19..8583e37 100644 --- a/content/03_CreatingObservableSequences.md +++ b/content/03_CreatingObservableSequences.md @@ -349,7 +349,6 @@ I specified the type parameter for clarity, but this is not necessary as the com var singleValue = Observable.Return("Value"); ``` - ### Observable.Empty Sometimes it can be useful to have an empty sequence. .NET's `Enumerable.Empty()` does this for `IEnumerable`, and Rx has a direct equivalent in the form of `Observable.Empty()`, which returns an empty `IObservable`. We need to provide the type argument because there's no value from which the compiler can infer the type. @@ -475,7 +474,7 @@ This automatic exception delivery is another example of why the `Create` factory The `Create` method entails lazy evaluation, which is a very important part of Rx. It opens doors to other powerful features such as scheduling and combination of sequences that we will see later. The delegate will only be invoked when a subscription is made. So in the `ReadFileLines` example, it won't attempt to open the file until you subscribe to the `IObservable` that is returned. If you subscribe multiple times, it will execute the callback each time. (So if the file has changed, you can retrieve the latest contents by calling `Subscribe` again.) -As an exercise, try to build the `Empty`, `Return`, `Never` & `Throw` extension methods yourself using the `Create` method. If you have Visual Studio or [LINQPad](http://www.linqpad.net/) available to you right now, code it up as quickly as you can. If you don't (perhaps you are on the train on the way to work), try to conceptualize how you would solve this problem. +As an exercise, try to build the `Empty`, `Return`, `Never` & `Throw` extension methods yourself using the `Create` method. If you have Visual Studio or [LINQPad](http://www.linqpad.net/) available to you right now, code it up as quickly as you can. If you don't (perhaps you are on the train on the way to work), try to conceptualize how you would solve this problem. You completed that last step before moving onto this paragraph, right? Because you can now compare your versions with these examples of `Empty`, `Return`, `Never` and `Throw` recreated with `Observable.Create`: @@ -519,14 +518,13 @@ public static IObservable Throws(Exception exception) You can see that `Observable.Create` provides the power to build our own factory methods if we wish. - ## Sequence Generators The creation methods we've looked at so far are straightforward in that they either produce very simple sequences (such as single-element, or empty sequences), or they rely on our code to tell them exactly what to produce. Now we'll look at some methods that can produce longer sequences. ### Observable.Range -`Observable.Range(int, int)` returns an `IObserable` that produces a range of integers. The first integer is the initial value and the second is the number of values to yield. This example will write the values '10' through to '24' and then complete. +`Observable.Range(int, int)` returns an `IObservable` that produces a range of integers. The first integer is the initial value and the second is the number of values to yield. This example will write the values '10' through to '24' and then complete. ```csharp var range = Observable.Range(10, 15); @@ -633,7 +631,6 @@ Output: Once subscribed, you must dispose of your subscription to stop the sequence, because `Interval` returns an infinite sequence. Rx presumes that you might have considerable patience, because the sequences returned by `Interval` are of type `IObservable` (`long`, not `int`) meaning you won't hit problems if you produce more than a paltry 2.1475 billion event (i.e. more than `int.MaxValue`). - ### Observable.Timer The second factory method for producing constant time based sequences is `Observable.Timer`. It has several overloads; the first of which we will look at being very simple. The most basic overload of `Observable.Timer` takes just a `TimeSpan` as `Observable.Interval` does. The `Observable.Timer` will however only publish one value (0) after the period of time has elapsed, and then it will complete. @@ -720,7 +717,6 @@ public static IObservable Interval(TimeSpan period) This shows how you can use `Observable.Generate` to produce infinite sequences. I will leave it up to you the reader, as an exercise using `Observable.Generate`, to produce values at variable rates. I find using these methods invaluable not only in day to day work but especially for producing dummy data for test purposes. - ## Adapting Common Type to IObservable<T> Although we've now seen two very general ways to produce arbitrary sequences—`Create` and `Generate`—what if you already have an existing source of information in some other form that you'd like to make available as an `IObservable`? Rx provides a few adapters for common source types. @@ -770,7 +766,6 @@ Note the difference between `Observable.Start` and `Observable.Return`. `Start` The observable returned by `Start` may seem to have a superficial resemblance to `Task` or `Task` (depending on whether you use the `Action` or `Func` overload). Each represents work that may take some time before eventually completing, perhaps producing a result. However, there's a significant difference: `Start` doesn't begin the work until you subscribe to it. And it will re-execute the callback every time you subscribe to it. So it is more like a factory for a task-like entity. - ### From events As we discussed early in the book, .NET has a model for events that is baked into its type system. This predates Rx (not least because Rx wasn't feasible until .NET got generics in .NET 2.0) so it's common for types to support events but not Rx. To be able to integrate with the existing event model, Rx provides methods to take an event and turn it into an observable sequence. I showed this briefly in the file system watcher example earlier, but let's look in a bit more detail. There are several different varieties you can use. This show the most succinct form: @@ -859,7 +854,6 @@ completed Notice that even with two subscribers, the task runs only once. That shouldn't be surprising since we only created a single task. If the task has not yet finished, then all subscribers will receive the result when it does. If the task has finished, the `IObservable` effectively becomes a single-value cold observable. But there's a different way to wrap a task: `Observable.FromAsync`. - #### One Task per subscription There's a different way to get an `IObservable` for a source. I can replace the first statement in the preceding example with this: @@ -898,10 +892,9 @@ IObservable source = Observable.FromAsync(async () => There is a subtle difference with this though. When I used `Task.Run` the lambda ran on a task pool thread from the start. But when I write it this way, the lambda will begin to run on whatever thread calls `Subscribe`. It's only when it hits the first `await` that it returns (and the call to `Subscribe` will then return), with the remainder of the method running on the thread pool. - ### From IEnumerable<T> -Rx defines another extension method called `ToObservable`, this time for `IEnumerable`. In earlier chapters I described how `IObserable` was designed to represent the same basic abstraction as `IEnumerable`, with the only difference being the mechanism we use to obtain the elements in the sequence: with `IEnumerable`, we write code that _pulls_ values out of the collection (e.g., a `foreach` loop), whereas `IObservable` _pushes_ values to us by invoking `OnNext` on our `IObserver`. +Rx defines another extension method called `ToObservable`, this time for `IEnumerable`. In earlier chapters I described how `IObservable` was designed to represent the same basic abstraction as `IEnumerable`, with the only difference being the mechanism we use to obtain the elements in the sequence: with `IEnumerable`, we write code that _pulls_ values out of the collection (e.g., a `foreach` loop), whereas `IObservable` _pushes_ values to us by invoking `OnNext` on our `IObserver`. We could write code that bridges from _pull_ to _push_: @@ -930,12 +923,10 @@ When transitioning from `IEnumerable` to `IObservable`, you should careful So although this can be a convenient way to bring sequences of data into an Rx world, you should carefully test and measure the performance impact. - ### From APM Rx provides support for the ancient [.NET Asynchronous Programming Model (APM)](https://learn.microsoft.com/en-us/dotnet/standard/asynchronous-programming-patterns/asynchronous-programming-model-apm). Back in .NET 1.0, this was the only pattern for representing asynchronous operations. It was superseded in 2010 when .NET 4.0 introduced the [Task-based Asynchronous Pattern (TAP)](https://learn.microsoft.com/en-us/dotnet/standard/asynchronous-programming-patterns/task-based-asynchronous-pattern-tap). The old APM offers no benefits over the TAP. Moreover, C#'s `async` and `await` keywords (and equivalents in other .NET languages) only support the TAP, meaning that the APM is best avoided. However, the TAP was fairly new back in 2011 when Rx 1.0 was released, so it offered adapters for presenting an APM implementation as an `IObservable`. - Nobody should be using the APM today, but for completeness (and just in case you have to use an ancient library that only offers the APM) I will provide a very brief explanation. The result of the call to `Observable.FromAsyncPattern` does _not_ return an observable sequence. It returns a delegate that returns an observable sequence. (So it is essentially a factory factory) The signature for this delegate will match the generic arguments of the call to `FromAsyncPattern`, except that the return type will be wrapped in an observable sequence. The following example wraps the `Stream` class's `BeginRead`/`EndRead` methods (which are an implementation of the APM). @@ -1113,7 +1104,6 @@ Sub2: 4 Alternatively, you can specify a time-based limit by passing a `TimeSpan to the `ReplaySubject` constructor. - ## BehaviorSubject Like `ReplaySubject`, `BehaviorSubject` also has a memory, but it remembers exactly one value. However, it's not quite the same as a `ReplaySubject` with a buffer size of 1, because a `ReplaySubject` starts off in a state where it has nothing in its memory. But `BehaviorSubject` always remembers _exactly_ one item. How can that work before we've made our first call to `OnNext`? `BehaviorSubject` enforces this by requiring us to supply the initial value when we construct it. @@ -1124,11 +1114,10 @@ A `BehaviorSubject` could be thought of an as observable property. Like a nor This analogy falls down slightly when it comes to completion. If you call `OnCompleted`, it immediately calls `OnCompleted` on all of its observers, and if any new observers subscribe, they will also immediately be completed—it does not first supply the last value. (So this is another way in which it is different from a `ReplaySubject` with a buffer size of 1.) -Simlarly, if you call `OnError`, all current observers will receive an `OnError` call, and any subsequent subscribers will also receive nothing but an `OnError` call. +Similarly, if you call `OnError`, all current observers will receive an `OnError` call, and any subsequent subscribers will also receive nothing but an `OnError` call. backing fields to properties. - ## AsyncSubject `AsyncSubject` provides all observers with the final value it receives. Since it can't know which is the final value until `OnCompleted` is called, it will not invoke any methods on any of its subscribers until either its `OnCompleted` or `OnError` method is called. (If `OnError` is called, it just forwards that to all current and future subscribers.) @@ -1166,8 +1155,6 @@ Sub1: c Sub2: c ``` - - ## Subject factory Finally it is worth making you aware that you can also create a subject via a factory method. Considering that a subject combines the `IObservable` and `IObserver` interfaces, it seems sensible that there should be a factory that allows you to combine them yourself. The `Subject.Create(IObserver, IObservable)` factory method provides just this. @@ -1183,7 +1170,6 @@ public static ISubject>TSource, TResult< Create>TSource, TResult<( Subjects provide a convenient way to poke around Rx, and are occasionally useful in production scenarios, but they are not recommended for most cases. An explanation is in the [Usage Guidelines](18_UsageGuidelines.md) in the appendix. Instead of using subjects, favour the factory methods shown earlier in this chapter.. - ## Summary We have looked at the various eager and lazy ways to create a sequence. We have seen how to produce timer based sequences using the various factory methods. And we've also explored ways to transition from other synchronous and asynchronous representations. diff --git a/content/04_Part2.md b/content/04_Part2.md index ec02b4d..f131610 100644 --- a/content/04_Part2.md +++ b/content/04_Part2.md @@ -18,7 +18,6 @@ Rx supports most of the standard LINQ operators. It also defines numerous additi * [Error Handling] * [Timing] - Notes: * testing/discrimination/scrutinisation/picking * where, ignoreelements (segue by pointing out that Where might filter out everything but will still forward end/error) @@ -92,7 +91,6 @@ TODO: where does Defer fit in? I use it in ch03. I refer to it in Combining Sequ TODO: where does integration with Task fit in? Chapter 3's From Task section talks about the ToObservable extension method. The chapter currently called "Leaving the Monad" talks about ToTask. What about ToAsync and FromAsync? Chapter 5 mentions in passing that you can `await` any sequence in the ElementAt section, but I don't think I mention that any point earlier than that. - Check these to see if there's anything in them not now covered earlier: * HotAndColdObservables -* SequencesOfCoincidence +* SequencesOfCoincidence \ No newline at end of file diff --git a/content/05_Filtering.md b/content/05_Filtering.md index 108865c..00952f5 100644 --- a/content/05_Filtering.md +++ b/content/05_Filtering.md @@ -50,7 +50,7 @@ IObservable oddNumbers = For the examples in this book however, we will keep with using extension methods, partly because Rx implements some operators for which there is no corresponding query syntax, and partly because the method call approach can sometimes make it easier to see what is happening. -As with most Rx operators, `Where` does not subscribe immediately to its source. (Rx LINQ operators are much like those in LINQ to Objects: the `IEnumerable` version of `Where` returns without attempting to enumerate its source. It's only when something attempts to enumerate the `IEnumerable` that `Where` returns that it will in turn start enumerating the source.) Only when something calls `Susbcribe on the `IObservable` returned by `Where` will it call `Subscribe` on its source. And it will do so once for each such call to `Subscribe`. More generally, when you chain LINQ operators together, each `Subscribe` call on the resulting `IObservable` results in a cascading series of calls to `Subscribe` all the way down the chain. +As with most Rx operators, `Where` does not subscribe immediately to its source. (Rx LINQ operators are much like those in LINQ to Objects: the `IEnumerable` version of `Where` returns without attempting to enumerate its source. It's only when something attempts to enumerate the `IEnumerable` that `Where` returns that it will in turn start enumerating the source.) Only when something calls `Susbcribe` on the `IObservable` returned by `Where` will it call `Subscribe` on its source. And it will do so once for each such call to `Subscribe`. More generally, when you chain LINQ operators together, each `Subscribe` call on the resulting `IObservable` results in a cascading series of calls to `Subscribe` all the way down the chain. A side effect of this cascading `Subscribe` is that `Where` (and most other LINQ operators) is neither inherently _hot_ or _cold_: since it just subscribes to its source, then it will be hot if its source is hot, and cold if its source is cold. @@ -66,7 +66,6 @@ then although this would filter out all elements (because the predicate ignores In fact if that's what you want—an operator that drops all the elements and just tells you when a source completes or fails—there's a simpler way. - ## IgnoreElements The `IgnoreElements` extension method allows you to receive just the `OnCompleted` or `OnError` notifications. It is equivalent to using the `Where` operator with a predicate that always returns false, as this example illustrates: @@ -129,14 +128,10 @@ IObservable vesselMovements = receiverHost.Messages .OfType(); ``` - - - ## Positional Filtering Sometimes, we don't care about what an element is, so much as where it is in the sequence. - ### FirstAsync and FirstOrDefaultAsync LINQ providers typically implement a `First` operator that provides the first element of a sequence. Rx is no exception, but the nature of Rx means we typically need this to work slightly differently. With providers for data at rest (such as LINQ to Objects or Entity Framework Core) the source elements already exist, so retrieving the first item is just a matter of reading it. But with Rx, sources produce data when they choose, so there's no way of knowing when the first item will become available. @@ -227,7 +222,6 @@ Earlier we saw that Rx implements the standard `Take` operator, which forwards u `TaskLast` faces the same challenge as `Last`: it doesn't know when it is near the end of the sequence. It therefore has to hold onto copies of the most recently seen values. Note that it will need enough memory to hold onto however many values you've specified. If you write `TakeLast(1_000_000)`, it will need to allocate a buffer large enough to store 1,000,000 values. It doesn't know if the first element it receives will be one of the final million. It can't know that until either the source completes, or the source has emitted more than 1,000,000 items. When the source finally does complete, `TakeLast` will now know what the final million elements were and will need to pass all of them to its subscriber's `OnNext` method one after another. - ### SingleAsync and SingleOrDefaultAsync LINQ operators typically provide a `Single` operator, for use when a source should provide exactly one item, and it would be an error for it to contain more, or for it to be empty. The same Rx considerations apply here as for `First` and `Last`, so you will probably be unsurprised to learn that Rx offers a `SingleAsync` method that returns an `IObservable` that will either call its observer's `OnNext` exactly once, or will call its `OnError` to indicate either that the source reported an error, or that the source did not produce exactly one item. @@ -244,7 +238,6 @@ What if we want the exact opposite of the `Take` or `TakeLast` operators? Instea The other key methods to filtering are so similar I think we can look at them as one big group. First we will look at `Skip` and `Take`. These act just like they do for the `IEnumerable` implementations. These are the most simple and probably the most used of the Skip/Take methods. Both methods just have the one parameter; the number of values to skip or to take. - ### Blocking Versions of First/Last/Single[OrDefault] Several of the operators described in the preceding sections end in the name `Async`. This is a little strange because normally, .NET methods that end in `Async` return a `Task` or `Task`, and yet these all return an `IObservable`. Also, as already discussed, each of these methods corresponds to a standard LINQ operator which does not generally end in `Async`. (And to further add to the confusion, some LINQ providers such as Entity Framework Core do include `Async` versions of some of these operators, but they are different. Unlike Rx, these do in fact return a `Task`, so they still produce a single value, and not an `IQueryable` or `IEnumerable`.) This naming arises from an unfortunate choice early in Rx's design. @@ -258,7 +251,6 @@ Console.WriteLine(v); This prints out the value `1`, which is the first item returned by `Range` here. But look at the type of that variable `v`. It's not an `IObservable`, it's just an `int`. What would happen if we used this on an Rx operator that didn't immediately produce values upon subscription? Here's one example: - ```cs long v = Observable.Timer(TimeSpan.FromSeconds(2)).First(); Console.WriteLine(v); @@ -279,7 +271,6 @@ The fact that we're able to use `await` makes some sense of the fact that these Note that there are occasionally situations in which values are available immediately. For example, the [`BehaviourSubject` section in chapter 3](./03_CreatingObservableSequences.md#behaviorsubject), showed that the defining feature of `BehaviourSubject` is that it always has a current value. That means that Rx's `First` method won't actually block—it will subscribe to the `BehaviourSubject`, and `BehaviourSubject.Subscribe` calls `OnNext` on its subscriber's observable before returning. That enables `First` to return a value immediately without blocking. (Of course, if you use the overload of `First` that accepts a predicate, and if the `BehaviourSubject`'s value doesn't satisfy the predicate, `First` will then block.) - ### ElementAt There is yet another standard LINQ operator for selecting one particular element from the source: `ElementAt`. You provide this with a number indicating the position in the sequence of the element you require. In data-at-rest LINQ providers, this is logically equivalent to accessing an array element by index. Rx implements this operator, but whereas most LINQ providers' `ElementAt` implementation returns a `T`, Rx's returns an `IObservable`. Unlike with `First`, `Last`, and `Single`, Rx does not provide a blocking form of `ElementAt`. But since you can await any `IObservable`, you can always do this: @@ -389,7 +380,6 @@ We don't have to use a time, `TakeUntil` offers an overload that accept a second **Note**: these overloads require the second observable to produce a value in order to trigger the start or end. If that second observable completes without producing a single notification, then it has no effect—`TakeUntil` will continue to take items indefinitely; `SkipUntil` will never produce anything. In other words, these operators would treat `Observable.Empty()` as being effectively equivalent to `Observable.Never()`. - ### Distinct and DistinctUntilChanged `Distinct` is yet another standard LINQ operator. It removes duplicates from a sequence. To do this, it needs to remember all the values that its source has ever product, so that it can filter out any items that it has seen before. Rx includes an implementation of `Distinct`, and this example uses it to display the unique identifier of vessels generating AIS messages, but ensuring that we only display each such identifier the first time we see it: @@ -430,7 +420,6 @@ IObservable statusChanges = receiverHost.Messages For example, if the vessel had repeatedly been reporting a status of `AtAnchor`, `DistinctUntilChanged` would drop each such message because the status was the same as it had previously been. But if the status were to change to `UnderwayUsingEngine`, that would cause `DistinctUntilChanged` to let the first message reporting that status through. It would then not allow any further messages through until there was another change in value, either back to `AtAnchor`, or to something else such as `Moored`. (The `Skip(1)` on the end is there because `DistinctUntilChanged` always lets through the very first message it sees. We have no way of knowing whether that actually represents a change in status, but it is very likely not to: ships report their status every few minutes, and change their status much less often, so the first time we receive a report of a ship's status, it probably doesn't represent a change of status. By dropping that first item, we ensure that `statusChanges` provides notifications only when we can be certain that the status changed.) - That was our quick run through of the filtering methods available in Rx. While they are relatively simple, as we have already begun to see, the power in Rx is down to the composability of its operators. The filter operators are your first stop for managing the potential deluge of data we can face in the information age. We now know how to remove unmatched data, duplicate data or excess data. Next, we will move on to operators that can transform data. \ No newline at end of file diff --git a/content/06_Transformation.md b/content/06_Transformation.md index 377d783..ba0566e 100644 --- a/content/06_Transformation.md +++ b/content/06_Transformation.md @@ -25,8 +25,6 @@ public static class SampleExtentions } ``` - - ## Select The classic transformation method is `Select`. It allows you provide a function that takes a value of `TSource` and return a value of `TResult`. The signature for `Select` is nice and simple and suggests that its most common usage is to transform from one type to another type, i.e. `IObservable` to `IObservable`. @@ -196,7 +194,6 @@ it would produce a list with these elements: The order is less odd. It's worth exploring the reasons for this in a little more detail. - ### IEnumerable vs. IObservable SelectMany `IEnumerable` is pull based—sequences produce elements only when asked. `Enumerable.SelectMany` pulls items from its sources in a very particular order. It begins by asking its source `IEnumerable` (the one returned by `Range` in the preceding example), and then retrieves the first value. `SelectMany` then invokes our callback, passing this first item, and then enumerates everything in the `IEnumerable` our callback returns. Only when it has exhausted this does it ask the source (`Range`) for a second item. Again, it passes that second item to our callback and then fully enumerates the `IEnumerable`, we return, and so on. So we get everything from the first nested sequence first, then everything from the second, etc. @@ -209,7 +206,6 @@ The Rx version of the example we're currently examining is in fact one of these ![An Rx marble diagram showing 7 observables. The first illustrates the Range operator producing the values 1 through 5. These are colour coded as follows: green, blue, yellow, red, and pink. These colour correspond to observables further down in the diagram, as will be described shortly. The items in this first observable are not evenly spaced—the 2nd value immediately follows the 1st, but there are gaps before the 3rd, 4th, and 5th items. These gaps correspond with activity shown further down in the diagram. Beneath the first observable is code invoking the SelectMany operator, passing this lamba: "i => new string((char)(i+64),i).ToObservable()". Beneath this are 6 more observables. The first 5 show the individual observables that the lambda produces for each of the inputs. These are colour coded to show how they correspond—the first observable's item is green, to indicate that this observable corresponds to the first item emitted by Range, the second observable's items are blue showing that it corresponds to the second item emitted by Range, and so on with the same colour sequence as described earlier for Range. Each observable's first item is aligned horizontally with the corresponding item from Range, signifying the fact that each one of these observables starts when the Range observable emits a value. These 5 observables show the values produced by the observable returned by the lambda for each of the 5 values from Range. The first of these child observables shows a single item with value 'A', vertically aligned with the value 1 from the Range observable to indicate that this item is produced immediately when Range produces its first value. This child observable then immediately ends, indicating that only one item was produced. The second child observable contains two 'B' values, the third three 'C' values, the fourth four 'D' values and the fifth give 'E' values. The horizontal positioning of these items indicates that all of first 6 observables in the diagram (the Range observable, and the 5 observables produced by the lambda) overlap to some extent. Initially this overlap is minimal: the first of the lambda-produced observables starts at the same time the Range produces its first value so these two observables overlap, but since this first child completes immediately it overlaps with nothing else. The second child starts when Range produces its second value, and manages to produce two values and then completes before anything else happens, so thus far, the child observables produced by the lambda overlap only with the Range one, and not with each other. However, when Range produces its third value, the resulting child observable produces two 'C' values, but the next thing that happens (as denoted by the horizontal position of the items) is that Range manages to produce its 4th value and its corresponding child observable produces the first of its 'D' values next. After this, the third child observable produces its third and final 'C'—so this third child overlaps not just with the Range observable, but also with the fourth child. Then the fourth observable produces its second 'D'. Then the Range produces its fifth and final value, and the corresponding child observable produces its first 'E'. Then the fourth and fifth child observable alternate, producing 'D', 'E' and 'D', at which point the fourth child observable is complete, and now the fifth child observable produces its final three 'E' values without interruption, because by this time it is the only observable still running. At the bottom of the diagram is the 7th observable representing the output of the SelectMany. This shows all the of the values from each of the 5 child observables each with the exact same horizontal position (signifying that the observable returned by SelectMany produces a value whenever any of its child observables produces a value). So we can see that this output observable produces the sequence 'ABBCCDCDEDEDEEE', which is exactly what we saw in the example output earlier.](GraphicsIntro/Ch06-Transformation-MarblesSelect-Many-Marbles.svg) - We can make a small tweak to prevent the child sequences all from trying to run at the same time. (This also uses `Observable.Repeat` instead of the rather indirect route of constructing a `string` and then calling `ToObserable` on that. I did that in earlier examples to emphasize the similarity with the LINQ to Objects example, but you wouldn't really do it that way in Rx.) ```cs @@ -256,7 +252,6 @@ Observable However, that would not have been a good way to show what `SelectMany` does, since this no longer uses it. (It uses `Concat`, which will be discussed in Chapter XXX.) We use `SelectMany` either when we know we're unwrapping a single-valued sequence, or when we don't have specific ordering requirements, and want to take elements as and when they emerge from child observables. - ### The Significance of SelectMany If you've been reading this book's chapters in order, you had already seen two examples of `SelectMany` in earlier chapters. The first example in the [**LINQ Operators and Composition** section of Chapter 2](./02_KeyTypes.md#linq-operators-and-composition) used it. Here's the relevant code: diff --git a/content/07_Aggregation.md b/content/07_Aggregation.md index 0284372..86e8f40 100644 --- a/content/07_Aggregation.md +++ b/content/07_Aggregation.md @@ -14,7 +14,6 @@ We will start with the simplest aggregation functions, which reduce an observabl Rx supports various standard LINQ operators that reduce all of the values in a sequence down to a single numeric result. - ### Count `Count` tells you how many elements a sequence contains. Although this is a standard LINQ operator, Rx's version deviates from the `IEnumerable` version as Rx will return an observable sequence, not a scalar value. As usual, this is because of the push-related nature of Rx. Rx's `Count` can't demand that its source supply all elements immediately, so it just has to wait until the source says that it has finished. @@ -88,7 +87,6 @@ Although `Average` can process values of the same numeric types as `Sum`, the ou As with `Sum`, if the inputs to `Average` are nullable, the output will be too. - ### Min and Max Rx implements the standard LINQ `Min` and `Max` operators which find the element with the highest or lowest value. As with all the other operators in this section, these do not return scalars, and instead return an `IObservable` that produces a single value. @@ -105,7 +103,6 @@ IObservable widthOfWidestVessel = vesselDimensions `Max` returns an `IObservable` here, which will be the width of the widest vessel out of the next 10 messages that report vessel dimensions. But what if you didn't just want to see the width? What if you wanted the whole message? - ## MinBy and MaxBy Rx offers two subtle variations on `Min` and `Max`: `MinBy` and `MaxBy`. These are similar to the callback-based `Min` and `Max` we just saw that enable us to work with sequences of elements that are not numeric values, but which may have numeric properties. The difference is that instead of returning the minimum or maximum value, `MinBy` and `MaxBy` tell you which source element produced that value. For example, suppose that instead of just discovering the width of the widest ship, we wanted to know what ship that actually was: @@ -127,7 +124,6 @@ So unlike the other aggregation operators we've seen so far, an observable retur **Note**: LINQ to Objects also defines [`MinBy`](https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable.minby) and [`MaxBy`](https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable.maxby) methods, but they are slightly different. These LINQ to Objects versions do in fact arbitrarily pick a single source element—if there are multiple source values all producing the minimum (or maximum) result, LINQ to Objects gives you just one whereas Rx gives you all of them. Rx defined its versions of these operators years before .NET 6.0 added their LINQ to Objects namesakes, so if you're wondering why Rx does it differently, the real question is why did LINQ to Objects not follow Rx's precedent. Presumably the .NET runtime library implementors decided they wanted to make `Min/MaxBy` feel as similar as possible to `Min` and `Max`. - ## Simple Boolean Aggregation LINQ defines several standard operators that reduce entire sequences to a single boolean value. @@ -260,12 +256,10 @@ all completed subject completed ``` - ### IsEmpty The LINQ `IsEmpty` operator is logically the opposite of the no-arguments `Any` method. It returns `true` if and only if the source completes without producing any elements, and if the source produces an item, `IsEmpty` produces `false` and immediately unsubscribes. - ### Contains The `Contains` operator determines whether a particular element is present in a sequence. You could implement it using `Any`, just supplying a callback that compares each item with the value you're looking for. However, it will typically be slightly more succinct, and may be a more direct expression of intent to write `Contains`. @@ -302,7 +296,6 @@ Subject completed There is also an overload to `Contains` that allows you to specify an implementation of `IEqualityComparer` other than the default for the type. This can be useful if you have a sequence of custom types that may have some special rules for equality depending on the use case. - ## Build your own aggregations If the built-in aggregations described in the preceding sections do not meet your needs, you can build your own. Rx provides two different ways to do this. @@ -345,7 +338,6 @@ This particular function completely ignores its second argument (the element fro Now let's look at how we might implement `Sum` using `Aggregate`: - ```csharp Func s = (acc, element) => acc + element IObservable sum = source.Aggregate(s); @@ -440,7 +432,6 @@ With either of these implementations, `vesselNames` will produce a single value I've had to fudge an issue in these last two examples. I've made them work over just the first 10 suitable messages to emerge. Think about what would happen if I didn't have the `Take(10)` in there. The code would compile, but we'd have a problem. The AIS message source I've been using in various examples is an endless source. Ships will continue to move around the oceans for the foreseeable future. Ais.NET does not contain any code designed to detect either the end of civilisation, or the invention of technologies that render the use of ships obsolete, so it will never call `OnCompleted` on its subscribers. The observable returned by `Aggregate` reports nothing until its source either completes or fails. So if we remove that `Take(10)`, the behaviour would be identical `Observable.Never>`. I had to force the input to `Aggregate` to come to an end to make it produce something. But there is another way. - ### Scan While `Aggregate` allows us to reduce complete sequences to a single, final value, sometimes this is not what we need. If we are dealing with an endless source, we might want something more like a running total, updated each time we receive a value. The `Scan` operator is designed for exactly this requirement. The signatures for both `Scan` and `Aggregate` are the same; the difference is that `Scan` doesn't wait for the end of its input. It produces the aggregated value after every item. @@ -511,5 +502,4 @@ source.Aggregate(0, (acc, current) => acc + current); source.Scan(0, (acc, current) => acc + current).TakeLast(); ``` - Aggregation is useful for reducing volumes of data or combining multiple elements to produce averages, or other measure that incorporate information from multiple elements. But to perform some kinds of analysis we will also need to slice up or otherwise restructure our data before calculating aggregated values. So in the next chapter we'll look at the various mechanisms Rx offers for partitioning data. \ No newline at end of file diff --git a/content/08_Partitioning.md b/content/08_Partitioning.md index 46cbc9e..4796d40 100644 --- a/content/08_Partitioning.md +++ b/content/08_Partitioning.md @@ -4,10 +4,8 @@ title: Partitioning # Partitioning - Rx can split a single sequence into multiple sequences. This can be useful for taking a single sequence and fanning out to many subscribers or perhaps taking aggregates on partitions. You may already be familiar with the standard LINQ operator `GroupBy`. Rx supports this, and also defines some of its own. - ## GroupBy The `GroupBy` operator allows you to partition your sequence just as `IEnumerable`'s `GroupBy` operator does. Once again, the open source [Ais.Net project](https://github.com/ais-dotnet) can provide a useful example. Its [`ReceiverHost` class](https://github.com/ais-dotnet/Ais.Net.Receiver/blob/15de7b2908c3bd67cf421545578cfca59b24ed2c/Solutions/Ais.Net.Receiver/Ais/Net/Receiver/Receiver/ReceiverHost.cs) makes AIS messages available through Rx, defining a `Messages` property of type `IObservable`. This is a very busy source, because it reports every message it is able to access. For example, if you connect the receiver to the AIS message source generously provided by the Norwegian government, it produces a notification every time _any_ ship broadcasts an AIS message anywhere on the Norwegian coast. There are a lot of ships moving around Norway, so this is a bit of a firehose. @@ -103,9 +101,9 @@ This shows how Rx can tame high volume event sources in ways that are much more It probably seems like I'm making too big a deal of this, but it took so little effort to achieve this result that it can be easy to miss just how much work Rx is doing for us here. This code does all of the following: - * monitors every single ship operating in Norwegian waters - * provides per-ship information - * reports events at a rate that a human could reasonable cope with +- monitors every single ship operating in Norwegian waters +- provides per-ship information +- reports events at a rate that a human could reasonable cope with It can take thousands of messages and perform the necessary processing to find the handful that really matter to us. @@ -184,7 +182,6 @@ If we made the same modification to the earlier version, in which these nested s More generally, if you have lots of sequences coming into existence as part of a single processing chain, it is usually better to get Rx to manage the process from end to end. - ## Buffer The `Buffer` operator is useful if you need to deal with events in batches. This can be useful for performance, especially if you're storing data about events. Take the AIS example. If you wanted to log notifications to a persistent store, the cost of storing a single record is likely to be almost identical to the cost of storing several. Most storage devices operate with blocks of data often several kilobytes in size, so the amount of work required to store a single byte of data is often identical to the amount of work required to store several thousand bytes. The pattern of buffering up data until we have a reasonably large chunk of work crops up all the time in programming—the .NET runtime library's `Stream` class has built-in buffering for exactly the reason, so it's no surprise that it's built into Rx. @@ -261,7 +258,6 @@ If `source` happened to emit no values during any particular chunk's lifetime, ` The second overload, taking both a `timespan` and a `count`, essentially imposes two upper limits: you'll never have to wait longer than `timespan` between chunks, and you'll never receive a chunk with more than `count` elements. As with the `timespan`-only overload, this can deliver under-full and even empty chunks if the source doesn't produce elements fast enough to fill the buffer within the time specified. - ### Overlapping buffers In the preceding section, I showed an example that collected chunks of 4 `IVesselNavigation` entries for a particular vessel, and calculated the average speed. This sort of averaging over multiple samples can be a useful way of smoothing out slight random variations in readings. So the goal in this case wasn't to process items in batches for efficiency—it was to enable a particular kind of calculation. @@ -327,7 +323,6 @@ public static IObservable> Buffer( The `timeSpan` determines the length of time covered by each window, and the `timeShift` determines the interval at which new windows are started. - ## Window The `Window` operator is very similar to the `Buffer`. It can split the input into chunks based either on element count or time, and it also offers support for overlapping windows. However, it has a different return type. Whereas using `Buffer` on an `IObservable` will return an `IObservable>`, `Window` will return an `IObservable>`. This means that `Window` doesn't have to wait until it has filled a complete buffer before producing anything. diff --git a/content/09_CombiningSequences.md b/content/09_CombiningSequences.md index ce197bd..92c4425 100644 --- a/content/09_CombiningSequences.md +++ b/content/09_CombiningSequences.md @@ -42,7 +42,6 @@ s2 5-6-7-8-9| c 0-1-2-5-6-7-8-9| ``` - Rx's `Concat` does nothing with its sources until something subscribes to the `IObservable` it returns. So in this case, when we call `Subscribe` on `c` (the source returned by `Concat`) it will subscribe to its first input, `s1`, and each time that produces a value, the `c` observable will emit that same value to its subscriber. If we went on to call `sub.Dispose()` before `s1` completes, `Concat` would unsubscribe from the first source, and would never subscribe to `s2`. If `s1` were to report an error, `c` would report that same error to is subscriber, and again, it will never subscribe to `s2`. Only if `s1` completes will the `Concat` operator subscribe to `s2`, at which point it will forward any items that second input produces until either the second source completes or fails, or the application unsubscribes from the concatenated observable. Although Rx's `Concat` has the same logical behaviour as the [LINQ to Objects `Concat`](https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable.concat), there are some Rx-specific details to be aware of. In particular, timing is often more significant in Rx than with other LINQ implementations. For example, in Rx we distinguish between [_hot_ and _cold_ source](02_KeyTypes.md#hot-and-cold-sources). With a cold source it typically doesn't matter exactly when you subscribe, but hot sources are essentially live, so you only get notified of things that happen while you are subscribed. This can mean that hot sources might not be a good fit with `Concat` The following marble diagram illustrates a scenario in which this produces results that have the potential to surprise: @@ -181,7 +180,6 @@ rs-----1---2-3| You should note that once the iterator has executed its first `yield return` to return the first sequence, the iterator does not continue until the first sequence has completed. The iterator calls `Console.WriteLine` to display the text `Yield 2nd sequence` immediately after that first `yield return`, but you can see that message doesn't appear in the output until after we see the `Concat-->1` message showing the first output from `Concat`, and also the `1st finished` message, produced by the `Finally` operator, which runs only after that first sequence has completed. (The code also includes a 500ms delay so that if you run this, you can see that everything stops for a bit until that first source produces its single value then completes.) Once the first source completes, the `GetSequences` method continues (because `Concat` will ask it for the next item once the first observable source completes). When `GetSequences` provides the second sequence with another `yield return`, `Concat` subscribes to that, and again `GetSequences` makes no further progress until that second observable sequence completes. The third sequence is processed in the same fashion. - ### Prepend There's one particular scenario that `Concat` supports, but in a slightly cumbersome way. It can sometimes be useful to make a sequence that always emits some initial value immediately. Take the example I've been using a lot in this book, where ships transmit AIS messages to report their location and other information: in some applications you might not want to wait until the ship happens next to transmit a message. You could imagine an application that records the last known location of any vessel. This would make it possible for the application to offer, say, an `IObservable` which instantly reports the last known information upon subscription, and which then goes on to supply any newer messages if the vessel produces any. @@ -222,7 +220,6 @@ public static IObservable GetLastKnownAndSubsequenceNavigatio `BehaviorSubject` can hold onto only one value, which is fine for this AIS scenario, and `Prepend` shares this limitation. But what if you need a source to begin with some particular sequence? - ### StartWith `StartWith` is a generalization of `Prepend` that enables us to provide any number of values to emit immediately upon subscription. As with `Prepend`, it will then go on to forward any further notifications that emerge from the source. @@ -258,7 +255,6 @@ Whereas `Prepend` emits its additional item at the start, and `Append` emits its You don't have to supply `DefaultIfEmpty` with a value. If you use the overload in which you supply no such value, it will just use `default(T)`. This will be a zero-like value for _struct_ types and `null` for reference types. - ### Repeat The final operator that combines sequences sequentially is `Repeat`. It allows you to simply repeat a sequence. It offers overloads where you can specify the number of times to repeat the input, and one that repeats infinitely: @@ -302,7 +298,6 @@ Output: Completed ``` - ## Concurrent sequences We'll now move on to operators for combining observable sequences that are producing values concurrently. @@ -532,7 +527,6 @@ public static IObservable Merge(this IEnumerable`-based overload and the source emitted more nested sources than `maxConcurrent`) `Merge` will wait for existing sources to complete before moving onto new ones. A `maxConcurrent` of 1 makes `Merge` behave in the same way as `Concat`. - ### Switch Rx's `Switch` operator takes an `IObservable>`, and produces notifications from the most recent nested observable. Each time its source produces a new nested `IObservable`, `Switch` unsubscribes from the previous nested source (unless this is the first source, in which case there won't be a previous one) and subscribes to the latest one. @@ -776,7 +770,6 @@ areEqual.OnNext(True) areEqual completed ``` - ### CombineLatest The `CombineLatest` operator is similar to `Zip` in that it combines pairs of items from its sources. However, instead of pairing the first items, then the second, and so on, `CombineLatest` produces an output any time _either_ of its inputs produces a new value. For each new value to emerge from an input, `CombineLatest` uses that along with the most recently seen value from the other input. The signature is as follows. @@ -816,7 +809,7 @@ var systemStatus = webServerStatus (webStatus, dbStatus) => webStatus && dbStatus); ``` -Some readers may have noticed that this method could produce a lot of duplicate values. For example, if the web server goes down the result sequence will yield '`false`'. If the database then goes down, another (unnecessary) '`false`' value will be yielded. This would be an appropriate time to use the `DistictUntilChanged` extension method. The corrected code would look like the example below. +Some readers may have noticed that this method could produce a lot of duplicate values. For example, if the web server goes down the result sequence will yield '`false`'. If the database then goes down, another (unnecessary) '`false`' value will be yielded. This would be an appropriate time to use the `DistinctUntilChanged` extension method. The corrected code would look like the example below. ```csharp // Yields true when both systems are up, and only on change of status diff --git a/content/10_Part3.md b/content/10_Part3.md index acda2f9..fc5b367 100644 --- a/content/10_Part3.md +++ b/content/10_Part3.md @@ -8,5 +8,4 @@ The first part of this book focused on the basic ideas and types of Rx. In the s This _purity_ can help us understand what our code will do. It means we don't need to know about the state of the rest of our program in order to understand how one particular part functions. However, code that is completely detached from the outside world is unlikely to achieve anything useful. In practice, we need to connect these pure computations with more pragmatic concerns. The [Creating Observable Sequences chapter](03_CreatingObservableSequences.md) already showed how to define observable streams, so we've already looked at how to connect real world inputs into the world of Rx. But what about the other end? How do we do something useful with the results of our processing? -In some cases, it might be enough to do work inside `IObserver` implementations, or using the callback-based subscription mechanisms you've already seen. However, some situations will demand something more sophisticated. So in this third part of the book, we will look at some of the features Rx offers to help connect processes of the kind we looked at in part 2 with the rest of the world. - +In some cases, it might be enough to do work inside `IObserver` implementations, or using the callback-based subscription mechanisms you've already seen. However, some situations will demand something more sophisticated. So in this third part of the book, we will look at some of the features Rx offers to help connect processes of the kind we looked at in part 2 with the rest of the world. \ No newline at end of file diff --git a/content/11_SchedulingAndThreading.md b/content/11_SchedulingAndThreading.md index 7cba405..e85b3dc 100644 --- a/content/11_SchedulingAndThreading.md +++ b/content/11_SchedulingAndThreading.md @@ -35,10 +35,10 @@ So when `source` decides to produce an item, it will invoke the `Where` operator So for the source notifications that make it all the way through to that `Console.WriteLine` in the callback passed to subscribe, we end up with a lot of nested calls on the stack: * `source` calls: - * `Where` observer, which calls: - * `Buffer` observer, which calls: - * `Take` observer, which calls: - * `Subscribe` observer, which calls our lambda + * `Where` observer, which calls: + * `Buffer` observer, which calls: + * `Take` observer, which calls: + * `Subscribe` observer, which calls our lambda This is all happening on one thread. Most Rx operators don't have any one particular thread that they call home. They just do their work on whatever thread the call comes in on. This makes Rx pretty efficient—passing data from one operator to the next merely involves a method call, and those are pretty fast. (In fact, there are typically a few more layers. Rx tends to add a few wrappers to handle errors and early unsubscription. So the call stack will look a bit more complex than what I've just shown. But it's still typically all just method calls.) @@ -141,7 +141,6 @@ Notice that in this case every `Received` message is on thread id 12, which is d This shouldn't be entirely surprising. The only way Rx could have used the original thread here would be for `Delay` to block the thread for the specified time (a quarter of a second here) before forwarding the call. This would be unacceptable for most scenarios, so instead, the `Delay` operator arranges for a callback to occur after a suitable delay. As you can see from the output, these all seems to happen on one particular thread. No matter which thread calls `OnNext`, the delayed notification arrives on thread id 12. But this is not a thread created by the `Delay` operator. This is happening because `Delay` is using a _scheduler_. - ## Schedulers Schedulers do three things: @@ -475,7 +474,6 @@ These more specialized types offer two benefits. First, you don't necessarily ha The Rx libraries define several schedulers that virtualize time, including `HistoricalScheduler`, `TestScheduler`, `VirtualTimeScheduler`, and `VirtualTimeSchedulerBase`. We will look at this sort of scheduler in the [Testing chapter](91_TestingRx.md). - ## SubscribeOn and ObserveOn So far, I've talked about why some Rx sources need access to schedulers—this is necessary for timing-related behaviour, and also for sources that produce items as quickly as possible. But remember, schedulers control three things: @@ -616,7 +614,7 @@ This is a great fit for Rx: responding to events, potentially composing multiple Consider a WPF application that used Rx to populate an `ObservableCollection`. You could use `SubscribeOn` to ensure that the main work was not done on the UI thread, followed by `ObserveOn` to ensure you were notified back on the correct thread. If you failed to use the `ObserveOn` method, then your `OnNext` handlers would be invoked on the same thread that raised the notification. In most UI frameworks, this would cause some sort of not-supported/cross-threading exception. In this example, we subscribe to a sequence of `Customers`. I'm using `Defer` so that if `GetCustomers` does any slow initial work before returning its `IObservable`, that won't happen until we subscribe. We then use `SubscribeOn` to call that method and perform the subscription on a task pool thread. Then we ensure that as we receive `Customer` notifications, we add them to the `Customers` collection on the `Dispatcher`. -```csharp +```cs Observable .Defer(() => _customerService.GetCustomers()) .SubscribeOn(TaskPoolScheduler.Default) @@ -640,7 +638,7 @@ In a later chapter, [Testing Rx](16_TestingRx.html), we will look at how Rx impr Rx can simplify handling of concurrency, but it is not immune deadlock. Some calls (like `First`, `Last`, `Single` and `ForEach`) are blocking—they do not return until something that they are waiting for occurs. The following example shows that this makes it very easy for deadlock to occur: -```csharp +```cs var sequence = new Subject(); Console.WriteLine("Next line should lock the system."); @@ -657,7 +655,7 @@ This is an oversimplified example to illustrate the behaviour, and we would neve The next example may be a little harder to detect, but is only small step away from our first, unrealistic example. The basic idea is that we've got a subject that represents button clicks in a user interface. Event handlers representing user input are invoked by the UI framework—we just provide the framework with event handler methods, and it calls them for us whenever the event of interest, such as a button being clicked, occurs. This code calls `First` on the subject representing clicks, but it's less obvious that this might cause a problem here than it was in the preceding example: -```csharp +```cs public Window1() { InitializeComponent(); @@ -702,7 +700,7 @@ This uses `FirstAsync` which does the same job, but with a different approach. I If you do a lot of UI development, that last example might have seemed obviously wrong to you: we had code in the constructor for a window that wouldn't allow the constructor to complete until the user clicked a button in that window. The window isn't even going to appear until construction is complete so it makes no sense to wait for the user to click a button. That button's not even going to be visible on screen until after our constructor completes. Moreover, seasoned UI developers know that you don't just stop the world and wait for a specific action from the user. (Even modal dialogs, which effectively do demand a response before continuing, don't block the UI thread.) But as the next example shows, it's easy for problems to be harder to see. In this example, a button's click handler will try to get the first value from an observable sequence exposed via an interface. -```csharp +```cs public partial class Window1 : INotifyPropertyChanged { //Imagine DI here. @@ -741,7 +739,7 @@ Unlike the earlier example, this does not attempt to block progress in the const So even if we've learned to be suspicious of blocking operations such as `First`, it's possible that it's OK in this example. It's not possible to tell for certain by looking at this code alone. It all depends on what sort of an observable `GetTemperature` returns, and the manner in which it produces its items. That call to `First` will block on the UI thread until a first item becomes available, so this will produce a deadlock if the production of that first item requires access to the UI thread. Here's a slightly contrived way to create that problem: -```csharp +```cs class MyService : IMyService { public IObservable GetTemperature() @@ -831,7 +829,7 @@ I talked earlier about time-based operators, and also about the two time-based m You can use the `TimeSpan` overload like this: -```csharp +```cs var delay = TimeSpan.FromSeconds(1); Console.WriteLine("Before schedule at {0:o}", DateTime.Now); @@ -855,7 +853,7 @@ You can specify a specific point in time to schedule the task with the `DateTime Each of the overloads to `Schedule` returns an `IDisposable`, and calling `Dispose` on this will cancel the scheduled work. In the previous example, we scheduled work to be invoked in one second. We could cancel that work by disposing of the return value. -```csharp +```cs var delay = TimeSpan.FromSeconds(1); Console.WriteLine("Before schedule at {0:o}", DateTime.Now); @@ -880,7 +878,7 @@ You may be wondering how this mechanism can be any use: the work item callback n To illustrate cancellation in operation, this slightly unrealistic example runs some work as a `Task` to enable it to continue after our callback returns. It just fakes some work by performing a spin wait and adding values to the `list` argument. The key here is that create a `CancellationToken` to be able to tell the task we want it to stop, and we return an `IDisposable` that puts this token in to a cancelled state. -```csharp +```cs public IDisposable Work(IScheduler scheduler, List list) { var tokenSource = new CancellationTokenSource(); @@ -918,7 +916,7 @@ public IDisposable Work(IScheduler scheduler, List list) This code schedules the above code and allows the user to cancel the processing work by pressing Enter -```csharp +```cs var list = new List(); Console.WriteLine("Enter to quit:"); @@ -948,7 +946,7 @@ The problem here is that we have introduced explicit use of `Task` so we are inc In addition to the `IScheduler` methods, Rx defines various overloads of `Schedule` in the form of extension methods. Some of these take some strange looking delegates as parameters. Take special note of the final parameter in each of these overloads of the `Schedule` extension method. -```csharp +```cs public static IDisposable Schedule( this IScheduler scheduler, Action action) @@ -990,7 +988,7 @@ Each of these overloads take a delegate "action" that allows you to call "action This example uses the most simple recursive overload. We have an `Action` that can be called recursively. -```csharp +```cs Action work = (Action self) => { Console.WriteLine("Running"); diff --git a/content/12_LeavingIObservable.md b/content/12_LeavingIObservable.md index fa518bb..fc6bb36 100644 --- a/content/12_LeavingIObservable.md +++ b/content/12_LeavingIObservable.md @@ -8,7 +8,7 @@ An observable sequence is a useful construct, especially when we have the power Rx's compositional nature is the key to its power, but it can look like a problem when you need to integrate with a component that doesn't understand Rx. Most of the Rx library features we've looked at so far express their inputs and outputs as observables. How are you supposed to take some real world source of events and turn that into an observable? How are you supposed to do something meaningful with the output of an observable? -You've already seem some answer to these questions. The [Creating Observable Sequences chapter](03_CreatingObservableSequences.md) showed various ways to create observable sources. But when it comes to handling the items that emerge from an `IObservable`, all we've really seen is how to implement [`IObserver`](02_KeyTypes.md#iobserver), and [how to use the callback based `Suscribe`` extension methods to subscribe to an `IObservable`](02_KeyTypes.md#iobservable). +You've already seem some answer to these questions. The [Creating Observable Sequences chapter](03_CreatingObservableSequences.md) showed various ways to create observable sources. But when it comes to handling the items that emerge from an `IObservable`, all we've really seen is how to implement [`IObserver`](02_KeyTypes.md#iobserver), and [how to use the callback based `Subscribe`` extension methods to subscribe to an `IObservable`](02_KeyTypes.md#iobservable). In this chapter, we will look at the methods in Rx which allow you to leave the `IObservable` world, so you can do some useful work with the notifications that emerge from a source. @@ -91,7 +91,6 @@ However, this highlights the dangers of non-async blocking calls: although this This is why we need `ForEachAsync`. It might look like we can get the same effect through clever use of schedulers, but in practice if you need to wait for something asynchronous to happen, it's always better to use `await` than to use an approach that entails blocking the calling thread. - ## ToEnumerable The two mechanisms we've explored so far convert completion and error handling from Rx's callback mechanism to a more conventional approach enabled by `await`, but if we wanted to handle each item from the source, each still used a callback for that. But the `ToEnumerable` extension method goes a step further: it enables the entire sequence to be consumed with a conventional `foreach` loop: @@ -220,7 +219,6 @@ public static IObservable> ToDictionary>`. As with LINQ to Objects, the distinction between a dictionary and a lookup is that the `ILookup>` interface allows each key to have any number of values, whereas a dictionary maps each key to one value. - ## ToTask Although Rx provides direct support for using `await` with an `IObservable`, it can sometimes be useful to obtain a `Task` representing an `IObservable`. This is useful because some APIs expect a `Task`. You can call `ToTask()` on any `IObservable`, and this will subscribe to that observable, returning a `Task` that will complete when the task completes, producing the sequence's final output as the task's result. If the source completes without producing an element, the task will enter a faulted state, with an `InvalidOperation` exception complaining that the inputs sequence contains no elements. @@ -373,7 +371,6 @@ Now that we know how to get back into .NET events, let's take a break and rememb The set of methods we have looked at in this chapter complete the circle started in the [Creating Sequences chapter](03_CreatingObservableSequences.md). We now have the means to enter and leave Rx's world. Take care when opting in and out of the `IObservable`. It's best not to transition back and forth—having a bit of Rx-based processing, then some more conventional code, and then plumbing the results of that back into Rx can quickly make a mess of your code base, and may indicate a design flaw. Typically it is better to keep all of your Rx logic together, so you only need to integrating with the outside world twice: once for input and once for output. - ## Do Non-functional requirements of production systems often demand high availability, quality monitoring features and low lead time for defect resolution. Logging, debugging, instrumentation and journaling are common non-functional requirements that developers need to consider for production ready systems. To enable this it can often be useful to 'tap into' your Rx queries, making them deliver monitoring and diagnostic information as a side effect of their normal operation. @@ -534,5 +531,4 @@ could not sabotage While I have used words like 'evil' and 'sabotage' in these examples, it is more often than not an oversight rather than malicious intent that causes problems. The failing falls first on the programmer who designed the leaky class. Designing interfaces is hard, but we should do our best to help consumers of our code fall into [the pit of success](http://blogs.msdn.com/b/brada/archive/2003/10/02/50420.aspx) by giving them discoverable and consistent types. Types become more discoverable if we reduce their surface area to expose only the features we intend our consumers to use. In this example we reduced the type's surface area. We did so by removing the property setter and returning a simpler type via the `AsObservable` method. - TODO: swap this and the next chapter over? timing follows naturally from scheduling. \ No newline at end of file diff --git a/content/13_Timing.md b/content/13_Timing.md index ec18a62..69af6b5 100644 --- a/content/13_Timing.md +++ b/content/13_Timing.md @@ -6,7 +6,6 @@ title: Timing With event sources, timing is often important. In some cases, the only information of interest about some event might the time at which it occurred. The only way in which the core `IObservable` and `IObserver` interfaces address time is that a source can decide when it calls an observer's `OnNext` method. A subscriber knows when an event occurred because it is occurring right now. This isn't always the most convenient way in which to work with timing, so the Rx library provides some timing-related operators. We've already seen a couple of operators that offer optional time-based operation: [`Buffer`](./08_Partitioning.md#buffer) and [`Window`])(08_Partitioning#window). This chapter looks at the various operators that are all about timing. - ## Timestamp and TimeInterval As observable sequences are asynchronous it can be convenient to know timings for when elements are received. Obviously, a subscriber can always just use `DateTimeOffset.Now`, but if you want to refer to the arrival time as part of a larger query, the `Timestamp` extension method is a handy convenience method that attaches a timestamp to each element. It wraps elements from its source sequence in a light weight `Timestamped` structure. The `Timestamped` type is a struct that exposes the value of the element it wraps, and also a `DateTimeOffset` indicating when `Timestamp` operator received it. @@ -29,7 +28,7 @@ TimeStamp-->2@07/08/2023 10:04:00 +00:00 TimeStamp completed ``` -We can see that the values 0, 1 & 2 were each produced one second apart. +We can see that the values 0, 1 & 2 were each produced one second apart. Rx also offers `TimeInterval`. Instead of reporting the time at which items arrived, it reports the interval between items (or, in the case of the first element, how long it took for that to emerge after subscription). Similarly to the `Timestamp` method, elements are wrapped in a light weight structure. But whereas `Timestamped` adorned each item with the arrival time, `TimeInterval` wraps each element with the `TimeInterval` type which adds a `TimeSpan`. We can modify the previous example to use `TimeInterval`: @@ -46,11 +45,11 @@ As you can see, the output now reports the time between elements instead of the TimeStamp-->0@00:00:01.0183771 TimeStamp-->1@00:00:00.9965679 TimeStamp-->2@00:00:00.9908958 -TimeStamp completed``` +TimeStamp completed +``` As you can see from the output, the timings are not exactly one second but are pretty close. Some of this will be measurement noise in the `TimeInterval` operator, but most of this variability is likely to arise from the `Observable.Interval` class. There will always be a limit to the precision with which a scheduler can honour the timing request of it. Some scheduler introduce more variation than others—the schedulers that deliver work via a UI thread are ultimately limited by how quickly that thread's message loop responds. But even in the most favourable condition, schedulers are limited by the fact that .NET is not built for use in real-time systems (and nor are most of the operating systems Rx can be used on). So with all of the operators in this section, you should be aware that timing is always a _best effort_ affair in Rx. - ## Delay The `Delay` extension method time-shifts an entire sequence. `Delay` attempts to preserve the relative time intervals between the values. There is inevitably a limit to the precision with which it can do this—it won't recreate timing down to the nearest nanosecond. The exact precision is determined by the scheduler you use, and will typically get worse under heavy load, but it will typically reproduce timings to within a few milliseconds. @@ -179,7 +178,6 @@ If you looked at these numbers closely, you might have noticed that the interval Since the first sample is taken after the source emits five, and two thirds of the way into the gap after which it will produce six, there's a sense in which the "right" current value is something like 5.67, but `Sample` doesn't attempt any such interpolation. It just reports the last value to emerge from the source. A related consequence is that if the sampling interval is short enough that you're asking `Sample` to report values faster than they are emerging from the source, it will just repeat values. - ## Throttle The `Throttle` extension method provides a sort of protection against sequences that produce values at variable rates and sometimes too quickly. Like the `Sample` method, `Throttle` will return the last sampled value for a period of time. Unlike `Sample` though, `Throttle`'s period is a sliding window. Each time `Throttle` receives a value, the window is reset. Only once the period of time has elapsed will the last value be propagated. This means that the `Throttle` method is only useful for sequences that produce values at a variable rate. Sequences that produce values at a constant rate (like `Interval` or `Timer`) either would have all of their values suppressed if they produced values faster than the throttle period, or all of their values would be propagated if they produced values slower than the throttle period. @@ -315,5 +313,4 @@ public static IObservable Timeout( TODO: Observable.Merge reprise(has options to take schedulers too) --> - -As we've now seen, Rx provides features to manage timing in a reactive paradigm. Data can be timed, throttled, or sampled to meet your needs. Entire sequences can be shifted in time with the delay feature, and timeliness of data can be asserted with the `Timeout` operator. These simple yet powerful features further extend the developer's tool belt for querying data in motion. +As we've now seen, Rx provides features to manage timing in a reactive paradigm. Data can be timed, throttled, or sampled to meet your needs. Entire sequences can be shifted in time with the delay feature, and timeliness of data can be asserted with the `Timeout` operator. These simple yet powerful features further extend the developer's tool belt for querying data in motion. \ No newline at end of file diff --git a/content/14_ErrorHandlingOperators.md b/content/14_ErrorHandlingOperators.md index 12854ea..73164bc 100644 --- a/content/14_ErrorHandlingOperators.md +++ b/content/14_ErrorHandlingOperators.md @@ -10,7 +10,6 @@ The `IObserver` interface defines the `OnError` method so that a source can r Rx defines a `Catch` operator. The name is deliberately reminiscent of C#'s `try`/`catch` syntax because it lets you handle errors from an Rx source in a similar way to exceptions that emerge from normal execution of code. It gives you the option of swallowing an exception, wrapping it in another exception or performing some other logic. - ### Swallowing exceptions The most basic (although rarely the best) way to handle an exception is to swallow it. In C#, we could write a `try` block with an empty `catch` block. We can achieve something similar with Rx's `Catch` operator. The basic idea with swallowing exceptions is that we carry on as though nothing had happened. We can represent an exception being swallowed like this with a marble diagram. @@ -95,13 +94,11 @@ If the sequence was to terminate with an `Exception` that could not be cast to a Notice that with the overload in the preceding example, we supplied a callback. If an exception of the specified type emerges, this overload of `Catch` will pass it to our callback so that if necessary, we can decide exactly what to return based on information in the exception. If you were to decide that, having inspected the exception, you don't want to swallow it after all, you can use `Observable.Throw` to return an observable that rethrows the exception. (This is effectively the Rx equivalent to a `throw;` statement inside a C# `catch` block.) The following example uses this to swallow all IO exceptions of type IOException or any type derived from that except for `FileNotFoundException`. - ```csh IObservable result = source.Catch( tx => tx is FileNotFoundException ? Observable.Throw(tx) : Observable.Empty()); ``` - ## Finally Similar to a `finally` block in C#, Rx enables us to execute some code on completion of a sequence, regardless of whether it runs to completion naturally, or fails. The `Finally` extension method accepts an `Action` as a parameter. This `Action` will be invoked when the sequence terminates, regardless of whether `OnCompleted` or `OnError` was called. It will also invoke the action if the subscription is disposed of before it completes. @@ -200,7 +197,6 @@ public static IObservable Using( The resource will be disposed of when the sequence terminates either with `OnCompleted` or `OnError`, or when the subscription is disposed. - ## OnErrorResumeNext Just the title of this section will send a shudder down the spines of old VB developers! In Rx, there is an extension method called `OnErrorResumeNext` that has similar semantics to the VB keywords/statement that share the same name. This extension method allows the continuation of a sequence with another sequence regardless of whether the first sequence completes gracefully or due to an error. Under normal use, the two sequences would merge as below: @@ -288,7 +284,6 @@ R--0--1--2-----0--1--2--x Proper care should be taken when using the infinite repeat overload. Obviously if there is a persistent problem with your underlying sequence, you may find yourself stuck in an infinite loop. Also, take note that there is no overload that allows you to specify the type of exception to retry on. - Requirements for exception management that go beyond simple `OnError` handlers are commonplace. Rx delivers the basic exception handling operators which you can use to compose complex and robust queries. In this chapter we have covered advanced error handling and some more resource management features from Rx. We looked at the `Catch`, `Finally` and `Using` methods as well as the other methods like `OnErrorResumeNext` and `Retry`, that allow you to respond to error scenarios with something more constructive than just terminating. \ No newline at end of file From 2b77c454b113b684f301428011806c75d3d07c1d Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Thu, 10 Aug 2023 16:51:29 +0100 Subject: [PATCH 028/142] Remove old Hot and Cold chapter * Add the one bit of interesting content it had into Ch02 * Add a new Publishing Operators chapter, to discuss the few operators that didn't have a good home yet, and which were previously in the Hot and Cold chapter * Added forward refs to this new chapter in the places I was using Publish and RefCount, and also a ref to PublishLast from the LastAsync section in Ch05 --- content/02_KeyTypes.md | 18 + content/03_CreatingObservableSequences.md | 2 +- content/05_Filtering.md | 2 + content/13_Timing.md | 2 +- content/15_PublishingOperators.md | 397 +++++++++++++++++ content/90_HotAndColdObservables.md | 494 ---------------------- 6 files changed, 419 insertions(+), 496 deletions(-) create mode 100644 content/15_PublishingOperators.md delete mode 100644 content/90_HotAndColdObservables.md diff --git a/content/02_KeyTypes.md b/content/02_KeyTypes.md index f9f7910..8b16f9e 100644 --- a/content/02_KeyTypes.md +++ b/content/02_KeyTypes.md @@ -76,6 +76,24 @@ Since an `IObservable` cannot supply us with values until we subscribe, the t Not all sources are _hot_. There's nothing stopping an `IObservable` always supplying the exact same sequence of events to any subscriber no matter when the call to `Subscribe` occurs. (Imagine an `IObservable` which, instead of reporting live information, generates notifications based on recorded historical trade data.) Sources where it doesn't matter at all when you subscribe are known as _cold_ source. +Here are some sources that might be represented as hot observables: + +* Measurements from a sensor +* Price ticks from a trading exchange +* An event source that distributes events immediatly such as Azure Event Grid +* mouse movements +* timer events +* broadcasts like ESB channels or UDP network packets. + +And some examples of cold observables: + +* An observable representing the contents of a collection (such as is returned by the [`ToObservable` extension method for `IEnumerable`](03_CreatingObservableSequences.md#from-ienumerablet)) +* An observable producing a fixed range of values, such as [`Observable.Range`](03_CreatingObservableSequences.md#observablerange) produces +* An observable that generates events based on an algorithm, such as [`Observable.Generate`](03_CreatingObservableSequences.md#observablegenerate) produces +* An observable representing a factory for an asynchronous operation, as [`FromAsync`](03_CreatingObservableSequences.md#from-task) returns +* An observable of the kind typically created using [`Observable.Create`](03_CreatingObservableSequences.md#observablecreate) +* An observable representing items from a streaming event provides such as Azure Event Hub or Kafka (or any other streaming-style source which holds onto events from the past to be able to deliver events from a particular moment in the stream; so _not_ an events source in the Azure Event Grid style) + Not all sources are strictly completely _hot_ or _cold_. For example, you could imagine a slight variation on a live `IObservable` where the source always reports the most recent trade to new subscribers. Subscribers can count on immediately receiving something, and will then be kept up to date as new information arrives. The fact that new subscribers will always receive (potentially quite old) information is a _cold_-like characteristic, but it's only that first event that is _cold_—it's still likely that a brand new subscriber will have missed lots of information that would have been available to earlier subscribers, making this source more _hot_ than _cold_. There's an interesting special case in which a source of events has been designed to enable applications to receive every single event in order, exactly once. Event streaming systems such as Kafka or Azure Event Hub have this characteristic—they retain events for a while, to ensure that consumers don't miss out even if they fall behind from time to time. The standard input (_stdin_) for a process also has this characteristic: if you run a command line tool and start typing input before it is ready to process it, the operating system will hold that input in a buffer, to ensure that nothing is lost. Windows does something similar for desktop applications—each application thread gets a message queue so that if you click or type when it's not able to respond, the input will eventually be processed. We might think of these sources as _cold_-then-_host_. They're like _cold_ sources in that we won't miss anything just because it took us some time to start receiving events, but once we start retrieving the data, then we can't generally rewind back to the start. So once we're up and running they are more like _hot_ events. diff --git a/content/03_CreatingObservableSequences.md b/content/03_CreatingObservableSequences.md index 8583e37..0c55eb1 100644 --- a/content/03_CreatingObservableSequences.md +++ b/content/03_CreatingObservableSequences.md @@ -164,7 +164,7 @@ IObservable fs = .RefCount(); ``` -But this is leaping ahead. If you want to build a type that is inherently multi-subscriber-friendly, all you really need to do is keep track of all your subscribers and notify each of them in a loop. Here's a modified version of the filesystem watcher: +But this is leaping ahead. (These operators are described in [the Publishing Operators chapter](15_PublishingOperators.md).) If you want to build a type that is inherently multi-subscriber-friendly, all you really need to do is keep track of all your subscribers and notify each of them in a loop. Here's a modified version of the filesystem watcher: ```cs public class RxFsEventsMultiSubscriber : IObservable diff --git a/content/05_Filtering.md b/content/05_Filtering.md index 00952f5..faebbc7 100644 --- a/content/05_Filtering.md +++ b/content/05_Filtering.md @@ -206,6 +206,8 @@ The `FirstAsync` and `Take` operators work from the start of the sequence. What LINQ providers typically provide `Last` and `LastOrDefault`. These do almost exactly the same thing as `First` or `FirstOrDefault` except, as the name suggests, they return the final element instead of the first one. As with `First`, the nature of Rx means that unlike with LINQ providers working with data at rest, the final element might not be just sitting there waiting to be fetched. So just as Rx offers `FirstAsync` and `FirstOrDefault`, it offers `LastAsync` and `LastOrDefaultAsync`. (It does also offer `Last`, but again, as the [Blocking Versions of First/Last/Single[OrDefault]](#blocking-versions-of-firstlastsingleordefault) section discusses, this can be problematic.) +There is also [`PublishLast`](15_PublishingOperators.md#publishlast). This has similar semantics to `LastAsync` but it handles multiple subscriptions differently. Each time you subscribe to the `IObservable` that `LastAsync` returns, it will subscribe to the underlying source, but `PublishLast` makes only a single `Subscribe` call to the underlying source (which happens when you call `Connect`), and then all subscribers receive the same result. This is one of a family of operators based on the [`Multicast`](15_PublishingOperators.md#multicast) operator described in more detail in later chapters. + The distinction between these two operators is the same as with `FirstAsync` and `FirstOrDefaultAsync`. If the source completes having produced nothing, `LastAsync` reports an error, whereas `LastOrDefaultAsync` emits the default value for its element type and then completes. Reporting the final element of a sequence entails a challenge that `First` does not face. It's very easy to know when you've received the first element from a source: if the source produces an element, and it hasn't previously produced an element, then that's the first element right there. This means that operators such as `FirstAsync` can report the first element immediately. But `LastAsync` and `LastOrDefaultAsync` don't have that luxury. diff --git a/content/13_Timing.md b/content/13_Timing.md index 69af6b5..6ff3843 100644 --- a/content/13_Timing.md +++ b/content/13_Timing.md @@ -2,7 +2,7 @@ title: Timing --- -# Time-shifted sequences +# Time-based sequences With event sources, timing is often important. In some cases, the only information of interest about some event might the time at which it occurred. The only way in which the core `IObservable` and `IObserver` interfaces address time is that a source can decide when it calls an observer's `OnNext` method. A subscriber knows when an event occurred because it is occurring right now. This isn't always the most convenient way in which to work with timing, so the Rx library provides some timing-related operators. We've already seen a couple of operators that offer optional time-based operation: [`Buffer`](./08_Partitioning.md#buffer) and [`Window`])(08_Partitioning#window). This chapter looks at the various operators that are all about timing. diff --git a/content/15_PublishingOperators.md b/content/15_PublishingOperators.md new file mode 100644 index 0000000..aae909f --- /dev/null +++ b/content/15_PublishingOperators.md @@ -0,0 +1,397 @@ +--- +title: Publishing operators +--- + +# Publishing operators + +Hot sources need to be able to deliver events to multiple subscribers. While we can implement the subscriber tracking ourselves, it can be easier to write a degenerate source that works only for a single subscriber, and then to use in one of Rx's _multicast_ operators to publish it as a multi-subscriber hot source. The example in ["Representing Filesystem Events in Rx"](03_CreatingObservableSequences.md#representing-filesystem-events-in-rx) used this trick, but as you'll see in this chapter there are a few variations on the theme. + +## Multicast + +Rx offers three operators enabling us to support multiple subscribers using just a single subscription to some underlying source: [`Publish`](#publish), [`PublishLast`](#publishlast), and [`Replay`](#replay). However, all three of these are wrappers around Rx's `Multicast` operator, which provides the common mechanism at the heart of all of them. + +`Multicast` turns any `IObservable` into a `IConnectableObservable` which, as you can see, just adds a `Connect` method: + +```cs +public interface IConnectableObservable : IObservable +{ + IDisposable Connect(); +} +``` + +Since it derives from `IObservable`, you can call `Subscribe` on an `IConnectableObservable`, but it won't call `Subscribe` on the underlying source when you do that. It only calls `Subscribe` on the underlying source when you call `Connect`. So that we can see this in action, let's define a source that prints out a message each time `Subscribe` is called: + +```cs +IObservable src = Observable.Create(obs => +{ + Console.WriteLine("Create callback called"); + obs.OnNext(1); + obs.OnNext(2); + obs.OnCompleted(); + return Disposable.Empty; +}); +``` + +If this is only going to be invoked once no matter how many observers subscribe, what `IObserver` does `Multicast` pass to the source when we call `Connect`? It passes a [Subject](03_CreatingObservableSequences.md#subject). And we are required to pass in the subject as an argument to `Multicast`: + +```cs +IConnectableObservable m = src.Multicast(new Subject()); +``` + +I can now subscribe to this a few times over: + +```cs +m.Subscribe(x => Console.WriteLine($"Sub1: {x}")); +m.Subscribe(x => Console.WriteLine($"Sub2: {x}")); +m.Subscribe(x => Console.WriteLine($"Sub3: {x}")); +``` + +None of these subscribers will receive anything unless we call `Connect`: + +```cs +m.Connect(); +``` + +(**Note**: `Connect` returns an `IDisposable`. Calling `Dispose` on that unsubscribes from the underlying source.) + +This call to `Connect` causes the following output: + +```cs +Create callback called +Sub1: 1 +Sub2: 1 +Sub3: 1 +Sub1: 2 +Sub2: 2 +Sub3: 2 +``` + +As you can see, the method we passed to `Create` runs only once, confirming that `Multicast` did only subscribe once, despite us calling `Subscribe` three times over. But each item went to all three subscriptions. + +The way `Multicast` works is fairly straightforward: it lets the subject do most of the work. Whenever you call `Subscribe` on an observable returned by `Multicast`, it just calls `Subscribe` on the subject. And when you call `Connect`, it just passes the subject into the underlying source's `Subscribe`. So this code would have had the same effect: + +```cs +var s = new Subject(); + +s.Subscribe(x => Console.WriteLine($"Sub1: {x}")); +s.Subscribe(x => Console.WriteLine($"Sub2: {x}")); +s.Subscribe(x => Console.WriteLine($"Sub3: {x}")); + +src.Subscribe(s); +``` + +However, an advantage of `Multicast` is that it returns `IConnectableObservable`, and as we'll see later, some other parts of Rx know how to work with this interface. + +`Multicast` offers an overload that works in a quite different way: it is intended for scenarios where you want to write a query that uses its source observable twice. For example, we might want to get adjacent pairs of items using `Zip`: + +```cs +IObservable<(int, int)> ps = src.Zip(src.Skip(1)); +ps.Subscribe(ps => Console.WriteLine(ps)); +``` + +(Although [`Buffer`](08_Partitioning.md#buffer) might seem like a more obvious way to do this, one advantage of this `Zip` approach is that it will never give us half of a pair. When we ask `Buffer` for pairs, it will give us a single-item buffer when we reach the end, which can require extra code to work around.) + +The problem with this approach is that the source will see two subscriptions: one directly from `Zip`, and then a second one through `Skip`. If we were to run the code above, we'd see this output: + +``` +Create callback called +Create callback called +(1, 2) +``` + +Our `Create` callback ran twice. The second `Multicast` overload lets us avoid that: + +```cs +IObservable<(int, int)> ps = src.Multicast(() => new Subject(), s => s.Zip(s.Skip(1))); +ps.Subscribe(ps => Console.WriteLine(ps)); +``` + +As the output shows, this avoids the multiple subscriptions: + +```cs +Create callback called +(1, 2) +``` + +This overload of `Multicast` returns a normal `IObservable`. This means we don't need to call `Connect`. But it also means that each subscription to the resulting `IObservable` causes a subscription to the underlying source. But for the scenario it is designed for this is fine: we're just trying to avoid getting twice as many subscriptions to the underlying source. + +The remaining operators defined in this section, `Publish`, `PublishLast`, and `Replay`, are all wrappers around `Multicast`, each supplying a specific type of subject for you. + +### Publish + +The `Publish` operator calls `Multicast` with a [`Subject`](03_CreatingObservableSequences.md#subject). The effect of this is that once you have called `Connect` on the result, any items produced by the source will be delivered to all subscribers. This enables me to replace this earlier example: + +```cs +IConnectableObservable m = src.Multicast(new Subject()); +``` + +with this: + +```cs +IConnectableObservable m = src.Publish(); +``` + +These are exactly equivalent. + +Because `Subject` forwards all incoming `OnNext` calls to each of its subscribers immediately, and because it doesn't store any previously made calls, the result is a hot source. If you attach some subscribers before calling `Connect`, and then you attached more subscribers after calling `Connect`, those later subscribers will only receive events that occurred after they subscribed. This example demonstrates that: + +```cs +IConnectableObservable pticks = Observable + .Interval(TimeSpan.FromSeconds(1)) + .Take(4) + .Publish(); + +pticks.Subscribe(x => Console.WriteLine($"Sub1: {x} ({DateTime.Now})")); +pticks.Subscribe(x => Console.WriteLine($"Sub2: {x} ({DateTime.Now})")); + +pticks.Connect(); +Thread.Sleep(2500); +Console.WriteLine(); +Console.WriteLine("Adding more subscribers"); +Console.WriteLine(); + +pticks.Subscribe(x => Console.WriteLine($"Sub3: {x} ({DateTime.Now})")); +pticks.Subscribe(x => Console.WriteLine($"Sub4: {x} ({DateTime.Now})")); +``` + +The following output shows that we only see output for the Sub3 and Sub4 subscriptions for the final 2 events: + +``` +Sub1: 0 (10/08/2023 16:04:02) +Sub2: 0 (10/08/2023 16:04:02) +Sub1: 1 (10/08/2023 16:04:03) +Sub2: 1 (10/08/2023 16:04:03) + +Adding more subscribers + +Sub1: 2 (10/08/2023 16:04:04) +Sub2: 2 (10/08/2023 16:04:04) +Sub3: 2 (10/08/2023 16:04:04) +Sub4: 2 (10/08/2023 16:04:04) +Sub1: 3 (10/08/2023 16:04:05) +Sub2: 3 (10/08/2023 16:04:05) +Sub3: 3 (10/08/2023 16:04:05) +Sub4: 3 (10/08/2023 16:04:05) +``` + +As with [`Multicast`](#multicast), `Publish` offers an overload that provides per-top-level-subscription multicast. This lets us simplify the example from the end of that section from this: + +```cs +IObservable<(int, int)> ps = src.Multicast(() => new Subject(), s => s.Zip(s.Skip(1))); +ps.Subscribe(ps => Console.WriteLine(ps)); +``` + +to this: + +```cs +IObservable<(int, int)> ps = src.Publish(s => s.Zip(s.Skip(1))); +ps.Subscribe(ps => Console.WriteLine(ps)); +``` + +`Publish` offers overloads that let you specify an initial value. These use [`BehaviorSubject`](03_CreatingObservableSequences.md#behaviorsubject) instead of `Subject`. The difference here is that all subscribers will immediately receive a value as soon as they subscribe. If the underlying source hasn't yet produced an item (or if `Connect` hasn't been called, meaning we've not even subscribed to the source yet) they will receive the initial value. And if at least one item has been received from the source, any new subscribers will instantly receive the latest value the source produced, and will then go on to receive any further new values. + +### PublishLast + +The `PublishLast` operator calls `Multicast` with an [`AsyncSubject`](03_CreatingObservableSequences.md#asyncsubject). The effect of this is that the final item produced by the source will be delivered to all subscribers. You still need to call `Connect`—this determines when subscription to the underlying source occurs. But all subscribers will receive the final event regardless of when they subscribe, because `AsyncSubject` remembers the final result. We can see this in action with the following example: + +```cs +IConnectableObservable pticks = Observable + .Interval(TimeSpan.FromSeconds(0.1)) + .Take(4) + .PublishLast(); + +pticks.Subscribe(x => Console.WriteLine($"Sub1: {x} ({DateTime.Now})")); +pticks.Subscribe(x => Console.WriteLine($"Sub2: {x} ({DateTime.Now})")); + +pticks.Connect(); +Thread.Sleep(1000); +Console.WriteLine(); +Console.WriteLine("Adding more subscribers"); +Console.WriteLine(); + +pticks.Subscribe(x => Console.WriteLine($"Sub3: {x} ({DateTime.Now})")); +pticks.Subscribe(x => Console.WriteLine($"Sub4: {x} ({DateTime.Now})")); +``` + +This creates a source the produces 4 values in the space of 0.4 seconds. It attaches a couple of subscribers to the `IConnectableObservable` returned by `PublishLast` and then immediately calls `Connect`. Then it sleeps for 1 second, which gives the source time to complete. This means that those first two subscribers will receive the one and only value they will ever receive (the last value in the sequence) before that call to `Thread.Sleep` returns. But we then go on to attach two more subscribers. As the output shows, these also receive that same final event. They receive it later because they subscribed later, but the `AsyncSubject` created by `PublishLast` is just replaying the final value it received to these late subscribers. + + +### Replay + +The `Replay` operator calls `Multicast` with a [`ReplaySubject`](03_CreatingObservableSequences.md#replaysubject). The effect of this is that any subscribers attached before calling `Connect` just receive all events as the underlying source produces them, but any subscribers attached later effectively get to 'catch up', because the `ReplaySubject` remembers events it has already seen, and replays them to new subscribers. + +This example is very similar to the one used for `Publish`: + +```cs +IConnectableObservable pticks = Observable + .Interval(TimeSpan.FromSeconds(1)) + .Take(4) + .Replay(); + +pticks.Subscribe(x => Console.WriteLine($"Sub1: {x} ({DateTime.Now})")); +pticks.Subscribe(x => Console.WriteLine($"Sub2: {x} ({DateTime.Now})")); + +pticks.Connect(); +Thread.Sleep(2500); +Console.WriteLine(); +Console.WriteLine("Adding more subscribers"); +Console.WriteLine(); + +pticks.Subscribe(x => Console.WriteLine($"Sub3: {x} ({DateTime.Now})")); +pticks.Subscribe(x => Console.WriteLine($"Sub4: {x} ({DateTime.Now})")); +``` + +It creates a source that will produce items regularly for 4 seconds. It attaches two subscribers before calling `Connect`. It then waits long enough for the first two events to emerge before attaching two more subscribers. But unlike with `Publish`, those late subscribers will see the events that happened before they subscribed: + +``` +Sub1: 0 (10/08/2023 16:18:22) +Sub2: 0 (10/08/2023 16:18:22) +Sub1: 1 (10/08/2023 16:18:23) +Sub2: 1 (10/08/2023 16:18:23) + +Adding more subscribers + +Sub3: 0 (10/08/2023 16:18:24) +Sub3: 1 (10/08/2023 16:18:24) +Sub4: 0 (10/08/2023 16:18:24) +Sub4: 1 (10/08/2023 16:18:24) +Sub1: 2 (10/08/2023 16:18:24) +Sub2: 2 (10/08/2023 16:18:24) +Sub3: 2 (10/08/2023 16:18:24) +Sub4: 2 (10/08/2023 16:18:24) +Sub1: 3 (10/08/2023 16:18:25) +Sub2: 3 (10/08/2023 16:18:25) +Sub3: 3 (10/08/2023 16:18:25) +Sub4: 3 (10/08/2023 16:18:25) +``` + +They receive them late of course, because they subscribed late. So we see a quick flurry of events reported as `Sub3` and `Sub4` catch up, but once they have caught up, they then receive all further events immediately. + +The `ReplaySubject` that enables this behaviour will consume memory to store events. As you may recall, this subject type can be configured to store only a limited number of events, or not to hold onto events older than some specified time limit. The `Replay` operator provides overloads that enable you to configure these kinds of limits. + +`Replay` also supports the per-subscription-multicast model I showed for the other `Multicast`-based operators in this section. + + +## RefCount + +We saw in the preceding section that `Multicast` (and also its various wrappers) supports two usage models: + +* returning an `IConnectableObservable` to allow top-level control of when subscription to the underlying source occurs +* returning an ordinary `IObservable`, enabling us to avoid unnecessary multiple subscriptions to the source when using a query that uses the source in multiple places (e.g., `s.Zip(s.Take(1))`), but still making one `Subscribe` call to the underlying source for each top-level `Subscribe` + +`RefCount` offers a slightly different model. It enables subscription to the underlying source to be triggered by an ordinary `Subscribe`, but can still make just a single call to the underlying source. To be able to observe this, I'm going to use a modified version of the source that reports when subscription occurs: + +```cs +IObservable src = Observable.Create(async obs => +{ + Console.WriteLine("Create callback called"); + obs.OnNext(1); + await Task.Delay(250).ConfigureAwait(false); + obs.OnNext(2); + await Task.Delay(250).ConfigureAwait(false); + obs.OnNext(3); + await Task.Delay(250).ConfigureAwait(false); + obs.OnNext(4); + await Task.Delay(100).ConfigureAwait(false); + obs.OnCompleted(); +}); +``` + +Unlike the earlier example, this uses `async` and delays between each `OnNext` to ensure that the main thread has time to set up multiple subscriptions before all the items are produced. We can then wrap this with `RefCount`: + +```cs +IObservable rc = src + .Publish() + .RefCount(); +``` + +Notice that I have to call `Publish` first. This is because `RefCount` expects an `IConnectableObservable`. It wants to start the source only when something first subscribes. It will call `Connect` as soon as there's at least one subscriber. Let's try it: + +```cs +rc.Subscribe(x => Console.WriteLine($"Sub1: {x} ({DateTime.Now})")); +rc.Subscribe(x => Console.WriteLine($"Sub2: {x} ({DateTime.Now})")); +Thread.Sleep(600); +Console.WriteLine(); +Console.WriteLine("Adding more subscribers"); +Console.WriteLine(); +rc.Subscribe(x => Console.WriteLine($"Sub3: {x} ({DateTime.Now})")); +rc.Subscribe(x => Console.WriteLine($"Sub4: {x} ({DateTime.Now})")); +``` + +Here's the output: + +``` +Create callback called +Sub1: 1 (10/08/2023 16:36:44) +Sub1: 2 (10/08/2023 16:36:45) +Sub2: 2 (10/08/2023 16:36:45) +Sub1: 3 (10/08/2023 16:36:45) +Sub2: 3 (10/08/2023 16:36:45) + +Adding more subscribers + +Sub1: 4 (10/08/2023 16:36:45) +Sub2: 4 (10/08/2023 16:36:45) +Sub3: 4 (10/08/2023 16:36:45) +Sub4: 4 (10/08/2023 16:36:45) +``` + +Notice that only `Sub1` receives the very first event. That's because the callback passed to `Create` produces that immediately. Only when it invokes its first `await` does it return to the caller, enabling us to attach the second subscriber. That has already missed the first event, but as you can see it receives the 2nd and 3rd. The code waits long enough for the first three events to occur before attaching two more subscribers, and you can see that all four subscribers receive the final event. + +As the name suggests `RefCount` counts the number of active subscribers. If this ever drops to 0, it will call `Dispose` on the object that `Connect` returned, shutting down the subscription. If further subscribers attach, it will restart. This example shows that: + +```cs +IDisposable s1 = rc.Subscribe(x => Console.WriteLine($"Sub1: {x} ({DateTime.Now})")); +IDisposable s2 = rc.Subscribe(x => Console.WriteLine($"Sub2: {x} ({DateTime.Now})")); +Thread.Sleep(600); + +Console.WriteLine(); +Console.WriteLine("Removing subscribers"); +s1.Dispose(); +s2.Dispose(); +Thread.Sleep(600); +Console.WriteLine(); + +Console.WriteLine(); +Console.WriteLine("Adding more subscribers"); +Console.WriteLine(); +rc.Subscribe(x => Console.WriteLine($"Sub3: {x} ({DateTime.Now})")); +rc.Subscribe(x => Console.WriteLine($"Sub4: {x} ({DateTime.Now})")); +``` + +We get this output: + +``` +Create callback called +Sub1: 1 (10/08/2023 16:40:39) +Sub1: 2 (10/08/2023 16:40:39) +Sub2: 2 (10/08/2023 16:40:39) +Sub1: 3 (10/08/2023 16:40:39) +Sub2: 3 (10/08/2023 16:40:39) + +Removing subscribers + + +Adding more subscribers + +Create callback called +Sub3: 1 (10/08/2023 16:40:40) +Sub3: 2 (10/08/2023 16:40:40) +Sub4: 2 (10/08/2023 16:40:40) +Sub3: 3 (10/08/2023 16:40:41) +Sub4: 3 (10/08/2023 16:40:41) +Sub3: 4 (10/08/2023 16:40:41) +Sub4: 4 (10/08/2023 16:40:41) +``` + +This time, the `Create` callback ran twice. That's because the number of active subscribers dropped to 0, so `RefCount` called `Dispose` to shut things down. When new subscribers came along, it called `Connect` again to start things back up. There are some overloads enabling you to specify a `disconnectDelay`—this tells it to wait for the specified time after the number of subscribers drops to zero before disconnecting, to see if any new subscribers come along. But it will still disconnect if the specified time elapses. If that's not what you want, the next operator might be for you. + + +## AutoConnect + +The `AutoConnect` operator behaves in much the same way as `RefCount`, in that it calls `Connect` on its underlying `IConnectableObservable` when the first subscriber subscribers. The difference is that it doesn't attempt to detect when the number of active subscribers has dropped to zero: once it connects, it remains connected indefinitely, even if it has no subscribers. + +Although `AutoConnect` can be convenient, you need to be a little careful, because it can cause leaks: it will never disconnect automatically. It is still possible to tear down the connection it creates: `AutoConnect` accepts an optional argument of type `Action`. It invokes this when it first connects to the source, passing you the `IDisposable` returned by the source's `Connect` method. You can shut it down by calling `Dispose`. + + +The operators in this chapter can be useful whenever you have a source that is not well suited do dealing with multiple subscribers. It provides various ways to attach multiple subscribers while only triggering a single `Subscribe` to the underlying source. \ No newline at end of file diff --git a/content/90_HotAndColdObservables.md b/content/90_HotAndColdObservables.md deleted file mode 100644 index 888ace6..0000000 --- a/content/90_HotAndColdObservables.md +++ /dev/null @@ -1,494 +0,0 @@ ---- -title : Hot and Cold observables ---- - - - - -# Hot and Cold observables - -In this chapter, we will look at how to describe and handle two styles of observable sequences: - -1. Sequences that are passive and start producing notifications on request (when subscribed to), and -2. Sequences that are active and produce notifications regardless of subscriptions. - -In this sense, passive sequences are `Cold` and active are described as being `Hot`. You can draw some similarities between implementations of the `IObservable` interface and implementations of the `IEnumerable`interface with regards to hot and cold. With `IEnumerable`, you could have an on-demand collection via the yield return syntax, or you could have an eagerly-evaluated collection by returning a populated `List`. We can compare the two styles by attempting to read just the first value from a sequence. We can do this with a method like this: - -```csharp -public void ReadFirstValue(IEnumerable list) -{ - foreach (var i in list) - { - Console.WriteLine("Read out first value of {0}", i); - break; - } -} -``` - -As an alternative to the `break` statement, we could apply a `Take(1)` to the `list`. If we then apply this to an eagerly-evaluated sequence, such as a list, we see the entire list is first constructed, and then returned. - -```csharp -public static void Main() -{ - ReadFirstValue(EagerEvaluation()); -} - -public IEnumerable EagerEvaluation() -{ - var result = new List(); - Console.WriteLine("About to return 1"); - result.Add(1); - //code below is executed but not used. - Console.WriteLine("About to return 2"); - result.Add(2); - return result; -} -``` - -Output: - -``` -About to return 1 -About to return 2 -Read out first value of 1 -``` - -We now apply the same code to a lazily-evaluated sequence. - -```csharp -public IEnumerable LazyEvaluation() -{ - Console.WriteLine("About to return 1"); - yield return 1; - - // Execution stops here in this example - Console.WriteLine("About to return 2"); - yield return 2; -} -``` - -Output: - -``` -About to return 1 -Read out first value of 1 -``` - -The lazily-evaluated sequence did not have to yield any more values than required. Lazy evaluation is good for on-demand queries whereas eager evaluation is good for sharing sequences so as to avoid re-evaluating multiple times. Implementations of `IObservable` can exhibit similar variations in style. - -Examples of hot observables that could publish regardless of whether there are any subscribers would be: - -- mouse movements -- timer events -- broadcasts like ESB channels or UDP network packets. -- price ticks from a trading exchange - -Some examples of cold observables would be: - -- asynchronous request (e.g. when using `Observable.FromAsyncPattern`) -- whenever `Observable.Create` is used -- subscriptions to queues -* on-demand sequences - -## Cold observables - -In this example, we fetch a list of products from a database. In our implementation, we choose to return an `IObservable` and, as we get the results, we publish them until we have the full list, then complete the sequence. - -```csharp -private const string connectionString = @"Data Source=.\SQLSERVER;Initial Catalog=AdventureWorksLT2008;Integrated Security=SSPI;" - -private static IObservable GetProducts() -{ - return Observable.Create( - o => - { - using(var conn = new SqlConnection(connectionString)) - using (var cmd = new SqlCommand("Select Name FROM SalesLT.ProductModel", conn)) - { - conn.Open(); - SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection); - while (reader.Read()) - { - o.OnNext(reader.GetString(0)); - } - o.OnCompleted(); - return Disposable.Create(()=>Console.WriteLine("--Disposed--")); - } - }); -} -``` - -This code is just like many existing data access layers that return an `IEnumerable`, however it would be much easier with Rx to access this in an asynchronous manner (using [SubscribeOn and ObserveOn](15_SchedulingAndThreading.html#SubscribeOnObserveOn)). This example of a data access layer is lazily evaluated and provides no caching. Each time the method is used, we reconnect to the database. This is typical of cold observables; calling the method does nothing. Subscribing to the returned `IObservable` will however invoke the create delegate which connects to the database. - -Here we have a consumer of our above code, but it explicitly only wants up to three values (the full set has 128 values). This code illustrates that the `Take(3)` expression will restrict what the consumer receives but `GetProducts()` method will still publish _all_ of the values. - -```csharp -public void ColdSample() -{ - var products = GetProducts().Take(3); - products.Subscribe(Console.WriteLine); - - Console.ReadLine(); -} -``` - -The `GetProducts()` code above is a pretty naive example, as it lacks the ability to cancel at any time. This means all values are read even though only three were requested. In the later chapter on [scheduling](15_SchedulingAndThreading.html), we cover examples on how to provide cancellation correctly. - -## Hot observables - -In our example above, the database was not accessed until the consumer of the `GetProducts()` method subscribed to the return value. Subsequent or even parallel calls to `GetProducts()` would return independent observable sequences and would each make their own independent calls to the database. By contrast, a hot observable is an observable sequence that is producing notifications even if there are no subscribers. The classic cases of hot observables are UI Events and Subjects. For example, if the mouse moves then the `MouseMove` event will be raised. If there are no event handlers registered for the event, then nothing happens. If, on the other hand, we create a `Subject`, we can inject values into it using `OnNext`, regardless of whether there are observers subscribed to the subject or not. - -Some observable sequences can appear to be hot when they are in fact cold. A couple of examples that surprise many is `Observable.Interval` and `Observable.Timer` (though it should not come as a shock to attentive readers of the [Creating observable sequences](04_CreatingObservableSequences.html#Unfold) chapter). In the example below, we subscribe twice to the same instance, created via the `Interval` factory method. The delay between the two subscriptions should demonstrate that while they are subscribed to the same observable instance, the values each subscription receives are independent, i.e. `Interval` is cold. - -```csharp -public void SimpleColdSample() -{ - var period = TimeSpan.FromSeconds(1); - var observable = Observable.Interval(period); - - observable.Subscribe(i => Console.WriteLine("first subscription : {0}", i)); - - Thread.Sleep(period); - - observable.Subscribe(i => Console.WriteLine("second subscription : {0}", i)); - - Console.ReadKey(); -} -``` - -Output: - -``` -first subscription : 0 -first subscription : 1 -second subscription : 0 -first subscription : 2 -second subscription : 1 -first subscription : 3 -second subscription : 2 -``` - -## Publish and Connect - -If we want to be able to share the actual data values and not just the observable instance, we can use the `Publish()` extension method. This will return an `IConnectableObservable`, which extends `IObservable` by adding a single `Connect()` method. By using the `Publish()` then `Connect()` method, we can get this sharing functionality. - -```csharp -var period = TimeSpan.FromSeconds(1); -var observable = Observable.Interval(period).Publish(); - -observable.Connect(); -observable.Subscribe(i => Console.WriteLine("first subscription : {0}", i)); - -Thread.Sleep(period); - -observable.Subscribe(i => Console.WriteLine("second subscription : {0}", i)); -``` - -Output: - -``` -first subscription : 0 -first subscription : 1 -second subscription : 1 -first subscription : 2 -second subscription : 2 -``` - -In the example above, the `observable` variable is an `IConnectableObservable`, and by calling `Connect()` it will subscribe to the underlying (the `Observable.Interval`). In this case, we are quick enough to subscribe before the first item is published, but only on the first subscription. The second subscription subscribes late and misses the first publication. We could move the invocation of the `Connect()` method until after all subscriptions have been made. That way, even with the call to `Thread.Sleep` we will not really subscribe to the underlying until after both subscriptions are made. This would be done as follows: - -```csharp -var period = TimeSpan.FromSeconds(1); -var observable = Observable.Interval(period).Publish(); - -observable.Subscribe(i => Console.WriteLine("first subscription : {0}", i)); - -Thread.Sleep(period); - -observable.Subscribe(i => Console.WriteLine("second subscription : {0}", i)); -observable.Connect(); -``` - -``` -first subscription : 0 -second subscription : 0 -first subscription : 1 -second subscription : 1 -first subscription : 2 -second subscription : 2 -``` - -As you can imagine, this is quite useful whenever an application needs to share sequences of data. In a financial trading application, if you wanted to consume a price stream for a certain asset in more than one place, you would want to try to reuse a single, common stream and avoid making another subscription to the server providing that data. In a social media application, many widgets may need to be notified whenever someone connects. `Publish` and `Connect` are perfect solutions for this. - -### Disposal of connections and subscriptions - -A point of interest is how disposal is performed. Indeed, we have not covered yet the fact that `Connect` returns an `IDisposable`. By disposing of the 'connection', you can turn the sequence on and off (`Connect()` to toggle it on, disposing toggles it off). In this example, we see that the sequence can be connected and disconnected multiple times. - -```csharp -var period = TimeSpan.FromSeconds(1); -var observable = Observable.Interval(period).Publish(); - -observable.Subscribe(i => Console.WriteLine("subscription : {0}", i)); - -var exit = false; - -while (!exit) -{ - Console.WriteLine("Press enter to connect, esc to exit."); - var key = Console.ReadKey(true); - - if(key.Key == ConsoleKey.Enter) - { - var connection = observable.Connect(); //--Connects here-- - Console.WriteLine("Press any key to dispose of connection."); - Console.ReadKey(); - connection.Dispose(); //--Disconnects here-- - } - - if(key.Key == ConsoleKey.Escape) - { - exit = true; - } -} -``` - -Output: - -``` -Press enter to connect, esc to exit. -Press any key to dispose of connection. -subscription : 0 -subscription : 1 -subscription : 2 -Press enter to connect, esc to exit. -Press any key to dispose of connection. -subscription : 0 -subscription : 1 -subscription : 2 -Press enter to connect, esc to exit. -``` - -Let us finally consider automatic disposal of a connection. We want a single sequence to be shared between subscriptions, as per the price stream example mentioned above. We also want to only have the sequence running hot if there are any subscribers. It seems therefore, not only obvious that there should be a mechanism for automatically connecting (once a subscription has been made), but also a mechanism for disconnecting (once there are no more subscriptions) from a sequence. First let us look at what happens to a sequence when we connect with no subscribers, and then later unsubscribe: - -```csharp -var period = TimeSpan.FromSeconds(1); -var observable = Observable.Interval(period) - .Do(l => Console.WriteLine("Publishing {0}", l)) //Side effect to show it is running - .Publish(); -observable.Connect(); - -Console.WriteLine("Press any key to subscribe"); -Console.ReadKey(); - -var subscription = observable.Subscribe(i => Console.WriteLine("subscription : {0}", i)); - -Console.WriteLine("Press any key to unsubscribe."); -Console.ReadKey(); - -subscription.Dispose(); - -Console.WriteLine("Press any key to exit."); -Console.ReadKey(); -``` - -Output: - -``` -Press any key to subscribe -Publishing 0 -Publishing 1 -Press any key to unsubscribe. -Publishing 2 -subscription : 2 -Publishing 3 -subscription : 3 -Press any key to exit. -Publishing 4 -Publishing 5 -``` - -A few things to note here: - - 1. I use the `Do` extension method to create side effects on the sequence (i.e. write to the console). -This allows us to see when the sequence is actually connected. - 2. We connect first and then subscribe, which means that we can publish without any live subscriptions i.e. make the sequence hot. - 3. We dispose of our subscription but do not dispose of the connection, which means the sequence will still be running. - -### RefCount - -Let us modify that last example by replacing uses of `Connnect()` by the extension method `RefCount`. This will "magically" implement our requirements for automatic disposal and lazy connection. `RefCount` will take an `IConnectableObservable` and turn it back into an `IObservable` while automatically implementing the "connect" and "disconnect" behavior we are looking for. - -```csharp -var period = TimeSpan.FromSeconds(1); -var observable = Observable.Interval(period) - .Do(l => Console.WriteLine("Publishing {0}", l)) //side effect to show it is running - .Publish() - .RefCount(); - -// observable.Connect(); Use RefCount instead now - -Console.WriteLine("Press any key to subscribe"); -Console.ReadKey(); - -var subscription = observable.Subscribe(i => Console.WriteLine("subscription : {0}", i)); - -Console.WriteLine("Press any key to unsubscribe."); -Console.ReadKey(); - -subscription.Dispose(); - -Console.WriteLine("Press any key to exit."); -Console.ReadKey(); -``` - -Output: - -``` -Press any key to subscribe -Press any key to unsubscribe. -Publishing 0 -subscription : 0 -Publishing 1 -subscription : 1 -Publishing 2 -subscription : 2 -Press any key to exit. -``` - -The `Publish`/`RefCount` pair is extremely useful for taking a cold observable and sharing it as a hot observable sequence for subsequent observers. `RefCount()` also allows us to avoid a race condition. In the example above, we subscribed to the sequence before a connection was established. This is not always possible, especially if we are exposing the sequence from a method. By using the `RefCount` method we can mitigate the subscribe/connect race condition because of the auto-connect behavior. - -##Other connectable observables - -The `Connect` method is not the only method that returns `IConnectableObservable` instances. The ability to connect or defer an operator's functionality is useful in other areas too. - -### PublishLast - -The `PublishLast()` method is effectively a non-blocking `Last()` call. You can consider it similar to an `AsyncSubject` wrapping your target sequence. You get equivalent semantics to `AsyncSubject` where only the last value is published, and only once the sequence completes. - -```csharp -var period = TimeSpan.FromSeconds(1); -var observable = Observable.Interval(period) - .Take(5) - .Do(l => Console.WriteLine("Publishing {0}", l)) //side effect to show it is running - .PublishLast(); - -observable.Connect(); - -Console.WriteLine("Press any key to subscribe"); -Console.ReadKey(); - -var subscription = observable.Subscribe(i => Console.WriteLine("subscription : {0}", i)); - -Console.WriteLine("Press any key to unsubscribe."); -Console.ReadKey(); - -subscription.Dispose(); - -Console.WriteLine("Press any key to exit."); -Console.ReadKey(); -``` - -Output: - -``` -Press any key to subscribe -Publishing 0 -Publishing 1 -Press any key to unsubscribe. -Publishing 2 -Publishing 3 -Publishing 4 -subscription : 4 -Press any key to exit. -``` - -### Replay - -The `Replay` extension method allows you take an existing observable sequence and give it 'replay' semantics as per `ReplaySubject`. As a reminder, the `ReplaySubject` will cache all values so that any late subscribers will also get all of the values. In this example, two subscriptions are made on time, and then a third subscription can be made after the sequence completes. Even though the third subscription is made after the underlying sequence has completed, we can still get all of the values. - -```csharp -var period = TimeSpan.FromSeconds(1); -var hot = Observable.Interval(period) - .Take(3) - .Publish(); - -hot.Connect(); - -Thread.Sleep(period); //Run hot and ensure a value is lost. - -var observable = hot.Replay(); - -observable.Connect(); - -observable.Subscribe(i => Console.WriteLine("first subscription : {0}", i)); - -Thread.Sleep(period); - -observable.Subscribe(i => Console.WriteLine("second subscription : {0}", i)); - -Console.ReadKey(); - -observable.Subscribe(i => Console.WriteLine("third subscription : {0}", i)); - -Console.ReadKey(); -``` - -Output: - -``` -first subscription : 1 -second subscription : 1 -first subscription : 2 -second subscription : 2 -third subscription : 1 -third subscription : 2 -``` - -The `Replay` extension method has several overloads that match the `ReplaySubject` constructor overloads; you are able to specify the buffer size by count or by time. - -### Multicast - -The `PublishLast` and `Replay` methods effectively apply `AsyncSubject` and `ReplaySubject` functionality to the underlying observable sequence. We could attempt to build a crude implementation ourselves. - -```csharp -var period = TimeSpan.FromSeconds(1); - -// var observable = Observable.Interval(period).Publish(); -var observable = Observable.Interval(period); -var shared = new Subject(); - -shared.Subscribe(i => Console.WriteLine("first subscription : {0}", i)); -observable.Subscribe(shared); //'Connect' the observable. - -Thread.Sleep(period); -Thread.Sleep(period); - -shared.Subscribe(i => Console.WriteLine("second subscription : {0}", i)); -``` - -Output: - -``` -first subscription : 0 -first subscription : 1 -second subscription : 1 -first subscription : 2 -second subscription : 2 -``` - -The Rx library supplies us with a great method to do this well though. You can apply subject behavior via the `Multicast` extension method. This allows you to share or "multicast" an observable sequence with the behavior of a specific subject. For example - - * `.Publish()` = `.Multicast(new Subject)` - * `.PublishLast()` = `.Multicast(new AsyncSubject)` - * `.Replay()` = `.Multicast(new ReplaySubject)` - -Hot and cold observables are two different styles of sharing an observable sequence. Both have equally valid applications but behave in different ways. Cold observables allow you to lazily evaluate an observable sequence independently for each subscriber. Hot observables allow you to share notifications by multicasting your sequence, even if there are no subscribers. The use of `RefCount` allows you to have lazily-evaluated, multicast observable sequences, coupled with eager disposal semantics once the last subscription is disposed. - - \ No newline at end of file From 1d07cb4d90093225a0935a60cd2c79618ffdcf70 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Fri, 11 Aug 2023 07:23:36 +0100 Subject: [PATCH 029/142] Fix double closing backtick --- content/12_LeavingIObservable.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/12_LeavingIObservable.md b/content/12_LeavingIObservable.md index fc6bb36..151d8e1 100644 --- a/content/12_LeavingIObservable.md +++ b/content/12_LeavingIObservable.md @@ -8,7 +8,7 @@ An observable sequence is a useful construct, especially when we have the power Rx's compositional nature is the key to its power, but it can look like a problem when you need to integrate with a component that doesn't understand Rx. Most of the Rx library features we've looked at so far express their inputs and outputs as observables. How are you supposed to take some real world source of events and turn that into an observable? How are you supposed to do something meaningful with the output of an observable? -You've already seem some answer to these questions. The [Creating Observable Sequences chapter](03_CreatingObservableSequences.md) showed various ways to create observable sources. But when it comes to handling the items that emerge from an `IObservable`, all we've really seen is how to implement [`IObserver`](02_KeyTypes.md#iobserver), and [how to use the callback based `Subscribe`` extension methods to subscribe to an `IObservable`](02_KeyTypes.md#iobservable). +You've already seen some answer to these questions. The [Creating Observable Sequences chapter](03_CreatingObservableSequences.md) showed various ways to create observable sources. But when it comes to handling the items that emerge from an `IObservable`, all we've really seen is how to implement [`IObserver`](02_KeyTypes.md#iobserver), and [how to use the callback based `Subscribe` extension methods to subscribe to an `IObservable`](02_KeyTypes.md#iobservable). In this chapter, we will look at the methods in Rx which allow you to leave the `IObservable` world, so you can do some useful work with the notifications that emerge from a source. From 7c562b097fa9cca3f039feef8d9f360a1f385ea8 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Fri, 11 Aug 2023 07:24:00 +0100 Subject: [PATCH 030/142] Change to code fence for stack trace Turns out the book rendering doesn't like deeply nested bullet lists --- content/02_KeyTypes.md | 8 +++++--- content/11_SchedulingAndThreading.md | 12 +++++++----- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/content/02_KeyTypes.md b/content/02_KeyTypes.md index 8b16f9e..89b52df 100644 --- a/content/02_KeyTypes.md +++ b/content/02_KeyTypes.md @@ -473,9 +473,11 @@ The problem is in the `GoUntilStopped.Stop` method. This calls `OnCompleted` but This can be a surprisingly tricky problem to solve. Suppose `GoUntilStopped` _did_ detect that there was a call in progress to `OnNext`. What then? In the multithreaded case, we could have solved this by using `lock` or some other synchronization primitive to ensure that calls into the observer happened one at at time, but that won't work here: the call to `Stop` has happened on _the same thread_ that called `OnNext`. The call stack will look something like this at the moment where `Stop` has been called and it wants to call `OnCompleted`: -* `GoUntilStopped.Go` - * `MyObserver.OnNext` - * `GoUntilStopped.Stop` +``` +`GoUntilStopped.Go` + `MyObserver.OnNext` + `GoUntilStopped.Stop` +``` Our `GoUntilStopped.Stop` method needs to wait for `OnNext` to return before calling `OnCompleted`. But notice that the `OnNext` method can't return until our `Stop` method returns. We've managed to create a deadlock with single-threaded code! diff --git a/content/11_SchedulingAndThreading.md b/content/11_SchedulingAndThreading.md index e85b3dc..7d00097 100644 --- a/content/11_SchedulingAndThreading.md +++ b/content/11_SchedulingAndThreading.md @@ -34,11 +34,13 @@ So when `source` decides to produce an item, it will invoke the `Where` operator So for the source notifications that make it all the way through to that `Console.WriteLine` in the callback passed to subscribe, we end up with a lot of nested calls on the stack: -* `source` calls: - * `Where` observer, which calls: - * `Buffer` observer, which calls: - * `Take` observer, which calls: - * `Subscribe` observer, which calls our lambda +``` +`source` calls: + `Where` observer, which calls: + `Buffer` observer, which calls: + `Take` observer, which calls: + `Subscribe` observer, which calls our lambda +``` This is all happening on one thread. Most Rx operators don't have any one particular thread that they call home. They just do their work on whatever thread the call comes in on. This makes Rx pretty efficient—passing data from one operator to the next merely involves a method call, and those are pretty fast. (In fact, there are typically a few more layers. Rx tends to add a few wrappers to handle errors and early unsubscription. So the call stack will look a bit more complex than what I've just shown. But it's still typically all just method calls.) From c1067c567278de497e5937121a40e8a7ebe2fb87 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Fri, 11 Aug 2023 07:34:34 +0100 Subject: [PATCH 031/142] Add line breaks to AIS output to placate pandoc --- content/08_Partitioning.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/content/08_Partitioning.md b/content/08_Partitioning.md index 4796d40..28cc4df 100644 --- a/content/08_Partitioning.md +++ b/content/08_Partitioning.md @@ -304,9 +304,12 @@ IDisposable sub = shipStatusChanges.Subscribe(m => Console.WriteLine( As the output shows, we can now report the previous state as well as the state just entered: ``` -Ship 259664000 changed status from UnderwayUsingEngine to Moored at 30/06/2023 13:36:39 +00:00 -Ship 257139000 changed status from AtAnchor to UnderwayUsingEngine at 30/06/2023 13:38:39 +00:00 -Ship 257798800 changed status from UnderwayUsingEngine to Moored at 30/06/2023 13:38:39 +00:00 +Ship 259664000 changed status from UnderwayUsingEngine to Moored at 30/06/2023 + 13:36:39 +00:00 +Ship 257139000 changed status from AtAnchor to UnderwayUsingEngine at 30/06/20 +23 13:38:39 +00:00 +Ship 257798800 changed status from UnderwayUsingEngine to Moored at 30/06/2023 + 13:38:39 +00:00 ``` This change enabled us to remove the `Skip`—the earlier example had that because we can't tell whether the first message we receive from any particular ship after startup represents a change. But since we're telling `Buffer` we want pairs of messages, it won't give us anything for any single ship until it has seen messages with two different statuses. From 13bc5646d53c7a8621bb940e0867c3c04571e290 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Fri, 11 Aug 2023 08:01:43 +0100 Subject: [PATCH 032/142] Minor clarification in disposal description --- content/02_KeyTypes.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/content/02_KeyTypes.md b/content/02_KeyTypes.md index 89b52df..c53adbd 100644 --- a/content/02_KeyTypes.md +++ b/content/02_KeyTypes.md @@ -545,12 +545,10 @@ But assuming that your observer wasn't already in the middle of an `OnNext` call As it happens, Rx has a preference for the first option. If you're using an `IObservable` implemented by the `System.Reactive` library (e.g., one returned by a LINQ operator) it is highly likely to have this characteristic. This is partly to avoid tricky situations in which observers try to do things to their sources inside their notification callbacks—re-entrancy tends to be awkward to deal with, and Rx avoids ever having to deal with this particular form of re-entrancy by ensuring that it has already stopped delivering notifications to the observer before it begins the work of shutting down a subscription. -This sometimes catches people out. If you need to be able to cancel some process that you are observing but you need to be able to observe everything it does up until the point that it stops, then you can't use unsubscription as the shutdown mechanism. As soon as you've called `Dispose`, the `IObservable` that returned that `IDisposable` is no longer under any obligation to tell you anything. This can be frustrating, because the `IDisposable` returned by `Subscribe` can sometimes seem like such a natural and easy way to shut something down. But basic truth is this: once you've initiated unsubscription, you can't rely on getting any further notifications associated with that subscription. You _might_ receive some—the source is allowed to do that. But you can't rely on it—the source is also allowed to silence itself immediately, and that's what most Rx-implemented sources will do. +This sometimes catches people out. If you need to be able to cancel some process that you are observing but you need to be able to observe everything it does up until the point that it stops, then you can't use unsubscription as the shutdown mechanism. As soon as you've called `Dispose`, the `IObservable` that returned that `IDisposable` is no longer under any obligation to tell you anything. This can be frustrating, because the `IDisposable` returned by `Subscribe` can sometimes seem like such a natural and easy way to shut something down. But basic truth is this: once you've initiated unsubscription, you can't rely on getting any further notifications associated with that subscription. You _might_ receive some—the source is allowed to carry on supplying items until the call to `Dispose` returns. But you can't rely on it—the source is also allowed to silence itself immediately, and that's what most Rx-implemented sources will do. One subtle consequence of this is that if an observable source reports an error after a subscriber has unsubscribed, that error might be lost. A source might call `OnError` on its observer, but if that's a wrapper provided by Rx relating to a subscription that has already been disposed, it just ignores the exception. So it's best to think of early unsubscription as inherently messy, a bit like aborting a thread: it can be done but information can be lost, and there are race conditions that will disrupt normal exception handling. -TODO: write a test for this. I want to check whether there any scenarios in which we get an unhandled exception report. - In short, if you unsubscribe, then a source is not obliged to tell you when things stop, and in most cases it definitely won't tell you. ### Subscription Lifetime and Composition From 4ed22318fb8217cc6c317bcc93f3c5744a9bac36 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Fri, 11 Aug 2023 08:01:55 +0100 Subject: [PATCH 033/142] Add Observable.Defer section --- content/03_CreatingObservableSequences.md | 71 +++++++++++++++++++++++ content/04_Part2.md | 2 - 2 files changed, 71 insertions(+), 2 deletions(-) diff --git a/content/03_CreatingObservableSequences.md b/content/03_CreatingObservableSequences.md index 0c55eb1..bb9c2c4 100644 --- a/content/03_CreatingObservableSequences.md +++ b/content/03_CreatingObservableSequences.md @@ -518,6 +518,77 @@ public static IObservable Throws(Exception exception) You can see that `Observable.Create` provides the power to build our own factory methods if we wish. +### Observable.Defer + +One very useful aspect of `Observable.Create` is that it provides a place to put code that should run only when subscription occurs. Often, libraries will make `IObservable` properties available that won't necessarily be used by all applications, so it can be useful to defer the work involved until you know you will really need it. This deferred initialization is inherent to how `Observable.Create` works, but what if the nature of our source means that `Observable.Create` is not a good fit? How can we perform deferred initialization in that case? Rx providers `Observable.Defer` for this purpose. + +I've already used `Defer` once. The `ObserveFileSystem` method returned an `IObservable` reporting changes in a folder. It was not a good candidate for `Observable.Create` because it provided all the notifications we wanted as .NET events, so it made sense to use Rx's event adaptation features. But we still wanted to defer the creation of the `FileSystemWatcher` until the moment of subscription, which is why that example used `Observable.Defer`. + +`Observable.Defer` takes a callback that returns an `IObservable`, and `Defer` wraps this with an `IObservable` that invokes that callback upon subscription. To show the effect, I'm first going to show an example that does not use `Defer`: + +```cs +static IObservable WithoutDeferal() +{ + Console.WriteLine("Doing some startup work..."); + return Observable.Range(1, 3); +} + +Console.WriteLine("Calling factory method"); +IObservable s = WithoutDeferal(); + +Console.WriteLine("First subscription"); +s.Subscribe(Console.WriteLine); + +Console.WriteLine("Second subscription"); +s.Subscribe(Console.WriteLine); +``` + +This produces the following output: + +``` +Calling factory method +Doing some startup work... +First subscription +1 +2 +3 +Second subscription +1 +2 +3 +``` + +As you can see, the `"Doing some startup work...` message appears when we call the factory method, and before we've subscribed. So if nothing ever subscribed to the `IObservable` that method returns, the work would be done anyway, wasting time and energy. Here's the `Defer` version: + +```cs +static IObservable WithDeferal() +{ + return Observable.Defer(() => + { + Console.WriteLine("Doing some startup work..."); + return Observable.Range(1, 3); + }); +} +``` + +If we were to use this with similar code to the first example, we'd see this output: + +``` +Calling factory method +First subscription +Doing some startup work... +1 +2 +3 +Second subscription +Doing some startup work... +1 +2 +3 +``` + +There are two important differences. First, the `"Doing some startup work..."` message does not appear until we first subscribe, illustrating that `Defer` has done what we wanted. However, notice that the message now appears twice: it will do this work each time we subscribe. If you want this deferred initialization but you'd also like once-only execution, you should look at the operators in the [Publishing Operators chapter](15_PublishingOperators.md), which provide various ways to enable multiple subscribers to share a single subscription to an underlying source. + ## Sequence Generators The creation methods we've looked at so far are straightforward in that they either produce very simple sequences (such as single-element, or empty sequences), or they rely on our code to tell them exactly what to produce. Now we'll look at some methods that can produce longer sequences. diff --git a/content/04_Part2.md b/content/04_Part2.md index f131610..9553e99 100644 --- a/content/04_Part2.md +++ b/content/04_Part2.md @@ -87,8 +87,6 @@ I'd prefer to come up with something a bit more meaningful. Maybe "Getting Pragm * OnErrorResumeNext -TODO: where does Defer fit in? I use it in ch03. I refer to it in Combining Sequences. But it's not clear where its home is. - TODO: where does integration with Task fit in? Chapter 3's From Task section talks about the ToObservable extension method. The chapter currently called "Leaving the Monad" talks about ToTask. What about ToAsync and FromAsync? Chapter 5 mentions in passing that you can `await` any sequence in the ElementAt section, but I don't think I mention that any point earlier than that. Check these to see if there's anything in them not now covered earlier: From 2ec70b6532a5f611f54f23bddc598998180295da Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Fri, 11 Aug 2023 08:10:45 +0100 Subject: [PATCH 034/142] Experiment with
Seeing if this lets us specify both a caption and a description. --- content/02_KeyTypes.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/content/02_KeyTypes.md b/content/02_KeyTypes.md index c53adbd..c896e3c 100644 --- a/content/02_KeyTypes.md +++ b/content/02_KeyTypes.md @@ -145,7 +145,11 @@ The first thing to say about this is that we are effectively defining a custom L When we want to show how an Rx operator behaves, we typically draw a 'marble' diagram. This is a diagram showing one or more `IObservable` event sources, with each one being illustrated by a horizontal line. Each event that a source produces is illustrated by a circle (or 'marble') on that line, with the horizontal position representing timing. Typically, the line has a vertical bar on its left indicating the instant at which the source comes into existence, unless it happens to produce events from the very instant it is created, in which case it will start with a marble. If the line has an arrowhead on the right, that indicates that the observable's lifetime extends beyond the diagram. Here's a diagram showing how the `Quiescent` operator above response to a particular input: -![An Rx marble diagram illustrating two observables. The first is labelled 'source', and it shows six events, labelled numerically. These fall into three groups: events 1 and 2 occur close together, and are followed by a gap. Then events 3, 4, and 5 are close together. And then after another gap event 6 occurs, not close to any. The second observable is labelled 'source.Quiescent(TimeSpan.FromSeconds(2), Scheduler.Default). It shows three events. The first is labelled '[1, 2], and its horizontal position shows that it occurs a little bit after the '2' event on the 'source' observable. The second event on the second observable is labelled '[3,4,5]' and occurs a bit after the '5' event on the 'source' observable. The third event from on the second observable is labelled '[6]', and occurs a bit after the '6' event on the 'source' observable. The image conveys the idea that each time the source produces some events and then stops, the second observable will produce an event shortly after the source stops, which will contain a list with all of the events from the source's most recent burst of activity.](GraphicsIntro/Ch02-Quiescent-Marbles-Input-And-Output.svg) +
+ An Rx marble diagram illustrating two observables. The first is labelled 'source', and it shows six events, labelled numerically. These fall into three groups: events 1 and 2 occur close together, and are followed by a gap. Then events 3, 4, and 5 are close together. And then after another gap event 6 occurs, not close to any. The second observable is labelled 'source.Quiescent(TimeSpan.FromSeconds(2), Scheduler.Default). It shows three events. The first is labelled '[1, 2], and its horizontal position shows that it occurs a little bit after the '2' event on the 'source' observable. The second event on the second observable is labelled '[3,4,5]' and occurs a bit after the '5' event on the 'source' observable. The third event from on the second observable is labelled '[6]', and occurs a bit after the '6' event on the 'source' observable. The image conveys the idea that each time the source produces some events and then stops, the second observable will produce an event shortly after the source stops, which will contain a list with all of the events from the source's most recent burst of activity. +
An Rx marble diagram illustrating two observables.
+
This shows that the source produced a couple of events (the values `1` and `2`, in this example), and then stopped for a bit. A little while after it stopped, the observable returned by the `Quiescent` operator produced a single event with a list containing both of those events (`[1,2]`). Then the source started up again, producing the values `3`, `4`, and `5` in fairly quick succession, and then going quiet for a bit. Again, once the quiet spell had gone on for long enough, the source returned by `Quiescent` produced a single event containing all of the source events from this second burst of activity (`[3,4,5]`). And then the final bit of source activity shown in this diagram consists of a single event, `6`, followed by more inactivity, and again, once the inactivity has gone on for long enough the `Quiescent` source produces a single event to report this. And since that last 'burst' of activity from the source contained only a single event, the list reported by this final output from the `Quiescent` observable is a list with a single value: `[6]`. From 7c3d54c7835962ce34f7378b53d9b47d0b29152c Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Fri, 11 Aug 2023 13:49:11 +0100 Subject: [PATCH 035/142] Move Dump example one chapter earlier --- content/04_Part2.md | 4 --- content/05_Filtering.md | 56 +++++++++++++++++++----------------- content/06_Transformation.md | 18 +----------- 3 files changed, 30 insertions(+), 48 deletions(-) diff --git a/content/04_Part2.md b/content/04_Part2.md index 9553e99..d2b8151 100644 --- a/content/04_Part2.md +++ b/content/04_Part2.md @@ -86,9 +86,5 @@ I'd prefer to come up with something a bit more meaningful. Maybe "Getting Pragm * Retry * OnErrorResumeNext - -TODO: where does integration with Task fit in? Chapter 3's From Task section talks about the ToObservable extension method. The chapter currently called "Leaving the Monad" talks about ToTask. What about ToAsync and FromAsync? Chapter 5 mentions in passing that you can `await` any sequence in the ElementAt section, but I don't think I mention that any point earlier than that. - Check these to see if there's anything in them not now covered earlier: -* HotAndColdObservables * SequencesOfCoincidence \ No newline at end of file diff --git a/content/05_Filtering.md b/content/05_Filtering.md index faebbc7..3c98bb1 100644 --- a/content/05_Filtering.md +++ b/content/05_Filtering.md @@ -6,6 +6,21 @@ title : Filtering Rx provides us with tools to take potentially vast quantities of events and process these to produce higher level insights. This can often involve a reduction in volume—a small number of events may be more useful than a large number if the individual events in that lower-volume stream are, on average, more informative. The simplest mechanisms for achieving this involve simply filtering out events we don't want. Rx defines several operators that can do this. +Just before we move on to introducing the new operators, we will quickly create our own extension method. We will use this 'Dump' extension method to help build our samples. + +```csharp +public static class SampleExtentions +{ + public static void Dump(this IObservable source, string name) + { + source.Subscribe( + i=>Console.WriteLine("{0}-->{1}", name, i), + ex=>Console.WriteLine("{0} failed-->{1}", name, ex.Message), + ()=>Console.WriteLine("{0} completed", name)); + } +} +``` + ## Where Applying a filter to a sequence is an extremely common exercise and the most straightforward filter in LINQ is the `Where` operator. As usual with LINQ, Rx provides its operators in the form of extension methods. If you are already familiar with LINQ, the signature of Rx's `Where` method will come as no surprise: @@ -23,20 +38,18 @@ IObservable xs = Observable.Range(0, 10); // The numbers 0-9 IObservable oddNumbers = xs.Where(i => i % 2 == 0); -oddNumbers.Subscribe( - Console.WriteLine, - () => Console.WriteLine("Completed")); +oddNumbers.Dump("Where"); ``` Output: ``` -0 -2 -4 -6 -8 -Completed +Where-->0 +Where-->2 +Where-->4 +Where-->6 +Where-->8 +Where completed ``` The `Where` operator is one of the many standard LINQ operators. This and other LINQ operators are common use in the various implementations of query operators, most notably the `IEnumerable` implementation. In most cases the operators behave just as they do in the `IEnumerable` implementations, although there are some exceptions as we'll see later. We will discuss each implementation and explain any variation as we go. By implementing these common operators Rx also gets language support for free via C# query comprehension syntax. For example, we could have written the first statement this way, and it would have compiled to effectively identical code: @@ -74,29 +87,18 @@ The `IgnoreElements` extension method allows you to receive just the `OnComplete IObservable xs = Observable.Range(1, 3); IObservable dropEverything = xs.IgnoreElements(); -Console.WriteLine("Unfiltered:"); -xs.Subscribe( - i => Console.WriteLine("xs.OnNext({0})", i), - () => Console.WriteLine("xs.OnCompleted()")); - -Console.WriteLine(); -Console.WriteLine("IgnoreElements:"); -dropEverything.Subscribe( - i=>Console.WriteLine("dropEverything.OnNext({0})", i), - () => Console.WriteLine("dropEverything.OnCompleted()")); +xs.Dump("Unfiltered"); +dropEverything.Dump("IgnoreElements"); ``` As the output shows, the `xs` source produces the numbers 1 to 3 then completes, but if we run that through `IgnoreElements`, all we see is the `OnCompleted`. ``` -Unfiltered: -xs.OnNext(1) -xs.OnNext(2) -xs.OnNext(3) -xs.OnCompleted() - -IgnoreElements: -dropEverything.OnCompleted() +Unfiltered-->1 +Unfiltered-->2 +Unfiltered-->3 +Unfiltered completed +IgnoreElements completed ``` ## OfType diff --git a/content/06_Transformation.md b/content/06_Transformation.md index ba0566e..72b855c 100644 --- a/content/06_Transformation.md +++ b/content/06_Transformation.md @@ -8,22 +8,6 @@ The values from the sequences we consume are not always in the format we need. S Up until now, we have looked at creation of sequences, transition into sequences, and, the reduction of sequences by filtering. In this chapter we will look at _transforming_ sequences. -TODO: should we move this one chapter earlier? Would it be handy to have this in Filtering? - -Just before we move on to introducing the new operators, we will quickly create our own extension method. We will use this 'Dump' extension method to help build our samples. - -```csharp -public static class SampleExtentions -{ - public static void Dump(this IObservable source, string name) - { - source.Subscribe( - i=>Console.WriteLine("{0}-->{1}", name, i), - ex=>Console.WriteLine("{0} failed-->{1}", name, ex.Message), - ()=>Console.WriteLine("{0} completed", name)); - } -} -``` ## Select @@ -43,7 +27,7 @@ source.Select(i=>i+3) .Dump("+3") ``` -Output: +This uses the `Dump` extension method we defined at the start of [the Filtering Chapter](05_Filtering.md). It produces the following output: ``` +3 --> 3 From 067e56db61a51449491a3395bc7a049e8ffe01af Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Wed, 13 Sep 2023 06:31:45 +0100 Subject: [PATCH 036/142] Minor tweaks to Ch15 publishing operators --- content/15_PublishingOperators.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/content/15_PublishingOperators.md b/content/15_PublishingOperators.md index aae909f..06c4e41 100644 --- a/content/15_PublishingOperators.md +++ b/content/15_PublishingOperators.md @@ -4,11 +4,11 @@ title: Publishing operators # Publishing operators -Hot sources need to be able to deliver events to multiple subscribers. While we can implement the subscriber tracking ourselves, it can be easier to write a degenerate source that works only for a single subscriber, and then to use in one of Rx's _multicast_ operators to publish it as a multi-subscriber hot source. The example in ["Representing Filesystem Events in Rx"](03_CreatingObservableSequences.md#representing-filesystem-events-in-rx) used this trick, but as you'll see in this chapter there are a few variations on the theme. +Hot sources need to be able to deliver events to multiple subscribers. While we can implement the subscriber tracking ourselves, it can be easier to write a degenerate source that works only for a single subscriber, and then to use one of Rx's _multicast_ operators to publish it as a multi-subscriber hot source. The example in ["Representing Filesystem Events in Rx"](03_CreatingObservableSequences.md#representing-filesystem-events-in-rx) used this trick, but as you'll see in this chapter there are a few variations on the theme. ## Multicast -Rx offers three operators enabling us to support multiple subscribers using just a single subscription to some underlying source: [`Publish`](#publish), [`PublishLast`](#publishlast), and [`Replay`](#replay). However, all three of these are wrappers around Rx's `Multicast` operator, which provides the common mechanism at the heart of all of them. +Rx offers three operators enabling us to support multiple subscribers using just a single subscription to some underlying source: [`Publish`](#publish), [`PublishLast`](#publishlast), and [`Replay`](#replay). All three of these are wrappers around Rx's `Multicast` operator, which provides the common mechanism at the heart of all of them. `Multicast` turns any `IObservable` into a `IConnectableObservable` which, as you can see, just adds a `Connect` method: @@ -19,7 +19,7 @@ public interface IConnectableObservable : IObservable } ``` -Since it derives from `IObservable`, you can call `Subscribe` on an `IConnectableObservable`, but it won't call `Subscribe` on the underlying source when you do that. It only calls `Subscribe` on the underlying source when you call `Connect`. So that we can see this in action, let's define a source that prints out a message each time `Subscribe` is called: +Since it derives from `IObservable`, you can call `Subscribe` on an `IConnectableObservable`, but the implementation returned by `Multicast` won't call `Subscribe` on the underlying source when you do that. It only calls `Subscribe` on the underlying source when you call `Connect`. So that we can see this in action, let's define a source that prints out a message each time `Subscribe` is called: ```cs IObservable src = Observable.Create(obs => @@ -32,13 +32,13 @@ IObservable src = Observable.Create(obs => }); ``` -If this is only going to be invoked once no matter how many observers subscribe, what `IObserver` does `Multicast` pass to the source when we call `Connect`? It passes a [Subject](03_CreatingObservableSequences.md#subject). And we are required to pass in the subject as an argument to `Multicast`: +Since this is only going to be invoked once no matter how many observers subscribe, `Multicast` can't pass on the `IObserver`s handed to its own `Subscribe` method, because there could be any number of them. It uses a [Subject](03_CreatingObservableSequences.md#subject) as the single `IObserver` that is passes to the underlying source, and this subject is also responsible for keeping track of all subscribers. If we call `Multicast` directly, we are required to pass in the subject we want to use: ```cs IConnectableObservable m = src.Multicast(new Subject()); ``` -I can now subscribe to this a few times over: +We can now subscribe to this a few times over: ```cs m.Subscribe(x => Console.WriteLine($"Sub1: {x}")); @@ -52,7 +52,7 @@ None of these subscribers will receive anything unless we call `Connect`: m.Connect(); ``` -(**Note**: `Connect` returns an `IDisposable`. Calling `Dispose` on that unsubscribes from the underlying source.) +**Note**: `Connect` returns an `IDisposable`. Calling `Dispose` on that unsubscribes from the underlying source. This call to `Connect` causes the following output: @@ -68,7 +68,7 @@ Sub3: 2 As you can see, the method we passed to `Create` runs only once, confirming that `Multicast` did only subscribe once, despite us calling `Subscribe` three times over. But each item went to all three subscriptions. -The way `Multicast` works is fairly straightforward: it lets the subject do most of the work. Whenever you call `Subscribe` on an observable returned by `Multicast`, it just calls `Subscribe` on the subject. And when you call `Connect`, it just passes the subject into the underlying source's `Subscribe`. So this code would have had the same effect: +The way `Multicast` works is fairly straightforward: it gets the subject do most of the work. Whenever you call `Subscribe` on an observable returned by `Multicast`, it just calls `Subscribe` on the subject. And when you call `Connect`, it just passes the subject into the underlying source's `Subscribe`. So this code would have had the same effect: ```cs var s = new Subject(); From 0161de44a4524ea258d48b3085209632d1bdd623 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Wed, 13 Sep 2023 07:17:13 +0100 Subject: [PATCH 037/142] Testing chapter WIP --- content/91_TestingRx.md | 108 ++++++++-------------------------------- 1 file changed, 20 insertions(+), 88 deletions(-) diff --git a/content/91_TestingRx.md b/content/91_TestingRx.md index e3e3869..48a6c9a 100644 --- a/content/91_TestingRx.md +++ b/content/91_TestingRx.md @@ -1,77 +1,30 @@ --- title: Testing Rx --- - +`` # Testing Rx -Testing software has its roots in debugging and demonstrating code. Having largely matured past manual tests that try to "break the application", modern quality assurance standards demand a level of automation that can help evaluate and prevent bugs. While teams of testing specialists are common, more and more coders are expected to provide quality guarantees via automated test suites. - -Up to this point, we have covered a broad scope of Rx, and we have almost enough knowledge to start using Rx in anger! Still, many developers would not dream of coding without first being able to write tests. Tests can be used to prove that code is in fact satisfying requirements, provide a safety net against regression and can even help document the code. This chapter makes the assumption that you are familiar with the concepts of dependency injection and unit testing with test-doubles, such as mocks or stubs. +Modern quality assurance standards demand a level of automated testing that can help evaluate and prevent bugs. It is good practice to have a suite of tests that verify correct behaviour and to run this as part of the build process to detect regressions early. -Rx poses some interesting problems to our Test-Driven community: +The `System.Reactive` source code includes a comprehensive tests suite. Testing Rx-based code presents some challenges, especially when time-sensitive operators are involved. Rx.NET's test suite includes many tests designed to exercise awkward edge cases to ensure predictable behaviour under load. This is only possible because Rx.NET was designed to be testable. -- Scheduling, and therefore threading, is generally avoided in test scenarios as it can introduce race conditions which may lead to non-deterministic tests -- Tests should run as fast as possible -- For many, Rx is a new technology/library. Naturally, as we progress on our journey to mastering Rx, we may want to refactor some of our previous Rx code. We want to use tests to ensure that our refactoring has not altered the internal behavior of our code base -- Likewise, tests will ensure nothing breaks when we upgrade versions of Rx. +In this chapters, we'll show how you can take advantage of Rx's testability in your own code. -While we do want to test our code, we don't want to introduce slow or non-deterministic tests; indeed, the later would introduce false-negatives or false-positives. If we look at the Rx library, there are plenty of methods that involve scheduling (implicitly or explicitly), so using Rx effectively makes it hard to avoid scheduling. This LINQ query shows us that there are at least 26 extension methods that accept an `IScheduler` as a parameter. - -```csharp -var query = from method in typeof(Observable).GetMethods() - from parameter in method.GetParameters() - where typeof(IScheduler).IsAssignableFrom(parameter.ParameterType) - group method by method.Name into m - orderby m.Key - select m.Key; - -foreach (var methodName in query) -{ - Console.WriteLine(methodName); -} -``` +## Virtual Time -Output: +It's common to deal with timing in Rx. As you've seen, it offers several operators that take time into account, and this presents a challenge. We don't want to introduce slow tests, because that can make test suites take too long to execute, but how might we test an application that waits for the user to stop typing for half a second before submitting a query? Non-deterministic tests can also be a problem: when there are race conditions it can be very hard to recreate these reliably. -``` -Buffer -Delay -Empty -Generate -Interval -Merge -ObserveOn -Range -Repeat -Replay -Return -Sample -Start -StartWith -Subscribe -SubscribeOn -Take -Throttle -Throw -TimeInterval -Timeout -Timer -Timestamp -ToAsync -ToObservable -Window -``` - -Many of these methods also have an overload that does not take an `IScheduler` and instead uses a default instance. TDD/Test First coders will want to opt for the overload that accepts the `IScheduler`, so that they can have some control over scheduling in our tests. I will explain why soon. + The [Scheduling and Threading](./11_SchedulingAndThreading.md) chapter described how schedulers use a virtualized representation of time. This is critical for enabling tests to validate time-related behaviour. It enables us to control Rx's perception of the progression of time, enabling us to write tests that logically take seconds, but which execute in microseconds. Consider this example, where we create a sequence that publishes values every second for five seconds. ```csharp -var interval = Observable.Interval(TimeSpan.FromSeconds(1)) - .Take(5); +IObservable interval = Observable + .Interval(TimeSpan.FromSeconds(1)) + .Take(5); ``` -If we were to write a test that ensured that we received five values and they were each one second apart, it would take five seconds to run. That would be no good; I want hundreds if not thousands of tests to run in five seconds. Another very common requirement is to test a timeout. Here, we try to test a timeout of one minute. +A naive a test to ensure that this produces five values at one second intervals would take five seconds to run. That would be no good; we want hundreds if not thousands of tests to run in five seconds. Another very common requirement is to test a timeout. Here, we try to test a timeout of one minute. ```csharp var never = Observable.Never(); @@ -85,20 +38,17 @@ never.Timeout(TimeSpan.FromMinutes(1)) Assert.IsTrue(exceptionThrown); ``` -We have two problems here: - -- either the `Assert` runs too soon, and the test is pointless as it always fails, or -- we have to add a delay of one minute to perform an accurate test +It looks like we would have no choice but to make our test wait for a minute before running that assert. In practice, we'd want to wait a little over a minute, because if the computer running the test is busy, it might run the relevant code a bit later than we've asked. This kind of scenario is notorious for causing tests to fail occasionally even when there's no real problem in the code being tested. -For this test to be useful, it would therefore take one minute to run. Unit tests that take one minute to run are not acceptable. +Nobody wants slow, inconsistent tests. So let's look at how Rx helps us to avoid these problems. ## TestScheduler -To our rescue comes the `TestScheduler`; it introduces the concept of a virtual scheduler to allow us to emulate and control time. +The [Scheduling and Threading](11_SchedulingAndThreading.md) chapter explained that schedulers determine when and how to execute code, and that they keep track of time. Most of the schedulers we looked at in that chapter addressed various threading concerns, and when it came to timing, they all attempted to run timed work at the time requested. But Rx provides `TestScheduler`, which handles time completely differently. It takes advantage of the fact that schedulers control all time-related behaviour to allow us to emulate and control time. -A virtual scheduler can be conceptualized as a queue of actions to be executed. Each are assigned a point in time when they should be executed. We use the `TestScheduler` as a substitute, or [test double](http://xunitpatterns.com/Test%20Double.html), for the production `IScheduler` types. Using this virtual scheduler, we can either execute all queued actions, or only those up to a specified point in time. +You can think of any scheduler as a queue of actions to be executed. Each are assigned a point in time when they should be executed. (Sometimes that time is "as soon as possible" but time-based operators will often schedule work to run at some specific time in the future.) If we use the `TestScheduler` it will effectively act as though time stands still until we tell it we want time to move on. -In this example, we schedule a task onto the queue to be run immediately by using the simple overload (`Schedule(Action)`). We then advance the virtual clock forward by one tick. By doing so, we execute everything scheduled up to that point in time. Note that even though we schedule an action to be executed immediately, it will not actually be executed until the clock is manually advanced. +In this example, we schedule a task to be run immediately by using the simple overload (`Schedule(Action)`). Even though this effectively asks for the work to be run as soon as possible, the `TestScheduler` always waits for us to tell it we're ready before processing newly queued work. We advance the virtual clock forward by one tick, at which point it will execute that queued work. (It runs all newly-queued "as soon as possible" work any time we advance the virtual time. If advancing the time means any work that was previously logically in the future is now runnable, it runs that too.) ```csharp var scheduler = new TestScheduler(); @@ -109,31 +59,11 @@ scheduler.AdvanceBy(1); // execute 1 tick of queued actions Assert.IsTrue(wasExecuted); ``` -> Running and debugging this example may help you to better understand the basics of the `TestScheduler`. - -The `TestScheduler` implements the `IScheduler` interface (naturally) and also extends it to allow us to control and monitor virtual time. We are already familiar with the `IScheduler.Schedule` methods, however the `AdvanceBy(long)`, `AdvanceTo(long)` and `Start()` methods unique to the `TestScheduler` are of most interest. Likewise, the `Clock` property will also be of interest, as it can help us understand what is happening internally. +The `TestScheduler` implements the `IScheduler` interface and defines methods allowing us to control and monitor virtual time. This shows these additional methods: ```csharp public class TestScheduler : // ... { - // Implementation of IScheduler - public DateTimeOffset Now { get; } - - public IDisposable Schedule( - TState state, - Func action) - - public IDisposable Schedule( - TState state, - TimeSpan dueTime, - Func action) - - public IDisposable Schedule( - TState state, - DateTimeOffset dueTime, - Func action) - - // Useful extensions for testing public bool IsEnabled { get; private set; } public TAbsolute Clock { get; protected set; } public void Start() @@ -148,7 +78,9 @@ public class TestScheduler : // ... ### AdvanceTo -The `AdvanceTo(long)` method will execute all the actions that have been scheduled up to the absolute time specified. The `TestScheduler` uses ticks as its measurement of time. In this example, we schedule actions to be invoked now, in 10 ticks, and in 20 ticks. +The `AdvanceTo(long)` method sets the virtual time to the specified number of ticks. This will execute all the actions that have been scheduled up to that absolute time specified. The `TestScheduler` uses ticks as its measurement of time. In this example, we schedule actions to be invoked now, in 10 ticks, and in 20 ticks. + +TODO: are these 100ns ticks or something else? ```csharp var scheduler = new TestScheduler(); From fd4052afda71c23a66a78427d7783d415360a50b Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Thu, 14 Sep 2023 09:32:08 +0100 Subject: [PATCH 038/142] Ch14 more error handling updates --- content/14_ErrorHandlingOperators.md | 38 +++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/content/14_ErrorHandlingOperators.md b/content/14_ErrorHandlingOperators.md index 73164bc..20ba1ae 100644 --- a/content/14_ErrorHandlingOperators.md +++ b/content/14_ErrorHandlingOperators.md @@ -12,7 +12,7 @@ Rx defines a `Catch` operator. The name is deliberately reminiscent of C#'s `try ### Swallowing exceptions -The most basic (although rarely the best) way to handle an exception is to swallow it. In C#, we could write a `try` block with an empty `catch` block. We can achieve something similar with Rx's `Catch` operator. The basic idea with swallowing exceptions is that we carry on as though nothing had happened. We can represent an exception being swallowed like this with a marble diagram. +The most basic (although rarely the best) way to handle an exception is to swallow it. In C#, we could write a `try` block with an empty `catch` block. We can achieve something similar with Rx's `Catch` operator. The basic idea with swallowing exceptions is that the process that caused the exception stops, but we act as though nothing had happened—we handle it in the same way as it the process had naturally reached an end. We can represent an exception being swallowed like this with a marble diagram. TODO: make this a proper diagram. @@ -94,14 +94,38 @@ If the sequence was to terminate with an `Exception` that could not be cast to a Notice that with the overload in the preceding example, we supplied a callback. If an exception of the specified type emerges, this overload of `Catch` will pass it to our callback so that if necessary, we can decide exactly what to return based on information in the exception. If you were to decide that, having inspected the exception, you don't want to swallow it after all, you can use `Observable.Throw` to return an observable that rethrows the exception. (This is effectively the Rx equivalent to a `throw;` statement inside a C# `catch` block.) The following example uses this to swallow all IO exceptions of type IOException or any type derived from that except for `FileNotFoundException`. -```csh +```cs +IObservable result = source.Catch( + x => x is FileNotFoundException ? Observable.Throw(tx) : Observable.Empty()); +``` + +### Replacing an exception + +So far all the examples using `Catch` have either swallowed the exception by returning `Observable.Empty` or rethrown it with `Observable.Throw`. We can supply any observable we want to `Catch` (as long as its item type matches the source item type). We could use this to replace an exception with, say, a message: + +```cs +IObservable messages = stringSource.Catch( + x => Observable.Return( + x is FileNotFoundException fnf + ? $"Did not find {fnf.FileName}" + : $"Was not expecting exception {tx.GetType().Name}")); +``` + +Alternatively, we could handle certain source exceptions by throwing a new exception, with the original one as an inner exception: + +```cs IObservable result = source.Catch( - tx => tx is FileNotFoundException ? Observable.Throw(tx) : Observable.Empty()); + x => Observable.Throw( + x is FileNotFoundException fnf + ? new InvalidOperationException("Config not available", fnf) + : x)); ``` +No matter what your `Catch` does, remember that you'll see no new items from the source after it produces an error. The basic rules of Rx mean that once a source has called `OnError` on its subscriber, it must not make any further calls. + ## Finally -Similar to a `finally` block in C#, Rx enables us to execute some code on completion of a sequence, regardless of whether it runs to completion naturally, or fails. The `Finally` extension method accepts an `Action` as a parameter. This `Action` will be invoked when the sequence terminates, regardless of whether `OnCompleted` or `OnError` was called. It will also invoke the action if the subscription is disposed of before it completes. +Similar to a `finally` block in C#, Rx enables us to execute some code on completion of a sequence, regardless of whether it runs to completion naturally or fails. The `Finally` extension method accepts an `Action` as a parameter. This `Action` will be invoked when the sequence terminates, regardless of whether `OnCompleted` or `OnError` was called. It will also invoke the action if the subscription is disposed of before it completes. ```csharp public static IObservable Finally( @@ -179,7 +203,7 @@ source.OnError(new Exception("Fail")); If you run this directly from the program's entry point, without wrapping it in a `try`/`catch`, you may or may not see the `Finally` message displayed, because exception handling works subtly differently in the case an exception reaches all the way to the top of the stack without being caught. (Oddly, it usually does run, but if you have a debugger attached, the program usually exits without running the `Finally` callback.) -This is mostly just a curiosity: application frameworks such as ASP.NET Core or WPF typically install their own top-of-stack exception handlers, and in any case you shouldn't be subscribing to a source that you know will call `OnError` without supplying an error callback. This problem only emerges because the delegate-based `Subscribe` overload in use here supplies an `IObserver` implementation that throws in its `OnError`. However, if you're building console applications to experiment with Rx's behaviour you are quite likely to run into this. In practice, `Finally` will do the right thing in more normal situations. +This is mostly just a curiosity: application frameworks such as ASP.NET Core or WPF typically install their own top-of-stack exception handlers, and in any case you shouldn't be subscribing to a source that you know will call `OnError` without supplying an error callback. This problem only emerges because the delegate-based `Subscribe` overload in use here supplies an `IObserver` implementation that throws in its `OnError`. However, if you're building console applications to experiment with Rx's behaviour you are quite likely to run into this. In practice, `Finally` will do the right thing in more normal situations. (But in any case, you shouldn't throw exceptions from an `OnError` handler.) ## Using @@ -199,7 +223,7 @@ The resource will be disposed of when the sequence terminates either with `OnCom ## OnErrorResumeNext -Just the title of this section will send a shudder down the spines of old VB developers! In Rx, there is an extension method called `OnErrorResumeNext` that has similar semantics to the VB keywords/statement that share the same name. This extension method allows the continuation of a sequence with another sequence regardless of whether the first sequence completes gracefully or due to an error. Under normal use, the two sequences would merge as below: +Just the title of this section will send a shudder down the spines of old VB developers! (For those not familiar with this murky language feature, the VB language lets you instruct it to ignore any errors that occur during execution, and to just continue with the next statement after any failure.) In Rx, there is an extension method called `OnErrorResumeNext` that has similar semantics to the VB keywords/statement that share the same name. This extension method allows the continuation of a sequence with another sequence regardless of whether the first sequence completes gracefully or due to an error. Under normal use, the two sequences would merge as below: ``` S1--0--0--| @@ -242,7 +266,7 @@ It is simple to use; you can pass in as many continuations sequences as you like ## Retry -If you are expecting your sequence to encounter predictable failures, you might simply want to retry. For example, if you are running in a cloud environment, it's very common for operations to fail occasionally for no obvious reason. Cloud platforms often relocate services on a fairly regular basis for operational reasons, which means it's not unusual for operations to fail, but for the exact same operation to succeed it you immediately retry it. Rx's `Retry` extension method offers the ability to retry on failure a specified number of times or until it succeeds. This works by resubscribing to the source if it reports an error. +If you are expecting your sequence to encounter predictable failures, you might simply want to retry. For example, if you are running in a cloud environment, it's very common for operations to fail occasionally for no obvious reason. Cloud platforms often relocate services on a fairly regular basis for operational reasons, which means it's not unusual for operations to fail—you might make a request to a service just before the cloud provider decided to move that service to a different compute node—but for the exact same operation to succeed if you immediately retry it (because the retry request gets routed to the new node). Rx's `Retry` extension method offers the ability to retry on failure a specified number of times or until it succeeds. This works by resubscribing to the source if it reports an error. This example uses the simple overload, which will always retry on any exception. From ae75c01d18f36bec2c214b2a9c10613dd6c42b4c Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Thu, 14 Sep 2023 14:56:02 +0100 Subject: [PATCH 039/142] Draft of testing chapter --- content/91_TestingRx.md | 159 ++++++++++++++++++---------------------- 1 file changed, 73 insertions(+), 86 deletions(-) diff --git a/content/91_TestingRx.md b/content/91_TestingRx.md index 48a6c9a..757010b 100644 --- a/content/91_TestingRx.md +++ b/content/91_TestingRx.md @@ -2,7 +2,7 @@ title: Testing Rx --- `` -# Testing Rx +# Testing Rx Modern quality assurance standards demand a level of automated testing that can help evaluate and prevent bugs. It is good practice to have a suite of tests that verify correct behaviour and to run this as part of the build process to detect regressions early. @@ -44,11 +44,13 @@ Nobody wants slow, inconsistent tests. So let's look at how Rx helps us to avoid ## TestScheduler -The [Scheduling and Threading](11_SchedulingAndThreading.md) chapter explained that schedulers determine when and how to execute code, and that they keep track of time. Most of the schedulers we looked at in that chapter addressed various threading concerns, and when it came to timing, they all attempted to run timed work at the time requested. But Rx provides `TestScheduler`, which handles time completely differently. It takes advantage of the fact that schedulers control all time-related behaviour to allow us to emulate and control time. +The [Scheduling and Threading](11_SchedulingAndThreading.md) chapter explained that schedulers determine when and how to execute code, and that they keep track of time. Most of the schedulers we looked at in that chapter addressed various threading concerns, and when it came to timing, they all attempted to run work at the time requested. But Rx provides `TestScheduler`, which handles time completely differently. It takes advantage of the fact that schedulers control all time-related behaviour to allow us to emulate and control time. -You can think of any scheduler as a queue of actions to be executed. Each are assigned a point in time when they should be executed. (Sometimes that time is "as soon as possible" but time-based operators will often schedule work to run at some specific time in the future.) If we use the `TestScheduler` it will effectively act as though time stands still until we tell it we want time to move on. +**Note:** `TestScheduler` is not in the main `System.Reactive` package. You will need to add a reference to `Microsoft.Reactive.Testing` to use it. -In this example, we schedule a task to be run immediately by using the simple overload (`Schedule(Action)`). Even though this effectively asks for the work to be run as soon as possible, the `TestScheduler` always waits for us to tell it we're ready before processing newly queued work. We advance the virtual clock forward by one tick, at which point it will execute that queued work. (It runs all newly-queued "as soon as possible" work any time we advance the virtual time. If advancing the time means any work that was previously logically in the future is now runnable, it runs that too.) +Any scheduler maintains a queue of actions to be executed. Each action is assigned a point in time when it should be executed. (Sometimes that time is "as soon as possible" but time-based operators will often schedule work to run at some specific time in the future.) If we use the `TestScheduler` it will effectively act as though time stands still until we tell it we want time to move on. + +In this example, we schedule a task to be run immediately by using the simplest `Schedule` overload. Even though this effectively asks for the work to be run as soon as possible, the `TestScheduler` always waits for us to tell it we're ready before processing newly queued work. We advance the virtual clock forward by one tick, at which point it will execute that queued work. (It runs all newly-queued "as soon as possible" work any time we advance the virtual time. If we advance the time far enough to mean that work that was previously logically in the future is now runnable, it runs that too.) ```csharp var scheduler = new TestScheduler(); @@ -59,7 +61,7 @@ scheduler.AdvanceBy(1); // execute 1 tick of queued actions Assert.IsTrue(wasExecuted); ``` -The `TestScheduler` implements the `IScheduler` interface and defines methods allowing us to control and monitor virtual time. This shows these additional methods: +The `TestScheduler` implements the `IScheduler` interface and also defines methods allowing us to control and monitor virtual time. This shows these additional methods: ```csharp public class TestScheduler : // ... @@ -71,16 +73,15 @@ public class TestScheduler : // ... public void AdvanceTo(long time) public void AdvanceBy(long time) - //` Other methods ... } ``` -### AdvanceTo +`TestScheduler` works in the same units as [`TimeSpan.Ticks`](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.ticks). If you want to move time forward by 1 second, you can call `scheduler.AdvanceBy(TimeSpan.FromSeconds(1).Ticks)`. One tick corresponds to 100ns, so 1 second is 10,000,000 ticks. -The `AdvanceTo(long)` method sets the virtual time to the specified number of ticks. This will execute all the actions that have been scheduled up to that absolute time specified. The `TestScheduler` uses ticks as its measurement of time. In this example, we schedule actions to be invoked now, in 10 ticks, and in 20 ticks. +### AdvanceTo -TODO: are these 100ns ticks or something else? +The `AdvanceTo(long)` method sets the virtual time to the specified number of ticks. This will execute all the actions that have been scheduled up to that absolute time specified. The `TestScheduler` uses ticks as its measurement of time. In this example, we schedule actions to be invoked now, in 10 ticks, and in 20 ticks (1 and 2 microseconds respectively). ```csharp var scheduler = new TestScheduler(); @@ -150,9 +151,9 @@ scheduler.AdvanceBy(5); C ``` -### Start +### Start -The `TestScheduler`'s `Start()` method is an effective way to execute everything that has been scheduled. We take the same example again and swap out the `AdvanceBy(long)` calls for a single `Start()` call. +The `TestScheduler`'s `Start()` method runs everything that has been scheduled, gradually advancing virtual time as necessary if any of the work was queued for a specific time. We take the same example again and swap out the `AdvanceBy(long)` calls for a single `Start()` call. ```csharp var scheduler = new TestScheduler(); @@ -204,11 +205,11 @@ C scheduler.Clock:20 ``` -Note that the output is exactly the same; If we want our fourth action to be executed, we will have to call `Start()` again. +Note that the output is exactly the same; If we want our fourth action to be executed, we will have to call `Start()` (or `AdvanceTo` or `AdvanceBy`) again. -### Stop +### Stop -In previous releases of Rx, the `Start()` method was called `Run()`. Now there is a `Stop()` method whose name seems to imply some symmetry with `Start()`. All it does however, is set the `IsEnabled` property to false. This property is used as an internal flag to check whether the internal queue of actions should continue being executed. The processing of the queue may indeed be instigated by `Start()`, however `AdvanceTo` or `AdvanceBy` can be used too. +There is a `Stop()` method whose name seems to imply some symmetry with `Start()`. This sets the scheduler's `IsEnabled` property to false, and if `Start` is currently running, this means that it will stop inspecting the queue for further work, and will return as soon as the work item currently being processed completes. In this example, we show how you could use `Stop()` to pause processing of scheduled actions. @@ -233,7 +234,9 @@ B scheduler.Clock:15 ``` -Note that "C" never gets printed as we stop the clock at 15 ticks. I have been testing Rx successfully for nearly two years now, yet I have not found the need to use the `Stop()` method. I imagine that there are cases that warrant its use; however I just wanted to make the point that you do not have to be concerned about the lack of use of it in your tests. +Note that "C" never gets printed as we stop the clock at 15 ticks. + +Since `Start` automatically stops when it has drained the work queue, you're under no obligation to call `Stop`. It's there only if you want to call `Start` but then pause processing part way through the test. ### Schedule collision @@ -262,7 +265,7 @@ scheduler.Clock:10 Note that the virtual clock is at 10 ticks, the time we advanced to. -## Testing Rx cod +## Testing Rx code Now that we have learnt a little bit about the `TestScheduler`, let's look at how we could use it to test our two initial code snippets that use `Interval` and `Timeout`. We want to execute tests as fast as possible but still maintain the semantics of time. In this example we generate our five values one second apart but pass in our `TestScheduler` to the `Interval` method to use instead of the default scheduler. @@ -285,7 +288,7 @@ public void Testing_with_test_scheduler() } ``` -While this is mildly interesting, what I think is more important is how we would test a real piece of code. Imagine, if you will, a ViewModel that subscribes to a stream of prices. As prices are published, it adds them to a collection. Assuming this is a WPF or Silverlight implementation, we take the liberty of enforcing that the subscription be done on the `ThreadPool` and the observing is executed on the `Dispatcher`. +While this is mildly interesting, what I think is more important is how we would test a real piece of code. Imagine, if you will, a ViewModel that subscribes to a stream of prices. As prices are published, it adds them to a collection. Assuming this is a WPF implementation, we take the liberty of enforcing that the subscription be done on the `ThreadPool` and the observing is executed on the `Dispatcher`. ```csharp public class MyViewModel : IMyViewModel @@ -325,9 +328,9 @@ public class MyViewModel : IMyViewModel } ``` -### Injecting scheduler depende +### Injecting scheduler dependencies -While the snippet of code above may do what we want it to, it will be hard to test as it is accessing the schedulers via static properties. To help my testing, I have created my own interface that exposes the same `IScheduler` implementations that the `Scheduler` type does, i suggest you adopt this interface too. +While the snippet of code above may do what we want it to, it will be hard to test as it is accessing the schedulers via static properties. You will need some way of enabling tests to supply different schedulers during testing. In this example, we're going to define an interface for this purpose: ```csharp public interface ISchedulerProvider @@ -337,72 +340,48 @@ public interface ISchedulerProvider IScheduler Immediate { get; } IScheduler NewThread { get; } IScheduler ThreadPool { get; } - // IScheduler TaskPool { get; } + IScheduler TaskPool { get; } } ``` -Whether the `TaskPool` property should be included or not depends on your target platform. If you adopt this concept, feel free to name this type in accordance with your naming conventions e.g. `SchedulerService`, `Schedulers`. The default implementation that we would run in production is implemented as follows: +The default implementation that we would run in production is implemented as follows: ```csharp public sealed class SchedulerProvider : ISchedulerProvider { - public IScheduler CurrentThread - { - get { return Scheduler.CurrentThread; } - } - - public IScheduler Dispatcher - { - get { return DispatcherScheduler.Instance; } - } - - public IScheduler Immediate - { - get { return Scheduler.Immediate; } - } - - public IScheduler NewThread - { - get { return Scheduler.NewThread; } - } - - public IScheduler ThreadPool - { - get { return Scheduler.ThreadPool; } - } - - // public IScheduler TaskPool { get { return Scheduler.TaskPool; } } + public IScheduler CurrentThread => Scheduler.CurrentThread; + public IScheduler Dispatcher => DispatcherScheduler.Instance; + public IScheduler Immediate => Scheduler.Immediate; + public IScheduler NewThread => Scheduler.NewThread; + public IScheduler ThreadPool => Scheduler.ThreadPool; + public IScheduler TaskPool => Scheduler.TaskPool; } ``` -This now allows me to substitute implementations of `ISchedulerProvider` to help with testing. I could mock the `ISchedulerProvider`, but I find it easier to provide a test implementation. My implementation for testing is as follows. +We can substitute implementations of `ISchedulerProvider` to help with testing. For example: ```csharp public sealed class TestSchedulers : ISchedulerProvider { - private readonly TestScheduler _currentThread = new TestScheduler(); - private readonly TestScheduler _dispatcher = new TestScheduler(); - private readonly TestScheduler _immediate = new TestScheduler(); - private readonly TestScheduler _newThread = new TestScheduler(); - private readonly TestScheduler _threadPool = new TestScheduler(); - - #region Explicit implementation of ISchedulerService - IScheduler ISchedulerProvider.CurrentThread { get { return _currentThread; } } - IScheduler ISchedulerProvider.Dispatcher { get { return _dispatcher; } } - IScheduler ISchedulerProvider.Immediate { get { return _immediate; } } - IScheduler ISchedulerProvider.NewThread { get { return _newThread; } } - IScheduler ISchedulerProvider.ThreadPool { get { return _threadPool; } } - #endregion + // Schedulers available as TestScheduler type + public TestScheduler CurrentThread { get; } = new TestScheduler(); + public TestScheduler Dispatcher { get; } = new TestScheduler(); + public TestScheduler Immediate { get; } = new TestScheduler(); + public TestScheduler NewThread { get; } = new TestScheduler(); + public TestScheduler ThreadPool { get; } = new TestScheduler(); - public TestScheduler CurrentThread { get { return _currentThread; } } - public TestScheduler Dispatcher { get { return _dispatcher; } } - public TestScheduler Immediate { get { return _immediate; } } - public TestScheduler NewThread { get { return _newThread; } } - public TestScheduler ThreadPool { get { return _threadPool; } } + // ISchedulerService needs us to return IScheduler, but we want the properties + // to return TestScheduler for the convenience of test code, so we provide + // explicit implementations of all the properties to match ISchedulerService. + IScheduler ISchedulerProvider.CurrentThread => CurrentThread; + IScheduler ISchedulerProvider.Dispatcher => Dispatcher; + IScheduler ISchedulerProvider.Immediate => Immediate; + IScheduler ISchedulerProvider.NewThread => NewThread; + IScheduler ISchedulerProvider.ThreadPool => ThreadPool; } ``` -Note that `ISchedulerProvider` is implemented explicitly. This means that, in our tests, we can access the `TestScheduler` instances directly, but our system under test (SUT) still just sees the interface implementation. I can now write some tests for my ViewModel. Below, we test a modified version of the `MyViewModel` class that takes an `ISchedulerProvider` and uses that instead of the static schedulers from the `Scheduler` class. We also use the popular [Moq](http://code.google.com/p/moq) framework in order to mock out our model. +Note that `ISchedulerProvider` is implemented explicitly because that interface requires each property to return an `IScheduler`, but our tests will need to access the `TestScheduler` instances directly. I can now write some tests for my ViewModel. Below, we test a modified version of the `MyViewModel` class that takes an `ISchedulerProvider` and uses that instead of the static schedulers from the `Scheduler` class. We also use the popular [Moq](https://github.com/Moq) framework to provide a suitable fake implementation of our model. ```csharp [TestInitialize] @@ -426,7 +405,7 @@ public void Should_add_to_Prices_when_Model_publishes_price() _schedulerProvider.ThreadPool.Schedule(() => priceStream.OnNext(expected)); Assert.AreEqual(0, _viewModel.Prices.Count); - + // Execute the OnNext action _schedulerProvider.ThreadPool.AdvanceBy(1); Assert.AreEqual(0, _viewModel.Prices.Count); @@ -463,34 +442,34 @@ These two tests ensure five things: * That the `Price` property has prices added to it as the model produces them * That the sequence is subscribed to on the ThreadPool -* That the `Price` property is updated on the Dispatcher i.e. the sequence is observed on the Dispatcher -* That a timeout of 10 seconds between prices will set the ViewModel to disconnected. -* The tests run fast. +* That the `Price` property is updated on the Dispatcher i.e. the sequenceis observed on the Dispatcher +* That a timeout of 10 seconds between prices will set the ViewModel to disconnected +* The tests run fast. -While the time to run the tests is not that impressive, most of that time seems to be spent warming up my test harness. Moreover, increasing the test count to 10 only adds 0.03seconds. In general, on a modern CPU, I expect to see unit tests run at a rate of +1000 tests per second +While the time to run the tests is not that impressive, most of that time seems to be spent warming up my test harness. Moreover, increasing the test count to 10 only adds 0.03seconds. In general, a modern CPU should be able to execute thousands of unit tests per second. -Usually, I would not have more than one assert/verify per test, but here it does help illustrate a point. In the first test, we can see that only once both the `ThreadPool` and the `Dispatcher` schedulers have been run will we get a result. In the second test, it helps to verify that the timeout is not less than 10 seconds. +In the first test, we can see that only once both the `ThreadPool` and the `Dispatcher` schedulers have been run will we get a result. In the second test, it helps to verify that the timeout is not less than 10 seconds. In some scenarios, you are not interested in the scheduler and you want to be focusing your tests on other functionality. If this is the case, then you may want to create another test implementation of the `ISchedulerProvider` that returns the `ImmediateScheduler` for all of its members. That can help reduce the noise in your tests. ```csharp public sealed class ImmediateSchedulers : ISchedulerService { - public IScheduler CurrentThread { get { return Scheduler.Immediate; } } - public IScheduler Dispatcher { get { return Scheduler.Immediate; } } - public IScheduler Immediate { get { return Scheduler.Immediate; } } - public IScheduler NewThread { get { return Scheduler.Immediate; } } - public IScheduler ThreadPool { get { return Scheduler.Immediate; } } + public IScheduler CurrentThread => Scheduler.Immediate; + public IScheduler Dispatcher => Scheduler.Immediate; + public IScheduler Immediate => Scheduler.Immediate; + public IScheduler NewThread => Scheduler.Immediate; + public IScheduler ThreadPool => Scheduler.Immediate; } ``` ## Advanced features - ITestableObserver -The `TestScheduler` provides further advanced features. I find that I am able to get by quite well without these methods, but others may find them useful. Perhaps this is because I have found myself accustomed to testing without them from using earlier versions of Rx. +The `TestScheduler` provides further advanced features. These can be useful when parts of your test setup need to run at particular virtual times. ### Start(Func>) -There are three overloads to `Start`, which are used to start an observable sequence at a given time, record the notifications it makes and dispose of the subscription at a given time. This can be confusing at first, as the parameterless overload of `Start` is quite unrelated. These three overloads return an `ITestableObserver` which allows you to record the notifications from an observable sequence, much like the `Materialize` method we saw in the [Transformation chapter](08_Transformation.html#MaterializeAndDematerialize). +There are three overloads to `Start`, which are used to start an observablesequence at a given time, record the notifications it makes and dispose of the subscription at a given time. This can be confusing at first, as the parameterless overload of `Start` is quite unrelated. These three overloads return an `ITestableObserver` which allows you to record the notifications from an observable sequence, much like the `Materialize` method we saw in the [Transformation chapter](06_Transformation.md#materialize-and-dematerialize). ```csharp public interface ITestableObserver : IObserver @@ -581,25 +560,33 @@ There are two other overloads to this `TestScheduler.Start` method. public ITestableObserver Start(Func> create, long disposed) { if (create == null) - throw new ArgumentNullException("create"); + { + throw new ArgumentNullException("create"); + } else - return this.Start(create, 100L, 200L, disposed); + { + return this.Start(create, 100L, 200L, disposed); + } } public ITestableObserver Start(Func> create) { if (create == null) - throw new ArgumentNullException("create"); + { + throw new ArgumentNullException("create"); + } else - return this.Start(create, 100L, 200L, 1000L); + { + return this.Start(create, 100L, 200L, 1000L); + } } ``` -As you can see, these overloads just call through to the variant we have been looking at, but passing some default values. I am not sure why these default values are special; I can not imagine why you would want to use these two methods, unless your specific use case matched that specific configuration exactly. +As you can see, these overloads just call through to the variant we have been looking at, but passing some default values. These default values provide short gaps before creation and between creation and subscription, giving enough space to configure other things to happen between them. And then the disposal happens a bit later, allowing a little longer for the thing to run. There's nothing particularly magical about these default values, but if you value a lack of clutter over it being completely obvious what happens when, and are happy to rely on the invisible effects of convention, then you might prefer this. The Rx source code itself contains thousands of tests, and a very large number of them use the simplest `Start` overload, and developers working in the code base day in, day out soon get used to the idea that creation occurs at time 100, and subscription at time 200, and that test everything you need to before 1000. ### CreateColdObservable -Just as we can record an observable sequence, we can also use `CreateColdObservable` to playback a set of `Recorded>`. The signature for `CreateColdObservable` simply takes a `params` array of recorded notifications. +Just as we can record an observable sequence, we can also use `CreateColdObservable` to play back a set of `Recorded>`. The signature for `CreateColdObservable` simply takes a `params` array of recorded notifications. ```csharp // Creates a cold observable from an array of notifications. From 663be80593c08c2e7efdad13c0da41d51298bcfa Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Thu, 14 Sep 2023 15:01:38 +0100 Subject: [PATCH 040/142] Renumber testing chaper --- content/16_TestingRx.md | 722 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 722 insertions(+) create mode 100644 content/16_TestingRx.md diff --git a/content/16_TestingRx.md b/content/16_TestingRx.md new file mode 100644 index 0000000..757010b --- /dev/null +++ b/content/16_TestingRx.md @@ -0,0 +1,722 @@ +--- +title: Testing Rx +--- +`` +# Testing Rx + +Modern quality assurance standards demand a level of automated testing that can help evaluate and prevent bugs. It is good practice to have a suite of tests that verify correct behaviour and to run this as part of the build process to detect regressions early. + +The `System.Reactive` source code includes a comprehensive tests suite. Testing Rx-based code presents some challenges, especially when time-sensitive operators are involved. Rx.NET's test suite includes many tests designed to exercise awkward edge cases to ensure predictable behaviour under load. This is only possible because Rx.NET was designed to be testable. + +In this chapters, we'll show how you can take advantage of Rx's testability in your own code. + +## Virtual Time + +It's common to deal with timing in Rx. As you've seen, it offers several operators that take time into account, and this presents a challenge. We don't want to introduce slow tests, because that can make test suites take too long to execute, but how might we test an application that waits for the user to stop typing for half a second before submitting a query? Non-deterministic tests can also be a problem: when there are race conditions it can be very hard to recreate these reliably. + + The [Scheduling and Threading](./11_SchedulingAndThreading.md) chapter described how schedulers use a virtualized representation of time. This is critical for enabling tests to validate time-related behaviour. It enables us to control Rx's perception of the progression of time, enabling us to write tests that logically take seconds, but which execute in microseconds. + +Consider this example, where we create a sequence that publishes values every second for five seconds. + +```csharp +IObservable interval = Observable + .Interval(TimeSpan.FromSeconds(1)) + .Take(5); +``` + +A naive a test to ensure that this produces five values at one second intervals would take five seconds to run. That would be no good; we want hundreds if not thousands of tests to run in five seconds. Another very common requirement is to test a timeout. Here, we try to test a timeout of one minute. + +```csharp +var never = Observable.Never(); +var exceptionThrown = false; + +never.Timeout(TimeSpan.FromMinutes(1)) + .Subscribe( + i => Console.WriteLine("This will never run."), + ex => exceptionThrown = true); + +Assert.IsTrue(exceptionThrown); +``` + +It looks like we would have no choice but to make our test wait for a minute before running that assert. In practice, we'd want to wait a little over a minute, because if the computer running the test is busy, it might run the relevant code a bit later than we've asked. This kind of scenario is notorious for causing tests to fail occasionally even when there's no real problem in the code being tested. + +Nobody wants slow, inconsistent tests. So let's look at how Rx helps us to avoid these problems. + +## TestScheduler + +The [Scheduling and Threading](11_SchedulingAndThreading.md) chapter explained that schedulers determine when and how to execute code, and that they keep track of time. Most of the schedulers we looked at in that chapter addressed various threading concerns, and when it came to timing, they all attempted to run work at the time requested. But Rx provides `TestScheduler`, which handles time completely differently. It takes advantage of the fact that schedulers control all time-related behaviour to allow us to emulate and control time. + +**Note:** `TestScheduler` is not in the main `System.Reactive` package. You will need to add a reference to `Microsoft.Reactive.Testing` to use it. + +Any scheduler maintains a queue of actions to be executed. Each action is assigned a point in time when it should be executed. (Sometimes that time is "as soon as possible" but time-based operators will often schedule work to run at some specific time in the future.) If we use the `TestScheduler` it will effectively act as though time stands still until we tell it we want time to move on. + +In this example, we schedule a task to be run immediately by using the simplest `Schedule` overload. Even though this effectively asks for the work to be run as soon as possible, the `TestScheduler` always waits for us to tell it we're ready before processing newly queued work. We advance the virtual clock forward by one tick, at which point it will execute that queued work. (It runs all newly-queued "as soon as possible" work any time we advance the virtual time. If we advance the time far enough to mean that work that was previously logically in the future is now runnable, it runs that too.) + +```csharp +var scheduler = new TestScheduler(); +var wasExecuted = false; +scheduler.Schedule(() => wasExecuted = true); +Assert.IsFalse(wasExecuted); +scheduler.AdvanceBy(1); // execute 1 tick of queued actions +Assert.IsTrue(wasExecuted); +``` + +The `TestScheduler` implements the `IScheduler` interface and also defines methods allowing us to control and monitor virtual time. This shows these additional methods: + +```csharp +public class TestScheduler : // ... +{ + public bool IsEnabled { get; private set; } + public TAbsolute Clock { get; protected set; } + public void Start() + public void Stop() + public void AdvanceTo(long time) + public void AdvanceBy(long time) + + ... +} +``` + +`TestScheduler` works in the same units as [`TimeSpan.Ticks`](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.ticks). If you want to move time forward by 1 second, you can call `scheduler.AdvanceBy(TimeSpan.FromSeconds(1).Ticks)`. One tick corresponds to 100ns, so 1 second is 10,000,000 ticks. + +### AdvanceTo + +The `AdvanceTo(long)` method sets the virtual time to the specified number of ticks. This will execute all the actions that have been scheduled up to that absolute time specified. The `TestScheduler` uses ticks as its measurement of time. In this example, we schedule actions to be invoked now, in 10 ticks, and in 20 ticks (1 and 2 microseconds respectively). + +```csharp +var scheduler = new TestScheduler(); +scheduler.Schedule(() => Console.WriteLine("A")); // Schedule immediately +scheduler.Schedule(TimeSpan.FromTicks(10), () => Console.WriteLine("B")); +scheduler.Schedule(TimeSpan.FromTicks(20), () => Console.WriteLine("C")); + +Console.WriteLine("scheduler.AdvanceTo(1);"); +scheduler.AdvanceTo(1); + +Console.WriteLine("scheduler.AdvanceTo(10);"); +scheduler.AdvanceTo(10); + +Console.WriteLine("scheduler.AdvanceTo(15);"); +scheduler.AdvanceTo(15); + +Console.WriteLine("scheduler.AdvanceTo(20);"); +scheduler.AdvanceTo(20); +``` + +Output: + +``` +scheduler.AdvanceTo(1); +A +scheduler.AdvanceTo(10); +B +scheduler.AdvanceTo(15); +scheduler.AdvanceTo(20); +C +``` + +Note that nothing happened when we advanced to 15 ticks. All work scheduled before 15 ticks had been performed and we had not advanced far enough yet to get to the next scheduled action. + +### AdvanceBy + +The `AdvanceBy(long)` method allows us to move the clock forward a relative amount of time. Again, the measurements are in ticks. We can take the last example and modify it to use `AdvanceBy(long)`. + +```csharp +var scheduler = new TestScheduler(); +scheduler.Schedule(() => Console.WriteLine("A")); // Schedule immediately +scheduler.Schedule(TimeSpan.FromTicks(10), () => Console.WriteLine("B")); +scheduler.Schedule(TimeSpan.FromTicks(20), () => Console.WriteLine("C")); + +Console.WriteLine("scheduler.AdvanceBy(1);"); +scheduler.AdvanceBy(1); + +Console.WriteLine("scheduler.AdvanceBy(9);"); +scheduler.AdvanceBy(9); + +Console.WriteLine("scheduler.AdvanceBy(5);"); +scheduler.AdvanceBy(5); + +Console.WriteLine("scheduler.AdvanceBy(5);"); +scheduler.AdvanceBy(5); +``` + +Output: + +``` +scheduler.AdvanceBy(1); +A +scheduler.AdvanceBy(9); +B +scheduler.AdvanceBy(5); +scheduler.AdvanceBy(5); +C +``` + +### Start + +The `TestScheduler`'s `Start()` method runs everything that has been scheduled, gradually advancing virtual time as necessary if any of the work was queued for a specific time. We take the same example again and swap out the `AdvanceBy(long)` calls for a single `Start()` call. + +```csharp +var scheduler = new TestScheduler(); +scheduler.Schedule(() => Console.WriteLine("A")); // Schedule immediately +scheduler.Schedule(TimeSpan.FromTicks(10), () => Console.WriteLine("B")); +scheduler.Schedule(TimeSpan.FromTicks(20), () => Console.WriteLine("C")); + +Console.WriteLine("scheduler.Start();"); +scheduler.Start(); + +Console.WriteLine("scheduler.Clock:{0}", scheduler.Clock); +``` + +Output: + +``` +scheduler.Start(); +A +B +C +scheduler.Clock:20 +``` + +Note that once all of the scheduled actions have been executed, the virtual clock matches our last scheduled item (20 ticks). + +We further extend our example by scheduling a new action to happen after `Start()` has already been called. + +```csharp +var scheduler = new TestScheduler(); +scheduler.Schedule(() => Console.WriteLine("A")); +scheduler.Schedule(TimeSpan.FromTicks(10), () => Console.WriteLine("B")); +scheduler.Schedule(TimeSpan.FromTicks(20), () => Console.WriteLine("C")); + +Console.WriteLine("scheduler.Start();"); +scheduler.Start(); + +Console.WriteLine("scheduler.Clock:{0}", scheduler.Clock); + +scheduler.Schedule(() => Console.WriteLine("D")); +``` + +Output: + +``` +scheduler.Start(); +A +B +C +scheduler.Clock:20 +``` + +Note that the output is exactly the same; If we want our fourth action to be executed, we will have to call `Start()` (or `AdvanceTo` or `AdvanceBy`) again. + +### Stop + +There is a `Stop()` method whose name seems to imply some symmetry with `Start()`. This sets the scheduler's `IsEnabled` property to false, and if `Start` is currently running, this means that it will stop inspecting the queue for further work, and will return as soon as the work item currently being processed completes. + +In this example, we show how you could use `Stop()` to pause processing of scheduled actions. + +```csharp +var scheduler = new TestScheduler(); +scheduler.Schedule(() => Console.WriteLine("A")); +scheduler.Schedule(TimeSpan.FromTicks(10), () => Console.WriteLine("B")); +scheduler.Schedule(TimeSpan.FromTicks(15), scheduler.Stop); +scheduler.Schedule(TimeSpan.FromTicks(20), () => Console.WriteLine("C")); + +Console.WriteLine("scheduler.Start();"); +scheduler.Start(); +Console.WriteLine("scheduler.Clock:{0}", scheduler.Clock); +``` + +Output: + +``` +scheduler.Start(); +A +B +scheduler.Clock:15 +``` + +Note that "C" never gets printed as we stop the clock at 15 ticks. + +Since `Start` automatically stops when it has drained the work queue, you're under no obligation to call `Stop`. It's there only if you want to call `Start` but then pause processing part way through the test. + +### Schedule collision + +When scheduling actions, it is possible and even likely that many actions will be scheduled for the same point in time. This most commonly would occur when scheduling multiple actions for _now_. It could also happen that there are multiple actions scheduled for the same point in the future. The `TestScheduler` has a simple way to deal with this. When actions are scheduled, they are marked with the clock time they are scheduled for. If multiple items are scheduled for the same point in time, they are queued in order that they were scheduled; when the clock advances, all items for that point in time are executed in the order that they were scheduled. + +```csharp +var scheduler = new TestScheduler(); +scheduler.Schedule(TimeSpan.FromTicks(10), () => Console.WriteLine("A")); +scheduler.Schedule(TimeSpan.FromTicks(10), () => Console.WriteLine("B")); +scheduler.Schedule(TimeSpan.FromTicks(10), () => Console.WriteLine("C")); + +Console.WriteLine("scheduler.Start();"); +scheduler.Start(); +Console.WriteLine("scheduler.Clock:{0}", scheduler.Clock); +``` + +Output: + +``` +scheduler.AdvanceTo(10); +A +B +C +scheduler.Clock:10 +``` + +Note that the virtual clock is at 10 ticks, the time we advanced to. + +## Testing Rx code + +Now that we have learnt a little bit about the `TestScheduler`, let's look at how we could use it to test our two initial code snippets that use `Interval` and `Timeout`. We want to execute tests as fast as possible but still maintain the semantics of time. In this example we generate our five values one second apart but pass in our `TestScheduler` to the `Interval` method to use instead of the default scheduler. + +```csharp +[TestMethod] +public void Testing_with_test_scheduler() +{ + var expectedValues = new long[] {0, 1, 2, 3, 4}; + var actualValues = new List(); + var scheduler = new TestScheduler(); + + var interval = Observable.Interval(TimeSpan.FromSeconds(1), scheduler) + .Take(5); + + interval.Subscribe(actualValues.Add); + + scheduler.Start(); + CollectionAssert.AreEqual(expectedValues, actualValues); + // Executes in less than 0.01s "on my machine" +} +``` + +While this is mildly interesting, what I think is more important is how we would test a real piece of code. Imagine, if you will, a ViewModel that subscribes to a stream of prices. As prices are published, it adds them to a collection. Assuming this is a WPF implementation, we take the liberty of enforcing that the subscription be done on the `ThreadPool` and the observing is executed on the `Dispatcher`. + +```csharp +public class MyViewModel : IMyViewModel +{ + private readonly IMyModel _myModel; + private readonly ObservableCollection _prices; + + public MyViewModel(IMyModel myModel) + { + _myModel = myModel; + _prices = new ObservableCollection(); + } + + public void Show(string symbol) + { + // TODO: resource mgt, exception handling etc... + _myModel.PriceStream(symbol) + .SubscribeOn(Scheduler.ThreadPool) + .ObserveOn(Scheduler.Dispatcher) + .Timeout(TimeSpan.FromSeconds(10), Scheduler.ThreadPool) + .Subscribe( + Prices.Add, + ex=> + { + if(ex is TimeoutException) + IsConnected = false; + }); + IsConnected = true; + } + + public ObservableCollection Prices + { + get { return _prices; } + } + + public bool IsConnected { get; private set; } +} +``` + +### Injecting scheduler dependencies + +While the snippet of code above may do what we want it to, it will be hard to test as it is accessing the schedulers via static properties. You will need some way of enabling tests to supply different schedulers during testing. In this example, we're going to define an interface for this purpose: + +```csharp +public interface ISchedulerProvider +{ + IScheduler CurrentThread { get; } + IScheduler Dispatcher { get; } + IScheduler Immediate { get; } + IScheduler NewThread { get; } + IScheduler ThreadPool { get; } + IScheduler TaskPool { get; } +} +``` + +The default implementation that we would run in production is implemented as follows: + +```csharp +public sealed class SchedulerProvider : ISchedulerProvider +{ + public IScheduler CurrentThread => Scheduler.CurrentThread; + public IScheduler Dispatcher => DispatcherScheduler.Instance; + public IScheduler Immediate => Scheduler.Immediate; + public IScheduler NewThread => Scheduler.NewThread; + public IScheduler ThreadPool => Scheduler.ThreadPool; + public IScheduler TaskPool => Scheduler.TaskPool; +} +``` + +We can substitute implementations of `ISchedulerProvider` to help with testing. For example: + +```csharp +public sealed class TestSchedulers : ISchedulerProvider +{ + // Schedulers available as TestScheduler type + public TestScheduler CurrentThread { get; } = new TestScheduler(); + public TestScheduler Dispatcher { get; } = new TestScheduler(); + public TestScheduler Immediate { get; } = new TestScheduler(); + public TestScheduler NewThread { get; } = new TestScheduler(); + public TestScheduler ThreadPool { get; } = new TestScheduler(); + + // ISchedulerService needs us to return IScheduler, but we want the properties + // to return TestScheduler for the convenience of test code, so we provide + // explicit implementations of all the properties to match ISchedulerService. + IScheduler ISchedulerProvider.CurrentThread => CurrentThread; + IScheduler ISchedulerProvider.Dispatcher => Dispatcher; + IScheduler ISchedulerProvider.Immediate => Immediate; + IScheduler ISchedulerProvider.NewThread => NewThread; + IScheduler ISchedulerProvider.ThreadPool => ThreadPool; +} +``` + +Note that `ISchedulerProvider` is implemented explicitly because that interface requires each property to return an `IScheduler`, but our tests will need to access the `TestScheduler` instances directly. I can now write some tests for my ViewModel. Below, we test a modified version of the `MyViewModel` class that takes an `ISchedulerProvider` and uses that instead of the static schedulers from the `Scheduler` class. We also use the popular [Moq](https://github.com/Moq) framework to provide a suitable fake implementation of our model. + +```csharp +[TestInitialize] +public void SetUp() +{ + _myModelMock = new Mock(); + _schedulerProvider = new TestSchedulers(); + _viewModel = new MyViewModel(_myModelMock.Object, _schedulerProvider); +} + +[TestMethod] +public void Should_add_to_Prices_when_Model_publishes_price() +{ + decimal expected = 1.23m; + var priceStream = new Subject(); + _myModelMock.Setup(svc => svc.PriceStream(It.IsAny())).Returns(priceStream); + + _viewModel.Show("SomeSymbol"); + + // Schedule the OnNext + _schedulerProvider.ThreadPool.Schedule(() => priceStream.OnNext(expected)); + + Assert.AreEqual(0, _viewModel.Prices.Count); + + // Execute the OnNext action + _schedulerProvider.ThreadPool.AdvanceBy(1); + Assert.AreEqual(0, _viewModel.Prices.Count); + + // Execute the OnNext handler + _schedulerProvider.Dispatcher.AdvanceBy(1); + Assert.AreEqual(1, _viewModel.Prices.Count); + Assert.AreEqual(expected, _viewModel.Prices.First()); +} + +[TestMethod] +public void Should_disconnect_if_no_prices_for_10_seconds() +{ + var timeoutPeriod = TimeSpan.FromSeconds(10); + var priceStream = Observable.Never(); + _myModelMock.Setup(svc => svc.PriceStream(It.IsAny())).Returns(priceStream); + + _viewModel.Show("SomeSymbol"); + + _schedulerProvider.ThreadPool.AdvanceBy(timeoutPeriod.Ticks - 1); + Assert.IsTrue(_viewModel.IsConnected); + _schedulerProvider.ThreadPool.AdvanceBy(timeoutPeriod.Ticks); + Assert.IsFalse(_viewModel.IsConnected); +} +``` + +Output: + +``` +2 passed, 0 failed, 0 skipped, took 0.41 seconds (MSTest 10.0). +``` + +These two tests ensure five things: + +* That the `Price` property has prices added to it as the model produces them +* That the sequence is subscribed to on the ThreadPool +* That the `Price` property is updated on the Dispatcher i.e. the sequenceis observed on the Dispatcher +* That a timeout of 10 seconds between prices will set the ViewModel to disconnected +* The tests run fast. + +While the time to run the tests is not that impressive, most of that time seems to be spent warming up my test harness. Moreover, increasing the test count to 10 only adds 0.03seconds. In general, a modern CPU should be able to execute thousands of unit tests per second. + +In the first test, we can see that only once both the `ThreadPool` and the `Dispatcher` schedulers have been run will we get a result. In the second test, it helps to verify that the timeout is not less than 10 seconds. + +In some scenarios, you are not interested in the scheduler and you want to be focusing your tests on other functionality. If this is the case, then you may want to create another test implementation of the `ISchedulerProvider` that returns the `ImmediateScheduler` for all of its members. That can help reduce the noise in your tests. + +```csharp +public sealed class ImmediateSchedulers : ISchedulerService +{ + public IScheduler CurrentThread => Scheduler.Immediate; + public IScheduler Dispatcher => Scheduler.Immediate; + public IScheduler Immediate => Scheduler.Immediate; + public IScheduler NewThread => Scheduler.Immediate; + public IScheduler ThreadPool => Scheduler.Immediate; +} +``` + +## Advanced features - ITestableObserver + +The `TestScheduler` provides further advanced features. These can be useful when parts of your test setup need to run at particular virtual times. + +### Start(Func>) + +There are three overloads to `Start`, which are used to start an observablesequence at a given time, record the notifications it makes and dispose of the subscription at a given time. This can be confusing at first, as the parameterless overload of `Start` is quite unrelated. These three overloads return an `ITestableObserver` which allows you to record the notifications from an observable sequence, much like the `Materialize` method we saw in the [Transformation chapter](06_Transformation.md#materialize-and-dematerialize). + +```csharp +public interface ITestableObserver : IObserver +{ + // Gets recorded notifications received by the observer. + IList>> Messages { get; } +} +``` + +While there are three overloads, we will look at the most specific one first. This overload takes four parameters: + +* an observable sequence factory delegate +* the point in time to invoke the factory +* the point in time to subscribe to the observable sequence returned from the factory +* the point in time to dispose of the subscription + +The _time_ for the last three parameters is measured in ticks, as per the rest of the `TestScheduler` members. + +```csharp +public ITestableObserver Start( + Func> create, + long created, + long subscribed, + long disposed) +{...} +``` + +We could use this method to test the `Observable.Interval` factory method. Here, we create an observable sequence that spawns a value every second for 4 seconds. We use the `TestScheduler.Start` method to create and subscribe to it immediately (by passing 0 for the second and third parameters). We dispose of our subscription after 5 seconds. Once the `Start` method has run, we output what we have recorded. + +```csharp +var scheduler = new TestScheduler(); +var source = Observable.Interval(TimeSpan.FromSeconds(1), scheduler) + .Take(4); + +var testObserver = scheduler.Start( + () => source, + 0, + 0, + TimeSpan.FromSeconds(5).Ticks); + +Console.WriteLine("Time is {0} ticks", scheduler.Clock); +Console.WriteLine("Received {0} notifications", testObserver.Messages.Count); + +foreach (Recorded> message in testObserver.Messages) +{ + Console.WriteLine("{0} @ {1}", message.Value, message.Time); +} +``` + +Output: + +``` +Time is 50000000 ticks +Received 5 notifications +OnNext(0) @ 10000001 +OnNext(1) @ 20000001 +OnNext(2) @ 30000001 +OnNext(3) @ 40000001 +OnCompleted() @ 40000001 +``` + +Note that the `ITestObserver` records `OnNext` and `OnCompleted` notifications. If the sequence was to terminate in error, the `ITestObserver` would record the `OnError` notification instead. + +We can play with the input variables to see the impact it makes. We know that the `Observable.Interval` method is a Cold Observable, so the virtual time of the creation is not relevant. Changing the virtual time of the subscription can change our results. If we change it to 2 seconds, we will notice that if we leave the disposal time at 5 seconds, we will miss some messages. + +```csharp +var testObserver = scheduler.Start( + () => Observable.Interval(TimeSpan.FromSeconds(1), scheduler).Take(4), + 0, + TimeSpan.FromSeconds(2).Ticks, + TimeSpan.FromSeconds(5).Ticks); +``` + +Output: + +``` +Time is 50000000 ticks +Received 2 notifications +OnNext(0) @ 30000000 +OnNext(1) @ 40000000 +``` + +We start the subscription at 2 seconds; the `Interval` produces values after each second (i.e. second 3 and 4), and we dispose on second 5. So we miss the other two `OnNext` messages as well as the `OnCompleted` message. + +There are two other overloads to this `TestScheduler.Start` method. + +```csharp +public ITestableObserver Start(Func> create, long disposed) +{ + if (create == null) + { + throw new ArgumentNullException("create"); + } + else + { + return this.Start(create, 100L, 200L, disposed); + } +} + +public ITestableObserver Start(Func> create) +{ + if (create == null) + { + throw new ArgumentNullException("create"); + } + else + { + return this.Start(create, 100L, 200L, 1000L); + } +} +``` + +As you can see, these overloads just call through to the variant we have been looking at, but passing some default values. These default values provide short gaps before creation and between creation and subscription, giving enough space to configure other things to happen between them. And then the disposal happens a bit later, allowing a little longer for the thing to run. There's nothing particularly magical about these default values, but if you value a lack of clutter over it being completely obvious what happens when, and are happy to rely on the invisible effects of convention, then you might prefer this. The Rx source code itself contains thousands of tests, and a very large number of them use the simplest `Start` overload, and developers working in the code base day in, day out soon get used to the idea that creation occurs at time 100, and subscription at time 200, and that test everything you need to before 1000. + +### CreateColdObservable + +Just as we can record an observable sequence, we can also use `CreateColdObservable` to play back a set of `Recorded>`. The signature for `CreateColdObservable` simply takes a `params` array of recorded notifications. + +```csharp +// Creates a cold observable from an array of notifications. +// Returns a cold observable exhibiting the specified message behavior. +public ITestableObservable CreateColdObservable( + params Recorded>[] messages) +{...} +``` + +The `CreateColdObservable` returns an `ITestableObservable`. This interface extends `IObservable` by exposing the list of "subscriptions" and the list of messages it will produce. + +```csharp +public interface ITestableObservable : IObservable +{ + // Gets the subscriptions to the observable. + IList Subscriptions { get; } + + // Gets the recorded notifications sent by the observable. + IList>> Messages { get; } +} +``` + +Using `CreateColdObservable`, we can emulate the `Observable.Interval` test we had earlier. + +```csharp +var scheduler = new TestScheduler(); +var source = scheduler.CreateColdObservable( + new Recorded>(10000000, Notification.CreateOnNext(0L)), + new Recorded>(20000000, Notification.CreateOnNext(1L)), + new Recorded>(30000000, Notification.CreateOnNext(2L)), + new Recorded>(40000000, Notification.CreateOnNext(3L)), + new Recorded>(40000000, Notification.CreateOnCompleted()) + ); + +var testObserver = scheduler.Start( + () => source, + 0, + 0, + TimeSpan.FromSeconds(5).Ticks); + +Console.WriteLine("Time is {0} ticks", scheduler.Clock); +Console.WriteLine("Received {0} notifications", testObserver.Messages.Count); + +foreach (Recorded> message in testObserver.Messages) +{ + Console.WriteLine(" {0} @ {1}", message.Value, message.Time); +} +``` + +Output: + +``` +Time is 50000000 ticks +Received 5 notifications +OnNext(0) @ 10000001 +OnNext(1) @ 20000001 +OnNext(2) @ 30000001 +OnNext(3) @ 40000001 +OnCompleted() @ 40000001 +``` + +Note that our output is exactly the same as the previous example with `Observable.Interval`. + +### CreateHotObservable + +We can also create hot test observable sequences using the `CreateHotObservable` method. It has the same parameters and return value as `CreateColdObservable`; the difference is that the virtual time specified for each message is now relative to when the observable was created, not when it is subscribed to as per the `CreateColdObservable` method. + +This example is just that last "cold" sample, but creating a Hot observable instead. + +```csharp +var scheduler = new TestScheduler(); +var source = scheduler.CreateHotObservable( + new Recorded>(10000000, Notification.CreateOnNext(0L)), +// ... +``` + +Output: + +``` +Time is 50000000 ticks +Received 5 notifications +OnNext(0) @ 10000000 +OnNext(1) @ 20000000 +OnNext(2) @ 30000000 +OnNext(3) @ 40000000 +OnCompleted() @ 40000000 +``` + +Note that the output is almost the same. Scheduling of the creation and subscription do not affect the Hot Observable, therefore the notifications happen 1 tick earlier than their Cold counterparts. + +We can see the major difference a Hot Observable bears by changing the virtual create time and virtual subscribe time to be different values. With a Cold Observable, the virtual create time has no real impact, as subscription is what initiates any action. This means we can not miss any early message on a Cold Observable. For Hot Observables, we can miss messages if we subscribe too late. Here, we create the Hot Observable immediately, but only subscribe to it after 1 second (thus missing the first message). + +```csharp +var scheduler = new TestScheduler(); +var source = scheduler.CreateHotObservable( + new Recorded>(10000000, Notification.CreateOnNext(0L)), + new Recorded>(20000000, Notification.CreateOnNext(1L)), + new Recorded>(30000000, Notification.CreateOnNext(2L)), + new Recorded>(40000000, Notification.CreateOnNext(3L)), + new Recorded>(40000000, Notification.CreateOnCompleted()) + ); + +var testObserver = scheduler.Start( + () => source, + 0, + TimeSpan.FromSeconds(1).Ticks, + TimeSpan.FromSeconds(5).Ticks); + +Console.WriteLine("Time is {0} ticks", scheduler.Clock); +Console.WriteLine("Received {0} notifications", testObserver.Messages.Count); + +foreach (Recorded> message in testObserver.Messages) +{ + Console.WriteLine(" {0} @ {1}", message.Value, message.Time); +} +``` + +Output: + +``` +Time is 50000000 ticks +Received 4 notifications +OnNext(1) @ 20000000 +OnNext(2) @ 30000000 +OnNext(3) @ 40000000 +OnCompleted() @ 40000000 +``` + +### CreateObserver + +Finally, if you do not want to use the `TestScheduler.Start` methods, and you need more fine-grained control over your observer, you can use `TestScheduler.CreateObserver()`. This will return an `ITestObserver` that you can use to manage the subscriptions to your observable sequences with. Furthermore, you will still be exposed to the recorded messages and any subscribers. + +Current industry standards demand broad coverage of automated unit tests to meet quality assurance standards. Concurrent programming, however, is often a difficult area to test well. Rx delivers a well-designed implementation of testing features, allowing deterministic and high-throughput testing. The `TestScheduler` provides methods to control virtual time and produce observable sequences for testing. This ability to easily and reliably test concurrent systems sets Rx apart from many other libraries. \ No newline at end of file From 44f40055af87401ec6ca3225f7ba71a757306c16 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Thu, 14 Sep 2023 15:01:58 +0100 Subject: [PATCH 041/142] Move remaining content out of combiningsequences and into other chapters --- content/08_Partitioning.md | 161 ++++++ content/09_CombiningSequences.md | 194 +++++++ content/91_TestingRx.md | 722 --------------------------- content/92_SequencesOfCoincidence.md | 536 -------------------- 4 files changed, 355 insertions(+), 1258 deletions(-) delete mode 100644 content/91_TestingRx.md delete mode 100644 content/92_SequencesOfCoincidence.md diff --git a/content/08_Partitioning.md b/content/08_Partitioning.md index 28cc4df..ae2ee29 100644 --- a/content/08_Partitioning.md +++ b/content/08_Partitioning.md @@ -342,4 +342,165 @@ Nested observables produce their items as and when they become available. They c TODO: need a good example for when you might actually use `Window`. +TODO: this next bit was imported from Sequences of Coincidence (now dropped), and needs to be edited + +### Customizing windows + +The overloads above provide simple ways to break a sequence into smaller nested windows using a count and/or a time span. Now we will look at the other overloads, that provide more flexibility over how windows are managed. + +```csharp +// Projects each element of an observable sequence into consecutive non-overlapping windows. +// windowClosingSelector : A function invoked to define the boundaries of the produced +// windows. A new window is started when the previous one is closed. +public static IObservable> Window +( + this IObservable source, + Func> windowClosingSelector +) +{...} +``` + +The first of these complex overloads allows us to control when windows should close. The `windowClosingSelector` function is called each time a window is created. Windows are created on subscription and immediately after a window closes; windows close when the sequence from the `windowClosingSelector` produces a value. The value is disregarded so it doesn't matter what type the sequence values are; in fact you can just complete the sequence from `windowClosingSelector` to close the window instead. + +In this example, we create a window with a closing selector. We return the same subject from that selector every time, then notify from the subject whenever a user presses enter from the console. + +```csharp +var windowIdx = 0; +var source = Observable.Interval(TimeSpan.FromSeconds(1)).Take(10); +var closer = new Subject(); +source.Window(() => closer) + .Subscribe(window => + { + var thisWindowIdx = windowIdx++; + Console.WriteLine("--Starting new window"); + var windowName = "Window" + thisWindowIdx; + window.Subscribe( + value => Console.WriteLine("{0} : {1}", windowName, value), + ex => Console.WriteLine("{0} : {1}", windowName, ex), + () => Console.WriteLine("{0} Completed", windowName)); + }, + () => Console.WriteLine("Completed")); + +var input = ""; +while (input!="exit") +{ + input = Console.ReadLine(); + closer.OnNext(Unit.Default); +} +``` +Output (when I hit enter after '1' and '5' are displayed): + +``` +--Starting new window +window0 : 0 +window0 : 1 + +window0 Completed + +--Starting new window +window1 : 2 +window1 : 3 +window1 : 4 +window1 : 5 + +window1 Completed + +--Starting new window +window2 : 6 +window2 : 7 +window2 : 8 +window2 : 9 + +window2 Completed + +Completed +``` + +The most complex overload of `Window` allows us to create potentially overlapping windows. + +```csharp +// Projects each element of an observable sequence into zero or more windows. +// windowOpenings : Observable sequence whose elements denote the creation of new windows. +// windowClosingSelector : A function invoked to define the closing of each produced window. +public static IObservable> Window + +( + this IObservable source, + IObservable windowOpenings, + Func> windowClosingSelector +) +{...} +``` + +This overload takes three arguments + +1. The source sequence +2. A sequence that indicates when a new window should be opened +3. A function that takes a window opening value, and returns a window closing sequence + +This overload offers great flexibility in the way windows are opened and closed. Windows can be largely independent from each other; they can overlap, vary in size and even skip values from the source. + +To ease our way into this more complex overload, let's first try to use it to recreate a simpler version of `Window` (the overload that takes a count). To do so, we need to open a window once on the initial subscription, and once each time the source has produced then specified count. The window needs to close each time that count is reached. To achieve this we only need the source sequence. We will share it by using the `Publish` method, then supply 'views' of the source as each of the arguments. + +```csharp +public static IObservable> MyWindow( + this IObservable source, + int count) +{ + var shared = source.Publish().RefCount(); + var windowEdge = shared + .Select((i, idx) => idx % count) + .Where(mod => mod == 0) + .Publish() + .RefCount(); + return shared.Window(windowEdge, _ => windowEdge); +} +``` + +If we now want to extend this method to offer skip functionality, we need to have two different sequences: one for opening and one for closing. We open a window on subscription and again after the `skip` items have passed. We close those windows after '`count`' items have passed since the window opened. + +```csharp +public static IObservable> MyWindow( + this IObservable source, + int count, + int skip) +{ + if (count <= 0) throw new ArgumentOutOfRangeException(); + if (skip <= 0) throw new ArgumentOutOfRangeException(); + + var shared = source.Publish().RefCount(); + var index = shared + .Select((i, idx) => idx) + .Publish() + .RefCount(); + + var windowOpen = index.Where(idx => idx % skip == 0); + var windowClose = index.Skip(count-1); + + return shared.Window(windowOpen, _ => windowClose); +} +``` + +We can see here that the `windowClose` sequence is re-subscribed to each time a window is opened, due to it being returned from a function. This allows us to reapply the skip (`Skip(count-1)`) for each window. Currently, we ignore the value that the `windowOpen` pushes to the `windowClose` selector, but if you require it for some logic, it is available to you. + +As you can see, the `Window` operator can be quite powerful. We can even use `Window` to replicate other operators; for instance we can create our own implementation of `Buffer` that way. We can have the `SelectMany` operator take a single value (the window) to produce zero or more values of another type (in our case, a single `IList`). To create the `IList` without blocking, we can apply the `Aggregate` method and use a new `List` as the seed. + +```csharp +public static IObservable> MyBuffer(this IObservable source, int count) +{ + return source.Window(count) + .SelectMany(window => + window.Aggregate( + new List(), + (list, item) => + { + list.Add(item); + return list; + })); +} +``` + +It may be an interesting exercise to try implementing other time shifting methods, like `Sample` or `Throttle`, with `Window`. + + TODO: summary for this chapter. \ No newline at end of file diff --git a/content/09_CombiningSequences.md b/content/09_CombiningSequences.md index 92c4425..11c3ce0 100644 --- a/content/09_CombiningSequences.md +++ b/content/09_CombiningSequences.md @@ -832,6 +832,200 @@ var systemStatus = webServerStatus .StartWith(false); ``` +TODO: these next two sequences were relocated from the now-dropped Sequences of Coincidence chapter. They need editing + +## Join + +The `Join` operator allows you to logically join two sequences. Whereas the `Zip` operator would pair values from the two sequences together by index, the `Join` operator allows you join sequences by intersecting windows. Like the `Window` overload we just looked at, you can specify when a window should close via an observable sequence; this sequence is returned from a function that takes an opening value. The `Join` operator has two such functions, one for the first source sequence and one for the second source sequence. Like the `Zip` operator, we also need to provide a selector function to produce the result item from the pair of values. + +```csharp +public static IObservable Join +( + this IObservable left, + IObservable right, + Func> leftDurationSelector, + Func> rightDurationSelector, + Func resultSelector +) +``` + +This is a complex signature to try and understand in one go, so let's take it one parameter at a time. + +`IObservable left` is the source sequence that defines when a window starts. This is just like the `Buffer` and `Window` operators, except that every value published from this source opens a new window. In `Buffer` and `Window`, by contrast, some values just fell into an existing window. + +I like to think of `IObservable right` as the window value sequence. While the left sequence controls opening the windows, the right sequence will try to pair up with a value from the left sequence. + +Let us imagine that our left sequence produces a value, which creates a new window. If the right sequence produces a value while the window is open, then the `resultSelector` function is called with the two values. This is the crux of join, pairing two values from a sequence that occur within the same window. This then leads us to our next question; when does the window close? The answer illustrates both the power and the complexity of the `Join` operator. + +When `left` produces a value, a window is opened. That value is also passed, at that time, to the `leftDurationSelector` function, which returns an `IObservable`. When that sequence produces a value or completes, the window for that value is closed. Note that it is irrelevant what the type of `TLeftDuration` is. This initially left me with the feeling that `IObservable` was a bit excessive as you effectively just need some sort of event to say 'Closed'. However, by being allowed to use `IObservable`, you can do some clever manipulation as we will see later. + +Let us now imagine a scenario where the left sequence produces values twice as fast as the right sequence. Imagine that in addition we never close the windows; we could do this by always returning `Observable.Never()` from the `leftDurationSelector` function. This would result in the following pairs being produced. + +Left Sequence + +
+
L 0-1-2-3-4-5-
+
+ +Right Sequence + +
+
R --A---B---C-
+
+
+
0, A
+
1, A
+
0, B
+
1, B
+
2, B
+
3, B
+
0, C
+
1, C
+
2, C
+
3, C
+
4, C
+
5, C
+
+ +As you can see, the left values are cached and replayed each time the right produces a value. + +Now it seems fairly obvious that, if I immediately closed the window by returning `Observable.Empty`, or perhaps `Observable.Return(0)`, windows would never be opened thus no pairs would ever get produced. However, what could I do to make sure that these windows did not overlap- so that, once a second value was produced I would no longer see the first value? Well, if we returned the `left` sequence from the `leftDurationSelector`, that could do the trick. But wait, when we return the sequence `left` from the `leftDurationSelector`, it would try to create another subscription and that may introduce side effects. The quick answer to that is to `Publish` and `RefCount` the `left` sequence. If we do that, the results look more like this. + +
+
left  |-0-1-2-3-4-5|
+
right |---A---B---C|
+
result|---1---3---5
+
          A   B   C
+
+ +The last example is very similar to `CombineLatest`, except that it is only producing a pair when the right sequence changes. We could use `Join` to produce our own version of [`CombineLatest`](12_CombiningSequences.html#CombineLatest). If the values from the left sequence expire when the next value from left was notified, then I would be well on my way to implementing my version of `CombineLatest`. However I need the same thing to happen for the right. Luckily the `Join` operator provides a `rightDurationSelector` that works just like the `leftDurationSelector`. This is simple to implement; all I need to do is return a reference to the same left sequence when a left value is produced, and do the same for the right. The code looks like this. + +```csharp +public static IObservable MyCombineLatest +( + IObservable left, + IObservable right, + Func resultSelector +) +{ + var refcountedLeft = left.Publish().RefCount(); + var refcountedRight = right.Publish().RefCount(); + + return Observable.Join( + refcountedLeft, + refcountedRight, + value => refcountedLeft, + value => refcountedRight, + resultSelector); +} +``` + +While the code above is not production quality (it would need to have some gates in place to mitigate race conditions), it shows how powerful `Join` is; we can actually use it to create other operators! + +## GroupJoin + +When the `Join` operator pairs up values that coincide within a window, it will pass the scalar values left and right to the `resultSelector`. The `GroupJoin` operator takes this one step further by passing the left (scalar) value immediately to the `resultSelector` with the right (sequence) value. The right parameter represents all of the values from the right sequences that occur within the window. Its signature is very similar to `Join`, but note the difference in the `resultSelector` parameter. + +```csharp +public static IObservable GroupJoin +( + this IObservable left, + IObservable right, + Func> leftDurationSelector, + Func> rightDurationSelector, + Func, TResult> resultSelector +) +``` + +If we went back to our first `Join` example where we had + +* the `left` producing values twice as fast as the right, +* the left never expiring +* the right immediately expiring + +this is what the result may look like + +
+
left              |-0-1-2-3-4-5|
+
right             |---A---B---C|
+
0th window values   --A---B---C|
+
1st window values     A---B---C|
+
2nd window values       --B---C|
+
3rd window values         B---C|
+
4th window values           --C|
+
5th window values             C|
+
+ +We could switch it around and have the left expired immediately and the right never expire. The result would then look like this: + +
+
left              |-0-1-2-3-4-5|
+
right             |---A---B---C|
+
0th window values   |
+
1st window values     A|
+
2nd window values       A|
+
3rd window values         AB|
+
4th window values           AB|
+
5th window values             ABC|
+
+ +This starts to make things interesting. Perceptive readers may have noticed that with `GroupJoin` you could effectively re-create your own `Join` method by doing something like this: + +```csharp +public IObservable MyJoin( + IObservable left, + IObservable right, + Func> leftDurationSelector, + Func> rightDurationSelector, + Func resultSelector) +{ + return Observable.GroupJoin + ( + left, + right, + leftDurationSelector, + rightDurationSelector, + (leftValue, rightValues)=> rightValues.Select(rightValue=>resultSelector(leftValue, rightValue)) + ) + .Merge(); +} +``` + +You could even create a crude version of `Window` with this code: + +```csharp +public IObservable> MyWindow(IObservable source, TimeSpan windowPeriod) +{ + return Observable.Create>(o =>; + { + var sharedSource = source + .Publish() + .RefCount(); + + var intervals = Observable.Return(0L) + .Concat(Observable.Interval(windowPeriod)) + .TakeUntil(sharedSource.TakeLast(1)) + .Publish() + .RefCount(); + + return intervals.GroupJoin( + sharedSource, + _ => intervals, + _ => Observable.Empty(), + (left, sourceValues) => sourceValues) + .Subscribe(o); + }); +} +``` + +For an alternative summary of reducing operators to a primitive set see Bart DeSmet's [excellent MINLINQ post](http://blogs.bartdesmet.net/blogs/bart/archive/2010/01/01/the-essence-of-linq-minlinq.aspx "The essence of LINQ - MinLINQ") (and [follow-up video](http://channel9.msdn.com/Shows/Going+Deep/Bart-De-Smet-MinLINQ-The-Essence-of-LINQ "The essence of LINQ - MINLINQ - Channel9") ). Bart is one of the key members of the team that built Rx, so it is great to get some insight on how the creators of Rx think. + +Showcasing `GroupJoin` and the use of other operators turned out to be a fun academic exercise. While watching videos and reading books on Rx will increase your familiarity with it, nothing replaces the experience of actually picking it apart and using it in earnest. + +`GroupJoin` and other window operators reduce the need for low-level plumbing of state and concurrency. By exposing a high-level API, code that would be otherwise difficult to write, becomes a cinch to put together. For example, those in the finance industry could use `GroupJoin` to easily produce real-time Volume or Time Weighted Average Prices (VWAP/TWAP). + +Rx delivers yet another way to query data in motion by allowing you to interrogate sequences of coincidence. This enables you to solve the intrinsically complex problem of managing state and concurrency while performing matching from multiple sources. By encapsulating these low level operations, you are able to leverage Rx to design your software in an expressive and testable fashion. Using the Rx operators as building blocks, your code effectively becomes a composition of many simple operators. This allows the complexity of the domain code to be the focus, not the otherwise incidental supporting code. + ### And-Then-When diff --git a/content/91_TestingRx.md b/content/91_TestingRx.md deleted file mode 100644 index 757010b..0000000 --- a/content/91_TestingRx.md +++ /dev/null @@ -1,722 +0,0 @@ ---- -title: Testing Rx ---- -`` -# Testing Rx - -Modern quality assurance standards demand a level of automated testing that can help evaluate and prevent bugs. It is good practice to have a suite of tests that verify correct behaviour and to run this as part of the build process to detect regressions early. - -The `System.Reactive` source code includes a comprehensive tests suite. Testing Rx-based code presents some challenges, especially when time-sensitive operators are involved. Rx.NET's test suite includes many tests designed to exercise awkward edge cases to ensure predictable behaviour under load. This is only possible because Rx.NET was designed to be testable. - -In this chapters, we'll show how you can take advantage of Rx's testability in your own code. - -## Virtual Time - -It's common to deal with timing in Rx. As you've seen, it offers several operators that take time into account, and this presents a challenge. We don't want to introduce slow tests, because that can make test suites take too long to execute, but how might we test an application that waits for the user to stop typing for half a second before submitting a query? Non-deterministic tests can also be a problem: when there are race conditions it can be very hard to recreate these reliably. - - The [Scheduling and Threading](./11_SchedulingAndThreading.md) chapter described how schedulers use a virtualized representation of time. This is critical for enabling tests to validate time-related behaviour. It enables us to control Rx's perception of the progression of time, enabling us to write tests that logically take seconds, but which execute in microseconds. - -Consider this example, where we create a sequence that publishes values every second for five seconds. - -```csharp -IObservable interval = Observable - .Interval(TimeSpan.FromSeconds(1)) - .Take(5); -``` - -A naive a test to ensure that this produces five values at one second intervals would take five seconds to run. That would be no good; we want hundreds if not thousands of tests to run in five seconds. Another very common requirement is to test a timeout. Here, we try to test a timeout of one minute. - -```csharp -var never = Observable.Never(); -var exceptionThrown = false; - -never.Timeout(TimeSpan.FromMinutes(1)) - .Subscribe( - i => Console.WriteLine("This will never run."), - ex => exceptionThrown = true); - -Assert.IsTrue(exceptionThrown); -``` - -It looks like we would have no choice but to make our test wait for a minute before running that assert. In practice, we'd want to wait a little over a minute, because if the computer running the test is busy, it might run the relevant code a bit later than we've asked. This kind of scenario is notorious for causing tests to fail occasionally even when there's no real problem in the code being tested. - -Nobody wants slow, inconsistent tests. So let's look at how Rx helps us to avoid these problems. - -## TestScheduler - -The [Scheduling and Threading](11_SchedulingAndThreading.md) chapter explained that schedulers determine when and how to execute code, and that they keep track of time. Most of the schedulers we looked at in that chapter addressed various threading concerns, and when it came to timing, they all attempted to run work at the time requested. But Rx provides `TestScheduler`, which handles time completely differently. It takes advantage of the fact that schedulers control all time-related behaviour to allow us to emulate and control time. - -**Note:** `TestScheduler` is not in the main `System.Reactive` package. You will need to add a reference to `Microsoft.Reactive.Testing` to use it. - -Any scheduler maintains a queue of actions to be executed. Each action is assigned a point in time when it should be executed. (Sometimes that time is "as soon as possible" but time-based operators will often schedule work to run at some specific time in the future.) If we use the `TestScheduler` it will effectively act as though time stands still until we tell it we want time to move on. - -In this example, we schedule a task to be run immediately by using the simplest `Schedule` overload. Even though this effectively asks for the work to be run as soon as possible, the `TestScheduler` always waits for us to tell it we're ready before processing newly queued work. We advance the virtual clock forward by one tick, at which point it will execute that queued work. (It runs all newly-queued "as soon as possible" work any time we advance the virtual time. If we advance the time far enough to mean that work that was previously logically in the future is now runnable, it runs that too.) - -```csharp -var scheduler = new TestScheduler(); -var wasExecuted = false; -scheduler.Schedule(() => wasExecuted = true); -Assert.IsFalse(wasExecuted); -scheduler.AdvanceBy(1); // execute 1 tick of queued actions -Assert.IsTrue(wasExecuted); -``` - -The `TestScheduler` implements the `IScheduler` interface and also defines methods allowing us to control and monitor virtual time. This shows these additional methods: - -```csharp -public class TestScheduler : // ... -{ - public bool IsEnabled { get; private set; } - public TAbsolute Clock { get; protected set; } - public void Start() - public void Stop() - public void AdvanceTo(long time) - public void AdvanceBy(long time) - - ... -} -``` - -`TestScheduler` works in the same units as [`TimeSpan.Ticks`](https://learn.microsoft.com/en-us/dotnet/api/system.timespan.ticks). If you want to move time forward by 1 second, you can call `scheduler.AdvanceBy(TimeSpan.FromSeconds(1).Ticks)`. One tick corresponds to 100ns, so 1 second is 10,000,000 ticks. - -### AdvanceTo - -The `AdvanceTo(long)` method sets the virtual time to the specified number of ticks. This will execute all the actions that have been scheduled up to that absolute time specified. The `TestScheduler` uses ticks as its measurement of time. In this example, we schedule actions to be invoked now, in 10 ticks, and in 20 ticks (1 and 2 microseconds respectively). - -```csharp -var scheduler = new TestScheduler(); -scheduler.Schedule(() => Console.WriteLine("A")); // Schedule immediately -scheduler.Schedule(TimeSpan.FromTicks(10), () => Console.WriteLine("B")); -scheduler.Schedule(TimeSpan.FromTicks(20), () => Console.WriteLine("C")); - -Console.WriteLine("scheduler.AdvanceTo(1);"); -scheduler.AdvanceTo(1); - -Console.WriteLine("scheduler.AdvanceTo(10);"); -scheduler.AdvanceTo(10); - -Console.WriteLine("scheduler.AdvanceTo(15);"); -scheduler.AdvanceTo(15); - -Console.WriteLine("scheduler.AdvanceTo(20);"); -scheduler.AdvanceTo(20); -``` - -Output: - -``` -scheduler.AdvanceTo(1); -A -scheduler.AdvanceTo(10); -B -scheduler.AdvanceTo(15); -scheduler.AdvanceTo(20); -C -``` - -Note that nothing happened when we advanced to 15 ticks. All work scheduled before 15 ticks had been performed and we had not advanced far enough yet to get to the next scheduled action. - -### AdvanceBy - -The `AdvanceBy(long)` method allows us to move the clock forward a relative amount of time. Again, the measurements are in ticks. We can take the last example and modify it to use `AdvanceBy(long)`. - -```csharp -var scheduler = new TestScheduler(); -scheduler.Schedule(() => Console.WriteLine("A")); // Schedule immediately -scheduler.Schedule(TimeSpan.FromTicks(10), () => Console.WriteLine("B")); -scheduler.Schedule(TimeSpan.FromTicks(20), () => Console.WriteLine("C")); - -Console.WriteLine("scheduler.AdvanceBy(1);"); -scheduler.AdvanceBy(1); - -Console.WriteLine("scheduler.AdvanceBy(9);"); -scheduler.AdvanceBy(9); - -Console.WriteLine("scheduler.AdvanceBy(5);"); -scheduler.AdvanceBy(5); - -Console.WriteLine("scheduler.AdvanceBy(5);"); -scheduler.AdvanceBy(5); -``` - -Output: - -``` -scheduler.AdvanceBy(1); -A -scheduler.AdvanceBy(9); -B -scheduler.AdvanceBy(5); -scheduler.AdvanceBy(5); -C -``` - -### Start - -The `TestScheduler`'s `Start()` method runs everything that has been scheduled, gradually advancing virtual time as necessary if any of the work was queued for a specific time. We take the same example again and swap out the `AdvanceBy(long)` calls for a single `Start()` call. - -```csharp -var scheduler = new TestScheduler(); -scheduler.Schedule(() => Console.WriteLine("A")); // Schedule immediately -scheduler.Schedule(TimeSpan.FromTicks(10), () => Console.WriteLine("B")); -scheduler.Schedule(TimeSpan.FromTicks(20), () => Console.WriteLine("C")); - -Console.WriteLine("scheduler.Start();"); -scheduler.Start(); - -Console.WriteLine("scheduler.Clock:{0}", scheduler.Clock); -``` - -Output: - -``` -scheduler.Start(); -A -B -C -scheduler.Clock:20 -``` - -Note that once all of the scheduled actions have been executed, the virtual clock matches our last scheduled item (20 ticks). - -We further extend our example by scheduling a new action to happen after `Start()` has already been called. - -```csharp -var scheduler = new TestScheduler(); -scheduler.Schedule(() => Console.WriteLine("A")); -scheduler.Schedule(TimeSpan.FromTicks(10), () => Console.WriteLine("B")); -scheduler.Schedule(TimeSpan.FromTicks(20), () => Console.WriteLine("C")); - -Console.WriteLine("scheduler.Start();"); -scheduler.Start(); - -Console.WriteLine("scheduler.Clock:{0}", scheduler.Clock); - -scheduler.Schedule(() => Console.WriteLine("D")); -``` - -Output: - -``` -scheduler.Start(); -A -B -C -scheduler.Clock:20 -``` - -Note that the output is exactly the same; If we want our fourth action to be executed, we will have to call `Start()` (or `AdvanceTo` or `AdvanceBy`) again. - -### Stop - -There is a `Stop()` method whose name seems to imply some symmetry with `Start()`. This sets the scheduler's `IsEnabled` property to false, and if `Start` is currently running, this means that it will stop inspecting the queue for further work, and will return as soon as the work item currently being processed completes. - -In this example, we show how you could use `Stop()` to pause processing of scheduled actions. - -```csharp -var scheduler = new TestScheduler(); -scheduler.Schedule(() => Console.WriteLine("A")); -scheduler.Schedule(TimeSpan.FromTicks(10), () => Console.WriteLine("B")); -scheduler.Schedule(TimeSpan.FromTicks(15), scheduler.Stop); -scheduler.Schedule(TimeSpan.FromTicks(20), () => Console.WriteLine("C")); - -Console.WriteLine("scheduler.Start();"); -scheduler.Start(); -Console.WriteLine("scheduler.Clock:{0}", scheduler.Clock); -``` - -Output: - -``` -scheduler.Start(); -A -B -scheduler.Clock:15 -``` - -Note that "C" never gets printed as we stop the clock at 15 ticks. - -Since `Start` automatically stops when it has drained the work queue, you're under no obligation to call `Stop`. It's there only if you want to call `Start` but then pause processing part way through the test. - -### Schedule collision - -When scheduling actions, it is possible and even likely that many actions will be scheduled for the same point in time. This most commonly would occur when scheduling multiple actions for _now_. It could also happen that there are multiple actions scheduled for the same point in the future. The `TestScheduler` has a simple way to deal with this. When actions are scheduled, they are marked with the clock time they are scheduled for. If multiple items are scheduled for the same point in time, they are queued in order that they were scheduled; when the clock advances, all items for that point in time are executed in the order that they were scheduled. - -```csharp -var scheduler = new TestScheduler(); -scheduler.Schedule(TimeSpan.FromTicks(10), () => Console.WriteLine("A")); -scheduler.Schedule(TimeSpan.FromTicks(10), () => Console.WriteLine("B")); -scheduler.Schedule(TimeSpan.FromTicks(10), () => Console.WriteLine("C")); - -Console.WriteLine("scheduler.Start();"); -scheduler.Start(); -Console.WriteLine("scheduler.Clock:{0}", scheduler.Clock); -``` - -Output: - -``` -scheduler.AdvanceTo(10); -A -B -C -scheduler.Clock:10 -``` - -Note that the virtual clock is at 10 ticks, the time we advanced to. - -## Testing Rx code - -Now that we have learnt a little bit about the `TestScheduler`, let's look at how we could use it to test our two initial code snippets that use `Interval` and `Timeout`. We want to execute tests as fast as possible but still maintain the semantics of time. In this example we generate our five values one second apart but pass in our `TestScheduler` to the `Interval` method to use instead of the default scheduler. - -```csharp -[TestMethod] -public void Testing_with_test_scheduler() -{ - var expectedValues = new long[] {0, 1, 2, 3, 4}; - var actualValues = new List(); - var scheduler = new TestScheduler(); - - var interval = Observable.Interval(TimeSpan.FromSeconds(1), scheduler) - .Take(5); - - interval.Subscribe(actualValues.Add); - - scheduler.Start(); - CollectionAssert.AreEqual(expectedValues, actualValues); - // Executes in less than 0.01s "on my machine" -} -``` - -While this is mildly interesting, what I think is more important is how we would test a real piece of code. Imagine, if you will, a ViewModel that subscribes to a stream of prices. As prices are published, it adds them to a collection. Assuming this is a WPF implementation, we take the liberty of enforcing that the subscription be done on the `ThreadPool` and the observing is executed on the `Dispatcher`. - -```csharp -public class MyViewModel : IMyViewModel -{ - private readonly IMyModel _myModel; - private readonly ObservableCollection _prices; - - public MyViewModel(IMyModel myModel) - { - _myModel = myModel; - _prices = new ObservableCollection(); - } - - public void Show(string symbol) - { - // TODO: resource mgt, exception handling etc... - _myModel.PriceStream(symbol) - .SubscribeOn(Scheduler.ThreadPool) - .ObserveOn(Scheduler.Dispatcher) - .Timeout(TimeSpan.FromSeconds(10), Scheduler.ThreadPool) - .Subscribe( - Prices.Add, - ex=> - { - if(ex is TimeoutException) - IsConnected = false; - }); - IsConnected = true; - } - - public ObservableCollection Prices - { - get { return _prices; } - } - - public bool IsConnected { get; private set; } -} -``` - -### Injecting scheduler dependencies - -While the snippet of code above may do what we want it to, it will be hard to test as it is accessing the schedulers via static properties. You will need some way of enabling tests to supply different schedulers during testing. In this example, we're going to define an interface for this purpose: - -```csharp -public interface ISchedulerProvider -{ - IScheduler CurrentThread { get; } - IScheduler Dispatcher { get; } - IScheduler Immediate { get; } - IScheduler NewThread { get; } - IScheduler ThreadPool { get; } - IScheduler TaskPool { get; } -} -``` - -The default implementation that we would run in production is implemented as follows: - -```csharp -public sealed class SchedulerProvider : ISchedulerProvider -{ - public IScheduler CurrentThread => Scheduler.CurrentThread; - public IScheduler Dispatcher => DispatcherScheduler.Instance; - public IScheduler Immediate => Scheduler.Immediate; - public IScheduler NewThread => Scheduler.NewThread; - public IScheduler ThreadPool => Scheduler.ThreadPool; - public IScheduler TaskPool => Scheduler.TaskPool; -} -``` - -We can substitute implementations of `ISchedulerProvider` to help with testing. For example: - -```csharp -public sealed class TestSchedulers : ISchedulerProvider -{ - // Schedulers available as TestScheduler type - public TestScheduler CurrentThread { get; } = new TestScheduler(); - public TestScheduler Dispatcher { get; } = new TestScheduler(); - public TestScheduler Immediate { get; } = new TestScheduler(); - public TestScheduler NewThread { get; } = new TestScheduler(); - public TestScheduler ThreadPool { get; } = new TestScheduler(); - - // ISchedulerService needs us to return IScheduler, but we want the properties - // to return TestScheduler for the convenience of test code, so we provide - // explicit implementations of all the properties to match ISchedulerService. - IScheduler ISchedulerProvider.CurrentThread => CurrentThread; - IScheduler ISchedulerProvider.Dispatcher => Dispatcher; - IScheduler ISchedulerProvider.Immediate => Immediate; - IScheduler ISchedulerProvider.NewThread => NewThread; - IScheduler ISchedulerProvider.ThreadPool => ThreadPool; -} -``` - -Note that `ISchedulerProvider` is implemented explicitly because that interface requires each property to return an `IScheduler`, but our tests will need to access the `TestScheduler` instances directly. I can now write some tests for my ViewModel. Below, we test a modified version of the `MyViewModel` class that takes an `ISchedulerProvider` and uses that instead of the static schedulers from the `Scheduler` class. We also use the popular [Moq](https://github.com/Moq) framework to provide a suitable fake implementation of our model. - -```csharp -[TestInitialize] -public void SetUp() -{ - _myModelMock = new Mock(); - _schedulerProvider = new TestSchedulers(); - _viewModel = new MyViewModel(_myModelMock.Object, _schedulerProvider); -} - -[TestMethod] -public void Should_add_to_Prices_when_Model_publishes_price() -{ - decimal expected = 1.23m; - var priceStream = new Subject(); - _myModelMock.Setup(svc => svc.PriceStream(It.IsAny())).Returns(priceStream); - - _viewModel.Show("SomeSymbol"); - - // Schedule the OnNext - _schedulerProvider.ThreadPool.Schedule(() => priceStream.OnNext(expected)); - - Assert.AreEqual(0, _viewModel.Prices.Count); - - // Execute the OnNext action - _schedulerProvider.ThreadPool.AdvanceBy(1); - Assert.AreEqual(0, _viewModel.Prices.Count); - - // Execute the OnNext handler - _schedulerProvider.Dispatcher.AdvanceBy(1); - Assert.AreEqual(1, _viewModel.Prices.Count); - Assert.AreEqual(expected, _viewModel.Prices.First()); -} - -[TestMethod] -public void Should_disconnect_if_no_prices_for_10_seconds() -{ - var timeoutPeriod = TimeSpan.FromSeconds(10); - var priceStream = Observable.Never(); - _myModelMock.Setup(svc => svc.PriceStream(It.IsAny())).Returns(priceStream); - - _viewModel.Show("SomeSymbol"); - - _schedulerProvider.ThreadPool.AdvanceBy(timeoutPeriod.Ticks - 1); - Assert.IsTrue(_viewModel.IsConnected); - _schedulerProvider.ThreadPool.AdvanceBy(timeoutPeriod.Ticks); - Assert.IsFalse(_viewModel.IsConnected); -} -``` - -Output: - -``` -2 passed, 0 failed, 0 skipped, took 0.41 seconds (MSTest 10.0). -``` - -These two tests ensure five things: - -* That the `Price` property has prices added to it as the model produces them -* That the sequence is subscribed to on the ThreadPool -* That the `Price` property is updated on the Dispatcher i.e. the sequenceis observed on the Dispatcher -* That a timeout of 10 seconds between prices will set the ViewModel to disconnected -* The tests run fast. - -While the time to run the tests is not that impressive, most of that time seems to be spent warming up my test harness. Moreover, increasing the test count to 10 only adds 0.03seconds. In general, a modern CPU should be able to execute thousands of unit tests per second. - -In the first test, we can see that only once both the `ThreadPool` and the `Dispatcher` schedulers have been run will we get a result. In the second test, it helps to verify that the timeout is not less than 10 seconds. - -In some scenarios, you are not interested in the scheduler and you want to be focusing your tests on other functionality. If this is the case, then you may want to create another test implementation of the `ISchedulerProvider` that returns the `ImmediateScheduler` for all of its members. That can help reduce the noise in your tests. - -```csharp -public sealed class ImmediateSchedulers : ISchedulerService -{ - public IScheduler CurrentThread => Scheduler.Immediate; - public IScheduler Dispatcher => Scheduler.Immediate; - public IScheduler Immediate => Scheduler.Immediate; - public IScheduler NewThread => Scheduler.Immediate; - public IScheduler ThreadPool => Scheduler.Immediate; -} -``` - -## Advanced features - ITestableObserver - -The `TestScheduler` provides further advanced features. These can be useful when parts of your test setup need to run at particular virtual times. - -### Start(Func>) - -There are three overloads to `Start`, which are used to start an observablesequence at a given time, record the notifications it makes and dispose of the subscription at a given time. This can be confusing at first, as the parameterless overload of `Start` is quite unrelated. These three overloads return an `ITestableObserver` which allows you to record the notifications from an observable sequence, much like the `Materialize` method we saw in the [Transformation chapter](06_Transformation.md#materialize-and-dematerialize). - -```csharp -public interface ITestableObserver : IObserver -{ - // Gets recorded notifications received by the observer. - IList>> Messages { get; } -} -``` - -While there are three overloads, we will look at the most specific one first. This overload takes four parameters: - -* an observable sequence factory delegate -* the point in time to invoke the factory -* the point in time to subscribe to the observable sequence returned from the factory -* the point in time to dispose of the subscription - -The _time_ for the last three parameters is measured in ticks, as per the rest of the `TestScheduler` members. - -```csharp -public ITestableObserver Start( - Func> create, - long created, - long subscribed, - long disposed) -{...} -``` - -We could use this method to test the `Observable.Interval` factory method. Here, we create an observable sequence that spawns a value every second for 4 seconds. We use the `TestScheduler.Start` method to create and subscribe to it immediately (by passing 0 for the second and third parameters). We dispose of our subscription after 5 seconds. Once the `Start` method has run, we output what we have recorded. - -```csharp -var scheduler = new TestScheduler(); -var source = Observable.Interval(TimeSpan.FromSeconds(1), scheduler) - .Take(4); - -var testObserver = scheduler.Start( - () => source, - 0, - 0, - TimeSpan.FromSeconds(5).Ticks); - -Console.WriteLine("Time is {0} ticks", scheduler.Clock); -Console.WriteLine("Received {0} notifications", testObserver.Messages.Count); - -foreach (Recorded> message in testObserver.Messages) -{ - Console.WriteLine("{0} @ {1}", message.Value, message.Time); -} -``` - -Output: - -``` -Time is 50000000 ticks -Received 5 notifications -OnNext(0) @ 10000001 -OnNext(1) @ 20000001 -OnNext(2) @ 30000001 -OnNext(3) @ 40000001 -OnCompleted() @ 40000001 -``` - -Note that the `ITestObserver` records `OnNext` and `OnCompleted` notifications. If the sequence was to terminate in error, the `ITestObserver` would record the `OnError` notification instead. - -We can play with the input variables to see the impact it makes. We know that the `Observable.Interval` method is a Cold Observable, so the virtual time of the creation is not relevant. Changing the virtual time of the subscription can change our results. If we change it to 2 seconds, we will notice that if we leave the disposal time at 5 seconds, we will miss some messages. - -```csharp -var testObserver = scheduler.Start( - () => Observable.Interval(TimeSpan.FromSeconds(1), scheduler).Take(4), - 0, - TimeSpan.FromSeconds(2).Ticks, - TimeSpan.FromSeconds(5).Ticks); -``` - -Output: - -``` -Time is 50000000 ticks -Received 2 notifications -OnNext(0) @ 30000000 -OnNext(1) @ 40000000 -``` - -We start the subscription at 2 seconds; the `Interval` produces values after each second (i.e. second 3 and 4), and we dispose on second 5. So we miss the other two `OnNext` messages as well as the `OnCompleted` message. - -There are two other overloads to this `TestScheduler.Start` method. - -```csharp -public ITestableObserver Start(Func> create, long disposed) -{ - if (create == null) - { - throw new ArgumentNullException("create"); - } - else - { - return this.Start(create, 100L, 200L, disposed); - } -} - -public ITestableObserver Start(Func> create) -{ - if (create == null) - { - throw new ArgumentNullException("create"); - } - else - { - return this.Start(create, 100L, 200L, 1000L); - } -} -``` - -As you can see, these overloads just call through to the variant we have been looking at, but passing some default values. These default values provide short gaps before creation and between creation and subscription, giving enough space to configure other things to happen between them. And then the disposal happens a bit later, allowing a little longer for the thing to run. There's nothing particularly magical about these default values, but if you value a lack of clutter over it being completely obvious what happens when, and are happy to rely on the invisible effects of convention, then you might prefer this. The Rx source code itself contains thousands of tests, and a very large number of them use the simplest `Start` overload, and developers working in the code base day in, day out soon get used to the idea that creation occurs at time 100, and subscription at time 200, and that test everything you need to before 1000. - -### CreateColdObservable - -Just as we can record an observable sequence, we can also use `CreateColdObservable` to play back a set of `Recorded>`. The signature for `CreateColdObservable` simply takes a `params` array of recorded notifications. - -```csharp -// Creates a cold observable from an array of notifications. -// Returns a cold observable exhibiting the specified message behavior. -public ITestableObservable CreateColdObservable( - params Recorded>[] messages) -{...} -``` - -The `CreateColdObservable` returns an `ITestableObservable`. This interface extends `IObservable` by exposing the list of "subscriptions" and the list of messages it will produce. - -```csharp -public interface ITestableObservable : IObservable -{ - // Gets the subscriptions to the observable. - IList Subscriptions { get; } - - // Gets the recorded notifications sent by the observable. - IList>> Messages { get; } -} -``` - -Using `CreateColdObservable`, we can emulate the `Observable.Interval` test we had earlier. - -```csharp -var scheduler = new TestScheduler(); -var source = scheduler.CreateColdObservable( - new Recorded>(10000000, Notification.CreateOnNext(0L)), - new Recorded>(20000000, Notification.CreateOnNext(1L)), - new Recorded>(30000000, Notification.CreateOnNext(2L)), - new Recorded>(40000000, Notification.CreateOnNext(3L)), - new Recorded>(40000000, Notification.CreateOnCompleted()) - ); - -var testObserver = scheduler.Start( - () => source, - 0, - 0, - TimeSpan.FromSeconds(5).Ticks); - -Console.WriteLine("Time is {0} ticks", scheduler.Clock); -Console.WriteLine("Received {0} notifications", testObserver.Messages.Count); - -foreach (Recorded> message in testObserver.Messages) -{ - Console.WriteLine(" {0} @ {1}", message.Value, message.Time); -} -``` - -Output: - -``` -Time is 50000000 ticks -Received 5 notifications -OnNext(0) @ 10000001 -OnNext(1) @ 20000001 -OnNext(2) @ 30000001 -OnNext(3) @ 40000001 -OnCompleted() @ 40000001 -``` - -Note that our output is exactly the same as the previous example with `Observable.Interval`. - -### CreateHotObservable - -We can also create hot test observable sequences using the `CreateHotObservable` method. It has the same parameters and return value as `CreateColdObservable`; the difference is that the virtual time specified for each message is now relative to when the observable was created, not when it is subscribed to as per the `CreateColdObservable` method. - -This example is just that last "cold" sample, but creating a Hot observable instead. - -```csharp -var scheduler = new TestScheduler(); -var source = scheduler.CreateHotObservable( - new Recorded>(10000000, Notification.CreateOnNext(0L)), -// ... -``` - -Output: - -``` -Time is 50000000 ticks -Received 5 notifications -OnNext(0) @ 10000000 -OnNext(1) @ 20000000 -OnNext(2) @ 30000000 -OnNext(3) @ 40000000 -OnCompleted() @ 40000000 -``` - -Note that the output is almost the same. Scheduling of the creation and subscription do not affect the Hot Observable, therefore the notifications happen 1 tick earlier than their Cold counterparts. - -We can see the major difference a Hot Observable bears by changing the virtual create time and virtual subscribe time to be different values. With a Cold Observable, the virtual create time has no real impact, as subscription is what initiates any action. This means we can not miss any early message on a Cold Observable. For Hot Observables, we can miss messages if we subscribe too late. Here, we create the Hot Observable immediately, but only subscribe to it after 1 second (thus missing the first message). - -```csharp -var scheduler = new TestScheduler(); -var source = scheduler.CreateHotObservable( - new Recorded>(10000000, Notification.CreateOnNext(0L)), - new Recorded>(20000000, Notification.CreateOnNext(1L)), - new Recorded>(30000000, Notification.CreateOnNext(2L)), - new Recorded>(40000000, Notification.CreateOnNext(3L)), - new Recorded>(40000000, Notification.CreateOnCompleted()) - ); - -var testObserver = scheduler.Start( - () => source, - 0, - TimeSpan.FromSeconds(1).Ticks, - TimeSpan.FromSeconds(5).Ticks); - -Console.WriteLine("Time is {0} ticks", scheduler.Clock); -Console.WriteLine("Received {0} notifications", testObserver.Messages.Count); - -foreach (Recorded> message in testObserver.Messages) -{ - Console.WriteLine(" {0} @ {1}", message.Value, message.Time); -} -``` - -Output: - -``` -Time is 50000000 ticks -Received 4 notifications -OnNext(1) @ 20000000 -OnNext(2) @ 30000000 -OnNext(3) @ 40000000 -OnCompleted() @ 40000000 -``` - -### CreateObserver - -Finally, if you do not want to use the `TestScheduler.Start` methods, and you need more fine-grained control over your observer, you can use `TestScheduler.CreateObserver()`. This will return an `ITestObserver` that you can use to manage the subscriptions to your observable sequences with. Furthermore, you will still be exposed to the recorded messages and any subscribers. - -Current industry standards demand broad coverage of automated unit tests to meet quality assurance standards. Concurrent programming, however, is often a difficult area to test well. Rx delivers a well-designed implementation of testing features, allowing deterministic and high-throughput testing. The `TestScheduler` provides methods to control virtual time and produce observable sequences for testing. This ability to easily and reliably test concurrent systems sets Rx apart from many other libraries. \ No newline at end of file diff --git a/content/92_SequencesOfCoincidence.md b/content/92_SequencesOfCoincidence.md deleted file mode 100644 index c48bfbb..0000000 --- a/content/92_SequencesOfCoincidence.md +++ /dev/null @@ -1,536 +0,0 @@ ---- -title: Sequences of coincidence title ---- - -# Sequences of coincidence - -We can conceptualize events that have _duration_ as `windows`. For example; - -- a server is up -- a person is in a room -- a button is pressed (and not yet released). - -The first example could be re-worded as "for this window of time, the server was up". An event from one source may have a greater value if it coincides with an event from another source. For example, while at a music festival, you may only be interested in tweets (event) about an artist while they are playing (window). In finance, you may only be interested in trades (event) for a certain instrument while the New York market is open (window). In operations, you may be interested in the user sessions (window) that remained active during an upgrade of a system (window). In that example, we would be querying for coinciding windows. - -Rx provides the power to query sequences of coincidence, sometimes called 'sliding windows'. We already recognize the benefit that Rx delivers when querying data in motion. By additionally providing the power to query sequences of coincidence, Rx exposes yet another dimension of possibilities. - -## Buffer revisited - -[`Buffer`](13_TimeShiftedSequences.html#Buffer) is not a new operator to us; however, it can now be conceptually grouped with the window operators. Each of these windowing operators act on a sequence and a window of time. Each operator will open a window when the source sequence produces a value. The way the window is closed, and which values are exposed, are the main differences between each of the operators. Let us just quickly recap the internal working of the `Buffer` operator and see how this maps to the concept of "windows of time". - -`Buffer` will create a window when the first value is produced. It will then put that value into an internal cache. The window will stay open until the count of values has been reached; each of these values will have been cached. When the count has been reached, the window will close and the cache will be published to the result sequence as an `IList`. When the next value is produced from the source, the cache is cleared and we start again. This means that `Buffer` will take an `IObservable` and return an `IObservable>`. - -`Example Buffer with count of 3` - -
-
source|-0-1-2-3-4-5-6-7-8-9|
-
result|-----0-----3-----6-9|
-
            1     4     7
-
            2     5     8
-
- -> In this marble diagram, I have represented the list of values being returned at a point in time as a column of data. That is, the values 0, 1 & 2 are all returned in the first buffer. - -Understanding buffer with time is only a small step away from understanding buffer with count; instead of passing a count, we pass a `TimeSpan`. The closing of the window (and therefore the buffer's cache) is now dictated by time instead of the number of values. This is now more complicated as we have introduced some sort of scheduling. To produce the `IList` at the correct point in time, we need a scheduler assigned to perform the timing. Incidentally, this makes testing a lot easier. - -`Example Buffer with time of 5 units` - -
-
source|-0-1-2-3-4-5-6-7-8-9-|
-
result|----0----2----5----7-|
-
           1    3    6    8
-
                4         9
-
- -## Window - -The `Window` operators are very similar to the `Buffer` operators; they only really differ by their return type. Where `Buffer` would take an `IObservable` and return an `IObservable>`, the Window operators return an `IObservable>`. It is also worth noting that the `Buffer` operators will not yield their buffers until the window closes. - -Here we can see the simple overloads to `Window`. There is a surprising symmetry with the `Window` and `Buffer` overloads. - -```csharp -public static IObservable> Window( - this IObservable source, - int count) -{...} - -public static IObservable> Window( - this IObservable source, - int count, - int skip) -{...} - -public static IObservable> Window( - this IObservable source, - TimeSpan timeSpan) -{...} - -public static IObservable> Window( - this IObservable source, - TimeSpan timeSpan, - int count) -{...} - -public static IObservable> Window( - this IObservable source, - TimeSpan timeSpan, - TimeSpan timeShift) -{...} - -public static IObservable> Window( - this IObservable source, - TimeSpan timeSpan, - IScheduler scheduler) -{...} - -public static IObservable> Window( - this IObservable source, - TimeSpan timeSpan, - TimeSpan timeShift, - IScheduler scheduler) -{...} - -public static IObservable> Window( - this IObservable source, - TimeSpan timeSpan, - int count, - IScheduler scheduler) -{...} -``` - -This is an example of `Window` with a count of 3 as a marble diagram: - -
-
source |-0-1-2-3-4-5-6-7-8-9|
-
window0|-0-1-2|
-
window1        3-4-5|
-
window2              6-7-8|
-
window3                    9|
-
- -For demonstration purposes, we could reconstruct that with this code. - -```csharp -var windowIdx = 0; -var source = Observable.Interval(TimeSpan.FromSeconds(1)).Take(10); -source.Window(3).Subscribe(window => -{ - var id = windowIdx++; - Console.WriteLine("--Starting new window"); - var windowName = "Window" + thisWindowIdx; - window.Subscribe( - value => Console.WriteLine("{0} : {1}", windowName, value), - ex => Console.WriteLine("{0} : {1}", windowName, ex), - () => Console.WriteLine("{0} Completed", windowName)); -}, -() => Console.WriteLine("Completed")); -``` - -Output: - -``` ---Starting new window -window0 : 0 -window0 : 1 -window0 : 2 -window0 Completed ---Starting new window -window1 : 3 -window1 : 4 -window1 : 5 -window1 Completed ---Starting new window -window2 : 6 -window2 : 7 -window2 : 8 -window2 Completed ---Starting new window -window3 : 9 -window3 Completed -Completed -``` - -`Example of Window with time of 5 units` - -
-
source |-0-1-2-3-4-5-6-7-8-9|
-
window0|-0-1-|
-
window1      2-3-4|
-
window2           -5-6-|
-
window3                7-8-9|
-
- -A major difference we see here is that the `Window` operators can notify you of values from the source as soon as they are produced. The `Buffer` operators, on the other hand, must wait until the window closes before the values can be notified as an entire list. - -### Flattening a Window operation - -I think it is worth noting, at least from an academic standpoint, that the `Window` operators produce `IObservable>`. We have explored the concept of [nested observables](07_Aggregation.html#NestedObservables) in the earlier chapter on [Aggregation](07_Aggregation.html). `Concat`, `Merge` and `Switch` each have an overload that takes an `IObservable>` and returns an `IObservable`. As the `Window` operators ensure that the windows (child sequences) do not overlap, we can use either of the `Concat`, `Switch` or `Merge` operators to turn a windowed sequence back into its original form. - -```csharp -// is the same as Observable.Interval(TimeSpan.FromMilliseconds(200)).Take(10) -var switchedWindow = Observable.Interval(TimeSpan.FromMilliseconds(200)).Take(10) -.Window(TimeSpan.FromMilliseconds(500)) -.Switch(); -``` - -### Customizing windows - -The overloads above provide simple ways to break a sequence into smaller nested windows using a count and/or a time span. Now we will look at the other overloads, that provide more flexibility over how windows are managed. - -```csharp -// Projects each element of an observable sequence into consecutive non-overlapping windows. -// windowClosingSelector : A function invoked to define the boundaries of the produced -// windows. A new window is started when the previous one is closed. -public static IObservable> Window -( - this IObservable source, - Func> windowClosingSelector -) -{...} -``` - -The first of these complex overloads allows us to control when windows should close. The `windowClosingSelector` function is called each time a window is created. Windows are created on subscription and immediately after a window closes; windows close when the sequence from the `windowClosingSelector` produces a value. The value is disregarded so it doesn't matter what type the sequence values are; in fact you can just complete the sequence from `windowClosingSelector` to close the window instead. - -In this example, we create a window with a closing selector. We return the same subject from that selector every time, then notify from the subject whenever a user presses enter from the console. - -```csharp -var windowIdx = 0; -var source = Observable.Interval(TimeSpan.FromSeconds(1)).Take(10); -var closer = new Subject(); -source.Window(() => closer) - .Subscribe(window => - { - var thisWindowIdx = windowIdx++; - Console.WriteLine("--Starting new window"); - var windowName = "Window" + thisWindowIdx; - window.Subscribe( - value => Console.WriteLine("{0} : {1}", windowName, value), - ex => Console.WriteLine("{0} : {1}", windowName, ex), - () => Console.WriteLine("{0} Completed", windowName)); - }, - () => Console.WriteLine("Completed")); - -var input = ""; -while (input!="exit") -{ - input = Console.ReadLine(); - closer.OnNext(Unit.Default); -} -``` -Output (when I hit enter after '1' and '5' are displayed): - -``` ---Starting new window -window0 : 0 -window0 : 1 - -window0 Completed - ---Starting new window -window1 : 2 -window1 : 3 -window1 : 4 -window1 : 5 - -window1 Completed - ---Starting new window -window2 : 6 -window2 : 7 -window2 : 8 -window2 : 9 - -window2 Completed - -Completed -``` - -The most complex overload of `Window` allows us to create potentially overlapping windows. - -```csharp -// Projects each element of an observable sequence into zero or more windows. -// windowOpenings : Observable sequence whose elements denote the creation of new windows. -// windowClosingSelector : A function invoked to define the closing of each produced window. -public static IObservable> Window - -( - this IObservable source, - IObservable windowOpenings, - Func> windowClosingSelector -) -{...} -``` - -This overload takes three arguments - -1. The source sequence -2. A sequence that indicates when a new window should be opened -3. A function that takes a window opening value, and returns a window closing sequence - -This overload offers great flexibility in the way windows are opened and closed. Windows can be largely independent from each other; they can overlap, vary in size and even skip values from the source. - -To ease our way into this more complex overload, let's first try to use it to recreate a simpler version of `Window` (the overload that takes a count). To do so, we need to open a window once on the initial subscription, and once each time the source has produced then specified count. The window needs to close each time that count is reached. To achieve this we only need the source sequence. We will share it by using the `Publish` method, then supply 'views' of the source as each of the arguments. - -```csharp -public static IObservable> MyWindow( - this IObservable source, - int count) -{ - var shared = source.Publish().RefCount(); - var windowEdge = shared - .Select((i, idx) => idx % count) - .Where(mod => mod == 0) - .Publish() - .RefCount(); - return shared.Window(windowEdge, _ => windowEdge); -} -``` - -If we now want to extend this method to offer skip functionality, we need to have two different sequences: one for opening and one for closing. We open a window on subscription and again after the `skip` items have passed. We close those windows after '`count`' items have passed since the window opened. - -```csharp -public static IObservable> MyWindow( - this IObservable source, - int count, - int skip) -{ - if (count <= 0) throw new ArgumentOutOfRangeException(); - if (skip <= 0) throw new ArgumentOutOfRangeException(); - - var shared = source.Publish().RefCount(); - var index = shared - .Select((i, idx) => idx) - .Publish() - .RefCount(); - - var windowOpen = index.Where(idx => idx % skip == 0); - var windowClose = index.Skip(count-1); - - return shared.Window(windowOpen, _ => windowClose); -} -``` - -We can see here that the `windowClose` sequence is re-subscribed to each time a window is opened, due to it being returned from a function. This allows us to reapply the skip (`Skip(count-1)`) for each window. Currently, we ignore the value that the `windowOpen` pushes to the `windowClose` selector, but if you require it for some logic, it is available to you. - -As you can see, the `Window` operator can be quite powerful. We can even use `Window` to replicate other operators; for instance we can create our own implementation of `Buffer` that way. We can have the `SelectMany` operator take a single value (the window) to produce zero or more values of another type (in our case, a single `IList`). To create the `IList` without blocking, we can apply the `Aggregate` method and use a new `List` as the seed. - -```csharp -public static IObservable> MyBuffer(this IObservable source, int count) -{ - return source.Window(count) - .SelectMany(window => - window.Aggregate( - new List(), - (list, item) => - { - list.Add(item); - return list; - })); -} -``` - -It may be an interesting exercise to try implementing other time shifting methods, like `Sample` or `Throttle`, with `Window`. - -## Join - -The `Join` operator allows you to logically join two sequences. Whereas the `Zip` operator would pair values from the two sequences together by index, the `Join` operator allows you join sequences by intersecting windows. Like the `Window` overload we just looked at, you can specify when a window should close via an observable sequence; this sequence is returned from a function that takes an opening value. The `Join` operator has two such functions, one for the first source sequence and one for the second source sequence. Like the `Zip` operator, we also need to provide a selector function to produce the result item from the pair of values. - -```csharp -public static IObservable Join -( - this IObservable left, - IObservable right, - Func> leftDurationSelector, - Func> rightDurationSelector, - Func resultSelector -) -``` - -This is a complex signature to try and understand in one go, so let's take it one parameter at a time. - -`IObservable left` is the source sequence that defines when a window starts. This is just like the `Buffer` and `Window` operators, except that every value published from this source opens a new window. In `Buffer` and `Window`, by contrast, some values just fell into an existing window. - -I like to think of `IObservable right` as the window value sequence. While the left sequence controls opening the windows, the right sequence will try to pair up with a value from the left sequence. - -Let us imagine that our left sequence produces a value, which creates a new window. If the right sequence produces a value while the window is open, then the `resultSelector` function is called with the two values. This is the crux of join, pairing two values from a sequence that occur within the same window. This then leads us to our next question; when does the window close? The answer illustrates both the power and the complexity of the `Join` operator. - -When `left` produces a value, a window is opened. That value is also passed, at that time, to the `leftDurationSelector` function, which returns an `IObservable`. When that sequence produces a value or completes, the window for that value is closed. Note that it is irrelevant what the type of `TLeftDuration` is. This initially left me with the feeling that `IObservable` was a bit excessive as you effectively just need some sort of event to say 'Closed'. However, by being allowed to use `IObservable`, you can do some clever manipulation as we will see later. - -Let us now imagine a scenario where the left sequence produces values twice as fast as the right sequence. Imagine that in addition we never close the windows; we could do this by always returning `Observable.Never()` from the `leftDurationSelector` function. This would result in the following pairs being produced. - -Left Sequence - -
-
L 0-1-2-3-4-5-
-
- -Right Sequence - -
-
R --A---B---C-
-
-
-
0, A
-
1, A
-
0, B
-
1, B
-
2, B
-
3, B
-
0, C
-
1, C
-
2, C
-
3, C
-
4, C
-
5, C
-
- -As you can see, the left values are cached and replayed each time the right produces a value. - -Now it seems fairly obvious that, if I immediately closed the window by returning `Observable.Empty`, or perhaps `Observable.Return(0)`, windows would never be opened thus no pairs would ever get produced. However, what could I do to make sure that these windows did not overlap- so that, once a second value was produced I would no longer see the first value? Well, if we returned the `left` sequence from the `leftDurationSelector`, that could do the trick. But wait, when we return the sequence `left` from the `leftDurationSelector`, it would try to create another subscription and that may introduce side effects. The quick answer to that is to `Publish` and `RefCount` the `left` sequence. If we do that, the results look more like this. - -
-
left  |-0-1-2-3-4-5|
-
right |---A---B---C|
-
result|---1---3---5
-
          A   B   C
-
- -The last example is very similar to `CombineLatest`, except that it is only producing a pair when the right sequence changes. We could use `Join` to produce our own version of [`CombineLatest`](12_CombiningSequences.html#CombineLatest). If the values from the left sequence expire when the next value from left was notified, then I would be well on my way to implementing my version of `CombineLatest`. However I need the same thing to happen for the right. Luckily the `Join` operator provides a `rightDurationSelector` that works just like the `leftDurationSelector`. This is simple to implement; all I need to do is return a reference to the same left sequence when a left value is produced, and do the same for the right. The code looks like this. - -```csharp -public static IObservable MyCombineLatest -( - IObservable left, - IObservable right, - Func resultSelector -) -{ - var refcountedLeft = left.Publish().RefCount(); - var refcountedRight = right.Publish().RefCount(); - - return Observable.Join( - refcountedLeft, - refcountedRight, - value => refcountedLeft, - value => refcountedRight, - resultSelector); -} -``` - -While the code above is not production quality (it would need to have some gates in place to mitigate race conditions), it shows how powerful `Join` is; we can actually use it to create other operators! - -## GroupJoin - -When the `Join` operator pairs up values that coincide within a window, it will pass the scalar values left and right to the `resultSelector`. The `GroupJoin` operator takes this one step further by passing the left (scalar) value immediately to the `resultSelector` with the right (sequence) value. The right parameter represents all of the values from the right sequences that occur within the window. Its signature is very similar to `Join`, but note the difference in the `resultSelector` parameter. - -```csharp -public static IObservable GroupJoin -( - this IObservable left, - IObservable right, - Func> leftDurationSelector, - Func> rightDurationSelector, - Func, TResult> resultSelector -) -``` - -If we went back to our first `Join` example where we had - -* the `left` producing values twice as fast as the right, -* the left never expiring -* the right immediately expiring - -this is what the result may look like - -
-
left              |-0-1-2-3-4-5|
-
right             |---A---B---C|
-
0th window values   --A---B---C|
-
1st window values     A---B---C|
-
2nd window values       --B---C|
-
3rd window values         B---C|
-
4th window values           --C|
-
5th window values             C|
-
- -We could switch it around and have the left expired immediately and the right never expire. The result would then look like this: - -
-
left              |-0-1-2-3-4-5|
-
right             |---A---B---C|
-
0th window values   |
-
1st window values     A|
-
2nd window values       A|
-
3rd window values         AB|
-
4th window values           AB|
-
5th window values             ABC|
-
- -This starts to make things interesting. Perceptive readers may have noticed that with `GroupJoin` you could effectively re-create your own `Join` method by doing something like this: - -```csharp -public IObservable MyJoin( - IObservable left, - IObservable right, - Func> leftDurationSelector, - Func> rightDurationSelector, - Func resultSelector) -{ - return Observable.GroupJoin - ( - left, - right, - leftDurationSelector, - rightDurationSelector, - (leftValue, rightValues)=> rightValues.Select(rightValue=>resultSelector(leftValue, rightValue)) - ) - .Merge(); -} -``` - -You could even create a crude version of `Window` with this code: - -```csharp -public IObservable> MyWindow(IObservable source, TimeSpan windowPeriod) -{ - return Observable.Create>(o =>; - { - var sharedSource = source - .Publish() - .RefCount(); - - var intervals = Observable.Return(0L) - .Concat(Observable.Interval(windowPeriod)) - .TakeUntil(sharedSource.TakeLast(1)) - .Publish() - .RefCount(); - - return intervals.GroupJoin( - sharedSource, - _ => intervals, - _ => Observable.Empty(), - (left, sourceValues) => sourceValues) - .Subscribe(o); - }); -} -``` - -For an alternative summary of reducing operators to a primitive set see Bart DeSmet's [excellent MINLINQ post](http://blogs.bartdesmet.net/blogs/bart/archive/2010/01/01/the-essence-of-linq-minlinq.aspx "The essence of LINQ - MinLINQ") (and [follow-up video](http://channel9.msdn.com/Shows/Going+Deep/Bart-De-Smet-MinLINQ-The-Essence-of-LINQ "The essence of LINQ - MINLINQ - Channel9") ). Bart is one of the key members of the team that built Rx, so it is great to get some insight on how the creators of Rx think. - -Showcasing `GroupJoin` and the use of other operators turned out to be a fun academic exercise. While watching videos and reading books on Rx will increase your familiarity with it, nothing replaces the experience of actually picking it apart and using it in earnest. - -`GroupJoin` and other window operators reduce the need for low-level plumbing of state and concurrency. By exposing a high-level API, code that would be otherwise difficult to write, becomes a cinch to put together. For example, those in the finance industry could use `GroupJoin` to easily produce real-time Volume or Time Weighted Average Prices (VWAP/TWAP). - -Rx delivers yet another way to query data in motion by allowing you to interrogate sequences of coincidence. This enables you to solve the intrinsically complex problem of managing state and concurrency while performing matching from multiple sources. By encapsulating these low level operations, you are able to leverage Rx to design your software in an expressive and testable fashion. Using the Rx operators as building blocks, your code effectively becomes a composition of many simple operators. This allows the complexity of the domain code to be the focus, not the otherwise incidental supporting code. - -# Summary - -When LINQ was first released, it brought the ability to query static data sources directly into the language. With the volume of data produced in modern times, only being able to query data-at-rest, limits your competitive advantage. Being able to make sense of information as it flows, opens an entirely new spectrum of software. We need more than just the ability to react to events, we have been able to do this for years. We need the ability to construct complex queries across multiple sources of flowing data. - -Rx brings event processing to the masses by allowing you to query data-in-motion directly from your favorite .NET language. Composition is king: you compose operators to create queries and you compose sequences to enrich the data. Rx leverages common types, patterns and language features to deliver an incredibly powerful library that can change the way you write modern software. - -Throughout the book you will have learnt the basic types and principle of Rx. You have discovered functional programming concepts and how they apply to observable sequences. You can identify potential pitfalls of certain patterns and how to avoid them. You understand the internal working of the operators and are even able to build your own implementations of many of them. Finally you are able to construct complex queries that manage concurrency in a safe and declarative way while still being testable. - -You have everything you need to confidently build applications using the Reactive Extensions for .NET. If you do find yourself at any time stuck, and not sure how to solve a problem or need help, you can probably solve it without outside stimulus. Remember to first draw a marble diagram of what you think the problem space is. This should allow you to see the patterns in the flow which will help you choose the correct operators. Secondly, remember to follow the [Guidelines](18_UsageGuidelines.html). - -Third, write a spike. Use [LINQPad](http://www.linqpad.net/) or a blank Visual Studio project to flesh out a small sample. Finally, if you are still stuck, your best place to look for help is the MSDN [Rx forum](http://social.msdn.microsoft.com/Forums/en-US/rx/). [StackOverflow.com](http://stackoverflow.com/) is another useful resource too, but with regards to Rx questions, the MSDN forum is dedicated to Rx and seems to have a higher quality of answers. \ No newline at end of file From 4ab1b3517f55aea19b6302f9fac2dc7eadc6c732 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Thu, 14 Sep 2023 16:21:21 +0100 Subject: [PATCH 042/142] Update appendix A, put all remaining Disposable content in appendix B --- content/93_Disposables.md | 53 ---------------------------- content/A_IoStreams.md | 42 +++++----------------- content/B_Disposables.md | 74 +++++++++++++++++++++++++++++++-------- 3 files changed, 69 insertions(+), 100 deletions(-) delete mode 100644 content/93_Disposables.md diff --git a/content/93_Disposables.md b/content/93_Disposables.md deleted file mode 100644 index da72624..0000000 --- a/content/93_Disposables.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title : Appendix C Disposables ---- - -# Disposables - -Rx leverages the existing `IDisposable` interface for subscription management. This is an incredibly useful design decision, as users can work with a familiar type and reuse existing language features. Rx further extends its usage of the `IDisposable` type by providing several public implementations of the interface. These can be found in the `System.Reactive.Disposables` namespace. Here, we will briefly enumerate each of them. - - -
-
Disposable.Empty
-
- This static property exposes an implementation of IDisposable that performs no action when the Dispose method is invoked. This can be useful whenever you need to fulfil an interface requirement, like Observable.Create, but do not have any resource management that needs to take place.
-
Disposable.Create(Action)
-
- This static method exposes an implementation of IDisposable that performs the action provided when the Dispose method is invoked. As the implementation follows the guidance to be idempotent, the action will only be called on the first time the Dispose method is invoked.
-
BooleanDisposable
-
- This class simply has the Dispose method and a read-only property IsDisposed. IsDisposed is false when the class is constructed, and is set to true when the Dispose method is invoked. -
-
CancellationDisposable
-
- The CancellationDisposable class offers an integration point between the .NET cancellation paradigm (CancellationTokenSource) and the resource management paradigm (IDisposable). You can create an instance of the CancellationDisposable class by providing a CancellationTokenSource to the constructor, or by having the parameterless constructor create one for you. Calling Dispose will invoke the Cancel method on the CancellationTokenSource. There are two properties (Token and IsDisposed) that CancellationDisposable exposes; they are wrappers for the CancellationTokenSource properties, respectively Token and IsCancellationRequested. -
-
CompositeDisposable
-
- The CompositeDisposable type allows you to treat many disposable resources as one. Common usage is to create an instance of CompositeDisposable by passing in a params array of disposable resources. Calling Dispose on the CompositeDisposable will call dispose on each of these resources in the order they were provided. Additionally, the CompositeDisposable class implements ICollection<IDisposable>; this allows you to add and remove resources from the collection. After the CompositeDisposable has been disposed of, any further resources that are added to this collection will be disposed of instantly. Any item that is removed from the collection is also disposed of, regardless of whether the collection itself has been disposed of. This includes usage of both the Remove and Clear methods. -
-
ContextDisposable
-
- ContextDisposable allows you to enforce that disposal of a resource is performed on a given SynchronizationContext. The constructor requires both a SynchronizationContext and an IDisposable resource. When the Dispose method is invoked on the ContextDisposable, the provided resource will be disposed of on the specified context. -
-
MultipleAssignmentDisposable
-
- The MultipleAssignmentDisposable exposes a read-only IsDisposed property and a read/write property Disposable. Invoking the Dispose method on the MultipleAssignmentDisposable will dispose of the current value held by the Disposable property. It will then set that value to null. As long as the MultipleAssignmentDisposable has not been disposed of, you are able to set the Disposable property to IDisposable values as you would expect. Once the MultipleAssignmentDisposable has been disposed, attempting to set the Disposable property will cause the value to be instantly disposed of; meanwhile, Disposable will remain null. -
-
RefCountDisposable
-
- The RefCountDisposable offers the ability to prevent the disposal of an underlying resource until all dependent resources have been disposed. You need an underlying IDisposable value to construct a RefCountDisposable. You can then call the GetDisposable method on the RefCountDisposable instance to retrieve a dependent resource. Each time a call to GetDisposable is made, an internal counter is incremented. Each time one of the dependent disposables from GetDisposable is disposed, the counter is decremented. Only if the counter reaches zero will the underlying be disposed of. This allows you to call Dispose on the RefCountDisposable itself before or after the count is zero. -
-
ScheduledDisposable
-
- In a similar fashion to ContextDisposable, the ScheduledDisposable type allows you to specify a scheduler, onto which the underlying resource will be disposed. You need to pass both the instance of IScheduler and instance of IDisposable to the constructor. When the ScheduledDisposable instance is disposed of, the disposal of the underlying resource will be scheduled onto the provided scheduler. -
-
SerialDisposable
-
- SerialDisposable is very similar to MultipleAssignmentDisposable, as they both expose a read/write Disposable property. The contrast between them is that whenever the Disposable property is set on a SerialDisposable, the previous value is disposed of. Like the MultipleAssignmentDisposable, once the SerialDisposable has been disposed of, the Disposable property will be set to null and any further attempts to set it will have the value disposed of. The value will remain as null. -
-
SingleAssignmentDisposable
-
- The SingleAssignmentDisposable class also exposes IsDisposed and Disposable properties. Like MultipleAssignmentDisposable and SerialDisposable, the Disposable value will be set to null when the SingleAssignmentDisposable is disposed of. The difference in implementation here is that the SingleAssignmentDisposable will throw an InvalidOperationException if there is an attempt to set the Disposable property while the value is not null and the SingleAssignmentDisposable has not been disposed of. -
-
\ No newline at end of file diff --git a/content/A_IoStreams.md b/content/A_IoStreams.md index 558c402..ff8f5a5 100644 --- a/content/A_IoStreams.md +++ b/content/A_IoStreams.md @@ -1,8 +1,10 @@ # What's Wrong with Classic IO Streams +In the [Key Types](02_KeyTypes.md#what-about-streams) chapter, I stated that `System.IO.Stream` is not a good fit for modelling the kinds of event streams we work with in Rx. This appendix explains why. + The abstraction that `System.IO.Stream` represents was designed as a way for an operating system to enable application code to communicate with devices that could receive and/or produce streams of bytes. This makes them a good model for the [reel to reel tape storage devices](https://en.wikipedia.org/wiki/IBM_7-track) that were commonplace back when this kind of stream was designed, but unnecessarily cumbersome if you just want to represent a sequence of values. Over the years, streams have been co-opted to represent an increasingly diverse range of things, including files, keyboards, network connections, and OS status information, meaning that by the time .NET came along in 2002, its `Stream` type needed a mixture of features to accommodate some quite diverse scenarios. And since not all streams are alike, it's quite common for some of these features to not to work on some streams. -IO streams were designed to support efficient delivery of fairly high volumes of byte data, often with devices that inherently work with data in big chunks. In the main scenarios for which they were designed, read and write operations would involve calls into operating system APIs, which are typically relatively expensive, so the basic read and write operations expect to work with arrays of bytes. (If you make one system call to deliver thousands of bytes, the overhead of that single call is far lower than if you were working one byte at a time.) While that's good for efficiency, it can be inconvenient for developers (and irksome if you were hoping to use streams purely to represent in-process event streams that don't actually need to make system calls, and therefore don't get to enjoy the upside of this performance/convenience trade off). +IO streams were designed to support efficient delivery of fairly high volumes of byte data, often with devices that inherently work with data in big chunks. In the main scenarios for which they were designed, read and write operations would involve calls into operating system APIs, which are typically relatively expensive, so the basic read and write operations expect to work with arrays of bytes. (If you make one system call to deliver thousands of bytes, the overhead of that single call is far lower than if you work one byte at a time.) While that's good for efficiency, it can be inconvenient for developers (and irksome if you were hoping to use streams purely to represent in-process event streams that don't actually need to make system calls, and therefore don't get to enjoy the upside of this performance/convenience trade off). There is a standard band-aid kind of a fix for this: libraries that present streams to application code often don't represent the underlying OS stream directly. Instead, they are often _buffered_, meaning that the library will perform reads fairly large chunks, and hold recently-fetched bytes in memory until the application code asks for them. This can enable methods like .NET's single-byte [`Stream.ReadByte`](https://learn.microsoft.com/en-us/dotnet/api/system.io.stream.readbyte) method to work reasonably efficiently: several thousand calls to that might correspond to only one call to the operating system API that provides access to whatever physical device the stream represents. Likewise, if you're sending data into an IO stream, a buffered stream will wait until you've supplied some minimum quantity of data (4096 bytes is a common default with certain .NET `Stream`s) before it actually sends any data to its destination. @@ -10,40 +12,14 @@ But this could be a serious problem for the kinds of event sources we represent There's also the problem that you don't always know which kind of stream you've been given. If you know for a fact that you've got an unbuffered stream representing a file on disk (because you created that stream yourself) you'd typically right quite different code than you would if you knew you had a buffered stream. But if you've written a method that takes a `Stream` argument, it's not clear what you've got, so you don't necessarily know which coding strategy is best. -Another problem is that because they are byte-oriented, there's no such thing as a `System.IO.Stream` that produces more complex values. If you want a stream of `int` values (which isn't a _much_ more complex idea than a stream of _byte_ values) `System.IO.Stream` does nothing to help you, and might even hinder you. You can try reading four bytes at a time but a `System.IO.Stream` is at liberty to decide that it's only going to return three. (The reason streams are allowed to be petty in this way is that the original design presumes that a stream represents some underlying device that might inherently work with fixed size units of data. Disk drives and SSDs are incapable of reading or writing individual bytes; instead, each operation works with some whole number of 'sectors' each of which are hundreds or thousands of bytes long. So a read operation might simply be unable to give you exactly as many bytes as you asked for.) It's now the consuming code's problem to work out how to deal with that. - -You can write wrappers to deal with these issues caused by `Stream`'s origins as an abstraction for a magnetic tape storage device, but if you want the type system to help you to distinguish between a stream of `int` values and a stream of `float` values, `Stream` won't help you. You'll end up needing some different abstraction that has a type parameter. Something like `IObservable` in fact. - - - - - -Going back to the 'stream of `int` values' idea, - - Some `Stream` instances don't have this 'buffering' layer, and operate more immediately (at the price of being unable to handle one-value-at-a-time operations as efficient, or maybe even at all) but the problem is you don't necessarily know which kind you've got. If you've written a method with an argument of type `Stream`, callers could be passing you anything. - - -And although they do get used for one-byte-at-a-time devices (notably the keyboard input in a command line tool that presents an interactive prompt) they're not especially well suited to that. - - - - - - +Another problem is that because they are byte-oriented, there's no such thing as a `System.IO.Stream` that produces more complex values. If you want a stream of `int` values (which isn't a _much_ more complex idea than a stream of _byte_ values) `System.IO.Stream` does nothing to help you, and until very recently it might even hinder you. If you use the normal `Read` or `ReadAsync` methods, you can try reading four bytes at a time but a `System.IO.Stream` is at liberty to decide that it's only going to return three. (The reason streams are allowed to be petty in this way is that the original design presumes that a stream represents some underlying device that might inherently work with fixed size units of data. Disk drives and SSDs are incapable of reading or writing individual bytes; instead, each operation works with some whole number of 'sectors' each of which are hundreds or thousands of bytes long. So a read operation might simply be unable to give you exactly as many bytes as you asked for. This can also come into play for a stream that represents data coming in over the network: such streams might already have received some data, but less than you've asked for, and they might decide to return what they've already got instead of making you wait until the next network message arrives.) It's now the consuming code's problem to work out how to deal with that. .NET 7.0 finally fixed this problem (only about two decades after `Stream` first appeared) by adding the [`ReadExactly`](https://learn.microsoft.com/en-us/dotnet/api/system.io.stream.readexactly) and [`ReadExactlyAsync`](https://learn.microsoft.com/en-us/dotnet/api/system.io.stream.readexactlyasync) methods, but if you have to target .NET Framework, these methods are unavailable and you still have to solve this entirely yourself. +Even if you use the new methods (or you write wrappers to deal with these issues caused by `Stream`'s origins as an abstraction for a magnetic tape storage device) there are still shortcomings. If you want the type system to help you to distinguish between a stream of `int` values and a stream of `float` values, `Stream` won't help you. You'll end up needing some different abstraction that has a type parameter. Something like `IObservable` in fact. The fact that we know exactly what shape of data to expect from `IObservable` is critical to making many of the LINQ operators it supports practical. -if you want to implement your own type that derives from `Stream` to represents some source of events, you'll need to implement all ten of the abstract members it defines: 5 properties and 5 methods +Another potential source of confusion is Unix's "everything is a file" design feature. The operating system represents all manner of things through the same OS abstractions as files, and this simplifies the OS design, and in some cases enables you to apply tools originally designed for files in creative ways. But the downside is that some streams are finicky. It's possible to end up with a stream that looks like any other from a .NET type system point of view, but which only works if you read or write in blocks of some particular size. +Conversely, Rx's strictly defined rules for how observable sources interact with their subscribers means we know exactly where we stand. -The essence of a `System.IO.Stream` is +There isn't a clear model for how streams might support multiple subscribers. Programs such as the Unix `tail` command are able to 'follow' changes to a file, but the way they achieve this is nothing like as simple as two observers both calling `Subscribe`. -The `System.IO.Stream` implementations are commonly used to stream data (generally bytes) to or from an I/O device like a file, network or block of memory. -> `System.IO.Stream` implementations can have both the ability to read and write, and sometimes the ability to seek (i.e. fast forward through a stream or move backwards). -> When I refer to an instance of `IObservable` as a stream, it does not exhibit the seek or write functionality that streams do. -This is a fundamental difference preventing Rx being built on top of the `System.IO.Stream` paradigm. -Rx does however have the concept of forward streaming (push), disposing (closing) and completing (eof). -Rx also extends the metaphor by introducing concurrency constructs, and query operations like transformation, merging, aggregating and expanding. -> These features are also not an appropriate fit for the existing `System.IO.Stream` types. Some others refer to instances of `IObservable` as Observable Collections, which I find hard to understand. While the observable part makes sense to me, I do not find them like collections at all. You generally cannot sort, insert or remove items from an `IObservable` instance like I would expect you can with a collection. Collections generally have some sort of backing store like an internal array. The values from an `IObservable` source are not usually pre-materialized as you would expect from a normal collection. There is also a type in WPF/Silverlight called an `ObservableCollection` that does exhibit collection-like behavior, and is very well suited to this description. -> In fact `IObservable` integrates very well with `ObservableCollection` instances. -So to save on any confusion we will refer to instances of `IObservable` as *sequences*. -While instances of `IEnumerable` are also sequences, we will adopt the convention that they are sequences of _data at rest_, and `IObservable` instances are sequences of _data in motion_. +And these are just the problems on the consumer side. It's not much fun if you want to implement a source of events as a `Stream` either. To implement your own type that derives from `Stream`, you'll need to implement all ten of the abstract members it defines: 5 properties and 5 methods. This is a far cry from the simple ways `System.Reactive` provides to implement an Rx event source. diff --git a/content/B_Disposables.md b/content/B_Disposables.md index edea40f..a91f9ba 100644 --- a/content/B_Disposables.md +++ b/content/B_Disposables.md @@ -1,21 +1,66 @@ +--- +title : Appendix C Disposables +--- -TODO: these were in the now-defunct lifetime management chapter +# Disposables + +Rx leverages the existing `IDisposable` interface for subscription management. This is an incredibly useful design decision, as users can work with a familiar type and reuse existing language features. Rx further extends its usage of the `IDisposable` type by providing several public implementations of the interface. These can be found in the `System.Reactive.Disposables` namespace. Here, we will briefly enumerate each of them. -The Rx library itself adopts this liberal usage of the `IDisposable` interface and introduces several of its own custom implementations: +
+
Disposable.Empty
+
+ This static property exposes an implementation of IDisposable that performs no action when the Dispose method is invoked. This can be useful whenever you need to fulfil an interface requirement, like Observable.Create, but do not have any resource management that needs to take place.
+
Disposable.Create(Action)
+
+ This static method exposes an implementation of IDisposable that performs the action provided when the Dispose method is invoked. As the implementation follows the guidance to be idempotent, the action will only be called on the first time the Dispose method is invoked.
+
BooleanDisposable
+
+ This class simply has the Dispose method and a read-only property IsDisposed. IsDisposed is false when the class is constructed, and is set to true when the Dispose method is invoked. +
+
CancellationDisposable
+
+ The CancellationDisposable class offers an integration point between the .NET cancellation paradigm (CancellationTokenSource) and the resource management paradigm (IDisposable). You can create an instance of the CancellationDisposable class by providing a CancellationTokenSource to the constructor, or by having the parameterless constructor create one for you. Calling Dispose will invoke the Cancel method on the CancellationTokenSource. There are two properties (Token and IsDisposed) that CancellationDisposable exposes; they are wrappers for the CancellationTokenSource properties, respectively Token and IsCancellationRequested. +
+
CompositeDisposable
+
+ The CompositeDisposable type allows you to treat many disposable resources as one. Common usage is to create an instance of CompositeDisposable by passing in a params array of disposable resources. Calling Dispose on the CompositeDisposable will call dispose on each of these resources in the order they were provided. Additionally, the CompositeDisposable class implements ICollection<IDisposable>; this allows you to add and remove resources from the collection. After the CompositeDisposable has been disposed of, any further resources that are added to this collection will be disposed of instantly. Any item that is removed from the collection is also disposed of, regardless of whether the collection itself has been disposed of. This includes usage of both the Remove and Clear methods. +
+
ContextDisposable
+
+ ContextDisposable allows you to enforce that disposal of a resource is performed on a given SynchronizationContext. The constructor requires both a SynchronizationContext and an IDisposable resource. When the Dispose method is invoked on the ContextDisposable, the provided resource will be disposed of on the specified context. +
+
MultipleAssignmentDisposable
+
+ The MultipleAssignmentDisposable exposes a read-only IsDisposed property and a read/write property Disposable. Invoking the Dispose method on the MultipleAssignmentDisposable will dispose of the current value held by the Disposable property. It will then set that value to null. As long as the MultipleAssignmentDisposable has not been disposed of, you are able to set the Disposable property to IDisposable values as you would expect. Once the MultipleAssignmentDisposable has been disposed, attempting to set the Disposable property will cause the value to be instantly disposed of; meanwhile, Disposable will remain null. +
+
RefCountDisposable
+
+ The RefCountDisposable offers the ability to prevent the disposal of an underlying resource until all dependent resources have been disposed. You need an underlying IDisposable value to construct a RefCountDisposable. You can then call the GetDisposable method on the RefCountDisposable instance to retrieve a dependent resource. Each time a call to GetDisposable is made, an internal counter is incremented. Each time one of the dependent disposables from GetDisposable is disposed, the counter is decremented. Only if the counter reaches zero will the underlying be disposed of. This allows you to call Dispose on the RefCountDisposable itself before or after the count is zero. +
+
ScheduledDisposable
+
+ In a similar fashion to ContextDisposable, the ScheduledDisposable type allows you to specify a scheduler, onto which the underlying resource will be disposed. You need to pass both the instance of IScheduler and instance of IDisposable to the constructor. When the ScheduledDisposable instance is disposed of, the disposal of the underlying resource will be scheduled onto the provided scheduler. +
+
SerialDisposable
+
+ SerialDisposable is very similar to MultipleAssignmentDisposable, as they both expose a read/write Disposable property. The contrast between them is that whenever the Disposable property is set on a SerialDisposable, the previous value is disposed of. Like the MultipleAssignmentDisposable, once the SerialDisposable has been disposed of, the Disposable property will be set to null and any further attempts to set it will have the value disposed of. The value will remain as null. +
+
SingleAssignmentDisposable
+
+ The SingleAssignmentDisposable class also exposes IsDisposed and Disposable properties. Like MultipleAssignmentDisposable and SerialDisposable, the Disposable value will be set to null when the SingleAssignmentDisposable is disposed of. The difference in implementation here is that the SingleAssignmentDisposable will throw an InvalidOperationException if there is an attempt to set the Disposable property while the value is not null and the SingleAssignmentDisposable has not been disposed of. +
+
-- Disposable -- BooleanDisposable -- CancellationDisposable -- CompositeDisposable -- ContextDisposable -- MultipleAssignmentDisposable -- RefCountDisposable -- ScheduledDisposable -- SerialDisposable -- SingleAssignmentDisposable +TODO: we recently made SingleAssignmentDisposableValue public after a request to do so. -For a full rundown of each of the implementations see the [Disposables](20_Disposables.html) reference in the Appendix. For now we will look at the extremely simple and useful `Disposable` static class: + +TODO: ICancelable? + +TODO: StableCompositeDisposable? + + +TODO: fit this in? ```csharp namespace System.Reactive.Disposables @@ -32,6 +77,7 @@ namespace System.Reactive.Disposables } ``` + As you can see it exposes two members: `Empty` and `Create`. The `Empty` method allows you get a stub instance of an `IDisposable` that does nothing when `Dispose()` is called. This is useful for when you need to fulfil an interface requirement that returns an `IDisposable` but you have no specific implementation that is relevant. The other overload is the `Create` factory method which allows you to pass an `Action` to be invoked when the instance is disposed. The `Create` method will ensure the standard Dispose semantics, so calling `Dispose()` multiple times will only invoke the delegate you provide once: @@ -52,4 +98,4 @@ Being disposed. Calling again... ``` -Note that "Being disposed." is only printed once. In a later chapter we cover another useful method for binding the lifetime of a resource to that of a subscription in the [Observable.Using](11_AdvancedErrorHandling.html#Using) method. +Note that "Being disposed." is only printed once. From 3508e7825910fd223b756dda3f1755fe139dde80 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Thu, 14 Sep 2023 16:22:50 +0100 Subject: [PATCH 043/142] Remove more spurious tab characters --- content/06_Transformation.md | 12 ++++++------ content/08_Partitioning.md | 4 ++-- content/09_CombiningSequences.md | 4 ++-- content/13_Timing.md | 12 ++++++------ 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/content/06_Transformation.md b/content/06_Transformation.md index 72b855c..c4c4f01 100644 --- a/content/06_Transformation.md +++ b/content/06_Transformation.md @@ -2,14 +2,14 @@ title: Transformation of sequences --- -# Transformation of sequences +# Transformation of sequences The values from the sequences we consume are not always in the format we need. Sometimes there is too much noise in the data so we strip the values down. Sometimes each value needs to be expanded either into a richer object or into more values. By composing operators, Rx allows you to control the quality as well as the quantity of values in the observable sequences you consume. Up until now, we have looked at creation of sequences, transition into sequences, and, the reduction of sequences by filtering. In this chapter we will look at _transforming_ sequences. -## Select +## Select The classic transformation method is `Select`. It allows you provide a function that takes a value of `TSource` and return a value of `TResult`. The signature for `Select` is nice and simple and suggests that its most common usage is to transform from one type to another type, i.e. `IObservable` to `IObservable`. @@ -57,7 +57,7 @@ char --> E char completed ``` -If we really want to take advantage of LINQ we could transform our sequence of integers to a sequence of anonymous types. +If we really want to take advantage of LINQ we could transform our sequence of integers to a sequence of anonymous types. ```csharp Observable.Range(1, 5) @@ -87,7 +87,7 @@ query.Dump("anon"); In Rx, `Select` has another overload. The second overload provides two values to the `selector` function. The additional argument is the element's index in the sequence. Use this method if the index of the element in the sequence is important to your selector function. -## SelectMany +## SelectMany Whereas `Select` produces one output for each input, `SelectMany` enables each input element to be transformed into any number of outputs. To see how this can work, let's first look at an example that uses just `Select`: @@ -178,7 +178,7 @@ it would produce a list with these elements: The order is less odd. It's worth exploring the reasons for this in a little more detail. -### IEnumerable vs. IObservable SelectMany +### IEnumerable vs. IObservable SelectMany `IEnumerable` is pull based—sequences produce elements only when asked. `Enumerable.SelectMany` pulls items from its sources in a very particular order. It begins by asking its source `IEnumerable` (the one returned by `Range` in the preceding example), and then retrieves the first value. `SelectMany` then invokes our callback, passing this first item, and then enumerates everything in the `IEnumerable` our callback returns. Only when it has exhausted this does it ask the source (`Range`) for a second item. Again, it passes that second item to our callback and then fully enumerates the `IEnumerable`, we return, and so on. So we get everything from the first nested sequence first, then everything from the second, etc. @@ -281,7 +281,7 @@ source.Select(i => (int)i); source.Where(i=> i is int).Select(i=>(int)i); ``` -## Materialize and Dematerialize +## Materialize and Dematerialize The `Materialize` operator transforms a source of `IObservable` into one of type `IObservable>`. It will provide one `Notification` for each item the source produces, and, if the sourced terminates, it will produce one final `Notification` indicating whether it completed successfully or with an error. diff --git a/content/08_Partitioning.md b/content/08_Partitioning.md index ae2ee29..fa9793b 100644 --- a/content/08_Partitioning.md +++ b/content/08_Partitioning.md @@ -326,7 +326,7 @@ public static IObservable> Buffer( The `timeSpan` determines the length of time covered by each window, and the `timeShift` determines the interval at which new windows are started. -## Window +## Window The `Window` operator is very similar to the `Buffer`. It can split the input into chunks based either on element count or time, and it also offers support for overlapping windows. However, it has a different return type. Whereas using `Buffer` on an `IObservable` will return an `IObservable>`, `Window` will return an `IObservable>`. This means that `Window` doesn't have to wait until it has filled a complete buffer before producing anything. @@ -344,7 +344,7 @@ TODO: need a good example for when you might actually use `Window`. TODO: this next bit was imported from Sequences of Coincidence (now dropped), and needs to be edited -### Customizing windows +### Customizing windows The overloads above provide simple ways to break a sequence into smaller nested windows using a count and/or a time span. Now we will look at the other overloads, that provide more flexibility over how windows are managed. diff --git a/content/09_CombiningSequences.md b/content/09_CombiningSequences.md index 11c3ce0..488a0bf 100644 --- a/content/09_CombiningSequences.md +++ b/content/09_CombiningSequences.md @@ -834,7 +834,7 @@ var systemStatus = webServerStatus TODO: these next two sequences were relocated from the now-dropped Sequences of Coincidence chapter. They need editing -## Join +## Join The `Join` operator allows you to logically join two sequences. Whereas the `Zip` operator would pair values from the two sequences together by index, the `Join` operator allows you join sequences by intersecting windows. Like the `Window` overload we just looked at, you can specify when a window should close via an observable sequence; this sequence is returned from a function that takes an opening value. The `Join` operator has two such functions, one for the first source sequence and one for the second source sequence. Like the `Zip` operator, we also need to provide a selector function to produce the result item from the pair of values. @@ -922,7 +922,7 @@ public static IObservable MyCombineLatest While the code above is not production quality (it would need to have some gates in place to mitigate race conditions), it shows how powerful `Join` is; we can actually use it to create other operators! -## GroupJoin +## GroupJoin When the `Join` operator pairs up values that coincide within a window, it will pass the scalar values left and right to the `resultSelector`. The `GroupJoin` operator takes this one step further by passing the left (scalar) value immediately to the `resultSelector` with the right (sequence) value. The right parameter represents all of the values from the right sequences that occur within the window. Its signature is very similar to `Join`, but note the difference in the `resultSelector` parameter. diff --git a/content/13_Timing.md b/content/13_Timing.md index 6ff3843..174705f 100644 --- a/content/13_Timing.md +++ b/content/13_Timing.md @@ -2,11 +2,11 @@ title: Timing --- -# Time-based sequences +# Time-based sequences With event sources, timing is often important. In some cases, the only information of interest about some event might the time at which it occurred. The only way in which the core `IObservable` and `IObserver` interfaces address time is that a source can decide when it calls an observer's `OnNext` method. A subscriber knows when an event occurred because it is occurring right now. This isn't always the most convenient way in which to work with timing, so the Rx library provides some timing-related operators. We've already seen a couple of operators that offer optional time-based operation: [`Buffer`](./08_Partitioning.md#buffer) and [`Window`])(08_Partitioning#window). This chapter looks at the various operators that are all about timing. -## Timestamp and TimeInterval +## Timestamp and TimeInterval As observable sequences are asynchronous it can be convenient to know timings for when elements are received. Obviously, a subscriber can always just use `DateTimeOffset.Now`, but if you want to refer to the arrival time as part of a larger query, the `Timestamp` extension method is a handy convenience method that attaches a timestamp to each element. It wraps elements from its source sequence in a light weight `Timestamped` structure. The `Timestamped` type is a struct that exposes the value of the element it wraps, and also a `DateTimeOffset` indicating when `Timestamp` operator received it. @@ -50,7 +50,7 @@ TimeStamp completed As you can see from the output, the timings are not exactly one second but are pretty close. Some of this will be measurement noise in the `TimeInterval` operator, but most of this variability is likely to arise from the `Observable.Interval` class. There will always be a limit to the precision with which a scheduler can honour the timing request of it. Some scheduler introduce more variation than others—the schedulers that deliver work via a UI thread are ultimately limited by how quickly that thread's message loop responds. But even in the most favourable condition, schedulers are limited by the fact that .NET is not built for use in real-time systems (and nor are most of the operating systems Rx can be used on). So with all of the operators in this section, you should be aware that timing is always a _best effort_ affair in Rx. -## Delay +## Delay The `Delay` extension method time-shifts an entire sequence. `Delay` attempts to preserve the relative time intervals between the values. There is inevitably a limit to the precision with which it can do this—it won't recreate timing down to the nearest nanosecond. The exact precision is determined by the scheduler you use, and will typically get worse under heavy load, but it will typically reproduce timings to within a few milliseconds. @@ -93,7 +93,7 @@ delay Completed Note that `Delay` will not time-shift `OnError` notifications. These will be propagated immediately. -## Sample +## Sample The `Sample` method produces items whatever interval you ask. Each time it produces a value, it reports the last value that emerged from your source. If you have a source that produces data at a higher rate than you need (e.g. suppose you have an accelerometer that reports 100 measurements per second, but you only need to take a reading 10 times a second), `Sample` provides an easy way to reduce the data rate. This example shows `Sample` in action. @@ -178,7 +178,7 @@ If you looked at these numbers closely, you might have noticed that the interval Since the first sample is taken after the source emits five, and two thirds of the way into the gap after which it will produce six, there's a sense in which the "right" current value is something like 5.67, but `Sample` doesn't attempt any such interpolation. It just reports the last value to emerge from the source. A related consequence is that if the sampling interval is short enough that you're asking `Sample` to report values faster than they are emerging from the source, it will just repeat values. -## Throttle +## Throttle The `Throttle` extension method provides a sort of protection against sequences that produce values at variable rates and sometimes too quickly. Like the `Sample` method, `Throttle` will return the last sampled value for a period of time. Unlike `Sample` though, `Throttle`'s period is a sliding window. Each time `Throttle` receives a value, the window is reset. Only once the period of time has elapsed will the last value be propagated. This means that the `Throttle` method is only useful for sequences that produce values at a variable rate. Sequences that produce values at a constant rate (like `Interval` or `Timer`) either would have all of their values suppressed if they produced values faster than the throttle period, or all of their values would be propagated if they produced values slower than the throttle period. @@ -200,7 +200,7 @@ We could apply `Throttle` to use a live search feature that makes suggestions as Note that the RxJS library decided to make their version of throttle work differently, so if you ever find yourself using both Rx.NET and RxJS, be aware that they don't work the same way. In RxJS, throttle doesn't shut off completely when the source exceeds the specified rate: it just drops enough items that the output never exceeds the specified rate. So RxJS's throttle implementation is a kind of rate limiter, whereas Rx.NET's `Throttle` is more like a self-resetting circuit breaker that shuts off completely during an overload. -## Timeout +## Timeout The `Timeout` operator method allows us terminate a sequence with an error if the source does not produce any notifications for a given period. We can either specify the period as a sliding window with a `TimeSpan`, or as an absolute time that the sequence must complete by providing a `DateTimeOffset`. From 7f621cca54c349be5a40b1632f012f8802d06b4d Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Thu, 14 Sep 2023 16:23:50 +0100 Subject: [PATCH 044/142] Remove Dispelling Myths chapter This all seemed only tangentially related to Rx, and also felt rather outdated. --- content/94_DispellingMyths.md | 50 ----------------------------------- 1 file changed, 50 deletions(-) delete mode 100644 content/94_DispellingMyths.md diff --git a/content/94_DispellingMyths.md b/content/94_DispellingMyths.md deleted file mode 100644 index ee2371a..0000000 --- a/content/94_DispellingMyths.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title : Appendix B Dispelling myths ---- - -# Dispelling event myths - -The previous parts in this book should have given you a solid and broad foundation in the fundamentals of Rx. We will use this based to learn the really fun and sometimes complex parts of Rx. Just before we do, I want to first make sure we are all on the same page and dispel some common myths and misunderstandings. Carrying these misconceptions into a world of concurrency will make things seem magic and mysterious. This normally leads to problematic code. - -## Event myths - -Often in my career, I have found myself involved in the process of interviewing new candidates for developer roles. I have often been surprised about the lack of understanding developers had surrounding .NET events. Carrying these misconception into a world of concurrency will make things seem magic and mysterious. This normally leads to problematic code. Here is a short list of verifiable facts about events. - -
-
Events are just a syntactic implementation of the observer pattern
-
- The += and -= syntax in c# may lead you to think that there is something clever going on here, but it is just the observer pattern; you are providing a delegate to get called back on. Most events pass you data in the form of the sender and the EventArgs. -
-
Events are multicast
-
- Many consumers can register for the same event. Each delegate (handler) will be internally added to a callback list. -
-
Events are single threaded.
-
- There is nothing multithreaded about an event. Each of the callback handlers are each just called in the order that they registered, and they are called sequentially. -
-
Event handlers that throw exceptions stop other handlers being called
-
- Since handlers are called sequentially, they are also called on the same thread that raised the event. This means that, if one handler throws an exception, there cannot be a chance for any user code to intercept the exception. This means that the remaining handlers will not be called. -
-
- -Common myths about events that I have heard (or even believed at some point) include: - -* Handlers are called all at the same time on the thread pool, in parallel -* All handlers will get called. Throwing an exception from a handler will not affect other handlers -* You don't need to unregister an event handler, .NET is managed so it will garbage collect everything for you. - -The silly thing about these myths is that it only takes fifteen minutes to prove them all wrong; you just open up Visual Studio or [LINQPad](http://www.linqpad.net/) and test them out. In my opinion, there is something satisfying about proving something you only believed in good faith to be true. - - - -## Memory management myths - -* Event handles -* IDispose pattern -* Finalise is just as good as Dispose -* GC is free -* Setting to NULL is the same as Dispose or finalise - - \ No newline at end of file From e032599f93f2dc09c1cbffbd2d986aab2a296b02 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Thu, 14 Sep 2023 16:59:25 +0100 Subject: [PATCH 045/142] Fix appendix a title --- content/A_IoStreams.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/A_IoStreams.md b/content/A_IoStreams.md index ff8f5a5..6a4a2c7 100644 --- a/content/A_IoStreams.md +++ b/content/A_IoStreams.md @@ -1,4 +1,4 @@ -# What's Wrong with Classic IO Streams +# Appendix A: What's Wrong with Classic IO Streams In the [Key Types](02_KeyTypes.md#what-about-streams) chapter, I stated that `System.IO.Stream` is not a good fit for modelling the kinds of event streams we work with in Rx. This appendix explains why. From 3feae25d079ebf63cff6d5694b0eee8292d7db6a Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Wed, 27 Sep 2023 14:57:07 +0100 Subject: [PATCH 046/142] First full Appendix D draft --- content/D_AlgebraicUnderpinnings | 529 ++++++++++++++++++++++--------- 1 file changed, 380 insertions(+), 149 deletions(-) diff --git a/content/D_AlgebraicUnderpinnings b/content/D_AlgebraicUnderpinnings index 858ea21..8659d65 100644 --- a/content/D_AlgebraicUnderpinnings +++ b/content/D_AlgebraicUnderpinnings @@ -1,249 +1,482 @@ +--- +title : Appendix D Rx's Algebraic Underpinnings +--- +# Appendix C: Rx's Algebraic Underpinnings -TODO: I had originally written this to explain why there's no `FirstOrEmpty`, but ultimately felt it was a distraction, and that it was better to use the opportunity to segue into `Take` (which is effectively a generalization of `First` that is flexible enough to do what `FirstOrEmpty` would do). +Rx operators can be combined together in more or less any way you can imagine, and they generally just work. The fact that this works is not merely a happy accident. In general, integration between software components is often one of the largest sources of pain in software development, so the fact that it works so well is remarkable. This is in large part thanks to the fact that Rx relies on some underlying theory. Rx has been designed so that you don't need to know these details to use it, but curious developers typically want to know these things. -But I think this is an important point, and I'd like to make it somewhere. +The earlier sections of the book have already talked about one formal aspect of Rx: the contract between observable sources and their observables. There is a clearly defined grammar for what constitutes acceptable use of `IObservable`. This goes beyond what the .NET type system is able to enforce, so we are reliant on code doing the right thing. However, the `System.Reactive` library does always adhere to this contract, and it also has some guard types in place that detect when application code has not quite played by the rules, and to prevent this from wreaking havoc. -`First` and its variants are all examples of a group of operators that take a collection-like input and reduce it to a single value. This makes it structurally similar to some other operators we'll see later such as `Max`, `Average`, and `Sum`—they all reduce their entire input example to a single output value. (A function of this type is sometimes referred to as a _fold_, or if you like fancy but mathematically precise language, a [_catamorphism_](https://bartoszmilewski.com/2013/06/10/understanding-f-algebras/).) A hypothetical `FirstOrEmpty` would not fit the mould—sometimes its result would produce a single element and sometimes it would produce nothing. +The `IObservable` grammar is important. Components rely on it to ensure correct operation. Consider the `Where` operator, for example. It provides its own `IObserver` interface with which it subscribes to the underlying source, and this receives items from that source, and then decides which to forward to the observer that subscribed to the `IObservable` presented by `Where`. You could imagine it looking something like this: -This might seem like an unnecessarily academic argument. However, this underestimates the extent to which LINQ in general and Rx in particular benefit from academic research. Composition is fundamental to how we use Rx—any real Rx program will tend to plug multiple operators together. This generally just works, but the fact that it does work is not an accident. Rx's design is heavily informed by research on how abstract algebra can be applied to software to ensure that such composition is sound. Rx does not make a big song and dance about this—you don't need to know what Monads or anamorphisms are to use it successfully. It just quietly relies on solid underlying theory to ensure that everything works smoothly. +```cs +public class OverSimplifiedWhereObserver : IObserver +{ + private IObserver downstreamSubscriber; + private readonly Func predicate; + + public OverSimplifiedWhereObserver(IObserver downstreamSubscriber, Func predicate) + { + this.downstreamSubscriber = downstreamSubscriber; + this.predicate = predicate; + } + + public void OnNext(T value) + { + if (this.predicate(value)) + { + this.downstreamSubscriber.OnNext(value); + } + } + + public void OnCompleted() + { + this.downstreamSubscriber.OnCompleted(); + } + + public void OnError(Exception x) + { + this.downstreamSubscriber.OnCompleted(x); + } +} +``` + +This does not take any explicit steps to follow the `IObserver` grammar. But it doesn't need to if the source to which it is subscriber obeys those rules. Since this only ever calls its subscriber's `OnNext` in its own `OnNext`, and likewise for `OnCompleted` and `OnError`, then as long as the underlying source to which this operator is subscribed obeys the rules for how to call those three methods, this class will in turn also follow those rules automatically. + +In fact, `System.Reactive` is not quite that trusting. It does have some code that detects certain violations of the grammar, but even these measure just ensure that the grammar is adhered to once execution enters Rx. There are some checks at the boundaries of the system, but Rx's innards rely heavily on the fact that upstream sources will abide by the rules. + +However, the grammar for `IObservable` is not the only place where Rx relies on formalism to ensure correct operation. It also depends on a particular set of mathematical concepts: + +* Monads +* Catamorphisms +* Anamorphisms +Standard LINQ operators can be expressed purely in terms of these three ideas. -Originally from Transformation: +These concepts come out of a branch of mathematics called [category theory](https://en.wikipedia.org/wiki/Category_theory), a pretty abstract branch of mathematics concerned with mathematical structures. In the late 1980s, a few computer scientists were exploring this area of maths with a view to using them to model the behaviour of programs. [Eugenio Moggi](https://en.wikipedia.org/wiki/Eugenio_Moggi) (an Italian computer scientist who was, at the time, working at the University of Edinburgh) is generally credited for realising that monads in particular are well suited to describing computations, as his 1991 paper, [Notions of computations and monads](https://person.dibris.unige.it/moggi-eugenio/ftp/ic91.pdf) explains. These theoretical ideas and were incorporated into the Haskell programming language, primarily by Philip Wadler and Simon Peyton Jones, who published a proposal for [monadic handling of IO](https://www.microsoft.com/en-us/research/wp-content/uploads/1993/01/imperative.pdf) in 1992, which, by 1996, had been fully incorporated into Haskell in its v1.3 release to enable programs' handling of input and output (e.g., handling user input, or writing data to files) to to work in a way that was underpinned by strong mathematical foundations. This has widely been recognized as a significant improvement on Haskell's earlier attempts to model the messy realities of IO in a purely functional language. -To review: +Why does any of this matter? These mathematical foundations are exactly why LINQ operators can be freely composed. +The mathematical discipline of category theory has developed a very deep understanding of various mathematical structures, and one of the most useful upshots for programmers is that it offers certain rules which, if followed, can ensure that software elements will behave well when combined together. This is, admittedly, a rather hand-wavey explanation. If you'd like a detailed explanation of exactly how category theory can be applied to programming, and why it is useful to do so, I can highly recommend [Bartosz Milewski's 'Category Theory for Programmers'](https://bartoszmilewski.com/2014/10/28/category-theory-for-programmers-the-preface/). The sheer volume of information available there should make it clear why I'm not about to attempt a full explanation in this appendix. Instead, my goal is just to outline the basic concepts, and explain how they correspond to features of Rx. + +## Monads + +Monads are the most important mathematical concept underpinning LINQ's (and therefore Rx's) design. It's not necessary to have the faintest idea of what a monad is to be able to use Rx. The most important fact is that their mathematical characteristics (and in particular, their support for composition) are what enable Rx operators to combine together freely. From a practical perspective, all that really matters is that it just works, but if you've read this far, that probably won't satisfy you. + +It is often hard to describe precisely what mathematical objects really are, because they are inherently abstract. So before I get to the definition of a monad, it may be helpful to understand how LINQ uses this concept. LINQ treats a monad as a general purpose representation of a container of items. As developers, we know that there are many kinds of things that can contain items. There are arrays, and other collection types such as `IList`. There are also databases, and although there are many ways in which a database table is quite different from an array, there are also some ways in which they are similar. The basic insight underpinning LINQ is that there is a mathematical abstraction that captures the essence of what containers have in common. If we determine that some .NET type represents a monad, then all of the work that mathematicians have done over the years to understand the characteristics and behaviours of monads will be applicable to that .NET type. + +For example, `IEnumerable` is a monad, as is `IQueryable`. And crucially for Rx, `IObservable` is as well. LINQ's design relies on the properties of monads, so if you can determine that some .NET type is a monad, then it is a candidate for a LINQ implementation. (Conversely, if you try to create a LINQ provider for a type that is not a monad, you are likely to have problems.) + +So what are these characteristics that LINQ relies on? The first relates directly to containment: it must be possible to take some value and put it inside your monad. You'll notice that all the examples I've given so far are generic types, and that's no coincidence: monads are essentially type constructors, and the type argument indicates the kind of thing you want the monad to contain. So given some value of type `T`, it must be possible to wrap that in a monad for that type. Given an `int` we can get an `IEnumerable`, and if we couldn't do that, `IEnumerable` would not be monadic. The second characteristic is slightly harder to pin down without getting lost in high abstraction, but it essentially boils down to the idea that if we have functions that we can apply to individual contained items, and if those functions compose in useful ways, we can create new functions that operate not on individual values but on the containers, and crucially, those functions can also be composed in the same ways. + +This enables us to work with entire containers as freely as we can work with individual values. + +### The monadic operations: return and bind + +We've just seen that monads aren't just a type. They need to supply certain operations. This first operation, the ability to wrap a value in the monad, is sometimes called _unit_ in mathematical texts, but in a computing context it is more often known as _return_. This is how [`Observable.Return`](03_CreatingObservableSequences.md#observablereturn) got its name. + +There doesn't technically need to be an actual function. The monadic laws are satisfied as long as some mechanism is available to put a value into the monad. For example, unlike `Observable`, the `Enumerable` type does _not_ define a `Return` method, but it doesn't matter. You can just write `new[] { value }`, and that's enough. + +Monads are required to provide just one other operation. The mathematical literature calls it _bind_, some programming systems call it `flatMap`, and LINQ refers to it as `SelectMany`. This is the one that tends to cause the most head scratching, because although it has a clear formal definition, it's harder to say what it really does than with _return_. However, we're looking at monads through their ability to represent containers, and this offers a fairly straightforward way to understand bind/`SelectMany`: it lets us take a container where every item is a nested container (e.g., an array of arrays, or an `IEnumerable>`) and flatten it out. For example, a list of lists would become one list, containing every item from every list. As we'll soon see, this is not obviously related to the formal mathematical definition of bind, which is altogether more abstract, but it is compatible with it, which is all that's needed for us to enjoy the fruits of the mathematicians' labours. + +Critically, to qualify as a monad, the two operations just described (return and bind) must conform to certain rules, or _laws_ as they are often described in the literature. There are three laws, and all of them govern how the bind operation works, and two of these are concerned with how return and bind interact with one another. These laws are the foundation of the composability of operations based on monads. The laws are somewhat abstract, so it isn't exactly obvious _why_ they enable this, but they are non-negotiable. If your type and operations don't follow these laws, then you don't have a monad, so you can't rely on the characteristics monads guarantee. + +So what does bind actually look like? Here's how it looks for `IEnumerable`: + +```cs +public static IEnumerable SelectMany ( + this IEnumerable source, + Func> selector); ``` -Ana(morphism) T --> IObservable -Cata(morphism) IObservable --> T -Bind IObservable --> IObservable + +So it is a function that takes two inputs. The first is an `IEnumerable`. The second input is itself a function which, when supplied with a `TSource` produces an `IEnumerable`. And when you invoke `SelectMany` (aka _bind_) with these two arguments, you get back an `IEnumerable`. Although formal definition of bind requires it to have this shape, it doesn't dictate any particular behaviour—anything that conforms to the laws is acceptable. But in the context of LINQ, we do expect a specific behaviour: this will invoke the function (the second argument) once for every `TSource` in the source enumerable (the first argument), and then collect all of the `TResult` values produced by all of the `IEnumerable` collections returned by all of the invocations of that function, wrapping them as a one big `IEnumerable`. In this specific case of `IEnumerable` we could describe `SelectMany` as getting one output collection for each input value, and then concatenating all of those output collections. + +But we've now got a little too specific. Even if we're looking specifically at LINQ's use of monads to represent generalised containers, `SelectMany` doesn't necessarily entail concatenation. It merely requires that the container returned by `SelectMany` contains all of the items produced by the function. Concatenation is one strategy, but Rx does something different. Since observables tend to produce values as and when they want to, the `IObservable` returned by `Observable.SelectMany` just produces a value each time any of the individual per-`TSource` `IObservable`s produced by the function produces a value. (It performs some synchronization to ensure that it follows Rx's rules for calls into `IObserver`, so if one of these observables produces a value while a call to the subscriber's `OnNext` is in progress, it will wait for that to return before pushing the next value. But other than that, it just pushes all values straight through.) So the source values are essentially interleaved here, instead of being concatenated. But the broader principle—that the result is a container with every value produced by the callback for the individual inputs—applies. + +The mathematical definition of a monadic bind has the same essential shape, it just doesn't dictate a particular behaviour. So any monad will have a bind operation that takes two inputs: an instance of the monadic type constructed for some input value type (`TSource`), and a function that takes a `TSource` as its input and produces an instance of the monadic type constructed for some output value type (`TResult`). When you invoke bind with these two inputs the result is an instance of the monadic type constructed for the output value type. We can't precisely represent this in C#'s type system, but this sort of gives the broad flavour: + +```cs +// An impressionistic sketch of the general form of a monadic bind +public static M SelectMany ( + this M source, + Func> selector); ``` +Substitute your chosen monadic type (`IObservable`, `IEnumerable`, `IQueryable`, or whatever) for `M`, and that tells you what bind should look like for that particular type. -Now that we have been introduced to all three of our higher order functions, you may find that you already know them. Bind and Cata(morphism) were made famous by [MapReduce](http://en.wikipedia.org/wiki/MapReduce) framework from Google. Here Google refer to Bind and Cata by their perhaps more common aliases; Map and Reduce. +But it's not enough to provide the two functions, return and bind. Not only must they have the correct shape, they must also abide by the laws. +### The monadic laws +So a monad consists of a type constructor (e.g., `IObservable`) and two functions, `Return` and `SelectMany`. (From now on I'm just going to use these LINQy names.) But to qualify as a monad, these features must abide by three "laws" (given in a very compact form here, which I'll explain in the following sections): -It may help to remember our terms as the `ABCs` of higher order functions. +1. `Return` is a 'left-identity' for `SelectMany` +2. `Return` is a 'right-identity' for `SelectMany` +3. `SelectMany` should be, in effect, associative +Let's look at each of these in a bit more detail + +#### Monadic law 1: `Return` is a 'left-identity' for `SelectMany` + +This law means that if you pass some value `x` into `Return` and then pass the result as one of the inputs to `SelectMany` where the other input is a function `SomeFunc`, then the result should be identical to just passing `x` directly into `SomeFunc`. For example: + +```cs +// Given a function like this: +// IObservable SomeFunc(int) +// then these two should be identical. +IObservable o1 = Observable.Return(42).SelectMany(SomeFunc); +IObservable o2 = SomeFunc(42); ``` -Ana enters the sequence. T --> IObservable -Bind modifies the sequence. IObservable --> IObservable -Cata leaves the sequence. IObservable --> T + +Here's an informal way to understand this. `SelectMany` pushes every item in its input container through `SomeFunc`, and each such call produces a container of type `IObservable`, and it collects all these containers together into one big `IObservable` that contains item from all of the individual `IObservable` containers. But in this example, the input we provide to `SelectMany` contains just a single item, meaning that there's no collection work to be done—`SelectMany` is going to invoke our function just once with that one and only input, and that's going to produce just one output `IObservable`. `SelectMany` is obliged to return an `IObservable` that contains everything in the single `IObservable` it got from that single call to `SomeFunc`. There's no actual further processing for it to do in this case—since there was only one call to `SomeFunc` it doesn't need to combine items from multiple containers in this case: that single output produced by the single call to `SomeFunc` contains everything that should be in the container that `SelectMany` is going to return. We can therefore just invoke `SomeFunc` directly with the single input item. + +It would be odd if `SelectMany` did anything else. If `o1` were different in some way, that would mean one of three things: + +* `o1` would contain items that aren't in `o2` (meaning it had somehow included items _not_ produced by `SomeFunc`) +* `o2` would contain items that aren't in `o1` (meaning that `SelectMany` had omitted some of the items produced by `SomeFunc`) +* `o1` and `o2` contain the same items but are in some detectable sense specific to the monad type in use different (e.g., the items came out in a different order) + +So this law essentially formalizes the idea that `SelectMany` shouldn't add or remove items, or fail to preserve characteristics that the monad in use would normally preserve such as ordering. + + +#### Monadic law 2: `Return` is a 'left-identity' for `SelectMany` + +This law means that if you pass `Return` as the function input to `SelectMany`, and then pass some value of the constructed monadic type in as the other argument, you should get that same value as the output. For example: + +```cs +// These two should be identical. +IObservable o1 = GetAnySource(); +IObservable o2 = o1.SelectMany(Observable.Return); ``` +By using `Return` as the function for `SelectMany`, we are essentially asking to take every item in the input container and to wrap it in its very own container (`Return` wraps a single item) and then to flatten all of those containers back out into a single container. We are adding a layer of wrapping and then removing it again, so it makes sense that this should have no effect. -Add a section on how `SelectMany` is the monadic bind operator. +#### Monadic law 3: `SelectMany` should be, in effect, associative -This excerpt originally in chapter 4 illustrates that `Select` and `Where` can be built from `SelectMany`: +Suppose we have two functions, `Tx1` and `Tx2`, each of form suitable for passing as the argument to `SelectMany`. There are two ways we could apply these: ----begin +```cs +// These two should be identical. +IObservable o1 = source.SelectMany(x => Tx1(x).SelectMany(Tx2)); +IObservable o2 = source.SelectMany(x => Tx1(x)).SelectMany(Tx2); +``` -Extending the source sequence to have many values, will give us a result with many values. +The difference here is just a slight change in the placements of the parentheses: is the second call to `SelectMany` invoked inside the function passed to the first `SelectMany`, or is it invoked on the result of the first `SelectMany`. This code adjusts the layout, and also replaces the lambda `x => Tx1(x)` with the exactly equivalent `Tx1`, which might make the difference in structure a bit easier to see: -```csharp -Func letter = i => (char)(i + 64); -Observable.Range(1,3) - .SelectMany(i => Observable.Return(letter(i))) - .Dump("SelectMany"); +```cs +IObservable o1 = source + .SelectMany(x => Tx1(x).SelectMany(Tx2)); +IObservable o2 = source + .SelectMany(Tx1) + .SelectMany(Tx2); ``` -Now the input of [1,2,3] produces [[A], [B], [C]] which is flattened to just [A,B,C]. +The third law says that either of these should have the same effect. It shouldn't matter whether the second `SelectMany` call (for `Tx2`) happens "inside" or after the first `SelectMany` call. +An informal way to think about this is that `SelectMany` effectively applies two operations: a transformation and an unwrap. The transformation is defined by whatever function you pass to `SelectMany`, but because that function returns the monad type (in LINQ terms it returns a container which may contain any number of items) `SelectMany` unwraps each container returned when it passes an item to the function, in order to collect all the items together into the single container it ultimately returns. When you nest this sort of operation, it doesn't matter which order that unwrapping occurs in. For example, consider these functions: + +```cs +IObservable Tx1(int i) => Observable.Range(1, i); +IObservable Tx2(int i) => Observable.Return(i.ToString()); ``` -SelectMany --> A -SelectMany --> B -SelectMany --> C + +The first converts a number into a range of numbers of the same length. `1` becomes `[1]`, `3` becomes `[1,2,3]` and so on. Before we get to `SelectMany`, imagine what will happen if we use this with `Select` on an observable source that produces a range of numbers: + +```cs +IObservable input = Observable.Range(1, 3); // [1,2,3] +IObservable> expandTx1 = input.Select(Tx1); ``` -Note that we have effectively recreated the `Select` operator. +We get a sequence of sequences—`expand2` is effectively this: +``` +[ + [1], + [1,2], + [1,2,3], +] +``` +If instead we had used `SelectMany`: -The last example maps a number to a letter. As there are only 26 letters, it would be nice to ignore values greater than 26. This is easy to do. While we must return a sequence for each element of the source, there aren't any rules that prevent it from being an empty sequence. In this case if the element value is a number outside of the range 1-26 we return an empty sequence. +```cs +IObservable expandTx1Collect = input.SelectMany(Tx1); +``` + +it would apply the same transformation, but then flatten the results back out into a single list: -```csharp -Func letter = i => (char)(i + 64); -Observable.Range(1, 30) - .SelectMany( - i => - { - if (0 < i && i < 27) - { - return Observable.Return(letter(i)); - } - else - { - return Observable.Empty(); - } - }) - .Dump("SelectMany"); +``` +[ + 1, + 1,2, + 1,2,3, +] ``` -Output: +I've kept the line breaks to emphasize the connection between this and the preceding output, but I could just have written `[1,1,2,1,2,3]`. + +If we then want to apply the second transform, we could use `Select`: + +```cs +IObservable> expandTx1CollectExpandTx2 = expandTx1Collect + .SelectMany(Tx1) + .Select(Tx2); +``` + +This passes each number in `expandTx1Collect` to `Tx2`, which converts it into a sequence containing a single string: ``` -A -B -C -... -X -Y -Z -Completed +[ + ["1"], + ["1"],["2"], + ["1"],["2"],["3"] +] ``` -To be clear, for the source sequence [1..30], the value 1 produced a sequence [A], the value 2 produced a sequence [B] and so on until value 26 produced a sequence [Z]. When the source produced value 27, the `selector` function returned the empty sequence []. Values 28, 29 and 30 also produced empty sequences. Once all the sequences from the calls to the selector had been fattened to produce the final result, we end up with the sequence [A..Z]. +But if we use `SelectMany` on that final position too: -Now that we have covered the third of our three higher order functions, let us take time to reflect on some of the methods we have already learnt. First we can consider the `Where` extension method. We first looked at this method in the chapter on [Reducing a sequence](05_Filtering.html#Where). While this method does reduce a sequence, it is not a fit for a functional _fold_ as the result is still a sequence. Taking this into account, we find that `Where` is actually a fit for _bind_. As an exercise, try to write your own extension method version of `Where` using the `SelectMany` operator. Review the last example for some help... +```cs +IObservable expandTx1CollectExpandTx2Collect = expandTx1Collect + .SelectMany(Tx1) + .SelectMany(Tx2); +``` -An example of a `Where` extension method written using `SelectMany`: +it flattens these back out into just the strings: -```csharp +``` +[ + "1", + "1","2", + "1","2","3" +] +``` + +The associative-like requirement says it shouldn't matter if we apply `Tx1` inside the function passed to the first `SelectMany` instead of applying it to the result of that first `SelectMany`. So instead of starting with this: + +```cs +IObservable> expandTx1 = input.Select(Tx1); +``` + +we might write this: + +```cs +IObservable>> expandTx1ExpandTx2 = + input.Select(x => Tx1(x).Select(Tx2)); +``` + +That's going to produce this: + +``` +[ + [["1"]], + [["1"],["2"]], + [["1"],["2"],["3"]] +] +``` + +If we change that to use `SelectMany` for the nested call: + +```cs +IObservable> expandTx1ExpandTx2Collect = + input.Select(x => Tx1(x).SelectMany(Tx2)); +``` + +That's going to flatten out the inner items (but we're still using `Select` on the outside, so we still get a list of lists) producing this: + +``` +[ + ["1"], + ["1","2"], + ["1","2","3"] +] +``` + +And then if we change that first `Select` to `SelectMany`: + +```cs +IObservable expandTx1ExpandTx2CollectCollect = + input.SelectMany(x => Tx1(x).SelectMany(Tx2)); +``` + +it will flatten that outer layer of lists, giving us: + +``` +[ + "1", + "1","2", + "1","2","3" +] +``` + +That's the same final result we got earlier, as the 3rd monad law requires. + +To summarize, the two processes here were: + +* expand and transform Tx1, flatten, expand and transform Tx2, flatten +* expand and transform Tx1, expand and transform Tx2, flatten, flatten + +Both of these apply both transforms, and flatten out the extra layers of containment added by these transforms, and so although the intermediate steps looked different, we ended up with the same result, because it doesn't matter whether you unwrap after each transform, or you perform both transforms before unwrapping. + +#### Why these laws matter + +These three laws directly reflect laws that hold true for composition of straightforward functions over numbers. If we have two functions, _f_, and _g_, we could write a new function _h_, defined as _g(f(x))_. This way of combining function is called _composition_, and is often written as _g_ ∘ _f_. If the identity function is called _id_, then the following statements are true: + +* _id_ ∘ _f_ is equivalent to just _f_ +* _f_ ∘ _id_ is equivalent to just _f_ +* (_f_ ∘ _g_) ∘ _s_ is equivalent to _f_ ∘ (_g_ ∘ _s_) + +These correspond directly to the three monad laws. Informally speaking, this reflects the fact that the monadic bind operation (`SelectMany`) has deep structurally similarity to function composition. This is why we can combine LINQ operators together freely. + +### Recreating other operators with `SelectMany` + +Remember that there are three mathematical concepts at the heart of LINQ: monads, anamorphisms and catamorphisms. So although the preceding discussion has focused on `SelectMany`, the significance is much wider because we can express other standard LINQ operators in terms of these primitives. For example, this shows how we could implement [`Where`](05_Filtering.md#where) using just `Return` and `SelectMany`: + +```cs public static IObservable Where(this IObservable source, Func predicate) { return source.SelectMany(item => - { - if (predicate(item)) - { - return Observable.Return(item); - } - else - { - return Observable.Empty(); - } - }); + predicate(item) + ? Observable.Return(item) + : Observable.Empty()); } ``` -Now that we know we can use `SelectMany` to produce `Where`, it should be a natural progression for you the reader to be able to extend this to reproduce other filters like `Skip` and `Take`. - -As another exercise, try to write your own version of the `Select` extension method using `SelectMany`. Refer to our example where we use `SelectMany` to convert `int` values into `char` values if you need some help... - -An example of a `Select` extension method written using `SelectMany`: +This implements `Select`: -```csharp -public static IObservable MySelect( - this IObservable source, - Func selector) +```cs +public static IObservable Select( + this IObservable source, Func f) { - return source.SelectMany(value => Observable.Return(selector(value))); + return source.SelectMany(item => Observable.Return(f(item))); } ``` +Some operators require anamorphisms or catamorphisms, so let's look at those now. ----end +## Catamorphisms +A catamorphism is essentially a generalization of any kind of processing that takes every item in a container into account. In practice in LINQ, this typically means processes that inspect all of the values, and produce a single value as a result, such as [Observable.Sum](07_Aggregation.md#sum). More generally, aggregation of any kind constitutes catamorphism. The mathematical definition of catamorphism is more general than this—it doesn't necessarily have to reduce things all the way down to a single value for example—but for the purposes of understanding LINQ, this container-oriented viewpoint is the most straightforward way to think about this construct. +Catamorphisms are one of the fundamental building blocks of LINQ because you can't construct catamorphisms out of the other elements. But there are numerous LINQ operators that can be built out of LINQ's most elemental catamorphism, the [`Aggregate`](07_Aggregation.md#aggregate) operator. For example, here's one way to implement `Count` in terms of `Aggregate`: -This was original in the Aggregation section. I didn't much like it, but we might want to mine this for ideas: +```cs +public static IObservable MyCount(this IObservable items) + => items.Aggregate(0, (total, _) => total + 1); +``` ----begin +We could implement `Sum` thus: -## Functional folds +```cs +public static IObservable MySum(this IObservable items) + where T : INumber + => items.Aggregate(T.Zero, (total, x) => x + total); +``` -Finally we arrive at the set of methods in Rx that meet the functional description of catamorphism/fold. These methods will take an `IObservable` and produce a `T`. +This is more flexible than the similar sum example I showed in the [Aggregation chapter](07_Aggregation.md), because that worked only with an `IObservable`. Here I'm using the _generic math_ feature added in C# 11.0 and .NET 7.0 there to enable `MySum` to work across any number-like type. But the basic principle of operation is the same -Caution should be prescribed whenever using any of these fold methods on an observable sequence, as they are all blocking. The reason you need to be careful with blocking methods is that you are moving from an asynchronous paradigm to a synchronous one, and without care you can introduce concurrency problems such as locking UIs and deadlocks. We will take a deeper look into these problems in a later chapter when we look at concurrency. +If you came here for the theory, it probably won't be enough for you just to see that the various aggregating operators are all special cases of `Aggregate`. What really is a catamorphism? One definition is as "the unique homomorphism from an initial algebra into some other algebra" but as is typical with category theory, that's one of those explanations that's easiest to understand if you already understand the concepts it's trying to describe. If you try to understand this description in terms of the school mathematics form of algebra, in which we write equations where some values are represented by letters, it's hard to make sense of this definition. That's because catamorphisms take a much more general view of what constitutes "algebra," meaning essentially some system by which expressions of some kind can be constructed and evaluated. -> It is worth noting that in the soon to be released .NET 4.5 and Rx 2.0 will provide support for avoiding these concurrency problems. The new `async`/`await` keywords and related features in Rx 2.0 can help exit the monad in a safer way. +To be more precise, Catamorphisms are described in relation to something called an F-algebra. That's a combination of three things: -TODO: this was where First, Last, and Single were. (That was an odd choice. They are technically catamorphisms, but they are degenerate cases. `Aggregate` is the canonical example but that wasn't in this section! `Sum`, `Average`, `Min`, and `Max` are also all good examples (more specialized than Aggregate, but at least they look at every input), but they're also not in here. To be fair, the Rx source code puts FirstAsync and SingleAsync in Observable.Aggregates.cs. But it's the fact that this section _only_ contained these, and none of the other more obviously aggregating catamorphisms.) I've moved those out into filtering, because they feel more akin to Take and Last. From a structural algebra perspective these are different kinds of things, but in terms of what they actually do, they are positional filters, so they seem to fit better in the filtering chapter than Aggregation because they don't aggregate. +1. a Functor, _F_, that defines some sort of structure over some category _C_ +2. some object _A_ in the category _C_ +3. a morphism from _F A_ to _A_ that effectively evaluates the structure ----end +But that opens up more questions than it answers. So let's start with the obvious one: what's a Functor? From a LINQ perspective, it's essentially anything that implements `Select`. (Some programming systems call this `fmap`.) From our container-oriented viewpoint it's two things: 1) a type constructor that is container-like (e.g. something like `IEnumerable` or `IObservable`) and 2) some means of applying a function to everything in the container. So if you have a function that converts from `string` to `int`, a Functor lets you apply that in one operation to everything it contains. -## Amb +The combination of `IEnumerable` and its `Select` extension method is a Functor. You can use `Select` to convert an `IEnumerable` to an `IEnumerable`. `IObservable` and its `Select` form another Functor—we can use these to get from an `IObservable` to an `IObservable`. What about that "over some category _C_" part? That alludes to the fact that the mathematical description of a Functor is rather broader. When developers use category theory, we generally stick to a category that represents types (as in programming language types like `int`) and functions. (Strictly speaking a Functor maps from one category to another, so in the most general case, a Functor maps objects and morphisms in some category _C_ into objects and morphisms in some category _D_. But since for programming purposes, we are always using the category representing types, so for the Functors we use _C_ and _D_ will be the same thing. Strictly speaking this means we should be calling them Endofunctors, but nobody seems to bother—in practice we use the name for the more general form, Functor, and it's just taken as read that we mean an Endofunctor over the category of types and functions.) -The `Amb` method was a new concept to me when I started using Rx. This function was first introduced by [John McCarthy](https://en.wikipedia.org/wiki/John_McCarthy_(computer_scientist)), in his 1961 paper ['A Basis for a Mathematical Theory of Computation'](https://www.cambridge.org/core/journals/journal-of-symbolic-logic/article/abs/john-mccarthy-a-basis-for-a-mathematical-theory-of-computation-preliminary-report-proceedings-of-the-western-joint-computer-conference-papers-presented-at-the-joint-ireaieeacm-computer-conference-los-angeles-calif-may-911-1961-western-joint-computer-conference-1961-pp-225238-john-mccarthy-a-basis-for-a-mathematical-theory-of-computation-computer-programming-and-formal-systems-edited-by-p-braffort-and-d-hirschberg-studies-in-logic-and-the-foundations-of-mathematics-northholland-publishing-company-amsterdam1963-pp-3370/D1AD4E0CDB7FBE099B04BB4DAF24AFFA) in the Proceedings of the Western Joint Computer Conference. (A digital copy of this is hard to find, but a later version was published in [1963](http://www-formal.stanford.edu/jmc/basis1.pdf) in 'Computer Programming and Format Systems'.) It is an abbreviation of the word _Ambiguous_. Rx diverges slightly from normal .NET class library naming conventions here in using this abbreviation, partly because `amb` is the established name for this operator, but also as a tribute to McCarthy, whose work was an inspiration for the design of Rx. +So, that's the Functor part. Let's move onto 2, "some object _A_ in the category _C_." Well _C_ is the Functor's category, and we just established that objects in that category are types, so _A_ here might be the `string` type. If our chosen Functor is the combination of `IObservable` and its `Select` method, then _F A_ would be `IObservable`. -But what does `Amb` do? The basic idea of an [_ambiguous function_](http://www-formal.stanford.edu/jmc/basis1/node7.html) is that we are allowed to define multiple ways to produce a result, and that some or all of these might in practice prove unable to produce a result. Suppose we've defined some ambiguous function called `equivocate`, and perhaps that for some particular input value, all of `equivocate`'s component parts—all the different ways we gave it of calculating a result—are unable to process the value. (Maybe every one of them divides a number by the input. If we supply an input of `0`, then none of the components can produce a value for this input because they would all attempt to divide by 0.) In cases such as these where none of `equivocate`'s component parts is able to produce a result, `equivocate` itself is unable to produce a result. But suppose we supply some input where exactly one of its component parts is able to produce a result. In that case this result becomes the result of `equivocate` for that input. +So what about the "morphisms" in 3? Again, for our purposes we're just using Endofunctors over types and functions, so in this context, morphisms are just functions. So we could recast this as: -So in essence, we're supplying a bunch of different ways to process the input, and if exactly one of those is able to produce a result, we select that result. And if none of the ways of processing the input produces anything, then our ambiguous function also produces nothing. +1. some container-like generic type such as `IObservable` +2. an item type `A` (e.g., `string`, or `int`) +3. a function that takes an `IObservable` and returns a value of type `A` (e.g. `Observable.Aggregate`) -Where it gets slightly more weird (and where Rx departs from the original definition of `amb`) is when more than one of an ambiguous function's constituents produces a result. In McCarthy's theoretical formulation, the ambiguous function effectively produces all of the results as possible outputs. (This is technically known as _nondeterministic_ computation. It is as though the computer evaluating the ambiguous function clones itself, producing a copy for each possible result, continuing to execute every single copy. You could imagine an multithreaded implementation of such a system, where every time an ambiguous function produces multiple possible results, we create that many new threads so as to be able to evaluate all possible outcomes. This is a reasonable mental model for nondeterministic computation, but it's not what actually happens with Rx's `Amb` operator.) In the kinds of theoretical work ambiguous functions were introduced for, the ambiguity often vanishes in the end—there may have been an enormous number of ways in which a computation could have proceeded, but they might all, finally, produce the same result. However, such theoretical concerns are taking us away from what Rx's `Amb` does, and how we might use it in practice. +This is a good deal more specific—category theory is typically concerned with capturing the most general truths about mathematical structures, and this reformulation throws that generality away. However, from the perspective of a programmer looking to lean on mathematical theory, this is fine—as long as what we're doing fits the F-algebra mould, all the general results that mathematicians have derived will apply to our more specialized application of the theory. -[Rx's `Amb`](09_CombiningSequences.md#amb) provides the behaviour described in the cases where either none of the inputs produces anything, or exactly one of them does. Howeever, it makes no attempt to support non-deterministic computation, so its handling of the case where multiple constituents are able to produce value is oversimplified, but then McCarthy's `amb` was first and foremost an analytical construct, so any practical implementation of it is always going to fall short. +Nonetheless, to give you an idea of the sorts of things the general concept of F-algebras can enable, it's possible for the Functor to be a type that represents expressions in a programming language, and you could create a F-algebras that evaluates those expressions. That's a similar idea to LINQ's `Aggregate`, in that it walks over the entire structure represented by the Functor (every element in a list if it's an `IEnumerable`; every subexpression if you're representing an expression) and reduces the whole thing to a single value, but instead of our Functor representing a sequence of things, it has a more complex structure. + +So that's an F-algebra. And from a theory point of view, it's important that the third part doesn't necessarily have to reduce things. Theoretically, the types can be recursive, with the item type _A_ being _F A_. (This is important for inherently recursive structures such as expressions.) And there is typically a maximally general F-algebra in which the function (or morphism) in 3 only deals with the structure, and which doesn't actually perform any reduction at all. (E.g., given some expression syntax, you could imagine code that embodies all of the knowledge required to walk through every single subexpression of an expression, but which has no particular opinion on what processing to apply.) The idea of a catamorphism is that there are less general F-algebras available for the same Functor that are less general. + +For example, with `IObservable` the general purpose notion is that every item produced by some source can be processed by repeatedly applying some function of two arguments, one of which is a value of type `T` from the container, and the other of which is some sort of accumulator, representing all information aggregated so far. And this function would return the updated accumulator, ready to be passed into the function again along with the next `T`. And then there are more specific forms in which specific accumulation logic (e.g., summation, or determination of a maximum value) is applied. Technically, the catamorphism here is the connection from the general form to the more specialized form. But in practice it's common to refer to the specific specialized forms (such as [`Sum`](07_Aggregation.md#sum) or [`Average`](07_Aggregation.md#average)) as catamorphisms. + +### Remaining inside the container +Although in general a catamorphism can strip off the container (e.g., `Sum` for `IEnumerable` produces an `int`), this isn't absolutely necessary, and with Rx most catamorphisms don't do this. As described in the threading and scheduling chapter's [Lock-ups](11_SchedulingAndThreading.md#lock-ups) section, blocking some thread while waiting for a result that will only occur once an `IObservable` has done something in particualr (e.g., if you want to calculate the sum of items, you have to wait until you've seen all the items) is a recipe for deadlock in practice. +For this reason, most of the catamorphisms perform some sort of reduction but continue to produce a result wrapped in an `IObservable`. -A bit from the end of Part 2: +## Anamorphisms -On deeper analysis of the operators we find that most of the operators are actuallyspecialization of the higher order functional concepts. We named them the ABC's of functional programming: +Anamorphisms are, roughly speaking, the opposite of catamorphisms. While catamorphisms essentially collapse some sort of structure down to something simpler, an anamorphism expands some input into a more complex structure. For example, given some number (e.g., 5) we could imagine a mechanism for turning that into a sequence with the specified number of elements in it (e.g., [0,1,2,3,4]). -- Anamorphism, aka: - - Ana - - Unfold - - Generate -- Bind, aka: - - Map - - SelectMany - - Projection - - Transform -- Catamorphism, aka: - - Cata - - Fold - - Reduce - - Accumulate - - Inject +In fact we don't have to imagine such a thing: that's what [`Observable.Range`](03_CreatingObservableSequences.md#observablerange) does. +We could think of the monadic `Return` operation as a very simple anamorphism. Given some value of type `T`, [`Observable.Return`](03_CreatingObservableSequences.md#observablereturn) expands this into an `IObservable`. Anamorphisms are essentially the generalization of this sort of idea. +The mathematical definition of an anamorphism is "the assignment of a coalgebra to its unique morphism to the final coalgebra of an endofunctor." This is the "dual" of the definition of a catamorphism, which from a category theory point of view essentially means that you reverse the direction of all of the morphisms. In our not-completely-general application of category theory, the morphisms in question here are the reduction of items to some output in a catamorphism, and so with an anamorphism this turns into the expansion of some value into the some instance of the container type (e.g., from an `int` to an `IObservable`). -From 12, leaving IObservable +I'm not going to go into as much detail as with catamorphisms. Instead, I'm going to point out the key part at the heart of this: the most general F-algebra for a Functor embodies some understanding of the essential structure of the Functor, and catamorphisms make use of that to define various reductions. Similarly, the most general coalgebra for a Functor also embodies some understanding of the essential structure of the Functor and anamorphisms make use of that to define various expansions. +[`Observable.Generate`](03_CreatingObservableSequences.md#observablegenerate) represents this most general capability: it has the capability to produce an `IObservable` but needs to be supplied with some specialized expansion function to generate any particular observable. -## What is a monad +## So much for theory -We have casually referred to the term _monad_ earlier in the book, but to most it will be a very foreign term. -I am going to try to avoid overcomplicating what a monad is, but give enough of an explanation to help us out with our next category of methods. -The full definition of a monad is quite abstract. -[Many others](http://www.haskell.org/haskellwiki/Monad_tutorials_timeline) have tried to provide their definition of a monad using all sorts of metaphors from astronauts to Alice in Wonderland. -Many of the tutorials for monadic programming use Haskell for the code examples which can add to the confusion. -For us, a monad is effectively a programming structure that represents computations. -Compare this to other programming structures: +Now we've reviewed the theoretical concepts behind LINQ, let's step back and look at how we use them. We have three kinds of operations: -
-
Data structure
-
- Purely state e.g. a List, a Tree or a Tuple -
-
Contract
-
- Contract definition or abstract functionality e.g. an interface or abstract class -
-
Object-Orientated structure
-
- State and behavior together -
-
+* Anamorphisms enter the sequence: `T1 --> IObservable` +* Bind modifies the sequence. `IObservable --> IObservable` +* Catamorphisms leave the sequence. Logically `IObservable --> T2`, but in practice typically `IObservable --> IObservable` where the output observable produces just a single value -Generally a monadic structure allows you to chain together operators to produce a pipeline, just as we do with our extension methods. +As an aside, bind and catamorphism were made famous by Google's [MapReduce](http://en.wikipedia.org/wiki/MapReduce) framework from Google. Here Google refer to Bind and Catamorphism by names more commonly used in some functional languages, Map and Reduce. -Monads are a kind of abstract data type constructor that encapsulate program logic instead of data in the domain model. +Most Rx operators are actually specializations of the higher order functional concepts. To give a few examples: + +- Anamorphisms: + - [`Generate`](03_CreatingObservableSequences.md#observablegenerate) + - [`Range`](03_CreatingObservableSequences.md#observablerange) + - [`Return`](03_CreatingObservableSequences.md#observablereturn) +- Bind: + - [`SelectMany`](06_Transformation.md#selectmany) + - [`Select`](06_Transformation.md#select) + - [`Where`](05_Filtering.md) +- Catamorphism: + - [`Aggregate`](07_Aggregation.md#aggregate) + - [`Sum`](07_Aggregation.md#sum) + - [`Min` and `Max`](07_Aggregation.md#min-and-max) + + +## Amb -This neat definition of a monad lifted from Wikipedia allows us to start viewing sequences as monads; the abstract data type in this case is the `IObservable` type. When we use an observable sequence, we compose functions onto the abstract data type (the `IObservable`) to create a query. This query becomes our encapsulated programming logic. +The `Amb` method was a new concept to me when I started using Rx. This function was first introduced by [John McCarthy](https://en.wikipedia.org/wiki/John_McCarthy_(computer_scientist)), in his 1961 paper ['A Basis for a Mathematical Theory of Computation'](https://www.cambridge.org/core/journals/journal-of-symbolic-logic/article/abs/john-mccarthy-a-basis-for-a-mathematical-theory-of-computation-preliminary-report-proceedings-of-the-western-joint-computer-conference-papers-presented-at-the-joint-ireaieeacm-computer-conference-los-angeles-calif-may-911-1961-western-joint-computer-conference-1961-pp-225238-john-mccarthy-a-basis-for-a-mathematical-theory-of-computation-computer-programming-and-formal-systems-edited-by-p-braffort-and-d-hirschberg-studies-in-logic-and-the-foundations-of-mathematics-northholland-publishing-company-amsterdam1963-pp-3370/D1AD4E0CDB7FBE099B04BB4DAF24AFFA) in the Proceedings of the Western Joint Computer Conference. (A digital copy of this is hard to find, but a later version was published in [1963](http://www-formal.stanford.edu/jmc/basis1.pdf) in 'Computer Programming and Format Systems'.) It is an abbreviation of the word _Ambiguous_. Rx diverges slightly from normal .NET class library naming conventions here in using this abbreviation, partly because `amb` is the established name for this operator, but also as a tribute to McCarthy, whose work was an inspiration for the design of Rx. -The use of monads to define control flows is particularly useful when dealing with typically troublesome areas of programming such as IO, concurrency and exceptions. This just happens to be some of Rx's strong points! +But what does `Amb` do? The basic idea of an [_ambiguous function_](http://www-formal.stanford.edu/jmc/basis1/node7.html) is that we are allowed to define multiple ways to produce a result, and that some or all of these might in practice prove unable to produce a result. Suppose we've defined some ambiguous function called `equivocate`, and perhaps that for some particular input value, all of `equivocate`'s component parts—all the different ways we gave it of calculating a result—are unable to process the value. (Maybe every one of them divides a number by the input. If we supply an input of `0`, then none of the components can produce a value for this input because they would all attempt to divide by 0.) In cases such as these where none of `equivocate`'s component parts is able to produce a result, `equivocate` itself is unable to produce a result. But suppose we supply some input where exactly one of its component parts is able to produce a result. In that case this result becomes the result of `equivocate` for that input. -## Why leave the monad? +So in essence, we're supplying a bunch of different ways to process the input, and if exactly one of those is able to produce a result, we select that result. And if none of the ways of processing the input produces anything, then our ambiguous function also produces nothing. -There is a variety of reasons you may want to consume an observable sequence in a different paradigm. Libraries that need to expose functionality externally may be required to present it as events or as `Task` instances. In demonstration and sample code you may prefer to use blocking methods to limit the number of asynchronous moving parts. This may help make the learning curve to Rx a little less steep! +Where it gets slightly more weird (and where Rx departs from the original definition of `amb`) is when more than one of an ambiguous function's constituents produces a result. In McCarthy's theoretical formulation, the ambiguous function effectively produces all of the results as possible outputs. (This is technically known as _nondeterministic_ computation. It is as though the computer evaluating the ambiguous function clones itself, producing a copy for each possible result, continuing to execute every single copy. You could imagine an multithreaded implementation of such a system, where every time an ambiguous function produces multiple possible results, we create that many new threads so as to be able to evaluate all possible outcomes. This is a reasonable mental model for nondeterministic computation, but it's not what actually happens with Rx's `Amb` operator.) In the kinds of theoretical work ambiguous functions were introduced for, the ambiguity often vanishes in the end—there may have been an enormous number of ways in which a computation could have proceeded, but they might all, finally, produce the same result. However, such theoretical concerns are taking us away from what Rx's `Amb` does, and how we might use it in practice. -In production code, it is rarely advised to 'break the monad', especially moving from an observable sequence to blocking methods. Switching between asynchronous and synchronous paradigms should be done with caution, as this is a common root cause for concurrency problems such as deadlock and scalability issues. +[Rx's `Amb`](09_CombiningSequences.md#amb) provides the behaviour described in the cases where either none of the inputs produces anything, or exactly one of them does. Howeever, it makes no attempt to support non-deterministic computation, so its handling of the case where multiple constituents are able to produce value is oversimplified, but then McCarthy's `amb` was first and foremost an analytical construct, so any practical implementation of it is always going to fall short. -... more from 12 +## Staying inside the monad -In this chapter we will discuss the consequences of introducing side effects when working with an observable sequence. A function is considered to have a side effect if, in addition to any return value, it has some other observable effect. Generally the 'observable effect' is a modification of state. This observable effect could be +It can be tempting to flip between programming styles when using Rx. For the parts where it's easy to see how Rx applies, then we will naturally use Rx. But when things get tricky, it might seem easiest to change tracks. It might seem like the easiest thing to do would be to `await` an observable, and then proceed with ordinary sequential code. Or maybe it might seem simplest to make callbacks passed to operators like `Select` or `Where` perform operations in addition to their main jobs—to have side effects that do useful things. -* modification of a variable with a wider scope than the function (i.e. global, staticor perhaps an argument) -* I/O such as a read/write from a file or network - -* updating a display - +Although this can sometimes work, switching between paradigms should be done with caution, as this is a common root cause for concurrency problems such as deadlock and scalability issues. The basic reason for this is that for as long as you remain within Rx's way of doing things, you will benefit from the basic soundness of the mathematical underpinnings. But for this to work, you need to use a functional style—functions should process their inputs and deterministically produce outputs based on those inputs, and they should neither depend on external state nor change it. This can be a tall order, and it won't always be possible, but a lot of the theory falls apart if you break these rules. Composition doesn't work as reliably as it can. So using a functional style, and keeping your code within Rx's idiom will tend to improve reliability. ## Issues with side effects +Since programs always have to have some side effects if they are to do anything useful—if the world is no different as a result of a program having run, then you may as well not have run it—it can be useful to explore the issues with side effects, so that we can know how best to deal with them when they are necessary. So we will now discuss the consequences of introducing side effects when working with an observable sequence. A function is considered to have a side effect if, in addition to any return value, it has some other observable effect. Generally the 'observable effect' is a modification of state. This observable effect could be + +* modification of a variable with a wider scope than the function (i.e. global, static or perhaps an argument) +* I/O such as a read/write from a file or network, or updating a display +* causing physical activity, such as when a vending machine dispenses an item, or directs a coin into its coin box + Functional programming in general tries to avoid creating any side effects. Functions with side effects, especially which modify state, require the programmer to understand more than just the inputs and outputs of the function. The surface area they are required to understand needs to now extend to the history and context of the state being modified. This can greatly increase the complexity of a function, and thus make it harder to correctly understand and maintain. Side effects are not always accidental, nor are they always intentional. An easy way to reduce the accidental side effects is to reduce the surface area for change. The simple actions coders can take are to reduce the visibility or scope of state and to make what you can immutable. You can reduce the visibility of a variable by scoping it to a code block like a method. You can reduce visibility of class members by making them private or protected. By definition immutable data can't be modified so cannot exhibit side effects. These are sensible encapsulation rules that will dramatically improve the maintainability of your Rx code. @@ -312,8 +545,6 @@ Also received C at index 5 2nd completed ``` - - Now the second person's output is clearly nonsense. They will be expecting index values to be 0, 1 and 2 but get 3, 4 and 5 instead. I have seen far more sinister versions of side effects in code bases. The nasty ones often modify state that is a Boolean value e.g. `hasValues`, `isStreaming` etc. We will see in a later chapter far better ways of controlling workflow with observable sequences than using shared state. In addition to creating potentially unpredictable results in existing software, programs that exhibit side effects are far more difficult to test and maintain. Future refactoring, enhancements or other maintenance on programs that exhibits side effects are far more likely to be brittle. This is especially so in asynchronous or concurrent software. From 9ba5d0f4afc223178215ad31e26d2317a1649973 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Wed, 27 Sep 2023 15:37:28 +0100 Subject: [PATCH 047/142] Fix missing file extension on Appendix D --- content/{D_AlgebraicUnderpinnings => D_AlgebraicUnderpinnings.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename content/{D_AlgebraicUnderpinnings => D_AlgebraicUnderpinnings.md} (100%) diff --git a/content/D_AlgebraicUnderpinnings b/content/D_AlgebraicUnderpinnings.md similarity index 100% rename from content/D_AlgebraicUnderpinnings rename to content/D_AlgebraicUnderpinnings.md From ef7de077e39f81ac7b904dd68ef79e7f9fd45db3 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Wed, 27 Sep 2023 16:05:55 +0100 Subject: [PATCH 048/142] Replace unicode with maths expressions --- content/D_AlgebraicUnderpinnings.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/D_AlgebraicUnderpinnings.md b/content/D_AlgebraicUnderpinnings.md index 8659d65..fffcffd 100644 --- a/content/D_AlgebraicUnderpinnings.md +++ b/content/D_AlgebraicUnderpinnings.md @@ -321,11 +321,11 @@ Both of these apply both transforms, and flatten out the extra layers of contain #### Why these laws matter -These three laws directly reflect laws that hold true for composition of straightforward functions over numbers. If we have two functions, _f_, and _g_, we could write a new function _h_, defined as _g(f(x))_. This way of combining function is called _composition_, and is often written as _g_ ∘ _f_. If the identity function is called _id_, then the following statements are true: +These three laws directly reflect laws that hold true for composition of straightforward functions over numbers. If we have two functions, $f$, and $g$, we could write a new function _h_, defined as $g(f(x))$. This way of combining function is called _composition_, and is often written as $g \circ f$. If the identity function is called _id_, then the following statements are true: -* _id_ ∘ _f_ is equivalent to just _f_ -* _f_ ∘ _id_ is equivalent to just _f_ -* (_f_ ∘ _g_) ∘ _s_ is equivalent to _f_ ∘ (_g_ ∘ _s_) +* $id \circ f$ is equivalent to just $f$ +* $f \circ id$ is equivalent to just $f$ +* $(f \circ g) \circ s$ is equivalent to $f \circ (g \circ s)$ These correspond directly to the three monad laws. Informally speaking, this reflects the fact that the monadic bind operation (`SelectMany`) has deep structurally similarity to function composition. This is why we can combine LINQ operators together freely. From f06b0cbd168ddb416b7e3662ba1649f8e3279634 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Wed, 27 Sep 2023 16:12:17 +0100 Subject: [PATCH 049/142] Remove spurious unicode thin spaces ...accidentally copied from another page. Apparently our book build process can't cope with the Unicode thin space character. --- content/D_AlgebraicUnderpinnings.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/D_AlgebraicUnderpinnings.md b/content/D_AlgebraicUnderpinnings.md index fffcffd..8da14c6 100644 --- a/content/D_AlgebraicUnderpinnings.md +++ b/content/D_AlgebraicUnderpinnings.md @@ -323,9 +323,9 @@ Both of these apply both transforms, and flatten out the extra layers of contain These three laws directly reflect laws that hold true for composition of straightforward functions over numbers. If we have two functions, $f$, and $g$, we could write a new function _h_, defined as $g(f(x))$. This way of combining function is called _composition_, and is often written as $g \circ f$. If the identity function is called _id_, then the following statements are true: -* $id \circ f$ is equivalent to just $f$ -* $f \circ id$ is equivalent to just $f$ -* $(f \circ g) \circ s$ is equivalent to $f \circ (g \circ s)$ +* $id \circ f$ is equivalent to just $f$ +* $f \circ id$ is equivalent to just $f$ +* $(f \circ g) \circ s$ is equivalent to $f \circ (g \circ _s_) These correspond directly to the three monad laws. Informally speaking, this reflects the fact that the monadic bind operation (`SelectMany`) has deep structurally similarity to function composition. This is why we can combine LINQ operators together freely. From a1989070d54b6ce78c27212de0012e018a4a2426 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Wed, 27 Sep 2023 16:15:30 +0100 Subject: [PATCH 050/142] Fix another silly LaTeX mistake --- content/D_AlgebraicUnderpinnings.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/D_AlgebraicUnderpinnings.md b/content/D_AlgebraicUnderpinnings.md index 8da14c6..7355cbb 100644 --- a/content/D_AlgebraicUnderpinnings.md +++ b/content/D_AlgebraicUnderpinnings.md @@ -325,7 +325,7 @@ These three laws directly reflect laws that hold true for composition of straigh * $id \circ f$ is equivalent to just $f$ * $f \circ id$ is equivalent to just $f$ -* $(f \circ g) \circ s$ is equivalent to $f \circ (g \circ _s_) +* $(f \circ g) \circ s$ is equivalent to $f \circ (g \circ s)$ These correspond directly to the three monad laws. Informally speaking, this reflects the fact that the monadic bind operation (`SelectMany`) has deep structurally similarity to function composition. This is why we can combine LINQ operators together freely. From 85d08744a795fb29045893530029015f22e2a78e Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Thu, 28 Sep 2023 09:40:49 +0100 Subject: [PATCH 051/142] Fix appendix B title --- content/B_Disposables.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/B_Disposables.md b/content/B_Disposables.md index a91f9ba..7ee1c47 100644 --- a/content/B_Disposables.md +++ b/content/B_Disposables.md @@ -1,8 +1,8 @@ --- -title : Appendix C Disposables +title : Appendix B Disposables --- -# Disposables +# Appendix B: Disposables Rx leverages the existing `IDisposable` interface for subscription management. This is an incredibly useful design decision, as users can work with a familiar type and reuse existing language features. Rx further extends its usage of the `IDisposable` type by providing several public implementations of the interface. These can be found in the `System.Reactive.Disposables` namespace. Here, we will briefly enumerate each of them. From e6cb8f4f932e87e9f31036879bb2d135c9bb1f82 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Thu, 28 Sep 2023 09:41:03 +0100 Subject: [PATCH 052/142] Remove spurious backticks from Ch16 --- content/16_TestingRx.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/16_TestingRx.md b/content/16_TestingRx.md index 757010b..3b927af 100644 --- a/content/16_TestingRx.md +++ b/content/16_TestingRx.md @@ -1,7 +1,7 @@ --- title: Testing Rx --- -`` + # Testing Rx Modern quality assurance standards demand a level of automated testing that can help evaluate and prevent bugs. It is good practice to have a suite of tests that verify correct behaviour and to run this as part of the build process to detect regressions early. From b846184662dc54c29b3bb6bc57cce8076da7522d Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Thu, 28 Sep 2023 09:41:18 +0100 Subject: [PATCH 053/142] Update Appendix C --- content/C_UsageGuidelines.md | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/content/C_UsageGuidelines.md b/content/C_UsageGuidelines.md index 7b0302e..844f5d5 100644 --- a/content/C_UsageGuidelines.md +++ b/content/C_UsageGuidelines.md @@ -1,27 +1,26 @@ --- -title : Appendix A Usage guidelines +title : Appendix C Usage guidelines --- -# Appendix - -# Usage guidelines +# Appendix C: Usage guidelines This is a list of quick guidelines intended to help you when writing Rx queries. - Members that return a sequence should never return null. This applies to `IEnumerable` and `IObservable` sequences. Return an empty sequence instead. -- Dispose of subscriptions. -- Subscriptions should match their scope. +- Dispose of subscriptions only if you need to unsubscribe from them early. - Always provide an `OnError` handler. -- Avoid breaking the monad with blocking operators such as `First`, `FirstOrDefault`, `Last`, `LastOrDefault`, `Single`, `SingleOrDefault` and `ForEach`. -- Avoid switching between monads, i.e. going from `IObservable` to `IEnumerable` and back to `IObservable`. +- Avoid blocking operators such as `First`, `FirstOrDefault`, `Last`, `LastOrDefault`, `Single`, `SingleOrDefault` and `ForEach`.; use the non-blocking alternative such as `FirstAsync`. +- Avoid switching back and forth between `IObservable` and `IEnumerable` - Favor lazy evaluation over eager evaluation. -- Break large queries up into parts. Key indicators of a large query: - 1. nesting - 2. over 10 lines of query comprehension syntax - 3. using the into statement -- Name your queries well, i.e. avoid using the names like `query`, `q`, `xs`, `ys`, `subject` etc. -- Avoid creating side effects. If you must create side effects, be explicit by using the `Do` operator. -- Avoid the use of the subject types. Rx is effectively a functional programming paradigm. Using subjects means we are now managing state, which is potentially mutating. Dealing with both mutating state and asynchronous programming at the same time is very hard to get right.Furthermore, many of the operators (extension methods) have been carefully written to ensure that correct and consistent lifetime of subscriptions and sequences is maintained;when you introduce subjects, you can break this. Future releases may also see significant performance degradation if you explicitly use subjects. -- Avoid creating your own implementations of the `IObservable` interface. Favor using the `Observable.Create` factory method overloads instead. +- Break large queries up into parts. Key indicators of a large query: + 1. nesting + 2. over 10 lines of query comprehension syntax + 3. using the `into` keyword +- Name your observables well, i.e. avoid using variable names like `query`, `q`, `xs`, `ys`, `subject` etc. +- Avoid creating side effects. If you really can't avoid it, don't bury the side effects in callbacks for operators designed to be use functionally such as `Select` or `Where`. be explicit by using the `Do` operator. +- Where possible, prefer `Observable.Create` to subjects as a means of defining new Rx sources. +- Avoid creating your own implementations of the `IObservable` interface. Use `Observable.Create` (or subjects if you really need to). - Avoid creating your own implementations of the `IObserver` interface. Favor using the `Subscribe` extension method overloads instead. -- The subscriber should define the concurrency model. The `SubscribeOn` and `ObserveOn` operators should only ever precede a `Subscribe` method. \ No newline at end of file +- The application should define the concurrency model. + - If you need to schedule deferred work, use schedulers + - The `SubscribeOn` and `ObserveOn` operators should always be right before a `Subscribe` method. (So don't sandwich it, e.g. `source.SubscribeOn(s).Where(x => x.Foo)`.) \ No newline at end of file From b38bde989d4e48fe25a95776605b02b88d859313 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Fri, 29 Sep 2023 13:25:01 +0100 Subject: [PATCH 054/142] Initial containerised book PDF build --- .gitignore | 6 +- BuildWithDocker.ps1 | 4 + Dockerfile | 57 ++ build/pandoc.sh | 82 +++ intro-rx-dotnet-book-cover.png | Bin 0 -> 209851 bytes metadata.md | 15 + templates/csharp-highlighting.tex | 36 + templates/docx.docx | Bin 0 -> 10151 bytes templates/eisvogel.aux | 2 + templates/eisvogel.fdb_latexmk | 17 + templates/eisvogel.fls | 9 + templates/eisvogel.latex | 1034 +++++++++++++++++++++++++++++ templates/epub.html | 69 ++ templates/html.html | 65 ++ templates/pdf.latex | 497 ++++++++++++++ templates/style.css | 342 ++++++++++ templates/thesis.tex | 350 ++++++++++ 17 files changed, 2584 insertions(+), 1 deletion(-) create mode 100644 BuildWithDocker.ps1 create mode 100644 Dockerfile create mode 100644 build/pandoc.sh create mode 100644 intro-rx-dotnet-book-cover.png create mode 100644 metadata.md create mode 100644 templates/csharp-highlighting.tex create mode 100644 templates/docx.docx create mode 100644 templates/eisvogel.aux create mode 100644 templates/eisvogel.fdb_latexmk create mode 100644 templates/eisvogel.fls create mode 100644 templates/eisvogel.latex create mode 100644 templates/epub.html create mode 100644 templates/html.html create mode 100644 templates/pdf.latex create mode 100644 templates/style.css create mode 100644 templates/thesis.tex diff --git a/.gitignore b/.gitignore index 49c7857..fb959cc 100644 --- a/.gitignore +++ b/.gitignore @@ -103,4 +103,8 @@ Generated_Code #added for RIA/Silverlight projects _UpgradeReport_Files/ Backup*/ UpgradeLog*.XML -UpgradeLog*.htm \ No newline at end of file +UpgradeLog*.htm + + +# Containerized build volume +build/output \ No newline at end of file diff --git a/BuildWithDocker.ps1 b/BuildWithDocker.ps1 new file mode 100644 index 0000000..aaa0030 --- /dev/null +++ b/BuildWithDocker.ps1 @@ -0,0 +1,4 @@ +$IMG=docker build . -q +New-Item -Type Directory build/output +$Output=resolve-path ./build/output +docker run --rm -v ${Output}:/output $IMG \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..ce7084b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,57 @@ +# Original example (ContractOps) uses .NET base because it includes a .NET project +FROM mcr.microsoft.com/dotnet/runtime:7.0 AS base +# I don't think we need .NET. However, the base debian image doesn't have all the libraries +# pandoc wants, so we're using that for now +#FROM debian:12-slim + +# Or perhaps we should just use https://hub.docker.com/r/pandoc/latex + +# Install pandoc, MiKTeX, and rsvg-convert +ENV DEBIAN_FRONTEND=noninteractive +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + dirmngr \ + gpg \ + gpg-agent \ + librsvg2-bin \ + wget \ + xz-utils \ + && apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys D6BC243565B2087BC3F897C9277A7293F59E4889 \ + && echo "deb http://miktex.org/download/debian bullseye universe" | tee /etc/apt/sources.list.d/miktex.list \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + miktex \ + && miktexsetup finish \ + && wget https://github.com/jgm/pandoc/releases/download/3.1.6.2/pandoc-3.1.6.2-1-amd64.deb \ + && dpkg -i ./pandoc-3.1.6.2-1-amd64.deb \ + && rm ./pandoc-3.1.6.2-1-amd64.deb \ + && apt-get autoremove -y \ + && apt-get clean -y \ + && rm -rf /var/lib/apt/lists/* + +WORKDIR /pandoc-lua-filters +RUN wget https://raw.githubusercontent.com/pandoc-ext/pagebreak/main/pagebreak.lua \ + && wget https://raw.githubusercontent.com/alpianon/pandoc-inline-headers/master/crossref-ordered-list \ + && mv crossref-ordered-list crossref-ordered-list.lua \ + && wget https://gitlab.com/howdyadoc/toolchain/-/raw/master/howdyadoc/lua-filters/inline-headers.lua + +WORKDIR /pandoc-filters +RUN wget https://github.com/lierdakil/pandoc-crossref/releases/download/v0.3.16.0f/pandoc-crossref-Linux.tar.xz \ + && tar -xJf pandoc-crossref-Linux.tar.xz \ + && rm pandoc-crossref-Linux.tar.xz + +# Allow MikTeX to install things it needs +RUN initexmf --set-config-value=[MPM]AutoInstall=yes + +WORKDIR /app + +RUN mkdir content +COPY ["build/pandoc.sh","pandoc.sh"] +COPY ["content","content"] +COPY ["templates","templates"] +COPY ["metadata.md","metadata.md"] +COPY ["intro-rx-dotnet-book-cover.png","intro-rx-dotnet-book-cover.png"] + +VOLUME ["/output"] +ENTRYPOINT ["/bin/sh", "/app/pandoc.sh"] \ No newline at end of file diff --git a/build/pandoc.sh b/build/pandoc.sh new file mode 100644 index 0000000..0340206 --- /dev/null +++ b/build/pandoc.sh @@ -0,0 +1,82 @@ +#/bin/sh +# To be run inside the container +pandoc -o intro-to-rx.epub metadata.md -s \ + ./content/01_WhyRx.md \ + ./content/02_KeyTypes.md \ + ./content/03_CreatingObservableSequences.md \ + ./content/04_Part2.md \ + ./content/05_Filtering.md \ + ./content/06_Transformation.md \ + ./content/07_Aggregation.md \ + ./content/08_Partitioning.md \ + ./content/09_CombiningSequences.md \ + ./content/10_Part3.md \ + ./content/11_SchedulingAndThreading.md \ + ./content/12_LeavingIObservable.md \ + ./content/13_Timing.md \ + ./content/14_ErrorHandlingOperators.md \ + ./content/15_PublishingOperators.md \ + ./content/16_TestingRx.md \ + ./content/A_IoStreams.md \ + ./content/B_Disposables.md \ + ./content/C_UsageGuidelines.md \ + ./content/D_AlgebraicUnderpinnings.md \ + --epub-cover-image intro-rx-dotnet-book-cover.png \ + --toc --toc-depth 4 \ + --resource-path "./content/" + +pandoc -o intro-to-rx.docx -s \ + ./content/01_WhyRx.md \ + ./content/02_KeyTypes.md \ + ./content/03_CreatingObservableSequences.md \ + ./content/04_Part2.md \ + ./content/05_Filtering.md \ + ./content/06_Transformation.md \ + ./content/07_Aggregation.md \ + ./content/08_Partitioning.md \ + ./content/09_CombiningSequences.md \ + ./content/10_Part3.md \ + ./content/11_SchedulingAndThreading.md \ + ./content/12_LeavingIObservable.md \ + ./content/13_Timing.md \ + ./content/14_ErrorHandlingOperators.md \ + ./content/15_PublishingOperators.md \ + ./content/16_TestingRx.md \ + ./content/A_IoStreams.md \ + ./content/B_Disposables.md \ + ./content/C_UsageGuidelines.md \ + ./content/D_AlgebraicUnderpinnings.md \ + --resource-path "./content/" \ + --metadata-file=metadata.md \ + --metadata title="Introduction to Rx .NET" \ + --toc --toc-depth 4 + +pandoc -o intro-to-rx.pdf metadata.md -s \ + ./content/01_WhyRx.md \ + ./content/02_KeyTypes.md \ + ./content/03_CreatingObservableSequences.md \ + ./content/04_Part2.md \ + ./content/05_Filtering.md \ + ./content/06_Transformation.md \ + ./content/07_Aggregation.md \ + ./content/08_Partitioning.md \ + ./content/09_CombiningSequences.md \ + ./content/10_Part3.md \ + ./content/11_SchedulingAndThreading.md \ + ./content/12_LeavingIObservable.md \ + ./content/13_Timing.md \ + ./content/14_ErrorHandlingOperators.md \ + ./content/15_PublishingOperators.md \ + ./content/16_TestingRx.md \ + ./content/A_IoStreams.md \ + ./content/B_Disposables.md \ + ./content/C_UsageGuidelines.md \ + ./content/D_AlgebraicUnderpinnings.md \ + --resource-path "./content/" \ + --template ./templates/eisvogel \ + --toc --toc-depth 4 + +cp intro-to-rx.* /output +if [ -f /root/.miktex/texmfs/data/miktex/log/pdflatex.log ]; then + cp /root/.miktex/texmfs/data/miktex/log/pdflatex.log /output +fi \ No newline at end of file diff --git a/intro-rx-dotnet-book-cover.png b/intro-rx-dotnet-book-cover.png new file mode 100644 index 0000000000000000000000000000000000000000..3161bdec65aa16cb0117b12673535ad5f05effd7 GIT binary patch literal 209851 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ð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 literal 0 HcmV?d00001 diff --git a/metadata.md b/metadata.md new file mode 100644 index 0000000..97664cd --- /dev/null +++ b/metadata.md @@ -0,0 +1,15 @@ +--- +title: Introduction to Rx .NET +subtitle: "Early Access Preview: August 2023" +author: Ian Griffiths, Lee Campbell +rights: Copyright 2023 .NET Foundation, All Rights Reserved. +publisher: Endjin Limited. +date-meta: 'August 2023' +lang: en-US +tags: [Rx, Reactive Extensions, ReactiveX, Reactive Processing] +toc-title: Table of Contents +mainfont: DejaVu Sans +Filter preferences: + - pandoc-crossref +linkReferences: true +--- \ No newline at end of file diff --git a/templates/csharp-highlighting.tex b/templates/csharp-highlighting.tex new file mode 100644 index 0000000..219fc95 --- /dev/null +++ b/templates/csharp-highlighting.tex @@ -0,0 +1,36 @@ +\usepackage{listings, xcolor} + +\definecolor{verylightgray}{rgb}{.97,.97,.97} + +\lstdefinelanguage{CSharp}{ +keywords=[1]{abstract, as, base, bool, break, byte, case, catch, char, checked, class, const, continue, decimal, default, delegate, do, double, else, enum, event, explicit, extern, false, finally, fixed, float, for, foreach, goto, if, implicit, in, int, interface, internal, is, lock, long, namespace, new, null, object, operator, out, override, params, private, protected, public, readonly, ref, return, sbyte, sealed, short, sizeof, stackalloc, static, string, struct, switch, this, throw, true, try, typeof, uint, ulong, unchecked, unsafe, ushort, using, virtual, void, volatile, while}, % generic keywords +keywordstyle=[1]\color{blue}\bfseries, +keywords=[2]{bool?, byte?, char?, decimal?, double?, dynamic, float?, int?, long?, object?, sbyte?, short?, string, uint?, ulong?, ushort?}, % nullable value types +keywordstyle=[2]\color{teal}\bfseries, +keywords=[3]{add, alias, ascending, async, await, by, descending, dynamic, equals, from, get, global, group, into, join, let, nameof, on, orderby, partial, remove, select, set, value, var, when, where, yield}, % contextual keywords +keywordstyle=[3]\color{violet}\bfseries, +identifierstyle=\color{black}, +sensitive=true, +comment=[l]{//}, +morecomment=[s]{/}{/}, +commentstyle=\color{gray!50}\itshape\small\setlength{\fboxsep}{0pt}\setlength{\fboxrule}{0.5pt}\colorbox{verylightgray}, +stringstyle=\color{red}\ttfamily, +morestring=[b]', +morestring=[b]" +} + +\lstset{ +language=CSharp, +backgroundcolor=\color{verylightgray}, +extendedchars=true, +basicstyle=\footnotesize\ttfamily, +showstringspaces=false, +showspaces=false, +numbers=left, +numberstyle=\footnotesize, +numbersep=9pt, +tabsize=2, +breaklines=true, +showtabs=false, +captionpos=b +} diff --git a/templates/docx.docx b/templates/docx.docx new file mode 100644 index 0000000000000000000000000000000000000000..d9ce0db29f1b7a66403d22777f3c7ee14e3ba552 GIT binary patch literal 10151 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
lUD_QOKXv9P3BZ{2R6kC$FU$k)@c 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 NLwepd!Q{W5{s*-Yso($r literal 0 HcmV?d00001 diff --git a/templates/eisvogel.aux b/templates/eisvogel.aux new file mode 100644 index 0000000..b640121 --- /dev/null +++ b/templates/eisvogel.aux @@ -0,0 +1,2 @@ +\relax +\gdef \@abspage@last{1} diff --git a/templates/eisvogel.fdb_latexmk b/templates/eisvogel.fdb_latexmk new file mode 100644 index 0000000..e8e264a --- /dev/null +++ b/templates/eisvogel.fdb_latexmk @@ -0,0 +1,17 @@ +# Fdb version 4 +["pdflatex"] 1695029184 "c:/_Projects/OSS/reactive-extensions/IntroToRx/templates/eisvogel.tex" "eisvogel.pdf" "eisvogel" 1695029184 2 + "$if(beamer)$$documentclass$$else$$if(book)$scrbook$else$scrartcl$endif$$endif$.cls" 0 -1 0 "" + "C:/Users/HowardvanRooijen/AppData/Local/MiKTeX/miktex/data/le/pdftex/pdflatex.fmt" 1689317134 24124063 eda354e1746a9a0fafc01d4da2722663 "" + "C:/Users/HowardvanRooijen/AppData/Local/Programs/MiKTeX/tex/latex/hyperref/hyperref.sty" 1687702344 220504 46df85c2e38e43c3f3b0192fdbc1150d "" + "C:/Users/HowardvanRooijen/AppData/Local/Programs/MiKTeX/tex/latex/url/url.sty" 1388490452 12796 8edb7d69a20b857904dd0ea757c14ec9 "" + "C:/Users/HowardvanRooijen/AppData/Local/Programs/MiKTeX/tex/latex/xcolor/xcolor.sty" 1656236890 56148 51a9a8571c07b9921892ae11063ae853 "" + "C:/Users/HowardvanRooijen/AppData/Local/Programs/MiKTeX/tex/xelatex/bidi/bidi.sty" 1690972292 11205 1985c5c493bbe42ba3bdf13a7563b61b "" + "C:/Users/HowardvanRooijen/AppData/Local/Programs/MiKTeX/tex/xelatex/xecjk/xeCJK.sty" 1659726270 183137 ed372550124703b2b73cbcc0b47cb20f "" + "c:/_Projects/OSS/reactive-extensions/IntroToRx/templates/eisvogel.tex" 1695029171 29249 f2245eadf683cf988d5c29d05f153529 "" + "eisvogel.aux" 1695029184 34 3985256e7290058c681f74d7a3565a19 "pdflatex" + "eisvogel.tex" 1695029171 29249 f2245eadf683cf988d5c29d05f153529 "" + (generated) + "eisvogel.aux" + "eisvogel.log" + "eisvogel.pdf" + (rewritten before read) diff --git a/templates/eisvogel.fls b/templates/eisvogel.fls new file mode 100644 index 0000000..3e4128a --- /dev/null +++ b/templates/eisvogel.fls @@ -0,0 +1,9 @@ +PWD c:\_Projects\OSS\reactive-extensions\IntroToRx\templates +INPUT C:\Users\HowardvanRooijen\AppData\Local\MiKTeX\miktex\data\le\pdftex\pdflatex.fmt +INPUT c:\_Projects\OSS\reactive-extensions\IntroToRx\templates\eisvogel.tex +OUTPUT eisvogel.log +INPUT C:\Users\HowardvanRooijen\AppData\Local\Programs\MiKTeX\tex\latex\hyperref\hyperref.sty +INPUT C:\Users\HowardvanRooijen\AppData\Local\Programs\MiKTeX\tex\latex\url\url.sty +INPUT C:\Users\HowardvanRooijen\AppData\Local\Programs\MiKTeX\tex\latex\xcolor\xcolor.sty +INPUT C:\Users\HowardvanRooijen\AppData\Local\Programs\MiKTeX\tex\xelatex\bidi\bidi.sty +INPUT C:\Users\HowardvanRooijen\AppData\Local\Programs\MiKTeX\tex\xelatex\xecjk\xeCJK.sty diff --git a/templates/eisvogel.latex b/templates/eisvogel.latex new file mode 100644 index 0000000..195d3cf --- /dev/null +++ b/templates/eisvogel.latex @@ -0,0 +1,1034 @@ +%% +% Copyright (c) 2017 - 2021, Pascal Wagler; +% Copyright (c) 2014 - 2021, John MacFarlane +% +% All rights reserved. +% +% Redistribution and use in source and binary forms, with or without +% modification, are permitted provided that the following conditions +% are met: +% +% - Redistributions of source code must retain the above copyright +% notice, this list of conditions and the following disclaimer. +% +% - Redistributions in binary form must reproduce the above copyright +% notice, this list of conditions and the following disclaimer in the +% documentation and/or other materials provided with the distribution. +% +% - Neither the name of John MacFarlane nor the names of other +% contributors may be used to endorse or promote products derived +% from this software without specific prior written permission. +% +% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +% "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +% LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +% FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +% COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +% INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +% BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +% LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +% CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +% LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +% ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +% POSSIBILITY OF SUCH DAMAGE. +%% + +%% +% This is the Eisvogel pandoc LaTeX template. +% +% For usage information and examples visit the official GitHub page: +% https://github.com/Wandmalfarbe/pandoc-latex-template +%% + +% Options for packages loaded elsewhere +\PassOptionsToPackage{unicode$for(hyperrefoptions)$,$hyperrefoptions$$endfor$}{hyperref} +\PassOptionsToPackage{hyphens}{url} +\PassOptionsToPackage{dvipsnames,svgnames*,x11names*,table}{xcolor} +$if(dir)$ +$if(latex-dir-rtl)$ +\PassOptionsToPackage{RTLdocument}{bidi} +$endif$ +$endif$ +$if(CJKmainfont)$ +\PassOptionsToPackage{space}{xeCJK} +$endif$ +% +\documentclass[ +$if(fontsize)$ + $fontsize$, +$endif$ +$if(lang)$ + $babel-lang$, +$endif$ +$if(papersize)$ + $papersize$paper, +$else$ + paper=a4, +$endif$ +$if(beamer)$ + ignorenonframetext, +$if(handout)$ + handout, +$endif$ +$if(aspectratio)$ + aspectratio=$aspectratio$, +$endif$ +$endif$ +$for(classoption)$ + $classoption$$sep$, +$endfor$ + ,captions=tableheading +]{$if(beamer)$$documentclass$$else$$if(book)$scrbook$else$scrartcl$endif$$endif$} +$if(beamer)$ +$if(background-image)$ +\usebackgroundtemplate{% + \includegraphics[width=\paperwidth]{$background-image$}% +} +$endif$ +\usepackage{pgfpages} +\setbeamertemplate{caption}[numbered] +\setbeamertemplate{caption label separator}{: } +\setbeamercolor{caption name}{fg=normal text.fg} +\beamertemplatenavigationsymbols$if(navigation)$$navigation$$else$empty$endif$ +$for(beameroption)$ +\setbeameroption{$beameroption$} +$endfor$ +% Prevent slide breaks in the middle of a paragraph +\widowpenalties 1 10000 +\raggedbottom +$if(section-titles)$ +\setbeamertemplate{part page}{ + \centering + \begin{beamercolorbox}[sep=16pt,center]{part title} + \usebeamerfont{part title}\insertpart\par + \end{beamercolorbox} +} +\setbeamertemplate{section page}{ + \centering + \begin{beamercolorbox}[sep=12pt,center]{part title} + \usebeamerfont{section title}\insertsection\par + \end{beamercolorbox} +} +\setbeamertemplate{subsection page}{ + \centering + \begin{beamercolorbox}[sep=8pt,center]{part title} + \usebeamerfont{subsection title}\insertsubsection\par + \end{beamercolorbox} +} +\AtBeginPart{ + \frame{\partpage} +} +\AtBeginSection{ + \ifbibliography + \else + \frame{\sectionpage} + \fi +} +\AtBeginSubsection{ + \frame{\subsectionpage} +} +$endif$ +$endif$ +$if(beamerarticle)$ +\usepackage{beamerarticle} % needs to be loaded first +$endif$ +\usepackage{amsmath,amssymb} +$if(fontfamily)$ +\usepackage[$for(fontfamilyoptions)$$fontfamilyoptions$$sep$,$endfor$]{$fontfamily$} +$else$ +\usepackage{lmodern} +$endif$ +$if(linestretch)$ +\usepackage{setspace} +$else$ +\usepackage{setspace} +\setstretch{1.2} +$endif$ +\usepackage{ifxetex,ifluatex} +\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex + \usepackage[$if(fontenc)$$fontenc$$else$T1$endif$]{fontenc} + \usepackage[utf8]{inputenc} + \usepackage{textcomp} % provide euro and other symbols +\else % if luatex or xetex +$if(mathspec)$ + \ifxetex + \usepackage{mathspec} + \else + \usepackage{unicode-math} + \fi +$else$ + \usepackage{unicode-math} +$endif$ + \defaultfontfeatures{Scale=MatchLowercase} + \defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1} +$if(mainfont)$ + \setmainfont[$for(mainfontoptions)$$mainfontoptions$$sep$,$endfor$]{$mainfont$} +$endif$ +$if(sansfont)$ + \setsansfont[$for(sansfontoptions)$$sansfontoptions$$sep$,$endfor$]{$sansfont$} +$endif$ +$if(monofont)$ + \setmonofont[$for(monofontoptions)$$monofontoptions$$sep$,$endfor$]{$monofont$} +$endif$ +$for(fontfamilies)$ + \newfontfamily{$fontfamilies.name$}[$for(fontfamilies.options)$$fontfamilies.options$$sep$,$endfor$]{$fontfamilies.font$} +$endfor$ +$if(mathfont)$ +$if(mathspec)$ + \ifxetex + \setmathfont(Digits,Latin,Greek)[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$} + \else + \setmathfont[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$} + \fi +$else$ + \setmathfont[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$} +$endif$ +$endif$ +$if(CJKmainfont)$ + \ifxetex + \usepackage{xeCJK} + \setCJKmainfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$} + \fi +$endif$ +$if(luatexjapresetoptions)$ + \ifluatex + \usepackage[$for(luatexjapresetoptions)$$luatexjapresetoptions$$sep$,$endfor$]{luatexja-preset} + \fi +$endif$ +$if(CJKmainfont)$ + \ifluatex + \usepackage[$for(luatexjafontspecoptions)$$luatexjafontspecoptions$$sep$,$endfor$]{luatexja-fontspec} + \setmainjfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$} + \fi +$endif$ +\fi +$if(beamer)$ +$if(theme)$ +\usetheme[$for(themeoptions)$$themeoptions$$sep$,$endfor$]{$theme$} +$endif$ +$if(colortheme)$ +\usecolortheme{$colortheme$} +$endif$ +$if(fonttheme)$ +\usefonttheme{$fonttheme$} +$endif$ +$if(mainfont)$ +\usefonttheme{serif} % use mainfont rather than sansfont for slide text +$endif$ +$if(innertheme)$ +\useinnertheme{$innertheme$} +$endif$ +$if(outertheme)$ +\useoutertheme{$outertheme$} +$endif$ +$endif$ +% Use upquote if available, for straight quotes in verbatim environments +\IfFileExists{upquote.sty}{\usepackage{upquote}}{} +\IfFileExists{microtype.sty}{% use microtype if available + \usepackage[$for(microtypeoptions)$$microtypeoptions$$sep$,$endfor$]{microtype} + \UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts +}{} +$if(indent)$ +$else$ +\makeatletter +\@ifundefined{KOMAClassName}{% if non-KOMA class + \IfFileExists{parskip.sty}{% + \usepackage{parskip} + }{% else + \setlength{\parindent}{0pt} + \setlength{\parskip}{6pt plus 2pt minus 1pt}} +}{% if KOMA class + \KOMAoptions{parskip=half}} +\makeatother +$endif$ +$if(verbatim-in-note)$ +\usepackage{fancyvrb} +$endif$ +\usepackage{xcolor} +\definecolor{default-linkcolor}{HTML}{A50000} +\definecolor{default-filecolor}{HTML}{A50000} +\definecolor{default-citecolor}{HTML}{4077C0} +\definecolor{default-urlcolor}{HTML}{4077C0} +\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available +$if(footnotes-pretty)$ +% load footmisc in order to customize footnotes (footmisc has to be loaded before hyperref, cf. https://tex.stackexchange.com/a/169124/144087) +\usepackage[hang,flushmargin,bottom,multiple]{footmisc} +\setlength{\footnotemargin}{0.8em} % set space between footnote nr and text +\setlength{\footnotesep}{\baselineskip} % set space between multiple footnotes +\setlength{\skip\footins}{0.3cm} % set space between page content and footnote +\setlength{\footskip}{0.9cm} % set space between footnote and page bottom +$endif$ +\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}} +\hypersetup{ +$if(title-meta)$ + pdftitle={$title-meta$}, +$endif$ +$if(author-meta)$ + pdfauthor={$author-meta$}, +$endif$ +$if(lang)$ + pdflang={$lang$}, +$endif$ +$if(subject)$ + pdfsubject={$subject$}, +$endif$ +$if(keywords)$ + pdfkeywords={$for(keywords)$$keywords$$sep$, $endfor$}, +$endif$ +$if(colorlinks)$ + colorlinks=true, + linkcolor=$if(linkcolor)$$linkcolor$$else$default-linkcolor$endif$, + filecolor=$if(filecolor)$$filecolor$$else$default-filecolor$endif$, + citecolor=$if(citecolor)$$citecolor$$else$default-citecolor$endif$, + urlcolor=$if(urlcolor)$$urlcolor$$else$default-urlcolor$endif$, +$else$ + hidelinks, +$endif$ + breaklinks=true, + pdfcreator={LaTeX via pandoc with the Eisvogel template}} +\urlstyle{same} % disable monospaced font for URLs +$if(verbatim-in-note)$ +\VerbatimFootnotes % allow verbatim text in footnotes +$endif$ +$if(geometry)$ +$if(beamer)$ +\geometry{$for(geometry)$$geometry$$sep$,$endfor$} +$else$ +\usepackage[$for(geometry)$$geometry$$sep$,$endfor$]{geometry} +$endif$ +$else$ +$if(beamer)$ +$else$ +\usepackage[margin=2.5cm,includehead=true,includefoot=true,centering,$for(geometry)$$geometry$$sep$,$endfor$]{geometry} +$endif$ +$endif$ +$if(logo)$ +\usepackage[export]{adjustbox} +\usepackage{graphicx} +$endif$ +$if(beamer)$ +\newif\ifbibliography +$endif$ +$if(listings)$ +\usepackage{listings} +\newcommand{\passthrough}[1]{#1} +\lstset{defaultdialect=[5.3]Lua} +\lstset{defaultdialect=[x86masm]Assembler} +$endif$ +$if(listings-no-page-break)$ +\usepackage{etoolbox} +\BeforeBeginEnvironment{lstlisting}{\par\noindent\begin{minipage}{\linewidth}} +\AfterEndEnvironment{lstlisting}{\end{minipage}\par\addvspace{\topskip}} +$endif$ +$if(lhs)$ +\lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{} +$endif$ +$if(highlighting-macros)$ +$highlighting-macros$ + +% Workaround/bugfix from jannick0. +% See https://github.com/jgm/pandoc/issues/4302#issuecomment-360669013) +% or https://github.com/Wandmalfarbe/pandoc-latex-template/issues/2 +% +% Redefine the verbatim environment 'Highlighting' to break long lines (with +% the help of fvextra). Redefinition is necessary because it is unlikely that +% pandoc includes fvextra in the default template. +\usepackage{fvextra} +\DefineVerbatimEnvironment{Highlighting}{Verbatim}{breaklines,fontsize=$if(code-block-font-size)$$code-block-font-size$$else$\small$endif$,commandchars=\\\{\}} + +$endif$ +$if(tables)$ +\usepackage{longtable,booktabs,array} +$if(multirow)$ +\usepackage{multirow} +$endif$ +\usepackage{calc} % for calculating minipage widths +$if(beamer)$ +\usepackage{caption} +% Make caption package work with longtable +\makeatletter +\def\fnum@table{\tablename~\thetable} +\makeatother +$else$ +% Correct order of tables after \paragraph or \subparagraph +\usepackage{etoolbox} +\makeatletter +\patchcmd\longtable{\par}{\if@noskipsec\mbox{}\fi\par}{}{} +\makeatother +% Allow footnotes in longtable head/foot +\IfFileExists{footnotehyper.sty}{\usepackage{footnotehyper}}{\usepackage{footnote}} +\makesavenoteenv{longtable} +$endif$ +$endif$ +% add backlinks to footnote references, cf. https://tex.stackexchange.com/questions/302266/make-footnote-clickable-both-ways +$if(footnotes-disable-backlinks)$ +$else$ +\usepackage{footnotebackref} +$endif$ +$if(graphics)$ +\usepackage{graphicx} +\makeatletter +\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi} +\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi} +\makeatother +% Scale images if necessary, so that they will not overflow the page +% margins by default, and it is still possible to overwrite the defaults +% using explicit options in \includegraphics[width, height, ...]{} +\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio} +% Set default figure placement to htbp +\makeatletter +\def\fps@figure{htbp} +\makeatother +$endif$ +$if(links-as-notes)$ +% Make links footnotes instead of hotlinks: +\DeclareRobustCommand{\href}[2]{#2\footnote{\url{#1}}} +$endif$ +$if(strikeout)$ +\usepackage[normalem]{ulem} +% Avoid problems with \sout in headers with hyperref +\pdfstringdefDisableCommands{\renewcommand{\sout}{}} +$endif$ +\setlength{\emergencystretch}{3em} % prevent overfull lines +\providecommand{\tightlist}{% + \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} +$if(numbersections)$ +\setcounter{secnumdepth}{$if(secnumdepth)$$secnumdepth$$else$5$endif$} +$else$ +\setcounter{secnumdepth}{-\maxdimen} % remove section numbering +$endif$ +$if(beamer)$ +$else$ +$if(block-headings)$ +% Make \paragraph and \subparagraph free-standing +\ifx\paragraph\undefined\else + \let\oldparagraph\paragraph + \renewcommand{\paragraph}[1]{\oldparagraph{#1}\mbox{}} +\fi +\ifx\subparagraph\undefined\else + \let\oldsubparagraph\subparagraph + \renewcommand{\subparagraph}[1]{\oldsubparagraph{#1}\mbox{}} +\fi +$endif$ +$endif$ +$if(pagestyle)$ +\pagestyle{$pagestyle$} +$endif$ + +% Make use of float-package and set default placement for figures to H. +% The option H means 'PUT IT HERE' (as opposed to the standard h option which means 'You may put it here if you like'). +\usepackage{float} +\floatplacement{figure}{$if(float-placement-figure)$$float-placement-figure$$else$H$endif$} + +$for(header-includes)$ +$header-includes$ +$endfor$ +$if(lang)$ +\ifxetex + $if(mainfont)$ + $else$ + % See issue https://github.com/reutenauer/polyglossia/issues/127 + \renewcommand*\familydefault{\sfdefault} + $endif$ + % Load polyglossia as late as possible: uses bidi with RTL langages (e.g. Hebrew, Arabic) + \usepackage{polyglossia} + \setmainlanguage[$for(polyglossia-lang.options)$$polyglossia-lang.options$$sep$,$endfor$]{$polyglossia-lang.name$} +$for(polyglossia-otherlangs)$ + \setotherlanguage[$for(polyglossia-otherlangs.options)$$polyglossia-otherlangs.options$$sep$,$endfor$]{$polyglossia-otherlangs.name$} +$endfor$ +\else + \usepackage[$for(babel-otherlangs)$$babel-otherlangs$,$endfor$main=$babel-lang$]{babel} +% get rid of language-specific shorthands (see #6817): +\let\LanguageShortHands\languageshorthands +\def\languageshorthands#1{} +$if(babel-newcommands)$ + $babel-newcommands$ +$endif$ +\fi +$endif$ +\ifluatex + \usepackage{selnolig} % disable illegal ligatures +\fi +$if(dir)$ +\ifxetex + % Load bidi as late as possible as it modifies e.g. graphicx + \usepackage{bidi} +\fi +\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex + \TeXXeTstate=1 + \newcommand{\RL}[1]{\beginR #1\endR} + \newcommand{\LR}[1]{\beginL #1\endL} + \newenvironment{RTL}{\beginR}{\endR} + \newenvironment{LTR}{\beginL}{\endL} +\fi +$endif$ +$if(natbib)$ +\usepackage[$natbiboptions$]{natbib} +\bibliographystyle{$if(biblio-style)$$biblio-style$$else$plainnat$endif$} +$endif$ +$if(biblatex)$ +\usepackage[$if(biblio-style)$style=$biblio-style$,$endif$$for(biblatexoptions)$$biblatexoptions$$sep$,$endfor$]{biblatex} +$for(bibliography)$ +\addbibresource{$bibliography$} +$endfor$ +$endif$ +$if(csl-refs)$ +\newlength{\cslhangindent} +\setlength{\cslhangindent}{1.5em} +\newlength{\csllabelwidth} +\setlength{\csllabelwidth}{3em} +\newenvironment{CSLReferences}[2] % #1 hanging-ident, #2 entry spacing + {% don't indent paragraphs + \setlength{\parindent}{0pt} + % turn on hanging indent if param 1 is 1 + \ifodd #1 \everypar{\setlength{\hangindent}{\cslhangindent}}\ignorespaces\fi + % set entry spacing + \ifnum #2 > 0 + \setlength{\parskip}{#2\baselineskip} + \fi + }% + {} +\usepackage{calc} +\newcommand{\CSLBlock}[1]{#1\hfill\break} +\newcommand{\CSLLeftMargin}[1]{\parbox[t]{\csllabelwidth}{#1}} +\newcommand{\CSLRightInline}[1]{\parbox[t]{\linewidth - \csllabelwidth}{#1}\break} +\newcommand{\CSLIndent}[1]{\hspace{\cslhangindent}#1} +$endif$ +$if(csquotes)$ +\usepackage{csquotes} +$endif$ + +$if(title)$ +\title{$title$$if(thanks)$\thanks{$thanks$}$endif$} +$endif$ +$if(subtitle)$ +$if(beamer)$ +$else$ +\usepackage{etoolbox} +\makeatletter +\providecommand{\subtitle}[1]{% add subtitle to \maketitle + \apptocmd{\@title}{\par {\large #1 \par}}{}{} +} +\makeatother +$endif$ +\subtitle{$subtitle$} +$endif$ +\author{$for(author)$$author$$sep$ \and $endfor$} +\date{$date$} +$if(beamer)$ +$if(institute)$ +\institute{$for(institute)$$institute$$sep$ \and $endfor$} +$endif$ +$if(titlegraphic)$ +\titlegraphic{\includegraphics{$titlegraphic$}} +$endif$ +$if(logo)$ +\logo{\includegraphics{$logo$}} +$endif$ +$endif$ + + + +%% +%% added +%% + +% +% language specification +% +% If no language is specified, use English as the default main document language. +% +$if(lang)$$else$ +\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex + \usepackage[shorthands=off,$for(babel-otherlangs)$$babel-otherlangs$,$endfor$main=english]{babel} +$if(babel-newcommands)$ + $babel-newcommands$ +$endif$ +\else + $if(mainfont)$ + $else$ + % Workaround for bug in Polyglossia that breaks `\familydefault` when `\setmainlanguage` is used. + % See https://github.com/Wandmalfarbe/pandoc-latex-template/issues/8 + % See https://github.com/reutenauer/polyglossia/issues/186 + % See https://github.com/reutenauer/polyglossia/issues/127 + \renewcommand*\familydefault{\sfdefault} + $endif$ + % load polyglossia as late as possible as it *could* call bidi if RTL lang (e.g. Hebrew or Arabic) + \usepackage{polyglossia} + \setmainlanguage[]{english} +$for(polyglossia-otherlangs)$ + \setotherlanguage[$polyglossia-otherlangs.options$]{$polyglossia-otherlangs.name$} +$endfor$ +\fi +$endif$ + +$if(page-background)$ +\usepackage[pages=all]{background} +$endif$ + +% +% for the background color of the title page +% +$if(titlepage)$ +\usepackage{pagecolor} +\usepackage{afterpage} +$if(titlepage-background)$ +\usepackage{tikz} +$endif$ +$if(geometry)$ +$else$ +\usepackage[margin=2.5cm,includehead=true,includefoot=true,centering]{geometry} +$endif$ +$endif$ + +% +% break urls +% +\PassOptionsToPackage{hyphens}{url} + +% +% When using babel or polyglossia with biblatex, loading csquotes is recommended +% to ensure that quoted texts are typeset according to the rules of your main language. +% +\usepackage{csquotes} + +% +% captions +% +\definecolor{caption-color}{HTML}{777777} +$if(beamer)$ +$else$ +\usepackage[font={stretch=1.2}, textfont={color=caption-color}, position=top, skip=4mm, labelfont=bf, singlelinecheck=false, justification=$if(caption-justification)$$caption-justification$$else$raggedright$endif$]{caption} +\setcapindent{0em} +$endif$ + +% +% blockquote +% +\definecolor{blockquote-border}{RGB}{221,221,221} +\definecolor{blockquote-text}{RGB}{119,119,119} +\usepackage{mdframed} +\newmdenv[rightline=false,bottomline=false,topline=false,linewidth=3pt,linecolor=blockquote-border,skipabove=\parskip]{customblockquote} +\renewenvironment{quote}{\begin{customblockquote}\list{}{\rightmargin=0em\leftmargin=0em}% +\item\relax\color{blockquote-text}\ignorespaces}{\unskip\unskip\endlist\end{customblockquote}} + +% +% Source Sans Pro as the de­fault font fam­ily +% Source Code Pro for monospace text +% +% 'default' option sets the default +% font family to Source Sans Pro, not \sfdefault. +% +\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex + $if(fontfamily)$ + $else$ + \usepackage[default]{sourcesanspro} + \usepackage{sourcecodepro} + $endif$ +\else % if not pdftex + $if(mainfont)$ + $else$ + \usepackage[default]{sourcesanspro} + \usepackage{sourcecodepro} + + % XeLaTeX specific adjustments for straight quotes: https://tex.stackexchange.com/a/354887 + % This issue is already fixed (see https://github.com/silkeh/latex-sourcecodepro/pull/5) but the + % fix is still unreleased. + % TODO: Remove this workaround when the new version of sourcecodepro is released on CTAN. + \ifxetex + \makeatletter + \defaultfontfeatures[\ttfamily] + { Numbers = \sourcecodepro@figurestyle, + Scale = \SourceCodePro@scale, + Extension = .otf } + \setmonofont + [ UprightFont = *-\sourcecodepro@regstyle, + ItalicFont = *-\sourcecodepro@regstyle It, + BoldFont = *-\sourcecodepro@boldstyle, + BoldItalicFont = *-\sourcecodepro@boldstyle It ] + {SourceCodePro} + \makeatother + \fi + $endif$ +\fi + +% +% heading color +% +\definecolor{heading-color}{RGB}{40,40,40} +$if(beamer)$ +$else$ +\addtokomafont{section}{\color{heading-color}} +$endif$ +% When using the classes report, scrreprt, book, +% scrbook or memoir, uncomment the following line. +%\addtokomafont{chapter}{\color{heading-color}} + +% +% variables for title, author and date +% +$if(beamer)$ +$else$ +\usepackage{titling} +\title{$title$} +\author{$for(author)$$author$$sep$, $endfor$} +\date{$date$} +$endif$ + +% +% tables +% +$if(tables)$ + +\definecolor{table-row-color}{HTML}{F5F5F5} +\definecolor{table-rule-color}{HTML}{999999} + +%\arrayrulecolor{black!40} +\arrayrulecolor{table-rule-color} % color of \toprule, \midrule, \bottomrule +\setlength\heavyrulewidth{0.3ex} % thickness of \toprule, \bottomrule +\renewcommand{\arraystretch}{1.3} % spacing (padding) + +$if(table-use-row-colors)$ +% TODO: This doesn't work anymore. I don't know why. +% Reset rownum counter so that each table +% starts with the same row colors. +% https://tex.stackexchange.com/questions/170637/restarting-rowcolors +% +% Unfortunately the colored cells extend beyond the edge of the +% table because pandoc uses @-expressions (@{}) like so: +% +% \begin{longtable}[]{@{}ll@{}} +% \end{longtable} +% +% https://en.wikibooks.org/wiki/LaTeX/Tables#.40-expressions +\let\oldlongtable\longtable +\let\endoldlongtable\endlongtable +\renewenvironment{longtable}{ +\rowcolors{3}{}{table-row-color!100} % row color +\oldlongtable} { +\endoldlongtable +\global\rownum=0\relax} +$endif$ +$endif$ + +% +% remove paragraph indention +% +\setlength{\parindent}{0pt} +\setlength{\parskip}{6pt plus 2pt minus 1pt} +\setlength{\emergencystretch}{3em} % prevent overfull lines + +% +% +% Listings +% +% + +$if(listings)$ + +\usepackage{listings} +\usepackage{etoolbox} +\usepackage{color} + +\definecolor{base0}{RGB}{131,148,150} +\definecolor{base01}{RGB}{88,110,117} +\definecolor{base2}{RGB}{238,232,213} +\definecolor{sgreen}{RGB}{133,153,0} +\definecolor{sblue}{RGB}{38,138,210} +\definecolor{scyan}{RGB}{42,161,151} +\definecolor{smagenta}{RGB}{211,54,130} + + +\newcommand\digitstyle{\color{smagenta}} +\newcommand\symbolstyle{\color{base01}} +\makeatletter +\newcommand{\ProcessDigit}[1] +{% + \ifnum\lst@mode=\lst@Pmode\relax% + {\digitstyle #1}% + \else + #1% + \fi +} +\makeatother + +\lstdefinestyle{solarizedcsharp} { + language=[Sharp]C, + frame=lr, + linewidth=160mm, + breaklines=true, + tabsize=2, + numbers=left, + numbersep=5pt, + firstnumber=auto, + numberstyle=\tiny\ttfamily\color{base0}, + rulecolor=\color{base2}, + basicstyle=\footnotesize\ttfamily, + commentstyle=\color{base01}, + morecomment=[s][\color{base01}]{/*+}{*/}, + morecomment=[s][\color{base01}]{/*-}{*/}, + morekeywords={ abstract, event, new, struct, + as, explicit, null, switch, + base, extern, object, this, + bool, false, operator, throw, + break, finally, out, true, + byte, fixed, override, try, + case, float, params, typeof, + catch, for, private, uint, + char, foreach, protected, ulong, + checked, goto, public, unchecked, + class, if, readonly, unsafe, + const, implicit, ref, ushort, + continue, in, return, using, + decimal, int, sbyte, virtual, + default, interface, sealed, volatile, + delegate, internal, short, void, + do, is, sizeof, while, + double, lock, stackalloc, + else, long, static, + enum, namespace, string, var}, + keywordstyle=\bfseries\color{sgreen}, + showstringspaces=false, + stringstyle=\color{scyan}, + identifierstyle=\color{sblue}, + extendedchars=true, +} + +\lstset{escapechar=@,style=solarizedcsharp} + +\lstdefinelanguage{XML}{ + morestring = [b]", + moredelim = [s][\bfseries\color{listing-keyword}]{<}{\ }, + moredelim = [s][\bfseries\color{listing-keyword}]{}, + moredelim = [l][\bfseries\color{listing-keyword}]{/>}, + moredelim = [l][\bfseries\color{listing-keyword}]{>}, + morecomment = [s]{}, + morecomment = [s]{}, + commentstyle = \color{listing-comment}, + stringstyle = \color{listing-string}, + identifierstyle = \color{listing-identifier} +} +$endif$ + +% +% header and footer +% +$if(beamer)$ +$else$ +$if(disable-header-and-footer)$ +$else$ +\usepackage{fancyhdr} + +\fancypagestyle{eisvogel-header-footer}{ + \fancyhead{} + \fancyfoot{} + \lhead[$if(header-right)$$header-right$$else$$date$$endif$]{$if(header-left)$$header-left$$else$$title$$endif$} + \chead[$if(header-center)$$header-center$$else$$endif$]{$if(header-center)$$header-center$$else$$endif$} + \rhead[$if(header-left)$$header-left$$else$$title$$endif$]{$if(header-right)$$header-right$$else$$date$$endif$} + \lfoot[$if(footer-right)$$footer-right$$else$\thepage$endif$]{$if(footer-left)$$footer-left$$else$$for(author)$$author$$sep$, $endfor$$endif$} + \cfoot[$if(footer-center)$$footer-center$$else$$endif$]{$if(footer-center)$$footer-center$$else$$endif$} + \rfoot[$if(footer-left)$$footer-left$$else$$for(author)$$author$$sep$, $endfor$$endif$]{$if(footer-right)$$footer-right$$else$\thepage$endif$} + \renewcommand{\headrulewidth}{0.4pt} + \renewcommand{\footrulewidth}{0.4pt} +} +\pagestyle{eisvogel-header-footer} +$if(page-background)$ +\backgroundsetup{ +scale=1, +color=black, +opacity=$if(page-background-opacity)$$page-background-opacity$$else$0.2$endif$, +angle=0, +contents={% + \includegraphics[width=\paperwidth,height=\paperheight]{$page-background$} + }% +} +$endif$ +$endif$ +$endif$ + +%% +%% end added +%% + +\begin{document} + +%% +%% begin titlepage +%% +$if(beamer)$ +$else$ +$if(titlepage)$ +\begin{titlepage} + $if(titlepage-background)$ + \newgeometry{top=2cm, right=4cm, bottom=3cm, left=4cm} + $else$ + \newgeometry{left=6cm} + $endif$ + $if(titlepage-color)$ + \definecolor{titlepage-color}{HTML}{$titlepage-color$} + \newpagecolor{titlepage-color}\afterpage{\restorepagecolor} + $endif$ + $if(titlepage-background)$ + \tikz[remember picture,overlay] \node[inner sep=0pt] at (current page.center){\includegraphics[width=\paperwidth,height=\paperheight]{$titlepage-background$}}; + $endif$ + \newcommand{\colorRule}[3][black]{\textcolor[HTML]{#1}{\rule{#2}{#3}}} + \begin{flushleft} + \noindent + \\[-1em] + \color[HTML]{$if(titlepage-text-color)$$titlepage-text-color$$else$5F5F5F$endif$} + \makebox[0pt][l]{\colorRule[$if(titlepage-rule-color)$$titlepage-rule-color$$else$435488$endif$]{1.3\textwidth}{$if(titlepage-rule-height)$$titlepage-rule-height$$else$4$endif$pt}} + \par + \noindent + + $if(titlepage-background)$ + % The titlepage with a background image has other text spacing and text size + { + \setstretch{2} + \vfill + \vskip -8em + \noindent {\huge \textbf{\textsf{$title$}}} + $if(subtitle)$ + \vskip 1em + {\Large \textsf{$subtitle$}} + $endif$ + \vskip 2em + \noindent {\Large \textsf{$for(author)$$author$$sep$, $endfor$} \vskip 0.6em \textsf{$date$}} + \vfill + } + $else$ + { + \setstretch{1.4} + \vfill + \noindent {\huge \textbf{\textsf{$title$}}} + $if(subtitle)$ + \vskip 1em + {\Large \textsf{$subtitle$}} + $endif$ + \vskip 2em + \noindent {\Large \textsf{$for(author)$$author$$sep$, $endfor$}} + \vfill + } + $endif$ + + $if(logo)$ + \noindent + \includegraphics[width=$if(logo-width)$$logo-width$$else$35mm$endif$, left]{$logo$} + $endif$ + + $if(titlepage-background)$ + $else$ + \textsf{$date$} + $endif$ + \end{flushleft} +\end{titlepage} +\restoregeometry +$endif$ +$endif$ + +%% +%% end titlepage +%% + +$if(has-frontmatter)$ +\frontmatter +$endif$ +$if(title)$ +$if(beamer)$ +\frame{\titlepage} +$endif$ +$if(abstract)$ +\begin{abstract} + $abstract$ +\end{abstract} +$endif$ +$endif$ + +$if(first-chapter)$ +\setcounter{chapter}{$first-chapter$} +\addtocounter{chapter}{-1} +$endif$ + +$for(include-before)$ +$include-before$ + +$endfor$ +$if(toc)$ +$if(toc-title)$ +\renewcommand*\contentsname{$toc-title$} +$endif$ +$if(beamer)$ +\begin{frame}[allowframebreaks] + $if(toc-title)$ + \frametitle{$toc-title$} + $endif$ + \tableofcontents[hideallsubsections] +\end{frame} +$if(toc-own-page)$ +\newpage +$endif$ +$else$ +{ + $if(colorlinks)$ + \hypersetup{linkcolor=$if(toccolor)$$toccolor$$else$$endif$} + $endif$ + \setcounter{tocdepth}{$toc-depth$} + \tableofcontents + $if(toc-own-page)$ + \newpage + $endif$ + } +$endif$ +$endif$ +$if(lot)$ +\listoftables +$endif$ +$if(lof)$ +\listoffigures +$endif$ +$if(linestretch)$ +\setstretch{$linestretch$} +$endif$ +$if(has-frontmatter)$ +\mainmatter +$endif$ +$body$ + +$if(has-frontmatter)$ +\backmatter +$endif$ +$if(natbib)$ +$if(bibliography)$ +$if(biblio-title)$ +$if(has-chapters)$ +\renewcommand\bibname{$biblio-title$} +$else$ +\renewcommand\refname{$biblio-title$} +$endif$ +$endif$ +$if(beamer)$ +\begin{frame}[allowframebreaks]{$biblio-title$} + \bibliographytrue + $endif$ + \bibliography{$for(bibliography)$$bibliography$$sep$,$endfor$} + $if(beamer)$ +\end{frame} +$endif$ + +$endif$ +$endif$ +$if(biblatex)$ +$if(beamer)$ +\begin{frame}[allowframebreaks]{$biblio-title$} + \bibliographytrue + \printbibliography[heading=none] +\end{frame} +$else$ +\printbibliography$if(biblio-title)$[title=$biblio-title$]$endif$ +$endif$ + +$endif$ +$for(include-after)$ +$include-after$ + +$endfor$ +\end{document} diff --git a/templates/epub.html b/templates/epub.html new file mode 100644 index 0000000..c32f645 --- /dev/null +++ b/templates/epub.html @@ -0,0 +1,69 @@ + + + + + + + $pagetitle$ +$if(highlighting-css)$ + +$endif$ +$for(css)$ + +$endfor$ +$for(header-includes)$ + $header-includes$ +$endfor$ + + +$if(titlepage)$ +
+$for(title)$ +$if(title.type)$ +

$title.text$

+$else$ +

$title$

+$endif$ +$endfor$ +$if(subtitle)$ +

$subtitle$

+$endif$ +$for(author)$ +

$author$

+$endfor$ +$for(creator)$ +

$creator.text$

+$endfor$ +$if(publisher)$ +

$publisher$

+$endif$ +$if(date)$ +

$date$

+$endif$ +$if(rights)$ +
$rights$
+$endif$ +
+$else$ +$if(coverpage)$ +
+ + + +
+$else$ +$for(include-before)$ +$include-before$ +$endfor$ +$body$ +$for(include-after)$ +$include-after$ +$endfor$ +$endif$ +$endif$ + + + diff --git a/templates/html.html b/templates/html.html new file mode 100644 index 0000000..3cf0743 --- /dev/null +++ b/templates/html.html @@ -0,0 +1,65 @@ + + + + + + +$for(author-meta)$ + +$endfor$ +$if(date-meta)$ + +$endif$ +$if(keywords)$ + +$endif$ + $if(title-prefix)$$title-prefix$ – $endif$$pagetitle$ + +$for(css)$ + +$endfor$ +$if(math)$ + $math$ +$endif$ + +$for(header-includes)$ + $header-includes$ +$endfor$ + + +$for(include-before)$ +$include-before$ +$endfor$ +$if(title)$ +
+

$title$

+$if(subtitle)$ +

$subtitle$

+$endif$ +$for(author)$ +

$author$

+$endfor$ +$if(date)$ +

$date$

+$endif$ +
+$endif$ +$if(toc)$ + +$endif$ +$body$ +$for(include-after)$ +$include-after$ +$endfor$ + + diff --git a/templates/pdf.latex b/templates/pdf.latex new file mode 100644 index 0000000..4ceca43 --- /dev/null +++ b/templates/pdf.latex @@ -0,0 +1,497 @@ +% Options for packages loaded elsewhere +\PassOptionsToPackage{unicode$for(hyperrefoptions)$,$hyperrefoptions$$endfor$}{hyperref} +\PassOptionsToPackage{hyphens}{url} +$if(colorlinks)$ +\PassOptionsToPackage{dvipsnames,svgnames*,x11names*}{xcolor} +$endif$ +$if(dir)$ +$if(latex-dir-rtl)$ +\PassOptionsToPackage{RTLdocument}{bidi} +$endif$ +$endif$ +$if(CJKmainfont)$ +\PassOptionsToPackage{space}{xeCJK} +$endif$ +% +\documentclass[ +$if(fontsize)$ + $fontsize$, +$endif$ +$if(lang)$ + $babel-lang$, +$endif$ +$if(papersize)$ + $papersize$paper, +$endif$ +$if(beamer)$ + ignorenonframetext, +$if(handout)$ + handout, +$endif$ +$if(aspectratio)$ + aspectratio=$aspectratio$, +$endif$ +$endif$ +$for(classoption)$ + $classoption$$sep$, +$endfor$ +]{$documentclass$} +$if(beamer)$ +$if(background-image)$ +\usebackgroundtemplate{% + \includegraphics[width=\paperwidth]{$background-image$}% +} +$endif$ +\usepackage{pgfpages} +\setbeamertemplate{caption}[numbered] +\setbeamertemplate{caption label separator}{: } +\setbeamercolor{caption name}{fg=normal text.fg} +\beamertemplatenavigationsymbols$if(navigation)$$navigation$$else$empty$endif$ +$for(beameroption)$ +\setbeameroption{$beameroption$} +$endfor$ +% Prevent slide breaks in the middle of a paragraph +\widowpenalties 1 10000 +\raggedbottom +$if(section-titles)$ +\setbeamertemplate{part page}{ + \centering + \begin{beamercolorbox}[sep=16pt,center]{part title} + \usebeamerfont{part title}\insertpart\par + \end{beamercolorbox} +} +\setbeamertemplate{section page}{ + \centering + \begin{beamercolorbox}[sep=12pt,center]{part title} + \usebeamerfont{section title}\insertsection\par + \end{beamercolorbox} +} +\setbeamertemplate{subsection page}{ + \centering + \begin{beamercolorbox}[sep=8pt,center]{part title} + \usebeamerfont{subsection title}\insertsubsection\par + \end{beamercolorbox} +} +\AtBeginPart{ + \frame{\partpage} +} +\AtBeginSection{ + \ifbibliography + \else + \frame{\sectionpage} + \fi +} +\AtBeginSubsection{ + \frame{\subsectionpage} +} +$endif$ +$endif$ +$if(beamerarticle)$ +\usepackage{beamerarticle} % needs to be loaded first +$endif$ +$if(fontfamily)$ +\usepackage[$for(fontfamilyoptions)$$fontfamilyoptions$$sep$,$endfor$]{$fontfamily$} +$else$ +\usepackage{lmodern} +$endif$ +$if(linestretch)$ +\usepackage{setspace} +$endif$ +\usepackage{amssymb,amsmath} +\usepackage{ifxetex,ifluatex} +\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex + \usepackage[$if(fontenc)$$fontenc$$else$T1$endif$]{fontenc} + \usepackage[utf8]{inputenc} + \usepackage{textcomp} % provide euro and other symbols +\else % if luatex or xetex +$if(mathspec)$ + \ifxetex + \usepackage{mathspec} + \else + \usepackage{unicode-math} + \fi +$else$ + \usepackage{unicode-math} +$endif$ + \defaultfontfeatures{Scale=MatchLowercase} + \defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1} +$if(mainfont)$ + \setmainfont[$for(mainfontoptions)$$mainfontoptions$$sep$,$endfor$]{$mainfont$} +$endif$ +$if(sansfont)$ + \setsansfont[$for(sansfontoptions)$$sansfontoptions$$sep$,$endfor$]{$sansfont$} +$endif$ +$if(monofont)$ + \setmonofont[$for(monofontoptions)$$monofontoptions$$sep$,$endfor$]{$monofont$} +$endif$ +$for(fontfamilies)$ + \newfontfamily{$fontfamilies.name$}[$for(fontfamilies.options)$$fontfamilies.options$$sep$,$endfor$]{$fontfamilies.font$} +$endfor$ +$if(mathfont)$ +$if(mathspec)$ + \ifxetex + \setmathfont(Digits,Latin,Greek)[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$} + \else + \setmathfont[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$} + \fi +$else$ + \setmathfont[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$} +$endif$ +$endif$ +$if(CJKmainfont)$ + \ifxetex + \usepackage{xeCJK} + \setCJKmainfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$} + \fi +$endif$ +$if(luatexjapresetoptions)$ + \ifluatex + \usepackage[$for(luatexjapresetoptions)$$luatexjapresetoptions$$sep$,$endfor$]{luatexja-preset} + \fi +$endif$ +$if(CJKmainfont)$ + \ifluatex + \usepackage[$for(luatexjafontspecoptions)$$luatexjafontspecoptions$$sep$,$endfor$]{luatexja-fontspec} + \setmainjfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$} + \fi +$endif$ +\fi +$if(beamer)$ +$if(theme)$ +\usetheme[$for(themeoptions)$$themeoptions$$sep$,$endfor$]{$theme$} +$endif$ +$if(colortheme)$ +\usecolortheme{$colortheme$} +$endif$ +$if(fonttheme)$ +\usefonttheme{$fonttheme$} +$endif$ +$if(mainfont)$ +\usefonttheme{serif} % use mainfont rather than sansfont for slide text +$endif$ +$if(innertheme)$ +\useinnertheme{$innertheme$} +$endif$ +$if(outertheme)$ +\useoutertheme{$outertheme$} +$endif$ +$endif$ +% Use upquote if available, for straight quotes in verbatim environments +\IfFileExists{upquote.sty}{\usepackage{upquote}}{} +\IfFileExists{microtype.sty}{% use microtype if available + \usepackage[$for(microtypeoptions)$$microtypeoptions$$sep$,$endfor$]{microtype} + \UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts +}{} +$if(indent)$ +$else$ +\makeatletter +\@ifundefined{KOMAClassName}{% if non-KOMA class + \IfFileExists{parskip.sty}{% + \usepackage{parskip} + }{% else + \setlength{\parindent}{0pt} + \setlength{\parskip}{6pt plus 2pt minus 1pt}} +}{% if KOMA class + \KOMAoptions{parskip=half}} +\makeatother +$endif$ +$if(verbatim-in-note)$ +\usepackage{fancyvrb} +$endif$ +\usepackage{xcolor} +\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available +\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}} +\hypersetup{ +$if(title-meta)$ + pdftitle={$title-meta$}, +$endif$ +$if(author-meta)$ + pdfauthor={$author-meta$}, +$endif$ +$if(lang)$ + pdflang={$lang$}, +$endif$ +$if(subject)$ + pdfsubject={$subject$}, +$endif$ +$if(keywords)$ + pdfkeywords={$for(keywords)$$keywords$$sep$, $endfor$}, +$endif$ +$if(colorlinks)$ + colorlinks=true, + linkcolor=$if(linkcolor)$$linkcolor$$else$Maroon$endif$, + filecolor=$if(filecolor)$$filecolor$$else$Maroon$endif$, + citecolor=$if(citecolor)$$citecolor$$else$Blue$endif$, + urlcolor=$if(urlcolor)$$urlcolor$$else$Blue$endif$, +$else$ + hidelinks, +$endif$ + pdfcreator={LaTeX via pandoc}} +\urlstyle{same} % disable monospaced font for URLs +$if(verbatim-in-note)$ +\VerbatimFootnotes % allow verbatim text in footnotes +$endif$ +$if(geometry)$ +$if(beamer)$ +\geometry{$for(geometry)$$geometry$$sep$,$endfor$} +$else$ +\usepackage[$for(geometry)$$geometry$$sep$,$endfor$]{geometry} +$endif$ +$endif$ +$if(beamer)$ +\newif\ifbibliography +$endif$ +$if(listings)$ +\usepackage{listings} +\newcommand{\passthrough}[1]{#1} +\lstset{defaultdialect=[5.3]Lua} +\lstset{defaultdialect=[x86masm]Assembler} +$endif$ +$if(lhs)$ +\lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{} +$endif$ +$if(highlighting-macros)$ +$highlighting-macros$ +$endif$ +$if(tables)$ +\usepackage{longtable,booktabs} +$if(beamer)$ +\usepackage{caption} +% Make caption package work with longtable +\makeatletter +\def\fnum@table{\tablename~\thetable} +\makeatother +$else$ +% Correct order of tables after \paragraph or \subparagraph +\usepackage{etoolbox} +\makeatletter +\patchcmd\longtable{\par}{\if@noskipsec\mbox{}\fi\par}{}{} +\makeatother +% Allow footnotes in longtable head/foot +\IfFileExists{footnotehyper.sty}{\usepackage{footnotehyper}}{\usepackage{footnote}} +\makesavenoteenv{longtable} +$endif$ +$endif$ +$if(graphics)$ +\usepackage{graphicx} +\makeatletter +\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi} +\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi} +\makeatother +% Scale images if necessary, so that they will not overflow the page +% margins by default, and it is still possible to overwrite the defaults +% using explicit options in \includegraphics[width, height, ...]{} +\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio} +% Set default figure placement to htbp +\makeatletter +\def\fps@figure{htbp} +\makeatother +$endif$ +$if(links-as-notes)$ +% Make links footnotes instead of hotlinks: +\DeclareRobustCommand{\href}[2]{#2\footnote{\url{#1}}} +$endif$ +$if(strikeout)$ +\usepackage[normalem]{ulem} +% Avoid problems with \sout in headers with hyperref +\pdfstringdefDisableCommands{\renewcommand{\sout}{}} +$endif$ +\setlength{\emergencystretch}{3em} % prevent overfull lines +\providecommand{\tightlist}{% + \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} +$if(numbersections)$ +\setcounter{secnumdepth}{$if(secnumdepth)$$secnumdepth$$else$5$endif$} +$else$ +\setcounter{secnumdepth}{-\maxdimen} % remove section numbering +$endif$ +$if(beamer)$ +$else$ +$if(block-headings)$ +% Make \paragraph and \subparagraph free-standing +\ifx\paragraph\undefined\else + \let\oldparagraph\paragraph + \renewcommand{\paragraph}[1]{\oldparagraph{#1}\mbox{}} +\fi +\ifx\subparagraph\undefined\else + \let\oldsubparagraph\subparagraph + \renewcommand{\subparagraph}[1]{\oldsubparagraph{#1}\mbox{}} +\fi +$endif$ +$endif$ +$if(pagestyle)$ +\pagestyle{$pagestyle$} +$endif$ +$for(header-includes)$ +$header-includes$ +$endfor$ +$if(lang)$ +\ifxetex + % Load polyglossia as late as possible: uses bidi with RTL langages (e.g. Hebrew, Arabic) + \usepackage{polyglossia} + \setmainlanguage[$polyglossia-lang.options$]{$polyglossia-lang.name$} +$for(polyglossia-otherlangs)$ + \setotherlanguage[$polyglossia-otherlangs.options$]{$polyglossia-otherlangs.name$} +$endfor$ +\else + \usepackage[shorthands=off,$for(babel-otherlangs)$$babel-otherlangs$,$endfor$main=$babel-lang$]{babel} +$if(babel-newcommands)$ + $babel-newcommands$ +$endif$ +\fi +$endif$ +$if(dir)$ +\ifxetex + % Load bidi as late as possible as it modifies e.g. graphicx + \usepackage{bidi} +\fi +\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex + \TeXXeTstate=1 + \newcommand{\RL}[1]{\beginR #1\endR} + \newcommand{\LR}[1]{\beginL #1\endL} + \newenvironment{RTL}{\beginR}{\endR} + \newenvironment{LTR}{\beginL}{\endL} +\fi +$endif$ +$if(natbib)$ +\usepackage[$natbiboptions$]{natbib} +\bibliographystyle{$if(biblio-style)$$biblio-style$$else$plainnat$endif$} +$endif$ +$if(biblatex)$ +\usepackage[$if(biblio-style)$style=$biblio-style$,$endif$$for(biblatexoptions)$$biblatexoptions$$sep$,$endfor$]{biblatex} +$for(bibliography)$ +\addbibresource{$bibliography$} +$endfor$ +$endif$ +$if(csl-refs)$ +\newlength{\cslhangindent} +\setlength{\cslhangindent}{1.5em} +\newenvironment{cslreferences}% + {$if(csl-hanging-indent)$\setlength{\parindent}{0pt}% + \everypar{\setlength{\hangindent}{\cslhangindent}}\ignorespaces$endif$}% + {\par} +$endif$ + +$if(title)$ +\title{$title$$if(thanks)$\thanks{$thanks$}$endif$} +$endif$ +$if(subtitle)$ +$if(beamer)$ +$else$ +\usepackage{etoolbox} +\makeatletter +\providecommand{\subtitle}[1]{% add subtitle to \maketitle + \apptocmd{\@title}{\par {\large #1 \par}}{}{} +} +\makeatother +$endif$ +\subtitle{$subtitle$} +$endif$ +\author{$for(author)$$author$$sep$ \and $endfor$} +\date{$date$} +$if(beamer)$ +$if(institute)$ +\institute{$for(institute)$$institute$$sep$ \and $endfor$} +$endif$ +$if(titlegraphic)$ +\titlegraphic{\includegraphics{$titlegraphic$}} +$endif$ +$if(logo)$ +\logo{\includegraphics{$logo$}} +$endif$ +$endif$ + +\begin{document} +$if(has-frontmatter)$ +\frontmatter +$endif$ +$if(title)$ +$if(beamer)$ +\frame{\titlepage} +$else$ +\maketitle +$endif$ +$if(abstract)$ +\begin{abstract} +$abstract$ +\end{abstract} +$endif$ +$endif$ + +$for(include-before)$ +$include-before$ + +$endfor$ +$if(toc)$ +$if(toc-title)$ +\renewcommand*\contentsname{$toc-title$} +$endif$ +$if(beamer)$ +\begin{frame}[allowframebreaks] +$if(toc-title)$ + \frametitle{$toc-title$} +$endif$ + \tableofcontents[hideallsubsections] +\end{frame} +$else$ +{ +$if(colorlinks)$ +\hypersetup{linkcolor=$if(toccolor)$$toccolor$$else$$endif$} +$endif$ +\setcounter{tocdepth}{$toc-depth$} +\tableofcontents +} +$endif$ +$endif$ +$if(lot)$ +\listoftables +$endif$ +$if(lof)$ +\listoffigures +$endif$ +$if(linestretch)$ +\setstretch{$linestretch$} +$endif$ +$if(has-frontmatter)$ +\mainmatter +$endif$ +$body$ + +$if(has-frontmatter)$ +\backmatter +$endif$ +$if(natbib)$ +$if(bibliography)$ +$if(biblio-title)$ +$if(has-chapters)$ +\renewcommand\bibname{$biblio-title$} +$else$ +\renewcommand\refname{$biblio-title$} +$endif$ +$endif$ +$if(beamer)$ +\begin{frame}[allowframebreaks]{$biblio-title$} + \bibliographytrue +$endif$ + \bibliography{$for(bibliography)$$bibliography$$sep$,$endfor$} +$if(beamer)$ +\end{frame} +$endif$ + +$endif$ +$endif$ +$if(biblatex)$ +$if(beamer)$ +\begin{frame}[allowframebreaks]{$biblio-title$} + \bibliographytrue + \printbibliography[heading=none] +\end{frame} +$else$ +\printbibliography$if(biblio-title)$[title=$biblio-title$]$endif$ +$endif$ + +$endif$ +$for(include-after)$ +$include-after$ + +$endfor$ +\end{document} diff --git a/templates/style.css b/templates/style.css new file mode 100644 index 0000000..5d098ef --- /dev/null +++ b/templates/style.css @@ -0,0 +1,342 @@ +/* + * Custom CSS file. Override it as you like. + * + * Credits to @killercup (https://gist.github.com/killercup); Extracted from this Gist: + * https://gist.github.com/killercup/5917178 + */ + +html { + font-size: 100%; + overflow-y: scroll; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +body { + color: #444; + font-family: Georgia, Palatino, 'Palatino Linotype', Times, 'Times New Roman', serif; + font-size: 12px; + line-height: 1.7; + padding: 1em; + margin: auto; + max-width: 42em; + background: #fefefe; +} + +a { + color: #0645ad; + text-decoration: none; +} + +a:visited { + color: #0b0080; +} + +a:hover { + color: #06e; +} + +a:active { + color: #faa700; +} + +a:focus { + outline: thin dotted; +} + +*::-moz-selection { + background: rgba(255, 255, 0, 0.3); + color: #000; +} + +*::selection { + background: rgba(255, 255, 0, 0.3); + color: #000; +} + +a::-moz-selection { + background: rgba(255, 255, 0, 0.3); + color: #0645ad; +} + +a::selection { + background: rgba(255, 255, 0, 0.3); + color: #0645ad; +} + +p { + margin: 1em 0; +} + +img { + max-width: 100%; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + color: #111; + line-height: 125%; + margin-top: 2em; + font-weight: normal; +} + +h4, +h5, +h6 { + font-weight: bold; +} + +h1 { + font-size: 2.5em; +} + +h2 { + font-size: 2em; +} + +h3 { + font-size: 1.5em; +} + +h4 { + font-size: 1.2em; +} + +h5 { + font-size: 1em; +} + +h6 { + font-size: 0.9em; +} + +blockquote { + color: #666666; + margin: 0; + padding-left: 3em; + border-left: 0.5em #EEE solid; +} + +hr { + display: block; + height: 2px; + border: 0; + border-top: 1px solid #aaa; + border-bottom: 1px solid #eee; + margin: 1em 0; + padding: 0; +} + +pre, +code, +kbd, +samp { + color: #000; + font-family: monospace, monospace; + _font-family: 'courier new', monospace; + font-size: 0.98em; +} + +pre { + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; +} + +b, +strong { + font-weight: bold; +} + +dfn { + font-style: italic; +} + +ins { + background: #ff9; + color: #000; + text-decoration: none; +} + +mark { + background: #ff0; + color: #000; + font-style: italic; + font-weight: bold; +} + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +ul, +ol { + margin: 1em 0; + padding: 0 0 0 2em; +} + +li p:last-child { + margin-bottom: 0; +} + +ul ul, +ol ol { + margin: .3em 0; +} + +dl { + margin-bottom: 1em; +} + +dt { + font-weight: bold; + margin-bottom: .8em; +} + +dd { + margin: 0 0 .8em 2em; +} + +dd:last-child { + margin-bottom: 0; +} + +img { + border: 0; + -ms-interpolation-mode: bicubic; + vertical-align: middle; +} + +figure { + display: block; + text-align: center; + margin: 1em 0; +} + +figure img { + border: none; + margin: 0 auto; +} + +figcaption { + font-size: 0.8em; + font-style: italic; + margin: 0 0 .8em; +} + +table { + margin-bottom: 2em; + border-bottom: 1px solid #ddd; + border-right: 1px solid #ddd; + border-spacing: 0; + border-collapse: collapse; +} + +table th { + padding: .2em 1em; + background-color: #eee; + border-top: 1px solid #ddd; + border-left: 1px solid #ddd; +} + +table td { + padding: .2em 1em; + border-top: 1px solid #ddd; + border-left: 1px solid #ddd; + vertical-align: top; +} + +.author { + font-size: 1.2em; + text-align: center; +} + +@media only screen and (min-width: 480px) { + body { + font-size: 14px; + } +} + +@media only screen and (min-width: 768px) { + body { + font-size: 16px; + } +} + +@media print { + * { + background: transparent !important; + color: black !important; + filter: none !important; + -ms-filter: none !important; + } + body { + font-size: 12pt; + max-width: 100%; + } + a, + a:visited { + text-decoration: underline; + } + hr { + height: 1px; + border: 0; + border-bottom: 1px solid black; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + .ir a:after, + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + padding-right: 1em; + page-break-inside: avoid; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + @page :left { + margin: 15mm 20mm 15mm 10mm; + } + @page :right { + margin: 15mm 10mm 15mm 20mm; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } +} \ No newline at end of file diff --git a/templates/thesis.tex b/templates/thesis.tex new file mode 100644 index 0000000..702e065 --- /dev/null +++ b/templates/thesis.tex @@ -0,0 +1,350 @@ +%%% Hlavní soubor. Zde se definují základní parametry a odkazuje se na ostatní části. %%% + +%% Verze pro jednostranný tisk: +% Okraje: levý 40mm, pravý 25mm, horní a dolní 25mm +% (ale pozor, LaTeX si sám přidává 1in) +\documentclass[12pt,a4paper]{report} +\setlength\textwidth{145mm} +\setlength\textheight{247mm} +\setlength\oddsidemargin{15mm} +\setlength\evensidemargin{15mm} +\setlength\topmargin{0mm} +\setlength\headsep{0mm} +\setlength\headheight{0mm} +% \openright zařídí, aby následující text začínal na pravé straně knihy +\let\openright=\clearpage + +\let\sectionnobreak = \section +\makeatletter +\renewcommand{\section}{\@ifstar + \sectionStar% + \sectionNoStar% +} +\makeatother +\newcommand{\sectionNoStar}[1]{ + \pagebreak + \sectionnobreak{#1} +} +\newcommand{\sectionStar}[1]{ + \pagebreak + \sectionnobreak*{#1} + \addcontentsline{toc}{section}{#1} +} + +\makeatletter +\renewcommand{\paragraph}{% + \@startsection{paragraph}{4}% + {\z@}{1.5ex \@plus 1ex \@minus .2ex}{-1em}% + {\normalfont\normalsize\bfseries}% +} +\makeatother + +\usepackage[utf8]{inputenc} + +%% Ostatní balíčky +\usepackage{graphicx} +\usepackage{amsthm} + +\usepackage{upgreek} + +\usepackage{listings} +\usepackage{tikz} +\usetikzlibrary{arrows} +\usepackage{xyling} +\usepackage[hyphens]{url} +\usepackage{microtype} +\usepackage{lmodern} +\usepackage{epstopdf} +\usepackage[printonlyused,nohyperlinks]{acronym} +\usepackage{paralist} +\usepackage{adjustbox} + +\usepackage[center]{caption} + +\usepackage{needspace} + +\lstdefinelanguage{CSharp}[Sharp]{C} +{morekeywords={from,where,join,on,equals,orderby,descending,group,by,let,select},columns=flexible,showstringspaces=false} + +\lstnewenvironment{code}[1][]% +{ + \noindent + \minipage{\linewidth} + \vspace{0.5\baselineskip} + \lstset{#1}} +{\endminipage} + +\newcommand{\lstBreak}{\discretionary{\texttt{-}}{}{}} + +\lstset{language=CSharp,basicstyle=\ttfamily} + +%% Balíček hyperref, kterým jdou vyrábět klikací odkazy v PDF, +%% ale hlavně ho používáme k uložení metadat do PDF (včetně obsahu). +%% POZOR, nezapomeňte vyplnit jméno práce a autora. +\usepackage[unicode]{hyperref} % Musí být za všemi ostatními balíčky +\hypersetup{pdftitle=.NET library for the MediaWiki API} +\hypersetup{pdfauthor=Petr Onderka} + +\usepackage[all]{hypcap} + +%%% Drobné úpravy stylu + +% Tato makra přesvědčují mírně ošklivým trikem LaTeX, aby hlavičky kapitol +% sázel příčetněji a nevynechával nad nimi spoustu místa. Směle ignorujte. +\makeatletter +\def\@makechapterhead#1{ + {\parindent \z@ \raggedright \normalfont + \Huge\bfseries \thechapter. #1 + \par\nobreak + \vskip 20\p@ +}} +\def\@makeschapterhead#1{ + {\parindent \z@ \raggedright \normalfont + \Huge\bfseries #1 + \par\nobreak + \vskip 20\p@ +}} +\makeatother + +% Toto makro definuje kapitolu, která není očíslovaná, ale je uvedena v obsahu. +\def\chapwithtoc#1{ +\chapter*{#1} +\addcontentsline{toc}{chapter}{#1} +} + +\def\secwithtoc#1{ +\sectionnobreak*{#1} +\addcontentsline{toc}{section}{#1} +} + +\newcommand\ApiParameterNoAmp[2]{\texttt{#1}~\texttt{=}~\texttt{#2}} +\newcommand\ApiParameter[2]{\ApiParameterNoAmp{#1}{#2}~\texttt{\&}} + +\begin{document} + +\hypersetup{pageanchor=false} + +% Trochu volnější nastavení dělení slov, než je default. +\lefthyphenmin=2 +\righthyphenmin=2 + +%%% Titulní strana práce + +\pagestyle{empty} +\begin{center} + +\large + +Charles University in Prague + +\medskip + +Faculty of Mathematics and Physics + +\vfill + +{\bf\Large BACHELOR THESIS} + +\vfill + +%\centerline{\mbox{\includegraphics[width=60mm]{img/logo}}} + +\vfill +\vspace{5mm} + +{\LARGE Petr Onderka} + +\vspace{15mm} + +% Název práce přesně podle zadání +{\LARGE\bfseries .NET library for the MediaWiki API} + +\vfill + +% Název katedry nebo ústavu, kde byla práce oficiálně zadána +% (dle Organizační struktury MFF UK) +Department of Theoretical Computer Science \linebreak and Mathematical Logic + +\vfill + +\begin{tabular}{rl} + +Supervisor of the bachelor thesis: & Tomáš Petříček \\ +\noalign{\vspace{2mm}} +Study programme: & Computer Science \\ +\noalign{\vspace{2mm}} +Specialization: & General Computer Science \\ +\end{tabular} + +\vfill + +% Zde doplňte rok +Prague 2012 + +\end{center} + +\newpage + +%%% Následuje vevázaný list -- kopie podepsaného "Zadání bakalářské práce". +%%% Toto zadání NENÍ součástí elektronické verze práce, nescanovat. + +%%% Na tomto místě mohou být napsána případná poděkování (vedoucímu práce, +%%% konzultantovi, tomu, kdo zapůjčil software, literaturu apod.) + +\openright + +\noindent +I would like to thank to my supervisor, Tomáš Petříček, +for his help with writing this thesis. +I would also like to thank to my family for their unending support and patience during my studies. + +\newpage + +%%% Strana s čestným prohlášením k bakalářské práci + +\vglue 0pt plus 1fill + +\noindent +I declare that I carried out this bachelor thesis independently, and only with the cited +sources, literature and other professional sources. + +\medskip\noindent +I understand that my work relates to the rights and obligations under the Act No. +121/2000 Coll., the Copyright Act, as amended, in particular the fact that the Charles +University in Prague has the right to conclude a license agreement on the use of this +work as a school work pursuant to Section 60 paragraph 1 of the Copyright Act. + +\vspace{10mm} + +\hbox{\hbox to 0.5\hsize{% +In Prague, date ............ +\hss}\hbox to 0.5\hsize{% +signature of the author +\hss}} + +\vspace{20mm} +\newpage + +%%% Povinná informační strana bakalářské práce + +\vbox to 0.5\vsize{ +\setlength\parindent{0mm} +\setlength\parskip{5mm} + +Název práce: +.NET knihovna pro MediaWiki API +% přesně dle zadání + +Autor: +Petr Onderka + +Katedra: % Případně Ústav: +Katedra teoretické informatiky a matematické logiky +% dle Organizační struktury MFF UK + +Vedoucí bakalářské práce: +Mgr. Tomáš Petříček, University of Cambridge +% dle Organizační struktury MFF UK, případně plný název pracoviště mimo MFF UK + +Abstrakt: +% abstrakt v rozsahu 80-200 slov; nejedná se však o opis zadání bakalářské práce + +Wiki běžící na systému MediaWiki poskytují svým uživatelům API, +které lze použít k přístupu k dané wiki z počítačového programu. +Toto API je rozsáhlé, často se mění a může se lišit wiki od wiki, +takže může být náročné napsat knihovnu pro přístup k tomuto API. + +Tato práce popisuje LinqToWiki, +knihovnu pro přístup k MediaWiki API ze C\# nebo jiných jazyků na platformě .NET. +Díky použití LINQu a generovaní kódu pomocí Roslynu, +kód napsaný s použitím této knihovny je čitelný, objevitelný, silně typovaný a flexibilní. + +Klíčová slova: Wiki, C\#, LINQ, Generování kódu, Roslyn +% 3 až 5 klíčových slov + +\vss}\nobreak\vbox to 0.49\vsize{ +\setlength\parindent{0mm} +\setlength\parskip{5mm} + +Title: +.NET library for the MediaWiki API +% přesný překlad názvu práce v angličtině + +Author: +Petr Onderka + +Department: +Department of Theoretical Computer Science and Mathematical Logic +% dle Organizační struktury MFF UK v angličtině + +Supervisor: +Mgr. Tomáš Petříček, University of Cambridge +% dle Organizační struktury MFF UK, případně plný název pracoviště +% mimo MFF UK v angličtině + +Abstract: +% abstrakt v rozsahu 80-200 slov v angličtině; nejedná se však o překlad +% zadání bakalářské práce + +MediaWiki wikis provide their users an API, that can used to programmatically access the wiki. +This API is large, changes frequently and can be different from wiki to wiki, +so it can be a challenge to write a library for accessing the API. + +This thesis describes LinqToWiki, a library +that can be used to access the MediaWiki API from C\# or other .NET languages. +Thanks to the use of LINQ and code generation through Roslyn, +code written using this library is readable, discoverable, strongly-typed and flexible. + +Keywords: Wiki, C\#, LINQ, Code generation, Roslyn +% 3 až 5 klíčových slov v angličtině + +\vss} + +\newpage + +%%% Strana s automaticky generovaným obsahem bakalářské práce. U matematických +%%% prací je přípustné, aby seznam tabulek a zkratek, existují-li, byl umístěn +%%% na začátku práce, místo na jejím konci. + +\hypersetup{pageanchor=true} +\openright +\pagestyle{plain} +\setcounter{page}{1} +\tableofcontents + +%%% Jednotlivé kapitoly práce jsou pro přehlednost uloženy v samostatných souborech +\include{introduction} + +\input{problem-analysis} + +\chapter{Background} +\label{background} +\input{mediawiki} +\input{linq} +\input{roslyn} + +\input{mediawiki-improvements} +\input{linqtowiki} +\input{future-work} +\input{related} +\input{conclusion} + +%%% Seznam použité literatury +\input{bibliography} + +%%% Tabulky v bakalářské práci, existují-li. +\listoffigures +\addcontentsline{toc}{chapter}{List of Figures} + +%%% Použité zkratky v bakalářské práci, existují-li, včetně jejich vysvětlení. +\chapwithtoc{List of Abbreviations} +\input{abbrev} + +%%% Přílohy k bakalářské práci, existují-li (různé dodatky jako výpisy programů, +%%% diagramy apod.). Každá příloha musí být alespoň jednou odkazována z vlastního +%%% textu práce. Přílohy se číslují. +\appendix +\input{cd} + +\openright +\end{document} \ No newline at end of file From db2988e3f2f4aa2ba464949ff4e4413626fde8d3 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Tue, 24 Oct 2023 09:21:38 +0100 Subject: [PATCH 055/142] Ch00 update after read through --- content/00_Foreword.md | 306 ++++++++++++++++------------------------- 1 file changed, 121 insertions(+), 185 deletions(-) diff --git a/content/00_Foreword.md b/content/00_Foreword.md index 3ba80fb..2b843b3 100644 --- a/content/00_Foreword.md +++ b/content/00_Foreword.md @@ -1,185 +1,121 @@ ---- -title : Foreword ---- - -#Introduction to Rx {#IntroductiontoRx .ignoreToc .kindleOnly} -##Lee Campbell {.ignoreToc .kindleOnly text-align=center} - ---- - -#Preface {#Preface .SectionHeader} - -Reactive programming is not a new concept. I remember studying my first Event Driven -module for Visual Basic 5 in 2000. Even then the technology (Visual Basic 5) was -already considered somewhat dated. Long before VB5 and the turn of the millennium, -we have seen languages supporting events. Over time languages like Smalltalk, Delphi -and the .NET languages have popularized reactive or event-driven programming paradigms. -This not to say that events are passé: current trends such as CEP (Complex -Event Processing), CQRS (Command Query Responsibility Segregation) and rich immersive -GUIs, all have events as a fundamental part of their makeup. - -The event driven paradigm allows for code to be invoked without the need for breaking -encapsulation or applying expensive polling techniques. This is commonly implemented -with the Observer pattern, events exposed directly in the language (e.g. C#) or -other forms of callback via delegate registration. The Reactive Extensions extend -the callback metaphor with LINQ to enable querying sequences of events and managing -concurrency. - -The Reactive Extensions are effectively a library of implementations of the `IObservable` -and `IObserver` interfaces for .NET, Silverlight and Windows Phone7. -The libraries are also available in JavaScript. As a dynamic language, JavaScript -had no need for the two interfaces so the JavaScript implementation could have been -written long before .NET 4 was released. This book will introduce Rx via C#. Users -of VB.NET, F# and other .NET languages hopefully will be able to extract the concepts -and translate them to their particular language. JavaScript users should be able -to gather the concepts from this book and apply them to their language. JavaScript -users may however find some features are not supported, and some concepts, such -as scheduling do not transcend platforms. - -As Rx is just a library, the team at Microsoft delivering Rx was able to isolate -themselves from the release schedule of the .NET Framework. This proved important -as the libraries saw fairly constant evolution since late 2009 through to their -official release in mid 2011. This evolution has been largely enabled by the openness -of the team and their ability to take onboard criticisms, suggestions and feature -requests from the brave community of pre-release users. - -While Rx is _just a library_, it is a significant and bold move forward for -the team at Microsoft and for any consumers of the library. Rx _will_ change -the way you design and build software for the following reasons: - - * The way that it tackles the Observer pattern is a divorce from .NET events toward a Java-style interface pattern but far more refined. - * The way it tackles concurrency is quite a shift how many .NET developers would have done it before. - * The abundance of (extension) methods in the library. - * The way in which it integrates with LINQ to leverage LINQ's composability & declarative style, makes Rx very usable and discoverable to those already familiar with LINQ and `IEnumerable`. - * The way it can help any .NET developer that works with event driven and/or asynchronous programs. Developers of Rich Clients, Web Clients and Services alike can all benefit from Rx. - * The future plans seem even grander, but that is a different book for some time in the future :-) - -This book aims to teach you: - - * about the new types that Rx will provide - * about the extension methods and how to use them - * how to manage subscriptions to "sequences" of data - * how to visualize "sequences" of data and sketch your solution before coding it - * how to deal with concurrency to your advantage and avoid common pitfalls - * how to compose, aggregate and transform streams - * how to test your Rx code - * some guidance on best practices when using Rx. - -The best way to learn Rx is to use it. Reading the theory from this book will only -help you be familiar with Rx, but will not really enable you to fully understand -Rx. You can download the latest version of Rx from the Microsoft Data Developer -site () -or if you use NuGet you can just download Rx via that. - - -My experience with Rx is straight from the trenches. I worked on a team of exceptional -developers on a project that was an early adopter of Rx (late 2009). The project -was a financial services application that started off life as a Silverlight project -then expanded into an integration project. We used Rx everywhere; client side in -Silverlight 3/4, and server side in .NET 3.5/4.0. We used Rx eagerly and sometimes -too eagerly. We were past leading edge, we were _bleeding_ edge. We were finding -bugs in the early releases and posting proposed fixes to the guys at Microsoft. -We were constantly updating to the latest version. It cost the project to be early -adopters, but in time the payment was worth it. Rx allowed us to massively simplify -an application that was inherently asynchronous, highly concurrent and targeted -low latencies. Similar workflows that I had written in previous projects were pages -of code long; now with Rx were several lines of LINQ. Trying to test asynchronous -code on clients (WPF/Win Forms/Silverlight) was a constant challenge, but Rx solved -that too. Today if you ask a question on the Rx Forums, you will most likely be -answered by someone from that team (or Dave Sexton). - - - -#Acknowledgements {#Acknowledgements} - -I would like to take this quick pause to recognize the people that made this book -possible. First is my poor wife for losing a husband to a dark room for several -months. Her understanding and tolerance is much appreciated. To my old team "Alpha -Alumni"; every developer on that team has helped me in some way to better myself -as a developer. Specific mention goes to -[James Miles](http://enumeratethis.com/), -[Matt Barrett](http://weareadaptive.com/blog/), -[John Marks](http://johnhmarks.wordpress.com/), -Duncan Mole, -Cathal Golden, -[Keith Woods](http://keith-woods.com), -[Ray Booysen](http://nondestructiveme.com) & -[Olivier DeHeurles](http://odeheurles.com/) -for all the deep dive sessions, emails, forum banter, BBM exchanges, lunch breaks -and pub sessions spent trying to get our heads around Rx. To -[Matt Davey](http://mdavey.wordpress.com) -for being brave enough to support us in using Rx back in 2009. -To the team at Microsoft that did the hard work and brought us Rx; -[Jeffrey Van Gogh](http://blogs.msdn.com/b/jeffva/), -[Wes Dyer](http://blogs.msdn.com/b/wesdyer/), -[Erik Meijer](http://www.applied-duality.com/) & -[Bart De Smet](http://blogs.bartdesmet.net/bart/). -Extra special mention to Bart, there is just something about the -[content](http://channel9.msdn.com/Tags/bart+de+smet) that Bart -[produces](http://www.infoq.com/author/Bart-De-Smet) that clicks with me. -Finally to the guys that helped edit the book; -[Joe Albahari](http://www.albahari.com/) -and Gregory Andrien. Joe is a veteran author of books such -as the C# in a nutshell, C# pocket reference and LINQ pocket reference, and managed -to find time to help out on this project while also releasing the latest versions -of these books. For Gregory and I, this was a first for both of us, as editor and -author respectively. Gregory committed many late nights to helping complete this -project. There is also some sweet irony in having a French person as the editor. -Even though English is not his native tongue, he clearly has a better grasp of it -than I. - - -It is my intention that from the experiences both good and bad, I can help speed -up your understanding of Rx and lower that barrier to entry to using Rx. This will -be a progressive step-by-step approach. It may seem slow in places, but the fundamentals -are so important to have a firm grasp on the powerful features. I hope you will -have the patience to join me all the way to the end. - -The content of this book was originally posted as a series of blog posts at -[http://LeeCampbell.blogspot.com](http://leecampbell.blogspot.co.uk/2010/08/reactive-extensions-for-net.html) -and has proved popular enough that I thought it warranted being reproduced as an e-book. -In the spirit of other books such as -Joe Albahari's [Threading in C#](http://www.albahari.com/threading/) -and Scott Chacon's [Pro Git](http://git-scm.com/book) books, and considering -the blog was free, I have made the first version of this book free. - -The version that this book has been written against is the .Net 4.0 targeted Rx -assemblies version 1.0.10621.0 (NuGet: Rx-Main v1.0.11226). - -So, fire up Visual Studio and let's get started. - ---- - -
-

Additional recommended reading

-
-
- - - -
-
- - -
- -
- - - -
-
- - - -
-
- +--- +title : Foreword +--- + +#Introduction to Rx {#IntroductiontoRx .ignoreToc .kindleOnly} +##Ian Griffiths {.ignoreToc .kindleOnly text-align=center} +##Lee Campbell {.ignoreToc .kindleOnly text-align=center} + +--- + +#Preface {#Preface .SectionHeader} + +Reactive programming is not a new concept. Any kind of user interface development +necessary involves code that responds to events. Languages like Smalltalk, Delphi +and the .NET languages have popularized reactive or event-driven programming paradigms. +Architectural patterns such as CEP (Complex Event Processing), and +CQRS (Command Query Responsibility Segregation) have events as a fundamental part +of their makeup. Reactive programming is a useful concept in any program that has +to deal with things happening. + +> Reactive programming is a useful concept in any program that has +to deal with things happening. + +The event driven paradigm allows for code to be invoked without the need for breaking +encapsulation or applying expensive polling techniques. There are many common ways to implement this, including +the Observer pattern, events exposed directly in the language (e.g. C#) or +other forms of callback via delegate registration. The Reactive Extensions extend +the callback metaphor with LINQ to enable querying sequences of events and managing +concurrency. + +The .NET runtime libraries have included the `IObservable` and +`IObserver` interfaces that representing the core concept of reactive programming +for well over a decade now. The Reactive Extensions for .NET are effectively a library of implementations of these +interfaces. Rx.NET implementation first appeared +back in 2010 but since then, Rx libraries have become available for other languages, and this way of programming has become +especially popular in JavaScript. + +This book will introduce Rx via C#. The concepts are universal, so users of other .NET languages +such as VB.NET and F#, will be able to extract the concepts and translate them to their particular +language. + +Rx.NET is just a library, originally created by Microsoft, but now an open source project +supported entirely through community effort. (Rx's current lead maintainer, [Ian Griffiths](https://endjin.com/who-we-are/our-people/ian-griffiths/), +is also the author of the latest revision of this book, and indeed the author of this very +sentence.) + +If you have never used Rx before, it _will_ change the way you design and build software. +It provides a well thought out abstraction for a fundamentally important idea in computing—sequences +of events. These are as important as lists or arrays, but before Rx there was little +direct support in libraries or languages, and what support there was tended to be rather +ad hoc, and built on weak theoretical underpinnings. Rx changes that. The extent to +which this Microsoft invention has been wholehearted adopted by some developer communities +traditionally not especially Microsoft-friendly is a testament to the quality of its +fundamental design. + +This book aims to teach you: + + * about the types that Rx defines + * about the extension methods Rx provides, and how to use them + * how to manage subscriptions to event sources + * how to visualize "sequences" of data and sketch your solution before coding it + * how to deal with concurrency to your advantage and avoid common pitfalls + * how to compose, aggregate and transform streams + * how to test your Rx code + * some common best practices when using Rx + +The best way to learn Rx is to use it. Reading the theory from this book will only +help you be familiar with Rx, but to fully understand it you should build things +with it. So we warmly encourage you to build based on the examples in this book. + + +#Acknowledgements {#Acknowledgements} + +Firstly, I (Ian Griffiths) should make it clear that this revised edition builds +on the excellent work of the original author Lee Campbell. I am grateful that he +generously allowed the Rx.NET project to make use of his content, enabling this +new edition to come into existence. + +I would also like to recognize the people that made this book +possible. Crucial to the first edition of the book, in addition to the author, [Lee Campbell](https://leecampbell.com/), were: +[James Miles](http://enumeratethis.com/), +[Matt Barrett](http://weareadaptive.com/blog/), +[John Marks](http://johnhmarks.wordpress.com/), +Duncan Mole, +Cathal Golden, +[Keith Woods](http://keith-woods.com), +[Ray Booysen](http://nondestructiveme.com) & [Olivier DeHeurles](http://odeheurles.com/), +[Matt Davey](http://mdavey.wordpress.com), [Joe Albahari](http://www.albahari.com/) +and Gregory Andrien. +Extra special thanks to the team at Microsoft that did the hard work and brought us Rx; +[Jeffrey Van Gogh](http://blogs.msdn.com/b/jeffva/), +[Wes Dyer](http://blogs.msdn.com/b/wesdyer/), +[Erik Meijer](http://www.applied-duality.com/) & +[Bart De Smet](http://blogs.bartdesmet.net/bart/). +For this, the second edition of the book, thanks again to Lee Campbell for allowing us to update his content. +Thanks to everyone at [endjin](endjin.com) and especially [Howard van Rooijen](https://endjin.com/who-we-are/our-people/howard-van-rooijen/) and [Matthew Adams](https://endjin.com/who-we-are/our-people/matthew-adams/) +for funding not only the updates to this book, but also the ongoing development of Rx.NET itself. +(And thanks for employing me too!) + +The content of the first edition of this book was originally posted as a series of blog posts at +[http://LeeCampbell.blogspot.com](http://leecampbell.blogspot.co.uk/2010/08/reactive-extensions-for-net.html) +and proved popular enough that Lee reproduced as an e-book. + +The version that this book has been written against is `System.Reactive` version 6.0. + +So, fire up Visual Studio and let's get started. + +--- + +
+

Additional recommended reading

+
+
+ + + +
+
+
\ No newline at end of file From d90262a3f43fe61f0c695b7f8cfa8f5324b47776 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Tue, 24 Oct 2023 09:39:33 +0100 Subject: [PATCH 056/142] Ch01 update after read through --- content/01_WhyRx.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/content/01_WhyRx.md b/content/01_WhyRx.md index 5cec60e..c237463 100644 --- a/content/01_WhyRx.md +++ b/content/01_WhyRx.md @@ -8,7 +8,7 @@ Rx is a .NET library for processing event streams. Why might you want that? ## Why Rx? -Users want timely information. If you're expecting a parcel, live reports of the delivery van's progress give you more freedom than a suspect 2 hour delivery window. Financial applications depend on continuous streams of up-to-date data. We expect our phones and computers to provide us with all sorts of important notifications. And some applications simply can't work without live information—online collaboration tools and multiplayer games absolutely depend on the rapid distribution and delivery of data. +Users want timely information. If you're waiting for a parcel to arrive, live reports of the delivery van's progress give you more freedom than a suspect 2 hour delivery window. Financial applications depend on continuous streams of up-to-date data. We expect our phones and computers to provide us with all sorts of important notifications. And some applications simply can't work without live information—online collaboration tools and multiplayer games absolutely depend on the rapid distribution and delivery of data. In short, our systems need to react when interesting things happen. @@ -20,7 +20,7 @@ The [Reactive Extensions for .NET](https://github.com/dotnet/reactive) (Rx.NET o (A brief grammatical aside: although the phrase "Reactive Extensions" is plural, when we reduce it to just Rx.NET or Rx, we treat it as a singular noun. This is inconsistent, but saying "Rx are..." sounds plain weird.) -For example, C# has integrated query features that we might use to find all of the entries in a list that meet some criteria. If we have some `List trades` variable, we might write this: +For example, C# offers integrated query features that we might use to find all of the entries in a list that meet some criteria. If we have some `List trades` variable, we might write this: ```cs var bigTrades = @@ -28,11 +28,11 @@ var bigTrades = where trade.Volume > 1_000_000; ``` -With Rx, we could use this exact same code with live data. Instead of being a `List`, the `trades` variable could be an `IObservable`. (`IObservable` is the fundamental abstraction in Rx. It is essentially a live version of `IEnumerable`.) In this case, `bigTrades` would also be an `IObservable`, a live data source able to notify us of all trades whose `Volume` exceeds one million. Crucially, it will report each such trade immediately—this is what we mean by a 'live' data source. +With Rx, we could use this exact same code with live data. Instead of being a `List`, the `trades` variable could be an `IObservable`. `IObservable` is the fundamental abstraction in Rx. It is essentially a live version of `IEnumerable`. In this case, `bigTrades` would also be an `IObservable`, a live data source able to notify us of all trades whose `Volume` exceeds one million. Crucially, it can report each such trade immediately—this is what we mean by a 'live' data source. -Rx is a powerfully productive development tool. It enables developers to work with live event streams using language features familiar to all .NET developers. It enables an elegant, declarative approach that often allows us to express complex behaviour more elegantly and with less code than would be possible without Rx. +Rx is a powerfully productive development tool. It enables developers to work with live event streams using language features familiar to all .NET developers. It enables a declarative approach that often allows us to express complex behaviour more elegantly and with less code than would be possible without Rx. -Rx builds on LINQ (Language Integrated Query). This enables us to use the query syntax shown above (or you can use the explicit function call approach that some .NET developers prefer). LINQ is widely used in .NET both for data access (e.g., in Entity Framework Core), but also for working with in-memory collections (with LINQ to Objects), meaning that experienced .NET developers will tend to feel at home with Rx. Crucially, LINQ is a highly composable design: you can connect operators together in any combination you like, expressing potentially complex processing in a straightforward way. +Rx builds on LINQ (Language Integrated Query). This enables us to use the query syntax shown above (or you can use the explicit function call approach that some .NET developers prefer). LINQ is widely used in .NET both for data access (e.g., in Entity Framework Core), but also for working with in-memory collections (with LINQ to Objects), meaning that experienced .NET developers will tend to feel at home with Rx. Crucially, LINQ is a highly composable design: you can connect operators together in any combination you like, expressing potentially complex processing in a straightforward way. This composability arises from the mathematical foundations of its design, but although you can learn about this aspect of LINQ if you want, it's not a prerequisite: developers who aren't interested in the mathematics behind it can just enjoy the fact that LINQ providers such as Rx provide a set of building blocks that can be plugged together in endless different ways, and it all just works. ## When is Rx appropriate? @@ -55,7 +55,7 @@ Rx is also good way to model domain events—these may occur as a result of some - Property or state changes on domain objects such as "Order Status Updated", or "Registration Accepted" - Changes to collections of domain objects, such as "New Registration Created" -Events might also represent insights derived from incoming events and historical data such as: +Events might also represent insights derived from incoming events (or historical data being analyzed at a later date) such as: - A broadband customer might have become an unwitting participant in a DDoS attack - [CNC](https://en.wikipedia.org/wiki/Numerical_control) [Milling Machine](https://en.wikipedia.org/wiki/Milling_(machining)) MFZH12's number 4 axis bearing is exhibiting signs of wear at a significantly higher rate than the nominal profile @@ -92,7 +92,7 @@ By choosing the best tool for the job your code should be easier to maintain, it ## Rx in action -You can get up and running with a simple Rx example very quickly. If you have the .NET SDK installed. Run the following at a command line: +You can get up and running with a simple Rx example very quickly. If you have the .NET SDK installed, you can run the following at a command line: ```ps1 mkdir TryRx @@ -118,4 +118,4 @@ ticks.Subscribe( Console.ReadLine(); ``` -If this doesn't seem very exciting, it's because it's about as basic an example as it's possible to create, and at its heart, Rx has a very simple programming model. The power comes from composition—we can use the building blocks in the `System.Reactive` library to describe the processing that will takes us from raw, low-level events to high-value insights. But to do that, we must first understand [Rx's key types, `IObservable` and `IObserver`](01_WhyRx.md). \ No newline at end of file +If this doesn't seem very exciting, it's because it's about as basic an example as it's possible to create, and at its heart, Rx has a very simple programming model. The power comes from composition—we can use the building blocks in the `System.Reactive` library to describe the processing that will takes us from raw, low-level events to high-value insights. But to do that, we must first understand [Rx's key types, `IObservable` and `IObserver`](02_KeyTypes.md). \ No newline at end of file From 2213553a16a194c2794d3063e376b9d75ad90054 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Tue, 24 Oct 2023 15:50:48 +0100 Subject: [PATCH 057/142] Ch02 updates after read through --- content/02_KeyTypes.md | 134 +++++++++++++++++++++++++++-------------- 1 file changed, 89 insertions(+), 45 deletions(-) diff --git a/content/02_KeyTypes.md b/content/02_KeyTypes.md index c896e3c..f882171 100644 --- a/content/02_KeyTypes.md +++ b/content/02_KeyTypes.md @@ -14,7 +14,7 @@ var bigTrades = where trade.Volume > 1_000_000; ``` -Most .NET developers will be familiar with [LINQ](https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/basic-linq-query-operations) in at least one of its many popular forms such as [LINQ to Objects](https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/linq-to-objects), or [Entity Framework Core queries](https://learn.microsoft.com/en-us/ef/core/querying/). Most LINQ implementations allow you to query _data at rest_—LINQ to Objects works on arrays or other collections; LINQ queries in Entity Framework Core run against data in a database. But Rx is different: it offers the ability to define queries over live event streams—what you might call _data in motion_. +Most .NET developers will be familiar with [LINQ](https://learn.microsoft.com/en-us/dotnet/csharp/linq/) in at least one of its many popular forms such as [LINQ to Objects](https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/linq-to-objects), or [Entity Framework Core queries](https://learn.microsoft.com/en-us/ef/core/querying/). Most LINQ implementations allow you to query _data at rest_—LINQ to Objects works on arrays or other collections; LINQ queries in Entity Framework Core run against data in a database. But Rx is different: it offers the ability to define queries over live event streams—what you might call _data in motion_. If you don't like the query expression syntax, you can write exactly equivalent code by invoking LINQ operators directly: @@ -32,16 +32,14 @@ But let's make it clear what the code means by being explicit about the type: IObservable bigTrades = trades.Where(trade => trade.Volume > 1_000_000); ``` -This removes all ambiguity. It is now clear that we're not dealing with data at rest. We're working with an `IObservable`. But what exactly is that? +This removes the ambiguity. It is now clear that we're not dealing with data at rest. We're working with an `IObservable`. But what exactly is that? ## IObservable -The [`IObservable` interface](https://learn.microsoft.com/en-us/dotnet/api/system.iobservable-1 "IObservable interface - Microsoft Learn") represents Rx's fundamental abstraction: a sequence of values of some type `T`. In a very abstract sense, this means it represents the same thing as `IEnumerable`. The difference is in how code consumes those values. Whereas `IEnumerable` enables code to retrieve values (typically with a `foreach` loop), an `IObservable` provides values when they become available. This distinction is sometimes characterised as _push_ vs _pull_. We can _pull_ values out of an `IEnumerable` by executing a `foreach` loop, but and `IObservable` will _push_ values into our code. +The [`IObservable` interface](https://learn.microsoft.com/en-us/dotnet/api/system.iobservable-1 "IObservable interface - Microsoft Learn") represents Rx's fundamental abstraction: a sequence of values of some type `T`. In a very abstract sense, this means it represents the same thing as [`IEnumerable`](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.ienumerable-1). The difference is in how code consumes those values. Whereas `IEnumerable` enables code to retrieve values (typically with a `foreach` loop), an `IObservable` provides values when they become available. This distinction is sometimes characterised as _push_ vs _pull_. We can _pull_ values out of an `IEnumerable` by executing a `foreach` loop, but an `IObservable` will _push_ values into our code. -How can an `IObservable` push its values into our code? If we want these values, our code must _subscribe_ to the `IObservable`, which means providing it with some methods it can invoke. - -In fact, subscription is the only operation an `IObservable` directly supports. Here's the entire definition of the interface: +How can an `IObservable` push its values into our code? If we want these values, our code must _subscribe_ to the `IObservable`, which means providing it with some methods it can invoke. In fact, subscription is the only operation an `IObservable` directly supports. Here's the entire definition of the interface: ```cs public interface IObservable @@ -68,35 +66,35 @@ That's passing a delegate, and not the `IObserver` that `IObservable.Subsc public static IDisposable Subscribe(this IObservable source, Action onNext) ``` -This is a helper method that wraps a delegate in an implementation of `IObserver` and then passes that to `IObservable.Subscribe`. The effect is that we can write just a simple method (instead of a complete implementation of `IObserver`) and the observable source will invoke our callback each time it wants to supply a value. +This is a helper method that wraps a delegate in an implementation of `IObserver` and then passes that to `IObservable.Subscribe`. The effect is that we can write just a simple method (instead of a complete implementation of `IObserver`) and the observable source will invoke our callback each time it wants to supply a value. It's more common to use this kind of helper than to implement Rx's interfaces ourselves. ### Hot and Cold Sources Since an `IObservable` cannot supply us with values until we subscribe, the time at which we subscribe can be important. Imagine an `IObservable` describing trades occurring in some market. If the information it supplies is live, it's not going to tell you about any trades that occurred before you subscribed. In Rx, sources of this kind are described as being _hot_. -Not all sources are _hot_. There's nothing stopping an `IObservable` always supplying the exact same sequence of events to any subscriber no matter when the call to `Subscribe` occurs. (Imagine an `IObservable` which, instead of reporting live information, generates notifications based on recorded historical trade data.) Sources where it doesn't matter at all when you subscribe are known as _cold_ source. +Not all sources are _hot_. There's nothing stopping an `IObservable` always supplying the exact same sequence of events to any subscriber no matter when the call to `Subscribe` occurs. (Imagine an `IObservable` which, instead of reporting live information, generates notifications based on recorded historical trade data.) Sources where it doesn't matter at all when you subscribe are known as _cold_ sources. Here are some sources that might be represented as hot observables: * Measurements from a sensor * Price ticks from a trading exchange -* An event source that distributes events immediatly such as Azure Event Grid -* mouse movements -* timer events -* broadcasts like ESB channels or UDP network packets. +* An event source that distributes events immediately such as Azure Event Grid +* mouse movements +* timer events +* broadcasts like ESB channels or UDP network packets -And some examples of cold observables: +And some examples of some sources that might make good cold observables: -* An observable representing the contents of a collection (such as is returned by the [`ToObservable` extension method for `IEnumerable`](03_CreatingObservableSequences.md#from-ienumerablet)) -* An observable producing a fixed range of values, such as [`Observable.Range`](03_CreatingObservableSequences.md#observablerange) produces -* An observable that generates events based on an algorithm, such as [`Observable.Generate`](03_CreatingObservableSequences.md#observablegenerate) produces -* An observable representing a factory for an asynchronous operation, as [`FromAsync`](03_CreatingObservableSequences.md#from-task) returns -* An observable of the kind typically created using [`Observable.Create`](03_CreatingObservableSequences.md#observablecreate) -* An observable representing items from a streaming event provides such as Azure Event Hub or Kafka (or any other streaming-style source which holds onto events from the past to be able to deliver events from a particular moment in the stream; so _not_ an events source in the Azure Event Grid style) +* the contents of a collection (such as is returned by the [`ToObservable` extension method for `IEnumerable`](03_CreatingObservableSequences.md#from-ienumerablet)) +* a fixed range of values, such as [`Observable.Range`](03_CreatingObservableSequences.md#observablerange) produces +* events generated based on an algorithm, such as [`Observable.Generate`](03_CreatingObservableSequences.md#observablegenerate) produces +* a factory for an asynchronous operation, such as [`FromAsync`](03_CreatingObservableSequences.md#from-task) returns +* events produced by running conventional code such as a loop; you can create such sources with [`Observable.Create`](03_CreatingObservableSequences.md#observablecreate) +* a streaming event provides such as Azure Event Hub or Kafka (or any other streaming-style source which holds onto events from the past to be able to deliver events from a particular moment in the stream; so _not_ an event source in the Azure Event Grid style) -Not all sources are strictly completely _hot_ or _cold_. For example, you could imagine a slight variation on a live `IObservable` where the source always reports the most recent trade to new subscribers. Subscribers can count on immediately receiving something, and will then be kept up to date as new information arrives. The fact that new subscribers will always receive (potentially quite old) information is a _cold_-like characteristic, but it's only that first event that is _cold_—it's still likely that a brand new subscriber will have missed lots of information that would have been available to earlier subscribers, making this source more _hot_ than _cold_. +Not all sources are strictly completely _hot_ or _cold_. For example, you could imagine a slight variation on a live `IObservable` where the source always reports the most recent trade to new subscribers. Subscribers can count on immediately receiving something, and will then be kept up to date as new information arrives. The fact that new subscribers will always receive (potentially quite old) information is a _cold_-like characteristic, but it's only that first event that is _cold_—it's still likely that a brand new subscriber will have missed lots of information that would have been available to earlier subscribers, making this source more _hot_ than _cold_. -There's an interesting special case in which a source of events has been designed to enable applications to receive every single event in order, exactly once. Event streaming systems such as Kafka or Azure Event Hub have this characteristic—they retain events for a while, to ensure that consumers don't miss out even if they fall behind from time to time. The standard input (_stdin_) for a process also has this characteristic: if you run a command line tool and start typing input before it is ready to process it, the operating system will hold that input in a buffer, to ensure that nothing is lost. Windows does something similar for desktop applications—each application thread gets a message queue so that if you click or type when it's not able to respond, the input will eventually be processed. We might think of these sources as _cold_-then-_host_. They're like _cold_ sources in that we won't miss anything just because it took us some time to start receiving events, but once we start retrieving the data, then we can't generally rewind back to the start. So once we're up and running they are more like _hot_ events. +There's an interesting special case in which a source of events has been designed to enable applications to receive every single event in order, exactly once. Event streaming systems such as Kafka or Azure Event Hub have this characteristic—they retain events for a while, to ensure that consumers don't miss out even if they fall behind from time to time. The standard input (_stdin_) for a process also has this characteristic: if you run a command line tool and start typing input before it is ready to process it, the operating system will hold that input in a buffer, to ensure that nothing is lost. Windows does something similar for desktop applications—each application thread gets a message queue so that if you click or type when it's not able to respond, the input will eventually be processed. We might think of these sources as _cold_-then-_hot_. They're like _cold_ sources in that we won't miss anything just because it took us some time to start receiving events, but once we start retrieving the data, then we can't generally rewind back to the start. So once we're up and running they are more like _hot_ events. This kind of _cold_-then-_hot_ source can present a problem if we want to attach multiple subscribers. If the source starts providing events as soon as subscription occurs, then that's fine for the very first subscriber: it will receive any events that were backed up waiting for us to start. But if we wanted to attach multiple subscribers, we've got a problem: that first subscriber might receive all the notifications that were sitting waiting in some buffer before we manage to attach the second subscriber. The second subscriber will miss out. @@ -118,9 +116,9 @@ Since `IObservable` defines just one method, `Subscribe`, you might be wonder So far I've shown only a very simple LINQ example, using the `Where` operator to filter events down to ones that meet certain criteria. To give you a flavour of how we can build more advanced functionality through composition, I'm going to introduce an example scenario. -Suppose you want to write a program that watches some folder on a filesystem, and performs automatic processing any time something in that folder changes. For example, web developers often want to trigger automatic rebuilds of their client side code when they save changes in the editor so they can quickly see the effect of their changes. Often in these cases, filesystem changes often come in bursts—text editors might perform a few distinct operations when saving a file. (Some save modifications to a new file, then perform a couple of renames once this is complete, because this avoids data loss if a power failure or system crash happens to occur at the moment you save the file.) So you typically won't want to take action as soon as you detect file activity. It would be better to give it a moment to see if any more activity occurs, and take action only after everything has settled down. +Suppose you want to write a program that watches some folder on a filesystem, and performs automatic processing any time something in that folder changes. For example, web developers often want to trigger automatic rebuilds of their client side code when they save changes in the editor so they can quickly see the effect of their changes. Filesystem changes often come in bursts—text editors might perform a few distinct operations when saving a file. (Some save modifications to a new file, then perform a couple of renames once this is complete, because this avoids data loss if a power failure or system crash happens to occur at the moment you save the file.) So you typically won't want to take action as soon as you detect file activity. It would be better to give it a moment to see if any more activity occurs, and take action only after everything has settled down. -So we should not react directly to filesystem activity. We want take action at those moments when everything goes quiet after a flurry of activity. The following code defines an Rx operator that detects and reports such things. If you're new to Rx (which seems likely if you're reading this) it probably won't be instantly obvious how this works, so I'll walk through it. +So we should not react directly to filesystem activity. We want take action at those moments when everything goes quiet after a flurry of activity. The following code defines an Rx operator that detects and reports such things. If you're new to Rx (which seems likely if you're reading this) it probably won't be instantly obvious how this works. This is a significant step up in complexity from the examples I've shown so far because this came from a real application. But I'll walk through it step by step, so all will become clear. ```cs static class RxExt @@ -143,29 +141,62 @@ static class RxExt The first thing to say about this is that we are effectively defining a custom LINQ-style operator: this is an extension method which, like all of the LINQ operators Rx supplies, takes an `IObservable` as its implicit argument, and produces another observable source as its result. The return type is slightly different: it's `IObservable>`. That's because once we return to a state of inactivity, we will want to process everything that just happened, so this operator will produce a list containing every value that the source reported in its most recent flurry of activity. -When we want to show how an Rx operator behaves, we typically draw a 'marble' diagram. This is a diagram showing one or more `IObservable` event sources, with each one being illustrated by a horizontal line. Each event that a source produces is illustrated by a circle (or 'marble') on that line, with the horizontal position representing timing. Typically, the line has a vertical bar on its left indicating the instant at which the source comes into existence, unless it happens to produce events from the very instant it is created, in which case it will start with a marble. If the line has an arrowhead on the right, that indicates that the observable's lifetime extends beyond the diagram. Here's a diagram showing how the `Quiescent` operator above response to a particular input: +When we want to show how an Rx operator behaves, we typically draw a 'marble' diagram. This is a diagram showing one or more `IObservable` event sources, with each one being illustrated by a horizontal line. Each event that a source produces is illustrated by a circle (or 'marble') on that line, with the horizontal position representing timing. Typically, the line has a vertical bar on its left indicating the instant at which the application subscribed to the source, unless it happens to produce events immediately, in which case it will start with a marble. If the line has an arrowhead on the right, that indicates that the observable's lifetime extends beyond the diagram. Here's a diagram showing how the `Quiescent` operator above response to a particular input:
An Rx marble diagram illustrating two observables. The first is labelled 'source', and it shows six events, labelled numerically. These fall into three groups: events 1 and 2 occur close together, and are followed by a gap. Then events 3, 4, and 5 are close together. And then after another gap event 6 occurs, not close to any. The second observable is labelled 'source.Quiescent(TimeSpan.FromSeconds(2), Scheduler.Default). It shows three events. The first is labelled '[1, 2], and its horizontal position shows that it occurs a little bit after the '2' event on the 'source' observable. The second event on the second observable is labelled '[3,4,5]' and occurs a bit after the '5' event on the 'source' observable. The third event from on the second observable is labelled '[6]', and occurs a bit after the '6' event on the 'source' observable. The image conveys the idea that each time the source produces some events and then stops, the second observable will produce an event shortly after the source stops, which will contain a list with all of the events from the source's most recent burst of activity. + alt="An Rx marble diagram illustrating two observables. The first is labelled 'source', and it shows six events, labelled numerically. These fall into three groups: events 1 and 2 occur close together, and are followed by a gap. Then events 3, 4, and 5 are close together. And then after another gap event 6 occurs, not close to any. The second observable is labelled 'source.Quiescent(TimeSpan.FromSeconds(2), Scheduler.Default). It shows three events. The first is labelled '[1, 2], and its horizontal position shows that it occurs a little bit after the '2' event on the 'source' observable. The second event on the second observable is labelled '[3,4,5]' and occurs a bit after the '5' event on the 'source' observable. The third event from on the second observable is labelled '[6]', and occurs a bit after the '6' event on the 'source' observable. The image conveys the idea that each time the source produces some events and then stops, the second observable will produce an event shortly after the source stops, which will contain a list with all of the events from the source's most recent burst of activity."/>
An Rx marble diagram illustrating two observables.
-This shows that the source produced a couple of events (the values `1` and `2`, in this example), and then stopped for a bit. A little while after it stopped, the observable returned by the `Quiescent` operator produced a single event with a list containing both of those events (`[1,2]`). Then the source started up again, producing the values `3`, `4`, and `5` in fairly quick succession, and then going quiet for a bit. Again, once the quiet spell had gone on for long enough, the source returned by `Quiescent` produced a single event containing all of the source events from this second burst of activity (`[3,4,5]`). And then the final bit of source activity shown in this diagram consists of a single event, `6`, followed by more inactivity, and again, once the inactivity has gone on for long enough the `Quiescent` source produces a single event to report this. And since that last 'burst' of activity from the source contained only a single event, the list reported by this final output from the `Quiescent` observable is a list with a single value: `[6]`. +This shows that the source (the top line) produced a couple of events (the values `1` and `2`, in this example), and then stopped for a bit. A little while after it stopped, the observable returned by the `Quiescent` operator (the lower line) produced a single event with a list containing both of those events (`[1,2]`). Then the source started up again, producing the values `3`, `4`, and `5` in fairly quick succession, and then going quiet for a bit. Again, once the quiet spell had gone on for long enough, the source returned by `Quiescent` produced a single event containing all of the source events from this second burst of activity (`[3,4,5]`). And then the final bit of source activity shown in this diagram consists of a single event, `6`, followed by more inactivity, and again, once the inactivity has gone on for long enough the `Quiescent` source produces a single event to report this. And since that last 'burst' of activity from the source contained only a single event, the list reported by this final output from the `Quiescent` observable is a list with a single value: `[6]`. So how does the code shown achieve this? The first thing to notice about the `Quiescent` method is that it's just using other Rx LINQ operators (the `Return`, `Scan`, `Where`, and `Buffer` operators are explicitly visible, and the query expression will be using the `SelectMany` operator, because that's what C# query expressions do when they contain two `from` clauses in a row) in a combination that produces the final `IObservable>` output. This is Rx's _compositional_ approach, and it is how we normally use Rx. We use a mixture of operators, combined (_composed_) in a way that produces the effect we want. -But how is this producing the effect we want? There are a few ways we could get the behaviour that we're looking for from a `Quiescent` operator, but the basic idea of this particular implementation is that it keeps count of how many events have happened recently, and then produces a result every time that number drops back to zero. The `oustanding` variable refers to the `IObservable` that tracks the number of recent events, and this marble diagram shows what it produces in response to the same `source` events as were shown on the preceding diagram: +But how does this particular combination produce the effect we want? There are a few ways we could get the behaviour that we're looking for from a `Quiescent` operator, but the basic idea of this particular implementation is that it keeps count of how many events have happened recently, and then produces a result every time that number drops back to zero. The `oustanding` variable refers to the `IObservable` that tracks the number of recent events, and this marble diagram shows what it produces in response to the same `source` events as were shown on the preceding diagram: -![](GraphicsIntro/Ch02-Quiescent-Marbles-Outstanding.svg) +
+ An Rx marble diagram illustrating two observables. The first is labelled 'source',
+         and it shows the same six events as the preceding figure, labelled numerically, but this
+         time also color-coded so that each event has a different color. As before, these events
+         fall into three groups: events 1 and 2 occur close together, and are followed by a gap.
+         Then events 3, 4, and 5 are close together. And then after another gap event 6 occurs,
+         not close to any. The second observable is labelled 'outstanding' and for each of the
+         events on the 'source' observable, it shows two events. Each such pair has the same
+         color as on the 'source' line; the coloring is just to make it easier to see
+         how events on this line are associated with events on the 'source' line. The first of
+         each pair appears directly below its corresponding event on the 'source' line, and
+         has a number that is always one higher than its immediate precedecessor; the very first
+         item shows a number of 1. The first item from the second pair is the next to appear on
+         this line, and therefore has a number of 2. But then the second item from the first
+         pair appears, and this lowers the number back to 1, and it's followed by the second
+         item from the second pair, which shows 0. Since the second batch of events on the
+         first line appear fairly close together, we see values of 1, 2, 1, 2, 1, and then 0
+         for these. The final event on the first line, labelled 6, has a corresponding pair
+         on the second line reporting values of 1 and then 0. The overall effect is that
+         each value on the second, 'outstanding' line tells us how many items have emerged
+         from the 'source' line in the last 2 seconds. +
How the Quiescent operator counts the number of outstanding events.
+
-I've colour coded the events this time so that I can show the relationship between `source` events and corresponding events produced by `outstanding`. Each time `source` produces an event, `oustanding` produces an event at the same time, in which the value is one higher than the preceding value produced by `outstanding`. But each such `source` event also causes `outstanding` to produce a second event two seconds later. (It's two seconds because in these examples, I've presumed that the first argument to `Quiescent` is `TimeSpan.FromSeconds(2)`, as shown on the first marble diagram.) That second event always produces a value that is one lower than whatever the preceding value was. +I've colour coded the events this time so that I can show the relationship between `source` events and corresponding events produced by `outstanding`. Each time `source` produces an event, `outstanding` produces an event at the same time, in which the value is one higher than the preceding value produced by `outstanding`. But each such `source` event also causes `outstanding` to produce another event two seconds later. (It's two seconds because in these examples, I've presumed that the first argument to `Quiescent` is `TimeSpan.FromSeconds(2)`, as shown on the first marble diagram.) That second event always produces a value that is one lower than whatever the preceding value was. This means that each event to emerge from `outstanding` tells us how many events `source` produced within the last two seconds. This diagram shows that same information in a slightly different form—it shows the most recent value produced by `outstanding` as a graph. You can see the value goes up by one each time `source` produces a new value. And two seconds after each value produced by `source`, it drops back down by one. -![](GraphicsIntro/Ch02-Quiescent-Marbles-Outstanding-Value.svg) +
+ An Rx marble diagram illustrating the 'source' observables, and the second
+         observable from the preceding diagram this time illustrated as a bar graph showing
+         the latest value. This makes it easier to see that the 'outstanding' value goes up
+         each time a new value emerges from 'source', and then goes down again two seconds
+         later, and that when values emerge close together this running total goes higher.
+         It also makes it clear that the value drops to zero between the 'bursts' of
+         activity. +
The number of outstanding events as a graph.
+
In simple cases like the final event `6`, in which it's the only event that happens at around that time, the `outstanding` value goes up by one when the event happens, and drops down again two seconds later. Over on the left of the picture it's a little more complex: we get two events in fairly quick succession, so the `outstanding` value goes up to one and then up to two, before falling back down to one and then down to zero again. The middle section looks a little more messy—the count goes up by one when the `source` produces event `3`, and then up to two when event `4` comes in. It then drops down to one again once two seconds have passed since the `3` event, but then another event, `5`, comes in taking the total back up to two. Shortly after that it drops back to one again because it has now been two seconds since the `4` event happened. And then a bit later, two seconds after the `5` event it drops back to zero again. @@ -183,7 +214,20 @@ I said Rx is all about composition, and that's certainly the case here. We are u Although this produces a brand new `IObservable` for each `source` event, the `from` clause shown above is part of a query expression of the form `from ... from .. select`, which the C# compiler turns into a call to `SelectMany`, which has the effect of flattening those all back into a single observable, which is what the `onoffs` variable refers to. This marble diagram illustrates that: -![](GraphicsIntro/Ch02-Quiescent-Marbles-On-Offs.svg) +
+ Several Rx marble diagrams, starting with the 'source' observable from earlier figures,
+         followed by one labelled with the LINQ query expression in the preceding example,
+         which shows 6 separate marble diagrams, one for each of the elements produced by
+         'source'. Each consists of two events: one with value 1, positioned directly beneath
+         the corresponding event on 'source' to indicate that they happen simultaneously, and
+         then one with the value -1 two seconds later. Beneath this is a marble diagram labelled
+         'onoffs' which contains all the same events from the preceding 6 diagrams, but merged
+         into a single sequence. These are all colour coded ot make it easier to see how these
+         events correspond to the original events on 'source'. Finally, we have the 'outstanding'
+         marble diagram which is exactly the same as in the preceding figure. +
The number of outstanding events as a graph.
+
This also shows the `outstanding` observable again, but we can now see where that comes from: it is just the running total of the values emitted by the `onoffs` observable. This running total observable is created with this code: @@ -191,7 +235,7 @@ This also shows the `outstanding` observable again, but we can now see where tha IObservable outstanding = onoffs.Scan(0, (total, delta) => total + delta); ``` -Rx's `Scan` operator works much like the standard LINQ [`Aggregate`](https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/aggregation-operations) operator, in that it cumulatively applies an operation (adding, in this case) to every single item in a sequence. The different is that whereas `Aggregate` produces just the final result once it reaches the end of the sequence, `Scan` shows all of its working, producing the accumulated value so far after each input. So this means that `outstanding` will produce an event every time `onoffs` produces one, and that event's value will be the running total—the sum total of every value from `onoffs` so far. +Rx's `Scan` operator works much like the standard LINQ [`Aggregate`](https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/aggregation-operations) operator, in that it cumulatively applies an operation (addition, in this case) to every single item in a sequence. The different is that whereas `Aggregate` produces just the final result once it reaches the end of the sequence, `Scan` shows all of its working, producing the accumulated value so far after each input. So this means that `outstanding` will produce an event every time `onoffs` produces one, and that event's value will be the running total—the sum total of every value from `onoffs` so far. So that's how `outstanding` comes to tell us how many events `source` produced within the last two seconds (or whatever `minimumActivityPeriod` has been specified). @@ -199,7 +243,7 @@ The final piece of the puzzle is how we go from the `zeroCrossings` (which produ (One last detail, just in case you saw it and were wondering, is that this method requires an `IScheduler`. This is an Rx abstraction for dealing with timing and concurrency. We need it because we need to be able to generate events after a one second delay, and that sort of time-driven activity requires a scheduler.) -We'll get into all of these operators, and the workings of schedulers, in more detail in later chapters. For now, the key point is that we typically use Rx by creating a combination of LINQ operators that process and combine `IObservable` sources to define the logic that we require. +We'll get into all of these operators and the workings of schedulers in more detail in later chapters. For now, the key point is that we typically use Rx by creating a combination of LINQ operators that process and combine `IObservable` sources to define the logic that we require. Notice that nothing in that example actually called the one and only method that `IObservable` defines (`Subscribe`). There will always be something somewhere that ultimately consumes the events, but most of the work of using Rx tends to entail declaratively defining the `IObservable`s we need. @@ -239,7 +283,7 @@ Now that we've seen why `IObservable` needs to exist, we need to look at its ## IObserver -Earlier, I showed the definition of `IObservable`. As you saw, it has just one method, `Subscribe`. And this method takes just one argument, of type [`IObserver`](https://learn.microsoft.com/en-us/dotnet/api/system.iobserver-1). So if you want to observe the events that an `IObservable` has to offer, you must supply it with an `IObserver`. In the examples so far, we've just supplied a simple callback, and Rx has wrapped that in an implementation of `IObserver` for us, but to use Rx effectively you need to understand `IObserver`. It is not a complex interface: +Earlier, I showed the definition of `IObservable`. As you saw, it has just one method, `Subscribe`. And this method takes just one argument, of type [`IObserver`](https://learn.microsoft.com/en-us/dotnet/api/system.iobserver-1). So if you want to observe the events that an `IObservable` has to offer, you must supply it with an `IObserver`. In the examples so far, we've just supplied a simple callback, and Rx has wrapped that in an implementation of `IObserver` for us, but even though this is very often the way we will receive notifications in practice, you still need to understand `IObserver` to use Rx effectively. It is not a complex interface: ```cs public interface IObserver @@ -298,7 +342,7 @@ To see what that means, think about what happens when you iterate over an `IEnum * `MoveNext` could throw an exception * `MoveNext` could return `false` to indicate that you've reached the end of the collection -These three outcomes correspond precisely to the three method defined by `IObserver`. We could describe these in slightly more abstract terms: +These three outcomes correspond precisely to the three methods defined by `IObserver`. We could describe these in slightly more abstract terms: * Here's another item * It has all gone wrong @@ -334,7 +378,7 @@ public static void WrongOnErrorAndOnCompleted(IObserver obs) obs.OnNext(1); obs.OnError(new ArgumentException("A connected series of statements was not supplied")); - // This next call is against the rule because we reported an error, and you're not + // This next call is against the rules because we reported an error, and you're not // allowed to make any further calls after you did that. obs.OnCompleted(); } @@ -353,9 +397,9 @@ public static void WrongOnCompletedAndOnError(IObserver obs) These correspond in a pretty straightforward way to things we already know about `IEnumerable`: * `WrongOnError`: if an enumerator throws from `MoveNext`, it's done and you mustn't call `MoveNext` again, so you won't be getting any more items out of it -* `WrongOnCompleted`: If an enumerator returns `false` from `MoveNext`, it's done and you mustn't call `MoveNext` again, so you won't be getting any more items out of it -* `WrongOnErrorAndOnCompleted` If an enumerator throws from `MoveNext`, that means its done, it's done and you mustn't call `MoveNext` again, meaning it won't have any opportunity to tell that it's done by returning `false` from `MoveNext` -* `WrongOnCompletedAndOnError` If an enumerator returns `false` from `MoveNext`, it's done and you mustn't call `MoveNext` again, meaning it won't have any opportunity to also throw an exception +* `WrongOnCompleted`: if an enumerator returns `false` from `MoveNext`, it's done and you mustn't call `MoveNext` again, so you won't be getting any more items out of it +* `WrongOnErrorAndOnCompleted`: if an enumerator throws from `MoveNext`, that means its done, it's done and you mustn't call `MoveNext` again, meaning it won't have any opportunity to tell that it's done by returning `false` from `MoveNext` +* `WrongOnCompletedAndOnError`: if an enumerator returns `false` from `MoveNext`, it's done and you mustn't call `MoveNext` again, meaning it won't have any opportunity to also throw an exception Because `IObservable` is push-based, the onus for obeying all of these rules fall on the observable source. With `IEnumerable`, which is pull-based, it's up to the code using the `IEnumerator` (e.g. a `foreach` loop) to obey these rules. But they are essentially the same rules. @@ -368,7 +412,7 @@ public static void EverythingEverywhereAllAtOnce(IEnumerable obs) for (int i = 0; i < 10000; ++i) { int v = r.Next(); - Task.Run(() => obs.OnNext(v)); + Task.Run(() => obs.OnNext(v)); // Against the rules! }} ``` @@ -485,9 +529,9 @@ This can be a surprisingly tricky problem to solve. Suppose `GoUntilStopped` _di Our `GoUntilStopped.Stop` method needs to wait for `OnNext` to return before calling `OnCompleted`. But notice that the `OnNext` method can't return until our `Stop` method returns. We've managed to create a deadlock with single-threaded code! -In this case it's not all that hard to fix: we could modify `Stop` so it just sets the `running` field to `false`, and then move the call to `OnComplete` into the `Go` method, after the `for` loop. But more generally this can be a hard problem to fix, and it's one of the reasons for using the `System.Reactive` library instead of just attempting to implement `IObservable` and `IObserver` directly. Rx has general purpose mechanisms for solving exactly this kind of problem. (We'll see these when we look at [Scheduling](15_SchedulingAndThreading.md).) Moreover, all of the implementations Rx provides take advantage of these mechanisms for you. If you're using Rx by composing its built-in operators in a declarative way, you never have to think about these rules, because all of Rx's operators obey the rules. +In this case it's not all that hard to fix: we could modify `Stop` so it just sets the `running` field to `false`, and then move the call to `OnComplete` into the `Go` method, after the `for` loop. But more generally this can be a hard problem to fix, and it's one of the reasons for using the `System.Reactive` library instead of just attempting to implement `IObservable` and `IObserver` directly. Rx has general purpose mechanisms for solving exactly this kind of problem. (We'll see these when we look at [Scheduling](11_SchedulingAndThreading.md).) Moreover, all of the implementations Rx provides take advantage of these mechanisms for you. If you're using Rx by composing its built-in operators in a declarative way, you never have to think about these rules, because all of Rx's operators obey the rules. -So as long as you're using Rx to build the observable sources you need, you get to depend on these rules in your callbacks that receive the events, but it's mostly Rx's problem to keep to the rules. So the main effect of these rules is that it makes life simpler for code that consumes events. +So as long as you're using Rx to build the observable sources you need, you get to depend on these rules in your callbacks that receive the events, and it's mostly Rx's problem to keep to the rules. So the main effect of these rules is that it makes life simpler for code that consumes events. These rules are sometimes expressed as a _grammar_. For example, consider this regular expression: @@ -505,7 +549,7 @@ So you might argue that this is a slightly better way to describe the rules form (OnNext)*(OnError|OnComplete)? ``` -More subtly, observable sources are allowed to do nothing at all. In fact there's a built-in implementation to save developers from the effort of writing a source that does nothing: if you call `Observable.Never()` it will return an `IObservable`, and if you subscribe to that, it will never call any methods on your observer. This might not look immediately useful—it is logically equivalent to an `IEnumerable` in which the enumerator's `MoveNext` method never returns. That might not be usefully distinguishable from crashing. It's slightly different with Rx, because when we model this "no items emerge ever" behaviour, we don't need to block a thread forever to do it. We can just decide never to call any methods on the observer. This may seem daft, but as you've seen with the `Quiescent` example, sometimes we create observable sources not because we want the actual items that emerge from it, but because we're interested in the instants when interesting things happen. It can sometimes be useful to be able to model "nothing interesting ever happens" cases. +More subtly, observable sources are allowed to do nothing at all. In fact there's a built-in implementation to save developers from the effort of writing a source that does nothing: if you call `Observable.Never()` it will return an `IObservable`, and if you subscribe to that, it will never call any methods on your observer. This might not look immediately useful—it is logically equivalent to an `IEnumerable` in which the enumerator's `MoveNext` method never returns, which might not be usefully distinguishable from crashing. It's slightly different with Rx, because when we model this "no items emerge ever" behaviour, we don't need to block a thread forever to do it. We can just decide never to call any methods on the observer. This may seem daft, but as you've seen with the `Quiescent` example, sometimes we create observable sources not because we want the actual items that emerge from it, but because we're interested in the instants when interesting things happen. It can sometimes be useful to be able to model "nothing interesting ever happens" cases. We're not quite done with the Rx's rules, but the last one applies only when we choose to unsubscribe from a source before it comes to a natural end. @@ -557,7 +601,7 @@ In short, if you unsubscribe, then a source is not obliged to tell you when thin ### Subscription Lifetime and Composition -We typically combine multiple LINQ operators to express our processing requirements in Rx. What does this mean for subscription lifetime. +We typically combine multiple LINQ operators to express our processing requirements in Rx. What does this mean for subscription lifetime? For example, consider this: @@ -578,6 +622,6 @@ In short, completion bubbles up from the source, through all the operators, and What if we unsubscribe early by calling `subscription.Dispose()`? In that case it all happens the other way round—the `subscription` returned by `filtered.Subscribe` is the first to know that we're unsubscribing, but it will then call `Dispose` on the object that was returned when it called `source.Subscribe` for us. -Either way, everything from the source to the observer, including any operators that were sitting in between, gets shut down in either case. +Either way, everything from the source to the observer, including any operators that were sitting in between, gets shut down. Now that we understand the relationship between an `IObservable` source and the `IObserver` interface that received event notifications, we can look at how we might create an `IObservable` instance to represent events of interest in our application. \ No newline at end of file From c21653afc6ff994985992b566045a97b65dd3d9b Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Tue, 24 Oct 2023 17:32:40 +0100 Subject: [PATCH 058/142] Ch03 partial read through --- content/03_CreatingObservableSequences.md | 54 ++++++++++++----------- content/11_SchedulingAndThreading.md | 2 +- 2 files changed, 30 insertions(+), 26 deletions(-) diff --git a/content/03_CreatingObservableSequences.md b/content/03_CreatingObservableSequences.md index bb9c2c4..72c3620 100644 --- a/content/03_CreatingObservableSequences.md +++ b/content/03_CreatingObservableSequences.md @@ -48,7 +48,7 @@ Although `MySequenceOfNumbers` is technically a correct implementation of `IObse ## Representing Filesystem Events in Rx -Let's look at something a little more realistic. This is a wrapper around .NET's `FileSystemWatcher`, presenting filesystem change notifications as an `IObservable`. (Note: this is not necessarily the best design for an Rx `FileSystemWatcher` wrapper. The watcher provides events for several different types of change, and one of them, `Renamed`, provides details as an `RenamedEventArgs`. That derives from `FileSystemEventArgs` so collapsing everything down to a single event stream does work, but this would be inconvenient for applications that wanted access to the details of rename events. A more serious design problem is that this is incapable of reporting more than one event from `FileSystemWatcher.Error`. Such errors might be transient and recoverable, in which case an application might want to continue operating, but since this class chooses to represent everything with a single `IObservable`, it reports errors by invoking the observer's `OnError`, at which point the rules of Rx oblige us to stop. It would be possible to work around this with Rx's `Retry` operator, which can automatically resubscribe after an error, but it might be better to offer a separate `IObservable` so that we can report errors in a non-terminating way. However, the additional complication of that won't always be warranted—the simplicity of this design means it will be a good fit for some applications. As is often the way with software design, there isn't a one-size-fits-all approach.) +Let's look at something a little more realistic. This is a wrapper around .NET's `FileSystemWatcher`, presenting filesystem change notifications as an `IObservable`. (Note: this is not necessarily the best design for an Rx `FileSystemWatcher` wrapper. The watcher provides events for several different types of change, and one of them, `Renamed`, provides details as a `RenamedEventArgs`. This derives from `FileSystemEventArgs` so collapsing everything down to a single event stream does work, but this would be inconvenient for applications that wanted access to the details of rename events. A more serious design problem is that this is incapable of reporting more than one event from `FileSystemWatcher.Error`. Such errors might be transient and recoverable, in which case an application might want to continue operating, but since this class chooses to represent everything with a single `IObservable`, it reports errors by invoking the observer's `OnError`, at which point the rules of Rx oblige us to stop. It would be possible to work around this with Rx's `Retry` operator, which can automatically resubscribe after an error, but it might be better to offer a separate `IObservable` so that we can report errors in a non-terminating way. However, the additional complication of that won't always be warranted—the simplicity of this design means it will be a good fit for some applications. As is often the way with software design, there isn't a one-size-fits-all approach.) ```cs // Represents filesystem changes as an Rx observable sequence. @@ -120,7 +120,7 @@ public class RxFsEvents : IObservable { lock (sync) { - // Maybe the FileSystemWatcher can report multiple errors, but + // The FileSystemWatcher might report multiple errors, but // we're only allowed to report one to IObservable. if (onErrorAlreadyCalled) { @@ -266,9 +266,9 @@ public class RxFsEventsMultiSubscriber : IObservable This creates only a single `FileSystemWatcher` instance no matter how many times `Subscribe` is called. Notice that I've had to introduce a nested class to provide the `IDisposable` that `Subscribe` returns. I didn't need that with the very first `IObservable` implementation in this chapter because it had already completed the sequence before returning, so it was able to return the `Disposable.Empty` property conveniently supplied by Rx. (This is handy in cases where you're obliged to supply an `IDisposable`, but you don't actually need to do anything when disposed.) And in my first `FileSystemWatcher` wrapper, `RxFsEvents`, I just returned the `FileSystemWatcher` itself from `Dispose`. (This works because `FileSystemWatcher.Dispose` shuts down the watcher, and each subscriber was given its own `FileSystemWatcher`.) But now that a single `FileSystemWatcher` supports multiple observers, we need to do a little more work when an observer unsubscribes. -One a `Subscription` instance that we returned from `Subscribe` gets disposed, it removes itself from the list of subscribers, ensuring that it won't receive any more notifications. It also sets the `FileSystemWatcher`'s `EnableRaisingEvents` to false if there are no more subscribers, ensuring that this source does not do unnecessary work if nothing needs notifications right now. +When a `Subscription` instance that we returned from `Subscribe` gets disposed, it removes itself from the list of subscribers, ensuring that it won't receive any more notifications. It also sets the `FileSystemWatcher`'s `EnableRaisingEvents` to false if there are no more subscribers, ensuring that this source does not do unnecessary work if nothing needs notifications right now. -This is looking more realistic than the first example. This is truly a source of events that could occur at any moment (making this exactly the sort of thing Rx does well) and it now handles multiple subscribers intelligently. However, we wouldn't often write things this way. We're doing all the work ourselves here—this code doesn't even require a reference to the `System.Reactive` package because the only Rx types it refers to are `IObservable` and `IObserver`, both of which are built into the .NET runtime libraries. In practice we typically defer to helpers in `System.Reactive` because they can do a lot of work for us. +This is looking more realistic than the first example. This is truly a source of events that could occur at any moment (making this exactly the sort of thing well suited to Rx) and it now handles multiple subscribers intelligently. However, we wouldn't often write things this way. We're doing all the work ourselves here—this code doesn't even require a reference to the `System.Reactive` package because the only Rx types it refers to are `IObservable` and `IObserver`, both of which are built into the .NET runtime libraries. In practice we typically defer to helpers in `System.Reactive` because they can do a lot of work for us. For example, suppose we only cared about `Changed` events. We could write just this: @@ -340,31 +340,33 @@ Due to the large number of methods available for creating observable sequences, One of the simplest factory methods is `Observable.Return(T value)`, which you've already seen in the `Quiescent` example in the preceding chapter. This method takes a value of type `T` and returns an `IObservable` which will produce this single value and then complete. In a sense, this _wraps_ a value in an `IObservable`; it's conceptually similar to writing `new T[] { value }`, in that it's a sequence containing just one element. ```csharp -var singleValue = Observable.Return("Value"); +IObservable singleValue = Observable.Return("Value"); ``` I specified the type parameter for clarity, but this is not necessary as the compiler can inferred the type from argument provided: ```csharp -var singleValue = Observable.Return("Value"); +IObservable singleValue = Observable.Return("Value"); ``` +`Return` produces a cold observable: each subscriber will receive the value immediately upon subscription. + ### Observable.Empty Sometimes it can be useful to have an empty sequence. .NET's `Enumerable.Empty()` does this for `IEnumerable`, and Rx has a direct equivalent in the form of `Observable.Empty()`, which returns an empty `IObservable`. We need to provide the type argument because there's no value from which the compiler can infer the type. ```csharp -var empty = Observable.Empty(); +IObservable empty = Observable.Empty(); ``` -In practice, an empty sequence is one that immediately provides an `OnCompleted` notification to any subscriber. +In practice, an empty sequence is one that immediately calls `OnCompleted` on any subscriber. ### Observable.Never The `Observable.Never()` method returns a sequence which, like `Empty`, does not produce any values, but unlike `Empty`, it never ends. In practice, that means that it never invokes any method (neither `OnNext`, `OnCompleted`, nor `OnError`) on subscribers. Whereas `Observable.Empty()` completes immediately, `Observable.Never` has infinite duration. ```csharp -var never = Observable.Never(); +IObservable never = Observable.Never(); ``` It might not seem obvious why this could be useful. It tends to be used in places where we use observables to represent time-based information. Sometimes we don't actually care what emerges from an observable; we might care only _when_ something (anything) happens. For example, in the preceding chapter, the `Quiescent` example used the `Buffer` operator, which works over two observable sequences: the first contains the items of interest, and the second is used purely to determine how to cut the first into chunks. `Buffer` doesn't do anything with the values produced by the second observable: it pays attention only to _when_ value emerge, completing the previous chunk each time the second observable produces a value. And if we're representing temporal information it can sometimes be useful to have a way to represent the idea that some event never occurs. @@ -374,7 +376,7 @@ It might not seem obvious why this could be useful. It tends to be used in place `Observable.Throw(Exception)` returns a sequence that immediately reports an error to any subscriber. As with `Empty` and `Never`, we don't supply a value to this method (just an exception) so we need to provide a type parameter so that it knows what `T` to use in the `IObservable` that it returns. (It will never actually a produce a `T`, but you can't have an instance of `IObservable` without picking some particular type for `T`.) ```csharp -var throws = Observable.Throw(new Exception()); +IObservable throws = Observable.Throw(new Exception()); // Behaviorally equivalent to var subject = new ReplaySubject(); subject.OnError(new Exception()); @@ -395,7 +397,7 @@ public static IObservable Create( {...} ``` -You provide this with a delegate that will be executed anytime a subscription is made. Your delegate will be passed an `IObserver`. Logically speaking, this represents the observer passed to the `Subscribe` method, although in practice Rx puts a wrapper around that for various reasons. You can call the `OnNext`/`OnError`/`OnCompleted` methods as you need. This is one of the few scenarios where you will work directly with the `IObserver` interface. Here's a simple example that produces two items: +You provide this with a delegate that will be executed each time a subscription is made. Your delegate will be passed an `IObserver`. Logically speaking, this represents the observer passed to the `Subscribe` method, although in practice Rx puts a wrapper around that for various reasons. You can call the `OnNext`/`OnError`/`OnCompleted` methods as you need. This is one of the few scenarios where you will work directly with the `IObserver` interface. Here's a simple example that produces two items: ```csharp private IObservable SomeLetters() @@ -440,13 +442,13 @@ This illustrates how cancellation won't necessarily take effect immediately. The Bearing in mind that cancellation might have been requested while we were waiting for `ReadKey` to return, you might think we should check for that after `ReadKey` returns and before calling `OnNext`. In fact it doesn't matter if we don't, because Rx ensures that you can't break the rule that says an observable source must not call into an observer after a call to `Dispose` on that observer's subscription returns. This is one reason why the `IObserver` it passes to you is a wrapper: if you continue to call methods on that `IObserver` after a request to unsubscribe, Rx just ignores the calls. This means there are two important things to be aware of: if you _do_ ignore attempts to unsubscribe and continue to do work to produce items, you are just wasting time because nothing will receive those items; if you call `OnError` it's possible that nothing is listening and that the error will be completely ignored. -There are overloads of `Create` designed to support `async` methods. This methods exploits this to be able to the asynchronous `ReadLineAsync` method to present lines of text from a file as an observable source. +There are overloads of `Create` designed to support `async` methods. This next method exploits this to be able to use the asynchronous `ReadLineAsync` method to present lines of text from a file as an observable source. ```cs IObservable ReadFileLines(string path) => Observable.Create(async (observer, cancellationToken) => { - using (var reader = File.OpenText(path)) + using (StreamReader reader = File.OpenText(path)) { while (cancellationToken.IsCancellationRequested) { @@ -466,7 +468,7 @@ IObservable ReadFileLines(string path) => Reading data from a storage device typically doesn't happen instantaneously (unless it happens to be in the filesystem cache already), so this source will provide data as quickly as it can be read from storage. -Notice that because this is an `async` method, it will typically return to its caller before it completes. (The first `await` that actually has to wait returns, and the remainder of the method runs via a callback when the work completes.) That means that subscribers will typically be in possession of the `IDisposable` representing their subscription before this method returns, so we're using a different mechanism to handle unsubscription here. This particular overload of `Create` passes its callback not just an `IObserver` but also a `CancellationToken`, with which it will request cancellation when unsubscription occurs. +Notice that because this is an `async` method, it will typically return to its caller before it completes. (The first `await` that actually has to wait returns, and the remainder of the method runs via a callback when the work completes.) That means that subscribers will typically be in possession of the `IDisposable` representing their subscription before this method finishes, so we're using a different mechanism to handle unsubscription here. This particular overload of `Create` passes its callback not just an `IObserver` but also a `CancellationToken`, with which it will request cancellation when unsubscription occurs. File IO can encounter errors. The file we're looking for might not exist, or we might be unable to open it due to security restrictions, or because some other application is using it. The file might be on a remote storage server, and we could lose network connectivity. For this reason, we must expect exceptions from such code. This example has done nothing to detect exceptions, and yet the `IObservable` that this `ReadFileLines` method returns will in fact report any exceptions that occur. This is because the `Create` method will catch any exception that emerges from our callback and report it with `OnError`. (If our code already called `OnComplete` on the observer, Rx won't call `OnError` because that would violate the rules. Instead it will silently drop the exception, so it's best not to attempt to do any work after you call `OnCompleted`.) @@ -597,8 +599,8 @@ The creation methods we've looked at so far are straightforward in that they eit `Observable.Range(int, int)` returns an `IObservable` that produces a range of integers. The first integer is the initial value and the second is the number of values to yield. This example will write the values '10' through to '24' and then complete. -```csharp -var range = Observable.Range(10, 15); +```cs +IObservable range = Observable.Range(10, 15); range.Subscribe(Console.WriteLine, () => Console.WriteLine("Completed")); ``` @@ -620,7 +622,7 @@ IObservable Range(int start, int count) => }); ``` -This will work, but it does not respect request to unsubscribe. That won't cause direct harm, because Rx detects unsubscription, and will simply ignore any further values we produce. However, it's a waste of CPU time (and therefore energy, with consequent battery lifetime and/or environmental impact) to carry on generating numbers after nobody is listening. How bad that is depends on how long a range was requested. But imagine you wanted an infinite sequence? Perhaps it's useful to you to have an `IObservable` that produces value from the Fibonacci sequence, or prime numbers. How would you write that with `Create`? You'd certainly want some means of handling unsubscription in that case. We need our callback to return if we're to be notified of unsubscription (or we need to supply an `async` method, which doesn't really seem suitable here). +This will work, but it does not respect request to unsubscribe. That won't cause direct harm, because Rx detects unsubscription, and will simply ignore any further values we produce. However, it's a waste of CPU time (and therefore energy, with consequent battery lifetime and/or environmental impact) to carry on generating numbers after nobody is listening. How bad that is depends on how long a range was requested. But imagine you wanted an infinite sequence? Perhaps it's useful to you to have an `IObservable` that produces value from the Fibonacci sequence, or prime numbers. How would you write that with `Create`? You'd certainly want some means of handling unsubscription in that case. We need our callback to return if we are to be notified of unsubscription (or we could supply an `async` method, but that doesn't really seem suitable here). There's a different approach that can work better here: `Observable.Generate`. The simple version of `Observable.Generate` takes the following parameters: @@ -671,7 +673,7 @@ Most of the methods we've looked at so far have returned sequences that produce As we'll see, operators that schedule their work do so through an abstraction called a _scheduler_. If you don't specify one, they will pick a default scheduler, but sometimes the timer mechanism is significant. For example, there are timers that integrate with UI frameworks, delivering notifications on the same thread that mouse clicks and other input are delivered on, and we might want Rx's time-based operators to use these. For testing purposes it can be useful to virtualize timings, so we can verify what happens in timing-sensitive code without necessarily waiting for tests to execute in real time. -Schedulers are a complex subject that is out of scope for this chapter, but they are covered in detail in the later chapter on [Scheduling and threading](15_SchedulingAndThreading.html). +Schedulers are a complex subject that is out of scope for this chapter, but they are covered in detail in the later chapter on [Scheduling and threading](11_SchedulingAndThreading.md). There are three ways of producing timed events. @@ -704,7 +706,7 @@ Once subscribed, you must dispose of your subscription to stop the sequence, bec ### Observable.Timer -The second factory method for producing constant time based sequences is `Observable.Timer`. It has several overloads; the first of which we will look at being very simple. The most basic overload of `Observable.Timer` takes just a `TimeSpan` as `Observable.Interval` does. The `Observable.Timer` will however only publish one value (0) after the period of time has elapsed, and then it will complete. +The second factory method for producing constant time based sequences is `Observable.Timer`. It has several overloads. The most basic one takes just a `TimeSpan` as `Observable.Interval` does. The `Observable.Timer` will however only publish one value (the number 0) after the period of time has elapsed, and then it will complete. ```cs var timer = Observable.Timer(TimeSpan.FromSeconds(1)); @@ -722,16 +724,16 @@ completed Alternatively, you can provide a `DateTimeOffset` for the `dueTime` parameter. This will produce the value 0 and complete at the specified time. -A further set of overloads adds a `TimeSpan` that indicates the period to produce subsequent values. This now allows us to produce infinite sequences. It also shows how `Observable.Interval` is really just a special case of `Observable.Timer`—`Interval` could be implemented like this: +A further set of overloads adds a `TimeSpan` that indicates the period at which to produce subsequent values. This allows us to produce infinite sequences. It also shows how `Observable.Interval` is really just a special case of `Observable.Timer`—`Interval` could be implemented like this: -```csharp +```cs public static IObservable Interval(TimeSpan period) { return Observable.Timer(period, period); } ``` -While `Observable.Interval` would always wait the given period before producing the first value, this `Observable.Timer` overload gives the ability to start the sequence when you choose. With `Observable.Timer` you can write the following to have an interval sequence that starts immediately. +While `Observable.Interval` will always wait the given period before producing the first value, this `Observable.Timer` overload gives the ability to start the sequence when you choose. With `Observable.Timer` you can write the following to have an interval sequence that starts immediately. ```csharp Observable.Timer(TimeSpan.Zero, period); @@ -752,9 +754,9 @@ public static IObservable Generate( Func timeSelector) ``` -Using this overload, and specifically the extra `timeSelector` argument, we can produce our own implementation of `Observable.Timer` (and as you've already seen, this in turn would enable us to write our own `Observable.Interval`). +The extra `timeSelector` argument lets us tell `Generate` when to produce the next item. We can use this to write our own implementation of `Observable.Timer` (and as you've already seen, this in turn enables us to write our own `Observable.Interval`). -```csharp +```cs public static IObservable Timer(TimeSpan dueTime) { return Observable.Generate( @@ -786,7 +788,9 @@ public static IObservable Interval(TimeSpan period) } ``` -This shows how you can use `Observable.Generate` to produce infinite sequences. I will leave it up to you the reader, as an exercise using `Observable.Generate`, to produce values at variable rates. I find using these methods invaluable not only in day to day work but especially for producing dummy data for test purposes. +This shows how you can use `Observable.Generate` to produce infinite sequences. I will leave it up to you the reader, as an exercise using `Observable.Generate`, to produce values at variable rates. + +TODO: read through to here ## Adapting Common Type to IObservable<T> diff --git a/content/11_SchedulingAndThreading.md b/content/11_SchedulingAndThreading.md index 7d00097..958c6b3 100644 --- a/content/11_SchedulingAndThreading.md +++ b/content/11_SchedulingAndThreading.md @@ -624,7 +624,7 @@ Observable .Subscribe(Customers.Add); ``` -Rx also offers `SubscribeOnDispatcher()` and `ObserveOnDispatcher()` extension methods to `IObservable`, that automatically use the current thread's `Dispatcher` (and equivalents for `CoreDispatcher`). While these might be slightly more convenient they can make it harder to test your code. We explain why in the [Testing Rx](16_TestingRx.html) chapter. +Rx also offers `SubscribeOnDispatcher()` and `ObserveOnDispatcher()` extension methods to `IObservable`, that automatically use the current thread's `Dispatcher` (and equivalents for `CoreDispatcher`). While these might be slightly more convenient they can make it harder to test your code. We explain why in the [Testing Rx](16_TestingRx.md) chapter. ## Concurrency pitfalls From b94119a0fd4d7d2c3f8e468b997fe4f729acbd09 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Mon, 30 Oct 2023 15:37:03 +0000 Subject: [PATCH 059/142] Ch03 partial read through --- content/03_CreatingObservableSequences.md | 28 +++++++++++------------ 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/content/03_CreatingObservableSequences.md b/content/03_CreatingObservableSequences.md index 72c3620..e3a386d 100644 --- a/content/03_CreatingObservableSequences.md +++ b/content/03_CreatingObservableSequences.md @@ -790,15 +790,13 @@ public static IObservable Interval(TimeSpan period) This shows how you can use `Observable.Generate` to produce infinite sequences. I will leave it up to you the reader, as an exercise using `Observable.Generate`, to produce values at variable rates. -TODO: read through to here - ## Adapting Common Type to IObservable<T> Although we've now seen two very general ways to produce arbitrary sequences—`Create` and `Generate`—what if you already have an existing source of information in some other form that you'd like to make available as an `IObservable`? Rx provides a few adapters for common source types. ### From delegates -The `Observable.Start` method allows you to turn a long running `Func` or `Action` into a single value observable sequence. By default, the processing will be done asynchronously on a ThreadPool thread. If the overload you use is a `Func` then the return type will be `IObservable`. When the function returns its value, that value will be published and then the sequence completed. If you use the overload that takes an `Action`, then the returned sequence will be of type `IObservable`. The `Unit` type is represents the absence of information, so it's somewhat analogous to `void`, except you can have an instance of the `Unit` type. It's particularly useful in Rx because we often care only about when something has happened, and there might not be any information besides timing. In these cases, we often use an `IObservable` so that it's possible to produce definite events even though there's no meaningful data in them. (The name comes from the world of functional programming, where this kind of construct is used a lot.) In this case `Unit` is used to publish an acknowledgement that the `Action` is complete, because an `Action` does not return any information. The `Unit` type itself has no value; it just serves as an empty payload for the `OnNext` notification. Below is an example of using both overloads. +The `Observable.Start` method allows you to turn a long running `Func` or `Action` into a single value observable sequence. By default, the processing will be done asynchronously on a ThreadPool thread. If the overload you use is a `Func` then the return type will be `IObservable`. When the function returns its value, that value will be published and then the sequence completed. If you use the overload that takes an `Action`, then the returned sequence will be of type `IObservable`. The `Unit` type represents the absence of information, so it's somewhat analogous to `void`, except you can have an instance of the `Unit` type. It's particularly useful in Rx because we often care only about when something has happened, and there might not be any information besides timing. In these cases, we often use an `IObservable` so that it's possible to produce definite events even though there's no meaningful data in them. (The name comes from the world of functional programming, where this kind of construct is used a lot.) In this case, `Unit` is used to publish an acknowledgement that the `Action` is complete, because an `Action` does not return any information. The `Unit` type itself has no value; it just serves as an empty payload for the `OnNext` notification. Below is an example of using both overloads. ```csharp static void StartAction() @@ -837,13 +835,13 @@ static void StartFunc() } ``` -Note the difference between `Observable.Start` and `Observable.Return`. `Start` invokes our callback only upon subscription, so it is an example of a 'lazy' operation. Conversely, `Return` requires us to supply the value up front. +Note the difference between `Observable.Start` and `Observable.Return`. The `Start` method invokes our callback only upon subscription, so it is an example of a 'lazy' operation. Conversely, `Return` requires us to supply the value up front. -The observable returned by `Start` may seem to have a superficial resemblance to `Task` or `Task` (depending on whether you use the `Action` or `Func` overload). Each represents work that may take some time before eventually completing, perhaps producing a result. However, there's a significant difference: `Start` doesn't begin the work until you subscribe to it. And it will re-execute the callback every time you subscribe to it. So it is more like a factory for a task-like entity. +The observable returned by `Start` may seem to have a superficial resemblance to `Task` or `Task` (depending on whether you use the `Action` or `Func` overload). Each represents work that may take some time before eventually completing, perhaps producing a result. However, there's a significant difference: `Start` doesn't begin the work until you subscribe to it. Moreover, it will re-execute the callback every time you subscribe to it. So it is more like a factory for a task-like entity. ### From events -As we discussed early in the book, .NET has a model for events that is baked into its type system. This predates Rx (not least because Rx wasn't feasible until .NET got generics in .NET 2.0) so it's common for types to support events but not Rx. To be able to integrate with the existing event model, Rx provides methods to take an event and turn it into an observable sequence. I showed this briefly in the file system watcher example earlier, but let's look in a bit more detail. There are several different varieties you can use. This show the most succinct form: +As we discussed early in the book, .NET has a model for events that is baked into its type system. This predates Rx (not least because Rx wasn't feasible until .NET got generics in .NET 2.0) so it's common for types to support events but not Rx. To be able to integrate with the existing event model, Rx provides methods to take an event and turn it into an observable sequence. I showed this briefly in the file system watcher example earlier, but let's examine this in a bit more detail. There are several different varieties you can use. This show the most succinct form: ```cs FileSystemWatcher watcher = new (@"c:\temp"); @@ -851,11 +849,11 @@ IObservable> changeEvents = Observable .FromEventPattern(watcher, nameof(watcher.Changed)); ``` -If you have an object that provides an event you can use this overload of `FromEventPattern`, passing in the object and the name of the event that you'd like to use with Rx. There are a few problems with this. +If you have an object that provides an event, you can use this overload of `FromEventPattern`, passing in the object and the name of the event that you'd like to use with Rx. Although this is the simplest way to adapt events into Rx's world, it has a few problems. Firstly, why do I need to pass the event name as a string? Identifying members with strings is an error-prone technique—the compiler won't notice if there's a mismatch between the first and second argument (e.g., if I passed the arguments `(somethingElse, nameof(watcher.Changed))` by mistake). Couldn't I just pass `watcher.Changed` itself? Unfortunately not—this is an example of the issue I mentioned in the first chapter: .NET events are not first class citizens. We can't use them in the way we can use other objects or values. For example, we can't pass an event as an argument to a method. In fact the only thing you can do with a .NET event is attach and remove event handlers. If I want to get some other method to attach handlers to the event of my choosing (e.g., here I want Rx to handle the events), then the only way to do that is to specify the event's name so that the method (`FromEventPattern`) can then use reflection to attach its own handlers. -This is a problem for some deployment scenarios. It is increasingly common in .NET to do extra work at build time to optimize runtime behaviour, and reliance on reflection can compromise these techniques. For example, instead of relying on Just In Time (JIT) compilation of code, we might use Ahead of time (AoT) mechanisms. .NET's Ready to Run (R2R) system enables you to include pre-compiled code targeting specific CPU types alongside the normal IL, avoiding having to wait for .NET to compile the IL into runnable code. This can have a significant effect on startup times, making it an important technique both in client side applications, where it can fix problems where applications are sluggish when they first start up, and also in server-side applications, especially in cloud environments where code may be moved from one compute node to another fairly frequently, making it important to minimize cold start costs. There are also scenarios where JIT compilation is not even an option, in which case AoT compilation isn't simply an optimization: it's the only means by which code can run at all. +This is a problem for some deployment scenarios. It is increasingly common in .NET to do extra work at build time to optimize runtime behaviour, and reliance on reflection can compromise these techniques. For example, instead of relying on Just In Time (JIT) compilation of code, we might use Ahead of time (AoT) mechanisms. .NET's Ready to Run (R2R) system enables you to include pre-compiled code targeting specific CPU types alongside the normal IL, avoiding having to wait for .NET to compile the IL into runnable code. This can have a significant effect on startup times, making it an important technique both in client side applications, where it can fix problems where applications are sluggish when they first start up. It can also be important in server-side applications, especially in cloud environments where code may be moved from one compute node to another fairly frequently, making it important to minimize cold start costs. There are also scenarios where JIT compilation is not even an option, in which case AoT compilation isn't merely an optimization: it's the only means by which code can run at all. The problem with reflection is that it makes it difficult for the build tools to work out what code will execute at runtime. When they inspect this call to `FromEventPattern` they will just see arguments of type `object` and `string`. It's not self-evident that this is going to result in reflection-driven calls to the `add` and `remove` methods for `FileSystemWatcher.Changed` at runtime. There are attributes that can be used to provide hints, but there are limits to how well these can work. Sometimes the build tools will be unable to determine what code would need to be AoT compiled to enable this method to execute without relying on runtime JIT. @@ -874,7 +872,7 @@ This is code that AoT and trimming tools can understand easily. We've written me The downside is that this is a pretty cumbersome bit of code to write. If you've not already bought into the idea of using Rx, this might well be enough to make you think "I'll just stick with ordinary .NET events, thanks. But the cumbersome nature is a symptom of what is wrong with .NET events. We wouldn't have had to write anything so ugly if events had been first class citizens in the first place. -Not only has that second-class status meant we couldn't just pass the event itself as an argument, it has also meant that we've had to state type arguments explicitly. The relationship between an event's delegate type (`FileSystemEventHandler` in this example) and its event argument type (`FileSystemEventArgs` here) is, in general, not something that C#'s type inference can determine automatically, which is why we've had to specify both types explicitly. (Events that use the generic `EventHandler` type are more amenable to type inference, and can use a slightly less verbose version of `FromEventPattern`. Unfortunately, relatively few events actually use that. Some events provide information besides the fact that something just happened, and use the base `EventHandler` type, and for those kinds of events, you can in fact omit the type arguments completely, making the code slightly less ugly. You still need to provide the add and remove callbacks though.) +Not only has that second-class status meant we couldn't just pass the event itself as an argument, it has also meant that we've had to state type arguments explicitly. The relationship between an event's delegate type (`FileSystemEventHandler` in this example) and its event argument type (`FileSystemEventArgs` here) is, in general, not something that C#'s type inference can determine automatically, which is why we've had to specify both types explicitly. (Events that use the generic `EventHandler` type are more amenable to type inference, and can use a slightly less verbose version of `FromEventPattern`. Unfortunately, relatively few events actually use that. Some events provide no information besides the fact that something just happened, and use the base `EventHandler` type, and for those kinds of events, you can in fact omit the type arguments completely, making the code slightly less ugly. You still need to provide the add and remove callbacks though.) Notice that the return type of `FromEventPattern` in this example is `IObservable>`. The `EventPattern` type encapsulates the information that the event passes to handlers. Most .NET events follow a common pattern in which handler methods take two arguments: an `object sender`, which just tells you which object raised the event (useful if you attach one event handler to multiple objects) and then a second argument of some type derived from `EventArgs` that provides information about the event. `EventPattern` just packages these two arguments into a single object that offers `Sender` and `EventArgs` properties. In cases where you don't in fact want to attach one handler to multiple sources, you only really need that `EventArgs` property, which is why the earlier `FileSystemWatcher` examples went on to extract that just that, to get a simpler result of type `IObservable`. It did this with the `Select` operator, which we'll get to in more detail later: @@ -886,9 +884,9 @@ It is very common to want to expose property changed events as observable sequen ### From Task -The `Task` and `Task` types are very widely used in .NET. Widely used .NET languages have built-in support for working with them (e.g., C#'s `async` and `await` keywords). There's some conceptual overlap between tasks an `IObservable`: both represent some sort of work that might take a while to complete. There is a sense in which an `IObservable` is a generalization of a `Task`—both represent potentially long-running work, but an `IObservable` can produce multiple results whereas `Task` can produce just one. +The `Task` and `Task` types are very widely used in .NET. Mainstream .NET languages have built-in support for working with them (e.g., C#'s `async` and `await` keywords). There's some conceptual overlap between tasks an `IObservable`: both represent some sort of work that might take a while to complete. There is a sense in which an `IObservable` is a generalization of a `Task`—both represent potentially long-running work, but an `IObservable` can produce multiple results whereas `Task` can produce just one. -Since `IObservable` is the more general abstraction, we should be able to represent a `Task` as an `IObservable`. And Rx defines various extension methods for `Task` and `Task` to do this. These methods are all called `ToObservable()`, and it offers various overloads offering control of the details where required, and simplicity for the most common scenarios. +Since `IObservable` is the more general abstraction, we should be able to represent a `Task` as an `IObservable`. Rx defines various extension methods for `Task` and `Task` to do this. These methods are all called `ToObservable()`, and it offers various overloads offering control of the details where required, and simplicity for the most common scenarios. Although they are conceptually similar, `Task` does a few things differently in the details. For example, you can retrieve its [`Status` property](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task.status), which might report that it is in a cancelled or faulted state. `IObservable` doesn't provide a way to ask a source for its state; it just tells you things. So `ToObservable` makes some decisions about how to present status in a way that makes makes sense in an Rx world: @@ -898,7 +896,7 @@ Although they are conceptually similar, `Task` does a few things differently It does not matter whether the task is already in a final state at the moment that you call `ToObservable`. If it has finished, `ToObservable` will just return a sequence representing that state. (In fact, it uses either the `Return` or `Throw` creation methods you saw earlier.) If the task has not yet finished, `ToObservable` will attach a continuation to the task to detect the outcome once it does complete. -Tasks come in two forms: `Task`, which produces a result, and `Task`, which does not. But in Rx, there is only `IObservable`—there isn't a no-result form. We've already seen this problem once before, when the `Observable.Start` method needed to be able to [adapt a delegate as an `IObservable`](#from-delegates) even when the delegate was an `Action` that produced no result. The solution was to return an `IObservable`, and that's also exactly what you get when you call `ToObservable` on a `Task`. +Tasks come in two forms: `Task`, which produces a result, and `Task`, which does not. But in Rx, there is only `IObservable`—there isn't a no-result form. We've already seen this problem once before, when the `Observable.Start` method needed to be able to [adapt a delegate as an `IObservable`](#from-delegates) even when the delegate was an `Action` that produced no result. The solution was to return an `IObservable`, and that's also exactly what you get when you call `ToObservable` on a plain `Task`. The extension method is simple to use: @@ -927,7 +925,7 @@ Test completed ``` -Notice that even with two subscribers, the task runs only once. That shouldn't be surprising since we only created a single task. If the task has not yet finished, then all subscribers will receive the result when it does. If the task has finished, the `IObservable` effectively becomes a single-value cold observable. But there's a different way to wrap a task: `Observable.FromAsync`. +Notice that even with two subscribers, the task runs only once. That shouldn't be surprising since we only created a single task. If the task has not yet finished, then all subscribers will receive the result when it does. If the task has finished, the `IObservable` effectively becomes a single-value cold observable. #### One Task per subscription @@ -941,7 +939,7 @@ IObservable source = Observable.FromAsync(() => Task.Run(() => })); ``` -I get slightly different output now when subscribing twice: +Subscribing twice to this produces slightly different output: ``` Task running... @@ -967,6 +965,8 @@ IObservable source = Observable.FromAsync(async () => There is a subtle difference with this though. When I used `Task.Run` the lambda ran on a task pool thread from the start. But when I write it this way, the lambda will begin to run on whatever thread calls `Subscribe`. It's only when it hits the first `await` that it returns (and the call to `Subscribe` will then return), with the remainder of the method running on the thread pool. +TODO: read through to here. + ### From IEnumerable<T> Rx defines another extension method called `ToObservable`, this time for `IEnumerable`. In earlier chapters I described how `IObservable` was designed to represent the same basic abstraction as `IEnumerable`, with the only difference being the mechanism we use to obtain the elements in the sequence: with `IEnumerable`, we write code that _pulls_ values out of the collection (e.g., a `foreach` loop), whereas `IObservable` _pushes_ values to us by invoking `OnNext` on our `IObserver`. From d2296374a63f2fe82bdcf5ede424d56e8c8e5310 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Mon, 30 Oct 2023 18:32:59 +0000 Subject: [PATCH 060/142] Ch03 completed read-through --- content/03_CreatingObservableSequences.md | 29 +++++++++++------------ 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/content/03_CreatingObservableSequences.md b/content/03_CreatingObservableSequences.md index e3a386d..64418a8 100644 --- a/content/03_CreatingObservableSequences.md +++ b/content/03_CreatingObservableSequences.md @@ -965,8 +965,6 @@ IObservable source = Observable.FromAsync(async () => There is a subtle difference with this though. When I used `Task.Run` the lambda ran on a task pool thread from the start. But when I write it this way, the lambda will begin to run on whatever thread calls `Subscribe`. It's only when it hits the first `await` that it returns (and the call to `Subscribe` will then return), with the remainder of the method running on the thread pool. -TODO: read through to here. - ### From IEnumerable<T> Rx defines another extension method called `ToObservable`, this time for `IEnumerable`. In earlier chapters I described how `IObservable` was designed to represent the same basic abstraction as `IEnumerable`, with the only difference being the mechanism we use to obtain the elements in the sequence: with `IEnumerable`, we write code that _pulls_ values out of the collection (e.g., a `foreach` loop), whereas `IObservable` _pushes_ values to us by invoking `OnNext` on our `IObserver`. @@ -992,7 +990,7 @@ public static IObservable ToObservableOversimplified(this IEnumerable s } ``` -This crude implementation conveys the basic idea, but it is naive. It does not attempt to handle unsubscription, and it's not easy to fix that when using `Observable.Create` for this particular scenario. And as we will see later in the book, it does not have a very nice concurrency model. The implementation that Rx supplies does of course cater for all of these tricky details. That makes it rather more complex, but that's Rx's problem; you can think of it as being logically equivalent to the code shown above, but without the shortcomings. +This crude implementation conveys the basic idea, but it is naive. It does not attempt to handle unsubscription, and it's not easy to fix that when using `Observable.Create` for this particular scenario. And as we will see later in the book, Rx sources that might try to deliver large numbers of events in quick succession should integrated with Rx's concurrency model. The implementation that Rx supplies does of course cater for all of these tricky details. That makes it rather more complex, but that's Rx's problem; you can think of it as being logically equivalent to the code shown above, but without the shortcomings. When transitioning from `IEnumerable` to `IObservable`, you should carefully consider what you are really trying to achieve. Consider that the blocking synchronous (pull) nature of `IEnumerable` does always not mix well with the asynchronous (push) nature of `IObservable`. As soon as something subscribes to an `IObservable` created in this way, it is effectively asking to iterate over the `IEnumerable`, immediately producing all of the values. The call to `Subscribe` might not return until it has reached the end of the `IEnumerable`, making it similar to the very simple example shown [at the start of this chapter](#a-very-basic-iobservablet-implementation). (I say "might" because as we'll see when we get to schedulers, the exact behaviour depends on the context.) `ToObservable` can't work magic—something somewhere has to execute what amounts to a `foreach` loop. @@ -1002,7 +1000,7 @@ So although this can be a convenient way to bring sequences of data into an Rx w Rx provides support for the ancient [.NET Asynchronous Programming Model (APM)](https://learn.microsoft.com/en-us/dotnet/standard/asynchronous-programming-patterns/asynchronous-programming-model-apm). Back in .NET 1.0, this was the only pattern for representing asynchronous operations. It was superseded in 2010 when .NET 4.0 introduced the [Task-based Asynchronous Pattern (TAP)](https://learn.microsoft.com/en-us/dotnet/standard/asynchronous-programming-patterns/task-based-asynchronous-pattern-tap). The old APM offers no benefits over the TAP. Moreover, C#'s `async` and `await` keywords (and equivalents in other .NET languages) only support the TAP, meaning that the APM is best avoided. However, the TAP was fairly new back in 2011 when Rx 1.0 was released, so it offered adapters for presenting an APM implementation as an `IObservable`. -Nobody should be using the APM today, but for completeness (and just in case you have to use an ancient library that only offers the APM) I will provide a very brief explanation. +Nobody should be using the APM today, but for completeness (and just in case you have to use an ancient library that only offers the APM) I will provide a very brief explanation of Rx's support for it. The result of the call to `Observable.FromAsyncPattern` does _not_ return an observable sequence. It returns a delegate that returns an observable sequence. (So it is essentially a factory factory) The signature for this delegate will match the generic arguments of the call to `FromAsyncPattern`, except that the return type will be wrapped in an observable sequence. The following example wraps the `Stream` class's `BeginRead`/`EndRead` methods (which are an implementation of the APM). @@ -1025,7 +1023,7 @@ bytesReadStream.Subscribe(byteCount => ## Subjects -So far, this chapter has explored various factory methods that return `IObservable` implementations. There is another way though: `System.Reactive` defines various types that implement `IObservable` that we can instantiate directly. But how do we determine what values these types produce? We're able to do that because they also implement `IObserver`. +So far, this chapter has explored various factory methods that return `IObservable` implementations. There is another way though: `System.Reactive` defines various types that implement `IObservable` that we can instantiate directly. But how do we determine what values these types produce? We're able to do that because they also implement `IObserver`, enabling us to push values into them, and those very same values we push in will be the ones seen by observers. Types that implement both `IObservable` and `IObserver` are called _subjects_ in Rx. There's an an `ISubject` to represent this. (This is in the `System.Reactive` NuGet package, unlike `IObservable` and `IObserver`, which are both built into the .NET runtime libraries.) `ISubject` looks like this: @@ -1045,15 +1043,15 @@ public interface ISubject : IObserver, IObserv As you can see the `ISubject` interfaces don't define any members of their own. They just inherit from `IObserver` and `IObservable`—these interfaces are nothing more than a direct expression of the fact that a subject is both an observer and an observable. -But what is this for? You can think of the `IObserver` and the `IObservable` as the 'reader' and 'writer' or, 'consumer' and 'publisher' interfaces respectively. A subject, then is both a reader and a writer, a consumer and a publisher. Data flows both into and out of a subject. +But what is this for? You can think of `IObserver` and the `IObservable` as the 'consumer' and 'publisher' interfaces respectively. A subject, then is both a consumer and a publisher. Data flows both into and out of a subject. -Rx offers a few subject implementations that can occasionally be useful in code that wants to make an `IObservable` available. Although `Observable.Create` is usually the preferred way to do this, there's one important case where a subject might make more sense: if you have some code that discovers events of interest (e.g., by using the client API for some messaging technology) and wants to make them available through an `IObservable`, subjects can sometimes provide a more convenient way to to this than wither `Observable.Create` or a custom implementation. +Rx offers a few subject implementations that can occasionally be useful in code that wants to make an `IObservable` available. Although `Observable.Create` is usually the preferred way to do this, there's one important case where a subject might make more sense: if you have some code that discovers events of interest (e.g., by using the client API for some messaging technology) and wants to make them available through an `IObservable`, subjects can sometimes provide a more convenient way to to this than with `Observable.Create` or a custom implementation. Rx offers a few subject types. We'll start with the most straightforward one to understand. ### Subject -The `Subject` type immediately forwards any calls to `IObserver` methods on to all of the observers currently subscribed to it. This example shows its basic operation: +The `Subject` type immediately forwards any calls made to its `IObserver` methods on to all of the observers currently subscribed to it. This example shows its basic operation: ```cs Subject s = new(); @@ -1177,11 +1175,11 @@ Sub1: 4 Sub2: 4 ``` -Alternatively, you can specify a time-based limit by passing a `TimeSpan to the `ReplaySubject` constructor. +Alternatively, you can specify a time-based limit by passing a `TimeSpan` to the `ReplaySubject` constructor. ## BehaviorSubject -Like `ReplaySubject`, `BehaviorSubject` also has a memory, but it remembers exactly one value. However, it's not quite the same as a `ReplaySubject` with a buffer size of 1, because a `ReplaySubject` starts off in a state where it has nothing in its memory. But `BehaviorSubject` always remembers _exactly_ one item. How can that work before we've made our first call to `OnNext`? `BehaviorSubject` enforces this by requiring us to supply the initial value when we construct it. +Like `ReplaySubject`, `BehaviorSubject` also has a memory, but it remembers exactly one value. However, it's not quite the same as a `ReplaySubject` with a buffer size of 1. Whereas a `ReplaySubject` starts off in a state where it has nothing in its memory, `BehaviorSubject` always remembers _exactly_ one item. How can that work before we've made our first call to `OnNext`? `BehaviorSubject` enforces this by requiring us to supply the initial value when we construct it. So you can think of `BehaviorSubject` as a subject that _always_ has a value available. If you subscribe to a `BehaviorSubject` it will instantly produce a single value. (It may then go on to produce more values, but it always produces one right away.) As it happens, it also makes that value available through a property called `Value`, so you don't need to subscribe an `IObserver` to it just to retrieve the value. @@ -1191,8 +1189,6 @@ This analogy falls down slightly when it comes to completion. If you call `OnCom Similarly, if you call `OnError`, all current observers will receive an `OnError` call, and any subsequent subscribers will also receive nothing but an `OnError` call. -backing fields to properties. - ## AsyncSubject `AsyncSubject` provides all observers with the final value it receives. Since it can't know which is the final value until `OnCompleted` is called, it will not invoke any methods on any of its subscribers until either its `OnCompleted` or `OnError` method is called. (If `OnError` is called, it just forwards that to all current and future subscribers.) @@ -1237,13 +1233,15 @@ Finally it is worth making you aware that you can also create a subject via a fa ```csharp //Creates a subject from the specified observer used to publish messages to the subject // and observable used to subscribe to messages sent from the subject -public static ISubject>TSource, TResult< Create>TSource, TResult<( +public static ISubject Create( IObserver observer, IObservable observable) {...} ``` -Subjects provide a convenient way to poke around Rx, and are occasionally useful in production scenarios, but they are not recommended for most cases. An explanation is in the [Usage Guidelines](18_UsageGuidelines.md) in the appendix. Instead of using subjects, favour the factory methods shown earlier in this chapter.. +Note that unlike all of the other subjects just discussed, this creates a subject where there is no inherent relationship between the input and the output. This just takes whatever `IObserver` and `IObserver` implementations you supply and wraps them up in a single object. All calls made to the subject's `IObserver` methods will be passed directly to the observer you supplied. If you want values to emerge to subscribers to the corresponding `IObservable`, it's up to you to make that happen. This really combines the two objects you supply with the absolute minimum of glue. + +Subjects provide a convenient way to poke around Rx, and are occasionally useful in production scenarios, but they are not recommended for most cases. An explanation is in the [Usage Guidelines appendix](C_UsageGuidelines.md). Instead of using subjects, favour the factory methods shown earlier in this chapter.. ## Summary @@ -1257,12 +1255,13 @@ As a quick recap: - Observable.Never - Observable.Throw - Observable.Create + - Observable.Defer - Generative methods - Observable.Range + - Observable.Generate - Observable.Interval - Observable.Timer - - Observable.Generate - Adaptation - Observable.Start From a42efd8c37cc3c1931c021b251a517fa973ecf58 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Tue, 31 Oct 2023 08:47:35 +0000 Subject: [PATCH 061/142] Update Part2 after read through Also moved some notes to Part3, to deal with when I reach that part. --- build/intro-to-rx.docx | Bin 0 -> 464034 bytes build/intro-to-rx.epub | Bin 0 -> 504382 bytes build/intro-to-rx.pdf | Bin 0 -> 1519085 bytes content/04_Part2.md | 85 +++-------------------------------------- content/10_Part3.md | 27 ++++++++++++- 5 files changed, 32 insertions(+), 80 deletions(-) create mode 100644 build/intro-to-rx.docx create mode 100644 build/intro-to-rx.epub create mode 100644 build/intro-to-rx.pdf diff --git a/build/intro-to-rx.docx b/build/intro-to-rx.docx new file mode 100644 index 0000000000000000000000000000000000000000..7161f90b8c8c0393886ddecc0fe2a8722b784fa3 GIT binary patch literal 464034 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
7+)V|B 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 GERBB&ChHS1T)O{@S9UYrV}4pRJo) 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⁡=EVVS+(Jgca(t4wXVMpVfqbA2 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

{Whh7EP#uWNr=j+?myd%vjt&C)0? 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 z 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%0D`u_#6`Lz9V*m%tZVAimbMp=s1!G;B4V3d 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π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 literal 0 HcmV?d00001 diff --git a/build/intro-to-rx.pdf b/build/intro-to-rx.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b836299d3aa89dc81352c9ffebb769d027578354 GIT binary patch literal 1519085 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%0AwUIaz$$(YB>X_6ym!UN@T!a^STW8L5n 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

?rgC;cbz*j#q?umnC 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Ð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

|3B1vaXP#xhocEqvS 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�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

F=FphnPnyYQ>TH}H(%#Xfn~q*^Azj1_6l;) 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

V3Hv5e1Jhz) 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%0A+j!;NR3=OSCHDDzF|)7 zXCzKy_Z}ugPb}sR@IXDalkrYtMdQGl>R&VAAR%#pI5YlE-omXmWF5sX8(2noOn$98 zX%yg+@lW6xbWp9;Du472?Dw(?*5RMKXllHZrcJEV&jzvvyq~@VppAJTSRy}ZJ#G+$ zJ7Q4wnV4UWw{alexAb*2)2^zOtFzaVALT{L^IlCk$>*-ICuYyLQ>pJ~uf4-nhR1E~ z7rl$&6W_f6E(p<%n77i?ozspl7k?4`71>uovk~7BV<9thF|~Kxf-@_tUH@8Km}A1l z71f?E-UO*aTgmf^GF1c)!Brq7KCiH@-Xon`a(ZG2#yktq3(v9zFFfkRbUm<*u>W+^ zcG51BH57cB71~rSQF+YB#I1wN{8JFbeGDxe5jFfb z&(%zX7Z_@Hn=#O=i@UBaNq*71E{su*%!=!&UWR+y2a`5Noutzw7)o9XuSuCwA84z> zVpopd(`tX6`HFv(6opDi70-Wu*56FPAcE!Hu_yr*Jc#RRt%G~fHfQ_s7^x{$~iz?5moVbM`OQn&+`x7+X_ZM3M+nB7~Bv=k<$& zr;^=HQR^P^z-+-Q(WJUlF2$YfYo@oL6anNUm)}(p66Ut%<_uIv_7rYby)lx9YNK6Aw=qoq`$~b`~YZq7U6t!P2nT^b=^p}Ae1vMzwdY)xgdX|EgcFhUb4B`W7trf*KT@VN(VIHCsWbX7v@E=Tu(=ltKEsoui1o|| zL(p{rc#}b9F6WDX_8$RLSJFN=YP4nra;RlT88;2`I0?>JbD2cI7gC?PWA|>V-)l#q zNm}&&Vg+uXBQF|3!{rVWWOTs)?rEBmX^2c;a89oCH>7;Gd(MZq2+eSMmaLlbN=vnH zj?Jz@vIx7T{YIqG^blPO1aw8^YVY;w^sD!#gN18u%birgA|-CoLD!ZF-*u@Utg%1< zUgRe#$nUqlrSPc*d3EmOM^UF+MlUA88mF5XroF0mH!_Y7Mmgc0b+3en7z zw`s~yGbq<2Yik+RVy1Aj?2~V$uNnj6X$|90X()zl{e^h`=+Yi}>k!$ka{4$@RBwHN zwGG(R(e5o4Fdj?I4ML#)E?degT{6oJOtCwE1*%v<41fpWOBHsFWG}VpG=)nX>W*iU z4o+$7?-RrBcDtLoUIgPrTD0(`;p`+jwA-l%hX*%1 z7GLY6QiqiE@a4DiG8gFiagn}g&lRp9nliF}$t#(~V!}SzxQa*0?Kd-vM|DTHsNn@U zn^Jc8fB|%O>*UJI9@xNM)KuU07MKa`E-FXRi)qC^bVW<)uI2QCw zln)V<)DzGKVRjkHV+o~{CKNR%rrN9x{~$7JGHApJ?ou?+nP5N;C1P~j^@kAWTvSF z{TgTJUeWNktw;?Y5Fg${X7I~-`3ZB4v>F>KJ`gz+YKT3c0`vhkS^kKOpm1y;SmYZ3 zdqyT;ya94VOdarX#pyv3CE8CZ6Az<@$9@IOxb2pkDRR)FO2)Sz!RyU>4?P_9S@LJH z5`!*zpM-Tc+)GGsp%%(_^^};UHc@T<1$qX^?->8J(Ov5_ZU_Drgd!DD+3!;WB%f8n zFNPQUN6#-9V#Z4wT#H5ZjQ~b4n=`iTisBaLQaEJ?R}?kJL=$pHfmS#pxs7c&y8Bw`@<$6p|LIhTe9TP4|#zF zmFiFXuU0A(F2>hMch5&?D9+RQHL20dDSL(-WWOWL6wkiD7;InS0n*@@S1oHiVl(6x zea9oZ)G()QqQE8+riH?=zL1^RE$wL{spFUc$OMdg!{h1gmIPPSDFw(z4?`9a;&yYf zG@rloBw3c9NFU#BRG_>d)5_Ov-J?l@Zms-DJW4o<_h9nFlYI^zRzBbvwy9PJEP&xx zw5nxOJA;rnF_`ZgVhdI;#rJ46=NafJQC8@q){q~Xpc~@|5tzi3Wlj7-Sx{@9{JYU{ z^YSW<08S`G_c=Bn)P&Br+x|YAZp{Trhy8hBYF14iMTHb+k`8bMnPZex;l^yn8Br*0 zk*2T-*rX)7T*T>h-QhlR4zymIxu4VRyrvTyBwT;$2Il#jopl2+ruK{CSeAcc+HMFa zjNI{+gc9)vDwfk1quQLE3e2IaDKQn}JGBS4{!RNK@TqDW2@ohF##xY(%Q^bMPuqFI zevs)j;N2A$iPqoe_r06l@k1!a=CrgB^#1*NcraVG@*s?aMX^~$`|h*vRNWL?3S;DW zY8il=z;p4a5`?bJ5B7UT*rq^=L<#g4MFOQF#QKmicoEp1d>=jE!507XN2gpZQ5i3C zPu4i#Pn_YFq#t{2s-J8s!yDFtAiS%IEU4%6K4$s$Z34?E!pMV!s<2B-oriDblT6Pa zuw;tV7PtYfcsPW>%J8WK?&f3x!4<{&mX7XnE5N+SOTjp@%kw0yt{Jcqh75CdDdq^+ zn4Xglp-y}(^p_tvM?ooJ5JXXZe0#wWhy_z`JY19OGF8O9Z4|IcLCE%D__l|N`kFMJ zO7{z(JoG!#2?9DyWKUu;B4qC?hgEIB0A=8HEUC~4c&ftLjyG|3x->dfLXV@7FyVUY z;pZ_5S3)+0m&h5==0M);jT|TcNJ1|ll18fNsH_hnySUy=tOL`Xdrwz>i;N*^5PBz& z*gGav7xs}D=2Y28U6_*$-J~v+wgBX^kSVQb=VJXMxh=jnB4-3wL&7IJ*|GQ)cC~T8VhW9aGkE4hj8&r zA7eD?hu=OK;e(9cpV*-g{jTS~Kg2jN4|@jAOFODZsj6qjRuCz$)kQd9wY<|C4Vw6e zbtPVSUZV1f6Zctr9yY1gmYS`TPTx7Tqi`tBWN0QnAiS|GM(iL_4Q+9=ky$eN_&gsu z(cGDOYCY0s$pAS)hd;IWqL+i=G4t;2Bx3ZyB@_*B@&KM_phaN;M?KYMkt`{$cC^&O z`?P)bBOJXSBM{`7Wt}vK2&s%vn-A<(GRw1H4uECul`3*ao~o<&_&Oa&p7baf)>U7U z(c&{fB=G5Xc!B+xKUpjUWTK(Lip3vTBdRsL^U&*r| zm2XQr@m9vjxCC;`B7+#xhLjt4Z@O1xZ=4HJJk*y3aXl=`a$8>}{ z#*TNHng&+ZZVOyN&mN$7xE>X3dGuX{Ve*Z7ZiNgm7M?*Qhj<{&fJZpEl~(2=OX_8v z`F6m2q-{^O9!-N4)2P7*ShZ$ytA+&9n+Ea(dy*&OeyeV&cfUTguUc>W8Dll{G=%L* z!v}u(Nq`fk1`T3hTP4Qc(L*01v_em+;QekzE!D0{TT0NQSrfWU3i>>G8&K* zhfrIT#rTXkq~5NPxYp|cMP`xNlb}_vbuT}cUK8>uIZh{d$I(Au)DM`J$G1Df8Il0w z>0*6XN2!*+*ngYIac{+=&BesPG-~H^;63-xxnM^j1PLq*$7cMv1bds^r1XwzZHP)r zEbgEl|NQKfaz}(SxY)T$`+I@nCc1d|_>MTiKD~IUd*uE;=6gNUb(Mx0#OV<0xBF1+ z4+Y>=I5D%w7Zzd4huF_;x# z9%vM%k;h~MH!K~d`7V5P^C(8<7u94zl_9CyPP8^vHiMoPdBeMa>J)h0HrUbwe$j1}ThZ&@Ry zfynUPKff6hS%%V}ib#+x{yV#TT-25$G{kzAj%}ADdrZK+nrzd zW8}nr6@2yV2f6R*PiPzuV-#0m6bJ>Izz-;BG+Og=DDC-EP+U5D{7^}16z)}F8;DF9 z}TskpGWa$+(^C0B-GI+)muLi~X| zEy8|^b#-n(C?#ZR(6@6BCry_9W@%Kanh`E#qyRWfKE6cDxY)^OkdkJxOyg0&v5^a8JlWzxcvk5eoc~!X>v@*Z7F+SO&3d@F;B8;=!`_c9>l&+?~?^r8DWLx z+dp(4(_$bxuX}}cAFXJemv4V=@A|9)OV0tE)VtLd{MO|W&*6k<6D*ZT*4s2bX>o#D zXUs@EqM|OYJFiR9n~pz}N&flO67Xk|kb18u{0j7S#C&#qp4uQja#{zG4=Ef+N|^s$ zyAIZtjpT)?-gDOUT}h{@kBK_CBe z4T=!A)NS6W0*IZ_iQH(^!<8`(OJOlS6eMH$DCwUknSR9E`-O+lpnCqX$bm%d8Rj#3 zXnSIuQ*!qQ1!PnBk819j5ke=w!R-9)qfD2i^^G4wr=tWwGgz+@)sQ1>Qc`~rDxO_v z#Y`F>6;cah1R4299iJb0{@g5&Z1lNrbhW`V1g6B<=d>!+y6kw7fH_YnDa!1;CfnKT z7$J%KvB;mTa0}a?w~Rw~QCEnIKy?X(S0Q$ldzJanuVa&efa363j4!=>SnQ7e9;T+I zmY8-4RzrjIE+TM5bIVjyLkif*R-pTe z9b1mOnlF+bXf*Fn_4-qtOq%V3JZ!CFG!$M)@SanavL4uU0iuJdE2+#{UkaMCWv*Kc zg*HJC87i(>Bp)M1Qe(_0&c7$M@*(lryT!uL>TXFKL9Tj0mFuHb-nKWUayuS^M7SVs zV-PTcqZ3??JMNc{P%;#R`(#E_p3tqEK(ww*`C>DpX#TMJh&I;54HQ6dnnHjTTV7#F z90NmH2draUK14=cSW~e13w&k-a_G z>F$uAv^_7|in<&*ilMIF_goHnB~h{QKl`lZocw76n8)FSXE?^#D;JMA8wwtKYe6u< zxZ_$>hiB2$1l%K0spZfzslAv2!(W`b5nX<{pLoM%*Lrutdr~mh0JASP^ItJPml+>C zC{a;l$$34aI=Vn~-Dd>wKYK8x4ePhz<1uSdR+c>Y$Eqhsc>1#Kq!e&42QLvH|0oK^ zIUs(Dgy__V4$o0NRjZj0pDp*ITW4ih8(|`20q9rTR~c8DF2`2qu1T(Z&03^;1@qu% ztBN0q1jr712oTrs4I?@vGJSD*bVT^{%|(CI&h9IvX)xO+TbHEL?e(~R%(!HZpz|V_ z%++nXKaM4lC?jiiFpU-tr+-&ybdY2k#}`~|ZFo;I4l@xDOT66}j#|$HU_lp?IF|)k zIJ50*ApF<-4DgXl>sG9|sQL4QVMfD)43^{~&_29}UJa`r;kiqAVj!~&P=PnrDC}dg z;01Dx^MvBG(!-yVA1Gbu$T4IGGJ5ec0qUsR&>EvO>4r5je&yISoHhagch4b3+Mf0mn{_hizipl`p&luAN81 z8J7A?j@fTZ+FJeSMSYldddOxsz1o{4OBPP7e~_-pyIkBUZ0R%bxlf%^p~!&up*RI7 zk_%7g-VVu*x06%8auGFllL%0P@z@Hr51VJZnDDNCr}BqeD|;y_(sp^y!Xb!&4YG&c z7MSj2*O|&D1i_(2BUF=;u})mpLwdriE%vxe3h%*}NrQm$?MZ z!@>!WsPAu&&{9xf2DZ!t&N&_NAm*{rR=h~J8ipXLkn%{qF@RxzqTq&hx0|>OUL__y z@Wp)?27REs#y}J2Mal$39PnDPfgx3K5L1+V;63Vy^^PaKxoN%Zbz*qTJ_05Y80eHu zGyhTi=$4o5&jjkhS8RbHkD#f|H=0ebjFWL)-@5TXy~NrHi)CtJ&|_q-CQBmTS|b;kEfr>d;D#8Rh$Ofv@k$9WT+mnHfj(=wf--evjltn+ z38IevSYqj>-Ly)m7T#~$Xr)knkRQ*nXrQiEe+4|bp)&I!hcQ3GfAEef!<4(K?Fpim znXxX7+sJk4mrj3edWKy2Au&48+Owu%xyZ5F04EfXknYXeC^Yb2dDyCqOm&=!_ly$t zFG$D`ADAzxMqn%Pkbp=(i@zlFQm=B8tk;?Kc1np95a*-HN(L*J`oGlZ! zrOFpDp+#0CHu_OSlvH$17!D(;LJ$x<#gSHz|mc#HI^!^iwA9h@+Kq}vgb9_Xnp(5lgM*1rknPR#0djUC3p8c zaHZ0l+~C0c^S3l91SHq8vw9FGA7$kt8 zOPcPp8v8s$#SAL(T&LL(#%9djOV5YrQAILQ*e#rXEOFjW;&DYJ! zP0;CmmGNdfpGW_O@-Ros4?8)|wvUK5Dlop`1F7Bph4$x`h%7fgR!WMMjT-n>U@f7c1~RSCY;B(VdO zqlN>#7)hcvPjGD_p07QlQb>6GMmool+Dc4OgU)%^fIr;1%972`4f2aQgh4XXgI6W# z0y*1T=4yZ?0qQ=`a#+NO8iQzow?^-W2^x0fNm6dVzh;M|cI$#r+T5)9Jt!6BZnHWC zV&vNjC2$G-3@OT)7C>0ayfD*fCJAd3P1KV9DqCjL#eqO+Kveyjv~Y@RIc_w;-|r*| zUQUv<)u?1XQJ37lf(VFL#Rh;weRrrmaDzG$U@|;*Yoxl{gK0L8dw`IE_~kF6(2iF19-bAD3SFz0c-D%Ml^nYkY3tN5YlTi(vuFBc&fiOz zUJV)_LpFNN6`icyxrm*gFyVJ@Wvc7|PV&6scvA!Pz#uTg=e-><*8$L6i5IE;wXj>OG+V?xGjvU`3(cb2A z*h2^ay5>Qykq(-zP%oTuqvmg#2LzY>zRk`!T%KAarj|DPW>Q8zC>Z6857a$7V_fQimNm~(&Fy?)PoM2MBJg5g>{5|4qr<~PL$$(%A4S+ zT~XnXiMdp6O6-)tR@@|~@2-_&S*FiI`hD#yH38+}vTV2Q5((@!0!7u$sW=GPmI1Q} z&861Q_+UCR3}Fg`8y8iw?Q;6-&+u17A_r5E}9i4 zKkf6JhB(T5;q;d-mRm=!bn{}7ZWzq_cN$-}u1bgYAM5PC$_I;ns~G(cuFpur6}({| zohffp_}Mr&FoWP3>DdR+ZC7#8U^)8I(U74`C0kLTQ4%)ARpSb7uhjK_3pCS*&*u$& zh*gccQR4fvr7_R3T0&eFG0UBSzmWvR6((l`foJS`&vu6%eS;|uDYiFDJ3p%qFo~>F z^3gHg0yh%kuQS5F>G-)Zr{v8nTHlGWu`%ikcCFV5xRv?VZHwfuO{%c8d7S#0A8%#i z@ets^m|>$1vaOEZ@#&{W?nZ&Q_mt#F2`N{hoP~H42W{Z3_o_q1CD7?jtl<6W?Qd$` z{yzQcA}WG2IAJk4(OlyznHUU@N=kTCo**?TL|zzK1nXdClqC6K5ooD>Y<3`fBoW)H z(j|0J`9J*hoi7TFDm_#$yWEjNya>|6Pfco=85Ge-$nwoFapiXipM%n5QA+MP1bo4v zsO2?pbBV|I1-Wi`#O{jQfAl(tmgHJWs?^wj(wr9rt!ufsx-j;b-Rl8)iQ}K~7CBGenGD?+PSq&_lt7Iv02$U}8OoqQqtlsqm+i_o z(~z&tby!VHVcQT^p@rvU%HzYAJt4Ftp(_e%LeE@R0Pj(qAKqF79De-?5P*@UkFD4F#NvM*~N_c$v?UjT9ncSRxdri zR0s5>-#Vt#=g+v(d+oE6HwA`#26OZ{S}*)E8pH=eJ3hrRE|o9{kQbuAJrg( zVC0Y~A^npFdG5i_g_J;^ED{q)3$3yC-s0w<3&Ps{dJOj!Y_6P~5qJhT%6LGw#f=wa z&65j|MbEleCR>n!RHGGPV5s5i^d-CN0w)ZhLngkQ)Qw?9CiS;X`q!x8je6(;Nbed* z(H0$>oq(yJm?%A=Js68_={r~h3Q7Lc-R%cUy8{AN`$d}VeQRD!fR?13bnoWaJ?YOALb#!0Sd89iGg+13aK(k&bXO`LScPhIj6@2R zv?)?AZg|_00nAc4A;>(G*o;Lp=8_IZ=w3MbQDj$nmHOY=exbD0?5$r*TccAtJrS66 z(?(0ewF7ZsgFt9p@#_o&bHxCoWb(n=#mDngkn?_~dXdiMljKCm9c=46Zj8W?!#I$) z9pv&8>cj>L!Ur;9P6?$K|6Jn|mxFE!aA*#OS&65szNCfmCl`vK!$lVK6_yu;_mI+< zTRN8!*b4lBpydRGch@zIm|Y~WS8&f9l>K48hI`FErH0%)r`ApafE18s)Na=y^M?K! zeQeo|q|=ZWW{B+XnoJDXyQ^0(v_HJFm`OmlKHzgb=)9p=Ms&aWzjLV>j_JEnBpkx_ z`^1SV3OQl!AO6+^A>+W+&n+8Nl0&}@NWS>aTIlmWXmHF(V!y|rE~d2C4fQtSyBBYp z9Z!Hg6BsEEtzjiuMQ&Bdno;zP1+b?T#psiO(SCLTj8rai{t?loi*4pKbJvvL;mF6occZ|;SSW2Ew1+kt zRuMa(0rB&Eb6~@PzX-a#Od;wwlfg?IrAvf@*dU8=HPX_GOj5aHC*m zZYBlG^Ro5X?oC z71>|i4Mq#uFv#_2%JmWn8neh7y7Bwog>jyDjny*xdmLm%;hzVoK^S23f<@!Y{A%hs zDIju%lC_oF@mwj4f>L3*j|144X5h+>rgo^KTn64~T$FW3Ms!z<=`bh1h|m_iX3If43T zHN{8;kleW&N~A%)GNZtEVVNOF584N}=Jn2^&tA|37yVkKTpG){1jC`a%`#U8GW#L` zH39kW#NZbM8$!N_$#CL&gDQjJGaPn=Jdxa zo?jRQ-!SjxbKzAH-x|& z1>p!(!hcI#5%vIb5|!b%4(X}sL!{lgML@ZvNQ69xvuRB94)epQ3k$t4i`LqQPB>0D z>n;F4K)}B!-)LXcQiWmY3x7>=&ZrP<<++X;M!oT*?a5F%mUFU{`9!S;OOL^DPyKpkoRIsHY+dE>Ty@sc)gv z@LNJb4B!M80slt*vuFisvV74~hMElpP##<31sODU@S-nX&-dd1syzEAwIOc*)JN*% zwZz;_UVKnH?arg1vY*fwll)f~isZ3TF78U3YoQAtTsW4zJ5&M>ls$^#Vx!;@fez8P z=cH?#+CI3s_P$z|;Bw18<+LsY=PH|a_cD_63oU+(E`I$XHHOUg>+oB13m~j2z6{0# zqa?nDeJ`T^X1{^qf@N;(Ysza##iT_V;>Z^P+M2fDP;+k#@g1FbCQQXC^F#Bf^l3}@MRuF0^Ysw3y0DkJOF=nlhsnuw!+6& zKRQO8V1#T_MxB5a)L=@4bwst-@+jN%nv{I(bx|79rhw4nhmOuaQ?@EY12BbRr(jBF zoAu(vqOgr7lJdXtFM-+(yh=kGwu73@7ODKn5Ch`#eiMYy6(YS8*dXtF4EoV-j#x9F zTMDbq2kazl>i3;C;aw*H*kyGIbC`1_#bdOhZS>PR|9f>L%J{E)9ysC+cSp;kTjG_$ ziSnSkYJY+~eeAy5=bt52t22kRkGwMU&Tpi8!s#(HABfn-M>ifwF|CCc@3B%$p5f$c z-nk_0~EKl;iL+i=VjZnm>OEg0z ze_EZnY4()nnFck|IUq%D5r>Xx16X#7uKLkFo@%Ig-Z9g+jU3z5Er>#F3a#FNO2HEe zh^rzV?pb$#bUgyWOW?!z31W(ZK-@r}#1D(VRRdd^)KHC7nbv~cD?g+F7z^^Z)e<&Z zRaYKb{);ka3V=Zv+dp6>_3E~E-Qh1mU=v+!k^@k-B%yEn+<(6wt|u79+D2+cjksBX z&>YiVY5Z6&tO3N>HqgGdJu45qrkn~@n0lIaWNp4~H@joj?Wq+dqlilXG>kbqeE3x> zxr*fuh-jNbl^`(~m;L8}da{3<=3vWGtQ~1qWa9h54u`6w;R(IU7 zs1ffe_C#JN9~^#%v;Q~#l6<$_3krdtmVQUW8kL7|fPfdQfp?cfYg`SY8Y3_$7TC4P zQB7inSdXVgIbdJnsBSBfP1ISRhFkmMtOs$NvmI5G*yQFG5~T$6#wZGFM=raYelK`P6~5c$#*iKe_|6Z0a1YT?ELBLzv+uIKlRB^Wh1 ziUljhh&}HVK`3d=``le21?a_=w(sYh#mpqflxpZR{p1gp+hd3&*jn1#%9XBEsfbUX zG5JTLm8*4JAgz=$`W7~s6RGY|UMT<5Ux&JVn3fP85*8B?duk>%j7IJYb3PiRKdkBD z{PHb1Y5+Fbxy{yP>${ud2# z)t%GW!K0hv3}8qHTr&=X7Eb}NbQ#X7+k2`?+F*$daFH{3bc<@lbsaeuvLh(crCA_E z)ppHar4Hnt|9H@Z+>$@ar*aQrid&hVTZpeG&-P0eNPP?!*2@1B1VSIc!-9pJ#vw7p zg3Xl8QV3nbs2r_J!Px^-6fmNnVVFR_$=lFvpg2U+HD^slM1AY#woyIRgkIViSht}3 z{7I7w*|oA?Jiwu>{547rLNW2;RrtPTvE?t#=wv*=JLQmV5N+-?FE)U^%^n=x;qHWG z&ArBZ0l$v;;*Dz?p{xd6L{rMG_hW!rOF&a9m#vW~{SJo$dNeB+HO>Wv3g-1T|9~A< zQC`S1Q!=^VUt^j2V}~vvEV_3Tzmt|W3R29#!`DHRu=lUDBv>u)l z699sMGs@?`nb^f*ZjI$&#LG$3a2rx@(MVtXuYYs7OF5k1Pby`!Evsj?Z{0q%ViVEs zoKPie+ZP+%XdZa!Y;FQJ;tfCjr@#i|N|;L1{Q2Efa~!vAJ~R9&@q*pM zr2yt&I=WZD6Zf)UC9MB8CAtWI0B=$Ftu#zJHU41qo)feXMl(})hk2_b@S-u;P217Y z$3j`GGRxA8Wa-{C0GrE8*bPG+Sw3GMrUan-r;K4DnRa9gVJn{S0YZXEo>;3pG;lg( zFPRve79lWADd#rG-UOmwDM*prjS=8Ms|DpUt5gj85x^s@ z7oZfEHhUSpE~ApA*l7FKCo#u@l08GRFa?kd%7teEzJ!{Wig&qs+JmG+wd(J+d*zmX zX;!zxEqPCjVtKR+sn*5|1H3kPuSeC<1Ijcir!fDbB(NtdSjatq#4ifm!Zl22CiiQK zf!U2W`HpyMa71d#^lt0O7LE87NsQB50y7v^SRFiAF)S!98(@A)*Nj&>SpsYfMd+)D z*3U`b69+F@&l)}iJ$Q_ZdvZVX zO-u^6uUP4zARhNqjf@Z{PmrX+-gV-FfX>d%D+IQbE=pP_*wNLg$qmFCXGN;6P@yuD zu$cLMWOIB5W#1H@*<=_@>kRFh^d87Nj&%n{BjF{dMYOi=-uIp8+owkn{cHipv|I46^0S4L@z87m`@y2vthtTRi>}{1 z-0Fod?HwNVea9DSH+_M{g5;VX9Nv)%El3HILp5|$7Xm3JS)6}l^dS~icbt6rRNP*C zLQ1-n5U??25@(&9c`~f*cFn|%({`)toJGwE?x)Z#PES+&T>Y!s*zNoz=#kI;%X4Y= z$=99hLZA_+h97JXs!p0x%kFcqNk9kbznf8Ex}C!V!UF0UUJ+GyOwXL})2%9Ic5N8q zE{x}i+4)+Up8|%Y_JEdatN3i&2%M|?555r?nA>1>p{TAq#qzGeWn?<>b6oZ*p>#5> z&y4|wIb_0D*NB-!psSFcIyE6=3+n+JvcTH zvAqd!wlCSJTrEEi`EfDHk(V)zm7Lr%Ad@TQ>=_<3Wfa;aAecysr>0OA#Qi~RPj1xg zB;Nyij9ChaCZxj<3pBg7d7xyuuk>i`DEk3aH=nx;;Ob+OkpI-QH`ajE$5s&|Uq@F7 zvr9^|DdIQnQSv=5+uE0~tIsILUbJ?W~F{QXM0> z@K{YuY=8m`K;u83@=7Y)?wq;tzH#1F!Fa>8lb=XyNz7#Oe5>{5O~tKQaRr#jW0BS6 zherD|99 zKLFVDs8#9Y=juqB|M(p~@xMCsx550nYgB)LJEQ?eLMQiD0>HooaD!NO20XnVgVb&x z$0IRyUCm$u5Gu>(8oYWqRX)n6-90iNZU0ElVG0Pwl~{gk)CJK|>`&=VlPQ;b(qQoh z0$IBsJ6#r%QOyf+tQEIW<=XQ3q;o$5LPn7U`~)onyrTq+zv8MKo3p(hx7Cinl%PH; zA?Yab4gK+=X4;`GdXIpf)%llOngZoi67)$Y8D@+bM456)P6WB?qhmdtK(8h~hEYON zptCItP5VN7-)I*E zx!b@X1Sb;!{)zd8dvl3P<@d=CMED<94K9kZZ*w$ zz54I4y>p)Z(!I81nPZIX2LJwr35WDANVH#0A8fHnPVn25sdl=Z@PH*FfBY^iNdrP4 z->Kp~f`latLE^(SMro(aIJpL;zC`1qtxgrp@DDhcBJ1aKpkPN!12=}ZX%_9W&_(>R z*Adlq=RWc_tPTOw!VuIP=_d{x^yr?+3fSpod{K7JBEg4;2lnTrp-+2MX_9XZo}Vy#2H9Sz5G||ZD2OaP&ReG6$&@9}4S1gT&)EfGxtx?U`?|ucteO4 z5dDUaj~P+LOGlPGB(F`|UyngqKTPoO&rCr0zjLcfQ-ZTph}Ez_%P>4&1b!)<_fc&C z%N*Cu{4|AnwsU3$cw1A&W2IDLMN6Mgs~^fqen_`t z_1}?CgCC4fnM}Hq*opnX1n3)q?nBddp5~7WsNSFfZD>S2Tn2K}bv9Kj+0du!**kn) zqyl08DT8}#)^LjMqp_&D{Cl=ecNnF9K=l1p8#lZCHxFTH09RBOw7l8M-jnh)m>WvS zIw)%fy3yORLo+}`MVTG9x?>g=C@TCX!~F2~pni(@Pv2VINH~TCZDCIpH7RJ`1WJkY zc;K&_R-VhkR@xa-Fs@hF9|qZmMg7+W)M=_^abwKgJK69#o(h6^eCBJ&nzf&tr@j18 zPBA4_DqhKr)&0zVg>yac<4=ngoBZVqL2`If7Jsv5e>NhgG^p1LvJ;HI{h#CLc?3^DzP1TVupGk-VX@QwTfh|FWjf$ zXwmT5gH+kRpwtD0i~M9o&hNShrEWGG)xCuY3Np%^L@I^&=#U7g)EupU;g+;CmH2=~ z@vADA@25~3Y()eG`fJ=J#_7J93X)oM^M(JDT4N7$`9u>aB3*mLD1lEPxdik^hemXh ziviAQNIR0^Gy>9;DJQzF;dI)|kBjX9JYK3m&PDioaSh_SoiB=dGofOa&1k9a3FL7O zyk}Jzt|(OsSTin5bbixiNa{7*wG+rq=S);#0_9-k_R)^liN`<-s1%eR^#C!2A86Y7 zI1o;4g~1QWJ)m<#$Nj7|mAwUp&XT5kfi`EdAa$BT6P}tN$=f8eEK^cC$vh%a4D6V& zc)ABFQ=m9?#h2j*aN_Qmy(dBigj&Z7h>F)GR^c~+5QUa7!wDC!)g7rz9g@dOYZ~S) zTj7LuJ0^X2JJtN|zbo`wuEIqe2WlqWR83H9gpm$ATy%31*{=l=>-9koK8dHIh|AXx?ti?dWm+ z#Wu7q#^IvOtAPZco(Y%@n84EKIZfHO&A*R;>vGQ6UBYw$QruDB?KeB0UKEIK-3$?u`u@r zFB*W@ZJ=3K8jN6^yr;2-&GHXcOl)@$t#u*JG*27HqULoFA1uN~v{jBTP4jhjNN4hj zvGE^Z-Y*}J(Efq!4BbQ3{9z&_p| zwuP%At3_G_Fap%8C%;f#={gq^c46AXui2*r4}Xv?6Baiq*_V{@O;VIOJv9Ib^SUR1 zT^Zx)u|HG5AQ2DmkVOe@@*TyJ@Uo6Db%M&j0VMy_hAZ{)fu=@k99Vr)XuX693X4*F zgn92qQ{!})jle&h5+b&&#FGal=FFKr7;M)@35_x+vwYT=sJD*Nz5v8{1q%m1vTN-u zq@x*Qdb48_6x_h21l9;Cf<_EdIc^;`RzAFa@vikc_sO@ak&&0)r5PoW`Y#n&S~}W$ z-=5a+w3a2MLKStzAw}GDZu=Pc&e(8;EU){t=l}1l7S-W%K)mXaP>MmVEU9nrmTPdD zHLxIWaGYSBOX1(bTZdn1q-!()NC zY1o&(5`4`SMpZ1;$}pP3iRsdL?Sp@Hc#Lc{%Y?cSJn$GrRiK#c66tKMqO~J`|BB6cB{z zOiNn1ny_8O7F}Go{e0l_y6AvLiQ;-sM?37IYLsB(-9*8Uk+jHOJKw1@4y8+u(VhLp z5CiaiXQjdhkgYS8%ZldzPUeO@Ty4|3P<{EkBnHDl}SE3HWJL$<<93<#)DNnm*0A1RmzoZ}o zI&E>SLK)Aemjlt^RIg%W_#w5%_`eUWvfO9`pBu7|?>Yn|hj1$hbi@bH6c9zR*&#L? zLTzp_3fEN|?C(B8W@XJyj|z^@T(&B_o0gQ^nDtLjdqb09EiynW90-}`bsWdBX9STg zuHVqD%mZ+Mz-H;~b)R+I0is*H{m@BxkXYm&+`KyGuIxMKrL0=!uBFaJ*`-?+FFDoS zZlO(v(lxt8f2aa}#y_|7`uS~T?11?b0ZyjvPP02o)ExKF@|wD7`|nFznKd#Avc={)A`u)@ypY;moz!gVW_p@N79%Y*}^ zTg|+QnNwCh$z}x@Rna2o8vz8IW;#7UBMb74a0?ue4Y?Y@6VckWdw{{S77Wj^Uh?2- z!`2LXMCTdJsHj|r8%4;;!v+oa|Gd49%(A(R7YDWps%Ef}w3HaJ&}|F1tKw8|PHsd^ znPzIfP~jVxApF#)bs%2F$_FH3_e8b;2*|C(KTzgIhJ9dIJGh&zOumB&IYuUw~;bCwSa8cCe>^X~%J#^P-85H%KtAjkRENel*Jk>zp z_(czeASsa$Dt$-o0L{DOqB?85HVj%c6U^rsh0M#@&&+{9I%u)^OMiMRD(S;mb;GMI zqa0v=zSTG_^ycZ$R#`o80GJX)Avw!n?)n5;E!5Ac$9fF_v~Q@)6jdnJNPZ3_p>3Ce z4`K})R7dFURm?=Oa$u6<`E!TKfczLk>{OP2^7G=Y-7{SEudBF7Xq{UY%jWzYX z%=AO%oy-;RM%hQSVWAJDI=9MeI3#9N9sKwJ z&NQY74-Wi0KiLOM)gaC21Hp&n_H%j>ezNO%kmAqJn9gtJv11rWa=|WthXwF?<)C7a zq2=1|8zrWdF!z!aQ){7-($NuN{Q}rR@Qa6o>q={k(1eE-jQ?&9a-cXuZXVZ+ami%^ zKD~U(;3~Aj7g7tV@(>~#6UIY2;$?2N?xx6Y8?x0f6fwx=vD(9xp#4RUB4zSTQYE;M zcWHU8DZNceNqdGfpEGM7&fC>QVc89J9SZIW7 zsfQZ*Ls;t~Gc>APMel04+JIgM6`G%k2AUDe1qCFSx4fAEWmeWiVGu0B9``q#`bq4GNev<4%@?5H74&4%d$u2*2jcy1RdT; zAFig6gVGg_jN5med+$gCSz{g0HI=^y@V2seg)i5BQn2|mu#%f)cO^={MMS@P=HHZ#XIU61m^FU1 z#}#Si3&I(AMxGf%B`VE9;24K_u)>t`CGkN3IM4qUU%Yl3;0)AOplLR;63++%Xq;Dp9H0g;=` zvi-nRWC?WJp)=jT5D(Kuui!%-6ledJtuEn=yxYyT^;_R+4!60F`#pP8SiV$#+QZV_ z7GHOd9GNIzuPQ^8jGZzbS7{g*HWS>;01qh4Czv}|i*fP2ugxUDgMP|GMkb_n3Bl07veaaMocNU zqW3zp?$Tis99lvY7r)|pl(k|L_`Q`TWZ;myt*`CpH*mQu5=bO7^k}Lb17BB?)F;^M zZOJvPJK)5LY&=ba1`R)da>4=Zym8RtJ)(6jdmp!?>{rXMJH6YC8#;fJ1H%akYDiHM zgn+|_(wEQzyFv^KeoOEQ%Ij=K-0*$g$Sdi)DD5RqtO8O+P;pcSkR-!uy&RDYee5`f zJmV9?cd)-K(wpQ&_X>;BtC3_q%Vju@1UoPPPpeF)C?FIRqU!{+Sp*%5YPYL|h{frw zotM(`3^?BC&|n0;BKBgb*Bq#mpiJooS4=FsC);(Z!>Z<#Qu#G#wOB!w+l-r8pXBSUYo zD}Xim$Wfzf>v#!|c@jEO)TFXvxLrxHu^v%qQts!Asi@Y;yP>MH>Z zJjK&a07y!{0vhe7@xHaj!<-EV#~t~EmX`#D0>CK*7&Z!|L@QAmP|)pZM%IvOE{9m^ z!zlo!VHrD;$yhI2*61Pks8;vU&bL&BiJFHH2WRkEw=%f+&<-vnaKB%?S-E59E@{&+ z#Zd=s+)q6)6hUe)4wMBz+l$dYEI$h*zcBCp%0EdD857(uOM|-kLzqW;`r34z$lYqo zaO4y|vWQ>MQzxp6tbJ$>dAivAtl0^3)M6PmZwrNzmCq;TbuUSA_Hl{LL9+z!YeH}I zY6@5&5Rgw>Rxd$FworuE=Bu6f)go#VP$L8j4`iN#@P?GjjB_uJi~!E5jU*( zW{sCsRc2FMPkh~wz>(#9K&2LjNxLlQ2xn4*1v%Y|S5F`#B_7C~f{-kri-?@!^~U9b zY?;PyweA8`Tp=MaX91+^#gQuR z+&jkaz}1e+)sI#}m$R8zVDoH3Al@q7eYPLr8@@-w6!53R z9UOiq4yksO+{f=1#<#5Z&H(z-$k(Lq1t?!ve}}lL0uMs)PaEI00<*{$^vfMf>g-(n zqP?W0ivUH7O*;p_c*~+Gr&9X*ku0061iI#S_XuEtXS7!=HU_%-(LFE3@@btp-;A_; zEFwI@cMF(5)Ym(nfZ)YT^;#|Bqoo^eDHOm@sHhS5S0YIeTw0(wf=r@aGy2&Xma||h zc_ngQw+Sy)eD1C!`~7&UgAy|&b;ydmM(T}_H+aT?A^h1}zA-x+>yLlXa~Ggp`AYmO zsb1eEyFM3A3!T#jZ-}*NGot=5dH_XqwgGji95{|iWVHgU!IKmME~3(-gX99!FDYa0ifVO zs;`;_(ss+65T1$04WCYLwVO;#5=MaFB_p4)aEy48k))aAa2(9oWkz(xWb+V z<5sk1JE|E)D!S;0-PiUim<+9Kpyjam^dn~!Nc!lHIJx`VR6e2cWl-JCgDj^5X-)HP z%QE>6lK+7L3oA7JFC$mm{zf6=1Hk4e@u^Ssc(X#NLG@{KbkfF@KCHMy`U8}v-9Zr< z`K0;p5Bx^XB@L0MgDJG~sjYSg#8B?lbsYJ};Fk zrJtPO`OTT;XVP`kBLIRpNb1E?@3P_QwB1hKJYdiWiL^+w)Pj6wsPnXnY^+8D?!-m^ z{7wXs2`>|y0J3F=qQqdrXouyX7)tM5#v`&AORgm+xs81pC4(xzy}gSRCA|`8sE;eg z+^ORd?Q|(Vh#S(Rj*1@d7PS(Q4MS$gDr0#hb81If1SioVqFd1 zuoCJPlX-bQR{*37%J~09n4E<-={qI&TNpUaDu9I0Jc}$lOPN?MyaB({K)GQY-?(2! z1&FWB(iXd;*fioHXfRI?u2pK+@m62$hFj3Z*7Cz(OF%Z#{b|KGJQHjXW8e`o!R}1n z57KzJxV3~sj7;soJp+g5HA zMQQ8Ce3`H92}YCi_p1tnX7HtR=#FUC{&*l?OMP4EySc0gYMPrc+>ef={OY~~mx%Dc z1GBLk=aD_spaGv2c^J4cPE}{Ej%Dg%I?kd=0rTx%$$_+sX!=N2XTXKUvglVCQ7;lL zO556$LE}@IXRw-Q-X#*ys;$x88F(s4X+R=Smm@@P&KL6DA?pNI1hlDdNQk-7IqD5Y z&z#b*Q(q4D8i@1m5m)caQNCuk#thFaWj`n()~tnGRv}ftvpe}8Z~8Jchk5k)yLUVX zF=-JVHmT+S>BoFaIz^b@>7q`%;0$MXI(XT92q%O)muLB>9@i7yla3$Vq}+m3Mb+vQ z8EiS!a!3A7OLGh*X+ph(VH4~pHQPXRbC(?Kk*bEy-H90A?o#nzwdf}RUYK(tBEmK4 zA;FleXTMcq4_Xk?ElJBWxBD6N4!rd5kN|=Qs!Rb6V@Ce4`=tuKx`?V{7h%ap5E4+Z z?H%#?c+1)hziJEUVN4G5)n;q-X2YO^EHq;ZgUnb&-se&0OcWfDRand8wG-_Z8=c6I z&K(b@(rgoQEu71TpB02WBGm`*)3<+d!lmMFd~0@nCx{o=>dA4ag1^xXhcMCmkV8NJ z%{Olc*C?yB_NxPO>9icT?H@Bq&d1Po`mYdX#o;_4>2BBkI-@<&=i5f&;(n>s9XmUU zg4LnUf*c6m!v{*3i_rFt*sEHL!Ghe@SmK@pFWAbibo965N|eAG@ewG@D`Y~~Nmei7 zz{9ufD#A(gtR_IsqM5B1{T2f(p#-{CGy8>)-8kDy5F#70rJf+$hh|fzA7)$l0kuI? zCh```REe}Z;tO}aOc;ig^(6{RHK#}|3=%Tz!`lnXniM}82+tk~D`X8u-Ptd7(CNm! zc2{gKw8nD%4_D{3BnqHp*|Kfhu2Z&c+qP}nwr$(CZQJ&A&%`|3`wjV!J0jO!iBZY6 zJkp6;EY-q8aQPzdi2+%SxYcGDb29{V-7tix62>$28Ce9EkmPF-1nbEYV+$B89ZDu) z2-c!$->cZ+?dFQn`j|GyRb`jB%NEg()#Cs-4p~+9$^qsjg>wd>=anPvI^1e51Cyt8i`z+fYG?w> zQaz;i``1`KyJJ3Y92EFps8OjcxufMK2Xw)YN*+#{+)#`653DaPC;zueRJjc{IxepU zBLB6MQTUNNHvTnynWtQiB)FHN@qAz*w+#ph-Z;a-SM3PA{dnPQDqs$hILJJhWxDE6 zL+S$|Y$c(25M`-D8bK5a50d13(I4YFiP_pefOI!Icbm`lVe-N0Ccb~bCTb&M@Y;E> z#|hWRzZKi$AOC5QnSO9}{!gAbHo?x3;iJXH>2E}4Xt~N;09fPSPcnEy>}!-mDnwA} z);weanRBX$A>g{I^6b=g4lHz;c-}|LADf3f*BHYZOrj00C=#SGnLumLif0nqK|qQe zKu%@Zx~BJY(MVH^A%g5?Rfiiyu6Tgil3^Pk3g5gD4$8zxSJI|PSbbsoNE;`ZbK9le zkFe&(Mj7uDW!Ay_kzYTHMe{WhV`ON;TUiPEA$UontUfWH`;EdBwsf`VdbXL%k4PVqd2Q_mM;(9YD(leMV~@bCc_u?E7G&V3k@zdwK%HIQ{^d z^;ZR)i^KPzjDa1bOM^x5T4637OF=-3&wSq-en(84I`?Z9aDI4!bk))gQ~IMmO0gu% zIX-z4rV}bo<5HtRtQ8gUS);H4M&TsRg)rpCjcSM{&-XZ;Q6^sbhmPv0hl$Fose?;jfy7e=C zlDh1%d*SRf?8Q_;ct3ih&3_<+Pwaa|#Pvkg6!8eID!}#8^X#q@l`8j}AGetP_SB8u zND~T_qg*9%rouv`=%~2D(*B_Zk^Wc-C00Hl3T>Ex$j+|ye9)5U4Lr*u1>`LLdbXkS z%1*va=O^kR=^56=cg6Q>+wKGOK~zBi-|ZW2p4u%pdb_|L{2U7@wpN#B9G6@kp;g zS`Wg-M!QDVc6*KZALBVT;w3>6A`h`AkA_yyjzCk(N=<*9j$|oKs8sJMbFNoF`jA0& zoDLq3IG+JK)mc4~2it2GE^C`dPHG%Gj(C-phowk$|G!5Jdv_v^`;b`GW5;SRO?Rpt zPC<%=($HgYcXhb~TU5y4m{gpH$?JSGxnMv&$U_=@zteA-&k9df+tAN`lL=#ZQ>}hB z3q}o0*xPgIbKkQK%b{;65>-0EwVBfnvCcxKjXo2xT`%&8HEIZ^hs8ezoikqt`KG#C z8=(!$ETkD;7WKv|IiSGHh3zz*f%Q@FEwj1|O{1)6SeC3vaR=*y?2zm;G<$NQ`8WEN z$bb?i_-ew1zMsZO@nGfW`_bfvDw!foW4#og5~!(E4fmQJ0}+QdkIkhYQP z84FOc-5YlO_=?rCx!?4*jf?SRdVmV@Lb8wX{?pL(|6XI}H9l*SK_@4&w){70m?O|9 zR#(3;?G2A!08O8T_euJ;dTZcCA7%;WQ*DR~XqM`1^&EH#Ze<@9 z)s@$RS-U)=}l^HeknxA}KLX4H$#^A7Yw4 z9oig?*#M82jO%1Oj;aR0GIPk-!4~L1`{L#pEHpapXBt(caf@+?A5~jAle2U;L;%!M zSFbBH-=5984tNSRuZgYkFH&W~v0EAV78QH>nYI{-H^GDmHFP1ZqG0|E&~#`T_!lKy z6;qdBRj(;yS>+;2VY|vV9t`;OK({GkIfLdIIht_)_PtQF1BFvthU5cX-TMHr#e#b) z5U&>`hlujufbaG4MI8vUZ-f3h?BsxlKT%WpS7?I_zazwTlxK?9yj;;5uAP3y8ozn<0h9MaYSAlJWA;Zc) zcp3#YaAj;TfBS-8cI>NuaDrI4VV)JC!+{Se7TiIq#l%s*FcM z?|skzXR-SSYsZJO#>A7>fAWE9@ZcaCvP$es9+;*up09vZ)LZ&Qh-Z3|$zb}II7i@M zrIMNSi7-CDh)8dGHaWr$H|pcf`G)!^VX-&>52PcYM`nmZnklY^M`Bn$irKDFQ07e5JgxJsX-2Od!80uM@{j$QkBt#N0U{yv;m>LUAI zbXOGJr+AuLSL3*DP>m%L3(`>oS|k4IWDO8IkD#PJV)4^P?pEM{h;@-vM1kA!tc4hL zI>@c@&MzH89n4DiZz}pjnP-bEtwBKnB9OT*ClCc~D@Wygvi$<^D=UoyA$miCs_L9G)IKeSq?F*aD z9Y>sj$!F7j&dr3ExG758i`$B@Rvt1LR=+jc+woKtGyO}y0By-5fjUlVILBHg;pwbA0{>m zMQe7msqAZvT~!|KfXqWn9JSIqpt(@viB3i(5xq$*RLys3MFWTrss1HX;COU;ZJksQ zhmj>`FW_0WI$IA$!{$#s&w#8TBi{qSo}H$a66f?xQGKH_(@08d{lI=PY&99XQVi7S z*|k9W>ME3$M9{VS0uIuB4^5@A;cJF+-KO+S`zmV^hvmp|8Nsf9&~@^=`^>xM25nXl!jO^v00xA>LAx$l~EvCMn-+s5sL7xl%jz6l#QY>uFoqdmoJrmAXRw;94Zt zVW55`oZ|6o-}in1vmHuzY@`+dvoxeNzln|2J@a@6zo1Q1&_^TM48}xxXaw@e2*9rq zaT6E;nd8&Y=+@)HN_Sy@D128_dJm!4g2A>sttc9vhO=hBogNvX0xIt+^# z1dv$jpRX#!tQ-wP4mVqO1$s`c!v;8IeX5~@eJPZYe4l)(@*?zD$8$|B-Zp48!>4WB z1v5p2<7JdB^^n%Ve$bq}LP4E6{YGdvDF{6De<0#7oQjRXVDR1c_Lae1Kz+MPVx3^x{Dk=f2D>(g!RQ#GDfa)RTiG7*s zZ1X|h&=$F0e!~a%Y0neKZW^lvlvC_N0rGs{_O(bZkuHP|wp#`R0N;->8^s9eR-ymW zz}&>GfOCc0D`A!#fo8ONp-Wk%WS1x3`%Ti-H18ec| zk6El|L1OBTr~AQ2+*L5zjaGt3rFe*R`%V^=JCn6ssJ2s^3j2bm%%>^HzOtS1Whgze z>9fTfWW3(Cr6}Ts;I2j*9A9E3#RCZrF`jVg7~H#mID;{cCYEhJW;{Ej4UDImp3$92 zlnaKE_+m|q@98JJb0L5#0QH|xizEId_cqVi&(&V`yqKW~s;$)_R~oW0i7=4Oi|U5`k>8Y2nz$X{e6b!3U@wlmE^iqT}4DHBm&1!^GX8rMGo&%iCQ{`S0Xq2Z9KoCydTYQ(0Lox_`x9}&3cpIJbHPn zE~sb(?7Db;hz!3Kbulp|87Co-Z^x{J6LQNSE9$l)`u605ix0_!+m!Z6@x;cBJraYi@A z<86T3!HajWQuX5Kg1fnIRHCm{;vOj7cCSGwUwL@cpAgT^E?py-&E_vm+E8JBt^t!? ztC#Nusa)G_;Tn2jsNsHgD{q%qDR*JPDmIcrRXToxVEq@e9)7`LKkh-)SHC=#q?nxB zLE=E9G4uxq1A3v#H&~X;vCC#QPYxOAE{4Ru}rw6?Lu3GKf4~GmVWyiDD-*Rbf z#mTn)zrUipk&iwkQ1Dr#tu?&WOQ=WQHvt+YW9j05-U%3P#*4-uCb7`PFxE1b!cSdZud{!h93)_Vdim7%hxKinWDN62|Hgq(lZ6E z*!+~pWAJnrA66?9lA%Rxaf1oMnt0V8+>i<9AnqZ%%Y~4{RCWvxe zbH*A^qp4EFn)?uDJJ`w5yC})SWGCW$Lnd@ z!=8fNX}!yk{k$GLk>Ya)ycEZPc~{6ZWAbMbuYhwmA(3X~OYhBNBefLFHK6Uwp3>nK zM9 zp95!EBzu;J$7Ks&2k*PqOs1W!kHrP0ncDWW7cGd*5g2W;-Jh*y=aV&lS-D<92SF{w z-X4;Zi5;>|`~yND%N}i+%~|Kzowv?8G}C{?j9Gki^yX!rgfn!gSkJ=;88gfLyR+uj z3>ED^4fctYQHQO1Dk-kL(taqYNJ1N_v$-TWeFkk3CciG7W8a?UNL$x++zBcYvr~Is zd!wInUe3LTK&W-osDHB#CWwomW`#DRc~m6g%KP?l!Pw#Fs>OZ( zK39~XcyQJ8Dm+)O(U5@sN!;clPX{{waubqB?U-Hf9+_dwk{tf6|1&TT3k$qbHK$V# z*SOlw&sule?6-<{pm~W-m;k)KTBAg{<^NevFV#=c&Ni$1P{P}PPQ#3@jpOs}8#KM3 z@|>~3By1)|;pu=yua-SX<)Klfj?|4|8N})Db|(js4ZQ8|MDk7qUn|CU4S~R6CzUESyk~mp|5PFP-j3uO}}7F@IG{Q~x?I z|CDlpHCfCYme>_*^nS2|4jG~-eVPQ)MV&^A|K<4su;x^9xCfkLss3Z_1u(gSOTSig zbSOyBdyE*`1ilJ1S@arb{y{+%?t1s5_>9yT<*yF@eY~A_3j`gXtBS%s@OK-hScCnz zo-;1Pj4l`6uQDlVdyasPtP)2_R`g80V{|6L8ZDe;V%xUg*tTs=^v1@76Wg|JI}_WU zIGNbCZ_YXQ`_}DVt9uuE)l*MBKf0@`_vQ~L5kZM8Qcf8=k;+ygC9NVCO6pBwD>so4 zX%#r_Id|EI9xy)mNnNe@u@Frajqh4Ws`lhRUu9%JfN<_Kl;S$A0jG*dWWdbe3oJb> zOqNq7fxWGm84~TGgw1GLw~+KFw+tzHfkGp=)}A3iv3l3O$mhBV&m=YlK`b8RDp+Uf z0rtooDh&oWLWIZyZz8b^)2W)o00K87%BOFG^OJSm$VAReuWZVui+{(B6t6m7*)V^b8jz= zcq~q`5&cEG=mmhicC>4UhW>n&YTuB=9tl_1-*Zu5AUY}0**j_HaRr6_$vdcsPU{a* zP8lDr=VpnE6shao_-60IKQV{qIN>Z|LZENcyudcvf^Btj)NfZb^5z|DkE;k1<=)3v zM81n-H}kG!LSwViwpsaS_0}9k#NvkAO{92{5d^yJX){>aHB6mlzL?duwlCJ;xNqy4 zhz-mi-$#fZ-5zD2%8rmrFKR`ArrB9?Ba84AWsCx2-${{~>^Fii0)b5bxx`S`GI?k4 z-A7jdZiHDw$f0MXKrwQEYJTgNiJ$H9(I9H-h>%jsxdXgD2DSV~9lCZc7JqQ}No12Y z<~|p(>=Z-(ffLkXe-CJxjsxVAJ~5!NS8WK9QunDYJ|J>&sjXO3WZXlL%7<{8r2#3S zqgvmFbCT^Qz|o}!|N(d|~fIxV4~ zLmYNGK9AQalVGQ9lj$0-)mrm7+r!?3GI+ch9vPjKO|zl8BwnA>-P1&|0nL5t`Q`jS zK0dYR19x5OvtK3B_w8lsAdLN=o!t77spe>}@k6BNA?94_OMaqJpyRi0o`z*m`3j_- zDczisGzO^M&88DX-2XMRGqMYj5lm|hZH>~)F=qlLQ*-C=@ot@(Wq&tIV0h(pC}Iv> zx{##6fl$k#7v1Fmq3ElThEf@`%x@@Ys0qI2d-u=GuH2Nd0bUm&k&dGg4~my)PyvLv z3%8LkMImiy8y$5*@yRwtaO_u8R3+oC7A<~0D;MjWv~LIS8b@mPucH1@PKTVz)Zx02 zOUgNJ`O`$+iGfqU*ugCzGfs4`h=Cb@G*4hapHG}VyT2msW?=79fB-pS-ej8x%sSP= znNO(JQwev#_EF^d)Y7?o7va$>Q9iI@I-9LdzsU#?Ki#RN_Y>;?b2;>(BUsh+JpNMG z3a6np$})iGuxvLlP*t|cqt1T#8TVv5 zvRn~>;OdV-FSnTiIkF^kof2CN5~)o5+izhYVbxbtoz}{*>5VYk(rYri&2Zm#Kv zT{s_0UfAHyfrJy%)SJAO|H$pDskxzc3l%!yz-cZB=ln5Q8I1=a?n+qQhiz}di2pm_ z9k_m|U{Y4VvSnS=jL@FA$0@~6xAf8zfy#v3)$z(~#9?W#>2}e9v{d3h{qd9 zur;rA*G{xrwCNu`y$a3geQ(Vh6$1;Gp?xaEr^X>rigH#u*wQMzD76wY`} zW`x-bU~p-4p5`wP_T`Jb=S7Pl(V`8z=S$8WN9Q?Wj<(Ez1o3M-WtZ=7o&0@aVe-pc zJPqP*%UebLI1c{HxD*itDP5~>7-^PPIPvsyokZXexBq)pf$?9*hpfw2L}GLCRKJ3P zZP7%gj@^2;60udkXJ&sY8>FDYlXpq8wz;7qGX<~JqRMLHIE~G8dQ?bX9k8YmU5aMYqp`K2fPIU)fA2YG4(z-YwtOE4UMHWnmCzv`47@hv~yI1 zc&N8Xi;p(1#{M5|zT^1Z{oX+LL?bzf5V$h2-z7(n1VIH<0x~>t)fStnppH@2g105< z=D|2rn>ve0T+mUua9W^0FuEH4rq43T)po*cn!ajnSRS_8`tjM1ync(0If^T)h%jRk zl;tHQ{@qHRfhXkXk3fyRHz4?he5B~C2`qI@_gQ9yK>u)U)d{7~L?UxmSrt zQ@Plm@(SgT@TRYTsT#biQieH8+7+fZ8L+3Mqpd{vlr!+*%s`F;synd`5c9=J1YBy2 ziMYbxebj1CQTh@hHVU#Bkg{gg6l~{hdTt$1Cm4{l8_VR=gP7fEw8^9N2Xa0d^}a4q zW$jsq_<|2HEf>+sS6sRnd?qha@mBW;^v|JzbR$o3D$nn6meP)HxPN3J#sO)3lDG;TMX1js~esOMK~W9!P!8#7P|)w$}Jo4QOJxVB!+LsBJ|ef5{RFAKY8QBU|32a~?Lj(c!*-Y`25 zoQb3muwR3@dCb-_N*y=&)wsNL{3Mx<)O7)wdeUA7jl-C@sOw4j5EmkyeYX*IUalo5 z@lGiEE~jklHD1R#d7kKGvfGTyOlO{uq#tGr&n&PSd~QzTTjBvVklow6Nc-9adhl>S zB1=`s1>)`c(scd+pzl$nTK7(U0w)y!VC4K;N~@JLauhXDhV3vH7cm9-zKMf@r>Q(txHp2Ezt zt7#Wp%V!oDkVT0>b>ooHB+Bc5e_|UecycmD^4XwzU2tVZPr8&|Q^%KY#XN!`aFB(s zPZ6@FewUoGNaJ%i_I6=DkHb~7;%lknw9MDP5~b~LW}|4R28-LF1!Y*XjtcehPAxAm z(5;5G(f{3RQsY~+&+5*jMUiX~SE3$M#9OIfcgE<$l5l$XRm~xTq0`}=t06M=kOyNZ za-f#oF96@XTniN7Ow5$oX4F9=?IuNo_mPMr*eHC{S@-`R(rg+Vm94}&BeX~>; zdfIHF>EAf7P!&^k9^KlHGq_R7%hs5F()Z~i?P(0YdN&iJJ{g~)omfmomwJ#>?juo8 z7w8a+f@F7HwZW?h?>Q2Q}F>VzTiG^`R?G9A7# zY=IrwiqdxTYh9$(wK(MQ8N|l>L72~S`w`860f36*I3vAu^@~RErelGZbk_59wy+6E zkuT{-PC6;X5Ri=w8m$lAr2BT{?;;0WeP?k%M@EJfk`J)8;NXSB^6O-qw^l*2;d7J z9Wv7tn?>Mog{`9?`6}|fjEI&ojHX(GFS^?JA;NFUJ+O=oy*VFYd)(@;4i2U)tjlFBJ?O$;+xi8E)j%T7_zR_b`7EWp&V6N#7oY zm6%9toRpI{z{ovOEFYSz>rF%zo?IXGEwX9n8oU`lRjby)?^1Q+6jJ+8&)!1!T!Nk?tFB5uJ4+wpdi9L9>fFQLpLV zmu?lHks*KlMlfMgD$3lT$8d_3+KG@gSw!j39Lg`_b}7!TOU%n@pAhgrV#oosGV3$B z6Yzz`@$&$3?Bw^Cp51Dge?AWMnC9<+utsHLJjA`#eC)RSC;Eu1wEs4tk9-8CQdvir zc?cTeSl~E9(=k!Ta6?Q&F5Xwgz87?wF0oklF}RGe@(YrGMoo^h1WIDFb`I4yPa?69 z`dzIPESFBscn|IU{zW!WVC2m(ee*^@Igv|nj1Ud^=#wHeeGbkp!-i)1oJB5T8zY;l z3v;PDjM_d$UYQAw<^K{Y;z^bQR}51^t(BbxYTW2g>nA5kjK#G5B1L;3o~bBccL*(g zr`k&!lFsM3rfaz0KYmLlJdtjrsyEZfxMT)f2M5Lx&30=2smRb=Wu+&Cg!KDWf8=uu zgUFJg;3@C#2~G^sDNX3W=#vO(F<9h`MI>wm+J${FpR z2N6jvjXi(C^Il^fP@~3(_-O8iC8bSzLdg2cCeVZp{y8*ONKF8C-4H@wPF3fL3n;dL zt)S<1>apB&rVA}(^aeldZivwXx6t8n-$+lKh^5yR?n_hZqHwWd|6 zOWL?UP4Vy_a6$?T=u8aJI8q_0ja{`ngwW3(abZq){)HY@rs{ahN0Qfdj(^kri1<~e zu5J<9QAvXG{4b>e6alGx5Q9jX^kD%z-P^o&QYoEyo*z2M4!KCMs#EtJ-thYcoRK_s zmfsjM!C@G3u-WBm&EkeniK&%aRp{bc0AY44Et{s?4jQF+)5gEbGO(Awf~bd3Pq`UV za>dN+^o@fCv%~n%d!UrleE9FY^h(>5mx0ev)ePCv;Ka!b0*f*scy~9&?GD@u0vkh> z-vUbk=Dsjv;+lBhWV78;<)0P#9B}F#DBG46$#|PAl5O6hRUwCGhC6RNB^~Kj92nS$ zgpg$|-wZs~#}G5E;xl`821%Hzj{$BXBYPX!&w@30qQI5RK2kp#qR{@xS3RakhF5j% zxqLi57ih&j2EMeJKcotryVsBbpS5`y3mbl$h_UlYNdb03GR#s7iT0qqxWltTH*u19 zK?0K^U4MZ%`GIP9PQNF%!$S=K^F=~(tq{w>lRf5L5!9DX zr)Kt*EjE}pc(lU40v1W8U2qf7}QetFPe#gcs)1u&) z;$&bx%!TP;{?6+&Cks0(p&L!Kpz$j216Ly)8yGNmsY^ixqZJ*-)Ljo#SBo+*uIAo& z{I@PHgfJjU#W2nf!+k^COh+#M`?EbRys2^#x$Z$}Aj+(wnQ(M}?q8iWCLxH`c?zy6 zduPi|#Q}Ajse>D?eifWvznm<`+&uE1c1hn4sY#QG(XH7t)j(R4^KiLn16Y zGN>@5eA&=Y7bUfc@-%FFK-wjW4lzt^3(H{cUYqe zoKX<2Ed4Yne(7pwJrY~SAPjg<#|SVU6T?{78D*EgERf{y@e8u@S%1~#2+kv!CTe^$ zxGF9RronJyV`X%uH2erVzi@u@o?dvt6JtEBLI5}Ty57@;u_AGugn#T}s&crjPX^Wz z3$~Z`IgSbLub!_i&go zAGyo@R*41DeaDbtZ!MF8-khaIM8}^V&FX_2uOe9g7Q@3!1x5Sh^Q~kS|6+uIrKe$r z!y7kTey}!QdfIKsToO@uh9|ZBE50>-O~Xc+252ptVZlHAL$NblW#(^+cHiV1^ZUst zzfLh8Sf*sMU7z{#JWuvYVUiZ~Mtyz%<5NRR^ek6nqQrEi!bB z3=|yU8q0M?Y1IwA_8S`PUYPkCDTOB%cvuLSAWui?nC~#V@cUOw7f5-cM2d#?ObY#C zK}GLh0>#K_fw@WDy>=Djo^|J_|K3vLVvADq6Wx=_Wj0Wr>T7H;qY%MQ1qlW_%7++P7h?bLu$K|N@`n>i4~?nz!GWF#|NRr06ezjS?Vd`^|XW&~AK z%IFvYn4MA(o`XiydWrsQB}YH*HBCe}4rvUV?Y}8SQ(XvuhF6#*=e}1T@4uzHjc8R^ zt4`?sz2qzezm8w;hgy}Um<*i26+xGCpf7;RF;dK&z)?8VZ9>?Nhhn~1Y?)fIeH?&^ z)TLl^PuGs>_wEPv#J(S0?boLSJJZSOo2B!Q34oad2>y`3Zram5=Zkt2oA$G3QNLD; zN$yU;B6;KV852H}1sk~to&O{cS8CeQrxJ^KXQ4bAJcVdXCa(qeIjhQ{SRTx8(aq!L zr5=mo!-g@s3&Y7iz1V;5VGixkIh#8pfE^PpN`Yeeoqh7t)ev&2cpJa_JS$y@ClT(^ zIVmxx6-BIM{?IVtiOQ*?&~}Pm0&%llQYI043nHEGv2!A}2wi{fw*i7Ydu1m4O~I9^ zH&=uxW3<^nIw2;!>?zoSLR&)5!Pev7Z4XHUU|+AQ7Tg#U4 zfZQCYCnz}I=g-}8`IyC6?_;MlY#Bq>8JgX`e*8{#?M;bDATviZk^y2#dO1Txnuz&* z0IkMEu2<4Sczhmik%MipgVyru&JTtzXyqg~PzoHO`htD0x{FLt$P}MM=A3+}D9+Vj z@OV5|+^t-29Ay7;@I4#dq`>0N+xR$14)Z|@`@jexR^d)O4CR_3C+v+N{*94;2zPR= zQ4xsmZ>f!#lf^rf?;#pnF)~D}Cr^$FGVAW+v!fPANH2CJcvJ9FE8u$E7Vn~;15mi5 z0D)8&;G?u$fTZAbh&LbTV_2CRw#(Ia1S7Ab*P+)be4&7C>94DJKh(L;C7e4Qv!%IF zL+}uQLSX1bW(d|lqfglzLedkd4>5*G5A{$`4-0?k46`Vox>X$6tt&UvE$8`X`{Y%?mzlR$dx4y-_9}VC8s08lSy*8g5|gNRCjSbs zkD_E3YO6!;o%i_n8@;1`S;H~6B_zbB%_?7zxCF&WN1T(ujKgsb09{B1yRIkin%{;% z?a*b(HtB@yb*oUAmMdsAG9)u%L`F5pc?Yn2m^|sa<%a4gk;i#6C!{+?R5pIOSade^ z-rqt|PjN2rxkB&*HW!+MYEn_Uv!R?y-=eM&8tO7mSm&G3RBM)ew<(nSZ+x;ti_y?) zg{#;SJlDI3fYM}%`w%{LA2KnVil;352^dlRpwoE2bSYJv#6l{{x7=wI6|U=BV`v2d z%wEM-{Sxm`rurTjw#@rnvKj7|;$@F`Q(d-mlCogD&=Gv$Xega!#8`b3gr#H1{gsSn zU9HqwPUk%`ya%kuBYw0&*Mb+JHz)yOb_UpKHkpenEunfbxCXZE zCrruBzD$79h9GyWQf%d)e+v=r5U7ua2!7JpesS_GhJae0{$uVBp-{|2rmU;lH3-Z^hdW*uMHJJ7r^^=wOdpcFCe~{K-=%=XK{YQA zKJbK$c4NduBaCz_W}=-I;8~n5u0iFexY6SDwlw7@+aC^6m_1m0!`NTl>WPfe z*@fYBp3esO?(Z3rUP;(5mkT#=Z!yBS3{b~~pEBks7b7^X#P|jbMpub6UxDN%R-35- zgH9*%V?N_aI zl&?oAu)JFayR2+Rma}O*+d4dDLKo4O`e8BV8Z!d@j@lZFHigu#^x7tPK5E1#?f|+d zx-sjq%K66dkaRqb2H}|rq-yl3-SzFA&smext;EWXl%OupP*dde5>6ibV;}X@2h6-j z#<6u1_q-D$+4yzO41J0<60|TZ2jjg~e$YQ5T>+CiZ{b=Bqa3SwYjs0~(6jX46OfzF zxA6@OwQ@&!S9^5XD^N06u9_Te6a@xO!J@a}+A|uDI#@)2(ZRkdCNhniWr2*0vW+f%v-Q)w1rYn6MbByO#tR zM@XqtM=o|FG=J`#>n8eN_{D9$datHn4lBr?SwHcHP)MA9tD`rj&$i_w7s(Wyj3vxj z8sR7XlNmX^-WbSc;LJv220*>={sKZAj{tiKW}WPsZm+lr$mew!+T#+kib0=$doYa* zruONrdKPZy(RPcf0BddJ)q!q9-r-b|Cs>r}4-$VkB*z;~LVY~0*SxtxYVPv?5sM3U zWi7fW51~>%=!UV6d`s^_oj)V->MvDwzgCodpU}zW#^C%%vI)fR58!V1=~@f2Ivgs~4_}s3t5Bybt6D8Yxs$YDM#zQWwYtEE z4hs8f=msj~ZECo{;|5s|xpDNRm~Cq?-iq^98MO23F38G#crb)S^HS7?`HD*!R}S#7 zMen7eDdaHH+1|y>?#KuFU}cy>t&gAtgZQTQI~paAJ@}jlIGKqd5a} zsY60cpwiMJ(CABXj54K^Tx&G4j{>o%>GzssoVGLUTp<~~?Yz;z1BCls(jl<>G|C1* z5}&xe#q%L?fe+ipaFVqJ1irkn`+!Nx^0x03w*Tl73#Z^_y){C&`z)v_igKD=4w0lo z9TlkMV+h<0cXDn*8tcRk3g{=B&vk1pBRl*voV^SAn(Wwvn=*}i)tt*a-y-~jXsHr5 z9vt<6Vw>}M>tAsrQSB0m2L07)uid1eBueTOeOz>Jsv9>SbhrM%gYqst&w{#tjxD}? z2{}FWqLx+>mg8KWrBzIw;!?EThP-U9=7(4)XBR8VDGmr^`)@@d1!Xzq znF&_qbA6Bx`f`S#aPbWvT=`6FB(-!~yXZTgpxZFx<)2+<;KSn^C2c9bxoHW;Btip4+I{Z#}gED=sE=K{N23SPHz2vs;wjSe+jWmS%G? z(+}d#; zQPucr-PYub8W*NynDE;KO~(BDR)ihP`Q!Wkgqtc>s@+j4@gsBrN?>ucSw=?TIBgOS zadlGKCX|%~k&G!tB0`;i+)+_~ebh;yw@=xheDf5s@O_T$uC4nfGla*#!2^YREIs|6 zj3=4{8EK@~q8y~D=rf9v$&IFSi?gx~M7YSKOGhb29`4wMqDshWKQ(Irf6V|t2ND}E za!*c9ke7CT75=kLuO@y#){dzsyjEOMp1)-r(xBA_hb{tjkKcP4RjW3r4D_<6r(4gy zX-!A%!%z%-UAw;K$m(QNvjNA0m~z_$|MSBP&k+B?+LD1)p^JfqMt_g5kE4QD2J@cq z&*?UaCOsqPq_*uiahP2_L=j?|r}-6LuDrl2S=fzaRf;aW@bxDz6NT_E8FZd6^!!JY zoD)_ETq@%e(RT}ja$<*8npS#L9&nb`w z4V`fid2f+K(|>%pW4YJ|@Pygp0_CD&t|a8H(h|;GC;% zsj3;GXr&eysUUk?a{{i6+xfVgV_43`n4E0H9V#i^!|nJNWFVNJcy3@0A`4YA1PN0) z$XW$dYbEuxH287Y!4xKO-pH`uGlUDJ+)ObT$h`8+Ve~^Mac)`=a2T&Y?8H7R1-zV_7g)w+UHFoK_9o%Iqb#DMbu~1_>;b!3s)zH zspJN_Px@5PO-Wy4NZ12?OjUMzZv|%4@q}w!lzWd!E+W|+n5`9fTE{CvjwJ6W>!38j zBcbCZ1fyc*atBY#f_txzva|$$bC4|45zk^-bwn@-<-fszCEAf=mgV?Wq3@v4i=up+ zfd9AcVjF6QAQ@f=^DJwm7kV?^J7}oI{J5j2#ron~QRQlZ|2p0G=1|n^8%Hf&fkm{8(-KgAO$msOQ zb|SaLAsQNl)uc2s5^>8KhCT&4E~f&s@$JaQ13O`@m1CgJOj}WfWHU#7Q|KVqLQDCk zwNC|JGu3_^W(OjN-6_E+OO5n#(?)v| zVi?gJ3GQAhOS?TgvoF939$cU}E3DY9(~4RNQbg+AnY5?JPRQ4;m_xeXVX~Zn{ghO8 z^C8lVYW%TWppRl(?4%vAdi`ueL9wikm`cV_tAKtj4Osy~ClrM)?WEVPi7CNWwTOej z8cYb%lEU?3_xF@A@>;Rv?4! zD<>r9N*`j|t$c^NqaL5RTOJ}k@|yQ(sM}q#z}Rlf_tBcy6#^NmA9pBV;qB1Tba+M~ zaCTpVr9Fy?*IENFSrj@St?d;ls$tP`ggq+@>VGwOTrr?)z<WPzKzy{#AXE_qdOCZ~I4PPTJ-2cuo(MQh;qp?0HwSyOrK7l# zjBf{VKgg_Zl&V;2MSmY?wqhm#TU)oV`oWE(gw{oV}j<|@{~~!grC$O zgJBucP{ER)f9;z><9kJ^o5Ni3ObaX3Y2uBwL&DcYul)))I&1aq_fd~KVyqI$9Q zEkM1SiH6~6aUTg`PQpc|v!FESn&3F1ee*gmVqLvu%JX;_Fv_w8vHen48z7FTgrrsm#&ZJ73v5rmkja@I;SKJ0p~KO zF_bKOdMycCqbw|VKZS3WUY2w86aC3X^0=XZ`SZx=@XgOCi=M&@5SX`q82c4?OpA?1_1%CbgBJ7DI zkZx1QyHyZ#b=IwJ6SvD~dhnDW>pq^F8?pmT?>p(X5VI`Bo5(9Ek*AyIq%A{uJ1ObAX$bV;pBdMDmgg;9-^btp%mcn9l=i{V%4gNZ+ z#C1~tbHQqpt#5>M?{^@C|G`g}MNO_jY(?P?EUq2@yY*h+z24xUiK^C;2$uY3#>Fb& zMUb)10XmDATUhSZO1mZ))<*Yb?abs!O0wmeTUIlV^0<~eQ1m03MI730fJ)h{WzEdgyL{7=p90Kfc_j3Eq9aO0v<{!x7s zW9n-;YU~64)lW5SY1zxcHlrw>Kt}2;A96q;)wZi)z|q*mhiw9Nrx}sLEO_Ra{SQS2 z{3z@dv3}bw*~a1hb&W~A+Mp{ve1%b&%UG6DDI=Fjf91<8eE zo|`~#N7s5f13Qi`O+>%HkKyBcIGy~|5Q_T0orO1bFsq$wEk~(Hm?6XZDHi33Unc+ z1_%R00HOdffH*(`APJBHNCRX5vH&@NJU{`U2v7nj15^O205yO*Km(u&&;n=!bO1&G zBU=Zcle3YXDZt3t1?XhyYz;7S0T=^}jZCbaZH$~PzL68a*vZHQXah9+F8L2~`j5H) zh1Niq|3CX1|F6IVU}A4$Z})w*wKW2m0!-~~zI_7#0{+`g0MOCZ$OZs(H?c9Y1(*TM zEPnw3X5Zcfm;=ne$K~4!fCa$9!@&Y*2e1TK0jvQw02`pQGr$&L2e7lW0|M+^ZH>RJ zwluc`*aPgpGaLX8MovJx|C;h&^glzsyY?S%0>1B-_ND*_8&_w5Bf!xW=tn0nR{M%l~!38Tjkl3TI1q!2g`#0&uZ#0s;XpZuS6IfUBM9 zw;3k(PC&pffE&Oa-~sRicmkd5Y5q6<5|-a%_Z?mw-{GYKD$-u6LE4tJ98Hc zW@1iG4p_kd5-h|VoJ`E$whBPfAG72nT?tFKgV|?mNwt+`i@qcZ?}m7O}?Y? zKh6B#_;z3O?l5twnVM(7U;lMUPWS&Y%ka`2M%b>mG#A{Rcg=WR=h%Diz0T>YJ8QU3 zb$`0VQc|cWm0+;dbFyGGwmRnni%kB3QLlIM;AGO`t#Q+FtuDZ>uBU;d9j9R%a)DB& z3^Rg|sXEK@V!!(C9KhSkgWgwI$cG|onS{5^lK-XjT#lG-ie~_e~bzUvM#327Ucl|X= zO>TMxdR+oEG6$b+U}6GE!`5B}iGq)k>;B^0URfF&Tbw@F?%5XXdQY`Adx>Q%DIqKw zW;&yL9Nr+&z*$XaL`ZufQzgZ{5c^j!c{#9YqJa`~l%j^)C*euAKd8bKi`fKIC*q;F zQfz8x;9LB=g@;ufF}es%B;1ht3@OTJg^phvlwEAp;~jRB=?XJu1S34i_7Za&%q?yJ zfE8y257`u5PaMs5TpO{8-T1uwn-3Gxn5paOY3HdEwCVuFKgi|8G+Ko^?(!_3V5`yq zGWyS)N)KwLkdk4Fu%ple5#oW2R1s@jmT+xbHu8ph^7`iYZ>$%H|9x*FjTN*3mb*$t_)Ya#@aHESAMAgnxzs}Q*pcrpO9R{kCC+ot>;XpMuo$4b^0{efzH&d3t z?a;oNa}&6X*BQ!V2?x>c{|F;!biC{=J0W>I0lHvbW zY{LUnyXCz>jW-qzRN;@`#M^&I6Md+y``{h%^GUHw;_HjlQflNGbGKnTS>Spp!6eGf zl2Kexi{iP!CRG&J-NTn*QT|P-F(JGos)&ZtsIn|4CE>?R){p~^2lR1MRQ*|A7&6eE z!<^-(qM~ehftws5v78o#Jva_i8>2O0>a}6Gx8eT!>JuyiZqZ$T&xCR0`Wed5%ociF z|48MSjx^^zf+Zm>Ze<$!NbSsO6P=jDqnduGM8`?$_VLs(QD$Ig=KsqxS6n9QsHxMV z^K1lwx?{AVN5UHW!`(lRcZ`bd`!i-5A3Q8b%_TpX*Q`|&HkHfO+IMi#;@#)2pGB|ztB56|+lYc;*V@Sk?h zZCFCb6`HA17Mq@X zUPU{z3ms3wclk_&q>jt8I&J)@vwLr5AvxQ1y3uc48=DD%gaT4>7ROfo5O<&Dc~ z*<+H(Tlb)*=C`~4g@O?9lDDI_KtTF7LK6qse!FMS{zpi>5A%D8-s2{&iAX_ETlgX{#4Qh2XHWHvN6E zokfQsmX~oCYt!0dX!3T%?4xjtjaUQ{(Z6~k49i)8k5~gQ`i4-D6cB5?fVrEO#llg` zj;$=BPaV;#H?kQR>6Q{+KRk{Gk0pFMy#IKEm|^%b#=k)Qt3UjYD>jwBP>KD+K$aYC zwkjoB<%jjxrTe<4fPb1wAJ-Ov;|}(Zm=0x%v$KXp#`yk>u%FDa+Q9gyY{crrQB)J* zaFOaB^qm1^CNZ(&w(T<&zKSI2H1Q$0ZMB-j=;fk`iht0J8zBeed(5Y6PG_-ev74af zuvw|k59O!52AWdT@<&FDr{y4U1k7fRZgen#qX(#=NPKv{8u`#cP=CWJxH{PcX!5uR z)y?C)>{;?qH$g;go!wOaq?l&~F1{tj_~Ki0tC7ek3fS3x|7 zAFm`qW7T_AM>~D>OTvNbY#^G#D)?!Ensd0ecB}#x{fbmCs8)=aal$b#4=YpYqin&t z#vzSV7^VaXGbiKkNxEBnP}UQ@z1P4(ryRuGRz@WT*-9w>C!|$UmTBu(bZW~4s1H&n zzBRaD6|(7v0%YvCYt2vC*XR`$P9CgZkqi~mnk{8zcF{pG82xMbiKivqWhO)Rs_In( z4Tv7Vbd1%Q;wB&&QJU>ld9HbIuD$LD#8guWCVLBnGD^Hv021vVQZ@S)b~$7^QU;&g zV<8^so2`~(Hp;+vCr~qXmDiUdR+!t%+66m1hlQd!b_SORO5O1nep3s%YcrJ<`w&(T zMtsqcTN)ZS$fPv+X1^bP%1Kt-USSg7O0sewrpDpp>3E;3_x=c~ z)-LcDRtZtiy@pIors9d)sQ$|hKI3|Nt@xzVnYx6}s1M2^L&lgGoa%S(M!syz|I+!t z?zV8hW_=9E-DFK7f1;}FZiojZj_*kEJO72Lp61%yPo=8Su2xF9sv=UMR zMq+j!%As%escYs6A-#3{^4Op0L{Lr zuE-|lPMl^4YTSp|fkwOpF0N#dBp}pXR6t{>Op)igvRokDF`WcH_b+==oi zGt`nCDMXX?Q|3e?A!g>G&lc*(Q@u=+6gmncCwQgj)Cy_>l>eyK-ARW~YtkC!+Qhd) zF`JK>_JJ<#2uWrhIf20II%F{@>7$ltbZueUMXC8P(?TE*tTQ*oh^n>dlJtR+)l}Ot zy%Z;_*NgYmRn(jr6X&^KV#vV?al6;ED&KgC^o!J$ZTSc{*Bber&z6w6OrsIRil!SWjL-M2R9Zk7z9bhe_vf5`aJ4rKz1mhCIhT_?2rK@v6&JTjhx z`8o($m0LWNZFz`?Iaho;3hX?J1*&%f>PmqkUXuWc@Uzp#Uc68AEd zlSQ$J0VuD?%Cy?bAFgOMul+Mw8`9m3)uJlOh|N$$)QQU}KWkFUHc)=tb@y+T;?M$c z>ddv)d(a;HmR3lK7mWYOIdx|Vykfz_?=jr$tV}I)kZR8r1e>{$&*@wwCeQO|`9DmE z%7{JsO-I_>3mKWE$pn{KgcZ+7;Glk{{gU^1A74j}KhV2zPMfBw`k)(IfLeaL!CUhIwKI!0J?2vwL(3V??LYm9(JLDHafQ1=&g> zOmL_Y-23S#i+F5eGJ+;$TA>jNy%$^{inOc|}IPd-2tZJ)Rbx3q89+ksd z$}-2N3e~H2*@)d=p%3$#8(aN+ao3(#bi^|VtN9_wjdZ1dPT&vV5-%y)1C5kW!+ob* zH%dfk827!p?bE9Y+6!r7JTQ%c(^!O@03F7ZjjcO}x!prg#`))11|F@zV0jW3({ zScXO-Ilrhx9qsZ)MK8Kc0Ud6zL)7?v2Ky;Txmoxxw%f8>sf zvQ^A09N}s+p%l^|ZVT&{uNeUp7MRz-o1$p|kl37-@iyxyEq#4D1tV>0W`9OGL6+58AhxAMdN4FR!@j z`N-j6(CB1xVBf88)O3bKyXD51iLN`i%+S6WDWuFDtS)!1X& z=V!5oo6~`$>veE{#ceIs+(Ge#nZlnfzl|G8{Ks4oR$A5R zn2K7H7W#}@WTOSKc+B+uRjolC<@T3A)2#u4U%uMKw9yClvf0JKuK*d_rP8AKh?Rri zmBoY>JE}m62l(x{YU~c=Nf_Q6cQndgIJ<`mDdNsJpn;Hk`gd#6xaCH_4cu?~Q)>=_ zb_)g?lQEFe6W$taC#P*?749JmB>bT6r?ncUGi>XKmHm(tz=ig1@QNyUx?r(eu)9EY z9G&${$!r3rylsBr7|O+Zp~>@R2Y4tHwagCLG4CQm<N^j`yo>CG<2Ed-!c$8dZP+C%o_c{wfY;dKD#LLCB7^`*42HE#5n=do2$%(xw_j zG?ApLus7O~UGUeM>^=Lh0ente@LbKF>{42iNDB%U5}F%}PQCGE;O{OFra*l0-zVGB zF^MGdt-s21R?BLORd+y&mlrCbwwQ|MFmmZZ)%0^$&+u$yv%(chyETJeVV?75k1y`t zSbMv3dprV%-TpYESxnTV&b->IaTtsuiMlJ5@{O;wFl*M!$;H_|V#8vPu^`Qrs$iwL z`x1_^*tPdd^;Qs~m_=u^YP{kt=M?$89Pd#n5wteLUS{=--em&v611+Pt-7EsPn+0k zpSM}k#c@x`A&&@eBECb*c^vPj6kw_}lMh!chpwDShGVZcDKTxh%M>cBQ-_CLb=Ntc zUtpWyhqc_PUm+8yP6#@9&5%d4KzeL99B`OspOC%k>G)4pykjS>g;6^!j!o&YFvWM; zzujzNS3q}1z5Q*kI^xr00t>rmEjAl9#y*Xo?6i)jMaa~!RHq-8m-a=nfI(^87oc4nFcnqERNr0_kd%wBa<)5 z9@KgV|B{Lo4NgY(uUC7du!RS%lT=t;iqwW zi>SWL({h0|zrV&H*9TE{-%Q50SJ#9Pu@nER`sY&zONWhdYIh1zgSR3GDFpfx8I2a| z@1>m>=Bu96!PKGXb8z|xgSx^GAZon5GNH%u^tNKy9b~;gm$!EG^PqYxJ67!#{|J62 zP3FoiOY7pL9r|$_YY%r}JqFR-iNU_%tNc%OMli3YLX(*$<@|brIG$>AaFJi!Ulh9t zVrhmHr?~BKC~H5ZewS_=r_-m}#?#ogcr#+FZ`|LK#;D+ic*jLQeW z&&!}_c&6)}LHIYwI;nikoM!mSkkdK&mkR!V;RC_X{U|BB3`mo=ivr$?)F3shEab1Trfn$f3 zec`P#V2I`7H&`R)Mu#azW27|uGyZMRThO!0p z2Mjss_h!?+2s-g-nB$Dov$+vZshVeQ7;-o-G{9EAIq7?l*YJn z2dLS0m5BR?} zSQa!D)N6u5227oI^Y4iVXry{d;Cjx0#Htkh)%eE*_f8L^jmr3Q2pP)8i7HuY{KhhTP%KG4bEnHb z%u4@hr9By2U2o3`m5|1-73e^U|uP1yTjP zXdTK6SExqB+dI7sx>}*M5@(yJKZL9Nc7LrD%{_H}yKa4YuJJX;j8PZD=NV^0*V4DGOH0X}q>+s=DeTxaEQWPiv7Q~&Ji%lP4m$R85pz&y(%$pP6>$I~t5ImL{~ zk0{+lr5!Wq)0wa2o}@*;Y(aY-JB#I`KJJuo7-Y>C6+`V_cs4H6jni z4A*wPUSa%81O_Pv!dK4b*FJK$@VASuf2H56QznMrRy2|;re>$abuA5Qani&r;$ZP( z21(Q^4R(Ss4QtOX&uIp~1um!))=)36>V~{Q$SZE8S^~1*FPnurd`f5^c#nybQ)-{< zEfNjrCREOac`-_>vWf|0H36yLSZ4K&Dq=nHj2QGc!`peNDG(TlZOD#F=QUWaNmMX3 z#i2uh>|WoCeNDq6h8>!f28(7|p)v6vRznr00x}!#x4pinaCgaGVVsGXm8nM~d%1fG zb-J~o&szH-Db-T?6%8=AL;s^b95)c7smMHu9ac>N;4N)i77X7MR?h>XrNn{U*9d0O z)Eyb}y8iVL#$sX$$_K_(AK;u8a!b0Y{a%LJHHf-L#cMB;0_m7A6pWO@o6uts$5MeF z=&U`}0UC8mmMJNrSM(HvBKE!7UqE(hU@e5*ZKe9#;9M|D$jEeFqL|+>)D^D=Owe9r zd8+Epo~l>_eoDP`qd#A=nU2yF8HlHNNCe?I<7GWB3@NJ30V(r`TX#2Vjdl?GTBnFd z0rSw_#I7Na)0Zi&Sk!qsm|e?rf9-N2qi3Oel7?waPwpl3sH!(P*5HGU&1%T17<$6b z%$TSR#Wjbjm<4kEK%ST|>esATX9Y435&!7%sd&0{#TQ}qpEZ8Y)r{Mx=b=<6!8dWi z_3ld}QX6!Na*i)4%mf8IN#=u0X=)6IM&i}vp#JfQ5##sC%iS4v7V!HyY`5;)^R75L zS%Jln()oeaGD>hXYD%re`pffda0PYE-3>o0)sLaL(woj+ZpXzpmz||Dim2?c_nIYI z(hSbKtbGkK-Z@vD_L_3H5X^+Nglh^NF`#G_XvFbULv|33{60g=yeY+)4>YOaf;&00 zM`!TP<38{zbn?cU_)T<^&oS772a5< zHGh;xoTUMggoOS!{aVUN>q4`k=E-mKRSJyc*BsQLGH;^y+Q&F!uwjZ_p@#{iiF1dd z2#nILC~M-+k7zv?=Uq{XGQL2JMP;up8R>rFE>YdNH#a()kiD$x66FiYg4ML9`AZz` z?JKT^$ju4f&zDlwy)zXAHC+^2M5V})l9icW_nB@&2SJWL)uWDV7;n*JB26k^>HjnF zho~-kQ^v+A23=_==Q!_mS2!BsdY>?J7HK%?1qf=)E{R{A*dgyc)vvEj;e-}}ngCgn zmI9UDE2l;oi$!MW=j>rKwGiv9!Y_4}_wh#o)Q#`~5^f({B6P+PF1}nLlP(g_d)r?x zhA)i#qf-6{cc?Yk89-(x!#+{32pK}9)1_EkXnQPLQbdKvS;57Py5qIn%5gb$bX!mlPtJM)g*#xx=#`{(A&~X2T;}3+8*n(-DNq0xE{-x{hax|6!w}b zS*;sVmj{Gcjd5x9D75+~w42G6r*5Tus4KAf9w}viL~@R8gJ&SmQB&r~br8V~Mdd~I z`ll9}6EwMZ zISm|k7r!-eet#J?)ae4DK8w=dB=pK*C=j>TTxV{{BR(ys` zp@14kdZX{}1Nscth+7QDg35)RR8l=YXl(J%RO?5g+F%|AtNNBE=3jqJj^7Y9pw29s z1rhpE?V@%=$|dfI>P`pQmC&2Yt{Wk~M8dL<^Wimr{6zVGv_4IPa&E|Xnn5fKl5y~h zMRf{>d;IK``vN>;u8M@KAmZN<9q1MwcfhcHf1f-7iKXcI@@bz#UiVhLS+uJ(8Um0T zD#op_Dfq@T2)JKE*={z8q)oWkO60VP2FJd1@qa50gQ3{~{2+Cj{i2`^zMXo zT4{yzLW89}5q=cXU?0Fum56Y9qSyZT3f;jYMQQ$XsCs+tAF|0kN!2G7W`GM$#zX4Z z{A*msorM}mOkhy8y8!XZy*b&5*Q^d15==U9gVZ|E#;@?$i8<+$2-=&hRF9*8ccZ#Y)`p`zaOfh$UfMa>9Q z7ow*rh~gx>9>nwD*j;bTwUGW`_c0AxZGYL)89qUZ_srudwgB;f&-IsrN&X&``YWAI zC|#6W35Vl->z(4QU~OaO;j`N~<*^04ZvR$Nz&`It6My=@!62)7NYqojcq)>mZ`sGnt2O$@*t4&S4^(0Dz<<~ zIQkUly#F@0ieiRLh#gq+lo$7Gf*xz<2J^BTmE)pCC)D^|TCJn?+%I)C8kJymx_fOs zO@u>y)W^`{{k1LsqrK*v!F?0DHE#u+B*rABw44NkgEo9e&akyz+RM9che}#*lliY# zl68Vnq=D%jD>MfXHq9RYGYwGKV1GxF+C2=Y%hKN%GQ2JNAdHZ4kV2VncUTV?J*8`EC;POxTi6CqNY)TH`#J@7t5m^m82_yte zo@sYz=HdyFjYPH%9mw?nIHzsrIXYjSana4^DPxs4j-MNLQVr;nk?793Z@D&ZgCG(uPr%k|*M%r~7tWx)yu?-;wOHd2Lc_5ev+z)@7 zBpY4?q0;aFY)@=lWBS1*prouDlpcN%s))-_o+&_(lfI5x5@jOB&TKATU=Wjb5 zJ#ywlwob-}EIHvjW!`mnc13F)I5RVN%sj*jIWG(N;MGPep4YzMjsMTLQ zH@3Zplc^+Uf<*SarxK$>i(k-O0f}PA-YpuIOM|yf5n}6@?(e{)fI{zps)@8!xoRn! zZ+mEP&kM69WBIN{8UVOxE~)Gsp#>$t)bx#27v|tE>4U5n8tE_?9p)|Itk7A)_vN31 z^-oF8n(-w9sRyzQ%6+GMU6`4wY>94%0)Z7vDomb~W;v0H3=Cn}R*%NS{Se_2rf5L2 z$%THKoP=bx%}^T96~9}zF7g5K(mXXD*U~ezv~Ak>v7CdW(*t2bd+Tnr+pCP zOl?0sT4^J+M@;t9VeCv~j9LqXuI|txqZT44f%il`7Xs1;UIvN$uQVpi;>f8QQ$q{< zK6MdVBEnGlYH4{dU`mwL32X0|>7l&wj1y5Ky|F`g8u}^3smS2xS(N75!`nL|#%yoV zP&2ZG0=-Jck2%I6hAOg!b5DDQW9P2v+%~sg2uEq;syKJMi6sCrmLdroI63^FG)IL7 zN4}_KNbStvgQj5z7GjU0U2{B_Moaf-2N5?{&i*&vlCb2&?yh^sJlV_a-V$#b^+}j` zD7ghO-Z!o_%J|K)eEtI2m7hdJvWv zFn=hfy?q#AVEpzBCV?lc`ieTrXIhQSA`h^O`u?f1Y5I|ZuB3hJ7k4!Vj%e6W+-Qbc z0(Bj$9sLsPCDY9{e$@E2j#ePS=al35%XqXcJ(m;eqqvawBJyT!C;(iU2a?HjZO^e^EZa!Xl*C@uAM7CHr$-JF)%FA|Xk-G?k7R|Xi6G!v zAEeC|64A;AhZSQPVgi23T;JvRMjY zOBgjCqAvda9UKxceoyhw6Lu73X^+RJ0>PD#!EF!F&_gWJs?jnO0zS3VN5v z2!=ii+aVA@V-Q)CR=sJfj7EGNKfSR-@*W4u>%A4XsqY%=@5Nc!4|c|TcAbtbq&+gL zZIf~xUpD8u=Dt-knp34ZJku43l@d>Sf&^1;LK_ony5AeMW)_R>*xmNr+uyAd;-Y|s z>(a);fJOuU?1OGvUA$!#xMnGDEB(X)5^kW=C4f^QZu$!S#0U<&=a^ie!h{%9-EfS` zu-K6gxdkvwozm;I`0#RC#kgjHb_7CO$I1I+Khf0F9a(9S->os3nNB|QuQLrEFLN3n zMicVKO7&@NG-N`?IYYEb)V!+OPUSnOJLJp>uW#y>FT-G!_su=CSTzo11!*6+TI=La zouFxuRw_pndL9$+F=7PW?#NcX(t|de5V4?Rqz~z52|q4>4)9e4?u8H^*FI~7^_}iC z4QQj&DeXHGce!d*TkR~u+y>$wGK2dv!pVy9eNeJj5L-a_O}5xX_@XFZ!muw{TWP2i z*o63|+eFU|S>gqI%HONtn|@nhM=b{k!>CmK9$KO(-J47wjS;g~343;T9ss{Pw_&xq zH^3|$qO9fpIJRFF^MsTLQI|{0#TeZkYqC}Zp9+{l766;kpU{6|iYbDudfvM4HFGP~ z1;xxN$W8rdwnD0mWrL>o6oTR2ph6;&hq3AHMW&w+TBYLR;8wQrFarMNb@jE!NEsh* z9cBj(MSva{mr(6h8y0&^|Fy=oBf8qc8Te~zS_K(R0(Jv9({TS1fy-s&ikkvrLpDx* z8;gX$LQ~$5C4ifpRx_Zu1}MY#BQ8u?dm$a|x6PD0wI_48hQcTm#$UODHnnRLoa!RW zt?gesDAZ-_6Y5~a0ufw=oLO0_n{~_*TrIq;%X(+9QmTdoVC%;Rv5JnyD()_uGxG2L ziP$DtmOZ7jk!hA9aq{SCpk;Lgl04F8=46MQ`leRvsVI1)h}kv-zYYbHzzbx%7%_f| z(-p@)$7YwmiRcP-B)D9u1dBFmW<9W^K$ud#BT&fi9||;b+5@#4>OdekodpIC1~;ks zy?$zj(Lklp)6OBh9^MO%{o22BC>G#ZXn9@GVMi0X3QHKIagA$E)>%knnD|80Ta>fH zXp)6vr@h9rvIL2tx~jRzLFQiqv;jMioX$***T?ftbxmy|;Zs^B@D#H>3ocNSwt^_v zd82Ioo!R?ZIZFfqs9Iy$f}67>1pW2mis3uOt58Uae{jmlBTP*)=)}=$M&8_^1V86Y zVrXU?)bB0RB$%QDeLsAJsPGL z>X9#UfkP~Q{ttH z-Ot?ic*eE9eE@$*D(V!jo9C%(88Mxim?Mi z;pE5Dc59BK_n}RoAc76rhsRJ**O4k4^7@2*%aSK$l1zfM- zm``bT=d`gUj=y!zFo5&2q7F^9@JEKF_BX=_-*ex<+fi1wp4r`4OS}o#8%yT^??ScU zeJ*}0oAszY@bTbNAc7MQd@5fiQ0EPOCECpTJNs0#nTGi}FQrXYb1#_E5FIum34??y zLB@&~A+M@Ne~n`K=hj8l=w9}|19$vs;8hIEpf8{$_x&QM2(;tfu=)ikafqeto(YSRVmiSsN6O%Xah>^3wsY9F+KQ4{hPHo0q?!4Z z=OTWe2A3k7gtItp98j9>?dS;>QE#p%?6g@&_%EzG%WHLvH`&mzL_+5eZ@Fh8aX@V5 zYH)Wp*b1&2HR3791bA_K!e!D{kis1Q1#f-z7pa7=ox5S;cM7-Xo&g%3B(Z|hRZS3o z@khq{2?kgS^LrrJVNPP9GsQ`mG=j&ps;GTjQnDtK$MNoxc^BIu@M)$A16+)paMLe2 zTnI`Tv#p_d>R@yK2s1Hg?r%!356sC28&XIqjRe8VkD)X&e6xiqPP~VN(6gs(qyQb| zCi1ns$Cx@%9$NMK)bw7tVohk#bFlW%5C))Lfev5;H8qS-2Ac~wC%oHU>I}@uZ0QsV zH3#DaBIJhS)9Ei4JDSF(kk?(FD-j1ie?^*gX(@~Tl!8x=yF|{bCAlpb+0>5+aq*dc z=J#<2N`211c)Xnk-mOha44<^l#D;DjZ{(A#8qd*TF%hvRW>SL~3CNEH`sL%gsaQ2Hk3D z_Job^@SEigc`5dx=f&umpLK=JSj#v{q2g~lE~X_%vW_ANXXrPiN|cs(P#8~6t-1J+ z$OYhDU*gumeLo@y6L4j~YX*Drb{tbBQ39tYB1#2WE8khUPOerzG*ygPHB9av&p#Ju zAk|b15x5C>8_7SAh-vys13owqH`R=WW|IDZ10dEcU4m9}CT z%mabY2p+ubSWa03IU{pD53eJqD>705Br(@p<#EAi*CWl+9D-S+)@hrzn#n<>Ku0`? zIo9CwJbLeZ7Ib6`{Bbk-Vg>#4L)PrAK={<)T^R=6GJlY&*{!mGcv7mK97NL7!usiE ziiOp)i6T^ipg~BILMl;2Bk;n^l&_E+R|VK187L>o!vPp-=uLyVEbl1nr}PqY<^zM= zaK>@E_@oSJNrCP9(0#n@@HV}xFj2;*vr$7Z0Z9kWMvWbcXZBuwSDhgZk(d(dx5Lf5 z@d@^}{Xq#CZ*Ke^e{l!U5jx4>cR`t!-8^o@E7j;}Mc#nN9RB=D454zS%dA#7TgZiE zBB6N_>Tz}Tm%{cb71YI}V3shGj}Nr`sn(8VUNPF(gKvt4r^4gF7)Vl$&|PHTq4&#V z^oa+xCdc@ZV$9J$!7=I8SY(2gs-E`CyDRbKI`P5q?TF7ewsnuKr_^#*Um5C06U?HT z(eW$`1Bb9CjP|%Bt$aqm4TBs*%j>OozKryqWS0H_A-Sc^lvdYXe^@D#u#4`AB*BJu zxMG;6Xc>7np8xQ=p&*uFlDaeDoT{;3Phsye_b^>le#=%JNilxMYq4noszzSTMq)0#?ko>nt;y6MMC1r5^#1izDF75?wIaB zip9S3Bc(hH@ZM2d_yG+5Wtf)&Dk*7Ij?IN_-ya!v$UtUl`0{JBs|EP6IyWnz`Ej~j z%~~UUN5lO6R1+bc2!u+7&QziHX=9NbSc6`uqWM(Gfryya`u(i9H@YsQOzLpz*H)Ii zDn2S^w91$FLbVsIyowJXvh;N=B*npHuxV}Z;QE-g`!>2SrgMrM8Ua$gn*MC*4O}TQ z;(JiI+u~E?^gDbq0{N*8vtbqze0nd(V*<8u1}AVMuIH(G7~#?gv|PL%;bZTw za^ogCjR(|kK!}SQ?-gyJEQ)l?Tbp4&8AFH_k(F2sYGdC(@Ff;nC;F8F>8c(iO#6qo zYg63g8+{Q$s+WLtW=3*N+=*tTHqparR83NKuor;?&xG}6(h0csXgrnY`+cK74NxuA z6ll^X`2Dq(-E;Fn8`?drO@3e*rGW;b2X|@2EuBNlQ5(Z*aR#p-3j6t=@wPTVdNl_n zNNY%yJ4ju=UaNX-IMTf~X3x*i7b+s)+1oA#oxY^oaH8|^q6>9&y>9K|&Ww#kwho8k zg5!K{!q5sSFp@+3Ae52YL&rwOk$ohROlm_Fj2kP4hX#E&RKyG60O+?*8g$dI@z%AOIMmOxl*r)IxWacFo zeO)cW)J!)k1wuMD52sg!Vr{!7M$T!$N?jILvtBa`xYQW=6}|Ir>m5 zCZQV)kt;9Bp0_Sg_CBvrx)Fm{7$WtIYlVOs_Owl)KJ1nZOJ^o zc{9R~c)Od5^t23-Q4YwO^upk|xP8Nm+hQkr5v-u$rdlMT8%mgVPZm1f=K;ubm)0O& znXt|k=F<*@7;uS3_;n|T6JOfEmEI3Uyz8MDGnYds&e=SH%nxt1ALd+&>B1|;)?T>P z09e@TnrM>{3>Vck_bE&y2RTm`Q$Y*k=LHGFl2e;kNvT^%(=^GmM_K~|B(xW6`$YLk z;15e+%SmNQ$73!U-1&!`dob z-;;Bp8~HiF;Is60yH4A0fiW!}OYdIm5e%#%sZ??^obDpuglJvEdC|dZ!=qPBv2sO+ zeubZj@CO8(%+)gcC0e^_QpFlcXp7e&igFlDFzmDB9`$?##~$yhu!gQ8E1pW0Rm>@i zhB&9lfVJA&^9nbLiH7^U3ry$IW`yQ%eS!rc(5OF$Zlq22@t~Y`BqviID0`ws*m#-4 zTQ)hyN#F}NQjTvh?`m7u6C`Ow5DLZwWry1md*dFfsKxo_b0{Kl_Ycxw6^5Xe=>3kY z1Y6}V-H(|G8TPAB=_xuh2I@bLxkuv=) zEJyv|V95@+qXI5ey1G{_cJdKSC2p~tkwv{bjxi_>-3GV)Nr_y3+$yt^D;SML`861@ z;D!G`Up1&00vf8o8X10Xq-zjBEY0YV<-o5GcWAuFgcArPDk)vK9u#0(+d3WR%+xO3 zp5wFby7?Dn`DRNw^fXzzuZR%wqBT?AE#F@3@~og{fsbXjm!;9wkv`_;Cw`n-Zo) ze_lZZO!g1-6uFBvD5O2iaMv-h&PqBT?7o&3QFX6Da%E!inRFh@<@t@ zwfQYtQ{f%QG%d`|&69ZZF9|*!W6m(m=X6kXiTY}P71?lWv0p#7CSeaFRzzT<60(W9 zRzg{GX3>c&SE2E7E>z!Mv~ge6cI0FAH1jlKNEMsp5`y-jG3R8Ev+nU^MJINEd--%% zG5l%AG!Zaxr!FeO7rtD;U4PR@=#$c#bZ{(#KRTyS;$ZRjBeco9oaAUuMe%y4rzf;2 z#4}mInS8B^*mFS)Or0E^LhS61bNVE;qntUB8%ogkgFvQdCe_wy>keNYym1QO6eUTV zRQgTg3Jg!?u^fu5w@Ky%3lT@=CX!Y}I%L(0d&Vrrs*Qi1`Qf;J;lp*Rpu=BVW+{oK zZ)W;(RqaYWW54wN(avuUHTgV+;>nD#0TbM0lT`19x8uu4@uzHlCuM4~VY8YJ z>#fSHMlIbtRv<|6la5cpj0etm4Mz6f0MA;i?tU;YNCCDZK$C^z|EH<7AM}O!@iS&V zU^vcZ<3~9`HdGirm%BZ^m?79 z7}NP#Eu`xpcEg9{)QN!eKe%|uEm0I6%C>CVwr$(oW!tuG+qP}nwr$&0{q?VVPrpM( zW=4`V^TDAVaQS{9DS0AKU~ zRvbfT$XMY7?^T>Fo-i*PY9VCG9ZA;0=~}N~9|aF3sr$Vl1XgLP?sR_(B5DOJgkYG> zvNyP;4kaTX5x5}I3)9~*pBv>uW+2x=Ek0{`Gb4K(Q=V11`2X(O>Gyvo=htq3rrTKI^&Qjm4U;&AOw2Dq?j|G%LIzO(0BV`@yi ze~S=?bwL}4e3$rlo04g#%S0K7(n2cOL#r2>_i@2ZllD)kp!~txg~Z(!Qbx{PJHh)& z#h315%IX@1I7;QAqUP}I0QvhVof^f5D7k7*5zsxvf&gf8BpUlpL5vD$hL>S0^*z&S<{nKc z5;-kbRn9p~bw?o_xPex+XOsG7;-%(AEpzZ`c`t-N={JGFz~1lF@+oE$tfv7!FITkI zS(bU2PA#3L$V=KQg%8R%-3DS!IeBF96D7GxKy8@2o}+H10oRLmVGIbl(D zHlLxqxZ}!d`L|l#V1NYzmN+EWS*}X&txh_67E-sQnE5PhH{Cjsre3F{j-W*mH4nLi zH%p1%14tiB1j+gxY5}qF-=?PLsY>ycq+im^b<42w;BMJ5oh1l9Na4ic2Auf4qtRYF zHU0J0E-SL_pdZmxu?pBUc|GgDY_4*!7o-c&5()b1pM?1>CmhO%I`S`8aeptvtJNhVD^vE3 zMz0%x>@5}G>yk-!X@kDHX6%mIKoS!`?inqM%Lt=vo2u)ZNcOfm6xQ3t;>%zAcU42s zWTQPz>3_$?aSJr`d4~$J4!CgxfX6$eM>ROOb#1P2hN;h6TJ!{V|nv zu0ybirU`A?rwOi9u(l3PaO2mbEM5MkLb@FmU5cDC)Ww{`YiyFK;<6dX&DmueX(cxe zW1-q!E_i&&Ms|S%COMt^kzx1J~T-jfd=8b0Z)_GHh8z^Z3;i)XV9n2h=-s;c0UR%WI%yi6oQ(7d4>a zeHXVljLF%vzm1_j)BtC?K?h#pRSFNS-oV-{pKkt=$XpI*11&j&7&0w*^9$}Coafj$ z3+AivOFAm#rV?J9$!*~xb{pWNt<1%T)FboSJ?SSSq8IeBZY^+OX{m7|`Ma!YiTo~A zy7soZjgnzKFW&7D30jPwHL%Hnb69s}w^?It&1&x3!6nE~N{#Y_GKGHNAaMXf^e!^p z>KGO!Q|s3iKY)A3vLxyl58VZF#5^x(^@SM`r5L?X@*$uK_{_#&Lv#Jk#tA|_VuVH`p&OdHXXEehtJAyX)%F38ry>7|{9>6>~4W++uhi70jX zJ*Wq<`H{+F)){nzxB{HPznAY*Bl3pKCh$$jV)otct(tsF;JLAvS#Hj&AmZ?CiUx?R zgP$u40c@J?s)s&A=6LXp#&Sfi{H)(I6QD8R?6Lqd@0Uc-tOC5%<9Sf}Y>Y1kbu*or zBNt*P@$?)vju-nvoiV%(R1}`y3MA-`kXqh&wuRZ!*Q#t3W3P3hIj9+vInd7at1G1G z9}Yc?j6K5_1+e^QNj$^O>5WR7dA0hHFULXV`!7Bk#WNc4Hqb0asF$GTb8v6Y`T|K`cfL ze-id0>-q$I!18~(*5}>xQ&5@#J2|w1NUw2E-mU5l@xCx+j4&?A@!A@JBsX~eyX-Q1 z;tS59e3(WUC7zG}p0lxB+6yDX;jsuo(l@rajO*V`Db8#39LXAtK3HW1S#S`RVwa+h zGr+Gaw-g^L$6&xNp;1g$8*GVS9zh97M4JA4Da*n6bagDvaqMYI+KZS1e*Ek;8L%UV zDcZLYddSV~J3FsK7cWos#y&G82#_0=(@N+B8Mt3~#5Mv;YYGCp4q)c`afC=mj3P)# zUCh{z_n3W3*`~5jhBOPAEN9Utm~Q;}f{y=#I>mXmMe-9sG&u4tR=D6B9TngPghE=+ zowdjr%WR8mYwGD%KF>v#Gc3Azoj7P-ke#vIfP4U{`cTv%`>|YjWj3wWNKQRjrZ0Ff zP;ZKJZwAzpHf6TSgfmx7<~2_#kDf+-woYawah5|ec3AB5xEWETb|H$jM>iD_-aQ;P zLIKt^ImDH`jCuAoZQKxwo>qSIm2p~rHPtq4yT4>WRfKl%CY^E>;7|2@FaUJg|B@1Y zyl|F1JY8<&%Oo*(_HEiSJc0=(jabh_)Z^WHt#6_oL6{|w4(+I;u95(7meUa_zZ&`CQl%@qly=yH~57y|EDcw(JWy+qhB4Cr$&?$HT^jpn9*LP z4#jlE&~sGz7h2TDx1$c=U>Sx~e^vMU@2#Hm{eaEG>*r9weS99*ipaOS(5glz8V^&6 ztwG$giCh&U{19Vl{pI#l5eQ+%wLDP4(5ZEYTi63|xk&Mah8a7U0@~68&41aRoA14Z z`iC0Usix&9FPXh%&m@*^m9ILXZsQ}_P7_QG_iQ+1>$JXV?O@7toAx#RTd)H|gzv5U zlNHglBmf{LiQ-Z+dbTUVvj5*jrA$>+Ls36=>cdt@V3Q>{G&uB0yrdK6_A30&gMCl% zBY^lg-|eqIvO-k9+)bT67R1?(_fK@31aG- zTK}e&NUl>@sx<;Mn33?Y4n^&jaxdkKn+v0%u@$aoY2JRwi8cAs@C1+B+~*s95@U=t-1@>G2OxQ{3WLPfx|C7 zDE%pWl&ijP^1Up!7pv3}rReVCxrQBihjuOOngC|DT~1ys?Z~3S+Xwt`>kI%#Qu-j* zPa%1HK0&DVl%%DLG22DdXr@?##J>R&$X9>)U-g|6N-c71%4_2_+MtkA$sGa$K?D0l z{#f_>D0@p;VW=&9k5FJ(w=O*;R#8eXQACdS_~@>9a@PbletZJtqH$u=Vi;wI^)h&M z*SpnS%Yr$?MzoSaAAKTg->Hp~rK6zgIp7~+*DdWK^8X(FfD1O@NR!P7=FYrCX%V}h zd19gUk5DrdnS{(waLVWg$s1vAPy8E(6!FK5$3#Nd&)BK%%I2SycjUF^Wy7$%YYV0+ zcS04+rEF0?euKKHxYJ>XGTH6`8{t8v3>faZIxM)A6q&kJATmKuE9Q9huM|&D!?jag zp%@?c4o!k@=F(X%L@gMO_M=^Z8+KI2G^#?F(rCk9J0b$$b}i!RkkpXf82l?$h-+qs z2q8*9PA2=)D~dnip|qP^V-R?%dU|+Xo?|jUuuA*lZ!0|S^KS^D5P@O7H(DUdqH9~J zKi;!syy@)CiIVMOF-sVRl3|7k|8RH!z9D7qb6!%%$fb*+IkPZZaGbu3Bl$BoTW^u&K={T=vY zvBLruyekZ*uU2`Fw|{D~3Xhv57yeqIC#RDiOyT5nxL8-q6Asud#U%m8KAv77cDm)g z$!`G^F06bz#t95btwJh;AI8N(NhUY4p%FK_ecB;f^9aiy@e zE3OPOUA7+irapr7nTML%o24sqi4A#im@iQTy8dM9OUiJ4B6&joQ^HvZSlN0JId8afoxSqet)o2$ zOwJVA`oX97U8?@k%2yxfM3mSN0RoRbo_o8>TA}$@NuknkI9qqseNKqH7YuL?1x&&z zC}tnQv`yvg>NZ#zFe7gw(&!(AuG2BnO-J=T;g)$|^Po(U)cvl8&@>ntpWah21U}xy z!#Q<-;BMwJ3p1jH6@AYm3~t0!DuG8MhPi3u7}%c7S=c>2|Is`zF~-o9cYJ!H8ug_W2= z=_?+g#=o3@(##qLfMnt@RAXvP)EKNy3<-kH=SkN<5dGE>(f&JPcg7E70N4jVVlnsb z7x!kk{x!dhHtIB<$x9eKA!I`VxtWGHU&;@1zS0FH=9a!FngeSxjn?Q)tNZLu9`hE)U~V^sP;0ba(7hHZRr&AK(6YhkGROBf`71%ml#QO*Ebj|q4NZ#e3EUGwXnf>!;3Mr0m6Al5?ECIH7w z>K#33*z)1#zgP<@h`qK94CM4cY;{uv6W%}nvr8pB*GKCJd?4XkV#AtO)Qub2prx6|s7X5EiGp}n_JA!RL< z>+~n)u>}6col)6dkU4lYD2_oO?;^grb#Zzj9aI+Eupi6Ig%=-o^5NY*@-mvE0xud2 zX31^6PA7)Bl_3#|> zohW(vK!{JG?Z5`Er%>T-jWT{SGtw6V%xb#0*H8|%mYvBQUZZ8zwk?v~uMp`GF4eUA zN+A-eG-#Wws!6+e!rq6o`?6>#AW2%K5v~;5=Ec@~M3{j_&WzpnCP0uT%oAI1~Q!=FYXuFsi z;6zgBZM%1NwDdi4LP%*#mhELLHI!8Xdv-EP4SITImkSwkz0t_8rmUuHl&-oAt4!ag zS)%Klm(-=r+lxi;Fj}-acHKyfBfn9?VZjqmcdxNxi5@&&YgnusSf&AxLD4Jux73Qv zeA*g|WAX-m;YdzKaLAkhk!(1#*_=fKN|R7_)OB79G|=_UWmyA?JvQ^&Z~1ZLuiI;YWiuB`zs^x zFF3T=TBgpiQuL;drA&R|6re?OT>eNYJgNWGB$e@M0`2w{7!9RJqRABF)eZHs&QYpj zg>AeXPUr+tDvc=N5hnbL$Vi9w<)j(Y=AkV7{TPivwiD~WBe=%VR_Nc|3wO$x%gB@- z*v@kK@!ScDR& zcGjdo{ngP2K{3>X*f^HEb!M0r-_&bJuolI8(q7N9+U=VRrrI)&KK#By+>8q+%E{)D z^wigv0X7JoO5~C%C@yz83qzn2DWn-TZ46O+3C#B?hjP^8iC+DVD|QbwtW2=tHy$q+ z#W4o{8HD>cS2#|nHuRtNcI1jModK5y(si}9l)YgUAgiH#csb=h^4F1@?#6DJCykS~ zZv&?Lg2T(G`TIb2&RKq><2ddV?`v@|%3BtkpY{d(Ut&-bXmbw3<|0O4kymt;x9TM& z(B}OQC!3+{MG3-&&>dJj7})*f!2<<4=0}nPuKt1G5mF?#+w!cbv2za~FQvt0!<)H) z5j>sbYFa(S!lzIG7OoRc5CvJTh;1JuG$GC&7$4oFXO8~WwA3_k;vU&Al$h6Ot&S@1D z1}mm%|EtPxc(tjupMVHZJHOSGUHJOA-A}rQ15r@M2-kzVO^B|X41KAQ!U0Fd{k?=^ zn=yJX7!OgHT#M+*{@pCx#!p5IEEBCdN__g5MukH+Z9DZeuTRr#+(Il)>(x$$GY-XQ z%4}OnbR1|Pn7&AsBM-$LGA`@@#8S5yQ&8do(W`uE0N_~Rus-Q~hV`eew4?NxjIdbv zgZ?1|w}~bAe&cEDCKwg^kEmhRJ+Z7y19K4#(H)5Ts;Jn1L5hJwLamWei2aPyS@&tr6z8H0ZB_gD^=}iG{{v=LvINe5I zsUP)SmF@Jzua|;Y_2$?flvPYzMa;mG^{X2(?TD~Ut0R1ns5Jt1-9ea zTS;I27~@GJW7wgdRa!3dM_fx;Ij2*5qO)Q**=MXSq^*p<^ zQ>)^Y7evp5TEN-powX%x)9x!ulxINy?Mtz*R^^ohLhL6_Z8sj%fE=BaGq}5T>B4(w zmM5;zH9}ZPbzsfPz3U$hhsEQ~M~Z)oXlMPjT`oNpa3+iUl{Dln`9Wd5Yyz{ktYfkE zX=W;-zV$75)CV+<9*_|gyr6Ab!U2Nn?^J8rf8oc9*j#VWPq`OLf zqW^o5f_E6-7u_nYOgMICJPwmr%9Z*RA@~)tbPaV6$O4B^m~8e!-KFde$}f5E@#UwA z90;9|HMl}i)_j;sdn*@&7QpKnv0LJ9!7c+O1W+~Ut!3L-lkf}woe|3BMUiTpa1H!y z4o;3i5DhFk7g2l(DiG=LUtyL~Vt5nU$St<=Z4h*Kb)W$qsk#2b`&(5Gz?e-X-wEsH zJ(Dv3rmuGa3cnvU5IBH|Npmwnb9Wso(0LIM$prc&$Ga zF`-v(wWuJQm9agngOaw{pMCtzr&wwFbDL+l-*soO8c2GbKU%2)cUT2i9-033tvCLJ z0_^uBB5d0{1I?${^ za33499jjxFIm6{xu~ZalysONcc;&%%g0^L50e3XGXWUVh^) zq)J%TP{6{_SL#InEkx_)^823bll!5H?N#w)nicf;R7rFT2k~TVx|UNWjB95<>k&Q> z8qKT->GQpBgqwotU>~&!7&g=2&3Dn5)V~bG8ToZXpuOtVR=l;N#lo{hqtBl;R9L@Z z2?%H}7y65WE~Wry7AZ^;J&%^h(U;I$ST0pJ7!dT!Lv9crmABg|OL|2J7wV_tsl~1y zZYY~zaaDgmHZoi)dwZx5t(stWN|=0aK2gPb1`d?hBT_L>@DR2og#G?`U}y+2w?jV+ zp22}`i@IU7*+@W4&^|@n(z8-C6pm&=o8MExB`C_YeM$t?gU~Hbhb<()bgSmD!A<=n ztntF}x074!z9_e8%R+u;+B92;71D}($#>EqK1X_~H5fe>2^279R_J=&_~S3LAayPD zDY7auAc%ic`S{1RIb8?+)2$%5*&c(B?PiZtPJ|M|#C;xoFtYtT7Jkp6pN7!X-MpIV zDuD)f^|1QK?w?*~J##B}*Z$|!A;vs@nJ$YBITyCAQq+0L#`P}vakSn4PX=96y|Lc( z18o?VSuv-Vc%=K|8j}n#?%TY2KQ89b?}T>+P0wJB8h)jGf`LcgtY4n_Gpmty;A1)( zqiRx;8f5P>ijPqXQ1S+>RrHqs*~%sLqARbHl@RFzg_oR@bH@$Rd-jh1pcDMx$N6nT zss+gdiFG8e>F*i&-E1&e`R+Gt5Vi)h`sh98>Ej)2q2kL!lfhvr`jIXrI=Sr%hqzQ7 zbNtcQ0HO&b2XDX*C&;=sQ=I_DD))O(K_aLK{@1rS$nn^gzgJt>3I*`~&%jw#1!|gg zMw9<-o(C@(eG_B>-Bm`K3II@}yKS0CWO}!@I1N3;an#a&{^cIutKSTJvMJzW!kTf~ zPdenDgiO7Ea%$MGS8g?WRY=3I<9Z8s(2Se3f0KhPEYN5${F^K~ZZs%c0NjGr|2o&6 z`G)uLg1Hl>vfMK?yhM0MTS!W^v8sg3H}rWWIfaxqRi*VDuS+>rBde2NG8tc$y~i&N zc>!|VnN(cx1pSaxJyGxn7>r@Tyrxke%@5sM+}n*`WY<%mcC|j)A*Is=nRO1kdII8$ zklqy-EVVK8BJZ+fPWVNgsk#q5GxmefV6Bb3n9pZ}ov`pZ2V2RliABe%np_}y*<#l* zhDg%4^{N9F)3IdgV0aFX$esD|ekL55CL!k^Xw%@m)jZU?u`mldrfG9nI}9J)hknJw zTExb9Pm7}P>=0qO;GNS+9!;@nCkz-~2xLLM;ovM)yf2l@_BuFGjAw(fNFFY&pa*VV zG-_oOyB3d#wi(izvH}>#WUb5lYl@s84PW@lP4F;G9{`Gk*O6TA3+5MxiXr&?&=&;+ zHeKC4=-=)>y=FxFF^4U3WO!W7Ly^YAS$V@HiW3ejs%6Qx7i#UGbTM;zIm!vkkd>WQ zJU*%TXhqdgid#Q|dsOeqO#t1>_{ebBzFyU#PVcmzl}D4oV^*YxwRf;CkkSrWheVoK-rfY9|R3tiFU zNs+&!CffW|?AwO3F7gNM+ZtM0Nl?!M}W~yrkd|1WfdYH#UWk*3}P>O1?sx{ zf)7@R%~N9g(0AU>=5oEreh)0dVj?CT*fSy5px%M={&m0~=jc%~8>yscLQB_##m1*v zSj^5pa*An_!+T$fLZR{FpR6WTf2|L^Wy(qWo}rEE)T#UYs&(0NS)2zq#+2$hHGHL~ zR70(#P@MzTj9_8^{Vq?GKFC88q=YS^Dk!QjkE<)kf87g8Ryt%W^i~Qw=^Shb<8joE z_o`ngygL^P6YKi`)e^G8x$RKZ_bdj9?SiZF(it~{YgKhOwYPqmm`#+&Ue(vGlu4O{ z*Gp#St@{&H?iEcT;PArPY1oUYO|<^)vZ35px5rbk4-pJ{(3Z-HQo6MSRWYLI)3fkA zXYhocAzsJCjY_lx{VkH7@z)(uBs;#X3E!0O-+9~!BpmCo-hI8o=jXv2yM@IOa+3?WpZ9(GTcv_m789;Q@hL-;tBX#CHGm0oWpCnSUZav@VRapxyOBF6po_2P4lOApA~ zTaAFC04U)eN30k)1WE$0O`YKh;{d92nb7Fgd$TY93%Qv_hTbaVt_D?7U6r5d^M_;U zX1zB0cfnUlCUs=$u^f~U;v^+QZ`ji{cF}PtJ1Ze~X|Ni+`Q7Q=}*7r&Tg4_IN>rU=sID7VJiN4eK4nqEC zpU0$-_ZAcvpi_q?D0~)2Vn;UQw|yFUFZS&&2jwOSa!o=j?0^mBk#rgwm+fb-z1wjlY1~3Or(ba$hjiud)xalAms4(OgI*fG^W9OX;kO;F)49!w>P{cdLQ3W1OA zYF!Q3e#0!R=?BHpWne~BnkLDifjq)De%#Lhk;Nlv;3u&oF2~X9ODLAw=^ao2a8Ju# zt`EPId>BUQ3=XFM$^*-DnpAyyl8Q?@6SLbZH@)>|#(mlD2ss6xyKN8===++f=xJGh zX4}|I2GO~v;fZQbE+YkzTkvXcrac$oEj%cTc$y{G-=sYrg`{;YOujp$bQn6rzntxF zMcI6dRADk7_d$JhZW?`rv|_@Y96QYYK|DLO?chLQg65xaxJy|oPUDEvE z+SRy@NW*{N`B+rl|0-BTQz4S!yvj?6xDxD#0~w8Aj7-5NysTeXb&JUFr!aItg`HNL z?OVP}>x!Eo>fyn2Q3bgN+Ikz1=xEHHC(O03$G8MK`)_m)3Bskb*y19IkZG(cx^WqRi@RSn%W*A}E{LBYS5(?eI-IKAth+V~*dMUj(wC)MG0 zo{lUU_a|z0C9<<9vjia})i2IiVW%!}Q5*&OLUCCN2gPsC1?i304@V6K(UmF*kVxa8 zJLP~S6O01?D}t5gzRX(%EH9kx@0jDYlac(&mVk9~2b~|7I#|lUx+${?N(hz;!gchz zw6SHg39)Sic!dD;*Nm18hje(2|2NWBQ0O4|7{$sHS?+Awr45lC8>+?{t!YX9o}1-} zS4T})mw)R2>6A84!%L5=)~)ZIpz?w$nW~4}$F83PCBt5_pBC%iU4=iMoI@u7L|O91)JeoYsD;@DR`SLB za8SXxaUk=lCHc2p*5bf02)z%b*1F{x2TK_}-Th}+GHfyp9ETeDPrhyS`?!;I0JKwmu(A*b}# zj-65)N1MQsuPXCGvlDR-AcDmNb{cFzuMujbMsXK^X%hQ;V^1EzAAX5S;{UfYCAi08 zTGp^;)5=fTeF|P$&9E=7zGXF0mYFON-$3=UJV)B#YI7Q=a|d@GdTz2dsM|5#U0`t^ z^`FGTB0*W331EK~*hSoD?f|~~gI-u%p!<+%&tNlX*$Qu04fABWsdlRGKXhOyL-MgP5H<}5=2`t zX+QtC(N&(jt=n@96}zi?GG4xv*DjxfKTG_mCk1p69Av}b8A?gHafO>9Qx{c!8)K(K z(O-MJk8uB?OAr0Mc+7WNj$OT``Fye+cmtVL=H#_KX|WVf=!0^tPT#q`_Pfqjx~*!Q zqGx_>2M&$DGhzE63puju=zD{oGg>Ua2gdZi)lQU7Fy(uT1Q{*s_&*Iwz1YQdW@h14 zNOYXI>CI|hK}*L?&ctVdXlzQbp;Amicd*!fRg=pznZlUXE6*UL8M4Hh7-xm3u)sS6 zXOc#aLc!@OaeYr3wUGv*W5dOPz+J3ei}^sLahn^qrdClkfy7$3%c`Tm&}`w0KFPmQ z4}}>vT zVJmh010D`CyqsU2x6$9IMfmhc(e&v+l=^UCDtVILaMJTvr!WhX4(UueAUcBp8s^t| zrQ$lqSPF@tW;+n@s3y13{7_91RLEC4D1vA>* z;8VRPjHaU`1KRp?F25Op%%E-pHQixRNPG~J5L^+6+G<okVu2{+l?M!-gSo;*+ZMthlD^wZAO^z=&@_M<`|Ku8IDz_`=n#8)y$}PZM z${1Yg_xj=H&{7gy_ErM)pAr!AOb^3_;;gzkLZ{C!L~>KS`+cf=Tep074f+D!c61e% z)=R+~m*r}`nS~9E*<04-6IqOc-~&A`M7|((jBQ$A%N>Y{!hUE}8RMp>bf)&ybDz5> zx~u|f{p`tzW=v@O9TfdaRYRjpTvyqo>F6sn!KxI)1g121)ivp5z8W6BpF<>4b&G=A z^FGA*225n2kNL0ME!_klER!D(I;6w-GhOeR zumP&jLqjESMN0+$M+BlKY|j&%qMXVRzWB5m9?b2};!t{_JGjHGI^X7G)O%oO!KEw? zLo)*SO%!lwsdDH0I>}SNDtWTJ>V1SA?SI#-TXKoE0|g3Qp0fa7-v~oA`&jxlLG*kI7lAYekO*c@D38?zr8ruS8y8N{l% zsiOE4?>HHn@HCbrq32RIVP%XS#SW-z8N_nq3EYfyz^G>jTp-;3=X8gwoZkvJ5I)ae z3(4QMGZ~kun_yP-AwCQ=YZToHy<)t{Z5V&!PmA?$TyjrH!P^o}j<>BenkW2}#koIj z$J`6%;G0oZ$pZ1TkU`Ct;o2K}NQi(N!ZykN5A?XDb=9L>FdRqG;~cyk9LFC38c|S# z=N!gMSwR@^9Ftn|^`dhw!(!9jY_(wg{)ry(>J;P<5u?%L1PJkG${rMqf$FnRu?c-R z;KR_=$Rq?JW4l~n5bzOm!dig~i6ymX^;I*jBAWb0%Nh#hjM1w6c377=L73Z@p)6eyPESSz!i6b^Fh@|HS596YRJE(5mD=0P89Q5=gomzk z+w!Knj?hYVT z*3Rf+;mA+pu<9L|s51iENdVmK4mUJ)gj%U*DdhKKV6GUzp~bUJL$lb?T?=vr@zZiw z6izO-$?^`)G^vs)9X-dRQ<8~Ci4bcj zlZ*0k%bdp8ns4;ri1b&S*05GNHr#{>L38b+0F*Q0!$zNLMni(!p=`701kVm8+|!o8 z-9lD~VkmtxYqnD;s-wB&?`|uWMmyCQfD$@#JZfs;+IQXbv>E|PQ5I4Mj;y3FD`Ojv7I)Ovo z%EO4WhzmdAVD~f!-9@^IZZS%T`E}|fMR>z?U@Xxk!@>^SX$uyb%VM)*IY4hopW}%k z;0`z>O<7dB)Q;1R2aOd-9sdd53pH;JA@z6#Vy z%1TB;G&mmy#~;@=OgEc)tB-l&7C!!|Vk1eC4)PY~ikpEefz+SiW4UMYBn&EwF#ZqaiIBhR=?J&F ziodG|0CTJda^4iCmY9OMUAt+JZYYV|jtyFuude&JxD}g^B9xz^m3ZUGA}vh~$87vC z=W=_ZOMRP$^Y#ST)#s|%HTwLB#B6bnQ^2AZCq-h@+Gnv;tT0X$zf!Y!R?=#Qr(X0) zu%GMm+(j_VbzuIKkJtw!Nym>s1`x2Mp4v+5`c${GvEh5DH|HLvz|CND1u1>I>GR#C z+dnk1W@T?SYXZ3AwNVqE!3T@BkSgwBD=vii59TUOkxCehbwwO^vcDSlKtPGr8k1Yv znSABT`vgfF#_diZMH?0Co!2}j{)6%U4GjCIu>^erpR~w3b0Pjr`KK5-;SFJ}^--%p zPGEcIAjF9&|C`FqnD*isim!NF&_XHq%&-c~sYR9fgvmK=>Sl5ky&;(B0fIz>cIl7g zWsGj=W?Uxbw)+7||6Fc{?N1PyiD1E?^djeO0gGaRD2ypw%lUnYgvrFU(0S)K&?lMA zq|;$B1?Np5k;fW)tr`M{&v&v73<@DKsD=Y2Y^E|G>D& zxV&j0^-Xz-!1>Bd53TbM+vLN;Uy8Fk3+4uxJnus=>|Zg#W^p<4+MME0vnc&RX?J#f zD45OMB5))Bpf@pt?W>Ajw-9U&PA8=-7XKF8x=d)=t2<%sL1D#l>kJ~pL1z`6pvV-k z0a)LpHc1yDUIy^Oe1Drw#(SzTIl!r#JP+u;RJ`nNaQ+3$$UwTo^eW1_K$3a-&!RNU zDyDjT#l!hNAwVz*xDmP73ESd1Q9A>&F8_-%-Fcy%34v%46*)&Oi@h^q2J!_F01BRM z!1^fdim#~f|7ZSr34VPDw^fpC9DjkciXpaI@(i`$^li_AwKT7Uhluah`$WnunlN7J zV-mL>FhrtkhMo~aW`A}h&~q|E(++yrrL}JPVXzZ?s|g0!?9$H@)gx}ZiGOqKBhC|d z*mj)4!V_8pOa2OlB<Xsr4W*_GDrK)=h_ig8VE3DYxiZO$q0ELhT zwDTC7Kb_>2`G`t>*ODn6Z2b58_G9)$-bU>tRxqV^6+bx0ew;QuYrJe6&;<`_jMVa1 zs6WoWW<_0O<<+$GPA6EYk`#DUl$Wreu1aW9q^?t@y2dA)8Of>nj64x~phRwBSHqt* z|7bCiAHWiQ=(?#u=U<@>GW?DZ*HNA&+HZclypNscM3fCcKV3dKD{LYDjA0NaIO_+SW^4pI1lDY|L{!cSA+HqWIo9&(hd3Q;4fSG@T{ZwH~&j_e!g$nd98?=^4{;e-{_p1kN(`W$4-^eHi} z&){nva?}s79%N2I4)xKcni!zQSSJei2I$RjgEz-^#G6Pg^5(|B1r!(`b+&xpmG1n} zWVdMr86d7;4SZXmKI9voQ^rF8O53yldu3?*XR3o;zq3=c8dkJ?pmue@*;KKqRJgM0 z1*v7HO#Md@ZG)s9Bv&%l1lw$`I`4xACH1Ume|1BAPyWS&vRxm#G}#6=k_6RR)! z*&tZ5Pvf2&Ir-@59gN<(Mgi)b0>K{SF$+p=v%vA` zQP|Vnj)5Uli8}|qABPi$>0C;()aIZymx=l$a=D#I#{Tlkd!0pf(UK8^9+{$C;fes3 z3Y9+K5I-etp}X~gR)efVp6~e7AOj6ahim(K>f#Z-Lo2_g&w=~={k|>}*umqn09^mO zPjn~dbmtC2$rB$X9mrO!?#qBU#-}bGcHs&p2}*d5{aGbpZ>TSdn^}8og^@IF%(tSX z)K**hBZR|)nNsq)%Gvr&IyAyX9`@lx%u21S#RO3^YH$qe2K{N!P96D+*D-*-dH~&) zvmze(lA+)zrdLiyc*+PZ)M!bW$mD&AQepY!mW2d&52g%S%%cYa2 zf4YmC`gClhr!n|i@fAp}Q?lhrvx$L^8R=cJ$EX0V_Cp@UKUuTxMrv?PSNAq)t-1HN z0@lM_7c|O%5>~@R%bA|>Ispr3jRbF@-^%2lH%#%pC9)*dkONYH84;2_Wx;WGvYK#$ z0E4J;DaE+`U@K|Ix3RALbZ}_Qw+e#7hi{E_68{Th(p?5W-*a;H&mq|4l;0HF9K@4l zwytoYb$b?z`)6B(PJFe;T(lpcvIxQd-_{IZ@Pj>V9xRHBtr8EB=#^xN{xI5Ac_0}z z4;~N+GsxwSEUGD3zCZ-O8iS{YG*1gKG}4K$`Q~dTP*&A^aNIp-r*p*WD!W)!=vX0#IM=VwpK=;m6EL^z?++`ycGTgb zMAa;t?Y@Mswk+qMZNFdQM1*~JjB_;BEpAu6Q36C0R4WxM;^x%*!#PS5t|s{6Co}TM zA9LN{p!u|M;#dGWFwA6^Pm zm6s6G+V+S${fQUNF_qIr(p7|d+xW~$p;&y|zR!<|oBU0h1|EuD??TlaUf$tj;?6Nt z-N!uL06%+SAr!kbk@F0U?hCOPhXtrNlSOvH4Hl)a+tm|0-{Gq4`=jytKrjow=~*4* zz8u5ec!}ZFi|Z@QBFzWsYQP?IEZYSqnYu@_bAJ)_gKoddL5!yiH|~Xv5i6wl5c8RwJ>x^r5%J0=fL?NKYX*dI9`~_Qa#^>_@k10$dNyZhmM#I>J zf->h8hkuayPVZPo5L=+6r#P?CF_XvWdxJBes5gjs9WfTlf9unV!##H})uB1FtG`OM zou;PJoeK!wKwh-pRBKVjh?njw&UNZYRnHH0Y38iue9FnXKl%# zyWJyIaGaj~36J;v?e#}eH2sLj>Z?+=9OVAcp?DU!3oIm0KSH~)tnCIC!iRC3FMZ3G zl`(CQf)Jd#v}(z~Kqg#w?KF>Zs%G1Updj)telwceQAG{s$#*_PjqS%VD+j9FTe9L( z!O#-H&X;G-NLOje$0E42+9PyOsWq$elFwH3bb(3I5(ggtaLAUtGh&csq8m$2Ab`pB z(f0sb!#QzP(pLtuobNXC-S&Ei>c>HdK(-7xtQ4Yn&c?}XV^w6QVLnU7QQ*r5{%xnS z;ce!97Jo?T*C+fzMnws*6Vggfx0dy}g%BX3ko<_cv=aZ~NxtVYs-tMhz4Fn7me za_B`n!uJYhO^H8n3g)HaJK9SN0agj5lg|kurnkYSQ`CnF;Ah-(8?UeLX8I182b`o< z7Leu*I$csanG7Njy1Y1s!xmCre5yOi>XES=ApxraDU5s1Smf-$)8BkrL{tr-bCN?j zI1zg)nD#lsfMIVn!?1)bR*jBY5I3SU0W~ym=n;7JQcs9T;)#4yBImChdU>i4;eFUJ+WCfqi^&&*#)y zOJSFHzJ*g>=+rf5mV1ECANux)BonODBukh`W6+X@-7nx##Tt!;f*+Rv$nhNXTSwM* zWW6AqFUl_Gjli2ZrrV)CMn=?qL3hTd{|-2NiI?ZcQZq`_+}ru5Ha+$V4fkyAH5Koq zoqNc^^2zP?@Dcsk+k>C|V92selvIS{A03ES{fdlf$MN)I9{<#=PKJ}0I?<%A7A&3t zAW4qaks>Fb67WUEK}x6w{ts90)SV00bYaGJvSZuE9ox2T+qP}nwr$(mak67O>96~! zpZ5=}lNzH&&000*Rm#ztDJOxaJG7^wGld-?{T{Cnit!GshL3>>FWp<=;{*U=MvD9s z;>HM4NJzn6gh(mFG)-B&LfNLvBso)e5rY;mD|S)&wbkoj-KWJe2Ezw{Jp$)Y0Peq3{UMcNE;y6kb{a zt#_s16dBU5uv^f<(b(@_9=f zhNC;FXP#(WSyA5y&oSJ6Rg5dyp-vQ=k=II*C!oYW$pI(kDtj7+m6gc`kimUK(-$S> zzLmSv<*i#-`n!@Jwhpi(v@%`(n&_62^a^#UG9>C-3|4$}hZ=wBhFkXaRJ6AFbW`&4Y@#CK1} z9JwIM0nEt{I>Nq$*3Pg&ttiy*;A$(!MdM91DDdJg6p!PrN~qPaKQUEqkqx(&6aZKL zS7`cSV@nQLI!bA1#jh3ZPwzn7++n@2Yi!;gP|HVx&=jc11`FI7pZAgiQ}eR#aiE73 z`r9L)LbutIX!3rX;V1v)iLvmXcK1IV$ct@pd~|L8snT!d14N_hvUha)LBh8Ee;F94 zMTWl-L>dC62aSlXW`SF1k})Uh+%q4Q-7khi4u0P-se-$t_P zeUF#*=L@!R>+AkizFtd6ITcc1&+1APQN7l;n~}{b=Oq)O_@g*&#vjuQBta_cpghGL z^ZUyR)L12;!qo~dw43*RnRe}^3H$%t*7Fb=puJ8t=&t-RYd*;tRcA$gaV!BxeO*!x zX;>DO&X%2_c`H7O%sp}2{ zaiW><5(xrsj_KBHgz(wk*@qT@vFSUR{Q-`1Pl~GQ^E*apr4GpaFbmHs!$}V1x-DX~ z#szKbsVi4pw_h@w0VDCp8DRsVk;1#ok_nt`SDO2VKFAcURusp=+WVeOA)|t;Rvapi zL4AX_&~^0UHOG%rgN06hos(oAuiG=7#X#UF8W=~P(qoqe%^jSQjWcnjl&*34HL|e< z^<}N0kCi{{29-7pmU4!V+?RuDI2Ehp=WBmBC)){xxLAThI(bp9IzoOGA>XSP!^nOj z))CIW8$^&ui}6na@a=W3@#?D$l-+C@2VJX(`4$j*tz4LJpQ142j4!;zgS0BJ_0ZDvkrP=UH=woq8^Jr$^V`-QHt^>JL??vK#ypPXwW2y|o=l#hgZ@Uvg zid91G>Q)Pdyo%ZLNXzj)XRpIo|AT36? z<)*?W$QdMwD3uomjC_>M-`|nuB0f=$ASo*eftqO9Z=i$oH%~9Q5l7Xxc`F^crt#6i zjFD3#WqKO*zgz($r0)cINLv)k;Wn&c^n+^0^*IvO&<{s_&w--i1hlJV+4&2Q)BL3A z%+$%ny|`s)nPE(po?D!??kzNv=HETaKV@B0*SjrXjy4B)i^>bUrd$16)FK~Cw@Anr zkFny=7ZL;ext732?HoMwK1#zxz_m-DnV0tD#NP}euavlmxf1A>FqucaisP9$j3B5F zedL$-q<`7`^vtfM|BZ~3K*Y4{J1GA^F{YTj>F@>T?x4>KU|216Iy=lU=;sfpJ&JF9exA~??G6eQY1Sg(iwYDh}g|Y!q4a~ z7noXc9nR%&O(znWNwGbjm6{#+`$d65-nBF<6zFC!-ehYvzeel3NKijm209KG<@0i%-4?NbdK9t}NuFCH zGy9pgR|Zw7>uMK5G0c(QS>o_qq#)crHvAbG`rGn!Z!rZW&>W85Nx1IOkh)`j^kV-&ZH{A+*X2_+nzQ%%Xb}*UUUTmyamt2dH&1X_etyZ{D^IDwrCzrv@cU z?$OOQjy|iS8m2j)FbWmQ-MadV3Zl&}JU}g%Bnh&Pz2#yvqP$4fzw0^WFY^187`T{vVEtZLqUdThccatumTIp!AWZK` zvR5lfrL@k|SpRN;z>tYNyhV1dso`IW59&6&l75f*{nm}wITM?gBG`VdjV|{>bQJzi zR-B1B0v5Om(2|S4ukc99!8Zi}nuB3ha=r-)1^3tAQ& zcB^x#A+o`X^esBPxW(&0G0%}awClrN3GGr{(|UO?5bM6uH>NolRW`$F{mnn;{yKBL zaA{i*nP#kejt_{l*w^K&h6Vnxdc5^Hhxs~cgpMpv_kwu$$es~j`MvW5CfU3S*dfOU z($^h6;b-nCNDeg&3nkC0AM!+${&hv4#I-vNl7c?*G^C4^CM zQk?O4(DhL{`h$yAB`BVaJmniF5g`1I=%yR$wq16c>KX~Qq+p{44U)v?WnX;UfrDgRz z-62>0bZM1Zn+Yh}mZ5yx`|2c=*c`&nsw5kg4@vROO)IM04?BJ21Cn3p343YTl! zR$7@aHc(UbQE^0_eE8$UtK*-_y%1(CqQfTD91#7OFG;5e^IN?kqL*18Pby^&7OX{^ zCG$NMl`0|DbrP4A^Q~h?e~b=m8M{c7AP;;|M=tJPnmQmH$Vh#t+yu4*4E$Tj6lcA^ z6>sRYArH){9wjJdAH{(>xDk6aotY2Ufk-{l#8N=p`SDo<6`hXt311eRscC_Z`sL+1 zXlN?21=jhsJX2LMgo?NnHiY-__7GJcIRH@uaYQ?<% zGvCH7eJ+?t_zmvM7QZ9DSKzt>-oJTHLKE@@A_o*EE|qPS(u2jX`#;+(6rFOlr%CBb z&;anGINC_-j%b+h*T(wEXGm{Q#3~4-B8c+p5w0DAuUThCcJrN4rF<0ZF}sZ52DCfh zd~i-}NSouxNxNbsZwqlZoU6=4FmQWTs0WF3ZrgvNxy1V%0ZX!g7T?9<0(xgb#eO(! zJ=I7CbsvfFXDstuKkh}eg8R!#xy)V9O$Lp#r(DJA=*jL~lS1HRtRraqjg0)!f#eDz z?H|X`V_$N9NHce8w*01jm@WSci%SnKRh4;SSvh5|kUg*o;7NyK>l*82kF2+#q0orI zAeKJ5M##;UJt`7jJEj0aK)t`KReWv!$`oql%vFyfjQb$*nSQie$eRHNbn`@_BHT_b z$-H^gBjgk87H=bHu|MYf4l=@^d4pn^KyfUb~|~ZHs!a>4hsKQJvX{l`Z3~xeoeTR{I#pR-h9XJJ@?i7L6 zshTd)bz}#Lm+}3*s;WfS65y-f9IjOJNKmWAk7|{i`Uc`Tvn47db=?XaAgI5Ml|a)I z;2UUh7O5R!PGjUQnL;b961^)IZj-H3fjfPm<6^~i-KA^K|Fp*NT#IoAf%b2BNfU0d z>I$lYY;pPP?@_KupEScGoWoF_$A2vcc4x2SvTMh>mLP zSf%Ge7U#~FI_df$Nafz`v3+&JAk``w;j*=}k*ag>Cvhu#D(*gXFe*?Z&I3FmSKr5ERc)u${aP>w6-oD-)#5q!S3UfH9 z(>csLNh*-?lXQoX=u2ixGOBKIZ566~fb{NGDeVr2E6f`zi5Eb`{DqzaK0NU;4nF?D z-8CRE8l^dJp9E!-eOoGA2bTiK@Q=G2`;OTNE?dThYOoWaq zI)N#jT}Qc9IzjGXtRFUU>vfFiZ~lVl-RGEba<28?9@>Jt@Y`5c4MyVa6f4?g#jA&| z`S5MbJfm0Xu3P=`BJKvGq#$kM=;)TrM-O`+2YLT}DdK_wYTuU^q;&+Q2g0#JoaGZo zMwA&m=k##8#)rq^u{nLhZ(`6&y8C%AaiN<=(8(UUwi|$D!!8hT`TP<+kjK+85&Z{& z&nS#J44t)dQbUNj5(<=)-4?kfXfruS-kWS9Cqt~qp&`wyfqiTM!?F&eU1v-90=jie z+t0(wCxI%#4z>_!k8KHC7YelhK1#?n`QrsbVR`1}fW!rrFg&esuN=L23LlcQES{*E zy`#K&w6zVuU?!_T5UBs8uS_~|(o`a2dug6BA`%?mAO%8Z_Ps^EowQl9I=DNxtc3^& z_I`bvMzd<+q<&|N#rV;}V8{k4Z$pIGh8HR@?de!;{__%nu59ke5gRu?IkPrpxaSSh zA6g&i)AFZ2Ol7X{jmeP{wV+-|4+Tv2$fBdCc8 zSYm_3e=MdtQW0h5URw=1a=aqvs7q_7U!tpm)uHhT36uLl)$b^5b4Y=Yfsr0BvZG8w zkVn#%vy!aQRDT$VD333d3RJ-0)$ZY^#I(@= zOgHrwoUj3~DP=N?mv%!66~P_x7$t-=>{;0t>d4JK@*Kq2ZeI^(H3gNL;OHv2n%6^N zclQtxaRyjrDg~()&{CQu?xio_hY#G83aDEtD2<4)^GmZMut8AD83!ah;U`)#ExV9d5bIY4oy*AR)nS_HI=T&t3; zgbXA_0G%8<^>|W);7QcY_2oS04jRIt=ymm?bC9Q)djde{LWT)17B|E>oAP$hQI?QMGpfEM2y4ogglX%21DYUcXX3B)HU-^%F|FM?*+>sfv5vYNV|XHD%y_V zAoPl^kSgDMTdlT60Vd!tdf1e@Y|%#BE^S6$$2pAqwUN7zvK)U-(&mx;te+OWSvR@9 zeZhB37`3B~(48Y1h)O&4Bu+B82<&4lUio1O$wQo!6Bv;1F6COq_}*B1YZJjLxYS4U z+%SY+2Ro@u^!sA4n;$h(Dz5SKjnY+UC3WYkZVz)=B#2T#yw%NK_3OA#9sK0J2s0_4 zS!J+yZ|b>*c#`y)u`Y1qET^a=CoO+V5=7k_&VocAUhiwD4~zwAOUqA5zpLJ;)MX69 zA!bzsCA&Hvt6wYrlfsAEctB2Iqj0Z8&&|xeZ!oLJn8MMC6z-lW5epTG$dQQ5O>7WV zCtsANKZXnNfy;~Hf1^dyYUQUp*g4V-d*h1XaB&4yNJ!5Mq>qQ40i)gI>?Gs;gcHgY z`&HxCZaLqMkL}E;p9sdD@N+mpAo`XbM6W)xPVqb;XulW7R73PndhydzS2*iFlD&L9 zXCVLDmYR6K3I=_?477uqR-{HN3p(WrmzrS$Rf!I=Ac2PHXCKJTl&jB~q_~GVWh5{V z;1h@I4_B|hD>3ktTv2LI8MUwV_{%9c1);{`n(6%=iXGeRbkTmGNH8nxOEpd`!aOVOao&B=Db#YM6957cN>yN~5P>35uVU~mE8XFVAuYw1i z1{Mznk-;bR8Gr86`t1m{`N02z>5T5KsM*7=e*-`QTgc#C>=ZcB1X-rNEyp)LjU|G{-3 z%cwSx^CA-j>Dm4{SLaAeSof*!tqSnSXgw1HvbGI#;otm}EZhpz{ysLEUU{UVE4fl3 z(d6yUAi1U9ZZEKs7IaPgaY#nRXB5XQ3(I;kDbYqa9u9I$im2!A_Lpp1S(r^|*X16I zjtMb-q?k|_(nMIQz^X>$w6UO?*ehUrYE74=b0hao1x9wSaWN;qwMrC1+bN7W z$B_luo0ycMFhv86Y?G#yTnl)sG5sOioTcoNN4+l@STK6J;2hg&jkK6pwDllXe9y08 z4D}64RZ=jWUo-`HU{F6`R9brTZ^^d%?zcr!+Ywk>*?c-p30_TLP$-2XO==ms6D#|L zbwdwduMK&~CeT?^19LPWYRWY`dtY)xA%KYiHi2RV1}ntn0ZpvU@fB{@eW6xwSEDWU zOyP3pI&+_DiljneWzuK|;taqa3f>A48qFB8a7t)Ex+Eg-J&*r$N^%}b6)I{XMLlsDw-ksjSY?6SIVni`_m^Wv%d?8@;2NIH;ki~%!0u9amV$hIj-uZn^Tp)R|Exrd{ zc{r?;j|J^J-lRNFAL1rfdzx56r2f6i-;q)8e^;6KBGyo&n@_Jcj|(YW_^qFM%vm@s zo16r&V@%b-Mz2xH9p_@hhY75nshT}#H_5Qr(D5ONH)qm=ZsEW*!?ekzfeB#YMHJka zEa5pdIi1<(tO4<24hi7#%LFlUC`Q+Bd3RUewE3`v+22El`F_>SjHO;CfeHU7aW2?x zHwUkYvs1e#G#k!Sm+7xDKQrVW?6b&l6)Sx}NOT-pdi`ab z?uv!mv!=Sve3F;pD_0a=y!{I$QZy4h!5|1}ZVq6AOrfExjdC5X0SBH>HnVpko zOK|3<+-#Oa-5ly))&`NbiY(s+VS2m-{T+T-$t4MpMS- z#0X%>^7Kof5&`eh&?{rG2GyD(u5S#*))LgC<9SmvRU*77lC(h&!5jbc5eQ+qgl0~; z7@rrtS9H+0{053c77;Qp095bdDe^e{0>Qu7E@^{{Pa?FNSjs~s?`jMHh+2fpQG|*D z$8IK{Gmk^Ligx?;LTMK_1@olAV+XGI@bO#%6^m&=F?U0v))1n%yKTN>G6m zbml$TRvfs|vCZ^0Eja!V&45uwbvu~2vLf~y@s>X01`sevqFGtTO4O!JCUkD<7d~LG z$Z(f<)@-GT|7|y5H{%{+_T8q^H2rmBQ8E`o@@m_2a*6Job@glHP5?gHR!#x|a){C% z3`M-vT${FMu16G=XnwXSJ*H_Q(yy)=kP>koG>m-|FaTr3XueJa+IxI{e>Hnp^J#<# zdfN%Mi5$+?jr)olZkb=oq{?{dB!Q=rlx|z~N=82jOqB=9tt#Kp@_BpPamP?l!O)5v zklM;V;fj6^0J~Og#XEhS7t|SNT}|=H4+2!3rTp9c3VWb!U`ow?)?Dg6wl%W6fDEp) zTIY?~hyGnvLX$*CGX_IJ<0V-ooQ2UplQT)f6OZSSPCWiG9ih<&C`t;jv+!UDqNLjl zX#nSvzsOhXuD{?lzzvL*3wR6uHJAC>l&+n_PknzGAcH0vxtHF4%!PW4v@|cOI_@N9 zAex_0o!}eI5%FQ$UqI}`K%Z#nhkkKH>Jy=^oSS1@jC&)7Dw@B~l>;QKsqr<|g4RGx zu@8;40s>AN9#rYdi)CC^tg^Y;uy7Wl%m%q3c6k#d*6*XwDUZ&f$8|<+mJZ6p=1dwT zi!(ygFCIc!upQDwC;%5>VM#EUU~DW&vW)E z8XhE0oAzKV2m4%-rx_&iH>G8^B|ns66<<+Hk;g|Rvilqc7^oMva6vy}r#eHo{*_5e zoy2vy>z*4p8p9}g|3eWRuhSQFfgiwzR<-wCi15^j_QVIJE&EFr3QV$$FZSY`2Z87Q zw_Ixq=${Ofwb=K2<6Ix+7<^3uZ`woG*GV}Kr5lCaK60AI+qE*;CYOlYH&H$18p@IV1Z!*1ITMY+}pmbhadA4ENk%DBb%JhDIzWF)2D(W$eD7(L(7tTps)4XEA z?a9Df1U+ymM3VhH8xX3nRL6`0g(*KV&T+Rudk#w0W2gGgwg4&?3rl$lbUZ%<*DQLB ztRzU074u(xR1PE(2CGT{U%5reVbYc^3RknNW4N~b@pKGEWz4oVNcY#US^^&l<(#Cr z*@y7;ld6`*b&0}l6!3O?eYoTbHV%9;tOXgq#tBL6pYM21NQ7&c<(wTZK+(JU#5XCE zENZMR8Lw+Ti9t`GPlX8$vCqy+9V_0|dHx@>s1XFObdS zxs_}gHI?mnouzG3F3oI=r?a6qCwGJy$HV-dk><~vb)xZ4Yqd?S4sOPd3~J`P#>Y(8 zV{kh{z7l$a>+`N#)UzZpVVGQnAWriX+_r?#1H#|LbWE}C29?t5OvXkhOf_*C&^nA% zTMy%)z2K}w8Pxj+RY$+?zn<4?kM-rQGSr=l%lq%0s3iATCS{qg0nH5~GA=)IHJ*5;52hjo?pt{5sqwjDeNRx(& z1{!`5!C{+~TQG({`lP<>>4sCa>)A(t$9Yo#HrhTVLeEB;{=&Oc_SU^3Zb<1~MM$UO zjC=bMCu>M{oB>$aIR^A0X|3^{8=|8e8mJgr?uAQJa{^ENm%~o?Q`>s{05Or>VV1f> z)S@yGsZUX^p$ztSz8yWSwjqA#y?UO^E(@l^Q4^2ku^ztv;^d+FvTnqb^j>DZ+er1N!#S}M<<51> zRtS#RO|~15#mESBAjLz=XXW4Xxw#`;&DiAs@A_Wd0YYg$HR^Ep`mSkgRljm@hAzFQ zaH9t9c;O3D8F|e<{s|rjKSF2(wm7K2@uelXrlrQRc?&397X~Qjp8?$EB@n2v3W&aX z`nU-KDA;$=o7IZCA%G9~R0bXr>NNJ3s~1M^#3w4GY2)_Lqy*2-cMvBvRT^o0`9$Be zpH^hQdJndWoLaRdBU7H@r*ZRB)Ro4Xksbmr(BSB084d7VMm{dwC)rgywNhZA-k#OD>&iR$U;6 zz^4$dO(Z;c;eZgsT26Tie@xKn~y(V{m?l&zXos<^6Er_P}Nb`e1zNDKhe~&5J z6IOM*nSEjC**J4%J-JA;`9UUGQ4VT4bI^p7Pz4Z!bu0+jTeLa z2t=$OgqvFV(oIJlaT{;(#e=E~Ok*2>TI9QH!p?1MFCaQljCXo|0MM z!qZ5_DG(KBGZv@eWT_ZA*2)btKxH^y#ftEBhG#az)dwDkjUG{U$*OaUQ4k1^^5=@e z{A7f4N`hg)(00__$$YdRjw|B=f|+ zPLjHh4V^4SNGjSwAc^c7Tlqkk3+!eE(-uGpl8A5-Ms09q#~a57ru$eXxDc%;V}w0fMDNV=$G< zj)cAMn5uYo=-*hWS!5n-%EYYN6=@qgV>_cqL#;_3I#^Rj;=RXf)$@49f4in`ZUqbw zQNSyPX>GtBA4D_Br=~jo{9NQGamKHCaMt=oasbf8BfpM*O$ul47`v! z?kckAVzQ-*`4Wb^pRFY<39{7l3vxV$e4m6^ySmz~TBUOxn6ED|nCG9c%q;6C;e#~m zJi=%iP8^;ZDWx@v)^!KNaA8ZhF#CZ|@u7vACNtk@(USHr6+WnsGW>>l+l|L_9C4$x z?!RvN>LJHD!Hur~4pmYH{sD#9^w;i|kUD|)$qT7|rQNK;@p2i+Zix$Uj7-G2qkkOY z+mMuAK(vJaKBM4zfU!;;amtkBn3A=ljiqQv_==u20y}$j&2)GMg7kr#nAr;lvRB`% zn#>Qsx9DQ4{lv@ilI1Wt?baQ!lLuoWbSI*7#V7^_N4$F2%c@!bewRakK83g$K`|uR z)*n1B&6dab*~pv_R`YY)(UDpET;uNu*#%w3vrHP7z##dE3OclH&s=WIWwn6k$l$x+ zZeFw}G1V8B)U%GZQWAIXGN@TW@EPeGrZ+A;s3?FqZ1X05|279aExL18`F~A77c!{--^i8#OSTrcjwe4A!!MYvo@xVpZpCL4`4uhfnm(X4@hOG2X(S%fxBMX+eHg8UqU%Om;=z88{?;5nyBrpCxH_6{CJT}) zNdGVHWk-EodY7SwPh8m&KemcTJHZT8B?iGM%@4sUH(9GUD-uh-HHQCD0Sp0tqw z2>+1dE!*#?uFi8(ae-*?oaaEZvU8uOKP>Z*@~ zG7XUAOhS#CB-rcys3t9@n8B*jAU-@v8F?aIO?d}oTodMOZzrFRi_QMI{H03$eyXB& zqjYkHzbY;MU?4jWp&H@&rmbQvp(syhtXiHPzj1+EjV(N zVLP(b{jA$=rr1{g;@-?JI5|b4&6NH}HLupuj79seDpPSZD4$afr>oPZcVqjBg`rCa zRt3#z#u#N6_)Vqel!>2ljz&L;9%>a580h|mPo9|8!WS=VwyRAzO1EA7*#4&@2<#0e ze@C7gksdp%i04-uGp4f+jm_zgT$}{J!o)lHR$DYTikr0RPt$s#c2DUp$k(G>j zt)JT<wxmnfGUW$_h&0wYL)cU`o}GVWfVYFbnRH zk?o$r`*;K{t-~2UI?naeMf-$QFxZ|!ujAZ)2Tt$_)2x#HWv*%20c`kB)^gZiqi1Za zdCG1+@r({ge2M)BS8u@E6h`h3?~EB zR?H@L2HF_cH*f$1j_8QJQdvQu-@gt=FMaI-8KA}VSQ}0-5s>Z=JL>K~I-AEpyRHff z{$+f~_Xq*+;KY1)=Hhn7-KB1a6Ssc;%Sy|^>^)_nUwGw$o~u&m8;EUckVJP*4Re$0 ze`3l(qL!_muvn%c0Y66NYO*Betz~b0v5C#xf;?{3Y3zs)%YBrZ+83JMr#=~@#0G{m z3k&v^N-iw2@>{lcAEu+}ek|G{4?W4F#oksbEz8X;=p|(WKI2P|Ma)m}zOe zch?tgcM`K~Oip%qD=->`*vst$%~|>W2#&T`WrYbUhS`ge%bV+>AF$_#I__Z7zFxl5 zIIVEr_WmL+f@IE~SM8Q~aK7BWTQV#bADEuRSDl~z@0NJ?&9e1>tBl$Ct~rZHv@)py zCQP3=UfW{#t@J23vAVq%bdJ5kU#_bHI+RgREbP9e)D|Ivr{D&gZGiESExQOlV_^zK z_p-d)g!kjq6^8`D9$+9vb~Y-auxdnYKJuI!8WzM-i5H>Plvw_oe%}Tn|7$Cb-1SSt z&>0jVrd)9vm@7in^gCP(dqpLo?ya~hv z?>BpTFXlw81!Tj*4aBF~=3gLXU#$4i|HkEy>#$$z22(sc9C;MJM#nU(UluwlnJ`Vf zsGdi(hRy}1LX@)b;T>1(O?)rZ-+OYqrBs+S;r~EtZUZf#;@iT9*NmA;I#C7;c0u3k zd0~Z9$Vm7}%&MlR);LKweob*hlAp9kE`Dv8Amz8R64$vaNtigEb_^PwTP<`%n?0I> zhDn6lPmJ0mLCz#Q1U zjT#4N#;|Hl8Kl9s;iy_-g^R~&X@KABPn%5e#gDuw4H1k)LjM%)h~gLGbwbNGa#>DY zEsRN}PlE+=of20GU>vP|p%9qgd-(FsbJs0zIURHN07N$OK;mdBoJc^cn37FxPpj|r zwBn`H_pe}oPwS|#`WPQ}H8jMP|ZU{@O6rvcs1B20bv!CLuy$TImh{k@C93h>fg0r6UhACd`i=0AIRd&s~fc#j$!q4<29e!tsSg z@7E^e^u1p=^oGsEk-W={KX?))pZZ8f_~05CaUNEbpF?GroIf`lH93-*}dZ(APzDXdyK7poe#*oR_{qKo81Ys zSxf8NF5)*SPJm9OeBKkdM*bh9GG$d%jltn+3F40aSQ6=`y(AS_+(o_AC*3LERE63Z ze1ywcprkT4myuUdJ0Xyn1Ue2SC=mX{PqR?N8V|qRgBjl}*NdkrYd={NHImx)!;BDZ z#m(hAzaV?A3aw!rzQpZnYq>g2QMT{#4VCTpSMytf`?3YA;P~rGD`Vtac`is0HhcxD z!Yr2BhfR%1nF`I735_?(i4khL*sA$`W2aVEDHjQ z=t7@3ZgAN8wN9Yj0fc|`HfTpM{*owngj04yKD{n)?_|@Pr=G^ZR=Dn}`fpeEoD&!- zs{;C|Fj#0=V8>TAcGY{?d5sQPRanvrKZb@6O2kegLQ*(sDwU7)~q z*XK$47*F4=&Xu%9`Dw9ip=Tcnx1d8NHs`^9H|+m%u|9g0hkm&Q9VsJfZz;iknghCt zA`ZCn9`6tmU2aKRW?$Husspl)8L=Dxi@_V_mWJm$e%4vw3c7{zK?15>_gu5}z@Y4Q zqQ(Y=-l4_)uwXhX4GjM8p&=~kMLUCTx|7Wxz5%oc)!h21{`_57F(mi7=>5fJ<93{- zgYM2HUOSXJ`H~gLaLLQs@-Ni(_|S2Oe8KwNz5Y((3YxbcQ4(DziTi*PL~#8nU-6yG z9uKt_GlF8fA~zj*=7@QIJ(~4D`?LfQ0*-zorN=08Vl61;L)h)8t!!&Ics&P!ibBX~ zdfIBu0f~<6%DJP&EgrYz3@@|kVp;ctjtXX`Nexu$9*L@vg7HWt`db05=sMCo>*27% zq(L8xTQ@##@iVGG5tINtH98Bz*KX4s9uMVKy<$iI( zGY?x=IB2EVeVlQGZPg)mJ)k*V_1-NLL7$K}$MBq^qN&f_Ai~VsZpkc_1h+Z3!`iE@b9J@n%lCM-QJ=!F=GM4L@3hWyU5> zBNFVzsbrKr*Yvqc$SoBVP;D!O3nLcEhz9xb!m0aeaP;08`p z`<2_C6})~aKZc1QzObbQS+1?)|3-a1_{hy+3TCs`T7RJm0xw^xE6oe2xGd+pnN8`i zQP;#=wWiPiw$~`-4uJu-)3Eua0>5awG~WIGTt-h&6NABd4EI+pUR6;8!cjP@N!=?p z1{-t_iOp}r{cgCDGKd?U6qPGj;+Fl*c%v|NR{upNf)@nb?+8MEJlle>T}uHcCe{b` z8(Jv!3(SQ%6?<77|XY}2S84y2G+0&BAJ~Ai&WmL7>knF zCAUMuR_z?VPinc%Vw7I~v-gOu8z3!YE!$_=3}?v~d@aNLUBUe|Vo<;9^89(@@PZs4 z4tSTOkMte8mA+o~G6L#G{vLxSfXLbx|ICOvWQ?Ao{vFAj>IP1@lqP9S_AqoyCSo*< zV(_U*7aXEwOsvH+7FedePZT{~=|o71)ortp>oyn&sM|E=Tad+%|BRGgi(2Sr>u0Z= z?%pXG3`vf#3?1bb;lu&IVkVD9;+^=T`}8Kl_;3=C2fmg!^=U86nP}wXvI@hbTgg-z z{n;wo@9^!`JcU(~!aTC0XD+h5n5)!bMnR%WdyCQBA}@Qw5}gXkcT?0GtP#`2*U%op z#c8BGJDqFQt|c&xI&x4`eWeb6b=7XM4Ya}cI2D>^L>7kPT7JY^U`{Y(ZdPXT5GqWg zTkA@FDY;TtUW-QQiw1bp)`()yy>45D^x*VLYn_2Q*Cl)aA+$P)}hlWpLORgWNA7^hT z*#Rme^jmZK4BYuArmMG2Xkz;XQG#^)FL#gFe#CA&JUDx}_&(N^3zP#QJ=wP61L4&S z#kvj~3CVRfvN;AY2wb3xfe1oQHP$LNHWj}nv;%l&dY@p5FN7QhZjY)^2pk2c&jXmj z3N*6OVd0=3$9t;-jGS~E6spNm^HM(HV_G;6K1l}Cev8iI$T{7>kivzqGVUKJg)v8> z7=-!pf%^JheVvpf80XiBxf<}<%23uz+e|$xAJyAzld=(kAekGf*}HR|yc)Sg8tu*= zUl!?ooz+|JBX7Mj1}$mHJ%(zu-h_$pvnQaREM$i_FYjRa@_>zVyV%u5AA3CY*ZUm? z{`e+X0CaCLUIv`&R%~Fu0WbchMD^RqwRU`9y)$Rl73lZQX$fJOsx_GNenlqwuvz}W ziizzmvb8SMndV7g3c{pmMiPSiRgweD)W(T(0*)Oe-_heR#Ma`-%nHW2>n4PjgpZsX zXcFJbLW<1EAS8Xsj~`O+q%Nsh%s8f2ub4q_h#pE#{WM9yxT%EH8{!)=T>}%OOx{bF z{EcV3u^Z&u8@JDf z#j`9&38_Bnfoo{^&jE-9x*dNT9@XV6>cDEpc6fu0V+!K(GtPh#Bz{#IG%fQDFix$- z;Q3egm%3QRJe_WJ?W|jbf!L$0RU%z=VVg=wMSnoNO`3b>cPw%o@s0ju5~=m;(|vZB zo>^nMoSEC1EmITEgm=}LF5gU1R5u3_=Aoz0L+GT=3o+`55Cef z$!5;q=YIXI z$q$cb;ZNGh?WpYH*zT~2Umfm2HGKKTqBPBCrC1=&x?J>ooB`fD&o8gT_R<4RxbeA} zT!^|LZWQrO%4JW? zj$ms+6k|rJbPtwET$gAUoa#=576D(ZgyIvCABS033Z4aZn>=(hn9{i170A1GmfK@h zj7^S+fNH;DmW+S|*)S#2VLW;DBS<(iiCb-Rp4v&lH{+utq(q3iTv{&r`2Iw*wIcY0 z{MdP`{S(W4XxLmWmdzLayy2STtN2^&da)tFhO@jSQ?D17L>15~Odv-K;`!A%x2?x9 zjx7Rci56UH?43k%Y8GBo`31taYk9}U_ujZvO)qo=9~0x4!hXV&l$zuRmx;XG-t2m2 ze9vQtJaDCBhBQMC>smB0HJJV@J@|s3H}kBK5-si&i6P?tWvg4VC7*|r@3W$s^AYg8 z8D-MCm+Y3^Xbn)uXV*sj`f7L3yf4dv2>w}PD=NNULuf?Z>0LV>*a=ROAlkunrnU?$OGaAfa&o8vL1qm)|MX8tEQ>gTHbZErF>AF?Rxn8}(Zcq*)T zKZh?QNKEbw>2y=Sn$awt;{8c=kd4*em}%+X#~THAzDFPs5%QBU2;kf0M%5YrXNMTj z{qc$@8)<)cIYi@D@X*pLeN{DGqgoeM={NS$1*$IFHibcT13KGs+&xb)K*6QY-M*$a zi@5G>X|)rHp*LW`B2CVtm-VP}z zFip+Gs{$W7TwEpX`DVis>^1}?wjzV20OZkT?@9HS z?D=nr`a^=I6N$H2DgGF^LA4X)7e_51F(=2nH;ZLgAh>Tl~n;F#1CZYOU z^^9>a?Ge@Kdy0{DR01pF_+X4h{(5CC+rgnGcdgfOy5q&EYNFvNxwsBnNf*SeQMAq_ zh1&na)jJ010&82lZQHhO+qSjZ#%g!3w%@jG+qP}nwynE&)pzRFIY0AjR;4nNnK6@R z1a#PpkHE#?>{gbwC{^fN8MS#A&Z3)1!417c6=<}tZ6oj+NEHq2EN4Hzxvn| zcL^k<7;ymwAA$we`>~KaS0>uM3(AwRY-JTHP}SH~dqrlT7i)Z*il{x0zhuF zM3?x??P>Ut_Fk}{RS*1r(~{H8w?dZzK|f~IMqkKx>69f4purMu?vsq%sra4$YviJ` z%`)xR6K$Rf-^&4aiKPQ7upzx9L+D|PF42tmV^Gu(JZM)LTuuHMmDUN0QZ zP`3YFjA~i%6o$4;&L>@vEtg-9G4b)v5{}MGfcboOGtQHCu4u@LMZ{TPJIK1(q5Dvc z8fqfUH~kHOXsZ_!HWRS5f|ldq9xVQdUJGXLX0xXx<}&}P!{1dm79+=lu>htD0br>a znnZZ*zC$c>q?>cq6U47c-hFc87;^_Ql2Bzr#wpOc0_EVV%n+(k;5!v*Y_6Ado2!tw zy^UkP?+jR5W+~8Gb0m7^L`s4EZ@AUM8k*qBgv+X>khyZXWBC*q${K z+(oz|f{q{i6(KKvB3`bF@h-?t9*oaz#o3n1V`EN)j8ws^(2& z^-JVg5dgwe(-lz-gJnQbuQfB50vDUA4NxnUAomhYxDg&XWwzazw`th;>)G@FcD8jx^SHDr-XhzB!oUy=%6c2OQ%3nZ5+cqFd2?1Z$S9i^ zw1yY#=X+XzrLZRs4?p?X2k7&ei zlr28$!JVS8&WM{l4?oHUG%Npp2Q0fQcBo1~M7N)wR_XU6;ZHZTyba)xhjC}4OM(HB zkk@-z1DCX%6iIX6LRIt%8Yu_e*}oWXEhD9t_n`cJLwa=EBwu z)zlrSOC-y^**(mvjuxL{#9%-mIuRe=F1;BF4xHCTc87(^IfW2EK-_m{XT0#akTs z@XGJ|6!MbHfOkn%k{Wvn3>9?J7~oe;^8uw&BWV)#lPuNjEJSO%!`jj6Jch7+m%7RW z8^W#QN#qa)_CtHgVv7+y3x)<}PC1K3&&mK1g`xmp8jf<5n50K5Z(^F0tjL|};0Xn<>1~9Xg!X?#c1&(P z=-_2i0@d3v{t=o_6cBA>SpUNv>ittRFK0rR5|wDwV<57XB~r?rd!5o{G!n-;UZ=TA z<7o_>>JWZX0Xc}w_WjEs{UdM``WlyUqF1J3p(jDWmFFm1&LC0d-I6lDyL~@Hj_9<2 z&Q6{#0s432p$L4FU;DgY$sU_u_eLZ^>{6 zOQkPsA@a9OrT)H~5LnT#6danjZcTeLVj#mD#-40ycP~u0r!1q1yZ@ZyS|)-Lw7CL5 zAQTa&yb$HD?AqCc^1DkqpG_$&ZIWf~ITJRiFl(YNLK{O4Qcr;pF&}rUS6oiJZ5> zZ)splxH`~)`vBT=IcxHp48z91yX^wDbK^E;g)INSOVl$u#8)BV=3#P+t#LL$^lFL7 zd*1ll1Ns!)qdRqfjtpdl8H@mJzghdMm%)fEz5W|hQ~lb4@%V_FK3vGWVJw>%yZ5>@ z#ZMQ1u?vaXZ&79)Wyjj)5Z}AOjkT>u^DzK+qI`OIoVT4)2o^dfqlFd{ZFR7$H*T+U}y;)e(J&aWy zK?FW0h1#{m_(Z}=Qmr|sUns?*-l@`)a)uwOqcrSjDUaJAViD^$HaCJC^$(&CqkhH2 zAtqm_Uilcvn7RC_o4XDKy)OLYay3|XE?Z4^;S#B<3VliDXlmDuPp8L=nW>R8=onZc zm>m_cj!yv5U1k4A7MqV%OWdJ7(KnIKmhP!3PelMbPFOg71qIqNb&?uQSssVH@l#dr z>ibu;=`IZD5}D*w_PQU9SEx$D9qYV!@mU7+HQ|5x|1FzcpA?iVbIpvI55@Hi!y;vw^QrsndA0H_}C%+D-96 z*uM4Von10MWqPxE=%__Y_Rxx0yal?8<%BLWJ>V^={#v8B&SOzXVU?8gPQ$whyO}W) z(*~Wg&Q`bss%Un>i6GyRWObOV;)(3n0>m{fXt;IOiWLR1@>3Z$!o)}BdRt<^qDCaLmL~R6&Ibhd=G_c5j;kWI9kvzbnV#{o`7oV zSY7_QukRRn5Kf*9X4+ddlqYWi{^-?d7+;|h9@|Wm8QQ9s^$yx76El5jU)<8$tEej0 zASfg$Ao&{$%omk&Syx;;HO9N8@7nCoizX)ByzO#Do^-I2fofg~A86X!%_|qN&Hdyf zy8wmeEL?k6**b*&<&KDy4bi(R0I8Z^X`_ zJ@k3#gwQBg-d{SzXsM_fqTGC*{GvSO9KmnjE~;D}lx7X8`R_tg@P3N({#FmVK(a5e zc!YPS*&1_UV)AdM+^`}Gpy0BquttR1kx(?i!lUG;?wMI6V1f3r_92%UIUi8`QG_mf z?|#DJi{Lg0$C}oZz=fQcB^#1Bg>fp%oInKrc zZa*;61hSH;e8EoX4Nmx&flk=|Hj>nO{m95`rf6a&lZbYF_!WX;2AAm2b0z4{2v1PB zb0!t71nk`ngsN-0w$;}t)3o;>IL|rtsg)h`bS$n6mtLy)XS2gK)2dY) zgMogmE{s3-1jx1O41u#Lo5M^JZx|V_!=AiXzslCg&^r|2yC^a%O$}8&sD9IDO=4_p zot#qotw0*kIoRZPDp?Ktc6n{D+JPg%PmhK4%SF-{_izOX!Y6=wpSG|gxO?V_5hgk@ zDIy;uBA)o@8+tvPQ#TkI%Oj9r)?!CcIw^6k!7~oy&bz zijd1X>kgIVP;#cJ|3&@+O;2iQaiBd^2>-pklE^4O&bzBwf7k+a&i$a zj#cEPg|heFsYRWp!d~Q$cA+t&J&Zyc3mO zqoNA<`%qOxeTZUKKiLm-y$1>t+DNb)qwt&z;s#3c+hjZf45gSF3W}wWi%g})VE(j% zFoqNT^WO1|iUYiaa<+h~VL~-TYU1!=`HFTG9QEmwAXW0b#_`+j%U{k{>H%Fq)8A?_ zKaDkw%f?cBq-5Vjur81VgvKu4OB4+J$tTIRLfJYo(adJ&VQe5ICc1hFY{iuAp*KE* zSrlGK@V_C^@DABb=+bB}UpzT){tD`@8%G>P7wAVXU=5o*J_N?J)peEip7Ki?vKyFuB-J zh-S(G*CYZ;EmFuL-DgfA+59w9f$yY(C(3wzBIrEpe*v;sflR#va3;|bHoU>c*2cEp z*tTu!jcsFNZEV}Nv$1X4PBzAud++zv|4+@F>8^8Tx~scuX6j6zr;RM>^xeR?Q#cBd zFR!rWUvb6pkSP&Neygsq&J%aiJ6_T!TZ|o+^XUhWN@kndn;VILn$6SJ9_TU{I(aE9 zlsm9SvZ%IMmD~E7y#O_=*dMSs9(HVOZ=0nFzw-rvDGL4Q{iI3<~!|WWal7CkNM(?R0sUW$(HfGIvp5qbbt)T<=a-;At&X z1({%1$dYg5Urgnx{SEy8;3tHs>selBwP?DWkfdn0w?;bmk?~i1tQ`vD`9KJH(|*PX z$l-Owuu1cQ@U>dAg4tV-l@`@s4Eij_><}P=a_z_fx&6j|Un_3lt)kqX(uiRno0TVN zoXHb-)`uRQ+h`;@=k%N}W65;|^*~KW@@RDzYaP80r9P;&rhA^Fh)nej2s4dHTH;#n zONA!~w`DRG3^zh_Z*8Yd!{uK*L(I@q;Z;Z=QS^|zOCA{V7gSY1Ep$&tgZk9sl8yw# zzTA7wJ`J=V8st9>xF5>pG8+5YuUrgvlYW^kHlE7R#Q0Nd!F|~tQq@NG;Kf$6u5SCf zgmGQ}`CHM_xoBkjs3f$qF=%+1EZ|?6d#}+8rpVD)e~LjQ`1x4hD$L`@$u3Rs$sy=^ z2|>MXMK2Yt3AAx#F>>J=bRv3+vGkzC66~%H1|8r{MT){8tI%pheB6dLAR8;~zle(Uh>R@gjbK?aVLOVzq zS>4`GOxUqw{C)-2s_CT2EtApfq!ka~;$mRX&k@40k0A}VMRBH!QXtBd+dL&vRiKi< z>n{8LbBF83D!)W=&)p#}d}U*(By*%w+a=L*1KUC@@363@(HM%eZF0g*$nj&@{bfK- zfyo$x^MF|Ni{qHW6H8b+)3C55JTBbVio*i04*q7E}oy zzN;U*DwvT7ZOw<`(!E=0Fl730UxuykQ-clpAH%2tM-lvjYb6f0*{7|=XD$Q#^0jHp z=h&3WYDY1MRSJY0Zt#td=h;@vVEJ)CtDgx^=(IaR2~4q|8$-r*QFRZ|sltwU2@Mnb zYz!q^G=)uSyHCKv+Sg(nzSeKdE41u3PH5(dN^FnvU5Y4A0tN%sI66ZJVncHyAr6e1 zn2KMUj`5}!1o0)Y*xOG{X_I2F7pXMA{|YtBcKj)s>FapXJH+lWI;fibn5-Anyyqn~ z(O%Np5MS=CBM$Xbu5Ou9?DH{iaK)O;F*4%ZtB<3Ndz)Ngwrb3)vA51$6%@>WC>%#; z(9Jn!P=OY!F(gboL&SS|=K)Ac8R|IZ`=_L+m>;I0;+!*F;<`y+5XxBgX?I({2J#?M zmpLmX=G20Sg@on9u4x@cEcv6{LRjDAvBiw|!^SyTfV+8tM`|-=U(JEkTM5qSXFj#SgfJTX%fK0i$*x9v zy|UFCnYLj&EUkS*nMX$YOLSQZ)wVq@29SVJYDfz|wA*`uHm*#{5>JJ2+S<8MeDy1Bom12J)VHS(c3}>gJHQ800BXbsbQudHCM$t{md8+_tZS;t2iwP| zE=y_=!qW+*!jarJ))Hw@vl%_M~m=FOw)f@ zsf&^p^grjsydSOUC3yEle??K>PlHBT#Qmm}tIV)_>MJzk(2)<|Ums13(R_k^5nu%} zZwhp`P)z~(QoSx|IH;&%&O6K7uCIcG23E(mzShjX{7oS)SVh>iA!M2d|6`E?ihwya=k%sAKNl=>SP45Yjn)IvI54B&1hS2PCC#w%Ld zRwyd?42@GMOGaDsf)H#nDPy7Rj3SP0H#-8kndtaOn&Tu?p1eO927l= z7%MHGdJ<9QLs#P~b`^U|wN(@}R*hnj<2wY&di7!)18u1LG(Cp8f$I)TkgvheQ_^_I z+UAqsxB9%V)*_qDu1q>&9K33BSHm98TXz$FhfM4`Tmp0D+{epwNDW-m@Z^WDx;+5C zWpL(4Ju=%|!0$Jv&!uUpL!I!GjF&fmhKigu@td}CYqt_sII*Q2jc|*~yaYpF);%CQ zDSObT^GmJDZz;^=sNwTsX zCw4i`74W+Yp5`XP!epA)OJ#g)8=}0mq+78Kn$Y)BI2UsGmy0H4wMHGYon;ixs;)6x%$7br z@VDq4iN0V^jVF8t^|NiAve~r$=Uiguue+tl1A7359k-m&B5DWkh>HFCJ1Ln<+8Ir8 zPq#G74=SCa^hE%jmu8qk z@_IV6m=jB;fepO9%_T)j$M$EZPytyy_Gd4Ya-BPCtL-2<&ql;B^AF2~&=F5?uf@lk zog=+jzN)@o`SJ&Ew7(u|gj#IYY6^E0oMjS|L0-N__vB$)V}-@ z4npN+4$Wtx{sQ5<)E4h}eJ{tcS-4HnX7EB^3DU^VFVKZ|w@^@;gJxuXtbtDM!Yh|V zFe3@y4HhK(hU$`Acnau8D%zl|3>L?io0sNX8i(by{>$$LUhMziV;A4DG;u#XhQ~ip za*ZHV*tw8u@f$9#0z~gDz2K}jnldbhd-Tf|NDX~$wZ^fkYfC2qRLVFVnVq&_gB^bX zR?Nt|Ki2RBhZOiY*7m9DNBlU2M023gjaTsmcKSPjMkzlMw0AToKE2}8XiDWfJ~GSE zfBd;*Cc|3`H(!6bA>l_Gd2uMev9)Ktg5^fT%9hk`cbo$nCy<2=%7hKjE^B$KGU6?+ z(F>lcq~P#2yx+m1@|g>WsY7%7TQ@;W#imMbOoKp+U2+Jk+<6R(Qz_*LvPq+hB#}>h zPytM~5q*x}BX9poQaOFAwm{{C>vU2qNt}^&ayVZ6fUrdA z>sbDD(7Rnox!QLz<5ay6Tha#wyhK^K-7-B6Y{s_Y=TpHvA&MX8toLUFICV+)9xSpk zd+gW*Me85lHd}9cY!T_x7sR_i#IA;ObheH08=ORhha{_pjTrEra+ew|4aC=YiV1q4 zeR;|j+H3k4L*;1AshbaWPto=>H7ma5Fkl8c8iPw_-K3W*R__`1MYWrCw%5EP14aHJVJAnDPUj^)n zcxx*Nk#=F64WF?Rlwt!n#)?Y&`>qsEHfa6?B3m7YVdBSjmn20k1 z=o;jXru1L^ave8in^&oh5o($$@Bn{g&WoI-POvL9p?D8-_fY*;OccOXpbTohV(u;; zLz0bj!Z5JWVd9VUDNfVp)qoa$rdnw)2kx}R)^*#a%cZ6S9uLHPKij_nkb{NWqr@N; z1eF8i4qIY5)R7}H-wIDl83?CrRR5Z5KVMWG}E(s6CO#od7lNm1Ye$sd;JCpd$CyJ3U~`O zkQwG&o&0zzvZodWXOot$`gb)0`jSaYgx=>zM|}}-7o&n^DKzW?3N_Sld+EM{+C9x? zZAVGSt}dXyVT7qzPe5O0U@%I*O&aJG_$rMLXciTaX@%`q>7Ec*`bpk`AKB=V2_wkT zh4*YzBsWQWpf*b%6e@I(hQ2!+|5fI{f*g*i)#A_5a5Y&&8ePrNU6=7Gk@gSD9^~eO z-p$vLD{GwEcblE}!aHjdWr^v_7U>(N$2V352cSJ&q(0pjgwzhTkl4@nu8pL!1WPSA7kAGdlvJkNlg(C+4zD7 zA5`dQL&-2ka4_EU!T!NU5xI#D+A2|Q3mNH<9S?WKT{@_kO$XBqq`nN4B!!STe+9Uwd3+g#5)HC!3{p~L=kyE*FB z%GZ2n!$~A~H0LRicz>9lkKkDmSaFftAkcrg)FZnWq_4rwAWAKt3R~@dKJ8U0h9R{h zPwQ4&u+^p77w~Vlh`$5;0mRX=_6qX2`#&H!L7r@~}$s=f1B1IBvN;i$_X z*Kp+Ny0*4>KvX-}5zvPIXiB~$ynYx$v9394A%EE}tV9*-~&& zdn@DIT0lE8Ky-g?M8b2R1atKT#Yn{WiPF!E*%a$RiBkmOi~%p?BMsnz^!R3W9~l%f2!>YyyKc(uA^0xV67 zAepC7FH|!&n9q-g1RsG`U1_@E&8fY-rdtTE5*NgOWeO7r-H9Y@S`VE~5FR7Pq0$JA z_7>un;Q#IMTn5Cq`yxfMaBAB=7rR^^lk{-d8SjS2#izU9iVplmjAl}wRg4q!)5Zegjwwm-i;~?{GGkLhSMkRHGy#PBQ2sv*5Qot61 zxoj{b7fcR`rN|z*ROP6uruZ)=?`+5#lX={#Q%T4-pmmy}g_A6%ME{8syPr|m4a!=k zR`4Hw8b&zidup@_$oF$e=CqLSp3fulIBo7y=_HGvh%BDCqtqhjityaup3qHD-l)wM zHW=2Y6%pPM8oA@T>F+Bu_w{P@-FEUR=D*?H!#s5s`^oWl!$5WGO$7K*ZUg?QM<{(0 zm=3*~33~$OEcFAu(M`SMk1>Ca4Lwp% zjw&2*SoIR&)=xZjyI|O28xz?!u?d&Ju~M{6x;5N-E|O(F%i@xr_H!X9WNk+z#=l+B z0|eeSXyS_7E6+ABkZ>VVjYX(klMMzHjme|X2D)Zw%f<2HSN%ENbk>PD2iJxi}R`2sqRc9=96fBfD| z_%N{McJ=E#T_P^lf@_EChrGLnX@5K+?u31f=oAe8k)#4 zk_724tTy7&*7C70ys8l@KY{08u>@++83cwaq;S*;uvD9?BJKV(Oe}7NtS!NstOlBn z&5+jLKN>c*T}SwM;}+0&uL$tVv!XW|GkLOZn=d*H+O}Y!edeIQR07nQN#Sbu%fGm` zZVY75cMyov!yaAVVLCtR`<9)8?uoV;KykB)yD*DUl2$Z-`dc3U z3YVU!Ctm$?nnQ@NL6jat@RhzYPlxY6UisGdeVk$ zg?i$tAs^gq#ZUzc9KzDo&6u{deDIet4;N9##?vIu^iuGCF8}I@?wFqfw8kg6y|w%jWvpP}F}LatP-UF_mAtV{)Pr&r zoJ`TCe)3h%!51vV3)U;;eRu|$zBQt*FI6%QDo!X9*Mx`3CfF$_Mr@CF(wgipAA?7P z24t$=Uc6*xeZGSJi0jKrQCI9^IE9t&ypegD$FPi?%N+G-d2C)I(*xF=(*3>X_w zcQ(;f+Z8i>ax;P5kl6*i$fOno|6~YkMViZ{EuVg#hOvz%2k#4XzQ)*5WheGN58@xw=uREQLHV7BVFl$-9=I)_ z7sd`-%EMp{eJF49%GD4teDyU?RlQjW!^44!ygznc;s;9$4WwB=L!;=+Fp?Gs9d#w` zvjb3H)5BSQ{TVTwb}Fk_M*NCR_h`isN_wM$h#-UK_wfpi(mZG2Py%!m^6Nd&v~U#L2aL>o`#49 zTGMl)*%uxC&RIP@yyS7KE(9V^fhUcuXBxTvj+_heBOZukGu5NT{F*Yr2Zd<RCa zV>L2AS$;l7v#eqdF-oHL3R!_u%LS^&asF_FJ~tE%0EsMzwAhW2>L5lCOszph83?Mw zmt4BtHOf&h-i_NrFsND3s^&2l-JZXa`lFM54O3cdDEFIF_Vqk5#km2ChSc6qR-Qud zI2HIVO3!Xa+F&TuqwMT%?YwS0uK8uGr(RObM+Z|A!c_yaSr=L^?^5rvT_VwS4)?si zGPR^@FqRreZqJ9}_j(Q@iv}Fbe|iv}eh_`T^SVdFoGAVHTxaZy9<LKN7nPHQRuqIvEI0mX#)$Dd@mtJkvi8T@ zMi@hPu;gmt4=@ify3v|(YY?loIO*2HYKAyrzkt!v8$r)Z@7Qz`{^79QFfH12tL8$T zFRB~eQyOso6YyW51tx7X+;?w9ApXzPWnfWnUHN}5s3EV$g{w4MSIb43N8uH8N%l57L2{+_06R6siW;-B96>&bbmO{vI4%Qk~< zI%C!{c~cTcY21R@ltW2c{??JcJ3RQx5U=NWSY6J2dZNO7zEEHbXW4`ZRg*dVcfgEg zk<>AW+`Ys@TC{1Y_%i9>S*kDFT=iJ7vmI44gEL9s5WyI)$Z|gDumScem#TDKP(q_i zt5|Bv@E8{nYd%k9m~EE%T{@34Xvv9HVFia!^|il{^yW9n21+%ct@GnPdhiJjjynrD z*4w&1F>uK#yeKz*G*BFzCp6G6h@fnM1V0cyIA2C_9Veh(A|U7e;M4VJP!ht-JIh5MOH8p>o=$#=oBSvvmQxtWvPmKKI?Wq zn_(zRw5?yMfOlNQa29W5` zt>va=O7aG%J*f-$NyEWX&GIZ?>qJFo*6;55Vh{r^{vag_2^ukBdoZo0eTBpkp>{n? zrF&V@kDk*(DHXPuVLd|(1(MA9YzJQZeZzV|)FRaQtn-=6MOKm7CD(5(Om(?uU;ZrK zqh|P*bsI$Xg_kVlVkvvN#glWb{C2Q38RpelR-WO^!H7c4CMlfS?%~o(fBqC^8kCw! zBR>f@!M|gZHu5=7rrWGjEJ0U|iMbdc;=BB>_yaH{)g*_1y=A?d2QU8Udi6$)h3--N zkP^w4jwGe3p$aOf^S-jCjKbTG!i%JVMVfpMAqUYZGbD5y(0U(N{Esu`%?`ZjHG^!B zZiS$a&Oy@dli&7l2{~(Ek46b7{z*yh>}_zUJ=8$9J#SA)aqUSSpRyCZxUu{dM@9i< zx002bugMb9uq4IHT!Z3dr;_d-W5R+o*FLrC-(0Z`>Y$dvO7V!keFqyz^zUMtgHhM+ zp2H7Q#ET7mg9E+=Vq%Ks#|}PY*+X!vl{Eqa^F=V=gbthfYrNuTh>A@M$2g%6-aI)F zN$D~X;{r@$h%!kZ+D=_yVGM}ViD!=I>~NnIiHDd;bdX{l}4* z=s}EZBNL<1KlWpdBmZb60O#lHIg~UC+QA@++sji^zWAbVT$;{Z=n_$rZKK{y|6l08 zPVt*;9~02}68%ufT1y~njneq=^P*Tj9;7Q^Bz{i6Ez63H|M(+&=&9i^fcN(dSAX#! zBuHOczxioa$I#ZH=POC;ugkISGO{N5pA1kFo+TF+{+=R*tX`(5ZDIYvXZp2D+z>MT zEEbjtKHmeV!ZQSQgQ>T&C#=<|{5pon#P#g-|0N)M&5bWU?FpdEOqa4nnqM6($s z(lB{AK6TwXk)`*1pe$W%a#HoEYVKPCAKT-MR+s3T`gpETTcVd5Kg+T63sX9;MBP539Aku$FyIc>!0qx}JjW>Gepx;3joP5BJ&icrK?F z^MT|GGoo4$I6Lb#iIm$@U93XFd(te&9Y!!dMHI2l4BvfCX=~5O~{ocJPr(0{P7-pLq*V1xZD&gQc?|^gocr~liDlQHbx1eA(;*!9r{Pk( zTEcKJ%n9+CY?zP-j|1n1=weE;VVx!_Y(Z;wWkk#2*pf&5pvX|7wVREN>SSXG6Phm% ztp(D8cHCThi@G1p(4}8@glsl+Xj1<1vWl=mI=T6IyR4|=*^(ln?B7aLWR_YALsvr& zl~KMn-J<)AMT%}|!PSB}UJfKP5sJt5dJ@UCPyC>%ikG-VDOgFb1qp|S#?9R{kaie( zs!KQ8(H@Pl87lKzccVM8Q$)fK=mgk9LEPw$@Z4=1<<`t>%T7mYYYvF=UH0yJh$2V& z4^{MT-mGzE6FP)Y9Lz3Y#C89Q+yP}aUXe{&N$CCvAq%>)){9|?wsYn==GW9?@dE!E z9S~oRv#oq^-LjfE)@Ncd93SEG-9OsD7-rIHl`GnDmo961*36AKs7e4*`g2{pj1zLp zCTJ7^Kb)F|OD5~gisnMnSv26RGQ5gF#hAcAgXxX%+0lHy3z=BgnP5mFS!4``ZOCt^ zRasIz?nZaohsS2j^pw<9Da4?fqk)k@L1e~Y>- zuk3+epK4bX?o}&T&vrTPU88rD&HP(Le&Mn1!6jWsq3UY^V`DE672v21w(K49C7}}w zu3m`6$xd|oQwsIVh*y}igvT!+8Yll$?qC$<0s^6JT5Wi-EZ&<{L`S>8%zNFA{t~*9T6>8lxdSq#nOG{>b6!TU% zG@_tFq&rQ1&t_zex7h20iXH8~Tx*`+v0azApXs+5*4OH1zB&N+m%zmu^~x2#n&y6m z+`)b}@L=M$U>WkCjY=#}APlqk&u+|8N%Ym2ZPSHM4nD7xyf~lRX+?XhG#{}~)!p=X zp20Hz%UAm=5N=z=(hi+Hemf#+RK>wxE36`oQxi5x8LRN-U(9q?oSA!{hqz>>?iG)>*Eb8O^G9Gz$yc}F@JEKvQCABd0~Y8|D|kP1bY zg6msm^1KgsSjKAG|Ml^V#M_7gBY}|XwI#WIIkux=fw;=<8{jzKY&n$NA<~}yLs5n> zcL34qR=dR0qVXk*e?@T-{#5dV=^*B{=i7)MR|J4EKSm1 ztbp*~2W43ZMR3QXbgRsx~#OvreqPV^lah8DuX#fjdzL~&hF4RUT1cGl*h;1PH0 z`VU9>PQqKk5qmpbbFC688etCibcLR7T5i9hDFP~K*MnjBtCPz%39*v24*YzHiA30)nGR2?QX;JDskvvh z>z-M+7|+pOpW|+D%~!_+Y|Z1i@Uw3%QZ!FDX9$hM`WM}KiOM=_+Khp*Gp)H$Z3iwB ze)vCTd&1QE=k6`zv9{);a_|kDaUj!OP47o+{^nKOuSh>UHJXRNP0&<$Qon)oaVM`l z;*!^~vSx0W^o419x7Zu}2TfSz9glh~wxIiumO)E07_uZC#5oco^;yxWDH=zAYVYRa#0f9a|kz_Igb$ zjc+GKK$G5PzPg0rB_M{xz^B1Z(JrXx-HSt}8}eiPwfO4ZKyZ-idJFV;@*APHD>_g- zO8JSq^XSxX-IGzZStc|+L+WPhQOq~I98$YyQ!{S3Ac}4u5pKS61VP6L2fx=0-{onO zGlF0W$1;c~H0GQednSLSU9jj~J7O(}DT*k4>!WNvl*ZT|)EP|YwaOS=SV0u6>w~8e z9bXN*FKr5f|06i8teKX~M0GeFC*eZ!_>9DE^Ed(6!ljOFYko`?waELvokcG+ubaKL z{dDHALpw5lt(dtJA8)nh6vuCxdazQms*%uy?WzBHSM}EYoHVKAifze@Kn#4WwpY4E zTG!}e{eC** zmPiS!KcyvEx~IaeNg&`3+Yhr$N;5@y10-I1Z=w@_WT+P0FGzg?3_C_874;@AMG3#q z{M@Z+7rxxlgqb=V&xqpYBhuq=s%v~7a1~(#XnhWfnPw1h%%6eJzLZ6A;uvJV&_Jr% zbSm*z+Zy8x7afjX>^RjY#OnTLdV(e(U^E*NVX2?y8t;Di1P|?nb0eMh3v)`_C*&;H z|MDHxoJssUDpd8X9>PR<)Jj`R=cqnCbd7dccf+Q)tA^XaSzXb!{mg)aMb&e3Q*eNQ zg(~ycJ4d5PTr?0?r~}T@VQzp%sSFI|cCzEF$9~OSM3`9Yy`(v}9gg)PX4Y3QGI z#PCL#R47G5zOHOX21jn3@?#xy2?QE-?L52mfVG=A^4Dwk5x%&-n0sY`ZazBf+N6lC z2zgnJOPf?#T%b83)<$im?RN$5^0+B)eLh4={(XVego#A_7&wQRC6=P-6QMV!gK8vr zXy6N}h&+gJ-bobd6{KkK4dEcm(yPA!n{=AKiCb)Sg~^d{2-6VLVBFT;Xrr{pL@B`| z(J>uzb3wF8u1PU$VbH(DAzK(Xsfw-^2o_OOGX`Y8+ZOvVD*l?$Wyx1U?9yXquKfm- zF`XG`b#5EeT@Wuv1frf^C?VX=BQERaEaZQu%674@fMBD6-cXms9-;ywK|pss&}{ zy}F8OSAT9j<~*c#l%Li;^<#%I?*&;YJ>il<_gM9sij2yYE$q|#Fh_K_NTW*)Eua$J zf5~3hZ!D;5Z)~HV5!>L;59AAKer@%qyu+qlNgZwe$w(m!-jxUGXYk?EV%v>}aNYtS zH~nCcKGb!r=tiNXNh`|amn~##GC@HRf)|6z&kax(Pp=n7rwJVkC8jZboiF5xnrn+)P?j8Mn!*UCvu)l(j1a_zMJc^N#hSucx>5Rx zds-)jp^8c$RX5Hr}dY`rM0kX|pzZYz)2#%&KZkH`(*>Vzp; zi*B{HP)k5Ic*_&4j6wy2>pKJ z!70EC%bJf;Uy0#4|5da3oM{B*ds3sECN?Nz&Y(>a3ZKH%L zj+%q%CwHUQ_{;5W+?!#f;-Ngh#al(#<;&J-FvDQbCw&1W64UnmNGYLp@Kleunb^`b zNEh&i{wSf}#NHJ}I&Sh8x6OjmEnnfssC7}yvhtY6-EKETyXT6;%!=oL!!!98kpA8 z<8P(TZ`$wKE`s^FNWThJ0Z2rF1MN56GjH*Dqj1(9V)Dz+tOvf9;H=PPBi2DG@FUH= zfBobK?|tLk+M;z$?NeJeCbG{K!ckbc3!X}f{KID1F0EtGSZV@#>5JZ)|F5IDDfh<` zP-A?7fO*sEtrFtCw=kcWCy$Hv8(!I$=RLjJK?Ql-j+D)u6b19b0snL6eIQSj^(9R(%43lhbBGt51q=B$^DD#`6|%_cdd2N z^CfBz7>b9)*D2B%vuv>4u6N0-A)!^&n|#LHV`GRs?cBZ{zho5whxpL**=b}ok8f$VxT`Z%(m7vx#;i^* zY{}xaLJd}?z1*-tY9<|!ZuQbQS>ls^y)%Y1@sh)$H<)CC{$c#-K$HTyzwv`D`9-ps zPMl8@G@`@W1bqr_WtaY=mMbYp&*U{|@v{UpgjL*yDWk{nCZTBE0_`73$9%Uw1G(aPtUS01CE>k_I8Fw2aHs)i{0-GQYciK3K zO@z)3&(}IQ#_*x3+uUIu9XV}xSD^ZgqJM3?%{00WmomjUx|u(wbk?UXX+sL^=A)4B zt9iC`x)7~&k|i4^I#Bc@A@~pajmorICyqNgY^^sFp)gYGoGiDD6BgL;u{bpWK95{r zCc>G|M-}A&IE1^$Qb(nhk~aXy&1VlUO-n8;k_It`@!aEz_EFJQy|`E<#LLB^)+IPz z0Y>|E%%N;>HG9Cl(w>2`RFxUWV%Z{yee5X1(h;vEJu77YYbr%paW&xjy2jW?R zY8#BQF<`3jH=^y`Z~0G@8ThO|Jdg;iW>?F1T1J!I=hF2 zJ+&Gv)XsqNKrYKbVclTJ<>F!+yLXWr2_DUh4m5j+-18Bw{L}Tvc4*fJkbeh}C`_0* zJAV$pe<_m$9%JQh%{bS$_)RM={&HXV_k)h0!4yr~sB^yxZn?@$-uh(ftwL?K`1+ES z=cDUG4fiIf3LDyd@f!oEm{mB?t}!jdlM<--wZSp;QvVy~2yg;80bRdkI9a#@ zoUH$&movcG+z|)_IJ?;aTmY^BH-J091K4&T1TwGDb5CgT0QG9=5v5HP1B1Xpc;}+QxyMMv1k;HOjpdDcMh=elH7aGWD`Ft9b75{^ZDhP-E^1&V zb#qOJO6kGDnX$rwEU|{Y%DJ}AiOrFLiK?-J!jX}IRJx+|KCa~WIsAgSxs8F?Z<>%5wHIbEd*>-Ze zxv_Bq_ZeKkT;GtlTwF+G-(b&1p}^w6UktGH83{3ytSM7 zGQR;>K!46Y_T*v68DU(J58Yu*i5-D|!$r!Gf89!R;b>@MLa(K3W+2TlF?|k~8ChBH zncEmz5!)S`?7jnDELJtYXbP=u4NZVndj}%DV>j2a;Z?VOi)bGucE+&U4Sr=-R@OV_ z?_XS>c**RwwJvIpwd_O&&-}wX+id$^bwIdJtN`u+3@|(}uzmhszw9r~(|2`FGBa^* z8dO%;eLt1=FB3GBdMApTeBka5VJ^_n;Mq*>;sQJh4i1j*E5q(!@5J2b{QVm2Ssw6Z zoT2qz5EUNY5sthtRGx+GRtxl03vuH0+&XCt^W-KfrEFN2cxnZ<_P6~^@{G;9qUMZ4 zTPWbP;b~O3LN$d>t2iDexW1f%izDghzaF(Y7hqcN0N{%=~ zW3T#g_3xqaD0%FmpS)JAfwRGa;WCTKD&Eq0{^{eW0AM$*83&nCd3sLn{)BAXrinIN zBcR|>U6E$sejNPX zCXiiVL17vw8GjqvN+LE!i36n`5YqArNK{4b*E=qghIG3*mzFSYEs{J^oS7OjPx~Fp zG2ji=O7Tj)?dz?7mEsCX?|6c?rHtHzfO~=qJ0i>6qT^vcJ>F1GR1Pe1zf#r`xzj>8 zKmVNb7BQ4sA=0M4u^W<^)0e!mlHS?+-5jSJi={kP?PW~cbiEP`_q?zr(nKL&6t1Xn z7a^A+va=u^wfB#~sm?8Mbj^>08>rT&+@Z##VD_#WZIM&eXRpl(g$8?aq^g*{u-Wp>;j6K|7I^r&(%g3;8Ujx=lgdw}MwUpY2ssar5^T0R-C8UGiHW-4i zs(%+Y;=4}Q^`-t&J}Yi;`CSQzCMPT^=IQ*E6pMzuOAs@)sAUn?9!I21nQtF%B_G6P zjx;v!W;aRbp%KnND{1|}l$|9>pF4A2X{46!F>(Wcc!lTp12P zi6~>to+S*{P3aaE4T-af{#o{eRP+n4@Y%|WJ|3Snf!?%>gJh8JG{VdSmkW2# zx2M=78quLt;#R_jW|bbHYL?R8#noVh?2f^lhB;D#;Q3xT0ap(}_n37O=DlTFIU}%O zQ)RUCG=p2lH_a1Iu@v!EnFHoeq^m78qZwu{{sY;*pTu|ev zWKzcr-Dz>+9u;}R5BTH`wh z+HO}0eiY}#=V|7anDuQ8p8WmhEeYVhJodU{{3&JqJZL<~FV~;Ly2A z12=0STL{B8^``h#oJ{3xBkLI!1$InW$#&vnIC~b&FO>TK13f^(zhdh_hqGy&aB$0r zFr3kY(kge{sO}XLSU$%bkR>m~qh}XZ@4+rS8Y+o331vOuOhqNcwc}t@<2m#80TcWI z|D05%iPK20##tDu=)-Dk*q@;6TSY2PX3Y7%P%KFELBlt8AYFD-A?gN(5>c)lubOuw zzEH@f7jD~Aqf>{5Jn<<|GHobSbA`?BYeEliq>kEF{=n+FcIi##iEZ6cZo6 znthC%CHm@?%KT^cmb_hV@ieJOOSAi9PbH-l6Dbv2Tbmtd&A1M`_4xve`anIc24h*l zSh^oqWk+cS=>;8}j(d?}CI-HMD#A^3xCBb4zp;XkY2MFt2h=b_`987R^1EjIT4tmm zXbjRq2g~DNtt5hhn##6af3`ajfCeRu0M7xN(>FKpeRCZH@1y<@Xl`*V(INEX_@>vR zBBF=|?8du_9o)-oL8uvjODlu>5%nt~gCJJdPTdr^d{!SSjvg!Glxt4#?3m{>&Ki$P z*e=7P{Go9Wv*xt}=Ca}Y^I=}{nLU+y>D-4uGTLx=;*%_p<-9*II@keOvo`e3_>`}{ z?cd}>)vAUJPGszR)!Dk)u3_~Eg|A%w7PqMu^*o=!%g!0~7&?i|pZu$^?j}})QI$}* zV0k*Ws@#yZ6`Q651PM=N=wzMXl%lu+`te&ZH!T5dKZIYg*T{tA+&;FJff$TJf6Cqx zEVHb0H!lK~pua(#U2Z-3dL??#%$hv7bM@bB!)45@X3&YpoAP@bs>T6N8ZgmWT?R!T8 z<*rr!D*Scp?Iq@oh?t;vq3!J?1IJh3vZ!`)1^JM@s-YgPcznGa4>D3>OJ6s5c+a|P z5t<^mvnREavJ`}K!4jsgMocU{9-|p0e}^sSC5If^za{YRx7R z06=18XwO<5oErBB&z2E7&Qr#-X^&beh)^Cyuo40!H1A~8tvA)>JrbLO*v=sqQR!{J zj(MhXU%;we?{9~$)_NIJE8$@LUZI=MKrjaGHKJM`Ill7>Y9ii_TUrRWXZZkJ!I2<5 zgw5AeVIEp0o;d^8?-s?K%7LkyZxa7h=!s+pKPEg-aE_1TWJmq!o$3f3{Hjd!`0{P8 zBmiJ_JcPROu8K*q++^NpUfaJR+lDi`3nf;U+P+HXP)~OC*u$#< z4M-V3V!5JUrp)w3RF;7I_ww<)Am8W->@qfxQ6^6ta`kF{MvY2g9Q@V(mWP<*(zXen z`kXtf3md~`>|o^^C*PK(!34EL#)z+Q-;w!wmDevPJrOb>8EXB2yRiF{S2<7V@p+uf zO;DK=lUdjJ~r|LyMDIzX+bZ z)+YY!V6n3g)V3DpM*wFKrQ&4CvKw(pd3YiN41tsA(nKoT4-d!TmaxH5b7a7abv&_p;=?lWgkQm3h&pnf>O5sr7n0Iv+22f9Cq8yD83y@|c^M0vbV^LHn^V$SMv=LMkA42- z7jQ6qb-MtD0S{WYIS;liA%2|W6&GJ^Uz}ATdcT;%@~9z>vfI*6WX`?U@jcp=jU3on z8L;0qQ-mc81ki4IgB&{^GTt3o5=Lkf}ZRk za(Q9ZfLw1t7j7PYlU)Thy+oJu*od!D`81+COF#CHL@9J^GthjLtVSG!=>5wBv_KCo z*UHb!P^BOK5)GY!o_u+RZl{e8;R3`XQ&GZGJ6%mby)`cF+8 z5(%2b0%^EZhHok@>ViiU}YaQ;EjYi;V0>G27y zc$(OK#6#6^(8A}EIjA-BJ_vkST}8u|v?%dLEpra7pxdiXmF9I!nW@9CfIPTejyd5P zeIJ$KWm9Y~-E8V6-v<}2zP1zNFQxz`88_zMFX15UVKa@ZHih0D$9tsX_|-yi>O5VT zz}x5*cY&L#(U30xnhH!Ss~GW*^~dD35C?8SL(Cm$mQ5UP>g~U}UcZD^Be|n0e)*r% zX&{kgX-%t4f`q%Q>+|wzZwep+IhNi?j7(cY0^n zojA5OiL7jvO9x~_WjyC9NWIytpDd6?J-n5)n&!R!*(vt$;Sik@Fn^d+=5B3vM!24QTKmePB z7esm2KVrps@f7NgY}kdMDk-HT?FA$zrxxnbIJA4de6rD^Z++-{vU63#mH-X$9)%R>x@1eS>C50t@6DQ>ej(+# z3-u69OV=#b=@OZis>TmM={pkTIKsuz1gO8}0ywuOH*Z#Kf}u16q(C7*%MGt5P!^2x zZzN{(l~GDeekAhyCtKiRw`AZUh}lB7qCzBI?#E@hO&G(zbD3%4=bML`K{B4{Yn2Aq z;>IxC2?X!+<+K?v5MdW-ltW*AFgEf~BzFN+X4R6-xrxT6>dc;BC^Kmp@U!zND7xSU zM`#gve>6SvY^yjt$cz)g9{yCocU-+7iF`_j+MZWrlD*_u;~sUc+!jS9&87LnbdtMv zp=6SvVrhev3D&M(>`9=PHb&HGn6VKQ2AYNle)LfW8InVKG}!-5Kgd0(HJpyOWp#?# z6s@GvBbbGOLkFA}GD*)PA7)#X^z2w)IkH^}-?bXRT*j*G?2U;z=yrDLz4CYS{{nS3 zfYJyWT91Voft6h-v|7))V)9fz z3+2I6$^&ZPO-qUU)2uyvny5%w{qZ^R3*w08cEewKQ%42ruu=NN_aLTF5y%7YUXqrO zeQK=Jr1?x>M2l>2fq(`^C$?;Sztkqb0PDEPPC;;$b-|>>RpT}EgBg!YGHMq~&OF^| zQCA(O59hsu_E$|(b}=B{a^kn9|CcNTPex6E1qfLXyQ_hR3PObES3%Q@%@M8>ZQm4- zp=ytAOzGG?V#t}truq>}Dn>B7g1kWW&e7zncI6ThBlARbaCqtzOHK3h@Ex66Vs3y3 zRH;WV=5!tA2nZu2bizj5ivtPxY?!eJ%?%pcMCbI5e1 z)F6SINnn?lhOHkP1zzpLw^#P_R(AgF(|%R6m-!o3i84yJB7>8IY)hz#Rcicm(;9`V zQFx%LwHh=1S>vyr?1=#tf#m2^mDnIEtQ{|xXgei=1&0_qDq9SFB9CfDDV1E{?t`8t z{WjemyjL*v$@!&a|Cs2$E9ltJmEYq|VV|${@p#TAOY!tfXcEc|(+N+J_mLQ$T>^-HS9R-l8ENbvB1B|yU$jpzCx7MP(ULt~MjbVsp(RX2~ z+B*8CD@y08Q+u|Mkfj@A2fd6OtX zx#U%qHg%CaVi`3>!Gl;WQeH3Orh*z5E+vfp9`z-0!C6{^r}v3tv(GNw_&yrI{iw>X zpu_Q%&80PN(7snL1v9-5DB5SY`Csqg;Sm@>WTsp0fT;U!kOIt$w2e!$hAT1RwY1}c$Ew)qHPY;|B z7b15cfNfeVe3wDeIJwe(_LvNlzKv*$9*OA8)E0^yc8+IWr$PQGGAkQIY4F}RGYt^t z)t!dx6(OpEQ;Z6{2=kFakIG+Bn)A5jhs)v*Ht~pIgwhUIzCelIECV+xlcpUI23 z$-K|6#*%}ld;=8+YiA{x%65K}I3WNtBjeWZdav2eU7xs(!eryjlV z9y%l2L=H6AjR3JOqnvB$Wk3nSY&WU`gg}fCYIL*Iid3JIUiEO9LVFRmvY7rk!^Y#L z>^m!e@x=U7tCCH7jBQ?Zktzo0;}83|fQ|cmO%3>_q?ATmqJJU5g38JV(sB{2HsXQ) z^agi|u=hR;~pe$LGBY_O+F6O_$reg_ZH?*T?ZDmrqjw{KdG=K0iwaM$S+=-e!>@V zJvdtawMdJHjL44lNY(iq4Bkpt4-UXr%$AICz-f?xD5u0h;F$leX&-l-89z z(FhZMHWgE2+#CT~5OmTtxi8v0y*kHQ!#xi6#q1u*9<|rl#&0i91&}aXNNNnzuMH*D_08TI5RM!qt;?8_{?2x#qCE5uRFtJHm#d|wnMuOw=N#s~uMNaI^f_Io3 zfl&0cz$C~5SjSj!T{|QbOW*kQQia57HEQ#|jNILrB%{_lJHV!Pc-Fz7xDh;n`PD|L zSCkU5`nz*iqhD*tk4vccvTGM~>GRA>y5=W9Mv%MUIti%5=?-)ea6@&UhoLPJc`A4G z){DD~yOZH3Q4Z6m0t9AG@|lK-v(l4{8(ZDw-T743k+H z>k#sDdY6!i)XM9~pkvEn%5qQXs!I~mDGyGX1}VzD6~}IhFGSHs@AZR0lIQ*WJP{blr$j#ugIOxjTH?4Ef!O~x+9dE4oN0Jrx__Kil- zP&ZkDDM+pDQLnMRzwxnTtAoO0+=GpIpk=vGg+P%rm?Rbyw6LH}-0F_>mborJ;?P#hlQl6WyWcGlBJ(0~O9f+9UT2607k%$6 z2O`Rvd4zRvObNf(B|mq6&hmI~m@%37>V9VDoxADJ_Up)ZopEGjLgLaZ%_cw!hRKir z(*tw6QvJ2=0vPe9lytOAa>&%$xS&3&;vf@Rp#;*<0Hvge`7|JUQR>NvVsglDuW8vsiFD2esxIngf!SA)Aob{%zUSF#z)t;?@Xe>6(VQG(sEtwuNEDco>A< z3#!QNYnp5CN#>UQSSl`ff_})Uo+$Vo492i@Q!oD}^j0U9d+mOH)g!?tz!Am?;9za! zXcZ0rg-i^Gw~E|Hld&}#Ak+C|D0zNoXeL>00q)dvO!UFC%a6>eR$NIp=Fb&&BtJY6 zpC!zg>7!7u#^kRfV+us}^c%eS-@V7p39BW4F5$o~!4Qh;tCoPS!pcu~?&S1*#r%f+ z{1+se;8v>UiN=;iyvns2!Wh_1`-r8W-qJ{^Ao5*`so?m)$P^^*u+1@YYPTb66(DO_ zdR`-PpkRCtyoh`1&kZ5_R;!OX2R-r2vl)>m;7Us}b=k%Gg;2HuPn$ACB*(0) zk`_iN*g6KAqX*$qI@Rj`&8`)qz~H zjrs>OwHI;+VSwqg^1od<^4n)R@IYx{55`m+P!g6{ar+^ya{M*SqSBQ3C5Z~b^0mPu=s~-y3aOHUJvC(JmwQ#tJPrfHSM{t-}5Jnqj=6s$ctfO%U3A-H<%tMS4v*ShNF; z)E7;ThqX1WJ-F0D)kH9c@j3R5>ap;tfdpL1js4eN4oOPIW!TKgq(s_7J<0RTd-=fapAN^XxG1k z9>zvpco5#s?t1V{}V-qeXGLIXsY5jnRZJ|$~v2A5Eif^wapJTZs< zWOl&&JBV^afLGpW31tF|g)PLz92nfei*(f<{Hp-|UP<6v#Ha7v?h8bI_K9V2+*qq8 z_lb*_O@%A%RYP_%QjeC7#?ei;uxk;*P1@OL-#_Mlx=n%G=>v|TE#18lD_bZlGm+ii zkG0Z&IIvM`t~Y8Av-M5yHL%C%;kiKWgw!?Ukt635IhKafpFuj@%g5f2!9vP}v*_RH zOFY<{rXeZlw2gIuyKtd6$W9pG zG75+fH7$d!MPH-@91V7xB%sIujjBAr^}1d8-X|iFK~6+l@yc2 zVq3>`_UWGO!uWQ_IOBUrxSYULA7dI%<3Fr;pwsB`^iH&%nzZR?=>*D=Xv7kF@;zKE zIQkb`s6L#;v#_F@Wk}LB&_A}&t4ns$%z3d@A8y%69AGTz{-_~(^Ai|@AfKz(SlH}P z{?z!UKStMR@x~;sN0GsM^*8w9eufiXrwjK6S__l(&RNub)P#Z_dwcNwTOSe3-;`N+ zWPef$?e{D^wQ=-&*8VuyWLIjhaZtT=B}u6d+}A8aJ$I+2*Q%<-wmAtd6+qwmaut3e z5!$V=QvHk(>vAhZ223p=Ps&Cuqr5|RMEW-Fm=}5R#w;5r(GK5wiNPAFZoV#3nZE!@ z_kHME&F{y~jKN0$jbH?Lw`47qX_L!E=THU02oVzIXz~XY)ZA;R>AvTu5)oJh;(=$7 zGS6Bc9EjuRMeikJ-Sfq!Ut1(6<}bw=D&-wTEHU0QhmFwUr3z|t8e5> z%Mo}HWglW84%xjd1W3Kym7}eWhEQXw=SDrIpl6uvu8}zvNxuy;x~j)_yz(B7zI@^f zJPsrD@dm1fE2*SG$##;t5apa_ToZM`dFhUDCrc>1de9JbDA>ZW0JT@=HW21RDq8`| z3$LFK{79Gu@N)~@?3{B?YT+*r3F_Z=cm5h-22BuS)<;-uAvI$zx@W7_#1}}ZNQYOL zIQYMoGUngc>tU1|pBF-N7=POB!39IpI@3Cm^Bq?-pO|@5-@DZq>$N|(@v^J2w zVvR{zaA6`(jK_uc-ijx>xw(Ps`meu%SDM4BKam;JjJYjdd%d`tY*K`5xLKB7+22Ek z+Huf_^qz7}XfWcucD22Z0!w@ZH@}CyGx9S7%G2y}WC?p#JH({*_zr|2gZ_GAJ50qS zB*!-#xs|bMJBlX`6MvanrPv|qP{}b5i`V*n{0O#=_Cpc6*$aa%%1R+rWvZ$pZ;p@s znm z*@Gcrv(_}>FYIoTzn=p+F{hNyVe>?_HB>0U){Fg~&I`opY+&?EU}vv+c!xU+=Z+Ml zRbzE<$CVqPE`6&Az%QM6Omz7yfJtV{fyqHfs8~wQnYV;*ZhM$kKP+2rK;O27rn5>g->d8}x(*~lC zxj%4sn={6+Iyri~$D$Vh%vb(_(0*9zK?W~mP2R2e@HZxa=cWX=agiqire$mtp)Sx} z$hu>PPARd4T8~f!q&jS$1FBO{>$qvE8c(WkH4Q(cC@?-Fif>k*5_0@IgfKoJ)JalI zUuJ{m^Ub3ihFL((k1SdDV>r$fBGmY#%=Ny9;kI1VdRZ~?wfL8^Z0jsUAZ~d_3b?eGs zC4>gpTU4w?KV=h9?0IOolO$w+(_#x zTt%gTWj9SQAr1E!cMqE-?t37=65$EO`ogniI@4HY&9+k~a)j-6>){RF_=x$XZd4P$ zIr=WLvkJvnt&H4`C;lQeJ>QqbB>Jges#L=MZc+FJQR)@O^K7F>jv}9;-EeEJ(v6lR zrDMD)qn~3wMVwfy2Z;g_4FFedebKM+Ag}X`!fsjJF*)sm*X|3zB+TVLUp;mq$h(1*kQ^`jqRb3XMw27kfAkI z244Y<8#N+E{u;j2R`eWa_$R(aJH<`Y^(fiL9PE<8DnBc9HNG%ixxiRs_^&@nM8$tN z>Ko7nfgwcpHZM>d5wSJM0s9$d<_Hle=vz7;*h17J9cQca-!(YoOW9R*f)Po*>Z7cC zXm0642j?Iuf5F^T?_}YBf!WxNa>?$i(ExNwkCa2BP_Qfp{T7eg0QK`Q_5Sy_GN$4O zUxS9<(M!k07GzpNi^hcgy;HgtzlFcva}Tru|X={29TBTP@6lVK$+ti{G1q}kT=5E1|Wa!`2;a9DaJ zVjgmmLep|F&Sz*^`@g1tg4~^Tpqagl=Z~y8o+Y?7M`Ur)TS!^iNh`TfhtggTQqR?i zOT#vBKnVYrwQ9@=EA!k7VlP_PdahxmFq*itb>h~?eYJBF*?=~(dz(i?vxt(SOxpv` z>3G;xc@mB~y?k-B+JXoBam^7M^a}~2snCe{Q6FmMDOh2ES-k{H{TGdlXH8PM0}2T z!U`#815w!Cd1UnwqDz}_NO-&>J_7k&@6n@Op--&GpJauF~215xG%$;y+nl`@Q&-9Nq!n7++rn@@wumizmTNvZ7HKQ@ED% z`w|J0iEE+ru8Njm)Efm+IP6Y!QZ97buqs#Vi2RG?Z__1ZyvTM#SWZ3595;s*-+|X+ zBuRAS`RIRml`wmpch6|51Fe)-N6cSQKnMQ0jIqm({4G&g?4#M^1OyuDh>&D0dhpu) zpI3O*kwEPnKqt8}6*dj+&;5Me zynKVC{mPWIFMuw-lLtl?)BLK8tsHdJG@xDl{R@EPrj^bz3T?kr{A<++%xk`D7aOLQiKvJossv3 zHUG$F|G#gCu4zNT*?Kb#0o*;OXb1AHk0{7V-dxYuVQU1>g&D4ZmqB&&9QO0~*sOCJai7nRwT1 zDg95z4d&jA96Q(-CzfyDs;Bdcr@yM8Ia|3!21=xS$s+j6v*?oE#0j?R*W7$k{p*)z zd_)v+617Dl`Bc+`KDz>LJLU9%Q7IW6k%X~M6jl+YaF=O*T3=$D+OFTEeN4ybZ~QvaFLQ6c3is3YS%sc=3L!sC$Zva=A+287Oa074O59m!N^& z{055YKSGtq!Fa!YFzx2gD}*ihnr3UHp$|9m+R#!wbU*m#G|25-^LWn2>~MVWIid<* znW2aw--W7`H(SpL>;|qit`7?k3y^()ajfxSb11rz6z^cN;SjPl5CmL~#jl46%y&b6 zXLXN|7s?`_Sv$`9oj#;HFhYXwHiFDYu|~XEL1ZCTJ3MqNvJ2oKHH~vd4EZ2INj?5; zAO?-?I>VEmb?OiuX!Bg5K z{Flvo@qp)MoQQ~Ujk-v1%Q{xnegUKiPM&EgvIvWr{77e0QFOddnMLxU=ATDv&MMQX zbgW-}cOM^dcnh|bugW!(*D<<-cdH`MTOax`=%n7*4+-g-#CCEuPe{~m z81p_&P)R%6contray?scr>P%^F@>IaOxPkr@~0QE6>shV<-m)wXOStt%;4jRq%KW!R7jK!D0*FR^9s7bUnE7-oZz=A7GiMWcFMrERO8_)f1{YqG$T zUci^PCy43tnWeKd8%@j8-|2Q*JD!JveB>1^Hfgc^lzdJIH%IM5z#QF zjHkHm0mFx2fo(v%If`-fdISRZWqvMKF(Z$QX{fOPvKNeVAw%%u6y{Q;sZmf?wyA1PrijpCoO;1s zqT5~w1*8tes^#Rwvy4;oKvmp7pt-gyuq+^_TxpY%R+5FsHoii zRf{iN?B=OJmjm1=FYHB1E49k>UasI6EQc^~FUnAXpAl_or@D8igZBcN=3NHLTtPSZ zAkfi5>ucK#@95KfQ?Y-~49`lon~`a2Hqr__zTD$r)vtrGvf`LzD%>Ptj=ZTAVWQ;V zhhU^EpaAbghCFugYN=-*unWTam4#!E-zXUz_Co|GF|=vY@@N1t6qNmsUJ1k2x%IW0 z+JKV%&{+Wh6=%?Y5oeO;K365n;V*lq*{|07$HVT#tAx~{17Zenpg(rY5(y(kqJOX>>gDi0UrWxz^XipQ4UV9hCI#aAsPYJ(PxfMA z$Ut;r8YqWaGH6GWFQSSfbQvZ#cpn{@vk@|@T& zpTc&849T4^Hm$%Dtu^wVGY{a4+9L(G`6aBNY;Y`W)7|CnB4mOY7#JfkbT6|@`FPy= zQxWssa%HCmT3E43<$3J2+1V0Fnx6E?TJ~O2HiKvJMxu_DaCiha^rQHZ3@$M5v8w#n7%@35bns=vM*n@+ulE{D zCnNj8qc2%us&z*M+8x*RfJ(V%1AYOoin-$FfTr*T=5P7+8a?}p=AYu9kT;x9I2j*p z9k+{{a>O{cc*ZzeIc=d$I($B3`D{4!RrVv+F4GWT{arY=FrCApCG-YaWfp)}VnmR2hX!?9}D`-d7<^)9XKt(MEqobQNE*t?_K_GV{bazAQL>V4Z>+x@!? zx}M8*0&AZ~jb-CIDf{M~5!{NG0WMpHA8QNm{-UZ=(F7ZMl`_5bwRCd(=LE9MPAeU7uSk z@4RpYs$6RVEghbao|o!ETUn8?)rY)v4eIt^@+dL9m_hEx^>CutN6uqDVs6dAezVK~ zxjP<`L(kh0zE&`6O8miCe$o*8{$^v{37864D@tYYSNK}X=|)O1-B|tI|5aNFOh|Rx z6~`5dck(IWzV@Ikj`FVIr`1V6nbG%-#GSb9q;{>RAW?B-BVJGWN})5H9_d{0X#D#( z$}?{z6k4q39p93QD9!)|{fh+>wsW*RloY4%C5cnJPwZ!PoBzFw3oFVa0nhr zX@)-&Q&eHDn}atmv0tdt{PCZ)aMLLrqt&ObF7X(~A}Xa>*YEv=qzfDwkq({rYg|wM zVNkS}M{TJX1jTjCv|hJCT1P}CIJZ&3Y{-nz$UopB&EaWwa;wPgsqE#e{xKg|5gq$Q z;y;;v*1@8Q+0c{LDzNAUHP>Fb1(e_5U+Rr>oW@7eQNc)k=-Zt$TH-1M{v=u()QS<^ zqGMqyJfiOaH#%T8APCvPxLV2afm>W*8>3kyb$7okG%Jp}}`eNN%$pfz4XQR}ZXyn*&B_nP!n6?q>Yz|Htnvz4L66-OaXmJZK z#t|rrV@Hh5Vyv_jHva)dA%+=MK^274oPeDR)O!WVLCJDD*n88h@Wx3A)>@cIp9vuq zlU?V8)8aQMy)s|23h5Pe5d!>+ocnn+IhF`q>XFmDjhes4Eb1PtDYLBAW2pFd8TyAa;-f=Tgzh_pu@(O& z@`Oip%2|Cmy)4T_(;@X60Q}PCdwCl$ivry;{f`Ax)8pvs()efv^za8+6OXX&Fg6bg zrN#Z(4q;b=uuZSHS_OyaPGC2de1A%=T4iuQA!bRS8M92n;-a^zhQVOLFd;VOmGK&F zP{^s|4grCn(Q;F%mY)WzJu%}eSOcXaR*LJpzOD|?A0k`@`JhO=^I*`l-zQ7{P2HSq z;nPL1gnGyAbcO`KvKzY<&T%DeNnPtrYnV^Ad3|O36&_$0Em@GM6z^9*(Ah{40%?e)XAt zTLz^fq%RhZKU=7}6!d8Q3(&lz7PPbpv61NG4*_0xY{&krREevYjAH{rTd2M$UVrc6 zL!FG0{aCP3uiy0Wv4{PV5_j6gLkocN^mQ~JXT_8mKxK-XfR#OL^w9T#Ks&BO7Sh7& zF_wzn9bb^od0U+Y$v;ee7lcmU#p;zxT-5Rpi+5lVv7H?>ntN_lj5szf!0%EU8mv-3OJ&y) z*(M76!r`>Xz&OF>DYO}{4&JVcTC;iEmvG3eRMa9s=se^v{K&xwqJ=RQ`mAmGf4DkW z%a}IHy;O=APoPqzv`U+d^wx-yRgSt%FI(wy`$LtVK#ngk^yT#wFR`f0HKy`Y-O{+t`wu@u=9QIpefsjx?8)5qL1h`XuQLU)W*XjiGdj z#<#F>kaJTQP&4KS(V@x3O2k3Em&h<%gq8;-W>`5q-KQ6g1Z`XTc(8U34~^y=>n*SR z*i`rFb23`0BtXn$wk=fo8OLD(U6_djy`1_q`h0i@Pnj+N_XNLjBrLdl9a20$(U*Lkl#!1mqSM>5%iQM~7VZdYRp?aa z1-ydoDYlx#tpqxmA?=}JERDgBAy~Y&Gw62f@C=FNAlQqr_jJ4F@HF;L@!7LKL?BmO zgM2QBXaPzlPt6E~hBm(yF@gXH2_@wzzc?K66(I2jRC>zlR6D_*7!Qwe-XUBBfSpsb zW5NyPmLy%L$OjF+I@|b-AaPEz?gILxJyp((KMTVJg-Y(b-{t(t=-D*38yHXXNF=c0 zhIP`u2WAs1ECc6fg6Cu4cx_ZK1YPij=SLkE3(uw^n=JqAvE7*RWl}*QS_D$6wUIp7 zgfsdWBh)@GCL$VFu%q zz|O}~xT-D}h+ekXb&MgB^liNWTdyhq=P+P3hWp^Wb!H;Z8nPuz;Z5LG^p-K;HTLvm zE`eKS;Yis2i&o;~8IhO-b_qcDTD-0Qg+ZLrxc|T-%TMPP`fx6RtYbKXj5m-g;unjd zr78+N8iRoxLZho!a&C!UjK$B+xvdE29b(^?ixnBFxaQAC6pf%{^kL@NCuLhf&k{v| zB0IvQEFtF`AmuA3S!_(#$nrmT0qg=!@^|rnvu)!g7GgETDDxz4!3K>-STp~J6K5A2?H^lm+;+^1LS#lRgK})is!pC(9E<)RHH7>cV{QnWkb)Q3W8W| z^*t!%nGPR>41ZuN$x4Lb0A$pr8j8^spZP=0QQZ-$FdMrR;xu=G$}|5&b-D2Ds3N)X z7On&IG%O;9t%ArHpA9NO+)E)H6UNzK#y875HUE+f86sq|3z--{EgAOnO|ODt7B`x0 zaXh&_cqUydxz2KvfEl~2%RrjAeRcfoSe`kh-hx_m6G6I3kYURNkb?n8Qx{9FC^ z-(qyn z;&8uqq!#UO)Z?Szi-Cl=!yEO)!8wjgt`lWBS%hBhxbgekg>s&Ej@B^xxgTT(8?hyl z9~vSGTFr@CuEJFc1HCxYnL=g4upEfHIUN-a@ah*Sm&9-` z!f>c=v&@!)%zQcj=?kC$nqu$9txlx+S{o_DRR{{LsLl^kBd1Ohux>+LrcJoy-bS=3dXMJ{si4`&&RXJkq z-Z$JS7~-n1Qg`<#ey-afVgkZEGY8?%4M)=2roN(P^9gMQTI{Gb6c==y`CAWcQ=^06 zAa}Q8*&9O3oIG%_uUY0*W1VNp8Ek~?L=O<-tV;>g>;PY#ATC{49G|O-BJTuk9aTsT zz}VGys|YM57a^z_Dqurg1|$U`$)?K2?^O(3V#_PU$eS_>G0Yt{Ic9@Q{zv#5kIjc( zD55;6xD9%!K@+M;0u zOhy3m;s3#`f0TT^Lrm7B_*$lbtMV`=-xJcGEr)FXO}uCTN^cevHXEGtJ%t3juCtWb zyF|jk6nnE0VzTw0H*l{Qx-9RL&`FhN%Z@Ea`;`HfdT8E){ynI zE(HADRlYsn62pa2$-X?&iCQd6^972?kDd@S!-Zg{RrbGy83!d`)J!^oP7__}h7T|HO-J}#w~$HCcib5u-tKf>;~ zkC@xg@geL#S`iUYkxL@}#nrD6}Qc?KAStW^NmkvP>9jN*?l7SwS zod9!%>XAV~1p6&Fr!DFf5U@goe|mM4FO(;6M7$Q`!P)<=p&$&Q-YY zkAjiQrgJi@)jnNkf`+^=C&=>Eg6X6dYS}8qSR`4qgtYh;5-nPeP<|^!FUlw{d?rVL#}l^=%Xj zvrbR!mkzP-lWyXB1Z$Ks(wU~?UT|LyLb`Ld$wFS+<=nh`ZRjp&OFD^6rD3p5pdMXS{luv!!#NBxKT^w0? zUTvO@iPb5aG#eG5NB6Y|hmiSsXBl06CYi{iW3d$GapTgRfdc3z#_?EW-L<{MB^}3t zf-Q|lTR}1)fjv@Rj&pJsTeUxw)!ZXo?kFz@BXH^AEO|&V4(QK^PuNY$IF8JwG>_ct z@NZUvRrHRqjC6NJHYh4x#G`R$c|z}-k-lSLV)+=&yPEX8VAt}yB^C3QtzcZc4U;~s zjcS5$)4v_OB?ziqwLGmc=G&b%cO%OMT~PE+D)rShzXW2vkp7*%ZC-_=dxYqwHH2Ih z1c^Byp(6zt8v9|uT!Vn3?iBOUCa1@`@&wgWVbI^=C5yl(2$Hi;Gm#Bbb{a?mcaa3$b zY#CBZJ!Y6z=InY2cx&(r?0Df+Z^!r8#|oVu?0ero(#?66%v7EIowSYwy}$_DUQIuY z^jULgaJOU74ybD9LUb){ThDeEwzb^B=2j%9A;bx zZxt-3c0U<@$84F7MfcUn1Xk;p3M?%lNWNP=zDJ_Ljl%hFV z+A5__na&DXk-yE*9ju~`u$v@asQt6Nn(y8u_!FsEvlgkzp|s-WT}VDu8JtZTfxDcL zptq4>KGiAH4%Tjkz3Q$BiDC#_=Ow;aN872q3#fQi*cMuxd||7T)V>QvgwPa1BGx9r zf)6H81L@m++|eyMG|&`|fy|Q$OdMF7;o7Ie!CKplwr()TIot~6;LfcUuHaL36xeWiR?AN&nWOOc z=S3V-Kg%F=Ov>bG!|4WnuV*sEm*D0&ocP`s@3{cI`gyyEp{C4jFQ!ZMSVMxrQY4XX z(H4HXliT_hcFg3}BjFyM09(HR{-wo97;xZ#OEwae`#hXg_SB`P@ge%%NEuOU$jH0| zY(lQI;60Iyq|+Fd_PU2W?1qawQQdj-)G-A^OdW5Jl$$aKbtTBkuQ>N@hI)F2-;^m5;uwu8 z&lf3a>IB4*UZt>$yXg&0l_Eqgp_E=~vBgGHX_hp8C^Z6E{DAsq2CuVWxz~OLH>V}9tTJ~jZk`L_kkYdc;>dN2(wwj=CaYB$)~t1;3fV05BxO6Leb|98zL^v&ftM8A2_UYvJ*k%vdM9P-Q{eGklc+#L@SeeT` z$~{p<*~E>;z>D7pUSU4iCEbpPZ|r*zB2ZS6&|^h&opmU8fTHLUtx_}o$vlIQd0bPx zETi!N1U&9zF6uDG@xO3DX-ByYCx6ax9Jl4bnZ1I^n@gJc0qM!2A%iSY4;@*W@MyBd z1v(9%vNrP^=lxVYrweMD6h->XO$eO8F47z8jEUxr1Dw}+d^Q5+Pp9s(c*G~k+=5XN zxZ#A+usH5lWdz>I`!r?eX?s}ivpmyKC`Oe6tG&}TVIB(sVxznI++HW*f8rYjcX1(p z`4_JsHR~a5ppqHaS3hC%2RhreLH`yXRx1;dfxuDw-pwcT8qqPD^>F=w8}J(K>Y28Z zi584a*_4H|2P_87mCIyFqVADe3gYrIxH#W%VnfyTdN8`;n&y=b_YqL6yT!>6DFF!B z(;B*RzFWNYG7x&}xZwBjG^)U(zk&8jx)_<7x@Int-?SxE>%`4uGaxyG>B#>(07i~< zuK1Dm$KtVe8m+>ToM|$`m26{mEmbfR7Kyyklz;AKtR^^OlEu%>>ut0noClVRV&ly$ zshVVawNn4$c%bfS3*GCwx#qgYe!f8RejZ&OiVa;-3t3n~S;gH!-f_K&9vTK6dfGiim7kLjPet zqLNkV3$LA%M^*xKao<6T`Zdh7`je>JUeYUaAxBzFq!doC1~^2>Ji3AN3)7;#VMw>< z6X&yLlzDVgaA^|W1{0ey1lhX3Jk1Of7k0PDyQ9m=)}$vA%PdhO8SL4La@Ajr7I(l% zr(x@1Fq=fry#n~z_D}SaRb(<7k{G&=+rb%9TMfa#z1xtYAGK&duecowSJH^Dlq=z|lC_DW9EItjFFH_0>Qj#v!T zbko1RkcDt0n_5jrzSI@fX23&cTGfMC6LtQHFi|XGdg4F}dYskqkm>^nQ6}b+-favm zH_bm?bW>yR$J3!;nMn{Cw8cl`S4I8W0r}$*=j?sFsLF3QL0f>TzbkScqg;B4M3G4Z zFBRNwgam;ibP$f}$^txz1lO~c=;M*QBVnN3@@MPoo}aOZ%}l1+6yf8%hbkLMGJWnK zBDqV9oL-l$TQ88e`*c(EHGE~1Dte6cb^^`2=H_nYnWwDJ{*MI8Y$^zqXZ-uPTj(*u zQuz4{)4qW_`eM+YR>8;x1ms$+n{w;n1pIaV1#z5R6itZW{Fnz?nikF0`Maq&?I;~{ zjRgA&pHf$Fm({&G?&B_{QfaT^MX1UIgH|P48u6-@U~5rp%#g8&+=sP$pb0G6^;ik- z`(~t(g04Ek0~du*oMJv^$Loe}SS&dOdY`cRnx+cG9di%!9xuLVe=5fT5=*4Lh_8sz zzza(1Bbl73iIIxV{@I@Up=p8HYet-4(O&`(UcX{l`ks6R3AF?SgMD~?E(pnq)s76| zAo+6RJM@vJo-rlsMRT!53w#!{qRYvqf9GMA6y9+W&oSy&ksZi5#a&W68GDtpyIBnB zzwH9wOsrt-;cmg=jMoPv`8*!hHQc)Ey?yhPGQ&WRHP+AnmegsWHfJwSDz}Byh{3T{ zaWv6~O3=A3KfJ5;5%I;;_M#TfwLs_+xsOJd;RaSPXpPrH6cqZ-H>VBj>bjru2XJ5p!^lBpvOvn zly0s);#g*y9C_X9MQaiOOvXHC?vc-Fn!=I{*oG3W4r&+!5Lo>#PeZgyqFlt+Tr zap~_9Q|ojn-E$+skWF+VGbrTU+Ig`DuwpB=0-wn8b?#zSUkto}gfThe7&l3f+j;V_ z%GwEKe;1?P;A`)r_V=wBTg$!{>_ZckTGR7T{%14Ttg!g-(xzbP_*Fk zf8E15~c$As@qI2wGW8XwF4`6p78f-m&{s0eBJ5hiDOKrB(*ixm+5XS4 zEwL~g;W-DY%82g18N2Wyvau->U^n-%U!9v>=S>yP9t79vH_j`KvV`*>Q43bl-7)~l z`V3{33`)1%e(;n#k?CLg%4S=+ed!nZ%y*Y0l!S$Au{g5=uk4qwqlxQJWN`X@QzyZi ztHhBr)7&zub%Ih2W^R(52V9g)y`2#Gc4}aNB@4#4Q_8tC(gO7gmvA%;|9Es`is$5{-6f;ktKyvMA%K5s8_mr(z=1?INOua2zS|x=>BT=8@rDBo~(hc{(Vylsg=7 zfRgQLC3#hghe)^YKUMf6e#UR~o<>L| zc6a>$qGPvW&QDu!CMkVS7ixY_Gu&d>{Y1tC#X0l?5|jOkmFLfit{^L0?E+vPG*GsT z>%N@V6r+}5;}~4`9zDs|5`(k*_Gx*H-PQ@dchEx?3_BT@i-{ihFHQ<&RY9j0h+w)n z^wT@}7AjLlWP)EGk$>_U_q_3xUWf-*=SU~g%Yz$-+gpZWr?JbjSx8Q7WDbT!>-OC7 zxH5UG2BkF-9?e!0`6|;-V0bstT?a&WEt(SWF2cQjRN;zVIa;?OQ*IJeumvDO!=eh4 z+}Tpht1@mMT39a8Yeglq?}qxT^HZ@j^**f_yKl26IS+S{4pl^3>N{a5BqlKFA6{my zgR|=+wfuUGBV*{fdI^S+=jw~#q7%pPWvFsspIV>ti|`pCFq{34GxW}PP!$^Scmf2} zUDP|)J~}A$2k~L#FBSC+7JhlhB7b_RMf!*nfyah;T4WW#j{gu-0fh&K5~(`0cAVt8 z55FhCTqzUYqcZN$*^T7AQFtSIAr+1~ZqPKXE4yggC;2qv7~szTeRc5Ph}(}mnAK{Ip>O?PGczxfL${56C;Uugu|GY-GVTh!72}xd)cWqVkM~- zhQp&`JzfSqKN!S>u2GVrUyZ|}S$6&s?{Mf$!KWUW!0n&=2MSTy+L9J|sMcLbwNsBa z&0oiTcfqK3|Bu%dbpwwoN~{oy-K0ulKb}=9no=F(+uW`4=mtj-U&7oHWPUn8xyoO2 z;@JJf2Ez zN2I^%G{aND%;L_|&st+9E0k=*lLr5)N(1cb-Yfw!|3K@~kaxpPKk@aI{9;Py^?=azDGOcE<4KXf15St5I}%fU2QO8Y!ygc}AYP-{PC15yAgaD{)3!-` zg!hkXrM~v7c9L$4&t=D zkQ-YP7kAsz@`xB8a!~8TzQ#X*2HU_S`ClLkUSu3RY8y=chp=fcpFK~(iTwtHolti# z+D)jV^#*s5Me^FFbEfHD)W0AIxy&Rg#n|%-6sBMTYX|Nu4`X_7HdT7$NujcwSthj_ zMnjEQq0fuTPOJ8>gu1j(84<3u1x~SWv)8T6RCbUY_YUSa-f%o@nx=I$a7bmLkaDeV zcd1Q%G_>V!x5b;$0+MAY+I?tZbSE105}q3?UVML&V2bkTJWh;x-d17XjykOx=Kv`@r5EwvsUrZ*Qef zt~>McJ(sjERl2c`mq~?k)2r#S0#F}&Ak*T_K#sFh7_bVif4u%$PqfiuR|?NTZM*n- zAj0Gq(17%J4$q%c)_1hOE^XKJCgr^W0zgOIIv@7HN2;o`B!@MplAtAd(JEI}g0_6F znq&ZZIF7+{@K^DggI8vlf2wu_u3znyLf(KT2Y<(X(jjR!Myt;l)#-H>HQQ7G>hr$G zcQ)eCq`JGVAuiJZ+Mp6N*o)c$M*Y^PIIH1BZ@vy1LXnOTjP*OfSC_k~!4`4Lz+m0N zZ{xQ9vEQOkjmv~|Tmwp67@w=7`y|&m)wxl`AHw!|$BHTnIb!Y~zD=BFEUIE@SS-Mh zdGkX`(#G=};!5;7AwD z7U_K#_GO}C-OpVYb6DbvCVnR=i}&{E_f530N$lLxMRVl_$yv3$li}7V>^es}VXgj9O zgrwGduxvFVUwtj!!{8Uf&;*Yd~!EHu|HUTbL8$8VcVE$~*O+5;v|xro(s^KbM3!K$vo*0Kl*f9?FP ze^OozWm1mJ>-40bjEG*)$GWw^`Ol2e%ax(}Lv2*F)u~Zhu*~xxj{O@nt_Xpb%n(j{ zk^31Lg5}H_7DqMxyb0szowwhG25msi5Ow(2n2__Es!I9^T#XW4w6aPB18b zv+Cl)30F=1#zb7Vgg7v6>QKGIi6vN7Pc}i z*r>TRpAKtNN(lJ9Y7_1)!k?t}mV$QoAaMkWe>-wHTxu`6bdBQk511r*Yzi*1{DhR) zl9E2nH$R&%YV6oRq%S^A0K3-tf_cQ?pFI|Gd*p^SFJ}dP)fW2Uxm2sFOl^y3GdLpD zS!fxNB-_C9% zTGdngb{!b&2@}^shzT`XwYED;+VM%12D|8WJQWXyA5C@Si&lC94Kl_oZFFcyfmD@}lyw&K++}^AH6v#vR zAor`GUhTj<7w`0z@;=a?u+g?qaOHev=EhIQ)TgLiW8zlM$;F#s94iY0OTd%y&r3dK zKP|(~VGGob?TnU~${@=2KIE11pm;p=h1(BpMGN*$Mr$e6+O=$I4iiN%^F=LGB^@v& zV9c`7BWc^wOq2^OCV9?tN}5bS3^wL}Ro9-(Pr&^iY^7c^r9})K0mWLZ>bR8M!~N{bslg zoDgh?3k{gPI+=Y&c)r`f1#%ZBX{JWUPcQITbtMpf?mWI0u-+HLL+Po1VU;G>rV$@# zYSGb!#W;S8L8kaLmWFHkM14DZ-L}=-5K4J+uCV%Uh zeZ~gG6fQHs5+TZ-l(;5k8~d2L^AjNv>WII?(o zI}~~G>$`Rjjg9ADghmufIU#scJrw(SjASz%fx$ECkS~h9b)v?iBFs=xr{bR13knWz zw$3@$>GmFe!kzhv3{r1^U4HoD$K<^5s68V0GX1*Tp5uEFafEe2H>Ji{eaR-WT{*%V z)YoWH5mP^)lWMUDkXvpzAA!jPIuCwT0KRlpnGxX2KZqCjeQJi{IL5 z&Bhx5Tu6AJR&wuJ>Orv8LOf{+vK+c^1jj23^5xVpxTlC|x%w!38x6=XXoTL>zF>c! zi#P?;Q$++F*toO6{3x^L%J|`0`_;`-j}Yqr2ZwEws9jD%0ke3$3J6!DNJyH}?2K`z z)RVuzgb|r`qFejD%qf>kZ7OMs->bn@QwjE27DjF)d_dqUKsxGzAs6TP{9Yi_m!K}< zc{+CT6;O~zFhgTOdv8-9;nywIFc1*XNzn?CJim}3J&-y3A6)S8BQD1+pbbKA&r_$M z`Pq?pNq(ifs$(dk5L7X-*RiZ85_fz@u~&7oI1h#A6M{px-}%q(yo7krpkbTzEwK7G zi%ouzspX;-`w?7PuvM*|{}YW>1C_EXJB*_~Z)S+)m_pgq+x(o#G!>c1brG*n=)5LE z!znzFEhz>EOU-Ph#w(1>RF8;%h%zSwhL}X(TgBUl0@Md*#~F&3bl$u_=r7Z8S)|SP zChhuG&C?p)Tg>;Q!rWkDtGIyMq3xmx(UBO#@}WtwvOAtl6aYfks{4 z)dl(73;$~WBwhSxxsZx-1+TreIY2`9uQnK6{)E8pSM-mR+5wqku^DlqDjV-@RCqDC zhW}S#eq@C{n95S0Fe&E+YcHfwEI%AgV~4GisG?mhx76@lyqTjKxqWNC^sNi~Bsa0r z`y+sUv)c>5>LV8bJ&x8#sqY)Gx&DAk7O`n1B(E1Nk(!tqYMlG?kzh3LTa4W7U(ww* zDC6LgX2@Su_|g=4en=<%3^v(_ES=~gSUe*3vH_S2cuZ&6`=VKEsInEOSUzCV|{ckjz!rhx8(dan+h|p(Umc$pQ`oBt+ zZn_d2#F4Z9+J9ugKj~1teO<;+GP2Tb*DrgAGX0-YoH~P4e>?@>omJ5UAiV4=UU|397j9cvXsW6Qa8oyS>Bq! zv0PA24z6X?$baZd=~>R4Je|^RiXdmT?HebuzCSnMOy5A5?4c&gui%Br} ztn$itXk#5BqFP~^*Wz`FS;Y?4$|7U;*WkIUEZI}p)D9r&E_9fE`}EQ-^71hrvg%n_ zaZROySjHoLO@aQ3Tn`jL>{I*B3y9TFVbzdgd>t;g{Dx*$LU2&&D7~>+Al_CyeM#P6 z7DSj~WiV}-in}@QHc6V$nd&T@`dM7Ol%J1m&|gnB$9=bVS#itS03l$PdwU$;y1t+Z zFczjC$?=U9;`e+l3-g~*s?uGn5DNfHv#_h}9T9u{@Kc0n!ksfD4m<^MY&u6@znqv; zE`vX9=Ll*9R7mwNJf) zq0!+nr>0UvXyiUH=OdBVazv-*cz*_=X>zzQl4v#Eyj>*GMt5Y$)=5-2M21@qqeP_N*}ze0Ubo6`ci?`ycw>u(&?8g@vM zgJfyIz6}=D*p+^NwYz6&IdAF~GEFt-e3?~)EY~>kJsfjksz@ckBVO}NA!=YJz)|Br zsUQSk?&!I&Xr3$i=C8#hK%Jas4bU(%($%H1c@3Q$x*krsgF#|P@aDg7c2gr5;XKJ zntsANlXg};BCZJ8jwm!%0#k_Yu&$`VdF4&Uczg$wa!c9ScHL_Td8G!=%aOm}7!gSK z4hJg99iHSTJ0}TKBrn0cVwO(hZd{1nM*0u?Ohf!whT{ElIxs3Q{$N!^rA)@yoar#@a5%ESodx5`F_@>S@0Oe^zaS$&H#CZD zY57#?1F6LQp9b8-#+ohKz$PvD#InG0o!liqK}}An@~@0??pflG;3nWNI)!OjHA{EZ z{Uv#w2qMyv;;fHjaeRz>!P5ReNmLPlkfz@*&^<_D2h{DY$S#!4K;J#zPBQWrRoKhe zKdu7q8KD2V3kqy#=_jqpub2pm?8?8#Er^&+AM%MenkWlz1CeIj2>JB(aO8oN>H_=& zp0*`~nZLc~H!woM-ltBQPz!-GXRl#Gr%7R{Y&u#-`4x=iro;vkv@PxBLfKI4^6xTf zUh|eVW$DK4g{b`OZ}f%?LH+ysMkG0 z%!gq=C-SZa>lYGs%Q!OoTvYJUaQ3u1B%a;-b3Yw$1LX}1&A$m7f8(BWT^JNWO*##G zLI$(2YxS*cq_TFXMu(Y$aPD_wh$e7Q2%(T($RuTC`@b)9tr+*S zQNv`A+Jd!E8W+)?RFN~!Fv=yq3`*-oCQrBFx1mDh04^cB!^AeSo4BjX?r`Me-n(#R z(gPq=H?Q5qpfoZ+q!ci^L=+<6f(E6u6)*!x)@ot&2^qvlRZ*i9g-2v|T_5M@4i^L1 zTytd2OU)lcgsF9FT&S)jmurgwlh@JajWO#grlKbzLPw;%`Dl7AY;A~A9>UBAPNDqs zV()WxmkE_1o{wT?BRf2&UI)}d4So2G zX*ajWkwdNy{gRXX9~oebt0%7_%M>oK>uSxww5x2@61eaz;MT+&^uyItVIpl0qSL+K zd8f~u%6YH@SJ@l_067${KaQoSw@nD6%0t*5_~CL{Vz)%=GknyR*1K?3kWXX zmWO0w?qZ|~RLTptUz)%pykr1PV&y1^oFgxfV`*)Dt%LJhr{e=cXZVK6LuD4`8>Sw| z{F0YZYI%b(Ez`&nJTaF8rNfI|)Zfr2{G@m-*X4t|rc~Tzpl)DlWzE9)E$q89F>0^A z5b@t3`0cU?Ih$uVwo`J6cIq|?CxOWUJ{kiwpZyc}Q8i!l?6CF)Yd<3R%B({&^y<&! z+{yW)qq9*d@9^tqBWR+Kv(QI5aeOwTq*93RAATJZH}pGJQNJMU=lXX#U2gK5pjg2z zol}KY`hfM)#p59{g2)+4G{Ai5hxEL*2UL9W^Y}cnkV)oF-!Gl)2HxnXwnmOefTki~TGSAmCvfYwff`j9AUd@QcK9t|{1 zr?rUBc8(DieRR1I67=P7yku}|hYL*PX(P(BAZMAAJ{SzaVUBC7@FdLJAJTyQ1w}uf z%X6&cp=(O)S0-V=(93`*j9xU6>l@O2EFFV#oo2|O5#>)3tL01P7@(`Bwbrer9Q%yetRud#^Cv#U1{K)S*g0>ZZl*-jLk z)tMw^BHrW?v#l_|l={qwYKqgFSU#K?8B}Jt{JG^v=6(xKNac=Cv9Dnq$-rJbAnEit z&@BnW2NjymCuwolVm-st{!muG9kP}zHzL$@#{x9aOjO_J;{pJJ z8pP5@OuXbT+MDKj(7?WZuR(6FsN(AwB~GEV54i^1g(H(md|aP~F-uzu;FY)Od>JV~UA zfBvyai=u|H<{ZvfwX1eQ5pgF!xy#9%OF#m1Q$Mmx6da0`0?E*B}j&@f{M({Wvoo+j3IxjFo> zoe@wUA2i(fR>bU%w7&nNc&WLY<2?oK-fdQmbYj~smt8l=B&Y|gwDb|lPIaU!rh$mf zD8w1a)4=N|+o=Ul)k9#a9}9Khr;EeBy$kyeotBA06FY-JOjXjik#A;%WV*QM#j%NK zb6{?@`hg}CcUrc4JR-!9NZ`V)uhId&5(hlHMpBuuNL_Cs2HI#l_S;~p1?h}$b;qxeK*QkPC#4DLMVipqN>cKg`bLV9uaR6INF9L2j%dloSULQQzxkG279J#iD~Q zgmb@ISB0el`pS6f&^bHj;|$Asm95mB@b1(TW`{ogH_ zQyim+n!G?$vx3$I5=07s0c6S2W=l@${V?2Tv`KlfPX#-~l_|kG2a_Fe7~KBXbp}5T zpG;BWRY(NlIKB>1$dB2FkVj|ve~fMS98rLj;^Q=9hRFTXjVcOg((}JH3y3xv4cuK2qxGk?}z$dKM3tP zaFJ&q_)4SS9}Q~D>_O{(dY$bL8+dx>Y}P+f2vx7Y=3ToQK*9}(y{^|_XAnks;)Rwx z?Oq07F|njAJu~)3_szT~23`T=DL!I0H->WZAnWK{(&o>}2lq$77ZJGh%5l#&V(pTp zK+oZiSpHYO9KFOD+uF8jLMP(TY3tkgLzIiOn_c&1;H6)#-UTf!8$$=mGieygU;4_B zU7jB3kN8Zc7Y)M-D37Vd`538j57N;D*8BjI$K3|8Q;{HVCY=yvJa7GDgaI#{Z1~P# zGKI7jYV9r+${U6n=L!oL)t{?P^f{(%?Ivd3=xtvB)lX@CGxNW+2e(Y6q+xIWVEf!5L5k#|pn0 zwE1T|3zyJOYV-~vs;cu9{M=rr?j{v-9j=CMhc~=QJCZ&ls`l+w4#@BoKU5KcjC#VE zur0;Jtnh&*y{Cgfg4TN*UYH~Qa?c8f?etnkoN*AS%@!cc=TbcBz3$+_jh6ek3Z%Kt z@|q?uB)7nFH5cDX41NTaof`00&jZ#k?!p>MM^%btNr{>l9i<(5@puCFl|+-~o6hqh z(lScd11#VpTuU8dA(`$fdIOubDwcCsEHo;gg}s1;-O@@-hW)HGgNSa16*jDjIVV*~ zhA$nssmgJSQy7C!VUj)JeqA`KwkKX4XCM?=eMY<=p&NJt=G9LkA4c$@hYu`l ziGpk5hk#x8wn=usLZnByRMYM&g-EE8HWQ>Z8mDj#*Z?`2xq`IPGi=8V7|Iiu8?mv- z$FCKM-CR5olU^Bnr66DFR(Ghp;#b5bgPm*!xGh^APM>@!L48y}(oy0Y_~AuPx54LA zxEtsY@lkGxUXP!sq2J)n-)ht%=iLgH z(UC0~D-e&845IzU*p&*>EBRO*s+9=qGyudY0$LApC_HKW>^Us`f4K{H_)HxN+*1Nn z;6FUjnl1lA(zd~T4<&yw9|W3>7>KE$E`B_8I-R0nhu>cic|M2jMHh*v)z#mdARpGQ z4$m$Tp`of*EU%1o1#c^E=9pw~@)mpGKLyuM2jgZ$ur$v-J?%+LyIqLD2vTk@hCmxi zSIW}1O@(0VxES6VMZ7lzjrT}^%|*Bp>|4jff3i3!s@0cM1k@nPKSXr;{D3-bun%~t z3fFOev(zJqE-KUvaD|P!S)W{rWB5X;5zA<~;t*5DXlWl;HnK8FNs+D59;>*R#s1@) z(fnzVbqM6x`8^i8OA&srI5__V(3A+yAmW>bJCy_G7CL07bmc$ywe$(+3{1E0Eh&H- z3AQVB1F*tX<}pxU{x7N`W+&jnJCV5le}vroJQZe~in*Q|7Edno@tOhu(`)(9Ahy6;6 zzU^`9FP3{4k8OuY=za1=|5{$B94l^120(E94HeRfp+>V6XjoJ0dgamx#2cIskLbQJ zQVfvPpsK|nf8b377&(pFT#b)G8fJG~IlE1dW;4ZetY~2I1!I0NmF4$*h(5&hr*Q3t z@vfCb!0~@wol|oqfTFBpTNB%wcw*aHvF(XDvAJSTY}@w4S+Q-~$=$o^oQHFNMOSzA z*R91y?lA0kKRaU4J&{k(U6!@t^t(&5AAv=TYF}v(te=z?5hVJO)djOIzE}M93g~B4 z;*)QWY9t$Ep3NHXgD~BfVE4<@^r`|oKf^+x&ctEK&Y*+w90x4ik&0rTTm@adUb?oS?#v@;;}67<(K zN@wY#`1z^goa~E6ra9=Dc4H^pW&kSec}1dSwpSSi)sv1xhEGZkN+`i(Fh_}*Yyt;N zLZ<3+S7?G&tDQ}WaExjq$Va;LP)>|xU`XTaF8a_$CT5=M&lc1mPuE55&c=Eaj z_CyuGgVLowN0VO!*Ey!Yzc5|UK^$I%S_BKb zH=EFH=W^(a!q!Rq($LVB8JwmM#5G)zr2q>FoJ`I~iG37MIl9yFO3u$a91lj$yAZ8X zZ!}{uPdR)}J&z(2eWqjW{JZ6di6{DfAK#%V@*%H(`oru5s{i^L+I_Mnmb_xSM=M}UiXap1ev3(WCF)p^OhtJ-{IM}rxqUiejATkw^z9u zkd3LH4|7RhO=7NbG$v9*m^yDgMd7*m+#4K2qt(=XZ^R61t^e(X7b8VtJshsB@S1ya z%~Ea{Ss%yRYJaNvcbL#SobZz8zxJ+6MrltCb|Sjru@5Uy&%&i`| zAe6_DpsO`f_j%Y1N>??g#%M`vO9`{9r;s0_+>O@IsCPU}_<(Fa!e<)pkNuT1y#Tcr z^i7=mS=KouIPB4D`sKdKhvZqT@T0=qzO)}4oem?2N3q|$-3SJUf1*MfR<3vJ+!Gb) zK1K`IiS}KJTtJY@c~a|oy58kxcgyJ#`eqz5QmWR|!9V&NT+BWx$W}_ex-b*U35SLn zQ9N)fsSI?kasxoygY0l8?}JIwaMAq9but3P{+kzxWky>w&S~V|gbc@`vrT~)GJLI` zP=hmgkNEC~(Q9R1Nua3%(%*mfQzCWbUJtEeC!x}_U=z;ferfV4R0wG+^r zQS&CAe=9TAt6TU^5_mCJX)t2}{n07THynV`HC<$&s@1=OXvAdp>ayvUNZ}1(0#a(i zO3uSv`c-TRX+^3d@iILxMagX2tHJjTW<)8JqqW{<2`53s3p)YlBF*DJ5TEDKwlO3C zY6)%G88`@k1SDZ_sONWv3gABppvwPru?LJ#x9~1p;T%z!sn%8QNG~QSce9QQ~<9=`$t zq_2|#L-WN*6^FC5bM@1D;UCM1;AP9EB>i%~lICd?nNyMfTywB^U4skdqLtsED-=DPpldgSDUGbn*4-{%HNuK-Ixt zt6#uW(-BI>hh)_^t{W<}Y&K@kJY>_GsIVbZonBs!F&9)23~eNz%s)MBP^=uJ)IFTB zqay!jzeGW|rTSGdDd#X)#Q-G0=FIqtZTr7-bicQ0<-k4OC(qK>Wbx~4pc>)NM3@~3 zU0wtHfRG`S_A%M)Y^K#Ej396{y7c*Yiv@GaYitdi_~Gl(?0Gez;1Fgvh4`@E{B)+? z_u3HH<)cjTCD&~XD-Cps58VGhwHo7TKh)(B8oH7ys*lv`vS=NM*qaNf@YRZTWh#}D zNpEM-XBSvF&{xHF$x-26v!N6R>*69J7=!DkQ%N}@Na)K~$>s8X%8%DW{XYa789YsiqM#1@*ibj@p2MqIhiJ7N z(3g$%_E^+?$$~KEx7e3m85plB)SRG9B2x4Pe9o4_v@n+g6m%qL*@lw{J9nl(%w(|t z7Z(vEyjcj3uf*|F>^8hKNm5ck@!LZ>0yv$&-eK}f?%pufqL&dJuh1M`v7SgWY1PAP9$&S5SvsO8y&lgw87Ohi zIVnW|_zZxcT)i2=D?x8{($Gx31B@nJ)Gge$ZF{==Y1=(*+qP}nwrx$@wry+Lw*Ptm z?|!+rl1lc@*>!emRZ_{RvuZ6GAcM2(e4oSyz7^`1`2+mFOdLt<_Z$Pv1pA4R#}4=% zGD093i_g%6dtxX?32LtE>V!-TpZ*Uzz=hw)wU=eAyu*so=#_edl$ksqawMcW6juFR zEs`HAEEG91Ak~A^L$zl>rc+tiG4+-Pt_z(msfMy;isz89ogq2-red@UTX`N#-Nuy! zmxcrZmoNo$sxxCfy4CpgQ7$gy2&rTlzI(w4>Rr4{QYnN~mdOLHtD$4H6wzjJN(xLdNDP zm6TYdrKQ&0ig*(T*7zQPE;Yn=#?N4XVZcEeDucCw31JW@>SwIkU|_5uWe=b%3eiQ& zor(L&m3aiVrYhZTR|Fc_iFnK3!W-$e3EEUme>Kq_gL|c1WAwO8l#MgeDMvQiWIPLx zFFl}LheIQ+cRa$m=G>p)v|#H!@VxI8gp7x~bD^7o6YI?{C?B`^qeZG5&2fx!N@-=e z+&=uf(EMeC7cxPYc}33iX9uS-eQ*d(oQpi{1*Bvt?nUmORx~H3Z==;O=|A_bN==Gv zm0w=7W4MBg@k6x~v&%!i{9)lA`0><)A?>nF-3g;S^G+QQfVXyocC{@kUjewd(NAMF zWw2{c9AjuP>|!VbZr@LI=g-~w$dL}3;pmUEQidVqkRhVMdKfvrv{Pgu68MxBcw{y*kWe>#qdbZT?g7`mr`(k;FPsy@z+&!IQf7k}eF8FV

ie&!d{C~6Nv;y? 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 a{mYLZ|L_@H%EIoS{hNRDtN;4fpZ$OLM(Jk& literal 0 HcmV?d00001 diff --git a/content/04_Part2.md b/content/04_Part2.md index d2b8151..20ee224 100644 --- a/content/04_Part2.md +++ b/content/04_Part2.md @@ -4,87 +4,14 @@ title: PART 2 # PART 2 - From Events to Insights -We live in the information age. Data is being created, stored and distributed at a phenomenal rate. Consuming this data can be overwhelming, like trying to drink directly from a fire hose. We need the ability to identify the important data, meaning we need ways to determine what is and is not relevant. We need to take groups of data and process them collectively to discover patterns or other information that might not be apparent from any individual raw input. Users, customers and managers need you do this with more data than ever before, while still delivering higher performance and tighter deadlines. +We live in an age where data is being created, stored, and distributed at a phenomenal rate. Consuming this data can be overwhelming, like trying to drink directly from a fire hose. We need the ability to identify the important data, meaning we need ways to determine what is and is not relevant. We need to take groups of data and process them collectively to discover patterns or other information that might not be apparent from any individual raw input. Users, customers and managers need to do this with more data than ever before, while still delivering higher performance and more useful outputs. Rx provides some powerful mechanisms for extracting meaningful insights from raw data streams. This is one of the main reasons for representing information as `IObservable` streams in the first place. The preceding chapter showed how to create an observable sequence, so now we will look at how to exploit the power this has unlocked using the the various Rx methods that can process and transform an observable sequence. Rx supports most of the standard LINQ operators. It also defines numerous additional operators. These fall broadly into categories, and each of the following chapters tackles one category: -* [Filtering](./05_Filtering.md) -* [Transformation]() -* [Aggregation] -* [Partitioning] -* [Combination] -* [Error Handling] -* [Timing] - -Notes: -* testing/discrimination/scrutinisation/picking - * where, ignoreelements (segue by pointing out that Where might filter out everything but will still forward end/error) - * OfType - * Skip/Take[While/Until] - * distinct - * First(OrDefault), Last(OrDefault), Single(OrDefault) - * ElementAt - -* transformation - * Select - * SelectMany - * Cast - * Materialize/Dematerialize -* aggregation - * to Boolean - * Any - * All - * Contains - * SequenceEqual - * To numeric - * Count - * Sum, Average - * Min, Max - * Custom - * Aggregate - * Scan -* partitioning - * GroupBy - * Buffer - * Window -* combination - * Concat - * DefaultIfEmpty - * Repeat - * Zip - * CombineLatest - * StartWith (prepend) - * Append? - * merge - * join - * Amb - * Switch - * TakeUntil (the flavour that accepts an IObservable as its cut-off) - * And/Then/When - -Does Part 3 start here? The existing book has the rather nondescriptive "Taming the sequence" title, and -I'd prefer to come up with something a bit more meaningful. Maybe "Getting Pragmatic" - -* Schedulers - -* Leaving IObservable - * Do - * For -* Timing - * TimeStamp TimeInterval - * TakeUntil (time-based) - * Delay - * Sample - * Throttle - * Timeout -* Error Handling - * Catch - * Finally - * Using - * Retry - * OnErrorResumeNext - -Check these to see if there's anything in them not now covered earlier: -* SequencesOfCoincidence \ No newline at end of file +* [Filtering](05_Filtering.md) +* [Transformation](06_Transformation.md) +* [Aggregation](07_Aggregation.md) +* [Partitioning](08_Partitioning.md) +* [Combination](09_CombiningSequences.md) diff --git a/content/10_Part3.md b/content/10_Part3.md index fc5b367..1f6005a 100644 --- a/content/10_Part3.md +++ b/content/10_Part3.md @@ -8,4 +8,29 @@ The first part of this book focused on the basic ideas and types of Rx. In the s This _purity_ can help us understand what our code will do. It means we don't need to know about the state of the rest of our program in order to understand how one particular part functions. However, code that is completely detached from the outside world is unlikely to achieve anything useful. In practice, we need to connect these pure computations with more pragmatic concerns. The [Creating Observable Sequences chapter](03_CreatingObservableSequences.md) already showed how to define observable streams, so we've already looked at how to connect real world inputs into the world of Rx. But what about the other end? How do we do something useful with the results of our processing? -In some cases, it might be enough to do work inside `IObserver` implementations, or using the callback-based subscription mechanisms you've already seen. However, some situations will demand something more sophisticated. So in this third part of the book, we will look at some of the features Rx offers to help connect processes of the kind we looked at in part 2 with the rest of the world. \ No newline at end of file +In some cases, it might be enough to do work inside `IObserver` implementations, or using the callback-based subscription mechanisms you've already seen. However, some situations will demand something more sophisticated. So in this third part of the book, we will look at some of the features Rx offers to help connect processes of the kind we looked at in part 2 with the rest of the world. + + +Notes: + +* Schedulers + +* Leaving IObservable + * Do + * For +* Timing + * TimeStamp TimeInterval + * TakeUntil (time-based) + * Delay + * Sample + * Throttle + * Timeout +* Error Handling + * Catch + * Finally + * Using + * Retry + * OnErrorResumeNext + +Check these to see if there's anything in them not now covered earlier: +* SequencesOfCoincidence \ No newline at end of file From 46357297d44f7735153dde6e78008b903e99a32f Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Tue, 31 Oct 2023 09:02:49 +0000 Subject: [PATCH 062/142] Remove spuriously added build outputs Update build scripts --- BuildWithDocker.ps1 | 4 +- build/intro-to-rx.docx | Bin 464034 -> 0 bytes build/intro-to-rx.epub | Bin 504382 -> 0 bytes build/intro-to-rx.pdf | Bin 1519085 -> 0 bytes build/pandoc.sh | 6 +- scripts/pagebreak.lua | 125 +++++++++++++++++++++++++++++++++++++++++ 6 files changed, 131 insertions(+), 4 deletions(-) delete mode 100644 build/intro-to-rx.docx delete mode 100644 build/intro-to-rx.epub delete mode 100644 build/intro-to-rx.pdf create mode 100644 scripts/pagebreak.lua diff --git a/BuildWithDocker.ps1 b/BuildWithDocker.ps1 index aaa0030..e8875eb 100644 --- a/BuildWithDocker.ps1 +++ b/BuildWithDocker.ps1 @@ -1,4 +1,6 @@ $IMG=docker build . -q -New-Item -Type Directory build/output +if (-not (Test-Path -Path build/output)) { + New-Item -Type Directory build/output +} $Output=resolve-path ./build/output docker run --rm -v ${Output}:/output $IMG \ No newline at end of file diff --git a/build/intro-to-rx.docx b/build/intro-to-rx.docx deleted file mode 100644 index 7161f90b8c8c0393886ddecc0fe2a8722b784fa3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 464034 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 GERBB&ChHS1T)O{@S9UYrV}4pRJo) zyLDG{n2H4!LShfcl~$VFC-iQ!uY<#bql4rByvyC@HhawiNjy7ve(?3dHwWJ~Jb-b) z^FG)x0FP$^_A32zZ7tG$vl~=&jHDcRx>1!m)*HKq;vAbTxTBmtP%wkFjP9ut_VZ0` zpfbyGW~hsk+Sm{ZfjCU4os-HAqC5Af>_{}%-j#PC4}Ir8=RF)QbtXs*H@5AfV7D9H znQUiY#^EuwvtbW$v6-2`&)7PDLUw42$56|sWrwfiE2K`Rvc-X66WT<8=1XNOP2jZB zGFBN&gIY^2n5K{yz0iV`y6G1PAdqB%1p{c09fNTWIp8WE)!}cfBRB4QY|DgwUFW!y zKWop$)vJTUox6EbTD!GSCu}?T!wGg5ub9V{2&&fg7q@d;#_da$7ev=fw1zs(s0tLL zb!|~>U-q5V)K0pz>oj+=>s7PPnk}XUz6s-p+z%Chhvm5H-s^c`vU&B|C~3j|Rb1-hVnED4K~H z2cgVx2UKO}fV84g}h>8$wb7f{Qlx!jI!~?%pwVu{et=iCfGrfJ8lQ;FM`QQyH zvwe=aw%o@$YTYDmK9{d{AJ*B_!{8%sGZEnA-N}l2Ha??mcCA`}ySk6OzR1vJqa?0*?Dum)`20)2Hp zC(J;^NyTrF>2YrhEgT!Ryv0%^_B)lg$7(vGr&rJoCn{?b__5b>7tu!;eS;9XS5yAr zj^!px2|PsvW(>YiswlqCjvGb!3tx=$s#R26206?uDiI=z<>@?CMmCnnv_OrQ=7sp< zH24OZ6>o7v#%;Fp&wm~q93C7T9UL4VG@Nh5t#V~72QT6O-@*T1!T(>w|KBt{EZ!22 zP*MZj&X21i+BmG6*Y|F%#Sg(=l&1bls$}Jc#uu|PqKN+eL?z&H$)`xYzOAVfkc>_wOy=&};16C%5m}S9>VcVH8X;0PLUR&(07eF0 zpgmYpohe@&M1kyxLN>OPL{-9nl(jWBPi22;PZ`5E4SJ-SCd}*r#tAMa_Eh08gu^T6 zM_TJ7h}vL4tOFJBa2^ffjFUgSnk9AxL#y>bqAjH$cPs~@$PUT3JRZQe#tWMh9UN68 zfwh(My&vQp9G7UuD{g^^sS-HMMd;2*cTo`|jhEpn*fNE~#CV+JwT$jmxL^9q%&jgn z)nWCQnH5uB;Eh-Cz`<2t%sN};RcCt_Ck){m%eXjH>Z*@^s-tWdaTy3{0RsW-}*T zCfWr6P`H>fClWJay{kmi2dn-eeuh3mP5|8Sjl+5`QwNL}e|Zn(b9jXv<(zTfU+%Wv zcx}?|+0F@RKB)K(+$gs?u~>o#stXWk zbU6t%9dC0|B=%ybCY7A;-$NY%w3(S%fX_YqG|~uy`&~Ci~=#5DHnrga1mb)f?ska(T^Y+BbEZKT}5;zN5#z1 z{Arvs+^14uc3zM4e7E&TKjiT|TL!P`KQGv(pOR*XOYu0;B{u40eTi}EG#JmcW^W7D z6MqfcF|oyV6o&wT5)I(3PdN56T$uoCUP%#yt_6nnDuoB8Lg2}#%1WYxNY_S~<}l=HLhKe z)}&28G8^pr{>-`^*>MtXIC0vL?^!XN`0vM;OnSw3ZW^RV+ev8_x)4(zSQM@`79>KlWfT;Po@ zS7UV{A8nA3iq1rmIga+Cl#FkZ)XuR&(D=ueD7yEyCoD24C~C!cEa$XfYw7Eqa033G zNK>&aDaS9?K!z<6%`0F!Ev|N6b`)sNxuE!8ko>)&4c&a;_WQUo zZTib!y)A%Qt|VB{l!Lp74>JD$a76 zb86{ByfaQpR-;8F5;vCpT*2Y422NX4mg6;^Y+<-LP^mJ;Pr(Agw&>DNpyhAnCtvd? zNJj$dEr=deGHuD+op}K(ya)5LaJ?4eJf%$66^uNr@Z%bMicE9375ly@r)7nj!QxRF zWC;#q>*BH%C>hrU%tZ7mv#^DhX`Zs1R#~x@!GQ(nNj1lTI&1`q8)I)vK!TqsQd9$*?BNUb_imdmY=ij{RB5DCC+#t7@%Lur3A)mnhEtpO$rp z&EBoIaW~;+`6Lpj!kykjtQF?ph2rRa5E8e+?6lr7><{jJAKaBTfDu(Tw&vX4rH=I{ z-d?uH#;*RRw?^GW9*p~JzP?zt^+NwX)$va%iWGO_`;1y_?`_EOpK8ee+2Nr_19YcY z%PkF%-(%aOHl0bVhi-!o)s(#2htt>W^{nQuI{MM$rt0@p4GXOjL|5^+sn*Ano7K*i z?W+EovF~e!L+bZ_!|07sodf@~hr)LOQp-<0T zeRiLo>4Q~$dgi*Z_vx87oaB9a=Aj+j6)dDaJ=33fyWJjrdZtg$+$NBG(x+$IqD_5z z=H8@dj{EdXJN8tcp6Syw5Ad4Nr)S!zTYY+_9oJNUQ)xwd=EDpdbGx}iA}Qx>*d2At zaSpv+qgvnqztS-xoNoQ(Cr^U!HFl2+ZiU|ew&=Z*eR?IFwLD4ttmRIEp?%i!9>#F{ ztmQRh@3WR|aB%yqB#Q0mi>w6V|(;j%RXy)%lo!R1JnmKA4Jx24?f>6bpNE! zEw)4R``lumTYP|*fj+m`M&0Uji|x2f`kP8Ca*MtB-KY7zjQ(hWncE$asjuiOZ+qgC zo19o35kxcCMCWm5|EWF-_)Rdib%wOzvle6%GHW~FbR8^2hLGlnpw3k8rUCNu)}k@{OxSs5d-6K? zO-k8`laM9f@WJQtDEh&%{Sqxnp3U>DfjxV-v#G$JzKeHIe+XCMiJN`@6_mwhU(cF< zaDY*kqvmJsZvXpO^D5>+v+uvsy1BnKKW={J`&{#C#aOfNzmoXg-WdrPEf+qG!wjor-G zy8SzN`j^lDRpZlUt$(rc(f_RR=|MXtxb`sJ$pmY0(j{xnZ1dt+d(Jd2j#Sd0lhVNt zjt0Ro1$Rz{!Fy@u60W)zGFrAnjnX>CpaHp6<9US)8{ne51##%n0seFJpUs}|=9n{m z@ap5HUwu+08V^nyetBwG+&J&cFZbx!{8{ILnduzd`9x>TwHj#L*Qloj^W#jIKz@?r z9DFV!Rh-}pTXOVM!$q*UnsW#H7hD~FJ`-i)=|ioO)QNOQ%T!~38XPCBGN!5m4K_=LoAVnv|n$_-Q&i%-%c(c zEGID5MA2KC6Dy%fs^eD4qn2)<11TcYrW@r=A=TY2>L8e>I?Ts#wvLu9lE5`plsk+k z41&c>jb}lcCx$uCFB`s%C*~tOGRNQtv+k&59OWUBPY2Hq4`aja%>ii@JWEZ;{J?uG z>Gc(3BrjyTgx|sbGMSzmBCi+0NM*$#UXF(7-~fV?hg8Yap`|s17D#=zoavd zhrvfsvzCag0j+`UcA;>Kqj@iAWV|bW7CO^FE%> zb($Hz;en2cz(i^~%fOWz=kZ9UMuWmF#Bvy%X6$jn4`2eI_alh~fs;H!8-QB@zwMNl zR9{5!O%uqNJS=pg~f!sl>(nHOGRSfWx>nSGj}~D3kCWG)5NE%6rKSB#o9i!SajmRBPUq3jX!;X z&!@3cvW!1!$l;7pG870s#qj1H6>=dANbb}IZNW%bQcVi0OsaQ-EXdy_p z@;(+{3YH@c`M`_>xD)4zUL@uC^#s1Q3@*?@L})@lC<}Tjtp>buu8mP>a-65K@(vA8 zm`L#AjaZ`nZi&X9mhIPwt#SG%n%`S-p{6wOO`TA?aPH_jqY{(B0>d6)y}7ai6?F;n zIsD6>hjaW1pM?A*x=2hhtjO}l{f4(BShYkhK=BGCRg{djYgt}R;FEPz4BzQ+`2lpV zPMw@ySjAc3ri9Ihs8qDe{uq3etnPN}qGixgc)g^S2qkSQ#n^aqYoi!Oe zEpDJbvSx$KmHkgU@!x18Zf%9?_gilL=(_zrVtq?Q>l=N*pZ*a9|DH^u49oTSUZ=c7 z{-))vNiL3!$By+z`{YiWKrN{Sc6HZ{?r|DEo2ki~_Liwp%Ty}OPu8RAtNr@J_incaT@Wn4>iBZ3xxjVf%qTXq$Ae>SZewRYQ)4II&9~Y+ zgqD@zW`nVgW4NozMCa34kjh_jmAbGB+`Zp_;$V=vdvan&QH*s#_*;x-Q?!EnrVRxv zVujImIhn|D#=#zuV5}_?MfNli5hz8%nZXtYC3+vG_hGtX{yZL+*BFidylnW`sbrX` zNF~&mN*iMyqevZ7h183(12Z-J*=q4>D#sExQhREeu3f8Z3lk~uy_#FGHS?I1Eb{hA z8C-T58LH`8vUEy`XaoP&dKi4iLS10yjFW4y0!99Ksq-(N{~2N)X9Nqf@G|mC(A}D)H>4m^HHS6-pB(*&l9rgF*>GRCLtn6+FF>FX3A<)k>p@Py)BIAkoUSrdxP3*n$E+URqSaNZgpJu z=KPX5zh{u!ZP?1KH%hf;a|<3sy7ERM9)-eQ(()vb0*mfcEUAJMt9#2z^|hA3vjFF-JHxF_{BOnnX0y|7Mg@o-vp_39H&4e+&4V%5Qg>Nejpk zc9asJZp@D=o2?VaE)px$(w53tB_Z{=>B$}5w6@>oXy^Sl-*LN9dX|s=CdV22b04mF zLr-e7-3$T?VBp#ojZ4xQ{>fOw-(t*`x>TUBEsO#i8?l$raK5m(Z(_qF^_XJ6;4it# zWRZpa^7$WIZyZn3*_{TB;mR#59dfp_Gcy5RaxLlsb%1i)BWoN;6|{uAkXAYt1uR8I zP(hf))0eu@Tn@LAueIHx!{7(KKoF1tHbYSvkupUqDOO}*Uc3YY6K-gP6H;_h29Mg4 z_1@$`?O@SFI?YL_D45-D_@k%KZrJcYxG!xdhMz>LD5Ud~9w~Ur8T?qm!kvaN0hKLp zz3b};EKk%gITlAKdh2A#?Z~V&k5O@1jT6b}y5~~P?~kpzrdH;FYFXpW4-(Mfc#r3#h%Ip z?gNqfyMs-55c_~((Gv7~Opp@{hJ|2a`~iaZz>+93BJ_KziK~_ZUI8~41}_b5k#=aykNMu+R)(H5VccNj61UpoXKqfB<2E!YyDb39^y>c`_djU^KimE1-8Y00yp` zCIVbq0<#5mcZ6jGP1F_-1Wc)jeW5UkG=;lDsmMkbk|G*DMYppU7Z!beI3?x6eO8#_ zENGyb?iOiI_{&6nB4EST(M(+MbHl7FXudDUG?5@r3+fIh=T|NKuS8royN6g>QR|_Y1adY2f zBMMMVN`IhRc_GtCi_j)T#$!3pOp9Ow-z1olaWH{(qi@6DZNZxI{uA8@cQi5e%5W%0 zZ8ZGF@s8GOjA}TmIAeHk|U64s1Sb^^N@F> zKv`FKaD1}!!hqlrENHZ$lAU8sbH{y9=-_ zMY*@Tx7K^o{-i%oVokW<^`orYSel8UY3h>!K6WN(ow0OU_7+5KNJe^l1iH^!47%Dy zfArqK{^#d+-ZH*i-!f9)ycg{LSBs9J`)lU-iQMFwl86M(hFlHAomW|mHBxgy_f!R8 z;LCu5vj(o%A3dmKD~?SGj;$@R(|62ZYlwGZi;f=%J#Jvyw+~id(O@l}B=(xGjxo03 zw(b%=G}dpv*l#)44G+;^g5AF+y5-vr!{gnqyyb(diptylNo|~21A9|dU%mo~10R+~ zs7g>yB6c=km(d(})gTYGv=dJe$gMRlgD&zd7&bjf?yF3^!90Y&<$LTkvz}W&JI-3F zFOQ8hm&CyL=f|H*ReXU8#}14$x@9~bo8S1`QkQ^k)}zZ5Sos`&z5tgm9H=S?LRzK< zz(gz-9Fsi;kIv>nFfEj#g@{E8k>GE?{s4PGgui3Au&>F5`PjslmIf5e9L@#O5?H63 z>T~pwkWedu7^+ycIu%s&MYys;o7p-%Ddq$=OLb|hG!;d@dMYteIMvNwLm%?5bUB;B zp;rKcxto?W5jA+-iUanWR15vShsIE1#oq}?%L#}hnh5G52!sIbRp-czZUaZvR{v21 z2uF_n6Ii8Q8^Nvx#KAali(exgVu`aOvGNg-D8cR58#!o9#Npg7?dBe15j=&}wpq#! zn7TE_R&UJrt6#C%$z{NYb~d1yasCAa=#{>Y5}Xnr&`nAEBWZt4vYwWRannR-EX3BZ zPVJhBqMTp5z8NRH_fG}ByfYQ}={gk{izzRYLQX}xC{{jFf?t_8Tui^lH+1MSnVE|& z6T+6r=1D?9D&Ec2qy#)p0>*`p;wV3D3ukFIWu(%H%xu?4)m3Qu7kj=yr$z}P!R8|2 znD!3G$a*zC;n>*rzQmY)C$AiWuj3GHlWEirK+O-eG4f_usBI5I)-g$rr0Fq%kmU}+ z+aDL0&I0T{!yGJ13CIklU(FEX`n9Gt6Lbe`1g|y`)|!wT&uFPF9?(ef9_=508dDd{ z}jVy=G`Jm!>^uR)SRrmsJ?;io&1W0?^9v} z>Up(@7F9))fx{5%GEi)erAA}?txfJ{%H;QLBeH9)qv^ik)UsHY_vl?C4Cx)!I?gws z!1`|@S7zR^iI%`|+|&MA7IlF4T1LK#MvK*g=1zxV5Hf#NIT&c=!g(vS@%zVHpWYd7 z{cas^p@HXxk2vcsJ-N&H%FJb|0xXM-gW;0URqtUvm_j2GimTN?u8(Pe3-nkMwbZWg zLgVcz&4m|ezt;Vh_)&$PudWoP#`=t0tlM@MB9c=xH)P#?jnF3A0MpPjscb4+l*TI~ zKby#GevOx_Q=G&ul2womt8eWx$#UH8OGT0q8Kj7B5@G0By_fDEdRFh$QoU|<+peMp z$`1{zgB15eiid{PeM?vCnkb*6YK$lL8n55{o$-Aq*4+1W9soV^F;@=D{G2aJzG~g= zADp?tnS0`9U~uLJXKs+%mOSHto~^nQ4v_`dI~CN_B7% zwC&R4M(%Cx@r+EzB7GR|$_TG|UUQG=;y@Q_f%o9%Ce1ZzF_Gu6OUj^%&5^Y5`&jCQ z!n!RrHCO7Ji*flgyjin3Ln;NUy-?XVj98hS)E_^>cP?orGVaPjce_W}D-Va7t>>8e z+}PBAJRhBo&i;oj6Em+z#N&A`L{k>;<7f4NtYqtG;F{lmPT#}yLofRmdOm;gEzf2i zSKeZhs)&ASLHFm6B{Q%OVw`)ltUFCZ2};SJxlD>)DjDDYlTQWXIe_z~VL}ipPjQ@) zgkG}KrSo_@<|vO5^=p-B)l>K3eGY#7cQWfbQ6EBrqdj9issYY>S@*#EdopehYX5z0 zi&10mJ-^*G{r*6$QXQ1_v`+>##w_>MWbI#f+U@Jkx_#Y1%z>C;60_2(jXJ2Q4EA?7 z%3$li`~6)dvM*{ai3s~v=7iy>7Z63n&8bn+=@lmAwDxK_|#CziQ zn@hWUBdy0y=_1DrC3Z;wf#d3^tI42xuHYyR)S!ZV%aYzrel_RiVtOJDyKeX)3evB&&k%91;1d-|ev9M%=Z}_KRAg zaygTk-qNbPk2f6P6uVt^TcEX!nQlh;fxW(|1KZ3dE=ftC1Y9RV z{jw`G>$2nfG<|GyZr_breeOyhBnFH!t+|t~^HtRkZ*V}GXNm52W}rg|#j=Ko>wWet zhAX~On-T|_Gt6;vxT;`jHh9wBssSthT*~MQt5`K#D6M4$OpVW=zTgxgQ?MvPEi6}I z0mr1^#$C5OMbAThy{h#UU!lv7LkQz*PK6=VMCaRhJ}+hjOo>UL=80umP$^);C`XdLIRmWVQy z6ZV`ocE3iK+XMU@@;{ z4Cc%|os^K7C?5#-?x=`E0U7Wogfy@kcmUZ9^*o9ToO6BZj>R!HLPDrIVhUPY0#ARw z_QAQnLIKl=%mN(YL;-mX*eJH8W9XJIRen`Tt@-jyk#H)ksfuvAD}LCBskIBK(uHH% zF*~}H+3rB^!5>buab258T}SJxXoxb*>*m{uGucvIK_sp93!X9wx0~tiaK%VpDKRpF(At(!85$7P?+T z8K6!}uzQ)F73F0F>a_AGEY1&FP9({CAHZq_d|4$lREf~LCX)Dw-X9|;qmiju9@6u< zW4;bNj(3UyWlGFK6#Zmr;--lJg9K4{K4P`uDJjp9mB3q^vqQg) zj8*lo^=m=9;XG|pcciU1WQ}IK1VWOwIls->>Y)gruY;|SnZySkSu|$jL2bs(!C<7d zQlGYlU1~Q^3ypnID{Bwscw6nN6`IqAb5`lG4edrstqUjQhp&G4oW(g`;>$7R*&5ZW zlllgI%1%yCPEO9?pOf>GlNbN9iQxV&UiBF}Ir;3flat^7{-o zlj33h)Q_m+1q|XKSA$#)a|buaSSc8LyPRtA{&4w(XSTS&Mlr#&&eZ;{g8bxKJ*b^ z#3Q+POSQD+8;`#0z&E!a{Ml!Zg>gKF4+G=ee(>)f3*QWes#Cu4sNV-e^@#cA_m4*5 z42G&x#`)c2;hVlHoMr@*{W8zsGCX1l4&h>8(ER=5n@=AL-wgVuQ@(jI@Xg>c44VHy zC-Lk_qIo`U5W`0H_xHL+1%4=qMh|>^F=b1^qB&yO82|;9#{|Day)I3=-}xT_JK?p# zpfvr47Wd_5hram+p_V1`%7B6d+X;y6Xb0>B#6Cdk1UyVDAa(+}Ucl~K0jte-*aheS zmpGe>Wi@VV8&={0WV>xcJ7N{Ue@6n*TB~_prFIH@W1yIYy9;Ei3pl}a=g#vjpXGVZ zR|sTK!4?p$9IQwJHjQVEa7U1V@Y!Gzlxd(h-&Rpn=9(>KG4CsZ z$Lt%KA;{Rspd=XG&o#m51cUQ>@pV?F5Di#Ft|ox4mLOeYc2ozea!MjoH4Ra5NI-JcI1k2okn6!XKMArw8sqFYx3j)<>L)J^I_N&a;5YJr?B2yQ zf2A95MXBxmd($Qla7XzkQCv2T7Jk5zwtO}f#azYJSi3+rjp}$dp#)IlM@UGI&L$8_g3uIS?|ZUSoA1$ zQ$c?zl9i$er)7?l!BJ z=rWmQIIsP7d84+qyEil^E3-l-wZNeY73N&C6^|)q>sIRVHkCfNMUI1v`pMdPO(^;JbM) zcs#yLglKf7w|SP$vDieZE6_MsU*pXA&t?3FPtIOEr-iJ4cUkbfsD69?3H&wVDLfql zznQQf-p+U5!g4`*owwk)H~8Sr*gKe`y}j)RtYyn*#fL&<8UuKn*D(DSwb|#D0GlD; zGK2VF%wAKJwlcB5qFI0N%i4Eri<)*L??yMvpN)uulucGofY=o|NO{rBM9Dc!xbR7&|3~89T&%-b>j53bN;N*_>1|UdM#+!W}u6xyuL5Ck# zYNj?y+L&oOepPy^cFvDNH=9QNmkJ|WvGzWU~ z)T@9?JI^as*C^mBGp-lQKq8-lzQaBzl@}P`Wl@=F{Qg?6FF z?K$^)GfW7D`@D@a4rs7^Baq2f=E%z|!{gl)nP7I~e{Q@0$1tL~@t{X1GP5_eU^xS7 zhi)tMzy11;n_k026?4}vx^|rfMWNL-Eu;Tj=LtF;z8y5uhWXzi25u9`$00IvIP&`B z^bGcWc6#gWep3o=EFDN?D3A|69hap9E9~4j@Y_HIEA;HpINuC*-N(l4TeU>{JPIhi z=95UuUI#OxmdJDXtDM&Sl3S!IM4rmbj7*1*XF`=4NPEN!8xk#)%qRw?N0!;z6RZL) zbc_^6Rn|S)k_p_aO1zkoUy6B(9nW^Y0-_}{yJ9&dAoGj(?8WIPcOUz=?o0QKeQ+v0 zTFoD7AOz8zFM#|vX;rP~m|%c!+H(DvT^N`f;5=}_ zjo%?G3&-+W#wAZ`e4GpVZdN!HmusF&;AKkC7nJ{k?@*8ujJo_rCgO6X3z5F(MKl+_ z96517bo5d-s`^3_C`YexEICC5lhLdT%5aXm%SL&R8Q5^*`THdHMOgn`kL!v zqVOUvG-WmDug9vtAf$65)JqlS+{9k$udQKL*XpY6R1<6TI@3%aj|q1fseoDNCC@gp zl&Kjkz_U%1Y5XV_)H`_c1sTuJKOVtmWorH+lk3DS+7;2lFE3*E!_(*IRT*sct?6qu+5Oi#1_t?K!+}zfYJ{{?^Q4d7p)nb7O-C!7`lj~+o%Z6eh zJj@Rmcy8diR@X#b@Z26NiPmE}9HF8yf^SuZbEyveQ6>hphPR zy0KxSjUlx=!7I>2q;%bE3w34^ul&{(*}E)x!1>$Dx_h5->Nn1x=Y&V^2|pnH4MH5e z5D!xv?k8LWn;w)+pY9X~e{Qhz+iBQt^X#(le0Q3_xwQ@X4*$JrcY_l@IPp(hu?|lB z-GqNMPW&)SBLHq1W@+@)Mar0{ZZXzA2e=joaGD0kW6)TG2 zRTBf&C$rgzMRTQS#N0#_OF^Lh!c-%eLc*%|BNyO;tqA=e9$ero0Yz;-IfJ!LMV=%0 zAMWsTCM0!kt2!@%>XUd zIxQTA%%mC+2eeQ4-z4JC6bQ^|Ah_Wz@Sh29E-iU%70{M=c5nru?DLIKrxqn>22231 zZkg~LxjF-W7P=sjn23m%nx;^s^c48ZLTN2A44PtzHA2J-f*7=l48DUhWFau&*k(B# zA3@icgFqY_voJi3>YzgbxAl%tn2Qvp;iGen4zTw-Y|$QekNm>1fE;mkeT2$Lvxu843WQU+xzvf?!hLFPb_0OCbB+k-ha=xsNK$ zXV7!pxL0-#LyxiFyMS+|QZYm}Lone|r9r{kP|;OOc4Ecmr|9y;-*PWAk`^Ave>g}LcFsuSpwc0dCB&)^$caLV;qLNgM2IbX30gLWGW>qrEma_(l1 zeS})*;7>twaJ&-WNfl@rY|_sWIZ;wHtQUe`p@$A47OM>CRj^E;pn=2{Rc-1zPD9o7 z_5*dBX;$hgCRpOklrjOuUdqG{&Z80SeWv-CeOnv-BMBin7bo-=qU?J9_!A5#dw;wg zw5tyHV?%14Tq2Ll_Ifk6>hs;0U!vb1@oKoH+UE{>zX8vD`3Ntlx;1|75eK)C+~Xa& z_k-{VMfiZ|I3PSi1IB*EycDF zzZR-?3Hx+nH@tKybu~bNCmJ&?Go|9j{E7Y8TqKKWnXIQ9D;!gKVSbsZ%~6NnABeN=;bazE)73f$x~G$vnQq4j!x zkv13d(v4@Oft+~pi?^G=;y9&xu1d_H!byYgWim?v-KTiZ0f`R_cmd^Tkl6`8Yh-+>ocCnzdfB?r&iVYKEkvEqEdj z7#8S0Opk|CzVIheTslSV=?o0&>&Te^FxFIc7Y+@&8L0_gho*tY+p4WP7|#2UDHnIL z$DV?-;~oRu`&|21Wx5C%T~m z#OzeB8_BwTKfU>5Rg=EAf0o4u+CIJcaN8$QXD26^s$z|!IXZfG<17~6$9|q4>e%Vc zhdcJ0ddCJ{2R#4tL%iGVdsF3lG)0u^tej~Yq>gntDbKMkDwg=bbj0*2B^2}-rDs;i ztHShAY!*}3@^xdT&&{OXqWS_RgK(y-0X3xWQ`$n_D9RqQA86<=j-weVton0u-to(GjXORu#>Pr&uBCs`~I}cr_CU4O0FAj8IhOxyW|DyV+KBhi#8w zi1INbtzgF757mKtTlY{M_>qF30X^dp6TYu?f&+BfQ{c{iR||GKzoGHLU-5#!TP?)B zA1#|5nZ2wU+@;rdx=VXX!gm#=QLC58P=*aoN1<3EQ%P-rHe{(sECE&c_zdMt?50iH zMVo{WRguKe$K8*kYw86OP+k$A%^oXoshvwydZ0+C7;4EupHcr-48SJ_HSIP7cugu=SC45yN3SPc3q z5L$JiKR}J18UUO?Htmx^Cc;)08o}o&tdp-84`uIo+O14}^JT+CsjHOdS6^p1c^82J z&R&?gyX)Uw7CbMi-@g0={+a8BvwLu3aQ5s?v@?X*xr`#$6b*ukoIQ zQ1q}8*;@bVnVjr^`C6ECZ0q-gf5 z_UnJO_%w+;M%)5?fL3q$r>FH7s|E1VVv$%KMuCV}l(1_0OZ2vFubO5@xRU}8L>KO-@fQa0eG`==1uxB1VL&7{ z6Y=p4-Cu|#!ADb4#dHJFwcy5?8_H!!aV4`Nz3EgxYXJ*1W|z_pLZmmvBA3@#ZbI1$ z!cld1Z|e>#GGcHF+?IL| zg4_7nI`bI=VwyAwLa8blsSp~%+P#=W|)|2;* z5^B2ItV@m_d0pI=RJ_-q-pB0d5+sQ}nNar}NG4g#wR0aTL32KZWnW}d<&m_;qs_%a z<%PEXv05l}(yXeosK-_j8SPT3ry>U;Cngtv%)V7iR7xZ39Ak+lB8gMaXAQgB*y|Cz zHA4$Y4egkKk%i=V#3GirbsuOm^v}nPg8vb|8Og)2fKwWSzkc?Z5mY)p7QUBT*`d^~ z%X;gDYI)YWg>@DcZXI>lB< z8{9Q8PZ!%#z(!e|5VX5C$D~&pTfx_d)PM`$#}g2S+&(@B?eW z*7wiNF({#hy3-v|?*Uy$-8ckrQgAMTHC3BB?3lf`fuK7S>)_XON`#tF#h-2>$TFOo z0k0`0f^G3HI)B+r!~~vVu?Yw3$bm-Ek;r&1m9sH#1^*du3Q+g&ko!O&*%4(fQZ`e> z^k^;M1Hi4E#S*MiPA-?hna!((e9jU{kT*P!=5*I;D`DW}M*IpmAZpGLRvp<7y8ybn zx6i2q$AGsOOcrCc@NsRl5l#?e^WO2nrKMg3xY&TEvg3)V3Z6Y)Nqw zbpBA;xHhY3mw`hz(S=&DNiM|{o&C!FU2BHj2g>YEY&;6gmn%>s%Mr!YPFWhRm>^o1 zQ;udv5q!tanzFZ8M#WekhR~{eBkmiWgNIF$kxeRUh`(8ibvXm*t#!eyUOW76XLxe z`~a|OQI0KIV&ssfR&L)PZsBeWUHuvVDdxY`o`h4}Unk@qUOB9CtaHBRo;){RV=RFw|pOQm-mrH;@TD1S{!CO zNy-!yBuZUjZG@K8>3uft!0Q-3cViaO8N^g&;rSl}5gP{{?3;+U zu-Z2(nM_3m@@$Rd&u*OWV<2|pWQ)#-ZHvI347D3)Idn$tVlMNiL+rP2{1ST`m2LIo z{T=lOY^}v=X_cXP9BtMOR6JhK+i2;1cQQcZ@~0CT>VN|+&f%Yq$4XqDGKTNB|Lgkg zXLgzfZ2ydC(Dh7@%Z-^Hwq`98Q zw%=Shu&vFn*W1L`;W|0?DoNDRV6kij=Y*va$br7SJdD#~7-?`?nq;h%$N&`wuVwIB z0`^)ine$ps&ThZoqtEgRQ9CkpTrkHv!sd6>%&MHtH+px;kGV91{w~d+KQsM(A_yt2 z)N`BYUC}S)EK_;a=p*w@b1{b>Q+u4XDKQuoYa|5X>}S+RK>##bn=YDqMdD50>PCyj zmUimmofm`Pz87Gn`f>LxTPe9UG?Nf{ew#r+HzEaG{5Y`QKTJeY-Yq2_hlL_*Ar z%~(ylFkR|2_F%*&Wx;U2>4M&Xr@z6G_FBm9X#<_bPDwD?9%tt5#mL%Ox`5@VR1l=8 zb~1%>N>q3AC@c(PZIuXZQsV#PSw4PJ0-!x@grTqNfD4} zAP#WX3`@D`B9{>`W*!q(nhhVTNexSf?q>Pdb-p_F%pldUCuqVVX*=h}}Wwka63nIKe`lBVF zq749Uy88yfCG0(eg=)dZ>}lQWMtJuY^ywz(S&eIIkdRE|xynbIOj7~MOd6ZP9@Y8T z1PWo&8Pp)uyF`_44yi7+o2~nBP&g%2V_AlChPWP9+-fWFqA8f~Nl`h8m)f!p1% z*Vo{7gFkrhnyP2d*q=lu=wR$YJ|CTq&K^$zZdRuK>{sfdN5*48;6+y8@)LiH_g06A zVAz+7X3UD<>HZC!}`jOM`U!NN~`A9@qWLkSw^z zqrWQCApEOK0$;p8mg3K)D!u^U(EP=tA?*yI#!MjK8J5myEUmX4RyX>pCL&SGG5g+C z{MQ?hN{zwAQn7^U|J>}XrEs$_@ntkO%#KC3!@%TNjQ{ulqM_HB%2p}XYE$`kRfUS< zE=68oVeEHop<)3)rUlV%($5Md|q=lO~0CdH1Fo$k}xFTz}Uot*HKlgY_RbaE1( zoQRW?Y1iv8ym6Bl-L7HXoWt>76Z}`yS&Ix7IP<6|dE)A%Z4DZZtnQ$Kt3AE`ZlvrF z?D@#r_dfvTe(Cnmszscx7cn{5BF@%}h*)Qs@f&KkY3BzhPu-Tv*+YHmx{(L#FCF|B z>^&D%g@T1gbLGXE=>teY>T2Jbec308D(YzY!P3U`Qsg(9qKbK`scf}Q#*t~P!=`FG zN-M=_nWkjljIVZs+fp8PGHbgk{Kq=n3#R!J^kg6>>air7QwIWK$zi(|i$O`4Zh3Hd zc0nX)oI?A%{Z669GqaV*HyPyKGiF=O-p+Y+1uTyqB693CAtTyes8B|ry}`x3fwg(! z80=-S<@*K;(X|JfU+{cZ8mf@@jD0XsnNv&Ozm5I^Vy*Jn^v8}F*(Fm*?*1y;7 zdYtLB+%jSJo$c6Ju_!^DMNrz*Xccd^SkOX3IiAZaxi~s)49@p(I6wqK9I1Dr-axUS zCQMy9fGGV4NWyU#alzd;4T~?7mKaaF7-?xHD;5UfWyy}JXWMNZvs7lKX4MB#zf_+( zCZtU2h~kSyBJDw$7h4DpY>diP;=YUeXa-ic3k#swwbZ4VjBA$?i3Kny7<%j!CeTl8 z*vm{S$YyA2hE-#{sJPTe>Z z_q-ru&o^%j62KYZK)g6PdD*SQj7Sg$iQzEs$7@cuL4w1CnrDoiGxmb9mo2&E!Lh=( z)zDQ^E86IDqX*TK@>Vm(6DicoAUZ%0{{os&p zmM#s8`J=bbVMDLchw`}eS@FfuZu2sNk}G}MOSwuL(bj{%Q9-}P-@^UXd;44S-m9;I zk}l)C4+1t+gx&dI?NPuQiwh1s+9~kkfWKXLd?0(FKBkg9YU;x~$wS%L?u*{)A9tt| z{OX0S$8B%>^KZR0{C<^)N7MgrhnMr#ebtd&6kZpbWW3#u}pP+X3pp`)yTG;ghx;`a98Bk6I-iE#^$5d0 zn9gpF@c!VQgX!GSbbclIOl3StR;*mGM#2xqb1YyeoctnsH$1F;?*4R#6>eiq*59p6>>kZHt z%;@k^*LK}RR=l)X&h|bekbj)Mz?l}2%3_A$N1}La=X&rf0l#c?kPbkD zi?6dX1tm2}1R|)u+t!A=2cp=y6P7A6!@)QeoVkBR^nek%Z$v($!)ijqCtz{-m8b}~ z{uP1ft4uV0Zx_LTz$Osioy*L~UNtR5O=>Xtuk4ELL?R=da`1rc0biLs50I(C(f!G^yZ-i*sI!{_Eq_GEL%0-yr*31TUmQ$Q{7uj(=nf7y1J(f zI`~14)DQBudJ{ii+GyC{CU&~rY<~ke9*;ZAJ=dq=l{5|WZ*o!PN9=URi7MtzBzWXG zvSyJ!#HQCSvhPhVfQMo^OZ9(ix1W6i zf6aIbZ*g1&|Hl*irR^;Jt$>AOv-1|rd}&|sHNK!b2@<*Z?bmU3 z5j>g`Er=ADde$Q|4jJc4b9mtTBO}V}f|8dhFT{E-HKp|7(TSa@jH4oD#OYRJITv&c zI23ht<3%)9llYIpO5nUY7_E7cnSq)(Vc1Lrq#Q0Cx~>Mu#&S9pG%5Dl42kYJJG4?d zHxD(Cy-#_feN7TJYzy3|mCEq{Wx--mfG1;SgIjT$ZZHc7hvD84emp|C!eQ;XSg5?P zBgJvREE;Sxi8XR}jcg(!j&mo=tdNOOO>@3jh)mPNVkLA2YOG)@QLrlr5>C}_}k_HFyAH( zBt5DopCSDK4&I)P8Xx_j+D|9NV*|-@^!Mk#9QU^n)T0a>4-*RZ>1u?fgN6wOK`5bh z=+eJY1tEqjXG6F$geyb1QV&<|kBS(QiXXz2U|fa4QwYFQI2*#1AzbOw)d))m4dF@< zN@xgI_QcLSH+PM_3|IP{2mjbrZ`T4DoL7J7xW&mvKiTUM#w~->FgOhla2lK(50T3d zx$I%xgAy8)(8HBbpCgy2RHhQnoRn}zFLnxUG;q%$xaSdvbG^QX>McV(GIca?&y!O} z1NZcmdpwTP48)iX-qFBN14A8VHrHS=!a9#{^6{?9_$ z|M`K>|4{E==T#3w|3kh1=H=GAyc8WD!R^#`qoQm=v-phOum#QHNxCm0fu^52g8j`}QBOrY)bXkUFHsiK8;%IV)5k1n>umEi=>qj~D`m z%FW;;vd|8CV9dT%OGMNdZ9sg$mmDZDAqkpqBbFV)Wwa!RBK?rnGu zNJUS0N_({WCgMWLS=|%u!G0NOB0OkHPH0S{3egFyXSho7lr2~}v zQ{dA9%6;&ILi2;Xtv(;1-1m^WXDQDy*APqmcFHCqQA?)hi0-bYQ&ws|!`ws@5guu7 zjdE$2k*Tsq4wc*FV6rluh+MOy?~hHEdYx5EL{ZSMzB?YX3rgq&Lb#7h%N{6KCAR)r z>Vo}M$;=FmG!!FR849sN%?#u=joLK0-3E+Ul?fsb*QXsGy*&=HY~lNplao{U=M4Ti zhktfa6z$*s-N^|*p+A%8r1Q7Gt@eI)*8Sem+2QohB#LeZzaAAPi1ZTl0;tGj#g;s| z0yfQ6IWxI;K2g^<73v7TU@p3}5FyRa{mzpTsPrU~#E846H~seOf3^5DZ}sGVw)k{o zD*gZ``n@MQ<2>X{RTeO&D@k*!gvjq&SD|eax`% zBa|CFUxeHc4Pz985RJxy*}aHHn>FLCaUcu0pEQTSxCLR*$Di(KvuIO+q1j4`Bo;V? zyDml5FmCoG5@@kx=DwBnxDqOwNg-FNjYb>zD zmCJ}CwOr6nGMWOm!XaxLsnA>$Wu9T??n|W-K?RuAFg?nITyvT5iA-d%qU~@QyXPBA zRbK=wy>!Ha?Z_#P7j+*uBh2gr6Y&M|DvmLO6-zvG7 zxrv&=G86Xd`>%Em+P8f6TN?>urJkXE2ZfX^?@q$I&u)z;IswM>xOSfxS4%Ou#J|E* zi1GbxBY+_bt=lgDB#QSyAR>)F%5>WYJILE1ctFOJ{w)dz)%ZT8h;mcL;oJJi;GK|MVp7Iah(-*sg({@K*w{`S^2 zc&ujtSzpq*^zWhhD|?H*uYJJnZPMnxZPC9#wEYGBtIw>{86M0frk!%ZV=P!p`O4h7 zW~z{w6{I{5y?e z3C&`)Y`nWnMX?&u)FB>~StcT( zHP2U#%IJwxvdunC`3f=SM7XX0O45V5@iAV^)X{xnlsvUWqYFOS5g-e ze9Av(g-l*ks@Rv9i4TRyG$yl+`Y=h~NaeYRFsU4=*yW@XrLI^auS}hS%U4q!a+odX z_X#9TVX(@Q75vMlUJYFeoRe)B;Viz&xg-NZwa75qv}<%c~KQ5`5` zY*l)#EMksNiPGF;Y>dMXaaqI zFN=8y=BzEm-`2>fZ+F`7e)#H#&oNTdw)+oJg4Zy*ORUY$MWXP+I$lE}XKHy8=W4Nl zA6{0UhN$SZ0y%^57q6xvR$4%eOgC98)5RfTS=@|&-R>GD1>h`zXWM>vdgFJSQv}Y} zQv?uJ#eVjq!voG*(C)v(b2~eyVD3b3?fL;r+49+HQ~)PDZEF50lL(G(-^upAr$Z zVJ(3^h~mz^vsdeZQ0YCb%NL!lMV=^54UL3Bg~bKf<5-M{X4p8U7b23=mC2BCOD9A; zLmrG01*YR#avH#J8;bo4QxjFyD^af;Hp4k{!q@2Tri6-L*=Y_7k>R;qo3RE@O9LW; z3`ues%_{=w5uvO(Fc=GxM48exflan@{V9V5dh=t!ak+n`NjZA(+f>z1x=z(sosVl? zR8{F-t?Uj*udG!q>0fYqY$0DuU*G{L?qLeSUe+C6ciEGgLaEa;VJ7{mYp+H!>E6-|^C0f>xcnMWzrgPY zF#f~PhR5VT_FsOxaU)TTy_*HM4gZrI2FVV^J`AG$5z;>b+0N_x7=$|@4(qGg?ypwr zcZM_n=_lZ2(Na6NZRW*x=T8Fd)veVX>eGivd2A28O zWgp#`#$qZnEY{h)pT%+*ZQJhQf97^KtV_Qy%jwh``ZjN#G56?h@U4c>BPKpXh;~a% zfm71m%n`Z<)bn)#7hcF4PQpuel;KP)E#r*Y#m=|e1ABO7j}g|cL@FzCu8Wa@L$+l= zB;`|)Bv{*`45ls>zqm+u<@b}_~AQI zFodg4`3&roQBRIhVfA?x_UV0-a#!{2NM1s&M6Rrdi23>Ybbt0tr(aqUaTj$QN7uM zYc1jt!h-@Ni3wUATr)og@NSg0w!bF|r(HrVngDo?kCt=p}X%B_9^ z1vaXyI#a`0=OL{KtN^NVGnk}UEdm-u{Lvejy+p~*cxAGX z)G|O$2H75K7p6ia#-9piu;?BcuGQFP8YMgd2ExEmYn*(?O{u(qzzc-*T42)!h7?pX zOM!+~IpJ6$3PyoSO!F|NB)ullX!ZDZSd!m@M*&eaMPCzvJjCssC<9y=C^xm_pmp7U ztn8$n1h>snp2meNQmo=A+zsKz$ulyO*CbCO&2kSm;zl}iyp}_&Xo(&w-+;$b17|D#CL%o7wmbN;^ zjUDSmx&zD?jHX>9qbX{bbuF^?%7E8K zy41+J5inZ2Ha&pR2U+;d!08}BqQqf3e{XYR`Wr0Inhxr7bf|U*>Nv81V-XL zE%k|O>?JpuGi}B<{9FRdxLc}1*<1qNb_GJVA5CS5Cmso>#Nw@(zE)-COBlkE1JA0S zF5f}z#mAsml^II zVgSfMH@`RtaVjVtlE^Xpu8giEh;BGmqYFeM3$~*f4`kE#ZnxQsgTT?h%&)?%!`{(* zURR81lJ*U;{{nAGD-luXHdGj3V6$>D6}c%KQ)>y@)JwLoeVyaNC%72h;Pc0|FW(S1 zGe-?vbM#I0!~K#0uW7q$IN&wiUHkI3&)rOKRvirr7<%{`s6X`ZwdVRqgB#R;#Wx`E zv=O_3mF}{k0|HMd%rvy}4{kvCZoqydH-*5YS$2#QRCl=J0yj)Bpyhsu;6-)YK zYJY?B{Q5N>C&t`yS-B_o{@CN{@4ABA*YbCYhMu4dn+oJU3bAL0a**O4NO1^)-8NHf z^8Vh$qKhEcBX{{l#y`Xy)=huu@kGFzdpksI=6Q4Gp3S3a^c=N4UbcHIC-Vq}=HtnN zJ!J;Ez4rKJ<89CUVG6Fnkm$mmPt-Nt^<(wEx$md?+n-CGAd<^bRkZ7h3+DVj!>IA&TVO(cF?wK>vuEc1-zfEO6)VM~`c~CGpA6M{qlt_iL ziDr@Tz!zqeBjF$*x~ne4f=$cZ%_GJ0cgS{h=tqVTj$M>po6Ja6v0{76({k#NfzP z!yVTKV!9^I3N|+v^nk3;RCTACt9~~t!}S)(whC&m&^2h^U@PleGW3W|$^sn=<8Q=r z>go_>Nb0*2R;&1DD2d$Lx`&d;k6gs}`d0W(6WRmf4^Mw>A&%wMt=8Z6M3SxnlG_F$wSZuRk_dbUoWS)_v-hgp9+f)RLv$bN|^vO2{I5-d0H;!A#=(c^qpSH zBAR0*63;uGVko#6 z3NHGzgAVk~fXNk>E*h!{o)9Yy)dayX({L>@TuThq1jB`6Q2f=~=%N3jJya76!abPn zN0!s*bpr3>7x6xB-CK(AxI=op z4p(((k9&(9>y3RZ9r^AjtP|>^YepJF06mA2!QLf#d%uBq9+&O=>f_C7yKp{v%6oGJ2bRB^@ZQ*6 zle+Jt`~6O);&Q<=i<$YO$fb(?ZDhFM7%n*W?(V-PKeeA4Z&2AE_fovsOXYhOMX*!N zf>)*eozbQteig9^0DC#0ZM!q$`Mi6ZZ|Yz$+;AMjq`OC>BB`AlzNveuAA9aCzik&w zc)aHNN<=@kApG<10*yXGjwH$gj|MYgKb_WtUoOn*>vU19{H@&QRqdZM=^N4N_)!X52tnEddII{WQqAS# zPrkd6I_1(nXypUaeTXNUAAMO)bd<}9&rSwk{M0yFdrv&{c#3L%d8~~j->97NjPV4V z`-~G*w=UC^=PMlS4pE+g)>n1|g!j$aBA2N&9~L;|U9c~CUa+skWh#o_e*I^oV!Edy zp0D6tiOjB8{<)0*@JW6VpS^tX$=wA0)_v)IPz- zTS?n3+$qRBYrI$4g*q?yOP#4o616-j7wlTbLUlrxAM5@YI0DPfD2-?CpmUm_$U`hp*1Cz7$z>hHR-)0a2?a9DS9sxmwZ_s98#xC%*ka z!1Y&chtfX)H2)IbA8~ziAi@Jk*m%a_A>F${2BoI+RPgt_u1Lx}6ERaI9oPiB*QO@^k#_auE;y!s15js3ErKULvI8^|DG*Rjb83)gEDU$?_9Zy+XIQ=P4 zWg>YlixrI;0B#xK00MekE*1%_+>8kkA7Fh_WDzZyM@7k#WW^RTy28)mEQbZMDZaea z_D3>fg2QHXu}?PY(J7mwH8;n#6DI3nrd?zLj(Q5V1{F&pu0_HYNtsT_woGxB1hy~2 zqau|>WuC(ctUx2s5D`Um=4=jvY`^>J$BPkl``Pgk)CmbJLLt|*?{EXnqN~8Xu^-pESkttw{r7plYn&wMj z?I$A4Kr4_ZiLyZRc4(qUasq1<>?Z|B3B=E-M}@r?sBz)EUtI$y%mn)}mndIHKfQnT zGs5=T>+$WR-($s)ecWx{b13$6lq z8Ft2u{1_R9E$b02m*?4~ zRS&l3Ku2iQxurGged|8ND&??xqdUm#ka(-8)MOIqKi6u+o^inwaEliUl@mGf+s!PD zh6tSJt4kb?1Kf))+S$ubKY_nyJOu^?LY?5yo|7f~i`e-tzW>(PxAPW!{|a944qxyd z{?%0!aS=+R`M=ABCk3c7;KzcK8&E7&O&M_XMSxS#mLU5%$sU>MOf>KZK7eiz@i7=Z z?)aEI+IcQQF(a>91t-ruuH@ZK_C4HEZb{PqxXR2xBF%*w+Wsf$W8jyV=>%;la31dLS6cU;-Q=S0|$LXmrFcgO1Ii}BSjDKV+M`A14DNNifCFU$8N%(vuCj~u{3{zL^kBQ zRyHZHOS-cky0sZ??EqVB=@vZH76-Che+O#KB8H@xgrh7+Ae-(|kewY2R*Ats=dCT@ z51Gk}p)D{0J|#tYq7`Pc;(!j@ABXRD&(cGk#bzP{KdupI>~O5?(akY#OF;wK@mdn| zJ}&zf%`wg6Qe%OT#J4)vRW5tP1drx)l}4dZ>=JR7M@TiW11I%KnJq%nLbbB3?Tdl-Wde z+X0GiP&g~-sNMVF1H#IdM?WQ;1_uY)OS*rPtMpPtDvLdqu=lgA-ZPRx56S(~Be{2~ z>JG|+;8o3FK?V!*ge=G#h-jqltr6?PByE zu&TUaRd1=kZ-2`Q$`=1kE*2ubv}xmB8fBGrjZoi9BeW&k9=P2vmLBl~x<#l7oYJ6> z`$*~B=duTImhyPhVuy=uQ-h6&S;*RR^v z6B@dt_K?;+)ro^=HF#EoXBCX8_o_ua+Q%Q7(=(xKzrK2eePxq({Y><{>+M~p=g{H6 z<0&@t+P##BLxH|}4Dep7Osk$=p1((ox9?=<)~uKDcJsKPz+Fzi{{6uFdy2j<5$tYu z?+5?O&!sB9cun0-g^106dJJrDSiWceK+%545wma37n-oY2nJI|B4>J)75sz6XKLE& z&ayQCf9+){En5$tTGP_Pbolquz1~ul5WK42BBz0;SiP1B_^eLrDY^aL9z3F2=S9N% zslOK6(N%)iVcRVHo}|i~SWVFr>^QvK3$vKI=02{xn9JPf81i;8rO&IKpl)D#s1bWB zoL)2Q-pJiwmGaK7bL5TUo>k$F6Rv{t>K;MWe9v3iwq;HN51bZT;I%rAn}$ob;nJ-a z$1z;G4VP}irCR`YZn$)-a!XPZoZdvRX_*tMoS8$1gD<8vc*7AZ)Kj~$864w-YmM$5 zW6x8&hnuv=bCY%e_UUb7QBV2D^VQ(MLBl;*u&LkvCarzngAI}CJ=WcU9&4q`hEB8I zo-zLEYo}Xp)&GIdyRR*4{k58hKJeZ)pOL%K3mX_dYKGtK40nn*A3fYD4tI(Vu{gt> z;^Tu;B)&ziu4OFDyWkDkwyU*0Z0xsR|EtBP zx0S_hefU2;E&B+YXjNG($|9`xS?{x0kCAPpW;1y$wBeXwHvdNCGhd841vx4~9&ie# znNrUpl_Y}fD)2xs^3i5OY&!uNvkSJQ8K1hG&4eznYi)(YKzUB{Lfts#6boE%dLo-z z$Ac%bSTXnk2#dt&68LRUHNZb+WH@NFiPHEX_=Es$g;tmzog`MmaQNs%W*ncV?awr5 zDLcc_tZX9iH>k{jhe|s`nkJ6UM8T#!H(HH;i2{tDF7ING(|*Q5i<^^i0EI<3`b*TEK#Xx1}+^qoKsb5 zvuVBHp)?s>+s|_rB??#q1oB6u>e-mR7r^7!0ysil;X4cBBxRjE_s$%Roh}lbb_);B zaTX{sb1bGZb0f=f_-$EO{#yc7ct%VN4+B0)omz-_!9i5)8qVpH$bc#A8$Lq@mV;D8 zJaMnnAW_krp?&8WpV53>w7_CI1qGu=OyoImBADVhfnSb@PjxgGaf$zZdl>j#-1+-E zxbw5SxbxHJYwldY&ri-zPEJ6qP)<)^PqP$g6OHf7ucs{-=*L%Y-vKF4*q_Yn*!p!H zI^X8T0jJeltB(u_lmayol^S@)a=?UZ88J9OI8Zz(oaap%>+J_(4E&5qX4A7qpjY)= zEpY(t26MheY>uhOkpa-h!;KqGC%!aL9z_m1ANkKRCcbbRr}D)DcpUyhQ>Cef(6TED zQ*BM~70rak@fH%Nkk>Rh`iDTgG==5-_Uk|1egFy6wN=-oiN@%{!a%ih!|?7guqBxp z=_}9+B?*z)HP0n%bOm~R&OuzHB^K};tY}607?&rbG67vKGuUS3$ijQejFZR!DJLuQ z)dI(8TMM#OIoJqmt#DOFl8VX?jup!koGVJaLXDNpaG13=kDIt2rvnL|LG@bZ8Rx}Vj72JqvtTK?Lf@OkcQM0QIOd+43n{tbl$%BHw;}b0( zZp@Fby%|&s&2_E`4vBari(~dJXrF5=MW)4(Sfa(YITVn`SQH%X4V&gFWj6XD8)all z;$BhQjedd8N_Zeh*UCr}sK;rUkN{chCq}qsw^dL)8OW{m>5x}%C^59g8upwvCB0zQ|5o(8qJv|g0^?%JEOUw6j`zfK%SkZwkAU)6N4HG*FP zOOrsXxm!_*yvX7|A~&KYCW$aQw8leKlz}2pCWWp^0nieC`9J#CUBJhX0YJ0i7_T~gRbEC>(M=nPmr0UKkZ=%RC25M&Wajs{~1JKMf*xF-7i2 ze;6X7#L=Clpu8pM3LrxjzSy7yv87Rx(CUi-`}5L`GnXN)5j>+Qf<-YT?>Jk;{~eDoEMP!MK;q zd2D zIF=RI!JL7m3Mw`TBF601&K7sS&Nv2K|B@76yxUfgvJbyp12=?Tx+kjqkbMu<@mW>E@$73%fBVuY*7Bk5Ag2deWmF+1a~4aKV1XG_`W*?b0JnjH znKAoH=!GnVz3>7OpTGxB;8*0tfPuwpFNm$VUSN1Y5wNkdu!w7#9}J2`>CZQ!Z{r6s z(s*hjRy$s^Hsv@z-E)rPn=*?zMScl;3tHEvyw`b-PVyU+_@ZmWNaj(QVh#-Ni~Rd& zSpR`4#@rI1Gp2Hr(+9njBSFZ2t6dgQ_5>Z>7}z{dT}q#lc;vKAiN|af1=$l_*Tm&% zME={a|1dmekp}Q1>rxN%-J-Ek_h4e(#;38j?U7(Y;y#1fh);#I`-Atk%}N7%+A2jE z55e}s5{hklqFw(0zZISG`SXd`NIB6o?~`XcY!EU z_^L7pcQFViw?SWt8>t>ezKB(-95X+HGI?7{lmuO!l4oltww zLRK~+VKPR>$Op3b9a93M4Osx8%Sgzntj@?d`6rcJG&?G&S;C@+$bBbBY$BkWWIj*e zWq3_oB@*lfGP>uw=H!Co65eZ54Ua)`E+u%scDc;$dnl^2&fjHjiskn@)f?abfgCAbmyNI>Lr1T#z zgt?}n)D4oa@f|jUY;RQZTvDwjc;w}R(u$}eDO%xG2`becRNJ6ZH%tL_0Oi*fBAwpQ zBniE2HS`OL*IXpmb<0~zf`903ljMh9^2r-euzV&EPSYD@Jf5gOyoP%}_$v|p)Z)SC z{;1J43_~v&e)~0g*P5{< z-QiQv1^D`kCzy+8-|0k?J21EVB8yqMFgbK?bK00Fa9Ig+W6$1xIML-|kw`2Aa0wc7 zr)fLkutJC0g>1zuC$)+R?mbpq>4NOPS=ZEt}PeVgImnzuCf26p=lx5FYruUOx= zIvUlk75YGm_C=`oB*rZ|1hV0+d6a$JAXX>6K_yDg84|^8B?_RE=_sm*W$&f*Ce;F= z*!CRV;jSVt6&20*l|pTpDi)E9g|_H7IHd*U4E%|7ePe2M@)MCV>t<{esNjDDviH`d z8Cb&2Z=EETV8+xMW;(%TNLW4}$ujPzCRk=M_OzUj0@}EL^Wlp4(YXp_(_V{>3@}9? zJ8kU_Z73ltsD*2xH+9#l1{7iL`gZLK?;At+Svj}US*HAGrfe&k@%O6&!%)t=HJ1;E zzWuYdT6E05SIe-BbSKBW?hml_5}^LDb*%=_F_l=q#WpY<(fX*2Q4(OF0nOmlyyvi2@H2s& zqrFra-+4i?56>vufLN&|i>r)RLy9_4)D#1z1v6)+w$ORg1w5vMdbai?{ZGRe|7q6y zc@vTDd!gF?<&6C&IrRToi%Cp!@i41_^%yTCoCU#>P_KuyAXrj$542@nq~{WzPGa7Y z>32g$CEqKtC8*T*nc4me6UY*F!A8-nLy9vcsoCl#zFSr9>hKlmLT;|GiG#or$tk4Z z8Ea+;!ODIUNm!eo9u#AkP$k0$Rld5LSWz;8cQy)m)XJYIkIj+l{;j2!ccN_n3ALa^WG1B z(EOb@oWc=gyU*F*zs{~@t}^UG9KSa0W^W9FnL!Y`h=1`ur{}%{>YB?(!Ii;_xO=}2 zWYX8kIbGMwiH`Sva7aUiFAc%{(Hnak@BQ@Fyr@ZlJ+6LMd~tN>0g&4F89l;cXOBha z=}-ebI3yuCByU~r|L^H9CcznyZ?bpg+1f^^cG|PG%d*O%!C!f(zw&@_tUGzTEs2DQ z&lCfB`8Ovt2BXwA=J)a3c|JRY1-tJFwSME@JGTG9c(ZNSo|>x5zA~-9W&hD$l1!uB=PMub!p*-S@yvNnE1zY$YApJM}M~_;g{p!;)bqez?(Om zsOakOx-Ohx7~>_6d=o0$1n<`3pFU?Aw_imDE)Z4+KSf>IdMm$l8d?6b@7z^urZ#DY z5SaSGSEXTl3L)Lac??3yZ3}^oTGGTf{~!Cj`octE2sD3?=u+J$l}}bhlY=A=k~~Oq z?GXoYKSv{RYGg3)^r=8owKppl%jc`;S_lIOAMt#KVgwYlyzamLIx zz(#bQEcr^C-U3a7hm%qeY8~gc+xuVJ|Js#Gd0c zZm`>KSO< z`b*k)c|(86p4NWv2Zxji8~RJ`UVY&GCB3{P^k}xWIt_uFEcDVZ7rYViHh7|cldIGO z{Ef&?U6cNsMDgO@&wV~Vd+E_MKc0G*p$TnhLJOUdhNxw0)G{=o-MNIJ2`%8DW@th? zL_g2agw};0HZ-B_m1+GgduT%IyvJc^Lc8NlLlau~alz1p7VyQ#(1hlP>GzWI9-7dC zbZdtuv;zsm(1bQLp&hDpzk?<;cKWD%1>apDKJQ`@Ar>L<(r|-%Fw(cZL2axu@A_(B z(4|h7o(;M*46z<`>7Yy7>eBN;mxiQE&%@TGA(fK)6X~I;dK>c$P1Re3w|DRegI5%~ zFb`hQ;k=@7Bh0}92Q9RN1wNDo4gl65Ir!f{FR7)YC-z5?u_y?&vS5j zq7_?mS!kO7&9QYq!EX9uDMZG!$f)<;ViVW_?)Vi%%D~?nL<2FMV)v?=Hc@70tL?vs ze$2iVxiAwnac<^--L$=k;Kson-Hs9;lYKN-(fZjv{C!Qp|?6WnC%TS!hgHazDN2W7WB z-v>cszR0Bp?+js-z-P(ehfBUffT#$+g0tcU&Gg=! z1#YQB6VR9RL3k`Ue}QmHTi2}(n-q#ou;RErpc~y@f`eL!2&bIK2Dj>nv!6?z7b3Ul zTt?oJYR5n@_!bcjq1D{PZ-kDskX994%Zx`jV4hDB`aDY&s52dj3JNeZ;Mb|f2hRCoAqePGWr8i>U}aP$+-dGH`(Ck>7x+FW`@|i%sKyZW0Ef~V3~=ON z*Z2z9x~|EP_Mnb$Y0EMDvMh`VL0~q-1FR?k|1JBl2RMJ~V;qUHBhy@*CPPn{Na=W@>|0>(ZEy!(!KT2d?Bu_ohL0A9Nq!Hpz5$cFFj|1pk78z%DtTpgOiZO4eJ9twNBhmX~WDD_%yv zG(ij0lXk@LiO@F)(Z?S>0Q3z2eS@Fl*Ux!c0DXgRe;A&BSSepMJR%oGnP(!LLcXWY zTyH@Ec;>C{O0g~qmg1})HzY<)uB9rq8{b5!XN?z@l%m5NMXbyy6q}cXpN`n1q$Jps zM@6Hjdx&e_Z9&K$GShZaQK2E4n5tZsd)rW)}4_ zCYCGscK`fH`sDvqsJQZoB;Dg9TvnT%8P9oC<&yf6inb93C z5Dm7^GXWlNvU1fHSy3HR2EtwByqYig+pqr!Wmey%NJNBL32zl^$T1-mA$j%aXW-L@ zcfUH^I}P_v!@bkKh%wwd?QB;9zb}xzy{$g5b`VL2&0;5Zrkl1b4m&f;(RZ!JX$p@WqQD_~K;{eDNZP6L}fN zi5!v^hbvKgSJkCuLKneQg!zoDt6HC+P)od5jZ{!N>slwogu>b+HD$2s5`J_9VL8?} zot_?3={VIn5fYMtIzphFl#)$^pfjV&X>B=(o`K04c69c<0z_I@J`&1~dpUlsn9Dqd zcb*-O*c)X-<|Pm28z(A(8|u@SjSe&S4^LR{G&jIT#j3Kf_!tVJvl!lWU8? zzbGe(y#IV*Z+C!g*R7GF{?>ib#l8Q(BrUS^U-5#!TP?)>uh27(fcajpwC?@j))!9S zqfiD@6XEqp+Y(*-ov;u>nL$Y82H(r4eC|}o5d7$MZ&t;`U)~P=as@$F>hIM3HrK)z zuKQVM@SV(l?&ZRJUVZqQ073@`YKsHqtu{qX^dah*LeTiZ+b*y6YYS#~w|>@B@tD09 zwIBW%TUOmo?@WCU+{Vn=m|F!Gt?Z;=C@DF$oz4SJ>gW-2=rdkr8 zQZF7E>0kRO&7Hzt`4{G2?zx*#HW*mu^Kf2Mmum)PGCia*sWf}uimBT#MS`Ax6kt$RB zK$r70feiedF}tw9emLF>`$dqr*Ahs*0ey#PA%^xdNyER)k0xTy5m7Kl&>8#*6W;?C?b`1F?4jmciGP>g6Q@Q15G3l?1~_`GYqVo zFz{W%KobcByCMkg3UAW znwXZ`ARM`9L`W$#JdB1;QU#7ybqH4Y$hDF&*6z6BMKljCTOkHXL}`nN#v4I=&p7^5 z!(@S%Xq8zs2?H|`$O*PBHX*9nxte2kbWxkKDMP6!S~H_fCz(7_i`9)Rbd2Q(J01*Y zRk;CIaH@gqc4LosUWaT;haNLhN})`Z?Ov%MT9E(^P%c0>lo|zl%4MFcfVahh^aWxn zL|6K^U;mLRGvtx-cZhFPpY)h=&<;4dmGsTer6`3Skt&%IXp$RpX6F`aH^wj%OY;>w z{C6⁡=EVVS+(Jgca(t4wXVMpVfqbA2 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

{Whh7EP#uWNr=j+?myd%vjt&C)0? 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 z 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%0D`u_#6`Lz9V*m%tZVAimbMp=s1!G;B4V3d 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π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 diff --git a/build/intro-to-rx.pdf b/build/intro-to-rx.pdf deleted file mode 100644 index b836299d3aa89dc81352c9ffebb769d027578354..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1519085 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%0AwUIaz$$(YB>X_6ym!UN@T!a^STW8L5n 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

?rgC;cbz*j#q?umnC z3=l9;r`-3d^cB!F4ZdW-;l-ZY?7+F7yKII>addXV(iE}TS{!KyyC}C<;@9Ea!t%y= zj^b$>?HjY9JEcDC_Zbd?z$+UxFiHw3-mf!DaC{kB5kau|LH)g5J+-__Skiez%;j>R z9ivlG(zT@VwMV3yRItwC1Ef2HUx&VZ-;<%nq0Un>v+f*0+1EHhO5&ejMDp1nh7l%% zcRafSHmkv>lR>&}Kda+IT>@4q#sO!rL@EOU zy5~C0wWsS*Ya#fxcor%iMv)^geL4tHv=0Oyce1wNT-d?|iW_YbHFvxS4gsek`R9s= zbtVBckHHL%n%sToO3^%LN-ur(Fip=OqHNPjdc>raZU8f*>dR*3>a?1X<=9qAlpmtm$6eJpj!bj!_gmeBVqp&a^gy}sld9Q*AVu)&afsp7k^Vk`M zJ)C>3lS@bqXtdMsUZTWn+FqL2Ncg^{TTOX=K4e?u@%i-coo50QxJj{1= zx&Sy0B#o!ZdXJ#u7FvD>m0gLJ#Q+wwWz?vWN^)G8V`DOus^QyG?jGjm*VyhZ%h6u& ztKBD7;}05}hHV=iCNyQU&%K?3sq!pM>{z+M-TpNgqnnIbJ|Su(ICbcHKby$50G8l> zkxSHH)V5aL2oY2hY(7-lpY=afZ#eehOj>2--rVps9f2U{lHT8(=r|s)KyHDo2G!<% zb-cL={9eF(Xb02rgO~v42TYS0D>v9(y4y( zoX0g(HZ7M>3?diT`0F9E$_!R8A#yg`FYkRh-4i#eJh6mS7(3qu@IGg#m*nca(O5*eF$T~v?TUTM7l8GI@YI*+eF?28@p-#~d1dCGp=)2oMm;lXsDmvEC48MY)y9%Z8Slj@(H?m9?X<5#N>^VxQ9W#hKvDrPRlPOE#f_4 z>cvVntq?^h3$I35^HFe~!jQw}y0NEXp~sOX<%fqS01LaTF!jfcBmURb-4g0q08*d{wu42!s2r`=>D1_K3aiHU$ksAH31;*& zErrL4A+5lgj5 z?rR!ZXrCxR=@L+iRGmQYYsLXx zL*xBDl)w|@G-$*rnpk90Vh`QIeR~zA)oss;WU9Mqj&d*En>Z^PK+~d#{?@YIGV$P_w=&!&jWNYl)hib56N z5e(vQ{G<5~g+}63H2V|A<(7+H@LZT@zse38X5phISa(B|A;I$?7PMv1XjaA9>u<#2 z2#7=pE$&Uto7FPZx%dper%Q_$lkqI{3Eo!(W5A<+JMX68S>MncKu`-TL64Ey2Tdg+ zS;S};%~0RrwqxCl%hZJ{*mVL%@^gIJix#x{5EP2~2@EsfHQSYjPmFQs~c^A~dyITRjKSQ!DXp3O97u>53hcn5#=Oj-N$U1GL(gHkVOlw=T) zz`0g@1qaZGZSM)_F)R&-rT~aiw@8!A@z#F;F)Kxpd|9v!R2GtZoVVY;pO6O85{_2^R5v?WLo%vngS&_!OsOw*7cstdy}ZuTsH# z&1)-|Jn4D+0LrC!0S?>2)I8*ou-7Kp&qc~v2?w8g>vWL4#qM}SwEd!vq_gMo%;G+h zCP0S7#PSH7#Ydf=K~E!v7Y;Ud@agGNYk08Evik7Q5kNqsp@8NId(qoEB%(5xYN9HY z3d(AQ24?|gSwVqdoM1?xOr>O>UB#h(JoX?R9)f-A^D~bsij&16Zz?un7Y1+Nh?hs@ z#laZ#`bHAP%^;;_A)@xE4UEDTb-Eg``>YbGM-^VE-x>8QY1jd4S&MBnIr~(l37x`S zZ?zv_*i6%Nz60)*RqSNJ81{Y;)=nIBzF9qM6kdhoV_%_wy11xvw%#iOXz+6H!=+zQ zQ^2jp_MSRrvou@vJGFi`OoG88@}iWwYwNJjGZJe<%h@4=q#cuh=^f;|UL>SQC<$7j z*f$|+nW*aQB-$#ppVDHKj>~Hx=c4kBEL5zdP;f5+^W7D&gv)3qc1+s~AdXb{I|5N) zvsnOfqYMk{FTx#EE^Y?;<0}EpJ+?w-r6?f}-ysPm&EP*|UfJ?(8prdRavr5hrzTmN zgpAvj*9F`2arUzIdl<0^kR59d)=*gq)vvf{__G?9lm8-xJ#dI>BhnUMo zTf5XeY>c$9Y<)&nN~$^G(fF{wE8XA2dH-5PZ)g9y`PhIqfWVM<$Kr7vG&;Q7-8X8a zUs({3e0#->6Nn>7l!2y*%*w#;3pq;6e)w}tiWKY1dGGWEf-iT*&*Cf`&)W`ZqbbJ% zM40PBFyLdaMH|JUz{>4;FTx;L_NNWc`Ta4|>$~EV>Z$z1?LE(XQ1}O)w-oD#vMeW1 zJ~!|w{1#wWaOmN!5@M3CWkPD#MtL81FU2$Z%+>SC<+ow4DtzBhQAF_Lwxci;K@9N7 z8TI8C9x&P+ZGmZliO)k{Z*zN#jgrPj{Z8DB+{G5LK1^&6l@`I}QyIyjF@0=fH+>P@ zk{=#rvy2H^;@%kMKJG8u3)wkLodO5%*VR^IqAy@&SUmrznW;$I1J!$kb$e-@%W%)4 z%ru4ljWZ2g`U1jSf~llWp{04|PQOub#cOd#uDMOe2s?!Wr%S|CilMGrW?a=9-7`w< zykj5}W*ID5naUn}?{O!TK1bub`O0pKB%C3E<@-drT9eT?jg(e{sn?|tiam;;(__o( zR$Hb7`I?89oP*($pq3|%I&XFleC0LG4gy5AY-^XG!4qN#d!u}BHH(!tVLolgDz(Lp zM(a%25J-E&Xh6eIvKgwbo%-ALg2gEw(!li?eYaZNTE_7hXp+Q@Q=yP+AQ;%~fDT%I zg-Kz7j*~iy%lfWC$WT&=xeL)AsBdVI0SqrxiG4wjUA`dB*g1AOi8aC3j#ICxR z81ZZ+qE5M2A^kD#`*9z0XVX>J+4VQ+b8V-kzioB>U9%CE_axz4NCF`HDj6h}@ zmiIxzKVn$`|7e~6*+l+dPR$5pcpv)vi^9Ks?|*{-dNc0#vc&JZ(SNtyr~g}_)_==O zlLhemminI)dvx!6lz+2t%~MgeS?WdohnHqb2PS0i>E@w6{Z_5@p}4k`p55d6HV9F| zCNqBfhg{t}kJi1~`f(KE0$Q+J``hCNcb9fUdzKJ=?jO%Lx0^Rj;v@1XXfj#)bw|qY zk-_-}%FzK76IDwy$2RBo?}q$?Zb=#kWKgf85h+e+u1-u5A(>m@bu%kJdc4%CZEzs+ zRITsY4&%%mN=wz;=0-ePUM@BtZ#VCtKf&-b`2Ds{mjoEQTCjGxc$hP+^{&7(kTDE) zz2#x3tHQ`9s_?oqzCGB?K##)SycY==%*o-KAW;c$iaq~7q`hO5q}#eQTI#a9Y}>ZG zs>@cFZQHhO+qP|Vxy!cgy0zBc`<~usukX9-ockk3j*&Uu@y^U2?-Ma2W<-wV=}fCz zTdGz;_nwC;HdPmeJ|dY$3DcbD)wubaWZgu`udLGxFg03((e*|(&17`v!>V5=uQ z_BjR9P&(G5Q^&B>()+Z1>!z&&d3@&($}e(shOL(eB2xoHcR_uQIxFWXXAL8LOtSI} zu;%&(ni z%qMn3pLyMiTm}bkL*I;6UTkH5U8r|_yr&Qna{zLV6f)6d{XmkYW}DZ}R3))p%Dcjh z1>+HSKg{;^gfXh1a*9h%4aCIG$RNE2c%aq4&Z#>QL>2%Bd9U1S{ri$&ODJwBMTQFeT2x zL4$U0LSITZBO(`GJ6)V!(9D*N*3fIW#iEV)s=&WCu84BlBERHkvFA;flYu%ju)lZy z4TlcY(Etb^hSD>{{y6_BOORDL0CyE(&(J|-o89~%X?7=RxL<3Z0%m%u23Tk`FdQZp z>{2O?v1h$@$)d?|Z>cs01`0Zj2%sUA48qg$kqU+iFL1?$pq3NAJl~rqoPdmK8r>8R zvrUG{5g&ulVy`FHG_lL4;#MT6Mp3T~W3fFpGN#ZaA&C*|dKz+o8M5_P=8Z%gUlxb% z!>rCvYBjJyk98W|V5QOGqiw+sC*%t)Ukqr7+5|$#hqT%q)H(UHRv553dEN1C87fN| zHgK>+U=2EWPyC49**inH2scEA{s&lWMoM2b7DfGFE~pNvSByoa1T-|#ksfH{7!+!O zAt1N0N$O8?M<@TRGyKBiPi8RPw21hki|^FN-z@h`q`8_dNe=~K5V$I!hg0N306D(v z4ltawlk_MtR?kx^B5k)uPp+nN5@BsoKBEPF!Qn%gpSfP$^;me*@{%k+3lJ1J;S*zsJ7qd-n4H-hvo?&Mzj z6#e1FCNrn*vd-WnVK^Xp(vKDou@6Tl2G3c2s?t8wUpDiz52pylT7OVPvo4-+6Ytc5 z?>VE){DJHq&{MZ*)hj~&;wPf8Dp+~hy|%*MrnyLZI=@tLHJjfwqWIvui4>0S;H_!q zG$;kFZ>fpr4(pX79VD80BZ>{op4vHu!8=)>p4-afYDnA<*H3^jkzp4Y1 zEs+EyBQXJM=1N3VxAU6HuSA3nb>0Q{%sMuOqG*RObFnx7S>B<7k(=pcU9qCL6%78! z!qQOPJLp=Y3<0REu^34?R{zD(N)USvVfOi0@zNyp9HTK6_o16Sx z$-9X!2#+_Iz8QrB{zlU>_L-2;e)KJVPpUzt0~GhZ3d@XW1IvQ=&_XX2!WhxZLo-)v0o@* ze^57dg`zskj!9l71_j+lQV$bVvV(ua^|aw@hlw3e_XUXxw8Ls zsskXNN=_aM&aRG+ek{PVD<-#d@ynSh@LCY?+Y6`iT8ssc&Fn}d5qLJwC?b80D|2T` zbr~G1!vsYvCcJ>WqBpS>R&9tz`Pk$&K!HxXNw`LCl~aTj;Zs~vJ{Noua0ZUQWnEp~ z7%{50Yj{1*HW&Z;Nj z_7*IJiIEQWYFjM1h@Ohmvm+x%>`3*!yM3Yfe(%{3Dc}aeG~a>oQ7pA^5I2;wM|=Ph zSlY&OoX)EYLHM_C$waYPnEL7c+r%J;7xP$oW504Mm2}km<$vIwkZPFs2Z+_|78Z%q zKcCch-5S#|(CfoA)oSdR9_>{_(w^mP3kc#jR25fIn}&K!3c8x(>YL)`Afph)H=SXJ zrkLu=ekKX_!2u`{o$;CB`#VZ5vcrbIWBdf~iXG1crxOvI_TF{C2lsUEn~^;QW^AwV z*j}07y6EysmzPN8%SxH)s(HD;VjtYpgxXJ*P>xLJjF|=UofOp?&O8LyWY3*jC4&RW zPpbe45M^ddbY4KU%{QD#V78ehI}d^R>A0kF%v}?|p$nl|L@k{{_{#`geSFunI=Z?Z zZKl48%nMly186rO+yIM_4$iKVtFk6zUS8J!i+3Lc?GBwlrTx1u8&B$p?ICaOA~Vk} z?7Y7@8Q-4YOf@~xDgJtREtUv6E|pf|q&-GJO0wMAoU&a;WT=tHAQ~yQR_226mygYD zJuZkXh3s=dtP`CE+vK6keSZrnxs^Bb%Z+0C|F(HNMn*K9{^WZXRr&kz}W`q7$~%GWCe~ugIzfi zl4RH@PDs~@P&JkLXk=i8z;6or+Xh;MAiX&@5^QrIo_a1U9R~}U7CF0$VjW0hnN?<{ z89^NL>%K9K-`j^GV}b=KO5>(P5UQD<%i*t@s)OlCBwCMGaXW=TsS^WkDEl5~l+nzg$2qpDcF zmB35vS2gX}ZKIm8SL`dA7*w8(sKdH0>yG?Dn+i}YiV|j$tR=NVcc!%~B$u$__`rf% z-od_O-A(r(gZON1Qb0k?CVBC?w|Bf7Rz?~?_)^6eJqmZ~#^vSbzm>$Nx~Wq7*~M8xKT4a(!Y)7iMNNa7?=4q(aAn|O~;4-Os!;+ zr;hNsY_xbCF2rLAX2uc)d7Z+lv;Bn3X$+$|b21Qj*?5N0{MN8G#6HrxhjkjNlQZ{D z;p(X1wv#t@9STJwM4hDc@#3RG4Hi)Tt??Yk{B(+pqj%hM>V zLVmBpT_C^}$khZyMrE4mz`$uz=m)L*`mW3IhNKHL7tzM`LE-GjcrGvfl^-wGGp#Le zy+T@`|9O|`^#j#Nx0l~#YjwP6SU#Q42x&R+*avV}x^(}4l3rH2-&KgeB)$J2H~%Jn zu+sfu*82QN(m>xtN5IM%Pwfvb$;{47!|)le!p8I&Y{{+xNh_mcYhY=Q_n)MfmF~X@ z82?zu-xNRo8)5#pYyZhxnHd;pSU**p|Ky(kjWPe_#h*c)bf3AR|9SE69<~1&_xyLZ z`8yN+dkmBQce4IZhDp!*>CyX}40B#p-0rh|v-3o`y68J2%J_p`s^Or;wiJUXW5fIi z{)kU59t6afVh|J2v)e8wQ2_Vuc)}5}G<7NrkffK#`;~ziCX_&vSB^&)hURuysy+r; zec?p<6ilCx_HGs+TA@TE%(#>*Pv-_rJr2T^pGzzgTXt7=jF5pVq=c*(wl&rXG{T9T z{j=u!ZGFi^x=(N%eZNv=#14I! z3e!LWIoF^QEJ6k3oam`O&#nQmZYAOP2#PC|Q5#1mb)w8;xk}McD<`g@vQXGc2GJm}QMUy!ct>B|gYO5~ycrqrIG5rC*9O5H zl*nS{!OML|?k?=5;clW=?oxET4g1JZef8a*&|{y3l-Xqy)0Q@2*A#{O#-B};84>hB zN>C{$s5dR5?PjiqQ%g`J?hm>4umyTS{f+G`SQX*AeHmMN4o3}&zu3_l-+eGv_lwKd z1Ao~REI2F;y(Dm&WgCZNpA^p6_@wl~g2H;wv?W{U9!4Q}H1((@1tLoq7SyWNb>Y zyA>;)K{dWohiPpr_I!Nj=Hm2w%Kkw~VS&e=@eBBYiNMxkekCtgJwMV>85rf|Q9uVm; zs3gQ)&~L8m(3Z_EdQv+ZmkUeevd1p4PcNl=DVS6z(qP=){ZKDHu72&!yJp4atndfP1>u&$4Y_(zGZ*| zpbVW0ep{5eT?rfE0Rh>7>-a3`btRmH)fUAno0->54GmKe$=GTiRzMMjz(eHN(oYv(Pnfs7Kok+h`G=qUTz#qGp8zfACIlVyziwut3+BynsHq_ z_n>IVSt=YVaytpPS8zZ$=GYn29-k?(WICT7S%P9T8A{b-dH}t6;Egi9t^UBS#Zp`~ zyQR)1?G2717gIw4L8Zkq2XFT!vy&os@$0vJhpq0h$4KwBVxv);*5xM2x09Zf^ehhu zBOga$U}{WS!DIW1z!~{sP{Eq7X}a7=bp(pP26pZ9GnKeAxCDpVv`^W|f_pth)Z@Y_ z&sXQhLmNOe2eM9NB?29a=NIOFn%^&Kn98v#9@9fSrI$}CQ*T-iFa?!{q;AWV=&X?f z3&{80T%QOd7h1HJf=O4n%4P}bhRmg%9sMwqc)4crA;AU8IvV2AUI5{>SE+G_VvliR zQ@W^LDBU{ah=5SU->66PpJ$;oI;-|%;{o?Ey`IOco6u|SY!o+nEZHmtGk~E!4jPFk z&bkwH>Ps$91DxG>YXGY?d!I;_f}h z?CdDHNkNroD?ieB&s4RZQmHtNHn~vmW|q}n32MS^kqRW@#diW=CtH$tpKbNqpt6y- zN5-!j)=epM1jKOtVSLci3X!PJ6?AEKyF_!@d{B0P{+%=PK#}TIMmH1 zk^b9fZq~QZ!J09Zc!xrPSIt@S7L{-S&G&P3kV(wWs)l+gV!K+mdDE`PeQojP|*a$Jy6i@irM@e}#E|2M~Xa zdHx)?{|)o}bMOCujd|$*+qO3=-5=}tdzgon?ssRzUqg@ILB;QpaG&K+|F+f5@QL1- zKkK6YytnXYfj2Y5pI#O`TH((!-B0B7=Qn>7mi!JM{{>4J=-K`*EICtM`=b=x>p`oB zXMRvO@HyYV9TB$?l;B7_Z!*${oC}-zjQ51^Twc%?Uqj z0MopehYJ)`L^!N-%uXCDs|(qu9qGDTVX^fgBH-Y_1k<3h*66kaj(i?b4O(8=0rLd9 z=^tIw!eq+bHKaEU3Y#cpb!OkN zjl1~fSn!*tXcwnU)75CB*j?=*{_xhyb#S(92~cm2j!uI-Mxim_g8#APY5@6w;8d|s z8K8psb*=_Ib(%$kyrH6(H!0P~e4xXqLgcFbDz;i^N}Nc*i72Ky96e(+YTE{9VAnLk zQ2#k8=?km>NYzfcJM#XQR=_7EncbGFnFBB!LdH=B#05Ova0asVDx!EO2t9%C#lGXi z@e*&$d^>lqfgagyu=dq$Z^F%#6{rVk=EUhLPHYORZpaBhw2`8ZuM(H!>|^ck*A za#!|~!KOaZB$CsnO96qAO+iYQKv}?UYQoSX+i#@2#HW$fta*ASyDk#D!eNLyUnUlu zPaEb`UuJ3;68KmFu=lY0)I%s;rH;Ple4iE_X3pEdx+@;5H-^{%jz6_-5M@J zwhADT);!7bEnu*1DZFYVp`GwDZT9U+VUbTVku%iRDB z<$l3D1q2RmRSuF6M5LQQ1t{iJGpBE%&LM^?a=o&{oMX7AhHQN7TlYgMRtN>A7bl=j zkV>E3gGlZ8J)+j5%87;h+yE`>*7JJ8c<143ump}vXuWoD6_jc+Z=;EHOP&$YsrCv1 z(Z_Woxi9Np!I?eVGC%?3uQ;DxIE6S=83h@dPiK-ApDe$Ni0-w#RhDVVlR|c|-?}HB zNlh*J;;Ci?5C2bcIPRgfF~wK8N=Gu~w6Is~$xX?50T$+OqUGAl&(D>kRk|p9VyfOYGz=adMCE zW~65t80na>?bcchZr0Kq35Zx(&W=0QiYl@5?1ee&i75l$vNFOA{9iril4H`&#jrD# znaU;VfYY%VBp0>CeBkkYk&X;vRHGRVZQ?XqS)4O;9~PEW1JaAx^&zwo79x|=3Bx(j`FK%sP`tqqW!#CVfjaFAPxVkxR$jbPjM4q< zR0~r^_3CPU+%_OUmGe&--u={PV}j|#<_JP&WQ0v^8Z=)qxHis0T{S#aG%4_XFAfhT z7$A7K)KaOc=dRjYHN?ImEuP7x;L$42y@_|wENiGP8hDr`b!mBcU2Pw4PeDOIf99dQ z&9DW&*(Vns={9sc-Z|B%^esI=Aska_thS`A1o)80{G6^tv7&vq!5<9zK0p9fr!wFS zN`756PyAvrV{)+XsfIW5-#D|i}U;$6$FE%~n9#Q{)UAa(pDScVKOfnI9F_-B3) zN=Na{NvU&O5(@0=wukJ+S@^i#eP=koy;s`Bg(2Fi+|BzAj>_YJIC*RhQ7qLQh0mQ7 z=u0DI=J>covsh3{eCD?D2YpyJ5r+at0O;zE!VpWf)3(M;_^c}({bUY{$EB6GVlW>)bN z86fWsVy(%_^hb;{lm>349q zwaRUxE$Npbt%7xaWT1*{1?Q+`p5f)SzP@aQ!(mTEaJVQRE1%ZlbjFY>Mm4H$tUr31 zEnMVtR(V!RU6tWWsvipjb0&*EX+j7xM-@@1zv1p|5>)IENnW6jCTN~QrNtUhA&Z-N z77`-)?rAdoI)mUOY7Mp~85W4N)v;~uxn}Q%amT^j<#j2VHM@JF8$jq{l;Zr0cHlgf zLsYRfwZ-IkD8)Tq2*8WMOWY`eL$dGt*ikI$QhhkSkkN>JN8QoX&vpgtCURv=g&n5m zGuzsoRCO!b`F<4XiF5Bzhy-uF^?Zn72=t z0u~t5O_S-}s_mUQF^fg*PAp$(v&DIiNVFcFeG^?ZkeE{#HD0qcL}6I2xmzCsm%p8L z(7%$tkPukwHEL6kjg)xd;eui}9tn%{7Re%J!8Y!l1*Q>}lxU|_xjfyM!_hDM(shb=yQ$WKMg{laPJYx_WwyoW4UHQs1CCgu3)RMEYj@zes6X5y8Ak+nu+uemGqc7nF>VBY zIc2EjL&1L}I^m8+3`A3m5SdU1zS3_2X2e`vIt@$Sj;{K0s~P3UTn91qSLE1+5RvCD z6CeRU;IK63!{Pl*AQLK4%xo03)d}M5#3l1-$xEO?3Hx{Zj`bcq4k$!J=n`Sy+Ie9B zsXZGnM`PD~QE8fcm9DGAIUr|@OIA4%dcj$@v;xQdVu$@0x^lGJUAFv`H9e#N4nrpS zg|eDLylgJ$(fQcP7tYa+WvkG2uhFmXU%lWa&l+y6KSqmsLQGgmi{kc~xYCL?hRT@xD0MxQ`Imk@YR%gny5gf35F~KavE>R%nl?YBEf6smLpY?Iw<2h7$_s@%t!*C z!38uKV`>WXlxSWq-(L?FnG7_trPenns|MHi`7)C61b(QL%fhE`yenjl0uHFt>SGl` zy!6aG$3b7o#fI?&H6i1D8&)OF$C>mT8Ye3d$eTfDt-D=(yhTmX?ND*@J4hS?s_|p7 zMphh1mX6HOcTi1W)g!JBa&5q$fge8Ik!e5x!b5l&P6twY%7g|cU|a7x!&(^7?|#;_ z=oZ0RYRJo5o(V?=F&49`n6+TV#?n=c^|MV*CI*~Eha>a_NKL)gJ#NOt!YEWgl6&?v ztct>|jL0R4`o_)E-6)=|g^&XXn&WN=L~rfE!5nR5i|l99sRZ6016@{C(3#4`%(-c9 z`;#rR$zo(!loI4Bdz*e&i57c>`c7^D3@(5J_^09!!{Z*aY;(@4?n%AhOdW4BTLETr zIw3MG1lG}3D&~?zUi%Idf|%+K^#&@C=@;h}8U4;=`Y&%%Wf}qK$ovDljPz0_AmHvl zD@%Pe9DGcCp>)$%jFaT1$v|BtrJz1tH)D=km8}$3Df_Pgg!X|J1O?XO2Z~pRB83iZ zcg1}BqBqNvIP+knkk%3Id(>!}DA0Fd-)*k26D0C{jPgx3*{Sa=pz0%LET3G! zQ&XnO77FC)SpvW?)Gc}6p9LJQ6dM9#9Wmvq?O6SjK?{tS>bX*$|82n zkfbnAU+*6R_!HqKt$*pZQ1r<0e*j_z2phQG}T=MZa349Lp$IViS z4`J0ky@5|CX(b?(z@ytDsZX|>O$hhknH)6{n?Sfj&}A?w{sQcqGyZDn+~y$6gE;LE zbdmv&Kd6N1DcZ-(`Cw`!!|@>%97cz5kT9f)^P~Vi?d*_E1FtJtq1oRYer&{)Q{Lm` zXM447)rP&hFHsW(J`~B46s43yXQRa-#AMn`0Ppjp1|6H82;;qIEui~6N2qHok_1O; zyB#5SaH}1ko=FGH;2)yk8!j9G!dRMyfeS0El;=z~Zqtly!+kx@5tyZ*Gdhjh>fm88 zgO}*+?v`J;~V(7>zek%u1}^)utkQDQ>1Cd!8l zVIFKj9^#^&zyxsRB1*qoaH3?z##3`D_6l$`3=s47?flIfqVtrP(UljQd^mvcVNyx_ zoj`ZDC-Zvr>12d+JtXA8DmGK#A`PAUVZOVx#Ar_#2v3++yG*<;Qk*DmH6*njxbs4y~8P5 z*p35Q`n0QK&9-@;g8RZ@d6H6D7-;gsTARY;lx|^8KU(ogUF#K(u zk(5EpHHm+6A2q^-^a=%kH?qab`M#DnJgjJMkI@nj|_;?@XA(FZ+{%}a16@&8u zy5JEf#=HCTO>IcILhvM-{5dI(m#Sb}nqKJAqH|3HRlzut0UM3o=xKu}%=GcE*yHc| zCwu(O&-?#T&+(7D|KHi;@0Q&EIS*v`ol^gk2Qtuq z+KB(A_<8o@A9WR<;-{@@sUyfvPZ6tB#f~yb0yQb4*dF`=U&wSYW~l!6(Q5^Y4{jJH zvJk8Y;oRLCjW$$Ske?C4PCG9ccqI;cvL_RpD_5H%W?8D?vC)C!7*kYPh>Hh_7oh$v zs~AHIRrfc!(W>e0Xpw9M_u}p9Fdi>`yn#~2%1f7A9q0^0iE*~W*qma8ORsh)W3}IF zsYWbIx2$$9z^VrQctN3|vr*)CzGQ;!Kp=wnFl#`2zD4|?=XzPs74r9KnBhkKv_Gng zbbn@2;=D3tKS=u`jB-A+lL9(aTmkJfVl$YEn3R^gTytbo%Mzl>ZGV;%ICZ2e%rc~W zM{0MHu*SMlQDd3v#?CP!ZNO+}U{$Rt45CZ?eBrQKzWOosb#3-boFHfE?tnEB zTU{JFj}}bN#^XaYJH!^hb%$r1uMGSKoYRzPEL;lQ{yF9v0zN`{o_4BH-R}MX*Qllb zo%a_>GV<}>D;b{A?G9P}eu#|5?^N=tq%KO_Xx|cmuyw!z9?-^_Xr3+*w_2NW;aKHNCLOb_NBg8cND8;W5KEF&us;4W*3MNZ2 za4P^MM9Buq-mXAb&{URd&m3Y$PgY73p}2dra$Px+_5^3`fnZD18%v?;O_`;wIebE= zXue@fzfhb3fBh-ZndeI~3lh%%Dd&W6b-N^`)K9w?GsrEq%oN6CgM26~p=}v}^1+@v z0=C_~iP0{p&5o2Szwr)|6%=X#9fo>%BjMe>MK32Yvmj$Q*~iDJU}(4i_SrF43sV$0 zk6|4quIe)kwv|TDf|NTlP30e*Y1o-2ApX37JSa$!b^I;{d;lPq6GgKjMWNamMN;zW z`Z_^F+SfI0HM497ppo7fO1)b!9%*M%8U>9Gp7!%xL6^8Tv#Y-n%KISyJMn!5Mmgi8 zEH_fwVG!k78|&AV8Ur>5d&b z4GwbQS{B~Dhp8N88&0fA+%C`3eT84Mzi63Re?NCB}ETzqn(yQM1rS5G^#rpTCkjoT8 z6-c6B_hzi1EBi}`zc%As8eMw&Ul3j-4^^c6#(iR_r03y))9j@x~eVPvS= zK+$-eY{GNpu+pLVc{PWkIaxhaQJRzV5EH)iICK@T2Pq74aEQCRE5R93B^oWSBb_LU zp=ak$tzvlOspdTuA^1f?UXf)KO0~jRk$V<|X_){gdCyo$;0{3$b?aCo5JSLpKKr?-ww3u?$7tmM@RtHHJg~+gz*CeaMB|L6 z)@E#JRS!m0swCG{@(OaB-0Lws6vIlfmx=~QrOV??>`?xr2E?PA8`}f7t_FT zRe`zI6vf;V4JLKm4Oi#3>v(yEGvwn(UWyYvb~HxGCK&<38{1EGM5v4Q)To`zh=tLw zmN;myN4)mx*O6zBS<-kseTpX`fVyhVEiE3a$=9BqiICc5o722r&`Rl&tr6T`@h;#t z;Y1a)>i40MkdD8f?Q#zUvh(!p15IaHM|nVu5GIQN4X(@|?vPG_TBQ+URhTrePq8y$ zPHx5xHX^_Uqn;Cw=&=UFPFH%~Sc9WxHfwQ##PL^_iYt;|EGHe9xToK^S?+}^^MKwt zG)rH|OR0x_FS+%PP@}Af3cXGN7_|$z;CR@P@A8X!LA^X7$&6MOyHM?zVqwQl}-)Y?!GyJ*z zQTb~xHR+i6^xz^@+K0Jnl!2DlS1*3Kj;-*6|3ZsYUi<4;8!MNlGJ7?<{k^e#ifhx8 z?5*hNY`CV4kSsqG+B6w=M=Qr`oWKk@L5>&G;fyajX0yLev3PqTf6fsZt<#5|VegCx zw-Vhhk`fq|{yXbA9#BGxCU3+VHB5q*# z%1k?f7Xo!?$edMxAS+U1pIV{ch!=3M1nNnOu|Gt0y(!bWd{|#IImODo){J%h& zzr*i;>Dix!-G3ixs(tF&NS+T>o0*^a0~29Hp=9^b4x-h$DmDGzaA$O*Ee011#WRUG zX+qx~WQi)im#zrcr#GZ&Q5`*Au1;-{3V@FT04aB533qG}_W=+NBMfQVgQ5B25PG`+ z_TvENkvBU`DpMjz=UI61!P|N+B%ScsHBLR#I59}FX^lTGIrOugeO-je3nA$WDI(DL zW`i|QSN`F7TkAxB{5Ib=0{~*3Lwo5_64i?b-mU+u%_FK?;r#&-@4E}YIr0HwbL@a! zNxPPJ+PW3DemdWD0`#6V2QbWNgAEg(x8V8LuFJ1&Ag<|v!r;)+Mc8k}r<7lkAdT^e zpXwjCe(*;SAVbqa5FlUq3!qN{I^sK|pzvVbgLOg=tL0SPSeIID3u)Eev8CnzRLM^v z2_Mji4Q0Hko^(2Wc;44U+DAz>QLG!n%a!<1SeF0XaY z#dT{#+vY)=%7KpQsz%kgmfg-zgL-&Y+*)<2jld^;8o8y*Dy8qm2q+ywRn9^Nqr}x) zHTIzVr>IneI~d<+TZ8+q1k{6MNnVb13Aee-f?dKb_b#F&-$MJS73A`|#AFeMf)&$3 zY`%-8>~Lv>EetaCmSPTryRWY|0OCXIvKAX1SYh%fD7}X#-y_5+3IeHiDL_el>y+A| zO-KpT$qvlgPRh%b4EWVQ^?-M?s`q5!n5c;HnNOrjm07h&X(MJHacxr53=NuJo+ybZ zN&Q3Yt~aeYy%*(dw_OmYv?8t^liE5#L{uI2ndMiUK+QKGNf}d!S7&P=MOLPKn%I#n zum?`%moCvQQk#1EhQ_hI8?qC9k^}=o=Egd>tNz+*bJOmf>Loohw){Md;!hHcxDM%G z8(f<(X;ve_k|7Bd_UrO>(;wDRLnCA2=UNWL0JNP3HT#>G`+XNISFkMG*J? z6+lyTmxfwl7nP7qYkLomm*qCpjLU}#J5(BmpJ##Q0o~*Q$&YIU){Y8z9}c^}gsOwQ zComDD6_3JW7k4D`F~<;UjcR#%W7J5|Kk!Lh^uXj2-_{GgChtX^okNsxGK(1Pit!`i zJbudZT|nG;1|>g`5o;UD*s!5W?FR`rzh9fKjHS`7Ee5LI?a8xd4&3{q-Qq|c<~BPp zMKEh1>A!tiH~7pG9YWas`mJD$@AWU8iw&D#xY46MusvVR3h(KLRQWw%~!q_df#48af0i^`&m;Z?CzWmroO&i=a0 znbVOv{pTBDF8BQhpPMQ08RWSIoWI+C>xElpSA$b6s*7 zlWP!J=(USuA$iqvGMm6*5bBmKGfG&1`!-Hdq_|n3c-#k|r+OjrU(Kc8z107Qx%4NS z|NY!DE5jdp@!z*_GyLgQ`t95@>t{U7e|xO|xe4*N&Mp7r?tlNW{=XBS|L2c?#y?c} ze=Y0(-Dvnc|NJ*M8rFV@+wFYzV!kL}vgpr)_r!rP{>mpAkr*vmlRR50!6IRoA+WGX zB0!F<6=_KL=v)IJL#U+^udQQF@RQ^U{-YbyJGaMz&kvWTv!nBI+oKmqSX4|NMSTMV zf|z29KbJ`-6l~GulHR>d9mPS@Gn6EK=F;uu5uSLfNI6ELZxXh>!jh1rPj^{ZJy4as zu8()okST3q)=MtYKJKRM$_upcY(UF`-gF zx0`)}=*!Sppk+mChpQ^6WB+WSUZ^y$GmC1*>mG<(acI4!N(LEL6WC2Zefv4kU-w5_yK8CFmMb|%F$~LS zJ1kZ=_Z|$I%v;TWAP>!^u@!Pnyg&R(y*o|ds$9p0QMIyxe7-#LcsQ>temTc2E2XVs z!MF2m?6tZ#F->XUyGLTM%B+aNN8}1plcWULlh<=mHVHQd?u}}mKk7L@G4Dl;h1_Zz z-WjCFu+-{xtn%O~p6c0?o~<;#kRp7VkL2{f7%Of5;p9<6ciL&8A&P2b&K|iE*S?&*XZ2!!M-cf8bXYwUofS0sM&^cJk@XedOYZLKwR8(V z7#HMl3bkocd%WBYuwOP@rT`3i4du-adt;AE@3oRIZGe&Znz@1om8GRVe!t}PcJQ>tG6XjenPX2^teMcevHlo>9(fA zn%ENXwYxoFF}4Cbi!}!N;;b#K+!66^FZU2ult7OUB`c_me)TNI`-L^#*OZ`H4_AQ# z5oJFF32#9ID_Y6!F;(A2!G{DlR`Zm*0! zVO(kfk3>8}%yuZCMa-4Y$fUU2(8)lv`RIw?PCOG4mLc-nS_>&hHt9FyZr$yQ^f^ z13>h+zz`9gzN1MG4Offa}A!GH1H|8eoPT;Iq=_m_B$};CY-jHMKQfP|< z!b&jDC_0H%*wnj4{QKeP(9nB*fdLlw0~cjLdbp@<6PA~Eg9uD|hy9ppK-wLVBx2Ro zW~aB^liclz4p9)WE)ZQ@Xgv|6(hA$w1wAY)SLm!>Y(LOs!1%68tnvcd)u>+Xz6$T9 zBE(Q+4bITbQiY)`U`mC@rY^H-YxuTMvi__{94i%?*R_JYvFvqU3(+Mb!~>)-9c4@- zm07-)l@#S~PE3q)QOe^+egtt1(;WrW3?ly$bb;_uQDNUhFeB;c;B}#!qBVr|{$fj|Z=*Mhat*SbCZ3v9CG-0@@`vy7f z`Ida`45T+I*VvppV}D{eJvkxomv08%{=5+Bi($r@xe})+HI5Ep3IdSQ)Ig}vnuKDu zvXL7l8XKg5Iz+TpGPPBc;-1GxEeaj7N@#1vi$c?*N?348d@9ceClA3j@q9LM8TTDm zu%6zFIa%5?V4B7S@!f6Ddg(SDtdJxd=J9g3Bzhl+&M|2~{*EZ#H&p#e2%yM2qq5jC z8UcHK2~7)2VhHJ2yFt*{{+>slauZ+FzYD1vZ%-HGOL2_b?c+VK+dLd~g~v{fLaOO9 zJQit?Am0c)Swh#nkJ1R>$YA&-5sAcef9uoeG3tpxq%0_UP9t`lRke+kvx5PBA*a1+ z1do3mx-dG6`5jl^Mfr;#eMpASSHdLp33O*qKGahzOOAlF;g;UqiE`V1RfzvyU#&;t(RN#bn$B z$#kiX<(*&F2WW9c0XSKL(VJsA0g~MeDHQ;H=7YX(mV({nVx9VTh%2Y3Y#~So$sBYTC41RG|LRw>=*s6 z`$CDP)|84ngjXi03;F@SoS4C8UOF4VuAf5{m7oYc`O1(0Cl82Q1a#Ok3ks`TAfJ20 z%v9 zl8VE4qYNaCFDVsZ$li=ailRyerlp7})`s=z%NGPCREdmh;M}(^PlhhxTDX@l2HOjYR~pdm{k>RrWUbj4iGOCLql_?Dv=K^v1^P_ zNfkjy^E#F1UFWY)DN zt9*T1ZROZ=quRUU+w4HtNf<8;5*|Di(s|M#{i)F_lO*cN*+5m-moOOj7ZZd>5^>ZE z<9$bj-gq*mPwQY6&AT0f`y>1)+%1lK#T!#F%Ay*Zw3jj-!Bo{uw<@vt%-mG(u!gOo z(m>fuC2eEZ?%Q*vF?u&xQ$XCyj{+L_Y^7s|p~eM%&_h$FUtt_tiUVWqr{4aw>nIKz z8B1%)OH=o75lOS%8U8g+b#p#R${Iau*MT2yTuG2z=#vK-sfohtjV4LxaKf6b<*g2C zmD(v+twvxq%WXk;f#Tul1-a*eD3kr+GaGxsx>jxlmx_zf{==>%$QICgX@${M-brGo zxsrV!f*Pn?9VeSeNgUVbPh)Mw@HrlR*c=ZaJC;HPG@%htUGCV)))B^Zu?F&E{*CP& zCqpgx=h<8z@Z{MEhF{rb#S!Z#J zrwa=#G%8vH*H{6zz=q7+sQ3U$kS?E>_6G5P#qG|q3Odew7 zQ4h6iMJOl;J)NwtMlX#hFL-w~ZlPr4<>O1r*k-$nlVE(i#<*0Fg^XX`zMq!b+?B1K zNC|z6c!E@$ecICWp_uQ;khRV;Th3H-<^Um~@)gW~Zyp&B-iT=nE%oI__8L8bVHM*S zQSl$#Ol48TUosCWrQO1DUY4j9xQMS;`ysR(6|VCmo_T~5Pu^FF#Tnb0=c|kJl*#@Z zUO7iwwIlk#I^!dB624Y_sH*N}<#EAi`;;4wxpxkqY*!T17O5- z?v=QYU>0E@p_;C&#@V@YYTfAQ zCAX=Gch8|`4t)M@{3NCv(kzi!zLn*yynDGPig_AH-gmQkrv!9vkv-+E-hvOPiv8ej%V&({O-t!cfuNp0#b|nHkWjW=p_~z90 zob3;p*pa|Hq_SL3f=LwO+#gxAl`ZqI4qBEbY&WHH?yZef91KXKFE#sCobLkTz9_+x zK)&$UzHyuH;)X?`^;GU_;ZD*TZWnAXmBo&Uq?c-{xE;`RIVrN|AvmPyC_>4;Li!<4 zx-eOGukd^lw^$mmpz>`vVv}C;t8ONiu#aRy1%=36g@i*uETA#|ZvyvIRl&{- zL(C^r{XrOxZH1I1k2Cc%rZxKO%ixh^hKF#mIQk^B5ZU}IUSNTzjZ0X$a>>i0a9F_G zgnlS|_gPOMK6=vGFE8CRle?In^aP1MWo3G+Fz#}K!T1hx8ITS*&F4w<=X6h3s6M#8 z7LmMXXS!Cqdk?5#S|-1=TzvX*@Vb}?{c#PPa~Of3vb0L@QglkT`&mO8{Y%1}-0-A# zYMm@$ij+oygrbIg!1cW1^p1zOQJ@+p!Lesw%-;rZgrk1k|46C!8tv6>dpR{nyyTxx zIv3^FB9og)qPT?_M8{mjOSf5DSAJ1QXA8-#w)z2Kj0UiH313GYgL(6;|WK zUCq1F3uDMD)Q;;&*XYMPxvv=gPxrH%GBP!9Y*ECYYsHwtX#_3)DpQ5tsw29bTeP@k zOtgZ$fqhpKM7TXyRiULS4_U_?VQariH?uYWAKKpWJM%qT_l|9+V%xTDCl%YaZQHh4 zu~|tfwvCEWu}*rO?q^qbuYUI0=Zy0Q%<-M$zF++2XX3gzpeN_xy2&E(YCGW}$3G&w z_~MMXZq;+gM8p}lj%Qp?*76^Tc>_Qn4|0feBx!>5Pssd>(0nlVj>ty`)A#XpJa6fQ z#00p7t4jkklS6#ch%Z<}VMfE*Y2k>_LxhonCSi9Lt=e2E*JZ!qiFktZF|CJ$@e2%I z_-%`ixg{mRbiK@B>U#o<0uP8!U#vb6v6Cl0eF2g-y=x!qfZGc&ilEwaPXo$U>H9!< z%@e|{q@W+EMR2xhO~;F!NCIP!T7R2@ni{~r-?M`6cS?@x=V4>_7)n95nuZ|3hb={g zXK0P^PL?E|%oq1={DEJ#YG6Q^Qk56eSgtTI(z(l8s=)4D%}9!NL+vfhqATf1?Dh;W zDvcDtiWT6gkn=vFIAirCe>-jsyLtmo6HC#%zLOb}EO*;cP46Ih4dv@FN*H?VHfy5) z?lckvTjkbJH_je&a67f58et-)bO3E~=&QjMF1c+9V3&!fAO*1xS}?8f$UgQQm_7_R z!^N%?zL*5a7Cn?Ote{j)=SWXy6~_z2o-xh!gNyXbtzt~{dAysIPrlhEem^M5B*oo; zm8s(1NWBrPq=ah}D(u-l<0B_MqR9P01?9S2LYIU*Y@tcHWTvvc5};vsqQeY*E))ls zw1Z;-ZmON2pC(XB!qyz`&jI=ObbR5_3-?2C$93D%$)tUWE^8h5B-m&E9KOv$6p#u1 zIL2aP^gNcV<`&Qxa=$l<4gI3JLY@kspY>2Ej*_Blj1UHmdq!Q=DcIvI72oBE4hn9{ z+P7c1!5Zs0o$|%657q=^nWUc0&`@fk&RkU7^B{_|SJUq|larW37bPo1l+&#dWG3I;|=-3p=7&Dq;W*Vc=T>Ngzp@JVADOS zj_zPAEl-n?UG4hg9VfjA3}+aQFgI${Q{7eGDVRM$RFqFfMEUymD>1|YC1?EQ3&4nk zLW2mDCfhNxCbcNpHgHhC89CL!7N!YPOGwDck0~I^fw3NZhxP+*Phcz<6fWcWmSi6B zwL~VF@T$;C(IJbMVok&UDE|f?xlYFaUWPDchb!JfBaj!UTp7jaNBAYh&Y67vr?mYK zqF5x`fw@u;O2PaBIFduTvQG6EfkOk25?z~J7|wX;!tzo<0akmq+(;-zS8(YGl4LUb z1oaH*bx6;mIjwS~tJ`^Cw$+a|Gg~>%IY`c%v0w&^hIvlJHI?ubC9*}8!DV1=i3(ex zP?2u~9&{3zFf3t^JW6g-xLXlp{Sb~-Cs&TiWxurbjn}oC z^dKBKExE1R`*GV)%y8JT$d6FC)*~LX#K&P`&l|*`ekHEqE@VU0=y#dc(m9l+Afd%e z`fInU^5h$$qD!xrxe!wy0A%6r@F?g4~?b_{%rM)l=Bz9#qRQ`DdR}vCe&o&iUdT+cOZz` zku)&zI8|>a8hxc-8`!g_Hk-o<50Tv$OgkgOXO!PT=^sO9r-WC41D^P?DI(Bh-h@F5 z7hjUfJ5Rib$X746%GMn1;q*hOHw-o{U7r%S3Dm0lVo`MN#tp_>oPqF$Ryv+*5%#r7 zAUqFTOvSUVbahBcWwQ<$|65XAM@RmVtG&yZ$uD@|JMrY$p;dgJT_SnqCxt34d|`Nz z9BjVozFwZ3wwUZ=(`4DHI;1@FVFOreG%UvIS>I6IORkH8QBzx%gHZ9GKUmV&w1()` zj`4u;a3-~;O}so@@CB6-U%~fo;}w_)1Lu)i@O|>k;IQ(e(laX~E(CMjizh3o zq;V2IfcMVe1u&St11v)YtyvZEJ>!q;Glqy0GSe=anmG2U%*JnWJwEzS9T-8?KTJbe z$F5OHNkF_7T=}(e%HMJq^Eg5Ax|C?8&7GJ1aC6OKfwDG2Tnz*2FU{I|3EJ*oC}_?6 z643pgL$+MpK)4QFRruEX{HqcZlpsfTC`|wUHi6LXev)+J5Q$#(m$;ZDCf$~N+DLqEMSV>|Z5-sMs3ceV0)F#s#sve*axzwYT(UPK(Mq)aWQiS>TsrwI5{rAmFMPo->X9q)LM|`%=`?UYN$qLi&L+C%C`j1)7Uz@D_@%sN6 zRMY)m9)mOgnMMusry$T@oSvM2-Eb`Y;}~2ZcQR)+Vvxg>x z90LJ8^$G(_R{oHRA1PxCSHv+48elDj;ZQqQz`oLAi&ys(;;tc(WLZI#h_j(?vSJmy zPJy6gAEGH~!+->U8YG3MDDWNw$vd8LAUsWsapvswNp0q5^`l}^F&WLOOFBoD)*@A?#Q986$%lu z$cg3gk+GK{w)7tJ$GUldSZ`5Y#6<_dkv=R?m#IZb)jC3`!Rk6F4F~51fTX}Dv|P%h z;@}xJ*9)(e<--N#lb}ZyRf-s)g^nQA5z%E|^uVUlGqNa#%ta*v8%>zdOln}2sO6&- z?NnDXSlHRr@o=IkE7PzD9{qSqS_2{^WF;PBrMc(A_%<@h)o+%JlWKuV6Kr3Nk!Scg zBeg0T33Nnf@lm`Oe4j6(-5j5YMh`~=z#OFotk*-}Sw)YJyz@d^VA>2kJwhK(_4C*9 zHt}39R}3PYUu-Px!9jXDe)gx9?2}}|K^+oao=J%>`PnoiZxzZO0Kn-qIQ7x^Ush{RSr^hxpjac`&KmjK>*Q`EEC+gbr-CD|5c_iE%V0`+N z{ni!wi%V>HA{q#lA)!VXMB?)5*pj~&ji#;8PWP^UHyRe7`XeDJ zm_B)-K@Jjh1>IJHSu_!0(G5^WQFL7T{up*DU~@~Fs`ig)sacQNx_lezf@YL9W%NU{ zfu0Cc5-uM$F4>?k9pM8MN1QXMO0UDVa5I%by9ii6y9KreiG>K5ZS@o@f}>=TyI10p z8MRLFz%T&WG;1=&CmYc(YG~s_GT!N$&bcSTOv^a~X1R7M9SaXBU4z%xtvS92b8D%) zboSqwZ^I8__DZDyP$`MBI@6YOm#h16hGe`>^9zqn(X=(x#$BAz_-o80Z0JCbI2pctG$Trsdz~IvTn8xv zdkh7Z*Moda7&F%Lj{wV0wI%1*O5C-29~TG7`pjM9t@DA0%QcV(SNiY^?Dw@VS!Xo@ zIq1y=)BDCk-vNW+$bXUJ-Do#(=1q^AU-=1Ye~J=^cMOk{`Qx7g2uxk@8}Ps*{8IeF z%|A_m_`Fp(4UWA#;Bp4a(n^MMV&7b(*{eF^xFpx?Cozw`%MP<&9NECZ0MkKp8WutULJ7|8hB%LBY<{znK`Wyk5^x&KpwfE+xN5;z&Id?}s z<9^Yx_QC@iwW2*5+nQgc{Fo+LNg^R?-^klqt`n!Oukj-JN}c>*!77}>g65X%Tr-UN z1&QTynz*)qwwP0Qq&WQuhD88L402O{SNxraVtDG6U;Ui$>(q+H!JUkL1Fo;nf+}RrlDto9!gW z)NBc%QS_~T7(}P2zPDvNCWSrb zpuow|!CThNEkwCc)KjdIE6$WXFWCYEwsl!1%S`(B4}e~eW${1zhW>t8@aNyqKfW9P z(wP4Hjl*9QTlx3KH1qHM@IStx{{yiVrr%c^{%4Kp|CeGb%)c+v{bM_U@vm#Zooi^? z?y;izOw}ShGa}LJOGLC=cR)Lp{?v;oFlXAl7;wTh%EYuBNzodWv_N^g6z z?pd{Q?yB;MrX@MrS^DLOY`jxTN2n5nBjfe$9RU*c#2rflHDw{7)Z6yl1fX470(p1)mu6l_WR)N!_BrLIa=kJ9KBDWtuBjq*9%jY@Ad0vJIb&P zMb$3}iji9GzL4xUEMfC_8kIz*%q7LGhrNXR~P0&ZsV<~e6m;#Bj;kPeb4U^!SLSc?8wJ&e0B#*# z!CC_i?OT2ck##@0GFsUT&bhv-E&Mu7iV9Lwr3ScEr>06wph(1zBAZ|HZkfY!DI6cF zY3Hg)8E2PJ&yutg#E(PS57H#M+%43P2*4bw3r;WpnJ-9X#k_Oq$AAqDqZqQAdFo!e z*5S~-s5|-Y5|s$FoAZ6c;|Sw0kEc~_u91Qf1-m~2B#;S$u+2aN#w>!MnS;5jI;+$U zAJT$48bq(TUtX@CrwhAq8wMZ}5+D(U8J$Y;X{pPl#+E0LtC0vmYVQR8OY$+Kmurj9tJW#Mvq}izkf2IpdLd69`ns{5p^=O~0l8olr>~J`9 zw++pB-@|$fe^qo$jD#;SO5);j6f0l9vP258;FTdhuJR-- zlj9uLMneyNuXWFCi4(ZYjdn>Y8fKUxu*ft&f|#x3u&ocyyO$^Eas13eEiqu&i#2M1 zP^y^eS9_#@^d%Ro4ZEX0B3S69nK!&{fWKOCh&_aK|E(PicTXCVYPS{;9gZ{b4lci| z5Hs|#zW}j|KOcQts?KL8Dt1c6b!-~REiBQhe_YQrtezYr4eQh&(+sxBO|8cBydneH zphB1dFy+Avm>5;ufC+$6Tw(ffbx&4Bx~itGzYfxd$Km222VvS=d#GP}~py z0pepBm=j$H%`J-zGS~!8uCOZJexDnru%dtFBmQJ)CQ&soK$e4an9Ss@{qRFrtf zO2t_z2>vb%#yWmmkgA$kP5Z$EJKR6~?Y@XNE5{HJwGBVtWre;%KE3Ukv)Sygoc+dp^~&%F&)icpgd$t#Q8C!pnY3wPcW8C9VWA(@y@>6Dq3F z_0s$bOR@JgUmXfHNiA?Qe%Eg0as)(mv{lE;TuM3fFc zV?}d(Na)AO$j^rIa|i3ltq_vVj@Q}bJI^J2f&Ap?T!{pwVLKvz-d zpqkvMug9&W%w;C0y0J5!cIBpVFY{n8_~(4rt#o9Wla?4ly*1x9pVs%JpL48|AZz5W z=%URF*@Uq8m|ULDkZlo2Tfj%gMEG`x5Pqp#oXA8jR_iFMqZv9%&d99+nlLaG4A(^G z;gMTAF#ER@F9|96!$bS|d|MNfch0oS2z9ht4{ep)8GMJc?s2ahZ9g5$zhd>T&7?n6 z|z07FdE2p;xG|H z@4nWY?bgpVADKM@^nqO!bK9+};I$&Qq#qAWCRwL-;$V-Bm$fEz1t4BmM!wKb6d|wY z_CCfowOOPto@;m9i$9}&Oob6zd_Kk|)z7%Dnb*R3Jj5 z??aKTh2-SXaTwFYAvK*`v!5vB8dTK}LJHHX+Qq>O4;e5_uSLd%A;$ItJ4dK+9=qj+JswUY;<-pM>R%M0Hg|Jyo_ zHXv!-yNl+pi~=lM%<~OTCC^-d8~_W*a+25)-GVyyv!lb)_>Q$NYiG-;h6wbiqmI1T zcpoR$-GX!Q-tG4GJI;{_Hx?}?RvmBJ#Jyvz+?|wcYi+D*A|i@|`C}#2AAlyYI=p{U zihi0Q{&zbPf0S7NT#7RP&y<<|q!j(Vi}bfr^p8CL;*P}cEtP+b{f9>n!{^}!JM+KG z6*K?7{_r1znP@++hyP9L_+QKC-*f(l#xeslE&b=d$G^og|7-v1PlM@cSw2M#|1J3U z4cz~bGb1|(EfX8ZzsG)Fwfxr~{2znaKF?iP{v`PKm;d{s|DTM7e!DvPYnv%7zyH4f zDCIdmU7G%4t8C%3Rkp^8^r@Se-y+Y%8X%Wo=E;`0pCHSbZItnNcu0C4$a@?XEnHDx zHuCXyZU7jOM@{LXOAFsDj-Y-ee=BglqoF@Vw$4K(AJ%9l$9g=N9D0HnH4c1KRz5G80)^iVxVuydl*;Fucx#rdYk&%@vrBS$)cd2_bhml= z&FO7wt8M3sENor^tVmMB#LyzsfYPl&cR?yHHq$7yg?aI!A_UCzu}}cg_nXK!ejF5L zhZaioN~zXK;|AIuX_1_$u|gFe>gm%77hm5H=WNIlna;_}j;hFz*7B3`?+H8!UygC$ zStb-qq$Mp|WG6jVz|5KJcq=b{2E@2;puwKyGiCo+@{gRXbGc; zHb#?X{d(+9&I7F?kWx1DYaQb8>p+QG8_Vb#R4DaWDDO8raE*kxn3#aZ92wBp>95?r zX<=m1E!P9!E!_DVNlZ3OyRB7rHZu1BNvLuXZBS8=E=`-;S7_EPlw)rZ;l5V!_IyO!22X zleMlLbr(&6cIrT`Gm7ZQSt+Lxviasm69#IN0xR27dd$N{qrUPF`}cZK6Bwa8O)SE? z$#|f|rhBmv;)0D@6=~QQmEu`7GqPGC{2!Bjz^s`D8k2Trv8rFIE=$Lv@JbXh8wIoW z*@LDXPh<$}j5VZ9SfHa+dK`-@6Iwmu=J|aQ@L_@s#7tHa8adm>+6|KAF&_C$fo{;T z&y2u-lHfl1je-S*gvF1cuntT&^CSI;{`&^ z6Y*oAuL0E<)C}ujoJx>+azCKGrEO`uE+J=S)|%>zwH1L`^omBt3!bET6j9gvi+j^HfbzEwD~lBt?&wK(|IRIy}wC7PVXF& z57{FxM!A7HwJ65pVmtM0hi+MNIq9+bn)CL1Fp}pC%EG1`1;LJ1-||9MKUPER?fA*C zzTZa4k^443_mjG(GKkchs18J@mLPR7%*&6t2ae|KYJx9q@t}j%8qmPDu2!5- z3#)s`fbyp({G&UfBQSmbYDa|LHfgGqI!hotwbN_ZYR9~OD6bG^VTu^MUnlA+db5g) zBsW_Vw`Pb2cXhM5(^zS*QDDUO>CD(FS;j0vfEwY$d3WyALZPfm>D^G}ylO40+p z0r;ty%3|VbQ=aF+JrCv#ljHYe;-@!Qm^EoCDk7{uUOx}Rt1-uPL)$=G`e&i52cXk} z8+~Cc=Hw>l>9R8*U1>IQu!N8DZt~t{-X0sSm|-g0l7n^e1WS~ zK_|EO@*j%A(t1hz&~$!v>qhu3+<+uDvtbZ9tDQ*yUD>PQL@SF^TqJ?L*K3zbrqx-aE+c~nTu_Mtk-w^EDpI=F1GA8W4TQigz&o+2 zFCaxUc6R-CgMPsdf&;$Ehe3ZOu!YNQ;Xi}p zD$p;0>>6|UcD)bor|N`okT6LJ1AaAkeOLoW6U>iqW7SIJMAl^HUC+rsuW$rsfoGg9 z+gM+MWA`KR6gB$;Wr~p$6P%S8GFiX|c(le01nDlD&QaG_8%2}5Bi^G$sD%*}w=E#c zB475F{sN{~8jNgchebC-_$_KX>Mbo1l;IBRF}O+A|)p2!C? z`?*RjQeQ#-;JX~|wr(f{#2KCvPQeAcYLrfes$hIcAe)Xe8Vv2?}Zt4DZxzxSb{kWhE)Q6EwQqpa+-z*9O*-RP+*uu~33*VMcArqU03^2&WL&Y$?PTQig%JZ}m z@*9Nak33a7iQX?xwNfovwnq#wnLO(Mw4|_D(GR(69O)}G=5SLQJh952-_~x{CqAj{(r4vNg2~HP7Z)isjwjEAjC?MYaKcJe@MA|M2v= zMbZ3@3X5Hj>;z!ra?3iSmVMF^Vt@lV-zCq)y zd1@HNqp#H?S(t9UmvN_o4t_i1&wV*>$?%ST*(yKeaa-xK7+6Eo4>SCFpyxmL7!m!C9@g z52s8ldDV(nToZDYZfkA_fUU9hGUkG=2KGn~Pl6K-u|5$BM2!5pwO1^uCfIwu(P1Jg z(_PbwM%q*tYJJY^MM=M^j*LX;cUOyh1n58I?OJbHE>Li(IU%sG6Iy#A3El}E{9R#S zqDQfK63-6vC@{3!N9YmG=PfLD3-{e&%KJ=|k9NBYmS-^6mBcJIFq$Qm`Q}vld(jnk zPlk2#EfAHEd9+ISWGM9qycWB6*`IJH%kL2P=Od6mc;H{S^M7Al{#8Zbf9Fn?-+|_D zH1tOve~~+XN9BKw{X74$F)`7yeeUD`8^V3wOa3#4{r>R(7yRk5!}@2?`rpSgGk!YS z{s}s={5~J~4@omKej3`c{t2}HE2RHP&Wwz#v`id-7W)sER!J49x>@wU(7&uos=yDX{^$8Nr-)1lFo zwJ@%A!|+tQqutqXZZzTk@PM>yes=Wq+Zpe!jS9wbJ{sBJqqeQtqX9w(J|4}-@U`jQ z(}{(EmzuAO&^sOG-32?oDd`n0?iz;&Dvgf^yP=7fw6Z=tJAQsgcHTPJA$B=N_SjsN zyZd`|If;Gi@G&DsNL($g4R&7YNRLRXSVyn>cw{*Q1s{xo>{-ldV?|RYv1HQ`Q?> z1a?8F!wHFj-6n()`cMRUmn^3?LkyZgg0g~K`f^D#-G2a+GHr$8(T2Mw#=}4JUx*M5 zXFpT_LJqVO@384O00a4$ug;Dgq?9?b5H&uFo{S=a-pdJby#!alN4T{&ybTnS5xpXR zIM@flXl1W$_qZ$K(V4i%C?8i7J20iYDtXBQgPar0{eEbzR>KR;HejRT>kO59xqIJX zduyV}BA5IwJId0f!mCfV&6QjJOtdXK;$kCwi#NP%n`<4niP!uXO7m`Ob$utvC*PyV z6otz;(B?YWr`6x*2+6YrnE=5}5@!j>_3F9f*m8na$}O>O-L<_ zdt91E!4pJAF~NE+1c`w)JYh< z7&d55gjfJ<3;^%7ff2A9Y#$Rs9vMPs%)wVL-@qTs9rl7ss&N%%@WUH*`pde0E78%J zMgI;$IEzXPMhjV!tUTqVK6pXaSazD8$5t>!6AXqRJ8y!GQ3_k~qm0k2?LxcYEv=aC zIjd>1a`H@qo9tf2xR3=c36)tj5A=j2tU#s6`#Id}mmz6kkh(xzSs^zsF@#%4x_H7* zxXba}`O^E|nRR%E^$h-;b2YC|(~9QH@ypNoEIdw1khEE*`!9Wj9tPYEqBEJ|y#!U` z&?xE~4f><;JR?{Jwjta7O@EcVZM`aG$~hpJB2NKPFlYy0`Q!+&ig5vMb~_15d#DUi zCRlUR^1BiaJ*4}LgaCVeoAPgrU%@UxE*a*n9f40%aI0&}6AwW6hx0GtzDBw7G{KoA zbf*YnO2@G~RYr@)Wu5Z7!epm9i7lm?@eRU@o;_z4!};XU05z#b8%gGZ4aiw!9)VgJ zU|{h`Of%JLFZLk<+4N<%Gc>Z}_NF2i(A>m3fN|_-G5fN{^eRl!cU~oAq6{}r+Islf zweX#aQKP*^J~!e5j{qit%;(znC!dykP6Tb&+?lNvBi#;k-NF{KgWDOSWIQsnyfP!k zoUsNgu0zdTTp=2CF>a*&ej5tavBe`el%M)Bb!o@dY~uVUVO($@vB!ql&p% z(gdOFo0~#JVg4k!0fd2+gqQ*J)amBL?G8Eqvxwp1>%P@0PyA7dKl+`+VC%OTGK}%AVB81Fr{LdJT(KI=KCDdry!6dE2eK~A8Vh&|d z0AhfoT~|8ttT+W7Ec6WI(|!IC`eG=E8Ll0TbK(8tIuT%bs?<~2Sni$ZMuHGZf8bHU z0vwPxHn^+g83GqOr5u!ejC{o^#uVdRqtBgmXEtq<{AzK-8*A>^=G!o}?lQUv-l9=D zJz{vin?<3#;BeS%X80_EUf^~d?Yj0XrZywz8WB*g2F~onz*# znK_UneyA~(@b`Z5EZnz;4o9U9AKxb>HEJ39)>t4+Kb=ub$Opuu3zA~s2tY1u8#Ev{ z(eh4D6m!jKS*s=|A!_Gv#h|1R+R!5Ap_=$Q4dICTfs^ zCaMjL^|Dh|h8HnxYHjUfF65Q$zpuq?O4s!cs}iU-0~v@u8)Y8l1cV?X^wMEetz8mWNjIv| zF{>mdSvao{C9Z2;soRzcx*rzKIE9JlDIrlsksqAajOTYoVG7M`@ha%BRBZjI;6f58 zFK3xRcXJKBl-ge+3dSkRBxq3RC0WgpbMb>e`0_z$QB?DhJS0g%*_f8@i!uvGP&^)E z`b2^#*Q^=8XlH25vnsNvJ3^N2VbNS$)0)X#e(-lZY@C6)ujskY`R(8790byb4RkON z94Zte@y+Tl!X#YaxDg0aZ}x5E;S{?b2vNiIO5BO^?%_%!!}ouFdv3miJ8A*#FhmCa zqz!a3A{HI4_PkdOmfuasWDIVOk&O2+s-`0X$2w;<^#PPV;wo6%Yuc^XP)AQ%WLR&jW#AQI|fJV%wa(lA8`h2 zzxqXr)ws5Qo~)zG9Z*i#^EI=YO~u*ztNZ0xbPVnaFLD76X7G_0?wlb(bngN)D4$4l$SmARlA6#P0WxNvV#XTT#6^z9j<#w| zp+dTrJEBDV$i3(dj0~l!{S$+1jxoxYrXO{uba@PUQ-P(gz)lZaYS&v?zw#wzEexVB zEuA{>VQiy9W0QT1xu4j!yJ%4>6p@H$?-Du2K0qn#;THc4#(p18{RbHP`|{auJKZdQ zU-SNp`)I6xBR<97)p9;}ZO66YYwaE&Z$@^azE*f_KT??ydxO|H=`79@Cr(*hek3FX ze*j>F5|-@uhl|ZkK=!aA^0A-L?#nN$wQCz|UDF+Rf|ut*ElcQhTZ2Cg_2WV)Zfk5i z*W22Wn!lK zs8U0`##*GaWfoLKoHS>@xx5VwJ^Ue%!;k+9<06$D^d%f$0?D?%`|(lpm?r-coDN1f z!;Oo_;ama(NdoYE_T^yr5`9OXP#xh$-y0K}?vPu&|9giHFi(fd<`4DbBR>MQcgCI> zU0A?Wkcs$i%)sG-H8kho>F;!3PpZ+GaGxV<%>AmQ{2+I1)i_`+I@~+VA~?l zEzV4Oa~q0ctC+&JL^FqjGieY(67gW&8#7%BXvhqPxmz15mB+b0f+&sIyPo;( zh^WbOUJrrkuF3-79E>woJPg=UrGEnlFI7I4UJjLBtM&GD_+VG-bZR%Ij>t?z$S>sk z((}ChWkX3!Rr^*Av&iGZwOvkvR(+LGKzrHRUVOi7KhuP^j*Grj1IDw8CHFw3MyTpaX&UdS zu;ynUAWXY~k|SiCWXiq5f-sd1U(2lg|<*>}tUdedH(D*LO{;xBjl zFC@0|)K4e$D+x%w^v&Z2DLz}5b`Ax#Nwp%QP2>moW7imG7t!u&m?Oe--tYMQw-Vq2}8T`a-VAV*tBrR>hK(7NpbF4X(0zyP?1$YamF7!GoEbd zK>jMXU&`w)B&_PXCR0j+^UH=3R&gk~nFkjH6A)S^?%{%m_Hp#N7@A(Jx8=RG?T$1K z-j+^pb%}X-&;Ws(^4K^pGB2Ka)PK5Yh|-euR(AC)bCkFV6ma0qSTYeiEXS$X57~G8 z($}V!a{ruTP0$W;6<{yi@$SOc{`$TZ!1Y3#0TTkI&?(Om?KY63IqlQ#R=Fi!@{gA~V6#owm*!P^mNE5sreo)f$;0 z4{9wgLHH2yCIbj*x7R?wo71pH7FfUtt8~rHM&c8F{TFID#hHKVxn5wgk1PJliTj)^ly}60t*qH|BL~q7%7UqJg3-Dw13uiY|fh9t@zL?~S z6ak^8b9J?$hpy9&HCSFZGzO0={MvRH6l>#f`DJ6uNPv33vOh-btan4eH2D@);|DV8 z+zvq3>~zYKR=xDp@SVP10HP0w@aEct4n^LMS%$m~id{~tB3c7p)Wj8jZ+L}hf<2tW z(ebD6-7QzxG25)z@h!07r6b^~I#@3%X})%t$Ln4uDM5iI_tHRPeK; z$c;d~Ck7-D>TRcz3(8bhU4AnwwR_p_OOL8h_0hGauVs#186m(F8f+4wo4R(G^b#1q z$_Ip>r848g!0z}T?FL3_1(=?Mnd;FYdws`p^!x%}Nvppqs;OB=&emjMrIDg*vU<*6 zw&Ztab-!8gi~6co6X{Y>9V#Ub8tu2EiFhiT6ZuJmqK-H(+{g!Dt9ZnPvRV#G+nm`C zEg?Y)3<(yZY$*y>{&W-z=D0fzh(MK<{nQz@7GZ8cWwnNw%VIv|o{|~1q^`7!Lv>O3 zbzY(@Lt9rX@RN5iZ~315G(mX-8`WQNyG?6Wju{w@1yT~J{A)jn5?oPa( zB)a$TG49SxntZ+yLh&`Cq-MXOT5lc06iq*|x=b{MHn&R_66V#YNob_5Au~}}J)x_C z-Pgk`sxYrQrPN~iiq7rFP7AJG11ayqTPR)CmOAT5p2a+1GhWK7&6OvU#1bl4*^304WW~H> zl~N8s+;Ds}(nPC`XhB!Q#x-fiE9q?39wSYN=8GtqCEXHUK|F73ly1Q~%`W4lVIIS_ z*$DD*5!2V+aKMKzREG&-EaM}ch2jbL(vLw*V3rdX-)GxGLz-&85EQ^m z!j`J=w1zo%`EHpn%%q*|NsMisx|NP?M1UU4SXKgbEWDWy=>Q({LmcYqC7ih5-rcdq zD&S+R^KOr8^e%F;1}U$l+CK*vb7qAoNDwl8S3=cqWccyU)TKO4hSEO5^erHxJ*9EP zyg8`RPt%oGk)v+DIYEgox~r-(Uf?ov{H1M787Yj|VTsSb(i>8{1aNOQ`w|z`iL{wH zJErR~aLi5@AoFN=^zPg4@`o#1j_SJVH=W69eE4FkSy81sE_vhG5MCjJXd)@z-*ufg+L_qSW#6H z3qO$*IPL-Adm*^*ErcR}eeNDxx|z0|6i{lOa5OFdGwI8dVt>Cy~BK%$h#SUaK>)2^7@eo*M07uy9VF2DDTS?9{Jvwm= zBy@U5JQvCJ#M=_Pn<*SeMRaL}ghL1GKUwIII267SW>=on@O=3Wph*nkH<{yR`dnXj zqgGl+7PTGN0S!a#7IqlIZ5)FO*)whcCMFxoc@QZ5Q2rgS{Rh|GpCHwzYw&-u&7ULH|CVj~CjrvWAT`PZU(fz+ z-1A2se-Wwvc>NzF^XF5Sf10%XrakouQUBw8zfaAn|H}0rvlV9czkC`y@i%Z{z1ipq zctEir6@@_99$`M0nXG2|>6Foy^*n#?pKu&z8ln8CKjJv|;qwBhSkyn=e0F~!0)oCg zbmZm4eRRIUmttB=EA&%bZcv9h`yd(Fqd#a2QiixlVbWpm^`v{{a?T*pTPKTZ z%CYBYBvj-Aaa!AdC; zB#c|k;9CK{-hAU^ZZb6cJRssDj-xU3?qBJ% z9S`CsA>?`7In%xRA4=X%G5C0!Ie@E{I#z99Ea3Fe%se|9MTkN1CnZ2#IQqP19hWh2 z+`)tP;5baP5Q5@IfL~Z;SW`7}-jh(xy~ied+=o3$HE5(>idJ|<7kd4<{T)|N*Xnn% z>$uq$+UEP00J(b2@6pLH2D{2;KW*je`*qK4kX3!-f+W1vs^nM}(KB8AeSquVA=Wyx zZrYs{tLC`nGODOk4xGQf#%f&&q-`#Xd^lP`eXUs8wu&GCA@6KY(qR|(*nbd<*;*`h z8&P1rgC#ZvUKYNYH?mJuR$>jbTj3u2Rdq$7m(K{3**V?ECWmAS=qyRvJ)<&5 zldB;xXzIkpu(o64KEWFy0=#LOgG#g2$8D!5Bn) z3`J~#aq1+<4t|f(bB8=IsXX}D7x9<1M5g{WG(a;equjHT@+bZf!utg+UX0e&y>#5t z%qpKIw5m)r>l{86Wf~FTqY~M9B}NgeUZ@*6bH-s3BhY%+H|2O0=~4-*8#c1<(4i9u zaJfY89~d1FxX?t1gBEtZolnpW!!Nr>re_$q=?Y|wg99j>$tEARC>{zI_wF7Z=XW_p z$@T!R*TRh1Hl>PBj~T)Vj3G<(tBHBOrfmbeL8*ikIzNfAsCVL?k~<_2rl(<{1dBXX zXbf7`uci7cEwXIUW?iMaVRkbKq=0gUyG9?ogY_pia5wdPh^H>k8W^jgi*5__ds+J| z$#G4CH-N;6K^v8dj5V2>i8Gr-au&adU?7&eBRYOZJ%gSQ=TVKu!_4;{ZPx(YVubUD z_hHq9ew?^vIrCUD2PoRShKX#sKqGZ$nZCsNa!N8aZ!Cs9783l6O*u@UZVd(sI10#B z4ouxl{^zjly(;0ScSg#5DXXS#VL}MM@}$2A6;dQdtN4b)D6-lhw7Qq1tr#b?0fEpE zCs&!#K8isETvP#(BBx(~b=v&YfnY$ubTA6VU@X5jev>_xk7hAGjQG~#8?*Twyta=h zxtZ$%8-afm0dlnKxh>-DaeZ#971O*LZfOCi9wnF~^$yw1izqmNSp$P{mQ2jB8ZZaUN8<(Ve zFKz!djgHA<#*nJYk?-CwJcUx_dAEr>81X-Yrq&zvZ2~z+cm$*VSWH zj?tqk95r#caa$-G84{T~j2&n42+1Fs-TDIh=q1EWlvFUxB@9cX-`~5EUu|!Kop&ro zc}4EMNBt#&R97!~hg#C;5h*$Zl5WEYK?+yFFhgVjxx=YTCZeiDi;Kh+q}to+)cNQN zN)Wq_^_TYmyw=rsx?s@9MH{gAODuS=;C+yNo;C^4pWh}DBlMMZX1q=Z^{1ucvFf01?$z?ElfyN_*l z%#Lk!Y`bIIHaoU$J008X*tV_im^U-$%y;_C%=vDgd#h5FUAywuTKiwSvVQA%@lZln zQlx>Ktk|EKqn8m%*@X@E1@cv{a$9yuY9%gUANWigqNXkx;x)qdLZ9oO7T)tQpIl={ zXAsWiT`AYq6lIe`6BSdRf{*dSFE5jy`JCr|Lz{`kI-bPjo;@#=!q5qsY?AHK6h$6FQ>3P0>^dfK{=0qRo{%mtX&4xL)W)z_i<3K@H5qpJ=AFu_rNNxS7ib zWC{y3xsI<}v}!tK2=n3(1&`Cl&?VJ9;g4t0lQD*QJE?a)8UjZ81V6INA83i*x2mui zI_@I8a$YueCaE>=1QfXyo%ZFP=_REZ6wwxVLvpOb`Pr*v2yZc7VNZFBXIw%gLc|dvHmxk6EtDetxyW1IyrO>oHD74oGAK?e~*mW4mW$ zXcU$~ZFGqwC z1n4MY!j==}?gXb#3$#caY4kpfgz~uOqvLvQV_@+0_w+S5?5u$xgcQQDRZID@ePUwo zFuoP@{FWYC;IEL4Y5mx7pHn(~%U44kX6{qUBuLX+#DLV-1m^*gDTDT*G(de_mna-&!6 ze)v}fMLqR~M$`cPzmxLs>5N|+D8uq|anpZG%Ks@5@oVXZ_kNha zQZozPFZ;irscHYCOQvXZCLy&N;|mC6&Dq|&pF=oj%I0 zI2Rh|xX^ishPI}x|G6v(?BR>sU099S-LTI29myY+FPbEEz*f!-x{ zODsZ4sB?y_PiNajamMJRc+wx}HaTG?B(^_{L$?!)rT0JXu32})^{&c9UIdtKYm_CJ z2ld7V2VH7$Sj%{EUs7)cj<=((A*W-b znnp!8eaJ(Ih6LCStI!sXHPRomU0yKrVPfl*BpYNb`rxS}aIn=mUrRITb-CjqQbo;4 zCiCppR%_^3LFN**;&E5*+^#?Kz|4VB!&)RH9=${(gJ`(O;q$VgVt*|wx@jTb6W)KC z1*pzPck6sae6P2jfOi`1ISfNS5AYHnZc#xk&W`u>j&?DZ_YI}{FmHrtf~K7!L{_^= zWx|)(KSxDO-`x5Ua~a7I*er6Yj~e!HOb09=xBn(KbD@lynm>vS0ath1T~e^&gN%BL z<=%y}kGiO3*1GZB2t7&vtgCcDaQIdh-+#x?Nl)fGbd`Q*w^iE+*tsJDzP8Scs zcsgNmcfZ_eD79Q=#%XQ}9wUcVm zC3kA%d|R`mYPkX>EL0sPuL4kolPtEs$vt;utNW=XF@BDh6e9J7poQ_%CHcais+k4M@QUSo-b z9U`b#mkMOiuv&^EkSlS3CJ=eKiHsAItaif~3V-hObaYdC>144#9ySgU-_5t7$1#9p z{4gioj#sT-XKj``Lr@33HG;vUtn=GzwG;PN?jTqR7*lc}p?p@%0>E~9IvazDTjOE~ zej@~dD6+wG!qBD^Y?>D3KvFvclYNr@D$vB?5HhF!Yjs&^OuzWPXUSH?*|W%&V0$L| z+@>D#XG}kK#Fg%RwwbRjm;4lB<`V7kRh)!30UihHtnGr5ipch~dXObx(;aqk68_!{ ztu*NL(321M%Afa~zTunY7f;^axR;-kJ#;@NlnWmTuLfgDmD*2pj6i-(erjN8O?|e{ zcL@G8kW4*-m9jUH!|SQ4Si@NeL&I-^bqaf$yRS&PsJ_LqeuU~|PnhY#mmh}Ms*4{H zemrHP7`2^WB0`Re^^pQ%0NtNj0p@zHknCt~7%2a!xvhDNUK6Z(aAtPjJDr=e>+Sga z6+N@g&R$T@x^cR7Z1?3ET=7#wY_qcjYkVQ{0`t0Mt1mEP%q8=!Ts(6g&oRqr&xaNgl`q5T8VM(;q+IY z38oM#yzN4swq9m?vpZsRdNHI;)lk>sYM8q0eHV#OXX{Bp8A6b2(<==#5C#Gx<-f&8|sJpcWK6IdTJW zMJd*(LdX3d0x2%u=k%xC38ie1#{%(ynv!~Osk6#PU?bvh0>-LItq ze2^A-zjdR?xn$MK@As28l4}i7F5z-QSAV=EjrZmZ7FN0Dzc7^3C|`bjJX8(t<+D(T z?FQc2P%4U({jw)lTAF7CQ&_qly(h14$$EcN%@Pc~1-iez9h^lBNr$;a?0oEg#ZPWH zTDUsry3Z|wzPNK;HSBP>GuRngIU(-mT^2ucASAWnC^3&UJ{6TgxY1n$(1mD4Y2IO`-sa1IQhn@j>((u$AimsPs$2U0gOyg} zp4*iTeE(QI^7h(MRl)#qeQy;D(;`e%*Xpj1P}oLD^$xqA{dov)(kIHAsfd+|D^Efl zZ%wtOyvZS-bAB_M(0XSsMU)R9fGF4;x-VFsz%nqdf~*S1so_@Siro3+N}}04v!7E^ zBvHRFuB}n|(9Aw-&=?OV4au_A36por=0hBnfo3 zpcCUgIx~^DOSi>?|D+!rZJ7=d{9e=0%uL;LxU)8c{HpRdG@sB2d&9@ zCF9V$F*8y1jKUg;cZc4|RBV3lZ|L0d-_X>-Yg1!L4ImXskbR}$7jkn*vy*Dc;EL+E zs@N{&yD#ijsM?rBEkpfG$I|;>x+Gjo6!f57Hkq#7l(551;Yb>`>O^^~q-RAdZFV}w z{6{wdz}cqX@BPt=qaTMWPw(IihzDlt!z$-Glz0~IC!ql3?cuyt4(pP}4R*)E;zTA= zXtCL7z-)E$7;BL?YtR{9IOS(1M)dg7j`6I|Ynp$YQwgUp8>B(j%Xgj65?^lMoaBA-J`!B{4<_^|(*j;~TgxEC>IlA1)z3_UPgt>~v+zv*(G_D&<^! zQSE2f(8=TFvs7O>#IKjNG!%$TH1FL^P10Gpwt!Fa?s}A^x#%7J1Sk7Qw8rfXcZZWR z_7Z=y28>M_nZ38$VD-9Mbk%Cn08aAyj1mZqbZGZBVLzD`)9Xb~*P2YORasNhnZ(U4 z#DJ{Lof4oOw`43~w3UOoANH~K^Y@+o99N6dQE;Ic*pZp?Tjnh9u>)^8Zglq_&0gnE zQC<8t}@ z^3EMj-#eXsK|g+(x+0#t6-Wb5n*~y#dhfh%-JIHF$?k4M*Pfv1aLH5YA{#Op__8FG zO%{R*ub7U6_Cu!uWu>yiAHzM-WeIDT zT&frseErF*Q7*N>c(k5hzO)F)^6LV{Aie4nn)nDaZ zv97p6+F=pMY~i+bN^a&`COPNLX}5_T=}ag_6HDpzo!{QBwatxra?>)?5Kc2Vy)9L6 zg|1ON53c}1)G8=zM<}ZgbuQesJcKhmOX@?tEsD;FP<1#^v>C)gq+}DmdDip~jCX+o z-rXg$w5+hq#WQ~-D%lG8F~LZJ5jGwX9+DEvJ{5$baV?eiLprOnElRJEKIjnyZhq<2 z!!d9vqmn0JX`;6E@a(n4gw^p$_0+3<-685A`DKKWDYH+opD5zZ=*um(5%~5=|0WpUZJ;e2Nv8J%aISj0X&jICNj5PHK~ze_D| zJN34*%CthOaryxQ%S;?`Z7&#~7a~UPIE=ZX@$elm*!3EV4X%%hU<_iA33M%ib8q3q z&?lA-Lp4+yg5iO#0U0V~%<`>DRvh)?r~1@vIvaO}k|h52TR+x`FqeqN<9)csMPm)P zlcensZi_CRG|zTiJA3IUiE_(I`>K3XcYhv*YgMn0z*{pg1z;=e4yXX8=05u;)kd zBj7D(YisPmH0+q?ZKv-!GMc`J(PR0+X&htM<8lh4$d0_h33?9SX?Zi&(0A9iW>Q2v zyEm3knNQ9}igo4?P6^YGiqZv`KDQ%ZM-)}p33bPHNY;!+**%&bue1I2l+aK|Y|;3`X$mDRxPU-ez^M?` z01%F{HxU4q@Oo`R5yD+tzP(S?aLYFIC}FQF1&7}bdg0q@=@rk* zFGIkTx(KQjR3Ka$MW*`?yt#mB`bB)gzkmxUdm2)jLUmPr9%(W7D#SX!Js?y+-Bf&R zV^BopqMg%(3`d#bGc52R!i}cV1V8qLoPTDNk8!zoF}(=G02U#N63Tbk9q03CZfB0( zv2PNTNTYOwll&QpZi{bH!@yNQ2tcDv1jpCq%p8H#5*<_+B=7wZ&*PYB;T@W%**q;`v>0$Z&TK9L^})P9*vRT0RN(sf zEkWzMsZwcf0_GlVv5XnW`q~joy&z}6SW^&GfAb)*FW0cQ(JAsfCzpvPIgbGF>0tzZ^V-oaLS)T>`oUO%l_vr+q!<6c!Kq|GWi-bJ8k(pa6 zabJTYLtk;R7J^Rd@4!)wdb}%0Z(kn8w7`$5j1D zCxs%9SVls&yNO!(`K<3&)oz&Uv6>MuoB19jD(es1l_&KIor^c0;}$0vgk1Jx?>k~- zZ?kEubv;#3!xBz3S2C}IX`f(By-d^KBMKMNrt9Zrbh(S5A{{m*<^{j!WrJ2ee%wV^ zk?3X%A&1W1B;Ld(wb{@IP=NY2sa%#k*;l`QIN&VIz8HfaI5nH2tU3;>u@}aPja^Ez z=F455y+LS;`2*A-A4Pgo?8?KOxsM@nkz;O0ryQyoT-J$UYq5joM-pxxr(YJ>Wm^FJ zqJh789X!Uc4~BaEnVf-Efn1tSI#06mLe zuFah*tdp{J@h{6f#kJmldO603r-jJ(u;-yje(Je?qsBO;K6ZWaFQVA(jNUpqRC9dMYBenf&VaJQ5ve0YG}$r+YX<%;I|>{ z*9i`Tk`33oEE7!@nm%NAc@FGYNO!lKBiI*HOHY{;>Ho0<<+9CY9NZhGnE4A5B(xJx z|Ej6nczF(@qaG4CSMkaadq{DVlNZae4S=gRm12a1Zq1DQMJPND&DF zX{vlfzg=t!Fkt2iZwcE=`-#7su0sm&)zLB6s8kfqQ$KeFnWU{>0ODe%j*Rl@Q8j8r zET*!QX`(}3F-aSz-=0aY4G*Q0=uR8GAAUQU`*R#u8h79oJo>;{rYXd0R1U`$62E#b zt1x=WS(tLbU~!tv0&*1NXH_%DoJ(CJBlNJu@e-E5MfIuj~!2i8VBY7lffS+m0pmK^4p60Y#!(%w=BR zZ~#rw1u~-&TiC&ZAWwY*+##h$7amhukU4wf5#;Pc?5%Q&^*Y$2wWS5W!hm*jMDU79E66q%;p>|NE|H=e_N`|EZ~}v z%pvL=Lb7iQXD9EyS#V1HkP%1{C|S=B367cslieh0q<1+buZUR^fwsQeO_zP}RwZ>m zMKj$X2@82RDKmPKR*fW?>=SGNpVUmLL$iMMv?3V9!1*e+L7;Xkui&|aW5KpBDG`pL z@Bp>W08Do|k#6W24MP$fuC+G8b3&ABw*&>`G|~px1d^ zx)3~7XnYI26NkEbf4QUi?G|<3w!y2pdMkHK>tqhbJW*5E49_`%phC&wvW=#(PcyE; zcL9|<;fO(#7!*!&BvFRb;PkQaPEnL9PD<0nMBE#Tk$J|hUN*?_OtO7PsIa)}<}Q@4h$E%xqhgSEgnNn8_}Z3FD@ zygGxpAA`>AAoun-etP;n(paq~Alsz#FtImdaD3F-C~>=6v&(M*-MhK{ex|Vm0>qeo zLdd2SQht0}5zI859&u#zT@DG@IK3+*FWbm7A9B49^|H!kdVXP;c3ni?N_(V1;$SMH ziRGXwWsZ59iZ5LGETzEg?D_6B=#1{&-hO|^?*qt%P)sXcf~|+}(Y?3X0j#r`Fv9x32Z<(7i@5?tPZS;N?VCCMceGl?-=NQ*2I0-Xh)gO{yAq z`P>)R$!M|RV=C15N}(QubmWOfr3Lu961>kZEoHX?b1V|-+Vydl9cvhkn4wl5?yhZ2 zTJOTEKN?jF#!Cp+3woH(TPnO>EV*WyR}Dv+`k11R_!pR>t)BZFIGMMIULu4eHA95W z1Z^Q4RTVhauQaY9h%HXT2vU@J+xDM%ZJW)<#OEAg5Eo2;5Z$~W8WIRMb_uYcz-|aU zO)q*M`kX={Sv0gdjGlGcjV^P~OZugtIW=q}rGpki<=mv=XsDO*Lf2~$pB0Urp2d=Q zdh(G74w~17SnoQ=6E`iV)HEcLsSYITNTD-WRpDV;mrGo2M*TLSTVR|L6qOWvc+IB=`9(GXHxBsL)7< zdPH%ogz=~$%7Ly}eD1mWvf}3pqL`(fE`^n*Y)!w&lZFyJlg{n|!@CL*MH@$oWR)jN z&UtB%wT6oj4k4s@6fu{z^D#(-OBo4-8tbzCCQo)}7q5L%Dj>DkEHCWOj&s&HZQn1! z%Oq*ZdK*tHt4T+pK|9(Bk9E~`XN58Yo@j;zB-A;)fi1{!SN#%Z zrwDuLC$%f z54#YM7s2K{3qS9iSc_AE8jsSDAw>kNk_Swng1hsrwtK(8E>V2%>Bu_o44}-V3mu#i&by-<0xR0zR65SXOwhX&dlP2Omx><71BaiFkZKu1=UUO^M5QhnXW>D|H zn3Ulu!-(931l)Ab8X05qz-+2>(Y~hQ7_Ru~b0omo^)KD-G+%{atGAL4f4;|AGomb{ zj?nK%Taz}o38p?Lb~q@{IR+(A$vXrTu8O#z*pP*Cuz_yceJx{mZ^6O$%7@q*j1MB|X@ub?3cBDP~q>aLn+fnFsUUlhNt zGqI(L$oRbh3>MOL?tC9>9zxdU#FWzwjM97pq1XOaU(%0nn}a}O@zUhr+^mZeVdLsN z4X*@7iGRl%bRv70|xnscPv6Q0cGAx~8=6;t2S*^eZ|At{o@9J!PVJI^J&u<`U zbS|+?w^mu4_W1?9c9PaJae_%g@R?nEFX^p7r?X=wYHXa!de-lM z{(Jh$9$y`wmF>5Lkv#st<-2}=?~gptf0^%MVW)X_L}6lPqhWYojDe1YhMs}xJ^MvR z!^p(&>)9@PW^GwVJquHN6H_Z=85=`8T?cDBdm2lFKjpjL*ZLP#{*HJ5g=F!+#r}`% zz)ZtV|2LWi+n+THwx1UMpI`7PIFKi6esprfIG z*HHeVmHa|1J=^=9-zT~KHTGwI{|^h(v(eG8y+4`11podu{o@<;e+TLRR+eG^Sp)hb zugLgr#rKOCeWs=!wes%Flck;G8R|cP8AIr3TBFKj8rz_9&5)v3ZSsV#UMD43sG-Tg zNOs$K7abJ)F~XRkp@_WYFiZ;P%5L1bk{FeZlGJ8Bv%QUr(;FE%2*e9Bzpq(?!*=sW zG6%hkM^A};3MWsqwnZcV-uLCSDSVsGzD{Ubr>|KqRF3Av9&+VeJsR|1xrSFIX`-L= zhK1@A#Kr1M+qG#r+1))|Z%;4)!GMAeZ(_;5-0<^=AsJV*KOH4?4Q;KlN^b_eS1G1s zVg>P`kMo2D<5XRUZIJ@*DLTsgjyK!Tlsj)&9n7|_$)+&KSGQ^c!r zC9sK~;2nJ(6s6DgL7_W+FoB#@0&!x;8rUrrko$lb(* zsp&85oIds-vgrF%ilk~EkLV$f+-YdbO9d;Q%K?z*3FR^=nwKAv=#{o@`N$ZLafK^S z<4{b%#}&-%uGmRc=GUAiNSDss^?*x=Si(c5Fun~H)FK3532`9x?oTy+qVzR%qQ@rm@ zI*40rZvtfaIT%?v*ObyxTemMbE4gO;`b~a*rRJ5G{P@ObWi=fa7B|qb&$HN;RA)nZ zwGKN-dDyw2hGvZ2n42KPzS)l_B{1( z7QL6(eNgucrkYdmh$+Fw!WkH?*fUaJJ#;!8PM|={t9*iGNwfsT3WmbtHhHMcMRj6^ z4ef$#Fmgy~gpLA&0_&Z9DZPGtAL}QO_uXY%t|B3rY;*pGMYL5t{T3ec6S5NuEv3%YgF~| zh)he&ER~1NJSy26oMxc2r)J`kAj_BP3ch*s#OmZnNLa+oZr!dQNp?5&W_{v{wC7MxP9#td zY5eCnQuQ-zAxOxo-)L%PMb88fxoN6rz_LbTf~?wNe#jddZSoVA3?ijtYozwAvf)%3 zJj<~<7g|n#kKU7Z!R=o6AsEcKiY4xsoI+Ep5UY8gr==i7lFBZ2ezygMB% z1P_^8%ehgY9bO-;SAYxG)Pl_6?SvlcneT)28a4)>2}L-&{1J?=9!A=Y=%9_JRXP6U z*B7O^`{LfOXr8cq6?EPF3f9JjQBT?3DWG1(@Qo}+2L+xfQF=hYk=;7xarSKXZ~6+! zNQ8syhU%~!XrO^f{qDq=B9zsZ3IK<~=pM;=iENNY^e!)gcN=?9++;*-`L3;Oio}Sb zC7!B_qw4RT-T1nP9IOd*#I@hGA~R<^tEA}iM&Xmk0v%iHO}U$TD^z!bbUP`>kFji` zK85*9vbI`bjq02*G@_2rsnN{04qGTvsx~p53Jpq7_YE|th0GUH8o}%)dj^bKy^4&k zB*s(uU~-AJ#>zWLm<8xY@DVELN0a&M!J;51<1WfD-@eSFF_;jV=fiO^>#=B3cr2op zUeYxdV0>&H{d$DMnzeDTNkHI*8MU|AulQCW-Gk@sgl1+KxMNyp%=^8yugZjyXXQMU z0e^ifR(}Nw`P_aTUF`{kFdJcgX$V*dALR@3iAc_;wmZ>nC!r3=;}+jJHM!*E6?7u? zJbEex7R?X~LEv{c2Mbw3?zy=)#B>$j$$h(!TMm_t9(JlSJKfSqxRbJaS>#y}W(fKD z*8MK>%=4YS4=Gkz zoZ~LXgSJfE>NVKQE9A(^GJEVFzFrn8h4G;F0iPf28>*&zfi7n)mT5Q%-M>L5X7J&1 zjcNHC*jI(U2wl47<140^u7~hbrPgp9p&6z28C7}v!bVXKwwO%fAuqU$E6Bime(`FI zIH-Mesr)MY=(iwNjY%R)I#{G!*2=Y*0hL;=THh;hXn_Ze_(OHo`1G~bFUYFH!tlxG zLZlEcYLvg-A$hq^d@w7jtz+CK%4dqOu|hrzoU7+%c#{70OY`$Zl=ADViO^^2`MUF$ z>n*?<7+U(XMkQy6hM`KCr{PUe*fq})_wQ?OLsvV#3$>?C;cvZPjRylBOSnzn?mXR- z>39gAqh;Xlyje}TN&9%h6W6K-R)(=thK$}_?K-^O{abph9<}%ylA-NulfN@LxH9SC zsJ!CLr@8<5o2v@@&qZc`FXjGDWdAPZvj3*U{(2kDKd&l3)waD?&;2{=|Gtl3lyZMx z{eLIWf1ly?pM>4__H%~!3(mW(@^AO1Uz2&?>;3+<^FR2M{vG9ikx%DTCE`{F5IZiu z@=60ys6qI#Vh<|SAP=3`4WousVq4(x>LsQ_fS7PK>B+xd94+_&^v;f2Y%RkM^5`H?Hk`c<0j+opVmo%REA7T$8=^5M41OkxMPk3+q=m?xp>1?*)PC6U?DRyjgB;A7whW)y%Jhftz8opp)X|PDy!Ay zA}=tujpX;+QQFjo3^zPTH+#%tPv3XEyL+y^dwVu$i9x-RyF!_I4CxtZ$c%*@yYJu5 zpzjXw<-A=w#2Rh)4|3F&uU7cS4bLfgASO&h=%NRPqvBRo&wO3$iQ37R_BDFsc}WhY zV)rVn96rPK+#Om`NZVHFteMMzo>!T_&$%MDVP&H_!JGo)HI6@6R)|rz;=U~I6?)7@ z3>HtvfQT)9B-R+yF-t5OtD3=yTd97EH$wFt{wqz#4MDW{h> zd-_hS{K+Moxzcs3M7F%80lsZ-2uW;)?n+7Sl3QuzFe$h8}JKjNF7*(L8ea!~?h?JTxz`SaQ>I zFJ2j(5yy(o=VgnFR6c9Ry9AM==YjH-!c_~Hd{dv2P)-Dod>=+f9=!*-bn;yaf4ec7P>9_ z{M?3hiYCG(=n*iV^R{LzP8=6~iYHLU44*(Mq$>@Rl~;k<=ORx0Md^SA@`WrS3FsA; zT;GK9nXo%En2`7jE>R+wso`zQw$nj-#BF*WvkuI44-jApFE0fhdbOn+P?(;j5>xwORt7?ea#nJ2mFo(Ox=i@8UW~t#LZiskQk|`d_ZiiH;`F1 zp1n&dhTFKM-l-2ucwNfCmx3WDjN^K36(qbCRAi>7mY)(@%D1}}QY2($Y6}kzfal@u z0O2P947YGRzL(ShC9wOjIObfyfOH&P&lE7iG4d#(3nxkShmLyUG-2lvuqmQu*&HsV z*`l#WV@&FctpUYhac2#wxqfmdOa=lrvvG{w>5~g{$l^tUlGycH0V;w>_2C&>O{&EL z>%?r<&(=l*I?A}fi8ri{&}A-R1=J={u%W z4rO#IDMlcpyqnYwdZ>jv?@Mlqmk$uVtsbrnIlo3OLKHEo4TjaE6JD}beN9XK$$j16 zS>$I0rGY#xM&-*_lysyqI`%LnBR$e$Hdm_c>2S={0Ic$XHDnq|#ltc(Ee3rCv}Si_ z85@s}IXRDpDe+gxEjl2PR0FY*InR2Vy55sm_TJmR4%|Yc*~v}(-gFKus@u3Q%v!3F zwm#d}p9}|7)P3WW#EwJjZcIqk0aXFsGCwjr_h3(Rc&(j`Ra!`P9(*kHE{|%h!Z1Qk z2zDN8pkGuKgANo*Yy%U!7Un-v-U|SwQ31w5TmA}ld~e}Y`lU*PoKr`L945v)aF&iC zVi%Fl+S2Z$g56du_+hT?trJwQyO`4}LC%v>ba z#m`(IL4bQ|!vwBc1yE`O?QLQlCW_7FRF*aH!cR`8hF67wI)@J#lgQdC%q<@`Cz*oe z*hYqO=-AYS1V>i0r%Y|pNJT|B)6T4_6y5XL+z$5cl|au)b7621+Q{#mqyn!s6e=Hx zdfVcmx=a{(=)zb^gGnzHg|=&;*`(a0_!36H3|9ssz{_EAvx;U`bJn$^`5NgQI|%V^ ztI2S#M&0aRoWwc>>6dzJ5 z%vzCnY{V?-C8f*W%>Z|Yw)k0ATOI3_-bXx z-P5PnL8d?<=o%U&kmrs=%OTdw!i0_xAir?NLUD~IoysEB1j9I`yI$Djy%S%uBadN0(n2ui0) zeM=Nv2?^dQ`Va$0lbrLxNrCR-N5;oXz_-oJ(&t&PEsZlYO%--L6?!+^IMNk3u?f#} zG}2FjKgRY~^O>0y=6RG4sbOl63`)-88u9dh|UuX{Ovj37}ahmaltR_5p zO?(xw7?iPeszPomws}TZX+8tJ#Dv9N_sK2&g&(;V8Zn}ux1|VilnbZ+K7?x&^zHm% z_0D4)W>B&R?`U8F#kV~oFbpkKNVEucY{(Qtb+t|^WU`?>V)rQi>kDOc?;NmOw(&E$ z%?lpvV~{W2vrrMr*@n}i3y9BFd-B64FPmD^@33`p=2Afl#6r6yO9jJkK$!)^aDRt` zKg*f_0SA8rpg-Z@KO3!ov8(#8$~F5x2<+dK>)+q|gYy1M<(i&_p61;tk>OoDWny^$ z{jO!Qydx(AyEocr^_{}apjt_ApOyUv#yBS?6H=dq|43?o-TiIJEFs~? zvjkmY`cvoBj;78tEj)0>JuF}*^#oAPi-j7v{F5m+(Ph>iSJ~&^tT`;L6EDC z3Lxp#e8b7Zu)~EoFX}f-LA0pPr1@bK(@cHf>%TDK*uaMo1ORem2H^kt(bw>ssobsv z?}U*rikH$jmJ#R~n}-9oJ*}=7G0|=$V~UA26{-S1qCM?~bXqyLOi@=U#3aH zS^!2O0*u5(@?%>~{b7lBkoH7A9{NYSA@I8`A#XdWJ#=-0KZahBy2fObPk-kzer~D^ zWgWknJUbTxu$e$$5jo^ zWlQYbz*|Ks*SJ+Au*EV@1r%|UegbFZ&I+ATUNlxdUbOUbKcC6ws+Ayh1N&w7g2TFY z!PS*iEYd2fFC#gyPf#;^V|B|xoXve^!8xa`j1Yx?3T%&spA%y1Q?ioE=CZ}>CO1*N zw%OqLN5gOV4h6SoEt(Z80H+6Ut30l({LaBX6$wU!wl9GR^BlY&b{|1do_y@^WY2() zJ-ecjB(w>;n}VO#LLy<}G~DBW3Meg8f)aU&V>TQBxp@e?46~ojq)znKbcm*=zq+oM zmkw+x6|FhJuAJajE8&N4>??^)qOFt;pFs$215n;MP1(kJY8gke4vwI3#P-Q7NC|(r ztzWO#Sr#3*;T>K}Z4wc%%YGN4j-zGGPb(On7b;I`_>}c{sE<;T@S3I#tqiNu)2I)8 z2C{SHLt7+zR1n*ZGz}t^TSXCD3$*k3aus)tp~1EC8?=d<3Sg@<1!&D$6)Y%&IphiL zTnBp*+xgFQlbWn*&Na#gJ-_=s3EK*OzrX}~8WeS+5Gxn1VF!92qb}3TW$*z}fN3OO z<|QyN2FmOso=qYLHXYe(F0Z3v7`c1u+%un5c-;bD2O)6CkB(p@57AqYj ztrlhdE8RaiB+5&gEe!&vi6cK5qC$ih3ls$gVleBVVg{Z_GY69Ab;im@Cx(r3U`q3S zeuxfENeo2bEK<(7rnS-3+vKr;togPEq(^i`Nyk5hfX`EKfTrCHP`ZCYV@*(1%%Rar)3M2bBhvI8q9`w>Gnd8FSxin1Tlt9U4 zB7WQlNcHsbxz{DrIGEyd9r`adEIQ`StK5B&)01lhws`EH4)>#*R4ir_%$f>6SVzu- z$-~@xMvb=(W3HS>Z+)EzWKfn(xjqYzaX<@rG}x|^@z+4F@8IRJm2Pi8?x`%INJ^?3 z)Qn|+BiFR9Z>G#UOMWnwCo<>fB40U~1F?CbkR3TrXHYwB(XADe4dll_Ut-W?UevsZ zv(Cmd(aGUu@71&FZ)Inz%12d}@`#;n%2hP|3fMZE)|_kWH&VCNuJtB;!Bue=k$%ZPIf!jq&t6(v!Im!u4^3Ne${ zbOEdaqmTz-{o}>_&6)OzJ_7gJkleBVLMTIkeE)sWc_hSl4g|WEW_X>689nAP3r)!$ z!3SL~g9q&#Ivef3VjkQ3+?RiyhJTBB|2Q!J4fELOey=b1C}9&xmug+&q9a!kd52>f<&&%!xu|@g_ah^+9_uZsn6pQ zAIx-Rbu$`)-V;xTGD*|6fX<^i83f-AvB&xN$dw-FFT6enHla|LI@2-=MDoni3AtI( z1TDC$4aS&A@``hZ)O>+U{xz^WH3o+EryK{Y(MTUxa6QH__n7l!h&X@9Fc8~ zjfIT0OI!{1rkR*-%xbBH%a_O(t)$$u=Pl+4y(NT-Pan}_3E;cW9m< z9hngpVtvbWQznV#hPmb3Wp|Eqr&VaqV22Y&2Fl$93y@;z_Rk}GJla8-J^k%*p=H62 zXsj0WE$o_3pm$fC2)`tL1#GA&{ZT3cW31TVO=#f9&uTrJl|iu*0)q8D`1OWu#Q*x( zSTXF!A}!)K^_lTd{?4VGac=N=7mqCF(@}|d&y+?J2#2g|*sstANbKp5$*-O(7c(k$ zV{UCZuIw(*3gREcEgce*d?Y;M#-N2dXw@yyq5zQS#ip4Yi+9HmoyCO1``ErvG9ihd zXaO3@K<_zsg~PX`Mp%K<8Cs(q3+91Yt~;w$p}>5|8?XwPRB1G^Z!WUQ{uBGSrc-1Z|&v!9fIM->VoA8ZDN6eZ=O}0*^zBkv#y9*;1n2E3V)4Rh z^>K5U1#6Wd_zW??;+*$q?EF%TuZI=sxa|pV5B@w=XsL)}Nm{$t$wER(S~BxE^-D<# zbZoK0kGf{vAMQ@OK9qHpq;(V^I?hMH78hEbtw0t7N;z@RGE!D!0NaOG!tLEI3_&r> zaZj>0!TcZA-Z4tDZCe*j+s>@CZQHhORI<{lv~AnAot3DxZQC|p?)C1zd+mMJX?LA> z-;Zc5;>T!X#GEr)eCS{AaMPNNIy$(DSuwF7=Cain6yz~X{m1Y{+nz($j>9^#;@kp& zyj()S#=<+~j)C`&!m`2G#u$EDF$uP&?>%&<9qbqgj8KLMvF#_0di@+vImAxGYbU=j z$14%A*G4Oyv0Pxgm@opDz%nYmrh7mp+E@Wy%{N}AfQrXd@Q#YQ7Ohac*r+ZK(;e65El#Icsi9Ux?AWuC%hx9}6FNg(BP2*unw5s45SW7MTX)}oPM z#n38>4&_osStr9gI_o=G&w8AZ=|fhhpiP~)G?;}sS(W{5Ju9t>c8&Q@%Pi&)d(sv} zaFJ67RMBspJt4Z8flzlY(ulUd&BZ`9_`!u{xxq~rLuyHSNW86b;wkzOWCebplB=5- ziC3yEaR^7#J7k(Kjr-EnLg^D^Pyw;2U#e`jfI9A+I)r$XDhO2Mb~Q>I4=g?(lH z);K1{&?ccj4DdKnr^E*JtSoHv^A9Lh<{@Hu6p~jzMcNS|%B$u+a>vVWAb_dy=R(~Ysx9iMh*{#1 zX6xuwa*I|874*6sNRz;R@=jsrA=*3RuB3Z?Oq1r6j8rSnqMlPQcdeO)4VJm^GF7i4 zOPo1DA7&hPDP?SvgucEpG&K#_mNXBKc8u5WlyWPv@wr7U9&CbKx0D5l>g%ffo~1%g zTFRqLcKbp7L8Sfw<;IxW39)}Ztae7!bI604s~PWB3H9YMzwm|3Vk*4o=1l2i0nc_y zt`SW$aXRAy`SRX>U`j!-@+KC6%@_0wJipfVMJl2$0Sx7=W1b)4sU+E*|h$`uDi+zaY02Qq@)9N8;u%+DCGVeGjNVz(@J2_DJy^(FSoz3l&6X8;29wc%yIplz zyXjW-ndO4XHAJ>z3MVyi)Stiv7(;P?g(ClKh5j{)`~$)K2a5bd75l$HkqrN#Sh0W2 zRsH)q+n@dJKY-w$7XMQ#`x=VN$o3Z~@~e3CKk(~cE&dYPnEq>(DLeh2rPcp4iv0JW z>;JHdlKo32{MSkUx7@|_w_WOU&3}eluh5VhQ#@l(mJa~QDkDKa!$?mkhJBG1kr2a_ zpKFLv-Y+wkH6)4ihmuZm%(uc@GuBfxGY8rF5>p#%Qk*#48E|;IQf$MS*bEVyi_{hZ zT0exb;8wznK|&yYIQi>L6}&Yq77@&sR7Gm<=9h z40-Q`QZAZj6+h?M^GfSQd!i6^OL@rkve$1!dEwPw5D1!z*r0>}O#X5^0^9CSgV+ulD;6qn|8d}sZ~a=Vtqwer zJ{o&(gYB~;myH;_JRl#9b}J+Yj1biz5OUr7qjM>paz>gs zBcbO2aaMt;@V)L2Ct~Ph(GGa7!m@NmK9p!&7oh}+Q#oj{#{h_0I+d!C7S%^2d>5cc zhU}Ku1kd{VGu)n!tekt|L$S87Z+r_T4jl&Iu>#x1AaHQpK~efZIK7J{q%`)>Y`B|#^5&nZ+smmN7`fLgDz&uK)^`W{wfGeezE1lR&B=5cPd%s=1- zD)Nb>^wN9JPWGP0!uX2A^B#ri+ojA*KAqKImM1v~k8gM{tet8mD;LOC1(&@fSwA*A zBL2NB0V|TOjbO`13mEkBBKRSN5k{LLuPdc~GP-r)C6+J6I-z60E`z0v2bFPdy_M0L z>a!Jr*%M}U0eHaT-~GF( z=g-a0>VMsv%pFGD?oHW{_6OXpvtGmdf<*{!*4Q5<1f13GEZZc}06`oqAEWYU1@zlx zIOW<2^_xJCxd+10`A5kAo&qHO;BKeH>XlGJiBV0lo>?pS6_y}QA{4I`G zxP<(;aX;V0=@Oyfjc73XY|jQ&$aV;SQ=LSLZ%4PKx*AaBgxL3*@?xStfz(`dsz4&q z?I5_k*3px^tW)PJqeprQS3*N*OUN9`138&l3!db*3-Umw*eA@Jvdbx>T>g!xYN$Bo zoGmD7DAyOYz8s{etX?r6rQvi{q{?2DLM=Pw65c+aE&M%roCS? zG&4u0g^9e136?S%gek+vbWKqik#D%vj&m+Fi@kY!eOY8TW=W~Oj z=cnnNM~(0s)|R_1(-o;e!Z`v<5#9*p&4n`1L>+y?E&<#G9GJdN3uH=VHuKHa& zPnzJc%tCjXW0XqfO{fSCWlE^{L%GF}Cf~b%d9w8tAmCXUOy4F8=ap|Lex=e_ZdsFS`BT!KHsQ zLI1bV_VpC}&7!_PLMKf~UXRrXH;Rz!CgNdj1U#TKQhq4EkHpM);~XBpxxbx>T(nPeC$_*kann_C=W6qm@|3PIXDdEd zn-raz{6lG*ckPbu{^rSr`_6%s1K5Y;rdnvS}TluYEC;9QT{sb^yAjn6guf?|MA}ch~J4^1@<{cic<(yu2)@ zcHSMP$ZV`VLgcI~&B;FvE3tUZ@@dvdAr|GNJFu&)(0O%f*v(%KvK<&hPOrbCxK(BK zG5_)2YdUF`Za{CQjf>`CH{}}thz?X`G;3z2vJ>Qd=c25#y>_(_r(+m8{Fm_MY`uSS z@K$=vgZq77!SuZoC&itCwFtQezz-fspL!Ui$3_Lso0x=w0T_IG&cj5UlQ$t}=DE~r z?r+Hi?4tH;G@72imkdLa)9K}z3hpHBwJfzfqt1$Z*EELY|YHDWkO)9DWi@KRIyICR7%XekP6W_yXifDz5G(ovUT zX6>@?D#3FrzMV*pzE5K?QoNq=B3O6^pp>Qe36%-S(7 zX(JQrJJ#z_@TfDBU6=243*=UL}WX7W}}8`<@{mSVki z_Lm9f0({gXUr(oq@oqrmxa5Qr^4*U^Yi8{-W2ds*OPCrDONaX>5EA@zSj5>Ad?BbV zO)=D`yWR=5$q?cs?-RKRi4y{VNy1)E>51`?JR!|A52^AGW@5xTM~bau7k;1PnB#(T z;i~w7`WXXrjBEB4LRAzMmtxk04u)-C&)KKg|DaZ%s_@$F`mt19Fw8t32P{J&Krt&x zrqW(Vc(4wHEHgytP{R4$Hj7mUcoZ{JXX#$}2+DVJ!yr~~T#dN0V(Qj8KC}ziyjJRg zQNK=zh(Qs z8ZZjpGvp(u`k_|4xk*QaKq|-POhSMcAGmEz)TwFNfV|0hYL5Y%Dh`CUyl7Z}3;|^j zhlrocK6I?C;v55-iwQP`d<;>5{&&h0KP#!gVng$+jHTLbS!dd6J!v4Mz>69FJQoS~ERu(!~$%EmyRZ4@R9OGz@}V{Hbv}Go2W5v}axe zW+Gy=2Egf7I_Uysr`YLq0vwDD+VUB{fh2W&RW;>tI(l5Xqp3Cl45US<02IrTdsenm zkR9;~itqfOQf^LCT2l!&h{DD5B!#|tQcY7P0O0`cH^A}0@9Qx0tb-`Ufc*u2N^k0A zAVHB^S7$U#?UeJS<#U`THP)8G?hMM&lgFz_r?u&VW(N?n&=D+}9US{(t6n3?w&=(L zdb#bR)#v2^`1nsaMOG^556Ud4_6QfYOsNfGe4vMwSNTTweQR(o+$e%hl0qj;6=9Kpsw}CfxD_>TDHK_EEG<-`O)SX<5DG|l=*}cb{m>9`VYH@qHeZw2 zh_Np1M?+(&R>FE`&saVmZh6@rV^nmdE9I7x9c7E?n!lvlQ6ld z`3eL>F6&aPus)<5UIaL&u0md}2VWJhzyq2~C-i z&Ou02w{HH)pLct}2omnCA+X#e(M5wel4ACWiP(ut)Qc?~a!1=aD0+zR@oFq}qjtdC?L~4I zzIL)wi1rmr_WcC-*K^y1+KV>3%ffKZ=;supV0G{UkDJc?57<@woMRdH*S)dx-}O5F za;C&K0?`n68YgLpSME1-^XZtN#D(P={@e|x z_S$`CsIHyfWqCku9k}UBJlREkAksDH8>Bk>dUp-=DxqVL|Mda9t9K*a+tRvAhYK~L zQ)Me2kBu+4Z>?*fx-)Ann=(p>21XsF#9!^z2x7mWYw z?GM=UA29U~Me6UWYwTaeasNQIe}buu|EY2PagM(SQ`s5*vHSlw(Dt{|7wli&=f5`i zUqFqCf$8rz*}+=2-~F1JuGjNq(o;qfk=oO0cV?B5NR&J(;k>^BUR@3pCxobr%?wx} zt+u~8%d-w_h#$+j!@Vcao58cr;|cG-JWieB>2RHV8a_#f`~}OhK~qz7ewa#ZiG^m6 zD4c|gPgE_|<8>~!XI3r#uD%U~0lKWdbK{ch(9;|18?!Xua&lur&n-@VZH4LVP@len zzt_BU5z#@vm*M(6epwA?`x=|B4Z)9}0?ADmX~Zt~Y@RluI{!PG544_T%##b+BeAev ztG+HRu!a~4wPAF*J=|Lt#E5W4Kj~S6+Ngj4`kfdsMc^b@L6W&ar|WX;+7}P#*Y@Uz zDJ!Pi>o};@l{o_*(vxq12I6j91S6>)OvS2_L zlo8?HX^~C3;^(A`q-L5v57k!t$b(#J1Vf$*fSnU)_AXp0|Y3Z_2U(51ViqrQ?V} zfkqAp!M~=d({$8oo?lIAk*d?7_swf4VsF|i%>y>to)Aj(X@TS}$3NX!l6!YGg2(o`O%n_ASBJO@Z!YbD`0cDwekIG7txuL#cAwv7z0Q>D%7g(JIP)gZADG%%f0Z zIRE~_qaBm50d+}6H%h`8<#8V?n%>4OU%r{kZd6Xv*TxhFAozh4tW<6Nz3u2}b%yQG z8Y?q_1EkTn=Z7n-=ZDHcH{eGw`Vy*cJ+MR^lqnzy_i#3yGD7}7KcfNTohB?qSxm*6 z1Zgp1h|rFr*NY%JK}fW;{0~FwZ5wE9sDp5g!tfNk-0lq+u<<$IVC`2DRP=g+yX~f=fLjw zX`;zPhYsApsW*Y*8GW)N`w(IjOfgd1XXQ7*nJX4L22wC@z0=k?uy32k0{sNF{ zBDym$2tWq~^Ye9M;H!R?mdH|nes*Ze?)`VRzV4>sO`GNTC&01}QAiPwadop^kzqzUyv<0}tSiDvtg4Fz{h^r~@ta0&^RzR5%Z#|H8glXvr(8%+3GPqBUn44}RBXT$``jhZZ(Tj6pNE$I+cL^Z;+Jd_3$iZLrSe&8E ztI~L+ic5%Lrf7KCd>~0r2?S|>XER=>F~`Ac%N8pg%!yRisJ}ME#dLd4*C$Ko1seW?30UKWYRT zwi}UAP)Z(e<{p7`ercnUw7_k&v5k=005U|2mBKF;A5#l`#3GC}m;<1b1Y;W#+M-!9 zAkEUfALu`Zly%X5@Z@A}1qkgS_*QhiE);X1k!(_cqGc4ngK+rLj%YXXlMRbmPqo1! z#_22(^f&q3=rTIiph*eg6`ZE3!2p-|@~^1i*k)S;KO|I~0I+FdO8~IIsE{!<%G;iq z_~dS3Z1H4DFp$M7^DH<2b#`>#{9h7_TEPliWCp!WsHwtDVw&%L2W{WgJXbByV61H% zKw{lAY ziLN!~Y2lIlf~aFD1=y`IVqO&rKO^3*jPU74s6{#7J+puy;0S2#=V0Bm9DrAb7NQSP zEP3%ApL!ZiQ$k@17G(m0Bw!w!QjDKA#N$}O>xtYNnku5yD7Ym#<|TOJo;!+0z7EyTX!>{U6h%vl$3y{7#k@1qPsMZ>yCeL;qmtKf>%quu;Zn5RE} z3#iqzF3UI*K+S^Apr@?Ka!MNP-n%eTp_ve|V)h{_(lk$|5BMU3TUy%U;H>sM5ZzSl% zs&X;$Q)Lv2FPMsmy`~C^0TI)9Nf@+?nTN*=&@~?;kc}%eJ_S#Q+A!{bMCPg@C z3!4$Q2}_-u76J^gE5>P;w3TrC8cq^G?}59Hc$H$=uiS{^j6!9Vu1MSC7V>Tn z&u!7XtegAWlmapA(Be<8c~{~Ny30zb>LxeOeAr(P-SHN<8TRKC%|^mAoq=YkJ#>#U zPRZwT@$s9P?~mq7v*W{=;89}q{cdC1L){Zp>sDUbgL!7t*A?OKE8?dwk3ZF)-WW$r z5ka^^YeTn4ek~L%klUxSB;}J}*poW<;AK6v;VV6XX~%W;+S}&+dZw`Vn!*k9Ut*A@ z2b^qq(}1_3R!C?fUriTvGljNRnU$x8jIKg6{d$o~2k~z~2iZ68^zWwEs|ZB=+MObK z;7#Q2s}`5ss<$=h@X#g%HG7Sf5pYQuX;3DUq-gK2hQzL6IG}xysi0JJ()MlZwPcGQ z$Fc;>K0v%qcHU13u)73Ml7XMrI$)Tyha2{ZOoRRUl?Jhzn3wKp11u_WXDbd64A`X$ zEF4dn^$DeHVIpuL!?Nnfl?M~n(7^t?BWElx zhJ&t^yR`qdk*1;VmAdZqcl7+%ICBfxCQvJm1Uod*$;RfC^GSI8aZ12vSoP2*` z1vB9kV+nvZ{~CWl%FH7ijuZ<&@GG!qpGn7N40uB=;2EC9%uGiwT9T-V{Chb)qbaI* zMK;u&eCw#CmVCy+vi+5Y8C6QqH3LNM7TJM7QFzmNW1j*_W?rd8L;rf&zNaR@^h1=l zBK=&h9>M!`Nr~GJ0m&#OM-Ey^4zkegf;cM@*6^yQ$ea75-+P@(N_fNJTl78yVYjoz2Rj#l+FJYPy4e%{@?JlKjKY)9z@Ch)ky1q zU?=<)Py0_%{|}}9@9{K-f1^?V5a$29_Te4EiJBS?yR82Z{HL@^ z${5h`T`yLp8RPHIh!Zo}6N8CWq$C=C!@!FqoGEy{KY$_>kgUEE`r${3=0{hz7ot5v zH$Huwte?;G@fy45s;HL;(%D?1r9#D1YZ^=7o)BxU*`RfU{%~n8TbL`5NP5h0XvYVF-L~dVM?ZT{X8abR;jb`(kH` zrhyXJDv8!ilW}NQsv_?kyx&MWv*n}wxFie2+fxSt_r`l?{kzhu)Zoau6!;9{VGUZ( zptP@P^NOp&S3c#OI%FLVWXVz2e z#=|>+^nP`Bxvu@t$wTBFnmtCB zd2VOQ44f7me}-4zroQ~4CU^B^8nO$6@6FDS`r~u7UX_!|;A3%YhO;s!PnVmf6eVL5 zwAc1JRKlPQ*=rYDXjgR4C?ld~Bqiz@!9ay9hUP0nSJ|pJ4pL^$K#c+eya&(M55SPu zQf}-rPZwuo)L@N-Wr`ssQqS?l6IubyL4l}&xT|(X2@xT9ryt-yBjSz3Mv&Fcs-L0u z%X|W(8JFXCudq9(MtHh>6eMQ38#rCt_gBM#Ua6mJf$g29s?*B$qqx?(H*dpLhRBzc z+rfr88uJJ^F&4z#<`ZArz|*RTkipr4k7=Eni(o0aZ9-rAdeK3dTYs!}?arS>z4qa4 zZrWQW422LQWzRE$(|k351gKA565<9jc>f6J!LUP9XWoUhP)$3c7YZU!QXOm)kc!*4 zm2i}|qHz*z7i{08aSGZz>3&9-Yv*&`y;5nU!8`eA(Ia*9kxc%E0H=`{y)kDpSP`dk zU7+DCAa5Ih%z#ZAu`+$tRT&)iDsUGRYdY0<-&Fp|se1U^$Ra-!l@#zkGzAqeWYP9i zAa|ZK3A{+o4xP1UcjCA@MeemTSMhTP6zXtmN= z?RTrtRAW@c;UBLiaiB@YM^@WlBUQMXszDLLZjQ@{EdV!&!h@mhqVWLP(d#WQhex+9 zH?~M{gqK6XY#;)Z1!y0n@uN51-fer+dIa8#gqV3WE} zKvUYFUwF5M1)tEK9y0A6Jk}~j!G2SI)1`O94-o7jk3_+-&r(!*NkS8tNyKZbcnvR# z>m%fbJLjXoZYoJn-7faX--?WR?!0RAcJIPgg4;AK9v_L?1H$MWx!!3$-h3UZ0U@T& z#=?#cpIH`dWWB0%nN(AYJ_MipWvCqDOe7ktf&bNTr+N*AC~U)qz5Q2fHM}J-%B6RB#n12mUJ3^;31p4MWmCsCy?Bs)IKo)5yzh3AE!|YV4>;-4jkY+ z$R6p?e&6(Q{GoAjF8e7%gG z!SFp}0z{Bh%m5Zw0J0EppabN;T8IZAke#g&*9qWnqIt9?cHv&ID!QdGq@mWQvG;v_ zCe9fBjdfT;Bb5-*a~VXA?3q%wI4C;ccEQmMfbT-yiIB1SIKI`rqP`FafNvqDacw6! zIpoNzI;)NJmADE=MirEvh(L18@D<`xtdW**-%8@+d)4o;t>bS6iNQ(AbejUp6DYD=sP&g z&@qDCPYSoI&P^=fQBxNJm(A6nir+o#adR?h;pu9ihT}hgQlEMxoxKVx9*E$=X~upw zjmX`tRS-t6P`}R4y2Bjovz&^|e*Ily+oU9otK-R%wREe4>zT0(vwNN~Gdn>IIJ_U1 zQc5%%Tu40-e1-$=^zFl(-o0~q(Que2iRx-5u? z5A^)Zj9vDycvAzmi0uVEz3+KXh`vJ(A8*{W@;&3OpZzy-OHPA7G@WV6QCA{dcu9&C zASs%oA;}dqjT5DLSHPL=N&YP}nMZIYLfMa&!PNUX4x#`rY&ibSCbU^U27r)@unNyK zrWoXyEJnk{heAMao7fYNc$)oXSL}VnsexfXA*Y~&>1B+$UGfpXYz8H;RRw7$3emLE z@Zos+ac-v9jP}v~hZzjap9$aXPhjfx`vgN&b5?*GDvW&(I|xh=&L(tJtg~n>n?*_z z!J5}NWQe7U_u>j`a655zeNCk`18Nr>oZQm{GdT>wUNLTgbqPS|O^vKoB_)I_=2Cw5 zq4&3K$@qm2QDhR5A)Dn+7zSqupKXCxxYVEnsox#kE?xu$ zJ*=2qCN6d?PSS#K4DiElP2sJF>vq>hntj??tXtCHyng+&JEw^TV)UI&3N{_O5j(Zm zPe*TmG}5=4(+vnunz)%E$bRkTnfi0>IhlyGB(>{=eO_ev?s1Y8OW&kQEAJeMgZkx(WpN621MYV`nE=udQAkJ<99DtGCeLYIHX?&9>|tWQg=F8vV#-g0iuHj zX%J_5HEQ1^pO2PAuWM*)k$CZEqY^OsPCcG*?UMM>tjnE6c*r$f zI{F<;&hVJn^L-sXU|>2s4b9N;>BW}f;&R7SuBxz0R3U}vxqfD$D#QjCU2W$?75ItD zr0)dkEGrun2k3Je7GY9-EUJeYK}l?qGxlA(ti2Z6xQEU3n-Jt`OsoX&PF*jhhY(}s z%?s-p&uyJgkE)-NeGRyUTcR?+zpEUuk0w3S20_<|6U${?$Yc`bl1v+j7uYHd!8;6! z7=L|8&!-WLA?9*Y!nht#6$+)e+WUouwdwiN4E~Zvj8jZ}B6}xP<#WJ?b8gvWiM*2N~X595a0y3d)aC}jea^O_u#lqY&PD&d}uKapGj+47m(oqI!f#Q-LdWUrh=Y zPia}B!LqmjuZZ7#75+f}rH;LCPN}F?y5ck0$Vf(l@hd<%Ldnr7v@(p0iUS~@oJz7W zy)AN~#zFg%Tl|gL#Axsgl1WTK$~&gWqB6tLSLv1eHT?_g=;pi&UDV-Zy$5!-TSdBt zIZm0N+f;=Dz)=c>aF?z<)Fqc7H5|afoixCqvQtOQ^YwWd=o-#IMM7?LrLhb@?iLl6 zh^UtM2#sOXZc00gcrrSRt_2smH$!9WGUtmjk)*=;kH?;k5Qiaq_j{Rh^8?~S(0w-7 zpr~926yY1dhj0c5+Kq(I=h5twnTwn!o3aELmjlS14=X{j8K?>kqAv+S(~r?|CH>gs zK9#l?<2t3+nEA{w0h?ToCWBCLG55dzx+Zq%hmH6eFUfy5lz^krR}#Ajv4r%CUFD}I z{xA}NnQg5hHNr|JIeji9Fmu1`1$x-LS`rYS!Iq8h$7*EA4Ft7$;ew{&Rb_=yQv|QE zMQ5=@8{p5tNF%>ihK|;eR8^M;X`oLT;rM|gce@ZOmDE?uQzNk3kZ`#5yC_S+8mZ^o zR3xJW)AH%>o5`Rq%r&f$%5B1dC6Nf>qH%StzVQhLgNA&=QaHo}qS;h%HkahQP1k`O zVki}N(oy!0-vcHm^Qqm$h1wuW@ev(2ir=qx$S6>yeA4D%_dY?c_EzL(*|pjT9hyJv zFS@zj@QQ+N!Tcg}&Der8SJ`HP8nn>VIiJCk(F>qvoKcAjbty+C$KzQ6d=s`ztC23T ztp`kSqCT~^WcPbERTAoOMoC+JQIus3$5eiQl8&llmq)@Pk(@PPLZwrRGYIv71BIfs z$ARU$jaXrP42X^)Mbr_jhiCF3uXkjKO|?P9FBR<*>+>hw;E@KOr_j_ax|7a~#nX@4 zztYvcdkXe@&x?>$Psh{i=Y26-Yle6%=l0&-gH2rc+<`^hDq*6kj7@SpUi@OZ z%rbTPW)YiY$X@l`<2tjP*G~o(+T-tAPM&;;q!fp%rHsQBnp0Pg<8^B`WkscFuQo5U z=Zk838@liIB))(Qu`Rl>CN){I;dv?43u=5H#H3QL5BI_aE2#0{p9k)STd0=I4X4BH z<=#4>v*|IV^5A!glF$ZZ&6Z1(?P%(w!gZOFu?d%fP5VIU?PbYW^Q1R#Ivz4*|@w0CEZ=lMJrjySteZ8u7|@2Cr@Aa^40_K z+4=VuOt0Ml%~#iiBB?GiN_mkV7wTe7ZMbk_fN7>|ky)QEggZ#=wxiZd zcb58{d#8*LQgD$Xg!IKbcbBGCp~Jq>jjlMrh6P@vSZIXPy>npP=Q8{-7NljzndNZ=TifEk6qDh|n-h3x_ zqxWc-H;r1O*SDO)zdJ#NJ_!g`0_dGo)Z@oiGh)_|EGYd|Z<)BQ+7AK}XHh!rxB20) zk+`a7mQ%6;B4VLm{yzEOWlw*zuBJwRPSQCR1O}}40Tu4WwR+Ca!5cc2UPimg_{fV#63e6;%AH>kfo3C@uRn*$BitdXE1rN5+=6R5V=ZxERrTdz>i| zbHYxT1S^-OYq{yPc;~|WO|JigZJ{MP=Ix$=!}G+v3thF}u@eQpzvbnKiKmPNzJA^C z-Y)$^2mC2;abW+Foo(^}FWO@71bIU8jW7K6VD>kpCgmr#0tXEKl)XCyAw)q1m7?qL zV9ct@K2N)3FCPeJV#8>hd;S$f=i>R?!7z<8u^6j|nO5Z@2yV?`zO>fko(Faw#ZM4j z-V|~eF$>{>e)IY&!MT_oJN}9xhB_krBj7k`+@|>`Qll8_?-wiGOwbE{JQ?Y5#PCZH`eLUQ-aQq@Q-5&}V#h<_e5YdchrX{Fo;tHxom@7~FsrgLB_O!*w%sGH|I`e%d-sDIJLtmn*XgfFDd%YBuBGb3hIHrgghSl8 zUMBd|YaIB(+YuyLkPQqt*jf*q76I+ajIq`CcMBK7*BZql zQFP*jvSYWY3Zf8qgJ!_?r<7*c_FM9&MF;ShXk*SacO^G)GETAsDwi42KkSjNHA z$OT=869JwTr>!yzUisTj`JMA{{+mM{E~U-WHw|TIulwAUXO#}YR$~noCS~e)Y$yLI z$~tvfFznDVoMDRh1F6fGaV4FOB0Kr41EIsrW+~py%ia>T?cx!@N%rj3$J7#i6=Y(! zr&HX;Z=6=P$LDEa?{>dF`-ZxLQ{fYU9aq1}`cglV!#^*hVJy>CLq#&9cllOG;gUMaIX@NR*?rN%~MAiB_3A`EHVI@}ko zVIYF$y*sA9;g+WPS6pBO%JAHNv`c5Bi${*nROstH%KT_3^O?Q=>AzsHpkR~{jxM35 zSnxfG&G!ek$q_#L^2Y5`T14aaFg&$aV(^%!hu~H3kWEfA!QJ$&f+7)ID!XFr+~`Zx zOTYVs3E0uk@%GK?SNxxAfSAB(1u$GWIEfD82vaHZy1+Rs8)%MVNPf81_7O4Mu_WE! z8phkm6rt0Ct9fi%P_JcKn8O)|M2{r2`c1*2Vg(_kiDoO!jy!9%=PS!#Wk6jH$qV9D zHKPfmP9x{QffT`}nmnO&1l`2jJhVNAcQUt?R#F{Bkm6dEwxkX?$Dz^b+&LL|2D_5f zuZN5jziVa@;StpAGn5YEoyzDCMikpcQ^o94rm%J5%&T2>ich|*XI-5T3FjCj69yM+ zySEdk;iq0_Ah+J9CiXZLX#Q3f9FJy|yLe6e26I;GzM7!iRryRY@Ilz(fhWl=YkXNs zbXOfu_i<%tv8-^CbM6Jpuemi85*pO85}yGYqX@vE&IK~1!8>_vPBuG6f0lMWjIn4% z+`upM5YQf{-dm2wD`|o~V2|Nm;2T`ZOYewboShxrE1Bh(Zm+P;qi81kkyN^~kZPNO zXuf+}DeY?VgtQ3RHjsE1VO%CrgsG-xcZ|y95G{9Ip#S5rAv7?4RT&+odtl-I=3$-! z_?wkVkz{Mifc{B6FOTm;8;-j^lRkBq?LjtZ>9aH6x@92yRG1|xj#d34{F$qU>&@Jy z1&BAsYK>a5ju;Ik?sUXxX zzb0%hBL|{u;G)KP;5#~vJW8Xt3d3n_`uQ5z}z6^g=p@Ngew~u0@g+3dC+U2>anJBsLu8l<)LD zwtO}O8bwt(0)m=})jF?58v=9i5f&6uV=&eGdg7wtrHCosk$TF}K8#);k#)ZNV4T4H z7H*B$MQ-p*K-JaC(WVj+#d9AAZs&9%qGNg;cbq(SnK{UQwn8&TqVS3Pg~H*E&|)$H zzMhO{fmhOdNuGG&7~zuM^9W&9z{J4I2bfZXkM{?oPh<6#yLsx2}PA{lv+? zSqMQH8f)^grc*0X;5>pNi-p%VyV@Gc`n9Ape=`Fy#`B)}F=be{dGd5A;LKl<>)|}> z_wlA|U|0aDjytslp8(K|h<~-MFu^(L^VFcp+U3~e7lfPfX58s+iIpZR{^0xr!5dq*qrmLaH$bNTO~2LbX^~+N>i|lnpBXHj z|9};H>)P;;w?*xMbE{zsDr@c=*b#HW1kX*rKt;^rq;xz3%93dFzzHbW}vbW1jPee-`95EOmLt1E&-9DWrqzM5xoXF%b~g2NXNen>|eR^qmjd(1RCe&cU-A%}$RQVyK4%hq?-Ip~+azjAd< zc7jVap_~tlYPO$V2GIlN9YA5s;^yomK*u$-_m;`^@H`a!1?|@)LK$(~{R$NV#@1C? zp0iji2}sLw;WHFpzAu$QUa4qiElncY8!?4DAW#8rlCKRv-sJ#n{49-42Ajm+5+#-FW2kJ&LttmSBirhFgK>c;^pt#Y zN3zf^EsfmmqfG18PSll@__;K7uNF(V=1Jjl3=Be~Z4nuE+)ZT}WNpUIq*}zuwM29B zseG)U(zU(=4)#$$hF;-oNVR{o_lh)L-wWRht^I(NcVi{}PS11TCEf>bVvN8QZx=v( z`s{dJy)0QOhw*c_uMP<1UlH0rr`rA-Li-Q0_wR(3>3@{O`wQ!w>CZ*Pe-PR~%=o`G z8=L))-T(h3v|sVJe-Z3|5?ZFOew%-j&^BsHM6ZgXb$yx9`f#~Es)3ERQjCDyQ8?@v z#F*{=*gM$dp)_{Vu}~7Nv$v;*G%6_Jl}U4e2ZVKDjUDc%kGd2Y)~4HMuj$?!>mJXn zu}qj@)MI;R7hXvLgpzaAp^5}VEbUs8UeLPdk0PD4pBZ$@7+{;%yYJkPA8&>>bve6H zYV)SFGV;``t&9S?RV}Z{?m7*xbycJ8v*X^~uiFRX>*IKANDvTaNRLvx7!R|AGPBDT zF1M?f+g7lfUMYcsX2)l~q8FxMLBgVaKUrRFZ!goQa0#*TNMX%VhYV3y>!(&ELzyF< zs4u-VokdOuj7IYPhZiO*J#rblAE zP4#0M_h1_Obt4$+SgowDlZ;xMNHU$kgXP1!j{jO;74RtJOBSvc7^ruf8Q5ir1HA1~ z(fi!>o3*U;mR);L)Q{wghu>vmVLrH*?30bprRAjINjgWM~%v6#kXynMm~0eTMSwZ7QkC;EeF$36>exf-S57Bqb+s z<4`^Q7}7Ek1rZ3UAh~~L%brqwmCSx=q{{r~h2=%?kNbn9&CP57xn23n*5AFR`6X=g z`8r26wWK|5{6ghL&&KejK&C#c{giV*4=}J!q4Zwur+84`3?H-qAL`x$s;*?+8pYim zf;+)&6(^VKC=(i-x~GaleteX@o}wlv zKxyTKn$^=`7oUmzU zH$c5j42i{$hw{*d5PYFgo)N|Z#*mBvlzy7$&GU1HAJ`nts<==1(%IlEGz=caFacz~ zRW4n<>QNSt#u-+80^4NJww$kD@4oQ$D_A;KyMFp;J{vrOywzBEaPKFK8bxb)ls!w) zaRXWB!^b=yl~V^t+C#FU7wCG=BjLq8D$at=T|sQRi2CA>ol4;V~vKL1{+IDr@$H*tF9@m=^^T zWlD9^+2ei{I5{yycvjg~o(fBH{*^M_D{UZQZH$Z+T5zUO1P8V=LN0R8#u?O`jy6;t zBQYx$`G7nRQW&7Y#56Zz48}nDSs|ST4yIIFwRO9U!m}!bi&{j{Q8!w~SI2d6aNqGk zkrH(*A#~u#gbve=bXDdNv(u1jGgCLJ58xoO+mJY=K8n}BBDFPpRR`r1sGgj#-koCx|Iawve=uTN6_$6VHCeC{m z4unqLP~;`>P~%NBFv%hgcu4^Z2RD`%=0uS#TS5aOBP$Fr49uN^>pQV-iJQS9X`GlZ zUp-R5yx6LNrkaM1*k%;LMJL&yBVHsZZe3LCNzo*@m`jKz9vsU|-Hr*LBz;vQLTE~E zro^#xKvQ@w5JL7=)a^~^Hinmjpn_|dF%|D>NF|};H(ZFgP?Qfb9H-pqFWN!-sQMo; zN4t&ESXvX!S){YdJw?8@>pAd}>vD@CuFYky=C_J@#pg!2xYQY=M8zl7MpxM#*tf!a zMpF`J!j7&wA~2h!q+X0T5>kCFO8Y9AOX(6zfE=U4go7cHa>x1^PNZu&E{<)3QRu5L zoQ}Rjq^JUDqOLYcN8Fd1$XY8Tf)|`qati#@s!p2-_B&Bz9kp*38m>XW1zWdM@bLOc zc-MzPw7ITUgBg;Jp=PvfF5h|Yrbc_Wvz>fUXQ$TjYKZPYk~O0ZaHt)s2IHt7r(_O22pvFdu1 zVw$9os|zc)sPz5KW$f|uhQisvd~c(nR1w6Da#{b=sc0I{LA7Nsf4U#t%u91bmmYSO zd~|H4ydiRSqmBzy`Kw|uIW8-vdI{KLJpJIHPaoF>14?qIFTn$&V1?COs5A0P_1PE!LMt1fxldVdSd&Y^gaq!q9t@e8-P5_Nhba=ahMMh0J+vbP*7FFBr> z70i7bOs-qbLWW6xK90b!OVgVoDrX%jSrY_#a6P(-a;~Au`MOS6z=NnNvz0!2N=?(H zT74ZqT?8_;`-c4O&iT`*HYs7LHhE08yYd&YdCh_YEbEXjYqsT+sae>(ggh;%msYf{WHmH?%;4=w!v7UNZJ? z7(v~>2&A@!R9V3LdIN?_3SAvc_(=p>E6Y|GT)P>0l)IDGk8NV zHReM~W9ymCka+4(9JA0uADHdG7P@n3713eo8)f&zkVVUu5-vGw!sqjrYWT1hiApEB zy~yia#mo(F$1r%s&hNkY`ID|mQ4DuF4f*7r5A50`dGHc_%j`N_-6-Gcxw8!|U@k;gK zt{w|RiqJB#@%qrBBdlGWdJL^9cvIoG2wC=%6~s(nrFj=5%Fw6Xfe05s!NXmU^+x84p*eyb>MWCC#3W zo6khX+D-d>FDm2p+Igi;eAXvm9YI$K#K}CzvV*9&WhFAYu(Ykawi`**d*4ZbA-ts# z39vXCX^?t@_pNW1!&z%{{}z4yz7gb!M9q%$MV^zm6r>bNDq+|`Qbd)?NifASIK`@W zLT?Fj`{CzkV}VslN@N#dpS9Or4p6>&aj9)8%I){>`gHvg#q+~wlVfOud*kn5UB0n5 z9;!?z#DJ|!brtqtUU3tK%^bSCX*KG3^A=nl-nrJ)k|zqR2dhitE$t#ED@XdB6<@yt zj2?^XML|(S1Z=>;*GM{y7(?n&ZRj#1E8uQ!3%X$bd_^q12MHQ~2u&^^L zwwRESboCKF7t=nyCzgW?ru!_;2=2z5%A|C6e#$~SeB-ic7Hn~{xuEWr9iO~(rBpw; znxS-_Y(BvP3aR|`cHhe{Trm|@O z3fO*}(ejt6)wy6dIvenJ;*Ve<=pIYhdK)BK66)BSBBrG z%wS{e#Asw|=*VcMZ)0R&Yir5qYG!OhuW#f2mnHmM;rt)ko&`90R^Z`c1zMezlLaVC z!Uk*=$V|-2&dR{a{$JSN%2?mQhQZq0(81Qx*2L+@MgXVn>M;rmwxM<;zJXU9M7(vKtgU+xk!007(&pwbF}gMk&;LXicyK}=79t>7?E(Q)@HOs$@!3AId ze3vKs|GF*y&AIri8}}doJz@hsAlSZ3GyQrlzE>SF|Np`k4*E7uw!lAqc2>qt=C(F} zeu)0LNa_df_-9E|-$hA(KU?1&)ISgYtvrj9odE#sDf^cSD_|njKN!pcd@TQsl++KL z^V_NZpPSVFyCSTgr4IfJkyTFipKq>TJ>oz~SB`(`5&zzgZLt>9J4=`3rU$KD@h`ERv8h9KE+#&Vy8;sn9z69tZl|U&%y0cZ08;d&Hz2*n{G)L(!fsGCA zgy1&5=yke-@(oqz7ZsdzudTZ`?B0}B+!t^&&TGG!G4@&zYolw;dNgLf-;VSHVbe>? zl15vl3RQZkZfi>9oh^j4(uz!tnhJL`*k_H>g@Oxjrq*#k7tQLS0c&Qg43&W{W?Vk& zFYJt7!FEvNOV=DNxD%@Qc6&|Y<$B`*K+OANkJqWj7_+rRa!*`0UJ>(}*!i`pT6G(P znyO#CJbbUausWp|n5(gBwz>?W36VWLcF4?S@8t`c8PsikP#l14QIzl}hIqR!$8yd=HwPjU+W5{vpd&B-$^n&Q+y8a&D(Jk-!^_F z9^;*oRZlXD7V$c*IXIb{oO;X?R0;RYT_Nl|VRn%Yo1`Q}y^(ZBv%giy*O1seC)7>8 z0U-tnxSdsRT;Rg-?P`GYVQ3#7@nN5XGF3}rtAAi=`!ZZcZ2=u3qG#I6{$cP6qcqO% z5T~C%d`LE^q_bb&4Rq2U*gx-Ej=(;X0CX8xfx@_{9Y}KXak8}!tZrWDdS^jJkKGCz zSHB{*m`+Nq3r(;h++m_>myyaf=6U+jP%=+)|0QiyUxc(F;(+4%ICTU8;lL3_urL}8 zXLw!dNOleyTFKW)ss?=Jj8V=@8ed-)wkOb9)bTe`b+Rm2aUU%}7C#NIzPB;)e}aHZ zOFn-IlP#IXr0cI{SrwU)tW7P>l6uQ}{|>XaycWsQ0gqEVs&b!cO!qMtYAn|1P5o?! z29qkF0(}5R9`fuk&EhzT-(}RN5vfrSJbIzd<;4AMN}LJ!ru~bBn}WszT^+Pk(^VR+ zI~5xR{>4;grXmZ3)Cj-S*IoOmk7Api;xY~IuD&vf z*uXBlW2NToD(cl~m@U3(Bg)ZbW-HT0FY&xVOO*e9&rT?cvC(?qM= zckXCNF$U%AKpJ*-M!BWPu&)$G2U+&*Y1)_*ek+z|I>&q`9lX4%RUEp3c*0XSTNZtI zS(|jv=PZ8n_mXk_v)6?_0^JsSNw$wFPZW7&Wpj1=>s6bdpIng}chlUBv6}RTs6-qx zS&pwuY?hKrM&gB9XSLkUbs6EZ+_fuPo>$<%&L@Q5k+ykUa-vC`lkwkdK`Y-$Fg>Em zKA-EQyOMOvnWU6kGHQ^?qlubbj*j3G}4eZAc3K57=iVtwgX6mvtd zR3YVAll{1EoDuG;4EeSDwV75+$ZiDg`J|Yqp`tl4=Po(|$ta?{49A*mQK*a*nw_b9 z+<@3v1q11@}C_-6=%0QMs_UJ#Q2TNi@P6gH+K%j$n|TtFjo=h_L_*jpA0W%#lrP%5~z=CwCW zw!w8h22V#QL#nhE_3>lc<9_X2>)sIwe{>O}>_SQHJ4a7mb{*ah8HYH^ejSWStP`<> z(17SegwT{yQrtbkIWeuEvYWRK^tk66D!TVDS!?TbcL$0)tjLehJ(KXp&R->Y6Zh;D zS1}?w?0Dn(VO>KUPwaU?_iY&U+X%2-_rGw~ONKhlc)|3SY259{SnnkG-bPO7OK~nL z5ZRE`f|nWdWmmj#AQ~MB*;-fF;!n_*fM3k-)|~HPjd~1jU-sl*qk{P2^X!{E_03N# zE>Cq`&TNyfi$6MefYO*izsrBxH|-|}5Bsl<9QGfcBH}+dY<~RTZ>Z`I#7WuN zz{%atn3z%4+{W_n{Wsqy#`G`$4I9u`!v^3W2C#7geF?gc+ZZ@5&DYtY|6}G#x11msVFFu7~X;->Beo z!M^&uBSIIq9>Yo$;;0OEJPqIMS~Y@QC0}N6bn2TY)Zfzc4jY;-G6*{ab|d=)tKquC zr)dFGRp*JN4MS+vM=JXIeD-;3ODoS?2HcjT&av#lU~Vwztja;G>$&JGXD(4y^>y9h z!)dI&G+;0DYEFtA53ldAeDtFvRh7D z(;q#t5P~GZ7>&)zNy!3qlwpz}NWR)Vem2%*BdXfUAC-lW?WlZ|ciev`zTB1$I%kNem9i-kjK8W=iX2C6TS5IukNPGr-oJ`$v(cA2B3!0uBKKTpl%xu71IBA6fP z$HkWv-``x8=5b%!Qu2DFV=aUjVUWlNiVxHdZBT6b=^}mL$y@hPD%Tsscvah>CpUbz z_+h3;P7*5L&qS1MBcjn_e?=&y)waLvCciX%JBKR=o#d6m3A$8{qj>01&}&pgld2h$ z2SBme}wrh?Vg)Ml7)fKACR$ ztXEFBL3Buov{TP0CHHRcTF~`Kgt6>IoaGpTABHoay(Pd8^P9C@(|Pu`wvhc0PMpVf zR{CX2u9s|V=T-UCp8V!RoE1}pt_EDD5@gu6JwEXG>Y^_)>NNOYKY;Z!v?;M*rlmVe zSJ@GG^`d6Hx$Abfvy#WvomyDR-wA&>7+^lp3OK5_N`&iG-lDG+e6Z%*u2>=A1UY$# zD;U)@bz{mrOr)=Yi^R9{r~tb--O=FbQCfeA2fkF5qN~tWRw&c*f_J>JLdJ2|w1oZg z_07u#D`3HdXv* zGIC&QbQEokC zjp_}c5YVDZ@+GhXhz{DdD~&>y@8r$v2vONuNo$}tbTtECte2zK4Ty3 z?Wj%OqDSagPml&Mw!=wyLvBltxct>bd_0x%?u%OM4*cZyt|c!`Bmv4gkO2ieIO~FU z?nk3YF_|$}l}jR?r5h~4Y@K>u)@*7#Xt1L@_lE84P$G4wXtLCx$*}btyA1F7oT8y+ zPt{qzcA@Gg%G*Gx@hcjpiM)0(1)zgjsif2giqM>c@#Yl|Qp_)-zC`NBevSB5>}qt& zIjDCnucPc`_yd2q%o&;`w^w`9!Stg?d@TzWox;biE}350La$Dh@UaH?VNtZqa%-hv zGqwU0Y*=^_YRBn5%E9WTbO|^ShGe^V>tuKF`?AswKOXcX!~v)J#mjYg)R%6<)-Sn$0|O zNoEOBkngrh7}r%~L;8I82(`u%Ulhos$by7@mbLiIn0hZ@I&qNt!ou#UubStM>hS5^ z#1Zr4CY?{4$7pg7Wz)TnKdw~gF-$%INu#HVk6;Vw)4~jGz9nYLCjt=^y5b0OBi>iC z7nOi1n89(hthfybN6fc^8Kok5@7%rGg6#+W(9tFI2TbN>i?8b}GiB|bJqgOzPT2W~ zPf{b9DFUBSsVfG~oZ6=*C}Cg3r%m$j1`t_Ign)IaYjc4h_`ljY-19iEXOb6GJ zb|DB<<6=m>{!jcA^vz2<8yF!dII!r{<2to(o>@UVc<=TLKP!;$5FdPN($s|>-H z7T#xe6koXGhu`WFxCXY zM6o2MjkC~lHbW^|dlT|N*M?wU1r5eZ+rr#z?MsfLDWO(bA+}dJ+WL2ME7n@y?n*4$AOT`~ zhLe_i%*t0DP9km?0j()k%09<|vJ#?RX_2Y1p&kB+;~H<}i{i@Xw5F1%0j;1`O5lht zpO9o13}W?)RKIJWIWA{odq6H^FT8U z!Md$Ik{iJ&lrCoL<0O@CYXt$hm%7vWMj18R;aWAHw&J!A*@Wgy9yozzV7-2k3CBYBNtN`_Xf0BR=?_GuI<(JX5H>&jMTj+ zT{ub#x~lzfIv%~wJkSOB?g2l7us=g& zz;|^28=Ct8LVt{|Z7`m;nr&e}^Lh zKjX-MI~b@r22?@&^OZS&toyfV|Mwsi=)wg$hS`7)$Vv)+|c(EZO-M6j0 zRjAG7ewCpU;VIQe!iA4y8r+6Udr{Uh>gjlTJrIE{KrtSl-PbAWk*ubJ7EZ0GgO(>O z-ruCq8POsyAg%!8YuP8)n%beV z!s47pn}8KYpH??7_tP&y5TL^H>)z)0UEUhG=6j!Nv5CBqTi7EX4}e+CMXoZeb?^OX zV#h`qTCTC58)1$G0x`1FPSvDy^*6O`)_6+%|n&4R4X!l;Kn-x8-bW&HZYw(7Y zjd@3Pw%*VnQe_Zm;)=D~_Ffm;ShdcdG67P9PUIPDAM5$-UbQaGQpRN4Dt>hL zltxR;B~98*SXyu$m;ygLy0*hu`|h`M^rG(rDcQ@fZ5$V(X^L!rR*vzP8JkK zsxAo?$q`wremzt{U)}wUX>NBI;5jtJOAZNoRSNm)6l;}M*m8qj5S2yB{XlJCp|a(2 zE3K(cPUvN7WSREog-y`iNRNSh^(r+kswUE^!n!Y?*_cU{JW#A>lDEe02LgHV+n0tF zy_LGZwSVHXn1iFFVIRB$cKGA8fm?oI`4I0uRKxM{;SB2SYd>6L(g@Yaw}Os#ReB=u zc|n5+=bope>fLrnGg)VcWz~ysVr$D))wT%gupVr+&!3Br>c{G?80q5SvG1QrA-d3@ zkf_^VNcF-7871hm#4!g(0E9o@R!ApN1UA54OW0lV#~4{ByH-sZrGy+R(XX?;pQE^| zR<0!JJwmo-&mMjKbRAFNYv(?^M`ThWbvAHE+|Of|Q0v=7QwG=c6zs2G&98ZR4zFte zveL@7WhviGUb|1YM1|abZ;;p?`@C_luJ%@-J_QSGagUDVWGFS0v%gu=NNT;A1>>bO z6eQm^3`)ru1`OofvZQJ26%5I@mjD#U%A%~t?SbPr@S(5K^WPob<#RhPoCN2Z5Iw*D z=4HUpD2!{EvA(_@*cqV%8o6^Ym-Yb1A7s0Yi{A(HeARUu$Cy#p)>|`jDt`g4CNc90*>Qhozc*WQI`y0<`cruxq9 z&|DEA(OnjIJD`8A1Dfr&R%1%eP;JSVFk-*hh6z-EP`&1{Qk%U8DPH8XM;};}Gf;Is zKosGkR=2Xb<=(R7>?+?-SuksjA4Z1W6e%JW=T3Ynaii$N*nO_B>2~3`lx00CKk6oYx5B6v0k)9dlZOAbvl5 zIM!fa*V+%iPU9aGhW`BNh0csiiUKst6~P=uG|NWwu#KyqY;Xq>MPWnB*An&@ld%?I z!yuP_60wv>%Yvn=?bHqlckQ5fP@;$LAu02?WAxqKWOnModI_$Br9or+em+Lxg03!Lp8_%kP2+udtx{R#b4Ft;*a8xY^-kUA;r6+m zYxZ80$*JmnWtI!-px@l2AYcSv;VO1C%VU)jgAD{JC~j~R8*VVl7gt3+P~1gLAGf_H z$bIi7ioe=rP|~{oOk9;y84c=;M2_M;Y9>l0e)iN`5x+qYdF%V$z2%}QUwvt@0g=AU zAS|M?=iCx}+w|0Z7%19pw1*srNl>-+k|xZrr*#6ry#qg>ag&nWT3bVl>i?7oFQ7t3 zvPEtLlkMV1!MkI3T#~(rZBHO{%TvbacW%`t0+$9>ZzW*mUt9v^E#};1r640|@G;(M zdQ?}#LpfGudIpk_ae#-g#^)la1atip>ja7LC{)r+<=Urco-CoSKd4;J?r5Hx zwO{^FBj{Omp{slcSI~@73C*_R*4lf6t@@)3K@;Mkgs%EKS9ve4_;Rb-d@mvqLO>=vC*0|-(nLL9z7vb1X#RT0Z-GGqrE%`u z>bQ6+__(#Wf+b26qD{RaZ!sK8^@029)$m4ilrYLi0yj_}Ui*)Qr1S-}!*md7ub6b1M}!0;E>Mj8qaU!o(o5T4AzV|G{n$#5tTT>Lo-TN+9()5{-!1ZasjE0aN830`}(QI6Jb*+$w8&U5PEGwHo4v zMxFozECAu1A`~3Etd>S!5S%P(VN>nRr-1lK2hZ8cCV}i!OEN`4wvA(im#0j5+WhC=u?)P%AyU=_m z+P$kF!gFdKJSX27&7^>FDmgGCF50U zOOk|{0S9XA#+^F$;f>aCqBMD3jEFvAl$6H+xr6=A=cST>XmI6li(?vUvz~KpmLZ-_ zLb(R>6 z&D&jQ=1!m#E+sfQU+om;rS&1a--Hn=jU2vR-?`aVdQgRX+{g-WOtxz^hwBD_SZgNR zJ(0zr1Z50q$|-T?fPkNStO#*d%<#xDMMaRXLhzhD+FU}_u_kV64uG3>y!AZB28%lG_2c9wr1 zIruH8!N&gQpa$S)m-u(y^uuufENt+d&HZlVf54l5Vn>YPz%>BlGCxQt@&CJBi#dJ{ zZT-fn0PO#`Yw@ARJ}@l?_1W7eD9yVNVsR{2v}L^8_i#Q6e8JgE4I^j+c^>ol^=Vo4 z*ajei_}SBxGuI_=ss;F@1bHM?e2W0&RPHetu4VW~&Ajd&_Gdd{bod=_`jywTw78i~ z^$&RLQX9Ultk zQhlx(RBd7CucZErcf8RPO*O*!%9{(d9jH_|oGgkuh+R%Dm2tbb*(GtbIePW6>rD*h zu=uqW7g}Q=i|^Sum%!~8SPtP6KPCtANXnyox-}Bm^Um`IO;7)(seY!Xqj%p1(C|t` znT8)pniTh{Btd#G6(-XJl{&T2_2nC9#LDoBtr{;Ii#6}+CkZUl8nmg4hx*;Kr6+<~ zyu5|-s7~M(O*DtGMe9qsMJ@iiR7u$Q zDmbV-+2wabHntH8sV|yS7XfyIYQAR^lR5Ynry*u-E2(%o^c?~bJ%eCLwo>xsEG?u! zwO%+|5#FdYqlU`|*aO{9m^4D@jK!5g`T^};Q?JUQB0!h&77DetRK$u`8L0izQQ=iz z6@$evy_V?4l{ZxS@+vjXzGOQIXSk_h8y=gg=T1iqTjv1WHH#Ow(UkR5UNHBm=FCcb zM=t+ir>+}Xc1zt2HkS3&IFnyrL0XnudrfDJO<`qeXhiBupqvmEPYM9h9=V`dO1?u< z9u0w4lFkZ)W}aymcC9J0cv+?T%#$^+!c+R)$deUs)O)ryWll_c1aDyk)5+0>2vyx1 zS;9!V^97T0@T@R$!gq5;c=W!!|zx;e1@=S8TpEMwrbT( zU{>@fTOufyLe3T+bg){3aS9GJsIQW6%E{(Vs17GkQ8FbsQo^6@Z11>Ad}?OSs;ITe zjTf>~rJOp{*EeeHz?(BrG>D=#tkbsSP2vXJUF!l}@vD1I>Jhu!jtCb-DMVEWSn8Nr z^?tP=R%qkt`a~7ZyG)cP z+OsU~kY3F>Gx_QaMQnosvKRTu%%glzCeGOmMTMiX)2kmmcI1RXrN6#18&vBO^nb)n z&IQkeae4`gTDO}-@1>S}k$;0uZo(X6sV&Fd#$Ibj>CTp618sAaQ}$Y(X|j1>9;@s0 za1feh%zV>VONR!1B@n?D4=14I#E7%JbiV1Ej6oq*m;NReTN+PhjGs>BI5mRUgr!(E zlu>RlRA;n*DBO+;$D5K+iFORw4NB#lMLN6YSEhzXwqvFv}Z*>$M$Ivo6Pat1MwW6<9E*Y{xJ^QL`_Yz4uVB#&! zhUEVKoV)Ai}UM2mQaBE&Jvr#b3Y|^^& z8&pwO=jjFRBccint{)n!7^EoLvm}NUTJRM&FA+(?@`N(g z-bQclW1tZ19rng{9XiI=x{a>G6YIXhE!ZrX6kl zFt`{6f4~V}F9gVU{TM0z+-pseCnj8Q1;|9FoMjGNgfgKY4Ypm3c&?Tbm<3Wi5>$D_FzruhmRC>xjv>{Gs|?V;kyZ@oihsL-w}kTNGWw78qqJBXfM^+EquWCf4-#DW4QJ zkDWU*6|!od%|)$ZJYZ%aM6r&U5pSepjbko-@>lRE;B}?^TR!zND?Wzi?pSs5Eydst zH4ezA`nU`idP*7uT$Jmc6M|B>HHQ>(nw;9Sy)GUK$io*(5CvRBT`7}c5+rjr5`|bo z!FNDLh;nPi3J5=B1R_w^35jO;EIo>QHKU%MHuB?KK_e}PWD-Sy2{#b370y)*wW)VH z-#TmI4>D3bZ14c8{`SEROT7Qy+T)pJ%`Z#USlKJ+ z;6&GXtawK3)_Bs=?vu7V#sSIF^k}{9vP%i>`%%$vDJ9n!I=0O#&%HhZmsed#)`~-0 znPqAhI%@kisWs9s-hOt7cejEo2U(&YnU9n7 z1KVRV+;kB>t8~UY85{2VE@`j+U`R)M^~>vZlF|BUHAd%bpR~ELtj3~_>5fx|sG041 z(D%n1GpogW)AteWruO&<^BXk*zf-W}_&Id(_f+KvqWvRP;rNkA^`FLSex@qFl+1Ag zs|db_EB;7XeoiL(17-Q2OXt3qXMAS{0ALvpGk^_PJO^N42jve35^c{>C^&Q=949y&DZET$# z>FpeBO&#>Dt<7yr>FxBLoQxf89RK}0tZj{qt?2dbtp8M?@WVQPOWyuxOE7bAGH?Q` zx&Z9JpcSxEkrkMI1^_n30RSUm%q*<`cP;U~vWwn8-_h8J{*Pw+#ZR`scBn96zW0{oAn|3>+MPliK#<4*l)u{5?DVJ%No;oRf(dIEC-G;veIP zjN<>keB|eJxPKOJl^8V73EbaI(BW8L~(uaSJKrlvdbfRYJ1A9Q*yBI+uG0?TKUC(gzLIt`K8$QFjx?wsYP! zi9Pfvb)zy1oht?+!Jv%>28K9jqHmOVw>JeqV=nP17%ya0#8)KA_L|ft-af^?lVu%c z+A^&YQHI!XP|;??%%q_EMqCd!twnE$8ymRJM)}@g6Lv*hX^lN>dPvDE#Ua$rmN3o| zN=AgdfZajZc#r~pJ`m;gyFYFf-%2!CMqYCcqRtoR!*-v%dMZX- zo*4ynIlqN5dd4^mCCMwu{Vcy5mW$IK6X@s<+W|{qDsQslvq!S)TB&(F=mg~gD_=s` zPS34_-|ybjf>j-pNUPe^(`hBFV7m_pW_B}+KlXNq7pcF`JEr0MAnPHo1sHlL0G# zfN9vT#m%+ITK)L!@zNq58l+TDyxAW<|4U#;MCWO&df!o24`!sg)|eXT+ZS%{%kTDa zJ-6v95BRdOYXaH?9!HR3Pgj!K^HyqQK*z|(s@M}l$Z0eGfx~?vdFksWiK1)?8w3}5q-32O2S-W{Ky}Khpy>P!Dp(HohJqA| z(f%F_f%byR+YLj7d>T*Xr%%=|;S_iZjgaKZ?J>Nm_yLZ%pbvnZ89z|Suk7D8p7ybb zCIigz9PQSWOdb?4IhvxrxompwU(J78x$j5xeANu>y_`t^BS%{I#220T34dN<)7a#_ zrc}>3-6`0|>bAByMLvCJWFKpDGARWW^VuE5yolcVz!il+$wo|)SE(kC{_4c)bt;>Z zXsA(s!c9WVuSpCdZEutU4kr3Om1YNn;BH#O+ZQ(%bbyLA6$6u_igrSX)0KI-Gt`Fz zI}yP{%sd6DU@}MO`V&pdQKht<#FPbm9NJT%S)ZPXdcENnUIs6k7EVRn zQFqX=+8=ClZ(l5I3~$FrFx)D^HBTU&v$M&s4cZEBb~RVTDoM z-fg4aG&nq+<*~r`$fhYJ(Qw71j4T2gUqThXvxjTcI;477`;5o95PUK+P9W zQ+w0#;lL5Z%Ctswptgv4;wFa-FLS~rux!s0uk6eMF*sJ#M%7Vnqg|@PRRqW0@`XJo z07Z)f-t=+4E_6Jb+Cp*`?%DxSA6!`1S==k}gTU}${JtdUfy!nzxl0nbGsSKaMV9=eyX}FTIfR{5Y6f9fXa2r|kj-uFCp|5GH>3dMw(y z9BxG~kNH5~`z$jaYyAw@T`+^@TfEfbRrZ@O)>h z-XK27+}p|}M5DQ}kXk8k^foTCMrR9cbvb%#dOfcXwL+i+K}AQ%L12Zldu)t#%#IHlU%pRQm2IAf1(yFrNhmHhM zZ~g4Xxh!a0{x$&G+DmyZD{yrI=L)r?WZNFb>!`R}1F@~tF>Sf-)>(I4eeLy_x7E4G zYS9sdaHOfhL3Dv)O`1!fe2r#qtgO*;dDLwfoqj56hd)*3WGI^DX@KZYJ}Hs-yHR5-~jt}9_meExy; zh`EgJTQc8o6FM0M#VkQ=ZyLW{)#668yhjYd43RfT<0hJ{oQr=o?RQsW)42pALiXjtb5w$#rAq8we1<<2ja-kCEs98qxIMYXQ_DGuArvYuI3g4oMj-Y02r zjbCQjSt(;pZu)j$`?$*mFmQcPoFVmJgKJ{tAVZL8H&Np-Hk_#6S$@x;kRFGBFG~mu z@jA6zp|+mfs@(ev$&P5qFleU5`k+7!BH2Ub04-jK7ie&1(QWj^YitC3R}eHbND5=g zp$Q~Qc2i+v5(tb&EI;9>jCWy}#jUoASgJ>@O{^X&!3O)Y8kwksMcpn%{e^4sl9C=O z2#2L(y{6C)9p_~@Wf(VXmu2PRZzap2D%03b6Hna8cIjPc@tvv{qm z@-Cg@&BoEnhdODAD)eReg-;jmVqUAl;?W!~bgUbYiS+5o&r&h5{vQxzoW#%EdDhOm z*LoiSL7|udRz9320(f>6Q17}ZsG`Td*p(>d=fNZ^w8`ZO-t4^pM?4gNn>G`3^Bdr#L<)?KEJDgfT9gCQ!v!2U@N+S+F*|#a6 zfb1iC^)~=j)5#S&1aBiSO?a>30(rY#P4k9-}nQ5q*eYQca!743SItG-UMtz^800f zaGf97p#P}dEAwB(Pkt=oS8n)Q0THkipM{0xuPh75eE$8F|1}usJpeYu_$x*G-^3t) z=1>1mJnMI!_Rm-r=g(C6*9astJFpP#A7*s|BapTW0F>vWHep&Q6)=Nfj3Tvp%$@lf z$=FiMy=h^J9`yrFxHlkeHJWrw+YKQ5pT84j~0pLfS;4|cy^(M8&% zgg#Qm8p4#0Ec3%LbMUB#R#lnrT)7z$*dubRWwOt;G0 z(#3FBHF_And{)S37mz;B+h^UcENRNDBAy+Y`W;a_S;UCQ_M zc}?mWTi)S#Fn$r`Hr7-3{RQATQ+JZbPtkBo8FCiW!$f>6w#<&tX>>_I-r7kdWI*kREa2+ zvg_08I!6yq8R?_?S>{rKdA3QI%)H_bz^<8L5w5aeb%HH+@k~RNw7kHI z-(ZIz(MjjFh#G^iD9(cxTLuJXqETw;XJ%5uFcl1w;jY1Ks10v)GWg5+@&>Yoo`vWY z8usA8He`p3?3jk3I$YsAgVm{xt{os^9&WOhl8hEh?KBA#slpu)8?{R3^r=Gd&K-58 z2n6L80>N%H)m0BNO;8#TSn(p~A&olVhy({nuo?VPzNf0M z-X#dru#}MtcXts2`{W5jlTrhp9pqr%g##L17v_Vn$%TCP8Iz&-UC9SI_XV6n(GE|7 z90g9Ta-3NvreUwHAgsnPFp~JO&2wIJa21;@>4uS*GL%+aQqRv8JWAjVpCwu)7FuQ3 zgALO@w`oKxVT=g{ArA5Z#$gGTbH8rMiiAMrgzj=ncZOf_K`T>`C&|vmLHz9OXU5Icc?=Yl`-sNQijG^3Z{Kgh1DNIqcBSGoe>$wh1`B z96QG2JWqgUR|z%y+?j!U%m16fVcDjR(zMMT{ntVvRQP&RoCoy^VcpB?IT|D%N*8he z{Tj*ftu$w$hHYEJMD52B>)AvItw}_$ks2=^6nn&0RJ>=J+?^{Y8BVu z9U9|u3o6}8+?%p;*$Smc_;t7sAG55{>DGheahx6Fv>G#7LEo8~lVMLWxwIzdA8x+U?wYMH(#o-WgV~rEm+LohXDN{3CJX8^Oz35<#)Sf&yQ!L7tug$$ zEdK*yb4u@R&bLqIqg5Ls0@JFGOU+me^1SFcR>y&j?d4{3$lQM7QD69uDBqM~WhCVh zUr8+zw@1?nXfmZ8ferGLjX;ibknoBb8#U>tXsQGd2-aVT6`n>9F^^ zOD=vzSqkrQcLfF#dzN>d?`L0&d0z<1xfMHczL#8kX%%ME_L_2)-OP-{3TUPuetZ$)OoeOo z2ncHlS>l_{A-HId?4+*#2SflcLHpx^{AWb)+l}+*3IRY_{J&^s`Uw#L=6wIL><>in z+dh7c@MZmN_5U~f`6tE`;Pb@zKiyM*?G5^O{O2#;#s9!~GB5zh*LuKT8h(O>_+42*hryX>C(_E znGDr)+#7$_^=fBz1x;=odA%&_`;zeWmQ&WkXA3mW=kmIe`t(A}^qa=)*O#;DQFwS3 z?==%0-ciOWdo_qF$)k*PsyUYS=Q1PIl}FP;J%xrvXs*UAH5cMqh%%LGZR;1;{A~n^ zy0eb6YR@bwBklpd%rsQn*!P%O)fKi`psU28nE-_PN_f*|w7#gNr-!hTSyx$kUujtg z67&H*i_4ybIW?WDRQLSZ%B$#-(=B!R^KyBKQ`YCbOiAv!r*;88XI%KC9j7uS#YpS( z>!vShMJlP<%v>MYJcxEkHET}I4U!BPzD<509h_2?!FbxKEU(WV?pMNXU!U8NW@dF2 zjc;Bcrd}y9b>~E{lz-Q6i0a=+EOfQH2Cbtu-FQI$x?=>&!iWPrPnFcacc{7_8fd77 zXRbv141S_nSD`ECqlkV9cBApGxC>Ii6ZC4I8!_m9H?+UJ04vMv_b45-#spX@iloEU$Zak^5K`ZnH5 z78Xlv;-z)#2}#&{7NrAHp02KVK0u+j*!(&EtJ84P;swf=n)hEPlGGfAorjc_EpMVf zY(^xNxw_RG93N-Pq$<-_QtEG^Sm%L7k)s7b75WbO4KqGO*ztYMZHbi13pNb3I3Y-5 z4=X&o>-=K79SL1NO!a0Vshdisjj?%04OHH=Gy&4JbtqBfd+ky$bv6!0s~>9$Gy_Cb zPA7ia?9e))F)~}i1DO8*e?^T``IT|O@3^SDF8rw=gi&QksQsxo;#sfMSgCs3pk!H)w zhIQAIGl<~q*|4Bp1ojPO*f1~-HtYmG=%GMCZ_{;W^AKtdn^5TU1rpmdw9N}EckTyX zyPzZH+`De4!}-htqr@nxf*76s%@&AH9dAx=qn|;D!GnW=4gDD(b_Ss-#fT!5Y`y?Y z-Wg!2NJj}*KYU26MeB`vOFE!P^T>Mv?AL6la-9Xk1FCiqVMe(DpSiQC_MUELnE~y{ zFp&c6BeJfiVsRI(tJ0kW18Acd67OPLmVUi#rF59h;IpeUHX@ir$k%kr{-caN3A-t{ zybx*91eyU;LH5C_1*tK&@PO*Kt+<#v0e&hbdR;R{)n)@LR~x(Eai~}-nOsG8&CXRr zgyD?*XLH0yTVRr)<`230P4H@gKH2e{Ik`v4l)I+)Llh95Z+w3kK9TPTFtrS`**RA0 z1+Jo&XZYkObu^g@5>Z~%!^)EZ>jK2O1y+&`DTl8|Ga*$PnQ6OuAl7Rcf>o3 zCg1{F&srdaY}*K7Z1LV7&P4fcDiR+cug~1G04V#7f(;G;=Ld zvs5<*sJuzh9I}8d`)-NKoVMY}cEh43n#id3xBww{zGacH^o0G*@kru+$r z<;n$BsrMcTOh{{R@cUOK1C2HZHn|&Owuv!;CG<$M4NmfoDkUsx>xbOdAd3oR<^&Bq zl`bNE$76T)SuaAvqCHssj%lyM&ej_fs7IhA=c}~+a!O4~9Hz@&d4?I_a_)`IEL8|G z*h$ge4)V7FkJ8^tXJ}n;B%uT{W8-$FOxjhE3J2a^zEbka!Yhps-hcbNh)Z^^#<($p z983q~k1zsJWZJy?o-hSQT==X!1lt{EL>X3f*#iq7}N%p7|A z=y_?3!=*vp_w>*p^4N;8#~yTU6K-}Ko^=5nsg2`mXy z*5@?UAcCKLb=$K&*UGwf!blqS-5@h4f>CgRXf4F=Z%&c1Hyy*F6bs&j#VXsk6zhnekXR znI#NZ4d=>}84kEG(9WrWBV-f3#hVdHCO^lhmTPL#!6pw%2jgHCc}_Eq7j4IdVCmrJ zmg$QSLb$9{MOd&dX8d)WM2GMl@`SKCQxg9A#m&U20ho)u{@c53V4Ib^)3b0`+*O|Q zE7xM<2o%3n8fIOHH6&RqGHT5+QqAPMweSzKEFy)bZ_)Oo>MR%3=*+h~J~OlOy;CYI z_YlLS9Y3HA{=PjrkaY&qzQ^i-nXpl^tVsni;Y$XJ_+{L<4m!=43Srua}}Y7 z8KpNhh)&Cre5cwTV@3aa!^uRScJ5-p5Qn%Ii1rcZ!A0CvwTxJ< z#Fj|ey6O1U{5cKSfIg)5Uh|n4^DD=?KjAkAs%%J38t0fC;k6H^;X(7-BggpH4WmNU zdhZ1L(48DE&V7XZ;0qeH8&3LUL@BIar0i#7xYQ`NZtu`!F(|kRBZp#7B@sE^m%s2# z;H4|wKOBba*rc<_3x5!gGcVvg3DnT(Es#aqXO;PsMX2fZrt?q-s<tHABGS3~3U^J3uo@15yX<-Wv z#cgZ%20^pRWc2Z1S=cQT_lVsNYY(A#t!5(Wh>jchcgszEqIRN&1mimJ2>z2#W1Qq3 zCX@)Vdz5kXb+kT$%VBs_aM}_Z`bddAX*MJ#D*iI<7gxrNn4O*A^%`f{2-HY#lTq)C z%KIRk(<;(zOSXB+kB6l=GD&S?i~PZHyCB?ZS;E$WMeD-ofNnj7@vSf$m;}0QQDzKS zo(cuN$j!o#wVh|zt3sKHVYLQz-h~*-Q63cJ@_rPg`_Kl%d+tvasjW-qdjP+J7+kXU zn*7wi)@a!<^34cQ^3hw^bOwetDN~I7J1waewQBqBxN1a4_&NXnb=3?-P$Df?R1o8& zd%(mb2kge~#}i7AG>KritQJ-lbf0u7f?gwL6rnvjS#K}<_@x zKAK{gC;Tjmq#K@%(DhGHQAmmX)RmiVF=qz%n`X+lo3Vy*1B7r!;rTYEQf2!HJo`PmM^5j8JBf1Q~f+nD`1O$IyKJ6UX9 z>;hjm@KK)i!Bzqvm#Nv1#_q9SlT?nXwEa!6XDN9pY7A^1XKK}x_QyTW{eQ|^|1*=# z`gbOq^?$`=|J2#`KLY$eb+rBV+VAP;pE}z9Yi}_IT4rj1ivZmZduo6u7y}Cvp#O(~ zfDYhR%*sIjEACxv41bm30J_Bfl4}1qn2=5b}f+4L$|=`%@|j|tru&O1pa$0;j@RT=PR%k?aZ z^W#?sHWuSe#G-_!2z+aPp)olA*jOyc=*z7b$h@M%7-)Jr2IAL`W7lqmLsJR;j(1*9 zc2~nLSGOU)AdEUr?TX?HG*MHGutvRmtL|7Mx+jLb`K%KD3iVZQ!6?N9VYWD3I36qo zog+m}V}w$-rQPYVR(aDVnb{vLTifQXAp$^_~jo!hfu^K1Gy>6Qur1x4?xGE-ffdXS!xT5D)yv3;~8Qg^$Zt!${Z^H9C~+P}p3kVtMl`hwpw#JT?@ z={9~SC)>g0lg;%uv-dUY+4(d`yn+i($p2lIF#VSHQ2fW__JitOWt}V4K@8yKym`5p z=v9=maM{M3_;nh^r<e#sdoJs2yl|r2%9OfRJKIs$0CM*5Vv;lNiq_7Q_c@# zX}as4m?^)DR4wrZ$!3sx5brXE_v`k#28?6ohr6#n)!rpX-P)n z9Y}fH##YX+kx{SoNu;|IsPMt?#!B%%QHz_WhvC4NS`p`Mk}%GaVNv{gs=}^N(p|4^ zKlvM25<&^lOY(#i9fXf9G>dNC@5$&=g(#9d+r&PqeD)7#sL@DA{<4Qd>QPGfc1N{T zHxI7S9*V_O>H&r9y4Xj%y+Z!-bMHnpU>_Ix-b1hq#9A===FJKzSddAfret zi`|e5Z_*wR%3`B$_EV=sZD+qSe|j^&)^^-J_=Hfu+!5GaGWtD}pLChLqO@l+*vVb8 znOTd2X^AY1RdbGxV@P8-sy<`Yg<_NbNXDgQW>4`3f1BxmK65~`XK~yNDkn3ghl`88oqj9Ulu^w$b^Z2g$T3tkPlYM@}4`CdztpvT)gSH+tD%esqOM z;C%;Be9;j5ASM&iLAE#<3(@7zm6*^_W*nnZtw$No2ux+u3$Qp=)etp6R_oN4wg~1; zRUPk_T}UUOPhCDedruG``t`!ef1X4riz*m)Ejz>-)R-NHAa|T)|6r^fQTEKOAS!DU zf^A#4-?Owm;!cnt6+Syi-QjR}U&<}I#$>XZBwDIo?pWKvZ?q|Pgr|zbYeSp}&I5e5 z1%}-W-5La2d>p=_^rZV;HN}sb0X#cQ4W)k#pF(tW=03prOpeuxPcFCwcwN z38fvlNCRUoN-AqjB}6Gd35T1d2Z$nW97A%Ru6QsK7Px*S+T7Mroch+sIoK72&A_iy znGbLH?G#dW-}%PCZWtlJi)#j8S7}%%eV^N{Q*Cr%R@yh8Je1#xGusJ+7};=^jPN*w z0x0+{>B29|NZiNt?2N+dc+D1@Hte^|HidLw$bvvzd318IFT@=!sYANeyTMJ%HtZ=S z@)KOMmsLI)Y2Elk`Q>QzdO)TeT@Ep>eHBo#6Q?+C&_9no-foUIZQe>$%^czRjHXPa zZGG<_$-OMn_bzGiFgQRp^c~6F>hLMc{lz2Gx)p@X$i)fd_mj~3e|=qc(>vk5eU?uP z6Xi#3?}PvJ=)L3E9`h}jBMKea8`7hVxeh|Wu z>D!(32xD;0MO1kDan&LqueXYhOpO*NMn$@6?eY8gWWkqjhyn3`q&_+81%mW!pMo(_a;@UMc=&T?35?I8|$H;m_1 zO`!pB!%FC4xM;g!g|Bm^!&c^LeT*!gS6e&v#_O6{&mJVaz<6&HlHWrPC{PYpZIp07 zZi?WQ>K-rqFeDmxWg}!`GTfz1_Dcg9Yj%~0p2cT`v|tiFwB47r;G-pwhCX)ax8=msdBl)Ci6dvS z2sj+5Kq0qZzTN!JZ$vpb`#Pj_>ip%UgyG9YwF~s_2@l^+I9T2Vyf&5U!eaSyp*3J| zsMRYEJ41rC)aByQYox*=1Y}QeWI}%hrg2Co`i9p%Ko;3FqufUjp5z60wk~FglS;x32yhv4v!(Cd;{#OnGzcP+}a(-%^1~`pZlPIbmKu4F4RJNFQ$MVskKIJD z*riaotlq_f&XygGn|8rmS*W|I!v^qIZsc%z#X{GM_Sz-JXgnZM#o9s;QDD`~UxA^| z;x|ajW@XlMcOa?(4Rw__3VnDC4S-OZ+$zb(nLwtB#2?MQJ+@Lx_3{^9o*%2p%;!gE zE9ut~TP@q54B9Ybp)}}b1{ASx$V?Xw;{yd;hT<3<;an*or&f9gbg<+zE=8_&U_KTA zbAFp}>%l_ghQanf_cfm@M=sA)s_f}_nHmov@5m(?Pk=Cy#R3!t!yu>6VY=P72w=Z@IEBqwmGi*U? z5-IXJpQqqj*VCe72f8j|((Qo*8E*F1Mll@B*LzGV>Rq*SNuF~qK-<>Q6LFBj(*Y*zm^2&w|L zggKBF4;Ac(yPNs}hl)`fUHn{x*BGHoJiyzOZweQc6L)Fo&3SxI6vbo?R)#CRB6w(S z5aHOj@VDM;nBr#Y)jm;|o^s8_U9q^*ELqhkORzGl$e_AI^uYZrnGc*NBNdoC8okOK zpP5!38uA0zo<0nTfFhiolUo2C+mqo{6nx=aSuzdE2P>DQhvEkTE9Oz_JGYqohl4yrWST`u83dTQuJ~i66N@iRpPv z9b)vg%keDS;d0Asa3jGq-i9g+)KoR9MohHDRP>K02J)8>ZWi2}ofxhlKkN2gv+$nt z>_Pu*zvBq@V%eYB-PlZ)rLM*$J=gotXx7W%jZMsobTLKVTn&2>FFiUIo3s#4q}WJu zC`z4Ji-2+7hV$&&|D6_FI1c-D!B}OYs`5Mqr zKv#+y1oc|>lHW62vs?BEkB~^b`L%k^<=^Rd(&w&D!ZurMJo?Br<)5RB-1z}rAO@q^ z!yjuCsf9hV7<*s5NHwIA_vNy>Xj=HzVVK}Qm!4OKEe0rTxf=MwG3-(R%Z^=uUqX3C zgxISxfFFlXKz|$Muf6B~M%kKPqN=3YjjFPlZa%*C2uv=6=3c0W)?euyp}yFFP~9EJ zDnE~+8bh6u8L=EMPA|-yIv&(S1njti=csFtrgm-y;ocUw|5d7NpOf41V?z*^_fBaV z=l%rRc)oQ;Oq0zBL^3H+ODbEgC1*d*KAZ@Ac*fw0<2(1nQqq~eda?GGjDkts#rOG4 zX3E27o}D%LiHNkB71wndQ|*#mmCLIs>C=0{yRkH?O&t8AUC2~{aMr|S(_I3sj~KfN9E3x)%Nq7^b|TWQbE ztB~9{1Lxh4V<(M_d<}4=tq;lpHvh=l&-i{7W#>hyhx43L5N`rE+S|72Y%%>*#dC2r zY1LPpISoMoIq$CPu91B=0U9HgPb8s9dADfQ!Lg>n5R+!Cq9&z3J;_!hnQuG`6!KM_ z4`48+-e4Z+Ph|+fM0X1*9b8!a35?pKvsVjJ$vnC6otYJ_IBw3wb!<*vuuM7?y@hT4 zkz5R=cI4hRcum(7baCngV2|~Kh_h*RU&76JR@ppVm!uCO1|_4EBbl%&bIOKmZ9}Q{ z%KE@59my22(8y(6VBa2Smv*v5hx(S??cHLaMbfZDd086uGd@}F#+csZjJ*g*KdgEFBtH@W4-6+`8vR)%_e)5WjrJcXB>Eo{o_-OD9;;gdC?uqp z6Kz5ia3WA93HgGLQy+bqE&Wl1{Ea*t;7xspl3JACNtC_sZ+32Y^Zx)Tc zsnAwN>D_D@=iE+npU1oX7}b^<#r?{Sl(j**8G2R-P4kTsPJm{L4q4r8dc^(EyY=ID zCFPX}(m4B94Yw9dk(bfxO7W*4k~Zq{e*XJ=3x=d2nQ%6#*Xp5*(Wc+rHv8J8y)isl zaG&Xr2!L*Tva~zCvEJ-{nOxRxOzy15=N$7RzHu_z8B(Ya`~uYX$(iZFwMXUyAx84! zvmAxPzL{NLas@`X@tAuB^Am>r*3olt?^O63ql(`iIt)uBH-tudAqz zhgRuXEpw(@lJr1Z4$82E- zeC8gW9#d`=tKEtT^u!7t!dlBdV&GY3As&lWn`EuLe}!2H2AO5!hsjrk%jgq06BX_0 zHA^%W3S;;GwlqE|9rr~#eK&)h9~z?NQDZHCELTw846Vdh)KLg2hkP{W;{-AzSSl6= zoB0JSOzkV42av!HOSW1UMKu^Si*91c#kt^P^9$T&C*0Mi#j&*e!jv7SZYR^dBa-H> z`@1qdPl;eiWBMr3uQe8CE4(L`W#kK`qn~(&&&f3f(<+diq;8;-34f%TC$ioU($}jV^u4Jt*Ve%+hV1vX9KH;(OVF{{IV2_5}CMUCrLH@ zi4ITlNU}f`HEc+lI{f~^gb`j6h5YU50))OqZ&5`p`3K&2QOlq-Pa2Eh(3k4vdsJL# zd5{H>vK>P+T`c!alGf#Q)$5n8k2_ai^5ggrx)x%O!kqSRSfUqic(E9!QC^wLuY`4n zJUcslzIDBwj5{YIxGoPFy@qgC{V_Uk0;uF@n~Lb1|y9!M)sn+*Ao^5o}_wip&b^@tzj<`M+l-! zh?Wa&mrU#cF7$rsM^kDh@Btmwd&^kusKVN$_icv7*5E^jFJaFb z0_&+fbXr+B8}>P=WP+fi`9A+mgq-3L8rwA{^(BeCX?3q4RFa91xsj^f)P1uwTq&h% zs#>CEc+Yv7yltlS5|Q;tp;q)8!UR$q?H=L{Olu_KjhGG)6j~OP&&y`gp{8y}I{s~K z6}|y*1MiwUvu+gSyUF(Lh>&0o(u)%H*a@T6&O5UD*Q^9l)SeKbwY_1g^P679=_=FbE z04eH*<1iI2c+3IfxvXqy+qM*d2%0l*Yzqu$gDL`9C}gL}k6!K?1etE4kM*Q;2o(}; ziu_2`iZbh7ns{n6G$fM>>yNtGV3@f$ifB$CR}T`-%FR*gOXFX|9W^P)NL$~L_D&45 ziogQRZ@t*@8%6{1i)#S5kDPE*`|`6-C9*L813A^hRhb};G5LD}r{W+=nWQAV<^i{h z7$9*~%Uz1l zTU_DplETKL;F_vPc0L|x3!~)&f7e>(HDtZ?NZe}!!@o$Hxif|= zoMk^*x)}mI$+_WS4Z?N<%$SkV@A)u?Llk*144R%3+hH)LW6-x(Q6>D?rqf+o+$^rM zrX?4C$6RKI&Q*_Alx1SJ!dSaR81>Qk$j7I*D--LeYAqjxeNQe! ziTNNIZtuIx2i>Vb(UXc8eWBJpxU96r#KYrK$}~f(>UWN0hWk_9K8>EvJ2yBcvqc61 zvg{SuwYw9q#du_%@^PyWPbL{bBKrqO^N>J-Cm}AX5bXPd`AQ1OV+#m-Kz{s~?4rbK zV0R~Q#6)DhD6~f}7G-f){)1 zgd~sYp0f~igbxbbpq4ADF0hd9>R%xb6tJ?45Cu%Ru|&8{vCgGh5AY7O(iwc_BmIDGi(aW*~5?Gv=t`O@U@8ud^zgH%j{~kZj zcE72ymzoItyPhvIA9dPSQt&^c9LIUN^*rPE^FK5)bwjfjjoR6di8&zM#o~oM@z@k2 z_5K|YvH^_l{s341*uMKOVDcwG$Of>?_`&kg{NgO_zX3uv+P`4Bf9>PfNI^P=zc?TK zDfoW?Arl*5C@H`q;jfsEjrNy<0W-A$tNcCq$NT#HmFQ^B#0FU4tX-8X*|MzpEJdp{s<%%ing?$2iH6D_nbwwv zlSO#6@jO|PemDe9g?A(D-BU*C8_VIedJSj3KWcSgy^LRIq$7nE>5S#Qryb7>&*zD{ zQw>QueXAQIKB$KmgMhxO$$eu)SW!c3adpcFI)v!=9(br3WMM=GC=u(VbsAd6rvAOJ za@Mw$86lDFm!)*@lVj?!P-XBfI|>^NQM7yB3LvcUD*Dk&4eMPI-}G813mceKY#HE4 zC#eY{Px!Ecd#V!$Mj7jt9x3x}apVH6B9myRTZ=ucwdtvkBk5sA(C!*{Wv!vRHAQq2cGZg0U$TVVnyscDb70<)G^8MTpFg%tUOTdnU&jwCGEfW}cptZG4=rJu0udp@of{$J;fLCl10vH}2?O&H`|3sTGB#AM z2CR|1PsQxc(xI*EsfXYIdGq7iDOf8-Lv*T-B46ctRkeE2SFdhR?y7NcS+%`s{ULH> zXSR8%P@4RxP9tzpFyzJM_Zox{pBq#Mw}XCAQrb2zx} z7AeHw4c97oc%ivhWn#%<1rLVBI*R zrfP<4U@MTXPffM~bw)~EulaY$PeUD8?SZmO4mL1;MQoYVxlWBh9-0kO)u!7l9-1gn zZyBUm2Ht=xI8#cVPAshf3%xZo9s*%)JG~B8!#Vy8ULr6(oH7-4&`JNb8Y-NB(9?OX zmXU68E#aVHsR}B*ieLAbZHYFeB+sW0VI6x#6%)=}9c8wz?982<2?br}biq>{Ni)BY z*;QR0Hbf88Wp1Go=R7E0MRop@N*x2=z$KhTs=`<6a*sA@`LmSZp(G77Hrj>T##r;a zt5x(*i2z}2wu6|+7t}~C{WN4Y&Nz*14!rvC`8tYPrKGia@u=qarg(d8Q`NOtGYhKN z$u&e?2b|MrmdaM)tZ7tp`$3e(ZXh&3oeR37)^Y{#d)AZZby&(!P3b^9#0xf0$lIu5 zM`e+CM?~ecL3-$`Z{{~ZfFGd8B7pFhB4hlMdOGtRb zrIwDm1TnXAwkkVOOjR`X>8-3rHqJL;scX?rcBfV!O`4;8?`=2XCorNp;rqx~JSTiL zE`kTfH}|r$Bs^B2%|uG@DpJg~I57JtC-t>&yt4W0T~*AMA$7ESBH*8q_8Tg4_vQMn z^Ya?1(9PLp)%Pv0ElAw!L(SM4U=UUxXtl8EeRUAd)+u%Ngnz^S*bZummx>5+ErQqm$!Zl`txl!B4_r-%I!6`G9^kUA^zztVCE_J(loE9oS8)0 zcgLHcM^5v3PqpiC(v99~We$n(QO)nF^rU>>n&ldXFWT`I&+7jPC;eO}{5Lr1$9?@5 zob(&b_21&8Kib9E0EI}v-~5vS+P_}=9fbU;UF<*GelapIQ8Ta+Faq4H7y%Qye|R(l z9KQfQXiU^>^lZQG`bEd8tz-`v$tmJ!3h*W~wKBA)wlw&&Cl?#tU#K@WfEo0UH}gva zcNl)A-TcMRWR^O z8Ji}YKT(WE!IdoGN;&bivwi<@N%7%!LtQxbm5S-qf8_O88m2o$tgl}*IfXHUJj_|gn5g)ar?Rf2)c3GA4v>TM8c#m&508eyQwrwfSOEw zFBbQCR^YDjqVk@ad4;`PmuGZkQC`IBd9{xiw!B8MwZa(_O78Sl)@KSyaP!;XmG{G` z0!NJEdgw>&_O*stNAx=5L=m|t#PCR5cflHqhqw_iE8_hy563v&ybyy;6DU(&uD4zz zL`dmwg1vV@KI&WJhYXx9sVuC3+ko$$>Bsb($m>9?j;uX#(E|$P2AbfQXSm$p^F%j; ztp1GG%?wpMZbNRaHmx+?9jb&lq&XEtrK|9lqYhEoZqaTK6V(Pqt zyg5%MeWUXvKmdg>4QGchbP{UE+lPDY4iHi=V|`*bSx$hpRKD@-PC(Qa?Sidk-u4Jo zM|yE{DhqI#8L@Ug0Ygtnrc6LD(uMhKn5dFwwi0VtEEm*%yRWW-tr zmTD6dQ}EITYPj0WrDoH-i$@p$;k1+a2=obIl%nbVRFZ|;o*G9`a-{qB0rh4WjO*xXLy_9O1VtB;| zh_TWjr#^h4-kV14?kN*NSBcMeG>CC>$kV^0NblQ!+ZF|C9k}c?Q+}Y^I$z)7EEClz zOn#tCFs@c=WB>JhZZ^EysBS_H446(v%=n~`R;h{WpfK;GvgoD&^@*t4?6FUsaB{4P z22Rpi|E)1ADxX!dAK0){`!zLet8+?9fNh+(IqaHaTu^Kn>yZig-NZ1dS?zHkUzd^jlUuBEZtCjl{8q1#ypQ2@NNLl$Qs1uW zXP-9e2?uc`7Lw~Ei1@Lx_#dlhHQWNpYiVHjD404@8B^nb^ywhWS~f;9+?b~JQpL&N z+E_heT$k_duiPilAmwPNHLT-zVEtki9{KWIW@W>|$@95lG8-h8TfMEQPT+uRC8sl0{zyeSyFH5qoTG2)j3i@NQTN zvL943yU&p8{&Pr(GRjBM8)hWEbq5z3&Ty2FhHtzOJJQc*`xw4(7{+3s3)tBRgz?xx zjNj;&62Y>j^A06hT`x4x=nEWwrrYNyesj3eRaa3FIlvNu*s|kd!dGLu;PLkDL`YJX z&#Bs8b~^1*w0f4IF;q1JDZw}q_{j=U07`;c7jj+=29*iOpuUri6)rbLop}MA2;WF0Vzio$ zB6UfM)1T(@l$;zNjAZH|cBt!S=zzd4(-SRA*f41)avx+U(X^9HGAB~S8MK!s_MJ## zMh1`5hh|}L2tv<7@<@?j5Z$`=A+Ux8xyQ(2mBO{j!4ZAoWKYKI6T{oJBYf7-pk1>) zf9N?!K8ptnYg>fN;K)&8XPPo)1XMnp12gO(2LlCl5y1_!_~=GL`PUN+t~3uyovu~S z?cZr~fV7gXi;rCVNs~pJ8H*I1P8Ve%_{SFtO z*#~E8P~QBm+*uZ6H7TrIO9j?ymfTc!no~x~tRTdX3JLK%tIWSZyo++T#V5BHX3U#4 zk|A4eCt&=GnjuUXNDsMRSm{}?zBMvK7iB>W?xX)R(ZB|MCv^^==_M&t6RMQ!?agDh ziyTkeY>BC-Su5B9_FA(=DR9?RiLf>!Q#h}+Dl@pAxSA4{ZEv5Ys!bh;^1C-@-ML<4 zmK(#$nlZ}E%7Z2s%*o#;{MwWo9W>HS_t{#>&)`9XM%xV&wP<{go5r}VyCo`L`uW4m_^R~=iM zA5H}NDKZWx5xoLW0}RmqAsL|i8L0hpGVmKv`g1Zs_Zyb~|40VtepHC%3E1d=MJpkrXBW&^OGKMZJ@=@@@KIiRMYWzrTl zwE)-}0}PJ;Au;%w{QXk`^Iz*-e%~?^6E!VBz(L2vNDZi?(=oFER4~l{EO+^R-V7ZR z^Iw!M|9YVR`0)PM8)IOlW&tQs=$PmM2?IUgJ1szn^KXXX{NJ6i{(WaZbHP9Iir+qh zznV+^4BG!1{CfihD`12F&;!9n|JN+;=aqjCW?`eI2N2VL%V>W4$p8L8|2d=iIg9x@ zANkpI_}3aJ0E0>YmYV=fw0?P9X{)N3{W3F3+o8&t@&qy;keJQBR2?cyYD226bOv6>JZf&q9zYw`QDSGgd!bD zQE@4QC(a|ukNj3c!vgsBn#A)!KUk<7BuZ#*(*m0R!xb~`UNB1YMhB~Ztv4DotZaUl z+$&sIGa`HZL$%d}(_1qg_vX_;6P;$1Q9-V+#0Es~vE;TvF--VGXJ~t_WXTKR%~Dr} zEgIGBc8Fg1ZhMK|Sj&a6%DDDj3QNzqokY>f+p|@eG~%T#z;GQJsfDz-F1DGZ<72iP zHjmRf5?Q)e&p<4AVm0gu??aUAS&^VgFxZP|(#)=Xz6$A4fJHFc!`B#R<#w}55+`S4 z*$+@Al5&L35bNa7a$frc9XTOhhrE-Sy2z33+l;%gRDkLda8S(fe9s=714dS-1<#f2 zp>Op>FvMr^Mphf1`DonQI*Dk<|8%3y!MMc1aaV*@FX=Rp6{aSC%zYopZy}8*}0>y&zLABDwRhTH_6raABnAi+fuQI%0U3O$NwHCZio+4MHWJIM1sxFR} zPLdf~;7^`#l`GJ^iGSh+?nK0`qOzxV_=PL^RX=Aus6Xft7+Mww31HSC)_}v|snPaJRjR4quun4Fpc2RPe=oev8wB*~4cgXjN zZ5VYsjbPj_ww`NUN-3XZmHUD1J?4B@Lp+puh05UYd#Nwik(h-_gqYRbCvZ6IY&`Y~ zRvaBYUpu~Phy^p7W7Qz(ghwzEcl@(#bat5;6^@HC7Se%#P^^5Bfv&jemkW8j0@<0uvPy*#ZOYqKalZeyk6*hS*nV66|9wRN z`B?tr!2ZQ!`Dd{7dl{1faEtsRWmKyw<_wTV{y3J=DroY6ZBF0Q)auW>nr1Ft3=p{Ir?d#_`{kST<1QOyRbzDc<^0&le6wE1pw)o)Pai~%iTL$gzCLjp~@`w>He z6b@M?U@CPav;64U?9)(Vn`3{Ry%X(;Ts)fdko*&1Q zTBi()hr|1xx$jvYXfd@S!Du^heQ)2(f!*GJj3XW^#qfL{%VaC{bZGcq6l$;UgeDE7 z(bW;`b&?VJf@%8!Y#o6F1L|GCnID0z9(ij(F!3l0wLrIs44_u(kdJcDusklCHkasU z==dm9FM)K34S!$a1a1t~>6^R2?ckqS$>m5%BonlMsdhg7**Ng(>}1eAX1n(mMvyuI zF=D0>yBMPWS!3Vsb^>)ev)jojUn9VxZl#eGndL^!X+JEW__AvDzE!SHVix|1w%G|( z*^z0qW*Fw)+%#cy;`6A;S53rjPO?>Ydu4fd4|+?KxZtCuL|UHFp`;>c>i=-}mce->$=0yN%*?VawwTdk zW@ct)W+q$A%wRDyvt%)&#j;oyv);$von6n2ckfKx8{dyFLW))^qPnZIs=G2zojh4q z)TTNx20jnEl#A4O1)9_dIw*vom(P*mQsk3*=XokM?u$~xb;T0^zGYE| zi&Y(|EjRDYSM$5?t-{hMAt+8yh{sZO zX640+^7&9*^~IPOb)Au;#ULefzUzX-Q6YUVnT*5RKLKZ%xxvWwx$|*7a0i8&tJw8$ z=Q`iVo!+d}*D0udHlB-Do$t+|g&l-+1f{0@tF;-b7QH2VO{$QSjJxw^C^8kGp(Tfc zRPd(>Z2}Mf&@*CgPyAkpc1m6Hqb&;B#tn&UK_fQ{sN0Y~(48gZygigXnD}5!4aH z$5x2j9ht9<9W<9!-C0b-uXWo{`>@7fjR%t>_4)(5J{ZTI?!{gd0I+~ z3T(Fq)iSXiXWk9{Hs(>i7{VDnKb<_9bochzoeS>sVX!<4z4(z!jFv=`d03y5S&I>6 z;=+@8M#!5Q zqWj&*J_TvIrc?EzFWb!m=)kc$MdHabbaVk$H}yT4s;$z^LM9={S$~@y_6iV6Npfl=%{Wg+2-2h zUUZe|cO?52xximY_@EMCpd+hMKrx8=p7r?0ze1dWFx#eP9XvoVB(lE#Mw9Zoy7rp# z-3_~?$1Zj|ftn;@Yf;NA)aO7I$+tBP6F|u#EDSqIiK{hsv~>k!G}lA8Pt_s^#8mt~ zw%OQCN-xku*ZUqp749h7LyUcM4{Fpe!Q%KyBU+#mP5zwNiw9Ip3bZ>5=<)<}eFcjG zT4FLA=q0DN?_{hUFd>;t>!^{{jvD+Pd0>jw9LbvnyXL&TOKV1Fu1AA!DQkm25KUUM zKll27C|NR(wyLZvG86-;Em&&M!?Rd|A%V@oa^jf}BsjrTUmytjL8dB8}P}*K@ zU!#SS8MIr^Upr&DdK37hZl9}p&8+d!nL%4rzHfGaW`vP?1nAq{bkvo>4reu|^s%zq z9E;jbX8F4iYg*!HwenplZnt*c$Q0{2n-tr5yBVXxTTf24vnsl-n00!P0`1PMjL06w z_yYXP)^^>7i7JnU!9k0}KnZYMQ|jZg2IdWpi!X0Ub{{bh20G{>R~OfLb-*Ys7^kzH zJH3xYjIkN-@5aOBENHd_DcWjg)DGY$;BY=yEV(QM`$q+?ZU@ z{!E~g`)-QHI;25eH8hdFgMgohWQQsGNZta$E$XC8_}Y}&{W03x&1SgP_-13CBY9B& zt$uGHoF|XQ%N8g^y3VJv_Ao<=818(2+y*~VtQYPa%B^sD$?@?BQj1nb9vVfMBGxC% zCu`Lr&>G|+f<2Gn=Y!K0ln6DJNH7|A#D^wKkgK|W!*FOSLM5C zhkLNqv7vv+4yENUf;rSJ3-L1o9vPdMQ4maE+M$`Vj_a#+Fhin=KKaYK$`O+^nPB4z)_Wja45cXE*;pI3lupOM*tsH zM8f+}23iz25_ozgqtX+Y2w3S!LVr48WnH3W>@5$0i zNW70LF>Q)!gI$OM{7O;1P>kv0za>PWSdv~v9L@CTbYATUMg&znuu4~T&wC2o_z1JU z?%m?ae|6SB3{Gihn>t|o)YO!dc#O#<-16Brx9sHc6e+AqkDIp9ahQ9eZ;LU zx`2IMq43duzDncEb4%h@@2+V&O-BX^>099N91&?zYoP-FOG3GJI?#^#H_;=F%{Y}d z&okk$<6(Y0EpSHzQT25;=&R;F%Z~grR8e1GZ|9At;jC*vE>M6GufHf}OWnO6UIDsj z1E{SELhtjfU3x9ZuoPgn*&41KS+?1Kd0El52!^N3;)*M?pW#R{wUc~tLa2^&W+V>SZR zz<2SREIZRO-@eN2AfEt~b2-cDgxi^rqd1TPJ#L=b zDW4}DSWU>9i#!ecV(w=x_3_OE=&0d8cTGbIOQ=^0+qC=Is0X zb+03*w+)~SZV7PHW(?07$~fsOO}h>5GSj-}Su*nTo1^{t0E#0%0@~^oG2XVsdxIxo z4-x0}cRY{5>c$tVlQm@ltzkoEn#hPZcEgtPGSoL9+m0~VH6?@LxD2hY&tHIIiqIy1 z;fMaN_`zmx@BPppb@Bc(B=QSC^p81%Y(M((*B}u(#y>*dKR5mtoc_zk%+z!Md9FV<{+YP+Ye)3=Wg&i6u=+PJ^WVxv{LB>ki_YuMKK(zPR|Z-D zZRjroIO%Gtkz35jUZ>i+I#rlhNlLx^$nlckNd~bxeiq=OZqdOO_#Q>eVirSHM{Lhe zbAqA@%hjYb2?Et&28vY&B{{K+)0D}c&Ns6?tHxh;%?e@~MWC77UD9?$({|kw3aOQf zGq_5PI|M6k9;&sJ33hMTMRU9_w)R}{JzeM;1ZV7e4v(ib7K=3ScbA01&H6@P%I0@; zwPzg_x$7>z5VUtZ>~5S?aDc&x7(wp=RH`qM7uZY$3;!5;V+SiVU#98f6HkhMgr5YZ>U0K3k(Z_oN+&_ zA-3FT!<=VvO>B->=h~aOOWUC=h@?oxo!T6iDC~vLGF7QQLvUA?eh6B$VJusL5!@t} z!*ug_wmXm+@VFwuY^Gm{tFJTf#i#Qc)jod9B3NA&ifhzc3HNN5PyTZZCo`a&f|7k% zj!}cT*?QdJ*O`PzIa&YcGX5TprNeA9sj?3|fv3awA(Sqfit^&5qVO5s={7X%;qS%V zJ0cw#BNG?k&Mnopowl3I(FZgRO{!L)gSTqSRC2dCSvIJ@c*tiu?EodkX>+zV>oBpS z%B%6p3Y8a@kW{|30U(ekZkmo0AoaIzf%~>q2eV3UlWPArJu{&XAD&sv8!=` z$fUoGj9tL;q%uJKCMKJ=&}`L+#g*0QDPn z(~JcXWQqPUBaB{^C60qY^$c>NTQ7l~G~3r4FLtWD$o{&*r*<~nyDg;PYJ{;|;d%(H z8~9%SQSBFhoZif+Z(9ww6{s6lCI-%r>#d>;uFbMe>af>?xx3q zvLuE$T`gB`F`oLsg@J?c!Ab9IF>gDq@crJKfk|^B4$_F;iQ6VaB zZ)XSt?K2%;p;yG6)cWgCkh~#&=p>(b99}O<+P6W67J9=;$Oqb@poPlWX=x(KlvIiMbyRJOUyTBrixiEU{U; zHrJ*?A{ao02Fm$wfP_UYdi%NepdX0>v`x9K8lPsw8Yipa)7>EE#mJ^7BS5+eR2%3A z@MXVj+8D3^hwJZEv)Xn}CGrDuWMv_%q2*X_V0~>Cx_0POc!%%yr zN#lN+KBO34p>@Qj!_3HVIv*JgDcJpXpyM6!$`QH+ylwz_sIWRfWt=x)0y8lCV*ovg zr6+55FHRo1ws2Y!LrQB%4Ij^d`G>DXe5~*El5d5uKm+9-_1tsjYZeA{cIki;9OXK{ z5sY%iyWOLir}hbo)LV(EmW`XQzXc2VFA{wty`AAqkBw_K9E%RL}?-E<*$!!%!Hr~c^{kcUg{bpqc&N+vYixdr2sUOy{{TlJB5#*8%IoGL#Ds771rIHv6&KK?7wN6B5j1EZ({NkNF% zzGMo%C0;%Iu7aTHT)l4#5R`mi4@VYICttVn7(f|%Oi<36O^kXJRcLE!2l>S!fgfZ} zFSyVwNj-JJci$@oBiOOTCpc^n>VJk978&h)>Kv%aGVVOrLdn_8zKo;l#6cfQg3nZt z3N<6yjlc&j5Tb?Kc$3F=#{w%2GcLC>7034>-0}U=SXs_1V4nt45m=nMtdJK*JleoO z8{K?#mzq^4Fki}>43<7OB+%1o;$VjJ7@G{jj!UM^(Qfz18Zgs~R>Dy@e=|hB{kSX| zC+G7vyGDn`DD#{{r)*xQrNv2RcF506&%CAtAJuIhO~tjW&y&y)ji;mTuH?BjGQp<0 zcV35k0cq}+Mu9#N@Yfuk*({YwianGd-2MQ|TkL!PYe_74{%3BH;d%g4o8a(!3 zP^Tl1V38O8H7!J3XZiZ)Tv(C{Bze z1FNWhFfy8?`%j_wjy)S6P#Dx)m|%B}uobdCs&k}xAuBA5QJF%zzJ9$6qxr3JJX^?F zZo&0QN{q*s$c?p{`kkH)5X^Ek+aV{jRF;k617&MJXfi8Vs+L|hVN5boxTJk6a}B-g z(Pc1N2*fVPx^qiAyQvc5B|-@Ksjt1-ENoRHswNcA;i-R7_wh%`gQNF? zsA27|2y*HZ@d`?US1#bGb|>X_R~h5T2P+3m=R_Np>I(}vS@Z|S=ijj0GUV&!AD;zH zDOZ*Zz{lM3Nz*TBspy|=vm{`~**i#kPuDS0$OjTN%z(#%FPQK**KDA^X{>;+bBGT4 z0vfzN^d3!Xxbh5)iYsC0-cM3H)HJ7mdkgeJk% zRs0%f#PgCRpQuPjged}95sJM!&q+{x1^3pmf%$lAXkUhnA$#l+O3S#h;9)#aRSLUB zGWf07m+G>T&uyOQ7xDyQ;Vo+As@O=IK*B6c`Xf%OzYT5R<4h1`NZF0=#NeFODXXOP zk=%%G?^jZ6sq-?gvx;~~bOJ}$*vVxGZqRdf_GKx2y_P-TpHZ8=owXS)xnfivRst(= zradkT{>*w?$((hJzzJfN+1fdhb+#N2P|r}M7>nW5d8vP{dbDYEx`mktg86zjHM{?H zG#6vIQsEpo^FtWOFiDl%uy`<~7nO4af9`;aQ@xJUzQiX?ruW8>si&ubr;h{1E zdAb4fh@VZz--&=ab{WV(Dec6W3So@cl~UShdSQc!DsOJ%~C*4HjmBB%p^! z_=m^*NXoz~^YBF-r!4N-!WpH6pjcV+QR`y1c{6&(m{x=^P4v6);9uW-aQi zkocs5O7`3#vkIbYT0{VXoh zxqI1Fas#=ZE((l*4$1sYhk)K6jH;f>9*hTY`vWa!-0veN=Dq3dENb? zkEpj}zIj%}o0<**OFjW-Y?D@U2gn{I$+ZrF_2R-EF|OqEmz*TmdDDk>b#u4dk3&Uc z@7z=|(}vrR5eu`8HGzf1OC|1{#E{4lV#!fX4>MCn>!(_3=tYY8Ugwg#*~esjV9N?& z>tnGzJd=u&=aDKRKe1ZPxs~it3)TUTd1yGqRjhoAW>Gt-%VmOyp07@sC~P_g8$_%F z2Nm6dz|+LFxQw4smt79Eu3(M6Jk{Eq@3{D6DDweY@eOibU+cRl65^gFSMT}#YjZDU ztXb_!T41Rl?&IN9-uJC7uK>xdM&^0zicqC?wAvGRuO$fs6y{p6mSRoXG6-EW%aIYw zO;V3jE1KIN$PZ^3R9F_gxt+EfPS~&^jdN&y&vPcC-{e6BM1iw-mcx7L)1`hpdf8i) z>&UpUs26aM?Y+PRPU3Fgp~PE^7>tpDQXxH5-BrBta5cIni-U@|7Kw^`akSfBQC=rc zZ5BtCm#JJUHn*um-I})gC?#h775=i81zr*DGRU^Ak03(x6b{_nNYfX# z(xg>WXn)T_JgA3CVhk#=CB(A@=Zw&ioljOK!CY`p2~D~7HMIwDf_^iB`X-T_I+gDU z1Y$%2DC+1&`eAQt4wsub&}j@|6EnCPm)Ovts`&G)mWlgPkRwoSoR)Dyo##mRh&G8( zL+u(PNvNtl^o3`;*F#|UmQSU8x8L0E4W~Ma%Acd=OHSpLYh-#WUq>rI;Iu*ooZX6tXtw*r zOy+rHo7C`OAIA!3_x7K^w0$91ec<}sM?*Ka)j&ZX!d`!N3nFj_;FWh2HY5izM874l zLF|6mn0HfE;uw_aL-?|Yc7(azM{-3fyFPQ<9*Z0q2hEv|UMXjoEg?VLG_SI7n?7>Q ze9YfdcWhZUT~-{>%6Y^lJ8(t`RTCl|>T!r)tOq^^it;+R0cxoTO}Csd+by5mZQArJ z+m>TTlm8N_9kOl9`%gpLK62BsY+h?MDyFAt=n^oH9S=H1AD7zk(L_~P(kq+|g6xbC zj1q+1UnnKw9RSiM^}M#UItQ@3Db3Kg;XA9TR&Y_EU@xBZSXbZB_=J+T_x+ zRf8hiaXBT>ycs7lMUFrFo3EISa=K}YW4f4i3!$sMJ18#<*N$q|`=i%z;p5D6R8T8r zBV~P~94+>i1*$iot2(%ht5vcf{<|HuIO5@rmd)jiEIu;x7Q{j>8XfI-B0kJA1sl8N z8&>|T-@a*NuTak$kp!PP;SqUB$5@u$qeouN)<`89Ph`MwM7EK4CPZE~IiL`n7I$>3 z&*8Y|J~%e1Oy3t&9U9OPfqQB-sbNjiYF5zk$x)mzps3nU_8d(};@3;I*b8Neo6{;X z>>S5*n&&9If`ZwvSHnmU$MxYdJs*f=GzfiAGQ5ATOJ*`&N4|k&*dnRdmJJD0K zAQi}@%X=`%oZ(#i*i;%Gf&MWXD5MS}kU5 z`{NNuCB~^RK^VDG2;oOi_!Gu@bh|tsd-rI#v??!;qhnL$c5}uOnPjE{-qaY5#?+cu zOGB}NgwKdpb6m5%5AO~b7{9~ze$|e(!oR{%>7R#y`5AKl<_4Tu(a2pEm}+ z(_4OS{Ld{3CO{2qW&juTPrC|Cf85XbWn+K_;xEc*&@ukZY5fm(re_A+ndKLoAxwXv z+w{!zfGqA`uyTG_{5ML^-*vbDy&3Y?oNcC`IkdkqbXWmp=p`B1}$l0_0S3ic__>NR96ho4M8?bgG1x80u{rIyr08Y4p@ zGKB6KiURNLlZ{j_dN^J`E7PfWE;%zG?Q^DjR&yvbfT-)`>S~Oyr9U~4z%u~lTKH)f zlc9V&G6Q?mC=XlyMBZa>Dp6^{kK)m7i))dnC|px=;M9~q)NIK;VK6%}T@CMzWJ6Z7 zu7@v%Wbu$wernpom1W@$tX(TvWN`MOiYlB#WxJ+^R}N!A>fc@WC?%2`Yr?^^n47>j_3a8Xr0;ympXZsvA*%gRFpPfWewqOEA$=2VdVWarxeLmfd154k2 zBd0319)6CIEvX+Wbww`vu5xHb_^h8^%c(FgjYu{{Qb(0;ZpX-7dar@yR-xfEy4|3~TZO5fp1|jK8pAmtuj0`gDMh?+bu_Sr2d|6u^+j~rw|s@~cwiVc1Bevqzd+#x8@0$@0AyGDj*vS34j3hG$=(;s@4e^Y{u?id6&pHTibm@T-mZ9coe986Mn9NM5(E) zX)m`+kAxem3h9I;vd-#h?z8aKR*G?qu&6gpqU~`0u%7=j`yyVUz5-{hq#EWWSuL*y z6o~`xh^2oq3ZHI7AcFuUYyrjsT`$}*fy@31FC%xSx1I?eEA+y|YyOr}fG4vqlSBr4GbV|kSKREPAzmOS2X1ORwJ?RREe-?X@v8-K zor!a)SG2fMsvm-3p}+LwuTtZWyXJw1i+g(E8`jhMJ+;f|p^&G)w>iR;aE{OvX-9bN zRN8IexLoUhYa6?xlBG=CR`ZFg5*j8KCyz)CC$7>!JPNgPxm}AkCq2BkVZ(yRTD1$Q z)aXPd6|?iJe4S=<)7I3CDQHADM(_B#!H7IEV{urmn5W3+l~QxkjA)I`br^MRUdkZc zcVdjsBgU!Aiw3*L=0!=UMOOGbp<>sKaVj84!xOeNT0XeEnA|Ne%6ySLjuyP2vti>a z33S)2!>_$}@YK7Rt(6ZyQNQpI*;5&VHTrV|yCm=qL5RBN(OqcW?vvD*`&@5i8qTKz zIRPDspJwqdJ*rq}OIE5ToKSYN9H-aSoIu@D-e%rxtVkSu7(m8!9Sm?(K+1zO83WxO zMVx3X!t8p#$&>$9M(Z@g3j@qwmh<@bri>#+A<}2o%Qs?Es|DtB-H@6qegU4B(}>?@sCHXQ!TyFlFdb zQlYR4?}@>umIO?#8Wuox6wAx2=%bl=aqs!5HG8|j87Qa9yr$3IXw~BJ&bgGf05y4} zn7(Z5>n_Qb>d7Sa-ul$XhwSS~nyz@Vysqmx_o+XdlKHTlXta8|MCF^$L zz0Sv55(0(mq#DZZsyeCo@uYP6hawI>o)jFCc*S3VmleeYkGDbS<4<4VikUP+hZ1~Ekqb*$5z_-+?5Z65-oT7N&CoT zG2Xm{gIR640@&l(*X>Pu$lzD9>*X%_e9Qwp>fyXY0y4y9r|pzZMcwl&vm$;crj%;n zfl!2xqg2g%!cW$~=&_=i&AEm#`rX zdLQkLbiUe7!ka0;&h7y*q=%{J%k_x0anfo;-&Euij z;_`b8dW2a4h(iW~hNf}ZAo%=C599tL{d75;p$B*{?c@_5EUk{{MetUx4d;+G(LVUP-^nAQ4tG z4uV}dt8*yFXw>e-<_vof zIF+>C(9VBcjbTiTiCZl>0ZC^nRgBtEjx}F}v#FU8+3e-l-n$^`R%)wVwWxH_PR-0X z;9Bs?NnsNSLC|2_YVD+zdS6v(#mxCwmE*3HGc0Pd*b zb|*+ehv~il$Y_Zs)}oHrBAa*yGg_cx<9KYni{=M})m31-t3DmLmN2{nseE4a`xnpR zm%H|vu?DU>x+{WqZHYSkYiA)(d=NwBxPjZ{bexi`!4B{;rj?z$Nuf=|PamMAX&T8d zKJh`ot{L|bT*5O)R(=6KA8In3C?~rrQo1}&bLY2E2se!!d`R)5a>7^w`fN@stAfJc zE^vJk@l|b)oJ<|LK7@pF2h*F0huxT-?xFl~AyGr^p}FcbSnReKz4Z%%l=f6v_ z{~bN-A6@3Pva)u7ruhr{TTHCftN_U>7CJUSfks9`CVGH`6+q;Rg@F!m{2Mv;CJqiZ z_Utq?#-220%(Z6Cpi4 zEj1k=FN1~dyO0>&Ul#@VuN|i0HMOUfGIXGpGt@UUbuzT0(X+7DqoHFmFl5oA2WWrk zGw2yGv*;T!(gRZbnV48u^^Np(nb`E`84V5S^=ag-EgT(8t*z|;d?CPF>`oXJ=<>D@S9%oU*nvrm@l0HwSe2-}B?2&-TYb{}~1N zn}hznj0FoJGd&$OD?mcydzRAorvd0u{1Bq}r+@^FgsGJ|4KF7r&G)O*@cytWjXaH_ zoapyovj30YlHW%7pYOTFQEWg=} zk&O;;_WvuhS^nZZ0l-TCUi7|WYCl%NzX}EZ{F42#@xLb?5CaIfa71*wQTld5 z)z42(xj->lyHTixaxFWFScpVELSLSMHn#1MrL+iISvg#;DK=2>t0_OJYq^LR}H=ygvwnH&dV??14g|RpD zlxbF;YACBH=(s4wo$=&$c7C*e0R#cu4K;8z#Ts-)BtGq6*Uox-Mwj+^W3?hSYKSs@ zC5Z+D1uRoQjISjv4gb*zaY-^@&1lAi!N~5l3bs&fva%q9V2U7SDSV-H6XeqJ@KlPj zy%{VwyQ$aQG+AS3u!kl*#D>+%xxSDcdQfu55GxAhF3$k)R~P%sYnCK(aeqUG9bFk| zMH|gm73&>+7^0QUn!p$vnpz1BmzGs332xaXXr9q;p~kiHvm2^470HJ9hMo*{jgP~G zEDM#1phog8h3CX2V+6@7&I+wUie}@Fmn-oa;@?SHzd+{aP`$A(mPTk$(3UZliY$9> zo$EBaRjZM7;C~k`>>;H`lAAQh>?S5h^`YQA>(jn!sxl{(jvM}0VrFGQO|I;5qeC=L z4`IT@@Jt?A0HDO z=D%VLDr5;{_IIHi1>KoX*dlrsN?*5)B1s;(sUZ_j=ap8|WT{*+=BQuJF3_Z{T%95@w2A`z*E0?yniDw^gW8 zDvA@?Ir5Rl96vJF7*~mPzJ!40$O=)mH%-lU;^(d>WQ7GO`qrUDZlTeQPH&g3w!wiVSYSUXj&@R9<21 z44hRbkf2VRZ5FR&q(I>1D!l3E#+g32`c zM5#!MWQnX_RAHX2(NzsB7l!Va<>YK9LvD>JRxUnSuMmrPMew5-&MoX zbhS6}K2TNcDO;MMNtA*6WCOXHB|J`A(Y%KQv1*_V8(x?$TrZV0-cu`>7kD%)^5%@T zfx>Sa&2U6QWi>`PVm>-dRCo3ET_PJiJuM>cK^7co$(Ul)Lz?*k#NI4?E1eS_etLBS z&3M}BX-+d7tE!B`yDtfQR=TjRlBzO1pIhU?IcKV^lp?aI#=f*tvfoJIiKk#ISZeN$ zdiHk8qc5$PE2U1RD?@+8a{}Ft%Vl@g;$6~bxdhZDV$zZ#zHv1Juh%T1e^F+eb0{1A z_{hbdyLAzT%rYlx%uBB4c!!6^mnEK+g-gLG<0}ec82#k}KAh+b4QoUX3CA&m$3iD& zncW_4>fG$pP;em~^kMko@V6YQBQa>qg{P$W)(q#>34*peKJXyqYD_4(FmN}nC!P>h z8H9XQ)|B=4?;yTBwD?%sRlbU!V21EL1X_mj!mJ`;z1M6gqyDlx-)DFt@!Vd+^`-Z# zpe6l8N3Z_!;#Yf3jlN6VmKY}=x8@nHI>B;-k&wN>x-vD=R;dYy z?Xned<^RmP%9`m+l;IvpQfhSc+r}+KYsf_xRir{sLF?Eqr)@ z3~uWANek4;2lh=VRZT!XPsC6id=))$DN}wk77UR;*V34ydC$h2pK9{$hGa{N7Ctg@ z_lF_Y^I&e3@@vfhY1LaTU<&)k>EG4>_ z+Az+8LW%E$*h8QU3=|5h!zc;_$3(l!U=@8V%O9t_W$B#h)p{jqAkjOVStO0*6y50? zBtY~$QSY=MuN@NlxJs@n-cWj_00rB;oABqFr=9rkZG*6A9~a;s9f0Cnyf2b7H4-HeXJ2 z{TOw<54csS1C(}z{K}2$onUZ{=SLie#~jNg7oxC>Lnfh5yfW}o;yc*VH6d^(Q+bj*DGc?Aj-Upv!rZ=;#7 zva~IdND)*t$3eHRI|;-hQ9wE2u6hB$&EP^hSKygytceAB-^PGW=+he0U*jw z#0yb$hEXK$Fh^7lxQ={A5<$6>N$Z4oZoJ9U#~s;IJ^~Me$ZD)o&cRz~=N({lK3*8i_gh-^z1|7Wz4Uz$T96tXB+yh4(S}pi6;su< zpthT!qB3bX!~%+d+$M7IeFx`+&i$qvM?Y6l>QkbmJj(+ph+{0IymwI_k$%;UkzBU` zv)WBj^Vo=<7w~@4w|JV4w8Nb_4lFKWB%@@CHJ%~#B5Mc54=`f}MkAQ^Xe8mhP}t5N zK?pQ~D2ofiA!sAZJoPIMA~d71-IZ;NgBh!<6Zt6IFDgDA4}(}N=3Tz#6Lc!~&{YSu z@1Y-Ey3&~7j(^yF#>Y5WN^+gvI8Rq!a46(d+&w=BDUY*mN3brBnkLv8ESGU#O@e78 z%$n1xaq*8cOO1E|-S7UKM(z`2Krb?zwEY5X#epmP3y=}OF8FtZ@Q(mh27m@Y)9_nc zIT%_w*b}n-2qJzDGBW=yU9Mk%jDSe?2bjqG4=EBhrXPf6LN)-r@sIz1=Vkl>T>R1I zw*c*TvGm`TprmJ}rDgzBYGMK)6HI`3?l-KFi4_1*u+aZn9n(?I9`N%oB}#g>KWb$D zc$oj24*ml%VPXORKLBY=HhO9n01V3n;F2)?02X-(IXMYw z{~0-Epl1Onhyt)g09}R_pmxIqK#Jh5gP07hsGUvCO>GPfOm%-? zWZ%zdBz5gf9ZW3^wI!|fOf3wx%fBI#zb})@^7D}W2A44Y z^*XbCIE!{$%z(6l>;@S{eM;MJBGolaO-AXG{qY}aipz))Y6aCl%jEHeWlVmtX2B+e zN{KO?m)Pk;Ef>nAxdaLhZxL*C@w}d$UF2>Lzw-;Ggp+S?Y}V|3Jzb^J%dV>t-ZyLZ zP5sQQWwb=`o31N$H|=fEdv2Po^&VsKcyKDmR*KUE4X``M8dQqGFr0(ue6^j?`tLPn z%@e&fJiV`vXBV}NaS-Q%Me*7%Z<>dw>ZCRA~AO7jAsv$1`#glvUL^?7ptOg99!H6eijh5e6}?p|V#Q z(VpNDVu;E5bo`nA%l0h%o|;Ok?rAF1#Qbsm^qDTFFC2mibG9-jP~F=cj3aX%B!6XC z)_0CJhGPMo1vCgpLuw}B6DMGhsZ}?9R+2SvUJF+}eW{ri7*b`$H|O``D})x(W;T-D zbme^ggj7iD=Gzx7Ii}9`#xY^}8ZD+*%%qb?P_iuIco5gDgY_&|F#}u-P^zRTyNKc( zJlu!n8j3D6<4%mrwDyM+nO%@x#3(}_rlLZLoMJ?4<3a*RVg_~6v%xp5C#PlE*~3C1 z7q7gXsOKoFHp--pqUgdquuoeZ=$GAej zHhg&U)d)ZcGGMP+HoTDZN_E`HU518gFy>sGL*#(=8cnxkP9qJhb)#`}@9{S$yjlBX z-bP_{W964_N`s;gv@Z7AF?k8UWls?SjoA!>N4RKRrB9wjPn5KAcx|V{r-~dQo!gNp zE-jz^N_jlx0ir=t_E_XVX;tTZ!YL{N_)q{fE%sFkSdo6_7Tr#W%X_p(@kwMWbIPE$ zXo4jWxzF8e3>jRLb8^0u#PJr|DhZA){BwG40|ChFXh^%|wCtu1@1UEhJQ-MX7}s$Q zFs<6jD#OB+x0jd3Xq*q5Thv>I*q&&a3A`^ifxTgj!ECcI1S~8Hdk3UWn`yb$y}JA6 z5+3pux?ma%H-t!M2HG9x@MBU!iDyN7^(?u16um$SjG36XuRqCn8+@ zj#MTOMYE^wk5#jcJ>hiiF1Bk3N$Phr4D8otbFcx3&UsT8U$yGovu0q$WIw-IbocIm zonns+7Axk0=-r*1|p@39ST{PCJt|vuK=U-E;h^5Xt$4e#c$NpNfVpF z8C(Il`N}(`r7v%9Z{E1_NIb=YA1mNOJL;md2l@HjT>XU%C%7Ye=4An1P15V@S)5>^>D1J`_-8*qU^^Dp{N(^wT5wNEf{EW`DCG ztn;{YJnQv9Ip(eL|5$tH=*spqe>kbwR>ih$+qP}nwklS|wr$%^s$$!${BrMfPv7pj z{mz}4_phvVR=(NK-s_x|^WhWh6CQB)7~kvI!xIAQm2iGTX_rG|YrFn7uNlXB|9YtR ztD;k*7i4!^1vf&=A$0;@T$9B7^TXe=39kiF`{09!rchw1a(Q8p_pI;zOFd zxV;jR@Nl=ST~RK!+jj+-w{fE51i%@w+2P6(&U(HOy#SL9g^}7^{hPpT(MvGNFTt&v zw2l&0j^ARqT{0VAtx6FSi263kJhzKtNF81}1f2+P8V^ef5bY?enF0`Uq>w?;$xYf` z3MhclzLvOBmG>YG0k(i$n(=Y>1(Rk1R{b&<`$E8>z38%hF0H6_xRNVMG^h_ADK$4C zwTZYyV@`rEk{>UhHycE;Vyf^1+-@ZjT`qZes;ogT;&nwwMK=T7{BS2)bWjlz)dF)x zPe+zKLwNv~+2gT?ZxKvsW!)v!YQPRbGm)P?pm;0Yocg^|21W`rs4z$`XqX2*Y-XN} z3FnlI*Bu%&Z3rH^9K%Y6UqG18ikUrfJX~`pnhw8_1Mh|}ne85Ni-BRKUo}Gsu<5p_ z*1jnQC*FG!UqjNXN4B_LOn@W-!bgPxFx&nlfC!x%=;}CE%<+qB-t)8Rhu! zR5{be9)%B|xlICY;)6;sHB#;!9fm(fq7;N z@{sX8$p>A=s(dE-rs^<5O7<5}Tl?RckAq!S^3+r7Tn0^_?A;ezFjFB!rr#xg! zwdhe1f=(pO1U3^;BGjl>I4iLbto9Fs$!~P`s%?~fn*5zC;W|Cz$-@Lnwi3`6vzTH1 zp{vrFLaSrQ!D#ia``_D6$70ZkwlPCgm>{~SrG&>|Fk1R!>N$-TA<|q*kt30wg*I`y zfWd)+?s6wMq!N%#-SBSBoJ`Kk+yxEnjgu@jv>cg7Lxp(CUJxXS9&34uUf!*XnRo3# z+@QF#st$C3+(LQzH--BeE7O+JmeCn>Rgb3lFMm_z;znT0}ck$ zbN7{X>aZVjaV#l#q_9WbRYxiZ$PxZ^Yt#%uhCy~bq*$fH7g0~Ue4@+eMABwO1Ep%m z%)+3knicq$Vdy|o0aeNi(EVi}mga!CZ6UCmLf>pPtJ`7&q^XO%KQ+$dZbl_Se`opZ z`yzWdTd#VA0EoV^#gEX`^N;2MvqnKUam}tYKj@4>l6K0^v`#Gx;GqPrLqOg_Vl&rO z3G5^TPXJM65B9P-pdd57+7Nx6>+iJ(+%U;sU_^ zgEgn=5ibmn#HHtT-`2dz24<3ndtJHp2ku5e%2LISv5}!+&F)Q*ePn+wq^%#993X&B@`ia7I2fl@vjdW}^G4 z>4e2SQ07;PDlIM)8bL2p0~dHpci*E^$;FPpDIbPl+m}gT%Kn2#_?JH5-D`<$?MOJI zQ4Hi%Q)mexP>}R4e)bdwh%SOqewpup0->G@mbFMf#wk%6isKNv`hHMg*WSdyfao_%AXt`!q*VOJ*dBIZ|Ph8WfR$$BsS4-fHLJOOnFJT_TWHl^T5p zn;g+&l~>!zy46*KBWoX-YAV;8az+#ifyVWXvRV^and(kv2CGOm0B~uXF@g|K?w^Dc z@4UbWwY@5;ix^$)kFGS7)=mL1=((7kuPGZhV3WKFPeiB}uABIRf4!$Fq6VzQ=#Ts$ z{`MgB(u+w8e_loA`d!upP4kd|Bt;6xOK6`nQEP|_RWO+m*Hr9G+9ncu&*!e%e=m^%7%>g#tv_%GDg-=g<_ZNK+#dqX~nEXY6j z>ppS(f1$R1f9>zM_W#Be{LO3gn>US~{gavbOc4EMA^43!VE^~b%pchTM%I623t0a( ztMs`S^S68WE9)xRS^k*S|8va#Pt^eb<1&EXw>19!;r$)8GqC^V7X5tdZ`$|I+3Xn1}xC^HfVC&*0NT$q$1vnJ4 z9;9fD9YMXk>VFr(1uWJ zbi6(d{sOuuh2Kdf?)M!*J$cfG6^-|uz*O?-VNwcmw{A86vNdgRW^f4f`*J-lZC7_( z2ROT$6qiO+ww7hQxMXB&8Y#yZ?!lUHuqkQO$J4mf1K9X#VY~o4PBQP)g`s<|qKO;z z6hvi$`c8uwa@=}P%bet}5c@l`BX$0}77)}T!_Ud2sN}o-_0!9);$jcYIB@w)&$m+7 zJLB#E7AWg0)LSMv$0T84Bo5@et9qtu8yql?u5;MZURO+R1;N(g)d*?9+f6`DiZWL2 z5dDCiWkLB(0`l))(QU((?;5BwG&3{N77P!<21L?j=Y-HR;u_wb2CmITx^=FUgbUz9^H zkbGOkbx{^1C@sH7qTa}$;JK4h&Rwdlyfe|Y`mt3Wot`ej%isLMr`;jG6nf7frK$oa zIw>ud7Bewea8(^9Ee9aA_4doqmBpNDtJsMvbEiP$r9n9}eBo$&qyv8^@=FIHkBJdy z&tOvv^(}Mb?12U3i_?%1BBcRS8c&wu!-lCGCkTsPC=iI1aejUVN}Bc6h&%F%lw_wIW@9s$^P8B~Znl#B3d)%pNOrnj6V3c_1$EFE z$O`Ga49X)-;f_AiJfZ1~I&(4nD}{gf2RSH94#m85RbQEg-;FrIXsd&sz6rz9{_{e7bD2ll0T!sTFgGZEZpplDo=RH|O8LrF` z1*fzvF+Me|NC{oHsk2ys+ldY?_V9` zG$3l>fcpx&PMuCZZ1wS>cA;7f9<`A*nHi@(ffFj|QoH(cK0e>1k7IQD*b(_7&#psT zmC&xXbhUY2%FLKJas#Y`o2{yc_Fn4{H%_BAa|1$;e+qW>-sH*VQP@5Ocj?s;DkcfV zoI``&UZrZ8ijP5T^(zs^D19UwoDKkmAe&yv@&YELD}2PoU~STu0B6KSUI=n$5-G$` zog>4OO`yOt6YU?>4@6q4ZH(-8rbAuGtm;r^xN@wk^q_qc4ti6FaSIPMhb#^;ivF`^ zc81q>V<|l)zz8xNSfciZ^@HaXD`j7IjO5+W*ER5(q95p4;zMQfq; zH1;bWW%PWQT&*4u(0j#eGo7~VzY6Nf>UKI%_PS(Z#%L}Lj`AIfj4{^It^DE-Mk=Lk zc4?tXUaBhCnsU45#ZJ{yv5)oy8#ffXmA?d6amd`90N2eDx|d1;tmp&v-v>yh&QLzV zPe{J>|4`2MEZ+bVb@^5#u~0v2>tQ~>AmgAgLWBvO)nn_Q7jjWMAE>XhUB?Ke;lv1o zTlgs7ZM_O^f=B-~isWY*or8TPK$PRG8%UFiF%lfJ;rKx=x~BUOAh8T+%t}!o$wArx zJoKvKs${GsWi%atUksV0JsXPC2HThfF~eZZbE@@eP3Dxgd!R0;AW4c!!`ux9ye;u( zRZxc0seb}=uIrj221qH(%MnkxDafKO13Ojvx^^qxsetzv86tKH>{OLXp+)=fJmn%(L_FOQe;Lex zRAs^Zz_g}*Z;^=V)O9IxAO+*B0>SUPHPg}|gH+5|%M#E>$t?f^Z5><|y4==*mv`fo ztGH717<=h#xmg%|bx=Ltv!^RcHVeXLxPlM>G88-@kQok!8*c z`^{!UmpN@=`ZFT{@gR;(xXf@^Jp)p@LpIeS(ab_PIE_;AKOun%BFdlRaaEHUX9|YNO%e?==j>6QwzC3||sxE{Elw@m(1^>6R-|G$l0+?3;0Ut#ETAEken8xTGXP*GGV4f zS?E!GA$8={*jOP@kp!0ggu%Iu+x|m8Rb{CfE|>zntX+ZUZ_BFg%ch)lP`+dQ2oZ!% zg~59)7TRT$i{s48&J!r5+mvPlIF@eP7Stwb-l0*dQLpAMrY)EKYWIZ!w(zI0Vl~{J z;X0%NTcP0KPwXY=F*s#ct(9%^QSh}lPr$`{<<%>n_stm#wA@K z^FTubypITw?DwfA;dYNlK3eUbtv-~Lfi_Ay&MK)T*Fc_=XM3eDI2qy!>Sl7p14wF0 z*2VI{=y5Yf9}?l!@tr-kCo994Rl1<2&lPU9qM*0mq>D?Evtz88aek6H5XdMn%-cR^ z-atmd3x z`}?dSn*3Tq_zGm9sF6OL?CcjXJq6dGCCS0^${W#*Kn!q9AUZ<17Hj%7ObWFZL!w0+ z)*dr5p^pWui_2%F8sSndi=QOcEAd-+Kl$^DTsXMa%Ws%FgLZq-vN8lNNEi}=j2PL_ zF#V9vrkV0Hgw4kQXeOVE60B+WpJkFoG5W1@-}a+`gzb-d|9=8(w!geR^tYDtbrD3LY~5T|MZZlGT`tr}?Uh!#&(+UE z2_UHAIArmR1XS@6WFA}}KBq@TD_GHFmq;1jD$CEx@z*>02(&&e?!K%7iT#@hdepk|KZRyS{oaCf=v)W1%(b8W1>K-HA83Km{#Q%g^o9_Ud?klzzJ*E(lvR@+}lXT_4Y{ZmX@@Ab9pN0>b1I2h9$5Ix1wJ^GD$45#1&8u!xcF-AXCJp6;l3mY$a*iDAs>dI2 zIn&DDs+^P*N{eY0wtTyU4RBGyZ4S3K+BRM`XTn(1d4r-!JCgd`ErsxuW)z_TC6Rdr zgO9g61IR(wf4uCB*_)zA2&zmqASLl?=ls`Iz}Ja9d+ePCH$f*w`YX{KvFkq zB~<%RNzTm|?Nui_^|5R=7KcJ+<9XXD%7fGIfS&7%O=~De1~K;cgHXI%wW@W|yMrRT6R;2sPXwg8 z+&8h=*@C6mYz^7WAz;|Wt5`?Jg+s%&FX=@~1u-B=s9(ovi^`fS+E9v~!z$(duq|h7 z5)NpVFsmNb?mk%x_2^C{Cx^Alb%uVSyAjn>pR|8%SU^=z?74Cs^yo*5y|3C?LNc>n zcU(V@ILSk?pwTGRtSP0r87sg;M?rLd)n8N&od!8t|9Sa~ewZ#_DBWZmb{OXLSeP|M zO~2n5Ef~1cs!u&DY$YRc-hyf5*G!JSct(6rfq4F~NBjO#nCjEXLijr7@~Yv;51x3S zTxM(8_39J}k)-vnNjr$9{QHfI`0KpFy-eY4_I zCy+(4tnX}eMoSs+^Tc>xlCCu#R7NzC()ce+q^r=s8tUx4hNVnFVMMUSW_(S;(q#qN zsf^LZVO8#TIbg=|3=O1x0hC0b%X!LZGB3N&>}IG1-d?pM_t1*#j6sUn`jsBj<_{GZ z05h_Kg=QEwCC;OwZ6fxLp@N|4Ff9m>3Zl_DX2{wo2!BVy|ERZ{05-Xr)!)!$Pf0%3 zTfYSsN@rIkyKUDFW|0(=xtJ$Tci*rM$r({avAGx0ZmJatxP?CpFr@m9;l1y{qnA3t z*O0hvP&9{^i^4M!6+-_@$-QN~<=`{;STmg8^MzcYJA>F=EyCz`?HvUsSw(cDQJ8 zu&t3sU=6Ts2&-8%nTujzUdi+tIDx?m{P}K8!9YT&`IoaEgXqwTDQ#^4U%s@WRjaE| zhKVl>Bc#uHS@%nszS53Kzf|Fjwe!ZdNkHtHO?e0ua>p<;y0qYz>Lh3~(u9om+VCVf zvx@v+niOD*OcO?IDyFWWo-?jUo7n2)C2>(vWCVFDaKNYJ3Uk?I^-4hOl+t;Y*vG`B zS<)OJ0MKr>OhD=(jA}2ukni|>lDIjNIC}B?K*B6jgteDM>~5{5^{dyKy|M7BzhG*E zBTimNe{54-WVl65Sxd6Y6(`IJO#{IPJ|W(m_1=ClRGhK}kmn;=+8V0fc>NJ7is@ao z-bMHZaQkTXC>3l}#7Amctu6*)G(pNa2DP@e*coqZF=CwnCV`E%OctxKW-}T zjCfuPFBK3*5>LD-*;Yo1C7vi&@tugSCJ9S)o}4RSwu*Es!o+>{c@((=$8U5iXElyJ zu2hO@ZXje_bpH#x%f?h6C63#a9J>kG(T0s`Qe*e`VE$|$3b&5#%wu#zeC2q2eaF%b zJ8DcqWV!7V46-d^6U1D{Ti=lQI_y%mK||B4y(`%ru!&{gw&8Bq${!SWHMf`h` zQ?VT1ng-?YFcFI8jw;^KyCqwKb$g9LA|_y7g#>{$NM<_R zQgKe#TN5O^e`xO$`O}l7M*EU1`d#B8jBAsR2e&S?uQR!Sj~Dz2RQQQ8w<_-?y{>|~ z+MYXt$hG3Osz}d{XjOty)LQ);@NEm2XwX zFEwYjUIU2T!oF)qxFTzsZ%kPLq;lPhz5XiwPji`ZB{vk@-=_f~xdo3o@Cc3-VXX$XNV)lg}3lFf8IGWAKSqBqmu7DxH41Xm_ru5HdDeX%}-Y!oe&V z!xU~0G9QR&F>0V6TZjx+osV9ZMD=oVwT6@{!7dwP<-`9(ey!ShV45B-wW_4RBnGpH ziZH{F1Tj&JDDVnUAdq$9$j}q)VSo=0go1`-(X6Spd$qG}K8~&Wc5PQURH`JF;R!9G zE5(nBN(}R(iNBqJJ~$)ZwPCh>J$BaGKG+N-Z`CL`2XCOYTM z!k2gI2hYIWTpU(_K$+bSnkg&a_zir!4-d6g!M1Wn_$>1C51EW|H1;9f=AAlR#72p+ zq<_U#H0+IePB}|fOlJ{YufYVhvb$`HGPmJqr4;UTC`q}IPXmo=9iA!M2pMQyu-(Ye zq5=s{!8L|6)9%R@?_Fe};q9$HPkVPwZ1I}-O;xdWsfE{>zvfpS82g{BSg4q~~|7YLtE zBIRUUz1oThP=wXCg7UCw5#qg&?(AfCq%{i(ic^#KajY%3E?ms8Sord}o_>Y0mqc|z z9K~PV{yD(|y2P|@voVQ>7?9zZN{b5#A#sTS^xW5FOZ7cG=XyEWt1j}kt`sMQJq@m^ zW7@iJnXa4^Zud!P5$qx>QKU*vPb@E5p2xjQZi11KAPK{0cP`}u!OnsY!e~5w>kIEG z_WrKgP9Iyewxv|&nu(tjMzW7dkg4JeCmGwl+e>2XdYfLzWYQ_c6Fn#cA%{fGXt93p z3Z5x19;lPnLJ#X#?h=+r)+c>zK~MHyJHjB1z3kk#fYasm`5bF*z4f#W{O?UXG88?B zeUpxt*vY|QT%6=Mv0aa=iQIixmP<;p2A@<0in2lfCIcYKM}yG7LxSuT$?4}m@C6aI zUAh-n!5Do8-22*9l-LdQO}HONa4a@UW*|=LuJq|=DeXk*Y$s|iv(|g1Vhq@GA$0mv z@+Cq<7IhbAqP)Kzau6||r-%3sBm3l|99cw+6a(mh~-QYqs`Y3o|+*S^Hr|}3o)_yr4=ceD9FZr=4Wv|^{sl@ z=HuN2D7o>~e{V>P<7A7yfhjmBkLZ)Nal|%0PTczdq*PPN{1Zt1iH81xF#jA<{|=-6 zSxo-)_Wv&+^&iA!*55AsS<3RMp#I0t{{VUaRLb)E@BAG_{@=u929{5w|L5QPd*un! zXPXDZXENcp$`fYR-zrc3H_3$GhyT+7|9kI0J>#dq{rT`&KC=;wpE-Gk&pr{RPequ8 zm6e8x`F~KtLeH!#=WJkQ?r3IiV=8NB?4a*t>)=RZZA57IA1_fbuFKZ&OQgF`;4N{GvhI_eTEl4Ga4-P44)y7|3RzAzaQM%*~-b>@K476S1RTA zH}7BNVg8lG`Qzcgu_3>8d@#}dNlgOVzjiGA>0!Fhj)nh9hW!3n`TM)%&&iNK`Uw6( zjQmBCcp6G;F z0fEHs^-o)6Rpv$MEccp4S8Q$9`c&^!l={odE}xdyn|6r_q4@T`@YVj?3JM3sQFUW0 zny5@}DwA$gTh@#s&4%nl-I2VJuH0$GhvZl$Ut$@a}{nC!}cO1jtl5$cs1Nl?C=q3jro?DL#Ojp&4qW-e6~B_8iy!pp+D z)PE7%hYa}(f@7PCU!rY8oj%v>i4C4(I!vO+n&=`{;J8XhUX*^P++@?Kon2c`=&8l> z=uwjkHVloAbjvxSUKnCo0TG9=KFBn=fyOh^)Ez!=LT7FB1~D|K)WJ~NgUsOwQZY!` zU0LP0E7BFeVjRjI8oYW3lCBg`ZGWzlTCqiN^+Xkh%zx~}Ml}C>Bf&OVnBqzu7Knn< z>JaS_n&*KB8wycXaZI;CD%~m+OaqQteaNleL99SBb$>Zw4NcoH;mI5)wRXIuCW0|i zklMN-5x_&Th<{>?Mud;Zf{bp6LaPG!#(EkU{BC)f+_Bb*{kUYi20}si0}z8VT5hNX z9u{8M+Ht8GFcYSQ-&?b05%6p2+xH%H75^Ye2$(cU<-)M+J~R!MkxZu6L>rZ47P$1+ zD6wS#d50i$sD2>0IfI=H99|-3rSnK9~dCj=9 zL-S^I8p&bhx~e_p|DscJTW7^#5qwXrxX2vl)tNPOG)coEC#-N1d%2UIL>oOqnJLuq z(_OyC4Nu!XF5GUDMRN(L`dVW=@ZEyHvMX|!o8-O7+AVh3oC6nAx#=R5Jq$CDm@UYs zS+jHQXod;9k>@#5_dEj-#<;XT`-Q!vd)bL+1`|{m3{lYD5Z)b%${KyX==2dcS(S#B zPCRXcOk7HX)$)>R3>qF8)E^=c*)W3*KZ-;~X!lni^YI7il5eK^@+Rf^Q&5oSjoAT; z%Ka;Awi#LsbjCrc@bCgv98k^MrejC)l>2HEj+3MK8Vb6j@>pWSN^Qgkim<=$VTHs1 z31LsiI7IdZV1~jrb`F|US{WrXW$-xh+smMnU>`;oz7>dgAIp)$$6hqzs<$l8gqvqH z6wYH$iUAEUJt~QcS+@|&R{*sESD(+X-~3oto^GuzU^myXuv{B(47wQAG%Ydr?Rf7Y z{((M%VAzphEqjL7Uz+J~qpF9a2qWh?G+V;CP$9W$O;}H2#Ttw61sG?9wkjuaFkj9& zf9gT)SoKWe-&9OxSWNMYB8Uo|^RcfZuBl6%Qkz^aHc4b4N~ym0GG4HxED8^e;Q`Vo~DbrUZR z2jtrldSEYdh7Mx6eerjU&t(K*L&= z-}a2BXA@QVtQLA`_N!C+d)o-JL(&b(COog{ZGrGOAS%(v(8l)L_C`)rN4~1U?7<6| z^jkh6PZ`fJz5BdMGqPeyoU68*Jp*r{ESFS<+y&+ry7InH#E%x`Cb~2%ajSEsf^2$k z@|97}q=7I78ip4Fl@wE_-Ur6BP$Yw3M?( zM&M{y!%n;iCpnau=c)BDzG0GGI%)>pqtqhY&j6-k+A_&+22@nPms9w|%4p#GAWQm%pG6$^TUBu0^lAl}@0Z6~U66xG9u;daD(6Q&t_!;yi5 zd2j0&@>u(0tYG~+u$R@Z`>RVzH;S5jmGZkFWLns}9Oe*>!Yw!Ii6|a;PVT=cv}-^6b{O^LmzvXKOhzK+*7_N$A(_G$riN zm?Qv8A}bon>xtNSK=wQUB?V>h&+Rj*1aeJh9e{fgAf00@ZPf@l?DNG}kgyhEgdr>G z)r0BJ!JB_pAq!=VW-%Opr#!%8={I)nz+Nfe)(H?-O427ESOTNqeUci4+k)A)-IJ}2 zbk8Yc!|(AYPk7JsM|Edab7w69dJ=4fRjpc!JtD)@@U4`nh@Q+!i`(Cvqn6S~kca0` zz95<21BNa&0(&XUu;~F{!cXYz0aR9s+sj{2_qLN^*#M4NqP*;=fDq^1gn)fQAGYu% zHIk?~wCqY&bi_(6!;g7>z@NY{8~++`fI82}5vH_I?7LvdbNLELyde6T_5mW!5v}M_Zd2`?d znvJV`PaKWH%qKO$z& zal)zNOA>tHhNFN=D|3CinTIh?`W5{&!D_FqwvU%&41}|C+o`fcEOPG;Z0kIi3uv z0Cs;{uo_66inJLq{w$&{#?k7@v0Pce({f7un|L#r5-eV1191@! zFBT|bjBGoJ^KXQCZMq02J`H0TT-KtxlKInn2}`r$Eo9yoH;w?Y0eZLueSWg*cGRSe zY!4%^&vQr4EXsMRL5y%AP90Ky zHTT-1A~YCpfm9_?W;+Wdghm7IoA;2%aWAn$9cQ_JyQ~#?s;j8Qi~50rhHUn{+w57U ztQJFK5Z6x38RuX`wfMr{`SWUL`5E0j^B^^Kj|UM^=8&x>oZ`?>eDqop@9lf(aVROT zYoG1B4Q{kutmIh9G!0amm^<4J+aq`e#Z77FVE`EC0Vk=>rhUx;A!bZ^O9bpr#(c&R z=g_tJ1#B!hD|er``K?4K>6WAI;$bRb-6p;?6QSe7W*J86Qky1Lr@B-svht%=Qioy~ z{E6M3-i{<;*cbNJC#HHjJKz{ASe6kxO->lFVzpWAGgPj8$=H&@Wy78 za}8*g4#O7YE$K5n-3qKtYy@U0YzD{S={tP+#kb-J6?trmPj@vfG#L4BXHd02c5?2* zo+Lxbn`(m*66vB)q_!&o`;AWN1vm_$Nd#cV;w8xqFL#i9P{roH3(oCir++uZw0C1F zgAI321F=3OX~WqsAj(3H()k5CUWTO*iM)K;yCYV{pjp*P0 z{H6oJ5>*3tU^W)_?E4vNh`aph=w{nC|-IyN{Yg&mVBI>xKy<~ znHQ~79S9vOTp`K25)lFN+opJtQSYUusV_c zfPxE|!sR1E2d^J*-Ft0`?un4FFd+UW*_K<#PRb7n=bFt+ZkEvjdQ)+&dRRHuk;+<2 z)-yO{Mahwd!JRs^|E-Y>K2FXR$|O#5pqNM+Qp}<3O2=KeeI9P?t=&DH)6wmWao6D{ z%>6`DrTkVQ)%S+{^!U>5_*CL!SKbq?tMb(+^5-OST*9|bnmXLWF9lK8@3NggxV~Yr z?JAj^Bkz9zL35M^{u$-+M^XRZP%gjw)FD3`PXE)z@L5Fpzo1Tbqg8Ri9v1-OF%aHF!ur}4Pv$4w& z6mCZd%8X!8zC5nO`4O?v4mLKX;6v=pnmPHtJ39{S_~4`RYI*s3U!Q0bpeY2UjqL5b z*u;m;5X}Mq|{e?zr>$i~I-VC4T$WXMH9}03r z!?|w^ioP2Y1-=2EO)4&*-ObSL5WyyeyC44yn(I&*FohrV-;U%CcAk!P#l}%=A0h?H zQ!xB_QSyu$nvyaDURQNnobjz)+rBv*q6g_R?lQ8hcz4=7z0XB$bvxgQ!SHwj;keBE z-R~e#D!`YT(CkFzx#-bIV_&x-dX8s_v~s+Z1~qpCQDt*6G^6XRYme3Wxw*Y0L5g2W{F!Lq6bCPm-A~W^&6)t$7cR5h@r!vL5Fq%=zUHk5*vD zUjdyr9>drPTQMT8Z+@oKUpPV5gT7L^9KkSR)G(baP}i3t(za^;yjd?tlT65|)i>1U zrZPU+vuhF`|G`?x4eQfv@p|*E7*E;IaD746#RV1oan`z3RaC zZu$919IX%o#4dUvw!oNeA2<;2%}iGVgkoCT#da>au1GB;vlVJ4U6c~nlozzbHjVQI za++L$2LhCzA$WX2O&&3n1oC=~6ad$a^KtsfWX-JlYXNBvFg8Vpu-yG2*~dzf8!7@u zATVXr&RC4?a=yPuAj`gW@PP*EThVHz?bwuVUd6cc>dH0vN&>b-{Q8uMBUPC@h1P)v87&8^|;8DyvI|D{D1zUBr)Ln8Q zm)I`@IwFiWQ`P}Qw>I+e5YA<5%X}oJc5Qg4T7aaig|E$6{lHA9#DJljIqTtA;=Md< zgN(#qc*O{J{gLn<*IFO+;GDqRTmLe7^)Ya(4Z^FD7@x z3OswMIWr@8Q7cKc5-4@@MTBmH80Jj`f@{FuMARU0>is4?OloXpkJvuBO4G!SSr`fd zI{?&%6<{RSIFo!LMYU|fe18;c^nyg%TeYgf>{`Q6=;;#s4jV1=Trk&z_oQFVe-i{p zEi#|ST2Ydiw=E<~4uCXBpq1T|d8uw_6F0w4en=+|?w(T|Jj)tEI0ZObQY{o8B%aPq zx-Wsy!RR{>dSJbbOpwMeEhU=l&Ce7iJqCPY2RkX*J<&+8Q<}^-3FrF$)*NQc4 z__k{Wk`3NlatScMs`T?}FDl^BPVN{wZ+EeLh?*U=ENWoj)U2N^9Q&sol`rW2LK<|m zL)1K?0I2ddfW{W)Fudp*+vr(PYLFHE^jV*w53e{u4QT!@RTKl|L?aX|4z;|$;aNy6 zmVyjyWO>t3tA3(T{PHpuJI6R*B8p`g_k%`dImabikk)G2Rvhk=%Sv;)MmT|mp(*wX z#&r+#bfRW%g^jYEqB{A->Z~hf2fVptpleb}9Na0+k}iuqMHU$adaqCMR;^C3IoXYaDmg~Q?*b;%>2O?B3iZwUTTb_#r{g|zn-1hdC`)VoZ_W ziElXTf3JZn9vXuxRH`Ze(5&sOxMma~xNF3OX*POYUo-pFk!t9R3P=q4O>HN6`kNEC zoTxpS^3M5%^9L}-M!XdhW-8MB`Y|7aBVd=hdg}(WD+-0`HhX_o)>sm(AwD&GVQ%IC ztKc9tN{>HV2!3gCNYVLHoB}_hUYK1m3AnF^=Oit6b$35)2n3gyZw_Tr09||4_Wf7)N3eXxh1^j$!ZHDw7P&Q#yPDs7bJA~ zApGc}RrLd(L-Aqpz8qxDu>6DQq@fKi158qkm6u6K&O?K^QxW?llAl6;&ir$c^7XE! zGomm9lyc^aq8iR!8>j~8j+TZxRruJcdHBW+FHuH2jzRSKgsrV=vg;;HR0VA;yhv4s z6PIhZd4`}A123whDKpYr36TQxJ)gi`5qh^H-=2r>{rofw+ti7b2Of5lQ(&{!`T(cs z`LTain|<8L7l-4WdyJGQrPS24kzy@}m2w9A68#|7xe%*~2VG7;5tuKzYtAu4fjkjF z+@L;u$4=`T=X7q`Jk@F_g`kMS=Qj=%j%5Sn8Zc?hOT%S(dzavMc|YURw`rQGZSiT> zd9L3%x%y$diR9^5?I7|zx0-E3gb=gCI0N2QCapUuWfVo=IRnhL!o4YCgn$Ur=v02O zVXEH4pC!F>gtcQT^->?(_w<-C=Sw5RIU!y8RxG@AMjJ8~_L|$(uiwCA5fYm{CB~Mz zK>mOvPs;(du_-~8Y9b8O{c3O!ek%QQqjtoeU23B}T%*h3O@><9J`q>*!2o#7;YLgW zA`JQ2lLv4^(b*h8DD6eC@)Ko>Q9{FL<&Kw_B}OY}n`&?sKuQc;>;l*+0)hH%L|=B} zfe9f-jHI?)eq0$0z#C2hdKdMJq5D>rXS*6dI(<1LtrH>lG0K*<W}$4YRH@8PA&u@LYM3aiz9sIn+g%gI`(*uQZGOZvKnjud^BJh=F#1 zh%?K}kA%W|T#e0Y%v)OzkGAGpMWE#6ZRqXb8VO*0C8qexa%e2MV%KGdC&R3J!1OzK zfvfX1*BUgTfMG@5kb=Jy=?6*=7%GrWD&4wg7}Ps!aTXa25+9f?#z@ap@;xAuU}ZFK zoD=1gvTBb_@7<(7GktY?f6xWi^^$$6xx1778kaw&mgcV`Ec;DZO%kQbVnzEGL+~Kd zooqM7w$&JK-|wyIz*6CLM;PouE~EhbjN;L}-^vR;zD-{x7)Pu&Tqs9#d^yOt5Pknw1KK|0(MM&lo{B+N;fB|=-;Wi^WvOm7sV_F$9 z;Kf42FoQ25Y%#gpfr>-gZBjd4trpHiKB#&j?UTd;M)>~KdZ+B?%K_fZ3to1ka4Rd{ z@cKuf{M(xH`i=MEn=N!8Lqs>;O&89_{fw@zqO`B?8`Osv_gk~}OEIOc*s|)y_$C}S zF@|6CJ8^S|?id*vb#f=5R(tM;y-?byQk=>6BfJ}5z-b5n>pwx&?Ek%y;diX}&qjvN z62Si>s{U6^`u92hDysgYcKaJJ{^Q~QE*rr9ubT9q9{xAkfd8^T^iK{m(ftO=S^uk| z{TWgJ2WI{^V>7a|es&oCiIo2P6aW9l^Z$^*|HoB$^mLzjgntb8pMaj>FPr|)H6#<( zKLP!8wcH|(l=2|-H9@bp5#?xAr%d5D4bLVoF^3tkOa#MlB_VT?Uytjwaln=FLsdk@ zSSCWBF4gwgqhD?QRxYgLCbZREZCx*K!nr0ClH(OhpDWPS;|r^1>ieFR*ty$vCVj-Z zHqOgTls`CptLmwq(LOr9qm5QiA2dmE*gQEnvZ}I_+B`T~CkS`$9egmCTXdIa6xm#~ zJ`u%%*Nu<$X(>RJl6OP)|;uo5m?QbTP?|tOxzh zTFeT829$ongWDEdsPiD)qhl6v zr3M<_1K zB&?Q7p17Ol4d++_<)=%#4c5g7O<1h2UCO{lan@zWnNQ{$}er( zEPP`P-mtA6A|*4A`wG^i_nxDQs|lxkcw9;d4JLKpd<>z# z%6dHe^2Q&xIroy5=&Q|sNUM`(&Ru5pI+gk(pn|elI}R5NTul17WyM3uYz26{`ik&d zxNjgn4^vVFTKj@=)?_nM#t7$&P$bd1E6n!=R-MtBG2lHHtoV#;vF&7rb*|hb{nT#t zskLpkEi+!LXxj>Mt?{wjFpnNXM93ZzrR9YYZ^5395UT-pnm3AN9#ZkYsYu<@zjGj#Uo^ag6#UoF7=V4WZ8% zh+i93mpm_BI7T1pHpF4nueogKuPcMimvydoFuy! z9O(62laT8)!cRU?KcEVI5@Ui2FuPc~)n)^G5a^Uc{dRZ+lZ|X8AnMX?p^;Cn&eUPa z*wmj7{;2l_=Jr0<@_Ru%9+Kc1CYgVef@vbCEv6A_IK$14FZL%P}}8`yPr z><^FvnIUF|#GH+cE z7nTroxlZCg)YSELY)^LKBd%D#-@YJ;l6ZeQb$_K{HNm(nBi#AM_^C@nXF8Xa%z1PO zRCL>V*l}-iNY@U%CO$p;JN)a&ivfZJHxu=&mShh+@V?g#Uf)nD72A{VX}EJ&P|A-;H$y>K{#c6907| zVY26)mgvr-fXRDbr~FVSnDIh$9j!4c@)G018@H{$(-4^(v=9RUy2f&*&pS$5pzu;t z#jb=}Ss3@~XQ>bx1pF1EL*XSR?iDYGyHtD=Oi0;JE*}KK?+BO5M`gC)mht00aUucf zt}(&X`#bw~Y$24oZ{LDLr&&r3oRw`h5M1SKDS8cq9EyLCWL63~HezfQ!(PKDhBI18 zR4df4V($1Iva(8g#9q)?@{^ppV^d~hN2hq(0S$MI%<{F$*3ts3@&0Sz`90B`r>m9M zi>k8ZsVH9$2gLf9mN$+p)f z&Ctx`eRTpVR^@r~nCWciVRj2qdA;2q*J|-wo(T}cFW_S}GPIy*D5>eMvs%_qZENVa zn;lmGSCRBoaxkxu zQcVpF^Mg3BzP->ghlYEys-335f=}M4*|Baf24!;tV{aE;`a}g5Q?N&NtHT!C40>ZD zONl_^R%g~0+G-SXt?8O;se2#1xa9b~k;yB;fRbj#yR)o-JzK?`QYnC(h*a;1Hkr;y z7p$)%&`ysz<1p*)uz=ipZWdKgUWJ7Sy>J_3Y9HbelbA)7!q30ivMi4RM{6Xw-#2~5 zt%$tU;y|gGd=LB3T#NNAkjdw`OgCD!pD^CS3t&3DF1V(GBF}u!Gw~MG8=6Lg$&q`! zzDt;oO6JZ_bSDdSQX+^zG2#(Po@H{FDt{-mz33)JiJ|6&8f*Wc^fO=w@r@~e^oV@) z&7I*i;LIZezB@94yeq7NPQHxx%DU@t);{?w+qpF+0kMV(X`WQrr%(G4diJ;|Wb#c& z=n#<*x^hXk))ZtJqC#!+rK$m#?R!dPI1%x|P!-R>n zSm}j~K@8==Dr@A%V>n1SwwY9CN=nnVPO{*;x4LLyL`*LaqKddKrtO<9|W3_6P@z zZ1l$x_X1P%OMW4BV%2y)hJ;}A zHz~hIA;P|Q@my*Qi9tlqu@>rGR1>#-U6ey1%QTdtPZRa1K62M(>Woxr{PKzZ4pzL? z&<}>OC%{?+6!I7@y?0siFp72;FS-sfH`viWg8kS@N18nv<(VYehJm}r#1HEEL@6wo zqyWqp!~Xe3+FClh&nN7MpYz%*->DgS+r;N(ts4r^lXRUS=`|+E7@Rp+SmBd|CQi(q0Ky-+<9$QH?Z z^x6`oG6pC>jn_hebBXj~J{oTFwv z$Q-6QDu#0*0T_+h&Yhz|ILitmcjt|>? zH#p^^!Tm1eTdMusGNvtYJ42r^b%$L|=mO=IyUZm}xg@RH z*PeC`jabE;l{eJqC!paI+)uB0EP`a^@vJqx;5JC4cQg*<4ki?!;7nV*YhULxoor9o zZp5`D`MtBVE}QQVZyu@E*}YqbJ(01jINB9oz`n9}Rse6v1@ zq5Lau2LQG|ZioML9sV~^_YcS&aP4>L01W+qChPx$27&Xx_TQYGzc1VWF%b6m$Nr8| z|3ij62OAwAkAZ-hnH`XRzy`3gW1!;%fOTdTPC!y98$fHI>}=rlTU6x#5**3Mq$^_# z$Y``Nm6QkMH#oTH8(0|wi2eWM*Z+I@|DUA-0xbbS4S)z(KqMy%Kp(-(1|atXmfuW( zL;_Bh{~&>Yj-G*8SJ=TA5GM&xA^dl>%EtE2#x?*KhTrrE2F7N9R|60yI2%|15*7aO zWdJ_UKMrsJQ-!~MGydWz<-fiTe}5bPcb>p+z6`%P4piEa21J}=#O73gLD!B zNu=$}-Zju5>Uy=yW6jdv1|NiIHZy*;aJ{}e|BWeN;M^!7f=Ox-D`HMT+^BAio*j_f zuB~W0YCGmgDss)tyGb9vz2+(%502~HQBjpV3pQxnu0l34#_H@_!7kcPeb!b{-F|>y zt~;euIoXvZsRtkmTmpy!=f(X1qQKe3N-_U{0jOa&ok&T&lf9{_4F*J!h?sD@rWeQS zh0HZ!kSiuLccivfDFYf3?xCuxRfNZf17*FQ?N58yaZy6yTroODD*K{7^**7m>SoT$ z4bqeWAd}`Q3VE23aF@vhpyyl4zB=sEsbHQN*4%A{eS)O=X7SBqG|Qh3)*?RM#41f7 z;}a1aP>=CGSY^C|soRsQO2QjAV2s8RSnKPB%Q`la&$>pxV$&QScf=WYt<2)ohw zHG^92*F6J+-~T#OadWt-rjy%M5NCuQlysF3>JrFJWU5rrNFj-p{|o}l1pnR+7Lw-U zP8WsX(gXh)Hpt_v4b17h@hbwG?(R|ut5V;++~H!MG^Ir zv2y!~jWgb5c(u1;Ac0B`??fWIC?K0pr^8(j2Z4{bG+v2DD3;VoVK%+mTN2*$lBA^u zE=;d~DH_`W;R0&S-cBx_`@ET(E2=k%z6d>Q0~Yh!H~|gTv@)2g>$THnQ7}PfH9)C&XKD=zTvs2Q@3GjbJee z>zTcP3KjI|Mf8)Oq0_uLW++j7sd5e^h#*-oWc|$Bj(7K+6NCIsA1hSP^LJ4)@NJTDHGP`mPStVGO%@Zwgtg6 z-j^n^g%Kw8>k;4wx75W>Q(R$DC2V_e;v?oYP*Pf zrt5wgBo@lLE>^;o;*5vKE{G;{Qawl}bt?!^uiZRc4#tV8|MAwSlWgreigOAk^c8uk z(8;PC%!xV^_s!bJft(m_+}92lvxE>EcWtJGCDIhf2S{E4t+**No+0ACmv^N=u_e7| z8|TRHrwAgUaS0l2TYe1N01T-@{!T1JvTFUikRtLXN4SkSjN3y#HhQokNoQ1+{s0x@ z_LDcCV&^W!^UMpO9?)m1)-Su!dttal{MvH@KBikzWMgNq`50tK{FJswb485$yvQ&* zO18iq?3CoWm%yFAyhsxA194&Gp}pI}#jU2#E#}AHY`lVSHBtttny?#z(%~A7WIS%_ z&H=6rp5XC2nIMQ1%=gBn2#u*%cGC#?q*Hu6kp0QG$x+O7>sq>qwY*=2 zCy!I=>AP!Cij@k&cFYW<#6;DhVe9T*v)wlQh!wo9!&5}a%v@-_LF#)n!cIDfGpYQo zsc&n{J#DJID50^l70-U_r~*Jr>q$Cf>dBFaub+=ms)|dINJ}XU;A&2=AZM;kb0;bX z-yR>(0crED{l}`-do~&IuDT^V({GC6**(Fe@8%&9{nB9y9K|^zsG%SZ=O z*?73YH(~NqCQOTV!?n2&kL++Q(VrpvoJpeOU71Yn(uIVuhlF0{5d{K~VThbn6~}gW z4VD@_J@^sGQHAIj_pXdRH;4nTUVgQgKe>Brcf2&wxeVK>u|cPK4B5>z2_r+oai&CB zUvu@)X6K&Kw>y6|;Bs7_N&}<&B9wxZkqS~(naNCBawD(+-i$L4pHO9RyQy)U-?@*@ zyL)f!D{T9A+HPNb=<@4Z`_`w?Dz~JGH6B;~T7U!nRf%~@5yZMLD%GIInD5aD*Eb7NP)+Kx7Uto2Uy<(Y zh#)?S4G!KCn8Qo^>v`EZ%k9B)mro*;cT(_zv)x~~KDvESfz1*cDb?VR^I1{XG6!3p z5V7=)WF)CrEQUn$*MJy9ef>>5(EBaST=A$)?C`Hvvm>Z+_FhhNibGS7sjelmS`p|r z~+cgkt#C*C! z(2_VcYSm)|$1edG^Um2?qQvaBe0UqEK))7`0wSXi;e(vVL!JwQT@|3xbvS()vr&*r z&vTdBh>=^9u5A!DLV;9bX6!Wx2)PVVXS7JUNMYcf(*wQyR3}}blD~=*gMZu^($G8L zG`+wiIlb9qr@{u7vqV}!%Una%6_<~&Rt;hacUp>7)-#;p4C7`X2i*13XojR#U^t&U zHd`7uu#ji{6j~IRCQqW$TazkJ)CYcbSxGhx41sw$Ig6VSCP!WH*Vj`*9DfKhbGs;( zJfP4k+mdjz;prx$(QTvQGUL#U>O`BpyaK5{Q6Rx+Y4Kj(2UOJYgozM2?N54FsIzLe=5TAp>T!~&ecAGE7WHtyio9A@ zkeo5uL{KXZtokh?4ehYN-mTUnd0MYK^JF-J^h0Kxpv3oKJ+k3Yap@CKhGOnkIh-GH zQQ+uAA#^RynDOQ=mb(=aMISjufksQS1m=(A*nLEL*tlG|9g!bed7j(HT%p?U27uux z#D*T;38$}I2HQH?j(~?J+KPpIK|@GV5@%+paEd|_!(G;X(i}EUQB|4?`h2ghrKZG# z=cD@3^K=~=4ji1IoPF7Z-qDytmG1UD^Fv9F-)$n9y4elzXPaU;H*d-h z5q*Urdy1$>H44k&ydil83Y9Q&L&YAKt(EptwtKOoYZL|SAH5(frP#F0rFGlSO%<<< z`cZ_IIZoii>+u>A6>+=RoSn!`%Sll7ZqLwPa)C5OEU>XB0;k=eGG#L221&`}pptW# z-+vW3nNt>vf?P{kIT9o)9tt>SslCJ@iA2)i(TY;uP{cSTQ-N{3VqF;Sn3ur;VIxa0 z@wCO~GQf&b;a@(eJEft|2P4c`4VfNw1+udaVcO+kJjVc$mWI?3V(s4_6S&q0;`;X< z4=(sATSv(&M9Hu4&_R&feal{RkUKr^seIteSnqp%cE{5h{T1i)8TdjYAaW}VQ7c`p ze;n%#Ewmdd5~42(6GpqI55iX(IJ~;i$-T|Q4naOFb2154W}9iMsWf%>;W`k6)>Q5a z{9xWmM+X5)`ile1g(erUCP$cKTCa}fX$dT~126Q7M;789*F=-sepg`@w0J3lOKJ|a zwtv*x)i~C^1Gfi4b|tgr&2!F5B|M1m3*;}z3pXvWxR4Xq{Y_xx3_FdMa=cfo&&|^@ zYzLc4}Zf8$>N z4;>qT27bp5e-(Z*GBEzLp*r9xemAE32jKa)i+{&4|A0LI1{(=}$Bi)beI{u|%}{3rhW zpWd699U$jt{FjwEBkR9{+kY*bi2-ov`fHBWsq|{#kaPm3}s?V10&JOsMi~-5YZQ*(m zs^%yVZXAQRnfrBBVnqr4SKYYBEyn_4ck5xv`g9=B_+$ybr0B_CUJgkd7zp+{G+o?Z zy>58&5J+`|kWVu*xsh(%1~S5i@eam0$1>P2=Pte^q`uYgm;|+K?b+2ut|MmC2M$=r zT(fkm&-S2|d;9=lPqZZY&@su|9IZ<@5UqdPJ1-tYG>v$Ig#q~#T6VX~5On87A8lx= zO|$tXm;tx>YyZ=fyup!FHBAOk(sfU$`(*~5&)1mr#2h@rIZ(_ygTBmq5L9HTM^aK7 zO)JM*o+8QJQRHElcq&%Sgf1k@#;QbB_n<4?-Dy@LG zi+BthzB*rIU>OC@qlP+f7$43TjdB~~+J4FYhA07r2d9{bPyOizX2ldOT1|jSs)HKx zYPjz@Q^o?-ctP8$Cx5H2{;Iv&q5$L8z;KX#ZSKnZtxQUh-hCf0mA5d~oOlT* z<5WQchmjhhZHR)2#Z_QKW3Pv1bA=qL1ZBwoC?4$Mu5Bq*Y+f@&tO6se-8{=zWHm9V zf+gaW!k=9unB_w7fd)qfbXkGDeMkusRH?l#vGri;;-=GZJ}{bd&<9&i%pw&Bg1Y`v zY0xNbY#da$cEnrLBnhSL^=BN)lGRorB^jX^cQ%XFXH$JlPwyc!==f!C@&`qR@=1Fz zVFollb6VV0`>M1{ zFqP|+=oIC}bS_7RfMBz(g+3QC!Ixg-0 z8=`iif;{8?q!c>R&{XVzz&^mp(vm~*Z25@ zL07P0W{+=C5@?7Cl;}4voX?{p7D65EI(NlP02Xu$wbh&&?7PLxvaeCaAob7ZycZ)>NDd zGhO(zCZPL@L=Fb9>e=R-fdXZKbL-3hRK1N_43Wc7l+mGn{3e$pUat_^49fQCrJh4L zg>BFzssmxN9$b8P$T44O*s&1f8(T=zwyP4loQg1p+NX#a3(6q-AzqKK=yKkjH8RLi z0hNd<=!YYourWlDa^5i(dzoyg-J^iInqaXvsz9$>iLIzxRPKe(yIxHO;V?r*E(CeV zm(i8V>`W`;w>8!fVrJ2Y$K;N}T@JCWh(;qAkS>P0?i8n!89A^yEc>ZFMxS`XEW>}?n`s}M@Yl^7>MS)ZP$BxobF0;bp4GBO#z()j~*Vh%s1XO zvj*%CAW+Ma&AegNG&5?uJeV2=>RPaVl4`p9Ou9&q3F z%-$E>R|uclB>q#3B-fEt0;NPUEUj9XoC*o!6+pZa^}Npc>+9rtu$Ev)8)~YnE~aUh zmUhvDmH5>c-*9J7-EC1QA{yFHkBNk$(&CaVpXeVu6_!9~wJEE}7Q6}~E>Gs^_%^;C zLXWiJ_;o_)T*36K+;wl}0L8_O>`Af=k$H0Kh1uqL?xypV4-Jq{4-UP|{yzB;G*QL5 zR^UfBoXal(Bi-wr&09Y23#=LI?P6vzzR;P9v+{0z#K7D|<%@>D8rrZ!4ih1b*tmXy zkMZ6OVfY-# zeD!RUXJo3L+d|`-&3!k6=kYahzgsuHn+mT{ll3taY%ei1@-I%JbmCb~qEzC^bd$?w zLHq6CgsZ!`oS$2)JMs$mejjahy16>@x3o9ktk|P|-V9Gkk80`j$?-}@Tu2?u+e6EH zvFj_xet>8~8%6(FL(KR`Mclt>h=2bV|4;iEK&$y5P$~brA^snQBH+?*ea1g@hrbu| z7kf*F-z)h0@jq{K{^+#B2pH(I0NSnpptWK8V-NWE6#ye3-S@AyHrU#>fS_I8?!MzO zDS^IQY2=kN+M4Dyn`R1Zr?Wf`tJfS6r-~}t*0>C-cW+aPQEIAaw4(q}k7UTNs6VhK z$xS&>Gqop<&o6#-ACl|(q}O8QizrW++zry?ll*w5kw(>r&Yp-^2|ZpgF)Yh_L(R6A z%4fg4;hW5pr#C3gUv%!!)E<-(JIwpm8hLv=>-?dFRs(2Q45k-WOwOuRQ>p6202J_WN?Ax@3i=k(BjS6fPs786*^R z$|I4P0Y=6t{xsd>gHZx_!>Zgu9zhufqGKR8_#XBH3p4=rERW2Dh3R?8I(_uv;McbE zIAw>m?AfO6xku9qt+(MG11bT&+aaTL-sI>6q9M2K*SRbq@i-B8)$K4aqay5`mnfK( z0c4gQEWO&fs@f=)7D`xYrB(~^oXVe$mSxfz9co0NzeZ$wh{1P?h0SvuXuUc&D>6iA z@CT@{#woySnWiyvofiG7`m&yEGgnz=DCIMegV5`l>7bHFDKEHeKeJVzt%TO2CRsOQ z_@<0a(v$elZe(jy9J_aezMA@tDFHJV5RZaD@Fod~)dPQ%ictZ^h;AEQ2g4M910qhV z^|_rApZo01o9C*T2c+_41L|DRvhyv94AtixKeuN}0ElD;i-iQq40vRG2BxMC%08x+ zjpH@|PV%CW@!Z}BLdT2d`^fG{M&7L%u}A9^(RVTCMOt}1F{+H88a+8j%sE~pN9S%F zFJLgB^|tisx4S=3AKR){+m=51r+LD!b<^vZ`4blMq4>SQVis(!g1-lE*=G8}rfw)U zxdON278`7%dVddm-ED*y$fWFYtFSy@dwM)q9}dkN{&v&xGUIicr4)jKBRzme-5NW8 z{1MUfi~>vZs*920)>N|xMwSi!Xr=F4&U?-&#Rp4+is{YeZ!fAu`@ROUR+#iXaaG&o zG9k;a84RPTBGa~gV)2VZUUeU9C~L?kErFsmj~R88Mu?;Up@y^lSFXXX$zN|EKO8!W z$Yz&V`I6Fg%c}0t2)|bK4e`jiC-_FTMn~fClYom+jP=Fk=wW*WwZ_eH(|Dh-j7H?0 zkFIvF1SnsOs^zLLSEVI?LP)|Q5RSW|1xKLtXAR5IfQtHzryiTn(}%!^0xFk}7iL=yyitrfnEo)hPOnx{9hA(Ca1H zadrN6+Pl$*c2neoa)gMcqEZKzZtWZN5IBnw47at#R7$6%2)yL%r9;atDp*67%~!QEdCNZvlB(qtnvg3y3aMP40dLCXpi3-51cm) zR9hW?C2@QmbGfgy+29$Ym9twn7?WNx;52K~BJ1&o`^I_PBrF%>3*SrR$LCD4p0ME{ zqN~jr=Rb(N9F&;FKWYWuS@6xFf>~hpHJFHJO;Oka z_=@?i{VqqjFy?~2i^d^7Vwdp8a9PbB)GNdkV+&LLUou@F+B z5WW%VHpas;1E-=I6Ovrk5q;BX-M04bM={hLTjaJr$a0Q+lIbz7FRL8o!L)J;l_8hy zbrNHdw~;@Qy9uARBB{;9Up*&)# zsd^E_(W!Med^k|??OktYquEG&T0FKX!e8Y}FSYcTL)dMD;1o2a{dW@={J3HRa`ebL8nt@601!@CT4 zy!ePP2tIEv*Oumor!f9!auO)rkkHuI{o-B?H{VJRhI%vS8%1@Zf5l4e= zCUcz3By|eKV-@j~!oN~7{L^cC2lJhS^(02bq7%x!BoyT5$6}yB_!qOd!YN~$^3MUzA#_|aCM@~?5R;2*H^4ua1N#fi)-&;(1x(wwK{;mkn&A-VvV4a z5=GHtoo~S;-|pMb7tstL)Cm{+dy%GC>zW%8Du&26fepuQ9ZuTVS;cPomYgZuOmRFG zEhSuERn$Zv;;BEk+%d+4bqrr3SLOntDXd*~A+!)<7;|#G8OI%DQ}!jE{-p0Yv;D;x zg+K};nL8F9VqD^#ohL{kui-GBZ1&2ZU$2|f8Vb*UrS&M2-yFqjA_QkGuMJqy1}YcX z(^u=4w=+D#QfHbWnKP38q>qRF`6n_NK#%pu5!%0L?|yG{{<*#Toh|c!ns+k(K1Thg zdFSsJ|K7Cy-{zf6tW0!F%zz0e2Ls*jy&b?x6Od!U$jL;<$o`k+os9oF@BBS};_vnS zK6?B89sG+uDeE7b>3=!>w}B-yAp4T#PX~9u$6fr}oB#K5Ryuapf7R&#KI=cuYX7r_ zm|pCECW3#F9|Q25{Gaaq@5&n{7KXpt90T|A8| zG#bc7VH><-Xh|3GG#qHT&1;rFx|lO^NvOI=dRH*U^4zc{AJPdA&Rxh%w{*Phy>E8d zzok)9GNqQTJWSBU_K|obrKnKkn=TEWKW*Pl6j_CzUi~agVtNk8wpe|qy6dNs5+R)1^il3^QF=liR!)k-^Me4lu! z?;twbp<+f9q}#qc%D{t|H9s2&}%eq)$G(I3SmK|^WPZf`zQ50ILL z)@-GHoHs+00CyMGrOq>;-DZspD95qrBF~-HC23ii;UF1h!`B?0T$uIU{ow%`saCgD zuARna>v_PlQl$08cZ5OnmTIBRYr?S&{F^AKDB`@ch}8foT+$ZK1ANa$qqcLZ=Cj7ZhsdpL3{K zRGX2>-K!HMR8OZIqMxEc63t>uM)19K7g&*c9-%%Ud>aNK97Sqxq&H_`GVqLU7AdDQ z*zZLq%l%&Ez{Bt096;G8mD&2$nU+u@zZnpZ8#cYoo|nCZVa%iSVk(?*2C zh_@qFg7gqy;iVl|aEqHRUbesNAeI`I4_wbs!i-O^adEj>jg-Q!@~~ohRFs>@uU(Yn zT6kOxy;EQM)NdgnR*or9GX3zOSgkt?jLMw(xeotbl ziSR6@j)VOR8taq*Uv@`ky$B9)80j&2^V%qtzN^x0?zl)o5MJhy$kr932*>VKEd1_> zSW3fTFX#R=7+Z9ZUXPg04V?s=v#QHvEI(nz;40L`h+Df>;$Rnqy(j`ul<-8KVqFO$ zSYDoUMI{%oQ|Vn7G@}fSFk!DC93~mOeid*>&l!-8Qu&vVH#O8xa(;N6ycAiPx5gSY zeJposyp*j-gV+_S>GSyO0pBFY+z-=8i*rq3W%uV!(KQk=WR7xtme*i1=RKGq`&VZ! z-IQ_th$;m$1|>~VEeJ-7FHUtMs@6AiJNR1P@5e7A5k%pDhSLQzo(#h(WU(U#I7rO= z3m`hQ*jgIAp#{Ipn|W(UTkkI^Jl#yZpy0x57RKgIerv$7&?gRg#}yfA1+O~px`2b9 z7$F39HXFt##^|1L4<03ocInQymxT_SdBCCns1iiloRePoyb}WBozGOVhGjU|(IU)s zYw`{8>>D!1Z6WN>AgOq~M6#?4USQY;6l>wlWFyz99~E8Kag6n2!0$K zd{6YFP35`LeGPwaq1nW`C(uZPC8AKp5(yYXC5T*Jyx+t(# z{DS$#Bn@eOjccN|+gY^5D zyGk(Q2D)n_b|1q7XMBnN1XRUx{$m1G6dN{C9caTF$`!B`=KEJ-j@|34vNW#kL;VXDvzC_g}dP&PXr~k7{1?1 zVs5{Co9NadpQsFA>3X^~k#;IvJVw~GR-zxg&UTc!@s~XruQ^@Zt#3tOUY|9sCi1IH zcpCQbrx;n+kPCPrg|hfB388ph7j{n}h<`H9r|R!sH&+ABS=TN{wci2+rg8d4pn zNNE%P9fAP0-Bgy)p}&^{`d0O%Ec`LCUA2j+zW#yG{0u4x4h4j?IBu8%HCB#S6QbJ9 z0Fi4Urk~O_2OJq|iR0oHHMV{mP5+pKU}VOWd*r+I}ARc#V8~A<@Kizl)m7LbBd?E$bFsxWl011P8y7l&Zn5PKzsi8=f}}6?M^%_ zO0!UpZb0B5;LBT67_YGi<9*M{rsW#D*<+N3BA7#)tr-)eWXpKf-A=+b3kmNFDKii8 zu{_S-zbCdcZR2*_z@xp(5qlswl|WZN@1-F6d4V5b>Yi^L5bzUw$;|Jcs@U4rltWYt z-Vc>T>pX&NbN$dk{c;^Qz>nG!RJoh);W-sVHG-?lfcfo*%{4Pup{e5`w^hc-DlGKf zyGdHTzfa=K1xs5)GmznOtvg)dSR^v=`A+4fw(HnXDAI{K3^7wqe|ft*X;T^?WzZ znMacsYw+!b4r8t9n*A0MPOlu_-b-Y<`BhuysZ*9&CDtZ$9%N*6QW}wXtIJ2w2i)C@onmlK7xoMk`F`|J)J-05HbA` z<^4NM{WreQA2~z-SAzfR%7p1(Rwlm}^H<^NA0gZC@br(T|AsGFm>KDq0IQjQwq|7f z%^c!?5Z}K&&IEwr0LzF!IsQjd%>NEg|6@SP{3qKQW=1B?zY0h%G&LOe0D$y2!A1#H zYVQw2cFBeP6eA^0s@nS3mOvi)JlmBEg&$jJ9sE zc-c!btJ{OY;w23HF4>r@6Db)ibRkgDEm2-DykH(tfk+MS$%!Bon(2 z4r4ANU!smF7Uf&&$wF8BW~z;^&gwrqM)Hvo&53J%Yr+`E1%D=e%ntZdWV zV%M2BGl*SK2zfEfa&xbA$mPL(z@%xrRz(*RLaOrRyK-qBmc?OzGZyTC9g{@tP(W1B z^Eyjq=@Bh04@LL52u(bVRy(0dF;yFT#H^&!{6GzEi0?s@CUO5@z|dG*OQ}M|FZ%tT z5_>ejj->ZO^T?3!ZWDVCUK&7*Zi13e(q1>9+UZF?7^JD7XpP#bZB9;Yt8a^mb`fQ0 zMBg_THrXT)i-?yv9KEHx_tT>_@fte`AXO0Fv!$@4?1c_GAyAWRC7fE^C_EZeCu~321svF_zY~){e zJBnH4l;|7*=JRB@h^vBmX}vi8iMr70QodGrXYHxx9>t79s#oCHjl=AFW%h!$53|ad zy=SGNz>$jh8TejLmcz9HB2MM-SAwbHH*UGxV+(HqLwS`XDg{F^D&_~9e8db&*U1F& z4+ACDEUfioo~e$X4j7~r=;jaMLl}#_mh5XoAZ-X2nTSqdu4B7d`~9WPIfPzb%1Mo$ zw!Y5Fo0>Sth|Jht%Zeu#QG1YuxKi##dnYV%@#~x&QCWKJ-Y-2jI{0pL!$!Fv-cV4Z zU+`Vhx3#Mgr9C?x)NrIdV0C6x2a}2dr~_x%4w}3RfLRFSLNZJZ6YNXVXoA$1|)0*6yj9aY9U8`k$9$;vU_a98HNdTn??=mvbZYB z&|FFTb6an%u{|CnXr>`D0^pR8+n?=MwrLKYh&$_202ws6*VBjf6Yv@JV^e2nnnp$-MJ_b0s_H|c&=^h=A(Lm+rCYs+qF#-SoU$O1piGuhA^ZZy6+TwolnKn0nQ zgzx@Qz{&xXJs~_=me?N77ldebU_0+nutJ5k30x%1VJP_Uk1yop>PkIv$i$)=8A+P- zo@(5KZpMl=wAKoA7zqmc9B`IL#srxo>V>nVy(Vz**aAds;pBLdPNLu=uPKToLGpz{ z;lfc)MK=7Ly=dEq>ennJ1~M4Ueh7ibN`d@>g}Evp!vBLy-t?iFou z(7D*Os>PHSd~)i(%-Hq0_{>t1<_N7VzUAZjKsQt=+^i;^xrQS~h;pjY2#W!|9=Yg| zJroBv*Y1d8sBF1sSv9Nb>TIcn&3pKUtS^n;Wty-aeUcoZPEMsICt=#n7; z(Kb=UbP#X}^OC!yvH<_X{~$cloa>5GG@q+%`JP7>mva^*@@5C5Il{=1tSoR z6g_)3+%zzc8az))_0W@v@ap|-OOOTLX!C*3!fEljhbmcuUXG&W#xS`Tew30jJI4rE z%^OWN3^`14GP6Vxm!X#n(+Pskqc0W!6BTG-!4pQWYZdNi4x<96t0%LpmNF{r4L9*n zrk;xSB9G7Wz{L^JiQg~@hLlY+Tibf1`O8|d)}R^H53?0A=Qe1~^|U>k#w)XhsBjhu zRK^7ucEFb8j*Jr-!lJ5}f`aTzQ$c~Som7NMe^4aNo!}r4h4pGEoM3*PSs|Ttyy2or z?>WQlfsGBq!6N6wYyhSuT-8IBA|55cR5bYVcYdF}{TTACG_5*r}C`uyFI7WUarzhlzOSytcQB=^*Aw#u%keNR!f z7h>GF=O*Yme*8)V zLhR`gXYAQDBouhJG_d)X8k+Bb)V&DO{Z+rAR>%hAvMv_Hr4Uc`@bRog0_u?4p>Q!s zIc^*-D47D4H1SK9PFB|(e)X6FF;mOq(@$3vP3<*L6YW<%92Ue`gQcH#(&bS#c$bJ0Yo|3@ z+_rbhp6o{M=uB53z9}m%a0m{OUkyJR((RJWy<)vXSA6vjAwT}qEyqwD9O+yoBow;K zw!O5eunZMP(P}5!|1kR{$^A5dSSPqDoLG=#5E$cv!GLl!|9yI*(#@`fsPK-bpxFtN zDVXETq%{OMJeNPv5kc2j zBIQW^b0fiL-DZ}$V<06@4edATT8&(wf$oPH1)fp|##B>xC-LhlGJ}L}eH&$irGC+u z{0&$N?nH!@17=`fhoWuyetu|QgCWzmpyRY+`=kRxM#pO{p^$@66}Z0DoHupX#Esh3 zOYk1^h|2~6K(;KhYhDb2LH8$N7c0`}cbj`&=ZBrzK(t z<9QEZkQnk~3-AoNQ2M2c#3bMF%-tZ%epP@CHE=60@^z>u!nDiFkt7eAV?kmJi zh+wvhCJCI&h1Py$I3Y%GJ+g4Au#6@ru2LNr4w#Y<4Oft+t-t4idkt z`n6%>eUZj03U$D!H`S-&<~&WBXVgV}u6N|S8w_rPEgdi6+8}U_^^YCk{jR;oTUX2F zjnrr9bP9z!^ORTuU8$KqJ)>p?i3#m6tww(^k7nC_gf&c9kH-P@CV+bkE< z=i=`^x(y#d5Eveksu!x-d^24Ze)(Fqhr7K$KRk9^`0{2WJ;H>1yrZ-4NYi|r;^1hX zOi>bf2WMSyM7_&D*glcYCEq)IFn4)9Y+C6I8Xb|YhkdkbZY-xvrUc%5FN^}0gkmC( z*~^Y#;Ln;z$%Od9*(N`Z5y9ReZP=7-ra4^XcJeCw9bKjuZO8!RR29+|3cd1y%PDdJ zG~rFzn0?PLk1A(juy|6BMc&F&$!8a(U2GiTqfRZ4X2FHmW?|LYC>!BqwA(p@7y{1A0;Pm3-Qby`WQFcKQ*gW*Qjo2@9kV_9Z-J}&-peqajZXF zXIHj{V6w7nAMBstn_-v620Ez33h#%yt0}ggF&zd51V+ICyG$-&W9i{j_PMTAXW)kq zXJ3Pk(VucFXQKk2NymOSN{Nyd{y50uXS>NP=>qmTzE&7YyNP-Jp;CV}b}sY(Nc+a{ z%GRvg*p-TH+qP}nsMxk`yW&)A+o(9H7!}**&8hDG`t<43_d9)We(XGJXTNK`Yvp+g%|KH3rfdFj8AwBI)K7a1bm zuO0j&1^K^`w7-}sWc)o}{zn-d+lM{luOBE{5i?6iV|zSW5lekXV6}&&*_hp4WgyiX&or1N-TS*UPr>L#SI^tr=I zbA<=yc*Dl0^=ajFzL*jeVmL{_)h!*UU2Vs$bNQsw`&qk^Lhad%SXgVPOti_NiJ_X9 zo<1^T{<+LYXXILl3||=sU`k_$L4EDa_bV{La)pgjoQQOX3WCY%n7-yVUc?)*;cV5X zsiL6)ZEhIiX)#3Z?DBhUAAsc-&|QszH;|kk6nRVAn=UQ+YnS?zzLKq>-aCjf0Ck)! z^Pw`5`Hh-o-*q)vq`{wY9xJ@^dR}WnfL{@o*h;Y%1W|g(762oRpkQRugb~BZL=mx9 z0<3J&L}8)gWhi6VXu#dc;b$`&o5RK%ExBhe)*5eKP8MgdjxF4)P967P?^7~jZopE<`?H3yo|>%Orj)QUz}uCkgrI+`)cv|SDA+`pw8Zg^b2Y>7 z8)kIIDY@_0IKZY^0jMlfkV-5a0$Nsqp~tKKjke0FGU%^~U#!{W;MbqQLv53?rt@eK5E8w-ZN^^>^|0lrVDtHFaaOu_(+$ZDjT z1dD+d0a65|rwGZ`BefD{YBm#cnYihf90RUNWQufM%``f?%($;iCyeA`uW?IzTV`44 z&j(9usyNq53*$_<5=oGz^ucQ(==RIR;RvoV1bn%tlqMVzN=E4~YI)}yGSNKORHlDY z3Fy2{M>&f=A*t}GUC^$bfAoHa&r)9F%DSipcg$YXo#x%2u5Nhl@p$#md^^audarE* z|31Aj0J7$Ka9_R|cE7{9f}{PVl$+XkEY7zDKs8gbfoL;VUhhd~7Au@A3p6}fuKyAH ziJH}%uR@KO@7N$j#$!Bv-VIx?!@V-4`io2ZQ!|cJ!km79uf?-lIxVWic51k<80L`i z&YMQ@bfPs#A`z7jmj(J~g`Q}Gku258(y|bg7;h)G{742dX@x9^Q}su!HtqO6R~o}C zBZeKwO3r7gJe$kgFc#&&bMMJUQq&?6*{kLF){{!Jv0+=jO6+LG*zB}Z$+Nm)A@g|R zfxcW2&k-Bg6g3k(C1ehr^=^NFRi2fj@7RE2#1EGOvvw>J5jToRwttWxWG^$4w6bf^*%O?JCqMwMKQz3s=^ENW6^}{wjuhY&k@mVt$U~?N6(}jI}feWbO$71=)qnKdQ!SQ@S z4;(xHIcZiJ>Aj}W)z^cE3uRNdz!35klhr8BX#dkW=85$NU#*M!6C{^(Ty&Z|*_1jR zFcd~`jEW9-ltOSzNPY@s@v}^-lNa`|i|hy!IC$#C6Cc%Aa*=#{57|}D^*yGtmD9G| z_PQwU51&H6tSx*D59t8}azA@WQnlu0EYd8BG_3OSi_$;{fQ|k5Vss!xUSPqpe1OZ{ zk$K!#N5#+j7B_5kLxwO>9_e=a<=cd9wbZ!7ez{PtnRi%f+H~xTwYi6-*3tQ0LPF zLj+VVW{M}ejoSkBl*}DYCz+&L4g!jN`VAQ%bxS{xrB%7YxSESR%CUqh30)rJRQlhwgmM2<=rbEtt<+!GOH<;aiejOAIz2bEOd)(VyL+IO@%)7G@8O-E@gWcgLXk%v3D z|81~9fP~&j%z6PV0gY_ObTN@eupxWLI_hXt=3utQnxBAObssVKg$r49tME1h&Crsk z$(y3Akg}`=r>mH+W}73qkr)w-BQGl~$6U_*YGn;Jx_AQmTEy+!pDfxc=2Hr0W z6B1j)*W4mBI~95Cpo6v?-w#W~b3gWUNq`apUql~B{(Bp@cIrW67PjZ^9GIKcz~T`( z=xO$D{SK5z+hVY)#WnvqZmX8CVyu5Rsv+mR%6q4&}v`D}6WMjIaeDCR+RK^0U$ zZ(^T5%uaMZ)8DY`uQGmbd~-q zEdt{C*(m-n*d|1O8yzGBvylW}M@BnlvqE774X36nEb?Pt_7VA`Z7}6Tn#2@ZlpwjN;a{X;+L!^SU~*+KcA*q@8U0YmS>OT z)d9yr!V<9U^Kne5=k7r}(qKF(*Eb1j_LVI-l+Aei&dWHWywSZ4ia)D!u5#bdHH$9} zT{-rP`ZW2YSOm356^4cOdT0y#84r^8 zCao0;gjwX;^W1tFjnC$ZA2zQ}a%F@vAcY{BQG^Bd;;)Br&Gmg!31Y#Ev$5=;+N&n5 z^l}VrhsL29_OY+fghXiwY&Z)S1fCLdrss}3kHJAKG>lam>%7M1!~HFt;?T~=l5~J5 zd?*uqfxLon#l9fxOWL7QSb-id=>4D@{b!;FD2^9}DpgGUZA-W5Q;!l*mfJ!a2a~{2 zCtqOaO1SbS&l7|@>Txefe~tx$7-`?lHg`6b6e84Ptpaghyil4H^lw-KxF>>Rw;i8# z*iOqbQ0W*s5Y14AHd(R~Ka0x0nQ+rzbkB6kcBqWLR`-ujxQ-6k!74h>Lcfq) zxB?9+_IiDRx~C?;?J!-xONaIU5frPp-7o8Rm>d)02Z0!8ewwuz^WI(kjGlkGQ2w-$ z8Hh3@fRfNhoG7bZC1ftMF5~X8=gfLHMAF`~QpDjzqlWsGO)iSh7rtg@5+L?73RpA4 zn}hI#0hl=^+ud!iK5f)dgNrBPs$GJ=Vy4vQn0y-6l*M^7Pta&eY#?rn|B-wvHdsVo zDlCnORz-;sO9Ij`c!B$N=}_dnu|)`;2u&b#YlLp^?z>uvPj&)n5XVasP>cRkC}}45 zi!c7gyRy7Y?Z_d|K-7ZHj>j-9u`IYndD~J5 zweH*mL;ODK>GS1m5+%U$qv{mnPfki94XR5o_6{`hDEdwT?;5tT%Zrm@nBjFrGay%5 z6KKSC0>3X<7k8C=PfXXm2;%vCjL}k5=Xm$8`X6Mi6XiAs;8qf1A5jUD|3vt!Ef1oPk=UyS?j?L`P(I(jwDkQz6;ZkJ1 zB_Y3V4RQ}pKUeOp;P5($dn`VM-|aWd$d7|~f*W+@2Mfj_*(nv^kG=zfx#MyF8Czle zePZT6v6bIq_&=}}#=rNt|20dtKWzbG{I`tMug&~Lw!;2@UHy-I7CRFS`=9ul)6;#_ zj{bov{r=+rv-~3+_9xEf^nWyD|2W@o&++eD|3|SV0~^hsb(b^#TPp2O7c$4xv0f3msjR}YCx_HL zfno0}6ozpX2Lk8!XQObhcKBKlC!81|5bhj__rA`09gHwi5-wCmy}C#6X`|f>RX9>J z0IdqlG{0w(*2`SZAcUx3@QcYqKP=beg`1w@8Cw1~JF9FO6oQPwoQhn*P&Yqa)nps* zw-JL}b%IT%mIgA$f#zx~6Ol`ho-SiWd8#d{h`N=TCpLF(S9%Oj3^_SpG)L;mh5$S| zlEcj>Li!@x`(?aFOt8U@Ua3!DWSK3tGLfGH?t$~7@L28vl6s@0L*)VLKefyRgY`q4 zPC2v}Wknl;2j*wF$mb%Jvtup@ex@S3E=`4KuR$lPdy=cwh%G~&zm_gvkCK#M72Y<& zbuL;n0A*pH;V>hBjw=D>&nqKqL&omSDp-S);c$cn2a#<}pf9lCkBz>8cU~2Yzaly} z!+34LMm2yTuhZT$ggU`K_U?JaL!ej3A>sgtxSzg%9LXP!c`68AVO4vcZPA)%2Al8u zdIvQvoJ0ew&a(-#o7@m%4l%>cX`h4LFTEBGTO3=}MtzUncMSyK@1mebmp;@QpjtRp zysI_udzAJ`#c8&PreO`w^7JKl}tc$GGD%{jULb;bp3;51T zTNkXoA?F5#lHS1t5Ey^Y#$SOjP+8gEHZYem%v%7#q+r{$7Lq-;~V%HzfQ$i2nl#**{8Z{wflxOFGPnz;!;WmNerj zwDlL4YR30%dFgVC`rxl~q%si(72xJ)9qAluQBRQ z+MdsCuU~hNihA(Aqd>~qCSM4-ijwN|r-c=urlmp>cI2nsulsm9CnMLrNYce+KFc0n zlZ3v|-UDYnFf()MWP%AiFWDiBofbbPrf;Csm2-?m5YWmTZ*EVIb(o5JBu*L4q&Fl*X0UtNPTgK^;>UKKl7E|L)L(PPWW(Inw>}!S$yGKzI@YqZuO3>S@g- zt`15T6Uq$J1p`Lv6w`?E5fe7c6DGt7qr8r=87ZO(vuJ<18_6rb1m*efanvd(>U8vP zZUB`6*#g#rSzTSOx9Jk7{0nTK3NFUx4ffni+YjTqzblEwNPcD4o%PaD&mQb5cq#?M zU0oHXN;Xx-Yt9+3%bSpQI4Px#0P~oo{oYCoA_h@O-i?U9uLG*XX6bgFiN&BVP9|6% z!x*C^)q`h|eO;fol!@wbUXdnWDLEt(u;Jp9JpOf8TJ*+tR*F=)rJ!(Z&2tsOJbrG1 z^-GNbG|ue~3XlMezjr)4Em)+8M0hB%M1$cwS7qH17kBV{XD15}CLI7E@o4bid>CTO zhJcXG%oY}ChCS#$X zMj?l$(X5H-`;`ActL7C!TXRhbA+A4!c;FY(7mllAXPdT&i(#9sK%s$N~(XhBhO@Uu03Yn&$f9?ffx8S7St z9<3VLYrCB$gzQS(V-3_oE}vtbJ=!$RdJb&S1VHqWPXu}L4S_HuQ#V0z8YK`)VMySE zR?!w3zS4`M!Qf2TE?OCDszEQ-xN_xX7Bka>-vYxw!j|$0hLDyDhlLVm)#&9VUdB-E z`NBJa4f{PC`z;EE!3P0BnUm_tgN^b|nyO1jeKN?5C*c?}n;D>Rs8tKxeuDdHSrZ&h zwC!#rx4blFp1}VVDdq=Ix!H(}%E#OpD}Xn;9UOLT_Eb}ru^Mh|J#2uu`9sHs?*Mp9 z@NUw&;3I*b1@z8eyKOgacVjnQqHS$R_@k(FVDQT z-!tJrAD^RN-a#O|4bqQ8G4j7M3Z%?JP#TGlw;`?mqHlVJkmu>9q5^`gd1S4e>lqf& zRl2OM*HSLvEHuBh_hug1D+$bH7}i5{3S!shZ>ZE}v|pWZ7E|B+qN8_5s2G4=&q5U# zu%5n+EduOsfC+HRB8r3uXGsElRiWP!EjfJZ%2nWq&!`z^)l)(sjyJ=gs>WC{$&sa~sDDus|@3qKR z6oeZs5$x}BRII>16S57BmxG<{(ViiOP7ZN>dw)3;-IZO)+jgnO2XNgk_#-tm6; zLUj{W*GpyqFIzbQW#j235Ph~+mH}mB=UhMO6DP3dtnDljU>yf^y1}9AtZ@#o9^+ z-fC9m!H^Dj8kc+fVWaEX>(0pCTR=d-DR6eL&2y;f!wSO=#=?)jOr#ucAtE&xwyCYa zp;Yh1`hof{*keF+G6uO2jlftyMudR475pXe-0dOE849T^tbYCh+UX{!0RzAwocTWt z(QI3g8zmrRaA60|qOYlsDDu@|$~f^H-Q{Hb6*yz~nYEK8m!x#qY80Q~EK3jUv5!!% zYa2gi?mPw2>zN5+p{m<0`$i!xqQ4?_SvUqa6bhHB)pF7qtguKc@TkZBlpu{QzB$Ch zoP#t6Nq-`%3QE44?%um(f?6233QSYRW!6-#HtmR3vzV^kodPs3FT7FL?5$-vL*5R* z(N7G728e;WqXYVu;m5TDivm3a%xAM^r)hv9jxyvv{Br=q;Vpd7>xP@&7)H}CEVz!Y zHP1CAPKo;==b4gh$~sY9cN7bCK#w6}qgY69X4J9tEc6G} zhl;!341=EeY|Nd1#0!dSO|D7v%ry%~+6jTNo6lcU2I zV@pd~OEYUb2RCa+eODTN2V2)an!W#Vp8UsM{q~gqVkq~=0d)Vm`hRqqkAa2E41ZF0 z{1KY|Gxq+K5&!+g|7SS^4fBTv^Y3NLzy7cP2$lc4IP&+(%U{fuf84=8H~Wv6lHtRQ z@Gr-dYc?xvFg}yI`X|OLDi%-m6{nSaT`HD~KW(jG@28O2Sd|gCu}B-TOkU4po@@~? z!G5$*SAX&{Ba$c}i+_qMuVKBdcH!W_idpv#4HKn{S3|Jz+#Wy+OLeaigM**L)b&7p z>#_e9etcp9rx5vS`0Rkv|F*CInBr{=3I520x2mdY%-51*f++dc)~vG2Kp9@1s?xLj zFneIc)rt)-2jC%;lOhD4IV2ZPv~I-H+T6d+T<XTWgz!(@MTyIR;5YdY{8TZ&5<9Pl;{1$qNGcP5B{~DpxVx~e{qf}0RmRi^2FjhL=$-W+@-p|0AHr?`%ie2~yUn#LHdaZsiEz+$cF&aQmRf`*H)u z%?KX1^jt?&9T9b-usWH6>|rQ^1`gJq9{tW!&>u29)YD(pvptxn|^AKXkrP1|n#J4iQK=5t`ZA4bQMeg8mr6r_hVz6B=K2Z(KUS zgHJ3;ZyJhv!vsDEa$B@2j}2K9Gi|3D=x|$Q#@Xr8qgLNcty^Z`(BWW2sh}hkIM!$- zrInN$@T=izPjQ3fj-A&~KiB4CEp)rViDkOwGT|wD!P9L5@F9tP6QwJGaM< zLg?Gdh!I>Q*ZUqFQ8!t(3)ruqPtmd&7$*Ucf*@1;M*f9v2yTbPP6yZI`y zZ(Y!-7aYZXqS7206A6Zw{k$D)SW}u(wj5no3PECqetBve)+grL%M%ODbIkPXXyE6S?V&#c|BFakTT#O(|&=V^GctP;v|G zL3N<{lrNSKHaW9B160<|vCzfc@UE9L?okfWVgf5V9@7uP+qzmGOjsX)BT5QdFxn*@x>0v0BNHm)xw+0^kt zl`v5#9O9an%tSmIT;_0UPf0%qGH5%;Hcs)*Y<0@o5;=o@JpC1w zMSOUSl%gAObBS$H)l%1WjJEcx%_w9Wvm*~XQc>C3S7=I*E|G7+7g7>Y#1RytQh6;(d7Pv`ePfCKR` z>Vi!t!#DO$-Sfp}4f%sErq;;;jlwv`6KaSOGr^0#_nkgfs&iqryE3_6KDe>TdNWP< zMQ}6U4_o*wl)PfWk$qq50*Rh^ zypq^u|6UOLJ*Bqn>V3WO68_JS_+Q*({{s^L`o8>wX!2{?>BoEjB@+K0bpPGJ_19+p zB4E+|%e>Y97Bd(=D#KV<{#La0S5f2lG0WdkgYmc7sDBYPDlnGpS46I~b$eI?8W6Zp zE9b0Bv4))4cgrao8}E89frX=q`tkS>3$R~b?}7~V6cTs6@WGoz0wZTRP1u0xZB#ZjVWXp7{}tdeuSlISDN7FnPx;)sqSuEL+2~qQ1Y&i*BzXb zI;aX!17|CS*SA_AK%PV4iK(%`U3W ziMr;>pU?EUtf9VIQcZ8kW>1Z0gWfj3dpn6?bjpOprexeC^^Od4Ncv8* z&^@_Zk)x~jwPI5b8bAI|X&-fupcOoh}yZ?A68Zaoh7^=0P=|=5Rc2R zUan?@QRigZ`ru|EV>G8O?&}XMJnnhB^c~;u?-!4`74`(OCRE*WhZl`_HuPg_)RGfp z7AUUv2?yh%>FJArM~TY{;yjz0}7)=q%FPnSfdbloTEo_Xue zxsbvNu3$yBq!yatlz9?OMCsPXhch14BY<1xIeA1erk|#N`eteV=G_5KNG1ZHa1}h1 z=Md`Nm2@8Q#6w*7EdtR32tl{2!~FGb45+=Im)3`;Cm(p|n6KUtM1bR*w^qiL^7s=+ zCX(Y7-TF6HF+}Wr5k>?0To6etW9P0XPr1MS%Yu&&*nq8!!}caMM>nU zQahwQI-doU52WlQp!c-H1|#W<;1}C#k~^5Zy{?}&d?4HinQW@wj%2XC14Z85biMh{ zYf3z+xst4!&Vi}sN$lb=k|!3|2>nN!{LS6kzU*-TSExhPR0)G+H4V|TcdT2HBgb~F zEo9A&-WBTv7w<<@W4l zE^2%)BX*>iX;Uk1F4Cg{1gY^1U8g?6=Om5zWPZqfbhI9so0AQjr^rS-~kPYGN*HH^Bny4 z2b4huO)H$ja}{Eu_^1UWaxM&BAOjuRjPn}4CAp7lc_1v=nVGvDHCynhVZ))QEXmW5 zp%k@KOyRw!0F~LG3p|w;Z*MeBJ)o%7`{y5yOYP(uPLW=Y4Q@YHYQ;UVh-kt4B`zsxhV)DhkhV{?&s$b zR`N=n1?1t}-=|I3zb2g2mF3dSbidl(&fW9`#L#Sx{mw&)HgBD1SU-!mR<5FLyB>9{ zgz(&mh`%4BT(^6aKjsiz9>|c^_|5p140U^Pt&lAN7+NvJiE#p0MOz#+$yj|r5!Aki zJPZO#j%zw+Artz$G`u_yA6u8+w?N=wmVHR2Xg&i3JDNG!yeWPUA4DElGw?+yCERW9 z^AUahL>D)ADDY$>#t>me8ev2Ui4~^hlbY56c+#*6-PdnY%K}Ftwkv6VXu0ZZTwH9yI zDxmmHHlSMInlhL{^d9b;11P8^&e>FP%e|b5BkUU&H0l=Q&qi*y@|IPhE6R8>|Gt?V z!vo=X60HzOu->4FVz|!6LQ_TO0)+f1B;|FjV+TwSUWwPb`}-sB;yQ7Z{Zc(18I-Nm z6PP5n9fux!5*<`_2#{}9-CzzXhQ7H#)4rOz%FJ`2%LbC5T{RR<)Rg!Di+x*P^pXhi zPYIKW%futw!^uYoXe$wpoUOl_EhsXDDu0J$+4f@Onn|FLxN_i-iO+t2Cdx)_c5m0S zL{4STW`HJpFy!vxH((A6tB!ydL-q?m@pIA(tnR+ov`>9d$8ZeW%>==l0}=)}JUTVl zfQ{-x_KEuno}e0K)3u1K(6;O+ zI@;%y*gf4iGoF9xk6S_7ig6U*?NMw^COTDO%Iffmrmnmu%LEa{A3ZTO5O}P_&4S$H zIQ9tk@M|9fswoTCUVczdlV}8!Gem)D0F@l!W9TAsNlwy)h$%7+!e~DQ%!PwMM1!PZ z!ajcIxr&i3rg*6!5t%TY)B**VLVpWtLC00v(hsz_how2R^(!uSS^#sp>sVSMwk3jY z`h+1HL9MfXzJRa|_BBC2{42p}~&@d3S)jacuvoGIlB=fI%P%GNFZXtG46JQf# zt{3=cCpfV*#ME&jKT({F@vtF7ZRJNZBc*@|x^hUoN^P|YG1&={!VJdm)o?A2uuT-( z<*{M5vjPw{Z`;|F9hi~j>@R7v=&>6PjR67ef8SN1D56b6p zuHNGZI_U#kA7w){;Cn0IwnxZeUPn{nI+NrL?UJuM#3s`v9rmB_+kPlD555^RiB%X% z6?|6Hv9KoaX|r`d_pSEopbUcJpp|&PJaz7Ip$&QEdHBvY7D2OGiB9Sz`(@=n|pfY)ge*b{6YW+xFL$15vJPTkiEQq^&v*Uu-M5xDcIBh@2%yvX(5s4s~~ zZm1X>DOR#%dNT)t2!gn`9Aa*-wlWr458x*5Cb3F&E_f@v3Q&|`ltHzpL69s6#GJ?y zw>Dq6GUlM{*ycUBauNvo;9_fc#RG|IZHv&!0-hn)0Xiu?K`7iDsoSKW&;X2iAfpxI+`|Uiok56!@Lt?WGAu+(#sEy+aM*)jxX(4};TaPV-D7Vpl2P;wZPO}s zr;dyL(E5@^sRb;H8Br@gjR!JcroSGd_|R4S^=mj^F}hN)__<8$%tmTn{^SlJqR2zu zXRIQ$rYw~!?S24T3GTY?2LHLbw?(+ywW7qxkAl2olU+*u+;8H;pGZIN`I4eWChFpk z$HxF>&+92ZEbDflWTIjthVAMt$?2sNfu^s1KXToi9FczW*OwFl%2^YIA z@ijwvQN_ztsRk|pZEpdg;Yhn|Uxy0E(>x|gDGy=?^_KL*73{e@(KIX`ajM9b*Oio6 z3zP5jja=5-+a9C-3`}jG01GF;b3V3PETL0CXS;@cR`d)W()eoP|IO;)hX)AyaUmkU zomc*26*a`0(vLEhg2r;u`{U%QS=>3MS&m|N0}WUS%qip(Lj;OP?W*YI-7UD1z4LVp z93SIWmluÐ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

|3B1vaXP#xhocEqvS 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�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

F=FphnPnyYQ>TH}H(%#Xfn~q*^Azj1_6l;) zjWZ^>;|a12RA|tRVNUXDv!y++IR6r&9J3+YO;<$B??+K*wgQS;E zwd=(O^;{;3SN%w8xm2n2HaRS&z425|o_G6>v1Zm>(Y6C)NlV;ES&s^(ZZJLRvTH4w z5fJ;GP(P2rNfvyB`3I%8&9o7OKs&7zbR_fUfz%}VzL5mlsq4Gj2s?_KnI+6%VE@Jb z7dYC@-7nlRyz>?I^ja+^_+fs?eySAe7K|c_y0Z^{k%27T%VpL?;1#keP3L`zCZg*3 zFy(BC&q_v&iS}QF>Y1qr*ahEB2mEDRsept>#k7v4u%M9J?$t$13l+Is&-N)U5RS_# zbc(7G@{UsFA(j!h!qU+Q5U8KB(?t`DdJ<9Rxl>Er!?ZeW893JvI(DaN8!2fA2}uo{r*Zlg0kBUH{5@8X&XdriQ-g&KUhTw{tf z@L8IL8d6^wkjqe$ubv4$q-c@5CGXrHAY*(x!XsK=ksp^`$-&kEQp5QWt`{QqDm&JP?-VJ(;@Pyh*#7f`tTX=)e)U zAOS6Oxye4oP^}Ijfk`>5MIEkAkt&Zrq6dP~)mbKi^*xiBXihU?oW&VvnN7HQa_c?F z|73`EM(zQAf9yelz}RPtO+tZAa`Q9+W%%hr!mm`Or(YoLW0WpAA4V%^tNiUic=?aY z=l}@QRL}TxpTmgA8WZYEe3EO1E1LQ&Z8y7_sC$14F(%bm6@BA(jux`4N#@1fD7@K( zi+fj7t|Qd^uw&dRCmZ#?zrSXAgkXT{1`3BqE7NO`_&gQ;_*w{_PMi68ZmLZKAYbc! z2YfP)p(*qgdf#hRZW!BflBjkW!)Pb4ITQ2PU-2^xf3C^p4a`iS=!EQSKfag5PVfB5 z&pPVg`I(>O%KtJb%JN>G{)3kJ0~_<(H-E1X|4WX5k(Kd%4D@{*l>NPf&%jE+$iYU- z@ILLv^6n7#zQOmu;0QSW${FsREwC|hG&A{kHh|$*itA@d{qv#zJvQLIdjC~P{MR+{ zzpCKB*}i`#O8!*&GBUh7#r@67cURLUdbI)ZwWCvz1xg*r)*>#BoWjD0UDlfY^UQps zh&%~ksm_IM;>?KZ^!kJ4eW%$VVLesGIPcn$MYs<~Y~GeVJKY3~vs8vt2qzu7UM1T5 z_}r*L0tvIh_~B?MIVAC^uz|GtV1~+%=N;aa6XV2PyY>%7voB!yc5Q>+Pm9n(- z9)mbB+n&aAdgToFB%R*P#iD>v>fgB_xBX($aWN6CTc5QwS8M5v$w=Zfrb^!dS?^k##aP+mmvpV$Hsmf zwoB3#ejV$pmV8&0bE~|dem~m z?##6_HyE^fBTJ-7aVy)cw&n&%ly+uHkim54VAj|X=sHcVtP}0Ben68>yKx*|hiL`u zY21{(QfRrngh>s*c0|F%Aozel3L5!&!mw^yG*qzn7pN&_8Tp{&JpU5(iV(X3O`*Gt%~ZXc;pJ_kf5tA7QN?mErZ2tT_V zKAkR0OII`T*s5Nv|1vK@zsf?OPzuX+B4Sep`8^PFQrVXL`(Rdy+?5P1l{!ibpAxN$ z=2}DFrore~1aa2@h2r>i^C6Piz9tKMVCXh@>nvf!1%AqpWQXI)}Nrhq#`-!7EdLWUn_gfmO}2D1<_AkYUD0*0%_D6o91Ewk_@_} z?O8C$ROP!O&44yYMDpZduf6Apz=W;^;&w0|h#cjtjJt~cgTxMCjDgjcPtnC&hEGOv zD`08*1~|{`vm;W?wZ0kW5w+5~1~H?}t`wl2x;l3eW_Nm6cf*qM7)$$457GjX;aH|O zNVR?y7*r`RSO`(vFn~{S9f%~tgM}A57?ZD7_48Nk1!^3JMQuyLxsJi1@z*zLL`l2P zuFUpFc9b+n$nAJL->kY>*Qyc5xGGi9O3!eF)efs;vF%F@6=xYGL0g0=D%q8zV;MEa zvh3Giu$XHCqTPab=DG?D4<%HH09|7a7~}O);=ZW`6`qyG>E0ct8+$EcFd<#|CpYT??gJB?Y>RxrLX>d&A>*vIuNtlEcf-4; zjnra**nyjQd8k29Nzr6l2x25Vg%X+pm!x{q@Pc+Ir2x>09!{on4CM{tH>#s63}R~u zJKw!S57&VZkuotpdKChI0U38Hxpf7u1N_hgrHv3l0nHi!EHuTUFwjlF>81%Q7s&;pKGe}roK!!?O|pWlN5w0@tFn}JF3`CLV*#Z zg+>ze4u~dBe_{>GezZye)6~cMiu0JvpC(%8%Ay>acdME;TKA22o@cP<e<$nQyRhZ9w)E+D~)82TaPU_N9QzQN z2_RKMZ$%ugq6utt=v9FPwJ+p3NPXtm*_*le>22{FWqvrc9Wzm-O4#MV%lMJQ z+{$0<7d~kbLSe|ucjYaVSdM}UQlO;J*0eNYBlV^6Q+?uH_~M+|>-nIn6^HznJG z080Wy+^iG0oE2+k`qXe_d9@L2<*H!v(Ht$d_l%En9gaEzA_->ZywV~*sV3lce}k1k zwzcknzM`~cWTFD!lu$@I{R-UlIYTu{a=G;(o7Z0jncPk}@W~pwEnHn>0e0ieW;1~-Q?ppla~L-BTg)gzoPzs zc19T3-aAWw6Ca*vXvNR4qWDZy+NX}sW)g~CuGIzQbSYwF(@2Db1cBR?%P4zE*qHUW zguJa2<1SgXu8(nIOLCn^Sr1K5HGAz9BG{B5o-FNzJnXE;%CSg}#sn&-XIb(x=xj`T zvC)@USzM`e&EtPvpbmc!GqOa?eKwk8DHSlT>I&CE!Ypf(w(|af zV|+aYibYHc1lvqSSs8pQJtawN<(ty{!RTfOmslG)mC+%fVT1dHKkB`%1nl}!JnEy3 z-hGDnL6315Scc+29qyZNikCsk=pxa?_C!Ryk90YMJ_r47&X~`#@)0Zm8qxa8X$dSM zy<0fMRAGY+l3q}n8sfxq`NjYsYF)49q5pFZCza1c`ywIpOK_P zve};Jx&7CoQ^Tm^AE%m+c@}z?-aH>&7<_>1b$z>Jx4mZ-KFheUNwqLD1Cveupulp}P|YN$L%%+elK!;U!mxm&aR^ROa4jasNf)SfG#mYF#;$*q2=)4jEm zA}y59Hx~!nhmM0MAJ@D2Y>*UwI5fu?5*9JCxSl?69LON&e2Tm}#6|?IRBe3t5`sv> z`4!zP)0^y{}DP$I&BDh_MM#60ubIlH&N~Rq48k^70+A4B4wanD~A(S~u zWl*K%O5KjMCq>L;yHO582_@*aQHz0e>?479n~+hjMz-u#Qii>A6TMOfO&vbyY${Y5 zNrWE?WH|;=TF#|D?PVs9Rix=;Rv??+_7oAA#Pp5Sj2mpO3^tV$ zEVSsG3$L(XXfseJgMuA2V&J!+8~uXv?#j!qsv^R}bluJDU`KycixVJqg(!?rv21)j zbQtnc{~aAmId!CrGs6JRB+O+V-gPQ6JtpBc#j1qm8xV0&u@zLk@&tUR>sNj{wQr>j z2)W1iZrKCWTTll|BXbjTghls>MuXBLQSf1On1_p&+u%__{(;jD6}k}yrJ;Ez?9M@? z9$S5cvmdkjW5f8h=>wsFfJv~BHc$ax7o@V$bc!W_MLn3prD7> zc9rAI7W+y*DzG}};woQJv=MWh?ZoJQInCBPc%*3+Sgi*}Ka_??tyQiAjW^r$2VSfL z0#H?w)`JvXVe}rUOkT4iuebDue^;gQ=YY$@+GyWnd=km5Vz{~1t-oIRq;~vaVln5@ zuM%~HjjFt|Sd1>y)U0i=7NsWa!A%L}+zZuYDz0y_o;#Wkx17s~$GXQ@jg-yBv{y8j zlOa)LoWRVvFG(BN($^^5GH`6C;mmH028^|rwX$EmQx4}45PNl8^s3yKP1kq8Lj#ov z=h&bI9LU7C9$P)|z7YFylMPTgY}ih8C40@>(>bv&gqQ_z6G4__IAMu%n78!_AJsh! zR@i+oc)1p_D%nSGVw0Dlx$Lhq5dhh>C3>Z-l+`u5{^Q4IH+qzaS7ONg6==Qu ztYGZ*mT=pHhuR-0IV-s48#+wa-p<`*I~IqZTGi3rRIMOq5e$%LJF##-KB)u)zZe#O zDrhm7(5kLU9v;t0dJ5UCPOq9q#tM6#v~AfaLxx1rXFgtUc*Q}Tyi_aS^quwV@)V;u z+Fuz5ge@5=R$rg~eh2A?{yqMlzYu5eFsv^j@k7%z`ee+jeI+~VgqdeDIZM^;A{D6D zy?wNnMe~(xgG5|=uJQz=$N9ahX|yPo%6AuGtYkG>I(s^l1U?;aHL9ACkNcyY)zKXG zKA8Az7Ur6|a<3$MUQISIje-y8HdMiPRKc-Bk{c5$MPaeBNlh5N8O#LxWrZ;aRbHmdi;|F;>hzd{p?zX}q5LleJgl<3qoGztD8%Xwdn zz{d8jC1U*Z2ngdJW~cvj`gh&PyCRAHT`BQr-3a5KX{ui?{(p|Y%WM8hx$*Pv|L;iV zk0U3)BAI_FH~!b*?013HFM#a-AeZ;qn!k%&G^LzYSP?po)a*SVIgp6~AUfidre`gf zY&aw5l;VItbfaO1DML_3!M~j8=qDqU4Az)%MK^SO-Z69qJodS-BIs*piuR-vo#@XK z8wfoIF~gh)WaGU-8qXE>kVs%el(6HzTECY|meLsulk1M%S@n%dUJ%&!^*|^dWg~af z%mfvD@R$Zsd~jzFxyYK6W*f;Z4LckKIqRnrq}C{aAfUeALpk59CXFEqgubHosHg##kChFzvjSTgAng3LfQ zzVo`ynRrv$f8s{Y>4%MkZYPF6q>#yB2or6NO0Vh%p*(+(NS{jG1G$r=-TD^K5n|pd z;3Yxq_^bmVQCQpF_?{=eIKq*@^Qb_>97%d}-;G)L=Fp+B_#Wb+ZsdFhVi;9ttuMN( z66zfBu`2TC$RXxzG1+VIox38aIDLKw7d^0C>ym*P%6zon-Se)N&_i}4N^UMI5IAVj z9*tAg^t@&VWZK!MW?IrxTcx>n7EC;&e~MiVjSq=(fXF zJbw0vNQnaDR6{!td_tvj&{%)ROv$)>_iR~zsWkAAH)9R1-|IJSk^twsQl-?E*mB&s zx(us?{YLH`RS~W}wDcn-Y(z2T7k+sJ<%Fsfu^w{n1rr~C)#MO46Zxs&t;smhs=>fF zChE;mSA}d>)z&Yt8xkeb)ylcpY#*LD%XI5U5;Hzu;=?Oc%bwfob{*sx=4!2{1EG}c zFti&~b>O@W0Cd4PU#P@^+MKBb2BECaH#(BoZSU7-9&YE68XiYlW)Zu8CUdVU(us$* zLoaAo*;1+KdFi-2qgLZk3+ZKSGf}+_-b(7Y3)zy~TaiLPo&LH@^*yHGw%B6ftc(+Z zUmEm0{d!GNb(6IbWMR2zvQa?D!a)Ahj;S~{ZS32WB7TIj=xZM@5^$luLmJ#b6Y%R>4CEBRt&$Z!I<-ke2Xh6DTFYec}J9ya1#?8C3*A@uq|%?<}thhY&D z3|!+S$dkzsd1l9P*=AezXNio41|*N3l{?dHR~{VRgEoUWI%lRT51{N&Gmx^-QJSjS|M^P=)B`s(SQZok5qXX>K_RK#|qi0O52Wm zS1^m$y9j_f6^sB*RV9YYDo0LakD{6o;eH z!BixECN<&l?i3(c(|>-N)LRg0ViljEzM1V7n;ACGvF{_58smWCD?hdnnv`s`I!3{E zyabwq0qCAeMs+0=J#D~3UIQ(GZa-8rSMF+7Rr{oalxV=19jH%{z?SYIY|Id=tWl8@ zyldDdQSX@+^H@5(wiyeaY%8#|=cO1Y%I0`iRUAnJq2t6s*KXlpOt?= zE-4%XNr}B6U5!m;kOnXox^;c~setM(-`Jr%IQRxB4)9od)Ye}}X$af8I7Vd5qrofB zQ6h+<5h=E}3l)m%c$?2*-)RxW5m*CTN=->l4VL$ZU#EQ}EfqghmKosP!o6cj zR*YW3J7o4u{t6Yn1CD3jDO--eg^Y*IhLOh{NItuuUO=dDCJj< z1XkTykhp zUg<=GtYo!N$nSfv+P<`9^6HtnnYF}GcaaZtYCE_Kww zG^HIwoG8RpL=K9%#d0ce;&i9?l8hG1}r`QfNK-y z3bdj@p;et`a7)ZP*@(3S`N4y}ze znSRhXUGU|CxQC(nOYJ4i64s6xVF69U}P;2q*-xf>_7o z`K~I<=WG_;VuOvG3X9VK@V6cF)W~xDjQ1BMMD&XaAb9PGa>HtJVFN?R_4hCC4za2x zu~)ecS@kNQ-&dMGt8sJ0+J_A7iFrCkbYj;~qu{sr2q$j)>dv;cd`5Sj;?e$M?~~G; z@DMhto9uvsUKY{}@zqAYPWeIg%~Wh_%Nves@jHoo*?I??i!1jvK%>Jd?V(8`E#AJU z$L+isO=k~svgY$^$W(lM>l>o4LvJ#7`(~&M@`D)*g_x{xU_flV79v&%RHq-0_JqKVHxq4dE4oj&6vI{(ZZoQ& za(MJ0*D||O2bU1#r@WeVJwkFA<5B7{cwtLhNXj+-CHz|EEK|E6zR~k zBX@xqQ^V`5t?F&(IgMt^l+P-SctXReG}z4jXv1?`hO=)?mdoeLRSO{a@%NRqWYh~* zW_gh%RN9n5zpb)Ofa8gDf=oFwUQjQ}kJDD2Dk5CvkX(skh1E)>BI#OmFQ;K67VSqu z34k5Y!4ip-o=R3&l@w64PmAKHMo+s)cXtqQ<==884(PJ$*uH74Ot3TQ2xA&Lf+Ud@ zhbQQo*N-tTCh^e8?^R>h?$Msmte6tpLJPYyVxIOlk_^iqrcvJoU&Fh?wW;yI=9xa=KCa6DInEY9zdy&$Dmty={Yn27n<}p0}1xX&Y2@dR65`= z^cEj$-g5cmDu?oHUOGnL2a{JiW*@+ZX%X!~3+G+HvrExOF|8C9TEW?4GnH8kk1LcM zRrKN~ufp@#Vk6?_Qm!x}XjE$ZIRy`EE0DBiRQt6Kx4b87!~32SQ;tECtM+Y4WK6HhP$P_O|DKMretv9&nh#O%7b!f<{f zyt1glqKag2sC5;6;TaOEqH~Y?*V{y{eKEPk2&*|0NtEGKxD=Q?Rk8QOZF6~l{AR#>lu5UCdP7Rbi1YSYPt)F&J%2|v3@S_A@yfTRnard=eyOMHu zQV9CyI`c}iR_9O1C%i}Qoie_}OZwQTwZpsZ+ge#*a6LhPeANGSpybV*Q0j&dXmyKj z`QR;iSFgr0Ci?qiZ$PpNlnH`ly7SjJ86^e{weg88;uJdQ`kZK(5 zzr-!Sx@!C<-13v>_+xMAeHYUI%I5rZpZgtn{N!U8e^WI5JvQf881bjm|D*O30$#Q}JZRbRM|3M**y~w= zFh}Ujb<4b`IEfO<1F?u^erV&(=R3oTBg>0>q8z*r2BM6IUn|-J0~Nltkw^+*G1#fN z**zDvX3Pe8;8SA~zS^;CgN44m8W1pc3VoZg#FpP0amJ?K+OrJU;d3Tj$(YtWut9Ir zY1ib|qj}Yl2jJ(nye@End2~xDENLu3w_8W5^s86HgLF^wXiTcT1*sDL)YEoZf#ys7 zndws?5XPg_u+~@-pTP_^ z_7XZZ=SCJJ-}qz!m!shr!(od2I#creAVER7n-Z`~Y>g4s^Y~`*9j483o@x@^FM2<( zK5>Zh`MOouDX;8n9`bsz*3m?C?s0Am8=APbQ}goP%jOk7yf804-xCeDk&jA~3(58Md&Z#|dkWFPQC^gDjgqRDLew*(jRAT?dGQyP%zW|kD z-6}}LW6jZ}s*0=lYJG4X1(>#wp{~k!oE2FeoA%lk;JV1oz4}7UdoHh)U*q9OcP#>= zqnHrvPifrYCP6SYza!}&=fKx(YKpGGh+^ex%^F{s_;F~)bTiRAvA4a)bTLtvHBqNG zTCX=+=Ue!8FZ~vp`WkNf7(I54pLM{;FylM5`kZdjnPTC~%;sad9sOhb&GaQCZR)bF z2453)dweyYnS_LAcDRtWNCQoj;!gF(EoX*02q+*Nt>R*QwS;H7?ieVonW~cAGly$R z+1?Lb#>Dr+gAYsuc^}1)bIsk+$Q8m2_Waa-Ir);89metn#4;&#l1gJJvZVjCBREuO zh`2D_CKiyTXZfCJqfH27fPDzhEGnRH9j0~IeGvuAw5?i2iY4N>P?v=TVE@YLr9jD8 zEF{Gtx{!NEntN{C#=e7n*{1q|6fmLi^y>6tV1h4|kBhQ_{24T9jX-)c*gUb@3$o!`;Ltf_AN}WzH zGAHZ_{mPbvBwa-hu-A1>pQ;g~U2L>s07a;g#G2uTRRVU}4o6HElRlTwWgxls@?>H$ zFBN8-iUACIX_da4am&z4J#@5z!Bt$mYVJK<77b<%TY&qX`$T!s1G`i(Y1 zKB1x8R{W{!(}O0bW^)!hcp8oqBbL??H26{+3`C>Q0d~N?4#1T28+O>h57AHo(T6=YSs#TBaZu;)cZ^-f&( zmT|?R6J|z0+JR3JAPq9RzUIM+rnrvzMPG3{0jo0NVS5(eKvh+F! zMlF_js0~qkrMuH|bY|+$vVifQV}AOPf>>jDUB||K*G?J4n)6SKGG!wZO(-K=XKpgsblva{gk%@vm|((?4qe-;>CH z$h|-R!T(z)h3Oxii2tpV!t`q!;Ai&y8O-1141PxNd*pwe{{CMkxnD8L?@5mNeSgj0 zOmbryT2ASrC_W37*{S0oSXQ-cXyVhO`QruS`3JMAMeq`M2<6tKKq&l@+?a27r?3+G zeGJJ>-m#mPUe=; zZw-(ThA&($D4(97+0z$2zg`RDQes z0dbB6$rcgaj}4WHiJXZtic#7o@#FT52}Wwi`oh3@7}yE8#K*`a(PGsPL*%>ORW!E& z;5_(<;9>4en(&EFw#~D(Ehcsk$(9MW0+TJgmx{GBx8cx+G zY);g>O@#@G4q~kwsTG>|J(N8ZHm_F_Fn6 zmpHQ}lTKWM0zDR&17q2J^d=*&UKfj@?3;k20}X4Are>4&Vf#Zanq5l#ut4vRlGwJ% zRST;HPjPd?*#tPKe3>{>QW?YWtFmS#Lwg8aX~5hH-dd!w-RMzJcWc2I9&|&x-4Du# zw)OzI{s3{zL75jHqD%R{9baWJ?J#pd}ZjDHxNLvCM3*lU|bilj^Y zai5MMBqx0)jZglu5QVWdg4V4~_fl}(!?T+N-SvWKVLU#P7`HfSewQ$qqZ5KnqJwoh zE{Jp?{gi9A5%&9@Ra%pVyto+)K?n9C6Y7Mc!uJns`DFzRCLg{tQcLNsqacF;V-a*! znN73HxPSRP|4=Rp_{DfTH9;gqY3^#*S;yTfdU%0sIPa1OSrwwPgaxq)9L5mB?NxQq zRuf=@7BS}J=&R7hlL_ONo!mBz3d=oKm z&v%>KDNR+Etq@|j0uAVa{hc^}r7tPI{7U^_vOKxph3Ng{R6!u48E@V9sn1S$GyZ)L$+3tv*qJN`J8pbgaru zR)`%HqnxeZFt|cBiHlSv_F*M0lU4#IB=&4pQ>ydxEaKiC z620xXoYb44@+Mr7D8!2T6jE&oxGWb~NmnDIxT7x!h|F8Ca-h@W}oR@fxFUFIni zw|Q|_+jW)-dNN-G=fHu9h%DB5wdPgzW@5DxuxmBvQ&LST_mCGbwPZU2@)-mYS!QB3 zP!DA-VE?G^D{>0EyL}8k?9Kr2!w|m@X9WJcP3JGKXqeuAzP!*oZFKP-kB`GC{Z?u9 zGVJb+E8adLBbl}swo%62#dPJjkViA`Mg~-k$p~!bYqvZp3;DfE=z9tK zFQDp6KH|Ph|9Yp``Qsz6O(;ZV0P=psBM3|12Y*}>f+@v6ZB{E(9isS zVEh)>cO`1y1r!pDZ6L18T1s0E=WXb<*DAiv71d@{j=$bom8w$0T+*wRm8Gj-fjN|_ zS$qMdoG&YLycv74Xsngdc-ht4r@!{u8ZhI#d41dzYhG{~kh}R>Ni?DB+7Z>3tLb#N zP*}HCVVPFieDcCq>BIFjFt>Ea1PT>M74&2x0rZqgFj6z;;dy&9VXyLS(XNc1-o3#i zJ9R|`L}`1l%d`E_@phxu-c}e54?{q(9oX2(2F-A% zlTc0?!IR(z|EMdYqrCHsqdBgHBi9PHGwnCox4yG$z2|>@vAf+!esS(REwvhP;^aDR z1?%me?ZHtMC{8{=4RMblojSCHj`Qhf_P(aemG*oYuP93w8W>}>+kF9lTwE~(f!-q1q+>xE&-^N_65$1Ug$mNCVfq!}sIZO4(rDuZY0h`Xo zzV5OpuiNd-RadwlY}sB3jk#RU@=b1==aU$dqn*g2Q!k4GT-7H6e@SIn+x5%B&sG{g zP@TuV2N3fg&n$bS`&G|*7F0^vs!f8&|ao^EJ0Ntd=iIsJqT=5g( znW!vr!aky9m8ew@c$>8OXE*p<%j|IYcU+!&f3H^w9T=iY%eiu@q`9-=*fzowpWzpS z^vpJ=XRHJCWDef**r>jQ<(g%yM!!er_^4x3z9<3>wK~)u&6u!o>RSJ?k?naWbw9Gh z#^W@PIG63tT2rq;{~)xBSpttAfQI^Bo4JurL?1;Eg!I5Mhl_EwwT{i)x4IIXS&RCW zIHG3+&?ZwxsaYC%O|JL|C$mdF>9RuU)(b>!#k7ftoZS?l0!c!%j6l(n0t!f=FXyhR zWFFg%1#%!^JLOwLxX>U3Kl}kTmXGQrAS--FaIe+=F?DoTa|UOiG^hp+jk5*@)AIc% zmFlQ0NvN))!_+I~DSxv(a&hN=Xy31#gX-0ga2L-Bi0()L5Y+RXxSOKRAF)8)KW4)d zgK%=m5oAgFES;UF4)1pqt@Z)Jb(IE?6uDTOL~YE+@CHgQ+M9tDwRQ9$_tDP{H8=<7 z*-LYOi7UGS28MZ0tuJ4teMx2`N%q*Itg@Y7WZ5|+oCWn~4LTi0WAb|b*;;&w? zMnDgeXha$Z8Kd1ngyj*X?oub*9eYlvo6Mm0R29)8dHXR#Tu&ancD(9^so<%jW|S{U z8)k$Hu&XAGsLn8Xk%>JLI2}bpEFgfSR}cRmZ|?wIS-W)&#;Vx1ZQD*&Y}>YN+qP}n zsZ?xLQn8KBt?%CdzE}Odw|jJtk&Ka(bM`)KCui*EnRCrG=ZSd4*dBgN)&mZ^z*T}E z6bbCDXw2R`1qvcYE)Yc5faq!dqGDejgYvv-c`>tZ2@$$v1SKIrtN)4s4T#aA6WiKX z(d}6W)24%OBBE*N$<`ZJ0~03bXhp_G@}+KV*{VpY!tjtwG%Q=-t}}-8&{2;8M59D? z4lOBV!lr`xN{_jT2XSL}bCCnv#B0b)EE%%IQijvcB9hExd@ zv8n?Pe1b?UNoM;u&KQAdLvIq)$&rs*}ZHeeHRDFZZ zA5rXVG`XtX5arf+@<>=9E69Cwf%o}%rKzDtOho)Kp)CB7SVG+Au!%Qb7{r0ahL+ur z+(7nOXGDGg;xT-~ELC)6$M#fF;|Q~uK(?mJ!>1v3Jj(e&lrks|>Lx(g`oU*jhK8@z_7{7|P8>nUG9uJB znb2}_mr&-fEV=<5PqE&Bi3`*}cPEiFD-7B0;ch5L1W=EuFS_N@h9SU^RLV($lUi)} zZ|w(U7^ZO|@;P%aCGX^D85i};0jJ9f}%d*WO;E@L$ZkhKTg z&naQi1Oi$&IC|ueVKuz8Hmt!!x!{*%CyDVc3T$P58QJxPg3%57S4fQE@x{x?5#QE~2qv_6 zjoGs9pnMTO6#R~C73{|Mi?;(O+%IXlC3Hunw@Kdbd%sV%s0TafRbU0;V4li&4{Mar znHpyxHbdV@wH4*WQB5Yt`KMPka&}yBhz@+Mg#tTf!uX*&zF=F+CIHkf_|RRVhSt!W zQWe2#0sHN{8JWe%MKy&ArR(}l(bw(5d{v2q{)Bc5sbf=f6%`PvAAZDWe!3IHG)aPq z(ReFINyvQfR!T*j;*FkSX_n9q7d{>#N6Y#7>2po_$&j%Att530<$^|}UrDvCpVDLU zzDo0}bZLg>l`?B8*0n-c;&@?+8Wq!_4DY#qZmlsRdg8hWxk(_`VN-bz1*L7D55VyT zZA5J8&`eY1$BciJ9zDJOvIITRTl#`u4A#RPgB9tlld znxiK(Esx4WZsgq95LC1Lj^(w*u3BP{8jGHZa@8&ZSEImJzw!ikI`|RW<--=|$PA)Q zbrll*6U{@&2l91!2m4Vid*q#EX4@VZt&r{2%=;D3=eZ#h4>=~~oNBJ5+W#602*UOX zrprffRbB584-mbEMgUn{iaUwM2|Viq4*cm-_TTNmKYhvmzL)$DJMiE8&3_`Tn16c* z{(1Q?^Y1yKe;6kE4DbE>TmL4lei!p+Nvq!#{NL}u|Gww`lVTR;KjM+U?X1~9EfN3Z z&U!snd7XHgeXp^)N)|Vhn}1NEGaUfkKQVu7-)H9h z4A(b6Jj{4~F#$X*eyZAJ?)0RgM<Of7jo zPkjG0KfUWqcFj_I*`(YJ8DqFV-LJzb?l0cYp15cNVmLD@OAZL&&-P3yc3;y$ojy9s zZjG(dhnbf)UPB^mrn}qOU#_G9faj#Qz1`CLy(uSeJex~rHs9cA5vfdTjBRG#olvg`^67&i-+HF*EWh6b!=;Ng5K_yh?Q%r0Pckm6jMK*;a+;W~ zU>%7fLWClhAqy{^0Jhg2ot@WfSWXsYQ+sDpsJ?n73cqu{2l>beW0$iNEt;o0Auo_o zguc=F+#T6ppjpi~QM~~U$|8-sU^Oh%NZ;560(touCL8%P89b&?5^mqY`^{_~1+lWV zr>_ZpXnqJrHRo-e*%wS4W5k~xWX5OuyqC8zWHgsKHNf;NTd`igSgj;3wYS$+Xe;-4 zI`8IzyuYnzyxxk)PsZ2sD}WS$g!tVU(i^66jI_z=6xuU`ayN-@1oBCTK2<|kd0sN! z9y259(e@Uat9sTkZ?_T3`L}!Wp}FNg)fMK9d*YRu(&qEq{1gPihs2%zGLL~=JUXA- zY3agUt7UFZ{Zrn*v4s^^H#1cVy@+Ap#5%>eZr{lv4&>9Wz9Sg3<%Zpq?c&#td4Ol* zogtpWQadAw^?=75V0!oy0O%?(0F`oLw=XFJxlBC0gnc~ha;R3A;Y7HgT8rwjc?*!; zpn!|47l|03p^Aco-)n`{93l!MSY+IDBDd`;JXUPgfMY#6s6OTHfPM-5bO|v4+IKKyJdWb8*gZcA zi?v1~3j%Ssl|={@c)nF>-)8t@oU#M?!NO_m}^cl z0UiaHbY+h)lIPVoINpZ4>!e8?ul71%uX99gqnlss-ci+SuRBLrkAUpy!q|&?k?v;m z+TER9Tk9rs=#!%)xKM0$K!IQ1hmj|I%_#);&64h0$rd1T0R(Uto$N}u7R_{oO3#bU+g z+OXhRWkGpYG-vu!lZ;ziKa$<4lR?~}(8r3CYd=jDU0DNgihYI)O

V3Hv5e1Jhz) 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%0A+j!;NR3=OSCHDDzF|)7 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

ie&!d{C~6Nv;y? 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 a{mYLZ|L_@H%EIoS{hNRDtN;4fpZ$OLM(Jk& diff --git a/build/pandoc.sh b/build/pandoc.sh index 0340206..e4cda5f 100644 --- a/build/pandoc.sh +++ b/build/pandoc.sh @@ -1,6 +1,6 @@ #/bin/sh # To be run inside the container -pandoc -o intro-to-rx.epub metadata.md -s \ +pandoc -o /output/intro-to-rx.epub metadata.md -s \ ./content/01_WhyRx.md \ ./content/02_KeyTypes.md \ ./content/03_CreatingObservableSequences.md \ @@ -25,7 +25,7 @@ pandoc -o intro-to-rx.epub metadata.md -s \ --toc --toc-depth 4 \ --resource-path "./content/" -pandoc -o intro-to-rx.docx -s \ +pandoc -o /output/intro-to-rx.docx -s \ ./content/01_WhyRx.md \ ./content/02_KeyTypes.md \ ./content/03_CreatingObservableSequences.md \ @@ -51,7 +51,7 @@ pandoc -o intro-to-rx.docx -s \ --metadata title="Introduction to Rx .NET" \ --toc --toc-depth 4 -pandoc -o intro-to-rx.pdf metadata.md -s \ +pandoc -o /output/intro-to-rx.pdf metadata.md -s \ ./content/01_WhyRx.md \ ./content/02_KeyTypes.md \ ./content/03_CreatingObservableSequences.md \ diff --git a/scripts/pagebreak.lua b/scripts/pagebreak.lua new file mode 100644 index 0000000..49c51c5 --- /dev/null +++ b/scripts/pagebreak.lua @@ -0,0 +1,125 @@ +--[[ +pagebreak – convert raw LaTeX page breaks to other formats + +Copyright © 2017-2023 Benct Philip Jonsson, Albert Krewinkel + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +]] +local stringify = (require 'pandoc.utils').stringify + +--- configs – these are populated in the Meta filter. +local default_pagebreaks = { + asciidoc = '<<<\n\n', + context = '\\page', + epub = '

', + html = '
', + latex = '\\newpage{}', + ms = '.bp', + ooxml = '', + odt = '' +} + +local function pagebreak_from_config (config) + local pagebreak = default_pagebreaks + local html_class = config['html-class'] + and stringify(config['html-class']) + or os.getenv 'PANDOC_PAGEBREAK_HTML_CLASS' + if html_class and html_class ~= '' then + pagebreak.html = string.format('
', html_class) + end + + local odt_style = config['odt-style'] + and stringify(config['odt-style']) + or os.getenv 'PANDOC_PAGEBREAK_ODT_STYLE' + if odt_style and odt_style ~= '' then + pagebreak.odt = string.format('', odt_style) + end + + return pagebreak +end + +--- Return a block element causing a page break in the given format. +local function newpage(format, pagebreak) + if format:match 'asciidoc' then + return pandoc.RawBlock('asciidoc', pagebreak.asciidoc) + elseif format == 'context' then + return pandoc.RawBlock('context', pagebreak.context) + elseif format == 'docx' then + return pandoc.RawBlock('openxml', pagebreak.ooxml) + elseif format:match 'epub' then + return pandoc.RawBlock('html', pagebreak.epub) + elseif format:match 'html.*' then + return pandoc.RawBlock('html', pagebreak.html) + elseif format:match 'latex' then + return pandoc.RawBlock('tex', pagebreak.latex) + elseif format:match 'ms' then + return pandoc.RawBlock('ms', pagebreak.ms) + elseif format:match 'odt' then + return pandoc.RawBlock('opendocument', pagebreak.odt) + else + -- fall back to insert a form feed character + return pandoc.Para{pandoc.Str '\f'} + end +end + +--- Checks whether the given string contains a LaTeX pagebreak or +--- newpage command. +local function is_newpage_command(command) + return command:match '^\\newpage%{?%}?$' + or command:match '^\\pagebreak%{?%}?$' +end + +-- Returns a filter function for RawBlock elements, checking for LaTeX +-- pagebreak/newpage commands; returns `nil` when the target format is +-- LaTeX. +local function latex_pagebreak (pagebreak) + -- Don't do anything if the output is TeX + if FORMAT:match 'tex$' then + return nil + end + return function (el) + -- check that the block is TeX or LaTeX and contains only + -- \newpage or \pagebreak. + if el.format:match 'tex' and is_newpage_command(el.text) then + -- use format-specific pagebreak marker. FORMAT is set by pandoc to + -- the targeted output format. + return pagebreak + end + -- otherwise, leave the block unchanged + return nil + end +end + +-- Turning paragraphs which contain nothing but a form feed +-- characters into line breaks. +local function ascii_pagebreak (raw_pagebreak) + return function (el) + if #el.content == 1 and el.content[1].text == '\f' then + return raw_pagebreak + end + end +end + +--- Filter function; this is the entrypoint when used as a filter. +function Pandoc (doc) + local config = doc.meta.pagebreak or {} + local break_on = config['break-on'] or {} + local raw_pagebreak = newpage(FORMAT, pagebreak_from_config(doc.meta)) + return doc:walk { + RawBlock = latex_pagebreak(raw_pagebreak), + -- Replace paragraphs that contain just a form feed char. + Para = break_on['form-feed'] + and ascii_pagebreak(raw_pagebreak) + or nil + } +end From a51bfd5ac0c240979c45d9680d2125c9f009046a Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Tue, 31 Oct 2023 09:59:59 +0000 Subject: [PATCH 063/142] Ch05 update after read through --- content/05_Filtering.md | 70 ++++++++++++++++++++--------------------- 1 file changed, 34 insertions(+), 36 deletions(-) diff --git a/content/05_Filtering.md b/content/05_Filtering.md index 3c98bb1..1167b69 100644 --- a/content/05_Filtering.md +++ b/content/05_Filtering.md @@ -6,7 +6,7 @@ title : Filtering Rx provides us with tools to take potentially vast quantities of events and process these to produce higher level insights. This can often involve a reduction in volume—a small number of events may be more useful than a large number if the individual events in that lower-volume stream are, on average, more informative. The simplest mechanisms for achieving this involve simply filtering out events we don't want. Rx defines several operators that can do this. -Just before we move on to introducing the new operators, we will quickly create our own extension method. We will use this 'Dump' extension method to help build our samples. +Just before we move on to introducing the new operators, we will quickly define an extension method to help illuminate several of the examples. This `Dump` extension method subscribes to any `IObservable` with handlers that display messages for each notification the source produces. This method takes a `name` argument, which will be shown as part of each message, enabling us to see where events came from in examples that subscribe to more than one source. ```csharp public static class SampleExtentions @@ -14,9 +14,9 @@ public static class SampleExtentions public static void Dump(this IObservable source, string name) { source.Subscribe( - i=>Console.WriteLine("{0}-->{1}", name, i), - ex=>Console.WriteLine("{0} failed-->{1}", name, ex.Message), - ()=>Console.WriteLine("{0} completed", name)); + value =>Console.WriteLine($"{name}-->{value}"), + ex => Console.WriteLine($"{name} failed-->{ex.Message}"), + () => Console.WriteLine($"{name} completed")); } } ``` @@ -31,7 +31,7 @@ IObservable Where(this IObservable source, Func predicate) Note that the element type is the same for the `source` parameter as it is for the return type. This is because `Where` doesn't modify elements—it can filter some out, but those that it does not remove are passed through unaltered. -This example uses `Where` to filter out all even values produced from a `Range` sequence. +This example uses `Where` to filter out all odd values produced from a `Range` sequence. ```csharp IObservable xs = Observable.Range(0, 10); // The numbers 0-9 @@ -52,7 +52,7 @@ Where-->8 Where completed ``` -The `Where` operator is one of the many standard LINQ operators. This and other LINQ operators are common use in the various implementations of query operators, most notably the `IEnumerable` implementation. In most cases the operators behave just as they do in the `IEnumerable` implementations, although there are some exceptions as we'll see later. We will discuss each implementation and explain any variation as we go. By implementing these common operators Rx also gets language support for free via C# query comprehension syntax. For example, we could have written the first statement this way, and it would have compiled to effectively identical code: +The `Where` operator is one of the many standard LINQ operators. This is one of many standard LINQ operators you'll find on all LINQ providers—LINQ to Objects, the `IEnumerable` implementation, provides an equivalent method, for example. In most cases, Rx's operators behave just as they do in the `IEnumerable` implementations, although there are some exceptions as we'll see later. We will discuss each implementation and explain any variation as we go. By implementing these common operators Rx also gets language support for free via C# query expression syntax. For example, we could have written the first statement this way, and it would have compiled to effectively identical code: ```cs IObservable oddNumbers = @@ -61,13 +61,13 @@ IObservable oddNumbers = select i; ``` -For the examples in this book however, we will keep with using extension methods, partly because Rx implements some operators for which there is no corresponding query syntax, and partly because the method call approach can sometimes make it easier to see what is happening. +The examples in this book mostly use extension methods, not query expressions, partly because Rx implements some operators for which there is no corresponding query syntax, and partly because the method call approach can sometimes make it easier to see what is happening. -As with most Rx operators, `Where` does not subscribe immediately to its source. (Rx LINQ operators are much like those in LINQ to Objects: the `IEnumerable` version of `Where` returns without attempting to enumerate its source. It's only when something attempts to enumerate the `IEnumerable` that `Where` returns that it will in turn start enumerating the source.) Only when something calls `Susbcribe` on the `IObservable` returned by `Where` will it call `Subscribe` on its source. And it will do so once for each such call to `Subscribe`. More generally, when you chain LINQ operators together, each `Subscribe` call on the resulting `IObservable` results in a cascading series of calls to `Subscribe` all the way down the chain. +As with most Rx operators, `Where` does not subscribe immediately to its source. (Rx LINQ operators are much like those in LINQ to Objects: the `IEnumerable` version of `Where` returns without attempting to enumerate its source. It's only when something attempts to enumerate the `IEnumerable` that `Where` returns that it will in turn start enumerating the source.) Only when something calls `Subscribe` on the `IObservable` returned by `Where` will it call `Subscribe` on its source. And it will do so once for each such call to `Subscribe`. More generally, when you chain LINQ operators together, each `Subscribe` call on the resulting `IObservable` results in a cascading series of calls to `Subscribe` all the way down the chain. A side effect of this cascading `Subscribe` is that `Where` (and most other LINQ operators) is neither inherently _hot_ or _cold_: since it just subscribes to its source, then it will be hot if its source is hot, and cold if its source is cold. -The `Where` operator passes on all elements for which its `predicate` callback returns `true`. To be more precise, `Where` will create its own `IObserver` which it passes as the argument to `source.Subscribe`, and this observer invokes the `predicate` for each call to `OnNext`. If that predicate returns `true`, then and only then will the observer created by `Where` call `OnNext` on the observer that was passed to `Where`. +The `Where` operator passes on all elements for which its `predicate` callback returns `true`. To be more precise, when you subscribt to `Where`, it will create its own `IObserver` which it passes as the argument to `source.Subscribe`, and this observer invokes the `predicate` for each call to `OnNext`. If that predicate returns `true`, then and only then will the observer created by `Where` call `OnNext` on the observer that you passed to `Where`. `Where` always passes the final call to either `OnComplete` or `OnError` through. That means that if you were to write this: @@ -75,13 +75,13 @@ The `Where` operator passes on all elements for which its `predicate` callback r IObservable dropEverything = xs.Where(_ => false); ``` -then although this would filter out all elements (because the predicate ignores its argument and always returns `false`, instructing `Where` to drop everything), this won't filter out error or completion. +then although this would filter out all elements (because the predicate ignores its argument and always returns `false`, instructing `Where` to drop everything), this won't filter out an error or completion. In fact if that's what you want—an operator that drops all the elements and just tells you when a source completes or fails—there's a simpler way. ## IgnoreElements -The `IgnoreElements` extension method allows you to receive just the `OnCompleted` or `OnError` notifications. It is equivalent to using the `Where` operator with a predicate that always returns false, as this example illustrates: +The `IgnoreElements` extension method allows you to receive just the `OnCompleted` or `OnError` notifications. It is equivalent to using the `Where` operator with a predicate that always returns `false`, as this example illustrates: ```cs IObservable xs = Observable.Range(1, 3); @@ -103,7 +103,7 @@ IgnoreElements completed ## OfType -Some observable sequence produce items of various types. For example, consider an application that wants to keep track of ships as they move. This is possible with an AIS receiver. AIS is the Automatic Identification System, which most ocean-going ships use to report their location, heading, speed, and other information. There are numerous kinds of AIS message—some report a ship's location and speed, but its name is reported in a different kind of message. (This is because most ships move more often than they change their names, so they broadcast these two types of information at quite different frequencies.) +Some observable sequences produce items of various types. For example, consider an application that wants to keep track of ships as they move. This is possible with an AIS receiver. AIS is the Automatic Identification System, which most ocean-going ships use to report their location, heading, speed, and other information. There are numerous kinds of AIS message—some report a ship's location and speed, but its name is reported in a different kind of message. (This is because most ships move more often than they change their names, so they broadcast these two types of information at quite different intervals.) Imagine how this might look in Rx. Actually you don't have to imagine it. The open source [Ais.Net project](https://github.com/ais-dotnet) includes a [`ReceiverHost` class](https://github.com/ais-dotnet/Ais.Net.Receiver/blob/15de7b2908c3bd67cf421545578cfca59b24ed2c/Solutions/Ais.Net.Receiver/Ais/Net/Receiver/Receiver/ReceiverHost.cs) that makes AIS messages available through Rx. The `ReceiverHost` defines a `Messages` property of type `IObservable`. Since AIS defines numerous message types, this observable source can produce many different kinds of objects. Everything it emits will implement the [`IAisMessage` interface](https://github.com/ais-dotnet/Ais.Net.Receiver/blob/15de7b2908c3bd67cf421545578cfca59b24ed2c/Solutions/Ais.Net.Models/Ais/Net/Models/Abstractions/IAisMessage.cs), which reports the ship's unique identifier, but not much else. But the [`Ais.Net.Models` library](https://www.nuget.org/packages/Ais.Net.Models/) defines numerous other interfaces, including [`IVesselNavigation`](https://github.com/ais-dotnet/Ais.Net.Receiver/blob/15de7b2908c3bd67cf421545578cfca59b24ed2c/Solutions/Ais.Net.Models/Ais/Net/Models/Abstractions/IVesselNavigation.cs), which reports location, speed, and heading, and [`IVesselName`](https://github.com/ais-dotnet/Ais.Net.Receiver/blob/15de7b2908c3bd67cf421545578cfca59b24ed2c/Solutions/Ais.Net.Models/Ais/Net/Models/Abstractions/IVesselName.cs), which tells you the vessel's name. @@ -123,7 +123,7 @@ Cannot implicitly convert type 'System.IObservable`, that's is also the type that `Where` will return. It so happens that our predicate ensures that only those messages that implement `IVesselNavigation` make it through, but there's no way for the C# compiler to understand the relationship between the predicate and the output. (For all it knows, `Where` might do the exact opposite, including only those elements for which the predicate returns `false`. In fact the compiler can't guess anything about how `Where` might use its predicate.) -Fortunately, Rx provides an operator specialized for this case. `OfType` filters items down to just those that are of a particular type—items must be either the exact type specified, or if it's an interface they must implement it, or otherwise they must inherit from it. This enables us to fix the last example: +Fortunately, Rx provides an operator specialized for this case. `OfType` filters items down to just those that are of a particular type—items must be either the exact type specified, or inherit from it, or, if it's an interface, they must implement it. This enables us to fix the last example: ```cs IObservable vesselMovements = receiverHost.Messages @@ -132,13 +132,13 @@ IObservable vesselMovements = receiverHost.Messages ## Positional Filtering -Sometimes, we don't care about what an element is, so much as where it is in the sequence. +Sometimes, we don't care about what an element is, so much as where it is in the sequence. Rx defines a few operators that can help us with this. ### FirstAsync and FirstOrDefaultAsync LINQ providers typically implement a `First` operator that provides the first element of a sequence. Rx is no exception, but the nature of Rx means we typically need this to work slightly differently. With providers for data at rest (such as LINQ to Objects or Entity Framework Core) the source elements already exist, so retrieving the first item is just a matter of reading it. But with Rx, sources produce data when they choose, so there's no way of knowing when the first item will become available. -So with Rx, we typically use `FirstAsync`. This returns an `IObservable` that will produce the first value that emerges from the source sequence and will then complete. (There is also a `First` method, but it can be problematic. See the [**Blocking Versions of First/Last/Single[OrDefault]** section later](#blocking-versions-of-firstlastsingleordefault) for details.) +So with Rx, we typically use `FirstAsync`. This returns an `IObservable` that will produce the first value that emerges from the source sequence and will then complete. (Rx does also offer a more conventional `First` method, but it can be problematic. See the [**Blocking Versions of First/Last/Single[OrDefault]** section later](#blocking-versions-of-firstlastsingleordefault) for details.) For example, this code uses the AIS.NET source introduced earlier to report the first time a particular boat (the aptly named HMS Example, as it happens) reports that it is moving: @@ -151,7 +151,7 @@ IObservable moving = receiverHost.Messages .FirstAsync(); ``` -As well as using `FirstAsync`, this also uses a couple of the other filter elements already described. It starts with a [`Where`](#where) step that filters message down to those from the one boat we happen to be interested in. (Specifically, we filter based on that boat's [Maritime Mobile Service Identity, or MMSI](https://en.wikipedia.org/wiki/Maritime_Mobile_Service_Identity).) Then we use [`OfType`](#oftype) so that we are looking only at those messages that report movement. Then we use another `Where` clause so that we can ignore messages indicating that the boat is not actually moving, finally, we use `FirstAsync` so that we get only the first message indicating movement. As soon as the boat moves, this `moving` source will emit a single `IVesselNavigation` event and will then immediately complete. +As well as using `FirstAsync`, this also uses a couple of the other filter elements already described. It starts with a [`Where`](#where) step that filters messages down to those from the one boat we happen to be interested in. (Specifically, we filter based on that boat's [Maritime Mobile Service Identity, or MMSI](https://en.wikipedia.org/wiki/Maritime_Mobile_Service_Identity).) Then we use [`OfType`](#oftype) so that we are looking only at those messages that report how/whether the vessel is moving. Then we use another `Where` clause so that we can ignore messages indicating that the boat is not actually moving, finally, we use `FirstAsync` so that we get only the first message indicating movement. As soon as the boat moves, this `moving` source will emit a single `IVesselNavigation` event and will then immediately complete. We can simplify that query slightly, because `FirstAsync` optionally takes a predicate. This enables us to collapse the final `Where` and `FirstAsync` into a single operator: @@ -162,7 +162,7 @@ IObservable moving = receiverHost.Messages .FirstAsync(vn => vn.SpeedOverGround > 1f); ``` -What if the input to `FirstAsync` is empty? If its completes without ever producing an item, `FirstAsync` invokes its subscriber's `OnError` with an `InvalidOperationException` with an error message reporting that the sequence contains no elements. The same is true if we're using the form that takes a predicate (as in this second example), and no elements matching the predicate emerged. This is consistent with the LINQ to Objects `First` operator. (Note that we wouldn't expect this to happen with the examples just shown, because the source will continue to report AIS messages for as long as the application is running, meaning there's no reason for it ever to complete.) +What if the input to `FirstAsync` is empty? If its completes without ever producing an item, `FirstAsync` invokes its subscriber's `OnError`, passing an `InvalidOperationException` with an error message reporting that the sequence contains no elements. The same is true if we're using the form that takes a predicate (as in this second example), and no elements matching the predicate emerged. This is consistent with the LINQ to Objects `First` operator. (Note that we wouldn't expect this to happen with the examples just shown, because the source will continue to report AIS messages for as long as the application is running, meaning there's no reason for it ever to complete.) Sometimes, we might want to tolerate this kind of absence of events. Most LINQ providers offer not just `First` but `FirstOrDefault`. We can use this by modify the preceding example. This uses the [`TakeUntil` operator](#skipuntil-and-takeuntil) to introduce a cut-off time: this example is prepared to wait for 5 minutes, but gives up after that. (So although the AIS receiver can produce messages endlessly, this example has decided it won't wait forever.) And since that means we might complete without ever seeing the boat move, we've replaced `FirstAsync` with `FirstOrDefaultAsync`: @@ -174,7 +174,7 @@ IObservable moving = receiverHost.Messages .FirstOrDefaultAsync(vn => vn.SpeedOverGround > 1f); ``` -If, after 5 minutes, we've not seen a message from the boat indicating that it's moving at 1 knot or faster, `TakeUntil` will unsubscribe from its upstream source and will call `OnCompleted` on the observer supplied by `FirstOrDefaultAsync`. Whereas `FirstAsync` would treat this as an error, `FirstOrDefaultAsync` will produce the default value for its element type (`IVesselNavigation` in this case; the default value for an interface type is `null`), pass that to its subscriber's `OnNext` and then call `OnCompleted`. +If, after 5 minutes, we've not seen a message from the boat indicating that it's moving at 1 knot or faster, `TakeUntil` will unsubscribe from its upstream source and will call `OnCompleted` on the observer supplied by `FirstOrDefaultAsync`. Whereas `FirstAsync` would treat this as an error, `FirstOrDefaultAsync` will produce the default value for its element type (`IVesselNavigation` in this case; the default value for an interface type is `null`), pass that to its subscriber's `OnNext`, and then call `OnCompleted`. In short, this `moving` observable will always produce exactly one item. Either it will produce an `IVesselNavigation` indicating that the boat has moved, or it will produce `null` to indicate that this didn't happen in the 5 minutes that this code has allowed. @@ -204,27 +204,25 @@ Thank you. I'm here all week. The `FirstAsync` and `Take` operators work from the start of the sequence. What if we're interested only in the tail end? -### LastAsync and LastOrDefaultAsync +### LastAsync, LastOrDefaultAsync, and PublishLast LINQ providers typically provide `Last` and `LastOrDefault`. These do almost exactly the same thing as `First` or `FirstOrDefault` except, as the name suggests, they return the final element instead of the first one. As with `First`, the nature of Rx means that unlike with LINQ providers working with data at rest, the final element might not be just sitting there waiting to be fetched. So just as Rx offers `FirstAsync` and `FirstOrDefault`, it offers `LastAsync` and `LastOrDefaultAsync`. (It does also offer `Last`, but again, as the [Blocking Versions of First/Last/Single[OrDefault]](#blocking-versions-of-firstlastsingleordefault) section discusses, this can be problematic.) -There is also [`PublishLast`](15_PublishingOperators.md#publishlast). This has similar semantics to `LastAsync` but it handles multiple subscriptions differently. Each time you subscribe to the `IObservable` that `LastAsync` returns, it will subscribe to the underlying source, but `PublishLast` makes only a single `Subscribe` call to the underlying source (which happens when you call `Connect`), and then all subscribers receive the same result. This is one of a family of operators based on the [`Multicast`](15_PublishingOperators.md#multicast) operator described in more detail in later chapters. +There is also [`PublishLast`](15_PublishingOperators.md#publishlast). This has similar semantics to `LastAsync` but it handles multiple subscriptions differently. Each time you subscribe to the `IObservable` that `LastAsync` returns, it will subscribe to the underlying source, but `PublishLast` makes only a single `Subscribe` call to the underlying source. (To provide control over exactly when this happens, `PublishLast` returns an `IConnectableObservable`. As the [Hot and Cold Sources section of Chapter 2](02_KeyTypes.md#hot-and-cold-sources) described, this provides a `Connect` method, and the connectable observable returned by `PublishLast` subscribes to its underlying source when you call this.) Once this single subscription receives an `OnComplete` notification from the source, it will deliver the final value to all subscribers. (It also remembers the final value, so if any new observers subscribe after the final value has been produced, they will immediately receive that value when they subscribe.) The final value is immediately followed by an `OnCompleted` notification. This is one of a family of operators based on the [`Multicast`](15_PublishingOperators.md#multicast) operator described in more detail in later chapters. -The distinction between these two operators is the same as with `FirstAsync` and `FirstOrDefaultAsync`. If the source completes having produced nothing, `LastAsync` reports an error, whereas `LastOrDefaultAsync` emits the default value for its element type and then completes. +The distinction between `LastAsync` and `LastOrDefaultAsync` is the same as with `FirstAsync` and `FirstOrDefaultAsync`. If the source completes having produced nothing, `LastAsync` reports an error, whereas `LastOrDefaultAsync` emits the default value for its element type and then completes. `PublishLast` handles an empty source differently again: if the source completes without producing any elements, the observable returned by `PublishLast` will do the same—it produces neither an error nor a default value in this scenario. Reporting the final element of a sequence entails a challenge that `First` does not face. It's very easy to know when you've received the first element from a source: if the source produces an element, and it hasn't previously produced an element, then that's the first element right there. This means that operators such as `FirstAsync` can report the first element immediately. But `LastAsync` and `LastOrDefaultAsync` don't have that luxury. If you receive an element from a source, how do you know that it is the last element? In general, you can't know this at the instant that you receive it. You will only know that you have received the last element when the source goes on to invoke your `OnCompleted` method. This won't necessarily happen immediately. An earlier example used `TakeUntil(DateTimeOffset.Now.AddMinutes(5))` to bring a sequence to an end after 5 minutes, and if you do that, it's entirely possible that a significant amount of time might elapse between the final element being emitted, and `TakeUntil` shutting things down. In the AIS scenario, boats might only emit messages once every few minutes, so it's quite plausible that we could end up with `TakeUntil` forwarding a message, and then discovering a few minutes later that the cutoff time has been reached without any further messages coming in. Several minutes could have elapsed between the final `OnNext` and the `OnComplete`. -Because of this. `LastAsync` and `LastOrDefaultAsync` emit nothing at all until their source completes. - -**This has an important consequence:** there might be a significant delay between `LastAsync` receiving the final element from the source, and it forwarding that element to its subscriber. +Because of this. `LastAsync` and `LastOrDefaultAsync` emit nothing at all until their source completes. **This has an important consequence:** there might be a significant delay between `LastAsync` receiving the final element from the source, and it forwarding that element to its subscriber. ### TakeLast Earlier we saw that Rx implements the standard `Take` operator, which forwards up to a specified number of elements from the start of a sequence and then stops. `TakeLast` forwards the elements at the end of a sequence. For example, `TakeLast(3)` asks for the final 3 elements of the source sequence. As with `Take`, `TakeLast` is tolerant of sources that produce too few items—if a source produces fewer than 3 items, `TaskLast(3)` will just forward the entire sequence. -`TaskLast` faces the same challenge as `Last`: it doesn't know when it is near the end of the sequence. It therefore has to hold onto copies of the most recently seen values. Note that it will need enough memory to hold onto however many values you've specified. If you write `TakeLast(1_000_000)`, it will need to allocate a buffer large enough to store 1,000,000 values. It doesn't know if the first element it receives will be one of the final million. It can't know that until either the source completes, or the source has emitted more than 1,000,000 items. When the source finally does complete, `TakeLast` will now know what the final million elements were and will need to pass all of them to its subscriber's `OnNext` method one after another. +`TakeLast` faces the same challenge as `Last`: it doesn't know when it is near the end of the sequence. It therefore has to hold onto copies of the most recently seen values. It needs memory to hold onto however many values you've specified. If you write `TakeLast(1_000_000)`, it will need to allocate a buffer large enough to store 1,000,000 values. It doesn't know if the first element it receives will be one of the final million. It can't know that until either the source completes, or the source has emitted more than 1,000,000 items. When the source finally does complete, `TakeLast` will now know what the final million elements were and will need to pass all of them to its subscriber's `OnNext` method one after another. ### SingleAsync and SingleOrDefaultAsync @@ -232,7 +230,7 @@ LINQ operators typically provide a `Single` operator, for use when a source shou With `SingleAsync`, you will get an error if the source is empty, just like with `FirstAsync` and `LastAsync`, but you will also get an error if the source contains multiple items. There is a `SingleOrDefault` which, like its first/last counterparts, tolerates an empty input sequence, generating a single element with the element type's default value in that case. -`Single` and `SingleAsync` share with `Last` and `LastAsync` the characteristic that they know when they receive an item from the source whether it should be the output. That may seem odd: since `Single` requires the source stream to provide just one item, surely it must know that the item it will deliver to its subscriber will be the first item it receives. This is true, but the thing it doesn't yet know when it receives the first item is whether the source is going to produce a second one. It can't forward the first item unless and until the source completes. We could say that `SingleAsync`'s job is to first verify that the source contains exactly one item, and then to forward that item if it does, but to report an error if it does not. In the error case, `SingleAsync` will know it has gone wrong if it ever receives a second item, so it can immediately call `OnError` on its subscriber at that point. But in the success scenario, it can't know that all is well until the source confirms that nothing more is coming by completing. Only then will `SingleAsync` emit the result. +`Single` and `SingleAsync` share with `Last` and `LastAsync` the characteristic that they don't initially know when they receive an item from the source whether it should be the output. That may seem odd: since `Single` requires the source stream to provide just one item, surely it must know that the item it will deliver to its subscriber will be the first item it receives. This is true, but the thing it doesn't yet know when it receives the first item is whether the source is going to produce a second one. It can't forward the first item unless and until the source completes. We could say that `SingleAsync`'s job is to first verify that the source contains exactly one item, and then to forward that item if it does, but to report an error if it does not. In the error case, `SingleAsync` will know it has gone wrong if it ever receives a second item, so it can immediately call `OnError` on its subscriber at that point. But in the success scenario, it can't know that all is well until the source confirms that nothing more is coming by completing. Only then will `SingleAsync` emit the result. ### Skip and SkipLast @@ -246,7 +244,7 @@ The other key methods to filtering are so similar I think we can look at them as Several of the operators described in the preceding sections end in the name `Async`. This is a little strange because normally, .NET methods that end in `Async` return a `Task` or `Task`, and yet these all return an `IObservable`. Also, as already discussed, each of these methods corresponds to a standard LINQ operator which does not generally end in `Async`. (And to further add to the confusion, some LINQ providers such as Entity Framework Core do include `Async` versions of some of these operators, but they are different. Unlike Rx, these do in fact return a `Task`, so they still produce a single value, and not an `IQueryable` or `IEnumerable`.) This naming arises from an unfortunate choice early in Rx's design. -If Rx were being designed from scratch today, the relevant operators in the preceding section would just have the normal names: `First`, and `FirstOrDefault`, and so on. The reason they all end with `Async` is that these were added in Rx 2.0, and Rx 1.0 had already defined operators with those names. This example shows the `First` operator: +If Rx were being designed from scratch today, the relevant operators in the preceding section would just have the normal names: `First`, and `FirstOrDefault`, and so on. The reason they all end with `Async` is that these were added in Rx 2.0, and Rx 1.0 had already defined operators with those names. This example uses the `First` operator: ```cs int v = Observable.Range(1, 10).First(); @@ -294,13 +292,13 @@ If the sequence has less than 6 elements we just get an empty sequence, but no e ## Temporal Filtering -The `Take` and `TakeLast` operators let us filter out everything except elements either at the very start or very end (and `Skip` and `SkipLast` let see everything but those), but these all require us to know the exact number of elements. What if we want to specify the cut-off not in terms of an element count, but in terms of a particular instant in time? +The `Take` and `TakeLast` operators let us filter out everything except elements either at the very start or very end (and `Skip` and `SkipLast` let us see everything but those), but these all require us to know the exact number of elements. What if we want to specify the cut-off not in terms of an element count, but in terms of a particular instant in time? In fact you've already seen one example: earlier I used `TakeUntil` to convert an endless `IObservable` into one that would complete after five minutes. This is one of a family of operators. ### SkipWhile and TakeWhile -In the [`Skip` and `SkipLast` section](#skip-and-skiplast), I described a sensor that produces garbage values for its first few readings. This is quite common. For example, gas monitoring sensors often need to get some component up to a correct operator temperature before they can produce accurate readings. In the example in that section, I used `Skip(5)` to ignore the first few readings, but that is a crude solution. How do we know that 5 is enough? Or might it be ready sooner, in which case 5 is too few. +In the [`Skip` and `SkipLast` section](#skip-and-skiplast), I described a sensor that produces garbage values for its first few readings. This is quite common. For example, gas monitoring sensors often need to get some component up to a correct operating temperature before they can produce accurate readings. In the example in that section, I used `Skip(5)` to ignore the first few readings, but that is a crude solution. How do we know that 5 is enough? Or might it be ready sooner, in which case 5 is too few. What we really want to do is discard readings until we know the readings will be valid. And that's exactly the kind of scenario that `SkipWhile` can be useful for. Suppose we have a gas sensor that reports concentrations of some particular gas, but which also reports the temperature of the sensor plate that is performing the detection. Instead of hoping that 5 readings is a sensible number to skip, we could express the actual requirement: @@ -374,11 +372,11 @@ Completed ### SkipUntil and TakeUntil -In addition to `SkipWhile` and `TakeWhile`, Rx defines `SkipUntil` and `TakeUntil`. These may sound like nothing more than an alternate expression of the same idea: you might expect `SkipUntil` to do almost exactly the same thing as `SkipWhile`, with the only difference being that `SkipWhile` runs for as long as its predicate returns `true`, whereas `SkipUntil` runs for as long as its predicate returns `false`. And there is an overload of `SkipUntil` that does exactly that (and a corresponding one for `TakeUntil`). If that's all these were they wouldn't be interesting. However, there are overloads of `SkipUtil` and `TakeUntil` that enable us to do things we can't do with `SkipWhile` and `TakeWhile`. +In addition to `SkipWhile` and `TakeWhile`, Rx defines `SkipUntil` and `TakeUntil`. These may sound like nothing more than an alternate expression of the same idea: you might expect `SkipUntil` to do almost exactly the same thing as `SkipWhile`, with the only difference being that `SkipWhile` runs for as long as its predicate returns `true`, whereas `SkipUntil` runs for as long as its predicate returns `false`. And there is an overload of `SkipUntil` that does exactly that (and a corresponding one for `TakeUntil`). If that's all these were they wouldn't be interesting. However, there are overloads of `SkipUntil` and `TakeUntil` that enable us to do things we can't do with `SkipWhile` and `TakeWhile`. You've already seen one example. The [`FirstAsync` and `FirstOrDefaultAsync`](#firstasync-and-firstordefaultasync) included an example that used an overload of `TakeUntil` that accepted a `DateTimeOffset`. This wraps any `IObservable`, returning an `IObservable` that will forward everything from the source until the specified time, at which point it will immediately complete (and will unsubscribe from the underlying source). -We couldn't have achieved this with `TakeWhile`, because that consults its predicate only when the source produces an item. If we want the source to complete at a specific time, the only way we could do that with `TakeWhile` is if its source happens to produce an item at the exact moment we wanted to finish. `TakeWhile` will only ever complete as a result of its source producing an item. `TakeUntil` can complete asynchronously—if we specified a time 5 minutes into the future, it doesn't matter if the source is completely idle when that time arrives. `TakeUntil` will complete anyway. (It relies on Schedulers to be able to do this.) +We couldn't have achieved this with `TakeWhile`, because that consults its predicate only when the source produces an item. If we want the source to complete at a specific time, the only way we could do that with `TakeWhile` is if its source happens to produce an item at the exact moment we wanted to finish. `TakeWhile` will only ever complete as a result of its source producing an item. `TakeUntil` can complete asynchronously—if we specified a time 5 minutes into the future, it doesn't matter if the source is completely idle when that time arrives. `TakeUntil` will complete anyway. (It relies on [Schedulers](11_SchedulingAndThreading.md#schedulers) to be able to do this.) We don't have to use a time, `TakeUntil` offers an overload that accept a second `IObservable`. This enables us to tell it to stop when something interesting happens, without needing to know in advance exactly when that will occur. This overload of `TakeUntil` forwards items from the source until that second `IObservable` produces a value. `SkipUntil` offers a similar overload in which the second `IObservable` determines when it should start forwarding items from the source. @@ -386,7 +384,7 @@ We don't have to use a time, `TakeUntil` offers an overload that accept a second ### Distinct and DistinctUntilChanged -`Distinct` is yet another standard LINQ operator. It removes duplicates from a sequence. To do this, it needs to remember all the values that its source has ever product, so that it can filter out any items that it has seen before. Rx includes an implementation of `Distinct`, and this example uses it to display the unique identifier of vessels generating AIS messages, but ensuring that we only display each such identifier the first time we see it: +`Distinct` is yet another standard LINQ operator. It removes duplicates from a sequence. To do this, it needs to remember all the values that its source has ever produced, so that it can filter out any items that it has seen before. Rx includes an implementation of `Distinct`, and this example uses it to display the unique identifier of vessels generating AIS messages, but ensuring that we only display each such identifier the first time we see it: ```cs IObservable newIds = receiverHost.Messages @@ -396,9 +394,9 @@ IObservable newIds = receiverHost.Messages newIds.Subscribe(id => Console.WriteLine($"New vessel: {id}")); ``` -(This is leaping ahead a little—it uses `Select`, which we'll get to in Chapter XXX. However, this is a very widely used LINQ operator, so you are probably already familiar with it. I'm using it here to extract just the MMSI—the vessel identifier—from the message.) +(This is leaping ahead a little—it uses `Select`, which we'll get to in [the Transformation of Sequences Chapter](06_Transformation.md). However, this is a very widely used LINQ operator, so you are probably already familiar with it. I'm using it here to extract just the MMSI—the vessel identifier—from the message.) -This example is fine if we are only interested in vessels' identifiers. But what if we want to inspect the detail of these messages? How can we retain the ability to see messages only for vessels we've never previously heard of, but still be able to look at the information in those message? The use of `Select` to extract the id stops us from doing this. Fortunately, `Distinct` provides an overload enabling us to change how it determines uniqueness. Instead of getting `Distinct` to look at the values it is processing, we can provide it with a function that lets us pick whatever characteristics we like. So instead of filtering the stream down to values that have never been seen before, we can instead filter the stream down to values that have some particular property of combination of properties we've never seen before. Here's a simple example: +This example is fine if we are only interested in vessels' identifiers. But what if we want to inspect the detail of these messages? How can we retain the ability to see messages only for vessels we've never previously heard of, but still be able to look at the information in those message? The use of `Select` to extract the id stops us from doing this. Fortunately, `Distinct` provides an overload enabling us to change how it determines uniqueness. Instead of getting `Distinct` to look at the values it is processing, we can provide it with a function that lets us pick whatever characteristics we like. So instead of filtering the stream down to values that have never been seen before, we can instead filter the stream down to values that have some particular property or combination of properties we've never seen before. Here's a simple example: ```cs IObservable newVesselMessages = receiverHost.Messages @@ -422,8 +420,8 @@ IObservable statusChanges = receiverHost.Messages .Skip(1); ``` -For example, if the vessel had repeatedly been reporting a status of `AtAnchor`, `DistinctUntilChanged` would drop each such message because the status was the same as it had previously been. But if the status were to change to `UnderwayUsingEngine`, that would cause `DistinctUntilChanged` to let the first message reporting that status through. It would then not allow any further messages through until there was another change in value, either back to `AtAnchor`, or to something else such as `Moored`. (The `Skip(1)` on the end is there because `DistinctUntilChanged` always lets through the very first message it sees. We have no way of knowing whether that actually represents a change in status, but it is very likely not to: ships report their status every few minutes, and change their status much less often, so the first time we receive a report of a ship's status, it probably doesn't represent a change of status. By dropping that first item, we ensure that `statusChanges` provides notifications only when we can be certain that the status changed.) +For example, if the vessel had repeatedly been reporting a status of `AtAnchor`, `DistinctUntilChanged` would drop each such message because the status was the same as it had previously been. But if the status were to change to `UnderwayUsingEngine`, that would cause `DistinctUntilChanged` to let the first message reporting that status through. It would then not allow any further messages through until there was another change in value, either back to `AtAnchor`, or to something else such as `Moored`. (The `Skip(1)` on the end is there because `DistinctUntilChanged` always lets through the very first message it sees. We have no way of knowing whether that actually represents a change in status, but it is very likely not to: ships report their status every few minutes, but they change that status much less often, so the first time we receive a report of a ship's status, it probably doesn't represent a change of status. By dropping that first item, we ensure that `statusChanges` provides notifications only when we can be certain that the status changed.) That was our quick run through of the filtering methods available in Rx. While they are relatively simple, as we have already begun to see, the power in Rx is down to the composability of its operators. -The filter operators are your first stop for managing the potential deluge of data we can face in the information age. We now know how to remove unmatched data, duplicate data or excess data. Next, we will move on to operators that can transform data. \ No newline at end of file +The filter operators are your first stop for managing the potential deluge of data we can face in this information-rich age. We now know how to apply various criteria to remove data. Next, we will move on to operators that can transform data. \ No newline at end of file From 5ef0a6c1a63af58251df7fe59c45cba040fa5b2d Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Wed, 1 Nov 2023 16:50:27 +0000 Subject: [PATCH 064/142] Ch06 update after partial read through --- content/05_Filtering.md | 2 +- content/06_Transformation.md | 38 +++++++++++++++++++----------------- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/content/05_Filtering.md b/content/05_Filtering.md index 1167b69..e98f953 100644 --- a/content/05_Filtering.md +++ b/content/05_Filtering.md @@ -9,7 +9,7 @@ Rx provides us with tools to take potentially vast quantities of events and proc Just before we move on to introducing the new operators, we will quickly define an extension method to help illuminate several of the examples. This `Dump` extension method subscribes to any `IObservable` with handlers that display messages for each notification the source produces. This method takes a `name` argument, which will be shown as part of each message, enabling us to see where events came from in examples that subscribe to more than one source. ```csharp -public static class SampleExtentions +public static class SampleExtensions { public static void Dump(this IObservable source, string name) { diff --git a/content/06_Transformation.md b/content/06_Transformation.md index c4c4f01..0f33753 100644 --- a/content/06_Transformation.md +++ b/content/06_Transformation.md @@ -4,26 +4,26 @@ title: Transformation of sequences # Transformation of sequences -The values from the sequences we consume are not always in the format we need. Sometimes there is too much noise in the data so we strip the values down. Sometimes each value needs to be expanded either into a richer object or into more values. By composing operators, Rx allows you to control the quality as well as the quantity of values in the observable sequences you consume. +The values from the sequences we consume are not always in the format we need. Sometimes there is more information that we need, and we need to pick out just the values of interest. Sometimes each value needs to be expanded either into a richer object or into more values. Up until now, we have looked at creation of sequences, transition into sequences, and, the reduction of sequences by filtering. In this chapter we will look at _transforming_ sequences. ## Select -The classic transformation method is `Select`. It allows you provide a function that takes a value of `TSource` and return a value of `TResult`. The signature for `Select` is nice and simple and suggests that its most common usage is to transform from one type to another type, i.e. `IObservable` to `IObservable`. +The most straightforward transformation method is `Select`. It allows you provide a function that takes a value of `TSource` and return a value of `TResult`. The signature for `Select` reflects its ability to transform a sequence's elements from one type to another type, i.e. `IObservable` to `IObservable`. -```csharp +```cs IObservable Select( this IObservable source, Func selector) ``` -Note that there is no restriction that prevents `TSource` and `TResult` being the same thing. So for our first example, we will take a sequence of integers and transform each value by adding 3, resulting in another sequence of integers. +You don't have to change the type—`TSource` and `TResult` can be the same if you want. This first example transforms a sequence of integers by adding 3, resulting in another sequence of integers. -```csharp -var source = Observable.Range(0, 5); -source.Select(i=>i+3) +```cs +IObservable source = Observable.Range(0, 5); +source.Select(i => i+3) .Dump("+3") ``` @@ -38,11 +38,11 @@ This uses the `Dump` extension method we defined at the start of [the Filtering +3 completed ``` -While this can be useful, more common use is to transform values from one type to another. In this example we transform integer values to characters. +This next example transforms values in a way that changes their type. It converts integer values to characters. -```csharp +```cs Observable.Range(1, 5); - .Select(i =>(char)(i + 64)) + .Select(i => (char)(i + 64)) .Dump("char"); ``` @@ -57,7 +57,7 @@ char --> E char completed ``` -If we really want to take advantage of LINQ we could transform our sequence of integers to a sequence of anonymous types. +This example transforms our sequence of integers to a sequence where the elements have an anonymous type: ```csharp Observable.Range(1, 5) @@ -76,7 +76,7 @@ anon --> { Number = 5, Character = E } anon completed ``` -To further leverage LINQ we could write the above query using [query comprehension syntax](http://www.albahari.com/nutshell/linqsyntax.aspx). +`Select` is one of the standard LINQ operators supported by C#'s query expression syntax, so we could have written that last example like this: ```csharp var query = from i in Observable.Range(1, 5) @@ -85,7 +85,7 @@ var query = from i in Observable.Range(1, 5) query.Dump("anon"); ``` -In Rx, `Select` has another overload. The second overload provides two values to the `selector` function. The additional argument is the element's index in the sequence. Use this method if the index of the element in the sequence is important to your selector function. +In Rx, `Select` has another overload, in which the `selector` function takes two values. The additional argument is the element's index in the sequence. Use this method if the index of the element in the sequence is important to your selector function. ## SelectMany @@ -180,15 +180,15 @@ The order is less odd. It's worth exploring the reasons for this in a little mor ### IEnumerable vs. IObservable SelectMany -`IEnumerable` is pull based—sequences produce elements only when asked. `Enumerable.SelectMany` pulls items from its sources in a very particular order. It begins by asking its source `IEnumerable` (the one returned by `Range` in the preceding example), and then retrieves the first value. `SelectMany` then invokes our callback, passing this first item, and then enumerates everything in the `IEnumerable` our callback returns. Only when it has exhausted this does it ask the source (`Range`) for a second item. Again, it passes that second item to our callback and then fully enumerates the `IEnumerable`, we return, and so on. So we get everything from the first nested sequence first, then everything from the second, etc. +`IEnumerable` is pull based—sequences produce elements only when asked. `Enumerable.SelectMany` pulls items from its sources in a very particular order. It begins by asking its source `IEnumerable` (the one returned by `Range` in the preceding example) for the first value. `SelectMany` then invokes our callback, passing this first item, and then enumerates everything in the `IEnumerable` our callback returns. Only when it has exhausted this does it ask the source (`Range`) for a second item. Again, it passes that second item to our callback and then fully enumerates the `IEnumerable`, we return, and so on. So we get everything from the first nested sequence first, then everything from the second, etc. `Enumerable.SelectMany` is able to proceed in this way for two reasons. First, the pull-based nature of `IEnumerable` enables it to decide on the order in which it processes things. Second, with `IEnumerable` it is normal for operations to block, i.e., not to return until they have something for us. When the preceding example calls `ToList`, it won't return until it has fully populated a `List` with all of the results. -Rx is not like that. First, consumers don't get to tell sources when to produce each item—sources emit items when they are ready to. Second, Rx typically models ongoing processes, so we don't expect method calls to block until they are done. There are some cases where Rx sequences will naturally produce all of their items very quickly and complete as soon as they can, but kinds of information sources that we tend to want model with Rx typically don't behave that way. So most operations in Rx do not block—they immediately return something (such as an `IObservable`, or an `IDisposable` representing a subscription) and will then produce values later. +Rx is not like that. First, consumers don't get to tell sources when to produce each item—sources emit items when they are ready to. Second, Rx typically models ongoing processes, so we don't expect method calls to block until they are done. There are some cases where Rx sequences will naturally produce all of their items very quickly and complete as soon as they can, but the kinds of information sources that we tend to want model with Rx typically don't behave that way. So most operations in Rx do not block—they immediately return something (such as an `IObservable`, or an `IDisposable` representing a subscription) and will then produce values later. -The Rx version of the example we're currently examining is in fact one of these unusual cases where each of the sequences emits items as soon as it can. Logically speaking, all of the nested `IObservable` sequences are in progress concurrently. The result is a mess because each of the observable sources here attempts to produce every element as quickly as the source can consume them. The fact that they end up being interleaved has to do with the way these kinds of observable sources use Rx's _scheduler_ system, which we will describe in chapter XXX. Schedulers ensure that even when we are modelling logically concurrent processes, the rules of Rx are maintained, and observers of the output of `SelectMany` will only be given one item at a time. The following marble diagram shows the events that lead to the scrambled output we see: +The Rx version of the example we're currently examining is in fact one of these unusual cases where each of the sequences emits items as soon as it can. Logically speaking, all of the nested `IObservable` sequences are in progress concurrently. The result is a mess because each of the observable sources here attempts to produce every element as quickly as the source can consume them. The fact that they end up being interleaved has to do with the way these kinds of observable sources use Rx's _scheduler_ system, which we will describe in the [Scheduling and Threading chapter](11_SchedulingAndThreading.md). Schedulers ensure that even when we are modelling logically concurrent processes, the rules of Rx are maintained, and observers of the output of `SelectMany` will only be given one item at a time. The following marble diagram shows the events that lead to the scrambled output we see: -![An Rx marble diagram showing 7 observables. The first illustrates the Range operator producing the values 1 through 5. These are colour coded as follows: green, blue, yellow, red, and pink. These colour correspond to observables further down in the diagram, as will be described shortly. The items in this first observable are not evenly spaced—the 2nd value immediately follows the 1st, but there are gaps before the 3rd, 4th, and 5th items. These gaps correspond with activity shown further down in the diagram. Beneath the first observable is code invoking the SelectMany operator, passing this lamba: "i => new string((char)(i+64),i).ToObservable()". Beneath this are 6 more observables. The first 5 show the individual observables that the lambda produces for each of the inputs. These are colour coded to show how they correspond—the first observable's item is green, to indicate that this observable corresponds to the first item emitted by Range, the second observable's items are blue showing that it corresponds to the second item emitted by Range, and so on with the same colour sequence as described earlier for Range. Each observable's first item is aligned horizontally with the corresponding item from Range, signifying the fact that each one of these observables starts when the Range observable emits a value. These 5 observables show the values produced by the observable returned by the lambda for each of the 5 values from Range. The first of these child observables shows a single item with value 'A', vertically aligned with the value 1 from the Range observable to indicate that this item is produced immediately when Range produces its first value. This child observable then immediately ends, indicating that only one item was produced. The second child observable contains two 'B' values, the third three 'C' values, the fourth four 'D' values and the fifth give 'E' values. The horizontal positioning of these items indicates that all of first 6 observables in the diagram (the Range observable, and the 5 observables produced by the lambda) overlap to some extent. Initially this overlap is minimal: the first of the lambda-produced observables starts at the same time the Range produces its first value so these two observables overlap, but since this first child completes immediately it overlaps with nothing else. The second child starts when Range produces its second value, and manages to produce two values and then completes before anything else happens, so thus far, the child observables produced by the lambda overlap only with the Range one, and not with each other. However, when Range produces its third value, the resulting child observable produces two 'C' values, but the next thing that happens (as denoted by the horizontal position of the items) is that Range manages to produce its 4th value and its corresponding child observable produces the first of its 'D' values next. After this, the third child observable produces its third and final 'C'—so this third child overlaps not just with the Range observable, but also with the fourth child. Then the fourth observable produces its second 'D'. Then the Range produces its fifth and final value, and the corresponding child observable produces its first 'E'. Then the fourth and fifth child observable alternate, producing 'D', 'E' and 'D', at which point the fourth child observable is complete, and now the fifth child observable produces its final three 'E' values without interruption, because by this time it is the only observable still running. At the bottom of the diagram is the 7th observable representing the output of the SelectMany. This shows all the of the values from each of the 5 child observables each with the exact same horizontal position (signifying that the observable returned by SelectMany produces a value whenever any of its child observables produces a value). So we can see that this output observable produces the sequence 'ABBCCDCDEDEDEEE', which is exactly what we saw in the example output earlier.](GraphicsIntro/Ch06-Transformation-MarblesSelect-Many-Marbles.svg) +![An Rx marble diagram showing 7 observables. The first illustrates the Range operator producing the values 1 through 5. These are colour coded as follows: green, blue, yellow, red, and pink. These colours correspond to observables further down in the diagram, as will be described shortly. The items in this first observable are not evenly spaced—the 2nd value immediately follows the 1st, but there are gaps before the 3rd, 4th, and 5th items. These gaps correspond with activity shown further down in the diagram. Beneath the first observable is code invoking the SelectMany operator, passing this lamba: "i => new string((char)(i+64),i).ToObservable()". Beneath this are 6 more observables. The first 5 show the individual observables that the lambda produces for each of the inputs. These are colour coded to show how they correspond—the first observable's item is green, to indicate that this observable corresponds to the first item emitted by Range, the second observable's items are blue showing that it corresponds to the second item emitted by Range, and so on with the same colour sequence as described earlier for Range. Each observable's first item is aligned horizontally with the corresponding item from Range, signifying the fact that each one of these observables starts when the Range observable emits a value. These 5 observables show the values produced by the observable returned by the lambda for each of the 5 values from Range. The first of these child observables shows a single item with value 'A', vertically aligned with the value 1 from the Range observable to indicate that this item is produced immediately when Range produces its first value. This child observable then immediately ends, indicating that only one item was produced. The second child observable contains two 'B' values, the third three 'C' values, the fourth four 'D' values and the fifth give 'E' values. The horizontal positioning of these items indicates that all of first 6 observables in the diagram (the Range observable, and the 5 observables produced by the lambda) overlap to some extent. Initially this overlap is minimal: the first of the lambda-produced observables starts at the same time the Range produces its first value so these two observables overlap, but since this first child completes immediately it overlaps with nothing else. The second child starts when Range produces its second value, and manages to produce two values and then completes before anything else happens, so thus far, the child observables produced by the lambda overlap only with the Range one, and not with each other. However, when Range produces its third value, the resulting child observable produces two 'C' values, but the next thing that happens (as denoted by the horizontal position of the items) is that Range manages to produce its 4th value and its corresponding child observable produces the first of its 'D' values next. After this, the third child observable produces its third and final 'C'—so this third child overlaps not just with the Range observable, but also with the fourth child. Then the fourth observable produces its second 'D'. Then the Range produces its fifth and final value, and the corresponding child observable produces its first 'E'. Then the fourth and fifth child observable alternate, producing 'D', 'E' and 'D', at which point the fourth child observable is complete, and now the fifth child observable produces its final three 'E' values without interruption, because by this time it is the only observable still running. At the bottom of the diagram is the 7th observable representing the output of the SelectMany. This shows all the of the values from each of the 5 child observables each with the exact same horizontal position (signifying that the observable returned by SelectMany produces a value whenever any of its child observables produces a value). So we can see that this output observable produces the sequence 'ABBCCDCDEDEDEEE', which is exactly what we saw in the example output earlier.](GraphicsIntro/Ch06-Transformation-MarblesSelect-Many-Marbles.svg) We can make a small tweak to prevent the child sequences all from trying to run at the same time. (This also uses `Observable.Repeat` instead of the rather indirect route of constructing a `string` and then calling `ToObserable` on that. I did that in earlier examples to emphasize the similarity with the LINQ to Objects example, but you wouldn't really do it that way in Rx.) @@ -222,7 +222,9 @@ chars completed This clarifies that `SelectMany` lets you produce a sequence for each item that the source produces, and to have all of the items from all of those new sequences flattened back out into one sequence that contains everything. While that might make it easier to understand, you wouldn't want to introduce this sort of delay in reality purely for the goal of making it easier to understand. These delays mean it will take about a second and a half for all the elements to emerge. This marble diagram shows that the code above produces a sensible-looking ordering by making each child observable produce a little bunch of items, and we've just introduced dead time to get the separation: -![](GraphicsIntro/Ch06-Transformation-MarblesSelect-Many-Marbles-Delay.svg) +TODO: fix the spacing on the Rang observable! + +![An Rx marble diagram which, like the preceding diagram, shows 7 observables. The first illustrates the Range operator producing the values 1 through 5. These are colour coded as follows: green, blue, yellow, red, and pink. These colours correspond to observables further down in the diagram, as will be described shortly.](GraphicsIntro/Ch06-Transformation-MarblesSelect-Many-Marbles-Delay.svg) I introduced these gaps purely to provide a slightly less confusing example, but if you really wanted this sort of strictly-in-order handling, you wouldn't use `SelectMany` in this way in practice. For one thing, it's not completely guaranteed to work. (If you try this example, but modify it to use shorter and shorter timespans, eventually you reach a point where the items start getting jumbled up again. And since .NET is not a real-time programming system, there's actually no safe timespan you can specific here that absolutely guarantees the ordering.) If you absolutely need all the items from the first child sequence before seeing any from the second, there's actually a robust way to ask for that: From cb085c722b7f323f2118d947fed09e990fab8994 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Thu, 2 Nov 2023 14:28:35 +0000 Subject: [PATCH 065/142] Ch06 updates after read through --- content/06_Transformation.md | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/content/06_Transformation.md b/content/06_Transformation.md index 0f33753..8746c1e 100644 --- a/content/06_Transformation.md +++ b/content/06_Transformation.md @@ -222,11 +222,9 @@ chars completed This clarifies that `SelectMany` lets you produce a sequence for each item that the source produces, and to have all of the items from all of those new sequences flattened back out into one sequence that contains everything. While that might make it easier to understand, you wouldn't want to introduce this sort of delay in reality purely for the goal of making it easier to understand. These delays mean it will take about a second and a half for all the elements to emerge. This marble diagram shows that the code above produces a sensible-looking ordering by making each child observable produce a little bunch of items, and we've just introduced dead time to get the separation: -TODO: fix the spacing on the Rang observable! - ![An Rx marble diagram which, like the preceding diagram, shows 7 observables. The first illustrates the Range operator producing the values 1 through 5. These are colour coded as follows: green, blue, yellow, red, and pink. These colours correspond to observables further down in the diagram, as will be described shortly.](GraphicsIntro/Ch06-Transformation-MarblesSelect-Many-Marbles-Delay.svg) -I introduced these gaps purely to provide a slightly less confusing example, but if you really wanted this sort of strictly-in-order handling, you wouldn't use `SelectMany` in this way in practice. For one thing, it's not completely guaranteed to work. (If you try this example, but modify it to use shorter and shorter timespans, eventually you reach a point where the items start getting jumbled up again. And since .NET is not a real-time programming system, there's actually no safe timespan you can specific here that absolutely guarantees the ordering.) If you absolutely need all the items from the first child sequence before seeing any from the second, there's actually a robust way to ask for that: +I introduced these gaps purely to provide a slightly less confusing example, but if you really wanted this sort of strictly-in-order handling, you wouldn't use `SelectMany` in this way in practice. For one thing, it's not completely guaranteed to work. (If you try this example, but modify it to use shorter and shorter timespans, eventually you reach a point where the items start getting jumbled up again. And since .NET is not a real-time programming system, there's actually no safe timespan you can specific here that guarantees the ordering.) If you absolutely need all the items from the first child sequence before seeing any from the second, there's actually a robust way to ask for that: ```cs Observable @@ -236,7 +234,7 @@ Observable .Dump("chars"); ``` -However, that would not have been a good way to show what `SelectMany` does, since this no longer uses it. (It uses `Concat`, which will be discussed in Chapter XXX.) We use `SelectMany` either when we know we're unwrapping a single-valued sequence, or when we don't have specific ordering requirements, and want to take elements as and when they emerge from child observables. +However, that would not have been a good way to show what `SelectMany` does, since this no longer uses it. (It uses `Concat`, which will be discussed in the [Combining Sequences](09_CombiningSequences.md) chapter.) We use `SelectMany` either when we know we're unwrapping a single-valued sequence, or when we don't have specific ordering requirements, and want to take elements as and when they emerge from child observables. ### The Significance of SelectMany @@ -253,11 +251,11 @@ IObservable onoffs = As you may recall, this example worked by creating a new, short-lived `IObservable` for each item produced by `src`. (These child sequences, represented by the `delta` range variable in the example, produce the value `1`, and then after the specified `minimumActivityPeriod`, they produce `-1`. This enabled us to keep count of the number of recent events emitted.) This is the _fanning out_ part, where items in a source sequence produce new observable sequences. `SelectMany` is crucial in these scenarios because it enables all of those new sequences to be flattened back out into a single output sequence. -The second place I used `SelectMany` was slightly different: it was the final example of the [**Representing Filesystem Events in Rx** section in Chapter 3](./03_CreatingObservableSequences.md#representing-filesystem-events-in-rx). Although that example also combined multiple observable sources into a single observable, that list of observables was fixed: there was one for each of the different events from `FileSystemWatcher`. It used a different operator `Merge` (which we'll get to in XXX), which was simpler to use in that scenario because you just pass it the list of all the observables you'd like to combine. However, because of a few other things this code wanted to do (including deferred startup, automated disposal, and sharing a single source when multiple subscribers were active), the particular combination of operators used to achieve this meant our merging code that returned an `IObservable`, needed to be invoked as a transforming step. If we'd just used `Select`, the result would have been an `IObservable>`. The structure of the code meant that it would only ever produce a single `IObservable`, so the double-wrapped type would be rather inconvenient. `SelectMany` is very useful in these scenarios—if composition of operators has introduced an extra layer of observables-in-observables that you don't want, `SelectMany` can unwrap one layer for you. +The second place I used `SelectMany` was slightly different: it was the final example of the [**Representing Filesystem Events in Rx** section in Chapter 3](./03_CreatingObservableSequences.md#representing-filesystem-events-in-rx). Although that example also combined multiple observable sources into a single observable, that list of observables was fixed: there was one for each of the different events from `FileSystemWatcher`. It used a different operator `Merge` (which we'll get to in [Combining Sequences](09_CombiningSequences.md)), which was simpler to use in that scenario because you just pass it the list of all the observables you'd like to combine. However, because of a few other things this code wanted to do (including deferred startup, automated disposal, and sharing a single source when multiple subscribers were active), the particular combination of operators used to achieve this meant our merging code that returned an `IObservable`, needed to be invoked as a transforming step. If we'd just used `Select`, the result would have been an `IObservable>`. The structure of the code meant that it would only ever produce a single `IObservable`, so the double-wrapped type would be rather inconvenient. `SelectMany` is very useful in these scenarios—if composition of operators has introduced an extra layer of observables-in-observables that you don't want, `SelectMany` can unwrap one layer for you. These two cases—fanning out then back in, and removing or avoiding a layer of observables of observables—come up quite often, which makes `SelectMany` an important method. (It's not surprising that I was unable to avoid using it in earlier examples.) -As it happens, `SelectMany` is also a particularly important operator in the mathematical theory that Rx is based on. It is a fundamental operator, in the sense that it is possible to build many other Rx operators with it. [Section XXX in Appendix C](./C_AlgebraicUnderpinnings) shows how you can implement `Select` and `Where` using `SelectMany`. +As it happens, `SelectMany` is also a particularly important operator in the mathematical theory that Rx is based on. It is a fundamental operator, in the sense that it is possible to build many other Rx operators with it. [Section 'Recreating other operators with `SelectMany`' in Appendix D](./D_AlgebraicUnderpinnings.md#recreating-other-operators-with-selectmany) shows how you can implement `Select` and `Where` using `SelectMany`. ## Cast @@ -269,7 +267,7 @@ IObservable type3 = receiverHost.Messages .Cast(); ``` -This uses `Cast`, a standard LINQ operator that we can use whenever we know that the items in some collection are of some more specific type than the type system ahs been able to deduce. +This uses `Cast`, a standard LINQ operator that we can use whenever we know that the items in some collection are of some more specific type than the type system has been able to deduce. The difference between `Cast` and the [`OfType` operator shown in Chapter 5](./05_Filtering.md#oftype) is the way in which they handle items that are not of the specified type. `OfType` is a filtering operator, so it just filters out any items that are not of the specified type. But with `Cast` (as with a normal C# cast expression) we are asserting that we expect the source items to be of the specified type, so the observable returned by `Cast` will invoke its subscriber's `OnError` if its source produces an item that is not compatible with the specified type. @@ -280,7 +278,7 @@ This distinction might be easier to see if we recreate the functionality of `Cas source.Select(i => (int)i); // source.OfType(); -source.Where(i=> i is int).Select(i=>(int)i); +source.Where(i => i is int).Select(i => (int)i); ``` ## Materialize and Dematerialize @@ -313,7 +311,7 @@ Note that when the source sequence completes, the materialized sequence produces * OnErrorNotification * OnCompletedNotification -`Notification` exposes four public properties to help you discover it: `Kind`, `HasValue`, `Value` and `Exception`. Obviously only `OnNextNotification` will return true for `HasValue` and have a useful implementation of `Value`. It should also be obvious that `OnErrorNotification` is the only implementation that will have a value for `Exception`. The `Kind` property returns an `enum` which should allow you to know which methods are appropriate to use. +`Notification` exposes four public properties to help you inspect it: `Kind`, `HasValue`, `Value` and `Exception`. Obviously only `OnNextNotification` will return true for `HasValue` and have a useful implementation of `Value`. Similarly, `OnErrorNotification` is the only implementation that will have a value for `Exception`. The `Kind` property returns an `enum` which allows you to know which methods are appropriate to use. ```csharp public enum NotificationKind From 897b21bc71895d4433873e1070d5d56e0bd78f53 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Thu, 2 Nov 2023 15:54:27 +0000 Subject: [PATCH 066/142] Handle various TODOs --- content/06_Transformation.md | 4 +- content/08_Partitioning.md | 21 +- content/09_CombiningSequences.md | 33 +- ...ion-Marbles-Select-Many-Marbles-Delay.svg} | 0 ...formation-Marbles-Select-Many-Marbles.svg} | 0 ...08-Partitioning-Marbles-Buffer-Marbles.svg | 91 + .../Ch08-Partitioning-Marbles.ai | 1516 ++++++++++++++ ...CombiningSequences-Marbles-Amb-Marbles.svg | 107 + ...ngSequences-Marbles-Concat-Hot-Marbles.svg | 103 + ...biningSequences-Marbles-Concat-Marbles.svg | 111 ++ ...mbiningSequences-Marbles-Merge-Marbles.svg | 95 + .../Ch09-CombiningSequences-Marbles.ai | 1757 +++++++++++++++++ content/GraphicsIntro/Marbles-Swatch.ai | 1254 ++++++++++++ 13 files changed, 5047 insertions(+), 45 deletions(-) rename content/GraphicsIntro/{Ch06-Transformation-MarblesSelect-Many-Marbles-Delay.svg => Ch06-Transformation-Marbles-Select-Many-Marbles-Delay.svg} (100%) rename content/GraphicsIntro/{Ch06-Transformation-MarblesSelect-Many-Marbles.svg => Ch06-Transformation-Marbles-Select-Many-Marbles.svg} (100%) create mode 100644 content/GraphicsIntro/Ch08-Partitioning-Marbles-Buffer-Marbles.svg create mode 100644 content/GraphicsIntro/Ch08-Partitioning-Marbles.ai create mode 100644 content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Amb-Marbles.svg create mode 100644 content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Concat-Hot-Marbles.svg create mode 100644 content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Concat-Marbles.svg create mode 100644 content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Merge-Marbles.svg create mode 100644 content/GraphicsIntro/Ch09-CombiningSequences-Marbles.ai create mode 100644 content/GraphicsIntro/Marbles-Swatch.ai diff --git a/content/06_Transformation.md b/content/06_Transformation.md index 8746c1e..46d74f9 100644 --- a/content/06_Transformation.md +++ b/content/06_Transformation.md @@ -188,7 +188,7 @@ Rx is not like that. First, consumers don't get to tell sources when to produce The Rx version of the example we're currently examining is in fact one of these unusual cases where each of the sequences emits items as soon as it can. Logically speaking, all of the nested `IObservable` sequences are in progress concurrently. The result is a mess because each of the observable sources here attempts to produce every element as quickly as the source can consume them. The fact that they end up being interleaved has to do with the way these kinds of observable sources use Rx's _scheduler_ system, which we will describe in the [Scheduling and Threading chapter](11_SchedulingAndThreading.md). Schedulers ensure that even when we are modelling logically concurrent processes, the rules of Rx are maintained, and observers of the output of `SelectMany` will only be given one item at a time. The following marble diagram shows the events that lead to the scrambled output we see: -![An Rx marble diagram showing 7 observables. The first illustrates the Range operator producing the values 1 through 5. These are colour coded as follows: green, blue, yellow, red, and pink. These colours correspond to observables further down in the diagram, as will be described shortly. The items in this first observable are not evenly spaced—the 2nd value immediately follows the 1st, but there are gaps before the 3rd, 4th, and 5th items. These gaps correspond with activity shown further down in the diagram. Beneath the first observable is code invoking the SelectMany operator, passing this lamba: "i => new string((char)(i+64),i).ToObservable()". Beneath this are 6 more observables. The first 5 show the individual observables that the lambda produces for each of the inputs. These are colour coded to show how they correspond—the first observable's item is green, to indicate that this observable corresponds to the first item emitted by Range, the second observable's items are blue showing that it corresponds to the second item emitted by Range, and so on with the same colour sequence as described earlier for Range. Each observable's first item is aligned horizontally with the corresponding item from Range, signifying the fact that each one of these observables starts when the Range observable emits a value. These 5 observables show the values produced by the observable returned by the lambda for each of the 5 values from Range. The first of these child observables shows a single item with value 'A', vertically aligned with the value 1 from the Range observable to indicate that this item is produced immediately when Range produces its first value. This child observable then immediately ends, indicating that only one item was produced. The second child observable contains two 'B' values, the third three 'C' values, the fourth four 'D' values and the fifth give 'E' values. The horizontal positioning of these items indicates that all of first 6 observables in the diagram (the Range observable, and the 5 observables produced by the lambda) overlap to some extent. Initially this overlap is minimal: the first of the lambda-produced observables starts at the same time the Range produces its first value so these two observables overlap, but since this first child completes immediately it overlaps with nothing else. The second child starts when Range produces its second value, and manages to produce two values and then completes before anything else happens, so thus far, the child observables produced by the lambda overlap only with the Range one, and not with each other. However, when Range produces its third value, the resulting child observable produces two 'C' values, but the next thing that happens (as denoted by the horizontal position of the items) is that Range manages to produce its 4th value and its corresponding child observable produces the first of its 'D' values next. After this, the third child observable produces its third and final 'C'—so this third child overlaps not just with the Range observable, but also with the fourth child. Then the fourth observable produces its second 'D'. Then the Range produces its fifth and final value, and the corresponding child observable produces its first 'E'. Then the fourth and fifth child observable alternate, producing 'D', 'E' and 'D', at which point the fourth child observable is complete, and now the fifth child observable produces its final three 'E' values without interruption, because by this time it is the only observable still running. At the bottom of the diagram is the 7th observable representing the output of the SelectMany. This shows all the of the values from each of the 5 child observables each with the exact same horizontal position (signifying that the observable returned by SelectMany produces a value whenever any of its child observables produces a value). So we can see that this output observable produces the sequence 'ABBCCDCDEDEDEEE', which is exactly what we saw in the example output earlier.](GraphicsIntro/Ch06-Transformation-MarblesSelect-Many-Marbles.svg) +![An Rx marble diagram showing 7 observables. The first illustrates the Range operator producing the values 1 through 5. These are colour coded as follows: green, blue, yellow, red, and pink. These colours correspond to observables further down in the diagram, as will be described shortly. The items in this first observable are not evenly spaced—the 2nd value immediately follows the 1st, but there are gaps before the 3rd, 4th, and 5th items. These gaps correspond with activity shown further down in the diagram. Beneath the first observable is code invoking the SelectMany operator, passing this lamba: "i => new string((char)(i+64),i).ToObservable()". Beneath this are 6 more observables. The first 5 show the individual observables that the lambda produces for each of the inputs. These are colour coded to show how they correspond—the first observable's item is green, to indicate that this observable corresponds to the first item emitted by Range, the second observable's items are blue showing that it corresponds to the second item emitted by Range, and so on with the same colour sequence as described earlier for Range. Each observable's first item is aligned horizontally with the corresponding item from Range, signifying the fact that each one of these observables starts when the Range observable emits a value. These 5 observables show the values produced by the observable returned by the lambda for each of the 5 values from Range. The first of these child observables shows a single item with value 'A', vertically aligned with the value 1 from the Range observable to indicate that this item is produced immediately when Range produces its first value. This child observable then immediately ends, indicating that only one item was produced. The second child observable contains two 'B' values, the third three 'C' values, the fourth four 'D' values and the fifth give 'E' values. The horizontal positioning of these items indicates that all of first 6 observables in the diagram (the Range observable, and the 5 observables produced by the lambda) overlap to some extent. Initially this overlap is minimal: the first of the lambda-produced observables starts at the same time the Range produces its first value so these two observables overlap, but since this first child completes immediately it overlaps with nothing else. The second child starts when Range produces its second value, and manages to produce two values and then completes before anything else happens, so thus far, the child observables produced by the lambda overlap only with the Range one, and not with each other. However, when Range produces its third value, the resulting child observable produces two 'C' values, but the next thing that happens (as denoted by the horizontal position of the items) is that Range manages to produce its 4th value and its corresponding child observable produces the first of its 'D' values next. After this, the third child observable produces its third and final 'C'—so this third child overlaps not just with the Range observable, but also with the fourth child. Then the fourth observable produces its second 'D'. Then the Range produces its fifth and final value, and the corresponding child observable produces its first 'E'. Then the fourth and fifth child observable alternate, producing 'D', 'E' and 'D', at which point the fourth child observable is complete, and now the fifth child observable produces its final three 'E' values without interruption, because by this time it is the only observable still running. At the bottom of the diagram is the 7th observable representing the output of the SelectMany. This shows all the of the values from each of the 5 child observables each with the exact same horizontal position (signifying that the observable returned by SelectMany produces a value whenever any of its child observables produces a value). So we can see that this output observable produces the sequence 'ABBCCDCDEDEDEEE', which is exactly what we saw in the example output earlier.](GraphicsIntro/Ch06-Transformation-Marbles-Select-Many-Marbles.svg) We can make a small tweak to prevent the child sequences all from trying to run at the same time. (This also uses `Observable.Repeat` instead of the rather indirect route of constructing a `string` and then calling `ToObserable` on that. I did that in earlier examples to emphasize the similarity with the LINQ to Objects example, but you wouldn't really do it that way in Rx.) @@ -222,7 +222,7 @@ chars completed This clarifies that `SelectMany` lets you produce a sequence for each item that the source produces, and to have all of the items from all of those new sequences flattened back out into one sequence that contains everything. While that might make it easier to understand, you wouldn't want to introduce this sort of delay in reality purely for the goal of making it easier to understand. These delays mean it will take about a second and a half for all the elements to emerge. This marble diagram shows that the code above produces a sensible-looking ordering by making each child observable produce a little bunch of items, and we've just introduced dead time to get the separation: -![An Rx marble diagram which, like the preceding diagram, shows 7 observables. The first illustrates the Range operator producing the values 1 through 5. These are colour coded as follows: green, blue, yellow, red, and pink. These colours correspond to observables further down in the diagram, as will be described shortly.](GraphicsIntro/Ch06-Transformation-MarblesSelect-Many-Marbles-Delay.svg) +![An Rx marble diagram which, like the preceding diagram, shows 7 observables. The first illustrates the Range operator producing the values 1 through 5. These are colour coded as follows: green, blue, yellow, red, and pink. These colours correspond to observables further down in the diagram, as will be described shortly.](GraphicsIntro/Ch06-Transformation-Marbles-Select-Many-Marbles-Delay.svg) I introduced these gaps purely to provide a slightly less confusing example, but if you really wanted this sort of strictly-in-order handling, you wouldn't use `SelectMany` in this way in practice. For one thing, it's not completely guaranteed to work. (If you try this example, but modify it to use shorter and shorter timespans, eventually you reach a point where the items start getting jumbled up again. And since .NET is not a real-time programming system, there's actually no safe timespan you can specific here that guarantees the ordering.) If you absolutely need all the items from the first child sequence before seeing any from the second, there's actually a robust way to ask for that: diff --git a/content/08_Partitioning.md b/content/08_Partitioning.md index fa9793b..ce57738 100644 --- a/content/08_Partitioning.md +++ b/content/08_Partitioning.md @@ -282,7 +282,7 @@ So this will wait until the source has produce 4 suitable messages (i.e., messag This marble diagram illustrates the behaviour for `Buffer(4, 1)`. -TODO: MARBLE DIAGRAM! +![A marble diagram showing two sequences. The first is labelled "Range(1,6)" and shows the numbers 1 to 6. The second is labelled ".Buffer(4,1)", and it shows three events. The colour coding and horizontal position indicate that these emerge at the same time as he final three events in the top diagram. The first event on this second sequence contains a list of numbers, "1,2,3,4", the second shows "2,3,4,5" and the third shows "3,4,5,6".](GraphicsIntro/Ch08-Partitioning-Marbles-Buffer-Marbles.svg) If we fed this into the same `recentAverageSpeed` expression as the earlier example, we'd still get no output until the 4th suitable message emerges from the source, but from then on, every single suitable message to emerge from the source will emit a new average value. These average values will still always report the average of the 4 most recently reported speeds, but we will now get these averages four times as often. @@ -332,23 +332,17 @@ The `Window` operator is very similar to the `Buffer`. It can split the input in Because `Buffer` returns an `IObservable>`, it can't produce a chunk until it has all of the elements that will go into that chunk. `IList` supports random access—you can ask it how many elements it has, and you can retrieve any element by numeric index, and we expect these operations to complete immediately. (It would be technically possible to write an implementation of `IList` representing as yet unreceived data, and to make its `Count` and indexer properties block if you try to use them before that data is available, but this would be a strange thing to do. Developers expect lists to return information immediately.) So if you write, say, `Buffer(4)`, it can't produce anything until it has all 4 items that will constitute the first chunk. -But because `Window` returns an observable that produces a nested observable to represent each chunk, it can emit that before necessarily having all of the elements. In fact, it emits a new window as soon as it knows it will need one. If you use `Window(4, 1)` for example, the observable it returns emits its first nested observable immediately. And then as soon as the source produces its first element, that nested observable will emit that element, and then the second nested observable will be produced. We passed `1` as the 2nd argument to `Window`, so we get a new window for every element the source produces. As soon as the first element has been emitted, the next item the source emits will appear in the second window (and also the first, since we've specified overlapping windows in this case), so the second window is effectively _open_ from immediately after the emergence of the first element. So the `IObservable>` that `Window` return produces a new ``IObservable` at that point. +But because `Window` returns an observable that produces a nested observable to represent each chunk, it can emit that before necessarily having all of the elements. In fact, it emits a new window as soon as it knows it will need one. If you use `Window(4, 1)` for example, the observable it returns emits its first nested observable immediately. And then as soon as the source produces its first element, that nested observable will emit that element, and then the second nested observable will be produced. We passed `1` as the 2nd argument to `Window`, so we get a new window for every element the source produces. As soon as the first element has been emitted, the next item the source emits will appear in the second window (and also the first, since we've specified overlapping windows in this case), so the second window is effectively _open_ from immediately after the emergence of the first element. So the `IObservable>` that `Window` return produces a new `IObservable` at that point. Nested observables produce their items as and when they become available. They complete once `Window` knows there will be no further items in that window (i.e., at exactly the same point `Buffer` would have produced the completed `IList` for that window.) -`Window` can seem like it is better than `Buffer` because it lets you get your hands on the individual items in a chunk the instant they are available. However, if you were doing calculations that required access to every single item in the chunk, this doesn't necessarily help you. You're not going to be able to complete your processing until you've received every item in the chunk, so you're not going to produce a final result any earlier, and your code might be more complicated because it can no longer count on having an `IList` conveniently making all of the items available at once. However, if you're calcluating some sort of aggregation over the items in a chunk, `Window` might be more efficient because it enables you to process each item as it emerges and then discard it. If a chunk is very large, `Buffer` would have to hold onto every item until the chunk completes, which might use more memory. Moreover, in cases where you don't necessarily need to see every item in a chunk before you can do something useful with those items, `Window` might enable you to avoid introducing processing delays. +`Window` can seem like it is better than `Buffer` because it lets you get your hands on the individual items in a chunk the instant they are available. However, if you were doing calculations that required access to every single item in the chunk, this doesn't necessarily help you. You're not going to be able to complete your processing until you've received every item in the chunk, so you're not going to produce a final result any earlier, and your code might be more complicated because it can no longer count on having an `IList` conveniently making all of the items available at once. However, if you're calculating some sort of aggregation over the items in a chunk, `Window` might be more efficient because it enables you to process each item as it emerges and then discard it. If a chunk is very large, `Buffer` would have to hold onto every item until the chunk completes, which might use more memory. Moreover, in cases where you don't necessarily need to see every item in a chunk before you can do something useful with those items, `Window` might enable you to avoid introducing processing delays. -`Window` doesn't help us in the AIS `NavigationStatus` example, because the goal there was to report both the _before_ and _after_ status for each change. We can't do that until we know what the _after_ value is, so we would get no benefit from receiving the _before_ value earlier. We need the second value to do what we're trying to do, so we might as well use `Buffer` because it's easier. +`Window` doesn't help us in the AIS `NavigationStatus` example, because the goal there was to report both the _before_ and _after_ status for each change. We can't do that until we know what the _after_ value is, so we would get no benefit from receiving the _before_ value earlier. We need the second value to do what we're trying to do, so we might as well use `Buffer` because it's easier. But if you wanted to keep track of the number of distinct vessels that have reported movement so far today, `Window` would be an appropriate mechanism: you could set it up to produce one window per day, and you would be able to start seeing information within each window without needing to wait until the end of the day. -TODO: need a good example for when you might actually use `Window`. +In addition to supporting simple count-based or duration-based splitting, there are more flexible ways to define the window boundaries, such as this overload: -TODO: this next bit was imported from Sequences of Coincidence (now dropped), and needs to be edited - -### Customizing windows - -The overloads above provide simple ways to break a sequence into smaller nested windows using a count and/or a time span. Now we will look at the other overloads, that provide more flexibility over how windows are managed. - -```csharp +```cs // Projects each element of an observable sequence into consecutive non-overlapping windows. // windowClosingSelector : A function invoked to define the boundaries of the produced // windows. A new window is started when the previous one is closed. @@ -502,5 +496,4 @@ public static IObservable> MyBuffer(this IObservable source, int It may be an interesting exercise to try implementing other time shifting methods, like `Sample` or `Throttle`, with `Window`. - -TODO: summary for this chapter. \ No newline at end of file +We've seen a few useful ways to spread a single stream of items across multiple output sequences, using either data-driven grouping criteria, or time-based chunking with either `Buffer` or `Window`. In the next chapter, we'll look at operators that can combine together data from multiple streams. \ No newline at end of file diff --git a/content/09_CombiningSequences.md b/content/09_CombiningSequences.md index 488a0bf..8a7838a 100644 --- a/content/09_CombiningSequences.md +++ b/content/09_CombiningSequences.md @@ -35,23 +35,13 @@ IDisposable sub = c.Subscribe(Console.WriteLine, x => Console.WriteLine("Error: This marble diagram shows the items emerging from the two sources, `s1` and `s2`, and how `Concat` combines them into the result, `c`: -TODO: draw properly -``` -s1 0-1-2| -s2 5-6-7-8-9| -c 0-1-2-5-6-7-8-9| -``` +![](./GraphicsIntro/Ch09-CombiningSequences-Marbles-Concat-Marbles.svg) Rx's `Concat` does nothing with its sources until something subscribes to the `IObservable` it returns. So in this case, when we call `Subscribe` on `c` (the source returned by `Concat`) it will subscribe to its first input, `s1`, and each time that produces a value, the `c` observable will emit that same value to its subscriber. If we went on to call `sub.Dispose()` before `s1` completes, `Concat` would unsubscribe from the first source, and would never subscribe to `s2`. If `s1` were to report an error, `c` would report that same error to is subscriber, and again, it will never subscribe to `s2`. Only if `s1` completes will the `Concat` operator subscribe to `s2`, at which point it will forward any items that second input produces until either the second source completes or fails, or the application unsubscribes from the concatenated observable. Although Rx's `Concat` has the same logical behaviour as the [LINQ to Objects `Concat`](https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable.concat), there are some Rx-specific details to be aware of. In particular, timing is often more significant in Rx than with other LINQ implementations. For example, in Rx we distinguish between [_hot_ and _cold_ source](02_KeyTypes.md#hot-and-cold-sources). With a cold source it typically doesn't matter exactly when you subscribe, but hot sources are essentially live, so you only get notified of things that happen while you are subscribed. This can mean that hot sources might not be a good fit with `Concat` The following marble diagram illustrates a scenario in which this produces results that have the potential to surprise: -TODO: create marble diagram like this: -``` -cold |--0--1--2-| -hot |---A---B---C---D---E-| -Concat(cold, hot) |--0--1--2--C---D---E-| -``` +![](./GraphicsIntro/Ch09-CombiningSequences-Marbles-Concat-Hot-Marbles.svg) Since `Concat` doesn't subscribe to its second input until the first has finished, it won't see the first couple of items that the `hot` source would deliver to any subscribers that been listening from the start. This might not be the behaviour you would expect: it certainly doesn't look like this concatenated all of the items from the first sequence with all of the items from the second one. It looks like it missed out `A` and `B` from `hot`. @@ -313,14 +303,7 @@ A common use case for `Amb` is when you want to produce some sort of result as q To illustrate `Amb`'s behaviour, here's a marble diagram showing three sequences, `s1`, `s2`, and `s3`, each able to produce a sequence values. The line labelled `r` shows the result of passing all three sequences into `Amb`. As you can see, `r` provides exactly the same notifications as `s1`. This is because in this example, `s1` was the first sequence to produce a value. -TODO: draw properly. - -``` -s1 -1---2----3--4| -s2 --99--88-| -s3 ----8---7--6---| -r -1---2----3--4| -``` +![](GraphicsIntro/Ch09-CombiningSequences-Marbles-Amb-Marbles.svg) This code creates exactly the situation described in that marble diagram, to verify that this is indeed how `Amb` behaves: @@ -422,13 +405,7 @@ The `Merge` extension method takes multiple sequences as its input. Any time any Since `Merge` returns a single observable sequence that includes all of the values from all of its input sequences, there's a sense in which it is similar to `Concat`. But whereas `Concat` waits until each input sequence completes before moving onto the next, `Merge` supports concurrently active sequences. As soon as you subscribe to the observable returned by `Merge`, it immediately subscribes to all of its inputs, forwarding everything any of them produces. This marble diagram shows two sequences, `s1` and `s2`, running concurrently and `r` shows the effect of combining these with `Merge`—the values from both source sequences emerge from the merged sequence. -TODO: draw. - -``` -s1 --1--1--1--| -s2 ---2---2---2| -r --12-1-21--2| -``` +![](GraphicsIntro/Ch09-CombiningSequences-Marbles-Merge-Marbles.svg) The result of a `Merge` will complete only once all input sequences complete. However, the `Merge` operator will error if any of the input sequences terminates erroneously (at which point it will unsubscribe from all its other inputs). @@ -832,8 +809,6 @@ var systemStatus = webServerStatus .StartWith(false); ``` -TODO: these next two sequences were relocated from the now-dropped Sequences of Coincidence chapter. They need editing - ## Join The `Join` operator allows you to logically join two sequences. Whereas the `Zip` operator would pair values from the two sequences together by index, the `Join` operator allows you join sequences by intersecting windows. Like the `Window` overload we just looked at, you can specify when a window should close via an observable sequence; this sequence is returned from a function that takes an opening value. The `Join` operator has two such functions, one for the first source sequence and one for the second source sequence. Like the `Zip` operator, we also need to provide a selector function to produce the result item from the pair of values. diff --git a/content/GraphicsIntro/Ch06-Transformation-MarblesSelect-Many-Marbles-Delay.svg b/content/GraphicsIntro/Ch06-Transformation-Marbles-Select-Many-Marbles-Delay.svg similarity index 100% rename from content/GraphicsIntro/Ch06-Transformation-MarblesSelect-Many-Marbles-Delay.svg rename to content/GraphicsIntro/Ch06-Transformation-Marbles-Select-Many-Marbles-Delay.svg diff --git a/content/GraphicsIntro/Ch06-Transformation-MarblesSelect-Many-Marbles.svg b/content/GraphicsIntro/Ch06-Transformation-Marbles-Select-Many-Marbles.svg similarity index 100% rename from content/GraphicsIntro/Ch06-Transformation-MarblesSelect-Many-Marbles.svg rename to content/GraphicsIntro/Ch06-Transformation-Marbles-Select-Many-Marbles.svg diff --git a/content/GraphicsIntro/Ch08-Partitioning-Marbles-Buffer-Marbles.svg b/content/GraphicsIntro/Ch08-Partitioning-Marbles-Buffer-Marbles.svg new file mode 100644 index 0000000..855480e --- /dev/null +++ b/content/GraphicsIntro/Ch08-Partitioning-Marbles-Buffer-Marbles.svg @@ -0,0 +1,91 @@ + + + + + + + Range(1, 6) + .Buffer(4, 1) + + + + + 1 + + + + 2 + + + + 3 + + + + 4 + + + + 5 + + + + 6 + + + + + 1,2,3,4 + 2,3,4,5 + + 3,4,5,6 + \ No newline at end of file diff --git a/content/GraphicsIntro/Ch08-Partitioning-Marbles.ai b/content/GraphicsIntro/Ch08-Partitioning-Marbles.ai new file mode 100644 index 0000000..09ca5d7 --- /dev/null +++ b/content/GraphicsIntro/Ch08-Partitioning-Marbles.ai @@ -0,0 +1,1516 @@ +%PDF-1.6 % +1 0 obj <> endobj 2 0 obj <>stream + + + + + application/vnd.adobe.illustrator + + + Ch08-Partitioning-Marbles + + + Adobe Illustrator 28.0 (Windows) + 2023-11-02T14:40:45+01:00 + 2023-11-02T15:14:08Z + 2023-11-02T15:14:08Z + + + + 256 + 192 + JPEG + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAwAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXjXkX83/M2vazo Ns9xpGpjVbm/g1TSdOhmS80uK0aVYri5kNzcpxk9JdnjjryHGuKvQZfzF8oRa3Host5JHeS3P1GK RrW6Fq13Sv1dbwxfVTL/AJHqcq7UriqDi/Nz8v5dWfSo9TdruPUDpEzfVbv0I78SGL6tJcGL0Edn UhAzjl+zXFW9e/NryHoN9c2Wo304ns5IoLs21jfXccU9wAYYXltoJo1lfkOKFuW/TFURrP5meStG vZLLUb94ZrdIpb1ltrqWK1Sf+6a8miieK1DdvWZcVQvmzzHqzeZtC8paBMkF/qSyahqF+VEv1fTb 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 ERURQqKAFUCgAGwAAyxg3irsVdir/9k= + + + + default + uuid:65E6390686CF11DBA6E2D887CEACB407 + xmp.did:6d601e58-17dd-9b47-826d-deaa351f2a23 + uuid:793c63f3-74b9-48e0-a041-16fbce425bea + + xmp.iid:d5e0e1a1-24df-8f4c-9817-d3a41a08c4f3 + xmp.did:d5e0e1a1-24df-8f4c-9817-d3a41a08c4f3 + uuid:65E6390686CF11DBA6E2D887CEACB407 + proof:pdf + + + + + saved + xmp.iid:14709273-42b8-4844-95f8-dd7dcca7f08e + 2023-05-24T06:57:15+01:00 + Adobe Illustrator 27.5 (Windows) + / + + + saved + xmp.iid:6d601e58-17dd-9b47-826d-deaa351f2a23 + 2023-11-02T14:40:39Z + Adobe Illustrator 28.0 (Windows) + / + + + + Web + Document + Adobe Illustrator + 1 + False + False + + 227.366972 + 191.018349 + Pixels + + + + + Consolas + Consolas + Regular + Open Type + Version 7.00 + False + consola.ttf + + + Tahoma + Tahoma + Regular + Open Type + Version 7.01 + False + tahoma.ttf + + + + + + Cyan + Magenta + Yellow + Black + + + + + + Default Swatch Group + 0 + + + + White + RGB + PROCESS + 255 + 255 + 255 + + + Black + RGB + PROCESS + 0 + 0 + 0 + + + code keyword + PROCESS + 100.000000 + RGB + 44 + 50 + 200 + + + RGB Red + RGB + PROCESS + 255 + 0 + 0 + + + RGB Yellow + RGB + PROCESS + 255 + 255 + 0 + + + RGB Green + RGB + PROCESS + 0 + 255 + 0 + + + RGB Cyan + RGB + PROCESS + 0 + 255 + 255 + + + RGB Blue + RGB + PROCESS + 0 + 0 + 255 + + + RGB Magenta + RGB + PROCESS + 255 + 0 + 255 + + + R=193 G=39 B=45 + RGB + PROCESS + 193 + 39 + 45 + + + R=237 G=28 B=36 + RGB + PROCESS + 237 + 28 + 36 + + + R=241 G=90 B=36 + RGB + PROCESS + 241 + 90 + 36 + + + R=247 G=147 B=30 + RGB + PROCESS + 247 + 147 + 30 + + + R=251 G=176 B=59 + RGB + PROCESS + 251 + 176 + 59 + + + R=252 G=238 B=33 + RGB + PROCESS + 252 + 238 + 33 + + + R=217 G=224 B=33 + RGB + PROCESS + 217 + 224 + 33 + + + R=140 G=198 B=63 + RGB + PROCESS + 140 + 198 + 63 + + + R=57 G=181 B=74 + RGB + PROCESS + 57 + 181 + 74 + + + R=0 G=146 B=69 + RGB + PROCESS + 0 + 146 + 69 + + + R=0 G=104 B=55 + RGB + PROCESS + 0 + 104 + 55 + + + R=34 G=181 B=115 + RGB + PROCESS + 34 + 181 + 115 + + + R=0 G=169 B=157 + RGB + PROCESS + 0 + 169 + 157 + + + R=41 G=171 B=226 + RGB + PROCESS + 41 + 171 + 226 + + + R=0 G=113 B=188 + RGB + PROCESS + 0 + 113 + 188 + + + R=46 G=49 B=146 + RGB + PROCESS + 46 + 49 + 146 + + + R=27 G=20 B=100 + RGB + PROCESS + 27 + 20 + 100 + + + R=102 G=45 B=145 + RGB + PROCESS + 102 + 45 + 145 + + + R=147 G=39 B=143 + RGB + PROCESS + 147 + 39 + 143 + + + R=158 G=0 B=93 + RGB + PROCESS + 158 + 0 + 93 + + + R=212 G=20 B=90 + RGB + PROCESS + 212 + 20 + 90 + + + R=237 G=30 B=121 + RGB + PROCESS + 237 + 30 + 121 + + + R=199 G=178 B=153 + RGB + PROCESS + 199 + 178 + 153 + + + R=153 G=134 B=117 + RGB + PROCESS + 153 + 134 + 117 + + + R=115 G=99 B=87 + RGB + PROCESS + 115 + 99 + 87 + + + R=83 G=71 B=65 + RGB + PROCESS + 83 + 71 + 65 + + + R=198 G=156 B=109 + RGB + PROCESS + 198 + 156 + 109 + + + R=166 G=124 B=82 + RGB + PROCESS + 166 + 124 + 82 + + + R=140 G=98 B=57 + RGB + PROCESS + 140 + 98 + 57 + + + R=117 G=76 B=36 + RGB + PROCESS + 117 + 76 + 36 + + + R=96 G=56 B=19 + RGB + PROCESS + 96 + 56 + 19 + + + R=66 G=33 B=11 + RGB + PROCESS + 66 + 33 + 11 + + + + + + Grays + 1 + + + + R=0 G=0 B=0 + RGB + PROCESS + 0 + 0 + 0 + + + R=26 G=26 B=26 + RGB + PROCESS + 26 + 26 + 26 + + + R=51 G=51 B=51 + RGB + PROCESS + 51 + 51 + 51 + + + R=77 G=77 B=77 + RGB + PROCESS + 77 + 77 + 77 + + + R=102 G=102 B=102 + RGB + PROCESS + 102 + 102 + 102 + + + R=128 G=128 B=128 + RGB + PROCESS + 128 + 128 + 128 + + + R=153 G=153 B=153 + RGB + PROCESS + 153 + 153 + 153 + + + R=179 G=179 B=179 + RGB + PROCESS + 179 + 179 + 179 + + + R=204 G=204 B=204 + RGB + PROCESS + 204 + 204 + 204 + + + R=230 G=230 B=230 + RGB + PROCESS + 230 + 230 + 230 + + + R=242 G=242 B=242 + RGB + PROCESS + 242 + 242 + 242 + + + + + + Web Color Group + 1 + + + + R=63 G=169 B=245 + RGB + PROCESS + 63 + 169 + 245 + + + R=122 G=201 B=67 + RGB + PROCESS + 122 + 201 + 67 + + + R=255 G=147 B=30 + RGB + PROCESS + 255 + 147 + 30 + + + R=255 G=29 B=37 + RGB + PROCESS + 255 + 29 + 37 + + + R=255 G=123 B=172 + RGB + PROCESS + 255 + 123 + 172 + + + R=189 G=204 B=212 + RGB + PROCESS + 189 + 204 + 212 + + + + + + + Adobe PDF library 17.00 + 21.0.0 + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3 0 obj <> endobj 6 0 obj <>>>/Thumb 49 0 R/TrimBox[0.0 0.0 227.367 191.018]/Type/Page/PieceInfo<>>> endobj 47 0 obj <>stream +H= +A >6N~'fAbzmm\tw\LE:it~v#QxlBa+˶s.KFY)9› K&$>stream +8;Xp,SIf2E"pjK\kdsTa7]c; +endstream endobj 50 0 obj <> endobj 52 0 obj <> endobj 53 0 obj <>stream +%!PS-Adobe-3.0 +%%Creator: Adobe Illustrator(R) 24.0 +%%AI8_CreatorVersion: 28.0.0 +%%For: (Ian Griffiths) () +%%Title: (Ch08-Partitioning-Marbles.ai) +%%CreationDate: 11/2/2023 3:14 PM +%%Canvassize: 16383 +%%BoundingBox: 16 -165 217 -15 +%%HiResBoundingBox: 16.134253203335 -164.873402096815 216.706676211676 -15.64892578125 +%%DocumentProcessColors: Cyan Magenta Yellow Black +%AI5_FileFormat 14.0 +%AI12_BuildNumber: 88 +%AI3_ColorUsage: Color +%AI7_ImageSettings: 0 +%%RGBProcessColor: 0 0 0 ([Registration]) +%%+ 0.172549024224281 0.196078434586525 0.7843137383461 (code keyword) +%AI3_Cropmarks: 0 -191.018348623856 227.366972477064 0 +%AI3_TemplateBox: 683.5 -384.5 683.5 -384.5 +%AI3_TileBox: -307.186503998525 -393.109180415444 534.673476472907 201.91077808065 +%AI3_DocumentPreview: None +%AI5_ArtSize: 14400 14400 +%AI5_RulerUnits: 6 +%AI24_LargeCanvasScale: 1 +%AI9_ColorModel: 1 +%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 +%AI5_TargetResolution: 800 +%AI5_NumLayers: 1 +%AI17_Begin_Content_if_version_gt:24 4 +%AI10_OpenToVie: -117 78.9816513761462 2.27083333333333 0 7856.90825688074 8010.51376146789 4318 2607 18 1 0 89 170 0 0 0 1 1 0 1 1 0 0 +%AI17_Alternate_Content +%AI9_OpenToView: -117 78.9816513761462 2.27083333333333 4318 2607 18 1 0 89 170 0 0 0 1 1 0 1 1 0 0 +%AI17_End_Versioned_Content +%AI5_OpenViewLayers: 7 +%AI17_Begin_Content_if_version_gt:24 4 +%AI17_Alternate_Content +%AI17_End_Versioned_Content +%%PageOrigin:283 -684 +%AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 +%AI9_Flatten: 1 +%AI12_CMSettings: 00.MS +%%EndComments + +endstream endobj 54 0 obj <>stream +%AI24_ZStandard_Data(/X*;Tw*[[7º! $vI싆㎓H"h+.$!% Fa$!$ADK$ MHP0 d2Y^$&"d(F1`$HVI\ +$!=3@ 5$EBo@Ţ"0NqD]bئbAd5 +Z\hFz<`( +$@I4D.mَ։jXo +ú5Kz?!djk4XC%ʍ>Tg7":lW-o4T|Գ*ɦ\ O+7ѵHzj^;:ZPA4KڼZ}Փnm=TVQ]>ӓ9BXHP4I&h0AiQڒJ# $BD#qEIP, +E +$Y*Tf9M(:$NPڋ$ +U^ssIұPJ!Iq$1$ $I,)VI@WH@,H"&ZI "E=#*둤A rmIV(4QVgk`$vvww[) #!&.>H@2p:2wA$E½9 +;b@7ld33X Ia>@D#9.HI G\$)Ga:@' FÑ$gHRh$߆6l`ְF5ܠ`4 Ƃ` `$g,C@1Qp, bH,؅.t \E-CP0 +EBq*D@*Nq +SXA +GX$DMh"% J88+$t6Ulb^Z6 MuU5JHG6rLd"733ҲI@2P <.&"8-Nqޝ]a [ž$gfedj$ + bB)(GQBk1LHp‰]ZItl;A jЂ łiDɎHH<|Z[$xV.S9p ;` Bq 'V|Fh,N J))LHb$P4ɁhqA +84H8<@x@@ pPu`GL!@ LP` 2xD4L@x8ph` ! XpXAC$8px@P $t0D,` !ᑁG&ЀA  @XXD@$ <

`"BBCD8<" L@ $<".x@0၂8,HA#< \aD8x-iMsY-jWP,x4X Ѐ|ʂ BEE a6b  D<@,Pzb *"*0ADwH4"x4䏩K/Lsΰh}حaG*Ѐsk|D,@ ƒ LKRghUI\ܳ5 + + $|b!B8x ( (γ55ۭ,ų[~X28<44?"xcDe?Y5KK5nTG;^=`sUh_M;IA*❶lU$)}5iJ;hn]dIՉ x|)P'knyY\fv>.^RnԫFy$ҹzW ϭ6k~[5ҤYS}'ӈO3Uw +]xx'؝QېfoD' G(C~*k,ˎzo۽Ƶz7^Hv:fiMRKߴz秙4TwK|jkmc%pdcj"Zny$M_#zjn"ycKnJ1u.%HPu$=oWY6<T96o񤈣cջaM Kտ=UԴݔMEtfg:eޮ3ZG#a;hs|5/ͦNM>wwS{m}D.\9٪Se$%oMO.Φغ蕍_U3nکIWg?{(->9D.iʻɟj 7jCjFxJTv, 7!߭ ZgMl.exXz_sãүxWcN8grEh7K? Vfx;96!R*Xlf /̧j)/3Mt^efjH輡 fE(oyK^o?-wUtʜ,4+Kti9o ̺NO,6So\G&<]n&eGw+=W6h!+QYh bZy"3HZƹB#SAxWW1}%o INb51OX7ZgdHWڽ,N8[U|D*?f/\ '_ZSB>NϺ +.Ty/OJf]([hArg3JYV htۡtz[']#*1-x;m|vxSbd[˝ڂ9ߝRj%mbR}my{娹Ii͛Zq䣖V,E^Ss)oe)ekc[6R{)=T>#ZPqZZپt2'L/ [5TW kLeOEKd[:I)m8F!{ӺFGTe?BEiAU!)o.Yh$W  +E5H`,D$1m"U[ I.R zVm-#e%ĢRWW$ FF‘`" P dA$cK 2tqR|)+I `|$#j,P4rnfFn13x8(Aw^.ґfϾpzSy$:|Pѳ;Zwϔ#*K-J1+Bee&gz;u<1͎.U)r9w(iiR^ӟ4 V)Rvx%9Y5*/hu0Ӝ/SMz!jUeU7z*jkEȰ/&i*fi[׃R\˱r,evkG6R*lVciXtUl~kHYGyC ZPj2q制Z #R}VykNeQޟJFWM6Wu2W|j7xN䒉/9Vz6_~]6kvd{{SUДPy6޺ɳ[Yi-Ӹj E{zn\wB߭fKSixÝw趶6k>y|r}˓wAS<ڜ: heFJRa>QɌFOks")XvwEvfRҖZx8Ȁ:{֤ˮZ͇.1fzlm~˚ڙ!b:3#]׼V UT-re{^z^~4|[ULh7W&ڹZhxG{ךfYXL'>x3<5!yx*a]+t=O{:KK5Wk)OK.}ub͝ nQw6wNZrBnyˌWE^1e撫J楗eRb)O7u' +pVS+m +-6Kcu_aa:URx5~F2"KzJ{Ok3H6V)~-3n2**ˆ^d}}sҸvmYL+iQQ!YY\VӢt弣&n(Ǭћ޷fY6_%R zT_KYĩwWVc[XfTxi5t뙮R/:δ봥ײcέ.IS33im:=.KɧRE""$aCB@y1BYղjlQZʭQkRwhgu/´hiO*3.޹%1V/WB>SnVR {B!RګUgS{哔a3󞨦Lb&n)/5U ͋XhS<2ZE[zrݻX[Y=SM;((򪄓hKJm,o)Srj\ḁlV|J;<-{!&Lo{,mk:љֶeϡ~^4V-[\3\WwQxB$|=RM%)VPR?{z55Mr㋴ʑ٨d?_1TeUuUVQo knΖ +V;*ݷ~z{JwVkj,)a^YQpΪ0I7%=$Ef$4CJ,tF*tJV7 «BV睆 {Iw٥qүcc`)"$>-ڳUFHhZ^zs*ιi:+"K4ZՎwVT^b}foFrfcRjq(YkTJ,ޔ']lo8Xv8DTΛx8&JJGTMϑҐ5Wɇx]I<ݹZϦY9_de:jCϔEO4oMYQW=^Aˡ9$2wc%U[« _ZX_Hc̻^YW7zrњYZsF-JU+MϼRШt4Wz4i_mNFS+.0w'eC#loNTV3UIѩwaA){5I{FEz&_~9S香Hl:fmifL396S"jf6R7mlg٦K}CVGͶU/!m]U]mBUv*A1q }m62կ{lԼsD9[fۿ~ER=٢Z)]5|:$;ݴryjq:ռ!fg&jqKFk_|垞 O󊚳vWsl8[uEԫbNqݴ +nhդCigIODz.,;GKͱ&8ΪDsۑΝ˲.7>u,+R.}7zvy65UNJUIfKª83K|em,;o<ảIyӵ] +1_ך4g3-[ݱ;VǕgWz+Yi:}7JVgVzrU4deQlflh4,k1c3nΕNY[f5O7[ꛭMʣfQVJϛ!('<ˢeIϪRkֹ+]]?kңQ&TY殤)^LoNnIE',ysK;cbw̞SXnwtu;,/}ieKkc'{ѳt=+_iK f^M)n|EiK/R1]u޿v,B^@AGzNc@39"snlDUJ/4g/›ۙJsCC#n7K*i.İIB@TpӉeLk~@=HE k" =yjl~;x&6hzLb9؇ږgt` * ΄t M@ Vȓ:,0vyO=We\[lBGUOs(ù^iD p5 cy}UwРM(zHtbhC۴>Wj+3x(~[ +wW=N'}KI;kM0+26 ʗG)61,mvR2[ڗijl., }I߾T]J au +A[;<\"yseebCpeVCPDiVB/ Exk̦L5&Cڃ`xQi?Vwo:4E3eP`{$O:3&URS~QS{b{Jt$"@.W 9 z%qc?̩ >Tt +p:@YգW98{ bӕLۚo7]RD!˾JZc_ n/#/8&uWA0 ޅh%9pz%L) cQ$cu~+լ!{=gΎx۸Ʃm–ѝS[z4,n8 !g6j}^B{Mw` Tz 5Ӥ~K5*jU~hcg +>(00Yz U%k9a&8  `pDe K[-M%ex9S(dHiz[@y [ͣ5[La3VN@K5K @ғ6xڿu󴬒kDƥTOdNn~.:@hOPQ/ISl+ĘWVRι"9-Dv?ҹȿn1RCZ]_J~/; +!ٹ.s bu|B2rAh-6o<`Ye40B3_;sʟ;Nj9&𥉉ZkaJm0=:ݵ6023n44}7{W̱I \'cn6R*oDptLCpr:yclK;`&?pT|tB2U8 MzFE`*ӣst,ƹN )wm%D-\[7`RDUR%F _q*@H&ؘJYi0}naKP ]/HixH47,m):C*q]bs!]ʾl,)&<PԳO@40n ţKFp"Wl4'7ٽcq}Sp:bgᒞ#&h9@bI-- l-8BaW4"PI.%N< Xę(@3/&bz" +4EU *"H27sŗIZ_; ]iӼЭFH#"2*Á dK#[cy 7 %&~@{262&L› |ƐF{+al2zlT7i8xefMdc,"P kV-ڐp%!U-sx J=+M`7]o0R09iKO҈eIͪ<v\Ay>C;>Mp{ɎaW^^U r B#O,а@uZËsq4f<}(6?>|{HF +PORF!Y7(])4e[ zj>Gz^9ס~.< 3[[eaaAx<0B/wexHt>U۫ܞn`x +I"~"ޮ A1pޜu-pHo_(}j`/*%½4蘾 t,fMYj3{Hޯ*U L~(( uw@콋I,/VrҵzXj cF ;Zv&olN0g V,ސ," \R[-UXɐ@jB ocO5i.ruְ֕(W+>5wly'"d*ڠafgK3\빫X8Yne3R QF +Rw2T0 k/v eg;Aw7Bړ>vhD!k*-9!Nsvs+MpPT m` gUT_k2Dl ]l dWXeQ3 .coNe.9 +|)ex*ېT;'R!Fmet;ElPl!WqQʠX(LQ3II?r c2,n@v ^*)(8ZA7[hA)3aWTv)&[n BeTmcb:*`^_4'TsL EgiҌf/5g&r6zIZEa<)ff)HLpEJˉP<$ۭǏ@m,h6.:314,+ic'Ϋ =T8':pg_8zH:,#ad-G&t7+,P汷WXX u?xH8)$ɥPmCkT4B' +?\;мGM3DU͝#.Sw#M˞\\JuFMa&[Žc,TH@KB)8w b` F J}~_NE.s <9PȘpeuN.}ӊ0`-XzMr~IHCٙ :ޛRo:ٰtcz-x)6#RW8W2*10Z + +pF&7ͳJ+9L\6>ߑa1 < t :%|2GK"݌e&"R\&(-,OVk^.{)I=6EYb%(d$h0ijϴgF'cf>QSp/F,a֚JKw:ZബC]$2 +ڃvW` zV%走 +Y: ?D, !ryr K袵k!"-^0قh"̅g$ǎt.BaKg=5Í#&Uarb!qX1b!E4FL9icCp M`_7J\'f<ƔxZFiT +t, 6xwql+94hQ33)!Z/ṙ{EÐ#Q)wˀs r^CO*Ũֵ "|Ldd_oT`oXDXq5 =zC SDZBG}S,P"e8Ε>h`T 9/Eu4:mHY:|:j&:ڥ +XZ +xNJP(º%=E- @0gˠgB̑7^$@os]b i\!Bn2}d7PaV Ey@575WP6,lt*J  fJ!soE F Xis)B'>9<:ȞRxvPC77\reRM\: {luԟK>J4aN?乒T-2XޝKLWRC'J W4 Q:qR @Gq)F {21;z*JFrA_{(Tyhh"˭t05>׳(Y}sA8Gx9aLeG+=V.d`+LQ.⁃ɫrg4 +okSCt[D|VW G7\8C4Jp:nvۓ^&lnbtg>+$4Ԇ7lc'B6 `,r=v#uF^[Y -XռK{UjLzoTݡFM @Z [=Xӝ—s¦thoš&,M/ϵ@UT +,4ud{\c~^-H?q-x l3C? HBy<0֟’ S=Y)ڲkm\yZ~Qۅh+w^]r T2+e~7M}O0ǭ9.C*b(6GSǏu8MfZU"L O%*ڭQ|li CkeC<5JbJ!d*I5!i +(4 + 0/#?TbC5JMP}I )lp*L(I2+l$FkFt^EҰž*JVb!BIEf( `\a,Z)2)"6'rN#^Ç(I$`"J!ojPg +8Y4CJ4/dhX(Ф"H+мa_~K/A"qfmހƇ[&ޠ:ryp=vExI ̒˧@8X? ,.)kB:t.ǼWU"Ivb< HYTl뀤g2slnw{gY¢sDY`Y߇*&ڀ&.2vs~UV{z*EËIO]2"lSٳ@MhfciSBV sy2 ZsE-HQhukWH-ENrF}ȰqN Q1)8~ c?|[8sj+t?Z7R,AIP#_ A[L30D.&'e @O+h2z%~z2G5~fj`KY~n~.Us3#wٯ0\zKKaˢOP6tLg|C2ޝ@[`UjHjtV0.=[ Dq ў'__%'X=۞@>);TF,}I\aZ S5ꁉTZ5E,+np@!GTD{C?+8ßW9e6j2İgt:P34^SkWV(cu"@l/7g,3ޏMjJt 8xwX6 +(F)z;lkn, cL?Ӣ.|e;W]i lA A/p +œr\@R?z :J`2q $Qu!#au\GM}w}r儫:!vˠE dgh@U(l #`W.( `Iԍ;u-jnX*T1vK6mwܜo\i_:~zՃ~eȲFI`徭*QX\j#<w;+Cx V&3 s'9\U\̔@FA; ;r 'P[q ܛJ:< '&v`FM~+ K7 }Żq@0+0^N~KeS \~Aeg/P-5j[ghdQqUȬbr{+S)z ja09jM# = 7yxE)RkYo,IHmG){lẙ_H̎&p?|eW$}s?(ː#| +ωK='XxY~(laL2dy48:zEFi}E+a2l}QH|3Y(IYaJgaۙK\~Xnl쁀KD2n>5J~G_FO­s-D9TdҪG#kV_hFC~i/o.0$j62o큨Zc ^llŸtXk}ëF}X[ +Y/Cj2UP%'*NX'f |0V +ae7Y ȂG+o kpYSH$>Pv]_#ps{~ zެ8ol}H. ƚQ4(~5?k-}Ab|FEpBnp_}`%}*\7E:ugiY=yY#[xV. IGF&$?Qi{ _l1Lyk$ +|e ƈah/]K>1jnd)9~SoTadz) +hUI4yʦptl"zeETicNf)(SOR@8 @j%a?lnTL-R^XբPK(WT(*(A3EHPJ ̨_?]W[{1(9'.2d8ZI1NƽMk|RSܜ([əBl2)(%3_xi"fU5:oI޼Qޕj\cDUѩ|JNs*H +Z,y +FUy(H۹'CzS7pTbzJ"uR!QїuD g_~?p@uJ $2$w 2hx}%1g3]0CAԁ7eG(?>?c+_"=BaOZ $'iV + +it3#gBa^w%<뮷KQ \ƂKN,6ENʺٗgagg3yx{U\Iejaxw+n e.coWBީN,B4K+M{ +1_ 3-ZI]?oHgНp$\rVE9G: pj$.+s[#/K2bu`QKtUpSC`FaBҔzpJ&j]e&HR1AFMKZe(2aƒܫ>b6CMW"\=Mj*AhQ)[\ ɩaÉoҨ5z U*"Um7@oE;NU?a!LP$! +JNW'_:(4*Cf4c=|y*dN[ +"S}[F1n*\y(@Un)˷KQ57⼨wU]>%NZugY'nyM&0ےcHD=s0(B?~;xjb]@#me#O H}.7E%'}D5U)E`nwxAtm&(2#0b0WS< WI*܅~VRB0Se $nPFtѩX'}Gה?p}ÑQ_1՛ Zl&˺vb*(-Cx9(gj&ӳM~ٛ:pLIRE1AE5..7ڡ,63>c/ebv`0}Vm?SkMhPvz*X~4|qr} !XFūCh^nTR< +6Bai,\\1?BӬDeMYj<̀"2S5@!9T{uiL;}5AhKnSN|ir>G +914븣 @?=Џ^,9'{HruaitMV~{ց33\Eb2*,8(1Wh͎4S\ɻFAt֐1kFO֍R /(O½1j39/:qG1 Y%Qyel\ :S[{ 72[4L#(KZ%DK6 %8>A~P0F-Kڗi1zYR3|Y]zi*D{gOg@3fkupwE*CY5G蛪cGe8%=q%LXL&V2ӧ<5-GK&QLf"TCUdB +!49}BBXlC" +"?pKg-j"ˆ'T_D^H!:?P=(GjuPXdY!ħخ?|Lj<wBKGQmqKhH0xX($a6tz JWMT"ՒF^B``djGfA쓊`E_y48i~&[J 9)q'-/ԗj(0aX*Lܩ +@T yr%{ZjFZA+5"-BIQZpxGvzۇZOt+_!D d(H~.s%ym֭V+zH%ڕ2YhkQ.Ad; +cow+>4j2Zt/ %PucviL +:B1(Po\͝ĩSA? .CV^"y8Sfe^FhGn+ ' +$c3%un9 V}^_ECYgi(p/&g  Bڨ.W}i)(5ご!GYeY:[!swQ53Hu;)PY~0)>GRT6PeS Z{[ʭ<(/q:I`ԏ[ +ʵ +ޣGp5 +?\ / eBlDlڈabfΞ،Az:-!±<b+51D))SMX?{Z$ ^)z_k3/ >gBkuİRo5&hY%O?:c;!NOI(7$*T{9.[m^MQ$mm(ѽ([4U4_?wDRrEࣥ} +W{pO[ C9!rP!NteG?[Kv:bs(+9ˈ'7DUeYyV=7h=⾔>/t-N-ACH"{dXD병OCyӿ-9s8b86XA^_8 +e{|:0%mDME闇X9yVSf_58y)ɧƵ~AрY d&XHy"ч8ZujX@whѰhDAHE=@w֛8/'Qg̿v"R842þo>\ Y=&•71 nDD_mwާb'uA?~O]}ۦi8p')4/OeUqna:K%zP(HkJS{3kü{-(hfhZS~C.ZdpX"N1X+6Js [)_\?_)b%JQo^4u7PWY|,QaBi-v#L,Kni+}0s!HkEFXs]#o--"_a7("v ŋ<8&Wʋ%~˷g{ӵhvm6Qz&N8k;8 9~ qd a\ $HrÊ_97σ{;CV p 81SMY F$Pҍ@,|~͂75 aY@d9P$FZ6`8=g!Lݒmp?I0,8k]O +r7T|Xqe̎93Lj\ތDN7I u5Mv^nAnQgll_a]fo]3kmìf /.Ss`(-jR]SM +lb׵Q`uew؀Qa%KYښ/HٹNԡ+0e +RrI޶XD~-FD4DpT%dR7y%:LG{73pUwۍW Vk +t -p j[&)MЍazbIma~GQiEH5"D BRNˡqY"FNjj'<fU@kT4N(S݅ɎIdl9/ CwxUeS2 e}kD80\ .UE "X<>N 1t07G5@AR[~ ).k5.2"p! i+w<XGFd_f 1ouRϜuG) I~iG}.Ckbp,fׅl4BC߶jN<3ZBX݇6A6jVI`H><*,Nu CPR5ը:"\\z +'$a<>eqHւܙ?ϒ0-9ާwnS#lDY`Ũ8rFPR#kPZ߭JWTTS򛒼ZRN,P Q`iV dKc%"JpQ& I%keFlH4jZVDZV@ld7 6 +DNCz,ﮝbK׵zgjH>\SYμ/GzyԦ$N6AlAiQ78#/%X+p=&S"c݆!_DD 6YXOs_wmnV*x/u:PesvA^#G,{@ZA3ĕں@jsQB+%O i=`yŝPR<7FF5JtN=zS?Egyml伯<< 1f TpHm2 ӄxdd!6&`/@.nIG%YJT"S布RE}b5u~)nazve+פXO'?~ +nwh IBHW^Ŕ$h\g>fCs(.츰`&L7)(sxbn}@Dl@t dJk{Eo, HqST? P1~R98o0ւ|xRG.^e`cI +J.X-naW/Y7]9/$V,>b. +4>cCIvNL+ArX)*J_.QiH )Q!%lK^g촽)Az~\S!DѡKñ>Ə +K8xx=8%> QJÒ0L&RaG,=pw*JwsV_W|S׻!Fm4wx7;]Sg]B8׸%\N5=@cbN N>aDZ*\0_:blYQvklJh; =_rO"9CBv`ǫ{w=Q8Tycii-ÐǼ4_DH% tnZd[IN'UH ;;'|An&yaD$ +].8ɠu&L<-ZGdje~|X3p# 0LVp +ٸJ2$PGͶaBx ֳ"fDF1 4Nk+0blNe *kАU~k MpMEE[|aXaSMڿҿ-A):>1 +cPkao>k%C>{/wIg|pT" ѧtS$">y4T.LPvi4Oُ@/RC#h~sB yݤh /Y>DԁF`^f7/s;;3+:X +F^"YE;2(<)[pIB=N v'qFJRI""%+jHL'no,# .M.aB!L@1M`R`RJPDqT$T1!2`I  +EC#A1Q6"9V>T(~ `#'+ @1#s1I C +דv +)BB`>yKD+ʻ+^8g0 PSb(Her!Wل@ +::9XEH$P mBPG͉@ܯ{^2 |?dLw\ dNb ,Pk*/VT-{@HQD( k"%QMI]|%YeoMfD0_T "#,'".u&0QH)}F*5}s)6S4^P8(XP3 LR,fJن!whcS~ ;T⏮vĽESAatn_Ӆ:6 A8놄M4!% $,%$h;qC_)"/IRARF4RZu"5*'6(*3nGaHGHk6Hܬ\2шAN@NJ:%Q"Oe*/G$x/7ND%m~̬2BZ&i@dt* +ҝm`X䛎T*#TsL)"O E0卌'KD*&PG!=OQ](jSCDU V0V)ٶkZ궣isX`9!AH)"Dac>@CMIj`hʟgKgj«d$Ɔqg7M$MM{i!RhJAcSsCOf͘t̙IaBݬX11LgH1ٸ) N7!/"ڻ%kF/0%;@25B _$p/""F$R!;y5}bpsAϠreѯFyc;u=N͌(.#US>%g]hx&愋J$fq`d}$V m*xۯ*wbF [ӈ$vJh|K8#7я~1_,rJ7"vX\X$|H*,oG쀘ub't}rMTwZ#Ql!dgi"d1u'J='E1[.*ju UF4ԗʗELQĸbL'E.Rj}E^)vUSIfcd^DZ'b7ʝ oDLfilCH/ّնoQ}I)*EExSq)Ѩh\;"-*ӴKf\]+]Þ"˵*m]iiMFb2i$HH! KR O[юr ƖS~Aah + ye4$,"Y9E(Y()%+#KJ<kYk3b"#IB"hQIK25J`Fz$pB!)ٓCaIt-$g+823aتy}4rh'+Mc>3)F$N,/ ݱ Aɦ/Y ̈́%q>,sf 1:YErP^eWg#Ec˫Nv k렵R˷*좉iy-1>^RLfi>0A6Y…2)C4`sa&wRmGM-A(=gZ1Y)va`@ +3kR@ Uy`gHdJ 84Tl!l4,]cUׯgA\@n`NQ +|ei U7TաPLHe0!<sR +@ qg,qW'zk;ܖA]p-㞀MˮpBYʡlDw?Ƣ 2 3"EnvW8ݗ.S ~OF4-0GMt5u߭O5 +(Md2$ټTiX*;) 'jth +PScBQwN $00"G@ PL DT`< r#V嗣{A uV\.!J[ar [YSPer2#=D">dX8Bg2(cjH))DD&')qR4.ν`BY=`>>yx\<1Q32 / +RmZB2Q.yfA i5 ݪC仧 '"td# i]2t-*ǃ$O͇R=Hy d 4WABY胜^ږۼJiICP(D ,qA:xۣpʸpBayLK~ ^p0^{jV,P$#/1H,fxCM,Ԇq 9̘LXSbLb"xa#4*@`Wxo8^*O:Rga1e'ld. KH$STAֻ\M'82zX1P0sӇgF"[Q` R SA"[sJEx^{9w2T[[1 7PP$I(Ůw"CqUR3AXUM#"Bה.(%20p@isO RԪJ@0YS\P!'R(0 8)2h` Pו?34ajO4AO MQWMg*KW$4w1qU X!}\E""n(, VbɎp ʣ%Q?L^`0BXDI_T5bZ XsSH4bpbUO5j"v1T#8T#+j3Eͩ M,Lv|fVz- 379ŽN/:ATQ^f!Oԫ_(Qd!30Fb`f?.>&U}>UY}0_Q%'[~3%w<EB `@ +Cbz|4|B AqPPZ  Ŝp-737" ?5RC_ ;c'- +Vh +!̜4I/f!x3CZapy8 J!Q9oz .;k%c:r9 1sWGL܆w`KӢou9ohbnQF}-'Ld&#ګ̙'̜M|[ij8uRN;];fH;QYIJwEuAW7Qat)R2݅RsDPT_\jdeX%vDaF>8H30f O k0nߋ TMǬE'&")f=fE%yI(U(olJ~7J(J,a޻hЦ lę{Uxv75|Qw BWMBùЃXBGs1DjԱ 㸝Uv/+w7 \&;Z6~.Ƶ}7q.ڝU_{Yi9,rX@i>\Qk6v +*|!M{gR^NhZ='ԁr:dW0ݷj-s7!18tqsb[A=R_75>YlƹO%G.Sc6C]kOt~o uٙ}zmj+$g뵰oT0PÃrhêz¼Bz̥dB 4oj +&pHžFz +e3b &6cU\Ԟi`w#ia50Yv5ȠK>HPZ@ mP]MR D" =e8?&.4z4K93MPp0«T8di+dVo}Y + Y-hW Ď r8Q +u,|9[ Qw!Y6gɛ2耜\KuzīnFGm#m f<1;J7SuSkw0-SSI1ćeXSv%v)=H"!]#)c[e{);]XlE9jKr5XpYA-ӟvsl&E=0RV)!NN#Xg*]GB>|K|Bd +ф;〄6,N QE^/4LԬ?jnHxq0pf8*UHU h0~r3z2q5C$;ÝRfX0!o2hGLYV~ܬ*PS׉Hɜ{+1bZJHPXہ[*/ G8C_M5b:[ΨNXO^ GN 19dBX^gs"`š @!)H,8_-S>9e4IK\zB[Ls!a !{N1G%b! ЌU?>=\2#qd8 j1Vp'UZQwv9JU˦GLl5]@µ9GHYJ\PFwӉQF9Œ?TVE Fm,JIZY$1NEzN#]>o11]/k`$'@H4H(Q\`jQ*-@dcq .<) +he1[-els"ޗk*.j+ș OY2i’LͭeC*FM*þwXIyv+Mv9ݸOzȼK1RaAֆ)#|'AEe^ +T}qC9Atkt枊4(vbh1^b &[[#SS &7;3hzD6h\,SȾ+*p7!Yl2bFNAىH0'Hj2l"W sIY`=V^]X!j-'zYɾ*VcӀrLFj䔭x^LE*j.b_ct;o7tlkJ8;Mh^3̘kMo!Sx̺팼:R؉~R#?'YT>o7#Ca4?X#dWi Y`QeA2,(P9f1ZjŵbڣC)ڹn`{+YQAajNc5B[EYVIO'E]m%䨽SxGq#(:A QȚX pvqAus0-Rv04CS`̈́m*NNICc%8A&X2u@-MhNH <ԣt/ ޕ:aTф\Mk*3KPs)ib}GdA;p4MdX,d5t`!B 9_Z{iaa@12Wz+ 4d_i]~.vL(m F=d9ꪻMV/1C!b8\MRŕSeHٵZ¶,L8#@F=t/|KpkMMJ'-3?Gb,e{MR). @abd 4&ć`q :ȯU>ю)xk+Nclc"u*hT['414܅>uFJ+2@U~AM熂S{c a ɱup`K8! +Rk2zĶH*{*~(SdB|3.hZS _`BqYLݜVFf=ߘx `h oQv +~p% xs\W"Ȟ#p!ߟ@l+n=M)Tvxy164겜F]UEsRwZ5 Rə!D JKeu[;hrBnBRmDTشKDA0YLfebE9T ON+8C$Kpk[jj$ZP CE_[32`;C.& tamvoh +NA6!ȎUuuvQnڴrE(J(E7lqO98?%t إEg cyAvLY{uH9Ƥ_^z/M :RXWĮkL 4DŽd<&d+/S. +i"v|Rɣ? SIzXH&g2jOofN.#Hf`I60l-aj$ q9p&O"e'-V&6Yz ӑ!Ro5EfA$(@N2)O7ge6PE7IʢQ Inig9wѩ=VKBxT^k8 >p ݦ;uļtHqB0*[1 P`نt~ Afn4g 2D ̰e3 '0;'7fP&+JǕ9ypLVkaԀH RP1aRG@R_ndm]29Z`_}Are|wH@!ê} +|>f +TjPe$PA& v?&ȝnξ- +?oV 0FTjUmLu=E-Z뒔H$bUB!DPڃ$P?ThO9f *YIDٚ߁Gelu^P:1RbolBˬ4uRɶGz"?>,vUv"oSRk6yCG]P}RWxjjc.) D2ph(ob.*rFJ'Ul"zk3u #` o܍QV)9!î4nT[6V;*%T&19 :Cy+nzJ׼)CAyJ<_o: +ku!My6*XYD,a,=m:{K aFP&Ph pˊP+,?ahհ +z(ǩv??ԷrZE 5BE3ڗ͆˃]B U8sZM-%( k$_w160o\X$stuCÑqr +߯\~A#o'M7Rxcc8mV_y|>NQ 9| uh +-'|۽횮,+ڳcpBt-i._"G:e_1HBcK5j*ҿp㥻\&TBAp΄ D,qN[_ n~h}WfЄLh>[ոҩ{?5L~y;,Ot6 C2f`$}qs AeLˑI($B} K?(b$"iDX 5@H1 "Uc{XL< ĿƤ'!)Io 9AX*S.Db1=ǶF!&$"~S`/0"_*-dd!N؈qDgLZzJO?"/$% :}.;\%6p]:9yiqI]89%W, i^.SKg `> ׌ eISeX2L K~ |_ k+lMؾm"%fMaVI8B h'G%S'š GJ$k ob1zNRzXP&ăOz`?0RBKY&V0ax%yŒj*ɘOq$Q$-I=NlAKQUXg)·*#k!"g"oO +VdH*)^q0!ƁECfXp|B"{',&'ӜXPnB Q/ !t"M)5 lā{Y9H 23GlʡPd9 1G* R9 C9`_A~})# Gj @lч:AAq7gr ^^Gc  +86!;P1 &x4 f2 x + =*qxY=?X>?=B?~M'r#ޣS0LJ{!}0-ںYCE~d>2?r>myABaPKχ-}?l>>?S oROHCr$| >һ{x@dⱑY@L[*P$]O%Ȑ8`W +2nnPQ\=ʚAWl:.~1ƈwAxSXepl8~GPUY/uA`\='I5)HRV NAfa䫟Q瑅K92.rQ% >B Ʌ +Dž>qEW0.pAwij빒,%6 IE]؂ЕTΰLJK^\t`ud0Kp+I5]a*WLp6ƭ$[N+DLgO;+‰f⡬+}b V@> y BTiVl*h&XGt?Z&\Mk8 (3dKJ`V9%^U>r`JۭVJ(LbfŊ8&X)JP+;m8`O+$b%L"RqI J+PXIő?HlL$J B8a_& H04TEw^%B1'y*p6Bث|t@J#s7AAā^Gpس86/Щ**PSZ$'~UD`I˫Ja QDz 1"J +8P+U7Dj@B"󪠥o*ZxU9rByO!ȣ';VxWbPXB +-5Y $iE{$MLI+JI@\ItE>+yJ`^I +pB`; AeN,  ` , sDO: , K!4? +L9!"Aq0$!'G’݄ $MHB pc",5+8GòmB\1ưYDeX%!< _:9BУi`3OQfE,|N'ÒK +aW; .  IA|\)8D[ĂTh +$`,*Xp ^ 局&FrNh7 ?U=?Kb@,Ȇ>Z0ï%[Z>0JU}0jOŵ([|p-bm `tlp%Wߒ遁=<\< \2 %(̥xp\L>< }&RR]ewOv1.Orv߶CwV^^@fqW477/?X1Y/Sj/?c󽨕Tcb>L n=Є%q][Go;Q7\a[4 +L܁a9t2DwL+`p` !K݉6ƥ! sE  7TVopXx7`5b 7Ƞ%&sad0b1 .&!"'4kP5Ұf4)e Tme?udݞe BLDΐ/fb?<"32 af Lke62 `A$9L2Dv0&`g7>144 \B#W1A#ݦc#ơ`hN1 {G߃q*XgipYL`4G4ZH 6U 6z5sHjjh!tLl3/7tٴ' ;ǂ&*Bi*Wm|O@6|W6s 7DB3(77(vgUn + n~ïsPp&TބHhSo += MN+Di +700v lX +W8Ъ]wF +W'ڣ"(\EaH(p ө"8(|8Y#NP !'Tk:aD7'|9&xw4pJ'I a8rfA3?4L4~L &TD9_U.A$% sb f%f3N)/3JНݓ0$\r~, %G&o.H vfzs9EpsmTБF#:'24nt`NlE0ױ餩N^RG|DuҦV:*:[r"}ͦa +d'9$ +F;\N +N"j;H=НPQl\CpD:$DxRb^˘"jŃK"H* G_xH"x <~rZ;*<.ӮC@yd5s CHϓ[zB`у1BОA)= Bs^A0EzPp=Y`O`*{D?p퉯 sxʺLoOM%5vAdj_3Ɍ>.*K1胡n\++Ŏ>P_x @;BA4"-|~|Q FNAܗ`^{'k$cC0.jhKhl0ۃ&_+bTHCn{`l\\*b`Kf{>4' ۃ|BkńX{U݄xRjDhP3ڃY@F6%]{Un{\wdAXB@8 Ʀٮ )ه-ADZ@Y/ɋՋa|,}-7!"1``Yz~cNb1փڥO]=ICT = ׆X%у}]j*ȃܰeI Ux]8`P享tO;[;8Kob@_dzd]sWhH\0w0D$=~2`( ym,4;y,߁XG 8wiPӪ S΍0m#;S\,F{, Ճ}9~ A/JQ<7KoI63<7-`_RmNJ +3 .u1io0"Q [|} YO(s&Ӡ`٥_&-G`cv1#DǼH/kƑc5zSTf0Tp* qa<L<LW[]A#荹 sA_ Øq t0<F@r<{J [P!QO &Y<y*"r%Yc"UeA1`#7`T +FٚA:ŷ-;SA Ӡ0;TTf ,lJ*6%S{-8bBTzҩN[o -SNCGl +>RAyu1 +H7 AC^h.P A+x^^7(+&RZ'hmIP?OZs(J!یήKPX#l jG\1:iM ML?1ԋ{G& 7_CWfW[aa+^^UJhP^rI?|1 &ItN$,*" N$CsGM1U@ӬdL &t;(k +uWEP*$eJDvsk xvkG$fLB(J]\$ Gs4 |4@dC$_\r'J@ϡ]ڻU2*PTi/4Hս _UI!`.1ycs +VD\؀S0#XӠC<7L=; 826tYz/π.yd24ZYh h\%k1ܔϺ8Kc'#"IdJSpC/PAo)iO4"O<O\]Fb͔s\@FZF̂Tމyޞ1ΕO}dg%n^7vn +|:OLEgD_nIr + aemJ:&8pAo2ג0('N|5*'p[ P3?,N[#v{)`k})UyD{P@2V W0zS&lPvh)% +H@?a# `ep9S*$׬ M(Tg=Xdd٘CY +YVQJQoW'WPۤWCj_/ιLJ7пF,e"{ ,_W~H%v! N1yW̷PrngL˂Ď7 M4@6sYO3L`rv&ޠh?~=[%jߺT*[W(C_A2B'xYU뼍͘2ݯ. W zC({vk7Y:ن_^5J`~( ґq}rP<(ws~F}s["tGX/?f;n1-!4aTgZ69!r gkN6/uH͊C(.׬7<i+算cd>g1:$Sl$oprXEU/N #{_,}`^F]'pf/D\t F븿=Ǩh +}Q70V8ޗ־ќX}~-P XHАwgR+؇d(̳Zb/^kȅDC}5zBys|x>!˧u<( -sQbP(a‘nDbdT?Ŝ%gfAˍ(NMHlR#j.j>U bf!DͿ)PJf]vGH}i>͇U>c~Y[qO7N 3|R[ʎ-T }\{q@S/ +n|u {G ϩkZCe8Bk)>w\ky]PxK)4~{ܜK!W(L~{IKn?id$/Ֆ"70"_VKPu)/yG(< gBz!p}v\C̋YWj^_.?Y0> =OSn5 k ߵ ށ +~7#VN%Fr5}8u +u=m-)8+Cs +tt33&<ϜYV}t/O&5_OBx4X/hj,ӄKMz>a 抽 n +"af0/9:X Â,AH#| + Xc|y,o K#h559ʛ%lO+pf4"Bʻo"}E:ʕr#p2`OIk_֕ _ib7I䓔akiy:#%#/a]=>z +YW'S7CħK%^.ݻvxViV`k4~:8Bo>\e_KO`_+~F hO|-{q1k +;%>&wHT*ɖB ^@-FxxZo/rŻ']' +cK l17tqC'>>^(Kx.Fp-ĜJߴ_'Nrv 7>D:dT}8#ʟB:Ȁhtbx+vy9wͶj*tEQh/]>t$'Y d;JG9qeL"E/ۻ$\4kI}z=Z/j`.rLC;3^a;%(r#F^^Z +LJw3Z5*h)Ѧ ={2 &Vr"=E}@9nqu=ŷ2.'n[k ^q{Wo&M!߾₷`;`h:)'90^`뮟ܾp3j4PֈJG팩kBMy=U`(v}8Tш?2>'J?[36R/W@dAovRO2jiپ6˃Dĵ+{còdo8k,dTV2DZ +'8Y؃W$Vb!B6kV9X2Qx`.Ԛ:)ةi?oSNBu;gί;M$P_?fg9lJLMͥxUYS(s p99̨;V[, ∝%^Rlݨ[ZUxI+OWOuqo=X_<IB ՉDScՉ_4!-uTsz"m+b5_x!obǪ;JZgVq3yu `\\kPOfiwUQ!&%@0R ' +S>B˿z:{elǾګUuNgE`~o%!\D2䷦'=+0uH[H}Z3F+ݚ̦yb*TFthf_/IXJ-1K3 I}pzY+U!/C5P<@#6!0$:*ӻs +t.>'P} =7v$|̖9t񒐷F9ժj46ee_"l'Oc0+#yZ2F^EUJyk.Y0kbs6 IEmOl18j#1S*m ED(;@T-Y0nH@?K;;TO:yx]ltZO~'U*|ہ +бȇR̈́ɾBTrS _rN'MynαBt:-ԖiYN >l>}]7a fVχ +Q|DsRUʱ~W޼a*ϥvu`,xѤy+qs[s&0' +pjs3μ8(0dxZ AXҥ`Mm/OمGܼDX͟Ac8?@A}8UIT_B]WFs9tV5g.g@sόvn03X%uB 9{Qdߎqn3(̉?XpO.1ܞ1~."IANxELd +d 5uTWɁk*v,9,װE+*6 J2TGNj):<:J9~<ⰔFPNDpdR.!) /:,B3$8]I}Yʜ\ODC@CvxZ-ed(A-]o*بؗ oA.{!mEJj +e(Gx94#a{Wv +-ƍ~w؏5ʬʇwl@IF.**>KI8ʸk ~bWV\Ȯg+ (y;{#\\S:_)7p7P~JB^E`Җ%E[ף¯xչ)bI|"zO 2ݮ'o.r<l>k`ܬ"^lf5p@|}tb)*U_ ov>mPD5- g[t>@j,Nq3|і ˌ[#|u0օaM[KU$0EFTyH };v,-0ˍp?i1f>xIG-Z^`m݅\{N1x<4%';)[na&w.Od {[v Rm"aϼ .݂ \ۇ |\Ux@֢2ToPhcM' C:j,;ViC%q~:HV' PJ ʖ0߹?)T R8P \ԍl6(a %Qu}cơw}!<1=i*x }.K4@{r`qگ-=u` +sz )r2uzyCBd {ϣq< Xn'bD,:zy2~JM0޳GϻSsИ{ui5B{\Ejg ɰ'{Ma!k*F\!fYRW>('z70-]xw:+ MZEMO`vڽPx@an^~sC1DuP6Vf۰us?keaGdj[IFR4x7E!nQr675T&cė6$࠰q3eљ*/ (Xl.XyZ 2J2\T NĎ 6/GlzvTɃ&_aLOZ=F,&,[nGq6m|~cĄeFrԶE[7g{CV"vfNiR`&QQ_ݛ:ƵB.P)XRZU;{R{8dP4<Df*Wvkv6i1?{m`/We_3PN:"@ dxm8lkT?j 3:[xOlS0zج&ReinvPfk(]Zo`q6E-mIl=ȣ ۴=$Dp{>VJVqv2yթ-d}.0wϧҺ7k_oŀ[ [OWaB/h+l A- WEUښXv`3= fX^'@xc +_+Km{H̝A&JyaP'Q ~JꐾgzĆ-ϦbSR尧w|$I2˼"Jpc5ua$F Ņj#$C_}y^zC{ϿĐl'jVnmF +vA;0!ҘַèܳZ+ATzjZ{}k}cY Px=~څ)r0 L|N:v]y&#nG:SWB-*aXM68X-K_+zVF/d>ճ{ +t}цFVt *y: 쮯zoAZq?IPg'>RMkCT[Q~L@Tc⮆S߸Xҍ۩}ƳVMMSgE S7+d~e;ځDf`REL&58 H+[F2NGW +68ºE-M7RTI PZ7Pwsx$Q!j yPwkLQ9EQSzTg(8mQAmvlU]A K/4?u(۳(M*9ƕ qԤQW Hr)f @ [drr=Fi&OZ& $~2̳ K7&j '~笶;^Ŝ@+.lABW֊zNl1 ؂ZIF5qA=8f7_P(fХPק *9(5&5Oj5Ii aFfz|0{Kc(4 ?=ݒ6%KY{sbT[Lme.mْv2[ }&x#q27pC`Gqs:µHT8^S#tM-ji9mڿWfӔiWgdQ4=kPȴpM* +(aZq[-i}4,tiA4?WhSFEÈJ,b F4<`YV܊OfEE@J>rؽlutGTU=w+>ZLMH,qDR +芘m4ip$2$QZLf>ťwaY)DYRC1g֕=O.;)ܹ>N Dd]pcZx:c*0bjWdRLm-I2mT0LH({3TYURoSǪF} pCE}Jz bԴp +I4l%R JV|^35KI{khDEE!lQEa a͔H~JՓvfTqK*im9vwЩkeS!\0Tab: +6$zYELͪSUU!jԈsVgU]\-Jt&\W%f_&U(}u@Ɲuvydkòc+nɓfSg;Ҫ ~FzT+-jȶ:k[SBw~+&W.1+-voE-kRX]Ae͉zWy&Rr?TR4}^[Z% { ZXtIe/]quD} ا0fD@~f8` c+Zꪛ8vMcY+v02( +&lDZ*jCAoT7J=YFvA)kPMv,.,3oe'Nt9OYjBr(f]AmAo6lKsH}ó2K,d΁6I3D);ZP0 ƤE3Z*/-.ij-][֙͂TBm'vam&lSPPR7^E;ms`j2tuۼ&bh=Ut?8h޲r&au1o1q`jJvH"X ZQ~݉d.9w\z0ٸp;6°)Qn, 2 c.Ȅ$2 +`1/^ _% +]Rwty۟nQ]B^s eظ_Jڂn7A %w#IAC#oQa(yq +.o ͫBE3 * ެd/VFé @mK 0BN"ݸ[zIe׭VmoZJߗTA4OB({N#`o9h/# g. >J.T4yX3u9 vMp_ ~/8 /, Z69QRzpX3GAK #UU\})5i;a*@pԔcaR-ݫ`3\jv)p 08n3 D}!0gq[C\>!QzX06+cmd JL- >&Ak*b9,N,7P hMepD3z'z,G`>stream +Vq=rIʱs3xtPہ˥uRu\3Uǧ]^%Sop,5AcǙB +^pD2V ?jڃrNp4Y85.+6?7>c GHiF{ml{\& ʹ0sƞPdP/EocJsׇmc-!نm-lA=p'r{'ptﵨ&p[c/k]e]Hc lP4Š֘ƴ!%Ed24zY|O&=+cDazK 6w}qBqqr+]9ظbyFeN3.`LB7I.؂}F0O7a\,..E,%JD8ƈbk[%ceΧ1;C@s.cU4h̘jL*?LNM>ŌyqBVcr̘!c)n\4JeAlT!yyQVwqc~8Mg A뒯}Лa)f4,*:sΌA8N0|uvBCO莎2S큎W *T=t֣:sB6JꬬŞH&`ԄmmS@Zn:e.5%1#,,Z3jʯ$MKDo{BМ@AI㖱 |$$kK5\P\+0-T)@r)̸KrL‰@r}f.h Nq.IFGieGg[?:zG?vIY;BM\uDie!m z}j,4 CuTVCĽN0HOw2sޮAÕu1'Rk3ndj=;C?|J\:ꡪ|]6ǘxj4'v*G'>Qdݒ5[G+0 >%=|mzxmPߚ7Z"׹r]Үƥю?:t4Cą6&R* a 1?DlЊr4vnk}*<}2tFnShBaiѵYŷ֑Mfv2[> Ў16 nƍtlqX̕`^ۺHbhdXm;dFi.:n6̿#%b6{"~u/v k.!@v{ߐ6K]> b`JYnGt)NX|#Z%ۓ)'DݲqUGFgG.j[sNvgiT춇  j+Pn7O#NoGɼTŷۻօSv2:"{\7VoiVPߎ'V$`ElBR=-rFAB֩A'a$bEs(ķ/ܤԤ%:xF" ˷YגAj8o?$x[ט'B2x`6zo+&-Z} R #& ttD38m d9G6qDnϷ06 TQ!*|haͥt]lm>අsj-mT#_ PnMT\HݾYs4~nkU~`+oۺZ`jm>:>w)Dž ]/mn*$}~ f`6~+wM{; fbpic6KgiEiV:vݺ*bpX=Vf>"bf;)yk$liU^t2ۙ rmд?iFebL *0nD s|aPky°2lϠ\vszAn{oQdۙaBw7,mhB?2qU>2&F2' s(&ʹo{P+|s+WĕtKTwA\lٝ#B Ň ~6x*=!wCǴ=p۷{ 97n;S]Q}v_g7lXvΟwy;$ey݂băm쉻{JU,M*[849k;4]ImLCk=Xހw4Ħъm+be<m'K.jH;u +$lCX1m(wO݅R~] +r.|DKƈw]ՐQ +M_;h1N~o6\a\Z;%̳CbQw "ү7 l\G[JN y25Xg@y17?nKT( o))'*j7 nTlƕCwoAB᝽v mL{KR2JBڨ ?-/2&B2;_zc+lRw2D{;aeR뽱o@;ɿq_ +2F!9%oS7]K>f;#-E^.={>sh" >5p_pL\93C?7 +ϻrVe w<6\=2 1%ddܖU TIOߛ);Hm`/~g2Nl IvxߚO%U`7д33]kDžxBRi37!߃tGFĎKTGB}rM>ʹpc2۽@vKr7 y\8O>nj(yG^w]αgsh[<^w.uv繃0>/s=mб,tgI 07c#2zX9bNTe@]dR C]C`couIR8Sz[_u=C\}ɧJ`VoMcҺwfPK x-m׽s61uygĮ[!"@iOvd擙e+>.OFkO +hȵK8!vSPiToXЩ0Q1]?r8':%{뮜Ⱥ[R`gmS*0:C}! T|P;SۅJVྲྀ;K'BkCM > @5(ψ'@VYIb`5t{ s">vKZ`uNBC>v?۰1yqk@CLq<4Ŀ˗}mO3ki慉u;2v"x~`b-[}}ii(gSSnA +:zH̍n5hcCu79fr[y1ѭ${C1& +? JӮ>>;cs h_RsbGP{xh5=Nhx>ZVMÖ!?hcʷtoߑuěh3ώ~NI r⇤~V/b\'Z FBhUB78Uj;)xLG%%[O5*׈'&o'Y~XpI5|>EaD7rh9cdjOmw:f=ߟe#s9\e +sEhC[BKdlIQ(q $ R~߅Vh5]ċ\;z[)X'T N2J4{LT3p,</Ȑ -b6d7s x[)G:<-/F)L- )m %K ؆=qaDsEHE Zvޓh01ҭ?-fƏ%)GX[pU?%`lNtOt0dRKp܌(&iU=G2fw sH)M١,RM +xµkgMrxv=z>R(ɞbEqcyeQb˜:o1!΄VLMhk4 q H[O0D]o_ZQm' 'eD|{ɶJS.BY\4OaCX 6<0 0\A7:rH7I@x;L8ۢ)1cy0I9NA@Ɔq ]9xk@gW*pGj_ 6;;! Wqj  EI3|0E^hQl G뢩5نiJ6b^_J5oJI[荢X'ߣHt3+D3 ]h@`…rꭀiL]JҔtx+a4B-Z>XAծXUɜGCAu+0}GIwG&3qA'1$3wX.J;k% z.Lb>!Z{!fv VM1pyaRY< M<¢fRg5!k{*pȴ),PɮFs 絥̥haʄ93$=~/l0512uE GOI<.o%#Kyuf]%()/r.ˑl|)m&O?qSV!"P'HⱤ w).EDNQޱ&qYeGS#QH4!yƼŸ*͂>T:i9F7zm|ۤU2] |FP8s̠BJny[Pam8uu\`#R +Qa\CMr p1J;{*(q_V8*G鯃3whh9Kɷ} d3xKtT +/HF_kh֜;QsfG1Bhz+0|v%ƥzJ=NDh&ye҈"W_USX)rYaaX" q8f7|?4rTZ5S7_AʃяUQ]<'!*DRiv~5O.\`rn<99DnT6Kt_'y [iL/T *-n&J:tp`!Yz]+huKKi=Xo S: aĞLaۥ|{Př~T4+{ѱ\(LqVnn\'5C.[N& hN54h/'8Sy)/#A9$VE=^=ёޕ]Y\U3]jϵ\̝qp?{$dR$d6ir%] $YM +##>E2"bފ[g_+d9k?B ?r GbFVUI1s1?b:x\Yjj^ol$Ҷ3X|XX ˆ E,"k^1[(4B&Xi5a6)׻A~B)[ˬWȽJ 슞iwʀV +%ǃ;2=jSxI&ŃUnNaȪfkLs<X *bg 0yKw[N(]1J53OĢNI䍹al^uW¹*dFQLÌؐ&Cx sPaLU mC/Lр2Ut"=b wmG[ MW!zYTrّJ3>5 qeNf +ÀIe7I;A2j}8@M8,zG?CkXk2C580)&ah/V B\TvAXD)):RŅ:JvOUAI[7 PrbSĬtY\a$4`VɺfuOlHBOBSXZPJ5FU;i:{i҅{܍#sѧ-ڻ.X*5]ؒ-yv>&S;`f VM;r#?b9^pO?s~q\zKRdG p̲[ +z" $#]b}CQ~\KZ?<:)%ĥZ4~A:m(Zw=!"Agg/Cn^˜S_̸qV&Ѝ1pk5nLZWQ.oI0kqt8Qf`~u'[Ѹ 3< +F`=b7z$6{Qy܃qs8 ]#w5p 6m7d3{"iP}?sB,] 7!q˶ ~M`ܿ=Gq{+&Bafq=#V>~7S)_*66sm؍!`} p-. VTgC@gϟxzt J@z%i1|kvLZmSg7~ ~W0{gK^ TJ@G B99{3}ǒPXX9<3}o7V;ۀpA܆P?}wԊz«(Jz;Jh:>h2m~oJMR-$k+uq] cĚ!QOGxLpq>}F,sb!}1x}~bs y;v3 ӗֵ!O k QRU3zD߳wC2<|ϭI7?}wi3su&7`&3wxzD @~A/eBN$}cp*NB >|^R^ѦQY3`hWɰknżo)L_ +)~ +Fɇ}?OqsޞF<$_cx鶂 NJ[PGikilU0*$OqͻЕu_hrO`[8+ĕJf/vû68Ȓ+ Yg講R"MoB=K`|3u{;9u5VšI-$cahR2el3zg++3$m,tN +GDjhDQ0G"`:DZ,}!$Z3Ŀ8_Sq~{r"JBi0_-̋,=|g9DP$ n)@HŢz!Y#}.l\]k=Nhg2}o5OqC@~6rv#ib<!3nѮ̮ [QgIbģJ1iKCߏcXwۈ"AH( g_帬J oDzF@LVGgwyjM(B;KMh Ew؝4`h/R*"o(J;A ;I4ow!(yGGІxCJKH?/uB>:uyK{pQ1^zHO?g\sP&Ϥ^.) [Ϣާ1ynv EB<<e8 u >#VryU2k4 bp12.Ф`MJj,ˀ39 op¼oI4x y ? +W b1Ë,sC完~#_ aQ4n7ܝG;_Sfؑ/zgܧqvcԻ0fAĻc96Fsn1=gM~ ᛿8?vإ/qet^=fл^\ cf.XV-^7`1d:E$}K;D3ŭbX[@>"‘[5VBt6 +%JžI[QZfZgj<5zhS1ycЬh2,FۄC8odHY;8( +ONi LL5yE3~o6#ߝţ$>PH49 MCy$ >4I0g!Ha'>x!_nC(elC>~'{I/Oh87$y4څg3XYK 2:yo,v/7̥۽CՏJ+!f6&*5,ay'&y$pi|OcC~2k̞ ×W}#ch4%.wƶ[=g646Lg /w܂:W1:|lej:(+zίIöKwSs0܍]3˹0{X:u˹0~e]l^6I%#/Фq5Z0&"w󼎢7`JƗN8 wJOI43q\YwJ1|n=|6N!^=f:uh'-,Aǘt5D9dP}r?jT>Cos?{ Pei<{$$8?|͗ԭ1ym -krx}D@'/orH>/{͍.8%a>7v~P y;6.myԻjHV4.k;^Ժ@EIr@nUy(AH:G0Y;u8dGsgڼߚtmo8᜗k]Ⱥ/yfYw V1l{+ms ~g-VS:x6~Kԭ/pf]L}qCwyz) o%? a V(}o 6|ƾ{˹/xd5 WFa-eX [WQ6z7c:[fSipM3v8;'MzǾ&LM9V4ov G}KCs<^ZgHg3d}7/f7a;GЮa͟_QC_9Izpn{<{>g|?8&}8_'gzP D9hmzȾ.iP% ~I8F0IAԻms^F8$1|j4#_%#?IUm5vs6߹c0qm>y!2k6Ŷo~ncfD;g!ظfuqhAk}~J?6m`ţD8?|^GQIĻH$z=<+9tv#]|ǰoo[0웽mY=z_] +~I?÷u+Ҁjp܍#7⹻QG`/2}ou [XwX%P"=eHw 5qF9w'gV +-4p76 ?|*mshqv>|wh2a#W L㯀oB=>}8M_s768Ϣޗ[.mevOM"@G14=z X2ZLdDJR( >.p۽۰GjH`= x$H }#nBYKhB9N17ۆP Q +&UDţoZE:w/yyr=\}<͌v#qt?(YDSwl<5:|q +l=߳{|ͳg$yq!;y^7"3iovΡq@}eSpFŸd1y<ivbMP )e +F?)xu +P%,&m&o(7ET:D'mDo5] +!L?t96 g"5LdHF>ho +鼎 K8haރq +N"'đ4x {r#L0tj0%DC}I?\r ou7 ܭhD}"Ϳ( 79<Ex&A}Q&!~ Ɖ$ ǾsTȇ|8/w*Mč6s5BgV4]m#~68U5|#4%?Ka2/4o7LZ TJ~$o%Aaf=yY䳇.=f9l^@8&Ζkicrz%~3k bVo[6WƯ2zkAɑ.mRg6߈Gϣi@:&p)B~9x"} :VBTE +̝V+"o7"z"7a; TR@N/g8$K?²Qy+hLХ={>(39uym%܉?&D߇<dهMyFn<7w^ SfD< C}HĥJ<~$q'Di#q&C\)(37ğ>O^M#ɇ3lwϢG Fo >{x !OxQDDZ4oǑ/=7_F8 Xu&̆ }l> 6tu|LZ]~>{LgߌlƺiJ>ϣor7L_B.uޮ Y̳inu ZMz7E"Fuc5/v̡X]˻0whtLߚBš8` Yݷ_]= Cvoqwv砇ceW.6r%v7߳ou :b/49(?gq~q1]CgߌjúhY~oJEJS*oJG`5sߨs?*u +G_\_Pө!ntŝXɹoJMIb14}=߄> >{9Pdcy7  :0N_3m<]=g 8vf0߄|Ρ)svx ޚcouhR0:= <(T*"s(yf!^9A}F'mx~RY@{_fﭖs{ƾ\}@:PizP?>(Rc>; ؗ6rxO]$هۈ Yeù.ux׆gl:r k9㊹3 ]3k& cj=}[K#f}*n7m-j~kI^2\}s(W2iYsk۽X ͍Sil9oŬ;m/8`%;yX8uۗ] )DoWV|rFgD[ 4>]#8w<&87PjDßG1 ضu˹7vu$|h!r,Tï4 +y8 K?iw:MI`dsWuL 0YZ↏Jj +@ a$]V +0{LF-A"ZdR/PKU4{Tn",RCaOI!B9[55 ZpAjGJ769V/w@)C O+ C8<(DB$VGR9K/CӃ\p:QDݨ<Bo +SQ^4ӋO?A]KG svu@I +pW91dGddR0 J@41>:d0^qhRLgWR Uf&A)˭a6n: +9,")a)B Rpȋ?#5&ԘKcOɌI$7(R"LDrrɟf)l$m0EmQG<(iyHE#^R&9JWƟ(;e})J+^F'B*XI F'Q%Q|P B 8UҏI">(ܠ#OI뤟FF\Z +D2HRIi&o-uhH#I[zs=^_vN|sQx؂Tؙ1erdw`ؕ0 9 dv+@n~[8xԌD!^BY_DQ_<;%FWeTb{pׯ%n$/p>"8$2$/r3,tW|d*TnKT47e*qd$sD%aKT$HG'/w\1krN$'}4r)" +hhTɞek"Oc+gR>_7n6+TK#KDbn 35%K)a툋 %nJBE4˜  + c꺓uq L(U>fn9J (j7]h&IY[րQ1]qYw]AJ3Kx9@6.Ed*YlX2Wq*4 D3D8U,sL) yˬ̨ KE"X +j'z`"Jɛ)fB\a"F` %Ţb Ƥ>w$N_["㾥OZxdhCNxɒՂ"l-I?&`d=rNQ= RCo69|1I/h- ݵ kv'LjG%SpW+^Q/9ĊW!&͊zb˕["[\RNȖ|ߐϢШנȸuFdz=>!eC|BtxLx|W^䱤OI¦٨oKXx?n)SR:WX@Eƽ]'H$\B1HW+xxXP6Tv>9,}\eي'[b'Z͘(%7,cp0Uj4xbH*EBĵ@. WLo.+)t*5ؒT?dWy\xec=:Zt )a6/Qn"(Vn `[ci1z) bΰ@.6#9_ k|@p97 =Bkk`U1(m7WRzU+B"lonj2A!Vc.C.53Pt9wm5D}"I&$nD?Qq))*/nv#h9HQoZ_ҁ[J@JcJN<&1<ɋ/AqMPcW@aN>ztY86FwJE> ƏI觏 \H \Pt\Gm GBs!ȩH 29#.qH`Ң^ =ܸ Xb'>`RpУl8\t/\eb#bRJ5j +L W=, SJؑR:kuPH?O V3`8ȧ=Ah-UBapHpZ!A&لWѺgRQr\v+,Tqɿ܁N;e활|Z:2mQ1nIF$[LTs9DG#"+"' J9O혤>&i;ʉL ?3)a{:&+B"INxIo39adS^X0JRʝ}~ZWxrJSpBJcळzl||^I$>ukpM+uӇ; şu!PbϲIQ^C SVk.'ҹ[ H'պ9Kp%rA9'BYG(JG(JWh"jsY)_OTo(X7,oDB,t/ (1iz"r#o[If gȪ}kA=#hD_Rr@9S("كw)6e=nwdFJqsaI/:{ZWRgԠAE `V@0W^JP C7qUȜp K +^ >=܆O$ sדUBRZ3ģϞV-&2Rr)FO +H04 F@W@Q" }p :!gS@ +<0CGqIU~bMIbtJ P<"Ө:u<{ sq +J=H2o3luc.se[D;r cƕlD gjpdaźpA)h iA>}U2,+7֍KҨ϶VqtgL0 SLi'6G F +>,lx N4z=O3W(MM: FĢdZ M$O1n±Y;@,nE:vXc% )JPLbBҖJ1i/ tPG`|RAG`CD)IN>* 8ׄxn.DbRTZl` +<0H/ˍ:2+&߀n<CX B,e.R_ @|_p͆;mqR0; +oJ<{x͟) C)ڱ" :x2yp SV̙/rf Y=#vߌ<-f1K闠dt.re]=5.&`MòZ*L?Tl@@;멝ci7o$:^< +] +>{`x+(hg]PN ĢO38)S*&[D:"j3>{cZvT6*&oĴ $cOi?.&Ӫa_ЬDH,/uB'iq`͠ģwahmĸf,G/=n֍N +HJIOP"Zcड>4l J?/T }?jPZ$5SIi]%#V`>pJƋ43lwvqKKJ8lP:7&z(*Eq]dKT)$F~KɧWKcfyQg/@H9A5WM +KOCi߼(= :0NRPA7t` N8zos?~rr/g::BgVmϻaBWiY5>g$P#QlP?[*FddE6mȊnF 3H(d)8w+}dA K4`JJ1ziv`XRj[МN(᭠ŢUf~hO0iG0Yor!Y62Itj+ҨQˁ De#֮PVRMġR}n,˾z'F2U*%P"k>F[MPg:+}csn7;|lMt)8N^jSHBJgz"TX ›6Păsw9=|6v(dz+]:<6?א|+H緒A{t >Ϣҧ/I?zHP(sRĜiM,ē:^?*D"eai_؜`XP!o#O |8b!gmIyP R's#@ [NwaV~h\<~I>Fomƺc-eKi{&jϿzڿ͈Ƚ,'0}iݠLFeMA unJ>|8:ɿ1i'0dўAI?@9?0Giu|S٨! ')-z:>kTDLcj?oC(@#n3!< & sbsuxO(k֕!lqvIupecz FBi*vSD{)l+Hh/HxWɰt`pB;SW#xwY))12 ADj>E^>=be"6zq}1zlh؋UkOξMʃg*@|KܙyeǾ)΍6r#n]aC`aqe[q#GP6r*}ò6jmuwIg@HO@FLg6Y;QHBJcZ} +"Rk +}ɨ@!. BC}`QykмrMGi:Fo::$pN8ByRDz5ę< s(VX'z˹E[O[gm蜟>,?~^Iu\g 1@9Ü$ i4|-A܅$ΦP!9bYOJx?y@ĵ22m*Em#Hot9_ܟكa`j73:f/͞k5pGqݝu@Bf-dv6u 4K{] KN;)4> Ě:@o:MKmKv4E.pdu˙}3}n"Ϳ΍2wkP{9 nFg43nK;36-g6}00l=ypZ]Ybcg/vg=wpJp8a{G! +*sw Y +њ9B8E&#N7pzx#Vs%p̝=*I`ًÛHS\Fթ'qcռ{q.Ŭv| EЭ:֖f_ D.v*صځIObڕpty*TE4_ ŧؐ%DWAylPM)$YI`sJn +  [UV[5ȇjAiCyp/,9ViMBvJ^?v?6?6<ϋgТaҰp۶&0wj],4o6t .t- +/~ecE_趪[)]!Un,,n+\ + +rL ;y\PB:lќШ͚\vy1*$#4<]< +&$EN6D7ɪ!ڍZ1{ 1ghG8Ib{y+ +jWkDsBh36E6/2nm3q~l旿-snq%g bSH`THrD,Lk) 9,Y +ȺǑϾBP'b`@+ kh t\ ]II:eO +MT uXv0vi&϶x%vP<;׋CWzПtV6Gn~;kIva`҇C+cXUH>vdh%a?HՃݴXۄ%ӱz-/ZXyn)X4چCi~ۈl;үB&ź40 z ﱮΡkCB/\ЩMXOTBP2pq',AԎˮi٭u¢EP^GPaR@mć㦥)\鰍aم: N1QIAoEArMYÞ|+~ P@^AӈEڈ4\ߐfo܌Ģ텅RZKـTujģsX[&]w$"AzG ض;Qk pt8:rk),h5&6l3(3jszIUsf:MF@[QT|R.(i!A[!ri*# Z  ] 9F*Qe1̳8}wBWt8$ R+%$?h kvhAi?5zԓa6nIrlu ZUVrY(V*`56A +9zJ%Dh'8Xc (X WPVe&]@["pĴ<}v)#ܞG?pBƓŒ ʛOοС4n&Ak| _]3ڀƼw5xuZ U‹ӧ6ءqcݶЏt%IAgfhV^Őby5ak8#. HŮL`c(7WP[3wYt.+e,vDcYDBr70?4d#gk'M«꼥u~ijv pCv%q_p2ju~MBOv>* .|^l +iFBtNbaԸyu Fu<H ["0vac\ 1acWT `6uH}$hºAy+jT:_B?kgy\8\  0)\Qfs\A])w-H)o|.!9s=7Bv0qj'.pR òm!8/<Гz}d t [9x۞̽nKvs ĽZf >T0;(ÔF,n8 #a +9 r=9 ŚA6_XYh;O$s0pu!I*JZɔli~UD”|/aɩ-aHiB+)!Hz8y_lm)Zn0pEøGw-zZ}{+mv8ؓGn2>0]*r``%,CL|$"KFt{ts Ƽn(Hb[B{S0jƑ7gy\v)`MB%A] r'%~f_MXo1~DY;"%`%5ޙyøkCaeB ݊Bk"ŵuz.MSՄ$CUYe$]fe(`ge'`sY7ƾ@]IDl9qe)!8 FhYw]Iώs%)>ۏy"4XҼ“Y +Ⱥ'oQ̣<8V6>\O PHK/AA- yނu/WlץjJ%xiV>ABª9Pd^T`he![G& +۫ 7ytPeYi1BA`&eޖoAԫ |8^G+#;7-i70{$F v(0C>ȯ|pv25Q'^B=#,i7tP#aT#Niوtị_ζ.txtowv _º:V@gBw6R"˫#.***#PΒ/ |% Ve_Z|*@ b)ĴSJР^ ba~ dXBt6 h,:UM6ЭaPB:4H] RV0oːe(8B!@盷KsAV^@B_snTb7ۊ .huoZ|P~x)JlI<9Y}(6e( +˘d2EdvsU'hc?\D൓RR.&iE< +PJi!k J?)x;hռ!h]AD *|9yXW:7UX-}ֱ0t. +\r\rGE% +\Pvq 0{mc?_1Lc ЀhLBٕkxMAu&4ӗp!T]6{a?Ś+92G@AZވ3`aD6wR}79a[:_Vؤl|rlpr76F5ŚxڝC׶K7XЀ8W}<C=D8'u@5HiXK1$R1&Vɱ T1X f^c OTH'2H( L#CT"[-gVl@VOKa + +wMYf) sbḝꑹ Ң,L*̝[fC2d4r 0b +H +oS8}:nWJpX wkJĘ Lq0 pngFFThAO'ߘqOe%`*6%eSlBAT?)A# dKGEp[0m^V۲\Lٴz|(N*VWIܨw:! + Aic2깠z(>!A1P\oGf|sǪ%Ѝ t& oT8|hQ1M l{vs-he_`վ@r1_utV6.SٰlL:΋A ' 0G2{sEu2q'(^Ce>px#dZ9RFI$.h,]Y5 C Xe|yJaBY%$eaNKFUUUZ//ХV.WZY_t Ye!ʣr0f̐ԱNρ2A&P= WU\4x fwb`#*C(XYwX,?]_1kh,弎l^ض\ +8&z{iN\>VԵFFƧ3"m:Vd)KM dI Cd&Q[?,FjG'LR4_TIyrQraI5+eabVV^ v1+tPO wfrc#]C0@@iZ2,ZgmZTbV [A7F? O=@/[ԷKI'3"GXYK%6p7",y *X:[0@ݦ@?o/f4I1(W/$|yXG^lP~EUfq[>K%䴆#xjZEMs񁁲 Ze!B1& Y!rW'83至TA u.NaHg 6B>?H9 +ڻ~ȇ,waC6)19V/9Xd$Weׯ_n-#P6AWH + &@(UfQ'فL ?«$W7W5?`b6xi`&#ULŨ :GCu Qk.sԍdzOyz0Q$ `JA; + `q Å +KO%w+Hӕ+0U6r!A93,n~xHfTt@tQ,&4(؂*TdvUoDԣr~LOB/>#cV4`yxN" 0&*fs4B9gr*<%MSeW6C+Tnrr +'&lWd@ryf9k&ﶞb5g*.cԣzTRdo8u4,AA_: GFNPOrE611.D +>0ȕ2qr-pP>1U. lVnf!:L kYYIPEWae)7*BȐB*l}+\Pݍ@ 0GRPd!u-Qu!5'( u JDBQ߰Էzރ9]d-+/p90Q)Gt%nEK6@}ŧDDNe/@R- lDsGep40TQ JGQx_R|[JXr +:LdSr : RCSـRdԭ|z&C#O׹8^L1B]'ctspYz9 '!)M2 yfsP 1#JdI|}I!PV B6PTԹzP:mF@_2<ʩK2 x:T QuuUpZge.;d`~u0Iأ% B#. yj$^QFp70u.#.DԹd%uncԥlwhfzLM3[ lX4$C&x a887vp~}S\cG' 284xrx8>ћ1,_8T7?=Ƨ3P/@] awzO;ݦt.ӗ`pN4.:2 +`1@B^GE\9JQTɩW1&7>1 a\9:DQ520r .dX=oS8=]ʦ7S8?'c ,২W u!ezo ӓR j8dZYaz98*&YG* ˱Q/7R/O] c`!sl5לLxFFA 6=8@=Y2u|fop1CGOpWBaH::ho,Q4 bKMS!w&t 0xst sm:N;]~kbݥc.CDH2}[x% ++hb#~~EPbсsC7M">1upj6`2$MR3uI\&#HK+FA`PF[jp!Ӈ:N6}ϼ"ez taz4tPJ5m8Җg`+`In $R3$53bkdILq2phm8 bF̰ d#2e|F q,KgXB N2A0lv`(W^W"v|50E# fKp`'.7ddg$@Lix4FfF89evXfY4H!NTme,` + 0Rq>kK-]ZZpzO?{K6fE:yA<0Kkeޓ!JJp;. TmiȃNJKq? '[P1 B$r `705V9=,s|l,3_6hᅞv% us1=teL1{]z{-tniM2]L7}E"hjN11:cSs ̋HPp{: +Qĺ q2ce K a).6``(Iix43'&ME6.1 tq9a/(mO5$~_:Lw/=no:M0tlo.ݥt_K2}: +b5܀3PQ nACl᪌\y`P IuRʏ{A03 VQ A/ՠ/4u Ӆ:N4nq:Po +Z KMmKf+0@XKcu NTV K*Kk65ӦiҢggQiUY3-(Ԕ6[UfʚQeijigQkgY(4*5*,*)+-%+*))V[ʚZR3C.řYQIMmiUUeԪ΢ִVYQgZXVQٳ4mU-6]3۪mXڰF677XJUeeVeEevEJREUeάҢԴkgY-, 漻--K ȴdSdPK.l8 458fyf渜 RxH U L b _V#I{-Q9èg0_"iG AoNC_ 8uwRhoREKin1ޏc߇B8Θ}WLZm9/H)mqJ #Aijm~Rh/^~>|Atx+> Pn#5o*tih$Q۪欽9;:CL o#7CS,,k)-owX Zwc͸%)..Ÿ4j& % L q%Qq1~k ^ޅCT :+ _jOd_m 8bYb4nf/&+ 1L V7t6^R T G!~47Hْ\<7[i_ЬbXK/Vw۹]`ź]pa̳{Y/qe5 dp)S?e-qDA/e"F%đ:yEB"jWbZIV"ڛf\"!OJE#ţЬ^OBR):x F0&SDio:MQ"$ B,jdpQ%&o@}8fO"=:alQ"$o&S1J6 0W:>;0MB ZC@~YS\ҾmUe|]A B"Ǒ/0)qD/O "C4j..xjǒy35:vO D7pZiAzwd2@2y;ءi# q}$KqsJIGlova;Z[場bPR =' +NI6!/e"Wy=Xưj~I@1 d|?|yp!@<~l5vp#K` imx\MgEP7M>$5_ȭD +FTeB%{( ,tQKȨj X:^<"fhW-,q'UC\i3")ʅfβi's +tPY48ORDi/:DZn>"V R;Hہ.&:I+Ig ( ]MgۈlD<$JƮuV'WhU3"$)4I'DH!J¿3D`5kS(.Ccf7a:4/SjRExP}P$8bAZP|{F8#yHY#u~sF?CHħXXY:Ļ[ C FDDk aD<n9ێucȺX5Kg/3:ۂ>@@^qd>tMb֍͚P}I/ngۿ!S0B1B;*~Lwh/yZ@^ + 4oZ=o$g@b1*/ y/uC +;&vx3n3LVp MB9Vz{A9W:* +5&&f]`EP7%4Ջۇ/.(%38i ;@k ŽN +o0@~)s3/tta5xs_6zb V.&/^/VPoF4&pIc"JBj'e3zw7x./?u~&o"Ar6cpnL)wj4|g<z왗g108,3V7|3zr3m%KygYG?P"Im +7[F,הX)_fƶnK=2{l>FohY=|P ~C}` F0zOpL"6{vq#er!G<)Dz5̙< sUũ&m$T˅ЁNFAIu\c rA9Ŗ_ă D5Reč(Ɉ,lp%B~JU=}g~XW32 PE,;[l*cgYD%R7Ȳ/xxx:(@tCuhGoC8a옺4Oqne6~qd;{O^.{:~Mp2V5;.nl>Wɨ7P0oYDϯ +,z$̠܅[-W8t31D:o֘4o<\0m-?V͇u?sa/sfMar^pT..m'DqݷP( U +j$"('̃dhZ4.{ K1{i>(,L'ɿHrKt %ē6 $O1Dٗ<2zl׎K@{2]WFy Ã@#_@ZR_a(/th^Tqi3su7}&XU|ksiȽMÍaji DZ\ +:i}2}oI&zH)ؐOP'SŜۄ/NF" 0^mI\iی>})'}qpø:@FX?u(ZIA>9&p}>6abwkZ{Y*mp . +[ g5m]:ms`a *'9ÈT-.mwV KŪM +D:I>G컊i 4q˛۬sWd)xۄ9"gfȡ.gdK[ncnw/ph9nm lo7&#M1AIw.ԟu7akptx][Ů Y=VkRUÎ?{F}S +uW32k({(hT1AG;H*q E!,iOPZWx%30)7(9\CB {AǛT8\l dRq LF"p.#v|"N4ZD]~c|+goe OFϬI$O1^Gqy?(7oXj`@.w8? _ZG EJ&zz[`B }q.v˅[39qQƶ7)u7*E<;WG֔:·(- 9BJ'C{0U&Uś"gv(6aq[w|x~e_I5$̅(P|H uyr"L$*N;k"97߻;Gw&$[場5 '8ciԻP S(sM|j²ۜD;dsw-mwXǻa.rgc6c:&nޙ<k40&n LHvQvqxKhB:spZ=a^QLH@TDQ%(+VNKH诉 QŷY8M_wi0xh#WB+} ih.>q RHv'6f͞lE vWRB\ H'ͤjh025Z'Q>h;"ڵp(4YK[HErwll[\LuƤģ7dT*6_:;ggqcg)"m1# GLk98.!Zf8.p^GϋQg%#\ɳPfצּCD9߉5>]󕳛Nɹ8)49|y\3G#eK`&!ڍm\Øw# h7(@qԫ-퇹̕m$k xUNaVF$}?ֻ>w!4owQ&gȴxjtV J|)ȩފK W`}Ä }B3;,mq{*hĹnRo! )8x淆:PjGHJPŹ(m&zI +xcج- +o Fv}$ +pdM+s,nVJ!'aҶ1lsή9t<Z@:-WS*uWUo0a/qgD:CUzKd׺I3(htpLd܈230yC1Jg $hxZ:4JA&o VH +3@s7DM@DI1) RXKc8RhLyʾZGicڸ=|_ u* #$X /3ɷ#yW5oK]6^%-g7'&?{7^ ֵ9*jûElv8s^TvtmH O2G0Yi?͟1 VTxL?/IoE߿ģi+ =GYQ"( ;{E"OZHF['!;aȺ>}6%N[5_:hR6 8;vC@SZg1[/y3&t:Hc(&c{A@+yCģ_=&} P!o!H?wFch.L؇/yz}p9/bsc;4Xy ӗ&p,Z Lm shǻHlT.od]fPg0)l+#]5òj{ {CMFg"vwȬʛZS˕JJ7.BM~CbnL [Wu[0,tihb[p]MD A>'Ά;6/5V6fɥqth"NB{(S[[-M>;+gi|\VֽKJaTBU2,kúg% )~xAVzKâ'unǾu +n!xk-TIxOc~wz>? +%=|MmSHG|;ze_7ܝu_θ<|](67nnQ|&5: 5| aX;HU@zD]5sy=8{ ę t\?~R e}=o3PgRC;XG z;a-kݯDm7ؖ÷-rz|v9.R/.Z Y:pm""p!s]d&f>uHn[sn"ސVQ,57&f# PN10g#pN5t> ;3F F-[lAej Ib@Ť90{hsc_=&DM!J*7uc޺.te]ٽpn>J5hcrnϹ_X;|l6ah_:?8:#y7໻+wHbRn, X:Q**#} S͸pDm@~aɩ5Αq%*5^g 1~m FX;80 D ,&m +ML+ù-j~l|hC;pL={5O]0ȿ;R<$H4\ 4quPe QYcٜt[UR]V8Ջ[B(m9wf03 XXA>cݽW@ ]3cJ%Ii'Gpv;bpNÕ]%iL&LDJ8Sn8 ʈ +f4\/+"+{Ɋ:g.!as`zg:o F,z*&UzI~xGxraQ+LI3\ `@nԋI({.wm'サc7:ZꅣO.unL`h6b|D2k TIIed0@ImC` @Ât*͂pscS_9[0/sfw2'.ͩF{U8g?lh%#')3w= )KU nKr + kxŅN1V +us0}[d#r~qN/]56 N0ʊ Pq )D_:ܕ[f3?%u)4z=5]Y!\,:*;KIC +g8;G!}Ϧea.b#e/UO}}V4xt$/9b]x:`ѣ@X}ǎ/b|zcߒqrMym{ئ,F\ U k/%X *<=DJ\J~rHNc%e<_-~ qm6}a=jߘrO1Hgpޛ+G?wϊfAwݣ|YRԯJҢ]iWqwOwzX6@12 ),w\G> *͔ٟ5:`tB17{L`9?Z ?,5 > +?_Y{S4t0~q7 5o(k?k;揞AgOo-ϋ8 +`g]gۑoF]uq(lyx  ÅY* nB&Y㞺`qAf +fq/q2 sg:k&gq}lєPX#j[x!z`Kx2Y/`u/ SPZbb)y` ;W@~onA*߇C,ɒq^? oᄾ}{@eeŏzS]/.LwHϼƄhcfK\l~ +Yr'mp3P]iv/Cz6M)g?`ڧo3ʉp{bܹ$,#}#^D-7x9YqcZ}tJ?͔ugH^ +x?#D^Z[)!u2#=mL1/<ܑ.tu΃YKX_{ϋj㐻܂~:1;rg]{лa.ӫs4D uL?ߗaAQ'̬$7fv-Z g;3FAkj yp'~՛|u#o~7vz?Cp~nϔ )iK:![ O4_R/7HBA,B3k췍C\;y:q9n]KqdL7 OrK=$[D^$6w2K|w$~ m0#YJau +m6BzO܈l]q׋@ޚPUK]SX~}4wXΩú>.[yl%X' c\hӮXd 0aeʚlYA_6"yjyTQu>ϝL[%+7o6efݵ2{Hᣔ0t 9םȷz`fTt ^Ioz fa̫0?2ȳ_؎{_5(˦5Яo}'dꔿ9XbnHׅ5sT\3!M~{Mǿ0۟Ƚ~I|~qیp>trkl~ʿ|{S`oO#R5rHphfV!98@x5B3y +v?VFkaF@oiXBQu}씾kOy(}AzF9+RFg{~<<} ;Fw_NHӀ=_Ȅ窻Ru1~-; D.9~,7 ռƊށw*F bת`?PF/x ?([n`:4#(x=&8&Lm~tk$ !Ba͕I80[=z =x{#[SAyGz n}-lZc'C+HϾQSw}fpS59gM7e6Ӣ:.F8:*$yθ^pBj)QG=␈9$u}Yly1Nr^>42rmچjK?3]%/mW+{ܔYFϔC =gKOZf?4> P5%YOr@9>UX-TcM{QNW ^|gFgPM iI/]{#sóaAn(4T8>[kmQ7p׈% ]1m u1(OkT ݝ9yQ8# ?X O=o\0ǮQW5 TcMx5 $.[Zї'7n>HPPĶS痕YtY3]ҽ3JxE3E %S.Td4v7a?Cqf_]sJ("\W*Zx&o&޶P9E]5bRӲ %7>>㹮)5ԟu/XR[_0jΜIM6fA  C$6%K%}IQhh^"R $ Cg½i) y %Ⲥb*|*9u(8S{$tfbF=!Q@,1 AV> zi_8u(o3gl_P97ȕ9/ukK  C%n40tCx1> >vN}kңEYュ7X +/|)g8Bk̽!,[>e##OJSK5П&CsNc&/" LU*0Q\`g"zW*!򁇷Xm1 W~3hO!"d lP`.3.X +[0Q-dj +WA\:hv[p!8' h#q Y@Oa"0C$*5%`eEWg +)}\s ɂG\LHt҂k`c^5g4p3J!ё_IcbbI5,+jp)bI5RͰE z qxTzk,2QG3@@e/\m*&@^\+zJ[wNK7I١`YMmrsyMSݣW&|a;l#q,ƅ.Sޜ`HIuA^V{A;'zK9IER|04x!ty]z^Zk drW \BZUeʍ J{%G64lKOc BޠpB3`+oBSʕ|&/va 0`S_0u?~ 7xX +oAaߦjx:CB3:K81 XP0! +/9EʒU.O1: + mN_A9/Mƀ_Z٭*! +O? pdc3H`R /h_^\x4=Lk6Rn˥:ֶ *O>L^ 2^N#uB~]ChJ ^,*\et9p,܁^ytcքp=L]]ʛ7h' +SEUNr'Qb Ca^k`aFHk8{s/I|w)kcBlh׎V f"C /\R?FJp9*20[L5PX-B%. &J]HBC](]]&0ڱ1ԦljYceSQJ>I&GGx0^?N@ҳbzV= +0Yk EK8mhIjnc!z=0Kb>x+̌:ISɎ:ۖ87c.axW#BS&}~H[Z):=,3 i ;=-rmJvT5+.[Bn*N}v/^.үPT^R.L0/s=fߓ_:od GK˰W~cm N/ɬ:/ef7vFq:ʽՇؑ^ؗfQ +vm=XĨDߎO>R5baY6 +C]sD~#e1bqX(<_8UA" N7?;!+)p.YAb`GاˉBxEb'kp_(U( lDI=n42k:#ɛLv4Krp;&92aBOUk뫲͎6g6I\RbWUȰ<[G6q h{pr oݤ=5y*n @EYz(fJE y*ע1JR ۥI-@T~Hr+'Ow\YF =W(iH +Duh4~ԑe/,Q|B+^;D<ݾu-Cu빴z=C%<}-)e+c܀DMNLjpp +; +>}+Â=.00Уdj4j |M4:wer`D/>M ˁ`yR3<;oyrzs=:uf fq6N 1[ ]tZ吚k L[?2ђ k+~\yq>s= #1hx&{%$| +.d143`AZ ra?Ш9eҐU| _g4n\F`on?\~{@<֡WǑ`D")|@8qN +6[J&γ_ TYZ-JE)a ++RkQ<.!pL0 稗Q7A2ʎT-l j3|̡&(K5肈I5"Dځ2}^K; 2%EA^#s'#kt0dfb22俪&`5Jp]hYJ?Bi \E)6Ylُ@dDHx)̛I\gS,m\h 2l@*{lGlɹϥ|FU IߵKo2_$IчOCTh(s@ȟ>:\=,&yPyR̈tX٬}Oy9VQB8k*,%3#CȒGͭ@M\) Y 鐩Mxb툪6]kCVWCT[Z28sj +lH(P?A@kOvqdt}{U1Bh~wgRro' j3ߕ pls2bi.#8h@\ݰkUo#qwRfb8Hrَ) ^vI(LBNLԂ;x^Ê*q9ם0ӵ<28 .DNrSF-@@3ZP" G.B'G}v6즱N<>$]lY+09PP!ޚ*mo:ܧ X;0K^5Fa+tq?\CpxF#Ee'l4H_hldZ M'=/a\pRR2| Iq{O@ߒ؝*IɽIaFSL6t$|WOPc&(- .Oe(˦P(N燧;+N Z:ݎKb +; +lP:^>,*< R=;wh"702MtTu$bpv@9fDk^-|b +wNpIJP +7!29:(DGr\LP4_cʛӞb8Y *@GBOS6#azg,J. ? +_6[\3O2sUKP:0f'YKtGղ;{v}r";{ gg*g_8gA_9!>9ǜΥ<1Յ++iw03Ujm0ߌծ9/]a'(>ȫ-zw_@R۔M8 +Ј@u$ͷAcSE$4sWtӌFfExsǾ$4XM!!433LwGj[4DKK)n )=z)-HXz7:9('W-hZ9c>U @CYz5{> ozN2PS79Lj)]h yf}e<])~t #:`_?bȖ90#\Q#QDb-)-FIHcǗ9: pk%8iZgӨ$o4b/%Bbp +׼˓hRIo슢KВ]I(HnvKr;k ) U O"~rBS"@EW wU$ԍ d5dBqR &[;$OɃ.-ǡD%([ZEcL"y-nbph)%$2\Ar|$ap(.Q#0Jll%Fq:7`0ʷ/z:i5;'Uу!L5+?|/așB>~XlG( mJZk'c&uMĕj!5P`ST)c+Wʽ.m&3ӷh(sEQE3 ߌ45 _R~/"JG$3VظiKX/A Ϯj 2 /bcEa„Y!D- ۭH8gfn˲nAO{*=M Oj\9U!%-\IpiL7dۭjH]4ȃVW-&IHnY`B,8R Vjg|c/TT( &K"t`=^GOBOLQʝu;!MM`R;a7̮0qQX{qibڅNKZ6Ԃ)eM5}0 tgېf7)Zra_wC El" zoM346Ru#Ѯ[RJ)#QNc_4 # +8 |?XkZɎ2iDׯߙkk֓VMIp˖տWw`t?[N[li}9-wڟ{.Sk/vn-[)Vҟ~Z7]l_ontxt.7r??SzSwu=v'ToM{O\1~ʹ͝ڟs̵sߝ>_;i=s~[s3iN.ՎӞ;w5ޕ^n_Z'WOS9s?7鶸ӗ?nMyW(4:ogntOuP~yNvƏT)m(ԖR[jXIm-4ߡzH#a?bKD-n8qs3EzY3-=W}wwn׊9V}íqJjK&`xNmEj+C-R1DHqG\Ϙc-[cw;[^gYs7ݺn[5oi榮Sw]K{1wzol{K_]o|sn4ougoVߊb|Ss9gX^:ۊyǙoq~Ϛﯯ[;o;]靆YCYS_X@*M6)(Fc;fϜg}77ZujuV9Sq8usU9ǣwƜjef"K&{+L5y?oҬ[^։fZw_|ޜǏޜ߿xpڊ1sׯ:{߽Wk}9s8fk'ʩ~}gY&&^nbnb{͙YNk|nf9nib7777~ojo_5~ +=wrǭ1k}cf?TL,-\wkmC92g/TyR~8w٘ )NbC/(Rp 7V,*ߘ{ru(rĊ}j~$"?r&+gGzS[,gk%^qZnͩM5N艪rf9kr1Ó1o,gmJ0U^ >$khL4/Ûeļnf凚YO +fsP,UPTIlf8wu繾m[?ƻ}co37k|9]m{VoNAm3-6s gzmnnomZZrq}jV{_]}{oƶߝ3_տ{7-ׯm^-_^3'quk9^}{c-759̽37߿;Xsuy5۾59Ù3'J3̈́5ϺcZs]5Ɯ>} g Y.NVZ~1׻v}sX+3{^ݷsŗm[Zꌹ9U_no\j˭׻]묯zZ5[_گk;Ƽf|]τ&3]?Jk9j뾘q}\pLh^no=[9zs[[yƛߌo=w+[;ʹ\g3gB<_]r8oy>־^wso۫/uwŕmy=Ù5<&[ovg}9Zl;[swWg83Lh?[kl5ugk:Z?Ùjo=}mgBScks8s9s7Νw\9 g޷6Ù?sZ}q3ڽ~qZ?j_޹uݷ; gkxW[՗sն댱xg~ݶm;;S{9[;VN+ǺXל g>nֶbߺ&4+7{_6cf}vNw8gk{m&4:oo6m5 gϫc֞{ gnvZ?WUcm5k=ھ9j?o}3m&4nk:[8ÙfBϜ(~s]1֖_[u1/#un5ů+f!jś։+o1o獵D_/^YirB'ʶo5\_c +eer<* =+If+Eμȥl9o[?yVy|scJքO0bLV̓ӡL9[yH U'@"dc)GOjnݔdK6_Z9ʘL^W{V:-3b'XzwXd>!/6y'ǶҺ̂9 f;iJXweٙfm=kҪj]ێۿK͸ǵk8ZZcZ?{9W-ߝ~Z]Z+wu[[7}6{ZsWoju3޶u?瞹kYLoϫƵbl;m_~~BՖy ^}F3wDadlT Y)W_`7)_0QϘ`9[}|0Q}!U}|>A6-N+7}Yg) APbb=f:sP1 0c)KK +$=k啨Pf1013z,W10?T(E0c1Azy~`'fZQ"} A[O*ufT'U K9fޙiJq<*ǣBg>?W}|0Iu\lBpL'FՙZĆ ASnV0LD;zE'Uo +*xt/2*'FLeBy"l(0m`DHpܒ:aqt07 c !9(xT{9[BJ)su"cƹNő *0[8*p nl8p/ls1Vd!1!WD~(D``aH29)/4. .c z.Ṩ KJbQ\(Rbi_ +/TY.>Q'pEX6<PeóY27*qР+ +Q$DTX/jPMTVgR(pJXWQAb BD>kd(kJDoQL(q*'Q\$tkBr.&2 +19T&,Ti4gRQP0x AJ&n&" VO +1LH2IA(%9* 9<lKKX @Z}@~(Y`'0$Xj.B 3`j&p\`;B ʀ֥4a9p@ +8!K(d^b#R6c|8is.T\~bhiiiڅDM9i%HD(0*6`6㢁0N Ag Z#2ɀK#uies<ŝ)x6Ѥ P},(%k|@Ѱ1qεtnf6>.2uBe9kQ64ac:s܉zi G4ma@ӴB'i2i: mGCiZK7M MdoVA +3hVٰx@Ți.IC8D4MӴ0bo4MFM~0"XMӴOx@(X4̓QѴȺI +%B$BPpdtQ $iW'Ѩ`&`ʓlj &'#k<&,=V+QV+@bI-q~l^MқՌ`(yx9r/6gb8oBٜ|$0yb$`kΘ73b9ckI0>>@#SA/\ __ }=RwKF_g_6|X&Ɔ=ᆯNzrb#+D[`X#VLVbL$u5&J0M26զo Mlc-(:1Ycm~RP_] U`7_ъd M*=Y*# + <JTA2><B!bf/m&X6eH%&?rB |T%jޗE2LT'*I{TO/agGc6_ 8V̛ee ,eQ&=d}1y(VKs*Qcd`+c BJn5j9g49IU>W3jF2*c⊒2X?"))#e"ZFpU))W1/VlERָ'JP\Y|!Ic1Ua,%)1\ @GlE0hwjaU`%"XH~,5d{ݴW{2<HGY坳hXʏH_ FO=9[1d/XƊ2y Rָ,[eXJԠ/PE_ e!X *#˘Ge`+V#ke3Ҋ+*# +:zcl- ZoL"I""FlLZղ1iՓ/s] g)XH!BCA$X7.Vª PT*!.JCT; +3`Ҡ",0 +v& Qh  +29\@AV8 +2d-M%&>4.p7nl${`!eip,_z(#R4FLL#PTboª# ԔH0hS(‡rpA^4e"c9'oCSj&(- ȷ"6&i|5 +u es<RW#F>6OplEQe6C/+xb6ǃL_S70CvZ]( >‚<)3Yj_ hê4E**!ơ*˜x$ +92Ek  *2:?|*>倄$4)rd H[U&\<9yz)e2KNi&1 |4xF< y>Xs6C$ l"->uMI0Dꚗgb\<%Ul[N'JL !xG3V圼Βd: +*xh8 D@LĐ*1Q,|"6cNѷAU AH + \1'X>l@a +ĠsE`䅀# s! < ,miU (jŕIU3e&28l,_Qe@Ld. fL8 C""Nb(,!k.\ԋ(%|&>stream +Ejɧ"m>KHI:*"4&lǖ 4Bz8%J }ad<aTxbCD@^6ǣoLZH"" +R*hT]Dۃإ[MHfrx`,WL;/2\o4EEijka+?A@8Ny_mDSLj Sy(! X6$n"*nƁ4KpxT( +-/eF"HƁ vx7CDL&*Jl@ªAp <~vAmc.%LcBnWXYBc*YԒE!y jRCaLᡆT .TD̈́ + +5^b ^HLe D4TP x0dXKE$&ŕ9Xxxۓ#E3B +.6ǃ^1T,Ɗ05 CP\fԀcr%*yq((,Gc R>e,zC`L6!I +f0 dž] 3: X3l*6T:Z> `O&&)r. ,L9 XmF-0"EΤ ^00O} Vj@ E +5mtuDmA6xher,9JKh#qظ>ayBCH* U2zu|eQ0(V :LETZmB"t>3V{F+xBxF 4exX~=%  1b7ǃ 0lP &Nˈnes<(ЋzF@h Ȼ℉\! X mG -|-Ra@-9i ces<* D`H/V`_ݐ.= CV/b(V?%)HK`ta/2M S,`p*hc+DLb 5DS5p h/E+I;dWR҆> & 9Bw ̕C' *A@b&Ei#DG|fD,ZsYs9Hupa$j9Q0 hMxP1񳀡E`EĆ3R條4\Z+5U<)s ؒ.ZnE'H,*[.NnM AClnCEDUh"3 /\ Q $('k. NHLŨ.#k.GI?l,#6jS,0RFѵy)Hm&Uж 0~j#Ald "0R(,RVfQD+JKLŬb?&2% 2@i`33| BOAbʌ2dKJc2it 1,T`p_1 +b ץ+#%A2FތzfjCt[Nq&2/U(`Xœx< |uRYF2N*hLW xl+W*2J}hքVh_AP *P B#SUTL[B[e*"*PXStlB$h8\-&P9Xx$EbEzeDP. hZ#d x`H3U0:0 &(8A*3JSAoT@YtR0!à` 8m{p& Tїxl^b 0kYh E2*F粦QA(J^xJ -y* ` @ћWƾ,h H!=h_!iP<:f6ǃcSNb䔮\ +N +DQ| W*4 vVIC]cYQ84*H00-0FGQU4V.!jme2 +]p.2-D%- S"5 & l +O9P#sERDH0(RE:dmZ4L>J#8 ǡQA 2d RFE|Cbo0HJOB3RiU\GGL ^ݙn*K ؁)^ԇ;"7n;ruiIk)V0:nWjU ݠ\BJ1OPWY,LMQ2(sb1 cA.sigZF7,9z _dF8e'g*j^ztNE$N7u!rNY@N)RRȴLnNA\0diY\&~em`i l*8ՍEMA,Əɜ]A<낟!tgo16 F`lz=ͽF*\'chV yex *lSj$T`^ 5ǬUn{y)'y +yq,+#Ph54sUJئmSЁYidaFSKmN]$sxЇ!So틱6k0D1" 1U3K=TjT;uMd@y1 w=" !;7QHtˈ*[93*M$=Sg Jf(gk`"u9N+C:G#[gsjs/zNmyu# +Mx gYӂǚ(0 ۆ-#=&Րt% ٍbK f4˓?)hX5:f3MSآE(.6F^F.FHȯ:CK}O YEUڜ؝=N4&s;QnxVmvr9F., ̣ Nw @N&akgHxd]6cc6Wp$| R(PvW Q3<.E7scEm zuA<U/YSA+J_\uBh4% ,M/>\3S? 8O%`ݛ 2 [l6s 1F) +$w+|߁a(ftj2zdQ mY~u-TblV\ETC r =;q8 \A4mt +]  9Jyȍ BzR @f4 qh ;|01=FF1#2f~:e jO#mVXLLIB_AL)ȳ+͵G0<(0bzеs&z0*e"n{ԃN41dO#u)oFN;gR/^ޱV? .lƶa󰂪qIǕAȟÔUԤ6}ǖ a4rO8-z{ PaԸxg`n *Gf>G736LTNܜ:W\}AoD%4QGD\ur\(GsN{҆-{%>5gO1CJ N-uO%LHQCȚ)QjwDcY\|Q e E)rORT(UT%iԄ}bQ 19k݅,/d͹$6P֒*杲BPIQl5Y n;Gj0=>gfResPJ9KӸ`u|Z$绋eV!h(vh\(]s o*Fu""f}ƢM;Փۯ{>Gg Z + a-9l-x`#o5OnAoѱ|u1L Ol`?7 +Li V (RdGdBk;t+ +sw\-nX%vŲj1!,'xfяF;WW4q*|xZZ&2܆ +dC ʼnsݹX4NK%f-|^!tPs*.mn NT_|qsҟ%2@Jޜ2#d{CUPc 0e*v#R;t$_ ,އ,&fBX J4%H" +s۶*A\pu͢% pucM>hpT.~,Ƭ"sGj* [O6R ')PYƼD򌝑n!ΎX6gIR'uP +YdTX` U;-Nް?NLD) FRJoO@XbZtTldJ@L^~[U\` +ƀHJl268fT$xpjҴjv=ú-n +'L>؎G\MȤ=mXCAT_d{$̗)JFB/ +<">݈dЂ$ɢO&K)jۂUk˩X6Ӏ z{x Z5$!8/JnRMc/y]&<:).9()(:* ų1S_ob2X@ -SPrMu "(_VP'¬FVNT,`? V/ Ugi3ZP=y7j);_"u֫ +z9.Uki$ޮ]hׄ Dt~s@~iډ2轢ҭCca2EYMPl>Gɧmw9}8 5׊ M "` 묤:$TN= C/c9gS.1KFܕ#O$pl4M1\@v5m<

M: 4?koƦc2t#i^R +蛹 @ Qr$z`)aNk4pfc+V$o($]T(Bl] gɘ"Y3}Y1uTXb1xߡ-yxcQ g} xQrw?Aq$*=J,[Mne<3Hj@\ 4b1@ W֌+1K~+K6yTP'ߙ)p7,<@nM cVRz<16B;+dr:C^GR >k^wZr62GV|~o +mI:򧤊zaFn,DҐE_xu3 'ҵ?"|qjAX$Z}-f3yZE՟s\_-D! QqlPrZJ,FLV=1an4R$'~R)j=4N)ybU7DmSIx$| Ld<0vA<۠](1(S8 RȬO-k#C{E_ՙcG]1&4(pځE30UFyŬ@W,>^7e}sR#;̯pr▜JJ<7<. Z"~'BgP)n W;nݿI cW+3Fqjs? Eh&TzANKxF kQݳ} 7IK{Ձ*[8*G3e/`!+U۩zS8ɆM0 bLVU3r@ov +maW 4tё* >N!BZre Gf H]F-a Z>r,Eq6f4MgQ>}ȈH&)-\hMwؙk7Cr+x@YmHb`QCD0u@ RvG G?]4QX#0,dtzq91JgeA|:u+Ǧq OȨ@^&4ؖ Xgw(~ta/*aA5_FՈGL'iZ`p̜-ujǘD13`->־5K +Rr+_qK,ahB|$~hi9ryx,Js)Yg58pȂQ G (LHHǯjGhKi@c$7X tLj5oخ? aػ@dds%-h1GOHiUD[wL`sԔDKp30Ujã  jJxF3U>B<%ۊO>'zTp&%C6P{O&zaJl sͦ)dBȲZ4G F -!&b +!m>L"vb-Ɨlf.c&G[ 0}+7m{hKL,wݙ{-BRPd8:pX/M؉gHP3ю2߁,#66XC:~Qd.hzo>1{(2c&ߨh$;UXFb|vHLF;~nA:k&"hbj\;l;0)R%EY[2kefr_GA}_VĪ`i{]pJ+W< 2ҩ+@:HPV5Ll2tDשBYk6b&XtP6~#J@N$]䢳A_0OCGn^]3"ky;nqH kE/Pڡl +A;yH֜Qq:A Pp*;'ȡ%!}6q3-O ˖3E2C-u@P_90Q'9 59|; DFrx\H>#GO\0'Twôsy@@L[8{rm^$DB{{:q$3`"èQꎎvWT}dy oh"JE/`vD~sU  -lm{!W'e?.m4n n^72?N;c[ b_)Ib!&D!'O&d*+̷ êx+1j3ذ]@{VG4Oe O6>7ԋItqK,EP-H^/Xw/ bgOWRwSuz`jL"T 21|SJ@78\\e %^zH!fe$#S GwA'Czǡfxc )Swםg[zPm׭cS?*FC.o u"6UP& +zK^^̮ZBHD GOWMKYHwϘ͝K\ۙ2N˟< +uxn^T wȇҤxTKRi $d HZO0 +Ԩ4 +nI P>-Eb"CT_qxGn̆DMMI[zCMq#VԊ"zΏzm4%cc<&$A3$Z Oz@[YZ5OBHYR=q\C H9O(/4"/Nw9%MjHbZF2SCվLl{Jo#/ýڵ_\!:Շ_2"PW$6@3`?-! oO47<sL<-"BOa2Zlj@ߏDyo9ek]^}{K]TqG.^ n;ĎW%7vWpirCl(J:ſ7~t:iRl,.s|c{!4k)>GI 7Juh`_^qOhrc9"RE L:bo S;{[ZcpLT(KR lhmW@|;l"e@Λ7N+h˓A4(m~ū2{;78d GT 8/(lb\: +c^rJw1']? _*k7AHT& D/T\QK؊(tڴ&Z]V|cnDΈe1y #0[$ҲD@j4Bwp*L1dU&G}~uO`3A##7C'=ZJ{q"q^ߎ""bj"PPe9q y5(7ɗݼro@$SK)Elm5u"=e{sc]`[[dAaJ7oS-=/']L0z~`&G}qY{<{Vx+d)q )He]0ibwK^p ?ͣ li_,[ +7݂!/ZDN4DS*eŝp2:%\H.d<A*Lӝpڼ@ҿ=*WfgC57{~ϵܶhAݳLD4rZW)󲐼 ]56 X{?̔mW!'ymZoƈ8FYL:bc`ť_=UՠD? &UXل*u5jxZx\XҖ*)bE +|y%M;JS@>Pj*cuq(ĺ̵lZi%8-%?b9c6ƸFNW2FYAK]- ?ΌJ"YA3gLI& G:LT|ճGq,ިr432gȐ3?Dj AۄU T?D0 5BjAhifȌL`ʌO WTz?cE;F2;r7\G+NȊ\[uw'Y3fj-u1U4e^@/yuK[S_5mF iJ&mpt7//&{p_ODU+dm)0[5| wɿ 6=]P'sJNŐ߫N ;Abg;}ڞ댰I C"cE|Dy$ V-yX8`Po*n5aG돥*F6%zbT0 Hv-)Iɷz5! _Y`8o<]foNfX sN\P.뎠,`e{>W@r?70/vx {ǝg}Sr U<CMyΙ8ꕠ-d\Ct$l(CP0HTr2_ut9wi9r+>GP2/tU`2" O7(9r 셔{j2[I"(Vˑׇ) =~ +> 䏢q<լ ٕu9^`mѵ+SA\бHxeB`-;]KQ fϣ02k,4DP.W +#y`[7鲒D%vWN4ɮGq+&L&0 6-g 8}'q,PU,8ƞ^W^Ds<ߛВAl9= h7&.h#)V4Zěr[ @kHHj;ؗuW%eE +&?bVp-7kS{8dK㈊pӆpUT}t,BbX# ~F,uA^m;# pw +x敶`Yj_yu(dmN %PͷuYOW?d^bg#w)e!UчLb pYlQ.Mk֐%An'xmmyixs@ z]vrzH[kr#h2~8ʴ,x]O_c}bga4k Hvk[Y2Q{f^3qH +}T>Z*>~tչ>| z7E!a jiZotK(;h0JG&܆GL- e@[lk=^nE٤1'%V]!`gBzl8 +4\A^C:'Do'O[޾xV$mk >_N%.Z9r~ 'hZ0E`I|[GtS/bř;'_89YJ @EW@{}<|Dc ;[0 +nJ/YvϪi,VF(As{rB5{luDݢ@vVqVx]M@<ت0'ņyՅe,7/檮߱CqrVL6[PXdL8E!n}!x­vFLNӉccr X1&~9kg,M6D +W.D>=af6$z .,6YP89U=}O uZ AjY{ve˜x@&/nNBI%(ʮ\ɎYa7R$ʘ:Q g߼B-uNE~}oyi6pT"͵7!J탿Du)X7lƿ̔;NY?yD^ejmܬNumMN+oePAvƦg2q'b 1 (I> +<"/ \m:Ac N>.f(!&l $w8^o_І8Ӯ~yƒ; L%2[#S朘DЁȌCę[1.%>- Whuncpm} _V31(AïIt4#CWi]3$Q I6JˇtLjlk6P8£$n fCts,YcBxFf[^ /˴HI1ߵ9#Z۔k{3ǟcچEv%852Rov}YlPHDcS᧎Dba#<@M4iRrm۬&s.23)i[#r}֋pt7J89\k)ˀj̘u> D%_no` R:W,r&un@qIip:`TfԨXV,̀ Mq͛}G%C&f2pf1Xm]0Q0$yygp7F6 +dNocIwnqMHL+l8AK5J"A3 +\O'=Co.N?g!A,K|#Id1V^t#Z3zR<`au˖a| NPi apથ=#d)"ҞUPI G [тy-dh?(9h^ B ?35'/?Kd 큋 r]Wxr5 yd 25bтJ`Bcj@Ў8(ݟټ5*UBo7c4|G_eda류qd7.1rZ\xѳSe8{{ك3"YUl>gHt EFsyFz;l.tйs$-QԂNѽ4 +N**""JsUp'x%F9r%᚞%px5kf|>Kr"Q7 |xf6c *>Eg?t-93Bw&(g +t>l&$HhB;,*@n1r =\( ~`dZ>%\%E i1* Y}rmD.ej8{gx0pdOmHN7h&A> *p.>VjwЂ_" J~h~5(p磽v6NErJMRo>UzӅOIWf:ԥӱ 7Ul;F^*#}r~ZIVυ9aUD[9Bm8%Tye(ƈsqkr<'$ƫ};dt;bhb$]%fha}a +,=nEL*z]`i Og.}@v^_b*$\,G dH _D!Q?TJKp 7 T"Kd'! S= 1qC;4̢#z&,tSq)4kz3Pz9oZ*k&?/wN>+"w\ ԉX5@"<ፈ0(̺'*3âWE32vKYiV&le +=(b_6C5JtBS֠+P$O~(ǂ,tP|w"u)XVlI\_P%)25``ݏ~ݕ.дDZ, $paI0dY{?tj՟>}u4 +Ţ;`+rQ+F _ łbi]?LK )0Yr ?ձ(wnb݉>OQS0>E> ZˌO?(L5K +T|+*r +[n๴Ԝ>^@# +M9 I\dqC5EU7mdڤwF_Ɇ˥\6ԋ&D+d+ұ,HS"/!xb *RD@i4.l?sW{9ZvQws9qcE9=NQD CSF v%h+FJ=Egߑ3287Rx^R3oC4^b3u +{<3-^qBCđ#ZW8 ËB ;,{ڑcg9B"KhYEGU __t$[1$cQm^=ǏB(e] +pu2o͵%T&T-3Oׄ{m0 騹by#!}TYɮS'K&p6ۢM8+jI*OކBxD4>3lsRR8HS2rbA84''tC_rJ M-"Uv*!X~ZE(UaC}!bz{H(<+㆐H.Nmy7c^(TC֯-S\jh0/7$ABHױg㱬z+h Oم[*V|/vrDT"RʤqLiPB \P4g/2EG +TUP:;Jq9elо~=Wd&Ӗ22cڱ~׍Bƅ@ULh j3*EzGbdXSзU¬I]C3hM&ٸOVhQ?TfXB'VǬC 3 +nr=xcH-!RH֡A\KXfEXg(L‘nEvfM4ɇ6FsJw3Wx$')Zzo +cYHBNW&3VyTZP{=B@`]T$wX2ݥSdFJ쀀"j}P:tYޗ1!9Eřmupl%ԹZrba4ocBݎ@l&BSi";o=||1nKcǸ>D* Vc#9o.4CdoPAEQ/ Khz?8őJ91P^qbo0iHnJ{JX4qŀ)]b#K+C7y{kmj+ZX^ +B + +ZcVi&2ejvğuG5z6[/43M,Y6bԗ}Y[0:*bEodj;VAM&h!h)[ȅCk͙*yv:@6b&$qjz +Z VAG3uyC^d1SVGJ!I$e)X(%d4ؼvwh&%mZ,}RvAI4. M)*<-PCCk*,u͢Fn!Ѥ)M. 0 ^b/wC^V]]@@Oi +yj$r&Ɍ6r !]?r$riyO&sp]Ҵ겉1wOgIm(l. `M7 C-XւEXu*p uĮP $3y;> . HĮAy*22"N RǠIkm Y +j; G ?֍ȘA9qԬ!E,F4V#s֚DbyPXڴ}4wQIɺB(H0&*wd}܄5$X- R;aU+RQYS X{n.x"˓ȁ,1CZ '"$7BB[]?rsy#r1j4r!@#ra\x`IGVeN3vz5aߚyٯ5Iz<>ޚ2(uZnQjծj˛  ,= ]@P(Iu,*DiDɼ3ִBu9ar:3شr4 bONTj۠cVD:oJCsHykVҊg) 6YDET; U|q(Noފ{T:H#Qp:/V&U)fZdlma/1՚X Vﶮk'IWqD"NB̌i 9D`b2\ӊ`JPxT ͑ 'OZ2ն\jah +UXa7p긺TMqö. h(R+AS!Uoe^L:3Ŭͮg*|(JK"xCb1dE/tvɌ=mɛZu))BQ]*u5SGEirAW6A4 zi PWʠλ25ZUKqI0U^pTJFDIyIfвxH:²xH$W[cXi-1;, +1,.|B as@Ɉ@ۨ@@|TZs* )^- +4dAm,VdAmoEiE^wxÆeN+`7 YAE +CRp~\R i|P 0[? PȜ@uQ=yUp[ %[ivX#qF[ELr#KVIV9 HmS_g˸֤: ~IBLwLG 㯙^#Nso-TBo"3zwAWqϷP:ά3hPוjKA5`FѼ2͛m}uհZwb]^4vyыpn) k)R*]@RMQ?bXi¿dIİXkqZȳj!Ϫ >)M "Pq aFTxjkĬKs|AuͿSKPDgPjY+jI!;h+jlx$|&Gkm~ЫR5^y)8,65՜2H(3c#؋52'U^dWG8tf& Y `]@@DkN&pRNI;. x7 5+9Pċ9BE |5H3rΐ܈L䅊\ +M0*1ϛo-Gʳ%PW!tpĚtUUU@|*PÁxaR0}\l[W.JR)J4Ϋ@iA5D|\c@ƽ}\lU/[O3Sw=Jb U=wBʯrUG2rpy9 9"&9ST/l!aX@A`0*M!9.,Lׅ}~YV^Ϳ(q ,!Gi)Rc5nuȼ %(&ާvnaP `@ao RLcULnҰ/PJ9_(# 0F2ӫtX*[FI#LI ^r=biQPRqhueкvEPEvwi}1Y߾R|vȂi&yņ} I^z +XrEJ ^=ȷ] Th6x8 Z-Ӗ CzZRī  E0Fʤ5j)>/tҤ;FlaG鉩+\,7JS} *c wų2imVK,))K݌[/VNL):̘Bk Rg¬"hU&vP{ 6'X]-4=a4q~F_'旉dVaE]@YL_:RПjC>"O}b91^z2{% \\~:,Ua)>P8m2AGڕ(◀Y*dV}!̛6dZz e*MTjy *B]In!AifmfuÚ|4 F~zw!c.U,'<x6w'JtgEvg_#3dML}_8<#*y(HI% ̆" gz|Nޢy`gnxbr1G3vd0Sks qdP m6䷔|ӆtf䊼-?43ϩR&y!_3t#Q$H [_b1u}T[L 6mfb >kh17vd5uYFDo2x"YUaA%alR@uP,W [PaI,}qA>,AJ:=,5]=@/;:YD<ⳅ}F]1 +Sޝ>Vo䄻`vpCneX'DEѦ;(1Qq c_Cr"_?7TQs8hr6oAs󯛛AM d'yQxPȅf<BTJ76!1q0"vA6˼{hc1ZOgIь3ě G'.;lH06/*"B]@pl6)ij ¬oX?dw(uNTri0GӊA$ѷ̛PX1Q\Q ls֛#ܘX:`o^軀h>:~BQ#1&1&ZpF*c]4c= ]@^ǨR:ٴ1Q9uNٓ} ;{{Șx+k]@7 tA)|"&9F@ RP a Himt$_Y_! 5p-w. ĄtkVFF{&A[v;0 +S,i9hAó: +X=FFl^q+I(yOh2Ar4}[~{7oU@݇+"zro -^-8. X Pa>XRr[v~ԃsT7 x\ujimFȕ~$_;6HKՖ2t@r,6)>XwԔFu@6%d-GNW*!x*I;Y +4y3]"1B7C+G]2,Hٺ]@0A* >Lc`C.<͎Ի;;A/?8 A0Z/e*.U:. Zvy5B텊> ^SJȈn V]PIP? D+.q=l1'o6ldQi4cݒ&J?Y2y؛W ݍ`U88>]@0랯\l$#QwUADSIC[RczEo6ut[jPO:J:f*nP9*<9|O#?4GJty4I>4iWSgdV&O/$|u֞[>lA_^g +zod1&~B6cW`^fE +!. 8qޱSI?mΏyٕ.Rz#<צG≯9.*ɍ1٪yB {lklP8r=5R"AlKx2D ~Yz7%3ydި<*K$f//^ tPuDi1I1A[sP_b]]ɫh=iGu 5B@ENTBNþpqTOaj3ZDoz/X[4l?4HOy#r*;+> 1UРH{upL"٫@QхFڃ|w~!(P#J6$W3S_ݗ8(w*<:Aഷ" Homm`QmC~xbHK+3T8MeG1\y"P'> %䩏c'VimUJ+<j3!88Aߐ4H۾A8"}A-ƫNfuwŅUCFU٩oZ=LM)q~0N_9Wbm*OZ <T$UEj1i_[փcPAnF2(uCiV8kV}z 3I?"hyXj&ۘj\'R=ǾfkO$QET⑙G45'M͘W&kx=N̿M!=T< B;WnPh7" aSqky92Ƭ~uc+J<3MϩYP:xm(2wr>EcwSBk[N3RWq75 >Hzz~@ڴ>DN=*֦f#o'a/c#?dXj?%AETdX{?*g6QT <~I ܳh+v ,Am7UZj[J"hi7I>c%-U%UP4 %y +%^1ud5ڼEZדHd>V2Ub-@Mu}zx8xw icg!{W.}檅|@_LG/'%Jk7DM]EH+<êu^ge/T 淋ǩwB…^Cgw j{LN*Hcf.>栭-&RPm֛8tѧg`)W> 2?g0zgF262QSszGza.G3uv&%0-V"T8bh妃alOoȾŅY}v1 ь9ҧ>PGiF )IxVlƒOڪH"y˲ƌȾR.k_|,)~WH-b67z`aCzr5-pq0i!Iӆͷ|;tuhi?:ͽf`JqpU\1alhi;jwP}&`>BTzB2"1j07LQq/ +Sqx +'J~8˳?<#ND~3Q `~Pt/?#O@ ^(ᛜ#O?]38DT|P$wDyH|S? BH ` L(zɿTC7Y2HW& u$W'?i @ +U%U?t/%LqHTNJT[R .;B")Xvw*Ijw"c Nb&EG +^^PX0Y,Zoߨv &ywP2q (D,V{/ 0M f"@JTklu6;~e9ʫ@ܜGW-J)^j7M5$ah ]OgDES|cd+H mli;N%v^4G. I8Iu@6%(P/2}LcT:GaSֳx`R1ߓ`Ooыh-{? *y5>(I/VF[P_ĐmGP@EoA$~Wp8]@Aw;|(֤5%̋A^( 9@Qblmi\U<ĥoSm*)NJ.!8r&~dO}RBWj벰~6"*,[% 1ټ2H1N0WR[ Cp3j5J%=eI ;(22WiB~8 J}dAmiC81>sE1$Jbxu]82't6tgD➬UR#`Y} J7BӕrR odha׊VB1EC }/& +ㅊ\<( P>S^|h;C^i\B=STB9H%B1 qCr:u=)B``wu!yw5ccIe,~*\ }٢ bR))ˬzʉssq*ԕɻƥhf~Hߜ~yH<#}.iBL 6#O]9?pܟzV|bN ,VJK@R& +zKe[(BYU?(d_%99APRTD {O+-${H5 9F%sd 9 ]@P? UЄRɜ͡Hh&yFJ)Kh`0bYx?mb4ZDr]@IPW +:ZjcZ +p05P'A  6ҍ5))Z鐺L6! ] =4jgtAV 2Sn3* \kXȺ`ԘJZ9ꇕn~,UmI5bjʕ߼HT츛 ߦB)323fF9pˌB%j{l.g"o Z8Z. м8Hȍu _%e17@hyZl1!QVSww`# ݡC>V߾ԳY}Ahd*H#;. 8CᅥbHLb4(ubv@H<a}X r|-B>:HaI wQ[.0H7[*J (+z>+S_pֱWTNIxh>k\3iYTքBȌȌ Iƃ +/|I8$VDR&0""EBaX8)HSQM[By]UADK)fַSO zA54w)ޠMB}5&˞٨`u(17nC0ҬsyKP|yuFP?šץnouO 5t|Rp72i/M+a)|!ռfwVtop}_&գb_.靲B%6#k.i”v7L95Ʌ5hzP ݹ[8tvcsa$Mۯ8/fuXZw+b?~wę g^T!'Jרv+{$&V4zjܑQ{y Z}"/Bo l XC +HAE~CX5qfvVV񏳡UsB/M +HqJkx'UB2\*tW HХ$6Ѱ'䝂SN52ӳM5 ТpIgd~ (#əh^|%UVrMUEdj  ۨ[j9yx5U+SU\ㆌ @cPkr58N^3B+9g,c0c.QkzӠzWm+8a.ov{#|[++hxR|cC3.-\&&G#9##9 .͛[*O`kM6%&3.Q@F͜p5uJ +uؾ9Y*Sh̪6ujh3bAylT'pZ4`Wm64,;RNwCƚʡSk~&TnFL\y!V )P˸5`$Z ʹ2t&1킥O1 :YrXKQ:R[`"ȐxLcʢ^1#x$$q1nHHi*/\DZM$lWH Fr҇)K)!rah XJ{-^fal 1$ ^1JCm&suPDdR#GaQY(<= @F+;3ՉPG~ PHfU4ֶH6Xh]3'w T]ru!?"*:Ɯj(1C$~h}A `fkFUըM T8%D϶-Nm$Z&g]UZEyBSVM҂$52t$djL52&ќf=nܲv'tjIJK(VuAd"ZkYGOӸG`U!|\OUpXj۹:(16疒bCP<˥Er.eFӰd<ܾ1iwv_ o'{Y]h~fы:/|=CʬX(o)ޮ)WLwྲȩմ(O%R yMW1@ubz22 ~yjUe|@!R E=)_*~Ğ=£ҽمtę^޻S׆J5`脀M[c*>r(5DL1[RtAR- +zo*ǔ 5؅CPh]nӎ: +6 v'7SGFGS=v;n42bM^wGޢ>MS^eOK fv)ޫ0{F:?GT6X gnAQu@A 8Wn/?]"ZJEAl#X8  ++s>cSq+}cF~=B3hHEeCYN=N{rI~E+33 * ,F8eRa\QVwYD]m.uUF +ۇj\[N R\8& E1'~txNntؠ~o l~rʸͦ! + Ċoѯ+Ew#)3sN\ANPIuUg>M"QKnpB޺8ʿ /oc59.w%߆w= +MkfzI?¨ `@t=ezb.`YcT K\ \?2ɜ=9k7;?k~쫣&F=!!xM |*s5ǽα$,k96M68>|/NwM]1+9 +!f Zm$u aKp:Bko&>l`p̝kP"%1gXK`{eL88#8TGVLsAdWjnƞ^=Zi 1#6O݁3ᒷƶEH1G60iyϡJ2Mp,jT駾y o,oso'8{f%x!m.^ʚ;$>U.1%FO!)SOTڂ'doK0Z-"a.wMھ,2Ao :`oz^4IUu ?xub`fvy6Be$ ++'z9U5e;e7#t72%~y\ ~ﮇq8m$?jY:SCM%]#u->(9&/z( T"h^qjjKp[k淛 z:/xh=cHEpm%T/-ΰd3[v)Eܣ8⽬\b̌5@ ۀ8Z=S pUw"GDk] =";uKzk|77E$6V]Hiy@;HТ=‡XtWf*'j5nZƝ!zbb6~!Zݖ ˋ +H,gj 2wp"IεƝCwpl;E3 +@|m~p ":3)BHV+APBjz 4+͓WT fxVHYT$UKN)y6_) ")r۲qiąljI ĭ Bx@(TjVzړn*߀l343RtTϾL* :8lFK^J_١- @"_uXu+ qpen$ڽM*hL_.j,OT">ZU$qV&0+~u+*1 pp0UFmErd8sL䅅gd}I[}c 2J,6Uv2z3t"O?> =AgOYGGu'(ߎeTäe&p[CUܬWCÄTiZ;iJߥ.JwJ:vH^2 i^<ꂐf&U1Xrl 7ՍS\U;,*a}vkďQq w\xiZhOf>,? ɁNCL)&GZj#IK9sg?P K+Me $ښiqv=3N3u3Z_q0"W{;ڇ1.86!sXz u 4qd|`G@œPuj_l(Z77Ln}$S ]JZ (ъ9 I3 zy9bPC  ÕE'vUo%Żk^'cj0}t37uyLBciL%c)A?مi0'ٷZqs8D'dZ8jL`<7)_1.D7mݜqr58W&˚?<8}z§ ջUG Ƈ9Nx {Yy/ӗMx.=yATt=~?z@lQ2Xލ 8:z9?>j@cPΰQۙhã7eYW.:՜'{@ +Qj+r(S)G?# acD*̆zW`iHzX ɻ:1j@c/B*p*oz{l l=,/vڿHe^]ޣyp3?QN0hxXZH XbY'zϽv8ntq}u>CT%pgS|&.S'|pϪe%\!8a+edT,v(+,>%\D^Xĸ"5:q:ȵ qew_tCƕLap\/4b* '&^bˀ_^cJ'|Nt4tHV\:HFF?ͅ[-ϲޫI +ц#@ gͷ(U=G{OgSBaAC܂/ϴKAqEi]ɉXmozB!Kdth Z>^58rM"•[u| +K~9oLT%Jή q*y`EQb8A)}+ H؅$\pDNn}d*V9i4ۛX٥pxDaey6E0L9\p&DC ^mEkIB \h: +](} +hϟF_۬v`pBe0Cl%Ux/=xhBn5AoxBUt]wѾ6BsHJ9nsYro-qw3ٛ". P@E2xo[-+4M෻F +q'1*[! UcJtĂ+d(~ճ`qz#0R[O:Pŕ&)Lr SŕyE܂wp6d"='.YHLqϊM +I5gD4ZsϨz'T^CY.Ap'8 "uPJ;[?\"ۛ'l2Ӄ=qa/'L*aMYOV4©~#ɟZF2"%x}VحNajP.oxAa#"Zt{&DFo6|U4M >nfQX1[tW8(X?fgRldGى4'9qA~Z +P|Z4Iޫt"4A8P. s ) j:ٻ8C!ݓMZ )K8fո,W`5W n<ƒ?\苧LHN)ZmZ_$Csk3U +C,5 y7ǘߦs.v ˆ}?Z)%mQO=Z$|q^^6jD~XB<8ݎ1\Ag2M@C.%Sxwbw"|HݮӋJhCM+ez@jKp:uo|P|ƁO5%?}e<`ia.p+6kIRgkp7!KTg5BJ B=tIG#oSRwW&5՛/$5'QUZ):TLaRxw~YDgѲ%0$s0>gd;Qip*<qkF I#1] +g>ialN_"[f~XXaZ1pnC+c bn$G*e'x9Ų&Y><^ lp¤THߌo}`Zd̈́)rRaznmˇ_ ?.z؜H-jlIkt>!!ogxE& E~ + A9jhOR &#_

+![](GraphicsIntro/Ch09-CombiningSequences-Marbles-Join-Marbles1.svg) -Right Sequence +Each time a left duration window intersects with a right duration window, we get an output. The right duration windows are all effectively of zero length, but this doesn't stop them from intersecting with the left duration windows, because those all never end. So the first item from right has a (zero-length) window that falls inside two of the windows for the `left` items, and so `Join` produces two results. I've stacked these vertically on the diagram to show that they happen at virtually the same time. Of course, the rules of `IObserver` mean that they can't actually happen at the same time: `Join` has to wait until the consumer's `OnNext` has finished processing `0,A` before it can go on to produce `1,A`. But it will produce all the pairs as quickly as possible any time a single event from one source overlaps with multiple windows for the other. -
-
R --A---B---C-
-
-
-
0, A
-
1, A
-
0, B
-
1, B
-
2, B
-
3, B
-
0, C
-
1, C
-
2, C
-
3, C
-
4, C
-
5, C
-
+If I also immediately closed the left window by returning `Observable.Empty`, or perhaps `Observable.Return(0)`, windows would never overlap, so no pairs would ever get produced. (In theory if both left and right produce items at _exactly_ the same time, then perhaps we might get a pair, but since the timing of events is never absolutely precise, it would be a bad idea to design a system that depended on this.) -As you can see, the left values are cached and replayed each time the right produces a value. +What if I wanted to ensure that items from `right` only ever intersected with a single value from `left`? In that case, I'd need to ensure that the left durations did not overlap. One way to do that would be to have my `leftDurationSelector` always return the same sequence that I passed as the `left` sequence. This will result in `Join` making multiple subscriptions to the same source, and for some kinds of courses that might introduce unwanted side effects, but the [`Publish`](15_PublishingOperators.md#publish) and [`RefCount`](15_PublishingOperators.md#refcount) operators provide a way to deal with that, so this is in fact a reasonably strategy. If we do that, the results look more like this. -Now it seems fairly obvious that, if I immediately closed the window by returning `Observable.Empty`, or perhaps `Observable.Return(0)`, windows would never be opened thus no pairs would ever get produced. However, what could I do to make sure that these windows did not overlap- so that, once a second value was produced I would no longer see the first value? Well, if we returned the `left` sequence from the `leftDurationSelector`, that could do the trick. But wait, when we return the sequence `left` from the `leftDurationSelector`, it would try to create another subscription and that may introduce side effects. The quick answer to that is to `Publish` and `RefCount` the `left` sequence. If we do that, the results look more like this. +![](GraphicsIntro/Ch09-CombiningSequences-Marbles-Join-Marbles2.svg) -
-
left  |-0-1-2-3-4-5|
-
right |---A---B---C|
-
result|---1---3---5
-
          A   B   C
-
-The last example is very similar to `CombineLatest`, except that it is only producing a pair when the right sequence changes. We could use `Join` to produce our own version of [`CombineLatest`](12_CombiningSequences.html#CombineLatest). If the values from the left sequence expire when the next value from left was notified, then I would be well on my way to implementing my version of `CombineLatest`. However I need the same thing to happen for the right. Luckily the `Join` operator provides a `rightDurationSelector` that works just like the `leftDurationSelector`. This is simple to implement; all I need to do is return a reference to the same left sequence when a left value is produced, and do the same for the right. The code looks like this. +The last example is very similar to [`CombineLatest`](12_CombiningSequences.html#CombineLatest), except that it is only producing a pair when the right sequence changes. We can easily make it work the same way by changing the right durations to work in the same way as the left durations. This code shows how (including the use of `Publish` and `RefCount` to ensure that we only get a single subscription to the underlying `left` and `right` sources despite providing then to `Join` many times over). ```csharp public static IObservable MyCombineLatest @@ -905,11 +752,15 @@ public static IObservable MyCombineLatest } ``` -While the code above is not production quality (it would need to have some gates in place to mitigate race conditions), it shows how powerful `Join` is; we can actually use it to create other operators! +Obviously there's no need to write this—you can just use the built-in `CombineLatest`. (And that will be slightly more efficient because it has a specialized implementation.) But it shows that `Join` is a powerful operator. ## GroupJoin -When the `Join` operator pairs up values that coincide within a window, it will pass the scalar values left and right to the `resultSelector`. The `GroupJoin` operator takes this one step further by passing the left (scalar) value immediately to the `resultSelector` with the right (sequence) value. The right parameter represents all of the values from the right sequences that occur within the window. Its signature is very similar to `Join`, but note the difference in the `resultSelector` parameter. +When the `Join` operator pairs up values whose windows overlap, it will pass the scalar values left and right to the `resultSelector`. The `GroupJoin` operator is based on the same concept of overlapping windows, but its selector works slightly differently: `GroupJoin` still passes a single (scalar) value from the left source, but it passes an `IObservable` as the second argument. This argument represents all of the values from the right sequence that occur within the window for the particular left value for which it was invoked. + +So this lacks the symmetry of `Join`, because the left and right sources are handled differently. `GroupJoin` will call the `resultSelector` exactly once for each item produced by the `left` source. When a left value's window overlaps with the windows of multiple right values, `Group` would deal with that by calling the selector once for each such pairing, but `GroupJoin` deals with this by having the observable passed as the second argument to `resultSelector` emit each of the right items that overlap with that left item. (If a left item overlaps with nothing from the right, `resultSelector` will still be called with that item, it'll just be passed an `IObservable` that doesn't produce any items.) + +The `GroupJoin` signature is very similar to `Join`, but note the difference in the `resultSelector` parameter. ```csharp public static IObservable GroupJoin @@ -928,33 +779,12 @@ If we went back to our first `Join` example where we had * the left never expiring * the right immediately expiring -this is what the result may look like - -
-
left              |-0-1-2-3-4-5|
-
right             |---A---B---C|
-
0th window values   --A---B---C|
-
1st window values     A---B---C|
-
2nd window values       --B---C|
-
3rd window values         B---C|
-
4th window values           --C|
-
5th window values             C|
-
- -We could switch it around and have the left expired immediately and the right never expire. The result would then look like this: - -
-
left              |-0-1-2-3-4-5|
-
right             |---A---B---C|
-
0th window values   |
-
1st window values     A|
-
2nd window values       A|
-
3rd window values         AB|
-
4th window values           AB|
-
5th window values             ABC|
-
- -This starts to make things interesting. Perceptive readers may have noticed that with `GroupJoin` you could effectively re-create your own `Join` method by doing something like this: +This diagram shows those same inputs again, and also shows the observables `GroupJoin` would pass to the `resultSelector` for each of the items produced by `left`: + +![](GraphicsIntro/Ch09-CombiningSequences-Marbles-GroupJoin-Marbles.svg) + + +This produces events corresponding to all of the same events that `Join` produced, they're just distributed across six different `IObservable` sources. It may have occurred to you that with `GroupJoin` you could effectively re-create your own `Join` method by doing something like this: ```csharp public IObservable MyJoin( @@ -970,7 +800,7 @@ public IObservable MyJoin rightValues.Select(rightValue=>resultSelector(leftValue, rightValue)) + (leftValue, rightValues) => rightValues.Select(rightValue=>resultSelector(leftValue, rightValue)) ) .Merge(); } @@ -1003,67 +833,58 @@ public IObservable> MyWindow(IObservable source, TimeSpan w } ``` -For an alternative summary of reducing operators to a primitive set see Bart DeSmet's [excellent MINLINQ post](http://blogs.bartdesmet.net/blogs/bart/archive/2010/01/01/the-essence-of-linq-minlinq.aspx "The essence of LINQ - MinLINQ") (and [follow-up video](http://channel9.msdn.com/Shows/Going+Deep/Bart-De-Smet-MinLINQ-The-Essence-of-LINQ "The essence of LINQ - MINLINQ - Channel9") ). Bart is one of the key members of the team that built Rx, so it is great to get some insight on how the creators of Rx think. - -Showcasing `GroupJoin` and the use of other operators turned out to be a fun academic exercise. While watching videos and reading books on Rx will increase your familiarity with it, nothing replaces the experience of actually picking it apart and using it in earnest. - -`GroupJoin` and other window operators reduce the need for low-level plumbing of state and concurrency. By exposing a high-level API, code that would be otherwise difficult to write, becomes a cinch to put together. For example, those in the finance industry could use `GroupJoin` to easily produce real-time Volume or Time Weighted Average Prices (VWAP/TWAP). - Rx delivers yet another way to query data in motion by allowing you to interrogate sequences of coincidence. This enables you to solve the intrinsically complex problem of managing state and concurrency while performing matching from multiple sources. By encapsulating these low level operations, you are able to leverage Rx to design your software in an expressive and testable fashion. Using the Rx operators as building blocks, your code effectively becomes a composition of many simple operators. This allows the complexity of the domain code to be the focus, not the otherwise incidental supporting code. ### And-Then-When -If `Zip` only taking two sequences as an input is a problem, then you can use a combination of the three `And`/`Then`/`When` methods. These methods are used slightly differently from most of the other Rx methods. Out of these three, `And` is the only extension method to `IObservable`. Unlike most Rx operators, it does not return a sequence; instead, it returns the mysterious type `Pattern`. The `Pattern` type is public (obviously), but all of its properties are internal. The only two (useful) things you can do with a `Pattern` are invoking its `And` or `Then` methods. The `And` method called on the `Pattern` returns a `Pattern`. On that type, you will also find the `And` and `Then` methods. The generic `Pattern` types are there to allow you to chain multiple `And` methods together, each one extending the generic type parameter list by one. You then bring them all together with the `Then` method overloads. The `Then` methods return you a `Plan` type. Finally, you pass this `Plan` to the `Observable.When` method in order to create your sequence. +`Zip` can take only two sequences as an input. If that is a problem, then you can use a combination of the three `And`/`Then`/`When` methods. These methods are used slightly differently from most of the other Rx methods. Out of these three, `And` is the only extension method to `IObservable`. Unlike most Rx operators, it does not return a sequence; instead, it returns the mysterious type `Pattern`. The `Pattern` type is public (obviously), but all of its properties are internal. The only two (useful) things you can do with a `Pattern` are invoking its `And` or `Then` methods. The `And` method called on the `Pattern` returns a `Pattern`. On that type, you will also find the `And` and `Then` methods. The generic `Pattern` types are there to allow you to chain multiple `And` methods together, each one extending the generic type parameter list by one. You then bring them all together with the `Then` method overloads. The `Then` methods return you a `Plan` type. Finally, you pass this `Plan` to the `Observable.When` method in order to create your sequence. It may sound very complex, but comparing some code samples should make it easier to understand. It will also allow you to see which style you prefer to use. To `Zip` three sequences together, you can either use `Zip` methods chained together like this: -```csharp -var one = Observable.Interval(TimeSpan.FromSeconds(1)).Take(5); -var two = Observable.Interval(TimeSpan.FromMilliseconds(250)).Take(10); -var three = Observable.Interval(TimeSpan.FromMilliseconds(150)).Take(14); +```cs +IObservable one = Observable.Interval(TimeSpan.FromSeconds(1)).Take(5); +IObservable two = Observable.Interval(TimeSpan.FromMilliseconds(250)).Take(10); +IObservable three = Observable.Interval(TimeSpan.FromMilliseconds(150)).Take(14); // lhs represents 'Left Hand Side' // rhs represents 'Right Hand Side' -var zippedSequence = one - .Zip(two, (lhs, rhs) => new {One = lhs, Two = rhs}) - .Zip(three, (lhs, rhs) => new {One = lhs.One, Two = lhs.Two, Three = rhs}); +IObservable<(long One, long Two, long Three)> zippedSequence = one + .Zip(two, (lhs, rhs) => (One: lhs, Two: rhs)) + .Zip(three, (lhs, rhs) => (lhs.One, lhs.Two, Three: rhs)); zippedSequence.Subscribe( - Console.WriteLine, + v => Console.WriteLine($"One: {v.One}, Two: {v.Two}, Three: {v.Three}"), () => Console.WriteLine("Completed")); ``` Or perhaps use the nicer syntax of the `And`/`Then`/`When`: -```csharp -var pattern = one.And(two).And(three); -var plan = pattern.Then((first, second, third)=>new{One=first, Two=second, Three=third}); -var zippedSequence = Observable.When(plan); +```cs +Pattern pattern = + one.And(two).And(three); +Plan<(long One, long Two, long Three)> plan = + pattern.Then((first, second, third) => (One: first, Two: second, Three: third)); +IObservable<(long One, long Two, long Three)> zippedSequence = Observable.When(plan); zippedSequence.Subscribe( - Console.WriteLine, + v => Console.WriteLine($"One: {v.One}, Two: {v.Two}, Three: {v.Three}"), () => Console.WriteLine("Completed")); ``` This can be further reduced, if you prefer, to: -```csharp -var zippedSequence = Observable.When( - one.And(two) - .And(three) - .Then((first, second, third) => - new { - One = first, - Two = second, - Three = third - }) - ); +```cs +IObservable<(long One, long Two, long Three)> zippedSequence = Observable.When( + one.And(two).And(three) + .Then((first, second, third) => + (One: first, Two: second, Three: third)) + ); zippedSequence.Subscribe( - Console.WriteLine, + v => Console.WriteLine($"One: {v.One}, Two: {v.Two}, Three: {v.Three}"), () => Console.WriteLine("Completed")); ``` @@ -1071,4 +892,4 @@ The `And`/`Then`/`When` trio has more overloads that enable you to group an even ## Summary -This chapter covered a set of methods that allow us to combine observable sequences. This brings us to a close on Part 2. We've looked at the operators that are mostly concerned with defining the computations we want to perform on the data. In Part 3 we will move onto practical concerns such as managing side effects, error handling, and scheduling. The \ No newline at end of file +This chapter covered a set of methods that allow us to combine observable sequences. This brings us to a close on Part 2. We've looked at the operators that are mostly concerned with defining the computations we want to perform on the data. In Part 3 we will move onto practical concerns such as managing scheduling, side effects, and error handling. \ No newline at end of file diff --git a/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Amb-Marbles2.svg b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Amb-Marbles2.svg new file mode 100644 index 0000000..edca8d5 --- /dev/null +++ b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Amb-Marbles2.svg @@ -0,0 +1,99 @@ + + + + + + + + s1: + s2: + s3: + + + 8 + + + + 7 + + + + 6 + + + + + + + 99 + + + + 88 + + + + + + + 99 + + + + 88 + + + r: + + + + 2 + + + + 3 + + + + 4 + + + + + + 1 + + \ No newline at end of file diff --git a/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Amb-Marbles3.svg b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Amb-Marbles3.svg new file mode 100644 index 0000000..fb1a9be --- /dev/null +++ b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Amb-Marbles3.svg @@ -0,0 +1,71 @@ + + + + + + s1: + s2: + s3: + r: + + + + + + + + + 1 + + + + + + + + + 2 + + + + + 3 + + + + 3 + + \ No newline at end of file diff --git a/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Artboard 26.svg b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Artboard 26.svg new file mode 100644 index 0000000..2f923e7 --- /dev/null +++ b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Artboard 26.svg @@ -0,0 +1,12 @@ + + + + + + Switch results: + \ No newline at end of file diff --git a/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-CombineLatest-Marbles.svg b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-CombineLatest-Marbles.svg new file mode 100644 index 0000000..4f3da5d --- /dev/null +++ b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-CombineLatest-Marbles.svg @@ -0,0 +1,88 @@ + + + + + + + + + s1: + s2: + CombineLatest: + + + + 1 + + + + 2 + + + + 3 + + + + 1,a + + + + 2,a + + + + + + a + + + + b + + + + 2,b + + + + c + + + + 2,c + + + + 3,c + + \ No newline at end of file diff --git a/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Concat-Hot-Marbles-SourceAndSub.svg b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Concat-Hot-Marbles-SourceAndSub.svg new file mode 100644 index 0000000..0c92c45 --- /dev/null +++ b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Concat-Hot-Marbles-SourceAndSub.svg @@ -0,0 +1,155 @@ + + + + + + + + + + + D + + + + E + + + + C + + + + + cold: + Events availablefrom hot: + Concat subscriptionto hot: + cold.Concat(hot): + + + + + 0 + + + + 1 + + + + 2 + + + + 1 + + + + 2 + + + + 0 + + + + + + + D + + + + E + + + + A + + + + B + + + + C + + + + D + + + + E + + + + C + + + \ No newline at end of file diff --git a/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Concat-Hot-Marbles-SubOnly.svg b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Concat-Hot-Marbles-SubOnly.svg new file mode 100644 index 0000000..682cb96 --- /dev/null +++ b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Concat-Hot-Marbles-SubOnly.svg @@ -0,0 +1,95 @@ + + + + + + + + + cold: + hot: + cold.Concat(hot): + + + + + 0 + + + + 1 + + + + 2 + + + + 1 + + + + 2 + + + + 0 + + + + + + + D + + + + E + + + + C + + + + D + + + + E + + + + C + + + \ No newline at end of file diff --git a/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Concat-Hot-Marbles.svg b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Concat-Hot-Marbles.svg index ccc65d0..e888091 100644 --- a/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Concat-Hot-Marbles.svg +++ b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Concat-Hot-Marbles.svg @@ -1,5 +1,5 @@ - + - - - - s1: - s2: - c: - - + + + + cold: + hot: + cold.Concat(hot): + + - - 0 + + 0 - - 1 + + 1 - - 2 + + 2 - - 1 + + 1 - - 2 + + 2 - - 0 + + 0 - - - + + + - - D + + D - - E + + E - - A + + A - - B + + B - - C + + C - - D + + D - - E + + E - - C + + C - + \ No newline at end of file diff --git a/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Concat-Marbles-Cold-Twice.svg b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Concat-Marbles-Cold-Twice.svg new file mode 100644 index 0000000..5624e1d --- /dev/null +++ b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Concat-Marbles-Cold-Twice.svg @@ -0,0 +1,107 @@ + + + + + + + + + Concat subscriptionto hot: + Concat subscriptionto hot: + cold.Concat(hot): + + + + + 0 + + + + 1 + + + + 2 + + + + + + + 0 + + + + 1 + + + + 2 + + + + 0 + + + + 1 + + + + 2 + + + + 1 + + + + 2 + + + + 0 + + + \ No newline at end of file diff --git a/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Concat-Marbles-Three.svg b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Concat-Marbles-Three.svg new file mode 100644 index 0000000..2ee31d2 --- /dev/null +++ b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Concat-Marbles-Three.svg @@ -0,0 +1,79 @@ + + + + + + + + + + s1: + s2: + s3: + + + + + 1 + + + + 1 + + + + + + + + + 2 + + + + 2 + + + r: + + + 3 + + + + 3 + + \ No newline at end of file diff --git a/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-GroupJoin-Marbles.svg b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-GroupJoin-Marbles.svg new file mode 100644 index 0000000..7f779ef --- /dev/null +++ b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-GroupJoin-Marbles.svg @@ -0,0 +1,168 @@ + + + + + + + + + left: + right: + Right observablepassed to selectorfor 0: + + + Right observablepassed to selectorfor 1: + + + Right observablepassed to selectorfor 2: + + + Right observablepassed to selectorfor 3: + + + Right observablepassed to selectorfor 4: + + + Right observablepassed to selectorfor 5: + + + + 1 + + + + 0 + + + + 2 + + + + 3 + + + + 4 + + + + 5 + + + leftdurations: + + + + rightdurations: + + + + + + + + + + + + + + 0,A + + + + 1,A + + + + 0,B + + + + 1,B + + + + 2,B + + + + 3,B + + + + 0,C + + + + 1,C + + + + 2,C + + + + 3,C + + + + 4,C + + + + 5,C + + + + + + A + + + + B + + + + C + + \ No newline at end of file diff --git a/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Join-Marbles1.svg b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Join-Marbles1.svg new file mode 100644 index 0000000..27bce8e --- /dev/null +++ b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Join-Marbles1.svg @@ -0,0 +1,153 @@ + + + + + + + + + left: + right: + Join: + + + + 1 + + + + 0 + + + + 2 + + + + 3 + + + + 4 + + + + 5 + + + leftdurations: + + + + rightdurations: + + + + + + + + + + + + + + 0,A + + + + 1,A + + + + 0,B + + + + 1,B + + + + 2,B + + + + 3,B + + + + 0,C + + + + 1,C + + + + 2,C + + + + 3,C + + + + 4,C + + + + 5,C + + + + + + A + + + + B + + + + C + + \ No newline at end of file diff --git a/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Join-Marbles2.svg b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Join-Marbles2.svg new file mode 100644 index 0000000..6e44dc2 --- /dev/null +++ b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Join-Marbles2.svg @@ -0,0 +1,118 @@ + + + + + + + + + left: + right: + Join: + + + + 1 + + + + 0 + + + + 2 + + + + 3 + + + + 4 + + + + 5 + + + leftdurations: + + + + + rightdurations: + + + + + + + + + + + + + + + + + + 1,A + + + + 3,B + + + + 5,C + + + + + + A + + + + B + + + + C + + \ No newline at end of file diff --git a/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Merge-Marbles-Multi.svg b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Merge-Marbles-Multi.svg new file mode 100644 index 0000000..687ded8 --- /dev/null +++ b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Merge-Marbles-Multi.svg @@ -0,0 +1,79 @@ + + + + + + s1: + s2: + s3: + r: + + + + + + + + + 1 + + + + 1 + + + + + + + + + 2 + + + + 2 + + + + + 3 + + + + 3 + + \ No newline at end of file diff --git a/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Merge-Marbles.svg b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Merge-Marbles.svg index 07a6b23..47105ec 100644 --- a/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Merge-Marbles.svg +++ b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Merge-Marbles.svg @@ -54,15 +54,15 @@ - 1 + 1 - 1 + 1 - 1 + 1 @@ -81,15 +81,15 @@ - 2 + 2 - 2 + 2 - 2 + 2 \ No newline at end of file diff --git a/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Switch-Marbles-Bad-Merge.svg b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Switch-Marbles-Bad-Merge.svg new file mode 100644 index 0000000..19c3d82 --- /dev/null +++ b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Switch-Marbles-Bad-Merge.svg @@ -0,0 +1,125 @@ + + + + + + searchValues: + results (I): + results (In): + results (Int): + results (Intr): + Merged results: + + + + + + + + In + + + + Int + + + + Intr + + + + I + + + + + + + + Self + + + + Self + + + + + + + Start + + + + Start + + + + + + + Into + + + + Into + + + + + 42 + + + + 42 + + \ No newline at end of file diff --git a/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Switch-Marbles.svg b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Switch-Marbles.svg new file mode 100644 index 0000000..0fc5f6b --- /dev/null +++ b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Switch-Marbles.svg @@ -0,0 +1,113 @@ + + + + + + searchValues: + results (I): + results (In): + results (Int): + results (Intr): + Switch results: + + + + + + + + In + + + + Int + + + + Intr + + + + I + + + + + + + + Self + + + + + + + Start + + + + Start + + + + + + + Into + + + + + 42 + + \ No newline at end of file diff --git a/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Zip-Marbles.svg b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Zip-Marbles.svg new file mode 100644 index 0000000..c620768 --- /dev/null +++ b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Zip-Marbles.svg @@ -0,0 +1,95 @@ + + + + + + + + + s1: + s2: + c: + + + + + 0 + + + + 1 + + + + 2 + + + + 0,a + + + + 1,b + + + + + + + a + + + + b + + + + c + + + + d + + + + e + + + + f + + + + + 2,c + + \ No newline at end of file diff --git a/content/GraphicsIntro/Ch09-CombiningSequences-Marbles.ai b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles.ai index b652c91..0dd72ab 100644 --- a/content/GraphicsIntro/Ch09-CombiningSequences-Marbles.ai +++ b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles.ai @@ -1,5 +1,5 @@ %PDF-1.6 % -1 0 obj <> endobj 2 0 obj <>stream +1 0 obj <> endobj 2 0 obj <>stream @@ -25,22 +25,22 @@ Adobe Illustrator 28.0 (Windows) 2023-11-02T15:23:12Z - 2023-11-02T15:46:47Z - 2023-11-02T15:46:47Z + 2023-11-08T17:08:14Z + 2023-11-08T17:08:14Z - 132 + 84 256 JPEG - /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAACEAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A7Npn55eTtSvXt7YSKiRT SM8r28bc4LxLNoxG0vKvKQOCaAr0qagKp95w1bUoJrHS9Om+qz3olmmvAqu8cFuYw4jVwyeo7zIA WUgDltWmV5J8IcHX6o4YWOZYFoPnOMDWNV0aa9YaVO7apa3r+ql6sCmNpIyzyshKwlYyCm6jkvHK hOQO7rcWtzY5xEzxCX2Jr5l84O9lqOuS3VwPL9g8iQW+nPxkmWGT0nnaWNkc1cNxCyBeG5qekp5D dBs1mtyHL4eM15ooeb9Q0AzWd1cC/NxAW0b6yyrJ9ZEscC28kgo0iu1whDULAK5Jbahx5LBts0Pa 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 UOxV2KuxV//Z + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAABUAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A79d+VdK1OVprybUrGRYb mAQveuCYpGQySDjLKOI4rSp28MBFtWTEJcyh7n1fKl9I2k6dfa2dS5vdk3Kv6T20JdEX1WHHmD/t kgZHk3YMEd/VX2r087+YmnhjHlO7pLJHGW9e2qvO3M5JBYbDjx/XQ7Y8R7nIOGH877GQeX9TuNU0 Sy1G5tHsZrqJZXtJCrPHyFaEqWHv1yQLROIBobphhYuxV2KuxV2KuxV2KsSXQPJHmVy62Mn+gJNZ 8JLee0CiWQmQKsqRc1Z4+RpVX2J5DicBiC1ZMMZ80Dq3k/8ALe31O3tb62aO5vhOY3LzFKMgST1Z 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 default uuid:65E6390686CF11DBA6E2D887CEACB407 xmp.did:c765f3ac-1881-344b-850f-cb39f546655d - uuid:439a6829-6f02-47b7-9f79-bfbedd784fb5 + uuid:b9b0343d-bfea-4247-9e1c-b4bdb8a45359 uuid:152d443f-61e9-4330-bb51-f38a8e360e29 xmp.did:f18479d1-4e7f-4340-b533-076a69bfb2ae @@ -72,8 +72,8 @@ False False - 281.211009 - 136.449541 + 461.981651 + 528.676005 Pixels @@ -87,6 +87,15 @@ False consola.ttf + + MyriadPro-Regular + Myriad Pro + Regular + Open Type + Version 2.115;PS 2.000;hotconv 1.0.81;makeotf.lib2.5.63406 + False + 6851 + Tahoma Tahoma @@ -698,20 +707,23 @@ -endstream endobj 3 0 obj <> endobj 6 0 obj <>>>/Thumb 63 0 R/TrimBox[0.0 0.0 281.211 136.45]/Type/Page/PieceInfo<>>> endobj 61 0 obj <>stream -H;@ E~V /QDBb2\8O[ 6'I4ϳUM qxg 2+V:(^mXl^e#D]M՛f479=9YW&\ -endstream endobj 63 0 obj <>stream -8;Xp,*<[5;i&[BYE8c -endstream endobj 64 0 obj <> endobj 66 0 obj <> endobj 67 0 obj <>stream +endstream endobj 3 0 obj <> endobj 6 0 obj <>>>/Thumb 264 0 R/TrimBox[0.0 0.0 461.982 528.676]/Type/Page/PieceInfo<>>> endobj 262 0 obj <>stream +H; +A >6NfAbzii\t/ߡKR@ oy_c0EZM(LkܮVQVJb[͋L QW?4BMsF33ɜ`C] +endstream endobj 264 0 obj <>stream +8;Z]!;%A+1#X`h9$Z[9JQXeD#Ume:TQ]5&`+VWPZ4@pn6;pbt6&cq?L)uLt;YY8=D +Ppj4CCl(VDe($($DM8n![n7f5#El%[8O#8)OFE4H7)/!+$D5sOh/][K +endstream endobj 265 0 obj <> endobj 267 0 obj <> endobj 268 0 obj <>stream %!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 24.0 %%AI8_CreatorVersion: 28.0.0 %%For: (Ian Griffiths) () %%Title: (Ch09-CombiningSequences-Marbles.ai) -%%CreationDate: 11/2/2023 3:46 PM +%%CreationDate: 11/8/2023 5:08 PM %%Canvassize: 16383 -%%BoundingBox: 28 -614 338 -5 -%%HiResBoundingBox: 28.0712890625 -613.068490404607 337.807366739767 -5.6937054275395 +%%BoundingBox: 20 -2804 937 -5 +%%HiResBoundingBox: 20.8046875 -2803.5439453125 936.988157129443 -5.6937054275395 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 14.0 %AI12_BuildNumber: 88 @@ -719,9 +731,9 @@ endstream endobj 64 0 obj <>stream -%AI24_ZStandard_Data(/Xh .&ḿAhgp㾷\ݽXhp:ƃ - F >¡ޢIHPo^J&5T*%d1@9g ZwMRSTe~Dul K`"FP6$ H8|ckom])"ڐ3K+(cA8P$d$xR얎tUFމCUD-[DhiHW2JEKg^WɈ֡}׈]: B-ڸF5`,kb+}#X0 jT㬊TeCUzVl{% |Oc,撅CR.3.U}&RN"ZZP Ðd@:IRwg$ -R8P(N±d, p0ܰ6h8vC`8$AB$WCk,Zbӎ枑"IIrH%IjE/(X(de"bո@B$ Bj" $s"]$QR-жSa2&).]&U=e/*OʣtHi$#B$QLDuq1HPII¡`(8E)HH,0a '($5.roUKS1lH1!@ڕUBыb!IXzB$"t$6I.C$`P<",88P^X$\Z+{]D$4@(YY9IԊv! K$gH򿡸$HMSXTD)NC+cbQ T,2PAK  2(rBG7vw E\$l J,&r!,CHrCH" s59U 2`C$wlvNUCzC>X.VziP.4USS+#E*2DKJ'@&𸘈xhXht\8~zxwvu>:1la -{9@3#7A - F) -Ŵ2! 'vkM$Ai<@1A  R(N]ZJRJBUBB$;* "DHjmm&YL 7찃$ }'XEIVPHr:%(A_<3!B@rI&AP*px4x8x  jR(e]Qז#MBŖJhWE{jMRQP*x4Ta |媂  "  < ,4 „lx`0K <0Xh,Hhp Yp -BhCIE8Ǣkqb -p)(%]pncDxLT9GA9۩Odxh-J - - -$xb!DxXPp`RBD$I&@@B \Ⱐ - 4[  -8X$$IhCD  ( - " $@Bc<8 A+u敿z^~-.Әy0LCOS-*#CjͦSV7hNjTkyL6dg5eyl]hTIo՜KogLOL#>TUK+zvmSmF6މ8v=lF6j#=s6.n4ʐڣ#˲[s5svqލ6R]kN;kxY{|7i& vR'/cgiiGXE ow45{95<٘w:>c"nzX2X]P3g\3+M]ѣ+Y3>j6qkV鍬s͜}閾jm{x$"}ΪB›gzuWZo7>Pt֟j6t{M]s/Z:%\y7S>Y]}WmUTOiԮf^T;DTv_𻕃wALץ Kknz}xx]jl="^TI֗Y.ypIP"a^po:6&^s?ZJeKͬsT-e栩UΫL 7t,(t-ޮ;n.YfTvN<;кcUS$A,u2Yl;URj[Mxѻ.M*/5k)έt4/()m=Vzl>BWz׳v2ĴDhsk(g(* 1QsF*b>eK8R]ſr-kb]nȐѪb,K*V&Q:en9K)bh9r#-ɗ%njϻSK5UKSYl?~4J#ڻvY<9RU9B"C;ov~&!)-&Ip׈u`iy:^f]e)ԹrkcgowgGgzv}~_[a^9j.rREfyVzܲ9嬦KWs2\ʛcYʅ| Fu^hJO::ψf6T\V2]y'Ze_` @ <"<$@(@$~7.)ˣ:[YTstI[ѥi9}QcZtj-pp(f?Me-F,Xv>ii(#(Rٕng.`(eHXh測85VZL5TgYY[[]e%7LYm)*rf>V}Ɋq6ٳNz5_d| mV,>ܚkޤ,fY^m$e{V嶚rxlsMΪ8q֊&yJ~n_B*x9b};?t*YN Vݙ6jUV8Wνi֪=ThW͏a[ۙ=/KEOf^ Y]dV)*RI7hl|³Wsrz8yEYgrF ڱR^ϮU;wMe<[9;hb\HYgrjsBb{ǡ/-UOZћ>6yUؕ´j]֮u*yZ^$,HDJ <h\^(H7_+3ކBIc Ibf I& #! \m[&Z4۽ GU[ET5T W kLeOEKd[:I)mXt+O뮞>R* =vVwhdXbvXf}f.`$_MWN =;ͼuLywU㽌T3%m..o"N]ŽΖǬ -7u9hd7;Rz['::iM7]GjfRqCөRrKҺ-fZLo6$WM:F!g2q?EɺSO_y7EC"MUǘtz%#KTY6Q ?z1jsbޫܳ1jkZG2ƶ0thtؖRat<גvdZE-oamѺ5y?]^)a-zPK&bޔK[" ڽtXZ5}^tU%Q_-RD  hX 0hx$40o6kDPz+72` 2KI5K6M{&Y4zۛӛMx4G;UU;TjmHCzEwlJ 2+H?ԆWKpˈٽ'XDx&eҨi$oD2hxuz9ȠIϯOuα$n卋s9ZUU+=ä);poIfn?-7FUzp!+]DK:CW2?M1hmxëIPqbIWIU!R*۲[=WKTٲZIM Gf:.zZͰvme謹-eR鐭t۽T)\#cޛ\B̳DME}:ƕW{f(Ћv zJ* sneS8C)&Dg h5r{XEqޑZQ"Qу hv5*]wKYIxzCRڜ2D`!wH>:4htMW8h:ڵJFjxM{^if% sXGJ<ŰhtVmΫ,=]mYy?kEv/K3,:Rm먦W{jiGgMȴLw[d-ӲogS|4lkw#>+MT6K+$o"U ]7ڪZrF$ۜaNy:hO]*]-٫RF̟ 'Η/ўz6S»(kpjV֨kf0stwٸ(\ I5xݕ5GuҖhUwJS*x܅JT?JuJvת?dvi-U%sȵzw*jol4׫N11+Wnkkcw+g.޷<~ێnld8ţͩPV]Vo;;$ht4~6Q*bRh8mxzWXdkv+n/mWO jM{Z|Hk{Qaf@J淬i"hګ=S=y{:/V UT-re{^z^~4|[ULh7W&ڹZhxG{ךfjeetsoWU*MGs[sTb;^w-Y_zhS[|ǯdJ./'xUcM!Zf.Jd^zY&%tzsYw:jmk5Ҧrog4]5fCX%W'\czig+)ʳ{t4ջ9gYtѢ#Z~.3U5FOI7ѲwJڋyU|O<-.^N8twKseeɕk<^4\9ij~y^ȋ2n6Xg^{UWnS YJ5:랤C\#ם*=iRʡ3.H:˵,j^+ Aw>Jozʶ/t:g6D4y$NJ;.~jHvY+חhȗ]]żUܛ]-lxs< tdmNk8wejfpK?u_۩{.#T;TCWR%ڝ9Yg6e3ʢ}~7۬YZ5_Y*WnKtkO;mnǮlOfK.4Rjy4˚Ғ:"-][Llsw mJ34BSqNڣheuzXfwYj,;JiYV':֒g=l(s-R.Z4g>SwnjMU%ReЋLv/5~NW.-i%-*TS\:$u6+ՕjZw-w|7zL4˦Y*}AK]bݸ:8<{wnjlKkt_tR})yw]-(lun_tN2yvYOk9ͧv̥#.TG  -E - ( ( Td+ZRn-GXhwCE;{XGcUM}Uqu,zyXwٜR7+inI]vLUѶUx*_|2lfմi=ZDUZOTR5W?GJCj,+\Ͳb&u 'twj=4YYisZwi3e[SVUODnPrufΩ+ILXpV=××"<nWOU+noK3< -^gwPg[WVXs2Ҕix^CJګ-%o%.-nԷijGMYCRߐQEmKHujhu[tuWGk~U/] -nФkL\Dec[ t+m^.55aΖe_TOsVuJWF-N7\^ZN5o.ٙw<#j*"_igD{g:kEӼn<[&V]Q)Skm\7Bn5ioP٬fvӱcwRfsɬ4Υ)QvGs粬˯O]. ʮ>Kߍ] GMRzo*;_E*e!N3.;tXBb@AGzN!d癩/nǺk1#شbJ:-!nwᵝ"eJ -e>ޒ$JG'g %X iISo*QjnTϪ0== ]}]j}I rRѢ̉ګ ..`MFyV:e@jL!JX`I\@Hf&9Ȓ ɹ?(4$U.d rѮNx>oT,6`&쯺AjRS3ya_&x?Bq8`̜|6(d&6錸F cTSQ8kdxsmC7: gG^&3|0|[IAuq'Ye`1Vm=sBCu]Idƹ^mxYbQhu &f1Nkmn4fNmp⥉3^G=@̴7^M-VG:_}qvx]YئT V[QajJ6Xb~Β֭hP6 KwL>"^l\>AV:AOM#<#X\/-IfÝЁبo"jEiBmJ^îC:p>ܞ0Q|9C 0{YuQVp.6P=<~AYY\Ƙ(<>(E2!URrLӵVsV|Kl\ k2wnyy_TvVrï6_P! HTNGջoN<0g\ֲ]{ -ύwӰq{/T:L!`*Pdˢ:L`Oɰ1?AU>i=GPhN;2 -@#Ip4 уNq p!Ҝ4a~H551 -gyY@X=nr¨ " 0Ʉqw !MxRadjtpU@uC<"9`&oiceנߺ{ePªrZeMp|¨K.۾O?2f7Ld!}eY]XV]UblSs6wk1f9G%՚W@CJ!?{5⤼Q4'Gޛ^W`Og"m׊U3*gŽ8#k.Q -cuF擣6ys- A蓨Or/䔨 \v윀osOm`O&GplD{GSjcLn |*(H[|(2="|TZ" -mvy93@U*WB{Ȍ iɺ:y`!كaB51NK9?xt2 -q5Ҽ&&2,L$e T#|DcQIiZ &ls( Rqo4,Ź35"uKW& bX%`tMIdob&'x&AC.k5q6 @Ef.BU„?Yt ggaХ$NnMiTP~ܻnW'ʬШ3nwμrp}0,HU)a+~\2 -L9 -5*hA':lT4 v̆6`%{+Qh(.m >'YxhhWPЁn]֧îٹTz`Tݛ q)|eSw=SI78) rrv?E߉,+O37{4(upWh9]iD!|'Η'KH\G#jh<`S!2U-2`Trt (rRx\;Mv7|N!LtlI"dN!=%mn瓮F?_Oئ "Q7A~5[ŘuWrn/令#|!Vt -:$֐UDex4oͿqNwkWG9Z"v -QKqj'(FR;).n8Vk4̅36 -no44 |#MzuR?IBxTKE M`0o[-R&9P8|pqӦ+{h|0;hs< kmƝFŜ*ԣh7I(P#3XVG`uR@[&Z헥&)`!0\?W8X8o@zr9`WLZOVCttcBbb1?CW9plT ގzi_7FH~Mp+̛>R4^sκ1HQ => an"P*̼%Qv3{w]7#|_bmt6FI/kmp@B Lz;j?@咞=9葨#Xo+Quv߱xuEљ{$;:O#β!y ;j]v!VCCјkffAX'z%=qF);k<6'+7nw>dj`iW0p9ý=(*N^|P;O]L,?:vX5n iv -]ý t]5NxHC cӢf|b83[MeYSK\`I*DpSzDcm6Dr0Xs 3#D5jeRe$q /M܊uyB)AXY/M1GFJ%ER)wmh ;Xdpi%VD.bHuDy55yȇ 5Ek.3ʅ(8@DMiN6_zKf-3˪5)> "ąܚd@N]k{yb҈PМ(fj-zӼ?D-dɅ~erC҆MAjYdVIY5†7Z 6C*rE@xui֠)o&C i9ۨD/zW050 /ΘD5&k? Œ4P_ӗSSC&*$L,*m76sC4=54m`J\wdCh3%][xe QgNc}NY +ȸ -~LQ@x9 Ħ . #riF= X..뇱Jd[NLEl f&;`'xsS -E !r/7Ԕ<4!_A;G'4%ueomIY[jP!.lhbn2+mOi_wgk SlE( ܲ+BG&.awMr7 U<9ԪٻC7:>uרH5󕁯gh_-NdƊ$}|TxTIk{*[x\:^"bvGN&BR>t5KDfُo3-og, :6}$~hbE,6IT1a]+*F=L,g!1(i`%'U -N)KnY\ a'nO HQEY̎|1"΂3q*uZJqϊMhK Thn˨ &G)>ERϱ*䉴!&m=TfAA(,qK7e,񰋀t/wlףή Cy)C q;VyB+'m##"_׹QG"u`Y3R qHb) g3u/TIC1pF]IfB;yRdBW.:WiJTP 򼗛oH% --ꑏZ. {]Le*1`')k$(`|J ٔol-,$}?Q}x/ -.G_,ak - -EJ@M![wZǡ`ʮ o?SGCϔ GXx-c׈fy-4G=(s_w݅]8i-/x->"dV`)LX;S/fi, xL$s_#= tS>c\p%{ -'c^,pFߊ}&hL 8@+7T 2l -_dz(qld)qZAė `, +62[h! L3HI3bg 4^Dg}E#b91ir [o48 GZ[S&k Yؘc}j e2!(2  ~:Ca}F;cg0qPk>,Wp(:|^cH|jؕ",B)V悯޸F|Z87`ܳ7pQl|Ʃob؃( 8! 6^')#q.H+NBo`i?raZzAY`aF'KGO'8H?W'u)^@nX=:С=DDx -Q^v3 Pu{6/ª -Ixys u -PۘHJHơhD -Y/JbOHVZMZZZPj^IxnbSMcݦ l̓7&IMUkckJ~y 8H(}lR,IE^+@$Q a{:v< #Yu`YAwnaL!z2e G\T -1iN+,w5܁stW&Y֦FtKDV[ Gw\ -Y/p:]oדz'|{6n |-)n(Wl1R5R zUcw#kx^`C9OF -X<OYODaU+1B -a `WixFQϠ*v͢f$''K`9"pSƝfX_jlB`Ngĺ<蟰#`Mf3-`r1v omCX{j*Ĕ`B<j9'8!Rc9,e̞uUDS&N xK8&*e`S:IL3]LZBfHqʥ4^xldU~">|RtMul2Up!1#R-rs*&VqIG3%4^\ʎU-!JqpW10v#GGۢ4i&Gf@\(=peyL^TRujE Bf$Q$8vB(Ѱm-wL=-hc>ԯ; _C+TI# 06[N Q H֨qY -Gj/(_ BrK\A[VHrL>`pn`ZJȲpztڑ2OXYCS`J7vHa=5-!T,~=~PT*C}ǸP$C3?*` =ECF%&e^D!HHVHmiHicV C6CR  $8ä?vlhzTC#R#NA>h h[0* õьMhkV h)ȆdmF{ [}taq-9q,jo DEU)'ׂ8<7&F_x5۱\?4:CrK:Cv[J{sHBb+}jbZ#9lB@I5Z:!{?? ->TIFZ5GiŶBYaX6A7<Bp.P>*a^y֦0Pz,)B)2J3dH* 2w73EվVUS@=>(- su}V`?.je$=T$fDoOC0xw}@`>D,u>@5*#;;C_[lf(%NG ռN1`0t$q ya&N@=nD}]TѰjΘ-^r^fb0oUG2+LC$kJ{yD35*1l.otX0 }`򟆷o/4u#ULPse$:i\h!VacpagVSh8Q]S2g/g 0ASgvo$ hpಙ5k}[n:_̈I_fVerʍ-̬#K*QPZXhj(X@Kv'7B6i1wN9=Ðv*ʲTXN!5UwP2J]YyLE}#MT:Iwdƿ&1oj̬faҲl) ++m RrB|~aa;u 1 ƴ ଛB_.Az?hͽܰ>p< *y޸aJԜgJ2RR"Nblr຋$S;DƸV`^tpS|<ŭTC@VA(!~[r]uRQztvKT - Yp -u -N᷅{w$8FMМ4oy$ڲ%9$( -Ч8 'ֱ';ZIނN!(t7ě90z)I`kUՅ3l%)OA24[FX^9qb;j TT[hr -*>!CC 1|_ƞʜbP}{C_brn:0`U17Vzbڽ@=jPe||C(}"j,Y˥yeW􈯝B# -D]ӄW׎HO -\D*<AOE+2 -Ҷܞ*'xk<6ZA#q]֩01h2:m}h/ 6l=VANo*0 -..!ͱS &-)dFtOFXb|^b^*iuN_b>)Z[þ VjM"7m:bl!s@\U&17w{]<+|au'|­8$Y3Vr|2/7R8 6 -z9Y1DeϋN4\ GS+ ; c?V+B&,'B" -3҇Mc<^E%Rq+6G#z_%UG -;?;Z% )+ؿzҭM[e$ {<i\uvP\jE/1{(7=<p_~R*t -=6וl2.X.z Rܟ\D@**l£A*@TYHd'mh65A<*PEARGqITw_A\:/2(A_GL dEx-pY9VԪǫgC[UٻZnbSy8(v- l.s1n;z\4: -/t3p9Zr|ã6}"MZcuW&%uh.RJhS g,f XȤp.H*om(4Xf!&7j ;v}_{S`p7-7Obd`;oJ[X47U.py[ʥd>1 -3 -@\787=Gw /p{PT􈏛!W(TwoTL[vk~ VzٚAopl,%ktfi A %L,rJj_ɓvj `޼@|{݁aBa98Xe;#FOv%_2N7 -ͶZڸJLrOCWUaIJNrj T.Fl49sw0'_Mk&cKhRL1rG:@24GÍETvy6* ufkh| :- -X`j]y5'L@Iy),sCnB:TyŽ@biSBѠ"W@&bzR¼ vc؊eU#Bu+9#TpÃKiC PIid#/̳"=5W-"Kx| c]ܱǨ RTҋl/̘֗R: p" =~PHa4&*ŕE!ew,UŵeSMo1MjXNʑnV0TB _ q?,pcHy\\-D>Fv\W!%'i1(Zh|}`]~z о׵Gb5X7}+)P(YuAv/(PO *mZ\CV΄KƠy6ֿ* W)7Q2fez^5/lEc%EMjW`c@;'օ$  )\yr^ʝr"ÿvnr^IL -ya3QJPYe-a˃޳4rcfjt>ޠٻPTf=f[shϞ 5xcn^hC |+G vՔİ-D4twZ'HWatl@=sQY5$-sgj,Lfv*ِ7zku=T_H{ /CS۫rOqU;V''8QqUo '5uN+'sK lń#C`TPUE'X.)GuzB3:$~KOӧ)@ܴĭFHzɠ5eS%IE E3ܙ4(,{^4STC1RpWsV?ɱXмCwxQ_VR9_f+aj.Y 6XDT2җ -.LƳMb2HzoWpx]./jH<׸ - 7Z%Ӻ>=5@X:7ݴuᬼb$6zi+{7_j Wٿi$>YSsh$]ؾb.s80I>uc 0I b3P ޾Gˆʆ -n{ ]L{v/KժnnJad]1Ym;_dɰ%M5>?ƭk3@a>C4э #e,0 fp?ˠf$ چJ9 Ur%a5;c@$Ǣ5)ǧ b  -=ǹX(G@QKB5Rc@ iI 6w}c$|&2願"W  z2f}=6*T)-:BZsѠKDZ_o؟N!{NQSl{6~&V3i1oaEQkRzB\2]~[8w1R~K`b9< QI,=ӀɄD3fќKOw_}hI*N W7.}3άG75RT]$Zۨߩ b` nDeL|\i?yfC¥: F&M-ң"&;-* +)ǫh2̰S -Q<)ʱy -sxzŧI!0=9'p3ATWoH>y9@'cF >1d0D<|P)av! -޷q <= A|BocFT])`N̚OsЮo[ߊ! D-3n3ש6@0ǩúiS#d5{dĽ$CebF&hdL'7[Si2++kev0 XKA(;,RƂ1&J[0sn:s+pEr;vC7 mkh -WBa)f  lOfp"E);,N"=b/>d69J1*P=;sUng֍AVwHq莭uOܟTsyr~PuER.'[ -(:Ly"O%+˷u|DilZo5/u}fWq?* iYu >CDx}2P&dpmi^fuŸ0cMbz=+UZFxy3V cgifOD`"PU 8zH ؋vX4,Z߈KsV?]tw (N[641o(TX+x_9UXѨݔ 0w\k,0IYNR: Q[k̜ewsw;;J4Nb >.1baD~G0UCĹ`UԻein@K\ ©Mݜt:V}hZVs W*_TE/X9vrm 8~frOb,[f%,fiS?^9p;$O?5,wJvŨ>0xQ(Ϥi(ű'PT_p\_s܀ cм8+d$2, -ɶ |rAVS dF qn6"Np /[̖cWjnrrv* -3z#l.Ҿ(1dfBdP% ,+vlޓ&T"ssH^ -Ҿ5~Mtݫ / 4K$]²rЖeG8%f[Ap\_VM^|]OT7hO?6v4 -Z g*nY}{a;2?BْZIV6<5B?[h~3y,xT:?=ƒK}{;gdK ~J0 f֩B'/oy*EpkhxhY 噥/y}>>`PZl,ߌC mif6NhՐՐ1dQ2{#CB.6_U&0eEeh b-pd,3kub Y>Z; ;yHrFob˦XJP%-cl> 8[3^'Fq&.4{DƘX\ ͐H6Ŀ/劸JB54'PHw\ 5,)tՀPn {AjEr-7e?l!Bށ+JFEKfɞ sӖ.`0ral8,Z,iP PUƃ.-Kc @7P/vèQDɷ>˜kRQPzF%HSBZ%UtG cD[/zwhoN# \B駲 @$f TPBQ3L^y!xzqƇfIVK!=Gie0֕/<A_ !/Zﳪ{+ -vXI:chy$N/ZUNoأG4-a K*r\f6WqrnXFя-@.l.p@\Slrq-\B6 ."Ŀ} Sy BC ⁹C:s5}m8vN^쪌!`wQ+X]!w g1,%4 -(ɃBN,*RcVJ-2cud}D-YO/ۨ.ܐ仸xn=T[}**ɳя۶L[rJ _Ewgm"V*>Kpa%;A9aPjpI)lH./4oGwЂH&wM~I&p)5X"\BFT:!dд\ÉV^~*Pex߅qZ(ZTAdo8dT2=#a9J x jz>z-o?TvGq^Y7AF7$I,SMHW9!t3`LdYxݍ(H 8e/o1U6W4*FvtAYQ=}bZ̖g#e f lm($=ƂUx|Ǫ۬96rzUA4Mў0cR@I}:PQ\&&QkncؐjRmT\-eP \"`2DA&qrnUvmv)LSvv HqȁE>h儼`fVRw~(83~O*ͨ{KBlOEqJퟮ\-@>_ 0q5dɽzVA^3 -z\=:;1N UJh1p&ozl\.«bya åN$}͊:m$"a2V7+9K FA%?ۈ#0SE_o[E&w\, p|V[Ӽ]Ũ!נhp(PDLeX`$@B':J~,W3uGY‡ -4phKܡ0%de*hx0 -`wi [;LE_WW^vED~,jse=+1E9 ^/̹&i?16*]{ LPSqFHUIP_0A 4^ *;W@5D<cqZb A%(K7'('Q<`??;M!h ohŀ -fpH -dgDEU{p2I1`":{ 줼d0ʌZ"wH.¬ҧ?@{΢^I<^V*}fR) hj?A8Fj{z>iޜ^2w k:.r&Dj^+K O:ȳBkt6  -OuAp, - -Z˟c oZ+kS'!9UZaa- Ƶ!ȠI_inr:VY[9?9:) -B^nP)Jj=\(9t aM?p+9YcyPׯܙ>H},pԭi0[ }l2Ȼ7-[JNs'z$q~+\!7E* ED]n ГXyo"& Ê> `FBTL$"IB:" HS]h"q+YoF"n8<@qgIob -1 -z<~}"Bor `,}ԅӁǛPux濍GO H#m4&Amu ߃\?Z'⣿L²~D !gٌ|5Nµ'8 (FՏڲcZiH@^"II!_dBB{nW Y*Il%Pt*i0LHEUs䬏wRSx.p/uF~'vd֠kZKv @ 2B'ؒ$*EImɠD,kpe;Hݬa\];:eXWq%㷣OІ Õ}r"/ 8@"үo|aį7iZ$\g -e]]%V{v3j Vv{<ތzU+JY_Kz&o!h(Hh6Y xZE~Vcb>\P'KxL21 [/lŘٹ܂nv0fۢ:x˷#֩T]Rx9HNACktR'4;s -_q;<(]IGJ !svOǸC:%y?'{ve-ȏxj>vWSP(Շw]ZMCQmu} CjFەpqAGڛ爕8{#D*Ojx -=_vV_? -_tPUm酺u:zBWl3TkxBJ;F=bcPQSZy 4M"҈.MTU -FTԳZˣ?ʬ\Ѩxj48 ؟fLH S04H+TM T&JkVu&t -nsx_zFA*EeVs.'jt"0GZ'E.E_74 - -*-ch'-~K_ls37G:f k a# {3" GlP=i`B2^wc}%z~[QS]Ts._Lf'˵pP`cE=sؕEN̕Sr=Ҿ)*/.Nicv7|s4(Ahwu?SsR!CFXq 3l'[-[ ؽ˯ÒH -]az.J@wfV_$NaOw x;] -lPxI!f;~_wx#Jm%N6Ayd?Y.@0P\>}˟QZdΑ=:lɆzi`֑8)_}p"@vsE{ؿԥ5WYyuil.Ы䰈=y 2K&];55{Il?w.r3/.慄8+\ܤ\ܨ -,rrnImL0Ş},NavZIZ޵5}h}3g/-|&ofD&} @ci"}(S`wH tފ->ymMm#|05į4?,_Ci_Cϧa>E5q̠PIQqUl_4{r>܄Nr< #ܕv l>hՋw c dH-ƶ5ӉBU;bQ(xqVâ -X5se:`0l>Vh"a* !G +ps#b%qʠ(q[AƟ U4dpM}F- HVg5)Hue/bU|tl(6ZV =a#+ -;Rt[LfHZZ: ߛkL+ChƁדwGCիƖ?3ÔҠ"a,uWcN3ܤRul'M;):~ۦΠҡ$SA X]_ʹ{P@)803$}K~-*ՆVɣiEznt?ƭ_Y{Fݞ>@~tB*`O 2.F 䞨Ht"**cN\32nMPzZU"v/Z0B|JG -hoZ1󺼎SkP3{K~qM%9KdLemhoJ8"N=Q}Zc+Y0%ڕ(X\MRبL&jE:蠂+x<,ڑS6䤺]!@+^4Zhͭa6 -v|@:B=(t+HU=~vB_FչRrptCsU[?1J:ط-,2ڂ unȗGRc!ށf&/ T7iϋ(pF6]:&]7(RqmhfUO -k)B V6:Dw f~IEe>HEʪ%1)qh@VnI;]~@M.F'uv> ). qJƬ Eg_yi\*DǪ_T>Wn0Uz *@?b?fA[2Rw]n姇`KN3!غV x@*!zj}؛`t>stream +%AI24_ZStandard_Data(/XdgE /P&mIcNm9PY,SjVŸҗn > 8T[I /Jt2F2aEn@DmAϻ&i):josw ["ǂ>H I0-whCR,D *IB AW/ nXOwOYex;=TEԲaMt%ëTtqL% ӻBǃ6 j P$S$ "InłA  Fh@up8>`< D!0 HɣP$WS$h, Ŧ!=#U$NEb]xVhXEU$Hp4dcH7 T$rPC"15 h0_Ml,rHHcW0 [Khk)PHV.~}ϲi 'h:Q$dR$D1ŊDaEH"5܀0 F2Q b< \ Z(ǚcPE9)HkWV E7j~#ˡHt7Hx4KW$"*KEpP$D("p/,S.-yא +t[""IU$eP$3޸CN /ja["cX8dHaF1q d$C8c`0 0F5q  Gр4@G:ԡHqp4qÏzȇ>AC +! i@5eІ"ц");L/*A."!>  Ex@(.Ex@ə"ƃX<CG>q{أ~x8h8 ñp,wC@9Q4 GX4؆6 l\ְF5ܠ`8 Ƃq22 d0cX0E.pq [qg|ǺH}c~wusqomk}Cjꩩ|d#Enff*KJ'%@.𸘈xhXh8~zxwvu>:9a {"93+#cvG~JiHAb4ZieR$/5 Nm"qp8 tڥ$$EJHdGeeEX|"~6K KYL1? 1ġH^x"9[ِGA Z(iA "%I@D0ΩδC sݮ-\eԭEo'*oz(oY7x_wZҗFSY{tdYv{ fn5ջFPk׉tgu 7Kso/Z;?ͤ2ο[ӼT[}l3-(s/'S_GG +w[%]-F6.vIgTXtI+9o8fcW6~Wi^'] tEˣx\+&g75ܼ )RU4ܬߋj.+~r.hu)7]a}MVK]GB˓;2]2˥6Oݢ|.iJ$3Z.PFkTKc鲙v.?R04y".xez\\X?׳u-W1%+s6Ь.I}Zrʢ_cD8%SSF֑[2[[JcQP$ Gp*r١("Y4 [hĞsHYy6g0p,XF:FF68Gq~,GݙFhzHGi<ΆguulOjvCEN3h=Sp,%(mw_WRB_!沎23=u:mBҘfGJY9ל;YFTEŴ4)YY|qTZ)x;yl[ٜ٬_:iΗ)&M[QI5WeyߪKq"d4V3d-As)^Xm@s2;ĵݣTRXck{K~챴\i,K:*Oh65ʣo˼WSc-zSZ~58rDy-In>ż5(~O+榿Z:+>UKZśUiTqTs˦gY6,4iJꖎdm{)ݵ[+RNi_cYv,K*,JUc-KF(}_&]Iud{1}I-TO$KYM"zܫ9yZ76ࢍ.k=4GQ!۵xWLJb0Ofx6jM"=ovo5%޾8ŀy4j*I#̦uE<*^];ů^2(nS|sx8[y\iUJ0i;.\l}[OMa_7-2o|ײ4ђPn9DLugoyQ+Z筧q՞:x<ҦJB#霛fxԲ?%+j +3Z\d4^7Ve"miq\wV{T } iykExRb&6 $H`/]"f-mvR=%}5Z;ojwӞW;?cxD֑Ҿ'a1,]U*#K|WcVZQ]a%bZb~6uTӫ=s~䴣U⎳ʦjdZ-Ui7ɳD>]J&S*ԥiutލ*x.›smU~9h#m0dwt<]jUM#τVK͗OhO=)ᩋ& +׬\imojn3NwŀT]YsTHM-my6YuG+Yά4HqʪNw/]t9Jx[lw31Kf^%]Q>\Wzen76[J[U_GY͕3[LmTwV2YG.7VzJf4:|?^(L X4w]<+,5vz+'AQWK&]v=h>tѨ0c3 o[ִ} O4ឩm|hhzmі+G;xTs򣩧#ܪfZ>F6JD;ړ޿4+\5DEͲŲ Elg:c 7wëU XY#~YZZKy_r {; nQw6wNZrBnyˌWE^1e撫J楗eRb)O7u' +pVS+m +-6Kcu_aa:URx5~F2"KzJ{,)7W_.{ͺ-]uΨqndmODڱCvdB-G)-YN+uk6zЦ4C#4줯=fXV;ivWfɲ3;;&mU{}c-y\Ɇ-R.Z4g>S)dZU"U dR#qU"ڲVҢNe1ťC^Y7mR]EyGMrwQYw7o-MOtIlzJj%ލSϳ{/vKLWn)՗RKmwgukY1YVI)ӋgH~|j̥#.TG00a !bhjYKJ6Ѩj-V(~5v;TmUma]4Vu۴ڧ]\ǒH+HUN!zW)un\zntnQm_b')f=QM֣LTSLS_juTɓxdܭ~.VViwwӎn(h76ʣģ*$ڒ}CTIJ)mCX?s)ۭO^bib륇gdwV2mLIW¯|3L,/Ynnm[ Ecu2u)LW3\WQxB$|=RM%)VPR?{z55Mr㋴ʑ٨d?_1T_6QQj]j^nUiְVPlgUӫ}꧷tgΒ&ZQ +t3}\cARnfIB3RJGjĪQBtl5}@+*d~{iȈȐNt7Ų]RSu,}w\ӸjϊVrh*vN$M^x/ιt\Q֍%jGV*wq/1Ӿg7eU9o)J8V5mc%s bIoJh.x7,OU;"*M<}x%m%ţJ&HiHMEs嚫YVZC.^\gӬ/iilc?!gʢ'Vx/ݠp͜SW~;ʱM᪭zxkՅ/-,/EyS1\g,v7V=<Лxgxʭ+T+Yj*ghѭHqCe¥)ӊ_9[,f#n%as5յW[4UCK,%,\K,]Zx(U^ΦtOORSШUYm~V-! ?5HǴ;fVj3Kq2K]EH4{\x軺p,~̮:F^3Z>zsʇUҥfk4iM~9jk2HSUFdd.|1m>KBIx_Ixm|y9]N4īߝtϫYϔg~5vqJN%t 륤zoHIo[IL53*қ7JS͙J7De1lL33gͱQ3m63\ʹic#=+u6]:Jhz .P n뒮jhMݯꥵk7P! tk;llՖ~e=&"25L+itNʨ!馕Vө EU7;6QgDW]_Z5Z+-hoLgp~WԜ͘g٪+*^sj릵UvCۭ&-J;Nz:u w`9Zl5ƹtV<%J؎hv\ueA_ٕڇvѳ˳ᨩrrw0WZO2[VVޘY+t\l;d?I~cQpgNL+U֤9ihzV[W]ݮgIuS(շZYeVѐE-󐕲\̵̤گ,}lii-Y2uo+2tY+M<>_Yom&L#ʲ&3<\Y봙kZ#*xZDͭB`@0B ;M>Ĵzwvhm{Sfq5:ك=1T>D[Q{ ՠ*Ea5 6 <{͞)Bi +,*1X`&z,`^9dBKK*K|ݙJM;ÛݍF fUscح$t>7 P._$wN1I@sECNy qR<'ξ{A;V_qk пDfApr3!(] 3 تغK(iB1Ar8R=v3#h/W]}˄AYIqx EZ8hvKyz(vrYm%@ED;tC(iYY;)`It֝PDV6xT2}`&ȖWYRu}9xL’N1!"=*o{vt$5q NKpnǃ#$U)^gJH.x`%tyc_[,:([hn) S˛^fu'LLԞ5ԮSS$aq92D=DNK[[)<#+Bw(J&v1xB;m1e6q: 2Კ ,v/ܮz 8?ӵvBȎhי8a?S*}^4ʤpdȫr T+l=zRW .p"R[u E{%ۨ$^^x~R] +?8gٲ@X=`9 "~dB;z!@xL1]܏ItG- <QḔjܙ\zOD݂bX64\~V+]J_QFp!;.um12+uaa,ݧiz8h{{WqqTkzxQh 7ٳyzO3(w?P-cŏL:)ʩ6T`&bnaIM~V'_J2%Qk?@@`)Xȼ8'#Ŀ屟p$@91UBhNf0eg?|;f {jFb{vI^ $ޣ}`8yJ +ѳ6a;24G "}_r"M+%Y@{kˡP.7Ӏϗ돉jv+C&pmM%Ie> +ٹΜ *o + gd")[@@5%"* ~N2H -+&b6F K Aa) +Q-ꬠ01{@ +.V7mJLFNE LWJ,ꆃOj27ɻ t{(u|WPiD|'͓eG$G#9 <Sq*2,xh2R`s)rhuxY<M:A7| N#LlI"|N!3%m^痮F?+'QޡQ7A~3۫mr^Ⱥ#|$b#*t +:"АUDe4M_ͿqJwkWGF""X#WCqj'$FR9).n8Pk<4#udo2hxazRW̓NxTK^ĢMej?[MPEq&@èӤ+{h k{&ъx:om/n\'|*GqIP2yf0@7Eݾu=@[GKδV9jYgc(0Kןv5",5U xCU֓%-oL`M] Fy8L];U  +1U0\.[=U'# ]g_jRa> %ϣ_1; X7?(b傜'8\`:Etz3oHa iO>9r['ݸ !sv{ 6[y}GJg3!s^9h |[ݸFAu"ZeQ-\d{,\p|sa9W h4\]ۀhcJo1PhZF`UFܶӞ𒬭شǣ,z,iTlX:L bC;^^U3(F7MV[0NE[1AETPMԃХ*߾GQHwfu* $Ptd5"CРc[@ iiEմ[Jm@oXr55u0f,iŬ +tL3L^89?zjA~x3D9&{ԺBF]DJ 4qI-N(^]'}Ww)Qiup !\ieږ:I\:h%JZz?=IaMǺߌgͼ]+\8-}ZhP~ED + Y)bi4еLʸ 5ؐlZ)d8@`Ix0&)?"N^p(Ѷ4e"c$҄IOIba܆4ڏr #5oJ6:FYZf$J87""TGY2 ?2\Is +"m|#ǯ+>vDg ! @k\1,z:SzR`4bpq,7i{${QN=q֡K[qdaSѪv+wBďNa1# h\Xu۩'|ËڑqVTx~Y?>Ϗ=dAJ.7avB0ZzN)4#sygߡ#=^߯~< +gޔ\JU  =fmqH@vz2tU@s Y2H#~$]m&^>%G2459dRh(kW[pĔ4.M# `\:hg`*FRWl,C?CcϮ f9P3,pJg3GXBpP0^(8e+Y@R=IhX\?ULhQP(r'1ܩtuO5i 55~[O~գIs<'z+2LL-)~N ?Î ܓ`$*r$ulcx{̬6~^C^WzUl'k'^XF{R(O?g pI#n22IUrKxv\H2 39Sн@$Ut~hߗlٱ>Ҭ7xd))[,e7;@JmQcSj=>]m!Olgx٨ vm흙[}d&Xp $bturI2Vinz}_B3Z~Ec2 cBժ*QeL ^s2 #tpއɑi9t÷>7s܉AS Xe]l><nU_ePFϿ%lv?Owإ0ӺQl4(}%)&t*hN Yb1(]`?,.bmiD@ +.x+5΋7P|T.Pٯ#^WWk@vLh*NNW%k +OUzڞd+[ ئ;K>XLGүHDhy9"`+=c@jI#oYA"KmeKS!uu7C)I=@2Mz1<XwEň| Szr!jW >9C*l (>Pc6ܫS +<)3b! ++k4%j>&; Pxqxj'Rn$(ӧBDnz#^ {)Ƀ6yѦJTXIZa\ 4eYlYEbߨ8Ckd8 yE_m"4cs +Ъ"iS֑M9-PbW \UK2]*h"Xz-dw6y-XJ#z/ I;ėG;gwa.­^ ϱ&0]+hf6 Fزd.E$){#v(S>k\@{Gfjb.b2C$hL;Oínj50s_d(Nfrє-t`e , G6l2h +59_HI3ֱ34F /9ugIE#L^hRhS5%kOn6&lc÷ZCRGf ~Bg}Oؑ1~}ȕ:kVix8d|nv +/@oXdFs|j+Y,",”dV,ysSDeo]zcop_-[3! xU,$Q7)sʁ# ۃA34WŁk茓8g+'B({ `4ior azAz`aF'IKGO'8X?@5W'U)e&P|,E1Gvk?Un!J6)LnL=VQ=bTddT+UBou&4ZѝwK-ZRV<,N_p!,zĀǺVAѰkvm!8ucr2y FM*hx + |_nq +i;$Ω×\nYO OTd0gg-{j +sR¥Sjwb %+*@x +{4ര4VQz2A 8P +A.c =ܕSYF"4gt#B")Z! +{V!6IET3$ 1b?HDHlqhdтIQ9ATtbĜ hI0v* Cj5O .0#+ƙD shI01v tVa͈%~,j@̩EE5bRdOqxwX#_x4gc!( ?4㛃zJ2G:C7v[JrFC"!C9bBòE +H>7gT▎ӂDHZ_ +Ec-ĽAHIue zZhUVx7戠x$Ч@ +6,uT2t 4\]$r,Dr򨌲$ZIzeLEwwjϢsNysiaY[Al@;u!x(~HUʿ[{>UE@4p(nXY^@)a\DJ菪21KQO_!;*8-PdsP/K(Gk]JI{Oa8ķ3iNd +oRHkK(Id6"$:Eo)r]J\gˣѐi4Q]q ɨZܣqOpEXTR%?eS"$BgDnEcD+}âX|*䃽v6R[" jI4QJu3jϑs0;vi

T1PMЫ,yLEAV +߱\qR` YD,~2rs^2%6cfîV5_Dz="ʂqi(#8뤬P0WKPe'uAs(m&3,Ojuo +B7vH%53Rh` PZʔ/q#Д;ν#b:c=`/:1\`{qk" |"O]d"W-n^0]AN_|I|BE7p>9y@s=6ebFmA2R;),1xHSB)mٵ l?h@|ʉ .B+aɨm[AdIu +)sƀf!֍3@AկfjĞ( 5s5EIxFU뼀 E>-c9@ppȢU|r9Z~9=V^G<Y!J=fv!J=Z(Kiji;w"={g-ATٛ;HN +2SR9Ӫ&TIn dQt0\vf>Z`)KOm[FΩTL*obdt1{I_y\PGǢ6`^Ry/'&{SfL焣}g'cP,1>W3ll/xJzVS험/mdCƆAp PI:YRZ%>KϬm Mݞmy;:_bG &Dlp+FI|̠F ˏ0r I^Nm9Q+aY~") d)pJ-ħ>-agJI0I|н*erPacfaX@'ne}CԈb+ $Z:Q<5}^I9ώNIx=vt+{}ᆪs;?ǖx> j.T]]GKe Mj#!$\߯TK)ݤB5c)[n v4˨^)7`5) +#فPʪ2 JZ*cM-(oJ6tWz +ė9HME! +C0T)ƅlr3ԕ͇iyۅxJ& sC:¢BuӏOJX.%^TQ@eU@܄?ݱk/} #߃ P| D<}S&'n߲Zk>S`xs] [^5$sD<"Q3sLSHFzp!DOwmez 0i),wV+uWur 4;!܍0"ݯzf%l= AV0:9OmM&)R]81OD5DBg,lߩ>nj;˸T3&ڔz X@*eRtb +W@uoD};rb) kjupWPx-BյbFSRyUt?ߓ?<= !ѻğ!1IQ4Tmb^k[i +Pg҉}nRR1|2lU(Ka"CZײL$r$Q*,5F.C]^Rij|">V!;җDT6&_AI#?0FReRH;g5yqwQ<y+!r)0dRR9@?ol!BQ+1aۀEDTS.u_v^!nj^`1,Z-6g]R.zоxzYp׍¿rqþubZV]{'kF+qOS!wռR,&!w9&kaYo!u0'9XSp٪{k.π6c7ƟoTJQu60/yΉw_&$Y g`rCI'6BRc@_&J‰Ws6ՀI#9 28Kylb`b@ZB|&WJs0}ڂ!.e"<j',C=?ë9 /Bbd~ cT\k ubz &b +q8# Jb{96K3.L%KSSI$@l%CЅ G`U <™p#j.^f<{_@)qJ/ ec S{AZUbm<SW3}ÑͫQțI86saddO;GXջ W"fFc35pGޕYk7`&ܗ<*/P([A]?EH='Jd]66 +%bzU|i_usS' 9T<n*1"Mwl+whBvhMt|zc B},^ՈmG]b-w !/-HfG)/> Ux%q5A +ur (G4ߥ1RJ=_D(G֡Q%ϚZc@ iI 6w}cI|NCi܊\Sse)N{lUmv͑탂"" * +*t`_o?K!aN&}y2 LZ2Z1aE5֝K%s'tB 7Όo]68b4pT +mm Pl> dB"™ hNw暓I@>&Uh#e+Bu ޮgvDz)*7mU 1 bPѠ2)mtEgT%`yfC¥: Fa&QD-;R_&YZD9"Lm+h2,p`S +(1d0D<|)aveHɜq JyI >2CR0' ƺǻLbvd`͈q Th 5aš=2"1#bt4ܓ^SM ĭQҹ oz52S;PYA&AԨy osAmPA},j9D"_O9v_/'r\5V4o+xUpd'icFRUx k퀢WR> _gХJmfeU➝*73 #8tֺzO*9mW~hpE5'\[ +(7Ly"C%+˷u|DilZ35藚up3+v:㇆\`iY/u :(>{51&wz+0^B sٞ"Hsޘn!@Jݨ>l ZƄ'Tz F! ^2fd/HE;$& C"lY-ԯK9?A :vdAV1 ?{ט7UI?ޗReN=OnJ05 N,)fNf;;s%'1tW0"w# !\* +2V4aKեwnH:+g>@~K[-}שA+yoMqqc;Iug?INEYj'X1LbzXD&XEߐ埾 XFsh*3i2cVVyI]Kˬ~%IzxoلRu Y4hN$j   ,ۣ+IR7'㖌Ĝ.AR3JFGv$;ۙtŋ٫L8?ѢԈ+gT$L:ǦE__" ZdlE:KTG05l%M90/*`y"tӖyִvoUq8V`jdCoTe?y@&/B3`5}À M.h<瞧%y@|aZ +XA}ZU3ݤl'9oZz+V,OF0\αm\`$ȇY6#D^JP*"C|L*ЦTl>Dgq㔊T`5ރxi\YQ(RJDݳQ!h 2`I_eKy,2)\%kNQ__1413p4G4]86t'Ȁ3mmz"Kw (SwhHx)Ad#M*]!遜0P\Q~#%_{?xYe]4wlB1rBJS߄*iӀ vAep@YDZzzli`lq*cl]xV)}X0UoGmTJ +O)xfi.߾ I +k8$!}aRP\IP@AS 7~cO@u'2xƠx_ W|{eHdYim M +*F*.Vmͼ6h mQ0{CL.blzU&`0eDehMb-~a,4kZ vvM6ҹ&Snb˦XR%-Cl>78\f'^5*fO&ҙhZc{k[LsX0i! _+ mVЌG V5=SV/\dKk6^3=. .jMr-s,7e`Q~$`v˱c%%LMNߑ ©8K6bhQ1z轉^MV` ןT=}ZM)VST nQM٥v~e# 9#q~>Ctj4!&K|P }hF}M$b{*3%LztouM-j t%]7̵R Ek1h +WBNg|cՕG`W~[ ˣ*Y w|-kj#y !)j}hn#QX`!.]cfZP0]d{EҐ.`{mU(ы:ͻ}PszaLxF®@"8/F"P)T@{{HbZ\A@ɏJ5P^JqcP(2M,wv  + 2^L!咬 #&|"sGatC +&zzWDǢ5Wr}Hx:0E6‘œP 3@!7ό)s ?JRR , @ +HTPg9gL)NosC})du0G,uGtf<H`%049zyXA +[%mP̠~OL!YMs"Z' `( qj#:gZ +Nk&TKɥ@U/5touXXdDaѠoL2RMGSYHeOumv殦McE/Hd-Of塿tǐDgyZBJgqpMbO!z ZX.b}OW`a|X+rYXZ{, +T +b ɷJ ƺU1[+5MF7rTPoe4#ǧiÉFe1c"|CPQPw j}?TPo?k#w*/' 7L.[~F]^۽:9 $Wl#[/ +txzOimz0kg/>$W81#eD?YTQIHb~E7HH< ?PأB +㛰qO'bd(՛xn8uCK7ut &Z n.Հlz p6ԺcӆC0׏X,9zƑ G1) 83Ȉ@@j#SZkT~:\#x^ٱ[4& g gqE$~2`=7'S_{,XzG1_(De(*+r;) +U<XL8c a!Z?W 2k׵%$I;_ ghsL xAs"'Ay8dȒP@jy"b$mP5*1$)m*ʎ59'POM9nwt0r(o,԰X{40]v36Ne+4kU˥G+{Js=OGoF鬯%<[FT㷙94[JfԬ$C\뵣T]_40B(_U.WLm8/#hۀ=فӑ0+a?;PZt˪o ybv؆Ɯ32ᄷDA e0&1QC&O/r.ޒΗK[ lLD$:JI$3@$m>n$+]Cwe  G=a;Gdyi'!Ѓg_RZV-h^ժ{ +*`'2^7*c#_YGj٘ _"/bQ|Iu*Dť`͐C{v`)w^qWw/nIS>; ׿.9^!Z[X+8G<;|<(hf +!/r[sal]:z?2"> @cL>!}uH,˗)`Y5/Ϊ^ּ ׶^`nW寡5奡ߣuZ6TBPǩk26/5)vԢIĘNIslUnvNF> wmb d(Z\65ӋBJ=bQ[Wbs[3ܢEl'-vQ1I[LJR[IQT]5l:k@o G %5H<`eHK Gy5ZWъһ7H7CgT9S8_IW/ԺrM#W^F\O"Cb`x +̌5'x"& +5{<U.eUG$](/V~Rޕz' $q9tPq;SkQz +ՒFɹؔL}!%RfCExNfDޙ@ VbuݴԋP$02*ࠢǃE{M?(7{CN*oڋ&RkfL`IGo Ӄ>IsܱS3&Uُ5xT}!%FJ7?W{S4n̮| тD* (-8.ԊlYp$*5hvB2]>wߴDx^P`Te%uѹYuRd"ghG(oV$?"N;]﫤 +huBo綖/DffB et}sʭ%gS))`@\O3]~@M.F'=ۡv I~ +r։FW &Gg_yb\9-Ǣ_eWu0U#U??>#su RTuM5sC!]_i k%_ф|/s-a œ.$eokf̳'kOK!M/lGH1w C=o_)]'r!).c#ȄhM'JMWr◢"k9X]k`@ƺ~JZԘ(/ v#Ň44$E54$7[pIB=N v'qFJRI""w B!8X2CᲑ&ȅ<>}ɊZd1Ӊp(ˈ&K lXk$"BP$D+/PL"/7T8QAD(0$! cL )XR+B(„BHPx!2B $B7HU.8B0 JC|yCIBLAb%J9\.R$.]D &2amB nj:j:on\}!- 6C:WRMt΂h{+I NeC4D?Z)HN5Ŋȶw2e95 SSE3i -rIjXaj$}Up'PiF\BE UkcI=S BDUIMX]je +rIjXaj$}Up'PiF\B1Bc }5)gv BDUIMX]je U;V%` -5NhNfj5j3AF` p,r EYQV ԡY֦f$ P,0BB|*N!&z8@3|ol(c8C?bm^%soqHLa|lTT׼Xs -_K-RTu!.JT|!; 51 -U#HpզfjD\6#2m'8顙aIP!Y\Ev1ɩ, -B` BEcBq𴺥=dht:pZ5( #+U\ڈU)ǫf\0!-?|ץ!R; J8Ry PQSP5B.h)(0a zTHMΜd*̩ONEBJ,%f嗈V&wWq_%ap5 "2**3TP4a5CUS tur IAڄA,_dLBC ɘNq 4'.@PEcY֬UD+Kx!߲5"`+DO$XOD0\BM`S80Ufk -jSrm hp -Qf^ݥY&f CySǜzmnƫw]H{ %V_fi$uݾV yum:99!BAb#QKp ɔU -AVHMG48Ń K*> - ĦNqRbWh 0#$~ɵ_dCnD.hD mBmc[('2ٗ#mI<֗DVǒ6xSM?VifHKbFxJ4 2:6,~MS*չY?&CH!iII9$\Sa)N4HIj3ETrLB5x7X6Xq "EkѬ5"B"\Xܝ&#+hMWӗeBB3Z}b$*Gz W%ʭ1wBp10,6NKZj]Em'RS -UCiPbb8z"&Df8I1 - =JPuĔV"ӕIUHU9TDn+E" -ΪYetL9C(U}!. SUT^Ubb'i,|'PP{lC` S% -%py+ AGy<§>bg3hH) C M^slVMUxU0ּx/7;-dT -ŃR,Ols;X^F;O37+׍p1Rm\_xoUBR厵XLHBBZ8pkb_N o b&oW4kCWF+$"IsWTqJSb;틝Нe6QiDi(T^c] ;T@i/e/ qNċ\Ň)9tzw 3x)R+,ϓ$5!!5ƄP^2/"-Ɠ]mdN7Wapb&e4X!qj۷(EDPƤtJBjZCfa)~8CyvIhTxyTiO%3߮.a N&g1rJȀ4$%)m'{GЭhGJbc)Q?w 0}HME u4~ -1b7j -'A -|M-%*R./{3مZָͩ\Jy1J hW65XDx"Aj98=t9oҗN{?}۴5hVx1VIJZ҄94 ÓΕ1tf#H' EX dӗW݅fBFowu9^3Mr,"Fhy(b*bD<\^wz[]^[ZWdML#kf2NQ ]1 97r -I\:t%|FFhqzYѥdSWNFҜBNQ~kd3V\ڧ(n6vQTE~Mf,Sˎ$HV ^wA%FFH&VԣUE!hroQ[fA^i#$'x_uLL6ODG9Ew.6f4~ +0ׄ;yͼ0}Ӈ;$ÿKZ;\?3hFz#^7Kw!^&eH&p c˜B:LԄ[ʲMضi%5ԁ4L 8&+Ŏ@A< Ha\r AZ*T3* y6LƜʁm ;ėה3 bv,*1,kح@L)JVUR4m:ԡ:1I &ga.S1RRcaМqg,qW'zk;ܖA]p-㞀MˮpBYʡlDw?Ƣ 2 [" -.JB;g2 -WoɈeH @nơ]FQ1LA63 Zc2h3 Oӡ+PCM ED:!23ÈgTˆ"02ht*BBv0 x?'Q,4ʍr[)_%4Z}pO(an!a&*oeLCɡʌra ˠev!  N J:Ҹ : eQDxkƒ$qt -NDX -&P(HEj  DE/ d)3t$tR6|)V&| vеP{F˓P?a4K9Oc %!oBqs{^t:*͘COԫ_(Qda1:g3gq7OgZǏ}8a$EB `@ -Cbx|4~B aqPPZ  #1$p'env65hia,j[wN}%q#LFܳ,Eb/5pk%Ll0iXHmV(I!na餰m2p f'u"!\2VEQTfѬ]و4CƽֵQk{w5FM ÙHWII=&%EFFBWCCv^$G ~N8&㙇oSٺ~Yoᜦ0 X+9i5=,trX@. ~YoX 6vLMIh)A*2}!}rÈu'urFpb%s S#:1*=C/[DI,xߩI9TI`j]pCv:O>7':v!zrЊMaYh۾h{ #B͊VO}'/ScKȟe6pZ{ zV̟y.~gCM8] Ox5ЗNSXO%<@Y1#(g+@x[[5AW0S4oS ǻZ1wOoXpO>3T:+("B׿ ˱?t}# 1!Ҏ2hsp\HPc=prvnډx|d²TӐ'ZP*iP~ -l0Y42×e.gU! }`N׊'jkjg^Z6%|DF0DRf1҅酣 |gBFUxCa0rDx(D|/uRP<5uN1*^&&.pAcdU~yftb9?T˧]HޤFӀ@-= @DJ3yj!Pkm:ư>xyavg1!mF0+i(etl[R|#ëbv #Q.Qt1qƢOO}uHJ#pgFgHW@ĠVڬD@FX)^a<=i}аL&At -ߘ0JFvNPY-t -?ǒ&c` -6²r:TTI{پv\biЭCHN3^h6  K*a .JyWb':4€dM@I ;KL-n@[d@3>RNi2%1~Ph"".|CA~w.Gj9@"M `X!J;Hm -ninHŬel+IdP;mi}Ԍjbt.5^tg!%{{`^ +Z0hv\E`3rݭᬍ2N^-@sDLSuHjkY@0L /$@n{XL 8-~.$LOXfN%ǝ]Uӗu~MAԩADG9ȂN>pq"h>Q _3rl+دTbZ[٦,`ˀ#oq%qCObic-AׅsA4ceDMcX=eػeCL 9.8&COt chO"qrq/q-p sa_T -uL3ɌYg)|54O?B& - |W\ %Pc і7I@occM<(IAّ.G(nD YoOT/W@#wBzPF=8ڧ(r*F۾Vn6_5KD!ɖ#JEK`u/qBnVRm(TnKD10Q}߲cū@3ѴF -?'@Cn&JU#!j=Tm@ՠ@xqšY!.҂+,haz'd9 -HG%[t&qEC&f{e׺9zx)́︅^˱Y()BH:;iGP** -gt༘M~ͽUu(ڴ rC(*!E7dOd3%EO c -A#$JQ{x9aCT[z?JM,;d$d%"n+&df51l+#_խ\h [$aD%!4aĪSmSD\ q(gԞ~ҝ0]lgbi`KW:ݪH q<; -L>ˣDdij!+lVY ['ͷrQT(`'u)Og >IZa.y9wVeP K\xԃ^@8Wsn;}d^KtH "0b-d1PXt a3g f :ydx {/4fP..JǕrl)kaaԀH;!rAP0g@h_hnd0Z~%Gr˚|wFC`l -9+\e!fUŅ>x1IHX&jSw餥 Bt Dw(OI`L*֍P4%\;]Dpw %XxW@I2iEH'íԕgYz@Y@G|Np._>a&#.ˆݪU}"'|ؕJpPnx{U7YNH$63 +bȜכcEWR)/3F84a]3p jNs!;X!4PnS+ho>0М@ ̰.TZ]e! +qcuQ ߐ E 8qP;0_Ro)yz-hei`WsþΓdS~Oh7JbtAZuVo\ y2j1]S$$u_i (d*ZnN@ѫ|O:(ejJ?At|B@ǚhD۳)vo[%]}@nnkѫ rF}bʷE +\x -}.> RD.{|hP3bHgÏcoMtJ p g+W@tO<wfxLLx3a<Чp#fbzL -ɓ:22ta|خ0?0_ F2q 9bԀXODBo~@,;S9W Bm Bh5&qB] -d[ CbM8sAl5&6 bZk 0qI"PMD@H#L̴"D&1M-)`}VЄHg@&uģGh Lj#t /q~Hu`$/i$T%ԹēKܢ )1JT` /]HKrZRK>K1fL,Kd g/,Q5M}%^_?] ֚@k%>.V1MPY%U⪝XJH ѧeOjJrZ)=PP -[@(I%@u;IPB,lJ> Q(k'4$[Mla0 kEV^$*0(BC2,rB=!XH=Hʓ~a7w 2g i,8~1#I F-`~_-#na-GjITɎ|y#ƸBGʅsDs=Ԙ.zn], 5HGBl,/ۍ9)  -Ǿ^qp%!GȒNK8Dc!8 " Ca8ԻAD8p14@9 -j+zsA5&V:Dl -b7tpt-A`: DCDUaQ% @4v@\+~!O a#ؐsCb|߁O! OGp3@ɊG&e1PCG!#BhQ|dd9|K|7p?#i} }>be!:!#If,u>&w,n&nH|t !iD= *ͪT;]|cLzKAx ~(Au -2epzWsԩ=02HŲ+ftAf { "' .b=eT${O Nūʼ [ "s./ *J&@H=ZqFzL\GH7#KT z| Y~LSE0.e"g-X p|y?™;Zk jL:Ѩ+۸eKTTJ@+ #סD>!L-  -~X|.Q|u- 2{: [@*T: B:6@z+=t%1`39H\DHJ63$ØƸTZ/j28?ہ(D&  9rP 88h.1 -Da51y@8Q>b5q Gd# @L,Yp - [ -ۖo]M7\y2.wCAuc84X1Q1c=@ԃi&"mJD@J1d!N Lm#ID>lT*1RS @j;lxl#/P@ژS6X0mpt8c|  -2( B-&j6$ FB ]czט<9k{ !ȐX#)v5Ԍ'G.įѰsh0C34h5Dа\4!Q "`!3{|v`h %F<[o&(A/ e/Rb5T0P%P SvڃO^P^0' "SeM xqTUuQJdQ"ţED{sAź\(e2P'.t -}R0nVbW=z䌥fɵl| [ u%2P9ߕAKZ҂ŕȟ[4*ŠyrV2Eb^,bfZ5e+ Y?cb5G8T,X= Ii1;a )X%R4i BoK% - K>/&c -1W(hLİYiDL7HqELRT /VT*"5U &TEڄBn|coTP}RsHO+!tѨQ6NB;TO'x -{NP)})'ye=S (..eJAsPR -s EIBQe)) -pB(:l -G1EɟQZ9FٮQ*lEbQCCT$$)IP؉RD -*e(h)R2OS''.4%ha.ٔٸ4T',u;f'z>%DjSsyϓQ(>LƔ8oPM@ƨ,&4җRj"W&d*7,N˄nUQH&e*11Q* DU[Ej/AU6j:DmUd G kz+*xs7%P#O&p;RB@lX7QB 80$)2㔘Wf' +K`zFX\Va*ce} +yR`WQhi@|R++QX|h2 K% oJB$.X$7#u 4`V;$ra -VŠpA- !!GMGr#{-u"F/G)W9ۈp"A-3rF -db9 " Ex5#SD("*4'櫲*&vW#"B\PE*z"= XTtEn5 2:hY, \h1?h-!miQ.UAE=}^-s |l4e(`xХ.F@Ov.](rv"* )h$;/ƋupW>E6/_X腴Y/Sk/?ȕǗ7eϾy=b~zQ`X $fa|aWt - 9t`$; (`(`" !t%&хEcAl+p,VF@>=7mĠQm03XlRPc1nцNxc 2 3l1 J@gdeE`)&ctldXCQf5SC6GFbfI(`L&IdCP4 KJtD,[?$YoϠev]%gpˌ(Iv^33e-52f .p`&l3"a;23r<%C(&AbHhtU ` n8Esah5Z |4 -bʑf4 -pYA5 EA2:&%t4.=j Syj V5Z"Xjr 6%sP#\h0.5[p4Qۇ,=_S-$篅LFja3*p \HZB6^g_V RMɂug{,6MtUSWymJ〇g=_m -޼vPk~|MZYvʍ*X@Vag& -ov-)ګԛ?_F0S|S0o+4)B jHzJpp4 -zCPQPp\{B=U -f%P0YH(8> 98uN8|s8ZRV!"nM,L@6!ElrʉM ;Mf&PA&0 Q`9XB|VBhr| zBR]%'H r B̡4do>H;G2h,DFp~ꍎn!`[lmp6Y#uVsTG6EhuD#:3,:N' ;@vĄ5;5Ng$ǝY+"Er흲 > Ϻ!&Í@T!0ÉPE=S6@`=nG{%wsĽ}/$h_201ŌL>Bܨ}fd -G|DרI]Ibnl{cO`H`C`ZPŐd -}ndFd?QW|g=؂Fp= eó=H(0,ۃ ˷n)@%跪, l`H+eSP@=ٟ]?LKTA`7MxhF’a!=7i (2z?;*Z(D+%_( !xYBi0uC=Q~Z<=+oÅItH7l8e iTqqh#AͯgTTBy3J0=68zg|v_.fsPZI_#_pj`ۺo*4jP=PQˢid҂i-yh`@v 0)xJoo/Dbfpqn77(Aq`M:K~TTdtT G9:p$D|a J nj3 jG~2@4fg8_b̮ҁkYZ PIPv zFE2]577-ᶈzAC -3T5Hw41 T_/3U5A$8zZpRY\d |+?4T! ҍ ю,\1"- HW, 5ƠTruLTT:_V@ng*LgBowSKcSb̹M5؄x -D '>Q[,( Z`g@ - W t@zS -\31Dy*Ԓ~_}b2 \Ԁ՜BPL6xN nqKy]PINk+掕 "W^u| WS8)2\-Ki5%(~>5] :sr>P/ndjcΈ+i 7F 譳0/v)z@3߳Br7`s@T]aH[#"=.ߴiÒj;1`lRHT:P][ W.OWTPgSeR*ؗUNrVx(QפE>w@'ff@J2zxGP'b&p9L=-+AtX[ffQI%Cx(uI@sN_Vd - ?^! MuEH6K5a0 5zp# e'ڸ' _1kjv B`qNĂ@l8VJ:D 6M_fl80c)?1&=`Gluװ`ʒY~u; kzsaё․RݙikK@82DEWP4g| -ryໍ՗'Cby cBCx4kh`ca7}W -*&K#?u /Z/Q1\Hd'X$iLn]%Q7 GLDv//^U7ț`*VJl'o# &O 6lJ| $-Brsx0xi # 'L P&KCiT'ƣ amf%Q]@GɵBeD -#f8@:&j5d<sS"cRB}h V^2@xjIIuc @\p+ M -P?Zc@%϶Q' ce+W",lZA@M ";(n W\՞Z,3C4߸KUCq -=g*6R6% _p1܂f8"&ӺEc3g@<O&3Z,ʀ$?LYQ: 9**^%Q8V'tj=ػ+!GWĺUH&zP{/K gf$6.WcQcoa%XTE#92m J^/#McUm49w۳ZP0To{5F?SC1uygv#ހҤ: 3IH>iTC+b(rR98ߟ~BP!PG%붍7t+TA(J _-{g!YFbn:cڍ;@ sH&54]Z?iڨrQlPǾ<9P?cdAA~1+56cҮM>Y~)zjNa3JxG`!;Kϛ֘41zES2AmBGo?,62TTk#ڿ(XMrwU ǡ\,Hp*ޯ fLD~ߖ̨6;Ә^,!E1}r 1F1Sk(9sJqs]`훃B'ri"X\GkyW~L JA-AKQoƛlP{?c0jo(ĆWM)( ́Hi>,ݕ^Oy?,~I] 7m]-,@7gG-p%sz`Ҹ㼻I4_;VVS)C׆^x`uŅwY*r㻸5;,9`gwKUii95oCeW|)R-RȈ/t Q-S7Y1$÷IPOP^yQAv8!F|s!p}0kWⲖU> -s"|E==3~C#?~UEF~Ã~]S`A-a -j:Td#͑P߽̲0uw_WCSE$n{,b)R05%4 .:ew/ mP:mh!r6޺bebڗl"匨=!x, =GڳB^a3k8B ַ=q7/[AM짼L7mt;Lbo63い=)|6_C5'4)";/{D~H6묀DbEOV7Cv8hset -O0]`;]g2'' jZW} %TΎ˖yLf]KwbR?gK=d~OIəq^[˄NU_SBlTBֽw}`ӻaWEf%ި0_O $/烡q"lY__,piuY&!?XW[ۆs]f%a[adk"=pA'#G.cŐ< wFÁx/TY yiP"+Ba+y ؜Ȗ5Rz<^J?nޘO6hн4SDN]v71ar` 6#.vK pqh -z!yh_KcWJ,x;H/]^ +bzdw-~Gױ<߂d'Wp:P"?-IsGOw o\CvxXg]fwaOr -/" ^|]M >+oJW9fi4_1qo>Lj7V>G+u +>(o 8-Q ĉKuhZJ<7IT7+>n<xA-ͫ5ڗo w&] kN%Ƕ˔.R17r]@ϊ0y$KR (ʜh_U ߅m'ܴ6}$uLeEE0:%Z}B̀ϊiU4AM &.ΊxBva,UtwE-4-}>6'ٖʝHb9/E2|jАU -{//>M)]ˡW™&^:?j(EPT̍T0h-{71ʿNMK62J*0Ź/VK4"^ϟVCVw^צ}VumڵpҬCpӛ1;j -}-f+͍HqDx. R -\f+kͷ֮.{ek8XTcNJbԴHדIbY09]B -r",Z(s-*|&SfJ$mKSaeO=qF\+,+MoŚ숈Vjx!{2כ&YXű {Z"F&vqO#ֲaޒ]c3.,${*Ђ}Mrl-`,]ݳzRVDR 1#^y_UN cJUJK>a;Aw:"p:OuauD8K3~kK -o2Zׯ)3[0PHR/ksXe5f]e륿iZMgA}0|gͱFVhaœW1^Gz6K|=crCyӛ6S^sz\j,2 5}Ydsѥ†J͐88] F[tÝ(t N^<`G f+N1ܭAU)Uz$ -j(=oRT܌Ј 2U.dGCUѡ:B]I99 sѐ!Lrez3ۢ=7qϩ޷YV'>W t}yO&ā!ssǂt=74'_~6Q̕>" Ae{?\f?o8|ۧk|ٺɄ%s -NN@s.yƧ39%>X!tti(7XmG -nAH0#A7o(g6gB9h KkN PnkUw+^k*Еރ˕!v+pP94:7f>IpˉK iy7׸¶ -L/ 5`jzF`_dmB*˯}B"){*SXj-+ -1cᚡwFkX$@KKgVV~-@Paz*#'ꔛr\_RҋzZ'(/ wF$GzsWɉ&噜x7F|~ G]%Q~%Uj0% G̺֗HБQ wu: &ڭD{=r[ĝEnv3#Y,Dv)*כg㜘uJ<ʍoO(/Ut%8yOK -";ˏkJ_~ǭ:VT$?ѰOx8W#=y6?5^]qkǧϏ' }JcϏTZM (i)QHM,Vy0xlr_5I0K]'{ueu۟F -up@\T۴w}U S yBB X8 -w`5b6HRK"R -rPt9nsCI $mV+) DQڱ$N`eJW/t 쁙:^n&)DZDb1|| c'VG'f6Fj=F]"?zt_ T@{:]1|1[j<K['®L@ox/[:s\OQ*(့6@mY0܌0TH]Sȝ*^4/ض p< a 'i9{콞{xrbF<6)t~"޷~ǚ -m>,ԕ&r\֭Jcg3jPôݧQu4Y*̸@ f> m<֍>?fTnq߆UjA,ZGOб SӭmD۠tx(Yg*  ?7DeƨѩF6d?22w$rᖐΣ->ܻ]2ΚsO}A" lpm'Lt'-JMK՗VV* 0$_lJp,vO$?} 5 ෉0!#֑y5$A~0V Nƥe.l,W-n 탲FzE`߱;b}d7j;ZO3MZk[qrk}I1alFpvdQK/֡׾Nĵ-Hv 5Ưv(sCU{&=m2uHx>N+C:<Z>I *R]R?<(,h^1ء` XY&F(c_R~|.{AԐ_{};MK_[°Tp&!D65SASh -^<;N9|^m/5'&a䮹##6u%ʜ@5S}.vg!و e -Δe -U܍=֮ ՇKHZc"i6z"ܴ&.{܏{$Dky*P@_L(Au ULY@j!kl&v4 2b )A϶(^zάTDԫZB]egWk1Bo_WS3 +Z͠ŀskէ\!-?9TڦUiGݪyւ[T-t)G/T;U[1t ]e SlC3L:ݤłz Bm[v^*Ǟl)1I61P?֮IjM -jO 3ҫAaQ|G)[irzp&4lԿ7'&miej$;cmˬSeNeҋ7ړy~<}C<;=Xl>] K - -}5fM:P^MǏ~۰lZq̜,)X2ӱ\Zʗ nA0BKui/[j%Mq.. -zy(.q)t'IZ4cd= 0FVzjSI@B3hop9 R&E݌tv~9n_;~HC3fDA3"¸pE6l+_t zR kE-Y6|ҭc 1X]Vk)< KowvZK$)p.1-@1_LShE,)Ɩi9b'n$T˙Ftk*,icէ>P8C{gz 7y/ZYLJ F= V`.HSu4T }-+J]whf.$*E"[Եj =*S*0R#mPRڗRĕ.E[SؽNeYf$O;P2Z0U۰ US< -b9NWm;p#6Y>stream -Q޳p@gm>kn=$V0F_ukEk#y44EI1!7$\.C$7[$~ylU$WæRr,`  i^"?D\v0@羏 kM}NJ_>Iх|Eɗwt wsRu(6v_v5~&tye݁P;wWJ'w]WROV<\9M$DտhM*wygn^]v@؝JWD*ӳ#{gШQM9Ny^` 3^/ -9%@KA3Hji׃wN,|XHJ@N_ E+?=4T>#]4=O~r)dG4pupfNrV" _O4R(Z11Hnbx0FUq{K tŸ'H}İD}qLp/ spzZ,7L2Ft8]Dày ! q Y -(qQeɘx zSLHt[@ki&KWmօu$uԋ`.r$EjVƚ\􌻥4"oqD|aH)=  *n GpT36ĩ ~,j;U]9-1$~Cg6US g.j!dfiZ.r coR33ѱE]Yu1f9,Yqq2:SϸPdBqaWJ~jx]N@:+:0E9ƣަ*3ߝ>NG0 -帡 -*+/Wc3xf?oXT\3E GKmp q d#Jq[ %;fm2^(rgf;LwmfmYaj&5[ GER%۝9f ̮38 etјMF*Tas>簗8=~sfCG\(<>gyF4AG\$졞wbv8j_Cag-cGR"vTKFayҳ#j] ~1pySCJ]ags -g_Dk*!20?^bρ˭6 _ -1j؃GM?%zAA$ (hmB@A+){ -,gl+]ҽDm0*9aA5_ n!,hҺdx,hPQь툾ͅ⇰X_ DR?h҂0c Yi+S˾ЩzU~Ѕ0 3NF-A?g.#~Qݺ9CE'4)@+~Ä)TyB 8!t֤sBץaX3.;6JK$`mBlmXXZL[t-xtt5&X5k#q minʀ$4CM>H]a\#`qXU?#qН7A.0CbŘ,E 9ěrXꉅ0䎾nI ɦ!q:#inOF*YEOoPն31j('Rs3(x7avd;5‡T/.ʙjQUغYcշڻ4c&wXO'G'(az g#\FUJ k%LIlߺZ@!jtn}kׁҀ㵡%{=!2@h4! lMėa)?V^{WvŦr-4M؃}QQ?eAʶr0@i_  -fۢKs2ۢ[> Hcģ >Wk N}qڈZCmƈmpQEu\5m{? ivDn64%i6Ʋ:F)? -6Q$n<ɺ-A5d |T6?Œ&\)lJ=Rn2cy=nh pJRn1D]v{>8}WКf͕n.gq^ aZ78~Q춸y6́uU܉;o]oL3o!+Q6g x{v5I}]ermbIO(@[߆`H:fS:6)K@W!hrZAΈ %4=<^ ]+#+A$؇|1\M -݌vyN]|Aw$|[!x88:(n5 $Dqo׌Do죇ӠŤKy;0\ b}y88CAl68^H -{b).|*$?BiZ9ns7|k);}DoLܾt; EG ZFI.ׁn{Ѭ> ?mrUvMb*.0XXZg\}`m.H8쫵[f.4ט_:yjm[9Ge.6?k~jN^m[BRJan otZl\|l7%cѝV_سپx(֩f oZ%2Z,~\< 8lJ\DTۭߚQ{mai-%Al_68sc1mk3[m v8}nnç^nm{=o%)L3KxM/ݞ"Kވw,ߎYc{MdI]d9ep097?}B"2!pEUnnK? -t󉸩a ( 7B+ {yKOPP폷vkþ3wwF#X,twRk> -=ccݿ|DWe~w:Mw7=STg4Run3p%ԣ -wrGw78js[zޅV6%{05oUqJMLy4-js:!t-o%·bLߝ^UMsmQ 3^- -\xxP:qS*ۥз9w=oo|3χe -Ga?Hrr_KM[:<=m>ߴ>ڹNQ(@ ܔTdBNWVA%"  G!eݎhxYn-A]=z? -G:AޏQ&#xpݴ/25h[[z[+lRS2oꭊ}He{{e P[U? }_cӡ+.[|{]KQfEc;Jb$zӳ1-.RqSk>.B!=9Kȫ!bX#Qa"׶ñdsjr|~$rfWU-9̝QѬ\74%h-ǀ6ׄN{h!O88P Ol5|26#_rN/ 3E -/|{q; ^hM{(F.71VfMW]_#o磤N-MՒ@^ݤ>:?8[_N2gXxka!O٣V! h&?pwS gKp_ _҈U -?e #C|';Zp}~ |?Ho3A~IŶɸݿDY#r]hul[S %ZnJ̻cak/#r+.Us?ObƘ×qQX)˶޵,]SK!bSj4;AS*>AYiFwܝam%& ӯh,jx㧀7t|6sBS_ kuH.U`,rks53ExZ9qp$ )wO& -ܢ<)29SIe{q@8^भ93j? -i ݣۑj6ܯ3f6:;j]%URl!, ݗ1y3to0^D#lC봩5(4Y32_6ǜ5onI#ut{'5ȝ#z -tBv˽9e5=lP]BEE)HRѽ4-%]C=5N?{EqP(Cd,ji?k,@P@mzxef1gf#KL\$8gz JHzuE, jN{BId&q՝ a-YOof݄2~b\E8ϣaؼ<(,5qjy&zV63# u}qmuj&"Pœr$ RPb4E -m+[W` -[vRqС_X@Y;BT@7z!gf`8mW燔Y iTaFSW ĠH$y0W(=gmr\qpWRJ7a"6nd 0;yj8N80]FʻPY99ЗKɷg dK&pu`:)t$ ;,yD_Zjh͜;5cG1 h*0k;o%ĭƥnKV=NѩRZ$[)z>aqK"] -c8M)|GyipZ7S6?A!UI]R{R'7C]if&4OVnN \`zޛv@>H΅hpϳU!mj1۹- >Ư$8 Gw+X4Ix.F -@W픗L*/O֘kT>4緖ޫ !ԸM6tZӵ'$Ӟ)ǧ%$ B#U=ZG99,BYyѤրǦԨ:0#z6ih"Lgݖض"6m.]ߒ3jM ^DO9DsSļTp5vsy-FoMq9dTs؝}qYR7) $'YZPE}Es)3ɕ+o™EGڨg,LՃVB}_zMJ_n -660>"3rV-sq:OLTwz˧ EgMkHbk&GRHp~lqPĭ:3X¢/auLI+7(U[4 ӷ@IZf[4&Uj5`{^_QqWcWYFSo 1Tބuxl7w@'y+RF:N ?{Znc\-3i EDž2YvM/+]5L?0&$_ -NTjG5qCՓ@E`*l7t -bL8 *ZT5THhV "pvNpG*9vsJ#US##Nd6x? aƍcxŰXD1W?+@Hm~PK8fO>%6,X8:0+ 6*R۸Cs .}~X1;XdOHV,yID|W)~qYQ4>W$FbikCzSp'b&a>x&/"qQ:ߢH/Yα) C@-(@v ĩfƜޕ~MiZNj0A7ű;8*E HG~8e#?b9^pO?s~q\zKRdG p̲[ -k"$#|_c=SJ~sС-e4=Koֻ^b=|P:k)Wz:?Y'~DT!H By~B "V8d_d9],,0zh5u1|j78w4w{ղ S0A8tv%3w0rm7' "q+RzCSu!0~f/@pTL&TPG`{8xk{ưm7,w`y@$M1co'uRh❅Cf`"9=z7߯ 7_;ø(>yxϢ^vcdS]4̟l#g꘾f*%Kbf5ZYOx\Io@@QM~CM^dm%#nb6pZx#csßX=? >0|>|߈~"Q9亏#wマcYwp7r.u[aҺ6d Dc!J=bFV?WQﴚ{"z(VF35SCDZs.mfv?LdFY/?33=/(LHtbӉvLR@I' Y - Rzx q*50m-ͺ -F)y]C L ~ G@!R.vx׆gY~$"uS*"^ M/u{bC/wgݘ@9籮FPbj84id2{l7TJƝP_ swFp``I3@H > 8F?y@pV=Rg8Ż#DD qqރs+}#oO#^NDI3Ky`ޣp ǿR0č4s>s Z7Ϭ2.`\}3PQIN/')a7_;Ssy_F!CzY79F41O{i>]]û/qe6ͷۈ˜BwA{xϣ-D)8G? kpLߚXR/$k#m3kpw`ܽ u>ZI>}2φP.pd4 \ߙGVН5p~:ڵٕryKx< ?|?TxR)&m~Hq n]9cݸ# !tR᭓Wπ=N@2:O<eߝtZhg )<h{V%B[JE BQit|'(x'1rE>wHP"o?BiNHPǹ9||b4*K?I5~Ρ˅ q1sY4~r>&ͮ;㼼s7pZ''5< Cq3JR. [&pƾ\,.BW)XIeAwa9'`S: ?A9CP -D,C:vx`nܕ/rd !L;wƢ\hk -;E{#4q5qzw :xw Zbw64rFkL(3u_[3n 92}mKY%l6a0?b/zex/zbظb0yj?YgϦ/viݗά~+io6a("A 䭠!ajżO48c;ۆ7voq9Ca9ka0}C&\W8@~fLg1~j3 \}in@|g$}I@w߄|C:g6f͎s]ȸ/xi]ûzry~"K_rl&T7Oe5&lg#H?0298=K4j0q I@mswAGq=g@OkL[că(m@we< ܣď8 sǾ_#8w:x;z xCw(6;OqKd>~gB~9; 9;*m|?;w ~pF#mqG2<7d:[pƺy6otm_یhgL57ws[l1."M:H}~ϯSgQBʹ:x> zG(:x7Dg}V"1ܝ.sd]92orbm}-kCgQ yK4aֺ.te\[mquF$ R@JF[cfPE u~ISC}`Q*p]m9tgQ>Θ,}>|R(}pn6rwΡ:wFqvHM!LJᜩt`MGw&_FY2{kޥ!I` [(}FQ/}6rWFCH^ -obGAww(w[혼#P:Dppd ^HZ=6k)^h/ :w\w}!JߤxM^?_89/]}û/W.pd5ΘE=zȒqc F3o3Na͓{~1yl=#8;{'1 aUDqw69>z( Oq*Ҩ8u7#G" N -ĢW"%Lۈ2oN݀ŤD %bJǟHsD K? .}&OLicuM!1A~)g-{>NID8/}~]n ƛN qdR0Ywz4 AC uȾOE7&<]As/$A?Ȳ7$ď68$aw*}p=NѦ`._j+mo&j6o$~G_|)4LT:EfC*>TÏd7s5L 6<|' 7u5Kg2ym7 |muug[N5wv/tft ᛟt[m@~^Foy ?9٥ _qy<`]Hg8v^/AĻ} dߝcXc?8[3Ha`Et &UDOd7&lg#}T -Hۉ#}~%O CtXXU2*o#=߀)@qUe9u9CM¿Z;'DR0r,pI?Èq-os!ޟًa?9ߓȗ'qTπD#d#mq$pdz+eFC)kI$𙾷{&YHah4q!@iO "? 8}7&8:?kp=(G5q.rbW6ׄD†wz󾎢Skoqߐ웱Xw ;CyX+]٥۵!:y6׭TiXyȕu_h7n^=3e9˖wky[]|{8tZ}3a®-.0rl?}߆Pĕ.t^&<{ͷ4p_G&eG #/n#k웱]cXwMz"KT:M@wJEMovpuRޣN+?:Kʃo:5č.+9wBUM>S=~F}<ܧq/y >ϡFBjF8Ϣ޿Cd?N? '}D<_3Hg L\_b1ypþCa96zG1$;?}xR779ufpyJ(s+$5_O'aj72ڥ;ԥ0xf ڜ#?~yPc`ؗ8v^"?NWSe${L^D;|f/電cn0j1d\G9 7Ex Mw?~Ѧ`8Fh87$>Ų4:ޢIBCmoxLZR/{d\]>7&pn)z s1,ݽ!Gl/8k5qh33FQJ|S-ē89iosN!n2{n M:^G@/_~c{/X{o1h&pu. ="z+ʌպ/yh\ga: O-[#]`Զض\a }lB0``X;/X  o zKuc׺2ktWշ0t率e-C X=lkIr5 ^oPjVK.,Ye쥩%*R6cME-M-M-0{`A mOB Rv)T ΝZցTV j -+* k*+3[JXSZ*)mՕ6JN’jaeTUVZTWvJʢVYiVVXVVVYTWXVVrZRVVZ-UJk+*kRaYUYiXRSXRUr*lTVU*JJKK J -JKKuE5E%7+^QUiWR)*UTUUVJ*j* -KJ+XUYYTZ-*-֔VJj*J*KJK[UfW,J[Ee’jeYRWUڪ*-ՕUU*kJʊ*+e¢jVRTUXSSUګ*m** K+ERiR**--**-֔U֕TjJJ%EEeJeVWTZ)**)*UVV+;E0e%j]iQYIiieZ٩ -J;UeE5%feaeZ*l -+biک)*mVjRTZVT6j*+UV[%jZ+,-+*JKb]eZUV6;ufڪ)-+-TV kJ[%Vi٬6K+ ++;ªfYSR)TVºҲfZXZTZ++UVJ+Ke%ef+,VV*J+K+K+ʺ’²@NaiIiYUTUW,-+*)6*EfY]eQMMYeTYY*+,UVVfYIe٬lU*K*ͺjVRT,,*++EbiX)** -*K -KK*{eue5Uuu¢ʒšRaiTY,V+fXZ-,-Uv -KK+ղ`UZMYiXXRZZ*)),V6RSwRx:堬 -(6L%СkiǣWP/ӿACX9IW̞c%|KH٤T"(b E3;:/ uy#SRH!DVMB ;\Pڨ$䑣0ǍMrP9h=D04QĮ Ց.ԟfP/ N}:Q7G9Z&LR% 9JxG!SrRN%?RA`b!-mq2WxZr'b~% $0Y6W.]ch,._╗xe*_d( !e-H'X$'k8(UO cYWQP°?0`W -yg!8BjDi -[ '5[1V2E@a/RYщ^4LU6IHd~yq)C%a+ A!$*2l uI[Ǖ\TuI&g'h+`&)iH[RYJ*e!č*+T6XXH@]01/u01#$&m hhH ; |O \ -뺊[r:[ڵS[pb#I٘W8ٕboY |PrkXB3 ffb}bHɿ#5&S2c/ ?#:.$ܴ\B -[' )mLQ[Q%, Jk"G"9I'p'/f -FYb_ -RF㊗  -z+9IpIZ%߃kLuV  ʊ - 8Ao-v82_X˗ql4Ib+$5Ւ5EBPi#"Dү 7(S:g堑a B -# b69ThZzf 'i#1HRvd9t\Oq\ %vf)i<1*v%4 C9r7 -P5#(hWP:Q;rQpp^?k- .<.ɋ K65 -R3M$}A1{8f2IQIXd<$U0I"$Wy,Ir>!>1Ugٚȓ -YOƭF9Amȹnvͨ yak29&2  wWѼ{$l^L>|%jcnU:$*},vxXl !V"JV2;0yUbJ#c<$p 'F*q,BʙD[r 0EUiXl%3[DIӌQ%-|Dݦ@ v6=EW,dAa;cr$ -^dR̳1a(+5r+#r` J<2 O-) _?,ILQ_B!aي%}0( -*h8)md!,1E-NcaG M -8/ /c#e{=hxɒcJX?*f;/@BbPM2g@AC;gصd]bӶ -0nO-:k΀Z #f5IpR֖冭5`TLp׀)ky\]WP.,'R*LR/mP @.J[U&pJ2;u",} N3F4SD^o;&=2+3j"0|)ÊZ(mȁxfCWo/$D}GIao9,@bFs1i%זȸo)/f7dm6ڐ^$$r (u?bx [KR25I7!YO堜ê|SdwOԐ*M9 _L vK Hw->27 Q\ՊWT"K!{g+r%`ĖD#ׁ1%+n;!7p;6r 17$1(45(2;%5:#9~khcH9_|m!y,)Sǥ,'j6*3euJbPeqeaIaA1R7:P/{L)<- -:3M@3K_.WEbV؉Vp3&9/J # @MXRttvPq-zӛJi}a) -j $Տ9YUDWFG3V?8oCJKT~ -rU6[XXZ62^ -3,`Egy("[ ? [vp T@@fzAYo8V @z\d[W~B&ɂWBv-Abڨ ߵb>1A*0h -ۖƱPZARV\'(I$.͚fJNud‹#F[0&ًɪ}'1qq'* np!jݥB6{R-C_$WlmIap )@V# v]65&6n4'ʊ[&k{ @+$Ff$/sEo3@9\NJk PPk/djBDuz\W?U5ij"IUBmERxQ AOvU J۪FM@Ej{v(1LPH+Ǥ{f@F ]8`%DwD/QqHRx /ϢmTfܹ0{Jʋ{f!/,#fR@tV:OxR:k'\Ii ENm.KÜ QR.&CԚRZ#!iG@":Sb:oI1!bpbj Qx(K+"_Md͕Rǰ alG9aMJ['n -QNҴI v?sKPwv%"t*QRd=xeD2/ch#ec8&6t Q[ÑМkg-rE#RLΈ o8~EתE@xOt8+7n;*Aj؉Oxhe ܳ)`69W@-.WلXHkaB'UzÔ/vԫcj|dFhZ7)S X(N8iOP"ZKP)5jDH 1A6Uԫq -KD'UD\h/w Nq{&' L[iT}*\CN+шኼ() nlS;&鬏Iڎr.SLJuﺎɊ}fLNl/p9(8n':>ٔ6VgL<r'%l߾X;8!3""3"t$sW+Is]\S -t'GfeN@Bg]H$Xijlt`GT"7P{Ô՚I*=tn"Icn\I\PN |\VJm/*՛+J) P:G']#K0iC JgaLڟޟH܈'VRHjFaZP2zOF$z#$;&PH`aʩCYa)RD\XR ^5h2f`@. Y7oqĻknw_mvی<.NtZE D$CxOc7P#}wnh4c*0eY#a仍:' -GO)x@?|w[k'@\#u!D,K䬌GsIGpK[ lc-,Q/,944k%R?hndV0*lJDm qiO2:OH"J_ȤTLTD<'R( %>BϺGq!{  {kdծPV:'(UI1~'}&S*$=}<}&?j`!y>c=ܨsF,*m@`GhPQkRUX3B$4}A1Orm\rBA@m#/یe#b\Gعqe#Q™&l4:g6'dP -iBv%d_ ʆu*4j-(mD1}' =+SID D6ùQ&6'r 9tw*b6F|%cN@#<,2B>S[ŰplN Kg@(X>#ЯGzjgج{MxzBO?$> -JTx/MʃJQy?*@\'lW&$GD*U -;v'"jk@جn= P8a;zrbMU-$BRy73à JS*'1:zw% dw3)AśO?ǻ1ynθk38Й-gnXú~%uV @})8c<[(ϖY3xYoQM"Œ._0"< -Y - Jb1YgPB)R( h^-VwV:4gS}4Jx+hhkF$SL|[\EH-!wL;b7J4*{r ?4gȴ+2?ŧE9ƟTqTGǿ[ DE粯މģLJ6ԇځVԙNJz_؜&95_9,+gφ[nXK=R1sIZ^ r3"%r&"? Fyi2~m5L_Z7(QYSyChݼRǹO#NNh/hgaL L42xY?@nP|O! Q(gZT6*kCD DDk -?Fk )-[ @H%£\*$DG8%5#Ěf6uehoRE)(A3\YØ.)^P -^J% -R8 R4U2,G?>4]GVm -DJimBQOh|3$+{`OF Gb_t3pv4bըZ14k⇳ouw)9J8$wf|޺yg>DZ+us<\_hb.ObNłKđ<󙼷\ a<6r -I;Cz;y6K?$0~e:?hyڧ;"T* qqcfwb~@DfB%;e3Xa\nFgH=|͡|Jx_ zo]Gu5|&>S)($P2~oxA~.{4o;yF缅z_p2j#a aBPP`TZ:4uþ}ŭ[1zlθ,3=zwy`)6F q&OU1O0b7(@F:X^rnQ`Y[5:OWRYB|A Yrfs_hǾF;hsns"T^.:9vL[R 5ov˙b_`=L, F1}h&V="t1k=gC<\5t6NX^@_JBwvee etκ=z?g S :(\I4sf}J?/]2WFܕ7txθ.',cQE\'Y -@_%mIap1zoaȨM49}B}PfCHe -M" Iڈ3|O2k㒖j!i7paI#mM`ݽCZK NT(v"KeTϓj^nٽ8bVo;>ֿ"`VRXlkgk"K;`Z'X1JB:X<|\"/SXlѹ|P]Œ$DnZmmuo\Io- M^G?B( /Li"mDow37nF@bZsY)l@I:I5\T9{ŭ;yt #yGτfl(`5 X8:fEZ^G5JD=$}ժ93&P# (] UNGBG>g)栭xWאKP4HptrJu AѮu -ۨ| }+ :EyGP̕FxI4L5v;U~à4=Ɋ0nWm9t -*w,pqp+Jo{0RHu `d=%^"Ex\DJu+u^+JC.th[8bZ IzǾzAG;Snϣ}y8E!QIFbIX}M'_n?oH 5|t>/ƮmmuuNcܻ@KB@EˍS_b߸1nnaGB ΂$Ġq34x +bH -JWVi$pbW&bvs1+_qAc(-JI :R@2crKኇ,"\ -XVݟK@쳏BõGJ&mUuR:?Y;icK/8:w&i;@IkyXW/zq4m#gO@:Qo~JH}0zjż:}l@\$\ t@1. -@+*f r:$>4RiaݠFEu*/!5I<.gl.cDn9. ٻd$EEDN7v>G|9o!i8hۈl|n)ayqXXI= N>2:؄ImO^%M G^-s3lwO_aJ#ŀBCgrF@0Ĝ]LH -z b͠GJ/,4U'kA8кNo`DcdJ4*"maJn>DNװԖ0KW/ug6涔c-d7Qfފaܣ ` FuaѶX;#7CNh֮n`R|90 U~V!&>T qkB=: 9zuc^qLjx;&:B r-(aE@LW/bcp@Y4q&$<kQ6 Q** VVk~%q{#'/boҁnr}r.d)x|sv*BrZZ --j^g b9F_IAk)p* #B5 {@_t2VFL `Z,aScaBHY;@b{4*> gg$S- XW!a){H䛳<. 0& M®XM &7R?,̝B͚H r\мaƵW2`~!BnŀB@!C5xu Xۺ`=&L)DjBɡ,b2.2,lc_ -.XQUBrvФta"yFv|Nʸv#4񬻮gGP乒NjZ\uF -ӖN=\#x! gq@bW>8Dᚨ\/v4B:[0*]tPLhlD:h4/yg[:BGV7;;/`a] BWR3lr;sCqXrUvyyeyw|}tq(gɀVA/->|i؅r 1 b)a hPnn1`0aP?HB ifP@:Ds4ݪ&[ -|MF0(!gRĮ) tNReHX2Wdwlw[e}XR /p9 E bm x4-j>(?<%6$Z ,N Ye2 s eL}K"W2;Փk4ZB^G"TI܂])4"u(45jUWӏDc rj圏T68\kbrmΡk%@,hi>Hпgs" Ā:fe4IX3/O1'*\U$kdP!LPȭ3neOXPi0Ri9pNX`|GjiQ&eέ ƍ!DO2\1FV$7L)uri>pr +% 5Qs%Pb]8DVc7w3hv##^ԠSoLBXǸ'²0)6| ̟DEƅXQXB̥L-6/mY.lZ=>'l`H+G ۫Vr@ n R;W_Ov[BZSŠ1H\PD=DV}YӘGgmhro(.#3U ιcUЋ@FMQ^Ąշ_`Q*>4Ө& [6߽l;ֹ4 0j_ CY/KXph+VlXP6qA&D^Š[PuN#XM`yȽ9_:ot~ ֲ?8U2S)#$jxu~WD6\+%j WVgݥR;o`XjM] -8XR|>E`Ƭ@ϊʽbʚe ,fHp|R,. e$alMɤ],jtbE8@I>2+r˧L$5h!yr#l0;fl;yAk( -'bTPH3(Wp@%e@j/ c1LQ%MՏTuxʉ1: xX7%_, -Ѕ -$@Õe/򕯻2c޲^B. jaz>% `YŻ@ ,ٓTՙK] XVZ{q:n&1n9RgaϺ9u 0K83H .Qr*:1ᅽх a2oV+bG.K(ŴWn+ SR j -i XTK1 e`wGX\9X`KDC\6|uIՕ &W^@ P|@BYuԡt~N. ǨQ1y\R 2Pɰ^X{94ggTY=6k>saYU[X820 -e$pCQ4]Y֬CUYE <0 -s,H0%GKK#mep*O*rPvR++,/ -BQ9N`fam΍zXBI}t A J*.lI< ҆K;10NDKq \ -z;,e`iܮȵ 4r^G65p K9N++//-#!2\ #B.0Ds/KYl[.exvTj=胴V'X].UrZ#dәf~zO6]2%Ԃ&d$`kP!c2([tr#~ )h/<($隕l벏0r+/RD@U]^X~ -(E܁d@Y -. ! B@-yY-{- -s1@i-Tnu-`ۥNԙfz^zˏ#Na%޼ +5NhNfj5j3AF` p,r EYQV ԡY֦f$ P,0BB|*N!&z8@3|ol(c8C?bm^%soqHLa|lKR )%1wfO`|ETψ. jק".bDF5lȤ8Mm#x׸sw%2U0%N}CXB>:C/ǂ$"`c)`"DSp= -a`"$f)7+D2ⵎC}*O QEP:%" T&Gr +MCCuP4H&u +ܜd%cItxp5.[@=t!*f)aeOEaRwuKRpq`.q&RNſݔх'ZY%X dA#_E ^|" BRj"Am2k^W8W۟k3\@S5.b64mrț8~͌,},c8FꢵhT!r.z,ETZBەd&KV2 E!D>vY1[z#\p/Zn#q'PbDUv"eq:P5%&!bNjh?أJOLi%2]TUTCU(Jt#t[jngULŬ2V:&!q>ahDZ*{^UG A14m~ryv= u!ST ]өn8kM?b%$B? +~2OH`IdTgm|XccLXƘ'(艭k«3S6I7W~EīylH=Ha1G*1! B PUbS@\\W̦Ͷ dur ΢>ڤ[SMʵ26i\?q1U;WdU-gJ^я%Zyc ex2kƤd΄Nz zfŊTfb_8Cg-NMXtux yѬ(Q_n6zII/-"]"S|)7]$ +!3e[[ :x+c~Umu0 ۑqb`UfFRl)@IRCђ®pTVTM$ 94-I ;yF\J!4F=şU +&avgM}BA&բ}CD5Gfs>#͉~Өf3 +jl5SMxV3nsI,#)cih#ޖ5ςdʘ>m\_xoUBR厵XLHBBZ8pkb_N o b&oW4kCWF+$"IsWTqJSb;틝Нe6QiDi(TZ{lvՁ VP_2*_1 DƋ3H7S3rpwgyRUWLY'IjCBk d^DZ'b7ʝ oDLfilCH/ّնoQ}I)*EExSq)Ѩh\;"-*ӴKf\]+]Þ"˵*m]iiMFb2i$HH! KR O[юr ƖS~Aah + ye4$,"Y9E(Y()%+#KJ<kYk3b"#IB"hQIK25J`Fz$pB!)ٓCaIt-$g+823aتy}4rh'+Mc>3G$N,/ ݱ Aɦ/Y ̈́%q>,sf 1:YErP^eWg#TĈ16yh+^Z[K+|+".FhE)d6ƣ:C-brnw"/trJ΍xe/2/ +K'ɦ$ 9Ņ诉׾f OQlZ58"SX#VI.7Kf J2L2GNCrt̂FHN4Կ5Hm" +t;s$\d /ll5iU)Y!5}єT0 5 MϏzxn/UkPrΠ}bxE,Bmx!Ida09 c +0Qno)6#@ۦ͖Ԡ oS؞3-;00pt s5iPe CD̄<0ZV3$Z@2ZsZ*E_6^S +.ٱتHW e bYV0y(Y}WI2ҴꄪSPBxJ&AB2R +LR@KV KeAsƁ² Q"^MSb뵮p[u {69z, e)eRk‚Xxˀ\o\" z+ H)|Zr_ E~'#AP#]&ewuGFC&t2Zl^4Pj㏥bcB{ˠ |f,١4HHHH;Ad" +xPG(EH2 v,E# F㓘e*c:5# c)8@ F%T,.!߿2WmБVЭ[:mͫv4=_ 2H4,Py,0= j{ L /Yᇈz +be@( ŻghhNABx(>;BRaĂOjL=ԄBmP0Ì)͌e;!F3#&gV1WJ E1Eш<Iqb}" 0GX) R /V u]8CDKu5PߔTb7Pi>*.r8>C1ĵXD"{eeS*T 2NAyT$i V^hY8" (ʢ&]LkTҚuniFQLQ׹ZM.Ɨjǚu2~4sE3Ѣ&is*dK!]##ŦFyKĊM(nNq/ӋNg?Ubu2sz%̕!30Fb`f?.>&U}>UY}0_Q%'۲EB `@ +Cbx|4|B aqPPZ x"J>5f(^).QIF*B!mݨ14T>KXS$$ME9ER.'"9Beآoc܊ށ |~H}9l!No NZTZUhC5s2$]ECwf&ia0@Jh3C9?HwΊu rɟcįx&ۗ E3dߊ8oMzALڧګdxbo9ėU,1Y'}jh݅sVb =S'Mfjl0>E&MzзBtNEfvH_WmH $nI=l 4pءܠ^4бH̑Rїt׻6F\d/ۚqSjd +XԀF P`n퉀Oδܲ9o')UM<4 /ov,ooqWxC5-0ssZ :Xjx#3NNצaP! j4/S(SO ;Sdk23x͢6ƈDw+=2obi1\g-]C)Z $/jg1h9H_ q;paY^fnqM`Xs<pu< Ns#-:mA[Nk0!z +jXlFޔ){߰@y'6máSOcF&J[@8:M\Jc.RL4߲`gߚ85ɂ 9p=B(U<;aZY7FcHY}Oٔ;R4PA|3In +NHwGYjrrcѲA\qȂ=GFs|'1=t62@`'NH,+r"ǝ}~ w|JFЊћb2 m_hEOi"C xkA}S=r﯍ O7>bS{1 +_|.Ǝ 爁N&o +╠|P5L.S0X8=>@ }Y/#(1g+F<[5AW03pЦZ]wҧ mX!X3;#(EʥBPSlf,8 C?H_4Z\HAØ|f,\0r8} ²{3WcO4l*iСt *Di;eq!p 4iNJx`!Tᰧ(UlXK{ ;F8&Sf1 }@J)Jp}-|¸` +<}7Dl#, ARcyjkN0*EZo&^fJcWdzf2n9?׸4s$Ư'.HB,+3i!PLxA^(EAP"g8\x.S,kY.E/Tlh' sכ"etrgJ&A%36dq#AlbCJK,Ġ w^S +&R@cB2}M@ aG'PWݰPUX}LRtk掹^4=8hT;xf1 '][SS7kzQ@V. Sɾ m s7!ZFUhy#Ae_i{$vԹ"r=K6+V]R"'t$T 0qn-0ZM&oA1q5t1~|ϥ4{kZ=g<=<޺o +.Qi^njfOa 1"kۨuư \m*Ыg!mRF0+i(Ye4 RP}#W1_BE^# R[jQt9cQ'O}uB$N#q[ÇGsӕq"ĠFWbWSXH/~0<=i|յкL&A\ M!0?Jv.&t?tǒ&c`>~ aTyTH}ɾ\biHAHxg +8η41S6 ."Ky"aI.Rysdc':4/ʀdI +)CL-nkXr6%m%AfB+RNi2%2QhBZ"4Gǃ-~0Tw넎\6f9@"͋ b&BMDN}n9n1 IŬ 9+<՞.J +Q̮fdjׇ}ߝFw!QrCYɿ)M{TЮNi1nU8szNiȢCYuaS(ŀ[jť|p&߰hCS0- +ٝb%RAX`-, МhGi]ę++@M`ToE *JKhY^P24xhNA)EDa$ZZ(GôjƇjDt\e:^&^ZyI;H1(Wn /f 6Ὅ2 +^,8NMu8+alY@~F@n=,^lK-Ǟm MJfOyZfN}Sa˼@e|Mܩ]"Q\bdA7caq](U3 >Qx8ƀlSeؑWqoTY'410܅ሠMF{MJt&2R2iXȲֆ\W{!b `:ɱuK'89 +RkPzH*{:~(ӘdB|hj'Y _`B4uYLݜVFTf(=tߚ +`h[oQ1v +Pӱ$xsX\H#O i&f+ =!K)djzSO^:Ნ_mJ+ݭ%" ̐XFՈPrgTl E49!r7z)62HyGOl%id` %2hG͡/'![% ~ݪmgg6n{D@P]/^8묰wX hdMǐkiq +u4\Dzdk bhZ8W!&ZUݽk], ORVxB/,t3!2tNV4GP$3:8Z6dUDUQ[6 9KO՘ZfxӾ1:%EIHBkXruLOpkqyH"^_q|}FWB'9R&,W2pz|NKO2w@I1WuX.4z@3VD9@>&QI'Z Y:'Ll",$E4 tRưR5/p&&xgyCdYԴ毎U섑;Y+#&uQf(Stؔ;ֳ(z$,yn3;vkLdV M\xAMsY/R, <nם>2^Ka:H%" o-1Yt03vd-̎vdY SeY{N](}MǕ8r{iʠ[jMlH)0ɣH`ˉtP._I) ~;$[a>g@Wq8x52`*ՠ}0ntN NSo.D]PC*vP}KZm_w&_"{DtHFJ$~ENI*"Q6AM-'AmEYOu{g\ l PFO7/(a5oOo\e4;)A'7R%Wk\UXv~IoS+XAè.Ino\2΢D'TUcBzsu #cynܭQ8͌#9!în'6z;*)죗&99 Cy9VdJ +8׬2,CAxB <_o: +knIy0*XYD-a,=m:_ ae&@PhuU3EIzv|JF??t- |=?԰jZLc uBE3Η͒˃]jB {8sZMYf(;kMYt1v0I]X$stuC֏g` +L~Apo&MRx3c8m&_|:Qh9a 5M'E۽횮N0+ڳncpBt)i.S"-G>e_…K5j*ҿpQ\&TBlAr΄d#qN?͂K'4r_M?⛳UH+4A}gWtCz(4 3zxSb̄40IꁟezL8R{<烢}X>XN0:! `GX(L} $8z B2΋1L 11 |`YL [c%!I 88iRc"D,&: +tZ H+ݤ%¤/0lJj _ĦGdn؈IqHhLL]I!/$48 :-.^ IK.Dp]2d&v.!xvq(tJDE!gI~eILX%vMkBMWZR;g$o <Jj'tG%u<)1'9 >KO#%F/!m +vrQPq'/|PBŀz"O{0RaٓbK &`v@0Ed%VScIk'*@I"QP$Q'f "GBUhtM*VHkAUY!7O"A|+/TuW2x +FB!1# b!8X=HBu`W ,g8j,8Fy#]I F-`|_-#na-GJITˎ|y-PθCGʅss=Ę.$YuNx]5HgBl,/{!2wA'"?H"411 W=ĨӘC~"Sj p] mo4f 6аx hg` *6s1P"C҆0tmLBB6G"$tnv|n7fRH(77!"HగA#2$BB4PHν,Hq#pHAg9eV̡\" >DA bѡ18ApB "PuȎ*9bCqx^_;xw@|C<9Y 8 bD * ]6y,?/d +8z?Lig05B{t?zX' ~8ޡ`~8?ʇ!G}}%KC{tW!$ч +ctg㾼8Qx6 +jnyoliȁG>W@TrQ<{` Yup [7Oo1(dI 'XGvu.#.,TXb idv A]9L]6\ErH 2DT*G+QÈp 1DJDO +σy +yl)uRMA< 1S<\ %4 21na%c C j$d z<AtࡗOd‚];62EsGq D +42ȴ^<ڱ"cx)E)he 6uR{:4dPhSX:'DhҖU HVWH$+qC$,F?hYs{XxD ysZQXF`Cwc;8a@!Q/ -`G%A(8&8fH`ʇ#B#.cp1IptY@'p0 n~a1a7Ba OAX+optlG*x:@nn L7<7F*7y7zp#ݿYtd6RpAAr"w64## ~(̀w %9>~ =2@$H[OYmgla.ۈP<dA:Ss* Ơ goE?A3Y`(dZ9Lטn55c$L2kċ ] " jHW«^jA|C CӀ&4=PM#DQiHi4,Kd'dҸP!#/` 5ɢa C2"s!yU !4 nH?7(3wȊ=Cg"T G!bGg=73Ta5hl3$_" f"f9Ic2,3]U`F,"pE i,C:12#*AQ3eE2M'#2dX^# ?nȐZ{U9B8d8OGF ?FB.,u[C7@r10u/ +Z<2WߊCsŐHt)ɑh)1Bq^RI@.aIa_7pބ! J" DD)Y`1ГqR0Z{QRH%K<`h%F +[o!(!_ă (_D&j>$}JD)ʧMl/k' >o^0>L% 2ݩ$=Tꢔ*Q]H$/ͣ.0H .悈r!lrq!柸.J %TݢeXzwŵ\ K S{k٢@J\ CsX[&vZ\ G+FA = d +sW"fYMhY$JtQdAPX Dp,Yr}hIL,}8,"C넅`!'Kd ~x[BW'!@.!%M_b0Y&BV]c"VxB#3Ї2ѿA+§ĥ;XQ V &y Vag6P*Z& +tɦ6(+JyEh^`"1/)XE,`Y]X9 ja` #ce +ʉ,B$pe` oBPY)$!B &J",SqDMòۄai6B,fXV*iHJƜCl(mغSФX:^ŝ0Pޯ ab2,<@Spr3 " b)%E/R,ȳm"@`@Dc@YF' n XZEச2?Y|[hјG4giA/U AԢ9}ZFׂ|  +`y$1܃q -zzjՃ $Ӄ }A*{hø(1ԁ\Dp(! ƃs1yx X҅~K]D[ށ"@vA<]EPxIvh$;.^R9hl^ w^4lbU:t_GЗ>r*/8K_4 0cfR`X~}ȡ FqP`2&~)&q aXLaSaR ])׋fnU0Af#q ,1 >1J3P1# (!.u1F\b! 0c #{ؠ̯AVV,ܛbl |}@fk +AVp"#>5TXP&$k"4li9 ekp\)F4RY3! R[ erO23A_j4#eY3Vڌ 6$cWdpog@<# =#1D0M,] qC(L966&ΰhP`FM? (2Kg`4aM_C#{ X2{!GzA2/8ƒztdL@j+"5 +UDkQפh yB\_| gRS!Ve3yp&w`٨ buzU^8fWp0o#+4Mp`qV`{uVr#Cdq{޼ +&U&)Y s7ƥ›ݨ,$P)f&}7v#l`%pcప(x$ gPO<9 O0fq4bw]t9?SV ðH pLlp#Ff6E9+ &?M3?  (GKYt xڵ N,!<+!g9>rF IB= !h.G’i$AŠ u9!a#jaޜs;Gth4BFЕHݍAt[,6-FꌇAku$Ju#[g:%:'m_G;v旀Hn4;Ea3Z`mgt; VDew|`wJvC66U}pQ5b`N%쿭Ǩ})EPkm#>ĵ>d[$2!ĭFQ!z:ߢ\hX` r_g{8Tnˆo{-Qh+ܶoPӮYP&d='4{ktMHJ3bs探dܦPP=8ua>z?;<HփP`'48ܽ=k"P}xwT` Fϲ?R$Fhֻ@YoIzQPSl|Q))#E Vl\ä_WE̓y7JYRB#ģ? \*bwq_%#Jri;P$|Yv҆'Wd |9S|!9` +f@L|q^ۛS)|A>3Cw|2_&l3#n0!\p jRAMm^^$ B~P4cwxqkXm6G|iV5Y }[W}i=kZ"ԨyT_4hnO"gf hVf[sb&QK[ +slO$I)g L}@Y}[E$it2Y^è:kPi0jGJ+1;gH cvZ-+.^$F u`; wad$S*_ӏ|bH.nΡT\@ysANdz;\ [@r=J-DmO IҋӂrE, "C/(IH ~y3*m\̀\z ͢[(rXc J-WFʯ9hDk"Wm:CsY8#)M8qgOTai +NA# }S@YłBl\|F A7yTb$* CiPA+.0(PWĢL=O`N)`?*^chA5 MPd7 Mٛ6bR"' mWəp%?1wL_~ *]W[ fW!^'W䎡.VB<|&KfRTI$ɩ*B$͌ݛG@p*a\L ?ҋ(~-uT@*2ЁD0ss;i/7CzGqҖ(@ƌiHe@yBž ?:(p.SlPZ@ 9Q{ +%9*MEXFI6 >"7*)1z%0; rlvN^8ā;PMށF>24p#kԺ +UP1INC<AROjVݏ"< +n `]9Ɲ]ܻ6SS D*tԋ5t;p# t#f»n3XeF,B3(R+,[ݢ%0[4|1E>I27"tp $s/:)@;߳BrPY@T]a"ҴiFj;`oIT:Ĭ][ؽWnWR_yPgS%^*˚UPNVNx*QӤ>w JWf$f@0+GL'`\&p5L=-+>t%[fQJ%AxH/PmI@SNĉVf ?^A =uUH6K5`0 5u#`e'ڸ']!k;z (CN +@|8VuD &M|?_Fm{80#)1&=`MlqװRY~G t3ёRi{q@Ȭ(P4) /A/bnLiBÊAQ0g!>y]*h0YX>^@(~ٷp1,;c, U_ +p' +8`M;"@i}޼ DeL(n+JJ[CyQ&l(2H r{_?aLd;їnhi33OGc?&GAj%Q +qNY)DB[ةIxSls&‹ }ɣYya^i d4@wr@Q`_$wsEq0+R\>`2=pFS,0kV<pC]IN\RE PߍI _%t-t1X@Q<ldd{fuf+ 3yޝwxho,mH2vc \OSն˜KVz[\*tҨiBGȒ +>*1w C0.|:w9{7!ʬE}~̇7]8]/ro m)|NzKrLWl=bA6sp509eYm"Ӝ?or7(թn>H nu +@n>%K'BoFfg )5/SW6 3X` ZDI|7ބPF !Q󿬢AlH渂h]j>IϢ$W]hWi>6hMvWRx4a1j&tS$oo +G/%IvԆˏL^3ƵE3Yj?*vw}ME>UC V+(/_*Wǵ7dܑd;[MO/gNͩ+~, !Y6ۜ[H.o)GFT<|In9|20#elа5/H +ߗwh2[)Tpw5Xu%.ZQ͞#BOC,21c<cϨTw<<5l]- zF6WL Kfrke, XwZ>+8+as +H(F14ut33JW?GF< V?z*zBAPtP Je,y~3Bs^`?BxpYy"tSѿ۪#ԯ" ~ T^eCdU?^*ftL(!Pk݅QzZZˠ=pFy9 #=`4 y|$b5iKԬ(¢'5cOں +7202/h/ #y z?>rUs s-fg/Iᑾ3 +{(x$|ϔP)e=mOjd^I +[O̘LBt'Rɜv"$G򥑘WM4@iw3yCMb/v+[cn }XK1C5GK4vE1~V[fŽ}.-]YC|,Kz1-H<1Zyc.&SF ۓ\ی:Hy%zQOވR.|XN{@Sl$˯:҆)whn2D0J'%Z`4ܑY J}8ݮOC; EC]ACeԋoܻO4^m}ŷmZI+ ]1؛kl(dsgg\JS| +8ۃ^2AoSxC/_ܩ#k{zã\钮ڤvх7%j $]:RP!EzS/v9{FSpUY9a &9`y >LF X9_ȩn+P_H?2gm|!B<f- |PeԿ2/"LɵOW/n!|}@֌ +"n +ƅ,.IvNQfsAH  P]u_}e" :ӻ:8˿*g:Sݤ/~ O +fpgtB(ǻH֑oXbst0C 2M׽{)[ vM]w^r۩lНs)FF38&@]cU8cScs(2nqUcz3WJw/Hչ]:"R9Ү`|1Eߥo5L ډ[/;z`z)(<DZW=}v20'?[gEdzc/vdZoW3efoiz9-N ĵ>+X²魺Ɏ8jo)dOPAĖ8`OػW$@űCabxxZV8SX2h5WuP`".G{DR6Rݝͯ?UܒH*8f#/:B(iB[qiu}UaGpUwiYiQw[@X},^غ#G[~UᵒVFu~2Q=uVzKe&eȱ>IZu}WwY?թ_4!j7V_z"V 6؉UG^@yHu82rBhP_Los.#!J HOR g\|( zz>}*;}{ U;pN/^B7;jM_Ptf>U0sH[QȥDi3WQ7R)$U"$8_.TX^GHTjepI2s0TѵVف :oo ,'H*EUbaI<̬l :Kw8w }}N{6L [ -w68%R%!o>rͫUn5lKu52PLofw gp99UbvO݄0c=$|nXЭWc͞wVTO8K!ӁaL FƝt3[7Lt)жqΝg|r]A9G~0 1Δ. CGp^1lCsdD(<(p&&R,l>=X qc{ wMUҼz`\ؑ*9J63g9ssC`(wP"H1︗B|l[6cDa^$N$U8w5'~$b.z~ʔŪr}$ө7Z1&+\3T*x]d옗x 屖WmsiP|Ej?PO$_r\#[CpQ u +K%@cgD!SH:w089{YT$9c/pUr9*QڠTJ ˬC` y:H* pFG~QbJ0N wXG1%pgQorfE7K.rs3Ƭ}sy(yGUȱ>98})K@NbI?>?kq~c_ ѻ>ˏvbUU}UPH/YTi~\lޓq-ЙvഖWg);?A}xJ;H9ỷr<-E@0 +>ьŪ$ W^P0`tw1\V_ ș(P@ȝr.@sY&S$E {XUypQ'$T[Vp;}^kH Q#I\YA"9HO W~?HPV&4!\ O[UWzB>ij愼, w&::i,%aNȍQAs s +r"KE r-]{V@Nrq?d֨݇9woՊ ggk 9R7A~ءgHC[newN,'! + w)+\>>ۂ\_S+F +a 3/6/3flSY\T)Nȷ) oW>! hC^x(aVIȑlIBbϸ W2̅ʆxP)4Mp) +/sP&h}eB$ GO׫~ գͱ`x|g럳qg~w۞ySQ"6ۡOGtQR2~ [甠p يNV +8w ճuX&i X^q{Mn&*^(hܑPFA>$N`DW/t쁝:\Z{Qh>Oc#)83flZ5#"Y/fֽG N=ᮘA>é^|&taWT6[ 7̖N' +jGcp-Vķ,? wF+U.1ZN5^TQ{˷P'-E0'vX—/" W/ ʓҡ^jzU:w{  td r@\)$BX +YrIL? .߃6@pt7.hVI>Ө!! ('p'sR=YECg(_ެ%0[! +n3NuT-dNtv f E:~c,[<~fr6 cHqZ +qd/S7XjBFսyC"ʾ0J/N孆y=|3рo +?fմn۪;jf~(FO Cӭhd@tI(YfCC O ?sF6g227Dr[ሐN@-8ܴXe~ΐ}OS}A" Lp(lf,,t-Y= MMU2V&.-00T_lLp[,.vc1}5}ⷉ U!⽽#։`ަ +0Ian߯0Pƥn#Ŗ۷ldup-Gb\Ai붫JFE``bW6j;6M+K0rkyAaelALEiqV艩׏N]ZHZ 7W2*[==i]2: H8:Ε+pC?RNӞII$ +RRm5)vh^3ڡ:gYI/oNSy *n`!EVp-bٗG( H߿7hS;uqzB6ٴw5]U2sMGO`f._2d:D=ܴT%.=Lkڸŭ٥Ҿ4:K;]:QlçEq\XV[,2u̪y^FɥڷJ;y[Yܘ ~Ř/)SCKJ1&7yRO..(zʪlXpTKrzěl"])k-BTlK3Rh-c.r h$AxֈIE*l]s-Ek>bL¨J3iL$XK[K9m#j7MփKԖ(>stream +6n/ ㎧ 6lckLp!*梷>{LoWBw^Ex.\+ʽt-C C;WZ#׵z?X=kU]YMlo]P:Q|t_6T~db8 &AkJ^EU{Cr*4 wf^LB>hl2W6=+;Yƻ ppZ>| V) "_N7/KiGRG*>Y_JfmtE:uyc{mL|áQa2:զn4"BzxXb/Qh'$so;FC\`o﬍@BEk~: EЉvZ67f(*Y+.%mL/jɑpfSӶ2V +3-ŀI|#'$ok,%qqRmwWmGdqrNt UtJ]tBt74v9NTr ݠrQg2z9$3 LR"1/e$je[40BjqY7siBY#WG'ЄQ̱OJ[9^6)SBgccm/}QFo7lcl,x`#=kC?k5~I 5(@PBpi#Ʋqm[Zcۨ7" hLp-'qiǶL:4Ⱦ1X,.{& +v_Zl;[˙sy1/I {.QdH6 +E>vآ* [/ܘqu" ,x@5),B(1 a\ȉc< oEg1jYwy'"1)Sd̸PE bd4f,SyIY2a 2^VECWL c=- 0ٝMu"Hs;1  c 1ďpR ㌢Xt8"=Imw~RrӞ(X]U8v{Xߟc k&uQNN0 h$"'av̲Z00vR"smL0,ư QFܠl_ e!߃z.Ν;v5r\qo]h.F sqWpb Pйiٞ/.6.o +|@ < I0EKƪ=}9_FQ _߹bc4m v}t#qGd F(/e]qR;-0U._ <{;_ agކb )dMIB;/ U5:QLDsWK&^"C;"u@M(̌nh,NWo\5Gq|m{yDy6:^皛c\q)I]`KK~`X0@HO݋9-$:Aڠ!%TSLrtyX;hDKn!#3l7NJ@$fRgA)#UNlhL>ZSi&߲kty"e]z[܏I>@j9HR\bmC}B o0`~yM +3#ęūYS]J)XF1zZ}u6{"vg"bz3D Յ2o4#u9H99f4^ƞ^`x,簏-ψMQ..2>g] my>v۠}cf& * @`鐊?XƟ0F\e2RQ|/8YܯE"eʚgXSgap?x9 hIӁɭ|jt +Z)bjDTAaOPS)xJJ~Nf& fttF@A)/t]l9\{Iys0@R +:pÂkFSXаҪdUY0h``3/hsAWgO8 O0L#ۺvB #O )䁎W,y$j,Tyv 儖0+t9zkJJ,[OhcnB, +$t[xa8epEv%&vY + -34_MTDg{p0М=Aɤz$ LArZpA,T rЯi9K݉@b__)}in^DCGuKь-:0N{TU;oTM +cd5i/IM#J)j!{LCK+{˦1ޏO(!:z&3F:\P@~9:&:w#/B_tny$H92(ƪꅡ̰:u9VKŚ'Gu\U^0t$O"1 r .ڏv-.-7^nW_&srV$@|vas_w kWl:.Jc{&=%Uq#y PXv/F +Û~HAakL:d`)-賑 4 1FK>i0cܸf_ڠì|ڦVhg_['Pڶ'i8m`IS;nCCLnj0B1eAZpn]vYm>dD s9/(y`Ka/Ub Ȧ]┉/Pv;DKQ&v; 袳Y6(uv;|_ Izkn, }]нA΃ย#mm(Qz4UqWټ 7#D1aF^Wyyu4=mptaRԷ^w}[5 xHB}M@"|GG[OmPr,7ކAVT9#Nxдuj(vx{=vW}0dvŸw3voHaW6Zиu|@,(ޮ5fA}dMٍ>!AI ojˆrh6X4ь\6؜t{4REN]P#>GE ns,vFO+}vv+$sZ@EZWS]&$o֠>i{5vE}.-0(΀գz]pk;o,Srib1t7sڶrpO&5]dHv~XMKxQ9z IXKA%w"\|\:n*B:YB+E}N-T;zu\ > +_:ӡ~׫;|{SKv&3E +I5E^8p߷9N 5l<B^H8FG{W7i^6\&^B8_'CA%M6P0zS|abf-@`v9ĠʐGy~$c9 g姛ɖ(&\3P_~}Ҡ-1A1s%]c2zG⺎@ހgeeue`U2Iy|)jDշ$EIR>g +3D$V> >w;QC<ދ+-t]BS|G9̽ 53 _;Yn3xHօH)?~jbm<ў=ҬkWBoL'//i9fh}<|804Xn{nˁ8.dyl4mOr70_bGxW#&T2vqVr:'З M@) ٙa$1jV^أ )[/ץ$,4.O #NbAvr~Ko(>`.+%{ fqcDˊYm/?~ XBE7}ޛ8{:yh?zс0i>-@2|5%iɭʌmh#J匚=l$_5%B\b(^ |!O)~g]K4 Np]fXMP"(k\B(-*6LǟFC(71f1.Wܑy߻GfT@& u`j6N^'1%|Z`GEhU:ۗ8o;kJ_%GoiDhU_+Ѷ'L5թYJ]p>_:ˌV_o$osYƐd?դrۏduJ9 D_@?r]")Z/ u2cI0%`?=bg4) 5b .Vҭ+?SZ.}8xcX-\)X @j78.te@r2܇@ Q5w:*2_ALn| 0Fg 4j%ze9w5G8fO&Ȱ_vIjUm*J K< &hSHa t |ٻŔ$9šj!9NSĭ?'!c'Eo+%Ѣ!sNxH]@*xAb+ZN-rKJ-cTaZ6EGʌp0HeFz^rlVygQ7]B5%ťIxlRxJ1ZV]T=+%6Uѣjρ,6uD yč @{'Hcxc@ڇ:X1+ޤџx[mǤa54)mǠp'~Zx :;f 2Mš<B] <̼iwX]ݣ'd} 6F<턾g -Dc ۭ攩Ѱwa>L秔Ҵt(L h8|߻Aմ\W5f +@A{0W$dY2ZLfaE?' 1h(gw 0.h;%V%'_DUWd{XjAsw.\Fc^؊q! yk{Ƶ晚5^ X!΄B'LdץyW=5eB9%>\KDrӾ- b9JL5(c!HS+D:+6Y]W$SբKHG)E0RTݦX.!һN%cKs/V' +QF#*CN妤tId9;UdT:4;v93 xhd> 3'ԝȊֵ \ĿtfiÝe qsR* s'8F&yTE)/ͪʍ8HUy2rS Бm4r$- eVLTg43WU St.0%āӪTN LFju֢ʪ{K}'PgB"#c9%//M7:9IQ*̫vKt'_3ڔ @iLQ ;AMJ:/g\5*g6g5\̝f}?{$$RvTQhd6yr%Q-:H#;rEleJȭ"+HI+k?R?B&5GdcFnN.P1?0IqXY8^oa|/^lH +Η 1NA\b P5<=%L~5v1)j&wC)[,AԤI T4wVd{O'z8aN˞ BCRIt0 +y{x@g/m4`U[ߚާ;A434K9z| Zb(I7?۷~g kmEaP<^w< sAR +۟fY+E5xT˜K2(tFs CvX] l"X]"lfiG|ZJH[+K9G]m!hd<<0%xnH`߅́jZ GP7_bĆ%xQᯎfYBf_e[j[Gh O˘`-r/,oKVڔoTP}z /4E<8'c3?2ҠBc(a_oq"( L/$_I$[Ԫ%yiJ9xѻg>Ծ3eR_T{l1ـwݯ=Όoeh; 绽jYuuK@E:;inGLePyK{ )!ɩϺIy?` +F8S*&}a~Id)l/PYk餱l +T0I_gRq +)(>>ʃ7:={>ϤG[ BS$G`IK49|>M_܏sil/ܷ!븘XǾ>Hf yw@.5yS< HOw ߹F%[8ot~|w|?1ЈB +N4M#N0mwn=H@G< 5qwM]C`cض{C0g  Ձ7H:)4!Jz30yGl a{p J?vcռ 87m~ CwG'\ tFS&K!}~D/BY7P1i8-9OeԊGTJ}Gor?(r;wDZ,;x8wi?0}i]%՞]Ex1#+ȨwZM=|P=+gܚTө!؇y63;\iqa2#M|g񎇬|`MP ThR&$om1DW;&o G@k $,)m*5v &pQFb+R1`?|x ܧ4p緧/'$ęF %¼r0Qwy8_NT) EFd9tgV|nZf0> $'Kz{0)9߼/v!J@~Z=ć,n#h'u4l.Ʈݗ2mre};Q =QFޣ5`[o +P,z5r϶5`F0Y:vv [-V$yǾ?DDgC(]j82.~#aB?v?pZJ^<uID* H'3~p6ФNܯ3|o7]WF3nK/%0vivuiu`R. (Kc_M@WHď:_*[()Z3m*AmP;T%(|lK&ЭS6o+7Z[(2nM89PɞJ䝵ފڭ䔶ĔqY#H]LyP$ >f0Y<:@BD_>DAC+}HߏP?6r_9ysw&;gص=X ] WŶa_h?M=_u l"{G1(-zd|#>}~ԻydD;H<Wȕugh!L@Z*>`g3nL ۭsX6 }TzI[CSJ a!A +ɻIU9:&< Q +Uƿσ@A~ɗ|:F."aGQcChw caGmEa[{N dWIT m-'\.tvYQ! " p$s#SCq~:xƯAyۥg6uǰiu}2f$yotގl!D3~ou_M3f.qd.]=t9H@o;z?~8#޿68#{2-fcݼ\lX:6ƯmA}&-m _Zg& +>v(m!A{hsfZ VA߄z"qF?)ơ>0(?} D:ϳsugLw>Pd>t){>NyB;H}ûo#8b;$ &&?~%pT: +H0&؇;xxᯊqi#,}5Vf$P0ބZ- yO^ރۀ>`+e!οtJJd/7@1H@ ʿݻ yvLt +V(CwN" +R8W82/$mF/4nûmoRE \|.7MS2NT),;dGÅ \w:vOd'ˁ"p}Ã.ʿ_9mʿdهeG`H0q;xA>|WÁrDhS0[/tfZNؕ6oX5]÷?|?HSP#/&c*"AO3v@|G@BV2 ĹOmCgnE>{rmú il6ߺ[fƺ3-gߚ;_:3-fksejI?/q +<҆/ufq}11|l-TH^Pi0o"n:MJ*'p}@>*z>'q!J¿D:S,,*Ao] +~ ȿø*2ú[!~&_-̝Xj"Nt)}~QA}8Фa@8Ns79|0ukv͟I˓@8ԇD\g@w2Mđ68g8o2=ĕB2qA!j5$?|L=v,}0nF`y ȿz'E}>Mrݟs5p8nI#iU]9|~+klx"spaCǻa=y_G57otio +|fbӸE<}PQ +~Ai!#jY5_?3mp?&oƺc7u˹4bۧr|ضۢZ걖Y%ۭ!7r5,Cfܝun9;>5Pvv[̺co_K]:}˹صz1\л(`y1BHT[/qeW.a>|AԻ@y5sy#ms?I4y`mX{ShW8KFB+ϲyH5J`gQߌ!ßVqğ +Ɠ>N"m|&_.U/ M<{8a!0vjw V ><)aúO3s +w1vl7 _MH[Z2.#Mœ]~N@<ύዻu +EhS0rrLB|i4}?}bx Jbo$!Ρ޿67u]p]07 ] =l kmc׺1k]5:min вơm lÞyXZ Vq9ÆW7h`diY%fyfKVKYSKSmv)K]ʱ~ us涧vA N{)N-l@*U5uDuuZam-eĖjp,֔JJeu%ͺfeZX٪*-UV;UfUVZ+))*-,,,++UVK{uZʢZiTXVUVZ)+-T\*[5UUʢҪҒ¢ªRa]QMQee +WTUZ+TvJke%geU%UUʢʲ’fin,,,*,,*+,VUVVJ5ҪʪҺʒVEUiY6KVeQiYiZY)***)*,+)**mUjJKEEEu%eUeUʚJYiڪ(UT*kJ[JaQeTZTJKKJ5%EeE%EUEu%UEŢҢbIQQYiR٬jJjJENQi-LiiYaeaIieZWZTVRZZ٬Vv*ºNUeYeaQMIieYYXY ++jXڬv*jJfZVkJ+K*^]]elU*VeUYU֕TUV[jY*+NIeZmUՔ֕Vk*5ʒjSlBVNil֔6K*;jYXWRYZVVYlUV KJK{u^QieiSZ٬TUUւUWV{uuU5j]UEieieiYYWUQTYZYZXRXYYXXX),-)mV6JeE%f]Qe,,)UUUVUւT*+KUejRT,+l֔6͢b]QeIeYWSYY-U֔TJ*EucQ]eeXZ-Vv ++Ţ²ʒҒ^aiYa]YaMaU]a]}eTX,-*,,),,U*bi,)V KKJe,XUeVSV))+,-J+jJJ+Je]Q]QIeWZXRY6e]W@a*]K;J|9u| I +`+[Dϵ&Aq+u_̗.i&DyYĥ8B +A$rjj $2F%!9nls^RV@VA JחpxP(b^'v'$HЭ t)4sԗ^zvtӉQ?y5. XA|C*thFAKݧu~ԃRz1Зea/s2bҏJ?%/& 1ap!]9 hb}t,aysu'&mA-R9Um>At1yIQX3F%&D_h #@ W ! //M pnrC+g`t| /S"+GWe)kD:9J&9YFB˺)hR@̫<# 2VK$bNP<ٲ]) +~*̊N /a¨rI +f+Z +^A`gd?*yK*_rMs(;ML!dcB9-FR>`V.VTS@o¦I/K"%,@L- "c/ɍI$7R'~@ܚ(`Rc!#=B-Pơ8 ړP zG3:L5upz. Ѥd- SR6q$2d˜1c+  _ψ\ 8Չw\b yA"'GK2, [YX +!Q98Da#HȟcOPGܒ=䢪K@F69F>A3]3QLIDܒ2U,uT) $nTT^W1$BI %0icGC#ErdyOn{JpjMV]U܂ծߒGI<|ݽѤϮ?~MR̗["mtrYD4S4S,FjL1Ǥ~InPq98D&?R:IHi,`ڢ*yfQPU_H8F)qLrȕ<7??y1sPw0RH2JWNTԓ@'\O܇KxH*V_+`®\ `gPV_EU`M z[n3"X+dI8[!1ŭ)*}pH!~E|PA 8DG$I?#5, I<id!祒@RW=M0[8IčF; ;ȉ-z,3cLIAlɎT+)a18s!@V">p@ECʅ։yvxK˨Ā?_KnI^|DpuIdqI^fX +Tܖ*in"T 1H"8ȧ7J"!I*5$N&_bHcINhS3 {|n>9\mW-$F\=xAfxk)AKSW72PKLM腊h"9 +8Ǯu'5P!w|l@!^s4Po1M2,7lbJL_zwaa'<Rgzhs m\tTؒ5e2Urid^gkg&p1YR&z1qYQiADMV:ODiDē7KRzD| A5&2;J +{Ea3ߍI |H .D}Ky1{&+l!$І%!AûDZ~XhL z*V"{t=T!emrb,^Ѐ'[Ak1>OԎJV)_r)C$M>XŖ+#TE8N'-Yq !EQAq)^{|DCr4k+cI8.ŅMg9QQߖ~(S#tjW-{- NJI +~cJ'lVЙ!m"|rYJw- NN1~QJn'GY`h +U*k\\VJ SL UPk%~""0@58zu}Rl^ݐE;P*bR@Ĝa\+"m FP•]s؄n#(`պJ`ka +iIrbxL H$GUP2,)7Zk$9d5NB*(<ٔH^?6ȸ`8/zhc.rg[ MB2$1\!)(|n@ zJbPV5*o +*6WV+D>EގeBZq=&\]6j5-f0r +!(%j|UEMH~%o2 ASRgU^+,0F Aa1s`y“Y<500%JJc(rj tV/XTdojw19 I;љyK hSL#FYZ9j%+nu==f $0,%f; nR:pSr}ƀExkMbx#._⾛ǮÜ|/,9% plW10m-J:&9+# |0%)COA-{E)0 /\CU3ׂ{G0"#X'!6r^PD;6 SNm +{N ȌΕ"’J_8@u: A)0+.Nx P@LR+}yJ_qP =E J?cx{ 9 +MH!@AiC`R SҦ06j3Fܕ7@b'-m ixh/Ꮒh[`@( 6f-"BPZÔlI9Oݠ7$k,4RZAG)ў䴫Jjމ5#}|xNY6: +KfIWȬvpU1(mA:%"'4]ج%xxT5Plb;"RX62m&?Dܩáκ*ݔ'B w GT:CwT +Fu7"P`hS0!@ =f6 MIxE +8"W=YH3YS՘FΎ[c¹9Ov#u_Ⱥ1|k#]vch÷f w䙀u7pzxue*O "{ۼ vCyV) )4vx#m9?H T8zN2代TDZ;>BD*5Ǭ I%b^:%geΘ#8a9XIN"m J΍2 |Xh>{f0QV12+tEaɴIb*坅cvxX8t4_B9KR:KLŤ?*-b^@#6Х ^ǧ8S*"/}T +AOq ']Z5Ozigx`đ.9c_DٗuefWLz$Q'2yrdX$ \LPÿ4΁* wFۄ<ѥ`w +ߔ:y?Sh4* SCc3JE=dudn=~3_:zFy,[̺cN/A t]ʺ0zj\ L +eU?~46l~=wS;fosHtKx}"'?VPκT qAEãgpSTL1[uDfR5}.%Vs)8lTM߈i}AH ~J]L{UYGTY_ꄤO$H[ǛAG4>:6qsX^b{,ݬt^ l5#DIC}h!@~^2&RR0IÍ> Q[Ofw$_‘s1Ckj!<?z y=Pzt`ĝR?ѥ!9Ի.o ˿4/Hp:(ބ~"Q;4o_FΎsuu^9άn9۞wׅ-,!j|HG<"NB~TȚ zJmڐ9݌ftQQRpMV::OBi@c^ojԶҡ9#Q[AE[H' E%4"ў*`Ҏ`r*Bzo ldWQ1ޣAM>F]<,>.z%1C:< +X z,?}N$dTJ>D|vt8Wj`Ee4 ouwΡ6๛RpH3+Ve5զΪ:wA`EN >H[+7m ϡ;Ațr{l$ P8N9&ٛY'u8TD<Ҿ9SB4F`OqvU5$Bh09zN,Fxc +þ"a_Ѹ x(>|6ڌuZ챗:4.]x7LB){5Y5Y02OO$kaҺA5ʚBݔ:}puBF; cN` =u~s~ +aB ?QYC":O "ZS1Z[h-t|N 4n߆PnFgB/yMR! q'R|?$!(!P$49Ư+CF|*MA *DwI9T0,R*V^aY'<8vF:jS RJkcd-|Bk狜#\Q}{f7Dm ?cѰF׊X?}#N9T:Ɓ$3֥;?}_Sm9BGFc>vwyp*^*$92ulxSg~! PHK&] +|)R3;64@}7"5*ٿa},ÆVʀu÷68{G2m#Tem|?:H3l&JAy'Ζ{ms5wwۧ{1̣E6<~D>-,tQC\ +Xҡy?h嬛P$.neuޚcuudIqл3ÅL070j3yPyA6)}Ns:# +9?}X"9crZ9AŹIRs AJh"D[ѹ IMQy;*&C|s<9H"R1D1~kedT.*!JA;38=6F|r?gԭ̡.oft^=k~Dl;뮯5'945̮[캇m hp++!S-(mwRh+}Q'=֍5utfc<&i ]3BgF<D0A7evWBrp4`8igj:owfm)|[lnaba6zC68))^ǐώ[_=8{ƯBx ܯqzBTZP3(-(5)sօq9tM GboFA?J;5{ Uyy2̾!su9`̈,:aR0z :v.ynKZ + m~ CFmAF7;f/~K{jd#I?u8=z _ȴ, s?9=}~铌+ 8$ه7OyÕ<8U<7J?~&\w| ݧs2{m6q5]I2k #fLG@D_[ u\D@D`G (LI3 Xq QR\vv\R-$.,iM w|>BkjEQwi _\jyBm;zF0n9v]d*'8)vF4g((=#n[ns+m6X9|fn~+b0;g>P"q,6D F, +*I"ᰖrQIOhⰜ8 {1- X uQ/&i tv@ǵ%a4:TSF@8D^uow cfalG\͏aGh!iñi޹s8 z)Ajms$旾3n΋ )}8:B:UTAcJ6BpӚcUDV;>PiIwHk餹P3$:s:Q QKPH5G":qXV\=MMn^2R+魥U疲Em:/ヘa{*.thb]KCà`]6 +.t … jAoЄ D)U ,C'wL)N:XF8Z +YP-,]%kAuۨYN+vN|q:nZʊ•(]ݰ*l5V.הU:  ʇhG_)8;XH nH,^XXk.+ :Iu\'kJ<;ga25zG2.2w$虰یmz Ɛ GьH(‚Vcb62^I1wǘZ5gjdEʩH,傒ua *2ހ NQizY?2ڕcRyUACB8(ҨoPB3ɰfnǺЏvtSsG=Ym8ꖴ-VXe.<bEmfX[ + ndPKv5Vڀ[pkQVib؅-r GLk!AW/HhgZ;8by:($j<\, Ϻi Mm=5 i̛{WWwhI\(y1}jX 7m/ HAWYЛt6na`\ @!WQs!{;"߀*]Zn6rs|+.h ^I19qUAR +RfbWNt)\0E$K*7{s H@>}QhvH_ؤ-[JPAtiW'vQ.$^=mH:p=e[6fm`, H4O)O@FOۿWǻo!]S5 +!c(1c\H6vElVnSDGF*-Ԩv@%$&)~匍Űq̀Cm6ؕA9{тȿIbfr]s8s-d7 wp1-e0,0/  =A@G@3붤}a0@ܫenƀnI C2LiĢPvv)ƞܖ2{# [QT;{tr07Pշlah.L k=xf( ] P/V2/1Gܟ*!yͽT`XH@G9PaVX7I oD]SQQWH;U>bUL8+)h-N|2aDap>A:(QiL4lsl*$9vo>|se$T2Iص+R !aՄFGS("YVYiaYN w:6 +:X X:/DЭP(dn+B^\;{[bz؄ 0h_MH"9TElPFeVvVv6p pcK+* +ZHn1 @6Ȏ/IWRn&uו,Hg(3\u%:.}SHg 5O8t6-Hm<%lBw_j@7|g,caUJ +z ].tgc.uh`1`:K."121 0򎯯2.,rW28(`UE/tP.!BL;4, U-,/,IH@5, +Hghn2[dsAݺ%D}CTؕ euI _# |yk=߽44oUU +$NY=vAh^,vX0f^VEfēCKQз!b\a^YۿrI/s`)[Jfgq1WzrF [1H +^;[0 +bPijF±@V;jH`R@WݱusP_فB8w ` +CE./wd\Q2ep 6*4`\ HT.]vnzTg I3>} I Huec)8;Pxy sM썈<VITl3y*z'w*nՊM''7{ckYXcͼ]Yw9tm\} 8sчa=wlCs\TXì5C"ucb B`e 1D|"r 42DI`*ByfͶ :mԽ`BPpהP0m0'۩[ H 2; -¤ܹuaи1h!S@IF##Шۊ)A?N=ݧ].vw Ap&9jJYӀjz ndDՋt + tI(WDXVbSR6&Op@4ȸK: +|ZtTae-ŔMLJℭr i(a{UjYn](A9_@|Ib߮ p RHk6) "cjB/+t M EvdƷ9w +zQݨ B7jrЋ ,Ja滗m:ׂ^PDp(+e)_wKZme2 &.Ȅt +zip^~z8 QT-w5Z>J~*eēD ofkDLUcTjx0mːbV۠I\k9нBgKښ̘AY1R\7SLYŌqЂO +%2)ZYW u#]7w_=~c6tYF|Enx)~ijF ;=8ܻc^.wd\MyFtǬm'/h X!R -ol,v nS7Ň3@ J+G ڕb.FezNAK(2k:Q -%NoXb[IK=QelI(XȔP#:X$'WMb367Xd"lԱȪd-*٢*@TfuDʅUK()Io &SI=J`MEݫ[@j#ԓ\~>ti GM)G( W<07>25dg$8c2! '\يr "$9ŠX]L#4,S_ZfQK@Q -v~:Ogl:PtyO7"%>qz"" -2 a ?T -Tǹ#2lFfF SCGD e(/)|%,A&ZSn\I MPa N]IxpUl@K2V>DPWpԡht^zN/t.ұE:D9,=iq ҄M&Ulu$!`]e{({ z#S'H5#% -T@B P? Ӈ:}ӕ=]#t#O/rD؞NF,P. -IDd;I)'"U|q ) LF_S37Zds 瘡I'h!ϰ$`G47z|(IN1ǥIKSQe`D9pZ -:NK6kzM51ұX!"$ɾ-|4NI?J"H( 9 d|١&f@F:85}0rNg&\e$.XGS 0c(#-5vPQoCt>g^Kw2=]`Lw0wNovk`׶~Dri30$Z[A\)Rs5rs2rq$ B846bhwhYXEf؆ M22>#C}8P¥3D,a` t' { cMk`0{l+/+[PXy[3l%8 L223P`mf&4aix#UpƌL#~E2;,q,` 'C*P20e\@L)8 P5ނ.--8Nq\zL・ttԿ"Tȼ W@%2RɐH%_F%c64y Acť8-qB!SQ9CfUqJ9ZFre4BO x:P9ؘe:OL2}l.{c:M4t.]{zQ"odR4h]5'Ԙ{O|@E$E(=(V -8q12x ˰a00 k$@4axq& Ep^:ƸG\6 pM/ezM7t_:ti:L/t>sN_RrrtIwnڙqu(} A GApUq<Q(qxV$:)ǽ ?H+ {ܨߠq Q B=h\~y4Iaz9l0gOLq%QJ/ -_9۹rbʮxnGLBjЗ|:RBt^iM8e7-CXKcu NTV K*Kk65ӦiҢggQiUY3-(Ԕ6[UfʚQeijigQkgY(4*5*,*)+-%+*))V[ʚZR3C.řYQIMmiUUeԪ΢ִVYQgZXVQٳ4mU-6]3۪mXڰF677XJUeeVeEevEJREUeάҢԴkgY-, 漻--K ȴdSdPK.l8 458fyf渜 RxH U L b _V#I{-Q9{sJ[:s)+_ke<V%"/qve1@Au.:mEztmTL}ԩz:LK/rqq)uľ[bw#›WApq-%ýu.Dm +b(ACrBxu$pe)/ '\TedQBNk89LUo \Tݴ @ *x#UBD$ CSlcfLD:YbX [T ʬpH^c ^6%10 "du{*TI{5u HB tz֧ns:M)$C4g&<\GfL d"0gLF3$+[PNb@Y#XXkQݱ[5upekRK,jw(U?A]OgL6>PgA؟}:OW^dԇ^|:No@DTAQ2 $RJJ8D^m רajH㈨aC@U1~!ŷ%(dQ {J6-P=+r! J=l14u? O@ (u AFʇ7 +n:P?tkOEX#ԅ\~bZ:HA9'`AǣJ-N$ lt;AoszQu&uDԵDA +H3d|Vas+t$nE.=ݰ)BوE!H~4)%4d[緵 `+L0$bD81 +l,sG2 + +4t Hb %hje+`Op|!tm EEK) iW` 5+}. Aϣ!ހC!,PשyX PwPu uVVCWL0#=z\q,1ⲐGaK2,0qhb.ĄQoPAg >mG}P2bMD{@\NF]Q +:V>F]ʦ<}ft>@VK_@2;dhw (Ɓ|cO1 ?85vt"0(KcG+'g,j:ÂNuӣh|:ԕ`xvmNB/<} FtN㢣- 9(u[iXȕS*UH;x5`xFCE(Ys+C *wJӨVPQ ٚ>ӥlzz>ӯz:P!~zUPw80]lPϻ<=)ŠV^C嫟} R̀${ovlw<} r qe+bwZ X#pP4<`mp q|CF&y +L D7L3 ojΘiďH_f%n,A{HV #'aA3t[ݥti:K齷nӁnW#VF=˨dxL&p<8/;HX~qp3N dJB1*{,ܱ9ΑZ q\c8W+Z[2l^iWRP8=sLi8]ޱݥ{_zL6t.ӱݥt~wzO/PDP,XYM$~365J`'.48.V9 +%JB$0Y'y3i%a4.8 +xYr/7R1:L/8<\mb|≛)?΢7J%a\!+`;WN@,CRϭ(PIcX OSrY?]tNk:M6 ~`@oݶlv9XKcu NTV K*KkU65ӦiҢggQiUY3-(Ԕ6[UfʚQeijigQkgY(4*5),*)+-%+*))V[ʚZʻ"n؂ZzLK6E`†@- gfE%5eVUUJSʺ:ZZeEiaYEeҴQgXSTYԅ lgvlf&aɊjÖZ`)VYU6*MKeU:JRӮe458fyf渜 RxH U L b _V#I{-Q9èg0_"iG AoNC_ 8uwRhoREKin1ޏc߇B8Θ}WLZm9/H)mqJ #Aijm~Rh/^~>|Atx+> Pn#5o*tih$Q۪欽9;:CL o#7CS,,k)-owX Zwc͸%)..Ÿ4j& % L q%Qq1~k ^ޅCT :+o ML+ù-j~l|hC;pL={5O]0ȿ;R<$H4\ 4quPe QYcٜt[UR]V8Ջ[B(m9wf03 XXA>cݽW@ ]3cJ%Ii'Gpv;bpNÕ]%iL&LDJ8Sn8 ʈ -f4\/+"+{Ɋ:g.!as`zg:o F,z*&UzI~xGxraQ+LI3\ `@nԋI({.wm'サc7:ZꅣO.unL`h6"n$)Jed0@QnC` @Âv*р:xrD!bDGYS'A@p6N:mXc -Zd R~ӟ"oz}.i_O~ykDSF8ꌜQ':gzN79S_??-)6vsƝ[)abTRVacYB״n.%UJw}C4*ŇRtKCZv`2F۟ME ~X \^5OxcW;dMX׾K(=Q.V|O/:hɅF=l]=AGᅢ|9w'͹_nukÞY?\8g/fáwħӠzzvyNv+Fh~7n8j}k~V)XfNMjGgl -0?G6VO}`&|rx',㩰;iB .z{YJ'zqY/"VtyԨ{xNْ۪,a>Bs, Y|n:8!<}{}1cˎ\g䂣({g fdWO;z(BZ:uK -p5bCWc_(8^(Swcg~(9`gvi s.ReE0l7DħІo=0?`Ӏ`3ȟpO3oFϋ9}Ϻsf[]d]zh@lzzky,"%Yh/ͺ_ 9"9 -YΚsSY<[wUi[[2>rP/ƶWHUմ^o*#u1,?+cpad_6֬3N^}^v \1/z~avwcpd!-YNu.O=GZmJgМ}0+w B1{ R/G:GĻX[a77;YrqZ謕ugW$8/Hs?#$5^|{8HuO[[6t$]}A9RWb]- zrY N̼!kO^<}|zu"?;̥y/}zh" :eěX>ݮJ"zqM׮8l r3Ï$筦MIb:V^`?.x -7@' d3^|sKSB/[I]й ٚn -qA|]ZDbbe\O=kɹթi䴬h:\~Ϳs :)“le*xzP0QߥAv0,]N ա"~/lÌd+sQnI* 8'|kBU-w_cE],<:wI;֒kp?noި>j@ǻ>ѢZJ?I"5F'lEa\jFʸ;? %kdb:O{^0!{,il ȷ &i 4.X>@άa̫'w0{_4a }Ikf]._Io6E&r,ݐ!.%:SE.3Ŭ05?h>&02m3}{'>?T(4~qQD߬fX[ l*\qpO,F +V|^fWtsCaCZuaX8XSƿBOv(텺AfqFWx̍bg<:;/Fo>w;Oi=ț{ȷ_OV)%s-s;ߛX{5coz iZ1[(x勥"Cˍ-ʇfrqݤjDFX S3ll$[͜AO|k<o>55n8ɀiQߔwg Fjw4f|?$ke8;p+gf9%}Y$8韖rjyPkfO\wpf| Ry7ch!sDzx@*|id4ߴԖ'8?3=%/DۮʁW(Ƴ~Fš{5mKM?zV?%kF)W>UuXV[}ݫcu^{QA! _?g?!\(iYٜڰww\[\NАzhce v ?cW7T>wUw(ن bCk,)Ģ(kU 'j@j&Z fˤٯ(0~%&R8V b ǭy$ut ZGyѽF%$lE E[Zn[<6;ʛp3&-XJ )5C(\΃<!xFfр:p[>Ml$F]Or7o]|s[j>kE$+2MlB5sgf̂oO$#֥hW7yڃ\gS/1gyy݃ENNK-MDŽecE[OV'XHm$ҿSW!T_gW\)qD9TqL{s&zjBV<#\'D8}zyJy,a Oޔqr͚piW>iέR[Gw --82(Uv1 ->Z9C/Uzn oC焤~z/%8i$0K0"1#30+ }|R6^e]P9}vy)P|Pf2ڐWja-H&Fr)Bux\ e`ph7;fvo-RI2KWϞ( L;W6#rHqz!i{ֿ̏)>ġyx$`0 Qd~ -- Re@9mPňvOu0kL?uU.,Onƶf~ \'=, 6 ݇d Lu :r4#V^Ì12']YVJں;lJ2Jo]EHaLI/ԊyTǤm2?%5.'SZixN[Ai a|c(B6Pƨ`)*Κ̀%%rc~{-6'd!oИBM]p6PYXʙM -/ua-0|V_.u_~А7xVHAaԒj^H߂:B!)7:W.8 X@)+0ؿp9-(9F}j/cmhL_`B^Z 30+U@]~:! vb{Np -"75H˿=x aMMVMK뺄K_ =*\B1p ӛ;]a NTh]3h­J8~Z}5?$V*`.TY-د[O{~3ww.o`ly$,RWjy+GA.MlY #R! -oӽ'*GOHN.TbC&vZo\1V6510L*TXeVL}dJ@}dpqỚrmlA)uvY`).FFw MlFENcvZ+~Y4[$poo$:#P>|jd)h~Wi{iUSTF"Y/#T?:l&p -JjI  5~9m#_cnQbgg?$~%dRE({BhC Qb{LeޜO#TQz"e&B&%JwkF(ջvzY[6$ }p*xp&Y`30Jqi0Mr;YJ(L (:#DKF xvMپ.-#k"ze_9lYfDq7Jae: 2t/ĕ֘ e{g%v{ --,o%DSɁZPAbpTy/N:m?Ȥ)>(+5u^CuSl}=P%1}-$Ĵ!xa3?NkGQ*F89BtTVž{'3zYJA& |:^d) Lˊ@+Z{d b4˼q -i9 -NӡCj\o@Mbl'H){R=_T>:#mB"iBAfL6C pca J,`GsSjP06 JpDCh -(XOy6L_gS -]f=k1Iw-8zS ?TnoHV~LO C`Gn ÅnݴEfS_!(dm5dA:PGMضV'rԋO5 -IEpH2_V2D*,Lˏ -{tHygp4Jdj4>00xẐB1!L:HsS<{!8Ta1o2ûώs=U$OͧiRk`EK&/ӉyB|`bGVy^zG<>MDPtSeMWS:/6S - # -sB@.$Ar%aYY!IşGJR;(d{Xx :iL oIV ] eH(m=v^H]=nȬ6A~W`?h_O:XNh^ -m&z$c3#)A\9i.J)-t{ATIaԜW-r-,qM ;U%`{w"ѐ V -)=DJrc% %pjm=Q7a:zh!1r k}Hs_c1lw`J[rY)$І0^]h 5[1Z&p^sEN fvs6 )kooCx:vIz'K rb(i] Qu`&zq ph2PGwW lg~=ꈈ_ҩ8js(m}a7L˧M+)GeZ#tӠ+Gt׫= rݐݽ;vſ^T$J(6os1аjUy~j%X7mT(=˭f7LDի"4ūAR/0*Q%c^F:,ܡ$& L+ - avE\]#qs5۫)TNqC JQF>T1q- z򇷢"*JC#PkjQTmjT<' `(x{5 mx~0KH98'e:p}f)6GXW0)-! -В ?,{/<( khȱ3ts9v`|JNw%W,=чRNɹw&!i.#6fqww,Fq,L}9[g;@j)'H O1z@wêp@uYG -<W *[$/Ƞd/InJV*A鶆-j(bEMJ\ZtDeڦ\~N 9K3-!_0ut:4&Ij`<1%t k7fjC7PKMOK'n 1!o3Ll&y[CRG4730"ޭikL͑WwU(\M: 9Q kP4^Hw4 @ +f4\/+"+{Ɋ:g.!as`zg:o F,z*&UzI~xGxraQ+LI3\ `@nԋI({.wm'サc7:ZꅣO.unL`h6b|D$IJed0@InC` @Âv*Ђ:zrD!bDqS;g@@pB$:yX +4-*,Rfh}ENqg'qv#_IDtz!sڜ~4J'DZ={HDžViqslzSf3np~[=]=7p-wD`$cI<ެвzj^$BPUTOsg fKBZ9L#Μ)1^WI`k0iifӺ"V)e㺤Ԩ)?h;ӯ!{oH|6^V"ae,O?jN{~7W?[i;3Ǯ-aYɢ-Xoi> KtʾtF'Bky검 qAWeU^c%5ߪy{۳GJkt&fzDNu<+˳@׋KӟU8eHV)}NBG|pˣ6z+y_sMfr'7JYSw "\' +q6#,,j?'<<%8_T+ܻ>BqΔ?| +pBze~ y4KzKF=Maq͂ɮ=yuCY況[jVX|sh*erLJgEO~7B?+poG?`kMHwa?wu4{T><> >=8h75g:~z0Yd7mpKX4G4slW`kv|7 t l>{\?aâӟ.R,jG?+> ,2dr>nk5/5Gŵ~*ͳf$=ywImK QKfU_\&Jq5OڛL{XM7_eݹjT,4Rxs~ ֝>ВLrFYҦܫ,/vrR]/%zxgUy|5-IWyuZNZqiADI;3(dݨ/TtC`Ѷ^u*o3r{"{ܵ H/AF'K>n|9Y0=G(+J_/t+MxCqI֧ ۷> +;?IQv4Z?~=/&}W ?C.q "/oӉ;vQI^y(]ONӨ?μ4/V;ߗU/ZOAU +6y#קʬ$n>t˖ g:3?Apj +Y$Vm4ƁqCԡ|B>Ś_!H>eJ#ݥې[ʏ8.x(Kdl! Wf! Tܚ3!ʝ[8l6hNKZcKzpJ=֑/V?;x. i 9ݥ$1*wqpf$;]iNkw,}F(\\ ޖ}zq_jk/1:}s'IsX'up|#Fd?67ԊHV:HZ# l75:`s/b*GZW3{*6_6kw/Y#(ȞnsP ;?]+O*|q^/eWD D,t+k: '7o`ttH +5 ;r@vӂ5f%!pﺖlv|Hh*>M!έA>ry)5S%/̄=D5g~Ђfw_?Nam3pu',}iqh}S͞Gޭhl˽*E +'Of٠au+wCÞZuraSXhtE|l+EOw(́k@+ҍ"$GJ<= I1svN3q >6ދ< x{ܷ\b, VHݐs._tww~H}5C; c_xQKܶ'I籰pq#eK3ִIrZAX|glyRY4D `O{Enr95^U55ct7;'gf(k.81ŻɌdu[T-jW<kBV2c6{lD0]mwp BFhξn u#G=nH#9s}ou^ډ/u6 N`l5Gt?*^x9Yij''ϷWnrjէ^ ^G1ZA|!V%ks0|ޟ[9o/stRvJ/č! &>`ԆA㽛޹wQ7`ط?̶_/ G@I4<ݨw%`Mr>D,,@-sLx*XXtF4v-y&R PdA"> B}nLZ+J?zT= + +CiF :&>RНu\;`Tkb^[(Ի*& uc ѫ +. 2'w<" \ +kSibQ!5L2( 7?3jġUۘ7-a~m a#RoP6kjݶ~7gSu`v)xciΎGР-0C\'r]rr_tr߻`6ƞmپx wy69j6gYr'=B; 8)qc`cri\{Py[[_q=?mJ/d& 7|ԃ md +HtmY(Kc8YV|v>-F8~4 cӾcƜŶLa;N`)!čfD7} .!>bn$<ʒV\ֆmɗf|(` 3cKRIX|6BcIiS~x6&Ӳ6祆RubiM22aA"Z&j[0SPXE?İbָAUoͼ_H%1 _={br@i01 +s_ TA UCU#]H"?n7p8,(&G)tH7 +ic]圶0#ۘ>BhQe\H-Wa(L<<ۚ}}4Pb,W @Zt&>w[:r֟X7Vl4/XȤL:\Ku`?D! 1͏J<"(ayM%$mi$F㞤%5Ss0(LZixiWz341u%D}gn;Q ++˚K7 7h +|KhYF/ =`Z&g{| V(V=Y|]Q} Jot-=_` +c@rrBA%by$މ1zwG!?ߨ]07Sm,rc>FlWd_uzБQs[Hް6jɩn5ah߂:b!Mt7:Oޮ9 3Д<eNΠ@01z +'6/DA9/_T^Zحƪ \ +O%; [&H0RP/4<8."\x1v +LRn$:FQf^V2_B~)nK PNQhc yMV%؆Mv*\`rUY%tcT0؞L]û"77i4 XEեȴrxӆ+gk°vFHj.8{I +)juSlhDN;Wf|:UQD>#2r8\0kL4PͳhI8]h& +6JgF]. L@<צۼ;Ԍ'#NˀVXm + }*66EF8N0R?T6 ܕ2:.`| *o\8 +lm/!zppc!2La`gf߯]4В,twF/))x/ޠTj[DS& +CoVQ:W2vi$a+H1&O8,hI*y\RtLo&;:$_[ hw2H +jAzI rǼ|M*~Oǐ(aoK]&^ւ9_$<^+BWQ|?^kG}1%z+[ڑ^bo`r;s>I%lTe!  H92)S#B7q:Gxq1‰vDZMS~(ݷOއW죓#ttb`;r,/X S FӈTo>8(kYyD㪔Q<%<0T7&)Gv +2cq+ Kc.cɎ2lctC<vɭ=` h S]'6?k?rvoRUD9nߛ +00%Ԅ5ʭRc,'C &1@ָ}-sstq0R|\eymM*Q%f,+]ڃRGXPhLㄑi į+%LXRy0y+2 ?a1\t-g1FG~_4$t}dW-d/G g X]4%: w,`yȲm`z…/XאsZ4 +(N\6mF)棻&@{P:ACd&`:G]{<·R]wR*VUKuJW# I } sD.Ȓ0u}Mѿjvcp6|vja嵱`>s@К + +nzb%';x>pȑPK^tr`G%Nm" 2"{~3a~}f5< P.L)N2d҇AxO[,?G0FBۻ.TOt7l@'vEH6CRy3c ZXo2Lj^gpǧj +chbXa::> țcQy\7,`P QyjXX- )Nwȵ7 6U#jrR0%hT V^#!'9U-ܻ̊go? 4QN,ǖ{l|&aӠ.;L3 2ʙHբ~oa1 u B,Uy͵eaT(ik!0C$G +얿7V + Oo,6n>}C$cG[Éx;ԛx3knL U{s1}REG˄7Щh A&x<.vTu4="}]"t,&aeYdN {|$~K.ހCRf{REnΩR1?UBv6fe2Ɏa_(/oOٴr\PR:3Ȉil_d[U鱱*@ߩݜ'ݎ6jxWf><\a4*>P^gq3vLSeeIYԁ~H%2,~1:K9A!%4;GehOrqiSpWRI \K -ݱ, sR xw8厹4GAx9%'kAw9yoGBԸĻdGb5 + Hp2_S6ީnK8: .P(Ro:V HN׎2_xud,Ybc䪱->C!1tH! O:×G0}v6$J|)q`>p@B/#hw`31Er%u(Q/f}]Zv`m +E!"hBR %%':Fxz܏5"), j$`O`J>q.F@`P  -252585ca4-61e5-4651-867a-fe8ec8c67fc102230bf0-acd5-40be-833f9364b67806 695.2523701efca59-9f29-471e-8eb4-1267ea4(afb942da-0174-456b-bac4-46354d7e47685791252537834 D!FG! g0h (Ls,) +52585ca4-61e5-4651-867a-fe8ec8c67fc102230bf0-acd5-40be-833f9364b672806 695.252301efca59-9f29-471e-8eb4-1267ea4(afb942da-0174-456b-bac4-46354d7e476785791252537834 D!FGK g0h (Ls,) ? ܀ -Aث`5tH<049ZH$,-ݟf~kPփ w: kVrLg(d5V(p 8+`N4gTC`,v@ Ÿ CA҈`IcxZ)V6 -i -5:L#!f ܟmY0`fEF@ Quqnk!j8ĈI=qκAI:G[=G&o)rXhN:$巗eL+EK8n9ߘn% -Ok) `+w:vLS KbZO}q1١UPHI .L'==~Kbw$%>$AN15PwW#g -a1c '&)iubJǏ 7WVV@ MQ߮P^)Lߢ@d~FMCT7dC3Dhxh4~IY(o\Xa悦. bVL'<=3x/yF5 -fˇY>X&1 -Shل,Ŭb`+\A6dez.[UZC" -@,:0WY$Mc͘nV3q`C;$,('m9 Wn:XAt{`IƐ@-[A0] ?uwrIj+"R9":p4+f t]'aLa.`KS2<RdKHV;4g2!R\N܊%s2B=Q56OALPEIWcyˇKs2%2hɁ~H<K%\d,yIBJUjQDbK&JL#Wd Ydvrf$ flX1a6Z<"aG"Zv4= 4?wLVNyjXF>D0CIE%kuǝ#I?WI$'vlvT"n5?/r{=D43<-";pOT!xp&y(n3+^m«n"tAr #Zַ͟8$"e2 -γLzjJ%HX]bU -VPPB4,݋ЁxI> >c:ˢN39ND=*w45AI -0ĵO^{ ;c`D6c ťk&F{JKk8-iP ˗5p ,M:pnCݤpk]R~i$0E0E\FDDDDDDDDDD {\2l@v~Px#0(Rd%⃁Xh>>Ɩ5w'|6ޟ/+oVFv#PJ6١߭v!֏oE_ _.)G4'g[oXhDQ8EҖTԲo?*io$sFxܷ;sBfoƦMJAZ'Uz6i:a7hiv[zћ^ ?|v._Z6u9=H);373isO[;etnHY25#%>^l1iQt~ 'w}^ߥ^ PJ8 0+:x+'Xo÷V/kcslm7v_?%?NaXt(*u(S(CQ PL(ڌY@RB$HJ!(%($EI -K݊jl m Hjw(΄BQ%bjwPov=rO(ww75%6үNX=Zk -B8 3'}2;Eں(mgmMAK];J4ʟ~-!vPZک4RڎOv􎄔{ݫoמleN9M4@#+fq!ii26ùY@dY q@e5.dNY $($- Vk%;ᬖlkxŻ$YYw +WT+{Y@ " ˏ1xg -@ Y@24"%\yPDz'_곧˞>]Vu)|=nZc\W62N(Si{/%Y7*Nvg?˳ji_8t:e>;JZ;}FRSoRRC .(B)oRVYZfziOO{Ojksޡeii8i++|^fP:-|4 B[JӏA6tt36Ҧ>26ʕ>͏GhDGK>O:sعm}ܳǏgᓗ'> -۩QXrΌo _7鄏B&eIJ+|>ZV^ig\J.}eW0뺰?+m& -ކRzwQdž i)8h:F)Di?ۏ]oeY'7{X}2OmBrDr:|^yZ -;|yBzCc Y4Pu݉36Hv],Kݦ$5N U7, R6vO(ԍ:7}jwwv<+2-\^O(, , , , , , PF"w/{3B7飗|'ggB~8hnI8t)pƟOcPD7>k_B -c%TSgO%%5tfne7ʞPDvB{6qFn8CֆJi=2N.#Cɞi TIkGݛ#WメRJ]Y};}<>>W>NK{L,#[*K'GZ2Rۯ6:anwlnM:;q\FetG9t"DxVz .2`KL2N"KEfBP2 82+Ł#[I;'<~v]`u]Quȼ E{.oBysDۺ*N>X⮐ e^vU$D̄RU >P2̄]t>L(qLL} ]]L~2 -Q~MتEYX]yf28\&2"*z4ik w8#eVǃ4Vt^#.^Lor_&2yؙ޿{58fTYHȮa܄BA*JIJ#s|3j7"iuĝD TYۦ`}|mZm&YtX|iwJSzoOԥGnPRngNء[ UγS:UTߺdw34[8ZHk۞PJRLžhG~ E'*nJJz)۰?62՛<3}+*[l^:~z >|_{GY~?g(ؒN У˷C:tz:|YlwŦFmn}~Q>o3ro?9KHosj;:*HSON:,, X[RmznvOg*k}b7v3iџImcwӟ7z%HD[e} FV6+䢢cHDYՉD  m$\Tt\eUqӵb6d]$YaUVe*V: Vi+v\E= 3]X'c36/Ӳw36VvQ(tXۼ.l&SkxBodeɪ3=L&Ӆ:Y]vŒ鱫MMCJoӎEx<IXL$AFe(r4RXo֨""gLZ4Ie'RR↉8rMeȦXX%L".6oFC 4 BFFFWH&dx!iL܆$YצyYLFMUB\\5!k;mNk*]q3I׎"q]:)6KJ#*$*,L%QL$TaAMI$.dEBڃFH"i#B4bH .#mD*$H%QfEnmĹ&& L&4aWY?V$Pk  q"JZǝDUWUXTqWlU *.VuBյUQY , dQNQ^;AL iOZìNgT;eJvXzV2EE%.$]$#YԼۮ (ː`u\wҤŬ&tV  :߾~iE#5uH!om_Wj=V:62誸<fu.uPɢˮʹY4spXBOWV*LFI0SI=ӅH9k3U`ё,~ `'U! LUaa*UJQ\EfuYH* \qe f36]ҺNxt$YL&*4Dª{eLd weUȄa$>VVa]uY]Wa Jkdm(mcҶ·"dUSq:zsŖ)Յ־rX]RZ*mZͱV wOkܖE֩RQFВnaTI(YZlߎn[VCJWh$!Dt4vuuxh17 ;yt٥u,L$iٮ=#l=1i]6\(г -Ӹ6NnƆdyI+iYh{n]YBmݟrotm#˪{7c]kd: dzם1iN#YE=ө>;QfL.긋2P83okN Mڒ}+o7rկߝZkJٻln}߾>So)Oz[[kK9ϯz\O3r_f{B[qyݮaqQyJ< vH aqxb XX& Sx hc=h`PL.m@`4P&!TpcPl2h!_!Ra0'j -"bp'  @Hse,I!0tHAv]^R5 mhІ;}C $/b iw 0 BX\`s8 a -ES a VNWD -.TB> @v%<2DlaT6C5Fo ?Śb1;k#$)!19HSi:h$R@Q _b`h b2ppR!0b  -`3 +/XMLNode(fxmlnode-nodenamvalu1 /Inttyp/ArrayeTurbulence;childrenbaseFrequency(0.052attribute; ,(tresultstitchTilesnoSnumOctav2,feCompositininSourceGraphicinoperatorx0%xh10id)AI__idywwo/Def ;fractalNois44GaussianBlu1b2stdDevifeOffseddodfeSpecularLightingfePointL-5000-yz2zstyll-color:whspecOusConstant(surfaceExponek3k340411litPai212arithmetMergNod-24BevelShadowy4Morphologyradiu1.iandilabbb-d225DisplacementMapb3s3yChannelSelecAx(RxfeColorMatrim413animbeg0stotofromillfreezd5restaralwayadditreccumunoncalcM(lineaN5cc8c21cc8ccc1ccccc(-5CoolB1D_663erErod64_77remov1(1 1;20 15;200 200; 15 20;1 1 repeatD(indefinspliRNdckkPixelPlay50 5;20 20;Diffuse5yellow;green;blue;indigo;violet;red;oranDiazimu8elev6d1l1re010122red688-132y0.0.tat8x0454oFloodfloodblack; opacity:dsCd35501(0GrayS,IRP(uH @ R"F,[AAH B`(A0,[my욋5 4.恺[XzԬG$U7䵘k5Y<47&B~;d e禷X3& B-^pNJB.ДCfT懢|i,`&[G_Q~R2dMd>+dB +dsZ3 +~6\m7 ON7Lr N L6! 2 XcIgj.@xd_nk*l'1'ˍ1ʢܕ>3M}^>L,+Eʍ=˺|A/[ $o/,KF "$lmpn%Xa4e +uuKNt\6M(Q o-u)D~*HvS&󀣊˜ EH +4\cʵ+P\[/')VG #)Aš)\){>؛"IKbŠˤp [:2yN +"b^ RP%My͜\qhԇLh(,M$lC&Ī)nDZ.(l&)St45 +>"eRH<73^ɟ + ,q*``Y٤:%BxAi}@$HzI9*fW`ߔ%%aeSKD˪M83"زQ@X_7y'Ӷ|?;wQO lWGĿ͍P)lƙ;j(<)p$$ +AKzMHb#4Mb&",,6J]%\$l߈FofNϑnĝ8{ &eBw[اv`KC,.Q"*_ ֥ٺ'7~w`D ٙx. S/&ExU/3FBdϪr|΃H6/7/Jg)i1%^*2 OE螇9NY8ጰyɆ&fᇠ~坁0Hre0BHr}J6þj+vȭǟfxjj+Oh 2>iH_fUC&-ag v^ E>b +5H\Et8` o—,Ьu7UM0N +^t ޿sO 1>JᶿQȊEhmShd| \bM)ԌjEƃ힅ie@''U.S6:_9,n`Bw< ŊD` +MqeIIY6>ۯ{ۋ_ntAUN |.r +pIyZ;8"È&+3X?),f D#/}Zw)q@-tl 01({JD0 bhD|lwSof u7X)4t QUtYӔE"g#՘$("0`FnޑDa<%U_TDS}&bMF@ӳndd +iS)i dN8rt0`j cqCLe +¯_]VznmDRQE^Rm`D͈&F28KEL]c|^!\傅D0\Qdr3p!%9tJ4rmf:˖ -g`̤8)Int:,̔]K<-tX!ar I0)( 2Ji*jW."G .D;<Z-6mѵb)ݝùa8'tgJC'9|{@^U^Fp𖸣<]4,D#u5x rSKg ey2[( 7*ٖ/C#5B.[eX:+2`eє_XY^C_%9)6w62Gi=P_]"Dr*;v4 ;w J'"WK $FhHFK)|(k)$.sw J!M_+(U}^ܐ) +1JeO~Kȑ_8&ߤ4b5B +dȬtnX袄ˡ_xŔ]cHU MKbD1G%tLˠ/pyd|4g(.ShY?)Is陰"}d +O{ %b !9"dHR{AZץ%7U1R"+$A 0v=4ea]2g㌣>#&,YBW kXJK1k,p?CJP,I4:8@^RJIÒ .eiul尖sOԵm>wI&?#aBR{+!#3;c h7+4jGW(9dral*OG qY_;[# @)sN]miЅX h@w*}&2 "6_H \42NԙE}%5:'tq<V2zlF&T!|vĤDZ'Eh;*:0+km7؏CMmT1҉{ c}3wɔpEH}Be_-NEbWҜN4ws>9'in(LhKQù~H-SP#yB_F1ƱA:P^zqz1eFGzV 7UwY<D +#AU/}{=3DxG41ryabfS:븆Xq8[${ ' -l΍Tfp꒚w:3 +E@Es(((8ƶNc}ͬRU=Rʔ2@Ix5AKR.J>*w*Wҩt*rH; m:6~?% 9)u^N5N ']Ea}]awϗz#D(mUZjaG׼i + +ˏt>')Y!pJ& +LR[NoRCvToh?Gi~Eٕߋ, +F +%e8m۝|48aoRFFJ&Iؓ%H7K?f6.?ߣ͔>{GzKiO(λۣ{Xڒմ|IܯJ(e}t^Z纟TʒSB;HrA(I;ڞ^/+eD^suztcn-߲fnTm0ZJH_nhCj}>DrY7}=g'>7%s㊲kӹ.6q6~_ӫ[fϽWN2uZ~)sm?=?(èHH$IF:ST$IT$MR+&u* +|>T=/_ھDnz?/?jWN/Ǝv^ύT;뎂H$ID@t#UJ)Һw-HJ2NY| ;kd/H drڇ]OJ]>awdI&%Oa>} #n쎔 }fwZ} %HOl;Nu3hWٰ\2.#cT4NST:N%FSTB6\73PȺ6v3`w$NeD4i N~G(룵g++7U~T4S(s|s}קST:J"ܝʎQp%}: T:N"0FDƥ ɄL+S-=ymr+K8k9wO +d:YRP>7yF8i[m|gJccVG(g[:F~OBI9Jt0NJsV}Vma}Or$P.B%PG+mcemJo9+mi۽ZH7dѴν6l،LH>Mu+-nǖ-8RCisOiW@ZZmϽ[jy2?a*I& }JnX_>dc$!}fR'$eh +eZ?k%i?-OرYBv4> _رcKM6)"))c1>]2SsR\>]t5ܕ:nIc7E;|_FB7K\~S>7sr9ܤhsns7$ti6]mőʦrr)޼QTζFX2LK5}H|,hأLH~q?GBk]~$lt/r;j+ޯd[2 ne6T ,򰝊dѡӺ;iYHí^ NS~[nD0>PKK|%nakT:NST:NST:NST:NST:NST:NSIͿeo Y–L$mt2dL$ k?͐$(|HI'3 %v-PLzԶ碥[RZh}>G+[j]>7K|%d/%^#ƖL*HWU(kg!L(o{|? s?cҟG/seCO2M7e2N\rY6[fw,t+6T*̢"7LZHedF.yvr(lt iGMdž]?ѥ pqVRJ㬕NYiW,RnvBk`4n:f8ܳz.9cUR8p"XDa2+vFigw4b8nZ.NI%ǯNgo퐻S:c}KeWoK#9٧Ww<)wrm7?q){sn3V-u;ec8ڦ2])!*%egN:#wdkḯ,{W+cs;7*#/ˊ8k1'h]r}֯M]Bv=2no ǽO]6Sc?YRQWk(鬵cʵ~wdOkvJkJ_e_r*KjcW+ղhc8H};Ά[whklm-#Nwzz(ac4NF 97ȵ%?3Vt̍8v-mVNR~#fdw2:gV:%V1ѸPsRN2Bvi;dkZ:JѸ\-s:kw}2)#3SJ-^nR#֧[5N/8Y +#h\WNt:iiqF +үgtqre[!t1 ٽmŽYҶl%F&mYʓv]![i3?Fhl rKgol1ױ-5I[8ΖNޒ{ʈ8{ۘKw}ur^Omua7dҨVն{rKSz]l6lKv;%v9FI wg4d2"R%K-,d"mQal4M[!An!'qFMgvgjgZڮ|ǎFqJ .ZWaSH<8h4MP]h@)Di"J(ѴqqL>π >u߆]&Z?-e~y%mRBU +bR@]dUd7MWm;:CX\`V$pi"*ӥrdv봧tȳzeWncedّپe~u29#cWmyJ^gYg*'mȴ{33d6LJ(Kje%ӟƟNYgHg?Ӯ::c|RvIiW9Frw}fI]j]G,ai hRY",c>..bcnKr{Yq5\hieYۈ,.dR6o!W*夰%8ve]\uY +66q\dR'8m;ie&5mY גɄ8̚D6ڨE2p4-N0DdOdL"ڱv ;v.-I:Nnu!=s;d٦3IMg6y,^4{'!$"D@qMiWd.weNMHTEa=wMM"wPc 么K{wq.B2a4f.VI&ғ`\HzNBJrS6U|lctә4܏=iO,I D5CZ߶7=:vU _B+t홶M,)|'OH)#SsN^8POrl+6r?-.Ym+͆n %Zn)Fw:Bۯ;aԛnmڸLC6ڇ4:Bl!a~ْ_ms|Fw/rj8📖mCS2t +碋=!>׆Y}=at%dHvQJѥp[H6T2 2q +MڇmҰB&6 ɓiTφeXhtQX[ + 42,ӈڰ[eTX\Tpxgd:FlMˀ2b0i̓!( ȸ; *06:!!Ӹ% 4aXv񰨫qp@<8 0g;{kȴdž˸ PP[e*൉Bk( +<%r\jY'J+/f][fݐ)e!ȂZ(YH]u}`Qn, +Yф]K`QN=Г]ps/mhYȺ(°)Aߜ"i8"״BQV՗J(d +F]Ѩ +e0nATHÆeg$(ꋵ[M""( + +A.X@PJ+3XZqŬϭZ(DA-5`HCkt}+4TVqE#dսBBG ]ܰE,4Y6iZ iDQ؅". +.fI΃uG +4"%_ex6@梂sQF0sj2z``Y,-pZeT.5]l"!Viօ[aRBls]wz7 JR\Ynan,$ڮHglUaqZ 5IE(ɺ&gm4;#n+ uM#..bͬm"ȣCGԵz/i,Dđɬ9 +2ʅ8Rf,lqвMi2wڏ[vzg)-ٱgeRMU}8?yj_ԭݟ-zSO5M$)ϋ㫼]EڌYYݕn6mْN7J~TWGkwnt16ޑ/S֏ +'?lQK㪚ތjU=oN>=6-{)Kٖݓ%'+weղR)uV*~=Z^>U|LIj]R*+t-iZzϿEjO~8>KQ&6kiOJ ݻϑRf;U^}^Q^K]#'+wkOK抢Wg+"ۊ>-kUQۗrԛe|QLܔw/?Csj5Mc[m5}ڮPϛw?z?y<5ǫlsmiRi9~Vdc9w?{FqK֯T[uk?]y6R6<##WOcn%u9[NؒVWO]S[~˯vzdtꓪz7z}_H={^ʸۆ^]>TƮҷG#=g_VU=GRV:;2kDYGqݎ ^O[KU<4*~)%#p& +6jPmZBo]SFY"r6#Җ<:>6\&Ovq68*>*2a \ITVM KQY'q2BIͺ,ϴY4w3hE)$&ms^wDj8FmlFڹJ2ϦMξ3mlʰmWt5]nv=\wFjH m+mdVz>}ڶvR|*T/!,co֎& vE[UrϦnm%;~YonڴV3~lVJGH9vZ-SƷ<ׁuty8F߭NkʒJ*+s3r׶ղӟ>6?-)2nhJ9֟V61l:_N)Zնe7鰸sG9oe1j_FZgRR8" +ǂ@3!FfAPH`<4 * FvDGu9GkPh&`$2Kk*2LXL\LKA0e7 82E ,*ɃK + +"XXHXH=mLxPyE[TH& ls)iL`@0ućA8BBi$*ÌH&Ƅȁx0at̀tLh`9`BbÁc]*10 N؈2e␁Ee3( a"TLCƅ a!AH#d\F*;:L@Hh<٘͏4MFx[i EE2,,F:*TXP!0b5X "HX(𜠑>\1"lsε0@XdvЩ>d+0WX$*Ƀ%$DMa +&ƽ6*A#HbMi$:LRX!q>T̡$!`Q#,D =`Tʀ@J8>> @8 8L +.Xc418B"t +9W!""dIi ]*hR5 + Of@_+ (hY|bw "SQJQĹӡamT.h>.xi""O*4p/@eAH&""FP`hft8DhT$ +rCBaBy+ɄX<78 +P" +\I!q(9UtĨJkhVL6"6C@.hs; ]EDqAfd#k`d:Aq] +0TB$ H&4D3ИbǀpX`˃@@i$>*K^L&T~qy-Ғr$`A?"042LId!rQdDHH`,4W +endstream endobj 271 0 obj <>stream +e@],tI@acbp2X*dR $PM"Z "*2,|DP,'*V۩㺨Y不*P;YXpХ:83F)xk *@,LW eoWl'yRVj! MG"Os`5-8b/wo㛙J/˪v + L.w%+H@<S6k@ەF8 DfvAB+)ԋRa4=u^qYr7 پ_zX%=GYZ OfO A Kr,'%dua-wcqcB+zXŏ:[-&#oJy.Hlhs4A,m +WNmF-@TU97U/^ ydw𾳥rP +qKUOB-PtAKN2L&6QoPftNtq `eAF0Asu!(89/r\Wveq~T);N;]ƊpK ʸ}!m%tY Q@=jjH9Ч‰@iW_ I&D}JoʔR&&fTҘ:m&&o[ףh\I_+ŻҢ`4;y~v4R yʵh!9YR* 0LD'nʥۑ55͏h)O/[AL+I^4OOMiB?!-1*2s.jxwr<9G~~OmS5yN:BL1J2#\Mq ] ZiCYJjzEM hoQz-d232dޅ*[`so&w#]Zd?ȿK՝Lşmmvg{!do~zc>pNLkb0ed YydHLqD=`g3΂[ŵ<=`s"Rdyi(N</ZI&Ts.ӘdeSK}Bl0z0}f-4!>=w` +<Y/&kn+.o$hwgOgB_^2 }/9i[nt6\vh>}G8Y; +edr'ۭInz՜ 峂1xj.˞I{ֱ6ACFPƠcFʡ7F`?p:^w=4HM.wb>:x&V<ݰ)#m9h#̏Խ ? ]n'Nz.J\\ӈUUc %)/X`\{zYC <|E&F`_p)";4 +=(&#!lY3&ɕqmT9sMŀܦfKc1r#-EXSko76^X\!i0Qa>LY-i&@.{YzslH0Qx ~ҖA/حR㝒$͒E'+Khg\KF5[@[~5fQg o4mu#mNґ\Z΢g*>o +I42$pQm.2n 5ifXLʇ| +YH&-p=y#%jDCjʭ&0Ss9D(@{\xX|w{5 swvJk/ЅO:~wݕ@#(RJQJ]p)0,N8HĘVg{$9J㳀E?-3ۙmj:Li3aVďQSgHP]oѥ ̴)LLR 3F8rM7zߜpn5ƈpkZ{pHWŒe c:nRx5z h%Ӗ^$u_0Y0=a:C@fh)Dek׺} UߢV6!ރ B?IB6u"%tm&bꢠVH |L:|1©EP@)y)E! {Z1FoV劬 & wj{IRcuPIӉ<.0i6SzK&νo<|n +¶S[:P)º"3`;8boMcZj݋0R+Ҭ`t?n˽,L"w$}%@0ǚ1ׂx cZ#Ύ . ɑ烱2pg5ho7p.@55*BZ- +'̇rV5Nѵ&U[f©$1/3%Ȫ5.R8Y<ʕtH_̬^ D0|؉i;% NS 72|e0O 5BDpce1'wj^X2YUDhaqArhnW@jd ] Ƌt.L0WT&.xpt*Mijؙ{ޤ0O +?O<`u %[[Lx=+ +"5([Z M4ή>˦8ISS:D)}>9%wKcěa]݀8}uAv[Ў$Oܥb]B`"[;TGFBlŢZ:c6C2EoD$P9vXA T((C0ujjWد>&AB5uhd,o:i9Lr:52lSFԑ{ff"̏sVzt}XS(!6ǵ /..G.TLmS|n^V\ȃZd[7Iz.{yܧIR#@X9'"JWy)>Bw7ZNo-#:Lv5 'FҰ+ |~h,˥8%Og#kSii,gRVC=e@ꌆ~:KTsb\){b_S>6 E'G8ir`|80~_ ŋ~_JMxĒELZ<+Vl@lngɣGHC +;ddY:5I(IWI2+D`J[zPTHx2ބV1QQ;K Xнv!inE[9nƢvrL.]Í3ji3! +{A"HH@1,DCtzF74שoo`jHuhɂJcrXd_u}Fh{GIQeN +% +Q)vlo'Т#-qwBr9(yZ# RJFŕA[#[1Ky/ 1`֚Ce#Ufl7tlgL=LG\nNt`4>Sí˚N~ Ћyx;@ϰ"uN|)& PaoҧCc{I;o{}V2}q8FU2@h܏﹗dcM N"3-H&3`C.GSψE=3$o Má#x(٦f؞[BddM-Gs/q._ {GNUh):1ԉ-u[>WX[3yOl šÜwn"h/j@n5i&4ػPd&04Wỽ),'z5D<KvLrJFM0s +؂lj5~4!x1$kωXo$J,Tc# N + ,~E+UؘzAG{VݟXVLt!k +G,"*iՃ!fn"c io1GIY`r%S3ѼZ"C_M= wh2$#]v-P * +lKiedQ硰_+4Z I!4aB:D"n!|fy.*JAh Q$um^忭uhl{ ۏW1~:;"YY)R n%kp8EДGFʋ:PrE~ dh#4UptRuhaqߘW@dr1$T5|Wx]qd^R".uL+Jto;G$)%W$}2]VeTC3vwݞ۳ʀ2o;7i-gy% :t! ^e8A)ɚu՚=rqc0z"%v.`(7=`6ݶ @OӦx/V=BxY9T6# +UOF{fq0׉y<]$\sO";hy'ťr|8;'Dmh>nV9&* ;;lл:4RΘ;voY<"MASga!_g̋#VVλzL뛈n1QHP%nFY*9};r}xeaWuomEïX)֎Z~Nt bXg20ͩ1015FcF6y,oJ!0Lj@q;U锜mBbr +9u{21=Eo[gՇ!.Y[Y\EąFig\ Ҍ+?RhfpwQ/nv+q +ŷ Қ/`w/ eSzL^M8+4"ǀ0k6ヂ$^=M 9m)%H` @*R҈ 18xCyQ~;5v$n[OqB +u RRAtE}9Y0FiڈÕʎo ՝ R'y!W8dwfNQ?KU7=y D݉3@zS>F@dhkdRը66 o +h]N[ x# 6xW`1MM4ECej=*pRrY 1|@%ˋYsZT@fۢv'ēf$٦) У)BF44HM]]f1G,eB >-RxM5anb%"@ T ( m +tێԈ )LX,n}&FF˟z  r2KH^tr,Aml^ܽW P Fc@X_=بfg 2(3HSjNa豅e_|ѥ:!OiWݑ䖈YH@? +%%}4Ux:d!D{Ԭ{Zj5wL|",f֘A֪F ={ ɤΩu ߨ0NTiuo;#ւh䦶-Ė[EF{%Q7f8*vDі$]H!L(-}m#W;N+iPz $N ͗÷Ї·EJn>H^ۡ ʪp-k/55] m +[{@bhWzݜ^W* Xr"KT|; wI2F:Ba [9IJ6N$sڇJsEUz%^Vw7ϳt/{/UyDK" +H,tz垸wb\^Z1Z곃/ &k-qh(/0P|\ճ(B +0gҌϥ^҉lM0YŃ}^6B|^ eT2_Ն2W$= S|MtIeѬ,,U;0 +՘T mjhcanE˹p<Շg’ #{E5h'D$&N[e(૔(h$cBI{3_`11@'P$&Lgm. +M᤺v4yv\LR75ť>ƆBP$\M[MAZ1Y~6h +FlZ!0Z +MaS1ބ#)ߚ, a8j_$d\t@QmMbX7rۺǛ # p&05CҦ 7 %PB\%:yƕhBEmf7J \nm.IG:'DMeJHȲ\-w]swVQv,ܽJ^S#g}tB5'Lrh3fCtRL/!p>F)ſ\VhmyL#enS=0uo)`w~$4ښf")%U3.AJ@sD +b ")uJmH"&;3S tXw`Qm ԯ/:b ~ua*L,I/k\7H8/dvhd3k~jtkk}b?f4Dh?Ĭe8,{2LQnޱwREj \:5ȓV]Zr=Pь3kK6I|ծwE$DŽ[tdCQKTVER?B8ux0v˃Y$,- {r.`oSː/_+0 h~7_PmWAċ I4,bNϊ0d)A8t`2B]C}FTFLb>XaAxY1LoT]6b?Ҭ3e/Ԫ^^'d[- D_6~r¡\{B4UrihjlѶ 4FFB8}7ދг/&M="Ɣ'obĖ=0m0[5J׭)* fO.u{DQ&V)h5<1o>mI E SO%rϐ5FI$ *y-bf /<7([߹0!cw/(W9cFtP%{r[H;(P}, [7{;"ng yT}ئ[7st +*1@U'T+U|Թsr +U/5:>M FTH9.c9Ĭ 9Sʼh [ +`l+#~`"K%W1Aj23'!UOn a4%s^Q$4+E[2,_YT۵cm"ߔ$"7cN9&Uz:ܡgAcBY%2Q]Ӑ]23Rû2l)֖ͦ&VMľW9^OazEɀvY!783i0*SrUBt=ƍqH5٦߶dX&([3 $NAzbK͸DvEwP*sL4ߊhZҰRR&"'8Om\~*v$*}%P\܎VQN/ +it/$:M"*G_)6As\}u;vqm€`ʐQַ {epڈEgP=(+f7"0B͜|, &gڅe%EYǵ@),JVlՐ + Vke֣pt67C{Ak ߢ]Ͷ$taԀݓMn f Ai8Y37aV@ҵAp (-͐3C#XsN5h?_ Bwۺ`@ C_(*%1/&t:DIi1*m 6Hb.2r}NGF~TѮI,O7JMuAt nEű9:ZdzgȧޭUd"-!\XʹuJd KC .Ngl}p$<3Lа[#k"exrg?gȻ窹Sl:[S75`i&^j{dbp֗0 GNBcÕ6S0V}r}f47`m[ԹOug ȉsIܳOsq3* Uc˂y=mjR wEHPZީ}ɳqT0_+֒S5@iEE,`xCn ȴW|UGs!"o-(:*׫([poZcЙ4~w1&Yi_2KwL8* *gD+%\ +Zyá]S +& aQ$k'tA'Y>DWAcX!LW WcwNx~Gn|kNFO+\G|ߓ($PL̕DPX!{Ȱ}~/.##kvFOSrkcD7g9lgS?e&seK2 +)hL~-U4B6}6zK W:TJDLzO~d3R[fhMuCO1{>lBl& "oR=Ά^\V<qo:g8GRK!7'eH\:/a4eT$)ub[b qOgy,Y֥9}."( FldkfDKfunBָ̔96Yvo')*_ˤ6ӝZ͒mjb h*pN@5ϦT',$vLGeW8+>k pIXb&Vm cVoSY"BSE[((Qxƽ 3}g0n:^YxQ"0--%S՜ c9/Bc"'/zZMWzc hgttU rVT)@D~#ㄦiv"&%!׃j3 6`Pdr?}; #70I\ksZ|)uCNTۊD +j0zx_'c2' aZ'$yhd7ْ4Ź$127^ׇ&6^A9bx~J ex3pB(Yu0yW^VP_*M]WD>CS +qbC3& +"5 +2DtQ@Ѐ*D T~*S{oS\2՜a@"kJ,\x,'MfW̃qXi*4PCC.hl3v#N=YLI0aKFR={k.W$Y2.\N#mcmwL.6er+OuG<#{ ]MowbF@IrDI(KְZG߈{<#p +0o1gqT*+ +zHFuVD>jC3ݸ@ؔx236CH;.5[6 3Q`t9'VLB}+M0WSFC8Sɍˍ܂+ҖlFxݜJf,y:,lX1hY0ҺH,0 jh2=caS4 _Z6}Mksy4s$?~grcx$N\ `#AniaW j]=>ku i:4#G 0JI27ZCl3/gA-B3꒏HHRMRܐ%!ΎA#I;E%Ks(eFPG5PENO)G4ӑ5Cj뙱(5EƇi[KTuQԸ (~z꧙$! "r&&Y3@}4(W=Fڡ>bHW메 +@OOP]nAK-DgV]0M3!ū(!`Ȝl;E%vb6W_o@5:>~PE@t I\G0j% +:p< Ba%` K!Lq,),~nR`I'tccA?޶Hf68,Xk(9vۣe$3 8 0=!&qTZ #r(W3yd3Pzc6-=?\rN4W@"jAM[bXN5ÑAr=s|ݍAD%[sxjov<!*m\WpP "yL +ҩB%W֠+P^KtǂYpQt]$ˆ `m/wFZMQKfaV?V;+l+iTIR u 9›È +.Vc  +pۏ% +$ qߙhСϜ> vqLV+U(ῂEb% CTv}!n6L6>D7ɧ)yyٰFzS +XJ-*ـ1@E/HV a.-Esw(H^7i֏FޓLNNq(RJT|䦔_"^O<+٪9]Ah#@Jk2 bHJ-%w"e*@%p%(E>dm2{t$oN:~k!>G=qey0jdOTPiB : "37lQy<zW-ה?I/&oj2%d5__ne7?Sv<]CcoKtS{u},[E˝svS| cR5Ak#$]G3bdcn'18~!B ,H`% Y:_yopQ鞁5<_\Ix +<1*6$4$&oٴ C QNYǢ)O@)ʹ4l2'@<݈41\#8ǃC"5d|tO˴yg,[ɰGm5|؉Y4J5n= +f."|s*UiPp<~wq5o]CFpRHԃ[nհ$6ub{;WBQwZ"Vr^A"Z;R3\a:.S)S +; kuc#kqeF[03Y-GȔ;l1kM~=ő"2%յ|*8mU6[w )6*c@Fw U1[νp̈́%. +xD}b`8֣MB-4(jcl:+A.3m6+%A()$+2ಡi'x2?0V*Y`.1g-JqަT>N+eUP'{&zKFqOFmH j`|WO)F䐬Ɨͭ ? Kv7E$ut$ r X)U$S||ި!_Jp#l R,?LrGY?/+]8 0ٯP@MJVR[QՏPA쯃 xHOS"H[n!}^w74$^4øq2T)HƱM/q8.@\,}8PDc +7B*!uh'݋++ƭ8Ogc2bfd8qs+%(Dn_8Ɇ/~.Ѥ\81mmҲE~sQ,O W8Y$gt8{H=w{gjj{J{=g]hX NJm(XyJSpڼVݏ06t*3LOoWqB G%w2|g挢+e+NJpA}uh-wq S㕗OYmGdօR $ByJa.ر\f>#oʄ:QBr+J 2`R$G+jCቬh4+7Nj_DN!  0Ì- T-qҍJ!8.%[<0qc- ˓!VL4g\"ݓ aTuBh7DpLtYKLxєK*k0!n#8X n *ᩒ'нy<6vt#ZM ͸&Z¨>ma[eY#nݹ38 7wq䆁@o0WRY ׮}*1_" 7l,[He3!? l>]< Q=cZR2FDjzUiTYDHNڳy{a;}b CSKi " ؤ1hD>qKp[| WS1O7)SK7ymQy4[&roqo +!6<ͤ3Zǩnc(Ƅ&J[kw-E$y\(G@H)cpy&P VYC$>DqYT+Pi-BW5O;Es(+i؎H&CݢҐ>9$Z>Kd\a,#% t/q@. }rɺAhɹHIN4lܡC>8Yi{4pY#Z8AEw(hTPz1!վn[JW1 U!#ѭn Lܠ}F<.ѓɀa0'aU(9iQiWd!B#R%Y{opt!Cjb)J@lE2]IG5d1ܐ%I).B |-_]2cQB ,AZ199)4L(&hVsHd 8 >-?i EXZŽ/k{u~\A +*|M%1x9&z@v] bd@c1b}w87`xO.n$.h^\ m65.JVPqp~j&ڶZ!"(c}  @@6<1$BAG M0Rbvd`2=/_sDwTr3t X+-aS2FQqP8OmG@Dqs@E`3YpP\mdsh6Ms-zcCd/Pl'] 8+7sh9 Aڵ?!8pf2 ml,4@b5G@9IdQRH<*܈RXw*)UA!@f m&dߖj\q+8Ca5mC ("H)Hg 3 +7o ˇǥȅd 99G&݂=Qqp{bEiH.n@GbR@@'f:| 9:esS PUjbXm1eHFXkD& 2F|La;UrG"g# +1[TT+7DEb~8H%؟ͼ]o +Z7BK6w@$^~{h3@ Js @X~@3Gz aq@5쟵֗m㙵ԠD`"TTvK;@ĦʣҊ2ymŵJBRp,>AϿqMNhROT{e55 p3spL^>|h94Vt%WܬU┸rk rrrq9ufH< 2e.q @2P0ؽ:і:h=N̻,>ABBȤ[0ڂъ_ژeDD ҆rL'b{ hbV\ ,^-pjH&| NFM)¬BHuwTpf‚d!Dڐq{& +mGHRV)|AJ,)q| ?9j1HB`I۵vVo${YFg J6f#$!0اDy 쓎uzvЌfO`4qm`A1$4&./ ¼0h]6[2;?W34aRZP=%YD: c%YFqDj~(ֽV(ֽz^[5@Ig#M@OQiC|x(!5V1>PMf47L4? s PBv_$I 0mJ)Sbyu8aء0 ڔ&6 @@.&RJ=8,؅  +LJ$$)Y-{IPn 'Ha(hw %30K EharL2ezA\ %lJPap@M(@= @y'1`ƀT}aбY w\ya@SI +LT`SI`M;`th TKTKX"jI474!@ں#k[Y[׼(HUFLCl*W )0:) ҐLg/2X [6hHCKSZB +Z2FM% *0bStS7g1vtvL:c\d5P)>%^bڤ k?/aFI\ՄK +t +o~cq"cx3?bzŅv9u6/f\PoG&l8ǘ6 G^J`xhN #e K%D(3k&%{UZ Gf$- +$('ΉFXDc`1/K9_5 ✔6f#Ӑ+ % BҸ W'mp478NxQ&d +hOiO:#~a1;66(cGܒ|r *^V3^tM誠UA]t䱘D͇R- ID&}L`AF.Qm]"}8X#f +!5(^[3In0QvGuGh4D6}jlC+9tA-PMC=lPH tf`Ԥ]E&RIPKFvI,ݕ09#D|3pt(y4m q#3h4ிOr3/X2'!Oq}p.\"0y߼^j'']B܋>.-*T$ BxqM mp?y9 O+n5/nHAv3ǷEn#/ەtZXX%Q +u6s +ȤSxoIVQkMӀn nK`U֪"I#o`u$Lt%H͈.IaD(~ WH&*yOM`;i8}O/> +U]%:BR m%ﴙl̋i'*ʤ9+阔 W7ic%_ (%" $b:Pr]jm8Үݽ鮼4{ar/]WQN7 tIޠ ƈb +nW[ ey׀([QPxчUrb-']Cc^֩7þ@pq: ˕OdZo&B\cZ>"|~fr6+QI[RhI0}&OTpphT8ۈ6߿@=qI;PI>\$&K1%씚$Ǻ +Zg͔\ya~ib6)Y;1~p OS?ɮ˘A@62PH(G`A!mMes~Ty!8+(;HhEGj_INZFڝCJq P\Ph YAܹ0]9|<S?o + 4_K *tCt5;X !E`<,,:@+ +ګ!KAzU7U6u7DC ~ĔheuD["`|=ikt.+ud b]|8R6G8+#`@KW!7F +z:Ŏ/lҌmCڐց?Eu7١\h; +c]~j냁88J6 +/nr+VyȠyLVj(04wH(vfmTFwc!I\Oow#htskQ-1$bzK04D99i5[-tTcb[@/ug;X~PUV1DAK~C*s +݄JItv0 +A/1FWKwDӎ6Bѕw(P^gEŷ"bli|T^> Q#p\+=Zys4 płKW+6G`KtshdA +++Na%O›'W5˯\eLܖkavvC|7a=iOeѹ[5=د8j\$PlV7F;l5>կ84$Bq@Ԯm¯UfЭ,$1i?<ͤc;'7SV('g4&B1-4E9U9y~8W& ESAMQ++-L5_`F +ea_"?_/ j4f=.{Õj! nבR92iTIB8|mmP$%8|&`! ゘F OGګ2w6R\ "VW7WeU]'5fn}ƫpsx ƑE҇[`nnS} 2C ֌Wg 1EQqA$_HO1``wQP@(Hh,oRëF'E+hRJd~ xPr+mr7[krۑK"I;Bt Q9Ͳf)ghyTAǐܓEܦEF\qҎ#_JV97{1r= 7,/ьq#;!nNG>!258+ROXMst'!p“ݓߊ$}tdg|G2#m@aKfԒ1i+(앳s7LQZ@l7$qրo%P1qѪ7 !QmrKvmJE uRUycq +f|,}|U}jA|LyO:t7h*jN +)$j@8 ?4P[%j.ݒq`[*|6RLQp?d.ޣ"3@-;"h|IA*3^9\O +c6 p?b`Oy~ӮY + {OAO/0|afZu%3D t_鎓ܿ16$'Px/+W} `5)\V_HNB%k:S D[Z1O6@U=,"z +oў U ޓXP?h p6&)q0WVV`Q}5CpbuPzX4Z D pT›L`Ҏ=|\PVDUy`q*$fpjF|QX+!7w/wYPHw7@5Ƹaȼ09LOSV6Jx SQz|D#ֵ$Sſx3>/7g^K3OIK.XD8|%**9vSaV6"(L%?9VgHZ*<<{@6K_;rY a8 {uZΉ$0: 5p?2vA߼4R{]_Jmtc<6# .?\i`{m£jts#AwBV%o馇 ՞Nݏ 'p67`5!VHc#O! >*g f[&˳8> Wґ6㒳^PI['=Oh +r@ 䰈q>0e5׌VMX} +UVx1\7i 9Je5}('$ ,n&( +&:JΞ"ׂn a`[%2Ec_p׷7Ț^T(y +vPp{RLV=BFU$tT 3Bp?[ Зa}YS3 |p;4c54яe=j@ vNf|.>ñI[05-~F18MZB\`HfFC JUS]_t\='>B p/-XUZV#b-r qMN +oA'δց n*|tZ5F D>.v@Tx|੔m>pL.AwB`gf+f5D`SV9 P?NBVFP '7w0tKzC\ zyC#{i. &0qr]9ܽp#Wg wY B[녪jqX\frds%,-9Y(qݓYӉB߷o#$ܖxAnf-Gg@ ++R!M޶P^@k07a7 (%.{j7S2v.(Ғ'H Nz[O`#UNxPWpx vv= LtܬOOqH+|<|>`A[Ŀ-\f7?s3m࿴Id]G\v .n.TOԒ0ndyq6HJތ4n?2^nKZIaQLA^uJdG\k qvwAypt]fT_62Z^RiH7/7ov8LE ҆!҇ڢ-& R*VPO)DODgWe3 j =*)0Fԏ[\ea] s6it[${;| Q+ ν#8.挎N;k7QI{~Xz v7` Q4g?H]u S@O+nyD  E +w r»V뷏-5$z(q}`p XRa|.,'*+US nTA<9NըFYzxVTx~_j0DՑ=M{BI_(3X䚿vYSN4g\M7#G=l7o#Ik!dUӞ4ڍ8+k Ƥ^&^|PĴ8]ͰU<7 " ފ?ql.$F[*?0=0H;V&+Xks%#Ûf:VmY)a'aCڦ0 VԌo~y26\amFJ_Exc`fL=ޕ7S7wZBA2pE?>8vdgrLeW)QvPekAg7'i( fґkv݅*(v"܁hi7GpҴ ;O8[܌Jg 9$XDф]SRd5ј +7тC)sPXjH[BӇ0^MAǰlINsV& >Bj&5|G? Fjd#nJS?o +f4>J!ag +O%u{.JGF<-&f, +/@teoW9AjqpaJN6~bjO Bqմ{*|19x2*EJ.Jړf ]xs[V_c- +]'UgO&r4_ݭ?gޗ]g!ޕ[60ۨKuV嗼f#!jdEn0V 0Ai6*ـ҄XH vѭUp]mF{sQ:6aVTpW] +on_wCqj fYmz\ױXǓfbZ5ykOhDX>&ZT2%$䈘_ dan(M| Aj7mLڪD?4V[^ +lw%m3e?8` ),1V;J#Dv$U6#/P2鉣KmޒܬZL,hwuPd0/"nGL^뇎@H|iw+eQx5ѫjLZ:C|iQ[ 'L?_ݻ\e o>{$ n[#UI <\%wgqsg ,`_(Q¿͙?łOͤ[W -' +o>|iڎP\/aXXxWS*ID*YQ UKW-_3SU|s_bH[ORy@F]>V?TN,N +*=ؗ;T#s\0 H`?Pl꘴əmYb|& NMϧ +A*E7$4x #5/ɪ=ʍr fB?PiɽؓXiobd"mvAJ,5`%09Y(zOUǞL׷[[WbMt'ўڊ<R%l' ѻ2Ԇ_Q ޑNCd!/I*9Waq>8ǼMV ?\Pָh&]N  t]mEUVUwi()%":\Avt(yCVep30>JFZ%ŔOH%*4"1KR® 7%/Hߙ!jXxpQxMstA]>; +,V_W7ҞIjS +AC{'mhA]UR]b`+\>J\?%ڪaQSRJ^M2ӑ}V`߉L]+kOby qȅfVGKg}Ҫq%m'=kMĽ1qI|A74A6ߠYS{ h!G<?QLh r#0=J"]<u'l7iU/GbI7ָ7\LN(^3(@MDfJ_+`ʇm I*®˳&J6l0Af$F2t `BPP|j藂“*؏qHL8NeV>r"Ɛk:,m"A!e2smצ&Yր+F`J}+MA4ɚA>ά] 2W8j?_nKkVNQM&1B"T2+0U2N%i{ F,geΰcp{7+ZWj:9^nPFj4 +CۛFs?`|M76t&1,pJ^~P(&{қ\yDybw)$}C5_ +Bz^Pggٌg3,͖ƛ0D{+̃ 6j\`K }Lyt=83yrM18M<;K aOɘ]7ęZTi݂X:q,V^ +S\I7 NmaW +7{ i\*ݛhr!|>n0>Ѧ/7Ǽ,,PBHDU@īEڤDK]< ]Kv5)IwƉ+2?^|к!Hd3LAPcO/|\ݬ|cݥ毰 /"nEAvvk >R>A$H}N,G0)ܚ G@Wɚ|_-;:ԑ=W=iCJXgd߇3e]+e6a9iSud9S'!ITҞ\| H !B5NT0\"xưS/Qx|3 ԑ^rb֘ D{7u<&BFC[ ^PJNY}Ki&G%IKε_2W1*CڭGC` +mQ|!dB3de|s+|==g<^K+0E&Pnߺ>01`yu9 +]icŹS>'q%A}5,; ߽$a\y\E³aq7BB`EJRpG3N+pQ V(˿5sq8c˒. +5D1SjLKvbȳ;xS訜,׉ EiAE7K ݕ[&mHᎴT!a_Po9eք;/U;W8Ozo!.'έ#`e,l!!xHbj +T7B#XHp'fU%kܡ&;Y3y_P"j# A|}I)iGCei'VLO/^K%)qOϧۃ?śVis< { +s,_8\ ؗXfch.D}_J / Lڥu7+}鴐0&P.pc] q-_t*J f?80XܮW**n4O,0,}\t^QO+ĻI3&;c?YbOe]x(#(PnXޮphnf{,Y3PWR@*?F;Atn@ +?jfAqM=j}w)oX m=3 +RGp,IWpxL-#ܬNrZ㸜tqJL1 +8C(yLS^q@1iG{14{sQ}v+_4H|!}U^+nPx?մVYjōbL:~8}^To$CL]j3ZUPxxk"ZAY!nUI}8(c0a/,*"]I>/KFw_auXB!xYGy'5Dp6bIl)b8K>L.ړ|FL^a_#0q~WM/LzWժ+ wVmj>8?ey7~WY߄RxN)y\ty /j]yW'gQt0?2i~_8sLBj3j)hڻu&|6HNrxR[t(KـTWڪ}܎B!Je_T)9tzxt}5={UI&nZLW:Wc>8W=4yx6)g'*51wT3z9]`ޡP,+` 2ſ1Y5XdE!8>CT>FplU"w+8fB֪߬יIS*CNduCF /ywBat*_|HCW ;8Dt~|hSnpPF 14B8Zՠew%Z3,?Q2&W*A܎F '?R)ɖq6XK@'=4J}Y34QunFyL - VgO 𡔜Ӝa׬,Ϧ7c.-_>~_^j+N@dA!ݜw%Ag6#]@V !͛7ON[>:&}U m0>Ήu1n>q>YûEXxxi [ I/Hd` )fudL4*JcG=*-yg))xUW'i u*)J D_:4&O}j$u]%D&i,X^iTrݗKE\e>0CD} \uH)*#]AJ?T!h+8{GJVY(a?h:XŔx߬:uB@N1_1΁sC+VNVt ^S8تx_V`^7]jgux[nf҇n̘3=_r7 Nk:IA+gJ'h7{ V +CE\A:=(;K\xTSj:mH#d` >G->beL7VpЁ˃B+;ǔ3_ѓJ~ʸ qQv|޲AD d6cUэRÞPڟ㾚0"-/6Bx.$tl645fžpDIF(nR{ul}Z܁3wD*HRf|-.Xtns@kY/3/ 1&eCתj)QEEXsDS5=-0~0gp3)MvMZ:0^ҏ-PD(Oi"Q}A<L$qV̇: d]@, n: ӎSgKPwxsV@NMp-WQ0q>w x +b-sWmb4iv +j7r@-TOz)qXn'vl_Ө˘^G;/\vc -3f_6h͈ӫaa5LWFS`S1^\_ C/s>U.lKP(MJP-y}zRIa(@gooUuA00Hejg2`{A8ۛ<v +|V[Fl|Sj+rN%-)Sh3FA[MjZ7*鄊bId=<CiE?-e@%8 it >|L/R% Fmj0 KX".QWT9R/kh 35S`$O^q;`Jhg;i$9qx4x9 yPȮa?*w7|EW*NSyMeyPF3Ѡ޴>|ci_$Ρ 7yXUnˠg +?lJ YMsSu.qW3(QYD$~j* 7J%gkΡdjye ]X"?J'P> 0=G U#_CI;eቋנvR#k!82O%x`uO'1O\̂yNlomL4$x$l1jYC +ʎ}\#l*ȥ> r5)ؐrwK0G2d=g{Lxh %iwP&'| =!xcB- B$1AYQ)n(u5٥kʟz扆zĸa @Qҏt0i gC>wj# hIY_0Q[>k?L#M!]h>*'ʆ@ƒ%ʩVNhM0/k:q^ZvmģvObcn콫kˎj>0ndJ8xK0}X30lU0wz&Hpkj6jず7u |V7 2[TMy8,ꝸjMr.]eeÌlK#ȓUSQZp&н)ԉ_^&|OY$6ۺaCy18p['C-1_# (Ǭ2K\ D0ǓVJd}GCdb5|P So n'=s;QЂyC!JO喙<: 4 + /A"2zPF(~mnj,?\OoBtǙgjIb8-66.J+&u_{Ҽ@ _e3Sha/ՒhY6?cT>rBoðPVyXusʛ}H_PGJX b D5H}h7T*_%jT"lZ]TjjJM5Fj72s5"G.Y^E+ߔ@ˬw5r\Aq!Bn6j`R GB|[v"Haϔ +h=q.8AkE j_Da47VG\A2{ +a@H7g/n3K Y5<0Us~50XKZhZoo#rnH4搼l.Cvq^|3gJlw~3rHK L,Uƭ2eN[ 8/kSyMɼtt>LsƸc4çJ(WRE*2gm464Hї Y&Xbea|h5ht`s*=&<;h8qz +Yh?; o T5Wg'G}`TҭWD;`υC4oMji/AcfY!l8ZVo{lKϢh=&|^B7UW$v@V|Lf +3ˬ[!mz4۞m%DǷ7w5jq4&]˃ҍݕׄ]2pKl:S +,j7L4dگYysV E k&(DzRVxa GLabż(O,IZEyCy#X+B]%o.+T=GʓHVDeRg9)?_%oHi]D8U1 (]N+*--M+=Q^l洱p&ꦑx}hۄ5p˳b_#>-[ЁEKl7r+ZgPo%_"ۗ2}+pmM? ЊlW:9 fC"Qs ސh*6fB[-tQ,0r*6xt_hl^OXk3z ?W"7*L&V~CT7dV*`shڡr3YމwJњ"CU+hsop]Tz 'Me@iєvZ:A=-U6ⅾ\'pU66.߷Htx+ɥֱzk}ϐ.mFb-lԚ|!c8 IB2rQR@8dQ`dR(}}T͠|W$-'ێ ԼRڰyҜz$K(*OV)a2M vz>&\H3RoeV-`HAٶ\l 1LlKhBLފ52yVe0z T,lk ]TCen}^FG<ׂy#}(qpiXB]*`Mf&y-@a5kY0ia +Tamc5tkG?,Bb3br>AcRd*4Y'0ƌSᔽFҠ UdiB1Bw*1tQMF<桘6@*T @G*he)D dm܍qv_b҇Vo]U8 QB@np쌉 h@Y(024Y$o6(d5*IF d~mL!Yru4EQ(=^۝Ǒ@ŠD=[$^:5KIM2Vujm`S2Ö#apwMTp -iU (%#k'S ; +EkhEa%KA/a'йNhPUbRͤSjPŐuV{4ZsS1 +eF%4&_esU?KJ#t opD=4-uܟt9N\F0-BA[-h4++E5د8WEO&E/T>?R D#ӔJ+ꄒ"+^PxPM.Cs@~;U6lͿI4/Q..Ɗ\v>g*ьwOszek_Ƥ)X-eh[Xe3T` HwnC~,$Zo f a Z֐ djo=VPMYɟ銡Mf-|'4){Gl:R%7"G_YLJ~0:F2B`lB;av:4dsݻD1(_UUIٞ:e$PRD +2yZ0Kh!c4jE"wl?qjd4 Eף [z<ĖeTi0A?r0xZ+*SpsDɪ@#xM"kngcL|AK6bb +ō ˘Ѝ/a1AX,j=R(n@_763Ѵ ayU_m}=+0j2vTV4hz5ȫȐ(c٪~i|)QKWK4B:iY.KVA#jF]Q5hEWVʚ2pO4MZ ؟i-] 4a*Froqf/m5.\& zkR\ [&9\_/4 r*( -$(]*Ї +a[/@{ܭU3,N>?@}*C])Mr)R}f=;p3[~*x1Xc LKal(oBIJVNr"a +!!1"5m;%) At1`#>QKq)&whRADy ^iXMvI 7lfԦ.רuSzLt]LhaטW,irz/$2dLNhILIj1HDp=˵<˒'y;rph)O\ƔADp.zZ ߠ,wtJ> \ʫGO,\̫nP-4$yE-P,a Fr3 n}_U^t^EoProm-C 4]a"ƟɼxZomnP|РdVHmzW&)*ր/7w/K=0k zꇇ֒A/FՕN)^<.J@11|6e_IN%>~4wHlJJ$RE}i?$Uo-} CQ>- EQ2R  r,n;0DZ3o'6DYY<^grS=݉YVU /,9Xa/KbR+LN ^LBX|f>E1VLHAŦ|u+9$;7NP8|XĝvO8Hėm)|_FB#گh/ +AǍj7aDR|GDGBM!$e'Y9 yOQSi`=$78CqYh1 oz>U.Yv =w/GSO{1L#;-[6[{(0:ռ\/~v) ore)ȝF{h'I/MYC^nv?gTD%/7~U9}pB;~YamCVZ$xZcZ{ߛ%uS_g%@!.$8k0J.Q4@;{ώx$LW@DN0X`Diʎk{WVkC#i2vy#&MaN<5J .L[:` 0l} Oxb֡97L1p&;{ ҸiaX6433k=ץUјq)RT.[)Æ5 X0., :ECq̍[}vԸg!֒qG2)?@:KҏHWk||!G=lIAs1%L"7VՕݿmƯc%A\;pEEw^bK05b+3S 88{8ORJ\97ĝJ|wBS`)۱tʨӋ zƬ)DXÓtd?"A]&`#Kedڨ;5X>dFnAOr.UY0!@RFڳEԜ9B-09v +Tyfg UP2\CEG +F:h֨Wwx4(Ew$àT?$oo^)Z-:u:&W {`ѽZL=^=;`*( KXl4}Y$l$yA-9 lESCh FsYW!P 7`]BvG?"]4*ڌWh]AzAh\i PR19:Mo%Oo@$EX&&ЮTԹMF9&xKXw;-P}TY2V*poNNHͭ6?'VTұ5G"8 )Ȏ /]#Q9FtTB7.Ă0v :d趿 +]!6$~S\{ @@ 6;aПdJMF:(o/8QJ +B/I2~尤|0Th{%U*Pi/87IUgodI + OcXRG+< PA'W]eɄ\W+۱3 ,2EVQi&&1vE.C*qm 5q? nTzqlh+l +@JKs'/g$=]qSs:10~ ?N'ڜnm[%@yg5L"{!R "A4c8Mr]!t#i0_@iiH}EEw6@0/Hk?|C[;s`D! *.K$Gjo:B3ŏb%NyL ,,v;;}yo cP[:$D›` 3QyU{&~q09seY2NP2)N6I%S!'y)I *sQ8VR%+$-H VhڈlL:fc9M|iehR=0oWL*#K +D:,oѤn-1)^&\$;&~HL얭 䴶I҅=4uU gÏD7o\ؒ +R%[=DUϵg8OB48yH '2'#.U Vh$>V_ F 'Č6rxdF%XS'->TÌp3J#Oq7) d"%FۇGVK(T$CҌnei,mlΈ2ʒ)`a|SҊ@3X@_Fo`eq12f03|%zF++%~2VޱV { ܵcl{h6P~4RlM5(-lf}r.s+H4*d`N326y\ؽ.;W3/+ȫf%oS _MJQrRzfg]v2^ =݅ blKҎZWtc9]HA,TBM]zKlzk4$ޯ{?PHC@|OҝScBMhKTt`i+v=FSvD8( zD½ K$KS5xfA F7ii\!D'A#"v4k`\d;Śb@''qI *m ?\-b$sf2E6jmO. _`OI˶VI:|MBy>3e0q=Ĵ684 ASOs6@t|Cip:kmZ LB dMPSvF=>f>BʣU $H10_"۬OI8#Efwg`Cgkr,M=Ļ@b@#/b Xt'`%#(}ۭ}Vߐ 96"5 }',AVC_ +<~b pD3MSЄ~=!k⨹D!TɄ3)b3`3B #@Kn)]3B`q. +Sb@Ld7]/aNᲧpr> P^ϐ>e]L utFA>Y:m\ّEGkrFVƊ{6?诮ش$dĖ.q[z!N'A mh'niU*P⪜HMU8ipKWB46\QVyg1e5 h˃Î"1sζI2F&p v*ܮ ("k y# +_vP%A9"*D~X@~h]@znLupqƤP8&.&CK0э%`JAg/H8\A= 3. (E8 b0x};3vTR58f|yWAxyxA38 U3x24`KHq*G> 3L}`Rgܕ:c,x4?r|ar?Ue>t_(O Gg5U"3([W @»&LXl,#YPZ(*KϘ2)(Xʢ];VjP_Jj +Xa +5oꜳx +L&Җ__O 2A S*'ǃ8'bNT8K4mFF kiQ4g:/Z%cr'Mxy}'[)#3K2Ѽɯp[ aJSrKDG"r}׭,Exp` 'N h1->P0v-J砊5YMnS$MnAMbk eE?x‘>JE.%ڋM{wl״̎DD,wKbrܞ6Ikro3(G&!&oo_V?bQftmm( <&sDf{'IWGCSVbm_2/k RcI,yTOt=K%"T$q [`WDGfQG0s.6^eJ'QΝ' /NtlA4JxX5XrRjXyj]R0*jz4B 8tp:2w]* T.f:Z-BD.c!0u9>Y7<{\.Qgp9&7 ˋp#*%$W'0zs):5IZo) ~0d +Z(/ec`Mxh :R5s* ltUZOPQ1)[uƥg|mznQD>_ ~vd H/] %g?N.YHhx z8/!fK雝ОqJ߶->q%ޒ Rt&,h'CuTQZk1pi^c]fʪ("?dKȡd)qN~|??Q U(7dV}C܏ h;q>?~6 R|K.Cal,DR̀$% pu>zFs9v8u;0^䴔&+5ĐazMk3*۬^E0DJpyQ2$1۶%d>Z-U\Ia/7v3D;s Kt1{ԎUB[K`sBXb Du&G0&^#xJRtkyN/ɽ&R.cB+6BviYN& Q28!+꭯+9_l#._U˥ٛ(z]љVVo\]̾Jd C*`$< GʢXS9[RSVl, v}<ݫ؛}–@N2=ӆnC& 8ncƱ˓OHI# I6mG6l)~Q)1C!? \l%<]N]Mc0"h+}I8{8˛ S1x`)16~gHdWcz](:vYT:R^ q/e[ 9Ma\W1NȘ-+"w"| '-'gDw:QrbHcQ96bi+C̉=zVU-EA;9$O7;}1`J i8நBlsݩQ.P =g`67f@dh7Ek#Ky'cc uyQ\w>\2#|_.sny2 Vb,@V*s}uDhurZ>BDʥ'tiVLjpl"xvb G7nk8?)]HQ6uXIW) :Bm&N;(^Yc"ib4`>g]Vo"ܕkN7, {~)j9jVSKV}Yamk#l0N˒~ +)%Yzjc0)Gx3H]i6 +E.CgPZ P4mߕh(\`53"5>1]e?`Rkd!/Zp|qlu:"~b?Z_ԪېѲnxYVwKzw^ ]J%m5|5D2S"O,Eh_N!;TƲܥ2y?H' wϨ_$eP yeW#T '*y+&o! R#~ u)'1Bmj]J +| :yj<ł1eۢ$+H&$lj֨J(Jd8yWە`.&@**BCb8(.TI;ߜ9A~rֺܑ[L!'Ny>mXEe6wX'ݦ%zj#'%Pp |Av,W8) u+t(d}v>Ud2' ag}C_!;X6 -ymd<~&*BT['KDdj_; /ƵC&Ѧ/oNc@QLۦ˴:V^Sϭhe-kއ`&Hr2l`0`,5|(Q%yލ}+9:`Un'2e—Hui쭉4)fD:6y +4;).DJ `<_[(X(3 Ki<:PQ {ÔBY^?~ۍl܁ DK}=@hfϓ}nQۙCӄvkw'Bى4y|j,-yX`U3Z?Tp>j}ҿR9l !j3 +m 45ȣ~tRH/&! +UvC4P +n]/#a w) 9.bsm{t@gZv_/>a_ +ݯr!(9WBJfD +0jWc;o{[LlhrIk +Rj 7O $T37# _|4\|Eܩ i>_ 2~mZO?D Y ٷUF$ςlDKK΢嚒!?3lE! Z&цW*l``Lz)qs$a )! +?mIm ++x_s +m#9IE妅msYHMwJ:];SRB;8K0="yR{cf)MT.V0 +}<%GYvZr*TM!0{?΍n Q_%W Dh,wntG"W(KS*AAqM%]I +9w x7]2iD2ڰ8;R}G@Vܤf[XN4*yBy^lV7^a UY +=cPHMX5#$H,\Z`HL&MzEֵ x I#(q|PX́BYr`nGQ9'sL_hHbŃU147.=VqG-U[ÈVKͪA=e"D@bd`gADY701l+ b%P@$"zcDYLM|!I(@z$"6\4,Lk=t7bI"wR[z JBOO F~౛&CMOo6? !ڛ E)hhLbBH2O)o"n)na#X[JLcM& . YtJoܰk\&4 u/1w/X/ɳyܬi(x•PX]Nt+-kwZ`K7o V) +RFX.cHwIWN2ODThq0qWҿU([Il@quZ[h;"b~#7",%W>֢o8N s#c bA-u|ISE'p9meb,H SoP.S&5Kq,e}%X"V=\8=7e.@T7&cT_"h< Y9-1! UHQ/3eТ9!էJE=i4nӖ|x9!Ԡ6.;D|\\gu=cXDJ.2pv("M. w2HAJe[>ql)EܦVeƾDz:tƅܒs#j3Cǃ!l Җd~h`C|#$'`R930Ёx nOJ3fP(t.*|c& !"Ǘ!K>@?lN2ZS=m6@cӂ@o#3mFӆ*8<`A35滄'mMx[xs~N-Wn<R?qі$“ 35 &x< IVFsg +Pq8 .u n2p4qg̎"n)UݫI &)Xúx0~oO¯fJ>J^6`[j]wdQ+n>(:$APeN`6Y 6?U4 hrUuRx0>h@M}l!qP:Θo@wzA<8&`TV|<+`I)jce ?.)HA(Ѝ :ƑZ . 9 ɹ>*Ւ5tQv%Z2C)ǣUG`$=ҬdTMdd~"H7# +>rmupY"L#wwRxivvA|C_nM.Bj%/l\Տw}$n`nν'G X@wP`sAP^BKlV 82!^rR¼0bĿ928_7Iv9hOZUYA)ib58 B-GOR 6[ mn0]#4GԣT*T鎜tjk~8h-% ŁŹ +߻ O.\,c@]~^cR ^UĠ)?'[zYxꁚp^cy ++ +ߪt`LZ-xN@[.NlĿ1?WB^ 7nq7UgOI2n!af ` ,^`(jXX\|.86Cq[-1O:j::F'MT\CQ&stA2Fƒ8> Ag 4g7-GN[̓ /$c i/P:#12vnC ,gvnsPe|4GLދZtT3!1K\hmq$UΜI' %nuavbLu uRUr>Bjƛ] §gnc*3zI UZSYyM@ u&"_"yҺ>hA1!8K +˟eґJ`Kt9B4&T qp(I' +T`(hBHJCD 0(HC|>Y`OA9澔p>XKZfgF134ڮˈ F mcO #c1wIqm0WQrxل JP @SLtv]7ٿ;T[((m퀭}FCp]Vv%m2i`Rx8E y th-4@=;8͚Vay 򢐾#oL 醙2x [Cws6f/x$|lG?fhCZp>I(V-`v}m$FU% +@{OpñvB(ْقٸԃOA!!>ހ>J0 (qG$U-=xxw8H\_đtdg*/:HA<+6 Qۑ[qLxʍ`?+ CP~0DU)IBU5XW[3P + 7 9vnu0Zrf ln3= 4L^zt{ h Ԥef[ t҆Ր1n=la[WcɠfҫÖ>n.'- +V]QC HN:qKQi)jrTs| Q1M>!~ +l ?U? +@M nf[Nq1l.t: D01d(rF)] TxգcnPSHBZ>[WMU{b.V*|vL+6)(B0vmԤ!hh$v"AG"BRڬ5!68A=4P*aç}]uQq6ħM%TJͦ8rj1kanDv)1j +2 L3LDܞӎ]pA7:#q=2Pf`:IosX+VsOPbxj=$1TL[AtH{> #ݟdpi >ݐF7 q#aGVge ʹ0/%ejLIXۤj:,HCN} +Y<IKUr BlMo ] a5!a¥!94YcȒ-"ވ#Ve>Е4V FcvN} nG-09OJVӞt@'IG.UKSƧ[U#[&UTJ/BʤUF ;TK&Ɛn Uء@ NntXH qIuqRmGʺ^N̈ JڞNV4C$|p4J)H؈iHNkcP!<h'YӴUF9OlK?@T 21TY6y4p5x^mu Ebd]/)L8O2 +WRu=_ѕ4La"b~B WUd1[/Yg˚qg`YJxZfa7W&+c V'AiDE!1z$eA܌H^IexD2wȹ +E:2i#&9MtƔB]_YjLs'||e향kFO@+@AjƳ? W~"IqIT@59;+u}lCms٥nq>H}Ms%Nt QV5OeIXYqnj7sju=`S+>^j$'̀]jIB[Y=Ыł %|3PoEZ[Ҏv^%')QxfM:;gp4B4$Ogі,J% +7ɹHNxʤAmM=s`HF/iҪn6,ҥPnm h/U{|\s .(,kP 8xi}tEv +.YsgS~QlUy`_(Юb +O47\X{0~>Hm +un3ցh0;e`qxX; +7$Ҏ?SDZ'M)i%6e0es |LڹI;l0 5#Yh#.%"=",oH$(wfRYƤڊZ5f eN~vWW=_YqU%mQ +C:;$ ͙麇]M{Õh %5B7c0_XVk IdΪ+2W9bQmfAGa)'ZVz .7oQ)V\Ahp"4%q(U:\kvokMGu "hMrx< +SH! Ɉf "LR&ZFZ*$ +8( CQ (@%yC /tuA ʒhۏ_6ojsL8~G|S]ë*%샌mFy50ڜUQ ~+ܭx>4MM*b'ְ EUP#){h +ǦR t  &߮z(D`|{+>ƒ9Pc=bR%7˓nAY0TovPꃄ޶RGkz!CbN + G~) +6ge.kÇk;fs<ˎ&j6<gm[1;Z;5Gw}(=k8+s9kh@뿝#"t{pvՑUC]NN!7飢D-Q%O.w]ûP]XӬV3p)w=5䑗!uYJ[Y + cAQ)n*IS(~Q" + L6l"nYTEdRX7rHF[zuC +,~*e )H9Y]j$1D??wer`fwJ1( eaß8QlL`_hTlbs+_+% +enr]*Y=2M{eRa֏iRZjTh'~wxR.)6?h@Y{43?vu& k%{n]5 B[E}T͸!/vPC DGEyKX7v: GxOn_L A%3[#W΋b>:t%2몏`*h8DJ)C!Js ڄĚkWD7 jBQ(MOX3? W>*fs>K`DOV]d""C{O[O2Epa;YIR%2e~0"^ΊY+ڼu(2xg{'OG7CsK{`?җ,ljujHS{ZlmCF/-]ͳ ~!Sv>ioAzt|_hW/ӧjkҜ_(B֏B( /T=:1Jb7 +<#+XÂ.d:ULbB4Q=?ZAąI?ŊU`VDV ymBüʢghf?lCrj_' I"f *LgAGך;)$8\{"7fmgsB3CB&:O/9}߯0':2* 2xAQ>hq"iqBYiLL=i#GRKsA +NK<]﷣ۭ."(^-^a#L `5WܢhJQusHnVIBH/JF>Ǧ]kHBZEuAz8;2sI|jA[v8PI d`rLwQzXVq+՘BU6^*0S5 Y\+ʏ4:Ă2 Q'+}u?Y5t_Rid~W<6h!.p ;:8cfXpz̽`lSQ<Y ?@Ų SӘb5TR&pr/-%淨= ~ +5WMll CB &hⴱi^A:,?0OilMn%kf bC)CL$?&7\UȕJ o7Ŕ IHL;TUؘEp&/ҝu"^b26eTNN0֮+ 49ǀXåS"-kJݒ^u¯cM s4~ݺ rղ^_D4%z|+^^ 뙰Ҹ]VL0(Ê@ Ǧ_q}l߀pS\L6@)˄](6M38a7^P`%^Hl2V.ĺHՕ5doz=X-()3 +k Cdzĝs t!5],d<{/vk~zt4 M1ƓhmL2ʛr0|<Қe6{Sjpv=IHQ D3 ,+`eVUu,?~X6Ɍ Uy(Ni@"JAR娪%jρ+E)7@KUԃst8FߴR+N>+A1&u=ZI:.O$hRLx}:$HPs`ᰒv[SH`0Pv#Ƕ!/{$PY2KO%+8/mt~)Wn燬LE'I70;-8|u$=ʟ":[r+H:xStEsRb_y$ qoDݍ!6dgk E$IvklMtNXK:b ,%ZKY ->j\ "]~VgErw3n3[hKgavyΐ7o=&Nٵ.ݸā [aƄ+^@b7i!\ʹJ^dZZp/mLt]!;Mfy5zE<<=] b@Djލj*?8xa%\tʧZ[s*UܰjtDnFBBo$`nu*&uvT)`B]6lk^jomv3 wf̿֡$rrZ꼬9. +sA'Twi +4u4}+ rjcvŤ2 %m6^1$6Hݒl5V͏Z8CL®n[nw_ϊ]הdY+эl6'XEe_5ÁI\fQKEK -M )gP +`&>mtNa* px=7.LU4i<~/[ɐ3'J8ҭ$@U~?Vȸ5m% +D&ţ8/\aƔBF>`Sp Ilo%WUi%S fKI^ ?%pk앀8Pp [ 7Ō2Ws{1Iv(dp+!JuIE%,L-2V%o~dz$?s檒HU[l[?8$v 8RLj5{ Lgnxfs_ -l7D3wNߒa`X yߢ\^E/smQ"eX%s=ꥡ2 2瞽e֕^zQJ'$O λ4V + 5"n O>ՀVLJHt0a>BMT~PJFgQ?rLQ\ PQz>I`K( +V%lWK7* +峏/گO3:fϫ6-- QPNklc^kp"b3(%5~;h6'<j)9WMz 6|G.nM T6vuas.X?a6/МK!ވ9 @3vJs"M}#>C ]>%P5jy (C +6NW$w=P'' +i0"Quw_A䀐_H#3]Ho#i+kfYA:UiZp&w[ɭ"mS1ɬȵX鸎`k!Y%HNyFjp%RmA멢MW1`}3ElT%kmF0򧏒:#}:QcP1Oq-R/'mVDbOl#G O9"J +'隿*πS'mE  B28K2ņ %P5f]|K-O\}fRȵ]/6oDP&Ԃ&|.#+ID/Z{%}4XZCwuwi_o#JBK])z%L33W K#֌@^m%KZ2eDiێPsM͏r!ǴhQ枱z'lDp9 +5t:erAۣ&c*Uk"Ha_bae;UD +e Ue\%p~i)h\NHϦd/GztH\ $-$-̚NkPGG<&p /k櫡 ˯_o =xtCKFE3ҷrkuTMV`V\{ZI%pm%ڀ|aR4$hW%kzgY6h#As_f%`45ysH%&O2* %@]&JZn_&5rttka t7 kD O ؞\L]Hw8־]ALqʘ33Wze=}xEQv[¬1Ou)4}e9hHL-ӣE;G> \[Q74ɠ ;:qeeobQ:/l¹idonN#(u :/GWsڌk=/kcC46J%D6,bf17gtrm^~~֭z؅ ( Fy4wrb0)/Z[p`2zyIjL+I(.#R<(8saN|Vߵ"deRf'xc_/X)+Q`/+Ψ'U&7|<)\)Žm&>")PX7g+b(xs=P*brL_[ƒXk#yJHB8Y&Y4X[ڈ#Hbqquu=fe%52yf2654BknE2%T8nG 5(֖c ϠUB %fcyl 1X_Q^y}in> aM+'Y`utzÚH0^K_ƂouECfPTfŠVHb%{1qƷb(m {!38cl6 ۫#cu8(lbڹ? Nv=*/|/3!`o6bV +endstream endobj 272 0 obj <>stream +xZn)ϵYP3`A ƫz0-Ǒꥇ[LSϕDD[u!ChB'ѲݨPDzY=_$Up]-8\ `b؊ . $O2Q8̕N LxF8RU|mFjp .Bf\v̰ 7Ǡʆ5-j8JK (-VMXY)W땞BU Qz2+O߫5WWzB +zIz?dOѺzo.b3@?|J&{ubz.N$W{em >*@ S9";{t]qPssQtxNHّ1wOk{j^K+:8_;̐=ƒZpNՇ8gѫ5$ (&Rn_!N{#uTHӻn1ku(lQp!^q{qŚQ7znq:#"8q76^{ĝ +Bp&v"JʼnN|D?%ǼH5u̽ř|~#98Xfߋ.3O--KũIhhhJ>e귇ZzEv{ÅY }17ʵ^?%p6 Wػbq&B^%LD4ձ]CW*eP +B1D5*œ*(1Ď o{נNj%]A+ >؄VVZBYkc*aLR,]0qA<ہ[zDW cϋnT P9M." =/}ZϏÿԡ{)zD@8`YV;0&Xs_+kUh_+@Wfl@jlJC'pĥ+^&NMY(IP3@`լ hk8cʸJP†MO2_̢eQ(}b)bM,ob̛rk-=s0<&kŇ EUhvohdM2<]mI,y2Jx e`U>-͙ 6+mȖmJA+6:oxso3h1 +3rh+8ghmj +x%WB`rVo%{`z"{2 (=rK@_!#p<ҷ',-.cA $atW nm {:eP'áI1]֊V}/4巓"XO>3K +AIIa:@l+H@1(Q[V Hh!T.Q7޸ay֯4Weٮ{\W|w +܀Bɬ r?,) |n"ΗG|?U,-*jO!^ lY=*kg^*Cy+JB*[]BrnU +{E[!* F6$|m [_Wps' +KUAoil0"1= ^u'EWYR"=Ȣ,y +Q! ֟q<Heema1>SJgI;9 ]V<ҒT]hQ|gi<SΦ}Uju1͇-óT"k5%ںc0!W,C[gg9mm{RJH!x5Yk)VB_nh `)umSfcR8 0jw,}X_cuǨUֈ6URZџlGX%rՇj21SY?B2x>tȁ m@kyw,YMO(? Ix{m UȌۆ H}o]_~@;Ns`uV0@e?{ +\.= L %p%Dz +Wo,Z(|h-cgy ?{0BMi}k,*O}+ ۜ@9UQ0XW^aJF`QU`:һlbq{8, s)lz[ +Q31F]eT0^֪u!SVEUiXUX](:آUuU_R&ƀU%EV/Xl d + 2H*Ы9}:҂ `*PK\%+LVWI_5YTv]?%:^VnC^\c ȕI4V@`׊\ysY Tqd +K=d$u:+y +kIj% k\*;ĕ\d5]+_``(,_DN;\Y-vZWW0 Kmxc + +8O%>Y̵-pELH@% '3>ʀHiEjA#fU_+k%]"qn+^Q;ֻFFRp fU'E_2xJ8g'y#_Vq<%nrrb!eUN;@*ިU+)/H '`CU>!p)Xtq6J{p#\}5;@4$T0rZjo0J|_P}6^4bZH +^6{MDV52^ǠEJmQY="Yk}?/T1p(K*,:l\=j,Acju$Z0R~媣"U~@hJɪڕ+Np%fUxرUGJщ_ՃwjpɧC"bi*:"md1P*ťD_ź!՞Jq."+}1={\IE,Z3))P=E?D~"4PpllIGu?+ Zy%kbb<يNٞ~-{,c+z*q V+ +p*!Bd4.N̺ zwuq +[h;HA\x<$ٴ]W@S.z, AS#FTV@[%K]l8+F$i$%115jdG~3`%I+ddvRf-}=M[EB/Ŀq3nݧZؓ\, +W;i"]R*{\ajL+3̐fE YdcPa}$9p'u8 -A` =]6M`D'' cnW )@9@:У t٦)U5rlIRٲ,}D*n];C BtpǎsRQUh>/>1ψlJA3C,2 $>.jpR"e֠ %sHGgax?`ue1 @ +?Z_P(}rj"?2tkʒKIG/I23  .3>{ү{R&9ꞭoTUzJ-*! +Vcn~vrRe#dA6,!\]&cKUYQUH㐱 +:.%_ +O-2h**dy>chPY+&k?J'P"\aD*![,d-[SXŲ-fF,$,(XrblXf*Xs`d@Q bM68kVx^r^ˀ$o tTN1[;0y^`&/2$^KQi#^RAv8/0XXR@SR-Թ@~9T;!ܐ;Wu iϳl C90cXW+>͵b^!R-dH4 H=pd#t2}t\5+u݀ksLQr7յzŗ\O0^U +ZW#u &g`\ԦS+Wkma| +H-+f ?WQqy '_N!m){uP1]޳ހtg-L]QY BJ+/WnuEde +w ?bJ'x`{Ւ" jk˲&=՝&pu*'㷬~R {Od+fDܚ.W-~"ZOu aޣ0]zzF-}zSԌ 7S\٤Lڍ gS6(~H}P!pۋ &$uGI؎* FK%Iz9Z-sVY٧ِq=NpkbG*_gr5 &TmQp zUW$9_pq\<:-ja,E[s\]smŬ_R +m4K5lmNbqG8ުjA,@ce9̕->݂*[$v4riLV.UwAUFNߟM*AJ 驠Wq@( 'DȽI>le3#G)-ꛊ%ie+8kHe7 +zVq71' bjNV"P2D8b C R10o7!ipf^doMx=DTQaK].;#aF#c@ԍ"lqoH\XJ8Uqr:GRJA\;U*JT|<2S}'$Uowo8ىQ46[̚~%>GyHfJ.1 !vO :ḜY71d;& >.C}F;a'ێKNxVSR%aϲcYJH-g&W>caչOۧh`O >0qNIVi므3 ֚Aw7ޠY @Tan iB*p)/ *!)\dR]_dگP\h vlqe|FC61MdwZ9+.fUUJ}Avo`nFWK1vtC,nwoipF%n?nJ.ьlƼEhpB+XiSLɥ<+k# +W}r )xPřS{6n"=_/L IF&pTҞX<ԗ 9QytN!ݘKvhj>L;R +M !\i&b,ٕtl1'V8_xC6-VRV8jsJH{(|?aI;e"a@]x$T`:憠. )*.8 {d<ɠ]^i箆]I#ʎ;RX㾈 D{,T1lq^ea1:&ķ\U%.Tq~; .G&պ15I 1c fըuL!IA̩=aY` pA' I*ΖUw}aKMvJ7_`15Z&; u=Uy(=p8ÎkgW҃ x V&֒+ BUgQxR]LZ%ݪ 0}Vg6+>~7:ay@_ |욁 ֲX 10Y'4juDwF\흢Pn .^|x#u_0*U`!*-GI(t)1T`l *Zt!3UFZzAM4#@ )O܆xNV6,Pe"j-@&P*ɺz*kW!*g[!H{w}}n*wɂMF1Ktٌ! q.!qCt=^,J'Q7? c5o8lY(@$DIքϘ$0q{udlނ{vB)(# U + G ;[ڨr)čQ_ Y#Qt WO}7DY+y8g0p,K2 P+ID,焴H\E?p 8 сhw>i?IIciEipvUñjŽ1VKmp1LiOE#a\/+t]Dt +ix x߮f&Q{ qPXtd&6ZNMrX?z& jF0Q#%Z,BoЏ88$ZI AT/,ݡ cOz~ 1m%=ӏʤ_X>f@R]F88Kduޜţ))d*džfP5ےak +-Q=«6h+a@%ʫn~2@G1X_#^䱅x +" ~"S]&/9GD W[rPI= h'JpvYk@)U+9| AM?q=d2q=/"<tD:_ЏwIнWhR>+@a/\Rxy'\!K>aiy٬o%{ +w#E'C\@AJ)GOQ# q2Ң2C(Oo&xG>@\n +^ c8i_HG1b(tF#@R=訒kzsG Ht_a!(q_fB]GЯ4l-I'ʫCp`3GneSK>:/8io'"H*b5);Nz ud* D B7uIDTe4u ؤ#6iH#%OD蒁,|dOx]{@-G.~a> +G$WpH %b㹌IuHeahpLL*gX8`K?'}OI3RAVo53@:54GA?Ȥ.m12i/+!+db +!D2 d@P>F$$*0 +@PI +'g7.2 tDV=J27 {߀촦Fl1unfׄ.}G6z{]l Sm!cg)؍<FhHf +mo$I_8yZ1^4>?fc*: tHۤ5J62s7lz&fP֜HeLL#4i}+l#9Jj?)蠊$j$͏ %tw8bmpH]u;BJrv30hI 5\Ԁ7W7B{Ls]\9itp)pv/2cS7s׽w2wY`NP0ƏQlf}w! +MTOiRz@cv=VpkO-2ϙ%Ο5ŤL㷖=^*L|nH&gyMbvfi %SKdb_aBXtU͂(Dʚ#Z5ʨ VZk_8N1白_ڲQvOT~ O)C_tU<~yne JnjA,,AR@icݤzb k?@ 2jLR2;qX{,2XMZţU=.p5J1k[+3i'p8fԐkMw6#%HKu"ˡFM_&ywq[Y |;c؋9D9m$;;0.Eb"&:k)=\|ҮAxބg@6R_ +52YLAp] ;^r=1ɉ{?1>k8aY9ĬǏ1<\ }^%LE]zv]OP.za2780<8$]r҃e1e[2`̳٬[_kS'0yY7XӽvR{Ug:v\ِfV8#ZJ*I$ kH8{wm5\UUd\wXẅ́hjX2o)3 7ЅXUA 4+4Zqw}^%Z?Z)xvT yo!4?!\x$'A?xt|dKGk R M>Z/2ħRUΛB5N09imdvۀ3 7: +ۑ }̩EZmvjp.!I0QYfnR`jh'Nu SDTӴ)2wY郯⪚Վi$o[07FFd%I'V3Xm/ěLvG\PcW äͮ+SPS*R/C"vS#EIFE2-G@XⒺQ[jW$$_k5)3E s&\B-$?#߃& kЂM3eQ"pĄ* \!pKvc +/Yp-ҧNJb#ȏ哴@ +ՅC {.W‘),2_6Ez xCN%,QBTYMD +),g O +HaQd +rb/nFLчECXChFjX:*\q:wؘ+_lPIVkVZ.?d +3؟DjTL<16!/R+IS']fx7ʉ\#xeZz7 ͪ)ou9zU}l|K/e #)1҈0ti J,@"yEѵ{vMiOXya"*DH_FZdT_m2̣5S̵[wתy`ʆkL +^Qsp2Ok|od!5iTG =x9U Rh6T DnCN,ʤu򹃖IKmڀKɻ Q{>ƶB&38 wWon,/t880i~1^mg '~ߢA6 ArsU;KKpq,Y(2LRŮqqBG +z37y DZDnPꍿt\brS,|AP1('*(ܐ+8$ȋlyʃ-9 ?3zlc'n c N1^G콵Zm`vO as13*?he]j 2Ptv{ +m=|t#YnG^.]EW.(!69Ļ +u.\qY'C8",?ġVK~#Umꪣ+SXH$ ܀ g־tuu(uECfHNtϰ|l@+ a[kB=SiP1Mre!KydJ$[aEDFj)au2ŢBe=p}˩+V(<_k;fSC\ V}5*Ѵ1׎?!2bdX0s8PX En#;0x¯ {FV׿ +,ۯTVn L(ңb7XbXRcި9gnnM6$d')SKD*W2B-P Urr>E?e -bG)BB)"$lXDILö +.`P1ͳ"Y +}YizEvc3tab#04Y_$\4F'P[͚1i\ lieFN6eøwR&Ifm ZH6l.aE/UVu +*̭H+~C嵊ZRW[,WtY$\u,Ȇ/Q8OXs,ę +E<\x +XYmF VTrBeZl_W1P`hxXilfp|α^<ʨ( i6%kZ\ &*regiW4qAT*A w2kӒbc'7ҫ]:.:,.;>&DZ N +Eҫz9;cwײG$Q<%`:D7qsJq2қh^U8_vfB({jScVt0Whu>=\wȯZY|&+!w rݢyL|d.?;9RiB6%LԵc)9YLOrA“]X=WdIs&O}l wdúW'ZCR4Pm+OⰊݤrcb4W㴂cA\6e<eYf;Sm-r AdA]BU|o .~3mbraψUU/HA7?:ٽ!Ȟ݊۸J3V;E4KgZF IX.*iF?4vP +/;#SkT{`i7}Qְbe#c˩vpba1!Lc5Г~ĶlyaF#T+$3*L| &L@XPN: l_If9@ T͈߀5T{ MQ"RIO`kRMfAp^x64FzfImYe7:85چ=M+FF1dKc =bAi9wITNfgEH4>k^2$ 3i=<7h1%! K/qDW&*2mXQ@\]XZOJ'.8jT0op_G5 #rwVS+z Xw*^E#C]ksXȺ0J{]? :Keq\gyvV뒒4b`ĺ#tdfۊaN^ػ[=eLuhBnK0?ahN7f%" :1QsƩ('oMQ%iE,oJ7u\(vru 0~<:_|ZOdFR?d7 ADElY6pnMn wC +ʒm-ωnU˺&r@!+ ROdJQ㼰9>0ݐ;E=PZ:K, <яw|8 Cַ- + *郕D $҂j/օ>1)iO\pLl#䥽fOWԡil[|Mi]p B"٘-4b ;GjasOFOl?ՎZb5 + vD|ja,L取A^Om%#cg^ Zq]nA/0BaO~Z6Tt#M4{.ݱnwuRcғkùuqAN)Ε[ֻ XD8'ZﴠpD9Eț`; + +|amb!r*1J>}\-#BJ5/6A-bw1NŮ9myX`1jYE Ac6ppXChȻD;m]n3Vt~䞤XZHډx<LoY\~:$~B+K}K3m3Si]E*ٴ\-:P^K˟9xDEvZޯ";썼~3:ޕpyU!+=;kW2ڍ+T a;5p-JѰ"Ӂ:m,9J䤪 Z=H\UnJޮ5 5&ԕCؙ/ Ex} +[u"bh$Ln_Xyu Vp$^d6hp(uucBY(zn?xdXwXDɰjd8}0iP 7MǑaFaLwdX4EˑaEMSjF7f@%ɑPgU K&[/-7WDV ٛͼ 2΀%JHU Pvipס8I_gOW;k6,]@}9șӧU]J]@HFL@_a|LYR+nJAi'V7fj5htեA3ޓ@p?hRj Z0..o!,mģǽ9J]Y]XJWH{nXqS*u,"+_93tEy4kǖ+~-zqXJAso켽f>*lh8'XNzL%N]ῼvt4p# +Y*SG[Z^Y[2^J~e@ܬ2 􌃮E8S|fld}q|Nе藇+={hJ0SjxV!^5?蝽զ7|xm +[u1 (mrRq3GynB2Bo'Z8k#1'pt񱃀teg[V+E'52N~#WTtƨ{wNtƮ~HZ87~aq$sx%ù sze2Y.^0CjL#篻@W? }6NaB;SnobA:0#iRdNuG[>e.f&m8 Sdv&(7D@ E@߯/ZGE(0cw:GpFO3fh*3dv8=''ԱۑsE~@GJ;ubp!_̲H{Ry8Q$p*:c#OhhЍ@Q,ֶ ZS6>)9Y1o/¯_VMO$p@4PYz "r'hW`@xlV +G3b-&HY·FǴ!B%W(0ґ0͡+]\?I8觀k.^')G42E7=̰ٳ=J~]iO`wѯDIU4÷sŨ>LeP-\'E8zjP/F-cEWN,䥺r8A;ad th-LtX/CAzu2W2I `AQk +tf=Aj!N*2,(IQq)R[GKJk`ޕT٤(ͅB{S^!iD Enݲzu'+!\|o;ה&,p/{pE-Dh?+|8+ ~[<鉾3%{Gĺ>en 4s{sh;SAXV =Rrp_2t9CF6rTC;yt@O8ن镓L9ZF4"IUBe P#/RNv"(6 ց ƌ͐{lwX.ʜ3b2 i8} ul骨W'\M@1@KمW/j|]*5Zue_yʂ e~̨*9UAJuP+ͩ7_'s"dH2191wd1A_LŶ%] cpShd" k&veشnR0_Y@#+r +(8NWRҰ 4iv FW\O.!Pp t*t8sM!]ꮲd2m^ ؆LQ&g&6 @ $"0aJW!ѫ^V#9ʢ| %kl +6ޛ+҄JVJF3ة :ī{D2%!/73/7 hw0 q~o R%,,ĹnA(`HfE.*spt]Fq +S5t,K (:1& +n@b@׌gxR_pHvr'_ժ wVw`W2sK6 8]&22=)aE? p>8[>'_p9iuv +4ʹxhOcWa07CѪb &/¡7'U|;U +‰nVX Y!'ܓ&K!%N<5 "3E٘3x,5q{Q%H, hJ@>j#q  я VK5کMZ8itxd"[Vޔ@ҠfJ*)DѪ% +Je/pFi!PI!QmՎg[p'>_^>[q"TjdPLaXdkHZV3r옻h7+ _$ JK*tG +8d'PQոYo97O&t"^2-)U DHp4JF[n&W ,\GWK0@2NˋC-DߺnT'n1xR M0dQI]xIS+9ak?la[M,w>'}2Y`T]jEwǠcWz½]&%!+_t?ΚmGa, b D(~S`n4+/4+ B]@ *Mip뱛9l4P̐ȤVLw$ rF|!S@ C&'=@O$d"5Cܯp_x0ҬCi ޴X$g X+np=T`,o)C`M:X=O}!M >.jHR/ @@?\ }e@;l ,A"-4wQM\%Y!@Le0ɓ-&^0E9ḋ"DKx/ CJ S6l7LŅw}d 1k&@US]19qPU^-i}!xJ󋝤MzQq_9Byg q4Z'9(yPmMK]wI' >/UIhيH2pќDsr߁R빥cihj07kF[K4"t'ۈ)E(-PYCP$a}|+."j 7[qͱ Cv:jOOI}]t'HXp@1h@i_zrqy8O38fB<{wŴU lp7$nȧ=ңDbXӜJ?Y'@i };:ZA j Lܡ򡙴G " m}MN>#2V,X:H`H=ʓ7/j' + F'ػ`%'OIk:+>J aJo kp%JrҒZPqiPTXgSQ§OCCڨL V8l˧<"nvv?x +tKS+2 ff`Hf<#">hZN!  c!рB>L<@" $ +P0(BAa(  €,T4E[I37=ܖ=A~3[eAB+&0,<,Ԕ{rg_Q/ DbOUT8нAoX[0H D2Я6+KzΚ~ uoّ$V[ +n}-)Bk˗_n.QKUJcVc9?`_I$zcBߧSA8,kS&S"oFJ^X8yj\ Ēv~H"oc P*%/Lb6]`r0^M-/rȏ >KQZ̝#In2gX~ Bv5q #,G,.l(RX5AŖ!dϝKΪzj?+\\Xۉwga2]ұghFF[g>GJ[66WOMtzw8ҊuD 5>CTl彰Ԧ5(6/1}>^C[Bl4r+n'T.r>o#r VX6`DZC hG@1w 9I=DjÎ DGfrTKcx֩{l@AJ3]u{i4"a0Stw avG?6'b񋟞 u]C]{*hX~sy4YQY,)9%n+ +8ؑa/[,VQ?~  V|WWuzZ[|h$ԖgX{gE +OJ]{ jbyyggaQD ϳB]\ʹ$?+> bn2HvZJS$An AEB/9'mr~(_fn;p̀%\7fmH0m0O$:P"yP(t.A| 9Qp-jޞjJ3fX,9_Ǽr8?E9(#;"' I텛F`Xu'8(+Vռjb:NQ}Ɓ~WEW@\VH׻<{hy"|_Q7{53 * F]:!\*#а Eb(fB7O߯X +'<4I) +XGo )9F2`kJ]ktX4,9<$8%fӵc PoJǪD+xñc8Gb X3bv/*YJbTaUXt2*a=$G>qdֺ?*d!Ic# + V!kNeOL5@#H{ᑖ7g}r["YkyBɬwpTi S̚AZﺙaVA0<T9ik⪍%f0VRMkgH33 bfHb9lDnM 2ôT> օ@ +FzjQhzf*LF񑣸@,D*V7T?;9(= YC& 4A21\*tt=slSMfX#Cx-$'o}a 8x}T .(k-:)m]Hh`y2h|ةӖdR**t].R8¾k!!v9fHhpx>WgȢD! Hߡ٬Ĵ%K9( vbO(N6gf!0c}x-Zñ&΄֔z +l >&X&@h`j@: :M08;=O5΅X8.0,[{u j.huIѨ ND,T#m-5NGVpGO䠾؉fX+f!7;H])=% C%հP:u T-D746f +<ׅ#I e@vYGlyT^S^ɉР¡YY&ap" BoXRWbZr~$OpK >,a"CK|]GPtQC[y5έh[(_[71?M(EXY彉T˱8!ɤ+ktڄڬ¸H4qxt +Z"G<mMgqC -p-QL٫9D$D:璛Z'%+řs٭L6>ռ?d!"(3)H`H047edԑ3\ +n##hS$J#ٛr( bimf>ޯrUJH±4Uq}R|2&f\{BOUd!@-i٩aۆ-bv0}Ng,tUWjjz}dZOq @}ɏua}Kr+s4[L`v!s~ω,gt:Vf)5NF|i]B]9q&_)B &,be@P +0rP"hlW fIKC܋iL(<&i=OeM1&9h'VSa2V*^3Ve-jm[]RAѶ޶!Zm!IW>m/hT;{Vu<@vͷTZR=8*C$~>Uv),J 3ذ_)h aOG0צT l7QH#=8M;{GzxbԤ%HwJĂd6mLոRȂ oyӅCN {,$Ǎ0χEOnoE˚4cܱG/w1Y*O5)M$@\6@LbbtcJHPnA +jSs:24:N㫳M1SYU:hoyǡC ! 8i%IhG&0қ)$mQ81Q*:/n@v:DF G5H}EGDt`P(*2LhG%^c =?٩D+tcQwNC8"7XWJbmQܬ6+ǓG0Q4 ĞEӠ8k2qP5 PVfD-Zzi<-tW*BgT'䶧F8܌p8]&o;w݂0DZ^&8l_ -snE5ڀ"6bv:"cy<~>te1E b}*|Bh)2 ^tܝPo}RhDݝma"=QX%$;ό!my$/%s#x%ON:utopz/# +@HbPu_H2u›[Eo5O/GLak&`M BWBYH3FOar yWk4Hn%,Zo$p +Ãqgse+JT 4K{ At`SqKeMWyj5!"^ ;B7u1%X"3X:j64TOHjyWdy{FhKm#8E7s/tD%0L˅^+5VnFp  +>}r!%Oy"lS!҉vڰ^cbrd}_]EUXkg;,jocf `rP #V믚,2rU +py-5+Xg&H!>.UԝYx5,6:t+{ ޖQlƷ *teqad1BOVЋEy0z2SX@`Hq%KЇ7|0׵ +NqV4&j᫊adq㳳v~-#OUwK3|g T؜y}OWSǢms(@lO H5 1/>Ni%3McUHhqz- \<(˵KЧ`_~9X>)2\DJ}j7fҤoAJN!kFr?-% sx-Q|:D UKf;5X9^^}$%i-aiX+)~Q㐃HrhI1D.kDԝIͭas^O=@5\>?&œ2\0Ձ G%Aɕ h?V*IAO-ѱ?oA?V]|JZi]+HRjT{͌ȕiŲ͢рU"]ތt.$SԬ< +Y%+KGC̡> j6!@1R1NE `l?ҴʣZ)5x)&tA2FZffK\K;gqȺدիy%c5Xn{ְ^֯}p:tEҔ@+Kz 8thbNW|Tv+29\<[sb#,BU`KcVxl" Gӡ4+XGzl)0Ӕ.K,R4|J'vuמ +һ2_b_7etcG3Y&ԛژ/r#v9˾#1XI3FvO *3+fK/h e] Sҭ{EX=@T^A 18(SeN7)ȢVhA`e;+iB .(@d:f57m Y3f坰V#Vz%, /&: +Q8qK.Swy1T+2-\ΰ@UƱr>$ɇVa7-, )a .{ $E+"e/Y .7Au?_O9Z%Qy1-DI}taDZd 'DYA0NkWyu 4:;6Pʋ-odW('@*$dZXrҒ& ؁PK:0 V | +s;Pkc<1aNܑ+[1ܰ]B!>Nƫ*%|;b M.yS+@9P,52~赿BCKJrĺw_Q(I{)`25`:RpJg?|;sL +KAl"ppin&4EӢyt=s5,` ^j5aԛG粉3-he EUk$$Uj*/+L">ͫ!y F_SSV5O,d $'l-gCɨ)$ 5,̂c`[!K)XsE'Uiv>0m.!8c9%xNqh33 mnmیfoY$| +2jP7NMxs"`q' ̞NQkK @ZDV/uz@^_Nv O+?&o"ҸĆ% $5%d WdaҰ%ˆtH= p,]7f΀JګNxvG:C~·$0(‚FWb{cDrsT`+Uj$w~4mSeCiGXOy4ֳZ:bMD6L҆`J'6jV9}Uk '>VȀ}ozՠ dg#h6ɩIv<2~UI +T%BfVy $P&ݷ5 _lF KAhv1#<,<'5:]*ɵf-q[`V k1jnȷB<bz.+ ɊC {h 0,M" |ZFs ;`dl"q`ړxR `ůHA(@pd.E(U1@HSlЂp%'gbzoQXFa㐣,**DXEV_MMHuXQk]hWEB_W?˅XY\2颎ZKgS’A,UYTٽ ܪUXtI0\ѬK6QXp8%#Cd/E s"E\ޔ +䄞(vʥNw_>lYVF)?#/f ?DŽ;$d=4)2`YvN8*Mf>:Nur5(8_"Z҆_;JdPV2V%UQ +a/xTB&gż=_ݵ{F#7m~Cs_o 4;Ik͑L;xa(qwu$s*{tmیm,h"V oݺ`) 5G,%'4EpxwŬ2lj /cos\<1xRk$9DG~jYvj~F4A% +i%/H<zF\C6{+WdO!c`j<ߢ)א$!|Omq0 Hy =3ИP!H̤I IL 6E ,m6ώ(Z\`a4U^DfxV>{,Iz̍qj9Xq,vfR݋.X ql9Ti^@#x"C"kÀSG.ԆK~$piijK86μ^:ZXBL\=뺆hDŜJM$_8;WZ0JS$GJ,8-ށOYbb\2≮b+ygE%3)0.Kϭpf,)gX:ym\ rM8 +6k~ ]CsWlw@(uysX/^%؂ԯq6"ӃUezI:9PH1~ἅLڶ@aƽݗ3fdzic;nF^Th +$lnP ob0!yQ]D%Dd3zCP!Vz3dPʈ ] o*J2p +F5f/j:[fX5cFgկ&,n'f2VZUm:'Gq-{?1& Вe4)R#.Cof)qPA~mN7kE-G?h柍qb9ݣWUcӿޗD^$'!*d߃9,MBb79ұQ>ťZCz;p.2 Kg8ߚuPQgRmTi 2]s3L? ,!gLܬO2Vr`kk%[R^SЪڨw;Jx%1,p/ޓ|pp%3. JHݑ숖ac+ß8щIӤHfy ߉"C +SGԼ[ {b@O֡Wkx+>eLV/nhD2${-3A{ߤL^ H[W <Ոpp& :6?;u̗ И_e ;†Jڻ0x/xuu1ByݐeY#-4CC=!Eq9xd{xHISkreo +hdPcsaϖ"GW2pXUO5ðȁQvjFšm7ɄU ˭MGp o?Do#L}BJ49tWDDmaR.>]B͈ecZh Z/O$i]2SU=RDnPHEМX DGNߧ?E~ @T|:5۷U2{yGxVOG^íM;4E9Wgϖc?QP0S{$br +O 5Wf' ';wT$J72k¨)FN"AgX.-ŞaH@qحe)ztdį\:S^M ,;t5@d$*M/D$%7~."}VӢŬR1VvN)1Cd2n>sdc &C2M^ xi,"r7]@|Ł,o`y.H=RRB/e6Ç2Wp0#Χ *Fu*2|N̍fnx 9ňGt|2x /(U&F%@>F4܂PwQ7bn4 F``.Hc#ۧ?j91.#!ZXK,㖏B^c!@a-b+~`~!J5Å ߈z 76Ǩh%b2J]4.Dm + )i#(i ѫIeM:Ms:3"MQH#DAt`<jBhh ɤ"p"a!|"=9kS@ +Zi#M)& c-7F^x4cA$*2yj2*. +cGX@0Jd82P,, D;mN5hl^1*yT& +0wTlR^񎅭UpNC 6z~՛׆`Q@ + @"XkA8P(Hv1b0*@,UJ \NȬ(Qe{bqBbG7O&)&+ѯ^:% Uw +$#VBHUcj"8%TEE %A6/ &mH l%'aL\0n + : Q{DB*-p#V@PG4bD?ibD&D0o$C $`t`rQ Ga!t6 U/ tג|G&ǻs2??"8 yP` &48b$8l`t}?u*s:1. +Lj2!Kp2aAK$l?0=Lȗ`モCH)PQRJ +j3e,*@΁@@+%y@XLx&J-)R( FQ0n"idl04T!z@d`e@,WBʃet` 3I}F/]4%bu8DuGp&TL.DɲP2Os2"!$@'t:T=s +L J 8z yl ``LF̆dT$ n-VаD'.j hmdAPOuf-0p \"Dfl1W( O+D0PF1+%!N پō0ȆcS,h C0>҈h *Ʉ"p X Pۋ3aMq9-hX`T$+@E2Q\`LdǃaA6X@nq::lr&r5xDJ+#1 dٖKe.>hĕ-c`Z~ 7jZD<."&J!!35fIu86@ +(sDx }ΤY-3.x^tҬN6׿SzYegtKg][tD+{KJ۳/42 +fֺK˷ޛ]Sf<]|[,'v~e,'{iӯ.$폎?˰j'|{#(kmɽ^s cWFY zdj)2NgƓZk{>sRI-s_g4RЭz\(Cd- id٠wI[YOnud9rg>KouJ֌J +{#\ ?v 9ٗdI&eNܓV+xRf}崕2ܭ{g6yol7:2}92^{Մ*,v֧zg_!q# (|::B]?ͮn}[-͖L<'37Wd |NkF?yVkk[Rnk'TޯZ}->}r]q8g0`I+ל_x)(g6sM5!Ʀ.#+ ~^ zd ~%Ņ\G4L(WJ}6RNz'l'R}{VUrv-= +ܾ=guJmZ5:wKӷ56 +9dy{JYJ)J2]MZU^n)oSJSLZT:;L^QLZ\xmx'*)nuiU!TLgV-.Hcu:8Xqd"l-/Y_yg cՑ!ryLN,3k]2i \M-Q_rgjg\3B@K&'L \$$<n`LB@p#TH&G(Ps5\W[oﳷKd(-#Ʒ]ξ7ߗR9:ٽ/x-ggϖ-J.9}Lk|Nݔ1FN+xx=3ɒ'g?]fMam~N>)\)WNvKe}Y9g<ʬkGj3g󵴟mN\i+M9ښRozUV~gzvt +]aZv(ϻ2RzT־~A9 J.2H?)9;[MvuoVFW2;lJ3LolrV]{uw +/Ŏ}6~v6Mvģ}}fԯɯ=rƲ;:1]FPҏYg~jv[VږL<{i{3g[Ni/SegUb햑kvY3:[2,u[-ݲRq.FdEbJ)4"34PP$2@dI&@6>"40p $`  H "KeCN4".ݾ z<@ tAH{&M4G`{XH%C8{3"QfUaa z̰4f(CLnf)(Dr8OJ$ӏgCmҡe %#$o/w]/GUȌU6v=hjA#qr4JG+8eDBx2+-(\-"C7>Qr:_z1n/f{7@zgD=EuU"OK ,M[36SGC|n|D÷6ڧZ<Ēdd+?&ƓNM4)y+%43Kę2Ǵ?X6֨7J$4)ּmemLrMM}0ok6@݀r.=ӹ$GPDAF0 >zjNΫ};j3IҿpJ៭e/uvm#*lbcqI$8`]`J\@#nRyo#e6m,l޲LCHd`Wt:74}^hpUtR;bN 2"XGbT +50Q=$:g%Rc|ƫȲl%bob?f,KIFmDD2.hhPҖD;VH0=BkGƂ +C? +tʪ'$8 t`a3$o|>]`M&ŰMsIE&"}͐&4TBptªE(h0r6[Gۈؖ錟ڴNa npUB&|%f`'Ƞ:q- 3'dk}q$lg^M#lQ(lIqtWQ4 ;(ui'tojznۚ$a`hQ4x ^[D"WbKs~_o y{)+<}~ߢk` z'mP= ֗.V4mlJ eyԪjz=W/Y}LY؋-@d\MiDR!ٞ=`IxM)_'9wYΕG?i dN-N?R8 +s¬ ռz_*xKzn2HP$fS3y4l[G,vPn?`ȤFaw8A@4Ŭ0}0 T=)D*g)BXVWCf2#zAPBIY,깮!܉O,uZP֑(̈]qGl]\riw]9-ȅNLB2#,A4)K5f&qe0P .k8I\=="4Cp{5_P.Y0o40huDЉP+r!vu%rOtx (5DBIQ_h/ٓ&BJXW4ODF}(ؘ}Jq붱;:Gp`yZU`8bs~5^qHD 17s`:^bM}R32h +vi$T?:VSyȍ&;+[d.a~OeXC9t1CzI5,[ݡC[F˙D8ҁ>FOkV#sO9[h@$iIUr|e*wyA=mmjX4i}i l\GU8!ˑi@ћ:YZa&Bcډ$ -hx-+(GhX|g9(W :j'z@)pH<-G{o"%=@o[$ NP2i-t +'$T2o`0ϓb1@e\jQr+*\ 3qҖ ״,i@*IeR?[lQLi}lS)`6;|`S>kT1\Xķ֝Xݔ^ Q׬Dtd4/dб)$b]Š\<6U&L Q@Wu}F>$"Z2@C ̏y +{/=e~Gcn6(`o()>$.&dzD%K"tYT?KP ;*q,FmQ_f\]MOeK-iDwZF(T9!Kګ>CYȚ#PEq\+1S( R;cy +A_nX)80}9ҷ6q)Sj}&r7yDG@ϗL,Lݥь`÷ipՃ0VeBDO$nƟ8DD.23;Ml>QNÿPߜZБ[?(Թ$l0s VMX?eEІbq&{)0ّ{,;hD\Oc@a +m +ńŔBi{en>4#hqM@=TC#\3soC7*dpNh]҈nK ԍ  &[ G(AzUD,/].. [`wz3#Zq-qb`^"UUp%;H4txzQQCb,unMϲqն-5vABЁN> +A.$E-Vq7cEnu^/XO+UR,I,z JL@H˵#lP2_. r\e!Bʑ~J̀\+;S,5ۙh t+\,h>4ik>H'rßc%@޷ +'AG^>ic -Z@,#N@& c527~ U^|"X v=+mdWV3ƩzƎxB`~r"Z;QNTbH5.4b܄EPR''z3OG>~-7h1Ǝڤ#Ben:ՒΣZl.W$nzm@_m+# ((͘РpeuK#Ș(&˹c|ylk`g$V h6-l\}k’mJhym@#6Pǂo آdLkG6)!{m.,t,`,'gcK% +k"ۀu1rـC%UMm#3К<ľ)??Ca3B"IA|%)D3o~A@q}&*xd( Tj_1^ż~3ui׈Id 3XUu 5yI1.,q%ZhY_ ^"J'0Wŝۧe_ ZBr95p-fxb@}Y2@}%tFLw+=40ksѐ뱕SZ?'w`~SPΚ\MKb?b72hO- fdR%2jM.jWx,r4IЬx/*Oq)"lp=Ȅ!AY.HTD}@o„YD&iJXL@ŋ +D,$Νg-J}6v&RM,W{C>NQx6X<&CDUG2ybT qKkET'^قay%ΥU-2Y1!wم*%RU%uHXڤYe`7bFE\$76 ᧈٿi@g],:Ct*[+֐Wb~utbaIwI|3hL ܢq%2ǭMKλY/ؽ"!5BKVW<,@`C*=s'l)U!bIxh} +HII] I֏M@^ +H0_qsBY@;G$Cj- ɜ&XY1s=1=۲ Hj +fqzf* 0%f(`݊ +~&dPt^gҔ cOK +& ̔"S;В?. >m%uW㤏v`zZHe'G$Ѷ䄌{LdG!ij[Xw'3>}ޘS]wh7Ałl<_2U,m$Yͷ<܏14֭67rLp2߸;79&fRq(P[׸ %l^)_' 8<@VYqnCg0=@̉EOhM3Usx )|mq̡sa=' oꔀT?J  iuӂ;w|(x+S.Ty"!5bC4;6GR/;(FP|"/]ו_:! P`Z_>`Ҵ{NK1ln xИF껷F~ꢐL}k"+ A~To{~Vi#6t溜+ـ,3biT~fOMC"{0wy(ly:$uGH?d7H)!sHO@d#\}&ew޺[kܠõUX ~MJV(!b]?LQ/l*g=^g HeXT^ k??Ķ6S/=1+|G0bSOrM +x\Qc@ b(HU.!?35Z5ޔ 4P|ȧ%ʯ 㑨.4?+׳Y"zG+@r  #>Y\P1OP`>RWCJ7=\q5$$L:k=c"d?๰='+$JF"i:Db(^MX{i\ hQ@Z)J6 z,!dZˈG\œ*P(~OäHݢԆ ,U7.2}|&x[gjlXsC;szaֽK4bT/[IO6o1S;)ݩA:Kx .o_xtju^c:SXm恨r8U f.&+Z^XiE( K2 Kha ֚Gri@k\R(c&ZSqsVѫ.77:ޑ~k)H9g#bR]tÈF=~ qRzzgQcyf_W5` TmvIk8dM p,s6؀4pC&Gsqi-Fm{dHP`GBa+NS W"wBp;׆,Hۧ%aC^-8i %5B<e1q zku{oo!1H31wYeP]AꚥDZ^!+}a֌ak c§tEHAcyd] p]ˍ,9%HZ m]nBye( +alEDbl'Ubk^yq)we<ʠitz}Ms8 +y|ui5'i $4^ҝElc#v4ͲYDi>cGwQ沭24L6yҵ58Ӽx$OB&CĔ):M Oo7t4߸dzUO}|ݰĦ8m;&\p# +;2Hr4}\"jN|EL8H_19aR ;+Msm%M>-Lf1@C*gy|FC5gczE 1Xs1{Z% ln[!7tj"e:[ymlyئ 3[2 +sθwup&UTuVXCqRG$46 S` +mLC_D7|v;Ol5cqp-p?7X?E4Юhf]3!j#̅tp!"Kؒ-0a"5`n*&+-{%}&Cx2M Mg/.: ($QS &_X7[1oDɲȉpC\S#c!qnzAml",*[k +i7U !V"ASzQIw vk-2jLKzWd]By{ߪ./8 k}B&Ss/bڡ%(I;t]kA/ބ F"g9In?[1 Y>k7K4:ALԵj?<>ڌOx@LF6u)5E +c~UL RP6TQe| "yGҪ)R-]S$(d@(9cS+nϚ`ij(L̯^1dMx M-Dj)R% 9)R;;/F-l4ٯ;HE)x$5)=_cH5HD6,R.S٢խ1݆ik4NQiHwFP(R›i)珹ɾVM" + LjipR\I+mCEά/Gp&y1ExIHmPwǢEbH<>"LgNڋ:O|(KM?KTVT j!q0M8 TF?2f[MXzMP-na̾^Tb|)#vpi=۴jh2JkMQjuV#:$můEҽ$[Kܐtk?_o ɉܻ!Ǟ`u)рn&I&ޮ?ŰLO(bWF x49ۄ/)~ P{2V[r*Gf Dk{`0F1 -5)~5FPMr,-޶@@1+RjԲQSj כ"v+`1Nf h-}Ɉ %: :>h jNa5Ag 8+e,R S]:Mcou#KƣL۶" KmX0҃[=d3HyuTil+svV#~ $ Ez8$$09h$OLh[Jk@̣Y/x*7H@:EI%@s*C_҃9$n b!H^<eCIYx)RZy7l&X2 ,e JJ2Ń5 %db&q +U,]E7+Y$ZAKWC_ԯSTWYdH$YWok_{w'(}$4O[B36pA ϕ +N_ʘUO .5T#L=pD.TR&{Q ij@'BZQ}tR\[>C.#I+Dq'pwU;gxI]B5P'.m;|y$]pzr'3΄9>XOl&Xu}2 OVS1uxs&IEJbP ^ImS?/wlLϱKT|p-"LU3S+L<X9M&g_j'm+B֠b +vg,IZ|oO,K0KE@9JQf*<^UX“ +z3fwl'Xr6촲@JwQ?(yVnQl!a/~tbޖI [6s%CfNX}p\e* dTJ@TY}YusWbt^k^,3v+!d7W H}ld6%}zo`"(?sRb[":2kW?R2r|N ԝ/-O\sY)4k1Os\F1]>^s3ʊUyTy)piO9 ŦOK"a{*cW&FT(h0b_u9rh8M j3ʆxe\-9{JˊTn@9WpN|@U.12aw;nvà*S{\nRm o#aʯArЄW,Gyl:v;b kl#FpMNGb R%E +뷶*N~߅Y_s!xfvsS" + \3^ űWe{5 AS|$mtTRJlsfzWdRgk LfVԦ.,VlOY + ?^NLmsLQC95xž2|9^ []MۘrF>Ҫ' +s%w'zJacKn"f5nƨ$Oa/Klo[Df-}[3+ˋ~lk6n Bwc:fWp J>p$}肒]qF%jkQ2 "]W6BbU{7ZEqC" +-ϲZ؝fc+ˠ:P +% Ϙe_0كB ST}DLB**{ڰYUU4#bOOZar.{gh@omhA~Rժ9|;h'ƾwl@43GԲ\quٰ'8$È*pv/wu22+%[E+$[-l@8: l@0TНĩ}W&d`<45]\dFz iw+3iQ/!'8SJp器=j;df̼8d 8i ba-H NjL݅~1yUYAT+_"C b,0tn5FU 8h_m2n", jC!\Cc:iV[~1:>wy@Oz0Ʊ0I6 +Yj5(wȓW$GO*1FƱ|vs0- +!cjGQr@~b+11pcNe2d1a-QK(pbښBWtA.v[Ebt%:KL u6D@|\3:E-,WN '>5e@bm`Lw3kxk_$XxdZ0c6D&G"K/$I̚?t.\ YȓuU$0/2d֌p%eE>;L̪Yp;A4צ0$k <6h m^Lb_kFۉDFƘA%>ޞpwa[)-rlO@]fhTi'5(qewo2^"e$5QP$y<#܁ֈ.,[Ųٌٜ ÿT6B]`hM*-xZdXfyĔ\MblX0!gmW0hA4ceо!Zex!>r6ta1yPcjS҄ X綰N޸oX c?Xѽ2IVQ(e Fz +^ٰǽ C "ux$^#K  ,Y29f`%$e=SìLyPa bG&d.;\:[حUa#C3)\n !mRɔ5*K<"v0%|* +k _^'G2|z=!RY6 w&qt oXAL-mV -H} +k${{FS+1\/'p/B +[d\=K0(pJ`c.Q6.)jx5c~D*#1o_M*gy{VFˉs?8Ω[=Y;4>q8l&;^rj[.*=3bf/[Yk] +گ_wjkZ׮]aT +cP:Rc=IJgWD'2,j`"kx%⒛`, hj'v$'%q".7uI] T".KmȘΓ- s*uXYW,Q^6 {~Z6E y]6p3 W#w3I,TP@g<zhͥRܠ '7$Jڥ] UZflz߁U]&]ۉi}"{` 9:kbU䮘*`c(u'(1<) Edj L00wCC)c++ +C^~_]'RUQ]}?,\Q4^w)Tb#JYB7vC_bMNQqzn N-F Hu:X@*"J$r% {(u*A2 (:C1#Hi6TkϮ;Gv8+3~ Ӥzyy]ɻs&%DRՖӅTD=l]7 ivg!)e :[a#P]U "sv7JBj͑c7_)RͱE!3:7QFK]pV/ϴ+DTţ$VKΊk_UeC:#[MU5Ȏ(s+LZi:Mj'0'_ZjuVxrȅk ܿ (XaݦHJLVeTKL=RT(! +7"3YnS4 Wdg_=-WXvV]sUhmp.Vu˼&TS֕˜W$ +}yFPL{ 2v~{Ca^\eHr(:<`je@&3CI2+̏%2B`m.ͼ銽oZť2oG@,JDS]Jiw貎8:* T fA +(7)Dz#r{lIa5晭wVlh?f Dˤ/DRpxp:%¸ ऑj[&$F6ku}%+T^7 [79P6v@S:)n[gJgVt5)٩C»Jʺ@Q(BQ,P"̅Li"iMj,s- $nθDOT5!پP߀{[vSJS;ERҺ?saZPn&| 5DvK6Q曺քږ5mXqT0|Lߢ:حZI _iziCjY.ij 2b7XS~v3 gְB:2YwiKiqW>8;FrsU!hcE&ȳiYRՊaB<$z㑟]䮲- eUt(\}P2Pʐa3 ]_yEIuI[IiEQijtD[ꪋtѴt<&։ !Jݗ)w#+-B|]+#D!oZYp\So& +N∙>u]\bȄuK=/DA.fG(v"$LSU"o0=ULQ|GM G xP]hVG ij⽢1ub q OtU+pLB~W0̚[HbW=ˢ2XܻgJ]uZ^ɕFU]psB#%x^@y0V Ȍ7&E$2 NP2$Ra@h(aUB;XOy[IkUmewUqibkz&4s}PM;aЩOZ٠³+iYW8 +rm3a +xO/MbRV_)M-ֳ~Kx?ĽZ՚ %Qn%ڕ${Ty$n y@a""%eͺ;OgFS&нY&Li+-lf6DRB\xUKU+T4j]-)%r-^oM^\{dZתP¨|\"[֦;Ң;}.*b~yt' ųV#`? :-P1R(2#`; ~89&ݜ"zO8H%RuTkR5q{2f"j[DDh#]M%i-R+(tGUANK:UnYZ)`=м3q;VI\m]svhyffsƠdTn[c-]$st-e!`YDӬ¢UMRoZu&辩)Ⱦ)-LP +U֢(+.ݺ%vЍeX7ŹC&o@,vjQ@H*)1%M4r+ ":ocl02fò[c]U8_MZ.+j&+3VUjuHTBP +_EAGd;6ԩ079."Q)(+˖w:q+jf,KV3ߥQQ]eR-2qįWf +cj! +tT WY6u?R9kAC~J@nΊgϧD=fNYGgDwVeq!rL@G,*){JmbFt% SPZE&y hv3AP3<>(dU%,~) -LH-eQ6%`ɂ1!2 !aZ~j-'ʗ`ު-=#ۭjZzRBӶHJFqxEU'M+GQAU,+?Qyb4TEgu?zVĀ,=C=3@Zb$dBF_>(`#f%[ !3HC=nv ոڡHr Whw\4^͌V!{eTy$|d#e2{Tfteq4daC"& 2ȗLSYʒD%k {  8`b2fyChH 48ثfq7)BD_ +40$\⩮#mIdU29Vf/zui\|ᑑ*!s%?DtXd*Ƚ2i[FkjP#~mW +]Y<卐cEY_¨udq8 0chD@%j (O" -X rDQ e">: #@ = -XGF#8$$ }%̦a1E wETx:-.:|H l[NDA.,Je7F.i%)`P0*Lp > X&f)`,8o@%4a!4Xm!\n|,JƕQ am&QcbX!I!(QI 2$qe"*Èa@ - €$0l5!(A&j@7N¬.8˄Q0Az,Nl eBda"͡2CfP2## p0X6yꇴL( D040nZ-@6$E2PڂcD.8 ^@nGY&K`X&TX.NH28Ȑ @8,Ld80HDeBYОGfC-'L iAX.* R`L(̚a .,ױ@ -2#dR0py,)HgT ldN -I t ac" n`RIt:`"(ib9 cl>61- ci2Ã1 .4F -q|.`XSx@Qaj !M -/`#4Ow2 X0Hll0@_CL( b4;)P2\T .]4,` \ 3 -H2\Ρ\9AT,@T,ɁCEV2@T98TE$і Es(Y aJ;\60 -D Q OEC `ё-M+(0 -EqmY&Pl$P(aJ(.HO$p˄B ?袻3 T24*Pg*: 0  2xAB^fQ(\&2`h4 .$0K}x@Q *,Ш.~AgaxxX`ΣG64IA)8`llXDi0 esNpTw$?Q&S)eDAAe08m>stream -x70x% P(8Lll2PC(tL(:LaJP6̀`)څ8 A&-q%(> #p1!K*È60΄B&0XFȪ6#d^ěP: Gw"@U)Բs%RD0(bE:elZ0N>2"HC! (b!35t WM#>y0 -;Avrd%@!-믐7}䧤YuJ] K&4ru+#sׄ -$) ]D4S8:tMYQ@UrĖjT%VXF -NLD\ WDxR q -?s/Ü?yG)gfҼ9')/},0'ۜMH{M鄭6(%[8X$E%YR(;/4S@:KlSˇSՒh+~14*Nb6ßKjQ4v 'zR`e"?DZ@l ϐMdc#D0T 1Bnshǥ H%p1.5KYmم qTnMa\צ cSp a:sW1AP`tESsE{4|R] - @0##kQQrdI0Sl{ B箼z( .Ռ^W%Hhd%hJ2pYNT!<6m 3 -S ZnT8?ڬl Z;\ldAle(QdRϤl,}3Ro+C!/D}@z0, -e>R; Lx,/_+E_tNV4?B^- &/2>:ޜ-*$c1l( -|½aqú<6Fd 49e{i^,5#/Is+Q ܘ>=lFR@J\lQŭ؜˗ (B -Ez'VKSHY!UP ?@Z=HkI.Xx`A8&PA&aC}P*%+/Lp8r_W[kVq#|}:q4@Q6ؠ'~@rQ>0_cTEFgsfL8eR{y"MRxrD=)dm'?쳹(&wu.'C{st0.D7';yȝ]şYؑ}~>ɧp'/x@PkiYZ(Ah)4ۤ_\5]{7s4v'x5WHT8xղICbJDL`Ch@ -4`y@pOcg j -%rx#NլU)!ť52U`iXTP7雦^JAͦ|kLz>\?ir~dѪ0)wR.'-*y;QT &?ޟm̶L#"i'ōquyduL9ρ#[RUihDd\;|."bJ۱E3]g³iDA;q S>Q(#}56"??R:"йJ@ (f X#GdOӾeO6-̱[ tu=lm -@艙Ԫ/Vr9ynHLv-/)oԅ\f~C%p;ҰQ'XjUEO"{Q jO3x|:OQt*-!^t4!ȂpXR0,2v}[]Bor,]+:4MJ pҀիVzov)ت -(OKvIrY$crpȺYBưYl?<$W;gsRyX>䣦V Qԗ;n$emqs❾I4<~T}=! ha 0m6$4{;Lqsp:/BcIz[^\8A/j>u.S^ C[Óyh4Hbr Mu{5ak$SLGOK]tUF -w:m*y6'I\a{QsrEG`m/tK{Z:؋>j7#Tܱ +X@`ąhZ LeOæUqԅA]MiҦ6b[b -@}Ra不4_[T$7=I_‼9#婇J7=1Q -,ܻg8~ -w#11T~1 WdT~tt0C.:4:e z&?;̄МkGU7 %cc)1ӿd&.ƌi<Ϣh$ -prţbN9ύVL50~Dy һϏJXm [l=3;Z#B4~qM7PjGct.Bd/]du6|[j,/}\4{BƾQ@H"TI}k2zi_M$b(a[iIa6 -1q *BprsPHHaN7`Ibdh*@ˬykد/b73+Iu9߳#F֡%ğri@XX % -QLY H=Ȝ%rSK XWP@OnsZ3c@ġx: QDndeZ+ -Hk*%Ֆ*N[n)|:)+`sN -7@ Rogv\ fA3ٶvwa]y YXy90?IZSڤ ʕ.-χV}#Sz/A3p(2Bq߰Tv ,=|R$;Kc)7JAm%0H;I i۰V տf!@QҾ,Vx'/%ڜzr {F{eFK~tUS4TxmryQW7=JdW2}p;/ ΫָFjxz.(v7h^ryĮ¢ԔQmX -B.e@@1L1Qj&C]$';_֘y!LH4a pUڟvotE"x#22Q40۪qZH)Y/K"7jѠ7,!y{PSd# ->1$IARBl%w M̛*߇wl_wNmB0$/;Ba(/n|kK`9W㍾%?BDN'8 <;e঵ɇF'o>K`W@V&u"GS-m aF'4h-r`!Zk+DdKw.*FR!xKTK㠼'OssX~6SPM6W|GaQ yj8ݢK,&X+$eC/^he5.?IqOvpj?R{:`%>ēX3ߵX&gСq!]itM]qfքpq?!fM0 AkJL+ lNZUΏX`hۜ$~p*(!W*zO) v{'Zvw,,! aWzF0,?y:jcʌ:Uch\L+F&59+Zg2614Z -kxk}j_+Z)WLUlY,NvӤikiq"ڧo D=~EլR}'dIML}.+u+]z#ygxz,p|e[--Ș_!rn (43\3i=ʙlctȗm2!/1A&˅|>%F(SWž^EӗnQ!ٽȇrtOX_8beGDن́kJD60׀ʹ금c۟acP4#;ni\>5A*,"ɝd^&N DNAtDr@bB>! Ģwm%R%αltDiNӗҏQ2ͷ1IrQn߂PU< 4&V1XQ/Z_\G - RKZ2 ܇k_NppNTlVr-&Fe,B8jd6,0..@ˇWꔶZIL>eǍ$Vw&# mǫ▌08[= L`\]51Ię+&CbI~Hȷ3`8Depa -#Jgl!'S'e`;#66D*/YɨM';*4G=2HYަ`ւj7_SCL'beH`5XwZl(0<.PF5jh[ XĹѶQk%L.P\u\>[dtWĶݟi@Aʝ;D8vKO~`CahqÍAYɉp8)߿r%&"vJ,#omv$dW 7!-@)RH4@Ly]eJiBm[ܗV7N rJ/Q~ ʜT\9nX=^h$W4NQQ֊2An4(vx$C+N!AkI$)؍tTIx2MTaԣ@y(cb1 Y] ҙ2`ZoL? - v`M<8EKxi i=!*1!A`퓋B5ݘ8xrl)bD?qgw$U[$;蒖f/hxFDLl?T) l< Zr!ϡ,-L$2bV&z KyR\E'\ [檇X}T֥͜ .8Lؤ"Rŧ馸;DH24]7=ÐӌMڕذ{eY*#Nnth ɺ\]| 2V m"3BcQG)GWBs[q ;=.h5^ރTP!P͋FY^)M Е9d11!Pdi|@2IduRM7~Kf--%1S='{Zzח^AF/.HDذ\՟{uxAʈك cLIީ;P/ڤx9,-z9-Zc P,_ܙ /\=憄 \M 6vDG>؃JtME RR k3đy/X$)}Go'mJQ,croqπd_#h[xo[g~-RPh}I^u"^t&J p* +w$+:B,JѫPwTȫ w" ICBr-Y,ڠ#F{Yp1&%ƳYe?-=1mƔKs,"4xX&Ӄs0@ -'\6#+a?ʟOUS7s&k4kCGnV">ykh8 7n8wr3`xB]c;5B,br - tRŀ~htA-jEi eBguE:红8%oPHFvwJnjDd!I}W(\΄tHh -% PUO帖޿/8&g ƽ<КA -F mR FܑءB$XheoY$] -NN}0p1H % KB ;E0-nA-vxZ/Nkpke5=\EQ0_JGѕ)70:ѲdfTq&82VW2l∳&^,R;WwU8\X,.2µ02g -0X{>-P|9 qath? ClMcIڀpOPD9m; %l3MK[DSJ#oaVDŽB[3`ӊ*ןk|n| - +tv˄ьeZXCwDGإ mgK5)\r})fܧEcU_s_~G~i9!HsI -$/f1 Lԡ{e{}c:D?=.) +)>ꈽ1 -QzXjt`ZֹVI `y(ĆJڭƘՎɓKB<̀Z(CcB ,[f1Q@~<`.mA: -ENh*DΡ_`gE-pz' _"k[V&l -xU3 3\K.S@m+? h@/[B$`ᲽN5r$%-TW`["#>cW=-gp&^rzO{vro)>Y$8GaD?O'sLH;uF2U58\m"&$'E6Z6R ˍyt`4T'nn1 G/,DÖӦK 4!Q\Do@2V}s7'!jL[DY,9Qe^,C10:yQw㧿l.X[!5@i…c`Ɛ1Au%?7{O^{8LK]'g$ ߀lHRN*1P;ضTڼXwpên>s >dG=ӹXTpyN)̙<^B6/2/ʞ9b[av^jm3Wro"h>ݴb5.BdknwKv\_Dv<`!ۮAu*3 j= ohSH cT~1QP.F轳2$aĖٶ6 -}BCVqChj#ElV(MX"m,NSzwgq)UET3Cِ/N! ,LKVfVKhL & 9.]8@*vv>ڂ/'lҚ,| R6(:id~Wd3 r7@2–>vn<5?Yc0`oLPcq|7WwTMq,]MVoam?5|/w9I^㝨R"{/QT ZW dmB6$m9*A(TJ$*Ya6#!1nȬ!Yw]R0Vv=98Qi%ǚ禤036 < Қˢt. 0ip8d0R(eɏΠ(,Tm!R 8.3B2&UT6{?hoUb.]@86¡Mb=; -1"|[O6V U0SH ?S,'傽)Du 례n͆Z.? D-̛s $&q{&+W fێ2+V &ahp@FREžt$k@bWw>Bh{MnO j;Tq{C+\{3sx:j7֖#\ޠ"3,g@;/4;/2` -Ck!ɸmnE+<"钵x%C6;}!(޷GO>LBUՈ\@;-X1Eoi'@ .Sz޲gZ2sd{P\GHE44'^":ȇWuekUo;3gOuʱ3{+ngd#+)KjSgݕmIKR%E.ٗKz㿆lH#:(,CzVa@tF~9Gw+k0 d}Ĝ+gbEȅxh Hs1]$eг[sYV;Y–܎(lBt y+ 9e_%>Ȫ ֲñubߘOj|?T>i@{]b .ޠHb-"U\Mqf6.&H# `MHD*]㨐'~Z}Ǣ+qVW7[cVv#. mb5tB舛T0m]uYv$Jt;cuQlwbIPF&S}"J#*<(ehZXmw{%25(S65s0&[\ri[:t.DQx!q i.!&3yo2T!W{d씃5Y3zBz,թ0|V&bR䌁P:~A1fT0_8¬<8@dFCuf5ɞA!.D"7o`qTң -=1fA5 Sjufj%v -(4HLȩSd=B~Mc\:vn&"Jmb. QD RV4hRصK,ܿ%P4lB1ToڿxR\ȴߦ.DvooWyسm\>}SaShnmK EX)hܱ =B/!z%/g$A=2{JIav guMgs{P9!CfBL&/Y0id ?-hA",i16zgsJ5j-#)-* zFS.y&cI=Z.00SAZړ,i}r,m1gm֦T]HoH!~bې$D0-X2]*_ +P̓ 5%5XdU6C ]:FlGO=)u $3͜>ZگG{O9E# ݄׮t'c̾U#Wj\}byC~[Σ3 j6g^$J0CJEO.e:bIlGnyRj^\fA˴D2l36{vhT)e$?&8cZk`PT ۈPR'Pmm\V5]6(ؗ8vBϗg[يoXx79)ݬbv@ Ρ!}xA6h )EEe2rv`YwhU7],Г^ZovLx;93,X+ =, :WDp2Jb0Grjj* 7`!}h\*ZѳlFS:A'ؙUU!U$=PZ7$[geq~EIcchI&gj1e)r)m9ZG:Jl^0D`%})3 a͂[r7iZ2aO4/Dĉ32YI"Q[?n(r6OD#ނwAs9]v́}|)zucB&(ٻ4 n/Cmι)Fi -TAUzD})3OG0{.Y(fwln:SJ,}krTkH6!rBꭵ4_$gma*/E&XW5 (YvoJ0lxuxZIjrU[noS!i pҏ|\Ҕ A 1K+˿hjR`4S\j]r=K!!b8Xm$Xl| >Kջ*ee7쾥g"1)2I7`So ^RW4]m˺-+d p-deX=X9&_fr߉?Z1ߗc4l~ SRDzHfOV|F$!l!,h?Ei%@&y6GEIeo -S -҅q2)~':5 i'84*ovȱ:a#׭!6ni]/FĽZZM"}.ۯ,ݠf|IjQ(POYҮ@],ןx0CYybIFݩFf+&IRqs;V%\KgfCpzRK׾~:ʴ)fHzE2J L/vJ`Yՙx t^qNtU!Eb֓Dk˚0jZӷ T yeMJ " [C>BdAȪ[?.1@9>VVb}RFp]Q_WuE^vxOz0T@PI5*ϛ4kU#rDki_psY+H>pL|V0ℙ!' -7p5ci5Q) 9p54!rr ;b˪ޤ p{9Ė) Q5 kUY|m3ۃ&J1#[֟W|SN6FoT:}Ga<ʇSĀu$1\gp}­*xs!]eb4Pz5]4 C x!nʱgK3DH R-c6%ѹ,.ڼ1[ -lKeJ2@w:Z_MgO ^N൧t鴖_o⽎kCyћ7/hw!_J#5V53Θ,,9_ұo@sr(aN_ Eg.ƌқg9SFEGox_'KV ~PPHSҬ۱^s2FiX*Z3*'UVɐ_.0t -0dm$f ĚvZCv) =Q^I~/OxUҜW&6 ScQ-O_Qdm0 6>څ-sr6\ٯ_#ʠǻ5n䯠pD]xqI}`DB iXǸ9ƻ"Tژ ˒*cVV!%-q9BƁ-DUx&Y%-=&TpYoH% Es'SDRsZURp=j!&y2x"[Jgqmqpiҟ'12ff"h]* -$K`[σb@%hQ}ii<_j^I?r.'  er8!)vA]dӕݵ9th`9:cpaHR@u!pjIH|'\h8n5U75~lA)4?vW#aPJiWI ,(u(,lz9 X<ȝ ? mhFTc>mn|fZD*m|¬\f2YpqiX|rVm'g8<|P}Bj06tQt`@J&q cK+ -oB4"g8Nz< 0s@łb^:jah,L&ixcC ^M B>)EP0Pk8ͼpMlCpk"<ƪc+CjSO5pÛJ_ 5*cFܨ񟹇ī\dD {DC4C+2B&AD>C >/=H=oxSu;˩}NϜQTQ8f{!wBUtEqr!YHt^/+Dk8a2Yg@/M2DT˭$L`NgFq i_O'W^tA7YQ9d?:giK$ .ӳmCp㐰TʇS:bx93+B؄,Q$$z6nO/ Jv_栅/w;wmhCȫepi E.M}4+?­t|Ane4XeYb^)?fdڐbx8qODn/ xZg/ 8_jDYٙ0ؑJFّ;i/ y/NsZJZ$/Oۣ7p's)CJؤR;obrBd ّ6صR9vZ -]JF=Pc7 -hƎ*݊AcgsLJzܵG_Lh~/ vIcӸoV&IVk'(9if:C"vo,C r/ Jm+kcE@k!陴t|ǙaVij a]>%Kk뢈N+HU֌GBj3Yig>̋{+{57H[@hlv'hOY> sͼ5Hh2n-Z]l գSEX6cݗ3-7n2]dMҟoܪ0|I\*3f]P^7lƷɅzRn%o60?sM0 qKMiy KCBꃋ5[[^@C<k\Ѓ TPh%t`Pk-IG A]J.|Dϗ<~XKi!4~xD7[PU=(sdԤ: ^Ihpmn6l1ĺ%9:#YݎFjc՝fQ@Ə `c׀`½ w7Vt#kY–ɘxUKx%҂jauf>Ɩ"9YH<]6[raeF`Ѭ<=a ^vd`i2/Xf9($>Zj6m60l8i.O8R(%N´VZPUZYn(\EIk@@RBP>Y"n @ih0T-hux;sxeX`.W3J/ px/ `kK^˫fؕ8&#pT60ƸބجtvlV©.(ȉn+u[ݡl-k"t2Fk"VĚ +G?>0/=j""+̖3 IJXV!پD˰yf - LJvj|@4-4(| I={!tYK*-?4+ ~;}>>C CG.{߁)L5QX jC>h \i(nfgƙqOt7l~~TZ_,[ 6@ -m^+ޜB03F!GٔeSʦ(~쳽8[I{oYmL1$<ncrWh;n$P~LM~T$X00ihl|)XnE+B<A 6dQ= CITGPtf:}a9 ZFolLPxAN1 F` Z̋J( A)EMũQaS|Lۺ6v`~3S|͞`ˋ-c*ȬTB-{K /y$=kNͥ<~bmC谕"uw姫HUSD%̆^Đ+b6 -">UXk!g+u L jE+Ԃ!i$Bg(~ :& AN[7g$fנ#<0[2$ĭ O" -澮dh3i%~H)B=gUhhϊ9 io/ y)Rg9ڛ 뵗C-?۩p GB#yy$|E@+:V&E@ )OYJF-=+K̽=m N;Wo9h8lAYb_OKCIժ^@px0 _&|%] <+ܝ>F" Xq ,mnTws l>@TJ,1Ǖև g׌!GeNZ916b"gA^@0^~aD~kCI!?[F>3+g2ΝV\le1񍑤h -L7h~iRڢk>NߐVAdNBq_T 1/]}@sH@T.JjΙ,޽)lK.5̿MXh?Z[h•Mu[(=DшUn9< -v+aNkyaEn•#Qɖ`P0N_h\\'G=7?{p@n|e\YcI BiӪ8\ ~./¾+OLVf6Q֦\RHy([ H%Kȸ590%CM-[ &B- ָP *wcj:,T>cW0)Go f7_XIe,?F=T:fbҴCJ+r~q_%GVE(ID+±bH:j0(+=8m{A@6!j2E|6B"_]]f X)]X+G(_ln1+ tyn~%gE17S o11|']%s<3r{Ľ@dJ< ̋+ut-bw7^r+w -v\ ۑ]q}Bl;_)C^7QhHeFuDeΔF8Rp*oMq rxB\Yf7!#Չ#aw) @M;-nԘ,Uұ͚hUQѝT򽹪uI(a c%ҔİcSt劦s/ 8aOk .rRKWhG$Eޒ7W\MJodȈXb& n* W $z(1A&C$K|6FC%u{?go f#B7`3gײ x$\Qjs -ф֐6ҳKZ? sdxJ/ns}=İ%Lx̓1p#E7A\ @uXbi jO P/WW܀N:L"uo؛a* qSָX'܈$ r30mRLE&3c/M{8gAdI4\~Ctd_iE 棎F7^@3LrY-t%TبaO d{oۈmuY L&a(Zm ĭ6mIc_VBEZ), s4$lFRHtOu:Ôu:z8V&˓VKk :8Y2#VD l~ ĭ.['Sm/O֍ T!$p@LDch6+Oy%515$g\n-;B= KpPB`~6L1O\ 0|;/ x\v1X3+\R>p^r`U2 `GGWIxX8p#/ ?td*SH5vG~eT񉁳jNp*%NXę$ofW 7ټmrAJ_YxL Q | ׿*ћ`ZsxVTyAGႌ^@2Ԑ8d`iLPuV zXD"]TE ũKy$Sbs!k(Qث~m]$̓H -hȐ99|dwBNr@ -)vUNnK9ɟoI*d):u(Q8 sd I5dRRS/-\IxfU`cp=Z<vƐ%e- }0k3˃1glҕu12@afht1dX!7,Y7'_7'tdR=5 HSC T6r+ '^{ -.#굜+5n B1݋xlx3k4h: -3"?Qҕ=L0^>'`VlHULz(CbZ6^H^{ ͣ#5O˗'kӜ/-jD$_?k/ ݗ9vˮԠ?n#JA!Bayɤ wL|UJ wkGba Q,~5{'a_ׯ@*l _kRԛe~mr> ,T&\~CPX&(:l*qjVWƴPId}_Jg~%'{´AosdΙ[  HP2Za7r#Z{A)<2SHlju6]Ke^ -H)n `\BBfpb08DEp!.'E L{d2tad= qq(at8 /d:0z||{<91PuPUivA4BtT]ȹGAH2_JfPu*8l#+H..rBV?`&܅@={+@VBMr%=3ڛ be,q?a)h;G )n/r„80K ۊkxO߁sͼ`Qw7}Vּ{B~׎{G*LKnj;&Fa .VE$\6־Δwfqx=%ۣ7TE^^*H+!w4[DHKBgqNkKjby?NDI9YllaIepk4/}yL -$=QNptԼ9j 1u.hI*5TJ.(E@'>`h2L_38=㔣^Fn+ :kjKNJ#P^g?)jd=,/MB^7l_o}5^JC^~MP{`Ur~9(8<@5pru2ǵ+h`ŷ5*0N*2ʣTJxoث3lK.2ˇ<sm6evEJC͹6WX!GNcG"GVF^g?l|Nkp/ ۱v5轍xJ< g'73}ڼӱ|HQv4_ u $RŸ9 G.,9׉vZ^zɒn{0  ->;JVzAQe_4bm ~XliLP{c,~ Wm * CM@;/L*.3&<ِm (䂡AR8-ſ"w=gj¡D4|uc -A!Kwb2--P5!?N[X _+%9mLK&irTDO:ؿ ŢUibVyx\_ Wɹ!Wzo=:Ʈ^J6Wi\A+GO$s(~ be_’/RXd|LjI]_a6}"fonܞe+1{e},ֆ[]~(~%$XrŸ)g:ÜXS"!ٛq^k ;T➘FEчkVpepZ%eA~GC+#%T{ LZ햞% }f$&_;Le#++J,0hE -y F{3n>CIUCMֆ^3|bSOaޜ iXpj>LE jmsY4N[rWO) ܟ -hp)fmSkLfi[̈<ҌMEdD|}H,=N֞ 7RU^@n•'Wy -|=Mح@+f2Q9\̉՛}`gR£6VOzb)ļÀ8~L x_m;7<{V&LF\BB+?,ߣSBE%ImiCh4Ϣ'"W-v:\r2k`4;Ri5 6-CLv6kQ7 }튆%+rQMyVNR4auFYxֲu6+mCn^HxdV:}JAf׀6hfzA+pWząg4$(zGX6VMIyAn4Ֆ8b-E:dh;U -R.1ΜMR/a $-|hBJ'LaRiȨOCy]9,PtK:ѓJ{!SrH+rF| -WZ=*@m*EyA[W/ XՇɩa/CgW<Լfڻnd{ Ks2:yՆ[Mtp؈z3`C@lrw (m8d䷶+H1|V""΍`8]{[Z,FTH9-9vݐMkMvBmBG#Tv7֎pIm"X%pʤKSҰ[r8$vnf\rpfЕągI4GXl*÷]tH]vҒ) 7u}8'9gSd8*B%~XyH!Xl0 bK#[PzX/l4iy;?vI#rO)0! $0z6ZcRnHcRq K-{S7,qxK -ɴ䋫{ڗKK1Z4CZ2zė~ė{R+4IvP"uȞ"ʈh[$Ӑr9IMu97 /[Cv2LA~oݙ5%BV\=A`5BҎ}x 2 -)vm'l >  R'uJ1nD/ 0$ \f ga4p')r ٍRNtۈ'd_ 6gx D)TzBD7Fn2kiBE@ܧm9* ^B' )̳]$fR4\ih; 1{p|r!gP0TSjSTd䌍892 ^qsvCT:mήp#~J2<$Vzޘq`fI)r9V0Ti3/ ȹxy ӠrWy@`%|-EZi3dUTL+:Qc! kɃsGHLݥ 6 -x9#[8Ѹ~wJ;0Oʔ_Zt!j -&AC0G wOjm LđE#;r}}W5= E;Aё,xӉyI9%(:VZ{R/ 挟h[t J 2߅R>$M"cI (lȽLM[;Fڳ7W -o`㽀h0GPʿKr5Xi7&J \' --v'I„#!W&VcYn+cP6$X$?IgS+sN)FoY"Wnte-7l8F`7ֶ+ Sݵ zڭpB@D=8abg pzK~ԖCB۔ -}4ƚ"6!(4VeHhiODmtWk 3I¿4? ӂo7@6U430^|ցw'8+ jZ#j04^Ť)E֕hmWʔ \2\T]Hʺ2|Pv?6 .l9Qcsre -9]6+} F{(勵W`:1?d^hd9F % -)3Wθl 2"b`g1s|%J? -JGBc-MN1mY$ qi(*K̿T@8I=#v5JZ-(- fr/Ġ -%D/ڍaEw81@`,_]>-ɘZ?XW4)h6U||&6LC$M$N3ΐp}aÙ#F$QlFZViA_Δ'ܒH•W"lvhE@vN-# qD>hx( sO{0>0[0 8'k7rN͔EgR_R|\|Ccd}*NFhQ4Vq,)$^%Pag"/u>`{538YN}>Dᠠ "dX38 5P0K}i7 .8/i;ȏٓ&hE{I}EBu-#[½G6֖o>cKkk`v$6zšeU /q.+]me'0ѥ9%ք)PPxHStE'lK⚶V~R+PAۮ$P -f, -՞࠭%cAWtu{vYڔ5K)I!-2d߳Bڨd<+ľfkV֧UkjrR?* /ӄDR&cCDպYj\:^f\8XG4 *e$3#xA7*Tį Ax>0Ȝhp)uY5w`y5QXY"U.e\b>a*˲iI_V4y_^<f%d$JVL[`aqV<]ٹ*t6N@V_ai5Y'U(/kXcxk8.3ec>lKXc6bMEjW -¥Pj#TkS7>.Uas6} -JU{l 8X{GD)?\SS2_XTO_+XRr.^ē]*sJ_xKg&*ՌBfgh@,2JK5 .TլzxfoT`P𫓧R8~h ǟT"K=F_,{W}A)ue*u,Z5i.6/9A0ꨣ:®4έRQٕͰxEغni)o[y~T}vZz -s4'< 15}_",Ի0CG+ ),Գ'Γ:kT g'MŤ́cU:2)[)?K>Gp PZ7om7`aILVدzS|lhk*pU-#+SvZ 0j)u)}|V SvLӌBDvBBM:ڻ#~YמH{Wbg)V:åJfPSƌ@Yr! gH rkTwj2x'dJߋ l4FZ`J~RA*c)'!`Jy@HMaٶ~!Cb)`h 0BѨ6WpCe V;boXbJquJZIkG\$0V "8 Q;;:ۛZM%oM6gf\6q:Z#@n@ تV+W5Yhr5#`e5WjuU)!1WrƤVkx"!J ;tXCv:E@:} 3n +g!ʠu7?XO[}XYůJMVĕHM j*l[nZ+RV|r+­b?b,#NSfcj+}O,* vj= 2QY-XG`%]WЯZqU' -'oZ9FA{R"\ROUkm\u+_iD\{sEHy&L\22՛Χ"UxU/E*Q'R=Phҳ F~^ -+ >F^-r q% G:*㪜\W`@VF얫+{s0w`&\;8(`h9m).q_"HAL&?&? -%DNx -4& -UXoH)UIf%q WX8SM\͔:?6HL1CnK//-Z}j6U55jJseMyЄUЏݏkЌGzzD< 7*Ho9e(7e׆; 6`S-Cȓ5o7L!6@ TQQ` Mki(u)S[a^NaK) ?O2+Mug>&90{.ɪ"#&Q(jc 1BصZh#}YS}7o&jbv~ ݮ,J~wDcPUq'u-J еww^|)I>?1lV[kNxR`!Um /SP#cH*3[o3 dw] cUJ@ p*cYҚϪ -%R*k,3*R]CUIN~/|,]9" -IMR@I P1#RUq$\䚾!fB} JF}U |۪D+Ut/U\JYjl#GV|,UZ@մ+zV3=C93d;p+RxsryYFS d>.YK5 h.  Jm ⾜tPQh+:s؀c#XbB={ύ$3917+Yg0ee*=!H6 +(k!H2_I?f#Q>z&:Ƒv'hdG,+tLo% ʧQ2l 4quâ[f~#Iдr$Z.IoJP#O%~nYzri`kƹp#L28#mf +J<"'ْfP"812EvfWbMg[V!fh9] EeWo)C[Sc, h3A:~+pI +["\GNp%U0 g 1D9)XcS1=R +Gl췐<(lUwD^}4(HD ,r:˲Hmp(dTV{Yx;D?p˞Ѹ"n]z'yUiaY`ZrZn.ЖG +a%RK5q(`=3قewIu\%bXLBsKP:1IePJH XWE=3&$W.$yYh]ӋJS|=rPJ.Ci켫軦]Sy[FN`6z(J|3BA]o;W)wJPUw,+$QG J_qw$ɹpz`Q-F#Us &*/Cڦ%4^e4,f*Fvg<*)Rߝ#Ԡ_4ɈB5ۈ(ʿt(3hF'Hڡ!>Yp3>2XOe%u`Kk0~cq+ӽ:'5yAVAp9<:-;M߄<_ɩI?F@;`CL.]3l!I}_2 @f5/Kf%v:8, XGk_$v*HՄy^qe 5=,e +P`pؤG7v!ߌIboaH 4 zl%@`Y4<XfIB`;BiflrXs֒$u'`F^E^bmyFB[2 ` f`}69 $ك?$&c +Փ7x2p4w&K6^Hh'xέ"@/S`c;CD(ݽb/1=ky$i$b[7#$ѿ^DN``"ɂ:l.SO'KP kaMhq9WCOJL:XH))j-s0X`.h3yЎhsj6|^^$J)3K#jP S]}!5e."/@l:+2 3l:l7;e\/C)0I1jӒ9 SlA,+4 bSPb<鱪^ca"rHMM<ɸ5*i̺ 'fHzǗ$ O|B㿦ƻ<1%[9 U|)$f?fdZ3 eRǘ2r wh LEf-m1_د?vH~ϐ 2@ c$E(q@8aBptZ + rȗDfnXA<9$bZ#^^) a~D?:=ccHjFſi^91sM9^3Fӝ=ǒƥPI$&LpR5ujl*UjDS%vV߷lj5/i']?sٽؒ3T)e{Bp%-(n jlN&SF<xʡT3!&lr\\>_)8E!# ߙQd eI5pGyd@Ijt>>uǧ7m\)"g?Di\(WguI;SYeaQgr@v'gxX1| h%p;'8D@PV]Q&QztO%X L)8ڕ|b0ęoN3\fĮO,"3=TxX~ 8ws"7L.ɼ&Ӑdݮ}K%؇"<^nzLL<1Ud{) Ԕ.PƜwV8HꈴǕB|t-$䎵M^*-aR떤$(RNdz:T8S')9LiCWql\RM\@=R}܀TNHfTBWd`vIV`x@3A㠈қIN7XcBco@HG'5(h!/3^hI r8 Vy >L ZƖ-=`Qb,\nQ7ջ)"<="ˮ +&֖ʅt9]D=Fgf{#lbVMU\STSyAڃr5LŮ"@5qV=wB8ʠR!^1L+Z0%OgS5ďSuCdQZ L5޳yMT% B +#=Ph`ɨLy7ґN DY{ +wl"h10zkx'yD1Ml`VJ&3Yk#-Tیgay%Р͵=8mS8mwv^K)͜ ˓1P }Z ge}$z ]O);o\5ygC}JYr7^{W 3 =!?Ӂ$o)pԎ-F&~DeH k ϚHHvWhEֆ[K +XLXہ-ZQl~%E(u1P8 YEʨA ڴocP&ˆOBe3[H"%J )C}S]i5\kLƢ"e樭R-"ymGvf:6 k7-*f'VpeDsoEh6mk+fGĄffD`-* +&MdXLMDb%,( +2Xih;$L|ʈMEuݱ=Ѹ݅@e0gu +m@ Kɳ8cCMx 3;LK55Цat'W]ꢆ&fD7lISsV} si l:2t+H4^+X<(5mOFxd R=t9m-e,aWOzj.rПw iQl$rndK`:YxVPJ{|"](m5D{M;DmAAʥRm)f]. ^qNV(ۀğ@2WO0P6HI&C˺9(9҉IV,K^BF;x˜[:4$ %>|_ۙXP×t_`sY՞\PuV^䋪 d^^"/߭;%v2 ێtA}*|{B8( V6w,/h#ㄺۺ\?/~> &$lAp.eެYvv6c' ӈ9)hǂG^`ШJ, Xi0(WdkaDρeglԻ۾収Ɉ_3=gT.*4YT=O$rMVNN:֩aU5.Pwoy\Dct+1b2VY5 b60ѿ_t$TuAxl#uѕE LF>w_i vU޺&Yȧ5d:mf_ iKJ *b{Pd#Wܮv3Y=0U<dث+ Z`7.ewge$%jIdyow&u{II*Ή,bBmx 5 +Om`p#d`RA(-XʉUP8%)}+ElH\ +X s+g "MmL!S{6ܟ`*/~pXb}>stream +lMY<i9$ ~S@Hhkm*+^a%fosXZAE?g RPh,l)b(\YI1GqSݏ>FNGRƏH$6KElL'.Ng#;tPŏ=NSXq`=y}8Lm]7L @NВ`x + $ 2e=WEo9r[3pNZ/╓cՀt/c΄b.Fx gٔ,幱E.qV FƒP˜3‰^PZO^gdܺJYn:IQ&:jy,=SN_"K_ )6pׇW^Q!,>7[$u U$rGC?[SB#ټ-bz&/6*ŲjV$v&7HM"}LIIi0dКps! D/i$U} "KjI |zdB~ +M˦S^GJʕiBa">4 "&$Qߍ_ WCZeq'E 0;ƝbzsvFS9`4P$wEHF$}EN]~Xl:rgǯ)2KLdg IlA:J Q#(TZ΢9J`]oWhnrď;s\i4~텛P6лzm-1DaMf-ҟm҃6wM2WCu4ŻJBVYHU5zo^4M + ԚFt(Z\f9~$^ Ӕ`u)}ĄG| <?G 8QzQwuL(UBe6zU=#fh+k=ܒxx6׋C`,Jgޡ#c%`['Hg$!1R74r_D{gUn6 c;J4=C(E ^&dKKnH-Jh~aD\f'DIl؂l ,&~s)]lFcȻE4A1q$6r1agDR- +°FKD֠AޛB&sl%*e}b;&L 9gȒL eP,5Ԩ 0OְQ Ԃ^dV($ԗ\8RjyX +b= I< IE_i iq:"^& @[$hƽ +fMZਯS,xʳEM |W/ 9-GX݌FD\E{3v*F&96=jo,W 5GIWwT0LU`e<*G4"'3:c"tǢ[粥Ҟ-ΦePypvԎQBJL$cRC8# `xR`w J9ܱ-8ZI4AEg'6̧uj։;@IG=޷=fyvTK0_00YhnjKBΙiJ, UEZ񫒍<,r#CUn4arK ET)Ժi& +`P*5Γ)ACL 6RQDꕔQmfђW:v EΉG7:Ae[٨ =>M}0.J(K_IO5-<։=GhF gn< pZx#,lUzWuKZ?pYڛ&GҼ$ZjUYFz*5'W[6G#iOEn=4K.qV,3+d%EVfB%3ҳ)rUUF,MbډNMĽjS:.6T[ +EߨXwAO-W$JCT:\X~T 7}U) lPhO;PRl䘁Șq3:Wv +Z1ȅ2J $௥t +P,覶7va;M?uc5>t*V(w޲VN:J"pZʐpdR 7dn Ҡ',4fXyt!սF[2EAW2ypMB& UMdI`;f{޸aNj0 +ѿBq53餷'v5}& +$q2$Zn톰찤| +==.by׺i4]S x6^n͛ʘF9*Rc{YUS\HV_T݋&YEjv52iT*UL[V)U_ӴTEovAϨ|{Q-z*VtmmDIV/ v7 \6[[MKdKfzeJT:n*E@@)RSoFN!g"]ʳ諉&$O 5qc: BnKH3mLK,ȸ5!C"9D('-u9%[Y7Ce0;5L4KqJagUn $ԒY2n<\1ݲ Ʉ]ѷfNv @GMBNKxWE,WhR_3՘.rhŭ{v_YhvVb%xZG$F@KRC1i.}EWI2!;:Ts,հHQ~TuE{tttr!?&K|@Qpvb".״D$4,Z f~J P8 L5ɻS(T*tHGjUZ% Ł nmi)Uu'VdFf4q,6ҵ `㫛BF8`W +ՑO1AqQ2lV*LPc<$a<@T|DS|Ѣӹf[-6{7Cײܺ{e:7Us1 V]Vn"ʻI|0gtUEAaǸ:C I\nFLh6R|8`}..ta&0mG6#)$9~ǰբ%`bTC@5wT%y T߃eeoVA5,J ,i7PMՅ -P]UpNPUDAuM -MPk?Zڣ ːTOi&Ėj[\HK xĘҏ˭9IgٵdGU?ڵu~:=>r1"quO1֌QAkpqT|-5+JGQViRVEETg 1XRs>:ۑ>00)E7ZpSYp t}MpS}}[DF`wA^cPK]~(3ML|xX$7;LpW1[5P#{"U[D`BwJU*h ;3k*Eo#̷*aa&V\uJDH9koEW$i_=h3\DB5.JW_3`⯔ 8X2T1^p!PJl %|ypNJ.` XQ!:!xeުOR0 -O~TަId+bzb,p~ -> h5̞<=u>LQW:j}Ƥ.E;\zEGy;doЌZYeGMŴ3ל~<dD<ؓÎ} 5}^ "{Q  Gr{(fB2/=g+D(8OO*n*/y?-" -cVf3vc+$*kL0%15pSd /q?KU${zC w10%iuc+[k\BpdW>hڦ;ۨY.+0[/ -3KirQuZ𑊠%q!9KlȨ% `o7Z9X<ۙ Yh#\O Mxq%Azڶ uM xI8\H3WZ z4L tQ%jD#S~W}}OBQ]X VIQkzUF+4}5as CҮ9"z"LcNaiP-M Qa 7) B.&L\m5j=uWAA(SRՂ0`"RTm^S&bݾƚ>8wW kJMީgm/sW -_y"̹Ñd#5+QqGl]U^{4!jb -2X!3kdib'\)HD%4'*K090T&d9ۥGs3 2̸]\Q?XĂV6\w(EڕD+K8OR:Efİ9EoErW>Y {xH4N1 g/bB#!.2 '<* ji/RJ#Wy`OiR0t &\\Dž&B&t~vTzbmIN˃jrIIL([[2+UgKsA?lH j} 99PLIc !Ojҳ9 Eͪᜲ^R:z닸UaIbA)P̀kǏw.F5HdmAaR( FsjEZVIL0P*vcjh*ɾ/K.5<0NJ~V~ !ǃH:!v q [փo n&af!,7՘N -244U4q2TFm^'BMq^ǹ!S(tYë4>]"`r] QiH^xM!l>4 x&H2JB29YOC_ٮ!kcր[>,5Asґ02+LBoCZm4D]>147ؗ{N>2W.Zk)Xr9 Wp>JZg&ߟ{3m  Ujn*!΄^5.$~C7ur`c^t-|՜jȑ*i@[ -aBe39Ǎ<<.$\9,n=?{z*&e^oeP, FZ`0"ma#O˚#P 1YiP?A|d jI' .W#g7̩dǖZ\M壈|uݭ:g!Pz^@|ͣɏ'Ul|񝟒-:G\؊ H }oemAlY,˦x[Qͯ)h^ĀɘpVYm2=-gc}f…QFn}BG`v̦֊b{oT]y -{e4g{ڏuF;[IFCCZi^Рn/c}ep fU.a-(ݗAZ&!@ӫ%=x+J)&09^dIi]fFSZFE -o&!G4ڑ]i/S:ThUƄ{MձV[ -0dFtQCˌaH)v+PU֮raɲ~¶Mc^Gy՚H>@>iˣN'( -M k:5ϖ5/ msKyLhVH.9;D?+J:=8I\NJۑ4+ʀZDI6F j *Ō@p?.6H,6#M Ȭ5y͵9x = 1FqC&R_6<̷Uy Ċ QK?U ''*HLꚐZ{ɩTX ZC&[cC޼1x EgmLgaQ -]/*LYo؈0M|P[˔.L=<&HOXViE_oR|^VOg㓙ǫ}@ .JYoQIFA^JTfHv7b[;`"(+uZ-nPJR T #Mio [$Y g1GK$iXj-y  P.$>eYrdġ0bbHIqc5P휽c#'E϶&upߨU&^e⟘ 3[<#U䲨ʉS"5.͂XPY%Joj׼* -٩VYZNUMd᠂nE*N&R')ZV2tnd[sx^wW%i`x_EQV q-nnuWqwW~) H[oYTށ x}ŬĻiON4['tAQ8-g.}T"){-6nOWQ 2*q98c]% z@]0Ųb BN'VObԿ/iJU)>}awe -UxUEȊyVFƅ nʫY'9JZl<_&%ۆ=I8䯾7/TF!WWr0g%`@<S@ˆ?ޖnr.Õf pJD| q -vw+< *ķ2N"Zx{HH jdZl㫋PD)ְ^% ڝCV~'MwCĂIIB|FDs,vDzzEGvG[0gp_w - l@mHZأfʛ?9΅# K|ttW2ajӽkhF+3tS $"tùc5ԒE/Tzb'(-@4*ĝ9eo 7Ͳ_o/s jUA\)VzicX%SݤHx6/O=VW0lSx?ha{GTHxD6WImX.|\72[TZE.$W ԰o·T9T2'bw׫8tc;>?P -  =te607\nÙ]%5$f̉ yCTcb$Z(5 [b - [*^o-Y?;R2uG2+z@9 u|- גh}0>]gwG{ؔPj].kvD^Y,:bmp|?̢߱mj  VJ -&+a_Ui8|H9es -n~]O o3BwSN0O19dL,P?4df={-ׇn[Nodw `F=)&'UU:IPq9xۜN>2#7U -Ovѐ܊Nú"ɜ>SK/94 w-@}8»T)(+7 Ӕ2hkx'p\94.D@g}]^$6y܊+r9_%c;eso%<%/+wA{pq!-}g| \aɱ8.yfX lUe @*DS@,ZgZ!/5\yp( iڌ6wzQ5PCP+m2=p) _τ:4OeINuɏ}Nq@ 8\5d 5',tNBI:VhB? OoQI^':Gˈ5xBc#C*Hj3Bi dua[縠?ECc'{U%A&)%3fhE6HZ󒢐+4%EJg6d¼K*b>YlGpH{IYyYR>Kjãi1pIN>+K`Z؎dh@].cjbp&%iл2oL@F&N.\m4]Nd&4G%» BS}r,(.5 4Xri>Û gat\_"X G5cB!HeX֤&0njA[}am|,;6jM'"0*ҭ.Fcp*\hG6;Yr=9:"<AI"ƕh~mtӾ]k%;҇KqHl7(7M)qID0_2%lꕢX6]F4 }4Lbiqk&xy.!^8شt'g!sb' p!ugk@`ؿACI"uNB$tK+$f ,dqi6m!1b VSp?>Y%Zrh'TZB p_y8;u W}Ӈ8ɼr׼ԿԷxi0ևTBx49_˖tAۡ^w[YdG`\VȮ"eH^TjUL=O5īcy—J"8\ڻ(2 ^hJrQ0ÍV$ үqU?t-,i*,1C .]='kbdtPx - -kG) T3o瓊D7ˡf;arWMAR͒2r:RjWP"PH;*{e̮BXƢG@ 9"lѺ8d `Ήp0'H AzLIA`VgpU`h kF]j0qPvTѭBy`R -Kxi|GwuA]Y^jyk3_ ^?9Q*~jyY],Bd"xەeڌg7PCj߅9Eeb R9l#UxFtGQSu4Af(msPTߝ!fjUX -p_Z9s8UynFDNX &j` lLF#H$8;8ysY]d>@ -$'"K3SWMXOv0V)?k@IӼi0>VS.xc]y}!ܵ_ ---~a -YQP^!jGT8LѤowI>I^[E-qrDAѾOeqFw@DouɎCkIbAQNl,qq[|cާ `i %A RwxOy\eGe+h{x&QA1D]C{m'EWGҡ&ybbP3K&\Ӈ>+eyDp%Vveehfؙ PiKRГٲKby0C9dC#&(" K!K ]OŦUق ^ǭp+~ o&'QXx"ʖOi~YW^K$t7}P Ȯpa~)b;/c·6ƫsnp烘*lb -`C z9mցRmLz/\ @ľI?QB!1 b0E -ܐd*(W㢝27˸0ȿ}>߉Y `N(5E 3V\Cj C%?}* >8$_X@ p[LWc[y;2q*MoT?)c:QqASd-,kT Om_(ԀQǔCDؿ\*}Xq8LڹP1p^Mx7_,OR^̰eqڷ, -Q`ENqBC9a|f/U~fzT#$v7ZS -QeT&4w FR,{>We}bتBZTTiHJ- `qib(m1@0/M(%rM~1Pja}qeovi?[nޖ!1/$  oVAo"]ede\+oτF\%h{eR u5y T&df̬8; l.JX}O6$2 ?VȰxgQ1!2x!mK4Nbtԯ J}-y%`i NA ~M9]d4,q@Hʳxh]$9IrqèI&f0MM0Q)dv"X(x 6xT Tmnϥ@ Y#Dy#q ?yх+f@Rycfbر$J99Ji[0V|N(r$L smV歸6/+Kk" =3UM-$Zs8munƻYM`:ĵ5wL۰(.YMR]SrOs+='Nr+;q*K43ƽ,eLxKgE~Gz/4w|v5&*^C EΧl=;ŃH sr{,NȂVҲ0 -CaPjU<PgK= 7Bc# iӱ .KmQ @ȁ"OXXo|P!d8rs0h(F1Oa 9ҟJTn/s𺋹*"Sy օ}zNj)04_fXGS-r;ea-4 92yv&QѧSZB ͫbqZB@YQX_rkGՅjԬLo\B>`xC@F;M̠9ߥFxsR[Zw^.TE18%S*kIE65|`M,5&x43XUz}3\ IOF̽Ɣ ^UlvDq۰ZAV`ǭ_{_=֖X7 n%vzc0@J̋SKWzgk4.C.i y4 @> FD;{gFêU0,b7iSh} ]ȍؗQ2;f,iu&^bb4aη%xrXP,F% S Mh#OW!|j5I/D$%7PJԚfAd;\zTI(J $."'<do]n\3claf|0t6P̅Ta! d,Zee>cz@M:eF!(!3R"װ<84 -"6JDÝ) -qSf'psHZFqL#5@B<$RFWCxr -PڦFAiۨRf`L -BJDwpωtJ*J>OPРMV-Q.Trmʳ]T~b2eԟ A @yRD6,|!gkBC%"IM턉@BB+ERvQy**2O1@SIe -jMtGWƉU -$f(IHC^ ZGԮͫ}6 -S;6 '@4. JÀʏ25T!Pe^49ˆHm|#SB2>YF45ȃ3ڃ ְa |AU}Ä!T!ьQTs&X+R'c*Zөfq<>9ucIdTB/9b)u#Zm9TSn5P2]GZ)a8dyy 91%"%dR -ST f!a<`fh|6A0@e~+66.nj0jRJ%TG؄L8탩t!B\> 2eJB>: *8Ew.4鄬iYTᐝ&B(qȪg8bW":+ ,.=@ϫu0B^!m4  鈘)}[ $;(mAz05HG)SuԶX @LFJhx4h  Q RR+M Wƥ&3T33 ߓ8+J1 ӥ{\dj]0΁9tBAA죀+>tkMÀn8@]-t%e08%"qp1U^BX(Ox&O9T>FQ+DAh1T²qQM(QהB(I56!ǎCW+# r  t@`D$!~@T!!YU 2ޠd"dh\@ +``h#BYX|2^UAq=fޛ%`˅d.6 )eAI%"9/vRp,͠CͣiiY*l>+@h$N@B"B ZB! Z|@8pZ\Z# JCEK(uq,DA/&2)1e$]պ)P deEi!2G1C9 -,l:F$<4sB08LD$#zh]\BQ(̻:GJ(4KX yJDrP"Ѧ15x} mvbL!OScB4!M[aN:c9^f2T|\3h>P`@56h /#`FB'>&|6 (X0QJDP :!TF|P ja&(/{2BȖNgeJ.@TpR VDHEDh& uV'> 4F6Π - -, |Ѩ@4BD$,^ܴ]fhCc0T -A^DaVċ -2Vk:-Wwp# F'1D$aq0LXL#@B#sMP~1eQF@k[0xƉ/eRP"JD@HRD" 0DK'2Œ6L#W'U@2 -6:i4aI8)h8!8~RnP0ȴ TtT<[\ȉS!aQM``]@h  JD!d>U -^ [ QMUaQJYǀjVUM<*@F\pRs0nZb/,aC(@,*( -d&5'-Gf/д05mXtMb*|/b6̄sK|icjy`:oфGh|TᐙD^T  k y}.3m2)hM$PSIn *N5` MDJY4ϼ08rbH0%y$A`SƮ`Z|2vA*s?ؽ`y4=iV*1:#>}ƤY-1x^tRN6zYectKc][tJo浴}VsJL~]^޲d9ٶe9}~uY%&ispQ]3v]sau= VtƷF>AYkK}\6ֿ2JM&S{/v:12_)F/Klbݵ?SQ e`hc,!,.8l9'n:yZz="ӻb,)yN[1*g0Q r1\FQN0g_xNY=i'ekJ/|nu{cA1ˑOƪ^ Dž4lp+K|.W͆cv*)vhu;j)WlvD9z|H6[QKRNߴVv6ɔη'F&o+:ߥe<[j/Wvu{{=gul]19oSsoA\´V Hl@mޓŞ=Ņ6H m6+bAH,봵)S_˲J}mVTv^{ 'k>ANov3R6",?iʖ[1Zv*-Vۻk/-#1-# ًM) }S9cRtSz ů{2ruт o7"$UR.ieZd(-#Ʒ]wxݗ1x-6%LW>5>'on[S [󕘽{b9+tbӽږy%vUֲOg8ݰІsX;.)pw'׭ciYuz}M'Rc߯u^+Sy%ө}Rj|:_Y-wki?۞؝l^)m>V~gzvtjׁ2zweXoVӯ^߯j?HSY^нzAN 6O(Gol7=ڽG׽Z9^wlJ1Lol߲{{uwi8D *up!\K$B,4D>P@ 0 Ă4 ,o>8D,3&VC1pLԸ~")29yH&FdM06-}C|׌Dʉ76a/qa˩qg%T -yk#wzFo ^{4:/f.F6!iߪlx|5ILVĹ!c -i&MA-p^Hx}Ѩ`0_4c0$W%DPkW6޿"]kFn_%,ogwr]$㍂mF*_=9`ِ7c+?~1dwUÚaXwW2{xLÎ(qCš߬V%K`&=eH/ >8"Kw\n[YB%Rp.̰ gV=$祕>]n\ok$m_2zC>(}-E zˬ7BPߜxpx"8Xzѐ3,ZrQZ70yy̗E'Gp6|O2՝n0ͻ%T(lɾfF!Ī$θWyi"ٌAbiyk#v-GKjJLN1QQ8ecVVx3Z NVn"rk")$ JeWLj,,m,~ - DW5B{ jRRz$?_v-kA_bX \~hQhcĊx2 m${RflH -F̈u&-KJJO;+6<܀nĪ$" -8PPdw$w-`w]YӤ5МwP0L<% YCiu Wen=<=pMֹw ƒf5CqDvZ&@-jUacTް!Wމy2.*%r y/sLo>柁$0698.e -x8_\ -ⶣΞaOOU#Kj:m$Ԃ'pkN&2/g[(pS}n<Өj#Cr#yI78y1 r"BArOA#F&C뢲D.ؼ5=l pJ'vΣzZAa%5(l=;$19ѿwIm\Hv'%=!:\'_`٢܂tBi" ‹gyCG0av:t-Ǐ L5Ju]8̦SøО'Q9WEw-3 PDY/3j=J LY;(Xλ҅&==% Ku7nBJN|&+UeKn]I (4OVڮ((k/x5ƗԑSEErG;ƶ43D,Vku;@3X[U r]Ԏ4+JKO* k{ԐhQILWFs{1bW1/7\-Hb8 -fPFwV_}'*t!p EtP@S鍵0JQ+KH4j**bY僛mcPg -*禟qVhls -Ҝ#G\a8o; z66ŠLՒH7t-C;b*ZU$"EV{Z4ʒ.WqQ\LIw∡j &^L4zep)~6Q TC6X!d@BXGꓠ^:}b%OIin/&VK*ٝdΛs*WB!QdC368@dB@}&u Ms!&})9"ocû5 хJ0 YOc^m*xg{i#癠@@_Dg$E$<z(W=FP#t;*I dpg%b#kBahq=Zy0>&JvBlЊĶ'T[;ȟAOsTER2φ⴪a%MBJ͉g񫼥tP<:ƮF-fSRHkV$~nްOF5tt_!װTc -C6-\[ Rw~lk2/^93BT:"YAd:B7P A!ƑBZG|K581-ӏH9@ ǘ&1U,864%WyM0ɒ%YD)+ןܚ`! /46N,⍍ Fu}[⌰N?syE #3HDgOjXCIEn lnzZ/V*CDeE-j6z#(r6u|"܆H1l; GW"W9@zȰ)bYu^²uM)?b -jĈ% z,8o>uFۓj # d1Āv{Grd3_qC, m_ Gr1'5n(*@Z1>2= Pme o*|@V#|96 -h*U`-smHKY2Ѹ4ѯXfDԁETt|Z_hBSWF`I*ѫMIgMz"Bn -G 5[Om)X4m\R0„ -.eֶ7҉H}S7oelUO{L5@R/e"7 Gg'oelz]pg[o_Ш3#΅$\dtDEEC5%\X`A.W+rA5iە{&" F^s}w`9twVBMEbOLe߫(ݾ@#u-Wy h(<)Q]ό:Hg2289ڸySКC{jot`RCk\^]/b_&$Z/ծ6C"7Sk*nsha$vP@Ilk"TR1hVju{&H^%aQ;_T+%I~NU4 2O+!iz']Qw ϙJG:r-2h5yA -EZwKW$T(_kOX'j"Ҭ5>]X;?Sazqyk;+- DΞ ԸtizŜ cX^83c=xA,Xö|X4l"4X;_`'}w<6$¬ThR3}}X[؇A82 -b YIzCZX# mގb2#!Nűvc>u52ScB-1ⴏMsAScm>DGCk`UsX6`[C]ͱ8kz {V bmڿ9֮>XO͙lk w(cmBZ5|}xXP=E4uW\?`J8ړޫ.N9y^i;;y1* 'K~84%d2Q 6<(@ї' ̝݀OZrji_O0eh|b'S5E3>'HA&<'p>ۅʜbV9j`0HZ[uYY |>JUaMNR! Xg(BX''5FSL'|!?Yl07$zRE``rkCk9d7= _ 5<J:.{wX^$"=MHJg\Ҷ>SCF&Jgxtu@ͣiOLeƲi"H\F,9􈎊 |rR#Fq$R;= (gF)+'+_ǃ$#=X0Lj4P~PUɷlńFj/$.ƺZd*d @7;&][FxX"&>zPnRiRK*VA3 f-(X!S?IUakS*] pȼ -S4|" ,E!T鄆Ih0B]IK11F&qBPByx7=.q @fAlaen1)[ -wE ~K'M<@&X݉\qqQqҭ(Xs݊,a'Xwb&ڼ/)N\ )v% i'{ʓ}+AH;V -Zg0`=Gu'͓e gOZm5է: (eHW1WO F &DBW?s/TpFyІs5uJ=a7|gj/( !-OyOc{MKu!$㥠|鞖ZެdV6{B6P<:[Ɇ@Ǣ`l/D:WF ZS>OU[¬؞qg,7gHc*}d9s=O3/ -ZzX WT,6Ws!>³ld N j[\oeXPou-;c?Bߵ^i=m_BeSR 1d:U!eT!L;E1Sl3v`|_:rOf~" $]"*@M^>p!c">T V 3@(@$OXR$q{kOMR:x`DQDv7 SKòK}p6_ SҳFHJpGa|> e2'sgw  %jODqOuPӹ -]R9{z k**YTn0[AYy d28l=HUVU[_BTʰ -OP -w= #v9wq*02. S;XܸA>J_ vCNID`(-} -*s/C)kR;VgY 4RԜu`Ϊ<BC;e$q"W>i2q<; _uP" W ̫ CA T+#θ^7Y=Ȗ;\||d h[c.El8? z0h wF2hn5 -A篜}(v?%xaTM풯X@_pΡAD{֣m*B*Al"U SZnNaL*1'XkďHMC]a~h)[%~BGYzjѨM}>[uLsٻ. iw:e9 -QYJ.݁dTW>p?C*'W&#lpJ|?Ed^]g);U|*>cw^h˙sge.J-ØUԏ+%vqv1w~]Ty_4\k|dZZTfP8rҎ%khhj=n2@Uxal -m+գ\&<".t Hhrs /xb4aUЅJf𧪶F":m߅㓥~ÖD}қ2 繲a xf#8׀N3h2MשJ JȬ@=+1sWU4# R%ذv`*~⭪uD8@l>iA4(~ʹHz׬ %*L ;@LZ@O@A0?[絬WD^=v/ AW1X_`A\>R;`ǫqo܀ir;,Xkk:F,t! 47boYh -Z"zœ \jiG+ -A[݄U -Gn8mMf%M!0ӁB/"\MwGܵ{ʙw55܍1Xu宛H vIF%w_ CWvf.0t',Zڕ@rP-qieys) -P_+ANMJdb?H^u n{h^dZ_W7 VZ`B 0*Cg%DK+BE6l`axÈAie;3Cu[֓&0%Y@mjv8Uc`ت+Y 4RHV{L:[LW7ut聣gR/,5# ]֙mr5}WYS% -[e=ɷSbV"\)#VD%+BoqjUK%54ѾVo:r\(ըcXh!U s'vjVo1>u($Haײ5RibY۶dpJeMyS@Im?q/Pp3 }g]KZ6AI+85! YdBGk>)L0Y]{ګ&B@Azem~>1ܫ±GVJ4_uchCI½кEzU,l`-dܫнy×_\귯ZA?Ye*ܚ?z>lU;BA"! N]lwZC+mm^\aZP@Voc>'kk37QzBCdڮP<]a^E-,k-*ֶ+?Dr,*SMp]S cWњw " yJw9$-}T+cZq(5[=K[@o^}ނ»Nr mgM:D%9=;tjok5IC/7_* 9[|2"&dvٓ]U-%LE~R7DZ=6} -JN1i@. ݰV{ݮglE\`SR+M Y5or,??v);JJ|=W/Mu?|]q?~T :al@N^v/AۉbFeX` M -¸f]48't!t2\_JV{$P=4fFƖ8eH-dLJB.hC"ars( 'uMG~!£& TurD^!\NB|!rb-hwWf;a -sIoAK> ?  u7 @¤@u`t;WnD]ɖݸRqVHȵsѰeˮNIf瀔Yekv x]M(mjk>Gɶ(Ryi"WZx5/׬vӟv \CR yٞN(z9/ȅ󒭼@hu@+@xa7 [?x+*,:Q. D'A -<6^s -7TaW,{ZrblN67>ʑ+lɵGv@n9TMOBfz hHq36Uŗo~UԇN7`7vI./ZU[ Ȉb}]lּg`ܯ2 g1.7YOE[ -ܱ+0XJ:LqН4f{g/ -ox qώag$:jn礂Q9ލhylzAٶW fZ]PuLuԸBi&IJ3ȃmJ`+e wj?Kpetp]z،g7P25t%q -w/< Vl [s}Yw|Yjy:U1g I^ ^'Tj5,nnm*[C`i|뇺5RTI-S;3[m;T,[_a+rŧ^0Ne]"7y,_̲|Ua8äm45}:.ҟj=Վ$kjB$$ZcNmtk9D -Q>I')C$kO:ԳBpVk|ӇEDCd+Z]M;n2Y|Sr(qvwE$ڥ"N[<=ŠF3 uΒ1a*Z'dBt!fp2%J"=ya:eqAЬ+kORDZT- te| 37bz)4FB?¬l!/:֤ yNҌn]AòYPG,&E(2ώPV{-!Xc -l,m d*ei[~K,X?п" M0Na$/6Q2J #J?,'x}Ӕ*U0ל2FޛB2ku.8E/>>llkpI;6 rkp(AcެfeS?{m e# H1 nRUꢎ?_ukܝ8 ȞNt lO]C5d,?$1^56l":%_ELbjx6,"v¼bg#i)89{C"TG,]AzBvBK#ǗT@sT$( y -L!Hs^y2U*9C\nXM:x -kVZP6 >R>P=6%ϼ?ZzP^Iw,EO:}(L1kNk'j?F#'ڢsOG͜j0ns}Ђ̿;$ $VW+w*< X}|Sqh.Hx -Y"n:-UDbҠǵ[5|-1 Ki8.07*{0luwO_/AqؕTI)Hލh \N=nEhE֞B`GN^( $4gN'Wv܃+nnV%HPřӈɦB]L1:E4! z o$Rtg/ ΢k &r+#_TRYeC -@:kIŢe+ kg n#etQ/RN^[`MN)jr6 Dp>JH (ZP -Hs\e{הN\ $GR3;h6*IMZZ;C_OL@> iVײWQuz`U(-Nj;z2Z^ EeMnAFFT~ƒaI2x4^cD H)JҒupOV/3=xw8 k -Ekpj#YqKoKB5wyIs)S%\t;Z缴IvԒtF33mY* $Q%Jp%5O"H N7ji|8@nj: 3ehEZ(&4'wr"; -IKO(8?G\yCG4Y֨J5+ݍa}4Zt濛ϖʔTqqz$THLn`"p4VEJ0A, -QoNYOͬ_jҟgyQ:<~)?*ⷁ5\2 }o,{SOy}&+|2GvHs;Ck` .~)8 Po=D欌@b 9U5[xE)죺0\t,ABVJcATcV!` 9oz vZm"$ ],@vS&b1Yl -s~0a8y%ʠ>[ PS`&ې~Vᬘ:dtei%3QhS$W.l54\cd#'-MpgɎмV|m-yfx'{H#xD3mH6wS -H޶FJҔ~a#RaG!S߻nfa -endstream endobj 65 0 obj [/Indexed/DeviceRGB 255 71 0 R] endobj 71 0 obj <>stream + FFT>dPab {Y`$HXaʬXœkhsk>e\4i՘m?+m_YEpk^:fqS@~0 ~ ms+cW:"__MIV477^ndEhZ||R5ӡtY|LU"JG"VqDqÐNn"άQ!rGdjz(F9KgAuFq5Oӣ=~U!%C($l⤡C^'TznK2Ll\=J_#dЛJvŰ,#Quܰ,եj+sutUVnWCtqk;c/Yx2 4CPeesk6rkqfR,H##$eƑ;~>Y~L+pXKBRXFoh3#+U7 ZP |e) M&--cș'ETD76~Ҵ(d-D>o$`` Y} m)9LQ@fRQ!L6ǧcP2yby̞U7޽/,Ì_bm w$9~ K06PմK{D Ô͡b߭.0y3I4`c(o Xů.yVE9h +6:x2O$ QqlԓhsBQyq7HX1S5MGRm]$,Ic :h'8Bjby>^V +u$9T2e&7Sqm0H@ W_s ssU,ΙͱdX}[ձ\L./)4=U jI53f??*jCwi +o;h3sҺJl@+Qo:6[|zְ&MtPː釨'yS]=VJ…O itj}-|x^~-|n1t""n4Ƽӭ5WrhYfݤ)yutPýu a97^oj?mt* 1}EhV泶LJ +nF"K֨-j}H)Gh*)֊ 'a  򮕓i@d* nډ+T"2to\{j #u:ѬrV$SSi#>Ґ`b|F[Ѱ#GRs6NCtZa;2g:*0v\%w0lscb*u8:$kR̍yufo5oBF\nxQs72G4]"H6mc0&?#Jd +0cfD*&4<.9sySpZQ{2hmQ 7|ΔQiCu K8? z=!5B*C.I3-yD:irRf[IV'QcZeI"i밞)*0?JnWz_r($ҎI@j[yQ gu9PamPQ&"aYҔ%_|s +ƈ4u kΪΥi_}`;G"OְtE)# b0$f1&r;(Drݶ@!IJ;_T'NlW*צ"x1R'ѭZϩ +T9l<$a̒sM'\o%?{4l8#dIm$faaXPH +M]nbo%ShIS ȍc +?mz/ @kh07=4/XOF(٘,\r +Gn&ZBa}闩xX(@j% Ԡ}tdK7NBHO&~D7K&%|x!kX(YG&/HO,G87}== o7Rћ‹Ht"1PdEJnrv"Hɽl[ٓ`g#WWr +BT+#?E[ ~Ax~D`CG bIMi6)Wij:rh,HmjLDx}/5I=_y[ڈH&il[R^eJ2b-Kx(CLrBG~ 5$!5EB4aޅD̼-[ب8+8U2#YjM ǬC/dvv$jw;ɒhd5ܣ֣H]cq[o@xR+g;%33uW7[MTnn &(]5PbI{=6!P+hM_W!qmH!NAj,>lУ(` ,Fwp9 k OH4_tL10Pܑ6C>Hgq+;=-`JjFj=%o0qI{&>[#BRgq<:&c[sl=-2'7%~)2Ls'+_p6@}Ng_@2MYeOl$$5{Ӱ4^%>W&ʞ)^`TSATLbcoZ@.{R8ݼ&:O '8aeGDY3:0m}vȜ$sɒ9ݺ9f mirKfib<1iA8-@bIB5$ $OF8910VFD#d] g\ٵ#U" ӵ_/[Sŀx)n> -ގ4t#DHٞO񈿠\׹#_Oj@dOoDXy4įv*3}0곜Xٍ'r؍.GH2.(GضPP61-HwNUpQN`(95q*ʵtcG5F@*iHRQU+ODv&uE2@EC@TM3)/DIΚkHj!GdP (s( }O9R 4 6r$I=%l(^ AGw kKR@O_Y%Uį7r;9 KY@Ҡxs|$k+ᣳ{/d&[闲Zb\ "A(gzѿ!ΎW`zu_b5m.ow'=Bs>8`oK ,gC;?G(G㲷T*ʋ8-gv7 jCzD%tҐN9'4TRr *{m.$ +;,#ovʀwt!rZS6#7@( 0zk.J EϺJ#=m)E3X>M6ٻ$!o{/]ivLQza[{xZ>*D9ܒ4۞_&L rJ hTʫTAS'=b>iu`ĎڡZ + xHp6ƚZa"M׭wƚ,I&[$ħC03?Q[ g2aywYnkVlJ`W)o)?.,7}fEX@o,m ur`ag(2Cňp *j9a2+ 9y-B +F g󁶍S>(9/5<& ^-P!x!;˙xR5vWy.62ϗ*iyvq9"6^y"Y`A}Ђ߭pgX8jȧ+lx>9Y4b7jJm0Gf G DGpxh$W}ִU{9`kۤ'ng>FʑJT[#>ٖc޹2,BKHN{݌$>n 5;hJSllbb!0/[dn:x]Y;ݞ=}fgdwVnL$Z&@ʶhÎeؒ]WIfVnT(tHa YhV bۅ{O>ѫGVfO5gSGzIJ>|IB9 bEYcR)j*x-$Bfes0-HJnfiRfkΦMԤjȈaգ}XUlZ-.mrզf޵FŘ=L{J$mQN/ N4#gF!쇨# ;Iz{BQ#8`o2M5޲AD9OkLԾk>It/5^R}FpJg=Ih^I`: mӍ$޹vN0 -7^?[歹p;cfQZCWQK)&h%j H O\h~*+ 8jm+1Dعnj¤8QjЙd,BGc^3A5mPmcN@S+ TkX:̑xA%; +%"ԱQeYZ n ;VGspDW %I H;)Ai&2ͻ<_ˢ{aMgDs\ JCÃ+j#;6A!(amdg,WQ='մM+Ξ@!Ɂ Q/M)+9dd QRctvBM-4P8K2AΠ&C'+{UPijCAS&9dGJ1 /"؇dϯ9J +GH.!; lox67wD̼ M7=CZ \$dnS>*kQ Il"<:x| ٪$ l05fDRr8 М+KTi^0 pۥ:D'`wߪRiMߙpd>u;*%f"]L0p0jJx@:Tq<U5ac 3擄T1$ó6[ tk)S#I&tFUnw}΂"mn0- :$Cvͤh$Th$˅A[0=CNzC̶SJdhExE +5ܧ8H2ns=$/RQHnwI1FWٕ*^j vlp!ylQ%@{ϩ3(M.́LV(!2vc<@<BN!BF=\m0X=nlc,I惔e#*^,௭~CUknը({` Nj*v35 qO thգp'z|5@D]fMFa:OνTZYצ@@+ZVƽ++K]f^'e1%cJ#q 82_uw뀦(g"6TKelab ++(.*T$VҴԬ%{~zuw;ݝj揂h,WP + +Qa!{y9}PrWgIuZa*ԆD_wIjx'8/aX&%ak篪&(uONɌ‡.w FMFjjn8fsxN%4"顥=E%61E)el d3 ƀh]] m>1S`=-80%{deǩ`Xa +00*4iK&^36AfWIn$cV2Es9]h:k/JjVhěʬyTWBBZr^55-KD^WK뮴B3e͝4B<==ΐN+pDijwȔdxN47J'$ɔQ:,0bQ +`)d8Sp#,7֔#-jVp!$8{`|tI@ǓF = GB~gt{MG&LRJ9a(6\G ,)E.jfӪAƹQr,6~xOX>JQT۪z:## :Q|!PJո-/cDlѶk{iϣki-IoIWo-%j[AP>0`cdIVPԪz4mn7Vs#8o`kqe@y3,Dդkfr +lI$9ykz s9ׅTk6׀{i9@l0O3lqB0\f"3ORkLYJx 1AaA@fx'ηАZZh:Bc1 kY2-+3¼7dW%B̳,\].nAgz XԖ8Fz]]{eEe>NKwGfTߏHzrmZI#bkaPb0)9<A;x<޿SU'4-2"03BZMku˽i^ϲ*&;.'-B;Ε1FԏlVK 3}Z嵟]jKm3LފLQme)ߡ +r U( WDm|To-X @ en m'VX,LFHJy{dBsNZ̫Rx*E%T8RJ]9@QYZŕjIJUt H$8ÆК +5SvV6=IrCJ!fOa(`E{Y" +  0BN\V6bca `8"C"qVwf>S0 4`u϶FHKS/ih21R?z_vh˜@o%hgxyRu8Vj7V1Ihq‚Sz"?v9kp{Ǯrݠ[a/O Qzɑ,%TIRTh$A5RI$>0^[A*2@c-;䁭t6 Z +L:v뱈\7v}JC<.&d۷J!iϏPBrV: g +2i9]n.=nb #{2?3ZelD1.tyKOL okt]Vn[xTT%mH'Fz@PUlIn8Mp/G0A >HcnT |NYҖ&u#ʷ],s$|PmQs{<>'_?,9>@t[@Y[JcX> TS.] +Ѕu,KD(& XA١2^ [/eBJKLU>cxaz5eΣkR%rz˃rHuԋۋR3Wm5wgi_oKyFZ7E-!O>1Nh0u[FtЌ+Դ$0rjdPKh8HF-^剑IK &jOwYŢ`$|u˪, +ZXO'z'NoO6[No,98r7N0|alKtVdO/x$ Ëhxvҫ:wx&[I+Ֆ^_f0e%='~6Le  T&{3!A]Lٽ w\; i*j *= vꬂ5LoFS m\2}| ?&҈<ve&Blg#I ӛ'],#'CQY +4E;=S#%7v\qG֥=:)ͤ +Kzm7'触waUHQ[ D? WNg` ϋk6̤'TՐ&:L5QfxoVΌ%BA6Kyqve't"bLoHq?|{<*͕ A~Jd_]Eq@Mْha'ax)(Gccz?Aה.Z.EW>n@y'zZ8Ypӝh%[jd5s^~C>w=RRKb}Gq2uan~9bAJ2ΰgC/:ANeE$B+aAL'[۰ܙ +pjDz|ʱiS4!⥾y8ga{3r.FJPJ$ σ'/Kպ˦e&ы#o@@ _ s w@ H$H GTWw5enSw]Bd%"1o/A~I5\Xb>I z9%ZX4#{Ÿ9B+JAf Nr +klCڽF+%jofr`CcŪ'F`A+p>4GrH+ LfRAĽTnh m 2Vc ,OE?}Rd0';e |;MȆ%a "8l9~КgL$ϯLzh58A=) )N`[m'̀?FnC$ & ͡c/oÖq*(Rg1!#s$XJ, 8ٴ}#(xS-_x<:#M7DTOљ!B )j"ZĀZL(޺ZN^!plsaEM:F7B4׬RZFB0˚UهSM>,_ ؍_\qf}I[% 4uV/$FWtxJ>&_07y/KV;$q!5) qx lCK$",:CΡ VQGˢ[onP;}%^g[̖P϶F+p96Ǔ͢Hx~Bio%o5j_tmѻK&% /Ml|}\ulddVBG +3:@sq &E$/7.1c='!Re U%:'Y" be{Ybג $ ʿL˗rN7]Z7ڔA\bvoxL<1uW dyFxQxh3n%Oh=Gf^fFo%xw \݅“- S؂HмW: 7+!IrBkM@O_˒?|I/>Vp~"yw4Fi SQ}dT&*$VxY1 &W}Jmcf0c٥Yl'x=ޅLhS +i9z4rGD9j7c/* P9~۴[!1I,m%c 7KIz[1%WژpD 86+:nS,D0A|5W7_Lt>u@:cbmAE梛)>0?rDghgnuT3Y(vjjӎ\ݲ(~At$FAeDRsY4Bw`ibsܤ/+|Q} n@w@bgF` sy[^l>{6.#4Sϩ2v[j%`ݯE+qW$o<-nTwA>|#7& +CF{SS`")Tp+5F:YF܂KK9hɦI㽥mxȳiɱச[ygYeZ>'9G͓FZJ&x6⩑Җ)>xVbi<'ȬǬ'7mhkW%̹]4ImLZBE?=d=\ A[Nx2k +deKi/X:&6HHIʹyJb*UXh1¶6q&}T=OAqiGY̨4"/dzH "BGL$P<%đ =$6Jr%j/aj1$ n a[; FJt?_?fn[O L Fs"H7͝;ۏCn^'t5B8jKmӠTӈGd :F! ḑi.JH|ٰ .RlOUo8{! $#o^kQ|{ln|dNKf34g*6@@m<|v+"$=1,")p)Ã3czǁ lŤ$6k{W` (v,oEfɉKc$MizUvIB:4YwW"[I_<V"N._Uưڔ0{T-"I; w1Òba#ulXƗ:6&U%~Q'+:/_ߒ ›GF䰚ZIIpUF]53W*),YsP~Tݩ1z$̊KxDsT(?Zφ(-iBVĊg[lk$!NP{j#fF$HKkHMFH`D\܏(ª X$<VX@@ƟAX,ʒi+ڈ1=I|3BY<$Sң#_^GoH m!2LN)փ !(C2hLžoiwrgb$,p&튁Ar~;SL띰ل.K3ٕ$?Xի cfY h7D +)1["L']Iv1S2th&y+lǓ Nmm 8vfJ{!f'g +#=TJL0A pEnaF^rEUX"s5 rA|JY!Ŝ|i%*G-OV%.s>&s4א"w׏T_HJ“y:OE{".<Z&Zӌ΃454J^+xU67!PֆyJ}7эJjB%JIt]xA +T"T\xq"0u̩EώLZz}ClJm JHW"}ȓDŨTUBR&"g 1S:Z[ YUJXuy_W$6WCH_,GHV]hJԲ|z3%DȁW$1=\J<3ɠug,C^d>{="M ݶ WȜBs\K]]KM5>M Gv"R~+VZo)I &jcw%Պ!} '[H'Ȅw]h7"QH97j*/`a4 +/P#CPG>hl tQI\@0CHIVR\;N^NdE k} if#کkQ9{$T^s:^q1CZ2?$ +i*M=IԴ0uҨ>Hp$$䀂 F\C]$]4ZbMMI O.g'Ѿoസh~oLB0cc0Tf X.9D1sq#lq0RV):h%=¡yե&"(pR!OW AzeRPV/!9r/&E,ӘcL0yyE+Sw(# D+C*4e9~ ʽ?nH`>5;Fsh>t)}88>.`]-9jq @8,K{<ݸr #y$ G~(f8Q2'/|R֢Yz/:j *旅"qGM4v{SIwL& |{Ԓ+$ #gk"eCBh`v aG*Ұ@PC I'<8 \d0Y$u8?Sul֐Rκڴ9TudGLšCa&l!lITCmTHz9"w֪к#4zu&Pv\4efHBӨ-+=} +K3P6ʰ^M,!KQ_ڵarhm#Rsb:xj^ ++ aޚDo` ?S{Ya,čX@8]YchīZ~ЗysjC@aAx!{MiAv6%Ņ-B ~rOn_5{vU5Jgrs}4HJqؚ9({Dlt%1!eaw)2K$*Z;&hV٫.ɻL@ގ`N4Qy~(@O%S,LxM<_WJ-IAMB xW "De>/)BJɦ-J3˹ SŪu}y{ǶlYūk vňmjjmĘ& oHe#6J,!CP(QJ^T>FN f|c˰mS-ÏoBӌ.$0¼jL YWLYicjY=wŜ8"9DStʖ[njbd;[mUpw̹z0 :L0cd{0ڵ}Ȼ۫߶ʖػtǩ;ŜOY9ƣ$_{߰ 5fS!#cnUue$Hk4Np +:.^:C>|qCNv5 6Ƶ狌jeX{eVj`5E.cpw9pjVKNo^iWec٭1t'V&"LUP8쪊bd M$rM) /yZYb刌ÔdNѤ'#yx4$gbZvp6#( EDB.&u4q!H6ڳEsb8[u]i_}8T&Bi +h HmZPm?^ϟV7珷ö#ZzK/m^ +;\_LMfpAWۺJ|țwjF K* E#B +ABc36E(K1c$rdwX]uUOU^I_)OjPU{eHz7 JsWL{x}/խ󍗛ٴ8;/:\!7\[ 'O,߈w|VL;p7)^k ,X i x@P`(AX4 P ` beҌ" a'w aT7 u{k<u!KЦ5r$qϩQhRy7[5'6iO +$d٤"C{7b\4ob;ZyN# +-w۳݈zgŀVjg*,YCʊ 2l%;"]OmU|ZjH d4QqPύ<"e+F׆VʘoFCmd wP;Fs[%23$3#IAr Ѐ0XYz@ B"I@4Za A!DH "3iF Ѡ^xCKf_ҍEnD 8'_NHeB&4E^ytҊf9pb1 D(ɗ=wt&v;w +DFV\i2 +Eq`-.͞ %FlMHFzdzw JsV@V~!R. $ˋcO)=yCX\c}lG,>%5$ZU2Ud;"ߢ$JSj*!wv~Rz) +Vg|6^.FQ1x?ߑ8ަ^ؖs]rlg03>`-r֤(\⦄3ˇP.ؙԜ}C= +P.%laЄz>@\M+*`2<Ӡ-Pl./iI\YSeL}WչG1 +!Qqwغ0BwR%cKjb)j)sz7JX TxQ*4 6,:Yƶgj&T5 I%:-F`RIx!,%T+^^k6{ E[mu7KN&Y3Ϭ`; [&IC 'hI=F'Dۯb+` wvBm$Ht!F2+,t)>;B"9}٘p=QECw5\OuC ,%L6q=dDE$Nsₘy< D|M{\%m*j\?<3`{z^n~HZY%sFZ0yVG)rOt P ? x7ʼKm9ho"މ_k`<Ӏ$rT3}l A2]:XI H<$=NCc0YqGL`|H#./Ah%-Z:BDRhظ΃ggj`gp" +1P" M8m> m Q`)RN@'bqwz5͙_Cm#!^~d n#(MbꈂǷ>u ̢f"7܁'~inFyJ(-"Ygn@<0f}XtIvF>K >bM +m#z=|cTLUS+]W֭f^+vdf;hR+<Ѝi'`pMcya23?^yL}vF՘$ ჲ|Bm'4t~I(N2Tb8myMh4HO@qIDS0R,UChBjnc"0;#:XӟގX=+Ѩ:+ wSN}F@. M|&<"XJu׆371ACgn;%Zs32L Beuѫ)D%)qN\=m7I2%Ѭ_uxo~z%-A$Jj +endstream endobj 266 0 obj [/Indexed/DeviceRGB 255 274 0 R] endobj 274 0 obj <>stream 8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn @@ -1630,7 +2004,7 @@ E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn VNWFKf>nDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> -endstream endobj 62 0 obj <>/Font<>/ProcSet[/PDF/Text]>>/Subtype/Form>>stream +endstream endobj 263 0 obj <>/Font<>/ProcSet[/PDF/Text]>>/Subtype/Form>>stream BT 0 0 0 rg /GS0 gs @@ -1657,29 +2031,23 @@ BT [(S)-3 (a)8 (v)10 (e A)6 (s c)6.1 (ommand)10 (.)]TJ ET -endstream endobj 60 0 obj <> endobj 73 0 obj <> endobj 74 0 obj <> endobj 75 0 obj <>stream -H|TkPYۖLw|3 *OQaEWAEDC$D(%@UP`PQT(O*ߌiLv?kV:{:8&p6lMX7+vi`M·kTQIq -5_XA9?C8e|՗c0E}m^(܏Rs]}z9]gϞ=j~ʄM\%$D&$4*,Urj 6æ}al0w[da!$vb/ vc' - ok_#6b@@G4$^(N#Ǔ,;d䤭mm퐝c\4ً2CqNNd r1%ݤ[F}EBLCֈBuǯ1#I ~-; -QB+ы\˙iIEfz9dI(#8`Oa/>WyQ{VUXQԃ:et8÷H @Mw#Xh"eS@T a*G -vBU6H̳'gpEZd}VF{0K֦WpAtҜ*CkKZdJKu>H^]m ={M\*#ZeW*޴L=Ŗt 3 wkFɽVWFɖjMqO8[wCx(HJolCV PmPxo ZH>+WdWO_=^|<8KUSLڰURj8Rhi>SZ>6bOddEu; ?8ꡱS}:!vCTZ(mACV6'v2~8e{e|Bԡq n ᦍ5sGGE5w~Iv -)16:AwzA51{Øowӽ> ]0y: ah&~LoQwZ]J=ajJ-ix#jMKIa~ 4yds [sk*2.>H.'35#6U3}㯷~x|.ǘm0(SZ;,h)x 8#@Og|H6IH3a泛XCxOĸM\v+rR =$P<.oG!=|r@z>.>x8غ76PV,.kPHpqT3>\$6u|!.h.OO+qPQ -+*ew\z~*wT;2(H5_2WQm00!Czs!zbC ~/Xh!z-POfcWfUá208`1qil!)iMn:%$ pϴH߂#6,~cuڸeJgreBh嵒op3[PC\ycP Cl&Qy/.C 7|LWy C8nMMgwD[y[V9/UGt4 fosaluS&aeT,A?, a[E:6EEt +endstream endobj 261 0 obj <> endobj 276 0 obj <> endobj 277 0 obj <> endobj 278 0 obj <>stream +H|TiPYj (FfZPSTXPQ@9 ]EDYdD@A<QNu`˓ql5gm̗}_^$`8͇!rOeԷAqJ}W3i e}C5_l8n8QX2''+V2KN[;<*@!:UDd#QJXZ.Pɔ +BoQ,D%S+2!"W*X\ E3?TH% G^¦J)_"DMFE*C*%n^އ2 fa pþư%16b^$vO`/cyXօiq™E<4\eh8!Z-J&g;t;xǨh8xp6~"ݐOJ%! ݥ [-)o$$J=(@68sb/zt>:&M15Shd`C@?8jq\hYv.]bJ sV0!WΗU_Q] V*( ιwH G"I '{!XTM?"sugegg?B;RϓxN`r_ ش7%rbw:2H̅b̈́C*rLFxijLxCk|P9Rm)G7F+_l8i9R>CL<3pX(@*(VO:N:п9L:)X ϳ!x?$6P'n+6+rMKyދF'P))0t:ե|_CNdIm~˯}COc haBF,j@{ G܉аW8"E:# bW@yʅ +z\/yxQiE ׹ʪqg=u):;G%oޔK>5L:aUEUI4B]RHZzpV C0KL2NcrkژǕ^.6 Z+-L_5ʆF %E5jMȬ7/UGt4 fosaluS&aeT,A?, a[E:6EEt qNJttB3l&ܷ\{f$&;slpl+"4+B?y%8 2"fD8}ptX2UEUS $B;,Cnh t'sO>.At79Hڡq~s1huM55'WWCZ*Wx1K -endstream endobj 72 0 obj <> endobj 76 0 obj <> endobj xref -0 77 +Ώ(*8^ HRz ?~3pܐr8mđdmhɃȟˌpm{G*,Bu]E@dJ᫙3~7a9^l?hXvx.1_ptX2UEUS $B;,Cnh t'sO>.At79Hڡq~s1huM55'WWCZ*W_1- +endstream endobj 275 0 obj <> endobj 279 0 obj <> endobj xref +0 280 0000000004 65535 f 0000000016 00000 n 0000000076 00000 n -0000059690 00000 n +0000051407 00000 n 0000000005 00000 f 0000000007 00000 f -0000059741 00000 n +0000051458 00000 n 0000000008 00000 f 0000000009 00000 f 0000000010 00000 f @@ -1715,6 +2083,207 @@ endstream endobj 72 0 obj <]>> +<]>> startxref -263738 +352170 %%EOF From ce58d0c3a187ce604ef536b8410851e349215235 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Wed, 8 Nov 2023 17:25:05 +0000 Subject: [PATCH 077/142] Ch10 update after read through --- content/10_Part3.md | 27 +-------------------------- 1 file changed, 1 insertion(+), 26 deletions(-) diff --git a/content/10_Part3.md b/content/10_Part3.md index 1f6005a..3f3e8a3 100644 --- a/content/10_Part3.md +++ b/content/10_Part3.md @@ -1,5 +1,5 @@ --- -title: Side effects +title: Getting pragmatic --- # PART 3 - Getting pragmatic. @@ -9,28 +9,3 @@ The first part of this book focused on the basic ideas and types of Rx. In the s This _purity_ can help us understand what our code will do. It means we don't need to know about the state of the rest of our program in order to understand how one particular part functions. However, code that is completely detached from the outside world is unlikely to achieve anything useful. In practice, we need to connect these pure computations with more pragmatic concerns. The [Creating Observable Sequences chapter](03_CreatingObservableSequences.md) already showed how to define observable streams, so we've already looked at how to connect real world inputs into the world of Rx. But what about the other end? How do we do something useful with the results of our processing? In some cases, it might be enough to do work inside `IObserver` implementations, or using the callback-based subscription mechanisms you've already seen. However, some situations will demand something more sophisticated. So in this third part of the book, we will look at some of the features Rx offers to help connect processes of the kind we looked at in part 2 with the rest of the world. - - -Notes: - -* Schedulers - -* Leaving IObservable - * Do - * For -* Timing - * TimeStamp TimeInterval - * TakeUntil (time-based) - * Delay - * Sample - * Throttle - * Timeout -* Error Handling - * Catch - * Finally - * Using - * Retry - * OnErrorResumeNext - -Check these to see if there's anything in them not now covered earlier: -* SequencesOfCoincidence \ No newline at end of file From c9981e02576874d7f0e24a1dd9d5cb9a6605d836 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Thu, 9 Nov 2023 09:57:39 +0000 Subject: [PATCH 078/142] Ch11 partial read through --- content/11_SchedulingAndThreading.md | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/content/11_SchedulingAndThreading.md b/content/11_SchedulingAndThreading.md index 49bf951..7baaeb0 100644 --- a/content/11_SchedulingAndThreading.md +++ b/content/11_SchedulingAndThreading.md @@ -4,9 +4,9 @@ title: Scheduling and threading # Scheduling and Threading -Rx is primarily a system for working with _data in motion_ asynchronously. To effectively provide the level of asynchrony that developers require, some level of concurrency control is required. If we are dealing with multiple information sources, they may well generate data concurrently. We may want some degree of parallelism when processing data to achieve our scalability targets, but we will need control over this. +Rx is primarily a system for working with _data in motion_ asynchronously. If we are dealing with multiple information sources, they may well generate data concurrently. We may want some degree of parallelism when processing data to achieve our scalability targets. We will need control over these aspects of our system. -So far, we have managed to avoid any explicit usage of threading or concurrency. There are some methods that we have had to deal with timing to perform their jobs. (For example, `Buffer`, `Delay`, `Sample` must arrange for work to happen on a particular schedule.) Most of this however, has been kindly abstracted away from us. This chapter will look the Rx's scheduling system which offers an elegant system for managing these concerns. +So far, we have managed to avoid any explicit usage of threading or concurrency. We have seen some methods that must deal with timing to perform their jobs. (For example, `Buffer`, `Delay`, and `Sample` must arrange for work to happen on a particular schedule.) However, we have relied on the default behaviour, and although the defaults often do what we want, we sometimes need to exercise more control. This chapter will look at Rx's scheduling system, which offers an elegant way to manage these concerns. ## Rx, Threads and Concurrency @@ -30,7 +30,7 @@ source When that call to `Subscribe` happens, we end up with a chain of observers—the Rx-supplied observer that will invoke our callback was passed to the observable returned by `Take`, which will in turn create an observer that subscribed to the observable returned by `Buffer`, which will in turn create an observer subscribed to the `Where` observable, which will have created yet another observer which is subscribed to `source`. -So when `source` decides to produce an item, it will invoke the `Where` operator's observer's `OnNext`. That will invoke the predicate, and if the `MessageType` is indeed 3, the `Where` observer will call `OnNext` on the `Buffer`'s observer, and it will do this on the same thread. The `Where` observer's `OnNext` isn't going to return until the `Buffer` observer's `OnNext` returns. Now if the `Buffer` observer determines that it has completely filled a buffer (e.g., it just received its 10th item), then it is also not going to return yet—it's going to invoke the `Take` observer's `OnNext`, and as long as `Take` hasn't already received 20 items, it's going to call `OnNext` on the Rx-supplied observer that will invoke our callback. +So when `source` decides to produce an item, it will invoke the `Where` operator's observer's `OnNext`. That will invoke the predicate, and if the `MessageType` is indeed 3, the `Where` observer will call `OnNext` on the `Buffer`'s observer, and it will do this on the same thread. The `Where` observer's `OnNext` isn't going to return until the `Buffer` observer's `OnNext` returns. Now if the `Buffer` observer determines that it has completely filled a buffer (e.g., it just received its 10th item), then it is also not going to return yet—it's going to invoke the `Take` observer's `OnNext`, and as long as `Take` hasn't already received 20 buffers, it's going to call `OnNext` on the Rx-supplied observer that will invoke our callback. So for the source notifications that make it all the way through to that `Console.WriteLine` in the callback passed to subscribe, we end up with a lot of nested calls on the stack: @@ -46,7 +46,7 @@ This is all happening on one thread. Most Rx operators don't have any one partic You will sometimes hear Rx described as having a _free threaded_ model. All that means is that operators don't generally care what thread they use. As we will see, there are exceptions, but this direct calling by one operator of the next is the norm. -An upshot of this is that it's typically the original source that determine which thread is used. This next example verifies by creating a subject, then calling `OnNext` on various threads and reporting the thread id. +An upshot of this is that it's typically the original source that determines which thread is used. This next example illustrates this by creating a subject, then calling `OnNext` on various threads and reporting the thread id. ```cs Console.WriteLine($"Main thread: {Environment.CurrentManagedThreadId}"); @@ -84,11 +84,11 @@ OnNext(Second worker thread) on thread: 11 Received Second worker thread on thread: 11 ``` -Note that the handler passed to `Subscribe` was called back on the same thread that made the call to `OnNext`. This is straightforward and efficient. However, things are not always this simple. +In each case, the handler passed to `Subscribe` was called back on the same thread that made the call to `subject.OnNext`. This is straightforward and efficient. However, things are not always this simple. ## Timed invocation -Some notifications will not be the immediate result of a source providing an item. For example, Rx offers a [`Delay`] operator, which time shifts the delivery of items. This next example is based on the preceding one, with the main difference being that we no longer subscribe directly to the source. We go via `Delay`: +Some notifications will not be the immediate result of a source providing an item. For example, Rx offers a [`Delay`](12_Timing.md#delay) operator, which time shifts the delivery of items. This next example is based on the preceding one, with the main difference being that we no longer subscribe directly to the source. We go via `Delay`: ```cs Console.WriteLine($"Main thread: {Environment.CurrentManagedThreadId}"); @@ -276,9 +276,9 @@ Received 54 on thread: 1 Subscribe returned ``` -By specifying `ImmediateScheduler.Instance` we've asked for a particular policy: this invokes all work on the caller's thread, and it always does so immediately, avoiding introducing any concurrency. There are a couple of reasons this is not `Range`'s default. (Its default is `Scheduler.CurrentThread`, which always returns an instance of `CurrentThreadScheduler`.) First, `ImmediateScheduler.Instance` can end up causing fairly deep call stacks—most of the other schedulers maintain work queues, so if one operator decides it has new work to do while another is in the middle of doing something (e.g., a nested `Range` operator decides to start emitting its values), instead of starting that work immediately (which will involve invoking the method that will do the work) that work can be put on a queue instead, enabling the work already in progress to finish before starting on the next thing. Using the immediate scheduler everywhere can cause stack overflows when queries become complex. The second reason `Range` does not use the immediate scheduler is so that when multiple observables are all active at once, they can all make some progress—`Range` produces all of its items as quickly as it can, so it could end up starving other operators of CPU time if it didn't use a scheduler that enabled operators to take it in turns. +By specifying `ImmediateScheduler.Instance` in the innermost call to `Observable.Range` we've asked for a particular policy: this invokes all work on the caller's thread, and it always does so immediately. There are a couple of reasons this is not `Range`'s default. (Its default is `Scheduler.CurrentThread`, which always returns an instance of `CurrentThreadScheduler`.) First, `ImmediateScheduler.Instance` can end up causing fairly deep call stacks—most of the other schedulers maintain work queues, so if one operator decides it has new work to do while another is in the middle of doing something (e.g., a nested `Range` operator decides to start emitting its values), instead of starting that work immediately (which will involve invoking the method that will do the work) that work can be put on a queue instead, enabling the work already in progress to finish before starting on the next thing. Using the immediate scheduler everywhere can cause stack overflows when queries become complex. The second reason `Range` does not use the immediate scheduler by default is so that when multiple observables are all active at once, they can all make some progress—`Range` produces all of its items as quickly as it can, so it could end up starving other operators of CPU time if it didn't use a scheduler that enabled operators to take it in turns. -Notice that the `Subscribe returned` message appears last. So although the `CurrentThreadScheduler` isn't quite as eager as the immediate scheduler, it still won't return to its called until it has completed all outstanding work. It maintains a work queue, enabling slightly more fairness, and avoiding stack overflows, but as soon as anything asks the `CurrentThreadScheduler` to do something, it won't return until it has drained its queue. +Notice that the `Subscribe returned` message appears last in both examples. So although the `CurrentThreadScheduler` isn't quite as eager as the immediate scheduler, it still won't return to its caller until it has completed all outstanding work. It maintains a work queue, enabling slightly more fairness, and avoiding stack overflows, but as soon as anything asks the `CurrentThreadScheduler` to do something, it won't return until it has drained its queue. Not all schedulers have this characteristic. Here's a variation on the earlier example in which we have just a single call to `Range`, without any nested observables. This time I'm asking it to use the `TaskPoolScheduler`. @@ -289,7 +289,7 @@ Observable m => Console.WriteLine($"Received {m} on thread: {Environment.CurrentManagedThreadId}")); ``` -This makes a different decision about the context in which to run work from the immediate and current thread schedulers, as we can see from its output: +This makes a different decision about the context in which to run work, compared to the immediate and current thread schedulers, as we can see from its output: ```cs Main thread: 1 @@ -303,7 +303,7 @@ Received 5 on thread: 12 Notice that the notifications all happened on a different thread (with id 12) than the thread on which we invoked `Subscribe` (id 1). That's because the `TaskPoolScheduler`'s defining feature is that it invokes all work through the Task Parallel Library's (TPL) task pool. That's why we see a different thread id: the task pool doesn't own our application's main thread. In this case, it hasn't seen any need to spin up multiple threads. That's reasonable, there's just a single source here providing item one at a time. It's good that we didn't get more threads in this case—the thread pool is at its most efficient when a single thread processes work items sequentially, because it avoids context switching overheads, and since there's no actual scope for concurrent work here, we would gain nothing if it had created multiple threads in this case. -There's one other very significant difference with this scheduler: notice that the call to `Subscribe` returned before _any_ of the notifications were made it through to our observer. That's because this is the first scheduler we've looked at that will introduce real parallelism. The `ImmediateScheduler` and `CurrentThreadScheduler` will never spin up new threads by themselves, no matter how much the operators executing might want to perform concurrent operations. And although the `TaskPoolScheduler` determined that there's no need for it to create multiple threads, the one thread it did create is a different thread from the application's main thread, meaning that the main thread can continue to run in parallel with this subscription. Since `TaskPoolScheduler` isn't going to do any work on the thread that initiated the work, it can return as soon as it has queued the work up, enabling the `Subscribe` method to return immediately. +There's one other very significant difference with this scheduler: notice that the call to `Subscribe` returned before _any_ of the notifications reached our observer. That's because this is the first scheduler we've looked at that will introduce real parallelism. The `ImmediateScheduler` and `CurrentThreadScheduler` will never spin up new threads by themselves, no matter how much the operators executing might want to perform concurrent operations. And although the `TaskPoolScheduler` determined that there's no need for it to create multiple threads, the one thread it did create is a different thread from the application's main thread, meaning that the main thread can continue to run in parallel with this subscription. Since `TaskPoolScheduler` isn't going to do any work on the thread that initiated the work, it can return as soon as it has queued the work up, enabling the `Subscribe` method to return immediately. What if we use the `TaskPoolScheduler` in the example with nested observables? This uses it just on the inner call to `Range`, so the outer one will still use the default `CurrentThreadScheduler`: @@ -360,18 +360,20 @@ public interface IScheduler } ``` -You can see that all but one of these is concerned with timing. Only the first `Schedule` overload is not—operators call this when they want to schedule work to run as soon as the scheduler will allow. That's the overload used by `Range`. (Strictly speaking, `Range` interrogates the scheduler to find out whether it supports long-running operations, in which an operator can temporary control of a thread for an extended period. It prefers to use that when it can because it tends to be more efficient than submitting work to the scheduler for every single item it wishes to produce. The `TaskPoolScheduler` does support long running operations, which explains the slightly surprising output we saw earlier, but the `CurrentThreadScheduler`, `Range`'s default choice, does not. So by default, `Range` will invoke that first `Schedule` overload once for each item it wishes to produce.) +You can see that all but one of these is concerned with timing. Only the first `Schedule` overload is not—operators call this when they want to schedule work to run as soon as the scheduler will allow. That's the overload used by `Range`. (Strictly speaking, `Range` interrogates the scheduler to find out whether it supports long-running operations, in which an operator can take temporary control of a thread for an extended period. It prefers to use that when it can because it tends to be more efficient than submitting work to the scheduler for every single item it wishes to produce. The `TaskPoolScheduler` does support long running operations, which explains the slightly surprising output we saw earlier, but the `CurrentThreadScheduler`, `Range`'s default choice, does not. So by default, `Range` will invoke that first `Schedule` overload once for each item it wishes to produce.) `Delay` uses the second overload. The exact implementation is quite complex (mainly because of how it catches up efficiently when a busy source causes it to fall behind) but in essence, each time a new item arrives into the `Delay` operator, it schedules a work item to run after the configured delay, so that it can supply that item to its subscriber with the expected time shift. -Schedulers have to be responsible for managing time, because .NET has several different timer mechanisms, and the choice of timer is often determined by the context in which you want to handle a timer callback. Since schedulers determine the context in which work runs, that means them must also choose the timer type. For example, UI frameworks typically provide timers that invoke their callbacks in a context suitable for making updates to the user interface. Rx provides some UI-framework-specific schedulers that use these timers, but these would be inappropriate choices for other scenarios. So each scheduler uses a timer suitable for the context in which it is going to run work items. +Schedulers have to be responsible for managing time, because .NET has several different timer mechanisms, and the choice of timer is often determined by the context in which you want to handle a timer callback. Since schedulers determine the context in which work runs, that means they must also choose the timer type. For example, UI frameworks typically provide timers that invoke their callbacks in a context suitable for making updates to the user interface. Rx provides some UI-framework-specific schedulers that use these timers, but these would be inappropriate choices for other scenarios. So each scheduler uses a timer suitable for the context in which it is going to run work items. There's a useful upshot of this: because `IScheduler` provides an abstraction for timing-related details, it is possible to virtualize time. This is very useful for testing. If you look at the extensive test suite in the [Rx repository](https://github.com/dotnet/reactive) you will find that there are many tests that verify timing-related behaviour. If these ran in real-time, the test suite would take far too long to run, and would also be likely to produce the odd spurious failure, because background tasks running on the same machine as the tests will occasionally change the speed of execution in a way that might confuse the test. Instead, these tests use a specialized scheduler that provides complete control over the passage of time. -Notice that all three `IScheduler.Schedule` methods require a callback. A scheduler will invoke this at the time and in the context that it chooses. A scheduler callback takes another `IScheduler` as its first argument. This enables +Notice that all three `IScheduler.Schedule` methods require a callback. A scheduler will invoke this at the time and in the context that it chooses. A scheduler callback takes another `IScheduler` as its first argument. This is used in scenarios where repetitive invocation is required, as we'll see later. Rx supplies several schedulers. The following sections describe the most widely used ones. +TODO: read through to here. + ### ImmediateScheduler `ImmediateScheduler` is the simplest scheduler Rx offers. As you saw in the preceding sections, whenever it is asked to schedule some work, it just runs it immediately. It does this inside its `IScheduler.Schedule` method. From 4b0853bee048197a614cfc62cfe14bf66a08876c Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Thu, 9 Nov 2023 17:15:09 +0000 Subject: [PATCH 079/142] Ch11 update after read through --- content/11_SchedulingAndThreading.md | 48 +++++++++++++--------------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/content/11_SchedulingAndThreading.md b/content/11_SchedulingAndThreading.md index 7baaeb0..74d76ab 100644 --- a/content/11_SchedulingAndThreading.md +++ b/content/11_SchedulingAndThreading.md @@ -372,8 +372,6 @@ Notice that all three `IScheduler.Schedule` methods require a callback. A schedu Rx supplies several schedulers. The following sections describe the most widely used ones. -TODO: read through to here. - ### ImmediateScheduler `ImmediateScheduler` is the simplest scheduler Rx offers. As you saw in the preceding sections, whenever it is asked to schedule some work, it just runs it immediately. It does this inside its `IScheduler.Schedule` method. @@ -388,7 +386,7 @@ The `Schedule` overload that takes a `DateTime` is slightly different. If you sp The `CurrentThreadScheduler` is very similar to the `ImmediateScheduler`. The difference is how it handles requests to schedule work when an existing work item is already being handled on the current thread. This can happen if you chain together multiple operators that use schedulers to do their work. -To understand what happens, it's helpful to know how sources that produce multiple items in quick succession, such as the [`ToObservable` extension method for `IEnumerable`](03_CreatingObservableSequences.md#from-ienumerablet) or [`Observable.Range`](03_CreatingObservableSequences.md#observablerange), use schedulers. These kinds of operators do not use normal `for` or `foreach` loops. They typically schedule a new work item for each iteration. Whereas the `ImmediateScheduler` will run such work immediately, the `CurrentThreadScheduler` checks to see if it is already processing a work item. That happens with this example from earlier: +To understand what happens, it's helpful to know how sources that produce multiple items in quick succession, such as the [`ToObservable` extension method for `IEnumerable`](03_CreatingObservableSequences.md#from-ienumerablet) or [`Observable.Range`](03_CreatingObservableSequences.md#observablerange), use schedulers. These kinds of operators do not use normal `for` or `foreach` loops. They typically schedule a new work item for each iteration (unless the scheduler happens to make special provisions for long-running work). Whereas the `ImmediateScheduler` will run such work immediately, the `CurrentThreadScheduler` checks to see if it is already processing a work item. We saw that with this example from earlier: ```cs Observable @@ -400,7 +398,7 @@ Observable Let's follow exactly what happens here. First, assume that this code is just running normally and not in any unusual context—perhaps inside the `Main` entry point of a program. When this code calls `Subscribe` on the `IObservable` returned by `SelectMany`, that will in turn will call `Subscribe` on the `IObservable` returned by the first `Observable.Range`, which will in turn schedule a work item for the generation of the first value in the range (`1`). -The `Range` operator uses the `CurrentThreadScheduler` by default, and that will ask itself "Am I already in the middle of handling some work item on this thread?" In this case the answer will be no, so it will run the work item immediately (before returning from the `Schedule` call made by the `Range` operator). The `Range` operator will then produce its first value, calling `OnNext` on the `IObserver` that the `SelectMany` operator provided when it subscribed to the range. +Since we didn't pass a scheduler explicitly to `Range`, it will use its default choice, the `CurrentThreadScheduler`, and that will ask itself "Am I already in the middle of handling some work item on this thread?" In this case the answer will be no, so it will run the work item immediately (before returning from the `Schedule` call made by the `Range` operator). The `Range` operator will then produce its first value, calling `OnNext` on the `IObserver` that the `SelectMany` operator provided when it subscribed to the range. The `SelectMany` operator's `OnNext` method will now invoke its lambda, passing in the argument supplied (the value `1` from the `Range` operator). You can see from the example above that this lambda calls `Observable.Range` again, returning a new `IObservable`. `SelectMany` will immediately subscribe to this (before returning from its `OnNext`). This is the second time this code has ended up calling `Subscribe` on an `IObservable` returned by a `Range` (but it's a different instance than the last time), and `Range` will once again default to using the `CurrentThreadScheduler`, and will once again schedule a work item to perform the first iteration. @@ -410,19 +408,19 @@ So once again,the `CurrentThreadScheduler` will ask itself "Am I already in the Having scheduled the work item that is going to generate its second value (`2`), the `Range` operator returns. Remember, the code in the `Range` operator that was running at this point was the callback for the first scheduled work item, so it's returning to the `CurrentThreadScheduler`—we are back inside its `Schedule` method (which was invoked by the range operator's `Subscribe` method). -At this point, the `CurrentThreadScheduler` does not return from `Schedule` because it checks its work queue, and will see that there are now two items in the queue. (There's the work item that the nested `Range` observable scheduled to generate its first value, and there's also the work item that the top-level `Range` observable just scheduled to generate its second value.) The `CurrentThreadScheduler` will now execute the first of these—the nested `Range` operator now gets to generate its first value (which will be `10`), so it calls `OnNext` on the observer supplied by `SelectMany`, which will then call its observer, which was supplied thanks to the top-level call to `Subscribe` in the example. And that observer will just call the lambda we passed to `Subscribe`, causing our `Console.WriteLine` to run. After that returns, the nested `Range` operator will schedule another work item to generate its second item. Again, the `CurrentThreadScheduler` will realise that it's already in the middle of handling a work item on this thread, so it just puts it in the queue and then returns immediately from `Schedule`. The nested `Range` operator is now done for this iteration so it returns back to the scheduler. The scheduler will now pick up the next item in the queue, which in this case it the work item added by the top-level `Range` to produce the second item. +At this point, the `CurrentThreadScheduler` does not return from `Schedule` because it checks its work queue, and will see that there are now two items in the queue. (There's the work item that the nested `Range` observable scheduled to generate its first value, and there's also the work item that the top-level `Range` observable just scheduled to generate its second value.) The `CurrentThreadScheduler` will now execute the first of these—the nested `Range` operator now gets to generate its first value (which will be `10`), so it calls `OnNext` on the observer supplied by `SelectMany`, which will then call its observer, which was supplied thanks to the top-level call to `Subscribe` in the example. And that observer will just call the lambda we passed to `Subscribe`, causing our `Console.WriteLine` to run. After that returns, the nested `Range` operator will schedule another work item to generate its second item. Again, the `CurrentThreadScheduler` will realise that it's already in the middle of handling a work item on this thread, so it just puts it in the queue and then returns immediately from `Schedule`. The nested `Range` operator is now done for this iteration so it returns back to the scheduler. The scheduler will now pick up the next item in the queue, which in this case is the work item added by the top-level `Range` to produce the second item. And so it continues. This queuing of work items when work is already in progress is what enables multiple observable sources to make progress in parallel. By contrast, the `ImmediateScheduler` runs new work items immediately, which is why we don't see this parallel progress. -(To be strictly accurate, there are certain scenarios in which `ImmediateScheduler` can't run work immediately. In these iterative scenarios, it actually supplies a slightly different scheduler that the operators use to schedule all work after the first item, and this checks whether it's being asked to process multiple work items simultaneously. If it is, it falls back to a queuing strategy similar to `CurrentThreadScheduler`, except it's a queue local to the initial work item, instead of a per-thread queue. This prevents problems due to multithreading, and it also avoids stack overflows that would otherwise occur when an iterative operator schedules a new work item inside the handler for the current work item. Since the queue is not shared across all work in the thread, this still has the effect of ensuring that any nested work queued up by a work item completes before the call to `Schedule` returns. So even when this queueing kicks in, we typically don't see interleaving of work from separate source like we do with `CurrentThreadScheduler`. For example, if we told the nested `Range` to use `ImmediateScheduler`, this queueing behaviour would kick in as `Range` starts to iterate, but because the queue is local to initial work item executed by that nested `Range`, it will end up producing all of the nested `Range` items before returning.) +(To be strictly accurate, there are certain scenarios in which `ImmediateScheduler` can't run work immediately. In these iterative scenarios, it actually supplies a slightly different scheduler that the operators use to schedule all work after the first item, and this checks whether it's being asked to process multiple work items simultaneously. If it is, it falls back to a queuing strategy similar to `CurrentThreadScheduler`, except it's a queue local to the initial work item, instead of a per-thread queue. This prevents problems due to multithreading, and it also avoids stack overflows that would otherwise occur when an iterative operator schedules a new work item inside the handler for the current work item. Since the queue is not shared across all work in the thread, this still has the effect of ensuring that any nested work queued up by a work item completes before the call to `Schedule` returns. So even when this queueing kicks in, we typically don't see interleaving of work from separate sources like we do with `CurrentThreadScheduler`. For example, if we told the nested `Range` to use `ImmediateScheduler`, this queueing behaviour would kick in as `Range` starts to iterate, but because the queue is local to initial work item executed by that nested `Range`, it will end up producing all of the nested `Range` items before returning.) ### DefaultScheduler -The `DefaultScheduler` is intended for work that may need to be spread out over time, or where you are likely to want concurrent execution. These features mean that this can't guarantee to run work on any particular thread, and in practice it schedulers work via the CLR's thread pool. This is the default scheduler for all of Rx's time-based operators, and also for the `Observable.ToAsync` operator that can wrap a .NET method as an `IObservable`. +The `DefaultScheduler` is intended for work that may need to be spread out over time, or where you are likely to want concurrent execution. These features mean that this can't guarantee to run work on any particular thread, and in practice it schedules work via the CLR's thread pool. This is the default scheduler for all of Rx's time-based operators, and also for the `Observable.ToAsync` operator that can wrap a .NET method as an `IObservable`. -Although this scheduler is useful if you would prefer work not to happen on your current thread—perhaps you're writing an application with a user interface and your code is running on the thread responsible for updating the UI and responding to user input—the fact that it can end up running work on any thread may make like complicated. What if you want all the work to happen on one thread, just not the thread you're on now? There's another scheduler for that. +Although this scheduler is useful if you would prefer work not to happen on your current thread—perhaps you're writing an application with a user interface and you prefer to avoid doing too much work on the thread responsible for updating the UI and responding to user input—the fact that it can end up running work on any thread may make like complicated. What if you want all the work to happen on one thread, just not the thread you're on now? There's another scheduler for that. ### EventLoopScheduler @@ -476,7 +474,7 @@ These more specialized types offer two benefits. First, you don't necessarily ha ### Test Schedulers -The Rx libraries define several schedulers that virtualize time, including `HistoricalScheduler`, `TestScheduler`, `VirtualTimeScheduler`, and `VirtualTimeSchedulerBase`. We will look at this sort of scheduler in the [Testing chapter](91_TestingRx.md). +The Rx libraries define several schedulers that virtualize time, including `HistoricalScheduler`, `TestScheduler`, `VirtualTimeScheduler`, and `VirtualTimeSchedulerBase`. We will look at this sort of scheduler in the [Testing chapter](16_TestingRx.md). ## SubscribeOn and ObserveOn @@ -552,11 +550,11 @@ Created thread for EventLoopScheduler: 12 Now all the notifications are coming in on thread 12, the thread created for the `EventLoopScheduler`. Note that even here, `Range` isn't using that scheduler. The difference is that `Range` defaults to `CurrentThreadScheduler`, so it will generate its outputs from whatever thread you happen to call it from. So even though it's not actually using the `EventLoopScheduler`, it does end up using that scheduler's thread, because we used that scheduler to subscribe to the `Range`. -So this illustrates that `SubscribeOn` is doing what it promises: it does determine the context from which `Subscribe` is invoked. It's just that it doesn't always matter what context that is. If `Subscribe` does non-trivial work, it can matter. For example, if you use [`Observable.Create`](03_CreatingObservableSequences.md#observablecreate) to create a custom sequence, `SubscribeOn` determines the context in which the callback you passed to `Create` is invoked. But Rx doesn't have a concept of a 'current' scheduler—there's no way to ask "which scheduler was I invoked from?"—so Rx operators don't just their scheduler from the context on which they were subscribed. +So this illustrates that `SubscribeOn` is doing what it promises: it does determine the context from which `Subscribe` is invoked. It's just that it doesn't always matter what context that is. If `Subscribe` does non-trivial work, it can matter. For example, if you use [`Observable.Create`](03_CreatingObservableSequences.md#observablecreate) to create a custom sequence, `SubscribeOn` determines the context in which the callback you passed to `Create` is invoked. But Rx doesn't have a concept of a 'current' scheduler—there's no way to ask "which scheduler was I invoked from?"—so Rx operators don't just inherit their scheduler from the context on which they were subscribed. When it comes to emitting items, most of the sources Rx supplies fall into one of three categories. First, operators that produce outputs in response to inputs from an upstream source (e.g., `Where`, `Select`, or `GroupBy`) generally call their observers methods from inside their own `OnNext`. So whatever context their source observable was running in when it called `OnNext`, that's the context the operator will use when calling its observer. Second, operators that produce items either iteratively, or based on timing will use a scheduler (either explicitly supplied, or a default type when none is specified). Third, some sources just produce items from whatever context they like. For example, if an `async` method uses `await` and specifies `ConfigureAwait(false)` then it could be on more or less any thread and in any context after the `await` completes, and it might then go on to invoke `OnNext` on an observer. -As long as a source follows [the fundamental rules of Rx sequences](02_KeyTypes.md#the-fundamental-rules-of-rx-sequences), it's allowed to invoke its observer's methods from any context it likes. It can choose to accept a scheduler as input and to use that, but it's under no obligation to. And if you have such an unruly source that you'd like to tame, that's where the `ObserveOn` extension method comes in. Consider the following rather daft example: +As long as a source follows [the fundamental rules of Rx sequences](02_KeyTypes.md#the-fundamental-rules-of-rx-sequences), it's allowed to invoke its observer's methods from any context it likes. It can choose to accept a scheduler as input and to use that, but it's under no obligation to. And if you have an unruly source of this kind that you'd like to tame, that's where the `ObserveOn` extension method comes in. Consider the following rather daft example: ```cs Observable @@ -609,7 +607,7 @@ If you're using Rx in a user interface, `ObserveOn` is useful when you are deali Most UI frameworks designate one particular thread for receiving notifications from the user and also for updating the UI, for any one window. It is critical to avoid blocking this UI thread, as doing so leads to a poor user experience—if you are doing work on the UI thread, it will be unavailable for responding to user input until that work is done. As a general rule, if you cause a user interface to become unresponsive for longer than 100ms, users will become irritated, so you should not be perform any work that will take longer than this on the UI thread. When Microsoft first introduced its application store (which came in with Windows 8) they specified an even more stringent limit—if your application blocked the UI thread for longer than 50ms, it might not be allowed into the store. With the processing power offered by modern processors, you can achieve a lot of processing 50ms—even on the relatively low-powered processors in mobile devices that's long enough to execute millions of instructions. However, anything involving I/O (reading or writing files, or waiting for a response from any kind of network service) should not be done on the UI thread. The general pattern for creating responsive UI applications is: -- respond to some sort of user action +- receive a notification about some sort of user action - if slow work is required, do this on a background thread - pass the result back to the UI thread - update the UI @@ -634,9 +632,9 @@ Introducing concurrency to your application will increase its complexity. If you The common problem that concurrency introduces is unpredictable timing. Unpredictable timing can be caused by variable load on a system, as well as variations in system configurations (e.g. varying core clock speed and availability of processors). These can ultimately can result in [deadlocks](http://en.wikipedia.org/wiki/Deadlock), [livelocks](http://en.wikipedia.org/wiki/Deadlock#Livelock) and corrupted state. -A particularly significant danger of introducing concurrency to an application, is that you can silently introduce bugs. Bugs arising from unpredictable timing are notoriously difficult to detect, making easy for these kinds of defects to slip past Development, QA and UAT and only manifest themselves in Production environments. Rx, however, does such a good job of simplifying the concurrent processing of observable sequences that many of these concerns can be mitigated. You can still create problems, but if you follow the guidelines then you can feel a lot safer in the knowledge that you have heavily reduced the capacity for unwanted race conditions. +A particularly significant danger of introducing concurrency to an application is that you can silently introduce bugs. Bugs arising from unpredictable timing are notoriously difficult to detect, making it easy for these kinds of defects to slip past Development, QA and UAT and only manifest themselves in Production environments. Rx, however, does such a good job of simplifying the concurrent processing of observable sequences that many of these concerns can be mitigated. You can still create problems, but if you follow the guidelines then you can feel a lot safer in the knowledge that you have heavily reduced the capacity for unwanted race conditions. -In a later chapter, [Testing Rx](16_TestingRx.html), we will look at how Rx improves your ability to test concurrent workflows. +In a later chapter, [Testing Rx](16_TestingRx.md), we will look at how Rx improves your ability to test concurrent workflows. ### Lock-ups @@ -647,7 +645,7 @@ var sequence = new Subject(); Console.WriteLine("Next line should lock the system."); -var value = sequence.First(); +IEnumerable value = sequence.First(); sequence.OnNext(1); Console.WriteLine("I can never execute...."); @@ -655,7 +653,7 @@ Console.WriteLine("I can never execute...."); The `First` method will not return until its source emits a sequence. But the code that causes this source to emit sequence is on the line _after_ the call to `First`. So the source can't emit a sequence until `First` returns. This style of deadlock, with two parties, each unable to proceed until the other proceeds, is often known as a _deadly embrace_. As this code shows, it's entirely possible for a deadly embrace to occur even in single threaded code. In fact, the single threaded nature of this code is what enables deadlock: we have two operations (waiting for the first notification, and sending the first notification) and only a single thread. That doesn't have to be a problem—it we'd used `FirstAsync` and attached an observer to that, `FirstAsync` would have executed its logic when the source `Subject` invoked its `OnNext`. But that is more complex than just calling `First` and assigning the result into a variable. -This is an oversimplified example to illustrate the behaviour, and we would never write such code in production. (And even if we did, it fails so quickly and consistency that we would immediately become aware of a problem.) But in real application code, these kinds of problems can be harder to spot. Race conditions often slip into the system at integration points, so the problem isn't necessarily evidence in any one piece of code: timing problems can emerge as a result of how we plug multiple pieces of code together. +This is an oversimplified example to illustrate the behaviour, and we would never write such code in production. (And even if we did, it fails so quickly and consistently that we would immediately become aware of a problem.) But in real application code, these kinds of problems can be harder to spot. Race conditions often slip into the system at integration points, so the problem isn't necessarily evidence in any one piece of code: timing problems can emerge as a result of how we plug multiple pieces of code together. The next example may be a little harder to detect, but is only small step away from our first, unrealistic example. The basic idea is that we've got a subject that represents button clicks in a user interface. Event handlers representing user input are invoked by the UI framework—we just provide the framework with event handler methods, and it calls them for us whenever the event of interest, such as a button being clicked, occurs. This code calls `First` on the subject representing clicks, but it's less obvious that this might cause a problem here than it was in the preceding example: @@ -768,7 +766,7 @@ The effect is that when our click handler calls `First`, that will in turn subsc This boils down to the same basic problem as the first of these `First`-related deadlock examples. We have two processes: the generation of items, and waiting for an item to occur. These need to be in progress concurrently—we need the "wait for first item" logic to be up and running at the point when the source emits its first item. These examples all use just a single thread, which makes it a bad idea to use a single blocking call (`First`) both to set up the process of watching for the first item, and also to wait for that to happen. But even though it was the same basic problem in all three cases, it became harder to see as the code became more complex. With real application code, it's often a lot harder than this to see the root causes of deadlocks. So far, this chapter may seem to say that concurrency is all doom and gloom by focusing on the problems you could face, and the fact that they are often hard to spot in practice; this is not the intent though. -Although adopting Rx can't magically avoid classic concurrency problems, Rx can make it easier to get it right, provided you follow these two simple rules. +Although adopting Rx can't magically avoid classic concurrency problems, Rx can make it easier to get it right, provided you follow these two rules. - Only the top-level subscriber should make scheduling decisions - Avoid using blocking calls: e.g. `First`, `Last` and `Single` @@ -781,7 +779,7 @@ This does leave one question unanswered: _how_ should the top-level subscriber m Other scenarios will require other strategies, but the general principle with deadlocks is always the same: understand which shared resources require exclusive access. For example, if you have a sensor library, it might create a dedicated thread to monitor devices and report new measurements, and if it were to stipulate that certain work had to be done on that thread, this would be very similar to the UI scenario: there is a particular thread that you will need to avoid blocking. The same approach would likely apply here. But this is not the only kind of scenario. -You could imagine a data processing application in which certain data structures are shared. It's quite common in these cases to be allowed to access such data structures from any thread, but to be required to do so one thread at a time. Typically we would use thread synchronization primitives to protect against concurrent use of these critical data structures. In these cases, the risks of deadlock do not arise from the use of particular threads. Instead, they arise from the possibility that one thread can't progress because some other threads is using a shared data structure, but that other thread is waiting for the first thread to do something, and won't relinquish its lock on that data structure until that happens. The simplest way to avoid problems here is to avoid blocking wherever possible. Avoid methods like `First`, preferring their non-blocking equivalents such as `FirstAsync`. (If there are cases where you can't avoid blocking, try to avoid doing so while in possession of locks that guard access to shared data. And if you really can't avoid that either, then there are no simple answers—you'll now have to start thinking about lock hierarchies to systematically avoid deadlock, just as you would if you weren't using Rx.) The non-blocking style is the natural way to do things with Rx, and that's the main way Rx can help you avoid concurrency related problems in these cases. +You could imagine a data processing application in which certain data structures are shared. It's quite common in these cases to be allowed to access such data structures from any thread, but to be required to do so one thread at a time. Typically we would use thread synchronization primitives to protect against concurrent use of these critical data structures. In these cases, the risks of deadlock do not arise from the use of particular threads. Instead, they arise from the possibility that one thread can't progress because some other thread is using a shared data structure, but that other thread is waiting for the first thread to do something, and won't relinquish its lock on that data structure until that happens. The simplest way to avoid problems here is to avoid blocking wherever possible. Avoid methods like `First`, preferring their non-blocking equivalents such as `FirstAsync`. (If there are cases where you can't avoid blocking, try to avoid doing so while in possession of locks that guard access to shared data. And if you really can't avoid that either, then there are no simple answers—you'll now have to start thinking about lock hierarchies to systematically avoid deadlock, just as you would if you weren't using Rx.) The non-blocking style is the natural way to do things with Rx, and that's the main way Rx can help you avoid concurrency related problems in these cases. ## Advanced features of schedulers @@ -807,7 +805,7 @@ The scheduler does not care what is in this `state` argument. It just passes it var next = scheduler.Schedule(this, static (innerScheduler, @this) => @this.LoopRec(innerScheduler)); ``` -Logically, `Range` is just a loop that executes once for each item it produces. But to enable concurrent execution and to avoid stack overflows, it implements this by scheduling each iteration of the loop as an individual work item. (The method is called `LoopRec` because it is logically a recursive loop: we kick it off by calling `Schedule`, and each time the scheduler calls this method, it calls `Schedule` again to ask for the next item to run. This doesn't actually cause recursion with any of Rx's built-in schedulers, even the `ImmediateScheduler`, because they all detect this and arrange to run the next item after the current one returns. But if you wrote the most naive scheduler possible, this would actually end up recursing at runtime, likely leading to stack overflows if you tried to create a large sequence.) +Logically, `Range` is just a loop that executes once for each item it produces. But to enable concurrent execution and to avoid stack overflows, it implements this by scheduling each iteration of the loop as an individual work item. (The method is called `LoopRec` because it is logically a recursive loop: it is kicked off by calling `Schedule`, and each time the scheduler calls this method, it calls `Schedule` again to ask for the next item to run. This doesn't actually cause recursion with any of Rx's built-in schedulers, even the `ImmediateScheduler`, because they all detect this and arrange to run the next item after the current one returns. But if you wrote the most naive scheduler possible, this would actually end up recursing at runtime, likely leading to stack overflows if you tried to create a large sequence.) Notice that the lambda passed to `Schedule` has been annotated with `static`. This tells the C# compiler that it is our intention _not_ to capture any variables, and that any attempt to do so should cause a compiler error. The advantage of this is that the compiler is able to generate code that reuses the same delegate instance for every call. The first time this runs, it will create a delegate and store it in a hidden field. On every subsequent execution of this (either in future iterations of the same range, or for completely new range instances) it can just use that same delegate again and again and again. This is possible because the delegate captures no state. This avoids allocating a new object each time round the loop. @@ -874,13 +872,13 @@ Before schedule at 2012-01-01T12:00:00.000000+00:00 After schedule at 2012-01-01T12:00:00.058000+00:00 ``` -Note that the scheduled action never occurs, as we have cancelled it almost immediately. +Note that the scheduled action never occurred, because we cancelled it almost immediately. When the user cancels the scheduled action method before the scheduler is able to invoke it, that action is just removed from the queue of work. This is what we see in example above. It's possible to cancel scheduled work that is already running, and this is why the work item callback is required to return `IDisposable`: if work has already begun when you try to cancel the work item, Rx calls `Dispose` on the `IDisposable` that your work item callback returned. This gives a way for users to cancel out of a job that may already be running. This job could be some sort of I/O, heavy computations or perhaps usage of `Task` to perform some work. -You may be wondering how this mechanism can be any use: the work item callback needs to have returned already for Rx to be able to invoke the `IDisposable` that it returns. This mechanism can only be used in practice if work continues after returning to the scheduler. You could fire up another thread so the work happens concurrently, although we generally try to avoid creating threads in Rx. Another possibility would be it the scheduled work item invoked some asynchronous API and returned without waiting for it to complete—if that API offered cancellation, you could return an `IDisposable` that cancelled it. +You may be wondering how this mechanism can be any use: the work item callback needs to have returned already for Rx to be able to invoke the `IDisposable` that it returns. This mechanism can only be used in practice if work continues after returning to the scheduler. You could fire up another thread so the work happens concurrently, although we generally try to avoid creating threads in Rx. Another possibility would be if the scheduled work item invoked some asynchronous API and returned without waiting for it to complete—if that API offered cancellation, you could return an `IDisposable` that cancelled it. -To illustrate cancellation in operation, this slightly unrealistic example runs some work as a `Task` to enable it to continue after our callback returns. It just fakes some work by performing a spin wait and adding values to the `list` argument. The key here is that create a `CancellationToken` to be able to tell the task we want it to stop, and we return an `IDisposable` that puts this token in to a cancelled state. +To illustrate cancellation in operation, this slightly unrealistic example runs some work as a `Task` to enable it to continue after our callback returns. It just fakes some work by performing a spin wait and adding values to the `list` argument. The key here is that we create a `CancellationToken` to be able to tell the task we want it to stop, and we return an `IDisposable` that puts this token in to a cancelled state. ```cs public IDisposable Work(IScheduler scheduler, List list) @@ -944,7 +942,7 @@ Cancelled Cancellation requested ``` -The problem here is that we have introduced explicit use of `Task` so we are increasing concurrency in a way that is outside of the control of the scheduler. The Rx library generally allowed control over the way in which concurrency is introduced by accepting a scheduler parameter. If the goal is to enable long-running iterative work, we can avoid having to spin up new threads or tasks but using Rx recursive scheduler features instead. I already talked a bit about this in the [Passing state](#passing-state) section, but there are a few ways to go about it. +The problem here is that we have introduced explicit use of `Task` so we are increasing concurrency in a way that is outside of the control of the scheduler. The Rx library generally allows control over the way in which concurrency is introduced by accepting a scheduler parameter. If the goal is to enable long-running iterative work, we can avoid having to spin up new threads or tasks but using Rx recursive scheduler features instead. I already talked a bit about this in the [Passing state](#passing-state) section, but there are a few ways to go about it. ### Recursion @@ -990,7 +988,7 @@ public static IDisposable Schedule( Each of these overloads take a delegate "action" that allows you to call "action" recursively. This may seem a very odd signature, but it allows us to achieve a similar logically recursive iterative approach as you saw in [Passing state](#passing-state) section, but in a potentially simpler way. -This example uses the most simple recursive overload. We have an `Action` that can be called recursively. +This example uses the simplest recursive overload. We have an `Action` that can be called recursively. ```cs Action work = (Action self) => @@ -1026,6 +1024,6 @@ Note that we didn't have to write any cancellation code in our delegate. Rx hand The main difference between these overloads, and using the `IScheduler` methods directly, is that you don't need to pass another callback directly into the scheduler. You just invoke the supplied `Action` and it schedules another call to your method. They also enable you not to pass a state argument if you don't have any use for one. -As mentioned in the earlier section, although this logically represents recursion, Rx protects us from stack overflows. The schedulers implement this style of recursion by waiting for the method to return before performing the recursive call. (So it is always what's called "tail recursion" where the recursive call occurs right at the end of the current method.) +As mentioned in the earlier section, although this logically represents recursion, Rx protects us from stack overflows. The schedulers implement this style of recursion by waiting for the method to return before performing the recursive call. This concludes our tour of scheduling and threading. Next, we will look at the related topic of timing. \ No newline at end of file From 77467d5a32ede9e58a66807e4850863456f8079c Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Thu, 9 Nov 2023 17:44:04 +0000 Subject: [PATCH 080/142] Ch12 update after read through --- content/12_Timing.md | 68 ++++++++++++++++++-------------------------- 1 file changed, 28 insertions(+), 40 deletions(-) diff --git a/content/12_Timing.md b/content/12_Timing.md index 8fca3ab..0624572 100644 --- a/content/12_Timing.md +++ b/content/12_Timing.md @@ -1,14 +1,14 @@ --- -title: Timing +title: Time-based sequences --- # Time-based sequences -With event sources, timing is often important. In some cases, the only information of interest about some event might the time at which it occurred. The only way in which the core `IObservable` and `IObserver` interfaces address time is that a source can decide when it calls an observer's `OnNext` method. A subscriber knows when an event occurred because it is occurring right now. This isn't always the most convenient way in which to work with timing, so the Rx library provides some timing-related operators. We've already seen a couple of operators that offer optional time-based operation: [`Buffer`](./08_Partitioning.md#buffer) and [`Window`])(08_Partitioning#window). This chapter looks at the various operators that are all about timing. +With event sources, timing is often important. In some cases, the only information of interest about some event might be the time at which it occurred. The core `IObservable` and `IObserver` interfaces don't mention timing at all in their method signatures, but they don't need to, because a source can decide when it calls an observer's `OnNext` method. A subscriber knows when an event occurred because it is occurring right now. This isn't always the most convenient way in which to work with timing, so the Rx library provides some timing-related operators. We've already seen a couple of operators that offer optional time-based operation: [`Buffer`](./08_Partitioning.md#buffer) and [`Window`])(08_Partitioning#window). This chapter looks at the various operators that are all about timing. ## Timestamp and TimeInterval -As observable sequences are asynchronous it can be convenient to know timings for when elements are received. Obviously, a subscriber can always just use `DateTimeOffset.Now`, but if you want to refer to the arrival time as part of a larger query, the `Timestamp` extension method is a handy convenience method that attaches a timestamp to each element. It wraps elements from its source sequence in a light weight `Timestamped` structure. The `Timestamped` type is a struct that exposes the value of the element it wraps, and also a `DateTimeOffset` indicating when `Timestamp` operator received it. +As observable sequences are asynchronous it can be convenient to know when elements are received. Obviously, a subscriber can always just use `DateTimeOffset.Now`, but if you want to refer to the arrival time as part of a larger query, the `Timestamp` extension method is a handy convenience method that attaches a timestamp to each element. It wraps elements from its source sequence in a light weight `Timestamped` structure. The `Timestamped` type is a struct that exposes the value of the element it wraps, and also a `DateTimeOffset` indicating when `Timestamp` operator received it. In this example we create a sequence of three values, one second apart, and then transform it to a time stamped sequence. @@ -16,19 +16,19 @@ In this example we create a sequence of three values, one second apart, and then Observable.Interval(TimeSpan.FromSeconds(1)) .Take(3) .Timestamp() - .Dump("TimeStamp"); + .Dump("Timestamp"); ``` As you can see, `Timestamped`'s implementation of `ToString()` gives us a readable output. ``` -TimeStamp-->0@07/08/2023 10:03:58 +00:00 -TimeStamp-->1@07/08/2023 10:03:59 +00:00 -TimeStamp-->2@07/08/2023 10:04:00 +00:00 +Timestamp-->0@07/08/2023 10:03:58 +00:00 +Timestamp-->1@07/08/2023 10:03:59 +00:00 +Timestamp-->2@07/08/2023 10:04:00 +00:00 TimeStamp completed ``` -We can see that the values 0, 1 & 2 were each produced one second apart. +We can see that the values 0, 1, and 2 were each produced one second apart. Rx also offers `TimeInterval`. Instead of reporting the time at which items arrived, it reports the interval between items (or, in the case of the first element, how long it took for that to emerge after subscription). Similarly to the `Timestamp` method, elements are wrapped in a light weight structure. But whereas `Timestamped` adorned each item with the arrival time, `TimeInterval` wraps each element with the `TimeInterval` type which adds a `TimeSpan`. We can modify the previous example to use `TimeInterval`: @@ -42,19 +42,21 @@ Observable.Interval(TimeSpan.FromSeconds(1)) As you can see, the output now reports the time between elements instead of the time of day at which they were received: ``` -TimeStamp-->0@00:00:01.0183771 -TimeStamp-->1@00:00:00.9965679 -TimeStamp-->2@00:00:00.9908958 -TimeStamp completed +Timestamp-->0@00:00:01.0183771 +Timestamp-->1@00:00:00.9965679 +Timestamp-->2@00:00:00.9908958 +Timestamp completed ``` As you can see from the output, the timings are not exactly one second but are pretty close. Some of this will be measurement noise in the `TimeInterval` operator, but most of this variability is likely to arise from the `Observable.Interval` class. There will always be a limit to the precision with which a scheduler can honour the timing request of it. Some scheduler introduce more variation than others—the schedulers that deliver work via a UI thread are ultimately limited by how quickly that thread's message loop responds. But even in the most favourable condition, schedulers are limited by the fact that .NET is not built for use in real-time systems (and nor are most of the operating systems Rx can be used on). So with all of the operators in this section, you should be aware that timing is always a _best effort_ affair in Rx. +In fact, the inherent variations in timing can make `Timestamp` particularly useful. The problem with simply looking at `DateTimeOffset.Now` is that it takes a non-zero amount of time to process an event, so you'll likely see a slightly different time each time you try to read the current time during the processing of one event. By attaching a timestamp once, we capture the time at which the event was observed, and then it doesn't matter how much delay downstream processing adds—the event will be annotated with a single, fixed time indicating when it passed through `Timestamp`. + ## Delay The `Delay` extension method time-shifts an entire sequence. `Delay` attempts to preserve the relative time intervals between the values. There is inevitably a limit to the precision with which it can do this—it won't recreate timing down to the nearest nanosecond. The exact precision is determined by the scheduler you use, and will typically get worse under heavy load, but it will typically reproduce timings to within a few milliseconds. -There are overloads of `Delay` accepting a `TimeSpan`, and an optional scheduler, which will delay the sequence by the specified amount. And there are also delays that accept a `DateTimeOffset` (and also, optionally, a scheduler) which will wait until the specified time occurs, and then start replaying the input. (This second, absolute time based approach is essentially equivalent to the `TimeSpan` overloads—you would get more or less the same effect by subtracting the current time from the target time to get a `TimeSpan`, except the `DateTimeOffset` version attempts to deal with changes in the system clock that occur between `Delay` being called, and the specified time arriving.) +There are overloads of `Delay` offering various different ways to specify the time shift. (With all the options, you can optionally pass a scheduler, but if you call the overloads that don't take one, it defaults to [`DefaultScheduler`](11_SchedulingAndThreading.md#defaultscheduler).) The most straightforward is to pass a `TimeSpan`, which will delay the sequence by the specified amount. And there are also delays that accept a `DateTimeOffset` which will wait until the specified time occurs, and then start replaying the input. (This second, absolute time based approach is essentially equivalent to the `TimeSpan` overloads—you would get more or less the same effect by subtracting the current time from the target time to get a `TimeSpan`, except the `DateTimeOffset` version attempts to deal with changes in the system clock that occur between `Delay` being called, and the specified time arriving.) To show the `Delay` method in action, this example creates a sequence of values one second apart and timestamps them. This will show that it is not the subscription that is being delayed, but the actual forwarding of the notifications to our final subscriber. @@ -66,28 +68,19 @@ IObservable> source = Observable IObservable> delay = source.Delay(TimeSpan.FromSeconds(2)); -source.Subscribe( - value => Console.WriteLine("source : {0}", value), - () => Console.WriteLine("source Completed")); delay.Subscribe( - value => Console.WriteLine("delay : {0}", value), + value => Console.WriteLine($"Item {value.Value} with timestamp {value.Timestamp} received at {DateTimeOffset.Now}"), () => Console.WriteLine("delay Completed")); ``` -If you look at the timestamps in the output, you can see that both the immediate and the delayed subscriptions subscribed to the source at the same time: both report the first timestamp as `10:15:46`. But you can also see that the `delay` subscription did not start receiving those events until 2 seconds later. +If you look at the timestamps in the output, you can see that the times captured by `Timestamp` are all two seconds earlier than the time reported by the subscription: ``` -source : 0@07/08/2023 10:15:46 +00:00 -source : 1@07/08/2023 10:15:47 +00:00 -source : 2@07/08/2023 10:15:48 +00:00 -delay : 0@07/08/2023 10:15:46 +00:00 -source : 3@07/08/2023 10:15:49 +00:00 -delay : 1@07/08/2023 10:15:47 +00:00 -delay : 2@07/08/2023 10:15:48 +00:00 -source : 4@07/08/2023 10:15:50 +00:00 -source Completed -delay : 3@07/08/2023 10:15:49 +00:00 -delay : 4@07/08/2023 10:15:50 +00:00 +Item 0 with timestamp 09/11/2023 17:32:20 +00:00 received at 09/11/2023 17:32:22 +00:00 +Item 1 with timestamp 09/11/2023 17:32:21 +00:00 received at 09/11/2023 17:32:23 +00:00 +Item 2 with timestamp 09/11/2023 17:32:22 +00:00 received at 09/11/2023 17:32:24 +00:00 +Item 3 with timestamp 09/11/2023 17:32:23 +00:00 received at 09/11/2023 17:32:25 +00:00 +Item 4 with timestamp 09/11/2023 17:32:24 +00:00 received at 09/11/2023 17:32:26 +00:00 delay Completed ``` @@ -95,7 +88,7 @@ Note that `Delay` will not time-shift `OnError` notifications. These will be pro ## Sample -The `Sample` method produces items whatever interval you ask. Each time it produces a value, it reports the last value that emerged from your source. If you have a source that produces data at a higher rate than you need (e.g. suppose you have an accelerometer that reports 100 measurements per second, but you only need to take a reading 10 times a second), `Sample` provides an easy way to reduce the data rate. This example shows `Sample` in action. +The `Sample` method produces items at whatever interval you ask. Each time it produces a value, it reports the last value that emerged from your source. If you have a source that produces data at a higher rate than you need (e.g. suppose you have an accelerometer that reports 100 measurements per second, but you only need to take a reading 10 times a second), `Sample` provides an easy way to reduce the data rate. This example shows `Sample` in action. ```csharp IObservable interval = Observable.Interval(TimeSpan.FromMilliseconds(150)); @@ -180,7 +173,7 @@ Since the first sample is taken after the source emits five, and two thirds of t ## Throttle -The `Throttle` extension method provides a sort of protection against sequences that produce values at variable rates and sometimes too quickly. Like the `Sample` method, `Throttle` will return the last sampled value for a period of time. Unlike `Sample` though, `Throttle`'s period is a sliding window. Each time `Throttle` receives a value, the window is reset. Only once the period of time has elapsed will the last value be propagated. This means that the `Throttle` method is only useful for sequences that produce values at a variable rate. Sequences that produce values at a constant rate (like `Interval` or `Timer`) either would have all of their values suppressed if they produced values faster than the throttle period, or all of their values would be propagated if they produced values slower than the throttle period. +The `Throttle` extension method provides a sort of protection against sequences that produce values at variable rates and sometimes too quickly. Like the `Sample` method, `Throttle` will return the last sampled value for a period of time. Unlike `Sample` though, `Throttle`'s period is a sliding window. Each time `Throttle` receives a value, the window is reset. Only once the period of time has elapsed will the last value be propagated. This means that the `Throttle` method is only useful for sequences that produce values at a variable rate. Sequences that produce values at a constant rate (like `Interval` or `Timer`) would have all of their values suppressed if they produced values faster than the throttle period, whereas all of their values would be propagated if they produced values slower than the throttle period. ```csharp // Ignores values from an observable sequence which are followed by another value before @@ -232,7 +225,7 @@ public static IObservable Timeout( If we provide a `TimeSpan` and no values are produced within that time span, then the sequence fails with a `TimeoutException`. ```csharp -var source = Observable.Interval(TimeSpan.FromMilliseconds(100)).Take(10) +var source = Observable.Interval(TimeSpan.FromMilliseconds(100)).Take(5) .Concat(Observable.Interval(TimeSpan.FromSeconds(2))); var timeout = source.Timeout(TimeSpan.FromSeconds(1)); @@ -242,7 +235,7 @@ timeout.Subscribe( () => Console.WriteLine("Completed")); ``` -Output: +Initially this produces values frequently enough to satisfy `Timeout`, so the observable returned by `Timeout` just forwards items from the source. But once the source stops producing items, we get an OnError: ``` 0 @@ -253,7 +246,7 @@ Output: System.TimeoutException: The operation has timed out. ``` -Alternatively, we can pass `Timeout` an absolute time; if the sequence does not completed by that time, it produces an error. +Alternatively, we can pass `Timeout` an absolute time; if the sequence does not complete by that time, it produces an error. ```csharp var dueDate = DateTimeOffset.UtcNow.AddSeconds(4); @@ -308,11 +301,6 @@ public static IObservable Timeout( {...} ``` - - -As we've now seen, Rx provides features to manage timing in a reactive paradigm. Data can be timed, throttled, or sampled to meet your needs. Entire sequences can be shifted in time with the delay feature, and timeliness of data can be asserted with the `Timeout` operator. These simple yet powerful features further extend the developer's tool belt for querying data in motion. +As we've now seen, Rx provides features to manage timing in a reactive paradigm. Data can be timed, throttled, or sampled to meet your needs. Entire sequences can be shifted in time with the delay feature, and timeliness of data can be asserted with the `Timeout` operator. Next we will look at the boundary between Rx and the rest of the world. \ No newline at end of file From f3447f0c370e881dea8c988d7ffe4318890fcb6c Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Fri, 10 Nov 2023 13:16:59 +0000 Subject: [PATCH 081/142] Ch13 update after read through --- content/13_LeavingIObservable.md | 153 +++++++++++++------------------ 1 file changed, 66 insertions(+), 87 deletions(-) diff --git a/content/13_LeavingIObservable.md b/content/13_LeavingIObservable.md index 9f5c9bd..6816a22 100644 --- a/content/13_LeavingIObservable.md +++ b/content/13_LeavingIObservable.md @@ -10,7 +10,7 @@ Rx's compositional nature is the key to its power, but it can look like a proble You've already seen some answer to these questions. The [Creating Observable Sequences chapter](03_CreatingObservableSequences.md) showed various ways to create observable sources. But when it comes to handling the items that emerge from an `IObservable`, all we've really seen is how to implement [`IObserver`](02_KeyTypes.md#iobserver), and [how to use the callback based `Subscribe` extension methods to subscribe to an `IObservable`](02_KeyTypes.md#iobservable). -In this chapter, we will look at the methods in Rx which allow you to leave the `IObservable` world, so you can do some useful work with the notifications that emerge from a source. +In this chapter, we will look at the methods in Rx which allow you to leave the `IObservable` world, so you can take action based on the notifications that emerge from an Rx source. ## Integration with `async` and `await` @@ -21,13 +21,13 @@ long v = await Observable.Timer(TimeSpan.FromSeconds(2)).FirstAsync(); Console.WriteLine(v); ``` -Although `await` is most often used with `Task`, `Task`, or `ValueTask`, it is actually an extensible language feature. It's possible to make `await` work for more or less any type by defining some suitable extension methods and some supporting types. And that's precisely what Rx does. If your source file includes a `using System.Reactive.Linq;` directive, a suitable extension method will be available, so you can `await` any task. +Although `await` is most often used with `Task`, `Task`, or `ValueTask`, it is actually an extensible language feature. It's possible to make `await` work for more or less any type by defining some suitable extension methods and some supporting types. That's precisely what Rx does. If your source file includes a `using System.Reactive.Linq;` directive, a suitable extension method will be available, so you can `await` any task. The way this actually works is that the relevant `GetAwaiter` extension method wraps the `IObservable` in an `AsyncSubject`, which provides everything that C# requires to support `await`. These wrappers work in such a way that there will be a call to `Subscribe` each time you execute an `await` against an `IObservable`. If a source reports an error by invoking its observer's `OnError`, Rx's `await` integration handles this by putting the task into a faulted state, so that the `await` will rethrow the exception. -Sequence can be empty—they call `OnCompleted` without ever having called `OnNext`. If you `await` a sequence that does this, it will throw an `InvalidOperationException` reporting that the sequence contains no elements. +Sequences can be empty—they might call `OnCompleted` without ever having called `OnNext`. However, since there's no way to tell from the type of a source that it will be empty, this doesn't fit especially well with the `await` paradigm. With tasks, you can know at compile time whether you'll get a result by looking at whether you're awaiting a `Task` or `Task`, so the compiler is able to know whether a particular `await` expression produces a value. But when you `await` and `IObservable`, there's no compile-time distinction, so the only way Rx can report that a sequence is empty when you `await` is to throw an `InvalidOperationException` reporting that the sequence contains no elements. As you may recall from the [`AsyncSubject` section of chapter 3](./03_CreatingObservableSequences.md#asyncsubject), `AsyncSubject` reports only the final value to emerge from its source. So if you `await` a sequence that reports multiple items, all but the final item will be ignored. What if you want to see all of the items, but you'd still like to use `await` to handle completion and errors? @@ -38,8 +38,8 @@ The `ForEachAsync` method supports `await`, but it provides a way to process eac ```cs IObservable source = Observable.Interval(TimeSpan.FromSeconds(1)) .Take(5); -await source.ForEachAsync(i => Console.WriteLine("received {0} @ {1}", i, DateTime.Now)); -Console.WriteLine("finished @ {0}", DateTime.Now); +await source.ForEachAsync(i => Console.WriteLine($"received {i} @ {DateTime.Now}")); +Console.WriteLine($"finished @ {DateTime.Now}"); ``` Output: @@ -55,11 +55,11 @@ finished @ 02/08/2023 07:53:50 Note that the `finished` line is last, as you would expect. Let's compare this with the `Subscribe` extension method, which also lets us provide a single callback for handling items: -```csharp +```cs IObservable source = Observable.Interval(TimeSpan.FromSeconds(1)) .Take(5); -source.Subscribe(i => Console.WriteLine("received {0} @ {1}", i, DateTime.Now)); -Console.WriteLine("finished @ {0}", DateTime.Now); +source.Subscribe(i => Console.WriteLine($"received {i} @ {DateTime.Now}")); +Console.WriteLine($"finished @ {DateTime.Now}"); ``` As the output shows, `Subscribe` returned immediately. Our per-item callback was invoked just like before, but this all happened later on: @@ -75,16 +75,16 @@ received 4 @ 02/08/2023 07:55:47 This can be useful in batch-style programs that perform some work and then exit. The problem with using `Subscribe` in that scenario is that our program could easily exit without having finished the work it started. This is easy to avoid with `ForEachAsync` because we just use `await` to ensure that our method doesn't complete until the work is done. -When we use `await` either directly against an `IObservable`, or through `ForEachAsync`, we are essentially choosing to handle sequence completion in a conventional way. Error and completion handling are no longer callback driven—Rx supplies the `OnCompleted` and `OnError` handlers for us, and instead represents these through the awaiter mechanism C# recognizes. (Specifically, when we `await` a source directly, Rx supplies a custom awaiter, and when we use `ForEachAsync` it just returns a `Task`.) +When we use `await` either directly against an `IObservable`, or through `ForEachAsync`, we are essentially choosing to handle sequence completion in a conventional way, not a reactive way. Error and completion handling are no longer callback driven—Rx supplies the `OnCompleted` and `OnError` handlers for us, and instead represents these through C#'s awaiter mechanism. (Specifically, when we `await` a source directly, Rx supplies a custom awaiter, and when we use `ForEachAsync` it just returns a `Task`.) Note that there are some circumstances in which `Subscribe` will block until its source completes. [`Observable.Return`](03_CreatingObservableSequences.md#observablereturn) will do this by default, as will [`Observable.Range`](03_CreatingObservableSequences.md#observablerange). We could try to make the last example do it by specifying a different scheduler: -```csharp +```cs // Don't do this! IObservable source = Observable.Interval(TimeSpan.FromSeconds(1), ImmediateScheduler.Instance) .Take(5); -source.Subscribe(i => Console.WriteLine("received {0} @ {1}", i, DateTime.Now)); -Console.WriteLine("finished @ {0}", DateTime.Now); +source.Subscribe(i => Console.WriteLine($"received {i} @ {DateTime.Now}")); +Console.WriteLine($"finished @ {DateTime.Now}"); ``` However, this highlights the dangers of non-async blocking calls: although this looks like it should work, in practice it deadlocks in the current version of Rx. Rx doesn't consider the `ImmediateScheduler` to be suitable for timer-based operations, which is why it's not the default, and this scenario is a good example of why that is. (The fundamental issue is that the only way to cancel a scheduled work item is to call `Dispose` on the object returned by the call to `Schedule`. `ImmediateScheduler` by definition doesn't return until after it has finished the work, meaning it effectively can't support cancellation. So the call to `Interval` effectively creates a periodically scheduled work item that can't be cancelled, and which is therefore doomed to run forever.) @@ -93,19 +93,20 @@ This is why we need `ForEachAsync`. It might look like we can get the same effec ## ToEnumerable -The two mechanisms we've explored so far convert completion and error handling from Rx's callback mechanism to a more conventional approach enabled by `await`, but if we wanted to handle each item from the source, each still used a callback for that. But the `ToEnumerable` extension method goes a step further: it enables the entire sequence to be consumed with a conventional `foreach` loop: +The two mechanisms we've explored so far convert completion and error handling from Rx's callback mechanism to a more conventional approach enabled by `await`, but we still had to supply a callback to be able to handle every individual item. But the `ToEnumerable` extension method goes a step further: it enables the entire sequence to be consumed with a conventional `foreach` loop: -```csharp +```cs var period = TimeSpan.FromMilliseconds(200); -var source = Observable.Timer(TimeSpan.Zero, period) - .Take(5); +IObservable source = Observable + .Timer(TimeSpan.Zero, period) + .Take(5); -var result = source.ToEnumerable(); +IEnumerable result = source.ToEnumerable(); -foreach (var value in result) -{ - Console.WriteLine(value); -} +foreach (long value in result) +{ + Console.WriteLine(value); +} Console.WriteLine("done"); ``` @@ -122,14 +123,14 @@ done ``` The source observable sequence will be subscribed to when you start to enumerate the sequence (i.e. lazily). -If no elements are available yet, or you have consumed all elements produced so far, the call that `foreach` makes to the enumerator's `MoveNext` will block until the source produces an element. So this approach relies on the source being able to generate elements from some other thread. (In this example, `Timer` defaults to the [`DefaultScheduler`](11_SchedulingAndThreading.md#defaultscheduler), which runs work on the thread pool.) If the sequence produces values faster than you consume them, they will be queued for you. (This means that it is technically possible to consume and generate items on the same thread when using `ToEnumerable` but this would rely on the producer always remaining ahead. This would be a dangerous approach because if the `foreach` loop ever caught up, it would then deadlock.) +If no elements are available yet, or you have consumed all elements produced so far, the call that `foreach` makes to the enumerator's `MoveNext` will block until the source produces an element. So this approach relies on the source being able to generate elements from some other thread. (In this example, `Timer` defaults to the [`DefaultScheduler`](11_SchedulingAndThreading.md#defaultscheduler), which runs timed work on the thread pool.) If the sequence produces values faster than you consume them, they will be queued for you. (This means that it is technically possible to consume and generate items on the same thread when using `ToEnumerable` but this would rely on the producer always remaining ahead. This would be a dangerous approach because if the `foreach` loop ever caught up, it would then deadlock.) As with `await` and `ForEachAsync`, if the source reports an error, this will be thrown, so you can use ordinary C# exception handling as this example shows: -```csharp +```cs try { - foreach (var value in result) + foreach (long value in result) { Console.WriteLine(value); } @@ -146,7 +147,7 @@ Sometimes you will want all of the items a source produces as a single list. For ### ToArray and ToList -`ToArray` and `ToList` take an observable sequence and package it into an array or an instance of `List` respectively. As with all of the single collection operations, these return an observable source that waits for their input sequence to completes, and then produces the array or list as the single value, after which they immediately complete. This example uses `ToArray` to collect all 5 elements from a source sequence into an array, and uses the `await` to extract that array from the sequence that `ToArray` returns: +`ToArray` and `ToList` take an observable sequence and package it into an array or an instance of `List` respectively. As with all of the single collection operations, these return an observable source that waits for their input sequence to complete, and then produces the array or list as the single value, after which they immediately complete. This example uses `ToArray` to collect all 5 elements from a source sequence into an array, and uses `await` to extract that array from the sequence that `ToArray` returns: ```cs TimeSpan period = TimeSpan.FromMilliseconds(200); @@ -154,7 +155,7 @@ IObservable source = Observable.Timer(TimeSpan.Zero, period).Take(5); IObservable resultSource = source.ToArray(); long[] result = await resultSource; -foreach (var value in result) +foreach (long value in result) { Console.WriteLine(value); } @@ -163,14 +164,11 @@ foreach (var value in result) Output: ``` -Subscribed -Received array 0 1 2 3 4 -Completed ``` As these methods still return observable sequences, you can also use the normal Rx `Subscribe` mechanisms, or use these as inputs to other operators. @@ -221,7 +219,7 @@ The `ToLookup` extension offers near-identical-looking overloads, the difference ## ToTask -Although Rx provides direct support for using `await` with an `IObservable`, it can sometimes be useful to obtain a `Task` representing an `IObservable`. This is useful because some APIs expect a `Task`. You can call `ToTask()` on any `IObservable`, and this will subscribe to that observable, returning a `Task` that will complete when the task completes, producing the sequence's final output as the task's result. If the source completes without producing an element, the task will enter a faulted state, with an `InvalidOperation` exception complaining that the inputs sequence contains no elements. +Although Rx provides direct support for using `await` with an `IObservable`, it can sometimes be useful to obtain a `Task` representing an `IObservable`. This is useful because some APIs expect a `Task`. You can call `ToTask()` on any `IObservable`, and this will subscribe to that observable, returning a `Task` that will complete when the task completes, producing the sequence's final output as the task's result. If the source completes without producing an element, the task will enter a faulted state, with an `InvalidOperation` exception complaining that the input sequence contains no elements. You can optionally pass a cancellation token. If you cancel this before the observable sequence completes, Rx will unsubscribe from the source, and put the task into a cancelled state. @@ -244,7 +242,7 @@ Output: If the source sequence calls `OnError`, Rx puts the task in a faulted state, using the exception supplied. -Once you have your task, you can of course engage in all the features of the TPL such as continuations. +Once you have your task, you can of course use all the features of the TPL such as continuations. ## ToEvent @@ -261,9 +259,9 @@ public static IEventSource ToEvent( {...} ``` -The `ToEvent` method returns an `IEventSource`, which will have a single event member on it: `OnNext`. +The `ToEvent` method returns an `IEventSource`, which has a single member: an `OnNext` event. -```csharp +```cs public interface IEventSource { event Action OnNext; @@ -289,7 +287,7 @@ Output: 4 ``` -This does not follow the standard .NET event pattern. We use a slightly different approach if we want that. +Although this is the simplest way to convert Rx notifications into events, it does not follow the standard .NET event pattern. We use a slightly different approach if we want that. ### ToEventPattern @@ -362,18 +360,16 @@ result.OnNext += (sender, eventArgs) => Console.WriteLine(eventArgs.Value); Now that we know how to get back into .NET events, let's take a break and remember why Rx is a better model. -- In C#, events have a curious syntax. Some find the `+=` and `-=` operators an unnatural way to register a callback - Events are difficult to compose +- Events cannot be passed as argument or stored in fields - Events do not offer the ability to be easily queried over time - Events do not have a standard pattern for reporting errors - Events do not have a standard pattern for indicating the end of a sequence of values -- Events provide almost no help for concurrency or multithreaded applications. For instance, raising an event on a separate thread requires you to do all of the plumbing - -The set of methods we have looked at in this chapter complete the circle started in the [Creating Sequences chapter](03_CreatingObservableSequences.md). We now have the means to enter and leave Rx's world. Take care when opting in and out of the `IObservable`. It's best not to transition back and forth—having a bit of Rx-based processing, then some more conventional code, and then plumbing the results of that back into Rx can quickly make a mess of your code base, and may indicate a design flaw. Typically it is better to keep all of your Rx logic together, so you only need to integrating with the outside world twice: once for input and once for output. +- Events provide almost no help for managing concurrency or multithreaded applications ## Do -Non-functional requirements of production systems often demand high availability, quality monitoring features and low lead time for defect resolution. Logging, debugging, instrumentation and journaling are common non-functional requirements that developers need to consider for production ready systems. To enable this it can often be useful to 'tap into' your Rx queries, making them deliver monitoring and diagnostic information as a side effect of their normal operation. +Non-functional requirements of production systems often demand high availability, quality monitoring features and low lead time for defect resolution. Logging, debugging, instrumentation and journaling are common implementation choices for implementing non-functional requirements. To enable these it can often be useful to 'tap into' your Rx queries, making them deliver monitoring and diagnostic information as a side effect of their normal operation. The `Do` extension method allows you to inject side effect behaviour. From an Rx perspective, `Do` doesn't appear to do anything: you can apply it to any `IObservable`, and it returns another `IObservable` that reports exactly the same elements and error or completion as its source. However, its various overloads takes callback arguments that look just like those for `Subscribe`: you can provide callbacks for individual items, completion, and errors. Unlike `Subscribe`, `Do` is not the final destination—everything the `Do` callbacks see will also be forwarded onto `Do`'s subscribers. This makes it useful for logging and similar instrumentation because you can use it to report how information is flowing through an Rx query without changing that query's behaviour. @@ -384,30 +380,30 @@ Let's first define some logging methods that we can go on to use in an example: ```csharp private static void Log(object onNextValue) { - Console.WriteLine("Logging OnNext({0}) @ {1}", onNextValue, DateTime.Now); + Console.WriteLine($"Logging OnNext({onNextValue}) @ {DateTime.Now}"); } -private static void Log(Exception onErrorValue) +private static void Log(Exception error) { - Console.WriteLine("Logging OnError({0}) @ {1}", onErrorValue, DateTime.Now); + Console.WriteLine($"Logging OnError({error}) @ {DateTime.Now}"); } private static void Log() { - Console.WriteLine("Logging OnCompleted()@ {0}", DateTime.Now); + Console.WriteLine($"Logging OnCompleted()@ {DateTime.Now}"); } ``` -This code can use `Do` to introduce some logging using the methods from above. +This code uses `Do` to introduce some logging using the methods from above. -```csharp -var source = Observable.Interval(TimeSpan.FromSeconds(1)) +```cs +IObservable source = Observable.Interval(TimeSpan.FromSeconds(1)) .Take(3); -var result = source.Do( +IObservable loggedSource = source.Do( i => Log(i), ex => Log(ex), () => Log()); -result.Subscribe( +loggedSource.Subscribe( Console.WriteLine, () => Console.WriteLine("completed")); ``` @@ -427,16 +423,16 @@ completed Note that because the `Do` is part of the query, it necessarily sees the values earlier than the `Subscribe`, which is the final link in the chain. That's why the log messages appear before the lines produced by the `Subscribe` callbacks. I like to think of the `Do` method as a [wire tap](http://en.wikipedia.org/wiki/Telephone_tapping) to a sequence. It gives you the ability to listen in on the sequence without modifying it. -As with `Subscribe`, instead of passing callbacks, you can pass `Do` an `IObserver`. In this overload, each of the `OnNext`, `OnError` and `OnCompleted` methods are passed to the other `Do` overload as each of the actions to perform. +As with `Subscribe`, instead of passing callbacks, there are overloads that let you supply callbacks for whichever of the OnNext, OnError, and OnCompleted notifications you want, or you can pass `Do` an `IObserver`. ## Encapsulating with AsObservable Poor encapsulation is a way developers can leave the door open for bugs. Here is a handful of scenarios where carelessness leads to leaky abstractions. Our first example may seem harmless at a glance, but has numerous problems. -```csharp +```cs public class UltraLeakyLetterRepo { - public ReplaySubject Letters { get; set; } + public ReplaySubject Letters { get; } public UltraLeakyLetterRepo() { @@ -448,53 +444,37 @@ public class UltraLeakyLetterRepo } ``` -In this example we expose our observable sequence as a property. The first problem here is that it is a settable property. Consumers could change the entire subject out if they wanted. This would be a very poor experience for other consumers of this class. If we make some simple changes we can make a class that seems safe enough. +In this example we expose our observable sequence as a property. We've used a `ReplaySubject` so that each subscriber will receive all of the values upon subscription. However, revealing this implementation choice in the public type of the `Letters` property is poor encapsulation, as consumers could call `OnNext`/`OnError`/`OnCompleted`. To close off that loophole we can simply make the publicly visible property type an `IObservable`. -```csharp -public class LeakyLetterRepo +```cs +public class ObscuredLeakinessLetterRepo { - private readonly ReplaySubject _letters; + public IObservable Letters { get; } - public LeakyLetterRepo() + public ObscuredLeakinessLetterRepo() { - _letters = new ReplaySubject(); - _letters.OnNext("A"); - _letters.OnNext("B"); - _letters.OnNext("C"); - } - - public ReplaySubject Letters - { - get { return _letters; } + var letters = new ReplaySubject(); + letters.OnNext("A"); + letters.OnNext("B"); + letters.OnNext("C"); + this.Letters = letters; } } ``` -Now the `Letters` property only has a getter and is backed by a read-only field. This is much better. Keen readers will note that the `Letters` property returns a `ReplaySubject`. This is poor encapsulation, as consumers could call `OnNext`/`OnError`/`OnCompleted`. To close off that loophole we can simply make the return type an `IObservable`. - -```csharp -public IObservable Letters -{ - get { return _letters; } -} -``` - -The class now _looks_ much better. The improvement, however, is only cosmetic. There is still nothing preventing consumers from casting the result back to an `ISubject` and then calling whatever methods they like. In this example we see external code pushing their values into the sequence. +This is a significant improvement: the compiler won't let someone using an instance of this source write `source.Letters.OnNext("1")`. So the API surface area properly encapsulates the implementation detail, but if we were paranoid, we could not that nothing prevents consumers from casting the result back to an `ISubject` and then calling whatever methods they like. In this example we see external code pushing their values into the sequence. ```csharp var repo = new ObscuredLeakinessLetterRepo(); -var good = repo.GetLetters(); -var evil = repo.GetLetters(); +IObservable good = repo.GetLetters(); good.Subscribe(Console.WriteLine); // Be naughty -var asSubject = evil as ISubject; - -if (asSubject != null) +if (good is ISubject evil) { // So naughty, 1 is not a letter! - asSubject.OnNext("1"); + evil.OnNext("1"); } else { @@ -511,13 +491,10 @@ C 1 ``` -The fix to this problem is quite simple. By applying the `AsObservable` extension method, the `_letters` field will be wrapped in a type that only implements `IObservable`. +Arguably, code that does this sort of thing is asking for trouble, but if we wanted actively to prevent it, the fix to this problem is quite simple. By applying the `AsObservable` extension method, we can modify the line of the constructor that sets `this.Letters` to wrap the subject in a type that only implements `IObservable`. ```csharp -public IObservable GetLetters() -{ - return _letters.AsObservable(); -} +this.Letters = letters.AsObservable(); ``` Output: @@ -529,4 +506,6 @@ C could not sabotage ``` -While I have used words like 'evil' and 'sabotage' in these examples, it is more often than not an oversight rather than malicious intent that causes problems. The failing falls first on the programmer who designed the leaky class. Designing interfaces is hard, but we should do our best to help consumers of our code fall into [the pit of success](http://blogs.msdn.com/b/brada/archive/2003/10/02/50420.aspx) by giving them discoverable and consistent types. Types become more discoverable if we reduce their surface area to expose only the features we intend our consumers to use. In this example we reduced the type's surface area. We did so by removing the property setter and returning a simpler type via the `AsObservable` method. +While I have used words like 'evil' and 'sabotage' in these examples, it is more often than not an oversight rather than malicious intent that causes problems. The failing falls first on the programmer who designed the leaky class. Designing interfaces is hard, but we should do our best to help consumers of our code fall into [the pit of success](https://learn.microsoft.com/en-gb/archive/blogs/brada/the-pit-of-success) by giving them discoverable and consistent types. Types become more discoverable if we reduce their surface area to expose only the features we intend our consumers to use. In this example we reduced the type's surface area. We did so by choosing a suitable public-facing type for the property, and then preventing access to the underlying type with the `AsObservable` method. + +The set of methods we have looked at in this chapter complete the circle started in the [Creating Sequences chapter](03_CreatingObservableSequences.md). We now have the means to enter and leave Rx's world. Take care when opting in and out of the `IObservable`. It's best not to transition back and forth—having a bit of Rx-based processing, then some more conventional code, and then plumbing the results of that back into Rx can quickly make a mess of your code base, and may indicate a design flaw. Typically it is better to keep all of your Rx logic together, so you only need to integrating with the outside world twice: once for input and once for output. From caf1df56eb14b9753a160ea66b2fa0d6946aecf7 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Mon, 13 Nov 2023 18:12:46 +0000 Subject: [PATCH 082/142] Ch14 completed read through --- content/14_ErrorHandlingOperators.md | 173 ++++++--------------------- 1 file changed, 38 insertions(+), 135 deletions(-) diff --git a/content/14_ErrorHandlingOperators.md b/content/14_ErrorHandlingOperators.md index b969b6a..bc3f818 100644 --- a/content/14_ErrorHandlingOperators.md +++ b/content/14_ErrorHandlingOperators.md @@ -2,128 +2,70 @@ title: Error Handling Operators --- -Exceptions happen. Some exceptions are inherently avoidable, occurring only because of bugs in our code. For example, we shouldn't normally put the CLR into a situation where it has to raise a `DivideByZeroException`. But there are plenty of exceptions that cannot be prevented with defensive coding. For example, exceptions relating to I/O or networking failures such as like `FileNotFoundException` or `TimeoutException` can be caused by environmental factors outside of our code's control. In these cases, we need to handle the exception gracefully. The kind of handling will depend on the context—it might be appropriate to provide some sort of error message to the user; in some scenarios logging the error might be a more appropriate response. If the failure is likely to be transient, we could try to recover by retrying the operation that failed. +Exceptions happen. Some exceptions are inherently avoidable, occurring only because of bugs in our code. For example, if we put the CLR into a situation where it has to raise a `DivideByZeroException`, we've done something wrong. But there are plenty of exceptions that cannot be prevented with defensive coding. For example, exceptions relating to I/O or networking failures such as like `FileNotFoundException` or `TimeoutException` can be caused by environmental factors outside of our code's control. In these cases, we need to handle the exception gracefully. The kind of handling will depend on the context—it might be appropriate to provide some sort of error message to the user; in some scenarios logging the error might be a more appropriate response. If the failure is likely to be transient, we could try to recover by retrying the operation that failed. The `IObserver` interface defines the `OnError` method so that a source can report an error, but since this terminates the sequence, it provides no direct means of working out what to do next. However, Rx provides operators that provide a variety of error handling mechanisms. ## Catch -Rx defines a `Catch` operator. The name is deliberately reminiscent of C#'s `try`/`catch` syntax because it lets you handle errors from an Rx source in a similar way to exceptions that emerge from normal execution of code. It gives you the option of swallowing an exception, wrapping it in another exception or performing some other logic. +Rx defines a `Catch` operator. The name is deliberately reminiscent of C#'s `try`/`catch` syntax because it lets you handle errors from an Rx source in a similar way to exceptions that emerge from normal execution of code. It can work in two different ways. You can just supply a function to which Rx will pass the error, and this function can return an `IObservable`, and `Catch` will now forward items from that instead of the original source. Or, instead of passing a function, you can just supply one or more additional sequences, and catch will move onto the next each time the current one fails. -### Swallowing exceptions - -The most basic (although rarely the best) way to handle an exception is to swallow it. In C#, we could write a `try` block with an empty `catch` block. We can achieve something similar with Rx's `Catch` operator. The basic idea with swallowing exceptions is that the process that caused the exception stops, but we act as though nothing had happened—we handle it in the same way as it the process had naturally reached an end. We can represent an exception being swallowed like this with a marble diagram. - -``` -S1--1--2--3--X -S2 -| -R --1--2--3----| -``` +### Examining the exception -Here `S1` represents the first sequence that ends with an error (`X`). If we're swallowing the exception, we want to make it look like the sequence just came to a normal halt. So `S2` here is an empty sequence we will substitute when the first throws an exception. `R` is the result sequence which starts as `S1`, then continues with `S2` when `S1` fails. This code creates the scenario described in that marble diagram: +`Catch` has an overload that enables you provide a handler to be invoked if the source produces an error: ```cs -var source = new Subject(); -IObservable result = source.Catch(Observable.Empty()); - -result.Dump("Catch");); - -source.OnNext(1); -source.OnNext(2); -source.OnNext(3); -source.OnError(new Exception("Fail!")); -``` - -Output: - -``` -Catch-->1 -Catch-->2 -Catch-->3 -Catch completed +public static IObservable Catch( + this IObservable source, + Func> handler) + where TException : Exception ``` -This is conceptually similar to the following code: +This is conceptually very similar to a C# `catch` block: we can write code that looks at the exception and then decides how to proceed. And as with a `catch` block we can decide which kinds of exceptions we are interested in. For example, we might know that the source will sometimes produce a `TimeoutException`, and we might just want to return an empty sequence in that case, instead of an error: ```cs -try -{ - DoSomeWork(); -} -catch -{ -} +IObservable result = source.Catch(_ => Observable.Empty()); ``` -This kind of catch-and-ignore everything handling is generally discouraged in C#, and you probably also want to limit your use of its equivalent in Rx. - -### Swallowing only specific exception types +`Catch` will only invoke our function if the exception is of the type specified (or a type derived from that). If the sequence was to terminate with an `Exception` that could not be cast to a `TimeoutException`, then the error would not be caught and would flow through to the subscriber. -It's much more common to want to handle a specific exception like this: +This example returns `Observable.Empty()`. This is conceptually similar to 'swallowing' an exception in C#, i.e., choosing to take no action. This can be a reasonable response to an exception that you anticipate, but it is generally a bad idea to do this with the base `Exception` type. -```csharp -try -{ - // -} -catch (TimeoutException tx) -{ - // -} -``` -`Catch` has an overload that enables you specify the type of exception: +This last example ignored its input, because it was interested only in the exception type. However, we are free to examine the exception, and make more fine-grained decisions about what should emerge from the `Catch`: ```cs -public static IObservable Catch( - this IObservable source, - Func> handler) - where TException : Exception +IObservable result = source.Catch( + (FileNotFoundException x) => x.FileName == "settings.txt" + ? Observable.Return(DefaultSettings) : Observable.Throw(x)); ``` -This enables us to write the Rx equivalent to the more selective `catch`, where we only swallow a `TimeoutException`: +This provides special handling for one particular file, but otherwise rethrows the exception. Returning `Observable.Throw(x)` here (where `x` is the original exception) is conceptually similar to writing `throw` in a catch block. (In C# there's an important distinction between `throw;` and `throw x;` because it changes how exception context is captured, but in Rx, `OnError` doesn't capture a stack trace, so there's no equivalent distinction.) -```cs -IObservable result = source.Catch(_ => Observable.Empty()); -``` +You're also free to throw a completely different exception, of course. You can return any `IObservable` you like, as long as its element type is the same as the source's. -If the sequence was to terminate with an `Exception` that could not be cast to a `TimeoutException`, then the error would not be caught and would flow through to the subscriber. -### Examining the exception +### Fallback -Notice that with the overload in the preceding example, we supplied a callback. If an exception of the specified type emerges, this overload of `Catch` will pass it to our callback so that if necessary, we can decide exactly what to return based on information in the exception. If you were to decide that, having inspected the exception, you don't want to swallow it after all, you can use `Observable.Throw` to return an observable that rethrows the exception. (This is effectively the Rx equivalent to a `throw;` statement inside a C# `catch` block.) The following example uses this to swallow all IO exceptions of type IOException or any type derived from that except for `FileNotFoundException`. +The other overloads of `Catch` offer less discriminating behaviour: you can supply one or more additional sequences, and any time the current source fails, the exception will be ignored, and `Catch` will simply move onto the next sequence. Since you will never get to know what the exception is, this mechanism gives you no way of knowing whether the exception that occurred was one you anticipated, or a completely unexpected one, so you will normally want to avoid this form. But for completeness, here's how to use it: ```cs -IObservable result = source.Catch( - x => x is FileNotFoundException ? Observable.Throw(tx) : Observable.Empty()); +IObservable settings = settingsSource1.Catch(settingsSource2); ``` -### Replacing an exception - -So far all the examples using `Catch` have either swallowed the exception by returning `Observable.Empty` or rethrown it with `Observable.Throw`. We can supply any observable we want to `Catch` (as long as its item type matches the source item type). We could use this to replace an exception with, say, a message: +That form provides just a single fallback. There's also a static `Observable.Catch` method that takes a `params` array, so you can pass any number of sources. This is exactly equivalent to the preceding example: ```cs -IObservable messages = stringSource.Catch( - x => Observable.Return( - x is FileNotFoundException fnf - ? $"Did not find {fnf.FileName}" - : $"Was not expecting exception {tx.GetType().Name}")); +IObservable settings = Observable.Catch(settingsSource1, settingsSource2); ``` -Alternatively, we could handle certain source exceptions by throwing a new exception, with the original one as an inner exception: +There's also an overload that accepts an `IEnumerable>`. -```cs -IObservable result = source.Catch( - x => Observable.Throw( - x is FileNotFoundException fnf - ? new InvalidOperationException("Config not available", fnf) - : x)); -``` +If any of the sources reaches its end without reporting an exception, `Catch` also immediately reports completion and does not subscribe to any of the subsequent sources. If the very last source reports an exception, `Catch` will have no further sources to fall back on, so in that case it won't catch the exception—it will forward that final exception to its subscriber. -No matter what your `Catch` does, remember that you'll see no new items from the source after it produces an error. The basic rules of Rx mean that once a source has called `OnError` on its subscriber, it must not make any further calls. ## Finally -Similar to a `finally` block in C#, Rx enables us to execute some code on completion of a sequence, regardless of whether it runs to completion naturally or fails. The `Finally` extension method accepts an `Action` as a parameter. This `Action` will be invoked when the sequence terminates, regardless of whether `OnCompleted` or `OnError` was called. It will also invoke the action if the subscription is disposed of before it completes. +Similar to a `finally` block in C#, Rx enables us to execute some code on completion of a sequence, regardless of whether it runs to completion naturally or fails. Rx adds a third mode of completion that has no exact equivalent in `catch`/`finally`: the subscriber might unsubscribe before the source has a chance to complete. (This is conceptually similar to using `break` to terminate a `foreach` early.) The `Finally` extension method accepts an `Action` as a parameter. This `Action` will be invoked when the sequence terminates, regardless of whether `OnCompleted` or `OnError` was called. It will also invoke the action if the subscription is disposed of before it completes. ```csharp public static IObservable Finally( @@ -138,7 +80,7 @@ In this example, we have a sequence that completes. We provide an action and see ```csharp var source = new Subject(); -var result = source.Finally(() => Console.WriteLine("Finally action ran")); +IObservable result = source.Finally(() => Console.WriteLine("Finally action ran")); result.Dump("Finally"); source.OnNext(1); source.OnNext(2); @@ -156,7 +98,7 @@ Finally completed Finally action ran ``` -In contrast, the source sequence could have terminated with an exception. In that case, the exception would have been sent to the console, and then the delegate we provided would have been executed. +The source sequence could also have terminated with an exception. In that case, the exception would have been sent to the subscriber's `OnError` (and we'd have seen that in the console output), and then the delegate we provided to `Finally` would have been executed. Alternatively, we could have disposed of our subscription. In the next example, we see that the `Finally` action is invoked even though the sequence does not complete. @@ -205,7 +147,7 @@ This is mostly just a curiosity: application frameworks such as ASP.NET Core or ## Using -The `Using` factory method allows you to bind the lifetime of a resource to the lifetime of an observable sequence. The signature itself takes two callbacks; one to create the disposable resource and one to provide the sequence. This allows everything to be lazily evaluated—these callbacks are invoked when code calls `Subscribe` on the `IObservable` this method returns. +The `Using` factory method allows you to bind the lifetime of a resource to the lifetime of an observable sequence. The method takes two callbacks: one to create the disposable resource and one to provide the sequence. This allows everything to be lazily evaluated—these callbacks are invoked when code calls `Subscribe` on the `IObservable` that this method returns. ```csharp public static IObservable Using( @@ -221,50 +163,15 @@ The resource will be disposed of when the sequence terminates either with `OnCom ## OnErrorResumeNext -Just the title of this section will send a shudder down the spines of old VB developers! (For those not familiar with this murky language feature, the VB language lets you instruct it to ignore any errors that occur during execution, and to just continue with the next statement after any failure.) In Rx, there is an extension method called `OnErrorResumeNext` that has similar semantics to the VB keywords/statement that share the same name. This extension method allows the continuation of a sequence with another sequence regardless of whether the first sequence completes gracefully or due to an error. Under normal use, the two sequences would merge as below: +Just the title of this section will send a shudder down the spines of old VB developers! (For those not familiar with this murky language feature, the VB language lets you instruct it to ignore any errors that occur during execution, and to just continue with the next statement after any failure.) In Rx, there is an extension method called `OnErrorResumeNext` that has similar semantics to the VB keywords/statement that share the same name. This extension method allows the continuation of a sequence with another sequence regardless of whether the first sequence completes gracefully or due to an error. -``` -S1--0--0--| -S2 --0--| -R --0--0----0--| -``` - -In the event of a failure in the first sequence, then the sequences would still merge: - -``` -S1--0--0--X -S2 --0--| -R --0--0----0--| -``` +This is very similar to the second form of `Catch` (as described in [Fallback](#fallback)). The difference is that with `Catch`, if any source sequence reaches its end without reporting an error, `Catch` will not move onto the next sequence. `OnErrorResumeNext` will forward all elements produced by all of its inputs, so it is similar to [`Concat`](09_CombiningSequences.md#concat), it just ignores all errors. -The overloads to `OnErrorResumeNext` are as follows: - -```csharp -public static IObservable OnErrorResumeNext( - this IObservable first, - IObservable second) -{ - .. -} - -public static IObservable OnErrorResumeNext( - params IObservable[] sources) -{ - ... -} - -public static IObservable OnErrorResumeNext( - this IEnumerable> sources) -{ - ... -} -``` - -It is simple to use; you can pass in as many continuations sequences as you like using the various overloads. Usage should be limited however. Just as the `OnErrorResumeNext` keyword warranted mindful use in VB, so should it be used with caution in Rx. It will swallow exceptions quietly and can leave your program in an unknown state. Generally, this will make your code harder to maintain and debug. +Just as the `OnErrorResumeNext` keyword was best avoided for anything other than throwaway code in VB, so should it be used with caution in Rx. It will swallow exceptions quietly and can leave your program in an unknown state. Generally, this will make your code harder to maintain and debug. (The same applies for the fallback forms of `Catch`.) ## Retry -If you are expecting your sequence to encounter predictable failures, you might simply want to retry. For example, if you are running in a cloud environment, it's very common for operations to fail occasionally for no obvious reason. Cloud platforms often relocate services on a fairly regular basis for operational reasons, which means it's not unusual for operations to fail—you might make a request to a service just before the cloud provider decided to move that service to a different compute node—but for the exact same operation to succeed if you immediately retry it (because the retry request gets routed to the new node). Rx's `Retry` extension method offers the ability to retry on failure a specified number of times or until it succeeds. This works by resubscribing to the source if it reports an error. +If you are expecting your sequence to encounter predictable failures, you might simply want to retry. For example, if you are running in a cloud environment, it's very common for operations to fail occasionally for no obvious reason. Cloud platforms often relocate services on a fairly regular basis for operational reasons, which means it's not unusual for operations to fail—you might make a request to a service just before the cloud provider decided to move that service to a different compute node—but for the exact same operation to succeed if you immediately retry it (because the retried request gets routed to the new node). Rx's `Retry` extension method offers the ability to retry on failure a specified number of times or until it succeeds. This works by resubscribing to the source if it reports an error. This example uses the simple overload, which will always retry on any exception. @@ -296,16 +203,12 @@ Retry(2)-->2 Retry(2) failed-->Test Exception ``` -As a marble diagram, this would look like: - -``` -S--0--1--2--x - --0--1--2--x -R--0--1--2-----0--1--2--x -``` - Proper care should be taken when using the infinite repeat overload. Obviously if there is a persistent problem with your underlying sequence, you may find yourself stuck in an infinite loop. Also, take note that there is no overload that allows you to specify the type of exception to retry on. +Rx also offers a `RetryWhen` method. This is similar to the first `Catch` overload we looked at: instead of handling all exceptions indiscriminately, it lets you supply code that can decide what to do. It works slightly differently: instead of invoking this callback once per error, it invokes it once passing in an `IObservable` through which it will supply all of the exceptions, and the callback returns an `IObservable` referred to as the _signal_ observable. The `T` can be anything, because the values this observable may return will be ignored: all that matters is which of the three `IObserver` methods is invoked. + +If, when receiving an exception, the signal observable calls `OnError`, `RetryWhen` will not retry, and will report that same error to its subscribers. If on the other hand the signal observable calls `OnCompleted`, again `RetryWhen` will not retry, and will complete without reporting an error. But if the signal observable calls `OnNext`, this causes `RetryWhen` to retry by resubscribing to the source. + -Requirements for exception management that go beyond simple `OnError` handlers are commonplace. Rx delivers the basic exception handling operators which you can use to compose complex and robust queries. In this chapter we have covered advanced error handling and some more resource management features from Rx. We looked at the `Catch`, `Finally` and `Using` methods as well as the other methods like `OnErrorResumeNext` and `Retry`, that allow you to respond to error scenarios with something more constructive than just terminating. \ No newline at end of file +Applications often need exception management logic that goes beyond simple `OnError` handlers. Rx delivers exception handling operators similar to those we are used to in C#, which you can use to compose complex and robust queries. In this chapter we have covered advanced error handling and some more resource management features from Rx. \ No newline at end of file From 372bf088fd63f752ada9b8ec46d25d69fe4e2d86 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Tue, 14 Nov 2023 15:38:48 +0000 Subject: [PATCH 083/142] Ch15 update after read through --- content/15_PublishingOperators.md | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/content/15_PublishingOperators.md b/content/15_PublishingOperators.md index 06c4e41..a84d19f 100644 --- a/content/15_PublishingOperators.md +++ b/content/15_PublishingOperators.md @@ -10,7 +10,7 @@ Hot sources need to be able to deliver events to multiple subscribers. While we Rx offers three operators enabling us to support multiple subscribers using just a single subscription to some underlying source: [`Publish`](#publish), [`PublishLast`](#publishlast), and [`Replay`](#replay). All three of these are wrappers around Rx's `Multicast` operator, which provides the common mechanism at the heart of all of them. -`Multicast` turns any `IObservable` into a `IConnectableObservable` which, as you can see, just adds a `Connect` method: +`Multicast` turns any `IObservable` into an `IConnectableObservable` which, as you can see, just adds a `Connect` method: ```cs public interface IConnectableObservable : IObservable @@ -204,7 +204,7 @@ pticks.Subscribe(x => Console.WriteLine($"Sub1: {x} ({DateTime.Now})")); pticks.Subscribe(x => Console.WriteLine($"Sub2: {x} ({DateTime.Now})")); pticks.Connect(); -Thread.Sleep(1000); +Thread.Sleep(3000); Console.WriteLine(); Console.WriteLine("Adding more subscribers"); Console.WriteLine(); @@ -213,7 +213,19 @@ pticks.Subscribe(x => Console.WriteLine($"Sub3: {x} ({DateTime.Now})")); pticks.Subscribe(x => Console.WriteLine($"Sub4: {x} ({DateTime.Now})")); ``` -This creates a source the produces 4 values in the space of 0.4 seconds. It attaches a couple of subscribers to the `IConnectableObservable` returned by `PublishLast` and then immediately calls `Connect`. Then it sleeps for 1 second, which gives the source time to complete. This means that those first two subscribers will receive the one and only value they will ever receive (the last value in the sequence) before that call to `Thread.Sleep` returns. But we then go on to attach two more subscribers. As the output shows, these also receive that same final event. They receive it later because they subscribed later, but the `AsyncSubject` created by `PublishLast` is just replaying the final value it received to these late subscribers. +This creates a source that produces 4 values in the space of 0.4 seconds. It attaches a couple of subscribers to the `IConnectableObservable` returned by `PublishLast` and then immediately calls `Connect`. Then it sleeps for 1 second, which gives the source time to complete. This means that those first two subscribers will receive the one and only value they will ever receive (the last value in the sequence) before that call to `Thread.Sleep` returns. But we then go on to attach two more subscribers. As the output shows, these also receive that same final event: + +``` +Sub1: 3 (11/14/2023 9:15:46 AM) +Sub2: 3 (11/14/2023 9:15:46 AM) + +Adding more subscribers + +Sub3: 3 (11/14/2023 9:15:49 AM) +Sub4: 3 (11/14/2023 9:15:49 AM) +``` + +These last two subscribers receive the value later because they subscribed later, but the `AsyncSubject` created by `PublishLast` is just replaying the final value it received to these late subscribers. ### Replay @@ -241,7 +253,7 @@ pticks.Subscribe(x => Console.WriteLine($"Sub3: {x} ({DateTime.Now})")); pticks.Subscribe(x => Console.WriteLine($"Sub4: {x} ({DateTime.Now})")); ``` -It creates a source that will produce items regularly for 4 seconds. It attaches two subscribers before calling `Connect`. It then waits long enough for the first two events to emerge before attaching two more subscribers. But unlike with `Publish`, those late subscribers will see the events that happened before they subscribed: +This creates a source that will produce items regularly for 4 seconds. It attaches two subscribers before calling `Connect`. It then waits long enough for the first two events to emerge before attaching two more subscribers. But unlike with `Publish`, those late subscribers will see the events that happened before they subscribed: ``` Sub1: 0 (10/08/2023 16:18:22) From fefb707af59cab0c8d8f605ab3e222e91ab8c600 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Tue, 14 Nov 2023 16:21:43 +0000 Subject: [PATCH 084/142] Ch16 updates after read through --- content/16_TestingRx.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/content/16_TestingRx.md b/content/16_TestingRx.md index 3b927af..15a297f 100644 --- a/content/16_TestingRx.md +++ b/content/16_TestingRx.md @@ -4,17 +4,17 @@ title: Testing Rx # Testing Rx -Modern quality assurance standards demand a level of automated testing that can help evaluate and prevent bugs. It is good practice to have a suite of tests that verify correct behaviour and to run this as part of the build process to detect regressions early. +Modern quality assurance standards demand comprehensive automated testing that can help evaluate and prevent bugs. It is good practice to have a suite of tests that verify correct behaviour and to run this as part of the build process to detect regressions early. The `System.Reactive` source code includes a comprehensive tests suite. Testing Rx-based code presents some challenges, especially when time-sensitive operators are involved. Rx.NET's test suite includes many tests designed to exercise awkward edge cases to ensure predictable behaviour under load. This is only possible because Rx.NET was designed to be testable. -In this chapters, we'll show how you can take advantage of Rx's testability in your own code. +In this chapter, we'll show how you can take advantage of Rx's testability in your own code. ## Virtual Time It's common to deal with timing in Rx. As you've seen, it offers several operators that take time into account, and this presents a challenge. We don't want to introduce slow tests, because that can make test suites take too long to execute, but how might we test an application that waits for the user to stop typing for half a second before submitting a query? Non-deterministic tests can also be a problem: when there are race conditions it can be very hard to recreate these reliably. - The [Scheduling and Threading](./11_SchedulingAndThreading.md) chapter described how schedulers use a virtualized representation of time. This is critical for enabling tests to validate time-related behaviour. It enables us to control Rx's perception of the progression of time, enabling us to write tests that logically take seconds, but which execute in microseconds. +The [Scheduling and Threading](./11_SchedulingAndThreading.md) chapter described how schedulers use a virtualized representation of time. This is critical for enabling tests to validate time-related behaviour. It lets us control Rx's perception of the progression of time, enabling us to write tests that logically take seconds, but which execute in microseconds. Consider this example, where we create a sequence that publishes values every second for five seconds. @@ -38,7 +38,7 @@ never.Timeout(TimeSpan.FromMinutes(1)) Assert.IsTrue(exceptionThrown); ``` -It looks like we would have no choice but to make our test wait for a minute before running that assert. In practice, we'd want to wait a little over a minute, because if the computer running the test is busy, it might run the relevant code a bit later than we've asked. This kind of scenario is notorious for causing tests to fail occasionally even when there's no real problem in the code being tested. +It looks like we would have no choice but to make our test wait for a minute before running that assert. In practice, we'd want to wait a little over a minute, because if the computer running the test is busy, it might trigger the timeout bit later than we've asked. This kind of scenario is notorious for causing tests to fail occasionally even when there's no real problem in the code being tested. Nobody wants slow, inconsistent tests. So let's look at how Rx helps us to avoid these problems. @@ -118,7 +118,7 @@ Note that nothing happened when we advanced to 15 ticks. All work scheduled befo ### AdvanceBy -The `AdvanceBy(long)` method allows us to move the clock forward a relative amount of time. Again, the measurements are in ticks. We can take the last example and modify it to use `AdvanceBy(long)`. +The `AdvanceBy(long)` method allows us to move the clock forward by some amount of time. Unlike `AdvanceTo`, the argument here is relative to the current virtual time. Again, the measurements are in ticks. We can take the last example and modify it to use `AdvanceBy(long)`. ```csharp var scheduler = new TestScheduler(); @@ -153,7 +153,7 @@ C ### Start -The `TestScheduler`'s `Start()` method runs everything that has been scheduled, gradually advancing virtual time as necessary if any of the work was queued for a specific time. We take the same example again and swap out the `AdvanceBy(long)` calls for a single `Start()` call. +The `TestScheduler`'s `Start()` method runs everything that has been scheduled, advancing virtual time as necessary for work items that were queued for a specific time. We take the same example again and swap out the `AdvanceBy(long)` calls for a single `Start()` call. ```csharp var scheduler = new TestScheduler(); @@ -582,7 +582,7 @@ public ITestableObserver Start(Func> create) } ``` -As you can see, these overloads just call through to the variant we have been looking at, but passing some default values. These default values provide short gaps before creation and between creation and subscription, giving enough space to configure other things to happen between them. And then the disposal happens a bit later, allowing a little longer for the thing to run. There's nothing particularly magical about these default values, but if you value a lack of clutter over it being completely obvious what happens when, and are happy to rely on the invisible effects of convention, then you might prefer this. The Rx source code itself contains thousands of tests, and a very large number of them use the simplest `Start` overload, and developers working in the code base day in, day out soon get used to the idea that creation occurs at time 100, and subscription at time 200, and that test everything you need to before 1000. +As you can see, these overloads just call through to the variant we have been looking at, but passing some default values. These default values provide short gaps before creation and between creation and subscription, giving enough space to configure other things to happen between them. And then the disposal happens a bit later, allowing a little longer for the thing to run. There's nothing particularly magical about these default values, but if you value a lack of clutter over it being completely obvious what happens when, and are happy to rely on the invisible effects of convention, then you might prefer this. The Rx source code itself contains thousands of tests, and a very large number of them use the simplest `Start` overload, and developers working in the code base day in, day out soon get used to the idea that creation occurs at time 100, and subscription at time 200, and that you test everything you need to before 1000. ### CreateColdObservable From 4b7a2d411f1e97b8886fd7caa2eb110a2ffe1928 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Tue, 14 Nov 2023 16:32:12 +0000 Subject: [PATCH 085/142] Appendix A update after read through --- content/A_IoStreams.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/A_IoStreams.md b/content/A_IoStreams.md index 6a4a2c7..a8377b8 100644 --- a/content/A_IoStreams.md +++ b/content/A_IoStreams.md @@ -6,11 +6,11 @@ The abstraction that `System.IO.Stream` represents was designed as a way for an IO streams were designed to support efficient delivery of fairly high volumes of byte data, often with devices that inherently work with data in big chunks. In the main scenarios for which they were designed, read and write operations would involve calls into operating system APIs, which are typically relatively expensive, so the basic read and write operations expect to work with arrays of bytes. (If you make one system call to deliver thousands of bytes, the overhead of that single call is far lower than if you work one byte at a time.) While that's good for efficiency, it can be inconvenient for developers (and irksome if you were hoping to use streams purely to represent in-process event streams that don't actually need to make system calls, and therefore don't get to enjoy the upside of this performance/convenience trade off). -There is a standard band-aid kind of a fix for this: libraries that present streams to application code often don't represent the underlying OS stream directly. Instead, they are often _buffered_, meaning that the library will perform reads fairly large chunks, and hold recently-fetched bytes in memory until the application code asks for them. This can enable methods like .NET's single-byte [`Stream.ReadByte`](https://learn.microsoft.com/en-us/dotnet/api/system.io.stream.readbyte) method to work reasonably efficiently: several thousand calls to that might correspond to only one call to the operating system API that provides access to whatever physical device the stream represents. Likewise, if you're sending data into an IO stream, a buffered stream will wait until you've supplied some minimum quantity of data (4096 bytes is a common default with certain .NET `Stream`s) before it actually sends any data to its destination. +There is a standard band-aid kind of a fix for this: libraries that present streams to application code often don't represent the underlying OS stream directly. Instead, they are often _buffered_, meaning that the library will perform reads fairly large chunks, and hold recently-fetched bytes in memory until the application code asks for them. This can enable methods like .NET's single-byte [`Stream.ReadByte`](https://learn.microsoft.com/en-us/dotnet/api/system.io.stream.readbyte) method to work reasonably efficiently: several thousand calls to that method might cause only one call to the operating system API that provides access to whatever physical device the stream represents. Likewise, if you're sending data into an IO stream, a buffered stream will wait until you've supplied some minimum quantity of data (4096 bytes is a common default with certain .NET `Stream`s) before it actually sends any data to its destination. But this could be a serious problem for the kinds of event sources we represent in Rx. If an IO stream deliberately insulates you from the real movement of data, that could introduce delays that might be disastrous in a financial application where delays in delivery and receipt of information can have enormous financial consequences. And even if there aren't direct financial implications, this kind of buffering would be unhelpful in representing events in a user interface—nobody wants to have to click a button several thousand times before the application starts to act on that input. -There's also the problem that you don't always know which kind of stream you've been given. If you know for a fact that you've got an unbuffered stream representing a file on disk (because you created that stream yourself) you'd typically right quite different code than you would if you knew you had a buffered stream. But if you've written a method that takes a `Stream` argument, it's not clear what you've got, so you don't necessarily know which coding strategy is best. +There's also the problem that you don't always know which kind of stream you've been given. If you know for a fact that you've got an unbuffered stream representing a file on disk (because you created that stream yourself) you'd typically write quite different code than you would if you knew you had a buffered stream. But if you've written a method that takes a `Stream` argument, it's not clear what you've got, so you don't necessarily know which coding strategy is best. Another problem is that because they are byte-oriented, there's no such thing as a `System.IO.Stream` that produces more complex values. If you want a stream of `int` values (which isn't a _much_ more complex idea than a stream of _byte_ values) `System.IO.Stream` does nothing to help you, and until very recently it might even hinder you. If you use the normal `Read` or `ReadAsync` methods, you can try reading four bytes at a time but a `System.IO.Stream` is at liberty to decide that it's only going to return three. (The reason streams are allowed to be petty in this way is that the original design presumes that a stream represents some underlying device that might inherently work with fixed size units of data. Disk drives and SSDs are incapable of reading or writing individual bytes; instead, each operation works with some whole number of 'sectors' each of which are hundreds or thousands of bytes long. So a read operation might simply be unable to give you exactly as many bytes as you asked for. This can also come into play for a stream that represents data coming in over the network: such streams might already have received some data, but less than you've asked for, and they might decide to return what they've already got instead of making you wait until the next network message arrives.) It's now the consuming code's problem to work out how to deal with that. .NET 7.0 finally fixed this problem (only about two decades after `Stream` first appeared) by adding the [`ReadExactly`](https://learn.microsoft.com/en-us/dotnet/api/system.io.stream.readexactly) and [`ReadExactlyAsync`](https://learn.microsoft.com/en-us/dotnet/api/system.io.stream.readexactlyasync) methods, but if you have to target .NET Framework, these methods are unavailable and you still have to solve this entirely yourself. From 93699c2e97069c70752fa3e9c1bd2b5cb3d939a9 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Tue, 14 Nov 2023 16:53:54 +0000 Subject: [PATCH 086/142] Appendix B update after read through --- content/B_Disposables.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/content/B_Disposables.md b/content/B_Disposables.md index 0fa0f1b..8478146 100644 --- a/content/B_Disposables.md +++ b/content/B_Disposables.md @@ -4,19 +4,19 @@ title : Appendix B Disposables # Appendix B: Disposables -Rx leverages the existing `IDisposable` interface for subscription management. This is an incredibly useful design decision, as users can work with a familiar type and reuse existing language features. Rx further extends its usage of the `IDisposable` type by providing several public implementations of the interface. These can be found in the `System.Reactive.Disposables` namespace. Here, we will briefly enumerate each of them. +Rx represents subscriptions using the existing `IDisposable` interface. This design choice means we can use existing language features that know how to work with this interface. Rx also provides several public implementations of `IDisposable`. These can be found in the `System.Reactive.Disposables` namespace. This appendix briefly describes each of them.

Disposable.Empty
- This static property exposes an implementation of IDisposable that performs no action when the Dispose method is invoked. This can be useful whenever you need to fulfil an interface requirement, like Observable.Create, but do not have any resource management that needs to take place.
+ This static property exposes an implementation of IDisposable that performs no action when the Dispose method is invoked. This can be useful when you are obliged to supply an `IDisposable` (which can happen if you use Observable.Create) but don't need to do anything upon disposal.
Disposable.Create(Action)
- This static method exposes an implementation of IDisposable that performs the action provided when the Dispose method is invoked. As the implementation follows the guidance to be idempotent, the action will only be called on the first time the Dispose method is invoked.
+ This static method exposes an implementation of IDisposable that invokes the method supplied when the Dispose method is invoked. As the implementation follows the guidance to be idempotent, the action will only be called on the first time the Dispose method is invoked.
BooleanDisposable
- This class simply has the Dispose method and a read-only property IsDisposed. IsDisposed is false when the class is constructed, and is set to true when the Dispose method is invoked. + This class implements IDisposable.Dispose method and also defines a read-only property IsDisposed. IsDisposed is false when the class is constructed, and is set to true when the Dispose method is invoked.
CancellationDisposable
@@ -24,7 +24,7 @@ Rx leverages the existing `IDisposable` interface for subscription management. T
CompositeDisposable
- The CompositeDisposable type allows you to treat many disposable resources as one. Common usage is to create an instance of CompositeDisposable by passing in a params array of disposable resources. Calling Dispose on the CompositeDisposable will call dispose on each of these resources in the order they were provided. Additionally, the CompositeDisposable class implements ICollection<IDisposable>; this allows you to add and remove resources from the collection. After the CompositeDisposable has been disposed of, any further resources that are added to this collection will be disposed of instantly. Any item that is removed from the collection is also disposed of, regardless of whether the collection itself has been disposed of. This includes usage of both the Remove and Clear methods. + The CompositeDisposable type allows you to treat many disposable resources as one. You can create an instance of CompositeDisposable by passing in a params array of disposable resources. Calling Dispose on the CompositeDisposable will call dispose on each of these resources in the order they were provided. Additionally, the CompositeDisposable class implements ICollection<IDisposable>; this allows you to add and remove resources from the collection. After the CompositeDisposable has been disposed of, any further resources that are added to this collection will be disposed of instantly. Any item that is removed from the collection is also disposed of, regardless of whether the collection itself has been disposed of. This includes usage of both the Remove and Clear methods.
ContextDisposable
@@ -40,7 +40,7 @@ Rx leverages the existing `IDisposable` interface for subscription management. T
ScheduledDisposable
- In a similar fashion to ContextDisposable, the ScheduledDisposable type allows you to specify a scheduler, onto which the underlying resource will be disposed. You need to pass both the instance of IScheduler and instance of IDisposable to the constructor. When the ScheduledDisposable instance is disposed of, the disposal of the underlying resource will be scheduled onto the provided scheduler. + In a similar fashion to ContextDisposable, the ScheduledDisposable type allows you to specify a scheduler, onto which the underlying resource will be disposed. You need to pass both the instance of IScheduler and instance of IDisposable to the constructor. When the ScheduledDisposable instance is disposed of, the disposal of the underlying resource will be executed through the provided scheduler.
SerialDisposable
@@ -53,7 +53,7 @@ Rx leverages the existing `IDisposable` interface for subscription management. T
- - - - - \ No newline at end of file From 2abc001fcabd93893ea30d97af13fe0197f02b16 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Thu, 16 Nov 2023 11:21:19 +0000 Subject: [PATCH 089/142] Add missing space in heading --- content/00_Foreword.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/00_Foreword.md b/content/00_Foreword.md index 6db9bc4..7abe491 100644 --- a/content/00_Foreword.md +++ b/content/00_Foreword.md @@ -66,7 +66,7 @@ help you be familiar with Rx, but to fully understand it you should build things with it. So we warmly encourage you to build based on the examples in this book. -#Acknowledgements {#Acknowledgements} +# Acknowledgements {#Acknowledgements} Firstly, I (Ian Griffiths) should make it clear that this revised edition builds on the excellent work of the original author Lee Campbell. I am grateful that he From 2fb73f04038ff237177e0de31d7f9219715eb993 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Fri, 17 Nov 2023 17:04:26 +0000 Subject: [PATCH 090/142] Appendix D partial read --- content/D_AlgebraicUnderpinnings.md | 56 +++++++++++++++-------------- 1 file changed, 29 insertions(+), 27 deletions(-) diff --git a/content/D_AlgebraicUnderpinnings.md b/content/D_AlgebraicUnderpinnings.md index 8ddf3fe..d3625bf 100644 --- a/content/D_AlgebraicUnderpinnings.md +++ b/content/D_AlgebraicUnderpinnings.md @@ -4,11 +4,11 @@ title : Appendix D Rx's Algebraic Underpinnings # Appendix D: Rx's Algebraic Underpinnings -Rx operators can be combined together in more or less any way you can imagine, and they generally just work. The fact that this works is not merely a happy accident. In general, integration between software components is often one of the largest sources of pain in software development, so the fact that it works so well is remarkable. This is in large part thanks to the fact that Rx relies on some underlying theory. Rx has been designed so that you don't need to know these details to use it, but curious developers typically want to know these things. +Rx operators can be combined together in more or less any way you can imagine, and they generally combine without any problems. The fact that this works is not merely a happy accident. In general, integration between software components is often one of the largest sources of pain in software development, so the fact that it works so well is remarkable. This is in large part thanks to the fact that Rx relies on some underlying theory. Rx has been designed so that you don't need to know these details to use it, but curious developers typically want to know these things. -The earlier sections of the book have already talked about one formal aspect of Rx: the contract between observable sources and their observables. There is a clearly defined grammar for what constitutes acceptable use of `IObservable`. This goes beyond what the .NET type system is able to enforce, so we are reliant on code doing the right thing. However, the `System.Reactive` library does always adhere to this contract, and it also has some guard types in place that detect when application code has not quite played by the rules, and to prevent this from wreaking havoc. +The earlier sections of the book have already talked about one formal aspect of Rx: the contract between observable sources and their observables. There is a clearly defined grammar for what constitutes acceptable use of `IObserver`. This goes beyond what the .NET type system is able to enforce, so we are reliant on code doing the right thing. However, the `System.Reactive` library does always adhere to this contract, and it also has some guard types in place that detect when application code has not quite played by the rules, and to prevent this from wreaking havoc. -The `IObservable` grammar is important. Components rely on it to ensure correct operation. Consider the `Where` operator, for example. It provides its own `IObserver` interface with which it subscribes to the underlying source, and this receives items from that source, and then decides which to forward to the observer that subscribed to the `IObservable` presented by `Where`. You could imagine it looking something like this: +The `IObserver` grammar is important. Components rely on it to ensure correct operation. Consider the `Where` operator, for example. It provides its own `IObserver` implementation with which it subscribes to the underlying source. This receives items from that source, and then decides which to forward to the observer that subscribed to the `IObservable` presented by `Where`. You could imagine it looking something like this: ```cs @@ -17,7 +17,8 @@ public class OverSimplifiedWhereObserver : IObserver private IObserver downstreamSubscriber; private readonly Func predicate; - public OverSimplifiedWhereObserver(IObserver downstreamSubscriber, Func predicate) + public OverSimplifiedWhereObserver( + IObserver downstreamSubscriber, Func predicate) { this.downstreamSubscriber = downstreamSubscriber; this.predicate = predicate; @@ -43,9 +44,9 @@ public class OverSimplifiedWhereObserver : IObserver } ``` -This does not take any explicit steps to follow the `IObserver` grammar. But it doesn't need to if the source to which it is subscriber obeys those rules. Since this only ever calls its subscriber's `OnNext` in its own `OnNext`, and likewise for `OnCompleted` and `OnError`, then as long as the underlying source to which this operator is subscribed obeys the rules for how to call those three methods, this class will in turn also follow those rules automatically. +This does not take any explicit steps to follow the `IObserver` grammar. It doesn't need to if the source to which it is subscribes also obeys those rules. Since this only ever calls its subscriber's `OnNext` in its own `OnNext`, and likewise for `OnCompleted` and `OnError`, then as long as the underlying source to which this operator is subscribed obeys the rules for how to call those three methods, this class will in turn also follow those rules automatically. -In fact, `System.Reactive` is not quite that trusting. It does have some code that detects certain violations of the grammar, but even these measure just ensure that the grammar is adhered to once execution enters Rx. There are some checks at the boundaries of the system, but Rx's innards rely heavily on the fact that upstream sources will abide by the rules. +In fact, `System.Reactive` is not quite that trusting. It does have some code that detects certain violations of the grammar, but even these measures just ensure that the grammar is adhered to once execution enters Rx. There are some checks at the boundaries of the system, but Rx's innards rely heavily on the fact that upstream sources will abide by the rules. However, the grammar for `IObservable` is not the only place where Rx relies on formalism to ensure correct operation. It also depends on a particular set of mathematical concepts: @@ -55,7 +56,7 @@ However, the grammar for `IObservable` is not the only place where Rx relies Standard LINQ operators can be expressed purely in terms of these three ideas. -These concepts come out of a branch of mathematics called [category theory](https://en.wikipedia.org/wiki/Category_theory), a pretty abstract branch of mathematics concerned with mathematical structures. In the late 1980s, a few computer scientists were exploring this area of maths with a view to using them to model the behaviour of programs. [Eugenio Moggi](https://en.wikipedia.org/wiki/Eugenio_Moggi) (an Italian computer scientist who was, at the time, working at the University of Edinburgh) is generally credited for realising that monads in particular are well suited to describing computations, as his 1991 paper, [Notions of computations and monads](https://person.dibris.unige.it/moggi-eugenio/ftp/ic91.pdf) explains. These theoretical ideas and were incorporated into the Haskell programming language, primarily by Philip Wadler and Simon Peyton Jones, who published a proposal for [monadic handling of IO](https://www.microsoft.com/en-us/research/wp-content/uploads/1993/01/imperative.pdf) in 1992, which, by 1996, had been fully incorporated into Haskell in its v1.3 release to enable programs' handling of input and output (e.g., handling user input, or writing data to files) to to work in a way that was underpinned by strong mathematical foundations. This has widely been recognized as a significant improvement on Haskell's earlier attempts to model the messy realities of IO in a purely functional language. +These concepts come from [category theory](https://en.wikipedia.org/wiki/Category_theory), a pretty abstract branch of mathematics concerned with mathematical structures. In the late 1980s, a few computer scientists were exploring this area of maths with a view to using them to model the behaviour of programs. [Eugenio Moggi](https://en.wikipedia.org/wiki/Eugenio_Moggi) (an Italian computer scientist who was, at the time, working at the University of Edinburgh) is generally credited for realising that monads in particular are well suited to describing computations, as his 1991 paper, [Notions of computations and monads](https://person.dibris.unige.it/moggi-eugenio/ftp/ic91.pdf) explains. These theoretical ideas and were incorporated into the Haskell programming language, primarily by Philip Wadler and Simon Peyton Jones, who published a proposal for [monadic handling of IO](https://www.microsoft.com/en-us/research/wp-content/uploads/1993/01/imperative.pdf) in 1992. By 1996, this had been fully incorporated into Haskell in its v1.3 release to enable programs' handling of input and output (e.g., handling user input, or writing data to files) to work in a way that was underpinned by strong mathematical foundations. This has widely been recognized as a significant improvement on Haskell's earlier attempts to model the messy realities of IO in a purely functional language. Why does any of this matter? These mathematical foundations are exactly why LINQ operators can be freely composed. @@ -81,12 +82,12 @@ There doesn't technically need to be an actual function. The monadic laws are sa Monads are required to provide just one other operation. The mathematical literature calls it _bind_, some programming systems call it `flatMap`, and LINQ refers to it as `SelectMany`. This is the one that tends to cause the most head scratching, because although it has a clear formal definition, it's harder to say what it really does than with _return_. However, we're looking at monads through their ability to represent containers, and this offers a fairly straightforward way to understand bind/`SelectMany`: it lets us take a container where every item is a nested container (e.g., an array of arrays, or an `IEnumerable>`) and flatten it out. For example, a list of lists would become one list, containing every item from every list. As we'll soon see, this is not obviously related to the formal mathematical definition of bind, which is altogether more abstract, but it is compatible with it, which is all that's needed for us to enjoy the fruits of the mathematicians' labours. -Critically, to qualify as a monad, the two operations just described (return and bind) must conform to certain rules, or _laws_ as they are often described in the literature. There are three laws, and all of them govern how the bind operation works, and two of these are concerned with how return and bind interact with one another. These laws are the foundation of the composability of operations based on monads. The laws are somewhat abstract, so it isn't exactly obvious _why_ they enable this, but they are non-negotiable. If your type and operations don't follow these laws, then you don't have a monad, so you can't rely on the characteristics monads guarantee. +Critically, to qualify as a monad, the two operations just described (return and bind) must conform to certain rules, or _laws_ as they are often described in the literature. There are three laws. All of them govern how the bind operation works, and two of these are concerned with how return and bind interact with one another. These laws are the foundation of the composability of operations based on monads. The laws are somewhat abstract, so it isn't exactly obvious _why_ they enable this, but they are non-negotiable. If your type and operations don't follow these laws, then you don't have a monad, so you can't rely on the characteristics monads guarantee. So what does bind actually look like? Here's how it looks for `IEnumerable`: ```cs -public static IEnumerable SelectMany ( +public static IEnumerable SelectMany ( this IEnumerable source, Func> selector); ``` @@ -95,13 +96,13 @@ So it is a function that takes two inputs. The first is an `IEnumerable But we've now got a little too specific. Even if we're looking specifically at LINQ's use of monads to represent generalised containers, `SelectMany` doesn't necessarily entail concatenation. It merely requires that the container returned by `SelectMany` contains all of the items produced by the function. Concatenation is one strategy, but Rx does something different. Since observables tend to produce values as and when they want to, the `IObservable` returned by `Observable.SelectMany` just produces a value each time any of the individual per-`TSource` `IObservable`s produced by the function produces a value. (It performs some synchronization to ensure that it follows Rx's rules for calls into `IObserver`, so if one of these observables produces a value while a call to the subscriber's `OnNext` is in progress, it will wait for that to return before pushing the next value. But other than that, it just pushes all values straight through.) So the source values are essentially interleaved here, instead of being concatenated. But the broader principle—that the result is a container with every value produced by the callback for the individual inputs—applies. -The mathematical definition of a monadic bind has the same essential shape, it just doesn't dictate a particular behaviour. So any monad will have a bind operation that takes two inputs: an instance of the monadic type constructed for some input value type (`TSource`), and a function that takes a `TSource` as its input and produces an instance of the monadic type constructed for some output value type (`TResult`). When you invoke bind with these two inputs the result is an instance of the monadic type constructed for the output value type. We can't precisely represent this in C#'s type system, but this sort of gives the broad flavour: +The mathematical definition of a monadic bind has the same essential shape, it just doesn't dictate a particular behaviour. So any monad will have a bind operation that takes two inputs: an instance of the monadic type constructed for some input value type (`TSource`), and a function that takes a `TSource` as its input and produces an instance of the monadic type constructed for some output value type (`TResult`). When you invoke bind with these two inputs the result is an instance of the monadic type constructed for the output value type. We can't precisely represent this general idea in C#'s type system, but this sort of gives the broad flavour: ```cs // An impressionistic sketch of the general form of a monadic bind -public static M SelectMany ( +public static M SelectMany ( this M source, - Func> selector); + Func> selector); ``` Substitute your chosen monadic type (`IObservable`, `IEnumerable`, `IQueryable`, or whatever) for `M`, and that tells you what bind should look like for that particular type. @@ -136,10 +137,9 @@ It would be odd if `SelectMany` did anything else. If `o1` were different in som * `o1` would contain items that aren't in `o2` (meaning it had somehow included items _not_ produced by `SomeFunc`) * `o2` would contain items that aren't in `o1` (meaning that `SelectMany` had omitted some of the items produced by `SomeFunc`) -* `o1` and `o2` contain the same items but are in some detectable sense specific to the monad type in use different (e.g., the items came out in a different order) - -So this law essentially formalizes the idea that `SelectMany` shouldn't add or remove items, or fail to preserve characteristics that the monad in use would normally preserve such as ordering. +* `o1` and `o2` contain the same items but are different in some detectable sense specific to the monad type in use (e.g., the items came out in a different order) +So this law essentially formalizes the idea that `SelectMany` shouldn't add or remove items, or fail to preserve characteristics that the monad in use would normally preserve such as ordering. (Note that in .NET LINQ providers, this doesn't generally require these to be exactly the same objects. They normally won't be. It just means that they must represent exactly the same thing. For example, in this case `o1` and `o2` are both `IEnumerable`, so it means they should each produce exactly the same sequence of `bool` values.) #### Monadic law 2: `Return` is a 'left-identity' for `SelectMany` @@ -155,7 +155,7 @@ By using `Return` as the function for `SelectMany`, we are essentially asking to #### Monadic law 3: `SelectMany` should be, in effect, associative -Suppose we have two functions, `Tx1` and `Tx2`, each of form suitable for passing as the argument to `SelectMany`. There are two ways we could apply these: +Suppose we have two functions, `Tx1` and `Tx2`, each of a form suitable for passing as the argument to `SelectMany`. There are two ways we could apply these: ```cs // These two should be identical. @@ -163,7 +163,7 @@ IObservable o1 = source.SelectMany(x => Tx1(x).SelectMany(Tx2)); IObservable o2 = source.SelectMany(x => Tx1(x)).SelectMany(Tx2); ``` -The difference here is just a slight change in the placements of the parentheses: is the second call to `SelectMany` invoked inside the function passed to the first `SelectMany`, or is it invoked on the result of the first `SelectMany`. This code adjusts the layout, and also replaces the lambda `x => Tx1(x)` with the exactly equivalent `Tx1`, which might make the difference in structure a bit easier to see: +The difference here is just a slight change in the placements of the parentheses: all that changes is whether the call to `SelectMany` on the right-hand side is invoked inside the function passed to the other `SelectMany`, or it is invoked on the result of the other `SelectMany`. This next example adjusts the layout, and also replaces the lambda `x => Tx1(x)` with the exactly equivalent `Tx1`, which might make the difference in structure a bit easier to see: ```cs IObservable o1 = source @@ -321,7 +321,7 @@ Both of these apply both transforms, and flatten out the extra layers of contain #### Why these laws matter -These three laws directly reflect laws that hold true for composition of straightforward functions over numbers. If we have two functions, $f$, and $g$, we could write a new function _h_, defined as $g(f(x))$. This way of combining function is called _composition_, and is often written as $g \circ f$. If the identity function is called _id_, then the following statements are true: +These three laws directly reflect laws that hold true for composition of straightforward functions over numbers. If we have two functions, $f$, and $g$, we could write a new function $h$, defined as $g(f(x))$. This way of combining function is called _composition_, and is often written as $g \circ f$. If the identity function is called $id$, then the following statements are true: * $id \circ f$ is equivalent to just $f$ * $f \circ id$ is equivalent to just $f$ @@ -374,7 +374,7 @@ public static IObservable MySum(this IObservable items) => items.Aggregate(T.Zero, (total, x) => x + total); ``` -This is more flexible than the similar sum example I showed in the [Aggregation chapter](07_Aggregation.md), because that worked only with an `IObservable`. Here I'm using the _generic math_ feature added in C# 11.0 and .NET 7.0 there to enable `MySum` to work across any number-like type. But the basic principle of operation is the same +This is more flexible than the similar sum example I showed in the [Aggregation chapter](07_Aggregation.md), because that worked only with an `IObservable`. Here I'm using the _generic math_ feature added in C# 11.0 and .NET 7.0 to enable `MySum` to work across any number-like type. But the basic principle of operation is the same. If you came here for the theory, it probably won't be enough for you just to see that the various aggregating operators are all special cases of `Aggregate`. What really is a catamorphism? One definition is as "the unique homomorphism from an initial algebra into some other algebra" but as is typical with category theory, that's one of those explanations that's easiest to understand if you already understand the concepts it's trying to describe. If you try to understand this description in terms of the school mathematics form of algebra, in which we write equations where some values are represented by letters, it's hard to make sense of this definition. That's because catamorphisms take a much more general view of what constitutes "algebra," meaning essentially some system by which expressions of some kind can be constructed and evaluated. @@ -384,13 +384,13 @@ To be more precise, Catamorphisms are described in relation to something called 2. some object _A_ in the category _C_ 3. a morphism from _F A_ to _A_ that effectively evaluates the structure -But that opens up more questions than it answers. So let's start with the obvious one: what's a Functor? From a LINQ perspective, it's essentially anything that implements `Select`. (Some programming systems call this `fmap`.) From our container-oriented viewpoint it's two things: 1) a type constructor that is container-like (e.g. something like `IEnumerable` or `IObservable`) and 2) some means of applying a function to everything in the container. So if you have a function that converts from `string` to `int`, a Functor lets you apply that in one operation to everything it contains. +But that opens up more questions than it answers. So let's start with the obvious one: what's a Functor? From a LINQ perspective, it's essentially anything that implements `Select`. (Some programming systems call this `fmap`.) From our container-oriented viewpoint it's two things: 1) a type constructor that is container-like (e.g. something like `IEnumerable` or `IObservable`) and 2) some means of applying a function to everything in the container. So if you have a function that converts from `string` to `int`, a Functor lets you apply that to everything it contains in a single step. -The combination of `IEnumerable` and its `Select` extension method is a Functor. You can use `Select` to convert an `IEnumerable` to an `IEnumerable`. `IObservable` and its `Select` form another Functor—we can use these to get from an `IObservable` to an `IObservable`. What about that "over some category _C_" part? That alludes to the fact that the mathematical description of a Functor is rather broader. When developers use category theory, we generally stick to a category that represents types (as in programming language types like `int`) and functions. (Strictly speaking a Functor maps from one category to another, so in the most general case, a Functor maps objects and morphisms in some category _C_ into objects and morphisms in some category _D_. But since for programming purposes, we are always using the category representing types, so for the Functors we use _C_ and _D_ will be the same thing. Strictly speaking this means we should be calling them Endofunctors, but nobody seems to bother—in practice we use the name for the more general form, Functor, and it's just taken as read that we mean an Endofunctor over the category of types and functions.) +The combination of `IEnumerable` and its `Select` extension method is a Functor. You can use `Select` to convert an `IEnumerable` to an `IEnumerable`. `IObservable` and its `Select` form another Functor—we can use these to get from an `IObservable` to an `IObservable`. What about that "over some category _C_" part? That alludes to the fact that the mathematical description of a Functor is rather broader. When developers use category theory, we generally stick to a category that represents types (as in programming language types like `int`) and functions. (Strictly speaking a Functor maps from one category to another, so in the most general case, a Functor maps objects and morphisms in some category _C_ into objects and morphisms in some category _D_. But for programming purposes, we are always using the category representing types, so for the Functors we use _C_ and _D_ will be the same thing. Strictly speaking this means we should be calling them Endofunctors, but nobody seems to bother—in practice we use the name for the more general form, Functor, and it's just taken as read that we mean an Endofunctor over the category of types and functions.) So, that's the Functor part. Let's move onto 2, "some object _A_ in the category _C_." Well _C_ is the Functor's category, and we just established that objects in that category are types, so _A_ here might be the `string` type. If our chosen Functor is the combination of `IObservable` and its `Select` method, then _F A_ would be `IObservable`. -So what about the "morphisms" in 3? Again, for our purposes we're just using Endofunctors over types and functions, so in this context, morphisms are just functions. So we could recast this as: +So what about the "morphisms" in 3? Again, for our purposes we're just using Endofunctors over types and functions, so in this context, morphisms are just functions. So we could recast the definition of an F-algebra in more familiar terms as: 1. some container-like generic type such as `IObservable` 2. an item type `A` (e.g., `string`, or `int`) @@ -398,15 +398,15 @@ So what about the "morphisms" in 3? Again, for our purposes we're just using End This is a good deal more specific—category theory is typically concerned with capturing the most general truths about mathematical structures, and this reformulation throws that generality away. However, from the perspective of a programmer looking to lean on mathematical theory, this is fine—as long as what we're doing fits the F-algebra mould, all the general results that mathematicians have derived will apply to our more specialized application of the theory. -Nonetheless, to give you an idea of the sorts of things the general concept of F-algebras can enable, it's possible for the Functor to be a type that represents expressions in a programming language, and you could create a F-algebras that evaluates those expressions. That's a similar idea to LINQ's `Aggregate`, in that it walks over the entire structure represented by the Functor (every element in a list if it's an `IEnumerable`; every subexpression if you're representing an expression) and reduces the whole thing to a single value, but instead of our Functor representing a sequence of things, it has a more complex structure. +Nonetheless, to give you an idea of the sorts of things the general concept of F-algebras can enable, it's possible for the Functor to be a type that represents expressions in a programming language, and you could create an F-algebra that evaluates those expressions. That's a similar idea to LINQ's `Aggregate`, in that it walks over the entire structure represented by the Functor (every element in a list if it's an `IEnumerable`; every subexpression if you're representing an expression) and reduces the whole thing to a single value, but instead of our Functor representing a sequence of things, it has a more complex structure: expressions in some programming language. -So that's an F-algebra. And from a theory point of view, it's important that the third part doesn't necessarily have to reduce things. Theoretically, the types can be recursive, with the item type _A_ being _F A_. (This is important for inherently recursive structures such as expressions.) And there is typically a maximally general F-algebra in which the function (or morphism) in 3 only deals with the structure, and which doesn't actually perform any reduction at all. (E.g., given some expression syntax, you could imagine code that embodies all of the knowledge required to walk through every single subexpression of an expression, but which has no particular opinion on what processing to apply.) The idea of a catamorphism is that there are less general F-algebras available for the same Functor that are less general. +So that's an F-algebra. And from a theory point of view, it's important that the third part doesn't necessarily have to reduce things. Theoretically, the types can be recursive, with the item type _A_ being _F A_. (This is important for inherently recursive structures such as expressions.) And there is typically a maximally general F-algebra in which the function (or morphism) in 3 only deals with the structure, and which doesn't actually perform any reduction at all. (E.g., given some expression syntax, you could imagine code that embodies all of the knowledge required to walk through every single subexpression of an expression, but which has no particular opinion on what processing to apply.) The idea of a catamorphism is that there are less other F-algebras available for the same Functor that are less general. For example, with `IObservable` the general purpose notion is that every item produced by some source can be processed by repeatedly applying some function of two arguments, one of which is a value of type `T` from the container, and the other of which is some sort of accumulator, representing all information aggregated so far. And this function would return the updated accumulator, ready to be passed into the function again along with the next `T`. And then there are more specific forms in which specific accumulation logic (e.g., summation, or determination of a maximum value) is applied. Technically, the catamorphism here is the connection from the general form to the more specialized form. But in practice it's common to refer to the specific specialized forms (such as [`Sum`](07_Aggregation.md#sum) or [`Average`](07_Aggregation.md#average)) as catamorphisms. ### Remaining inside the container -Although in general a catamorphism can strip off the container (e.g., `Sum` for `IEnumerable` produces an `int`), this isn't absolutely necessary, and with Rx most catamorphisms don't do this. As described in the threading and scheduling chapter's [Lock-ups](11_SchedulingAndThreading.md#lock-ups) section, blocking some thread while waiting for a result that will only occur once an `IObservable` has done something in particualr (e.g., if you want to calculate the sum of items, you have to wait until you've seen all the items) is a recipe for deadlock in practice. +Although in general a catamorphism can strip off the container (e.g., `Sum` for `IEnumerable` produces an `int`), this isn't absolutely necessary, and with Rx most catamorphisms don't do this. As described in the threading and scheduling chapter's [Lock-ups](11_SchedulingAndThreading.md#lock-ups) section, blocking some thread while waiting for a result that will only occur once an `IObservable` has done something in particular (e.g., if you want to calculate the sum of items, you have to wait until you've seen all the items) is a recipe for deadlock in practice. For this reason, most of the catamorphisms perform some sort of reduction but continue to produce a result wrapped in an `IObservable`. @@ -432,7 +432,7 @@ Now we've reviewed the theoretical concepts behind LINQ, let's step back and loo * Bind modifies the sequence. `IObservable --> IObservable` * Catamorphisms leave the sequence. Logically `IObservable --> T2`, but in practice typically `IObservable --> IObservable` where the output observable produces just a single value -As an aside, bind and catamorphism were made famous by Google's [MapReduce](http://en.wikipedia.org/wiki/MapReduce) framework from Google. Here Google refer to Bind and Catamorphism by names more commonly used in some functional languages, Map and Reduce. +As an aside, bind and catamorphism were made famous by Google's [MapReduce](http://en.wikipedia.org/wiki/MapReduce) framework from Google. Here Google, refer to Bind and Catamorphism by names more commonly used in some functional languages, Map and Reduce. Most Rx operators are actually specializations of the higher order functional concepts. To give a few examples: @@ -458,7 +458,7 @@ But what does `Amb` do? The basic idea of an [_ambiguous function_](http://www-f So in essence, we're supplying a bunch of different ways to process the input, and if exactly one of those is able to produce a result, we select that result. And if none of the ways of processing the input produces anything, then our ambiguous function also produces nothing. -Where it gets slightly more weird (and where Rx departs from the original definition of `amb`) is when more than one of an ambiguous function's constituents produces a result. In McCarthy's theoretical formulation, the ambiguous function effectively produces all of the results as possible outputs. (This is technically known as _nondeterministic_ computation. It is as though the computer evaluating the ambiguous function clones itself, producing a copy for each possible result, continuing to execute every single copy. You could imagine an multithreaded implementation of such a system, where every time an ambiguous function produces multiple possible results, we create that many new threads so as to be able to evaluate all possible outcomes. This is a reasonable mental model for nondeterministic computation, but it's not what actually happens with Rx's `Amb` operator.) In the kinds of theoretical work ambiguous functions were introduced for, the ambiguity often vanishes in the end—there may have been an enormous number of ways in which a computation could have proceeded, but they might all, finally, produce the same result. However, such theoretical concerns are taking us away from what Rx's `Amb` does, and how we might use it in practice. +Where it gets slightly more weird (and where Rx departs from the original definition of `amb`) is when more than one of an ambiguous function's constituents produces a result. In McCarthy's theoretical formulation, the ambiguous function effectively produces all of the results as possible outputs. (This is technically known as _nondeterministic_ computation, although that name can be misleading: it makes it sound like the result will be unpredictable. But that's not what we mean by _nondeterministic_ when talking about computation. It is as though the computer evaluating the ambiguous function clones itself, producing a copy for each possible result, continuing to execute every single copy. You could imagine an multithreaded implementation of such a system, where every time an ambiguous function produces multiple possible results, we create that many new threads so as to be able to evaluate all possible outcomes. This is a reasonable mental model for nondeterministic computation, but it's not what actually happens with Rx's `Amb` operator.) In the kinds of theoretical work ambiguous functions were introduced for, the ambiguity often vanishes in the end—there may have been an enormous number of ways in which a computation could have proceeded, but they might all, finally, produce the same result. However, such theoretical concerns are taking us away from what Rx's `Amb` does, and how we might use it in practice. [Rx's `Amb`](09_CombiningSequences.md#amb) provides the behaviour described in the cases where either none of the inputs produces anything, or exactly one of them does. Howeever, it makes no attempt to support non-deterministic computation, so its handling of the case where multiple constituents are able to produce value is oversimplified, but then McCarthy's `amb` was first and foremost an analytical construct, so any practical implementation of it is always going to fall short. @@ -469,6 +469,8 @@ It can be tempting to flip between programming styles when using Rx. For the par Although this can sometimes work, switching between paradigms should be done with caution, as this is a common root cause for concurrency problems such as deadlock and scalability issues. The basic reason for this is that for as long as you remain within Rx's way of doing things, you will benefit from the basic soundness of the mathematical underpinnings. But for this to work, you need to use a functional style—functions should process their inputs and deterministically produce outputs based on those inputs, and they should neither depend on external state nor change it. This can be a tall order, and it won't always be possible, but a lot of the theory falls apart if you break these rules. Composition doesn't work as reliably as it can. So using a functional style, and keeping your code within Rx's idiom will tend to improve reliability. +TODO: read through to here + ## Issues with side effects Since programs always have to have some side effects if they are to do anything useful—if the world is no different as a result of a program having run, then you may as well not have run it—it can be useful to explore the issues with side effects, so that we can know how best to deal with them when they are necessary. So we will now discuss the consequences of introducing side effects when working with an observable sequence. A function is considered to have a side effect if, in addition to any return value, it has some other observable effect. Generally the 'observable effect' is a modification of state. This observable effect could be From 6da179da7733b109c710de4be9feea2299b37b02 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Fri, 17 Nov 2023 17:23:43 +0000 Subject: [PATCH 091/142] Appendix D updates after read through --- content/D_AlgebraicUnderpinnings.md | 42 +++++++++++++---------------- 1 file changed, 19 insertions(+), 23 deletions(-) diff --git a/content/D_AlgebraicUnderpinnings.md b/content/D_AlgebraicUnderpinnings.md index d3625bf..9a8185d 100644 --- a/content/D_AlgebraicUnderpinnings.md +++ b/content/D_AlgebraicUnderpinnings.md @@ -469,28 +469,27 @@ It can be tempting to flip between programming styles when using Rx. For the par Although this can sometimes work, switching between paradigms should be done with caution, as this is a common root cause for concurrency problems such as deadlock and scalability issues. The basic reason for this is that for as long as you remain within Rx's way of doing things, you will benefit from the basic soundness of the mathematical underpinnings. But for this to work, you need to use a functional style—functions should process their inputs and deterministically produce outputs based on those inputs, and they should neither depend on external state nor change it. This can be a tall order, and it won't always be possible, but a lot of the theory falls apart if you break these rules. Composition doesn't work as reliably as it can. So using a functional style, and keeping your code within Rx's idiom will tend to improve reliability. -TODO: read through to here - ## Issues with side effects -Since programs always have to have some side effects if they are to do anything useful—if the world is no different as a result of a program having run, then you may as well not have run it—it can be useful to explore the issues with side effects, so that we can know how best to deal with them when they are necessary. So we will now discuss the consequences of introducing side effects when working with an observable sequence. A function is considered to have a side effect if, in addition to any return value, it has some other observable effect. Generally the 'observable effect' is a modification of state. This observable effect could be +Programs always have to have some side effects if they are to do anything useful—if the world is no different as a result of a program having run, then you may as well not have run it—so it can be useful to explore the issues with side effects, so that we can know how best to deal with them when they are necessary. So we will now discuss the consequences of introducing side effects when working with an observable sequence. A function is considered to have a side effect if, in addition to any return value, it has some other observable effect. Generally the 'observable effect' is a modification of state. This observable effect could be * modification of a variable with a wider scope than the function (i.e. global, static or perhaps an argument) -* I/O such as a read/write from a file or network, or updating a display +* I/O such as a read from or modifying a file, sending or receiving network messages, or updating a display * causing physical activity, such as when a vending machine dispenses an item, or directs a coin into its coin box -Functional programming in general tries to avoid creating any side effects. Functions with side effects, especially which modify state, require the programmer to understand more than just the inputs and outputs of the function. The surface area they are required to understand needs to now extend to the history and context of the state being modified. This can greatly increase the complexity of a function, and thus make it harder to correctly understand and maintain. +Functional programming in general tries to avoid creating any side effects. Functions with side effects, especially those which modify state, require the programmer to understand more than just the inputs and outputs of the function. Fully understanding the function's operation could entail knowing the full history and context of the state being modified. This can greatly increase the complexity of a function, and making it harder to correctly understand and maintain. -Side effects are not always accidental, nor are they always intentional. An easy way to reduce the accidental side effects is to reduce the surface area for change. The simple actions coders can take are to reduce the visibility or scope of state and to make what you can immutable. You can reduce the visibility of a variable by scoping it to a code block like a method. You can reduce visibility of class members by making them private or protected. By definition immutable data can't be modified so cannot exhibit side effects. These are sensible encapsulation rules that will dramatically improve the maintainability of your Rx code. +Side effects are not always intentional. An easy way to reduce accidental side effects is to reduce the surface area for change. Here are two simple action coders can take: reduce the visibility or scope of state and make what you can immutable. You can reduce the visibility of a variable by scoping it to a code block like a method (instead of a field or property). You can reduce visibility of class members by making them private or protected. By definition immutable data can't be modified so it can't exhibit side effects. These are sensible encapsulation rules that will dramatically improve the maintainability of your Rx code. -To provide a simple example of a query that has a side effect, we will try to output the index and value of the elements received by updating a variable (closure). +To provide a simple example of a query that has a side effect, we will try to output the index and value of the elements that a subscription receives by updating a variable (closure). -```csharp -var letters = Observable.Range(0, 3) - .Select(i => (char)(i + 65)); +```cs +IObservable letters = Observable + .Range(0, 3) + .Select(i => (char)(i + 65)); -var index = -1; -var result = letters.Select( +int index = -1; +IObservable result = letters.Select( c => { index++; @@ -547,28 +546,25 @@ Also received C at index 5 2nd completed ``` -Now the second person's output is clearly nonsense. They will be expecting index values to be 0, 1 and 2 but get 3, 4 and 5 instead. I have seen far more sinister versions of side effects in code bases. The nasty ones often modify state that is a Boolean value e.g. `hasValues`, `isStreaming` etc. We will see in a later chapter far better ways of controlling workflow with observable sequences than using shared state. +Now the second person's output is clearly nonsense. They will be expecting index values to be 0, 1 and 2 but get 3, 4 and 5 instead. I have seen far more sinister versions of side effects in code bases. The nasty ones often modify state that is a Boolean value e.g. `hasValues`, `isStreaming` etc. In addition to creating potentially unpredictable results in existing software, programs that exhibit side effects are far more difficult to test and maintain. Future refactoring, enhancements or other maintenance on programs that exhibits side effects are far more likely to be brittle. This is especially so in asynchronous or concurrent software. ## Composing data in a pipeline -The preferred way of capturing state is to introduce it to the pipeline. Ideally, we want each part of the pipeline to be independent and deterministic. That is, each function that makes up the pipeline should have its inputs and output as its only state. To correct our example we could enrich the data in the pipeline so that there is no shared state. This would be a great example where we could use the `Select` overload that exposes the index. +The preferred way of capturing state is as part of the information flowing through the pipeline of Rx operators making up your subscription. Ideally, we want each part of the pipeline to be independent and deterministic. That is, each function that makes up the pipeline should have its inputs and output as its only state. To correct our example we could enrich the data in the pipeline so that there is no shared state. This would be a great example where we could use the `Select` overload that exposes the index. -```csharp -var source = Observable.Range(0, 3); -var result = source.Select((idx, value) => new - { - Index = idx, - Letter = (char) (value + 65) - }); +```cs +IObservable source = Observable.Range(0, 3); +IObservable<(int Index, char Letter)> result = source.Select( + (idx, value) => (Index: idx, Letter: (char) (value + 65))); result.Subscribe( - x => Console.WriteLine("Received {0} at index {1}", x.Letter, x.Index), + x => Console.WriteLine($"Received {x.Letter} at index {x.Index}"), () => Console.WriteLine("completed")); result.Subscribe( - x => Console.WriteLine("Also received {0} at index {1}", x.Letter, x.Index), + x => Console.WriteLine($"Also received {x.Letter} at index {x.Index}"), () => Console.WriteLine("2nd completed")); ``` From 4d451e43b5d783fbb7128a33db784bb705e265b2 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Wed, 29 Nov 2023 14:56:52 +0000 Subject: [PATCH 092/142] Ch01 HvR feedback (except for backpressure) --- content/01_WhyRx.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/content/01_WhyRx.md b/content/01_WhyRx.md index c237463..a3887e3 100644 --- a/content/01_WhyRx.md +++ b/content/01_WhyRx.md @@ -16,7 +16,7 @@ Live information streams are a basic, ubiquitous element of computer systems. De This is bad. Live data is critical to a wide range of applications. It should be as easy to work with as lists, dictionaries, and other collections. -The [Reactive Extensions for .NET](https://github.com/dotnet/reactive) (Rx.NET or Rx for short) elevate live data sources to first class citizens. Rx does not require any special programming language support. It exploits .NET's type system to represent streams of data in a way that .NET languages such as C#, F#, and VB.NET can all work with as naturally as they use collection types. +The [Reactive Extensions for .NET](https://github.com/dotnet/reactive) (Rx.NET or Rx for short, available as the [`System.Reactive` NuGet package](https://www.nuget.org/packages/System.Reactive/)) elevate live data sources to first class citizens. Rx does not require any special programming language support. It exploits .NET's type system to represent streams of data in a way that .NET languages such as C#, F#, and VB.NET can all work with as naturally as they use collection types. (A brief grammatical aside: although the phrase "Reactive Extensions" is plural, when we reduce it to just Rx.NET or Rx, we treat it as a singular noun. This is inconsistent, but saying "Rx are..." sounds plain weird.) @@ -42,8 +42,8 @@ Rx is designed for processing sequences of events, meaning that it suits some sc Rx is well suited to representing events that originate from outside of your code, and which your application needs to respond to, such as: -- Integration events like a broadcast from a message bus or a push event from WebSockets API or other low latency middleware like [Azure Event Grid](https://azure.microsoft.com/en-gb/products/event-grid/), [Azure Event Hubs](https://azure.microsoft.com/en-gb/products/event-hubs/) and [Azure Service Bus](https://azure.microsoft.com/en-gb/products/service-bus/) -- Reports from monitoring devices such as a flow sensor in a water utility's infrastructure, or the monitoring and diagnostic features in networking equipment +- Integration events like a broadcast from a message bus, or a push event from WebSockets API, or a message received via MQTT or other low latency middleware like [Azure Event Grid](https://azure.microsoft.com/en-gb/products/event-grid/), [Azure Event Hubs](https://azure.microsoft.com/en-gb/products/event-hubs/) and [Azure Service Bus](https://azure.microsoft.com/en-gb/products/service-bus/), or a non-vendor specific representation such as [cloudevents](https://cloudevents.io/) +- Reports from monitoring devices such as a flow sensor in a water utility's infrastructure, or the monitoring and diagnostic features in a broadband provider's networking equipment - Location data from mobile systems such as [AIS](https://github.com/ais-dotnet/) messages from ships, or automotive telemetry - Operating system events such as filesystem activity, or WMI events - Road traffic information, such as notifications of accidents or changes in average speed @@ -58,6 +58,7 @@ Rx is also good way to model domain events—these may occur as a result of some Events might also represent insights derived from incoming events (or historical data being analyzed at a later date) such as: - A broadband customer might have become an unwitting participant in a DDoS attack +- Two ocean-going vessels have engaged in a pattern of movement often associated with illegal activity (e.g., travelling closely alongside one another for an extended period, long enough to transfer cargo or people, while far out at sea) - [CNC](https://en.wikipedia.org/wiki/Numerical_control) [Milling Machine](https://en.wikipedia.org/wiki/Milling_(machining)) MFZH12's number 4 axis bearing is exhibiting signs of wear at a significantly higher rate than the nominal profile - If the user wants to arrive on time at their meeting half way across town, the current traffic conditions suggest they should leave in the next 10 minutes @@ -80,6 +81,8 @@ This means that there are some scenarios that can be dealt with either using tas For the first 5 years of its existence, Rx was arguably the best way to represent collections that wouldn't necessarily have all the items available immediately. However, the introduction of [`IAsyncEnumerable`](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.iasyncenumerable-1) in .NET Core 3.0 and C# 8 provided a way to handle sequences while remaining in the world of `async`/`await` (and the [`Microsoft.Bcl.AsyncInterfaces` NuGet package](https://www.nuget.org/packages/Microsoft.Bcl.AsyncInterfaces/) makes this available on .NET Framework and .NET Standard 2.0). So the choice to use Rx to now tends to boil down to whether a 'pull' model (exemplified by `foreach` or `await foreach`) or a 'push' model (in which code supplies callbacks to be invoked by the event source when items become available) is a better fit for the concepts being modelled. +Another related feature that was added .NET since Rx first appears is [channels](https://learn.microsoft.com/en-us/dotnet/core/extensions/channels). These allow a source to produce object and a consumer to process them, so there's an obvious superficial similarity to Rx. However, a distinguishing feature of Rx is its support for composition with an extensive set of operators, something with no direct equivalent in channels. Channels on the other hand provide more options for adapting to variations in production and consumption rates. + Earlier, I mentioned _offloading_: using Rx to push work onto other threads. Although this technique can enable Rx to introduce and manage concurrency for the purposes of _scaling_ or performing _parallel_ computations, other dedicated frameworks like [TPL (Task Parallel Library) Dataflow](https://learn.microsoft.com/en-us/dotnet/standard/parallel-programming/dataflow-task-parallel-library) or [PLINQ](https://learn.microsoft.com/en-us/dotnet/standard/parallel-programming/introduction-to-plinq) are more appropriate for performing parallel compute intensive work. However, TPL Dataflow offers some integration with Rx through its [`AsObserver`](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.dataflow.dataflowblock.asobserver) and [`AsObservable`](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.dataflow.dataflowblock.asobservable) extension methods. So it is common to use Rx to integrate TPL Dataflow with the rest of your application. ### Poor Fit with Rx From eb14845887c612df87ec4cc101ea968af6b44d5e Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Thu, 30 Nov 2023 09:51:16 +0000 Subject: [PATCH 093/142] Add short back pressure section --- content/02_KeyTypes.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/content/02_KeyTypes.md b/content/02_KeyTypes.md index f882171..69ec3cb 100644 --- a/content/02_KeyTypes.md +++ b/content/02_KeyTypes.md @@ -418,6 +418,8 @@ public static void EverythingEverywhereAllAtOnce(IEnumerable obs) This calls `obs.OnNext` 10,000 times, but it executes these calls as individual tasks to be run on the thread pool. The thread pool is designed to be able to execute work in parallel, and that's a a problem here because nothing here ensures that one call to `OnNext` completes before the next begins. We've broken the rule that says we must wait for each call to `OnNext` to return before calling either `OnNext`, `OnError`, or `OnComplete` on the same observer. (Note: this assumes that the caller won't subscribe the same observer to multiple different sources. If you do that, you can't assume that all calls to its `OnNext` will obey the rules, because the different sources won't have any way of knowing they're talking to the same observer.) +This rule is the only form of back pressure built into Rx.NET: since the rules forbid calling `OnNext` if a previous call to `OnNext` is still in progress, this enables an `IObserver` to limit the rate at which items arrive. If you just don't return from `OnNext` until you're ready, the source is obliged to wait. However, there are some issues with this. Once [schedulers](11_SchedulingAndThreading.md) get involved, the underlying source might not be connected directly to the final observer. If you use something like [`ObserveOn`](11_SchedulingAndThreading.md#subscribeon-and-observeon) it's possible that the `IObserver` subscribed directly to the source just puts items on a queue and immediately returns, and those items will then be delivered to the real observer on a different thread. In these cases, the 'back pressure' caused by taking a long time to return from `OnNext` only propagates as far as the code pulling items off the queue. It may be possible to use certain Rx operators (such as [`Buffer`](08_Partitioning.md#buffer) or [`Sample`](12_Timing.md#sample)) to mitigate this, but there are no built-in mechanisms for cross-thread propagation of back pressure. Some Rx implementations on other platforms have attempted to provide integrated solutions for this; in the past when the Rx.NET development community has looked into this, some thought that these solutions were problematic, and there is no consensus on what a good solution looks like. So with Rx.NET, if you need to arrange for sources to slow down when you are struggling to keep up, you will need to introduce some mechanism of your own. (Even with Rx platforms that do offer built-in back pressure, they can't provide a general-purpose answer to the question: how do we make this source provide events more slowly? How (or even whether) you can do that will depend on the nature of the source. So some bespoke adaptation is likely to be necessary in any case.) + This rule in which we must wait for `OnNext` to return is tricky and subtle. It's perhaps less obvious than the others, because there's no equivalent rule for `IEnumerable`—the opportunity to break this rule only arises when the source pushes data into the application. You might look at the example above and think "well who would do that?" However, multithreading is just an easy way to show that it is technically possible to break the rule. The harder cases are where single-threaded re-entrancy occurs. Take this code: ```cs From 008cc5e3f279c5863520662d07fb756571e48109 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Thu, 30 Nov 2023 15:16:04 +0000 Subject: [PATCH 094/142] Ch02 - processed more feedback Also updated a .NET 7 ref to in another chapter to .NET 8 --- content/02_KeyTypes.md | 20 ++++++++++---------- content/07_Aggregation.md | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/content/02_KeyTypes.md b/content/02_KeyTypes.md index 69ec3cb..4766a61 100644 --- a/content/02_KeyTypes.md +++ b/content/02_KeyTypes.md @@ -98,7 +98,7 @@ There's an interesting special case in which a source of events has been designe This kind of _cold_-then-_hot_ source can present a problem if we want to attach multiple subscribers. If the source starts providing events as soon as subscription occurs, then that's fine for the very first subscriber: it will receive any events that were backed up waiting for us to start. But if we wanted to attach multiple subscribers, we've got a problem: that first subscriber might receive all the notifications that were sitting waiting in some buffer before we manage to attach the second subscriber. The second subscriber will miss out. -In these cases, we really want some way to rig up all our subscribers before kicking things off. We want subscription to be separate from the act of starting. By default, subscribing to a source implies that we want it to start, but rx defines a specialised interface that can give us more control: [`IConnectableObservable`](https://github.com/dotnet/reactive/blob/f4f727cf413c5ea7a704cdd4cd9b4a3371105fa8/Rx.NET/Source/src/System.Reactive/Subjects/IConnectableObservable.cs). This derives from `IObservable`, and adds just a single method, `Connect`: +In these cases, we really want some way to rig up all our subscribers before kicking things off. We want subscription to be separate from the act of starting. By default, subscribing to a source implies that we want it to start, but Rx defines a specialised interface that can give us more control: [`IConnectableObservable`](https://github.com/dotnet/reactive/blob/f4f727cf413c5ea7a704cdd4cd9b4a3371105fa8/Rx.NET/Source/src/System.Reactive/Subjects/IConnectableObservable.cs). This derives from `IObservable`, and adds just a single method, `Connect`: ```cs public interface IConnectableObservable : IObservable @@ -118,7 +118,7 @@ So far I've shown only a very simple LINQ example, using the `Where` operator to Suppose you want to write a program that watches some folder on a filesystem, and performs automatic processing any time something in that folder changes. For example, web developers often want to trigger automatic rebuilds of their client side code when they save changes in the editor so they can quickly see the effect of their changes. Filesystem changes often come in bursts—text editors might perform a few distinct operations when saving a file. (Some save modifications to a new file, then perform a couple of renames once this is complete, because this avoids data loss if a power failure or system crash happens to occur at the moment you save the file.) So you typically won't want to take action as soon as you detect file activity. It would be better to give it a moment to see if any more activity occurs, and take action only after everything has settled down. -So we should not react directly to filesystem activity. We want take action at those moments when everything goes quiet after a flurry of activity. The following code defines an Rx operator that detects and reports such things. If you're new to Rx (which seems likely if you're reading this) it probably won't be instantly obvious how this works. This is a significant step up in complexity from the examples I've shown so far because this came from a real application. But I'll walk through it step by step, so all will become clear. +So we should not react directly to filesystem activity. We want take action at those moments when everything goes quiet after a flurry of activity. Rx does not offer this functionality directly, but it's possible for us to create a custom operator by combing some of the built-in operators. The following code defines an Rx operator that detects and reports such things. If you're new to Rx (which seems likely if you're reading this) it probably won't be instantly obvious how this works. This is a significant step up in complexity from the examples I've shown so far because this came from a real application. But I'll walk through it step by step, so all will become clear. ```cs static class RxExt @@ -155,7 +155,7 @@ So how does the code shown achieve this? The first thing to notice about the `Qu This is Rx's _compositional_ approach, and it is how we normally use Rx. We use a mixture of operators, combined (_composed_) in a way that produces the effect we want. -But how does this particular combination produce the effect we want? There are a few ways we could get the behaviour that we're looking for from a `Quiescent` operator, but the basic idea of this particular implementation is that it keeps count of how many events have happened recently, and then produces a result every time that number drops back to zero. The `oustanding` variable refers to the `IObservable` that tracks the number of recent events, and this marble diagram shows what it produces in response to the same `source` events as were shown on the preceding diagram: +But how does this particular combination produce the effect we want? There are a few ways we could get the behaviour that we're looking for from a `Quiescent` operator, but the basic idea of this particular implementation is that it keeps count of how many events have happened recently, and then produces a result every time that number drops back to zero. The `outstanding` variable refers to the `IObservable` that tracks the number of recent events, and this marble diagram shows what it produces in response to the same `source` events as were shown on the preceding diagram:
`, which produces exactly two values. It immediately produces the value 1, and then after the specified timespan (2 seconds in these examples) it produces the value -1. That's what's going in in this clause of the query expression: @@ -531,9 +531,9 @@ This can be a surprisingly tricky problem to solve. Suppose `GoUntilStopped` _di Our `GoUntilStopped.Stop` method needs to wait for `OnNext` to return before calling `OnCompleted`. But notice that the `OnNext` method can't return until our `Stop` method returns. We've managed to create a deadlock with single-threaded code! -In this case it's not all that hard to fix: we could modify `Stop` so it just sets the `running` field to `false`, and then move the call to `OnComplete` into the `Go` method, after the `for` loop. But more generally this can be a hard problem to fix, and it's one of the reasons for using the `System.Reactive` library instead of just attempting to implement `IObservable` and `IObserver` directly. Rx has general purpose mechanisms for solving exactly this kind of problem. (We'll see these when we look at [Scheduling](11_SchedulingAndThreading.md).) Moreover, all of the implementations Rx provides take advantage of these mechanisms for you. If you're using Rx by composing its built-in operators in a declarative way, you never have to think about these rules, because all of Rx's operators obey the rules. +In this case it's not all that hard to fix: we could modify `Stop` so it just sets the `running` field to `false`, and then move the call to `OnComplete` into the `Go` method, after the `for` loop. But more generally this can be a hard problem to fix, and it's one of the reasons for using the `System.Reactive` library instead of just attempting to implement `IObservable` and `IObserver` directly. Rx has general purpose mechanisms for solving exactly this kind of problem. (We'll see these when we look at [Scheduling](11_SchedulingAndThreading.md).) Moreover, all of the implementations Rx provides take advantage of these mechanisms for you. -So as long as you're using Rx to build the observable sources you need, you get to depend on these rules in your callbacks that receive the events, and it's mostly Rx's problem to keep to the rules. So the main effect of these rules is that it makes life simpler for code that consumes events. +If you're using Rx by composing its built-in operators in a declarative way, you never have to think about these rules. You get to depend on these rules in your callbacks that receive the events, and it's mostly Rx's problem to keep to the rules. So the main effect of these rules is that it makes life simpler for code that consumes events. These rules are sometimes expressed as a _grammar_. For example, consider this regular expression: @@ -551,7 +551,7 @@ So you might argue that this is a slightly better way to describe the rules form (OnNext)*(OnError|OnComplete)? ``` -More subtly, observable sources are allowed to do nothing at all. In fact there's a built-in implementation to save developers from the effort of writing a source that does nothing: if you call `Observable.Never()` it will return an `IObservable`, and if you subscribe to that, it will never call any methods on your observer. This might not look immediately useful—it is logically equivalent to an `IEnumerable` in which the enumerator's `MoveNext` method never returns, which might not be usefully distinguishable from crashing. It's slightly different with Rx, because when we model this "no items emerge ever" behaviour, we don't need to block a thread forever to do it. We can just decide never to call any methods on the observer. This may seem daft, but as you've seen with the `Quiescent` example, sometimes we create observable sources not because we want the actual items that emerge from it, but because we're interested in the instants when interesting things happen. It can sometimes be useful to be able to model "nothing interesting ever happens" cases. +More subtly, observable sources are allowed to do nothing at all. In fact there's a built-in implementation to save developers from the effort of writing a source that does nothing: if you call `Observable.Never()` it will return an `IObservable`, and if you subscribe to that, it will never call any methods on your observer. This might not look immediately useful—it is logically equivalent to an `IEnumerable` in which the enumerator's `MoveNext` method never returns, which might not be usefully distinguishable from crashing. It's slightly different with Rx, because when we model this "no items emerge ever" behaviour, we don't need to block a thread forever to do it. We can just decide never to call any methods on the observer. This may seem daft, but as you've seen with the `Quiescent` example, sometimes we create observable sources not because we want the actual items that emerge from it, but because we're interested in the instants when interesting things happen. It can sometimes be useful to be able to model "nothing interesting ever happens" cases. For example, if you have written some code to detect unexpected inactivity (e.g., a sensor that stops producing values), and wanted to test that code, your test could use a `Never` source instead of a real one, to simulate a broken sensor. We're not quite done with the Rx's rules, but the last one applies only when we choose to unsubscribe from a source before it comes to a natural end. @@ -561,7 +561,7 @@ There's one more aspect of the relationship between observers and observables to You already know from the rules of `IObserver` that a call to either `OnComplete` or `OnError` denotes the end of a sequence. We passed an `IObserver` to `IObservable.Subscribe`, and now the subscription is over. But what if we want to stop the subscription earlier? -I mentioned earlier that the `Subscribe` method returns an `IDisposable`, which enables us to cancel our subscription. Perhaps we only subscribed to a source because our application opened some window showing the status of some process, and we wanted to update the window to reflect that's process's progress. If the user closes that window, we no longer have any use for the notifications. And although we could just ignore all further notifications, that could be a problem if the thing we're monitoring never reaches a natural end—our observer would continue to receive notifications for the lifetime of the application. This is a waste of CPU power (with corresponding implications for battery life and environmental impact) and it can also prevent the garbage collector from reclaiming memory that should have become free. +I mentioned earlier that the `Subscribe` method returns an `IDisposable`, which enables us to cancel our subscription. Perhaps we only subscribed to a source because our application opened some window showing the status of some process, and we wanted to update the window to reflect that's process's progress. If the user closes that window, we no longer have any use for the notifications. And although we could just ignore all further notifications, that could be a problem if the thing we're monitoring never reaches a natural end—our observer would continue to receive notifications for the lifetime of the application. This is a waste of CPU power (and thus power consumption, with corresponding implications for battery life and environmental impact) and it can also prevent the garbage collector from reclaiming memory that should have become free. So we are free to indicate that we no longer wish to receive notifications by calling `Dispose` on the object returned by `Subscribe`. There are, however, a few non-obvious details. @@ -575,7 +575,7 @@ You are not required to call `Dispose` on the object returned by `Subscribe`. Ob `Dispose` won't necessarily take effect instantly. Obviously it will take some non-zero amount of time in between your code calling into `Dispose`, and the `Dispose` implementation reaching the point where it actually does something. Less obviously, some observable sources may need to do non-trivial work to shut things down. -A source might create a thread to be able to monitor for and report whatever events it represents. (That would happen with the filesystem source shown above when running on Linux on .NET 7, because the `FileSystemWatcher` class itself creates its own thread on Linux.) It might take a while for the thread to detect that it is supposed to shut down. +A source might create a thread to be able to monitor for and report whatever events it represents. (That would happen with the filesystem source shown above when running on Linux on .NET 8, because the `FileSystemWatcher` class itself creates its own thread on Linux.) It might take a while for the thread to detect that it is supposed to shut down. It is fairly common practice for an `IObservable` to represent some underlying work. For example, Rx can take any factory method that returns a `Task` and wrap it as an `IObservable`. It will invoke the factory once for each call to `Subscribe`, so if there are multiple subscribers to a single `IObservable` of this kind, each one effectively gets its own `Task`. This wrapper is able to supply the factory with a `CancellationToken`, and if an observer unsubscribes by calling `Dispose` before the task naturally runs to completion, it will put that `CancellationToken` into a cancelled state. This might have the effect of bringing the task to a halt, but that will work only if the task happens to be monitoring the `CancellationToken`. Even if it is, it might take some time to bring things to a complete halt. Crucially, the `Dispose` call doesn't wait for that to happen—it will attempt to initiate cancellation but it may return before cancellation is complete. @@ -616,7 +616,7 @@ IDisposable subscription = filtered.Subscribe( () => Console.WriteLine("OnCompleted")); ``` -We're calling `Subscribe` on the observable returned by `Where`. When we do that, it will in turn call `Subscribe` on the the `IObservable` returned by `GetSource` (stored in the `source` variable). So there is in effect a chain of subscriptions here. (We only have access to the `IDisposable` returned by `filtered.Subscribe` but the object that returns will be storing the `IDisposable` that it received when it called `source.Subscribe`.) +We're calling `Subscribe` on the observable returned by `Where`. When we do that, it will in turn call `Subscribe` on the `IObservable` returned by `GetSource` (stored in the `source` variable). So there is in effect a chain of subscriptions here. (We only have access to the `IDisposable` returned by `filtered.Subscribe` but the object that returns will be storing the `IDisposable` that it received when it called `source.Subscribe`.) If the source comes to an end all by itself (by calling either `OnCompleted` or `OnError`), this cascades through the chain. So `source` will call `OnCompleted` on the `IObserver` that was supplied by the `Where` operator. And that in turn will call `OnCompleted` on the `IObserver` that was passed to `filtered.Subscribe`, and that will have references to the three methods we passed, so it will call our completion handler. So you could look at this by saying that `source` completes, it tells `filtered` that it has completed, which invokes our completion handler. (In reality this is a very slight oversimplification, because `source` doesn't tell `filtered` anything; it's actually talking to the `IObserver` that `filtered` supplied. This distinction matters if you have multiple subscriptions active simultaneously for the same chain of observables. But in this case, the simpler way of describing it is good enough even if it's not absolutely precise.) diff --git a/content/07_Aggregation.md b/content/07_Aggregation.md index 299b78d..183c6ad 100644 --- a/content/07_Aggregation.md +++ b/content/07_Aggregation.md @@ -48,7 +48,7 @@ sum-->15 sum completed ``` -`Sum` is only able to work with values of type `int`, `long`, `float`, `double` `decimal`, or the nullable versions of these. This means that there are types you might expect to be able to `Sum` that you can't. For example the `BigInteger` type in the `System.Numerics` namespace represents integer values whose size is limited only by available memory, and how long you're prepared to wait for it to perform calculations. (Even basic arithmetic gets very slow on numbers with millions of digits.) You can use `+` to add these together because the type defines an overload for that operator. But `Sum` has historically had no way to find that. The introduction of [generic math in C# 11.0](https://learn.microsoft.com/en-us/dotnet/standard/generics/math#operator-interfaces) means that it would technically be possible to introduce a version of `Sum` that would work for any type `T` that implemented [`IAdditionOperators`](https://learn.microsoft.com/en-us/dotnet/api/system.numerics.iadditionoperators-3). However, that would mean a dependency on .NET 7.0 (because generic math is not available in order versions), and at the time of writing this, Rx supports .NET 7.0 through its `net6.0` target. It could need to introduce a separate `net7.0` target to enable this, but has not yet done so. (To be fair, [`Sum` in LINQ to Objects also doesn't support this yet](https://github.com/dotnet/runtime/issues/64031).) +`Sum` is only able to work with values of type `int`, `long`, `float`, `double` `decimal`, or the nullable versions of these. This means that there are types you might expect to be able to `Sum` that you can't. For example the `BigInteger` type in the `System.Numerics` namespace represents integer values whose size is limited only by available memory, and how long you're prepared to wait for it to perform calculations. (Even basic arithmetic gets very slow on numbers with millions of digits.) You can use `+` to add these together because the type defines an overload for that operator. But `Sum` has historically had no way to find that. The introduction of [generic math in C# 11.0](https://learn.microsoft.com/en-us/dotnet/standard/generics/math#operator-interfaces) means that it would technically be possible to introduce a version of `Sum` that would work for any type `T` that implemented [`IAdditionOperators`](https://learn.microsoft.com/en-us/dotnet/api/system.numerics.iadditionoperators-3). However, that would mean a dependency on .NET 7.0 or later (because generic math is not available in order versions), and at the time of writing this, Rx supports .NET 7.0 through its `net6.0` target. It could introduce a separate `net7.0` and/or `net8.0` target to enable this, but has not yet done so. (To be fair, [`Sum` in LINQ to Objects also doesn't support this yet](https://github.com/dotnet/runtime/issues/64031).) If you supply `Sum` with the nullable versions of these types (e.g., your source is an `IObservable`) then `Sum` will also return a sequence with a nullable item type, and it will produce `null` if any of the input values is `null`. From 9ecfad305b63630d91d908c6f632a82f4c1540be Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Thu, 30 Nov 2023 15:53:40 +0000 Subject: [PATCH 095/142] Use fewer em dashes --- content/00_Foreword.md | 2 +- content/01_WhyRx.md | 6 ++--- content/02_KeyTypes.md | 28 ++++++++++---------- content/03_CreatingObservableSequences.md | 18 ++++++------- content/05_Filtering.md | 20 +++++++------- content/06_Transformation.md | 4 +-- content/07_Aggregation.md | 6 ++--- content/08_Partitioning.md | 16 ++++++------ content/09_CombiningSequences.md | 12 ++++----- content/10_Part3.md | 2 +- content/11_SchedulingAndThreading.md | 32 +++++++++++------------ content/12_Timing.md | 6 ++--- content/13_LeavingIObservable.md | 6 ++--- content/14_ErrorHandlingOperators.md | 6 ++--- content/15_PublishingOperators.md | 4 +-- content/A_IoStreams.md | 2 +- content/D_AlgebraicUnderpinnings.md | 12 ++++----- 17 files changed, 91 insertions(+), 91 deletions(-) diff --git a/content/00_Foreword.md b/content/00_Foreword.md index 7abe491..b392cb9 100644 --- a/content/00_Foreword.md +++ b/content/00_Foreword.md @@ -42,7 +42,7 @@ is also the author of the latest revision of this book, and indeed the author of sentence.) If you have never used Rx before, it _will_ change the way you design and build software. -It provides a well thought out abstraction for a fundamentally important idea in computing—sequences +It provides a well thought out abstraction for a fundamentally important idea in computing: sequences of events. These are as important as lists or arrays, but before Rx there was little direct support in libraries or languages, and what support there was tended to be rather ad hoc, and built on weak theoretical underpinnings. Rx changes that. The extent to diff --git a/content/01_WhyRx.md b/content/01_WhyRx.md index a3887e3..98430e5 100644 --- a/content/01_WhyRx.md +++ b/content/01_WhyRx.md @@ -8,7 +8,7 @@ Rx is a .NET library for processing event streams. Why might you want that? ## Why Rx? -Users want timely information. If you're waiting for a parcel to arrive, live reports of the delivery van's progress give you more freedom than a suspect 2 hour delivery window. Financial applications depend on continuous streams of up-to-date data. We expect our phones and computers to provide us with all sorts of important notifications. And some applications simply can't work without live information—online collaboration tools and multiplayer games absolutely depend on the rapid distribution and delivery of data. +Users want timely information. If you're waiting for a parcel to arrive, live reports of the delivery van's progress give you more freedom than a suspect 2 hour delivery window. Financial applications depend on continuous streams of up-to-date data. We expect our phones and computers to provide us with all sorts of important notifications. And some applications simply can't work without live information. Online collaboration tools and multiplayer games absolutely depend on the rapid distribution and delivery of data. In short, our systems need to react when interesting things happen. @@ -50,7 +50,7 @@ Rx is well suited to representing events that originate from outside of your cod - Integration with a [Complex Event Processing (CEP)](https://en.wikipedia.org/wiki/Complex_event_processing) engine - UI events such as mouse movement or button clicks -Rx is also good way to model domain events—these may occur as a result of some of the events just described, but after processing them to produce events that more directly represent application concepts. These might include: +Rx is also good way to model domain events. These may occur as a result of some of the events just described, but after processing them to produce events that more directly represent application concepts. These might include: - Property or state changes on domain objects such as "Order Status Updated", or "Registration Accepted" - Changes to collections of domain objects, such as "New Registration Created" @@ -62,7 +62,7 @@ Events might also represent insights derived from incoming events (or historical - [CNC](https://en.wikipedia.org/wiki/Numerical_control) [Milling Machine](https://en.wikipedia.org/wiki/Milling_(machining)) MFZH12's number 4 axis bearing is exhibiting signs of wear at a significantly higher rate than the nominal profile - If the user wants to arrive on time at their meeting half way across town, the current traffic conditions suggest they should leave in the next 10 minutes -These three sets of examples show how applications might progressively increase the value of the information as they process events. We start with raw events, which we then enhance to produce domain-specific events, and we then perform analysis to produce notifications that the application's users will really care about. Each stage of processing increases the value of the messages that emerge. Each stage will typically also reduce the volume of messages—if we presented the raw events in the first category directly to users, they might be overwhelmed by the volume of messages, making it impossible to spot the important events. But if we only present them with notifications when our processing has detected something important, this will enable them to work more efficiently and accurately. +These three sets of examples show how applications might progressively increase the value of the information as they process events. We start with raw events, which we then enhance to produce domain-specific events, and we then perform analysis to produce notifications that the application's users will really care about. Each stage of processing increases the value of the messages that emerge. Each stage will typically also reduce the volume of messages. If we presented the raw events in the first category directly to users, they might be overwhelmed by the volume of messages, making it impossible to spot the important events. But if we only present them with notifications when our processing has detected something important, this will enable them to work more efficiently and accurately. The [`System.Reactive` library](https://www.nuget.org/packages/System.Reactive) provides tools for building exactly this kind of value-adding process, in which we tame high-volume raw event sources to produce high-value live insights. It provides a suite of operators that enable our code to express this kind of processing declaratively, as you'll see in subsequent chapters. diff --git a/content/02_KeyTypes.md b/content/02_KeyTypes.md index 4766a61..7af800c 100644 --- a/content/02_KeyTypes.md +++ b/content/02_KeyTypes.md @@ -14,7 +14,7 @@ var bigTrades = where trade.Volume > 1_000_000; ``` -Most .NET developers will be familiar with [LINQ](https://learn.microsoft.com/en-us/dotnet/csharp/linq/) in at least one of its many popular forms such as [LINQ to Objects](https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/linq-to-objects), or [Entity Framework Core queries](https://learn.microsoft.com/en-us/ef/core/querying/). Most LINQ implementations allow you to query _data at rest_—LINQ to Objects works on arrays or other collections; LINQ queries in Entity Framework Core run against data in a database. But Rx is different: it offers the ability to define queries over live event streams—what you might call _data in motion_. +Most .NET developers will be familiar with [LINQ](https://learn.microsoft.com/en-us/dotnet/csharp/linq/) in at least one of its many popular forms such as [LINQ to Objects](https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/linq-to-objects), or [Entity Framework Core queries](https://learn.microsoft.com/en-us/ef/core/querying/). Most LINQ implementations allow you to query _data at rest_. LINQ to Objects works on arrays or other collections, and LINQ queries in Entity Framework Core run against data in a database, but Rx is different: it offers the ability to define queries over live event streams—what you might call _data in motion_. If you don't like the query expression syntax, you can write exactly equivalent code by invoking LINQ operators directly: @@ -92,9 +92,9 @@ And some examples of some sources that might make good cold observables: * events produced by running conventional code such as a loop; you can create such sources with [`Observable.Create`](03_CreatingObservableSequences.md#observablecreate) * a streaming event provides such as Azure Event Hub or Kafka (or any other streaming-style source which holds onto events from the past to be able to deliver events from a particular moment in the stream; so _not_ an event source in the Azure Event Grid style) -Not all sources are strictly completely _hot_ or _cold_. For example, you could imagine a slight variation on a live `IObservable` where the source always reports the most recent trade to new subscribers. Subscribers can count on immediately receiving something, and will then be kept up to date as new information arrives. The fact that new subscribers will always receive (potentially quite old) information is a _cold_-like characteristic, but it's only that first event that is _cold_—it's still likely that a brand new subscriber will have missed lots of information that would have been available to earlier subscribers, making this source more _hot_ than _cold_. +Not all sources are strictly completely _hot_ or _cold_. For example, you could imagine a slight variation on a live `IObservable` where the source always reports the most recent trade to new subscribers. Subscribers can count on immediately receiving something, and will then be kept up to date as new information arrives. The fact that new subscribers will always receive (potentially quite old) information is a _cold_-like characteristic, but it's only that first event that is _cold_. It's still likely that a brand new subscriber will have missed lots of information that would have been available to earlier subscribers, making this source more _hot_ than _cold_. -There's an interesting special case in which a source of events has been designed to enable applications to receive every single event in order, exactly once. Event streaming systems such as Kafka or Azure Event Hub have this characteristic—they retain events for a while, to ensure that consumers don't miss out even if they fall behind from time to time. The standard input (_stdin_) for a process also has this characteristic: if you run a command line tool and start typing input before it is ready to process it, the operating system will hold that input in a buffer, to ensure that nothing is lost. Windows does something similar for desktop applications—each application thread gets a message queue so that if you click or type when it's not able to respond, the input will eventually be processed. We might think of these sources as _cold_-then-_hot_. They're like _cold_ sources in that we won't miss anything just because it took us some time to start receiving events, but once we start retrieving the data, then we can't generally rewind back to the start. So once we're up and running they are more like _hot_ events. +There's an interesting special case in which a source of events has been designed to enable applications to receive every single event in order, exactly once. Event streaming systems such as Kafka or Azure Event Hub have this characteristic—they retain events for a while, to ensure that consumers don't miss out even if they fall behind from time to time. The standard input (_stdin_) for a process also has this characteristic: if you run a command line tool and start typing input before it is ready to process it, the operating system will hold that input in a buffer, to ensure that nothing is lost. Windows does something similar for desktop applications: each application thread gets a message queue so that if you click or type when it's not able to respond, the input will eventually be processed. We might think of these sources as _cold_-then-_hot_. They're like _cold_ sources in that we won't miss anything just because it took us some time to start receiving events, but once we start retrieving the data, then we can't generally rewind back to the start. So once we're up and running they are more like _hot_ events. This kind of _cold_-then-_hot_ source can present a problem if we want to attach multiple subscribers. If the source starts providing events as soon as subscription occurs, then that's fine for the very first subscriber: it will receive any events that were backed up waiting for us to start. But if we wanted to attach multiple subscribers, we've got a problem: that first subscriber might receive all the notifications that were sitting waiting in some buffer before we manage to attach the second subscriber. The second subscriber will miss out. @@ -116,7 +116,7 @@ Since `IObservable` defines just one method, `Subscribe`, you might be wonder So far I've shown only a very simple LINQ example, using the `Where` operator to filter events down to ones that meet certain criteria. To give you a flavour of how we can build more advanced functionality through composition, I'm going to introduce an example scenario. -Suppose you want to write a program that watches some folder on a filesystem, and performs automatic processing any time something in that folder changes. For example, web developers often want to trigger automatic rebuilds of their client side code when they save changes in the editor so they can quickly see the effect of their changes. Filesystem changes often come in bursts—text editors might perform a few distinct operations when saving a file. (Some save modifications to a new file, then perform a couple of renames once this is complete, because this avoids data loss if a power failure or system crash happens to occur at the moment you save the file.) So you typically won't want to take action as soon as you detect file activity. It would be better to give it a moment to see if any more activity occurs, and take action only after everything has settled down. +Suppose you want to write a program that watches some folder on a filesystem, and performs automatic processing any time something in that folder changes. For example, web developers often want to trigger automatic rebuilds of their client side code when they save changes in the editor so they can quickly see the effect of their changes. Filesystem changes often come in bursts. Text editors might perform a few distinct operations when saving a file. (Some save modifications to a new file, then perform a couple of renames once this is complete, because this avoids data loss if a power failure or system crash happens to occur at the moment you save the file.) So you typically won't want to take action as soon as you detect file activity. It would be better to give it a moment to see if any more activity occurs, and take action only after everything has settled down. So we should not react directly to filesystem activity. We want take action at those moments when everything goes quiet after a flurry of activity. Rx does not offer this functionality directly, but it's possible for us to create a custom operator by combing some of the built-in operators. The following code defines an Rx operator that detects and reports such things. If you're new to Rx (which seems likely if you're reading this) it probably won't be instantly obvious how this works. This is a significant step up in complexity from the examples I've shown so far because this came from a real application. But I'll walk through it step by step, so all will become clear. @@ -184,7 +184,7 @@ But how does this particular combination produce the effect we want? There are a I've colour coded the events this time so that I can show the relationship between `source` events and corresponding events produced by `outstanding`. Each time `source` produces an event, `outstanding` produces an event at the same time, in which the value is one higher than the preceding value produced by `outstanding`. But each such `source` event also causes `outstanding` to produce another event two seconds later. (It's two seconds because in these examples, I've presumed that the first argument to `Quiescent` is `TimeSpan.FromSeconds(2)`, as shown on the first marble diagram.) That second event always produces a value that is one lower than whatever the preceding value was. -This means that each event to emerge from `outstanding` tells us how many events `source` produced within the last two seconds. This diagram shows that same information in a slightly different form—it shows the most recent value produced by `outstanding` as a graph. You can see the value goes up by one each time `source` produces a new value. And two seconds after each value produced by `source`, it drops back down by one. +This means that each event to emerge from `outstanding` tells us how many events `source` produced within the last two seconds. This diagram shows that same information in a slightly different form: it shows the most recent value produced by `outstanding` as a graph. You can see the value goes up by one each time `source` produces a new value. And two seconds after each value produced by `source`, it drops back down by one.
` sources. `Quiescent` took an `IObservable` as an input, and combined various Rx operators to produce another observable as an output. Its input was a source of events that could be subscribed to, and its output was also a source of events that could be subscribed to. You can't do this with .NET events—you can't write a method that accepts an event as an argument, or that returns an event. -These limitations are sometimes described by saying that .NET events are not _first class citizens_—there are things you can do with values or references in .NET that you can't do with events. +These limitations are sometimes described by saying that .NET events are not _first class citizens_. There are things you can do with values or references in .NET that you can't do with events. If we represent an event source as a plain old interface, then it _is_ a first class citizen: it can use all of the functionality we expect with other objects and values precisely because it's not something special. @@ -517,7 +517,7 @@ OnCompleted OnNext returning ``` -This tells us that the call to our observer's `OnCompleted` happened before a call in progress to `OnNext` returned. It didn't take multiple threads to make this occur. It happened because the code in `OnNext` decides whether it wants to keep receiving events, and when it wants to stop, it immediately calls the `GoUntilStopped` object's `Stop` method. There's nothing wrong with that—observers are allowed to make outbound calls to other objects inside `OnNext`, and it's actually quite common for an observer to inspect an incoming event and decide that it wants to stop. +This tells us that the call to our observer's `OnCompleted` happened before a call in progress to `OnNext` returned. It didn't take multiple threads to make this occur. It happened because the code in `OnNext` decides whether it wants to keep receiving events, and when it wants to stop, it immediately calls the `GoUntilStopped` object's `Stop` method. There's nothing wrong with that. Observers are allowed to make outbound calls to other objects inside `OnNext`, and it's actually quite common for an observer to inspect an incoming event and decide that it wants to stop. The problem is in the `GoUntilStopped.Stop` method. This calls `OnCompleted` but it makes no attempt to determine whether a call to `OnNext` is in progress. @@ -543,7 +543,7 @@ These rules are sometimes expressed as a _grammar_. For example, consider this r This formally captures the basic idea: there can be any number of calls to `OnNext` (maybe even zero calls), that occur in sequence, followed by either an `OnError` or an `OnComplete`, but not both, and there must be nothing after either of these. -One last point: sequences may be infinite. This is true for `IEnumerable`—it's perfectly possible for an enumerator to return `true` every time `MoveNext` is returned, in which case a `foreach` loop iterating over it will never reach the end. It might choose to stop (with a `break` or `return`), or some exception that did not originate from the enumerator might cause the loop to terminate, but it's absolutely acceptable for an `IEnumerable` to produce items for as long as you keep asking for them. The same is true of a `IObservable`—if you subscribe to an observable source, and by the time your program exits you've not received a call to either `OnComplete` or `OnError`, that's not a bug. +One last point: sequences may be infinite. This is true for `IEnumerable`. It's perfectly possible for an enumerator to return `true` every time `MoveNext` is returned, in which case a `foreach` loop iterating over it will never reach the end. It might choose to stop (with a `break` or `return`), or some exception that did not originate from the enumerator might cause the loop to terminate, but it's absolutely acceptable for an `IEnumerable` to produce items for as long as you keep asking for them. The same is true of a `IObservable`. If you subscribe to an observable source, and by the time your program exits you've not received a call to either `OnComplete` or `OnError`, that's not a bug. So you might argue that this is a slightly better way to describe the rules formally: @@ -561,7 +561,7 @@ There's one more aspect of the relationship between observers and observables to You already know from the rules of `IObserver` that a call to either `OnComplete` or `OnError` denotes the end of a sequence. We passed an `IObserver` to `IObservable.Subscribe`, and now the subscription is over. But what if we want to stop the subscription earlier? -I mentioned earlier that the `Subscribe` method returns an `IDisposable`, which enables us to cancel our subscription. Perhaps we only subscribed to a source because our application opened some window showing the status of some process, and we wanted to update the window to reflect that's process's progress. If the user closes that window, we no longer have any use for the notifications. And although we could just ignore all further notifications, that could be a problem if the thing we're monitoring never reaches a natural end—our observer would continue to receive notifications for the lifetime of the application. This is a waste of CPU power (and thus power consumption, with corresponding implications for battery life and environmental impact) and it can also prevent the garbage collector from reclaiming memory that should have become free. +I mentioned earlier that the `Subscribe` method returns an `IDisposable`, which enables us to cancel our subscription. Perhaps we only subscribed to a source because our application opened some window showing the status of some process, and we wanted to update the window to reflect that's process's progress. If the user closes that window, we no longer have any use for the notifications. And although we could just ignore all further notifications, that could be a problem if the thing we're monitoring never reaches a natural end. Our observer would continue to receive notifications for the lifetime of the application. This is a waste of CPU power (and thus power consumption, with corresponding implications for battery life and environmental impact) and it can also prevent the garbage collector from reclaiming memory that should have become free. So we are free to indicate that we no longer wish to receive notifications by calling `Dispose` on the object returned by `Subscribe`. There are, however, a few non-obvious details. @@ -569,7 +569,7 @@ So we are free to indicate that we no longer wish to receive notifications by ca You are not required to call `Dispose` on the object returned by `Subscribe`. Obviously if you want to remain subscribed to events for the lifetime of your process, this makes sense: you never stop using the object, so of course you don't dispose it. But what might be less obvious is that if you subscribe to an `IObservable` that does come to an end, it automatically tidies up after itself. -`IObservable` implementations are not allowed to assume that you will definitely call `Dispose`, so they are required to perform any necessary cleanup if they stop by calling the observer's `OnCompleted` or `OnError`. This is unusual—in most cases where a .NET API returns a brand new object created on your behalf that implements `IDisposable`, it's an error not to dispose it. But `IDisposable` objects representing Rx subscriptions are an exception to this rule. You only need to dispose them if you want them to stop earlier than they otherwise would. +`IObservable` implementations are not allowed to assume that you will definitely call `Dispose`, so they are required to perform any necessary cleanup if they stop by calling the observer's `OnCompleted` or `OnError`. This is unusual. In most cases where a .NET API returns a brand new object created on your behalf that implements `IDisposable`, it's an error not to dispose it. But `IDisposable` objects representing Rx subscriptions are an exception to this rule. You only need to dispose them if you want them to stop earlier than they otherwise would. ### Cancelling Subscriptions may be Slow or Even Ineffectual @@ -577,7 +577,7 @@ You are not required to call `Dispose` on the object returned by `Subscribe`. Ob A source might create a thread to be able to monitor for and report whatever events it represents. (That would happen with the filesystem source shown above when running on Linux on .NET 8, because the `FileSystemWatcher` class itself creates its own thread on Linux.) It might take a while for the thread to detect that it is supposed to shut down. -It is fairly common practice for an `IObservable` to represent some underlying work. For example, Rx can take any factory method that returns a `Task` and wrap it as an `IObservable`. It will invoke the factory once for each call to `Subscribe`, so if there are multiple subscribers to a single `IObservable` of this kind, each one effectively gets its own `Task`. This wrapper is able to supply the factory with a `CancellationToken`, and if an observer unsubscribes by calling `Dispose` before the task naturally runs to completion, it will put that `CancellationToken` into a cancelled state. This might have the effect of bringing the task to a halt, but that will work only if the task happens to be monitoring the `CancellationToken`. Even if it is, it might take some time to bring things to a complete halt. Crucially, the `Dispose` call doesn't wait for that to happen—it will attempt to initiate cancellation but it may return before cancellation is complete. +It is fairly common practice for an `IObservable` to represent some underlying work. For example, Rx can take any factory method that returns a `Task` and wrap it as an `IObservable`. It will invoke the factory once for each call to `Subscribe`, so if there are multiple subscribers to a single `IObservable` of this kind, each one effectively gets its own `Task`. This wrapper is able to supply the factory with a `CancellationToken`, and if an observer unsubscribes by calling `Dispose` before the task naturally runs to completion, it will put that `CancellationToken` into a cancelled state. This might have the effect of bringing the task to a halt, but that will work only if the task happens to be monitoring the `CancellationToken`. Even if it is, it might take some time to bring things to a complete halt. Crucially, the `Dispose` call doesn't wait for that to happen. It will attempt to initiate cancellation but it may return before cancellation is complete. ### The Rules of Rx Sequences when Unsubscribing @@ -585,7 +585,7 @@ The fundamental rules of Rx sequences described earlier only considered sources Once the call to `Dispose` has returned, the source will make no further calls to the relevant observer. If you call `Dispose` on the object returned by `Subscribe`, then once that call returns you can be certain that the observer you passed in will receive no further calls to any of its three methods (`OnNext`, `OnError`, or `OnComplete`). -That might seem clear enough, but it leaves a grey area: what happens when you've called `Dispose` but it hasn't returned yet? The rules permit sources to continue to emit events in this case. In fact they couldn't very well require otherwise: it will invariably take some non-zero length of time for the `Dispose` implementation to make enough progress to have any effect, so in a multi-threaded world it it's always going to be possible that an event gets delivered in between the call to `Dispose` starting, and the call having any effect. The only situation in which you could depend on no further events emerging would be if your call to `Dispose` happened inside the `OnNext` handler—in this case the source will already have noted a call to `OnNext` is in progress so further calls were already blocked before the call to `Dispose` started. +That might seem clear enough, but it leaves a grey area: what happens when you've called `Dispose` but it hasn't returned yet? The rules permit sources to continue to emit events in this case. In fact they couldn't very well require otherwise: it will invariably take some non-zero length of time for the `Dispose` implementation to make enough progress to have any effect, so in a multi-threaded world it it's always going to be possible that an event gets delivered in between the call to `Dispose` starting, and the call having any effect. The only situation in which you could depend on no further events emerging would be if your call to `Dispose` happened inside the `OnNext` handler. In this case the source will already have noted a call to `OnNext` is in progress so further calls were already blocked before the call to `Dispose` started. But assuming that your observer wasn't already in the middle of an `OnNext` call, any of the following would be legal: @@ -593,7 +593,7 @@ But assuming that your observer wasn't already in the middle of an `OnNext` call * producing notifications that reflect the process of shutting down (including calling `OnError` if an error occurs while trying to bring things to a neat halt, or `OnCompleted` if it halted without problems) * producing a few more notifications for some time after the call to `Dispose` begins, but cutting them off at some arbitrary point, potentially losing track even of important things like errors that occurred while trying to bring things to a halt -As it happens, Rx has a preference for the first option. If you're using an `IObservable` implemented by the `System.Reactive` library (e.g., one returned by a LINQ operator) it is highly likely to have this characteristic. This is partly to avoid tricky situations in which observers try to do things to their sources inside their notification callbacks—re-entrancy tends to be awkward to deal with, and Rx avoids ever having to deal with this particular form of re-entrancy by ensuring that it has already stopped delivering notifications to the observer before it begins the work of shutting down a subscription. +As it happens, Rx has a preference for the first option. If you're using an `IObservable` implemented by the `System.Reactive` library (e.g., one returned by a LINQ operator) it is highly likely to have this characteristic. This is partly to avoid tricky situations in which observers try to do things to their sources inside their notification callbacks. Re-entrancy tends to be awkward to deal with, and Rx avoids ever having to deal with this particular form of re-entrancy by ensuring that it has already stopped delivering notifications to the observer before it begins the work of shutting down a subscription. This sometimes catches people out. If you need to be able to cancel some process that you are observing but you need to be able to observe everything it does up until the point that it stops, then you can't use unsubscription as the shutdown mechanism. As soon as you've called `Dispose`, the `IObservable` that returned that `IDisposable` is no longer under any obligation to tell you anything. This can be frustrating, because the `IDisposable` returned by `Subscribe` can sometimes seem like such a natural and easy way to shut something down. But basic truth is this: once you've initiated unsubscription, you can't rely on getting any further notifications associated with that subscription. You _might_ receive some—the source is allowed to carry on supplying items until the call to `Dispose` returns. But you can't rely on it—the source is also allowed to silence itself immediately, and that's what most Rx-implemented sources will do. @@ -622,7 +622,7 @@ If the source comes to an end all by itself (by calling either `OnCompleted` or In short, completion bubbles up from the source, through all the operators, and arrives at our handler. -What if we unsubscribe early by calling `subscription.Dispose()`? In that case it all happens the other way round—the `subscription` returned by `filtered.Subscribe` is the first to know that we're unsubscribing, but it will then call `Dispose` on the object that was returned when it called `source.Subscribe` for us. +What if we unsubscribe early by calling `subscription.Dispose()`? In that case it all happens the other way round. The `subscription` returned by `filtered.Subscribe` is the first to know that we're unsubscribing, but it will then call `Dispose` on the object that was returned when it called `source.Subscribe` for us. Either way, everything from the source to the observer, including any operators that were sitting in between, gets shut down. diff --git a/content/03_CreatingObservableSequences.md b/content/03_CreatingObservableSequences.md index 64418a8..25a1930 100644 --- a/content/03_CreatingObservableSequences.md +++ b/content/03_CreatingObservableSequences.md @@ -48,7 +48,7 @@ Although `MySequenceOfNumbers` is technically a correct implementation of `IObse ## Representing Filesystem Events in Rx -Let's look at something a little more realistic. This is a wrapper around .NET's `FileSystemWatcher`, presenting filesystem change notifications as an `IObservable`. (Note: this is not necessarily the best design for an Rx `FileSystemWatcher` wrapper. The watcher provides events for several different types of change, and one of them, `Renamed`, provides details as a `RenamedEventArgs`. This derives from `FileSystemEventArgs` so collapsing everything down to a single event stream does work, but this would be inconvenient for applications that wanted access to the details of rename events. A more serious design problem is that this is incapable of reporting more than one event from `FileSystemWatcher.Error`. Such errors might be transient and recoverable, in which case an application might want to continue operating, but since this class chooses to represent everything with a single `IObservable`, it reports errors by invoking the observer's `OnError`, at which point the rules of Rx oblige us to stop. It would be possible to work around this with Rx's `Retry` operator, which can automatically resubscribe after an error, but it might be better to offer a separate `IObservable` so that we can report errors in a non-terminating way. However, the additional complication of that won't always be warranted—the simplicity of this design means it will be a good fit for some applications. As is often the way with software design, there isn't a one-size-fits-all approach.) +Let's look at something a little more realistic. This is a wrapper around .NET's `FileSystemWatcher`, presenting filesystem change notifications as an `IObservable`. (Note: this is not necessarily the best design for an Rx `FileSystemWatcher` wrapper. The watcher provides events for several different types of change, and one of them, `Renamed`, provides details as a `RenamedEventArgs`. This derives from `FileSystemEventArgs` so collapsing everything down to a single event stream does work, but this would be inconvenient for applications that wanted access to the details of rename events. A more serious design problem is that this is incapable of reporting more than one event from `FileSystemWatcher.Error`. Such errors might be transient and recoverable, in which case an application might want to continue operating, but since this class chooses to represent everything with a single `IObservable`, it reports errors by invoking the observer's `OnError`, at which point the rules of Rx oblige us to stop. It would be possible to work around this with Rx's `Retry` operator, which can automatically resubscribe after an error, but it might be better to offer a separate `IObservable` so that we can report errors in a non-terminating way. However, the additional complication of that won't always be warranted. The simplicity of this design means it will be a good fit for some applications. As is often the way with software design, there isn't a one-size-fits-all approach.) ```cs // Represents filesystem changes as an Rx observable sequence. @@ -142,7 +142,7 @@ That got more complex fast. This illustrates that `IObservable` implementatio (Note: this is a significant feature of Rx. The rules keep things simple for observers. This becomes increasingly important as the complexity of your event sources or event process grows.) -There are a couple of issues with this code (aside from the API design issues already mentioned). One is that when `IObservable` implementations produce events modelling real-life asynchronous activity (such as filesystem changes) applications will often want some way to take control over which threads notifications arrive on. For example, UI frameworks tend to have thread affinity requirements—you typically need to be on a particular thread to be allowed to update the user interface. Rx provides mechanisms for redirecting notifications onto different schedulers, so we can work around it, but we would normally expect to be able to provide this sort of observer with an `IScheduler`, and for it to deliver notifications through that. We'll discuss schedulers in later chapters. +There are a couple of issues with this code (aside from the API design issues already mentioned). One is that when `IObservable` implementations produce events modelling real-life asynchronous activity (such as filesystem changes) applications will often want some way to take control over which threads notifications arrive on. For example, UI frameworks tend to have thread affinity requirements. You typically need to be on a particular thread to be allowed to update the user interface. Rx provides mechanisms for redirecting notifications onto different schedulers, so we can work around it, but we would normally expect to be able to provide this sort of observer with an `IScheduler`, and for it to deliver notifications through that. We'll discuss schedulers in later chapters. The other issue is that this does not deal with multiple subscribers efficiently. You're allowed to call `IObservable.Subscribe` multiple times, and if you do that with this code, it will create a new `FileSystemWatcher` each time. That could happen more easily than you might think. Suppose we had an instance of this watcher, and wanted to handle different events in different ways. We might use the `Where` operator to define observable sources that split events up in the way we want: @@ -280,7 +280,7 @@ IObservable changes = Observable watcher.EnableRaisingEvents = true; ``` -Here we're using the `FromEventPattern` helper from the `System.Reactive` library's `Observable` class, which can be used to build an `IObservable` from any .NET event that conforms the the normal pattern (in which event handlers take two arguments: a sender of type `object`, and then some `EventArgs`-derived type containing information about the event). This is not as flexible as the earlier example—it reports only one of the events, and we have to manually start (and, if necessary stop) the `FileSystemWatcher`. But for some applications that will be good enough, and this is a lot less code to write. If we were aiming to write a fully-featured wrapper for `FileSystemWatcher` suitable for many different scenarios, it might be worth writing a specialized `IObservable` implementation as shown earlier. (We could easily extend this last example to watch all of the events—we'd just use the `FromEventPattern` once for each event, and then use `Observable.Merge` to combine the four resulting observables into one. The only real benefit we're getting from a full custom implementation is that we can automatically start and stop the `FileSystemWatcher` depending on whether there are currently any observers.) But if we just need to represent some events as an `IObservable` so that we can work with them in our application, we can just use this simpler approach. +Here we're using the `FromEventPattern` helper from the `System.Reactive` library's `Observable` class, which can be used to build an `IObservable` from any .NET event that conforms the the normal pattern (in which event handlers take two arguments: a sender of type `object`, and then some `EventArgs`-derived type containing information about the event). This is not as flexible as the earlier example. It reports only one of the events, and we have to manually start (and, if necessary stop) the `FileSystemWatcher`. But for some applications that will be good enough, and this is a lot less code to write. If we were aiming to write a fully-featured wrapper for `FileSystemWatcher` suitable for many different scenarios, it might be worth writing a specialized `IObservable` implementation as shown earlier. (We could easily extend this last example to watch all of the events. We'd just use the `FromEventPattern` once for each event, and then use `Observable.Merge` to combine the four resulting observables into one. The only real benefit we're getting from a full custom implementation is that we can automatically start and stop the `FileSystemWatcher` depending on whether there are currently any observers.) But if we just need to represent some events as an `IObservable` so that we can work with them in our application, we can just use this simpler approach. In practice, we almost always get `System.Reactive` to implement `IObservable` for us. Even if we want to take control of certain aspects (such as automatically starting up and shutting down the `FileSystemWatcher` in these examples) we can almost always find a combination of operators that enable this. The following code uses various methods from `System.Reactive` to return an `IObservable` that has all the same functionality as the fully-featured hand-written `RxFsEventsMultiSubscriber` above, but with considerably less code. @@ -418,7 +418,7 @@ Your delegate must return either an `IDisposable` or an `Action` to enable unsub This example is reminiscent of the `MySequenceOfNumbers` example from the start of this chapter, in that it immediately produces a few fixed values. The main difference in this case is that Rx adds some wrappers that can handle awkward situations such as re-entrancy. Rx will sometimes automatically defer work to prevent deadlocks, so it's possible that code consuming the `IObservable` returned by this method will see a call to `Subscribe` return before the callback in the code above runs, in which case it would be possible for them to unsubscribe inside their `OnNext` handler. (In the `MySequenceOfNumbers` case that can't actually happen because that doesn't return an `IDisposable` until after it has finished producing all values. This might look like it would do the same, but the `IDisposable` we return isn't necessarily the one the subscriber sees, and in cases where deferred execution is occurring, the subscriber may well already have an `IDisposable` in hand by the time we call `OnNext`.) -You might be wondering how the `IDisposable` or callback can ever do anything useful, given that it's the return value of the callback, so we can only return it to Rx as the last thing our callback does. Won't we always have finished our work by the time we return, meaning there's nothing to cancel? Not necessarily—we might kick off some work that continues to run after we return. This next example does that, meaning that the unsubscription action it returns is able to do something useful—it sets a cancellation token that is being observed by the loop that generates our observable's output. +You might be wondering how the `IDisposable` or callback can ever do anything useful, given that it's the return value of the callback, so we can only return it to Rx as the last thing our callback does. Won't we always have finished our work by the time we return, meaning there's nothing to cancel? Not necessarily—we might kick off some work that continues to run after we return. This next example does that, meaning that the unsubscription action it returns is able to do something useful: it sets a cancellation token that is being observed by the loop that generates our observable's output. ```cs IObservable KeyPresses() => @@ -724,7 +724,7 @@ completed Alternatively, you can provide a `DateTimeOffset` for the `dueTime` parameter. This will produce the value 0 and complete at the specified time. -A further set of overloads adds a `TimeSpan` that indicates the period at which to produce subsequent values. This allows us to produce infinite sequences. It also shows how `Observable.Interval` is really just a special case of `Observable.Timer`—`Interval` could be implemented like this: +A further set of overloads adds a `TimeSpan` that indicates the period at which to produce subsequent values. This allows us to produce infinite sequences. It also shows how `Observable.Interval` is really just a special case of `Observable.Timer`. `Interval` could be implemented like this: ```cs public static IObservable Interval(TimeSpan period) @@ -851,13 +851,13 @@ IObservable> changeEvents = Observable If you have an object that provides an event, you can use this overload of `FromEventPattern`, passing in the object and the name of the event that you'd like to use with Rx. Although this is the simplest way to adapt events into Rx's world, it has a few problems. -Firstly, why do I need to pass the event name as a string? Identifying members with strings is an error-prone technique—the compiler won't notice if there's a mismatch between the first and second argument (e.g., if I passed the arguments `(somethingElse, nameof(watcher.Changed))` by mistake). Couldn't I just pass `watcher.Changed` itself? Unfortunately not—this is an example of the issue I mentioned in the first chapter: .NET events are not first class citizens. We can't use them in the way we can use other objects or values. For example, we can't pass an event as an argument to a method. In fact the only thing you can do with a .NET event is attach and remove event handlers. If I want to get some other method to attach handlers to the event of my choosing (e.g., here I want Rx to handle the events), then the only way to do that is to specify the event's name so that the method (`FromEventPattern`) can then use reflection to attach its own handlers. +Firstly, why do I need to pass the event name as a string? Identifying members with strings is an error-prone technique. The compiler won't notice if there's a mismatch between the first and second argument (e.g., if I passed the arguments `(somethingElse, nameof(watcher.Changed))` by mistake). Couldn't I just pass `watcher.Changed` itself? Unfortunately not—this is an example of the issue I mentioned in the first chapter: .NET events are not first class citizens. We can't use them in the way we can use other objects or values. For example, we can't pass an event as an argument to a method. In fact the only thing you can do with a .NET event is attach and remove event handlers. If I want to get some other method to attach handlers to the event of my choosing (e.g., here I want Rx to handle the events), then the only way to do that is to specify the event's name so that the method (`FromEventPattern`) can then use reflection to attach its own handlers. This is a problem for some deployment scenarios. It is increasingly common in .NET to do extra work at build time to optimize runtime behaviour, and reliance on reflection can compromise these techniques. For example, instead of relying on Just In Time (JIT) compilation of code, we might use Ahead of time (AoT) mechanisms. .NET's Ready to Run (R2R) system enables you to include pre-compiled code targeting specific CPU types alongside the normal IL, avoiding having to wait for .NET to compile the IL into runnable code. This can have a significant effect on startup times, making it an important technique both in client side applications, where it can fix problems where applications are sluggish when they first start up. It can also be important in server-side applications, especially in cloud environments where code may be moved from one compute node to another fairly frequently, making it important to minimize cold start costs. There are also scenarios where JIT compilation is not even an option, in which case AoT compilation isn't merely an optimization: it's the only means by which code can run at all. The problem with reflection is that it makes it difficult for the build tools to work out what code will execute at runtime. When they inspect this call to `FromEventPattern` they will just see arguments of type `object` and `string`. It's not self-evident that this is going to result in reflection-driven calls to the `add` and `remove` methods for `FileSystemWatcher.Changed` at runtime. There are attributes that can be used to provide hints, but there are limits to how well these can work. Sometimes the build tools will be unable to determine what code would need to be AoT compiled to enable this method to execute without relying on runtime JIT. -There's another, related problem. The .NET build tools support a feature called 'trimming', in which they remove unused code. The `System.Reactive.dll` file is about 1.3MB in size, but it would be a very unusual application that used every member of every type in that component. Basic use of Rx might need only a few tens of kilobytes. The idea with trimming is to work out which bits are actually in use, and produce a copy of the DLL that contains only that code. This can dramatically reduce the volume of code that needs to be deployed for an executable to run. This can be especially important in client-side Blazor applications, where .NET components end up being downloaded by the browser. Having to download an entire 1.3MB component might make you think twice about using it. But if trimming means that basic usage requires only a few tens of KB, and that the size would increase only if you were making more extensive use of the component, that can make it reasonable to use a component that would, without trimming, have imposed too large a penalty to justify its inclusion. But as with AoT compilation, trimming can only work if the tools can determine which code is in use. If they can't do that, it's not just a case of falling back to a slower path, waiting while the relevant code gets JIT compiler—if code has been trimmed, it will be unavailable at runtime, and your application might crash with a `MissingMethodException`. +There's another, related problem. The .NET build tools support a feature called 'trimming', in which they remove unused code. The `System.Reactive.dll` file is about 1.3MB in size, but it would be a very unusual application that used every member of every type in that component. Basic use of Rx might need only a few tens of kilobytes. The idea with trimming is to work out which bits are actually in use, and produce a copy of the DLL that contains only that code. This can dramatically reduce the volume of code that needs to be deployed for an executable to run. This can be especially important in client-side Blazor applications, where .NET components end up being downloaded by the browser. Having to download an entire 1.3MB component might make you think twice about using it. But if trimming means that basic usage requires only a few tens of KB, and that the size would increase only if you were making more extensive use of the component, that can make it reasonable to use a component that would, without trimming, have imposed too large a penalty to justify its inclusion. But as with AoT compilation, trimming can only work if the tools can determine which code is in use. If they can't do that, it's not just a case of falling back to a slower path, waiting while the relevant code gets JIT compiler. If code has been trimmed, it will be unavailable at runtime, and your application might crash with a `MissingMethodException`. So reflection-based APIs can be problematic if you're using any of these techniques. Fortunately, there's an alternative. We can use an overload that takes a couple of delegates, and Rx will invoke these when it wants to add or remove handlers for the event: @@ -884,7 +884,7 @@ It is very common to want to expose property changed events as observable sequen ### From Task -The `Task` and `Task` types are very widely used in .NET. Mainstream .NET languages have built-in support for working with them (e.g., C#'s `async` and `await` keywords). There's some conceptual overlap between tasks an `IObservable`: both represent some sort of work that might take a while to complete. There is a sense in which an `IObservable` is a generalization of a `Task`—both represent potentially long-running work, but an `IObservable` can produce multiple results whereas `Task` can produce just one. +The `Task` and `Task` types are very widely used in .NET. Mainstream .NET languages have built-in support for working with them (e.g., C#'s `async` and `await` keywords). There's some conceptual overlap between tasks an `IObservable`: both represent some sort of work that might take a while to complete. There is a sense in which an `IObservable` is a generalization of a `Task`: both represent potentially long-running work, but an `IObservable` can produce multiple results whereas `Task` can produce just one. Since `IObservable` is the more general abstraction, we should be able to represent a `Task` as an `IObservable`. Rx defines various extension methods for `Task` and `Task` to do this. These methods are all called `ToObservable()`, and it offers various overloads offering control of the details where required, and simplicity for the most common scenarios. @@ -1163,7 +1163,7 @@ s.Subscribe(x => Console.WriteLine($"Sub2: {x}")); s.OnNext(4); ``` -Since the second subscription only comes along after we've already produced 3 values, it no longer sees all of them—it only receives the last two values published prior to subscription (but the first subscription continues to see everything of course): +Since the second subscription only comes along after we've already produced 3 values, it no longer sees all of them. It only receives the last two values published prior to subscription (but the first subscription continues to see everything of course): ``` Sub1: 1 diff --git a/content/05_Filtering.md b/content/05_Filtering.md index 34edb9f..e759c26 100644 --- a/content/05_Filtering.md +++ b/content/05_Filtering.md @@ -4,7 +4,7 @@ title : Filtering # Filtering -Rx provides us with tools to take potentially vast quantities of events and process these to produce higher level insights. This can often involve a reduction in volume—a small number of events may be more useful than a large number if the individual events in that lower-volume stream are, on average, more informative. The simplest mechanisms for achieving this involve simply filtering out events we don't want. Rx defines several operators that can do this. +Rx provides us with tools to take potentially vast quantities of events and process these to produce higher level insights. This can often involve a reduction in volume. A small number of events may be more useful than a large number if the individual events in that lower-volume stream are, on average, more informative. The simplest mechanisms for achieving this involve simply filtering out events we don't want. Rx defines several operators that can do this. Just before we move on to introducing the new operators, we will quickly define an extension method to help illuminate several of the examples. This `Dump` extension method subscribes to any `IObservable` with handlers that display messages for each notification the source produces. This method takes a `name` argument, which will be shown as part of each message, enabling us to see where events came from in examples that subscribe to more than one source. @@ -29,7 +29,7 @@ Applying a filter to a sequence is an extremely common exercise and the most str IObservable Where(this IObservable source, Func predicate) ``` -Note that the element type is the same for the `source` parameter as it is for the return type. This is because `Where` doesn't modify elements—it can filter some out, but those that it does not remove are passed through unaltered. +Note that the element type is the same for the `source` parameter as it is for the return type. This is because `Where` doesn't modify elements. It can filter some out, but those that it does not remove are passed through unaltered. This example uses `Where` to filter out all odd values produced from a `Range` sequence. @@ -52,7 +52,7 @@ Where-->8 Where completed ``` -The `Where` operator is one of the many standard LINQ operators. This is one of many standard LINQ operators you'll find on all LINQ providers—LINQ to Objects, the `IEnumerable` implementation, provides an equivalent method, for example. In most cases, Rx's operators behave just as they do in the `IEnumerable` implementations, although there are some exceptions as we'll see later. We will discuss each implementation and explain any variation as we go. By implementing these common operators Rx also gets language support for free via C# query expression syntax. For example, we could have written the first statement this way, and it would have compiled to effectively identical code: +The `Where` operator is one of the many standard LINQ operators. This is one of many standard LINQ operators you'll find on all LINQ providers. LINQ to Objects, the `IEnumerable` implementation, provides an equivalent method, for example. In most cases, Rx's operators behave just as they do in the `IEnumerable` implementations, although there are some exceptions as we'll see later. We will discuss each implementation and explain any variation as we go. By implementing these common operators Rx also gets language support for free via C# query expression syntax. For example, we could have written the first statement this way, and it would have compiled to effectively identical code: ```cs IObservable oddNumbers = @@ -103,7 +103,7 @@ IgnoreElements completed ## OfType -Some observable sequences produce items of various types. For example, consider an application that wants to keep track of ships as they move. This is possible with an AIS receiver. AIS is the Automatic Identification System, which most ocean-going ships use to report their location, heading, speed, and other information. There are numerous kinds of AIS message—some report a ship's location and speed, but its name is reported in a different kind of message. (This is because most ships move more often than they change their names, so they broadcast these two types of information at quite different intervals.) +Some observable sequences produce items of various types. For example, consider an application that wants to keep track of ships as they move. This is possible with an AIS receiver. AIS is the Automatic Identification System, which most ocean-going ships use to report their location, heading, speed, and other information. There are numerous kinds of AIS message. Some report a ship's location and speed, but its name is reported in a different kind of message. (This is because most ships move more often than they change their names, so they broadcast these two types of information at quite different intervals.) Imagine how this might look in Rx. Actually you don't have to imagine it. The open source [Ais.Net project](https://github.com/ais-dotnet) includes a [`ReceiverHost` class](https://github.com/ais-dotnet/Ais.Net.Receiver/blob/15de7b2908c3bd67cf421545578cfca59b24ed2c/Solutions/Ais.Net.Receiver/Ais/Net/Receiver/Receiver/ReceiverHost.cs) that makes AIS messages available through Rx. The `ReceiverHost` defines a `Messages` property of type `IObservable`. Since AIS defines numerous message types, this observable source can produce many different kinds of objects. Everything it emits will implement the [`IAisMessage` interface](https://github.com/ais-dotnet/Ais.Net.Receiver/blob/15de7b2908c3bd67cf421545578cfca59b24ed2c/Solutions/Ais.Net.Models/Ais/Net/Models/Abstractions/IAisMessage.cs), which reports the ship's unique identifier, but not much else. But the [`Ais.Net.Models` library](https://www.nuget.org/packages/Ais.Net.Models/) defines numerous other interfaces, including [`IVesselNavigation`](https://github.com/ais-dotnet/Ais.Net.Receiver/blob/15de7b2908c3bd67cf421545578cfca59b24ed2c/Solutions/Ais.Net.Models/Ais/Net/Models/Abstractions/IVesselNavigation.cs), which reports location, speed, and heading, and [`IVesselName`](https://github.com/ais-dotnet/Ais.Net.Receiver/blob/15de7b2908c3bd67cf421545578cfca59b24ed2c/Solutions/Ais.Net.Models/Ais/Net/Models/Abstractions/IVesselName.cs), which tells you the vessel's name. @@ -123,7 +123,7 @@ Cannot implicitly convert type 'System.IObservable`, that's is also the type that `Where` will return. It so happens that our predicate ensures that only those messages that implement `IVesselNavigation` make it through, but there's no way for the C# compiler to understand the relationship between the predicate and the output. (For all it knows, `Where` might do the exact opposite, including only those elements for which the predicate returns `false`. In fact the compiler can't guess anything about how `Where` might use its predicate.) -Fortunately, Rx provides an operator specialized for this case. `OfType` filters items down to just those that are of a particular type—items must be either the exact type specified, or inherit from it, or, if it's an interface, they must implement it. This enables us to fix the last example: +Fortunately, Rx provides an operator specialized for this case. `OfType` filters items down to just those that are of a particular type. Items must be either the exact type specified, or inherit from it, or, if it's an interface, they must implement it. This enables us to fix the last example: ```cs IObservable vesselMovements = receiverHost.Messages @@ -210,7 +210,7 @@ LINQ providers typically provide `Last` and `LastOrDefault`. These do almost exa There is also [`PublishLast`](15_PublishingOperators.md#publishlast). This has similar semantics to `LastAsync` but it handles multiple subscriptions differently. Each time you subscribe to the `IObservable` that `LastAsync` returns, it will subscribe to the underlying source, but `PublishLast` makes only a single `Subscribe` call to the underlying source. (To provide control over exactly when this happens, `PublishLast` returns an `IConnectableObservable`. As the [Hot and Cold Sources section of Chapter 2](02_KeyTypes.md#hot-and-cold-sources) described, this provides a `Connect` method, and the connectable observable returned by `PublishLast` subscribes to its underlying source when you call this.) Once this single subscription receives an `OnComplete` notification from the source, it will deliver the final value to all subscribers. (It also remembers the final value, so if any new observers subscribe after the final value has been produced, they will immediately receive that value when they subscribe.) The final value is immediately followed by an `OnCompleted` notification. This is one of a family of operators based on the [`Multicast`](15_PublishingOperators.md#multicast) operator described in more detail in later chapters. -The distinction between `LastAsync` and `LastOrDefaultAsync` is the same as with `FirstAsync` and `FirstOrDefaultAsync`. If the source completes having produced nothing, `LastAsync` reports an error, whereas `LastOrDefaultAsync` emits the default value for its element type and then completes. `PublishLast` handles an empty source differently again: if the source completes without producing any elements, the observable returned by `PublishLast` will do the same—it produces neither an error nor a default value in this scenario. +The distinction between `LastAsync` and `LastOrDefaultAsync` is the same as with `FirstAsync` and `FirstOrDefaultAsync`. If the source completes having produced nothing, `LastAsync` reports an error, whereas `LastOrDefaultAsync` emits the default value for its element type and then completes. `PublishLast` handles an empty source differently again: if the source completes without producing any elements, the observable returned by `PublishLast` will do the same: it produces neither an error nor a default value in this scenario. Reporting the final element of a sequence entails a challenge that `First` does not face. It's very easy to know when you've received the first element from a source: if the source produces an element, and it hasn't previously produced an element, then that's the first element right there. This means that operators such as `FirstAsync` can report the first element immediately. But `LastAsync` and `LastOrDefaultAsync` don't have that luxury. @@ -220,7 +220,7 @@ Because of this. `LastAsync` and `LastOrDefaultAsync` emit nothing at all until ### TakeLast -Earlier we saw that Rx implements the standard `Take` operator, which forwards up to a specified number of elements from the start of a sequence and then stops. `TakeLast` forwards the elements at the end of a sequence. For example, `TakeLast(3)` asks for the final 3 elements of the source sequence. As with `Take`, `TakeLast` is tolerant of sources that produce too few items—if a source produces fewer than 3 items, `TaskLast(3)` will just forward the entire sequence. +Earlier we saw that Rx implements the standard `Take` operator, which forwards up to a specified number of elements from the start of a sequence and then stops. `TakeLast` forwards the elements at the end of a sequence. For example, `TakeLast(3)` asks for the final 3 elements of the source sequence. As with `Take`, `TakeLast` is tolerant of sources that produce too few items. If a source produces fewer than 3 items, `TaskLast(3)` will just forward the entire sequence. `TakeLast` faces the same challenge as `Last`: it doesn't know when it is near the end of the sequence. It therefore has to hold onto copies of the most recently seen values. It needs memory to hold onto however many values you've specified. If you write `TakeLast(1_000_000)`, it will need to allocate a buffer large enough to store 1,000,000 values. It doesn't know if the first element it receives will be one of the final million. It can't know that until either the source completes, or the source has emitted more than 1,000,000 items. When the source finally does complete, `TakeLast` will now know what the final million elements were and will need to pass all of them to its subscriber's `OnNext` method one after another. @@ -236,7 +236,7 @@ With `SingleAsync`, you will get an error if the source is empty, just like with What if we want the exact opposite of the `Take` or `TakeLast` operators? Instead of taking the first 5 items from a source, maybe I want to discard the first 5 items instead? Perhaps I have some `IObservable` taking readings from a sensor, and I have discovered that the sensor produces garbage values for its first few readings, so I'd like to ignore those, and only start listening once it has settled down. I can achieve this with `Skip(5)`. -`SkipLast` does the same thing at the end of the sequence—it omits the specified number of elements at the tail end. As with some of the other operators we've just been looking at, this has to deal with the problem that it can't tell when it's near the end of the sequence. It only gets to discover which were the last (say) 4 elements after the source has emitted all of them, followed by an `OnComplete`. So `SkipLast` will introduce a delay. If you use `SkipLast(4)`, it won't forward the first element that the source produces until the source produces a 5th element. So it doesn't need to wait for `OnCompleted` or `OnError` before it can start doing things, it just has to wait until its certain that an element is not one of the ones we want to discard. +`SkipLast` does the same thing at the end of the sequence: it omits the specified number of elements at the tail end. As with some of the other operators we've just been looking at, this has to deal with the problem that it can't tell when it's near the end of the sequence. It only gets to discover which were the last (say) 4 elements after the source has emitted all of them, followed by an `OnComplete`. So `SkipLast` will introduce a delay. If you use `SkipLast(4)`, it won't forward the first element that the source produces until the source produces a 5th element. So it doesn't need to wait for `OnCompleted` or `OnError` before it can start doing things, it just has to wait until its certain that an element is not one of the ones we want to discard. The other key methods to filtering are so similar I think we can look at them as one big group. First we will look at `Skip` and `Take`. These act just like they do for the `IEnumerable` implementations. These are the most simple and probably the most used of the Skip/Take methods. Both methods just have the one parameter; the number of values to skip or to take. @@ -376,7 +376,7 @@ In addition to `SkipWhile` and `TakeWhile`, Rx defines `SkipUntil` and `TakeUnti You've already seen one example. The [`FirstAsync` and `FirstOrDefaultAsync`](#firstasync-and-firstordefaultasync) included an example that used an overload of `TakeUntil` that accepted a `DateTimeOffset`. This wraps any `IObservable`, returning an `IObservable` that will forward everything from the source until the specified time, at which point it will immediately complete (and will unsubscribe from the underlying source). -We couldn't have achieved this with `TakeWhile`, because that consults its predicate only when the source produces an item. If we want the source to complete at a specific time, the only way we could do that with `TakeWhile` is if its source happens to produce an item at the exact moment we wanted to finish. `TakeWhile` will only ever complete as a result of its source producing an item. `TakeUntil` can complete asynchronously—if we specified a time 5 minutes into the future, it doesn't matter if the source is completely idle when that time arrives. `TakeUntil` will complete anyway. (It relies on [Schedulers](11_SchedulingAndThreading.md#schedulers) to be able to do this.) +We couldn't have achieved this with `TakeWhile`, because that consults its predicate only when the source produces an item. If we want the source to complete at a specific time, the only way we could do that with `TakeWhile` is if its source happens to produce an item at the exact moment we wanted to finish. `TakeWhile` will only ever complete as a result of its source producing an item. `TakeUntil` can complete asynchronously. If we specified a time 5 minutes into the future, it doesn't matter if the source is completely idle when that time arrives. `TakeUntil` will complete anyway. (It relies on [Schedulers](11_SchedulingAndThreading.md#schedulers) to be able to do this.) We don't have to use a time, `TakeUntil` offers an overload that accept a second `IObservable`. This enables us to tell it to stop when something interesting happens, without needing to know in advance exactly when that will occur. This overload of `TakeUntil` forwards items from the source until that second `IObservable` produces a value. `SkipUntil` offers a similar overload in which the second `IObservable` determines when it should start forwarding items from the source. @@ -405,7 +405,7 @@ IObservable newVesselMessages = receiverHost.Messages Here, the input to `Distinct` is now an `IObservable`. (In the preceding example it was actually `IObservable`, because the `Select` clause picked out just the MMSI.) So `Distinct` now receives the entire `IAisMessage` each time the source emits one. But because we've supplied a callback, it's not going try and compare entire `IAisMessage` messages with one another. Instead, each time it receives one, it passes that to our callback, and then looks at the value our callback returns, and compares that with the values the callback returned for all previously seen messages, and lets the message through only if that's new. -So the effect is similar to before—messages will be allowed through only if they have an MMSI not previously seen. But the difference is that the `Distinct` operator's output here is `IObservable`, so when `Distinct` lets an item through, the entire original message remains available. +So the effect is similar to before. Messages will be allowed through only if they have an MMSI not previously seen. But the difference is that the `Distinct` operator's output here is `IObservable`, so when `Distinct` lets an item through, the entire original message remains available. In addition to the standard LINQ `Distinct` operator, Rx also provides `DistinctUntilChanged`. This only lets through notifications when something has changed, which it achieved by filtering out only adjacent duplicates. For example, given the sequence `1,2,2,3,4,4,5,4,3,3,2,1,1` it would produce `1,2,3,4,5,4,3,2,1`. Whereas `Distinct` remembers every value ever produced, `DistinctUntilChanged` remembers only the most recently emitted value, and filters out new values if and only if they match that most recent value. diff --git a/content/06_Transformation.md b/content/06_Transformation.md index 46d74f9..f45a355 100644 --- a/content/06_Transformation.md +++ b/content/06_Transformation.md @@ -188,7 +188,7 @@ Rx is not like that. First, consumers don't get to tell sources when to produce The Rx version of the example we're currently examining is in fact one of these unusual cases where each of the sequences emits items as soon as it can. Logically speaking, all of the nested `IObservable` sequences are in progress concurrently. The result is a mess because each of the observable sources here attempts to produce every element as quickly as the source can consume them. The fact that they end up being interleaved has to do with the way these kinds of observable sources use Rx's _scheduler_ system, which we will describe in the [Scheduling and Threading chapter](11_SchedulingAndThreading.md). Schedulers ensure that even when we are modelling logically concurrent processes, the rules of Rx are maintained, and observers of the output of `SelectMany` will only be given one item at a time. The following marble diagram shows the events that lead to the scrambled output we see: -![An Rx marble diagram showing 7 observables. The first illustrates the Range operator producing the values 1 through 5. These are colour coded as follows: green, blue, yellow, red, and pink. These colours correspond to observables further down in the diagram, as will be described shortly. The items in this first observable are not evenly spaced—the 2nd value immediately follows the 1st, but there are gaps before the 3rd, 4th, and 5th items. These gaps correspond with activity shown further down in the diagram. Beneath the first observable is code invoking the SelectMany operator, passing this lamba: "i => new string((char)(i+64),i).ToObservable()". Beneath this are 6 more observables. The first 5 show the individual observables that the lambda produces for each of the inputs. These are colour coded to show how they correspond—the first observable's item is green, to indicate that this observable corresponds to the first item emitted by Range, the second observable's items are blue showing that it corresponds to the second item emitted by Range, and so on with the same colour sequence as described earlier for Range. Each observable's first item is aligned horizontally with the corresponding item from Range, signifying the fact that each one of these observables starts when the Range observable emits a value. These 5 observables show the values produced by the observable returned by the lambda for each of the 5 values from Range. The first of these child observables shows a single item with value 'A', vertically aligned with the value 1 from the Range observable to indicate that this item is produced immediately when Range produces its first value. This child observable then immediately ends, indicating that only one item was produced. The second child observable contains two 'B' values, the third three 'C' values, the fourth four 'D' values and the fifth give 'E' values. The horizontal positioning of these items indicates that all of first 6 observables in the diagram (the Range observable, and the 5 observables produced by the lambda) overlap to some extent. Initially this overlap is minimal: the first of the lambda-produced observables starts at the same time the Range produces its first value so these two observables overlap, but since this first child completes immediately it overlaps with nothing else. The second child starts when Range produces its second value, and manages to produce two values and then completes before anything else happens, so thus far, the child observables produced by the lambda overlap only with the Range one, and not with each other. However, when Range produces its third value, the resulting child observable produces two 'C' values, but the next thing that happens (as denoted by the horizontal position of the items) is that Range manages to produce its 4th value and its corresponding child observable produces the first of its 'D' values next. After this, the third child observable produces its third and final 'C'—so this third child overlaps not just with the Range observable, but also with the fourth child. Then the fourth observable produces its second 'D'. Then the Range produces its fifth and final value, and the corresponding child observable produces its first 'E'. Then the fourth and fifth child observable alternate, producing 'D', 'E' and 'D', at which point the fourth child observable is complete, and now the fifth child observable produces its final three 'E' values without interruption, because by this time it is the only observable still running. At the bottom of the diagram is the 7th observable representing the output of the SelectMany. This shows all the of the values from each of the 5 child observables each with the exact same horizontal position (signifying that the observable returned by SelectMany produces a value whenever any of its child observables produces a value). So we can see that this output observable produces the sequence 'ABBCCDCDEDEDEEE', which is exactly what we saw in the example output earlier.](GraphicsIntro/Ch06-Transformation-Marbles-Select-Many-Marbles.svg) +![An Rx marble diagram showing 7 observables. The first illustrates the Range operator producing the values 1 through 5. These are colour coded as follows: green, blue, yellow, red, and pink. These colours correspond to observables further down in the diagram, as will be described shortly. The items in this first observable are not evenly spaced. The 2nd value immediately follows the 1st, but there are gaps before the 3rd, 4th, and 5th items. These gaps correspond with activity shown further down in the diagram. Beneath the first observable is code invoking the SelectMany operator, passing this lamba: "i => new string((char)(i+64),i).ToObservable()". Beneath this are 6 more observables. The first 5 show the individual observables that the lambda produces for each of the inputs. These are colour coded to show how they correspond: the first observable's item is green, to indicate that this observable corresponds to the first item emitted by Range, the second observable's items are blue showing that it corresponds to the second item emitted by Range, and so on with the same colour sequence as described earlier for Range. Each observable's first item is aligned horizontally with the corresponding item from Range, signifying the fact that each one of these observables starts when the Range observable emits a value. These 5 observables show the values produced by the observable returned by the lambda for each of the 5 values from Range. The first of these child observables shows a single item with value 'A', vertically aligned with the value 1 from the Range observable to indicate that this item is produced immediately when Range produces its first value. This child observable then immediately ends, indicating that only one item was produced. The second child observable contains two 'B' values, the third three 'C' values, the fourth four 'D' values and the fifth give 'E' values. The horizontal positioning of these items indicates that all of first 6 observables in the diagram (the Range observable, and the 5 observables produced by the lambda) overlap to some extent. Initially this overlap is minimal: the first of the lambda-produced observables starts at the same time the Range produces its first value so these two observables overlap, but since this first child completes immediately it overlaps with nothing else. The second child starts when Range produces its second value, and manages to produce two values and then completes before anything else happens, so thus far, the child observables produced by the lambda overlap only with the Range one, and not with each other. However, when Range produces its third value, the resulting child observable produces two 'C' values, but the next thing that happens (as denoted by the horizontal position of the items) is that Range manages to produce its 4th value and its corresponding child observable produces the first of its 'D' values next. After this, the third child observable produces its third and final 'C', so this third child overlaps not just with the Range observable, but also with the fourth child. Then the fourth observable produces its second 'D'. Then the Range produces its fifth and final value, and the corresponding child observable produces its first 'E'. Then the fourth and fifth child observable alternate, producing 'D', 'E' and 'D', at which point the fourth child observable is complete, and now the fifth child observable produces its final three 'E' values without interruption, because by this time it is the only observable still running. At the bottom of the diagram is the 7th observable representing the output of the SelectMany. This shows all the of the values from each of the 5 child observables each with the exact same horizontal position (signifying that the observable returned by SelectMany produces a value whenever any of its child observables produces a value). So we can see that this output observable produces the sequence 'ABBCCDCDEDEDEEE', which is exactly what we saw in the example output earlier.](GraphicsIntro/Ch06-Transformation-Marbles-Select-Many-Marbles.svg) We can make a small tweak to prevent the child sequences all from trying to run at the same time. (This also uses `Observable.Repeat` instead of the rather indirect route of constructing a `string` and then calling `ToObserable` on that. I did that in earlier examples to emphasize the similarity with the LINQ to Objects example, but you wouldn't really do it that way in Rx.) @@ -251,7 +251,7 @@ IObservable onoffs = As you may recall, this example worked by creating a new, short-lived `IObservable` for each item produced by `src`. (These child sequences, represented by the `delta` range variable in the example, produce the value `1`, and then after the specified `minimumActivityPeriod`, they produce `-1`. This enabled us to keep count of the number of recent events emitted.) This is the _fanning out_ part, where items in a source sequence produce new observable sequences. `SelectMany` is crucial in these scenarios because it enables all of those new sequences to be flattened back out into a single output sequence. -The second place I used `SelectMany` was slightly different: it was the final example of the [**Representing Filesystem Events in Rx** section in Chapter 3](./03_CreatingObservableSequences.md#representing-filesystem-events-in-rx). Although that example also combined multiple observable sources into a single observable, that list of observables was fixed: there was one for each of the different events from `FileSystemWatcher`. It used a different operator `Merge` (which we'll get to in [Combining Sequences](09_CombiningSequences.md)), which was simpler to use in that scenario because you just pass it the list of all the observables you'd like to combine. However, because of a few other things this code wanted to do (including deferred startup, automated disposal, and sharing a single source when multiple subscribers were active), the particular combination of operators used to achieve this meant our merging code that returned an `IObservable`, needed to be invoked as a transforming step. If we'd just used `Select`, the result would have been an `IObservable>`. The structure of the code meant that it would only ever produce a single `IObservable`, so the double-wrapped type would be rather inconvenient. `SelectMany` is very useful in these scenarios—if composition of operators has introduced an extra layer of observables-in-observables that you don't want, `SelectMany` can unwrap one layer for you. +The second place I used `SelectMany` was slightly different: it was the final example of the [**Representing Filesystem Events in Rx** section in Chapter 3](./03_CreatingObservableSequences.md#representing-filesystem-events-in-rx). Although that example also combined multiple observable sources into a single observable, that list of observables was fixed: there was one for each of the different events from `FileSystemWatcher`. It used a different operator `Merge` (which we'll get to in [Combining Sequences](09_CombiningSequences.md)), which was simpler to use in that scenario because you just pass it the list of all the observables you'd like to combine. However, because of a few other things this code wanted to do (including deferred startup, automated disposal, and sharing a single source when multiple subscribers were active), the particular combination of operators used to achieve this meant our merging code that returned an `IObservable`, needed to be invoked as a transforming step. If we'd just used `Select`, the result would have been an `IObservable>`. The structure of the code meant that it would only ever produce a single `IObservable`, so the double-wrapped type would be rather inconvenient. `SelectMany` is very useful in these scenarios. If composition of operators has introduced an extra layer of observables-in-observables that you don't want, `SelectMany` can unwrap one layer for you. These two cases—fanning out then back in, and removing or avoiding a layer of observables of observables—come up quite often, which makes `SelectMany` an important method. (It's not surprising that I was unable to avoid using it in earlier examples.) diff --git a/content/07_Aggregation.md b/content/07_Aggregation.md index 183c6ad..360aebd 100644 --- a/content/07_Aggregation.md +++ b/content/07_Aggregation.md @@ -34,7 +34,7 @@ If you are expecting your sequence to have more values than a 32-bit signed inte ### Sum -The `Sum` operator adds together all the values in its source, producing the total as its only output. As with `Count`, Rx's `Sum` differs from most other LINQ providers in that it does not produce a scalar as its output—it produces an observable sequence that does nothing until its source completes. When the source completes, the observable returned by `Sum` produces a single value and then immediately completes. This example shows it in use: +The `Sum` operator adds together all the values in its source, producing the total as its only output. As with `Count`, Rx's `Sum` differs from most other LINQ providers in that it does not produce a scalar as its output. It produces an observable sequence that does nothing until its source completes. When the source completes, the observable returned by `Sum` produces a single value and then immediately completes. This example shows it in use: ```cs IObservable numbers = Observable.Range(1,5); @@ -99,14 +99,14 @@ IObservable widthOfWidestVessel = vesselDimensions .MaxBy(dimensions => checked((int)(dimensions.DimensionToPort + dimensions.DimensionToStarboard))); ``` -This is very similar to the example in the preceding section. We're working with a sequence where the element type is `IVesselDimensions`, so we've supplied a callback that extracts the value we want to use for comparison purposes. (The same callback as last time, in fact.) Just like `Max`, `MaxBy` is trying to work out which element produces the highest value when passed to this callback. It can't know which that is until the source completes—if the source hasn't completed yet, all it can know is the highest _yet_, but that might be exceeded by a future value. So as with all the other operators we've looked at in this chapter, this produces nothing until the source completes, which is why I've put a `Take(10)` in there. +This is very similar to the example in the preceding section. We're working with a sequence where the element type is `IVesselDimensions`, so we've supplied a callback that extracts the value we want to use for comparison purposes. (The same callback as last time, in fact.) Just like `Max`, `MaxBy` is trying to work out which element produces the highest value when passed to this callback. It can't know which that is until the source completes. If the source hasn't completed yet, all it can know is the highest _yet_, but that might be exceeded by a future value. So as with all the other operators we've looked at in this chapter, this produces nothing until the source completes, which is why I've put a `Take(10)` in there. However, the type of sequence we get is different. `Max` returned an `IObservable`, because it invokes the callback for every item in the source, and then produces the highest of the values that our callback returned. But with `MaxBy`, we get back an `IObservable` because `MaxBy` tells us which source element produced that value. Of course, there might be more than one item that has the highest width—there might be three equally large ships, for example. With `Max` this doesn't matter because it's only trying to return the actual value: it doesn't matter how many source items had the maximum value, because it's the same value in all cases. But with `MaxBy` we get back the original items that produce the maximum, and if there were three that all did this, we wouldn't want Rx to pick just one arbitrarily. -So unlike the other aggregation operators we've seen so far, an observable returned by `MinBy` or `MaxBy` doesn't necessarily produce just a single value. It might produce several. You might ask whether it really is an aggregation operator, since it's not reducing the input sequence to one output. But it is reducing it to a single value: the minimum (or maximum) returned by the callback. It's just that it presents the result slightly differently—it produces a sequence based on the result of the aggregation process. You could think of it as a combination of aggregation and filtering: it performs aggregation to determine the minimum or maximum, and then filters the source sequence down just to the elements for which the callback produces that value. +So unlike the other aggregation operators we've seen so far, an observable returned by `MinBy` or `MaxBy` doesn't necessarily produce just a single value. It might produce several. You might ask whether it really is an aggregation operator, since it's not reducing the input sequence to one output. But it is reducing it to a single value: the minimum (or maximum) returned by the callback. It's just that it presents the result slightly differently. It produces a sequence based on the result of the aggregation process. You could think of it as a combination of aggregation and filtering: it performs aggregation to determine the minimum or maximum, and then filters the source sequence down just to the elements for which the callback produces that value. **Note**: LINQ to Objects also defines [`MinBy`](https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable.minby) and [`MaxBy`](https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable.maxby) methods, but they are slightly different. These LINQ to Objects versions do in fact arbitrarily pick a single source element—if there are multiple source values all producing the minimum (or maximum) result, LINQ to Objects gives you just one whereas Rx gives you all of them. Rx defined its versions of these operators years before .NET 6.0 added their LINQ to Objects namesakes, so if you're wondering why Rx does it differently, the real question is why did LINQ to Objects not follow Rx's precedent. Presumably the .NET runtime library implementors decided they wanted to make `Min/MaxBy` feel as similar as possible to `Min` and `Max`. diff --git a/content/08_Partitioning.md b/content/08_Partitioning.md index d55b247..9cdf576 100644 --- a/content/08_Partitioning.md +++ b/content/08_Partitioning.md @@ -46,7 +46,7 @@ IObservable> shipStatusChangeObservables = .Skip(1)); ``` -This uses [`Select`](06_Transformation.md#select) (introduced in the Transformation chapter) to apply processing to each group that comes out of `perShipObservables`. Remember, each such group represents a distinct ship, so the callback we've passed to `Select` here will be invoked exactly once for each ship. This means it's now fine for us to use `DistinctUntilChanged`—the input this example supplies to `DistinctUntilChanged` is a sequence representing the messages from just one ship, so this will tell us when that ship changes its status. This is now able to do what we want because each ship gets its own instance of `DistinctUntilChanged`. +This uses [`Select`](06_Transformation.md#select) (introduced in the Transformation chapter) to apply processing to each group that comes out of `perShipObservables`. Remember, each such group represents a distinct ship, so the callback we've passed to `Select` here will be invoked exactly once for each ship. This means it's now fine for us to use `DistinctUntilChanged`. The input this example supplies to `DistinctUntilChanged` is a sequence representing the messages from just one ship, so this will tell us when that ship changes its status. This is now able to do what we want because each ship gets its own instance of `DistinctUntilChanged`. At this point we have an observable sequence of observable sequences. The outer sequence produces a nested sequence for each distinct ship that it sees, and that nested sequence will report `NavigationStatus` changes for that particular ship. @@ -60,7 +60,7 @@ IObservable shipStatusChanges = .Skip(1)); ``` -I've replaced `Select` with [`SelectMany`, also described in the Transformation chapter](06_Transformation.md#selectmany). As you may recall, `SelectMany` flattens nested observables back into a single flat sequence. You can see this reflected in the return type—now we've got just an `IObservable` instead of a sequence of sequences. +I've replaced `Select` with [`SelectMany`, also described in the Transformation chapter](06_Transformation.md#selectmany). As you may recall, `SelectMany` flattens nested observables back into a single flat sequence. You can see this reflected in the return type: now we've got just an `IObservable` instead of a sequence of sequences. Wait a second! Haven't I just undone the work that `GroupBy` did? I asked it to partition the events by vessel id, so why am I now recombining it back into a single, flat stream? Isn't that what I started with? @@ -107,7 +107,7 @@ It may seem like I'm making too big a deal of this, but it took so little effort It can take thousands of messages and perform the necessary processing to find the handful that really matter to us. -This is an example of the "fanning out, and then back in again" technique I described in ['The Significance of SelectMany' in the Transformation chapter](06_Transformation.md#the-significance-of-selectmany). This code uses `GroupBy` to fan out from a single observable to multiple observables. The key to this step is to create nested observables that provide the right level of detail for the processing we want to do—in this example that level of detail was "one specific ship" but it wouldn't have to be. You could imagine wanting to group messages by region—perhaps we're interesting in comparing different ports, so we'd want to partition the source based on whichever port a vessel is closest to, or perhaps by its destination port. (AIS provides a way for vessels to broadcast their intended destination.) Having partitioned the data by whatever criteria we require, we then define the processing to be applied for each group. In this case, we just watched for changes to `NavigationStatus`. This step will typically be where the reduction in volume happens. For example, most vessels will only change their `NavigationStatus` a few times a day at most. Having then reduced the notification stream to just those events we really care about, we can combine it back into a single stream that provides the high-value notifications we want. +This is an example of the "fanning out, and then back in again" technique I described in ['The Significance of SelectMany' in the Transformation chapter](06_Transformation.md#the-significance-of-selectmany). This code uses `GroupBy` to fan out from a single observable to multiple observables. The key to this step is to create nested observables that provide the right level of detail for the processing we want to do. In this example that level of detail was "one specific ship" but it wouldn't have to be. You could imagine wanting to group messages by region—perhaps we're interesting in comparing different ports, so we'd want to partition the source based on whichever port a vessel is closest to, or perhaps by its destination port. (AIS provides a way for vessels to broadcast their intended destination.) Having partitioned the data by whatever criteria we require, we then define the processing to be applied for each group. In this case, we just watched for changes to `NavigationStatus`. This step will typically be where the reduction in volume happens. For example, most vessels will only change their `NavigationStatus` a few times a day at most. Having then reduced the notification stream to just those events we really care about, we can combine it back into a single stream that provides the high-value notifications we want. Now that we've seen an example, let's look at `GroupBy` in a bit more detail. It comes in a few different flavours. We just used this overload: @@ -117,7 +117,7 @@ public static IObservable> GroupBy keySelector) ``` -That overload uses whatever the default comparison behaviour is for your chosen key type. In our case we used `uint` (the type of the `Mmsi` property that uniquely identifies a vessel in an AIS message), which is just a number, so it's an intrinsically comparable type. In some cases you might want non-standard comparison—for example, if you use `string` as a key, you might want to be able to specify a locale-specific case-insensitive comparison. For these scenarios, there's an overload that takes a comparer: +That overload uses whatever the default comparison behaviour is for your chosen key type. In our case we used `uint` (the type of the `Mmsi` property that uniquely identifies a vessel in an AIS message), which is just a number, so it's an intrinsically comparable type. In some cases you might want non-standard comparison. For example, if you use `string` as a key, you might want to be able to specify a locale-specific case-insensitive comparison. For these scenarios, there's an overload that takes a comparer: ```cs public static IObservable> GroupBy( @@ -183,7 +183,7 @@ More generally, if you have lots of sequences coming into existence as part of a ## Buffer -The `Buffer` operator is useful if you need to deal with events in batches. This can be useful for performance, especially if you're storing data about events. Take the AIS example. If you wanted to log notifications to a persistent store, the cost of storing a single record is likely to be almost identical to the cost of storing several. Most storage devices operate with blocks of data often several kilobytes in size, so the amount of work required to store a single byte of data is often identical to the amount of work required to store several thousand bytes. The pattern of buffering up data until we have a reasonably large chunk of work crops up all the time in programming—the .NET runtime library's `Stream` class has built-in buffering for exactly this reason, so it's no surprise that it's built into Rx. +The `Buffer` operator is useful if you need to deal with events in batches. This can be useful for performance, especially if you're storing data about events. Take the AIS example. If you wanted to log notifications to a persistent store, the cost of storing a single record is likely to be almost identical to the cost of storing several. Most storage devices operate with blocks of data often several kilobytes in size, so the amount of work required to store a single byte of data is often identical to the amount of work required to store several thousand bytes. The pattern of buffering up data until we have a reasonably large chunk of work crops up all the time in programming. The .NET runtime library's `Stream` class has built-in buffering for exactly this reason, so it's no surprise that it's built into Rx. Efficiency concerns are not the only reason you might want to process multiple events in one batch instead of individual ones. Suppose you wanted to generate a stream of continuously updated statistics about some source of data. By carving the source into chunks with `Buffer`, you can calculate, say, an average over the last 10 events. @@ -232,7 +232,7 @@ chunks completed `Buffer` had no choice here because the source completed, and if it hadn't produced that final under-sized chunk, we would never have seen the final item. But apart from this end-of-source case, this overload of `Buffer` waits until it has collected enough elements to fill a buffer of the specified size before passing it on. That means that `Buffer` introduces a delay. If source items are quite far apart (e.g., when a ship is not moving it might only report AIS navigation data every few minutes) this can lead to long delays. -In some cases, we might want to handle multiple events in a batch when a source is busy without having to wait a long time when the source is operating more slowly. This would be useful in a user interface—if you want to provide fresh information, it might be better to accept an undersized chunk so that you can provide more timely information. For these scenarios, `Buffer` offers overloads that accept a `TimeSpan`: +In some cases, we might want to handle multiple events in a batch when a source is busy without having to wait a long time when the source is operating more slowly. This would be useful in a user interface. If you want to provide fresh information, it might be better to accept an undersized chunk so that you can provide more timely information. For these scenarios, `Buffer` offers overloads that accept a `TimeSpan`: ```csharp public static IObservable> Buffer( @@ -259,7 +259,7 @@ The second overload, taking both a `timespan` and a `count`, essentially imposes ### Overlapping buffers -In the preceding section, I showed an example that collected chunks of 4 `IVesselNavigation` entries for a particular vessel, and calculated the average speed. This sort of averaging over multiple samples can be a useful way of smoothing out slight random variations in readings. So the goal in this case wasn't to process items in batches for efficiency—it was to enable a particular kind of calculation. +In the preceding section, I showed an example that collected chunks of 4 `IVesselNavigation` entries for a particular vessel, and calculated the average speed. This sort of averaging over multiple samples can be a useful way of smoothing out slight random variations in readings. So the goal in this case wasn't to process items in batches for efficiency, it was to enable a particular kind of calculation. But there was a problem with the example: because it was averaging 4 readings, it produced an output only once every 4 input messages. And since vessels might report their speed only once every few minutes if they are not moving, we might be waiting a very long time. @@ -311,7 +311,7 @@ Ship 257798800 changed status from UnderwayUsingEngine to Moored at 30/06/2023 13:38:39 +00:00 ``` -This change enabled us to remove the `Skip`—the earlier example had that because we can't tell whether the first message we receive from any particular ship after startup represents a change. But since we're telling `Buffer` we want pairs of messages, it won't give us anything for any single ship until it has seen messages with two different statuses. +This change enabled us to remove the `Skip`. The earlier example had that because we can't tell whether the first message we receive from any particular ship after startup represents a change. But since we're telling `Buffer` we want pairs of messages, it won't give us anything for any single ship until it has seen messages with two different statuses. You can also ask for a sliding window defined by time instead of counts using this overload: diff --git a/content/09_CombiningSequences.md b/content/09_CombiningSequences.md index 8c89e6a..5297959 100644 --- a/content/09_CombiningSequences.md +++ b/content/09_CombiningSequences.md @@ -8,7 +8,7 @@ Data sources are everywhere, and sometimes we need to consume data from more tha Earlier chapters have also shown some examples of the _fan out and back in_ style of data processing, where we partition data, and perform processing on each partition to convert high-volume data into lower-volume higher-value events before recombining. This ability to restructure streams greatly enhances the benefits of operator composition. If Rx only enabled us to apply composition as a simple linear processing chain, it would be a good deal less powerful. Being able to pull streams apart gives us much more flexibility. So even when there is a single source of events, we often still need to combine multiple observable streams as part of our processing. Sequence composition enables you to create complex queries across multiple data sources. This unlocks the possibility to write some very powerful yet succinct code. -We've already used [`SelectMany`](06_Transformation.md#selectmany) in earlier chapters. This is one of the fundamental operators in Rx—as we saw in the [Transformation chapter](06_Transformation.md), it's possible to build several other operators from `SelectMany`, and its ability to combine streams is part of what makes it powerful. But there are several more specialized combination operators available, which make it easier to solve certain problems than it would be using `SelectMany`. Also, some operators we've seen before (including `TakeUntil` and `Buffer`) have overloads we've not yet explored that can combine multiple sequences. +We've already used [`SelectMany`](06_Transformation.md#selectmany) in earlier chapters. This is one of the fundamental operators in Rx. As we saw in the [Transformation chapter](06_Transformation.md), it's possible to build several other operators from `SelectMany`, and its ability to combine streams is part of what makes it powerful. But there are several more specialized combination operators available, which make it easier to solve certain problems than it would be using `SelectMany`. Also, some operators we've seen before (including `TakeUntil` and `Buffer`) have overloads we've not yet explored that can combine multiple sequences. ## Sequential Combination @@ -66,7 +66,7 @@ This highlights the fact that that being a cold source, `cold` provides items se #### Concatenating Multiple Sources -What if you wanted to concatenate more than two sequences? `Concat` has an overload accepting multiple observable sequences as an array. This is annotated with the `params` keyword, so you don't need to construct the array explicitly—you can just pass any number of arguments, and the C# compiler will generate the code to create the array for you. There's also an overload taking an `IEnumerable>`, in case the observables you want to concatenate are already in some collection. +What if you wanted to concatenate more than two sequences? `Concat` has an overload accepting multiple observable sequences as an array. This is annotated with the `params` keyword, so you don't need to construct the array explicitly. You can just pass any number of arguments, and the C# compiler will generate the code to create the array for you. There's also an overload taking an `IEnumerable>`, in case the observables you want to concatenate are already in some collection. ```cs public static IObservable Concat( @@ -189,7 +189,7 @@ public static IObservable GetLastKnownAndSubsequenceNavigatio } ``` -`StartWith` might remind you of [`BehaviorSubject`](03_CreatingObservableSequences.md#behaviorsubject), because that also ensures that consumers receive a value as soon as they subscribe. It's not quite the same—`BehaviorSubject` caches the last value its own source emits. You might thank that would make it a better way to implement this vessel navigation example. However, since this example is able to return a source for any vessel (the `mmsi` argument is a [Maritime Mobile Service Identity](https://en.wikipedia.org/wiki/Maritime_Mobile_Service_Identity) uniquely identifying a vessel) it would need to keep a `BehaviorSubject` running for every single vessel you were interested in, which might be impractical. +`StartWith` might remind you of [`BehaviorSubject`](03_CreatingObservableSequences.md#behaviorsubject), because that also ensures that consumers receive a value as soon as they subscribe. It's not quite the same: `BehaviorSubject` caches the last value its own source emits. You might thank that would make it a better way to implement this vessel navigation example. However, since this example is able to return a source for any vessel (the `mmsi` argument is a [Maritime Mobile Service Identity](https://en.wikipedia.org/wiki/Maritime_Mobile_Service_Identity) uniquely identifying a vessel) it would need to keep a `BehaviorSubject` running for every single vessel you were interested in, which might be impractical. `BehaviorSubject` can hold onto only one value, which is fine for this AIS scenario, and `Prepend` shares this limitation. But what if you need a source to begin with some particular sequence? @@ -243,7 +243,7 @@ public static IObservable Repeat( this IObservable source) ``` -`Repeat` resubscribes to the source for each repetition. This means that this will only strictly repeat if the source produces the same items each time you subscribe—unlike the [`ReplaySubject`](03_CreatingObservableSequences.md#replaysubject), this doesn't store and replay the items that emerge from the source. This means that you normally won't want to call `Repeat` on a hot source. (If you really want repetition of the output of a hot source, a combination of [`Replay`](15_PublishingOperators.md#replay) and `Repeat` might fit the bill.) +`Repeat` resubscribes to the source for each repetition. This means that this will only strictly repeat if the source produces the same items each time you subscribe. Unlike the [`ReplaySubject`](03_CreatingObservableSequences.md#replaysubject), this doesn't store and replay the items that emerge from the source. This means that you normally won't want to call `Repeat` on a hot source. (If you really want repetition of the output of a hot source, a combination of [`Replay`](15_PublishingOperators.md#replay) and `Repeat` might fit the bill.) If you use the overload that repeats indefinitely, then the only way the sequence will stop is if there is an error or the subscription is disposed of. The overload that specifies a repeat count will stop on error, un-subscription, or when it reaches that count. This example shows the sequence [0,1,2] being repeated three times. @@ -377,7 +377,7 @@ Remember that `GetSequences` produces its first two observables as soon as it is The `Merge` extension method takes multiple sequences as its input. Any time any of those input sequences produces a value, the observable returned by `Merge` produces that same value. If the input sequences produce values at the same time on different threads, `Merge` handles this safely, ensuring that it delivers items one at a time. -Since `Merge` returns a single observable sequence that includes all of the values from all of its input sequences, there's a sense in which it is similar to `Concat`. But whereas `Concat` waits until each input sequence completes before moving onto the next, `Merge` supports concurrently active sequences. As soon as you subscribe to the observable returned by `Merge`, it immediately subscribes to all of its inputs, forwarding everything any of them produces. This marble diagram shows two sequences, `s1` and `s2`, running concurrently and `r` shows the effect of combining these with `Merge`—the values from both source sequences emerge from the merged sequence. +Since `Merge` returns a single observable sequence that includes all of the values from all of its input sequences, there's a sense in which it is similar to `Concat`. But whereas `Concat` waits until each input sequence completes before moving onto the next, `Merge` supports concurrently active sequences. As soon as you subscribe to the observable returned by `Merge`, it immediately subscribes to all of its inputs, forwarding everything any of them produces. This marble diagram shows two sequences, `s1` and `s2`, running concurrently and `r` shows the effect of combining these with `Merge`: the values from both source sequences emerge from the merged sequence. ![](GraphicsIntro/Ch09-CombiningSequences-Marbles-Merge-Marbles.svg) @@ -438,7 +438,7 @@ public static IObservable MyMerge(this IObservable> sources sources.SelectMany(source => source); ``` -As well as illustrating that we don't technically need Rx to provide that last `Merge` for us, it's also a good illustration of why it's helpful that it does. It's not immediately obvious what this does—why are we passing a lambda that just returns its argument? Unless you've seen this before, it can take some thought to work out that `SelectMany` expects us to pass a callback that it invokes for each incoming item, but that our input items are already nested sequences, so we can just return each item directly, and `SelectMany` will then take that and merge everything it produces into its output stream. And even if you have internalized `SelectMany` so completely that you know right away that this will just flatten `sources`, you'd still probably find `Observable.Merge(sources)` a more direct expression of intent. (Also, since `Merge` is a more specialized operator, Rx is able to provide a very slightly more efficient implementation of it than the `SelectMany` version shown above.) +As well as illustrating that we don't technically need Rx to provide that last `Merge` for us, it's also a good illustration of why it's helpful that it does. It's not immediately obvious what this does. Why are we passing a lambda that just returns its argument? Unless you've seen this before, it can take some thought to work out that `SelectMany` expects us to pass a callback that it invokes for each incoming item, but that our input items are already nested sequences, so we can just return each item directly, and `SelectMany` will then take that and merge everything it produces into its output stream. And even if you have internalized `SelectMany` so completely that you know right away that this will just flatten `sources`, you'd still probably find `Observable.Merge(sources)` a more direct expression of intent. (Also, since `Merge` is a more specialized operator, Rx is able to provide a very slightly more efficient implementation of it than the `SelectMany` version shown above.) If we again reuse the `GetSequences` method, we can see how the `Merge` operator works with a sequence of sequences. diff --git a/content/10_Part3.md b/content/10_Part3.md index 3f3e8a3..2da241f 100644 --- a/content/10_Part3.md +++ b/content/10_Part3.md @@ -4,7 +4,7 @@ title: Getting pragmatic # PART 3 - Getting pragmatic. -The first part of this book focused on the basic ideas and types of Rx. In the second part, I showed the operators Rx offers, enabling us to define the transformations and computations we want to apply to our source data. This second part was essentially functional programming—Rx's operators are mostly like mathematical functions, in that they will invariably behave in the same way for particular inputs. They are unaffected by the state of the world around them, and they also do nothing to change its state. In functional programming, such mechanisms are sometimes described as _pure_. +The first part of this book focused on the basic ideas and types of Rx. In the second part, I showed the operators Rx offers, enabling us to define the transformations and computations we want to apply to our source data. This second part was essentially functional programming. Rx's operators are mostly like mathematical functions, in that they will invariably behave in the same way for particular inputs. They are unaffected by the state of the world around them, and they also do nothing to change its state. In functional programming, such mechanisms are sometimes described as _pure_. This _purity_ can help us understand what our code will do. It means we don't need to know about the state of the rest of our program in order to understand how one particular part functions. However, code that is completely detached from the outside world is unlikely to achieve anything useful. In practice, we need to connect these pure computations with more pragmatic concerns. The [Creating Observable Sequences chapter](03_CreatingObservableSequences.md) already showed how to define observable streams, so we've already looked at how to connect real world inputs into the world of Rx. But what about the other end? How do we do something useful with the results of our processing? diff --git a/content/11_SchedulingAndThreading.md b/content/11_SchedulingAndThreading.md index 74d76ab..0c06c95 100644 --- a/content/11_SchedulingAndThreading.md +++ b/content/11_SchedulingAndThreading.md @@ -12,7 +12,7 @@ So far, we have managed to avoid any explicit usage of threading or concurrency. Rx does not impose constraints on which threads we use. An `IObservable` is free to invoke its subscribers' `OnNext/Completed/Error` methods on any thread, perhaps a different thread for each call. Despite this free-for-all, there is one aspect of Rx that prevents chaos: observable sources must obey the [Fundamental Rules of Rx Sequences](02_KeyTypes.md#the-fundamental-rules-of-rx-sequences) under all circumstances. -When we first explored these rules, we focused on how they determine the ordering of calls into any single observer—there can be any number of calls to `OnNext`, but once either `OnError` or `OnCompleted` have been invoked, there must be no further calls. But now that we're looking at concurrency, a different aspect of these rules becomes more important: for any single subscription, an observable source must not make concurrent calls into that subscription's observer. So if a source calls `OnNext`, it must wait until that call returns before either calling `OnNext` again, or calling `OnError` or `OnComplete`. +When we first explored these rules, we focused on how they determine the ordering of calls into any single observer. There can be any number of calls to `OnNext`, but once either `OnError` or `OnCompleted` have been invoked, there must be no further calls. But now that we're looking at concurrency, a different aspect of these rules becomes more important: for any single subscription, an observable source must not make concurrent calls into that subscription's observer. So if a source calls `OnNext`, it must wait until that call returns before either calling `OnNext` again, or calling `OnError` or `OnComplete`. The upshot for observers is that as long as your observer is involved in just one subscription, it will only ever be asked to deal with one thing at a time. If doesn't matter if the source to which it is subscribed is a long and complex processing chain involving many different operators. Even if you build that source by combining multiple inputs (e.g., using [`Merge`](09_CombiningSequences.md#merge)), the fundamental rules require that if you called `Subscribe` just once on a single `IObservable`, that source is never allowed to make multiple concurrent calls into your `IObserver` methods. @@ -28,7 +28,7 @@ source .Subscribe(x => Console.WriteLine(x)); ``` -When that call to `Subscribe` happens, we end up with a chain of observers—the Rx-supplied observer that will invoke our callback was passed to the observable returned by `Take`, which will in turn create an observer that subscribed to the observable returned by `Buffer`, which will in turn create an observer subscribed to the `Where` observable, which will have created yet another observer which is subscribed to `source`. +When that call to `Subscribe` happens, we end up with a chain of observers. The Rx-supplied observer that will invoke our callback was passed to the observable returned by `Take`, which will in turn create an observer that subscribed to the observable returned by `Buffer`, which will in turn create an observer subscribed to the `Where` observable, which will have created yet another observer which is subscribed to `source`. So when `source` decides to produce an item, it will invoke the `Where` operator's observer's `OnNext`. That will invoke the predicate, and if the `MessageType` is indeed 3, the `Where` observer will call `OnNext` on the `Buffer`'s observer, and it will do this on the same thread. The `Where` observer's `OnNext` isn't going to return until the `Buffer` observer's `OnNext` returns. Now if the `Buffer` observer determines that it has completely filled a buffer (e.g., it just received its 10th item), then it is also not going to return yet—it's going to invoke the `Take` observer's `OnNext`, and as long as `Take` hasn't already received 20 buffers, it's going to call `OnNext` on the Rx-supplied observer that will invoke our callback. @@ -42,7 +42,7 @@ So for the source notifications that make it all the way through to that `Consol `Subscribe` observer, which calls our lambda ``` -This is all happening on one thread. Most Rx operators don't have any one particular thread that they call home. They just do their work on whatever thread the call comes in on. This makes Rx pretty efficient—passing data from one operator to the next merely involves a method call, and those are pretty fast. (In fact, there are typically a few more layers. Rx tends to add a few wrappers to handle errors and early unsubscription. So the call stack will look a bit more complex than what I've just shown. But it's still typically all just method calls.) +This is all happening on one thread. Most Rx operators don't have any one particular thread that they call home. They just do their work on whatever thread the call comes in on. This makes Rx pretty efficient. Passing data from one operator to the next merely involves a method call, and those are pretty fast. (In fact, there are typically a few more layers. Rx tends to add a few wrappers to handle errors and early unsubscription. So the call stack will look a bit more complex than what I've just shown. But it's still typically all just method calls.) You will sometimes hear Rx described as having a _free threaded_ model. All that means is that operators don't generally care what thread they use. As we will see, there are exceptions, but this direct calling by one operator of the next is the norm. @@ -177,7 +177,7 @@ Received 5 on thread: 1 Subscribe returned ``` -Looking at the first two items in our list of what schedulers do, we can see that the context in which this has executed the work is the thread on which I called `Subscribe`. And as for when it has decided to execute the work, it has decided to do it all before `Subscribe` returns. So you might think that `Range` immediately produces all of the items we've asked for and then returns. However, it's not quite as simple as that. Let's look at what happens if we have multiple `Range` instances running simultaneously. This introduces an extra operator—a `SelectMany` that calls `Range` again: +Looking at the first two items in our list of what schedulers do, we can see that the context in which this has executed the work is the thread on which I called `Subscribe`. And as for when it has decided to execute the work, it has decided to do it all before `Subscribe` returns. So you might think that `Range` immediately produces all of the items we've asked for and then returns. However, it's not quite as simple as that. Let's look at what happens if we have multiple `Range` instances running simultaneously. This introduces an extra operator: a `SelectMany` that calls `Range` again: ```cs Observable @@ -276,7 +276,7 @@ Received 54 on thread: 1 Subscribe returned ``` -By specifying `ImmediateScheduler.Instance` in the innermost call to `Observable.Range` we've asked for a particular policy: this invokes all work on the caller's thread, and it always does so immediately. There are a couple of reasons this is not `Range`'s default. (Its default is `Scheduler.CurrentThread`, which always returns an instance of `CurrentThreadScheduler`.) First, `ImmediateScheduler.Instance` can end up causing fairly deep call stacks—most of the other schedulers maintain work queues, so if one operator decides it has new work to do while another is in the middle of doing something (e.g., a nested `Range` operator decides to start emitting its values), instead of starting that work immediately (which will involve invoking the method that will do the work) that work can be put on a queue instead, enabling the work already in progress to finish before starting on the next thing. Using the immediate scheduler everywhere can cause stack overflows when queries become complex. The second reason `Range` does not use the immediate scheduler by default is so that when multiple observables are all active at once, they can all make some progress—`Range` produces all of its items as quickly as it can, so it could end up starving other operators of CPU time if it didn't use a scheduler that enabled operators to take it in turns. +By specifying `ImmediateScheduler.Instance` in the innermost call to `Observable.Range` we've asked for a particular policy: this invokes all work on the caller's thread, and it always does so immediately. There are a couple of reasons this is not `Range`'s default. (Its default is `Scheduler.CurrentThread`, which always returns an instance of `CurrentThreadScheduler`.) First, `ImmediateScheduler.Instance` can end up causing fairly deep call stacks. Most of the other schedulers maintain work queues, so if one operator decides it has new work to do while another is in the middle of doing something (e.g., a nested `Range` operator decides to start emitting its values), instead of starting that work immediately (which will involve invoking the method that will do the work) that work can be put on a queue instead, enabling the work already in progress to finish before starting on the next thing. Using the immediate scheduler everywhere can cause stack overflows when queries become complex. The second reason `Range` does not use the immediate scheduler by default is so that when multiple observables are all active at once, they can all make some progress—`Range` produces all of its items as quickly as it can, so it could end up starving other operators of CPU time if it didn't use a scheduler that enabled operators to take it in turns. Notice that the `Subscribe returned` message appears last in both examples. So although the `CurrentThreadScheduler` isn't quite as eager as the immediate scheduler, it still won't return to its caller until it has completed all outstanding work. It maintains a work queue, enabling slightly more fairness, and avoiding stack overflows, but as soon as anything asks the `CurrentThreadScheduler` to do something, it won't return until it has drained its queue. @@ -408,7 +408,7 @@ So once again,the `CurrentThreadScheduler` will ask itself "Am I already in the Having scheduled the work item that is going to generate its second value (`2`), the `Range` operator returns. Remember, the code in the `Range` operator that was running at this point was the callback for the first scheduled work item, so it's returning to the `CurrentThreadScheduler`—we are back inside its `Schedule` method (which was invoked by the range operator's `Subscribe` method). -At this point, the `CurrentThreadScheduler` does not return from `Schedule` because it checks its work queue, and will see that there are now two items in the queue. (There's the work item that the nested `Range` observable scheduled to generate its first value, and there's also the work item that the top-level `Range` observable just scheduled to generate its second value.) The `CurrentThreadScheduler` will now execute the first of these—the nested `Range` operator now gets to generate its first value (which will be `10`), so it calls `OnNext` on the observer supplied by `SelectMany`, which will then call its observer, which was supplied thanks to the top-level call to `Subscribe` in the example. And that observer will just call the lambda we passed to `Subscribe`, causing our `Console.WriteLine` to run. After that returns, the nested `Range` operator will schedule another work item to generate its second item. Again, the `CurrentThreadScheduler` will realise that it's already in the middle of handling a work item on this thread, so it just puts it in the queue and then returns immediately from `Schedule`. The nested `Range` operator is now done for this iteration so it returns back to the scheduler. The scheduler will now pick up the next item in the queue, which in this case is the work item added by the top-level `Range` to produce the second item. +At this point, the `CurrentThreadScheduler` does not return from `Schedule` because it checks its work queue, and will see that there are now two items in the queue. (There's the work item that the nested `Range` observable scheduled to generate its first value, and there's also the work item that the top-level `Range` observable just scheduled to generate its second value.) The `CurrentThreadScheduler` will now execute the first of these: the nested `Range` operator now gets to generate its first value (which will be `10`), so it calls `OnNext` on the observer supplied by `SelectMany`, which will then call its observer, which was supplied thanks to the top-level call to `Subscribe` in the example. And that observer will just call the lambda we passed to `Subscribe`, causing our `Console.WriteLine` to run. After that returns, the nested `Range` operator will schedule another work item to generate its second item. Again, the `CurrentThreadScheduler` will realise that it's already in the middle of handling a work item on this thread, so it just puts it in the queue and then returns immediately from `Schedule`. The nested `Range` operator is now done for this iteration so it returns back to the scheduler. The scheduler will now pick up the next item in the queue, which in this case is the work item added by the top-level `Range` to produce the second item. And so it continues. This queuing of work items when work is already in progress is what enables multiple observable sources to make progress in parallel. @@ -433,7 +433,7 @@ public EventLoopScheduler() public EventLoopScheduler(Func<ThreadStart, Thread> threadFactory) ``` -The first creates a thread for you. The second lets you control the thread creation process—it invokes the callback you supply, and it will pass this its own callback that you are required to run on the newly created thread. +The first creates a thread for you. The second lets you control the thread creation process. It invokes the callback you supply, and it will pass this its own callback that you are required to run on the newly created thread. The `EventLoopScheduler` implements `IDisposable`, and calling Dispose will allow the thread to terminate. This can work nicely with the `Observable.Using` method. The following example shows how to use an `EventLoopScheduler` to iterate over all contents of an `IEnumerable` on a dedicated thread, ensuring that the thread exits once we have finished: @@ -454,7 +454,7 @@ Although each call to `Schedule` creates a new thread, the `NewThreadScheduler` ### SynchronizationContextScheduler -This invokes all work through a [`SynchronizationContext`](https://learn.microsoft.com/en-us/dotnet/api/system.threading.synchronizationcontext). This is useful in user interface scenarios—most .NET client-side user interface frameworks make a `SynchronizationContext` available that can be used to invoke callbacks in a context suitable for making changes to the UI. (Typically this involves invoking them on the correct thread, but individual implementations can decide what constitutes the appropriate context.) +This invokes all work through a [`SynchronizationContext`](https://learn.microsoft.com/en-us/dotnet/api/system.threading.synchronizationcontext). This is useful in user interface scenarios. Most .NET client-side user interface frameworks make a `SynchronizationContext` available that can be used to invoke callbacks in a context suitable for making changes to the UI. (Typically this involves invoking them on the correct thread, but individual implementations can decide what constitutes the appropriate context.) ### TaskPoolScheduler @@ -478,7 +478,7 @@ The Rx libraries define several schedulers that virtualize time, including `Hist ## SubscribeOn and ObserveOn -So far, I've talked about why some Rx sources need access to schedulers—this is necessary for timing-related behaviour, and also for sources that produce items as quickly as possible. But remember, schedulers control three things: +So far, I've talked about why some Rx sources need access to schedulers. This is necessary for timing-related behaviour, and also for sources that produce items as quickly as possible. But remember, schedulers control three things: - determining the context in which to execute work (e.g., a certain thread) - deciding when to execute work (e.g., immediately, or deferred) @@ -605,7 +605,7 @@ If you're using Rx in a user interface, `ObserveOn` is useful when you are deali `SubscribeOn` can also be useful in user interfaces as a way to ensure that any initialization work that an observable source does to get started does not happen on the UI thread. -Most UI frameworks designate one particular thread for receiving notifications from the user and also for updating the UI, for any one window. It is critical to avoid blocking this UI thread, as doing so leads to a poor user experience—if you are doing work on the UI thread, it will be unavailable for responding to user input until that work is done. As a general rule, if you cause a user interface to become unresponsive for longer than 100ms, users will become irritated, so you should not be perform any work that will take longer than this on the UI thread. When Microsoft first introduced its application store (which came in with Windows 8) they specified an even more stringent limit—if your application blocked the UI thread for longer than 50ms, it might not be allowed into the store. With the processing power offered by modern processors, you can achieve a lot of processing 50ms—even on the relatively low-powered processors in mobile devices that's long enough to execute millions of instructions. However, anything involving I/O (reading or writing files, or waiting for a response from any kind of network service) should not be done on the UI thread. The general pattern for creating responsive UI applications is: +Most UI frameworks designate one particular thread for receiving notifications from the user and also for updating the UI, for any one window. It is critical to avoid blocking this UI thread, as doing so leads to a poor user experience—if you are doing work on the UI thread, it will be unavailable for responding to user input until that work is done. As a general rule, if you cause a user interface to become unresponsive for longer than 100ms, users will become irritated, so you should not be perform any work that will take longer than this on the UI thread. When Microsoft first introduced its application store (which came in with Windows 8) they specified an even more stringent limit: if your application blocked the UI thread for longer than 50ms, it might not be allowed into the store. With the processing power offered by modern processors, you can achieve a lot of processing 50ms. Even on the relatively low-powered processors in mobile devices that's long enough to execute millions of instructions. However, anything involving I/O (reading or writing files, or waiting for a response from any kind of network service) should not be done on the UI thread. The general pattern for creating responsive UI applications is: - receive a notification about some sort of user action - if slow work is required, do this on a background thread @@ -651,11 +651,11 @@ sequence.OnNext(1); Console.WriteLine("I can never execute...."); ``` -The `First` method will not return until its source emits a sequence. But the code that causes this source to emit sequence is on the line _after_ the call to `First`. So the source can't emit a sequence until `First` returns. This style of deadlock, with two parties, each unable to proceed until the other proceeds, is often known as a _deadly embrace_. As this code shows, it's entirely possible for a deadly embrace to occur even in single threaded code. In fact, the single threaded nature of this code is what enables deadlock: we have two operations (waiting for the first notification, and sending the first notification) and only a single thread. That doesn't have to be a problem—it we'd used `FirstAsync` and attached an observer to that, `FirstAsync` would have executed its logic when the source `Subject` invoked its `OnNext`. But that is more complex than just calling `First` and assigning the result into a variable. +The `First` method will not return until its source emits a sequence. But the code that causes this source to emit sequence is on the line _after_ the call to `First`. So the source can't emit a sequence until `First` returns. This style of deadlock, with two parties, each unable to proceed until the other proceeds, is often known as a _deadly embrace_. As this code shows, it's entirely possible for a deadly embrace to occur even in single threaded code. In fact, the single threaded nature of this code is what enables deadlock: we have two operations (waiting for the first notification, and sending the first notification) and only a single thread. That doesn't have to be a problem. If we'd used `FirstAsync` and attached an observer to that, `FirstAsync` would have executed its logic when the source `Subject` invoked its `OnNext`. But that is more complex than just calling `First` and assigning the result into a variable. This is an oversimplified example to illustrate the behaviour, and we would never write such code in production. (And even if we did, it fails so quickly and consistently that we would immediately become aware of a problem.) But in real application code, these kinds of problems can be harder to spot. Race conditions often slip into the system at integration points, so the problem isn't necessarily evidence in any one piece of code: timing problems can emerge as a result of how we plug multiple pieces of code together. -The next example may be a little harder to detect, but is only small step away from our first, unrealistic example. The basic idea is that we've got a subject that represents button clicks in a user interface. Event handlers representing user input are invoked by the UI framework—we just provide the framework with event handler methods, and it calls them for us whenever the event of interest, such as a button being clicked, occurs. This code calls `First` on the subject representing clicks, but it's less obvious that this might cause a problem here than it was in the preceding example: +The next example may be a little harder to detect, but is only small step away from our first, unrealistic example. The basic idea is that we've got a subject that represents button clicks in a user interface. Event handlers representing user input are invoked by the UI framework. We just provide the framework with event handler methods, and it calls them for us whenever the event of interest, such as a button being clicked, occurs. This code calls `First` on the subject representing clicks, but it's less obvious that this might cause a problem here than it was in the preceding example: ```cs public Window1() @@ -688,7 +688,7 @@ public string Value } ``` -The earlier example called the subject's `OnNext` after `First` returned, making it relatively straightforward to see that if `First` didn't return, then the subject wouldn't emit a notification. But that's not as obvious here—the `MyButton_Click` event handler will be set up inside the call to `InitializeComponent` (as is normal in WPF code), so apparently we've done the necessary setup to enable events to flow. By the time we reach this call to `First`, the UI framework already knows that if the user clicks `MyButton`, it should call `MyButton_Click`, and that method is going to cause the subject to emit a value. +The earlier example called the subject's `OnNext` after `First` returned, making it relatively straightforward to see that if `First` didn't return, then the subject wouldn't emit a notification. But that's not as obvious here. The `MyButton_Click` event handler will be set up inside the call to `InitializeComponent` (as is normal in WPF code), so apparently we've done the necessary setup to enable events to flow. By the time we reach this call to `First`, the UI framework already knows that if the user clicks `MyButton`, it should call `MyButton_Click`, and that method is going to cause the subject to emit a value. There's nothing intrinsically wrong with that use of `First`. (Risky, yes, but there are scenarios in which that exact code would be absolutely fine.) The problem is the context in which we've used it. This code is in the constructor of a UI element, and these always run on a particular thread associated with that window's UI elements. (This happens to be a WPF example, but other UI frameworks work the same way.) And that's the same thread that the UI framework will use to deliver notifications about user input. If we block this UI thread, we prevent the UI framework from invoking our button click event handler. So this blocking call is waiting for an event that can only be raised from the very thread that it is blocking, thus creating a deadlock. @@ -779,7 +779,7 @@ This does leave one question unanswered: _how_ should the top-level subscriber m Other scenarios will require other strategies, but the general principle with deadlocks is always the same: understand which shared resources require exclusive access. For example, if you have a sensor library, it might create a dedicated thread to monitor devices and report new measurements, and if it were to stipulate that certain work had to be done on that thread, this would be very similar to the UI scenario: there is a particular thread that you will need to avoid blocking. The same approach would likely apply here. But this is not the only kind of scenario. -You could imagine a data processing application in which certain data structures are shared. It's quite common in these cases to be allowed to access such data structures from any thread, but to be required to do so one thread at a time. Typically we would use thread synchronization primitives to protect against concurrent use of these critical data structures. In these cases, the risks of deadlock do not arise from the use of particular threads. Instead, they arise from the possibility that one thread can't progress because some other thread is using a shared data structure, but that other thread is waiting for the first thread to do something, and won't relinquish its lock on that data structure until that happens. The simplest way to avoid problems here is to avoid blocking wherever possible. Avoid methods like `First`, preferring their non-blocking equivalents such as `FirstAsync`. (If there are cases where you can't avoid blocking, try to avoid doing so while in possession of locks that guard access to shared data. And if you really can't avoid that either, then there are no simple answers—you'll now have to start thinking about lock hierarchies to systematically avoid deadlock, just as you would if you weren't using Rx.) The non-blocking style is the natural way to do things with Rx, and that's the main way Rx can help you avoid concurrency related problems in these cases. +You could imagine a data processing application in which certain data structures are shared. It's quite common in these cases to be allowed to access such data structures from any thread, but to be required to do so one thread at a time. Typically we would use thread synchronization primitives to protect against concurrent use of these critical data structures. In these cases, the risks of deadlock do not arise from the use of particular threads. Instead, they arise from the possibility that one thread can't progress because some other thread is using a shared data structure, but that other thread is waiting for the first thread to do something, and won't relinquish its lock on that data structure until that happens. The simplest way to avoid problems here is to avoid blocking wherever possible. Avoid methods like `First`, preferring their non-blocking equivalents such as `FirstAsync`. (If there are cases where you can't avoid blocking, try to avoid doing so while in possession of locks that guard access to shared data. And if you really can't avoid that either, then there are no simple answers. You'll now have to start thinking about lock hierarchies to systematically avoid deadlock, just as you would if you weren't using Rx.) The non-blocking style is the natural way to do things with Rx, and that's the main way Rx can help you avoid concurrency related problems in these cases. ## Advanced features of schedulers @@ -821,7 +821,7 @@ This uses an extension method that Rx supplies for cases where you have no need var next = scheduler.Schedule(null, (innerScheduler, _) => LoopRec(innerScheduler)); ``` -This fixes the problem with the preceding example: it correctly uses the correct scheduler for any further logically recursive calls. And now we're just invoking the `LoopRec` instance member in the ordinary way: we're implicitly using the `this` reference that is in scope. So this will create a delegate the captures that implicit `this` reference. But that's inefficient: it will force the compiler to generate code that allocates two objects each time this line runs. (And the same would happen with the preceding example—not only is it broken, it's also inefficient.) It creates one object that has a field holding onto the captured `this`, and then it needs to create a distinct delegate instance that has a reference to that capture object. +This fixes the problem with the preceding example: it correctly uses the correct scheduler for any further logically recursive calls. And now we're just invoking the `LoopRec` instance member in the ordinary way: we're implicitly using the `this` reference that is in scope. So this will create a delegate the captures that implicit `this` reference. But that's inefficient: it will force the compiler to generate code that allocates two objects each time this line runs. (And the same would happen with the preceding example. Not only is it broken, it's also inefficient.) It creates one object that has a field holding onto the captured `this`, and then it needs to create a distinct delegate instance that has a reference to that capture object. The more complex code that is actually in the `Range` implementation avoids this. It disables capture by annotating the lambda with `static`. That prevents code from relying on the implicit `this` reference. So it has had to arrange for the `this` reference to be available to the callback. And that's exactly the sort of thing the `state` argument is there for. It provides a way to pass in some per-work-item state so that you can avoid the overhead of capturing variables on each iteration. @@ -876,7 +876,7 @@ Note that the scheduled action never occurred, because we cancelled it almost im When the user cancels the scheduled action method before the scheduler is able to invoke it, that action is just removed from the queue of work. This is what we see in example above. It's possible to cancel scheduled work that is already running, and this is why the work item callback is required to return `IDisposable`: if work has already begun when you try to cancel the work item, Rx calls `Dispose` on the `IDisposable` that your work item callback returned. This gives a way for users to cancel out of a job that may already be running. This job could be some sort of I/O, heavy computations or perhaps usage of `Task` to perform some work. -You may be wondering how this mechanism can be any use: the work item callback needs to have returned already for Rx to be able to invoke the `IDisposable` that it returns. This mechanism can only be used in practice if work continues after returning to the scheduler. You could fire up another thread so the work happens concurrently, although we generally try to avoid creating threads in Rx. Another possibility would be if the scheduled work item invoked some asynchronous API and returned without waiting for it to complete—if that API offered cancellation, you could return an `IDisposable` that cancelled it. +You may be wondering how this mechanism can be any use: the work item callback needs to have returned already for Rx to be able to invoke the `IDisposable` that it returns. This mechanism can only be used in practice if work continues after returning to the scheduler. You could fire up another thread so the work happens concurrently, although we generally try to avoid creating threads in Rx. Another possibility would be if the scheduled work item invoked some asynchronous API and returned without waiting for it to complete. If that API offered cancellation, you could return an `IDisposable` that cancelled it. To illustrate cancellation in operation, this slightly unrealistic example runs some work as a `Task` to enable it to continue after our callback returns. It just fakes some work by performing a spin wait and adding values to the `list` argument. The key here is that we create a `CancellationToken` to be able to tell the task we want it to stop, and we return an `IDisposable` that puts this token in to a cancelled state. diff --git a/content/12_Timing.md b/content/12_Timing.md index 0624572..ab13410 100644 --- a/content/12_Timing.md +++ b/content/12_Timing.md @@ -48,15 +48,15 @@ Timestamp-->2@00:00:00.9908958 Timestamp completed ``` -As you can see from the output, the timings are not exactly one second but are pretty close. Some of this will be measurement noise in the `TimeInterval` operator, but most of this variability is likely to arise from the `Observable.Interval` class. There will always be a limit to the precision with which a scheduler can honour the timing request of it. Some scheduler introduce more variation than others—the schedulers that deliver work via a UI thread are ultimately limited by how quickly that thread's message loop responds. But even in the most favourable condition, schedulers are limited by the fact that .NET is not built for use in real-time systems (and nor are most of the operating systems Rx can be used on). So with all of the operators in this section, you should be aware that timing is always a _best effort_ affair in Rx. +As you can see from the output, the timings are not exactly one second but are pretty close. Some of this will be measurement noise in the `TimeInterval` operator, but most of this variability is likely to arise from the `Observable.Interval` class. There will always be a limit to the precision with which a scheduler can honour the timing request of it. Some scheduler introduce more variation than others. The schedulers that deliver work via a UI thread are ultimately limited by how quickly that thread's message loop responds. But even in the most favourable condition, schedulers are limited by the fact that .NET is not built for use in real-time systems (and nor are most of the operating systems Rx can be used on). So with all of the operators in this section, you should be aware that timing is always a _best effort_ affair in Rx. -In fact, the inherent variations in timing can make `Timestamp` particularly useful. The problem with simply looking at `DateTimeOffset.Now` is that it takes a non-zero amount of time to process an event, so you'll likely see a slightly different time each time you try to read the current time during the processing of one event. By attaching a timestamp once, we capture the time at which the event was observed, and then it doesn't matter how much delay downstream processing adds—the event will be annotated with a single, fixed time indicating when it passed through `Timestamp`. +In fact, the inherent variations in timing can make `Timestamp` particularly useful. The problem with simply looking at `DateTimeOffset.Now` is that it takes a non-zero amount of time to process an event, so you'll likely see a slightly different time each time you try to read the current time during the processing of one event. By attaching a timestamp once, we capture the time at which the event was observed, and then it doesn't matter how much delay downstream processing adds. The event will be annotated with a single, fixed time indicating when it passed through `Timestamp`. ## Delay The `Delay` extension method time-shifts an entire sequence. `Delay` attempts to preserve the relative time intervals between the values. There is inevitably a limit to the precision with which it can do this—it won't recreate timing down to the nearest nanosecond. The exact precision is determined by the scheduler you use, and will typically get worse under heavy load, but it will typically reproduce timings to within a few milliseconds. -There are overloads of `Delay` offering various different ways to specify the time shift. (With all the options, you can optionally pass a scheduler, but if you call the overloads that don't take one, it defaults to [`DefaultScheduler`](11_SchedulingAndThreading.md#defaultscheduler).) The most straightforward is to pass a `TimeSpan`, which will delay the sequence by the specified amount. And there are also delays that accept a `DateTimeOffset` which will wait until the specified time occurs, and then start replaying the input. (This second, absolute time based approach is essentially equivalent to the `TimeSpan` overloads—you would get more or less the same effect by subtracting the current time from the target time to get a `TimeSpan`, except the `DateTimeOffset` version attempts to deal with changes in the system clock that occur between `Delay` being called, and the specified time arriving.) +There are overloads of `Delay` offering various different ways to specify the time shift. (With all the options, you can optionally pass a scheduler, but if you call the overloads that don't take one, it defaults to [`DefaultScheduler`](11_SchedulingAndThreading.md#defaultscheduler).) The most straightforward is to pass a `TimeSpan`, which will delay the sequence by the specified amount. And there are also delays that accept a `DateTimeOffset` which will wait until the specified time occurs, and then start replaying the input. (This second, absolute time based approach is essentially equivalent to the `TimeSpan` overloads. You would get more or less the same effect by subtracting the current time from the target time to get a `TimeSpan`, except the `DateTimeOffset` version attempts to deal with changes in the system clock that occur between `Delay` being called, and the specified time arriving.) To show the `Delay` method in action, this example creates a sequence of values one second apart and timestamps them. This will show that it is not the subscription that is being delayed, but the actual forwarding of the notifications to our final subscriber. diff --git a/content/13_LeavingIObservable.md b/content/13_LeavingIObservable.md index 6816a22..68c90aa 100644 --- a/content/13_LeavingIObservable.md +++ b/content/13_LeavingIObservable.md @@ -27,7 +27,7 @@ The way this actually works is that the relevant `GetAwaiter` extension method w If a source reports an error by invoking its observer's `OnError`, Rx's `await` integration handles this by putting the task into a faulted state, so that the `await` will rethrow the exception. -Sequences can be empty—they might call `OnCompleted` without ever having called `OnNext`. However, since there's no way to tell from the type of a source that it will be empty, this doesn't fit especially well with the `await` paradigm. With tasks, you can know at compile time whether you'll get a result by looking at whether you're awaiting a `Task` or `Task`, so the compiler is able to know whether a particular `await` expression produces a value. But when you `await` and `IObservable`, there's no compile-time distinction, so the only way Rx can report that a sequence is empty when you `await` is to throw an `InvalidOperationException` reporting that the sequence contains no elements. +Sequences can be empty. They might call `OnCompleted` without ever having called `OnNext`. However, since there's no way to tell from the type of a source that it will be empty, this doesn't fit especially well with the `await` paradigm. With tasks, you can know at compile time whether you'll get a result by looking at whether you're awaiting a `Task` or `Task`, so the compiler is able to know whether a particular `await` expression produces a value. But when you `await` and `IObservable`, there's no compile-time distinction, so the only way Rx can report that a sequence is empty when you `await` is to throw an `InvalidOperationException` reporting that the sequence contains no elements. As you may recall from the [`AsyncSubject` section of chapter 3](./03_CreatingObservableSequences.md#asyncsubject), `AsyncSubject` reports only the final value to emerge from its source. So if you `await` a sequence that reports multiple items, all but the final item will be ignored. What if you want to see all of the items, but you'd still like to use `await` to handle completion and errors? @@ -143,7 +143,7 @@ catch (Exception e) ## To a single collection -Sometimes you will want all of the items a source produces as a single list. For example, perhaps you can't just process the elements in order—perhaps you will sometimes need to refer back to elements received earlier. The four operations described in following sections gather all of the items into a single collection. They all still produce an `IObservable` (e.g., an `IObservable` or an `IObservable>`), but these are all single-element observables, and as you've already seen, you can use the `await` keyword to get hold of this single output. +Sometimes you will want all of the items a source produces as a single list. For example, perhaps you can't just process the elements individually because you will sometimes need to refer back to elements received earlier. The four operations described in following sections gather all of the items into a single collection. They all still produce an `IObservable` (e.g., an `IObservable` or an `IObservable>`), but these are all single-element observables, and as you've already seen, you can use the `await` keyword to get hold of this single output. ### ToArray and ToList @@ -173,7 +173,7 @@ Output: As these methods still return observable sequences, you can also use the normal Rx `Subscribe` mechanisms, or use these as inputs to other operators. -If the source produces values and then errors, you will not receive any of those values—all values received up to that point will be discarded, and the operator will invoke its observer's `OnError` (and in the example above, that will result in the exception being thrown from the `await`). All four operators (`ToArray`, `ToList`, `ToDictionary` and `ToLookup`) handle errors like this. +If the source produces values and then errors, you will not receive any of those values. All values received up to that point will be discarded, and the operator will invoke its observer's `OnError` (and in the example above, that will result in the exception being thrown from the `await`). All four operators (`ToArray`, `ToList`, `ToDictionary` and `ToLookup`) handle errors like this. ### ToDictionary and ToLookup diff --git a/content/14_ErrorHandlingOperators.md b/content/14_ErrorHandlingOperators.md index bc3f818..007a5e6 100644 --- a/content/14_ErrorHandlingOperators.md +++ b/content/14_ErrorHandlingOperators.md @@ -2,7 +2,7 @@ title: Error Handling Operators --- -Exceptions happen. Some exceptions are inherently avoidable, occurring only because of bugs in our code. For example, if we put the CLR into a situation where it has to raise a `DivideByZeroException`, we've done something wrong. But there are plenty of exceptions that cannot be prevented with defensive coding. For example, exceptions relating to I/O or networking failures such as like `FileNotFoundException` or `TimeoutException` can be caused by environmental factors outside of our code's control. In these cases, we need to handle the exception gracefully. The kind of handling will depend on the context—it might be appropriate to provide some sort of error message to the user; in some scenarios logging the error might be a more appropriate response. If the failure is likely to be transient, we could try to recover by retrying the operation that failed. +Exceptions happen. Some exceptions are inherently avoidable, occurring only because of bugs in our code. For example, if we put the CLR into a situation where it has to raise a `DivideByZeroException`, we've done something wrong. But there are plenty of exceptions that cannot be prevented with defensive coding. For example, exceptions relating to I/O or networking failures such as like `FileNotFoundException` or `TimeoutException` can be caused by environmental factors outside of our code's control. In these cases, we need to handle the exception gracefully. The kind of handling will depend on the context. It might be appropriate to provide some sort of error message to the user; in some scenarios logging the error might be a more appropriate response. If the failure is likely to be transient, we could try to recover by retrying the operation that failed. The `IObserver` interface defines the `OnError` method so that a source can report an error, but since this terminates the sequence, it provides no direct means of working out what to do next. However, Rx provides operators that provide a variety of error handling mechanisms. @@ -60,7 +60,7 @@ IObservable settings = Observable.Catch(settingsSource1, settingsSource2 There's also an overload that accepts an `IEnumerable>`. -If any of the sources reaches its end without reporting an exception, `Catch` also immediately reports completion and does not subscribe to any of the subsequent sources. If the very last source reports an exception, `Catch` will have no further sources to fall back on, so in that case it won't catch the exception—it will forward that final exception to its subscriber. +If any of the sources reaches its end without reporting an exception, `Catch` also immediately reports completion and does not subscribe to any of the subsequent sources. If the very last source reports an exception, `Catch` will have no further sources to fall back on, so in that case it won't catch the exception. It will forward that final exception to its subscriber. ## Finally @@ -147,7 +147,7 @@ This is mostly just a curiosity: application frameworks such as ASP.NET Core or ## Using -The `Using` factory method allows you to bind the lifetime of a resource to the lifetime of an observable sequence. The method takes two callbacks: one to create the disposable resource and one to provide the sequence. This allows everything to be lazily evaluated—these callbacks are invoked when code calls `Subscribe` on the `IObservable` that this method returns. +The `Using` factory method allows you to bind the lifetime of a resource to the lifetime of an observable sequence. The method takes two callbacks: one to create the disposable resource and one to provide the sequence. This allows everything to be lazily evaluated. These callbacks are invoked when code calls `Subscribe` on the `IObservable` that this method returns. ```csharp public static IObservable Using( diff --git a/content/15_PublishingOperators.md b/content/15_PublishingOperators.md index a84d19f..3339b2c 100644 --- a/content/15_PublishingOperators.md +++ b/content/15_PublishingOperators.md @@ -192,7 +192,7 @@ ps.Subscribe(ps => Console.WriteLine(ps)); ### PublishLast -The `PublishLast` operator calls `Multicast` with an [`AsyncSubject`](03_CreatingObservableSequences.md#asyncsubject). The effect of this is that the final item produced by the source will be delivered to all subscribers. You still need to call `Connect`—this determines when subscription to the underlying source occurs. But all subscribers will receive the final event regardless of when they subscribe, because `AsyncSubject` remembers the final result. We can see this in action with the following example: +The `PublishLast` operator calls `Multicast` with an [`AsyncSubject`](03_CreatingObservableSequences.md#asyncsubject). The effect of this is that the final item produced by the source will be delivered to all subscribers. You still need to call `Connect`. This determines when subscription to the underlying source occurs. But all subscribers will receive the final event regardless of when they subscribe, because `AsyncSubject` remembers the final result. We can see this in action with the following example: ```cs IConnectableObservable pticks = Observable @@ -396,7 +396,7 @@ Sub3: 4 (10/08/2023 16:40:41) Sub4: 4 (10/08/2023 16:40:41) ``` -This time, the `Create` callback ran twice. That's because the number of active subscribers dropped to 0, so `RefCount` called `Dispose` to shut things down. When new subscribers came along, it called `Connect` again to start things back up. There are some overloads enabling you to specify a `disconnectDelay`—this tells it to wait for the specified time after the number of subscribers drops to zero before disconnecting, to see if any new subscribers come along. But it will still disconnect if the specified time elapses. If that's not what you want, the next operator might be for you. +This time, the `Create` callback ran twice. That's because the number of active subscribers dropped to 0, so `RefCount` called `Dispose` to shut things down. When new subscribers came along, it called `Connect` again to start things back up. There are some overloads enabling you to specify a `disconnectDelay`. This tells it to wait for the specified time after the number of subscribers drops to zero before disconnecting, to see if any new subscribers come along. But it will still disconnect if the specified time elapses. If that's not what you want, the next operator might be for you. ## AutoConnect diff --git a/content/A_IoStreams.md b/content/A_IoStreams.md index a8377b8..6705013 100644 --- a/content/A_IoStreams.md +++ b/content/A_IoStreams.md @@ -8,7 +8,7 @@ IO streams were designed to support efficient delivery of fairly high volumes of There is a standard band-aid kind of a fix for this: libraries that present streams to application code often don't represent the underlying OS stream directly. Instead, they are often _buffered_, meaning that the library will perform reads fairly large chunks, and hold recently-fetched bytes in memory until the application code asks for them. This can enable methods like .NET's single-byte [`Stream.ReadByte`](https://learn.microsoft.com/en-us/dotnet/api/system.io.stream.readbyte) method to work reasonably efficiently: several thousand calls to that method might cause only one call to the operating system API that provides access to whatever physical device the stream represents. Likewise, if you're sending data into an IO stream, a buffered stream will wait until you've supplied some minimum quantity of data (4096 bytes is a common default with certain .NET `Stream`s) before it actually sends any data to its destination. -But this could be a serious problem for the kinds of event sources we represent in Rx. If an IO stream deliberately insulates you from the real movement of data, that could introduce delays that might be disastrous in a financial application where delays in delivery and receipt of information can have enormous financial consequences. And even if there aren't direct financial implications, this kind of buffering would be unhelpful in representing events in a user interface—nobody wants to have to click a button several thousand times before the application starts to act on that input. +But this could be a serious problem for the kinds of event sources we represent in Rx. If an IO stream deliberately insulates you from the real movement of data, that could introduce delays that might be disastrous in a financial application where delays in delivery and receipt of information can have enormous financial consequences. And even if there aren't direct financial implications, this kind of buffering would be unhelpful in representing events in a user interface. Nobody wants to have to click a button several thousand times before the application starts to act on that input. There's also the problem that you don't always know which kind of stream you've been given. If you know for a fact that you've got an unbuffered stream representing a file on disk (because you created that stream yourself) you'd typically write quite different code than you would if you knew you had a buffered stream. But if you've written a method that takes a `Stream` argument, it's not clear what you've got, so you don't necessarily know which coding strategy is best. diff --git a/content/D_AlgebraicUnderpinnings.md b/content/D_AlgebraicUnderpinnings.md index 9a8185d..bc5a855 100644 --- a/content/D_AlgebraicUnderpinnings.md +++ b/content/D_AlgebraicUnderpinnings.md @@ -131,7 +131,7 @@ IObservable o1 = Observable.Return(42).SelectMany(SomeFunc); IObservable o2 = SomeFunc(42); ``` -Here's an informal way to understand this. `SelectMany` pushes every item in its input container through `SomeFunc`, and each such call produces a container of type `IObservable`, and it collects all these containers together into one big `IObservable` that contains item from all of the individual `IObservable` containers. But in this example, the input we provide to `SelectMany` contains just a single item, meaning that there's no collection work to be done—`SelectMany` is going to invoke our function just once with that one and only input, and that's going to produce just one output `IObservable`. `SelectMany` is obliged to return an `IObservable` that contains everything in the single `IObservable` it got from that single call to `SomeFunc`. There's no actual further processing for it to do in this case—since there was only one call to `SomeFunc` it doesn't need to combine items from multiple containers in this case: that single output produced by the single call to `SomeFunc` contains everything that should be in the container that `SelectMany` is going to return. We can therefore just invoke `SomeFunc` directly with the single input item. +Here's an informal way to understand this. `SelectMany` pushes every item in its input container through `SomeFunc`, and each such call produces a container of type `IObservable`, and it collects all these containers together into one big `IObservable` that contains item from all of the individual `IObservable` containers. But in this example, the input we provide to `SelectMany` contains just a single item, meaning that there's no collection work to be done. `SelectMany` is going to invoke our function just once with that one and only input, and that's going to produce just one output `IObservable`. `SelectMany` is obliged to return an `IObservable` that contains everything in the single `IObservable` it got from that single call to `SomeFunc`. There's no actual further processing for it to do in this case. Since there was only one call to `SomeFunc` it doesn't need to combine items from multiple containers in this case: that single output produced by the single call to `SomeFunc` contains everything that should be in the container that `SelectMany` is going to return. We can therefore just invoke `SomeFunc` directly with the single input item. It would be odd if `SelectMany` did anything else. If `o1` were different in some way, that would mean one of three things: @@ -189,7 +189,7 @@ IObservable input = Observable.Range(1, 3); // [1,2,3] IObservable> expandTx1 = input.Select(Tx1); ``` -We get a sequence of sequences—`expand2` is effectively this: +We get a sequence of sequences. `expand2` is effectively this: ``` [ @@ -386,7 +386,7 @@ To be more precise, Catamorphisms are described in relation to something called But that opens up more questions than it answers. So let's start with the obvious one: what's a Functor? From a LINQ perspective, it's essentially anything that implements `Select`. (Some programming systems call this `fmap`.) From our container-oriented viewpoint it's two things: 1) a type constructor that is container-like (e.g. something like `IEnumerable` or `IObservable`) and 2) some means of applying a function to everything in the container. So if you have a function that converts from `string` to `int`, a Functor lets you apply that to everything it contains in a single step. -The combination of `IEnumerable` and its `Select` extension method is a Functor. You can use `Select` to convert an `IEnumerable` to an `IEnumerable`. `IObservable` and its `Select` form another Functor—we can use these to get from an `IObservable` to an `IObservable`. What about that "over some category _C_" part? That alludes to the fact that the mathematical description of a Functor is rather broader. When developers use category theory, we generally stick to a category that represents types (as in programming language types like `int`) and functions. (Strictly speaking a Functor maps from one category to another, so in the most general case, a Functor maps objects and morphisms in some category _C_ into objects and morphisms in some category _D_. But for programming purposes, we are always using the category representing types, so for the Functors we use _C_ and _D_ will be the same thing. Strictly speaking this means we should be calling them Endofunctors, but nobody seems to bother—in practice we use the name for the more general form, Functor, and it's just taken as read that we mean an Endofunctor over the category of types and functions.) +The combination of `IEnumerable` and its `Select` extension method is a Functor. You can use `Select` to convert an `IEnumerable` to an `IEnumerable`. `IObservable` and its `Select` form another Functor, and we can use these to get from an `IObservable` to an `IObservable`. What about that "over some category _C_" part? That alludes to the fact that the mathematical description of a Functor is rather broader. When developers use category theory, we generally stick to a category that represents types (as in programming language types like `int`) and functions. (Strictly speaking a Functor maps from one category to another, so in the most general case, a Functor maps objects and morphisms in some category _C_ into objects and morphisms in some category _D_. But for programming purposes, we are always using the category representing types, so for the Functors we use _C_ and _D_ will be the same thing. Strictly speaking this means we should be calling them Endofunctors, but nobody seems to bother. In practice we use the name for the more general form, Functor, and it's just taken as read that we mean an Endofunctor over the category of types and functions.) So, that's the Functor part. Let's move onto 2, "some object _A_ in the category _C_." Well _C_ is the Functor's category, and we just established that objects in that category are types, so _A_ here might be the `string` type. If our chosen Functor is the combination of `IObservable` and its `Select` method, then _F A_ would be `IObservable`. @@ -396,7 +396,7 @@ So what about the "morphisms" in 3? Again, for our purposes we're just using End 2. an item type `A` (e.g., `string`, or `int`) 3. a function that takes an `IObservable` and returns a value of type `A` (e.g. `Observable.Aggregate`) -This is a good deal more specific—category theory is typically concerned with capturing the most general truths about mathematical structures, and this reformulation throws that generality away. However, from the perspective of a programmer looking to lean on mathematical theory, this is fine—as long as what we're doing fits the F-algebra mould, all the general results that mathematicians have derived will apply to our more specialized application of the theory. +This is a good deal more specific. Category theory is typically concerned with capturing the most general truths about mathematical structures, and this reformulation throws that generality away. However, from the perspective of a programmer looking to lean on mathematical theory, this is fine. As long as what we're doing fits the F-algebra mould, all the general results that mathematicians have derived will apply to our more specialized application of the theory. Nonetheless, to give you an idea of the sorts of things the general concept of F-algebras can enable, it's possible for the Functor to be a type that represents expressions in a programming language, and you could create an F-algebra that evaluates those expressions. That's a similar idea to LINQ's `Aggregate`, in that it walks over the entire structure represented by the Functor (every element in a list if it's an `IEnumerable`; every subexpression if you're representing an expression) and reduces the whole thing to a single value, but instead of our Functor representing a sequence of things, it has a more complex structure: expressions in some programming language. @@ -458,7 +458,7 @@ But what does `Amb` do? The basic idea of an [_ambiguous function_](http://www-f So in essence, we're supplying a bunch of different ways to process the input, and if exactly one of those is able to produce a result, we select that result. And if none of the ways of processing the input produces anything, then our ambiguous function also produces nothing. -Where it gets slightly more weird (and where Rx departs from the original definition of `amb`) is when more than one of an ambiguous function's constituents produces a result. In McCarthy's theoretical formulation, the ambiguous function effectively produces all of the results as possible outputs. (This is technically known as _nondeterministic_ computation, although that name can be misleading: it makes it sound like the result will be unpredictable. But that's not what we mean by _nondeterministic_ when talking about computation. It is as though the computer evaluating the ambiguous function clones itself, producing a copy for each possible result, continuing to execute every single copy. You could imagine an multithreaded implementation of such a system, where every time an ambiguous function produces multiple possible results, we create that many new threads so as to be able to evaluate all possible outcomes. This is a reasonable mental model for nondeterministic computation, but it's not what actually happens with Rx's `Amb` operator.) In the kinds of theoretical work ambiguous functions were introduced for, the ambiguity often vanishes in the end—there may have been an enormous number of ways in which a computation could have proceeded, but they might all, finally, produce the same result. However, such theoretical concerns are taking us away from what Rx's `Amb` does, and how we might use it in practice. +Where it gets slightly more weird (and where Rx departs from the original definition of `amb`) is when more than one of an ambiguous function's constituents produces a result. In McCarthy's theoretical formulation, the ambiguous function effectively produces all of the results as possible outputs. (This is technically known as _nondeterministic_ computation, although that name can be misleading: it makes it sound like the result will be unpredictable. But that's not what we mean by _nondeterministic_ when talking about computation. It is as though the computer evaluating the ambiguous function clones itself, producing a copy for each possible result, continuing to execute every single copy. You could imagine an multithreaded implementation of such a system, where every time an ambiguous function produces multiple possible results, we create that many new threads so as to be able to evaluate all possible outcomes. This is a reasonable mental model for nondeterministic computation, but it's not what actually happens with Rx's `Amb` operator.) In the kinds of theoretical work ambiguous functions were introduced for, the ambiguity often vanishes in the end. There may have been an enormous number of ways in which a computation could have proceeded, but they might all, finally, produce the same result. However, such theoretical concerns are taking us away from what Rx's `Amb` does, and how we might use it in practice. [Rx's `Amb`](09_CombiningSequences.md#amb) provides the behaviour described in the cases where either none of the inputs produces anything, or exactly one of them does. Howeever, it makes no attempt to support non-deterministic computation, so its handling of the case where multiple constituents are able to produce value is oversimplified, but then McCarthy's `amb` was first and foremost an analytical construct, so any practical implementation of it is always going to fall short. @@ -467,7 +467,7 @@ Where it gets slightly more weird (and where Rx departs from the original defini It can be tempting to flip between programming styles when using Rx. For the parts where it's easy to see how Rx applies, then we will naturally use Rx. But when things get tricky, it might seem easiest to change tracks. It might seem like the easiest thing to do would be to `await` an observable, and then proceed with ordinary sequential code. Or maybe it might seem simplest to make callbacks passed to operators like `Select` or `Where` perform operations in addition to their main jobs—to have side effects that do useful things. -Although this can sometimes work, switching between paradigms should be done with caution, as this is a common root cause for concurrency problems such as deadlock and scalability issues. The basic reason for this is that for as long as you remain within Rx's way of doing things, you will benefit from the basic soundness of the mathematical underpinnings. But for this to work, you need to use a functional style—functions should process their inputs and deterministically produce outputs based on those inputs, and they should neither depend on external state nor change it. This can be a tall order, and it won't always be possible, but a lot of the theory falls apart if you break these rules. Composition doesn't work as reliably as it can. So using a functional style, and keeping your code within Rx's idiom will tend to improve reliability. +Although this can sometimes work, switching between paradigms should be done with caution, as this is a common root cause for concurrency problems such as deadlock and scalability issues. The basic reason for this is that for as long as you remain within Rx's way of doing things, you will benefit from the basic soundness of the mathematical underpinnings. But for this to work, you need to use a functional style. Functions should process their inputs and deterministically produce outputs based on those inputs, and they should neither depend on external state nor change it. This can be a tall order, and it won't always be possible, but a lot of the theory falls apart if you break these rules. Composition doesn't work as reliably as it can. So using a functional style, and keeping your code within Rx's idiom will tend to improve reliability. ## Issues with side effects From a07644c6d58158bd69e149ba41ad8579f7ed62d5 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Fri, 1 Dec 2023 15:44:35 +0000 Subject: [PATCH 096/142] Ch03 updates after feedback --- content/03_CreatingObservableSequences.md | 44 +++++++++++++---------- 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/content/03_CreatingObservableSequences.md b/content/03_CreatingObservableSequences.md index 25a1930..cc8f914 100644 --- a/content/03_CreatingObservableSequences.md +++ b/content/03_CreatingObservableSequences.md @@ -337,7 +337,7 @@ Due to the large number of methods available for creating observable sequences, ### Observable.Return -One of the simplest factory methods is `Observable.Return(T value)`, which you've already seen in the `Quiescent` example in the preceding chapter. This method takes a value of type `T` and returns an `IObservable` which will produce this single value and then complete. In a sense, this _wraps_ a value in an `IObservable`; it's conceptually similar to writing `new T[] { value }`, in that it's a sequence containing just one element. +One of the simplest factory methods is `Observable.Return(T value)`, which you've already seen in the `Quiescent` example in the preceding chapter. This method takes a value of type `T` and returns an `IObservable` which will produce this single value and then complete. In a sense, this _wraps_ a value in an `IObservable`; it's conceptually similar to writing `new T[] { value }`, in that it's a sequence containing just one element. You could also think of it as being the Rx equivalent of `Task.FromResult`, which you can use when you have a value of some type `T`, and need to pass it to something that wants a `Task`. ```csharp IObservable singleValue = Observable.Return("Value"); @@ -361,6 +361,8 @@ IObservable empty = Observable.Empty(); In practice, an empty sequence is one that immediately calls `OnCompleted` on any subscriber. +In comparison with `IEnumerable`, this is just the Rx equivalent of an empty list, but there's another way to look at it. Rx is a powerful way to model asynchronous processes, so you could think of this as being similar to a task that completes immediately without producing any result—so it has a conceptual resemblance to `Task.CompletedTask`. (This is not as close an analogy as that between `Observable.Return` and `Task.FromResult`, because in that case we're comparing an `IObservable` with a `Task`, whereas here we're comparing an `IObservable` with a `Task`—the only way for a task to complete without producing anything is if we use the non-generic version of `Task`.) + ### Observable.Never The `Observable.Never()` method returns a sequence which, like `Empty`, does not produce any values, but unlike `Empty`, it never ends. In practice, that means that it never invokes any method (neither `OnNext`, `OnCompleted`, nor `OnError`) on subscribers. Whereas `Observable.Empty()` completes immediately, `Observable.Never` has infinite duration. @@ -369,7 +371,11 @@ The `Observable.Never()` method returns a sequence which, like `Empty`, does IObservable never = Observable.Never(); ``` -It might not seem obvious why this could be useful. It tends to be used in places where we use observables to represent time-based information. Sometimes we don't actually care what emerges from an observable; we might care only _when_ something (anything) happens. For example, in the preceding chapter, the `Quiescent` example used the `Buffer` operator, which works over two observable sequences: the first contains the items of interest, and the second is used purely to determine how to cut the first into chunks. `Buffer` doesn't do anything with the values produced by the second observable: it pays attention only to _when_ value emerge, completing the previous chunk each time the second observable produces a value. And if we're representing temporal information it can sometimes be useful to have a way to represent the idea that some event never occurs. +It might not seem obvious why this could be useful. I gave one possible use in the last chapter: you could use this in a test to simulate a source that wasn't producing any values, perhaps to enable your test to validate timeout logic. + +It can also be used in places where we use observables to represent time-based information. Sometimes we don't actually care what emerges from an observable; we might care only _when_ something (anything) happens. (We saw an example of this "observable sequence used purely for timing purposes" concept in the preceding chapter, although `Never` wouldn't make sense in that particular scenario. The `Quiescent` example used the `Buffer` operator, which works over two observable sequences: the first contains the items of interest, and the second is used purely to determine how to cut the first into chunks. `Buffer` doesn't do anything with the values produced by the second observable: it pays attention only to _when_ value emerge, completing the previous chunk each time the second observable produces a value. And if we're representing temporal information it can sometimes be useful to have a way to represent the idea that some event never occurs.) + +As an example of where you might want to use `Never` for timing purposes, suppose you were using some Rx-based library that offered a timeout mechanism, where an operation would be cancelled when some timeout occurs, and the timeout is itself modelled as an observable sequence. If for some reason you didn't want a timeout, and just want to wait indefinitely, you could specify a timeout of `Observable.Never`. ### Observable.Throw @@ -452,7 +458,7 @@ IObservable ReadFileLines(string path) => { while (cancellationToken.IsCancellationRequested) { - string? line = await reader.ReadLineAsync(cancellationToken); + string? line = await reader.ReadLineAsync(cancellationToken).ConfigureAwait(false); if (line is null) { break; @@ -476,7 +482,7 @@ This automatic exception delivery is another example of why the `Create` factory The `Create` method entails lazy evaluation, which is a very important part of Rx. It opens doors to other powerful features such as scheduling and combination of sequences that we will see later. The delegate will only be invoked when a subscription is made. So in the `ReadFileLines` example, it won't attempt to open the file until you subscribe to the `IObservable` that is returned. If you subscribe multiple times, it will execute the callback each time. (So if the file has changed, you can retrieve the latest contents by calling `Subscribe` again.) -As an exercise, try to build the `Empty`, `Return`, `Never` & `Throw` extension methods yourself using the `Create` method. If you have Visual Studio or [LINQPad](http://www.linqpad.net/) available to you right now, code it up as quickly as you can. If you don't (perhaps you are on the train on the way to work), try to conceptualize how you would solve this problem. +As an exercise, try to build the `Empty`, `Return`, `Never` & `Throw` extension methods yourself using the `Create` method. If you have Visual Studio or [LINQPad](http://www.linqpad.net/) available to you right now, code it up as quickly as you can, or if you have Visual Studio Code, you could create a new [Polyglot Notebook](https://code.visualstudio.com/docs/languages/polyglot). (Polyglot Notebooks make Rx available automatically, so you can just write a C# cell with a suitable `using` directive, and you're up and running.) If you don't (perhaps you are on the train on the way to work), try to conceptualize how you would solve this problem. You completed that last step before moving onto this paragraph, right? Because you can now compare your versions with these examples of `Empty`, `Return`, `Never` and `Throw` recreated with `Observable.Create`: @@ -790,7 +796,7 @@ public static IObservable Interval(TimeSpan period) This shows how you can use `Observable.Generate` to produce infinite sequences. I will leave it up to you the reader, as an exercise using `Observable.Generate`, to produce values at variable rates. -## Adapting Common Type to IObservable<T> +## Adapting Common Types to `IObservable` Although we've now seen two very general ways to produce arbitrary sequences—`Create` and `Generate`—what if you already have an existing source of information in some other form that you'd like to make available as an `IObservable`? Rx provides a few adapters for common source types. @@ -844,7 +850,7 @@ The observable returned by `Start` may seem to have a superficial resemblance to As we discussed early in the book, .NET has a model for events that is baked into its type system. This predates Rx (not least because Rx wasn't feasible until .NET got generics in .NET 2.0) so it's common for types to support events but not Rx. To be able to integrate with the existing event model, Rx provides methods to take an event and turn it into an observable sequence. I showed this briefly in the file system watcher example earlier, but let's examine this in a bit more detail. There are several different varieties you can use. This show the most succinct form: ```cs -FileSystemWatcher watcher = new (@"c:\temp"); +FileSystemWatcher watcher = new (@"c:\incoming"); IObservable> changeEvents = Observable .FromEventPattern(watcher, nameof(watcher.Changed)); ``` @@ -853,11 +859,11 @@ If you have an object that provides an event, you can use this overload of `From Firstly, why do I need to pass the event name as a string? Identifying members with strings is an error-prone technique. The compiler won't notice if there's a mismatch between the first and second argument (e.g., if I passed the arguments `(somethingElse, nameof(watcher.Changed))` by mistake). Couldn't I just pass `watcher.Changed` itself? Unfortunately not—this is an example of the issue I mentioned in the first chapter: .NET events are not first class citizens. We can't use them in the way we can use other objects or values. For example, we can't pass an event as an argument to a method. In fact the only thing you can do with a .NET event is attach and remove event handlers. If I want to get some other method to attach handlers to the event of my choosing (e.g., here I want Rx to handle the events), then the only way to do that is to specify the event's name so that the method (`FromEventPattern`) can then use reflection to attach its own handlers. -This is a problem for some deployment scenarios. It is increasingly common in .NET to do extra work at build time to optimize runtime behaviour, and reliance on reflection can compromise these techniques. For example, instead of relying on Just In Time (JIT) compilation of code, we might use Ahead of time (AoT) mechanisms. .NET's Ready to Run (R2R) system enables you to include pre-compiled code targeting specific CPU types alongside the normal IL, avoiding having to wait for .NET to compile the IL into runnable code. This can have a significant effect on startup times, making it an important technique both in client side applications, where it can fix problems where applications are sluggish when they first start up. It can also be important in server-side applications, especially in cloud environments where code may be moved from one compute node to another fairly frequently, making it important to minimize cold start costs. There are also scenarios where JIT compilation is not even an option, in which case AoT compilation isn't merely an optimization: it's the only means by which code can run at all. +This is a problem for some deployment scenarios. It is increasingly common in .NET to do extra work at build time to optimize runtime behaviour, and reliance on reflection can compromise these techniques. For example, instead of relying on Just In Time (JIT) compilation of code, we might use Ahead of Time (AOT) mechanisms. .NET's Ready to Run (R2R) system enables you to include pre-compiled code targeting specific CPU types alongside the normal IL, avoiding having to wait for .NET to compile the IL into runnable code. This can have a significant effect on startup times. In client side applications, it can fix problems where applications are sluggish when they first start up. It can also be important in server-side applications, especially in environments where code may be moved from one compute node to another fairly frequently, making it important to minimize cold start costs. There are also scenarios where JIT compilation is not even an option, in which case AOT compilation isn't merely an optimization: it's the only means by which code can run at all. -The problem with reflection is that it makes it difficult for the build tools to work out what code will execute at runtime. When they inspect this call to `FromEventPattern` they will just see arguments of type `object` and `string`. It's not self-evident that this is going to result in reflection-driven calls to the `add` and `remove` methods for `FileSystemWatcher.Changed` at runtime. There are attributes that can be used to provide hints, but there are limits to how well these can work. Sometimes the build tools will be unable to determine what code would need to be AoT compiled to enable this method to execute without relying on runtime JIT. +The problem with reflection is that it makes it difficult for the build tools to work out what code will execute at runtime. When they inspect this call to `FromEventPattern` they will just see arguments of type `object` and `string`. It's not self-evident that this is going to result in reflection-driven calls to the `add` and `remove` methods for `FileSystemWatcher.Changed` at runtime. There are attributes that can be used to provide hints, but there are limits to how well these can work. Sometimes the build tools will be unable to determine what code would need to be AOT compiled to enable this method to execute without relying on runtime JIT. -There's another, related problem. The .NET build tools support a feature called 'trimming', in which they remove unused code. The `System.Reactive.dll` file is about 1.3MB in size, but it would be a very unusual application that used every member of every type in that component. Basic use of Rx might need only a few tens of kilobytes. The idea with trimming is to work out which bits are actually in use, and produce a copy of the DLL that contains only that code. This can dramatically reduce the volume of code that needs to be deployed for an executable to run. This can be especially important in client-side Blazor applications, where .NET components end up being downloaded by the browser. Having to download an entire 1.3MB component might make you think twice about using it. But if trimming means that basic usage requires only a few tens of KB, and that the size would increase only if you were making more extensive use of the component, that can make it reasonable to use a component that would, without trimming, have imposed too large a penalty to justify its inclusion. But as with AoT compilation, trimming can only work if the tools can determine which code is in use. If they can't do that, it's not just a case of falling back to a slower path, waiting while the relevant code gets JIT compiler. If code has been trimmed, it will be unavailable at runtime, and your application might crash with a `MissingMethodException`. +There's another, related problem. The .NET build tools support a feature called 'trimming', in which they remove unused code. The `System.Reactive.dll` file is about 1.3MB in size, but it would be a very unusual application that used every member of every type in that component. Basic use of Rx might need only a few tens of kilobytes. The idea with trimming is to work out which bits are actually in use, and produce a copy of the DLL that contains only that code. This can dramatically reduce the volume of code that needs to be deployed for an executable to run. This can be especially important in client-side Blazor applications, where .NET components end up being downloaded by the browser. Having to download an entire 1.3MB component might make you think twice about using it. But if trimming means that basic usage requires only a few tens of KB, and that the size would increase only if you were making more extensive use of the component, that can make it reasonable to use a component that would, without trimming, have imposed too large a penalty to justify its inclusion. But as with AOT compilation, trimming can only work if the tools can determine which code is in use. If they can't do that, it's not just a case of falling back to a slower path, waiting while the relevant code gets JIT compiler. If code has been trimmed, it will be unavailable at runtime, and your application might crash with a `MissingMethodException`. So reflection-based APIs can be problematic if you're using any of these techniques. Fortunately, there's an alternative. We can use an overload that takes a couple of delegates, and Rx will invoke these when it wants to add or remove handlers for the event: @@ -868,7 +874,7 @@ IObservable> changeEvents = Observable h => watcher.Changed -= h); ``` -This is code that AoT and trimming tools can understand easily. We've written methods that explicitly add and remove handlers for the `FileSystemWatcher.Changed` event, so AoT tools can pre-compile those two methods, and trimming tools know that they cannot remove the add and remove handlers for those events. +This is code that AOT and trimming tools can understand easily. We've written methods that explicitly add and remove handlers for the `FileSystemWatcher.Changed` event, so AOT tools can pre-compile those two methods, and trimming tools know that they cannot remove the add and remove handlers for those events. The downside is that this is a pretty cumbersome bit of code to write. If you've not already bought into the idea of using Rx, this might well be enough to make you think "I'll just stick with ordinary .NET events, thanks. But the cumbersome nature is a symptom of what is wrong with .NET events. We wouldn't have had to write anything so ugly if events had been first class citizens in the first place. @@ -892,7 +898,7 @@ Although they are conceptually similar, `Task` does a few things differently - if the task is [Cancelled](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.taskstatus#system-threading-tasks-taskstatus-canceled), `IObservable` invoke a subscriber's `OnError` passing a `TaskCanceledException` - if the task is [Faulted](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.taskstatus#system-threading-tasks-taskstatus-faulted) then the sequence will error with the task's inner exception -- if the task is not yet in a final state (neither [Cancelled](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.taskstatus#system-threading-tasks-taskstatus-canceled), [Faulted](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.taskstatus#system-threading-tasks-taskstatus-faulted), or [RanToCompletion](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.taskstatus#system-threading-tasks-taskstatus-rantocompletion)), the `IObservable` will not produce any notifications until such time as the task does enter one of these final states +- if the task is not yet in a final state (neither [Cancelled](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.taskstatus#system-threading-tasks-taskstatus-canceled), [Faulted](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.taskstatus#system-threading-tasks-taskstatus-faulted), or [RanToCompletion](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.taskstatus#system-threading-tasks-taskstatus-rantocompletion)), the `IObservable` will not produce any notifications until such time as the task does enter one of these final states. It does not matter whether the task is already in a final state at the moment that you call `ToObservable`. If it has finished, `ToObservable` will just return a sequence representing that state. (In fact, it uses either the `Return` or `Throw` creation methods you saw earlier.) If the task has not yet finished, `ToObservable` will attach a continuation to the task to detect the outcome once it does complete. @@ -963,9 +969,9 @@ IObservable source = Observable.FromAsync(async () => }); ``` -There is a subtle difference with this though. When I used `Task.Run` the lambda ran on a task pool thread from the start. But when I write it this way, the lambda will begin to run on whatever thread calls `Subscribe`. It's only when it hits the first `await` that it returns (and the call to `Subscribe` will then return), with the remainder of the method running on the thread pool. +This produces exactly the same output as before. There is a subtle difference with this though. When I used `Task.Run` the lambda ran on a task pool thread from the start. But when I write it this way, the lambda will begin to run on whatever thread calls `Subscribe`. It's only when it hits the first `await` that it returns (and the call to `Subscribe` will then return), with the remainder of the method running on the thread pool. -### From IEnumerable<T> +### From `IEnumerable` Rx defines another extension method called `ToObservable`, this time for `IEnumerable`. In earlier chapters I described how `IObservable` was designed to represent the same basic abstraction as `IEnumerable`, with the only difference being the mechanism we use to obtain the elements in the sequence: with `IEnumerable`, we write code that _pulls_ values out of the collection (e.g., a `foreach` loop), whereas `IObservable` _pushes_ values to us by invoking `OnNext` on our `IObserver`. @@ -1049,7 +1055,7 @@ Rx offers a few subject implementations that can occasionally be useful in code Rx offers a few subject types. We'll start with the most straightforward one to understand. -### Subject +### `Subject` The `Subject` type immediately forwards any calls made to its `IObserver` methods on to all of the observers currently subscribed to it. This example shows its basic operation: @@ -1108,7 +1114,7 @@ It wouldn't be too hard to modify this to use `Observable.Create` instead. But w `Subject` is the most straightforward subject, but there are other, more specialized ones. -## ReplaySubject +## `ReplaySubject` `Subject` does not remember anything: it immediately distributes incoming values to subscribers. If new subscribers come along, they will only see events that occur after they subscribe. `ReplaySubject`, on the other hand, can remember every value it has ever seen. If a new subject comes along, it will receive the complete history of events so far. @@ -1177,19 +1183,19 @@ Sub2: 4 Alternatively, you can specify a time-based limit by passing a `TimeSpan` to the `ReplaySubject` constructor. -## BehaviorSubject +## `BehaviorSubject` Like `ReplaySubject`, `BehaviorSubject` also has a memory, but it remembers exactly one value. However, it's not quite the same as a `ReplaySubject` with a buffer size of 1. Whereas a `ReplaySubject` starts off in a state where it has nothing in its memory, `BehaviorSubject` always remembers _exactly_ one item. How can that work before we've made our first call to `OnNext`? `BehaviorSubject` enforces this by requiring us to supply the initial value when we construct it. So you can think of `BehaviorSubject` as a subject that _always_ has a value available. If you subscribe to a `BehaviorSubject` it will instantly produce a single value. (It may then go on to produce more values, but it always produces one right away.) As it happens, it also makes that value available through a property called `Value`, so you don't need to subscribe an `IObserver` to it just to retrieve the value. -A `BehaviorSubject` could be thought of an as observable property. Like a normal property, it can immediately supply a value whenever you ask it. The difference is that it can then go on to notify you every time its value changes. +A `BehaviorSubject` could be thought of an as observable property. Like a normal property, it can immediately supply a value whenever you ask it. The difference is that it can then go on to notify you every time its value changes. If you're using the [ReactiveUI framework](https://www.reactiveui.net/) (an Rx-based framework for building user interfaces), `BehaviourSubject` can make sense as the implementation type for a property in a view model (the type that mediates between your underlying domain model and your user interface). It has property-like behaviour, enabling you to retrieve a value at any time, but it also provides change notifications, which ReactiveUI can handle in order to keep the UI up to date. This analogy falls down slightly when it comes to completion. If you call `OnCompleted`, it immediately calls `OnCompleted` on all of its observers, and if any new observers subscribe, they will also immediately be completed—it does not first supply the last value. (So this is another way in which it is different from a `ReplaySubject` with a buffer size of 1.) Similarly, if you call `OnError`, all current observers will receive an `OnError` call, and any subsequent subscribers will also receive nothing but an `OnError` call. -## AsyncSubject +## `AsyncSubject` `AsyncSubject` provides all observers with the final value it receives. Since it can't know which is the final value until `OnCompleted` is called, it will not invoke any methods on any of its subscribers until either its `OnCompleted` or `OnError` method is called. (If `OnError` is called, it just forwards that to all current and future subscribers.) @@ -1226,6 +1232,8 @@ Sub1: c Sub2: c ``` +If you have some potentially slow work that needs to be done when your application starts up, and which needs to be done just once, you might choose an `AsyncSubject` to make the results of that work available. Code requiring those results can subscribe to the subject. If the work is not yet complete, they will receive the results as soon as they are available. And if the work has already completed, they will receive it immediately. + ## Subject factory Finally it is worth making you aware that you can also create a subject via a factory method. Considering that a subject combines the `IObservable` and `IObserver` interfaces, it seems sensible that there should be a factory that allows you to combine them yourself. The `Subject.Create(IObserver, IObservable)` factory method provides just this. From 99ca095282842df569ccd956948c88aaeab0b718 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Fri, 1 Dec 2023 15:44:54 +0000 Subject: [PATCH 097/142] Normalize use of generic type names in headings --- content/02_KeyTypes.md | 4 ++-- content/06_Transformation.md | 2 +- content/16_TestingRx.md | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/content/02_KeyTypes.md b/content/02_KeyTypes.md index 7af800c..c93c06e 100644 --- a/content/02_KeyTypes.md +++ b/content/02_KeyTypes.md @@ -35,7 +35,7 @@ IObservable bigTrades = trades.Where(trade => trade.Volume > 1_000_000); This removes the ambiguity. It is now clear that we're not dealing with data at rest. We're working with an `IObservable`. But what exactly is that? -## IObservable +## `IObservable` The [`IObservable` interface](https://learn.microsoft.com/en-us/dotnet/api/system.iobservable-1 "IObservable interface - Microsoft Learn") represents Rx's fundamental abstraction: a sequence of values of some type `T`. In a very abstract sense, this means it represents the same thing as [`IEnumerable`](https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.ienumerable-1). The difference is in how code consumes those values. Whereas `IEnumerable` enables code to retrieve values (typically with a `foreach` loop), an `IObservable` provides values when they become available. This distinction is sometimes characterised as _push_ vs _pull_. We can _pull_ values out of an `IEnumerable` by executing a `foreach` loop, but an `IObservable` will _push_ values into our code. @@ -281,7 +281,7 @@ It's certainly possible to use IO streams in Rx, but they are not the right prim Now that we've seen why `IObservable` needs to exist, we need to look at its counterpart, `IObserver`. -## IObserver +## `IObserver` Earlier, I showed the definition of `IObservable`. As you saw, it has just one method, `Subscribe`. And this method takes just one argument, of type [`IObserver`](https://learn.microsoft.com/en-us/dotnet/api/system.iobserver-1). So if you want to observe the events that an `IObservable` has to offer, you must supply it with an `IObserver`. In the examples so far, we've just supplied a simple callback, and Rx has wrapped that in an implementation of `IObserver` for us, but even though this is very often the way we will receive notifications in practice, you still need to understand `IObserver` to use Rx effectively. It is not a complex interface: diff --git a/content/06_Transformation.md b/content/06_Transformation.md index f45a355..5de763b 100644 --- a/content/06_Transformation.md +++ b/content/06_Transformation.md @@ -178,7 +178,7 @@ it would produce a list with these elements: The order is less odd. It's worth exploring the reasons for this in a little more detail. -### IEnumerable vs. IObservable SelectMany +### `IEnumerable` vs. `IObservable` `SelectMany` `IEnumerable` is pull based—sequences produce elements only when asked. `Enumerable.SelectMany` pulls items from its sources in a very particular order. It begins by asking its source `IEnumerable` (the one returned by `Range` in the preceding example) for the first value. `SelectMany` then invokes our callback, passing this first item, and then enumerates everything in the `IEnumerable` our callback returns. Only when it has exhausted this does it ask the source (`Range`) for a second item. Again, it passes that second item to our callback and then fully enumerates the `IEnumerable`, we return, and so on. So we get everything from the first nested sequence first, then everything from the second, etc. diff --git a/content/16_TestingRx.md b/content/16_TestingRx.md index 15a297f..5440ad7 100644 --- a/content/16_TestingRx.md +++ b/content/16_TestingRx.md @@ -467,7 +467,7 @@ public sealed class ImmediateSchedulers : ISchedulerService The `TestScheduler` provides further advanced features. These can be useful when parts of your test setup need to run at particular virtual times. -### Start(Func>) +### `Start(Func>)` There are three overloads to `Start`, which are used to start an observablesequence at a given time, record the notifications it makes and dispose of the subscription at a given time. This can be confusing at first, as the parameterless overload of `Start` is quite unrelated. These three overloads return an `ITestableObserver` which allows you to record the notifications from an observable sequence, much like the `Materialize` method we saw in the [Transformation chapter](06_Transformation.md#materialize-and-dematerialize). From 7fc741cf5fbd569602d20f70d4ad9f7e57127782 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Fri, 1 Dec 2023 15:45:45 +0000 Subject: [PATCH 098/142] Add missing code fence type --- content/03_CreatingObservableSequences.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/03_CreatingObservableSequences.md b/content/03_CreatingObservableSequences.md index cc8f914..8d8f17c 100644 --- a/content/03_CreatingObservableSequences.md +++ b/content/03_CreatingObservableSequences.md @@ -662,7 +662,7 @@ public static IObservable Range(int start, int count) The `Generate` method calls us back repeatedly until either our `condition` callback says we're done, or the observer unsubscribes. We can define an infinite sequence simply by never saying we are done: -``` +```cs IObservable Fibonacci() { return Observable.Generate( From c4c13198221620b6ef7926cf5e39b511fd45b257 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Tue, 5 Dec 2023 08:17:13 +0000 Subject: [PATCH 099/142] Ch05 update after review comments --- content/05_Filtering.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/content/05_Filtering.md b/content/05_Filtering.md index e759c26..681bfdf 100644 --- a/content/05_Filtering.md +++ b/content/05_Filtering.md @@ -31,14 +31,14 @@ IObservable Where(this IObservable source, Func predicate) Note that the element type is the same for the `source` parameter as it is for the return type. This is because `Where` doesn't modify elements. It can filter some out, but those that it does not remove are passed through unaltered. -This example uses `Where` to filter out all odd values produced from a `Range` sequence. +This example uses `Where` to filter out all odd values produced from a `Range` sequence, meaning only even numbers will emerge. ```csharp IObservable xs = Observable.Range(0, 10); // The numbers 0-9 -IObservable oddNumbers = xs.Where(i => i % 2 == 0); +IObservable evenNumbers = xs.Where(i => i % 2 == 0); -oddNumbers.Dump("Where"); +evenNumbers.Dump("Where"); ``` Output: @@ -55,7 +55,7 @@ Where completed The `Where` operator is one of the many standard LINQ operators. This is one of many standard LINQ operators you'll find on all LINQ providers. LINQ to Objects, the `IEnumerable` implementation, provides an equivalent method, for example. In most cases, Rx's operators behave just as they do in the `IEnumerable` implementations, although there are some exceptions as we'll see later. We will discuss each implementation and explain any variation as we go. By implementing these common operators Rx also gets language support for free via C# query expression syntax. For example, we could have written the first statement this way, and it would have compiled to effectively identical code: ```cs -IObservable oddNumbers = +IObservable evenNumbers = from i in xs where i % 2 == 0 select i; @@ -65,7 +65,7 @@ The examples in this book mostly use extension methods, not query expressions, p As with most Rx operators, `Where` does not subscribe immediately to its source. (Rx LINQ operators are much like those in LINQ to Objects: the `IEnumerable` version of `Where` returns without attempting to enumerate its source. It's only when something attempts to enumerate the `IEnumerable` that `Where` returns that it will in turn start enumerating the source.) Only when something calls `Subscribe` on the `IObservable` returned by `Where` will it call `Subscribe` on its source. And it will do so once for each such call to `Subscribe`. More generally, when you chain LINQ operators together, each `Subscribe` call on the resulting `IObservable` results in a cascading series of calls to `Subscribe` all the way down the chain. -A side effect of this cascading `Subscribe` is that `Where` (and most other LINQ operators) is neither inherently _hot_ or _cold_: since it just subscribes to its source, then it will be hot if its source is hot, and cold if its source is cold. +A side effect of this cascading `Subscribe` is that `Where` (like most other LINQ operators) is neither inherently _hot_ or _cold_: since it just subscribes to its source, then it will be hot if its source is hot, and cold if its source is cold. The `Where` operator passes on all elements for which its `predicate` callback returns `true`. To be more precise, when you subscribt to `Where`, it will create its own `IObserver` which it passes as the argument to `source.Subscribe`, and this observer invokes the `predicate` for each call to `OnNext`. If that predicate returns `true`, then and only then will the observer created by `Where` call `OnNext` on the observer that you passed to `Where`. @@ -224,14 +224,6 @@ Earlier we saw that Rx implements the standard `Take` operator, which forwards u `TakeLast` faces the same challenge as `Last`: it doesn't know when it is near the end of the sequence. It therefore has to hold onto copies of the most recently seen values. It needs memory to hold onto however many values you've specified. If you write `TakeLast(1_000_000)`, it will need to allocate a buffer large enough to store 1,000,000 values. It doesn't know if the first element it receives will be one of the final million. It can't know that until either the source completes, or the source has emitted more than 1,000,000 items. When the source finally does complete, `TakeLast` will now know what the final million elements were and will need to pass all of them to its subscriber's `OnNext` method one after another. -### SingleAsync and SingleOrDefaultAsync - -LINQ operators typically provide a `Single` operator, for use when a source should provide exactly one item, and it would be an error for it to contain more, or for it to be empty. The same Rx considerations apply here as for `First` and `Last`, so you will probably be unsurprised to learn that Rx offers a `SingleAsync` method that returns an `IObservable` that will either call its observer's `OnNext` exactly once, or will call its `OnError` to indicate either that the source reported an error, or that the source did not produce exactly one item. - -With `SingleAsync`, you will get an error if the source is empty, just like with `FirstAsync` and `LastAsync`, but you will also get an error if the source contains multiple items. There is a `SingleOrDefault` which, like its first/last counterparts, tolerates an empty input sequence, generating a single element with the element type's default value in that case. - -`Single` and `SingleAsync` share with `Last` and `LastAsync` the characteristic that they don't initially know when they receive an item from the source whether it should be the output. That may seem odd: since `Single` requires the source stream to provide just one item, surely it must know that the item it will deliver to its subscriber will be the first item it receives. This is true, but the thing it doesn't yet know when it receives the first item is whether the source is going to produce a second one. It can't forward the first item unless and until the source completes. We could say that `SingleAsync`'s job is to first verify that the source contains exactly one item, and then to forward that item if it does, but to report an error if it does not. In the error case, `SingleAsync` will know it has gone wrong if it ever receives a second item, so it can immediately call `OnError` on its subscriber at that point. But in the success scenario, it can't know that all is well until the source confirms that nothing more is coming by completing. Only then will `SingleAsync` emit the result. - ### Skip and SkipLast What if we want the exact opposite of the `Take` or `TakeLast` operators? Instead of taking the first 5 items from a source, maybe I want to discard the first 5 items instead? Perhaps I have some `IObservable` taking readings from a sensor, and I have discovered that the sensor produces garbage values for its first few readings, so I'd like to ignore those, and only start listening once it has settled down. I can achieve this with `Skip(5)`. @@ -240,6 +232,14 @@ What if we want the exact opposite of the `Take` or `TakeLast` operators? Instea The other key methods to filtering are so similar I think we can look at them as one big group. First we will look at `Skip` and `Take`. These act just like they do for the `IEnumerable` implementations. These are the most simple and probably the most used of the Skip/Take methods. Both methods just have the one parameter; the number of values to skip or to take. +### SingleAsync and SingleOrDefaultAsync + +LINQ operators typically provide a `Single` operator, for use when a source should provide exactly one item, and it would be an error for it to contain more, or for it to be empty. The same Rx considerations apply here as for `First` and `Last`, so you will probably be unsurprised to learn that Rx offers a `SingleAsync` method that returns an `IObservable` that will either call its observer's `OnNext` exactly once, or will call its `OnError` to indicate either that the source reported an error, or that the source did not produce exactly one item. + +With `SingleAsync`, you will get an error if the source is empty, just like with `FirstAsync` and `LastAsync`, but you will also get an error if the source contains multiple items. There is a `SingleOrDefault` which, like its first/last counterparts, tolerates an empty input sequence, generating a single element with the element type's default value in that case. + +`Single` and `SingleAsync` share with `Last` and `LastAsync` the characteristic that they don't initially know when they receive an item from the source whether it should be the output. That may seem odd: since `Single` requires the source stream to provide just one item, surely it must know that the item it will deliver to its subscriber will be the first item it receives. This is true, but the thing it doesn't yet know when it receives the first item is whether the source is going to produce a second one. It can't forward the first item unless and until the source completes. We could say that `SingleAsync`'s job is to first verify that the source contains exactly one item, and then to forward that item if it does, but to report an error if it does not. In the error case, `SingleAsync` will know it has gone wrong if it ever receives a second item, so it can immediately call `OnError` on its subscriber at that point. But in the success scenario, it can't know that all is well until the source confirms that nothing more is coming by completing. Only then will `SingleAsync` emit the result. + ### Blocking Versions of First/Last/Single[OrDefault] Several of the operators described in the preceding sections end in the name `Async`. This is a little strange because normally, .NET methods that end in `Async` return a `Task` or `Task`, and yet these all return an `IObservable`. Also, as already discussed, each of these methods corresponds to a standard LINQ operator which does not generally end in `Async`. (And to further add to the confusion, some LINQ providers such as Entity Framework Core do include `Async` versions of some of these operators, but they are different. Unlike Rx, these do in fact return a `Task`, so they still produce a single value, and not an `IQueryable` or `IEnumerable`.) This naming arises from an unfortunate choice early in Rx's design. From f294a7bfa6102de7e58e62d1d4e3139031664c26 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Tue, 5 Dec 2023 09:53:21 +0000 Subject: [PATCH 100/142] Ch05 process more review feedback --- content/05_Filtering.md | 10 +++++----- content/13_LeavingIObservable.md | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/content/05_Filtering.md b/content/05_Filtering.md index 681bfdf..60509c9 100644 --- a/content/05_Filtering.md +++ b/content/05_Filtering.md @@ -52,7 +52,7 @@ Where-->8 Where completed ``` -The `Where` operator is one of the many standard LINQ operators. This is one of many standard LINQ operators you'll find on all LINQ providers. LINQ to Objects, the `IEnumerable` implementation, provides an equivalent method, for example. In most cases, Rx's operators behave just as they do in the `IEnumerable` implementations, although there are some exceptions as we'll see later. We will discuss each implementation and explain any variation as we go. By implementing these common operators Rx also gets language support for free via C# query expression syntax. For example, we could have written the first statement this way, and it would have compiled to effectively identical code: +The `Where` operator is one of the many standard LINQ operators you'll find on all LINQ providers. LINQ to Objects, the `IEnumerable` implementation, provides an equivalent method, for example. In most cases, Rx's operators behave just as they do in the `IEnumerable` implementations, although there are some exceptions as we'll see later. We will discuss each implementation and explain any variation as we go. By implementing these common operators Rx also gets language support for free via C# query expression syntax. For example, we could have written the first statement this way, and it would have compiled to effectively identical code: ```cs IObservable evenNumbers = @@ -67,7 +67,7 @@ As with most Rx operators, `Where` does not subscribe immediately to its source. A side effect of this cascading `Subscribe` is that `Where` (like most other LINQ operators) is neither inherently _hot_ or _cold_: since it just subscribes to its source, then it will be hot if its source is hot, and cold if its source is cold. -The `Where` operator passes on all elements for which its `predicate` callback returns `true`. To be more precise, when you subscribt to `Where`, it will create its own `IObserver` which it passes as the argument to `source.Subscribe`, and this observer invokes the `predicate` for each call to `OnNext`. If that predicate returns `true`, then and only then will the observer created by `Where` call `OnNext` on the observer that you passed to `Where`. +The `Where` operator passes on all elements for which its `predicate` callback returns `true`. To be more precise, when you subscript to `Where`, it will create its own `IObserver` which it passes as the argument to `source.Subscribe`, and this observer invokes the `predicate` for each call to `OnNext`. If that predicate returns `true`, then and only then will the observer created by `Where` call `OnNext` on the observer that you passed to `Where`. `Where` always passes the final call to either `OnComplete` or `OnError` through. That means that if you were to write this: @@ -269,7 +269,7 @@ Console.WriteLine(v); This logically has the same effect, but because we're using `await`, this won't block the calling thread while it waits for the observable source to produce a value. This might reduce the chances of deadlock. -The fact that we're able to use `await` makes some sense of the fact that these methods end with `Async`, but you might be wondering what's going on here. We've seen that these methods all return `IObservable`, not `Task`, so how are we able to use `await`? There's a full explanation in the [Leaving Rx's World](13_LeavingIObservable.md) chapter, but the short answer is that Rx provides extension methods that enable this to work. When you `await` an observable sequence, the `await` will complete once the source completes, and it will return the final value that emerges from the source. This works well for operators such as `FirstAsync` and `LastAsync` that produce exactly one item. +The fact that we're able to use `await` makes some sense of the fact that these methods end with `Async`, but you might be wondering what's going on here. We've seen that these methods all return `IObservable`, not `Task`, so how are we able to use `await`? There's a [full explanation in the Leaving Rx's World chapter](13_LeavingIObservable.md#integration-with-async-and-await), but the short answer is that Rx provides extension methods that enable this to work. When you `await` an observable sequence, the `await` will complete once the source completes, and it will return the final value that emerges from the source. This works well for operators such as `FirstAsync` and `LastAsync` that produce exactly one item. Note that there are occasionally situations in which values are available immediately. For example, the [`BehaviourSubject` section in chapter 3](./03_CreatingObservableSequences.md#behaviorsubject), showed that the defining feature of `BehaviourSubject` is that it always has a current value. That means that Rx's `First` method won't actually block—it will subscribe to the `BehaviourSubject`, and `BehaviourSubject.Subscribe` calls `OnNext` on its subscriber's observable before returning. That enables `First` to return a value immediately without blocking. (Of course, if you use the overload of `First` that accepts a predicate, and if the `BehaviourSubject`'s value doesn't satisfy the predicate, `First` will then block.) @@ -278,7 +278,7 @@ Note that there are occasionally situations in which values are available immedi There is yet another standard LINQ operator for selecting one particular element from the source: `ElementAt`. You provide this with a number indicating the position in the sequence of the element you require. In data-at-rest LINQ providers, this is logically equivalent to accessing an array element by index. Rx implements this operator, but whereas most LINQ providers' `ElementAt` implementation returns a `T`, Rx's returns an `IObservable`. Unlike with `First`, `Last`, and `Single`, Rx does not provide a blocking form of `ElementAt`. But since you can await any `IObservable`, you can always do this: ```cs -IAisMessage fourth = await recieverHost.Message.ElementAt(4); +IAisMessage fourth = await receiverHost.Message.ElementAt(4); ``` If your source sequence only produces five values and we ask for `ElementAt(5)`, the sequence that `ElementAt` returns will report an `ArgumentOutOfRangeException` error to its subscriber when the source completes. There are three ways we can deal with this: @@ -286,7 +286,7 @@ If your source sequence only produces five values and we ask for `ElementAt(5)`, - Handle the OnError gracefully - Use `.Skip(5).Take(1);` This will ignore the first 5 values and the only take the 6th value. If the sequence has less than 6 elements we just get an empty sequence, but no errors. -- Use ElementAtOrDefault +- Use `ElementAtOrDefault` `ElementAtOrDefault` extension method will protect us in case the index is out of range, by pushing the `default(T)` value. Currently there is not an option to provide your own default value. diff --git a/content/13_LeavingIObservable.md b/content/13_LeavingIObservable.md index 68c90aa..59cf35f 100644 --- a/content/13_LeavingIObservable.md +++ b/content/13_LeavingIObservable.md @@ -21,7 +21,7 @@ long v = await Observable.Timer(TimeSpan.FromSeconds(2)).FirstAsync(); Console.WriteLine(v); ``` -Although `await` is most often used with `Task`, `Task`, or `ValueTask`, it is actually an extensible language feature. It's possible to make `await` work for more or less any type by defining some suitable extension methods and some supporting types. That's precisely what Rx does. If your source file includes a `using System.Reactive.Linq;` directive, a suitable extension method will be available, so you can `await` any task. +Although `await` is most often used with `Task`, `Task`, or `ValueTask`, it is actually an extensible language feature. It's possible to make `await` work for more or less any type by supplying a method called `GetAwaiter`, typically as an extension method, and a suitable type for `GetAwaiter` to return, providing C# with the features `await` requires. That's precisely what Rx does. If your source file includes a `using System.Reactive.Linq;` directive, a suitable extension method will be available, so you can `await` any task. The way this actually works is that the relevant `GetAwaiter` extension method wraps the `IObservable` in an `AsyncSubject`, which provides everything that C# requires to support `await`. These wrappers work in such a way that there will be a call to `Subscribe` each time you execute an `await` against an `IObservable`. From f65060dddf801e42f5c9c4d977f12d1f7fcc8a0a Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Tue, 5 Dec 2023 16:51:34 +0000 Subject: [PATCH 101/142] Ch06 updates after review feedback --- content/06_Transformation.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/content/06_Transformation.md b/content/06_Transformation.md index 5de763b..e2f032e 100644 --- a/content/06_Transformation.md +++ b/content/06_Transformation.md @@ -4,7 +4,7 @@ title: Transformation of sequences # Transformation of sequences -The values from the sequences we consume are not always in the format we need. Sometimes there is more information that we need, and we need to pick out just the values of interest. Sometimes each value needs to be expanded either into a richer object or into more values. +The values from the sequences we consume are not always in the format we need. Sometimes there is more information than we need, and we need to pick out just the values of interest. Sometimes each value needs to be expanded either into a richer object or into more values. Up until now, we have looked at creation of sequences, transition into sequences, and, the reduction of sequences by filtering. In this chapter we will look at _transforming_ sequences. @@ -190,7 +190,7 @@ The Rx version of the example we're currently examining is in fact one of these ![An Rx marble diagram showing 7 observables. The first illustrates the Range operator producing the values 1 through 5. These are colour coded as follows: green, blue, yellow, red, and pink. These colours correspond to observables further down in the diagram, as will be described shortly. The items in this first observable are not evenly spaced. The 2nd value immediately follows the 1st, but there are gaps before the 3rd, 4th, and 5th items. These gaps correspond with activity shown further down in the diagram. Beneath the first observable is code invoking the SelectMany operator, passing this lamba: "i => new string((char)(i+64),i).ToObservable()". Beneath this are 6 more observables. The first 5 show the individual observables that the lambda produces for each of the inputs. These are colour coded to show how they correspond: the first observable's item is green, to indicate that this observable corresponds to the first item emitted by Range, the second observable's items are blue showing that it corresponds to the second item emitted by Range, and so on with the same colour sequence as described earlier for Range. Each observable's first item is aligned horizontally with the corresponding item from Range, signifying the fact that each one of these observables starts when the Range observable emits a value. These 5 observables show the values produced by the observable returned by the lambda for each of the 5 values from Range. The first of these child observables shows a single item with value 'A', vertically aligned with the value 1 from the Range observable to indicate that this item is produced immediately when Range produces its first value. This child observable then immediately ends, indicating that only one item was produced. The second child observable contains two 'B' values, the third three 'C' values, the fourth four 'D' values and the fifth give 'E' values. The horizontal positioning of these items indicates that all of first 6 observables in the diagram (the Range observable, and the 5 observables produced by the lambda) overlap to some extent. Initially this overlap is minimal: the first of the lambda-produced observables starts at the same time the Range produces its first value so these two observables overlap, but since this first child completes immediately it overlaps with nothing else. The second child starts when Range produces its second value, and manages to produce two values and then completes before anything else happens, so thus far, the child observables produced by the lambda overlap only with the Range one, and not with each other. However, when Range produces its third value, the resulting child observable produces two 'C' values, but the next thing that happens (as denoted by the horizontal position of the items) is that Range manages to produce its 4th value and its corresponding child observable produces the first of its 'D' values next. After this, the third child observable produces its third and final 'C', so this third child overlaps not just with the Range observable, but also with the fourth child. Then the fourth observable produces its second 'D'. Then the Range produces its fifth and final value, and the corresponding child observable produces its first 'E'. Then the fourth and fifth child observable alternate, producing 'D', 'E' and 'D', at which point the fourth child observable is complete, and now the fifth child observable produces its final three 'E' values without interruption, because by this time it is the only observable still running. At the bottom of the diagram is the 7th observable representing the output of the SelectMany. This shows all the of the values from each of the 5 child observables each with the exact same horizontal position (signifying that the observable returned by SelectMany produces a value whenever any of its child observables produces a value). So we can see that this output observable produces the sequence 'ABBCCDCDEDEDEEE', which is exactly what we saw in the example output earlier.](GraphicsIntro/Ch06-Transformation-Marbles-Select-Many-Marbles.svg) -We can make a small tweak to prevent the child sequences all from trying to run at the same time. (This also uses `Observable.Repeat` instead of the rather indirect route of constructing a `string` and then calling `ToObserable` on that. I did that in earlier examples to emphasize the similarity with the LINQ to Objects example, but you wouldn't really do it that way in Rx.) +We can make a small tweak to prevent the child sequences all from trying to run at the same time. (This also uses `Observable.Repeat` instead of the rather indirect route of constructing a `string` and then calling `ToObservable` on that. I did that in earlier examples to emphasize the similarity with the LINQ to Objects example, but you wouldn't really do it that way in Rx.) ```cs Observable @@ -259,7 +259,7 @@ As it happens, `SelectMany` is also a particularly important operator in the mat ## Cast -C#'s type system is not omniscient. Sometimes we might know something about the type of the values emerging from an observable source that is not reflected in that source's type. This might be based on domain-specific knowledge. For example, with the AIS message broadcast by ships, we might know that if the message type is 3, it will contain navigation information. That means we could write this: +C#'s type system is not omniscient. Sometimes we might know something about the type of the values emerging from an observable source that is not reflected in that source's type. This might be based on domain-specific knowledge. For example, with the AIS messages broadcast by ships, we might know that if the message type is 3, it will contain navigation information. That means we could write this: ```cs IObservable type3 = receiverHost.Messages @@ -285,7 +285,9 @@ source.Where(i => i is int).Select(i => (int)i); The `Materialize` operator transforms a source of `IObservable` into one of type `IObservable>`. It will provide one `Notification` for each item the source produces, and, if the sourced terminates, it will produce one final `Notification` indicating whether it completed successfully or with an error. -This can be useful because it produces objects that describe a whole sequence. If you wanted to record the output of an observable in a way that could later be replayed...well you'd probably use a `ReplaySubject` because it is designed for precisely that job. But if you wanted to be able to inspect or modify the items in the sequence once they had been collectors, you might want to write your own code to store items. `Notification` can be helpful because it enables you to represent everything a source does in a uniform way. You don't need to store information about whether or how the sequence terminates separately—this information is just the final `Notification`. +This can be useful because it produces objects that describe a whole sequence. If you wanted to record the output of an observable in a way that could later be replayed...well you'd probably use a `ReplaySubject` because it is designed for precisely that job. But if you wanted to be able to do something other than merely replaying the sequence—inspecting the items or maybe even modifying them before replying, you might want to write your own code to store items. `Notification` can be helpful because it enables you to represent everything a source does in a uniform way. You don't need to store information about whether or how the sequence terminates separately—this information is just the final `Notification`. + +You could imagine using this in conjunction with `ToArray` in a unit test. This would enable you to get an array of type `Notification[]` containing a complete description of everything the source did, making it easy to write tests that ask, say, what the third item to emerge from the sequence was. (The Rx.NET source code itself uses `Notification` in many of its tests.) If we materialize a sequence, we can see the wrapped values being returned. From 8b18e7aa781f23489bf9877f3dd1d83800558961 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Tue, 5 Dec 2023 18:03:22 +0000 Subject: [PATCH 102/142] Ch07 update after review --- content/07_Aggregation.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/07_Aggregation.md b/content/07_Aggregation.md index 360aebd..4383f9a 100644 --- a/content/07_Aggregation.md +++ b/content/07_Aggregation.md @@ -48,7 +48,7 @@ sum-->15 sum completed ``` -`Sum` is only able to work with values of type `int`, `long`, `float`, `double` `decimal`, or the nullable versions of these. This means that there are types you might expect to be able to `Sum` that you can't. For example the `BigInteger` type in the `System.Numerics` namespace represents integer values whose size is limited only by available memory, and how long you're prepared to wait for it to perform calculations. (Even basic arithmetic gets very slow on numbers with millions of digits.) You can use `+` to add these together because the type defines an overload for that operator. But `Sum` has historically had no way to find that. The introduction of [generic math in C# 11.0](https://learn.microsoft.com/en-us/dotnet/standard/generics/math#operator-interfaces) means that it would technically be possible to introduce a version of `Sum` that would work for any type `T` that implemented [`IAdditionOperators`](https://learn.microsoft.com/en-us/dotnet/api/system.numerics.iadditionoperators-3). However, that would mean a dependency on .NET 7.0 or later (because generic math is not available in order versions), and at the time of writing this, Rx supports .NET 7.0 through its `net6.0` target. It could introduce a separate `net7.0` and/or `net8.0` target to enable this, but has not yet done so. (To be fair, [`Sum` in LINQ to Objects also doesn't support this yet](https://github.com/dotnet/runtime/issues/64031).) +`Sum` is only able to work with values of type `int`, `long`, `float`, `double` `decimal`, or the nullable versions of these. This means that there are types you might expect to be able to `Sum` that you can't. For example the `BigInteger` type in the `System.Numerics` namespace represents integer values whose size is limited only by available memory, and how long you're prepared to wait for it to perform calculations. (Even basic arithmetic gets very slow on numbers with millions of digits.) You can use `+` to add these together because the type defines an overload for that operator. But `Sum` has historically had no way to find that. The introduction of [generic math in C# 11.0](https://learn.microsoft.com/en-us/dotnet/standard/generics/math#operator-interfaces) means that it would technically be possible to introduce a version of `Sum` that would work for any type `T` that implemented [`IAdditionOperators`](https://learn.microsoft.com/en-us/dotnet/api/system.numerics.iadditionoperators-3). However, that would mean a dependency on .NET 7.0 or later (because generic math is not available in older versions), and at the time of writing this, Rx supports .NET 7.0 through its `net6.0` target. It could introduce a separate `net7.0` and/or `net8.0` target to enable this, but has not yet done so. (To be fair, [`Sum` in LINQ to Objects also doesn't support this yet](https://github.com/dotnet/runtime/issues/64031).) If you supply `Sum` with the nullable versions of these types (e.g., your source is an `IObservable`) then `Sum` will also return a sequence with a nullable item type, and it will produce `null` if any of the input values is `null`. @@ -108,7 +108,7 @@ original items that produce the maximum, and if there were three that all did th So unlike the other aggregation operators we've seen so far, an observable returned by `MinBy` or `MaxBy` doesn't necessarily produce just a single value. It might produce several. You might ask whether it really is an aggregation operator, since it's not reducing the input sequence to one output. But it is reducing it to a single value: the minimum (or maximum) returned by the callback. It's just that it presents the result slightly differently. It produces a sequence based on the result of the aggregation process. You could think of it as a combination of aggregation and filtering: it performs aggregation to determine the minimum or maximum, and then filters the source sequence down just to the elements for which the callback produces that value. -**Note**: LINQ to Objects also defines [`MinBy`](https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable.minby) and [`MaxBy`](https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable.maxby) methods, but they are slightly different. These LINQ to Objects versions do in fact arbitrarily pick a single source element—if there are multiple source values all producing the minimum (or maximum) result, LINQ to Objects gives you just one whereas Rx gives you all of them. Rx defined its versions of these operators years before .NET 6.0 added their LINQ to Objects namesakes, so if you're wondering why Rx does it differently, the real question is why did LINQ to Objects not follow Rx's precedent. Presumably the .NET runtime library implementors decided they wanted to make `Min/MaxBy` feel as similar as possible to `Min` and `Max`. +**Note**: LINQ to Objects also defines [`MinBy`](https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable.minby) and [`MaxBy`](https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable.maxby) methods, but they are slightly different. These LINQ to Objects versions do in fact arbitrarily pick a single source element—if there are multiple source values all producing the minimum (or maximum) result, LINQ to Objects gives you just one whereas Rx gives you all of them. Rx defined its versions of these operators years before .NET 6.0 added their LINQ to Objects namesakes, so if you're wondering why Rx does it differently, the real question is why did LINQ to Objects not follow Rx's precedent. ## Simple Boolean Aggregation @@ -273,7 +273,7 @@ If the built-in aggregations described in the preceding sections do not meet you ### Aggregate -The `Aggregate` method is very flexible: it is possible to build any of the operators shown so far in this chapter with it. You supply it with a function, and it invokes that function once for every element. But it doesn't just pass the element into your function: it also provides a way for your function to collect—to _aggregate_—information. As well as the current element, it also passes in an _accumulator_. The accumulator can be any type you like—it will depend on what sort of information you're looking to collect. `Aggregate` passes in the current accumulator value, and then whatever value your function returns becomes the new accumulator value, and it will pass that into the function along with the next element from the source. There are a few variations on this, but the simplest overload looks like this: +The `Aggregate` method is very flexible: it is possible to build any of the operators shown so far in this chapter with it. You supply it with a function, and it invokes that function once for every element. But it doesn't just pass the element into your function: it also provides a way for your function to _aggregate_ information. As well as the current element, it also passes in an _accumulator_. The accumulator can be any type you like—it will depend on what sort of information you're looking to accumulate. Whatever value your function returns becomes the new accumulator value, and it will pass that into the function along with the next element from the source. There are a few variations on this, but the simplest overload looks like this: ```csharp IObservable Aggregate( @@ -473,4 +473,4 @@ source.Aggregate(0, (acc, current) => acc + current); source.Scan(0, (acc, current) => acc + current).TakeLast(); ``` -Aggregation is useful for reducing volumes of data or combining multiple elements to produce averages, or other measure that incorporate information from multiple elements. But to perform some kinds of analysis we will also need to slice up or otherwise restructure our data before calculating aggregated values. So in the next chapter we'll look at the various mechanisms Rx offers for partitioning data. \ No newline at end of file +Aggregation is useful for reducing volumes of data or combining multiple elements to produce averages, or other measures that incorporate information from multiple elements. But to perform some kinds of analysis we will also need to slice up or otherwise restructure our data before calculating aggregated values. So in the next chapter we'll look at the various mechanisms Rx offers for partitioning data. \ No newline at end of file From 56861d5e03b5c1f9487d8027bdeba08b4a3cc0eb Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Wed, 6 Dec 2023 14:51:32 +0000 Subject: [PATCH 103/142] Ch08 update after review feedback --- content/08_Partitioning.md | 63 +- ...08-Partitioning-Marbles-Status-Changes.svg | 199 +++ .../Ch08-Partitioning-Marbles.ai | 1556 ++++++++++------- 3 files changed, 1116 insertions(+), 702 deletions(-) create mode 100644 content/GraphicsIntro/Ch08-Partitioning-Marbles-Status-Changes.svg diff --git a/content/08_Partitioning.md b/content/08_Partitioning.md index 9cdf576..a2fd954 100644 --- a/content/08_Partitioning.md +++ b/content/08_Partitioning.md @@ -10,7 +10,7 @@ Rx can split a single sequence into multiple sequences. This can be useful for d The `GroupBy` operator allows you to partition your sequence just as `IEnumerable`'s `GroupBy` operator does. Once again, the open source [Ais.Net project](https://github.com/ais-dotnet) can provide a useful example. Its [`ReceiverHost` class](https://github.com/ais-dotnet/Ais.Net.Receiver/blob/15de7b2908c3bd67cf421545578cfca59b24ed2c/Solutions/Ais.Net.Receiver/Ais/Net/Receiver/Receiver/ReceiverHost.cs) makes AIS messages available through Rx, defining a `Messages` property of type `IObservable`. This is a very busy source, because it reports every message it is able to access. For example, if you connect the receiver to the AIS message source generously provided by the Norwegian government, it produces a notification every time _any_ ship broadcasts an AIS message anywhere on the Norwegian coast. There are a lot of ships moving around Norway, so this is a bit of a firehose. -If we know exactly which ships we're interested in, you saw how to filter this stream in the [Filtering chapter](05_Filtering.md). But what if we don't, and yet we still want to be able to perform processing relating to individual ships? For example, perhaps we'd like to discover any time any ship changes its `NavigationStatus` (which reports values such as `AtAnchor`, or `Moored`). The [`Distinct` and `DistinctUntilChanged` section of the Filtering chapter](05_Filtering.md#distinct-and-distinctuntilchanged) showed how to do exactly that, but it began by filtering the stream down to message from a single ship. If we tried to use `DistinctUntilChanged` directly on the all-ships stream it will not produce meaningful information. If ship A is moored and ship B is at anchor, and if we receive alternative status messages from ship A and ship B, `DistinctUntilChanged` would report each message as a change in status, even though neither ship's status has changed. +If we know exactly which ships we're interested in, you saw how to filter this stream in the [Filtering chapter](05_Filtering.md). But what if we don't, and yet we still want to be able to perform processing relating to individual ships? For example, perhaps we'd like to discover any time any ship changes its `NavigationStatus` (which reports values such as `AtAnchor`, or `Moored`). The [`Distinct` and `DistinctUntilChanged` section of the Filtering chapter](05_Filtering.md#distinct-and-distinctuntilchanged) showed how to do exactly that, but it began by filtering the stream down to messages from a single ship. If we tried to use `DistinctUntilChanged` directly on the all-ships stream it will not produce meaningful information. If ship A is moored and ship B is at anchor, and if we receive alternative status messages from ship A and ship B, `DistinctUntilChanged` would report each message as a change in status, even though neither ship's status has changed. We can fix this by splitting the "all the ships" sequence into lots of little sequences: @@ -46,7 +46,7 @@ IObservable> shipStatusChangeObservables = .Skip(1)); ``` -This uses [`Select`](06_Transformation.md#select) (introduced in the Transformation chapter) to apply processing to each group that comes out of `perShipObservables`. Remember, each such group represents a distinct ship, so the callback we've passed to `Select` here will be invoked exactly once for each ship. This means it's now fine for us to use `DistinctUntilChanged`. The input this example supplies to `DistinctUntilChanged` is a sequence representing the messages from just one ship, so this will tell us when that ship changes its status. This is now able to do what we want because each ship gets its own instance of `DistinctUntilChanged`. +This uses [`Select`](06_Transformation.md#select) (introduced in the Transformation chapter) to apply processing to each group that comes out of `perShipObservables`. Remember, each such group represents a distinct ship, so the callback we've passed to `Select` here will be invoked exactly once for each ship. This means it's now fine for us to use `DistinctUntilChanged`. The input this example supplies to `DistinctUntilChanged` is a sequence representing the messages from just one ship, so this will tell us when that ship changes its status. This is now able to do what we want because each ship gets its own instance of `DistinctUntilChanged`. `DistinctUntilChanged` always forwards the first event it receives—it only drops items when they are the same as the preceding item, and there is no preceding item in this case. But that is unlikely to be the right behaviour here. Suppose that the first message we see from some vessel named `A` reports a status of `Moored`. It's possible that immediately before we started running, it was in some different state, and that the very first report we received happened to represent a change in status. But it's more likely that it has been moored for some time before we started. We can't tell for certain, but the majority of status reports don't represent a change, so `DistinctUntilChanged`'s behaviour of always forwarding the first event is likely to be wrong here. So we use `Skip(1)` to drop the first message from each ship. At this point we have an observable sequence of observable sequences. The outer sequence produces a nested sequence for each distinct ship that it sees, and that nested sequence will report `NavigationStatus` changes for that particular ship. @@ -64,51 +64,60 @@ I've replaced `Select` with [`SelectMany`, also described in the Transformation Wait a second! Haven't I just undone the work that `GroupBy` did? I asked it to partition the events by vessel id, so why am I now recombining it back into a single, flat stream? Isn't that what I started with? -It's true that the stream type has the same shape as my original input: this will be a single observable sequence of AIS messages. (It's a little more specialized—the element type is `IAisMessageType1to3`, because that's where I can get `NavigationStatus` from, but these all still implement `IAisMessage`.) And all the different vessels will be mixed together in this one stream. But I've not actually negated the work that `GroupBy` did. A quick look at some output shows that this is very different from the raw `receiverHost.Messages`. First, I need to attach a subscriber: +It's true that the stream type has the same shape as my original input: this will be a single observable sequence of AIS messages. (It's a little more specialized—the element type is `IAisMessageType1to3`, because that's where I can get `NavigationStatus` from, but these all still implement `IAisMessage`.) And all the different vessels will be mixed together in this one stream. But I've not actually negated the work that `GroupBy` did. This marble diagram illustrates what's going on: + + +![A marble diagram showing how an input observable named receiverHost.Messages is expanded into groups, processed, and then collapsed back into a single source. The input observable shows events from three different ships, 'A', 'B', and 'C'. Each event is labelled with the ship's reported status. All the messages from A report a status of Moored. B makes two AtAnchor status reports, followed by two UnderwayUsingEngine reports. C reports UnderwaySailing twice, then AtAnchor, and then UnderwaySailing again. The events from the three ships are intermingled—the order on the input line goes A, B, C, B, A, C, B, C, C, B, A. The next section is labelled as perShipObservables, and this shows the effect of grouping the events by vessel. The first line shows only the events from A, the second those from B, and the third those from C. The next section is laballed with the processing code from the preceding example, and shows three more observables, corresponding to the three groups in the preceding part of the diagram. But in this one, the source for A shows no events at all. The second line shows a single event for B, the first one where it reported UnderwayUsingEngine. And it shows two for C: the one where it reported AtAnchor, and then the one after that where it reported UnderwaySailing. The final line of the diagram is a single source, combining the events just described in the preceding section of the diagram.](GraphicsIntro/Ch08-Partitioning-Marbles-Status-Changes.svg) + +The `perShipObservables` section shows how `GroupBy` creates a separate observable for each distinct vessel. (This diagram shows three vessels, named `A`, `B`, and `C`. With the real source, there would be a lot more observables coming out of `GroupBy`, but the principle remains the same.) We do a bit of work on these group streams before flattening them. As already described, we use `DistinctUntilChanged` and `Skip(1)` to ensure we only produce an event when we know for certain that a vessel's status has changed. (Since we only ever saw `A` reporting a status of `Moored`, then as far as we know its status never changed, which is why its stream is completely empty.) Only then do we flatten it back into a single observable sequence. + +Marble diagrams need to be simple to fit on a page, so let's now take a quick look at some real output. This confirms that this is very different from the raw `receiverHost.Messages`. First, I need to attach a subscriber: ```cs shipStatusChanges.Subscribe(m => - Console.WriteLine($"Ship {((IAisMessage)m).Mmsi} changed status to {m.NavigationStatus} at {DateTimeOffset.UtcNow}")); + Console.WriteLine($"Vessel {((IAisMessage)m).Mmsi} changed status to {m.NavigationStatus} at {DateTimeOffset.UtcNow}")); ``` If I then let the receiver run for about ten minutes, I see this output: ``` -Ship 257076860 changed status to UnderwayUsingEngine at 23/06/2023 06:42:48 +00:00 -Ship 257006640 changed status to UnderwayUsingEngine at 23/06/2023 06:43:08 +00:00 -Ship 259005960 changed status to UnderwayUsingEngine at 23/06/2023 06:44:23 +00:00 -Ship 259112000 changed status to UnderwayUsingEngine at 23/06/2023 06:44:33 +00:00 -Ship 259004130 changed status to Moored at 23/06/2023 06:44:43 +00:00 -Ship 257076860 changed status to NotDefined at 23/06/2023 06:44:53 +00:00 -Ship 258024800 changed status to Moored at 23/06/2023 06:45:24 +00:00 -Ship 258006830 changed status to UnderwayUsingEngine at 23/06/2023 06:46:39 +00:00 -Ship 257428000 changed status to Moored at 23/06/2023 06:46:49 +00:00 -Ship 257812800 changed status to Moored at 23/06/2023 06:46:49 +00:00 -Ship 257805000 changed status to Moored at 23/06/2023 06:47:54 +00:00 -Ship 259366000 changed status to UnderwayUsingEngine at 23/06/2023 06:47:59 +00:00 -Ship 257076860 changed status to UnderwayUsingEngine at 23/06/2023 06:48:59 +00:00 -Ship 257020500 changed status to UnderwayUsingEngine at 23/06/2023 06:50:24 +00:00 -Ship 257737000 changed status to UnderwayUsingEngine at 23/06/2023 06:50:39 +00:00 -Ship 257076860 changed status to NotDefined at 23/06/2023 06:51:04 +00:00 -Ship 259366000 changed status to Moored at 23/06/2023 06:51:54 +00:00 -Ship 232026676 changed status to Moored at 23/06/2023 06:51:54 +00:00 -Ship 259638000 changed status to UnderwayUsingEngine at 23/06/2023 06:52:34 +00:00 +Vessel 257076860 changed status to UnderwayUsingEngine at 23/06/2023 06:42:48 +00:00 +Vessel 257006640 changed status to UnderwayUsingEngine at 23/06/2023 06:43:08 +00:00 +Vessel 259005960 changed status to UnderwayUsingEngine at 23/06/2023 06:44:23 +00:00 +Vessel 259112000 changed status to UnderwayUsingEngine at 23/06/2023 06:44:33 +00:00 +Vessel 259004130 changed status to Moored at 23/06/2023 06:44:43 +00:00 +Vessel 257076860 changed status to NotDefined at 23/06/2023 06:44:53 +00:00 +Vessel 258024800 changed status to Moored at 23/06/2023 06:45:24 +00:00 +Vessel 258006830 changed status to UnderwayUsingEngine at 23/06/2023 06:46:39 +00:00 +Vessel 257428000 changed status to Moored at 23/06/2023 06:46:49 +00:00 +Vessel 257812800 changed status to Moored at 23/06/2023 06:46:49 +00:00 +Vessel 257805000 changed status to Moored at 23/06/2023 06:47:54 +00:00 +Vessel 259366000 changed status to UnderwayUsingEngine at 23/06/2023 06:47:59 +00:00 +Vessel 257076860 changed status to UnderwayUsingEngine at 23/06/2023 06:48:59 +00:00 +Vessel 257020500 changed status to UnderwayUsingEngine at 23/06/2023 06:50:24 +00:00 +Vessel 257737000 changed status to UnderwayUsingEngine at 23/06/2023 06:50:39 +00:00 +Vessel 257076860 changed status to NotDefined at 23/06/2023 06:51:04 +00:00 +Vessel 259366000 changed status to Moored at 23/06/2023 06:51:54 +00:00 +Vessel 232026676 changed status to Moored at 23/06/2023 06:51:54 +00:00 +Vessel 259638000 changed status to UnderwayUsingEngine at 23/06/2023 06:52:34 +00:00 ``` The critical thing to understand here is that in the space of ten minutes, `receiverHost.Messages` produced _thousands_ of messages. (The rate varies by time of day, but it's typically over a thousand messages a minute. The code would have processed roughly ten thousand messages when I ran it to produce that output.) But as you can see, `shipStatusChanges` produced just 19 messages. -This shows how Rx can tame high volume event sources in ways that are much more powerful than mere aggregation. We've not just reduced the data down to some statistical measure that can only provide an overview. Statistical measures such as averages or variance wouldn't be able to tell us anything about any particular ship. But here, every message tells us something about a particular ship. We've been able to retain that level of detail, despite the fact that we are looking at every ship. We've been able to instruct Rx to tell us any time any ship changes its status. +This shows how Rx can tame high volume event sources in ways that are much more powerful than mere aggregation. We've not just reduced the data down to some statistical measure that can only provide an overview. Statistical measures such as averages or variance are often very useful, but they aren't always able to provide us with the domain-specific insights we want. They wouldn't be able to tell us anything about any particular ship for example. But here, every message tells us something about a particular ship. We've been able to retain that level of detail, despite the fact that we are looking at every ship. We've been able to instruct Rx to tell us any time any ship changes its status. It may seem like I'm making too big a deal of this, but it took so little effort to achieve this result that it can be easy to miss just how much work Rx is doing for us here. This code does all of the following: - monitors every single ship operating in Norwegian waters - provides per-ship information -- reports events at a rate that a human could reasonable cope with +- reports events at a rate that a human could reasonably cope with It can take thousands of messages and perform the necessary processing to find the handful that really matter to us. This is an example of the "fanning out, and then back in again" technique I described in ['The Significance of SelectMany' in the Transformation chapter](06_Transformation.md#the-significance-of-selectmany). This code uses `GroupBy` to fan out from a single observable to multiple observables. The key to this step is to create nested observables that provide the right level of detail for the processing we want to do. In this example that level of detail was "one specific ship" but it wouldn't have to be. You could imagine wanting to group messages by region—perhaps we're interesting in comparing different ports, so we'd want to partition the source based on whichever port a vessel is closest to, or perhaps by its destination port. (AIS provides a way for vessels to broadcast their intended destination.) Having partitioned the data by whatever criteria we require, we then define the processing to be applied for each group. In this case, we just watched for changes to `NavigationStatus`. This step will typically be where the reduction in volume happens. For example, most vessels will only change their `NavigationStatus` a few times a day at most. Having then reduced the notification stream to just those events we really care about, we can combine it back into a single stream that provides the high-value notifications we want. +This power comes at a cost, of course. It didn't take much code to get Rx to do this work for us, but we're causing it to work reasonably hard: it needs to remember every ship it has seen so far, and to maintain an observable source for each one. If our data source has broad enough reach to receive messages from tens of thousands of vessel, Rx will need to maintain tens of thousands of observable sources, one for each vessel. The example shown has nothing resembling an inactivity timeout—a vessel broadcasting even a single message will be remembered for as long as the program runs. (A malicious actor fabricating AIS messages each with a different made up identifier would eventually cause this code to crash by running out of memory.) Depending on your data sources you might need to take steps to avoid unbounded growth of memory usage, so real examples can become more complex than this, but the basic approach is powerful. + Now that we've seen an example, let's look at `GroupBy` in a bit more detail. It comes in a few different flavours. We just used this overload: ```cs @@ -145,7 +154,7 @@ public static IObservable> GroupBy` will return an `IObservable>`, `Window` will return an `IObservable>`. This means that `Window` doesn't have to wait until it has filled a complete buffer before producing anything. +The `Window` operator is very similar to the `Buffer`. It can split the input into chunks based either on element count or time, and it also offers support for overlapping windows. However, it has a different return type. Whereas using `Buffer` on an `IObservable` will return an `IObservable>`, `Window` will return an `IObservable>`. This means that `Window` doesn't have to wait until it has filled a complete buffer before producing anything. You could say that `Window` more fully embraces the reactive paradigm than `Buffer`. Then again after some experience you might conclude that `Window` is harder to use than `Buffer` but is very rarely any more useful in practice. Because `Buffer` returns an `IObservable>`, it can't produce a chunk until it has all of the elements that will go into that chunk. `IList` supports random access—you can ask it how many elements it has, and you can retrieve any element by numeric index, and we expect these operations to complete immediately. (It would be technically possible to write an implementation of `IList` representing as yet unreceived data, and to make its `Count` and indexer properties block if you try to use them before that data is available, but this would be a strange thing to do. Developers expect lists to return information immediately, and the lists produced by Rx's `Buffer` meet that expectation.) So if you write, say, `Buffer(4)`, it can't produce anything until it has all 4 items that will constitute the first chunk. diff --git a/content/GraphicsIntro/Ch08-Partitioning-Marbles-Status-Changes.svg b/content/GraphicsIntro/Ch08-Partitioning-Marbles-Status-Changes.svg new file mode 100644 index 0000000..bb0865c --- /dev/null +++ b/content/GraphicsIntro/Ch08-Partitioning-Marbles-Status-Changes.svg @@ -0,0 +1,199 @@ + + + + + + + + + + + + + + + receiverHost.Messages + shipMessages.OfType<IAisMessageType1to3>() .DistinctUntilChanged(m => m.NavigationStatus).Skip(1) + perShipObservables + shipStatusChanges + + + AMoored + + + + AMoored + + + + AMoored + + + + AMoored + + + + AMoored + + + + AMoored + + + + BAtAnchor + + + + BUnderwayUsingEngine + + + + BUnderwayUsingEngine + + + + BUnderwayUsingEngine + + + + BUnderwayUsingEngine + + + + BAtAnchor + + + + BAtAnchor + + + + BAtAnchor + + + + CUnderwaySailing + + + + CUnderwaySailing + + + + CUnderwaySailing + + + + CUnderwaySailing + + + + CUnderwaySailing + + + + CUnderwaySailing + + + + CUnderwaySailing + + + + CAtAnchor + + + + CAtAnchor + + + + CAtAnchor + + + + CAtAnchor + + + + CUnderwaySailing + + + + + + + + + + + + + + BUnderwayUsingEngine + + + + BUnderwayUsingEngine + + + + + + + \ No newline at end of file diff --git a/content/GraphicsIntro/Ch08-Partitioning-Marbles.ai b/content/GraphicsIntro/Ch08-Partitioning-Marbles.ai index 09ca5d7..3671bf3 100644 --- a/content/GraphicsIntro/Ch08-Partitioning-Marbles.ai +++ b/content/GraphicsIntro/Ch08-Partitioning-Marbles.ai @@ -1,5 +1,5 @@ %PDF-1.6 % -1 0 obj <> endobj 2 0 obj <>stream +1 0 obj <> endobj 2 0 obj <>stream @@ -25,22 +25,22 @@ Adobe Illustrator 28.0 (Windows) 2023-11-02T14:40:45+01:00 - 2023-11-02T15:14:08Z - 2023-11-02T15:14:08Z + 2023-12-06T10:32:13Z + 2023-12-06T10:32:13Z 256 - 192 + 140 JPEG - /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAwAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXjXkX83/M2vazo Ns9xpGpjVbm/g1TSdOhmS80uK0aVYri5kNzcpxk9JdnjjryHGuKvQZfzF8oRa3Host5JHeS3P1GK RrW6Fq13Sv1dbwxfVTL/AJHqcq7UriqDi/Nz8v5dWfSo9TdruPUDpEzfVbv0I78SGL6tJcGL0Edn UhAzjl+zXFW9e/NryHoN9c2Wo304ns5IoLs21jfXccU9wAYYXltoJo1lfkOKFuW/TFURrP5meStG vZLLUb94ZrdIpb1ltrqWK1Sf+6a8miieK1DdvWZcVQvmzzHqzeZtC8paBMkF/qSyahqF+VEv1fTb R0EhRWBQvPJIsSk7CpPWmKoT8w/Onm3y7q2gR6dp1q2j6hqum6be3907NI31+5MLpbwxleLRoOXq SNSpACtvRVnmKuxVhH5i/mEvlu90jSILrT7C/wBY9eT9JavJ6Vla29qqmWWSjxGRi0iIkfNeRP2h TFUTqV75qu/IP6T8uatYaprUSfXLa7s4QLC+WJy5t1UzXbKsyD0+azEhviB7YqnHlPzJY+ZvLOme YLGotdTto7mNG+0nNalG90aqn5Yqm2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2K uxV5f5Y/LDzDoEPlG7tpbI6votxf2+rtzlEc+l6jcy3DRowj5NJE5idFdQvIMKitcVSm6/Kv8x77 zFY3mo6lBeQWPmGPVzeS6nqR52cNwJIrePSwi2MDxx7chyqe4qTiqPuPyn8wyeXNQ0xbizFxd+cW 8yo5eXgLRr9boIx9OvremtKU41/apvirzbzBrFtaeZ/OUt7MLixHmKK4l8mjUksrzUJbQW6wSQac LC6uZwzoGDJdoshWpCgYq9C138pNWufM/mPUorWLV9H80ejJdadca3quimNlt1t5IpY7BLiC5R1T 9tQRUruMVTbzNb/4U89+WfNAhI8vmxfy1qTLycWYnliks5mY/F6Zmj9JmPTkCcVRf5neXPOvmCTR oNEtNNa00rVLDWGnvb6e3keSxn9UwCKKzuVCuAP3nPb+XbdVd+YXnjX/AC7pWhR6fb2U3mnVb21t zofOW5MkTuFuzbMot5CsIapmeMKo+0u4GKs7xVhfnPyhq175q8vebNFis7rUtCW6gay1CR4IpIbx VBZJ44bpo5I2jHE+magkYqlmmW1x+WX5e6jPdhb/AFi9vrq8g0+wRvSe/wBSnLQ2Vqh+LgHdVBIG 1WoMVZD+Wnli58r+QdC0C6cPd2FoiXTLTj6zfHKFp2DsQMVZNirsVdirsVdirsVdirsVdirsVdir sVdirsVdirsVdirsVdiriQoJJoBuSegGKsc8o+am12/8yWzejw0XVDYW7QtUvF9TtrgO+5353DLt ttirI8VdirsVaZlVSzEKqirMdgAO5xVTgu7W45fV5o5uNOXpsGpXpWh9sVVcVdirsVad0RGd2Coo JZiaAAbkknFVOC6tbgEwTJMF+0Y2DUr40OKquKuxV2KtO6IjO7BUUEsxNAANySTiqnBdWtwCYJkm C/aMbBqV8aHFVXFXYq7FVskkcaGSRgiLuzMQAB7k4qtgube4UtBKkqg0LIwYA+G2KqmKuxV2KrZZ YokMkrrHGv2nYgAfMnFVsFxbzoXglSVAaFkYMK9aVGKqmKuxV2KuxVhXn7z7eaPdWvl/y9ax6h5r 1JGlt4JmK29rbqeLXd2V+IRqxoqr8Tt8I7kRlIANGo1EcUeKTD2/Luy1U/WPOV7ceab5jyYXrstk hrWkFihECL8wzf5WY0spLzeftTLM7HhHl+tVn/K78u5eJTy9Y2siV4T2UK2cyk91ltvSkB+TZETl 3uPHW5gfqPzv727fXfNPkFhc3l9c+YvJSf72fWqz6np6f7+SUDndQr1dXrIq7gtSmXQy3sXdaLtT jPDPY971u1ure7tobq2lWa2uEWWCaMhkdHHJWUjYgg1By93LCvP3n6+02+i8s+WYY7vzTdReu7z8 vqtjbElfrNzxoWLMCI4gauQdwATluLEZmg0ajURxRssLbyBp2ouLnzZdXHmnUCeTy6k5a3U9xDZJ xtolr0ASviTmzx6WEfN0GbtDLM7HhHk3P+WPkCQq8WhWllMm8dzYJ9SmU+Ky23pOD9OWSwQPQNMd ZlifqP3omy82+Z/IUqNrV7N5g8lswSe/ufj1HTQxoJZZAB9Ztwftkj1EG9WAzX6jS8O45O40faAy HhltL73sMckcsayRsHjcBkdSCrKRUEEdQcw3aML85+ddWh1eLyn5ThiuvM1xF691c3FTaabak0E9 wFIZ3cgiKIEFtySFGY2q1UcMeKSpRF+VHl68ZbrzXLP5t1Lq8+quZIAx3IhslItokr0ASvuc5nN2 pmmdjwjyZUr3H5SflrLRofL1np86/wB3c6bH+j51Pis1p6Mg+/KYa7NE2JH47/eqFGs+Zvy9kWTW tQm1/wAjllSXUrkB9R0zkaB53QD6zbV+05HqJ1PIDN9oe1BlPDPaX3op6ejo6K6MGRgCrA1BB3BB GbdDzz8x/wAyb3S75PLHleOO58zzxia5uJgWttPt3JCzTgEc5HofSir8XU0UbwyZBEWXK0mklnlw x+J7nnM/lCz1SUXXmi6uPMt8TyaXUnMkKnqRFajjbxLXsqZgyzyL0+DsvDAbjiPmsf8AL/yb6izW +lQWFzHvFdaeDZTIeoKyWxicH6ciMsh1bp6DBIUYj4bfcn+g/mH5i8l3EMHmW8k1ryjK6xnV56G9 07kaK1y4A+sQVIrIQHTqeQzLxZ+LY83Qa/ss4hxQ3j9z21WVlDKQysKqw3BB7jMh07zj8wPzH1SD V28p+UFik11Y1k1TU5x6lvpsUm6cowR6txIu8cVQKfE3w7G3DhMzs5Wl0ks0qHLqWDSeRNGv5Rde Y3n8y39eRudWkNwoP/FcBpbxr/kpGM2UNNCPS3osXZ2GA5X73P8Al55NEgms9Mi0u6Qfu7vTK2E6 HqCslsYmqDkpYIHoznocMhvEfDb7k98vfmD5g8o31vYebb1tV8sXLrBa+YZlVbqzlc8Y0vigVJIm NFE9AQ32+vLMDPpjDccnR63s84vVHeP3PZMxXWPMfP35j6u2rTeVfJjxJqdsF/TOtzJ6sNiJF5JF FGfhmuWU8uJ+FBTlWtM13aHaUNNHfeR5BzdHopZzttEcywd/I2h3kv1nXRL5iviavd6vIbskn+WN /wBzGPBY0UZyGftfUZD9XD7tv2vR4uzsMB9N+/dpvy/8pJKLjT7FdHvU/ur3SmawmQ9iHtjH+NRk MXauogbEyffv97LJoMMh9IHu2ZP5S/MTX/L2qWeh+cLn9JaRfyrbaZ5kZVSaKZ9ore/VQEPqH4Um UD4tmG9c6vsztaOo9J9M/v8Ac8/ruzjh3G8HsGbh1rsVdirxzyFJ+lxqvnGY+pdeY7yWWFzuUsLd 2gsoR7CJOZ/ynbMTNKy8t2rmM8tdIsomdo4XkSNpnRSyxJxDOQKhV5lVqegqQPfKnWhjfkTzRqXm G31eXULIafLYanPYR2pKtIqQpGR6rI8sZermvBuOSlGm/UYRAijdxtkzKrKVYAqRQg7gg5Fx0B+U Fx+ioPMXlSRqWfly89TTSa0TT72MXMUe9TSFzLGP8lRmbjlYex0ObxMQkebGvy/9S/0ufzVdKf0j 5pmbVJmb7SwSn/Q4Qd/hituCgfM983mlx8MB5uj7QzGeUjpHZP8AU/0n9RlGlmAXxoITdBzCPiHI sEoxotaAEb9xl8rrZw41e/JI/LvmHUpvMOq+XNVaC4v9Nit7kXlnE8ELxXPIKjRSSXBSRWjP+7Dy BB23GQhM2Yno3ZMYERIcj3+XyZHNFFNE8MqCSKRSkkbCqsrChBB6gjLGgGm/yc1A2PlvVvL95MTH 5SvZbOGSQlmGntEl3aVJrX04JxGP9TNHmhwzIet02XxMYkpflTbSTeWv8T3i11XzZIdZvJGNWEdx vaQgmvwwW3poo9j45xXaec5Mx7o7OSGUax+mDp0w0Y241IgC3a8DmAHkORcRkOaLWgBFT3GYUOG/ Vy8lY95X8ya3P5m1fy1q/wBXvLnS4re5OqWEMlvblbkHjBJDJLcsky8C394aqQdsvy4oiAnHa+h8 vgNlZTcW8Fzby21xGstvMjRzROAysjijKwPUEHMYEg2FY1+Vd/8Aovy3rGg3srGPydfXFikshJf6 gsaXdoSSd+FtOiV/yc7fSZvExRl3hi818nG5vdNk8xX4/wByvmSQ6pesdyonAMEIrvxhg4RqO1Mx s0rk9n2ZgGPCO+W6bX9/Z6fZzXt7KsFrbqXmlboqj/PplQFubOYiCTyDHvKPmjV9Z1fWra/slsYb L6s9lCa+v6VyjOPX3KhyFB4gfDWh3yycAAKcbTaiU5SEhVVXfv3sluIIbiCS3nRZYJlaOWNhVWRh RlI8CDlblEAiin/5T+Zzpv5a6vFqLtMPJEt5Zs7tV2s7WIXVtU07WsqJX/JzZ45cQBeG1WHw8ko9 xYp5Js7mLQYr6/b1NX1gnU9Vm7vc3X7xh8owRGo7KozeYIcMAHp9FhGPEB8St8+a/d+X/Kt3q1oY RPA9uqtchmhUTXEcTM4V4zRVkJ+0MllmYxsM9TlOPGZDy+9V8s393fwS3L6zpus2pISKbTIWjRWH 2gz/AFm7DdRsKUxgb6g+7+1OGRkL4oyHl/aU0vrG1v7Keyu4xNa3MbRTxN0ZHHFgfoOTIsUW2URI UeRTTyR52udM/JvU9R1FzdX3k2O/s55JK1nOmhjbsxrUmWH0iT4nNHOPCSHjM2PgmY9xYn5T0mbT NDt4rpjLqVxW61S4b7ct5cH1J5GPiXY/RQZ5rrtSc2aUz37e7o9jpMAxYxH8Wpeb/M8Xl/ToZj6f 1i8nS0tPXcRQiSSpLyufsxxorO3ypg0mmOWRHQCzXP4eZTqM4xxvqTSI8t38l/p5uH1Ox1YM5CXW moUhAAFU/v7rkwNankPlkNRjEZVwyh5S5/cGWGfELsS939pROr6XZ6tpd1pt6nO1u42ilXvRhSo8 COoPjkMWWWOYlHmGWTGJxMTyL0D8o9fvtb8g6dPqUnq6pZmfTtQlPV57CZ7V5D7yelzPzz0vDkE4 CQ/iAPzeHyQ4ZGPcWY5Ywdirxr8qT6fkLS7B9rjSlk0y6Q7Ms1jK1vIGHY1jrmFkHqLx+vgY5pX3 sqmdo4XkSNpnRSyxJxDOQKhV5lVqegqQPfIOIGGflzb69aXOvpqmi3Wmx6jqdzqVtNPJZyIY5hGq xkW9xO4k+Ek/Dx/ysnOtnK1RiRHhkDUQOv6QzbIOIw/QPJtt5t82+drxr3ULSG3+p6XDJp19dWMb zxWzTSiUWzxiXh9aQfHWm4zLwj0vV9lQIwjzW/lpcet5A8vgrwkt7GG0nQgArNar9XmQgdOMkTDO hwG4D3Ok1cayyHmmfmS81qz0S6uNEsBqeqooFpZl0iVnZgtWaRo1ogPIjkK0oDXJzJA2FlqxRiZA SNBIfy+06605LpLzSb+DU71vrWqaxftYk3VwaLQLa3NyyKo2jSnFVFK1614hXMG+/Zu1EhKqIocg L2+YDMMucZivlfyNa+cLzz1qJvtStEkvP0Zaiyv7qzhke1sYo5WkjgkjSWkzsnxA/Zpmm1RvIXqO z41hiy/8rb9L/wDLny3Oo4sun28E6Hqk1ughmQ/6ksbL9GcBrIGOWQPeXOTvWrzU7PTpLjTdPOqX cZUrYrKkDOtRy4PLROQXcBiAfEZTjiCaJoKw7yL5a1Cy82avq8Oj/wCF/L91awW9voPK3q9yju8t 28VpJNbRFg4T4GJalW3zK1GUGAjfHIHnvy7t91Z/mGrzDTPJEHm+/wDzB1RL7UrYz6g+n2MVlqF1 ZQSPZ6db20jSxQSRxyfv1dCXB+zToM7Hs2JjgiD+LLEsd8jXSXPk7RZUFKWUEbqeqyRoI5FPurqQ cpyCpF7rSSEsUSP5oRus6Hpus2i2moxtJAsiTKElkhYSRnkjB4mRwVO/XBGRHJsy4o5BUvx8kh8s +U5NK83a7qFLn6pcx2qWUs95Pcc+KMJeSyyyMSrUClxt+ztXJyncQHGwafgyylvRqtyff1+/4Mty tzUl0L8v182eVPzF1OK71GK5vZ7yy062tL26gtpXtdOitqy28MiRTcp0ZGDqagUO2bHCKiHi+0pi WeRH4rZNvLOow6l5d0y/gIMV1awyrTtzjBp8x0OdDA3EF6fDMSgCOoVtVu7+1tPWsbFtRlDKGtkk jicoftFDKVQkeDMPnhkSOQtlORAsC0h8q6TqY8x67r97ZnTI9UFtFBYO8Ty0tlcNNN6LSR8n57Uc 7DfK4RPESdraMEJccpkVxVt7vcyrLnKYfbeQx5g/Krz1rsFzqPr3Nzq02m2kF9dR2dwtmPSHO0Rx BL6kluy/Eh5CgOaTObkXj9ZMHNIjvZDp97BfWFtfW55QXUSTRN4pIoZT9xzyvJAxkYnmDT2UJCQB HVIfPGiX+oRaTe2EC3V1o2oRXws2ZU9ZFVkdFZ6KHo/JeRAqMytFmjAyjI0JxIvucfVYjLhIFmMr pb5T0nUotc1/W7u1OnR6vJb+hYM8byL9XjKNLJ6LPGHkLfssdgKnDqssTjhAHi4L3955C99l0+OQ nKZFcVbe73MozBcpZ+U3kDTtd8qza/PqesWy6vqWoXVtFYapf2UPoG7kjif0YJo0q6Rhq03rnpWi xmGGETzER9zxGpmJZZEdSWZ/8qn0X/q9+Y/+4/qv/ZRmS0O/5VPov/V78x/9x/Vf+yjFWM+brWby J5mvPMIjZ/JuvyrNrEiDl+jr+ixm5YDf6vcKF9Rv2HHI7NlOXHe4dV2lojlHFH6h9rIIJ4LiGOeC RZYJVDxSoQysrCoZWGxBGYrzJFbFfihj3mfzS2nyQ6RpEP6S81agCumaUhqanb17gj+6t4+ru3yG +ThAyLmaPRyzS/o9SznyH5Sj8q+WrfSvW+tXhZ7nU74ijXF5cMZLiY/6zseI7LQdszQHroxEQAOQ edeZrNvIHma81CVSPJXmG4N1JdKKppuoy0EvrfyW903xh+iyFgaBgczdJqBH0nk6ztHRmfrjzT+O SOSNZI2DxuAyOpBBBFQQR1BzaOgbxVj3mLzFeJeReXfLsS6h5t1BT9UtK1jtozsbu7Ir6cMda77u fhXfMfPnEB5uZpNJLLL+i9M8meVrTyt5astDtZGmFqpM9zJ/eTzysZJpn/ypJHZj8805NvTgUKDB r2Y/lz5ku5LxSvkXzBdG6TUP916ZqNwf30c/8ltcv8aydEkLBqBgc0namgOT1w+rqO9kCzpHSRFd GDo4DKymoIO4IIzmkrsVYj5w84XFvcJ5Z8tKt95y1BaWtsPijs422N7eEV9OGOtd93NFUGuZ+h0M s0rP0dVZZ5P8sWXlfy3Y6HaO0yWiES3Mn95NM7F5p5P8uWRmdvc514FCgxeQecdHk8heZLu7lUjy Xrlw1zDdgH09Ovp2rNFOeiQzyNzjforEqafDmNnxXuHedk68Q/dzPp6FFqysoZSCpFQRuCDmG9M3 iqT6lqGo3mox+WfLSrdeZ71aoh3js4Ts13dEVCRpWoB3c0Va5bixGR8nXa/XxwxofWfxb2zyf5Ys fK3lnTtAsSz29hEI/Vf7cshJeWV/8qWRmdvc5sXjybeQa3pzfl5r81ndr6fkzVrh59G1E7RWdxOx eWxnPSNTIWaBjtQ8K1GZ2lzgeku67M1wiPDn8CnINdx0zYu/diqQarf6lq+ojyl5Wb1PMF0ALm6U c4tNt3+1dXBGysFr6SE1ZqdsxtRnERQ+p1uv1wxR4QfWfse1+XfL+m+X9AsdC09ONhp8CW0KtQkq i0LOe7N1Y9zmpeXeJX2mt+Xutt5fvgYvK95Kz+WdTb+5jErFzp0z/sPExPo8vtpQDcEZynbfZcuI 5YC7+ofp/W9B2XrxXhzPu/UnWcu752KpFePqPmbVj5O8tuTfTADWtTjoY9NtX2d3bp67rURR9a/E fhGb3sjsuWWQyTH7sfb+x1XaWvGOJhE+s/Y930jSrHSNJs9KsI/SsbCCO2tYhvxiiUIg+4Z2zyyL xV2KtOiSI0cih0cFXRhUEHYgg4q8/ufyZ0a3ne48q6nfeVmcl2s7BopLAu3VvqVyk0Sf88uGRlAH m4+bSY8n1C2O+WfJ3mrzBfeY7LUvOd/HaaLqh01fqNvZW0sqCztrnkZTDIU3uSvw+HXIjFFoj2Zg Bvh+96L5U8i+WPK0cw0e04XN0Q17fzO893cMO81xKXkf2BNB2GWAObGIiKGwT7FksngguIXgnjWW GVSksTgMrKwoVZTsQcVee3H5K6VayGTyrrGoeWUJ5GwtmjuLCpNTxtbpJljr4RFB7ZbDPOPIuPl0 uPJvILP+VSa3cfu9R87anJan7cdnBZWcje3rLE8ij/UIPvkzqsh6tUez8IN0y3yr5K8s+VbSS30O xW29ch7q4JaS4ncftzzyFpJG3/aY+2UE25gAGwTvAlTuLe3uYJLe5iSa3mUpNDIodHRhRlZTUEEd QcVYL/yqO106Rn8o65qPlmJjX9HW7RXWngnc8LW7SZYq+ETIMxc2ixZN5R3Vz/lx5qu/3Wpee9Ta 0P24rG3sbKRvYzJC8i/7AqffKodmYIm+FNsk8r+TfLfle1kt9FsltvXb1Lq4ZmluJ5P5555C8sje 7MczgABQQnWFVO6tba7tpba6hS4tplMc0Eqh0dGFCrK1QQR1BxV5ve/kTosUpk8s6xqHlxCa/UIG jubEVNTwt7pJfT+UbKo8MrliieYcvDrs2MVGWyin5I3s7cNT85anNbftRWkVpZs3sZUieQD/AFCp 98AwQHRtn2pnkK4mceVfJnlnypYtZaDYJZxSt6lxIC0k0z/zzTSFpJW36uxy1wCSTZTrFChfWFlq FnNZX1vHdWdwpjntpkWSN0bqrowIYH3xV53cfkdptq7N5Y1zUdAhPTT0aK8slBNT6cV2krx/JJAB 4ZbDPOPIuVi1uXGKjLZYn5LXtw4XVvOOqXFqKVt7SO1sS3iGliiMtD/kMp98lLUzPVnPtHNIVxM3 8s+UvLnlfTv0foNjHY2xbnIEqzyOeryyMWeRz/M7E5Q4ZNpvihC6ppem6rYT6fqdrFe2NypSe2nQ SRup7MrAg4q88n/I2ztn/wCdb8xanott0XT2aK+tkHhGLtJJUHsJKe2a/P2Xp8puUd/Lb7nMxa/N AUJbfNbH+SMly3HWvNuqXtr+1a2q29grjuHkgj9ah/yZFyOLsjTQNiO/nv8Aeyydo55CjL5bM88u +WdA8t6ammaFYQ6fYoS3owrTkx6u7GrO5puzEk5sgHBTPFXYq7FXYq7FWlRFLFVClzycgUqaUqfo GKt4q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYq7FXYq7FXl2mfnLqtzcWU1zoEEOjahr0vly3uItQaW89eKZ4RM1q1rEvp1j5NxmJUb 02xV6A3mTy6sD3DapZiCO6+oSTGeIIt2H9P6szcqCXn8PD7VdqYqknmDzjrFt5rs/K2g6VDqOqXF lLqU8l5dtZW8VvFKkI+OOC8kd2kf7IjpTvirvMvnLVdN1zQ/L2maXDf65rUVzcBJ7trW1his1jMr PMsFxI1WmVUCw79+OKpneebfL+kmxtfMOq6dpOqXqKY7Ka8jUvIaKywGb0XlUOeIbgK+A6Yqqax5 s8q6KzLrOs2OmMqpIy3lzDAQkjMqMfUZdmZGAPcg+GKpZ5185No2kWL6PHFqWsa7PHZaBBzHoyzT KXErup/uY4laVyvVRQbkYqo/mJ5+TyP5U/Stza/pTVH4xWmm27eibmcIXk4lvU9ONI0eRmNeKr3x VPPLOs/pzy3pOtej9X/Slnb3v1flz9P6xEsvDnReXHlStBXFUyxVIfOnme58uaJLqNtpVxq86hyl tAVRVEcTys80z/DFGFjPxbmtAASaYqh7TzDrmt/l3Y+Y9BtIE1fUtNttRs9PunZ4uU8STmBpVEZ3 DFA9Ou5FNsVRvk7zRY+afLNhr1kjRQ3sfJ4JP7yGVGKTQv8A5cUisje4xVOcVdirsVdirsVdirsV dirsVdirsVdirsVdirsVdirsVdiqT2ep+YZfMuoafc6L9W0O2iiew1v61FJ9akcAyR/VlHqRemdu THftirxjQvyt8xx3tuI/K/6I1+HzPcatJ5y9WxUnTXu3lMIa3mku5TNA3p+lJGF33IxVE6r5J/ME Wt/5ftfL73Fvc+dP8RDVxdWiQfUZL5LqixtKJ/VTcMpjAoKhiaDFWU3v5ReWrv8ANX9MXPlXS59C m0idbuSS1tHWTUpLxJPUeJlLNK0fL94V9q74qu8y/lRoOq/mhomtSeWNNu9K+qaj+nJ5ba1YS3Up g+rNMjjnK/wyUbieO+4rirH/ADX+XHmJ/OPmmRbTVbvyx5msrS1EOhNoYMcNvb/V3tZU1dFdFrWR DBJQFugbfFWTWP5e/wDISLPVrzT/AK1pNj5Xg0i1vLxoZZlnE8glRgprzaB/jdV4mpAOKoTzvpOm +TJfIGr2cHo+V/Kd49ndKXkk+q2l9avZxzs8hduELuoYsdlOKq/5jfl95p16/vdc0nVLN2XRbvTd N0q6snn4tdofWkhnW8tkSWcBI+boQqjwrVVx13zB+Wv5I2mpa1bW+o6noWn2cUmnxMLIUURQ+j6h e8V5YwT8S7SEfCorir0W1n9e2in4NF6qK/puKMvIV4sPEd8VSPz5Jqh8r6haaZpNzq91f281okNq 9rGUMsLqJHa7ntl4BqA8SW36YqlXkK9uPLv5YaYnmiyl0D/DemW1rqD3klq6EWdqiyTRvbTXC+mW UheRVv8AJxVR/JTTb208iRXV5AbWXWby91dLNhxaGK/uXnhjYHowjdSR2O2Ks7xV2KuxV2KuxV2K uxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVTuba3ureW2uYkntp0aOeCRQ6Ojji ysrVDKwNCDiq6KKKGJIokWOKNQkcaAKqqooAANgAMVQt/o2j6jJbSahY295JZSevZvcRJK0MoFPU iLg8G/yl3xVGYq7FVG8srO9t2tr2CO5t3KloZkWRCUYOpKsCPhZQR74qrYq7FXYq7FXYq7FXYq7F XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq 7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqxb8v9X1HU4Nea+mM5tNc1C0tyQBwggl4xoKA fZHjirKcVdirsVdirsVdirsVdirsVdirsVdirsVYt5h/NDyB5euzZarrdvFfgVawi5XNyB7wW6yy j/gcBLKMSTQS22/PH8rZp1hk1sWLNQK+o213p8e+w/eXkUCfjiJAspYpx5ghnEE8FxCk8EiywyAN HKhDKynoVYbEYWtfirsVYnr/AOa35eaDevYalrcA1CM0lsbcSXdyh8HgtlmkU/NcIBPJlGJPIIO0 /O38r7idIH1xbGSQ8U/SUFzpyk+zXkUC/jhMSOYTLHKPMEM2jkjljWSNg8bgMjqQVZSKggjqDkWC 7FXYqxXXfzU/LvQrxrHUtetY79NpLKJjcXC/68MAkkX6VyMpiIsmkiJPJD6b+cf5Y6hdJaQ+YbWG 5kIWKG752bOTsAguVh5n/VwRyRlyNplAjmGZAgio3B6HJsXYq7FXYq7FXYqwr8rf95vM3/gSar/y fxVmuKuxV2KuxV2KuxV2KuxV2KuxV2KuxV4/+YnnXWdb1668oeXLuTTtN04qnmLWbc8Z2ldeQsbV 6fAwRg0sg3WoUUNcpzZeH3uy7O0Bzmz9AYV5Je0hm1LSoNEj0X9HtFVFkWWSUTKXDyso3fbf43+e YeTvu3pNJQuAjwcNfj8Wn2qtOunTmCzGoTFaJZsyoslTSjM9VC9zsfkcgObk5L4TQvyYx5P8y675 SudR1DRLMw6fpd36PmHyrbS/WbSWMxpM1xpzMkPpzoktTGFVWI4kVocy4ZaoE7F57VaATEpQHDKJ 3A3B67cvk+lNK1Sw1bTLXU9OmW5sL2JJ7WdPsvHIoZWH0HMp0Lx78x/OfmDzJqGp6D5YeWPRNHJg 1a4tZRb3F9eChayt7gn9zFHWk8g+Kvwr0OZODAZb9HYaLRHKDIj0j7Ul8jyWkMWoaRDpFvo8ulTJ FPDZyevC5kiWVXEpjhdmo/xc0rXxzY4q3FVT0GmoXEREeHu/ARfm/VRpukmaWPTpLRjwuBqt39Tg IIqFDGG4DsSPskDDklQ6fFnnnwxv015mv0FLfKPmPUvJ2l2HmjRreaPyheRJc615VYmT6rFKA73V gP2GjBLNEKK612Vsws2AGPFEV5Om1ehEoeLAVtZD6HtLu2vLSG7tZFmtbmNZYJkNVeNwGVlPgQa5 guleMeePN+s+cdU1HQtCupLLyvpjva6hewO0E2oXce0ltFOnJ4raNvglkQcmaqrsDXSdq9q+B6I/ WfsH63a9n9n+L6pfT97Ffy+1bS5zf6Xpun6faW+niEmfSbhbu1kaUN8JlEUBMqcPiBB6jfOY1+KY qcpSJlf1Cj8rOzvNJkibjERAH802PuG6dearvS7bRJ31G1S/iekcWnsiyG4mc8YoURgQWdjQeHXp mNpYzlMcJ4fPuHUt+eURA8Qvy7/JK/y989an5R0rT9a4yr5GuqrqeivK102k/vDH9YtJCAxgVhWW Looqy+Gdbou0iMpwZDxHpLlfvee1WhBx+LAUOo7n0ejpIiyRsHRwGR1NQQdwQRm+dQ3irsVdirsV eZ/l95v8pab/AIntdR1uwsrkeY9VJguLqGKQAz9eLspxVln/ACsPyB/1M2lf9J1t/wA14q7/AJWH 5A/6mbSv+k62/wCa8Vd/ysPyB/1M2lf9J1t/zXirv+Vh+QP+pm0r/pOtv+a8Vd/ysPyB/wBTNpX/ AEnW3/NeKu/5WH5A/wCpm0r/AKTrb/mvFXf8rD8gf9TNpX/Sdbf814q7/lYfkD/qZtK/6Trb/mvF Xf8AKw/IH/UzaV/0nW3/ADXirv8AlYfkD/qZtK/6Trb/AJrxV3/Kw/IH/UzaV/0nW3/NeKqGofmZ 5CtLC5ul8w6ZM1vE8qwpe25ZyiluKjn1NKDFXjnka3kj8rWFxcP6t7qMf6Qv5z1kubw+vM58fjkP 0ZrMsrkXt9DiEMMQO6/mp6Xoev2OtX+qXOoW13HfBDNaw2bwv+5QpGI5HupFHXfku/tiZAik48U4 zMiQb6V3f5yjptp52vPL2pRXt8NO1S7uZm02d4oZpLW1Zh6aSJCyxNIFDbhz1G5piTEFEI5pQNnh kSa5bD4bKa6T5l0Typd2OmvDdah6bLpzWcAgZJnBrNOby5nEp5nk7E1O+zHDYMt0eHkx4yI7y6UK +J4pG0+/LDz7a+TPy18y6RrmqWces+V3u5LK1eaONplktEv0WGNiGZTNO6IoHSg9sz8crFvJavEc eQxPP8FD6Noeo23kW10yxvfqeqPaqX1GRBcMLmb95PMULKHZpHZt26nvm9hCoADZ6fFhMcQjE0aQ 9ro/mXQfK9/aWksN/fGJhYNZW4t5vrMgIa4ne8up0lbmwdixHQ7NUDAIyjEgfj5lEcc4QIG56UK3 7zZNphHaebn0LT4W1Czi1ZYUXU55bVriOSXgA5jVJrUL8VexHsMlUqG+7YI5OECxxddr/SEsuNE8 waTpeg6F5cZjDDco2qXsy25iNoGZriNkY8wZS/wCJNqUqoyJiQAItZxzjGMYd+525dfwE48s/mJp 3lX8ofMmmnVLaLWfLLanZ6LaSzxrcOiAy2KpEzc2CCVYxQfs5qcseGRDy+px8GSUR3qei6MdI8u2 ulWbqktrbiJJnUupl47yOoZC3J6s3xCvjnmGfN4mUzl1L2WLFwQER0CX2uianY3uoa9dzDU9Vmtk to4LGBLVeETMyhVnmk5OWfq8tPllss0ZRjjA4YA3ub+4fcGuOKUSZn1SqthX3n9Klpvli81TQNI/ xg7z67Zc5WuLWeW0ZJJOS7NaPCOQibiabdadclk1Ihkl4O0D3gH/AHV9UQwGcI+L9Y7jX3UgLryp rOieRpNB8uSS3epXTemLudxJFGsj8nZ47uSULH6dUKxhjU141qctjqoZc/iZKER0HP8A2IG977/N rlglDFwQ3kfx1PL3PSfyf89+W7HyJaaLreu2VtqOhTXOlPHdXMUMhis53it24yMrUMCpvndabL4m OM/5wBeUzY+CZj3Fmn/Kw/IH/UzaV/0nW3/NeXNTv+Vh+QP+pm0r/pOtv+a8VZBirsVed/lx5f0G 8TzPPd6ba3Mx8x6qDLLDG7U9f+ZlJxVl/wDhPyr/ANWax/6Rof8AmnFXf4T8q/8AVmsf+kaH/mnF Xf4T8q/9Wax/6Rof+acVd/hPyr/1ZrH/AKRof+acVd/hPyr/ANWax/6Rof8AmnFXf4T8q/8AVmsf +kaH/mnFXf4T8q/9Wax/6Rof+acVd/hPyr/1ZrH/AKRof+acVd/hPyr/ANWax/6Rof8AmnFXf4T8 q/8AVmsf+kaH/mnFXf4T8q/9Wax/6Rof+acVQ+o+SPK15p91ZjSrKI3MMkIlW2hDLzUryHw9RXFX iXkaeV/K1hbXC+nfacn6Ov4e8dzZH6vKp/2cZ+jNZljUi9voMonhiR3V8kFpXmPVm83SaJeyQzQ+ hLKkos7mwYPFIqcI/rEkq3K8WJLxbCnvhMRw2jHnl4vAa5dxj953+Cfazq9ppOnS31zUolFjiQVk lkY8Y4o1/ad2IVRkIiy5GXIIRspb5M1nWdU0+6fWIYIL+1u5baSK25FFEfEgcmLciOVCeh8MlOIB 2atLlnOJ46BBrZkH5feStP8ANnkHzhfz2kEsvmq4v4tLvZY1LC3jtl0+GRGI5AFoGdSOxrmfijUQ HkddlGTNKQ5X92yT6N5ps4/I9nrV+Wj9KBI7uELWQXUZ9GSBUG5k9cFAvjm+hkHAJPS4tRE4hM93 4+1vyPr2uaxaai2tW8NpeWd89t9XgLEIgiilVXZi3J19XizCgNNhjikTd96dNllMHiFEH9TvOWta 3ph079GpSC4lkW+uzY3Wo+iixM6t6No8b/E4C1rTfHJIiq+611GSUa4fjsZfYE10bUI73R7a++tw 3ccsYkN3CjQxN4sI3eRk9wzEjvk4mxbbjncQbtS8teR4PM35MeZr5LCJ9U8ztqd9o8zxIZgrVjsm RyOS8xCkgof2s0uaXFIl5DU5OPIZDvQlnrraj5TTW9PQSyz2ZuYIQC1ZfT5emVU8qh/hI612zzKe DgzeHLapU9jHLxY+OPUWgPJnmG+1QSxajdxNfxxRSS6eNPutOmh9QGvJbuWRpVrsGVQNst1mnjCj EHh334oyB/0o2a9NmM/qO/dwmNfM7q3nbzO/l/TbaWJVa5vrqOztjIssiK7qzljHCGkf4I2oqirG gyGj03iyIPKIs8v07MtTn8OII5k1+KRPl/WY73R2vJr2K5MDypdTR28tkI2iJ5I8Fw8ksbIPtBj7 5DUYTGfCARfLcS+0UCyw5OKNk38K+wsw/JnyrpFz5DttY1LS7ea6125u9VDXECO4hvLh5LYVdSae gUOeiabF4eKMf5sQHjM+TjnKXeSzj/CflX/qzWP/AEjQ/wDNOXtTv8J+Vf8AqzWP/SND/wA04qmu KuxVhX5W/wC83mb/AMCTVf8Ak/irNcVdirsVdirsVdirsVdirsVdirsVdiryH8xPJGsaNrtz5v8A LdnJqFhqFG8xaLbjlP6qKFW9tI/23KDjLGN2oCKtWtObFxDzdl2drzgNH6Cwfy9DpGpXK61a63Nr t3bRyQ26XLwxi3MhHNGighgKOeAB9RCwzDlY2qnpMHBM8Ylxnpy2+QH2r9K8umLRLyLzdJBqcc93 NfGG7b61b20bmqRK9wq1WMdCVWlemAy39KceGoHxaluTvuB5b9yF8m+RbPzHc32l+Sbf6hoF9Mza 55phijjjERNGs9PdUQSt1AYVWKpNS1BmTjxylRk6XV6zFiEoYecuZH3B9KaZptjpem2um2EK29jZ RJb2sCfZSKJQqKPkBmU6J4/+ZH5eyaTqd9rlnpI17ytq8oudf0IQrcSW90PtX0ELBvVV6VljA5cv jWtSMyMGYR2lvF2Gi1Yh6Zi4FiGj6F5YbQNZuPIRszdaxzpcwutt9X9VBHxV7eJpYvSoXWMrXnXc VqM+MY0eDq7zHjhwSOKrl8K+QTuTSru18t2Vte+YrmzexgRL3VUNsrTFUCs8jXUc4Wp3qKH3yzhq O5bjAiABkRXM7fptC+WPLc3nKzt/LvltJrbyNF8Gr+YXLKbqLlylt7J2o0rzMWEkw+FQTQlqZhZt QAOGLp9Zroxh4ePl3voK0tba0tYbS1iWG2t0WKCFBxVI0AVVUDoABQZguleJ+dvKmp+StR1HVdNh nn8m6o8l1draIJZ9KupSTNNHCVfnbOx9QgK3BqnjxOaLtbsrxj4kB6xzH8523Z/aHhjgl9Pf3JJo tjaSW11rek6mfMGoXkKwxXtxPGqcEqVjDWsIjiAZiTxi5V65y2aZBEJx8OIPIA/P1Hf5u+xxFGcT xkjmT+obfJTt/LL2/lDT7PX9Zla+0thdHXDIokjmBajepcCRWCpIY/3imq9Rkpam80jjgOGW3D5f D3XsgYKxgTlvHfi/t+W7fk3yZL50DaZphuG8lT3D3HmHzHcfBJqblhzt7XisYZH4hJJUUIEHFd86 Ls7s2ZmMuUcPD9Me78fO+bpdbrYiJx4zd/VLvfRsMMUMSQwoscUahI40AVVVRQKoGwAGdE6Zdirs VdirsVYp+Xul6hp8GvrewNAbnXdRurcP+3DNNyjcezDpirK8VdirsVdirsVdirsVdirsVdirsVdi rsVYz5i/LLyD5juvrmsaHa3F8aVvlUw3JA6AzwmOUjbpyxpIkRuErtPyP/Ku2lSU6BHeNGaoL+a4 v1BHT4buSZdvlgAAZSySlzJLOIoYoYkihRY4owFSNAFVVGwAA2AwsF2KuxVi2vflb+XuvXrX+p6F bSag/wBu+iDW9w1f5poDHI30thBpIkRyQNj+Sn5XWc6TjQYruWM8o21CWfUOLVryAvJJxX3xMiea ZTlLmbZsiIiKiKFRQAqgUAA2AAGBi3irsVYdrP5P/ltq969/daHFDfSby3djJNYTOfF5LR4Gc/6x yE8cZbSALKM5R5GlGy/JT8sLS5S5OiLeyxmsZ1Ge51FVI6FVvJZ1BHsMEMMIfSAPcEyySlzJLNkR ERURQqKAFUCgAGwAAyxg3irsVdir/9k= + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAjAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A69rcWn+YfN3rweYNZ0kR 2kMMsNhcxxQNHK1wIp5IyGdObN8L9fg+IALvX4gunBj2hjM+HfnV9LSDQNLltNcisr7z1rOp3igX KTXBjWHgLyORJBEGqIisQikqTsxNI1IzLOmkBbIa7GZcPnV9LZXG9s3nuzvpNcvnntbBDc2FY1tZ 4lEsX1v0QaqrPLybj3C1FAM1X8oY+Lh351fS3MpMX/M7y2mtfosly3Ev6wKEcFYIZePLn6dTTlT5 bb5k+NG6c8dm5TDi25XXWnSfmf5aTzA2iFnM8cXrySDiVEPqGP1etTHyUjl9wI3zMGnkRfxYR0OQ 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 4yFiK7qss8v+ezpF7MsmleZdSmvJDAiPZl0jUandgSvNz9IErOvTqirxruFVTpPzk09o5ZD5a8wq IYklI/R7EszQtO0aAP8AEyKtCR8PIgAk4qidS/NGCztYbiDQtU1BX+siQWluZODWsqRdduayepzV l24gnrtiqy3/ADZ0+coF0jUV5Hi3OELxYTSwsNz0LQN6Z/bPw9dsVZ1irsVdirsVdirsVdirsVdi rsVdirsVdirsVdirsVdirsVdirsVQl1qMFteQwzyxxRyxyvykYKS0bRgAVI/nOKt/pbSv+W2D/ka n9cVd+ltK/5bYP8Akan9cVd+ltK/5bYP+Rqf1xV36W0r/ltg/wCRqf1xV36W0r/ltg/5Gp/XFXfp bSv+W2D/AJGp/XFXfpbSv+W2D/kan9cVd+ltK/5bYP8Akan9cVd+ltK/5bYP+Rqf1xV36W0r/ltg /wCRqf1xV36W0r/ltg/5Gp/XFXfpbSv+W2D/AJGp/XFXfpbSv+W2D/kan9cVd+ltK/5bYP8Akan9 cVd+ltK/5bYP+Rqf1xV36W0r/ltg/wCRqf1xV36W0r/ltg/5Gp/XFXfpbSv+W2D/AJGp/XFXfpbS v+W2D/kan9cVd+ltK/5bYP8Akan9cVd+ltK/5bYP+Rqf1xVRuNd0uACRrqAwj+9f1Uqo/mpXp4+G KphirsVdirsVdirsVdirsVdiqk0Ba7jnrtHHJHx8ebIa/RwxVVxVpXRiwVgShowB6GgND9BxVvFX Yq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FVOaBZuIcngpqU24t4cvliqpirsVdirsV dirsVdirsVdirsVdiqWwJfm8vzDNEieutFeJnP8AcRdxIn6sVRHp6r/y0Qf8iH/6rYq709V/5aIP +RD/APVbFXenqv8Ay0Qf8iH/AOq2Ku9PVf8Alog/5EP/ANVsVd6eq/8ALRB/yIf/AKrYq709V/5a IP8AkQ//AFWxV3p6r/y0Qf8AIh/+q2KtGPVAKm5gAHU+g/8A1WxVi/5hWnmWXQ5hZvDNIIZ/QUws IluSn7h5hylrGrV5bUHXMnTEAm+dbODr4yMRV1e9dy7yHaa9HpgMrQwBoofUURMYmuAp9Z4Rzjoh NKHvh1UokiufVHZ8JiJu6va2T+nqv/LRB/yIf/qtmK57vT1X/log/wCRD/8AVbFXenqv/LRB/wAi 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 default uuid:65E6390686CF11DBA6E2D887CEACB407 xmp.did:6d601e58-17dd-9b47-826d-deaa351f2a23 - uuid:793c63f3-74b9-48e0-a041-16fbce425bea + uuid:b670219e-4901-4d82-866d-303594220b9b xmp.iid:d5e0e1a1-24df-8f4c-9817-d3a41a08c4f3 xmp.did:d5e0e1a1-24df-8f4c-9817-d3a41a08c4f3 @@ -72,29 +72,29 @@ False False - 227.366972 - 191.018349 + 767.715596 + 562.009174 Pixels - Consolas - Consolas + Tahoma + Tahoma Regular Open Type - Version 7.00 + Version 7.01 False - consola.ttf + tahoma.ttf - Tahoma - Tahoma + Consolas + Consolas Regular Open Type - Version 7.01 + Version 7.00 False - tahoma.ttf + consola.ttf @@ -626,21 +626,24 @@ -endstream endobj 3 0 obj <> endobj 6 0 obj <>>>/Thumb 49 0 R/TrimBox[0.0 0.0 227.367 191.018]/Type/Page/PieceInfo<>>> endobj 47 0 obj <>stream +endstream endobj 3 0 obj <> endobj 6 0 obj <>>>/Thumb 108 0 R/TrimBox[0.0 0.0 767.716 562.009]/Type/Page/PieceInfo<>>> endobj 106 0 obj <>stream H= -A >6N~'fAbzmm\tw\LE:it~v#QxlBa+˶s.KFY)9› K&$>stream -8;Xp,SIf2E"pjK\kdsTa7]c; -endstream endobj 50 0 obj <> endobj 52 0 obj <> endobj 53 0 obj <>stream +A >6&I/V6 Un#l2 <+0z4b.HJ ~yIP(yeX0˶s. ?%نu܆IxDSW?4&LKsf4gos0gI] +endstream endobj 108 0 obj <>stream +8;Z]!>n2B-%"l+j"a:t#:#orVdthg2^F)_l;Td'')F2H0htqmUTL,P[G9ntg!F=rm +E;,>XVENX`G-:!HD!ab:M;a]U.dnVsGgbYFbalDUE:31:Nd*UFB\#5Ts%bUT_-h': +*HeOnSX1X]o$3WsSS=3ETX>58$A;:EM.UU>pCh.W'b%MThGIW+U%>RshFk\tOA(QE +bCOi>)!0Z(jGK;@NTDn;#@RB7jqiQ5f`hG%BRf%~> +endstream endobj 109 0 obj <> endobj 111 0 obj <> endobj 112 0 obj <>stream %!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 24.0 %%AI8_CreatorVersion: 28.0.0 %%For: (Ian Griffiths) () %%Title: (Ch08-Partitioning-Marbles.ai) -%%CreationDate: 11/2/2023 3:14 PM +%%CreationDate: 12/6/2023 10:32 AM %%Canvassize: 16383 -%%BoundingBox: 16 -165 217 -15 -%%HiResBoundingBox: 16.134253203335 -164.873402096815 216.706676211676 -15.64892578125 +%%BoundingBox: 16 -549 996 -15 +%%HiResBoundingBox: 16.134253203335 -548.66015625 995.961513591814 -15.6484375 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 14.0 %AI12_BuildNumber: 88 @@ -648,9 +651,9 @@ endstream endobj 50 0 obj <>stream -%AI24_ZStandard_Data(/X*;Tw*[[7º! $vI싆㎓H"h+.$!% Fa$!$ADK$ MHP0 d2Y^$&"d(F1`$HVI\ -$!=3@ 5$EBo@Ţ"0NqD]bئbAd5 -Z\hFz<`( -$@I4D.mَ։jXo -ú5Kz?!djk4XC%ʍ>Tg7":lW-o4T|Գ*ɦ\ O+7ѵHzj^;:ZPA4KڼZ}Փnm=TVQ]>ӓ9BXHP4I&h0AiQڒJ# $BD#qEIP, -E -$Y*Tf9M(:$NPڋ$ -U^ssIұPJ!Iq$1$ $I,)VI@WH@,H"&ZI "E=#*둤A rmIV(4QVgk`$vvww[) #!&.>H@2p:2wA$E½9 -;b@7ld33X Ia>@D#9.HI G\$)Ga:@' FÑ$gHRh$߆6l`ְF5ܠ`4 Ƃ` `$g,C@1Qp, bH,؅.t \E-CP0 -EBq*D@*Nq -SXA -GX$DMh"% J88+$t6Ulb^Z6 MuU5JHG6rLd"733ҲI@2P <.&"8-Nqޝ]a [ž$gfedj$ + bB)(GQBk1LHp‰]ZItl;A jЂ łiDɎHH<|Z[$xV.S9p ;` Bq 'V|Fh,N J))LHb$P4ɁhqA -84H8<@x@@ pPu`GL!@ LP` 2xD4L@x8ph` ! XpXAC$8px@P $t0D,` !ᑁG&ЀA  @XXD@$ <

`"BBCD8<" L@ $<".x@0၂8,HA#< \aD8x-iMsY-jWP,x4X Ѐ|ʂ BEE a6b  D<@,Pzb *"*0ADwH4"x4䏩K/Lsΰh}حaG*Ѐsk|D,@ ƒ LKRghUI\ܳ5 +endstream endobj 113 0 obj <>stream +%AI24_ZStandard_Data(/Xh^ / MkZp*\F'@L.EvwoV?g0cx񰍧 A T43Rz6{'!UCEe{)RGh+ax(YF d\-y$-5EU]GmW0ֱ]a \dcX2Їɂa"iQ.єtmH_SꙥUA")AX(!X0sa-+)6o'޹Z:Ґdxμ"C% ӻBǃ6 j P$S$ "InłA  Fh@up8>`< D!0 HɣP$WS$h, Ŧ!=#U$NEb]xVhXEU$Hp4dcH7 T$rPC"15 h0_Ml,rHHcW0 [Khk)PHV.~}ϲi 'h:Q$dR$D1ŊDaEH"5܀0 F2Q b< \ Z(ǚcPE9)HkWV E7j~#ˡHt7Hx4KW$"*KEpP$D(""p/,S.-yא +t["qY)TEb]QxE3,H R$S$N`"YA.Erh< 6EdG.a+⫨HQOzH X:Ա8Ebem*Z8HlERV$^C8ai)HX<5 )==+EXv Q$bTC x, a!uʮ6ڕZ"YO'yP1ݶu{;|9tI7P77TtgiV~POyfNÝZ 3i1|4YvIz;ta݇ H0 "7CN>\(/Hep)k*x BrP^{0A RCv\.Hs0<ǣE^PYv8S^bT(Hma k1:_^oqk9Bc!bq lAEB鬴|.t#!Ij-5=EMU]. uC!J뭵U$2},d~~qwqiE-lq \Bb`, ⱀ, 1(1d(cg, F`<5ܨ5xh<H::X8x8 zQ{>X8bH!$!0 0P$P$eCP""9%P$Ç"Hȃ\ERԅH`4H"9S$x0}C>a{z@p4 "a8u#89ƣh4І6k\֨Ԁ0 X0X"QF2cfp, bb.na ?x/+:d2v]\[Z/-DІ.zjj%$$HF.rҲI A: <.&"!85qޝ]bkÞH Xf RR bZ /vkMEFxfH5b48vi)I)I"QY@0_,jH_R$xV.SA C q(^HV6`tZЂHIyfR$P$ʙ 0EA@P&x4@X8%%D&$6 A TPA B 4шL4LDD <4`(0yXpxC""hXd qA2`X@ pa!DD 04dBDD‚% Xx@$G! "J%@Dᡁa!‚A`! P D>1 +4q`5hCC @A 6 2!‚XB + +xP&a $,xćd &(( +&@(D 4p"xP`"ҠРQP$HA! p  +XPD P@bA +8h00A8@A4@!(P@㡠H +c!bX, +dPwa!BDd"ba" +$$@xPP$  "  +.$(D&&0,D"L(D@4DD4 с   $&8hH"<4D(<@D0,HPD(?"xcDe?Y5KK5nTG;^=`sUh_M;IA*❶lU$)}5iJ;hn]dIՉ x|)P'knyY\fv>.^RnԫFy$ҹzW ϭ6k~[5ҤYS}'ӈO3Uw -]xx'؝QېfoD' G(C~*k,ˎzo۽Ƶz7^Hv:fiMRKߴz秙4TwK|jkmc%pdcj"Zny$M_#zjn"ycKnJ1u.%HPu$=oWY6<T96o񤈣cջaM Kտ=UԴݔMEtfg:eޮ3ZG#a;hs|5/ͦNM>wwS{m}D.\9٪Se$%oMO.Φغ蕍_U3nکIWg?{(->9D.iʻɟj 7jCjFxJTv, 7!߭ ZgMl.exXz_sãүxWcN8grEh7K? Vfx;96!R*Xlf /̧j)/3Mt^efjH輡 fE(oyK^o?-wUtʜ,4+Kti9o ̺NO,6So\G&<]n&eGw+=W6h!+QYh bZy"3HZƹB#SAxWW1}%o INb51OX7ZgdHWڽ,N8[U|D*?f/\ '_ZSB>NϺ -.Ty/OJf]([hArg3JYV htۡtz[']#*1-x;m|vxSbd[˝ڂ9ߝRj%mbR}my{娹Ii͛Zq䣖V,E^Ss)oe)ekc[6R{)=T>#ZPqZZپt2'L/ [5TW kLeOEKd[:I)m8F!{ӺFGTe?BEiAU!)o.Yh$W  -E5H`,D$1m"U[ I.R zVm-#e%ĢRWW$ FF‘`" P dA$cK 2tqR|)+I `|$#j,P4rnfFn13x8(Aw^.ґfϾpzSy$:|Pѳ;Zwϔ#*K-J1+Bee&gz;u<1͎.U)r9w(iiR^ӟ4 V)Rvx%9Y5*/hu0Ӝ/SMz!jUeU7z*jkEȰ/&i*fi[׃R\˱r,evkG6R*lVciXtUl~kHYGyC ZPj2q制Z #R}VykNeQޟJFWM6Wu2W|j7xN䒉/9Vz6_~]6kvd{{SUДPy6޺ɳ[Yi-Ӹj E{zn\wB߭fKSixÝw趶6k>y|r}˓wAS<ڜ: heFJRa>QɌFOks")XvwEvfRҖZx8Ȁ:{֤ˮZ͇.1fzlm~˚ڙ!b:3#]׼V UT-re{^z^~4|[ULh7W&ڹZhxG{ךfYXL'>x3<5!yx*a]+t=O{:KK5Wk)OK.}ub͝ nQw6wNZrBnyˌWE^1e撫J楗eRb)O7u' +V$ ΩδC sݮ-\eԭEo'*oz(oY7x_wZ>c"nzX2X]P3g\3+M]ѣ+Y3>j6qkV鍬s͜}閾jm{x$"}ΪB›gzuWZo7>Pt֟j6t{M]s/Z:%\y7S>Y]}WUOiԮf^T;DTv_𻕃wALץ Kknz}xx]jl="^TI֗Y.ypIP"a^po:6&^s?ZJeKͬsT-e栩UΫL 7t,(t-ޮ;n.YfTvN<;кcUS$A,u2Yl;URj[Mxѻ.M*/5k)έ˄4/()m=Vzl>BWz׳v2ĴDhsk(g(* 1QsF*b>eK8R]ſr-kb]nȐѪb,K*V&Q:en9K)bh9r#-ɗ%njϻSK5UKSo]([hArg3JYV htۡtz[']#*1-x;m|vxSbd[˝ڂ9ߝRj%mbR}my{娹Ii͛Zq䣖V,E^Ss)oe)ekc[6R{)=T>#ZPqZZپt<8 + (,0"  "x AA8P$W5PxyTg+?uAQ8i+9-\oW8jzLY[2eՖ짷E3ݨn'- b\*l iKM׿JTѲ҂,+kvkF)-Ve[̶Tުս1Y12f9"#RNf)בfs.kޤ,fY^m$e{V嶚rxlsMΪ8q֊&yJ~n_EzCW/ULo'N]\Ew5ICBrJ#۪حp{;*ҬU5z,nѮ*zw;e̫A{>˾*EYJT7;ܚ]x{UN'>VPtX;U+ٕ]y^{Gs+gmUVLk;֑[2[[JcQP$ Gp*r١("Y4 [hĞsHYy6g0p,XF:FF68Gq~,GݙFhzHGi<ΆguulOjvV{\DYQ]x/#2iyxIc{SWlq1+Bee&gz;u<1͎.U)r9w(iiR^ӟ4 V)Rvx%9Y5*/hu0Ӝ/SMz!jUeU7z*jkEȰ/&i*fi[׃R\˱ڲ,evkG6R*lVciXtUl~kHYGyC ZPj2q制Z #R}VykNeQޟJFWM6Wu2W|j7"u1x#4ʓ'qS/&tUmQWc[{{Vu5Wm{M]ؖ]WQrT*#Zr׎lwZ(9-Vw:xw ڐ:Iخ&wǻdR-VZ Z7[ 6xWcnQ{O.)=L,]|cW̠#J簎=y a躭ڜWYzl~֊rM +,kϰK9^%wUV6U#2-o]hN˾IM%ѰՏlVrTOlRVItލ*x.›smU~oD͹ܵUmҚ*ip|gcX>%qQݹpj+k6v-&h9ә)NYiU^嵹 1GX9_6u 2U&&bYqRZޫK4kUli*muWbcVV7f-:7W\oy2SZ>pGSghwwXI!'*ixm.T22`qnw.=V^R PG]y/՚tUãn{.1fzlm~˚ڙ!b:3#]׼V UT-re{^z^~4|[ULh7W&ڹZhxG{ךfYXL'>x3<5!yx*a]+t=O{:KK5Wk)OK.}ub͝ nQw6wNZrBnyˌWE^1e撫J楗eRb)O7u' pVS+m --6Kcu_aa:URx5~F2"KzJ{Ok3H6V)~-3n2**ˆ^d}}sҸvmYL+iQQ!YY\VӢt弣&n(Ǭћ޷fY6_%R zT_KYĩwWVc[XfTxi5t뙮R/:δ봥ײcέ.IS33im:=.KɧRE""$aCB@y1BYղjlQZʭQkRwhgu/´hiO*3.޹%1V/WB>SnVR {B!RګUgS{哔a3󞨦Lb&n)/5U ͋XhS<2ZE[zrݻX[Y=SM;((򪄓hKJm,o)Srj\ḁlV|J;<-{!&Lo{,mk:љֶeϡ~^4V-[\3\WwQxB$|=RM%)VPR?{z55Mr㋴ʑ٨d?_1TeUuUVQo knΖ -V;*ݷ~z{JwVkj,)a^YQpΪ0I7%=$Ef$4CJ,tF*tJV7 «BV睆 {Iw٥qүcc`)"$>-ڳUFHhZ^zs*ιi:+"K4ZՎwVT^b}foFrfcRjq(YkTJ,ޔ']lo8Xv8DTΛx8&JJGTMϑҐ5Wɇx]I<ݹZϦY9_de:jCϔEO4oMYQW=^Aˡ9$2wc%U[« _ZX_Hc̻^YW7zrњYZsF-JU+MϼRШt4Wz4i_mNFS+.0w'eC#loNTV3UIѩwaA){5I{FEz&_~9S香Hl:fmifL396S"jf6R7mlg٦K}CVGͶU/!m]U]mBUv*A1q }m62կ{lԼsD9[fۿ~ER=٢Z)]5|:$;ݴryjq:ռ!fg&jqKFk_|垞 O󊚳vWsl8[uEԫbNqݴ -nhդCigIODz.,;GKͱ&8ΪDsۑΝ˲.7>u,+R.}7zvy65UNJUIfKª83K|em,;o<ảIyӵ] -1_ך4g3-[ݱ;VǕgWz+Yi:}7JVgVzrU4deQlflh4,k1c3nΕNY[f5O7[ꛭMʣfQVJϛ!('<ˢeIϪRkֹ+]]?kңQ&TY殤)^LoNnIE',ysK;cbw̞SXnwtu;,/}ieKkc'{ѳt=+_iK f^M)n|EiK/R1]u޿v,B^@AGzNc@39"snlDUJ/4g/›ۙJsCC#n7K*i.İIB@TpӉeLk~@=HE k" =yjl~;x&6hzLb9؇ږgt` * ΄t M@ Vȓ:,0vyO=We\[lBGUOs(ù^iD p5 cy}UwРM(zHtbhC۴>Wj+3x(~[ -wW=N'}KI;kM0+26 ʗG)61,mvR2[ڗijl., }I߾T]J au -A[;<\"yseebCpeVCPDiVB/ Exk̦L5&Cڃ`xQi?Vwo:4E3eP`{$O:3&URS~QS{b{Jt$"@.W 9 z%qc?̩ >Tt -p:@YգW98{ bӕLۚo7]RD!˾JZc_ n/#/8&uWA0 ޅh%9pz%L) cQ$cu~+լ!{=gΎx۸Ʃm–ѝS[z4,n8 !g6j}^B{Mw` Tz 5Ӥ~K5*jU~hcg ->(00Yz U%k9a&8  `pDe K[-M%ex9S(dHiz[@y [ͣ5[La3VN@K5K @ғ6xڿu󴬒kDƥTOdNn~.:@hOPQ/ISl+ĘWVRι"9-Dv?ҹȿn1RCZ]_J~/; -!ٹ.s bu|B2rAh-6o<`Ye40B3_;sʟ;Nj9&𥉉ZkaJm0=:ݵ6023n44}7{W̱I \'cn6R*oDptLCpr:yclK;`&?pT|tB2U8 MzFE`*ӣst,ƹN )wm%D-\[7`RDUR%F _q*@H&ؘJYi0}naKP ]/HixH47,m):C*q]bs!]ʾl,)&<PԳO@40n ţKFp"Wl4'7ٽcq}Sp:bgᒞ#&h9@bI-- l-8BaW4"PI.%N< Xę(@3/&bz" -4EU *"H27sŗIZ_; ]iӼЭFH#"2*Á dK#[cy 7 %&~@{262&L› |ƐF{+al2zlT7i8xefMdc,"P kV-ڐp%!U-sx J=+M`7]o0R09iKO҈eIͪ<v\Ay>C;>Mp{ɎaW^^U r B#O,а@uZËsq4f<}(6?>|{HF -PORF!Y7(])4e[ zj>Gz^9ס~.< 3[[eaaAx<0B/wexHt>U۫ܞn`x -I"~"ޮ A1pޜu-pHo_(}j`/*%½4蘾 t,fMYj3{Hޯ*U L~(( uw@콋I,/VrҵzXj cF ;Zv&olN0g V,ސ," \R[-UXɐ@jB ocO5i.ruְ֕(W+>5wly'"d*ڠafgK3\빫X8Yne3R QF -Rw2T0 k/v eg;Aw7Bړ>vhD!k*-9!Nsvs+MpPT m` gUT_k2Dl ]l dWXeQ3 .coNe.9 -|)ex*ېT;'R!Fmet;ElPl!WqQʠX(LQ3II?r c2,n@v ^*)(8ZA7[hA)3aWTv)&[n BeTmcb:*`^_4'TsL EgiҌf/5g&r6zIZEa<)ff)HLpEJˉP<$ۭǏ@m,h6.:314,+ic'Ϋ =T8':pg_8zH:,#ad-G&t7+,P汷WXX u?xH8)$ɥPmCkT4B' -?\;мGM3DU͝#.Sw#M˞\\JuFMa&[Žc,TH@KB)8w b` F J}~_NE.s <9PȘpeuN.}ӊ0`-XzMr~IHCٙ :ޛRo:ٰtcz-x)6#RW8W2*10Z - -pF&7ͳJ+9L\6>ߑa1 < t :%|2GK"݌e&"R\&(-,OVk^.{)I=6EYb%(d$h0ijϴgF'cf>QSp/F,a֚JKw:ZബC]$2 -ڃvW` zV%走 -Y: ?D, !ryr K袵k!"-^0قh"̅g$ǎt.BaKg=5Í#&Uarb!qX1b!E4FL9icCp M`_7J\'f<ƔxZFiT -t, 6xwql+94hQ33)!Z/ṙ{EÐ#Q)wˀs r^CO*Ũֵ "|Ldd_oT`oXDXq5 =zC SDZBG}S,P"e8Ε>h`T 9/Eu4:mHY:|:j&:ڥ -XZ -xNJP(º%=E- @0gˠgB̑7^$@os]b i\!Bn2}d7PaV Ey@575WP6,lt*J  fJ!soE F Xis)B'>9<:ȞRxvPC77\reRM\: {luԟK>J4aN?乒T-2XޝKLWRC'J W4 Q:qR @Gq)F {21;z*JFrA_{(Tyhh"˭t05>׳(Y}sA8Gx9aLeG+=V.d`+LQ.⁃ɫrg4 -okSCt[D|VW G7\8C4Jp:nvۓ^&lnbtg>+$4Ԇ7lc'B6 `,r=v#uF^[Y -XռK{UjLzoTݡFM @Z [=Xӝ—s¦thoš&,M/ϵ@UT -,4ud{\c~^-H?q-x l3C? HBy<0֟’ S=Y)ڲkm\yZ~Qۅh+w^]r T2+e~7M}O0ǭ9.C*b(6GSǏu8MfZU"L O%*ڭQ|li CkeC<5JbJ!d*I5!i -(4 - 0/#?TbC5JMP}I )lp*L(I2+l$FkFt^EҰž*JVb!BIEf( `\a,Z)2)"6'rN#^Ç(I$`"J!ojPg -8Y4CJ4/dhX(Ф"H+мa_~K/A"qfmހƇ[&ޠ:ryp=vExI ̒˧@8X? ,.)kB:t.ǼWU"Ivb< HYTl뀤g2slnw{gY¢sDY`Y߇*&ڀ&.2vs~UV{z*EËIO]2"lSٳ@MhfciSBV sy2 ZsE-HQhukWH-ENrF}ȰqN Q1)8~ c?|[8sj+t?Z7R,AIP#_ A[L30D.&'e @O+h2z%~z2G5~fj`KY~n~.Us3#wٯ0\zKKaˢOP6tLg|C2ޝ@[`UjHjtV0.=[ Dq ў'__%'X=۞@>);TF,}I\aZ S5ꁉTZ5E,+np@!GTD{C?+8ßW9e6j2İgt:P34^SkWV(cu"@l/7g,3ޏMjJt 8xwX6 -(F)z;lkn, cL?Ӣ.|e;W]i lA A/p -œr\@R?z :J`2q $Qu!#au\GM}w}r儫:!vˠE dgh@U(l #`W.( `Iԍ;u-jnX*T1vK6mwܜo\i_:~zՃ~eȲFI`徭*QX\j#<w;+Cx V&3 s'9\U\̔@FA; ;r 'P[q ܛJ:< '&v`FM~+ K7 }Żq@0+0^N~KeS \~Aeg/P-5j[ghdQqUȬbr{+S)z ja09jM# = 7yxE)RkYo,IHmG){lẙ_H̎&p?|eW$}s?(ː#| -ωK='XxY~(laL2dy48:zEFi}E+a2l}QH|3Y(IYaJgaۙK\~Xnl쁀KD2n>5J~G_FO­s-D9TdҪG#kV_hFC~i/o.0$j62o큨Zc ^llŸtXk}ëF}X[ -Y/Cj2UP%'*NX'f |0V -ae7Y ȂG+o kpYSH$>Pv]_#ps{~ zެ8ol}H. ƚQ4(~5?k-}Ab|FEpBnp_}`%}*\7E:ugiY=yY#[xV. IGF&$?Qi{ _l1Lyk$ -|e ƈah/]K>1jnd)9~SoTadz) -hUI4yʦptl"zeETicNf)(SOR@8 @j%a?lnTL-R^XբPK(WT(*(A3EHPJ ̨_?]W[{1(9'.2d8ZI1NƽMk|RSܜ([əBl2)(%3_xi"fU5:oI޼Qޕj\cDUѩ|JNs*H -Z,y -FUy(H۹'CzS7pTbzJ"uR!QїuD g_~?p@uJ $2$w 2hx}%1g3]0CAԁ7eG(?>?c+_"=BaOZ $'iV - -it3#gBa^w%<뮷KQ \ƂKN,6ENʺٗgagg3yx{U\Iejaxw+n e.coWBީN,B4K+M{ -1_ 3-ZI]?oHgНp$\rVE9G: pj$.+s[#/K2bu`QKtUpSC`FaBҔzpJ&j]e&HR1AFMKZe(2aƒܫ>b6CMW"\=Mj*AhQ)[\ ɩaÉoҨ5z U*"Um7@oE;NU?a!LP$! -JNW'_:(4*Cf4c=|y*dN[ -"S}[F1n*\y(@Un)˷KQ57⼨wU]>%NZugY'nyM&0ےcHD=s0(B?~;xjb]@#me#O H}.7E%'}D5U)E`nwxAtm&(2#0b0WS< WI*܅~VRB0Se $nPFtѩX'}Gה?p}ÑQ_1՛ Zl&˺vb*(-Cx9(gj&ӳM~ٛ:pLIRE1AE5..7ڡ,63>c/ebv`0}Vm?SkMhPvz*X~4|qr} !XFūCh^nTR< -6Bai,\\1?BӬDeMYj<̀"2S5@!9T{uiL;}5AhKnSN|ir>G -914븣 @?=Џ^,9'{HruaitMV~{ց33\Eb2*,8(1Wh͎4S\ɻFAt֐1kFO֍R /(O½1j39/:qG1 Y%Qyel\ :S[{ 72[4L#(KZ%DK6 %8>A~P0F-Kڗi1zYR3|Y]zi*D{gOg@3fkupwE*CY5G蛪cGe8%=q%LXL&V2ӧ<5-GK&QLf"TCUdB -!49}BBXlC" -"?pKg-j"ˆ'T_D^H!:?P=(GjuPXdY!ħخ?|Lj<wBKGQmqKhH0xX($a6tz JWMT"ՒF^B``djGfA쓊`E_y48i~&[J 9)q'-/ԗj(0aX*Lܩ -@T yr%{ZjFZA+5"-BIQZpxGvzۇZOt+_!D d(H~.s%ym֭V+zH%ڕ2YhkQ.Ad; -cow+>4j2Zt/ %PucviL -:B1(Po\͝ĩSA? .CV^"y8Sfe^FhGn+ ' -$c3%un9 V}^_ECYgi(p/&g  Bڨ.W}i)(5ご!GYeY:[!swQ53Hu;)PY~0)>GRT6PeS Z{[ʭ<(/q:I`ԏ[ -ʵ -ޣGp5 -?\ / eBlDlڈabfΞ،Az:-!±<b+51D))SMX?{Z$ ^)z_k3/ >gBkuİRo5&hY%O?:c;!NOI(7$*T{9.[m^MQ$mm(ѽ([4U4_?wDRrEࣥ} -W{pO[ C9!rP!NteG?[Kv:bs(+9ˈ'7DUeYyV=7h=⾔>/t-N-ACH"{dXD병OCyӿ-9s8b86XA^_8 -e{|:0%mDME闇X9yVSf_58y)ɧƵ~AрY d&XHy"ч8ZujX@whѰhDAHE=@w֛8/'Qg̿v"R842þo>\ Y=&•71 nDD_mwާb'uA?~O]}ۦi8p')4/OeUqna:K%zP(HkJS{3kü{-(hfhZS~C.ZdpX"N1X+6Js [)_\?_)b%JQo^4u7PWY|,QaBi-v#L,Kni+}0s!HkEFXs]#o--"_a7("v ŋ<8&Wʋ%~˷g{ӵhvm6Qz&N8k;8 9~ qd a\ $HrÊ_97σ{;CV p 81SMY F$Pҍ@,|~͂75 aY@d9P$FZ6`8=g!Lݒmp?I0,8k]O -r7T|Xqe̎93Lj\ތDN7I u5Mv^nAnQgll_a]fo]3kmìf /.Ss`(-jR]SM -lb׵Q`uew؀Qa%KYښ/HٹNԡ+0e -RrI޶XD~-FD4DpT%dR7y%:LG{73pUwۍW Vk -t -p j[&)MЍazbIma~GQiEH5"D BRNˡqY"FNjj'<fU@kT4N(S݅ɎIdl9/ CwxUeS2 e}kD80\ .UE "X<>N 1t07G5@AR[~ ).k5.2"p! i+w<XGFd_f 1ouRϜuG) I~iG}.Ckbp,fׅl4BC߶jN<3ZBX݇6A6jVI`H><*,Nu CPR5ը:"\\z -'$a<>eqHւܙ?ϒ0-9ާwnS#lDY`Ũ8rFPR#kPZ߭JWTTS򛒼ZRN,P Q`iV dKc%"JpQ& I%keFlH4jZVDZV@ld7 6 -DNCz,ﮝbK׵zgjH>\SYμ/GzyԦ$N6AlAiQ78#/%X+p=&S"c݆!_DD 6YXOs_wmnV*x/u:PesvA^#G,{@ZA3ĕں@jsQB+%O i=`yŝPR<7FF5JtN=zS?Egyml伯<< 1f TpHm2 ӄxdd!6&`/@.nIG%YJT"S布RE}b5u~)nazve+פXO'?~ -nwh IBHW^Ŕ$h\g>fCs(.츰`&L7)(sxbn}@Dl@t dJk{Eo, HqST? P1~R98o0ւ|xRG.^e`cI -J.X-naW/Y7]9/$V,>b. -4>cCIvNL+ArX)*J_.QiH )Q!%lK^g촽)Az~\S!DѡKñ>Ə -K8xx=8%> QJÒ0L&RaG,=pw*JwsV_W|S׻!Fm4wx7;]Sg]B8׸%\N5=@cbN N>aDZ*\0_:blYQvklJh; =_rO"9CBv`ǫ{w=Q8Tycii-ÐǼ4_DH% tnZd[IN'UH ;;'|An&yaD$ -].8ɠu&L<-ZGdje~|X3p# 0LVp -ٸJ2$PGͶaBx ֳ"fDF1 4Nk+0blNe *kАU~k MpMEE[|aXaSMڿҿ-A):>1 -cPkao>k%C>{/wIg|pT" ѧtS$">y4T.LPvi4Oُ@/RC#h~sB yݤh /Y>DԁF`^f7/s;;3+:X -F^"YE;2(<)[pIB=N v'qFJRI""%+jHL'no,# .M.aB!L@1M`R`RJPDqT$T1!2`I  -EC#A1Q6"9V>T(~ `#'+ @1#s1I CS)dZU"U dR#qU"ڲVҢNe1ťC^Y7mR]EyGMrwQYw7o-MOtIlzJj%ލSϳ{/vKLWn)՗RKmwgukY1YVI)ӋgH~|j̥#.TG00  %CCD +%3 ղjlQZʭQkRwhgu/´hiO*3.޹%1V/WB>Sf%!- +R!ܢ*V +OK?OR{3GJ,V-,6/bZ'OhQm[w]Lͭ,)UVQnmGGyUI%%6H9e5.Ry~R[I+>MϽRK5dژxc oЅ_fX^:2ڶl94ϕڋַexRxk6*[4Ƕ~W$E1J5gOSƴCd/*GV{d~PbMTwTZkסW[}GU5T;[*bYUtߪ)Y鮩itVx9gEeT9$LX}wn )ґjn)]&*[g4 + +Yw2"2ӫ%ݍtvl\eƥXq`)"$>-ڳUFHhZ^zs*ιi:+"K4ZՎwVT^b}foFrfcRjq(YkTJ,ޔ']lo8Xv8DTΛx8&JJGTMƭ$^~4X?Wee-L>Nz6&+69mP#-},zykʊi p͜SW~;ʱM᪭zxkՅ/-,/EyS1\g,v7V=<Лxgxʭ+T+Yj +xEnE;w-.MyVe94q+ k9ڢZb)aZb£}Ew6CxzڔOFRl[bW=No 1fHyF:1ӶRkYY*JxG+*Cudfg-fv]1Z8֛S>fz)4{65Mr+MIzju|FXt*%ӲS)fJx[D,.P=~R+KZV\ѫ\{n=nhGLc~n ͺ>UvliFv_޼ɫSEkfiP Ұ4Qgq|y̳]bюXyXMâ[~{}tѿ]vԪ6iPL1-Wj˫~αՖz)ݯjN:v`6/vx*rDvrVՕ Ue|YuݷcU߻U3&lxjC>Uҥfk4iM~9jk2HSUFdd.|1m>KBIx_Ixm|y9]N4īߝtϗ UgʳY;QY͸zWT%Eu:Rs7FFg$}Ϳ[қ|_Lf"ݲYE3L}6fH}޴:d. YN^4VT{VuIWYwy& WڵkM5L^6zjLWQY_ln[J4gku:[tetuHz[T袪Iy3/-}{zF7xzVd8h?+j]felR9uZ*TVjIjf'=:|Gk-e6/ɬ4+/:J%]lGZz4;w.˺Z岠JCpT9;Z+U'- +x+o,Yt:RZ1WCu3'&Ovy*R|]kҜU ϴtnuV[W]ݮgIuS(շZYeVѐE-󐕲\̵̤گ6[jd,&omWeXKʳmSWvzy*G}8̟M^-]F6eM;f,y͹i3k lFT># fK}[y,*^)y3=;$够sY,YuCXJq:wE+{gMz7JdJT:kܕT4"+󯜝t-褛%Rtsizs +펮wg|/Է,7pim5y/zg+|iB,ګ)֍(}EJ5ƢkخŲ]= vJS\ݩ,fJM]Mi1+J6T4LOc )P30@<A>B`@AGzN!d+uf¡- J-.޸]&@1v|JhzmPpn@߻@JcrJWuhF![JBGK++MH8;_Bkc(QjnF0a;{kH]j}ezMMEY%7 .Buݠyͬe@z`JVIf +ssE=(B&*e:hx)wPj={ppN~o!`=_RC'c_W߆{B7U `Nn6i]vSShVk"EļtjKK+ ʔZyuzm?/:8qgk9& +!d:ur{O;d`|V-n[BMpkBTDӗ ؊s^'ם d۬8Vػru&mfA$%}km2o4dN@tL O _և @UxaDO[+T1FM?:^I ڏK \ ʷGI jvmҏO%-@˩3l6-, w{D>T绬aGDC!au2ڜ/V㌇5ߞ(J>MFg>*{Ҵ0YBp+%5-P=Jr}As;/G͆~Ř f/0c( U|` +V I qȜ4O&6\k(4rC2>oSĆ] ,9@*D1To@dD[e2uHUY_K̯HS1 + 0fOlieVaE^ݰ'\lM CU湵70Uܰtg-ήcw@3Hr4{CڂmNq p6tz~̚JLhL4/'܈fE'Gd}O/++򺫺[r% z1X&%D8".Hʢʤs}e{u\pT3S1v{8@q_Qק1ln3-v~fU^4IaEV[7e-Y3L$̫,&!$Rs%h^uܐKp-QIxR&*m +첀cV`H r=! C%Y^5;%TpT BG-xq(57υOEX6d-]4OW ,L;gU.h!;D݂]=Xy5\#cfF#dbJ}%SB!vmOb3%8tn}XI8Q'P[ӔلBg])%eޅ&;1{QR{gBS *>BHLm_5c%5}V'rJ^gJQ?h@ )X#9T&?*GHhs^${m>A O X5yxoh +D,"g "c;|qn >E^]jW87prR r(}N,O3N%D$N@#RS CzDʿrߙ(ǥ`(Qh7P%s )@ Q9E`6쩖`C!FqIv2DF4dE\_mCBwAkCP f^qf`7}窖PlSʛ`on$`$FDVU߁( }4@e$t$+">)9M^f)BB'sR\'j9>_LtgME_vԳA=pYC0I-e̵MCAm4n s< rq:)a"3vx7yOn>Fl\LbQ$ȩP&3@Tp) h>C~WO2ZD*pmmlXz[CitC!9:sQ'E7 |ծ!O@=l-$>O=ZĸƉ4SC(-k8wC (65tzc]ݵ4;y{M =PApIEZ+2j?!1D*L'j~hh>*J#ۃhE2-}f9Qoj[s[&HYW'tSoA*ٿ05oyG?dU *'tF]$Yw 残Mg"+`m *}zV@Ą^,uD!sLWm(2LMN]y̪_2T;ee0orSmRQmaz!*L'?\߸a9MEMN!Gx2\.`E5:ݱRzVfLA*?RѷϓĨ5מ + Ԗ6ƒgF2z%3-p 3ŸKCx6Qjoj&^([0` a!8.&Ae19ފnl7tX(*'H`xzGHN(6T44q8"T NFPeXǗœ3\"&Pw(4%8$cI +qbjDpž4PI0^'TXK6c3╒CPh"y +')KU# pTD2Q_tŗ/XړfvH?(]IּCA=w񋜓 [FwG` %nV<)Mdl 0o 1֞0/F\Iv2f eR= *H6OEm3C]Ql¯WR0IwE(94P4̨xӀ-5@S  Wo L^\Uڞ~gSO"t\~Hʆ1qK/Zex{)N#}36yNs)\K匇@6SjEǯQ~IwH!TBQH:E!9J +5_{ʫu@+E>Bu0Sl}̫J\ق%F׆m5EDum"eW }( c=;mdvsS;vL$Q|s&qxN W2p {9N5K'ҿS]#A鋈p]Ў>EPQ빙? ;!у.Wk{x{|bTTbS"G(B= <;nnx@n%%%-("[p)|r9\oȄ,̛S@n?+{5+z3eM{2ѳN d*\")/Vr㷚.hHF;`U+һRZ2 x\5rĉqbyak&A3Ns6[ҋ8p4N"k gGUT)}}+e_5.q }O1&]cI;J| J +V ]e7#nV'Gz|bζ1P;\ +fk^-yLA=G8A 0W @zBHRe}׻̯a^Yʼ?c)oo89AԶ`˂*O-Y&VCVq$:KbUYצz>7щaXkM\ lv;¾c D`\/h RjQs jLY'~:8R^1P6Lv쌉.&4T}z}PZz2C@H_ + ֹbJ.b)DmWbrMDuvP,b=̃BD*yto;b-C<Y +INqhJx~m"h;CdhY+imt!Oo +LfkUvBrϦ䟧?t>3/{*&pZnn ܁O-Q{zz w?$]= E̴㨛/VFvДBn.;G +U͡X M7&.Sm.PJAm#yD\Ldi)PKNXA4TϚ@?vmshfiY2(FN5C%6A%S\CL0 +\"_kR旔d) Г‚;UH$d +G%0dCs7S}Yэq[T&?[`kzQO9D,PM%w9dD"o#@gK4mVI1SOBov)_"`չfץf< su'y'0pb)|rSMV0*0MD0Z3\lbkaOHRwc99ю/I+QގB1i4dgGbе( ;;HH:",մ7"w<ٜ9tfɗӛ`.lpw0ry*{UK[*s6B2J=>Z9'd낂lxݜ16'fP7Y$)I(iaOڲq5U!Be! ,{裲iVyjhېA+ԥ#+Ez)~0c[͓7O9 -f.kB:Y61Q[}hycM,GGrX+a$T׸xyrQZ(g@7 vd+ +R[npC)1PrNgOhԓI%UeeȟoGhU~I +S9Gcs_P&WW}9(V#@W +F͹p L\)\~|$ʯ!AT u(="~vYJ>iU)-viyLJ]&ɛ +C28  !+Ō/ 2Ty5[!VhaK]P;l@ u.wK υЎXŊ\ @YƟ  +3~ﱕ]8Uvj7va_Ó}|+௏j<#(:x41 D2! +GI4WL& +˸7f[OLP"Zv, AF*+`n&( +1AgE%OԢX$kɂ>E|P@yF,,0h Kkm其ϥL +HfEE&LaFwZXP oXgT!DpsɈy-:FҴ@=sv/ջ]4k-/מdV`+TDT4Q/bk\ ~L$s#vhR^> gļEo{"&obb CµhL;]ínj(%<%.2w'<h۔-s4)e- nvq5709CyD#/S?9q3~M\ݿ~4 cf2yV)5kx'6 rرaZCpxX?L>!>^4Ckگi8  lD2>?;iKo?,po<5&b(PJu+@(b7.=GaoQ-;8Sn ܄(V>ꛘ߿yQ@G4< ′W5 vvyɕ_iӼr0G4GCn=G0qS3ShmL\ ՙ*D$PEQ@v><LjB#f)_'7 PQzhd~!`]2j}*K- +L__z1# +oMV|Y\h鿔R:DZBuIAa)qZrTq&2N A~pPXiJY1py @ǞR'I1(ip!@lUHc%O^Nÿs3jR:H9{BXټ<9 BCj#(\VJ~ӈ)6tp1xJ[;":xKϑjYj!?jEݓxig>,O١ (A6YeJV}mdU_~fɇ^?b$Z"p*4),>T ܌puZd)h +w@S\Q0r_+-"'d2cL)J'@c{.QXчd|5Gfw;l`O%W}@v=xd;'<@.W:|0TYeym ٹ7I2G<g&0fW&!b[8Ehk1A? (@rmBI;*$,(J,TRx)(ETT$c!$4 cޮ9+ʋ-k(I$M=Jwt }ES8%vb< Ryf"Šu8NFx`~27S0KwhS'Ţ!s`/R6 ̐:$OwJzU?)c"_ǧ Eyc^I{+?*"D; xW{R҇|XeN  3i$|Wg k,92xO{> =sduq)) +B[~yr<9X`6vkK9O!E22RK߾h?rdQm^І5}ׯT{ʹQT.)]TUA(1nC\fyfA Qg c 8tbᲙukz}c:FxLI_f󰝷Jer +]õ[0LI/QZXhj(X#-B6l(Ѷu>N9=ð +ʺ XG*Ë!5T@f$BVY4{Lh $ +«9DI#dDZ&K%2knM"%,%CSKjS) KA)|'e(%ۋA FXpTYa +[qQqTz`i1F~,pi9( *(b+ +˄ lD%Z}O#1t\ݽ)NI"Ŕ(0ǀ{;o/𹋽[x(ETF@^AfL0H.G[] Aj:|B pV~*j&ƽ [etBpylogj0ۈ<*ٲ+z&g ~PDŽQaRs̅R]=OMЋh$zT$p +Ѱ 7.Q> B}dUeːB.H5hґl_GΑ +P[[(_ $,A5:XT;@;1%7Hw(őo^iY0?:ރ_d\D 9*Xf]V +W;%H,MII_(U'ᘊ< +'iSn`H 2޵9PE0WzInMz`?u;M8BaH&uțâ]*jtbLtY>rZ58we.KbFvnSf; +6%s}Lx9flЊTntpsC ,*[R2 +O}?yӦ3)oY W8×Ln~9 Ɋiڰܨs}9Y߰!2{lcT.O/8@.X4<2IN|ڙPj #tc_r.r,ԇ@R9J@>,&6A+>40|f#YR( kA@,ge%SWZ=GUӿpu9ߊRԲWN Ehn^lKէT#*TI)T^qϏ |s{4R^!C7ßE$h[u/p9-RՆZ!٦F( 0=Q h½r LCU=Wl1\XZarDL|3EM(:.ϒJNM hiQ˥GUDJ Gָp/^~r>Bf$PpB;G%lJ@"+N&Hmn>.OQKLǜ@*2s. PΜ)jLc@U!^$,lY?_{Nςo,r~K/(p KM`C4-V!b b=jOK̀@5]E3ˋ 3@MYv\h\VWO_ڮ$M. FL_A+MJ= qVrŒ +/]Cb+-aWq3iS=s~vǠN8wL&(Mlam= 'u}~0p)²~S5RnE}dzLۺ&ȴ*ԡrs\?*T#pQW#D\Wuq{xN" L\ M`3#%x'p +ꀭ.K19=x%0~][E1k$6U( +vnc!LUySU +f>L,|Q(ަ +G;T;\Ԃ0m|Fخz: sXr:# +G7`PKW;N`D# .›;daAg%LT݇Bu/ʶ8 +ȅ6M[m@wtOh*L}(G TB񠫘*jc@Q "KzA hsln'5gP_fq+r᫿Pz[~m[t`}2Xp8|`Qf Q/{?i:a +ϬDAd\#.88}hJ$ĉW %f`] ;̆~")*o,**`Mn>у |L(rto,jJ_ȩ ~|C.I!ˆaP݃G"{Ʃ$@v⦵{U!C3\mePߍn陏+3v׆P_;uwh[aPTR?<$(ڣE30:[-qCIP,boL.M ~"הe'e97O[9VK]|HydwHA7,GIU6pe'gm `t|#F x%i!!$x>Ц[lp/#վ+W/O^Bs-q:kjc{C+j4%@hٜq;/ϜNҁOVU'oOԻiU1hTO-0J|o!槇o|o職&7?w"g|A(W+WL@e4` 2 >z Qvz+XH$#e׻`Pnza}yO<MsAږsX \c+1}ح#eg};EO5řU\k\Iwgu$pbOH9)Ur+CDZܪ<ǟY)Y!Ž;Uu?ŸF?yAO +,oK[A]ޚk|dž8e-:<ٟLh)1 [,NY"+?ⳲjlKN\2[&ܼh@"J[A|E_4i;h$"R&j::g;gʘ2KDA+*VŝQK%?Y SI}HhL}l\=9DAǼ4$|)ye|0Pkv|MfBUR^F}WBu5&ɵ6jC$ {)4k'ytb{QgKLu:zߩH\ 5ߑ-ᴇ[RzcprSN|i"?ZK |߽\\Ѩ3h78%O8-a#cY\!j1=,^bnO__-#:UޔWy<+FIݓKZ"|,/d:l,HʹGԅ f W$蛓qJNh^ S #c[m-,aUtDN+է 87JBjĦ+T$̦śAR"6ΩZd|E0:O]K5lM`~2 8/?!Zyw!ttsShv=Lo5 +lb*,JTjL_Z嚯y3N Ȋ7}u1<=Om祱?ԊVU;ݥ79o#z+V.uOv0^jBHȴͦ""' ?|dz<-2O.(a:/PQ_.1443Hh@\86t/'dրoz" j9(v\TdXD>b_[ʥ\?Qp1M;QhYwC2s1+,V6AiIe['/2Uo%Gt1Av Kea?+q!tN(/XgP;LҲeYa:Č/&qL7PSӄ*i` !4fcнUCC2 DUWtO`lx+q%Z Ɏ+3•_<<[% a?6j<N!@9KL xKs٣'|ZbBHB(4Z{ $UBQ<63p~S^'Ë1/!=GiUfFX\}ѿc[ńȀ^J*JWD,NNPE損::Ή;f'+jOϵ8_ |V[qEfeKχWB#&Kf^¿T̡T7܀P܉?cm4.H"".n}{ud@?*^I?4LX& .N4?q= {]09 ?0<>ȑ̀ =Vlb9n| j" +.S:u澴Þژ!7y)yubv{s*45K/&^ +$f5DbN,clD` +ChzVC6PCE58Q@R/տޢ'AZ9?׽V֜=|@Gg9Kqs;g KԮJF̬SAT-/oq*EkiX:~k/y +!`Z~Y^ތC(Vm裡͜6h2Րd:C${ՅJ.l&00eEehubmGj,+3kog$ YZ;YHFo.S-I8f'^'[q&nq.&i x\M͐H6Ŀ)ҏ6+k'PHw\\M Z3ҥN5;HuP {CjMR-{ƛ ,@S|%%3doM)Cpi91Q>fX,JDk2*¢ĞP(N(j ܄~M̏|j:(=@d1xN#U:#w?)uyw%=ǜvXC$ldk1^"ů!41閠'io( + J5#Z}czd8~l`JHVUU{kݣW 둹QT"Sݦ^cE8  \(맒/b+j PTBS$;<񕥼$!^pTf V_[%8?j֕CT.&]JS:kdUf~F Jv*aE6y{ly @U>e7dB]uuݫT`m}OYPbEWF_ uO>vC ]}`O1V#gM=`2 >i*Za5eb%!ԢVza?J眔 Gb)pN;A^Svpa\(n#T4"xK$KɊy@f(kn(ўڹJEH8tqi!gGjlvE PKʛNjjµb#( 8\ⵞ> MlpaUHP8u[ٯVTjWMr}I '#C=o8cʣ t*y:wN$MP@Sq9c@8Iau#p2(FPX鱨=)l +c A?QݠeOw# 6Eɜez&%EXt[tFd<&aYo;X[A33 +y`})ww;9M`*'FB И D3. +ry6s[VZTvvKTw5WktJ1D(uƕC]B;Ӑ1 w>зsr`p(o9%/X9DŽB,/7[l@J2ICk}%8SBof +c+ohjg ~W]鸪IWc~g1| 3zM3M\0!oywh":?i :<'lU]In X=Qf`28>J +U(yv0҂ +aLiZFkHo,FJJE`A8zJ< %Pp:bҁdKR"< Lˋ@] zX+("?R۾u zR񂚀ZO4$~ =r&qF)gAq&*Ї49sɯ@G + ݚBT :@2zq.? ` ρ%X̛$gz΂Q2 `?< +T;/࠹?AÂ4o(L gp򨴿 JfFs ukp2ُp'߻bLu|^`奈I ( DlS\*BǷTETOp"ҟl +REvW)Գ@-nOrNisM_ӊ݅(ӸHDG-q9] ɺy +!OJ'HPbO! _X.>{O~`9,nr\,b=V N{Am + C< nXTzZ`Am2y "_ƺ9]I[l?|K%dH7yzĿ t*oR*?)![z~.C7&n {k1Ir ]gRU*纥@<|:#-̰6xS~C`(i0TY ~_ćdhĽvI+)ٵ2#^FdAl@Q$&adsua*<+Rrg _(~pcFpSpTCMI &. n(K7Z$x=l74ې5 G @#{ 8Ե(<\{cn +~lIiRPѺ޷ mfȢM.\m?V_o5^G*;u7hðRY\erZ_ଁLli $吮2dʗyenriWY…+ +~.u\^ו^ ץ!h=ut-ikziK{zF.0.ἥA=/$%` UJbMT`~3+B^w]ŇPCݨE-úO)F {*u3}h[~g[޿#,XètojiSwE Ey@1@2a, E*с<5 +vz-I]0u|U;/~v?6c!m ]s +,7]soB~\r!k*M#5 |_ye˽a)){x-q-/@rJ%&:}ݗm \ A)jN:-?pGQJ1X?G'?eGW׍e71 0dwdWDqt[[tN sur%1 Xa`H>yr?l4TuS)|SQ;zh/lm']{s*+*i_A6=seUXRCҌ-ևy ˚7 +ȴ.>ٶW{Fl=w.hi3/E8+\ܤ\ܨ +Щԙ&yg9Wj1;0O>ԫwzc -0c5D) Y,sڈim~3by\}śIY}hK_gRS蝀F+5-ƍz#aiui/ +2IiZ..Q 8$5J rʱ:4x) #Xޖ] 9V*8)GP沁Ujz璪|q;d"*S2=38M=^IT hL| py z{_" E?bn%A#[d|y0{j.G:H1Q Pl= 3;=pieRwG5zk+xt)Q{$Ml@`S;f(/ ce;O}?q9~A s_T"~գG=T\հSO||`8bإo;/(=_u^.Ju2!@"!ujDfMKNr+r݈dEF@`sJFPIʻ57Z[y6QI y|̧?U݉L< +X'J ů_JK+w&s,G1ԺJ"ZpIB=N v'qFJRI""q1EM#ݜAyJ<΋$\2D"C_&3v(<\62Pџz٧/YQ+,Fb:q{eqit kDD( +1heiRӁR +'*$$b !!KjXEP( + DFDɱB[!8^i@1#s1I C -דv -)BB`>yKD+ʻ+^8g0 PSb(Her!Wل@ -::9XEH$P mBPG͉@ܯ{^2 |?dLw\ dNb ,Pk*/VT-{@HQD( k"%QMI]|%YeoMfD0_T "#,'".u&0QH)}F*5}s)6S4^P8(XP3 LR,fJن!whcS~ ;T⏮vĽESAatn_Ӆ:6 A8놄M4!% $,%$h;qC_)"/IRARF4RZu"5*'6(*3nGaHGHk6Hܬ\2шAN@NJ:%Q"Oe*/G$x/7ND%m~̬2BZ&i@dt* -ҝm`X䛎T*#TsL)"O E0卌'KD*&PG!=OQ](jSCDU V0V)ٶkZ궣isX`9!AH)"Dac>@CMIj`hʟgKgj«d$Ɔqg7M$MM{i!RhJAcSsCOf͘t̙IaBݬX11LgH1ٸ) N7!/"ڻ%kF/0%;@25B _$p/""F$R!;y5}bpsAϠreѯFyc;u=N͌(.#US>%g]hx&愋J$fq`d}$V m*xۯ*wbF [ӈ$vJh|K8#7я~1_,rJ7"vX\X$|H*,oG쀘ub't}rMTwZ#Ql!dgi"d1u'J='E1[.*ju UF4ԗʗELQĸbL'E.Rj}E^)vUSIfcd^DZ'b7ʝ oDLfilCH/ّնoQ}I)*EExSq)Ѩh\;"-*ӴKf\]+]Þ"˵*m]iiMFb2i$HH! KR O[юr ƖS~Aah - ye4$,"Y9E(Y()%+#KJ<kYk3b"#IB"hQIK25J`Fz$pB!)ٓCaIt-$g+823aتy}4rh'+Mc>3)F$N,/ ݱ Aɦ/Y ̈́%q>,sf 1:YErP^eWg#Ec˫Nv k렵R˷*좉iy-1>^RLfi>0A6Y…2)C4`sa&wRmGM-A(=gZ1Y)va`@ +5NhNfj5j3AF` p,r EYQV ԡY֦f$ P,0BB|*N!&z8@3|ol(c8C?bm^%soqHLa|lD+Kx!߲5"`+DO$XOD}t&0QH)}F*5}s)6S4^P8(XP3 LR,fJن!whcS~ ;T⏮vĽESAatn_Ӆ:6 A8d*d{DSSQ~͌,},C;Xb2Qh3F$=UH`3դV|uv%m {jBQQhF`VĖ^H*61^$T#FNȡ.FiTKUeu"eq:P5%&!bNjh?أ +UOLi%2]TUTCU(Jt#t[jngULŬ2V:&!q>ahDZ*{^UG A14m~ryv= u!ST ]өn8k< AGy<§>bg3hH) C M^slVMUxU0ּx/7;-dT +ŃR,Ols;X^F;O37+׍p1R&4R6g¾3/-R0Єrl^a6]_f4JtPE0}6T~D }KH~* +24dǟɒ*(:cF`/={UCxsuf4"ʏx5G^Bi%af!atlA '&$2:f "&Ր}{R5uy7Pdb?Qy"ui63 gdf,#YEäoÖfWcFz,_Bw +NN6l4ST3#')^ADT#,F۝H""F $Aha*Su*b\+jՔٴ6N.VQ5YGtuk +Iv^$4vFI񖟬%L#D+~r>SsCOf͘t̙IaBݬX11LgH1ٸ) N7!/"ڻ%kF/0%;@25B _$p/""F$R!;y5}bpsAϠreѯFyc;u=NLD3#)H6~ՔO$GhYaW8*Z{+&愋J$!FBf iGDviTLn~zV56SÚBLv<+\$𑔱4JcoFgA2ieL6B<*!rZ,&j$ !h-LQ 1XZIjƷc1 q7+5!Dn|#bEʇҹ+Ҏ81N?2F\B~4du'J='E1[.*ju UF4ԗʗELQĸbL'E.Rj}E^)vUSIfcB(/I6r'ț+081ŲYjj[ˑնoQ}I)*EExSq)Ѩh\;"-*ӴKf\]+]Þ"˵*m]iiMFb2i$HH! KR O[юr ƖS~Aah + ye4$,"Y9E(Y()%+#KJ<kYk3b"#IB"hQIK25J`Fz$pB!)ٓCaIt-$g+823aتy}4rh'+Mc>3G$N,/ ݱ Aɦ/Y ̈́%q>,sf 1:YErP^eWg#TĈ16yh+^Z[K+|+".FhE)d6ƣ:C-brnw"/trJ΍xe/2/ +K'ɦ$ 9Ņ诉׾f OQlZ58"SX#VI.7Kf J2L2GNCrt̂FHN4Կ5Hm" +t;s$\d /ll5iU)F"fX&lku>&@_$"ءGaA6Y…2)C4`sa&wRmGM-A(=gZ1Y)va`@ 3kR@ Uy`gHdJ 84Tl!l4,]cUׯgA\@n`NQ -|ei U7TաPLHe0!<sR -@ qg,qW'zk;ܖA]p-㞀MˮpBYʡlDw?Ƣ 2 3"EnvW8ݗ.S ~OF4-0GMt5u߭O5 -(Md2$ټTiX*;) 'jth -PScBQwN $00"G@ PL DT`< r#V嗣{A uV\.!J[ar [YSPer2#=D">dX8Bg2(cjH))DD&')qR4.ν`BY=`>>yx\<1Q32 / -RmZB2Q.yfA i5 ݪC仧 '"td# i]2t-*ǃ$O͇R=Hy d 4WABY胜^ږۼJiICP(D ,qA:xۣpʸpBayLK~ ^p0^{jV,P$#/1H,fxCM,Ԇq 9̘LXSbLb"xa#4*@`Wxo8^*O:Rga1e'ld. KH$STAֻ\M'82zX1P0sӇgF"[Q` R SA"[sJEx^{9w2T[[1 7PP$I(Ůw"CqUR3AXUM#"Bה.(%20p@isO RԪJ@0YS\P!'R(0 8)2h` Pו?34ajO4AO MQWMg*KW$4w1qU X!}\E""n(, VbɎp ʣ%Q?L^`0BXDI_T5bZ XsSH4bpbUO5j"v1T#8T#+j3Eͩ M,Lv|fVz- 379ŽN/:ATQ^f!Oԫ_(Qd!30Fb`f?.>&U}>UY}0_Q%'[~3%w<EB `@ -Cbz|4|B AqPPZ  Ŝp-737" ?5RC_ ;c'- -Vh -!̜4I/f!x3CZapy8 J!Q9oz .;k%c:r9 1sWGL܆w`KӢou9ohbnQF}-'Ld&#ګ̙'̜M|[ij8uRN;];fH;QYIJwEuAW7Qat)R2݅RsDPT_\jdeX%vDaF>8H30f O k0nߋ TMǬE'&")f=fE%yI(U(olJ~7J(J,a޻hЦ lę{Uxv75|Qw BWMBùЃXBGs1DjԱ 㸝Uv/+w7 \&;Z6~.Ƶ}7q.ڝU_{Yi9,rX@i>\Qk6v -*|!M{gR^NhZ='ԁr:dW0ݷj-s7!18tqsb[A=R_75>YlƹO%G.Sc6C]kOt~o uٙ}zmj+$g뵰oT0PÃrhêz¼Bz̥dB 4oj -&pHžFz -e3b &6cU\Ԟi`w#ia50Yv5ȠK>HPZ@ mP]MR D" =e8?&.4z4K93MPp0«T8di+dVo}Y - Y-hW Ď r8Q -u,|9[ Qw!Y6gɛ2耜\KuzīnFGm#m f<1;J7SuSkw0-SSI1ćeXSv%v)=H"!]#)c[e{);]XlE9jKr5XpYA-ӟvsl&E=0RV)!NN#Xg*]GB>|K|Bd -ф;〄6,N QE^/4LԬ?jnHxq0pf8*UHU h0~r3z2q5C$;ÝRfX0!o2hGLYV~ܬ*PS׉Hɜ{+1bZJHPXہ[*/ G8C_M5b:[ΨNXO^ GN 19dBX^gs"`š @!)H,8_-S>9e4IK\zB[Ls!a !{N1G%b! ЌU?>=\2#qd8 j1Vp'UZQwv9JU˦GLl5]@µ9GHYJ\PFwӉQF9Œ?TVE Fm,JIZY$1NEzN#]>o11]/k`$'@H4H(Q\`jQ*-@dcq .<) -he1[-els"ޗk*.j+ș OY2i’LͭeC*FM*þwXIyv+Mv9ݸOzȼK1RaAֆ)#|'AEe^ -T}qC9Atkt枊4(vbh1^b &[[#SS &7;3hzD6h\,SȾ+*p7!Yl2bFNAىH0'Hj2l"W sIY`=V^]X!j-'zYɾ*VcӀrLFj䔭x^LE*j.b_ct;o7tlkJ8;Mh^3̘kMo!Sx̺팼:R؉~R#?'YT>o7#Ca4?X#dWi Y`QeA2,(P9f1ZjŵbڣC)ڹn`{+YQAajNc5B[EYVIO'E]m%䨽SxGq#(:A QȚX pvqAus0-Rv04CS`̈́m*NNICc%8A&X2u@-MhNH <ԣt/ ޕ:aTф\Mk*3KPs)ib}GdA;p4MdX,d5t`!B 9_Z{iaa@12Wz+ 4d_i]~.vL(m F=d9ꪻMV/1C!b8\MRŕSeHٵZ¶,L8#@F=t/|KpkMMJ'-3?Gb,e{MR). @abd 4&ć`q :ȯU>ю)xk+Nclc"u*hT['414܅>uFJ+2@U~AM熂S{c a ɱup`K8! -Rk2zĶH*{*~(SdB|3.hZS _`BqYLݜVFf=ߘx `h oQv -~p% xs\W"Ȟ#p!ߟ@l+n=M)Tvxy164겜F]UEsRwZ5 Rə!D JKeu[;hrBnBRmDTشKDA0YLfebE9T ON+8C$Kpk[jj$ZP CE_[32`;C.& tamvoh -NA6!ȎUuuvQnڴrE(J(E7lqO98?%t إEg cyAvLY{uH9Ƥ_^z/M :RXWĮkL 4DŽd<&d+/S. -i"v|Rɣ? SIzXH&g2jOofN.#Hf`I60l-aj$ q9p&O"e'-V&6Yz ӑ!Ro5EfA$(@N2)O7ge6PE7IʢQ Inig9wѩ=VKBxT^k8 >p ݦ;uļtHqB0*[1 P`نt~ Afn4g 2D ̰e3 '0;'7fP&+JǕ9ypLVkaԀH RP1aRG@R_ndm]29Z`_}Are|wH@!ê} -|>f -TjPe$PA& v?&ȝnξ- -?oV 0FTjUmLu=E-Z뒔H$bUB!DPڃ$P?ThO9f *YIDٚ߁Gelu^P:1RbolBˬ4uRɶGz"?>,vUv"oSRk6yCG]P}RWxjjc.) D2ph(ob.*rFJ'Ul"zk3u #` o܍QV)9!î4nT[6V;*%T&19 :Cy+nzJ׼)CAyJ<_o: -ku!My6*XYD,a,=m:{K aFP&Ph pˊP+,?ahհ -z(ǩv??ԷrZE 5BE3ڗ͆˃]B U8sZM-%( k$_w160o\X$stuCÑqr -߯\~A#o'M7Rxcc8mV_y|>NQ 9| uh --'|۽횮,+ڳcpBt-i._"G:e_1HBcK5j*ҿp㥻\&TBAp΄ D,qN[_ n~h}WfЄLh>[ոҩ{?5L~y;,Ot6 C2f`$}qs AeLˑI($B} K?(b$"iDX 5@H1 "Uc{XL< ĿƤ'!)Io 9AX*S.Db1=ǶF!&$"~S`/0"_*-dd!N؈qDgLZzJO?"/$% :}.;\%6p]:9yiqI]89%W, i^.SKg `> ׌ eISeX2L K~ |_ k+lMؾm"%fMaVI8B h'G%S'š GJ$k ob1zNRzXP&ăOz`?0RBKY&V0ax%yŒj*ɘOq$Q$-I=NlAKQUXg)·*#k!"g"oO -VdH*)^q0!ƁECfXp|B"{',&'ӜXPnB Q/ !t"M)5 lā{Y9H 23GlʡPd9 1G* R9 C9`_A~})# Gj @lч:AAq7gr ^^Gc  -86!;P1 &x4 f2 x - =*qxY=?X>?=B?~M'r#ޣS0LJ{!}0-ںYCE~d>2?r>myABaPKχ-}?l>>?S oROHCr$| >һ{x@dⱑY@L[*P$]O%Ȑ8`W -2nnPQ\=ʚAWl:.~1ƈwAxSXepl8~GPUY/uA`\='I5)HRV NAfa䫟Q瑅K92.rQ% >B Ʌ -Dž>qEW0.pAwij빒,%6 IE]؂ЕTΰLJK^\t`ud0Kp+I5]a*WLp6ƭ$[N+DLgO;+‰f⡬+}b V@> y BTiVl*h&XGt?Z&\Mk8 ҄O dZT=#I(0Ƌ'1{Ah$9T'-y.+P*/Y&tGyN rN_(# _ r 1ˀXP@wB 7Ѫ*М7':cGh_ +3S3 21 2?bX0 C𔩇PY 3*s1lc;"x|D*G<hT5--p:T, t`0PPbˬO$]@(:Iw0OpXUe+RcK#aό?.E 6vNDx Rᕊ +rTe©4 ( cnN2'HHQ"]D(⪤fȃ(.QGD +!)]&PJe`0' +AU  `#!#)ClO$P`+0%AjpR"e*@ANή W{F%h}bho?;U _O彊'bxz q*"$t^Fdd +CLvdPU,2cZB4Zł&Jhbp_GgdӅkzuVE\Q_ kڜ ĒkdgmFi'qҐ:xS܋OUe̾n~^:G"s%~ ;9o>˟Ͽ ~:{"?qUV'zEB `@ +Cbx|4~B aqPPZ  R.?5?*FenItgQl}M(ط`@ׯwiCVз=K~7Pf5n(Ą@V^ QW@0{qGBnT04x>"l/,р)nMrS.`mz9!2l71xnGn?HЉ{w C-*mqtvh9Ц!q°h@@iD3BC{$c@@j_? Rsɟ0WWGL wc-Kxo;opioqp|}BzAdzSU2<1$VNb*l5uђ-ia>YPze|F"޳HG+ NN$&9ç xo1Dӧ0 f+6|k;:q5ʨw}@L(]Ђ7٥&Od +JMZuk;1<~jnd{Prp<3@S{z6UlϙXR-Rk@)7#%w~27<ت)/WRj}0:˭@$z9b17֗ s^+COP a eDN\1R@\#N:Sex+2+iX>6 # :4%JeK80eKuT6a{ip]lzx."=ɔ.zpBG)wсŘ uzLa`ȴZ!b*/8J+7H0Q7FR)g.}0"v27.#B9%:*-C9>M䃑Ğd[a{JU(V?hD@xcX3mR#[9t9%~.8`n3So]5~S@M 7t t1wڒY HF"\!*}uͿeڈ71Ի#ɚP^ ܊1"0wwGSa\-`L!Sn)A{ +[kr*ɆE(YbL@<pJuq&.i~B -@\/)su7^jGBmpq -)c +#,do4XS-~ hգZ*(McN8ty*¨_:DLn9 ~$_Kެyk.UU>qIʞf>qʂ0{|qCb&U޼a;ɴWo5ǐ ?u& +RhŜMa}ΰm?4O fy+}' .2M'<bE{*D.Ǝs[&<(d|ObU͈ ?d["K6 +7uJ|:q*L.SXxiQ ]Yh39F<[5A) iS] ;M6,ʋmn#:r{JPlX2ieO_c|,ZDu.$A|f Z1t09@i7QDy<:d`Y^E*iXacȕ4PC?Efː,Q2X>M8'kxdu3t/J}-P#\K")w@0"(Z"4Uz%e<=Tː(MXZxE誜_8,9&aTҎ^ќ$6stOͰpbnb1m];bvK/~mçQ}]]t.K1pƢ8OitmF oGsMWLŠ溢DC@ca!S\sa<'i5w}L +MJAs 1sp OA n!R)~h0ǒ_&c`W3 mdk +::1T\mv\bi!YQ@^=hShV,e/aYJɑ nb'xu4ߥQda?>Y gNL˺m#(i%fBo 3eJ>>hN"E~LWw냎6r[DA +m&BxD6-2n1 "989*xϞ.JKlR])!dju;M|!1sY1ɟ(U*!9]Z%c?Z90145PE"UBQCnKL\}$ iN&lur>LHQ2j,Z8!B9 n/pPҼ37WV¨ Ɗr8(-9}rfI;By4cGȚ [-,xHiw"hYk4ҽrWz`:֧0h ţ\I3r[ye|YY s qmmm^9!%N4V"ybg6S#嵤,0߼u.VXC26No2IH InCXGfE/(^8ǘ{5 bWv\$Gvo\6-1  +D8 HAv%+Y.$w]Cva=sV jo߆W0[NR o1!LGp 8"O 3:pb UVzIUP5vx΄%/ҼFpAZ^t߷$&Bze=Hz$mP0:vo JJ܈sE'?l:FM}j hNJn_{@T'DsS +6_JRki'ءsjD 0!fREZx!䳤7i£O[#L+Yj6ZUL@r.e GX U? +%:'ܰ+e2.x;V7=$6gDWb8/4NJWWR1=5/e(E04Oa]g<)NBCphlS VV)| |˞6@9@@a.Z]b!A)quQ߅ -,`@p`;1_"o2mr sьea`ڭsþΛdSGh7JbtAZuVo\ e.yj1]d$u+_h[8zӭT4O@f[s|O:(ejCy?At|B@ǚhD۳)vo[%]}@6nkѫ rF}eʷE +\xj}.> PD.|hPbHgӏcЄK~W ׬TЄc|G$5L|~q;8fs '!xEĶJxKd"_0-a=r ]ji/!~4L!1A[T&K,τ_Xb4qJX&t%5!&Jr\f@J Z;!=*)b=הOpYJT5Rb@`'w +%(y'R|GH1!S.IN5fٜ)ax.IBKBM;$O>O $P:1I/i=T]JG_ JN +}a{ DWU$zD+B$v Q˰XaH Dc! )O"Y $v3Ȝ60܃Z=[byu[%P-B#Bb ++)υ8Rcpvv(1]P1oX^0LPΏн@?4E5j$1r.EuhgƲ ȹ{0#0bA0s:^d{\Qbl"ʦEC>,3-]x ]dQES~d)bdjRPRcPh+cq2P{"L_F.MDhq%V!œH!0gyD?c9#4h*"2 r!B~PZ!4D=ipCqn)5 CՈC] 7#YzkH!2^C6j(4٘nl!҆9 6D~!u!oBz vyQm܀FOQ7;6`RKb7}C]qpJBdG2MK8BCq6X HA2Ca¤qAD81$rj+2HsATo>]Q#! _}HbCdCWCxC'f\|@nIX;XM !69 c + +!{@=R'=w \΃V)!G?tjy K?x'Av2EOmx|#APA<\A4DG3D- C;JAxyh;@^,Ӆch@DQB&J7됣P;V&>;6/2$-A uCcyC[@~j + SltLگ`\tbu%|蠛Ԡe 19s *UqOl՗SGcRK}~jV96g HAt> "_C% q4Z]8( %ê$=D}8"pa,0681 . d)",Fhl[a6{#ވ 2 rȺ7*b ׍tcq\D8qcQnk4 LȊFj()Mpkc)ކX:q\(2h@RQDhf@C(i  { 0V ԲF<,aHZDc Р! +BR}1D3>y3t! U@ΐ"~t9I3`%np!$ =("63,%)OfP@1C3jEtx&.|ы0gN#W2)C]PHu2J5&C5A0Fȏ wW#Ctd0@c1$7GnϏL'cdh}1UH#9UHV"=$DW {"K1H~' +I% Ĉ$< cD #aI0\$& SPB&p%NJlcI ,Qu5FD[ CC$( 0i/ܢDo3A Zh/,D7~wy(*Q_f^8J|ʠܼ >K^J,/lK|5rD%p.5.P% jB)Ʌ*%Dž?q!WP.Awqr%,%|'6 HeK+a-LZ:s%T.,DJ-V)-ȑ{(,E'f3Ӳ(,_BX<@9Ʊ@d"OXHJKpX YB,XHKKypF.Q]BK4]a0)W)B9[1Oc"ȦO+F&je"+”fJYAU~LV*Ҭ ­6'6BUD&dG"&}MM5y}|:F Չqv(T݉0BDƧ<ы'(t +O Ma>dLMS`0Rp)MPF")0PTNx.N +b(lA +D(&8IQ֢(cm=(R& +E>Ht(L )H̙n +]"pRʁ"NKP{)#.͘H}>qASʦ̖;qJ:aqQ)D"›aq&! kAX0<|B C0 D ) )bAU,l,X8Xd&#Hɂ0ћ˒"fܭf9? see~( -"m<Ѣ}H--j}IU>:Neŵ@-l,-/N"`h\!(KvSoVocz0ip!6p"z0x`<8u@Nw|]4mJ`@]DK;H /d‹q񂗸nf ֡>z!7֋ԁreϭ}/ҡM}/=ANϡP̯_[/j)HY8_ KDb:0l"&鎃8>88>^88i s0$,p`vah_a|m + oѱbf bT1İ6x~biD TX[0mp3!0jaYYYXoI5[%)dY DFԐ͑d"-&SD)ixr2&# fFÒR&IedVf I3mAiq2m fg}d!3̌hFj`bͨ q)) n2&gI[錡`, pA{FƐ3 +3'Il4}CBC11wD8&dќtZà3r{0`(\fe`4͚_NGVw /0d{Kyb^pD5U.<ºtmL\@0U.Ա5 hp!-8k)KOίh IBVZ5Oeyp&x`=Rb 겪͑^qfW6:7o=WUpߩaqVrVr#Gܼ +& &)A~ n̥›QdjOSM}c)J̈́7R'p= +jj86 Go-zڃpd4tG@n 8 ©  `=m9cC4.טbFjt } 3 u_ãFoT$}17{=1}hoo}0if0oOV(bvq{ePH2{#}((>z3V,|#IU[B}|Wf{ +ă[5Ԕkf{ * Rz2ۃ( ,; ^(&]mw'W{ u&$D3؜yӨ=h)n8 sa"DϮ%{ t[MQDb "Q 3}~}A@2ޙXڠJ4(A` ٙ!!/ji\֮R/DNiT1Ե`BpA,}Ly|M?E!`-9GPs=琂C; &pM HnLU @v=-&I.T2 bg5wt`,e0%˨0WHm $5R04n?H`1(\;S*נ8!T_ Y(B>">A 0܎.MNx +.c697ݎך%Dm<➈{ Utkt 7NmGt Gr~».6K3e: Y@f ++R+4,댬52|-#;`Yh <`c}㘈w>T`&2oF0(譳p_ ):SrPzT]W`hX#"i նwb@tn@ݓ, ٩>tXYI7[W]E1 JTӗ57 $!QI\}4Ha&V? N`&p47s^mw͸7ZVh>K`fQDD%ɀ^lI@WNx~B`;uaj`>9jF1ZOtq1N2bvz\Y +ǰTq`u; @M*~@ڄbup`FS~5bLza5(3gǣ#ɥ0:2L +L#6**Fy3WD;u `c p\Ѭa@@C}]*0Y21l-N*~IFc6 ;` 52'pt3VOY`2#p~)`h}qUyD P2V[40xLl9Pdj)m ~H]?aJC<7/ Re 3t~M)!G^̳::J +.c )Dɷ1Qxqs‹}IGYy}^k +;UML:f&&-qZ^ktR-.篭,xGx${(]Ӥ}hgi,)I犼`VF2I|9 eXX`׬40'ᆺա +G/RAvI, SWIb_?y69@u2+*\p`&uߌ8tDFqé^"8E3jK2#wY+V|vR*z"g ZanpYYW Lynu>3YXD3Y!+)% QNdϬLj+veUVUԬźpU&m0Mo;21z$..t;=sA+lV#PJ?e2r2_D!ȹ#4Gl+3Ct?_^3P7? \-vg?1Y:Ā$c7#g^:5e-~[j٪}<<9PE<;4FA`m\(ǣDN<_:T]>{_-!`_k~\=g&$raƑVw+%ȯC/ 70 h!RS+]-njrg|~Hld.torX^&E{?+"7)7̈h#ާ-*8~* 3Rg0״ td\:!b c1Ũ}EAQ*7fKVk_iNA,>h_K,ŭžw'go9s"FnwDsՆDY_Q xկ0[#ny QdvJfjxEn)IP,Ja'm+{鿴Ҥ/}1J@@)K@gp'qgA?SƅO}>g3z/&8os|& x9-t>q!ⰭÛa|ɜI6 +G2OjΟ W%5ۊM'w",Hc')|Ĥ[Hń;KDbT|BĦ&e|-XAKQ훐lްrwɩoOhĆW Fͧ)(}n5 -i>,~Zݕ>'?,n^Y oʟml\̥@7ˎZp;sz`S㼛I4O;VC(C׆'x(jwIR\7;,`gKUii95}oBeW|6?+R{-">Ȉ/8連-CYa(÷ ZKR^ Q@v|+p F|Bz0湆keU> +sDi}E:{z3~C#y}UC㻦A &:a _#!߽eaw_[sWK%IҬ{SYSӕaiK1iŗ\yuN# eo7XjNԛ-mPv( ۞!`lLuf$&Ģ/D]˙=!zFڳwżpi XFZqo6{hjm6"_n&Oi%ZUәzoVjwlf {uEQm>kNXZJE_W#4=w^g +G`%mW^(n=n|pFj'`wϠuXO@OH"HԔ~/3^/V_-@̺PΗ.O=H0~NzR3=F4j5˟%*XǧJW٨E{@Ȧwj 3Kl-uavSk(}I^NCHO(ME.%=X FZ"5$IC=䷶ =̠?ȡK"hBoȖDz)F\A\Mryx"' +^$3%44J.pqӡEW{y3&9-kݏx~2Ͻݼl8 Ѡ|iħ9ͻ$#gPl^ޖz'1VB Pђ_%YRUbg;W4 7RTzɼ,0dz>{/tͪg}HlYtٴ{wr Z_UVF،^@׺_|1y!--^:9l] lY)~ _i!N[o~ZN&()GjM:^vB@= j÷֘l7<+>**WX](dˍC*|Wb[n0J!D<"*! >7$8_pabԱ"NG9RTd|VLMBowGDIi 0wģ$LFh~l?BȾ,jBr)ť9ɦ@fW܉ty;(ke.RO@CT?u\X{azO _4qyQsDyoRn$鲐xW0v [K!{x03 u~Uǃou/lo@DcmYݻݰvjt\ʱQRyF)}2| rX<}L&ſm{|'Յm/M{ތVXo'}i 74}tn_in's`ΰ*W2[=_{flvw([kGjSvjVL$^-BAqT +}\ո I|e™kP 7U'7[}kۗ==;qBG\˱zXV4MoGk!;Z7MLYV)Ʊ d;w-;D&v8#)=N+K5Ng/{=hpY(u}_劉 e~Awu"Z::u`ztDOeK5}KP +/4ieZYH*qYg[7VnG Iʾ尒9|uh +u:&=Dmc jOOi`^L /,MXudԓ0zU4k8BZf.+5 hd>99^d@*aɇ2r\Oo\-اO׷[{jŵhX`M/"d5xDGwiK?\pIvx{7q?Or/B~lLW%U)t i!)8^vPO] }*;2:c(rrR8_sj,̙Do==Ôc􎍏G sA*?ٲSB%^K{f]M9CSziL` ͕G {F+n%# Ś%{`s0+m0kos6C$tGm;[znН6b!Wk;U{Lx:Ypf5@WTe:Tzk(?k6z'*@HqHQq3RC#&dWt *ĒQt,9gTAGw&|f7αFC0ʕl>{>g]oK|B5n}>fl +Sќ|UDp0WzS +;:0g GQwy_C̳> ro+Ϗl~_W񗧝( UUqx*\>C0Gc_8v{I t;e5uh~<6(YΏzPc.?^ +RN@^s OK;BO4az!IFȝ &].wLj$Q2rn} &r s?^I rQmV%?@G& &`+N߽BԈ(~R#QV+[,@AS(AK{ $- +rn[AT^XhLX7! 7E;!o˨iƻNrϹaNl-'m4W =;'&pw /Ί9Q9qHy8M +{\LY2q{Æ#fE?}X^VxZ0p<>UxGA۸3{mO x D#:g)GGu@Fb-sJT8AlEqzB'W^ÈQ|w}:,g4,H&7[/LJ(#a)X2zT:qvNtpoX(L,ħ_ KǐGM3fAU ɬC|xy~U!pW nԿq>ǒVy:{㉰+*-˖NFp +38bwea!|33 ufO+w\ +`R~µ|%|h4L"rznkfOaRT.5\ ֹk0+/MVdMy%yRp+HIp|l[6@qAD2Lv !f.q 8eD0|;{p7CWV4tIv- +V1t/4_G%킑*M %7#U߹R k5f9`>CUVh&|a럺6LW%T7InmwAqYUBL}_v^o5l?囉w|>PI[ô}I ,~FyNS}QIH=ٚ}4n<(;B,J{z4¦,X[9HH=\4oOL 0:"!3‰y/ۤxank*N&MPW2z7jE&]2ǩ'+]v\ `ڽdA&wn^~1符ux6WT3 G2v~wenE$tO=F4nxZ^XNDD5Ҷ>3=E'[tl!z)XY&F +(c_S~ļ/[AԔ_{};O_ðQTLr#D65ARA[uh -^<;MON9_m/5'&@뮹 ##6u,%@56S1}.g!و e ΔegU܍= ŇKHuZc"a6z#Դ&/܏{Dky7*P5@ߍL(Au UHYAj!k&64Kb 큁7(^:άVDԫZiBegWk1œn_WS3 7Z͠Dǀsk\!-9TڦU}Gqւ[T-y)G/TV[1<#TcQFu~L@TkSӸxҍ کɾ3eM]Sg"SUdO#)f`OL&npH+[F2NG]WU65lnZM7Ϧ"Q[I PNJZl P@MF4r-B k+1qH`6+BMQRA]=u +i/;cb +,)C9)GoOo@iF$1Vb:s +P;O5OjPu'To J5 l.Zy)l原^1%VKo=g5Uv4vP̉@- +>K a aZPӫnp`v b- +tz {^4ڠ4B@&5)+C23L`OsqGdΓo9B˥W&aF0RޜX t.Ů-N>:MGYI/*hN(n`AE6p-2,)3No( >7kSv Cqz6/mɳijUb3s)N`!Luk)_d:za!hI\>L ڸǭץξ4ou4]ƹxZ+Nǥ}YZ4cd 0lI@B3Hox9 R^:Eݼtf~un_-t&^HCgMALZs+i+l,]I:ФdH ֓9FԢzÇ?%.J-Rf*]ǝY>O!-7_4};U꽔7Eu 81eE+PbZ +IQc6#2tYJS,XIM8VjC,/qV+IDbfg +W+-09W[uAuRΘbOP5k9 5WUfwC#uhQF{k [0QURHi˵@K~J%,ǚ:c^:2sx<8,C5jTE܆-d'TMU*Ud׬:Uv^U 9VlguZմMWe%tѶ/IUc}e +^]y? 5ܱbIVpWcٻ{fՓ;U:~˨Z߱7VDȶ:֯[UFK~JWn-moMږDk+DKzWn-MSPMR:>stream +y^pbomk8 GuoMĎ['Ḙ>)UtFk#cނzs&m{oQ.%J+MD>%\aE 4pM-5qcgwxڜaSF XBH4\l. `TDŽxxr'vtᵢKל;T?];DP911UˮܸՂn@}s!jҝ⻣ :AT*#_8Q5 ZV*J/]ؔWV]3?bRAsUѽ,d5ToІSB;K0BNIBq8?-I/V1Bf]@$PK5ijy3K/|eY1($k'y:o 좦pKx=-~ Xd3"X+'XR }JBQXVG@w;3?sT<;2¥U%_BN)>!DxbykoPLZb9Qᠩ*:,:nhw5<́&7Y%$;b{Fk7`MFb5etNu"щ +ZU (_5Y7#}P/ +;ȑ|fi2Vp"3n-Ŕ1a$ok,qqRmGmyHrƎXt jtnAs.ՅƨznDm{^vJZݠ;x]z9Lf ./%;"j=,ě@jq[4sB gcѫ̱ U7~.姦 Tׁ1m2+%M,cqxąiU[,ҨDT~5A96Û7ývUrL6SPp<]2]88礰K7 +W0_îfT ('S#ueS`'P%<8NPܘtQ۸nwԓ3l*ϝxm= JɘI(usNw?amt}h6W~ᑄi񽓪;\q0'ca)KCr}Ox!M8ZUcl9 |`R^oW7 HXDx&RgtAKcգ5}IFP k}c(_틝e M}q4:~11Gw^҇ Fl-7b]RC';-Ê.851`A{c{/>`#b2gl0JHXdUMN4 Q*"WsƎHȸi1*[)!KkWӆ5?Wa}_[+Y 7`~2u=7&;t:Q|fCaol 4hkC wagő:ڬ7\stĉh0Xp%j] :j\JzְZdiСڱp5LKƌAKl9187vc︆q@Xt"W=sC|s͞wtzLn٤AsV~\.0˥AX%80VAEf M~ǯ~GT"GԐllcI(I$9sN)nE1d,"L_]?˼&YUЬ)l,K9Lf>87>כ0\-qGcf0n2^9g +dϙNF, \ΉQq? ѧF Zw3iP. &4KϚժu1 c*qʟxv ~&\5+~-R)SY(8p<8 4Z.~+c(8WNanN68Ub]{C~RrۄVRlw4\V˹ {z`U +3pÂ6.mkf~'] DSXvuQY`y} cAC9 Ƚ@b07~aҖ!V} hAk`6g4!jZsŃΌM8O0u%vB Oh=0SfW, Sp@{BtDS9)焮P3;mJXY=&ۄ*(&jqt(v/kJB鱱jVFBcgY,ڸԔIhC"Y1{r$GhAI㖱(64|$Xע q\jeC˛a^w^! 0[+@trH4:. U}}ݺr]my=J.2[49$dN><:{ԁv4r% w/eDzC閔h#i>դ% 6G( Z!c1BӘr:T)y?9E4-GNfzq j{@8F]p:#Jލ!>L~)eaPA9eSTC`Vs筮zEk^&uwOYKFP1p1uXO" F (Z]Nѵ:m\u6#cX_ Ms;䜸v &!as b[\<{Vl[NcK]{£خ_G6ws5Hv^1]嵟B l :h`Vfb+g +B3F|{ӨacܸLg~ڸY y}=*7*Q̖߶N&m3yOЛmms܆$i&X}dc΂Hn@a\i`"0?)ỳֺAv۵`I +d:+/ͨ4NRKKv[  DKVq`5Dt)nmd(‰m `bOr]kޛ.Yջ{C):BQ0 +H3TynF0v}c̼y})Eyun/{&vtzԷe};4 PH:m};M("jO|TOM=,=@ml1iw9#vuj Ċx{}؂$vUO!Ivp)7)v3;ޑHmmZ蠸u2@L[]5fA?dM0cR,-޾jˆrHmh: 6 D؜t{=")R1fOӃts'|hGg] nY&vFbfp9vv&H[@uW&:LDެA}i +5zE}\-08;^k{գrڦ\pvn٧Vi">\ctohטm&mhh +~fJxQr} IÈbtKvQiEh6:uݤUpX}V`f>"bf[1yk$k8Vq^3ۓ+rmP~kFb&n s|h7kVyabϠ\-twi z{{[Ʒ0,mҨb$Кw{6,z#mdfwn{çLV)#uwK"%UgĻDġj$Jv"}h1N~p7]OilZ;?!rQ9"ҷ7\\/xN9yOj0gty?07>nST( + )i'jo{7% @>T<*o vHY~7{V[K{PeD/B٨l?-/2@N^z+lBRc2\VE2io`/Kҡ5.|% r>ތ +<"/hf'=۟9N45L/!>wi6i$EKW$n$jp36\Žn:F8hAOC}*M66@ abG [<8<_rAy86>d$zӱ4- .RqSw>.J!=9O X#QײaysjrD|~$rfכ-9QЬ\74Q]d+CwO?\݅(ΏJ@i.f!c+ݔSs %љvͶ<$BBMx$:81d?ʁ6YYk~%WSk +1%> C~ $3cjpKC|)]剜e5Wġĩ$px`b O؛Iii,Ȧ&PnZ҈;̳S6I5 Oh􁆔D9fzeo٭C& +c]/W .%]QVwΫ_@)cQb|VKg/?}xz@E^kC' jސw'f GK(]immd<[}Uc—R9fm uRhDPn!Y{<ğ/t=1!T)~6WPt?'GA_xjQXͮP^ߖ{@A9(~x~A*ZǗMڐ1]t̯ߑ7fG@'*I rnBRV-ׯ\'3$0GvAt4Oqo;_)IS%//iҪĈ?۶Ƒ'L7՝Y~JՃp >?: ׊o$l7sǐd?դrۏdt +9 D_4?r]")Z/ }l2cɇ0%`C"#B"_VSvǞPL+in9sc N/&^({t8ad-R*5(o L @b78] ,sɀNeS!j<u Te *@_*^ `39D$hK6-Ɨs. *p=Q4A>aQg`7AT.Cg6Ѷ:FOr@* /;)gV ~BIB3r*6:ѧ{JNC'N\C~VbKvDF<ၺP"W]h*ȕD+5eRjmlstxD%1S >r )".Zc,wVXJ;ѻ뚲)xSt񢔟62^GZ𲗲л{pmS7# (H +9jk &v[٢y\h k믿SVO/1-6U3B Ôʐix ͉~:QÇ(6{aW99K#Uؤ)OJnۻ~TZn ծGԶZ +F֕)V+TVh tT i I?lﷶIÂkhFz#>Omk{U9_1ܦiS$:,&FUHF +3n1L<-TGN% H±S!{[KJx9O:'_RІӧmոP:e83sqh@nj-{t[Q>@bb7iFggID*=31-T+!i}hЋ=z}đ 6:4ز&TV9Fe}vҘ?zՔsx N{ B4м&lNm |PޢĤ50H8.MLP + X蟩 {]T\p*hnI4Bc@nwxT$y֜Y0ZYezaEl' 1*g w ;0.;W%'DdW~gp3jNDsS.\Fc^Xq/ si$i5^ + XBL,e׵Ɲ{SB{5`eB)#>\KEcӾ)bIgwL5/c!H$D8<޷r:3 {׃~1 ;1aE\TUr l2=xj&H%-D%KTX_U[7_)oUّʔkp"yc^'vwJpv2_@ٍj xAނo*W9=_iCo#RG- kPil5+l6Y]WS"KHG)E0ҮݦX.!үN%cKs_V'QF!*[N妤tIdrZEdP:l0w!m9; xh`fZ1'ԝȐֵ08ĿTfiÝa qRU@)s'xh%yTY'/Ǫ 갸HsQ1erS>Бm4r(- .ITÓg43?U Sr.0āU;TN NFnuE5ʪ\{K}@gB#r'/Lg7(V(P{=][ V{ ¨ +Tih%U;XEKvNxipǛ"#`ʱM"ꢘ0Ch854Zi8'σ1(L5 +Mʺؔz)H7 +SAO&v(۸V@@$im [TF E4H_~I@4xy -YɁb=-V@z)~< cʫ^&|^MW)ꄽMDNдhvbGynB<) -}ȘrɛX*6N1*'5AU*VM|)S & EfSw*1=gYv%&(7a01VI%vkĔE.A-d% -$Y/J|JD= DM }%k^FJ({%J>(3dKJ`V9%^U>r`JۭVJ(LbfŊ8&X)JP+;m8`O+$b%L"RqI J+PXIő?HlL$J B8a_& H04TEw^%B1'y*p6Bث|t@J#s7AAā^Gpس86/Щ**PSZ$'~UD`I˫Ja QDz 1"J -8P+U7Dj@B"󪠥o*ZxU9rByO!ȣ';VxWbPXB +-5Y $iE{$MLI+JI@\ItE>+yJ`^I -pB`; AeN,  ` , sDO: , K!4? -L9!"Aq0$!'G’݄ $MHB pc",5+8GòmB\1ưYDeX%!< _:9BУi`3OQfE,|N'ÒK -aW; .  IA|\)8D[ĂTh -$`,*Xp ^ 局&FrNh7 ?U=?Kb@,Ȇ>Z0ï%[Z>0JU}0jOŵ([|p-bm `tlp%Wߒ遁=<\< \2 %(̥xp\L>< }&RR]ewOv1.Orv߶CwV^^@fqW477/?X1Y/Sj/?c󽨕Tcb>L n=Є%q][Go;Q7\a[4 -L܁a9t2DwL+`p` !K݉6ƥ! sE  7TVopXx7`5b 7Ƞ%&sad0b1 .&!"'4kP5Ұf4)e Tme?udݞe BLDΐ/fb?<"32 af Lke62 `A$9L2Dv0&`g7>144 \B#W1A#ݦc#ơ`hN1 {G߃q*XgipYL`4G4ZH 6U 6z5sHjjh!tLl3/7tٴ' ;ǂ&*Bi*Wm|O@6|W6s 7DB3(77(vgUn - n~ïsPp&TބHhSo -= MN+Di -700v lX -W8Ъ]wF -W'ڣ"(\EaH(p ө"8(|8Y#NP !'Tk:aD7'|9&xw4pJ'I a8rfA3?4L4~L &TD9_U.A$% sb f%f3N)/3JНݓ0$\r~, %G&o.H vfzs9EpsmTБF#:'24nt`NlE0ױ餩N^RG|DuҦV:*:[r"}ͦa -d'9$ -F;\N -N"j;H=НPQl\CpD:$DxRb^˘"jŃK"H* G_xH"x <~rZ;*<.ӮC@yd5s CHϓ[zB`у1BОA)= Bs^A0EzPp=Y`O`*{D?p퉯 sxʺLoOM%5vAdj_3Ɍ>.*K1胡n\++Ŏ>P_x @;BA4"-|~|Q FNAܗ`^{'k$cC0.jhKhl0ۃ&_+bTHCn{`l\\*b`Kf{>4' ۃ|BkńX{U݄xRjDhP3ڃY@F6%]{Un{\wdAXB@8 Ʀٮ )ه-ADZ@Y/ɋՋa|,}-7!"1``Yz~cNb1փڥO]=ICT = ׆X%у}]j*ȃܰeI Ux]8`P享tO;[;8Kob@_dzd]sWhH\0w0D$=~2`( ym,4;y,߁XG 8wiPӪ S΍0m#;S\,F{, Ճ}9~ A/JQ<7KoI63<7-`_RmNJ -3 .u1io0"Q [|} YO(s&Ӡ`٥_&-G`cv1#DǼH/kƑc5zSTf0Tp* qa<L<LW[]A#荹 sA_ Øq t0<F@r<{J [P!QO &Y<y*"r%Yc"UeA1`#7`T +FٚA:ŷ-;SA Ӡ0;TTf ,lJ*6%S{-8bBTzҩN[o -SNCGl ->RAyu1 -H7 AC^h.P A+x^^7(+&RZ'hmIP?OZs(J!یήKPX#l jG\1:iM ML?1ԋ{G& 7_CWfW[aa+^^UJhP^rI?|1 &ItN$,*" N$CsGM1U@ӬdL &t;(k -uWEP*$eJDvsk xvkG$fLB(J]\$ Gs4 |4@dC$_\r'J@ϡ]ڻU2*PTi/4Hս _UI!`.1ycs -VD\؀S0#XӠC<7L=; 826tYz/π.yd24ZYh h\%k1ܔϺ8Kc'#"IdJSpC/PAo)iO4"O<O\]Fb͔s\@FZF̂Tމyޞ1ΕO}dg%n^7vn -|:OLEgD_nIr - aemJ:&8pAo2ג0('N|5*'p[ P3?,N[#v{)`k})UyD{P@2V W0zS&lPvh)% -H@?a# `ep9S*$׬ M(Tg=Xdd٘CY +YVQJQoW'WPۤWCj_/ιLJ7пF,e"{ ,_W~H%v! N1yW̷PrngL˂Ď7 M4@6sYO3L`rv&ޠh?~=[%jߺT*[W(C_A2B'xYU뼍͘2ݯ. W zC({vk7Y:ن_^5J`~( ґq}rP<(ws~F}s["tGX/?f;n1-!4aTgZ69!r gkN6/uH͊C(.׬7<i+算cd>g1:$Sl$oprXEU/N #{_,}`^F]'pf/D\t F븿=Ǩh -}Q70V8ޗ־ќX}~-P XHАwgR+؇d(̳Zb/^kȅDC}5zBys|x>!˧u<( -sQbP(a‘nDbdT?Ŝ%gfAˍ(NMHlR#j.j>U bf!DͿ)PJf]vGH}i>͇U>c~Y[qO7N 3|R[ʎ-T }\{q@S/ -n|u {G ϩkZCe8Bk)>w\ky]PxK)4~{ܜK!W(L~{IKn?id$/Ֆ"70"_VKPu)/yG(< gBz!p}v\C̋YWj^_.?Y0> =OSn5 k ߵ ށ -~7#VN%Fr5}8u -u=m-)8+Cs -tt33&<ϜYV}t/O&5_OBx4X/hj,ӄKMz>a 抽 n -"af0/9:X Â,AH#| - Xc|y,o K#h559ʛ%lO+pf4"Bʻo"}E:ʕr#p2`OIk_֕ _ib7I䓔akiy:#%#/a]=>z -YW'S7CħK%^.ݻvxViV`k4~:8Bo>\e_KO`_+~F hO|-{q1k -;%>&wHT*ɖB ^@-FxxZo/rŻ']' -cK l17tqC'>>^(Kx.Fp-ĜJߴ_'Nrv 7>D:dT}8#ʟB:Ȁhtbx+vy9wͶj*tEQh/]>t$'Y d;JG9qeL"E/ۻ$\4kI}z=Z/j`.rLC;3^a;%(r#F^^Z -LJw3Z5*h)Ѧ ={2 &Vr"=E}@9nqu=ŷ2.'n[k ^q{Wo&M!߾₷`;`h:)'90^`뮟ܾp3j4PֈJG팩kBMy=U`(v}8Tш?2>'J?[36R/W@dAovRO2jiپ6˃Dĵ+{còdo8k,dTV2DZ -'8Y؃W$Vb!B6kV9X2Qx`.Ԛ:)ةi?oSNBu;gί;M$P_?fg9lJLMͥxUYS(s p99̨;V[, ∝%^Rlݨ[ZUxI+OWOuqo=X_<IB ՉDScՉ_4!-uTsz"m+b5_x!obǪ;JZgVq3yu `\\kPOfiwUQ!&%@0R ' -S>B˿z:{elǾګUuNgE`~o%!\D2䷦'=+0uH[H}Z3F+ݚ̦yb*TFthf_/IXJ-1K3 I}pzY+U!/C5P<@#6!0$:*ӻs -t.>'P} =7v$|̖9t񒐷F9ժj46ee_"l'Oc0+#yZ2F^EUJyk.Y0kbs6 IEmOl18j#1S*m ED(;@T-Y0nH@?K;;TO:yx]ltZO~'U*|ہ -бȇR̈́ɾBTrS _rN'MynαBt:-ԖiYN >l>}]7a fVχ -Q|DsRUʱ~W޼a*ϥvu`,xѤy+qs[s&0' -pjs3μ8(0dxZ AXҥ`Mm/OمGܼDX͟Ac8?@A}8UIT_B]WFs9tV5g.g@sόvn03X%uB 9{Qdߎqn3(̉?XpO.1ܞ1~."IANxELd -d 5uTWɁk*v,9,װE+*6 J2TGNj):<:J9~<ⰔFPNDpdR.!) /:,B3$8]I}Yʜ\ODC@CvxZ-ed(A-]o*بؗ oA.{!mEJj -e(Gx94#a{Wv --ƍ~w؏5ʬʇwl@IF.**>KI8ʸk ~bWV\Ȯg+ (y;{#\\S:_)7p7P~JB^E`Җ%E[ף¯xչ)bI|"zO 2ݮ'o.r<l>k`ܬ"^lf5p@|}tb)*U_ ov>mPD5- g[t>@j,Nq3|і ˌ[#|u0օaM[KU$0EFTyH };v,-0ˍp?i1f>xIG-Z^`m݅\{N1x<4%';)[na&w.Od {[v Rm"aϼ .݂ \ۇ |\Ux@֢2ToPhcM' C:j,;ViC%q~:HV' PJ ʖ0߹?)T R8P \ԍl6(a %Qu}cơw}!<1=i*x }.K4@{r`qگ-=u` -sz )r2uzyCBd {ϣq< Xn'bD,:zy2~JM0޳GϻSsИ{ui5B{\Ejg ɰ'{Ma!k*F\!fYRW>('z70-]xw:+ MZEMO`vڽPx@an^~sC1DuP6Vf۰us?keaGdj[IFR4x7E!nQr675T&cė6$࠰q3eљ*/ (Xl.XyZ 2J2\T NĎ 6/GlzvTɃ&_aLOZ=F,&,[nGq6m|~cĄeFrԶE[7g{CV"vfNiR`&QQ_ݛ:ƵB.P)XRZU;{R{8dP4<Df*Wvkv6i1?{m`/We_3PN:"@ dxm8lkT?j 3:[xOlS0zج&ReinvPfk(]Zo`q6E-mIl=ȣ ۴=$Dp{>VJVqv2yթ-d}.0wϧҺ7k_oŀ[ [OWaB/h+l A- WEUښXv`3= fX^'@xc -_+Km{H̝A&JyaP'Q ~JꐾgzĆ-ϦbSR尧w|$I2˼"Jpc5ua$F Ņj#$C_}y^zC{ϿĐl'jVnmF -vA;0!ҘַèܳZ+ATzjZ{}k}cY Px=~څ)r0 L|N:v]y&#nG:SWB-*aXM68X-K_+zVF/d>ճ{ +t}цFVt *y: 쮯zoAZq?IPg'>RMkCT[Q~L@Tc⮆S߸Xҍ۩}ƳVMMSgE S7+d~e;ځDf`REL&58 H+[F2NGW -68ºE-M7RTI PZ7Pwsx$Q!j yPwkLQ9EQSzTg(8mQAmvlU]A K/4?u(۳(M*9ƕ qԤQW Hr)f @ [drr=Fi&OZ& $~2̳ K7&j '~笶;^Ŝ@+.lABW֊zNl1 ؂ZIF5qA=8f7_P(fХPק *9(5&5Oj5Ii aFfz|0{Kc(4 ?=ݒ6%KY{sbT[Lme.mْv2[ }&x#q27pC`Gqs:µHT8^S#tM-ji9mڿWfӔiWgdQ4=kPȴpM* -(aZq[-i}4,tiA4?WhSFEÈJ,b F4<`YV܊OfEE@J>rؽlutGTU=w+>ZLMH,qDR +芘m4ip$2$QZLf>ťwaY)DYRC1g֕=O.;)ܹ>N Dd]pcZx:c*0bjWdRLm-I2mT0LH({3TYURoSǪF} pCE}Jz bԴp -I4l%R JV|^35KI{khDEE!lQEa a͔H~JՓvfTqK*im9vwЩkeS!\0Tab: -6$zYELͪSUU!jԈsVgU]\-Jt&\W%f_&U(}u@Ɲuvydkòc+nɓfSg;Ҫ ~FzT+-jȶ:k[SBw~+&W.1+-voE-kRX]Ae͉zWy&Rr?TR4}^[Z% { ZXtIe/]quD} ا0fD@~f8` c+Zꪛ8vMcY+v02( -&lDZ*jCAoT7J=YFvA)kPMv,.,3oe'Nt9OYjBr(f]AmAo6lKsH}ó2K,d΁6I3D);ZP0 ƤE3Z*/-.ij-][֙͂TBm'vam&lSPPR7^E;ms`j2tuۼ&bh=Ut?8h޲r&au1o1q`jJvH"X ZQ~݉d.9w\z0ٸp;6°)Qn, 2 c.Ȅ$2 -`1/^ _% -]Rwty۟nQ]B^s eظ_Jڂn7A %w#IAC#oQa(yq -.o ͫBE3 * ެd/VFé @mK 0BN"ݸ[zIe׭VmoZJߗTA4OB({N#`o9h/# g. >J.T4yX3u9 vMp_ ~/8 /, Z69QRzpX3GAK #UU\})5i;a*@pԔcaR-ݫ`3\jv)p 08n3 D}!0gq[C\>!QzX06+cmd JL- >&Ak*b9,N,7P hMepD3z'z,G`>stream -Vq=rIʱs3xtPہ˥uRu\3Uǧ]^%Sop,5AcǙB -^pD2V ?jڃrNp4Y85.+6?7>c GHiF{ml{\& ʹ0sƞPdP/EocJsׇmc-!نm-lA=p'r{'ptﵨ&p[c/k]e]Hc lP4Š֘ƴ!%Ed24zY|O&=+cDazK 6w}qBqqr+]9ظbyFeN3.`LB7I.؂}F0O7a\,..E,%JD8ƈbk[%ceΧ1;C@s.cU4h̘jL*?LNM>ŌyqBVcr̘!c)n\4JeAlT!yyQVwqc~8Mg A뒯}Лa)f4,*:sΌA8N0|uvBCO莎2S큎W *T=t֣:sB6JꬬŞH&`ԄmmS@Zn:e.5%1#,,Z3jʯ$MKDo{BМ@AI㖱 |$$kK5\P\+0-T)@r)̸KrL‰@r}f.h Nq.IFGieGg[?:zG?vIY;BM\uDie!m z}j,4 CuTVCĽN0HOw2sޮAÕu1'Rk3ndj=;C?|J\:ꡪ|]6ǘxj4'v*G'>Qdݒ5[G+0 >%=|mzxmPߚ7Z"׹r]Үƥю?:t4Cą6&R* a 1?DlЊr4vnk}*<}2tFnShBaiѵYŷ֑Mfv2[> Ў16 nƍtlqX̕`^ۺHbhdXm;dFi.:n6̿#%b6{"~u/v k.!@v{ߐ6K]> b`JYnGt)NX|#Z%ۓ)'DݲqUGFgG.j[sNvgiT춇  j+Pn7O#NoGɼTŷۻօSv2:"{\7VoiVPߎ'V$`ElBR=-rFAB֩A'a$bEs(ķ/ܤԤ%:xF" ˷YגAj8o?$x[ט'B2x`6zo+&-Z} R #& ttD38m d9G6qDnϷ06 TQ!*|haͥt]lm>අsj-mT#_ PnMT\HݾYs4~nkU~`+oۺZ`jm>:>w)Dž ]/mn*$}~ f`6~+wM{; fbpic6KgiEiV:vݺ*bpX=Vf>"bf;)yk$liU^t2ۙ rmд?iFebL *0nD s|aPky°2lϠ\vszAn{oQdۙaBw7,mhB?2qU>2&F2' s(&ʹo{P+|s+WĕtKTwA\lٝ#B Ň ~6x*=!wCǴ=p۷{ 97n;S]Q}v_g7lXvΟwy;$ey݂băm쉻{JU,M*[849k;4]ImLCk=Xހw4Ħъm+be<m'K.jH;u -$lCX1m(wO݅R~] -r.|DKƈw]ՐQ -M_;h1N~o6\a\Z;%̳CbQw "ү7 l\G[JN y25Xg@y17?nKT( o))'*j7 nTlƕCwoAB᝽v mL{KR2JBڨ ?-/2&B2;_zc+lRw2D{;aeR뽱o@;ɿq_ -2F!9%oS7]K>f;#-E^.={>sh" >5p_pL\93C?7 -ϻrVe w<6\=2 1%ddܖU TIOߛ);Hm`/~g2Nl IvxߚO%U`7д33]kDžxBRi37!߃tGFĎKTGB}rM>ʹpc2۽@vKr7 y\8O>nj(yG^w]αgsh[<^w.uv繃0>/s=mб,tgI 07c#2zX9bNTe@]dR C]C`couIR8Sz[_u=C\}ɧJ`VoMcҺwfPK x-m׽s61uygĮ[!"@iOvd擙e+>.OFkO -hȵK8!vSPiToXЩ0Q1]?r8':%{뮜Ⱥ[R`gmS*0:C}! T|P;SۅJVྲྀ;K'BkCM > @5(ψ'@VYIb`5t{ s">vKZ`uNBC>v?۰1yqk@CLq<4Ŀ˗}mO3ki慉u;2v"x~`b-[}}ii(gSSnA -:zH̍n5hcCu79fr[y1ѭ${C1& -? JӮ>>;cs h_RsbGP{xh5=Nhx>ZVMÖ!?hcʷtoߑuěh3ώ~NI r⇤~V/b\'Z FBhUB78Uj;)xLG%%[O5*׈'&o'Y~XpI5|>EaD7rh9cdjOmw:f=ߟe#s9\e -sEhC[BKdlIQ(q $ R~߅Vh5]ċ\;z[)X'T N2J4{LT3p,</Ȑ -b6d7s x[)G:<-/F)L- )m %K ؆=qaDsEHE Zvޓh01ҭ?-fƏ%)GX[pU?%`lNtOt0dRKp܌(&iU=G2fw sH)M١,RM -xµkgMrxv=z>R(ɞbEqcyeQb˜:o1!΄VLMhk4 q H[O0D]o_ZQm' 'eD|{ɶJS.BY\4OaCX 6<0 0\A7:rH7I@x;L8ۢ)1cy0I9NA@Ɔq ]9xk@gW*pGj_ 6;;! Wqj  EI3|0E^hQl G뢩5نiJ6b^_J5oJI[荢X'ߣHt3+D3 ]h@`…rꭀiL]JҔtx+a4B-Z>XAծXUɜGCAu+0}GIwG&3qA'1$3wX.J;k% z.Lb>!Z{!fv VM1pyaRY< M<¢fRg5!k{*pȴ),PɮFs 絥̥haʄ93$=~/l0512uE GOI<.o%#Kyuf]%()/r.ˑl|)m&O?qSV!"P'HⱤ w).EDNQޱ&qYeGS#QH4!yƼŸ*͂>T:i9F7zm|ۤU2] |FP8s̠BJny[Pam8uu\`#R -Qa\CMr p1J;{*(q_V8*G鯃3whh9Kɷ} d3xKtT -/HF_kh֜;QsfG1Bhz+0|v%ƥzJ=NDh&ye҈"W_USX)rYaaX" q8f7|?4rTZ5S7_AʃяUQ]<'!*DRiv~5O.\`rn<99DnT6Kt_'y [iL/T *-n&J:tp`!Yz]+huKKi=Xo S: aĞLaۥ|{Př~T4+{ѱ\(LqVnn\'5C.[N& hN54h/'8Sy)/#A9$VE=^=ёޕ]Y\U3]jϵ\̝qp?{$dR$d6ir%] $YM -##>E2"bފ[g_+d9k?B ?r GbFVUI1s1?b:x\Yjj^ol$Ҷ3X|XX ˆ E,"k^1[(4B&Xi5a6)׻A~B)[ˬWȽJ 슞iwʀV -%ǃ;2=jSxI&ŃUnNaȪfkLs<X *bg 0yKw[N(]1J53OĢNI䍹al^uW¹*dFQLÌؐ&Cx sPaLU mC/Lр2Ut"=b wmG[ MW!zYTrّJ3>5 qeNf -ÀIe7I;A2j}8@M8,zG?CkXk2C580)&ah/V B\TvAXD)):RŅ:JvOUAI[7 PrbSĬtY\a$4`VɺfuOlHBOBSXZPJ5FU;i:{i҅{܍#sѧ-ڻ.X*5]ؒ-yv>&S;`f VM;r#?b9^pO?s~q\zKRdG p̲[ -z" $#]b}CQ~\KZ?<:)%ĥZ4~A:m(Zw=!"Agg/Cn^˜S_̸qV&Ѝ1pk5nLZWQ.oI0kqt8Qf`~u'[Ѹ 3< +Hv5vs3:% +:n⃫rb}%, 9\fOKrNѣj@&\IoQ2ki`dU:*r}|~Ez#9!GDzXfZ-Z[@ySYMoΚܷMfL<|!㴈[dufEÓ#^VcVoPvYiw}0$R&hzMګ kNHq, hEGs/Vlgbeq= on(=-\OhM2 +V tA~5Ƹ[F( bW@^VлjRY7  M.InZz-ݩԔ &jxaɭtH6a},ȕ(?bV^y贎7+ɿi|Jlh ?P4d*DW4u։]wv&]) 0Hc=ӻ-Hǵӈt}wF%aP@ϑm2Gސ8𐳾cy +~0wч>M©$SAԪ30d_|3۵&Ks<r,p+Bd0yxrnP9' ŒGCb$0QM+ +v>QKذ$N`!yJP lKmv$6 b 2Ce AKg +_[Ǖ~D{l^fY4D9\ ?/ q-2NWaIग़?E |Bd8ǐ,/z+LUktpm8#&;xW5Lk:eT>*;"~]G8 g#?b9^pO?s~q\zKRdG p̲[ +l"$#xyXLZT +Kn)-a]b}CQ~\KZ?<:)%ĥZ4~A:m(Zw=!"Agg/Cn^˜S_̸qV&Ѝ1pk5nLZWQ.oI0kqt8Qf`~u'[Ѹ 3< F`=b7z$6{Qy܃qs8 ]#w5p 6m7d3{"iP}?sB,] 7!q˶ ~M`ܿ=Gq{+&Bafq=#V>~7S)_*66sm؍!`} p-. VTgC@gϟxzt J@z%i1|kvLZmSg7~ ~W0{gK^ TJ@G B99{3}ǒPXX9<3}o7V;ۀpA܆P?}wԊz«(Jz;Jh:>h2m~oJMR-$k+uq] cĚ!QOGxLpq>}F,sb!}1x}~bs y;v3 ӗֵ!O k QRU3zD߳wC2<|ϭI7?}wi3su&7`&3wxzD @~A/eBN$}cp*NB >|^R^ѦQY3`hWɰknżo)L_ )~ @@ -1007,9 +987,13 @@ ONi LL G^!@ή}?93V.m.m3_1Y˃ƾܦ.Q-uJb/'{`0g- 3{q7McvDUɯ%?$i/ch[.Yˍ6 ǿǑ/7$ėFù #o.-ވ)M\n~cꗺ~#b"1ktK,,l<6a Y̻u|r2TC$}ù օn]޼nֲ -LYm1tgnsW]0zh]Ŷb]Ђ6a/tżZ̶b-kcakQðlvan 7ຯch;yv&M}F?_tʼn4}%}]̶.s }&>dsWuL 0YZ↏Jj +˪J+eŒ’VQeWUWYTZUrX_ZrXXTTTRXUrXZ*+),YAJkNQi䬰TTRUYTTVSUYVY,*lVƪ¢ʢʢºbUeeQiXSZ)**,)-mUTJ^i*mUJ KJ²fI]UiTTTTWRVUZVUZ))+ +jJZIQUaMMUiUڪ,,UVJKJeXSRTVTRTUTZWRUTZ,*)-*-V+Z]QiZTYZY”VVVuEe%jeZ*+TUUՔVVjY*VjYm*JQiYUVVYYe*lUV[Z]aiYe]IUeUQZ*j٩T6VUMii]iiZXSڪ,)J;f-dYZYX٬씶* +jJfMiSک*6K+u%eefiQeWZWZYY+*+VVJJK;JUiY]eQe-hQUiQiQi}eWXYWWUSY*UUVVV*uUE%eJ+ҒfeIiYZVTRZ)*mU*ͲʢZeYQQIYeYeaUe-HeTYUVXXY),6+EͲf]aMiY,,UT6u5ReMYMeaiYXTY7UVV + +KbeZ,*,,+,-֕VWj +*K +kJKҢš’ReXZ,V*bYjT),-TV˂UUʊJJKk5eҺbaIiiX*MmKf+0@^A%vNz>j @ a$]V 0{LF-A"ZdR/PKU4{Tn",RCaOI!B9[55 ZpAjGJ769V/w@)C O+ C8<(DB$VGR9K/CӃ\p:QDݨ<Bo SQ^4ӋO?A]KG svu@I @@ -1047,46 +1031,47 @@ H }ɨ@!. BC}`QykмrMGi:Fo::$pN8ByRDz5ę< s(VX'z˹E[O[gm蜟>,?~^Iu\g 1@9Ü$ i4|-A܅$ΦP!9bYOJx?y@ĵ22m*Em#Hot9_ܟكa`j73:f/͞k5pGqݝu@Bf-dv6u 4K{] KN;)4> Ě:@o:MKmKv4E.pdu˙}3}n"Ϳ΍2wkP{9 nFg43nK;36-g6}00l=ypZ]Ybcg/vg=wpJp8a{G! *sw Y њ9B8E&#N7pzx#Vs%p̝=*I`ًÛHS\Fթ'qcռ{q.Ŭv| EЭ:֖f_ D.v*صځIObڕpty*TE4_ ŧؐ%DWAylPM)$YI`sJn -  [UV[5ȇjAiCyp/,9ViMBvJ^?v?6?6<ϋgТaҰp۶&0wj],4o6t .t- -/~ecE_趪[)]!Un,,n+\ - -rL ;y\PB:lќШ͚\vy1*$#4<]< -&$EN6D7ɪ!ڍZ1{ 1ghG8Ib{y+ -jWkDsBh36E6/2nm3q~l旿-snq%g bSH`THrD,Lk) 9,Y -ȺǑϾBP'b`@+ kh t\ ]II:eO -MT uXv0vi&϶x%vP<;׋CWzПtV6Gn~;kIva`҇C+cXUH>vdh%a?HՃݴXۄ%ӱz-/ZXyn)X4چCi~ۈl;үB&ź40 z ﱮΡkCB/\ЩMXOTBP2pq',AԎˮi٭u¢EP^GPaR@mć㦥)\鰍aم: N1QIAoEArMYÞ|+~ P@^AӈEڈ4\ߐfo܌Ģ텅RZKـTujģsX[&]w$"AzG ض;Qk pt8:rk),h5&6l3(3jszIUsf:MF@[QT|R.(i!A[!ri*# Z  ] 9F*Qe1̳8}wBWt8$ R+%$?h kvhAi?5zԓa6nIrlu ZUVrY(V*`56A -9zJ%Dh'8Xc (X WPVe&]@["pĴ<}v)#ܞG?pBƓŒ ʛOοС4n&Ak| _]3ڀƼw5xuZ U‹ӧ6ءqcݶЏt%IAgfhV^Őby5ak8#. HŮL`c(7WP[3wYt.+e,vDcYDBr70?4d#gk'M«꼥u~ijv pCv%q_p2ju~MBOv>* .|^l -iFBtNbaԸyu Fu<H ["0vac\ 1acWT `6uH}$hºAy+jT:_B?kgy\8\  0)\Qfs\A])w-H)o|.!9s=7Bv0qj'.pR òm!8/<Гz}d t [9x۞̽nKvs ĽZf >T0;(ÔF,n8 #a -9 r=9 ŚA6_XYh;O$s0pu!I*JZɔli~UD”|/aɩ-aHiB+)!Hz8y_lm)Zn0pEøGw-zZ}{+mv8ؓGn2>0]*r``%,CL|$"KFt{ts Ƽn(Hb[B{S0jƑ7gy\v)`MB%A] r'%~f_MXo1~DY;"%`%5ޙyøkCaeB ݊Bk"ŵuz.MSՄ$CUYe$]fe(`ge'`sY7ƾ@]IDl9qe)!8 FhYw]Iώs%)>ۏy"4XҼ“Y -Ⱥ'oQ̣<8V6>\O PHK/AA- yނu/WlץjJ%xiV>ABª9Pd^T`he![G& -۫ 7ytPeYi1BA`&eޖoAԫ |8^G+#;7-i70{$F v(0C>ȯ|pv25Q'^B=#,i7tP#aT#Niوtị_ζ.txtowv _º:V@gBw6R"˫#.***#PΒ/ |% Ve_Z|*@ b)ĴSJР^ ba~ dXBt6 h,:UM6ЭaPB:4H] RV0oːe(8B!@盷KsAV^@B_snTb7ۊ .huoZ|P~x)JlI<9Y}(6e( +˘d2EdvsU'hc?\D൓RR.&iE< -PJi!k J?)x;hռ!h]AD *|9yXW:7UX-}ֱ0t. -\r\rGE% -\Pvq 0{mc?_1Lc ЀhLBٕkxMAu&4ӗp!T]6{a?Ś+92G@AZވ3`aD6wR}79a[:_Vؤl|rlpr76F5ŚxڝC׶K7XЀ8W}<C=D8'u@5HiXK1$R1&Vɱ T1X f^c OTH'2H( L#CT"[-gVl@VOKa - +wMYf) sbḝꑹ Ң,L*̝[fC2d4r 0b -H -oS8}:nWJpX wkJĘ Lq0 pngFFThAO'ߘqOe%`*6%eSlBAT?)A# dKGEp[0m^V۲\Lٴz|(N*VWIܨw:! - Aic2깠z(>!A1P\oGf|sǪ%Ѝ t& oT8|hQ1M l{vs-he_`վ@r1_utV6.SٰlL:΋A ' 0G2{sEu2q'(^Ce>px#dZ9RFI$.h,]Y5 C Xe|yJaBY%$eaNKFUUUZ//ХV.WZY_t Ye!ʣr0f̐ԱNρ2A&P= WU\4x fwb`#*C(XYwX,?]_1kh,弎l^ض\ -8&z{iN\>VԵFFƧ3"m:Vd)KM dI Cd&Q[?,FjG'LR4_TIyrQraI5+eabVV^ v1+tPO wfrc#]C0@@iZ2,ZgmZTbV [A7F? O=@/[ԷKI'3"GXYK%6p7",y *X:[0@ݦ@?o/f4I1(W/$|yXG^lP~EUfq[>K%䴆#xjZEMs񁁲 Ze!B1& Y!rW'83至TA u.NaHg 6B>?H9 -ڻ~ȇ,waC6)19V/9Xd$Weׯ_n-#P6AWH - &@(UfQ'فL ?«$W7W5?`b6xi`&#ULŨ :GCu Qk.sԍdzOyz0Q$ `JA; - `q Å -KO%w+Hӕ+0U6r!A93,n~xHfTt@tQ,&4(؂*TdvUoDԣr~LOB/>#cV4`yxN" 0&*fs4B9gr*<%MSeW6C+Tnrr -'&lWd@ryf9k&ﶞb5g*.cԣzTRdo8u4,AA_: GFNPOrE611.D ->0ȕ2qr-pP>1U. lVnf!:L kYYIPEWae)7*BȐB*l}+\Pݍ@ 0GRPd!u-Qu!5'( u JDBQ߰Էzރ9]d-+/p90Q)Gt%nEK6@}ŧDDNe/@R- lDsGep40TQ JGQx_R|[JXr -:LdSr : RCSـRdԭ|z&C#O׹8^L1B]'ctspYz9 '!)M2 yfsP 1#JdI|}I!PV B6PTԹzP:mF@_2<ʩK2 x:T QuuUpZge.;d`~u0Iأ% B#. yj$^QFp70u.#.DԹd%uncԥlwhfzLM3[ lX4$C&x a887vp~}S\cG' 284xrx8>ћ1,_8T7?=Ƨ3P/@] awzO;ݦt.ӗ`pN4.:2 -`1@B^GE\9JQTɩW1&7>1 a\9:DQ520r .dX=oS8=]ʦ7S8?'c ,২W u!ezo ӓR j8dZYaz98*&YG* ˱Q/7R/O] c`!sl5לLxFFA 6=8@=Y2u|fop1CGOpWBaH::ho,Q4 bKMS!w&t 0xst sm:N;]~kbݥc.CDH2}[x% -+hb#~~EPbсsC7M">1upj6`2$MR3uI\&#HK+FA`PF[jp!Ӈ:N6}ϼ"ez taz4tPJ5m8Җg`+`In $R3$53bkdILq2phm8 bF̰ d#2e|F q,KgXB N2A0lv`(W^W"v|50E# fKp`'.7ddg$@Lix4FfF89evXfY4H!NTme,` - 0Rq>kK-]ZZpzO?{K6fE:yA<0Kkeޓ!JJp;. TmiȃNJKq? '[P1 B$r `705V9=,s|l,3_6hᅞv% us1=teL1{]z{-tniM2]L7}E"hjN11:cSs ̋HPp{: -Qĺ q2ce K a).6``(Iix43'&ME6.1 tq9a/(mO5$~_:Lw/=no:M0tlo.ݥt_K2}: -b5܀3PQ nACl᪌\y`P IuRʏ{A03 VQ A/ՠ/4u Ӆ:N4nq:Po -Z KMmKf+0@XKcu NTV K*Kk65ӦiҢggQiUY3-(Ԕ6[UfʚQeijigQkgY(4*5*,*)+-%+*))V[ʚZR3C.řYQIMmiUUeԪ΢ִVYQgZXVQٳ4mU-6]3۪mXڰF677XJUeeVeEevEJREUeάҢԴkgY-, 漻--K ȴdSdPK.l8 458fyf渜 RxH U L b _V#I{-Q9I`ًÛHS\}]'D_کcj&=iWҹǒoR~DbC]%&!K}@5Ѧd& +)k+, +nUYn]G"Rz ZjS(2ZKHR:X]6 iSo~i({irlifJ>/AҏKy/wlۚ:F\wܩuh8\5<е@^*~i,#۪VNlֻc^0wlݦvVv<.r)(=2-TqB [EsB6ks!M"kzlvǨێtAbx$(|90'^ˇh7jŤVdkrt΢xW' NJ(] +Ţm$Jhψ5;`ʸA͸n-VY_ʶض:λYH-$p:M!QQ!1KmH3u8\TS00(8,g( "NG>fLg uBvԋIf, ]$q-tIX''UD?*~(7Q%acإF`<ccCyH{plw\/kB^AJjбZ1oɺL%ۅb0ibJaU!c؅0ܴ&.XՎOFhRF,ZD:iT \aTB>?w|E- !r0WvjcmL~뵔Jzkihb湥l;ch9o#uJ X0h5XWǺ: kCpBz4au?Q} +AU7ǝ1SJS;.N&gBy jAƚfcG;x>@6*6BSJvܫbp6 +eh7;D &E5e{:Z?:/@yWe +N#i#p}Ciq3֚Ji-eNRIᚧc-nuwޑ̣L;z&6cFC1da48.xv:ʭ՘ذ̨͠WR]&&1&!V͙4YoEQjrj?8:?89K0mƻFGXʥ7 @k%{T^@v%T`F0 _v ]O,;Jb4*La2۱"QOV4q ο%mˡkp-h!VYe3{ XQxۃ8րGB) # ))cU6 Vb-3\AZaU&vmmGZHr8 R<r{y, +O2K.(o>9Bv}@:q1|i4vlksh%Z:W +/z^nLb6ƍtv C?bЕp&!)cXyCPUbԄ=@ގ7 J#k2\A CDlWRlNjeUdйjؕ] +Wpx+o#k%S=Vi S:p!"t%!] + $};g6k!2VݵL h-[7Z쥯 `O.(vBvuWw ˁL0 r 1((nC^s/5ix1ԫscR1qTT`N0@kA-*f"8~+:4J3'a=)X@gRQ9oZs+9t3Eȗp!K{FյS:VRhQb<|]OϦX1J +ZKS1Lpac,?@0 +e`Z`b9 jc +@BȨݣQ1]Y88#mO + ;FNG:&ߜq٥`i7 Liv- şmBH}5a2eaHlDZXxgv0  2t+ +z[п֥/X6aL!WHUe8te!fRwʮ&[ 3KpRƕԆ$gu%>;"ϕl?^aJ:`IH +ONg( ȿ9G1v8[Np=2@!i/%3ن# +ȏ3Hz ֽ\])-k Z- B@yiR l(l'6ܬaAf e K@y[!UcR6zrw60bVDHt ţa8#% Dz Dt~`d gBS"g:]F g#A[1~;ۺ:ZЍ1|it XXaC ٘KX Ò/rc̫,̫뫌C9K. 60X=|iK.Ka(N) K@r{$tK ˇAR.e`M#87  /| V5bPCn2‡A Q8#"v%HYf@üub.C— ;`3oZw/ /[z }SVϹ]P-gl+7L׽hQA($҆ggav:m*0l+/ W\.cXyY\U\@5p:N: HJ!+@)p(iAi%{#"πFLImJ|E[bɥuX3ok]lkw].W`AN\}!F@X>{i $0+#aM",ŐHǘX%ǂP`5y|B1ؔM Pe$,2.Ēb.}d:mAxYmr1e8aCZ9J^$ZtJpfP:߹zRط+܂Қ*Aʨ"H$?J<:kC{CqQjp^B7jЍ"&RxGFh7pgزe۱ε}m!TrpE|Y]ҵVFC[Le 2! :/݂`'tj3FByˤǝsF`x u᭏Ah弟J$Q{۽"Z)Qc:S.9};<2$U6h/6Z6t-Pǒc%F,:l|3f5r|V%WS,c`1cD2{tetI(# chJ&GoVb!UCGeüt+"~ WOߘM"]AQ._^>%4` +x$Fy%;go01+&f ZCV=B +VFE/)R|9Htf*i~K;| UNՁg +./gQ.T \E /~|ݕ PrA'V ջ .* +e^g ԠϞ\\ +xJ:{q5q˹>H x́n(Y<ݐDQlpPUu EW!8,F/쥍.L1,| X ;F'p@\m _B'_5r`jP!|AY$p$%DVР{)`WAE)##kYcJ(vMa7hc/d ͢6 ;R"%jm Й9c{gYQk@2]B(5@/r_nZAVSHÐHŢ\i(?QXhe$b=l[NV>1bg\*6̪uMw0M8F]㚗j )ĸ΀*M%"j} PG?;tYݝ CWϪ‘Q($tRfe0 *2`e`)]Q edD—A8-?:\Zk+Wy +WUǖk@Z_ie|e4dT*:q˜3C'ntnSJ;= l@0\P*WqaH:Y6 \9p'Z$sMWce!`,tK+vo|@e:񨡬,YvZ_yym a0 jt .xYbr0((R4A:yrXS&4Ӌd|:OX,4!%[JD + {l3eHA|Q%ML=hDM%I׬d[}[9X?x1"@ S@.>%'kU8tY(`jtjɰjqkt PPN[-np0<8lS.%u4ҋ\~\q +ce`,݈UPx3\f c po ft)>JP:$Š\1|8j)^c {Y +-+KC UŅ#ln,YANkU7-"$hT* ق*ǘTfS\U :̠Rݮ.%Թ:!%a;LZ"n(h!޽ ]ۤX`yr__9 ח]~W+CH^!)(lBTE d253;n,^ݼ6^8AE_*T19^R 2k 2DuQ7=fǧ ksGPp,=\+}Z( 3|%8 /_+4[#/=Ebv#OW>@|Vȅ[<@#̰Ӻ"SD! (Рlc bRC +^`Uu QK0=] sllNW.[рI9Ċ$F˜<}q*LAʹDD4M#r!^ PUY*XPUT^ueEU笥#Tz zUtԫ|TQ1R=H=MѰ}-/u:A=Ʌĸt8B>:)H( W2V} ZCXWZ4Zho052Fde% CM_膕d*ߨPTRIej^'3? +)ѮTsAu7*F u +BH]BQ@tԵDD];dԱPP4-(u +MD}SJZ nz֧t.t dO PFB +A@tH"Q> juۘ"цgeEEV%kqV9U92$W.$X.@M u LB}Hw5u0FݞJ9URk*^MDPC?Nm`~?joJ,>BA |hɿ!O,}$S<#%D a8V(X0P!!VZTwb`MeR7Z]zOPWәn~:O?`3ԙhztӕd~~`F/9GP@a IR=a025j8"jXPE/(-kEy}qHm+a -(0YžMu-TJ\HoR[pb MOS:gJ]BQ! lE#ԏ?]sz֧3u!-!zPeI$O`&@l6$њ "C&L8++q%EoRg˭ -CN:a^EeTEou-QP n>C؜J.?ŧa}zKO'`7,pP6brQH"5 &!MJ 8mm9JɦNr0 \d=V6L[QH-iV}+Ak`zԑGC!Z@B=''R=B] Qw1D1At..=FұcWr0:L?>X`,_O. u,11 $|`6|$RXB Z +X.#_]s@CQQaJC}~u8+}@B(.aȨ7!P5D} uj^f:3TFiՁ&a`00 m,Qy#c30e LE641!aT~a<sPYBOzEuQԹXQ b:QpDԭQ)`:Oߡ525]l5PUnbҰG&60;JpqSgNq/L`2Ҙ pKZDoư(~hS(@ƧCu%n==tq O_:Ӹh@*py~ +ybrT +*yGR'6^M8d&4Q"s$GJP .a4TԫnzOt)@O$Գ|^3ԝfx:L2OOJ1ig9he d7L/:F-8\`H=\E q~u 8㳰FL$t9.5MMXWҍ*#ARЩvh\:M8t^kMvź !Lm+^(qNQAB 8eGI M41j6X<胑s84I]*8%q< -::_\L1eKt~uC]+ #K[A m&5 +H pD Aė;$15fh)CD'XG-26\hidC/.!b T3`;[]n:O_sc_yn\ي]Vr/$a,.9\`uߐIl53' L3flf,җaeK 8Rr)(bHIXПfL/lwii=]tcz-}tF,zOtF*2*$S !K_+.9DtF0lAŌ2PG20 wbsVm$X +V6|e,۠!zڕTg3ԁ:N.yZd:N3`{wlw{キiM7tlw2ݦӋ:T#VA9ǤƤM%|0/"A/B(DR5&Xlj0a$,3XXm ۀYX&* ;41mh^.ڸl,1X<~?TOoM0ݥ.kM4ұtNaK/w O+pΌCE1KOٖ?< 2 pUBsijп& LI)?v,AZIF%K0.<^`@A˃ETL1d9<; nxd +~8(R|IWΕPvŀs릀> +.eVԁ\O8]NoM@/C)h2,XKcu NTV K*Kk65ӦiҢggQiUY3-(Ԕ6[UfʚQeijigQkgY(4*5*,*)+-%+*))V[ʚZR3C.řYQIMmiUUeԪ΢ִVYQgZXVQٳ4mU-6]3۪mXڰF677XJUeeVeEevEJREUeάҢԴkgY-, 漻--K ȴdSdPK.l8 458fyf渜 RxH U L b _V#I{-Q9èg0_"iG AoNC_ 8uwRhoREKin1ޏc߇B8Θ}WLZm9/H)mqJ #Aijm~Rh/^~>|Atx+> Pn#5o*tih$Q۪欽9;:CL o#7CS,,k)-owX Zwc͸%)..Ÿ4j& % L q%Qq1~k ^ޅCT :+o ML+ù-j~l|hC;pL={5O]0ȿ;R<$H4\ 4quPe QYcٜt[UR]V8Ջ[B(m9wf03 XXA>cݽW@ ]3cJ%Ii'Gpv;bpNÕ]%iL&LDJ8Sn8 ʈ -f4\/+"+{Ɋ:g.!as`zg:o F,z*&UzI~xGxraQ+LI3\ `@nԋI({.wm'サc7:ZꅣO.unL`h6b|D2k TIIed0@ImC` @Ât*͂pscS_9[0/sfw2'.ͩF{U8g?lh%#')3w= )KU nKr - kxŅN1V -us0}[d#r~qN/]56 N0ʊ Pq )D_:ܕ[f3?%u)4z=5]Y!\,:*;KIC -g8;G!}Ϧea.b#e/UO}}V4xt$/9b]x:`ѣ@X}ǎ/b|zcߒqrMym{ئ,F\ U k/%X *<=DJ\J~rHNc%e<_-~ qm6}a=jߘrO1Hgpޛ+G?wϊfAwݣ|YRԯJҢ]iWqwOwzX6@12 ),w\G> *͔ٟ5:`tB17{L`9?Z ?,5 > -?_Y{S4t0~q7 5o(k?k;揞AgOo-ϋ8 -`g]gۑoF]uq(lyx  ÅY* nB&Y㞺`qAf -fq/q2 sg:k&gq}lєPX#j[x!z`Kx2Y/`u/ SPZbb)y` ;W@~onA*߇C,ɒq^? oᄾ}{@eeŏzS]/.LwHϼƄhcfK\l~ -Yr'mp3P]iv/Cz6M)g?`ڧo3ʉp{bܹ$,#}#^D-7x9YqcZ}tJ?͔ugH^ -x?#D^Z[)!u2#=mL1/<ܑ.tu΃YKX_{ϋj㐻܂~:1;rg]{лa.ӫs4D uL?ߗaAQ'̬$7fv-Z g;3FAkj yp'~՛|u#o~7vz?Cp~nϔ )iK:![ O4_R/7HBA,B3k췍C\;y:q9n]KqdL7 OrK=$[D^$6w2K|w$~ m0#YJau -m6BzO܈l]q׋@ޚPUK]SX~}4wXΩú>.[yl%X' c\hӮXd 0aeʚlYA_6"yjyTQu>ϝL[%+7o6efݵ2{Hᣔ0t 9םȷz`fTt ^Ioz fa̫0?2ȳ_؎{_5(˦5Яo}'dꔿ9XbnHׅ5sT\3!M~{Mǿ0۟Ƚ~I|~qیp>trkl~ʿ|{S`oO#R5rHphfV!98@x5B3y +v?VFkaF@oiXBQu}씾kOy(}AzF9+RFg{~<<} ;Fw_NHӀ=_Ȅ窻Ru1~-; D.9~,7 ռƊށw*F bת`?PF/x ?([n`:4#(x=&8&Lm~tk$ !Ba͕I80[=z =x{#[SAyGz n}-lZc'C+HϾQSw}fpS59gM7e6Ӣ:.F8:*$yθ^pBj)QG=␈9$u}Yly1Nr^>42rmچjK?3]%/mW+{ܔYFϔC =gKOZf?4> P5%YOr@9>UX-TcM{QNW ^|gFgPM iI/]{#sóaAn(4T8>[kmQ7p׈% ]1m u1(OkT ݝ9yQ8# ?X O=o\0ǮQW5 TcMx5 $.[Zї'7n>HPPĶS痕YtY3]ҽ3JxE3E %S.Td4v7a?Cqf_]sJ("\W*Zx&o&޶P9E]5bRӲ %7>>㹮)5ԟu/XR[_0jΜIM6fA  C$6%K%}IQhh^"R $ Cg½i) y %Ⲥb*|*9u(8S{$tfbF=!Q@,1 AV> zi_8u(o3gl_P97ȕ9/ukK  C%n40tCx1> >vN}kңEYュ7X -/|)g8Bk̽!,[>e##OJSK5П&CsNc&/" LU*0Q\`g"zW*!򁇷Xm1 W~3hO!"d lP`.3.X -[0Q-dj -WA\:hv[p!8' h#q Y@Oa"0C$*5%`eEWg -)}\s ɂG\LHt҂k`c^5g4p3J!ё_IcbbI5,+jp)bI5RͰE z qxTzk,2QG3@@e/\m*&@^\+zJ[wNK7I١`YMmrsyMSݣW&|a;l#q,ƅ.Sޜ`HIuA^V{A;'zK9IER|04x!ty]z^Zk drW \BZUeʍ J{%G64lKOc BޠpB3`+oBSʕ|&/va 0`S_0u?~ 7xX -oAaߦjx:CB3:K81 XP0! -/9EʒU.O1: - mN_A9/Mƀ_Z٭*! -O? pdc3H`R /h_^\x4=Lk6Rn˥:ֶ *O>L^ 2^N#uB~]ChJ ^,*\et9p,܁^ytcքp=L]]ʛ7h' +SEUNr'Qb Ca^k`aFHk8{s/I|w)kcBlh׎V f"C /\R?FJp9*20[L5PX-B%. &J]HBC](]]&0ڱ1ԦljYceSQJ>I&GGx0^?N@ҳbzV= -0Yk EK8mhIjnc!z=0Kb>x+̌:ISɎ:ۖ87c.axW#BS&}~H[Z):=,3 i ;=-rmJvT5+.[Bn*N}v/^.үPT^R.L0/s=fߓ_:od GK˰W~cm N/ɬ:/ef7vFq:ʽՇؑ^ؗfQ -vm=XĨDߎO>R5baY6 -C]sD~#e1bqX(<_8UA" N7?;!+)p.YAb`GاˉBxEb'kp_(U( lDI=n42k:#ɛLv4Krp;&92aBOUk뫲͎6g6I\RbWUȰ<[G6q h{pr oݤ=5y*n @EYz(fJE y*ע1JR ۥI-@T~Hr+'Ow\YF =W(iH -Duh4~ԑe/,Q|B+^;D<ݾu-Cu빴z=C%<}-)e+c܀DMNLjpp -; ->}+Â=.00Уdj4j |M4:wer`D/>M ˁ`yR3<;oyrzs=:uf fq6N 1[ ]tZ吚k L[?2ђ k+~\yq>s= #1hx&{%$| -.d143`AZ ra?Ш9eҐU| _g4n\F`on?\~{@<֡WǑ`D")|@8qN -6[J&γ_ TYZ-JE)a -+RkQ<.!pL0 稗Q7A2ʎT-l j3|̡&(K5肈I5"Dځ2}^K; 2%EA^#s'#kt0dfb22俪&`5Jp]hYJ?Bi \E)6Ylُ@dDHx)̛I\gS,m\h 2l@*{lGlɹϥ|FU IߵKo2_$IчOCTh(s@ȟ>:\=,&yPyR̈tX٬}Oy9VQB8k*,%3#CȒGͭ@M\) Y 鐩Mxb툪6]kCVWCT[Z28sj -lH(P?A@kOvqdt}{U1Bh~wgRro' j3ߕ pls2bi.#8h@\ݰkUo#qwRfb8Hrَ) ^vI(LBNLԂ;x^Ê*q9ם0ӵ<28 .DNrSF-@@3ZP" G.B'G}v6즱N<>$]lY+09PP!ޚ*mo:ܧ X;0K^5Fa+tq?\CpxF#Ee'l4H_hldZ M'=/a\pS/-) *Z]#Q\2sw;|w;:Zy,esk??&7II959 ~'~գFg}v[jV73=86xk{Y~L 6PY{27X7^Qʶ֝3"Z]W .=wLaQ gRM)q (Vݬk5 !Z#JY?7|ODE*xv@ED{B,3\6) +{}Im܋.Svg]ĞmqoWYٯRYtag-H`I5o#g,1$8bye1=Mye {kp7sT57U2;cfK)`3m~rn}ڨ'{pRL=:+74r*Y9jSu}|~r[nO {!wmze?ҥ{Dc" Qɒ[o%MGg4Ywο"y)OGQ?BTm%ɸώd!żުBs'?3ʱ*vja˺qtbM]{a}|ӫig. ~ʝ֋VaЕ, ޤHveVћkđeKu~ 8o5UoHѶ-vA?Q81ħ;_!WB~Jm~CV7-GܖOr%2u-z}jo|mkqNǭJD$fҵRm%cbrOq8 ODaA< ^ 'Zw9;I2W8> 3V?a#7WG%Ed;OKH7^ U5~gd܉%XJ%EzqDNjRd+$JVXnC`91Srq[|!3Eo5;{sKTϾNJy˻JPN8 2GY0Z,$?oAL@t]0::$e$JWo3> i9 iF6#pf]]6m_ߘ6E5ҩX׏8fA\J=xSE.ÿ́05?h=Vbw\=>2m3}{'>V++'N :v<>%Vhi{l/xӐB9sٷ8D^d+sH3b3O` B;@"j1rq@ KДP2tĻl1Q~^7I(9NP4 =+%26wUxwMyQv% AǢTYOŹEe.hc")\j${O@A(VgZҁ0.կnpJ7HePQ1- 6A#a>tk]E@د5,n)Y +Ioؘ?(oD3kXb +(7Tz.xmz +qJ{,XLEy@>;hBi_|aΡN[g&0SZ+eHWFL>_%5sZ7 "ezko V|ڦ~2Ou&0 0B_c@faؒT1B}|R:XⰡ򻠩\szWRa)*ɀ̴2[W@XV*ȭ xw<,5*H]7f~үPC d +=1PL;el F LC㪵!*dl/$7S= }ĦyAbL:Y ݴ'rmv YMu0ט~2>$JY0}Y&Ͷf~ Nzx 6,x Iu,YXE,=\ÍUe6R02)\IVJ%ξ"P2J&߶+"HayM%$mi$f㞦%5s0&SZyy`iPzs1]%B}ةǀn;+가6ha +|&CF/+ =A +gzx( 6S\ԭz>6b|#Z<~^Y-YrG8>Qި`-Mŀ&ԉ'%am6&B&!иEb]P6Sm(r煃n#́+Qݗy쨹-_poX dw з}^qqJ+oXLLJXhoNhʊV_oqLN JNQTeR y@~SZ/Rl--Mc՝ +g ;݄@'}GC$V R/q 4,WY\x^3&vkA)nkņwx//Ea_+!}7%LJ u{m׌&pL&[W1h.rP,Ҏ bT0ҞL]ǻb77i \E.UrPQC1&k DHkΠ8k7_ה))ն؞ VDOdC3 +g?y*,2]\0>25lhx8]NyM69@ , +}%@=+< M o7.8̙kjI*}z"UR?$wk!m@"at078m gu9-eo\!`'_hc^!t pq$L!f^&9Mߏ4p%c,hl >RRx\ʷãz֕?[N+ !o%_:s2!dڳ$aaWZ RqiI+yZt?-M,Pw'uk['eԆ"{IyyۛȞO ;Z C&Kq#2uJ0k[ c ~Q8[exjok7G%`>D8ߛUVpeY810 +J IaMn306QT՟PV,hCxfMR2[Gk#t^vuBY9l}c7*d[G ä]kL E[ge"v{ +m%~"3]ʃiPMeitT-N~e lhmA?ȴ)?QuCuWy=PY} $̀T&kk*q0h{}PxMo(Fp5`SHy1h`r~/EC,.Fـ,/PשּBq;*{ 5oBRFU{ =vTT%8!UmdӭC\;7.ouBfA',Eb=NkT悄 >#3 @"yR~L6 p# D@G0ܜ)+6oP0 Nlȥ-UXQ1F|~|tϰRw,"lM5P]J5xגl9x9I!IoCG6n:my&'ZӇ|Ķ:X,WHG9c*S0LW4/"@ ҈w~@r肌qL(Є[  J-RE,2Alx8ť3 sH8 {y#ݬ=u\E~zN~+J غ/{[,(Uj2>k]ڈuD=:]v: Sxp2G$kN@g>qY\Dǂ8CSoDQ7$1/imP/f 2Ɏ'|cן~/*WC+zBtw<LZ +p`: +#VgnF$ [ jD\^E^ YQah(~ +`eH71_'K./kW^OٱrYPR.uf䡸i~ԓ?U+@SOݎ&jv[x﫹f*)}P^3zL٠Ku hETȑJ6 X~,A!KHE Ei)ڧ4sTrC>rJ{'2Ls-&wǎ‰0E'b3|{ =Imq2;]Q|JASz=Y9c>u7#~v 肌KvA40RdYN/I1e] t[Cm,n1"QK%l_"uP.s7QK%K p}N:uL:4Ge`<1Ut"{7Nnc70gK7I1j!2Ho&HOR 2S#ީikL͑WB)\:y Õ9-C  -252585ca4-61e5-4651-867a-fe8ec8c67fc102230bf0-acd5-40be-833f9364b67806 695.2523701efca59-9f29-471e-8eb4-1267ea4(afb942da-0174-456b-bac4-46354d7e47685791252537834 D!FG g0h (Ls,) +252585ca4-61e5-4651-867a-fe8ec8c67fc102230bf0-acd5-40be-833f9364b67806 695.2523701efca59-9f29-471e-8eb4-1267ea4(afb942da-0174-456b-bac4-46354d7e47685791252537834 D!FG0 g0h (Ls,) ? ܀ -Aث`5tH<049ZH$,-ݟf~kPփ w: kVrLg(d5V(p 8+`N4gRR2| Iq{O@ߒ؝*IɽIaFSL6t$|WOPc&(- .Oe(˦P(N燧;+N Z:ݎKb -; -lP:^>,*< R=;wh"702MtTu$bpv@9fDk^-|b -wNpIJP -7!29:(DGr\LP4_cʛӞb8Y *@GBOS6#azg,J. ? -_6[\3O2sUKP:0f'YKtGղ;{v}r";{ gg*g_8gA_9!>9ǜΥ<1Յ++iw03Ujm0ߌծ9/]a'(>ȫ-zw_@R۔M8 -Ј@u$ͷAcSE$4sWtӌFfExsǾ$4XM!!433LwGj[4DKK)n )=z)-HXz7:9('W-hZ9c>U @CYz5{> ozN2PS79Lj)]h yf}e<])~t #:`_?bȖ90#\Q#QDb-)-FIHcǗ9: pk%8iZgӨ$o4b/%Bbp -׼˓hRIo슢KВ]I(HnvKr;k ) U O"~rBS"@EW wU$ԍ d5dBqR &[;$OɃ.-ǡD%([ZEcL"y-nbph)%$2\Ar|$ap(.Q#0Jll%Fq:7`0ʷ/z:i5;'Uу!L5+?|/așB>~XlG( mJZk'c&uMĕj!5P`ST)c+Wʽ.m&3ӷh(sEQE3 ߌ45 _R~/"JG$3VظiKX/A Ϯj 2 /bcEa„Y!D- ۭH8gfn˲nAO{*=M Oj\9U!%-\IpiL7dۭjH]4ȃVW-&IHnY`B,8R Vjg|c/TT( &K"t`=^GOBOLQʝu;!MM`R;a7̮0qQX{qibڅNKZ6Ԃ)eM5}0 tgېf7)Zra_wC El" zoM346Ru#Ѯ[RJ)#QNc_4 # -8 |?XkZɎ2iDׯߙkk֓VMIp˖տWw`t?[N[li}9-wڟ{.Sk/vn-[)Vҟ~Z7]l_ontxt.7r??SzSwu=v'ToM{O\1~ʹ͝ڟs̵sߝ>_;i=s~[s3iN.ՎӞ;w5ޕ^n_Z'WOS9s?7鶸ӗ?nMyW(4:ogntOuP~yNvƏT)m(ԖR[jXIm-4ߡzH#a?bKD-n8qs3EzY3-=W}wwn׊9V}íqJjK&`xNmEj+C-R1DHqG\Ϙc-[cw;[^gYs7ݺn[5oi榮Sw]K{1wzol{K_]o|sn4ougoVߊb|Ss9gX^:ۊyǙoq~Ϛﯯ[;o;]靆YCYS_X@*M6)(Fc;fϜg}77ZujuV9Sq8usU9ǣwƜjef"K&{+L5y?oҬ[^։fZw_|ޜǏޜ߿xpڊ1sׯ:{߽Wk}9s8fk'ʩ~}gY&&^nbnb{͙YNk|nf9nib7777~ojo_5~ +=wrǭ1k}cf?TL,-\wkmC92g/TyR~8w٘ )NbC/(Rp 7V,*ߘ{ru(rĊ}j~$"?r&+gGzS[,gk%^qZnͩM5N艪rf9kr1Ó1o,gmJ0U^ >$khL4/Ûeļnf凚YO -fsP,UPTIlf8wu繾m[?ƻ}co37k|9]m{VoNAm3-6s gzmnnomZZrq}jV{_]}{oƶߝ3_տ{7-ׯm^-_^3'quk9^}{c-759̽37߿;Xsuy5۾59Ù3'J3̈́5ϺcZs]5Ɯ>} g Y.NVZ~1׻v}sX+3{^ݷsŗm[Zꌹ9U_no\j˭׻]묯zZ5[_گk;Ƽf|]τ&3]?Jk9j뾘q}\pLh^no=[9zs[[yƛߌo=w+[;ʹ\g3gB<_]r8oy>־^wso۫/uwŕmy=Ù5<&[ovg}9Zl;[swWg83Lh?[kl5ugk:Z?Ùjo=}mgBScks8s9s7Νw\9 g޷6Ù?sZ}q3ڽ~qZ?j_޹uݷ; gkxW[՗sն댱xg~ݶm;;S{9[;VN+ǺXל g>nֶbߺ&4+7{_6cf}vNw8gk{m&4:oo6m5 gϫc֞{ gnvZ?WUcm5k=ھ9j?o}3m&4nk:[8ÙfBϜ(~s]1֖_[u1/#un5ů+f!jś։+o1o獵D_/^YirB'ʶo5\_c -eer<* =+If+Eμȥl9o[?yVy|scJքO0bLV̓ӡL9[yH U'@"dc)GOjnݔdK6_Z9ʘL^W{V:-3b'XzwXd>!/6y'ǶҺ̂9 f;iJXweٙfm=kҪj]ێۿK͸ǵk8ZZcZ?{9W-ߝ~Z]Z+wu[[7}6{ZsWoju3޶u?瞹kYLoϫƵbl;m_~~BՖy ^}F3wDadlT Y)W_`7)_0QϘ`9[}|0Q}!U}|>A6-N+7}Yg) APbb=f:sP1 0c)KK -$=k啨Pf1013z,W10?T(E0c1Azy~`'fZQ"} A[O*ufT'U K9fޙiJq<*ǣBg>?W}|0Iu\lBpL'FՙZĆ ASnV0LD;zE'Uo -*xt/2*'FLeBy"l(0m`DHpܒ:aqt07 c !9(xT{9[BJ)su"cƹNő *0[8*p nl8p/ls1Vd!1!WD~(D``aH29)/4. .c z.Ṩ KJbQ\(Rbi_ -/TY.>Q'pEX6<PeóY27*qР+ -Q$DTX/jPMTVgR(pJXWQAb BD>kd(kJDoQL(q*'Q\$tkBr.&2 -19T&,Ti4gRQP0x AJ&n&" VO -1LH2IA(%9* 9<lKKX @Z}@~(Y`'0$Xj.B 3`j&p\`;B ʀ֥4a9p@ +8!K(d^b#R6c|8is.T\~bhiiiڅDM9i%HD(0*6`6㢁0N Ag Z#2ɀK#uies<ŝ)x6Ѥ P},(%k|@Ѱ1qεtnf6>.2uBe9kQ64ac:s܉zi G4ma@ӴB'i2i: mGCiZK7M MdoVA -3hVٰx@Ți.IC8D4MӴ0bo4MFM~0"XMӴOx@(X4̓QѴȺI -%B$BPpdtQ $iW'Ѩ`&`ʓlj &'#k<&,=V+QV+@bI-q~l^MқՌ`(yx9r/6gb8oBٜ|$0yb$`kΘ73b9ckI0>>@#SA/\ __ }=RwKF_g_6|X&Ɔ=ᆯNzrb#+D[`X#VLVbL$u5&J0M26զo Mlc-(:1Ycm~RP_] U`7_ъd M*=Y*# - <JTA2><B!bf/m&X6eH%&?rB |T%jޗE2LT'*I{TO/agGc6_ 8V̛ee ,eQ&=d}1y(VKs*Qcd`+c BJn5j9g49IU>W3jF2*c⊒2X?"))#e"ZFpU))W1/VlERָ'JP\Y|!Ic1Ua,%)1\ @GlE0hwjaU`%"XH~,5d{ݴW{2<HGY坳hXʏH_ FO=9[1d/XƊ2y Rָ,[eXJԠ/PE_ e!X *#˘Ge`+V#ke3Ҋ+*# -:zcl- ZoL"I""FlLZղ1iՓ/s] g)XH!BCA$X7.Vª PT*!.JCT; -3`Ҡ",0 -v& Qh  -29\@AV8 -2d-M%&>4.p7nl${`!eip,_z(#R4FLL#PTboª# ԔH0hS(‡rpA^4e"c9'oCSj&(- ȷ"6&i|5 -u es<RW#F>6OplEQe6C/+xb6ǃL_S70CvZ]( >‚<)3Yj_ hê4E**!ơ*˜x$ -92Ek  *2:?|*>倄$4)rd H[U&\<9yz)e2KNi&1 |4xF< y>Xs6C$ l"->uMI0Dꚗgb\<%Ul[N'JL !xG3V圼Βd: -*xh8 D@LĐ*1Q,|"6cNѷAU AH - \1'X>l@a -ĠsE`䅀# s! < ,miU (jŕIU3e&28l,_Qe@Ld. fL8 C""Nb(,!k.\ԋ(%|&>stream -Ejɧ"m>KHI:*"4&lǖ 4Bz8%J }ad<aTxbCD@^6ǣoLZH"" -R*hT]Dۃإ[MHfrx`,WL;/2\o4EEijka+?A@8Ny_mDSLj Sy(! X6$n"*nƁ4KpxT( --/eF"HƁ vx7CDL&*Jl@ªAp <~vAmc.%LcBnWXYBc*YԒE!y jRCaLᡆT .TD̈́ + -5^b ^HLe D4TP x0dXKE$&ŕ9Xxxۓ#E3B -.6ǃ^1T,Ɗ05 CP\fԀcr%*yq((,Gc R>e,zC`L6!I -f0 dž] 3: X3l*6T:Z> `O&&)r. ,L9 XmF-0"EΤ ^00O} Vj@ E +5mtuDmA6xher,9JKh#qظ>ayBCH* U2zu|eQ0(V :LETZmB"t>3V{F+xBxF 4exX~=%  1b7ǃ 0lP &Nˈnes<(ЋzF@h Ȼ℉\! X mG -|-Ra@-9i ces<* D`H/V`_ݐ.= CV/b(V?%)HK`ta/2M S,`p*hc+DLb 5DS5p h/E+I;dWR҆> & 9Bw ̕C' *A@b&Ei#DG|fD,ZsYs9Hupa$j9Q0 hMxP1񳀡E`EĆ3R條4\Z+5U<)s ؒ.ZnE'H,*[.NnM AClnCEDUh"3 /\ Q $('k. NHLŨ.#k.GI?l,#6jS,0RFѵy)Hm&Uж 0~j#Ald "0R(,RVfQD+JKLŬb?&2% 2@i`33| BOAbʌ2dKJc2it 1,T`p_1 -b ץ+#%A2FތzfjCt[Nq&2/U(`Xœx< |uRYF2N*hLW xl+W*2J}hքVh_AP *P B#SUTL[B[e*"*PXStlB$h8\-&P9Xx$EbEzeDP. hZ#d x`H3U0:0 &(8A*3JSAoT@YtR0!à` 8m{p& Tїxl^b 0kYh E2*F粦QA(J^xJ -y* ` @ћWƾ,h H!=h_!iP<:f6ǃcSNb䔮\ -N -DQ| W*4 vVIC]cYQ84*H00-0FGQU4V.!jme2 -]p.2-D%- S"5 & l -O9P#sERDH0(RE:dmZ4L>J#8 ǡQA 2d RFE|Cbo0HJOB3RiU\GGL ^ݙn*K ؁)^ԇ;"7n;ruiIk)V0:nWjU ݠ\BJ1OPWY,LMQ2(sb1 cA.sigZF7,9z _dF8e'g*j^ztNE$N7u!rNY@N)RRȴLnNA\0diY\&~em`i l*8ՍEMA,Əɜ]A<낟!tgo16 F`lz=ͽF*\'chV yex *lSj$T`^ 5ǬUn{y)'y -yq,+#Ph54sUJئmSЁYidaFSKmN]$sxЇ!So틱6k0D1" 1U3K=TjT;uMd@y1 w=" !;7QHtˈ*[93*M$=Sg Jf(gk`"u9N+C:G#[gsjs/zNmyu# -Mx gYӂǚ(0 ۆ-#=&Րt% ٍbK f4˓?)hX5:f3MSآE(.6F^F.FHȯ:CK}O YEUڜ؝=N4&s;QnxVmvr9F., ̣ Nw @N&akgHxd]6cc6Wp$| R(PvW Q3<.E7scEm zuA<U/YSA+J_\uBh4% ,M/>\3S? 8O%`ݛ 2 [l6s 1F) +$w+|߁a(ftj2zdQ mY~u-TblV\ETC r =;q8 \A4mt -]  9Jyȍ BzR @f4 qh ;|01=FF1#2f~:e jO#mVXLLIB_AL)ȳ+͵G0<(0bzеs&z0*e"n{ԃN41dO#u)oFN;gR/^ޱV? .lƶa󰂪qIǕAȟÔUԤ6}ǖ a4rO8-z{ PaԸxg`n *Gf>G736LTNܜ:W\}AoD%4QGD\ur\(GsN{҆-{%>5gO1CJ N-uO%LHQCȚ)QjwDcY\|Q e E)rORT(UT%iԄ}bQ 19k݅,/d͹$6P֒*杲BPIQl5Y n;Gj0=>gfResPJ9KӸ`u|Z$绋eV!h(vh\(]s o*Fu""f}ƢM;Փۯ{>Gg Z - a-9l-x`#o5OnAoѱ|u1L Ol`?7 -Li V (RdGdBk;t+ -sw\-nX%vŲj1!,'xfяF;WW4q*|xZZ&2܆ -dC ʼnsݹX4NK%f-|^!tPs*.mn NT_|qsҟ%2@Jޜ2#d{CUPc 0e*v#R;t$_ ,އ,&fBX J4%H" -s۶*A\pu͢% pucM>hpT.~,Ƭ"sGj* [O6R ')PYƼD򌝑n!ΎX6gIR'uP -YdTX` U;-Nް?NLD) FRJoO@XbZtTldJ@L^~[U\` -ƀHJl268fT$xpjҴjv=ú-n -'L>؎G\MȤ=mXCAT_d{$̗)JFB/ -<">݈dЂ$ɢO&K)jۂUk˩X6Ӏ z{x Z5$!8/JnRMc/y]&<:).9()(:* ų1S_ob2X@ -SPrMu "(_VP'¬FVNT,`? V/ Ugi3ZP=y7j);_"u֫ -z9.Uki$ޮ]hׄ Dt~s@~iډ2轢ҭCca2EYMPl>Gɧmw9}8 5׊ M "` 묤:$TN= C/c9gS.1KFܕ#O$pl4M1\@v5m<

M: 4?koƦc2t#i^R -蛹 @ Qr$z`)aNk4pfc+V$o($]T(Bl] gɘ"Y3}Y1uTXb1xߡ-yxcQ g} xQrw?Aq$*=J,[Mne<3Hj@\ 4b1@ W֌+1K~+K6yTP'ߙ)p7,<@nM cVRz<16B;+dr:C^GR >k^wZr62GV|~o +mI:򧤊zaFn,DҐE_xu3 'ҵ?"|qjAX$Z}-f3yZE՟s\_-D! QqlPrZJ,FLV=1an4R$'~R)j=4N)ybU7DmSIx$| Ld<0vA<۠](1(S8 RȬO-k#C{E_ՙcG]1&4(pځE30UFyŬ@W,>^7e}sR#;̯pr▜JJ<7<. Z"~'BgP)n W;nݿI cW+3Fqjs? Eh&TzANKxF kQݳ} 7IK{Ձ*[8*G3e/`!+U۩zS8ɆM0 bLVU3r@ov -maW 4tё* >N!BZre Gf H]F-a Z>r,Eq6f4MgQ>}ȈH&)-\hMwؙk7Cr+x@YmHb`QCD0u@ RvG G?]4QX#0,dtzq91JgeA|:u+Ǧq OȨ@^&4ؖ Xgw(~ta/*aA5_FՈGL'iZ`p̜-ujǘD13`->־5K -Rr+_qK,ahB|$~hi9ryx,Js)Yg58pȂQ G (LHHǯjGhKi@c$7X tLj5oخ? aػ@dds%-h1GOHiUD[wL`sԔDKp30Ujã  jJxF3U>B<%ۊO>'zTp&%C6P{O&zaJl sͦ)dBȲZ4G F -!&b -!m>L"vb-Ɨlf.c&G[ 0}+7m{hKL,wݙ{-BRPd8:pX/M؉gHP3ю2߁,#66XC:~Qd.hzo>1{(2c&ߨh$;UXFb|vHLF;~nA:k&"hbj\;l;0)R%EY[2kefr_GA}_VĪ`i{]pJ+W< 2ҩ+@:HPV5Ll2tDשBYk6b&XtP6~#J@N$]䢳A_0OCGn^]3"ky;nqH kE/Pڡl -A;yH֜Qq:A Pp*;'ȡ%!}6q3-O ˖3E2C-u@P_90Q'9 59|; DFrx\H>#GO\0'Twôsy@@L[8{rm^$DB{{:q$3`"èQꎎvWT}dy oh"JE/`vD~sU  -lm{!W'e?.m4n n^72?N;c[ b_)Ib!&D!'O&d*+̷ êx+1j3ذ]@{VG4Oe O6>7ԋItqK,EP-H^/Xw/ bgOWRwSuz`jL"T 21|SJ@78\\e %^zH!fe$#S GwA'Czǡfxc )Swםg[zPm׭cS?*FC.o u"6UP& -zK^^̮ZBHD GOWMKYHwϘ͝K\ۙ2N˟< -uxn^T wȇҤxTKRi $d HZO0 -Ԩ4 -nI P>-Eb"CT_qxGn̆DMMI[zCMq#VԊ"zΏzm4%cc<&$A3$Z Oz@[YZ5OBHYR=q\C H9O(/4"/Nw9%MjHbZF2SCվLl{Jo#/ýڵ_\!:Շ_2"PW$6@3`?-! oO47<sL<-"BOa2Zlj@ߏDyo9ek]^}{K]TqG.^ n;ĎW%7vWpirCl(J:ſ7~t:iRl,.s|c{!4k)>GI 7Juh`_^qOhrc9"RE L:bo S;{[ZcpLT(KR lhmW@|;l"e@Λ7N+h˓A4(m~ū2{;78d GT 8/(lb\: -c^rJw1']? _*k7AHT& D/T\QK؊(tڴ&Z]V|cnDΈe1y #0[$ҲD@j4Bwp*L1dU&G}~uO`3A##7C'=ZJ{q"q^ߎ""bj"PPe9q y5(7ɗݼro@$SK)Elm5u"=e{sc]`[[dAaJ7oS-=/']L0z~`&G}qY{<{Vx+d)q )He]0ibwK^p ?ͣ li_,[ -7݂!/ZDN4DS*eŝp2:%\H.d<A*Lӝpڼ@ҿ=*WfgC57{~ϵܶhAݳLD4rZW)󲐼 ]56 X{?̔mW!'ymZoƈ8FYL:bc`ť_=UՠD? &UXل*u5jxZx\XҖ*)bE -|y%M;JS@>Pj*cuq(ĺ̵lZi%8-%?b9c6ƸFNW2FYAK]- ?ΌJ"YA3gLI& G:LT|ճGq,ިr432gȐ3?Dj AۄU T?D0 5BjAhifȌL`ʌO WTz?cE;F2;r7\G+NȊ\[uw'Y3fj-u1U4e^@/yuK[S_5mF iJ&mpt7//&{p_ODU+dm)0[5| wɿ 6=]P'sJNŐ߫N ;Abg;}ڞ댰I C"cE|Dy$ V-yX8`Po*n5aG돥*F6%zbT0 Hv-)Iɷz5! _Y`8o<]foNfX sN\P.뎠,`e{>W@r?70/vx {ǝg}Sr U<CMyΙ8ꕠ-d\Ct$l(CP0HTr2_ut9wi9r+>GP2/tU`2" O7(9r 셔{j2[I"(Vˑׇ) =~ -> 䏢q<լ ٕu9^`mѵ+SA\бHxeB`-;]KQ fϣ02k,4DP.W -#y`[7鲒D%vWN4ɮGq+&L&0 6-g 8}'q,PU,8ƞ^W^Ds<ߛВAl9= h7&.h#)V4Zěr[ @kHHj;ؗuW%eE -&?bVp-7kS{8dK㈊pӆpUT}t,BbX# ~F,uA^m;# pw -x敶`Yj_yu(dmN %PͷuYOW?d^bg#w)e!UчLb pYlQ.Mk֐%An'xmmyixs@ z]vrzH[kr#h2~8ʴ,x]O_c}bga4k Hvk[Y2Q{f^3qH -}T>Z*>~tչ>| z7E!a jiZotK(;h0JG&܆GL- e@[lk=^nE٤1'%V]!`gBzl8 +4\A^C:'Do'O[޾xV$mk >_N%.Z9r~ 'hZ0E`I|[GtS/bř;'_89YJ @EW@{}<|Dc ;[0 -nJ/YvϪi,VF(As{rB5{luDݢ@vVqVx]M@<ت0'ņyՅe,7/檮߱CqrVL6[PXdL8E!n}!x­vFLNӉccr X1&~9kg,M6D -W.D>=af6$z .,6YP89U=}O uZ AjY{ve˜x@&/nNBI%(ʮ\ɎYa7R$ʘ:Q g߼B-uNE~}oyi6pT"͵7!J탿Du)X7lƿ̔;NY?yD^ejmܬNumMN+oePAvƦg2q'b 1 (I> -<"/ \m:Ac N>.f(!&l $w8^o_І8Ӯ~yƒ; L%2[#S朘DЁȌCę[1.%>- Whuncpm} _V31(AïIt4#CWi]3$Q I6JˇtLjlk6P8£$n fCts,YcBxFf[^ /˴HI1ߵ9#Z۔k{3ǟcچEv%852Rov}YlPHDcS᧎Dba#<@M4iRrm۬&s.23)i[#r}֋pt7J89\k)ˀj̘u> D%_no` R:W,r&un@qIip:`TfԨXV,̀ Mq͛}G%C&f2pf1Xm]0Q0$yygp7F6 -dNocIwnqMHL+l8AK5J"A3 -\O'=Co.N?g!A,K|#Id1V^t#Z3zR<`au˖a| NPi apથ=#d)"ҞUPI G [тy-dh?(9h^ B ?35'/?Kd 큋 r]Wxr5 yd 25bтJ`Bcj@Ў8(ݟټ5*UBo7c4|G_eda류qd7.1rZ\xѳSe8{{ك3"YUl>gHt EFsyFz;l.tйs$-QԂNѽ4 -N**""JsUp'x%F9r%᚞%px5kf|>Kr"Q7 |xf6c *>Eg?t-93Bw&(g -t>l&$HhB;,*@n1r =\( ~`dZ>%\%E i1* Y}rmD.ej8{gx0pdOmHN7h&A> *p.>VjwЂ_" J~h~5(p磽v6NErJMRo>UzӅOIWf:ԥӱ 7Ul;F^*#}r~ZIVυ9aUD[9Bm8%Tye(ƈsqkr<'$ƫ};dt;bhb$]%fha}a -,=nEL*z]`i Og.}@v^_b*$\,G dH _D!Q?TJKp 7 T"Kd'! S= 1qC;4̢#z&,tSq)4kz3Pz9oZ*k&?/wN>+"w\ ԉX5@"<ፈ0(̺'*3âWE32vKYiV&le -=(b_6C5JtBS֠+P$O~(ǂ,tP|w"u)XVlI\_P%)25``ݏ~ݕ.дDZ, $paI0dY{?tj՟>}u4 -Ţ;`+rQ+F _ łbi]?LK )0Yr ?ձ(wnb݉>OQS0>E> ZˌO?(L5K -T|+*r -[n๴Ԝ>^@# -M9 I\dqC5EU7mdڤwF_Ɇ˥\6ԋ&D+d+ұ,HS"/!xb *RD@i4.l?sW{9ZvQws9qcE9=NQD CSF v%h+FJ=Egߑ3287Rx^R3oC4^b3u -{<3-^qBCđ#ZW8 ËB ;,{ڑcg9B"KhYEGU __t$[1$cQm^=ǏB(e] -pu2o͵%T&T-3Oׄ{m0 騹by#!}TYɮS'K&p6ۢM8+jI*OކBxD4>3lsRR8HS2rbA84''tC_rJ M-"Uv*!X~ZE(UaC}!bz{H(<+㆐H.Nmy7c^(TC֯-S\jh0/7$ABHױg㱬z+h Oم[*V|/vrDT"RʤqLiPB \P4g/2EG -TUP:;Jq9elо~=Wd&Ӗ22cڱ~׍Bƅ@ULh j3*EzGbdXSзU¬I]C3hM&ٸOVhQ?TfXB'VǬC 3 -nr=xcH-!RH֡A\KXfEXg(L‘nEvfM4ɇ6FsJw3Wx$')Zzo -cYHBNW&3VyTZP{=B@`]T$wX2ݥSdFJ쀀"j}P:tYޗ1!9Eřmupl%ԹZrba4ocBݎ@l&BSi";o=||1nKcǸ>D* Vc#9o.4CdoPAEQ/ Khz?8őJ91P^qbo0iHnJ{JX4qŀ)]b#K+C7y{kmj+ZX^ -B - -ZcVi&2ejvğuG5z6[/43M,Y6bԗ}Y[0:*bEodj;VAM&h!h)[ȅCk͙*yv:@6b&$qjz -Z VAG3uyC^d1SVGJ!I$e)X(%d4ؼvwh&%mZ,}RvAI4. M)*<-PCCk*,u͢Fn!Ѥ)M. 0 ^b/wC^V]]@@Oi -yj$r&Ɍ6r !]?r$riyO&sp]Ҵ겉1wOgIm(l. `M7 C-XւEXu*p uĮP $3y;> . HĮAy*22"N RǠIkm Y -j; G ?֍ȘA9qԬ!E,F4V#s֚DbyPXڴ}4wQIɺB(H0&*wd}܄5$X- R;aU+RQYS X{n.x"˓ȁ,1CZ '"$7BB[]?rsy#r1j4r!@#ra\x`IGVeN3vz5aߚyٯ5Iz<>ޚ2(uZnQjծj˛  ,= ]@P(Iu,*DiDɼ3ִBu9ar:3شr4 bONTj۠cVD:oJCsHykVҊg) 6YDET; U|q(Noފ{T:H#Qp:/V&U)fZdlma/1՚X Vﶮk'IWqD"NB̌i 9D`b2\ӊ`JPxT ͑ 'OZ2ն\jah -UXa7p긺TMqö. h(R+AS!Uoe^L:3Ŭͮg*|(JK"xCb1dE/tvɌ=mɛZu))BQ]*u5SGEirAW6A4 zi PWʠλ25ZUKqI0U^pTJFDIyIfвxH:²xH$W[cXi-1;, -1,.|B as@Ɉ@ۨ@@|TZs* )^- -4dAm,VdAmoEiE^wxÆeN+`7 YAE -CRp~\R i|P 0[? PȜ@uQ=yUp[ %[ivX#qF[ELr#KVIV9 HmS_g˸֤: ~IBLwLG 㯙^#Nso-TBo"3zwAWqϷP:ά3hPוjKA5`FѼ2͛m}uհZwb]^4vyыpn) k)R*]@RMQ?bXi¿dIİXkqZȳj!Ϫ >)M "Pq aFTxjkĬKs|AuͿSKPDgPjY+jI!;h+jlx$|&Gkm~ЫR5^y)8,65՜2H(3c#؋52'U^dWG8tf& Y `]@@DkN&pRNI;. x7 5+9Pċ9BE |5H3rΐ܈L䅊\ -M0*1ϛo-Gʳ%PW!tpĚtUUU@|*PÁxaR0}\l[W.JR)J4Ϋ@iA5D|\c@ƽ}\lU/[O3Sw=Jb U=wBʯrUG2rpy9 9"&9ST/l!aX@A`0*M!9.,Lׅ}~YV^Ϳ(q ,!Gi)Rc5nuȼ %(&ާvnaP `@ao RLcULnҰ/PJ9_(# 0F2ӫtX*[FI#LI ^r=biQPRqhueкvEPEvwi}1Y߾R|vȂi&yņ} I^z -XrEJ ^=ȷ] Th6x8 Z-Ӗ CzZRī  E0Fʤ5j)>/tҤ;FlaG鉩+\,7JS} *c wų2imVK,))K݌[/VNL):̘Bk Rg¬"hU&vP{ 6'X]-4=a4q~F_'旉dVaE]@YL_:RПjC>"O}b91^z2{% \\~:,Ua)>P8m2AGڕ(◀Y*dV}!̛6dZz e*MTjy *B]In!AifmfuÚ|4 F~zw!c.U,'<x6w'JtgEvg_#3dML}_8<#*y(HI% ̆" gz|Nޢy`gnxbr1G3vd0Sks qdP m6䷔|ӆtf䊼-?43ϩR&y!_3t#Q$H [_b1u}T[L 6mfb >kh17vd5uYFDo2x"YUaA%alR@uP,W [PaI,}qA>,AJ:=,5]=@/;:YD<ⳅ}F]1 -Sޝ>Vo䄻`vpCneX'DEѦ;(1Qq c_Cr"_?7TQs8hr6oAs󯛛AM d'yQxPȅf<BTJ76!1q0"vA6˼{hc1ZOgIь3ě G'.;lH06/*"B]@pl6)ij ¬oX?dw(uNTri0GӊA$ѷ̛PX1Q\Q ls֛#ܘX:`o^軀h>:~BQ#1&1&ZpF*c]4c= ]@^ǨR:ٴ1Q9uNٓ} ;{{Șx+k]@7 tA)|"&9F@ RP a Himt$_Y_! 5p-w. ĄtkVFF{&A[v;0 -S,i9hAó: -X=FFl^q+I(yOh2Ar4}[~{7oU@݇+"zro -^-8. X Pa>XRr[v~ԃsT7 x\ujimFȕ~$_;6HKՖ2t@r,6)>XwԔFu@6%d-GNW*!x*I;Y -4y3]"1B7C+G]2,Hٺ]@0A* >Lc`C.<͎Ի;;A/?8 A0Z/e*.U:. Zvy5B텊> ^SJȈn V]PIP? D+.q=l1'o6ldQi4cݒ&J?Y2y؛W ݍ`U88>]@0랯\l$#QwUADSIC[RczEo6ut[jPO:J:f*nP9*<9|O#?4GJty4I>4iWSgdV&O/$|u֞[>lA_^g -zod1&~B6cW`^fE -!. 8qޱSI?mΏyٕ.Rz#<צG≯9.*ɍ1٪yB {lklP8r=5R"AlKx2D ~Yz7%3ydި<*K$f//^ tPuDi1I1A[sP_b]]ɫh=iGu 5B@ENTBNþpqTOaj3ZDoz/X[4l?4HOy#r*;+> 1UРH{upL"٫@QхFڃ|w~!(P#J6$W3S_ݗ8(w*<:Aഷ" Homm`QmC~xbHK+3T8MeG1\y"P'> %䩏c'VimUJ+<j3!88Aߐ4H۾A8"}A-ƫNfuwŅUCFU٩oZ=LM)q~0N_9Wbm*OZ <T$UEj1i_[փcPAnF2(uCiV8kV}z 3I?"hyXj&ۘj\'R=ǾfkO$QET⑙G45'M͘W&kx=N̿M!=T< B;WnPh7" aSqky92Ƭ~uc+J<3MϩYP:xm(2wr>EcwSBk[N3RWq75 >Hzz~@ڴ>DN=*֦f#o'a/c#?dXj?%AETdX{?*g6QT <~I ܳh+v ,Am7UZj[J"hi7I>c%-U%UP4 %y -%^1ud5ڼEZדHd>V2Ub-@Mu}zx8xw icg!{W.}檅|@_LG/'%Jk7DM]EH+<êu^ge/T 淋ǩwB…^Cgw j{LN*Hcf.>栭-&RPm֛8tѧg`)W> 2?g0zgF262QSszGza.G3uv&%0-V"T8bh妃alOoȾŅY}v1 ь9ҧ>PGiF )IxVlƒOڪH"y˲ƌȾR.k_|,)~WH-b67z`aCzr5-pq0i!Iӆͷ|;tuhi?:ͽf`JqpU\1alhi;jwP}&`>BTzB2"1j07LQq/ -Sqx -'J~8˳?<#ND~3Q `~Pt/?#O@ ^(ᛜ#O?]38DT|P$wDyH|S? BH ` L(zɿTC7Y2HW& u$W'?i @ -U%U?t/%LqHTNJT[R .;B")Xvw*Ijw"c Nb&EG +^^PX0Y,Zoߨv &ywP2q (D,V{/ 0M f"@JTklu6;~e9ʫ@ܜGW-J)^j7M5$ah ]OgDES|cd+H mli;N%v^4G. I8Iu@6%(P/2}LcT:GaSֳx`R1ߓ`Ooыh-{? *y5>(I/VF[P_ĐmGP@EoA$~Wp8]@Aw;|(֤5%̋A^( 9@Qblmi\U<ĥoSm*)NJ.!8r&~dO}RBWj벰~6"*,[% 1ټ2H1N0WR[ Cp3j5J%=eI ;(22WiB~8 J}dAmiC81>sE1$Jbxu]82't6tgD➬UR#`Y} J7BӕrR odha׊VB1EC }/& -ㅊ\<( P>S^|h;C^i\B=STB9H%B1 qCr:u=)B``wu!yw5ccIe,~*\ }٢ bR))ˬzʉssq*ԕɻƥhf~Hߜ~yH<#}.iBL 6#O]9?pܟzV|bN ,VJK@R& -zKe[(BYU?(d_%99APRTD {O+-${H5 9F%sd 9 ]@P? UЄRɜ͡Hh&yFJ)Kh`0bYx?mb4ZDr]@IPW -:ZjcZ -p05P'A  6ҍ5))Z鐺L6! ] =4jgtAV 2Sn3* \kXȺ`ԘJZ9ꇕn~,UmI5bjʕ߼HT츛 ߦB)323fF9pˌB%j{l.g"o Z8Z. м8Hȍu _%e17@hyZl1!QVSww`# ݡC>V߾ԳY}Ahd*H#;. 8CᅥbHLb4(ubv@H<a}X r|-B>:HaI wQ[.0H7[*J (+z>+S_pֱWTNIxh>k\3iYTքBȌȌ Iƃ -/|I8$VDR&0""EBaX8)HSQM[By]UADK)fַSO zA54w)ޠMB}5&˞٨`u(17nC0ҬsyKP|yuFP?šץnouO 5t|Rp72i/M+a)|!ռfwVtop}_&գb_.靲B%6#k.i”v7L95Ʌ5hzP ݹ[8tvcsa$Mۯ8/fuXZw+b?~wę g^T!'Jרv+{$&V4zjܑQ{y Z}"/Bo l XC -HAE~CX5qfvVV񏳡UsB/M -HqJkx'UB2\*tW HХ$6Ѱ'䝂SN52ӳM5 ТpIgd~ (#əh^|%UVrMUEdj  ۨ[j9yx5U+SU\ㆌ @cPkr58N^3B+9g,c0c.QkzӠzWm+8a.ov{#|[++hxR|cC3.-\&&G#9##9 .͛[*O`kM6%&3.Q@F͜p5uJ -uؾ9Y*Sh̪6ujh3bAylT'pZ4`Wm64,;RNwCƚʡSk~&TnFL\y!V )P˸5`$Z ʹ2t&1킥O1 :YrXKQ:R[`"ȐxLcʢ^1#x$$q1nHHi*/\DZM$lWH Fr҇)K)!rah XJ{-^fal 1$ ^1JCm&suPDdR#GaQY(<= @F+;3ՉPG~ PHfU4ֶH6Xh]3'w T]ru!?"*:Ɯj(1C$~h}A `fkFUըM T8%D϶-Nm$Z&g]UZEyBSVM҂$52t$djL52&ќf=nܲv'tjIJK(VuAd"ZkYGOӸG`U!|\OUpXj۹:(16疒bCP<˥Er.eFӰd<ܾ1iwv_ o'{Y]h~fы:/|=CʬX(o)ޮ)WLwྲȩմ(O%R yMW1@ubz22 ~yjUe|@!R E=)_*~Ğ=£ҽمtę^޻S׆J5`脀M[c*>r(5DL1[RtAR- -zo*ǔ 5؅CPh]nӎ: -6 v'7SGFGS=v;n42bM^wGޢ>MS^eOK fv)ޫ0{F:?GT6X gnAQu@A 8Wn/?]"ZJEAl#X8  -+s>cSq+}cF~=B3hHEeCYN=N{rI~E+33 * ,F8eRa\QVwYD]m.uUF -ۇj\[N R\8& E1'~txNntؠ~o l~rʸͦ! - Ċoѯ+Ew#)3sN\ANPIuUg>M"QKnpB޺8ʿ /oc59.w%߆w= -MkfzI?¨ `@t=ezb.`YcT K\ \?2ɜ=9k7;?k~쫣&F=!!xM |*s5ǽα$,k96M68>|/NwM]1+9 -!f Zm$u aKp:Bko&>l`p̝kP"%1gXK`{eL88#8TGVLsAdWjnƞ^=Zi 1#6O݁3ᒷƶEH1G60iyϡJ2Mp,jT駾y o,oso'8{f%x!m.^ʚ;$>U.1%FO!)SOTڂ'doK0Z-"a.wMھ,2Ao :`oz^4IUu ?xub`fvy6Be$ -+'z9U5e;e7#t72%~y\ ~ﮇq8m$?jY:SCM%]#u->(9&/z( T"h^qjjKp[k淛 z:/xh=cHEpm%T/-ΰd3[v)Eܣ8⽬\b̌5@ ۀ8Z=S pUw"GDk] =";uKzk|77E$6V]Hiy@;HТ=‡XtWf*'j5nZƝ!zbb6~!Zݖ ˋ -H,gj 2wp"IεƝCwpl;E3 -@|m~p ":3)BHV+APBjz 4+͓WT fxVHYT$UKN)y6_) ")r۲qiąljI ĭ Bx@(TjVzړn*߀l343RtTϾL* :8lFK^J_١- @"_uXu+ qpen$ڽM*hL_.j,OT">ZU$qV&0+~u+*1 pp0UFmErd8sL䅅gd}I[}c 2J,6Uv2z3t"O?> =AgOYGGu'(ߎeTäe&p[CUܬWCÄTiZ;iJߥ.JwJ:vH^2 i^<ꂐf&U1Xrl 7ՍS\U;,*a}vkďQq w\xiZhOf>,? ɁNCL)&GZj#IK9sg?P K+Me $ښiqv=3N3u3Z_q0"W{;ڇ1.86!sXz u 4qd|`G@œPuj_l(Z77Ln}$S ]JZ (ъ9 I3 zy9bPC  ÕE'vUo%Żk^'cj0}t37uyLBciL%c)A?مi0'ٷZqs8D'dZ8jL`<7)_1.D7mݜqr58W&˚?<8}z§ ջUG Ƈ9Nx {Yy/ӗMx.=yATt=~?z@lQ2Xލ 8:z9?>j@cPΰQۙhã7eYW.:՜'{@ -Qj+r(S)G?# acD*̆zW`iHzX ɻ:1j@c/B*p*oz{l l=,/vڿHe^]ޣyp3?QN0hxXZH XbY'zϽv8ntq}u>CT%pgS|&.S'|pϪe%\!8a+edT,v(+,>%\D^Xĸ"5:q:ȵ qew_tCƕLap\/4b* '&^bˀ_^cJ'|Nt4tHV\:HFF?ͅ[-ϲޫI -ц#@ gͷ(U=G{OgSBaAC܂/ϴKAqEi]ɉXmozB!Kdth Z>^58rM"•[u| -K~9oLT%Jή q*y`EQb8A)}+ H؅$\pDNn}d*V9i4ۛX٥pxDaey6E0L9\p&DC ^mEkIB \h: -](} -hϟF_۬v`pBe0Cl%Ux/=xhBn5AoxBUt]wѾ6BsHJ9nsYro-qw3ٛ". P@E2xo[-+4M෻F -q'1*[! UcJtĂ+d(~ճ`qz#0R[O:Pŕ&)Lr SŕyE܂wp6d"='.YHLqϊM -I5gD4ZsϨz'T^CY.Ap'8 "uPJ;[?\"ۛ'l2Ӄ=qa/'L*aMYOV4©~#ɟZF2"%x}VحNajP.oxAa#"Zt{&DFo6|U4M >nfQX1[tW8(X?fgRldGى4'9qA~Z -P|Z4Iޫt"4A8P. s ) j:ٻ8C!ݓMZ )K8fո,W`5W n<ƒ?\苧LHN)ZmZ_$Csk3U -C,5 y7ǘߦs.v ˆ}?Z)%mQO=Z$|q^^6jD~XB<8ݎ1\Ag2M@C.%Sxwbw"|HݮӋJhCM+ez@jKp:uo|P|ƁO5%?}e<`ia.p+6kIRgkp7!KTg5BJ B=tIG#oSRwW&5՛/$5'QUZ):TLaRxw~YDgѲ%0$s0>gd;Qip*<qkF I#1] -g>ialN_"[f~XXaZ1pnC+c bn$G*e'x9Ų&Y><^ lp¤THߌo}`Zd̈́)rRaznmˇ_ ?.z؜H-jlIkt>!!ogxE& E~ - A9jhOR &#_

.y:&4ݷ|&[W,cԮ-ܷ[1 w εYM]DdnȨL?h˼Ʋ -}9d3|.xc.őHE Gѻ$}1ZK:I7PNB"Ig5e,͗$;"#R&PfπJMgET6^g]?p &v0 J Ih^3h, < c>UŇԝo.RϜ1+}~;4WkU+8 Ex/ _239.{4y"o0!缊 Ԯs`g)o;-ſWL5@zl)S^B WALYԝB9eWR)ġ2v?D%ɪ$B&Z\YI:ψHa%[фw~ xvD9xnBE[9s?8S;o,K]OU8_G@S)xΩe$+M$Ko1t23^ "T1˓͝ TŽ3<5-b'tKȪB&sဃߛ PL;~*s,[a _} -I]u$` (B= 0>E6m"m - F[`lwz[?A jIΛXXaa2XΓT(o䦢۩:|  HZr;V?xꥁ 'Rh;!.+$W `<>P p(k=5_M u[hqjh|t%_+z_>MZhXܺ<h" rujs'\0)¤:I!&C%5,1ɿLG4{sdܶ7b)p%6Uad{g$>_C)qc\Eo|2p@)34AȅqS0m W `*%Zs K{$*#ӷȾnEIq~p;)-F5"Ȓ*\@?ČY~υ/&!P%5ąF"Wdv.*qlsAkSē}GJAL P'1S?/m?o?YOSK(d -m.JxϻO:Pf~h(rܫ ]ޮ1DZ|I+~i[?ӵQb -g|j?~+33Hf9  -j+P_4ib_ԛ_=0viՍq ]HɎ?[s !wru8Ӯ/ܚZۈkYI vRo,pbα3{ln  ]ċOe`bmoϼTWqPB '.1(itv2_b'6FMxѭ2ȖHHcs8/ LX/Feqxd%~y=Y4ޮYGTʿ{j{_uUX%E27^ܱA'_f T0>3ԋt, eu##Kx&b3Kj|HTI,S8Q!=jlJ@ :Ѱy;5`X=&&K&({wgQ4.bpx}{y%u- -Nm"shv/ڋ\u}S٢QB~ {[YV"lU#|\1v)&R*Q*W-@}c^~~9Mn=Qǡ aO 2zYH瘔],MJwوƤbk2g[2N`JB{$-_ڲ-hccRKTߖnռM lkLdͣ@T%ɄĄ+iR ]|{1@iiG^C'd𹷦<gy7|~=N"I}QVz@ r(^O F-ζ%&`MGF%lg&DPlTjapg7c*;,ou/QЉ=VDhUIF%O0'^)٠DbYx0ܦQ5@@ 9%6P -!OzKI-\gztrx ͟t'/iƊڌ=n#J. R80z+Zch qȽb]_^,)p`]Ųʶ dH&&l+n:l>`xi%S.IJMփdqNm/Ks|RÔr*7XNVV"n_\ 8Եzئ=b?\t -m65NS/#FQŨ.n_dG՟>ie8뢾 Nb%V{[P/בkr۽J6=9=R=X..\y>7o>My[=Ld.QzƧsD~52WMv:đJ0\QΜj%"(Q2]a{#9\im^/ui jHv|V4=lhbikp\'㎵񘪌6/eCFN4k~4,' I! !fp2|c'=y$`u">|*ZFB%V])܂b琺Ch((PCJJa _kn s) 1Bc >tuK -b;A(9DVE% uO\:B3TTwQW6xM5".S`%i2`[d%cX·櫨r"ıF,KT <ʑDlBha{E?K:a4K# d$̏#AzP 2N-{Q)ӌD\Ҧ g:.u/1L -;q9 SHY%9SP4T^x2$KSknrCaw,3țV[qب -b$?`ĔPf ?άw z3׋J'\ғSr]kS 8>v`~j*% -%ԡ<%X)s'GAP40lN^b@3Fj6l7l8-״V+lvu26bL輙@+S]%3삉`t͇iޖ>nd#x/&dž%^;QRv(!`.óoUfROl5eb\Jz ATEcCƼOXҪM7IHtLtIQ%&Q=1 U6=ﮭbMڔ|ZuIUVa:PDKu -nYcgjylŧKh[׷g:)F SNTz׷JJuIdw}m/s:Q_ۭIe달i/7p}V:ח?1[H ^P &K}{h Z{iK|i~n?zf`2k\xtJp}qJ1 WJp׋V8@f~(1LΎ=JaXvyg#/]W%Q"u#D.5BbQX:%0~u! 2,F3|hY3 ~\4>$chcS|ԈtY7grut@Nx%Y$a@iG]>gwFYGQ<@4M7BEl5*ᇿM -8,i LJX*z,CDew/mX]R]-Yo^*Q@i4D?y.FaAns_zF|rC:J,&Y¬"g.pn% p#TLh;E,zyYYܥDd' N -$^1=Ilα҈,Y]TXE8I4v_|G "Ȝ܋+C1L%0L>}G-/Hnn:mw&\ -~t()MOGrb>y=Y`uqDvkoBrǛSq1_j]m16SdDWЎ޴O>@ٹ0o?V` ,jlVym<jF<$8,i;b|g9'4Cr:Ar0>SѤ״lÍɈE_N `,SpfXY I=2E7{0!4y1+:3/,wݨ}R?'!a$e7B0 -!@m -;3ƞ!2Qӌ\PymS\ց?#֓{nzsHJmBA-EBXx.56+^'*&Ӽ1%k_{jiN)W j{+5~~Ns!@΃ 2= DCQ,LZ["[렣J&̫Xqzj98ӗ; VOʚ9IXQ5YМ)ƛQT<K蚇 IZWi9'.Cڭzzǥ0RMZ\Lfj00ng_nvZXOW |C7UQ1?q?꩹chusuO$bOc_nIgrt=})%5aw r *@h aI@$&@$8(H(@CR)mEL*o*5ݑ; DNOtwq/.@ -K\.ܹ!IZ͘$b oY{d`zhG87Jбk"o6, ~w`%kM۹8w G!8G<؃%-hFTjR9) [ -m&\urK hD.x :XB1=x3 Wc20\%cNR"Ѭ##sIjrW;|t/"-/r zObjHu_O1:kc^>?ULQ3ūt^{mr_mZu^ _Wxm5FElw$ $I =H)CQ!eg! af""z7 B6,~:?Migt TdC[̗sbC/W)x&C= #ꀳmm%Vҭ6H !q-,wA-[F=ru zBoΈĀ9mN$G2*͋KxL`eogvR麏-F$+b*e>stream +/XMLNodexmlnode-nodevalu1 /Inttyp/(o2;attribute(fnamArrachildre; ,100%hyywwAI__2id)idxx1(0.052baseFrequencnoStitchsTiles2numOctavturbresulturbulencefeTinoperatorinSourceGraphiceComposit/Def ;44fractalNois14-24BevelShadowxxstdDeviblurGaussianBddxoffsetyyO10specularExponen(Consta5urfacelighting-color:whtylspecOuSL--2zz5xxePointLarithmetkk4k33litPai2211MergNod4-11CoolBreez-5dila1.radiu(aineMorphologbbnb-d05bnnAyChannelSelecRxx3s2bDisplacementMap1bmatri3lorM(breadditlineacalcMnonaccumuNfrom5dffilltotoalwayrestar0beganim-82c8cccc1ccccccnnAI_D_66Eroder66_e_50 5RAI_PixelPlayspliindefinrepeatD11 1;20 15;200 200; 15 20;1 1 remo12ckkk2;20 20;diffuseyellownneD5;green;blue;indigo;violet;red;oran6elev18azimu15rel022110AI_2redyy13-1yy2xx688AI_Sta0.0.nn00xxt55-5Woodgraxxonnfloodblack; opacity:FloosCnn130#,"$)dH h. HQիyB0 @ @`ANִ>rZjK_c&N(,g`Rtƚ&ffV; 5G<քرښЋJ`V8Be=b4㞻°RFNp%Xh`"8kcj!9q9"ڴOlC@Vc6M_TtoӜP {%=FDRqzۺ9.=s)ӉZ̙hAohWSQ + ItaLǞt;ـ3N"g5'nLw2iuwnk8!.@=jmW(@B4J(m/Cy T0}6ĠFO#0|֒ؾӗ@ |h4=!0XG0VcTje8G?O 8I<.tFs۽2+,Yyn9Y9|1d k:وgD΁pl[=sKrSƦXm$+G;" PɂDTm mP9/=FeDmbNjWHU[) ]zRׅCDyltvp"NIZmԑ:ehQWV4vZGp^3w҄M|''a+Ifn _ +' aʰjv;nƝMd"&m72b9V+~yV<{yܖ ]P?:Ξ@޼G*&,z} 2O(hx#Q~5ŧBI +Qi :*Hnj7m?kw,"wGl[E䰚*W$Nn֐&XƧ9L҂re>T rԦ7]CC>F{3-{OB]kT[]䎒,DϮ\E"޲|l:t'63L;u _]E;vK<3Y \^4=*9zgnO{ -4B)oEBIKMj^'KKtluM+ޥ.Cqc#Hg5:BÅ_R&2Ÿ"ݧqp18:aőWΛ`vZcfxAn6{Z]|65]Fa3` c〭,ji=.OTeeud`n Z!>^ֈOIg7|vNŖt9j,F޻dJ "Mͫr:)r M;Rd^01ew>/:E봃XWPQ,5٥= 4|E(8gDd&hrUDZԄd(hnZ9jث%F;zlڝinlِ`\of#{NkMӿpɝnqۆ I\D]br-HuD`U2 `eGZiEsČZzgS"ϧ3xEYF}v'u:LLķbm 2 }Rl21]Ithq@`BwIIvџf8'٘7 ׆Id!~P=_TDs=q,ښ_IR35a=O{A2#J+kYLQRR`Tv4yS( +L:~̯ l4X=FuӒGFvC-0n1SD)4n;δo +9iCmuuó&d) \|H`QT5u#$0 J%؂D=+8*eq}P6>?-ZQA_9PALޛ! tK[ h~Qɛ;z&FhS:X …CH2Ρ.u@#(ݜ֞u622|C0E:\FDDDDDDDDDD +WFAء41n j}~T)R +>05 0 +T cqokM+m\3ӽy; +u;}m +#c)quqS"~9rn꿵߿Wksvݖn~gi-oŖʹ睭m8.ּ[Mwj_nq6e֚){47ίoh@^M\9~ZOH@7sٻniLtiorZ7wuۯ_cיb˔mK7MWo[_ۿgjv^}_b;mp>oRn3ڟM? y|[k5jm<_Z_S<[ik8gͽSmk}y? -\R;o;S{vNIZݿn-vu=v'ToM{O\1~ʷ͝ڟok;s_;i=o~[o3iN.ȋӞ;w5ޕm_Z'SOS9s6鶘ӗ?nMy(4ogntOuLmL_kWܦw宾|ykO{7mv۶Fޛ|j[}NmڻMoOoZlbns?9inWkg3ߦޫ<^-~qn+δmS~^&KLRxprM-cNmϼq>@K66f'߶m'鞜oo7SϾm]ݷywkv$ ®T8Kwmkms6gv߻9ۼ>4o8u:I^8pINI8= yȝzkPU +cUEmx{xMB[ݼB-Onm{(ngƴqu{q\6;{N{-pXgNݖm){@:}@JYK3cZ[-s-Ky_s:4oHg\57~)~Ӿa;[x÷n)ί\9vW+4pRyFD)m('vNI9i'E/QORqz[l=m9[W2whP@ 4h:swwvxlg;I;i@Y̘]1tN= L+g Ց+Go@(.a$ +@H{mg̱{Zܭ1޻-3כn]{n4oSW߻X=y;7=W^^7Ys7:ۊ号){[o|Sn1Vs)7s뱥uf-[Zu363j}ﵟ5__wv8qʟ9)ξ5y[m^wn= |Sq}@Prܜhsz*B*O5)0SQN:*;cuLƽ2?l3kLQGϽSoۼhֿLߛ}ߛߛޜ޶Z[1mu6wjo7gεg۬tmvb[9֯6]߻MMmSoo9oSo/to~{ͬ6 MަzۜV1omu_kw@yeNM= {um\iY۟i6vjMkt䥭U]g;2F/V=+YmVM~g6:@upf}@VoN3/vU1zni}@XY6+pxY۶=޺N{wYڹ3znN[ڧލw^o> Y?  B,c7X~-\wk-奄XQ]XOZD90I;i<:멞y=k2 OI;i'vNI;i'vNI;i'vuνfW9TO+Νs> vq_m g/vkIgn1z;}_ySz5vymn6uboұ7gSoo@|ӼͷmMvv\+vil7iݰ&yugsk}׺W~8M(^m4U6|MSa 4ၨ+2ƈ2ު;1@%vH<@7(ud7ϸ4` $ڸ*?yT<b3"B v9`7 X; uSZy<ů <3}(~,o<S+ <kNIn<a鍰o%%z}ȱ+6.R>_v-oqzFjm`b{~z>*ϩと.{u`9#2DO-2̃;~Jp`bD)L'*9k_Ml>QAPi,1T`eT/k1ѕCߜ5jvrWvH~fmodu02rv&bՕ3K^`SR؉.|=X](W`E +"+;^iK2`)>+Tᇢ|<}c7 rpBNՕUI'aNZWmB8)p&|s}vk~w6s=W gvo+s:7뷛n(2 gZmb3Y뵽o}s˿w3UNhjiʱwޫW[]}u5ێ~wθb~uϿ3Vֿoެs^>;/zm~{@P_13[myoyy g ͽ5ݹƚ3+]?߮id8SLhXkn9߬5Uc9s7pfeJmq*LZ[yu8w]o M+[m]+|wmoVg5r}㪵V[nmUXg}׻7r~^۱o55۷:&4yޘWZ?yW[\oju3gBr{k>ẔzW3f|3pfո\mz5ꚷ|/yk++mqڿ7>u7^m}}y;+}rQ=@#QT/3+e[>q3+R~b_Ky>9Bfi6o1$¨H7 / +N9v%|@<d`Fh=8GvW+M # 213V \0b + f(6`;(Hg'Sg=1Rg3uZRSف3:qX96LwVR< :+W&ƋB1beiT6NL]31-e&-a3ק< ۬`TaL;1sVFO5豺9 d*> CS)ϧ`>̳iQdx(%1xHbja(KSGM8ЎXR## q48c5p^p!pZfEذ,Twݍ+C#\/BQL +wo0!Fw1su %FJ4 ζ%L`L= {$48h2Pfl]4732 L9d*Mce6:*CZ%%@Q򀀁Buex"Hl8O&3< PB , o#>61RgU I:B48t8laSFߠT.GvYĮhm*}kQ'CO&mp@zaN]pȕrZʑMsYdrp9PP# <l= Dq\q8t%6rnTSn!ZPa-4: k!X:4;QZ_<%~T;ѷ*c*QDڻQX}@U +kJJ%Cu9$"l((u`2 + !sKFc!dcP2D0` p2@dZ +DM4]p, +`Ŷum# +bM\ Efl{hmsE…z]>w#u L.\.  Gr\dCDJ #FF:X1eU7<Tdrd*I, .2>WF +4<Ѣ'](pᅄO.\LhãdvT$!BU2qBa\T!= +%5*ە<A%))r@ +cPQReb +#(eD8}(%P tה,!hH$8BFQ$h0J*ID͘o#( EeM('\d5_&ЃI2ѤaB&B| +/L"O` <\ܩ+i?52b)m*zh4Ӫr4AlJk19TL42J@p F A7P` (@@ d +h`܅t2Xf^Yh8eչ HfBJZP=  C2<ؕ:I3$dpDHFIqQpP5-HH `ABv/.Ipm$"i%d`4E$Zh` 鰐"Vt,*rLH`Dj(%"#)BZ"(C  ՉtX +@ "a0yFQlh KDEL$IdāI"NE:(RYĬ-ԉ++;q*U2*䈍 |ȶDF= I@Y#6ITT D۠2%!;imb[C&DL[:Jl`|䢓y + 8CHH M)&L{@T $  )l<4$1 Lr%b7(%76CUd E3ƖMhL\2NуL4}*@BՀ LL e" 2&leYmY +`7 +]rdYeP,+YGC%dT"Ye%CBuOa +Oq,"+dW$Yшߠ: +mMhe?K+6"w1m"YV@FwY^7wEbFi\PhH%\Rt0ƖU`|vy㵵TNp1m =K( \>JPxn,dDAkצ5Qi@ϢC2pq64'TP!N>c`Q(%g@:`\`zlAHYD>We Y62 dY9Y,#E$YvD% +(PX4e+bЬAkq6)P'6ŀǎc[dcqc m`0@}2($[4#bS0[]y@`Z.Xu@#rQ-=˲ҡl}~˲ '|,.Y]dY+Ȳ첡!T,[q!eYe>M % Bp/AdYVȘPYeISx$˲-27Ye@e/zleY҇\{@" ,dge +q  #Kdb2IF+'3j/0Xd'C>Yi*1y2: fL_jEִ/ ;XmF5el0^J06t&Ѧ$?nBQ$ +VN :/"4~- +XJ4&L)%re(BRX O2>Xp)P1tI~+qzdl] Ef+#gan1q7XN3&0X+?7Cq1q$%&yno5no@Gk 0IVGHAyЍ!"7(J}%yة®4:?kFoH QX++ Џ݈A`a5v +?p`,x1+CO%RbG PZXK + zƐ)1GPpQ7/qbiUS/ڰ/J/ Jh4o>Ùxǩnnz+=J|`- ,I:Jv(F` +ֽEQ"G Y(JX#lᅴVT~(q=7Ay,F˯D\Q՘J~SYZEUc*FXހ*FeҫX\yHW+HJx>D1}eb$GS1e( uXSFVKs# ZWR^;0^~RK F5U^<0kjLb$-a0:`LSu-0 +#a-JUcQbaGQ5+Eu&'ARHHa^X^HIX($, %aS\"0XQDv +HS%r`0_EMdFGh3-iJ/Ɏ7(? +endstream endobj 115 0 obj <>stream +=LVR_j&&,!!!1m +c]WEHj8HDTXBS膦Ph +i,_)l,N=u^=u^NW2URٚD , 0$n``k<$Xjp^B (\W^0w>CI8`oG{@F E!PB"*= >Up,yBMBeւ8Z`iOX6 +~:U bQf q @%%4Jd,( C c[E:-3D.򹀺PtpN YY.$UFH3%Rυ],&Ϋ = G$X>/qKI@LB7Df|= 'X(́8, t/VtDHB99(b"z*5|D<H> Y& $pQD|M cR`ˆc(MP4@ +vA (Lb!k,Wȭ!bJD6_Ae>d.d|qvU`j>5lYǥd%*,Bud&KFdPP2|._aYA{@F JCBڄ4Ԏ+0l@`0\(ܔ2#1yNe &< \(,lC:0TiF4pX|EYË)CÛPxAKP#џ >U{ Q;eőQ7Fʑ%ja(*&*d2pAwk@;2/(#J/2Ʉ^.p B"FT\&*p5#S>$O-YoXƊ5 a/&1 + l*-Elq!pDu}2" "ql1LTua"Ѵ\8ū4t EEк|( );U-p`sp[S!Do`("+mtB4*T|4:(ҥvnl4BenYX$8ʊK}6EISA3p}ltUcpFEtF@ap6:<ј- qPpREH6kԉو#>QDq!A$zIT Pc)x0#4'JPfRD* 61J0@= ( A>fENbXq$9>  T72bGԁE{@**x"֐T8Bah aqZX{@0>D1aL%2FJr@qCIXbHQ{@HNßE؈Ɏw@tDVpxB1vظHHu9YQ1ļB +1a }iΒ`X:J,4ȱD(0MM V{@Zwa1C( +c S]bBudr@]NL)KѺd0UV ],c 2Зf"i}ZЌ6v2, =+h(F{@@ņ BS ^ φ WSV2U:]%㫍Jf)K7e"KDZRQ XJf"V^^혨,22~nrHch)kX&X %V{@*L,u\KVvIܥ P ꄡå%:2CUQYmjXdDZ?T:Ye+re>Ha0E +AyalHMH'xj9.RтeI>+.{Q!|jE +CR-a!J,Ql l%C8lp0hc1(23ebT;[]2A̒F%k}K8T2ƒA`,p+YKCd, @at\ + ݌2"9`H&0P 7ɽFCƢ7Ƣb AK rXDU5dc1QUS1R"E RiK`ћcǙ.`+ xe(vv0ExB2`&;Ty/GTMFo)Q<' +q"*DY;!!hP-.0%1S1 >!A z^WE}qLTऻ2"e0qR%͡= C]H<| lM0Ap[HX]{YWaZ*(HT]At@# Sre^bkAhU'jSOR2Q:`D&TR P:SIA@G1aD]p}وpeҪHSD=IOc% #iHt56!fp ALhF00|Z#Ke*Bu. +_pKhp .EJ"c6,Uq@*82tG)"@!bm(8 +d51ҴFQA$@ #!HHV%+D1(E $D F$UH&&dx "' 6M% -(A!JTa$JeKO\l@#J` $7-ֶ8d$"FΧMd_q\L =e8Sh5΃hi /H7bhE,O`c19DԅRو4  ,x-h>X,tz]+(eP4CA"K +$@9IJc ER$0( ʤRE:eiZ0L>2"H$) (d!B6fS= 'mlC)KB pR09rDc ԡc&pkYҖ^|zJG N/:st%eZآs=ђB&p4j!򚠧\zy%6F -`\i蘁mvQa 1H΀+_#Xkz]e_ (X&D-)m騶TnjL<AB..\ +vsbeB0GNhϓԅAF7IbDnM Hp–qcH7"RypθŽvșB'ܸꊞe6Mqz cK?Nmc쓏R,Ah&!f \b+eB?j͗=?DAz,m >i{^ +FlLC\0e$$s 7z`ZwY:[6&Ãڄ +3lʂ=h{7Fh_1 m^(0(\";[<%c%TWo BgeN3U{Y ,k:F(Jt,Fd %ÏP|xXmtÎȼ=3@[lV ̨Kf:@fWi,xQiDItm.CS5Uߚj.uZ g_24jl>#NE[V2\(ljғPcuфYT6VV)P{[礼hzs/U,fsGsOYyJlt4Vb>vv TQr|6%)Dq}z=MctY`'*t55?DuC5^4lƚe1H6Xqoe04pKo +1i4k-^qL`Qp\KZUN 4<f@qy_e(KGҽ'ҘvM| /'JrT 0ZwZ1|J@d%#Lv.ˠ5":]˯_CIv0@P?# .z ,dEه +EjKՠHOo3 +VZ#@%*qT{ג@K#h0 +wffcp<ReՔMrGݭF}+]ѢDĩ 5ȭo3S7}s(+#׻}a$cOk _kϹSTh[NC%1hXsGtjV9enKNJK>6se ؖ7 !$B]z^B!mU=I QT--%ŢK&H%fpv]&9 L.KCM6^}TA|J_qNoT +;_$4,G`"?Iq~+l0: jũpo::=xx*p (_1-N6jw4!jhr\ +c p ^3Jx^+L8I}V+BK9,ȩ# +@I辂E~6׾M"3AXUS3MӾ'ec;@/x6K4N(^K Sd&Q6D8T(ǟ})' ؐD;UE`zbC +YƜY'A(0Rxu+Nj3nf ѹvXLT +5˳Uc6"<do{i69kr;Xt ]0nD` W z!Zip8W| `t A^!~8ߜbc;zs@/6TIOBːޡ=ق8WZ1!X$4jkڏ@E KȾ%*f6aea.$>S}_2x(q٬Jƞ% za@tM"Y1$)LT0vA!cPvEt).rR[cm$w SnQ0 nxa2Q8 UzkOe/IZ4ўg?c~ҚǺğ&nEVIX^/ꪶRƗGex&_)AV7h Ox2yʷo4sB2 Y]oQqC3sQ"Uphy(Z2:wIFW>'z0i&Qom-ƽ-;Of9S?l7 IwaC^QlBh&rAŊ].Wju$jAƹO^U1}$f0p +s02i/DpDMüNG +<tn6E5(kZx(V<sdWLG{fumL$VRL'L5 ̕FI# Qq;y= +{!iTP/h'VH'x6PW 0nzGVVĶ U D4Mp>&嚯|܂m$ cBr'+Hh|A9alx=?&6d{v(͢ـéD2YK7ff~49Z/E#Jr,S;YIBӷ5.ThY(tEF-Uu`Ҫ(L̇Rx0ų+^Fי#Q{f7v@yf{m&dw(*.ĶZTaKi1#B&0NG,2ȢlDϥJLof ny5^&-ڱ,kp8@?TKd%.z*H'goI4Yx Y]yGz],2}1ubilA@L4&6 UF~QkR0(#Člɿ {(偤z6r>DGO1^ ƛ_L}%n +m \F + .ETDr{ua `@ /)$w[r>9|9k@ +܏]AE5}wy>c="UG5,h^52ɲ|$$wZ>Nݥ8AW&5 6&b8SHk#tGy_&Jt[T:L/W @q{뇊i-,*|d%z^h=ѠK(CT.x#qla*HKN@ + -J3-O*VOV`n.MfxC͛#hW.F.} +/p|\)v"IGx)QZfb*VkZ4G簬ȩ@BR>~hҷc$%n\+k{>[4M[ǂ8 p7`epgFI 5 WyݘHѕ'j^ )B"l Pm \1/٘P3nMf䖢R'Æh9;=*t>Y* 1YR,%-'8V=^3! }k @K+6%`?wvXMBQo0aI[1" G/)A7C_|&037R+O{_^fH(#ps 1 +Bqpr+U zWf2@ ^^;WZ4Z9&?i5ʂi0JĦbR\CqN)&(qrnr,@x>L +WA'770u4 C?ەlSK\Ŕ)9|,8%)ↁ~S&ݒ_M'Tp!1Cc N<1z8!ޕԈܤ]*@Љɮbb}]zйMUI5f;[RWsO]vY/3[ /z 0;7@ o2f6p ŨDOy[t'F)ҝQxձz)cvp +xRQ6RX@zw,ߎg㏡ɬyGs@7ְ-1*ؖ@q be/ 9NJegZ$9sB$D̵XAXJ0Y}l[YV +v13ET,$v6a$$@t?7Ev6-|ԱDq.W5_l˪TC`YRy7GM@Np/C|c6\!Hvgtd}eme3)FDڗZ👣 )0Ƃ4@P(=>Q30贐EJ#Hp pZ3dX bȠ2 # <5ؤ[~J~؊"7ȇD'@!6K)L uU:QwaN"W~k̪6ѫȱ.7or,e&Q]*$z^zzí}ɢ9cD'$"F +ӍׂX7w@cb6a|$3f&jVF]2]#-&@јZ[4s0XsStAhJY.D"R +{Y;{c˽ۋπ4_|E^BXUu#=BJ+ }&!6Gqa'[H}A 8!Qu%#BR.Ln:kD u'JP3[hiy-|Eل~02D$&FCwĊ]tM@ yJGl~м%'Y'Df: 1s, 9Du)۰ԄDqjkB f#Ï$.eп`E4Qj2K[kC +O@FTP1!T'JJc9$.y)1@4x#e}`>澈FSI2= +eR!f<ǷX&4pTz LVK/)n=-Wm.zcݰCyHcRmO@.eG!YWjx ccL4EI9AIw‚?z5`NGmcս8N`P._ˣ#Vht#"&a6NUJܽYiv%xPD& שxV$H=d2YВ${PAK>3PG@NHZv@ QNPB,Gҥpa1sIE1o΍McL- kOi=tz׌2=M7˲%Mօt$\\^|0V9 A"D1bwSI*Ds\<(8vۤ9i3фo9a0Pth2ԩVwSނ@sU{@rx*w46~Fv$f:<`Ol-0S~2"r#~K0U#bgbLũO +y)c&%jP/IfqHy s"j I2_qgÎr#W&Xc5I@e33|z隖jĢХ!0G'b߱.|H_9*B] {cC GY좱OOѶU~r +J -̬[!zH>x٤UDcQ㨊qL2"2"7 +L+?=,$ U7D5y;dU~@>!YG/qkdV|ÅKVĂ]F +u'vm-"˰}(*Q_&DMj:=h*9H,#5h%uU~&ڴk~+x>%HS #%7+.'VjtK3/|[.1w@k RɮT `~*~Ma8A\ wvU30kX:x461?!6=MA哉|Gǔ!&S,u d1- +vM5!#Y#0з0`N~GB'bCFwf Yº4"gvEHR gT@$|kd#.պ#8V(.1Ϳ< +?wxӸ_9*EB>GyiPXuh>}Yx{u'͠jzչkkwܴC1"}5?Yn1Z&4|K\ܪu];E_UԄU?aICoxwieQB.A mNHގ쿗b j5쒲~cS9&jw~g1ėIV:q0tuR흾A]yBڋByUE1KI x;~."`"`]g +llCD'Hþrg WGKt%B|L0] Q#އ}*n&$D +M'e)h0sKk[ +dsbi<;1+''yVao("Usb26yFL7M-e xB27ъ5Vpbr9@Z@ĜȅVag%E 0Z >(z 7|߰`| U& pצ vRHw}‚LQSK_c< "wX=j|,cpN# +Aޫ +M)%JSvΰs/e+)!l擉G ݝ ieS͹uۺwT&yE(%!ɦuG(Z]Ki[ +->bXGi-U㋗k5Ic]ȓ "tLi/~eoA1}A an5@18;BUtn7@lJ a/q#09.eg:F'B6A}| ~4FDZP`pĹT@VCaڀ%uLJ0|T֥O$DU,!uvk$V^##P8=VrOy`=7tf׾H%ʅ8}ڣe_P33xdt`aMrFv$u:xؾחu8FgG8S~p#01zgd.|n&[R+?;3L%jOt.UƛippĀdkqBފ._JR<ӸZ|amQlBL[s ʦW荶`BSS" ^d h霎rNʒ`&bfBClZa| +m@~pwx~S +ԶJQ@bi0'\i-Z)$X!/$I/V<.oH%=UՍKӴ#;v''нt7ʳ=)H9ťCb:6 GávsI;6܁&zЛ6 +Z"7z=7jmY8/D!_ LZVE.-_DYH#1Ȏ 7IX::oGƴEKBaC. 'C0ƺ?ŔҌ-w~Tm1xZGG et!yj Oݓ4EJx% uf՝F82"[i&Oj1#£! P#>ϰLO-9< +m.1϶a՟v^}<H؞r#sۂoxDt)I^<ޅE#. 61r aR_lȝ޺rm"|>\L1I]PsBGTB *{R`xt*z͆) Mg*2.+9yh>dM]>k OA-#~_D}mm|< +PPAb9܋lI4Ό\*oJPlI9ޡG&/ ۈ9N/BMCU6D0H4D6@d`M0Koa R1-(Gi`L r+dC!z|ѡw"kGرQSXhFh(\P'cqWE`ݕ0?Yᅉ14_qU!sK_lgCPktEH0R^ZD-Mr +_ 2j Gm`h `H1dŔӏ-q 6Zl>'Dl$|tx.v_.\ޘҨ 00RMWb2 7 #I[y!富 O- aLNS[w-IA`VΠgP3Or_⑸FAn*F Hbn᭾ܔ )sy5&A{t%$o&~DdGDu5 WB+RPL~!cSm"GYcfc}⦰U(%dLQCK }֍:(7\"k *oU@u4Kvا+L&( wkr/[3^olI\@ ާ?q}G%Cy=  eѴO)T0B+" $8R(+"7}7n5$9Q}|U gݥ[3xx,cgzBNJ\ -K[l̽)z=w8@0(`V!dvk?AiWN L EjH}5>h]\{ GSngm Vz+1XQgZ8 | 7CqI5dYM"$!% ~6C6* oyH^Aƫ& I]dֵ c;0JԶoNQ:c?DhrHX4{?ZT?%Z7Q#}Y 4ĨZ⢿tBnHs\E/ =CQƦݷ'g!h@\2+gp^ sAVeLF+ MHC3MiQ!f'9C86Rϔ$/k޹~ $ +Q׬| ɗM\ؠTVYxD*&H $065c^D3#h黦J}mpCR8-=h4'Z/XhوizKOQ:2uS ߵ.;8fPr=s˄K`X1>E8cR^^0Dd0|4M$ijoWq|A>lx<A ܩ }kz}?yYI?`+*Y1Ur1r &wY:l5j)&̢HZǮh/$%݋`,yVE єZ#Fku"' +p^z= +r6n0DYA +{Ӡ`]h-+iI/ip`SbAg]ח2|˜ިeCKU Z0v!PTPXADL=Aư :g#~3A/赱N.!1 +BsU..ɧxkjՑ5aXj[_e_8:I +hT3zmTmE(¨@M0FXE.i pD.4xJŠwG_4HI-y^ttiS[Kxch A,"3R%2jaE9 ]#x| bәҩ&Ю헓W +3ChtXH +y<"zihQ&]Xfx>)oL ÔqN$$'??04dpzv׌wP O.޹2e^{pBBLlt,2iPn|rI Kb B zנ,>/*k6O&2 wze32>G_JY Xh%̐55Rzkd/$YTTř@YV[1^&FRYF)션0  +a],QQ7ot0KYjBU?E][{A{oqj?Kbrܿ6_i!nJ +Hy +P/oO :S!::Dkl5b J,- is#DKr+70Xp͡-q.$<F(o6/?7x0篍0%e5%fڵ7!&*ͼ S:Bӑ FʾK8WļOa)2ePx$A,qւȨkCȘeBE Q /Xq^Ѐ( w* snp+.;0VUq!+N.-dx [d$ ]-ED[Ѡb" Q$/K2 5Ҝa]zӣ<$G)Jwc8:GX19p( 48coe wBv^~EWk;Δ^F=9a$;MJcȎ[I&U]xWNO4LҾOg@2bJt*%B톆movJَ;j䎳HEibhx8MYRC`h ZqH @GeS ]"YIqζ3+r{؄R q$j$z4,\^A[/wn +C8WK!RE ?!~X$&_ICϴgtu<]r!Kdhd{QZiw!j}z!:+_rpSĴ{qѣe3μ)>:Lx7'4C( ECyfNJa s@b;\`D\LHyJF ՕeD2XmP^c9tf28,!Bl'X&yXP\Ip?PR<\eՈVx3]k⫕_*njFs偞CKmiPdSO7h"N0=#D"!`IFu +[ELHQme/L^PRZ3slD8 f֑|h#Q @ǣ7*Wg{+x[ 9`ir+/3ڌ[Q9qOQmCAiZMht1P@|(Ua"N0qMR 0f* L ``Q%_Y"@>idl341у5OՎ0C*іڴLEN0Q߀mFۀF)6&}q3}D +JKyꤝs hӱfby@I෡@mX۔ h2?bntq; Nba '.yiݏN+>.υwm,!bBmJSFY'&@΋kr:1N0lx~:*&u2*TDk?x'>@O(U_ځ~(r޵3eҌ|r9'p8 h`0::`ל`pLqۇ.f +6"6!9ظmN0p.+Mn +;5¸( p5T'폎ڠh ZN7qb) =ZDda%B4$:'ph#kZU(:z /M'o6dvqCOn``OZU`q3h`V! \čr8(5n7E! n7ɭc֑e#9jc@s˥\M킘D>ì0Zy R'jHI9Shf>iU} B1 1D]5$Z r\k+B-t`ݟ†$im)khk ++$VrZ{<:uogS|itr؉[xp@x?H[D ,p(wY% +&tVuepl̄@9?,FJzcF'&~ +]sdE'&Dh b뿈GqM;kkܸɥqhafj@?y*UI얡DAS łnQm{g:NL v\D#vs|gY,v 267vGg<ꭊ^">+ )Z2Fk VͭYhrͮ|Zb(f($8$z=C.*:z! p,-82߃6chK,J˜BC,7)&S +k`3ru6908FO rb9R<זr9}tOCx\ނ& +JX?=#gyR`L +d:e71,f2*f`5jH?]X&7klLmt+e0 +!z@! n $D" ^^}Cmq0 8I}S0tdJ4UћذAd@Lћy&&#Y&cQ* +n9vn789DJڷqd!f~7t ӯԋ dhGU (=H6XPI``{C %aQZ +Rl a7hqk`h$Fƴ j/aD˘Gln?4 8 @;nkw_@7v,N[(%LP E:@( KQmШ<-EKUTo!7/!#^F2˿ *#HK8IB`%Bn5=OT0vt*| ʪZJmuY\NH*yRJpI@ )4H`v1{!_=BiwFmwf.[STBj+]L)^H3vҸf]rWujC?J +Wm>P| )BBb3537iۃRF]3.lF!rM !f I +3u"Z)$.Ƀ\u w!LP1qÀ  :J C iF_?'.Eg +do흪cŤ?3y<?& \cBIJڱܐJ$p| <0jSj^ymlruf vDTpK` Dsz L5K㬡P9{a$v ?L9WuQYڢ&Ͳ-6!)s,P"&!ah.ĻpAs,R+5 + ɼj 8p&:w+`Q-AJKmLSw!ɢDz:*Iգ83̴#hI˪2Y2+q~ޕX=l-d ԕz1vR'A\sfrj Iɕ_CFtDIt %qTcS<η"0ڸ[35K55PѠ?kڄNv* T@j,rY\߭6wi ![IԖӜfi1 `~®ް v ua3S$4~Gz$|W  >35Rw,I6uҘIsQTr >dctՁx]h_:ƺlKoKÎXώJ:6PO +>IbIdPkJ1%WmO*Wm|kr b`ׄy`wbz\)~T@"Ѡ;/}=pzF9kEO|NÑ{F"WX!kڪ1Z6"1'a+G,dYVぷ#j3kԬ%v.R'u@J9k2G֤)S%…wj(ZnΤޤ! +'VY' +RS },asK2R7r14JBqZ1J<|/AZP$GrX|ϳh$ܥC3Q|!0j)La 31x{ܔښ{QuLݏ'(ROZG`bd" Y:NʁqDbe>cRˆ*Бr7#|7Aw,wQx Qf,hq]-EY.O_Fl1S.QʄeA zmR4`s⑌Ȃb@9`kj9.2%b.u+,~8@}()Ƚ 0:M4k{J~0'|.Oy8q]J7D 觙2/x3[HK|ؠgq5p:&w`j\@ф5N%m;?־Slpisg LY4K4LY R:I]r)-͈,(ڕg;!ogF ]۱b.> +n"[2EʂI׭Σq ՝aVmLyo Jd=G/D?'Y/Z!۠3rN0@ 8»J?FFO9 +UW5L+0Thf ۠EN|./x  :4.O5C- N`a"W$*R!Qt[۠GKp,Za^1',.at ߭w! /)z|< .'4n,WNpQ%Fa[RFҖi&j J DTz5fJ(ì8hYUEuOy*-MQLF*M&c%@~ ۨqNkj(|"xN''3D(]rQ4d|+?/ɌPyqDr[HVLqs>n)n3ЉHuLBj.7mR4bN\0;%QB\bF븹5RT@33Nu}~Er =&`X5GIm57qg[|LJ!rJiʤ70ȣ&}  ^75cuP4NL)lszg vN0`L (X4_m@4(,J`*pr*WC.F fP[Hٰ'):Rm $acj&Z@+^#hN(&Y3QQ/ތX*z?qMѓI(ў!R2 +)&C\CF7"kxs[9T%}@c[ ʦ\>˸@_]ʯxb9v}2'#\qAir cl]EKo]9L#edGy3 xt-vg?I[h(Aa>px#,?eb˰v'cQ@V8Ri)SHKypSL9kyю"i3xØr0zv9#73<#>I?=V_1ńfn~pQUEKx?~9quq}"L}^Gi4L9KRxT`Uԡ6"$ O"RoVU%ʂ +~D&.mB++֫c_:Efe4B>qVBꈞ9$*B~G4zpΰ 2YJ :bg(h;Hx/LU2c kYeAksc/'9t}|лYloY 1tƲ9&dXV/.wpKj/$ K*N\ L3Ev1XE ƄgXcn80}WH%*;ZO?o+6d{܀nrt'L$/Hl^XWN-[gH޳;kpj?b`și4hNJ(rߌѡde*(H`s_jǟon0xLۏʂVςl=!q,1JDDqFIӂ낍8ИfMaQIUSL) yDmx}@@R?I|)Bnϐ<5*Qj6山nL: z\%aA? -⅍c5p`e 8$9&]:SvQ^zeujGBj.{%{ Rs!;k&:&;^X4wQƝ{px o_?jD䚑rֱ2B)OtLF~xLx) 7@+2QLi{LT6D]Ąl'YfaPcpE>'8XFѳB#`<uN0](9i&MPq U28 Y;ؚڂCfz}&jnq(ᭀr?'߶u-NF>W1xkGYJK6K\{6`(':xqfȵ Pk\wTJmjtX"ɍĀy_i&Hj? 5n2Œ tš,'-*If`kF`k{B|j<'yof )W DҨyh6яD]](U@(K'@@IqP7?KíKꢩf}pC,_Y:o?XLq|U>Z"  +2&N74&÷KomӜ> Rrȝe,cY^= +É\ҘEb섻m,|XbPeN\MjrQsɼH.9oir2`An1_)wFOѝƀ:z]̺t;~5YqplG1H.E#`Ո;5T{w_F$\lVGPQ5D;#w~%C\z,@9 2h-|p>` +}6k4(*uFMr"{듽CKam/jk$7'd#juDs2"ny"D +9LhuPu5/4E卜qTeT[mY[a/B5"5Dq~A"j'4EZw99aKp7Sݸ@I&b5T:rJ\y^F%sb%Y(LC꒨h@0lt +'G?*[,w~@Dh#`4̂j +eg⮑5ZXz`_c6(v93D*/%a$c9831e255BJgh]~w׽c/M;Zk_Qsk,$*q 3N0($+g.?8r;D<կj^뭊¯+p o DQBf+X Do)@3Ķm5A(q@N0`qHPi46xq%89:O:B,o NGn[LM^i:{T_%OnN'q-;v9k,-*]ɣo-^N8>ߺ+,&,n1D[& 0kL:&33@c ++ԔڄYꅃ#|rn߻X.`ok Ik2ќ^"M8YB6L&RW=)p+Z)ڍTIJlwS@pAcc![P 9tQL%]ƌѝvYa)Φu#%ӬMل|ENl7UKj;P5h9m&ԧ0EN`/}';Cop*V[ip:/Ѿ`'t) *|Oqj70{ ޏ8kJrly>]L.`AY_2^#FW1w`U%<]\Q1Qm,w>~;M-=q,lU[/#F0@r0.&AvN-:De= zrQyt5`?+PN\ IvbgP:ڈ3DUC_@}!j6SYZOct, D߾W;.E6a H(&iT5i\N0YP +St"yy3-w5qkŜ;i:CGPQG!٠)sͬ8XR0 okHnVFdwjk;&i +Mj]1 %:VSHb>-|}y&~EO DWUX.E82g7WgB41O65I+1ٵ 3`FZ{6 [<:Nѝq  +{I/^%c/f(}58FjL޿CmU1zaSdða+;"wx]pl3k#l1E +K>kWGn</w4Z"e=72q>\a {v't8A`GA.o6uq8rkilw>]Јy\niv!_C}P/dSmĈ&& kK05.KN|)yP/kWGY믡ڈUg;DTJ\t %N"j_㙵fq\9n3Qg+ 0\('tb䍐.R_ߩ11v-rA`yc1} "ὮF&h=!/dF3pr6݉j:"+ބ І"r4VLɲ4nnzH`.(i6x2/̓%G)Ĝ5wC,4mb0vNR;vƌڀ:6y8mI.T,Ƨ&*vBszw})7:'˾xwpZ\סĉK\3ru /12dbGݪY5N\i,;BETJm^,:51qVݸg j GM`8m&iK-v]~ۿ<N0Hwk#yEЅ!BFdC&9sPy(Jb %P ^w=h70 7I) 'U,:Dr翋bny|Wi֒!=;V_G /OAYOq+F#W1-??A WKXuVӂ'5~D]x{%;E @gԒ/oR,Y3QoaX''앲9F񑯳(u) *֜` 5{ؼThNb`+Z%%P$w#3Ŀ66ǭh/ⴅ6L-vN4Ѓϟ;FEo`yA_fqH=q,&w~rI[hZڱ8,=^Q/B DL.Kvʏycڱ,Qq` ׃ [)ln08t6Se+֜`хKd!Z;@MVTǔRcFdfHdZmI4 PHT*,&(P C1@ (tѩ;L$2pˆx bzՏx"'OUQ\8X +'A3 c(W܏szv\PLi:綹}Ko״?Fb- +/\x5p[⅕R"\tV4j6+[s#]d4e-3 "x_̫А$S$4?IS&/Ĵ~%7  2Y0h䧘!ޞC䷜Z0IOx&.ϩ*bxT`⌍s{xumO +\ֆ)EVR嵩K9(m +BB^d?Aaa-XW^ 1לS^w{< ȁe٦~\Z=z]5EqL _Nû>QX]e}f&[(fe?1"--T>KRm%,6JT6[Zʯ3Sϗ`1+'@vcv`ٳm7.g# dM,Ba+CmC:VngBdރPLPcTف(JsEEj By׋vѦapvLQkQ6V'kb}*D_#ia!N$UՎT2}(=P,?i:&;nХ=U8]bs*}Ok)ATc=Qc{/9|)|d {K"O|B%2#;cLf%#MI+ aoDWNe׍/4HL.d1XK݃ɠ+D",dD'%wAl_wt[_sn fE:0>ΞN(MCrh +Ej. A +xM;Ueb>}>Ki?ga_\X"iS 8$l$= xupH0֧QI=)U局 YaN;=sqnNN}-/9 uy8sQ*`_1]뎢J3$x3x˂z\%:q{^rNvAiXi +^}iH#0T8XNp߅Ηg-Onp dQz=ט\ۈ*kQ)LGd J!e۾*|W+1J!KUy8X$ޜ`+~i9 +|g< + 3iFcjC~#3`=c6ƎES]İw{du?r~ӢPR3[ҬҼe ~G?;E^]zmzZ1l&)q-'9VY,22 Z](4 up7:@.[X&U|803ԝ0a.Y5Š'la1P/2 k?/^#8}?"Ʈ`/0s5b%7B7le.Y +?mP7>.g5f'BTP`ez蟳7(!:SC?Ê$099M' +;֚Re&Mq~/("o^pQ[y0JEƒCDE\:2b#Q0% +M#T:&+DteG*2uTK=8RXw' R&atQw%i \M7׃dѡ p]>XE3M4cg*&SG}("ub +FkbD s",|!ޒ?Gs0^!]LH&y̳ vqGչ4vr5_.yԼλpWSЫ.^߲\{Ss}NR{\5_o&Ϥ1z8K+=l_mMB ˞Gj>f; ))]lمԟ7ƭOF"o^XgiKpS}0 +SEMZVW_">S] r]2pB0l5Z+cQ a䱙H #NP$8xE'~  8)73MQvŞ$J~GE&x%a|9#F[|fMcc& !4:cnon/&Wty.J g`ySMx.QZr`]=6B#$gK`+JnuC].O]>}u5,?N2TI(dMJK]vvo;zy4SA!~V @6i~"|Ŕ"$C@YaeÇHf=E |2[ǵ\.`ɯRg7spJ]_%94ʶCF|H? V/C,iLG_ܱ4[zG؋&4w3MX]J#7cK'0)} DNqX9!'&))239@׸qjnb7<7?\'˝Ep-|RrL?z УO|ys>GO~Dz$9c:oTpd ƶΛ - ,E,ߙ,0{^Xr+CYޠ|pqCFU=eN*i0ins ؠzufz׬N5O!UOW +c+1\BܖzVzc31/t>{ z.@h!@QJ!@7E1ˠ(&J8_,O0:Yܳ=~WQ|]L #jre$x1~#㮯3Z:E ?`LN*:XR/OSıaA.} JR +2%m'T\r(_aud W"ϙs\\;z^i{x^Ơ\++`-%\NIFꁻJz1SL8QSZ0R9JU^ȰZKI +OUd6+<#?PRo\@B pu vnʍu};i*_qchqίA%qomP p32M "%#4g !N \I[=)濺E7@v>/=ClfFBhfNVYVeK/ZKL0wc0MGgh%t(r/V@-h'V?Ӛ Sl@F]n{ɍ4Lwt7 ,rcN>M.g{Bjbi&cIC\cAAm_rSYZՕ*`Z_ mRt*hk3 U2*=#$JR2o2WArqՖwnA-ܠ7V7UK|PoU9b|=)mS*0.:%&bu+u֙:ߔ]g<+U=-zRCDf4zݿt!q\ ΀$HwqmB&@. +#+9=td؋q:3H`vTLpl;8։;=2vFK+C+tYm1urnr?|Oa⴬%X¦oi.lD*eiwƍ"$.!P:]e|=B^|kr(\HB+5C +繴\,kZY;h +ZB\!3{T]r4]=Tk+Ma7is+v!ҵ0 }lBLfZWFi ?Bwq`ȥ8hJgrt\TIB ++)KWX2K`֓jc + &ݛ|>"]u8țUKed]䚀TL j}3l Yق fhX>X'&Xj 3n^FČ^Ѹi !6Z`V>R?׹?W>V??ԾCGeK +~л~TN=ZRx.DA%M&]ԤU|{$[~Ϯmc"WYSzu1Oԧ Xa*0ֳ %څo-fs1+B%_"tB&s>k+h9@_JU+'S1QײCuFk!Ҏq&_GDMZJ챲!JݐZd*gPciik]CvmȲa%p~6O|Yv]V JA7#,|~棒f|8_Z 7t +JKaC䆶 JCTK2+;[ s8 }^sēEi+eŌK(En:nd؜e#]44mj\>UbC=vd:[Q$l +4dR[·"j|8ٝV:jm׆:% +H9`r| L.l6`n6yv1AIC]D|ﰸ$HɇLLŮy~`O.|¨VuR@~0ؕ hH$mP>^g2Kfڥ p +,bto]aQTí=[XM+Mۍ!µP*]$mWg6yj's$ҖfD읲J'l/BOTґʍ (2I}FԔ'k+gf ARO:";D(<0cnvI0Mn) +;?uYhTZX A+N(#Sd! LQxLX*k.! %d1b6DfLRdž`ȡembv)c#[*$@[T X'b35&e6O4RZ^/ُ֤§S-);˕F {63W ɋp+E8 +4rL$'5$`ǃ0y3taD09?]3΅Ch8 Hi"΍OJA,O>XTApH77U " L'@o(0+|K( նRڡpϟlݵUbJ9C@0a{4m%1UioNwKwf!h ÅgVl MUk-RsetAe[z0X)^F"hJ{R,4] ZYl;tEUOk P +Eh)HFf#NJz`qX5y0KkjQr.c[vAG\NYOC[~y[,|zQ@ M{YND-čQEPEkJ~pW2 +3<~e07y'3 )2L"25y5LS7gƣ f$|ʩZNPc @Lxb.Y9aIvYC%aCCc1za$c u& +,WJS:􋼸D]4hO^1#?'ݐ/Fy/@F\ƺ8? ́M:bzneH1+xKZI>ZSnz,*fɉ}G 8 wL4@_cw +/|] 6^)}}gƛys$_>ߨeǹ6v[-!Q {DmIl;Zbt)h(2׹ϲpGLeqr([{9!Z& ҄z W`aj&$; X{cgdAq1p$T˿ *bh%;K$t"[=R#+ޣ2_t1/tU/$dF:¨%)gcm]}$29~Z+8G +֜Nvpx`)D\,.>>A֕+e^OlAg|\bVZ/Sn$JX)n؄@CA0ˑ˚g>i%٤ps+d=F\u Fizȇ^L$~ YBXL=?9w7:4xҔ='ea 7q:eBٶnU$՛މddj",ӱоOu.;wL>bYU23GQZltcQ2~u0-{cjB:reH$: $geI2Hda,C_L.A:CI005+n[De&$MHhjq Xޢpb:O`o2efڳ><7[gyg $37mt}U-$={[ {ѹo~eWcXĹ8*`[É8X&+!g3y wƙQjo}=Ŕq0r?V&=W03jO׍ƥ`"haKYl1 +9kag^p Jc*KU>"Uc|\1,oH`^KH7_3\un5}'ҿ{h\k2aQmJ9"J$i \Je5+5AN}HB2ډDV\械u_GR>UbOSӛg$o `D2ݻt)S\MzR't7bvZ-6W.Qa任^JD)oZHgb":qZ)BHY <ђ}F jaz`MHt +τJ7E?ōso(iRk>w?qyY<)90Mq%xhRVZ;qHΪa[?Cvi08V |е5hk>cΖތS rP[n7&t-Vbii2ݨY=tXnSfb98]xs8 \{Ha 5bܹ]$-OJWhJáRnBj`حe +ѸA0A|uA|X!"nWrܯ*gjo!/!6lUX%{Hw&_إJ\ !zI6s)x$1!g#7`Cӵe_MnNҤ!=]+eMtͳT*^8T@RKH``W" n̶Էv{\Q#xɛ|r$b=yp͕Xcpҕ0g"x-XЍ& NߐL ;yJ[:Ľ,!:<1 TV󀢗4"J}ɻ[0I#^jnQSUHzwIi=Us&] 9J2,S>M+Y>Ӭ&Wױ*eoU'Zsŏx0~Lnn "9= +7h"kk# + 7͸'&_ +JmA/+Vjvz0Ur W-@:Si5*5c!\%0f4ɺ]5$ xQB)P'!wm\~*ܡTӄ4K JEM-bld"‰pǥmI#*yImsJMs:>Pp/lv,еgDX+'o6ۊ#!1j>r\UJYe;8rBFV&\(ys4\V% )p3>~ܦĹA W W)~NBEWG16܁ԠGpJ+H |\ +() RY5Y{? ^g+8Lidw0A_MqڈVDѲ2Nq;nFijF!җ gUf.| Ys@U0E\9MCm9?TSf; pPCU)+&SH D1h~XWTpL,%$6AI&t}gD{{D]ʯ WYWڭFrlsm4⤊䑈Aמ U3ϠnӏWL*~Ͷx*yOG& *#4sg/g^iinws؉zCj`@@='|C.Mы68ƉNi{;橜') YDTx`)$ceVdJ;y#A |׹.6qhF'7QRY +8pyDot#:f߅X [ =Wk%'k`F˂~h4L@ +uumȡ䔄,M9(qq&=\(G ia$,)p^?K{IJlgbcK +YL!K +&0;[dIVx0PV +=[ ^ۑa40EYk &({#%R7]Bi6P<+X*@Oڎ,@{ $MziTu=O6O|%+vU` +^eٚfᖤD!) R (2n\uBH:#=/i"Z˼"kvGEY.1dFc 5 ͯ;0`,C+¤; +[sdCLV$/dW#oe `aQLzoCd?5Aj9+I85Co$-f9C7t4tJT͆'^K`:u\LB\KlŤ2팴Zr&9:[\wcNy?˜PWJt/HYm%H`@@|vΣ5rj:+h~^IQ5ꠙ\Gjvf5VGQ59'NNRjT4k!0jpG>wX$pˆBZ`@g3t,BB;آ" (qN%?V7AҚ-re`2BmRGMQ^4/$AE}&qXũTiz܁ +;4lHpιTʐ0)-kG-aNbrA Ȏu?:c-mжWsr5QLh|dYq.,LF@3֠Jtfɍn^+LĠ3hJ0G${#ޕ%φS +_(x_E /N{j%6H>au&|n9ߦ`y)R6851 TY9[$>GuqJIHt(?Cd\4y@s`<@5Flp1i %vy܉`)w{y<;3[$p(h`C91OMb1aJѽ:]jG)^PŨ |K]Mg.gY+4ǢXY(3ˇ,Y_ /ceFh-ԤiP{s`,0dmn 'fN }hB[4 ^beJQފhL<jʬcM8Z + wWĩ,<#RšY,!:q7E7Qh[tv_p@akLFO͹Nap9чzǞY+cCL^~op%z#s"qNϤvЧ4!J@!e:,,/.yJ(㔑㘤ZG2 TO/t_Ѹ/.bx3Fg8!ϖX ~:FIY >le~9#WFq^d>LU7/K~Q)5[ mynD|omu$US9 ⏓  YAl=&OCNARⅈ|Mfʼnxh3Uky +죄+}-A~L;P ?uctfEMXw䮡1#,+OFL%L dm+Sc~+DT#Ɠ%Yo 0yƱ?bQ>5ɓ|R>/9` |'#U&G HeDBɖO3/u\]ݓLP3F՛tmP/&\dzB &.0Ӝ͝De|zsձ0՜"Mk8 |+ED=%8 +uH$ɶ *dA9&:+$6,hc+%WD1 j#ՒVƀ}d|xǫ1'[Q~mHQ`2)܈I1ATZ\ ˎ~ +U A^߭$G'(JZȃ#]mk8Ά5lQP_)ܞWF0)仾ce6$75[^BJ2>3~%˴z}s1VAATkSN{v);&cla->NKW']@4V*+8(xsQ羵IıHgyc 3v.r[X6q7reA_j>Z Ëf^j'/!\|>X(h.VD3jfv@!rUgN3j^H%@y-\]gT%< V(#}"3.D)-[)bN|FM9%f/&# +èN f /A)8dg#k2G$1 kcԏA/0-xkupN] GeVQ>WN|?chd:Zd(dwW$?[cuCVJCl=[_ȼ3+r,+ +\@=)2|'cϮkهݑpP"ä-)i`!Y{_HAmfOtUKS{$ +ǧQHTA,}O>r9u8+9B1kBNB% 7dCMbVȀ1b^aUỸ,VJmKp33rd{2 { .G>qhn_q Xx)Ex +v -"f(֩+6qje. rE9D#0(Ph_vȹ|-Up=OX3 !﫢s:EkWdƍXduE#Y3mvdlƨu- m_OS爱&UgS\-rmDYHcڠ$+o?f] +73s3e /ڻo'+A Y)i8= /F8i2r ^ LTL]65SBhDՄY*y=s.{¯}j"n D]o(q;Mg Z +u^mU6 _Z**fS,B誼 JT1GRk`r )6ު>mMnaɋ}YqqdPq l\ArbϨh;B +$gGl_2KEkUUcv3~o `Tadj꘱`Bs$i1ʧbsQi|ǡy1RV2? +Ä٭i)b ɇK^~b#k5; l:;Vd`]Obnr +* +]+ƽo +Bi][ϣ(4 Lfa[^+ V`\+.Ő +,%dwA4ZKX.JE~t Ib|;e #XgFk$BC8 5^I㒿4^\& K8}{>fWZe I +m>aT"[N E?Ɋ5=dtjle,2\P7@s-rҋ{1d'-^(0<$lYcM s>"T}ܣ +qbI!=<&+ +CQwTul8 W:E-~J/[R&?:-5^\ah^K, ֨tU$xc@*olYěur-zzn IbjvݟVThi}{U$Uu/aPRz- +3 +MތT74I'fFO-3Spj -H9`1 Qjc-#Є$Bى#xU95mdLC&!sl->*,K!=v@x G#Jux; ڂ?C?ֽ NOvBg +h" M>#qӷʇ4J@O ,ZHB-Ι@^l>c1&H* s@\ҘUQnMR?a$`Є 4L-2#%<\#!(kXR`-@1F-f<^)[a?8lU/34eu I$6cvIᙤU!krQHN2'FW92y*XxWX0H#TNbui0S`; +[ |fMH3Mt)HM:\GߋG]Ah.2cj9YXL` ' 65 !5@sJbɤ|x7j B hjf@;2%#xC3b1< A>^*# [r?Q8L`14N, sb1uD+A<=BgwZL33<򞇫e\ѐc1 d'9ZDf08:5+v@x.y^cubUl9P|< pPk%jҺ:W S&0҆2ގ ىzfZɦ9`C5ZZK6TaM9}v] +qrXXQ34"p(T?N +QW!Q]KZbJ•eO@&u BNHfT:NMg8 %"kK1C@1JBM TH]f0`_Bo \bQ7;-.sPzn4Q3lBΌ uܳ'ݝ\Uxڱ2J7EGHZPGi-`r,. !}o0Ļ oM>_@B%@6lƨKk 4GbSјl6Ε@ dnA"5v@%D. +—pl \]BGu<&{Χ)Mؐ]A ɉX) *b:&^r%~WЊ29*/T3] 9AW9`Uw`@f ˢ^R1䒆hv]Ƌӫ6" ,Z&`:>_҆[eT<\4CxdFRYdJ&+BM|G|zJІUɠ 3e^KH9=Jq&DIIN/]XR)!վwP:J7Ӓ-2b[r=NNآ1ۦswCc~w&sҳI7?D^fģd| j~%I8k-.˜}e#&ZdYnMbwR`%Jt_-#?8rX$E.b h7Ecr$tߞ}.f,5R1ιwkX~(}R*%vtеgn-\ŝ7.5NHjϤ8]Ԯ]D1E})}Qmݳ&G%?ٳ?{.XYkcc,آ^#wvU[D좈x@D1&IoMj/Ar?M&RX.doq.-G,ݸSTu_ZTUv9ђYߣ~[dGhs?abA$ELfycRs,߫^ãntKE5x^V`q*Fjuv;W<*ZzU*u@Y]z7&AŜ3,#8o[M +cIO1crw;E.'_,!2H"u$ jܢ:o#Ijr` 88k]D~H/ï.G *2ԧ&?_(WTo@k +B^3A(x@x r,*j2 j>ȣ}.,IGE[%q#OrԎY>HOr8=R$/1.$&Iy ;?"K'KtRsY'1&Ɍ,sKq]c'={Z܏qR9TK%rƣ&3&K"Yr&*5w_'(YR$GLI-{G(cO? fyqKM;.3)8];eΘt27[ZxZgг^f@HY`):ZPe~GrTe&B+xP ]b=8zKd9j8IMjlR-^&M".&w-O/,KGqAϻ +BFhX, +]r p3PwmP25XC# +R^. +7XBG)P ~X^(!S'IuE䰭"i)cFv+ZK/u'@Ô/R@P(>@Hq+mosQhP0J8ڧ[™Hf`>VXpA '٢M-!0j>гY֨%0dH|4TQ>*܈mLynDZ( +M~a"⬥ R" U9d,XW8!^Ј2rX( W\L,PUlDON$<"2CB"CQd>)S0 Z8H&$"XP(QŒ, @Gc#dHԹ-SrUhX%"ѹdßŋemEҋDpubwn(uĵg<1B=IX7q;!4i|L"VW`܋ZGjh]M_D4 T*)ly p.e|x{+JW)4&8$'imldZ^;@𲢳w֗9a52#>[N ACr#=C~<N/zB'wl M6mH#(&+'\ֶ3Ce fGuӋh?$q=Wǻsm|[PRF[dXI2P`Fs_k>.{k1~[BSͦ}t'2uLKz1;1.P@Je/Ver|u1`YYdMeӃ17ZLؠ4 )wކׅiLv+[P=]~UO`}4:ZVI8qD Mp1_XIRob3`qsY;>+]1Vj>R{LDS06*%cш{j_OAHV=#"r,fr8H́vSpu/ +B1.D˞ŷs ,{r>( K{锅T{ gH-f|=LtPeNְΖRZwKʓ$LWhJ|˻p@UjJ>᠒Y[k[n+`U+Kؤ+[.6D؂xҊk;R"pzh}bL;VW"63JvxQD:Em)/ !*#J?.㕮gfn%]d +1d''FFfמDxIK}9~zvEcp';*Y龲`"mnDIz'Cach=*mE\)jQOu$I,ɏ>HFƺs&!ioss ;kA?=sRHDes DolGcQ3,ܒֱeE{ڧoFQ+UU@-Y$G̛Wqób9Ch8"r0T\W0Uz-jTI0T +{> Z +h(L%mV)ii`AXeu5A VVI^%:/VقUsI! +l` aU)X}g.gv-XaՆ$BI,XeLxσR4KO} a ;B[;XJ7)^[Y3\B<]Ϭ*P,Ϳ.ySxߑ^ ]WiMv`vo[4(K'F Ҧ=2Nvϩ40W|ABg@8G5 #svNn(xwQ5&c!Oc2̺9EYDVIf^84XE:I2xb"ں?8TdxvFSik=CǟB\M6EL+;z@ HL*02O15ZP/\I*'=@P(wm#/wѳ+Kv0MNF4 `˔h-l:𬞠YO.z0o$2DC^%7]%3yPd'kvk&utu}V$ ZaʎϴYeF1I*aU#Sq3"!GրUPu،0b"*8Uk]19 ƌ!WUч<'{"ZsCs8rఋ|7Jqs[dJ1'a/p#+";xTDWaPӛ]7dKL,YIAaƕIf;Fg5="$|(MƗK @JTBan+2M 6;!.Y9E + +7mNduah{׌sWcYߺ0Y x@+?(MjcJ&pШt>]蔟6BS_ @7QQզ:??AK0Te(-imXBj(y5MI'Og* +Z-%>y8nO06Zb*2HeR@9 `b 9˗$#c=G /mERq, +yFLjnjcw?(⌃I;j7,D; <ϋu97YG 4lXTrV*A_ۘ(\>$NǗ3}ŦH}~S"x׼櫕kc4FsIƸ_iYa&UMra NU \H ZsJhˍ9ZT,j巗FgH9ՔTK*p2[;R=k@hojO&+ƙf .ѪqXQ @J +Xɐn"As]}d"u,,P,ѠѧՔ15?xvs;!f]j!9Y:2/˳/="_7DVGg^2PXa5}"h|Eo@)KZ -:X/[c30q -q Gظn?UJD+b"JIGIJZWI:Jpj6޲ޗ׍Ew"p88yhqjBsxx 7㮃KCVwZ{NTw~VI2; D"O8$U.y\ZFE_.o\™nOJM1$si]H8?e=)F=a=*Q06 jf踿e}%Bk l]ɥNL ,sJ3zW uSob ;7mǕSs-Tyv>G*D6ϔM*cP>7*8S[&>.Vϣ\(m[x%߿yOBK"L] t\<|vI x'94u^#_ҝ nU!']<ċ,uX'̺`uVncZ"7IRD7XaX5oh$99w7t.* >}0 \ٓcoOLMv-v=a8$Dob.2 0"n(3 QʼQE!R3gGi6Sw)Z&nڅG= *ЬJ,i`A +oI:M:j?\ w3JQP1髧c`ۓ*!?v %@H7Qq} 8*ʜР7UMІk>nj"L>F A.飺&n钏 (π5Pf始-QYK`-JF/J伪`zw(PpӴcWh> ;y͙?m4ETi'N,ozb3.g(h\r+_$flD&?#hG]yݛO-R$ u]ڨ>PoC鋊ٖ9g6odԓ9TS'b椞ͅՅtGmnFn k3]p.]bnZKrwx7ЫsڌCk6݅zR'AvB,Ih3P5n&YX|hHzO `,0V@FBb>}g>JC*rKڱ)0$Xai+3MF2د& w:)3,;u辠*٧U۔ŭ,Cw(9yAPn"i?/[˜P?h^#LCo>d~:7?I d)nkYmm Хo@fW:'|@[uOX%06 +| n5aM3?X|J8;{}i8eM[hu +QJĚV()Dt7 V"&1])ynC2 9 +'dD&(rF66* s}߲ctNQ7ڡuŊ)iJ; kGu܉bu*Zyۗ5bı#Sb!3&3,]I+O&f[Gvz b,LJ:F +m@CmbAo[}[G:~Ҳ}d6y}$$$~`Xc_f*TTr+{ڳ/"ڥ =5~JCdaR+|O;Xl5J*X*Y%T(u'qQq%{*MUꭼq!dT\ UK5 4x,5]3T^ڬw'cAt&qD@ubidjF+SaH5F@lfz'N^7#3(VJubjkԈLKg !U)7D8컎vB| Yr2PnJk]&2z4Ea+ " Jn"z9AYʥdbnB2nY@!5֎L[ybjŷcO.0UguX2.KxcdyYfJs_s=oܜ`96c&Kn_P[b2ϰdlJ U`h%ܨa@DoIJn~'0e*Kn8Z-I0S%w(sTҕ0Pn%wޱ,r']Au4 uّz_7} + +pJ +endstream endobj 116 0 obj <>stream +وU+X=r#(qVQZmL&<ٱ:swα0֔#PEvA*ő׆Cdiq,VЖ BA96Ώef2ܜ Wd\”00YBsmJFDŽ]D!p,Jϒb"vZr'By-WR NۢjzWdoY0buG! xexx?#OL727v~U_l%RPe61hi|l-g۸l,>T01ؘޢK6fT=9p*ٸI5+2OcXD߷(yi/a1l1}@6AAP}>emYX~^FȈC;w]lH5;zTGd,\icƬ&C%bj޴5cr`6rNpZWz4V,&T!8$ؠo8xs-9pOc5|-Y̬옑oҰZLvimMz +7)(㔀PX4*jM^9`Ps,tl۷ j1.0Niu6F)0l KE-&ۮcՕ>WR˚Qܬ [™׭AicARք_MjXXu36.ql^@skʚ$B92N흍H9fcUZ N`c*[pbc亠65|}#%xs +._As!|qIk&L?ewYzgx`W8z !c&\ŷUTuZ#m晦[))VV.Cb㴓'bb SSZ*P4і챙ѩŧb4ʟ ZQ*U)uYEeÇUƄTIq*#ᝀqZɴalKfYWpjVž*\I(YHSxkVDg<&pb9|aLxw;$-}2VL dTA$[/z +»XddO hJؐUB +/MRY EeW=ؙS1,V +̡DJ&)^^~/&&U1E>Fנ/*֨=Uq{*'Sh+B$B.ȲX6\5̯/`=fmxvU1bWu^+s#JƋ}lifB^(i8Ew3T_ؐaږ)wWJt)f1&PJC +ѕY48\In\gU͟wEnsY[1=6br msdIMtXn LK]b~*۾).`6Pl9 V󛽮Bd!u#~4#@NdLm&#cQ$Gv]fi=)n^AqX=)olK(-=zV_jlќk2ZSմΜP&c sv ۦ#ŵәAIA{d4&-J?Lx_Z6\Fܘ%jxg_3ܩ~Z+EdmB(1S[ +c;R fj W"4ck8?rތcNmG{:0ӰbԌ?"ؼ"{-iˠX2xA@MAk -$}|qYD5@}@ؕwon%--mpqqDpXAcz@aewuiyya.Β?Gu@lN!ռv9sU/_'뭺=ǐ^Pp2vYQ~/2zPWa6=#(gKTp wb"DG2j6~!e +Xg2S4^u~O|#䯨8Ku>"o mz!:8+řzqR)֒\ѩ ;)@Mb;fwUSR! %]\4ޓ;sP1B|1cbT ֻͩLuI*e*zƟ8e8N\ ύ"P~ %THl.p RFCp، ֒-3T^o2TUoKn@’D!EEY?S][s\w6[8F[)KAm=l0G*4N2*jl|TUMo dQ&X=&uvrph%͛6 =7š$]lpvEuMنؠXL>SO|H0Yz6pQ%!6Yt@`?ڌ j͘l(qh3*7 +&K~Hj3t`x[šUYZ; 6e/z \ kQœCt]s8e!=+3:] ȅ%Ľ;$W&wzAYc%!<;jN"l@@Ë (gYB Ed2T| z7=kY%2[J^o*.+MD;Æ :*!7hU|{aKH1Q5 Vm/5Z")fm6 +t*R +Sz6r׭^Æ~VKō3C +[tI̫KE0wͻt%-zuR^) hL!S>_襒,PTҹ*)rVjEZ/⩁J☚6^*T3lV ? ^jR_ 2NQ{7B2"Tj(a2:ւ2bAЯĥKŐ;Y̿4BA&`=Q$gІcgs$s.L-'YǏFdq{O22ӡ4O6Nk2>]nh-f؉0Y'UZLk28!.W@8Le%XW1b@](sH"砆UZe20Fj VTImj0 ̭87РgU #; fv{D;CxYYMej{ȑΑG3'A)!py`̊uqI1Glܓ`I}"{-tzZ5,"V_UjvzYe$q[CoV*ʩiG`x&\׻'ڡ*_VbKqY*QJD r띅r)[E9ECUpEG**(mPC59`X~'f,ҖvW'h|m7 . AO[\W8ý3G+xf|P8!=8Uq,OС‡"tM=`"xjn8\1U(!+#L:1@!g1cO0ԭ*w962npf3:Ѓw rLփH?/q%%w\Uw*ב;eR==Ēiʌ~Xˇ=lY@4ont]j.ʣCB=Ko &Z2iAA[Qܒ 6'ϪU)"FyK<@p +z4xbSmw rb#3_"|ilAu[eٙ/aVz쥀39pz)8:f2MYDDq3?iyΨ1ЩFQȐG3vbEKlwJʴS1-wW3.'*"88*eq7U.@P7eC{\RId>16w-bh7/L:u|gavpߕ=_;mnC뷈.z6۱n? +q1xQ\K-ԅ$͙d{my(nOF<(L\ ``%9&MQEӊ,vBzf@j/O/7sOe/iUu ,Ne'^(xeߍA1%vƪ‾dlm +RShk \ļjs1١K<[Ȇ0vR/elx!#q"~8UoER(ۡN6R#;%~H#?TLǘ!+bM106Z2,9~Rv-7ewv )Ň( +%lx:ʄ!0KP/3my7d #K*p@DK2$>xB0([*su, 6[9-LˎW D+\۫Ŧ׮v\w&LM=`Q~Ň͖wY2Dϸbb@q?>P"XLK1hܴa`P +׵[喰k}*V%%aa46CÖCyĘzHBĶB<{䠶5Ĕ&–wQ~Hm[sEښ1^w|ezץhV{je]Z՛bEw{{ݬĿ*<R(vcl9C0a1Iѩ6;]Uˢh}W"oG I2LxSB~'pR+:ʥܱf.Өn>< =uVQ]e=)8 .3N\ pxF(.'SukEdbVNXlZi`C(q$C|r?'@ݴʾ;0mj5gqVcU +cU 6u$4G.H0(L0(oR M+Je2q^_\uw[Z8rc0:Ig@B[f^11;'n yK0(O+`_ ]f&,t|Su{;\c,q/ߔ,\3!$SCr=ug" ׻^[*'.lf&fb4)d,48)IhT̞l3M-Lpg?EkP[ñBYffl—a S}g#Se7SsFN*b|:PEqf5kB(!sK*IJc0V|hU: =;VkVxKqsZt<#7$Zi;4f4rϬQ|zAeӷpͳ?Hf]4\}iSän4.3]w% JeD +zp04RTIg P\эO>s +@aX@ cQ ( ,@`,(`P0@ ovW\EBY.,{خ) dT˶vcVTNNR=5uyAArLdQhx!F;@T%r4zum]Ŝy׍yFь֯̾7ې*nYh~O{ /X5/ճ37^]>qT8od<,5>^ŵ,>5.KFVh, 7?l˧7kqVг +z>4ޟ K  VU:q=h*SfSU-CxFt#wlrRe٤R=#7T>,-:aiiը;- 22RCR 05K@Aȁ BP&f!b!B !"Q"\qbI 2m ?OKp&RӤN[ʂyQ1$Ƴ ( տ=⃹FLlkT4Ejy N#d`"9KvMYqɨ.7#˾'dSW*ZXSV\Țm%xwXqWd;f6#8<V7ҒBe<7&| FM!ǀ2ok̭uuΟ'[Vٍp(@`h| Z* +k-#3 ݼN.n7? Y~~ھM(3 r߷V5'TPT,oH^X2{s쨊F SU"+ʻs<1.c_սL#^P__=63DfV.}^Ҧܧ܃iA=Aم& vF/_~Tĉ[96[tZbAs$jNs8"@ֈŠnt=|+Y8 Q\k%HN'^\8Sd%S)HX6葨!m!1Ӻh:AWJ 2JK H[wYW(GL@](1z(\tO=] xXLM58ghT2Dr׶ZK"1:҆F!](II}43$iKJqhzᝥ,y'%M%"A&PAk3SC2l0H:?ӲJOV=M"dTG64 8?k24F;t[)AC~x/|*e efٯq`ئyHE1nה44…MfD -š%wl% h:-G!QXYxī8|͎GT!h8lkߦ <"%Ȁwjy3<_$!c"?tꅌ3aN,2DcMXt"  N>*uch*T{ +~ŻV7OIʻH0G0,Ƶ`zghxMĄh?ʣwVroy]T?Y@ +-u.WD6 #V6R f?GXQ++=&]kp';fv4!!u_nd?C{p2WfI3n4 jwłi+lz7B@bn27sXK|.EɎDP߱KxH)YkgE3b,WL$Ho +)qy̱qYrVmL^xT Iђ< 8~+ːBA^GAu6aÈTM|JD}P' +Ih'$2\FQaִmgy",٪<6\=llװdCfrBu͒J ++ݗUe!aQ Lճ3*<t?Sa罍 +endstream endobj 110 0 obj [/Indexed/DeviceRGB 255 117 0 R] endobj 117 0 obj <>stream 8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn @@ -1394,7 +1542,7 @@ E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn VNWFKf>nDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> -endstream endobj 48 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]>>/Subtype/Form>>stream +endstream endobj 107 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]>>/Subtype/Form>>stream BT /CS0 cs 0 0 0 scn /GS0 gs @@ -1421,18 +1569,16 @@ BT [(S)-3 (a)8 (v)10 (e A)6 (s c)6.1 (ommand)10 (.)]TJ ET -endstream endobj 46 0 obj <> endobj 60 0 obj <> endobj 61 0 obj <> endobj 62 0 obj <>stream -H|TiTY -S)ZSUTFeuqQWDq!HXLBDQ<:ި("ↈ -i>=ݷѧB_s9{w޹8&p>d߲oVD*k5q߮WE$(4$EWh4e}9@ _߱=ri\p?BϞ;j=Fm֬YCXT;r8M|FS)]cbZFUi?GjHZ+dDp_RuRSY3?TX%F:aS+W*g -(q,q :MJ:7pÞx|\ځa0d9bsư1l cKlU",ba sVakX>Vmx `+‡L<- S F2N &9i;6ȶvn1cNJ2F\S 6v$,tF ޒHn` FJFm>,DBLMCֈBǯ1_#I\^Ld!w(>ƃ/7)K km) 8蕐&`7X#}tiYZkGDI|%G~Rv| "}/5ݍba/#%~EvZ\N?Mb'.dk&+o6NW{752nd_`.,'pUr"WӐ{:VNsB#3XjnSǺ1AYPI@ -<}-%zfeV,[XhDb˰\TIJ sfMʮI(މ]~")XmwUooIxlM>L - _Xa<`  Qw/4Lз>HX0w$QeBwPf Rh4y$,ə\Eeѵٽ߳UŞ̲ @_U|h us5I䨔nZ7~;󴶪+g~kUXyje󛖺ɧؒ.q_}ҾlkuUDl-nk(Y*zCP ?aG/ImQzh;R?!r $Cvħ*꘏'s)&ɤ }h.eHj~ L)iذ}6Uw~0qCcJtBnH 0Aڐ8x?,9hLpcO5PAe嘏n]Ǽk5'm@ĆE37״$'dԆNī mDfYOvޘ|+nhnbTh0zAij1v)kՃPf6!41I.&W.f3Cί]7KYPiL;pEIG}iɬoor-?zm 岌2ÂVpjū_z:"٠8&{" ΀n䕳V(1qs5qtы}tB||xO{JəClNhR&l(.LiX\[}SBBp|Q HDZ:txD^o !wEs*{TUWʙHDm&8MX!u;LK{^m=W_sTH/+Y6Đ AtD^<\f'g7Ȩ&y=‹=0Z ԑGrkun3*PE0ʨ.6ސOckfwaPw}gXoӁOtIH?{:mSS%ҹr}IKbajXy!pw ~>q -7ek.63*rJ?4I - -s+/42]*j ,p6$ &>3[xLV}LSWMӽ[P,<վυe3( sMtk‡-S0m)) !8)9 ʹ:srcߛsw=ffm)ҲӬ,qxD$<ʈl;[׈-g+8?(x.n Ki-uL]pCcDԷG'".3F=ibP}vPu(fsF24{bqR~ q (SSeq{D|3uƜw,>cr QwF9>nol|r.#V[\_o`{KgGtEMe%e^хESNO|eB"Uuoh9Q<|P˼‿Ya -INb(I{y`.Lt~za{^2R _ǔZ܉CMՌ2 ̔Q'R*-7#]m04t 9jg6="k<.+= =Uci5 _J** ^? |/8>b -suz vb=ʔ[/QY37Nd亏 י~@;T7*Fv~j=o jG`zfB7F$AVl?@[_:;*OV8¿Lai`TUM3TH \ <sp=?GPF[X juRZƠtjINx5yZŭǴCDeŬ!Qv l[mDˠo%@!HH36ޕ>|%Kciņ;{wl/M܈S `X`͋uwC=:M88(Fkɪ"X.qw5w(K$[׬\_ Uki_x1/ -endstream endobj 59 0 obj <> endobj 58 0 obj [/ICCBased 63 0 R] endobj 63 0 obj <>stream +endstream endobj 105 0 obj <> endobj 120 0 obj <> endobj 121 0 obj <> endobj 122 0 obj <>stream +H|TiPYj (FfaPQ@TX@PQD[N9ElqEiUDYdD@A<QNu`˓ql5gm̗}_^$`8ܼMUr*m0ʘ/q~)T-F?A4ez՗S,1M&"R-[lokK'~ѢEvl"_)>VT"T*yRa'[&PTJR1nQ,X-SG)U2  +YJPBe,8\&`|ƒw IhURmpÑJ2Bypaaasqþư&Rs36b$vOb/ Ž`9XցQ…E<4]io:&Z%J$;T;xǬl<ʼݔ &~ &"ՔOH&!ݥ+[-ioW$$L=d(TGV8[^t7Wӹ6E֤Oi`sx4qՂ:HYvbJx3X@+K*/GVp穇,/mJ{QHh"nQ4Ds$NmV͹fl@Gh yb|C_qA> Zf 8|ֆ#Qf|')a(¶ 9%u׺gCk♁>Qל/~.oonia[KtfgvpC xGKR8q984-#}>xf5wL/:Pڇ~')Ww<4wswS0H; WAg~@쭠F, S}WlzZ[kêދQ)ɛmp>էv)z|_DaNd#If]|˯yCOc haBLG,U0  <a^pDuAĢ\` 3a.G +uCQ6H䉂┋̫s7ڤc|Vx80k'sCtFNizcpT,G%&7za88B^Օ= ,y>ǭ-*ڥ+Z޴J(b{Dy}s1若.m;{T)]sm +J*cOp&j''W4 aY1 W-ltY_S+wX'dyk\T[UTTސ]|<&K-is1Syx=G=u+5K7aYI3~ `j2.A>a,(!k(3 g5wM˾$ؾjǮڶ8VVڞcx[u7k n\%rLެ 0ټ7s3sTG]W@鰤MZjojMAijn ' 2rJ5)? ^2Aǧ$$'F#> +/?z׏nuiZ'vvӎWs4t 9pr@b4Y .cΓYFsit#)?CX`_? 'Na!Bi4z 1Պ]01w&E0$d줛HOVk ١eH:8>m/ >$,_lE]}i̮kj:BXpP.BeVwBzz񞓌w iGRYgy"x0膉>a'ҲNe7r0*uwPٰ08`Ŝ!a(6R2Ca (~ %o]2+|wCaeEŗR2MqKaj6Iw 8RY+(7!lPg5(c9eW׵0˽]9tmŹ최Wro; BVz M gic5H3=yG[ά7/UGt4 fosaluS&aeT,A?, a[E:6EEt +qNJttB3l&ܷ\{f$&;slpl+"4+B?y%8 2"fD8}ptX2UEUS $B;,Cnh t'sO>.At79Hڡq~s1huM55'WWCZ*WQ\1 +endstream endobj 119 0 obj <> endobj 118 0 obj [/ICCBased 123 0 R] endobj 123 0 obj <>stream HyTSwoɞc [5laQIBHADED2mtFOE.c}08׎8GNg9w߽'0 ֠Jb  2y.-;!KZ ^i"L0- @8(r;q7Ly&Qq4j|9 V)gB0iW8#8wթ8_٥ʨQQj@&A)/g>'Kt;\ ӥ$պFZUn(4T%)뫔0C&Zi8bxEB;Pӓ̹A om?W= @@ -1442,15 +1588,15 @@ N'  wG xR^[oƜchg`>b$*~ :Eb~,m,-ݖ,Y¬*6X[ݱF=3뭷Y~dó ti zf6~`{v.Ng#{}}jc1X6fm;'_9 r:8q:˜O:ϸ8uJqnv=MmR 4 n3ܣkGݯz=[==<=GTB(/S,]6*-W:#7*e^YDY}UjAyT`#D="b{ų+ʯ:!kJ4Gmt}uC%K7YVfFY .=b?SƕƩȺy چ k5%4m7lqlioZlG+Zz͹mzy]?uuw|"űNwW&e֥ﺱ*|j5kyݭǯg^ykEklD_p߶7Dmo꿻1ml{Mś nLl<9O[$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Km -endstream endobj 64 0 obj <> endobj xref -0 65 +endstream endobj 124 0 obj <> endobj xref +0 125 0000000004 65535 f 0000000016 00000 n 0000000076 00000 n -0000054772 00000 n +0000049446 00000 n 0000000005 00000 f 0000000007 00000 f -0000054823 00000 n +0000049497 00000 n 0000000008 00000 f 0000000009 00000 f 0000000010 00000 f @@ -1469,6 +1615,65 @@ endstream endobj 64 0 obj <<08AC15143AB89046B7CA3CDAE1D95F81>]>> +<]>> startxref -246099 +269690 %%EOF From 936338a88ca3c2c9d2877be56082101f1f95f32f Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Wed, 6 Dec 2023 14:52:23 +0000 Subject: [PATCH 104/142] Ch11 fix Obserable typo --- content/11_SchedulingAndThreading.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/11_SchedulingAndThreading.md b/content/11_SchedulingAndThreading.md index 0c06c95..7945804 100644 --- a/content/11_SchedulingAndThreading.md +++ b/content/11_SchedulingAndThreading.md @@ -761,7 +761,7 @@ class MyService : IMyService This fakes up behaviour intended to simulate an actual temperature sensor by making a series of calls to `OnNext`. But it does some odd explicit scheduling: it calls `SubscribeOnDispatcher`. That's an extension method that effectively calls `SubscribeOn(DispatcherScheduler.Current.Dispatcher)`. This effectively tells Rx that when something tries to subscribe to the `IObservable` that `GetTemperature` returns, that subscription call should be done through a WPF-specific scheduler that runs its work items on the UI thread. (Strictly, speaking, WPF does allow multiple UI threads, so to more precise, this code only works if you call it on a UI thread, and if you do so, the scheduler will ensure that work items are scheduled onto the same UI thread.) -The effect is that when our click handler calls `First`, that will in turn subscribe to the `IObservable` returned by `GetTemperature`, and because that used `SubscribeOnDispatcher`, this does not invoke the callback passed to `Obserable.Create` immediately. Instead, it schedules a work item that will do that when the UI thread (i.e., the thread we're running on) becomes free. It's not considered to be free right now, because it's in the middle of handling the button click. Having handed this work item to the scheduler, the `Subscribe` call returns back to the `First` method. And the `First` method now sits and waits for the first item to emerge. Since it won't return until that happens, the UI thread will not be considered to be available until that happens, meaning that the scheduled work item that was supposed to produce that first item can never run, and we have deadlock. +The effect is that when our click handler calls `First`, that will in turn subscribe to the `IObservable` returned by `GetTemperature`, and because that used `SubscribeOnDispatcher`, this does not invoke the callback passed to `Observable.Create` immediately. Instead, it schedules a work item that will do that when the UI thread (i.e., the thread we're running on) becomes free. It's not considered to be free right now, because it's in the middle of handling the button click. Having handed this work item to the scheduler, the `Subscribe` call returns back to the `First` method. And the `First` method now sits and waits for the first item to emerge. Since it won't return until that happens, the UI thread will not be considered to be available until that happens, meaning that the scheduled work item that was supposed to produce that first item can never run, and we have deadlock. This boils down to the same basic problem as the first of these `First`-related deadlock examples. We have two processes: the generation of items, and waiting for an item to occur. These need to be in progress concurrently—we need the "wait for first item" logic to be up and running at the point when the source emits its first item. These examples all use just a single thread, which makes it a bad idea to use a single blocking call (`First`) both to set up the process of watching for the first item, and also to wait for that to happen. But even though it was the same basic problem in all three cases, it became harder to see as the code became more complex. With real application code, it's often a lot harder than this to see the root causes of deadlocks. From 1500de24521c7ae9d8543e87e1a5e54ac821884e Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Wed, 6 Dec 2023 14:54:06 +0000 Subject: [PATCH 105/142] Replace spurious < with < --- content/11_SchedulingAndThreading.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/11_SchedulingAndThreading.md b/content/11_SchedulingAndThreading.md index 7945804..83d594c 100644 --- a/content/11_SchedulingAndThreading.md +++ b/content/11_SchedulingAndThreading.md @@ -430,7 +430,7 @@ Unlike the schedulers we've examined so far, there is no static property for obt ```cs public EventLoopScheduler() -public EventLoopScheduler(Func<ThreadStart, Thread> threadFactory) +public EventLoopScheduler(Func threadFactory) ``` The first creates a thread for you. The second lets you control the thread creation process. It invokes the callback you supply, and it will pass this its own callback that you are required to run on the newly created thread. From 711c6247d5580cce8684ea7dc11cf5bcabbe4cd4 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Wed, 6 Dec 2023 14:57:45 +0000 Subject: [PATCH 106/142] Fix 'lamba' typo --- content/06_Transformation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/06_Transformation.md b/content/06_Transformation.md index e2f032e..cb09188 100644 --- a/content/06_Transformation.md +++ b/content/06_Transformation.md @@ -188,7 +188,7 @@ Rx is not like that. First, consumers don't get to tell sources when to produce The Rx version of the example we're currently examining is in fact one of these unusual cases where each of the sequences emits items as soon as it can. Logically speaking, all of the nested `IObservable` sequences are in progress concurrently. The result is a mess because each of the observable sources here attempts to produce every element as quickly as the source can consume them. The fact that they end up being interleaved has to do with the way these kinds of observable sources use Rx's _scheduler_ system, which we will describe in the [Scheduling and Threading chapter](11_SchedulingAndThreading.md). Schedulers ensure that even when we are modelling logically concurrent processes, the rules of Rx are maintained, and observers of the output of `SelectMany` will only be given one item at a time. The following marble diagram shows the events that lead to the scrambled output we see: -![An Rx marble diagram showing 7 observables. The first illustrates the Range operator producing the values 1 through 5. These are colour coded as follows: green, blue, yellow, red, and pink. These colours correspond to observables further down in the diagram, as will be described shortly. The items in this first observable are not evenly spaced. The 2nd value immediately follows the 1st, but there are gaps before the 3rd, 4th, and 5th items. These gaps correspond with activity shown further down in the diagram. Beneath the first observable is code invoking the SelectMany operator, passing this lamba: "i => new string((char)(i+64),i).ToObservable()". Beneath this are 6 more observables. The first 5 show the individual observables that the lambda produces for each of the inputs. These are colour coded to show how they correspond: the first observable's item is green, to indicate that this observable corresponds to the first item emitted by Range, the second observable's items are blue showing that it corresponds to the second item emitted by Range, and so on with the same colour sequence as described earlier for Range. Each observable's first item is aligned horizontally with the corresponding item from Range, signifying the fact that each one of these observables starts when the Range observable emits a value. These 5 observables show the values produced by the observable returned by the lambda for each of the 5 values from Range. The first of these child observables shows a single item with value 'A', vertically aligned with the value 1 from the Range observable to indicate that this item is produced immediately when Range produces its first value. This child observable then immediately ends, indicating that only one item was produced. The second child observable contains two 'B' values, the third three 'C' values, the fourth four 'D' values and the fifth give 'E' values. The horizontal positioning of these items indicates that all of first 6 observables in the diagram (the Range observable, and the 5 observables produced by the lambda) overlap to some extent. Initially this overlap is minimal: the first of the lambda-produced observables starts at the same time the Range produces its first value so these two observables overlap, but since this first child completes immediately it overlaps with nothing else. The second child starts when Range produces its second value, and manages to produce two values and then completes before anything else happens, so thus far, the child observables produced by the lambda overlap only with the Range one, and not with each other. However, when Range produces its third value, the resulting child observable produces two 'C' values, but the next thing that happens (as denoted by the horizontal position of the items) is that Range manages to produce its 4th value and its corresponding child observable produces the first of its 'D' values next. After this, the third child observable produces its third and final 'C', so this third child overlaps not just with the Range observable, but also with the fourth child. Then the fourth observable produces its second 'D'. Then the Range produces its fifth and final value, and the corresponding child observable produces its first 'E'. Then the fourth and fifth child observable alternate, producing 'D', 'E' and 'D', at which point the fourth child observable is complete, and now the fifth child observable produces its final three 'E' values without interruption, because by this time it is the only observable still running. At the bottom of the diagram is the 7th observable representing the output of the SelectMany. This shows all the of the values from each of the 5 child observables each with the exact same horizontal position (signifying that the observable returned by SelectMany produces a value whenever any of its child observables produces a value). So we can see that this output observable produces the sequence 'ABBCCDCDEDEDEEE', which is exactly what we saw in the example output earlier.](GraphicsIntro/Ch06-Transformation-Marbles-Select-Many-Marbles.svg) +![An Rx marble diagram showing 7 observables. The first illustrates the Range operator producing the values 1 through 5. These are colour coded as follows: green, blue, yellow, red, and pink. These colours correspond to observables further down in the diagram, as will be described shortly. The items in this first observable are not evenly spaced. The 2nd value immediately follows the 1st, but there are gaps before the 3rd, 4th, and 5th items. These gaps correspond with activity shown further down in the diagram. Beneath the first observable is code invoking the SelectMany operator, passing this lambda: "i => new string((char)(i+64),i).ToObservable()". Beneath this are 6 more observables. The first 5 show the individual observables that the lambda produces for each of the inputs. These are colour coded to show how they correspond: the first observable's item is green, to indicate that this observable corresponds to the first item emitted by Range, the second observable's items are blue showing that it corresponds to the second item emitted by Range, and so on with the same colour sequence as described earlier for Range. Each observable's first item is aligned horizontally with the corresponding item from Range, signifying the fact that each one of these observables starts when the Range observable emits a value. These 5 observables show the values produced by the observable returned by the lambda for each of the 5 values from Range. The first of these child observables shows a single item with value 'A', vertically aligned with the value 1 from the Range observable to indicate that this item is produced immediately when Range produces its first value. This child observable then immediately ends, indicating that only one item was produced. The second child observable contains two 'B' values, the third three 'C' values, the fourth four 'D' values and the fifth give 'E' values. The horizontal positioning of these items indicates that all of first 6 observables in the diagram (the Range observable, and the 5 observables produced by the lambda) overlap to some extent. Initially this overlap is minimal: the first of the lambda-produced observables starts at the same time the Range produces its first value so these two observables overlap, but since this first child completes immediately it overlaps with nothing else. The second child starts when Range produces its second value, and manages to produce two values and then completes before anything else happens, so thus far, the child observables produced by the lambda overlap only with the Range one, and not with each other. However, when Range produces its third value, the resulting child observable produces two 'C' values, but the next thing that happens (as denoted by the horizontal position of the items) is that Range manages to produce its 4th value and its corresponding child observable produces the first of its 'D' values next. After this, the third child observable produces its third and final 'C', so this third child overlaps not just with the Range observable, but also with the fourth child. Then the fourth observable produces its second 'D'. Then the Range produces its fifth and final value, and the corresponding child observable produces its first 'E'. Then the fourth and fifth child observable alternate, producing 'D', 'E' and 'D', at which point the fourth child observable is complete, and now the fifth child observable produces its final three 'E' values without interruption, because by this time it is the only observable still running. At the bottom of the diagram is the 7th observable representing the output of the SelectMany. This shows all the of the values from each of the 5 child observables each with the exact same horizontal position (signifying that the observable returned by SelectMany produces a value whenever any of its child observables produces a value). So we can see that this output observable produces the sequence 'ABBCCDCDEDEDEEE', which is exactly what we saw in the example output earlier.](GraphicsIntro/Ch06-Transformation-Marbles-Select-Many-Marbles.svg) We can make a small tweak to prevent the child sequences all from trying to run at the same time. (This also uses `Observable.Repeat` instead of the rather indirect route of constructing a `string` and then calling `ToObservable` on that. I did that in earlier examples to emphasize the similarity with the LINQ to Objects example, but you wouldn't really do it that way in Rx.) From cc7c9138f9b90c821a4761ccbb583084465824cc Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Wed, 6 Dec 2023 15:07:51 +0000 Subject: [PATCH 107/142] Ch00 - update or remove broken links in acknowledgements --- content/00_Foreword.md | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/content/00_Foreword.md b/content/00_Foreword.md index b392cb9..2172b8a 100644 --- a/content/00_Foreword.md +++ b/content/00_Foreword.md @@ -74,29 +74,23 @@ generously allowed the Rx.NET project to make use of his content, enabling this new edition to come into existence. I would also like to recognize the people that made this book -possible. Crucial to the first edition of the book, in addition to the author, [Lee Campbell](https://leecampbell.com/), were: -[James Miles](http://enumeratethis.com/), -[Matt Barrett](http://weareadaptive.com/blog/), +possible. +Thanks to everyone at [endjin](endjin.com) and especially [Howard van Rooijen](https://endjin.com/who-we-are/our-people/howard-van-rooijen/) and [Matthew Adams](https://endjin.com/who-we-are/our-people/matthew-adams/) +for funding not only the updates to this book, but also the ongoing development of Rx.NET itself. +(And thanks for employing me too!). Thanks also to [Felix Corke](https://www.linkedin.com/in/blackspike/) for his work on the design elements of the web edition of the book. Crucial to the first edition of the book, in addition to the author, [Lee Campbell](https://leecampbell.com/), were: +James Miles, Matt Barrett, [John Marks](http://johnhmarks.wordpress.com/), Duncan Mole, Cathal Golden, -[Keith Woods](http://keith-woods.com), -[Ray Booysen](http://nondestructiveme.com) & [Olivier DeHeurles](http://odeheurles.com/), +Keith Woods, +Ray Booysen, Olivier DeHeurles, [Matt Davey](http://mdavey.wordpress.com), [Joe Albahari](http://www.albahari.com/) and Gregory Andrien. Extra special thanks to the team at Microsoft that did the hard work and brought us Rx; -[Jeffrey Van Gogh](http://blogs.msdn.com/b/jeffva/), -[Wes Dyer](http://blogs.msdn.com/b/wesdyer/), -[Erik Meijer](http://www.applied-duality.com/) & -[Bart De Smet](http://blogs.bartdesmet.net/bart/). -For this, the second edition of the book, thanks again to Lee Campbell for allowing us to update his content. -Thanks to everyone at [endjin](endjin.com) and especially [Howard van Rooijen](https://endjin.com/who-we-are/our-people/howard-van-rooijen/) and [Matthew Adams](https://endjin.com/who-we-are/our-people/matthew-adams/) -for funding not only the updates to this book, but also the ongoing development of Rx.NET itself. -(And thanks for employing me too!) - -The content of the first edition of this book was originally posted as a series of blog posts at -[http://LeeCampbell.blogspot.com](http://leecampbell.blogspot.co.uk/2010/08/reactive-extensions-for-net.html) -and proved popular enough that Lee reproduced as an e-book. +[Jeffrey Van Gogh](https://www.linkedin.com/in/jeffrey-van-gogh-145673/), +[Wes Dyer](https://www.linkedin.com/in/wesdyer/), +[Erik Meijer](https://en.wikipedia.org/wiki/Erik_Meijer_%28computer_scientist%29) & +[Bart De Smet](https://www.linkedin.com/in/bartdesmet/). The version that this book has been written against is `System.Reactive` version 6.0. From 6b5812bf4dfb70213d59043d23a7119987823b34 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Wed, 6 Dec 2023 15:10:43 +0000 Subject: [PATCH 108/142] Ch00 add reference to https://reaqtive.net/ for Rx history --- content/00_Foreword.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/content/00_Foreword.md b/content/00_Foreword.md index 2172b8a..28b7dc3 100644 --- a/content/00_Foreword.md +++ b/content/00_Foreword.md @@ -90,7 +90,9 @@ Extra special thanks to the team at Microsoft that did the hard work and brought [Jeffrey Van Gogh](https://www.linkedin.com/in/jeffrey-van-gogh-145673/), [Wes Dyer](https://www.linkedin.com/in/wesdyer/), [Erik Meijer](https://en.wikipedia.org/wiki/Erik_Meijer_%28computer_scientist%29) & -[Bart De Smet](https://www.linkedin.com/in/bartdesmet/). +[Bart De Smet](https://www.linkedin.com/in/bartdesmet/). + +If you are interested in more information about the origins of Rx, you might the "A Little History of Reaqtor" at the https://reaqtive.net/ site illuminating. The version that this book has been written against is `System.Reactive` version 6.0. From 9be34dfcfa444c7caddfaeead84209b6a6b80cfe Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Wed, 6 Dec 2023 15:24:33 +0000 Subject: [PATCH 109/142] Ch00 fix more typos, add more links --- content/00_Foreword.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/content/00_Foreword.md b/content/00_Foreword.md index 28b7dc3..63f812f 100644 --- a/content/00_Foreword.md +++ b/content/00_Foreword.md @@ -8,10 +8,10 @@ By Ian Griffiths and Lee Campbell --- Reactive programming is not a new concept. Any kind of user interface development -necessary involves code that responds to events. Languages like Smalltalk, Delphi +necessarily involves code that responds to events. Languages like [Smalltalk](https://en.wikipedia.org/wiki/Smalltalk), [Delphi](https://en.wikipedia.org/wiki/Delphi_(software)) and the .NET languages have popularized reactive or event-driven programming paradigms. -Architectural patterns such as CEP (Complex Event Processing), and -CQRS (Command Query Responsibility Segregation) have events as a fundamental part +Architectural patterns such as [CEP (Complex Event Processing)](https://en.wikipedia.org/wiki/Complex_event_processing), and +[CQRS (Command Query Responsibility Segregation)](https://en.wikipedia.org/wiki/Command_Query_Responsibility_Segregation) have events as a fundamental part of their makeup. Reactive programming is a useful concept in any program that has to deal with things happening. @@ -20,15 +20,15 @@ to deal with things happening. The event driven paradigm allows for code to be invoked without the need for breaking encapsulation or applying expensive polling techniques. There are many common ways to implement this, including -the Observer pattern, events exposed directly in the language (e.g. C#) or +the [Observer pattern](https://en.wikipedia.org/wiki/Observer_pattern), [events exposed directly in the language (e.g. C#)](https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/events/) or other forms of callback via delegate registration. The Reactive Extensions extend the callback metaphor with LINQ to enable querying sequences of events and managing concurrency. The .NET runtime libraries have included the `IObservable` and -`IObserver` interfaces that representing the core concept of reactive programming -for well over a decade now. The Reactive Extensions for .NET are effectively a library of implementations of these -interfaces. Rx.NET implementation first appeared +`IObserver` interfaces that represent the core concept of reactive programming +for well over a decade now. The Reactive Extensions for .NET (Rx.NET) are effectively a library of implementations of these +interfaces. Rx.NET first appeared back in 2010 but since then, Rx libraries have become available for other languages, and this way of programming has become especially popular in JavaScript. @@ -94,7 +94,7 @@ Extra special thanks to the team at Microsoft that did the hard work and brought If you are interested in more information about the origins of Rx, you might the "A Little History of Reaqtor" at the https://reaqtive.net/ site illuminating. -The version that this book has been written against is `System.Reactive` version 6.0. +The version that this book has been written against is `System.Reactive` version 6.0. The source for this book can be found at [https://github.com/dotnet/reactive/tree/main/Rx.NET/Documentation/IntroToRx](https://github.com/dotnet/reactive/tree/main/Rx.NET/Documentation/IntroToRx). If you find any bugs or other issues in this book, please post an issue at https://github.com/dotnet/reactive/. So, fire up Visual Studio and let's get started. From 7d2901abda25a9387385508240e49ae69a0b1cbd Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Wed, 6 Dec 2023 15:38:22 +0000 Subject: [PATCH 110/142] Ch01 and Ch02 - more feedback based updates --- content/01_WhyRx.md | 8 +++++--- content/02_KeyTypes.md | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/content/01_WhyRx.md b/content/01_WhyRx.md index 98430e5..c5f33b2 100644 --- a/content/01_WhyRx.md +++ b/content/01_WhyRx.md @@ -34,6 +34,8 @@ Rx is a powerfully productive development tool. It enables developers to work wi Rx builds on LINQ (Language Integrated Query). This enables us to use the query syntax shown above (or you can use the explicit function call approach that some .NET developers prefer). LINQ is widely used in .NET both for data access (e.g., in Entity Framework Core), but also for working with in-memory collections (with LINQ to Objects), meaning that experienced .NET developers will tend to feel at home with Rx. Crucially, LINQ is a highly composable design: you can connect operators together in any combination you like, expressing potentially complex processing in a straightforward way. This composability arises from the mathematical foundations of its design, but although you can learn about this aspect of LINQ if you want, it's not a prerequisite: developers who aren't interested in the mathematics behind it can just enjoy the fact that LINQ providers such as Rx provide a set of building blocks that can be plugged together in endless different ways, and it all just works. +LINQ has proven track record of handling high very high volumes of data. Microsoft has used it extensively in the internal implementation of some of their systems, including services that support tens of millions of active users. + ## When is Rx appropriate? Rx is designed for processing sequences of events, meaning that it suits some scenarios better than others. The next sections describe some of these scenarios, and also cases in which it is a less obvious match but still worth considering. Finally, we describe some cases in which it is possible to use Rx but where alternatives are likely to be better. @@ -62,9 +64,9 @@ Events might also represent insights derived from incoming events (or historical - [CNC](https://en.wikipedia.org/wiki/Numerical_control) [Milling Machine](https://en.wikipedia.org/wiki/Milling_(machining)) MFZH12's number 4 axis bearing is exhibiting signs of wear at a significantly higher rate than the nominal profile - If the user wants to arrive on time at their meeting half way across town, the current traffic conditions suggest they should leave in the next 10 minutes -These three sets of examples show how applications might progressively increase the value of the information as they process events. We start with raw events, which we then enhance to produce domain-specific events, and we then perform analysis to produce notifications that the application's users will really care about. Each stage of processing increases the value of the messages that emerge. Each stage will typically also reduce the volume of messages. If we presented the raw events in the first category directly to users, they might be overwhelmed by the volume of messages, making it impossible to spot the important events. But if we only present them with notifications when our processing has detected something important, this will enable them to work more efficiently and accurately. +These three sets of examples show how applications might progressively increase the value of the information as they process events. We start with raw events, which we then enhance to produce domain-specific events, and we then perform analysis to produce notifications that the application's users will really care about. Each stage of processing increases the value of the messages that emerge. Each stage will typically also reduce the volume of messages. If we presented the raw events in the first category directly to users, they might be overwhelmed by the volume of messages, making it impossible to spot the important events. But if we only present them with notifications when our processing has detected something important, this will enable them to work more efficiently and accurately, because we have dramatically improved the signal to noise ratio. -The [`System.Reactive` library](https://www.nuget.org/packages/System.Reactive) provides tools for building exactly this kind of value-adding process, in which we tame high-volume raw event sources to produce high-value live insights. It provides a suite of operators that enable our code to express this kind of processing declaratively, as you'll see in subsequent chapters. +The [`System.Reactive` library](https://www.nuget.org/packages/System.Reactive) provides tools for building exactly this kind of value-adding process, in which we tame high-volume raw event sources to produce high-value, live, actionable insights. It provides a suite of operators that enable our code to express this kind of processing declaratively, as you'll see in subsequent chapters. Rx is also well suited for introducing and managing concurrency for the purpose of _offloading_. That is, performing a given set of work concurrently, so that the thread that detected an event doesn't also have to be the thread that handles that event. @@ -89,7 +91,7 @@ Earlier, I mentioned _offloading_: using Rx to push work onto other threads. Alt Rx's `IObservable` is not a replacement for `IEnumerable` or `IAsyncEnumerable`. It would be a mistake to take something that is naturally pull based and force it to be push based. -Also, there are some situations in which the simplicity of Rx's programming model can work against you. For example, although some message queuing technologies such as MSMQ are by definition sequential, and thus might look like a good fit for Rx, these are often chosen for their transaction handling support. Rx does not have any direct way to surface transaction semantics, so in scenarios that require this you might be better off just working directly with the relevant technology's API. +Also, there are some situations in which the simplicity of Rx's programming model can work against you. For example, some message queuing technologies such as MSMQ are by definition sequential, and thus might look like a good fit for Rx. However, they are often chosen for their transaction handling support. Rx does not have any direct way to surface transaction semantics, so in scenarios that require this you might be better off just working directly with the relevant technology's API. By choosing the best tool for the job your code should be easier to maintain, it will likely provide better performance and you will probably get better support. diff --git a/content/02_KeyTypes.md b/content/02_KeyTypes.md index c93c06e..0ebaec7 100644 --- a/content/02_KeyTypes.md +++ b/content/02_KeyTypes.md @@ -48,7 +48,7 @@ public interface IObservable } ``` -You can see [the source for `IObservable` on GitHub](https://github.com/dotnet/runtime/blob/b4008aefaf8e3b262fbb764070ea1dd1abe7d97c/src/libraries/System.Private.CoreLib/src/System/IObservable.cs). Notice that it is part of the .NET runtime libraries, and not the `System.Reactive` NuGet package. `IObservable` represents such a fundamentally important abstraction that it is baked into .NET. (So you might be wondering what the `System.Reactive` NuGet package is for. The .NET runtime libraries define only the `IObservable` and `IObserver` interfaces, and not the LINQ implementation. The Rx NuGet package gives us LINQ support, and also deals with threading.) +You can see [the source for `IObservable` on GitHub](https://github.com/dotnet/runtime/blob/b4008aefaf8e3b262fbb764070ea1dd1abe7d97c/src/libraries/System.Private.CoreLib/src/System/IObservable.cs). Notice that it is part of the .NET runtime libraries, and not the `System.Reactive` NuGet package. `IObservable` represents such a fundamentally important abstraction that it is baked into .NET. (So you might be wondering what the `System.Reactive` NuGet package is for. The .NET runtime libraries define only the `IObservable` and `IObserver` interfaces, and not the LINQ implementation. The `System.Reactive` NuGet package gives us LINQ support, and also deals with threading.) This interface's only method makes it clear what we can do with an `IObservable`: if we want to receive the events it has to offer, we can _subscribe_ to it. (We can also unsubscribe: the `Subscribe` method returns an `IDisposable`, and if we call `Dispose` on that it cancels our subscription.) The `Subscribe` method requires us to pass in an implementation of `IObserver`, which we will get to shortly. From 7670ff5c21d01b7a983438a6eb9a85bae1bdf1f3 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Wed, 6 Dec 2023 15:47:45 +0000 Subject: [PATCH 111/142] Add thanks to open source contributors to Rx. --- content/00_Foreword.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/content/00_Foreword.md b/content/00_Foreword.md index 63f812f..cd26e86 100644 --- a/content/00_Foreword.md +++ b/content/00_Foreword.md @@ -90,7 +90,8 @@ Extra special thanks to the team at Microsoft that did the hard work and brought [Jeffrey Van Gogh](https://www.linkedin.com/in/jeffrey-van-gogh-145673/), [Wes Dyer](https://www.linkedin.com/in/wesdyer/), [Erik Meijer](https://en.wikipedia.org/wiki/Erik_Meijer_%28computer_scientist%29) & -[Bart De Smet](https://www.linkedin.com/in/bartdesmet/). +[Bart De Smet](https://www.linkedin.com/in/bartdesmet/). Thanks also to those who continued to work on Rx.NET after it ceased to be directly supported by Microsoft, and became a community-based open source project. Many people were involved, and it's not practical to list every contributor here, but I'd like to say a particular thank you to Bart De Smet (again, because he continued to work on the open source Rx long after moving onto other things internally at Microsoft) and also to Claire Novotny, Daniel Weber, David Karnok, Brendan Forster, Ani Betts and Chris Pulman. + If you are interested in more information about the origins of Rx, you might the "A Little History of Reaqtor" at the https://reaqtive.net/ site illuminating. From b8c279a88b3d5602a088bfc17cd44b12f721708a Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Wed, 6 Dec 2023 15:50:03 +0000 Subject: [PATCH 112/142] Add link to reactive x slack --- content/00_Foreword.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/00_Foreword.md b/content/00_Foreword.md index cd26e86..f118266 100644 --- a/content/00_Foreword.md +++ b/content/00_Foreword.md @@ -95,7 +95,7 @@ Extra special thanks to the team at Microsoft that did the hard work and brought If you are interested in more information about the origins of Rx, you might the "A Little History of Reaqtor" at the https://reaqtive.net/ site illuminating. -The version that this book has been written against is `System.Reactive` version 6.0. The source for this book can be found at [https://github.com/dotnet/reactive/tree/main/Rx.NET/Documentation/IntroToRx](https://github.com/dotnet/reactive/tree/main/Rx.NET/Documentation/IntroToRx). If you find any bugs or other issues in this book, please post an issue at https://github.com/dotnet/reactive/. +The version that this book has been written against is `System.Reactive` version 6.0. The source for this book can be found at [https://github.com/dotnet/reactive/tree/main/Rx.NET/Documentation/IntroToRx](https://github.com/dotnet/reactive/tree/main/Rx.NET/Documentation/IntroToRx). If you find any bugs or other issues in this book, please post an issue at https://github.com/dotnet/reactive/. You might find the [Reactive X slack](reactivex.slack.com) to be a useful resource if you start using Rx.NET in earnest. So, fire up Visual Studio and let's get started. From 86a23f83565d3931294731871995e90b027da10d Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Wed, 6 Dec 2023 15:50:56 +0000 Subject: [PATCH 113/142] Ch01 mention Reaqtor in paragraph on transactional queues --- content/01_WhyRx.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/01_WhyRx.md b/content/01_WhyRx.md index c5f33b2..4b830f1 100644 --- a/content/01_WhyRx.md +++ b/content/01_WhyRx.md @@ -91,7 +91,7 @@ Earlier, I mentioned _offloading_: using Rx to push work onto other threads. Alt Rx's `IObservable` is not a replacement for `IEnumerable` or `IAsyncEnumerable`. It would be a mistake to take something that is naturally pull based and force it to be push based. -Also, there are some situations in which the simplicity of Rx's programming model can work against you. For example, some message queuing technologies such as MSMQ are by definition sequential, and thus might look like a good fit for Rx. However, they are often chosen for their transaction handling support. Rx does not have any direct way to surface transaction semantics, so in scenarios that require this you might be better off just working directly with the relevant technology's API. +Also, there are some situations in which the simplicity of Rx's programming model can work against you. For example, some message queuing technologies such as MSMQ are by definition sequential, and thus might look like a good fit for Rx. However, they are often chosen for their transaction handling support. Rx does not have any direct way to surface transaction semantics, so in scenarios that require this you might be better off just working directly with the relevant technology's API. (That said, [Reaqtor](https://reaqtive.net/) adds durability and persistence to Rx, so you might be able to use that to integrate these kinds of queueing systems with Rx.) By choosing the best tool for the job your code should be easier to maintain, it will likely provide better performance and you will probably get better support. From e416a06c58e5b0f1730d2ccf177f725b2fc809b7 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Wed, 6 Dec 2023 15:51:39 +0000 Subject: [PATCH 114/142] Ch01 use the word Telemetry to keep Howard happy --- content/01_WhyRx.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/01_WhyRx.md b/content/01_WhyRx.md index 4b830f1..747fd30 100644 --- a/content/01_WhyRx.md +++ b/content/01_WhyRx.md @@ -45,7 +45,7 @@ Rx is designed for processing sequences of events, meaning that it suits some sc Rx is well suited to representing events that originate from outside of your code, and which your application needs to respond to, such as: - Integration events like a broadcast from a message bus, or a push event from WebSockets API, or a message received via MQTT or other low latency middleware like [Azure Event Grid](https://azure.microsoft.com/en-gb/products/event-grid/), [Azure Event Hubs](https://azure.microsoft.com/en-gb/products/event-hubs/) and [Azure Service Bus](https://azure.microsoft.com/en-gb/products/service-bus/), or a non-vendor specific representation such as [cloudevents](https://cloudevents.io/) -- Reports from monitoring devices such as a flow sensor in a water utility's infrastructure, or the monitoring and diagnostic features in a broadband provider's networking equipment +- Telemetry from monitoring devices such as a flow sensor in a water utility's infrastructure, or the monitoring and diagnostic features in a broadband provider's networking equipment - Location data from mobile systems such as [AIS](https://github.com/ais-dotnet/) messages from ships, or automotive telemetry - Operating system events such as filesystem activity, or WMI events - Road traffic information, such as notifications of accidents or changes in average speed From 0f77004a57f104a913aa06716af44fde0f7463c3 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Wed, 6 Dec 2023 15:53:10 +0000 Subject: [PATCH 115/142] Ch16 fix some typos --- content/16_TestingRx.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/16_TestingRx.md b/content/16_TestingRx.md index 5440ad7..168c7eb 100644 --- a/content/16_TestingRx.md +++ b/content/16_TestingRx.md @@ -442,7 +442,7 @@ These two tests ensure five things: * That the `Price` property has prices added to it as the model produces them * That the sequence is subscribed to on the ThreadPool -* That the `Price` property is updated on the Dispatcher i.e. the sequenceis observed on the Dispatcher +* That the `Price` property is updated on the Dispatcher i.e. the sequence is observed on the Dispatcher * That a timeout of 10 seconds between prices will set the ViewModel to disconnected * The tests run fast. @@ -469,7 +469,7 @@ The `TestScheduler` provides further advanced features. These can be useful when ### `Start(Func>)` -There are three overloads to `Start`, which are used to start an observablesequence at a given time, record the notifications it makes and dispose of the subscription at a given time. This can be confusing at first, as the parameterless overload of `Start` is quite unrelated. These three overloads return an `ITestableObserver` which allows you to record the notifications from an observable sequence, much like the `Materialize` method we saw in the [Transformation chapter](06_Transformation.md#materialize-and-dematerialize). +There are three overloads to `Start`, which are used to start an observable sequence at a given time, record the notifications it makes and dispose of the subscription at a given time. This can be confusing at first, as the parameterless overload of `Start` is quite unrelated. These three overloads return an `ITestableObserver` which allows you to record the notifications from an observable sequence, much like the `Materialize` method we saw in the [Transformation chapter](06_Transformation.md#materialize-and-dematerialize). ```csharp public interface ITestableObserver : IObserver From d063ab35095b53f2438899a768576234186adb75 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Wed, 6 Dec 2023 15:53:56 +0000 Subject: [PATCH 116/142] App D - fix "howeever" typo --- content/D_AlgebraicUnderpinnings.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/D_AlgebraicUnderpinnings.md b/content/D_AlgebraicUnderpinnings.md index bc5a855..d7b444d 100644 --- a/content/D_AlgebraicUnderpinnings.md +++ b/content/D_AlgebraicUnderpinnings.md @@ -460,7 +460,7 @@ So in essence, we're supplying a bunch of different ways to process the input, a Where it gets slightly more weird (and where Rx departs from the original definition of `amb`) is when more than one of an ambiguous function's constituents produces a result. In McCarthy's theoretical formulation, the ambiguous function effectively produces all of the results as possible outputs. (This is technically known as _nondeterministic_ computation, although that name can be misleading: it makes it sound like the result will be unpredictable. But that's not what we mean by _nondeterministic_ when talking about computation. It is as though the computer evaluating the ambiguous function clones itself, producing a copy for each possible result, continuing to execute every single copy. You could imagine an multithreaded implementation of such a system, where every time an ambiguous function produces multiple possible results, we create that many new threads so as to be able to evaluate all possible outcomes. This is a reasonable mental model for nondeterministic computation, but it's not what actually happens with Rx's `Amb` operator.) In the kinds of theoretical work ambiguous functions were introduced for, the ambiguity often vanishes in the end. There may have been an enormous number of ways in which a computation could have proceeded, but they might all, finally, produce the same result. However, such theoretical concerns are taking us away from what Rx's `Amb` does, and how we might use it in practice. -[Rx's `Amb`](09_CombiningSequences.md#amb) provides the behaviour described in the cases where either none of the inputs produces anything, or exactly one of them does. Howeever, it makes no attempt to support non-deterministic computation, so its handling of the case where multiple constituents are able to produce value is oversimplified, but then McCarthy's `amb` was first and foremost an analytical construct, so any practical implementation of it is always going to fall short. +[Rx's `Amb`](09_CombiningSequences.md#amb) provides the behaviour described in the cases where either none of the inputs produces anything, or exactly one of them does. However, it makes no attempt to support non-deterministic computation, so its handling of the case where multiple constituents are able to produce value is oversimplified, but then McCarthy's `amb` was first and foremost an analytical construct, so any practical implementation of it is always going to fall short. ## Staying inside the monad From 0a0b3d801a51a76525dbe86242f09ac914163763 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Wed, 6 Dec 2023 15:56:21 +0000 Subject: [PATCH 117/142] Change "favor" to UK spelling --- content/C_UsageGuidelines.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/C_UsageGuidelines.md b/content/C_UsageGuidelines.md index 8574d8e..d3413a7 100644 --- a/content/C_UsageGuidelines.md +++ b/content/C_UsageGuidelines.md @@ -11,7 +11,7 @@ This is a list of quick guidelines intended to help you when writing Rx queries. - Always provide an `OnError` handler. - Avoid blocking operators such as `First`, `FirstOrDefault`, `Last`, `LastOrDefault`, `Single`, `SingleOrDefault` and `ForEach`.; use the non-blocking alternative such as `FirstAsync`. - Avoid switching back and forth between `IObservable` and `IEnumerable` -- Favor lazy evaluation over eager evaluation. +- Favour lazy evaluation over eager evaluation. - Break large queries up into parts. Key indicators of a large query: 1. nesting 2. over 10 lines of query expression syntax @@ -20,7 +20,7 @@ This is a list of quick guidelines intended to help you when writing Rx queries. - Avoid creating side effects. If you really can't avoid it, don't bury the side effects in callbacks for operators designed to be use functionally such as `Select` or `Where`. be explicit by using the `Do` operator. - Where possible, prefer `Observable.Create` to subjects as a means of defining new Rx sources. - Avoid creating your own implementations of the `IObservable` interface. Use `Observable.Create` (or subjects if you really need to). -- Avoid creating your own implementations of the `IObserver` interface. Favor using the `Subscribe` extension method overloads instead. +- Avoid creating your own implementations of the `IObserver` interface. Favour using the `Subscribe` extension method overloads instead. - The application should define the concurrency model. - If you need to schedule deferred work, use schedulers - The `SubscribeOn` and `ObserveOn` operators should always be right before a `Subscribe` method. (So don't sandwich it, e.g. `source.SubscribeOn(s).Where(x => x.Foo)`.) \ No newline at end of file From 19a14caae462303d8f75bcb14d8819a0fb597018 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Wed, 6 Dec 2023 16:05:37 +0000 Subject: [PATCH 118/142] Add thanks to .NET Foundation and Richard Lander --- content/00_Foreword.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/00_Foreword.md b/content/00_Foreword.md index f118266..4f78b73 100644 --- a/content/00_Foreword.md +++ b/content/00_Foreword.md @@ -90,7 +90,7 @@ Extra special thanks to the team at Microsoft that did the hard work and brought [Jeffrey Van Gogh](https://www.linkedin.com/in/jeffrey-van-gogh-145673/), [Wes Dyer](https://www.linkedin.com/in/wesdyer/), [Erik Meijer](https://en.wikipedia.org/wiki/Erik_Meijer_%28computer_scientist%29) & -[Bart De Smet](https://www.linkedin.com/in/bartdesmet/). Thanks also to those who continued to work on Rx.NET after it ceased to be directly supported by Microsoft, and became a community-based open source project. Many people were involved, and it's not practical to list every contributor here, but I'd like to say a particular thank you to Bart De Smet (again, because he continued to work on the open source Rx long after moving onto other things internally at Microsoft) and also to Claire Novotny, Daniel Weber, David Karnok, Brendan Forster, Ani Betts and Chris Pulman. +[Bart De Smet](https://www.linkedin.com/in/bartdesmet/). Thanks also to those who continued to work on Rx.NET after it ceased to be directly supported by Microsoft, and became a community-based open source project. Many people were involved, and it's not practical to list every contributor here, but I'd like to say a particular thank you to Bart De Smet (again, because he continued to work on the open source Rx long after moving onto other things internally at Microsoft) and also to Claire Novotny, Daniel Weber, David Karnok, Brendan Forster, Ani Betts and Chris Pulman. We are also grateful to Richard Lander and the .NET Foundation for helping us at [endjin](https://endjin.com) take ownership of the Rx.NET project, enabling it to continue to thrive. If you are interested in more information about the origins of Rx, you might the "A Little History of Reaqtor" at the https://reaqtive.net/ site illuminating. From 24d92f6d465805c0ca930a411ff89a54225dfc3c Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Wed, 6 Dec 2023 16:05:51 +0000 Subject: [PATCH 119/142] Remove spurious '.' in bullet list --- content/03_CreatingObservableSequences.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/03_CreatingObservableSequences.md b/content/03_CreatingObservableSequences.md index 8d8f17c..5d4d8e6 100644 --- a/content/03_CreatingObservableSequences.md +++ b/content/03_CreatingObservableSequences.md @@ -898,7 +898,7 @@ Although they are conceptually similar, `Task` does a few things differently - if the task is [Cancelled](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.taskstatus#system-threading-tasks-taskstatus-canceled), `IObservable` invoke a subscriber's `OnError` passing a `TaskCanceledException` - if the task is [Faulted](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.taskstatus#system-threading-tasks-taskstatus-faulted) then the sequence will error with the task's inner exception -- if the task is not yet in a final state (neither [Cancelled](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.taskstatus#system-threading-tasks-taskstatus-canceled), [Faulted](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.taskstatus#system-threading-tasks-taskstatus-faulted), or [RanToCompletion](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.taskstatus#system-threading-tasks-taskstatus-rantocompletion)), the `IObservable` will not produce any notifications until such time as the task does enter one of these final states. +- if the task is not yet in a final state (neither [Cancelled](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.taskstatus#system-threading-tasks-taskstatus-canceled), [Faulted](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.taskstatus#system-threading-tasks-taskstatus-faulted), or [RanToCompletion](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.taskstatus#system-threading-tasks-taskstatus-rantocompletion)), the `IObservable` will not produce any notifications until such time as the task does enter one of these final states It does not matter whether the task is already in a final state at the moment that you call `ToObservable`. If it has finished, `ToObservable` will just return a sequence representing that state. (In fact, it uses either the `Return` or `Throw` creation methods you saw earlier.) If the task has not yet finished, `ToObservable` will attach a continuation to the task to detect the outcome once it does complete. From 2bcaf839aace8811cd1e862e23c7011f3f39295f Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Wed, 6 Dec 2023 16:35:19 +0000 Subject: [PATCH 120/142] Ch03 responding to mwa's feedback --- content/03_CreatingObservableSequences.md | 46 ++++++++++++----------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/content/03_CreatingObservableSequences.md b/content/03_CreatingObservableSequences.md index 5d4d8e6..6956333 100644 --- a/content/03_CreatingObservableSequences.md +++ b/content/03_CreatingObservableSequences.md @@ -280,7 +280,7 @@ IObservable changes = Observable watcher.EnableRaisingEvents = true; ``` -Here we're using the `FromEventPattern` helper from the `System.Reactive` library's `Observable` class, which can be used to build an `IObservable` from any .NET event that conforms the the normal pattern (in which event handlers take two arguments: a sender of type `object`, and then some `EventArgs`-derived type containing information about the event). This is not as flexible as the earlier example. It reports only one of the events, and we have to manually start (and, if necessary stop) the `FileSystemWatcher`. But for some applications that will be good enough, and this is a lot less code to write. If we were aiming to write a fully-featured wrapper for `FileSystemWatcher` suitable for many different scenarios, it might be worth writing a specialized `IObservable` implementation as shown earlier. (We could easily extend this last example to watch all of the events. We'd just use the `FromEventPattern` once for each event, and then use `Observable.Merge` to combine the four resulting observables into one. The only real benefit we're getting from a full custom implementation is that we can automatically start and stop the `FileSystemWatcher` depending on whether there are currently any observers.) But if we just need to represent some events as an `IObservable` so that we can work with them in our application, we can just use this simpler approach. +Here we're using the `FromEventPattern` helper from the `System.Reactive` library's `Observable` class, which can be used to build an `IObservable` from any .NET event that conforms to the normal pattern (in which event handlers take two arguments: a sender of type `object`, and then some `EventArgs`-derived type containing information about the event). This is not as flexible as the earlier example. It reports only one of the events, and we have to manually start (and, if necessary stop) the `FileSystemWatcher`. But for some applications that will be good enough, and this is a lot less code to write. If we were aiming to write a fully-featured wrapper for `FileSystemWatcher` suitable for many different scenarios, it might be worth writing a specialized `IObservable` implementation as shown earlier. (We could easily extend this last example to watch all of the events. We'd just use the `FromEventPattern` once for each event, and then use `Observable.Merge` to combine the four resulting observables into one. The only real benefit we're getting from a full custom implementation is that we can automatically start and stop the `FileSystemWatcher` depending on whether there are currently any observers.) But if we just need to represent some events as an `IObservable` so that we can work with them in our application, we can just use this simpler approach. In practice, we almost always get `System.Reactive` to implement `IObservable` for us. Even if we want to take control of certain aspects (such as automatically starting up and shutting down the `FileSystemWatcher` in these examples) we can almost always find a combination of operators that enable this. The following code uses various methods from `System.Reactive` to return an `IObservable` that has all the same functionality as the fully-featured hand-written `RxFsEventsMultiSubscriber` above, but with considerably less code. @@ -333,7 +333,7 @@ I've used a lot of methods there, most of which I've not talked about before. Fo ## Simple factory methods -Due to the large number of methods available for creating observable sequences, we will break them down into categories. Our first category of methods create `IObservable` sequences produce at most a single result. +Due to the large number of methods available for creating observable sequences, we will break them down into categories. Our first category of methods create `IObservable` sequences that produce at most a single result. ### Observable.Return @@ -343,13 +343,13 @@ One of the simplest factory methods is `Observable.Return(T value)`, which yo IObservable singleValue = Observable.Return("Value"); ``` -I specified the type parameter for clarity, but this is not necessary as the compiler can inferred the type from argument provided: +I specified the type parameter for clarity, but this is not necessary as the compiler can infer the type from argument provided: ```csharp IObservable singleValue = Observable.Return("Value"); ``` -`Return` produces a cold observable: each subscriber will receive the value immediately upon subscription. +`Return` produces a cold observable: each subscriber will receive the value immediately upon subscription. ([Hot and cold observables](02_KeyTypes.md#hot-and-cold-sources) were described in the preceding chapter.) ### Observable.Empty @@ -373,7 +373,7 @@ IObservable never = Observable.Never(); It might not seem obvious why this could be useful. I gave one possible use in the last chapter: you could use this in a test to simulate a source that wasn't producing any values, perhaps to enable your test to validate timeout logic. -It can also be used in places where we use observables to represent time-based information. Sometimes we don't actually care what emerges from an observable; we might care only _when_ something (anything) happens. (We saw an example of this "observable sequence used purely for timing purposes" concept in the preceding chapter, although `Never` wouldn't make sense in that particular scenario. The `Quiescent` example used the `Buffer` operator, which works over two observable sequences: the first contains the items of interest, and the second is used purely to determine how to cut the first into chunks. `Buffer` doesn't do anything with the values produced by the second observable: it pays attention only to _when_ value emerge, completing the previous chunk each time the second observable produces a value. And if we're representing temporal information it can sometimes be useful to have a way to represent the idea that some event never occurs.) +It can also be used in places where we use observables to represent time-based information. Sometimes we don't actually care what emerges from an observable; we might care only _when_ something (anything) happens. (We saw an example of this "observable sequence used purely for timing purposes" concept in the preceding chapter, although `Never` wouldn't make sense in that particular scenario. The `Quiescent` example used the `Buffer` operator, which works over two observable sequences: the first contains the items of interest, and the second is used purely to determine how to cut the first into chunks. `Buffer` doesn't do anything with the values produced by the second observable: it pays attention only to _when_ values emerge, completing the previous chunk each time the second observable produces a value. And if we're representing temporal information it can sometimes be useful to have a way to represent the idea that some event never occurs.) As an example of where you might want to use `Never` for timing purposes, suppose you were using some Rx-based library that offered a timeout mechanism, where an operation would be cancelled when some timeout occurs, and the timeout is itself modelled as an observable sequence. If for some reason you didn't want a timeout, and just want to wait indefinitely, you could specify a timeout of `Observable.Never`. @@ -383,9 +383,6 @@ As an example of where you might want to use `Never` for timing purposes, suppos ```csharp IObservable throws = Observable.Throw(new Exception()); -// Behaviorally equivalent to -var subject = new ReplaySubject(); -subject.OnError(new Exception()); ``` ### Observable.Create @@ -403,16 +400,17 @@ public static IObservable Create( {...} ``` -You provide this with a delegate that will be executed each time a subscription is made. Your delegate will be passed an `IObserver`. Logically speaking, this represents the observer passed to the `Subscribe` method, although in practice Rx puts a wrapper around that for various reasons. You can call the `OnNext`/`OnError`/`OnCompleted` methods as you need. This is one of the few scenarios where you will work directly with the `IObserver` interface. Here's a simple example that produces two items: +You provide this with a delegate that will be executed each time a subscription is made. Your delegate will be passed an `IObserver`. Logically speaking, this represents the observer passed to the `Subscribe` method, although in practice Rx puts a wrapper around that for various reasons. You can call the `OnNext`/`OnError`/`OnCompleted` methods as you need. This is one of the few scenarios where you will work directly with the `IObserver` interface. Here's a simple example that produces three items: ```csharp -private IObservable SomeLetters() +private IObservable SomeNumbers() { - return Observable.Create( + return Observable.Create( (IObserver observer) => { - observer.OnNext("a"); - observer.OnNext("b"); + observer.OnNext(1); + observer.OnNext(2); + observer.OnNext(3); observer.OnCompleted(); return Disposable.Empty; @@ -446,7 +444,9 @@ IObservable KeyPresses() => This illustrates how cancellation won't necessarily take effect immediately. The `Console.ReadKey` API does not offer an overload accepting a `CancellationToken`, so this observable won't be able to detect that cancellation is requested until the user next presses a key, causing `ReadKey` to return. -Bearing in mind that cancellation might have been requested while we were waiting for `ReadKey` to return, you might think we should check for that after `ReadKey` returns and before calling `OnNext`. In fact it doesn't matter if we don't, because Rx ensures that you can't break the rule that says an observable source must not call into an observer after a call to `Dispose` on that observer's subscription returns. This is one reason why the `IObserver` it passes to you is a wrapper: if you continue to call methods on that `IObserver` after a request to unsubscribe, Rx just ignores the calls. This means there are two important things to be aware of: if you _do_ ignore attempts to unsubscribe and continue to do work to produce items, you are just wasting time because nothing will receive those items; if you call `OnError` it's possible that nothing is listening and that the error will be completely ignored. +Bearing in mind that cancellation might have been requested while we were waiting for `ReadKey` to return, you might think we should check for that after `ReadKey` returns and before calling `OnNext`. In fact it doesn't matter if we don't. Rx has a rule that says an observable source _must not_ call into an observer _after_ a call to `Dispose` on that observer's subscription returns. To enforce that rule, if the callback you pass to `Observable.Create` continues to call methods on its `IObserver` after a request to unsubscribe, Rx just ignores the call. This is one reason why the `IObserver` it passes to you is a wrapper: it can intercept the calls before they are passed to the underlying observer. However, that convenience means there are two important things to be aware of +1. if you _do_ ignore attempts to unsubscribe and continue to do work to produce items, you are just wasting time because nothing will receive those items +2. if you call `OnError` it's possible that nothing is listening and that the error will be completely ignored. There are overloads of `Create` designed to support `async` methods. This next method exploits this to be able to use the asynchronous `ReadLineAsync` method to present lines of text from a file as an observable source. @@ -712,7 +712,7 @@ Once subscribed, you must dispose of your subscription to stop the sequence, bec ### Observable.Timer -The second factory method for producing constant time based sequences is `Observable.Timer`. It has several overloads. The most basic one takes just a `TimeSpan` as `Observable.Interval` does. The `Observable.Timer` will however only publish one value (the number 0) after the period of time has elapsed, and then it will complete. +The second factory method for producing constant time based sequences is `Observable.Timer`. It has several overloads. The most basic one takes just a `TimeSpan` as `Observable.Interval` does. But unlike `Observable.Interval`, `Observable.Timer` will publish exactly one value (the number 0) after the period of time has elapsed, and then it will complete. ```cs var timer = Observable.Timer(TimeSpan.FromSeconds(1)); @@ -880,7 +880,7 @@ The downside is that this is a pretty cumbersome bit of code to write. If you've Not only has that second-class status meant we couldn't just pass the event itself as an argument, it has also meant that we've had to state type arguments explicitly. The relationship between an event's delegate type (`FileSystemEventHandler` in this example) and its event argument type (`FileSystemEventArgs` here) is, in general, not something that C#'s type inference can determine automatically, which is why we've had to specify both types explicitly. (Events that use the generic `EventHandler` type are more amenable to type inference, and can use a slightly less verbose version of `FromEventPattern`. Unfortunately, relatively few events actually use that. Some events provide no information besides the fact that something just happened, and use the base `EventHandler` type, and for those kinds of events, you can in fact omit the type arguments completely, making the code slightly less ugly. You still need to provide the add and remove callbacks though.) -Notice that the return type of `FromEventPattern` in this example is `IObservable>`. The `EventPattern` type encapsulates the information that the event passes to handlers. Most .NET events follow a common pattern in which handler methods take two arguments: an `object sender`, which just tells you which object raised the event (useful if you attach one event handler to multiple objects) and then a second argument of some type derived from `EventArgs` that provides information about the event. `EventPattern` just packages these two arguments into a single object that offers `Sender` and `EventArgs` properties. In cases where you don't in fact want to attach one handler to multiple sources, you only really need that `EventArgs` property, which is why the earlier `FileSystemWatcher` examples went on to extract that just that, to get a simpler result of type `IObservable`. It did this with the `Select` operator, which we'll get to in more detail later: +Notice that the return type of `FromEventPattern` in this example is `IObservable>`. The `EventPattern` type encapsulates the information that the event passes to handlers. Most .NET events follow a common pattern in which handler methods take two arguments: an `object sender`, which just tells you which object raised the event (useful if you attach one event handler to multiple objects) and then a second argument of some type derived from `EventArgs` that provides information about the event. `EventPattern` just packages these two arguments into a single object that offers `Sender` and `EventArgs` properties. In cases where you don't in fact want to attach one handler to multiple sources, you only really need that `EventArgs` property, which is why the earlier `FileSystemWatcher` examples went on to extract just that, to get a simpler result of type `IObservable`. It did this with the `Select` operator, which we'll get to in more detail later: ```cs IObservable changes = changeEvents.Select(ep => ep.EventArgs); @@ -890,14 +890,14 @@ It is very common to want to expose property changed events as observable sequen ### From Task -The `Task` and `Task` types are very widely used in .NET. Mainstream .NET languages have built-in support for working with them (e.g., C#'s `async` and `await` keywords). There's some conceptual overlap between tasks an `IObservable`: both represent some sort of work that might take a while to complete. There is a sense in which an `IObservable` is a generalization of a `Task`: both represent potentially long-running work, but an `IObservable` can produce multiple results whereas `Task` can produce just one. +The `Task` and `Task` types are very widely used in .NET. Mainstream .NET languages have built-in support for working with them (e.g., C#'s `async` and `await` keywords). There's some conceptual overlap between tasks and `IObservable`: both represent some sort of work that might take a while to complete. There is a sense in which an `IObservable` is a generalization of a `Task`: both represent potentially long-running work, but an `IObservable` can produce multiple results whereas `Task` can produce just one. Since `IObservable` is the more general abstraction, we should be able to represent a `Task` as an `IObservable`. Rx defines various extension methods for `Task` and `Task` to do this. These methods are all called `ToObservable()`, and it offers various overloads offering control of the details where required, and simplicity for the most common scenarios. Although they are conceptually similar, `Task` does a few things differently in the details. For example, you can retrieve its [`Status` property](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.task.status), which might report that it is in a cancelled or faulted state. `IObservable` doesn't provide a way to ask a source for its state; it just tells you things. So `ToObservable` makes some decisions about how to present status in a way that makes makes sense in an Rx world: -- if the task is [Cancelled](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.taskstatus#system-threading-tasks-taskstatus-canceled), `IObservable` invoke a subscriber's `OnError` passing a `TaskCanceledException` -- if the task is [Faulted](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.taskstatus#system-threading-tasks-taskstatus-faulted) then the sequence will error with the task's inner exception +- if the task is [Cancelled](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.taskstatus#system-threading-tasks-taskstatus-canceled), `IObservable` invokes a subscriber's `OnError` passing a `TaskCanceledException` +- if the task is [Faulted](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.taskstatus#system-threading-tasks-taskstatus-faulted) `IObservable` invokes a subscriber's `OnError` passing the task's inner exception - if the task is not yet in a final state (neither [Cancelled](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.taskstatus#system-threading-tasks-taskstatus-canceled), [Faulted](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.taskstatus#system-threading-tasks-taskstatus-faulted), or [RanToCompletion](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.taskstatus#system-threading-tasks-taskstatus-rantocompletion)), the `IObservable` will not produce any notifications until such time as the task does enter one of these final states It does not matter whether the task is already in a final state at the moment that you call `ToObservable`. If it has finished, `ToObservable` will just return a sequence representing that state. (In fact, it uses either the `Return` or `Throw` creation methods you saw earlier.) If the task has not yet finished, `ToObservable` will attach a continuation to the task to detect the outcome once it does complete. @@ -996,7 +996,9 @@ public static IObservable ToObservableOversimplified(this IEnumerable s } ``` -This crude implementation conveys the basic idea, but it is naive. It does not attempt to handle unsubscription, and it's not easy to fix that when using `Observable.Create` for this particular scenario. And as we will see later in the book, Rx sources that might try to deliver large numbers of events in quick succession should integrated with Rx's concurrency model. The implementation that Rx supplies does of course cater for all of these tricky details. That makes it rather more complex, but that's Rx's problem; you can think of it as being logically equivalent to the code shown above, but without the shortcomings. +This crude implementation conveys the basic idea, but it is naive. It does not attempt to handle unsubscription, and it's not easy to fix that when using `Observable.Create` for this particular scenario. And as we will see later in the book, Rx sources that might try to deliver large numbers of events in quick succession should integrate with Rx's concurrency model. The implementation that Rx supplies does of course cater for all of these tricky details. That makes it rather more complex, but that's Rx's problem; you can think of it as being logically equivalent to the code shown above, but without the shortcomings. + +In fact this is a recurring theme throughout Rx.NET. Many of the built-in operators are useful not because they do something particularly complicated, but because they deal with many subtle and tricky issues for you. You should always try to find something built into Rx.NET that does what you need before considering rolling your own solution. When transitioning from `IEnumerable` to `IObservable`, you should carefully consider what you are really trying to achieve. Consider that the blocking synchronous (pull) nature of `IEnumerable` does always not mix well with the asynchronous (push) nature of `IObservable`. As soon as something subscribes to an `IObservable` created in this way, it is effectively asking to iterate over the `IEnumerable`, immediately producing all of the values. The call to `Subscribe` might not return until it has reached the end of the `IEnumerable`, making it similar to the very simple example shown [at the start of this chapter](#a-very-basic-iobservablet-implementation). (I say "might" because as we'll see when we get to schedulers, the exact behaviour depends on the context.) `ToObservable` can't work magic—something somewhere has to execute what amounts to a `foreach` loop. @@ -1152,7 +1154,7 @@ Sub1: 3 Sub2: 3 ``` -There's an obvious potential problem here: if `ReplaySubject` remembers every value published to it, we mustn't use with endless event sources, because it will eventually cause us to run out of memory. +There's an obvious potential problem here: if `ReplaySubject` remembers every value published to it, we mustn't use it with endless event sources, because it will eventually cause us to run out of memory. `ReplaySubject` offers constructors that accept simple cache expiry settings that can limit memory consumption. One option is to specify the maximum number of item to remember. This next example creates a `ReplaySubject` with a buffer size of 2: @@ -1197,7 +1199,7 @@ Similarly, if you call `OnError`, all current observers will receive an `OnError ## `AsyncSubject` -`AsyncSubject` provides all observers with the final value it receives. Since it can't know which is the final value until `OnCompleted` is called, it will not invoke any methods on any of its subscribers until either its `OnCompleted` or `OnError` method is called. (If `OnError` is called, it just forwards that to all current and future subscribers.) +`AsyncSubject` provides all observers with the final value it receives. Since it can't know which is the final value until `OnCompleted` is called, it will not invoke any methods on any of its subscribers until either its `OnCompleted` or `OnError` method is called. (If `OnError` is called, it just forwards that to all current and future subscribers.) You will often use this subject indirectly, because it is the basis of [Rx's integration with the `await` keyword](13_LeavingIObservable.md#integration-with-async-and-await). (When you `await` an observable sequence, the `await` returns the final value emitted by the source.) If no calls were made to `OnNext` before `OnCompleted` then there was no final value, so it will just complete any observers without providing a value. From 442dfd51f7ed31adc7fc8c3b052b3e7a17e5071e Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Wed, 6 Dec 2023 16:37:24 +0000 Subject: [PATCH 121/142] Ch03 fix another typo --- content/03_CreatingObservableSequences.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/03_CreatingObservableSequences.md b/content/03_CreatingObservableSequences.md index 6956333..5f8bed6 100644 --- a/content/03_CreatingObservableSequences.md +++ b/content/03_CreatingObservableSequences.md @@ -297,7 +297,7 @@ IObservable ObserveFileSystem(string folder) return Observable.Return(fsw); }) - // Once the preceding parts emits the FileSystemWatcher + // Once the preceding part emits the FileSystemWatcher // (which will happen when someone first subscribes), we // want to wrap all the events as IObservables, for which // we'll use a projection. To avoid ending up with an From 5abacf6a424b90b0de9258a330e88d7b05a86938 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Wed, 6 Dec 2023 16:39:28 +0000 Subject: [PATCH 122/142] Change "ownership" to "stewards" --- content/00_Foreword.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/00_Foreword.md b/content/00_Foreword.md index 4f78b73..0164503 100644 --- a/content/00_Foreword.md +++ b/content/00_Foreword.md @@ -90,7 +90,7 @@ Extra special thanks to the team at Microsoft that did the hard work and brought [Jeffrey Van Gogh](https://www.linkedin.com/in/jeffrey-van-gogh-145673/), [Wes Dyer](https://www.linkedin.com/in/wesdyer/), [Erik Meijer](https://en.wikipedia.org/wiki/Erik_Meijer_%28computer_scientist%29) & -[Bart De Smet](https://www.linkedin.com/in/bartdesmet/). Thanks also to those who continued to work on Rx.NET after it ceased to be directly supported by Microsoft, and became a community-based open source project. Many people were involved, and it's not practical to list every contributor here, but I'd like to say a particular thank you to Bart De Smet (again, because he continued to work on the open source Rx long after moving onto other things internally at Microsoft) and also to Claire Novotny, Daniel Weber, David Karnok, Brendan Forster, Ani Betts and Chris Pulman. We are also grateful to Richard Lander and the .NET Foundation for helping us at [endjin](https://endjin.com) take ownership of the Rx.NET project, enabling it to continue to thrive. +[Bart De Smet](https://www.linkedin.com/in/bartdesmet/). Thanks also to those who continued to work on Rx.NET after it ceased to be directly supported by Microsoft, and became a community-based open source project. Many people were involved, and it's not practical to list every contributor here, but I'd like to say a particular thank you to Bart De Smet (again, because he continued to work on the open source Rx long after moving onto other things internally at Microsoft) and also to Claire Novotny, Daniel Weber, David Karnok, Brendan Forster, Ani Betts and Chris Pulman. We are also grateful to Richard Lander and the .NET Foundation for helping us at [endjin](https://endjin.com) become the new stewards of the Rx.NET project, enabling it to continue to thrive. If you are interested in more information about the origins of Rx, you might the "A Little History of Reaqtor" at the https://reaqtive.net/ site illuminating. From e852897a96db3cab93c02cbaef16f5d9131bd4b7 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Wed, 13 Dec 2023 16:24:37 +0000 Subject: [PATCH 123/142] Add sequence diagram to Ch03 --- content/03_CreatingObservableSequences.md | 14 +- .../GraphicsIntro/Ch03-Creating-Marbles.ai | 1677 +++++++++++++++++ .../Ch03-Sequence-CreateWrappers.md | 21 + .../Ch03-Sequence-CreateWrappers.svg | 1 + 4 files changed, 1710 insertions(+), 3 deletions(-) create mode 100644 content/GraphicsIntro/Ch03-Creating-Marbles.ai create mode 100644 content/GraphicsIntro/Ch03-Sequence-CreateWrappers.md create mode 100644 content/GraphicsIntro/Ch03-Sequence-CreateWrappers.svg diff --git a/content/03_CreatingObservableSequences.md b/content/03_CreatingObservableSequences.md index 5f8bed6..8030e1f 100644 --- a/content/03_CreatingObservableSequences.md +++ b/content/03_CreatingObservableSequences.md @@ -388,7 +388,7 @@ IObservable throws = Observable.Throw(new Exception()); ### Observable.Create The `Create` factory method is more powerful than the other creation methods because it can be used to create any kind of sequence. You could implement any of the preceding four methods with `Observable.Create`. -The method signature itself may seem more complex than necessary at first, but becomes quite natural once you have used it. +The method signature itself may seem more complex than necessary at first, but becomes quite natural once you are used to it. ```csharp // Creates an observable sequence from a specified Subscribe method implementation. @@ -418,11 +418,19 @@ private IObservable SomeNumbers() } ``` + Your delegate must return either an `IDisposable` or an `Action` to enable unsubscription. When the subscriber disposes their subscription in order to unsubscribe, Rx will invoke `Dispose()` on the `IDisposable` you returned, or in the case where you returned an `Action`, it will invoke that. -This example is reminiscent of the `MySequenceOfNumbers` example from the start of this chapter, in that it immediately produces a few fixed values. The main difference in this case is that Rx adds some wrappers that can handle awkward situations such as re-entrancy. Rx will sometimes automatically defer work to prevent deadlocks, so it's possible that code consuming the `IObservable` returned by this method will see a call to `Subscribe` return before the callback in the code above runs, in which case it would be possible for them to unsubscribe inside their `OnNext` handler. (In the `MySequenceOfNumbers` case that can't actually happen because that doesn't return an `IDisposable` until after it has finished producing all values. This might look like it would do the same, but the `IDisposable` we return isn't necessarily the one the subscriber sees, and in cases where deferred execution is occurring, the subscriber may well already have an `IDisposable` in hand by the time we call `OnNext`.) +This example is reminiscent of the `MySequenceOfNumbers` example from the start of this chapter, in that it immediately produces a few fixed values. The main difference in this case is that Rx adds some wrappers that can handle awkward situations such as re-entrancy. Rx will sometimes automatically defer work to prevent deadlocks, so it's possible that code consuming the `IObservable` returned by this method will see a call to `Subscribe` return before the callback in the code above runs, in which case it would be possible for them to unsubscribe inside their `OnNext` handler. + +The following sequence diagram shows how this could occur in practice. Suppose the `IObservable` returned by `SomeNumbers` has been wrapped by Rx in a way that ensures that subscription occurs in some different execution context. We'd typically determine the context by using a suitable [scheduler](11_SchedulingAndThreading.md#schedulers). (The [`SubscribeOn`](11_SchedulingAndThreading.md#subscribeon-and-observeon) operator creates such a wrapper.) We might use the [`TaskPoolScheduler`](11_SchedulingAndThreading.md#taskpoolscheduler) in order to ensure that the subscription occurs on some task pool thread. So when our application code calls `Subscribe`, the wrapper `IObservable` doesn't immediately subscribe to the underlying observable. Instead it queues up a work item with the scheduler to do that, and then immediately returns without waiting for that work to run. This is how our subscriber can be in possession of an `IDisposable` representing the subscription before `Observable.Create` invokes our callback. The diagram shows the subscriber then making this available to the observer. + + +![A sequence diagram with 6 participants: Subscriber, Rx IObservable Wrapper, Scheduler, Observable.Create, Rx IObserver Wrapper, and Observer. It shows the following messages. Subscriber sends "Subscribe()" to Rx IObservable Wrapper. Rx IObservable Wrapper sends "Schedule Subscribe()" to Scheduler. Rx IObservable Wrapper returns "IDisposable (subscription)" to Subscriber. Subscriber sends "Set subscription IDisposable" to Observer. Scheduler sends "Subscribe()" to Observable.Create. Observable.Create sends "OnNext(1)" to Rx IObserver Wrapper. Rx IObserver Wrapper sends "OnNext(1)" to Observer. Observable.Create sends "OnNext(2)" to Rx IObserver Wrapper. Rx IObserver Wrapper sends "OnNext(2)" to Observer. Observer sends "subscription.Dispose()" to Rx IObservable Wrapper. Observable.Create sends "OnNext(3)" to Rx IObserver Wrapper. Observable.Create sends "OnCompleted()" to Rx IObserver Wrapper.](GraphicsIntro/Ch03-Sequence-CreateWrappers.svg) + +The diagram shows the scheduler call `Subscribe` on the underlying observable after this, and that will mean the call back we passed to `Observable.Create` will now run. Our callback calls `OnNext`, but it is not passed the real observer: instead it is passed another Rx-generated wrapper. That wrapper initially forwards calls directly onto the real observer, but our diagram shows that when the real observer (all the way over on the right) receives the its second call (`OnNext(2)`) it unsubscribes by calling `Dispose` on the `IDisposable` that was returned when we subscribed to the Rx `IObservable` wrapper. The two wrappers here—the `IObservable` and `IObserver` wrappers—are connected, so when we unsubscribe from the `IObservable` wrapper, it tells the `IObserver` wrapper that the subscription is being shut down. This means that when our `Observable.Create` callback calls `OnNext(3)` on the `IObserver` wrapper, that wrapper does _not_ forward it to the real observer, because it knows that that observer has already unsubscribed. (It also doesn't forward the `OnCompleted`, for the same reason.) -You might be wondering how the `IDisposable` or callback can ever do anything useful, given that it's the return value of the callback, so we can only return it to Rx as the last thing our callback does. Won't we always have finished our work by the time we return, meaning there's nothing to cancel? Not necessarily—we might kick off some work that continues to run after we return. This next example does that, meaning that the unsubscription action it returns is able to do something useful: it sets a cancellation token that is being observed by the loop that generates our observable's output. +You might be wondering how the `IDisposable` we return to `Observable.Create` can ever do anything useful. It's the return value of the callback, so we can only return it to Rx as the last thing our callback does. Won't we always have finished our work by the time we return, meaning there's nothing to cancel? Not necessarily—we might kick off some work that continues to run after we return. This next example does that, meaning that the unsubscription action it returns is able to do something useful: it sets a cancellation token that is being observed by the loop that generates our observable's output. (This returns a callback instead of an `IDisposable`—`Observable.Create` offers overloads that let you do either. In this case, Rx will invoke our callback when the subscription is terminated early.) ```cs IObservable KeyPresses() => diff --git a/content/GraphicsIntro/Ch03-Creating-Marbles.ai b/content/GraphicsIntro/Ch03-Creating-Marbles.ai new file mode 100644 index 0000000..d3e2945 --- /dev/null +++ b/content/GraphicsIntro/Ch03-Creating-Marbles.ai @@ -0,0 +1,1677 @@ +%PDF-1.6 % +1 0 obj <> endobj 2 0 obj <>stream + + + + + application/vnd.adobe.illustrator + + + Ch08-Partitioning-Marbles + + + Adobe Illustrator 28.0 (Windows) + 2023-11-02T14:40:45+01:00 + 2023-12-12T11:34:14Z + 2023-12-12T11:34:14Z + + + + 216 + 256 + JPEG + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAADYAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4qx38xdfvfL3kfWtZs eH1uytnkheUco422X1XUdVjrzYeAxV5f5h8wee7PzRZeWLDzGdTmh1bRnh1W5jjjWl/a35ltrqOw Fok0Y+rJMqfCSGUFujYqnD/md5yXy5pOvXENpaaMJb+DzBrkdnNfW8Zsrw20csdul1bzRW80cby+ rWXjsCO5VTKw89+fdT/MG90vTtFjm8s6VqP6N1K5YwrLGPqyzG49RrxZftSLSIWZBXf1OwVS7R/P f5nSeRIfPGoJo0mkPbQ39xa20N2lxFbpcKLrd5pEf/RfUkDbcWABVx8WKu8x/mp5ltdDXUNMW2a4 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 7FXYq7FXYq7FXYq7FX//2Q== + + + + default + uuid:65E6390686CF11DBA6E2D887CEACB407 + xmp.did:6d601e58-17dd-9b47-826d-deaa351f2a23 + uuid:0f3f6fb2-cc8d-44b0-80d9-aad3487c1c69 + + xmp.iid:d5e0e1a1-24df-8f4c-9817-d3a41a08c4f3 + xmp.did:d5e0e1a1-24df-8f4c-9817-d3a41a08c4f3 + uuid:65E6390686CF11DBA6E2D887CEACB407 + proof:pdf + + + + + saved + xmp.iid:14709273-42b8-4844-95f8-dd7dcca7f08e + 2023-05-24T06:57:15+01:00 + Adobe Illustrator 27.5 (Windows) + / + + + saved + xmp.iid:6d601e58-17dd-9b47-826d-deaa351f2a23 + 2023-11-02T14:40:39Z + Adobe Illustrator 28.0 (Windows) + / + + + + Web + Document + Adobe Illustrator + 1 + False + False + + 251.335674 + 302.907242 + Pixels + + + + + Consolas + Consolas + Regular + Open Type + Version 7.00 + False + consola.ttf + + + Tahoma + Tahoma + Regular + Open Type + Version 7.01 + False + tahoma.ttf + + + + + + Cyan + Magenta + Yellow + Black + + + + + + Default Swatch Group + 0 + + + + White + RGB + PROCESS + 255 + 255 + 255 + + + Black + RGB + PROCESS + 0 + 0 + 0 + + + code keyword + PROCESS + 100.000000 + RGB + 44 + 50 + 200 + + + RGB Red + RGB + PROCESS + 255 + 0 + 0 + + + RGB Yellow + RGB + PROCESS + 255 + 255 + 0 + + + RGB Green + RGB + PROCESS + 0 + 255 + 0 + + + RGB Cyan + RGB + PROCESS + 0 + 255 + 255 + + + RGB Blue + RGB + PROCESS + 0 + 0 + 255 + + + RGB Magenta + RGB + PROCESS + 255 + 0 + 255 + + + R=193 G=39 B=45 + RGB + PROCESS + 193 + 39 + 45 + + + R=237 G=28 B=36 + RGB + PROCESS + 237 + 28 + 36 + + + R=241 G=90 B=36 + RGB + PROCESS + 241 + 90 + 36 + + + R=247 G=147 B=30 + RGB + PROCESS + 247 + 147 + 30 + + + R=251 G=176 B=59 + RGB + PROCESS + 251 + 176 + 59 + + + R=252 G=238 B=33 + RGB + PROCESS + 252 + 238 + 33 + + + R=217 G=224 B=33 + RGB + PROCESS + 217 + 224 + 33 + + + R=140 G=198 B=63 + RGB + PROCESS + 140 + 198 + 63 + + + R=57 G=181 B=74 + RGB + PROCESS + 57 + 181 + 74 + + + R=0 G=146 B=69 + RGB + PROCESS + 0 + 146 + 69 + + + R=0 G=104 B=55 + RGB + PROCESS + 0 + 104 + 55 + + + R=34 G=181 B=115 + RGB + PROCESS + 34 + 181 + 115 + + + R=0 G=169 B=157 + RGB + PROCESS + 0 + 169 + 157 + + + R=41 G=171 B=226 + RGB + PROCESS + 41 + 171 + 226 + + + R=0 G=113 B=188 + RGB + PROCESS + 0 + 113 + 188 + + + R=46 G=49 B=146 + RGB + PROCESS + 46 + 49 + 146 + + + R=27 G=20 B=100 + RGB + PROCESS + 27 + 20 + 100 + + + R=102 G=45 B=145 + RGB + PROCESS + 102 + 45 + 145 + + + R=147 G=39 B=143 + RGB + PROCESS + 147 + 39 + 143 + + + R=158 G=0 B=93 + RGB + PROCESS + 158 + 0 + 93 + + + R=212 G=20 B=90 + RGB + PROCESS + 212 + 20 + 90 + + + R=237 G=30 B=121 + RGB + PROCESS + 237 + 30 + 121 + + + R=199 G=178 B=153 + RGB + PROCESS + 199 + 178 + 153 + + + R=153 G=134 B=117 + RGB + PROCESS + 153 + 134 + 117 + + + R=115 G=99 B=87 + RGB + PROCESS + 115 + 99 + 87 + + + R=83 G=71 B=65 + RGB + PROCESS + 83 + 71 + 65 + + + R=198 G=156 B=109 + RGB + PROCESS + 198 + 156 + 109 + + + R=166 G=124 B=82 + RGB + PROCESS + 166 + 124 + 82 + + + R=140 G=98 B=57 + RGB + PROCESS + 140 + 98 + 57 + + + R=117 G=76 B=36 + RGB + PROCESS + 117 + 76 + 36 + + + R=96 G=56 B=19 + RGB + PROCESS + 96 + 56 + 19 + + + R=66 G=33 B=11 + RGB + PROCESS + 66 + 33 + 11 + + + + + + Grays + 1 + + + + R=0 G=0 B=0 + RGB + PROCESS + 0 + 0 + 0 + + + R=26 G=26 B=26 + RGB + PROCESS + 26 + 26 + 26 + + + R=51 G=51 B=51 + RGB + PROCESS + 51 + 51 + 51 + + + R=77 G=77 B=77 + RGB + PROCESS + 77 + 77 + 77 + + + R=102 G=102 B=102 + RGB + PROCESS + 102 + 102 + 102 + + + R=128 G=128 B=128 + RGB + PROCESS + 128 + 128 + 128 + + + R=153 G=153 B=153 + RGB + PROCESS + 153 + 153 + 153 + + + R=179 G=179 B=179 + RGB + PROCESS + 179 + 179 + 179 + + + R=204 G=204 B=204 + RGB + PROCESS + 204 + 204 + 204 + + + R=230 G=230 B=230 + RGB + PROCESS + 230 + 230 + 230 + + + R=242 G=242 B=242 + RGB + PROCESS + 242 + 242 + 242 + + + + + + Web Color Group + 1 + + + + R=63 G=169 B=245 + RGB + PROCESS + 63 + 169 + 245 + + + R=122 G=201 B=67 + RGB + PROCESS + 122 + 201 + 67 + + + R=255 G=147 B=30 + RGB + PROCESS + 255 + 147 + 30 + + + R=255 G=29 B=37 + RGB + PROCESS + 255 + 29 + 37 + + + R=255 G=123 B=172 + RGB + PROCESS + 255 + 123 + 172 + + + R=189 G=204 B=212 + RGB + PROCESS + 189 + 204 + 212 + + + + + + + Adobe PDF library 17.00 + 21.0.0 + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3 0 obj <> endobj 6 0 obj <>>>/Thumb 128 0 R/TrimBox[0.0 0.0 251.336 302.907]/Type/Page/PieceInfo<>>> endobj 126 0 obj <>stream +H= +A >6&X,@,WY_ː.|hTPC,q=>O V&A Lj ŕҭUXtYo.>l;U`&Ijaqh\,sf4gos0g/޹\ +endstream endobj 128 0 obj <>stream +8;Xp,SI!#]$P9'NQgX/Je2EgF%J0`NI\fB0O_H`l#%2X5q(>1bN#!npdH/J+S17*m +DKZ\i@CQC>!!!$!rr<$!s8N0$BP52"~> +endstream endobj 129 0 obj <> endobj 131 0 obj <> endobj 132 0 obj <>stream +%!PS-Adobe-3.0 +%%Creator: Adobe Illustrator(R) 24.0 +%%AI8_CreatorVersion: 28.1.0 +%%For: (Ian Griffiths) () +%%Title: (Ch03-Creating-Marbles.ai) +%%CreationDate: 12/12/2023 11:34 AM +%%Canvassize: 16383 +%%BoundingBox: 260 -288 487 -15 +%%HiResBoundingBox: 260.207014254745 -287.97607421875 486.56298828125 -15.6484375 +%%DocumentProcessColors: Cyan Magenta Yellow Black +%AI5_FileFormat 14.0 +%AI12_BuildNumber: 141 +%AI3_ColorUsage: Color +%AI7_ImageSettings: 0 +%%RGBProcessColor: 0 0 0 ([Registration]) +%%+ 0.172549024224281 0.196078434586525 0.7843137383461 (code keyword) +%AI3_Cropmarks: 247.366972477064 -302.907242023221 498.702646748397 0 +%AI3_TemplateBox: 683.5 -384.5 683.5 -384.5 +%AI3_TileBox: 75.4348035092153 -572.443611245984 670.454762005309 269.416369225447 +%AI3_DocumentPreview: None +%AI5_ArtSize: 14400 14400 +%AI5_RulerUnits: 6 +%AI24_LargeCanvasScale: 1 +%AI9_ColorModel: 1 +%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 +%AI5_TargetResolution: 800 +%AI5_NumLayers: 1 +%AI17_Begin_Content_if_version_gt:24 4 +%AI10_OpenToVie: -137.801778030367 127.623731428107 2.26 0 7838.33981488999 7963.22582609402 4318 2607 18 1 0 89 170 0 0 0 1 1 0 1 1 0 0 +%AI17_Alternate_Content +%AI9_OpenToView: -137.801778030367 127.623731428107 2.26 4318 2607 18 1 0 89 170 0 0 0 1 1 0 1 1 0 0 +%AI17_End_Versioned_Content +%AI5_OpenViewLayers: 7 +%AI17_Begin_Content_if_version_gt:24 4 +%AI17_Alternate_Content +%AI17_End_Versioned_Content +%%PageOrigin:283 -684 +%AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 +%AI9_Flatten: 1 +%AI12_CMSettings: 00.MS +%%EndComments + +endstream endobj 133 0 obj <>stream +%AI24_ZStandard_Data(/Xh>E -&m8^JWkB){sYdSre?%  B Z*-KɤJ?Dae2 Uh3D-Aϻ&i)2joswHX:6%0D#A`BFz$Yqޱ.єtmH_SꙥIbIpl(f2xz)\XvKNJtx{* ۉwn*km"4+^3dDPkCvP| m\h05F1|ƕAp`, 5qVE*YHc=+=Βs1sBRPA?R)'khK-Sjr(aH` Iވ$3 )W( 'cXP2q`8nXxC`4 ;́uܡp0 Ic@!5DB-iwsH҉$DZ9gh$n$"II`,HH2 Gdj[ Z I!i@cH|5q9.( KKh[)PHV.~}ϲi 'h:AG‘Y! (&I$($H$H [xP0Th$@c]P$QsDP ^bʪtEB ed1Awc,=HXEcX:h$H¡@ + ) ϼkHYKƭI\VH$Uī` >Th$C$CLEeI r!a""h8lHTF&ӽa#"UDZ$vCKBoıu(CC+.kI*4HRF$E{$Y=,-$q,S$ TWI`$D"9ʁ$RBh$Ha!uʮ6ڕZ"YO'yP1ݶu{;|9tI7P77TtgiV~POyfNÝZ 3i1|4YvIz;ta݇AF;}B$TEqɇ $yBX4lT I0 n"% +æ $Y( +Ja2,HrBuU 2rgep0O$Q+U$D._ "7MMSbQI8E"ѮE1lSF2@-.t \4sP =r0Ip +P(P&d1 a)BB=fy<̩BI(ppD84 +$ϯc[nu"**B%n R^OH>٩l)Pɡrz捈j;ۡU JC)*{Mt-^}/EV4T͒6V*GfG[[պmTa,8 &@ +(LPcZdRHI$H\c@h, BIV +UYAbN #BWjF2rDt,zyxHhI IpIKDc($U4$ $HVFGH|DHbz$iPdD$r0%>#Vq +FHvO (P :κ]"I.vpe$NX$  ϐD I`, 1I;$I,H$v$Ģ$P +W.Dg0 \jpX9ar0:5ECh0`(e$ +w ƙUeuJŨF9Vfv$k)la k|uvwxyz{)nqk*p lYiyL"F:ZjzzMBІ:[k{$*vmc~~?qgq)D%,q LdBx"P$ Fp$V@E*T+ +b`( +^]|`, ǂq d$CH3 c`0 nTF67 rQH& +p4hA.;̅.DO(HRvO(*HrKb$`>@E IQv; łp$"Ԣh$Ʒ md#ظ5Q 7`4 `,H`$ PF2q c1ƂX,/v ]-lQ /hP4 BP\ +$QE*PSV‘`$ E"xb&.a s7'# ݱebn.m֡ eBz]UM=5:ґ\"L$tR: T`F5qS劉wgWs!əY 4Ê=rPJ;`bZL+0pb׻D4:3$a`0H tڥ$$$Q%$DB(O$*$߯fiab! T;p;HPw‰U4le; )($SEJ3I  &(gr(Z\ (RAãDE]`G (  k^IiҜ?ͶvNIg׵MCA34R'mUDr|+0HƠVWi4%>ɛ,VWti+U8yHd;<\ +mE=f.Hi1wNuMb֘vmy¼.㏈n-2.;Q}n{Gy3|͒RͿժ뎪};X;\xScNRyexx-[{9IeJ{_MR7<[!Y}RNҗFSY{tdYv{ fn5ջFPk׉tgu 7Kso/Z;?ͤ2ο[ӼT[}l3-(s/'S_GG +w[%]-F6.vIgTXtI+9o8fcW6~Wi^'] tEˣx\+&g75ܼ )RU4ܬߋj.+~r.hu)7]a}MVK]GB˓;2]2˥6Oݢ|.iJ$3Z.PFkTKc鲙v.?R04y".xez\\X?׳u-W1%+s6Ь.I}Zrʢ_cD8%SSFd8Y'zu2Kim6UsYnMdkqoRKGQf}6uUI콎xAr[Mb9PbOPsZjgUoyFJ*feg2 F3GCkBH,@D$1m"$ywF +P$A ,g2rKQfk:;lPQiLL,*uuH`xj$ -uPItOHX8t /ĞcHYyHr+ $i, Vc C -5%Pq[QAw^.ґfϾpzSy$:|Pѳ;Zwϔ#*K-J을dx/#2U.yxIc{SWlq1+Bee&gz;u<1͎.U)r9w(iiR^ӟ4 V)Rvx%25*/hu0Ӝ/SMz!jUeU7z*jkEȰ/&i*fi[׃R\˱r,evkG6R*lVciXtUl~kHYGyC ZPj2q制Z #R}VykNeQޟJFWM6Wu2W|j7"u1x#4ʓ'qS/&tUmQWc[{{Vu5Wm{M]ؖ]WQrT*#Zr׎lwZ(9-VhsDO"ukƖj3O1wҷ樵r6T IczR=&NuOSDܟ֬mh.p:'"\٠'-ӳw̹D{JuN?>Pz+72` 2KI5K6M{&Y4zۛӛMx4S[%Co0ֆ=1]Oxv4;޵ jjӺުMmxsHݛ}rEt/N)ab1`^)vJR|m,?F!j]=FWNz񫗃 T7+=-NV޸KVzIS Gwqᢥf{_݊Znҍ m7xCV绖lEuJ7gu{T!Reۻb*WGVz ߫\CڥTu=e{PWe|͓Fxu;ox}]E/Cݼخm 5 V*tZ>6_~]6kvd{{SUДPy6޺ɳ[Yi-Ӹj E{znt|kR\lG5Ś;+ܢVmj5 T$c )D%WK/ˤSNo5NOV1W}<VZ-l6ƴW4L=u*kL/4ZyvϢմ.z2=.ZtxDkυ{#t޳?&>=ZvN[T\{1 +6^%AsQET; noy,<;rǴK5B4Uw_14y\fM ̼k/^uj[m!RF~ݓuk4zSU?29C]]9tFIǷy?YYh7ռ=W!na.||mwo#i{_:tlh9H>t[&\:rHi6V>WsP]{ES5R͵RѥGR%>lJI0)5eZkZ5ŶY+sWTwıR3,kiw̴gd<-%ޑh +wu]"YYe]ufg:}f+m7}y<^e5;w +^+饥MuSCc^tZJɴlTJ.f5KK4TO_j*מ[O4=:;4=[C.nb524[>W7zrњYZsFJoǪwxg*M66|K]DOM2iҚtseݑ(4dw]b\$cy,)/z iӼD7iiQb]hB}}2Fғ%Lns4[itW9;͟/Yϔg~5vqJN%t 륤zoHIo[IL53*қ7JS͙J7De1lL33gͱQ3m63\ʹic#=+u6]:Jhz .P n뒮jhMݯꥵk7P! tk;llՖ~e=&"25L+itNʨ!馕Vө EU7;6QgDW]_Z5Z+-hoLgp~WԜ͘gRU1ڸnZK[j7jR?顴Y줧cYpsk2+s*yJ8wiܹ,kyS˂+wggQShaTd+㭼1WfJv2xj̣_-ϜW>]IKuIsV1<Ѻ[ou\yvwڻҟ%֑NWzTJOhzf'I[ECVʶCVrm3V3j2oOKl͒ɮ{tx^9a-+JO]=nHWzk36yUCteP5an7u5lxBRlnV5 +WLuvIF9\-KzVR\]Q=?YR4٥6w%H+ggzs2]tK*:fɻ'E%\ڱcrYf1|K;5m-%4\Zs=aދEYJc5_Шl0˵*8oJ9u+J{G_|R=+gGfsEWςūlu7Ww*7RSk+uoyg{B`@AGzN!d~TxWJp1RninO-q;>z%j^f$܂]T/+:t%E@㕯;,|b-D(Ϛ[l.0==~7.Z?\/hDQJU*@cPc/lnyf S %X")i. +"r" +Da/Uuv[35ZwgUG{Ñf)Wmİ2L ҉<$Wx@o;m\q 3'O%.=3)\9LQVtKͬ(=5]^yL `,]\&>2RdD:$w',20Ucrn7&(jDILpXcz}<}Wau Bx\EukMYxhx!szi0>sT\/Ѷ0*<(TӪ.Wgރu4焒Jȣה!eu\b<\E1gVdM6 KwʿxvI,,owl*A}'Q)V:fvM=#%v+ޭg~(\6%$jǾ)r[: )11HS3TOf6}NLH? +4SKXG6TF<%-%7AwR A(BPF6ByE^bPK7myq|管{Y_HtW"hqŕ#+sXD2߾}ަ8O l#+b#QA0RH=V*w2'nO,d%sk;\镑ApԛoY{Q^ha3!oOT.Ǿ +2<ٓ=1-L$Tz#3F]f^"\V +m#ΦCdL0 R1bdmLL¬UsW$ֆHb$X- o䵾*tzBܧ̅Nn*8+5lWB6IK$Qb"r.*~7G[2EtViT.{ht;Hҥٸsч>K؀lٲ]a^Yٓrlh>݄zzXګ3Tڿ'IЭȁ;5ۡd`˩'Wg\hPmy>Oӿ&_2=%>x~0;bl 4SlB +~Y\"_ &τ f)Axї!G$D}_\upɦcw}U m爯UDGqGKeu#CSX!jhMYf4*U%WH8I|w W1.*)ug#Džeo噳,X=0h:z\}F#1$P$;{9^SK?Mjtptޘ3AXRfR>oGվT_{^{J}(^#fB@5ǼVΊI\XLioTl +c +ֆ5#1ɶÃ`L硿6)A晑Ja xeEPr =}G7Ow؟RȎf 1aŒG2`4=K 6_b!M˯XMY@iP?Rmi݃iP.ӈ͛m#"ۃ7dp-%+GVɯef]g %sԄtZ{(@64F6y۵kN 9;lNӣ$w(/3o,kXPk9#`5U{EUV\j +P`Ɛ0QObvoDkU>VUE %ܘX rG7@)qR0|< ՞-å9%\/mJ_5sR/% O_LwXܔ,\( `/Ou!xD[fޞK~tc 獞fNC|7r3D^$׵]TN|NdlCs qIϛ{f|9p@Y]o+quMc#BW|A*ɚYN!;5e~p&?Oju.eC keh͂bӮVz`@7'>/7N3XӁ}IjEZ{sJ![*=QTߞ;HrAmW&v݊Ꝡu #~m%S+u7xnhJ.tGEy\{30l5d\fKY\ &MH? cuopt2A'Xsf8Ø6H@h'/A )?GNh/n; 5L*B-7?jR#VC3PJvE͘#Kͭ\%iYj:9Q,0ҋ7ޮH+f rR6⣏ lĂ&9Oxg˪VR ~WTw%xk6ےX9=[e&ܦ!>ΩSM]]Q)yuvýf zY +:$a\#ܪn}2$?iCui=6s)ѳ"g2dmLnK3k]8neƝ"QF +W֝T0YÛ+Hw Ȃj7c9ىOi'6vIR։:k+$~q~;;WYG+%!cڛe @Wݩ(ּ ؎o. 4aմݑjyMf8MZ).~пy)!K,hD!_~W*܆YH&ǴŠw:ζ%b_Ae5 (Aәn~h\Ă1,Vaꀧ8 ˀYj*BԫcނfS; +)odڄƭjNUBʈ7g01~d@;[t&k<w#CىåAX5^r4MY tx%&ze{)t~Jcj5ix3YHt&q>b6L3f31 ' 2ΞK>g60Wi{ vZlcԾUwm.0NWКVSʨSni`vTMbP^5n̷.1l5~B(wTi淔4K0@䖷`".F?SLc~>en:e~3St0,KRotʜ~6heʱ0x$FNh,ގNFCXNdJcZ -;,7"Wr6y-< ig]Ȫ}K!,P͠0xè* ӥ-[0.3>bI0`{>rdkhixe16'p&Y$[3qI(@aO0w5U!A rgb!, f{lr~j(A+ԡ#Dc)~b[*7O9y,F\Jvmt|e|Ś۴Emq Aԭ'6Mt!WL0&I_wq!t<V?x 8܎rbM_/3510<.()a(T|(؞ЦPL 4#?'DSS!;jO Q1G8g3Z/D;Ph[M>8 >Ac+iq\s 8q k{Ud_W]"QJCrm'P{Щsxk<"Vďt8&/`Z0\둝VD$|ar\Zd̯) L4Hڔud + +;3] + ]E@hz3my2%f,edƾg1 -51"xznLp}`wtb"N&fbV Ϥ~1sH4Q1z Xc3#~c +vJ4 iN̮hD/#/&+j=MBhUT35;e;Rj% pl8P]6(*Q" [T:d>tv 9Ozr5kbMj~vB2" +? <7m +U1&(RY麖MDDQNw(P˦OfHF)@wF%* M߼xhB # mbRq+pqD*zx^xdu%8'=*?،?uF퀲8?Ubw !IRz eV3ʠo = i4^$4^^_RDW+6 jmcvYw5S;FE,˓%`@qP%RcD|vduku.dPXg uyDJDԘ:L;ۯ +ЛQ0r[Z-qX'^/pU/S#JpȻ׵' J4?y)M争yⰧtUp(>!P]iZܽIs8& )iCFy-mAkO/2fotal;v콷L"x<]PKvPbH\3TCSE=N)᷼R"i +]a;be@PO.z\6e2 ^{<wI1F j@tx IhNx~$S~,iaX7.:aےjɒ:tJPyP9&1Ev3W,N u@l^DR-A Oݙc *Ӭ'ҋs q@0tz.uHy RB"4+pݭb(DgWZR?jVPwDs>StF/QG%謌.ZtP8)N I2`.Kc0X5:ſ)ڢ4i &Z'0Hsа:Za~- &|J^m4a55EMe63Zba-mvf_4a.Z8Ec#PڰZ=QQCI@"cl"z="ݜ;:!vMzspneܐнֆnPBl6/PB"HнPr^KYA"d*z2nC9@AWwVwdzvUPUV,l6A$觟@}4,w#PB2ʴGW}eHS661yXY5dIGF)tJlk23S0wS'\΢s :*\*ɨZ6 >#l7p~4UR{0(D@-\k2*Ih@iu)ƒ\%2"8_y% HT?P,gSPm_sDD#R@/O$ð0Qd(ocgZ@;]2RJIL$ H9cx +YL]2NXGQ3'fFCS_]Ꮏ \ZG!bBưHU2%?͌ugIE\KȈoySm +<]X,<Q:ӺlDr̒TJ j%>;%Ͱl+/tX@gc#pJVGWe;GC`R`;BP'%y CWT9)0/zhCdui vVӴ*~Æυ҃3d():#DsA_SiB^#${?#f5<3(:6FUO&4Q*<^i*n fG]gMX@ b dž,Y<#9RA W6*2,F3PVpo77ˌ|nh2 _ +  tydEHbr 58M)g2b$Qo:4MʍgtPotG@*Ir\de_ƼSE)v~_Rr<BBY(#\@걞|`IJΜV,U/j8Gv]М,J_[+';01 ow;L]i z)0(CaUT+,"$~ZwH04\ȁE1{o_XGZF" Pr4BR(إN7s>[y&0+-8yOdLل ћͶֽwC]+\$8vёG$sseJS è@-_*pdԑTLK[;@z"㔒B(#%")F\$fKW>#@a_uˠ  :`рG>m)zGQ_^.Q^UՑ7 Ԝqb!SR/{8=kfEs'إ*x#kd~eGCfvMDeF[b)cpJJ4j&(}AxVMe*"tNҊn`@ܸ:fk A-"׎2gͼ5+Vv5f*<#Ml7Qԅ$>zֶQ)ea3|l^/<Njzzl~(k pWbB8h9`!߾a3 1hwddKB¾cf rXBHXӸ5&0ݲ>PlAXxLrNMI,D;}Vek~5]J9* Aх`VZX%D0 +š7rZ(^,aȂ VR* k5~QdS~R\G_}d?Rm[Am`7P(`#[̥P>|k234,:w=GGw r/D$9{hT!W(rwoTN̵][wk>ud2ٚcaMopN d nki`x ȨդD2Zn_N vonm=xšBa .Xv1TY;{));cUBM=h5CGVnHzKu[oORC=LDΣ[7&"-$"=_ϝ2Ǝ\AhyJ49+I-h|Kgj2Bs/D5pb +) i 8J婠$Yd OqyU@zO4"J#Pt*xve٩$AyMNJ薮ATVMbj*D a/Y-l4J!ؒG/ɇmPRziM8ӯϽezgJ"YDL`ƢwdYHr + oeSE` y@_4Ԙ/W*ETP hD %J*K!xNf/k]b'Loq7h(_(GLO *h8:GUgJ0*"!c:JO*۱ n tq-$/>Ѳw+%9렷Y\Kr T N/V.ǺٗmޔUU_AS%TW4d^!;<$P;{J[NXaG)j {^{9$M}oA]}0A}HЗo~1$(rD0x +S'pq/| ;l^Wgy +S@!5Iܲ)aבdS`Aȅ<<}2aB\i+KmYpU)оf!n3IHgTuzsXCW9̉N_Q#_;@9Cbd~iT$6j>hYJ018:u*l)C@rY3a[`k3{Tjȱ:)M((C\مy^J(pF`sD9{EӜ?砶Ύz](N,K2?eWxٰr]rEDY%Tඃs  "SA?jcq]H؄j$RP~~ QLydxWJhP.z%zT@;"=q~UEGlT94ޱ=k +<3Wg?* 'Dӯx/ ?~;g<AvΓlc %8G\TSM +"liuGCS ' +xpleaП@tLs2#誰β^$=D Lr +QưÁ @$$%!yn+TG/WA7z[C{Av@)IpcL\c }A{ɴPA/ r}+|u~s"JJ({CcbH&~i "9'u98Z 'uUjV wAq/b.ZdnϞJ RU m$GxҷcJ|MQ:w.4 /˅'b[F6Ϋ D!SCnf0 u4|"6O#vX6T|wI*(M3^^_x0$W1 _E`z>:^\"2o4G#]t(y|.e&l\ҒC@}1?gLv3/ad]z[p:Dc@Uxʊa!IO.h;F'Gѕwtiraʑ_`fAI<L"0bX;(r_X @x3*}. C& RUTZ76U}TLH30(_pf,u)~|C.-I!‰aP݃G*…5np&@񦵍{UC 2mFÕr;uwh[APT$)ڣE31:[khZ޸IX+ibJn&{`?Q̔R{'e37M\#䑒#_!6ܬqmaO0+?lD;\!i-B z]|Ӎ! C^^E7^[}WUվ7_/Oy?^ .:gJwԖ88Xkpg{"Ao+4%Fx v s+/O\RHiD+oK(p ˠh~_s߀ݚڒlPЯWXȁ4΍B`z7tvn V!qxw}XFs<î4'FW8ȍ-#/fUa9\O(XI}IY$p>Ŋp9p'e+VJXMUy(Y)wlŸF깿q~*HOv.yK׸.5sy|k@LwܽVOgʪy4GWLbǦ 7D,4JIˢ#z6ab(8`trr l(OsS<T5gw=dL80K+{" +wBUWh%CŒ,LbR9$–2~d\9nh r_WJ~8mJpv| {FjRNY湫'Zf.}`qq=I҅F®F̉/!P+1$s~Fw*#\]Ad&vt+E]Jg@ LT{2gV8yղVﻟk5b|>t FIz 6CG 1-Lsq1ɐ53MFLP qr ˈKeƀ7U9~ROybmn5?0\ wcms!D}Y!-!e`ZCb2A*dQ%; ,W^[Kr֜c;aE ]1Q{awpH $|شizJ0sWQǣ +LÆД֘TCsхD20:o B>Nvf{W"NLV F,(K_L'Ud8,q-Z)܌#z%=aA7Żh~nmkRh+ɤ.E z{3]!b2C=*oUFEKЌ\6S(?m@OTף,ƒ;6`KDY'"WW~n=KCˊH"*伬 +qEid4)YSyrA Sb0OF~i|DӄD_S|=ΪY^JL ݡH#Sq2^VpFƈ y)=sSs^DFMH" =H)GfGZ_YaMҸ JK*:w~5x,,q&j8 CD.H {lQuK~p|+["MM+7ˤ Y'nכ +aD +I&ԪM;f6DfMɞ' A^hӾ'׆U[o #ob Q~Ed<.h,RR8nJb~_/ gI/LÕ +I" е M ELnN3c<帱5ZxuT{ux +%Zn +KC"HSL=\&4խVj5Z c5=H5yQ LuEg + λ`M6Q](^9!{Œ޸eI| N e)!A('h{U- ɬ:W睭Å``[A=(vWTPq6&a]bf{154s# z榫jP1p:Խ&/_jbb_8Ս5fk!ugW1GV WR3?ۦ_$̏uW)G! m4?< T&~cVj@PP7VjK67 C5"S;ux"@477y)yu";9w&^8a5+Dh'*clD +=ChzVCMyP!"(BR/Rտ"+A!-DYYk~>Kgg "xjW%d03T! 7 +;"A48Zݴ{DxL|FHs,CߔrJB5T(Mτ Pߚ]PEPB(gK@=WUě2!,fJ6UK&ĚLCHY=1V6|pX̲X4b)eUEc. @7P/=ɞU䧱ӷtߓQz%iC9X#U:E#$w$>/n{ڜ-1=Ihd&cmNh.%sO \NOD;W;ȍ/.zryBd 9&OX E),#i32B< ՗kb2F+yeQG% /M,lJ+C}LfhªI6(^E85{+d8پ}6}yH A]%a]Իyct䣡 Fv-촀Rz}`mA#̻0y%N1 #gN=̥n}pqxXXg ZJΥU tR`Kfﳧ@:eFѯ'}{,kU0*C_FZ8K`!%q$DM9lL/O*R +@ +'#=NaUJnq 6zHq݆ɶ*a5eb%OV:o|Je甔 + G-޴N{k+^S4`Fb~hD/%2Υ2@ Mϵ(JNHTk!eGjhJF7ǣjBmzQ hm=DGHVkqaaU=!uٯ%nZSjWMbd*'VJE ǔ &Yb-Bgu?$oЄ\Ɯ.sr{@s˱FGgPhScݱs + AjG_4;ܠ8e +w4iMaڅeSezIJ>e ӶF|9ƶmYUr8H4œrNу3P(Yt_Ev8xnBbRRmTj2Nn!G`6Vn +&qr2WvmvIXCvpwHߺx6Jxϛj )y_>?o]f:~%<>Opg%+-nԤ@T`1mW+0渒LWޕzgo<3;zM}X^KU2 j̝wD):"8:F0׷s"PxH O>C9)cBeDgf'B^yj C%B߼ +BFK~JJo\+@)˅gd:C,zAALCzɷ +Nd!R⒏f|E]BXjΏHf\0<Q"|1d!v7ŊhL< (nRIj):)#3 deHmK`V5t[լ|K' Mv$;IHΒUuE?I7"bw Kw@?vƨ~yI3F'`V׭JޫRg*IQI)YM[J5)i@(Qݍ:Di/ň|N["J{8(Fs#H~4~j 5SnZ-;D-[ /.Dp|\cc5 TKΧFKӎ!7d0KZnA +u R}hV\|e^ȐGG&uCzD{JV``5l8Ejzp~Sr#Pa~e+M1Mj>nj#ܼ195 scLGM0_)ܩYCikST#+AvǦsO͓05F(E '(Mf "s?+܎I6`.%` %şO'$D$iF"=:$<%x}ĽGe:s$uy#'x޾v{zeRtUoZ1=S*({'6#FD. ԜdM)пTN7߳ ?z\Ukb=5\ fE3`'7/y{srRvؚ1Y]O( 3avwCA7C}T +_,PPο޸3hL=h'7~쥄s~fs57[fpg?@çf3w>̃^Qm`cJH +J.X-ӸW?۩G5d{Ys)ށ>ˡ;'GU9mOi!ٗ q\jZRb4CoJx'x](;!|XAhYn+AXg? DᨾK{iԏc K@p3t\q8 +KKw1- &$,ق=pస 8xԕJ}Q__ʹwAz l5{7;eF5%B,8ť _eHp]=4cb4A|N ҋx6ش + gh}NՄ7O ;Ux .Q*1ri6zaG Ƌ[^oe} prٶp-'Rzey>] Q^؈sw["dV7tC6#@YVVu#L䚙 XxcSTңrA$ \D>#c\\3ʞ T.3"vbq3М[!fc +,,ao@cYX W1wm5-/Z, Uu;coMihP+GCj0oɠ +Aң=+iR3`0)BБГU_ÃEjlv(Og-?rF +0a#烤uATq001r@vN'BjVۘ!6Ȧ"#37` P.nbeS.&f^0NՖo>c08i +;.ϐQҔ:'kHR][(]lY"xfnI6{3.ҭdd]lײ@5@m."0sӹL$`.C1 (}45!K%G$>j.[\- SKi!z42'~M>;ɼbr D>:CpeQ%JrEcjY([T;"[%jѻ<x5mj@U;ϗs.we֝ƈkAx?Ilㄦ LZ{;"P(W +Xpln'Pz;De̎pL8pM-|a}{ļ-}8F9g=@uťL9vJk %`IrLl b#nntfA8F3IDC b(%uSEZN,+\U&BoѾ/;g}Y<$'˦IIYuGݬ͈ k鿎0HHJȥ;3U6?^CՉm`沁khVζ#ekp9)zģ{VoV Ӝwgj *`cEAA];PjM%;g8G8{Ix41dY֣Oncι>G[&@A實xK+?@a@FgnOH~`M+Q=FÃv F +z2Fģf_y{\9*DǦ_9Wn0ڎծN@ƿc?nA#ΓRB=zCF#B +,A"P +,Hk4"J1$rnR"g9_cK݌*xt=bb9eEF0'MDAGo"bO , Q'J !_B ֧_+W?-Z5Ia=( 9d!ZpIB=;Rd<*qcc^/F59*Px:1HeD(ֿLfPxld?r?OO_V Yt2 ҄P(b Ӥ&  qT$T1!2`I  +EC#A1Q6"9V>T(~ `#'+ C!f!b1& 1aG=| p:X(pHPtQ(!$3H ˄Q +*ժj:pؾmq , aJ_K6mҁN; n=ٮ`'- +S8 JC8k|#:;9+J d:{.RSSX&LMUT)j 'I`U2bBq +:1&TUH7wa&E̞NU"&MM8aURVZj΄U+BMt@s +5E 5PFPp 2r{lMq]L,ׅ{f5\.Ί +B LB65#e(bYM@S)p +i6És;y8[" +XcF&6{ ܛ#s\4>.9c/6$/cjh1fvMxuBuyna=xs"hN5Ҕ>})3{f'!bָy̬*!9?D +|4gQTEeȈgmC^LJ%qͻ5Ԣ)EIZGшꢯDuA/QàZ1WmjhFN]oPLk3AjAJ.v. {H +⊾(.INeP-K0x&.rk-!C36ժiEI \RjFN9^5#5 oyIE<.U} rܱ(_P‘#$/ lPPCQ!l4AKDф y,#'XDrhr$SaNEr*JRb1K¤>1wfO`|ETψ. jק".bDF5lȤl6D ?7DY^FF XVlR: a I= N'`܂ׂ9fO$]eP"ϧD@ެ$:Y>5 DDFEAe&l Rfտj*t6!A$A :Cԑ:(rs"%+i_h$i|D+K.[vYF|Ղx~HBM`S80Ufk +jSrm hp +QfZ^ݥY&fMCySǜzmnƫw]H{ %V_fi$uݾV yum:99!BAb#QKpj>xhq*OT|DM?59⤠Th'6(*3nGaHGHk6Hܬ\2ш4i[PhXV$J䉶LEȱ5sd)ձ TӏU5R撘CQ4^D; T;:,7OTFVf=SD12;#!z%%(pM)od8 %^"Qa2 xՅˆ!f15DT +j ++aE"+mn;6* BĚ".!H9$ @4D銋q0tpxY4TDp!*i+ bY6/ЫTZ+}B]p8xw3oC<sR բUxےhTHX.z(N._Ly4)! + OIG^TNMo=&{>*2.ZقDyl&fGJd2*P5PR1q+G" +ΪYetL9C(U}!. SUT^Ubb'i,|'PP{lC` S% +%py+ AGXSl& 6%ai+u.֪ +*ƝC\775њWf̃JaxW +前~ccC4 h@?ܬl^7ŸJiEā%yʗ͓b&dcP:8Zř&\JS(Ք(B + ˪,Hٜ v> 2F6}>mY,H&U_%$UXDd!$3 +6!K+I\Up,F|!nEcY;|ȍoD참H"RT:wEY45 &cݾ y_\f՝H+[o.DH;fŰCEʨ\VI 7^lDEQ|žSMw`?ȋ"ŮJb23G$tbPIM6}jH|]n&l/KxGްi2dǔd Y4ʝFCCy]S#*.jӣox:hm-򭼊 hb}^K(̦xT~EBWB\t#N.] ߹ѷ/lEFEVAt$ٔ24s _;E1 } Xpi`EjpRD5LM/;F ]4nZ2D{d !dXQV!GAoy! +h=j6%21DXx͸\jj\@(" ADFT=FHASJiC9*,gQnJr/(e:D s 9X^3!Uy+`LUfCć GLX\e},C i %wD$ BAJ#ˠs/رPE_x&<ObA' DLԬlŋTDP BT`@^AY2CGZMBn=|.ibوhjG0i ] +`< Fax<=f@^;̓}P~ ꄶ6REP~% ѰtCe`0[{\(^)D~ ek1A.a!"z{ xY&Z5P@SnOİYI;X@*n$ٟ +j<02y ;0u$˿Rᕊ +rTe©4 ( cnN2'HHQ"]D(⪤fȃ(.QGD +!)]&PJep 8O>=>3HQ*APdQG4"BO!rA)FRz@ #,) R / Ѐ 0uD M 0/yGCS@}S٩n|*U< ]pL}D3ckW!E:5 ˦'íU"E%e# bIӢ2h /,MEeQ.5*iͿ:7u4H( (V\s&baK5cME:?B\Qy/ZԄ5mNelb5dkd6شד8oiHP )Etz TNf_7cZ?Q~D?wYZ 7?j?~ǟ$5B `@ +Cbv|4~B aqPPZ  pB8O NH~H_Iu=~ +FѦ +Z5M6  ^@JHʜ@Ҹ{!.tF :GU S<, + ĺ1ch|uXH$DrR.AO"׋Djxǫ|-a}1aa fZM1U wd$АCwHv0hAYv3ч1*^ùGuאbo=iJS\9srɻpb1oK/[C0s&zI˨}@xt@BS}Λ;HCl gU6'h-Vѯ +rs# +2 HPl}-W7)Z/Lmerq:VO fϘR Q9iG~u(·6_ps'lb)o <;^HھSrtqamSĂ[H.B%R&vKay߀4O{k#o&;X.BmXF=g`Iuui$zpl-XM)bm:å.U432C:AR*asp&uLJrRqpGB{;t;1Q^p=/ݳ2FyVQ4O`96v0nA'>7?:SP]*q=65} yZ^bڂ{6G +J0x0Z`4 !3r0VsCX yD01M!WTWDPAL}m*Z#͌zM? ͎2c1Gṫ +G* @I6_:cHUrf'ǀ("4܂C~2fzR{ +s(#*[x"J=ԝ- +^d-V90j({@y&6I!SGD>J8pɖ7V9KADo.!LgAg8%ʂ qBP<[;"oUd5ǐ?-,=eS+l[4PGt2n>DwbS +rcͲ易~ɂGDs%Ʊ=48@,;cQň%NH,5!V (wq:+"ǝ} +_|Њb3 m?hG @=xq}'K=) O98:D{ 쭢*!D.䮆 3爁&&8Qdpo24!*SH?t[I%Ƌ. ~o╠TŘLSؙi/@(t(lxGF'Sf岱».> u)jp})|0W"v7J" &o{kN9v=LfMcsi3Mn9?_?]|v$Ѐ'1OHMDs@h!h,<@ ҀfߣXE](@cjA.)3LbZe'Rk*[Wt5T,HC>PijɜT%{hBdHP\G^h鄻@,6v+ MvnOz"K1!RB dRVhGӉcDpqN,ؗz&ĵ͜":sLExuNx F D]-AJ(ί7VnţEW65 @S48)fEN4 _*r8ӯPb٧q?:cJn~nQCΒM{.)j[+:*xٺ۳8d}GA30hn+XA&p *!T߲7IHZ񝨵jƈÊPxwt\e|L0i-[4;H\x@v#ER0 .pFFVO#Uq&ASe{ LLM"V(f[V 'v슬D  j +9 IQLN2pS.M"l +D#Iʂ[GAMs9B&4)^E8ن>>kpn;-^K|HWd-1(lC$ fx4+( dѿG '1@_o4GByl+E@s֦݇}{!)S[\ Hu| 2";ҺY~nd0(G2|wECPlΊ|@^' +w%TMƟ(>|[@eo=De%r>oݙuE7 +Z֝)$ ¤BQ!Ql*I?eOB jYq2ރ"mbFtcPαæs]T 0 oѤJuK^;>W/x a"Uq$6[Gƺ*@bFͅUG1dYHErV(5r4ETo( eCU(ZbhF.f%ۀuplq2@sR2ܞO nmGU`+C/ )LbqfAt#JsO*t4嗦 tj1ٰ.3EKvxӼn/.d" G4acٷ(4ǼP3l"8 +VY8AI܄1VTw7decmFaENxl+* ƯeFJm)5(^ +t/tl0=ص+з3eŃBdd} üa+c:v5O6GWw$ _86L/hG:-\dP*zkP '!\ܴ<(T~: e +Cy?Sp B!M@D k3☥]}@5nѫ F}bʷE +\Ux~}.~ RD.|+-FZ6ҋ2N$QpyuɁ&]c*%hB~hY~G$Aa1{Hɲ|c&'HLf)<'z^=,C{LL:^k|}>tS?N@е L< M(,m@P#‚~db1M:Tba.BbR!5&2 r/}L-Éa1L d& 4LH&!$ET&2PmRK">+0j!#63FtwG:`ҥGt&=m8K?$b$P($Q/aTϙ\rIKZQ)S]%lޒ2ė.LK ZK@%2&j% bc3/,Y&}%_=]֚(*DAk%+٘&Y%PtUBJL OcOjJr':)1;PL +YP@; wB !l<> ܣ`c0O +%3MWMX\0IKMM%Td£XD;**:1$/ U%"T G^ %fF߀湬({(+U${`"I+B$E8ͰX0$DzO, $s5Xh8GGZBqZZkQyl [L%&;-H#ǍqQ ++̑)8RchsF1]$87ȏd,/8D`Ό]ѽ@?"%jD]Et4k + QQ`P#'a +Qat^\ā1g4hE2E3=,B;-"!~ PE ΧH}Al)b ڤcPVi2{"L_/M̠hJ6.'';+UdFcFaШ*"flr!RvѠƸ"H"Ki!w1 zH耇XA|Pj\AqoGf6$֠XC$}4$3 Q+6d٨Dĥ0DڈB܎B^mxHrCt#nv|l7Ĥ Pno0nBv5ecp+P G |A჌,9H#GQARd9 V9\[̯ >)H ϣn 4C|BRuЉqx@_;|;@bz@}?d΄0 m ãb{E@V}ʖ#$ڇHA0Zq㽼>rH60Rv6ayGpÇ6ɇvig$ T@.P9=0ʬ&8i㺧T7X!WC r'^S`,Ճ.X:FA,.{x_f b韚A|]WNك+]$AqTh bP WOD`P#C)d iz$+Fz4SvmXc W +ќ0<Rh9:Z) >lJөJPR/ȃAx?aZxP?J +@xʥ(; pL#Q +k( ZBX[v@hH:_@!ZnutX:e>Qh!4iԺ$3dAҁҊՖ`硃?AdB\@@Z9꟱9V]9f9l%T r,Q!]D9&er2$yA Hx?K NԻA{@ ,(#˰p#a opf$8 L[olk3VBn5Ɠoz#@h U$ +ިF +C!Ӎύ9ʍQƍHh *SBĜ @.ĸHрX6*e@p#H%c%̀4D lR@(f@hSAez $ |o,YԆ,Jic%!hc؊l,Ιl dFQOnaD +l E1Pjlp k &Y)@"bj9Ah~up<=j\`P×i4\A9l¨i8Bbٱ 1D!xY040THqፅp}4nu!)@X4ÐBqUC(ׁƼB0Cb}gC8)D&r" f`M"6Kܚ4CHyPPJR>q"ŌhW ̰e2a2 F^1BPRF8uC3R(Fژ HčL#$]*G  #;c#4n@IǠ2 HFh#ABŠX!i 'Z1vIÃH&%FSHBZK$TQKadC8~f_&aP'0vA Yg(%-E 5) +hrA0%4  XP1^_|%fP³_%VJDm-T {|!:y*" ~ ,yATRI=^;qCXC]S%- SY}2 b tU\L\.M.XQ8.|$XIp +X[+!U?Hϕd);lpO,[]IkkqS +hxp%VBh2h!gP6g!9YpbZ4[Iea+YH:#E8 K^,ɒ„ ELXD +d 5ZZïз%{3r 풆^RǭpK[ rE1+޸4&l}ZjdB{xV>X&\|4V +wʎ``WfM8ll͇78 6!;I77TXIgP9!U:A4*bN +BEݝ*Oh|xzFo +O '2@ ), +~Bt9(R椐BawR)) H +RILƔ9oPM@ƨ4&4җRj"W&$J.L7-N˄fUaH& %"11Q* 0Du[b/AU*:ļmBUdF_+z+*zq7%RHJOp5+RB@AX/'QB  ,)"㔘Wª# +B`JkFX^ V`U +cE$+ zR`GQtaV0Q+HۃXx,V2Z„KBY~Jb,X!$Kb$7 GBq@0Pɡ V:$jC +% G +c# {nC.G!W#rۈ^A]!2pFsd|2R +(>"1ExAUhSČVa"*쫒&WfG JYX)1*a:<>!WC!KFW-}/6VUǫ2g1R| +R=!xHLX&VJDL=;+V +ެ\L+ݩJAͭGZ\(! x8! K; )_2 gX`z9pA J"^\.j(fa1D; ,?D,@XV0K1n5 Ä|0gi,Rf~;-܇؇N(CS !Z\ E0)[|ʖbi[pq +r(a^:jUzripa b\L(6( 0ƃsaaz  yPK][64 ov;`]*. IiBPv.^૲ ؼ`<z)Oj {AT:_hĺ/VnErim-/*0FrcB)0Xn@ȡ q0`b780&00M-6kf:ߠM0pj0|sal#Ÿ!O$m&Amƣ 1`17ȆL=lPt ++M1K>g; 5 +2!4!92@n&&d̚% kڜkU2HC:hHa#`LAP&ex{-ShgP2-9̸P LB ^43/C>alv+C6CL`gM u!N:Wdз3%]P i8h,&t/tQC^ ^p%V]Pw(.- W 5ʅ:q?\C .5dy j~5(ڂl(4q=W!edy %z֏_7C@ s@xCoTPe=K Eh=ԕB,oZ0~CRb)GV~ GAQ78BÅ(سp/SeuPHX#U?,SNX8l너7'HA* r|*#&R:O&PȘM(ʇV9`` !nfB9dBd0!W9 ] u-aLKXJYO8?^QHpODJˡ$$IP14d]#"ApFH9?BSG)9!~д49FPO/m$N+-M:quѦZXuI>)ʉu]Î7ڑf\v ꬝VDvvn};qBw,Ervv a9x{¾;Dtc 65Ep"TDPnB$3t"2<5y9*i/A:j8% A2/%ɞڃ@a4u`n! 4a 6B) 8Ӟ`'g=Eu9ޣ{Ѿ+O/XgFN> -}*3Vj)~F "5ĭ?=71X,}Sx>13dGV E1Yq׾?^Hb?Y^k{@|\dm*c,ز<}>z=xr`I*۱=@.V ۃ 9ۃ)Ĝ,+^kSmdvz\{q&}؜j DVA"ràG={C( 5zh`-X'_d5WGxYٌ-ZaG\0UY XF􍚘9ڱ< +x!rb (%D b uuB`F܆U"KjYăyM&WRlAddH.ysؚDKn{<|d5sV 0C3wPi4~vw6h(0vmLLlQN%;yCu04 YA >>wQjߔZ̋Q2'`ߴmyW4 m O ۦtg}h#QEg0p94Y~9@/q66_DÚPO&Uh%r +*3F8BE-]VLv;-(i/,yμ%<qa0 PhuP ElR 4PsB,:ۀBҩ>ҏ `ai@m!|W >mM:5RX?gnEqEy"ҀX85D%@ +Ut (o_"X׹iinp bJ K;DR +~FVzd@Dy<>?0:03fC@Sf0xϙMՖhRA-G@'_jà^EQIlba\#Lz~J#p$S{K + L#`y2lAt<-`$U,|b{ς6|)woXюQ1AkW,P 5(l9Lm*UA3/V@D~5ܾ +3c})ت)aqnߚ +K QAA?n v +LOԖyL&ՄR0֌1ZH}՗8((8 !,MLJiyàx^2P?*^ Zʒ`4EVNSU#AM;2P޴ p\UHo4~&I5 +2(^LP|%h_ ]qx=Jo)m;ƽ@`{ Gf_rH bT '0$H;u@)|Xt3U3&ޢ7i^눭 XC&aη" . xKģ}Lk"#J(g1>{\$-}spR[XȼwIQh XE!/B ?PfW؂F +QT+A@4HHv @?.y19Y ++`0kTށlXzzmT8;~tq|:Ibr :ЃXzLh=r}ZS*xg8lF禮tvcB˂@Hs"+l !/#JQa57<= ; in[1^Yπ+y$̀IJJo ,e@kG]l1哧QA#v$a@*8/PN@ر| e]BR*eF.df*~\@~iMD}H ( +o1-Y`>tKߑvonb^8c]hU%AL\/nXJ%8EXmWK@KҏH#Q/Lĺ,)"hnؼr}^|,нK E ၽ@9 }&$xU.$`ʿhwjԄ9?j* X<ʺHtDNie v굜\WkbLu>z@M*~@<ۄ%b6c6Sn5bxz5e+ ++IH|oI0x3Ll6j_ <)D;_M\1t+e7 w0@Jr& 8OBc ُؐ9n02fò>,Y@bZ[eUh^?3ad7UF,3]ԖvV՛'H$L  %cEWI)s8 d %<* -%`4x#Vb so-NF\ѩ@B=3<^Qo#hO|j@ۚo 9-`b +B4+ x Pc6J)gˆ8x\ >щ-}lIE١ؘ UH"& OBÍ{)ÉIADDD}݄b\䱠+0(?i9עؿ{#)R_Kv谱O1,Z1 2* +˕U% BDCU/3lT`weV!/u\"zx0}Ky?~/A$.Wõ(q>2%C,ރA"u#¯M&K UI67gg 4a"ouhsFO\cbHuקЕvBQ?\ 3tqǗ|_{D@+=Ų\ RL9l CEчK6cupaB82C({=g*YFbfr~Oj'^}5K,Z Qt6ľR}rP>hweQ(㭍0lG=yҝ<>Sn,!0~c]N6y-rIds 9(%xG/ ~_71uRG+~S^cfڼBh~dH u({]rz3Uj+x~+o-(<њx<@fT2gZFFO}6tddt >(q8#(oynܑp@.NPK؎Y^T_xd2(.OY> \à1wlڕ BVFwie*/}"c,J&R +ZwudoHTL5:…}L}7zYARGw|s%H<_( -qqۛ|P͜L-G 2ko Wމˈm$sM[%ߔ Xen>PHquhDcڛ|T,|g7mD;A(Mћm^lslj~Pe3!A((8|w|̖il3͗U~>,xY[nʓl\ d*7͎q3s`+GH|~(hEtZp!)Ȯ%eQ$ +_Q\}Ǹx3V yKeIss=ÿ/BC;O,XR'![Eȍp҃OZA-)bRܓ _H߯A:V! S5fw%Q [fP͇@ geH{fǸ[oP%ת5{/H-pJGޒy{@SG}˂VY-r犇K!^"Y7YG8w(HÍLobb +rPS,/,Bڏo +x+0n.lZșlc͆ALIk/CEhI4iJyٷ:03%mҲ l n@J4T}3%gc6e =sѦ$LQ' +}|!D ^F|x9!: Bbo (Oˬ7 taְ=-]א\|NCW̺O.w:s-=O4qJez'?p"%^6LYZe#ӷY*¦c*97z +υQ.֊T^6ő`4E.}l0[Y$a3D| +m䷊ui(Kꄞ)=x}䛃&ZܲS痑"j +{<*7Ih,Rm㶻A5^1!vިΧ&SԂ Cg:c{P-/ZІcXޚ<Kd xL|D&bS.݌BzMvC=r+12`,9Ty[ ^7-M]U5LʩWot0|(| e82- }P%e]ȍ 72~t t{D~=f[ feQ}'ϵTz) 7wHQ`!J+SB4[$Im>/X(Greϙww (vs#*F=+ ӁwS$Z +gw?2#Y0oX8 ѕ5 ~P(>nD4=B1ߍzMHAwϥ\M*vܟ)64/S at)kS|a*qZkXR'YK4{bEvӕCIӇvf@|&SsK;}x.3Sk'aF>0Z=j}UNk: O#)_ {*G_%#oم9W&o- .Q:BT|kNx,3ڷ륇Z ++{'ʲ"d_AeR++di"t9V$kq!Jeb&Im-vC-䨋@mMTF(W˓ v?oCFgߞEKH`0_7>f.8+WPyB[&R]*;:f@7\d+F%TFxIbY, +HZZ7BIL]--{z $ֹ92焯B\_4WE؊ZdfX > /V]̃:Vƫţr +DM'͠^t3u8"h`"mK% n8CZTt[9=/6&hxӏ n!Úb{(PA64GQ5'2ǐ1_XU`"t^ [G#')1dI*HcyH7FH ↧BSFB_TeǕ.t MAܢgDD"K?& $ѱ4g`Q#ށqj7ttEO\赹[gKyЃ$5>VUYdS^#B]hSs:pj.kndQ[H?wZ^9>̪sD&q2<]NVG .pF< r)еN<`@f0 1<QЏ(UtE*&&j@o|S='r3!꨸:SeS1ف ^bU`3%_ǐhs/@rC!%H dfobf xo}N<t >MhCzz{~hN*}lby8+mrEv3~8{Jy +KW99k EL\g^wsbHyŪ.fpT5//[+Cd9`3a9s3iun|J5(3笔뒹ѼC/Dz`Ϸq5m3][ׯ1_NRBLOxvdB{FRgsy V&X[djqVc5㴚Ny;,wװ[k*6~gr#-ԠaaTNFqk;O2J$GY䫨 _SD|Еڮ ?U+%.pi_SwU\}~7a9?nQi+! s"% F'ZX;"Fejj0 ],WNR1Ij.^ +Qr ȡ.>$w} S @bbJC ’ +ރi4eQ6+ ?X#*ϫ +Ԋi> 9` "SFAx|G'zV~B.ߥkBS=GE0ι*6k둞idivS g*ȓ=t|DA~%a,Ad7C. +rzP' +r6D 9 ^ujROLqİJ4p =zc>8 Q@0$n\ +v_>*stTqk&4ֈ6^q,ᢌw= %N0!{}`\$yYАcnѠD]+LJ zsE .pcDC +8$crh0|7]PE'#6@'L )ۘok&&p +=>XD?d_2J .xܑ\T+}OГ=\vPݕv=0 Dخ7xgp)|Wf 7Zu_cDȽ9:;=nd{ѸUBV"--7nt}/Iz4r Vmm(E竲v?siHwc|vD +%ZeŒm nN`uL?(D6XyD߄ +=bCW&QPN +c0 +иZxZȻrۃ1HmyaF6}רtvGLHG6FmVy~]j!]CnI6m`>(W) +=xJ)4 i;j[eUkGS/CNɓLT6ڒrpfЫNʃ;5lIi^l4*.\aFgk=)aQkvxT~EaٞZEMXAiFKm[3ObCeZ66cX-M>-l߄qmX!=([g?dE hyl2m#IM2?X=Vʲ8i!YŖ>-2JLǝ|bZ tGyUr1`[c= M܊@I P{E(m&Er`K3^@ˑؗE +Tb07qB=J0MG*Qu.sp絁-;SWåw=x׽"CpE5kt$ +CtE@6)tqNߙvµi6*:gH~{%#D%D|)ӨXOT:95}=D5z۲ +u5f ~2#|C)k^\ $ZLobَ쯑N-MC$gkvrFV$ zΔr*{zTH!["K&/#ӉLOv gdڷ v1ಿljI WE@K jC8Ҫ8#sVI?k)U/diת-&qGEz<&(,qL1ԲjLݢ~ӦӪydI >a N9j6 +5tj+6 +u B8mA7 +5fJ +R2e`ub +POp2i\]N[kq9w?H9#XӦaxŁ^vVH}OeNL.!bA]j6{TM5v}A]1 +5f ΞS4GBScQP?~]C +!:̸W 2ŸO᪰hPP3B}7H>\v@Kޖ i~>7k=lIo7JOf4 {yt6nIJxN+T%zkjW7=:4qMN1jUS-fS82+_2|=Q\EqH\9L3m,إ5u]ZxZz+,NIbicYtr#JxbVkttC,GAJtoaGhHUQIr ~gꗃi>vFAK6Y$N_IІJګZ@ʐPʮ' ٌҖᄆJ_R\+:l9Uo-5N:*}Er)vZ{iG20MJ6VSt2vThIj(}2GB鲔^< qMJr:pv)zhw^TWP3F:.TZ`j)l4ġѢv65`ӣ. + i5R,1\I5t '-R5utjel 0y9ކJYHUF hqH0T+u0&wgX-yk-k[BnKƫj҉j_ߓƖ*d2okcu7֕=>ǽw͊WOzwjuQQV/aock] mtQ֗;rkު-QVwK9vu뻓ZP-HtxHy0ymꀐ 3 +ia!'|B[d=w]񯥄,,?(`kա_3DAf!Ω q&U+gibLV,T&S^D*X "T=hM1IFVdTɾ7d,Kx`^ٿǼD$EOe"9^9iEԂch!R#vw*I{D@=*źiv3BM=ȺnU[%S IWKFf"X[ E6 " +endstream endobj 134 0 obj <>stream +ɇʖhYzyEP[0p鶛$̭u#U"Ykʼ4LrB]z{P[dHE w,ۈ[A1[bүL?A%¦rp Ni^D\zps׏)4L}D[jܫxi~=nEnwH?]w裺i{u 9bp# +-qO5a|Aa w.р+p? QP*RjwR~qgwRk{A4Sת9| wh a@`8 9vDQ?R^rYkwr ~dZ(qQFJ\3Qƀ I.aT@6GJ``9V' q;h?L h9C%=XIAX`# *d;+D2SPwJbat$9C }`3ƞ% IUpk']2E}8D!~1!&x0Q*ڈ%2A/HV''JE3#Ywhw?e?0D|+` Y1>ʸWo)+/8<)E$y%_H /a /UjtX͆K5C4g,y$c,-M3Wإ:&DWFpLh_qve\;*ǐ R%!U2jZ)ur9.cRV=Q3AR uK,qtBe\7qaUEB:rXoգxo?m[đQ&Lrz~ +YrʱɺxPۅ*Ǫc32c.#81& G/1`T21?8VAr;5JAFg0v*g'(ōnc4à6{6QyorcO+2)T̷q 9mcCƛ&U6ipnr'tP|pq`0\cc{1AklK5VXD`Bqc^lk[CC[;o"h%řw}qC,H//HZalŎyl4E7MfME`\z'E$,zj1h(a,$^B`jBcAM&Ì9?!Wbے9ʝp)BnT<4/q$*2&փ d0! +2q3 yIwKy/B-1J"x'%mq5 q0f^N0eU;+xxԖN:{Fc h:c$Qqyas`G^ a + xG),eu 5)aL +5 cP3 ,aB_ ] +^ObBw=[MbӹA]mSfon0WLl%8y%"ays 'A7(V SxP.4V.azn%ۻ /.{ U}qQfY G/j8ֿXz2Z1%0`T]YI!.P+"c}݂,b 2lGqڍb j 5 wqcVB/F ÐUWLŤDf n]: E/a"%Lj!xĜjܶ60W9"a8~"X 8o°הӇ?TqPLwׁƥoY?}q i/ k86&oHJSn\ b-o5~BqYҳ.ZOXʦ1jG1dP' ڋfc 4X,]c8ǀ85(ݹo&dX(w1p;!8,J[gK!W[mtCr)cKrG`(ͱJ;hD.9X^f2zo}Nj0ܛNK)GU`2cc[y2~d,I-/etNt+Ӟ߾7W>8 +RKŬچVs<&sD/3&3yM;]fYl#)ם 3Y Bdh,l&?P{),= y, + +1.kK[~Bgf?gvʲK*BPcSA#{fzXtç ݫ&GA'Ԧg9˶fuANK@)` S m :az%6w#{z(;MTs/@{ZFgqPĚ-.loO.Chyv|t5L7pw66?ko1kMymOOlF8ڷ勭Se!TjB Oxmir[_J2Եۧ?d6QXXt=(@@Рa&xv66me nY96qƋebrcnђ^,i<',62N +>R/Я5n+ e.n{Bc఩u*)4re1#DeΓ'y[t=$ +nYlOO/m9j-6*EVHPaMT}<>Ys}i+ +2ચ|'ło[.0qA.sr5~.Hr\rC4I7\Nh;rpិ&24틒fCx9 2ݴbGA%Asژl\t9R"*q˱)dH]1nacmS͸oqu$2XܢppK̶-+0 lPoFuaҌN d n|ahw5ly0lزl{͠o=ijszn{ofY8P[T~!wYm|T͈L{nKnMRR#=꺷&sS6')(&ʹ/̃+I߃~s+a4]EtTw԰Jn1Z!G.Elx U4/zb゙G?=8vxݿ4n{;&n0v7?,nv*Vql}e*Lé 8&h #y wpim`pZ}ﹻ {pVqu%Ħъ>&b%<(K)jtp:  u܍ϥl CbG_U JﶡQ~G9 +\xE#DD7fJnex {b`'/ަûv2y["<'lmPO(96-ur^@m^t`V{\mSW8 SROݐ7%2v쭋+?;|sڡ{~7Z2<.me\ 2Oe·Qa10xcLQsC3ۛ$cTzd^M. +ۧe{xPo;Ɲ_3Pӡ7&IRKNKE zhf׮@w9 4`//89B Y"CNQkW8(c8 +޲y#>G8w֓eCBB&Mi @zS|ab:3҆-œ_`N s9Π7i#Sd.N vvWWy?USSQ@NNwrIGtD ܨiXrH5{'G_bfZrD%Xje#s^~Ku{ƴhzu!ڙ %inwl8y!4οsv)/u%_ Xscz!wi-G Y2)>3V<[Go.WYv:a2zG sv~8_zV5r>.yn/N:O`8CjW=WOXӭ&hi]({K=0>Ԯ4;a1 +Bx"`- "@h̄ide-7h?Rvcگv!tۙT,fwuEqw >})+WǺX6݃q }KA6{Wenn}Bq&G xLNf 5&d:c +=zii+@ks~[uөƋ8>fJvY`so!/n 䡲1[2|ǥ Y~W.o2[|UcFƮS&祀V?Sܴqud<U3 xǍ˝uR|F"Ѩ Sp^Lʘѐ}Xo؛mS|z"%KQLsPPW($?MV:_ <_ږAZՌnӰd*]7fӑyot狡ͺ*@nn7(H}V0t8[GN؃)$퐧ЌVn4#2?qpwӶgK_/ѪsϳKL'Y~Jp +}z>G6ym䆭?sya~֤ycۏkB_9ڿ ._\?.ک&Z/!m2`$,K@ ءcO$p/iVn,]i?& \r?P'б-R*)In@>/*7 S |*M܀\e //! bvYA̕ ?Qe2ƅ>I~X8DY!֨l.fs Jp=Q7̓8aQ`7:A ۔J-q ⋳ nHͯa_@J!|o )V~CIB7rR2%5:$#@4'NA!"VޖTM'+wMqA ?.UsMpD/"2xR6v"t@X% f{9TA\1pSX0}DZ4Yh;$\;*m#+q/29עm,16Ms힁e@ +w M.h<U_5)}牘Eg| +C͌3͍_rS {.V3o$ Gˎ*Ѥw'\[ca# :](+ 6UK-xѣ--/lKZ~ΎAz'jc~c9@:bmxTsYYkդ54 mM vOܴX|Zq)t:eܦ@lE}&ɀ|NE|6ɢE; +L;CVRaQmc} +֑#Nre@sicD]#)Ðy/V5r(G(0W?p:_t|v@u4?2RZc}y鱳zVkP"\EdL\$\7J~( <y@>v 4 +ڱ[6t'&~q*vP  )Qƨ n9⧾=_!Dn7Y /TLdO?uP.LҵGX&3nMUèr<\B + "EX0{ ;Z̻qv46,HxY_]nRSofG/(Pyg^'v7Mp w2MW@э( xAނwҜ*Fa4=iJW4e#!3lʉ9e:WT)r_ŨCib oөZBSNlRX$x/V'LQuv 6j~􉦤t;2A3d\0 +we'lޜ3 tñP5 MNKّZo D_ч?pwqTCʹ#Z<:U@_P+ԗ-T}c+/ I RreRE8wsaϘyP c< YM4-HZ5d;99$܋5xaA3Z7`eÓ ^+[fcdߠdW-V4$uJ!k hƚ @ĮjFh#hķfo3~SO5d|8!x=1^(V>ovjim5ŠQcفnwՊN \Rnz-)8+=[)LLJ%C+[A |`%YGQY;{7/NdW2t` &D[,Z.(КP LV(*G:y/ <םZ4!!:{k9)inGn qrR{Yb|OxkmQAKU,\Q'siujH +o|UHC4&%iT{J2*z:c(r:9h`D::1Ln\3J#0c*:Sؖ&JuW5jZ0jy@D,̟D +^Ɔ2&B'˯ G;z f vS@Q({D  %!v"o7qd$N7uBs!?=l_fCD9h|H ܖ8֮a+jn0n$bORVD" EZ_Cf!Fw؇Z*@J ɇux% + 6Z T\Dj [&;ge1PtRyt~óN +z0qBN +?&D<F'mC(a#_+xOMyÇ& qP@d9+Px'~I_)zl +:8~(߀88?zrnUO +3k>Oq&QC/ 4}q?&ͦ mp߆Pbb= +Bj#Y>&Ign4+MF4pzx#u?1~zh H<#o ܿ!@#_ +%+8x7}88o xAԻ} qN3g5sw !an YHb>/TF O; h+Ds{-(o ȿ_ovqQ} EǠ@/vyi?Fg1}mTJƗJŸxƺ\l=vcHG/(EĢՌ̚˕C_0"FRJyW>F`G=H#ӞB!&r?3˗@ O:d<\ ˅k't!v"4^It{~ ߚӇVM߂k*F9ޙWFUR?j:|d`Σq^>a$TmV.Vh3*LۍU68ܨs!1|je"*Js!N F/śRT JFf@ŤmF\؇?&z)|`Q+=S)\}dDsuGL,}Ǿ߳4o] 6umnZ+hwCT{vŌ~ i5,@EP>g0skR=Mc>]r~ Ɍ4;^n3~4q7ggB%{$P_PK~Ŭ;Iw_혼% +P÷O$xhT X}'$S..!ov^0|mC((iosib }4w_loy9o D4G[Rqz:H׀n5;(+@^HF z=f6[p5cv|羏 iKa4΍.<{/v+ VDG svotP%m +@{é +Ff=|4_ŰdXIIb< 4y7Ә_輴 -fu_昿5.vݟmv1j3ͷ;!3m]>Nxw̥gjAZJިumcź wc.br.w]r._Yvs @~Ia 4{|Mx1̳ɇI?$_~0ukuL^=v3<}'Ik(ϋ)i~s/NDI 16t掍K{nZnﱗ;._&gR5rСeEՆ0Dt$ou|NFQf6/gns8en:Klæa.s ^h\=f_sq`Ժ1~n"M}_Һ/uk YbW6|l9xwPEA +[AOCg{Φ |5p/}Fpuvn1Ļ2Q04 msw F}HϠ$sv@svRUsz  w,=|%Qԫun(AJG Eb"݇;]Ⱥ.sxe.b1웽žۖ5< fo[xϢADhu]ʸ4`&wxqԻ*'؋L[V,V8EDh(9ww`l3lwN}IB ? c64q%?x`%y!<{Qvh#xa~ƾ;i {ХÇ.hax38Y7XQY/0h+>5qO[p}<T887຾&s<Ϣ!}1Y@}ХQ8:zy^n4m完c8>)+ +Ť"( v6,Q1yG8i+Xxu9t'+Hh_ȬzlR,_u !BI7pVݧ5r qs^ƻq1:w_vy3]j1{>%?<OCgf<'q,=cxw,<{G\qwNbM-d)xlsh}>Pd>d< T0,k#oQ1q nG(B:cx&Rh!$Z }B;0q$M1^94ƻ7L8Q`rE?FmtyAOoj,&Φ en@8Ov|n=8Xs3k>~#_7?f͕k&ޚ)@rdK>ԙ7⺻Q(y8Φ q +Х_!ޭw@yȾ;ǰ3pPg"{BsüȻ4(=MouMFGK·( OdT +F8z%S2>t) ~# snrE 0wb=O8ѥa9:|G1Y@~18[|C?wԭ5r'/OPqF4GHW +% č:ShH3}oL ݳ6øi^C !@D"~@q4o6MquwF<{Q&!)k>Vw]Ůl 9t=Å <}E;ӧVׄ߼޿!7c;[)A}( WFKkC(ul[Vc r+ȩ.of4{fp/sh5-b.ӷfn~q7BgVWWЅ][]9al=6$ +]Mx,o}iᾎX Mz!G_FLg7cǰDtRRQ'|~ 7GW"%@u@9tj]~q'VrR}ҧz >|q)7ṏdrB9cf;z7N7a:shu +cp̟Nx9aYa@ߧ5Iy#ހţA~8ޗ{e} +qE3;x?Z=ĝN(O;xfζ!A|Tǿb.4<}?Lة/slbI3ow ^[]3on s>)DQWH2!kpO̡.ndKwKa:9G/qDdKbRI5̙@ :v^M7wر4|q7#anbkɸď4 s@otŋ:>7/)rM6f&nIgE7SjG%y>]~78FYN7bVc3~o)8OakfynKY]#pAO[a=7z'D.qfs-6;ܩ2zn>Ǝ͆Ke ܙEsܘ?: ;yQ)ss5?׆ED?T)+s!JoCXi~͠k|_ + S% q"/>k>f)/vg8 ĕ8R[9'qs$M1ӈ|pB<&el>7{'uB^ ǿ&<-nXח ^ޕdlXb7L\ z>E6Wu_иط8t̟ZX[F,7ԙmmX6t1 օnwauv^86t &-..\ ue蘯߫o/`KCZ19 {9`j1,[-֒k: \ޠf]f]X.Y-eM-MKSKTڥ,mv)ǚZZZ58`۞څ58R;<<WVTUV +Kkg&6U3eVWUR,+)mU6++%V]Uiک6{EJM]QMQeMQiY]eaaYYi䴤ZګUՕVUJ²JYiUT٪*UUV֗V +j*+KnVZiSTZ++9+,*,TUTU\UV6K+wcUeaaQYUeQeQa]ieZTZ)VTVU*JkjYZm*JJ[%UUUJYUYUYUUIYUaYIYUUYUiUUWSWUZ***+)*-*-U֔UVJ{E5VEiWYSU*mUTV +*+EujUTZZRUTZ))*+*)**+**-ՔKJfTSTTRSTZ-,VvJkaJK ++ KJ+պҢfSY-֕v** jJJ+beTX,VVfSYWTڬVfZVkJ+K*^]]elU*VeUYU֕TUV[jY*+NIeZmUՔ֕Vk*5ʒjSlBVNil֔6K*;jYXWRYZVVYlUV KJK{u^QieiSZ٬TUUւUWV{uuU5j]UEieieiYYWUQTYZYZXRXYYXXX),-)mV6JeE%f]Qe,,)UUUVUւT*+KUejRT,+l֔6͢b]QeIeYWSYY-U֔TJ*EucQ]eeXZ-Vv ++Ţ²ʒҒ^aiYa]YaMaU]a]}eTX,-*,,),,U*bi,)6NaiiZVVTRZZ)+픔֕U KJKKu5%e ۖӑ.e]W@a*]K;J|9u| I +`+[Dϵ&Aq+u_̗.i&DyYĥ8B +A$rjj $2F%!9nls^RV@VA JחpxP(b^'v'$HЭ t)4sԗ^zvtӉQ?y5. XA|C*thFAKݧu~ԃRz1Зea/s2bҏJ?%/& 1ap!]9 hb}t,aysu'&mA-R9Um>At1yIQX3F%&D_h #@ W ! //M pnrC+g`t| /S"+GWe)kD:9J&9YFB˺)hR@̫<# 2VK$bNP<ٲ]) +~*̊N /a¨rI +f+Z +^A`gd?*yK*_rMs(;ML!dcB9-FR>`V.VTS@o¦I/K"%,@L- "c/ɍI$7R'~@ܚ(`Rc!#=B-Pơ8 ړP zG3:L5upz. Ѥd- SR6q$2d˜1c+  _ψ\ 8Չw\b yA"'GK2, [YX +!Q98Da#HȟcOPGܒ=䢪K@F69F>A3]3QLIDܒ2U,uT) $nTT^W1$BI %0icGC#ErdyOn{JpjMV]U܂ծߒGI<|ݽѤϮ?~MR̗["mtrYD4S4S,FjL1Ǥ~InPq98D&?R:IHi,`ڢ*yfQPU_H8F)qLrȕ<7??y1sPw0RH2JWNTԓ@'\O܇KxH*V_+`®\ `gPV_EU`M z[n3"X+dI8[!1ŭ)*}pH!~E|PA 8DG$I?#5, I<id!祒@RW=M0[8IčF; ;ȉ-z,3cLIAlɎT+)a18s!@V">p@ECʅ։yvxK˨Ā?_KnI^|DpuIdqI^fX +Tܖ*in"T 1H"8ȧ7J"!I*5$N&_bHcINhS3 {|n>9\mW-$F\=xAfxk)AKSW72PKLM腊h"9 +8Ǯu'5P!w|l@!^s4Po1M2,7lbJL_zwaa'<Rgzhs m\tTؒ5e2Urid^gkg&p1YR&z1qYQiADMV:ODiDē7KRzD| A5&2;J +{Ea3ߍI |H .D}Ky1{&+l!$І%!AûDZ~XhL z*V"{t=T!emrb,^Ѐ'[Ak1>OԎJV)_r)C$M>XŖ+#TE8N'-Yq !EQAq)^{|DCr4k+cI8.ŅMg9QQߖ~(S#tjW-{- NJI +~cJ'lVЙ!m"|rYJw- NN1~QJn'GY`h +U*k\\VJ SL UPk%~""0@58zu}Rl^ݐE;P*bR@Ĝa\+"m FP•]s؄n#(`պJ`ka +iIrbxL H$GUP2,)7Zk$9d5NB*(<ٔH^?6ȸ`8/zhc.rg[ MB2$1\!)(|n@ zJbPV5*o +*6WV+D>EގeBZq=&\]6j5-f0r +!(%j|UEMH~%o2 ASRgU^+,0F Aa1s`y“Y<500%JJc(rj tV/XTdojw19 I;љyK hSL#FYZ9j%+nu==f $0,%f; nR:pSr}ƀExkMbx#._⾛ǮÜ|/,9% plW10m-J:&9+# |0%)COA-{E)0 /\CU3ׂ{G0"#X'!6r^PD;6 SNm +{N ȌΕ"’J_8@u: A)0+.Nx P@LR+}yJ_qP =E J?cx{ 9 +MH!@AiC`R SҦ06j3Fܕ7@b'-m ixh/Ꮒh[`@( 6f-"BPZÔlI9Oݠ7$k,4RZAG)ў䴫Jjމ5#}|xNY6: +KfIWȬvpU1(mA:%"'4]ج%xxT5Plb;"RX62m&?Dܩáκ*ݔ'B w GT:CwT +Fu7"P`hS0!@ =f6 MIxE +8"W=YH3YS՘FΎ[c¹9Ov#u_Ⱥ1|k#]vch÷f w䙀u7pzxue*O "{ۼ vCyV) )4vx#m9?H T8zN2代TDZ;>BD*5Ǭ I%b^:%geΘ#8a9XIN"m J΍2 |Xh>{f0QV12+tEaɴIb*坅cvxX8t4_B9KR:KLŤ?*-b^@#6Х ^ǧ8S*"/}T +AOq ']Z5Ozigx`đ.9c_DٗuefWLz$Q'2yrdX$ \LPÿ4΁* wFۄ<ѥ`w +ߔ:y?Sh4* SCc3JE=dudn=~3_:zFy,[̺cN/A t]ʺ0zj\ L +eU?~46l~=wS;fosHtKx}"'?VPκT qAEãgpSTL1[uDfR5}.%Vs)8lTM߈i}AH ~J]L{UYGTY_ꄤO$H[ǛAG4>:6qsX^b{,ݬt^ l5#DIC}h!@~^2&RR0IÍ> Q[Ofw$_‘s1Ckj!<?z y=Pzt`ĝR?ѥ!9Ի.o ˿4/Hp:(ބ~"Q;4o_FΎsuu^9άn9۞wׅ-,!j|HG<"NB~TȚ zJmڐ9݌ftQQRpMV::OBi@c^ojԶҡ9#Q[AE[H' E%4"ў*`Ҏ`r*Bzo ldWQ1ޣAM>F]<,>.z%1C:< +X z,?}N$dTJ>D|vt8Wj`Ee4 ouwΡ6๛RpH3+Ve5զΪ:wA`EN >H[+7m ϡ;Ațr{l$ P8N9&ٛY'u8TD<Ҿ9SB4F`OqvU5$Bh09zN,Fxc +þ"a_Ѹ x(>|6ڌuZ챗:4.]x7LB){5Y5Y02OO$kaҺA5ʚBݔ:}puBF; cN` =u~s~ +aB ?QYC":O "ZS1Z[h-t|N 4n߆PnFgB/yMR! q'R|?$!(!P$49Ư+CF|*MA *DwI9T0,R*V^aY'<8vF:jS RJkcd-|Bk狜#\Q}{f7Dm ?cѰF׊X?}#N9T:Ɓ$3֥;?}_Sm9BGFc>vwyp*^*$92ulxSg~! PHK&] +|)R3;64@}7"5*ٿa},ÆVʀu÷68{G2m#Tem|?:H3l&JAy'Ζ{ms5wwۧ{1̣E6<~D>-,tQC\ +Xҡy?h嬛P$.neuޚcuudIqл3ÅL070j3yPyA6)}Ns:# +9?}X"9crZ9AŹIRs AJh"D[ѹ IMQy;*&C|s<9H"R1D1~kedT.*!JA;38=6F|r?gԭ̡.oft^=k~Dl;뮯5'945̮[캇m hp++!S-(mwRh+}Q'=֍5utfc<&i ]3BgF<D0A7evWBrp4`8igj:owfm)|[lnaba6zC68))^ǐώ[_=8{ƯBx ܯqzBTZP3(-(5)sօq9tM GboFA?J;5{ Uyy2̾!su9`̈,:aR0z :v.ynKZ + m~ CFmAF7;f/~K{jd#I?u8=z _ȴ, s?9=}~铌+ 8$ه7OyÕ<8U<7J?~&\w| ݧs2{m6q5]' \ef=6c:&#J'$>}PfCHe +M" Iڈ3|O2k㒖j!i7paI#mM`ݽCZK NT(v"KeTϓj^nٽ8bVo;>ֿ"`VRXlkgk"K;`Z'X1JB:X<|\"/SXlѹ|P]Œ$DnZmmuo\Io- M^G?B( /Li"mDow37nF@bZsY)l@I:I5\T9{ŭ;yt #yGτfl(`5 X8:fEZ^G5JD=$}ժ93&P# (] UNGBG>g)栭xWאKP4HptrJu AѮu +ۨ| }+ :EyGP̕FxI4L5v;U~à4=Ɋ0nWm9t -*w,pqp+Jo{0RHu `d=%^"Ex\DJu+u^+JC.th[8bZ IzǾzAG;Snϣ}y8E!QIFbIX}M'_n?oH 5|t>/ƮmmuuNcܻ@KB@EˍS_b߸1nnaGB ΂$Ġq34x +bH +JWVi$pbW&bvs1+_qAc(-JI :R@2crKኇ,"\ +XVݟK@쳏BõGJ&mUuR:?Y;icK/8:w&i;@IkyXW/zq4m#gO@:Qo~JH}0zjż:}l@\$\ t@1. +@+*f r:$>4RiaݠFEu*/!5I<.gl.cDn9. ٻd$EEDN7v>G|9o!i8hۈl|n)ayqXXI= N>2:؄ImO^%M G^-s3lwO_aJ#ŀBCgrF@0Ĝ]LH +z b͠GJ/,4U'kA8кNo`DcdJ4*"maJn>DNװԖ0KW/ug6涔c-d7Qfފaܣ ` FuaѶX;#7CNh֮n`R|90 U~V!&>T qkB=: 9zuc^qLjx;&:B r-(aE@LW/bcp@Y4q&$<kQ6 Q** VVk~%q{#'/boҁnr}r.d)x|sv*BrZZ +-j^g b9F_IAk)p* #B5 {@_t2VFL `Z,aScaBHY;@b{4*> gg$S- XW!a){H䛳<. 0& M®XM &7R?,̝B͚H r\мaƵW2`~!BnŀB@!C5xu Xۺ`=&L)DjBɡ,b2.2,lc_ +.XQUBrvФta"yFv|Nʸv#4񬻮gGP乒NjZ\uF +ӖN=\#x! gq@bW>8Dᚨ\/v4B:[0*]tPLhlD:h4/yg[:BGV7;;/`a] BWR3lr;sCqXrUvyyeyw|}tq(gɀVA/->|i؅r 1 b)a hPnn1`0aP?HB ifP@:Ds4ݪ&[ +|MF0(!gRĮ) tNReHX2Wdwlw[e}XR /p9 E bm x4-j>(?<%6$Z ,N Ye2 s eL}K"W2;Փk4ZB^G"TI܂])4"u(45jUWӏDc rj圏T68\kbrmΡk%@,hi>Hпgs" Ā:fe4IX3/O1'*\U$kdP!LPȭ3neOXPi0Ri9pNX`|GjiQ&eέ ƍ!DO2\1FV$7L)uri>pr +% 5Qs%Pb]8DVc7w3hv##^ԠSoLBXǸ'²0)6| ̟DEƅXQXB̥L-6/mY.lZ=>'l`H+G ۫Vr@ n R;W_Ov[BZSŠ1H\PD=DV}YӘGgmhro(.#3U ιcUЋ@FMQ^Ąշ_`Q*>4Ө& [6߽l;ֹ4 0j_ CY/KXph+VlXP6qA&D^Š[PuN#XM`yȽ9_:ot~ ֲ?8U2S)#$jxu~WD6\+%j WVgݥR;o`XjM] +8XR|>E`Ƭ@ϊʽbʚe ,fHp|R,. e$alMɤ],jtbE8@I>2+r˧L$5h!yr#l0;fl;yAk( +'bTPH3(Wp@%e@j/ c1LQ%MՏTuxʉ1: xX7%_, +Ѕ +$@Õe/򕯻2c޲^B. jaz>% `YŻ@ ,ٓTՙK] XVZ{q:n&1n9RgaϺ9u 0K83H .Qr*:1ᅽх a2oV+bG.K(ŴWn+ SR j +i XTK1 e`wGX\9X`KDC\6|uIՕ &W^@ P|@BYuԡt~N. ǨQ1y\R 2Pɰ^X{94ggTY=6k>saYU[X820 +e$pCQ4]Y֬CUYE <0 +s,H0%GKK#mep*O*rPvR++,/ +BQ9N`fam΍zXBI}t A J*.lI< ҆K;10NDKq \ +z;,e`iܮȵ 4r^G65p K9N++//-#!2\ #B.0Ds/KYl[.exvTj=胴V'X].UrZ#dәf~zO6]2%Ԃ&d$`kP!c2([tr#~ )h/<($隕l벏0r+/RD@U]^X~ +(E܁d@Y +. ! B@-yY-{- +s1@i-Tnu-`ۥNԙfz^zˏ#Na%޼ + +ol,v nS7Ň3@ J+G ڕb.FezNAK(2k:Q +%NoXb[IK=QelI(XȔP#:X$'WMb367Xd"lԱȪd-*٢*@TfuDʅUK()Io &SI=J`MEݫ[@j#ԓ\~>ti GM)G( W<07>25dg$8c2! '\يr "$9ŠX]L#4,S_ZfQK@Q +v~:Ogl:PtyO7"%>qz"" +2 a ?T +Tǹ#2lFfF SCGD e(/)|%,A&ZSn\I MPa N]IxpUl@K2V>DPWpԡht^zN/t.ұE:D9,=iq ҄M&Ulu$!`]e{({ z#S'H5#% +T@B P? Ӈ:}ӕ=]#t#O/rD؞NF,P. +IDd;I)'"U|q ) LF_S37Zds 瘡I'h!ϰ$`G47z|(IN1ǥIKSQe`D9pZ +:NK6kzM51ұX!"$ɾ-|4NI?J"H( 9 d|١&f@F:85}0rNg&\e$.XGS 0c(#-5vPQoCt>g^Kw2=]`Lw0wNovk`׶~Dri30$Z[A\)Rs5rs2rq$ B846bhwhYXEf؆ M22>#C}8P¥3D,a` t' { cMk`0{l+/+[PXy[3l%8 L223P`mf&4aix#UpƌL#~E2;,q,` 'C*P20e\@L)8 P5ނ.--8Nq\zL・ttԿ"Tȼ W@%2RɐH%_F%c64y Acť8-qB!SQ9CfUqJ9ZFre4BO x:P9ؘe:OL2}l.{c:M4t.]{zQ"odR4h]5'Ԙ{O|@E$E(=(V +8q12x ˰a00 k$@4axq& Ep^:ƸG\6 pM/ezM7t_:ti:L/t>sN_RrrtIwnڙqu(} A GApUq<Q(qxV$:)ǽ ?H+ {ܨߠq Q B=h\~y4Iaz9l0gOLq%QJ/ +_9۹rbʮxnGLBjЗ|:RBt^iM8e7-CzXKcu NTV K*Kk65ӦiҢggQiUY3-(Ԕ6[UfʚQeijigQkgY(4*5*,*)+-%+*))V[ʚZ2kҪfUe]YEiδgiڨ3),ZVM- gfE%55]3۪mXڰF677XJUeeVeEevEJREUeάҢԴkgY-, 漻--K ȴdSdPK.l8 458fyf渜 RxH U L b _V#I{-Q9èg0_"iG AoNC_ 8uwRhoREKin1ޏc߇B8Θ}WLZm9/H)mqJ #Aijm~Rh/^~>|Atx+> Pn#5o*tih$Q۪欽9;:CL o#7CS,,k)-owX Zwc͸%)..Ÿ4j& % L q%Qq1~k ^ޅCT :+ _jOd_m 8bYb4nf/&+ 1L V7t6^R T G!~47Hْ\<7[i_ЬbXK/Vw۹]`ź]pa̳{Y/qe5 dp)S?e-qDA/e"F%đ:yEB"jWbZIV"ڛf\"!OJE#ţЬ^OBR):x F0&SDio:MQ"$ B,jdpQ%&o@}8fO"=:alQ"$o&S1J6 0W:>;0MB ZC@~YS\ҾmUe|]A B"Ǒ/0)qD/O "C4j..xjǒy35:vO D7pZiAzwd2@2y;ءi# q}$KqsJIGlova;Z[場bPR =' +NI6!/e"Wy=Xưj~I@1 d|?|yp!@<~l5vp#K` imx\MgEP7M>$5_ȭD +FTeB%{( ,tQKȨj X:^<"fhW-,q'UC\i3")ʅfβi's +tPY48ORDi/:DZn>"V R;Hہ.&:I+Ig ( ]MgۈlD<$JƮuV'WhU3"$)4I'DH!J¿3D`5kS(.Ccf7a:4/SjRExP}P$8bAZP|{F8#yHY#u~sF?CHħXXY:Ļ[ C FDDk aD<n9ێucȺX5Kg/3:ۂ>@@^qd>tMb֍͚P}I/ngۿ!S0B1B;*~Lwh/yZ@^ + 4oZ=o$g@b1*/ y/uC +;&vx3n3LVp MB9Vz{A9W:* +5&&f]`EP7%4Ջۇ/.(%38i ;@k ŽN +o0@~)s3/tta5xs_6zb V.&/^/VPoF4&pIc"JBj'e3zw7x./?u~&o"Ar6cpnL)wj4|g<z왗g108,3V7|3zr3m%KygYG?P"Im +7[F,הX)_fƶnK=2{l>FohY=|P ~C}` F0zOpL"6{vq#er!G<)Dz5̙< sUũ&m$T˅ЁNFAIu\c rA9Ŗ_ă D5Reč(Ɉ,lp%B~JU=}g~XW32 PE,;[l*cgYD%R7Ȳ/xxx:(@tCuhGoC8a옺4Oqne6~qd;{O^.{:~Mp2V5;.nl>Wɨ7P0oYDϯ +,z$̠܅[-W8t31D:o֘4o<\0m-?V͇u?sa/sfMar^pT..m'DqݷP( U +j$"('̃dhZ4.{ K1{i>(,L'ɿHrKt %ē6 $O1Dٗ<2zl׎K@{2]WFy Ã@#_@ZR_a(/th^Tqi3su7}&XU|ksiȽMÍaji DZ\ +:i}2}oI&zH)ؐOP'SŜۄ/NF" 0^mI\iی>})'}qpø:@FX?u(ZIA>9&p}>6abwkZ{Y*mp . +[ g5m]:ms`a *'9ÈT-.mwV KŪM +D:I>G컊i 4q˛۬sWd)xۄ9"gfȡ.gdK[ncnw/ph9nm lo7&#M1AIw.ԟu7akptx][Ů Y=VkRUÎ?{F}S +uW32k({(hT1AG;H*q E!,iOPZWx%30)7(9\CB {AǛT8\l dRq LF"p.#v|"N4ZD]~c|+goe OFϬI$O1^Gqy?(7oXj`@.w8? _ZG EJ&zz[`B }q.v˅[39qQƶ7)u7*E<;WG֔:·(- 9BJ'C{0U&Uś"gv(6aq[w|x~e_I5$̅(P|H uyr"L$*N;k"97߻;Gw&$[場5 '8ciԻP S(sM|j²ۜD;dsw-mwXǻa.rgc6c:&nޙ<k40&n LHvQvqxKhB:spZ=a^QLH@TDQ%(+VNKH诉 QŷY8M_wi0xh#WB+} ih.>q RHv'6f͞lE vWRB\ H'ͤjh025Z'Q>h;"ڵp(4YK[HErwll[\LuƤģ7dT*6_:;ggqcg)"m1# GLk98.!Zf8.p^GϋQg%#\ɳPfצּCD9߉5>]󕳛Nɹ8)49|y\3G#eK`&!ڍm\Øw# h7(@qԫ-퇹̕m$k xUNaVF$}?ֻ>w!4owQ&gȴxjtV J|)ȩފK W`}Ä }B3;,mq{*hĹnRo! )8x淆:PjGHJPŹ(m&zI +xcج- +o Fv}$ +pdM+s,nVJ!'aҶ1lsή9t<Z@:-WS*uWUo0a/qgD:CUzKd׺I3(htpLd܈230yC1Jg $hxZ:4JA&o VH +3@s7DM@DI1) RXKc8RhLyʾZGicڸ=|_ u* #$X /3ɷ#yW5oK]6^%-g7'&?{7^ ֵ9*jûElv8s^TvtmH O2G0Yi?͟1 VTxL?/IoE߿ģi+ =GYQ"( ;{E"OZHF['!;aȺ>}6%N[5_:hR6 8;vC@SZg1[/y3&t:Hc(&c{A@+yCģ_=&} P!o!H?wFch.L؇/yz}p9/bsc;4Xy ӗ&p,Z Lm shǻHlT.od]fPg0)l+#]5òj{ {CMFg"vwȬʛZS˕JJ7.BM~CbnL [Wu[0,tihb[p]MD A>'Ά;6/5V6fɥqth"NB{(S[[-M>;+gi|\VֽKJaTBU2,kúg% )~xAVzKâ'unǾu +n!xk-TIxOc~wz>? +%=|MmSHG|;ze_7ܝu_θ<|](67nnQ|&5: 5| aX;HU@zD]5sy=8{ ę t\?~R e}=o3PgRC;XG z;a-kݯDm7ؖ÷-rz|v9.R/.Z Y:pm""p!s]d&f>uHn[sn"ސVQ,57&f# PN10g#pN5t> ;3F F-[lAej Ib@Ť90{hsc_=&DM!J*7uc޺.te]ٽpn>J5hcrnϹ_X;|l6ah_:?8:#y7໻+wHbRn, X:Q**#} S͸pDm@~aɩ5Αq%*5^g 1~m FX;80 D ,&m +ML+ù-j~l|hC;pL={5O]0ȿ;R<$H4\ 4quPe QYcٜt[UR]V8Ջ[B(m9wf03 XXA>cݽW@ ]3cJ%Ii'Gpv;bpNÕ]%iL&LDJ8Sn8 ʈ +f4\/+"+{Ɋ:g.!as`zg:o F,z*&UzI~xGxraQ+LI3\ `@nԋI({.wm'サc7:ZꅣO.unL`h6"h$IJed0@QnC` @Âv*Ӏ:xrD!b =kYS'A@(p6N0:mwS +ZdbR~ӿ"cz}.~DwO~yoWIEɫ_dN\=DSF=8ꍜX':gzN79S6}uC2+{@z_@Qo|ξB&;L-eEn0%3٤5'>Ӧez&El?+7oKr3N,O?y];M^ÔyM.E=XtGwI9QF|H!LBeH_(7{xYE/ppJ3of叧^?vC’m]&? +Nu|}9} nO.4׼e!:f /竈T}2ir3bo9+ґK2վ#>KԳ,wgɱ[5Bq3 ~Vǹ%NAb1sjRu>zeS<*-v}ӱl6}=gO1HbpQۛ2W>͏;g=3KQ.sVexQpikw).d< ~{I~T㎎<3z2è|H΂]9y kwYų-mn+ԍtsߏ]-y0BϺ4cusϊ}B\/{^/e>Op ;Ę֏f?垼>V߶zWyPu̶,|QUNci6@;Yt)%*EJt_ufAq#Dq;b_s:EY/5禝qx}'̷(w͍h[[2>tP/AξdHeմ\o*u1,?+cvd]6V3N^Uv \X/z~afwcuq浰

  • -,u.O=GXmJn'OhξqX0+7 B1߽ r/L##⹿X[E,}qZttZOÑugW$btDs?Rh|{(k}vvO[Q oX{:w$::R+yqzr[yN'f!kOR{Fwy}|zuFqҼ/$h4MҏD,Wf%_kWhZ9[י7Ž[SP$]m/ԒoW p +/L|)$-}l7t|Rz`I п.-'Y"s \ iק֜ٿ6qWAD@ArZj[.?9IngzI|H:9(w92K|u$Cu 0#J`u\y2|s=pu[FDJ}EH ߚ0V]|`w}f '<.iGR/aM|-<uG x'ZRpV+Z i[RIJHvx͡|:,kͨT:r'ќaVRޡ_Llߛ#2~^Uz|_fλ] "d]~ 6b!V8 F!"TydfykFa4/ihօer+!iS44:*oRy0?ĥDbOwچkC{4HzFC؍<9#>G|)u,DJ0ML 0\`m2wLr(W+{Nߩ _@ÆPX-R~ (h|h&'PxE>&M*6J3:J aφJݪIO/odm}ˎvx#$ѭ\SȫjA^L}#]|p潀6J;pxW1!$_()ށ3{p)oMn3ئ fMCWM΀@X_3{R$/@vyk0[VCC5xԗ dCחжށ'$a_3O#}S[:w(~m*RGz7C7z(5h֭ZE_j!IH"-zrtul\GTXyoju t؋~ڲ7 ~ߟC$:C/ptR^F &>NhÂ2QӀ1mq}tNꡝQ7pK]_ +h)Su0$ OoT KΏZEc? +s\:ǮQQ5 矴 )hj@HΆOC.VgZ1.nd8O׃HePZQ#u +F@ qtg(]CPس=,niYҾɡoRۘ?(oDB6#x͘Sb(uȯװET/xxNEF} 7fmFuBM5<&w}Unu(Z{ոYm1 jwGhoO5 4;T~?!.+&R. +:=J#zρ`Jk؛2 6a;T$R]GuBp˳0Z/W{`1 D|vc8kRM{ sns:wNi5A 1z4J[{kxZ2 +>'dCE9~A/ANcYʽQ9?mǖXIldIc=e~üB(W2d鳚K@ 2نJTkAb"LTA#0*Õ_=C}ie96g@x4~J2)Xzp@i0.-@2n ňxJ݃!ܚ +p #qY0I"Sd.0 +sƲʑ%jFde7սBP\c (sԮQfpxpK ۚy}4:A%/]5d/>$L$^#pU^"A3fܬڗed̲Rr-E~@CPqXpT|,WG@e6n*U&_P+-+2&EJV4-y)YE>ۤݏ\srK#"V/FlY0EYV\79(GPBu63zYY0U>+[s@E)13F2344#82DlqVT PnJM"Bnbmn &z A +%ym.A͆Liyd5LÛXEW9c_T|S:5ڰk&mUIk3#!4U60~h55 Qg>zzWv 7K"V)5&ƭRi? +"еAwҚE0*ڠ0(N_S9䋵B`v%6gm}cY3Q]> +tЙI5R;k>̔FX ԗ cj6Q(a£|(C;E^6 5b28uM)VOoJꇤn-ц" ']<^oBC='A=D +Dd+m,DR?.. YD |$K.d@͝J +KvZo0ugta)E|zYJN&.'f/>KYi3"xY*Vc&&;뿰)ZL7˕® #NeR w`]ʼl8RP1_Br.=fAu!Cti02jGkξκrl◕E O&܍㸄 ݇O~ڑb닪f +1*,mQ=aWؿ8R}RqAJTGmPЄ(99ψYPsݟ#޾%0ui;~1 &"^4O<;CbWZ ]!=#=TؽͲqB5nw +!_DjQ!|HIn4bk ƛ5%sNCnX2a傧H5$G£bA$dān ,,훱K=:8WuKN-Pg&(wTNkI0LW!\ƔP`zF PblW')U1Dcf99Ay0J齫ˑf9pС+k`TGK޾-cL+c +xl[8ZwX2Ʒ8J1Y^&!qn8'Եc2 q?c) {}RFyh5~(Hye u׊ f~/ѥ\CZ/.ב,e[1>wd{RߔEFU{o=v2Te87JmZ!5B7 ,o1B2@$E=N/kLsAn ²;c2s lp,P~&W! x1A]+Cg)k-(Z]2NXUlMW!묨8ͦ||tkgH&}ٝ,Cls }P)z(Ā)˜uk 템Za|\q✴!ZX9"_ +7BlGmQtSwLhϞs@ζ?A' +CZnۺ:^!]L@$NJ#|d + ۫P0-+,/-d iqI\W+!AFo&wCi!a,j ׅJxEpd?ϕR8_NLP|bޤ}v +,̅WПSnMHԙ' {TVu] M&X͋i""Oou\Bg Dl(L(jXDT.+eq +x3:xA30V&jt[n2@N &$b'ZFU!ط/HIz#{гp z<|=.G "мzl3h 1ˌ^_ (Ro13$QFm&%r^ZvE٠njkDCY])\!R};DJ#OM0EDUoXhcDc[XCſAY՛їӸJOiqԂn5h+/LႾƝg$=O{ks|V{C}UT!|b&>뜀Do_JQu%P?.v Q}eXB]C9ZD"q(^f{oEDnNJ16;n + +d6"f"<2N"|`yW+V`ATHC+B~B0TPy( Z-p:%V%g7jP5=(Kz/7j$^A^ ZQIF(3~$#1(CP\ 'G~jqcwATlLR9E,(q:7Pel!d?݊ʋTX+K@S'nGxrp,X#ǢЊOS9\XB9%Wޙ Y[E:vx/wjюm?1UHr< Vɂiog@ڸ*U#I1p$xv\SQyAI5h .xHRŒlI\LSA]f N QJ\f/\^h@I##d0qbYE1@nm4Oπ;%@r `5AeAL:x[M៤h4gd"FU֨rr wRX[u)Hr? + +252585ca4-61e5-4651-867a-fe8ec8c67fc102230bf0-acd5-40be-833f9364b67806 695.2523701efca59-9f29-471e-8eb4-1267ea4afb942da-0174-456b-bac4-46354d7e476485791252537835 фDcgvE 'a +h58Z.L,րh >؀% +qQĝ٫7\tH<#aVd9ZH,񼰼7tM&tكI5(\~ijAa;ft/9s +t hx8C  l0gQ ID /F|z.6:~14e101ed4-fa04-4ca1-8a4b-ded04d9cb438938b9eb2-a314-483e-ab45-1d2e895fe0568.ml10SVGFilter +/ : +/XMLNode1 /Int (xmlnode-nodetypvalu(fnam/2(o;attribute/Arrachildre; ,0%yy10hAI__id)idxxww1feTurbulence2(0.05baseFrequenc2numOctavesnoStitchsTilturbresult1Compositinoperator2(SourceGraphicinin2/Def ;4fractalNois-24BevelShadowxxGaussianBlustdDevib1Offse2(oddxxSpecularLighting5surface10sExponentConstaspecOul-color:whstyl1PointL2(--5xx2zz1arithmetlitPai2k3k3k144122Merg1Nod2-1AI_CoolBreez-5xx1Morphologdilaai1.adius1bnbn-5bnnDisplacementMapRxChannelSelecAyybnnsColorMatribm311nn1anim2NnonaccumuredditlineacalcMtoto5dffill0begalwayrestarfrom1cc82ccccccc8ccc1cccnnnnAI_D_166Eroder66_2(_1750 5RAI_PixelPlayindefinrepeatDspli1remov 1;20 15;200 200; 15 20;1 1 12cnn2;20 20;Diffuse12dyellow15;green;blue;indigo;violet;red;oranDi6elev18azimu1re12l201010121red2xx1-1yy322xx4688AI_Sta510.702xx8yy51-5Woodgraxx4ddoFloodloodblack; opacity:nnsCdd12nn212(131012۞I2H @(>fMӕ<B(& A!  @Cp @ !(1i" C2Z/`FNv3B栳Gǧ.y@޳FJCݷw  ,h ?Ș+bK< cvAsX["QK"ߒy(JԤHZVcAd{m ;qœ7Rb5nPt;NΤ=[L}nFO.G$IpIgVD=gkY]X*MAAs;D=Q- +N )Am;}K'_mt8;x;RcP +FvskڇW<*uԶlT,ܯ7N)@~oR n KAS3Zi  73ěړ;\"^oEWa]B)E,=cG|r-c mۖydRIѼ[XQ +6x&3 NDI&Xkږ;7$evO).4:%1&>ѷ(,$sb>@ʏIQ8Jup {Rp(76vϴ=cLQxc0 Rw47KwvFT9ThMif?S)n˯ yqb<'i@zj6iMDA,bR +J{mJ?/bI'š>fnbkxkMkM:ة{%rj`s_ӗ /2aJ?VԂ2;bzA?mFqp!CC"q"4@u|Dl~Tփjt13t{#0EYej9JÎ<=I-c3$n ZHpɕP#mb3q)TX< +IJv ? z-(ɧBe͎">=9_ bX0DSe+FL-TLgf6ÒR,hJ&NO+Q5LD +|3Dۀx<.bDhLb@  :3ȍ4ˊ 4 h|m @;RE J,PP#H|$Z`IE|G]m"[U,9h +I,gZv%0ARckj&3R(S;s粽()- n\'!@BwFS:T%TU%ًk34{VrA3kMp]~nu;V.J&*lhW{?[CIw-紷 z{Q3e<*^{@蚪-$&QNHٙAm"O$Sjg. ǔp +'Kh8{@pwI&Zlv+.<}C0E:\FDDDDDDDDDD +WFAء7Dm*}~T)R8D' 2 +T ]ؑfۈ%='n(&֚V۸g{|wZ7l{w1FT" y$Ezgq^lW{߫~9nK7ݴŖַ}bs=l-TWncIuMjUr*[-Wa;7qv~|LEon|zmj'~@T7q-wNoejNۭ+Ӻџ~Z7[l_ontt6n??SzSq~^moR64gMkWOyZ_nxݔW.Siۦn+L&3S|}mw}@n9&[1g޿m8%xogzo6ԓtOηٷ}gͮۼm5vH@/J5t.lݶ;_oZNmoÿ{SkoK6o/Q9Pp\q\PPq(4CW{)K:6=ZpY)޵m?m/a7Ęv8q/w{oi{-pu2֙S}t[9N}|Rtr̯ŘVrzs/Wƹ38WM͸_o,otb7X6wkWvoՕvj =2MmhSAi4P)Fi/.(";@h[ogmW=oy{+,q=Wywm׊Vyì +JC4&`xNmޛJC( PP`)Go@8TG~";F86kgZ+z?SϚu[y[L6u՘:_5ߓ񿽽Ӌcs^5zw5ys8[xkbV7k5,= #x}@^-3kn1תwiW{q}@Rrܠh:x"+b鬼(nj7n٘#"*2Y}ch#>Qbn(GF[}s49NSm[mn*4PJCi( 4PJCi( 4PJCi(M? +Yg۫Nkp5ۙ3NԽR<9WK?yznnW&pmLoVU~MkM7WizN&6oS)v= {s^1vQn8|Kf:= lon7zmǵj7m^1vuvQLVε5^^4Wz VG?MC0:y`+mŪ4z, +KȰ# 9!@`stc.V@+o6:*90GiTV{ΗjK(M, +"K,ɘ+;^i鿔JrpRd<0}c7+UWzTPJ(-o Rs6n+;LLfyzϿ8 o<U*X&*D[k_؝oa7@$ELoKba*oc1ѥC*5N-EzG2+c6s ?oκa&}TὺS^TDg̃/,E@J@1 `by`f9z6h`4QE~`W0~~Jǭ<Yz7^ i|žGqNbS6®Xٕ +Jk^cjv*RV˵*(d?#zx5vb712R{n@uF_Ai}~P؎6ڣbb +J` 6Ù;oۭ1k\3߿9XyjxWn붚o|v|l3i1pf-k޹>V9^^+yv_muݿ^w߿ּnl;Ώ9=[[g{^{^Z^o?Q>κn~-\۫oϜclf=3w&4wkη|?fw|5g8sLm3?cͳf~\W1kr7y3{τfn//m36 gм/;c1W׼{y5[s_1^9koo۽9jkݹ]qyۼy|skpf̈́&ϟV۵iY_?ki:ێş֜kk-⼹g8Z=[qڮλpf}kz_[s5ƙԸZkƙkuϙqjg8Ο̮w?cZWZ[{ukZg}sp&Vwn[}?Zmwmk[3眳;?޼߫nr_u^Np|Zom+gBxӺjl3oktWs{-fB>VmfNk[^{pޟ+z?iw[pƟ ͍msոZZ5Vz3s\7ÙfBs_3o&4o Do+߷zչ926:[~늽Znuys{o蛫:7u㼱ukUʃDqe۷kqe*= HTize]i~P}0J0ֱ<-a3OD04G9cj5Z:7g]| T9z"U|~oV!zPEv[RU & GOjnʐ$YҺ>*RJ^W{V:-3ab7+;Ѓ{ugNnBrz0C^X?Mei0YG!im|ıٙfm=kҪj]ێۿK͸ǵk8ZZcZ?{9W-ߝ~Z]Z+wu[[7}6{ZsWoju3޶u?瞹kY\oϫƵbl;m_~~@Ֆ A G3w82P)̴*Lo͊~ ̴ 02|0r +=rM m&9Mb?PV)ǮLZ%IǥJL xR< {u i1P3@ 0WqN̞i+~:o?+@JיMc8,oFygu;kT ̫LsZeq^l##&I)NB4 vjZi-UL(;4i ~٦ +c"Ĥ%lމ2zaF Yh1BbalFHi>- +k,yD^E"4\,Pr(c1BdIPoa@$T">Bc!ϧ`>&̳iM`x(uX ۳Q xNP%hFGdp +cbBpZcÚؘlT>ϢFF^+L(wo0!B`c%8CؠIpu-a`$(͈Ad4#C@s,0pBeT!cYh2-!Ձ`H*!|,Tڕ8 )("0p= LgkyȂA)7p$JlHyqHw)HSpaU %\P" bK Epс) O 7pE.,J `hń\:<A`E{@"4!5, +EKP2#m)]:P,NYѕV8ª..*SQx. +S)9GbPtd = +q/ʥB(V,|E29(XdP.()ol2ab: 'ۘvTA$S0. +҄Cl>ŗ &'ׄNV.wlR`ZIšcu Th +t4KZ!ĪM3i@.Rka%vѸ= AP 5`!1J'@ȀN dAh2.+!2V"h吼LdJ$ER!2pQd\TM"BG"BA:@݋K.w%DMd"Y$< DKPʈx I^ +/bGȾRTfBE""rՊHĩ DVGfELNbT tM"48T( <`#"t-R:EH8Db(lAuL:u +W&WVvb+4+V6Xe&S*+m L{@ZS Rd)&LٷI=d#=)eKBC:.6Lse0M)t@8d(E'pˇ +F攐9,h4ٞd2)U,#0DԳKRوeH +t0əlgW2&l)q|.q*8KF2d`B% UJ= !3ɲֲd If1d,2m˲߰ +p*+ IeF%+2n@uP4X%eYV.$dYgddh^*$" +АHϽX&E(\7!p.,fڈ\iɲ0#ո,wJ + G{@(c7΅#bÒT0lb5q[60.%HC5= j +BRs\T@U  +ϑ>QT Z;@؆t&+q(PP(X8"'KdtlЊ(%g@6\\`zl%PYD>We ,.Y9D$Yv.% +(P\4e+b߂ +lRğ4ŀǒc[dsqc MDay, R%|@)m%H.<HH}Z0-@`:W +eYWh|6>eYFnԓGLu>Ye YdY#Ȳ`C)!X,cq!eYe>@% B!_HP,t`reYk8!ɲA˲ ؛,˲q ˲= +6˲Ç\{@" ,P̣aɲ +ԊU8$Kdub̲IH,'3j蠋0Td(B>Yi+Qy2: fLfZڰF$?ЍVP7@$yךu b@vVa9a6Ru_v",FRlP[ Hˆ;aRKG,UϽgDY*ٍU~)9Rv``ITy例HJ^ddy]<=2&FGo@-2%r)bdը6TQQE] + +endstream endobj 135 0 obj <>stream + +G)qa'z ưS/"wHs E"t&' +tPX^\- f#8u)O! 6o.v +PX,Ԣ! +.vyU +JW)1Q*iH4D=$0&p%#p2H`i ,$\rG7 x +i. }j%E‹&{^!eqpTFʥq$%AF$#ԔL4(c8 çpE\Mi."+uMr MP1`UDEAaՓ*5@u^ 2+)؅.cCJ*= YwYe*= $EbGҐ.ځ,hUAݥ))a0,2KFݥ:lJsy ]`OB2a$J*(gp^dJ! Lhɫct) *&V|H+\DZ+"Ϫ9D' b(҃ADVMJͥS= @ht6ρD$h"1>u EM4D$R\<̇ѴP98)i. EK˜*,!Nɂ = 8(2#!=n8 !CxM$FDj_iQ/bC"upLA8ZX/y1 Gd[HcG4~D*fPTq3IVPld,+ahHeAa YS+ F{@0 +A9YhTH9Ol%NQ- +3^pX. G ax V~=jMh8JES-nT b4,Ykd]@%C`,#HB/zY!C7.bCPFrt| +gCKA)-,Y^ +OƩ , KfK7eSAѢ= P`H/Z^^혬.2.^p5lY[h)c `d/* VäAsA;{!@eCaX*2!(\2G Spi.YIq$s6@qU,tDc *]Hm&Id\JCp)1x&8㌞GB55 -[ KbZp1*DE{@"*@<c4hh&RIGQ&C` ddb*,VZ"sؒ.zЁEGbL*E\hȀlo]Z +zbs#,"ҦEkdeUA1 dU5 ɚbS1Sekd) xv(NOdJSd=mT"W"K2AWdTX +LB'SDLaJk-_z;Wig.b]$ApSK,D{mx(TaZ}`wB )U<(4 AFlt]DTI!hR-qĒ1S1)+pd3^/K󢈼Uv0ҵ7kN+3ڀq.&95w`8)‡Dҵ6Fލrb,U :)y.`bqzƪzXqlU7bUOTr* +"E0J)U*AJXg*)&N + Ej4ЩJ ׇ[4.- +jeHHP2X2 p#D 2h8 04ŅO\dBXYdl\  DHZX_ "% +ɵAqP8Pp`4G'"0!Lh6q, DҴHd bxP0 0`HHN*܈p""x"E,&dxӂD "O&@aփhA!ʌU]$JeKקá p5p"Q«A',>zؗAD4Sũl(&N{@8*F^o;! @Z8T4ީъ0sEBhDH0( RI:ekZ2J@2F@ RFa A1 cBԔ U@ÞiW=xNNpH;Ycng4:'8JpOIn&/7*Y??X_\R{:j|jUx/4ix'^)Յ|e_85ޥHRE̺ʵb +4qnZΤFRX(Lijݒ)SHpbLJ8hM|B8e8F$ ImTrj5Z8I0u}CŅ$TbMX+{kn ȇG vA]нV}Y8 + ?:vGbj1?v] +%&EdKG8uZEnӊZк )ʹ:4SqѾ:6ZGC_ȇ!\)n%CJ- *Z(90{$Me͈ݙ$ +B124$ʎWTrFhf=FFJVE1 +TfMgڳmʨq(U~mVЬx/"< gyW3anlutM]:ÎؽչHB1rRBv.}#Xoى YAk\rX:>tsX}L"9maHOytD4Ϩ ^lsFh/8+vo,s]lrs kWnQ9F2¦ɪl%OLFzQLLmbXW]gPj܃hy hއ1\kЃZ]Z/qn\;_ +Sy;&Pa g^ +]p\ ߥKAay2&]+BVj2)?Fh3#F{2O_/~+K'D+IMۃX,n*4<5I(h&>+#}^3e^ XS|HnecT^jB6M`w׹8J<rK [EfEh'|\lCH!wc{}r³UW#<=ZA!LD=<ԦV +m4mn@vxy1zqHI`csS[ʂo{)B48 4Em~v?S=}d^B +B&ݸ+ 0K(tMQa2F4Zdi}JNQ\N2lfoIm(l5d@ ! * N1J!KC3ƹiP?uz6&Xlܺ\3EgH*.4;P[ZawNo׊v&3;1z CgL繈x^f#nV￴@NAP84*Q5/Uv=r߂]V"qN`Kxzz j'¸I2?4gnjBE쳀CPvr\B町9[p-/YnD_IҲ\ڕHBZꅊ{84|3|׫E={g @FsN;LMBseCNcvX7-pz{U(/j|i\xjxmo㞯NRܻ|df]˪ H`S·H7Oz׺Vm1\MCؑ!we \,[ MΰLzwt0.̕ o؞A,i@LH\ʂ#NC(RlF̉#S5t$yc&T[NjgP}07eيدu$&v,|OMnQ 3p`L3Lksow;͉R*BOi:W?D"tc~AW'|&|9,KZµeKl:8C0|0 H%9DThKl\C+`F9:7gY_fYvΞU,,F"5*>yv.v‹㌝]H;oR4ͯU4g%h؉#}6px5NQGHwމu0H15[N>v i>8VBE(,y>X&V&Ml.k9MBBFCyZ'1&aBy@yU aJXvK4-c'ʾllzԧ ohaTH!Dy% +Yl#R@ў:T.tZF g)1E]jQvW1&yLKžd^]D#~Rgv\g!]HD{ɚ ӈ:fLG5Ո?Jz}ۇMECg8HM +);Ib Bxǣ18Z=`<Ek*?t#3i4{M@n(*+| +D./YW1=F皁IvH<1,@2BBZPشxUjXTPņLRQ<]?y=rkǚ^ZByô2e"V/8ff4| `\m?LÓ(tFsio]K԰bEUVTOjchsd,PH{#S'+ߥ! NtDo= {%f.Ju*#(sHhle!5c%(OCJXpvYCZDjm=ށ~7?9%$)S`>?Kշp F5W𙞍 lN5R10T(+E\lDBl8XΕ.M߳jnK>+"h6Y&7^h_iOϸg: ØdWB[FjPP.^WϾ-WUQAI5, &XFI&A ;!$ Qѕ3(\Zf֢39DJSS8mb`8R(G=C*M;VJWyCvԭ"ͦPֈYCH" ǁLq +9Njv!Kq4P}U*bU>rou܆ߡPSdw&C?oѰ~&% ٥U?^};~GWq!Yv BXc# Qw `̗t2?U]؍JÃHXN2`mCS3Wb!",] PKfhP"]HZ'\gT!^o{&(3y \Z;8*N !.I%,Sͨ;p%ҏ`kŐ=BwfLtjcB$n~xCQhVqT.D{s]G}Y߁33,s<ѺUO/ ϕ{sO_ةu[Df%&)E8l=4Co;L0<<.fHU>J<{$M5t&қa–Vgz-T1 <\EaoѺ3cHr\TAoB +0Dx`_cSӆӒh2ȷ^r]Ĺ{橦:'y#ϱ34a XmT/xP0/g%]ta$i3`8+-L oc!}ngD2`iۈTdʯ ͸k"0һF`~Fh\8]Eа3n)x*`;V@rQ믈eu:ƿjWԮy+Kϣhh`0H抭 aXCB-9fOd1Z3fGXSp,#@QnM][\rTRPڐsQȂ>|@_@ A JWChAY:$crLM)B9|D5krwѵ`2b=џk4m @bMb08q؁Z%H7bgIed>uSYw^TT$|!ڌen'2p_V6i&9NUs̒WxB QA|79E*7c%O +Uʅea&VzqT6֓eћN"ç'e]!DHgI+ʹv'q'"@CvcnXHk!BoaPԡn } %vkKgd`P)YvpM.'FQٌ=tg${-9#W3#8+O O#^6'%ZAT:ZȢ眐Pf +ב) $}dJSw6AI>^󣍂xŝp55 ;.pWwc`؉1H堑gzC/ +7E8WkX_I\kF޽eYnweUnʛJwk|ZJ}Mb=z4roLq*=AHШ;}zH]ǢwiѹG@[nVUr|cR}^ e֥>1;B* xQcۀ`3Vύdp<w,K)3ؔifmn[09r11Kވ\[Շ;z]fGb +G"6`ϧIYco6F`Jkz]Jn,]SHk YB\3AcvcOĊ*ۖ#y A#r + 8~K<ĉti*'-տ499)vDJ?R+3"|n /9I]b9 c,IFB2* l:(tNp(OZb,lscb.W ÿ +5B@+ơE;Ft4Q(^I7QrUꨭR&ͣ|P +!F//įG_p<^:̄7Eܒx3yOK*@r.=-ĮDkߘnNo>NKQb :^9KNy}u dɋu +mE&HiQHVHzBD!3i>S b㊦F+|ߞSg3Yfa+O ? P.gNaIVHVjl>.*Cd5ocՒJ$IJ҅g0+ +"WԂ>[66eZR_&:>)SZV-S7gi:&*h7}ib_4tveF7IYt&2ʄt {¯rXF~fHCӗ6 ws/?#ڗtUM㱳pd1AO[>Af5l/ +-Z$Tȉ\Ð {xrIRƄn> +_m!(KSU3t3Bm)@gьEDKz* <AwTL7縟끤 +P~c@Bl*( Mt&ʘ5JEsլ6Nl;~dkLcC4c5h|pxsZ O#{-vՆ3Xa"/-"XU"("/E"ЈodZW`n14@6۾\)Q-%j\hx,q'P#6ߵw{|rPЍU=[ul&Hj8R +RhyԦkUjoӢm<2pZY0ro5z&=\!8[d)s:޶Q2/ +^?AÁIV;Hn d;ߗrDi_>j͵.8JVnRl9ҡqйݭwN )6#!K s:R}\TF{ ^SC |'j\JŹvxd2k: 2iS{+6~E̳t$6QI T09SQ!ѻCv1!n1 #oߋjQ`[#eE_Alk¨EDhH`wY"M8AYh'7^Y=o!R^iH)sRlK*{RHƧtP#r̕}VL,6 Cj>}v݄yWD ؊qS]7e[i j 7l<`J]bWK+¼9Azm2ײHưO7YLb 0 s9SksKQ`:U?DՇS?  [ 8mǠcc gǯ|5>A֨;Cbp[`|JMG9 T1ru+馈Jyn8mJ: nj?|tFm]1(PyH"^hqDʙq!'47),4 C +Oo /mg/~gFMgrm(?5YNnO6hO py^W h +$bN#Bd鐪@Heb)[i*̞p4Shg?P!n>Hp`bYqĂk+.(ԬO~!mLxeeRb?%bq`e >pse@:_+brI@ \Y0k[) +W!wiB $uiS0a̫p +B1ד5qrstM &"4sKopHV.{d=pdOdT {TR@(lS6ΐnR!Xu"l%=yǐ`@!4 _׺^'< 1pv\J@ŭ?dgs?_wtwoDhP9v[j:r-yH0 -ܲ)LHK"!|!z-wD"&񳞲=\HYC( Ns[ƹl>('C3zayvr!o~䄚?ela~nL4r#P04AɟRDV>c,Ja` 7(LqQ/\v"2dsMcLB+$}ށ4&4Z9v),ǾÙgEH][^^Kh$6j&~ga=j)~vj뷌)1|,#0_dL4kL\̫g q>{NxL\;8Ik~۲̦.:9K :VnSwyZ=FtBm8y9ᒹ +&e˵6ar'=C%v*`9 _LC]5|3.iiy 'ζ(Xa +%4-*i|T#wJĴȵA=I_O.C;z TaV@䍵ά-|4mR+@%/۫Rm JE ϥJ9k# Z\{< p%fPqti|~G`Rd.'{),F0y-yΌPh:Nd2OE9A`.t\@t<-ҽ +wx#v;Mˡɧ|vG$7尼 mc-{:(u۵$2 +PL ۴RV.Pˉi >Pzadx6Y?=}"㗍ӽ8l *4 _}sJ\oqqsTrp(̦44"dl{&~.z.+Q³mX]׺QҊo ԥκ I1SXg~Yw/,_/mK:axՔ~Q[+la@|ZX~zƱbC'PBL k$2PWɨ5x)8f8=Wª71v ꬖi@D1| \@t%_%l8aFWK[De*w8@$2`3niϥΧU +-UeHAήX֩jb|Mƽ.H&ijycB.&%p-FGi*M7ʩ4VmdBS?+JtC\>mZ.ѣ˼󳸼|zrHlh@,tMDD?3Pϯ&'5joW8<zm-r&Sh +&4# 7) +ؙTH̿YOt0ě"0e\mآ7>J!-{7?w'1 +4qԎNadʱ >9WӼ-5:R tf:y Å!W[aF@R*Nv {4pvԈ)f(g̀H&0iBd0Pٴ|L>`,cng{aJJe2eҍ,Z-c l^i$l@g s +Fp*׈֡*FXFvWM~ +#!M" V>b<|f LY#wYǟ= +, sO-ɕ0c\zDV1}: -ezb(2YKkALZN-s]E w$C}.}1x`JLI?0IM"ʴx,J![Fߜ`|̓ɓ5X0ir܆>^l[P񣯞8扳$3MlB}5:~MzͮfPxNqsb-OxwWUCWjM)̊ߩ>1܊r佅::Lm5 W^hk. ;q4.F[SF'ƕH7ֶ1i݋]9CxO2G6I*KN\#@ >'YU4mdn;v $NI`zVdv_y^t8E`9m@6Y;AhaYRf :3ХI +k>lQ5xX.QZ;@qY&5C?zK) ";C߳]|aL g K콮{&λEUQanFFhNz5z4!CuSB|gQ6E#/Afxߵ I$MujTa!+Rc CJy$KTI\RT׻ܱÛ$z$҈+~೤\Nn g/QS\.3St`HyK@$e|wR[LC/fJyњ@EirՁ5fHH|LAIxICҺEpԔ_jXόC*ml"v-!Y,,!7rj(Θu4z*uJ#‚.l$:ětD+5{CzЂV_+T~zIA?e(|kjrȈ)Ç%w Y3]fUz9T% ( c;>1҈~~Yp?̌n (}C#*VWTd +Q)XuMƉO[ 2 )EF'OIxT^ g)F3q2`RHjUvG>~$/EH.FK@>]^hb ~Q2DgM81{B'wYvKA_!;`,ZIoA P93 +)1ź e݈gWtx aXYL|:d1 #=*tQuDn36-/fzL#8marTGW=q +L]E}J` TXE|a`pn5?ǾY(Ñ2+"2{UYȄ0G]9\EbTCHP*PkP +~rI>X̖3NIO h{92 w-[;Z2lM!0^52LF Z&JCPxa`X UX4;37 EJ%{0I"" 2^<5!X.UYZMbqŒijgY, +RmA*VgH)tSZ$_:*aQ%iEID*C.b&yIŪ.I{+lp[2V%V2b }NG mrHB{rY)(5Ց"$闈/0b|%ˎ_hxh@Jzk $]Ŕ4 +Qe Y":t=Зc{>[Z77Xu{!$ 9ƌ):hdyjlNTu̽I?WI9"U9C= sݕ ypM1ԣbJxƿ>lze7/X)7D+i1>U:^dΜ4EjMA9K$c8oCH2ɨŨE8Ü(Nc'qol'2ԑxb} n3wh+9yzlޘ}&vVx*FDZͭ$ݨ* 4DdX 5J2t +0t|EKd.(˩jlZf1&l"y#59.ok >.T'=J$vZ{zjDmOG<^Wap'Z4(Ok!nJFJ\Xq^%V1dTlAdm7,7*&7G~i Uux(R (>ye7E-iA/2k¥`IHhH*\^)@! +}=3O|,]>__x\ +ox}W ^C"!̓"V؜Z/vV~*hʶ4B6yI4g8/RBG9sjUU+~Lq 2nY~ZmΉ[PBYjכikidNbQUAڱI& ǴJ+iTK6mhn S?lտBa& !7i5kp|p-Q!w=;#m7lu_So6][Fp,TCcJYbZ+FuZyBQù=xv+d0QfAtHP VڌX2#)qD1Xb8OB$wUF]8ፚI4}^:gv_+| kŀ Y5J@h? ;̐>]s:e"\$4([trZύx38N"9G,Z40 + ZiwE^"@WR LPĜhh\fN|:%pb!Ab-;!W͜Ӟ,L_̙plRD~pJݎxNiy/4 {8u ПhYJ +Fxu +!4SrCZ8[$@Y!W5Kӳ TX# +1P&KYE~꒡3Vק؄اbrmFIܸ܄ľ_A#0HAYZ=kCXWK*qiIO"?ax&X˓,Y +t<.!EL(~QûЃkYAaD +vrtK2N|ekH0Qыo\uH$g=އP9Е"gQJu1n-W !+/9E┻VsB"޵A +3ʋX3Hz:f^kD 2 @ q v+1hJ4!VGvͻCu3OuʅDv |(:$kK֋A?3<}bXMIss ՇO K 2yg7?noKC m{lKD\1vTeZq;Y3ǟNI^:#Wl˹7OHܼޢ&`NF +("HKo8J-?+PhP'Dq>~0u0uww]c6T!܌. + +Z +8`VГ3lj@M1h{ i4xɨSM.sf-"j6.ŢdW+ + $Kvw}(Nu+V\GTiڞ.A{ +1yא3',ZvMk$z 'l-Ҳ~^CG Wz +6,sdd(B M8eg7,/ re9Y-fʾSIA2j4ܲ9`F(XƓϜѲ!ɪ8)8Cϐû86!cMN0Hd5@@Y'lϩvc.H0 9.<'`&d. +YA=,RF3*&.4Q`<2,*3 (+$bjdVL?lËRRÍpT\-4"Ml^$)N'@^'$=n`W +6ty"mdˈ}?{y~tZ|Ph}~1ot,H&dq@AG*tipXFN00uq^$LÌ *‡DIN+0*KPނbH!aqձ31ZF iKj؇ I+C=`_B(cv> +Ko?jxB8w6pnJ.-iIvJ p,UG +P ׁ[@aSḑ hudWLaLV"#~ZSPO%0b{QkPxT3 ϬP $ӊ!W#Q[ZӘ[ak~غm2Z4 f9`Uʌ=6Bn ai0,D~&k,VQlKB/r1j +3cnW&MK2_|HflDK|GlERw =و{H80#g610d> A'"'"Y6͋mQZqroXXX]OXZ0GU3W@ j뭳KCj8^0 +!?`P;m~Ou(Q^F =0J& &)7< )T F +'e9I _9YOe:M +bmdqL ըp<=16&Ad +z +OgC=ыqkQWCY1[ XN0P7hRWd׻j)!n#3W 7f%yns8u9e"Y$H#FBO>Ot5GȵXvw:8#;kbP[P aU;xT5-RCt+EnO m~[ix&26 7 +a4$c;?p;F`PzǿjʜlPժZb@n (3 VmQM<-CLNq&ݻi@Sdda&<Qέ_qI+J8) ~;*q Jv#> +' Vim.{׶tw[8G(ĻlB!YI"L\%DKx-8l!zH))Ɓq` N>0;xü21AZq v5Cq.tY.,j 3M%P\DB ;_JhK F-,5O5y U3쭝GV4yL9ڦ +"a~Pi qde\7,W^i^>ɞzƓ6j<DQ,r`vJ-5!c[wQTxbw-T9&09Ǝ;A&;GLs>[\&2s80PÂ*SP`Ph[LMqA᜜JN0`Ն{3)z1T=eF9ĭyr%7M[Wx:~"<`y9Oq3ڽ%[idb_#MGY9p;q{l"&򓷅/ +xA;Uu>wOp}Z` /OBZ%Q1|H.0Lx㈴o@HՃ +kjŮքxOfې*'nOd# !b" [ ,+XldOfG)DŽR᭷3 C!9qtv8C`x[%Rl! +&Vb$SPT23Bg 6Y+eRqP58Lĩ((/+ l>4>'2$8ۋbjg( +'D +@0M癕VNC׶! di>&N%BD< 5ٜgM*F@א`tKi\H3:emETCIppT?pQ Rn>ws2Y\u wc,"U^Imfg%,yNiH㍅be1#\fW@+Ch+SXZW:̳퀍1vӤhf}^}dN0']o%>ѹȪY>܏b[0yᑂ#ozFϫHj8b/#)΂;4&vK:˫D,] +Rɶ0 +Ռȇ풱㙛m鬣vZ ٙWa_ Ip"v^0!LXP0b/#H'SV) Sl(Ew*Y!Xr[A: )A&%y0uOQe#jOYiybDGQ `%}Ed^tq@?#6VQ1P_ 9XcNJL5$K>{$"O0=vAB‡!-0pbw'IJA2vJH%j)n!:{>zY I1 mr0pB!^:+lEi 654p_] g +{WJ~*&$2/Hβ茶Tó,?^bH :52ew W"g଩;gR+%o׀dg{F34 N08aJ ;R&.meWEK57\HDirQfTha)pR|GFuM!"%5$;lGdjL54>y͉KjL5$5S`0Z, =m%%F=e +LvSS5d }s)q~^jYc1UL5ebaj8vX*u/1l'ț01^$BplNK Xf1{1'K+vOo407Oc, &UBTKx8j)>j< 7qNkOXbGD<(*Rt7"F7q;vVk$ +}Fe9q+%o:1o: 1KJ3ջ]L=p}'/aǎ" aeyihAN0p5QA'*r, y%snϖ9O㲀iV1'p\*`@z ^$M16a9w_ M*#wUa=p4:N=9ar'p +d39b-5 r9h&AJ'Y`[3gIG+5Ty;D'h䊼mVapAd))&#bbN5ͽ&k|?SBEV^ _7bƲ| ׶iqAZ`-ţiq u6 pt:kVw@i(nق=1U8Qd( `.WDgeMS +\9'5Bos [ 7TL-ab+44dÝWRw^,Qrv3"0l"`}y sqS*!H@%n_bG%V>M݉[ ²v`YS+vN0Vo9qAh +TɄ -RAb ^6 "vzone=_&U@04D!\Sy% ѪNKjNq 'bGgo }um-IZi3pb#r"`eV乒,SM~Zrhgq|BsyŐ9`OŌ}ѵEF ˇT{?zTyRGgǴX_s<)Y Lsl~\?8݉O`2"Z'R^o 9 5`&ÀRwI&:[1HVǢ6uj7 l V\8}>aR E+%GC 6+X1+iCڿNNɹ=2s#D1j+ ïkAG ,)$4.9Khe}|wq$!jHd5 dDs6(hy=3>5$.\D%AJ]݉;QY7I4$~?%O#O섲ڽCQC}`yR>%aYSucKP ԽYR\xbOc6-g} 3q>ϫ1=qs+@%R׷.g+|8q8z:>x> IjD+FO4Yv~ᡬ'8T#/Iߝ80ދ6 Tr'7]x)C Rlk/kMC>oUķ}Ɨ8t?oR%1АSMEA0ʔ(Nž i +DD(4W8AqcpIFS19$ep{2I∕LF:w-v SlQ +4G3ڏS}# ",5`m0YXa `);`2`rrx ~K@m:LQX[ئ8S8;8iőgj;Lxac _A05t*d=Rbw!ZĮyY,d ++!@b!i bB OY;ViiS1G),%-' 08`+LឳҤ9~e %r@R=aR\h zzh<զ+'kL wcy)ȗy7yk8^y"{SZm P"#BylKg$ U9'1 bXX/A\*;E@!PQjd"2Yi݊&"@|m?3ۧo=Ȫcuo`=1Žod?'3)W]yam1"#jX"<^nn/C,x7[(I_}8` +L@#DRO &j0o%=gO< #q;PNukͽ0Pqo.ujBO wK6T[\IsN&o*&37DvY˗TCiѰ>y[ a[[CwBe ~,F?8duz;. wu`WHu []w#M2ɕ;Ќ7'5e~9 kH#[OA 9jA Y {GV(5CqNxf#D ]"53Hkbw4a}5Rm*2BwD>~hF%kVs ٜ(jX_$@(l|r/=u~N*Z;@6O4IqG-6D9y0\ݟH n͎{avd4)8XW&=bXdꆂ Rc5g况Pߎ(m5.u]Rx>Q`cĮs'g2Æ'M +vE6fV5i7y ;0ϫRXiYqޢ%c_(_Ѵ"pGǙp@q191nD2⋥j/JKސaρ$jyI]+a$~|`οs +wt^B>Y35:.DxyLED%b]?..vaadpfS Go"+0||]"uEo&Oa ;VlB=[w, HAԏ~v +Ho !%;åxl @L6٫3){Z*vVWmjjHIIF>N7V[K ^訝U#w\>O]'j{ߝבвhSz={Kq-?T| n/ʹ4O""kD$'n`Q]nw'^+o07 S P9:u?"8B3B8C3KI=˝h&rC;[Xd9Xڰ6kVy*mI%HU*yJ|SژҤD*I7O:H+K), +j~c(bƞP6g%Xw0l.b)_a4f }6 )шbȡ>QCj Iq:Βsn;dHw%^ժ/ߏf?oGч,t#r~wN0PG3 8G.CC& +8YI(m ۛ>}QHf,w P͜&l~GBr_w[͆ f. 3%*9oٱ3i emNB#&4jSR,Su T^"m ջ 0񪥵@^~4$]Q$t5Cy(4_|,N? 7W'hT1Jg1W ܪNJ4UauO!bBVMYC4`NJ ]R,wC dBa)&Y[ڄ[jkX# ƚR'07Df(h[DV-mt݄ $3dg m8~b`PC0M>cG$$B4G`Rɺ&ZS0,8ͯ?u TI:t­*qk !$H"%tshzHhPŅ?rhhs'.{F{E|wt4F[҉-UtuHQђhՎc.cy4!j'0Jzst-qu~h6ę-Ҝس5ĝEN)4 +XMgXzFQ 03LSJ'Y8oaq: 7V4n+\>M9Pv!A=bwfI7PɒYl4b, NDmǾi1칭!r%YSaMB;ʈ0܊Jx /4 ދ*Vcڰ,ZF3*eJVc04 t]ۓΚRv|cDӺl6[}pw\R +P1071jHن(nU +0*n0d[S; 8ʌp*7S6fTWOpIP{6lf<',|9ikT+z[Ģm 'i)8W)P=ڔ˘<]uA/ؙ +AXᰐ`Q 1 !L/sV/N31UlJkqׁiI?zg%Sf[v^a=Twh]UL(QtՍ(&  zbU=604˰Z[r V&Ho +9CaE,Y=R ͼ.a5H.D1%[v g0WLi#$8Jb+vqDyåјQkZ:q:\U@(u,B1ª9/ {̱Pe:=)2j]Qݡ9e+q%<o`.3-dF%8޸$XU#Є-RM=āM1M߭Rpmgþi2ZBb w-=m< ";;rǑGdgU\BLS ]%Dsm,cB' Ul1xIO1n!{(+LXT$u(>"]~ªiWi:jfU ZĪɃآW[#֣ؗ()W]fUAUn@vt05Z>==],`T=sĔ#|rg3*2ڳ&5^ WQy@Z|TPgg gTP3~'RնgF> \H*-Gja $`ۏ~Fݭ*,69ϴh|)Ѧ*SIrSSaBSwMFe>|/|l^>-!꙲E,/䖉sny47aƁ?p[hk9 T=0*H}SfNutE? /tW +:a0T#Y5 2Ǿo֧pO|2t]]qFZ^<ŋ$®gHj Pq;e&3bK%=$b0otu֙M4ھ\?o]f[昋9ywO޻z=$(4T HQ?: o6,SNAd`͹/orZ(YwܯXDs7PFͶ O  tuHJr7="(cZkBb74dzO H4浲Sb:QEs*tȞ?͇H잕p9 Re8ž aPᖹ,feb K6bz 5SU~W-8 G`3<.RIws[Inކh٭0~ڿ{W9q^;W +]H03n"PK%x!DPн$<67 K;-+Q_Vs5V|#xMa]h+kULkaȈBL3 c6WWaմCSX\f7]B+%,NcP4VKՎuCWȇTH)m|3LUlngWZVP®匜(sndn| '^^;1ƗXn4кj Cxʔ1lLJ 'tYA<Ž#{s:lTG8ϡ!*#0 +j =uG[zk>~MHru\xpkU0j, ۚ9 NESN(u?XRwvcf$d`Zcl.VO ,ߟ)vc+GLCJw4+P60GH; 01%fY J7e<)bNЮ! n!lvC%rx \x8y{Jcvnr()./\ L~#4ԅi"+U!ɞR'oYҷTN[^y!Ё V^d}Gx8.iIl}awiZhYTcp|=(􁔩&#*r>_Q'ٚR;-r[ܭ" m;t I4O$> I0:@kGW*[ fC4 +"-7HP|=as-Iv^ lcUBo*5xUM9Q-+(eqxʀ =JƶFI[f)ͭɈJIh&/A;0 Fuv$.idۜɇOn 5%Pfj*ESN"e%gV*9;pmTTBe3>NIG^0VD͢FHWuו] .93M]6̖g3IkھN:߆NmMe& e]}Njf$oZ:KB }]d0`+dߣDAxeJBmߡoL xOThS=H7ML +1Ҝ-e`#E6c^%UC.33{Ȗd'kKtw73ا~+.Ȅ(M0W Iȣ´߶h B; Oe@UIdm1l 4o?IR_5Q(= ztgm{ qv*'LmhˣgLO{KxHO>zW1A`w. Kɹr/ҡ+FΫz_kSdx'mH7BdsY%K>ģ\YI$uͲ "q"16Wk0 0h"D6 3q2,<> QX3-t}h=uWOŗĶ-0? /cLYm.s;ϫI> `]0!`Qi,|S +II +9S'O3~0e |t`:Vo*fPŴSh9AKxZF)6Ni%ˡdNKa28<T ɸ~Zy0 k#?iHC^> 1 +D*hJvdg(rF{]aY B]3)M9M_fvHbk;U\az6BqsVm1a+F ΃:p)ڰK.$8`P }my,δH x}c4"j~^A   OGpi$ qhjȌTknؾm06&Y/CS^rEe1>2z?1OTK<*H^ @>Y"gF\ fM .jbdЦE.Ӹy6o I@^ b߫v-!څn:)P;emOfGŸQYQy H1㻖tw1ˏ. =NIA3}d|Ik^&qR".W%0qw.FE2U?$g㙺[ҖC xY ?Txآ 4[]LI0>O0t +d+8 +"MBސ4V|[H 4xDЉM ¯MGUFS:M "񃪫 +xa]`*hR^+e/Jdn`;ɩ跞-7\9phlom9n!XF߀19@%oB`liFWo@*A^ 9`-b=i07. +9RȡX:xΏ~HV5L7@ora. 58^  ?%CK pi Bo6^`wߴ6̶xJV`ݶO3f vxtu~ C ҌމݛD^! Tp]2 +kۀ uXJFRfCY[D12X1G ([+Č0а]uFa|A Be7 Iݿogx @0 $}[A^q;3^ nz]k36t-2h!`uqU*y 9O28:tH}PZٙv ++4Wuj÷6%TsDB|EpVNCW5ap>-URDXPyl&`glˇlrM_ci/ňZukaG*tntߢ>ȬХae9BQG9ngb]Hx5cIL8n?CPn\."IQqz:1Л-'&S Kj6`u n SKoae`nPDW"4þ:a˻?BSDz([VWRmK7e>1 -|j[XBѝ N X4h +2-bQәp? (89hǦ|0aAH} +M.6Gb̝O;iN^oNG9%.]DW& wo^ <)-R %cat`#V"UPBe)1 !Sj̆^!1t)uyfSd Բ `c2]0/!D!y]@l$Bal!h.K<1K֩MzJQ]ssKq\a-e0 .PoheY +xGaX Mn"57@b'< +{avz^Anl-XDw1?C{$LKdv*⳯q+0goB-aQGu4jv\Gct yͫ&ZՅ5bRF/WI _8}c::'EU($#ڙ}TO07eO"ߴD#HϨc#8;29K'*gqR8jL s컗g ,y|2U(Јđvo(~5Xyś$2b!=h F/c%{4Np혶cCbv+QNlC4kM.yłEnb8J7P%hNe)Τ s`MR%@02cך}HL}A8]TSCrU5,{b'F9jD?JQQd;31 a;|7쾯pn]FX`h kFT +UD';u(D7(zoc)OUc:pa# ԜE;YCV0_q!Xjh!Cw)TI$EzXVhWJ[ +\X\< r Q56dMx2  V|sHH<?=z|OlSZ)jTD1 u.|蕆8ƒiPsYg5B|z{s. /H}EN ȃn2oO8 +C{ +vߗW^@ء+, +R5>K[43Ev1j)2y QA+!C֮b?RLJq76dd|Xih_N8i<R Q +W9'Q ݵmZ4dRKq[ˑ7ޜWy'c7jp\s#ƯK?.oKS?8i;W `ԍ0 2*38Pj.y9ٕ֫>Î9IoD{hJַ=EsBC9nEYΖPЖMlhfgu99JP' 8Gy4^^';7}"׹>s 4o8N\-@B&ΥzW6$}W vԭ>X$"Z^8ВGg|yCysdך U0J"95&v77ATDЊi;\e #=+hq+.{,RG%v8QOPN,Ž6ZPjSfE#Oah=v&DYWvi>u*P@߯HJqzՁtufP+I=p[aaӆ[z} ;kKD"zAW$Z9-bf$gjR KLk϶cO8G{@V߫3,]yRH!d!SQytE¦ϸ B=!=+'t}1p]Q2H{kP]2 $ׇm|6˒F@%!vftDgNm/B"a L.Q>t.[wr}C: +Ut}<؆*Ձ\ֺEzD;I|!ކpEWDT +ygH흶/ya _$խHaj {Vő2eX96͒ +SMNK)UmWe&kwlQ~b 1"mHe5\Bri7̝J&80 :&'=*Vît{}`7aKi7oS`Q*{fֆ {KyHTD%VBbU!r'{uG kg94u`'h!B.2yA:n(sZb&GFߓVm)TɺEf[4**{@3oF7ZBb[08)Φr" +;{%({{ӄհ!*@=J@p)\ĞS &1';pĈK5QK/Ȃ\QD/Q } Ug3Ԇ6[=NXDRzBoì.X#x +D;䦳w+mG!sߟH#J]TQߵsP%EoQɸP7թ Ȟ&GZе%F&N&-podڥ[ @Wu e[jNbg)g:8BcmLAVD8{T7HFЩ4"\Έ?kYSC9j?(MT1ڵ$ɟgCs.7Ⱦ\Se^!Z+wM/$7J%٢HS?|< +mw'8}_J ٤p$PkuD)^oJfR]rR%{_+[xǹ?ږkbV2+nԵtIV+m_%b)Ǫ7;懭=tspS4;ȡ%4k\I@[pQkJ\`|W2M'B+1unV[J(=1G̮ +AE+\wِ- zs5]xkˡ4!׶ywwrlddFIcKSFtpqkyW/mj$ђPavF)/@"?;ɲtHP A9ǖVP;..c[Q +5tnf2bE,Hbnₔ]XjpU痣\kVNed5 I1Ҥ;y@{L +p/&2p&-è0B6;)VKeIrL*ް m)GMФ2ŤuvJ|2F2AqE(4]bz{wF۬ +iZ5j?2)+o9l?זz +P3yɡo%u!UXΜ(emF +ڎM{2׋@Լqakt(Q~SbnD>{\R#hbqNP&~h.R*D3,e8ަ@|f_ 7/9 +9 6I(!FIsҟ tiaFaV[y]`uxx-kV ҷ{H4F :.+ ńAz8'p9icA=" "S OӮb5Ȫ͋n%#=4y[ J @fťIcҥ5vEyŏ7Dx+=sNgjO,'@M0W I{a?R }Eh(/KwJmb+Xd9ܯFMQe t' +WK o8;Ҋ.>bqGQK` ́PZIKk"ԽM4GVMGyknX^"$DzEguB|͝ QB|**»FKN ñ}…5b@[r_X4g v ѻ@"A, B ЬU'Q1S / T[ U!5!6Gw^>ĠV58uI׹{B BpI2Y4L24<;cb^G8|=;A|1xg8_m)5EQvS`&N:0$4~o4o +47xc(ׇ `e95/tgMY`/ T\1:t#RyL8z !+g$ :~4E{hmg#cGV  T(ӜV n4XsQ7 (PF3Mxs6򚢀< C~ΝhWtq +eHy@jʹ/' 99byF}*K5Go%lq"(uΒqіQ.Moe(.6𾧹ЁbsIeڏ*΁Ћ.ԡ<"Ԕ{*L_ 2Nꄤb"u\W+tOW|&"p7 +!8Cɨ96Ayµ$A< L|IX fD0OiA`ۢ,.>[9a\(Aj&x31=Obp3ޞ%`E܋=R5P '>M\knא>77'oJFs20{»Ŏ:*{HX7mغtÉG6$ eYfzUݾu_a2caq/R +u*QHM7{ ⢹>@F +<@h:4gGqQt3ի +]h ;- ox%!mnUXhx=yzdM4dmrp&x웅Y.Pb"]~^Nj hu?` ~ۙ*UqOa`i\91\K+Gv8ABCN>nQ='bUcT]#Tǃ 96xIx0G@ _hLp,`5Wa @6v1tV$7y4x6)ڊjlڹj1ec<(a9)1EﳺopVe>TS -Z4 )Ո+=<\tZ%9B &+*'?U9"TaV yc"zG;;8`0:2EHɣ,7#ZAu*PbIyL< gRH>jJ1r{ jvtGL-n)讈6S;7S[U)٧,{8qXlH3*oBY@ySijrSV-SBk.[kf' 穣DT|;P/KWD\Iiq5Zֈ 8PL<0ZrIiiX@gcX"~KO^L]3. Ee/&af 54<[qȽBP7 ,*z>!oY Tٓ8\#?\8AN#=L0ǫ n +8YpK85HPT#: KJ:KWE7Ό67k.+q" cBe '>,:[XzX`iU_ZTÐ9p) G(_v^1# +^ı4i#,۝ +h|CjIw8~߉ڔ2-KABkRVsgZ&L<ײq%ӦǷ +`>tEI)91Td$^M6':c"^޺bq5B@uڂrG5-2.CNm~^{WGZ}H/ᙿb-<ۚ!4~ +q} :>2P/&ipXlupٜs܏ƏKMxkcmj.#Ӽ{#~.[p{Q9tkڻ-[ .(ߨjvS-2HA<4޹6kV`nXgi@d?KΐY#n_2O60 |2qPy4kf[vUQܓm݌ իl ]~StBe]0Bo@@ c|A^.B)}Ր71>LkcQ'ck-}1pI)}S?KndRꌘ|VD4V.Aa̙P黴r1Am[Aۜ'}]W0dH_puā!WKla v vpVR2K/G_BPGHAɆ֖z^dYa{c=x&'P(͓9g.9 ˒l${5$m8׌E>N?(V')hة*OV}=o1~]J'ƙ=5%Xyj7^r6!u]7p! kGs QXMS n\.[2:4| ڻ]:L~ǙSƖ[Fo(jtJW69utu x!@K4Cszw]gF|ZAz'@ϛ:"|<qOZ! y”qڏR5yA?pͿ >BtaI"*ƪ?biV3 (j\!'']Iq$zj!7 -BA'+;z xC8X**+ R -K.$d8F^=/[pR^f͢7Gte&d\奫die2 NζOuQ^Y-\1Fv:=ŷÙDU-UQ h E;4S^> E'$&j 6`G֐v*QĜ7.>yChrfa7#=nO axMp̗ # ͇dVn5*ROC3}_cvjK8gssp3#2S,jPy뤍h/cWW欆tb:ɥ +~Gr1V`x.)U 04 L5|P,7jTmtqu\NMwu7` rL-D.%?aefh >1u[f@2 YI"x"Iv^GtHrDR-y9"9L),G"|'}?'K&2-K LګJ(j𳣦Y"P{"ph&T= LғS9{I4d/;y^0@IG˂A<9T j&JPP$F,@0V$@p La"/n~vHIow%{uRɨA*I +Be9IAT:`9b Y)""Ĉ &NծGNZ +*s7[QGWIOz̽|ڲ4\!C˓tPu1g#l7QUKN"Rj #ڃf\=@^wbBFWSAqw4-KOz BeAؽLJMePxP"WƻNZz%c97,3LA:ɩW +۝Cs O) Yqki)8a;,JU56{F"Vh +/bÖyRުNHi5##T`n ɦu@6Nʽ ,,7b.5Wm/ +km}h<r:!fx:Cd%~eL)K?wdp +6)? +endstream endobj 130 0 obj [/Indexed/DeviceRGB 255 136 0 R] endobj 136 0 obj <>stream +8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX$6Ra!<<'!!!*'!!rrmPX()~> +endstream endobj 127 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]>>/Subtype/Form>>stream +BT +/CS0 cs 0 0 0 scn +/GS0 gs +/T1_0 1 Tf +0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 12 0 0 -12 -103.0967 -61.2783 Tm +[(T)7 (his is an A)11.9 (dobe\256 I)-10 (llustr)5.1 (a)4 (t)5.9 (or\256 F)25.9 (ile tha)4 (t w)4 (as)]TJ +0 -1.2 Td +[(sa)8 (v)10 (ed without PDF C)11 (on)4 (t)6 (en)4 (t)3 (.)]TJ +0 -1.2 Td +[(T)71 (o P)5 (lac)6 (e or open this \037le in other)]TJ +0 -1.2 Td +[(applica)4 (tions)10.9 (, it should be r)10 (e)-28 (-sa)8 (v)10 (ed fr)10 (om)]TJ +0 -1.2 Td +[(A)12 (dobe I)-10.1 (llustr)5 (a)4 (t)6 (or with the ")3 (C)3.1 (r)9.9 (ea)4 (t)6 (e PDF)]TJ +0 -1.2 Td +[(C)11 (ompa)4 (tible F)26 (ile" option tur)-4 (ned on. )41 (T)7 (his)]TJ +0 -1.2 Td +[(option is in the I)-10 (llustr)5 (a)4 (t)6 (or Na)4 (tiv)10 (e F)31 (or)-4 (ma)4.1 (t)]TJ +0 -1.2 Td +[(Options dialog bo)14 (x, which appears when)]TJ +0 -1.2 Td +[(sa)8 (ving an A)12 (dobe I)-10 (llustr)5 (a)4 (t)6.1 (or \037le using the)]TJ +0 -1.2 Td +[(S)-3 (a)8 (v)10 (e A)6 (s c)6.1 (ommand)10 (.)]TJ +ET + +endstream endobj 125 0 obj <> endobj 139 0 obj <> endobj 140 0 obj <> endobj 141 0 obj <>stream +H|TiPYj (FfZPST\EPQD[iQ[i\QUAEYdD@A<QNe`Oubv& gm̗}_^$a8 Uar*-ʐHj2_,c4Z2?-̪/יc߻'luLp?$T#[jo;i~ѢESQ殈 R|5(3:8Fk +;{dl +B-S)Jvrdaj2LTB2$LR*d\"d1 *YXLEMFaS-G+ +(1S,1URmwXlL܋a0dYb\ư1lcL Ƙ/]f-m|XVux-`(F /7>d<&Z)J"g4;xIɘi4i-f)iMX.عMD123BB&KpJoI$Ch &N'S>@BL&# +Qh)~}kCQf[ JX!(t20?{"nZl7{M<ˠ5<`۹`$q<!C[aY,uPn/h`0܅ShNRvyTvܙyxYL4 _y AN$ ^W4 hdU SYCjDǿ6w"ߜI +6{=x[~~Ca&bV:؉`y) IrM/̆U*tW A '^d^>x+(&߸{2ػȉY5J3v^;,'8*)ы@+2I`7 *k^hyV/[#*`n[H ݾ~ӖbK%cOp! b'ANRZ}Gڀ0KwHlx,ٸ@\0[Yt!xfu0$FҭTҸǮ6NnZxĐr :VyxG=w+[7D3YH~e^ `;F7PHw'@C!} tnfviqak}]Ӓ9I#"\赣k8m8sFJmMn[7A n\':E]9d?ahyo;ng6}B˯蚬HyW+49szL.a3J\DdkR~P0EJMLId%>_~euz)eH`ՎW3/ >t3r !{4 |4XV~nk +W?7KoN^||,vM("ǰ&͂ww^(|'7w˾,uG}^e?Ѝ$z) _ nHH`96r64AeZ6ͽ_qR  +W" x̿PrH`/PX,p;<__#Cٯ!neq,ncΘecLv8rp5[H3M6P>Be~Wb+ Pt{hnؽ<+yI[[H -"'jT_}WZW1!1LA8I,p%Ir"?OVtӅOY_o>Lw S&Q +$y]˔;qY&2ğPJe>vd <.a3GfP?b>%xjl@96tTVW%WKyx!ه_ W_a΂XN G2{"J8 `&؉L\qc:3hF%(rO׳ AHlUL4Ȁ$Ȋ-1Zgr_Ɋ_G7`i8:, zr +iuB~!74zHh :S8N +S4npS-Ivީ/&OCy5$zxt4Md7iƻ҇b}i,ptb1 +xyVNth"qG'@[B%h-Y_]7> endobj 137 0 obj [/ICCBased 142 0 R] endobj 142 0 obj <>stream +HyTSwoɞc [5laQIBHADED2mtFOE.c}08׎8GNg9w߽'0 ֠Jb  + 2y.-;!KZ ^i"L0- @8(r;q7Ly&Qq4j|9 +V)gB0iW8#8wթ8_٥ʨQQj@&A)/g>'Kt;\ ӥ$պFZUn(4T%)뫔0C&Zi8bxEB;Pӓ̹A om?W= +x-[0}y)7ta>jT7@tܛ`q2ʀ&6ZLĄ?_yxg)˔zçLU*uSkSeO4?׸c. R ߁-25 S>ӣVd`rn~Y&+`;A4 A9=-tl`;~p Gp| [`L`< "A YA+Cb(R,*T2B- +ꇆnQt}MA0alSx k&^>0|>_',G!"F$H:R!zFQd?r 9\A&G rQ hE]a4zBgE#H *B=0HIpp0MxJ$D1D, VĭKĻYdE"EI2EBGt4MzNr!YK ?%_&#(0J:EAiQ(()ӔWT6U@P+!~mD eԴ!hӦh/']B/ҏӿ?a0nhF!X8܌kc&5S6lIa2cKMA!E#ƒdV(kel }}Cq9 +N')].uJr + wG xR^[oƜchg`>b$*~ :Eb~,m,-ݖ,Y¬*6X[ݱF=3뭷Y~dó ti zf6~`{v.Ng#{}}jc1X6fm;'_9 r:8q:˜O:ϸ8uJqnv=MmR 4 +n3ܣkGݯz=[==<=GTB(/S,]6*-W:#7*e^YDY}UjAyT`#D="b{ų+ʯ:!kJ4Gmt}uC%K7YVfFY .=b?SƕƩȺy چ k5%4m7lqlioZlG+Zz͹mzy]?uuw|"űNwW&e֥ﺱ*|j5kyݭǯg^ykEklD_p߶7Dmo꿻1ml{Mś nLl<9O[$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! +zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Km +endstream endobj 143 0 obj <> endobj xref +0 144 +0000000004 65535 f +0000000016 00000 n +0000000076 00000 n +0000055331 00000 n +0000000005 00000 f +0000000007 00000 f +0000055382 00000 n +0000000008 00000 f +0000000009 00000 f +0000000010 00000 f +0000000011 00000 f +0000000012 00000 f +0000000013 00000 f +0000000014 00000 f +0000000015 00000 f +0000000016 00000 f +0000000017 00000 f +0000000018 00000 f +0000000019 00000 f +0000000020 00000 f +0000000021 00000 f +0000000022 00000 f +0000000023 00000 f +0000000024 00000 f +0000000025 00000 f +0000000026 00000 f +0000000027 00000 f +0000000028 00000 f +0000000029 00000 f +0000000030 00000 f +0000000031 00000 f +0000000032 00000 f +0000000033 00000 f +0000000034 00000 f +0000000035 00000 f +0000000036 00000 f +0000000037 00000 f +0000000038 00000 f +0000000039 00000 f +0000000040 00000 f +0000000041 00000 f +0000000042 00000 f +0000000043 00000 f +0000000044 00000 f +0000000045 00000 f +0000000046 00000 f +0000000047 00000 f +0000000048 00000 f +0000000049 00000 f +0000000050 00000 f +0000000051 00000 f +0000000052 00000 f +0000000053 00000 f +0000000054 00000 f +0000000055 00000 f +0000000056 00000 f +0000000057 00000 f +0000000058 00000 f +0000000059 00000 f +0000000060 00000 f +0000000061 00000 f +0000000062 00000 f +0000000063 00000 f +0000000064 00000 f +0000000065 00000 f +0000000066 00000 f +0000000067 00000 f +0000000068 00000 f +0000000069 00000 f +0000000070 00000 f +0000000071 00000 f +0000000072 00000 f +0000000073 00000 f +0000000074 00000 f +0000000075 00000 f +0000000076 00000 f +0000000077 00000 f +0000000078 00000 f +0000000079 00000 f +0000000080 00000 f +0000000081 00000 f +0000000082 00000 f +0000000083 00000 f +0000000084 00000 f +0000000085 00000 f +0000000086 00000 f +0000000087 00000 f +0000000088 00000 f +0000000089 00000 f +0000000090 00000 f +0000000091 00000 f +0000000092 00000 f +0000000093 00000 f +0000000094 00000 f +0000000095 00000 f +0000000096 00000 f +0000000097 00000 f +0000000098 00000 f +0000000099 00000 f +0000000100 00000 f +0000000101 00000 f +0000000102 00000 f +0000000103 00000 f +0000000104 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000240203 00000 n +0000055738 00000 n +0000239014 00000 n +0000055957 00000 n +0000056198 00000 n +0000238436 00000 n +0000056274 00000 n +0000056475 00000 n +0000058188 00000 n +0000123778 00000 n +0000189368 00000 n +0000238486 00000 n +0000244496 00000 n +0000244382 00000 n +0000240721 00000 n +0000240806 00000 n +0000241190 00000 n +0000244533 00000 n +0000247192 00000 n +trailer +<<7F63C97E8C2566489619F4889DB76B46>]>> +startxref +247413 +%%EOF diff --git a/content/GraphicsIntro/Ch03-Sequence-CreateWrappers.md b/content/GraphicsIntro/Ch03-Sequence-CreateWrappers.md new file mode 100644 index 0000000..3cbcedc --- /dev/null +++ b/content/GraphicsIntro/Ch03-Sequence-CreateWrappers.md @@ -0,0 +1,21 @@ +```mermaid +sequenceDiagram + participant Subscriber as Subscriber + participant SrcWrapper as Rx IObservable Wrapper + participant Scheduler as Scheduler + participant Observable as Observable.Create + participant RcvWrapper as Rx IObserver Wrapper + participant Observer as Observer + Subscriber->>SrcWrapper: Subscribe() + SrcWrapper->>Scheduler: Schedule Subscribe() + SrcWrapper->>Subscriber: IDisposable (subscription) + Subscriber->>Observer: Set subscription IDisposable + Scheduler->>Observable: Subscribe() + Observable->>RcvWrapper: OnNext(1) + RcvWrapper->>Observer: OnNext(1) + Observable->>RcvWrapper: OnNext(2) + RcvWrapper->>Observer: OnNext(2) + Observer->>SrcWrapper: subscription.Dispose() + Observable->>RcvWrapper: OnNext(3) + Observable->>RcvWrapper: OnCompleted() +``` \ No newline at end of file diff --git a/content/GraphicsIntro/Ch03-Sequence-CreateWrappers.svg b/content/GraphicsIntro/Ch03-Sequence-CreateWrappers.svg new file mode 100644 index 0000000..7cc3303 --- /dev/null +++ b/content/GraphicsIntro/Ch03-Sequence-CreateWrappers.svg @@ -0,0 +1 @@ +SubscriberRx IObservable WrapperSchedulerObservable.CreateRx IObserver WrapperObserverSubscribe()Schedule Subscribe()IDisposable (subscription)Set subscription IDisposableSubscribe()OnNext(1)OnNext(1)OnNext(2)OnNext(2)subscription.Dispose()OnNext(3)OnCompleted()SubscriberRx IObservable WrapperSchedulerObservable.CreateRx IObserver WrapperObserver \ No newline at end of file From 8eb026a5d7912becc0e2803ae8674916b72d22ba Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Wed, 13 Dec 2023 16:44:31 +0000 Subject: [PATCH 124/142] Ch03 Add short section on long-term state in operators --- content/03_CreatingObservableSequences.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/content/03_CreatingObservableSequences.md b/content/03_CreatingObservableSequences.md index 8030e1f..e048999 100644 --- a/content/03_CreatingObservableSequences.md +++ b/content/03_CreatingObservableSequences.md @@ -804,6 +804,14 @@ public static IObservable Interval(TimeSpan period) This shows how you can use `Observable.Generate` to produce infinite sequences. I will leave it up to you the reader, as an exercise using `Observable.Generate`, to produce values at variable rates. +## Observable sequences and state + +As `Observable.Generate` makes particularly clear, observable sequences may need to maintain state. With that operator it is explicit—we pass in initial state, and we supply a callback to update it on each iteration. Plenty of other operators maintain internal state. The `Timer` remembers its tick count, and more subtly, has to somehow keep track of when it last raised an event and when the next one is due. And as you'll see in forthcoming chapters, plenty of other operators need to remember information about what they've already seen. + +This raises an interesting question: what happens if a process shuts down? Is there a way to preserve that state, and reconstitute it in a new process. + +With ordinary Rx.NET, the answer is no: all such state is held entirely in memory and there is no way to get hold of that state, or to ask running subscriptions to serialize their current state. This means that if you are dealing with particularly long-running operations you need to work out how you would restart and you can't rely on `System.Reactive` to help you. However, there is a related Rx-based set of libraries known collectively as [the Reaqtive libraries](https://reaqtive.net/). These provide implementations of most of the same operators as `System.Reactive`, but in a form where you can collect the current state, and recreate new subscriptions from previously preserved state. These libraries also include a component called Reaqtor, which is a hosting technology that can manage automatic checkpointing, and post-crash recovery, making it possible to support very long-running Rx logic, by making subscriptions persistent and reliable. Be aware that this is not currently in any productised form, so you will need to do a fair amount of work to use it, but if you need a persistable version of Rx, be aware that it exists. + ## Adapting Common Types to `IObservable` Although we've now seen two very general ways to produce arbitrary sequences—`Create` and `Generate`—what if you already have an existing source of information in some other form that you'd like to make available as an `IObservable`? Rx provides a few adapters for common source types. From 2a4d81b05c0709ec541702866562d12da66e97f0 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Wed, 13 Dec 2023 16:48:47 +0000 Subject: [PATCH 125/142] Appendix A - fix awkward wording --- content/A_IoStreams.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/A_IoStreams.md b/content/A_IoStreams.md index 6705013..bd24515 100644 --- a/content/A_IoStreams.md +++ b/content/A_IoStreams.md @@ -14,7 +14,7 @@ There's also the problem that you don't always know which kind of stream you've Another problem is that because they are byte-oriented, there's no such thing as a `System.IO.Stream` that produces more complex values. If you want a stream of `int` values (which isn't a _much_ more complex idea than a stream of _byte_ values) `System.IO.Stream` does nothing to help you, and until very recently it might even hinder you. If you use the normal `Read` or `ReadAsync` methods, you can try reading four bytes at a time but a `System.IO.Stream` is at liberty to decide that it's only going to return three. (The reason streams are allowed to be petty in this way is that the original design presumes that a stream represents some underlying device that might inherently work with fixed size units of data. Disk drives and SSDs are incapable of reading or writing individual bytes; instead, each operation works with some whole number of 'sectors' each of which are hundreds or thousands of bytes long. So a read operation might simply be unable to give you exactly as many bytes as you asked for. This can also come into play for a stream that represents data coming in over the network: such streams might already have received some data, but less than you've asked for, and they might decide to return what they've already got instead of making you wait until the next network message arrives.) It's now the consuming code's problem to work out how to deal with that. .NET 7.0 finally fixed this problem (only about two decades after `Stream` first appeared) by adding the [`ReadExactly`](https://learn.microsoft.com/en-us/dotnet/api/system.io.stream.readexactly) and [`ReadExactlyAsync`](https://learn.microsoft.com/en-us/dotnet/api/system.io.stream.readexactlyasync) methods, but if you have to target .NET Framework, these methods are unavailable and you still have to solve this entirely yourself. -Even if you use the new methods (or you write wrappers to deal with these issues caused by `Stream`'s origins as an abstraction for a magnetic tape storage device) there are still shortcomings. If you want the type system to help you to distinguish between a stream of `int` values and a stream of `float` values, `Stream` won't help you. You'll end up needing some different abstraction that has a type parameter. Something like `IObservable` in fact. The fact that we know exactly what shape of data to expect from `IObservable` is critical to making many of the LINQ operators it supports practical. +Even if you use the new methods (or you write wrappers to deal with these issues caused by `Stream`'s origins as an abstraction for a magnetic tape storage device) there are still shortcomings. If you want the type system to help you to distinguish between a stream of `int` values and a stream of `float` values, `Stream` won't help you. You'll end up needing some different abstraction that has a type parameter. Something like `IObservable`. The fact that we know exactly what shape of data to expect from `IObservable` is critical to making many of the LINQ operators it supports practical. Another potential source of confusion is Unix's "everything is a file" design feature. The operating system represents all manner of things through the same OS abstractions as files, and this simplifies the OS design, and in some cases enables you to apply tools originally designed for files in creative ways. But the downside is that some streams are finicky. It's possible to end up with a stream that looks like any other from a .NET type system point of view, but which only works if you read or write in blocks of some particular size. From 907b9f06105a3595c9735bb93e6024e8ec181f53 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Wed, 13 Dec 2023 16:58:36 +0000 Subject: [PATCH 126/142] Use markdown in Appendix B. Inexplicably, this chapter was written mostly in HTML in a `.md` file, which confused some parts of our tooling. I've recast it all as markdown. I've also written a short note to say you can use most of these disposable helpers in non-Rx code too. --- content/B_Disposables.md | 87 ++++++++++++++++++++-------------------- 1 file changed, 43 insertions(+), 44 deletions(-) diff --git a/content/B_Disposables.md b/content/B_Disposables.md index 8478146..60855be 100644 --- a/content/B_Disposables.md +++ b/content/B_Disposables.md @@ -6,51 +6,50 @@ title : Appendix B Disposables Rx represents subscriptions using the existing `IDisposable` interface. This design choice means we can use existing language features that know how to work with this interface. Rx also provides several public implementations of `IDisposable`. These can be found in the `System.Reactive.Disposables` namespace. This appendix briefly describes each of them. +With the exception of [`ScheduledDisposable`](#scheduleddisposable), these have no particular connection to Rx, and can be useful in any code that needs to work with `IDisposable`. (This code all lives in `System.Reactive` though, so although you could uses these features entirely outside of Rx-based code, you will still be taking a dependency on Rx.NET if you do so.) - +## `Disposable.Empty` +This static property exposes an implementation of `IDisposable` that performs no action when the `Dispose` method is invoked. This can be useful when you are obliged to supply an `IDisposable` (which can happen if you use `Observable.Create`) but don't need to do anything upon disposal. + +## `Disposable.Create(Action)` + +This static method exposes an implementation of `IDisposable` that invokes the method supplied when the `Dispose` method is invoked. As the implementation follows the guidance to be idempotent, the action will only be called on the first time the `Dispose` method is invoked. + +## `BooleanDisposable` + +This class implements `IDisposable.Dispose` method and also defines a read-only property `IsDisposed`. `IsDisposed` is false when the class is constructed, and is set to true when the `Dispose` method is invoked. + +## `CancellationDisposable` + +The `CancellationDisposable` class offers an integration point between the .NET [cancellation paradigm](https://learn.microsoft.com/en-us/dotnet/standard/parallel-programming/task-cancellation) (`CancellationTokenSource`) and the resource management paradigm (`IDisposable`). You can create an instance of the `CancellationDisposable` class by providing a `CancellationTokenSource` to the constructor, or by having the parameterless constructor create one for you. Calling `Dispose` will invoke the `Cancel` method on the `CancellationTokenSource`. There are two properties (`Token` and `IsDisposed`) that `CancellationDisposable` exposes; they are wrappers for the `CancellationTokenSource` properties, respectively `Token` and `IsCancellationRequested`. + + +## `CompositeDisposable` + +The `CompositeDisposable` type allows you to treat many disposable resources as one. You can create an instance of `CompositeDisposable` by passing in a params array of disposable resources. Calling `Dispose` on the `CompositeDisposable` will call dispose on each of these resources in the order they were provided. Additionally, the `CompositeDisposable` class implements `ICollection<IDisposable>`; this allows you to add and remove resources from the collection. After the `CompositeDisposable` has been disposed of, any further resources that are added to this collection will be disposed of instantly. Any item that is removed from the collection is also disposed of, regardless of whether the collection itself has been disposed of. This includes usage of both the `Remove` and `Clear` methods. + +## `ContextDisposable` +`ContextDisposable` allows you to enforce that disposal of a resource is performed on a given `SynchronizationContext`. The constructor requires both a `SynchronizationContext` and an `IDisposable` resource. When the `Dispose` method is invoked on the `ContextDisposable`, the provided resource will be disposed of on the specified context. + +## `MultipleAssignmentDisposable` + +The `MultipleAssignmentDisposable` exposes a read-only `IsDisposed` property and a read/write property `Disposable`. Invoking the `Dispose` method on the `MultipleAssignmentDisposable` will dispose of the current value held by the `Disposable` property. It will then set that value to null. As long as the `MultipleAssignmentDisposable` has not been disposed of, you are able to set the `Disposable` property to `IDisposable` values as you would expect. Once the `MultipleAssignmentDisposable` has been disposed, attempting to set the `Disposable` property will cause the value to be instantly disposed of; meanwhile, `Disposable` will remain null. + +## `RefCountDisposable` + +The `RefCountDisposable` offers the ability to prevent the disposal of an underlying resource until all dependent resources have been disposed. You need an underlying `IDisposable` value to construct a `RefCountDisposable`. You can then call the `GetDisposable` method on the `RefCountDisposable` instance to retrieve a dependent resource. Each time a call to `GetDisposable` is made, an internal counter is incremented. Each time one of the dependent disposables from `GetDisposable` is disposed, the counter is decremented. Only if the counter reaches zero will the underlying be disposed of. This allows you to call `Dispose` on the `RefCountDisposable` itself before or after the count is zero. + +## `ScheduledDisposable` + +In a similar fashion to `ContextDisposable`, the `ScheduledDisposable` type allows you to specify a scheduler, onto which the underlying resource will be disposed. You need to pass both the instance of `IScheduler` and instance of `IDisposable` to the constructor. When the `ScheduledDisposable` instance is disposed of, the disposal of the underlying resource will be executed through the provided scheduler. + +## `SerialDisposable` + +`SerialDisposable` is very similar to `MultipleAssignmentDisposable`, as they both expose a read/write `Disposable` property. The contrast between them is that whenever the `Disposable` property is set on a `SerialDisposable`, the previous value is disposed of. Like the `MultipleAssignmentDisposable`, once the `SerialDisposable` has been disposed of, the `Disposable` property will be set to null and any further attempts to set it will have the value disposed of. The value will remain as null. + +## `SingleAssignmentDisposable` + +The `SingleAssignmentDisposable` class also exposes `IsDisposed` and `Disposable` properties. Like `MultipleAssignmentDisposable` and `SerialDisposable`, the `Disposable` value will be set to null when the `SingleAssignmentDisposable` is disposed of. The difference in implementation here is that the `SingleAssignmentDisposable` will throw an `InvalidOperationException` if there is an attempt to set the `Disposable` property while the value is not null and the `SingleAssignmentDisposable` has not been disposed of. 1` message showing the first output from `Concat`, and also the `1st finished` message, produced by the `Finally` operator, which runs only after that first sequence has completed. (The code also makes that first source delay for 500ms before producing its value, so that if you run this, you can see that everything stops for a bit until that first source produces its single value then completes.) Once the first source completes, the `GetSequences` method continues (because `Concat` will ask it for the next item once the first observable source completes). When `GetSequences` provides the second sequence with another `yield return`, `Concat` subscribes to that, and again `GetSequences` makes no further progress until that second observable sequence completes. When asked for the third sequence, the iterator itself waits for a second before producing that third and final value, which you can see from the gap between the end of `s2` and the start of `s3` in the diagram. @@ -189,7 +189,7 @@ public static IObservable GetLastKnownAndSubsequenceNavigatio } ``` -`StartWith` might remind you of [`BehaviorSubject`](03_CreatingObservableSequences.md#behaviorsubject), because that also ensures that consumers receive a value as soon as they subscribe. It's not quite the same: `BehaviorSubject` caches the last value its own source emits. You might thank that would make it a better way to implement this vessel navigation example. However, since this example is able to return a source for any vessel (the `mmsi` argument is a [Maritime Mobile Service Identity](https://en.wikipedia.org/wiki/Maritime_Mobile_Service_Identity) uniquely identifying a vessel) it would need to keep a `BehaviorSubject` running for every single vessel you were interested in, which might be impractical. +`StartWith` might remind you of [`BehaviorSubject`](03_CreatingObservableSequences.md#behaviorsubject), because that also ensures that consumers receive a value as soon as they subscribe. It's not quite the same: `BehaviorSubject` caches the last value its own source emits. You might think that would make it a better way to implement this vessel navigation example. However, since this example is able to return a source for any vessel (the `mmsi` argument is a [Maritime Mobile Service Identity](https://en.wikipedia.org/wiki/Maritime_Mobile_Service_Identity) uniquely identifying a vessel) it would need to keep a `BehaviorSubject` running for every single vessel you were interested in, which might be impractical. `BehaviorSubject` can hold onto only one value, which is fine for this AIS scenario, and `Prepend` shares this limitation. But what if you need a source to begin with some particular sequence? @@ -284,9 +284,11 @@ Why is that useful? A common use case for `Amb` is when you want to produce some sort of result as quickly as possible, and you have multiple options for obtaining that result, but you don't know in advance which will be fastest. Perhaps there are multiple servers that could all potentially give you the answer you want, and it's impossible to predict which will have the lowest response time. You could send requests to all of them, and then just use the first to respond. If you model each individual request as its own `IObservable`, `Amb` can handle this for you. Note that this isn't very efficient: you're asking several servers all to do the same work, and you're going to discard the results from most of them. (Since `Amb` unsubscribes from all the sources it's not going to use as soon as the first reacts, it's possible that you might be able to send a message to all the other servers to cancel the request. But this is still somewhat wasteful.) But there may be scenarios in which timeliness is crucial, and for those cases it might be worth tolerating a bit of wasted effort to produce faster results. +`Amb` is broadly similar to `Task.WhenAny`, in that it lets you detect when the first of multiple sources does something. However, the analogy is not precise. `Amb` automatically unsubscribes from all of the other sources, ensuring that everything is cleaned up. With `Task` you should always ensure that you eventually observe all tasks in case any of them faulted. + To illustrate `Amb`'s behaviour, here's a marble diagram showing three sequences, `s1`, `s2`, and `s3`, each able to produce a sequence values. The line labelled `r` shows the result of passing all three sequences into `Amb`. As you can see, `r` provides exactly the same notifications as `s1`, because in this example, `s1` was the first sequence to produce a value. -![](GraphicsIntro/Ch09-CombiningSequences-Marbles-Amb-Marbles.svg) +![A marble diagram showing 4 sequences. The first, s1, produces the values 1, 2, 3, and 4. The second, s2, starts at the same time as s1, but produces its first value, 99, after s1 produces 1, and produces its second value, 88, after s1 produces 2, and it then completes between s1 producing 2 and 3. The third source, s3, produces its first value, 8, after s2 produced 99, and before s1 produced 2, and it goes on to produce two more values, 7 and 6, interleaved with the activity from the earlier sources. The final sequence, r, is identical to s1.](GraphicsIntro/Ch09-CombiningSequences-Marbles-Amb-Marbles.svg) This code creates exactly the situation described in that marble diagram, to verify that this is indeed how `Amb` behaves: @@ -327,7 +329,7 @@ Completed If we changed the order so that `s2.OnNext(99)` came before the call to `s1.OnNext(1);` then s2 would produce values first and the marble diagram would look like this. -![](GraphicsIntro/Ch09-CombiningSequences-Marbles-Amb-Marbles2.svg) +![A marble diagram showing 4 sequences. The first, s1, produces the values 1, 2, 3, and 4. The second, s2, starts at the same time as s1, but produces its first value, 99, before s1 produces 1 (this being the key difference from the preceding diagram), and produces its second value, 88, after s1 produces 2, and it then completes between s1 producing 2 and 3. The third source, s3, produces its first value, 8, after s2 produced 99, and before s1 produced 2, and it goes on to produce two more values, 7 and 6, interleaved with the activity from the earlier sources. The final sequence, r, is identical to s2 (and not, as in the preceding diagram, s1).](GraphicsIntro/Ch09-CombiningSequences-Marbles-Amb-Marbles2.svg) There are a few overloads of `Amb`. The preceding example used the overload that takes a `params` array of sequences. There's also an overload that takes exactly two sources, avoiding the array allocation that occurs with `params`. Finally, you could pass in an `IEnumerable>`. (Note that there are no overloads that take an `IObservable>`. `Amb` requires all of the source observables it monitors to be supplied up front.) @@ -368,7 +370,7 @@ Amb completed Here is the marble diagram illustrating how this code behaves: -![](./GraphicsIntro/Ch09-CombiningSequences-Marbles-Amb-Marbles3.svg) +![A marble diagram showing four sequences. The first three all start at the same time, but significantly later than the fourth. The first, s1, waits for a while and then produces the value 1 and then completes. The second, s2, produces a value 2 before s1 produced its value, and immediately completes. The third, s3, produces its value, 3, before s2 produced 2, and then immediately completes. The final sequence, r, starts long before all the rest, and then produces 3 at the same time as s3 produced 3, and then immediately completes.](./GraphicsIntro/Ch09-CombiningSequences-Marbles-Amb-Marbles3.svg) Remember that `GetSequences` produces its first two observables as soon as it is asked for them, and then waits for 1 second before producing the third and final one. But unlike `Concat`, `Amb` won't subscribe to any of its sources until it has retrieved all of them from the iterator, which is why this marble diagram shows the subscriptions to all three sources starting after 1 second. (The first two sources were available earlier—`Amb` would have started enumerating the sources as soon as subscription occurred, but it waited until it had all three before subscribing, which is why they all appear over on the right.) The third sequence has the shortest delay between subscription and producing its value, so although it's the last observable returned, it is able to produce its value the fastest even though there are two sequences yielded one second before it (due to the `Thread.Sleep`). @@ -379,7 +381,7 @@ The `Merge` extension method takes multiple sequences as its input. Any time any Since `Merge` returns a single observable sequence that includes all of the values from all of its input sequences, there's a sense in which it is similar to `Concat`. But whereas `Concat` waits until each input sequence completes before moving onto the next, `Merge` supports concurrently active sequences. As soon as you subscribe to the observable returned by `Merge`, it immediately subscribes to all of its inputs, forwarding everything any of them produces. This marble diagram shows two sequences, `s1` and `s2`, running concurrently and `r` shows the effect of combining these with `Merge`: the values from both source sequences emerge from the merged sequence. -![](GraphicsIntro/Ch09-CombiningSequences-Marbles-Merge-Marbles.svg) +![A marble diagram showing three sequences. The first, s1, produces the value 1 three times in a row, with a gap between each value. The second, s2, produces the value 2 three times in a row, and it does so at the same interval as the values from s2, but starting slightly later. The third sequence, c, contains all the same values as s1 and s2 combined, and at the same time as they emerge from their respective source sequences. So c produces 1, 2, 1, 2, 1, 2.](GraphicsIntro/Ch09-CombiningSequences-Marbles-Merge-Marbles.svg) The result of a `Merge` will complete only once all input sequences complete. However, the `Merge` operator will error if any of the input sequences terminates erroneously (at which point it will unsubscribe from all its other inputs). @@ -392,7 +394,7 @@ IObservable station2 = aisStations.GetMessagesFromStation("Eastbour IObservable allMessages = station1.Merge(station2); ``` -If you want to combine more than two sources, you have a few options:: +If you want to combine more than two sources, you have a few options: - Chain `Merge` operators together e.g. `s1.Merge(s2).Merge(s3)` - Pass a `params` array of sequences to the `Observable.Merge` static method. e.g. `Observable.Merge(s1,s2,s3)` @@ -465,7 +467,7 @@ Merge completed As we can see from the marble diagram, s1 and s2 are yielded and subscribed to immediately. s3 is not yielded for one second and then is subscribed to. Once all input sequences have completed, the result sequence completes. -![](GraphicsIntro/Ch09-CombiningSequences-Marbles-Merge-Marbles-Multi.svg) +![A marble diagram showing four sources. The first, s1, waits for a while and then produces the value 1 and immediately completes. The second, s2, starts at the same time as s1, but produces a single value, 2 and immediately completes before s1 produced its value. The third, s3, starts long after s1 and s3 have finished, waits a short while, produces the value 3, then immediately completes. The final source, r, starts when s1 and s2 start, completes when s3 completes, and produces the three values from each of the three other sources at the same as they do, so it shows 2, 1, then 3.](GraphicsIntro/Ch09-CombiningSequences-Marbles-Merge-Marbles-Multi.svg) For each of the `Merge` overloads that accept variable numbers of sources (either via an array, an `IEnumerable>`, or an `IObservable>`) there's an additional overload adding a `maxconcurrent` parameter. For example: @@ -516,13 +518,13 @@ var subscription = search If we were lucky and each search completed before the next element from `searchValues` was produced, the output would look sensible. However, it is much more likely, however that multiple searches will result in overlapped search results. This marble diagram shows what the `Merge` function could do in such a situation. -![](GraphicsIntro/Ch09-CombiningSequences-Marbles-Switch-Marbles-Bad-Merge.svg) +![A marble diagram showing 6 sources. The first, searchValues, produces the values I, In, Int, and Intr, and is shown as continuing on beyond the time represented by the diagram. The second, 'results (I)', starts when `searchValues` produces its first value, I, and then a while later produces a single value, Self, before immediately completing. It is significant that this single value is produced after the searchValues source has already produced its second value, In. The third source is labelled 'results (In)'. It starts at the same time that searchValues produces its second value, In, and a while later produces a single value, Into, before immediately completing. It is significant that it produces its value after searchValues has already produced its third value, Int. The fourth source is labelled 'results (Int)'. It starts at the same time that searchValues produces its third value, Int, and a while later produces a single value, 42, before immediately completing. It is significant that it produces its value after searchValues has already produced its fourth value, Intr. The fifth source is labelled 'results (Intr)'. It starts at the same time that searchValues produces its fourth value, Intr, and a while later produces a single value, Start, before immediately completing. It is significant that it produces its value before the previous sequence produced its value. The final souce is labelled 'Merged results'. It starts at the same time that searchValues starts, and it contains each of the items produced by the 2nd, 3rd, 4th, and 5th sequences. It does not complete.](GraphicsIntro/Ch09-CombiningSequences-Marbles-Switch-Marbles-Bad-Merge.svg) Note how the values from the search results are all mixed together. The fact that some search terms took longer to get a search result than others has also meant that they have come out in the wrong order. This is not what we want. If we use the `Switch` extension method we will get much better results. `Switch` will subscribe to the outer sequence and as each inner sequence is yielded it will subscribe to the new inner sequence and dispose of the subscription to the previous inner sequence. This will result in the following marble diagram: -![](GraphicsIntro/Ch09-CombiningSequences-Marbles-Switch-Marbles.svg) +![A marble diagram showing 6 sources. The first, searchValues, produces the values I, In, Int, and Intr, and is shown as continuing on beyond the time represented by the diagram. The second, 'results (I)', starts when `searchValues` produces its first value, I, and then a while later produces a single value, Self, before immediately completing. It is significant that this single value is produced after the searchValues source has already produced its second value, In. The third source is labelled 'results (In)'. It starts at the same time that searchValues produces its second value, In, and a while later produces a single value, Into, before immediately completing. It is significant that it produces its value after searchValues has already produced its third value, Int. The fourth source is labelled 'results (Int)'. It starts at the same time that searchValues produces its third value, Int, and a while later produces a single value, 42, before immediately completing. It is significant that it produces its value after searchValues has already produced its fourth value, Intr. The fifth source is labelled 'results (Intr)'. It starts at the same time that searchValues produces its fourth value, Intr, and a while later produces a single value, Start, before immediately completing. It is significant that it produces its value before the previous sequence produced its value. The final souce is labelled 'Merged results'. It starts at the same time that searchValues starts, and it reports just a single value, Start, at exactly the same time the `results (Intr)` source produces the same value. It does not complete.](GraphicsIntro/Ch09-CombiningSequences-Marbles-Switch-Marbles.svg) Now, each time a new search term arrives, causing a new search to be kicked off, a corresponding new `IObservable` for that search's results appears, causing `Switch` to unsubscribe from the previous results. This means that any results that arrive too late (i.e., when the result is for a search term that is no longer the one in the search box) will be dropped. As it happens, in this particular example, this means that we only see the result for the final search term. All the intermediate values that we saw as the user was typing didn't hang around for long, because the user kept on pressing the next key before we'd received the previous value's results. Only at the end, when the user stopped typing for long enough that the search results came back before they became out of date, do we finally see a value from `Switch`. The net effect is that we've eliminated confusing results that are out of date. @@ -562,7 +564,7 @@ nums.Zip(chars, (lhs, rhs) => (lhs, rhs))) The effect can be seen in this marble diagram below.: -![](GraphicsIntro/Ch09-CombiningSequences-Marbles-Zip-Marbles.svg) +![A marble diagram showing three sequences. The first, s1 waits for a while and then produces the values 0, 1, and 2, with some time between each value and completes immediately after producing 2. The second source, s2, waits for slightly less time, producing the value a before s1 produce 0, and then it produces b and c between s1's 0 and 1, and then between s1's 1 and 2, it produces d. It produces e at roughly the same time as s1 produces 2 (and for the purposes of this example, it doesn't really matter whether those happen at exactly the same time, or before or after one another) and then goes on to produce f, then immediately completes. The third sequence, c, shows the value '0,a' at the same time s1 produces 0, then '1,b' when s1 produces 1, and '2,c` when s1 produces 2, and then immediately completes (at the same time s1 completes).](GraphicsIntro/Ch09-CombiningSequences-Marbles-Zip-Marbles.svg) Here's the actual output of the code: @@ -658,7 +660,7 @@ public static IObservable CombineLatest( The marble diagram below shows off usage of `CombineLatest` with one sequence that produces numbers (`s1`), and the other letters (`s2`). If the `resultSelector` function just joins the number and letter together as a pair, this would produce the result shown on the bottom line. I've colour coded each output to indicate which of the two sources caused it to emit that particular result, but as you can see, each output includes a value from each source. -![](GraphicsIntro/Ch09-CombiningSequences-Marbles-CombineLatest-Marbles.svg) +![A marble diagram showing three sequences. The first, s1, waits for a while then produces the values 1, 2, and 3, spaced out over time. The second, s2, starts at the same time as s1, and waits for less time, producing its first value, a, before s1 produces 1. Then after s1 has produced 2, s2 produces b and then c, both being produced before s1 produces 3. The third sequence, CombineLatest, shows '1,a' at the same time as s1 produces 1, then '2,a' when s1 produces 2, then '2,b' when s2 produces b, then '2,c' when s2 produces c, then '3,c' when s1 produces 3. All three sequences do not end within the time shown in the diagram.](GraphicsIntro/Ch09-CombiningSequences-Marbles-CombineLatest-Marbles.svg) If we slowly walk through the above marble diagram, we first see that `s1` produces the letter 'a'. `s2` has not produced any value yet so there is nothing to pair, meaning that no value is produced for the result. Next, `s2` produces the number '1' so the result sequence can now produce a pair '1,a'. We then receive the number '2' from `s1`. The last letter is still 'a' so the next pair is '2,a'. The letter 'b' is then produced creating the pair '2,b', followed by 'c' giving '2,c'. Finally the number 3 is produced and we get the pair '3,c'. @@ -719,15 +721,15 @@ The observable returned by `Join` produces the result of each call to `resultSel Let us now imagine a scenario where the left sequence produces values twice as fast as the right sequence. Imagine that in addition we never close the left windows; we could do this by always returning `Observable.Never()` from the `leftDurationSelector` function. And imagine that we make the right windows close as soon as they possibly can, which we can achieve by making `rightDurationSelector` return `Observable.Empty()`. The following marble diagram illustrates this: -![](GraphicsIntro/Ch09-CombiningSequences-Marbles-Join-Marbles1.svg) +![A marble diagram showing five groups of sequences. The first group, labelled left, contains a single sequence which immediately produces the value 0, then, at evenly space intervals, the values 1, 2, 3, 4, and 5. The second group, labelled 'left durations' shows a sequence for each of the values produced by left, each starting at exactly the moment left produces one of its value. None of these sequences produces any values or completes. The third group is labelled right. It waits until after left has produced its second value (1), and then produces A. Between left's 3 and 4, it produces B. After left's 5 it produces C. The next group is labelled 'right durations', and it shows three sequences, each starting at the time right produces one of its values, and each immediately ending—these are effectively instantaneously short sequences. The final group, Join, shows a single sequence. When right produces A, this immediately produces '0,A' and then '1,A'. When right produces B, it produces '0,B', '1,B', '2,B', and `3,B`. Then right produces C, the Join sequence produces '0,C', '1,C', '2,C', '3,C', '4,C', '5,C'. The diagram happens to show each set of value stacked vertically, but that's only because they are produced in such quick succession that we wouldn't otherwise be able to see them.](GraphicsIntro/Ch09-CombiningSequences-Marbles-Join-Marbles1.svg) Each time a left duration window intersects with a right duration window, we get an output. The right duration windows are all effectively of zero length, but this doesn't stop them from intersecting with the left duration windows, because those all never end. So the first item from right has a (zero-length) window that falls inside two of the windows for the `left` items, and so `Join` produces two results. I've stacked these vertically on the diagram to show that they happen at virtually the same time. Of course, the rules of `IObserver` mean that they can't actually happen at the same time: `Join` has to wait until the consumer's `OnNext` has finished processing `0,A` before it can go on to produce `1,A`. But it will produce all the pairs as quickly as possible any time a single event from one source overlaps with multiple windows for the other. -If I also immediately closed the left window by returning `Observable.Empty`, or perhaps `Observable.Return(0)`, windows would never overlap, so no pairs would ever get produced. (In theory if both left and right produce items at _exactly_ the same time, then perhaps we might get a pair, but since the timing of events is never absolutely precise, it would be a bad idea to design a system that depended on this.) +If I also immediately closed the left window by returning `Observable.Empty`, or perhaps `Observable.Return(0)`, the windows would never overlap, so no pairs would ever get produced. (In theory if both left and right produce items at _exactly_ the same time, then perhaps we might get a pair, but since the timing of events is never absolutely precise, it would be a bad idea to design a system that depended on this.) -What if I wanted to ensure that items from `right` only ever intersected with a single value from `left`? In that case, I'd need to ensure that the left durations did not overlap. One way to do that would be to have my `leftDurationSelector` always return the same sequence that I passed as the `left` sequence. This will result in `Join` making multiple subscriptions to the same source, and for some kinds of courses that might introduce unwanted side effects, but the [`Publish`](15_PublishingOperators.md#publish) and [`RefCount`](15_PublishingOperators.md#refcount) operators provide a way to deal with that, so this is in fact a reasonably strategy. If we do that, the results look more like this. +What if I wanted to ensure that items from `right` only ever intersected with a single value from `left`? In that case, I'd need to ensure that the left durations did not overlap. One way to do that would be to have my `leftDurationSelector` always return the same sequence that I passed as the `left` sequence. This will result in `Join` making multiple subscriptions to the same source, and for some kinds of sources that might introduce unwanted side effects, but the [`Publish`](15_PublishingOperators.md#publish) and [`RefCount`](15_PublishingOperators.md#refcount) operators provide a way to deal with that, so this is in fact a reasonably strategy. If we do that, the results look more like this. -![](GraphicsIntro/Ch09-CombiningSequences-Marbles-Join-Marbles2.svg) +![A marble diagram showing five groups of sequences. The first group, labelled left, contains a single sequence which immediately produces the value 0, then, at evenly space intervals, the values 1, 2, 3, 4, and 5. The second group, labelled 'left durations' shows a sequence for each of the values produced by left, each starting at exactly the moment left produces one of its value, and finishing at the same moment that the next one starts.The third group is labelled right. It waits until after left has produced its second value (1), and then produces A. Between left's 3 and 4, it produces B. After left's 5 it produces C. The next group is labelled 'right durations', and it shows three sequences, each starting at the time right produces one of its values, and each immediately ending—these are effectively instantaneously short sequences. The final group, Join, shows a single sequence. When right produces A, this immediately produces '1,A'. When right produces B, it produces `3,B`. Then right produces C, the Join sequence produces '5,C'.](GraphicsIntro/Ch09-CombiningSequences-Marbles-Join-Marbles2.svg) The last example is very similar to [`CombineLatest`](12_CombiningSequences.html#CombineLatest), except that it is only producing a pair when the right sequence changes. We can easily make it work the same way by changing the right durations to work in the same way as the left durations. This code shows how (including the use of `Publish` and `RefCount` to ensure that we only get a single subscription to the underlying `left` and `right` sources despite providing then to `Join` many times over). @@ -781,7 +783,7 @@ If we went back to our first `Join` example where we had This diagram shows those same inputs again, and also shows the observables `GroupJoin` would pass to the `resultSelector` for each of the items produced by `left`: -![](GraphicsIntro/Ch09-CombiningSequences-Marbles-GroupJoin-Marbles.svg) +![A marble diagram showing five groups of sequences. The first group, labelled left, contains a single sequence which immediately produces the value 0, then, at evenly space intervals, the values 1, 2, 3, 4, and 5. The second group, labelled 'left durations' shows a sequence for each of the values produced by left, each starting at exactly the moment left produces one of its value. None of these sequences produces any values or completes. The third group is labelled right. It waits until after left has produced its second value (1), and then produces A. Between left's 3 and 4, it produces B. After left's 5 it produces C. The next group is labelled 'right durations', and it shows three sequences, each starting at the time right produces one of its values, and each immediately ending—these are effectively instantaneously short sequences. The final group contains 6 sequences, each of which has a label of the form `Right observable passed to selector for 0`, with the digit at the end changing for each sequence (so "...for 1" then "...for 2" and so on). Each of these sequences in the final group starts at the same time as a corresponding value from the left sequence. The first two show A, B, and C at the same time that the right sequence produces these values. The next two start after right has produced A, so they show only B and C. The last two start after right produces B so they show only C.](GraphicsIntro/Ch09-CombiningSequences-Marbles-GroupJoin-Marbles.svg) This produces events corresponding to all of the same events that `Join` produced, they're just distributed across six different `IObservable` sources. It may have occurred to you that with `GroupJoin` you could effectively re-create your own `Join` method by doing something like this: From 8a636585c1b4c35443d40962dd6f152394f6e411 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Thu, 14 Dec 2023 13:38:45 +0000 Subject: [PATCH 136/142] Ch11 updates after review feedback --- content/11_SchedulingAndThreading.md | 87 +- .../Ch09-CombiningSequences-Marbles.ai | 2575 +++++++++-------- 2 files changed, 1358 insertions(+), 1304 deletions(-) diff --git a/content/11_SchedulingAndThreading.md b/content/11_SchedulingAndThreading.md index 83d594c..e7031f1 100644 --- a/content/11_SchedulingAndThreading.md +++ b/content/11_SchedulingAndThreading.md @@ -291,7 +291,7 @@ Observable This makes a different decision about the context in which to run work, compared to the immediate and current thread schedulers, as we can see from its output: -```cs +``` Main thread: 1 Subscribe returned Received 1 on thread: 12 @@ -360,13 +360,13 @@ public interface IScheduler } ``` -You can see that all but one of these is concerned with timing. Only the first `Schedule` overload is not—operators call this when they want to schedule work to run as soon as the scheduler will allow. That's the overload used by `Range`. (Strictly speaking, `Range` interrogates the scheduler to find out whether it supports long-running operations, in which an operator can take temporary control of a thread for an extended period. It prefers to use that when it can because it tends to be more efficient than submitting work to the scheduler for every single item it wishes to produce. The `TaskPoolScheduler` does support long running operations, which explains the slightly surprising output we saw earlier, but the `CurrentThreadScheduler`, `Range`'s default choice, does not. So by default, `Range` will invoke that first `Schedule` overload once for each item it wishes to produce.) +You can see that all but one of these is concerned with timing. Only the first `Schedule` overload is not, and operators call that when they want to schedule work to run as soon as the scheduler will allow. That's the overload used by `Range`. (Strictly speaking, `Range` interrogates the scheduler to find out whether it supports long-running operations, in which an operator can take temporary control of a thread for an extended period. It prefers to use that when it can because it tends to be more efficient than submitting work to the scheduler for every single item it wishes to produce. The `TaskPoolScheduler` does support long running operations, which explains the slightly surprising output we saw earlier, but the `CurrentThreadScheduler`, `Range`'s default choice, does not. So by default, `Range` will invoke that first `Schedule` overload once for each item it wishes to produce.) `Delay` uses the second overload. The exact implementation is quite complex (mainly because of how it catches up efficiently when a busy source causes it to fall behind) but in essence, each time a new item arrives into the `Delay` operator, it schedules a work item to run after the configured delay, so that it can supply that item to its subscriber with the expected time shift. Schedulers have to be responsible for managing time, because .NET has several different timer mechanisms, and the choice of timer is often determined by the context in which you want to handle a timer callback. Since schedulers determine the context in which work runs, that means they must also choose the timer type. For example, UI frameworks typically provide timers that invoke their callbacks in a context suitable for making updates to the user interface. Rx provides some UI-framework-specific schedulers that use these timers, but these would be inappropriate choices for other scenarios. So each scheduler uses a timer suitable for the context in which it is going to run work items. -There's a useful upshot of this: because `IScheduler` provides an abstraction for timing-related details, it is possible to virtualize time. This is very useful for testing. If you look at the extensive test suite in the [Rx repository](https://github.com/dotnet/reactive) you will find that there are many tests that verify timing-related behaviour. If these ran in real-time, the test suite would take far too long to run, and would also be likely to produce the odd spurious failure, because background tasks running on the same machine as the tests will occasionally change the speed of execution in a way that might confuse the test. Instead, these tests use a specialized scheduler that provides complete control over the passage of time. +There's a useful upshot of this: because `IScheduler` provides an abstraction for timing-related details, it is possible to virtualize time. This is very useful for testing. If you look at the extensive test suite in the [Rx repository](https://github.com/dotnet/reactive) you will find that there are many tests that verify timing-related behaviour. If these ran in real-time, the test suite would take far too long to run, and would also be likely to produce the odd spurious failure, because background tasks running on the same machine as the tests will occasionally change the speed of execution in a way that might confuse the test. Instead, these tests use a specialized scheduler that provides complete control over the passage of time. (For more information, see the [ Test Schedulers section later](#test-schedulers) and there's also a whole [testing chapter](16_TestingRx.md) coming up.) Notice that all three `IScheduler.Schedule` methods require a callback. A scheduler will invoke this at the time and in the context that it chooses. A scheduler callback takes another `IScheduler` as its first argument. This is used in scenarios where repetitive invocation is required, as we'll see later. @@ -398,7 +398,7 @@ Observable Let's follow exactly what happens here. First, assume that this code is just running normally and not in any unusual context—perhaps inside the `Main` entry point of a program. When this code calls `Subscribe` on the `IObservable` returned by `SelectMany`, that will in turn will call `Subscribe` on the `IObservable` returned by the first `Observable.Range`, which will in turn schedule a work item for the generation of the first value in the range (`1`). -Since we didn't pass a scheduler explicitly to `Range`, it will use its default choice, the `CurrentThreadScheduler`, and that will ask itself "Am I already in the middle of handling some work item on this thread?" In this case the answer will be no, so it will run the work item immediately (before returning from the `Schedule` call made by the `Range` operator). The `Range` operator will then produce its first value, calling `OnNext` on the `IObserver` that the `SelectMany` operator provided when it subscribed to the range. +Since we didn't pass a scheduler explicitly to `Range`, it will use its default choice, the `CurrentThreadScheduler`, and that will ask itself "Am I already in the middle of handling some work item on this thread?" In this case the answer will be "no," so it will run the work item immediately (before returning from the `Schedule` call made by the `Range` operator). The `Range` operator will then produce its first value, calling `OnNext` on the `IObserver` that the `SelectMany` operator provided when it subscribed to the range. The `SelectMany` operator's `OnNext` method will now invoke its lambda, passing in the argument supplied (the value `1` from the `Range` operator). You can see from the example above that this lambda calls `Observable.Range` again, returning a new `IObservable`. `SelectMany` will immediately subscribe to this (before returning from its `OnNext`). This is the second time this code has ended up calling `Subscribe` on an `IObservable` returned by a `Range` (but it's a different instance than the last time), and `Range` will once again default to using the `CurrentThreadScheduler`, and will once again schedule a work item to perform the first iteration. @@ -458,11 +458,11 @@ This invokes all work through a [`SynchronizationContext`](https://learn.microso ### TaskPoolScheduler -Invokes all work through the TPL task pool. The TPL task pool is newer than the CLR thread pool. Rx's DefaultScheduler uses the older CLR thread pool for backwards compatibility reasons, but the TPL task pool can offer performance benefits in some scenarios. +Invokes all work via the thread pool using [TPL tasks](https://learn.microsoft.com/en-us/dotnet/standard/parallel-programming/task-parallel-library-tpl). The TPL was introduced many years after the CLR thread pool, and is now the recommended way to launch work via the thread pool. At the time the TPL was added, the thread pool would use a slightly different algorithm when you scheduled work through tasks than it would use if you relied on the older thread pool APIs. This newer algorithm enabled it to be more efficient in some scenarios. The documentation is now rather vague about this, so it's not clear whether these differences still exist on modern .NET, but tasks continue to be the recommended mechanism for using the thread pool. Rx's DefaultScheduler uses the older CLR thread pool APIs for backwards compatibility reasons. In performance critical code you could try using the `TaskPoolScheduler` instead in cases where a lot of work is being run on thread pool threads to see if it offers any performance benefits for your workload. ### ThreadPoolScheduler -Invokes all work through the thread pool. This type is a historical artifact, dating back to when not all platforms offered the same kind of thread pool. In almost all cases, you should use the `DefaultScheduler`. The only scenario in which using `ThreadPoolScheduler` makes any difference is when writing UWP applications. The UWP target of `System.Reactive` v6.0 provides a different implementation of this class than you get for all other targets. It uses `Windows.System.Threading.ThreadPool` whereas all other targets use `System.Threading.ThreadPool`. The UWP version provides properties letting you configure some features specific to the UWP thread pool. +Invokes all work through the thread pool using the old pre-[TPL](https://learn.microsoft.com/en-us/dotnet/standard/parallel-programming/task-parallel-library-tpl) API. This type is a historical artifact, dating back to when not all platforms offered the same kind of thread pool. In almost all cases, if you want the behaviour for which this type was designed, you should use the `DefaultScheduler` (although [`TaskPoolScheduler`](#taskpoolscheduler) offers a different behaviour that might be). The only scenario in which using `ThreadPoolScheduler` makes any difference is when writing UWP applications. The UWP target of `System.Reactive` v6.0 provides a different implementation of this class than you get for all other targets. It uses `Windows.System.Threading.ThreadPool` whereas all other targets use `System.Threading.ThreadPool`. The UWP version provides properties letting you configure some features specific to the UWP thread pool. In practice it's best to avoid this class in new code. The only reason the UWP target had a different implementation was that UWP used not to provide `System.Threading.ThreadPool`. But that changed when UWP added support for .NET Standard 2.0 in Windows version 10.0.19041. There is no longer any good reason for there to be a UWP-specific `ThreadPoolScheduler`, and it's a source of confusion that this type is quite different in the UWP target but it has to remain for backwards compatibility purposes. (It may well be deprecated because Rx 7 will be addressing some problems arising from the fact that the `System.Reactive` component currently has direct dependencies on UI frameworks.) If you use the `DefaultScheduler` you will be using the `System.Threading.ThreadPool` no matter which platform you are running on. @@ -489,20 +489,20 @@ The discussion so far as mostly focused on the 2nd and 3rd features. When it com These methods do what their names suggest. If you use `SubscribeOn`, then when you call `Subscribe` on the resulting `IObservable` it arranges to call the original `IObservable`'s `Subscribe` method via the specified scheduler. Here's an example: ```cs -Console.WriteLine($"Main thread: {Environment.CurrentManagedThreadId}"); +Console.WriteLine($"[T:{Environment.CurrentManagedThreadId}] Main thread"); Observable .Interval(TimeSpan.FromSeconds(1)) .SubscribeOn(new EventLoopScheduler((start) => { Thread t = new(start) { IsBackground = false }; - Console.WriteLine($"Created thread for EventLoopScheduler: {t.ManagedThreadId}"); + Console.WriteLine($"[T:{t.ManagedThreadId}] Created thread for EventLoopScheduler"); return t; })) .Subscribe( - tick => Console.WriteLine($"{DateTime.Now}-{Environment.CurrentManagedThreadId}: Tick {tick}")); + tick => Console.WriteLine($"[T:{Environment.CurrentManagedThreadId}] {DateTime.Now}: Tick {tick}")); -Console.WriteLine($"{DateTime.Now}-{Environment.CurrentManagedThreadId}: Main thread exiting"); +Console.WriteLine($"[T:{Environment.CurrentManagedThreadId}] {DateTime.Now}: Main thread exiting"); ``` This calls `Observable.Interval` (which uses `DefaultScheduler` by default), but instead of subscribing directly to this, it first takes the `IObservable` returned by `Interval` and invokes `SubscribeOn`. I've used an `EventLoopScheduler`, and I've passed it a factory callback for the thread that it will use to ensure that it is a non-background thread. (By default `EventLoopScheduler` creates itself a background thread, meaning that the thread won't force the process to stay alive. Normally that's what you'd want but I'm changing that in this example to show what's happening.) @@ -510,12 +510,12 @@ This calls `Observable.Interval` (which uses `DefaultScheduler` by default), but When I call `Subscribe` on the `IObservable` returned by `SubscribeOn`, it calls `Schedule` on the `EventLoopScheduler` that I supplied, and in the callback for that work item, it then calls `Subscribe` on the original `Interval` source. So the effect is that the subscription to the underlying source doesn't happen on my main thread, it happens on the thread created for my `EventLoopScheduler`. Running the program produces this output: ``` -Main thread: 1 -Created thread for EventLoopScheduler: 12 -21/07/2023 14:57:21-1: Main thread exiting -21/07/2023 14:57:22-6: Tick 0 -21/07/2023 14:57:23-6: Tick 1 -21/07/2023 14:57:24-6: Tick 2 +[T:1] Main thread +[T:12] Created thread for EventLoopScheduler +[T:1] 21/07/2023 14:57:21: Main thread exiting +[T:6] 21/07/2023 14:57:22: Tick 0 +[T:6] 21/07/2023 14:57:23: Tick 1 +[T:6] 21/07/2023 14:57:24: Tick 2 ... ``` @@ -538,14 +538,14 @@ with this: then we get this output: ``` -Main thread: 1 -Created thread for EventLoopScheduler: 12 -21/07/2023 15:02:09-12: Tick 1 -21/07/2023 15:02:09-1: Main thread exiting -21/07/2023 15:02:09-12: Tick 2 -21/07/2023 15:02:09-12: Tick 3 -21/07/2023 15:02:09-12: Tick 4 -21/07/2023 15:02:09-12: Tick 5 +[T:1] Main thread +[T:12] Created thread for EventLoopScheduler +[T:12] 21/07/2023 15:02:09: Tick 1 +[T:1] 21/07/2023 15:02:09: Main thread exiting +[T:12] 21/07/2023 15:02:09: Tick 2 +[T:12] 21/07/2023 15:02:09: Tick 3 +[T:12] 21/07/2023 15:02:09: Tick 4 +[T:12] 21/07/2023 15:02:09: Tick 5 ``` Now all the notifications are coming in on thread 12, the thread created for the `EventLoopScheduler`. Note that even here, `Range` isn't using that scheduler. The difference is that `Range` defaults to `CurrentThreadScheduler`, so it will generate its outputs from whatever thread you happen to call it from. So even though it's not actually using the `EventLoopScheduler`, it does end up using that scheduler's thread, because we used that scheduler to subscribe to the `Range`. @@ -722,7 +722,7 @@ public partial class Window1 : INotifyPropertyChanged { _value2 = value; var handler = PropertyChanged; - if (handler != null) handler(this, new PropertyChangedEventArgs("Value2")); + if (handler != null) handler(this, new PropertyChangedEventArgs(nameof(Value2))); } } @@ -771,11 +771,17 @@ Although adopting Rx can't magically avoid classic concurrency problems, Rx can - Only the top-level subscriber should make scheduling decisions - Avoid using blocking calls: e.g. `First`, `Last` and `Single` -The last example came unstuck with one simple problem; the `GetTemperature` service was dictating the scheduling model when, really, it had no business doing so. Code representing a temperature sensor shouldn't need to know that I'm using a particular UI framework, and certainly shouldn't be unilaterally deciding that it is going to run certain work on a WPF user interface thread. When getting started with Rx, it can be easy to convince yourself that baking scheduling decisions into lower layers is somehow being 'helpful'. "Look!" you might say. "Not only have I provided temperature readings, I've also made this automatically notify you on the UI thread, so you won't have to bother with `ObserveOn`." The intentions may be good, but it's all too easy to create a threading nightmare. Only the code that sets up a subscription and consumes its results can have a complete overview of the concurrency requirements, so that is the right level at which to choose which schedulers to use. Lower levels of code should not try to get involved; they should just do what they are told. (Rx arguably breaks this rule slightly itself by choosing default schedulers where they are needed. But it makes very conservative choices designed to minimize the chances of deadlock, and always allows applications to take control by specifying the scheduler.) +The last example came unstuck with one simple problem; the `GetTemperature` service was dictating the scheduling model when, really, it had no business doing so. Code representing a temperature sensor shouldn't need to know that I'm using a particular UI framework, and certainly shouldn't be unilaterally deciding that it is going to run certain work on a WPF user interface thread. + +When getting started with Rx, it can be easy to convince yourself that baking scheduling decisions into lower layers is somehow being 'helpful'. "Look!" you might say. "Not only have I provided temperature readings, I've also made this automatically notify you on the UI thread, so you won't have to bother with `ObserveOn`." The intentions may be good, but it's all too easy to create a threading nightmare. + +Only the code that sets up a subscription and consumes its results can have a complete overview of the concurrency requirements, so that is the right level at which to choose which schedulers to use. Lower levels of code should not try to get involved; they should just do what they are told. (Rx arguably breaks this rule slightly itself by choosing default schedulers where they are needed. But it makes very conservative choices designed to minimize the chances of deadlock, and always allows applications to take control by specifying the scheduler.) Note that following either one of the two rules above would have been sufficient to prevent deadlock in this example. But it is best to follow both rules. -This does leave one question unanswered: _how_ should the top-level subscriber make scheduling decisions? I've identified the area of the code that needs to make the decision, but what should the decision be? It will depend on the kind of application you are writing. For UI code, this pattern generally works well: "Subscribe on a background thread; Observe on the UI thread". With UI code, the risk of deadlock arises in because the UI thread is effectively a shared resource, and contention for that resource can produce deadlock. So the strategy is to avoid requiring that resource as much as possible: work that doesn't need to be on the thread should not be on that thread, which is why performing subscription on a worker thread (e.g., by using the `TaskPoolScheduler`) reduces the risk of deadlock. It follows that if you have observable sources that decide when to produce events (e.g., timers, or sources representing inputs from external information feeds or devices) you would also want those to schedule work on worker threads. It is only when we need to update the user interface that we need our code to run on the UI thread, and so we defer that until the last possible moment by using `ObserveOn` in conjunction with a suitable UI-aware scheduler (such as the WPF `DispatcherScheduler`). If we have a complex Rx query made up out of multiple operators, this `ObserveOn` should come right at the end, just before we call `Subscribe` to attach the handler that will update the UI. This way, only the final step, the updating of the UI, will need access to the UI thread. By the time this runs, all complex processing will be complete, and so this should be able to run very quickly, relinquishing control of the UI thread almost immediately, improving application responsiveness, and lowering the risk of deadlock. +This does leave one question unanswered: _how_ should the top-level subscriber make scheduling decisions? I've identified the area of the code that needs to make the decision, but what should the decision be? It will depend on the kind of application you are writing. For UI code, this pattern generally works well: "Subscribe on a background thread; Observe on the UI thread". With UI code, the risk of deadlock arises in because the UI thread is effectively a shared resource, and contention for that resource can produce deadlock. So the strategy is to avoid requiring that resource as much as possible: work that doesn't need to be on the thread should not be on that thread, which is why performing subscription on a worker thread (e.g., by using the `TaskPoolScheduler`) reduces the risk of deadlock. + +It follows that if you have observable sources that decide when to produce events (e.g., timers, or sources representing inputs from external information feeds or devices) you would also want those to schedule work on worker threads. It is only when we need to update the user interface that we need our code to run on the UI thread, and so we defer that until the last possible moment by using `ObserveOn` in conjunction with a suitable UI-aware scheduler (such as the WPF `DispatcherScheduler`). If we have a complex Rx query made up out of multiple operators, this `ObserveOn` should come right at the end, just before we call `Subscribe` to attach the handler that will update the UI. This way, only the final step, the updating of the UI, will need access to the UI thread. By the time this runs, all complex processing will be complete, and so this should be able to run very quickly, relinquishing control of the UI thread almost immediately, improving application responsiveness, and lowering the risk of deadlock. Other scenarios will require other strategies, but the general principle with deadlocks is always the same: understand which shared resources require exclusive access. For example, if you have a sensor library, it might create a dedicated thread to monitor devices and report new measurements, and if it were to stipulate that certain work had to be done on that thread, this would be very similar to the UI scenario: there is a particular thread that you will need to avoid blocking. The same approach would likely apply here. But this is not the only kind of scenario. @@ -783,7 +789,7 @@ You could imagine a data processing application in which certain data structures ## Advanced features of schedulers -Schedulers provide some features that are mainly of interest when writing observable sources that need to interact with a schedule. The most common way to use schedulers is when setting up a subscription, either supplying them as arguments when creating observable sources, or passing them to `SubscribeOn` and `ObserveOn`. But if you need to write an observable source that produces items on some schedule of its own choosing (e.g., suppose you are writing a library that represents some external data source and you want to present that as an `IObservable`), you might need to use some of these more advanced features. +Schedulers provide some features that are mainly of interest when writing observable sources that need to interact with a scheduler. The most common way to use schedulers is when setting up a subscription, either supplying them as arguments when creating observable sources, or passing them to `SubscribeOn` and `ObserveOn`. But if you need to write an observable source that produces items on some schedule of its own choosing (e.g., suppose you are writing a library that represents some external data source and you want to present that as an `IObservable`), you might need to use some of these more advanced features. ### Passing state @@ -809,25 +815,20 @@ Logically, `Range` is just a loop that executes once for each item it produces. Notice that the lambda passed to `Schedule` has been annotated with `static`. This tells the C# compiler that it is our intention _not_ to capture any variables, and that any attempt to do so should cause a compiler error. The advantage of this is that the compiler is able to generate code that reuses the same delegate instance for every call. The first time this runs, it will create a delegate and store it in a hidden field. On every subsequent execution of this (either in future iterations of the same range, or for completely new range instances) it can just use that same delegate again and again and again. This is possible because the delegate captures no state. This avoids allocating a new object each time round the loop. -Couldn't the Rx library have used this more straightforward approach? - -```cs -var next = scheduler.Schedule(() => LoopRec(scheduler)); // Don't do this. (See below.) -``` - -This uses an extension method that Rx supplies for cases where you have no need for the `state` argument. In fact it's the wrong thing to use here, because this could end up passing the wrong scheduler. If you look at the `IScheduler` interface, you'll see that the work item callback's first argument is an `IScheduler`, and you're supposed to use that scheduler for any logically recursive work. Some schedulers (e.g., the `ImmediateScheduler`) supply a special type of scheduler specifically to avoid logical recursion turning into actual recursion that could end up going so deep that the application crashes with a stack overflow. This particular extension method isn't meant for these logically recursive scenarios, so we can't quite make it this simple. But perhaps we could avoid that weirdness of passing our own `this` argument: +Couldn't the Rx library have used a more straightforward approach? We could choose not to use the state, passing a `null` state to scheduler, and then discarding the state argument passed to our callback: ```cs +// Less weird, but less efficient: var next = scheduler.Schedule(null, (innerScheduler, _) => LoopRec(innerScheduler)); ``` -This fixes the problem with the preceding example: it correctly uses the correct scheduler for any further logically recursive calls. And now we're just invoking the `LoopRec` instance member in the ordinary way: we're implicitly using the `this` reference that is in scope. So this will create a delegate the captures that implicit `this` reference. But that's inefficient: it will force the compiler to generate code that allocates two objects each time this line runs. (And the same would happen with the preceding example. Not only is it broken, it's also inefficient.) It creates one object that has a field holding onto the captured `this`, and then it needs to create a distinct delegate instance that has a reference to that capture object. +This avoids the weirdness of passing our own `this` argument: now we're just invoking the `LoopRec` instance member in the ordinary way: we're implicitly using the `this` reference that is in scope. So this will create a delegate the captures that implicit `this` reference. This works, but it's inefficient: it will force the compiler to generate code that allocates a couple of objects. It creates one object that has a field holding onto the captured `this`, and then it needs to create a distinct delegate instance that has a reference to that capture object. The more complex code that is actually in the `Range` implementation avoids this. It disables capture by annotating the lambda with `static`. That prevents code from relying on the implicit `this` reference. So it has had to arrange for the `this` reference to be available to the callback. And that's exactly the sort of thing the `state` argument is there for. It provides a way to pass in some per-work-item state so that you can avoid the overhead of capturing variables on each iteration. ### Future scheduling -I talked earlier about time-based operators, and also about the two time-based members of `ISchedule` that enable this, but I've not yet shown how to use it. These enable you to schedule an action to be executed in the future. You can do so by specifying the exact point in time an action should be invoked by calling the overload of `Schedule` that takes a `DateTimeOffset`, or you can specify the period of time to wait until the action is invoked with the `TimeSpan`-based overload. +I talked earlier about time-based operators, and also about the two time-based members of `ISchedule` that enable this, but I've not yet shown how to use it. These enable you to schedule an action to be executed in the future. (This relies on the process continuing to run for as long as necessary. As mentioned in earlier chapters, `System.Reactive` doesn't support persistent, durable subscriptions. So if you want to schedule something for days into the future, you might want to look at [Reaqtor](https://reaqtive.net/).) You can do so by specifying the exact point in time an action should be invoked by calling the overload of `Schedule` that takes a `DateTimeOffset`, or you can specify the period of time to wait until the action is invoked with the `TimeSpan`-based overload. You can use the `TimeSpan` overload like this: @@ -883,15 +884,15 @@ To illustrate cancellation in operation, this slightly unrealistic example runs ```cs public IDisposable Work(IScheduler scheduler, List list) { - var tokenSource = new CancellationTokenSource(); - var cancelToken = tokenSource.Token; - var task = new Task(() => + CancellationTokenSource tokenSource = new(); + CancellationToken cancelToken = tokenSource.Token; + Task task = new(() => { Console.WriteLine(); for (int i = 0; i < 1000; i++) { - var sw = new SpinWait(); + SpinWait sw = new(); for (int j = 0; j < 3000; j++) sw.SpinOnce(); @@ -919,10 +920,10 @@ public IDisposable Work(IScheduler scheduler, List list) This code schedules the above code and allows the user to cancel the processing work by pressing Enter ```cs -var list = new List(); +List list = new(); Console.WriteLine("Enter to quit:"); -var token = scheduler.Schedule(list, Work); +IDisposable token = scheduler.Schedule(list, Work); Console.ReadLine(); Console.WriteLine("Cancelling..."); diff --git a/content/GraphicsIntro/Ch09-CombiningSequences-Marbles.ai b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles.ai index 0dd72ab..d1aa6f7 100644 --- a/content/GraphicsIntro/Ch09-CombiningSequences-Marbles.ai +++ b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles.ai @@ -1,7 +1,7 @@ %PDF-1.6 % -1 0 obj <> endobj 2 0 obj <>stream +1 0 obj <> endobj 2 0 obj <>stream - + Adobe Illustrator 28.0 (Windows) 2023-11-02T15:23:12Z - 2023-11-08T17:08:14Z - 2023-11-08T17:08:14Z + 2023-12-14T11:08:40Z + 2023-12-14T11:08:40Z 84 256 JPEG - /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAABUAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A79d+VdK1OVprybUrGRYb mAQveuCYpGQySDjLKOI4rSp28MBFtWTEJcyh7n1fKl9I2k6dfa2dS5vdk3Kv6T20JdEX1WHHmD/t kgZHk3YMEd/VX2r087+YmnhjHlO7pLJHGW9e2qvO3M5JBYbDjx/XQ7Y8R7nIOGH877GQeX9TuNU0 Sy1G5tHsZrqJZXtJCrPHyFaEqWHv1yQLROIBobphhYuxV2KuxV2KuxV2KsSXQPJHmVy62Mn+gJNZ 8JLee0CiWQmQKsqRc1Z4+RpVX2J5DicBiC1ZMMZ80Dq3k/8ALe31O3tb62aO5vhOY3LzFKMgST1Z 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 XAX0+rfCoNd+KqpndWVtdCMXEayrE/NVYBl5cSu4PsxxVjbaVGPNMs/+HIJLWOERR36emJG2DU9J +KkAsRyrXKuH13XTmqsNNh/xPaXaeXY40jgZP0iTEJI2LAgCNCV4jx5ct9hscSPWDXTmrJMtV2Ku xV2KuxV2KvnPyF5UsJtFBs/Kq62kdtKpltNctHkT1peYWGS0itUU3NObGqcSop44q9u8l2X1PSng /Rk+k0mJ+qT3P1pd0T4oW5vxQ91ovx8jQ15Mqn2KqN5aJdQei7Mq843qhKt+7cOKFSCPs4qx70oB 5whVbbUmaCJkFyLlms6Hg55o8nInffanTxyk/wB4OfL4KyfLldirsVdirsVdir//2Q== + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAABUAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +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 default uuid:65E6390686CF11DBA6E2D887CEACB407 xmp.did:c765f3ac-1881-344b-850f-cb39f546655d - uuid:b9b0343d-bfea-4247-9e1c-b4bdb8a45359 + uuid:0f73cf5b-5807-487b-83e4-9feb27d0eeaa uuid:152d443f-61e9-4330-bb51-f38a8e360e29 xmp.did:f18479d1-4e7f-4340-b533-076a69bfb2ae @@ -72,21 +72,12 @@ False False - 461.981651 - 528.676005 + 457.733945 + 133.375724 Pixels - - Consolas - Consolas - Regular - Open Type - Version 7.00 - False - consola.ttf - MyriadPro-Regular Myriad Pro @@ -105,6 +96,15 @@ False tahoma.ttf + + Consolas + Consolas + Regular + Open Type + Version 7.00 + False + consola.ttf + @@ -707,33 +707,32 @@ -endstream endobj 3 0 obj <> endobj 6 0 obj <>>>/Thumb 264 0 R/TrimBox[0.0 0.0 461.982 528.676]/Type/Page/PieceInfo<>>> endobj 262 0 obj <>stream -H; -A >6NfAbzii\t/ߡKR@ oy_c0EZM(LkܮVQVJb[͋L QW?4BMsF33ɜ`C] -endstream endobj 264 0 obj <>stream -8;Z]!;%A+1#X`h9$Z[9JQXeD#Ume:TQ]5&`+VWPZ4@pn6;pbt6&cq?L)uLt;YY8=D -Ppj4CCl(VDe($($DM8n![n7f5#El%[8O#8)OFE4H7)/!+$D5sOh/][K -endstream endobj 265 0 obj <> endobj 267 0 obj <> endobj 268 0 obj <>stream +endstream endobj 3 0 obj <> endobj 6 0 obj <>>>/Thumb 283 0 R/TrimBox[0.0 0.0 457.734 133.376]/Type/Page/PieceInfo<>>> endobj 281 0 obj <>stream +H= +A >6NL/V6 Un#l2 <+V@) >stream +8;Xp,SKbk"'AuhTR>&.e]M;(tZD!!!$!rr<$!s8N0$ZO)#i~> +endstream endobj 284 0 obj <> endobj 286 0 obj <> endobj 287 0 obj <>stream %!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 24.0 -%%AI8_CreatorVersion: 28.0.0 +%%AI8_CreatorVersion: 28.1.0 %%For: (Ian Griffiths) () %%Title: (Ch09-CombiningSequences-Marbles.ai) -%%CreationDate: 11/8/2023 5:08 PM +%%CreationDate: 12/14/2023 11:08 AM %%Canvassize: 16383 %%BoundingBox: 20 -2804 937 -5 %%HiResBoundingBox: 20.8046875 -2803.5439453125 936.988157129443 -5.6937054275395 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 14.0 -%AI12_BuildNumber: 88 +%AI12_BuildNumber: 141 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %%+ 0.172549024224281 0.196078434586525 0.7843137383461 (code keyword) -%AI3_Cropmarks: -7.26605504587133 -2818.86894230825 454.715596330283 -2290.19293716288 +%AI3_Cropmarks: 477.733944954131 -423.027100099343 935.467889908259 -289.651376146789 %AI3_TemplateBox: 683.5 -384.5 683.5 -384.5 -%AI3_TileBox: -73.8752354613098 -2975.52092996994 521.144723034784 -2133.66094949851 +%AI3_TileBox: 285.730927194138 -653.939244226582 1127.59090766557 -58.9192857304879 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 6 @@ -743,9 +742,9 @@ endstream endobj 265 0 obj <>stream -%AI24_ZStandard_Data(/XdgE /P&mIcNm9PY,SjVŸҗn > 8T[I /Jt2F2aEn@DmAϻ&i):josw ["ǂ>H I0-whCR,D *IB AW/ nXOwOYex;=TEԲaMt%ëTtqL% ӻBǃ6 j P$S$ "InłA  Fh@up8>`< D!0 HɣP$WS$h, Ŧ!=#U$NEb]xVhXEU$Hp4dcH7 T$rPC"15 h0_Ml,rHHcW0 [Khk)PHV.~}ϲi 'h:Q$dR$D1ŊDaEH"5܀0 F2Q b< \ Z(ǚcPE9)HkWV E7j~#ˡHt7Hx4KW$"*KEpP$D("p/,S.-yא -t[""IU$eP$>stream +%AI24_ZStandard_Data(/Xd޹ŋ /P&mIcNm9PY,SjVŸҗn ; _EXBv-pcAp`CV$ qG{ޮDSE!}MgVE㊤chcǫì얎tUFމCUD-[&BKCU*Z:JFF,LBbAH7=AXsp\5 / GpУgU*YHc=+=Βs1sBR2SRZj"$q -xQM"q"i8IިHRww, b8`0NGҠt8>x@! +9q@ EH ""GcX-6 n"t*s삞V^YAۣ*cW"#`(U$m#݀,P4[{A ERԀ(X|5ȅ""]EH7l/jAB%""E"HR\ZUL{=2^:_5TGF@J(DTB5e}/_$+- _ +W/Ɋv:V$D(lX `$ c-"y9{Z_=a U$ +q"a8doveUPtc:zAws,}dGctE|,"T$7 EA!"a2%w 0Kwɸ +"IU$eP$3޸CN /ja["cX8dHaF1q d$C8c`0 0F5q  Gр4@G:ԡHqp4qÏzȇ>AC -! i@5eІ"ц");L/*A."!>  Ex@(.Ex@ə"ƃX<CG>q{أ~x8h8 ñp,wC@9Q4 GX4؆6 l\ְF5ܠ`8 Ƃq22 d0cX0E.pq [qg|ǺH}c~wusqomk}Cjꩩ|d#Enff*KJ'%@.𸘈xhXh8~zxwvu>:9a {"93+#cvG~JiHAb4ZieR$/5 Nm"qp8 tڥ$$EJHdGeeEX|"~6K KYL1? 1ġH^x"9[ِGA Z(iA "%I@D0ΩδC sݮ-\eԭEo'*oz(oY7x_wZҗFSY{tdYv{ fn5ջFPk׉tgu 7Kso/Z;?ͤ2ο[ӼT[}l3-(s/'S_GG -w[%]-F6.vIgTXtI+9o8fcW6~Wi^'] tEˣx\+&g75ܼ )RU4ܬߋj.+~r.hu)7]a}MVK]GB˓;2]2˥6Oݢ|.iJ$3Z.PFkTKc鲙v.?R04y".xez\\X?׳u-W1%+s6Ь.I}Zrʢ_cD8%SSF֑[2[[JcQP$ Gp*r١("Y4 [hĞsHYy6g0p,XF:FF68Gq~,GݙFhzHGi<ΆguulOjvCEN3h=Sp,%(mw_WRB_!沎23=u:mBҘfGJY9ל;YFTEŴ4)YY|qTZ)x;yl[ٜ٬_:iΗ)&M[QI5WeyߪKq"d4V3d-As)^Xm@s2;ĵݣTRXck{K~챴\i,K:*Oh65ʣo˼WSc-zSZ~58rDy-In>ż5(~O+榿Z:+>UKZśUiTqTs˦gY6,4iJꖎdm{)ݵ[+RNi_cYv,K*,JUc-KF(}_&]Iud{1}I-TO$KYM"zܫ9yZ76ࢍ.k=4GQ!۵xWLJb0Ofx6jM"=ovo5%޾8ŀy4j*I#̦uE<*^];ů^2(nS|sx8[y\iUJ0i;.\l}[OMa_7-2o|ײ4ђPn9DLugoyQ+Z筧q՞:x<ҦJB#霛fxԲ?%+j -3Z\d4^7Ve"miq\wV{T } iykExRb&6 $H`/]"f-mvR=%}5Z;ojwӞW;?cxD֑Ҿ'a1,]U*#K|WcVZQ]a%bZb~6uTӫ=s~䴣U⎳ʦjdZ-Ui7ɳD>]J&S*ԥiutލ*x.›smU~9h#m0dwt<]jUM#τVK͗OhO=)ᩋ& -׬\imojn3NwŀT]YsTHM-my6YuG+Yά4HqʪNw/]t9Jx[lw31Kf^%]Q>\Wzen76[J[U_GY͕3[LmTwV2YG.7VzJf4:|?^(L X4w]<+,5vz+'AQWK&]v=h>tѨ0c3 o[ִ} O4ឩm|hhzmі+G;xTs򣩧#ܪfZ>F6JD;ړ޿4+\5DEͲŲ Elg:c 7wëU XY#~YZZKy_r {; nQw6wNZrBnyˌWE^1e撫J楗eRb)O7u' -pVS+m --6Kcu_aa:URx5~F2"KzJ{,)7W_.{ͺ-]uΨqndmODڱCvdB-G)-YN+uk6zЦ4C#4줯=fXV;ivWfɲ3;;&mU{}c-y\Ɇ-R.Z4g>S)dZU"U dR#qU"ڲVҢNe1ťC^Y7mR]EyGMrwQYw7o-MOtIlzJj%ލSϳ{/vKLWn)՗RKmwgukY1YVI)ӋgH~|j̥#.TG00a !bhjYKJ6Ѩj-V(~5v;TmUma]4Vu۴ڧ]\ǒH+HUN!zW)un\zntnQm_b')f=QM֣LTSLS_juTɓxdܭ~.VViwwӎn(h76ʣģ*$ڒ}CTIJ)mCX?s)ۭO^bib륇gdwV2mLIW¯|3L,/Ynnm[ Ecu2u)LW3\WQxB$|=RM%)VPR?{z55Mr㋴ʑ٨d?_1T_6QQj]j^nUiְVPlgUӫ}꧷tgΒ&ZQ -t3}\cARnfIB3RJGjĪQBtl5}@+*d~{iȈȐNt7Ų]RSu,}w\ӸjϊVrh*vN$M^x/ιt\Q֍%jGV*wq/1Ӿg7eU9o)J8V5mc%s bIoJh.x7,OU;"*M<}x%m%ţJ&HiHMEs嚫YVZC.^\gӬ/iilc?!gʢ'Vx/ݠp͜SW~;ʱM᪭zxkՅ/-,/EyS1\g,v7V=<Лxgxʭ+T+Yj*ghѭHqCe¥)ӊ_9[,f#n%as5յW[4UCK,%,\K,]Zx(U^ΦtOORSШUYm~V-! ?5HǴ;fVj3Kq2K]EH4{\x軺p,~̮:F^3Z>zsʇUҥfk4iM~9jk2HSUFdd.|1m>KBIx_Ixm|y9]N4īߝtϫYϔg~5vqJN%t 륤zoHIo[IL53*қ7JS͙J7De1lL33gͱQ3m63\ʹic#=+u6]:Jhz .P n뒮jhMݯꥵk7P! tk;llՖ~e=&"25L+itNʨ!馕Vө EU7;6QgDW]_Z5Z+-hoLgp~WԜ͘g٪+*^sj릵UvCۭ&-J;Nz:u w`9Zl5ƹtV<%J؎hv\ueA_ٕڇvѳ˳ᨩrrw0WZO2[VVޘY+t\l;d?I~cQpgNL+U֤9ihzV[W]ݮgIuS(շZYeVѐE-󐕲\̵̤گ,}lii-Y2uo+2tY+M<>_Yom&L#ʲ&3<\Y봙kZ#*xZDͭB`@0B ;M>Ĵzwvhm{Sfq5:ك=1T>D[Q{ ՠ*Ea5 6 <{͞)Bi -,*1X`&z,`^9dBKK*K|ݙJM;ÛݍF fUscح$t>7 P._$wN1I@sECNy qR<'ξ{A;V_qk пDfApr3!(] 3 تغK(iB1Ar8R=v3#h/W]}˄AYIqx EZ8hvKyz(vrYm%@ED;tC(iYY;)`It֝PDV6xT2}`&ȖWYRu}9xL’N1!"=*o{vt$5q NKpnǃ#$U)^gJH.x`%tyc_[,:([hn) S˛^fu'LLԞ5ԮSS$aq92D=DNK[[)<#+Bw(J&v1xB;m1e6q: 2Კ ,v/ܮz 8?ӵvBȎhי8a?S*}^4ʤpdȫr T+l=zRW .p"R[u E{%ۨ$^^x~R] -?8gٲ@X=`9 "~dB;z!@xL1]܏ItG- <QḔjܙ\zOD݂bX64\~V+]J_QFp!;.um12+uaa,ݧiz8h{{WqqTkzxQh 7ٳyzO3(w?P-cŏL:)ʩ6T`&bnaIM~V'_J2%Qk?@@`)Xȼ8'#Ŀ屟p$@91UBhNf0eg?|;f {jFb{vI^ $ޣ}`8yJ +ѳ6a;24G "}_r"M+%Y@{kˡP.7Ӏϗ돉jv+C&pmM%Ie> -ٹΜ *o - gd")[@@5%"* ~N2H -+&b6F K Aa) -Q-ꬠ01{@ -.V7mJLFNE LWJ,ꆃOj27ɻ t{(u|WPiD|'͓eG$G#9 <Sq*2,xh2R`s)rhuxY<M:A7| N#LlI"|N!3%m^痮F?+'QޡQ7A~3۫mr^Ⱥ#|$b#*t -:"АUDe4M_ͿqJwkWGF""X#WCqj'$FR9).n8Pk<4#udo2hxazRW̓NxTK^ĢMej?[MPEq&@èӤ+{h k{&ъx:om/n\'|*GqIP2yf0@7Eݾu=@[GKδV9jYgc(0Kןv5",5U xCU֓%-oL`M] Fy8L];U  -1U0\.[=U'# ]g_jRa> %ϣ_1; X7?(b傜'8\`:Etz3oHa iO>9r['ݸ !sv{ 6[y}GJg3!s^9h |[ݸFAu"ZeQ-\d{,\p|sa9W h4\]ۀhcJo1PhZF`UFܶӞ𒬭شǣ,z,iTlX:L bC;^^U3(F7MV[0NE[1AETPMԃХ*߾GQHwfu* $Ptd5"CРc[@ iiEմ[Jm@oXr55u0f,iŬ +tL3L^89?zjA~x3D9&{ԺBF]DJ 4qI-N(^]'}Ww)Qiup !\ieږ:I\:h%JZz?=IaMǺߌgͼ]+\8-}ZhP~ED + Y)bi4еLʸ 5ؐlZ)d8@`Ix0&)?"N^p(Ѷ4e"c$҄IOIba܆4ڏr #5oJ6:FYZf$J87""TGY2 ?2\Is -"m|#ǯ+>vDg ! @k\1,z:SzR`4bpq,7i{${QN=q֡K[qdaSѪv+wBďNa1# h\Xu۩'|ËڑqVTx~Y?>Ϗ=dAJ.7avB0ZzN)4#sygߡ#=^߯~< -gޔ\JU  =fmqH@vz2tU@s Y2H#~$]m&^>%G2459dRh(kW[pĔ4.M# `\:hg`*FRWl,C?CcϮ f9P3,pJg3GXBpP0^(8e+Y@R=IhX\?ULhQP(r'1ܩtuO5i 55~[O~գIs<'z+2LL-)~N ?Î ܓ`$*r$ulcx{̬6~^C^WzUl'k'^XF{R(O?g pI#n22IUrKxv\H2 39Sн@$Ut~hߗlٱ>Ҭ7xd))[,e7;@JmQcSj=>]m!Olgx٨ vm흙[}d&Xp $bturI2Vinz}_B3Z~Ec2 cBժ*QeL ^s2 #tpއɑi9t÷>7s܉AS Xe]l><nU_ePFϿ%lv?Owإ0ӺQl4(}%)&t*hN Yb1(]`?,.bmiD@ -.x+5΋7P|T.Pٯ#^WWk@vLh*NNW%k -OUzڞd+[ ئ;K>XLGүHDhy9"`+=c@jI#oYA"KmeKS!uu7C)I=@2Mz1<XwEň| Szr!jW >9C*l (>Pc6ܫS -<)3b! -+k4%j>&; Pxqxj'Rn$(ӧBDnz#^ {)Ƀ6yѦJTXIZa\ 4eYlYEbߨ8Ckd8 yE_m"4cs -Ъ"iS֑M9-PbW \UK2]*h"Xz-dw6y-XJ#z/ I;ėG;gwa.­^ ϱ&0]+hf6 Fزd.E$){#v(S>k\@{Gfjb.b2C$hL;Oínj50s_d(Nfrє-t`e , G6l2h -59_HI3ֱ34F /9ugIE#L^hRhS5%kOn6&lc÷ZCRGf ~Bg}Oؑ1~}ȕ:kVix8d|nv -/@oXdFs|j+Y,",”dV,ysSDeo]zcop_-[3! xU,$Q7)sʁ# ۃA34WŁk茓8g+'B({ `4ior azAz`aF'IKGO'8X?@5W'U)e&P|,E1Gvk?Un!J6)LnL=VQ=bTddT+UBou&4ZѝwK-ZRV<,N_p!,zĀǺVAѰkvm!8ucr2y FM*hx - |_nq -i;$Ω×\nYO OTd0gg-{j -sR¥Sjwb %+*@x -{4ര4VQz2A 8P -A.c =ܕSYF"4gt#B")Z! -{V!6IET3$ 1b?HDHlqhdтIQ9ATtbĜ hI0v* Cj5O .0#+ƙD shI01v tVa͈%~,j@̩EE5bRdOqxwX#_x4gc!( ?4㛃zJ2G:C7v[JrFC"!C9bBòE -H>7gT▎ӂDHZ_ -Ec-ĽAHIue zZhUVx7戠x$Ч@ -6,uT2t 4\]$r,Dr򨌲$ZIzeLEwwjϢsNysiaY[Al@;u!x(~HUʿ[{>UE@4p(nXY^@)a\DJ菪21KQO_!;*8-PdsP/K(Gk]JI{Oa8ķ3iNd -oRHkK(Id6"$:Eo)r]J\gˣѐi4Q]q ɨZܣqOpEXTR%?eS"$BgDnEcD+}âX|*䃽v6R[" jI4QJu3jϑs0;vi

    T1PMЫ,yLEAV -߱\qR` YD,~2rs^2%6cfîV5_Dz="ʂqi(#8뤬P0WKPe'uAs(m&3,Ojuo -B7vH%53Rh` PZʔ/q#Д;ν#b:c=`/:1\`{qk" |"O]d"W-n^0]AN_|I|BE7p>9y@s=6ebFmA2R;),1xHSB)mٵ l?h@|ʉ .B+aɨm[AdIu -)sƀf!֍3@AկfjĞ( 5s5EIxFU뼀 E>-c9@ppȢU|r9Z~9=V^G<Y!J=fv!J=Z(Kiji;w"={g-ATٛ;HN -2SR9Ӫ&TIn dQt0\vf>Z`)KOm[FΩTL*obdt1{I_y\PGǢ6`^Ry/'&{SfL焣}g'cP,1>W3ll/xJzVS험/mdCƆAp PI:YRZ%>KϬm Mݞmy;:_bG &Dlp+FI|̠F ˏ0r I^Nm9Q+aY~") d)pJ-ħ>-agJI0I|н*erPacfaX@'ne}CԈb+ $Z:Q<5}^I9ώNIx=vt+{}ᆪs;?ǖx> j.T]]GKe Mj#!$\߯TK)ݤB5c)[n v4˨^)7`5) -#فPʪ2 JZ*cM-(oJ6tWz -ė9HME! -C0T)ƅlr3ԕ͇iyۅxJ& sC:¢BuӏOJX.%^TQ@eU@܄?ݱk/} #߃ P| D<}S&'n߲Zk>S`xs] [^5$sD<"Q3sLSHFzp!DOwmez 0i),wV+uWur 4;!܍0"ݯzf%l= AV0:9OmM&)R]81OD5DBg,lߩ>nj;˸T3&ڔz X@*eRtb -W@uoD};rb) kjupWPx-BյbFSRyUt?ߓ?<= !ѻğ!1IQ4Tmb^k[i -Pg҉}nRR1|2lU(Ka"CZײL$r$Q*,5F.C]^Rij|">V!;җDT6&_AI#?0FReRH;g5yqwQ<y+!r)0dRR9@?ol!BQ+1aۀEDTS.u_v^!nj^`1,Z-6g]R.zоxzYp׍¿rqþubZV]{'kF+qOS!wռR,&!w9&kaYo!u0'9XSp٪{k.π6c7ƟoTJQu60/yΉw_&$Y g`rCI'6BRc@_&J‰Ws6ՀI#9 28Kylb`b@ZB|&WJs0}ڂ!.e"<j',C=?ë9 /Bbd~ cT\k ubz &b -q8# Jb{96K3.L%KSSI$@l%CЅ G`U <™p#j.^f<{_@)qJ/ ec S{AZUbm<SW3}ÑͫQțI86saddO;GXջ W"fFc35pGޕYk7`&ܗ<*/P([A]?EH='Jd]66 -%bzU|i_usS' 9T<n*1"Mwl+whBvhMt|zc B},^ՈmG]b-w !/-HfG)/> Ux%q5A -ur (G4ߥ1RJ=_D(G֡Q%ϚZc@ iI 6w}cI|NCi܊\Sse)N{lUmv͑탂"" * -*t`_o?K!aN&}y2 LZ2Z1aE5֝K%s'tB 7Όo]68b4pT -mm Pl> dB"™ hNw暓I@>&Uh#e+Bu ޮgvDz)*7mU 1 bPѠ2)mtEgT%`yfC¥: Fa&QD-;R_&YZD9"Lm+h2,p`S -(1d0D<|)aveHɜq JyI >2CR0' ƺǻLbvd`͈q Th 5aš=2"1#bt4ܓ^SM ĭQҹ oz52S;PYA&AԨy osAmPA},j9D"_O9v_/'r\5V4o+xUpd'icFRUx k퀢WR> _gХJmfeU➝*73 #8tֺzO*9mW~hpE5'\[ -(7Ly"C%+˷u|DilZ35藚up3+v:㇆\`iY/u :(>{51&wz+0^B sٞ"Hsޘn!@Jݨ>l ZƄ'Tz F! ^2fd/HE;$& C"lY-ԯK9?A :vdAV1 ?{ט7UI?ޗReN=OnJ05 N,)fNf;;s%'1tW0"w# !\* -2V4aKեwnH:+g>@~K[-}שA+yoMqqc;Iug?INEYj'X1LbzXD&XEߐ埾 XFsh*3i2cVVyI]Kˬ~%IzxoلRu Y4hN$j   ,ۣ+IR7'㖌Ĝ.AR3JFGv$;ۙtŋ٫L8?ѢԈ+gT$L:ǦE__" ZdlE:KTG05l%M90/*`y"tӖyִvoUq8V`jdCoTe?y@&/B3`5}À M.h<瞧%y@|aZ -XA}ZU3ݤl'9oZz+V,OF0\αm\`$ȇY6#D^JP*"C|L*ЦTl>Dgq㔊T`5ރxi\YQ(RJDݳQ!h 2`I_eKy,2)\%kNQ__1413p4G4]86t'Ȁ3mmz"Kw (SwhHx)Ad#M*]!遜0P\Q~#%_{?xYe]4wlB1rBJS߄*iӀ vAep@YDZzzli`lq*cl]xV)}X0UoGmTJ -O)xfi.߾ I -k8$!}aRP\IP@AS 7~cO@u'2xƠx_ W|{eHdYim M -*F*.Vmͼ6h mQ0{CL.blzU&`0eDehMb-~a,4kZ vvM6ҹ&Snb˦XR%-Cl>78\f'^5*fO&ҙhZc{k[LsX0i! _+ mVЌG V5=SV/\dKk6^3=. .jMr-s,7e`Q~$`v˱c%%LMNߑ ©8K6bhQ1z轉^MV` ןT=}ZM)VST nQM٥v~e# 9#q~>Ctj4!&K|P }hF}M$b{*3%LztouM-j t%]7̵R Ek1h -WBNg|cՕG`W~[ ˣ*Y w|-kj#y !)j}hn#QX`!.]cfZP0]d{EҐ.`{mU(ы:ͻ}PszaLxF®@"8/F"P)T@{{HbZ\A@ɏJ5P^JqcP(2M,wv  - 2^L!咬 #&|"sGatC -&zzWDǢ5Wr}Hx:0E6‘œP 3@!7ό)s ?JRR , @ -HTPg9gL)NosC})du0G,uGtf<H`%049zyXA -[%mP̠~OL!YMs"Z' `( qj#:gZ -Nk&TKɥ@U/5touXXdDaѠoL2RMGSYHeOumv殦McE/Hd-Of塿tǐDgyZBJgqpMbO!z ZX.b}OW`a|X+rYXZ{, -T -b ɷJ ƺU1[+5MF7rTPoe4#ǧiÉFe1c"|CPQPw j}?TPo?k#w*/' 7L.[~F]^۽:9 $Wl#[/ -txzOimz0kg/>$W81#eD?YTQIHb~E7HH< ?PأB -㛰qO'bd(՛xn8uCK7ut &Z n.Հlz p6ԺcӆC0׏X,9zƑ G1) 83Ȉ@@j#SZkT~:\#x^ٱ[4& g gqE$~2`=7'S_{,XzG1_(De(*+r;) -U<XL8c a!Z?W 2k׵%$I;_ ghsL xAs"'Ay8dȒP@jy"b$mP5*1$)m*ʎ59'POM9nwt0r(o,԰X{40]v36Ne+4kU˥G+{Js=OGoF鬯%<[FT㷙94[JfԬ$C\뵣T]_40B(_U.WLm8/#hۀ=فӑ0+a?;PZt˪o ybv؆Ɯ32ᄷDA e0&1QC&O/r.ޒΗK[ lLD$:JI$3@$m>n$+]Cwe  G=a;Gdyi'!Ѓg_RZV-h^ժ{ -*`'2^7*c#_YGj٘ _"/bQ|Iu*Dť`͐C{v`)w^qWw/nIS>; ׿.9^!Z[X+8G<;|<(hf -!/r[sal]:z?2"> @cL>!}uH,˗)`Y5/Ϊ^ּ ׶^`nW寡5奡ߣuZ6TBPǩk26/5)vԢIĘNIslUnvNF> wmb d(Z\65ӋBJ=bQ[Wbs[3ܢEl'-vQ1I[LJR[IQT]5l:k@o G %5H<`eHK Gy5ZWъһ7H7CgT9S8_IW/ԺrM#W^F\O"Cb`x -̌5'x"& -5{<U.eUG$](/V~Rޕz' $q9tPq;SkQz -ՒFɹؔL}!%RfCExNfDޙ@ VbuݴԋP$02*ࠢǃE{M?(7{CN*oڋ&RkfL`IGo Ӄ>IsܱS3&Uُ5xT}!%FJ7?W{S4n̮| тD* (-8.ԊlYp$*5hvB2]>wߴDx^P`Te%uѹYuRd"ghG(oV$?"N;]﫤 -huBo綖/DffB et}sʭ%gS))`@\O3]~@M.F'=ۡv I~ -r։FW &Gg_yb\9-Ǣ_eWu0U#U??>#su RTuM5sC!]_i k%_ф|/s-a œ.$eokf̳'kOK!M/lGH1w C=o_)]'r!).c#ȄhM'JMWr◢"k9X]k`@ƺ~JZԘ(/ v#Ň44$E54$7[pIB=N v'qFJRI""w B!8X2CᲑ&ȅ<>}ɊZd1Ӊp(ˈ&K lXk$"BP$D+/PL"/7T8QAD(0$! cL )XR+B(„BHPx!2B $B7HU.8B0 JC|yCIBLAb%J9\.R$.]D &2amB -nj:j:on\}!- 6C:WRMt΂h{+I NeC4D?Z)HN5Ŋȶw2e95 SSE3i -rIjXaj$}Up'PiF\B1Bc }5)gv BDUIMX]je -U;V%` -5NhNfj5j3AF` p,r EYQV ԡY֦f$ P,0BB|*N!&z8@3|ol(c8C?bm^%soqHLa|lKR )%1wfO`|ETψ. jק".bDF5lȤ8Mm#x׸sw%2U0%N}CXB>:C/ǂ$"`c)`"DSp= -a`"$f)7+D2ⵎC}*O QEP:%" T&Gr -MCCuP4H&u -ܜd%cItxp5.[@=t!*f)aeOEaRwuKRpq`.q&RNſݔх'ZY%X dA#_E ^|" BRj"Am2k^W8W۟k3\@S5.b64mrț8~͌,},c8FꢵhT!r.z,ETZBەd&KV2 E!D>vY1[z#\p/Zn#q'PbDUv"eq:P5%&!bNjh?أJOLi%2]TUTCU(Jt#t[jngULŬ2V:&!q>ahDZ*{^UG A14m~ryv= u!ST ]өn8kM?b%$B? -~2OH`IdTgm|XccLXƘ'(艭k«3S6I7W~EīylH=Ha1G*1! B PUbS@\\W̦Ͷ dur ΢>ڤ[SMʵ26i\?q1U;WdU-gJ^я%Zyc ex2kƤd΄Nz zfŊTfb_8Cg-NMXtux yѬ(Q_n6zII/-"]"S|)7]$ -!3e[[ :x+c~Umu0 ۑqb`UfFRl)@IRCђ®pTVTM$ 94-I ;yF\J!4F=şU -&avgM}BA&բ}CD5Gfs>#͉~Өf3 -jl5SMxV3nsI,#)cih#ޖ5ςdʘ>m\_xoUBR厵XLHBBZ8pkb_N o b&oW4kCWF+$"IsWTqJSb;틝Нe6QiDi(TZ{lvՁ VP_2*_1 DƋ3H7S3rpwgyRUWLY'IjCBk d^DZ'b7ʝ oDLfilCH/ّնoQ}I)*EExSq)Ѩh\;"-*ӴKf\]+]Þ"˵*m]iiMFb2i$HH! KR O[юr ƖS~Aah - ye4$,"Y9E(Y()%+#KJ<kYk3b"#IB"hQIK25J`Fz$pB!)ٓCaIt-$g+823aتy}4rh'+Mc>3G$N,/ ݱ Aɦ/Y ̈́%q>,sf 1:YErP^eWg#TĈ16yh+^Z[K+|+".FhE)d6ƣ:C-brnw"/trJ΍xe/2/ -K'ɦ$ 9Ņ诉׾f OQlZ58"SX#VI.7Kf J2L2GNCrt̂FHN4Կ5Hm" -t;s$\d /ll5iU)Y!5}єT0 5 MϏzxn/UkPrΠ}bxE,Bmx!Ida09 c -0Qno)6#@ۦ͖Ԡ oS؞3-;00pt s5iPe CD̄<0ZV3$Z@2ZsZ*E_6^S -.ٱتHW e bYV0y(Y}WI2ҴꄪSPBxJ&AB2R -LR@KV KeAsƁ² Q"^MSb뵮p[u {69z, e)eRk‚Xxˀ\o\" z+ H)|Zr_ E~'#AP#]&ewuGFC&t2Zl^4Pj㏥bcB{ˠ |f,١4HHHH;Ad" -xPG(EH2 v,E# F㓘e*c:5# c)8@ F%T,.!߿2WmБVЭ[:mͫv4=_ 2H4,Py,0= j{ L /Yᇈz -be@( ŻghhNABx(>;BRaĂOjL=ԄBmP0Ì)͌e;!F3#&gV1WJ E1Eш<Iqb}" 0GX) R /V u]8CDKu5PߔTb7Pi>*.r8>C1ĵXD"{eeS*T 2NAyT$i V^hY8" (ʢ&]LkTҚuniFQLQ׹ZM.Ɨjǚu2~4sE3Ѣ&is*dK!]##ŦFyKĊM(nNq/ӋNg?Ubu2sz%̕!30Fb`f?.>&U}>UY}0_Q%'۲EB `@ -Cbx|4|B aqPPZ x"J>5f(^).QIF*B!mݨ14T>KXS$$ME9ER.'"9Beآoc܊ށ |~H}9l!No NZTZUhC5s2$]ECwf&ia0@Jh3C9?HwΊu rɟcįx&ۗ E3dߊ8oMzALڧګdxbo9ėU,1Y'}jh݅sVb =S'Mfjl0>E&MzзBtNEfvH_WmH $nI=l 4pءܠ^4бH̑Rїt׻6F\d/ۚqSjd -XԀF P`n퉀Oδܲ9o')UM<4 /ov,ooqWxC5-0ssZ :Xjx#3NNצaP! j4/S(SO ;Sdk23x͢6ƈDw+=2obi1\g-]C)Z $/jg1h9H_ q;paY^fnqM`Xs<pu< Ns#-:mA[Nk0!z -jXlFޔ){߰@y'6máSOcF&J[@8:M\Jc.RL4߲`gߚ85ɂ 9p=B(U<;aZY7FcHY}Oٔ;R4PA|3In -NHwGYjrrcѲA\qȂ=GFs|'1=t62@`'NH,+r"ǝ}~ w|JFЊћb2 m_hEOi"C xkA}S=r﯍ O7>bS{1 +_|.Ǝ 爁N&o -╠|P5L.S0X8=>@ }Y/#(1g+F<[5AW03pЦZ]wҧ mX!X3;#(EʥBPSlf,8 C?H_4Z\HAØ|f,\0r8} ²{3WcO4l*iСt *Di;eq!p 4iNJx`!Tᰧ(UlXK{ ;F8&Sf1 }@J)Jp}-|¸` -<}7Dl#, ARcyjkN0*EZo&^fJcWdzf2n9?׸4s$Ư'.HB,+3i!PLxA^(EAP"g8\x.S,kY.E/Tlh' sכ"etrgJ&A%36dq#AlbCJK,Ġ w^S +&R@cB2}M@ aG'PWݰPUX}LRtk掹^4=8hT;xf1 '][SS7kzQ@V. Sɾ m s7!ZFUhy#Ae_i{$vԹ"r=K6+V]R"'t$T 0qn-0ZM&oA1q5t1~|ϥ4{kZ=g<=<޺o -.Qi^njfOa 1"kۨuư \m*Ыg!mRF0+i(Ye4 RP}#W1_BE^# R[jQt9cQ'O}uB$N#q[ÇGsӕq"ĠFWbWSXH/~0<=i|յкL&A\ M!0?Jv.&t?tǒ&c`>~ aTyTH}ɾ\biHAHxg -8η41S6 ."Ky"aI.Rysdc':4/ʀdI -)CL-nkXr6%m%AfB+RNi2%2QhBZ"4Gǃ-~0Tw넎\6f9@"͋ b&BMDN}n9n1 IŬ 9+<՞.J -Q̮fdjׇ}ߝFw!QrCYɿ)M{TЮNi1nU8szNiȢCYuaS(ŀ[jť|p&߰hCS0- -ٝb%RAX`-, МhGi]ę++@M`ToE *JKhY^P24xhNA)EDa$ZZ(GôjƇjDt\e:^&^ZyI;H1(Wn /f 6Ὅ2 -^,8NMu8+alY@~F@n=,^lK-Ǟm MJfOyZfN}Sa˼@e|Mܩ]"Q\bdA7caq](U3 >Qx8ƀlSeؑWqoTY'410܅ሠMF{MJt&2R2iXȲֆ\W{!b `:ɱuK'89 -RkPzH*{:~(ӘdB|hj'Y _`B4uYLݜVFTf(=tߚ -`h[oQ1v -Pӱ$xsX\H#O i&f+ =!K)djzSO^:Ნ_mJ+ݭ%" ̐XFՈPrgTl E49!r7z)62HyGOl%id` %2hG͡/'![% ~ݪmgg6n{D@P]/^8묰wX hdMǐkiq -u4\Dzdk bhZ8W!&ZUݽk], ORVxB/,t3!2tNV4GP$3:8Z6dUDUQ[6 9KO՘ZfxӾ1:%EIHBkXruLOpkqyH"^_q|}FWB'9R&,W2pz|NKO2w@I1WuX.4z@3VD9@>&QI'Z Y:'Ll",$E4 tRưR5/p&&xgyCdYԴ毎U섑;Y+#&uQf(Stؔ;ֳ(z$,yn3;vkLdV M\xAMsY/R, <nם>2^Ka:H%" o-1Yt03vd-̎vdY SeY{N](}MǕ8r{iʠ[jMlH)0ɣH`ˉtP._I) ~;$[a>g@Wq8x52`*ՠ}0ntN NSo.D]PC*vP}KZm_w&_"{DtHFJ$~ENI*"Q6AM-'AmEYOu{g\ l PFO7/(a5oOo\e4;)A'7R%Wk\UXv~IoS+XAè.Ino\2΢D'TUcBzsu #cynܭQ8͌#9!în'6z;*)죗&99 Cy9VdJ -8׬2,CAxB <_o: -knIy0*XYD-a,=m:_ ae&@PhuU3EIzv|JF??t- |=?԰jZLc uBE3Η͒˃]jB {8sZMYf(;kMYt1v0I]X$stuC֏g` -L~Apo&MRx3c8m&_|:Qh9a 5M'E۽횮N0+ڳncpBt)i.S"-G>e_…K5j*ҿpQ\&TBlAr΄d#qN?͂K'4r_M?⛳UH+4A}gWtCz(4 3zxSb̄40IꁟezL8R{<烢}X>XN0:! `GX(L} $8z B2΋1L 11 |`YL [c%!I 88iRc"D,&: -tZ H+ݤ%¤/0lJj _ĦGdn؈IqHhLL]I!/$48 :-.^ IK.Dp]2d&v.!xvq(tJDE!gI~eILX%vMkBMWZR;g$o <Jj'tG%u<)1'9 >KO#%F/!m -vrQPq'/|PBŀz"O{0RaٓbK &`v@0Ed%VScIk'*@I"QP$Q'f "GBUhtM*VHkAUY!7O"A|+/TuW2x -FB!1# b!8X=HBu`W ,g8j,8Fy#]I F-`|_-#na-GJITˎ|y-PθCGʅss=Ę.$YuNx]5HgBl,/{!2wA'"?H"411 W=ĨӘC~"Sj p] mo4f 6аx hg` *6s1P"C҆0tmLBB6G"$tnv|n7fRH(77!"HగA#2$BB4PHν,Hq#pHAg9eV̡\" >DA bѡ18ApB "PuȎ*9bCqx^_;xw@|C<9Y 8 bD * ]6y,?/d -8z?Lig05B{t?zX' ~8ޡ`~8?ʇ!G}}%KC{tW!$ч -ctg㾼8Qx6 -jnyoliȁG>W@TrQ<{` Yup [7Oo1(dI 'XGvu.#.,TXb idv A]9L]6\ErH 2DT*G+QÈp 1DJDO -σy -yl)uRMA< 1S<\ %4 21na%c C j$d z<AtࡗOd‚];62EsGq D -42ȴ^<ڱ"cx)E)he 6uR{:4dPhSX:'DhҖU HVWH$+qC$,F?hYs{XxD ysZQXF`Cwc;8a@!Q/ -`G%A(8&8fH`ʇ#B#.cp1IptY@'p0 n~a1a7Ba OAX+optlG*x:@nn L7<7F*7y7zp#ݿYtd6RpAAr"w64## ~(̀w %9>~ =2@$H[OYmgla.ۈP<dA:Ss* Ơ goE?A3Y`(dZ9Lטn55c$L2kċ ] " jHW«^jA|C CӀ&4=PM#DQiHi4,Kd'dҸP!#/` 5ɢa C2"s!yU !4 nH?7(3wȊ=Cg"T G!bGg=73Ta5hl3$_" f"f9Ic2,3]U`F,"pE i,C:12#*AQ3eE2M'#2dX^# ?nȐZ{U9B8d8OGF ?FB.,u[C7@r10u/ -Z<2WߊCsŐHt)ɑh)1Bq^RI@.aIa_7pބ! J" DD)Y`1ГqR0Z{QRH%K<`h%F -[o!(!_ă (_D&j>$}JD)ʧMl/k' >o^0>L% 2ݩ$=Tꢔ*Q]H$/ͣ.0H .悈r!lrq!柸.J %TݢeXzwŵ\ K S{k٢@J\ CsX[&vZ\ G+FA = d -sW"fYMhY$JtQdAPX Dp,Yr}hIL,}8,"C넅`!'Kd ~x[BW'!@.!%M_b0Y&BV]c"VxB#3Ї2ѿA+§ĥ;XQ V &y Vag6P*Z& -tɦ6(+JyEh^`"1/)XE,`Y]X9 ja` #ce -ʉ,B$pe` oBPY)$!B &J",SqDMòۄai6B,fXV*iHJƜCl(mغSФX:^ŝ0Pޯ ab2,<@Spr3 " b)%E/R,ȳm"@`@Dc@YF' n XZEச2?Y|[hјG4giA/U AԢ9}ZFׂ|  +`y$1܃q -zzjՃ $Ӄ }A*{hø(1ԁ\Dp(! ƃs1yx X҅~K]D[ށ"@vA<]EPxIvh$;.^R9hl^ w^4lbU:t_GЗ>r*/8K_4 0cfR`X~}ȡ FqP`2&~)&q aXLaSaR ])׋fnU0Af#q ,1 >1J3P1# (!.u1F\b! 0c #{ؠ̯AVV,ܛbl |}@fk -AVp"#>5TXP&$k"4li9 ekp\)F4RY3! R[ erO23A_j4#eY3Vڌ 6$cWdpog@<# =#1D0M,] qC(L966&ΰhP`FM? (2Kg`4aM_C#{ X2{!GzA2/8ƒztdL@j+"5 -UDkQפh yB\_| gRS!Ve3yp&w`٨ buzU^8fWp0o#+4Mp`qV`{uVr#Cdq{޼ -&U&)Y s7ƥ›ݨ,$P)f&}7v#l`%pcప(x$ gPO<9 O0fq4bw]t9?SV ðH pLlp#Ff6E9+ &?M3?  (GKYt xڵ N,!<+!g9>rF IB= !h.G’i$AŠ u9!a#jaޜs;Gth4BFЕHݍAt[,6-FꌇAku$Ju#[g:%:'m_G;v旀Hn4;Ea3Z`mgt; VDew|`wJvC66U}pQ5b`N%쿭Ǩ})EPkm#>ĵ>d[$2!ĭFQ!z:ߢ\hX` r_g{8Tnˆo{-Qh+ܶoPӮYP&d='4{ktMHJ3bs探dܦPP=8ua>z?;<HփP`'48ܽ=k"P}xwT` Fϲ?R$Fhֻ@YoIzQPSl|Q))#E Vl\ä_WE̓y7JYRB#ģ? \*bwq_%#Jri;P$|Yv҆'Wd |9S|!9` -f@L|q^ۛS)|A>3Cw|2_&l3#n0!\p jRAMm^^$ B~P4cwxqkXm6G|iV5Y }[W}i=kZ"ԨyT_4hnO"gf hVf[sb&QK[ -slO$I)g L}@Y}[E$it2Y^è:kPi0jGJ+1;gH cvZ-+.^$F u`; wad$S*_ӏ|bH.nΡT\@ysANdz;\ [@r=J-DmO IҋӂrE, "C/(IH ~y3*m\̀\z ͢[(rXc J-WFʯ9hDk"Wm:CsY8#)M8qgOTai -NA# }S@YłBl\|F A7yTb$* CiPA+.0(PWĢL=O`N)`?*^chA5 MPd7 Mٛ6bR"' mWəp%?1wL_~ *]W[ fW!^'W䎡.VB<|&KfRTI$ɩ*B$͌ݛG@p*a\L ?ҋ(~-uT@*2ЁD0ss;i/7CzGqҖ(@ƌiHe@yBž ?:(p.SlPZ@ 9Q{ -%9*MEXFI6 >"7*)1z%0; rlvN^8ā;PMށF>24p#kԺ -UP1INC<AROjVݏ"< -n `]9Ɲ]ܻ6SS D*tԋ5t;p# t#f»n3XeF,B3(R+,[ݢ%0[4|1E>I27"tp $s/:)@;߳BrPY@T]a"ҴiFj;`oIT:Ĭ][ؽWnWR_yPgS%^*˚UPNVNx*QӤ>w JWf$f@0+GL'`\&p5L=-+>t%[fQJ%AxH/PmI@SNĉVf ?^A =uUH6K5`0 5u#`e'ڸ']!k;z (CN -@|8VuD &M|?_Fm{80#)1&=`MlqװRY~G t3ёRi{q@Ȭ(P4) /A/bnLiBÊAQ0g!>y]*h0YX>^@(~ٷp1,;c, U_ -p' -8`M;"@i}޼ DeL(n+JJ[CyQ&l(2H r{_?aLd;їnhi33OGc?&GAj%Q -qNY)DB[ةIxSls&‹ }ɣYya^i d4@wr@Q`_$wsEq0+R\>`2=pFS,0kV<pC]IN\RE PߍI _%t-t1X@Q<ldd{fuf+ 3yޝwxho,mH2vc \OSն˜KVz[\*tҨiBGȒ ->*1w C0.|:w9{7!ʬE}~̇7]8]/ro m)|NzKrLWl=bA6sp509eYm"Ӝ?or7(թn>H nu -@n>%K'BoFfg )5/SW6 3X` ZDI|7ބPF !Q󿬢AlH渂h]j>IϢ$W]hWi>6hMvWRx4a1j&tS$oo -G/%IvԆˏL^3ƵE3Yj?*vw}ME>UC V+(/_*Wǵ7dܑd;[MO/gNͩ+~, !Y6ۜ[H.o)GFT<|In9|20#elа5/H -ߗwh2[)Tpw5Xu%.ZQ͞#BOC,21c<cϨTw<<5l]- zF6WL Kfrke, XwZ>+8+as -H(F14ut33JW?GF< V?z*zBAPtP Je,y~3Bs^`?BxpYy"tSѿ۪#ԯ" ~ T^eCdU?^*ftL(!Pk݅QzZZˠ=pFy9 #=`4 y|$b5iKԬ(¢'5cOں -7202/h/ #y z?>rUs s-fg/Iᑾ3 -{(x$|ϔP)e=mOjd^I -[O̘LBt'Rɜv"$G򥑘WM4@iw3yCMb/v+[cn }XK1C5GK4vE1~V[fŽ}.-]YC|,Kz1-H<1Zyc.&SF ۓ\ی:Hy%zQOވR.|XN{@Sl$˯:҆)whn2D0J'%Z`4ܑY J}8ݮOC; EC]ACeԋoܻO4^m}ŷmZI+ ]1؛kl(dsgg\JS| -8ۃ^2AoSxC/_ܩ#k{zã\钮ڤvх7%j $]:RP!EzS/v9{FSpUY9a &9`y >LF X9_ȩn+P_H?2gm|!B<f- |PeԿ2/"LɵOW/n!|}@֌ -"n -ƅ,.IvNQfsAH  P]u_}e" :ӻ:8˿*g:Sݤ/~ O -fpgtB(ǻH֑oXbst0C 2M׽{)[ vM]w^r۩lНs)FF38&@]cU8cScs(2nqUcz3WJw/Hչ]:"R9Ү`|1Eߥo5L ډ[/;z`z)(<DZW=}v20'?[gEdzc/vdZoW3efoiz9-N ĵ>+X²魺Ɏ8jo)dOPAĖ8`OػW$@űCabxxZV8SX2h5WuP`".G{DR6Rݝͯ?UܒH*8f#/:B(iB[qiu}UaGpUwiYiQw[@X},^غ#G[~UᵒVFu~2Q=uVzKe&eȱ>IZu}WwY?թ_4!j7V_z"V 6؉UG^@yHu82rBhP_Los.#!J HOR g\|( zz>}*;}{ U;pN/^B7;jM_Ptf>U0sH[QȥDi3WQ7R)$U"$8_.TX^GHTjepI2s0TѵVف :oo ,'H*EUbaI<̬l :Kw8w }}N{6L [ -w68%R%!o>rͫUn5lKu52PLofw gp99UbvO݄0c=$|nXЭWc͞wVTO8K!ӁaL FƝt3[7Lt)жqΝg|r]A9G~0 1Δ. CGp^1lCsdD(<(p&&R,l>=X qc{ wMUҼz`\ؑ*9J63g9ssC`(wP"H1︗B|l[6cDa^$N$U8w5'~$b.z~ʔŪr}$ө7Z1&+\3T*x]d옗x 屖WmsiP|Ej?PO$_r\#[CpQ u -K%@cgD!SH:w089{YT$9c/pUr9*QڠTJ ˬC` y:H* pFG~QbJ0N wXG1%pgQorfE7K.rs3Ƭ}sy(yGUȱ>98})K@NbI?>?kq~c_ ѻ>ˏvbUU}UPH/YTi~\lޓq-ЙvഖWg);?A}xJ;H9ỷr<-E@0 ->ьŪ$ W^P0`tw1\V_ ș(P@ȝr.@sY&S$E {XUypQ'$T[Vp;}^kH Q#I\YA"9HO W~?HPV&4!\ O[UWzB>ij愼, w&::i,%aNȍQAs s -r"KE r-]{V@Nrq?d֨݇9woՊ ggk 9R7A~ءgHC[newN,'! - w)+\>>ۂ\_S+F -a 3/6/3flSY\T)Nȷ) oW>! hC^x(aVIȑlIBbϸ W2̅ʆxP)4Mp) -/sP&h}eB$ GO׫~ գͱ`x|g럳qg~w۞ySQ"6ۡOGtQR2~ [甠p يNV -8w ճuX&i X^q{Mn&*^(hܑPFA>$N`DW/t쁝:\Z{Qh>Oc#)83flZ5#"Y/fֽG N=ᮘA>é^|&taWT6[ 7̖N' -jGcp-Vķ,? wF+U.1ZN5^TQ{˷P'-E0'vX—/" W/ ʓҡ^jzU:w{  td r@\)$BX -YrIL? .߃6@pt7.hVI>Ө!! ('p'sR=YECg(_ެ%0[! -n3NuT-dNtv f E:~c,[<~fr6 cHqZ -qd/S7XjBFսyC"ʾ0J/N孆y=|3рo -?fմn۪;jf~(FO Cӭhd@tI(YfCC O ?sF6g227Dr[ሐN@-8ܴXe~ΐ}OS}A" Lp(lf,,t-Y= MMU2V&.-00T_lLp[,.vc1}5}ⷉ U!⽽#։`ަ -0Ian߯0Pƥn#Ŗ۷ldup-Gb\Ai붫JFE``bW6j;6M+K0rkyAaelALEiqV艩׏N]ZHZ 7W2*[==i]2: H8:Ε+pC?RNӞII$ -RRm5)vh^3ڡ:gYI/oNSy *n`!EVp-bٗG( H߿7hS;uqzB6ٴw5]U2sMGO`f._2d:D=ܴT%.=Lkڸŭ٥Ҿ4:K;]:QlçEq\XV[,2u̪y^FɥڷJ;y[Yܘ ~Ř/)SCKJ1&7yRO..(zʪlXpTKrzěl"])k-BTlK3Rh-c.r h$AxֈIE*l]s-Ek>bL¨J3iL$XK[K9m#j7MփKԖ(>stream -6n/ ㎧ 6lckLp!*梷>{LoWBw^Ex.\+ʽt-C C;WZ#׵z?X=kU]YMlo]P:Q|t_6T~db8 &AkJ^EU{Cr*4 wf^LB>hl2W6=+;Yƻ ppZ>| V) "_N7/KiGRG*>Y_JfmtE:uyc{mL|áQa2:զn4"BzxXb/Qh'$so;FC\`o﬍@BEk~: EЉvZ67f(*Y+.%mL/jɑpfSӶ2V -3-ŀI|#'$ok,%qqRmwWmGdqrNt UtJ]tBt74v9NTr ݠrQg2z9$3 LR"1/e$je[40BjqY7siBY#WG'ЄQ̱OJ[9^6)SBgccm/}QFo7lcl,x`#=kC?k5~I 5(@PBpi#Ʋqm[Zcۨ7" hLp-'qiǶL:4Ⱦ1X,.{& -v_Zl;[˙sy1/I {.QdH6 -E>vآ* [/ܘqu" ,x@5),B(1 a\ȉc< oEg1jYwy'"1)Sd̸PE bd4f,SyIY2a 2^VECWL c=- 0ٝMu"Hs;1  c 1ďpR ㌢Xt8"=Imw~RrӞ(X]U8v{Xߟc k&uQNN0 h$"'av̲Z00vR"smL0,ư QFܠl_ e!߃z.Ν;v5r\qo]h.F sqWpb Pйiٞ/.6.o -|@ < I0EKƪ=}9_FQ _߹bc4m v}t#qGd F(/e]qR;-0U._ <{;_ agކb )dMIB;/ U5:QLDsWK&^"C;"u@M(̌nh,NWo\5Gq|m{yDy6:^皛c\q)I]`KK~`X0@HO݋9-$:Aڠ!%TSLrtyX;hDKn!#3l7NJ@$fRgA)#UNlhL>ZSi&߲kty"e]z[܏I>@j9HR\bmC}B o0`~yM -3#ęūYS]J)XF1zZ}u6{"vg"bz3D Յ2o4#u9H99f4^ƞ^`x,簏-ψMQ..2>g] my>v۠}cf& * @`鐊?XƟ0F\e2RQ|/8YܯE"eʚgXSgap?x9 hIӁɭ|jt -Z)bjDTAaOPS)xJJ~Nf& fttF@A)/t]l9\{Iys0@R -:pÂkFSXаҪdUY0h``3/hsAWgO8 O0L#ۺvB #O )䁎W,y$j,Tyv 儖0+t9zkJJ,[OhcnB, -$t[xa8epEv%&vY - -34_MTDg{p0М=Aɤz$ LArZpA,T rЯi9K݉@b__)}in^DCGuKь-:0N{TU;oTM -cd5i/IM#J)j!{LCK+{˦1ޏO(!:z&3F:\P@~9:&:w#/B_tny$H92(ƪꅡ̰:u9VKŚ'Gu\U^0t$O"1 r .ڏv-.-7^nW_&srV$@|vas_w kWl:.Jc{&=%Uq#y PXv/F -Û~HAakL:d`)-賑 4 1FK>i0cܸf_ڠì|ڦVhg_['Pڶ'i8m`IS;nCCLnj0B1eAZpn]vYm>dD s9/(y`Ka/Ub Ȧ]┉/Pv;DKQ&v; 袳Y6(uv;|_ Izkn, }]нA΃ย#mm(Qz4UqWټ 7#D1aF^Wyyu4=mptaRԷ^w}[5 xHB}M@"|GG[OmPr,7ކAVT9#Nxдuj(vx{=vW}0dvŸw3voHaW6Zиu|@,(ޮ5fA}dMٍ>!AI ojˆrh6X4ь\6؜t{4REN]P#>GE ns,vFO+}vv+$sZ@EZWS]&$o֠>i{5vE}.-0(΀գz]pk;o,Srib1t7sڶrpO&5]dHv~XMKxQ9z IXKA%w"\|\:n*B:YB+E}N-T;zu\ > -_:ӡ~׫;|{SKv&3E -I5E^8p߷9N 5l<B^H8FG{W7i^6\&^B8_'CA%M6P0zS|abf-@`v9ĠʐGy~$c9 g姛ɖ(&\3P_~}Ҡ-1A1s%]c2zG⺎@ހgeeue`U2Iy|)jDշ$EIR>g -3D$V> >w;QC<ދ+-t]BS|G9̽ 53 _;Yn3xHօH)?~jbm<ў=ҬkWBoL'//i9fh}<|804Xn{nˁ8.dyl4mOr70_bGxW#&T2vqVr:'З M@) ٙa$1jV^أ )[/ץ$,4.O #NbAvr~Ko(>`.+%{ fqcDˊYm/?~ XBE7}ޛ8{:yh?zс0i>-@2|5%iɭʌmh#J匚=l$_5%B\b(^ |!O)~g]K4 Np]fXMP"(k\B(-*6LǟFC(71f1.Wܑy߻GfT@& u`j6N^'1%|Z`GEhU:ۗ8o;kJ_%GoiDhU_+Ѷ'L5թYJ]p>_:ˌV_o$osYƐd?դrۏduJ9 D_@?r]")Z/ u2cI0%`?=bg4) 5b .Vҭ+?SZ.}8xcX-\)X @j78.te@r2܇@ Q5w:*2_ALn| 0Fg 4j%ze9w5G8fO&Ȱ_vIjUm*J K< &hSHa t |ٻŔ$9šj!9NSĭ?'!c'Eo+%Ѣ!sNxH]@*xAb+ZN-rKJ-cTaZ6EGʌp0HeFz^rlVygQ7]B5%ťIxlRxJ1ZV]T=+%6Uѣjρ,6uD yč @{'Hcxc@ڇ:X1+ޤџx[mǤa54)mǠp'~Zx :;f 2Mš<B] <̼iwX]ݣ'd} 6F<턾g -Dc ۭ攩Ѱwa>L秔Ҵt(L h8|߻Aմ\W5f -@A{0W$dY2ZLfaE?' 1h(gw 0.h;%V%'_DUWd{XjAsw.\Fc^؊q! yk{Ƶ晚5^ X!΄B'LdץyW=5eB9%>\KDrӾ- b9JL5(c!HS+D:+6Y]W$SբKHG)E0RTݦX.!һN%cKs/V' -QF#*CN妤tId9;UdT:4;v93 xhd> 3'ԝȊֵ \ĿtfiÝe qsR* s'8F&yTE)/ͪʍ8HUy2rS Бm4r$- eVLTg43WU St.0%āӪTN LFju֢ʪ{K}'PgB"#c9%//M7:9IQ*̫vKt'_3ڔ @iLQ ;AMJ:/g\5*g6g5\̝f}?{$$RvTQhd6yr%Q-:H#;rEleJȭ"+HI+k?R?B&5GdcFnN.P1?0IqXY8^oa|/^lH -Η 1NA\b P5<=%L~5v1)j&wC)[,AԤI T4wVd{O'z8aN˞ BCRIt0 -y{x@g/m4`U[ߚާ;A434K9z| Zb(I7?۷~g kmEaP<^w< sAR -۟fY+E5xT˜K2(tFs CvX] l"X]"lfiG|ZJH[+K9G]m!hd<<0%xnH`߅́jZ GP7_bĆ%xQᯎfYBf_e[j[Gh O˘`-r/,oKVڔoTP}z /4E<8'c3?2ҠBc(a_oq"( L/$_I$[Ԫ%yiJ9xѻg>Ծ3eR_T{l1ـwݯ=Όoeh; 绽jYuuK@E:;inGLePyK{ )!ɩϺIy?` -F8S*&}a~Id)l/PYk餱l -T0I_gRq -)(>>ʃ7:={>ϤG[ BS$G`IK49|>M_܏sil/ܷ!븘XǾ>Hf yw@.5yS< HOw ߹F%[8ot~|w|?1ЈB -N4M#N0mwn=H@G< 5qwM]C`cض{C0g  Ձ7H:)4!Jz30yGl a{p J?vcռ 87m~ CwG'\ tFS&K!}~D/BY7P1i8-9OeԊGTJ}Gor?(r;wDZ,;x8wi?0}i]%՞]Ex1#+ȨwZM=|P=+gܚTө!؇y63;\iqa2#M|g񎇬|`MP ThR&$om1DW;&o G@k $,)m*5v &pQFb+R1`?|x ܧ4p緧/'$ęF %¼r0Qwy8_NT) EFd9tgV|nZf0> $'Kz{0)9߼/v!J@~Z=ć,n#h'u4l.Ʈݗ2mre};Q =QFޣ5`[o -P,z5r϶5`F0Y:vv [-V$yǾ?DDgC(]j82.~#aB?v?pZJ^<uID* H'3~p6ФNܯ3|o7]WF3nK/%0vivuiu`R. (Kc_M@WHď:_*[()Z3m*AmP;T%(|lK&ЭS6o+7Z[(2nM89PɞJ䝵ފڭ䔶ĔqY#H]LyP$ >f0Y<:@BD_>DAC+}HߏP?6r_9ysw&;gص=X ] WŶa_h?M=_u l"{G1(-zd|#>}~ԻydD;H<Wȕugh!L@Z*>`g3nL ۭsX6 }TzI[CSJ a!A -ɻIU9:&< Q -Uƿσ@A~ɗ|:F."aGQcChw caGmEa[{N dWIT m-'\.tvYQ! " p$s#SCq~:xƯAyۥg6uǰiu}2f$yotގl!D3~ou_M3f.qd.]=t9H@o;z?~8#޿68#{2-fcݼ\lX:6ƯmA}&-m _Zg& ->v(m!A{hsfZ VA߄z"qF?)ơ>0(?} D:ϳsugLw>Pd>t){>NyB;H}ûo#8b;$ &&?~%pT: -H0&؇;xxᯊqi#,}5Vf$P0ބZ- yO^ރۀ>`+e!οtJJd/7@1H@ ʿݻ yvLt -V(CwN" -R8W82/$mF/4nûmoRE \|.7MS2NT),;dGÅ \w:vOd'ˁ"p}Ã.ʿ_9mʿdهeG`H0q;xA>|WÁrDhS0[/tfZNؕ6oX5]÷?|?HSP#/&c*"AO3v@|G@BV2 ĹOmCgnE>{rmú il6ߺ[fƺ3-gߚ;_:3-fksejI?/q -<҆/ufq}11|l-TH^Pi0o"n:MJ*'p}@>*z>'q!J¿D:S,,*Ao] -~ ȿø*2ú[!~&_-̝Xj"Nt)}~QA}8Фa@8Ns79|0ukv͟I˓@8ԇD\g@w2Mđ68g8o2=ĕB2qA!j5$?|L=v,}0nF`y ȿz'E}>Mrݟs5p8nI#iU]9|~+klx"spaCǻa=y_G57otio -|fbӸE<}PQ -~Ai!#jY5_?3mp?&oƺc7u˹4bۧr|ضۢZ걖Y%ۭ!7r5,Cfܝun9;>5Pvv[̺co_K]:}˹صz1\л(`y1BHT[/qeW.a>|AԻ@y5sy#ms?I4y`mX{ShW8KFB+ϲyH5J`gQߌ!ßVqğ -Ɠ>N"m|&_.U/ M<{8a!0vjw V ><)aúO3s -w1vl7 _MH[Z2.#Mœ]~N@<ύዻu -EhS0rrLB|i4}?}bx Jbo$!Ρ޿67u]p]07 ] =l kmc׺1k]5:min вơm lÞyXZ Vq9ÆW7h`diY%fyfKVKYSKSmv)K]ʱ~ us涧vA N{)N-l@*U5uDuuZam-eĖjp,֔JJeu%ͺfeZX٪*-UV;UfUVZ+))*-,,,++UVK{uZʢZiTXVUVZ)+-T\*[5UUʢҪҒ¢ªRa]QMQee -WTUZ+TvJke%geU%UUʢʲ’fin,,,*,,*+,VUVVJ5ҪʪҺʒVEUiY6KVeQiYiZY)***)*,+)**mUjJKEEEu%eUeUʚJYiڪ(UT*kJ[JaQeTZTJKKJ5%EeE%EUEu%UEŢҢbIQQYiR٬jJjJENQi-LiiYaeaIieZWZTVRZZ٬Vv*ºNUeYeaQMIieYYXY -+jXڬv*jJfZVkJ+K*^]]elU*VeUYU֕TUV[jY*+NIeZmUՔ֕Vk*5ʒjSlBVNil֔6K*;jYXWRYZVVYlUV KJK{u^QieiSZ٬TUUւUWV{uuU5j]UEieieiYYWUQTYZYZXRXYYXXX),-)mV6JeE%f]Qe,,)UUUVUւT*+KUejRT,+l֔6͢b]QeIeYWSYY-U֔TJ*EucQ]eeXZ-Vv -+Ţ²ʒҒ^aiYa]YaMaU]a]}eTX,-*,,),,U*bi,)V KKJe,XUeVSV))+,-J+jJJ+Je]Q]QIeWZXRY6e]W@a*]K;J|9u| I -`+[Dϵ&Aq+u_̗.i&DyYĥ8B -A$rjj $2F%!9nls^RV@VA JחpxP(b^'v'$HЭ t)4sԗ^zvtӉQ?y5. XA|C*thFAKݧu~ԃRz1Зea/s2bҏJ?%/& 1ap!]9 hb}t,aysu'&mA-R9Um>At1yIQX3F%&D_h #@ W ! //M pnrC+g`t| /S"+GWe)kD:9J&9YFB˺)hR@̫<# 2VK$bNP<ٲ]) -~*̊N /a¨rI +f+Z -^A`gd?*yK*_rMs(;ML!dcB9-FR>`V.VTS@o¦I/K"%,@L- "c/ɍI$7R'~@ܚ(`Rc!#=B-Pơ8 ړP zG3:L5upz. Ѥd- SR6q$2d˜1c+  _ψ\ 8Չw\b yA"'GK2, [YX -!Q98Da#HȟcOPGܒ=䢪K@F69F>A3]3QLIDܒ2U,uT) $nTT^W1$BI %0icGC#ErdyOn{JpjMV]U܂ծߒGI<|ݽѤϮ?~MR̗["mtrYD4S4S,FjL1Ǥ~InPq98D&?R:IHi,`ڢ*yfQPU_H8F)qLrȕ<7??y1sPw0RH2JWNTԓ@'\O܇KxH*V_+`®\ `gPV_EU`M z[n3"X+dI8[!1ŭ)*}pH!~E|PA 8DG$I?#5, I<id!祒@RW=M0[8IčF; ;ȉ-z,3cLIAlɎT+)a18s!@V">p@ECʅ։yvxK˨Ā?_KnI^|DpuIdqI^fX -Tܖ*in"T 1H"8ȧ7J"!I*5$N&_bHcINhS3 {|n>9\mW-$F\=xAfxk)AKSW72PKLM腊h"9 -8Ǯu'5P!w|l@!^s4Po1M2,7lbJL_zwaa'<Rgzhs m\tTؒ5e2Urid^gkg&p1YR&z1qYQiADMV:ODiDē7KRzD| A5&2;J -{Ea3ߍI |H .D}Ky1{&+l!$І%!AûDZ~XhL z*V"{t=T!emrb,^Ѐ'[Ak1>OԎJV)_r)C$M>XŖ+#TE8N'-Yq !EQAq)^{|DCr4k+cI8.ŅMg9QQߖ~(S#tjW-{- NJI -~cJ'lVЙ!m"|rYJw- NN1~QJn'GY`h -U*k\\VJ SL UPk%~""0@58zu}Rl^ݐE;P*bR@Ĝa\+"m FP•]s؄n#(`պJ`ka -iIrbxL H$GUP2,)7Zk$9d5NB*(<ٔH^?6ȸ`8/zhc.rg[ MB2$1\!)(|n@ zJbPV5*o -*6WV+D>EގeBZq=&\]6j5-f0r +!(%j|UEMH~%o2 ASRgU^+,0F Aa1s`y“Y<500%JJc(rj tV/XTdojw19 I;љyK hSL#FYZ9j%+nu==f $0,%f; nR:pSr}ƀExkMbx#._⾛ǮÜ|/,9% plW10m-J:&9+# |0%)COA-{E)0 /\CU3ׂ{G0"#X'!6r^PD;6 SNm -{N ȌΕ"’J_8@u: A)0+.Nx P@LR+}yJ_qP =E J?cx{ 9 -MH!@AiC`R SҦ06j3Fܕ7@b'-m ixh/Ꮒh[`@( 6f-"BPZÔlI9Oݠ7$k,4RZAG)ў䴫Jjމ5#}|xNY6: -KfIWȬvpU1(mA:%"'4]ج%xxT5Plb;"RX62m&?Dܩáκ*ݔ'B w GT:CwT -Fu7"P`hS0!@ =f6 MIxE -8"W=YH3YS՘FΎ[c¹9Ov#u_Ⱥ1|k#]vch÷f w䙀u7pzxue*O "{ۼ vCyV) )4vx#m9?H T8zN2代TDZ;>BD*5Ǭ I%b^:%geΘ#8a9XIN"m J΍2 |Xh>{f0QV12+tEaɴIb*坅cvxX8t4_B9KR:KLŤ?*-b^@#6Х ^ǧ8S*"/}T -AOq ']Z5Ozigx`đ.9c_DٗuefWLz$Q'2yrdX$ \LPÿ4΁* wFۄ<ѥ`w -ߔ:y?Sh4* SCc3JE=dudn=~3_:zFy,[̺cN/A t]ʺ0zj\ L -eU?~46l~=wS;fosHtKx}"'?VPκT qAEãgpSTL1[uDfR5}.%Vs)8lTM߈i}AH ~J]L{UYGTY_ꄤO$H[ǛAG4>:6qsX^b{,ݬt^ l5#DIC}h!@~^2&RR0IÍ> Q[Ofw$_‘s1Ckj!<?z y=Pzt`ĝR?ѥ!9Ի.o ˿4/Hp:(ބ~"Q;4o_FΎsuu^9άn9۞wׅ-,!j|HG<"NB~TȚ zJmڐ9݌ftQQRpMV::OBi@c^ojԶҡ9#Q[AE[H' E%4"ў*`Ҏ`r*Bzo ldWQ1ޣAM>F]<,>.z%1C:< -X z,?}N$dTJ>D|vt8Wj`Ee4 ouwΡ6๛RpH3+Ve5զΪ:wA`EN >H[+7m ϡ;Ațr{l$ P8N9&ٛY'u8TD<Ҿ9SB4F`OqvU5$Bh09zN,Fxc -þ"a_Ѹ x(>|6ڌuZ챗:4.]x7LB){5Y5Y02OO$kaҺA5ʚBݔ:}puBF; cN` =u~s~ -aB ?QYC":O "ZS1Z[h-t|N 4n߆PnFgB/yMR! q'R|?$!(!P$49Ư+CF|*MA *DwI9T0,R*V^aY'<8vF:jS RJkcd-|Bk狜#\Q}{f7Dm ?cѰF׊X?}#N9T:Ɓ$3֥;?}_Sm9BGFc>vwyp*^*$92ulxSg~! PHK&] -|)R3;64@}7"5*ٿa},ÆVʀu÷68{G2m#Tem|?:H3l&JAy'Ζ{ms5wwۧ{1̣E6<~D>-,tQC\ -Xҡy?h嬛P$.neuޚcuudIqл3ÅL070j3yPyA6)}Ns:# -9?}X"9crZ9AŹIRs AJh"D[ѹ IMQy;*&C|s<9H"R1D1~kedT.*!JA;38=6F|r?gԭ̡.oft^=k~Dl;뮯5'945̮[캇m hp++!S-(mwRh+}Q'=֍5utfc<&i ]3BgF<D0A7evWBrp4`8igj:owfm)|[lnaba6zC68))^ǐώ[_=8{ƯBx ܯqzBTZP3(-(5)sօq9tM GboFA?J;5{ Uyy2̾!su9`̈,:aR0z :v.ynKZ + m~ CFmAF7;f/~K{jd#I?u8=z _ȴ, s?9=}~铌+ 8$ه7OyÕ<8U<7J?~&\w| ݧs2{m6q5]I2k #fLG@D_[ u\D@D`G (LI3 Xq QR\vv\R-$.,iM w|>BkjEQwi _\jyBm;zF0n9v]d*'8)vF4g((=#n[ns+m6X9|fn~+b0;g>P"q,6D F, -*I"ᰖrQIOhⰜ8 {1- X uQ/&i tv@ǵ%a4:TSF@8D^uow cfalG\͏aGh!iñi޹s8 z)Ajms$旾3n΋ )}8:B:UTAcJ6BpӚcUDV;>PiIwHk餹P3$:s:Q QKPH5G":qXV\=MMn^2R+魥U疲Em:/ヘa{*.thb]KCà`]6 -.t … jAoЄ D)U ,C'wL)N:XF8Z -YP-,]%kAuۨYN+vN|q:nZʊ•(]ݰ*l5V.הU:  ʇhG_)8;XH nH,^XXk.+ :Iu\'kJ<;ga25zG2.2w$虰یmz Ɛ GьH(‚Vcb62^I1wǘZ5gjdEʩH,傒ua *2ހ NQizY?2ڕcRyUACB8(ҨoPB3ɰfnǺЏvtSsG=Ym8ꖴ-VXe.<bEmfX[ - ndPKv5Vڀ[pkQVib؅-r GLk!AW/HhgZ;8by:($j<\, Ϻi Mm=5 i̛{WWwhI\(y1}jX 7m/ HAWYЛt6na`\ @!WQs!{;"߀*]Zn6rs|+.h ^I19qUAR -RfbWNt)\0E$K*7{s H@>}QhvH_ؤ-[JPAtiW'vQ.$^=mH:p=e[6fm`, H4O)O@FOۿWǻo!]S5 +!c(1c\H6vElVnSDGF*-Ԩv@%$&)~匍Űq̀Cm6ؕA9{тȿIbfr]s8s-d7 wp1-e0,0/  =A@G@3붤}a0@ܫenƀnI C2LiĢPvv)ƞܖ2{# [QT;{tr07Pշlah.L k=xf( ] P/V2/1Gܟ*!yͽT`XH@G9PaVX7I oD]SQQWH;U>bUL8+)h-N|2aDap>A:(QiL4lsl*$9vo>|se$T2Iص+R !aՄFGS("YVYiaYN w:6 -:X X:/DЭP(dn+B^\;{[bz؄ 0h_MH"9TElPFeVvVv6p pcK+* -ZHn1 @6Ȏ/IWRn&uו,Hg(3\u%:.}SHg 5O8t6-Hm<%lBw_j@7|g,caUJ -z ].tgc.uh`1`:K."121 0򎯯2.,rW28(`UE/tP.!BL;4, U-,/,IH@5, -Hghn2[dsAݺ%D}CTؕ euI _# |yk=߽44oUU -$NY=vAh^,vX0f^VEfēCKQз!b\a^YۿrI/s`)[Jfgq1WzrF [1H -^;[0 +bPijF±@V;jH`R@WݱusP_فB8w ` -CE./wd\Q2ep 6*4`\ HT.]vnzTg I3>} I Huec)8;Pxy sM썈<VITl3y*z'w*nՊM''7{ckYXcͼ]Yw9tm\} 8sчa=wlCs\TXì5C"ucb B`e 1D|"r 42DI`*ByfͶ :mԽ`BPpהP0m0'۩[ H 2; -¤ܹuaи1h!S@IF##Шۊ)A?N=ݧ].vw Ap&9jJYӀjz ndDՋt - tI(WDXVbSR6&Op@4ȸK: -|ZtTae-ŔMLJℭr i(a{UjYn](A9_@|Ib߮ p RHk6) "cjB/+t M EvdƷ9w -zQݨ B7jrЋ ,Ja滗m:ׂ^PDp(+e)_wKZme2 &.Ȅt -zip^~z8 QT-w5Z>J~*eēD ofkDLUcTjx0mːbV۠I\k9нBgKښ̘AY1R\7SLYŌqЂO -%2)ZYW u#]7w_=~c6tYF|Enx)~ijF ;=8ܻc^.wd\MyFtǬm'/h X!R +! i@5eІ"ц");L/*A."!>  Ex@(.Ex@ə"ƃX<CG>q{أ~x8h8 ñp,wC@9Q4 GX4؆6 l\ְF5ܠ`8 Ƃq22 d0cX0E.pq [qg|u_!X6zi!P6tUSS+)$!F2rT$NJ:Ё \q1а9q|tsX4ErfVF0c 1Ґ<h0ʤH^x]k*4:3E =pA KKIJIDɎbQ Ejmm&"r +b~bC4bgEr!P$ӂEJ3")"`ΩδC sݮ-\eԭEo'*oz(oY7x_wZv^XiS,Ilv.ߚsg,M ɦWt巬gyj8z mI1qQ7mtk=L,M|l.W.,u5u5VjoFֹfξtK_6MoygU!Mq3 yKnfb(JT:[tx`ؽ&}Qa*^'POSl^ۏ^^5릝zAtu.ӹ-sCv)ݬp6*f4KUjWp~/JQH}tR57>d8Y'zu2Kim6UsYnMdkqoRKGQf}6uUI콎xAr[Mb9xN䒉/$ڦIxIN3[cѠR2Ͷc=i}N!]GjfRqCөRrKҺ-fZLo6$WM8z<[|q./St;{wS<)tZNmqiKW2<)Ju9yZ76ࢍ.k=4GQ!­aml\D4=kMUCT,[,]vM{\<ZNqsy^̫§{iļu\vQ-Վu¡ۛ#-c( N\&1meab͹MtUụ:F^4ٟdwS?3ڋWZwjȪTѡ_$`TyOLwΐzGWEuyDm^GV>f4W_Yex iVzUݽp\}9!ɳ pVw7ܼ4_˯ee3Uzs]Ewwd[}wʪqf2\]{,pK?u_۩{.#T;TCWR%ڝ9Yg6e3ʢ}~7۬YZ5_Y*WnKtkO;mnǮlOfK.4Rjy4˚Ғ:"-][Llsw mJ34BSqNڣheuzXfwYj,;JiYV':֒g=l(s-R.Z4g>S)dZU"U dR#qU"ڲVҢNe1ťC^Y7mR]EyGMrwQYw7o-MOtIlT^-՗һquqy|VCn龞-RjLN[z-Q:X?ܪ8鲝4ez1|?VɯsOR]|zRE && ,0a`@P"<4DL\P"0 P-kV&Zjݏ&U~vV-LƪnV2Xixi +_)D[9nVR {B!R-mՙTC$e̼'i1zxiKMnb 5Z!yuіu"-]}]nQmFFyxW%D[Rocx{HXV"Mwg.eUSiTK,M,u 1QJ=6 +]5o3+Ûͭm˶C3\ַexRxk6*[4Ƕ~W$E1J5gOSƴCt|V9#^+۽l*Zռ;aͭRϪzWVOoOJwMM3%;L9+*Y&fǂ軛tfHԈUvCN2Qj>VxUvӐ!^}/n\Ke*5.U=_ww`)"$>-nԉ֫9✫V9!ҺDUho9J.%flFl*g6-E6NJMudnA2M qjCD弉cx4GZ>DLYD֔u*ԽzsJ/G9V)<\Uo-4:.fJz O5t9j;+TY-)}L4uZ1+glĭ$}栺jjhśkK K|ٔaiSjr?j6Kmϊ]ٞC:2Sq -M/{Ti&-e[d>nԷijGMYCRߐQEmKHujhu[tuWGk~U/] +nФkL\Dec[ t+m^.55aΖe_TOsVuJWF-N7\^jN5o.ٙw<#j*"_igD{g:kEӼՎg٪+*^sj릵UvCۭ&-J;Nz:u w`9Zl5ƹtV<%J؎hv\ueA_ٕڇvѳ˳ᨩrrw0WZO2[VVޘY+t\l;d?I~cQpgNL+U֤9ihꎭɷ:<һ]]ϒLHg+Qo'R=ғˤ!+Je[!+eIk_姥mfd׽Y:LB`B0B *2CIW@Hf +c:m;LWt+{Gf_7G;f?=vC 씿jGIľz +6mޯ%9Dhdѳ*OA7摦35^؏ lNJBp<Ņܶ~/Wklpε.8$\ԙ^XynDϙKj"g f*mFE5h8 5u;PJ y'7YEWmބɬxiQn㍆1hIz!9t/h~#*:)L_gTRrgUtVϊ& zBFe5e:>`uZb^ܳ|˾Rm-}X ; E@8s+oT#;}fu&C +vj<dIpzU|7/VO)v +Af癇Lb)=? UB qB?QD` 1"M[P"l=Ha9R=}u5. Syj;k%úpRKbN&ox0ȴ`NēQ@V$#%8~6|ސ@'d )A5>B<΁Dc`B9m2n!hs1&~FS~Ug@a7d{Pfu0A9h⏋p?[ݧ09 քBd Үӥq +Lt^%jzYЂn:OT:t!* H#{0KWHk{h{]2=A#b^FOrYE#]ԐӤ;T+ ܳ|=AO>WzM᳛4]`{XO`AsI N +Ko.zGZT咎銍_p0E7aݧ +f.42ӕbhϑ шVB&OtCLIy=C8l3j\p!?qg:ކ&*2AlzZ<\O'LzqԺoQ(xdkg)]G?t@PЬ]DVAqԠrrOǖ))L3xJ uF 4'D&MvD}b"&*؆o#" +iuCאv8"LA-).xQkhf…o ]H@+Ju1Ϧ#.*b6Wlh,np tDӋEr7QoC#L"gP\k{0ܸU>)NAaq.*^Em]3&_oGS=0fUپ5j#=|WYc&(dgd= YRӍ mŀ!'kk_0Jcg3X2"襽qYy"eDc3oiVۚMJ\yDQ@( e G&`[ߓfGi7ui)oiv.Cink7Xo~]{oم:"4Zթ5T.*cj/v?DS!]M9_\ǺVa(LYaPK,YSKʬ35NC!޲SS,Bv.2+I VԜ]Ckb7&z=Ȍ)1+2yW*7\ Ӂ7jkZ0y9%8!M.=L1(1 dN^'Ar2Agէ~z)fXxB**ݭ#%r+3{6xa8/x@ 褛ݱaD wމkyfYPo.fу-uU27UɁ'Ԇd光"`m3gB)h*3mȔXefOx CXOn`+En|ͽ|6!* +T\ !IdlsAp a ^UIlnq%rֶWpSZ,vj7{\'U lF ]`ܓMDAWYK̬Z&OF" b"FS0}(O,occL4Ts=RN*QOE1g2& aFz;~ni<+#y w*MJ=0]%%276~?⢟,1IFUT& $]mwlbcz,sܦx\ÙFJ*ń0.4]_!9!quB7bबtjZK@7v։17m6/Ʋn 8qEV^S[ %=$CWZ 1>'"?~Aja-n j7&Ax7вx(y7% +!lt|=B֩S:;~]d$# a"QXB2|-**,krXy(|rmCBCTհU [DOk^7HfclQW(H_a.>ejGLJ?Na /HWV5pVi^.r)2\sȬEFp(/9Ϣ+h!a{H`Cñ1* }1d=]@P`7&dU Rq@,wiPQ?zس脒t&!7+֪ÃCY:!q4Ɓ:ܩǏ.s] 8mV3Y>zca r«K BQHu0qEjrLWOHo(YD=cߙą)H[$@ ˭s8fRq9/qJ@rgёz)JX-)MJ]:wĶyJ GohMܳ9P2(#x~!Iv=)pU)Y.M 2\'m"^OC}?Pjm-/ k9tЄ:b/8u0o3j:ԫAHB(|rae4Pи k,41\DZ +H1h_  +`ysQjuﭵƾ0ˆ#kH}O"G~ )(?X % n,|a:Ars;HT_тN8*:F!]BAZY')g|DN0]ڮ< 8[Z~90,ps')H{ٳ*vf52~Ɨ9m DOXz^4$]& JNoNZ= +>Ynl +/ufaGOk}xYoݴ-(A =h$nԒ߭jN]䌨l.iy2/U*j_fbbm@,fc"X` +ej.Yk!jC3sP +&9W;дpC0>DV^Fnuql~0AD֤/)R!'#zk\$gp%;J{2':+R$caR;ѭ- +E&oGIqpOhL!S.e9\o1@#h1hFnkVFcS1:GopRпD`cs 2[A9J<<[ru'}'Habev(E|J r!lKO aFdQMRtjĞHZ89=ܠWx;=0oEaR kQ(#u),GE +)mZEđJA6E$[)H{lSě#SQD]P.#޲l/$9֤22!8=vzi +MݷoR "  JBOD4U+KǍybaX~ZJNl+ҟqdfѶys<)Y8A=[y:@@pŹ ڄ6mn 6)\ʟg9y`$K Ih|yf{A&nn9 >mLv5 &]2p +$J-|!c(|wG''49J)3m2/G8'UE&VɼB: qO2 ++ږҾQ#1Ec ʧ߹L\z.d>Wu$gJ䀏RXTۇ:t2"CY+U4և'Eda&˜Ls=ª4hJR eT `3EiSH̀1,a_T|cP3y8m6;jP݈vsQdh,jElYu^PQdO1^_KѮQ::]%;/>> +4UJC;赝Fqkv,&D{Q95wh* y%Fs? 4 +EeK fol)I5o?LX?Mb6(s xLʱ2O'zF9 =]dA EoN)( U!9i;PT*8 )LyRLD iThЊn +G)@}ec7 Y{^Qozix<>o0j]d02CMLk<֪c,9Zq`g$Ȱ(V+"h2lΒ\Vn_--k$T434vi0x^! +!D} +~ࢫQGkɉ5w qL]?hW.K%2_ eע:s)"!ɺUlT-l,{Ey)ٛgʇ`}W= \tWvx}b^YMs,dJ9$Ec^1^z +0RNٟS"E(dTp@1L"eʕ@0`ʲ>.Sf!g2T>;t5$d4؁y8hèI0׆}ٝ)FT +ښ;%]`ٿ*FGqldVk^6+jFai= dy4f+kUu0r+r Wn^9̙6~MΙ!pK5 ,B脾7\gpt5MT^K: Z樢]W(BL٤RvÀJkKc ]I.M&tַm޷Hw:yX24oYS!yJĉiE42HW؊h}DK}CW2=5R-X+ͮi49A"ZFDc ΂DVڛAhz oyZܞ4(BŁ@;[{:t)TR99%9̭?PM\2;AG%ޚ?\J"{IQDD0#MUR +ՍDN h}ԹR;`/6F]ac#rћyT0hJ;`W鳭?YenQAaPDRu@E#⏔+ϋORpYr> +fok)A7˘xzɫ䀜A4C$ ѓmL^ap&a6S7Kgy)n `4 -mkJĶQ{YZi!Q#&n^{w߄Ur=ij[O,tbaB~ +\`T kXrHϠ@̊R~3KI.ߦ4"pP,* +O}{Suw=_#,d}M:G@O}Q5  JH4ՑJ|9O@OvEvΝ93)8@31VƹCXyQuS(@sASuKXq,5z)Y$h1F*=p8R ӬuNrUat|ڙUq\=HɑD&v Z9-_tEӷUy-8|1W.J4l8RXa4]T1ِuG^JɺEvMypVLB^qO:=ݢzW1{0CbR=1 ̦qY)@ps;mDL5 +mECI9-䭇h?sgm@bO.^(0T΄3.u-e͒Aĝ§7݊5`B}B-(2GHqA% VYf yk  |sQf"P5Gok3&F(YF23Kt#B0ERTBXd" 1$`=H $38?: Hlzj#at48884L}JPm4a5ZvDuejf5a26 mv\_4M.]8E+"Ƣ ZBRǨL!E1#~X>~G$r9Xn#D*!0mPNvh ir@6|s eBsh6)"9؄%IGE-=u?TOkK ?<\Eȉ4[ Cd}<7Q(M%~a'R)𩾰@pCwO:d}޹`Z w!cy=_VMjJRT03q5S_k<Ļb9|\jX6f5FHz*޵PUCF̱qV2Ux!WgL QV'U&e@Q؋V'TlVj< @&}YH?e֜G?ρ?9 PGAo9 LsmoK@2 RҮ 9b]j\>%]͟Yj0&?BF Ku0h]q!}ِ/ۡBQ)&#}] +ctyb٤wVH&譳KRl] =Z[wʫ`qHbRX)@ģ^uԣUt DZBa2\ưePG΋ˁB()5 ~VaP%HԊ5UHłӁGiފq1{)jd5u +QnSH dV +pCJ3dj[lKT 1^ }S;9h/ꌟ)sõ֏L6#jL!!CfHb21"[FWhtgae:\u2\ 4HL5R~ŋ* I6"3cHp@i^0Q(b7mZA%D1x:h2IUwX:3I[} +A21lzȬ6y#(ccUm6.!$9EI'd4tezō u2%{_ .%Fjy0i ~xk+P-t0&|Z̓l:dUy ?뒥8I]յfόJނg U#? Ї/(jq@=aj+Q%(ar+ +gY{6$V/GsNylg?})r” p$Oag+vD!0wd9dSYݞ] cc<_5%RVCgF%K`Z`qu~vJ:DH );[9,(|+Qz(kvm3ѹL5|T?TJ$m.mKĊw/?\ @c9uUHb3D"T=h wƞJLxmH2mCy/;$zAQG;fR]^&ABt| +3:H4:Ί?g>/-j;,}UA!=D㷺yb+ 2RZ3)1;z?-j +='[@[$"o3Qk*dGd716KzV.0lJ#%$> Q(VzdU\4*^VA'.0Ԫ>&U$ +TFBdȔ?UsxTcχ7~e*Ď;.5hZmJ:\U@**d'bZBu2J*mpme +~h +j y\XAEmX(Lw=B +J R ).9rLJ&"k|JP~(nșm2m(SJa`+ |K׼%p #nhJCP +]J'jLϜtJ)_Ct( t"¥9J@QѶmh_jW(cpX.b rap(flBxT(37cV 4b)'/{[lAor9pr1L50uvl!W´J?+ =pEum`"U`~uHxݐ~y.kl+*10}.تz@rh?㋰OO85žf6dʰ{7h93+) wG/."!r |0Z[ nam9V#2^m{c.ێ2ޣ~uyL +BO7ygߛBoe_c +NfۙpR;^8(3:~}V +:f@_慏7߲]O 3=0` +{jnk q+ !.4 YK=r̰ĝt9-!NK=0hf+9Q܉Gߒ50elHb?] \V% 9*lG~G*l +sp;X֟?Cl|B>+Q7}|Q8=Z ZrN;ʘTA@:+BMcp%k;@SGH!@8H&B?jS59JO5ܝTT|rqF1q4 f&IIUjIʪR3z∭42/"& 0Rs"i +Onj?ꯑzJx2Iw3ZE)79F_@/ Xt;>bGHy2$cƭDNy01h.(ĶIãkԿu'gp*@w"+7o`n+x?)c*_rfiCjyNbrf!0,L>Y +@Ŷ ɐK!y¡mN +XUGp+IĄi/(w 4E{ ͈p#o& Q @yM/JA^9ih\dhͶ)r.e`{vf]cԪy+RA,o4z/wl Wg깊}q.Vus;yV rKq\b5ަgZw\+9^j(1:AG`1cN~606di&I(@<7VPflTX܅{jQ$$% +(9:(^m^7:8m܀)=9Ņ2 2\^"F91]Gms +fMxgIݏ>w[_dl$'Kxk_q+r.R:٩7bc W%7+!}L;tWp ;F 42q΁m)`j{97_jYZ7 +h[#cwpB +ۘ j `71Cp0\P$vҿSJ&=2MV,v:nU.d=GܰM696 g~4+v\_/X Wt ߥ+ewʲZ5>QAW:vp޲/v4 ǚ[ϸK8(0R.DL]&s~ Cu`rQ睼yr_4 ^_ 'd@`$o~bOltv^z$,z_`=PLJ"3gSs^?g $ +:<5כs׸5JX#}9ADTSPƼG`LIh2`_2Lь[{fxu_Pgy'$s s{]3S1/3ֽx&' |NsA$.H2ꉟe.wH*t3 u{VCɋƆWiwۂ$ߋ^˯'z`qY)b2ayhpy.$oIܰ޹j|22K/5 :I|)%3MxDO}yA`.YVF#t/i4`8[WR-+c| +j|g潀/:.ld(3VXY8p, b)֝|3AjS5-KYmݙb( VS+Dke5iC"H"1-6J(uao7;!5?Q A䥼_IǁEʁ8煞܁v֎&.0Qյ 6+n)} ԗ+92fTdEIm2&hg$6EYn[9o+Zi_M{uFp@P1[v' =s%F 2vl}?yᕋ8"\UB&^$jy4Zp.Ƥ\P^ xˈ`l:| 4jFfB'r6'EZ|\kCTηUL^B BĶk~$[YC#;/ZSX=%mm7;I"2,;R`y/)I2'}ˈzJN9;0H|ߌ`K' tZhAX'^,I]9KcW|=H.7zH24s?B4:"`lzU`s0No7`nLG_b״j?[!l]v;`Բ3:W/w~< (p*àHU![`=mѿd($R]Hw!|۸ի?+WY WR`2-τVXSEkY^XEVd/"=۩Y:1'c-Y}܁d@@y FsBFՆ+A"z3uм^;83)̩0*,a586a3O_\#(N5[.Lײt@ʣXElj<0Fl&8RH`*NaE= b"?w^=gS bn%i7RC;p#|-Zy /R1 r%MUXQ(L.C'©ftC[>=w oxX*te!{{Uvm:>hT?|& ,spfZ !DJ wxGL7;v!R1#IbZ.|"Bt 9x>*AvW}y5OR(U/ˋQBzcٕ5ȖQuDǞ\*%l}/AfbUG7`c[f5~89k)}]?nO{;qa.+=)a i- +!+.k]WjB^ث:BsCXf <-4:3z@-9J,QW@f t̅1:{Ā *o-9B*;Ol}l7Zj{ڬ7BAƽg*,>lUg8Wѯ-I¸n-E,o>6Ri?M +ԐnCP Kk=fT*wLmaPrDFQl-_/J?*/nK#cn@lk3/‰ ]+gn) \ɸ%kFTͭH5hqv:& + .HѺp;Y9ڸ3MB{8CD|Z8/8QArtMZh ]A9`=7ۍo4 +L8pކz+ p@\{#>N-QGDښ:HGu ``")\qͤk ^37p +Mz}GJّ%4uR )% /Fg_4FT8[W<ʵ)*P"ȇ?C5WIM Wjܻe-b0&HueyA@g[̸vġG%8*'.hA@ d0:\2,i>mq)"'mjY7~Af=UPE%*lz;j305\2\5ڪ)F9AG7Aט''"Λ^KGCj8k?Ƙ=l۵w W5tZVܫt4fJZ1}Z#ZN͌NbW6dm2$??/r^9G:;ʮ<ίX<(A܁,`s{XM@$Prʹݫ^/Х3Wi`;c4s EL6~&j[wY?gw/QeWv]th߿f5o:k"=ԡ¸vre?sܶ/[t-FL˃hI221.du,?%~XfX+q0pJ-acU& 8rF%*U^ S-qp%|H>&!' +,h0`2_s[D Y2Y ΄.p8;u*Xw.&b-JNYU&}4yC0"(EID(J ɿ>hCѽ@w!ןD+[ЋmZS +g&:I@qpEHuZU90D^>&]u5[CVReѨJMAilF+ ZSt~.x X$QpCsYYr>%?w7U]mDqtXP%?:cxĞ$QϽFȺko+q*1VTF%t8ҙDyOݾJ~/SȖm1ceX D'$$+Y3 qsGP͒ոۇȴE ȃEvH رM0EARc˥iOjeJwL-=&ÀK s7XZt?t'=VO!%Ш~ z, 6D&lezpbzl*gbPr"о9'i?aE#-q _A uˇ]خbWg +N|WjO+Į]Ѥ5nZ;8MPl»\Bjf7]^ĀZpVrSɦ#=!2L4C5uS?+{fvO2̓4&(N1Mbd ^F2Y9&BHKL4`$v%߭$_%TS1J2Krwz$)4+ [ AH>B#Bڛk+ȇ8y# +OwTičf/keH| mZ-?H68TQZAm=]oz%84Lpxz<]kQPCQkjMXO\KIch4# A$BSp&'nZLgvSOײPĸx0i߳O0-GX>?3U#+E?{ER=Bss\jÝ81΅n +Ն {O_ +J+l  gB.㦱.~۸Uԣf~V,rhf}FQ󙐮1ydsJ/Q}yp!+HJIlSJC긌 Y ~MS8 !؛o_XC̘t؛#0UŲ:܈icF`| ,x`\,0TD~[Žo<]^9chy^ mt㫬"LWѝq %;vB$ts>iEVpx2#\u?}8? FMmQLϖ/ ST8r*ό(s+=OAvձع0w(̾Tͼ[piamU D 3pt2edXf^VȠ!v?wh򂆸N2bʐs%TIe zKH|ZAtSr"d Id.SO=0V ++Lf0:F.BԜJn+:RT;$I@ww87+ѣ ҕH4mC$-伛;@h:#KyWT\\a($xiހ-M,~<͘{J hDqH +>Dž? /c'W4뭊ґk뗙Uv7,R j7[MҭD9X+22OYUXOV>~dݲ-Z;]-ՈuZdK!27"V|NGmXܼ'[pIB=;Rd<*}z٧/YQ+,Fb:q{eqit kDD( +1heiRӁR +'*$$b !!KjXEP( + DFDɱB[!8^i@1#s1I Cƚ3{ +;Ua '.9c/6$/cjh1fvMxuBuyna"sDR)МjX)}u}OSrgNBحq(YSmU !V<ʠ-*CFKR )%1wfO`|ETψ. jק".bDF5lȤ8Mm#x׸sw%2U0%N}CXB>:C/ǂ$"`Z0lU)UKPLJ3ț_"ZDP]Zǡ>k|ՀȨh"PCЄ D*# WM&R!!ȁ:(B$Rqh:RVnN~Ec1M =dLw\ dNb ,Pk*/VT-{@HQD( k"%QMI]|%YeoMfD0_T "E','".u&0QH80Ufk +jSrm hp +QfZ^ݥY&fMCySǜzmnƫw]H{ %V_fi$uݾV yum:99!BAb#QKp I"iCK*NH8!YKHN%DC؉*JQ~ب$8H +22Ҳ czE;FPiq; +C:B\NA:fMAF r(?V)y-S}9rl$x/7ND%m~̬2BZ&i@dt* +ҝm`X䛎T*#TsL)"O=BҒrI”72Rh +R/f0j*2.ZقDyl&fT=xa"| Z|1D!զ$ 5V4mxϳ% +*ƝC\775њWf̃JaxW +前^Z8籃!~aS4sy+u1Z ++_6Oҏ'B,VHjg^LsU(NTSE+$nNJ.nO#es&{y,</M+gLLU6aeF!HA +M'xh( QgCGLD^ CCx ,,ꬭ3{kLT`/={UCxsuf4"ʏx5G^Bi%af!atlA '&$2:f "&Ր}{R5uy7Pdb?Qy"ui63 gdf,#YEäoÖv1b}]=/!;LU6)fc E"RԃTIOANq#Q +U):T.\jpjllMV',M5ڤ\;/cc^/F59*Px:1HeD(`dF&#*:lO0.ԜǓY3&$s&tkظ+dF7+V b6"d8s m6nqm: !/:Ѭ(Q_n6zII/-"]bS|)7]$ +!3e[[ :x+c~Umu0 ۑqb`Phf$EqƯ (5-9+ +GEkoEDœpQICӒİ)jZkdBYjoԣQY2F6}>mY,H&U_%$UXDd!$3 +6!K+I\Up,F|!nEcY;|ȍoD참H"RT:wEY45 &cݾ y_\f՝H+[o.DjubءVXeTOC}ɈʗELQĸbL'E.Rj}E^)vUSIfcB(/I6r'ț+081ŲYjj[Kvd}m[""c(z_cRj}%!JQ!y0?z<;jry4*Z<*C4uE^2ZWm1_ ToJKk2j# M#AB +YXR\yw:/vK(6s2? ӇTPGWYK #!&zoXom+p Ԣ89^2\\,R'1]՜*j[̥đ8Өpj3PE$g!rC9HJGkJ&}D]M[CFiE ݏwsi!Mȃ$不,c%!a)D GI(Ya_WɕP^nZ I +ԔEӎJ*\:8!QJ[$M4#$ +IɞK +e$Cl%9C5_, VdC0<\iCiFx>"tbPIM6}jH|]n&l/KxG^Ga5dȎ)-h;*:)"FT\|G\uZZ[yAv4B/Jo&4թjs+~ ȥKWwnmċ&(G~~U]:I6%ydEvj*"Lk2c^vX%Ah,e2*44B2ɰB(: A}珂&2 BN!9{P:lKdb"y$*<.p%i68WPd{DSSQDXx͸\jj\@(" ADFT=FHASJiC9*,gQnJr/(e:D s 9X^3!Uy+`LUfCć GLX\e},C i %wD$ BAJ#ˠs/رЈׄ#I2d1MxQh#*A_v+6 RfHIV-ϥ =m>S MMHf?2kQ0>T'4~h>r/0AK C|yRBRжUJHʯB$n  f | S&,c\CD =12 ݳPMjd +4 !< x})L0\VADb' 5SjBe6̈KtafjfƲB#d3q(QSxRy.ЁŖ8C ,C}a/>a#PwB!ԁTH?EdՄ92zX1P0sӇgV"[6vNDx Rᕊ +rTe©4 ( cnN2'HHQ"]D(⪤fȃ(.QGD +!)]&PJep 8O>=>3HQ*APd!VG4"BO!rA)FRz@ #,) R / Ѐ 0uD M 0/yGCS@}SS@Tޫx8*g>"BbJ7ujAMO[P1DJdG8AQŒ(?E/d0ZAs^xeX,h/*v1-gsSH4bpbUO5j"v1T#8T#+j3Eͩ M,Lv|fVz- 379ŽN/:ATQ^f!['կs(2Wΰ3K3৳W-ǏWeq|!GBcGaDoɪZbϔ=KhEB `@ +Cbz|4|B aqPPZ  d$[,UQNH ۔+p!/#IJj pfNn40:p"-XPVm&GIÎkZy1B8\A9#g&ކw%Ca ٷz7~s1(@x^`&2 U=1ԿRnvYuׁH!`>;j1NNmU|;FlE}gULwSjpen3fa #QXg+xFvY CۧUUۇbCG15n/O j Ԑ)HIDNqLR. + X3! +2`x^ Pë %NQbNbQטr +ރ-0ʻ䀪^3r0BST=FM!$BhLxvf*63QWz$M?2c[t J SI6_n>rcѼ/rggcb"XMV܂ ~2gzfERx +i\w G:[xuڂH,QaBF/K-Xҝa!!یV)=Saرz~'N.#Y,u*)nq$ކ4yS=s^O1PmT;lMl'sT汪nڱvcU?, CSf=edCk$9XO*w gvn:@0e?+>cm'W-CHA j9DSh:8;1qz[.:qBtOYl-=9÷Xǧk)4&MPo&,/'&2:t1 1У&t!{ᳩ(6@FbȌŒh!w1ĥp9NzXLa" cG bm˗8?ggMWJUN&s쥎ĔVjNUn;ˈ9ʵֈM~pM8 Aj8~W"iEb{L, +bi@>唃]󇮙o, Ne9W>WMD;b`L>=1#4N|Pt}.| &x-6CI10G +FZ6 ee1$B!'WNas;)=zcJ2Juˈo[*!eC.Twap)֥TJK{`*C䜱Pw_O)uѸa#~8bPO+1+),|AUOZ_^lh]&Gr TrLli¯I%i1keV:?ǒK&`B>~gŖ\/y}ɾ}\ҿ)HAFxg +8η4m) +*]Z%c?9h1Dib5E׍!L]LN]&djS;9u$ `(Q|bY BnnCsA:^ugb8P5Q"ZS(-9BeCAN;B,Ѱ<4uډgA`)X?mRk#iA$,b:'!{y^/uEax#v,U._@ꏺ3r3U+eW^-F WpjeY.XFH\MЭZzkN ej7Y47*IOhPf~z%~t'[3ۚ5S&D ݇I%|'h@"ߣfD;ZS0Vx;YP׹#1JRUnybibjO5 H}DGP +( x]$V,|G0q'.+ JrosEԍĹl<6hUufu\#|S@twwZA?#(\^3 INA3V\Z -z\F)E7 %1?s).HVbWef>$֏%\+ cxFBC Ru)W75(廒_-t8#B ]gd.d UrQ4MI5J|.@UgZb!ϹDV涪l^ʎfąS?4"E`,v#絤D;VBiee3o9[%`:XGfE͐_8QayT2Q:G7N_ +AF!0<Hg %-[ /C!VsV t5WÊW*# R 71LGp mma 8"O5:tb 7Uvug.ҼGdAZnD_t$˨/!e$DzaB{6XPwF% +E`;,GҎ Uݚ|}Ә?€.iI :@xz(ܫ|"bZ~㜒\P 7vH:}}@/L菒Ȳ>'^"B"LZPs|k5ue%>PJRh՜ C&H}ʳs7zF!hePd v4v{F%8?޹UMa,R0BΓͱ"'TXlg u$<5 "aX܂F#7Z|i^X(x M +%`͇Llx!CD1)BK'Y|%nM Qԇhd1U0$' z{kgh\3ZJdh>z _ yCzk3:I<% "Eԉ9$}8H +`yiBEj8y-+7+"in@oEЋ]"q/&^_"!Xd9$f!V,'$NI}xna qnϸY8AOy>hC+i=~d,VE\_ X#gHC)rA1GJ[smySB`P+J~||F0 ;V>$? HTA|< wpcc0j)W?)# rPMyД:`H{`::@=IKV, \s*^!A [ĕ:t$Fz.u +$%1 ccaAg\*Ec /_ ܟUPc_&ljCrDШQtk4W1 +:= 8+, :1pVkIyp<ˁjv-o?Nso7b@ !\12XLܘe d& " +m"D@H[ $ɊH&mp܁h>/KA! /I+,}1ȩ_lCz(g;aNmJQA8Xe#d#wl}h 4%P} #ȵP{1݂kL_k,5(D ֈAn;UV$1 p]j\QcA~4קMӸ{(!Ӡe0diTKhOpB# .p k4ROɢQ C"p!x] @hwݐFoIg=>>Čg" G!5737eyl3 D $("͌9"dI*U"u`]`EoRH,#j0xe#Ъ2fʠ{ ep;#NidPF n$9ҵ.K9p(ܑý$œ*I]DE]\H.r!irB䛸.JKT`ݢ%X ٯznu r$w٢%lJ\ CgX[&uZ蹒J +{o% F ׃=S[ sW6fKhY$QԯDdX vX?zhMXҒ|8,"քXB&Kn%~h[~'1@]2%L_R0Q &BV]cVyB#óЇeAO3QVȶX+ L +XV!4x3/6YPk +I}B2'0 +?ЉUUu9;*IPxbSk)\Փ,:EMqO} )7"W$p)H&(+ŖR%' Jl'E +KIP@ œDAQpD(¬E(1 +H6pQ|& +ЏpwHu( )2ݙ(b(BW)@/'D"~B1W}b>CS2ɦȜ+q +]u^VO E`US^&C7QDʍ61X&JU:Y T Lv.Jd":87&vY^ r%L\&F*1{خrK P%XroK@WM`>AJW\@)!dA-ʀWّšZ!AI N)ʍ!,^?ٰ,)3e# +S+!YGx`&% VpJN.(!%XYxS2JʛXI.\S`JJKT'A}o8ĀCv!%pV$&X JR~Q:|gA@ثdSGrD +(Ⱦ*'\#&*҈?gĜMFP+F*q`aQ5\D`," t`=2E@J)lV)D_/k;"?BD @Dʇ !f_9Dn q^ 2Cd*H*2B^iU>*) UGbXT*VtvboOVf%^+AD"DQnJbbu%WDӑJ@ 12@%!+lBX'!h9a(b,Q z` qlyq(’R2 b,N`&D(*$IX7!8%AI`kgLhX]w̅F eIp AfsB`R\\ZJ +!堈 ɰIE `N /â;!g* ? "2z +"RX *e3 DDx, ExS@meA@YBV(ڜaϢ 7phrz`RaN-ЫE`q-ʇpli@R=\9ݢz\oyU=Dfz1CWp>eP=@yrx408L %]Ewݺ]}˅ſ]vdDŽ%>\e xdKv ϰUEc }/"a~e9Ե^`3?fHN0`H/Q&:`; q0BOqq0kcr%^ +RޅᇿFl}7<8 .@a70Q`1dmL0،RPuO?cf6ٰ̀Sc` T5T}SLp@2RL!sd5 '2+ H$ٴ0LZFIa)(ciX3 Ĕ2鈆'AEh2n2v]&"ghm31ßIn fpG3[k&2͈Ip`&Ig w; dg@x 3yP.h `MnS1Ecak4h#`8 48-I 0kœtLW|i z 7 jDռ.x ,KfR&_y`\.u r^~ B[~-Ă 懍 ͹n$55 +D: n* lFm. 5mzno׫6Qg{mgY9yӂv|>MZ!mYA; ʧ۳*lB`(BI. +oF#,R cBuOaϑS7y LDW +:j•I(Kp4 +p! +D,Bt +N@'8&>'ȉq Nq 8OY1"91lB (!9*g}$p[f&|oLZ/c#Kqt-Y 1%$Ihw9KBO# F¤A"s*cG9=9qwx# 96t|> +HR aGE6:["@KtO'! +#>:iS]lծIHuB9fܰsWiv*k'G'BoGwDN4>@o;Gy xPz ﲦdN+X@>Ol ;цxO3C_;0|2G<H!Ws07;s ыƒra24P7\p@jH_4{|/&GU42^12? |u%\]n  x ʏR;ZL eNTI ^R%@$THc jJ(3uA2ȪZ8MnvZ3u3MwH^$QW)E?ϗɦ] 8. UO[ţ؁95"#D(b%B ${8sR 0d~m E!/B)%  ?SVBbΟ(5A`} n4Hr,X@ yz.ID lzU>;Ц~tꮱg*:Ib:e m:1>&r?RzF).2PlvƲ9sv#^ׄ`K2蛊w""l`R{Q^na>7; i3[#,!A y @Y^dYkk)1܀ߺ1P䓕D 8IfKQp_@Ao9aOQGz;\m2ȿ!5&4pbw]ߕEakO짚};> Y@;0jpE?sz2@ΪF,є.Kƛ@$J&X̄-c寤 @عaۨ 7(e%:x,|`G܅0D1H}iGV<#9II$wOv,@:|t1JZB垲Sfɷ\Z7xAbV}hV 2NyQ!,f]|+ S(#X?Q.MۼǁJX81upl|6\}& E#"Pl 3ɕ\xȢT3'g~ h + +'q;8WZSD,nE}*wce `t8]d ]L1P`'(`9Z]feτh`{*dJ>C8ԃ c).Ɉ/k +?z*^Obp8<:R^]: ~1:Ak?/M>GycJR~pKZ%3a7!yw.VVeBE`eZh`_pb)l}$tgpdL@K*+JQ4]޲'mwPvTק!]us_&1п`" />ܽ6IX\P~HJX J Nx}yя_޷JUmtgoA(DP^??L?%\ކק+wC_u|#Oٌ l&eҢ>.M.O\'pQrCD̶o޳@9-kqLp͜]YiGqf4%Sƛͯ,FcU/R$!v|$BJb7i Dzm7#7S\M.*P,-Q5ߍ7!arQHtH|*@9nC.5̳(uEA}Vƫ|4 +|lyX5n=ɛKvo!;bghSWqyL(ZJm_SƮm}`P`C + /ڕqo]wY78~-%lsrs4`#;|W0ɥ"eN'-![Eȑ?pҞ[ jhDX9-l,A :V`C +\$Yas )/f]=&|)f0 4t}`[3*w}@[W  oCSÒ{\7FZ˂Vy"v.!,qX4 g/=!Ʀ?b" rkS^_aYK~tc:\o*lAZcY*4c{f!LCk CC414WJy5كn YHcle!lL +>mNJU}3ƞ6ѕVu1oG$+DQ +7ai|=F<xػi*HaxdֺL#|>¬_>`>h+]k_.{%K^^>ga̺y.O}5Ą,F=_gzF-hh%.X_ŧWx%Ϧ{Wm %i-va]OKSkA^{'(E'8[!-p"uEXHiI"ѳD[gᆾr]^_̡G%a4?`dD4rAec\1JyF +^? 3%4*$.w޸P "Whܜ-K]z,? ڨP0WScyʼOڿ}>t+BJ.Wz.d@ޣQV+һux9-Ia7;s~+Y~~W/> +Z5=i}9ꈑQ?0t_* #zFL!|G/"tIP + M$7Ȫ-KBɸwiQdi7} DjE:2l +vѠ/IO_{Xjÿ31!r63M:(jR(,Aє7ry8`v,TW@k)=r͌8*vU!'W9~2ʈbQ0sgՃhg7.cs"_/5y$y%C89،&쪭xU +v(ryvnM%$!y]R. ĉ: + +.v(Vu7Z\'w\upuu +u %?>QV^+ieZLh1sY[nR+e_XV:h +u}\Ecju'`_hs/MXu,=ljST4 re+Ύ4tf3ͮ>J9RdTDz /0Hz2ɇBlhYPgÁ}L9ZXb#͎t"rv.̚>2Ӄ|S6.#?ȥYɳe W:/6h)ɗW9n4@>5H4җ6b1KrW!?:Zk)n*)'H.EA`aIt4zۨY-l%!%o׫Un]ؔij=EJl穧j˘yl`?+?.Q\f+~?ׇY~PY&N'j/਀(\t1.l|{\۩kld "5#mh)@/b[t?YzT:Rm@G"Jl&&{ ]P%V" 9YB::@(7>Itu2PLofu Wp_̾f݄0=$|ށXЭWR`˞ӇRTK8CҁQ9X fƝ뷘t5/37Lt)жqΝg|9^A9GN0 1|Δ. CGpN1lCsd\.<*p*&R,Ċl=X qcnLҜ:zȸ2Q9sY$3rf6Ms#P(/3P"Hc &vlG6r E֌$U5wl.'H\zDUHZcLNfT{_4퀗y [屢WQmsLP| j@?PO^\#SCpQ u +K$@gg!S\H:w208zIN9o/pU9"QڠT|J ˬC` y:r%NFGQ"`n2N sܭ"ߞBF(r7rfE;KljȎQ99cV>8(YGUY98>_E@"K@~bI瀟@W\7]`߱Dѻ O;qy~|AU8qpU+}ȏ`,*f4?7rIqv̏\;pZk8]P.D~fDoO" oOb +y2//0JD\/;IM OLjlu4(L O9d'So\ͿI6(V9Nt<( &ģ(N߽Җ(F +X}|P+N+y+QJ$-@tH9l /S\_&Մ,/Ahk\Zx8n*|poxih^LxLji Dvh⳴`F-?e)~"@=a''/È-?Ž>%:Ijx/8~3  +ڏL.$MPa/R\XiJ=*U ;{_:9V,^&O/A-.C#.&3ѳVȭ*eVc!A8uO`O+v/w;_M8ɤUD튚 :_ jUa +|Ke->JXЅ0Vs>UĞ*܈HF*堭0㋑Fe3p$#\>tZ_/F^;]1x8AȂ#,+0{'ED2O 8|ݍ"aK菦NM)Rx Dͤ5}(!$Qu/}cơw}!<1*x;}.K4@{2`qڢmb탍=5`Bsx W3uZGBqC@߱Ud͔֫{S*lxzy)zF40&Vx?h6@=B7Yě[[Sْ45p\?1<Q9ԻVvqMuf5emi%C;vϰϏ<'5,6S/܊EҨ .^+Ct/'p=#z2Jf +wBdύpx5:](`QF[k;\iP|)wks ܜi#/g筰!  ΔA<+oy2:|ý|w%KfXK/ W&2ȕn| p~@QtMmLUxox1|ƢL.,8m4ugZrlr;HvVy 0hm6}P LLJ6FmTyJD}7ei5VAn-/2Hm"鑶(-j=1ڽSj\[+aCk[:joF%UcG9-CN#FTNڽr5viSʃ$ܩ1mTMbL*R*Y'mK{JR\/?ryNgS)H8H5:_xhɫo<`òzJʰi,-e32"hoJ-ےy*׊iNO2$9-d&#q,r==*U { +IHGSci{I58_`}6}ލ +} P?KPfmb>zWD2z}NZvW<#oGʩk*eaMXY{;1L:X-_HKU+N׳Lqj=F)t}ϣFVtt 0ynzuh:NZ\0c>\UKZdE'O25"MkG?;Hu,ЮDŽvj'(?[q:'o<+Ԕ$=due&RK:aYډgpeKk*ӘQtsuxFmfmyIW@QoJ|4 p\Vh!f$BXox9 R^:Eռtf~unR-t^HA~gmJA3"؆ttE6qVRZJ48*z (uA-&m3|RһҬbcX +ˬrk3 'fnv~K'i0.1-@1_LQh5+)ib*yn&n$̙FTiQה*)@8C{gz wyb:JH=;+".Heu-TT{]BK*p$*ZThFb zTRmCs(n?K+?]!";GB2O!uG0Տ0 + U%<`VNȫ1v/VY#61ypVFՋےxJ:jטN_ֲx4r`lWubEҁYXn$+tܧѕxYzYUNiO;);[րV̘o|UH:Վ[%ں)oWװvt9e~oחnׄ^ -,Lf:%yW{_.3 aB%H 3vZ]upň3rHC+`ZFyT:ܙX TQz,&[y"F6VƑ.GȮøh˽LDOxs8KPʊEHY}sCZ3Q#{Q.#E2UIgZ<4cC#hi*w6dUyiŻvLzPsl?Sv 6k֊X >{1zmhz1ᴽυP[oշ8gm6n$J3#_u{E굱y4Թm hR1!7IE .w$7[$ f_~xڶ6[ær5 4 W$gD%*lvC4mQ*t' ѵwE1wt;EuR~kV g-i~2 vB]P[ +endstream endobj 289 0 obj <>stream +J+.QWP3\~s i ) ?MU¨0C9]t2D}ت!87XlApǣ62UA5J$K@'q;;4Mo\SdpDY\YXj}0 G1sشA6xO^ǒ<1K2 +$uxbCjԃv3qpKkM#:Fv ᧎ymrV{?quEeH,M=\ XGtC':̾hyPoցԢo3 #9v3EY3^Y|sDX[j&8hW9>:*pxԷ'76 Kz*AE%S9\"r7nfT{;rfʱLUd*+G<8Vxp륝 ++vΙ/aU3&c۩GϺ3|#X<+8Fs`!Q8]t6zn3KPʳ Xm{*AM'SnO'c?t(6t}8o]`kEkmcHIic#<=A6xkk~K25.P@4Vr#eIl[ɨ~o4E4hz-GOǶ7n:4ȶ1X,>&־X*7k1/Y u.QpJ6 +E>6a,zA͚3"*Iz^Vj1l#0~,.Ia1UxĎc$9DpF"q$8x[4OǸ2c>*:rbaƆ*2\35&>ן DcfL~8gyI'X\ a%dlv~qEr=?0~3E{;)Ag XF8_ R kt"=Iw gXqݟ: %Y]+Ooc crS&*^Ћ1}) ѰD;vEa w" C˜EDJ3M!=˜YY &ƙA]|1b;VxwO$Rkesʿ\̟2<b1$s.007zc@A'e{3 +ݽ)Xa4%j/|=ݣV/ms[G,$SVŮ ([Qqw//.yIfQ^ϻb c8[@|CN 3,g}=b "W.re㗄[y VRڋW RM: CEuaLE%9Hјj<\m(s@8kX"hl8o¹/?T1P{יʼnܛol[[|.ؑ-ߘ i/ |/+U_ mo`wU3o4 7bAv5~B@241.WcqoY@ͦHjwfP)-ȳ 4ޘ-?t8ǖ}\mX_cmuε6$y1Qds Y q`wb!K/q=[`Y!-1ZȅKrg1|RwшRAXGf2;o2i]82^åNRڝ5c%W[9 `|Lא3Dʲt i̷۹d}h jm1 ۆ:f@^a2v/sF3ǫ&@fP,GmPlDRy!f ή %h %ƹ#u`baQ9_sh=#Y3".Z,<a[ ZۣV\d^}eg9!2tϷzϭ!|ܶAC Mt +#A$SR j=?+a *d!p^p׳fg_Dkv ?ϰ(NmعZp!Ň[,ҍtWpB^G?)UJMQ>6 ](軜a-pAFJ)\ ;&ȏ ZdFHxMaAJKTeA䵅fTFt"_}`%ܴAsN;,WJKXbꃆtfs ȻA#1ɵ8ȉM΃Vg% Dݺ^=='tS@W}D,Tw.pI:롩9zx6JjYР3݄F/ + Z4[txa:e>xɒнXsYY  34_M[Do{p0М=AI汪z$LA.r(ZpA,T zrЭi9Kщ@r__'}k.NDCmuKы-0N{U;:oTPMʂtd5+IBM#J) jڮ'{LiL+| y˦3ޏOi: =]F:\yy ~9Z':c~Ew/BV?Sya,qi(~U5Ug8t9p|K7}rtb'p֠:BE*^وQmm'҂ ΆS/G&7^7ABJ1 R\{`# P[̰/@ؑWkks]F|c#[0(]v:GG +McwE׾r.G栬5;&ٞ +GHuv&mt`v1n,Y-UmhaNbymPOlkF +7rBHԤmMޓ4Mv$T!P&kM5fmRg-}u8P_KFиn?qx]v/wY!Q} <P*v85qʄt !( ݞ|2/X@ޚs8KCzf=to`zD68XQvzqz8 +(MuFU|Ul.oq8e^qMmvtE}]P>]NM(Fo`BDi 9S\-)K@wh-m4:-!gD.$4k <n ?+z $|&n"|]ߎh<iX +ƾ:7Ax(%{ ۲y"o 3x[%5(5i׼ ^[.mP># 9݆m sn#F=t|=I O א?C \Hy<بmܶ؈>i-B.@OʕHj:͚է1mp{F\5?ͥƥ6 [z7WOq_X`meJn#M6Yr ڮ¯ki /&g;/!Aݝv+q)$>8+wD4)X# I90:l7aipY79_͂\]U<$2X\~l߰,16\6hw>nFg1dif&)nv9pm45lo< 1lزcϠm6rw4z{{[÷dR m:NbTPw;6,z#df$v|{fn7~Tq{sLE:n&䖓2'ys'@97o<ۢ+JBw~nA@rΰaש arfb.jEtU7Rl,hfz&{{0Sz|wj4pݒwRC-nAz|oΟݙnv~Qke:ˈo\w0(b/ESUw0pĤ%㡻p䷇#wwJi&A|w!tVN{ֽTqiMNy`%N[(qv:=t9y%Їb&^UH3]Q YV\xxTzu>{~>RR`xO,llZ/mPW9΅y\p4;y-|#ހ- |邼ȷS<1!oZDž:6O?-̉k)5AAަ^ry-, -wyc uމ.v3jKU + ڝ"'Dy%9Bo¦Z;JUB{Z&aljw4-'=:ba &r|HCdJ[dۉ 2P}sD}/ +xSfC BDk(\wE4F͆'ҡASp?z5 wd,`t d^Qs]hS:s)o͑9)7#yrOz|mċS뮄<~އ@JS* Bf 3GBui9&w+ 4 xV&PA9[RQ Choz\ ǗjX}oP1S0JOG됧 7gz|ZZo,Rg&^׵ -pT0s6|=z2}urAKQA/Y%{Gj?q2`1Dn{5Tۋ2wˏ܏B0Ceިa_Y}w8]%r轟'6dON}'{ڿ3mOt|8Eh])52GBB)FçWM4WVx n^t\-꒖ڬk]ȐC3qfL^1(Sy\w )frQռ2qm9GN ,|^{G/,Mlv>MM*HJGwMSFNP^w̒yi֜3՟Fb>Gǭ_{z:9g}<0^btucƚ=R}ˆƳڞo?4S}Gp >=L{o!#5vP GaA(ʛV6ޕٗ[@(5{ X_HK+$VZN"a"P~S9xml?uq'<9d< +Oua5BdRqR +Q|<Ҫ !V=%|vwՙL:ם_63W#D?H`M߇[BG87~~: [/vFI+Q3U*&K.8h!a#l1~a h~1|h/W#w`h' lbЏk߇?0o%$^1x1U/;O0a.lc_R* Sr&h/K_೺|dI+L%Pe/!I^tǟ,! +| (^xYϴt0uHQ(uk=D]l0"܉8e]ۦҧ|İ6Wt D0X˞%/UL ӻZ %rUZ"b?!8vbRl+r[R-J2\ )sUZ."ԭ2JuNncs%*Lnf}2пq11jPڹ-הчŋؖ;6Bw##MIzsCʋc*qψ&E8UFv˱`Zmp,K(,fmEz?kT#茖Oѡ2#40RiH`角DA]=BH ˼*I'y"⒤ +<6)8u BXبXkƭ#@!$ 42QhhIgJ%0tH +ZǁFSep=W>:PQMNK`(~U $Xe4,WZH\όbI "(.ul)l zG,&$ZMIV,؜j04(x}APsySzNGo%X;^щ_!)6F'.BLa8S*KS&5ڣX!&i8$.&rJ< 9E TC?^;Lʸ[/2J,x?Y!!5\dvQ߁V-9@doa'֒8ݻGf.0t̹0]7c2"ƥh7Rxp~7E4OԄXRU0i:SY\(2]k[k!U ]1'hõ#rV+gNv*Bj?naXҏ잒X)F૕P+gיw!JPR^7M-"6xQ{lM *.*&CDNpcIU3A*Y *K\̝EzںLxʎd\ǀ@bB?R[hsng +IWIYL+{tt(R=m]NӛfYRONk9(5Xp_^Fl ïm·z0eQ4XDaߏMoQei`аume DRDŽĬoΚDi;,͋eLi lYE3U/bfC.op WUYi<4w:$0"h[^cyɑFqX hmq9fQoS'qx rw蚊@b[f<5ij>$ +[BQb.ف&^Vwn0=M.-)8*[)LZJK+3[UIhC|`3ڝYػ(Y{7-9:rlN_s.S)D'щbrA@QhhU*ieY!_hS!tݱHLj[St'hzw|Qf)GonsAK%g,dh"J \d: +O 9̖ +>* >`3NL_ǍV=?DNad͠Ll^4_+4"#(_/T>2w l6b ڜk<?%=Zs@Z P7b&P ὎^fYBEf_eSj[GhOO˜-/$iKPڔTP}z /4E<8'#3?2[iPBgg@a_oĖq"Q L/IZI$"XUl9p;(=3pZKU{@*1 _G{gI5mLweGY¯"JN$,.4 P6^oХJ]]'0EL5z1!z5[JmS Ӵ~bU ;_˞־11\}%aiHlLA>ծh]5u*3Յ-l̳DgM>;Ip#?b9^pO?s~q\zKRdG p̲[ +x" $#.!Xz(}?B\gaR-? 6M +-;xxZGV~wɳX7/eK/vf8|+FX85WW7 Oxg](A$Mwȵ8b:(30?:Hĭh\[OH IN}֍NچPG߿W0R1P C؇MX%Hd{ +Z H'5dsVN?zS7HAi?YgجtpPqq&>ܪɟg|Z#=M^AdF<=}0smM8λh0wiW țťiF "c0-(xG㻿CAF߿JVpnpxqnܽwuxg +3!S3O#9tG1>Y>}g19i߼NFomKڐ'V(*‹Y\AFjY;X}`>֤zN >|ͻ9:H0 i +;w/d)x/HhSѨxdXT5s7b7_IT/Ik>ܧ89oO#/1t['ՍL- `46*vF]ʺ/we9'0-tJbF]rMdIntMx&7S0:=yܝucǺAE[sФ 0wl4S)wBU2m63ÕFv6N:k'g"5 +@4"{NO0vZMHw>e_-ęFyF߯)Ə8=x9%!4Z/Ey3ÁrJ\(7} |O$I/xh?zv˄׺4qg@E&9|\\C߻|Na}=ۆPQ +!>d|pA<d0vi6v ĕ46o#.s Yi=z7u&2}kvP&WbK@>{x5q'acj'q8!@ J?BGV4p1gKY CwV@hGfW-3|H$R_@KFL!1msw uP$P +r\KN^=~{ l&[;<& ?}wi%ӦD^yԻ_f[]4 +T m)7E$7߻{ǐYy# hCh!NHz +:!y@:o=yҨ/=B$'ğƿ39v~(gR/qx^ϭgQ<7p"Ai!bb~`2Q:w+K*o5sp ]hR`% EeKJ7uNa7$Hb|gk<B+Q +E!^rWFȑ/t^z0(yBfs]rΣ)|_X 8c;{DZWA~~3 1hӇVy\m#~9uΞ񃳁&pu|~`{a엸2:F/͞s]n~q]/.qK{KӖry/@\2oť@D"~V1,- BPO՚i+P:hIb߀Ť-A(c^B-3n5 =)x[٘vh +L4B_Fmtmq!7JT2$Vn'&UAg<̃"7IGJ(M$ą&!ʿ<$F`\G~$XI`/!2|lΡc3792 2xk>Ʈ}E?\=$̗D |i4]~y< ^BWA̳%<7oRތJG%3u|{~i⿊ay_ɰB 2j[J Q$a~ץ;9uw Ʈ]\=,\.v/ $Dh8\cg;y^Gn 0%K` t;ww'F$EE;G azTi>H>sgnú_IXcL:V2(o9H5 RHMd!7ṟ=\R4}=HKa꘼{5_9[gy O" ޓȗ7u9P$ S=F_0B;cm< s6f7ll>cn ۽<Fm+[氖2z+èu np]wM1-G4pMtinݓ&c}vd Y&{ch7;ύv#uq A9tF/~3QPg߀>Mcc웰@#HhWˈlO/?Ө/ā$=N={~rQ}=3Mk>_3}o=y~R6=PdMxk4p_?$}~M#w$ 69cwe +I`hۈ>5/BßA I줪Hj;9@z1Yy yɼߐl5b7y1~m33wאhlmi`Һ8t4Q ]>O D h aC6^v}"{J>W$P$J[ADswf̑u]\c7{}÷-kx޶cLEh.?Ф[ЕqinM8w U#Oy:Yq(2Qs8O#g;3Hy+~AnmkiJ>@6J98b;CyP$"F0&=}wx4K/]%IUfp"n^`V =}&Lk< Zv<:(& 0y$M1Gpqou}M8 yEC8cx"Kߣqu x9vG}qy I@40+sW@7~>/9ÛLUKDgQy2;\'&Bof Σ}D,i]-fq}SW"%{)IEQ}8mXΣmcpVBsOWѾ‘Y7x!ikجX4zɿ'|wpmC((*o7"zûOk~Yy<|2?y@ĩ`X +F8Jb~xФ.9U7ປFA">_ه߄tɇU"AhU >(?Dc9 Ymrx_ؗ;&Fޚ3]rƮ̶}pǪ\Azq~0Syz&P%?i 0}j3<v,Ch3X6/M Mg4p&2{p6 n9=g|GVЙ5o~n1-^+VMy5Sh f6|~3ouwQ4qv M8WyKC[>}wacglʿD*" +Nywi7PzT=߀*Q) m'ÏŗH?3Q%baYWɨp J4~d|RA=TG:<6 hazTqKsubÁ&<#bqw ;xf/[k|O"_ +ơ>$R%?i" Ƒ8y!JuO TC&g@gQ#mq7{=AC6{ : y:v>O yǽCovNc}SH4%Q7cvg:o׆P,4_:PƦc"W}S]̺1zic_j,[Ů];4:ovi ovάۯ 8;sȱ2{l+H}BWfyY7ߺ\w}B38ή!ov5a 4 , ?S7"~)7No9H{:#/DJT/s(7N U7&O1}Shos|ypƽ(19b;<oر7?4)?F s*9{7Ƕ5?Vb/yn 9af4u˹صY4r˜bX`o~_],^ŮێEV͋F7L+ori3|oޭ{Oήw{i(5IϣgllźܛBQ]>4Z9} @W͟C]h6 S6/ths,Ac_nwy(Ȗ:^N=0j3zu𙽸ocinGܪגqi4pu1|n4 _ܭSx,Fy_ȗeKs7o˖woswdW{& vW.1}kK]^qn~vܘ5la6taKw ǰtv,gD:s>n9ra*tϡmƾy.on7 kYa[63`+ֿ.p[ vsch=bn.qhAŰq삗s_pb^-f[aX\ Űe7GF߄p1c.tf[|lVL>z29ԫ: oJ,}Ż&D+qNsO Hb:xM82|n6N{@Mx[[/+#VcŠoչ4|l륯l+3Vqo?qd[/?÷nXnv3Sbr~mb4 €a`-p4X1l La[\X;\ f/m#֍\1_5nK[wۿWW^н0-hc`-fssbXZ%ˡ6tzAC'KZ-903d]ZʚZjKYR544kp%54= jp2K٥P58wjyxf[RY-+,% ++Ll)mgbMiYVWRڬ*9mVVJK K +[uUjSUJ+5uE5E5Eeuee²ʢ²ӒjiWUTWZ XYTY+ +˪J+eŒ’VQeWUWYTZUrX_ZrXXTTTRXUrXZ*+),YAJkNQi䬰TTRUYTTVSUYVXrUUZ,܍UEeUEEuŪʢjQiRZUTSYUZWYRZڪ*6fiUڪ,*-+mTUUV++eUeUeUU%eUe%eUUeU͒VU]M]UiTYSRVTY)+ՔV[š^eMUiUQYXZ),ՕJVQiiIUQiXTTSZTZ,)**+V*RMQQIMQiZ)*)--+,,)VJJJK+NeTXWک,,,))6+ +RaeTXYKNe]MQiUVjMieIeګVZeUR٪*ҲʺjTY-U6^eeSW)lVҺjMeUYYRZmvJZjY)mUVՔ6͚fIeSUZmV6 J*K*+ҢjaiQiiVRWUVZ+*,vJ+ҲʢZТҢҢjTZY(,,T6+**K+K K +++ VV;%ʒfUQU]iRTڬ+U6euE55eʲʲªZReeRTYXYmV*e%ͺšfYTY+,l6j*+ʚZIQen,KNQQaeXTXVYRWXZR+,-+++)+lU֔ +KE5%b]eZY,T6Ų0jaiSXZZjJ;%ue’Rie]MIieTWZ++*WJ K*fZXXZ-*bYiv3@/ CP +NOH[R>Ki/ "NrDݧu~k\ ++TNE zьԗO/>ub/-Υ_8(&)]dĤ~J^LbJY28(Bs YÔ0b'(=NM*H![Rs*|hc|4sg&JL2 2L-)[`' G0$8*O AyBNu +ڨjoiz-mwU876K][A0 +p{#f*iB?IP\&i1c53D6c `l,B|`[W)yظpRJV0KDQ$0pq)RcD +2.8JB!{pfrV;` HMrŶeUұPqBA!-eUCV^`e`he#@ЂH_G9 lrru6L1eHC%S<78rZ!lq |3_y\$1M0 )_EJXZa(DƤ_~InN$5QDY; $C$IG({l[ˡL#C9p,' (oA&CC]@1 fuj\I[Yɖ[1mI99$9 d1c&"V(^A"@p$=\qĀ&D N0?dXBrp! .F:9?]Ǟ$@%{\EUԁlr|ff&%+e5YRIܨB%WiacH53R3K"` Fh Ȱ՚+,];%9%'f:y({ŁI1]I,&V/E8(0hiX)& +K!/&Ԙ;Rc/ I?%3&ܠ3rpHL2M%!uҶYEU*"q,RxJ+ybWo\~b`%*e>x `'ODDU=(V]GaŹ0jϠ +܂kg#e )hE|W6Kq.Bb[S- [ST +A'%VI?"B$ rpH>%~FjXqjy(2 f#CK%z'ap9#$ew@vxoI[w{}9aEa RYbgƘɃ߁bWRJ0cp+{C٭E|lQ3x e}E}*_9 Q]ݒ㒼Ͱ`]QP-UP9Dҗc&#DqOoEV/CR5 Tj*"IL"q,ɑ:ǒ!x(rCPP%{YiqMVfCH 9%KB"W [#w $*l/=T1 EHg U7\1`KR]EqE`>jq8h%Ӂ6ټDջ!w(W[e%Unl# 륀9! VDx|1XPPx "BÛP Lk'@d Wi:jUh؀P{$Eu.d,xe+dQ$vڿ]++ơm))l ;INJʏnʎ[ 5j4-eu9@bڬ o^79@PIQKFx.xɪ%br1DA)8!=2)v$3).'vG")rKV\)% { z6HaXJvݤĽu (*M;ךlG\3'/n}7Aq]a9`_XrZ;IK(Jgجb`Z)uLsWF9,,3`JR.?&>Z6S`j3p!I7pAY?i_p5 ͹x"^4"%䌸!W^Kz + OX$^ +ċDǏr㶣&<`dLIV=;@6jsdrMetHa8+Hz(~2h_7L)bGJZ>6?GfƯAy#?50[̀#%T +!YciFYd^EIGюq٭D~REą&rB8gr_kȴFŸ'ho1QnZE:Hȋ6+0=Jsp=<Cf_]҆*h3~Ma +)]!J)mf~+osTOZ,*(&$_R &VѶaY'(x;P;6@@imZJE$$)5ؒT5sAIgoHX:8iݭ'6S*=AiW#kG'To%ltS)*)6֍Z{YcफbPt JD~%O7h/9YK1J'4jx#؀ŤwZEjaY?Jold L8~(SC-uUɻ)O + +~#t,T*7,8oBE"/H?Q'1Ѧ`3CxN e-‘Hs}z"l ɛA +ț-quEû/zdfC1i#165ss BGƅSСucG&vцo3"n> >AUD@D">d 4}#P5"ѷy:/Fg- t +Gd:P6V’ZKCV"%>ƛ F&mƈD4F`+!$ՍLzJŤoJEă,pKɽ/oPr#{pB:r?@']OV +EJiΨ>{[DHyҧj">B+ ǃwm_ Fr3:yÍ:or2vpxƟM+U +Ž&U5'=)/@ DbO7$y ?&p%.);*D0V<"jX6-폹̕mqpy4W>%鋫mq͆Ksnϯ_p±Jf-h]@UɰlXX7.bXK?ۂvZM}1Gps/L1D$@~i3e*?i38}"<`\Hw7"fcdW26$="i!.49<ŸU ; fqh ̿ bs0t*Ai3I T +I[*ŤģGAmKA%O qqTD$_:% 68_~7 NNkJQiβy+#]sǾb'H$:Ki4U}5 yK"()u5r.h2Uzjf{2P2zl7LZ2gFș/tf`}3X6?u z/%_ϻȕuaԸ@5 :jţ0h$Sm>z vVͺ߄羑蠗z(t)xDO᭠ģuAy;F8>GģOlQc눨ͤjh\Kb +j=Sp2:S٨TЏA(>ǧ*N9FC!," IIƑ>Ƿ7i}t +m暱*X>:Y7:( (jF&=AhЈC(P%y컋.O@BkmX\DLm&uZG)/ݽ.m.)aQCt<(Sj uveB}dLb/Q`h}-!$^-͚IG# c*'_B7y(,> a|:c;<{';"~KAC{sJ[:s)+_ke<V%"/qve1@Au.:mEztmTL}ԩz:LK/rqq)uľ[bw#›WApq-%ýu.Dm -b(ACrBxu$pe)/ '\TedQBNk89LUo \Tݴ @ *x#UBD$ CSlcfLD:YbX [T ʬpH^c ^6%10 "du{*TI{5u HB tz֧ns:M)$C4g&<\GfL d"0gLF3$+[PNb@Y#XXkQݱ[5upekRK,jw(U?A]OgL6>PgA؟}:OW^dԇ^|:No@DTAQ2 $RJJ8D^m רajH㈨aC@U1~!ŷ%(dQ {J6-P=+r! J=l14u? O@ (u AFʇ7 -n:P?tkOEX#ԅ\~bZ:HA9'`AǣJ-N$ lt;AoszQu&uDԵDA -H3d|Vas+t$nE.=ݰ)BوE!H~4)%4d[緵 `+L0$bD81 -l,sG2 +X.H<TlC}n5A$p Վ͹:h߈C;_ms7ѥfW:{:kM! )U#t"|R Ƿb+W7\k oCv7 4yH>a`D"Nt "\C: JI1.k +"7#R"jjk("`dǿ?H>/Vu2k*5!7ͻ)u4&'vƤD# +D{%~Me0Dt@Dc:z[!R0ݏ[iܾ  J_,<,̥B@N!~ICPYC8":?Hios_[W&Uě9ÕU:r% `XM!T E]%òNЁyq +N%{1-Vۈj ʿdOcG! )jm9x(|[XH)'6&  +F孥C~Y7I>ۧ]5fȒ89wg 9 +Iboan`g4̡X#}$mS` e/u~o F[(3 2&$`m'DIrڵqIK6&!s'uJGߥ2|quIX5/vm1_0t+)5pKJ0vv`v%\!{,fJ>.UHt),6d UPbrTm +IVaR>m0‚VUuD-o))ZPP KN%6"$EZhf:%+*RƏ-Ǧݟ揍lƏ "x/@h,h4,wrǶ ou7̝Zs;ۯ ]à ]‹_XQ22jĦa;sm +hWH`[j7[ ++#NeW([4'4j&/<+"Fafw +  O$7O§ I  s|vVLj%Aq ,G,:wu؞tފќP,FnQú 毌wیflb1Elm\[E:@B5(&4SZE%=sN1rV.$qotP'`- hG1a~EBu~REğNSxU{6ֽ-]m Ƴ-q ?6?9D1Ǧyп&d+#͑_ZҺ]X;/3& +VR1]( MkUQ[@m&i"EJ@uΐeF%D/A#)~a\ .bIX"s`766yt^K &Vm[ʶ3an36b:[Сu. = ^u{s+h6 .tAV7էTu3 =| |s0t;dbq~8kpv+dAvhi:~QnrXn#d9zP9aǽi)+f +W:l`Xv!vê|SL`RD[QP\SV' l/( +uP4b6" 7仙7# h{aaR6 $qy*h=V|<Ǣ$#p$>/th7͟۷ {>:×Fc̶6:1o] ^݁VB%sU/vhc1o@m0#!] gAobٸri=5nb^¾b6t] OA.րF:]XHq EXMm?nPrފ:ΗϚY361" i +WTsPh`W]2G ""z'yA;#uwywFͷ4LImt \>uðlü8t, ,}ulV$޶'sے&ݣ\qϻ'/ 0b@!N39H# HsBb΀.&\EuNCfP f%qΓ5 h]HRF0V2%Czi07"K'kXrjKRڥJJkR^@?{ޗ3{fs[(3\oEQ0]@Vr}^ʺ0h[⑛bl' kWwu7 +B)X* +r85RQc!C:1[a8&5wMEE]!VT"b+A1[a{Cd8yC( Twy(+5WI_17H@7Q9CX>|ygntϹ_];C9au--5/3l +U18= /: +PFV0-Ӱα 0f$Ĭ =E3^k ڽqhY] +vPt&a\I&W)sQNd XfMe9wf.h0n+@`0`|!Cb@o{q`m]rea&}5!PUCIY +Y \a6/Pp*h!9;hR0<#;d'e\YJmNBx]WR#(\IE-H( 4tVsh'O.KP2:<@m8jK8tm`u)bI:x&lnUOвй*t: 0ZY֑l|bj|jVxZ bPvAX dbP8v{*jkQ.ʈ:po #f@iKZM' @]< + 8 1+]pM PKDFF@~M!-H?.:(~Ehp6"u藼 }#e×FwU+)6tНԡŀ8,*<Ƽ2;H8d+_lU× +Br +1Ұ4(WABt|$!Y4sP( BˀnU->t&#|3R)bWm:[')2$,|+ +Pz2л;|\UW)8eբqzͶb}Ä ?`r&(" qM^؏BGF̑4qV7". XXi$Q@MNW4>U+6i+\*MQga5vf9Ŷvе p 44Gk$PG b@rPa 2R$R qUr,U V'R 52H(U&AHV U72',(SR‚ +A)]SV@YJÜX8nzdnm,0f#5쀴( +sօCuL'\.Cn+d:94vN8vmVpݚ䨹(1f.BL"\;4tU/Zj)@7&c\aY MIP>AUOJ"`"B,Y(ji!QчAjն,S6A0UAReAw7j|a󝫎'e}-H!bPz.(DCiᾬtị647ۑߪܱ*`E t&ݨA/b/(wiTvw-^\ zB/\D̗|e,]ke8 T6,( Bb-(H v:Lyn0 h^/DQL:x +?gPGkٟ*VO5:+"]5+3URطmS,CZYzn&ns`C -4t Hb %hje+`Op|!tm EEK) iW` 5+}. Aϣ!ހC!,PשyX PwPu uVVCWL0#=z\q,1ⲐGaK2,0qhb.ĄQoPAg >mG}P2bMD{@\NF]Q -:V>F]ʦ<}ft>@VK_@2;dhw (Ɓ|cO1 ?85vt"0(KcG+'g,j:ÂNuӣh|:ԕ`xvmNB/<} FtN㢣- 9(u[iXȕS*UH;x5`xFCE(Ys+C *wJӨVPQ ٚ>ӥlzz>ӯz:P!~zUPw80]lPϻ<=)ŠV^C嫟} R̀${ovlw<} r qe+bwZ X#pP4<`mp q|CF&y -L D7L3 ojΘiďH_f%n,A{HV #'aA3t[ݥti:K齷nӁnW#VF=˨dxL&p<8/;HX~qp3N dJB1*{,ܱ9ΑZ q\c8W+Z[2l^iWRP8=sLi8]ޱݥ{_zL6t.ӱݥt~wzO/PDP,XYM$~365J`'.48.V9 -%JB$0Y'y3i%a4.8 -xYr/7R1:L/8<\mb|≛)?΢7J%a\!+`;WN@,CRϭ(PIcX OSrY?]tNk:M6 ~`@oݶlv9XKcu NTV K*KkU65ӦiҢggQiUY3-(Ԕ6[UfʚQeijigQkgY(4*5),*)+-%+*))V[ʚZʻ"n؂ZzLK6E`†@- gfE%5eVUUJSʺ:ZZeEiaYEeҴQgXSTYԅ lgvlf&aɊjÖZ`)VYU6*MKeU:JRӮe458fyf渜 RxH U L b _V#I{-Q9Vbˢ0cVS gHM^rL1e23F$M @ >)@[@2 0dRhqf.^5tԍ\v:Kw"bw `}t$udSB Ai4|\syܑq}6 bb5`ؓJ1*(``a+8 X2 ˗@g&GCPL^Xji{ +Y<qBUY]1o/ +e!tbn0ZۀAz0٬]Pu@ I e*m̥,c|=W7Z G)᳎T0gȺx%؋X I$( H]e_Rd~b^„07X鎕`#mdz~xP%t"UC*AeGXHB@7@^Ba? ~Tԙrz:N?r=~˭a?2\lv6VJB,J h9#+R>6wX+#%bZt+7 Xk54 Y,ɥ2 #,e,VF"ơk.F$^j+/ v >M !`CɬjP:?]tӄcŨa-)Y>U.@2 6/&(=D2]Up{1Ӆ`zЋO?zH0?==F}e dAHAji$Ƀ'"PJ,ODIT="G +\%lB +[EY7P&\^YuZ?Iz̀!`YEGǨK.Ճ#(N ˩aPײN‘Qgԓ\xzMLK1## re(cLg ܠ5Ou ;[YH&S@.!cDVV0J؞ӑ\|֧t"l ve#($r~[s +"i2ҤЈo*&D08lm$(E#llee((Hr)ft:~ਗAI|:$ԣxz.#u'NyzO:ctN:-;vu / ,ElP 3> m@I.fGR u%e(?15 4u.!4秡N0_Q2׬ ,=rzUCԇ@]ec;3@Al$YY_808`q ƈB9B/<63sx^oTġhCFA9%WT L@H5u.vs9u GD*[u)nF^#SeV[&. {dr~} a3gN_@>8poщ& /))E` b:O d|: PWF؝sN: %!a: 'G ok砐o*a!WN?wT!prjhtIfOLC%2kpN{dͭ % *VOj[AE&gk~NO d~O X@B=ˇ;)U9CiFt[9.C=zZy~F@X^9΁I֑ixrcS8X[ 5'1opb&dQQnPCAOP5 u4] ӍzO8=E#nmzL.Ņ +rk)ic!=L1!bZ!ĴBxixc3|#F`6~|m,C0E!TNWu> + zSE]C]:P'drC-29\hs$QUgXN#=> k$MBRTݤ%j~)ݨ2 0"t8-j'ƥtoN5lwiXd^u +_$CX{t2MfEC>9'3Ie2L]R)fQ1`i;~AȨ7}M3/ťt.0]t;M7];ԵR k[?"f[C- . IL9D|CS\cf b14;Ntu,"3lÅ&ƈLF>@k(K"0Hu0LL۱50=6ƕe(_ke,`< -@H&XljK (06P3qpb04Y8cf?N"}Y R!(w[ 2. &ziazKovuO8.=gMY_hd^+ ZdHg/܎K1Ua aűRCDgT8!) uĨ!p*8Gj% LrUNK_je#o9WƲ rx]Iu_z {v{{K1t~aLv.mM=CA7`e)4|LjL\'> ""ܞB+[s`u qARMetu:M4t2ԛ!RSwRx:堬 +(6L%XKcu NTV K*Kk65ӦiҢggQiUY3-(Ԕ6[UfʚQeijigQkgY(4*5*,*)+-%+*))V[ʚZR3C.řYQIMmiUUeԪ΢ִVYQgZXVQٳ4mU-6]3۪mXڰF677XJUeeVeEevEJREUeάҢԴkgY-, 漻--K ȴdSdPK.l8 458fyf渜 RxH U L b _V#I{-Q9èg0_"iG AoNC_ 8uwRhoREKin1ޏc߇B8Θ}WLZm9/H)mqJ #Aijm~Rh/^~>|Atx+> Pn#5o*tih$Q۪欽9;:CL o#7CS,,k)-owX Zwc͸%)..Ÿ4j& % L q%Qq1~k ^ޅCT :+o ML+ù-j~l|hC;pL={5O]0ȿ;R<$H4\ 4quPe QYcٜt[UR]V8Ջ[B(m9wf03 XXA>cݽW@ ]3cJ%Ii'Gpv;bpNÕ]%iL&LDJ8Sn8 ʈ -f4\/+"+{Ɋ:g.!as`zg:o F,z*&UzI~xGxraQ+LI3\ `@nԋI({.wm'サc7:ZꅣO.unL`h6b|D$IJed0@InC` @Âv*Ђ:zrD!bDqS;g@@pB$:yX -4-*,Rfh}ENqg'qv#_IDtz!sڜ~4J'DZ={HDžViqslzSf3np~[=]=7p-wD`$cI<ެвzj^$BPUTOsg fKBZ9L#Μ)1^WI`k0iifӺ"V)e㺤Ԩ)?h;ӯ!{oH|6^V"ae,O?jN{~7W?[i;3Ǯ-aYɢ-Xoi> KtʾtF'Bky검 qAWeU^c%5ߪy{۳GJkt&fzDNu<+˳@׋KӟU8eHV)}NBG|pˣ6z+y_sMfr'7JYSw "\' -q6#,,j?'<<%8_T+ܻ>BqΔ?| -pBze~ y4KzKF=Maq͂ɮ=yuCY況[jVX|sh*erLJgEO~7B?+poG?`kMHwa?wu4{T><> >=8h75g:~z0Yd7mpKX4G4slW`kv|7 t l>{\?aâӟ.R,jG?+> ,2dr>nk5/5Gŵ~*ͳf$=ywImK QKfU_\&Jq5OڛL{XM7_eݹjT,4Rxs~ ֝>ВLrFYҦܫ,/vrR]/%zxgUy|5-IWyuZNZqiADI;3(dݨ/TtC`Ѷ^u*o3r{"{ܵ H/AF'K>n|9Y0=G(+J_/t+MxCqI֧ ۷> -;?IQv4Z?~=/&}W ?C.q "/oӉ;vQI^y(]ONӨ?μ4/V;ߗU/ZOAU -6y#קʬ$n>t˖ g:3?Apj -Y$Vm4ƁqCԡ|B>Ś_!H>eJ#ݥې[ʏ8.x(Kdl! Wf! Tܚ3!ʝ[8l6hNKZcKzpJ=֑/V?;x. i 9ݥ$1*wqpf$;]iNkw,}F(\\ ޖ}zq_jk/1:}s'IsX'up|#Fd?67ԊHV:HZ# l75:`s/b*GZW3{*6_6kw/Y#(ȞnsP ;?]+O*|q^/eWD D,t+k: '7o`ttH -5 ;r@vӂ5f%!pﺖlv|Hh*>M!έA>ry)5S%/̄=D5g~Ђfw_?Nam3pu',}iqh}S͞Gޭhl˽*E -'Of٠au+wCÞZuraSXhtE|l+EOw(́k@+ҍ"$GJ<= I1svN3q >6ދ< x{ܷ\b, VHݐs._tww~H}5C; c_xQKܶ'I籰pq#eK3ִIrZAX|glyRY4D `O{Enr95^U55ct7;'gf(k.81ŻɌdu[T-jW<kBV2c6{lD0]mwp BFhξn u#G=nH#9s}ou^ډ/u6 N`l5Gt?*^x9Yij''ϷWnrjէ^ ^G1ZA|!V%ks0|ޟ[9o/stRvJ/č! &>`ԆA㽛޹wQ7`ط?̶_/ G@I4<ݨw%`Mr>D,,@-sLx*XXtF4v-y&R PdA"> B}nLZ+J?zT= - -CiF :&>RНu\;`Tkb^[(Ի*& uc ѫ -. 2'w<" \ -kSibQ!5L2( 7?3jġUۘ7-a~m a#RoP6kjݶ~7gSu`v)xciΎGР-0C\'r]rr_tr߻`6ƞmپx wy69j6gYr'=B; 8)qc`cri\{Py[[_q=?mJ/d& 7|ԃ md -HtmY(Kc8YV|v>-F8~4 cӾcƜŶLa;N`)!čfD7} .!>bn$<ʒV\ֆmɗf|(` 3cKRIX|6BcIiS~x6&Ӳ6祆RubiM22aA"Z&j[0SPXE?İbָAUoͼ_H%1 _={br@i01 -s_ TA UCU#]H"?n7p8,(&G)tH7 -ic]圶0#ۘ>BhQe\H-Wa(L<<ۚ}}4Pb,W @Zt&>w[:r֟X7Vl4/XȤL:\Ku`?D! 1͏J<"(ayM%$mi$F㞤%5Ss0(LZixiWz341u%D}gn;Q -+˚K7 7h -|KhYF/ =`Z&g{| V(V=Y|]Q} Jot-=_` -c@rrBA%by$މ1zwG!?ߨ]07Sm,rc>FlWd_uzБQs[Hް6jɩn5ah߂:b!Mt7:Oޮ9 3Д<eNΠ@01z -'6/DA9/_T^Zحƪ \ -O%; [&H0RP/4<8."\x1v -LRn$:FQf^V2_B~)nK PNQhc yMV%؆Mv*\`rUY%tcT0؞L]û"77i4 XEեȴrxӆ+gk°vFHj.8{I -)juSlhDN;Wf|:UQD>#2r8\0kL4PͳhI8]h& -6JgF]. L@<צۼ;Ԍ'#NˀVXm - }*66EF8N0R?T6 ܕ2:.`| *o\8 -lm/!zppc!2La`gf߯]4В,twF/))x/ޠTj[DS& -CoVQ:W2vi$a+H1&O8,hI*y\RtLo&;:$_[ hw2H -jAzI rǼ|M*~Oǐ(aoK]&^ւ9_$<^+BWQ|?^kG}1%z+[ڑ^bo`r;s>I%lTe!  H92)S#B7q:Gxq1‰vDZMS~(ݷOއW죓#ttb`;r,/X S FӈTo>8(kYyD㪔Q<%<0T7&)Gv -2cq+ Kc.cɎ2lctC<vɭ=` h S]'6?k?rvoRUD9nߛ -00%Ԅ5ʭRc,'C &1@ָ}-sstq0R|\eymM*Q%f,+]ڃRGXPhLㄑi į+%LXRy0y+2 ?a1\t-g1FG~_4$t}dW-d/G g X]4%: w,`yȲm`z…/XאsZ4 -(N\6mF)棻&@{P:ACd&`:G]{<·R]wR*VUKuJW# I } sD.Ȓ0u}Mѿjvcp6|vja嵱`>s@К - -nzb%';x>pȑPK^tr`G%Nm" 2"{~3a~}f5< P.L)N2d҇AxO[,?G0FBۻ.TOt7l@'vEH6CRy3c ZXo2Lj^gpǧj -chbXa::> țcQy\7,`P QyjXX- )Nwȵ7 6U#jrR0%hT V^#!'9U-ܻ̊go? 4QN,ǖ{l|&aӠ.;L3 2ʙHբ~oa1 u B,Uy͵eaT(ik!0C$G -얿7V - Oo,6n>}C$cG[Éx;ԛx3knL U{s1}REG˄7Щh A&x<.vTu4="}]"t,&aeYdN {|$~K.ހCRf{REnΩR1?UBv6fe2Ɏa_(/oOٴr\PR:3Ȉil_d[U鱱*@ߩݜ'ݎ6jxWf><\a4*>P^gq3vLSeeIYԁ~H%2,~1:K9A!%4;GehOrqiSpWRI \K -ݱ, sR xw8厹4GAx9%'kAw9yoGBԸĻdGb5 - Hp2_S6ީnK8: .P(Ro:V HN׎2_xud,Ybc䪱->C!1tH! O:×G0}v6$J|)q`>p@B/#hw`31Er%u(Q/f}]Zv`m -E!"hBR %%':Fxz܏5"), j$`O`J>q.F@`P +f4\/+"+{Ɋ:g.!as`zg:o F,z*&UzI~xGxraQ+LI3\ `@nԋI({.wm'サc7:ZꅣO.unL`h6b|D2kLDIJed0@ImC` @Âx*o͂nyZ}y۶?+$/|5f\f_6/9WQzwq`f~9('C,)y{_s'q'ˉ;,='yxz%UAZT9+\>< <|pBOxǤ玎KIaWF 08qς.` mYٿA|:?k7yr{}m?/Q*H?kEm|u- `c5W;p(&ognh mxSgm})k5Q!|*[YE &H59r"(!mT=B dV_k;^6Bbb3VӜ߸L;WCNonAj,ɩۘ^? 7kpʾ}{K2EP W܍N~V'j3)· g%Ig06VJGN}X?h1|qL=}~4"v9ps~SJk{Y#ܞީ@?zD"{ ' !>n\K4Zuӈ|(=c?B+J_Z'ciyk}Q-?IC]Jrykr3;cd`M@yj/ПgoqOr:SG13G3yh'#9ZISs۲uUK%UC{]t-z/R +[;8Ew/iiхT'N6Ht=[eOkFaAoKFZ \swy;Ib:f 34W0ߔa#D6Dd뺴KH[3}8 U5~ǻ?e\ C%*(Et^hx?D>p2e+]$VVXɶ5NBD9Sˣr=U_y5gȽw/YsDW9}:EݖwHǚ/%܆ɉZ6gy+4;`O@M#mbfVϼz2 s(? kP0R6GP*o~&HY̆ɟcFѷRfW}׏앑c"#n'OwNyOobp +(*iE!ZrUX_ U l;amcvE7T{X!J[Z;l=~@bj+/  +I^qQ +oTQ,DzO řj*#Gu//H.jGр(Aʛ99f [صiD5+e~_ dg f+c,u6~81ڭyaA:Q\e`t \B- +U<7Clׇ]MUH@p?kqr]Q3,K&X(!x";l4@r^f&ڶͦ"pw1s]`sR >*5NXRk`6KA9qB ѼPW$64OYd{?AسۗXQtk^o$'$M C +fqG-+q¢&b)邫v. r~+8b'{4C3F扡V-չ ё A&qjG(o3$JmrN^)7µ9ukJ BJg`u1^#VXk£CYoX[jQ9J +Ӊ|V;Bk![>e#Oʪ wˤ1@?;d@wN ^*),R: Ux F9+VNOC=nCr'Xmexz4O9D*i!S/D#-"|-VdnW5]o"Jv[Bq7أO#G@A0٢a`ރ*`]{ڶKŠ.c +} "\C Ɇ]8nu:iƝZ!]5 +K?>8L#%^H6Cg.b-Z8<cɘtu6Ts" ?DYC g!>*-2@ Ԫ2^ I IN?YsNK;9a`YOilemʏs'~mYǀG-da۱q,.Pޜ` +tCub'A^V{gAm )Gzkp ̢V7| ¶$CT>t.:}ރZd"y-}l JZUe 8J4cǷ۽C64lO aCޡ13B?D)mR [ʝp[ݺ@l(0_'y&;< +VHIar&j@Q҇:]aH1: npb< Sהÿ)~E}N[+9`LE0]yLF6R +fؠ\/Y_Zؕƪ=@cO?P8պ9= 7`֛R`/h?W^ .<6t2)˥kۇ +N.Pܯt\Bzs}߿WPdb:!?,9M40V%tF_?8 +e.et9x:G +[E5r{hE~Tpok`aJ +S"$/P5ڟr0kH!6g"kǽ|z3Y> a.OUS 9o9rG,# z%aEJxlDopɃ Bhp-/.eߕfBgǞ5YfrE{VD;90d͓Uf_W +Mre)(}𯪕e,H#< }` [ДEy*Ċ%r 2,do3"`B {+w1! +RώR6@"{?J?ƕnσIX-ޫ(4hD[.N:`bLuLՑea,Qv\^ C: WWߠemY>)5osuE'ϵ7Dc\c +{}CV@/0أ|j5f~P</y\Ik c~RKR<ׅ֋Ԇy P*P ;L=5oyAQUޭ=uȈ fYn[ɶ@λt>N +e=91R!Bޘz!?8Sc"$Q7V׳UPA#!&˽f;S5gCР6gAoPVuQֶN + \ّvDN8vRmR2d*3L E*aHq;u銃1*7A8auM":FG 2sM S|0f?1Y0oL}=pUUO5%;dR&rJ9eAnHMJӉ,A.:ݮuz1bۖ"}`G,8 ~GP Gm\"iV@$w WeY4˃ML`FxYŀkiN8! gݓs&v[Ȣ.+%$x: +xWeސ7+])UNPbԓe~y46ڥ͈p!T,g^ )Ry a,|4:%jUkVWU%%6R)ǭKNjK4DOLM + +[vFl)WyBدu18m BI4+I4P.} ѕ0S<޵`0L+" +到8q e:4W2C=itspnǠ| +plv4s%bmLv·Iݿ]QԨb@J"yϮwD2Q߫;QX* i,q}u4No ܢ)}t8*jQ*F3Тd!3WI'!+\d4}>IU!D +7݂VyQ5FL!d#QOHY鐭ě-|vdQm;aFW%y䊥)0#dFi1Δ0ԫ9|3#(;lS6d]@Fp),1| {;۽R5: (fA2g.k4 t[щ/\ [EсS?+=y?'~ C 8n ɜ'PbN&V_K!܍_fƦ񹣓u y!IFfB +sqhPXA6Q@Lתh5Ĩ}pZ@0x{J>EXn(I >fUPč`YI3T-1yYT +dh|X"̘"+dB -dsZ3 -~6\m7 ON7Lr N L6! 2 XcIgj.@xd_nk*l'1'ˍ1ʢܕ>3M}^>L,+Eʍ=˺|A/[ $o/,KF "$lmpn%Xa4e -uuKNt\6M(Q o-u)D~*HvS&󀣊˜ EH -4\cʵ+P\[/')VG #)Aš)\){>؛"IKbŠˤp [:2yN -"b^ RP%My͜\qhԇLh(,M$lC&Ī)nDZ.(l&)St45 ->"eRH<73^ɟ - ,q*``Y٤:%BxAi}@$HzI9*fW`ߔ%%aeSKD˪M83"زQ@X_7y'Ӷ|?;wQO lWGĿ͍P)lƙ;j(<)p$$ -AKzMHb#4Mb&",,6J]%\$l߈FofNϑnĝ8{ &eBw[اv`KC,.Q"*_ ֥ٺ'7~w`D ٙx. S/&ExU/3FBdϪr|΃H6/7/Jg)i1%^*2 OE螇9NY8ጰyɆ&fᇠ~坁0Hre0BHr}J6þj+vȭǟfxjj+Oh 2>iH_fUC&-ag v^ E>b -5H\Et8` o—,Ьu7UM0N -^t ޿sO 1>JᶿQȊEhmShd| \bM)ԌjEƃ힅ie@''U.S6:_9,n`Bw< ŊD` -MqeIIY6>ۯ{ۋ_ntAUN |.r -pIyZ;8"È&+3X?),f D#/}Zw)q@-tl 01({JD0 bhD|lwSof u7X)4t QUtYӔE"g#՘$("0`FnޑDa<%U_TDS}&bMF@ӳndd -iS)i dN8rt0`j cqCLe -¯_]VznmDRQE^Rm`D͈&F28KEL]c|^!\傅D0\Qdr3p!%9tJ4rmf:˖ -g`̤8)Int:,̔]K<-tX!ar I0)( 2Ji*jW."G .D;<Z-6mѵb)ݝùa8'tgJC'9|{@^U^Fp𖸣<]4,D#u5x rSKg ey2[( 7*ٖ/C#5B.[eX:+2`eє_XY^C_%9)6w62Gi=P_]"Dr*;v4 ;w J'"WK $FhHFK)|(k)$.sw J!M_+(U}^ܐ) -1JeO~Kȑ_8&ߤ4b5B -dȬtnX袄ˡ_xŔ]cHU MKbD1G%tLˠ/pyd|4g(.ShY?)Is陰"}d -O{ %b !9"dHR{AZץ%7U1R"+$A 0v=4ea]2g㌣>#&,YBW kXJK1k,p?CJP,I4:8@^RJIÒ .eiul尖sOԵm>wI&?#aBR{+!#3;c h7+4jGW(9dral*OG qY_;[# @)sN]miЅX h@w*}&2 "6_H \42NԙE}%5:'tq<V2zlF&T!|vĤDZ'Eh;*:0+km7؏CMmT1҉{ c}3wɔpEH}Be_-NEbWҜN4ws>9'in(LhKQù~H-SP#yB_F1ƱA:P^zqz1eFGzV 7UwY<D -#AU/}{=3DxG41ryabfS:븆Xq8[${ ' -l΍Tfp꒚w:3 -E@Es(((8ƶNc}ͬRU=Rʔ2@Ix5AKR.J>*w*Wҩt*rH; m:6~?% 9)u^N5N ']Ea}]awϗz#D(mUZjaG׼i - -ˏt>')Y!pJ& -LR[NoRCvToh?Gi~Eٕߋ, -F -%e8m۝|48aoRFFJ&Iؓ%H7K?f6.?ߣ͔>{GzKiO(λۣ{Xڒմ|IܯJ(e}t^Z纟TʒSB;HrA(I;ڞ^/+eD^suztcn-߲fnTm0ZJH_nhCj}>DrY7}=g'>7%s㊲kӹ.6q6~_ӫ[fϽWN2uZ~)sm?=?(èHH$IF:ST$IT$MR+&u* -|>T=/_ھDnz?/?jWN/Ǝv^ύT;뎂H$ID@t#UJ)Һw-HJ2NY| ;kd/H drڇ]OJ]>awdI&%Oa>} #n쎔 }fwZ} %HOl;Nu3hWٰ\2.#cT4NST:N%FSTB6\73PȺ6v3`w$NeD4i N~G(룵g++7U~T4S(s|s}קST:J"ܝʎQp%}: T:N"0FDƥ ɄL+S-=ymr+K8k9wO -d:YRP>7yF8i[m|gJccVG(g[:F~OBI9Jt0NJsV}Vma}Or$P.B%PG+mcemJo9+mi۽ZH7dѴν6l،LH>Mu+-nǖ-8RCisOiW@ZZmϽ[jy2?a*I& }JnX_>dc$!}fR'$eh -eZ?k%i?-OرYBv4> _رcKM6)"))c1>]2SsR\>]t5ܕ:nIc7E;|_FB7K\~S>7sr9ܤhsns7$ti6]mőʦrr)޼QTζFX2LK5}H|,hأLH~q?GBk]~$lt/r;j+ޯd[2 ne6T ,򰝊dѡӺ;iYHí^ NS~[nD0>PKK|%nakT:NST:NST:NST:NST:NST:NSIͿeo Y–L$mt2dL$ k?͐$(|HI'3 %v-PLzԶ碥[RZh}>G+[j]>7K|%d/%^#ƖL*HWU(kg!L(o{|? s?cҟG/seCO2M7e2N\rY6[fw,t+6T*̢"7LZHedF.yvr(lt iGMdž]?ѥ pqVRJ㬕NYiW,RnvBk`4n:f8ܳz.9cUR8p"XDa2+vFigw4b8nZ.NI%ǯNgo퐻S:c}KeWoK#9٧Ww<)wrm7?q){sn3V-u;ec8ڦ2])!*%egN:#wdkḯ,{W+cs;7*#/ˊ8k1'h]r}֯M]Bv=2no ǽO]6Sc?YRQWk(鬵cʵ~wdOkvJkJ_e_r*KjcW+ղhc8H};Ά[whklm-#Nwzz(ac4NF 97ȵ%?3Vt̍8v-mVNR~#fdw2:gV:%V1ѸPsRN2Bvi;dkZ:JѸ\-s:kw}2)#3SJ-^nR#֧[5N/8Y -#h\WNt:iiqF -үgtqre[!t1 ٽmŽYҶl%F&mYʓv]![i3?Fhl rKgol1ױ-5I[8ΖNޒ{ʈ8{ۘKw}ur^Omua7dҨVն{rKSz]l6lKv;%v9FI wg4d2"R%K-,d"mQal4M[!An!'qFMgvgjgZڮ|ǎFqJ .ZWaSH<8h4MP]h@)Di"J(ѴqqL>π >u߆]&Z?-e~y%mRBU -bR@]dUd7MWm;:CX\`V$pi"*ӥrdv봧tȳzeWncedّپe~u29#cWmyJ^gYg*'mȴ{33d6LJ(Kje%ӟƟNYgHg?Ӯ::c|RvIiW9Frw}fI]j]G,ai hRY",c>..bcnKr{Yq5\hieYۈ,.dR6o!W*夰%8ve]\uY -66q\dR'8m;ie&5mY גɄ8̚D6ڨE2p4-N0DdOdL"ڱv ;v.-I:Nnu!=s;d٦3IMg6y,^4{'!$"D@qMiWd.weNMHTEa=wMM"wPc 么K{wq.B2a4f.VI&ғ`\HzNBJrS6U|lctә4܏=iO,I D5CZ߶7=:vU _B+t홶M,)|'OH)#SsN^8POrl+6r?-.Ym+͆n %Zn)Fw:Bۯ;aԛnmڸLC6ڇ4:Bl!a~ْ_ms|Fw/rj8📖mCS2t -碋=!>׆Y}=at%dHvQJѥp[H6T2 2q -MڇmҰB&6 ɓiTφeXhtQX[ - 42,ӈڰ[eTX\Tpxgd:FlMˀ2b0i̓!( ȸ; *06:!!Ӹ% 4aXv񰨫qp@<8 0g;{kȴdž˸ PP[e*൉Bk( -<%r\jY'J+/f][fݐ)e!ȂZ(YH]u}`Qn, -Yф]K`QN=Г]ps/mhYȺ(°)Aߜ"i8"״BQV՗J(d -F]Ѩ -e0nATHÆeg$(ꋵ[M""( - -A.X@PJ+3XZqŬϭZ(DA-5`HCkt}+4TVqE#dսBBG ]ܰE,4Y6iZ iDQ؅". -.fI΃uG -4"%_ex6@梂sQF0sj2z``Y,-pZeT.5]l"!Viօ[aRBls]wz7 JR\Ynan,$ڮHglUaqZ 5IE(ɺ&gm4;#n+ uM#..bͬm"ȣCGԵz/i,Dđɬ9 -2ʅ8Rf,lqвMi2wڏ[vzg)-ٱgeRMU}8?yj_ԭݟ-zSO5M$)ϋ㫼]EڌYYݕn6mْN7J~TWGkwnt16ޑ/S֏ -'?lQK㪚ތjU=oN>=6-{)Kٖݓ%'+weղR)uV*~=Z^>U|LIj]R*+t-iZzϿEjO~8>KQ&6kiOJ ݻϑRf;U^}^Q^K]#'+wkOK抢Wg+"ۊ>-kUQۗrԛe|QLܔw/?Csj5Mc[m5}ڮPϛw?z?y<5ǫlsmiRi9~Vdc9w?{FqK֯T[uk?]y6R6<##WOcn%u9[NؒVWO]S[~˯vzdtꓪz7z}_H={^ʸۆ^]>TƮҷG#=g_VU=GRV:;2kDYGqݎ ^O[KU<4*~)%#p& -6jPmZBo]SFY"r6#Җ<:>6\&Ovq68*>*2a \ITVM KQY'q2BIͺ,ϴY4w3hE)$&ms^wDj8FmlFڹJ2ϦMξ3mlʰmWt5]nv=\wFjH m+mdVz>}ڶvR|*T/!,co֎& vE[UrϦnm%;~YonڴV3~lVJGH9vZ-SƷ<ׁuty8F߭NkʒJ*+s3r׶ղӟ>6?-)2nhJ9֟V61l:_N)Zնe7鰸sG9oe1j_FZgRR8" -ǂ@3!FfAPH`<4 * FvDGu9GkPh&`$2Kk*2LXL\LKA0e7 82E ,*ɃK +/XMLNode(fxmlnode-nodenam/ArrayeTurbulence;children1 /Intnodetype/baseFrequency2attribute(0.05valu; ,numOctaves22stitchTilnoStresult,feCompositoperator2(inSourceGraphicinin21o0%xyyid)AI__w10wh/Def ;4fractalNois4GaussianBlu1stdDevibfeOffse1odyddSpecularLightingfePointL1-5000-yz2z1surface2(sExponent21Constatyll-color:whspecOu2arithmetlitPaikkkk4313101MergNod12yBevelShadow44Morphologydilaiaadius1.bbd-5b2DisplacementMapChannelSelecRy2(Ay3s3ColorMatri14m31anim1ccumu2(noncalcM2lineaadditreNrestaralwaytotofillfreezd5beg0sfrom55cc8c2cccccc8ccc1cccb2-54CoolB14nD_66ernErod66_177spliRNrepeatD2indefin21 1;20 15;200 200; 15 20;1 1 2remov1dc50 5PixelPlay;20 20;Diffuseyellow;green;blue;indigo;violet;red;oran5Dielev6azimu8d21l1re00111022nnred6882(-12430.0.ta1x0054dddoFloodfloodblack; opacity:dsC35110GrayNË"IRCH  T%MV5yA!Q ( +1(  +@ 1AamMcr"+?%ϋwUiѦ,k?YbQXEfn`pH<ӕ\k[[lzGA7׏]FM9ag! A}yqb(394al| ::ʸ4^?"eԂ.dsz|M-=ԏFY" +Q^/*F!Je}I9-,([dDcgv$#A(;n]ZaZ'j]-Fꡋ X;%4o>D8y4Թ"V?i3l`чɱH Uؾч%s UK%U]q*Os#e)X |,'" Tܧ1R,a&WXpFP!Hs2WC!uS拧o!h%vII$>Q/NЯߖLtw(*,<#0QNԭp#XRRQĽZ֌*.&_ږ2rرDqWKQg@JƠABy-W08H[AYkO@@<B=&J49`[}pl8 J:z//ZVA6W8#eSpS{D#%%֥yrFp8 q +A3kJ3 d['[o]q*\0$fEs=OTٙzg_5JbM(.<]9G"}kDn䆪ك1!uR&prޒ/VGyht%a`*.J* SBu(IIp֧a>)Q('`KPc]0xI >`|7c??SoȦE ^#`ه3P-xrم4fo-d:=t_#D +wض#%/ O[HBhTKS8u-*h!D$A1^;/Z;t1A=a%<7@SR"{NK{PU"e=`6F46b4`diy2`NC CH3Wm-Bk-090.u/' 6XVkL[N,5-]˖I zMU&`'"R&&Y2"M١-`o?9ye,A6Xa;0iv 춒[&vÄ*"\;G-)nj" qrhء!#B?e@@Ͽc#rGi?G@Vo`_Q98+2mhUݏ(p!Z",~)u:гᢌa5wB˻#'?${"^{Pi&HrF\ ܦZ^N|ftS&kFՊmHAgwE(sT%Q"Gݷwc$M_ VgQW W3\Hs޲>sR:axrDzIh[!1%%tIW0P%qr\j&{fOž`q'ʹH&b%dq`[tTiA`}}腝̈$.Mvtʥs ް|qq^ 'eG* +8[nRbE\PH.54-JE@Ejs(((#ߒ6wa`O۬K3#J))e""oux5xՙt&rH; m:6~?% 9)uZN5N ']Ea}]awϗz#@lUZjaGך:+оHsKgDJ̈́,&e>dJ5n+sz׮Nh]]s-*()}:mwHㄵmH]SJ986~%!sn RM*%ϯ$Mv贰:)U3eatnGw%i9{3JYs?*e6d'U$ᔐ㣰{, 4do'a|WJ9"W\X[K㷬ٟ-Adg!ҟ6Wyn>w禛:ڐZ/"uMg} }͈$̸fi:ֽ& fIm!>GW\mͰ{d?R~({fQ%I:)$MH$$u&RgҙHԙD$ΤKL:PџEzSx"7 O+EcW;GF*DZuwk$I$MD"I!IbFo*Zhi;H$i%p>uRV)"pǏH$1"H9CYc|RaͰW%[%/"(yc uj4!}Uewl6[eO-F}2As7dWdTFwt&̦3L:Τ3ѓGFCHLvT=FY5>Izc_YC u@Fg/08;M+>\)T)I3L S .Bga8IgL"EBUIewu!UZI(8D0, l"*3dO]زRѺǶ1RʕJ-|=)WfI=Bma*iM[mYR~Jlm?R +%sJ(ve8)uϱRX=Yau?HB=2MKD萝csӶRQZ -g=mW iF4R!2CesOiW/AZZmϽ[jN)"ԮMHVr*G$L;\ƱetBh&6;OQwcXܴQ"4ߋH$E$IeF8p"GepFܷAc{lO?>;vR~ӦM_F$_JJ;cEnvHB>G/̼(a?aOE ;7w[ss=7_B>͒>ײ`8'}>7ss>Z!OkO쵝)Xc߱mƏu& +vF7[rQHg'v> i;OM+$4?٤q[v<] ٨ ʮrr)޴Q$Tv&8"MK3T}$H||dؓHH~q?GBk]~ht/r;j+ޯzD;"sa6l&p?Ոs-tUpg2UU$"PiΤ3~[D0PKK|%n݅]L:Τ3L:Τ3L:Τ3L:Τ3L:Τ3L:Τ3GcǚH,Ie;*%;DUIHI~!WsE$QFOfH#J6?7;"#mEK0>?|V0sպ|nʗ0N6J_JF-P5";ݯP>ݟBPh?n#3d~?_bˆܳ_D$8o\e63߳m̴#ݪ 0m</0U1r>>P<6I ; +95ڸǵ<5ڀk:^ݑ(i8,,RnvBky٠\2nf8ܳz.9cURx8p"$!2+vFigw4^8nZ.NI%ǯNgo퐻S:c}KeWoK#9٧Ww<)wrm7?q){snd>ceRSm*ٕXRRv3rGyɸRw=8ޱ{s22q%ׇm%dݳ*cd\pe3ћ;V%錒Z9֮\N}~GvonN]![vJk)G=vZ-K9۷lQί|)F2YtGIG%dpsӏ\[33hKw;yJܗcrnl,Ǟ1^8nFv,siS(mZqkڗ +}8;'-#dwJ!O:??{ONȎ󩔗2HӮZt;eSF*SgޕZjR Z)IeGZl[Ok<_ڏqFzɸ9tӦ862_2:ʶB3J_8{k>OemKMڲ͕'XBZgK-<#;,^8c[v1I[~8~ΖNޒ{x8{ۗ Jw}ur^Omu]c¨Vն{r#+Sz]l:hKv;uo9FI wg?we8$D>#K3R"P($" vIsUtfqaFRTDN0㲻2;ζղjc̵]cwCŀ4*$><0jewEiDDFиHˮ& +7ۉB>#. ¨ˇB& Z?-e~y%mRB2uE" Mq7Tdݍk}\lд{}ֶ3d !p Gen@4TBYKkdiOg>'GJgoW+Ȳ#}2(dsF)Ǯ򔲽ʳ:|TNڐi;effԻmNBQw_#dSm]:pwde~znn*oZv 8z]t|*meP"6@n$GVBJ .FPaH"u]ru\RN +caYɸAjUυilҰs(."q,Y76ҦL5m*DYUM PmHX\s]`WKDY~S+Q"v츝Ž:sJD Ym63D$m6Nrh:SIڴ*t.0S"JD]%4]]mDžu86i@QXu] 5aT6hDFX6Y7ܔan"\Dv?YtMDeYE$ғ`\&=IF'!U~[ #a)H*{w1:o:0O{ +%/?~քh2uHۖGn_J9Kh%=):%d )Ezdwy +'~ImUA#%KmِmCw1"^vD"YK#S-ZߔZZh!u3ݰB~]zs3S؝MpHFFR(;ZGѴCZk#v- 06_jU9glI5=SX?]vwH )96R7C (!CжRz.B,ВҡrUõDxXU9]~^QUy0 v?s#8kZ$6ͺ,iO!\ʜBtUc p}T@!DZfQ,@&OY,dewVmL@QSh<$ c +Uڮ 8Fq@Q\mqE0 +8tQZsD[A 3(`!gѠ&(*w,qUE6h& ^PL$2yF.PFL$Pe}U.^k(J{aۅQPY?e }@MAD0DAsڞ lhP>D0=;ւD" ?2 ~2aƒ1pU!5YQYD 7,LrqC* L +/06I/CU[v=קSSi̓l4\6e\6u8kmvaŅ0 ׶iky&FUJV94u5U7s% +aUͅШ\ +6;H3~m8vx8p2O_ifUˑM6вio8 mڈh/+a&kBv`CgmZʦ 6}P:Ԛj[yT O]VT]6LFaM8UQ\3uP\dw.XIFM8EX^+] g/0qw,L>>6B( +ܧ>&vMFm?ѥǵ{)pc}\Dr8V}*vi ¨q7u5_]KKAWp7@W8,k@)SeMڮiƲSm(i66qת@XPMma. }0XwÕ\qUݶ¨DʚBHSi.I^+=Za%SP[5j]R*+tz=N|C+h"5'A([ʵImY#ڟw9#e;U^}k7JJ_VHM^@'?7>L/PS]R:})MiJϛ\Gv~_o~7e5禄^%zh3}.AQ[_?]G*Wti~&_۟wA&]P?yTg[o l`4=N4:}N"(4^TJχuKL0>لy ]U[aXu7C6\fip"ֈCضa{MF3*& |]aҙUщ~D(^i$rd4&gߵ򔗌3r[)jtV2ԭs}iS:ٻe^m~t>OKfjWӧmKi(˧r:LKor[?jZl nd\N[%l֝ΎH;VSdMk8Ǧmtl2Yi|s#P\Gd _2Z[Z,2:Oٝ28#wm[-;iSRKR:+6ʎcieSϦ[+ҫe]m[]G.=~?ޗ ;wi}NVOeuV+%qVRJ㬕NYiW *( +*B$d6,3Qp !㙍ImhI=˜NP& tyKP! ,s>e<(@`j·3H4 Ր 2*@ 7S=L K/0\ؐFLT`TDy8Md]^u, 8?HDB8vADLD& Oj +**6 7aRaĄ  bD$"lL\AQ# +D$"`|L(.%4H0 IDGP8vB4`8v"D"#RY&ɀ31QyQ $zAvpfcm|J O% q 8 F.T:"`Q9THx`ȕ 6졍„ha40`FA + GH@-kZ6c'ÄeF10d:6llH {H01"12(q)2V!c#<2#HzX!Ha` ȉJ0•FCfÛeLPAbL +:6VeJ?x9@iaQP|A+^/DX`{SlDiM4 +|Xci` p2tXP@{Q(0T<A0-@3 L &&3D$Deabzq Ʀ0p9@a!$"yx& +a< AU$"iX@XT % (# H0IDaÀW .4 0k:' & +À A1 I ~0rG ,3e>(N"נL*]l-xHp2>H"*L̊iYv@CgI`eĂ2Q Lthg$W <A`*z6#$@6H]ja4\d\ `TL`P4P36"D$ 6&/%5`'S%Bע +$"86dB{SP6:`N*H,7mLZ0-܏JV@DH# Y +@[ S;܂a 886aBDdsĂ%Ka@İ0H|xX1DCf Zcd2C A5%0L"@9,`\,X9Qр@9U@DeT 4eDh0Ƕv(,d,Ӥdn\ LD 4,00d |#’x P%}lX +L$.Pm)1Й̓ܐZ,P@ce*hb#iaZ`46˂̀+,]&|:c> *@$ 2*l* +D$.No,0 ͩPŅ D 7p6@Y&e@Y2`dapAaAa8h*FJe*V*TP\T@-@%> *4mȸp lO"(%DDS&\,($`H>stream +ba [ @p^0mÆhD$j03;",00LI '*dx (&Yf^ ;2 +9Q [< +*4L>u)dp`,H63A07qduM` kqmu>jQQ7Ӡ0iq<8.lLŶ]؆qp<8 +$hF +CTɮdžBQ$l(4(UYuVaӦ4nDSûЈ}2*K+9aj#gMuɁP#Q%Mna&Ms>^nu0'Q>0wMȍW 8&MZ] 2>jۮ&w ASƹV!C #ܡڴKj.Ohq)tlUYȢ0eMxy)`{~.>č `0!,4@uPhx_`0 + +0m`q(h|\V}*: + L_ ǦU .(`ҩeRD0( dBA͂xm^2L:#8 ǑFQ1 2H!fl(|h4EC$~޺;4/kcsU;t͒6mirDpAIo8 ѺjLfh|,BaPO{i(c{$R`/0 :/[eUPQQX+ȉ#4(CҬ8z͚Y9ȰT9I^ҍvA5es#=syR:-R:*~gnqW`iMMFh=@"\a屧hΞ 6M!g+KCl +@h&n =DkeјC\- \#`ND 7 F8uǔEx+QH:JL.]f "t'fǔ,I#I (h|32Ke"S.|r+HQ/3~\| +zyo?srUV'U4 7Ps5T<3,fŞ@|碷$1-gIqmN{99dG.YpOqcbNQR(>e i LNIZRfp fWMvU'81 }DG$4xi.Qt 8'm5Fuu *|>/l^*32ȡ@V|Q>]\HUV [B%|%3⾬@w?L\YY *NʙgY#/ZXk><#06"*+%umT<s7+Kr/i)b:*1Dk#T1s7U(RS67*AB%5&8m+"_P1]&0]~d@SP(PMX2y̹s8;tQ5`ԾI sWT +-"ctz(D3}!2ҚE F~|n}ASࠎ +:*XJR]J % +lUP2^i=݊vM00\oohtlys~;L`Y僫5>6 ~r ]ڎ!~1 |j9 ?l Yv9 1oFrf}wxy_("ZdXs4aN Ƴyڄ=x-鎂_rqj.[L$h3F(,ii  ϷoX(Ȇ؜ R KHЅƈz P0 @VjљnSWPnť3 V^Cm'A:҄l9q(˕o3`{nq4~ ` +N~3.] 6UDPP +K!ll)H=w!ݚEFFB 1u651m }5$VO!#aco돿 +;hhW"4)2)y6]Tn5-q@6U_S©H$&tWʢZ= *@AOnԩKZ+0=}g +/MֆrGV K e'ș +ک \pRq{/3hGZ'b$bafC8$#ihJ\Br.+Mq + P5 6C[|RhnCR[~#x< .Q ZQxfMJLt"x'i: S僒oSS%_T:µ Fkq*pPz "Qesƕ=yRqw-RzB#+->dҼ.0fpOH0$<^O$̱li|DUZFʌٮWKhP9RA fü u@U+M-UC겳:HUlqB.jk &80®6Ng6M +:qhi 6`Yen@5, +% +}}8@ԉѪE=y[ָ}0]3@c Q0ޮFrLL!'&tJMxgٗzt.Q+թK0X pC>`%vISRR)+)PhP1Āls d{/3vz?A{Fv{[xׂpɊfmP23csm1/` =|SEjbwsm&@,̧Kwdj ,2[ @Ri(Å-Խ#|I7(w-{8r!#n_y#1PELPHu?ދuwV E%yZi&B6puJ%sc$қ(D$K+OHN:DB%~{y MGB0)Iњu?xNeCDBL?:l.SӰRnvMFlZˮ[T*IA'On FjϏNp%e3~}Ks$]WgNۃ9f^T +4Y7 /pEQNpʘ2ҊGAH\lDGΟעԔ"pSe1(XL{zq*a߹_(tIU=UԋO5:Itf\4=YmS%RFp8$[$> s R8Bf]bU"AʉkP396 Ґ I ]~`Ck@~C#U=c}Ф|ԸToJ";HО'zcjЅ:ޱN# ėVvEC\{$uSín`*o˗WJk +κ9+24eրIy(?RD6*05\I'<1Tf;ș3G-֝݋gT=hiƘ1~tz h[fO4`:6cw#;0e94 ,ŮqxvgA6iu:.Nb{J*G1Py6,M?C*oAN@1TA)<A w>v6v1oN%ji8'D"QiO|0v&:Eκ4 ^(ӧwI3 ) =j N +ᆰՒe8q.D+ /sca??A8ś$5𚵈4h. v)߽j$2ײYz-' [|̸hV?8J5+爖@pq*QiF' ͌rA>|¿hXނZFsŬ|tӥ@:2+P jn 9꽒=PMC}WQE QF@U!x6Ꞡb0Ս[܅pE`f(c-1Eh+wL%ۻA ܆NyCxP7A< bk1$LE=pDVwbn<\-y߶MQN_Uђք>QeIڧ/sћ"7a,f>l܈NP>˽-FtG.+u&#+ bmF.~1hKݜZ;UƭstQI7ä́ +A}| >1ʑ?my3^f52|uU`t + r19ZġUUTzW2e׏TfW2M\xtzG/Lв1hVuթ߬_o3B) /}휁U0 +](?QKPkP5 ي~*D$Z.ݍWŜl0M$'8wU31+*Cל Nmn`\8[p)lIFXX>c*6wOq29)q/ +ѥ#~?ڋYXp4rty@`x-"PʺnC̯:&9"Fh%oM! &6JRWneaԥZnItr՜kؠ\j{^SE_<1īOK۰ F;C~B-`R[h3 74@.}5 +Ĺ%,=Xp྄͡3MyPVT҈GJƧlB?LXPЏ19.x6V(ީdLb{x=7<ۄFIHxF2cgq6N ?=al L e<QJD )Yu޳gj1L@PfMQc,Hф 9CgYC`!ŦgUB5{Jbv&L~?h^b/4'M^wmѓnI66Hn"Is XC2GfQlaK7hxl"`B-2"Q#v|B.nH yQVNIliKꓠ! ;SiHGRN + sije:)۰(ԸGَp-ްj?*޲<3'D +rz鰰}u}H2n,aȈ\P"_]G :)̆E/1'Df0E;3v۞Z37cG SLIM7BTٷ8 DDXTlҦ"n|YY-PI85+$Mc0m+ߡZЋP#FWF]XۤU!Wc cR!L2gۨD[/0p=(oGܘBseW#sI_O ]Ce[:OIcBI4S.dD# +c=8Q2ZME_4iү-KMjh*psR/P He?C0~䇪(󲟋if+z#6ݦhI+H닷2%Hݥ 8XWLs> &m]dhy䡠T&<`0X\M X/˰KItqĤ i'5w΋k^{P2V8c"PnH]"^P&(8u&GrA]ЀK  $}iq7~OZxykU3eQf&ª.:E[Q?1 uU#燔Q[uEG-\qHVGô5%>Dg7CUDQѲap]~=-oZ?4!ΊI*u[>AjoY#6P,O*ȁuLl{NjuiGezN#&G mxζm#$N}ۍp(s &7-0䉔w4soV YjmZ 0cT{Ä(ok7~IOP``4@MdAo 乻Q B4S]ӌ0zwI"ΆUF@nDzQoBdP@Y{F/Z:REɍ  +L9EXn 긚7MQyH8,hN}el <'W7y:&p:1y%. rap2WIWW1[8gmֽ _Ǒ=rC犕q [QiP#`UED0h!Q\F$VT=R%EBe:os1bk[ kwS?XJw/}BLQ^_ÎpeAC-W.?c[u]l`ϥF)PTgBĔJ:}WU7e*!ldzAB!xs3qXn[s˶Ikjjٔ}G +x7F"b:{][%_}9j85QZ|xnQ4N|5g +'6 ,Qe&H%Чvn}a: PFbSCTxX~+&}W'S݌l.♈r^hK^Ufi)J8_8UDE7Wt ^uLU~s|T͛~VUkXDj~5vPOf*qvIuzLJukFS +y=/*Q _Pj?Wz@#8~Aғ;_ȭW[|XǬ-=?Y2PiRscpQXj11)>MTEB]33m/t=F;lcA.Vǎ_vqn/Yp;[ 譮׭*CTﰲe m zЉ恳̖d$ _) sض\~є.Ⱥrnɼ$!4n(E# o$8 '&$π&4L!pQ 5ۊ +LCaJH<_DfYD̃Zdb%\t $|R<ҾA7FF'Q C 0-[&%%UV `G!{. . Klm%A]f)7o_~n̯shOuaQ6eHFukHM\KKe +- $hK=܎V8%\Sšɢg$h*uᶕ` 0-܉wJ3lf>>hPS^)n1az٬5L% +o ?ZCMw{XP̹R@ ɄQj-X)Cq22M{\F^)4aɊܜ8QW--&F=cښ lj߉Z,z~ACSCvM[H&T"W + d#lk|j(oA$ucF4|W~.]1Q%*5ci!nchB&e #vP +`O%a[W"a}cЭoZ夕s|Tc<~/ư>HuˢH6 ,gUc4hX_x;F!SW<~SF.%KJZo˒p Yhl`ASQU3;5>mT3ഴdnDQpH0R`|f@Ex38!5 K!כcKt.*&~حjdCDWU&B6*ei;cSz"Nݺc ji9 lFb Y *> 1jdԻus wxH)$F#xI!*ztIX\f&uINfz'`˕fIbp1cF+DJh00 71[ >?܈\`t~zg:{\▕U58BN̥)ciE+H*R⺛\ɦا.˜߽ B"3|G +o$?<]+Bk\;#Đ?d,iǩO܋rZ1zv/W{c}V `ټm7 !7o6.幋en&BJ~fJ6L !SyĂb]3ٞm;07[ -0M8pKACBiW1W.-2㬲`(p@ęsDVr}&!`boWd+Qޥq|3tj[MU\(~w/>g]Vvrj̅|p x^۴&]'Tܴ{߲B2:U1Of-(ُ+)dpd%$Dσʀ9zXHW,:O +MgCS +HJ5V FD5Yվe]u@.6a &}sAw-;O^$i@6 zѧv7Y(M;\y`M (=㷷=2kP\ڝ۴ly/g ׍XAݫвjZ_aPx[x Z8!&҂2I0jd8$$W"X򘰇cP{Vvb\ 6~cZϴĥcRɱ@&cJ-q43."?Pٗ*7c;`i]H׭Gl*v +5HFi)]-6ªH̑4 MmH*~A[ǠUCBK(] ۧqCD]KO%Ǩ&.N7? )d&S@<J@;)jTVH +<֖U+֞nz0/6t8'|[ QfN"#ҪD@eEϦ-+0vWG)n:sОt$h/ԎxOQȻϯ ]jN{zR [?ҲT56yWREqڹ@!\ĥpKOJ(y2RE,zAM|vh*m{z(yE1:vXҽϫh'hfSNO!>jVBbDGH- пfc!Vb&w P3H4n%f2Gus$BYoWx fyQ;{VPo&D,` Njkb$Ul%44X6Q +w`điٿ&L⭾aڝ=&\_[Κ..A#X5_4y1cxa6*PD3 hhVjQljD"44 s}sf-Er5q92Vh~%l2xsab3/ e[`/CC>X@cޑіO  zbrPc;Ĉь + ,>#6D:E)*`6X̟v򓔛l]2FFZ_:M0#Y6@@%ԟhd94*֋M~``{y}8-/w|]Ux@Ga?OkDu-ET?.`%᯶@^o ͦoHDq1Lf +s#- 3erg{Jb73 :~D7A+OȽdV356Yp^I >J E.jAJw>it̥`+ ;-s )?p!'v uMYC+7|\"kx-G@n/ B_JyQ4 'PJKQHM Ӝa]v"wnñqsgD)L^`l x/V%5J@ؕ&;M.5$<4$I T_Lr4*-rs6? LHNz5G rc}Y* _|yǓ;NFdKf"(>ԬGC*7n e2sЛ\ ef*.Iq]gnPܑzwFoD]PD :VH19&<\1:X"8Iٷ<w&cGd8ut6ǚ6g68fo\0btB҉YWE+D 8^KtO.+MdX 02*GJ%xW˭Neqoꗧ3 CIq b2&%bt JjA[rfMƉ1'e7ECW˹pi$}nPN;E(RW: Yb:wegWA%*!{3XL .vVPGoXєX$LNGmʘ,\:ѳOTY=QjFܻ,%@wsGWʅ'YJpAP%-.9F]y0Z}D[p5X~~P(;KHMk|$ ޣ`Wto/{[^X &ű#W ՇŲP)W;V#7^V ŝUAo v|44Pw?w"Z-HyN*ݔEzraQEh +,.[ϺKJ UOV9h*Y8m#.fm$T*9LwUXps9Rih^'OCJE&]Mi~Jbϊ"[J]\f0Z d fK7UƗ$B3+c0Aj*B4{B] +ng=z\0&pI\'=ֲǐ ) 2 m qUAp('G&EӈdA) j5&AfL$h} ..Cq ޺9<;YdI!M+ P[`Iђ qJ;:Qis7An]A3fM@[zpҟ4Β6Jܪ pMĭM|RlȺ1k Ȥ&p48R:Ld +)&D F$ֶWV֤J%nF3&ȑcH)S#aXB3$pe 9M!}|X_eg-*^!U:ØvMѕc/BbFqH@d갠k1)0tcED6.g#9zE _+[m ;EtƤG0٘@){z:x wYK^?Ekڪc@ޠ>CXGN8PH?~0,.? V!<@p^̼z)݁Dt 6jDG&ƒ3.c# ӝ^lo+3tTI:GZ3$ +tԂr&e@:߃)*VGR +t{]oݲֲJ>N(2ֺ|lcr:9 :{'}0ͫ +6GTW +}8P@E럠5:N|p4 t h4nt2A*XMl@&hDsv4Lk"k1}ew;A2I/-)XS)k?G (C)ylO."4@Ƴ䆑l@;YB;^#' 8\}o#E)0ʤ/%?uy? w%MpQuѴ [Ptkyk#!T`B$yn,ъӠt1qj[)n6>vng{B|ӠUXg%rȈ*=b CG l\P$h2dUmtnC7@Y/1AT(uȐA\jO" ƅ0# rhhb rSr)Є%Oزg/yٷo X"y(w 9m1] +ɗ +@@Y{_,P "id(G +DBA#rt0ʯקudY(CpgkE,>_?EXdʳz7MMhr7S-qPFdIw d^hwZ3NAiɚx&bd1 C ND['kHTB+ !,(1}*&>H#@-^@U _4 `~Hgȿ i | N5M!yʤtׁd~ƒ +x5 ź1dtXqo(Zaq(ABK2z|^Ȅʛ{'dE>Bdb}hd(?nrrs3xBn=DDB{ӠdL4h&܅6Ic8A84|q'{DB׋^ q'naY2Yd"ۙEe":"ᚘ5b Y;b4 +A;  3JV"Wm:B« BIcM#TuBOU%[:r鴬~feR/x!):0yK ƌ9$cCi4EM#)igjmش'5?^%<#N eHp[ڕFD`y\$X{72$Aش'tqYtva}^_lJvW?nn:%Տ0m`J{>i8_'s%ÕЦL z}l͈nte kox&fMk?6 >6#Vw_Bi}Ss:c1Y1cHlqtN Z"*iyYFq~<`~xJB/MOT&k7NWfI 2~B:nz$-:I7w`+ a} (% }.ep/Y11o3߅~g;&U"t7ݸIL|aoStX9[z<JnX^NO9ݧT9R:i=hiZG{Ypn~Iscn0X|ψ +_%SJKnUQ)Li<`<)>CV'bqy֛|+S:o/U7MhJ&f8&zv#(!{BP#qN5 Ϛ"8W"i;`CJ%ߨeGYUq+8xQ:XRCn_qIz+P~2)O|i 'C*Aғ +K$QiC6::k*Wh Z6G؍n'0:pΰٛK(.C1I^mS oTB&VӍ8t<wگ +ݶKRA 5~\(\260s3Jxf|x$#2pD|4%V;UŢ;9d8ܘ76L=X=A*SW_uj-i|Lt3FwD$oK#[Ζ6Jܬqi@wD@ilHzcYB[VY ^u{t/tlF\y;6ci] -fJ~B| +ux7e2[yX\j6ĜV^e<8f[[+?p3az#S$! *ߴ45᜾Dj:S7Hlh7mn{J86~_S kIG//n"nu&Xdx6vwu4aYMWHwwo15⯐GͶ "qN[ 񗃢Ï=)mݴRz]V+/QY#zGJcL4P"W_\J;KFnSaJ;%2?%U/&lf뛚U@oivڟ`$90Jss(>V tg|ǐ%< dQ7gu[ҷv07hUY2IJ"݂ZF&u|q3Ö#flir}rH7WibMHܖ-7EASyʒ^eKzi5O=G0>T~d $wL*NɐLlbq~8Z^/ US+P %W̋#޴a]|;Pe$denZu/׈sO'a򮘬ͫ^ٻt \i㒇;%`[e5}k@yn|'_K+]H\bs>AQ R ߚ`Jga/$R~H7Fu-0m} yxAUwlYiFwd!qJZcL\6J^guQ>ݓz.~5B?OI^DhpW՟}<}fJ?n`ܘٻ5]qwd)'P˷ p2KV3qg%'Y.LWAQEuՂ7mW}<#^uD NiA,ze_n~ Vn$BɹB&nT8M#VQ +D³s!;#vnf 4ն•*Ɣw cڧ4| |xUl þWk@ͫ<}06^`z) +УQaWkٚ7H: EQ1Y G.ait%i"V:xy8I[76V#sCrm8O8̂xPt7gt"ݬz&X049 b3v3Du3H[M[ڼNkba~J?V$*0Ƿc(nRLX"#~EW>F?kOq#oͫڕEM]?%73#KDlDl Rr֍nC͔I^-=k%-\q MUXy! + J{B'@5oaD,UR/O"?4TX Ri f 7Q(] UCQ^QM{ ſGhYEMNq>͙oX +R)=Z3?yyl]F<bya^ꯅά›#cCi+*hb 6a%ks.k-Ζ.tNXaUg8%:yOjt/O=p&>˗Mhm._9|%T7K@մ),-arK=PnrHͮ+R+ g79s)}hhepT˫Luf+ с.[Uӓ k[03PMfPXØ6_=W]kV,2cJ6^WTJ38"8sմ׌&,bڃ3b1[e'>A~Gg#v/Bc7Y]Hzu 0lj2*S!W; YW|<9R+F߾Dz E%0ʚcDp?cr!aXFghB2DmEJ>%?B ڞ+[v٫^'ƓHenH^(>_[ZWmc8){Gʒ>Z6V {eGni,ݠؗVP7T҆qiAY%\(Qs|< +L*Xp'Yi+n[dy X{]^yD}u#6 ܰ _ix7Zi#kbq&POHg`!?nv`6ZM:#ݠZ f>y҅4ãˀTRx-c# nP2p&."7\PϺ҅z+y*BjmJw@"!bk2qʠ]| _aQ[l~0׫gͮX!~ɶ<;R{ U_V$3.'x~Ig6A5pvVUblHimawը'򰘬`o0V(%9PۨJS9`|n.V$J۵wގN)kw联̈́S%`G"`fs&p96Xs ͕Sz[u XSOXdhqS5@gއueqR?WhlT;1(VFMJX?̝HgwiwLe^ k5:@ a5hw +Q<J7(VBY#`Dݺ>m/QiBF6c +Ơd86Hp|LՓ͵I?Ks`;K:ܠdxp+^W-=.n⸖>S/; wYU' `Z a^/K!ap34A7[oԙ7ճNѼ:AbmNSش[(Y +/~cāAܤ!D+3P49 <~7\W; 4hp +xom|b)갲[Rs&/1_Djsnh2l)܂`jp&OIS(ѧQnI?t0! g Yi?2U$/༎毤1$V]HYO#ѺH)ܰﶴ-qZŽJ72s[3VÕ:ʖo,8svD]["ܱi6܆ⶐKl6g#vF XOg܍x?´ V'*DQC]Y(n~9#3)\``{f,Wkd)ןY+i& ÷Pz*}rPV>ldXFn7YNUF_I3z Dⶄ$-~A{G+}6 3t |MA Vg5  q|tw'ؽP#].bU4]@]-bmO^ެ*GJ׈#jlJj+\Uհ%mC*sX0ݒD&=!J}T?͠n8gҒ$p M3 cH:)bSxO,xUX&JҏZ~BR|| W}nO*P#M/ ,W UiAMNi9^~dW曹6Lo ~VV 6׈ZM- xӯ?\IO%҇Vj![X| )'4>*{%y6m&Ho 4ӽG⎰; $a ݔ8K: @ T7k +j AwYqŸ)'YA(A@]iCNDTbeDwSS(0s iIiX)B' Eg/wIa&rIݛGZ +팵sY|z]LNĪGgݵD Mip\CQ^"QiNc^6y7~qPf JR7zb QJO]4n&N3oC5mJu)̨JbNN,:A#&o!]eX 3⯟c^O6I!ȶ;|Pʔd뀃-N[}J[`Y R';fN9x a]u,:3~(l!pt#ilڿ*KxMA^/lz]m<]U8*8 +ش _J^VPBke~P*]B$͘\V>d*4 "%Gt;x@Je|aQ:A^wpWiMΰ]%t~k^`;7ksF)u--[%-YX^҆ 2^fV ?X, Prks̊߂M-ѧ_t+a&>.t +Zl^42^2g$V}Ijڌjs&@0jD݂w3vm35?e-{v]$*8w^;W8(ڋDn6̸p1$9l`jdX{QJj7NԶJخOwqgvqbvd:!R> :"SCp cZHFܣ^hy,*.4 F}:|p9q6*YZE3nM9O + X 1o)({W²[-hkƐtų%DwJ? +sׇn{ [mՓqx \QHxkT 0 ⫻t*hk(L=/Z(H)ig[:DV-#`u^|O5>3HZI7+> PW2 +%BJej:[Z3 ȼw t^ӊ!Jf fa{2^; o(v {8qSݸPYC%WcmvL=$o9˄/ Th*6ݔ2dIw/mlO1t$> 6: +W3 Ā bNDtqv7%nվn˳Aq$@WQJCR(>L/SEpj\ԁ OX5DHk۵Dlknvh*UƧ!fN,I.3< !׬#UmXHfޥJÕZr6=};Hf^1)Z6qY~3@ϭL4)Mli6kb;H~A p> +Iy$~ؼdT-="\?gӖ@ 49&)M*>} oSUTќ?rxÖ\4]5 [z< ?NWoPoF&Lb,4ˁAݑ +ε3 Ur큜ؔ_?k5%!< IO i +$dqI[Rˈcކ( 1mSEF͐n&2~\="g}N#nNg`[HxlZ^߶<}1c^4k&jV"g_]ڲ`c@:)ڴx͂FOHZ}n7m&B҆ /;ə4D%7ial6;TD*b8 Tj60}KN2tG@ AGRi*f/MkdUJ%<4@Hwc 2SZ_}0~ZGOxT`1crvʝu_3>Es1/`* XJ.)ps zio5iۈIW(n9>^wpʍyY|  \e_H @ЀXe9矰W.U)Jg0mz}fIbOlJ{Yܪket4K&*I)6=IgSgF;DҞqiFegM&cʩ!1XGzهpi2*i4 +lJ鑈A0tK"8-Mbe`Bx[t k^/y8z{|)I7LؔJQ$Meo*>:4m[^3歋3$∭h*%".iTXPL`f7$yrF^p q)-L!%~ܼd*>#XtVǴ'E[NA z!N#ݸm?6@9U/*:w^/B&+mՒjyS-ܹ^'DxDlM n9zR!0 )/x22߁.n^2t!UJgƈHqɭKWE>. $ 1$+j,9…!++rȃ{j7HmZG戵eUg#`ѭrPV4n`紇jrHkVN@ir`~3DR@A=T!X3O _#N +R&Rt/ˈJ?ƏKdӖL ^ 6֩eRX([BV$<$XAjRV@./EP$wSSDjmiŰ~ʝVco7דҔg(Տɋ҆/+$f,f ?@pҏV/ytJ_MAvg* o[%s;pxUbe}E_B 0A 6XItSf +7*̿.4(S( ݐKIqg?; Μ&*WՑ׈{Nj +J'G m%݆ {Smi^WD9)Rt" {WAAt]6mBIW[-=t.)@XЮ>׹8;(4L?nV^Vp)}lNŗ OQ7gD7%\cF ;F&x}p?M-$.(,:쿈YuT;h]uLJ]0$Bو;bYy]g*^%Y-n%} )@*/a_1ab7'!KxuE0E*T Sh޸g5'$7~޴Ǯ1 >tX{ .%aWEA%X5)5_.R9(5ee1zٔgoAvjai@7!ݜ7In6ܣB,t`J86CeK D`~z0nYT&=@2X#!^pgv2+wIy_BM??JO$x(UT6Xtj{0DrOS@"0 RJ)PmC f4BVM0<8L&* (q@  `,q Krej WeŤ-SHӗh 1NU]@p*s3ƚI첗PIlG.Vjsdät1q)%>2qza +?*+bI|Ma3 d'tA*7~P;YN^@dH.v ik@5m"Xk +%-O73O3ZDщɚSw xvQgڟ]ɉ {ŀ g +7vPv?{vf>~heg~<.x"=9ć&|\&D7xP{( qK?YCùYI[-%C.tg9J^N!Qwwl(!]@MPB%\1g1l.ZjZ@LwVaB?Crh "!#)VyŁ Cq[ظWSث SDqW \3E:4\NUls|+d +oȈSy.!bZ>R {9gq0XU%xOn@-){<9YO 9YYW }4]Ց +\f!a6x0E/N \X*"+JI[H;gzw2oKkߎ6W\'&/;'b]Gh9 Cf3_ gDнTh @jtiQ_R2&(qBKp,:l¶O@lL+5x͖ w +Kf Vc\RP|16fAn |VPuB/&KUzvX"4ب׊o  +\JmvpŠցL2T3J6H&nQȦ^|;7 w*fͻƥ]73q:'kZPa~?+²`0J;3RmJ w\مz 0{tDA".M| QSãS ψk u_tw;8h) ̓B;ףbR&`0NUw0x <``>"WߍBu`5a7wǹdr=^= هRɅd7c=Z~K"r,b4jfYѼÙS#r8؊z-% +3$LtZW#tz;@J| 8B-_[͈ ct$9),N#b#lu#ƽQGXkΖ`>y9PN" Ae9}֕ +{?3'Fo=)eR7ܚ r HsDzB'-3J}/ +O@.7\,K'E)nAP"?'7?yK/i@?fR^mhQy ̀$zM}X53Il<]6e }E*[*\5&.;q,J1cpHc)7|SxlgT_Bx]MO<0mfY9!uT#$Ps2(/`U[j!˚rߤHjQ;0 IvIq\ѓ)v BJIqiyi84*N}]PjIkiQ _ѾN[38홑̐uso<U*555$zgw{#|#⽬ih)O{ +}x2ُCnpۛ+{SK k/yQ̷7YX\lpv Ȫφnւwje +Z+šf]>?dk&h'0wPRus IAZpJ ρUL8E +͚q8NԠ +1V +D7uBqP$ .M4eIygU$ɔy 9Sy58_Sn{ 1- ZXghNԻBc%CQ8ϊXZX9 W7\t:}ZTG_Ί_a#,a+A)bzjڠXũj|kxa04@|TC)&=7\mXs]KsXucQo^yhpܙ1 +J XنS1z5#f)|ϼtX!vMv#ĉa>E^":e(@Jbcs-f<2F'*܃7 Jw@AE޴1yˆAv`f~@G)- 4dBk>Ћcz=I%&sF o:fA#>y`~f#g0AuCK1%N1~_쁨U͈oJ{y%2(j5/O݋<n@Ms 3RYE֔g7HƟm0O=|m] ͓$$4ᦉwӜ$ȎB\H]ڳќ#bDdrzc>:gY +$G88M8Y&1Mٺ9n]xpRrP%V,tr&ͱ-p݃B +{GE.J X>X'x& +p]:e+̆Z:u^TBƂuNE,үE +D`Q!Wb4VQLm/I ix (IT) +/1Z)5ɢnc_{Wn~h-|JbWەFZW/3!#svoaGQE)NE@w21{1N)HX_XꐣWlW(x"k+ڌC?䴱~z(YOZkwE2:- +\&`b !E36Z8KߙsA84 Dy[ uZA!d\@!{r-9_ZqͫNIfPM%^͐P6!vӽ!QA&M~>et"*EAm]bevG.'or:ugA,dtVSSоVCy|us͂&T|\|4U I#{ظa4RIp9k(>uU/g^r_HbI,-ͣt$l1VYdVdFq\H"ttdvIF }&F,is2 qIl3o(Z4/T9o"5x_c=/Vѧ?/AM|)K ҝ9^b"/(D@F * +K0<&Dg9.6 ~ӆ4m2I€h~'yq$1auG{2F6DxK-M}J `n +Љ'.q 7esst`璐(P6.ʰ߆V4*:>fok[o{y|RQeFMoH;ҊVzO7LXJ}JLLIM7bV/>+ٖ;{ |i ?#**% 4Tr(I%5 P8(P%B0?8KhmHv(vd&'"^1[8i(u3;?j8Q&U#u*)JyѬvmaֱ\h嶲AK$6īy[u)VjB!0Ce".6x_>*pKЀQݕ}Wq +be4n^=DXˠ+)fsmf%fX.Y!)w]SҐJ'f`&j9|QsżX#Z,)@{,u#5,)EKBwS/)׫Q=YRLg ‰hPg#s<*4w0Bfns]C*դ0p佲Ы온-ZH>`~uɚmda;y?-\H,hT~ /WԄ^ X9,%u#Ƶ.MVMc~px(#.8pk|`mh BjVe7M$aIP^q)g {`/th +jEI0sY-e/x1$_-F5j9k幐j9I \+fED +ܜ[z%U`3H;G'/m-CjNf5_8!ɯ1rYRLʹ$Mry zHZ`%;qI=YX-ۖ $Ť Fw[J(4)K蓘ZG&x1)'yCwo.Zv+9Єw!6Qp iyCtCRwLTgdJ9TBx^HH +#xًLix]wr57#JgԶO kFJcln% E׳8'"m|) +ǂO1rRivzI>i" +Öw*6y1\dyLhsE(F݉fTكQV8&5-*3y]La QFKct!*BDŽӎNFz??MqX-l|]oנFWE~P"@ UXEAPSVS;ڭ56*ϡȱ\M`y2q یDᄨVmU eWy2O>H g![MM\cgPlc:C`l5ǰd,۹R; q$ 6*#KD%bPqn0_w,젏XG!*JaBJE-QǎZI&D%!Ɗ*z`n1B࢞s~@^Z5$? q(CT枛0!AL؟A!u'btvdŘClU nMa>HgCa:%Ck1[="ĩHxƳbGeWB7,`oX 9( C t+.0͌GeGP"=~yk[.%]]0eio*[]od*T->-=9C)y.pD۱#HdEI4bnNZivT(jnހe$DuW(d9m* +-ϙH?-ɓ#vs5lRMƙdQ [_kdyVQ|էh m:?HVp>[@Ic- 7"8T#A;PJZQ}DCMl(SqԫU)a44xY!вG(juRid811 >[C,y>@l-uQ[<4wG‰qJ xdChAmY c9? Y8Mn`9Y"-5J3Xʘ&gGoBLt3xO%(#ċ`̨+kmg&k``naAĺ89MȻe:!=dF0o [l3>9 01)0u28[!3vM|乂WL)QVD4w?H)3s!683pૃU*G6bTH&\6dN&mTS F&^c 4 )'׵#i~ 6ZK +J$9-NV`X^EYDH|YnxP{Cρ>;60"kv"He̟r#jqoѹ?Ig*QQ5ÜMp)KcB%ad[WXMqjRJeJ*v՛\V7A2n?5M:?<eJ*`:ikYO5X\z"= %HB%jC`@a\Dpv}5{T=/33) \V# 8:F[}*/5bpZv0٫Es1cX A%Nxq.{!y_^/$5հDuq8̽NV+0'Oص~@ sXT' T `C\HQ 38eR˃Q?!j_n.rF\Gm}.ŃTnFŝ\Vq7ȗCe3 #kb>lص[6zWXF +8*vb!32ʷf-eS+ܱ~|,^+ !JJX;Fm F8ťvo,0%ZdhsE@u.dA Ƈǝklh=rd ll_}IwH)9Q]fdPEl~/D`*3cv}(hm}:+ej%B-NmrC[jjIw +8K=V'ou\ >[,,xr7S0ڵ7Ŏioz6\$[j0҆dR:[FWUy\;gU";{O#FteAuЂw3Hp| .]iZe"5pM-Fbj*o&K'0"蟣ms,!wgBEuC`ɠ[.c pbwa~M~ 026Fqlk>gtP.c4Vwq)<vɏζ&E1r41B@?8[пK " 7\\!So0&{}Gh-<߯F"aťA}l1'R|zZyW҃N8oە> d"7mM\ۄ=pwB/_m>&eZMC q,LXؼJL +.2Ϛ7, F2fE>T1^Ĵ_ fq.duCb@-$?C WRps'c$qVV^p"dȂO fjKh8?88R`:QW_$g9C:84]b=y<>%ܬ]: ao 8{O]Me "8ը R x LzpV/FʇW9jz85X:tHNz@:b#^$nG?FwG)"+9(: +M}ck?377bh 'VBB G)*no>^7)lGBi}Qц#j(98D4.~J_kL%6u]`-Iyʤ!c%&]}$6,١7~=àӬ:|pEW+)# K: RqHmʗmu+ڈLh1_My,/\&vy1O;vThKJ* [Ic)qwzq9OSeqA,샯)O+xQ}k $1Q)X$g^'ƚQsҰ"CpC1d-"ɟfC؅/?=*lZSϮ+8JȫHSTVlky26S4>(_݇ j$3tدV Z`@\%> 13O4E9!l{T;f.eOYLq.7=m>\/(??ql[E?Mh+\ݺ_lAe_jj[f*S '!Q?Gݕ(w;Yw}Hk#n>n`*.- \rpŕWʋ_ ڏr׮-TjK^`'BEv0#dDhl1SYkqv$fz dK~ Iފ}}yggSN?%Q8Qz ubk>{Ւ]4qV#3;;Aq+$޲R.DCjE8!}@ +oU]U@-4Ʀ /xW^uh0K3KxۘK+j88@}Bn܊y C05VsNVIT! # Ǩz}dx 86l0C8ۦReɁEj@NA= КAT)w|!G{) KFA4J,N_Llj +BD8E 6䵥1OMfi $@k||wʩ"p$fjme4S8]5eŧӲ,-&P2)ULޜGPx +ZBCxSڏ%Htb6D2_)ڡ[)k>bN`yEc,NKIУSd%!q0d C\S!NvdX| HѴc,7k:0h_<~o)2VH5PøE~ bFq$p`!CFoU7B}|RZs3z^oh483@ƶQ =SFw +r^/#OnVڥ l&vS6 Ijq-~Hp 9NN3VG>l:!f@X"0|-NҮ2V 66PxW_6 ݱj!,!CEÖNO6wJe q0ҿտ]d"c T~Ƌ\0a8ݒ#JNn(yUw-~ n~SN p R#a]lU R6P$&> 5ҒtIiȌ#iMUũ3V^-7B4KN*oTRS%}ļ4f|2b 49U;NCJ0%$A&=TZ(*7ea@M_&XQii,f;k#iuVhWl<^Y0+\$h58qY|XnrQ1schv-myN( n79#=2٦Vo0"(%1^"C>"Hpq{$x7&iD_K1xk+a/YƯ,jڅ ,۳>Y62Aus1ژ3zAfhp1*o J(]hPN:4%x꺩"@FUڌѓC_= O]W/r0hb4~jQb;(zr&XM1_=s{!EBT%W=.`(Q.P$nt.`Ze<$VPn%n"C1g6Dּ[2bK[v()Nsr'yG9Q t앀4A:;7f2-oYA@4\JO֯hS ƌX3HxdC +\Y¸>Rb[5^߲MÞ +tŌOܦt54aQ(72~+)FLy0AF, U`'*G`C;4G6H>Ǵ!CPA XtgJ܇Hb~0-nê ,8g7xۆt*iA(Atiܔ1 +Mh ~S9ݯDwj$] ƃ- `ɼڠY6¼7O݋ 8ݰCw 9h<:vW&2qͯf5P6v xY6+k4Tіw8;iu[ᖃk3Y}h'~):!L.]>#[!"; +P\#S]#0Z<{<;6AK:E8?fx +ܿ?-a2 Y]63ARmr!~iarTMQ- t<}s 2Ix; [Cܳh`)LJUd.\7xzD4IBiV!zHibТ.t:H{Hk&{2P=M89`^ҟ-˓ Uid8`ZC53!ih7wʈŷ›G9K?p6mK)rٻ- e^"Pp?GSN}t;%.Ulڞ%n^*E/J3zV?>EaSg2)K]*qA:O(m(5 ΎFA>+մ)# _6X*U0!f1jeg d k1vo =Jp‘Is@eH_dրL@G=boa6wF'.&HIU"0_/_u,mL_)p o61. J4 %P%7/KKqƷO_/%EiP%dt/4: n߅KX JW*,IiCbե}G֫kK&݈ϭ+d0 \$rby= ;/ M J_= I7R-"Wԣ8Y\_Z61g]m⒳ſ!{=,t.XMRzQ\ .Y{W,s3K)wbՇvyp )6 Ӗd#c1wX[V~gruLyUvvfE e4 nr]&sg+9uV(JҖT6EbHJƼ6eXssjˋl-? x .X̼&w3O=I!n]Z^2'[;d +A+ +XtM\҅b/$V8đj3B%a2noΏciqq%Gm "CJ?l'd*OE5>s\3a'[pևC δ<́pne 6*jmABͲH?|4}h-tgh-$RBpSt40]H2%BzIy%m q@ +b@ R7'#tbz})]jDT~l@ކo :)gEVN8~~)]ؼP-yS$iI-G.9ḆPpb}z#'<#.Q_fiBb욈0^2,ҋ:;QEK;Ɉ[`tEVbe-m1=LZ\oOGv6R4> n4nS5~C5mS5kdeWh ~7J61p3FJFVtx~gI˃́WB lCi[9|ȶqxړɎV#Qi1G4CV1"Rj 6'"+'@s8I9)>3t䌁hdeCqKDAPio +݇-+=Q B܋+nj#lTrr R򆷡4ώ3 k`DEc*c>] +ݓObCiTazn~PEMtRAwn"~&d&Ct#a0xt7:DUUVbm?SbުxrƒoqCjs 2wJ=:dHG)-3x1L]Wb>qVY Bp}F\Bi]u9prѲ{{]TM["eA7CyJ2S [-+bu"ڔ8('"+&d~Ĭ2SY: +7yh^F[I8G&3!otJ%V]X:lq1?6&%$gtxf@>^%O|҆5"i.-!Ho$f2^W GOI)uߖE9i5bHV}烄͗zhr?N]o>T4 OT}@cq +0)QL90y0yflH` H{S>׬qx Fz%SDFWP1tM/_/ӌΫ_&"+{0t[Bu@ ;P}f+ߵ/.\LT¾7z !'J{0Ұ;9<,^wH$ .Ԉ{ݩ-)Ϭ ӆU-;񎉠YMT {[2Ui$y?j^M({u2Öəi8ũI *b`;y7Dae1WN_5w9r1?OT[B%gҍFwDtӖ8R1֪W\2¥nq$P `:㏞i4MBUj\t1&k[Y~>bWD~ ]8o<g'UD]Pf_eE0mzM?6o /~yph}nT 4cRk$3nnU5;ݏ.:"3gbmZ*_D0H5;E ?Jk|%Pb|(i-SS=Zu#2Y1?=³e=$XШNT4'$F;Espɿjq^kNS[0ڊ\"G}i즭sJ W͞+@T}V7AY3$ZR 2F (TTΰqW$tH72Yi~NwK:SF1Q1x6ͬi?B"먚6bs(&?&pM '&}[nM?lgKPCէJ^ӯK*҆Tm|*.+\ɇ#ihW+Ew^*xm2. ./ +@8< cH)e! )RQ.ZHR("aH +P Aˑ +4N\/#.K٠{_PKS'US o:D0;<#\XrHvTKԙ!mMe=$4-YuKl&[@ n H3;ɳGcc\- w{Thy'^s0(R?cA&9y^fy<+ICeQ +p+? ؊dnhSCByqI7Iw = $P+p +AY.a5";۸Z Ydk պM1+n,j5)|"R}Z&o*UYPўnއ%pvOR#Z, #PmNvaN8 ]!Oռ#Iv- +aWɱѥ2ϐ,~T%ӞD#r܅޲d)@25 Br~sKʍ+r`ztg@ms]a>5[BݣTo%C +Pj@jN;3x N}ndvc9mxNh)w(%tw52 ǻ% vrAqhhm]ilX<$2O(JG#azn";nM(||E=FG|[Iÿ<- ׼Fߢ軴jmk(;ahWʍVo4PfB[ 喃@U2S3 +",8硿!I$d0?2"$?{ 1R'@/T7 վҬ$PIM0v2x=-ȍdp&{AV*_fC1ypD+)l2T0K=ܫmTP{0= D(|+-B;N'.&ۃڨ^UZA< A:E5nmH_6#AP}5fSS8W/$J^FZ=#0O(6pm}1.~:يm|K>w[6Dz%JV?ZY)P;٠0W>`A>베Uߌۃ Q̌SVtvOrk%e8 U`A{辋w҇ݴąT\ +@q_#+ ĨpQ<c0t$3ѯ;iV$ k@UBdiPE78i6 rBl xī U +TJۍ*@;S^(7ێgЯZ8*Q",J╴2fTѳFlRM&@hX0H}(-x>ܿsAb F&Aͬ. +%xg]?[U-d^oA#.%/Fg:*-%KA8O#⤗qp+%zpot'p(Hcu^d<ڔtCUH'Yߘϗ޴vGZՃܕǿV)n+pN41V];+IG O^'-L]KnpPD]i9yBvV=t$n#77 6,p!Vv#иGB#w])2P)Ρ4\9O3-qtJ)T^|ȰRduqhR Y b;C.+vNEՄX׻cUwd\x%K U4^ב){"큽mDE󥷱Q"z\ObTMXRɇZQTA{_i2D=`s^aAkUr|}F&2 <~) "Y>11o2Gזx5bTLҧgE~IhLy@ deXHR6ESI*jo3܍!f!B񁌏6_2&m,ӣ#(ȈjO {-QYjz~bB#SًaEOƻ%H˰ɔc]yP!'Ԏ<·hǹ(! D [e ,]BgG`!෰Dt\X&AޖG]3",#\l ֑;H~p!3CZ>hA*` q=2l#{M0AҲGeRLY<!Ҹ9?a׿F_+ȳl &폱Ƽ%w\2 Gy=t JctUs#Da8^kÔܽFho[,k0NB) P݉$`*ߊ4a_y`c=MlXкC9!FHaN*[ +H G]j%(6 }]i[ײm; ƎcMd1 5 : +߆~EH;zsR7x뚲PAjӽ*4;jvNXZ$Bjxpb|EVP)kVkuW|b"tmz=gn^>a2&!*t)l[^V|}:ΜP ] rqus`,:ctF_vPpt爊Vs1T[c Mǝkn׶f!, GĤx +"g]W!'$guVFnds&)Cef\ZtXAm&YsA`U~/+OHMDb +mm~qR DlNL> +/+Pi&H/j|R&T8J&OT^zZ"tbd +7e+M?v2JT6x6;O'3U5Mi۲T6I*l%Sc6^@+z[-e1{2_5ӅddTEQCJ6ãAwbu˩d.ԥA396$K{_9gVc9'f" rJ䞼-Qg}l}ۚsLGοLe ~at'M4,l_iBgbW:R-\.7~g@"*yh ?^ =x5SEWtzͫP_/3pbIVdz Ĥocf'(Cjt>Ѵ/ICRt m8j +yr ֫RUPκUoʵ1_1QTTa0j*Ì,8|mT a=Ԩã KiA +tkpd # +ƇrE>]WɁ*!'S;) [!ǢY䲃Ը)JDR +;D:EK{O2juPĆXO5-y?B?瞱%Q-} :k!{YpRUkVgnl /D~wm_M oxЮp{Rb$CIN;anxd܀c𞩫_n;RLg~D6IÝ$WVBfAnpϘϲŮq#qgJ ZЦYioԨacحr:8z>Ydd#4-:kim GC{[eU 3ps%WsI{ 㣶uqq!rxwV7(gUrTN9:~/sI9?GG=Ŋ4XOu"rH-<tJSa#'b\ ' T*oTȣ\9VLh%!* [ "yXz*rbͼwtA+rWK|"4nDca+r/!oYæ`:jSTU)T Ty9h䱖Z"_Szգ+CGD[?a7LVy}?P$m^:=kmٰLCiaUa'> {o<, Y&Ua +`x9r*Mxe]Rb^\b2+~\XOQLIQADž5;.w\ kO-LλE5&aaae}Z }w`* A# }j--W]7E/c.+k,.FwzNh#]Ԗ˗eZb[;c:&k<]( ^tfxAxmY~6Re @ކF_Z5쩡!jN#"P{a偮Ն@WNA+&!QI(lD~-/Qgגh*RMh) 3[g1qP$>ψ>`Ѭ얐r;fAGc3Aaoer[NzGE4oF +t ~EXbgPc ;/0Dypc71ڊHm7MW1cKM \>8|ZwUQ+j>Lq71YP8r BAKJ>)Πհ7s C֔'aMљA.Ff,asK+%xx*XTaȫ^%{.VWD3 ?54!Ia ),hv-xZaOh @zj AU + 8L-֢!NӜ3%x qn14o&>stream +LRcVh%W޴B[Eu!,B[dh}G82۬djoW-cx'fƥ .b[:r]dwDv~^7sTo|`ܡ^.1kaxlkchR+c4[=-:8,[18VIp]r-kToz|mʼV`ǻof9NR~|(SDHX ef^R&~["9ʾEOr^9,jY&v_lyyb5@ᩫ!`x(:3mvDDq=ȿcM-ľ 2s0DjC8J20`p0-a('+eW7΂[ mMqRiDu +AԾpJvH-.Vl-(a\:9(x^qcXY'Ǐ&S.38|Y~]9 ؘ~;"R Fő8r|QqDj >u<Bvjg_mqz)uaΤJsO`oNjsj9صQ#209Njwڰ DTr4o؍\]qHO-%Yx%QЍMaDJG+ ,8Վt{q r7c@$Nzp$lk(c­f Fy8BpLBD2( +]r +ކ(w#Pz87 xÑ@TOQwXt:5=j֭rH(%eBD F_ Mʍ %rp90!U;7 +|lkbzBS̝fH 85hk!E6m_:J Uy 5LΛceMT2Af5RYp5Rp;'`@$ٮ/XX0R۷)-ZZ&:'XWyWC5LC5>^iS[+‰M8ɹQ1v1/bY~~Φ+@C0&OP\~!E]y,_*z\zZ2PW"Q\؅c=s]el\!ϰ) l[C+^%R f'/KX 02|Е[`O$_X>weV "܊%fWH0mW\$$ D 3 `>ӕC +:4wAW ++qEWrݦ`š/&*C.d+sEZ2Ár"ӕ켺G+/ݣ*Ǡof𮫯DdQ.AW1kYiEQޫ$`&+uW 0YL;IkK> LnՖj+ +ㇸ6]NOz j2_+5%̾V,"=qP0b4^K^}ſٻZB`ͿսL)=F+U`z.bɃoX˂8&`?Y>l} 4]4,TƹZ2>RX +G|IjY~R2\W_S[?,bpNd +4m\L-"\ +#]J][x ~ 6#M>ގR]=B*J'=JAhs[Z3Ir]=2i)$pA ޲ Mb,#hbβTGli RX vqCF0x{":Q$ , f2̈́‚ D/r*2T dLisS%1I@сU+7{rۃlH½IpɾbBl"/1bOAX ]34/a#5)` zHr82tHs@hWw?|Dk;Rcw2fӟᑅM̯ /Y`Ar_nܦf~1@8+*N:) ~*RY ip~0=GI8+ $h=r+3C x'L5rG0yskggva HDnM\ @&:ɆWsXX3"ӆtU5WWvvn֚]iq%uhWj'j< Hikh"[{eM;k)*szW_<.(#Vgu~)%7 !銗{iY]a׫ꂙ@t+^J$}dݏ^=@[T视jW[ +87*]}WSWAK=Q3EBo֕(0k7Y/;v?uLf-55 +Z%v %nVB)$ޫ&mK N8MOIA龝'Y0>͌+m r7]I%krA[Hj}?j"Ѫ*!x*ϒn^͑mUWŦ9ͮy<=XR0MP>UJʁ}js3D5ФǏ*j@ #ÄUÊWח^%^_QMtcσ|1MV3B_5xx{.jW<@Lu,־N}\{qgvHԠF^<< UBC$U -bZ>:s9D;M`uutHn 627O,"t?3F|Ub"R>_$.<Վm^wJ~+W?Te欕X!y%'^(- x`a@joE3\tĒoRPief)*IpܪVm) +5x+j話ê~F1I!2Z`Vt buȪF)NY_+C EW}(.> ,cϾ~1՞ X+%,CV +8`W@V[}9 +ࡪn񐙾bd5*'P +z-5T (wG^jZ"1_ +H"?ɵr!VdO L,M½]q>|YF;xYlX!Ojj}tKSžVx"[A9.|6\ZV[tʵB\ѥ=ZVАZ3)J L_Waj5PEWD_}e8Ђ\+0V*͇+dUX^Tr!YT\QcNhInFj9ɪ,Ն>تҖ +uK"`(`>l;oN~ӽ =Uu3 `?* UE W]1j" jcxXST]SSSms)|]4ՑR<+_f =$"A!߅X#$? 7qw^fk 2N1z` f:\8%1v_S^9Ԉa_@Gt!xP]j_p}rurGܔ>OX޺`1QXZ6N3ןBO[ֺa,_F#`o@GHA + UTH0J0+\.-5Xz=J5?ti5чWZcP +RZmܕxf 'ŭ$@mETڞ9Qj 87ɽ"nͶr3X4RYQە Q8?7&WR+`&AqAJAZ9!2^z4#VYgT͸9Q| R$p?ut4RP1(t 㪐D \4kWj"7 +ȾJ(8+dRY!e+FG  ~f:# <_ ӄZ(41p1vLvX\qaw<魠@=ek;yt@ZuGU7pR';ceyB<'՟P܋]obSRS) Pr1wbuUKJ$fcfw91ZA` 9Xz80hJfcM)Nŗ]ґb0/?)&U*zx2Յ5_o`i2I*!џz?[jv +ZiyIvn%A|2>)R AnɜR+=*k7|5p:k:F܇E8d?6b]b" .X%qF0bG>-VO Vn(l2bErdg _zTUBɵ/bjtՄs3ڱ/Rgv٩Өכx hsܢ2e5)r萐"`ɺגU s.X@(+7P%Y}TRs8ci*(8]#B1ZqqgLb׫tj1r%D + ^wq`92m@zG7`1ѸLaI!u2]edk (+x R^RW(etQ,z{pncJLY@8dO_`+E)+jhsW& 0V +t+yU|nk<ѕPv;1{Om^AĠ+U*47* +W%g9rE蕵c;\WtbF#*Jо^U +Yz;[oʊUMJ֕qn It&7W({ B)Z̆؟/:3E+Kj*Onm>rwX2e"=t]՛5]/5M8}Z0한jM%=F֑%zJY=˕q8&֦' "`n]"<6HbjZRqr䡥pc8k>2KD. KeȅACd$][JRy˯3]p΋ Q-s=ȖYpM>UN a7#BѸZ#sLZABzn~wO}/bd`Id@{:tdm$qAZ__Oa +e,7?'i߃e‹PB:l"jp? -"XXHXH=mLxPyE[TH& ls)iL`@0ućA8BBi$*ÌH&Ƅȁx0at̀tLh`9`BbÁc]*10 N؈2e␁Ee3( a"TLCƅ a!AH#d\F*;:L@Hh<٘͏4MFx[i EE2,,F:*TXP!0b5X "HX(𜠑>\1"lsε0@XdvЩ>d+0WX$*Ƀ%$DMa -&ƽ6*A#HbMi$:LRX!q>T̡$!`Q#,D =`Tʀ@J8>> @8 8L -.Xc418B"t -9W!""dIi ]*hR5 - Of@_+ (hY|bw "SQJQĹӡamT.h>.xi""O*4p/@eAH&""FP`hft8DhT$ -rCBaBy+ɄX<78 -P" -\I!q(9UtĨJkhVL6"6C@.hs; ]EDqAfd#k`d:Aq] -0TB$ H&4D3ИbǀpX`˃@@i$>*K^L&T~qy-Ғr$`A?"042LId!rQdDHH`,4W -endstream endobj 271 0 obj <>stream -e@],tI@acbp2X*dR $PM"Z "*2,|DP,'*V۩㺨Y不*P;YXpХ:83F)xk *@,LW eoWl'yRVj! MG"Os`5-8b/wo㛙J/˪v - L.w%+H@<S6k@ەF8 DfvAB+)ԋRa4=u^qYr7 پ_zX%=GYZ OfO A Kr,'%dua-wcqcB+zXŏ:[-&#oJy.Hlhs4A,m -WNmF-@TU97U/^ ydw𾳥rP -qKUOB-PtAKN2L&6QoPftNtq `eAF0Asu!(89/r\Wveq~T);N;]ƊpK ʸ}!m%tY Q@=jjH9Ч‰@iW_ I&D}JoʔR&&fTҘ:m&&o[ףh\I_+ŻҢ`4;y~v4R yʵh!9YR* 0LD'nʥۑ55͏h)O/[AL+I^4OOMiB?!-1*2s.jxwr<9G~~OmS5yN:BL1J2#\Mq ] ZiCYJjzEM hoQz-d232dޅ*[`so&w#]Zd?ȿK՝Lşmmvg{!do~zc>pNLkb0ed YydHLqD=`g3΂[ŵ<=`s"Rdyi(N</ZI&Ts.ӘdeSK}Bl0z0}f-4!>=w` -<Y/&kn+.o$hwgOgB_^2 }/9i[nt6\vh>}G8Y; -edr'ۭInz՜ 峂1xj.˞I{ֱ6ACFPƠcFʡ7F`?p:^w=4HM.wb>:x&V<ݰ)#m9h#̏Խ ? ]n'Nz.J\\ӈUUc %)/X`\{zYC <|E&F`_p)";4 -=(&#!lY3&ɕqmT9sMŀܦfKc1r#-EXSko76^X\!i0Qa>LY-i&@.{YzslH0Qx ~ҖA/حR㝒$͒E'+Khg\KF5[@[~5fQg o4mu#mNґ\Z΢g*>o -I42$pQm.2n 5ifXLʇ| -YH&-p=y#%jDCjʭ&0Ss9D(@{\xX|w{5 swvJk/ЅO:~wݕ@#(RJQJ]p)0,N8HĘVg{$9J㳀E?-3ۙmj:Li3aVďQSgHP]oѥ ̴)LLR 3F8rM7zߜpn5ƈpkZ{pHWŒe c:nRx5z h%Ӗ^$u_0Y0=a:C@fh)Dek׺} UߢV6!ރ B?IB6u"%tm&bꢠVH |L:|1©EP@)y)E! {Z1FoV劬 & wj{IRcuPIӉ<.0i6SzK&νo<|n -¶S[:P)º"3`;8boMcZj݋0R+Ҭ`t?n˽,L"w$}%@0ǚ1ׂx cZ#Ύ . ɑ烱2pg5ho7p.@55*BZ- -'̇rV5Nѵ&U[f©$1/3%Ȫ5.R8Y<ʕtH_̬^ D0|؉i;% NS 72|e0O 5BDpce1'wj^X2YUDhaqArhnW@jd ] Ƌt.L0WT&.xpt*Mijؙ{ޤ0O -?O<`u %[[Lx=+ -"5([Z M4ή>˦8ISS:D)}>9%wKcěa]݀8}uAv[Ў$Oܥb]B`"[;TGFBlŢZ:c6C2EoD$P9vXA T((C0ujjWد>&AB5uhd,o:i9Lr:52lSFԑ{ff"̏sVzt}XS(!6ǵ /..G.TLmS|n^V\ȃZd[7Iz.{yܧIR#@X9'"JWy)>Bw7ZNo-#:Lv5 'FҰ+ |~h,˥8%Og#kSii,gRVC=e@ꌆ~:KTsb\){b_S>6 E'G8ir`|80~_ ŋ~_JMxĒELZ<+Vl@lngɣGHC -;ddY:5I(IWI2+D`J[zPTHx2ބV1QQ;K Xнv!inE[9nƢvrL.]Í3ji3! -{A"HH@1,DCtzF74שoo`jHuhɂJcrXd_u}Fh{GIQeN -% -Q)vlo'Т#-qwBr9(yZ# RJFŕA[#[1Ky/ 1`֚Ce#Ufl7tlgL=LG\nNt`4>Sí˚N~ Ћyx;@ϰ"uN|)& PaoҧCc{I;o{}V2}q8FU2@h܏﹗dcM N"3-H&3`C.GSψE=3$o Má#x(٦f؞[BddM-Gs/q._ {GNUh):1ԉ-u[>WX[3yOl šÜwn"h/j@n5i&4ػPd&04Wỽ),'z5D<KvLrJFM0s -؂lj5~4!x1$kωXo$J,Tc# N - ,~E+UؘzAG{VݟXVLt!k -G,"*iՃ!fn"c io1GIY`r%S3ѼZ"C_M= wh2$#]v-P * +lKiedQ硰_+4Z I!4aB:D"n!|fy.*JAh Q$um^忭uhl{ ۏW1~:;"YY)R n%kp8EДGFʋ:PrE~ dh#4UptRuhaqߘW@dr1$T5|Wx]qd^R".uL+Jto;G$)%W$}2]VeTC3vwݞ۳ʀ2o;7i-gy% :t! ^e8A)ɚu՚=rqc0z"%v.`(7=`6ݶ @OӦx/V=BxY9T6# -UOF{fq0׉y<]$\sO";hy'ťr|8;'Dmh>nV9&* ;;lл:4RΘ;voY<"MASga!_g̋#VVλzL뛈n1QHP%nFY*9};r}xeaWuomEïX)֎Z~Nt bXg20ͩ1015FcF6y,oJ!0Lj@q;U锜mBbr -9u{21=Eo[gՇ!.Y[Y\EąFig\ Ҍ+?RhfpwQ/nv+q -ŷ Қ/`w/ eSzL^M8+4"ǀ0k6ヂ$^=M 9m)%H` @*R҈ 18xCyQ~;5v$n[OqB -u RRAtE}9Y0FiڈÕʎo ՝ R'y!W8dwfNQ?KU7=y D݉3@zS>F@dhkdRը66 o -h]N[ x# 6xW`1MM4ECej=*pRrY 1|@%ˋYsZT@fۢv'ēf$٦) У)BF44HM]]f1G,eB >-RxM5anb%"@ T ( m -tێԈ )LX,n}&FF˟z  r2KH^tr,Aml^ܽW P Fc@X_=بfg 2(3HSjNa豅e_|ѥ:!OiWݑ䖈YH@? -%%}4Ux:d!D{Ԭ{Zj5wL|",f֘A֪F ={ ɤΩu ߨ0NTiuo;#ւh䦶-Ė[EF{%Q7f8*vDі$]H!L(-}m#W;N+iPz $N ͗÷Ї·EJn>H^ۡ ʪp-k/55] m -[{@bhWzݜ^W* Xr"KT|; wI2F:Ba [9IJ6N$sڇJsEUz%^Vw7ϳt/{/UyDK" -H,tz垸wb\^Z1Z곃/ &k-qh(/0P|\ճ(B +0gҌϥ^҉lM0YŃ}^6B|^ eT2_Ն2W$= S|MtIeѬ,,U;0 -՘T mjhcanE˹p<Շg’ #{E5h'D$&N[e(૔(h$cBI{3_`11@'P$&Lgm. -M᤺v4yv\LR75ť>ƆBP$\M[MAZ1Y~6h -FlZ!0Z -MaS1ބ#)ߚ, a8j_$d\t@QmMbX7rۺǛ # p&05CҦ 7 %PB\%:yƕhBEmf7J \nm.IG:'DMeJHȲ\-w]swVQv,ܽJ^S#g}tB5'Lrh3fCtRL/!p>F)ſ\VhmyL#enS=0uo)`w~$4ښf")%U3.AJ@sD -b ")uJmH"&;3S tXw`Qm ԯ/:b ~ua*L,I/k\7H8/dvhd3k~jtkk}b?f4Dh?Ĭe8,{2LQnޱwREj \:5ȓV]Zr=Pь3kK6I|ծwE$DŽ[tdCQKTVER?B8ux0v˃Y$,- {r.`oSː/_+0 h~7_PmWAċ I4,bNϊ0d)A8t`2B]C}FTFLb>XaAxY1LoT]6b?Ҭ3e/Ԫ^^'d[- D_6~r¡\{B4UrihjlѶ 4FFB8}7ދг/&M="Ɣ'obĖ=0m0[5J׭)* fO.u{DQ&V)h5<1o>mI E SO%rϐ5FI$ *y-bf /<7([߹0!cw/(W9cFtP%{r[H;(P}, [7{;"ng yT}ئ[7st -*1@U'T+U|Թsr -U/5:>M FTH9.c9Ĭ 9Sʼh [ -`l+#~`"K%W1Aj23'!UOn a4%s^Q$4+E[2,_YT۵cm"ߔ$"7cN9&Uz:ܡgAcBY%2Q]Ӑ]23Rû2l)֖ͦ&VMľW9^OazEɀvY!783i0*SrUBt=ƍqH5٦߶dX&([3 $NAzbK͸DvEwP*sL4ߊhZҰRR&"'8Om\~*v$*}%P\܎VQN/ -it/$:M"*G_)6As\}u;vqm€`ʐQַ {epڈEgP=(+f7"0B͜|, &gڅe%EYǵ@),JVlՐ - Vke֣pt67C{Ak ߢ]Ͷ$taԀݓMn f Ai8Y37aV@ҵAp (-͐3C#XsN5h?_ Bwۺ`@ C_(*%1/&t:DIi1*m 6Hb.2r}NGF~TѮI,O7JMuAt nEű9:ZdzgȧޭUd"-!\XʹuJd KC .Ngl}p$<3Lа[#k"exrg?gȻ窹Sl:[S75`i&^j{dbp֗0 GNBcÕ6S0V}r}f47`m[ԹOug ȉsIܳOsq3* Uc˂y=mjR wEHPZީ}ɳqT0_+֒S5@iEE,`xCn ȴW|UGs!"o-(:*׫([poZcЙ4~w1&Yi_2KwL8* *gD+%\ -Zyá]S -& aQ$k'tA'Y>DWAcX!LW WcwNx~Gn|kNFO+\G|ߓ($PL̕DPX!{Ȱ}~/.##kvFOSrkcD7g9lgS?e&seK2 -)hL~-U4B6}6zK W:TJDLzO~d3R[fhMuCO1{>lBl& "oR=Ά^\V<qo:g8GRK!7'eH\:/a4eT$)ub[b qOgy,Y֥9}."( FldkfDKfunBָ̔96Yvo')*_ˤ6ӝZ͒mjb h*pN@5ϦT',$vLGeW8+>k pIXb&Vm cVoSY"BSE[((Qxƽ 3}g0n:^YxQ"0--%S՜ c9/Bc"'/zZMWzc hgttU rVT)@D~#ㄦiv"&%!׃j3 6`Pdr?}; #70I\ksZ|)uCNTۊD -j0zx_'c2' aZ'$yhd7ْ4Ź$127^ׇ&6^A9bx~J ex3pB(Yu0yW^VP_*M]WD>CS -qbC3& -"5 -2DtQ@Ѐ*D T~*S{oS\2՜a@"kJ,\x,'MfW̃qXi*4PCC.hl3v#N=YLI0aKFR={k.W$Y2.\N#mcmwL.6er+OuG<#{ ]MowbF@IrDI(KְZG߈{<#p -0o1gqT*+ -zHFuVD>jC3ݸ@ؔx236CH;.5[6 3Q`t9'VLB}+M0WSFC8Sɍˍ܂+ҖlFxݜJf,y:,lX1hY0ҺH,0 jh2=caS4 _Z6}Mksy4s$?~grcx$N\ `#AniaW j]=>ku i:4#G 0JI27ZCl3/gA-B3꒏HHRMRܐ%!ΎA#I;E%Ks(eFPG5PENO)G4ӑ5Cj뙱(5EƇi[KTuQԸ (~z꧙$! "r&&Y3@}4(W=Fڡ>bHW메 -@OOP]nAK-DgV]0M3!ū(!`Ȝl;E%vb6W_o@5:>~PE@t I\G0j% -:p< Ba%` K!Lq,),~nR`I'tccA?޶Hf68,Xk(9vۣe$3 8 0=!&qTZ #r(W3yd3Pzc6-=?\rN4W@"jAM[bXN5ÑAr=s|ݍAD%[sxjov<!*m\WpP "yL -ҩB%W֠+P^KtǂYpQt]$ˆ `m/wFZMQKfaV?V;+l+iTIR u 9›È -.Vc  -pۏ% -$ qߙhСϜ> vqLV+U(ῂEb% CTv}!n6L6>D7ɧ)yyٰFzS -XJ-*ـ1@E/HV a.-Esw(H^7i֏FޓLNNq(RJT|䦔_"^O<+٪9]Ah#@Jk2 bHJ-%w"e*@%p%(E>dm2{t$oN:~k!>G=qey0jdOTPiB : "37lQy<zW-ה?I/&oj2%d5__ne7?Sv<]CcoKtS{u},[E˝svS| cR5Ak#$]G3bdcn'18~!B ,H`% Y:_yopQ鞁5<_\Ix -<1*6$4$&oٴ C QNYǢ)O@)ʹ4l2'@<݈41\#8ǃC"5d|tO˴yg,[ɰGm5|؉Y4J5n= -f."|s*UiPp<~wq5o]CFpRHԃ[nհ$6ub{;WBQwZ"Vr^A"Z;R3\a:.S)S -; kuc#kqeF[03Y-GȔ;l1kM~=ő"2%յ|*8mU6[w )6*c@Fw U1[νp̈́%. -xD}b`8֣MB-4(jcl:+A.3m6+%A()$+2ಡi'x2?0V*Y`.1g-JqަT>N+eUP'{&zKFqOFmH j`|WO)F䐬Ɨͭ ? Kv7E$ut$ r X)U$S||ި!_Jp#l R,?LrGY?/+]8 0ٯP@MJVR[QՏPA쯃 xHOS"H[n!}^w74$^4øq2T)HƱM/q8.@\,}8PDc -7B*!uh'݋++ƭ8Ogc2bfd8qs+%(Dn_8Ɇ/~.Ѥ\81mmҲE~sQ,O W8Y$gt8{H=w{gjj{J{=g]hX NJm(XyJSpڼVݏ06t*3LOoWqB G%w2|g挢+e+NJpA}uh-wq S㕗OYmGdօR $ByJa.ر\f>#oʄ:QBr+J 2`R$G+jCቬh4+7Nj_DN!  0Ì- T-qҍJ!8.%[<0qc- ˓!VL4g\"ݓ aTuBh7DpLtYKLxєK*k0!n#8X n *ᩒ'нy<6vt#ZM ͸&Z¨>ma[eY#nݹ38 7wq䆁@o0WRY ׮}*1_" 7l,[He3!? l>]< Q=cZR2FDjzUiTYDHNڳy{a;}b CSKi " ؤ1hD>qKp[| WS1O7)SK7ymQy4[&roqo -!6<ͤ3Zǩnc(Ƅ&J[kw-E$y\(G@H)cpy&P VYC$>DqYT+Pi-BW5O;Es(+i؎H&CݢҐ>9$Z>Kd\a,#% t/q@. }rɺAhɹHIN4lܡC>8Yi{4pY#Z8AEw(hTPz1!վn[JW1 U!#ѭn Lܠ}F<.ѓɀa0'aU(9iQiWd!B#R%Y{opt!Cjb)J@lE2]IG5d1ܐ%I).B |-_]2cQB ,AZ199)4L(&hVsHd 8 >-?i EXZŽ/k{u~\A -*|M%1x9&z@v] bd@c1b}w87`xO.n$.h^\ m65.JVPqp~j&ڶZ!"(c}  @@6<1$BAG M0Rbvd`2=/_sDwTr3t X+-aS2FQqP8OmG@Dqs@E`3YpP\mdsh6Ms-zcCd/Pl'] 8+7sh9 Aڵ?!8pf2 ml,4@b5G@9IdQRH<*܈RXw*)UA!@f m&dߖj\q+8Ca5mC ("H)Hg 3 -7o ˇǥȅd 99G&݂=Qqp{bEiH.n@GbR@@'f:| 9:esS PUjbXm1eHFXkD& 2F|La;UrG"g# -1[TT+7DEb~8H%؟ͼ]o -Z7BK6w@$^~{h3@ Js @X~@3Gz aq@5쟵֗m㙵ԠD`"TTvK;@ĦʣҊ2ymŵJBRp,>AϿqMNhROT{e55 p3spL^>|h94Vt%WܬU┸rk rrrq9ufH< 2e.q @2P0ؽ:і:h=N̻,>ABBȤ[0ڂъ_ژeDD ҆rL'b{ hbV\ ,^-pjH&| NFM)¬BHuwTpf‚d!Dڐq{& -mGHRV)|AJ,)q| ?9j1HB`I۵vVo${YFg J6f#$!0اDy 쓎uzvЌfO`4qm`A1$4&./ ¼0h]6[2;?W34aRZP=%YD: c%YFqDj~(ֽV(ֽz^[5@Ig#M@OQiC|x(!5V1>PMf47L4? s PBv_$I 0mJ)Sbyu8aء0 ڔ&6 @@.&RJ=8,؅  -LJ$$)Y-{IPn 'Ha(hw %30K EharL2ezA\ %lJPap@M(@= @y'1`ƀT}aбY w\ya@SI -LT`SI`M;`th TKTKX"jI474!@ں#k[Y[׼(HUFLCl*W )0:) ҐLg/2X [6hHCKSZB +Z2FM% *0bStS7g1vtvL:c\d5P)>%^bڤ k?/aFI\ՄK -t -o~cq"cx3?bzŅv9u6/f\PoG&l8ǘ6 G^J`xhN #e K%D(3k&%{UZ Gf$- -$('ΉFXDc`1/K9_5 ✔6f#Ӑ+ % BҸ W'mp478NxQ&d -hOiO:#~a1;66(cGܒ|r *^V3^tM誠UA]t䱘D͇R- ID&}L`AF.Qm]"}8X#f -!5(^[3In0QvGuGh4D6}jlC+9tA-PMC=lPH tf`Ԥ]E&RIPKFvI,ݕ09#D|3pt(y4m q#3h4ிOr3/X2'!Oq}p.\"0y߼^j'']B܋>.-*T$ BxqM mp?y9 O+n5/nHAv3ǷEn#/ەtZXX%Q -u6s -ȤSxoIVQkMӀn nK`U֪"I#o`u$Lt%H͈.IaD(~ WH&*yOM`;i8}O/> -U]%:BR m%ﴙl̋i'*ʤ9+阔 W7ic%_ (%" $b:Pr]jm8Үݽ鮼4{ar/]WQN7 tIޠ ƈb -nW[ ey׀([QPxчUrb-']Cc^֩7þ@pq: ˕OdZo&B\cZ>"|~fr6+QI[RhI0}&OTpphT8ۈ6߿@=qI;PI>\$&K1%씚$Ǻ -Zg͔\ya~ib6)Y;1~p OS?ɮ˘A@62PH(G`A!mMes~Ty!8+(;HhEGj_INZFڝCJq P\Ph YAܹ0]9|<S?o + 4_K *tCt5;X !E`<,,:@+ -ګ!KAzU7U6u7DC ~ĔheuD["`|=ikt.+ud b]|8R6G8+#`@KW!7F -z:Ŏ/lҌmCڐց?Eu7١\h; -c]~j냁88J6 -/nr+VyȠyLVj(04wH(vfmTFwc!I\Oow#htskQ-1$bzK04D99i5[-tTcb[@/ug;X~PUV1DAK~C*s -݄JItv0 -A/1FWKwDӎ6Bѕw(P^gEŷ"bli|T^> Q#p\+=Zys4 płKW+6G`KtshdA -++Na%O›'W5˯\eLܖkavvC|7a=iOeѹ[5=د8j\$PlV7F;l5>կ84$Bq@Ԯm¯UfЭ,$1i?<ͤc;'7SV('g4&B1-4E9U9y~8W& ESAMQ++-L5_`F -ea_"?_/ j4f=.{Õj! nבR92iTIB8|mmP$%8|&`! ゘F OGګ2w6R\ "VW7WeU]'5fn}ƫpsx ƑE҇[`nnS} 2C ֌Wg 1EQqA$_HO1``wQP@(Hh,oRëF'E+hRJd~ xPr+mr7[krۑK"I;Bt Q9Ͳf)ghyTAǐܓEܦEF\qҎ#_JV97{1r= 7,/ьq#;!nNG>!258+ROXMst'!p“ݓߊ$}tdg|G2#m@aKfԒ1i+(앳s7LQZ@l7$qրo%P1qѪ7 !QmrKvmJE uRUycq -f|,}|U}jA|LyO:t7h*jN -)$j@8 ?4P[%j.ݒq`[*|6RLQp?d.ޣ"3@-;"h|IA*3^9\O +c6 p?b`Oy~ӮY - {OAO/0|afZu%3D t_鎓ܿ16$'Px/+W} `5)\V_HNB%k:S D[Z1O6@U=,"z -oў U ޓXP?h p6&)q0WVV`Q}5CpbuPzX4Z D pT›L`Ҏ=|\PVDUy`q*$fpjF|QX+!7w/wYPHw7@5Ƹaȼ09LOSV6Jx SQz|D#ֵ$Sſx3>/7g^K3OIK.XD8|%**9vSaV6"(L%?9VgHZ*<<{@6K_;rY a8 {uZΉ$0: 5p?2vA߼4R{]_Jmtc<6# .?\i`{m£jts#AwBV%o馇 ՞Nݏ 'p67`5!VHc#O! >*g f[&˳8> Wґ6㒳^PI['=Oh -r@ 䰈q>0e5׌VMX} -UVx1\7i 9Je5}('$ ,n&( -&:JΞ"ׂn a`[%2Ec_p׷7Ț^T(y -vPp{RLV=BFU$tT 3Bp?[ Зa}YS3 |p;4c54яe=j@ vNf|.>ñI[05-~F18MZB\`HfFC JUS]_t\='>B p/-XUZV#b-r qMN -oA'δց n*|tZ5F D>.v@Tx|੔m>pL.AwB`gf+f5D`SV9 P?NBVFP '7w0tKzC\ zyC#{i. &0qr]9ܽp#Wg wY B[녪jqX\frds%,-9Y(qݓYӉB߷o#$ܖxAnf-Gg@ -+R!M޶P^@k07a7 (%.{j7S2v.(Ғ'H Nz[O`#UNxPWpx vv= LtܬOOqH+|<|>`A[Ŀ-\f7?s3m࿴Id]G\v .n.TOԒ0ndyq6HJތ4n?2^nKZIaQLA^uJdG\k qvwAypt]fT_62Z^RiH7/7ov8LE ҆!҇ڢ-& R*VPO)DODgWe3 j =*)0Fԏ[\ea] s6it[${;| Q+ ν#8.挎N;k7QI{~Xz v7` Q4g?H]u S@O+nyD  E -w r»V뷏-5$z(q}`p XRa|.,'*+US nTA<9NըFYzxVTx~_j0DՑ=M{BI_(3X䚿vYSN4g\M7#G=l7o#Ik!dUӞ4ڍ8+k Ƥ^&^|PĴ8]ͰU<7 " ފ?ql.$F[*?0=0H;V&+Xks%#Ûf:VmY)a'aCڦ0 VԌo~y26\amFJ_Exc`fL=ޕ7S7wZBA2pE?>8vdgrLeW)QvPekAg7'i( fґkv݅*(v"܁hi7GpҴ ;O8[܌Jg 9$XDф]SRd5ј -7тC)sPXjH[BӇ0^MAǰlINsV& >Bj&5|G? Fjd#nJS?o -f4>J!ag +O%u{.JGF<-&f, -/@teoW9AjqpaJN6~bjO Bqմ{*|19x2*EJ.Jړf ]xs[V_c- -]'UgO&r4_ݭ?gޗ]g!ޕ[60ۨKuV嗼f#!jdEn0V 0Ai6*ـ҄XH vѭUp]mF{sQ:6aVTpW] -on_wCqj fYmz\ױXǓfbZ5ykOhDX>&ZT2%$䈘_ dan(M| Aj7mLڪD?4V[^ -lw%m3e?8` ),1V;J#Dv$U6#/P2鉣KmޒܬZL,hwuPd0/"nGL^뇎@H|iw+eQx5ѫjLZ:C|iQ[ 'L?_ݻ\e o>{$ n[#UI <\%wgqsg ,`_(Q¿͙?łOͤ[W -' -o>|iڎP\/aXXxWS*ID*YQ UKW-_3SU|s_bH[ORy@F]>V?TN,N -*=ؗ;T#s\0 H`?Pl꘴əmYb|& NMϧ -A*E7$4x #5/ɪ=ʍr fB?PiɽؓXiobd"mvAJ,5`%09Y(zOUǞL׷[[WbMt'ўڊ<R%l' ѻ2Ԇ_Q ޑNCd!/I*9Waq>8ǼMV ?\Pָh&]N  t]mEUVUwi()%":\Avt(yCVep30>JFZ%ŔOH%*4"1KR® 7%/Hߙ!jXxpQxMstA]>; +,V_W7ҞIjS -AC{'mhA]UR]b`+\>J\?%ڪaQSRJ^M2ӑ}V`߉L]+kOby qȅfVGKg}Ҫq%m'=kMĽ1qI|A74A6ߠYS{ h!G<?QLh r#0=J"]<u'l7iU/GbI7ָ7\LN(^3(@MDfJ_+`ʇm I*®˳&J6l0Af$F2t `BPP|j藂“*؏qHL8NeV>r"Ɛk:,m"A!e2smצ&Yր+F`J}+MA4ɚA>ά] 2W8j?_nKkVNQM&1B"T2+0U2N%i{ F,geΰcp{7+ZWj:9^nPFj4 -CۛFs?`|M76t&1,pJ^~P(&{қ\yDybw)$}C5_ -Bz^Pggٌg3,͖ƛ0D{+̃ 6j\`K }Lyt=83yrM18M<;K aOɘ]7ęZTi݂X:q,V^ -S\I7 NmaW -7{ i\*ݛhr!|>n0>Ѧ/7Ǽ,,PBHDU@īEڤDK]< ]Kv5)IwƉ+2?^|к!Hd3LAPcO/|\ݬ|cݥ毰 /"nEAvvk >R>A$H}N,G0)ܚ G@Wɚ|_-;:ԑ=W=iCJXgd߇3e]+e6a9iSud9S'!ITҞ\| H !B5NT0\"xưS/Qx|3 ԑ^rb֘ D{7u<&BFC[ ^PJNY}Ki&G%IKε_2W1*CڭGC` +mQ|!dB3de|s+|==g<^K+0E&Pnߺ>01`yu9 -]icŹS>'q%A}5,; ߽$a\y\E³aq7BB`EJRpG3N+pQ V(˿5sq8c˒. -5D1SjLKvbȳ;xS訜,׉ EiAE7K ݕ[&mHᎴT!a_Po9eք;/U;W8Ozo!.'έ#`e,l!!xHbj -T7B#XHp'fU%kܡ&;Y3y_P"j# A|}I)iGCei'VLO/^K%)qOϧۃ?śVis< { -s,_8\ ؗXfch.D}_J / Lڥu7+}鴐0&P.pc] q-_t*J f?80XܮW**n4O,0,}\t^QO+ĻI3&;c?YbOe]x(#(PnXޮphnf{,Y3PWR@*?F;Atn@ -?jfAqM=j}w)oX m=3 -RGp,IWpxL-#ܬNrZ㸜tqJL1 -8C(yLS^q@1iG{14{sQ}v+_4H|!}U^+nPx?մVYjōbL:~8}^To$CL]j3ZUPxxk"ZAY!nUI}8(c0a/,*"]I>/KFw_auXB!xYGy'5Dp6bIl)b8K>L.ړ|FL^a_#0q~WM/LzWժ+ wVmj>8?ey7~WY߄RxN)y\ty /j]yW'gQt0?2i~_8sLBj3j)hڻu&|6HNrxR[t(KـTWڪ}܎B!Je_T)9tzxt}5={UI&nZLW:Wc>8W=4yx6)g'*51wT3z9]`ޡP,+` 2ſ1Y5XdE!8>CT>FplU"w+8fB֪߬יIS*CNduCF /ywBat*_|HCW ;8Dt~|hSnpPF 14B8Zՠew%Z3,?Q2&W*A܎F '?R)ɖq6XK@'=4J}Y34QunFyL - VgO 𡔜Ӝa׬,Ϧ7c.-_>~_^j+N@dA!ݜw%Ag6#]@V !͛7ON[>:&}U m0>Ήu1n>q>YûEXxxi [ I/Hd` )fudL4*JcG=*-yg))xUW'i u*)J D_:4&O}j$u]%D&i,X^iTrݗKE\e>0CD} \uH)*#]AJ?T!h+8{GJVY(a?h:XŔx߬:uB@N1_1΁sC+VNVt ^S8تx_V`^7]jgux[nf҇n̘3=_r7 Nk:IA+gJ'h7{ V -CE\A:=(;K\xTSj:mH#d` >G->beL7VpЁ˃B+;ǔ3_ѓJ~ʸ qQv|޲AD d6cUэRÞPڟ㾚0"-/6Bx.$tl645fžpDIF(nR{ul}Z܁3wD*HRf|-.Xtns@kY/3/ 1&eCתj)QEEXsDS5=-0~0gp3)MvMZ:0^ҏ-PD(Oi"Q}A<L$qV̇: d]@, n: ӎSgKPwxsV@NMp-WQ0q>w x -b-sWmb4iv -j7r@-TOz)qXn'vl_Ө˘^G;/\vc -3f_6h͈ӫaa5LWFS`S1^\_ C/s>U.lKP(MJP-y}zRIa(@gooUuA00Hejg2`{A8ۛ<v -|V[Fl|Sj+rN%-)Sh3FA[MjZ7*鄊bId=<CiE?-e@%8 it >|L/R% Fmj0 KX".QWT9R/kh 35S`$O^q;`Jhg;i$9qx4x9 yPȮa?*w7|EW*NSyMeyPF3Ѡ޴>|ci_$Ρ 7yXUnˠg -?lJ YMsSu.qW3(QYD$~j* 7J%gkΡdjye ]X"?J'P> 0=G U#_CI;eቋנvR#k!82O%x`uO'1O\̂yNlomL4$x$l1jYC -ʎ}\#l*ȥ> r5)ؐrwK0G2d=g{Lxh %iwP&'| =!xcB- B$1AYQ)n(u5٥kʟz扆zĸa @Qҏt0i gC>wj# hIY_0Q[>k?L#M!]h>*'ʆ@ƒ%ʩVNhM0/k:q^ZvmģvObcn콫kˎj>0ndJ8xK0}X30lU0wz&Hpkj6jず7u |V7 2[TMy8,ꝸjMr.]eeÌlK#ȓUSQZp&н)ԉ_^&|OY$6ۺaCy18p['C-1_# (Ǭ2K\ D0ǓVJd}GCdb5|P So n'=s;QЂyC!JO喙<: 4 - /A"2zPF(~mnj,?\OoBtǙgjIb8-66.J+&u_{Ҽ@ _e3Sha/ՒhY6?cT>rBoðPVyXusʛ}H_PGJX b D5H}h7T*_%jT"lZ]TjjJM5Fj72s5"G.Y^E+ߔ@ˬw5r\Aq!Bn6j`R GB|[v"Haϔ -h=q.8AkE j_Da47VG\A2{ -a@H7g/n3K Y5<0Us~50XKZhZoo#rnH4搼l.Cvq^|3gJlw~3rHK L,Uƭ2eN[ 8/kSyMɼtt>LsƸc4çJ(WRE*2gm464Hї Y&Xbea|h5ht`s*=&<;h8qz -Yh?; o T5Wg'G}`TҭWD;`υC4oMji/AcfY!l8ZVo{lKϢh=&|^B7UW$v@V|Lf +3ˬ[!mz4۞m%DǷ7w5jq4&]˃ҍݕׄ]2pKl:S -,j7L4dگYysV E k&(DzRVxa GLabż(O,IZEyCy#X+B]%o.+T=GʓHVDeRg9)?_%oHi]D8U1 (]N+*--M+=Q^l洱p&ꦑx}hۄ5p˳b_#>-[ЁEKl7r+ZgPo%_"ۗ2}+pmM? ЊlW:9 fC"Qs ސh*6fB[-tQ,0r*6xt_hl^OXk3z ?W"7*L&V~CT7dV*`shڡr3YމwJњ"CU+hsop]Tz 'Me@iєvZ:A=-U6ⅾ\'pU66.߷Htx+ɥֱzk}ϐ.mFb-lԚ|!c8 IB2rQR@8dQ`dR(}}T͠|W$-'ێ ԼRڰyҜz$K(*OV)a2M vz>&\H3RoeV-`HAٶ\l 1LlKhBLފ52yVe0z T,lk ]TCen}^FG<ׂy#}(qpiXB]*`Mf&y-@a5kY0ia -Tamc5tkG?,Bb3br>AcRd*4Y'0ƌSᔽFҠ UdiB1Bw*1tQMF<桘6@*T @G*he)D dm܍qv_b҇Vo]U8 QB@np쌉 h@Y(024Y$o6(d5*IF d~mL!Yru4EQ(=^۝Ǒ@ŠD=[$^:5KIM2Vujm`S2Ö#apwMTp -iU (%#k'S ; -EkhEa%KA/a'йNhPUbRͤSjPŐuV{4ZsS1 -eF%4&_esU?KJ#t opD=4-uܟt9N\F0-BA[-h4++E5د8WEO&E/T>?R D#ӔJ+ꄒ"+^PxPM.Cs@~;U6lͿI4/Q..Ɗ\v>g*ьwOszek_Ƥ)X-eh[Xe3T` HwnC~,$Zo f a Z֐ djo=VPMYɟ銡Mf-|'4){Gl:R%7"G_YLJ~0:F2B`lB;av:4dsݻD1(_UUIٞ:e$PRD -2yZ0Kh!c4jE"wl?qjd4 Eף [z<ĖeTi0A?r0xZ+*SpsDɪ@#xM"kngcL|AK6bb -ō ˘Ѝ/a1AX,j=R(n@_763Ѵ ayU_m}=+0j2vTV4hz5ȫȐ(c٪~i|)QKWK4B:iY.KVA#jF]Q5hEWVʚ2pO4MZ ؟i-] 4a*Froqf/m5.\& zkR\ [&9\_/4 r*( -$(]*Ї -a[/@{ܭU3,N>?@}*C])Mr)R}f=;p3[~*x1Xc LKal(oBIJVNr"a -!!1"5m;%) At1`#>QKq)&whRADy ^iXMvI 7lfԦ.רuSzLt]LhaטW,irz/$2dLNhILIj1HDp=˵<˒'y;rph)O\ƔADp.zZ ߠ,wtJ> \ʫGO,\̫nP-4$yE-P,a Fr3 n}_U^t^EoProm-C 4]a"ƟɼxZomnP|РdVHmzW&)*ր/7w/K=0k zꇇ֒A/FՕN)^<.J@11|6e_IN%>~4wHlJJ$RE}i?$Uo-} CQ>- EQ2R  r,n;0DZ3o'6DYY<^grS=݉YVU /,9Xa/KbR+LN ^LBX|f>E1VLHAŦ|u+9$;7NP8|XĝvO8Hėm)|_FB#گh/ -AǍj7aDR|GDGBM!$e'Y9 yOQSi`=$78CqYh1 oz>U.Yv =w/GSO{1L#;-[6[{(0:ռ\/~v) ore)ȝF{h'I/MYC^nv?gTD%/7~U9}pB;~YamCVZ$xZcZ{ߛ%uS_g%@!.$8k0J.Q4@;{ώx$LW@DN0X`Diʎk{WVkC#i2vy#&MaN<5J .L[:` 0l} Oxb֡97L1p&;{ ҸiaX6433k=ץUјq)RT.[)Æ5 X0., :ECq̍[}vԸg!֒qG2)?@:KҏHWk||!G=lIAs1%L"7VՕݿmƯc%A\;pEEw^bK05b+3S 88{8ORJ\97ĝJ|wBS`)۱tʨӋ zƬ)DXÓtd?"A]&`#Kedڨ;5X>dFnAOr.UY0!@RFڳEԜ9B-09v -Tyfg UP2\CEG -F:h֨Wwx4(Ew$àT?$oo^)Z-:u:&W {`ѽZL=^=;`*( KXl4}Y$l$yA-9 lESCh FsYW!P 7`]BvG?"]4*ڌWh]AzAh\i PR19:Mo%Oo@$EX&&ЮTԹMF9&xKXw;-P}TY2V*poNNHͭ6?'VTұ5G"8 )Ȏ /]#Q9FtTB7.Ă0v :d趿 -]!6$~S\{ @@ 6;aПdJMF:(o/8QJ -B/I2~尤|0Th{%U*Pi/87IUgodI - OcXRG+< PA'W]eɄ\W+۱3 ,2EVQi&&1vE.C*qm 5q? nTzqlh+l -@JKs'/g$=]qSs:10~ ?N'ڜnm[%@yg5L"{!R "A4c8Mr]!t#i0_@iiH}EEw6@0/Hk?|C[;s`D! *.K$Gjo:B3ŏb%NyL ,,v;;}yo cP[:$D›` 3QyU{&~q09seY2NP2)N6I%S!'y)I *sQ8VR%+$-H VhڈlL:fc9M|iehR=0oWL*#K -D:,oѤn-1)^&\$;&~HL얭 䴶I҅=4uU gÏD7o\ؒ -R%[=DUϵg8OB48yH '2'#.U Vh$>V_ F 'Č6rxdF%XS'->TÌp3J#Oq7) d"%FۇGVK(T$CҌnei,mlΈ2ʒ)`a|SҊ@3X@_Fo`eq12f03|%zF++%~2VޱV { ܵcl{h6P~4RlM5(-lf}r.s+H4*d`N326y\ؽ.;W3/+ȫf%oS _MJQrRzfg]v2^ =݅ blKҎZWtc9]HA,TBM]zKlzk4$ޯ{?PHC@|OҝScBMhKTt`i+v=FSvD8( zD½ K$KS5xfA F7ii\!D'A#"v4k`\d;Śb@''qI *m ?\-b$sf2E6jmO. _`OI˶VI:|MBy>3e0q=Ĵ684 ASOs6@t|Cip:kmZ LB dMPSvF=>f>BʣU $H10_"۬OI8#Efwg`Cgkr,M=Ļ@b@#/b Xt'`%#(}ۭ}Vߐ 96"5 }',AVC_ -<~b pD3MSЄ~=!k⨹D!TɄ3)b3`3B #@Kn)]3B`q. -Sb@Ld7]/aNᲧpr> P^ϐ>e]L utFA>Y:m\ّEGkrFVƊ{6?诮ش$dĖ.q[z!N'A mh'niU*P⪜HMU8ipKWB46\QVyg1e5 h˃Î"1sζI2F&p v*ܮ ("k y# -_vP%A9"*D~X@~h]@znLupqƤP8&.&CK0э%`JAg/H8\A= 3. (E8 b0x};3vTR58f|yWAxyxA38 U3x24`KHq*G> 3L}`Rgܕ:c,x4?r|ar?Ue>t_(O Gg5U"3([W @»&LXl,#YPZ(*KϘ2)(Xʢ];VjP_Jj -Xa -5oꜳx -L&Җ__O 2A S*'ǃ8'bNT8K4mFF kiQ4g:/Z%cr'Mxy}'[)#3K2Ѽɯp[ aJSrKDG"r}׭,Exp` 'N h1->P0v-J砊5YMnS$MnAMbk eE?x‘>JE.%ڋM{wl״̎DD,wKbrܞ6Ikro3(G&!&oo_V?bQftmm( <&sDf{'IWGCSVbm_2/k RcI,yTOt=K%"T$q [`WDGfQG0s.6^eJ'QΝ' /NtlA4JxX5XrRjXyj]R0*jz4B 8tp:2w]* T.f:Z-BD.c!0u9>Y7<{\.Qgp9&7 ˋp#*%$W'0zs):5IZo) ~0d -Z(/ec`Mxh :R5s* ltUZOPQ1)[uƥg|mznQD>_ ~vd H/] %g?N.YHhx z8/!fK雝ОqJ߶->q%ޒ Rt&,h'CuTQZk1pi^c]fʪ("?dKȡd)qN~|??Q U(7dV}C܏ h;q>?~6 R|K.Cal,DR̀$% pu>zFs9v8u;0^䴔&+5ĐazMk3*۬^E0DJpyQ2$1۶%d>Z-U\Ia/7v3D;s Kt1{ԎUB[K`sBXb Du&G0&^#xJRtkyN/ɽ&R.cB+6BviYN& Q28!+꭯+9_l#._U˥ٛ(z]љVVo\]̾Jd C*`$< GʢXS9[RSVl, v}<ݫ؛}–@N2=ӆnC& 8ncƱ˓OHI# I6mG6l)~Q)1C!? \l%<]N]Mc0"h+}I8{8˛ S1x`)16~gHdWcz](:vYT:R^ q/e[ 9Ma\W1NȘ-+"w"| '-'gDw:QrbHcQ96bi+C̉=zVU-EA;9$O7;}1`J i8நBlsݩQ.P =g`67f@dh7Ek#Ky'cc uyQ\w>\2#|_.sny2 Vb,@V*s}uDhurZ>BDʥ'tiVLjpl"xvb G7nk8?)]HQ6uXIW) :Bm&N;(^Yc"ib4`>g]Vo"ܕkN7, {~)j9jVSKV}Yamk#l0N˒~ +)%Yzjc0)Gx3H]i6 -E.CgPZ P4mߕh(\`53"5>1]e?`Rkd!/Zp|qlu:"~b?Z_ԪېѲnxYVwKzw^ ]J%m5|5D2S"O,Eh_N!;TƲܥ2y?H' wϨ_$eP yeW#T '*y+&o! R#~ u)'1Bmj]J -| :yj<ł1eۢ$+H&$lj֨J(Jd8yWە`.&@**BCb8(.TI;ߜ9A~rֺܑ[L!'Ny>mXEe6wX'ݦ%zj#'%Pp |Av,W8) u+t(d}v>Ud2' ag}C_!;X6 -ymd<~&*BT['KDdj_; /ƵC&Ѧ/oNc@QLۦ˴:V^Sϭhe-kއ`&Hr2l`0`,5|(Q%yލ}+9:`Un'2e—Hui쭉4)fD:6y -4;).DJ `<_[(X(3 Ki<:PQ {ÔBY^?~ۍl܁ DK}=@hfϓ}nQۙCӄvkw'Bى4y|j,-yX`U3Z?Tp>j}ҿR9l !j3 -m 45ȣ~tRH/&! -UvC4P -n]/#a w) 9.bsm{t@gZv_/>a_ -ݯr!(9WBJfD -0jWc;o{[LlhrIk -Rj 7O $T37# _|4\|Eܩ i>_ 2~mZO?D Y ٷUF$ςlDKK΢嚒!?3lE! Z&цW*l``Lz)qs$a )! -?mIm -+x_s -m#9IE妅msYHMwJ:];SRB;8K0="yR{cf)MT.V0 -}<%GYvZr*TM!0{?΍n Q_%W Dh,wntG"W(KS*AAqM%]I -9w x7]2iD2ڰ8;R}G@Vܤf[XN4*yBy^lV7^a UY -=cPHMX5#$H,\Z`HL&MzEֵ x I#(q|PX́BYr`nGQ9'sL_hHbŃU147.=VqG-U[ÈVKͪA=e"D@bd`gADY701l+ b%P@$"zcDYLM|!I(@z$"6\4,Lk=t7bI"wR[z JBOO F~౛&CMOo6? !ڛ E)hhLbBH2O)o"n)na#X[JLcM& . YtJoܰk\&4 u/1w/X/ɳyܬi(x•PX]Nt+-kwZ`K7o V) -RFX.cHwIWN2ODThq0qWҿU([Il@quZ[h;"b~#7",%W>֢o8N s#c bA-u|ISE'p9meb,H SoP.S&5Kq,e}%X"V=\8=7e.@T7&cT_"h< Y9-1! UHQ/3eТ9!էJE=i4nӖ|x9!Ԡ6.;D|\\gu=cXDJ.2pv("M. w2HAJe[>ql)EܦVeƾDz:tƅܒs#j3Cǃ!l Җd~h`C|#$'`R930Ёx nOJ3fP(t.*|c& !"Ǘ!K>@?lN2ZS=m6@cӂ@o#3mFӆ*8<`A35滄'mMx[xs~N-Wn<R?qі$“ 35 &x< IVFsg -Pq8 .u n2p4qg̎"n)UݫI &)Xúx0~oO¯fJ>J^6`[j]wdQ+n>(:$APeN`6Y 6?U4 hrUuRx0>h@M}l!qP:Θo@wzA<8&`TV|<+`I)jce ?.)HA(Ѝ :ƑZ . 9 ɹ>*Ւ5tQv%Z2C)ǣUG`$=ҬdTMdd~"H7# ->rmupY"L#wwRxivvA|C_nM.Bj%/l\Տw}$n`nν'G X@wP`sAP^BKlV 82!^rR¼0bĿ928_7Iv9hOZUYA)ib58 B-GOR 6[ mn0]#4GԣT*T鎜tjk~8h-% ŁŹ -߻ O.\,c@]~^cR ^UĠ)?'[zYxꁚp^cy -+ -ߪt`LZ-xN@[.NlĿ1?WB^ 7nq7UgOI2n!af ` ,^`(jXX\|.86Cq[-1O:j::F'MT\CQ&stA2Fƒ8> Ag 4g7-GN[̓ /$c i/P:#12vnC ,gvnsPe|4GLދZtT3!1K\hmq$UΜI' %nuavbLu uRUr>Bjƛ] §gnc*3zI UZSYyM@ u&"_"yҺ>hA1!8K -˟eґJ`Kt9B4&T qp(I' -T`(hBHJCD 0(HC|>Y`OA9澔p>XKZfgF134ڮˈ F mcO #c1wIqm0WQrxل JP @SLtv]7ٿ;T[((m퀭}FCp]Vv%m2i`Rx8E y th-4@=;8͚Vay 򢐾#oL 醙2x [Cws6f/x$|lG?fhCZp>I(V-`v}m$FU% -@{OpñvB(ْقٸԃOA!!>ހ>J0 (qG$U-=xxw8H\_đtdg*/:HA<+6 Qۑ[qLxʍ`?+ CP~0DU)IBU5XW[3P - 7 9vnu0Zrf ln3= 4L^zt{ h Ԥef[ t҆Ր1n=la[WcɠfҫÖ>n.'- -V]QC HN:qKQi)jrTs| Q1M>!~ -l ?U? -@M nf[Nq1l.t: D01d(rF)] TxգcnPSHBZ>[WMU{b.V*|vL+6)(B0vmԤ!hh$v"AG"BRڬ5!68A=4P*aç}]uQq6ħM%TJͦ8rj1kanDv)1j -2 L3LDܞӎ]pA7:#q=2Pf`:IosX+VsOPbxj=$1TL[AtH{> #ݟdpi >ݐF7 q#aGVge ʹ0/%ejLIXۤj:,HCN} -Y<IKUr BlMo ] a5!a¥!94YcȒ-"ވ#Ve>Е4V FcvN} nG-09OJVӞt@'IG.UKSƧ[U#[&UTJ/BʤUF ;TK&Ɛn Uء@ NntXH qIuqRmGʺ^N̈ JڞNV4C$|p4J)H؈iHNkcP!<h'YӴUF9OlK?@T 21TY6y4p5x^mu Ebd]/)L8O2 -WRu=_ѕ4La"b~B WUd1[/Yg˚qg`YJxZfa7W&+c V'AiDE!1z$eA܌H^IexD2wȹ -E:2i#&9MtƔB]_YjLs'||e향kFO@+@AjƳ? W~"IqIT@59;+u}lCms٥nq>H}Ms%Nt QV5OeIXYqnj7sju=`S+>^j$'̀]jIB[Y=Ыł %|3PoEZ[Ҏv^%')QxfM:;gp4B4$Ogі,J% +7ɹHNxʤAmM=s`HF/iҪn6,ҥPnm h/U{|\s .(,kP 8xi}tEv -.YsgS~QlUy`_(Юb -O47\X{0~>Hm +un3ցh0;e`qxX; -7$Ҏ?SDZ'M)i%6e0es |LڹI;l0 5#Yh#.%"=",oH$(wfRYƤڊZ5f eN~vWW=_YqU%mQ -C:;$ ͙麇]M{Õh %5B7c0_XVk IdΪ+2W9bQmfAGa)'ZVz .7oQ)V\Ahp"4%q(U:\kvokMGu "hMrx< -SH! Ɉf "LR&ZFZ*$ -8( CQ (@%yC /tuA ʒhۏ_6ojsL8~G|S]ë*%샌mFy50ڜUQ ~+ܭx>4MM*b'ְ EUP#){h -ǦR t  &߮z(D`|{+>ƒ9Pc=bR%7˓nAY0TovPꃄ޶RGkz!CbN - G~) -6ge.kÇk;fs<ˎ&j6<gm[1;Z;5Gw}(=k8+s9kh@뿝#"t{pvՑUC]NN!7飢D-Q%O.w]ûP]XӬV3p)w=5䑗!uYJ[Y - cAQ)n*IS(~Q" - L6l"nYTEdRX7rHF[zuC -,~*e )H9Y]j$1D??wer`fwJ1( eaß8QlL`_hTlbs+_+% -enr]*Y=2M{eRa֏iRZjTh'~wxR.)6?h@Y{43?vu& k%{n]5 B[E}T͸!/vPC DGEyKX7v: GxOn_L A%3[#W΋b>:t%2몏`*h8DJ)C!Js ڄĚkWD7 jBQ(MOX3? W>*fs>K`DOV]d""C{O[O2Epa;YIR%2e~0"^ΊY+ڼu(2xg{'OG7CsK{`?җ,ljujHS{ZlmCF/-]ͳ ~!Sv>ioAzt|_hW/ӧjkҜ_(B֏B( /T=:1Jb7 -<#+XÂ.d:ULbB4Q=?ZAąI?ŊU`VDV ymBüʢghf?lCrj_' I"f *LgAGך;)$8\{"7fmgsB3CB&:O/9}߯0':2* 2xAQ>hq"iqBYiLL=i#GRKsA -NK<]﷣ۭ."(^-^a#L `5WܢhJQusHnVIBH/JF>Ǧ]kHBZEuAz8;2sI|jA[v8PI d`rLwQzXVq+՘BU6^*0S5 Y\+ʏ4:Ă2 Q'+}u?Y5t_Rid~W<6h!.p ;:8cfXpz̽`lSQ<Y ?@Ų SӘb5TR&pr/-%淨= ~ -5WMll CB &hⴱi^A:,?0OilMn%kf bC)CL$?&7\UȕJ o7Ŕ IHL;TUؘEp&/ҝu"^b26eTNN0֮+ 49ǀXåS"-kJݒ^u¯cM s4~ݺ rղ^_D4%z|+^^ 뙰Ҹ]VL0(Ê@ Ǧ_q}l߀pS\L6@)˄](6M38a7^P`%^Hl2V.ĺHՕ5doz=X-()3 -k Cdzĝs t!5],d<{/vk~zt4 M1ƓhmL2ʛr0|<Қe6{Sjpv=IHQ D3 ,+`eVUu,?~X6Ɍ Uy(Ni@"JAR娪%jρ+E)7@KUԃst8FߴR+N>+A1&u=ZI:.O$hRLx}:$HPs`ᰒv[SH`0Pv#Ƕ!/{$PY2KO%+8/mt~)Wn燬LE'I70;-8|u$=ʟ":[r+H:xStEsRb_y$ qoDݍ!6dgk E$IvklMtNXK:b ,%ZKY ->j\ "]~VgErw3n3[hKgavyΐ7o=&Nٵ.ݸā [aƄ+^@b7i!\ʹJ^dZZp/mLt]!;Mfy5zE<<=] b@Djލj*?8xa%\tʧZ[s*UܰjtDnFBBo$`nu*&uvT)`B]6lk^jomv3 wf̿֡$rrZ꼬9. -sA'Twi -4u4}+ rjcvŤ2 %m6^1$6Hݒl5V͏Z8CL®n[nw_ϊ]הdY+эl6'XEe_5ÁI\fQKEK -M )gP -`&>mtNa* px=7.LU4i<~/[ɐ3'J8ҭ$@U~?Vȸ5m% -D&ţ8/\aƔBF>`Sp Ilo%WUi%S fKI^ ?%pk앀8Pp [ 7Ō2Ws{1Iv(dp+!JuIE%,L-2V%o~dz$?s檒HU[l[?8$v 8RLj5{ Lgnxfs_ -l7D3wNߒa`X yߢ\^E/smQ"eX%s=ꥡ2 2瞽e֕^zQJ'$O λ4V - 5"n O>ՀVLJHt0a>BMT~PJFgQ?rLQ\ PQz>I`K( +V%lWK7* -峏/گO3:fϫ6-- QPNklc^kp"b3(%5~;h6'<j)9WMz 6|G.nM T6vuas.X?a6/МK!ވ9 @3vJs"M}#>C ]>%P5jy (C -6NW$w=P'' -i0"Quw_A䀐_H#3]Ho#i+kfYA:UiZp&w[ɭ"mS1ɬȵX鸎`k!Y%HNyFjp%RmA멢MW1`}3ElT%kmF0򧏒:#}:QcP1Oq-R/'mVDbOl#G O9"J -'隿*πS'mE  B28K2ņ %P5f]|K-O\}fRȵ]/6oDP&Ԃ&|.#+ID/Z{%}4XZCwuwi_o#JBK])z%L33W K#֌@^m%KZ2eDiێPsM͏r!ǴhQ枱z'lDp9 -5t:erAۣ&c*Uk"Ha_bae;UD -e Ue\%p~i)h\NHϦd/GztH\ $-$-̚NkPGG<&p /k櫡 ˯_o =xtCKFE3ҷrkuTMV`V\{ZI%pm%ڀ|aR4$hW%kzgY6h#As_f%`45ysH%&O2* %@]&JZn_&5rttka t7 kD O ؞\L]Hw8־]ALqʘ33Wze=}xEQv[¬1Ou)4}e9hHL-ӣE;G> \[Q74ɠ ;:qeeobQ:/l¹idonN#(u :/GWsڌk=/kcC46J%D6,bf17gtrm^~~֭z؅ ( Fy4wrb0)/Z[p`2zyIjL+I(.#R<(8saN|Vߵ"deRf'xc_/X)+Q`/+Ψ'U&7|<)\)Žm&>")PX7g+b(xs=P*brL_[ƒXk#yJHB8Y&Y4X[ڈ#Hbqquu=fe%52yf2654BknE2%T8nG 5(֖c ϠUB %fcyl 1X_Q^y}in> aM+'Y`utzÚH0^K_ƂouECfPTfŠVHb%{1qƷb(m {!38cl6 ۫#cu8(lbڹ? Nv=*/|/3!`o6bV -endstream endobj 272 0 obj <>stream -xZn)ϵYP3`A ƫz0-Ǒꥇ[LSϕDD[u!ChB'ѲݨPDzY=_$Up]-8\ `b؊ . $O2Q8̕N LxF8RU|mFjp .Bf\v̰ 7Ǡʆ5-j8JK (-VMXY)W땞BU Qz2+O߫5WWzB -zIz?dOѺzo.b3@?|J&{ubz.N$W{em >*@ S9";{t]qPssQtxNHّ1wOk{j^K+:8_;̐=ƒZpNՇ8gѫ5$ (&Rn_!N{#uTHӻn1ku(lQp!^q{qŚQ7znq:#"8q76^{ĝ -Bp&v"JʼnN|D?%ǼH5u̽ř|~#98Xfߋ.3O--KũIhhhJ>e귇ZzEv{ÅY }17ʵ^?%p6 Wػbq&B^%LD4ձ]CW*eP -B1D5*œ*(1Ď o{נNj%]A+ >؄VVZBYkc*aLR,]0qA<ہ[zDW cϋnT P9M." =/}ZϏÿԡ{)zD@8`YV;0&Xs_+kUh_+@Wfl@jlJC'pĥ+^&NMY(IP3@`լ hk8cʸJP†MO2_̢eQ(}b)bM,ob̛rk-=s0<&kŇ EUhvohdM2<]mI,y2Jx e`U>-͙ 6+mȖmJA+6:oxso3h1 -3rh+8ghmj -x%WB`rVo%{`z"{2 (=rK@_!#p<ҷ',-.cA $atW nm {:eP'áI1]֊V}/4巓"XO>3K -AIIa:@l+H@1(Q[V Hh!T.Q7޸ay֯4Weٮ{\W|w -܀Bɬ r?,) |n"ΗG|?U,-*jO!^ lY=*kg^*Cy+JB*[]BrnU -{E[!* F6$|m [_Wps' -KUAoil0"1= ^u'EWYR"=Ȣ,y -Q! ֟q<Heema1>SJgI;9 ]V<ҒT]hQ|gi<SΦ}Uju1͇-óT"k5%ںc0!W,C[gg9mm{RJH!x5Yk)VB_nh `)umSfcR8 0jw,}X_cuǨUֈ6URZџlGX%rՇj21SY?B2x>tȁ m@kyw,YMO(? Ix{m UȌۆ H}o]_~@;Ns`uV0@e?{ -\.= L %p%Dz -Wo,Z(|h-cgy ?{0BMi}k,*O}+ ۜ@9UQ0XW^aJF`QU`:һlbq{8, s)lz[ -Q31F]eT0^֪u!SVEUiXUX](:آUuU_R&ƀU%EV/Xl d - 2H*Ы9}:҂ `*PK\%+LVWI_5YTv]?%:^VnC^\c ȕI4V@`׊\ysY Tqd -K=d$u:+y -kIj% k\*;ĕ\d5]+_``(,_DN;\Y-vZWW0 Kmxc - -8O%>Y̵-pELH@% '3>ʀHiEjA#fU_+k%]"qn+^Q;ֻFFRp fU'E_2xJ8g'y#_Vq<%nrrb!eUN;@*ިU+)/H '`CU>!p)Xtq6J{p#\}5;@4$T0rZjo0J|_P}6^4bZH -^6{MDV52^ǠEJmQY="Yk}?/T1p(K*,:l\=j,Acju$Z0R~媣"U~@hJɪڕ+Np%fUxرUGJщ_ՃwjpɧC"bi*:"md1P*ťD_ź!՞Jq."+}1={\IE,Z3))P=E?D~"4PpllIGu?+ Zy%kbb<يNٞ~-{,c+z*q V+ -p*!Bd4.N̺ zwuq -[h;HA\x<$ٴ]W@S.z, AS#FTV@[%K]l8+F$i$%115jdG~3`%I+ddvRf-}=M[EB/Ŀq3nݧZؓ\, -W;i"]R*{\ajL+3̐fE YdcPa}$9p'u8 -A` =]6M`D'' cnW )@9@:У t٦)U5rlIRٲ,}D*n];C BtpǎsRQUh>/>1ψlJA3C,2 $>.jpR"e֠ %sHGgax?`ue1 @ -?Z_P(}rj"?2tkʒKIG/I23  .3>{ү{R&9ꞭoTUzJ-*! -Vcn~vrRe#dA6,!\]&cKUYQUH㐱 -:.%_ -O-2h**dy>chPY+&k?J'P"\aD*![,d-[SXŲ-fF,$,(XrblXf*Xs`d@Q bM68kVx^r^ˀ$o tTN1[;0y^`&/2$^KQi#^RAv8/0XXR@SR-Թ@~9T;!ܐ;Wu iϳl C90cXW+>͵b^!R-dH4 H=pd#t2}t\5+u݀ksLQr7յzŗ\O0^U -ZW#u &g`\ԦS+Wkma| -H-+f ?WQqy '_N!m){uP1]޳ހtg-L]QY BJ+/WnuEde -w ?bJ'x`{Ւ" jk˲&=՝&pu*'㷬~R {Od+fDܚ.W-~"ZOu aޣ0]zzF-}zSԌ 7S\٤Lڍ gS6(~H}P!pۋ &$uGI؎* FK%Iz9Z-sVY٧ِq=NpkbG*_gr5 &TmQp zUW$9_pq\<:-ja,E[s\]smŬ_R -m4K5lmNbqG8ުjA,@ce9̕->݂*[$v4riLV.UwAUFNߟM*AJ 驠Wq@( 'DȽI>le3#G)-ꛊ%ie+8kHe7 -zVq71' bjNV"P2D8b C R10o7!ipf^doMx=DTQaK].;#aF#c@ԍ"lqoH\XJ8Uqr:GRJA\;U*JT|<2S}'$Uowo8ىQ46[̚~%>GyHfJ.1 !vO :ḜY71d;& >.C}F;a'ێKNxVSR%aϲcYJH-g&W>caչOۧh`O >0qNIVi므3 ֚Aw7ޠY @Tan iB*p)/ *!)\dR]_dگP\h vlqe|FC61MdwZ9+.fUUJ}Avo`nFWK1vtC,nwoipF%n?nJ.ьlƼEhpB+XiSLɥ<+k# -W}r )xPřS{6n"=_/L IF&pTҞX<ԗ 9QytN!ݘKvhj>L;R -M !\i&b,ٕtl1'V8_xC6-VRV8jsJH{(|?aI;e"a@]x$T`:憠. )*.8 {d<ɠ]^i箆]I#ʎ;RX㾈 D{,T1lq^ea1:&ķ\U%.Tq~; .G&պ15I 1c fըuL!IA̩=aY` pA' I*ΖUw}aKMvJ7_`15Z&; u=Uy(=p8ÎkgW҃ x V&֒+ BUgQxR]LZ%ݪ 0}Vg6+>~7:ay@_ |욁 ֲX 10Y'4juDwF\흢Pn .^|x#u_0*U`!*-GI(t)1T`l *Zt!3UFZzAM4#@ )O܆xNV6,Pe"j-@&P*ɺz*kW!*g[!H{w}}n*wɂMF1Ktٌ! q.!qCt=^,J'Q7? c5o8lY(@$DIքϘ$0q{udlނ{vB)(# U - G ;[ڨr)čQ_ Y#Qt WO}7DY+y8g0p,K2 P+ID,焴H\E?p 8 сhw>i?IIciEipvUñjŽ1VKmp1LiOE#a\/+t]Dt +ix x߮f&Q{ qPXtd&6ZNMrX?z& jF0Q#%Z,BoЏ88$ZI AT/,ݡ cOz~ 1m%=ӏʤ_X>f@R]F88Kduޜţ))d*džfP5ےak --Q=«6h+a@%ʫn~2@G1X_#^䱅x -" ~"S]&/9GD W[rPI= h'JpvYk@)U+9| AM?q=d2q=/"<tD:_ЏwIнWhR>+@a/\Rxy'\!K>aiy٬o%{ -w#E'C\@AJ)GOQ# q2Ң2C(Oo&xG>@\n -^ c8i_HG1b(tF#@R=訒kzsG Ht_a!(q_fB]GЯ4l-I'ʫCp`3GneSK>:/8io'"H*b5);Nz ud* D B7uIDTe4u ؤ#6iH#%OD蒁,|dOx]{@-G.~a> -G$WpH %b㹌IuHeahpLL*gX8`K?'}OI3RAVo53@:54GA?Ȥ.m12i/+!+db -!D2 d@P>F$$*0 -@PI -'g7.2 tDV=J27 {߀촦Fl1unfׄ.}G6z{]l Sm!cg)؍<FhHf -mo$I_8yZ1^4>?fc*: tHۤ5J62s7lz&fP֜HeLL#4i}+l#9Jj?)蠊$j$͏ %tw8bmpH]u;BJrv30hI 5\Ԁ7W7B{Ls]\9itp)pv/2cS7s׽w2wY`NP0ƏQlf}w! -MTOiRz@cv=VpkO-2ϙ%Ο5ŤL㷖=^*L|nH&gyMbvfi %SKdb_aBXtU͂(Dʚ#Z5ʨ VZk_8N1白_ڲQvOT~ O)C_tU<~yne JnjA,,AR@icݤzb k?@ 2jLR2;qX{,2XMZţU=.p5J1k[+3i'p8fԐkMw6#%HKu"ˡFM_&ywq[Y |;c؋9D9m$;;0.Eb"&:k)=\|ҮAxބg@6R_ -52YLAp] ;^r=1ɉ{?1>k8aY9ĬǏ1<\ }^%LE]zv]OP.za2780<8$]r҃e1e[2`̳٬[_kS'0yY7XӽvR{Ug:v\ِfV8#ZJ*I$ kH8{wm5\UUd\wXẅ́hjX2o)3 7ЅXUA 4+4Zqw}^%Z?Z)xvT yo!4?!\x$'A?xt|dKGk R M>Z/2ħRUΛB5N09imdvۀ3 7: -ۑ }̩EZmvjp.!I0QYfnR`jh'Nu SDTӴ)2wY郯⪚Վi$o[07FFd%I'V3Xm/ěLvG\PcW äͮ+SPS*R/C"vS#EIFE2-G@XⒺQ[jW$$_k5)3E s&\B-$?#߃& kЂM3eQ"pĄ* \!pKvc -/Yp-ҧNJb#ȏ哴@ -ՅC {.W‘),2_6Ez xCN%,QBTYMD -),g O +HaQd -rb/nFLчECXChFjX:*\q:wؘ+_lPIVkVZ.?d -3؟DjTL<16!/R+IS']fx7ʉ\#xeZz7 ͪ)ou9zU}l|K/e #)1҈0ti J,@"yEѵ{vMiOXya"*DH_FZdT_m2̣5S̵[wתy`ʆkL -^Qsp2Ok|od!5iTG =x9U Rh6T DnCN,ʤu򹃖IKmڀKɻ Q{>ƶB&38 wWon,/t880i~1^mg '~ߢA6 ArsU;KKpq,Y(2LRŮqqBG +z37y DZDnPꍿt\brS,|AP1('*(ܐ+8$ȋlyʃ-9 ?3zlc'n c N1^G콵Zm`vO as13*?he]j 2Ptv{ -m=|t#YnG^.]EW.(!69Ļ -u.\qY'C8",?ġVK~#Umꪣ+SXH$ ܀ g־tuu(uECfHNtϰ|l@+ a[kB=SiP1Mre!KydJ$[aEDFj)au2ŢBe=p}˩+V(<_k;fSC\ V}5*Ѵ1׎?!2bdX0s8PX En#;0x¯ {FV׿ -,ۯTVn L(ңb7XbXRcި9gnnM6$d')SKD*W2B-P Urr>E?e -bG)BB)"$lXDILö -.`P1ͳ"Y -}YizEvc3tab#04Y_$\4F'P[͚1i\ lieFN6eøwR&Ifm ZH6l.aE/UVu -*̭H+~C嵊ZRW[,WtY$\u,Ȇ/Q8OXs,ę -E<\x -XYmF VTrBeZl_W1P`hxXilfp|α^<ʨ( i6%kZ\ &*regiW4qAT*A w2kӒbc'7ҫ]:.:,.;>&DZ N -Eҫz9;cwײG$Q<%`:D7qsJq2қh^U8_vfB({jScVt0Whu>=\wȯZY|&+!w rݢyL|d.?;9RiB6%LԵc)9YLOrA“]X=WdIs&O}l wdúW'ZCR4Pm+OⰊݤrcb4W㴂cA\6e<eYf;Sm-r AdA]BU|o .~3mbraψUU/HA7?:ٽ!Ȟ݊۸J3V;E4KgZF IX.*iF?4vP -/;#SkT{`i7}Qְbe#c˩vpba1!Lc5Г~ĶlyaF#T+$3*L| &L@XPN: l_If9@ T͈߀5T{ MQ"RIO`kRMfAp^x64FzfImYe7:85چ=M+FF1dKc =bAi9wITNfgEH4>k^2$ 3i=<7h1%! K/qDW&*2mXQ@\]XZOJ'.8jT0op_G5 #rwVS+z Xw*^E#C]ksXȺ0J{]? :Keq\gyvV뒒4b`ĺ#tdfۊaN^ػ[=eLuhBnK0?ahN7f%" :1QsƩ('oMQ%iE,oJ7u\(vru 0~<:_|ZOdFR?d7 ADElY6pnMn wC -ʒm-ωnU˺&r@!+ ROdJQ㼰9>0ݐ;E=PZ:K, <яw|8 Cַ- - *郕D $҂j/օ>1)iO\pLl#䥽fOWԡil[|Mi]p B"٘-4b ;GjasOFOl?ՎZb5 - vD|ja,L取A^Om%#cg^ Zq]nA/0BaO~Z6Tt#M4{.ݱnwuRcғkùuqAN)Ε[ֻ XD8'ZﴠpD9Eț`; - -|amb!r*1J>}\-#BJ5/6A-bw1NŮ9myX`1jYE Ac6ppXChȻD;m]n3Vt~䞤XZHډx<LoY\~:$~B+K}K3m3Si]E*ٴ\-:P^K˟9xDEvZޯ";썼~3:ޕpyU!+=;kW2ڍ+T a;5p-JѰ"Ӂ:m,9J䤪 Z=H\UnJޮ5 5&ԕCؙ/ Ex} -[u"bh$Ln_Xyu Vp$^d6hp(uucBY(zn?xdXwXDɰjd8}0iP 7MǑaFaLwdX4EˑaEMSjF7f@%ɑPgU K&[/-7WDV ٛͼ 2΀%JHU Pvipס8I_gOW;k6,]@}9șӧU]J]@HFL@_a|LYR+nJAi'V7fj5htեA3ޓ@p?hRj Z0..o!,mģǽ9J]Y]XJWH{nXqS*u,"+_93tEy4kǖ+~-zqXJAso켽f>*lh8'XNzL%N]ῼvt4p# -Y*SG[Z^Y[2^J~e@ܬ2 􌃮E8S|fld}q|Nе藇+={hJ0SjxV!^5?蝽զ7|xm -[u1 (mrRq3GynB2Bo'Z8k#1'pt񱃀teg[V+E'52N~#WTtƨ{wNtƮ~HZ87~aq$sx%ù sze2Y.^0CjL#篻@W? }6NaB;SnobA:0#iRdNuG[>e.f&m8 Sdv&(7D@ E@߯/ZGE(0cw:GpFO3fh*3dv8=''ԱۑsE~@GJ;ubp!_̲H{Ry8Q$p*:c#OhhЍ@Q,ֶ ZS6>)9Y1o/¯_VMO$p@4PYz "r'hW`@xlV -G3b-&HY·FǴ!B%W(0ґ0͡+]\?I8觀k.^')G42E7=̰ٳ=J~]iO`wѯDIU4÷sŨ>LeP-\'E8zjP/F-cEWN,䥺r8A;ad th-LtX/CAzu2W2I `AQk -tf=Aj!N*2,(IQq)R[GKJk`ޕT٤(ͅB{S^!iD Enݲzu'+!\|o;ה&,p/{pE-Dh?+|8+ ~[<鉾3%{Gĺ>en 4s{sh;SAXV =Rrp_2t9CF6rTC;yt@O8ن镓L9ZF4"IUBe P#/RNv"(6 ց ƌ͐{lwX.ʜ3b2 i8} ul骨W'\M@1@KمW/j|]*5Zue_yʂ e~̨*9UAJuP+ͩ7_'s"dH2191wd1A_LŶ%] cpShd" k&veشnR0_Y@#+r -(8NWRҰ 4iv FW\O.!Pp t*t8sM!]ꮲd2m^ ؆LQ&g&6 @ $"0aJW!ѫ^V#9ʢ| %kl -6ޛ+҄JVJF3ة :ī{D2%!/73/7 hw0 q~o R%,,ĹnA(`HfE.*spt]Fq -S5t,K (:1& -n@b@׌gxR_pHvr'_ժ wVw`W2sK6 8]&22=)aE? p>8[>'_p9iuv -4ʹxhOcWa07CѪb &/¡7'U|;U -‰nVX Y!'ܓ&K!%N<5 "3E٘3x,5q{Q%H, hJ@>j#q  я VK5کMZ8itxd"[Vޔ@ҠfJ*)DѪ% -Je/pFi!PI!QmՎg[p'>_^>[q"TjdPLaXdkHZV3r옻h7+ _$ JK*tG -8d'PQոYo97O&t"^2-)U DHp4JF[n&W ,\GWK0@2NˋC-DߺnT'n1xR M0dQI]xIS+9ak?la[M,w>'}2Y`T]jEwǠcWz½]&%!+_t?ΚmGa, b D(~S`n4+/4+ B]@ *Mip뱛9l4P̐ȤVLw$ rF|!S@ C&'=@O$d"5Cܯp_x0ҬCi ޴X$g X+np=T`,o)C`M:X=O}!M >.jHR/ @@?\ }e@;l ,A"-4wQM\%Y!@Le0ɓ-&^0E9ḋ"DKx/ CJ S6l7LŅw}d 1k&@US]19qPU^-i}!xJ󋝤MzQq_9Byg q4Z'9(yPmMK]wI' >/UIhيH2pќDsr߁R빥cihj07kF[K4"t'ۈ)E(-PYCP$a}|+."j 7[qͱ Cv:jOOI}]t'HXp@1h@i_zrqy8O38fB<{wŴU lp7$nȧ=ңDbXӜJ?Y'@i };:ZA j Lܡ򡙴G " m}MN>#2V,X:H`H=ʓ7/j' - F'ػ`%'OIk:+>J aJo kp%JrҒZPqiPTXgSQ§OCCڨL V8l˧<"nvv?x -tKS+2 ff`Hf<#">hZN!  c!рB>L<@" $ -P0(BAa(  €,T4E[I37=ܖ=A~3[eAB+&0,<,Ԕ{rg_Q/ DbOUT8нAoX[0H D2Я6+KzΚ~ uoّ$V[ -n}-)Bk˗_n.QKUJcVc9?`_I$zcBߧSA8,kS&S"oFJ^X8yj\ Ēv~H"oc P*%/Lb6]`r0^M-/rȏ >KQZ̝#In2gX~ Bv5q #,G,.l(RX5AŖ!dϝKΪzj?+\\Xۉwga2]ұghFF[g>GJ[66WOMtzw8ҊuD 5>CTl彰Ԧ5(6/1}>^C[Bl4r+n'T.r>o#r VX6`DZC hG@1w 9I=DjÎ DGfrTKcx֩{l@AJ3]u{i4"a0Stw avG?6'b񋟞 u]C]{*hX~sy4YQY,)9%n+ -8ؑa/[,VQ?~  V|WWuzZ[|h$ԖgX{gE +OJ]{ jbyyggaQD ϳB]\ʹ$?+> bn2HvZJS$An AEB/9'mr~(_fn;p̀%\7fmH0m0O$:P"yP(t.A| 9Qp-jޞjJ3fX,9_Ǽr8?E9(#;"' I텛F`Xu'8(+Vռjb:NQ}Ɓ~WEW@\VH׻<{hy"|_Q7{53 * F]:!\*#а Eb(fB7O߯X -'<4I) -XGo )9F2`kJ]ktX4,9<$8%fӵc PoJǪD+xñc8Gb X3bv/*YJbTaUXt2*a=$G>qdֺ?*d!Ic# - V!kNeOL5@#H{ᑖ7g}r["YkyBɬwpTi S̚AZﺙaVA0<T9ik⪍%f0VRMkgH33 bfHb9lDnM 2ôT> օ@ -FzjQhzf*LF񑣸@,D*V7T?;9(= YC& 4A21\*tt=slSMfX#Cx-$'o}a 8x}T .(k-:)m]Hh`y2h|ةӖdR**t].R8¾k!!v9fHhpx>WgȢD! Hߡ٬Ĵ%K9( vbO(N6gf!0c}x-Zñ&΄֔z -l >&X&@h`j@: :M08;=O5΅X8.0,[{u j.huIѨ ND,T#m-5NGVpGO䠾؉fX+f!7;H])=% C%հP:u T-D746f -<ׅ#I e@vYGlyT^S^ɉР¡YY&ap" BoXRWbZr~$OpK >,a"CK|]GPtQC[y5έh[(_[71?M(EXY彉T˱8!ɤ+ktڄڬ¸H4qxt -Z"G<mMgqC -p-QL٫9D$D:璛Z'%+řs٭L6>ռ?d!"(3)H`H047edԑ3\ -n##hS$J#ٛr( bimf>ޯrUJH±4Uq}R|2&f\{BOUd!@-i٩aۆ-bv0}Ng,tUWjjz}dZOq @}ɏua}Kr+s4[L`v!s~ω,gt:Vf)5NF|i]B]9q&_)B &,be@P -0rP"hlW fIKC܋iL(<&i=OeM1&9h'VSa2V*^3Ve-jm[]RAѶ޶!Zm!IW>m/hT;{Vu<@vͷTZR=8*C$~>Uv),J 3ذ_)h aOG0צT l7QH#=8M;{GzxbԤ%HwJĂd6mLոRȂ oyӅCN {,$Ǎ0χEOnoE˚4cܱG/w1Y*O5)M$@\6@LbbtcJHPnA -jSs:24:N㫳M1SYU:hoyǡC ! 8i%IhG&0қ)$mQ81Q*:/n@v:DF G5H}EGDt`P(*2LhG%^c =?٩D+tcQwNC8"7XWJbmQܬ6+ǓG0Q4 ĞEӠ8k2qP5 PVfD-Zzi<-tW*BgT'䶧F8܌p8]&o;w݂0DZ^&8l_ -snE5ڀ"6bv:"cy<~>te1E b}*|Bh)2 ^tܝPo}RhDݝma"=QX%$;ό!my$/%s#x%ON:utopz/# -@HbPu_H2u›[Eo5O/GLak&`M BWBYH3FOar yWk4Hn%,Zo$p -Ãqgse+JT 4K{ At`SqKeMWyj5!"^ ;B7u1%X"3X:j64TOHjyWdy{FhKm#8E7s/tD%0L˅^+5VnFp  ->}r!%Oy"lS!҉vڰ^cbrd}_]EUXkg;,jocf `rP #V믚,2rU -py-5+Xg&H!>.UԝYx5,6:t+{ ޖQlƷ *teqad1BOVЋEy0z2SX@`Hq%KЇ7|0׵ -NqV4&j᫊adq㳳v~-#OUwK3|g T؜y}OWSǢms(@lO H5 1/>Ni%3McUHhqz- \<(˵KЧ`_~9X>)2\DJ}j7fҤoAJN!kFr?-% sx-Q|:D UKf;5X9^^}$%i-aiX+)~Q㐃HrhI1D.kDԝIͭas^O=@5\>?&œ2\0Ձ G%Aɕ h?V*IAO-ѱ?oA?V]|JZi]+HRjT{͌ȕiŲ͢рU"]ތt.$SԬ< -Y%+KGC̡> j6!@1R1NE `l?ҴʣZ)5x)&tA2FZffK\K;gqȺدիy%c5Xn{ְ^֯}p:tEҔ@+Kz 8thbNW|Tv+29\<[sb#,BU`KcVxl" Gӡ4+XGzl)0Ӕ.K,R4|J'vuמ -һ2_b_7etcG3Y&ԛژ/r#v9˾#1XI3FvO *3+fK/h e] Sҭ{EX=@T^A 18(SeN7)ȢVhA`e;+iB .(@d:f57m Y3f坰V#Vz%, /&: -Q8qK.Swy1T+2-\ΰ@UƱr>$ɇVa7-, )a .{ $E+"e/Y .7Au?_O9Z%Qy1-DI}taDZd 'DYA0NkWyu 4:;6Pʋ-odW('@*$dZXrҒ& ؁PK:0 V | -s;Pkc<1aNܑ+[1ܰ]B!>Nƫ*%|;b M.yS+@9P,52~赿BCKJrĺw_Q(I{)`25`:RpJg?|;sL -KAl"ppin&4EӢyt=s5,` ^j5aԛG粉3-he EUk$$Uj*/+L">ͫ!y F_SSV5O,d $'l-gCɨ)$ 5,̂c`[!K)XsE'Uiv>0m.!8c9%xNqh33 mnmیfoY$| -2jP7NMxs"`q' ̞NQkK @ZDV/uz@^_Nv O+?&o"ҸĆ% $5%d WdaҰ%ˆtH= p,]7f΀JګNxvG:C~·$0(‚FWb{cDrsT`+Uj$w~4mSeCiGXOy4ֳZ:bMD6L҆`J'6jV9}Uk '>VȀ}ozՠ dg#h6ɩIv<2~UI -T%BfVy $P&ݷ5 _lF KAhv1#<,<'5:]*ɵf-q[`V k1jnȷB<bz.+ ɊC {h 0,M" |ZFs ;`dl"q`ړxR `ůHA(@pd.E(U1@HSlЂp%'gbzoQXFa㐣,**DXEV_MMHuXQk]hWEB_W?˅XY\2颎ZKgS’A,UYTٽ ܪUXtI0\ѬK6QXp8%#Cd/E s"E\ޔ -䄞(vʥNw_>lYVF)?#/f ?DŽ;$d=4)2`YvN8*Mf>:Nur5(8_"Z҆_;JdPV2V%UQ -a/xTB&gż=_ݵ{F#7m~Cs_o 4;Ik͑L;xa(qwu$s*{tmیm,h"V oݺ`) 5G,%'4EpxwŬ2lj /cos\<1xRk$9DG~jYvj~F4A% -i%/H<zF\C6{+WdO!c`j<ߢ)א$!|Omq0 Hy =3ИP!H̤I IL 6E ,m6ώ(Z\`a4U^DfxV>{,Iz̍qj9Xq,vfR݋.X ql9Ti^@#x"C"kÀSG.ԆK~$piijK86μ^:ZXBL\=뺆hDŜJM$_8;WZ0JS$GJ,8-ށOYbb\2≮b+ygE%3)0.Kϭpf,)gX:ym\ rM8 +6k~ ]CsWlw@(uysX/^%؂ԯq6"ӃUezI:9PH1~ἅLڶ@aƽݗ3fdzic;nF^Th -$lnP ob0!yQ]D%Dd3zCP!Vz3dPʈ ] o*J2p -F5f/j:[fX5cFgկ&,n'f2VZUm:'Gq-{?1& Вe4)R#.Cof)qPA~mN7kE-G?h柍qb9ݣWUcӿޗD^$'!*d߃9,MBb79ұQ>ťZCz;p.2 Kg8ߚuPQgRmTi 2]s3L? ,!gLܬO2Vr`kk%[R^SЪڨw;Jx%1,p/ޓ|pp%3. JHݑ숖ac+ß8щIӤHfy ߉"C -SGԼ[ {b@O֡Wkx+>eLV/nhD2${-3A{ߤL^ H[W <Ոpp& :6?;u̗ И_e ;†Jڻ0x/xuu1ByݐeY#-4CC=!Eq9xd{xHISkreo -hdPcsaϖ"GW2pXUO5ðȁQvjFšm7ɄU ˭MGp o?Do#L}BJ49tWDDmaR.>]B͈ecZh Z/O$i]2SU=RDnPHEМX DGNߧ?E~ @T|:5۷U2{yGxVOG^íM;4E9Wgϖc?QP0S{$br -O 5Wf' ';wT$J72k¨)FN"AgX.-ŞaH@qحe)ztdį\:S^M ,;t5@d$*M/D$%7~."}VӢŬR1VvN)1Cd2n>sdc &C2M^ xi,"r7]@|Ł,o`y.H=RRB/e6Ç2Wp0#Χ *Fu*2|N̍fnx 9ňGt|2x /(U&F%@>F4܂PwQ7bn4 F``.Hc#ۧ?j91.#!ZXK,㖏B^c!@a-b+~`~!J5Å ߈z 76Ǩh%b2J]4.Dm - )i#(i ѫIeM:Ms:3"MQH#DAt`<jBhh ɤ"p"a!|"=9kS@ -Zi#M)& c-7F^x4cA$*2yj2*. -cGX@0Jd82P,, D;mN5hl^1*yT& -0wTlR^񎅭UpNC 6z~՛׆`Q@ - @"XkA8P(Hv1b0*@,UJ \NȬ(Qe{bqBbG7O&)&+ѯ^:% Uw -$#VBHUcj"8%TEE %A6/ &mH l%'aL\0n - : Q{DB*-p#V@PG4bD?ibD&D0o$C $`t`rQ Ga!t6 U/ tג|G&ǻs2??"8 yP` &48b$8l`t}?u*s:1. -Lj2!Kp2aAK$l?0=Lȗ`モCH)PQRJ -j3e,*@΁@@+%y@XLx&J-)R( FQ0n"idl04T!z@d`e@,WBʃet` 3I}F/]4%bu8DuGp&TL.DɲP2Os2"!$@'t:T=s -L J 8z yl ``LF̆dT$ n-VаD'.j hmdAPOuf-0p \"Dfl1W( O+D0PF1+%!N پō0ȆcS,h C0>҈h *Ʉ"p X Pۋ3aMq9-hX`T$+@E2Q\`LdǃaA6X@nq::lr&r5xDJ+#1 dٖKe.>hĕ-c`Z~ 7jZD<."&J!!35fIu86@ -(sDx }ΤY-3.x^tҬN6׿SzYegtKg][tD+{KJ۳/42 -fֺK˷ޛ]Sf<]|[,'v~e,'{iӯ.$폎?˰j'|{#(kmɽ^s cWFY zdj)2NgƓZk{>sRI-s_g4RЭz\(Cd- id٠wI[YOnud9rg>KouJ֌J +{#\ ?v 9ٗdI&eNܓV+xRf}崕2ܭ{g6yol7:2}92^{Մ*,v֧zg_!q# (|::B]?ͮn}[-͖L<'37Wd |NkF?yVkk[Rnk'TޯZ}->}r]q8g0`I+ל_x)(g6sM5!Ʀ.#+ ~^ zd ~%Ņ\G4L(WJ}6RNz'l'R}{VUrv-= -ܾ=guJmZ5:wKӷ56 -9dy{JYJ)J2]MZU^n)oSJSLZT:;L^QLZ\xmx'*)nuiU!TLgV-.Hcu:8Xqd"l-/Y_yg cՑ!ryLN,3k]2i \M-Q_rgjg\3B@K&'L \$$<n`LB@p#TH&G(Ps5\W[oﳷKd(-#Ʒ]ξ7ߗR9:ٽ/x-ggϖ-J.9}Lk|Nݔ1FN+xx=3ɒ'g?]fMam~N>)\)WNvKe}Y9g<ʬkGj3g󵴟mN\i+M9ښRozUV~gzvt -]aZv(ϻ2RzT־~A9 J.2H?)9;[MvuoVFW2;lJ3LolrV]{uw -/Ŏ}6~v6Mvģ}}fԯɯ=rƲ;:1]FPҏYg~jv[VږL<{i{3g[Ni/SegUb햑kvY3:[2,u[-ݲRq.FdEbJ)4"34PP$2@dI&@6>"40p $`  H "KeCN4".ݾ z<@ tAH{&M4G`{XH%C8{3"QfUaa z̰4f(CLnf)(Dr8OJ$ӏgCmҡe %#$o/w]/GUȌU6v=hjA#qr4JG+8eDBx2+-(\-"C7>Qr:_z1n/f{7@zgD=EuU"OK ,M[36SGC|n|D÷6ڧZ<Ēdd+?&ƓNM4)y+%43Kę2Ǵ?X6֨7J$4)ּmemLrMM}0ok6@݀r.=ӹ$GPDAF0 >zjNΫ};j3IҿpJ៭e/uvm#*lbcqI$8`]`J\@#nRyo#e6m,l޲LCHd`Wt:74}^hpUtR;bN 2"XGbT -50Q=$:g%Rc|ƫȲl%bob?f,KIFmDD2.hhPҖD;VH0=BkGƂ -C? -tʪ'$8 t`a3$o|>]`M&ŰMsIE&"}͐&4TBptªE(h0r6[Gۈؖ錟ڴNa npUB&|%f`'Ƞ:q- 3'dk}q$lg^M#lQ(lIqtWQ4 ;(ui'tojznۚ$a`hQ4x ^[D"WbKs~_o y{)+<}~ߢk` z'mP= ֗.V4mlJ eyԪjz=W/Y}LY؋-@d\MiDR!ٞ=`IxM)_'9wYΕG?i dN-N?R8 -s¬ ռz_*xKzn2HP$fS3y4l[G,vPn?`ȤFaw8A@4Ŭ0}0 T=)D*g)BXVWCf2#zAPBIY,깮!܉O,uZP֑(̈]qGl]\riw]9-ȅNLB2#,A4)K5f&qe0P .k8I\=="4Cp{5_P.Y0o40huDЉP+r!vu%rOtx (5DBIQ_h/ٓ&BJXW4ODF}(ؘ}Jq붱;:Gp`yZU`8bs~5^qHD 17s`:^bM}R32h -vi$T?:VSyȍ&;+[d.a~OeXC9t1CzI5,[ݡC[F˙D8ҁ>FOkV#sO9[h@$iIUr|e*wyA=mmjX4i}i l\GU8!ˑi@ћ:YZa&Bcډ$ -hx-+(GhX|g9(W :j'z@)pH<-G{o"%=@o[$ NP2i-t -'$T2o`0ϓb1@e\jQr+*\ 3qҖ ״,i@*IeR?[lQLi}lS)`6;|`S>kT1\Xķ֝Xݔ^ Q׬Dtd4/dб)$b]Š\<6U&L Q@Wu}F>$"Z2@C ̏y -{/=e~Gcn6(`o()>$.&dzD%K"tYT?KP ;*q,FmQ_f\]MOeK-iDwZF(T9!Kګ>CYȚ#PEq\+1S( R;cy -A_nX)80}9ҷ6q)Sj}&r7yDG@ϗL,Lݥь`÷ipՃ0VeBDO$nƟ8DD.23;Ml>QNÿPߜZБ[?(Թ$l0s VMX?eEІbq&{)0ّ{,;hD\Oc@a -m -ńŔBi{en>4#hqM@=TC#\3soC7*dpNh]҈nK ԍ  &[ G(AzUD,/].. [`wz3#Zq-qb`^"UUp%;H4txzQQCb,unMϲqն-5vABЁN> -A.$E-Vq7cEnu^/XO+UR,I,z JL@H˵#lP2_. r\e!Bʑ~J̀\+;S,5ۙh t+\,h>4ik>H'rßc%@޷ -'AG^>ic -Z@,#N@& c527~ U^|"X v=+mdWV3ƩzƎxB`~r"Z;QNTbH5.4b܄EPR''z3OG>~-7h1Ǝڤ#Ben:ՒΣZl.W$nzm@_m+# ((͘РpeuK#Ș(&˹c|ylk`g$V h6-l\}k’mJhym@#6Pǂo آdLkG6)!{m.,t,`,'gcK% -k"ۀu1rـC%UMm#3К<ľ)??Ca3B"IA|%)D3o~A@q}&*xd( Tj_1^ż~3ui׈Id 3XUu 5yI1.,q%ZhY_ ^"J'0Wŝۧe_ ZBr95p-fxb@}Y2@}%tFLw+=40ksѐ뱕SZ?'w`~SPΚ\MKb?b72hO- fdR%2jM.jWx,r4IЬx/*Oq)"lp=Ȅ!AY.HTD}@o„YD&iJXL@ŋ -D,$Νg-J}6v&RM,W{C>NQx6X<&CDUG2ybT qKkET'^قay%ΥU-2Y1!wم*%RU%uHXڤYe`7bFE\$76 ᧈٿi@g],:Ct*[+֐Wb~utbaIwI|3hL ܢq%2ǭMKλY/ؽ"!5BKVW<,@`C*=s'l)U!bIxh} -HII] I֏M@^ -H0_qsBY@;G$Cj- ɜ&XY1s=1=۲ Hj -fqzf* 0%f(`݊ -~&dPt^gҔ cOK -& ̔"S;В?. >m%uW㤏v`zZHe'G$Ѷ䄌{LdG!ij[Xw'3>}ޘS]wh7Ałl<_2U,m$Yͷ<܏14֭67rLp2߸;79&fRq(P[׸ %l^)_' 8<@VYqnCg0=@̉EOhM3Usx )|mq̡sa=' oꔀT?J  iuӂ;w|(x+S.Ty"!5bC4;6GR/;(FP|"/]ו_:! P`Z_>`Ҵ{NK1ln xИF껷F~ꢐL}k"+ A~To{~Vi#6t溜+ـ,3biT~fOMC"{0wy(ly:$uGH?d7H)!sHO@d#\}&ew޺[kܠõUX ~MJV(!b]?LQ/l*g=^g HeXT^ k??Ķ6S/=1+|G0bSOrM -x\Qc@ b(HU.!?35Z5ޔ 4P|ȧ%ʯ 㑨.4?+׳Y"zG+@r  #>Y\P1OP`>RWCJ7=\q5$$L:k=c"d?๰='+$JF"i:Db(^MX{i\ hQ@Z)J6 z,!dZˈG\œ*P(~OäHݢԆ ,U7.2}|&x[gjlXsC;szaֽK4bT/[IO6o1S;)ݩA:Kx .o_xtju^c:SXm恨r8U f.&+Z^XiE( K2 Kha ֚Gri@k\R(c&ZSqsVѫ.77:ޑ~k)H9g#bR]tÈF=~ qRzzgQcyf_W5` TmvIk8dM p,s6؀4pC&Gsqi-Fm{dHP`GBa+NS W"wBp;׆,Hۧ%aC^-8i %5B<e1q zku{oo!1H31wYeP]AꚥDZ^!+}a֌ak c§tEHAcyd] p]ˍ,9%HZ m]nBye( -alEDbl'Ubk^yq)we<ʠitz}Ms8 -y|ui5'i $4^ҝElc#v4ͲYDi>cGwQ沭24L6yҵ58Ӽx$OB&CĔ):M Oo7t4߸dzUO}|ݰĦ8m;&\p# -;2Hr4}\"jN|EL8H_19aR ;+Msm%M>-Lf1@C*gy|FC5gczE 1Xs1{Z% ln[!7tj"e:[ymlyئ 3[2 -sθwup&UTuVXCqRG$46 S` -mLC_D7|v;Ol5cqp-p?7X?E4Юhf]3!j#̅tp!"Kؒ-0a"5`n*&+-{%}&Cx2M Mg/.: ($QS &_X7[1oDɲȉpC\S#c!qnzAml",*[k -i7U !V"ASzQIw vk-2jLKzWd]By{ߪ./8 k}B&Ss/bڡ%(I;t]kA/ބ F"g9In?[1 Y>k7K4:ALԵj?<>ڌOx@LF6u)5E -c~UL RP6TQe| "yGҪ)R-]S$(d@(9cS+nϚ`ij(L̯^1dMx M-Dj)R% 9)R;;/F-l4ٯ;HE)x$5)=_cH5HD6,R.S٢խ1݆ik4NQiHwFP(R›i)珹ɾVM" - LjipR\I+mCEά/Gp&y1ExIHmPwǢEbH<>"LgNڋ:O|(KM?KTVT j!q0M8 TF?2f[MXzMP-na̾^Tb|)#vpi=۴jh2JkMQjuV#:$můEҽ$[Kܐtk?_o ɉܻ!Ǟ`u)рn&I&ޮ?ŰLO(bWF x49ۄ/)~ P{2V[r*Gf Dk{`0F1 -5)~5FPMr,-޶@@1+RjԲQSj כ"v+`1Nf h-}Ɉ %: :>h jNa5Ag 8+e,R S]:Mcou#KƣL۶" KmX0҃[=d3HyuTil+svV#~ $ Ez8$$09h$OLh[Jk@̣Y/x*7H@:EI%@s*C_҃9$n b!H^<eCIYx)RZy7l&X2 ,e JJ2Ń5 %db&q -U,]E7+Y$ZAKWC_ԯSTWYdH$YWok_{w'(}$4O[B36pA ϕ -N_ʘUO .5T#L=pD.TR&{Q ij@'BZQ}tR\[>C.#I+Dq'pwU;gxI]B5P'.m;|y$]pzr'3΄9>XOl&Xu}2 OVS1uxs&IEJbP ^ImS?/wlLϱKT|p-"LU3S+L<X9M&g_j'm+B֠b -vg,IZ|oO,K0KE@9JQf*<^UX“ -z3fwl'Xr6촲@JwQ?(yVnQl!a/~tbޖI [6s%CfNX}p\e* dTJ@TY}YusWbt^k^,3v+!d7W H}ld6%}zo`"(?sRb[":2kW?R2r|N ԝ/-O\sY)4k1Os\F1]>^s3ʊUyTy)piO9 ŦOK"a{*cW&FT(h0b_u9rh8M j3ʆxe\-9{JˊTn@9WpN|@U.12aw;nvà*S{\nRm o#aʯArЄW,Gyl:v;b kl#FpMNGb R%E -뷶*N~߅Y_s!xfvsS" - \3^ űWe{5 AS|$mtTRJlsfzWdRgk LfVԦ.,VlOY - ?^NLmsLQC95xž2|9^ []MۘrF>Ҫ' -s%w'zJacKn"f5nƨ$Oa/Klo[Df-}[3+ˋ~lk6n Bwc:fWp J>p$}肒]qF%jkQ2 "]W6BbU{7ZEqC" --ϲZ؝fc+ˠ:P -% Ϙe_0كB ST}DLB**{ڰYUU4#bOOZar.{gh@omhA~Rժ9|;h'ƾwl@43GԲ\quٰ'8$È*pv/wu22+%[E+$[-l@8: l@0TНĩ}W&d`<45]\dFz iw+3iQ/!'8SJp器=j;df̼8d 8i ba-H NjL݅~1yUYAT+_"C b,0tn5FU 8h_m2n", jC!\Cc:iV[~1:>wy@Oz0Ʊ0I6 -Yj5(wȓW$GO*1FƱ|vs0- -!cjGQr@~b+11pcNe2d1a-QK(pbښBWtA.v[Ebt%:KL u6D@|\3:E-,WN '>5e@bm`Lw3kxk_$XxdZ0c6D&G"K/$I̚?t.\ YȓuU$0/2d֌p%eE>;L̪Yp;A4צ0$k <6h m^Lb_kFۉDFƘA%>ޞpwa[)-rlO@]fhTi'5(qewo2^"e$5QP$y<#܁ֈ.,[Ųٌٜ ÿT6B]`hM*-xZdXfyĔ\MblX0!gmW0hA4ceо!Zex!>r6ta1yPcjS҄ X綰N޸oX c?Xѽ2IVQ(e Fz -^ٰǽ C "ux$^#K  ,Y29f`%$e=SìLyPa bG&d.;\:[حUa#C3)\n !mRɔ5*K<"v0%|* -k _^'G2|z=!RY6 w&qt oXAL-mV -H} -k${{FS+1\/'p/B -[d\=K0(pJ`c.Q6.)jx5c~D*#1o_M*gy{VFˉs?8Ω[=Y;4>q8l&;^rj[.*=3bf/[Yk] -گ_wjkZ׮]aT -cP:Rc=IJgWD'2,j`"kx%⒛`, hj'v$'%q".7uI] T".KmȘΓ- s*uXYW,Q^6 {~Z6E y]6p3 W#w3I,TP@g<zhͥRܠ '7$Jڥ] UZflz߁U]&]ۉi}"{` 9:kbU䮘*`c(u'(1<) Edj L00wCC)c++ +C^~_]'RUQ]}?,\Q4^w)Tb#JYB7vC_bMNQqzn N-F Hu:X@*"J$r% {(u*A2 (:C1#Hi6TkϮ;Gv8+3~ Ӥzyy]ɻs&%DRՖӅTD=l]7 ivg!)e :[a#P]U "sv7JBj͑c7_)RͱE!3:7QFK]pV/ϴ+DTţ$VKΊk_UeC:#[MU5Ȏ(s+LZi:Mj'0'_ZjuVxrȅk ܿ (XaݦHJLVeTKL=RT(! -7"3YnS4 Wdg_=-WXvV]sUhmp.Vu˼&TS֕˜W$ -}yFPL{ 2v~{Ca^\eHr(:<`je@&3CI2+̏%2B`m.ͼ銽oZť2oG@,JDS]Jiw貎8:* T fA -(7)Dz#r{lIa5晭wVlh?f Dˤ/DRpxp:%¸ ऑj[&$F6ku}%+T^7 [79P6v@S:)n[gJgVt5)٩C»Jʺ@Q(BQ,P"̅Li"iMj,s- $nθDOT5!پP߀{[vSJS;ERҺ?saZPn&| 5DvK6Q曺քږ5mXqT0|Lߢ:حZI _iziCjY.ij 2b7XS~v3 gְB:2YwiKiqW>8;FrsU!hcE&ȳiYRՊaB<$z㑟]䮲- eUt(\}P2Pʐa3 ]_yEIuI[IiEQijtD[ꪋtѴt<&։ !Jݗ)w#+-B|]+#D!oZYp\So& -N∙>u]\bȄuK=/DA.fG(v"$LSU"o0=ULQ|GM G xP]hVG ij⽢1ub q OtU+pLB~W0̚[HbW=ˢ2XܻgJ]uZ^ɕFU]psB#%x^@y0V Ȍ7&E$2 NP2$Ra@h(aUB;XOy[IkUmewUqibkz&4s}PM;aЩOZ٠³+iYW8 -rm3a -xO/MbRV_)M-ֳ~Kx?ĽZ՚ %Qn%ڕ${Ty$n y@a""%eͺ;OgFS&нY&Li+-lf6DRB\xUKU+T4j]-)%r-^oM^\{dZתP¨|\"[֦;Ң;}.*b~yt' ųV#`? :-P1R(2#`; ~89&ݜ"zO8H%RuTkR5q{2f"j[DDh#]M%i-R+(tGUANK:UnYZ)`=м3q;VI\m]svhyffsƠdTn[c-]$st-e!`YDӬ¢UMRoZu&辩)Ⱦ)-LP -U֢(+.ݺ%vЍeX7ŹC&o@,vjQ@H*)1%M4r+ ":ocl02fò[c]U8_MZ.+j&+3VUjuHTBP -_EAGd;6ԩ079."Q)(+˖w:q+jf,KV3ߥQQ]eR-2qįWf -cj! -tT WY6u?R9kAC~J@nΊgϧD=fNYGgDwVeq!rL@G,*){JmbFt% SPZE&y hv3AP3<>(dU%,~) -LH-eQ6%`ɂ1!2 !aZ~j-'ʗ`ު-=#ۭjZzRBӶHJFqxEU'M+GQAU,+?Qyb4TEgu?zVĀ,=C=3@Zb$dBF_>(`#f%[ !3HC=nv ոڡHr Whw\4^͌V!{eTy$|d#e2{Tfteq4daC"& 2ȗLSYʒD%k {  8`b2fyChH 48ثfq7)BD_ -40$\⩮#mIdU29Vf/zui\|ᑑ*!s%?DtXd*Ƚ2i[FkjP#~mW -]Y<卐cEY_¨udq8 0chD@%j (O" +U9Iˁm.[;9. RO4f$e0ϐ p8aEC3ksbv dThS:\"h&r5d.6y쏭FCIm6e 3}̟y!?y `n \}m KjH9eo  Rd7 jy,bwH)t+j8EQ5/ >8ۈ}^F$rKzw"ψ2X=> Ut!-72zDQ=MY[H3XݹAmiln-2ۀ"IN߱rM!ţҹI=3027k⇵V{O.rr cnB"A*4dFU"t j׈.'-?Dbو hSѳhoceM ǿjj3 "3t32ee6U׈1CdrcX`$ +L7vKH65BL\)?UP$2 fDp(Ӯ7Ë1`eDZ ݥk6O2,xɧ;)x.X_7!7[k@ўH AѢE +Ըj&vmwNh~jE]^wH +$5)9q'Uo:cN'OJ P|uIQ\Io^xm$EO"Mxz]rx]WMO__9@`E_/vs6X=#$-b_FLv:&q;`@'Mc2m@:YzJNw36U!89J-N[_"0%0XP@pɜ\gRMihy _$%i ڛG„dn#7Y88}|ŀȰ$$0ɰ*}-cP~(z?7a%W,87mzz)Bu`bssmR:]kIJ32FSiBS{ux.D:.LXb? \rypțܽ~*w j}hG#żjnPs 0 A= +ږ'쟗`6kf- Љ4{+flQZž"Fwph>{7؈~PrBM{$LUMkq5spSG$V͔X9hG&F$Q٘1@Pz྘YZKk[#6H8Ui*c7LSX?[[AZVZFcٻ!FH:>.% ^έJ?cD`Nh%-m#?IV HWL>MђӐ qt qGdnf-Qf鰲A()#"CTF02Öv|\RAYY8|?q#@#}F̔XqX![U +uE8_G3yz'XqOÀS }etcuB$B#,IUE@;n%7SęZFWmۄOOoU2RiwyIٲV$`?@\^_)UA 0K14Bkoʻ|&#NL #%>^08F(Y1)OKĠd9%ӂh#X^Ct 62Ǒ.=aIVp6mà +DtG)9W]mg mCPÑpc2p %@ 4j `ݏ D\ n\R(@Rr1bcGD&ja.tbI1#9*~Th+JU * +#**S͝o%rx |V89rk ~ 3 q;>SK&%dQ;2"3 +HB(qVBiit%5m"/J@ɧ 6#@a\'w~3#O` R'Yͯ LJ[;1}x $TzH{Yl S[o]o, @@B֖6!C +LD,.ʭy,epG?"ꉅXt7b3*g[u5Ѐ &ۆt)m!XYTN"s+"ʍ?#N4/EG@ڑ8Ǵ3S2paڸһq#B bD`IIxBǵw d!7<$:B4FYYC !F;SkI7˗#?,䱼`Fܼkh2hbJۇU&1ʯ2 +T(9Rp6$D%+mIhB) I$P4BiJ?^Hyr46$]u ¦[i4W'WAM(yM *kL%XG$!e-mG]rJ*Ui5H61_ihi-i;ǯjp ^RZ;R!mb~H9o +$&)r>|O%V9MC̀_Hw-h]!L!WӣT!E=ZKG ӎ"liՓmUgSJ܈t +H-&!|dB; h +7<Ua b2t[ )F{!/a}BĻ94ſb-X&TtShkZ +  szצS7@M;d%B q)R}ot78)c$<:T¸E +2A lF?vZKǗ?E +T>L@OHo:2tg14Md d0=yKߠLJI/ i$j"Cfp*euje9R#Y[Ld;&dTbLUSf[3*mJQ?Yg95U`0A+Fh_ͨ;'yl@<2zs2Y_U }QaNtY%~8[Z<֍WP6!}/`+T[1%l ɘroZiiom!@Yrhǭʒ{|Z(i +'EV),՚RvO$+MD܃yc!gdKxXԌbgvVqDbQȁ}C|A4p^k5/k6Z(3t;KgIw{Q2/%e*.+Yʢ ؽ9ݏs7] e{FO#+?[YӧLHn5Rkor; +hKC pXF),k2ܮ_%}g`~UN20,͓N +,\dKR2g"|) |H"C XN_̦F +=2|һR(%%Su^7wnv;)^sĸdIsH)E#} n>j#7F0)uWR`ޱi4~{hղ#5i4JePʋ9ZE rbĢ){C,y>[$;&-yVm;%1ekbjQ =n<n\J՝=WUZ]A;O0*~ +ٸI$WAX hFKŸއh(DjLl(С P+ +/Xh NFHKK)._K* `O< @ xuyPP[5f{qOJ|t6hL +5ue4Ϊo$oz쫘t_SsMͷmߔ(q*ǀet]pq7eBg*^_W >WcP \Chpgla +;Aa-)>ԢpX=Y'FXJ:L#Xjo$fu&ٯ*C@=/Bi E„ +cj1Hw.>c3"ʔ׫&c0ק ܘ Ɋ3@CF mX;TuReC/ľV9ɰ.x'Ú^2ך}n.n9;SuX2BlԡG4E?zV& Dm TJh봊> +o++Ԝ\'EER +7+u&'<ׁUZ(c5f9 9Cns6Q5l158Xgbŭʙ\"= I.7!LU6C}+,OY}d[n՚:AW0XDOZ^!n!2§ +h4 RHdBdjdu~Qs6}s<71o .ʁ}݊]/ 5d} +76,Ul%T4,%# NEOi(Q\& ߔm"/f'ǯ/UAEJF+̆oHcY6s[ 5mQi'ݟqpPc#ȟS՚F1 6{͈Ya[$ ]C'spMg)6xm%8C1C"z}n`w*iKdirjyҫ@IlIcs3Wkf4= M"9t>f`CO&1bͯ{cƱl(^M?cσP[4)Ŧ653Wȭ#l}p_K@ R1GtOIRxji;L6ex0P^`xg%ݢ,>š>Wy(v38AX6rqIyK78֭k@2e/L`G߉񄱋-:Qge.=.8Km;z3` +93K0$Mo5T/yH z\#XzBY*]m LjdK/)[lL6-BJV&[2tƚFeM0qؚ_,LեB4zALaKQ{1ÆQ0kK90yqJѰ|O:pȝQvT +6TDY\߃qھF ^_Z5&g6m[Sb@'#-Jh= >Cy i@F@cN,%X.[\gD*E(y=A#H.=8DŽc`ҳ6v 8pB ǾȆ8M|z*$ $=Ocد ^ 1mQD4GTKExm>[&9]$j `?UG_{5gu `h e*a^sqOA[#BJBpRrTG% 4KԤҡIxQ_ܛjaK&bY_J(MhΊM'KLN,+p]C{ PkˀC@M> (o%p'Vz^34FʱJɄa 5K5 " f +-B(9nBFP9qBࠌ.}ޮ&,7e]XVYؙBp Y)Rԫ!""6!aE`zMg- NHe A:ESਉ0ac@ [&CƧɮ<6:mAwIVׅ蘉z4>Y<]J޴P#ruRnGRG2o h`~&Y؏_cKhCh:% +oO3Q1R^^@7~EXqviVh%@ڶFI"WC!4W ,?zR/H O ‚M53~WxNs| klr1"h +#$,Zٮ +kvR͓m7z@%}@ZA}Ϣ#'tU/JU$'̀7"U @ʊ5G$ꢑ֪3n$ ؔYE%J/]aqkK., [ FqU`wqCBܮbEz**m|j W|'\*4*-ՑV,@C m\/y +-HE,=*X<Z#"o5dӍ쒖Yp|!+4zudY;&VBX ۲_@y71N]"cY PõU3@ڢjYYָa7W7y!>t=ݪzlcj;!ċ _|]˳xe>՗M1Jŵv+âZ,^V=fE0! /όB(mwAX`s6HV +.e/apyK3P>Տ{l`K5Ԕ X l*lwѯ6Fɡs&r;zcU,\sFeev$NVh´]g+Z* \sL˘U@ek:pü Z @px͞kU1m 蝟ۏbNeVe:]4z! B:(1vCT;vHB*cEM qa4 hi%l o@H%\\6:8QXhf0ow)GAϊ hCǧ-ȃ+_:JL8E+rmԽKkKۙUȕm U C'~h3TIL͕$\!pv[ m>g"בbRqVf@RVIEH_HaoG4b9t/C ݃nF{PΡ*=HNp2HWX%ݮx0wUI0&gEWҫQZԈu~"%j]_VJ0&Dc9k} tY<6p[QN~(%:+~Ԙ@]W!UbS C&F4/B)>u1C %zEM ks*d؉TڠΣ[LtGqث_P] +͢hSrzw>M.iHjPpCGRXK@#'wXϼu[G#>U)XzŠr#rW=s"gp>:k,#ȽZF#7K3spWa9N_{LD^'`}FmlDD2U&Wr ` + ^j9tDžʘ >kfCeJgddƉ!~,Ilʪrk6$1ҿoz,ԅ9:BOAR ކ!VW4SNxԍ-P:Xk`> k{U)b,>QȚ7ݺ-{SCrᣈmCvfZ#(7ucț T[31Ys%C6|Ex3Pwh4: !uO,6H̥WyonºMK +QqZ6Q;(Yh(n?k?Pc~CِqD*2mR] iJ,©jV"<ÞTV#Ud Q?'F)NFT1U)~_I&Z-mԁ@AYkR,Qd6p{,qZzʪ,(7[ct<Ǟϩ@Z/&ɶ_Ά988*K7~*^o.B5qKLzML%@9Aw7}S"`$ Ozʫ՝;Pmۑu_%H4R#f%6~,$E"\d68ۙž3…1פ++0yMhPdMxҸ9|]z$}4.%P4^C'u>XIf>]~{[(Ǟ,/`~"')țCQy6Y`t_ﰄ7 Lqm ZCmX^o̱H.Ś9f{J9fFX_B3P$C& Ǟ! ;᳂B870V *_{ BSHR펎 'h,ߔt*]P,Kv! K˚:PSZ`YX 5쬼RI^2H6Y**vV(!ʈ=Z-z%'"=̻3}PY܃5{qsʋ9\`[1ZDLlFe'"CC U'AOz"\81޻<3BB!v)@SA/LhLB\V<޺}uRP#GVVj{u?e 9 P"wp@d~@o ,lP/&6Mɚ@MJ֖!{ 7McD?Xnsk! K0@]VH!=^֋7 ЭcIZFV;rrn5c>q]Vug2Gsh-pwZ 2(KkpZo:70z:vok;s K/WIF(J-N!wr+piArXiD! pdpCCui7N-z7 aaʪ&<֒kBÇ&1FWDn kwߩ3<4~dSy4<( aLMҪ'P;K>GV nMQS3Uޫ[+$~Lse?l1;DM]<" R ?;>5{?Am==ISڇꋕ"gEex@H'qj{vW |P'[ !N`z 2iM<|ˊ#_4bg>'cנ r=   %+{/z^d:f<3 cP ~kT@"nQpH$R=M8}g&9!R \ )1KBNge̳y<׆i@爋RXǯb[!p!UGLI=I [HWtjAyW!ɮ +yv e-1bGʥ]g +Si8\7 +hڃDzPRxfY+:]a墉fs%ky)=k ՖEkNzX1d)^EMO ' Aa.g *.=1O.ozr?]1 +}#5yS fBzxՎ_r.(Om( +f44@Ց:nF-sp5JKs1oXJX/M$did)"kHtC F8"aZLH?j \ǥxã̤8FCmYJB|g=t6Y(TuB\ޝE2pۥgW~Č16ªziGO4 !s_`I[)v>술?ٙ "XA^ ǍO(EO=@8zaiy?yCNy |X|#K9)r$rAȔ05xO٥2ֆ2nv.iB@ЁbbVƄ +~<$H\zDib,*<"['W1v Kh ݉ @@% VRc/0:k^ |0ł#%V&ʮQx[gepi`ģa_M9)wkǕ%TMj>a +@)ܓN{pl w!=&KT((ҘuRt,s0þqSu'dqwisplWN6㧰NO-B_5Ml6,x+qP#tBIŃ1OУ3 Lr+'XmFLF1"P3NoXyfMJl:TiE{9ol;S:׃z4Yit@!ظA]y4.F\tp)ȿQY){ą#ʉЭNufD+f'xvuc_[bQs,jGR)~9uXHF%(d ?qOGxba}yЍT{S|0 RvR9șn'׀u1TF<ב.0CE&) +Q8lGPQfkk_, c>n}| 5S{>bٞca?ZNF⓵>b7zH3MML)mP!֒o2f߉pC &dm%dh 5lPCK݉֠&:$/cA2l0qf/ݹ(oȂ޸O Po5|; +;sy˙.1LL_i9{s#]Xû?c\b۽XH|m08$qԢD77np%UE7b4"C2h +RoNvI˚GLЮZ]53E4rlFTj T[{qjfxܿNF7U 4w^!V#LdDQJ%ڎW8eA+_MPW>-I:/N +\E{OH͖jMiپ-)$QoNXL;G?i~)EM3(4o%$!r@o22y䪍̣b/R b[=<*K p =FOж/TV"o+%)r|[P| chO6B|CU+$R->#Pe3P" ,ŷ8sQcZR[~vªd89%ǥȿ1qjAu{Yl62g$9IV _IWa2ү_E: +)$-AdfZQň'&LWxMm5EF,0Lv@$O +/2ꐃu '2ARԈ_YsPBf5N!6+pOUn-z0hʢ 0޵[)o*6sMpfا:H/erB7p-}TP @z7z :9"!{Ш3}[|v"Bh4#X`?5+q<o62ѬxfOWJ4(JVO󿻢Ӹp{;^95W"kRE,Ic[F)w)[V+AḊ +M~XPU^<8i j+]W÷hCA$wih~`Y5.l?Rq X~H4caڅt 'x6 FWi:|+JXZ;~ :+YzQ/yVe+VǠSF*'[7ozf|RZf z-&ɴ `ZzJJOcP3<56cw*\ +pTĔ׷Q»A9ue΍P7HaOYv3uMQYB@.a'΍R^aw&yݢ 7 ҉32T0Pƙ6-#$*K^ =j=QXu'0"G1gǂxi;Ezӟ3#e 5N =wS¯NCc(M6MF7[\sf,SqJ8Msndmp(Nrt.[A|^"m;XJa_afth SNIs^& ,hr +^|/Ag0A7쟌c#J[2~ a ՁIJw${]syJU<[ims9pN m!~6^#N_ _"c1S+Ɔ :.cSor-܃\!y&&ٍX JTYY7풤2h6 SIaURtB&T)$]2s +8Du((.2'TVvH1TJdX~,Ī + U=!Xb>bqn tbS{F@ፔ%7!"+ 1 c ׁFDo#^\ +g3r"+&^V&[CY@'}桫 @3#EC`cĉ<~PV~&[[vvnIV∂&6Uu&A Lhǯ3>d×Md;8طxǷ݄KvO[N0c n#>Rea* +w;;팵YVC=.ﱙGW]3xV^2,/+rx _41T +I$ܾHs&)/b Z+qSL4f$92DL?W}1Ӛk."߼Y }v2#B@\1~ p<"C*KȲ-m>N;F!Y9$"ʛۆt 7DYCN۪OȽ- ):& ڶH^XXK7)e72\(>#8(xLJ $) n^4^/XMm +*a+ ^L-̓4 7' 7òUP!UoF嗳c~M%/9Z6 +~ʇiU8Ly͜&F\BRJe2itx[ڤHUڨ߆zɶBFgHY2Ud{'Sz(Ui"I52h]ƒNp5( U})@X+,@Qa[ۜvմ 4yb۬n(Lw? % O(%VATѥVY=3[ܾF#)7&}gg#$6O,Tk`Y$@* XtdenJ1C$qM' c[PȀ4i](UX1\7E'**Zxx=#9˚LKa DV^GFP[ l)k Q JO"%+6^eae6c;VJHn8݌b$ OXm4wx} ;mg$}ͰW{^/QyF],Php*5Aȴ+ ?󖱤Έ=m(-Pa,>j:w^|d 2C g5@1$;8 ? tT#mEq$;y}t&.ˑ3+ ܄[J4~⳴ڌ +ΰW{jYߐr/J@tA4Lwn,9t<8,6pXݢ-OE8ĪLJѽPte@c1` 0 +[A1N5F>/l^;xIKH͘&{JޥAѤ'6X +J+s{]{pB8;Z"j V-0-nfIyLyCvM/ПlZWרR#LrJ4a'+kXPdE?F2UAm^ agԙD K˟Jz7W,i30R&7 Ʌ1cVE:Ee.O2-kt;q;>U*<÷hpkɭJ;.ETt\,~Ha@Jញdp|~PG8 t_V2!=!݆Gdzb 2UbpjͪW:ix?JU)}N3YB0m o!͎޴+æ₮ +Ÿq6-|5xB$ xԈ2xɀZlq 2&mu +-99](a~F\RЗL܅CJQHYϨJ>Q$xq(ܬ+!s.>\O%$C74DrP|)-5D:0JŖZhans &, *0o^0PP5 ĔյH4 +p7T3݆iHս*R> ,ɐ`_l(fBkVMv`2`j"_sRL+lCK3X|Խϕ5jа2pcx}?Tc'KD6X{LG ('#:VE?5lVij Ee5ns,۟| GV 8X}iPc6DE X}!+ds=3~¹x@@ǜ!Jl4dbW@@kf oVO(i ԋxDzn2.dbF~/0/#C䄻^e]lݛaXPQO/iil"eMUM1] (IlJ`gښP6_ v90;,O z?Q'*`( 9LwƕA_E PE¢ +1b@]H7z`>+iOʙC \匜ʡ!#蕑 Sv0}TMtf: D!6Θ& +FĒ]k0ޘKZ1f6X[Zs,wK._&qp FR>S&mzϧپ:VKz#LՈ :+$C r,Y5Kri> k #Eb ]ڑRS:"S?3X..qq,M0(Xe$&1k:gB)*#4U %TuI`§KzOb +(>]uIx=]Ҝ1"OtYTN+$rg@qU~GV9P0.0Y&gvnN7ͧ5*_ʫ>¡)g5CxRcaǦJk)+[%2Wۊ 8+";ì 5}rhkT;̢$-YSRYPHI%䷼՘im%? p6+m |-#62\Tj~i">kC&dК۬Ebh[,(SzdI2kcg'@zO1Ԕ!q.lL5ظ 3_}UXҊ}aO,$ 5Qe zf]}m퀵Qkպ +߇| Ԩuiwk`Z$1Q˄Xk"\4Hpp}Wа+Nצ|2%9\숈xmQK_ 180e d(Jfˢ0 V@_SNM8wwM|['&$Q΃Ȑ2&1OLp.iQ74,=84L [ݬ 8oVFR_ +ʉ% ɍ^VS+;؞[C1cɨQֳg>EOi؇V]~&r G !Qݯ0Hi +Gq?#q49F_YwKy<u6s ',Vʤ Аy*KXK)b8LΛ ++ ̈́nLB8g]L}LB7'O!Jw=DM Ifnbx0 $T!w4\wVo۴3D$=ЦlKan^X% LRI/Q_K,;3Ck mY< 0.f&{Pő, ?ل嵛Du/0|T|lH nԑ>l3VZlT@{oZ'ͥC47TނVNlP\P;!HӖfS`hy9a T1WA]o&s; |I:'9TCy9\L;P|NF:,˜q/`| !E3OdF;W-O ckVVC񼂏cdzИ<{DwzЎH8rf:o[$ڠ™. +rfpH/TNu |_!/rt)L$'cCC+ +"iXu~72 C +Fd/u*uVLey|;Ҵ`sPH\+NutDy$|XBO%1q |m<##ӏ2Vuo=[_5G7 lcsvTBةcӨ]iDnRmiqXbq"n,%9?:$WT ^F6GK fE}8d%)c@DEIW?k/4dEL tC/ i2v2Yj(%ɹϽa' +Uw4'(]|S +u NAocM_46_?g=^ +Rek?c 4P{ L~榈h^p>W7y^Vpr|o3]dd` K9Mz K`ωØxA#4{$tY1jF`,^bY@ M;Y\^ w$cweƒl5WÊ׎".ѣJ@庮TqDY]HFqUeCk6^/*4YѐTBulڅ͢yڣcFdl GsFc{ A,"u@1Fd{&6QHpNآ|YۄnmF:i4OUdᬖ ;n-,-ǒn θ!@Fh0Xԭ"K9DG~#}z~ހ50dc(G2(aL?4yV {gjf2:mlH0j`r:2U@5]csbEDcC%kl%\9FO"klE4F.ܣౕ\cC)\4t(zVY,kԒ'Ov˥ᢂAF +DNj +n +x)WrᎯ˽Gd+ %rMX~;E+,K~Ă2e1+]N ~+5,8\z+=J4&eWMiFJBb{BlEӪËic@h81h+g-~L9}-8ߺwXFpnܣ(1OuөEh2ӈvx!@7z-8nn\Lqey@`PC i 4_+ _ 2 0IUFM|lg8 bF`d*n'?6L0SŅ)-_eNg&+AOnucv,+x#z›(g*uA[6AsHh{.&a"hCd^L 47-+i7"22S6Er4Bۂ*P=?+$YPJg!i"Q)t刟"B$2l,4q}q=AR,êULH }E.\s}1f8qNʗ¬&M/h^ˬ/ x& jW +1 O3#&ڠp&4fs\I^@>FF{^AE& 1w @` W$D)V^T=c,({"{đRU䗸{YL]0,V 9iC{%GE'Seu&և +dk-5Ҋs\Fgt$?Q e4솻 'X_+^7 9j7m+sjV]ޜ[`i]Z +hv7tIr{Ώ~Ow؜"Ѝp% "UWM)~Q6 2_SU-K @<,ocSE?pzwQt : +2f>arhf&X9^.is îہV*NyLBf=釹*3LK*5ޭoPC-o}O/COzX,v~v= DY`07x׉QmEs=)Y;~{r-We>XrޜWGګ&P "i@5,/S#uҾ*`̢̍}I^sQI%ё_^(]E\&]Ֆv6CԌ5]aWGH.d}SeL6.Zw@&M3FhM_>HJ i18n#UL#WF{ Kf*[ + =?J\⣉ޅceX)~ ֬D]I/ +vۋa/?%]^5 :7`Yi>P!m!]w5LBʊ2uα0Km;~A|i/~=]/N38LZae٫&GiU6^\km<=X̀ OO ' ++| u?hьIJN_PR +XSlhՏV $n)5\Ubx{4iFIpNB`.]G ,ʆL)r0.'EHPg%h5 +YQ8= zz &])bu2 j݌gE RIn؈ҳBwgox7v !ۣdAxPckEk?MKE9]G-x Zu"pXjr#EdAXVala[AY=к]`_ +D- +} LQ=vZs%VV^th zfo2!;G9^ L@XQ?6L%gf̀B#.3@-a~ H ?1fV!KM=,+Q֭PA.F#<JsPsF1%ZҤC"׶K}ьV&?LKE'؉NBU+-<+89>DAOLPn#s]I&PWV#PnSIp&~Ieʘ\qsxSibm\RQik< 41UUgi.> +3ص9R} (f$'ALM~?%J裆Z0`昨u:d#+BwId 9r 'M>{TSKXf'Jh9k$ZzlE]+L݆F4tՊ$ "GuĖn  +)6" QS2%/ +[z$T MWRhY)6nM$(N +\&e(4{5[f~-X.F?:>#4_ޑþ`VpĹdT ,&*`cB?S\1JƵCc"e;ifNf'i1c.ȀTLԁ'(Hn,!68;lF!Bi#^]g̽~Tt + ӎhK{uMI( ۖ:7O~ +h`hŶ-ⶼqtm` h8Z쀰$Bx>!j3m|uL^-p0z}|%D +H"<>!wOV揖{֧xj +h_5\ +O|CພӭBUz^8iLG<.J,~Y#ٱlktu8jfS{/6ȝM9޸!wp>ޫ !%: Eu'%L62q!<[AF2곕9pP6Zj +D=`a;eܤJjd c`!;$F~W"R!eLmUE Q:QgbvD^uⱿ~ +U?mPuud7@4SK\aS;D'RyH99Њ~ +4^rIϑr)rrSE` *\[C||{\[ztkhc26p4{'F޼n>3[ wBFA*Fa˩=*'e݀Ds9 N0c'z͸xօІK]8A">u]x@)kioׁO 8id ˟̊f r.4 mlޮa5AC\+'"a +^S\y!4݋C 7WΉzZF"ct4OdRӄP@<PY?[>Yn'Q  Y$HTD"LĬHܚJ;I$bV Qٳ"<[,P;, &œ֌999f 50t>]5и<;[2iEl'aCsE:F5  &G'+"BrvpXFj2A Ml}a-tf8 ͡vjo H8!}CpKGofR9l/qrylEDQK#&zG- ﱵg18<~"OD[Έ`7VK~5%>$>um'D#"6>ѳ[1O;癹 짙'N!E 3d .F/\ Z{{fyhgr +>>@~V P I9‡uqel(m2v1x)ׂ0`#3upJ2xn3GP{H"B` Jo, U!GF?+0%pJ,mJrr1ɨ 0Fˍc~ҷ\1^mL}޽Y2+!@YS6ȓ&D?]A%俽 Kp2|Bl`S?@;SĮG5L&:T6CIoφG@&l3& ydDӝ::ċpS*P)oI'>1pģq;L㜄w8:aքX& „xrDpbBC%@aOtm*u$BIE!! $KRx9x@qDP2qREMqB&#J.6ϧ*g")%zƦFGs cѝ.XҀ^$d"1zJxT1DDtɴy ALhD0πwXBc( ^ $KZ5"d2V('8ȧ"'dmc%T+M+hxhzĦYZH` (n# dNzYuIмl{mtF"%ijЇO^*"c`8p 0 !4kf)ʼI:Ũ9XY&NqSj2R[0M2Vvj('bӁ #,S*%4.P*]Hcb BDNaEH;5lq3GTZf4"lɓ3Oi:4o78" y89'7; ;_^1+Ӄ taÄX3v9L8Le"]-Uc(ͻheje 'Zmٺ5~cVe[Ħ6iTWJ@TeBZ%(æ֕HE*[OD*z%2o@9Tf`u 800<d68JJ +k +tY7t=~J:?ygeX=R2lIxd׀iV` i2S2!e6/"4NPH!Ɖ*![ vR!!`@[" (Ra(S̢Ib DPby6.)xDbA5GR) 6'&bB +;|_+D߄!Ar8&``bkCa#sZ/OstZ@B4Fq4rA#AE๔8.<' Fd(kIz@1!:  ZPhD氨MG$^=p $DSaP*QT6RuYv09fа! l$xDHBFzDODܸXh&@B "8I9jbծ V(b$m$Wc(3yYSӹP` +ͅwb04D">٫ ?xш@c' 4 trӛT08 R `( ZX!,Q 'B aNqzsP*&%Y("86ab e D0 +J*RW"rv'D LC.ئ1Z+PDŽ)u`uJOgs!`x.%tjL@.RqhTŇ@^X P)H`(:CH2-Usl>.D&3@@ ÄaJڇB"<&MA ݉ԙ 6L: +md2:=M"^\W'D<HC aQAL. ErX`X̉IJ%# ht` &TkJѻ\8;\MpM~1Y]:^gyؿ&.{z_oF9'}9.R/S_%cRie،mNllNhg|ƢlWm'u6S^XdN%FiowwssVtd4;Ϯ?6O%DɵK6mm#6=zp5o6"zIYFTR]0:95c.iQ8>|JEJZtVn:W%&|IwJl2RR6c_Nrz!qՋ2F-=J2ϸڔ +c׺܍w|W^EfiPdIx,x]si%"҅Xx^),b`i5usƕYʝR7"wԩ܈I^oQbuf~Xev*i݊miڴr12s*}iԛ'SrsK-)c7WNt3Wv33GsJ^,e>_YJ9]Ĩ3mcǺO#/Ur48{;Hsi%H^_wi\'=`=qu6ol~cν%ݕXkcTRۧ{측V Ϊ=~guZ'­^]i˿+nfn6ݦA(zV,Z1tR:Y9iT8Ko}*[7ƨ#Rr׹Sҗ=k䮑V#_ʻy®!/e]V +}A&qѯv] m]> }qZ}9cOg*#]w]NIuKwؒF;7]6}+cLg,%݋=8ƭdhit:V*ٗrj\SlW\,zG^ic-Y5}==&nk=l 7]vʍvPʺ?έv{ Q(0z]v-}g.rrsNBns +k5n Uo~]W#ιbYVɳvO3nNO]5 n;vQ廻ϝ/+iܲkGLvӯO{.ߛ۶Qu[!{P3NJ*=bL+LpJވskz֕rq8 v58jiP)ʦ(i+btrZ4s/jPna'=0<" 60 H`($P C%S28iڤh-Ꙫ$ZKCMYu!WjuA-0hR`Kz(kjz +:Ab_VK:1.79X(=̂QCؽ 0a{Uિ^**E( ͂!{K֚Q$bJRTz%@H!'m׃bZRM s\Kp GgDܳ =6 + +;oHzh>-V0J/j*!;B;muY$EEN}?lek{iqW:5Zylf %%>HC³C"ŔTwY.x3M/5H$÷$Kl&lBS@C%w/%,Jn}h[߹qcu#:{$&yI).`{X XZ޻OF[5T֮~T!gmR``)BAqjH@ X˩Zsۆ 2$}4?ÉܽK /۬L{KaԖ`0J9$ Xπq%+ `@|65AܓH//~KI]l` 2kv>KnRa"/4'WІ̤sV:sTT,MXfF@6hХ"U![j,h1t cng:͙kRuB) T h8=;kqj'4:Yyeq!aG78L:u HDxҁu@ (~ UZɡ}b a6bwȜ +l2<A"Ҧ£<{@5`r6NK7a4j^ { +~:< ӞЏ_'ѵ&Tڜ)4%WD,dN?Q2loJ M:hgߐ 'MԛIo1i&lr +Gesڶi*I;g.c6 +6n)hKطfxuD碙I-q=-l2l u'X@O{ k]s T[4I,IR- SLdx`&KCm.1L?W.pѺ4`RSqƉCOiA&[[誁صmӎYyN>R1,+-=S"5K4&7 IWSS nZ+= UMR%a.ABŎ(=P=rє ㊥s{U[5iI,IRJP- #^5W$ƮAu}&uLrv~ +[R:I3#zw(/UK𬴩ǹn< eU.9D$QI$r[,q=U\ja]iϚ6ml5oުWNF;`yiqϸ;M焞oi3$@tI!utkrXh[gm;M3+nNLYV)”Д0ì#rLEA}&@AF*X<rqmLE(pdLP+Qs;*Ɂ蕟Rz[Nk ɤ#ݸ @U +rCbQ4BP-I=XN@E CR F1$ALd8y U9Z3? ʽ]++^qHXc~W"lkIL`lD̍V٪ފ@HK g*W1Ϣg} Sj_]W|^42e>j Q)mlJ +EB}N`Vz$N~j,{`<<118kʍ'TDeNgH`UC<ɈqUVt7; Ⅼ't8t]@~Z9dS ~ +$x{+bmv'mg]KeSmM$XiJjsƪh#=R Vd6wڒł7P8j/ex-ű6_s^qȲ@`_iIޢ_Q2NkLnʬm9 +J9!$a˾\+B<2ܸΟ94kZ,R[&nKBFJwc\Эv4]K3sswZ նY2JrZ +<v>u!XcY/6{(g'GvGONP)Q0êp>qI+{ ;f9W@x׵/XLB1i(yͅk P-AcOY%q>4y2% +9 ] +AZ4xQnו~=ã!R+lיk~p8Niywjr[FܤѸSB xw!FHE&_2BCɋ${9cE6*h"ʲh:fJ5]GowK}?UtZ՚#ˆdp b+L08&moQVCU3arfJx_ + 'A++=xIQFD;չdxD2 e*~* ㍍#輧A+.4CTdf/OlEqg P _ L{wix%2iO?:8Ųwyt9v>Bi|KoPϊٌfM][3aB?rű>_nʁŸBcCTmNKqF3c:JzӴw)Z4xf,r#|(0}vH.{;tJHD,+&fzފ30h' +""~?܁v\ISDaJ+}mvP3ImgPnΞ!,L0hω5ݟn 7Oa S[ yAB^PF|vQ 웉иY=!Q) dӴ:%R} ÈŖA(DzKpNLkIv\,pT,#!^ ƃ-\P>|^4«1'ȭhmF»K"a0w0hp8(es Bq|U㮑rT0@" $YuF~%@> ]iK +IU>gMF>{ϾͮSVggo<'|7S!9Ϙ_FfސA>c^wjn>+4|v<}. 1g?VWv58@7:oUM+$huo癯S*j'PBUذݨ̇Ʋ:`gH*Yo|PYCĉ (WI`'AeXBXMI-#Ӆ8`<1 GxO UP%i+Og#Wz4Mj+sY̸nơ#C +xG}ڞ'| [c>s*y/9v9YT/uD>X,",twGU|/2@ :͇\EW @o `QKztRp;L-YJ!6FR25 B(Ȇ|{ϡ_C:x'=#iF&%yN7Mb|BԧBUV | +v:q B&g3e"c8,b9 Ybq$Oj'$}BK}%-AxPؗ4;wp!5[u!4XD[?J'5IJ>WEHrS N\CZHZ'HE +CV,~htNs4#<I:7E7Kuo=s6qAso} ,@wm'+cXs!Dyh΋nj 8TI<@ſh5 Ւ7 IJfv^Bg1jV[&/S lOʿI% \N<$zKU-vvs P|u r;BuxE"pk>훁=j~}b`Y}.vܵglo7G3y똙ȋ傚.؍-HR՛}nS iNVOg墦B ``$O6H.$ 7!$y #_<5@LsJceߨ&-(#`dS%(={:mhX|PWPm/~7yN}9xѭq,`}jE/d)-?"@$9y`şMp4:5" rRŁA`WROnN@|.6xN0E=ix&fi 2NC_A~cÌ sʜq4$ZЀNB,7>"- ʴx&}jA +λ@%r xZzC3,C0#]DߊhAGK.cM(_Uk,]$nsXMaCP7 rg;hL^9 +@}~}/⏭ +dB&+noFM0OKuo dͰ7$RHc loEpfdծOP])tENx7rba񨷘H 2Lxt}w>8Pn@:҄v%p?RqZE4`&8KƬ}ᭀr֚~ȅJm٥H|lG P@9+Hĉ@N6O Pnv0-(n +֪ۘq1Fa/v-p%ba1kJ̘~Il q~@٧l!Z4w.v*QW`=I?SRP!_9w4ƕ,YjM)֟Wp60\;"\G d` jpIR,R޳?U_T|J(A5ksC5oMoPL&fz s;ĮKTg(>dմ? QHtIXHsp#CDfa3*K ,^ZokӇ9ʽ|vXVl׼.h4:Eb#a& ڳmt4Yوe14$ ƿRsu!&[Se)Yn$B Yڦln.+wbӫg-Du b~2~Q\s5!jq 㦽Ou?ퟳP+*82f%FhȾwf j{簉}Y$'FZsII)D8`!p-B -_@ˍ</> +[{܀68DydLw)xd-2 ByS(GSvDMyEc/ʫr5`&H5;p|)M}(Hw&B; !d8#WY oI;5"{A~3^iD?pw9@kjD7}3+)ARWd+U>BRgFÍ#y%ϒ?,Qgh E_r˕uJYխMO~,7 !@QM.՗D.^iZU5"2V^뭺{?rȦhwo<6߾uRһ.S& +aMOmJWM$2n~rFe=OTM}&ߣ[ >+L]"p۬@:( kh*zś^Kf,E- ]%I4.Ʉ}gIYkSLk^okpP"H(pi;Mj9^!) CajJh\L[-ՐdgFȗg/ÔCF^"1LW*/afVφJ 2U'xHn0R]0=~obS$MnCMP*_!eE ,`YM8H. +I$(HE+q' YS$T8 GktHY .xAF%iŭLFR(Dy3CMw +X x+%rL[ XH0:w"5x8/Qln-#+U .HYXCH1EK5 ?UŬU|319o:dH{msJ|WLP}vsd4舘! sSaq)!h1˱JaIoPս +͍+5EPSf]i{ƒ]@R.- uYqOx*\ }t=+>r+䢎5G6۝xRƲ7'ast[d=wrA cM/6s(I[F ΅)R~tE[ +r2p +˼䁗"5Xn iW5kEȂn +! +nl.H +敢w]ĽG) ȕ2UTye2.9dRg9;>2-~cFG13Ɛ#M<K&T"d56Fx/k q8mArqQ4:(qp`][oqB)BAߩdrf5I됍1GJ(Y^T_`yIyʁH JYMlG9&C sD9N?5OP]5' 4-}k~ "eTNTqvϩ%{§hdo.f_ +Z'u(Dy CWQ\zK؅mm*:cJ8\a D1 g ނ9Ow p@d1aqKV Bk5ӀxyLcKS(~oblml׻f$ ̠NߍbK%lEMYf1hi#3X eUp_3KU8 kgHM|8H3J> Y=mz|b/Vb{J, ˜L$yOBQ%qB1;zֶns }땕UĞDLux-=kPퟸI& (1x#^ʛm#Qlł~`Րr%̨^6wS͙îm–$VjkZi y +9.{ +OaF0 ; ^q >9x%3`?K46bAg O+3 Px $aCI=RΙ=j4Aj-s=ҡ @}lKw j{fDm5W~Z存3bBexm/vKǓWQ"EQ,Ȋt0qـtAua]a%TqƓ +i7:w=aj4d@i@lSZH Ve>qM"7"[[?rP1с&I[L_i4,A +vK~; H:­mԞ ݯ,qk O'w[nNj: HEnE) +B^q8} o6@lŸ0?ٖ]a ;q dɓ!0@QP9i/Z%>^$ 1Vz,EA 2 mMbriנ>c\I M^c}"$0p)]{.[&?0wm:X$1Kb.TrZSM )0MtlbX 07s07:j; +1~YW$&d3 t~ܞYb#B2$A1ۑ/*iRIm#baH@٤"¿JH/XW1{دfѾKdl@+&۬a"1>0k{BbJa~XCb]IB&T϶3d*r) ݳktK WXIbW1Š+PR’39a6(`leRgőY!1[':u6bL +9 t2a s.+acCR +z2J1#2愭렵~A?*&6w-%X|dnw٪qVvtن& (\ FՀRm㹻ҷ@ 9$ WӰ^&xʉXTemXfayEχnaU@ h VJ]495,Vio̐^'#ȬҰJ0X#^5lZeTqQ^%dYx_ϴN܁\#|~뺷$-z_ +g@ Ĩ+*~q '{Ub"9)X`)p#1vU9M"[{i^?1ɘ[[,*Jϛ&A"v+Z+=1IṰvq`D>-H/4 hSH7dQUj d[G@А]XM@_ȿ0i9+Tuƪ5Ib)5' +.UV/뵌pL +OaH. lf{ +`b;}ٖlQ7@UQbXc*^$0+JX~E;8/'ib D +E0mfHܴY%xza_FL$b&˄ɲ,E`@ #QFYo0[h91PyG4%8Dah(F|`)az櫶Uu?1kV5v6S9NMyNqP^ש;%4<Ħ x \2 HT,]+C*3K>ׁzeX +NbP r =AG,Jؐi:5UVTMuaA@A b?<&ph7TyL٥[<<DJkjO|v7AqČf@yHڎyc4=Kln.~&%" =qFPA.W4\x  R@Rf+!((=0<2T7W0\\ +3 l : :\`p Cq1C吂 +^21C0 ,5XaeQ +;#x i #[x Qp`4\TIë 'm[$(Nn;w,In!(VDB on/R+m)\lg 5E^L +KlUMPk +HnLs9?2G0|BPZl9\뮕i$uv-$8f $Rb`d!RW͒єοɨ\DL k^O"&5;6`Iw!WRz}Y b4=9(EڅPQYB >20J`t6•bHh1S%1=!U5$;9ݷZ*IhhCol:`άX$̙yİD d#8uWdFqC|G +W(*lim 5&̃((+#BA`~<+66T WnUEk*Hy"9U c"d1;|#o$whّԽj NIl9:1 Є1S2N/q! ;XQO.tĒf.G"9!T#!Ta#KQ/4N =7Si"XPDva-ACy +E9:8vD_ː9g8s.JhGQ::blLNUw{t4}hyWɜ[x1x ,xb2@Bo80jE£7.@2` F * BtI|3OR88IXsóabif0cv;#쭸 +1(+9l(NbO~MҘޒ3/sl釐ن,XBd C14l>ffdfwx5N| PSh$q`wb/DAD#&S\-peUV!7KD\Hr~>ۉmN- ]"~W$W3,J<4P`>_Sט̟Dw"H2jɌ%#F x+bBMPk>UV3$jr9ܐ95  (.QzHsnf'3MBco&%gL0Fs(-mU\z;/qLzY +_4AםoA@fFY%Y =Y Δ< Qp(#(4nH&zF`0Q$A3l@| rQDF)a?-CzəH> kX˚hJ FK(^SG~!A{IJֹc )%^w?Rdh5$Sr̆p҈9(X%RߋWiSwĎDtHOhj/쫌Δf 4v4۱ iiih6# >C]d?9vf\r7uC16;:ԗDTxSEM 9DX e!=3i 83g=c+7e'Iêܬ.F~Ix8un(KlX)B!P}<A)iʜ"~ȄdrCϑ*ƈxC[]+Q0n*AÐTW+_N yfYCs3啥_Qx4b_f3(EQ|DA(Zd-"4C- +1!@ E!SCE,gfh!-L(ebX(-4lp5@9ݮCUF@!%+ֵ9ހӈDP9 M M]T'7{hj$Ѯ՛KbO:q`*:ns4 P4fP@E)0 "lJ$)v8fhO :*ϼZF:r#7EMSR̺Gi.4TP5$p4/;+aё\7^k9+B^Qklq.M>='(}Cp  I{J#d.Q\q5#3Ұr:3-UxkN)1AT@[=u9b"A]% =$?ǩnHunK4A+†'AB ,yd4*2ӏXC!^mOWuX41ȧC!P^+5†J )V%\*%<Q7V6pe0ٚa;U +j>cVPڎKS üi 9]9H5wXzژJn1=%U4!Uy1 Ç!N!GiX'R>V ~V0JK0<ԌBfpik!H2_I?f#Q>z&:Ƒv'hdG,+tLo% ʧQ2l 4quâ[f~#Iдr$Z.IoJP#O%~nYzri`kƹp#L28#mf -J<"'ْfP"812EvfWbMg[V!fh9] EeWo)C[Sc, h3A:~+pI +["\GNp%U0 g 1D9)XcS1=R -Gl췐<(lUwD^}4(HD ,r:˲Hmp(dTV{Yx;D?p˞Ѹ"n]z'yUiaY`ZrZn.ЖG -a%RK5q(`=3قewIu\%bXLBsKP:1IePJH XWE=3&$W.$yYh]ӋJS|=rPJ.Ci켫軦]Sy[FN`6z(J|3BA]o;W)wJPUw,+$QG J_qw$ɹpz`Q-F#Us &*/Cڦ%4^e4,f*Fvg<*)Rߝ#Ԡ_4ɈB5ۈ(ʿt(3hF'Hڡ!>Yp3>2XOe%u`Kk0~cq+ӽ:'5yAVAp9<:-;M߄<_ɩI?F@;`CL.]3l!I}_2 @f5/Kf%v:8, XGk_$v*HՄy^qe 5=,e -P`pؤG7v!ߌIboaH 4 zl%@`Y4<XfIB`;BiflrXs֒$u'`F^E^bmyFB[2 ` f`}69 $ك?$&c -Փ7x2p4w&K6^Hh'xέ"@/S`c;CD(ݽb/1=ky$i$b[7#$ѿ^DN``"ɂ:l.SO'KP kaMhq9WCOJL:XH))j-s0X`.h3yЎhsj6|^^$J)3K#jP S]}!5e."/@l:+2 3l:l7;e\/C)0I1jӒ9 SlA,+4 bSPb<鱪^ca"rHMM<ɸ5*i̺ 'fHzǗ$ O|B㿦ƻ<1%[9 U|)$f?fdZ3 eRǘ2r wh LEf-m1_د?vH~ϐ 2@ c$E(q@8aBptZ - rȗDfnXA<9$bZ#^^) a~D?:=ccHjFſi^91sM9^3Fӝ=ǒƥPI$&LpR5ujl*UjDS%vV߷lj5/i']?sٽؒ3T)e{Bp%-(n jlN&SF<xʡT3!&lr\\>_)8E!# ߙQd eI5pGyd@Ijt>>uǧ7m\)"g?Di\(WguI;SYeaQgr@v'gxX1| h%p;'8D@PV]Q&QztO%X L)8ڕ|b0ęoN3\fĮO,"3=TxX~ 8ws"7L.ɼ&Ӑdݮ}K%؇"<^nzLL<1Ud{) Ԕ.PƜwV8HꈴǕB|t-$䎵M^*-aR떤$(RNdz:T8S')9LiCWql\RM\@=R}܀TNHfTBWd`vIV`x@3A㠈қIN7XcBco@HG'5(h!/3^hI r8 Vy >L ZƖ-=`Qb,\nQ7ջ)"<="ˮ -&֖ʅt9]D=Fgf{#lbVMU\STSyAڃr5LŮ"@5qV=wB8ʠR!^1L+Z0%OgS5ďSuCdQZ L5޳yMT% B -#=Ph`ɨLy7ґN DY{ -wl"h10zkx'yD1Ml`VJ&3Yk#-Tیgay%Р͵=8mS8mwv^K)͜ ˓1P }Z ge}$z ]O);o\5ygC}JYr7^{W 3 =!?Ӂ$o)pԎ-F&~DeH k ϚHHvWhEֆ[K -XLXہ-ZQl~%E(u1P8 YEʨA ڴocP&ˆOBe3[H"%J )C}S]i5\kLƢ"e樭R-"ymGvf:6 k7-*f'VpeDsoEh6mk+fGĄffD`-* -&MdXLMDb%,( -2Xih;$L|ʈMEuݱ=Ѹ݅@e0gu -m@ Kɳ8cCMx 3;LK55Цat'W]ꢆ&fD7lISsV} si l:2t+H4^+X<(5mOFxd R=t9m-e,aWOzj.rПw iQl$rndK`:YxVPJ{|"](m5D{M;DmAAʥRm)f]. ^qNV(ۀğ@2WO0P6HI&C˺9(9҉IV,K^BF;x˜[:4$ %>|_ۙXP×t_`sY՞\PuV^䋪 d^^"/߭;%v2 ێtA}*|{B8( V6w,/h#ㄺۺ\?/~> &$lAp.eެYvv6c' ӈ9)hǂG^`ШJ, Xi0(WdkaDρeglԻ۾収Ɉ_3=gT.*4YT=O$rMVNN:֩aU5.Pwoy\Dct+1b2VY5 b60ѿ_t$TuAxl#uѕE LF>w_i vU޺&Yȧ5d:mf_ iKJ *b{Pd#Wܮv3Y=0U<dث+ Z`7.ewge$%jIdyow&u{II*Ή,bBmx 5 -Om`p#d`RA(-XʉUP8%)}+ElH\ -X s+g "MmL!S{6ܟ`*/~pXb}>stream -lMY<i9$ ~S@Hhkm*+^a%fosXZAE?g RPh,l)b(\YI1GqSݏ>FNGRƏH$6KElL'.Ng#;tPŏ=NSXq`=y}8Lm]7L @NВ`x - $ 2e=WEo9r[3pNZ/╓cՀt/c΄b.Fx gٔ,幱E.qV FƒP˜3‰^PZO^gdܺJYn:IQ&:jy,=SN_"K_ )6pׇW^Q!,>7[$u U$rGC?[SB#ټ-bz&/6*ŲjV$v&7HM"}LIIi0dКps! D/i$U} "KjI |zdB~ -M˦S^GJʕiBa">4 "&$Qߍ_ WCZeq'E 0;ƝbzsvFS9`4P$wEHF$}EN]~Xl:rgǯ)2KLdg IlA:J Q#(TZ΢9J`]oWhnrď;s\i4~텛P6лzm-1DaMf-ҟm҃6wM2WCu4ŻJBVYHU5zo^4M - ԚFt(Z\f9~$^ Ӕ`u)}ĄG| <?G 8QzQwuL(UBe6zU=#fh+k=ܒxx6׋C`,Jgޡ#c%`['Hg$!1R74r_D{gUn6 c;J4=C(E ^&dKKnH-Jh~aD\f'DIl؂l ,&~s)]lFcȻE4A1q$6r1agDR- -°FKD֠AޛB&sl%*e}b;&L 9gȒL eP,5Ԩ 0OְQ Ԃ^dV($ԗ\8RjyX -b= I< IE_i iq:"^& @[$hƽ -fMZਯS,xʳEM |W/ 9-GX݌FD\E{3v*F&96=jo,W 5GIWwT0LU`e<*G4"'3:c"tǢ[粥Ҟ-ΦePypvԎQBJL$cRC8# `xR`w J9ܱ-8ZI4AEg'6̧uj։;@IG=޷=fyvTK0_00YhnjKBΙiJ, UEZ񫒍<,r#CUn4arK ET)Ժi& -`P*5Γ)ACL 6RQDꕔQmfђW:v EΉG7:Ae[٨ =>M}0.J(K_IO5-<։=GhF gn< pZx#,lUzWuKZ?pYڛ&GҼ$ZjUYFz*5'W[6G#iOEn=4K.qV,3+d%EVfB%3ҳ)rUUF,MbډNMĽjS:.6T[ -EߨXwAO-W$JCT:\X~T 7}U) lPhO;PRl䘁Șq3:Wv -Z1ȅ2J $௥t -P,覶7va;M?uc5>t*V(w޲VN:J"pZʐpdR 7dn Ҡ',4fXyt!սF[2EAW2ypMB& UMdI`;f{޸aNj0 -ѿBq53餷'v5}& -$q2$Zn톰찤| -==.by׺i4]S x6^n͛ʘF9*Rc{YUS\HV_T݋&YEjv52iT*UL[V)U_ӴTEovAϨ|{Q-z*VtmmDIV/ v7 \6[[MKdKfzeJT:n*E@@)RSoFN!g"]ʳ諉&$O 5qc: BnKH3mLK,ȸ5!C"9D('-u9%[Y7Ce0;5L4KqJagUn $ԒY2n<\1ݲ Ʉ]ѷfNv @GMBNKxWE,WhR_3՘.rhŭ{v_YhvVb%xZG$F@KRC1i.}EWI2!;:Ts,հHQ~TuE{tttr!?&K|@Qpvb".״D$4,Z f~J P8 L5ɻS(T*tHGjUZ% Ł nmi)Uu'VdFf4q,6ҵ `㫛BF8`W -ՑO1AqQ2lV*LPc<$a<@T|DS|Ѣӹf[-6{7Cײܺ{e:7Us1 V]Vn"ʻI|0gtUEAaǸ:C I'ljNƚ33+ܶҫQ[J-ͩWsW7uyҮܞ8Pn#'>'}k3Y0.4Ytb>b::Lb\BE3`ƁJ@Ic/e 5-ɄR%U8R5ozs|,(YUu +Q?齄oikaIAL4 O|瑨zZI*>CB* b e?"U'M#~wnvXElW}C13>cR-8nHOAJw ԫJ H?="ۆk%OiPu= 50S#NXAVlhYdS&1؋_-2;ܢ4sB9IdiZ͵J܋W_g=BkLU,p}ī\JL@U$J,^Ts# L>l).x/! ܐhe >EW"gZt QW l5c&J/^D.ݎ%7+TR4Icn/-I 37H8 +/\K G2Y?VʇN.vk$G՜-3(n^S7ˮ9t2wE[:x܄,'S UX>1" +]y{YUL +b\oۅvY$=Q2x+<ƒ5Z殨OOҊFH#f +#`X$ /yJK; bHa?YS53AM/R|LwR3і4BNZ0aU +|ir8jۑO<H:JQһYBz 1:LN~SCi$ 4]O>dﴀ ;Ԭv^FYh(W[T)äAFbmUqNol`Yθ6 :"Y)o0 m%Z`3rjh]И&hk3s*}['9XޚG)z|8>Cf>})OubhG,:8پ4u%]dayk9`D񳪒H@a"J_zF ӣum4) k7nBڛ~=7gkA /ђ8:m}$Vzz5o&둬N8VOzՐP=Tx(O04$6JM 6*N'/ ;ǖm$GAq#mEHކi=n5(S`A l* \IZ|ZEݡ//:F}F 9­yl+-$q=ݫ:CRRxJ"7ڭcf%v,+]5zOYU،YeŒiPnǻ 0_L=$5P=or[W]S79E&aSwϜr=ޕ Nh`IQ>0L"0w" $L/x!#HQd"HDevQ7Pzc9x?3B(M H Fv\,ʼnbGV99.:@f߽MFvӅ?=ŸS?62[r<3 nN⹟'@-kV2>v)cy-khB,F?,~hmzلft,JVsUv8Ig1{**“r5rN +fd؛%0NW`2G]2uy@2ƣپ ՑEyH7e0^$u8tDR)NEUhM:{4х0꿳̇RXI`!^∏ߡP6 ^y%Dċdv1k~szCg:|J1nc!}dS%+bdR,I-AS9%0 iSg% +R QthG*VRYv]xWV@iI&3*,NvI!lѪʧBUO=ݗP٤A{d:|PBNrdN1rF_Rѣvuc;+$^o޼ǝ5K+"p*ӭD&㎇~*gom$%z~i[PhMr@o0+h3 Y7G5,y+BJP\laWM$ L60ɚk|Zf@:30hW:*Qs#RDFoE}5nIo/1XIPCIELR-h Z'vD;ЋϻFrwssQ qCzDNztPN]ekc==`iBnd=z'UnQ0z~͊LzGrѴT#*ͷƫUOgfΫ|2^@Ua'R{1&\v&FZh:r(Qi +U?c."etX#0gʹ W$); 8 Qjf6&za>4yiwF#;&n,iXB?[@9H(<:&v{;Th;5JQH>_t=)N*HVuG̴QVup Q^hM!uA*E[@Ly(|+ %ʡl*$̒Qm-e +J#!S)$ԂyN[ S +ہw#?m*")a8zε> N[>-=ZFC9 w\6%K(?q=lhu`C%v,j%ѐY=ï{ +r#  mrǨz@>zZoӋp @i^nJ EoMj'vbHmBLM0Q״arj~ץyҡPI+qG(: ޞƖ'\ʫ^3@aѽM Oh&q^Cp`PA@?Igl?Y&K\ {I&l 4P)_ }E^6a|q5ףpҪt E2xa&LJj6HtARbqQ*3xw8xçLtzu7 ?Mϻwv}S`U6")~Z7"76C!$qTBZGlR; +(^8n-]NTZC@I{ + DFɄ1K + ۭ;.dICy ihh-ac`P荤aS"T{< >8 ͪW[D:O`X`>Pj~ HY[y XIB$?v@zźv>DaPLc۳$'ȊY$ >UAp4QYAL$3I̺y<$)Aj 'Co 5%:&SC OY0%ׄ,QᢍF#}VSdiߚF_sIOLNY& +C~wf $ sPmx ɶI5l ̑nzfmwl:瞾S{f]N%m+4۰$Ƙlt Oxj6r_iijA$ݶߗPt.atAN*HG>sRb(RJV07Ǟ,yI]S9"2y:MR$@!k {Z(zodHKB)?oY|}z[sI]$k˓; +,A tߥ< 6cЪ$vS%;%V]ZT:n˯dtDonuboj*ih'RS}"rt/$0ƋDD%D_p?axs>Rkdt}UtJ^-"n +вF }~ "5TFFf$:,D6C蝫6W+o"~XE5Q3F!%4_?)Ѯў J -Dz ЇЩo8~ o GERS;zC!*^/=OV\3yyEK-3DbEjCp +ne$1 &'{!8 Q,M:XA`r{^h9"hЉs-WcDX%37r8)q #@;ۉm>Ҩo5ȝhtg)v!|M#hN 7i}fYs,CDK뫥̈́3l4 hFTax6Mñ/ #pU܀>gĴ0i@ˈwB@qxbj/`V^X=zrdtn):cJKtSNoe.:JaU8U$4C(:U,X}A霝N"B- ۺ2-dGc`@X.=IĽ6zǘa)Bvѡݬ1G.`r El Ǣz EK =ey/<I 5%B$ѳ{J`zMQGOOԥ@64uJ=jǢŒPΥt&]B|Dw 3 /(i8,ӤŠUcm>ΤRˬDb,Q/6>v L̦C\å{ IѰf?R .C >@% M~k>lYy%Vzv7^ AΛ FB[5%FB f&jiˌ/,>stream +[0 j !WIp'"$TNNAp+$W}d-ڬ}Cֵ{T)i }t2vyT3beMaY<GΡG6 Bn Hi۫<*]PFHE"yIH%J7C]jKyz25 Jj[ ύ5H%5a0!}ixsƜtVm,JjOA Š\%zX:B* IG˃fA(r0A՛aUJVЃL)8QZXYe_LNE[͚uA~<ʂ-I׉j-DSHy :3Ea@PF[)!tdн@y=deӈ*Zt"ڐ5V1X^!'48:  a4|k<@$ٙ#fq) jz$ru`OA3Ee"|:ׁ(a^;?`q +ԉď @8Ó S +?2(l&܀7?yxG]侵_8Y)qu/rTI=mh^r=ײ-m n/ڔ^d@. b?I ԩO̵RTL>P^o~zLHdوOKGP͘?}ra)EܘiLWZdW%=q$.-賔 cWdE=/`3*m,t%)UKg$1;1e٪ _\>CHeʢ-OڻG; WFwit^>9>oŭH +b߬-C[ǻeÐGG#<0%o7+RI!,6PC'^m5~Tہٿ:_#|zE6\Cq^Ќ{H!O /n>=W.nm2,g4щD+"b5 +V[Вoz~z!Kyv^I%7SUzH)5}hG>FvgUQ458K4R0kr҅B~jQȀr`Q,%KpSLp9AI7 +mYw Q)@a6Û$fLjOH&TkfN}{ɍ=֯:OJa6'\r5ڡg!(檚.{DDMfTנU}DH?ٞ1)f\j-׼F>Bm NX7ı]?-jHz-hdnBwX5@*'EDa +#{$@(V,\"QeQ| 5Bk&%M*ʟNwGc+P0pG)†@MşDVQ - FFT>dPab {Y`$HXaʬXœkhsk>e\4i՘m?+m_YEpk^:fqS@~0 ~ ms+cW:"__MIV477^ndEhZ||R5ӡtY|LU"JG"VqDqÐNn"άQ!rGdjz(F9KgAuFq5Oӣ=~U!%C($l⤡C^'TznK2Ll\=J_#dЛJvŰ,#Quܰ,եj+sutUVnWCtqk;c/Yx2 4CPeesk6rkqfR,H##$eƑ;~>Y~L+pXKBRXFoh3#+U7 ZP |e) M&--cș'ETD76~Ҵ(d-D>o$`` Y} m)9LQ@fRQ!L6ǧcP2yby̞U7޽/,Ì_bm w$9~ K06PմK{D Ô͡b߭.0y3I4`c(o Xů.yVE9h -6:x2O$ QqlԓhsBQyq7HX1S5MGRm]$,Ic :h'8Bjby>^V -u$9T2e&7Sqm0H@ W_s ssU,ΙͱdX}[ձ\L./)4=U jI53f??*jCwi -o;h3sҺJl@+Qo:6[|zְ&MtPː釨'yS]=VJ…O itj}-|x^~-|n1t""n4Ƽӭ5WrhYfݤ)yutPýu a97^oj?mt* 1}EhV泶LJ -nF"K֨-j}H)Gh*)֊ 'a  򮕓i@d* nډ+T"2to\{j #u:ѬrV$SSi#>Ґ`b|F[Ѱ#GRs6NCtZa;2g:*0v\%w0lscb*u8:$kR̍yufo5oBF\nxQs72G4]"H6mc0&?#Jd -0cfD*&4<.9sySpZQ{2hmQ 7|ΔQiCu K8? z=!5B*C.I3-yD:irRf[IV'QcZeI"i밞)*0?JnWz_r($ҎI@j[yQ gu9PamPQ&"aYҔ%_|s -ƈ4u kΪΥi_}`;G"OְtE)# b0$f1&r;(Drݶ@!IJ;_T'NlW*צ"x1R'ѭZϩ -T9l<$a̒sM'\o%?{4l8#dIm$faaXPH -M]nbo%ShIS ȍc -?mz/ @kh07=4/XOF(٘,\r -Gn&ZBa}闩xX(@j% Ԡ}tdK7NBHO&~D7K&%|x!kX(YG&/HO,G87}== o7Rћ‹Ht"1PdEJnrv"Hɽl[ٓ`g#WWr -BT+#?E[ ~Ax~D`CG bIMi6)Wij:rh,HmjLDx}/5I=_y[ڈH&il[R^eJ2b-Kx(CLrBG~ 5$!5EB4aޅD̼-[ب8+8U2#YjM ǬC/dvv$jw;ɒhd5ܣ֣H]cq[o@xR+g;%33uW7[MTnn &(]5PbI{=6!P+hM_W!qmH!NAj,>lУ(` ,Fwp9 k OH4_tL10Pܑ6C>Hgq+;=-`JjFj=%o0qI{&>[#BRgq<:&c[sl=-2'7%~)2Ls'+_p6@}Ng_@2MYeOl$$5{Ӱ4^%>W&ʞ)^`TSATLbcoZ@.{R8ݼ&:O '8aeGDY3:0m}vȜ$sɒ9ݺ9f mirKfib<1iA8-@bIB5$ $OF8910VFD#d] g\ٵ#U" ӵ_/[Sŀx)n> -ގ4t#DHٞO񈿠\׹#_Oj@dOoDXy4įv*3}0곜Xٍ'r؍.GH2.(GضPP61-HwNUpQN`(95q*ʵtcG5F@*iHRQU+ODv&uE2@EC@TM3)/DIΚkHj!GdP (s( }O9R 4 6r$I=%l(^ AGw kKR@O_Y%Uį7r;9 KY@Ҡxs|$k+ᣳ{/d&[闲Zb\ "A(gzѿ!ΎW`zu_b5m.ow'=Bs>8`oK ,gC;?G(G㲷T*ʋ8-gv7 jCzD%tҐN9'4TRr *{m.$ -;,#ovʀwt!rZS6#7@( 0zk.J EϺJ#=m)E3X>M6ٻ$!o{/]ivLQza[{xZ>*D9ܒ4۞_&L rJ hTʫTAS'=b>iu`ĎڡZ - xHp6ƚZa"M׭wƚ,I&[$ħC03?Q[ g2aywYnkVlJ`W)o)?.,7}fEX@o,m ur`ag(2Cňp *j9a2+ 9y-B -F g󁶍S>(9/5<& ^-P!x!;˙xR5vWy.62ϗ*iyvq9"6^y"Y`A}Ђ߭pgX8jȧ+lx>9Y4b7jJm0Gf G DGpxh$W}ִU{9`kۤ'ng>FʑJT[#>ٖc޹2,BKHN{݌$>n 5;hJSllbb!0/[dn:x]Y;ݞ=}fgdwVnL$Z&@ʶhÎeؒ]WIfVnT(tHa YhV bۅ{O>ѫGVfO5gSGzIJ>|IB9 bEYcR)j*x-$Bfes0-HJnfiRfkΦMԤjȈaգ}XUlZ-.mrզf޵FŘ=L{J$mQN/ N4#gF!쇨# ;Iz{BQ#8`o2M5޲AD9OkLԾk>It/5^R}FpJg=Ih^I`: mӍ$޹vN0 -7^?[歹p;cfQZCWQK)&h%j H O\h~*+ 8jm+1Dعnj¤8QjЙd,BGc^3A5mPmcN@S+ TkX:̑xA%; -%"ԱQeYZ n ;VGspDW %I H;)Ai&2ͻ<_ˢ{aMgDs\ JCÃ+j#;6A!(amdg,WQ='մM+Ξ@!Ɂ Q/M)+9dd QRctvBM-4P8K2AΠ&C'+{UPijCAS&9dGJ1 /"؇dϯ9J -GH.!; lox67wD̼ M7=CZ \$dnS>*kQ Il"<:x| ٪$ l05fDRr8 М+KTi^0 pۥ:D'`wߪRiMߙpd>u;*%f"]L0p0jJx@:Tq<U5ac 3擄T1$ó6[ tk)S#I&tFUnw}΂"mn0- :$Cvͤh$Th$˅A[0=CNzC̶SJdhExE -5ܧ8H2ns=$/RQHnwI1FWٕ*^j vlp!ylQ%@{ϩ3(M.́LV(!2vc<@<BN!BF=\m0X=nlc,I惔e#*^,௭~CUknը({` Nj*v35 qO thգp'z|5@D]fMFa:OνTZYצ@@+ZVƽ++K]f^'e1%cJ#q 82_uw뀦(g"6TKelab ++(.*T$VҴԬ%{~zuw;ݝj揂h,WP +c>dRȌ2)g1ɯVF7+ +.x xG@3$&NR8.tk~BT딆јݯ75ڤ=2JI%bՙD8txu泬XאU_BNsEs5C*{IT.TGy!dqCUY>_NGL;g8*BHB; A=Õa;3*܎gM+JBy2pa»XlXYF5˴>vS\=0WFbQ 0^4iLDG~VrYYxZVSyF@d@QmBBH9ӡC"Ev`OS*;GyE$J9 G(<ԼϚDuHZ*DL?\oP0L`#Q(EUxhdF6ETJ!z ((N Cd%MI[vhҵk+4P?x̴0(91y;LN'r 2ASJ"7<8YQ4*ky+~s$P*GZKE4ϝg'5M4.ﰔT {#2, #q!m|EL@҈IT6h4e'cf$`RQvx `yuMr&Pw/|bY>5$H7Uλ ] M?^chuL T"bYtT+e|tORApD&ؐE@@Žp1\G (^ +QCp7U&c8]~Ch##^2k^C*u1䘳هZ   *# ʕc 8q8BѠ +5C(A0D*Ij +jSB#<Ȝ@ '[n  d6Eq"6:*WtˢW}0(S>(B < +b`0ĥ`.ZAE=ŔǼ!'*$0RL) c(44 +Y%PS J@T>^Rac@2>APL`C=$׺~٩@eIؤOMb4˼iM-MEesTjʆX_s\'0sSl#΀(pjBBi9[,ɬxb7gZZy@kEMNt"(sR +E!`M`h%}¦qHψ\$Vct!g%T~/B!Lª@ơ> +ZLˠ1I/o(gp| rDjEg(g !Eu7݆"6wV٭0hx YAf_~4+y>#M!Nz, ʕk1Cp^kgnʣvIfQ> +{xa,Ԩ3k!sg̸٧g'fL |aN;[ƳoPfZS˼ 7KHTɤKS͖DWW$H"ܱ4H0T5>#r`^5_M (D>E +b^@jWdVءJcB(+\zQ0%s +J<(;,?Ԯٰҳ5qlk6 _Lk0ORSQK/"+(NW0;/ݠAV/\<یGF-$DAglV9t4H B{ +Gi$38=* zSЙ̳ЦA"W\`y6*I@( 9II6i6.ƬBVC5v)ǧCl*@mRCڀ}`1&0::{- [Y.ΖY"Q!?:{SN)Yuq!+̍K O/ oB%$0z8|fVY]3%7p0OK\<O$x@ +T갊x}@vኙ[려Ua ^Ԑ:U|E W #Q>~̫H"Dmt1fxb~Rk[h!Bd,H*)FBRA+elSL?喗&(ʉ6ÄX[ TRk]P|tͽ]UH| 2d%EtG6ܚTtgJr%],@ +Gt 6;zh2LhkO#V;K!Z.V٪1& +VV8A +Y/KoK=bԇ8&nV-ؘg8wAry/$@ƦD!^:Cq:it5K +pw]7ctvӽm1ӛR?cI[@"I ߄t*TgkrL EY7PPz812O/p@"-co[v}.ij\ɡ2 8 +,rJ'I4Y:[$ /{X d#J 잍mlT"Պ\xtF}6"BMeWtMFm؀2=ZAxV x +PֵBmSmdANׯ^5"i#I]O6n1D~@zQ2hBW {;mX5uit63 a8Z96)1>;im1HJH(CpoO7\}}a/TBs\vlF#u! ! ҆:)lI%WGÀcQ6^(,H?S3r#B{ܪeN=3EX4ICLh4'g+.{Qgj|0~npΘKퟲJ7,d 2#4RssT">Jb:#NH[ 6;e-u+)'>knJ:Y|P3#y*Xəʡx2#OM"hAVn>{©.wTMZÈd1ZlDgzꎿ$9HFZxJ|/60Y +IKLe63wY\0Ԭ1CLN=#i) Xnto=huM,,na ,3upO +y= $񉾱6vv) +E5dD=It$lQ17F5SR,9!A.5:SWꗒ}A\mWuBd,b7fA\:Geّ>ܩhM:N U;ATRGbVjoE5{ʩ]~[mG *=—Sb" U<Pv}ÕOX9Ӛ)!jHNBO%\ٽJN{G O%`W,]Z4&(p 9H +z7Ix@lXIzi·Q +#bѰ.Jw$t:-z8LH[tF+9d.@#]+9;"[BfBI>Rb&zcxMr4Il2o4ڇt[$l de=SV P^aO.poշs~DLImV'a\F$,OVE1eRx{t  _7]N╢dsLw` ­L@k"2sl&b A5{P +Y,!nEBoEݰFj@0]7Gz("q2@ƚuQZ +dvzfӍC24CWUS+%FnI ׻KUa}cu$֬sbh +B|r_/~/@>$_V&Lc9hg+Izӛ` e}-E?Y^ LUDūe9h$gԊ%12.Ud5XKT6;"uU\QfJKۂ;lb@f 7Hgʞjc(V 'nfӗ_lǯޮ[%YUd~cFm~~\a.-k9UJp]l '\{ R5/př C9js:D2NFhoVm'ZyO הּò=S.<+f-И&9aήZkD)L* >Ѓk cPGI_Żwve|B7J.UBPvJkW ѓYM/bΝ)V d\;PWe2D^r +{TB{`b0* xnĢ7HZ$TrqJt.1j+'Z42U۽9>ҺN6]hL) xrh%\;L<"m;Jt6f'jQ8h|1},ڔhJLU˿Yn N=J +lD+YH}2#Ib#VRRuxꈰS*<됫AXvڍN 6O]CM B'N^%p]jtݰǺ.c?1j#e6SJ:Dt+g iVJQ-yVy{ mMA`NR:^ 'zV6NF1Bs<#+geGz_ ͗&U;d{avR@9W氤 Ff}WF^lAXG,j01BR +1牴K #)'[C琾K }f>- ?mK./_{ެhvht[Cy0 ,9CT]#r 1BC̃JB9găx$dxL +dw>KaSnRx ebCU*![\^I)L)MYQ =m@~5} +I=ƞ4~ Ez[$FAz`Fn{T`D(N3@Xue? ҂Lz`R+ q+_ PoKaL ߳7)$c !i%ƍܱAJ&^ON`ܔ#ֳeme +$ÔDѯa'ç۱z)(e T#GI }iO0rzD#FYV<^!κTw u>TP $l󶫗I4'BQOaӪrLl#E + (nN?WIz̎x,$HP` T(w +lW@ʒ?IM/#4ž*zv4VbEXMI&mmKYǚB#LoS1[]>Sѓ4kc~Uڗ +rOq)_3 \q>h47 ݋9R\h?6hAJgL$JфWI}=Lz\,p"˝v25I8xH7>\#u2;R3_ӚnR7m`ŒH0)FD5)jx<L5fUpVh9@qU\Qwբ|ZoD#pVg%΂0TŧL#E'Q:9,m&;Gs/ԭb"ј${2Z)11qGw]QRu|vu~UYvY)E&%Y +Zn~?J : TEhhy2蔴 -s zjx喁Jw R92vv (c@eB u)@TYkq0 )6Xm]=`IR6yJPe(iehwyv׻X᏷ER]w.V3v cxP|AM`d !"5L1M%*5*k. BWӮ78{ +IaziJ Xp22(1cz;d`p!X&(% WgP!䓕a*ayG(١eꂠ 2%;xPaxy>$ cx~FVR +u$ƐsCftk7E<}mβ7M7=B#pEJmGe-j-"٢PTV[PPU$ fuC Hj]JМ+K"ҽ0 Rfɲ<vJ/fu;*U +&ҡb)b cy'şAq4!yBzvwHYhՁ{]` 2G8 6Ut6+:ҿVXBVW5jYiN{ץ}ĺ(R +ȃ "dk9 9 cգ`֚k=ҝd>HQV02u/P՚v5z).v)*v35 qO thգp'zA֢Hgj.RKe){*6u^+Dq4ܛooԽUd_}-+TP18QGf2]ZӎguqdJ">P-1\I,+'P]=& 4R%—X۽'pqXt)F@)(DDQDtw +E)6jIHBT +S6$Z_3劻$J< פ_U%aX&tUo'RɌ‡.j~Nb/<p9J2hI ZSYbyѦX;%+PJ']wwIFW7}#,bӂSGF]v #Bٱn9iivU;&H2f%ST=sەAVi2OmXFg"Jo(SYI<UGLPMF*/MX-\0puUQUe 钥EҪ"#=U}sm3+I7Lmʲ۪rbTO&MZՙ}}i umXj+Me;4{ :C\,p)HOF64,g06Uc'X!8 +Z +ޢU,*iU+RM*C;E~ @@9aL"E u5QkDGHc^>fF̊X'yTWBBZr^55-KD^W$eIi +{#!?Rl@QLn϶vyykBC)%0 +# r"5iU`tng \@Q˨v9VDN(!-/=OS|/RQrڑBe sA(QJ R5n˘00`cdIVPԪzm.mn7Vs#8o`j@yCTsj׀D'4kUPgct>N"9ȩ +R-]K$L˹.D[%՚M5p/:-(-cizz-b2NLdiYuM)W:35C {F@'!g=P*,Ś3"V +BCkiE 8"Cu ƬZ4;eZVf\SOW%B̳,\]p]j݂~,Cc :C5 S,+*s^Ֆt\XC<2Z4o~ETюy(%d0{>+&F%cH93a#SAgP)^\"QBde8K_Ć[OgdZ`@MʽggsX8\Z^|Qlj9 mSM+9afe=?,I[ŀb)S}>as-+Gk݌3#H靓+Y*iVdFWQKN L]:+bMwZߞJ7vcD@a۲+F?x8uڙh3$ D-[1X;u`|JCK-I| W8dd4YYf˱a3/ʣ=bf5,?u :VVA.\=$*NP띜 +gǗO$y}#Y+`pQ1M.Vf$M%0v)Q)=PT&2v8X6-+wK:|v ́Eυj_:=h +\8A,{"@*/| +wA**H-XV1t+fCMHEz{\BxkQerseȌn>DJV(pegņI>Xc +xo񧅋xƬC\FmbOQ{*L3Q NLKH/*O$D̬Вg!H<`KpupH|!`ID Dfu*Uc$tY +%uJUo6A@;DGR})I'MHq_PWNP)eǰU٨AP3"yҁ]F5xq^! h_^?yt6 trC! +F62ڳ3ǭ2V4b<=|=N{%I .Ag_B)]jUbx\38;oOKkh'JDž0&9V+/V+ =OW!WHe+TTt9|{FZyB-{oϹ` s$eϪ~F"#2Lߘ#gįfOeCoR+n3@+1$tdydqdQ}cӱN mgdf>*RzY0uw+߀D?=j: $R +k:)Yh#IS Fpʸ$Q颁@h{>j&>u։j->b61C߼nu%LuZ)Tѐɨ]{#!A +VWmRNC 勾H ]j{P Hë(1S`=-80%{deǩ`Xa -00*4iK&^36AfWIn$cV2Es9]h:k/JjVhěʬyTWBBZr^55-KD^WK뮴B3e͝4B<==ΐN+pDijwȔdxN47J'$ɔQ:,0bQ -`)d8Sp#,7֔#-jVp!$8{`|tI@ǓF = GB~gt{MG&LRJ9a(6\G ,)E.jfӪAƹQr,6~xOX>JQT۪z:## :Q|!PJո-/cDlѶk{iϣki-IoIWo-%j[AP>0`cdIVPԪz4mn7Vs#8o`kqe@y3,Dդkfr -lI$9ykz s9ׅTk6׀{i9@l0O3lqB0\f"3ORkLYJx 1AaA@fx'ηАZZh:Bc1 kY2-+3¼7dW%B̳,\].nAgz XԖ8Fz]]{eEe>NKwGfTߏHzrmZI#bkaPb0)9<A;x<޿SU'4-2"03BZMku˽i^ϲ*&;.'-B;Ε1FԏlVK 3}Z嵟]jKm3LފLQme)ߡ -r U( WDm|To-X @ en m'VX,LFHJy{dBsNZ̫Rx*E%T8RJ]9@QYZŕjIJUt H$8ÆК -5SvV6=IrCJ!fOa(`E{Y" -  0BN\V6bca `8"C"qVwf>S0 4`u϶FHKS/ih21R?z_vh˜@o%hgxyRu8Vj7V1Ihq‚Sz"?v9kp{Ǯrݠ[a/O Qzɑ,%TIRTh$A5RI$>0^[A*2@c-;䁭t6 Z -L:v뱈\7v}JC<.&d۷J!iϏPBrV: g -2i9]n.=nb #{2?3ZelD1.tyKOL okt]Vn[xTT%mH'Fz@PUlIn8Mp/G0A >HcnT |NYҖ&u#ʷ],s$|PmQs{<>'_?,9>@t[@Y[JcX> TS.] -Ѕu,KD(& XA١2^ [/eBJKLU>cxaz5eΣkR%rz˃rHuԋۋR3Wm5wgi_oKyFZ7E-!O>1Nh0u[FtЌ+Դ$0rjdPKh8HF-^剑IK &jOwYŢ`$|u˪, -ZXO'z'NoO6[No,98r7N0|alKtVdO/x$ Ëhxvҫ:wx&[I+Ֆ^_f0e%='~6Le  T&{3!A]Lٽ w\; i*j *= vꬂ5LoFS m\2}| ?&҈<ve&Blg#I ӛ'],#'CQY -4E;=S#%7v\qG֥=:)ͤ -Kzm7'触waUHQ[ D? WNg` ϋk6̤'TՐ&:L5QfxoVΌ%BA6Kyqve't"bLoHq?|{<*͕ A~Jd_]Eq@Mْha'ax)(Gccz?Aה.Z.EW>n@y'zZ8Ypӝh%[jd5s^~C>w=RRKb}Gq2uan~9bAJ2ΰgC/:ANeE$B+aAL'[۰ܙ -pjDz|ʱiS4!⥾y8ga{3r.FJPJ$ σ'/Kպ˦e&ы#o@@ _ s w@ H$H GTWw5enSw]Bd%"1o/A~I5\Xb>I z9%ZX4#{Ÿ9B+JAf Nr -klCڽF+%jofr`CcŪ'F`A+p>4GrH+ LfRAĽTnh m 2Vc ,OE?}Rd0';e |;MȆ%a "8l9~КgL$ϯLzh58A=) )N`[m'̀?FnC$ & ͡c/oÖq*(Rg1!#s$XJ, 8ٴ}#(xS-_x<:#M7DTOљ!B )j"ZĀZL(޺ZN^!plsaEM:F7B4׬RZFB0˚UهSM>,_ ؍_\qf}I[% 4uV/$FWtxJ>&_07y/KV;$q!5) qx lCK$",:CΡ VQGˢ[onP;}%^g[̖P϶F+p96Ǔ͢Hx~Bio%o5j_tmѻK&% /Ml|}\ulddVBG -3:@sq &E$/7.1c='!Re U%:'Y" be{Ybג $ ʿL˗rN7]Z7ڔA\bvoxL<1uW dyFxQxh3n%Oh=Gf^fFo%xw \݅“- S؂HмW: 7+!IrBkM@O_˒?|I/>Vp~"yw4Fi SQ}dT&*$VxY1 &W}Jmcf0c٥Yl'x=ޅLhS +i9z4rGD9j7c/* P9~۴[!1I,m%c 7KIz[1%WژpD 86+:nS,D0A|5W7_Lt>u@:cbmAE梛)>0?rDghgnuT3Y(vjjӎ\ݲ(~At$FAeDRsY4Bw`ibsܤ/+|Q} n@w@bgF` sy[^l>{6.#4Sϩ2v[j%`ݯE+qW$o<-nTwA>|#7& -CF{SS`")Tp+5F:YF܂KK9hɦI㽥mxȳiɱச[ygYeZ>'9G͓FZJ&x6⩑Җ)>xVbi<'ȬǬ'7mhkW%̹]4ImLZBE?=d=\ A[Nx2k -deKi/X:&6HHIʹyJb*UXh1¶6q&}T=OAqiGY̨4"/dzH "BGL$P<%đ =$6Jr%j/aj1$ n a[; FJt?_?fn[O L Fs"H7͝;ۏCn^'t5B8jKmӠTӈGd :F! ḑi.JH|ٰ .RlOUo8{! $#o^kQ|{ln|dNKf34g*6@@m<|v+"$=1,")p)Ã3czǁ lŤ$6k{W` (v,oEfɉKc$MizUvIB:4YwW"[I_<V"N._Uưڔ0{T-"I; w1Òba#ulXƗ:6&U%~Q'+:/_ߒ ›GF䰚ZIIpUF]53W*),YsP~Tݩ1z$̊KxDsT(?Zφ(-iBVĊg[lk$!NP{j#fF$HKkHMFH`D\܏(ª X$<VX@@ƟAX,ʒi+ڈ1=I|3BY<$Sң#_^GoH m!2LN)փ !(C2hLžoiwrgb$,p&튁Ar~;SL띰ل.K3ٕ$?Xի cfY h7D -)1["L']Iv1S2th&y+lǓ Nmm 8vfJ{!f'g -#=TJL0A pEnaF^rEUX"s5 rA|JY!Ŝ|i%*G-OV%.s>&s4א"w׏T_HJ“y:OE{".<Z&Zӌ΃454J^+xU67!PֆyJ}7эJjB%JIt]xA -T"T\xq"0u̩EώLZz}ClJm JHW"}ȓDŨTUBR&"g 1S:Z[ YUJXuy_W$6WCH_,GHV]hJԲ|z3%DȁW$1=\J<3ɠug,C^d>{="M ݶ WȜBs\K]]KM5>M Gv"R~+VZo)I &jcw%Պ!} '[H'Ȅw]h7"QH97j*/`a4 -/P#CPG>hl tQI\@0CHIVR\;N^NdE k} if#کkQ9{$T^s:^q1CZ2?$ -i*M=IԴ0uҨ>Hp$$䀂 F\C]$]4ZbMMI O.g'Ѿoസh~oLB0cc0Tf X.9D1sq#lq0RV):h%=¡yե&"(pR!OW AzeRPV/!9r/&E,ӘcL0yyE+Sw(# D+C*4e9~ ʽ?nH`>5;Fsh>t)}88>.`]-9jq @8,K{<ݸr #y$ G~(f8Q2'/|R֢Yz/:j *旅"qGM4v{SIwL& |{Ԓ+$ #gk"eCBh`v aG*Ұ@PC I'<8 \d0Y$u8?Sul֐Rκڴ9TudGLšCa&l!lITCmTHz9"w֪к#4zu&Pv\4efHBӨ-+=} -K3P6ʰ^M,!KQ_ڵarhm#Rsb:xj^ -+ aޚDo` ?S{Ya,čX@8]YchīZ~ЗysjC@aAx!{MiAv6%Ņ-B ~rOn_5{vU5Jgrs}4HJqؚ9({Dlt%1!eaw)2K$*Z;&hV٫.ɻL@ގ`N4Qy~(@O%S,LxM<_WJ-IAMB xW "De>/)BJɦ-J3˹ SŪu}y{ǶlYūk vňmjjmĘ& oHe#6J,!CP(QJ^T>FN f|c˰mS-ÏoBӌ.$0¼jL YWLYicjY=wŜ8"9DStʖ[njbd;[mUpw̹z0 :L0cd{0ڵ}Ȼ۫߶ʖػtǩ;ŜOY9ƣ$_{߰ 5fS!#cnUue$Hk4Np -:.^:C>|qCNv5 6Ƶ狌jeX{eVj`5E.cpw9pjVKNo^iWec٭1t'V&"LUP8쪊bd M$rM) /yZYb刌ÔdNѤ'#yx4$gbZvp6#( EDB.&u4q!H6ڳEsb8[u]i_}8T&Bi +h HmZPm?^ϟV7珷ö#ZzK/m^ -;\_LMfpAWۺJ|țwjF K* E#B -ABc36E(K1c$rdwX]uUOU^I_)OjPU{eHz7 JsWL{x}/խ󍗛ٴ8;/:\!7\[ 'O,߈w|VL;p7)^k ,X i x@P`(AX4 P ` beҌ" a'w aT7 u{k<u!KЦ5r$qϩQhRy7[5'6iO -$d٤"C{7b\4ob;ZyN# --w۳݈zgŀVjg*,YCʊ 2l%;"]OmU|ZjH d4QqPύ<"e+F׆VʘoFCmd wP;Fs[%23$3#IAr Ѐ0XYz@ B"I@4Za A!DH "3iF Ѡ^xCKf_ҍEnD 8'_NHeB&4E^ytҊf9pb1 D(ɗ=wt&v;w -DFV\i2 -Eq`-.͞ %FlMHFzdzw JsV@V~!R. $ˋcO)=yCX\c}lG,>%5$ZU2Ud;"ߢ$JSj*!wv~Rz) -Vg|6^.FQ1x?ߑ8ަ^ؖs]rlg03>`-r֤(\⦄3ˇP.ؙԜ}C= -P.%laЄz>@\M+*`2<Ӡ-Pl./iI\YSeL}WչG1 -!Qqwغ0BwR%cKjb)j)sz7JX TxQ*4 6,:Yƶgj&T5 I%:-F`RIx!,%T+^^k6{ E[mu7KN&Y3Ϭ`; [&IC 'hI=F'Dۯb+` wvBm$Ht!F2+,t)>;B"9}٘p=QECw5\OuC ,%L6q=dDE$Nsₘy< D|M{\%m*j\?<3`{z^n~HZY%sFZ0yVG)rOt P ? x7ʼKm9ho"މ_k`<Ӏ$rT3}l A2]:XI H<$=NCc0YqGL`|H#./Ah%-Z:BDRhظ΃ggj`gp" -1P" M8m> m Q`)RN@'bqwz5͙_Cm#!^~d n#(MbꈂǷ>u ̢f"7܁'~inFyJ(-"Ygn@<0f}XtIvF>K >bM -m#z=|cTLUS+]W֭f^+vdf;hR+<Ѝi'`pMcya23?^yL}vF՘$ ჲ|Bm'4t~I(N2Tb8myMh4HO@qIDS0R,UChBjnc"0;#:XӟގX=+Ѩ:+ wSN}F@. M|&<"XJu׆371ACgn;%Zs32L Beuѫ)D%)qN\=m7I2%Ѭ_uxo~z%-A$Jj -endstream endobj 266 0 obj [/Indexed/DeviceRGB 255 274 0 R] endobj 274 0 obj <>stream +?BsRߡFX%RwA^׼pJao ?ش3a"qܸT=0zj$e]$5HD_ֶ.'<_ 41ӡ+{gjƒ5E/$eC $[>&26&/$ cHګԕviЕ @k5&C1 +kA#8Bb2ڢ[[o>i%_P#HNI^4(ҷNHb$L4¼k_-cmp&)Hɑ@!w PE,)|R[q?||edilCBN= IĆ!(KNϷ[ycM1N8`Qc6eh +D 7oĤR8J<_ض|Ԗޑɠ@Щ*`3p@WJZ(#RlKe9:}@+A04K&A@6lx8k'[p (YN t_8!y2T*X؇8T2r +7X,A7}5sB +ڼxIM&HW̎ػ]/#Prf(1|s!71tAMJv|9\pn W$pЛ'*!*vyKԪ&#}2=QV 38&&K ?f.ܿt׶ViKTCMH̒oiWIRt,}ESWƶf$ׯvxCtүKj'-ꈵ_`Ø9(것Cy>Bz0?;dR,ҋx=i}"!F-;LoH!~P?bDf=6 u.z2azƕMYTb8[bQ[Lá" 7K '27"¯XoW7wvW^lY2?\b!50)DsK-}Ǎ-oLHE +!%E.-9KԌ3ޭGn +so!ҢJ"[c{|^0GVfJ`F5@>ftW{pL"h.svǦZ|S-wXp +kO?YWLف`@OdA1*TM\мgO_lJI`@j5RoI75d! +ЁE ]v0N _ˡ7 _NMD^S虚E:D+_eQB7 7~a$.}>$[33roY kFeN|L#>fTH@䡪@=^|"[{jPHGW WLms. oWv,j#ꗟ, L+w!&h2UÒr9xG 鄠;k;d!r:@ m=f5ۃĦk$8oPO SW瘝(#`zI-lF P?Ȑd ?HGHR[wӄȹmhQS̎5OE(K3뗘fB֭cUVARQx'HfӮHAm y>13߾JRC3F9 )nGOg:Ws&Ԝ`=J@Lף 3pzDHBk':ntd&]#[S39X7I/Yl"Y_De2c˘I.]r eB2#ZѲ^dpd2IgV[R>7-q~\܋*4b=C5k2AnzWX^kY"gV50jVx?t$'zCהǜ÷W)_ϢKt;H*)1a,ZОV[-oK$oS=Z;loaQc~ z qi5.I lmiŃ5&9@E/Q҂ȆkS &n f^iMX3kμ$ / Eb+o5$ {vgU kÜ"i/eC"/# =ʿV`0_B YEh;Y W:QW`!Ϋt4Fxd܆_aH촯k$M[2̻!ʵzK\:?Dq;tbuҪd/'us]/f1rƎ(vlD~yvwzfԑ+vܡ%$tyImT$\9e >âdI֛C񚓽k2g1sm Tw6I+m8d 4ցSYиh3"<V#f/ܜI|CҫH d]'e3F&kG؋jmgwYY B֏(n#[ +gЙ1 0!V<)R*yCsZ +4")JO{%(0 2X]Hм^ќ֐#7ʰMpTUü`NEDԙp%I*1+%& +lT.}/$<řTScK*lgqi0br$/ORaiDBȥ&bޔJ\{"Յ1*7?fP{<=bio'zaMA >mGbcʗ!\q|+V8b$ȍ9٨?D*Q +vnWʽ05IլN^{DF ):u) 4 +yz;TrXc"+xE&8".4-F4 v>ځ'G1e&RyCm&auOm +ɟ .T6QB8c"Ddbcs 1Xx 'tRPyU32{T󓬮PL+5L2mZk;{l#tbӂ2^aS g,4 +5[_ B,P7kf.D#G#ݕ Pm: 0o1d^9BKׅ*&>:<T,"<{}~g/8:}X[~Ӳx&I`4EͶ){ +ٲ:5_,jEEQb[aP0&6g:X+?dі:bG,IY!$|j8PkqÆofK Hɦ-J3˹e#3F 1hR".Ǻ24K/JdN91.n>N: ?9 M3p0x +]aWcZȺZ )k`;mL-'_П=BA*J!n4ߛAmvݶ/ cXu}y{ǶlYPK,l8Ũ7P",}:vmiv]>ͻǩytyt$wUF"*f!lPbHP5/\*:UB x%}?VCLq +|>f7U)6S|0>^:Mq-50ecD Ai." ,X q x P`HBӀh  +,`0@,@q X`^&(vr~fT7 u{k<u!KЦ5r$qϩQhWzUCqaC@KM+nl!_{c,5LS|&vf?/(bsJ8IPpnVFl;+R;PnBRV50$Kw~Ew۪fpm԰?>Mki>s#GXb{mh6hD<ԖLfRI1cwPXf>[DH$I0TQzA0 2I<6a b!!B 2JFK@go7o#]k!WQ(*RB|Im&},RFJSSIB 6pѹO[6`!\\xf4CC("I,:.F3ZgAZ"( &!5DY.MߣВѩy;h!i#I IbPbdPfoG2ou@+ + ΒPZ_=C0ϳ*&գX%R.3mhDjW40谽2/ B4ER%8 7GˆnQejx!XP}(69[m3vQ7݁ׯh_Y ~lV X]5Pw aueށU.+BЫH!m#N$XLLm܊\][W{u2H%dw nF]r N7pA`[%M2a> 4(PKwu\iH!쎇JlOkO\}0(98ilI("z৷+IMb:2W=EgCq {f[ CGL(rAlJO&8UD^&c`3_Uap4M\2(MKR6L9FOpdFES6T5u0iX: '(}wgڎHüe 6:&el*r~ P^y{J,ݵj"ʜJShC$ .02$0*sA2lk0YLnS!D`=c!r «zyB | 1a2~Z)AmB_XJ*nU٣@4.} % MX{>ꂔh _#h]$#7&Q{SQ"C~WaJΩ:nJLȲ댶m){nwZucmbלj7bӵq aF v_P+ l*p*aD Sװu]RS6pj3WDiYI- `6=ig"mۼ\8 JBULN遡%EoB Ԗ5d&`0GpoZ%~I>mOMj +\Q +`Wz`VYIR/L0 Oi$Ml[!N7擬DnɵshH亝6/"ہ N@8ꔙ4 e+I~"n#JPM&7z,A!U0Ȧnj9Kncta9tGjO">stream 8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn 6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( -l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> -endstream endobj 263 0 obj <>/Font<>/ProcSet[/PDF/Text]>>/Subtype/Form>>stream +l[$6Nn+Z_Nq0]s7hs]`XX$6Ra!<<'!!!*'!!rrmPX()~> +endstream endobj 282 0 obj <>/Font<>/ProcSet[/PDF/Text]>>/Subtype/Form>>stream BT 0 0 0 rg /GS0 gs @@ -2031,23 +2061,27 @@ BT [(S)-3 (a)8 (v)10 (e A)6 (s c)6.1 (ommand)10 (.)]TJ ET -endstream endobj 261 0 obj <> endobj 276 0 obj <> endobj 277 0 obj <> endobj 278 0 obj <>stream -H|TiPYj (FfZPSTXPQ@9 ]EDYdD@A<QNu`˓ql5gm̗}_^$`8͇!rOeԷAqJ}W3i e}C5_l8n8QX2''+V2KN[;<*@!:UDd#QJXZ.Pɔ -BoQ,D%S+2!"W*X\ E3?TH% G^¦J)_"DMFE*C*%n^އ2 fa pþư%16b^$vO`/cyXօiq™E<4\eh8!Z-J&g;t;xǨh8xp6~"ݐOJ%! ݥ [-)o$$J=(@68sb/zt>:&M15Shd`C@?8jq\hYv.]bJ sV0!WΗU_Q] V*( ιwH G"I '{!XTM?"sugegg?B;RϓxN`r_ ش7%rbw:2H̅b̈́C*rLFxijLxCk|P9Rm)G7F+_l8i9R>CL<3pX(@*(VO:N:п9L:)X ϳ!x?$6P'n+6+rMKyދF'P))0t:ե|_CNdIm~˯}COc haBF,j@{ G܉аW8"E:# bW@yʅ -z\/yxQiE ׹ʪqg=u):;G%oޔK>5L:aUEUI4B]RHZzpV C0KL2NcrkژǕ^.6 Z+-L_5ʆF %E5jMȬ7/UGt4 fosaluS&aeT,A?, a[E:6EEt -qNJttB3l&ܷ\{f$&;slpl+"4+B?y%8 2"fD8}ptX2UEUS $B;,Cnh t'sO>.At79Hڡq~s1huM55'WWCZ*W_1- -endstream endobj 275 0 obj <> endobj 279 0 obj <> endobj xref -0 280 +endstream endobj 280 0 obj <> endobj 295 0 obj <> endobj 296 0 obj <> endobj 297 0 obj <>stream +H|TkPYۖLw8àAEW 0 1JpE t,2""(/Ded">שٙx0֭:u=~9߽upLd8>aɒu+|YWPhb] +RhINjh&Z/㪿Sg8.}s{X~Z'bGmƌ#v|2&D%ܫթviѡ1BRFEG rJ譛T%U:J#WɰpF4 +jB)f?Th%F:aS+WD+ (1#,1q:MJ:}Y*Rpaasİ8a_ctl6-V@;G0I[`\kZ1Ml" I8rF~'qlَ -m|먦Ѣk5\i">e(`8 tF>p\ oI$G7h$||#m5Pk~wl -!M2; Bcу^iI㍋bq[F[JHkPFa4>Zٽ3$/҃ :?7KAMw!Xh"aCHyP 臰Q,}}5fDhhxYR7zCg^ q`?ۭ+qE,݆O$a0 u*L/Oѯfp]c}k_162Z6q2o裧*2frhIhuxdzfKnxwx::(F/yyпyyH( ^x+npQ"lFzŢz+ &@z/ yxJRh:>5F+;{&(x'v̓`މW!' +4A0hC,,0Ƃ0sG0C8"Cz#)bW@dp 0ʄ;*$)paI ʂͲ{q ;gB ݙ)~:3,вoc|4]- zEԞU z6ǵM\B[d+4I,fK:1ގ.mFɽVW˖of]acvX`!𑅠 )5Bi@WZ@Rjϙ.W2 9^;-\+.S|<8K5Lڰڲ+K Rj8Z|L(&G0'ہwGw.8f%bBBUe+چ%-jG0nt9?GMd~k0_+d}S`̓ƪRD"w5l + arpWjۀADi)ᰁ $^(3[xF `z2?=h{562_o[&լJ2fc qq5&h% b%~O|EY駺!O:RU-,.9ʕK"X + +SkJ:Yμ.A>Q}}BAܣl]NM]"ЇCQ^ʽpYʡ>|ZqCkk"ok|yvld4u4ݻ5³Y[\X60jݔI7:!|nٲ9> -~ ~VQMQ"BL# 1-?=N~ci*,->͊rwND£aڛe_Iqqۺ>J2WFB_/d 7?F$i@N}qd9Y?} 2cj~-sѯz) +gE]+n> endobj 298 0 obj <> endobj xref +0 299 0000000004 65535 f 0000000016 00000 n 0000000076 00000 n -0000051407 00000 n +0000051403 00000 n 0000000005 00000 f 0000000007 00000 f -0000051458 00000 n +0000051454 00000 n 0000000008 00000 f 0000000009 00000 f 0000000010 00000 f @@ -2282,6 +2316,25 @@ endstream endobj 275 0 obj <]>> +<<91219DA85D4E5240A4F5B4B5BE94347C>]>> startxref -352170 +350909 %%EOF From 7815053d5f83dd4981a4e9781e8cfc57e3ac89cb Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Thu, 14 Dec 2023 13:42:32 +0000 Subject: [PATCH 137/142] Ch13 updates after feedback --- content/13_LeavingIObservable.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/content/13_LeavingIObservable.md b/content/13_LeavingIObservable.md index 59cf35f..8f5e706 100644 --- a/content/13_LeavingIObservable.md +++ b/content/13_LeavingIObservable.md @@ -36,8 +36,7 @@ As you may recall from the [`AsyncSubject` section of chapter 3](./03_Creatin The `ForEachAsync` method supports `await`, but it provides a way to process each element. You could think of it as a hybrid of the `await` behaviour described in the preceding section, and the callback-based `Subscribe`. We can still use `await` to detect completion and errors, but we supply a callback enabling us to handle every item: ```cs -IObservable source = Observable.Interval(TimeSpan.FromSeconds(1)) - .Take(5); +IObservable source = Observable.Interval(TimeSpan.FromSeconds(1)).Take(5); await source.ForEachAsync(i => Console.WriteLine($"received {i} @ {DateTime.Now}")); Console.WriteLine($"finished @ {DateTime.Now}"); ``` @@ -506,6 +505,6 @@ C could not sabotage ``` -While I have used words like 'evil' and 'sabotage' in these examples, it is more often than not an oversight rather than malicious intent that causes problems. The failing falls first on the programmer who designed the leaky class. Designing interfaces is hard, but we should do our best to help consumers of our code fall into [the pit of success](https://learn.microsoft.com/en-gb/archive/blogs/brada/the-pit-of-success) by giving them discoverable and consistent types. Types become more discoverable if we reduce their surface area to expose only the features we intend our consumers to use. In this example we reduced the type's surface area. We did so by choosing a suitable public-facing type for the property, and then preventing access to the underlying type with the `AsObservable` method. +While I have used words like 'evil' and 'sabotage' in these examples, it is [more often than not an oversight rather than malicious intent](https://en.wikipedia.org/wiki/Hanlon%27s_razor) that causes problems. The failing falls first on the programmer who designed the leaky class. Designing interfaces is hard, but we should do our best to help consumers of our code fall into [the pit of success](https://learn.microsoft.com/en-gb/archive/blogs/brada/the-pit-of-success) by giving them discoverable and consistent types. Types become more discoverable if we reduce their surface area to expose only the features we intend our consumers to use. In this example we reduced the type's surface area. We did so by choosing a suitable public-facing type for the property, and then preventing access to the underlying type with the `AsObservable` method. The set of methods we have looked at in this chapter complete the circle started in the [Creating Sequences chapter](03_CreatingObservableSequences.md). We now have the means to enter and leave Rx's world. Take care when opting in and out of the `IObservable`. It's best not to transition back and forth—having a bit of Rx-based processing, then some more conventional code, and then plumbing the results of that back into Rx can quickly make a mess of your code base, and may indicate a design flaw. Typically it is better to keep all of your Rx logic together, so you only need to integrating with the outside world twice: once for input and once for output. From aba172414deeb7ccd48b920d1ce0f2a4b56aeb68 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Thu, 14 Dec 2023 13:53:23 +0000 Subject: [PATCH 138/142] Ch15 updates after feedback --- content/15_PublishingOperators.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/content/15_PublishingOperators.md b/content/15_PublishingOperators.md index 3339b2c..685fe2f 100644 --- a/content/15_PublishingOperators.md +++ b/content/15_PublishingOperators.md @@ -136,22 +136,22 @@ These are exactly equivalent. Because `Subject` forwards all incoming `OnNext` calls to each of its subscribers immediately, and because it doesn't store any previously made calls, the result is a hot source. If you attach some subscribers before calling `Connect`, and then you attached more subscribers after calling `Connect`, those later subscribers will only receive events that occurred after they subscribed. This example demonstrates that: ```cs -IConnectableObservable pticks = Observable +IConnectableObservable publishedTicks = Observable .Interval(TimeSpan.FromSeconds(1)) .Take(4) .Publish(); -pticks.Subscribe(x => Console.WriteLine($"Sub1: {x} ({DateTime.Now})")); -pticks.Subscribe(x => Console.WriteLine($"Sub2: {x} ({DateTime.Now})")); +publishedTicks.Subscribe(x => Console.WriteLine($"Sub1: {x} ({DateTime.Now})")); +publishedTicks.Subscribe(x => Console.WriteLine($"Sub2: {x} ({DateTime.Now})")); -pticks.Connect(); +publishedTicks.Connect(); Thread.Sleep(2500); Console.WriteLine(); Console.WriteLine("Adding more subscribers"); Console.WriteLine(); -pticks.Subscribe(x => Console.WriteLine($"Sub3: {x} ({DateTime.Now})")); -pticks.Subscribe(x => Console.WriteLine($"Sub4: {x} ({DateTime.Now})")); +publishedTicks.Subscribe(x => Console.WriteLine($"Sub3: {x} ({DateTime.Now})")); +publishedTicks.Subscribe(x => Console.WriteLine($"Sub4: {x} ({DateTime.Now})")); ``` The following output shows that we only see output for the Sub3 and Sub4 subscriptions for the final 2 events: @@ -291,7 +291,9 @@ We saw in the preceding section that `Multicast` (and also its various wrappers) * returning an `IConnectableObservable` to allow top-level control of when subscription to the underlying source occurs * returning an ordinary `IObservable`, enabling us to avoid unnecessary multiple subscriptions to the source when using a query that uses the source in multiple places (e.g., `s.Zip(s.Take(1))`), but still making one `Subscribe` call to the underlying source for each top-level `Subscribe` -`RefCount` offers a slightly different model. It enables subscription to the underlying source to be triggered by an ordinary `Subscribe`, but can still make just a single call to the underlying source. To be able to observe this, I'm going to use a modified version of the source that reports when subscription occurs: +`RefCount` offers a slightly different model. It enables subscription to the underlying source to be triggered by an ordinary `Subscribe`, but can still make just a single call to the underlying source. This might be useful in the AIS example used throughout this book. You might want to attach multiple subscribers to an observable source that reports the location messages broadcast by ships and other vessels, but you would normally want a library presenting an Rx-based API for this to connect only once to any underlying service providing those messages. And you would most likely want it to connect only when at least one subscriber is listening. `RefCount` would be ideal for this because it enables a single source to support multiple subscribers, and for the underlying source to know when we move between the "no subscribers" and "at least one subscriber" states. + +To be able to observe how `RefCount` operators, I'm going to use a modified version of the source that reports when subscription occurs: ```cs IObservable src = Observable.Create(async obs => @@ -403,7 +405,7 @@ This time, the `Create` callback ran twice. That's because the number of active The `AutoConnect` operator behaves in much the same way as `RefCount`, in that it calls `Connect` on its underlying `IConnectableObservable` when the first subscriber subscribers. The difference is that it doesn't attempt to detect when the number of active subscribers has dropped to zero: once it connects, it remains connected indefinitely, even if it has no subscribers. -Although `AutoConnect` can be convenient, you need to be a little careful, because it can cause leaks: it will never disconnect automatically. It is still possible to tear down the connection it creates: `AutoConnect` accepts an optional argument of type `Action`. It invokes this when it first connects to the source, passing you the `IDisposable` returned by the source's `Connect` method. You can shut it down by calling `Dispose`. +Although `AutoConnect` can be convenient, you need to be a little careful, because it can cause leaks: it will never disconnect automatically. It is still possible to tear down the connection it creates: `AutoConnect` accepts an optional argument of type `Action`. It invokes this when it first connects to the source, passing you the `IDisposable` returned by the source's `Connect` method. You can shut it down by calling `Dispose`. The operators in this chapter can be useful whenever you have a source that is not well suited do dealing with multiple subscribers. It provides various ways to attach multiple subscribers while only triggering a single `Subscribe` to the underlying source. \ No newline at end of file From ca9a0ac29a24dd6b95e481106cb4737b3f5560cf Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Thu, 14 Dec 2023 13:57:09 +0000 Subject: [PATCH 139/142] Ch16 fix typo --- content/16_TestingRx.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/16_TestingRx.md b/content/16_TestingRx.md index 168c7eb..3dd2c89 100644 --- a/content/16_TestingRx.md +++ b/content/16_TestingRx.md @@ -677,7 +677,7 @@ OnCompleted() @ 40000000 Note that the output is almost the same. Scheduling of the creation and subscription do not affect the Hot Observable, therefore the notifications happen 1 tick earlier than their Cold counterparts. -We can see the major difference a Hot Observable bears by changing the virtual create time and virtual subscribe time to be different values. With a Cold Observable, the virtual create time has no real impact, as subscription is what initiates any action. This means we can not miss any early message on a Cold Observable. For Hot Observables, we can miss messages if we subscribe too late. Here, we create the Hot Observable immediately, but only subscribe to it after 1 second (thus missing the first message). +We can see the major difference a Hot Observable bears by changing the virtual create time and virtual subscribe time to be different values. With a Cold Observable, the virtual create time has no real impact, as subscription is what initiates any action. This means we cannot miss any early message on a Cold Observable. For Hot Observables, we can miss messages if we subscribe too late. Here, we create the Hot Observable immediately, but only subscribe to it after 1 second (thus missing the first message). ```csharp var scheduler = new TestScheduler(); From 62dab17c0f374e2f005d53dfabc2d3436a91039a Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Thu, 14 Dec 2023 16:28:04 +0000 Subject: [PATCH 140/142] Ch02 Split example across multiple lines to help ebook rendering --- content/02_KeyTypes.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/content/02_KeyTypes.md b/content/02_KeyTypes.md index 0ebaec7..c59136f 100644 --- a/content/02_KeyTypes.md +++ b/content/02_KeyTypes.md @@ -207,7 +207,11 @@ With this measure of recent activity in hand, we can spot the end of bursts of a But how does `outstanding` itself work? The basic approach here is that every time `source` produces a value, we actually create a brand new `IObservable`, which produces exactly two values. It immediately produces the value 1, and then after the specified timespan (2 seconds in these examples) it produces the value -1. That's what's going in in this clause of the query expression: ```cs -from delta in Observable.Return(1, scheduler).Concat(Observable.Return(-1, scheduler).Delay(minimumInactivityPeriod, scheduler)) +from delta in Observable + .Return(1, scheduler) + .Concat(Observable + .Return(-1, scheduler) + .Delay(minimumInactivityPeriod, scheduler)) ``` I said Rx is all about composition, and that's certainly the case here. We are using the very simple `Return` operator to create an `IObservable` that immediately produces just a single value and then terminates. This code calls that twice, once to produce the value `1` and again to produce the value `-1`. It uses the `Delay` operator so that instead of getting that `-1` value immediately, we get an observable that waits for the specified time period (2 seconds in these examples, but whatever `minimumInactivityPeriod` is in general) before producing the value. And then we use `Concat` to stitch those two together into a single `IObservable` that produces the value `1`, and then two seconds later produces the value `-1`. From 0fc7b20420b1ceaa08885648e11812daa090c3ec Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Thu, 14 Dec 2023 16:30:31 +0000 Subject: [PATCH 141/142] Try to clarify use of `@this` again --- content/11_SchedulingAndThreading.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/11_SchedulingAndThreading.md b/content/11_SchedulingAndThreading.md index e7031f1..361be65 100644 --- a/content/11_SchedulingAndThreading.md +++ b/content/11_SchedulingAndThreading.md @@ -822,7 +822,7 @@ Couldn't the Rx library have used a more straightforward approach? We could choo var next = scheduler.Schedule(null, (innerScheduler, _) => LoopRec(innerScheduler)); ``` -This avoids the weirdness of passing our own `this` argument: now we're just invoking the `LoopRec` instance member in the ordinary way: we're implicitly using the `this` reference that is in scope. So this will create a delegate the captures that implicit `this` reference. This works, but it's inefficient: it will force the compiler to generate code that allocates a couple of objects. It creates one object that has a field holding onto the captured `this`, and then it needs to create a distinct delegate instance that has a reference to that capture object. +This avoids the previous example's weirdness of passing our own `this` argument: now we're just invoking the `LoopRec` instance member in the ordinary way: we're implicitly using the `this` reference that is in scope. So this will create a delegate the captures that implicit `this` reference. This works, but it's inefficient: it will force the compiler to generate code that allocates a couple of objects. It creates one object that has a field holding onto the captured `this`, and then it needs to create a distinct delegate instance that has a reference to that capture object. The more complex code that is actually in the `Range` implementation avoids this. It disables capture by annotating the lambda with `static`. That prevents code from relying on the implicit `this` reference. So it has had to arrange for the `this` reference to be available to the callback. And that's exactly the sort of thing the `state` argument is there for. It provides a way to pass in some per-work-item state so that you can avoid the overhead of capturing variables on each iteration. From 37f206ab97a166350e1741a75cbc4e4c736f0562 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Thu, 14 Dec 2023 16:37:01 +0000 Subject: [PATCH 142/142] Ch15 remove word degenerate because apparently it's not as widely understood as I thought --- content/15_PublishingOperators.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/15_PublishingOperators.md b/content/15_PublishingOperators.md index 685fe2f..bbff8f0 100644 --- a/content/15_PublishingOperators.md +++ b/content/15_PublishingOperators.md @@ -4,7 +4,7 @@ title: Publishing operators # Publishing operators -Hot sources need to be able to deliver events to multiple subscribers. While we can implement the subscriber tracking ourselves, it can be easier to write a degenerate source that works only for a single subscriber, and then to use one of Rx's _multicast_ operators to publish it as a multi-subscriber hot source. The example in ["Representing Filesystem Events in Rx"](03_CreatingObservableSequences.md#representing-filesystem-events-in-rx) used this trick, but as you'll see in this chapter there are a few variations on the theme. +Hot sources need to be able to deliver events to multiple subscribers. While we can implement the subscriber tracking ourselves, it can be easier to write an oversimplified source that works only for a single subscriber. And although that won't be a full implementation of `IObservable`, that won't matter if we then use one of Rx's _multicast_ operators to publish it as a multi-subscriber hot source. The example in ["Representing Filesystem Events in Rx"](03_CreatingObservableSequences.md#representing-filesystem-events-in-rx) used this trick, but as you'll see in this chapter there are a few variations on the theme. ## Multicast

    -
    Disposable.Empty
    -
    - This static property exposes an implementation of IDisposable that performs no action when the Dispose method is invoked. This can be useful when you are obliged to supply an `IDisposable` (which can happen if you use Observable.Create) but don't need to do anything upon disposal.
    -
    Disposable.Create(Action)
    -
    - This static method exposes an implementation of IDisposable that invokes the method supplied when the Dispose method is invoked. As the implementation follows the guidance to be idempotent, the action will only be called on the first time the Dispose method is invoked.
    -
    BooleanDisposable
    -
    - This class implements IDisposable.Dispose method and also defines a read-only property IsDisposed. IsDisposed is false when the class is constructed, and is set to true when the Dispose method is invoked. -
    -
    CancellationDisposable
    -
    - The CancellationDisposable class offers an integration point between the .NET cancellation paradigm (CancellationTokenSource) and the resource management paradigm (IDisposable). You can create an instance of the CancellationDisposable class by providing a CancellationTokenSource to the constructor, or by having the parameterless constructor create one for you. Calling Dispose will invoke the Cancel method on the CancellationTokenSource. There are two properties (Token and IsDisposed) that CancellationDisposable exposes; they are wrappers for the CancellationTokenSource properties, respectively Token and IsCancellationRequested. -
    -
    CompositeDisposable
    -
    - The CompositeDisposable type allows you to treat many disposable resources as one. You can create an instance of CompositeDisposable by passing in a params array of disposable resources. Calling Dispose on the CompositeDisposable will call dispose on each of these resources in the order they were provided. Additionally, the CompositeDisposable class implements ICollection<IDisposable>; this allows you to add and remove resources from the collection. After the CompositeDisposable has been disposed of, any further resources that are added to this collection will be disposed of instantly. Any item that is removed from the collection is also disposed of, regardless of whether the collection itself has been disposed of. This includes usage of both the Remove and Clear methods. -
    -
    ContextDisposable
    -
    - ContextDisposable allows you to enforce that disposal of a resource is performed on a given SynchronizationContext. The constructor requires both a SynchronizationContext and an IDisposable resource. When the Dispose method is invoked on the ContextDisposable, the provided resource will be disposed of on the specified context. -
    -
    MultipleAssignmentDisposable
    -
    - The MultipleAssignmentDisposable exposes a read-only IsDisposed property and a read/write property Disposable. Invoking the Dispose method on the MultipleAssignmentDisposable will dispose of the current value held by the Disposable property. It will then set that value to null. As long as the MultipleAssignmentDisposable has not been disposed of, you are able to set the Disposable property to IDisposable values as you would expect. Once the MultipleAssignmentDisposable has been disposed, attempting to set the Disposable property will cause the value to be instantly disposed of; meanwhile, Disposable will remain null. -
    -
    RefCountDisposable
    -
    - The RefCountDisposable offers the ability to prevent the disposal of an underlying resource until all dependent resources have been disposed. You need an underlying IDisposable value to construct a RefCountDisposable. You can then call the GetDisposable method on the RefCountDisposable instance to retrieve a dependent resource. Each time a call to GetDisposable is made, an internal counter is incremented. Each time one of the dependent disposables from GetDisposable is disposed, the counter is decremented. Only if the counter reaches zero will the underlying be disposed of. This allows you to call Dispose on the RefCountDisposable itself before or after the count is zero. -
    -
    ScheduledDisposable
    -
    - In a similar fashion to ContextDisposable, the ScheduledDisposable type allows you to specify a scheduler, onto which the underlying resource will be disposed. You need to pass both the instance of IScheduler and instance of IDisposable to the constructor. When the ScheduledDisposable instance is disposed of, the disposal of the underlying resource will be executed through the provided scheduler. -
    -
    SerialDisposable
    -
    - SerialDisposable is very similar to MultipleAssignmentDisposable, as they both expose a read/write Disposable property. The contrast between them is that whenever the Disposable property is set on a SerialDisposable, the previous value is disposed of. Like the MultipleAssignmentDisposable, once the SerialDisposable has been disposed of, the Disposable property will be set to null and any further attempts to set it will have the value disposed of. The value will remain as null. -
    -
    SingleAssignmentDisposable
    -
    - The SingleAssignmentDisposable class also exposes IsDisposed and Disposable properties. Like MultipleAssignmentDisposable and SerialDisposable, the Disposable value will be set to null when the SingleAssignmentDisposable is disposed of. The difference in implementation here is that the SingleAssignmentDisposable will throw an InvalidOperationException if there is an attempt to set the Disposable property while the value is not null and the SingleAssignmentDisposable has not been disposed of. -
    -
  • .y:&4ݷ|&[W,cԮ-ܷ[1 w εYM]DdnȨL?h˼Ʋ +}9d3|.xc.őHE Gѻ$}1ZK:I7PNB"Ig5e,͗$;"#R&PfπJMgET6^g]?p &v0 J Ih^3h, < c>UŇԝo.RϜ1+}~;4WkU+8 Ex/ _239.{4y"o0!缊 Ԯs`g)o;-ſWL5@zl)S^B WALYԝB9eWR)ġ2v?D%ɪ$B&Z\YI:ψHa%[фw~ xvD9xnBE[9s?8S;o,K]OU8_G@S)xΩe$+M$Ko1t23^ "T1˓͝ TŽ3<5-b'tKȪB&sဃߛ PL;~*s,[a _} +I]u$` (B= 0>E6m"m + F[`lwz[?A jIΛXXaa2XΓT(o䦢۩:|  HZr;V?xꥁ 'Rh;!.+$W `<>P p(k=5_M u[hqjh|t%_+z_>MZhXܺ<h" rujs'\0)¤:I!&C%5,1ɿLG4{sdܶ7b)p%6Uad{g$>_C)qc\Eo|2p@)34AȅqS0m W `*%Zs K{$*#ӷȾnEIq~p;)-F5"Ȓ*\@?ČY~υ/&!P%5ąF"Wdv.*qlsAkSē}GJAL P'1S?/m?o?YOSK(d +m.JxϻO:Pf~h(rܫ ]ޮ1DZ|I+~i[?ӵQb +g|j?~+33Hf9  +j+P_4ib_ԛ_=0viՍq ]HɎ?[s !wru8Ӯ/ܚZۈkYI vRo,pbα3{ln  ]ċOe`bmoϼTWqPB '.1(itv2_b'6FMxѭ2ȖHHcs8/ LX/Feqxd%~y=Y4ޮYGTʿ{j{_uUX%E27^ܱA'_f T0>3ԋt, eu##Kx&b3Kj|HTI,S8Q!=jlJ@ :Ѱy;5`X=&&K&({wgQ4.bpx}{y%u- +Nm"shv/ڋ\u}S٢QB~ {[YV"lU#|\1v)&R*Q*W-@}c^~~9Mn=Qǡ aO 2zYH瘔],MJwوƤbk2g[2N`JB{$-_ڲ-hccRKTߖnռM lkLdͣ@T%ɄĄ+iR ]|{1@iiG^C'd𹷦<gy7|~=N"I}QVz@ r(^O F-ζ%&`MGF%lg&DPlTjapg7c*;,ou/QЉ=VDhUIF%O0'^)٠DbYx0ܦQ5@@ 9%6P +!OzKI-\gztrx ͟t'/iƊڌ=n#J. R80z+Zch qȽb]_^,)p`]Ųʶ dH&&l+n:l>`xi%S.IJMփdqNm/Ks|RÔr*7XNVV"n_\ 8Եzئ=b?\t +m65NS/#FQŨ.n_dG՟>ie8뢾 Nb%V{[P/בkr۽J6=9=R=X..\y>7o>My[=Ld.QzƧsD~52WMv:đJ0\QΜj%"(Q2]a{#9\im^/ui jHv|V4=lhbikp\'㎵񘪌6/eCFN4k~4,' I! !fp2|c'=y$`u">|*ZFB%V])܂b琺Ch((PCJJa _kn s) 1Bc >tuK +b;A(9DVE% uO\:B3TTwQW6xM5".S`%i2`[d%cX·櫨r"ıF,KT <ʑDlBha{E?K:a4K# d$̏#AzP 2N-{Q)ӌD\Ҧ g:.u/1L +;q9 SHY%9SP4T^x2$KSknrCaw,3țV[qب +b$?`ĔPf ?άw z3׋J'\ғSr]kS 8>v`~j*% -%ԡ<%X)s'GAP40lN^b@3Fj6l7l8-״V+lvu26bL輙@+S]%3삉`t͇iޖ>nd#x/&dž%^;QRv(!`.óoUfROl5eb\Jz ATEcCƼOXҪM7IHtLtIQ%&Q=1 U6=ﮭbMڔ|ZuIUVa:PDKu +nYcgjylŧKh[׷g:)F SNTz׷JJuIdw}m/s:Q_ۭIe달i/7p}V:ח?1[H ^P &K}{h Z{iK|i~n?zf`2k\xtJp}qJ1 WJp׋V8@f~(1LΎ=JaXvyg#/]W%Q"u#D.5BbQX:%0~u! 2,F3|hY3 ~\4>$chcS|ԈtY7grut@Nx%Y$a@iG]>gwFYGQ<@4M7BEl5*ᇿM +8,i LJX*z,CDew/mX]R]-Yo^*Q@i4D?y.FaAns_zF|rC:J,&Y¬"g.pn% p#TLh;E,zyYYܥDd' N +$^1=Ilα҈,Y]TXE8I4v_|G "Ȝ܋+C1L%0L>}G-/Hnn:mw&\ +~t()MOGrb>y=Y`uqDvkoBrǛSq1_j]m16SdDWЎ޴O>@ٹ0o?V` ,jlVym<jF<$8,i;b|g9'4Cr:Ar0>SѤ״lÍɈE_N `,SpfXY I=2E7{0!4y1+:3/,wݨ}R?'!a$e7B0 +!@m +;3ƞ!2Qӌ\PymS\ց?#֓{nzsHJmBA-EBXx.56+^'*&Ӽ1%k_{jiN)W j{+5~~Ns!@΃ 2= DCQ,LZ["[렣J&̫Xqzj98ӗ; VOʚ9IXQ5YМ)ƛQT<K蚇 IZWi9'.Cڭzzǥ0RMZ\Lfj00ng_nvZXOW |C7UQ1?q?꩹chusuO$bOc_nIgrt=})%5aw r *@h aI@$&@$8(H(@CR)mEL*o*5ݑ; DNOtwq/.@ +K\.ܹ!IZ͘$b oY{d`zhG87Jбk"o6, ~w`%kM۹8w G!8G<؃%-hFTjR9) [ +m&\urK hD.x :XB1=x3 Wc20\%cNR"Ѭ##sIjrW;|t/"-/r zObjHu_O1:kc^>?ULQ3ūt^{mr_mZu^ _Wxm5FElw$ $I =H)CQ!eg! af""z7 B6,~:?Migt TdC[̗sbC/W)x&C= #ꀳmm%Vҭ6H !q-,wA-[F=ru zBoΈĀ9mN$G2*͋KxL`eogvR麏-F$+b*e>stream +8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> +endstream endobj 48 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]>>/Subtype/Form>>stream +BT +/CS0 cs 0 0 0 scn +/GS0 gs +/T1_0 1 Tf +0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 12 0 0 -12 -103.0967 -61.2783 Tm +[(T)7 (his is an A)11.9 (dobe\256 I)-10 (llustr)5.1 (a)4 (t)5.9 (or\256 F)25.9 (ile tha)4 (t w)4 (as)]TJ +0 -1.2 Td +[(sa)8 (v)10 (ed without PDF C)11 (on)4 (t)6 (en)4 (t)3 (.)]TJ +0 -1.2 Td +[(T)71 (o P)5 (lac)6 (e or open this \037le in other)]TJ +0 -1.2 Td +[(applica)4 (tions)10.9 (, it should be r)10 (e)-28 (-sa)8 (v)10 (ed fr)10 (om)]TJ +0 -1.2 Td +[(A)12 (dobe I)-10.1 (llustr)5 (a)4 (t)6 (or with the ")3 (C)3.1 (r)9.9 (ea)4 (t)6 (e PDF)]TJ +0 -1.2 Td +[(C)11 (ompa)4 (tible F)26 (ile" option tur)-4 (ned on. )41 (T)7 (his)]TJ +0 -1.2 Td +[(option is in the I)-10 (llustr)5 (a)4 (t)6 (or Na)4 (tiv)10 (e F)31 (or)-4 (ma)4.1 (t)]TJ +0 -1.2 Td +[(Options dialog bo)14 (x, which appears when)]TJ +0 -1.2 Td +[(sa)8 (ving an A)12 (dobe I)-10 (llustr)5 (a)4 (t)6.1 (or \037le using the)]TJ +0 -1.2 Td +[(S)-3 (a)8 (v)10 (e A)6 (s c)6.1 (ommand)10 (.)]TJ +ET + +endstream endobj 46 0 obj <> endobj 60 0 obj <> endobj 61 0 obj <> endobj 62 0 obj <>stream +H|TiTY +S)ZSUTFeuqQWDq!HXLBDQ<:ި("ↈ -i>=ݷѧB_s9{w޹8&p>d߲oVD*k5q߮WE$(4$EWh4e}9@ _߱=ri\p?BϞ;j=Fm֬YCXT;r8M|FS)]cbZFUi?GjHZ+dDp_RuRSY3?TX%F:aS+W*g +(q,q :MJ:7pÞx|\ځa0d9bsư1l cKlU",ba sVakX>Vmx `+‡L<- S F2N &9i;6ȶvn1cNJ2F\S 6v$,tF ޒHn` FJFm>,DBLMCֈBǯ1_#I\^Ld!w(>ƃ/7)K km) 8蕐&`7X#}tiYZkGDI|%G~Rv| "}/5ݍba/#%~EvZ\N?Mb'.dk&+o6NW{752nd_`.,'pUr"WӐ{:VNsB#3XjnSǺ1AYPI@ +<}-%zfeV,[XhDb˰\TIJ sfMʮI(މ]~")XmwUooIxlM>L + _Xa<`  Qw/4Lз>HX0w$QeBwPf Rh4y$,ə\Eeѵٽ߳UŞ̲ @_U|h us5I䨔nZ7~;󴶪+g~kUXyje󛖺ɧؒ.q_}ҾlkuUDl-nk(Y*zCP ?aG/ImQzh;R?!r $Cvħ*꘏'s)&ɤ }h.eHj~ L)iذ}6Uw~0qCcJtBnH 0Aڐ8x?,9hLpcO5PAe嘏n]Ǽk5'm@ĆE37״$'dԆNī mDfYOvޘ|+nhnbTh0zAij1v)kՃPf6!41I.&W.f3Cί]7KYPiL;pEIG}iɬoor-?zm 岌2ÂVpjū_z:"٠8&{" ΀n䕳V(1qs5qtы}tB||xO{JəClNhR&l(.LiX\[}SBBp|Q HDZ:txD^o !wEs*{TUWʙHDm&8MX!u;LK{^m=W_sTH/+Y6Đ AtD^<\f'g7Ȩ&y=‹=0Z ԑGrkun3*PE0ʨ.6ސOckfwaPw}gXoӁOtIH?{:mSS%ҹr}IKbajXy!pw ~>q +7ek.63*rJ?4I + +s+/42]*j ,p6$ &>3[xLV}LSWMӽ[P,<վυe3( sMtk‡-S0m)) !8)9 ʹ:srcߛsw=ffm)ҲӬ,qxD$<ʈl;[׈-g+8?(x.n Ki-uL]pCcDԷG'".3F=ibP}vPu(fsF24{bqR~ q (SSeq{D|3uƜw,>cr QwF9>nol|r.#V[\_o`{KgGtEMe%e^хESNO|eB"Uuoh9Q<|P˼‿Ya +INb(I{y`.Lt~za{^2R _ǔZ܉CMՌ2 ̔Q'R*-7#]m04t 9jg6="k<.+= =Uci5 _J** ^? |/8>b +suz vb=ʔ[/QY37Nd亏 י~@;T7*Fv~j=o jG`zfB7F$AVl?@[_:;*OV8¿Lai`TUM3TH \ <sp=?GPF[X juRZƠtjINx5yZŭǴCDeŬ!Qv l[mDˠo%@!HH36ޕ>|%Kciņ;{wl/M܈S `X`͋uwC=:M88(Fkɪ"X.qw5w(K$[׬\_ Uki_x1/ +endstream endobj 59 0 obj <> endobj 58 0 obj [/ICCBased 63 0 R] endobj 63 0 obj <>stream +HyTSwoɞc [5laQIBHADED2mtFOE.c}08׎8GNg9w߽'0 ֠Jb  + 2y.-;!KZ ^i"L0- @8(r;q7Ly&Qq4j|9 +V)gB0iW8#8wթ8_٥ʨQQj@&A)/g>'Kt;\ ӥ$պFZUn(4T%)뫔0C&Zi8bxEB;Pӓ̹A om?W= +x-[0}y)7ta>jT7@tܛ`q2ʀ&6ZLĄ?_yxg)˔zçLU*uSkSeO4?׸c. R ߁-25 S>ӣVd`rn~Y&+`;A4 A9=-tl`;~p Gp| [`L`< "A YA+Cb(R,*T2B- +ꇆnQt}MA0alSx k&^>0|>_',G!"F$H:R!zFQd?r 9\A&G rQ hE]a4zBgE#H *B=0HIpp0MxJ$D1D, VĭKĻYdE"EI2EBGt4MzNr!YK ?%_&#(0J:EAiQ(()ӔWT6U@P+!~mD eԴ!hӦh/']B/ҏӿ?a0nhF!X8܌kc&5S6lIa2cKMA!E#ƒdV(kel }}Cq9 +N')].uJr + wG xR^[oƜchg`>b$*~ :Eb~,m,-ݖ,Y¬*6X[ݱF=3뭷Y~dó ti zf6~`{v.Ng#{}}jc1X6fm;'_9 r:8q:˜O:ϸ8uJqnv=MmR 4 +n3ܣkGݯz=[==<=GTB(/S,]6*-W:#7*e^YDY}UjAyT`#D="b{ų+ʯ:!kJ4Gmt}uC%K7YVfFY .=b?SƕƩȺy چ k5%4m7lqlioZlG+Zz͹mzy]?uuw|"űNwW&e֥ﺱ*|j5kyݭǯg^ykEklD_p߶7Dmo꿻1ml{Mś nLl<9O[$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! +zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Km +endstream endobj 64 0 obj <> endobj xref +0 65 +0000000004 65535 f +0000000016 00000 n +0000000076 00000 n +0000054772 00000 n +0000000005 00000 f +0000000007 00000 f +0000054823 00000 n +0000000008 00000 f +0000000009 00000 f +0000000010 00000 f +0000000011 00000 f +0000000012 00000 f +0000000013 00000 f +0000000014 00000 f +0000000015 00000 f +0000000016 00000 f +0000000017 00000 f +0000000018 00000 f +0000000019 00000 f +0000000020 00000 f +0000000021 00000 f +0000000022 00000 f +0000000023 00000 f +0000000024 00000 f +0000000025 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000238917 00000 n +0000055177 00000 n +0000237732 00000 n +0000055386 00000 n +0000055583 00000 n +0000237170 00000 n +0000055657 00000 n +0000055853 00000 n +0000057553 00000 n +0000123142 00000 n +0000188731 00000 n +0000237218 00000 n +0000243195 00000 n +0000243082 00000 n +0000239432 00000 n +0000239516 00000 n +0000239898 00000 n +0000243230 00000 n +0000245879 00000 n +trailer +<<08AC15143AB89046B7CA3CDAE1D95F81>]>> +startxref +246099 +%%EOF diff --git a/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Amb-Marbles.svg b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Amb-Marbles.svg new file mode 100644 index 0000000..331e518 --- /dev/null +++ b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Amb-Marbles.svg @@ -0,0 +1,107 @@ + + + + + + + + + 2 + + + + 3 + + + + 4 + + + + s1: + s2: + s3: + + + + + 1 + + + + + 2 + + + + 3 + + + + 4 + + + + + + 1 + + + + 8 + + + + 7 + + + + 6 + + + + + + + 99 + + + + 88 + + + r: + \ No newline at end of file diff --git a/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Concat-Hot-Marbles.svg b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Concat-Hot-Marbles.svg new file mode 100644 index 0000000..ccc65d0 --- /dev/null +++ b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Concat-Hot-Marbles.svg @@ -0,0 +1,103 @@ + + + + + + + + + s1: + s2: + c: + + + + + 0 + + + + 1 + + + + 2 + + + + 1 + + + + 2 + + + + 0 + + + + + + + D + + + + E + + + + A + + + + B + + + + C + + + + D + + + + E + + + + C + + + \ No newline at end of file diff --git a/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Concat-Marbles.svg b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Concat-Marbles.svg new file mode 100644 index 0000000..739beb7 --- /dev/null +++ b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Concat-Marbles.svg @@ -0,0 +1,111 @@ + + + + + + + + + s1: + s2: + c: + + + + + 0 + + + + 1 + + + + 2 + + + + 0 + + + + 1 + + + + 2 + + + + + + + 8 + + + + 9 + + + + 5 + + + + 6 + + + + 7 + + + + 8 + + + + 5 + + + + 6 + + + + 7 + + + + + 9 + + \ No newline at end of file diff --git a/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Merge-Marbles.svg b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Merge-Marbles.svg new file mode 100644 index 0000000..07a6b23 --- /dev/null +++ b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Merge-Marbles.svg @@ -0,0 +1,95 @@ + + + + + + + + + s1: + s2: + c: + + + + + 1 + + + + 1 + + + + 1 + + + + 1 + + + + 1 + + + + 1 + + + + + + + 2 + + + + 2 + + + + 2 + + + + 2 + + + + 2 + + + + 2 + + + \ No newline at end of file diff --git a/content/GraphicsIntro/Ch09-CombiningSequences-Marbles.ai b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles.ai new file mode 100644 index 0000000..b652c91 --- /dev/null +++ b/content/GraphicsIntro/Ch09-CombiningSequences-Marbles.ai @@ -0,0 +1,1757 @@ +%PDF-1.6 % +1 0 obj <> endobj 2 0 obj <>stream + + + + + application/vnd.adobe.illustrator + + + Ch09-CombiningSequences-Marbles + + + Adobe Illustrator 28.0 (Windows) + 2023-11-02T15:23:12Z + 2023-11-02T15:46:47Z + 2023-11-02T15:46:47Z + + + + 132 + 256 + JPEG + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAACEAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A7Npn55eTtSvXt7YSKiRT SM8r28bc4LxLNoxG0vKvKQOCaAr0qagKp95w1bUoJrHS9Om+qz3olmmvAqu8cFuYw4jVwyeo7zIA WUgDltWmV5J8IcHX6o4YWOZYFoPnOMDWNV0aa9YaVO7apa3r+ql6sCmNpIyzyshKwlYyCm6jkvHK hOQO7rcWtzY5xEzxCX2Jr5l84O9lqOuS3VwPL9g8iQW+nPxkmWGT0nnaWNkc1cNxCyBeG5qekp5D dBs1mtyHL4eM15ooeb9Q0AzWd1cC/NxAW0b6yyrJ9ZEscC28kgo0iu1whDULAK5Jbahx5LBts0Pa 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 UOxV2KuxV//Z + + + + default + uuid:65E6390686CF11DBA6E2D887CEACB407 + xmp.did:c765f3ac-1881-344b-850f-cb39f546655d + uuid:439a6829-6f02-47b7-9f79-bfbedd784fb5 + + uuid:152d443f-61e9-4330-bb51-f38a8e360e29 + xmp.did:f18479d1-4e7f-4340-b533-076a69bfb2ae + uuid:65E6390686CF11DBA6E2D887CEACB407 + default + + + + + saved + xmp.iid:14709273-42b8-4844-95f8-dd7dcca7f08e + 2023-05-24T06:57:15+01:00 + Adobe Illustrator 27.5 (Windows) + / + + + saved + xmp.iid:c765f3ac-1881-344b-850f-cb39f546655d + 2023-11-02T15:23:12Z + Adobe Illustrator 28.0 (Windows) + / + + + + Web + Document + Adobe Illustrator + 1 + False + False + + 281.211009 + 136.449541 + Pixels + + + + + Consolas + Consolas + Regular + Open Type + Version 7.00 + False + consola.ttf + + + Tahoma + Tahoma + Regular + Open Type + Version 7.01 + False + tahoma.ttf + + + + + + Cyan + Magenta + Yellow + Black + + + + + + Default Swatch Group + 0 + + + + White + RGB + PROCESS + 255 + 255 + 255 + + + Black + RGB + PROCESS + 0 + 0 + 0 + + + code keyword + PROCESS + 100.000000 + RGB + 44 + 50 + 200 + + + RGB Red + RGB + PROCESS + 255 + 0 + 0 + + + RGB Yellow + RGB + PROCESS + 255 + 255 + 0 + + + RGB Green + RGB + PROCESS + 0 + 255 + 0 + + + RGB Cyan + RGB + PROCESS + 0 + 255 + 255 + + + RGB Blue + RGB + PROCESS + 0 + 0 + 255 + + + RGB Magenta + RGB + PROCESS + 255 + 0 + 255 + + + R=193 G=39 B=45 + RGB + PROCESS + 193 + 39 + 45 + + + R=237 G=28 B=36 + RGB + PROCESS + 237 + 28 + 36 + + + R=241 G=90 B=36 + RGB + PROCESS + 241 + 90 + 36 + + + R=247 G=147 B=30 + RGB + PROCESS + 247 + 147 + 30 + + + R=251 G=176 B=59 + RGB + PROCESS + 251 + 176 + 59 + + + R=252 G=238 B=33 + RGB + PROCESS + 252 + 238 + 33 + + + R=217 G=224 B=33 + RGB + PROCESS + 217 + 224 + 33 + + + R=140 G=198 B=63 + RGB + PROCESS + 140 + 198 + 63 + + + R=57 G=181 B=74 + RGB + PROCESS + 57 + 181 + 74 + + + R=0 G=146 B=69 + RGB + PROCESS + 0 + 146 + 69 + + + R=0 G=104 B=55 + RGB + PROCESS + 0 + 104 + 55 + + + R=34 G=181 B=115 + RGB + PROCESS + 34 + 181 + 115 + + + R=0 G=169 B=157 + RGB + PROCESS + 0 + 169 + 157 + + + R=41 G=171 B=226 + RGB + PROCESS + 41 + 171 + 226 + + + R=0 G=113 B=188 + RGB + PROCESS + 0 + 113 + 188 + + + R=46 G=49 B=146 + RGB + PROCESS + 46 + 49 + 146 + + + R=27 G=20 B=100 + RGB + PROCESS + 27 + 20 + 100 + + + R=102 G=45 B=145 + RGB + PROCESS + 102 + 45 + 145 + + + R=147 G=39 B=143 + RGB + PROCESS + 147 + 39 + 143 + + + R=158 G=0 B=93 + RGB + PROCESS + 158 + 0 + 93 + + + R=212 G=20 B=90 + RGB + PROCESS + 212 + 20 + 90 + + + R=237 G=30 B=121 + RGB + PROCESS + 237 + 30 + 121 + + + R=199 G=178 B=153 + RGB + PROCESS + 199 + 178 + 153 + + + R=153 G=134 B=117 + RGB + PROCESS + 153 + 134 + 117 + + + R=115 G=99 B=87 + RGB + PROCESS + 115 + 99 + 87 + + + R=83 G=71 B=65 + RGB + PROCESS + 83 + 71 + 65 + + + R=198 G=156 B=109 + RGB + PROCESS + 198 + 156 + 109 + + + R=166 G=124 B=82 + RGB + PROCESS + 166 + 124 + 82 + + + R=140 G=98 B=57 + RGB + PROCESS + 140 + 98 + 57 + + + R=117 G=76 B=36 + RGB + PROCESS + 117 + 76 + 36 + + + R=96 G=56 B=19 + RGB + PROCESS + 96 + 56 + 19 + + + R=66 G=33 B=11 + RGB + PROCESS + 66 + 33 + 11 + + + + + + Grays + 1 + + + + R=0 G=0 B=0 + RGB + PROCESS + 0 + 0 + 0 + + + R=26 G=26 B=26 + RGB + PROCESS + 26 + 26 + 26 + + + R=51 G=51 B=51 + RGB + PROCESS + 51 + 51 + 51 + + + R=77 G=77 B=77 + RGB + PROCESS + 77 + 77 + 77 + + + R=102 G=102 B=102 + RGB + PROCESS + 102 + 102 + 102 + + + R=128 G=128 B=128 + RGB + PROCESS + 128 + 128 + 128 + + + R=153 G=153 B=153 + RGB + PROCESS + 153 + 153 + 153 + + + R=179 G=179 B=179 + RGB + PROCESS + 179 + 179 + 179 + + + R=204 G=204 B=204 + RGB + PROCESS + 204 + 204 + 204 + + + R=230 G=230 B=230 + RGB + PROCESS + 230 + 230 + 230 + + + R=242 G=242 B=242 + RGB + PROCESS + 242 + 242 + 242 + + + + + + Web Color Group + 1 + + + + R=63 G=169 B=245 + RGB + PROCESS + 63 + 169 + 245 + + + R=122 G=201 B=67 + RGB + PROCESS + 122 + 201 + 67 + + + R=255 G=147 B=30 + RGB + PROCESS + 255 + 147 + 30 + + + R=255 G=29 B=37 + RGB + PROCESS + 255 + 29 + 37 + + + R=255 G=123 B=172 + RGB + PROCESS + 255 + 123 + 172 + + + R=189 G=204 B=212 + RGB + PROCESS + 189 + 204 + 212 + + + + + + Marble Colours + 1 + + + + R=255 G=139 B=139 + RGB + PROCESS + 255 + 139 + 139 + + + R=240 G=255 B=139 + RGB + PROCESS + 240 + 255 + 139 + + + R=139 G=255 B=188 + RGB + PROCESS + 139 + 255 + 188 + + + R=139 G=226 B=255 + RGB + PROCESS + 139 + 226 + 255 + + + R=255 G=139 B=232 + RGB + PROCESS + 255 + 139 + 232 + + + R=255 G=221 B=221 + RGB + PROCESS + 255 + 221 + 221 + + + R=255 G=165 B=50 + RGB + PROCESS + 255 + 165 + 50 + + + R=67 G=255 B=62 + RGB + PROCESS + 67 + 255 + 62 + + + + + + + Adobe PDF library 17.00 + 21.0.0 + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3 0 obj <> endobj 6 0 obj <>>>/Thumb 63 0 R/TrimBox[0.0 0.0 281.211 136.45]/Type/Page/PieceInfo<>>> endobj 61 0 obj <>stream +H;@ E~V /QDBb2\8O[ 6'I4ϳUM qxg 2+V:(^mXl^e#D]M՛f479=9YW&\ +endstream endobj 63 0 obj <>stream +8;Xp,*<[5;i&[BYE8c +endstream endobj 64 0 obj <> endobj 66 0 obj <> endobj 67 0 obj <>stream +%!PS-Adobe-3.0 +%%Creator: Adobe Illustrator(R) 24.0 +%%AI8_CreatorVersion: 28.0.0 +%%For: (Ian Griffiths) () +%%Title: (Ch09-CombiningSequences-Marbles.ai) +%%CreationDate: 11/2/2023 3:46 PM +%%Canvassize: 16383 +%%BoundingBox: 28 -614 338 -5 +%%HiResBoundingBox: 28.0712890625 -613.068490404607 337.807366739767 -5.6937054275395 +%%DocumentProcessColors: Cyan Magenta Yellow Black +%AI5_FileFormat 14.0 +%AI12_BuildNumber: 88 +%AI3_ColorUsage: Color +%AI7_ImageSettings: 0 +%%RGBProcessColor: 0 0 0 ([Registration]) +%%+ 0.172549024224281 0.196078434586525 0.7843137383461 (code keyword) +%AI3_Cropmarks: 0 -625.146788990827 281.211009174314 -488.697247706423 +%AI3_TemplateBox: 683.5 -384.5 683.5 -384.5 +%AI3_TileBox: -280.2644856499 -854.522024452141 561.595494821532 -259.502065956047 +%AI3_DocumentPreview: None +%AI5_ArtSize: 14400 14400 +%AI5_RulerUnits: 6 +%AI24_LargeCanvasScale: 1 +%AI9_ColorModel: 1 +%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 +%AI5_TargetResolution: 800 +%AI5_NumLayers: 1 +%AI17_Begin_Content_if_version_gt:24 4 +%AI10_OpenToVie: -206.275229357796 -127.972477064222 2.27083333333333 0 7767.63302752294 8217.46788990826 4318 2607 18 1 0 89 170 0 0 0 1 1 0 1 1 0 0 +%AI17_Alternate_Content +%AI9_OpenToView: -206.275229357796 -127.972477064222 2.27083333333333 4318 2607 18 1 0 89 170 0 0 0 1 1 0 1 1 0 0 +%AI17_End_Versioned_Content +%AI5_OpenViewLayers: 7 +%AI17_Begin_Content_if_version_gt:24 4 +%AI17_Alternate_Content +%AI17_End_Versioned_Content +%%PageOrigin:283 -684 +%AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 +%AI9_Flatten: 1 +%AI12_CMSettings: 00.MS +%%EndComments + +endstream endobj 68 0 obj <>stream +%AI24_ZStandard_Data(/Xh .&ḿAhgp㾷\ݽXhp:ƃ + F >¡ޢIHPo^J&5T*%d1@9g ZwMRSTe~Dul K`"FP6$ H8|ckom])"ڐ3K+(cA8P$d$xR얎tUFމCUD-[DhiHW2JEKg^WɈ֡}׈]: B-ڸF5`,kb+}#X0 jT㬊TeCUzVl{% |Oc,撅CR.3.U}&RN"ZZP Ðd@:IRwg$ +R8P(N±d, p0ܰ6h8vC`8$AB$WCk,Zbӎ枑"IIrH%IjE/(X(de"bո@B$ Bj" $s"]$QR-жSa2&).]&U=e/*OʣtHi$#B$QLDuq1HPII¡`(8E)HH,0a '($5.roUKS1lH1!@ڕUBыb!IXzB$"t$6I.C$`P<",88P^X$\Z+{]D$4@(YY9IԊv! K$gH򿡸$HMSXTD)NC+cbQ T,2PAK  2(rBG7vw E\$l J,&r!,CHrCH" s59U 2`C$wlvNUCzC>X.VziP.4USS+#E*2DKJ'@&𸘈xhXht\8~zxwvu>:1la +{9@3#7A + F) +Ŵ2! 'vkM$Ai<@1A  R(N]ZJRJBUBB$;* "DHjmm&YL 7찃$ }'XEIVPHr:%(A_<3!B@rI&AP*px4x8x  jR(e]Qז#MBŖJhWE{jMRQP*x4Ta |媂  "  < ,4 „lx`0K <0Xh,Hhp Yp +BhCIE8Ǣkqb +p)(%]pncDxLT9GA9۩Odxh-J + + +$xb!DxXPp`RBD$I&@@B \Ⱐ + 4[  +8X$$IhCD  ( + " $@Bc<8 A+u敿z^~-.Әy0LCOS-*#CjͦSV7hNjTkyL6dg5eyl]hTIo՜KogLOL#>TUK+zvmSmF6މ8v=lF6j#=s6.n4ʐڣ#˲[s5svqލ6R]kN;kxY{|7i& vR'/cgiiGXE ow45{95<٘w:>c"nzX2X]P3g\3+M]ѣ+Y3>j6qkV鍬s͜}閾jm{x$"}ΪB›gzuWZo7>Pt֟j6t{M]s/Z:%\y7S>Y]}WmUTOiԮf^T;DTv_𻕃wALץ Kknz}xx]jl="^TI֗Y.ypIP"a^po:6&^s?ZJeKͬsT-e栩UΫL 7t,(t-ޮ;n.YfTvN<;кcUS$A,u2Yl;URj[Mxѻ.M*/5k)έt4/()m=Vzl>BWz׳v2ĴDhsk(g(* 1QsF*b>eK8R]ſr-kb]nȐѪb,K*V&Q:en9K)bh9r#-ɗ%njϻSK5UKSYl?~4J#ڻvY<9RU9B"C;ov~&!)-&Ip׈u`iy:^f]e)ԹrkcgowgGgzv}~_[a^9j.rREfyVzܲ9嬦KWs2\ʛcYʅ| Fu^hJO::ψf6T\V2]y'Ze_` @ <"<$@(@$~7.)ˣ:[YTstI[ѥi9}QcZtj-pp(f?Me-F,Xv>ii(#(Rٕng.`(eHXh測85VZL5TgYY[[]e%7LYm)*rf>V}Ɋq6ٳNz5_d| mV,>ܚkޤ,fY^m$e{V嶚rxlsMΪ8q֊&yJ~n_B*x9b};?t*YN Vݙ6jUV8Wνi֪=ThW͏a[ۙ=/KEOf^ Y]dV)*RI7hl|³Wsrz8yEYgrF ڱR^ϮU;wMe<[9;hb\HYgrjsBb{ǡ/-UOZћ>6yUؕ´j]֮u*yZ^$,HDJ <h\^(H7_+3ކBIc Ibf I& #! \m[&Z4۽ GU[ET5T W kLeOEKd[:I)mXt+O뮞>R* =vVwhdXbvXf}f.`$_MWN =;ͼuLywU㽌T3%m..o"N]ŽΖǬ +7u9hd7;Rz['::iM7]GjfRqCөRrKҺ-fZLo6$WM:F!g2q?EɺSO_y7EC"MUǘtz%#KTY6Q ?z1jsbޫܳ1jkZG2ƶ0thtؖRat<גvdZE-oamѺ5y?]^)a-zPK&bޔK[" ڽtXZ5}^tU%Q_-RD  hX 0hx$40o6kDPz+72` 2KI5K6M{&Y4zۛӛMx4G;UU;TjmHCzEwlJ 2+H?ԆWKpˈٽ'XDx&eҨi$oD2hxuz9ȠIϯOuα$n卋s9ZUU+=ä);poIfn?-7FUzp!+]DK:CW2?M1hmxëIPqbIWIU!R*۲[=WKTٲZIM Gf:.zZͰvme謹-eR鐭t۽T)\#cޛ\B̳DME}:ƕW{f(Ћv zJ* sneS8C)&Dg h5r{XEqޑZQ"Qу hv5*]wKYIxzCRڜ2D`!wH>:4htMW8h:ڵJFjxM{^if% sXGJ<ŰhtVmΫ,=]mYy?kEv/K3,:Rm먦W{jiGgMȴLw[d-ӲogS|4lkw#>+MT6K+$o"U ]7ڪZrF$ۜaNy:hO]*]-٫RF̟ 'Η/ўz6S»(kpjV֨kf0stwٸ(\ I5xݕ5GuҖhUwJS*x܅JT?JuJvת?dvi-U%sȵzw*jol4׫N11+Wnkkcw+g.޷<~ێnld8ţͩPV]Vo;;$ht4~6Q*bRh8mxzWXdkv+n/mWO jM{Z|Hk{Qaf@J淬i"hګ=S=y{:/V UT-re{^z^~4|[ULh7W&ڹZhxG{ךfjeetsoWU*MGs[sTb;^w-Y_zhS[|ǯdJ./'xUcM!Zf.Jd^zY&%tzsYw:jmk5Ҧrog4]5fCX%W'\czig+)ʳ{t4ջ9gYtѢ#Z~.3U5FOI7ѲwJڋyU|O<-.^N8twKseeɕk<^4\9ij~y^ȋ2n6Xg^{UWnS YJ5:랤C\#ם*=iRʡ3.H:˵,j^+ Aw>Jozʶ/t:g6D4y$NJ;.~jHvY+חhȗ]]żUܛ]-lxs< tdmNk8wejfpK?u_۩{.#T;TCWR%ڝ9Yg6e3ʢ}~7۬YZ5_Y*WnKtkO;mnǮlOfK.4Rjy4˚Ғ:"-][Llsw mJ34BSqNڣheuzXfwYj,;JiYV':֒g=l(s-R.Z4g>SwnjMU%ReЋLv/5~NW.-i%-*TS\:$u6+ՕjZw-w|7zL4˦Y*}AK]bݸ:8<{wnjlKkt_tR})yw]-(lun_tN2yvYOk9ͧv̥#.TG  +E + ( ( Td+ZRn-GXhwCE;{XGcUM}Uqu,zyXwٜR7+inI]vLUѶUx*_|2lfմi=ZDUZOTR5W?GJCj,+\Ͳb&u 'twj=4YYisZwi3e[SVUODnPrufΩ+ILXpV=××"<nWOU+noK3< +^gwPg[WVXs2Ҕix^CJګ-%o%.-nԷijGMYCRߐQEmKHujhu[tuWGk~U/] +nФkL\Dec[ t+m^.55aΖe_TOsVuJWF-N7\^ZN5o.ٙw<#j*"_igD{g:kEӼn<[&V]Q)Skm\7Bn5ioP٬fvӱcwRfsɬ4Υ)QvGs粬˯O]. ʮ>Kߍ] GMRzo*;_E*e!N3.;tXBb@AGzN!d癩/nǺk1#شbJ:-!nwᵝ"eJ +e>ޒ$JG'g %X iISo*QjnTϪ0== ]}]j}I rRѢ̉ګ ..`MFyV:e@jL!JX`I\@Hf&9Ȓ ɹ?(4$U.d rѮNx>oT,6`&쯺AjRS3ya_&x?Bq8`̜|6(d&6錸F cTSQ8kdxsmC7: gG^&3|0|[IAuq'Ye`1Vm=sBCu]Idƹ^mxYbQhu &f1Nkmn4fNmp⥉3^G=@̴7^M-VG:_}qvx]YئT V[QajJ6Xb~Β֭hP6 KwL>"^l\>AV:AOM#<#X\/-IfÝЁبo"jEiBmJ^îC:p>ܞ0Q|9C 0{YuQVp.6P=<~AYY\Ƙ(<>(E2!URrLӵVsV|Kl\ k2wnyy_TvVrï6_P! HTNGջoN<0g\ֲ]{ -ύwӰq{/T:L!`*Pdˢ:L`Oɰ1?AU>i=GPhN;2 +@#Ip4 уNq p!Ҝ4a~H551 +gyY@X=nr¨ " 0Ʉqw !MxRadjtpU@uC<"9`&oiceנߺ{ePªrZeMp|¨K.۾O?2f7Ld!}eY]XV]UblSs6wk1f9G%՚W@CJ!?{5⤼Q4'Gޛ^W`Og"m׊U3*gŽ8#k.Q +cuF擣6ys- A蓨Or/䔨 \v윀osOm`O&GplD{GSjcLn |*(H[|(2="|TZ" +mvy93@U*WB{Ȍ iɺ:y`!كaB51NK9?xt2 +q5Ҽ&&2,L$e T#|DcQIiZ &ls( Rqo4,Ź35"uKW& bX%`tMIdob&'x&AC.k5q6 @Ef.BU„?Yt ggaХ$NnMiTP~ܻnW'ʬШ3nwμrp}0,HU)a+~\2 +L9 +5*hA':lT4 v̆6`%{+Qh(.m >'YxhhWPЁn]֧îٹTz`Tݛ q)|eSw=SI78) rrv?E߉,+O37{4(upWh9]iD!|'Η'KH\G#jh<`S!2U-2`Trt (rRx\;Mv7|N!LtlI"dN!=%mn瓮F?_Oئ "Q7A~5[ŘuWrn/令#|!Vt +:$֐UDex4oͿqNwkWG9Z"v +QKqj'(FR;).n8Vk4̅36 +no44 |#MzuR?IBxTKE M`0o[-R&9P8|pqӦ+{h|0;hs< kmƝFŜ*ԣh7I(P#3XVG`uR@[&Z헥&)`!0\?W8X8o@zr9`WLZOVCttcBbb1?CW9plT ގzi_7FH~Mp+̛>R4^sκ1HQ => an"P*̼%Qv3{w]7#|_bmt6FI/kmp@B Lz;j?@咞=9葨#Xo+Quv߱xuEљ{$;:O#β!y ;j]v!VCCјkffAX'z%=qF);k<6'+7nw>dj`iW0p9ý=(*N^|P;O]L,?:vX5n iv +]ý t]5NxHC cӢf|b83[MeYSK\`I*DpSzDcm6Dr0Xs 3#D5jeRe$q /M܊uyB)AXY/M1GFJ%ER)wmh ;Xdpi%VD.bHuDy55yȇ 5Ek.3ʅ(8@DMiN6_zKf-3˪5)> "ąܚd@N]k{yb҈PМ(fj-zӼ?D-dɅ~erC҆MAjYdVIY5†7Z 6C*rE@xui֠)o&C i9ۨD/zW050 /ΘD5&k? Œ4P_ӗSSC&*$L,*m76sC4=54m`J\wdCh3%][xe QgNc}NY +ȸ -~LQ@x9 Ħ . #riF= X..뇱Jd[NLEl f&;`'xsS +E !r/7Ԕ<4!_A;G'4%ueomIY[jP!.lhbn2+mOi_wgk SlE( ܲ+BG&.awMr7 U<9ԪٻC7:>uרH5󕁯gh_-NdƊ$}|TxTIk{*[x\:^"bvGN&BR>t5KDfُo3-og, :6}$~hbE,6IT1a]+*F=L,g!1(i`%'U +N)KnY\ a'nO HQEY̎|1"΂3q*uZJqϊMhK Thn˨ &G)>ERϱ*䉴!&m=TfAA(,qK7e,񰋀t/wlףή Cy)C q;VyB+'m##"_׹QG"u`Y3R qHb) g3u/TIC1pF]IfB;yRdBW.:WiJTP 򼗛oH% +-ꑏZ. {]Le*1`')k$(`|J ٔol-,$}?Q}x/ +.G_,ak + -EJ@M![wZǡ`ʮ o?SGCϔ GXx-c׈fy-4G=(s_w݅]8i-/x->"dV`)LX;S/fi, xL$s_#= tS>c\p%{ +'c^,pFߊ}&hL 8@+7T 2l +_dz(qld)qZAė `, +62[h! L3HI3bg 4^Dg}E#b91ir [o48 GZ[S&k Yؘc}j e2!(2  ~:Ca}F;cg0qPk>,Wp(:|^cH|jؕ",B)V悯޸F|Z87`ܳ7pQl|Ʃob؃( 8! 6^')#q.H+NBo`i?raZzAY`aF'KGO'8H?W'u)^@nX=:С=DDx +Q^v3 Pu{6/ª +Ixys u +PۘHJHơhD +Y/JbOHVZMZZZPj^IxnbSMcݦ l̓7&IMUkckJ~y 8H(}lR,IE^+@$Q a{:v< #Yu`YAwnaL!z2e G\T +1iN+,w5܁stW&Y֦FtKDV[ Gw\ +Y/p:]oדz'|{6n |-)n(Wl1R5R zUcw#kx^`C9OF +X<OYODaU+1B +a `WixFQϠ*v͢f$''K`9"pSƝfX_jlB`Ngĺ<蟰#`Mf3-`r1v omCX{j*Ĕ`B<j9'8!Rc9,e̞uUDS&N xK8&*e`S:IL3]LZBfHqʥ4^xldU~">|RtMul2Up!1#R-rs*&VqIG3%4^\ʎU-!JqpW10v#GGۢ4i&Gf@\(=peyL^TRujE Bf$Q$8vB(Ѱm-wL=-hc>ԯ; _C+TI# 06[N Q H֨qY +Gj/(_ BrK\A[VHrL>`pn`ZJȲpztڑ2OXYCS`J7vHa=5-!T,~=~PT*C}ǸP$C3?*` =ECF%&e^D!HHVHmiHicV C6CR  $8ä?vlhzTC#R#NA>h h[0* õьMhkV h)ȆdmF{ [}taq-9q,jo DEU)'ׂ8<7&F_x5۱\?4:CrK:Cv[J{sHBb+}jbZ#9lB@I5Z:!{?? ->TIFZ5GiŶBYaX6A7<Bp.P>*a^y֦0Pz,)B)2J3dH* 2w73EվVUS@=>(- su}V`?.je$=T$fDoOC0xw}@`>D,u>@5*#;;C_[lf(%NG ռN1`0t$q ya&N@=nD}]TѰjΘ-^r^fb0oUG2+LC$kJ{yD35*1l.otX0 }`򟆷o/4u#ULPse$:i\h!VacpagVSh8Q]S2g/g 0ASgvo$ hpಙ5k}[n:_̈I_fVerʍ-̬#K*QPZXhj(X@Kv'7B6i1wN9=Ðv*ʲTXN!5UwP2J]YyLE}#MT:Iwdƿ&1oj̬faҲl) ++m RrB|~aa;u 1 ƴ ଛB_.Az?hͽܰ>p< *y޸aJԜgJ2RR"Nblr຋$S;DƸV`^tpS|<ŭTC@VA(!~[r]uRQztvKT + Yp -u +N᷅{w$8FMМ4oy$ڲ%9$( +Ч8 'ֱ';ZIނN!(t7ě90z)I`kUՅ3l%)OA24[FX^9qb;j TT[hr +*>!CC 1|_ƞʜbP}{C_brn:0`U17Vzbڽ@=jPe||C(}"j,Y˥yeW􈯝B# +D]ӄW׎HO +\D*<AOE+2 +Ҷܞ*'xk<6ZA#q]֩01h2:m}h/ 6l=VANo*0 +..!ͱS &-)dFtOFXb|^b^*iuN_b>)Z[þ VjM"7m:bl!s@\U&17w{]<+|au'|­8$Y3Vr|2/7R8 6 +z9Y1DeϋN4\ GS+ ; c?V+B&,'B" +3҇Mc<^E%Rq+6G#z_%UG +;?;Z% )+ؿzҭM[e$ {<i\uvP\jE/1{(7=<p_~R*t +=6וl2.X.z Rܟ\D@**l£A*@TYHd'mh65A<*PEARGqITw_A\:/2(A_GL dEx-pY9VԪǫgC[UٻZnbSy8(v- l.s1n;z\4: +/t3p9Zr|ã6}"MZcuW&%uh.RJhS g,f XȤp.H*om(4Xf!&7j ;v}_{S`p7-7Obd`;oJ[X47U.py[ʥd>1 +3 +@\787=Gw /p{PT􈏛!W(TwoTL[vk~ VzٚAopl,%ktfi A %L,rJj_ɓvj `޼@|{݁aBa98Xe;#FOv%_2N7 +ͶZڸJLrOCWUaIJNrj T.Fl49sw0'_Mk&cKhRL1rG:@24GÍETvy6* ufkh| :- +X`j]y5'L@Iy),sCnB:TyŽ@biSBѠ"W@&bzR¼ vc؊eU#Bu+9#TpÃKiC PIid#/̳"=5W-"Kx| c]ܱǨ RTҋl/̘֗R: p" =~PHa4&*ŕE!ew,UŵeSMo1MjXNʑnV0TB _ q?,pcHy\\-D>Fv\W!%'i1(Zh|}`]~z о׵Gb5X7}+)P(YuAv/(PO *mZ\CV΄KƠy6ֿ* W)7Q2fez^5/lEc%EMjW`c@;'օ$  )\yr^ʝr"ÿvnr^IL +ya3QJPYe-a˃޳4rcfjt>ޠٻPTf=f[shϞ 5xcn^hC |+G vՔİ-D4twZ'HWatl@=sQY5$-sgj,Lfv*ِ7zku=T_H{ /CS۫rOqU;V''8QqUo '5uN+'sK lń#C`TPUE'X.)GuzB3:$~KOӧ)@ܴĭFHzɠ5eS%IE E3ܙ4(,{^4STC1RpWsV?ɱXмCwxQ_VR9_f+aj.Y 6XDT2җ +.LƳMb2HzoWpx]./jH<׸ + 7Z%Ӻ>=5@X:7ݴuᬼb$6zi+{7_j Wٿi$>YSsh$]ؾb.s80I>uc 0I b3P ޾Gˆʆ +n{ ]L{v/KժnnJad]1Ym;_dɰ%M5>?ƭk3@a>C4э #e,0 fp?ˠf$ چJ9 Ur%a5;c@$Ǣ5)ǧ b  +=ǹX(G@QKB5Rc@ iI 6w}c$|&2願"W  z2f}=6*T)-:BZsѠKDZ_o؟N!{NQSl{6~&V3i1oaEQkRzB\2]~[8w1R~K`b9< QI,=ӀɄD3fќKOw_}hI*N W7.}3άG75RT]$Zۨߩ b` nDeL|\i?yfC¥: F&M-ң"&;-* +)ǫh2̰S +Q<)ʱy +sxzŧI!0=9'p3ATWoH>y9@'cF >1d0D<|P)av! +޷q <= A|BocFT])`N̚OsЮo[ߊ! D-3n3ש6@0ǩúiS#d5{dĽ$CebF&hdL'7[Si2++kev0 XKA(;,RƂ1&J[0sn:s+pEr;vC7 mkh +WBa)f  lOfp"E);,N"=b/>d69J1*P=;sUng֍AVwHq莭uOܟTsyr~PuER.'[ +(:Ly"O%+˷u|DilZo5/u}fWq?* iYu >CDx}2P&dpmi^fuŸ0cMbz=+UZFxy3V cgifOD`"PU 8zH ؋vX4,Z߈KsV?]tw (N[641o(TX+x_9UXѨݔ 0w\k,0IYNR: Q[k̜ewsw;;J4Nb >.1baD~G0UCĹ`UԻein@K\ ©Mݜt:V}hZVs W*_TE/X9vrm 8~frOb,[f%,fiS?^9p;$O?5,wJvŨ>0xQ(Ϥi(ű'PT_p\_s܀ cм8+d$2, +ɶ |rAVS dF qn6"Np /[̖cWjnrrv* +3z#l.Ҿ(1dfBdP% ,+vlޓ&T"ssH^ +Ҿ5~Mtݫ / 4K$]²rЖeG8%f[Ap\_VM^|]OT7hO?6v4 +Z g*nY}{a;2?BْZIV6<5B?[h~3y,xT:?=ƒK}{;gdK ~J0 f֩B'/oy*EpkhxhY 噥/y}>>`PZl,ߌC mif6NhՐՐ1dQ2{#CB.6_U&0eEeh b-pd,3kub Y>Z; ;yHrFob˦XJP%-cl> 8[3^'Fq&.4{DƘX\ ͐H6Ŀ/劸JB54'PHw\ 5,)tՀPn {AjEr-7e?l!Bށ+JFEKfɞ sӖ.`0ral8,Z,iP PUƃ.-Kc @7P/vèQDɷ>˜kRQPzF%HSBZ%UtG cD[/zwhoN# \B駲 @$f TPBQ3L^y!xzqƇfIVK!=Gie0֕/<A_ !/Zﳪ{+ +vXI:chy$N/ZUNoأG4-a K*r\f6WqrnXFя-@.l.p@\Slrq-\B6 ."Ŀ} Sy BC ⁹C:s5}m8vN^쪌!`wQ+X]!w g1,%4 +(ɃBN,*RcVJ-2cud}D-YO/ۨ.ܐ仸xn=T[}**ɳя۶L[rJ _Ewgm"V*>Kpa%;A9aPjpI)lH./4oGwЂH&wM~I&p)5X"\BFT:!dд\ÉV^~*Pex߅qZ(ZTAdo8dT2=#a9J x jz>z-o?TvGq^Y7AF7$I,SMHW9!t3`LdYxݍ(H 8e/o1U6W4*FvtAYQ=}bZ̖g#e f lm($=ƂUx|Ǫ۬96rzUA4Mў0cR@I}:PQ\&&QkncؐjRmT\-eP \"`2DA&qrnUvmv)LSvv HqȁE>h儼`fVRw~(83~O*ͨ{KBlOEqJퟮ\-@>_ 0q5dɽzVA^3 +z\=:;1N UJh1p&ozl\.«bya åN$}͊:m$"a2V7+9K FA%?ۈ#0SE_o[E&w\, p|V[Ӽ]Ũ!נhp(PDLeX`$@B':J~,W3uGY‡ +4phKܡ0%de*hx0 +`wi [;LE_WW^vED~,jse=+1E9 ^/̹&i?16*]{ LPSqFHUIP_0A 4^ *;W@5D<cqZb A%(K7'('Q<`??;M!h ohŀ +fpH +dgDEU{p2I1`":{ 줼d0ʌZ"wH.¬ҧ?@{΢^I<^V*}fR) hj?A8Fj{z>iޜ^2w k:.r&Dj^+K O:ȳBkt6  +OuAp, + +Z˟c oZ+kS'!9UZaa- Ƶ!ȠI_inr:VY[9?9:) +B^nP)Jj=\(9t aM?p+9YcyPׯܙ>H},pԭi0[ }l2Ȼ7-[JNs'z$q~+\!7E* ED]n ГXyo"& Ê> `FBTL$"IB:" HS]h"q+YoF"n8<@qgIob +1 +z<~}"Bor `,}ԅӁǛPux濍GO H#m4&Amu ߃\?Z'⣿L²~D !gٌ|5Nµ'8 (FՏڲcZiH@^"II!_dBB{nW Y*Il%Pt*i0LHEUs䬏wRSx.p/uF~'vd֠kZKv @ 2B'ؒ$*EImɠD,kpe;Hݬa\];:eXWq%㷣OІ Õ}r"/ 8@"үo|aį7iZ$\g +e]]%V{v3j Vv{<ތzU+JY_Kz&o!h(Hh6Y xZE~Vcb>\P'KxL21 [/lŘٹ܂nv0fۢ:x˷#֩T]Rx9HNACktR'4;s +_q;<(]IGJ !svOǸC:%y?'{ve-ȏxj>vWSP(Շw]ZMCQmu} CjFەpqAGڛ爕8{#D*Ojx +=_vV_? +_tPUm酺u:zBWl3TkxBJ;F=bcPQSZy 4M"҈.MTU +FTԳZˣ?ʬ\Ѩxj48 ؟fLH S04H+TM T&JkVu&t +nsx_zFA*EeVs.'jt"0GZ'E.E_74 + +*-ch'-~K_ls37G:f k a# {3" GlP=i`B2^wc}%z~[QS]Ts._Lf'˵pP`cE=sؕEN̕Sr=Ҿ)*/.Nicv7|s4(Ahwu?SsR!CFXq 3l'[-[ ؽ˯ÒH +]az.J@wfV_$NaOw x;] +lPxI!f;~_wx#Jm%N6Ayd?Y.@0P\>}˟QZdΑ=:lɆzi`֑8)_}p"@vsE{ؿԥ5WYyuil.Ы䰈=y 2K&];55{Il?w.r3/.慄8+\ܤ\ܨ +,rrnImL0Ş},NavZIZ޵5}h}3g/-|&ofD&} @ci"}(S`wH tފ->ymMm#|05į4?,_Ci_Cϧa>E5q̠PIQqUl_4{r>܄Nr< #ܕv l>hՋw c dH-ƶ5ӉBU;bQ(xqVâ +X5se:`0l>Vh"a* !G +ps#b%qʠ(q[AƟ U4dpM}F- HVg5)Hue/bU|tl(6ZV =a#+ +;Rt[LfHZZ: ߛkL+ChƁדwGCիƖ?3ÔҠ"a,uWcN3ܤRul'M;):~ۦΠҡ$SA X]_ʹ{P@)803$}K~-*ՆVɣiEznt?ƭ_Y{Fݞ>@~tB*`O 2.F 䞨Ht"**cN\32nMPzZU"v/Z0B|JG +hoZ1󺼎SkP3{K~qM%9KdLemhoJ8"N=Q}Zc+Y0%ڕ(X\MRبL&jE:蠂+x<,ڑS6䤺]!@+^4Zhͭa6 +v|@:B=(t+HU=~vB_FչRrptCsU[?1J:ط-,2ڂ unȗGRc!ށf&/ T7iϋ(pF6]:&]7(RqmhfUO +k)B V6:Dw f~IEe>HEʪ%1)qh@VnI;]~@M.F'uv> ). qJƬ Eg_yi\*DǪ_T>Wn0Uz *@?b?fA[2Rw]n姇`KN3!غV x@*!zj}؛`tTT׼Xs +_K-RTu!.JT|!; 51 +U#HpզfjD\6#2m'8顙aIP!Y\Ev1ɩ, +B` BEcBq𴺥=dht:pZ5( #+U\ڈU)ǫf\0!-?|ץ!R; J8Ry PQSP5B.h)(0a zTHMΜd*̩ONEBJ,%f嗈V&wWq_%ap5 "2**3TP4a5CUS tur IAڄA,_dLBC ɘNq 4'.@PEcY֬UD+Kx!߲5"`+DO$XOD0\BM`S80Ufk +jSrm hp +Qf^ݥY&f CySǜzmnƫw]H{ %V_fi$uݾV yum:99!BAb#QKp ɔU +AVHMG48Ń K*> + ĦNqRbWh 0#$~ɵ_dCnD.hD mBmc[('2ٗ#mI<֗DVǒ6xSM?VifHKbFxJ4 2:6,~MS*չY?&CH!iII9$\Sa)N4HIj3ETrLB5x7X6Xq "EkѬ5"B"\Xܝ&#+hMWӗeBB3Z}b$*Gz W%ʭ1wBp10,6NKZj]Em'RS +UCiPbb8z"&Df8I1 + =JPuĔV"ӕIUHU9TDn+E" +ΪYetL9C(U}!. SUT^Ubb'i,|'PP{lC` S% +%py+ AGy<§>bg3hH) C M^slVMUxU0ּx/7;-dT +ŃR,Ols;X^F;O37+׍p1Rm\_xoUBR厵XLHBBZ8pkb_N o b&oW4kCWF+$"IsWTqJSb;틝Нe6QiDi(T^c] ;T@i/e/ qNċ\Ň)9tzw 3x)R+,ϓ$5!!5ƄP^2/"-Ɠ]mdN7Wapb&e4X!qj۷(EDPƤtJBjZCfa)~8CyvIhTxyTiO%3߮.a N&g1rJȀ4$%)m'{GЭhGJbc)Q?w 0}HME u4~ +1b7j +'A +|M-%*R./{3مZָͩ\Jy1J hW65XDx"Aj98=t9oҗN{?}۴5hVx1VIJZ҄94 ÓΕ1tf#H' EX dӗW݅fBFowu9^3Mr,"Fhy(b*bD<\^wz[]^[ZWdML#kf2NQ ]1 97r +I\:t%|FFhqzYѥdSWNFҜBNQ~kd3V\ڧ(n6vQTE~Mf,Sˎ$HV ^wA%FFH&VԣUE!hroQ[fA^i#$'x_uLL6ODG9Ew.6f4~ +0ׄ;yͼ0}Ӈ;$ÿKZ;\?3hFz#^7Kw!^&eH&p c˜B:LԄ[ʲMضi%5ԁ4L 8&+Ŏ@A< Ha\r AZ*T3* y6LƜʁm ;ėה3 bv,*1,kح@L)JVUR4m:ԡ:1I &ga.S1RRcaМqg,qW'zk;ܖA]p-㞀MˮpBYʡlDw?Ƣ 2 [" -.JB;g2 +WoɈeH @nơ]FQ1LA63 Zc2h3 Oӡ+PCM ED:!23ÈgTˆ"02ht*BBv0 x?'Q,4ʍr[)_%4Z}pO(an!a&*oeLCɡʌra ˠev!  N J:Ҹ : eQDxkƒ$qt +NDX +&P(HEj  DE/ d)3t$tR6|)V&| vеP{F˓P?a4K9Oc %!oBqs{^t:*͘COԫ_(Qda1:g3gq7OgZǏ}8a$EB `@ +Cbx|4~B aqPPZ  #1$p'env65hia,j[wN}%q#LFܳ,Eb/5pk%Ll0iXHmV(I!na餰m2p f'u"!\2VEQTfѬ]و4CƽֵQk{w5FM ÙHWII=&%EFFBWCCv^$G ~N8&㙇oSٺ~Yoᜦ0 X+9i5=,trX@. ~YoX 6vLMIh)A*2}!}rÈu'urFpb%s S#:1*=C/[DI,xߩI9TI`j]pCv:O>7':v!zrЊMaYh۾h{ #B͊VO}'/ScKȟe6pZ{ zV̟y.~gCM8] Ox5ЗNSXO%<@Y1#(g+@x[[5AW0S4oS ǻZ1wOoXpO>3T:+("B׿ ˱?t}# 1!Ҏ2hsp\HPc=prvnډx|d²TӐ'ZP*iP~ +l0Y42×e.gU! }`N׊'jkjg^Z6%|DF0DRf1҅酣 |gBFUxCa0rDx(D|/uRP<5uN1*^&&.pAcdU~yftb9?T˧]HޤFӀ@-= @DJ3yj!Pkm:ư>xyavg1!mF0+i(etl[R|#ëbv #Q.Qt1qƢOO}uHJ#pgFgHW@ĠVڬD@FX)^a<=i}аL&At -ߘ0JFvNPY-t +?ǒ&c` +6²r:TTI{پv\biЭCHN3^h6  K*a .JyWb':4€dM@I ;KL-n@[d@3>RNi2%1~Ph"".|CA~w.Gj9@"M `X!J;Hm +ninHŬel+IdP;mi}Ԍjbt.5^tg!%{{`^ +Z0hv\E`3rݭᬍ2N^-@sDLSuHjkY@0L /$@n{XL 8-~.$LOXfN%ǝ]Uӗu~MAԩADG9ȂN>pq"h>Q _3rl+دTbZ[٦,`ˀ#oq%qCObic-AׅsA4ceDMcX=eػeCL 9.8&COt chO"qrq/q-p sa_T +uL3ɌYg)|54O?B& + |W\ %Pc і7I@occM<(IAّ.G(nD YoOT/W@#wBzPF=8ڧ(r*F۾Vn6_5KD!ɖ#JEK`u/qBnVRm(TnKD10Q}߲cū@3ѴF +?'@Cn&JU#!j=Tm@ՠ@xqšY!.҂+,haz'd9 +HG%[t&qEC&f{e׺9zx)́︅^˱Y()BH:;iGP** +gt༘M~ͽUu(ڴ rC(*!E7dOd3%EO c +A#$JQ{x9aCT[z?JM,;d$d%"n+&df51l+#_խ\h [$aD%!4aĪSmSD\ q(gԞ~ҝ0]lgbi`KW:ݪH q<; +L>ˣDdij!+lVY ['ͷrQT(`'u)Og >IZa.y9wVeP K\xԃ^@8Wsn;}d^KtH "0b-d1PXt a3g f :ydx {/4fP..JǕrl)kaaԀH;!rAP0g@h_hnd0Z~%Gr˚|wFC`l +9+\e!fUŅ>x1IHX&jSw餥 Bt Dw(OI`L*֍P4%\;]Dpw %XxW@I2iEH'íԕgYz@Y@G|Np._>a&#.ˆݪU}"'|ؕJpPnx{U7YNH$63 +bȜכcEWR)/3F84a]3p jNs!;X!4PnS+ho>0М@ ̰.TZ]e! +qcuQ ߐ E 8qP;0_Ro)yz-hei`WsþΓdS~Oh7JbtAZuVo\ y2j1]S$$u_i (d*ZnN@ѫ|O:(ejJ?At|B@ǚhD۳)vo[%]}@nnkѫ rF}bʷE +\x +}.> RD.{|hP3bHgÏcoMtJ p g+W@tO<wfxLLx3a<Чp#fbzL +ɓ:22ta|خ0?0_ F2q 9bԀXODBo~@,;S9W Bm Bh5&qB] +d[ CbM8sAl5&6 bZk 0qI"PMD@H#L̴"D&1M-)`}VЄHg@&uģGh Lj#t /q~Hu`$/i$T%ԹēKܢ )1JT` /]HKrZRK>K1fL,Kd g/,Q5M}%^_?] ֚@k%>.V1MPY%U⪝XJH ѧeOjJrZ)=PP +[@(I%@u;IPB,lJ> Q(k'4$[Mla0 kEV^$*0(BC2,rB=!XH=Hʓ~a7w 2g i,8~1#I F-`~_-#na-GjITɎ|y#ƸBGʅsDs=Ԙ.zn], 5HGBl,/ۍ9)  +Ǿ^qp%!GȒNK8Dc!8 " Ca8ԻAD8p14@9 +j+zsA5&V:Dl +b7tpt-A`: DCDUaQ% @4v@\+~!O a#ؐsCb|߁O! OGp3@ɊG&e1PCG!#BhQ|dd9|K|7p?#i} }>be!:!#If,u>&w,n&nH|t !iD= *ͪT;]|cLzKAx ~(Au +2epzWsԩ=02HŲ+ftAf { "' .b=eT${O Nūʼ [ "s./ *J&@H=ZqFzL\GH7#KT z| Y~LSE0.e"g-X p|y?™;Zk jL:Ѩ+۸eKTTJ@+ #סD>!L-  +~X|.Q|u- 2{: [@*T: B:6@z+=t%1`39H\DHJ63$ØƸTZ/j28?ہ(D&  9rP 88h.1 +Da51y@8Q>b5q Gd# @L,Yp + [ +ۖo]M7\y2.wCAuc84X1Q1c=@ԃi&"mJD@J1d!N Lm#ID>lT*1RS @j;lxl#/P@ژS6X0mpt8c|  +2( B-&j6$ FB ]czט<9k{ !ȐX#)v5Ԍ'G.įѰsh0C34h5Dа\4!Q "`!3{|v`h %F<[o&(A/ e/Rb5T0P%P SvڃO^P^0' "SeM xqTUuQJdQ"ţED{sAź\(e2P'.t +}R0nVbW=z䌥fɵl| [ u%2P9ߕAKZ҂ŕȟ[4*ŠyrV2Eb^,bfZ5e+ Y?cb5G8T,X= Ii1;a )X%R4i BoK% + K>/&c +1W(hLİYiDL7HqELRT /VT*"5U &TEڄBn|coTP}RsHO+!tѨQ6NB;TO'x +{NP)})'ye=S (..eJAsPR +s EIBQe)) +pB(:l +G1EɟQZ9FٮQ*lEbQCCT$$)IP؉RD +*e(h)R2OS''.4%ha.ٔٸ4T',u;f'z>%DjSsyϓQ(>LƔ8oPM@ƨ,&4җRj"W&d*7,N˄nUQH&e*11Q* DU[Ej/AU6j:DmUd G kz+*xs7%P#O&p;RB@lX7QB 80$)2㔘Wf' +K`zFX\Va*ce} +yR`WQhi@|R++QX|h2 K% oJB$.X$7#u 4`V;$ra +VŠpA- !!GMGr#{-u"F/G)W9ۈp"A-3rF +db9 " Ex5#SD("*4'櫲*&vW#"B\PE*z"= XTtEn5 2:hY, \h1?h-!miQ.UAE=}^-s |l4e(`xХ.F@Ov.](rv"* )h$;/ƋupW>E6/_X腴Y/Sk/?ȕǗ7eϾy=b~zQ`X $fa|aWt + 9t`$; (`(`" !t%&хEcAl+p,VF@>=7mĠQm03XlRPc1nцNxc 2 3l1 J@gdeE`)&ctldXCQf5SC6GFbfI(`L&IdCP4 KJtD,[?$YoϠev]%gpˌ(Iv^33e-52f .p`&l3"a;23r<%C(&AbHhtU ` n8Esah5Z |4 +bʑf4 +pYA5 EA2:&%t4.=j Syj V5Z"Xjr 6%sP#\h0.5[p4Qۇ,=_S-$篅LFja3*p \HZB6^g_V RMɂug{,6MtUSWymJ〇g=_m +޼vPk~|MZYvʍ*X@Vag& +ov-)ګԛ?_F0S|S0o+4)B jHzJpp4 +zCPQPp\{B=U +f%P0YH(8> 98uN8|s8ZRV!"nM,L@6!ElrʉM ;Mf&PA&0 Q`9XB|VBhr| zBR]%'H r B̡4do>H;G2h,DFp~ꍎn!`[lmp6Y#uVsTG6EhuD#:3,:N' ;@vĄ5;5Ng$ǝY+"Er흲 > Ϻ!&Í@T!0ÉPE=S6@`=nG{%wsĽ}/$h_201ŌL>Bܨ}fd +G|DרI]Ibnl{cO`H`C`ZPŐd +}ndFd?QW|g=؂Fp= eó=H(0,ۃ ˷n)@%跪, l`H+eSP@=ٟ]?LKTA`7MxhF’a!=7i (2z?;*Z(D+%_( !xYBi0uC=Q~Z<=+oÅItH7l8e iTqqh#AͯgTTBy3J0=68zg|v_.fsPZI_#_pj`ۺo*4jP=PQˢid҂i-yh`@v 0)xJoo/Dbfpqn77(Aq`M:K~TTdtT G9:p$D|a J nj3 jG~2@4fg8_b̮ҁkYZ PIPv zFE2]577-ᶈzAC +3T5Hw41 T_/3U5A$8zZpRY\d |+?4T! ҍ ю,\1"- HW, 5ƠTruLTT:_V@ng*LgBowSKcSb̹M5؄x +D '>Q[,( Z`g@ + W t@zS +\31Dy*Ԓ~_}b2 \Ԁ՜BPL6xN nqKy]PINk+掕 "W^u| WS8)2\-Ki5%(~>5] :sr>P/ndjcΈ+i 7F 譳0/v)z@3߳Br7`s@T]aH[#"=.ߴiÒj;1`lRHT:P][ W.OWTPgSeR*ؗUNrVx(QפE>w@'ff@J2zxGP'b&p9L=-+AtX[ffQI%Cx(uI@sN_Vd + ?^! MuEH6K5a0 5zp# e'ڸ' _1kjv B`qNĂ@l8VJ:D 6M_fl80c)?1&=`Gluװ`ʒY~u; kzsaё․RݙikK@82DEWP4g| +ryໍ՗'Cby cBCx4kh`ca7}W +*&K#?u /Z/Q1\Hd'X$iLn]%Q7 GLDv//^U7ț`*VJl'o# &O 6lJ| $-Brsx0xi # 'L P&KCiT'ƣ amf%Q]@GɵBeD +#f8@:&j5d<sS"cRB}h V^2@xjIIuc @\p+ M +P?Zc@%϶Q' ce+W",lZA@M ";(n W\՞Z,3C4߸KUCq +=g*6R6% _p1܂f8"&ӺEc3g@<O&3Z,ʀ$?LYQ: 9**^%Q8V'tj=ػ+!GWĺUH&zP{/K gf$6.WcQcoa%XTE#92m J^/#McUm49w۳ZP0To{5F?SC1uygv#ހҤ: 3IH>iTC+b(rR98ߟ~BP!PG%붍7t+TA(J _-{g!YFbn:cڍ;@ sH&54]Z?iڨrQlPǾ<9P?cdAA~1+56cҮM>Y~)zjNa3JxG`!;Kϛ֘41zES2AmBGo?,62TTk#ڿ(XMrwU ǡ\,Hp*ޯ fLD~ߖ̨6;Ә^,!E1}r 1F1Sk(9sJqs]`훃B'ri"X\GkyW~L JA-AKQoƛlP{?c0jo(ĆWM)( ́Hi>,ݕ^Oy?,~I] 7m]-,@7gG-p%sz`Ҹ㼻I4_;VVS)C׆^x`uŅwY*r㻸5;,9`gwKUii95oCeW|)R-RȈ/t Q-S7Y1$÷IPOP^yQAv8!F|s!p}0kWⲖU> +s"|E==3~C#?~UEF~Ã~]S`A-a +j:Td#͑P߽̲0uw_WCSE$n{,b)R05%4 .:ew/ mP:mh!r6޺bebڗl"匨=!x, =GڳB^a3k8B ַ=q7/[AM짼L7mt;Lbo63い=)|6_C5'4)";/{D~H6묀DbEOV7Cv8hset +O0]`;]g2'' jZW} %TΎ˖yLf]KwbR?gK=d~OIəq^[˄NU_SBlTBֽw}`ӻaWEf%ި0_O $/烡q"lY__,piuY&!?XW[ۆs]f%a[adk"=pA'#G.cŐ< wFÁx/TY yiP"+Ba+y ؜Ȗ5Rz<^J?nޘO6hн4SDN]v71ar` 6#.vK pqh -z!yh_KcWJ,x;H/]^ +bzdw-~Gױ<߂d'Wp:P"?-IsGOw o\CvxXg]fwaOr +/" ^|]M >+oJW9fi4_1qo>Lj7V>G+u +>(o 8-Q ĉKuhZJ<7IT7+>n<xA-ͫ5ڗo w&] kN%Ƕ˔.R17r]@ϊ0y$KR (ʜh_U ߅m'ܴ6}$uLeEE0:%Z}B̀ϊiU4AM &.ΊxBva,UtwE-4-}>6'ٖʝHb9/E2|jАU +{//>M)]ˡW™&^:?j(EPT̍T0h-{71ʿNMK62J*0Ź/VK4"^ϟVCVw^צ}VumڵpҬCpӛ1;j +}-f+͍HqDx. R +\f+kͷ֮.{ek8XTcNJbԴHדIbY09]B +r",Z(s-*|&SfJ$mKSaeO=qF\+,+MoŚ숈Vjx!{2כ&YXű {Z"F&vqO#ֲaޒ]c3.,${*Ђ}Mrl-`,]ݳzRVDR 1#^y_UN cJUJK>a;Aw:"p:OuauD8K3~kK +o2Zׯ)3[0PHR/ksXe5f]e륿iZMgA}0|gͱFVhaœW1^Gz6K|=crCyӛ6S^sz\j,2 5}Ydsѥ†J͐88] F[tÝ(t N^<`G f+N1ܭAU)Uz$ +j(=oRT܌Ј 2U.dGCUѡ:B]I99 sѐ!Lrez3ۢ=7qϩ޷YV'>W t}yO&ā!ssǂt=74'_~6Q̕>" Ae{?\f?o8|ۧk|ٺɄ%s +NN@s.yƧ39%>X!tti(7XmG +nAH0#A7o(g6gB9h KkN PnkUw+^k*Еރ˕!v+pP94:7f>IpˉK iy7׸¶ +L/ 5`jzF`_dmB*˯}B"){*SXj-+ +1cᚡwFkX$@KKgVV~-@Paz*#'ꔛr\_RҋzZ'(/ wF$GzsWɉ&噜x7F|~ G]%Q~%Uj0% G̺֗HБQ wu: &ڭD{=r[ĝEnv3#Y,Dv)*כg㜘uJ<ʍoO(/Ut%8yOK +";ˏkJ_~ǭ:VT$?ѰOx8W#=y6?5^]qkǧϏ' }JcϏTZM (i)QHM,Vy0xlr_5I0K]'{ueu۟F -up@\T۴w}U S yBB X8 +w`5b6HRK"R +rPt9nsCI $mV+) DQڱ$N`eJW/t 쁙:^n&)DZDb1|| c'VG'f6Fj=F]"?zt_ T@{:]1|1[j<K['®L@ox/[:s\OQ*(့6@mY0܌0TH]Sȝ*^4/ض p< a 'i9{콞{xrbF<6)t~"޷~ǚ +m>,ԕ&r\֭Jcg3jPôݧQu4Y*̸@ f> m<֍>?fTnq߆UjA,ZGOб SӭmD۠tx(Yg*  ?7DeƨѩF6d?22w$rᖐΣ->ܻ]2ΚsO}A" lpm'Lt'-JMK՗VV* 0$_lJp,vO$?} 5 ෉0!#֑y5$A~0V Nƥe.l,W-n 탲FzE`߱;b}d7j;ZO3MZk[qrk}I1alFpvdQK/֡׾Nĵ-Hv 5Ưv(sCU{&=m2uHx>N+C:<Z>I *R]R?<(,h^1ء` XY&F(c_R~|.{AԐ_{};MK_[°Tp&!D65SASh -^<;N9|^m/5'&a䮹##6u%ʜ@5S}.vg!و e +Δe +U܍=֮ ՇKHZc"i6z"ܴ&.{܏{$Dky*P@_L(Au ULY@j!kl&v4 2b )A϶(^zάTDԫZB]egWk1Bo_WS3 +Z͠ŀskէ\!-?9TڦUiGݪyւ[T-t)G/T;U[1t ]e SlC3L:ݤłz Bm[v^*Ǟl)1I61P?֮IjM +jO 3ҫAaQ|G)[irzp&4lԿ7'&miej$;cmˬSeNeҋ7ړy~<}C<;=Xl>] K + +}5fM:P^MǏ~۰lZq̜,)X2ӱ\Zʗ nA0BKui/[j%Mq.. +zy(.q)t'IZ4cd= 0FVzjSI@B3hop9 R&E݌tv~9n_;~HC3fDA3"¸pE6l+_t zR kE-Y6|ҭc 1X]Vk)< KowvZK$)p.1-@1_LShE,)Ɩi9b'n$T˙Ftk*,icէ>P8C{gz 7y/ZYLJ F= V`.HSu4T }-+J]whf.$*E"[Եj =*S*0R#mPRڗRĕ.E[SؽNeYf$O;P2Z0U۰ US< +b9NWm;p#6Y>stream +Q޳p@gm>kn=$V0F_ukEk#y44EI1!7$\.C$7[$~ylU$WæRr,`  i^"?D\v0@羏 kM}NJ_>Iх|Eɗwt wsRu(6v_v5~&tye݁P;wWJ'w]WROV<\9M$DտhM*wygn^]v@؝JWD*ӳ#{gШQM9Ny^` 3^/ +9%@KA3Hji׃wN,|XHJ@N_ E+?=4T>#]4=O~r)dG4pupfNrV" _O4R(Z11Hnbx0FUq{K tŸ'H}İD}qLp/ spzZ,7L2Ft8]Dày ! q Y +(qQeɘx zSLHt[@ki&KWmօu$uԋ`.r$EjVƚ\􌻥4"oqD|aH)=  *n GpT36ĩ ~,j;U]9-1$~Cg6US g.j!dfiZ.r coR33ѱE]Yu1f9,Yqq2:SϸPdBqaWJ~jx]N@:+:0E9ƣަ*3ߝ>NG0 +帡 +*+/Wc3xf?oXT\3E GKmp q d#Jq[ %;fm2^(rgf;LwmfmYaj&5[ GER%۝9f ̮38 etјMF*Tas>簗8=~sfCG\(<>gyF4AG\$졞wbv8j_Cag-cGR"vTKFayҳ#j] ~1pySCJ]ags +g_Dk*!20?^bρ˭6 _ +1j؃GM?%zAA$ (hmB@A+){ +,gl+]ҽDm0*9aA5_ n!,hҺdx,hPQь툾ͅ⇰X_ DR?h҂0c Yi+S˾ЩzU~Ѕ0 3NF-A?g.#~Qݺ9CE'4)@+~Ä)TyB 8!t֤sBץaX3.;6JK$`mBlmXXZL[t-xtt5&X5k#q minʀ$4CM>H]a\#`qXU?#qН7A.0CbŘ,E 9ěrXꉅ0䎾nI ɦ!q:#inOF*YEOoPն31j('Rs3(x7avd;5‡T/.ʙjQUغYcշڻ4c&wXO'G'(az g#\FUJ k%LIlߺZ@!jtn}kׁҀ㵡%{=!2@h4! lMėa)?V^{WvŦr-4M؃}QQ?eAʶr0@i_  +fۢKs2ۢ[> Hcģ >Wk N}qڈZCmƈmpQEu\5m{? ivDn64%i6Ʋ:F)? +6Q$n<ɺ-A5d |T6?Œ&\)lJ=Rn2cy=nh pJRn1D]v{>8}WКf͕n.gq^ aZ78~Q춸y6́uU܉;o]oL3o!+Q6g x{v5I}]ermbIO(@[߆`H:fS:6)K@W!hrZAΈ %4=<^ ]+#+A$؇|1\M +݌vyN]|Aw$|[!x88:(n5 $Dqo׌Do죇ӠŤKy;0\ b}y88CAl68^H +{b).|*$?BiZ9ns7|k);}DoLܾt; EG ZFI.ׁn{Ѭ> ?mrUvMb*.0XXZg\}`m.H8쫵[f.4ט_:yjm[9Ge.6?k~jN^m[BRJan otZl\|l7%cѝV_سپx(֩f oZ%2Z,~\< 8lJ\DTۭߚQ{mai-%Al_68sc1mk3[m v8}nnç^nm{=o%)L3KxM/ݞ"Kވw,ߎYc{MdI]d9ep097?}B"2!pEUnnK? +t󉸩a ( 7B+ {yKOPP폷vkþ3wwF#X,twRk> +=ccݿ|DWe~w:Mw7=STg4Run3p%ԣ +wrGw78js[zޅV6%{05oUqJMLy4-js:!t-o%·bLߝ^UMsmQ 3^- +\xxP:qS*ۥз9w=oo|3χe +Ga?Hrr_KM[:<=m>ߴ>ڹNQ(@ ܔTdBNWVA%"  G!eݎhxYn-A]=z? +G:AޏQ&#xpݴ/25h[[z[+lRS2oꭊ}He{{e P[U? }_cӡ+.[|{]KQfEc;Jb$zӳ1-.RqSk>.B!=9Kȫ!bX#Qa"׶ñdsjr|~$rfWU-9̝QѬ\74%h-ǀ6ׄN{h!O88P Ol5|26#_rN/ 3E +/|{q; ^hM{(F.71VfMW]_#o磤N-MՒ@^ݤ>:?8[_N2gXxka!O٣V! h&?pwS gKp_ _҈U +?e #C|';Zp}~ |?Ho3A~IŶɸݿDY#r]hul[S %ZnJ̻cak/#r+.Us?ObƘ×qQX)˶޵,]SK!bSj4;AS*>AYiFwܝam%& ӯh,jx㧀7t|6sBS_ kuH.U`,rks53ExZ9qp$ )wO& +ܢ<)29SIe{q@8^भ93j? +i ݣۑj6ܯ3f6:;j]%URl!, ݗ1y3to0^D#lC봩5(4Y32_6ǜ5onI#ut{'5ȝ#z +tBv˽9e5=lP]BEE)HRѽ4-%]C=5N?{EqP(Cd,ji?k,@P@mzxef1gf#KL\$8gz JHzuE, jN{BId&q՝ a-YOof݄2~b\E8ϣaؼ<(,5qjy&zV63# u}qmuj&"Pœr$ RPb4E +m+[W` +[vRqС_X@Y;BT@7z!gf`8mW燔Y iTaFSW ĠH$y0W(=gmr\qpWRJ7a"6nd 0;yj8N80]FʻPY99ЗKɷg dK&pu`:)t$ ;,yD_Zjh͜;5cG1 h*0k;o%ĭƥnKV=NѩRZ$[)z>aqK"] +c8M)|GyipZ7S6?A!UI]R{R'7C]if&4OVnN \`zޛv@>H΅hpϳU!mj1۹- >Ư$8 Gw+X4Ix.F +@W픗L*/O֘kT>4緖ޫ !ԸM6tZӵ'$Ӟ)ǧ%$ B#U=ZG99,BYyѤրǦԨ:0#z6ih"Lgݖض"6m.]ߒ3jM ^DO9DsSļTp5vsy-FoMq9dTs؝}qYR7) $'YZPE}Es)3ɕ+o™EGڨg,LՃVB}_zMJ_n +660>"3rV-sq:OLTwz˧ EgMkHbk&GRHp~lqPĭ:3X¢/auLI+7(U[4 ӷ@IZf[4&Uj5`{^_QqWcWYFSo 1Tބuxl7w@'y+RF:N ?{Znc\-3i EDž2YvM/+]5L?0&$_ +NTjG5qCՓ@E`*l7t +bL8 *ZT5THhV "pvNpG*9vsJ#US##Nd6x? aƍcxŰXD1W?+@Hm~PK8fO>%6,X8:0+ 6*R۸Cs .}~X1;XdOHV,yID|W)~qYQ4>W$FbikCzSp'b&a>x&/"qQ:ߢH/Yα) C@-(@v ĩfƜޕ~MiZNj0A7ű;8*E HG~8e#?b9^pO?s~q\zKRdG p̲[ +k"$#|_c=SJ~sС-e4=Koֻ^b=|P:k)Wz:?Y'~DT!H By~B "V8d_d9],,0zh5u1|j78w4w{ղ S0A8tv%3w0rm7' "q+RzCSu!0~f/@pTL&TPG`{8xk{ưm7,w`y@$M1co'uRh❅Cf`"9=z7߯ 7_;ø(>yxϢ^vcdS]4̟l#g꘾f*%Kbf5ZYOx\Io@@QM~CM^dm%#nb6pZx#csßX=? >0|>|߈~"Q9亏#wマcYwp7r.u[aҺ6d Dc!J=bFV?WQﴚ{"z(VF35SCDZs.mfv?LdFY/?33=/(LHtbӉvLR@I' Y + Rzx q*50m-ͺ +F)y]C L ~ G@!R.vx׆gY~$"uS*"^ M/u{bC/wgݘ@9籮FPbj84id2{l7TJƝP_ swFp``I3@H > 8F?y@pV=Rg8Ż#DD qqރs+}#oO#^NDI3Ky`ޣp ǿR0č4s>s Z7Ϭ2.`\}3PQIN/')a7_;Ssy_F!CzY79F41O{i>]]û/qe6ͷۈ˜BwA{xϣ-D)8G? kpLߚXR/$k#m3kpw`ܽ u>ZI>}2φP.pd4 \ߙGVН5p~:ڵٕryKx< ?|?TxR)&m~Hq n]9cݸ# !tR᭓Wπ=N@2:O<eߝtZhg )<h{V%B[JE BQit|'(x'1rE>wHP"o?BiNHPǹ9||b4*K?I5~Ρ˅ q1sY4~r>&ͮ;㼼s7pZ''5< Cq3JR. [&pƾ\,.BW)XIeAwa9'`S: ?A9CP +D,C:vx`nܕ/rd !L;wƢ\hk +;E{#4q5qzw :xw Zbw64rFkL(3u_[3n 92}mKY%l6a0?b/zex/zbظb0yj?YgϦ/viݗά~+io6a("A 䭠!ajżO48c;ۆ7voq9Ca9ka0}C&\W8@~fLg1~j3 \}in@|g$}I@w߄|C:g6f͎s]ȸ/xi]ûzry~"K_rl&T7Oe5&lg#H?0298=K4j0q I@mswAGq=g@OkL[că(m@we< ܣď8 sǾ_#8w:x;z xCw(6;OqKd>~gB~9; 9;*m|?;w ~pF#mqG2<7d:[pƺy6otm_یhgL57ws[l1."M:H}~ϯSgQBʹ:x> zG(:x7Dg}V"1ܝ.sd]92orbm}-kCgQ yK4aֺ.te\[mquF$ R@JF[cfPE u~ISC}`Q*p]m9tgQ>Θ,}>|R(}pn6rwΡ:wFqvHM!LJᜩt`MGw&_FY2{kޥ!I` [(}FQ/}6rWFCH^ +obGAww(w[혼#P:Dppd ^HZ=6k)^h/ :w\w}!JߤxM^?_89/]}û/W.pd5ΘE=zȒqc F3o3Na͓{~1yl=#8;{'1 aUDqw69>z( Oq*Ҩ8u7#G" N +ĢW"%Lۈ2oN݀ŤD %bJǟHsD K? .}&OLicuM!1A~)g-{>NID8/}~]n ƛN qdR0Ywz4 AC uȾOE7&<]As/$A?Ȳ7$ď68$aw*}p=NѦ`._j+mo&j6o$~G_|)4LT:EfC*>TÏd7s5L 6<|' 7u5Kg2ym7 |muug[N5wv/tft ᛟt[m@~^Foy ?9٥ _qy<`]Hg8v^/AĻ} dߝcXc?8[3Ha`Et &UDOd7&lg#}T +Hۉ#}~%O CtXXU2*o#=߀)@qUe9u9CM¿Z;'DR0r,pI?Èq-os!ޟًa?9ߓȗ'qTπD#d#mq$pdz+eFC)kI$𙾷{&YHah4q!@iO "? 8}7&8:?kp=(G5q.rbW6ׄD†wz󾎢Skoqߐ웱Xw ;CyX+]٥۵!:y6׭TiXyȕu_h7n^=3e9˖wky[]|{8tZ}3a®-.0rl?}߆Pĕ.t^&<{ͷ4p_G&eG #/n#k웱]cXwMz"KT:M@wJEMovpuRޣN+?:Kʃo:5č.+9wBUM>S=~F}<ܧq/y >ϡFBjF8Ϣ޿Cd?N? '}D<_3Hg L\_b1ypþCa96zG1$;?}xR779ufpyJ(s+$5_O'aj72ڥ;ԥ0xf ڜ#?~yPc`ؗ8v^"?NWSe${L^D;|f/電cn0j1d\G9 7Ex Mw?~Ѧ`8Fh87$>Ų4:ޢIBCmoxLZR/{d\]>7&pn)z s1,ݽ!Gl/8k5qh33FQJ|S-ē89iosN!n2{n M:^G@/_~c{/X{o1h&pu. ="z+ʌպ/yh\ga: O-[#]`Զض\a }lB0``X;/X  o zKuc׺2ktWշ0t率e-C X=lkIr5 ^oPjVK.,Ye쥩%*R6cME-M-M-0{`A mOB Rv)T ΝZցTV j ++* k*+3[JXSZ*)mՕ6JN’jaeTUVZTWvJʢVYiVVXVVVYTWXVVrZRVVZ-UJk+*kRaYUYiXRSXRUr*lTVU*JJKK J +JKKuE5E%7+^QUiWR)*UTUUVJ*j* +KJ+XUYYTZ-*-֔VJj*J*KJK[UfW,J[Ee’jeYRWUڪ*-ՕUU*kJʊ*+e¢jVRTUXSSUګ*m** K+ERiR**--**-֔U֕TjJJ%EEeJeVWTZ)**)*UVV+;E0e%j]iQYIiieZ٩ +J;UeE5%feaeZ*l ++biک)*mVjRTZVT6j*+UV[%jZ+,-+*JKb]eZUV6;ufڪ)-+-TV kJ[%Vi٬6K+ ++;ªfYSR)TVºҲfZXZTZ++UVJ+Ke%ef+,VV*J+K+K+ʺ’²@NaiIiYUTUW,-+*)6*EfY]eQMMYeTYY*+,UVVfYIe٬lU*K*ͺjVRT,,*++EbiX)** +*K +KK*{eue5Uuu¢ʒšRaiTY,V+fXZ-,-Uv +KK+ղ`UZMYiXXRZZ*)),V6RSwRx:堬 +(6L%СkiǣWP/ӿACX9IW̞c%|KH٤T"(b E3;:/ uy#SRH!DVMB ;\Pڨ$䑣0ǍMrP9h=D04QĮ Ց.ԟfP/ N}:Q7G9Z&LR% 9JxG!SrRN%?RA`b!-mq2WxZr'b~% $0Y6W.]ch,._╗xe*_d( !e-H'X$'k8(UO cYWQP°?0`W +yg!8BjDi +[ '5[1V2E@a/RYщ^4LU6IHd~yq)C%a+ A!$*2l uI[Ǖ\TuI&g'h+`&)iH[RYJ*e!č*+T6XXH@]01/u01#$&m hhH ; |O \ +뺊[r:[ڵS[pb#I٘W8ٕboY |PrkXB3 ffb}bHɿ#5&S2c/ ?#:.$ܴ\B +[' )mLQ[Q%, Jk"G"9I'p'/f +FYb_ +RF㊗  +z+9IpIZ%߃kLuV  ʊ + 8Ao-v82_X˗ql4Ib+$5Ւ5EBPi#"Dү 7(S:g堑a B -# b69ThZzf 'i#1HRvd9t\Oq\ %vf)i<1*v%4 C9r7 +P5#(hWP:Q;rQpp^?k- .<.ɋ K65 +R3M$}A1{8f2IQIXd<$U0I"$Wy,Ir>!>1Ugٚȓ +YOƭF9Amȹnvͨ yak29&2  wWѼ{$l^L>|%jcnU:$*},vxXl !V"JV2;0yUbJ#c<$p 'F*q,BʙD[r 0EUiXl%3[DIӌQ%-|Dݦ@ v6=EW,dAa;cr$ +^dR̳1a(+5r+#r` J<2 O-) _?,ILQ_B!aي%}0( +*h8)md!,1E-NcaG M +8/ /c#e{=hxɒcJX?*f;/@BbPM2g@AC;gصd]bӶ +0nO-:k΀Z #f5IpR֖冭5`TLp׀)ky\]WP.,'R*LR/mP @.J[U&pJ2;u",} N3F4SD^o;&=2+3j"0|)ÊZ(mȁxfCWo/$D}GIao9,@bFs1i%זȸo)/f7dm6ڐ^$$r (u?bx [KR25I7!YO堜ê|SdwOԐ*M9 _L vK Hw->27 Q\ՊWT"K!{g+r%`ĖD#ׁ1%+n;!7p;6r 17$1(45(2;%5:#9~khcH9_|m!y,)Sǥ,'j6*3euJbPeqeaIaA1R7:P/{L)<- +:3M@3K_.WEbV؉Vp3&9/J # @MXRttvPq-zӛJi}a) +j $Տ9YUDWFG3V?8oCJKT~ +rU6[XXZ62^ +3,`Egy("[ ? [vp T@@fzAYo8V @z\d[W~B&ɂWBv-Abڨ ߵb>1A*0h +ۖƱPZARV\'(I$.͚fJNud‹#F[0&ًɪ}'1qq'* np!jݥB6{R-C_$WlmIap )@V# v]65&6n4'ʊ[&k{ @+$Ff$/sEo3@9\NJk PPk/djBDuz\W?U5ij"IUBmERxQ AOvU J۪FM@Ej{v(1LPH+Ǥ{f@F ]8`%DwD/QqHRx /ϢmTfܹ0{Jʋ{f!/,#fR@tV:OxR:k'\Ii ENm.KÜ QR.&CԚRZ#!iG@":Sb:oI1!bpbj Qx(K+"_Md͕Rǰ alG9aMJ['n +QNҴI v?sKPwv%"t*QRd=xeD2/ch#ec8&6t Q[ÑМkg-rE#RLΈ o8~EתE@xOt8+7n;*Aj؉Oxhe ܳ)`69W@-.WلXHkaB'UzÔ/vԫcj|dFhZ7)S X(N8iOP"ZKP)5jDH 1A6Uԫq +KD'UD\h/w Nq{&' L[iT}*\CN+шኼ() nlS;&鬏Iڎr.SLJuﺎɊ}fLNl/p9(8n':>ٔ6VgL<r'%l߾X;8!3""3"t$sW+Is]\S +t'GfeN@Bg]H$Xijlt`GT"7P{Ô՚I*=tn"Icn\I\PN |\VJm/*՛+J) P:G']#K0iC JgaLڟޟH܈'VRHjFaZP2zOF$z#$;&PH`aʩCYa)RD\XR ^5h2f`@. Y7oqĻknw_mvی<.NtZE D$CxOc7P#}wnh4c*0eY#a仍:' +GO)x@?|w[k'@\#u!D,K䬌GsIGpK[ lc-,Q/,944k%R?hndV0*lJDm qiO2:OH"J_ȤTLTD<'R( %>BϺGq!{  {kdծPV:'(UI1~'}&S*$=}<}&?j`!y>c=ܨsF,*m@`GhPQkRUX3B$4}A1Orm\rBA@m#/یe#b\Gعqe#Q™&l4:g6'dP +iBv%d_ ʆu*4j-(mD1}' =+SID D6ùQ&6'r 9tw*b6F|%cN@#<,2B>S[ŰplN Kg@(X>#ЯGzjgج{MxzBO?$> +JTx/MʃJQy?*@\'lW&$GD*U +;v'"jk@جn= P8a;zrbMU-$BRy73à JS*'1:zw% dw3)AśO?ǻ1ynθk38Й-gnXú~%uV @})8c<[(ϖY3xYoQM"Œ._0"< +Y + Jb1YgPB)R( h^-VwV:4gS}4Jx+hhkF$SL|[\EH-!wL;b7J4*{r ?4gȴ+2?ŧE9ƟTqTGǿ[ DE粯މģLJ6ԇځVԙNJz_؜&95_9,+gφ[nXK=R1sIZ^ r3"%r&"? Fyi2~m5L_Z7(QYSyChݼRǹO#NNh/hgaL L42xY?@nP|O! Q(gZT6*kCD DDk +?Fk )-[ @H%£\*$DG8%5#Ěf6uehoRE)(A3\YØ.)^P +^J% +R8 R4U2,G?>4]GVm +DJimBQOh|3$+{`OF Gb_t3pv4bըZ14k⇳ouw)9J8$wf|޺yg>DZ+us<\_hb.ObNłKđ<󙼷\ a<6r +I;Cz;y6K?$0~e:?hyڧ;"T* qqcfwb~@DfB%;e3Xa\nFgH=|͡|Jx_ zo]Gu5|&>S)($P2~oxA~.{4o;yF缅z_p2j#a aBPP`TZ:4uþ}ŭ[1zlθ,3=zwy`)6F q&OU1O0b7(@F:X^rnQ`Y[5:OWRYB|A Yrfs_hǾF;hsns"T^.:9vL[R 5ov˙b_`=L, F1}h&V="t1k=gC<\5t6NX^@_JBwvee etκ=z?g S :(\I4sf}J?/]2WFܕ7txθ.',cQE\'Y +@_%mIap1zoaȨM49}B}PfCHe +M" Iڈ3|O2k㒖j!i7paI#mM`ݽCZK NT(v"KeTϓj^nٽ8bVo;>ֿ"`VRXlkgk"K;`Z'X1JB:X<|\"/SXlѹ|P]Œ$DnZmmuo\Io- M^G?B( /Li"mDow37nF@bZsY)l@I:I5\T9{ŭ;yt #yGτfl(`5 X8:fEZ^G5JD=$}ժ93&P# (] UNGBG>g)栭xWאKP4HptrJu AѮu +ۨ| }+ :EyGP̕FxI4L5v;U~à4=Ɋ0nWm9t -*w,pqp+Jo{0RHu `d=%^"Ex\DJu+u^+JC.th[8bZ IzǾzAG;Snϣ}y8E!QIFbIX}M'_n?oH 5|t>/ƮmmuuNcܻ@KB@EˍS_b߸1nnaGB ΂$Ġq34x +bH +JWVi$pbW&bvs1+_qAc(-JI :R@2crKኇ,"\ +XVݟK@쳏BõGJ&mUuR:?Y;icK/8:w&i;@IkyXW/zq4m#gO@:Qo~JH}0zjż:}l@\$\ t@1. +@+*f r:$>4RiaݠFEu*/!5I<.gl.cDn9. ٻd$EEDN7v>G|9o!i8hۈl|n)ayqXXI= N>2:؄ImO^%M G^-s3lwO_aJ#ŀBCgrF@0Ĝ]LH +z b͠GJ/,4U'kA8кNo`DcdJ4*"maJn>DNװԖ0KW/ug6涔c-d7Qfފaܣ ` FuaѶX;#7CNh֮n`R|90 U~V!&>T qkB=: 9zuc^qLjx;&:B r-(aE@LW/bcp@Y4q&$<kQ6 Q** VVk~%q{#'/boҁnr}r.d)x|sv*BrZZ +-j^g b9F_IAk)p* #B5 {@_t2VFL `Z,aScaBHY;@b{4*> gg$S- XW!a){H䛳<. 0& M®XM &7R?,̝B͚H r\мaƵW2`~!BnŀB@!C5xu Xۺ`=&L)DjBɡ,b2.2,lc_ +.XQUBrvФta"yFv|Nʸv#4񬻮gGP乒NjZ\uF +ӖN=\#x! gq@bW>8Dᚨ\/v4B:[0*]tPLhlD:h4/yg[:BGV7;;/`a] BWR3lr;sCqXrUvyyeyw|}tq(gɀVA/->|i؅r 1 b)a hPnn1`0aP?HB ifP@:Ds4ݪ&[ +|MF0(!gRĮ) tNReHX2Wdwlw[e}XR /p9 E bm x4-j>(?<%6$Z ,N Ye2 s eL}K"W2;Փk4ZB^G"TI܂])4"u(45jUWӏDc rj圏T68\kbrmΡk%@,hi>Hпgs" Ā:fe4IX3/O1'*\U$kdP!LPȭ3neOXPi0Ri9pNX`|GjiQ&eέ ƍ!DO2\1FV$7L)uri>pr +% 5Qs%Pb]8DVc7w3hv##^ԠSoLBXǸ'²0)6| ̟DEƅXQXB̥L-6/mY.lZ=>'l`H+G ۫Vr@ n R;W_Ov[BZSŠ1H\PD=DV}YӘGgmhro(.#3U ιcUЋ@FMQ^Ąշ_`Q*>4Ө& [6߽l;ֹ4 0j_ CY/KXph+VlXP6qA&D^Š[PuN#XM`yȽ9_:ot~ ֲ?8U2S)#$jxu~WD6\+%j WVgݥR;o`XjM] +8XR|>E`Ƭ@ϊʽbʚe ,fHp|R,. e$alMɤ],jtbE8@I>2+r˧L$5h!yr#l0;fl;yAk( +'bTPH3(Wp@%e@j/ c1LQ%MՏTuxʉ1: xX7%_, +Ѕ +$@Õe/򕯻2c޲^B. jaz>% `YŻ@ ,ٓTՙK] XVZ{q:n&1n9RgaϺ9u 0K83H .Qr*:1ᅽх a2oV+bG.K(ŴWn+ SR j +i XTK1 e`wGX\9X`KDC\6|uIՕ &W^@ P|@BYuԡt~N. ǨQ1y\R 2Pɰ^X{94ggTY=6k>saYU[X820 +e$pCQ4]Y֬CUYE <0 +s,H0%GKK#mep*O*rPvR++,/ +BQ9N`fam΍zXBI}t A J*.lI< ҆K;10NDKq \ +z;,e`iܮȵ 4r^G65p K9N++//-#!2\ #B.0Ds/KYl[.exvTj=胴V'X].UrZ#dәf~zO6]2%Ԃ&d$`kP!c2([tr#~ )h/<($隕l벏0r+/RD@U]^X~ +(E܁d@Y +. ! B@-yY-{- +s1@i-Tnu-`ۥNԙfz^zˏ#Na%޼ + +ol,v nS7Ň3@ J+G ڕb.FezNAK(2k:Q +%NoXb[IK=QelI(XȔP#:X$'WMb367Xd"lԱȪd-*٢*@TfuDʅUK()Io &SI=J`MEݫ[@j#ԓ\~>ti GM)G( W<07>25dg$8c2! '\يr "$9ŠX]L#4,S_ZfQK@Q +v~:Ogl:PtyO7"%>qz"" +2 a ?T +Tǹ#2lFfF SCGD e(/)|%,A&ZSn\I MPa N]IxpUl@K2V>DPWpԡht^zN/t.ұE:D9,=iq ҄M&Ulu$!`]e{({ z#S'H5#% +T@B P? Ӈ:}ӕ=]#t#O/rD؞NF,P. +IDd;I)'"U|q ) LF_S37Zds 瘡I'h!ϰ$`G47z|(IN1ǥIKSQe`D9pZ +:NK6kzM51ұX!"$ɾ-|4NI?J"H( 9 d|١&f@F:85}0rNg&\e$.XGS 0c(#-5vPQoCt>g^Kw2=]`Lw0wNovk`׶~Dri30$Z[A\)Rs5rs2rq$ B846bhwhYXEf؆ M22>#C}8P¥3D,a` t' { cMk`0{l+/+[PXy[3l%8 L223P`mf&4aix#UpƌL#~E2;,q,` 'C*P20e\@L)8 P5ނ.--8Nq\zL・ttԿ"Tȼ W@%2RɐH%_F%c64y Acť8-qB!SQ9CfUqJ9ZFre4BO x:P9ؘe:OL2}l.{c:M4t.]{zQ"odR4h]5'Ԙ{O|@E$E(=(V +8q12x ˰a00 k$@4axq& Ep^:ƸG\6 pM/ezM7t_:ti:L/t>sN_RrrtIwnڙqu(} A GApUq<Q(qxV$:)ǽ ?H+ {ܨߠq Q B=h\~y4Iaz9l0gOLq%QJ/ +_9۹rbʮxnGLBjЗ|:RBt^iM8e7-CXKcu NTV K*Kk65ӦiҢggQiUY3-(Ԕ6[UfʚQeijigQkgY(4*5*,*)+-%+*))V[ʚZR3C.řYQIMmiUUeԪ΢ִVYQgZXVQٳ4mU-6]3۪mXڰF677XJUeeVeEevEJREUeάҢԴkgY-, 漻--K ȴdSdPK.l8 458fyf渜 RxH U L b _V#I{-Q9èg0_"iG AoNC_ 8uwRhoREKin1ޏc߇B8Θ}WLZm9/H)mqJ #Aijm~Rh/^~>|Atx+> Pn#5o*tih$Q۪欽9;:CL o#7CS,,k)-owX Zwc͸%)..Ÿ4j& % L q%Qq1~k ^ޅCT :+ _jOd_m 8bYb4nf/&+ 1L V7t6^R T G!~47Hْ\<7[i_ЬbXK/Vw۹]`ź]pa̳{Y/qe5 dp)S?e-qDA/e"F%đ:yEB"jWbZIV"ڛf\"!OJE#ţЬ^OBR):x F0&SDio:MQ"$ B,jdpQ%&o@}8fO"=:alQ"$o&S1J6 0W:>;0MB ZC@~YS\ҾmUe|]A B"Ǒ/0)qD/O "C4j..xjǒy35:vO D7pZiAzwd2@2y;ءi# q}$KqsJIGlova;Z[場bPR =' +NI6!/e"Wy=Xưj~I@1 d|?|yp!@<~l5vp#K` imx\MgEP7M>$5_ȭD +FTeB%{( ,tQKȨj X:^<"fhW-,q'UC\i3")ʅfβi's +tPY48ORDi/:DZn>"V R;Hہ.&:I+Ig ( ]MgۈlD<$JƮuV'WhU3"$)4I'DH!J¿3D`5kS(.Ccf7a:4/SjRExP}P$8bAZP|{F8#yHY#u~sF?CHħXXY:Ļ[ C FDDk aD<n9ێucȺX5Kg/3:ۂ>@@^qd>tMb֍͚P}I/ngۿ!S0B1B;*~Lwh/yZ@^ + 4oZ=o$g@b1*/ y/uC +;&vx3n3LVp MB9Vz{A9W:* +5&&f]`EP7%4Ջۇ/.(%38i ;@k ŽN +o0@~)s3/tta5xs_6zb V.&/^/VPoF4&pIc"JBj'e3zw7x./?u~&o"Ar6cpnL)wj4|g<z왗g108,3V7|3zr3m%KygYG?P"Im +7[F,הX)_fƶnK=2{l>FohY=|P ~C}` F0zOpL"6{vq#er!G<)Dz5̙< sUũ&m$T˅ЁNFAIu\c rA9Ŗ_ă D5Reč(Ɉ,lp%B~JU=}g~XW32 PE,;[l*cgYD%R7Ȳ/xxx:(@tCuhGoC8a옺4Oqne6~qd;{O^.{:~Mp2V5;.nl>Wɨ7P0oYDϯ +,z$̠܅[-W8t31D:o֘4o<\0m-?V͇u?sa/sfMar^pT..m'DqݷP( U +j$"('̃dhZ4.{ K1{i>(,L'ɿHrKt %ē6 $O1Dٗ<2zl׎K@{2]WFy Ã@#_@ZR_a(/th^Tqi3su7}&XU|ksiȽMÍaji DZ\ +:i}2}oI&zH)ؐOP'SŜۄ/NF" 0^mI\iی>})'}qpø:@FX?u(ZIA>9&p}>6abwkZ{Y*mp . +[ g5m]:ms`a *'9ÈT-.mwV KŪM +D:I>G컊i 4q˛۬sWd)xۄ9"gfȡ.gdK[ncnw/ph9nm lo7&#M1AIw.ԟu7akptx][Ů Y=VkRUÎ?{F}S +uW32k({(hT1AG;H*q E!,iOPZWx%30)7(9\CB {AǛT8\l dRq LF"p.#v|"N4ZD]~c|+goe OFϬI$O1^Gqy?(7oXj`@.w8? _ZG EJ&zz[`B }q.v˅[39qQƶ7)u7*E<;WG֔:·(- 9BJ'C{0U&Uś"gv(6aq[w|x~e_I5$̅(P|H uyr"L$*N;k"97߻;Gw&$[場5 '8ciԻP S(sM|j²ۜD;dsw-mwXǻa.rgc6c:&nޙ<k40&n LHvQvqxKhB:spZ=a^QLH@TDQ%(+VNKH诉 QŷY8M_wi0xh#WB+} ih.>q RHv'6f͞lE vWRB\ H'ͤjh025Z'Q>h;"ڵp(4YK[HErwll[\LuƤģ7dT*6_:;ggqcg)"m1# GLk98.!Zf8.p^GϋQg%#\ɳPfצּCD9߉5>]󕳛Nɹ8)49|y\3G#eK`&!ڍm\Øw# h7(@qԫ-퇹̕m$k xUNaVF$}?ֻ>w!4owQ&gȴxjtV J|)ȩފK W`}Ä }B3;,mq{*hĹnRo! )8x淆:PjGHJPŹ(m&zI +xcج- +o Fv}$ +pdM+s,nVJ!'aҶ1lsή9t<Z@:-WS*uWUo0a/qgD:CUzKd׺I3(htpLd܈230yC1Jg $hxZ:4JA&o VH +3@s7DM@DI1) RXKc8RhLyʾZGicڸ=|_ u* #$X /3ɷ#yW5oK]6^%-g7'&?{7^ ֵ9*jûElv8s^TvtmH O2G0Yi?͟1 VTxL?/IoE߿ģi+ =GYQ"( ;{E"OZHF['!;aȺ>}6%N[5_:hR6 8;vC@SZg1[/y3&t:Hc(&c{A@+yCģ_=&} P!o!H?wFch.L؇/yz}p9/bsc;4Xy ӗ&p,Z Lm shǻHlT.od]fPg0)l+#]5òj{ {CMFg"vwȬʛZS˕JJ7.BM~CbnL [Wu[0,tihb[p]MD A>'Ά;6/5V6fɥqth"NB{(S[[-M>;+gi|\VֽKJaTBU2,kúg% )~xAVzKâ'unǾu +n!xk-TIxOc~wz>? +%=|MmSHG|;ze_7ܝu_θ<|](67nnQ|&5: 5| aX;HU@zD]5sy=8{ ę t\?~R e}=o3PgRC;XG z;a-kݯDm7ؖ÷-rz|v9.R/.Z Y:pm""p!s]d&f>uHn[sn"ސVQ,57&f# PN10g#pN5t> ;3F F-[lAej Ib@Ť90{hsc_=&DM!J*7uc޺.te]ٽpn>J5hcrnϹ_X;|l6ah_:?8:#y7໻+wHbRn, X:Q**#} S͸pDm@~aɩ5Αq%*5^g 1~m FX;80 D ,&m +ML+ù-j~l|hC;pL={5O]0ȿ;R<$H4\ 4quPe QYcٜt[UR]V8Ջ[B(m9wf03 XXA>cݽW@ ]3cJ%Ii'Gpv;bpNÕ]%iL&LDJ8Sn8 ʈ +f4\/+"+{Ɋ:g.!as`zg:o F,z*&UzI~xGxraQ+LI3\ `@nԋI({.wm'サc7:ZꅣO.unL`h6"n$)Jed0@QnC` @Âv*р:xrD!bDGYS'A@p6N:mXc +Zd R~ӟ"oz}.i_O~ykDSF8ꌜQ':gzN79S_??-)6vsƝ[)abTRVacYB״n.%UJw}C4*ŇRtKCZv`2F۟ME ~X \^5OxcW;dMX׾K(=Q.V|O/:hɅF=l]=AGᅢ|9w'͹_nukÞY?\8g/fáwħӠzzvyNv+Fh~7n8j}k~V)XfNMjGgl +0?G6VO}`&|rx',㩰;iB .z{YJ'zqY/"VtyԨ{xNْ۪,a>Bs, Y|n:8!<}{}1cˎ\g䂣({g fdWO;z(BZ:uK +p5bCWc_(8^(Swcg~(9`gvi s.ReE0l7DħІo=0?`Ӏ`3ȟpO3oFϋ9}Ϻsf[]d]zh@lzzky,"%Yh/ͺ_ 9"9 +YΚsSY<[wUi[[2>rP/ƶWHUմ^o*#u1,?+cpad_6֬3N^}^v \1/z~avwcpd!-YNu.O=GZmJgМ}0+w B1{ R/G:GĻX[a77;YrqZ謕ugW$8/Hs?#$5^|{8HuO[[6t$]}A9RWb]- zrY N̼!kO^<}|zu"?;̥y/}zh" :eěX>ݮJ"zqM׮8l r3Ï$筦MIb:V^`?.x +7@' d3^|sKSB/[I]й ٚn +qA|]ZDbbe\O=kɹթi䴬h:\~Ϳs :)“le*xzP0QߥAv0,]N ա"~/lÌd+sQnI* 8'|kBU-w_cE],<:wI;֒kp?noި>j@ǻ>ѢZJ?I"5F'lEa\jFʸ;? %kdb:O{^0!{,il ȷ &i 4.X>@άa̫'w0{_4a }Ikf]._Io6E&r,ݐ!.%:SE.3Ŭ05?h>&02m3}{'>?T(4~qQD߬fX[ l*\qpO,F +V|^fWtsCaCZuaX8XSƿBOv(텺AfqFWx̍bg<:;/Fo>w;Oi=ț{ȷ_OV)%s-s;ߛX{5coz iZ1[(x勥"Cˍ-ʇfrqݤjDFX S3ll$[͜AO|k<o>55n8ɀiQߔwg Fjw4f|?$ke8;p+gf9%}Y$8韖rjyPkfO\wpf| Ry7ch!sDzx@*|id4ߴԖ'8?3=%/DۮʁW(Ƴ~Fš{5mKM?zV?%kF)W>UuXV[}ݫcu^{QA! _?g?!\(iYٜڰww\[\NАzhce v ?cW7T>wUw(ن bCk,)Ģ(kU 'j@j&Z fˤٯ(0~%&R8V b ǭy$ut ZGyѽF%$lE E[Zn[<6;ʛp3&-XJ )5C(\΃<!xFfр:p[>Ml$F]Or7o]|s[j>kE$+2MlB5sgf̂oO$#֥hW7yڃ\gS/1gyy݃ENNK-MDŽecE[OV'XHm$ҿSW!T_gW\)qD9TqL{s&zjBV<#\'D8}zyJy,a Oޔqr͚piW>iέR[Gw --82(Uv1 +>Z9C/Uzn oC焤~z/%8i$0K0"1#30+ }|R6^e]P9}vy)P|Pf2ڐWja-H&Fr)Bux\ e`ph7;fvo-RI2KWϞ( L;W6#rHqz!i{ֿ̏)>ġyx$`0 Qd~ +- Re@9mPňvOu0kL?uU.,Onƶf~ \'=, 6 ݇d Lu :r4#V^Ì12']YVJں;lJ2Jo]EHaLI/ԊyTǤm2?%5.'SZixN[Ai a|c(B6Pƨ`)*Κ̀%%rc~{-6'd!oИBM]p6PYXʙM +/ua-0|V_.u_~А7xVHAaԒj^H߂:B!)7:W.8 X@)+0ؿp9-(9F}j/cmhL_`B^Z 30+U@]~:! vb{Np +"75H˿=x aMMVMK뺄K_ =*\B1p ӛ;]a NTh]3h­J8~Z}5?$V*`.TY-د[O{~3ww.o`ly$,RWjy+GA.MlY #R! +oӽ'*GOHN.TbC&vZo\1V6510L*TXeVL}dJ@}dpqỚrmlA)uvY`).FFw MlFENcvZ+~Y4[$poo$:#P>|jd)h~Wi{iUSTF"Y/#T?:l&p +JjI  5~9m#_cnQbgg?$~%dRE({BhC Qb{LeޜO#TQz"e&B&%JwkF(ջvzY[6$ }p*xp&Y`30Jqi0Mr;YJ(L (:#DKF xvMپ.-#k"ze_9lYfDq7Jae: 2t/ĕ֘ e{g%v{ +-,o%DSɁZPAbpTy/N:m?Ȥ)>(+5u^CuSl}=P%1}-$Ĵ!xa3?NkGQ*F89BtTVž{'3zYJA& |:^d) Lˊ@+Z{d b4˼q +i9 +NӡCj\o@Mbl'H){R=_T>:#mB"iBAfL6C pca J,`GsSjP06 JpDCh +(XOy6L_gS +]f=k1Iw-8zS ?TnoHV~LO C`Gn ÅnݴEfS_!(dm5dA:PGMضV'rԋO5 +IEpH2_V2D*,Lˏ +{tHygp4Jdj4>00xẐB1!L:HsS<{!8Ta1o2ûώs=U$OͧiRk`EK&/ӉyB|`bGVy^zG<>MDPtSeMWS:/6S - # +sB@.$Ar%aYY!IşGJR;(d{Xx :iL oIV ] eH(m=v^H]=nȬ6A~W`?h_O:XNh^ +m&z$c3#)A\9i.J)-t{ATIaԜW-r-,qM ;U%`{w"ѐ V +)=DJrc% %pjm=Q7a:zh!1r k}Hs_c1lw`J[rY)$І0^]h 5[1Z&p^sEN fvs6 )kooCx:vIz'K rb(i] Qu`&zq ph2PGwW lg~=ꈈ_ҩ8js(m}a7L˧M+)GeZ#tӠ+Gt׫= rݐݽ;vſ^T$J(6os1аjUy~j%X7mT(=˭f7LDի"4ūAR/0*Q%c^F:,ܡ$& L+ + avE\]#qs5۫)TNqC JQF>T1q- z򇷢"*JC#PkjQTmjT<' `(x{5 mx~0KH98'e:p}f)6GXW0)-! +В ?,{/<( khȱ3ts9v`|JNw%W,=чRNɹw&!i.#6fqww,Fq,L}9[g;@j)'H O1z@wêp@uYG +<W *[$/Ƞd/InJV*A鶆-j(bEMJ\ZtDeڦ\~N 9K3-!_0ut:4&Ij`<1%t k7fjC7PKMOK'n 1!o3Ll&y[CRG4730"ޭikL͑WwU(\M: 9Q kP4^Hw4 @ + +252585ca4-61e5-4651-867a-fe8ec8c67fc102230bf0-acd5-40be-833f9364b67806 695.2523701efca59-9f29-471e-8eb4-1267ea4(afb942da-0174-456b-bac4-46354d7e47685791252537834 D!FG! g0h (Ls,) +? ܀ +Aث`5tH<049ZH$,-ݟf~kPփ w: kVrLg(d5V(p 8+`N4gTC`,v@ Ÿ CA҈`IcxZ)V6 +i +5:L#!f ܟmY0`fEF@ Quqnk!j8ĈI=qκAI:G[=G&o)rXhN:$巗eL+EK8n9ߘn% +Ok) `+w:vLS KbZO}q1١UPHI .L'==~Kbw$%>$AN15PwW#g +a1c '&)iubJǏ 7WVV@ MQ߮P^)Lߢ@d~FMCT7dC3Dhxh4~IY(o\Xa悦. bVL'<=3x/yF5 +fˇY>X&1 +Shل,Ŭb`+\A6dez.[UZC" +@,:0WY$Mc͘nV3q`C;$,('m9 Wn:XAt{`IƐ@-[A0] ?uwrIj+"R9":p4+f t]'aLa.`KS2<RdKHV;4g2!R\N܊%s2B=Q56OALPEIWcyˇKs2%2hɁ~H<K%\d,yIBJUjQDbK&JL#Wd Ydvrf$ flX1a6Z<"aG"Zv4= 4?wLVNyjXF>D0CIE%kuǝ#I?WI$'vlvT"n5?/r{=D43<-";pOT!xp&y(n3+^m«n"tAr #Zַ͟8$"e2 +γLzjJ%HX]bU +VPPB4,݋ЁxI> >c:ˢN39ND=*w45AI +0ĵO^{ ;c`D6c ťk&F{JKk8-iP ˗5p ,M:pnCݤpk]R~i$0E0E\FDDDDDDDDDD {\2l@v~Px#0(Rd%⃁Xh>>Ɩ5w'|6ޟ/+oVFv#PJ6١߭v!֏oE_ _.)G4'g[oXhDQ8EҖTԲo?*io$sFxܷ;sBfoƦMJAZ'Uz6i:a7hiv[zћ^ ?|v._Z6u9=H);373isO[;etnHY25#%>^l1iQt~ 'w}^ߥ^ PJ8 0+:x+'Xo÷V/kcslm7v_?%?NaXt(*u(S(CQ PL(ڌY@RB$HJ!(%($EI +K݊jl m Hjw(΄BQ%bjwPov=rO(ww75%6үNX=Zk -B8 3'}2;Eں(mgmMAK];J4ʟ~-!vPZک4RڎOv􎄔{ݫoמleN9M4@#+fq!ii26ùY@dY q@e5.dNY $($- Vk%;ᬖlkxŻ$YYw +WT+{Y@ " ˏ1xg +@ Y@24"%\yPDz'_곧˞>]Vu)|=nZc\W62N(Si{/%Y7*Nvg?˳ji_8t:e>;JZ;}FRSoRRC .(B)oRVYZfziOO{Ojksޡeii8i++|^fP:-|4 B[JӏA6tt36Ҧ>26ʕ>͏GhDGK>O:sعm}ܳǏgᓗ'> +۩QXrΌo _7鄏B&eIJ+|>ZV^ig\J.}eW0뺰?+m& +ކRzwQdž i)8h:F)Di?ۏ]oeY'7{X}2OmBrDr:|^yZ +;|yBzCc Y4Pu݉36Hv],Kݦ$5N U7, R6vO(ԍ:7}jwwv<+2-\^O(, , , , , , PF"w/{3B7飗|'ggB~8hnI8t)pƟOcPD7>k_B +c%TSgO%%5tfne7ʞPDvB{6qFn8CֆJi=2N.#Cɞi TIkGݛ#WメRJ]Y};}<>>W>NK{L,#[*K'GZ2Rۯ6:anwlnM:;q\FetG9t"DxVz .2`KL2N"KEfBP2 82+Ł#[I;'<~v]`u]Quȼ E{.oBysDۺ*N>X⮐ e^vU$D̄RU >P2̄]t>L(qLL} ]]L~2 +Q~MتEYX]yf28\&2"*z4ik w8#eVǃ4Vt^#.^Lor_&2yؙ޿{58fTYHȮa܄BA*JIJ#s|3j7"iuĝD TYۦ`}|mZm&YtX|iwJSzoOԥGnPRngNء[ UγS:UTߺdw34[8ZHk۞PJRLžhG~ E'*nJJz)۰?62՛<3}+*[l^:~z >|_{GY~?g(ؒN У˷C:tz:|YlwŦFmn}~Q>o3ro?9KHosj;:*HSON:,, X[RmznvOg*k}b7v3iџImcwӟ7z%HD[e} FV6+䢢cHDYՉD  m$\Tt\eUqӵb6d]$YaUVe*V: Vi+v\E= 3]X'c36/Ӳw36VvQ(tXۼ.l&SkxBodeɪ3=L&Ӆ:Y]vŒ鱫MMCJoӎEx<IXL$AFe(r4RXo֨""gLZ4Ie'RR↉8rMeȦXX%L".6oFC 4 BFFFWH&dx!iL܆$YצyYLFMUB\\5!k;mNk*]q3I׎"q]:)6KJ#*$*,L%QL$TaAMI$.dEBڃFH"i#B4bH .#mD*$H%QfEnmĹ&& L&4aWY?V$Pk  q"JZǝDUWUXTqWlU *.VuBյUQY , dQNQ^;AL iOZìNgT;eJvXzV2EE%.$]$#YԼۮ (ː`u\wҤŬ&tV  :߾~iE#5uH!om_Wj=V:62誸<fu.uPɢˮʹY4spXBOWV*LFI0SI=ӅH9k3U`ё,~ `'U! LUaa*UJQ\EfuYH* \qe f36]ҺNxt$YL&*4Dª{eLd weUȄa$>VVa]uY]Wa Jkdm(mcҶ·"dUSq:zsŖ)Յ־rX]RZ*mZͱV wOkܖE֩RQFВnaTI(YZlߎn[VCJWh$!Dt4vuuxh17 ;yt٥u,L$iٮ=#l=1i]6\(г +Ӹ6NnƆdyI+iYh{n]YBmݟrotm#˪{7c]kd: dzם1iN#YE=ө>;QfL.긋2P83okN Mڒ}+o7rկߝZkJٻln}߾>So)Oz[[kK9ϯz\O3r_f{B[qyݮaqQyJ< vH aqxb XX& Sx hc=h`PL.m@`4P&!TpcPl2h!_!Ra0'j +"bp'  @Hse,I!0tHAv]^R5 mhІ;}C $/b iw 0 BX\`s8 a +ES a VNWD +.TB> @v%<2DlaT6C5Fo ?Śb1;k#$)!19HSi:h$R@Q _b`h b2ppR!0b  -`3 + +X rDQ e">: #@ = + +XGF#8$$ }%̦a1E wETx:-.:|H l[NDA.,Je7F.i%)`P0*Lp > X&f)`,8o@%4a!4Xm!\n|,JƕQ am&QcbX!I!(QI 2$qe"*Èa@ + €$0l5!(A&j@7N¬.8˄Q0Az,Nl eBda"͡2CfP2## p0X6yꇴL( D040nZ-@6$E2PڂcD.8 ^@nGY&K`X&TX.NH28Ȑ @8,Ld80HDeBYОGfC-'L iAX.* R`L(̚a .,ױ@ +2#dR0py,)HgT ldN +I t ac" n`RIt:`"(ib9 cl>61- ci2Ã1 .4F +q|.`XSx@Qaj !M +/`#4Ow2 X0Hll0@_CL( b4;)P2\T .]4,` \ 3 +H2\Ρ\9AT,@T,ɁCEV2@T98TE$і Es(Y aJ;\60 +D Q OEC `ё-M+(0 +EqmY&Pl$P(aJ(.HO$p˄B ?袻3 T24*Pg*: 0  2xAB^fQ(\&2`h4 .$0K}x@Q *,Ш.~AgaxxX`ΣG64IA)8`llXDi0 esNpTw$?Q&S)eDAAe08m>stream +x70x% P(8Lll2PC(tL(:LaJP6̀`)څ8 A&-q%(> #p1!K*È60΄B&0XFȪ6#d^ěP: Gw"@U)Բs%RD0(bE:elZ0N>2"HC! (b!35t WM#>y0 +;Avrd%@!-믐7}䧤YuJ] K&4ru+#sׄ +$) ]D4S8:tMYQ@UrĖjT%VXF +NLD\ WDxR q +?s/Ü?yG)gfҼ9')/},0'ۜMH{M鄭6(%[8X$E%YR(;/4S@:KlSˇSՒh+~14*Nb6ßKjQ4v 'zR`e"?DZ@l ϐMdc#D0T 1Bnshǥ H%p1.5KYmم qTnMa\צ cSp a:sW1AP`tESsE{4|R] + @0##kQQrdI0Sl{ B箼z( .Ռ^W%Hhd%hJ2pYNT!<6m 3 -S ZnT8?ڬl Z;\ldAle(QdRϤl,}3Ro+C!/D}@z0, +e>R; Lx,/_+E_tNV4?B^- &/2>:ޜ-*$c1l( +|½aqú<6Fd 49e{i^,5#/Is+Q ܘ>=lFR@J\lQŭ؜˗ (B +Ez'VKSHY!UP ?@Z=HkI.Xx`A8&PA&aC}P*%+/Lp8r_W[kVq#|}:q4@Q6ؠ'~@rQ>0_cTEFgsfL8eR{y"MRxrD=)dm'?쳹(&wu.'C{st0.D7';yȝ]şYؑ}~>ɧp'/x@PkiYZ(Ah)4ۤ_\5]{7s4v'x5WHT8xղICbJDL`Ch@ -4`y@pOcg j +%rx#NլU)!ť52U`iXTP7雦^JAͦ|kLz>\?ir~dѪ0)wR.'-*y;QT &?ޟm̶L#"i'ōquyduL9ρ#[RUihDd\;|."bJ۱E3]g³iDA;q S>Q(#}56"??R:"йJ@ (f X#GdOӾeO6-̱[ tu=lm +@艙Ԫ/Vr9ynHLv-/)oԅ\f~C%p;ҰQ'XjUEO"{Q jO3x|:OQt*-!^t4!ȂpXR0,2v}[]Bor,]+:4MJ pҀիVzov)ت +(OKvIrY$crpȺYBưYl?<$W;gsRyX>䣦V Qԗ;n$emqs❾I4<~T}=! ha 0m6$4{;Lqsp:/BcIz[^\8A/j>u.S^ C[Óyh4Hbr Mu{5ak$SLGOK]tUF +w:m*y6'I\a{QsrEG`m/tK{Z:؋>j7#Tܱ +X@`ąhZ LeOæUqԅA]MiҦ6b[b +@}Ra不4_[T$7=I_‼9#婇J7=1Q -,ܻg8~ +w#11T~1 WdT~tt0C.:4:e z&?;̄МkGU7 %cc)1ӿd&.ƌi<Ϣh$ +prţbN9ύVL50~Dy һϏJXm [l=3;Z#B4~qM7PjGct.Bd/]du6|[j,/}\4{BƾQ@H"TI}k2zi_M$b(a[iIa6 +1q *BprsPHHaN7`Ibdh*@ˬykد/b73+Iu9߳#F֡%ğri@XX % +QLY H=Ȝ%rSK XWP@OnsZ3c@ġx: QDndeZ+ +Hk*%Ֆ*N[n)|:)+`sN +7@ Rogv\ fA3ٶvwa]y YXy90?IZSڤ ʕ.-χV}#Sz/A3p(2Bq߰Tv ,=|R$;Kc)7JAm%0H;I i۰V տf!@QҾ,Vx'/%ڜzr {F{eFK~tUS4TxmryQW7=JdW2}p;/ ΫָFjxz.(v7h^ryĮ¢ԔQmX +B.e@@1L1Qj&C]$';_֘y!LH4a pUڟvotE"x#22Q40۪qZH)Y/K"7jѠ7,!y{PSd# +>1$IARBl%w M̛*߇wl_wNmB0$/;Ba(/n|kK`9W㍾%?BDN'8 <;e঵ɇF'o>K`W@V&u"GS-m aF'4h-r`!Zk+DdKw.*FR!xKTK㠼'OssX~6SPM6W|GaQ yj8ݢK,&X+$eC/^he5.?IqOvpj?R{:`%>ēX3ߵX&gСq!]itM]qfքpq?!fM0 AkJL+ lNZUΏX`hۜ$~p*(!W*zO) v{'Zvw,,! aWzF0,?y:jcʌ:Uch\L+F&59+Zg2614Z +kxk}j_+Z)WLUlY,NvӤikiq"ڧo D=~EլR}'dIML}.+u+]z#ygxz,p|e[--Ș_!rn (43\3i=ʙlctȗm2!/1A&˅|>%F(SWž^EӗnQ!ٽȇrtOX_8beGDن́kJD60׀ʹ금c۟acP4#;ni\>5A*,"ɝd^&N DNAtDr@bB>! Ģwm%R%αltDiNӗҏQ2ͷ1IrQn߂PU< 4&V1XQ/Z_\G + RKZ2 ܇k_NppNTlVr-&Fe,B8jd6,0..@ˇWꔶZIL>eǍ$Vw&# mǫ▌08[= L`\]51Ię+&CbI~Hȷ3`8Depa +#Jgl!'S'e`;#66D*/YɨM';*4G=2HYަ`ւj7_SCL'beH`5XwZl(0<.PF5jh[ XĹѶQk%L.P\u\>[dtWĶݟi@Aʝ;D8vKO~`CahqÍAYɉp8)߿r%&"vJ,#omv$dW 7!-@)RH4@Ly]eJiBm[ܗV7N rJ/Q~ ʜT\9nX=^h$W4NQQ֊2An4(vx$C+N!AkI$)؍tTIx2MTaԣ@y(cb1 Y] ҙ2`ZoL? + v`M<8EKxi i=!*1!A`퓋B5ݘ8xrl)bD?qgw$U[$;蒖f/hxFDLl?T) l< Zr!ϡ,-L$2bV&z KyR\E'\ [檇X}T֥͜ .8Lؤ"Rŧ馸;DH24]7=ÐӌMڕذ{eY*#Nnth ɺ\]| 2V m"3BcQG)GWBs[q ;=.h5^ރTP!P͋FY^)M Е9d11!Pdi|@2IduRM7~Kf--%1S='{Zzח^AF/.HDذ\՟{uxAʈك cLIީ;P/ڤx9,-z9-Zc P,_ܙ /\=憄 \M 6vDG>؃JtME RR k3đy/X$)}Go'mJQ,croqπd_#h[xo[g~-RPh}I^u"^t&J p* +w$+:B,JѫPwTȫ w" ICBr-Y,ڠ#F{Yp1&%ƳYe?-=1mƔKs,"4xX&Ӄs0@ -'\6#+a?ʟOUS7s&k4kCGnV">ykh8 7n8wr3`xB]c;5B,br + tRŀ~htA-jEi eBguE:红8%oPHFvwJnjDd!I}W(\΄tHh +% PUO帖޿/8&g ƽ<КA +F mR FܑءB$XheoY$] +NN}0p1H % KB ;E0-nA-vxZ/Nkpke5=\EQ0_JGѕ)70:ѲdfTq&82VW2l∳&^,R;WwU8\X,.2µ02g +0X{>-P|9 qath? ClMcIڀpOPD9m; %l3MK[DSJ#oaVDŽB[3`ӊ*ןk|n| + +tv˄ьeZXCwDGإ mgK5)\r})fܧEcU_s_~G~i9!HsI +$/f1 Lԡ{e{}c:D?=.) +)>ꈽ1 +QzXjt`ZֹVI `y(ĆJڭƘՎɓKB<̀Z(CcB ,[f1Q@~<`.mA: +ENh*DΡ_`gE-pz' _"k[V&l +xU3 3\K.S@m+? h@/[B$`ᲽN5r$%-TW`["#>cW=-gp&^rzO{vro)>Y$8GaD?O'sLH;uF2U58\m"&$'E6Z6R ˍyt`4T'nn1 G/,DÖӦK 4!Q\Do@2V}s7'!jL[DY,9Qe^,C10:yQw㧿l.X[!5@i…c`Ɛ1Au%?7{O^{8LK]'g$ ߀lHRN*1P;ضTڼXwpên>s >dG=ӹXTpyN)̙<^B6/2/ʞ9b[av^jm3Wro"h>ݴb5.BdknwKv\_Dv<`!ۮAu*3 j= ohSH cT~1QP.F轳2$aĖٶ6 +}BCVqChj#ElV(MX"m,NSzwgq)UET3Cِ/N! ,LKVfVKhL & 9.]8@*vv>ڂ/'lҚ,| R6(:id~Wd3 r7@2–>vn<5?Yc0`oLPcq|7WwTMq,]MVoam?5|/w9I^㝨R"{/QT ZW dmB6$m9*A(TJ$*Ya6#!1nȬ!Yw]R0Vv=98Qi%ǚ禤036 < Қˢt. 0ip8d0R(eɏΠ(,Tm!R 8.3B2&UT6{?hoUb.]@86¡Mb=; +1"|[O6V U0SH ?S,'傽)Du 례n͆Z.? D-̛s $&q{&+W fێ2+V &ahp@FREžt$k@bWw>Bh{MnO j;Tq{C+\{3sx:j7֖#\ޠ"3,g@;/4;/2` +Ck!ɸmnE+<"钵x%C6;}!(޷GO>LBUՈ\@;-X1Eoi'@ .Sz޲gZ2sd{P\GHE44'^":ȇWuekUo;3gOuʱ3{+ngd#+)KjSgݕmIKR%E.ٗKz㿆lH#:(,CzVa@tF~9Gw+k0 d}Ĝ+gbEȅxh Hs1]$eг[sYV;Y–܎(lBt y+ 9e_%>Ȫ ֲñubߘOj|?T>i@{]b .ޠHb-"U\Mqf6.&H# `MHD*]㨐'~Z}Ǣ+qVW7[cVv#. mb5tB舛T0m]uYv$Jt;cuQlwbIPF&S}"J#*<(ehZXmw{%25(S65s0&[\ri[:t.DQx!q i.!&3yo2T!W{d씃5Y3zBz,թ0|V&bR䌁P:~A1fT0_8¬<8@dFCuf5ɞA!.D"7o`qTң +=1fA5 Sjufj%v +(4HLȩSd=B~Mc\:vn&"Jmb. QD RV4hRصK,ܿ%P4lB1ToڿxR\ȴߦ.DvooWyسm\>}SaShnmK EX)hܱ =B/!z%/g$A=2{JIav guMgs{P9!CfBL&/Y0id ?-hA",i16zgsJ5j-#)-* zFS.y&cI=Z.00SAZړ,i}r,m1gm֦T]HoH!~bې$D0-X2]*_ +P̓ 5%5XdU6C ]:FlGO=)u $3͜>ZگG{O9E# ݄׮t'c̾U#Wj\}byC~[Σ3 j6g^$J0CJEO.e:bIlGnyRj^\fA˴D2l36{vhT)e$?&8cZk`PT ۈPR'Pmm\V5]6(ؗ8vBϗg[يoXx79)ݬbv@ Ρ!}xA6h )EEe2rv`YwhU7],Г^ZovLx;93,X+ =, :WDp2Jb0Grjj* 7`!}h\*ZѳlFS:A'ؙUU!U$=PZ7$[geq~EIcchI&gj1e)r)m9ZG:Jl^0D`%})3 a͂[r7iZ2aO4/Dĉ32YI"Q[?n(r6OD#ނwAs9]v́}|)zucB&(ٻ4 n/Cmι)Fi +TAUzD})3OG0{.Y(fwln:SJ,}krTkH6!rBꭵ4_$gma*/E&XW5 (YvoJ0lxuxZIjrU[noS!i pҏ|\Ҕ A 1K+˿hjR`4S\j]r=K!!b8Xm$Xl| >Kջ*ee7쾥g"1)2I7`So ^RW4]m˺-+d p-deX=X9&_fr߉?Z1ߗc4l~ SRDzHfOV|F$!l!,h?Ei%@&y6GEIeo +S +҅q2)~':5 i'84*ovȱ:a#׭!6ni]/FĽZZM"}.ۯ,ݠf|IjQ(POYҮ@],ןx0CYybIFݩFf+&IRqs;V%\KgfCpzRK׾~:ʴ)fHzE2J L/vJ`Yՙx t^qNtU!Eb֓Dk˚0jZӷ T yeMJ " [C>BdAȪ[?.1@9>VVb}RFp]Q_WuE^vxOz0T@PI5*ϛ4kU#rDki_psY+H>pL|V0ℙ!' -7p5ci5Q) 9p54!rr ;b˪ޤ p{9Ė) Q5 kUY|m3ۃ&J1#[֟W|SN6FoT:}Ga<ʇSĀu$1\gp}­*xs!]eb4Pz5]4 C x!nʱgK3DH R-c6%ѹ,.ڼ1[ +lKeJ2@w:Z_MgO ^N൧t鴖_o⽎kCyћ7/hw!_J#5V53Θ,,9_ұo@sr(aN_ Eg.ƌқg9SFEGox_'KV ~PPHSҬ۱^s2FiX*Z3*'UVɐ_.0t +0dm$f ĚvZCv) =Q^I~/OxUҜW&6 ScQ-O_Qdm0 6>څ-sr6\ٯ_#ʠǻ5n䯠pD]xqI}`DB iXǸ9ƻ"Tژ ˒*cVV!%-q9BƁ-DUx&Y%-=&TpYoH% Es'SDRsZURp=j!&y2x"[Jgqmqpiҟ'12ff"h]* +$K`[σb@%hQ}ii<_j^I?r.'  er8!)vA]dӕݵ9th`9:cpaHR@u!pjIH|'\h8n5U75~lA)4?vW#aPJiWI ,(u(,lz9 X<ȝ ? mhFTc>mn|fZD*m|¬\f2YpqiX|rVm'g8<|P}Bj06tQt`@J&q cK+ +oB4"g8Nz< 0s@łb^:jah,L&ixcC ^M B>)EP0Pk8ͼpMlCpk"<ƪc+CjSO5pÛJ_ 5*cFܨ񟹇ī\dD {DC4C+2B&AD>C >/=H=oxSu;˩}NϜQTQ8f{!wBUtEqr!YHt^/+Dk8a2Yg@/M2DT˭$L`NgFq i_O'W^tA7YQ9d?:giK$ .ӳmCp㐰TʇS:bx93+B؄,Q$$z6nO/ Jv_栅/w;wmhCȫepi E.M}4+?­t|Ane4XeYb^)?fdڐbx8qODn/ xZg/ 8_jDYٙ0ؑJFّ;i/ y/NsZJZ$/Oۣ7p's)CJؤR;obrBd ّ6صR9vZ +]JF=Pc7 +hƎ*݊AcgsLJzܵG_Lh~/ vIcӸoV&IVk'(9if:C"vo,C r/ Jm+kcE@k!陴t|ǙaVij a]>%Kk뢈N+HU֌GBj3Yig>̋{+{57H[@hlv'hOY> sͼ5Hh2n-Z]l գSEX6cݗ3-7n2]dMҟoܪ0|I\*3f]P^7lƷɅzRn%o60?sM0 qKMiy KCBꃋ5[[^@C<k\Ѓ TPh%t`Pk-IG A]J.|Dϗ<~XKi!4~xD7[PU=(sdԤ: ^Ihpmn6l1ĺ%9:#YݎFjc՝fQ@Ə `c׀`½ w7Vt#kY–ɘxUKx%҂jauf>Ɩ"9YH<]6[raeF`Ѭ<=a ^vd`i2/Xf9($>Zj6m60l8i.O8R(%N´VZPUZYn(\EIk@@RBP>Y"n @ih0T-hux;sxeX`.W3J/ px/ `kK^˫fؕ8&#pT60ƸބجtvlV©.(ȉn+u[ݡl-k"t2Fk"VĚ +G?>0/=j""+̖3 IJXV!پD˰yf + LJvj|@4-4(| I={!tYK*-?4+ ~;}>>C CG.{߁)L5QX jC>h \i(nfgƙqOt7l~~TZ_,[ 6@ +m^+ޜB03F!GٔeSʦ(~쳽8[I{oYmL1$<ncrWh;n$P~LM~T$X00ihl|)XnE+B<A 6dQ= CITGPtf:}a9 ZFolLPxAN1 F` Z̋J( A)EMũQaS|Lۺ6v`~3S|͞`ˋ-c*ȬTB-{K /y$=kNͥ<~bmC谕"uw姫HUSD%̆^Đ+b6 +">UXk!g+u L jE+Ԃ!i$Bg(~ :& AN[7g$fנ#<0[2$ĭ O" +澮dh3i%~H)B=gUhhϊ9 io/ y)Rg9ڛ 뵗C-?۩p GB#yy$|E@+:V&E@ )OYJF-=+K̽=m N;Wo9h8lAYb_OKCIժ^@px0 _&|%] <+ܝ>F" Xq ,mnTws l>@TJ,1Ǖև g׌!GeNZ916b"gA^@0^~aD~kCI!?[F>3+g2ΝV\le1񍑤h +L7h~iRڢk>NߐVAdNBq_T 1/]}@sH@T.JjΙ,޽)lK.5̿MXh?Z[h•Mu[(=DшUn9< +v+aNkyaEn•#Qɖ`P0N_h\\'G=7?{p@n|e\YcI BiӪ8\ ~./¾+OLVf6Q֦\RHy([ H%Kȸ590%CM-[ &B- ָP *wcj:,T>cW0)Go f7_XIe,?F=T:fbҴCJ+r~q_%GVE(ID+±bH:j0(+=8m{A@6!j2E|6B"_]]f X)]X+G(_ln1+ tyn~%gE17S o11|']%s<3r{Ľ@dJ< ̋+ut-bw7^r+w +v\ ۑ]q}Bl;_)C^7QhHeFuDeΔF8Rp*oMq rxB\Yf7!#Չ#aw) @M;-nԘ,Uұ͚hUQѝT򽹪uI(a c%ҔİcSt劦s/ 8aOk .rRKWhG$Eޒ7W\MJodȈXb& n* W $z(1A&C$K|6FC%u{?go f#B7`3gײ x$\Qjs +ф֐6ҳKZ? sdxJ/ns}=İ%Lx̓1p#E7A\ @uXbi jO P/WW܀N:L"uo؛a* qSָX'܈$ r30mRLE&3c/M{8gAdI4\~Ctd_iE 棎F7^@3LrY-t%TبaO d{oۈmuY L&a(Zm ĭ6mIc_VBEZ), s4$lFRHtOu:Ôu:z8V&˓VKk :8Y2#VD l~ ĭ.['Sm/O֍ T!$p@LDch6+Oy%515$g\n-;B= KpPB`~6L1O\ 0|;/ x\v1X3+\R>p^r`U2 `GGWIxX8p#/ ?td*SH5vG~eT񉁳jNp*%NXę$ofW 7ټmrAJ_YxL Q | ׿*ћ`ZsxVTyAGႌ^@2Ԑ8d`iLPuV zXD"]TE ũKy$Sbs!k(Qث~m]$̓H +hȐ99|dwBNr@ +)vUNnK9ɟoI*d):u(Q8 sd I5dRRS/-\IxfU`cp=Z<vƐ%e- }0k3˃1glҕu12@afht1dX!7,Y7'_7'tdR=5 HSC T6r+ '^{ +.#굜+5n B1݋xlx3k4h: +3"?Qҕ=L0^>'`VlHULz(CbZ6^H^{ ͣ#5O˗'kӜ/-jD$_?k/ ݗ9vˮԠ?n#JA!Bayɤ wL|UJ wkGba Q,~5{'a_ׯ@*l _kRԛe~mr> ,T&\~CPX&(:l*qjVWƴPId}_Jg~%'{´AosdΙ[  HP2Za7r#Z{A)<2SHlju6]Ke^ -H)n `\BBfpb08DEp!.'E L{d2tad= qq(at8 /d:0z||{<91PuPUivA4BtT]ȹGAH2_JfPu*8l#+H..rBV?`&܅@={+@VBMr%=3ڛ be,q?a)h;G )n/r„80K ۊkxO߁sͼ`Qw7}Vּ{B~׎{G*LKnj;&Fa .VE$\6־Δwfqx=%ۣ7TE^^*H+!w4[DHKBgqNkKjby?NDI9YllaIepk4/}yL +$=QNptԼ9j 1u.hI*5TJ.(E@'>`h2L_38=㔣^Fn+ :kjKNJ#P^g?)jd=,/MB^7l_o}5^JC^~MP{`Ur~9(8<@5pru2ǵ+h`ŷ5*0N*2ʣTJxoث3lK.2ˇ<sm6evEJC͹6WX!GNcG"GVF^g?l|Nkp/ ۱v5轍xJ< g'73}ڼӱ|HQv4_ u $RŸ9 G.,9׉vZ^zɒn{0  +>;JVzAQe_4bm ~XliLP{c,~ Wm * CM@;/L*.3&<ِm (䂡AR8-ſ"w=gj¡D4|uc +A!Kwb2--P5!?N[X _+%9mLK&irTDO:ؿ ŢUibVyx\_ Wɹ!Wzo=:Ʈ^J6Wi\A+GO$s(~ be_’/RXd|LjI]_a6}"fonܞe+1{e},ֆ[]~(~%$XrŸ)g:ÜXS"!ٛq^k ;T➘FEчkVpepZ%eA~GC+#%T{ LZ햞% }f$&_;Le#++J,0hE +y F{3n>CIUCMֆ^3|bSOaޜ iXpj>LE jmsY4N[rWO) ܟ +hp)fmSkLfi[̈<ҌMEdD|}H,=N֞ 7RU^@n•'Wy +|=Mح@+f2Q9\̉՛}`gR£6VOzb)ļÀ8~L x_m;7<{V&LF\BB+?,ߣSBE%ImiCh4Ϣ'"W-v:\r2k`4;Ri5 6-CLv6kQ7 }튆%+rQMyVNR4auFYxֲu6+mCn^HxdV:}JAf׀6hfzA+pWząg4$(zGX6VMIyAn4Ֆ8b-E:dh;U +R.1ΜMR/a $-|hBJ'LaRiȨOCy]9,PtK:ѓJ{!SrH+rF| +WZ=*@m*EyA[W/ XՇɩa/CgW<Լfڻnd{ Ks2:yՆ[Mtp؈z3`C@lrw (m8d䷶+H1|V""΍`8]{[Z,FTH9-9vݐMkMvBmBG#Tv7֎pIm"X%pʤKSҰ[r8$vnf\rpfЕągI4GXl*÷]tH]vҒ) 7u}8'9gSd8*B%~XyH!Xl0 bK#[PzX/l4iy;?vI#rO)0! $0z6ZcRnHcRq K-{S7,qxK +ɴ䋫{ڗKK1Z4CZ2zė~ė{R+4IvP"uȞ"ʈh[$Ӑr9IMu97 /[Cv2LA~oݙ5%BV\=A`5BҎ}x 2 +)vm'l >  R'uJ1nD/ 0$ \f ga4p')r ٍRNtۈ'd_ 6gx D)TzBD7Fn2kiBE@ܧm9* ^B' )̳]$fR4\ih; 1{p|r!gP0TSjSTd䌍892 ^qsvCT:mήp#~J2<$Vzޘq`fI)r9V0Ti3/ ȹxy ӠrWy@`%|-EZi3dUTL+:Qc! kɃsGHLݥ 6 +x9#[8Ѹ~wJ;0Oʔ_Zt!j +&AC0G wOjm LđE#;r}}W5= E;Aё,xӉyI9%(:VZ{R/ 挟h[t J 2߅R>$M"cI (lȽLM[;Fڳ7W +o`㽀h0GPʿKr5Xi7&J \' +-v'I„#!W&VcYn+cP6$X$?IgS+sN)FoY"Wnte-7l8F`7ֶ+ Sݵ zڭpB@D=8abg pzK~ԖCB۔ +}4ƚ"6!(4VeHhiODmtWk 3I¿4? ӂo7@6U430^|ցw'8+ jZ#j04^Ť)E֕hmWʔ \2\T]Hʺ2|Pv?6 .l9Qcsre +9]6+} F{(勵W`:1?d^hd9F % +)3Wθl 2"b`g1s|%J? +JGBc-MN1mY$ qi(*K̿T@8I=#v5JZ-(- fr/Ġ +%D/ڍaEw81@`,_]>-ɘZ?XW4)h6U||&6LC$M$N3ΐp}aÙ#F$QlFZViA_Δ'ܒH•W"lvhE@vN-# qD>hx( sO{0>0[0 8'k7rN͔EgR_R|\|Ccd}*NFhQ4Vq,)$^%Pag"/u>`{538YN}>Dᠠ "dX38 5P0K}i7 .8/i;ȏٓ&hE{I}EBu-#[½G6֖o>cKkk`v$6zšeU /q.+]me'0ѥ9%ք)PPxHStE'lK⚶V~R+PAۮ$P +f, +՞࠭%cAWtu{vYڔ5K)I!-2d߳Bڨd<+ľfkV֧UkjrR?* /ӄDR&cCDպYj\:^f\8XG4 *e$3#xA7*Tį Ax>0Ȝhp)uY5w`y5QXY"U.e\b>a*˲iI_V4y_^<f%d$JVL[`aqV<]ٹ*t6N@V_ai5Y'U(/kXcxk8.3ec>lKXc6bMEjW +¥Pj#TkS7>.Uas6} +JU{l 8X{GD)?\SS2_XTO_+XRr.^ē]*sJ_xKg&*ՌBfgh@,2JK5 .TլzxfoT`P𫓧R8~h ǟT"K=F_,{W}A)ue*u,Z5i.6/9A0ꨣ:®4έRQٕͰxEغni)o[y~T}vZz +s4'< 15}_",Ի0CG+ ),Գ'Γ:kT g'MŤ́cU:2)[)?K>Gp PZ7om7`aILVدzS|lhk*pU-#+SvZ 0j)u)}|V SvLӌBDvBBM:ڻ#~YמH{Wbg)V:åJfPSƌ@Yr! gH rkTwj2x'dJߋ l4FZ`J~RA*c)'!`Jy@HMaٶ~!Cb)`h 0BѨ6WpCe V;boXbJquJZIkG\$0V "8 Q;;:ۛZM%oM6gf\6q:Z#@n@ تV+W5Yhr5#`e5WjuU)!1WrƤVkx"!J ;tXCv:E@:} 3n +g!ʠu7?XO[}XYůJMVĕHM j*l[nZ+RV|r+­b?b,#NSfcj+}O,* vj= 2QY-XG`%]WЯZqU' +'oZ9FA{R"\ROUkm\u+_iD\{sEHy&L\22՛Χ"UxU/E*Q'R=Phҳ F~^ ++ >F^-r q% G:*㪜\W`@VF얫+{s0w`&\;8(`h9m).q_"HAL&?&? +%DNx +4& +UXoH)UIf%q WX8SM\͔:?6HL1CnK//-Z}j6U55jJseMyЄUЏݏkЌGzzD< 7*Ho9e(7e׆; 6`S-Cȓ5o7L!6@ TQQ` Mki(u)S[a^NaK) ?O2+Mug>&90{.ɪ"#&Q(jc 1BصZh#}YS}7o&jbv~ ݮ,J~wDcPUq'u-J еww^|)I>?1lV[kNxR`!Um /SP#cH*3[o3 dw] cUJ@ p*cYҚϪ +%R*k,3*R]CUIN~/|,]9" +IMR@I P1#RUq$\䚾!fB} JF}U |۪D+Ut/U\JYjl#GV|,UZ@մ+zV3=C93d;p+RxsryYFS d>.YK5 h.  Jm ⾜tPQh+:s؀c#XbB={ύ$3917+Yg0ee*=!H6 + +*L|qWMix:T_QqB[]8{%ýucO"Pz&cGHB:k&M,Gv$cY 2`UEڪ8 kT~OMMtJz=BUlO5*\U_wNf@*Zi:B;AWJC־$YB:EY t0\nFLh6R|8`}..ta&0mG6#)$9~ǰբ%`bTC@5wT%y T߃eeoVA5,J ,i7PMՅ +P]UpNPUDAuM +MPk?Zڣ ːTOi&Ėj[\HK xĘҏ˭9IgٵdGU?ڵu~:=>r1"quO1֌QAkpqT|-5+JGQViRVEETg 1XRs>:ۑ>00)E7ZpSYp t}MpS}}[DF`wA^cPK]~(3ML|xX$7;LpW1[5P#{"U[D`BwJU*h ;3k*Eo#̷*aa&V\uJDH9koEW$i_=h3\DB5.JW_3`⯔ 8X2T1^p!PJl %|ypNJ.` XQ!:!xeުOR0 +O~TަId+bzb,p~ +> h5̞<=u>LQW:j}Ƥ.E;\zEGy;doЌZYeGMŴ3ל~<dD<ؓÎ} 5}^ "{Q  Gr{(fB2/=g+D(8OO*n*/y?-" +cVf3vc+$*kL0%15pSd /q?KU${zC w10%iuc+[k\BpdW>hڦ;ۨY.+0[/ +3KirQuZ𑊠%q!9KlȨ% `o7Z9X<ۙ Yh#\O Mxq%Azڶ uM xI8\H3WZ z4L tQ%jD#S~W}}OBQ]X VIQkzUF+4}5as CҮ9"z"LcNaiP-M Qa 7) B.&L\m5j=uWAA(SRՂ0`"RTm^S&bݾƚ>8wW kJMީgm/sW +_y"̹Ñd#5+QqGl]U^{4!jb +2X!3kdib'\)HD%4'*K090T&d9ۥGs3 2̸]\Q?XĂV6\w(EڕD+K8OR:Efİ9EoErW>Y {xH4N1 g/bB#!.2 '<* ji/RJ#Wy`OiR0t &\\Dž&B&t~vTzbmIN˃jrIIL([[2+UgKsA?lH j} 99PLIc !Ojҳ9 Eͪᜲ^R:z닸UaIbA)P̀kǏw.F5HdmAaR( FsjEZVIL0P*vcjh*ɾ/K.5<0NJ~V~ !ǃH:!v q [փo n&af!,7՘N +244U4q2TFm^'BMq^ǹ!S(tYë4>]"`r] QiH^xM!l>4 x&H2JB29YOC_ٮ!kcր[>,5Asґ02+LBoCZm4D]>147ؗ{N>2W.Zk)Xr9 Wp>JZg&ߟ{3m  Ujn*!΄^5.$~C7ur`c^t-|՜jȑ*i@[ +aBe39Ǎ<<.$\9,n=?{z*&e^oeP, FZ`0"ma#O˚#P 1YiP?A|d jI' .W#g7̩dǖZ\M壈|uݭ:g!Pz^@|ͣɏ'Ul|񝟒-:G\؊ H }oemAlY,˦x[Qͯ)h^ĀɘpVYm2=-gc}f…QFn}BG`v̦֊b{oT]y +{e4g{ڏuF;[IFCCZi^Рn/c}ep fU.a-(ݗAZ&!@ӫ%=x+J)&09^dIi]fFSZFE -o&!G4ڑ]i/S:ThUƄ{MձV[ +0dFtQCˌaH)v+PU֮raɲ~¶Mc^Gy՚H>@>iˣN'( +M k:5ϖ5/ msKyLhVH.9;D?+J:=8I\NJۑ4+ʀZDI6F j *Ō@p?.6H,6#M Ȭ5y͵9x = 1FqC&R_6<̷Uy Ċ QK?U ''*HLꚐZ{ɩTX ZC&[cC޼1x EgmLgaQ -]/*LYo؈0M|P[˔.L=<&HOXViE_oR|^VOg㓙ǫ}@ .JYoQIFA^JTfHv7b[;`"(+uZ-nPJR T #Mio [$Y g1GK$iXj-y  P.$>eYrdġ0bbHIqc5P휽c#'E϶&upߨU&^e⟘ 3[<#U䲨ʉS"5.͂XPY%Joj׼* +٩VYZNUMd᠂nE*N&R')ZV2tnd[sx^wW%i`x_EQV q-nnuWqwW~) H[oYTށ x}ŬĻiON4['tAQ8-g.}T"){-6nOWQ 2*q98c]% z@]0Ųb BN'VObԿ/iJU)>}awe +UxUEȊyVFƅ nʫY'9JZl<_&%ۆ=I8䯾7/TF!WWr0g%`@<S@ˆ?ޖnr.Õf pJD| q +vw+< *ķ2N"Zx{HH jdZl㫋PD)ְ^% ڝCV~'MwCĂIIB|FDs,vDzzEGvG[0gp_w + l@mHZأfʛ?9΅# K|ttW2ajӽkhF+3tS $"tùc5ԒE/Tzb'(-@4*ĝ9eo 7Ͳ_o/s jUA\)VzicX%SݤHx6/O=VW0lSx?ha{GTHxD6WImX.|\72[TZE.$W ԰o·T9T2'bw׫8tc;>?P -  =te607\nÙ]%5$f̉ yCTcb$Z(5 [b + [*^o-Y?;R2uG2+z@9 u|- גh}0>]gwG{ؔPj].kvD^Y,:bmp|?̢߱mj  VJ +&+a_Ui8|H9es +n~]O o3BwSN0O19dL,P?4df={-ׇn[Nodw `F=)&'UU:IPq9xۜN>2#7U +Ovѐ܊Nú"ɜ>SK/94 w-@}8»T)(+7 Ӕ2hkx'p\94.D@g}]^$6y܊+r9_%c;eso%<%/+wA{pq!-}g| \aɱ8.yfX lUe @*DS@,ZgZ!/5\yp( iڌ6wzQ5PCP+m2=p) _τ:4OeINuɏ}Nq@ 8\5d 5',tNBI:VhB? OoQI^':Gˈ5xBc#C*Hj3Bi dua[縠?ECc'{U%A&)%3fhE6HZ󒢐+4%EJg6d¼K*b>YlGpH{IYyYR>Kjãi1pIN>+K`Z؎dh@].cjbp&%iл2oL@F&N.\m4]Nd&4G%» BS}r,(.5 4Xri>Û gat\_"X G5cB!HeX֤&0njA[}am|,;6jM'"0*ҭ.Fcp*\hG6;Yr=9:"<AI"ƕh~mtӾ]k%;҇KqHl7(7M)qID0_2%lꕢX6]F4 }4Lbiqk&xy.!^8شt'g!sb' p!ugk@`ؿACI"uNB$tK+$f ,dqi6m!1b VSp?>Y%Zrh'TZB p_y8;u W}Ӈ8ɼr׼ԿԷxi0ևTBx49_˖tAۡ^w[YdG`\VȮ"eH^TjUL=O5īcy—J"8\ڻ(2 ^hJrQ0ÍV$ үqU?t-,i*,1C .]='kbdtPx + +kG) T3o瓊D7ˡf;arWMAR͒2r:RjWP"PH;*{e̮BXƢG@ 9"lѺ8d `Ήp0'H AzLIA`VgpU`h kF]j0qPvTѭBy`R +Kxi|GwuA]Y^jyk3_ ^?9Q*~jyY],Bd"xەeڌg7PCj߅9Eeb R9l#UxFtGQSu4Af(msPTߝ!fjUX +p_Z9s8UynFDNX &j` lLF#H$8;8ysY]d>@ -$'"K3SWMXOv0V)?k@IӼi0>VS.xc]y}!ܵ_ +--~a -YQP^!jGT8LѤowI>I^[E-qrDAѾOeqFw@DouɎCkIbAQNl,qq[|cާ `i %A RwxOy\eGe+h{x&QA1D]C{m'EWGҡ&ybbP3K&\Ӈ>+eyDp%Vveehfؙ PiKRГٲKby0C9dC#&(" K!K ]OŦUق ^ǭp+~ o&'QXx"ʖOi~YW^K$t7}P Ȯpa~)b;/c·6ƫsnp烘*lb +`C z9mցRmLz/\ @ľI?QB!1 b0E +ܐd*(W㢝27˸0ȿ}>߉Y `N(5E 3V\Cj C%?}* >8$_X@ p[LWc[y;2q*MoT?)c:QqASd-,kT Om_(ԀQǔCDؿ\*}Xq8LڹP1p^Mx7_,OR^̰eqڷ, +Q`ENqBC9a|f/U~fzT#$v7ZS +QeT&4w FR,{>We}bتBZTTiHJ- `qib(m1@0/M(%rM~1Pja}qeovi?[nޖ!1/$  oVAo"]ede\+oτF\%h{eR u5y T&df̬8; l.JX}O6$2 ?VȰxgQ1!2x!mK4Nbtԯ J}-y%`i NA ~M9]d4,q@Hʳxh]$9IrqèI&f0MM0Q)dv"X(x 6xT Tmnϥ@ Y#Dy#q ?yх+f@Rycfbر$J99Ji[0V|N(r$L smV歸6/+Kk" =3UM-$Zs8munƻYM`:ĵ5wL۰(.YMR]SrOs+='Nr+;q*K43ƽ,eLxKgE~Gz/4w|v5&*^C EΧl=;ŃH sr{,NȂVҲ0 +CaPjU<PgK= 7Bc# iӱ .KmQ @ȁ"OXXo|P!d8rs0h(F1Oa 9ҟJTn/s𺋹*"Sy օ}zNj)04_fXGS-r;ea-4 92yv&QѧSZB ͫbqZB@YQX_rkGՅjԬLo\B>`xC@F;M̠9ߥFxsR[Zw^.TE18%S*kIE65|`M,5&x43XUz}3\ IOF̽Ɣ ^UlvDq۰ZAV`ǭ_{_=֖X7 n%vzc0@J̋SKWzgk4.C.i y4 @> FD;{gFêU0,b7iSh} ]ȍؗQ2;f,iu&^bb4aη%xrXP,F% S Mh#OW!|j5I/D$%7PJԚfAd;\zTI(J $."'<do]n\3claf|0t6P̅Ta! d,Zee>cz@M:eF!(!3R"װ<84 -"6JDÝ) +qSf'psHZFqL#5@B<$RFWCxr +PڦFAiۨRf`L +BJDwpωtJ*J>OPРMV-Q.Trmʳ]T~b2eԟ A @yRD6,|!gkBC%"IM턉@BB+ERvQy**2O1@SIe +jMtGWƉU +$f(IHC^ ZGԮͫ}6 +S;6 '@4. JÀʏ25T!Pe^49ˆHm|#SB2>YF45ȃ3ڃ ְa |AU}Ä!T!ьQTs&X+R'c*Zөfq<>9ucIdTB/9b)u#Zm9TSn5P2]GZ)a8dyy 91%"%dR +ST f!a<`fh|6A0@e~+66.nj0jRJ%TG؄L8탩t!B\> 2eJB>: *8Ew.4鄬iYTᐝ&B(qȪg8bW":+ ,.=@ϫu0B^!m4  鈘)}[ $;(mAz05HG)SuԶX @LFJhx4h  Q RR+M Wƥ&3T33 ߓ8+J1 ӥ{\dj]0΁9tBAA죀+>tkMÀn8@]-t%e08%"qp1U^BX(Ox&O9T>FQ+DAh1T²qQM(QהB(I56!ǎCW+# r  t@`D$!~@T!!YU 2ޠd"dh\@ +``h#BYX|2^UAq=fޛ%`˅d.6 )eAI%"9/vRp,͠CͣiiY*l>+@h$N@B"B ZB! Z|@8pZ\Z# JCEK(uq,DA/&2)1e$]պ)P deEi!2G1C9 +,l:F$<4sB08LD$#zh]\BQ(̻:GJ(4KX yJDrP"Ѧ15x} mvbL!OScB4!M[aN:c9^f2T|\3h>P`@56h /#`FB'>&|6 (X0QJDP :!TF|P ja&(/{2BȖNgeJ.@TpR VDHEDh& uV'> 4F6Π + +, |Ѩ@4BD$,^ܴ]fhCc0T +A^DaVċ +2Vk:-Wwp# F'1D$aq0LXL#@B#sMP~1eQF@k[0xƉ/eRP"JD@HRD" 0DK'2Œ6L#W'U@2 +6:i4aI8)h8!8~RnP0ȴ TtT<[\ȉS!aQM``]@h  JD!d>U +^ [ QMUaQJYǀjVUM<*@F\pRs0nZb/,aC(@,*( +d&5'-Gf/д05mXtMb*|/b6̄sK|icjy`:oфGh|TᐙD^T  k y}.3m2)hM$PSIn *N5` MDJY4ϼ08rbH0%y$A`SƮ`Z|2vA*s?ؽ`y4=iV*1:#>}ƤY-1x^tRN6zYectKc][tJo浴}VsJL~]^޲d9ٶe9}~uY%&ispQ]3v]sau= VtƷF>AYkK}\6ֿ2JM&S{/v:12_)F/Klbݵ?SQ e`hc,!,.8l9'n:yZz="ӻb,)yN[1*g0Q r1\FQN0g_xNY=i'ekJ/|nu{cA1ˑOƪ^ Dž4lp+K|.W͆cv*)vhu;j)WlvD9z|H6[QKRNߴVv6ɔη'F&o+:ߥe<[j/Wvu{{=gul]19oSsoA\´V Hl@mޓŞ=Ņ6H m6+bAH,봵)S_˲J}mVTv^{ 'k>ANov3R6",?iʖ[1Zv*-Vۻk/-#1-# ًM) }S9cRtSz ů{2ruт o7"$UR.ieZd(-#Ʒ]wxݗ1x-6%LW>5>'on[S [󕘽{b9+tbӽږy%vUֲOg8ݰІsX;.)pw'׭ciYuz}M'Rc߯u^+Sy%ө}Rj|:_Y-wki?۞؝l^)m>V~gzvtjׁ2zweXoVӯ^߯j?HSY^нzAN 6O(Gol7=ڽG׽Z9^wlJ1Lol߲{{uwi8D *up!\K$B,4D>P@ 0 Ă4 ,o>8D,3&VC1pLԸ~")29yH&FdM06-}C|׌Dʉ76a/qa˩qg%T +yk#wzFo ^{4:/f.F6!iߪlx|5ILVĹ!c +i&MA-p^Hx}Ѩ`0_4c0$W%DPkW6޿"]kFn_%,ogwr]$㍂mF*_=9`ِ7c+?~1dwUÚaXwW2{xLÎ(qCš߬V%K`&=eH/ >8"Kw\n[YB%Rp.̰ gV=$祕>]n\ok$m_2zC>(}-E zˬ7BPߜxpx"8Xzѐ3,ZrQZ70yy̗E'Gp6|O2՝n0ͻ%T(lɾfF!Ī$θWyi"ٌAbiyk#v-GKjJLN1QQ8ecVVx3Z NVn"rk")$ JeWLj,,m,~ + DW5B{ jRRz$?_v-kA_bX \~hQhcĊx2 m${RflH +F̈u&-KJJO;+6<܀nĪ$" +8PPdw$w-`w]YӤ5МwP0L<% YCiu Wen=<=pMֹw ƒf5CqDvZ&@-jUacTް!Wމy2.*%r y/sLo>柁$0698.e +x8_\ +ⶣΞaOOU#Kj:m$Ԃ'pkN&2/g[(pS}n<Өj#Cr#yI78y1 r"BArOA#F&C뢲D.ؼ5=l pJ'vΣzZAa%5(l=;$19ѿwIm\Hv'%=!:\'_`٢܂tBi" ‹gyCG0av:t-Ǐ L5Ju]8̦SøО'Q9WEw-3 PDY/3j=J LY;(Xλ҅&==% Ku7nBJN|&+UeKn]I (4OVڮ((k/x5ƗԑSEErG;ƶ43D,Vku;@3X[U r]Ԏ4+JKO* k{ԐhQILWFs{1bW1/7\-Hb8 +fPFwV_}'*t!p EtP@S鍵0JQ+KH4j**bY僛mcPg +*禟qVhls +Ҝ#G\a8o; z66ŠLՒH7t-C;b*ZU$"EV{Z4ʒ.WqQ\LIw∡j &^L4zep)~6Q TC6X!d@BXGꓠ^:}b%OIin/&VK*ٝdΛs*WB!QdC368@dB@}&u Ms!&})9"ocû5 хJ0 YOc^m*xg{i#癠@@_Dg$E$<z(W=FP#t;*I dpg%b#kBahq=Zy0>&JvBlЊĶ'T[;ȟAOsTER2φ⴪a%MBJ͉g񫼥tP<:ƮF-fSRHkV$~nްOF5tt_!װTc +C6-\[ Rw~lk2/^93BT:"YAd:B7P A!ƑBZG|K581-ӏH9@ ǘ&1U,864%WyM0ɒ%YD)+ןܚ`! /46N,⍍ Fu}[⌰N?syE #3HDgOjXCIEn lnzZ/V*CDeE-j6z#(r6u|"܆H1l; GW"W9@zȰ)bYu^²uM)?b +jĈ% z,8o>uFۓj # d1Āv{Grd3_qC, m_ Gr1'5n(*@Z1>2= Pme o*|@V#|96 +h*U`-smHKY2Ѹ4ѯXfDԁETt|Z_hBSWF`I*ѫMIgMz"Bn +G 5[Om)X4m\R0„ +.eֶ7҉H}S7oelUO{L5@R/e"7 Gg'oelz]pg[o_Ш3#΅$\dtDEEC5%\X`A.W+rA5iە{&" F^s}w`9twVBMEbOLe߫(ݾ@#u-Wy h(<)Q]ό:Hg2289ڸySКC{jot`RCk\^]/b_&$Z/ծ6C"7Sk*nsha$vP@Ilk"TR1hVju{&H^%aQ;_T+%I~NU4 2O+!iz']Qw ϙJG:r-2h5yA +EZwKW$T(_kOX'j"Ҭ5>]X;?Sazqyk;+- DΞ ԸtizŜ cX^83c=xA,Xö|X4l"4X;_`'}w<6$¬ThR3}}X[؇A82 +b YIzCZX# mގb2#!Nűvc>u52ScB-1ⴏMsAScm>DGCk`UsX6`[C]ͱ8kz {V bmڿ9֮>XO͙lk w(cmBZ5|}xXP=E4uW\?`J8ړޫ.N9y^i;;y1* 'K~84%d2Q 6<(@ї' ̝݀OZrji_O0eh|b'S5E3>'HA&<'p>ۅʜbV9j`0HZ[uYY |>JUaMNR! Xg(BX''5FSL'|!?Yl07$zRE``rkCk9d7= _ 5<J:.{wX^$"=MHJg\Ҷ>SCF&Jgxtu@ͣiOLeƲi"H\F,9􈎊 |rR#Fq$R;= (gF)+'+_ǃ$#=X0Lj4P~PUɷlńFj/$.ƺZd*d @7;&][FxX"&>zPnRiRK*VA3 f-(X!S?IUakS*] pȼ +S4|" ,E!T鄆Ih0B]IK11F&qBPByx7=.q @fAlaen1)[ +wE ~K'M<@&X݉\qqQqҭ(Xs݊,a'Xwb&ڼ/)N\ )v% i'{ʓ}+AH;V +Zg0`=Gu'͓e gOZm5է: (eHW1WO F &DBW?s/TpFyІs5uJ=a7|gj/( !-OyOc{MKu!$㥠|鞖ZެdV6{B6P<:[Ɇ@Ǣ`l/D:WF ZS>OU[¬؞qg,7gHc*}d9s=O3/ +ZzX WT,6Ws!>³ld N j[\oeXPou-;c?Bߵ^i=m_BeSR 1d:U!eT!L;E1Sl3v`|_:rOf~" $]"*@M^>p!c">T V 3@(@$OXR$q{kOMR:x`DQDv7 SKòK}p6_ SҳFHJpGa|> e2'sgw  %jODqOuPӹ +]R9{z k**YTn0[AYy d28l=HUVU[_BTʰ +OP +w= #v9wq*02. S;XܸA>J_ vCNID`(-} +*s/C)kR;VgY 4RԜu`Ϊ<BC;e$q"W>i2q<; _uP" W ̫ CA T+#θ^7Y=Ȗ;\||d h[c.El8? z0h wF2hn5 +A篜}(v?%xaTM풯X@_pΡAD{֣m*B*Al"U SZnNaL*1'XkďHMC]a~h)[%~BGYzjѨM}>[uLsٻ. iw:e9 -QYJ.݁dTW>p?C*'W&#lpJ|?Ed^]g);U|*>cw^h˙sge.J-ØUԏ+%vqv1w~]Ty_4\k|dZZTfP8rҎ%khhj=n2@Uxal +m+գ\&<".t Hhrs /xb4aUЅJf𧪶F":m߅㓥~ÖD}қ2 繲a xf#8׀N3h2MשJ JȬ@=+1sWU4# R%ذv`*~⭪uD8@l>iA4(~ʹHz׬ %*L ;@LZ@O@A0?[絬WD^=v/ AW1X_`A\>R;`ǫqo܀ir;,Xkk:F,t! 47boYh -Z"zœ \jiG+ +A[݄U +Gn8mMf%M!0ӁB/"\MwGܵ{ʙw55܍1Xu宛H vIF%w_ CWvf.0t',Zڕ@rP-qieys) +P_+ANMJdb?H^u n{h^dZ_W7 VZ`B 0*Cg%DK+BE6l`axÈAie;3Cu[֓&0%Y@mjv8Uc`ت+Y 4RHV{L:[LW7ut聣gR/,5# ]֙mr5}WYS% +[e=ɷSbV"\)#VD%+BoqjUK%54ѾVo:r\(ըcXh!U s'vjVo1>u($Haײ5RibY۶dpJeMyS@Im?q/Pp3 }g]KZ6AI+85! YdBGk>)L0Y]{ګ&B@Azem~>1ܫ±GVJ4_uchCI½кEzU,l`-dܫнy×_\귯ZA?Ye*ܚ?z>lU;BA"! N]lwZC+mm^\aZP@Voc>'kk37QzBCdڮP<]a^E-,k-*ֶ+?Dr,*SMp]S cWњw " yJw9$-}T+cZq(5[=K[@o^}ނ»Nr mgM:D%9=;tjok5IC/7_* 9[|2"&dvٓ]U-%LE~R7DZ=6} +JN1i@. ݰV{ݮglE\`SR+M Y5or,??v);JJ|=W/Mu?|]q?~T :al@N^v/AۉbFeX` M +¸f]48't!t2\_JV{$P=4fFƖ8eH-dLJB.hC"ars( 'uMG~!£& TurD^!\NB|!rb-hwWf;a +sIoAK> ?  u7 @¤@u`t;WnD]ɖݸRqVHȵsѰeˮNIf瀔Yekv x]M(mjk>Gɶ(Ryi"WZx5/׬vӟv \CR yٞN(z9/ȅ󒭼@hu@+@xa7 [?x+*,:Q. D'A +<6^s +7TaW,{ZrblN67>ʑ+lɵGv@n9TMOBfz hHq36Uŗo~UԇN7`7vI./ZU[ Ȉb}]lּg`ܯ2 g1.7YOE[ +ܱ+0XJ:LqН4f{g/ +ox qώag$:jn礂Q9ލhylzAٶW fZ]PuLuԸBi&IJ3ȃmJ`+e wj?Kpetp]z،g7P25t%q +w/< Vl [s}Yw|Yjy:U1g I^ ^'Tj5,nnm*[C`i|뇺5RTI-S;3[m;T,[_a+rŧ^0Ne]"7y,_̲|Ua8äm45}:.ҟj=Վ$kjB$$ZcNmtk9D +Q>I')C$kO:ԳBpVk|ӇEDCd+Z]M;n2Y|Sr(qvwE$ڥ"N[<=ŠF3 uΒ1a*Z'dBt!fp2%J"=ya:eqAЬ+kORDZT- te| 37bz)4FB?¬l!/:֤ yNҌn]AòYPG,&E(2ώPV{-!Xc +l,m d*ei[~K,X?п" M0Na$/6Q2J #J?,'x}Ӕ*U0ל2FޛB2ku.8E/>>llkpI;6 rkp(AcެfeS?{m e# H1 nRUꢎ?_ukܝ8 ȞNt lO]C5d,?$1^56l":%_ELbjx6,"v¼bg#i)89{C"TG,]AzBvBK#ǗT@sT$( y +L!Hs^y2U*9C\nXM:x +kVZP6 >R>P=6%ϼ?ZzP^Iw,EO:}(L1kNk'j?F#'ڢsOG͜j0ns}Ђ̿;$ $VW+w*< X}|Sqh.Hx +Y"n:-UDbҠǵ[5|-1 Ki8.07*{0luwO_/AqؕTI)Hލh \N=nEhE֞B`GN^( $4gN'Wv܃+nnV%HPřӈɦB]L1:E4! z o$Rtg/ ΢k &r+#_TRYeC +@:kIŢe+ kg n#etQ/RN^[`MN)jr6 Dp>JH (ZP +Hs\e{הN\ $GR3;h6*IMZZ;C_OL@> iVײWQuz`U(-Nj;z2Z^ EeMnAFFT~ƒaI2x4^cD H)JҒupOV/3=xw8 k +Ekpj#YqKoKB5wyIs)S%\t;Z缴IvԒtF33mY* $Q%Jp%5O"H N7ji|8@nj: 3ehEZ(&4'wr"; +IKO(8?G\yCG4Y֨J5+ݍa}4Zt濛ϖʔTqqz$THLn`"p4VEJ0A, +QoNYOͬ_jҟgyQ:<~)?*ⷁ5\2 }o,{SOy}&+|2GvHs;Ck` .~)8 Po=D欌@b 9U5[xE)죺0\t,ABVJcATcV!` 9oz vZm"$ ],@vS&b1Yl +s~0a8y%ʠ>[ PS`&ې~Vᬘ:dtei%3QhS$W.l54\cd#'-MpgɎмV|m-yfx'{H#xD3mH6wS +H޶FJҔ~a#RaG!S߻nfa +endstream endobj 65 0 obj [/Indexed/DeviceRGB 255 71 0 R] endobj 71 0 obj <>stream +8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> +endstream endobj 62 0 obj <>/Font<>/ProcSet[/PDF/Text]>>/Subtype/Form>>stream +BT +0 0 0 rg +/GS0 gs +/T1_0 1 Tf +0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 12 0 0 -12 -103.0967 -61.2783 Tm +[(T)7 (his is an A)11.9 (dobe\256 I)-10 (llustr)5.1 (a)4 (t)5.9 (or\256 F)25.9 (ile tha)4 (t w)4 (as)]TJ +0 -1.2 Td +[(sa)8 (v)10 (ed without PDF C)11 (on)4 (t)6 (en)4 (t)3 (.)]TJ +0 -1.2 Td +[(T)71 (o P)5 (lac)6 (e or open this \037le in other)]TJ +0 -1.2 Td +[(applica)4 (tions)10.9 (, it should be r)10 (e)-28 (-sa)8 (v)10 (ed fr)10 (om)]TJ +0 -1.2 Td +[(A)12 (dobe I)-10.1 (llustr)5 (a)4 (t)6 (or with the ")3 (C)3.1 (r)9.9 (ea)4 (t)6 (e PDF)]TJ +0 -1.2 Td +[(C)11 (ompa)4 (tible F)26 (ile" option tur)-4 (ned on. )41 (T)7 (his)]TJ +0 -1.2 Td +[(option is in the I)-10 (llustr)5 (a)4 (t)6 (or Na)4 (tiv)10 (e F)31 (or)-4 (ma)4.1 (t)]TJ +0 -1.2 Td +[(Options dialog bo)14 (x, which appears when)]TJ +0 -1.2 Td +[(sa)8 (ving an A)12 (dobe I)-10 (llustr)5 (a)4 (t)6.1 (or \037le using the)]TJ +0 -1.2 Td +[(S)-3 (a)8 (v)10 (e A)6 (s c)6.1 (ommand)10 (.)]TJ +ET + +endstream endobj 60 0 obj <> endobj 73 0 obj <> endobj 74 0 obj <> endobj 75 0 obj <>stream +H|TkPYۖLw|3 *OQaEWAEDC$D(%@UP`PQT(O*ߌiLv?kV:{:8&p6lMX7+vi`M·kTQIq +5_XA9?C8e|՗c0E}m^(܏Rs]}z9]gϞ=j~ʄM\%$D&$4*,Urj 6æ}al0w[da!$vb/ vc' + ok_#6b@@G4$^(N#Ǔ,;d䤭mm퐝c\4ً2CqNNd r1%ݤ[F}EBLCֈBuǯ1#I ~-; +QB+ы\˙iIEfz9dI(#8`Oa/>WyQ{VUXQԃ:et8÷H @Mw#Xh"eS@T a*G +vBU6H̳'gpEZd}VF{0K֦WpAtҜ*CkKZdJKu>H^]m ={M\*#ZeW*޴L=Ŗt 3 wkFɽVWFɖjMqO8[wCx(HJolCV PmPxo ZH>+WdWO_=^|<8KUSLڰURj8Rhi>SZ>6bOddEu; ?8ꡱS}:!vCTZ(mACV6'v2~8e{e|Bԡq n ᦍ5sGGE5w~Iv -)16:AwzA51{Øowӽ> ]0y: ah&~LoQwZ]J=ajJ-ix#jMKIa~ 4yds [sk*2.>H.'35#6U3}㯷~x|.ǘm0(SZ;,h)x 8#@Og|H6IH3a泛XCxOĸM\v+rR =$P<.oG!=|r@z>.>x8غ76PV,.kPHpqT3>\$6u|!.h.OO+qPQ ++*ew\z~*wT;2(H5_2WQm00!Czs!zbC ~/Xh!z-POfcWfUá208`1qil!)iMn:%$ pϴH߂#6,~cuڸeJgreBh嵒op3[PC\ycP Cl&Qy/.C 7|LWy C8nMMgwD[y[V9/UGt4 fosaluS&aeT,A?, a[E:6EEt +qNJttB3l&ܷ\{f$&;slpl+"4+B?y%8 2"fD8}ptX2UEUS $B;,Cnh t'sO>.At79Hڡq~s1huM55'WWCZ*Wx1K +endstream endobj 72 0 obj <> endobj 76 0 obj <> endobj xref +0 77 +0000000004 65535 f +0000000016 00000 n +0000000076 00000 n +0000059690 00000 n +0000000005 00000 f +0000000007 00000 f +0000059741 00000 n +0000000008 00000 f +0000000009 00000 f +0000000010 00000 f +0000000011 00000 f +0000000012 00000 f +0000000013 00000 f +0000000014 00000 f +0000000015 00000 f +0000000016 00000 f +0000000017 00000 f +0000000018 00000 f +0000000019 00000 f +0000000020 00000 f +0000000021 00000 f +0000000022 00000 f +0000000023 00000 f +0000000024 00000 f +0000000025 00000 f +0000000026 00000 f +0000000027 00000 f +0000000028 00000 f +0000000029 00000 f +0000000030 00000 f +0000000031 00000 f +0000000032 00000 f +0000000033 00000 f +0000000034 00000 f +0000000035 00000 f +0000000036 00000 f +0000000037 00000 f +0000000038 00000 f +0000000039 00000 f +0000000040 00000 f +0000000041 00000 f +0000000042 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000259239 00000 n +0000060090 00000 n +0000258090 00000 n +0000060300 00000 n +0000060496 00000 n +0000257528 00000 n +0000060570 00000 n +0000060766 00000 n +0000062514 00000 n +0000128103 00000 n +0000193692 00000 n +0000257576 00000 n +0000263405 00000 n +0000259754 00000 n +0000259838 00000 n +0000260220 00000 n +0000263518 00000 n +trailer +<]>> +startxref +263738 +%%EOF diff --git a/content/GraphicsIntro/Marbles-Swatch.ai b/content/GraphicsIntro/Marbles-Swatch.ai new file mode 100644 index 0000000..8488659 --- /dev/null +++ b/content/GraphicsIntro/Marbles-Swatch.ai @@ -0,0 +1,1254 @@ +%PDF-1.6 % +1 0 obj <> endobj 2 0 obj <>stream + + + + + application/vnd.adobe.illustrator + + + Marbles-Swatch + + + Adobe Illustrator 28.0 (Windows) + 2023-11-02T15:23:12+01:00 + 2023-11-02T15:23:12Z + 2023-11-02T15:23:12Z + + + + 172 + 256 + JPEG + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAACsAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9E+cvNU3lyztLiLS7nVD dXAtitsrMIi0bsskvBZHEfJApYKaVr2xVT0XzfNqehXmpyabPYyWlvFP6FwrryaWyiuyql0jrwMv ptQfaU9DsASwyS4Yk9wYhP5zdPPcGgM9ydSksjepdh6QqjSMvARV40/c/F8O3w13auY3HLm83+cz mPi8W11SJ84efZrPQb/V5BNHa6TbNNcQW7ei8kkcfN+EjFCV3om+/Xc0zb6bHE4zOQtzc+rnOUYw PDxAfam+leYrtIzbeq1wsyo1rOayFQ0qRsS/xVFJQylj7eAzG7WrBjM4t/ZupnkuMuYQtl5vgl8w 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 kX3mNILwXNxGxasfGRo6MEUkqfTpt12rvmxwEcfk6zRzvNLwhUeH8fahP0drw83LereoPKw04xPp 5ANbkyVEg2+z6fUk50nCeL+jTicY4Kr18XN6vopuTpFkbrl9YMEfqF68yeI3ev7X83vmknXEa5PV Yr4RfOkbkWbsVdirsVdirsVdirsVdirsVQDaDpLXYujbL6gqSlP3ZYkHmU+yXFPtUrg4RzavAhxc XCOJXvdOsr1Al1CsoXdCdmUnurCjL9BycZEcmU8cZCpC11rZ2lrD6FtCkUXUooABJ6k+JPcnASTz TGIiKApTh0vT4ZRLHAqsv2O6p48FPwpXvxAymOCETYiAWSnqOh6TqLI17apM6bLIRRwP5eS0bj7d MmYg823HmnD6SQrrY2K2n1NbeIWnHj9WCL6fHw4U40yQ25MOI3d7qFhoek2EjSWlqkUrChkAq3H+ UMakL7DbJSmTzLKeac/qJK288v6JeXIubqyiln25Oyj46Cg59npTblWmY2TTY5nilEE+5MM84igS AiriytLiAQTwpJCKcUIFBToV8COxGXU0TiJCiLW2en2VmrC2iWMvTm+5dqdOTmrNSu1TiAAiGOMB URSHOgaQb1bz6sglFTQD4C5IPqFPs8xTZqVyzxJVV7I8GHFxULTDINjsVdirsVdirsVdirsVdirs VdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsV dirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd irsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdi rsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir sVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirs VdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsV dirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd irsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirEPzJ g/MaWx0//At9Z2eoLdhrqO+p6c8IjYmLkYpytaVqoB264qwS9k/5ymtpdKtYv0Ldvdib9IXcS/ur cqaR8ufpMap8Q4qfi9tsVZfpj/mlbaja3F7Al7bM15FqNoJoI0DzX8X1W4gPAv6UFj6lVLcmNARy +LFUXq9p+YY83QT6fdo/l55bTlakRKY1Xn9bLkqHZHj+z8RIk4U+HlirMMVdirsVdirsVdirsVdi rsVdirsVdirsVdirsVdirsVdiryzUTPfXemy3SLIl0jvdyOgZjIEVo4wxNVX7RoBT4aexOgiJ5fV 0eRyZpSnIyJ4r+SG+rXkHlK5vre3C6ib5knY28DGC1W4K148ioX0KPz+I0NT7aTtXNKesMJ7QHIc vxb1XZGGBEP6RFscFrctd6kRbQt6Vup04ABmkkZX5NJy478goAr713233ZWOJBlzkHuZ46sACgNm S/lTf+YbeDTor+2YXlzE51Gyi9MKrAFhIFDKinZV696GppmXqYegE/U6ftHEPBjKQqb1D67c/wDL BP8A8FB/1VzAdE767c/8sE//AAUH/VXFXfXbn/lgn/4KD/qrirvrtz/ywT/8FB/1VxV3125/5YJ/ +Cg/6q4q767c/wDLBP8A8FB/1VxV3125/wCWCf8A4KD/AKq4q767c/8ALBP/AMFB/wBVcVRQJIBI oT2PUfdirsVdirsVdirsVdirsVdirsVSi+8raXeTiRg8as5kuIo2KrIdzXY1Q8zy5JQk9a4AKPEO bi5NFinLiI3ah8radAJPSknVpNixkLDj048GBjbbuylvfK9VghnIOQWR15fc24cMcYqOyD/5V75Z EvNYplABEaCaSiE9wa8j/qsSvtlmIeGbjs7MdpZ6A4uSZ6ToGm6UGNqhMsgpJNIxZyPDwUeygZbP LKXMtGbUzyn1G0xytodirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqldXVraW0t1dzJb2 0CmSaeVgkaIoqzMzEBQB1JxVAS+afLkUlskmpW4+thjbv6ilGCRCZvjHwD90wcVO67jFVt55u8qW Vx9WvdZsba4ox9Ka5ijaisVbZmHRlIPyxVEpruiSBimoWzhPtlZozx3I3odtwcVa0zXdH1UyjTru O6MAiaX0zXiJ4xNFX/WjYMPbFV91rGk2lo95dXtvBZxv6UlzLKiRrIH9PgXYhQ3P4aeO2KqFl5m8 u31pb3lpqdtNbXcaTW0qypR0krwZd/2uJ+44q668zeXbWzN5PqdrHajrMZkK9K9QfDfFV+n69o2o zzwWV5HPPbSGGaJT8SuqRynY0JHpzxtUbUYeOKo/FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUBreh 2Os2Zsr71GtW5iSKOR41kWSJ4WSQIQJE4yk8WqK0NKgYqwPVPyO/Km30qcXWnXJsBItzPFFNdzs8 iJ6aOVQySyFa1pvvXtirznUtZ8ojV10nW/yx1dwl/eWWnylp5YJvUZmV4+Sx1c8WaNQD6bEcWqah VLrfQ/IR/R0dh+W2uwQ+rPeal9ba4/agmj4szifk/OGLgF4/G27LQ1VZi2t2x07U7BfLM/mJ9Wi0 631BfUkmguVhtbMhz6cYVBIl0SnFQGCFj/KFWpdc0PVvKmp6c3kPUbfRVu/UvI755bZpWAhhCxlq O7So4t40U02C/Z3CqRxeVvIiyaNLH5Fvr9LazR7BLKa6mlheK8uEWG4LlY+cPAK1SWViQOlcVX2k HkHU9Zh1HWPIt75bhEESz3k0t1ACrWF2000USpGky26WgV5Kcj6gbw5qsn1bQvKXkPzFZ+YtD0KS 5kTSrm5juGlumNLSC1tre0jDh0R5bVDHEG3LhRir2TFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq oXy3zWki2MkUV2R+5knRpYwa/tIrxsdvBhirzD/lVX5gfWnaXztLc2RnjuYrK4jklEbx3McvJZXl eUcki40Vgq1IAoxxVW0vyB+ZyXlqmt+bH1PT7YnmsZe1aVp0ulklPp1krAZbf0l9WnwMdjxIVQV3 +Uv5mLfRy6N5/m023FvFFcqYZLqW4ljtEt2kkkuJpOPJ0LjiKryJ3NMVaufyx/OFp7qKz/MGSC2l /ex3MsT3EokeQsyCMuiKq0DKRtT4AoFWxVPrbyH58/Rem2F75yllbT50upL6GFobm4kFvPG8czCU o0DTSxy+mU/ZK13Uqqll7+Vn5j3GpxPH+Yl9BpYR0lgWIeuecIWqyhwAUl+NfhPg1aYqoH8nfNn1 OeBvM/1qaaKSL65cpO8pZraxhSR29apZZbBpvZn2xVGr+XP5jQ6l61l52e0043kl29iLf1eSyXkt yY/UldyBxm4tUGvEDZdsVXXH5efmbIHMXnyWFxCiQ0tyyrIERGLBpDyBId6nerf5K4qhB+VfnsaV caTL5ra7tJdLmsLWWT1kktbiWC3jFwAsh9UBoZKKzArzO5qRir0WLRIl1w62885u3tFs3txK/wBV 4q5k5rATxD8iRy602xV5pF+Un5ii/S8n8/X00Ed2lwdNV5hC9ujljaszySGjD4eRrUMeQbilFU98 seS/Omnahpk+oauLiK0dGvSJppDOi6aLV0IkH+7LnhKa9PSB3aR8VZ/irsVdirsVdirsVdirsVdi rsVS/WdV+oRIsah7mYkRK32QF+07U7LUbd69uohOfCHF1eqGGHEd0k8ueck1ByGuILyA3Etqbi3B URzxyFDE45PWjjh93WtRCGWzRcTS9omcxCceEnkyvLnauxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kux V2KuxV2KuxV2KuxVK9d0qW9SKWAj6xByCoxorK9OQrvQ/CCD9HeohkhxBwtdpPGhQNEMX8leQLTR lMVpaSafZfWfrUscsrSySTx8V5Dk8lAxiVia7+HxVyEcZuy4mm0OTxBPIR6eVM8y53DsVY1q3niy sbyO3jQSj1DG5LqjSFagpAp+2wbrWg9+4yYaWUhbg5dfCEuHc1zXWPnfT7m7eB09JUYK7+ojmIno J1U/BX2qPHbfGekkBfNGPtHHKVbi+VsjzGc92KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV 2KuxV2KvKNd8o3EWu6RfPFcS3OjmeOzWKIyRzpcRhGNVVuL8E5AVFN67b5tIZ4EAk0Q8/l0uWMpR AsS6oby/+XP1TXtdv7RLz6x5iZDd/WI2ihiCBhVSyJWnqHuT4Yyy442QbJTDT5pmMTGhHq9fRQiK oqQoAFSWO3iTUnNW79RvbxLWNWKl3kbhFGtAWahalTsNlJynUZ44o8UuSpOPMl2sczvbQMkUhj9R Z24s5fiI1/dklwSFP+Vt12zWfyzD+aU0rR+YHEhS5hjjKIJZo0mEksaGvxNHxXYUPQ/KuTx9sY5S oggd60nIIIqNwehzbIdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirqD7umKuxV2KoHU7aZ2iu IVMjw8laMUqyPQnjWg5BkXv0rmB2jpTmx1HmDaQwyHQLYadaWkCXTRaTfG9sZfSl+JxJIWikHCpp 6jrXj4NXlmj/ACeosnh5iiqK07y6tv5i1LWrRLgXmrLGZre4gRY45Eiji5euUEgXhClUWQrWpC8j ko6DPOoGNAdVtmVrbrbWsNuhJWFFjUnqQoAFfuzqAKFISrV/OPl/SrkW95c0kB/fBEkk9MEEjn6a vQ9NjvvXpkZZIjYlycWjy5BxRjYQ/wDysLyly4/W5OQFafVrmtP+RWR8aPe2fydn/mldD5+8pzMi pet8f2XaCdE+ZdowoHuTh8WPeg9n5wL4SyAEEAg1B6HLHDdirsVdirsVdirsVdirsVdirsVdirsV dirsVdirsVdirsVeE+bNJuofMkM989Gsbi4nnRqj1VmqFnUVC0Bbl4DcdRmvyAgm+r1+jlCeOBif p5hjl1oDz6VqOnpep6+oXwv4J6n95Etwk3oV5bjihi2NKHp2yIlvbdLDcTG95Sv7br9CLi0aSbzY muw6j/ohgS2FggapccxwPx8f2wePDlyA38Re1UyMAMnicXpp755atbq10Gxt7oFZo4gCh6oP2UP+ otF+jNjAUBbx2okJZJGPIkplkml2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kqc1tbzt E00ayGB/VhLCvFwCoYe9GOKrWs7RvVDQRn16evVFPOnTnt8X04psrhbW4kWURIJUXgjhRyCfyg9a e2K2k3nHVrvTdNhNq3pzXM4gEtASg9N5CQDUV/d03y/T4xOVFzNBp45clS5PIofPWpHTIryK4uki vdRawt4TcyfDJ9YeIyuQeW7qzcQfDvmb4UKuvJ3I02GhLhG5r7aV9S87anYw63cyXl7JFoNqbidR cOGmpC01BuAuy9u+E4oC9uSZaXBESPD9AtTl/MHUrTXdC0eW6vHudXilnjmFw/CIRKH4kE/H9qg5 YDix2BXNB02ASETH63p3+J7z/B36ToPrvP6vz4/By9b0vU/l+zv4cvh67Zh+CPE4ejqfyg/MeH0v 9rKcx3XuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KoLV9JtdUsza3FVFQ8ciU5I4qAy1BH QkZOEzE2G3DmljlxR5sSX8sQySiW+Qeq5YosHwdTR/thudAu4Ox+/Mn84e4Ox/lef80Kh/LUc+f6 RqxQI5aAEvt+3RwCKk02H66v5yXcF/lefcHRflpHH6QN/VYqhf3C8kB2IjJY8dvGv3bY/nJdwX+V 59wZP+gtO/Q/6J4H6px40r8Va8udf5ufxV8cxuM8XF1dd40uPjv1XaJuJ3jltkUAiaQo1fARu+30 pkGpWxV2KoTUtTgsIQ8gLyOeMUS05Mep67ADuT+ugyMpADdo1GojijxSQGl+Z4LyYQyRrEzs0cci SCWMupIKFqKVaoI6e1a7ZGOQHZx9N2jDLLhog+adZY57sVYzqnnmzs7kQRRLNVjGhaQRmR1NGWJa MXofl92+ZUNLKQvk4GXtCEJcNE1zbsfPFlcXbwSRrEiMEkdZVkaIt9n1lAHD33NPlvjPSSAvmjF2 jCUgKIvkyXMV2CheXkdrGrMC7O3CONaVZqE0FaDoCcpz544o8UuSpSfMkwSVzbxcIWEZkE5KmQnj 6Y/d1L8iFoB1267Zrf5Zh/NKaVU8wkSlLiFIyiCSaNZg80aH9to+I+HY9CfauSx9r45SqiAeq0nA IIqNwehzbIYhr35kafpl6bSGD61IrmIkyCPlKpoUjBDFipBr0AymecA07LB2XkyQErAvl5oB/wA2 7JROxs1EcJ4vI1wgRGJA4yNxorb9BX9WR/MDub/5Gn/Oj5qtv+alnJcJFJYtHVQ8kYlUzKpNOQio KrXxI+VdsfzIQexslbGN9zKb7XtOtNMj1JnMlvOFNv6Yq0vNeShAePVd98yscDM0HW48E5z4APUx U/mnaiORzaJSNxHzFwCnPoUrwrzrT4Qp+/Mn8me8Of8AyTL+dFc35nRKzK1gFMcfqTcp1HpClayf DRV2O9fo64fycu8J/kmf84Nx/mhas1uDZqpnqUUzrycDcmFSo5jjvvT7t8H5OXeEfyTP+dHy82U/ pvTv0T+lfV/0PjXlTevLhxp/Nz+GnjmPwHi4err/AAZcfBXqdqcKTTWCOWA+sE1R2Q/3EvdCpyDU qfoy2/nn/wCkif8A5rxV36Mtv55/+kif/mvFUq1zRXPo3VqJZWhDrJE0kkhKPxJZQ7NuCg2G5Hvt leWJI2dd2lppZYenmGJ+RfIP6IieygkvZLWW8N/c3F4DFIJWKu4jISFj6sqFzToWbfoMrhEk2XD0 umyyyic48Ii9B/Rlt/PP/wBJE/8AzXmQ7136Mtv55/8ApIn/AOa8Vea655Ku49b0q/8ARuJZtE9d bT0ozKk0VwgjYsVDFX4LtUjf23zaY88CASaIdBm0mWMpAC4yQnl78tjaeYNdvrZbsT+YXQ3v1hDH DEEDCqEqnKnqHuf44JZscQSDZkmGmzTMYyFCPV6r+jLb+ef/AKSJ/wDmvNY75CXumem8V1bCWV4g ySRtK8hMb0J4iRiOQZF+ivema/tLSyzY6jzBtIYonl6CLT7Sxjhuymk3v1+xcwy/GxeRzG/wVO0r LUjwbrmj/KZ7J4eYopROm+Xo4PMWo61aJc/XNXWMzW9xAqIkiRRxcvXaMSBeECVQSFagkKWOSjoc 86gY0B1/H9qGUW2jW0FvFCJJyIkVAfXmFeIp0D0GdSBQpDyvzN5F1a31y2uobee6Wzlme1aJGmEk c4KkOwDMsgXuaVPscw54pWa6vTaXX4jCPEeGUP7GP3P5dalNp1/pps74Q3V6NS9YW7EpKtwlz6dO HxLzj9/h28DkeCd3TadTpzEx4/qPF9toiH8vNRuPNUWvGyvlvWhWFbdouEQK815GRkXtIdi4HelQ KPhzqqSdXp+PxOLeuT0rUvKFynlyyt7dmnvLJ/XljEjlHZkcSCNXPEUMtV2GwzaaWYxkW6XT6yMd QckuUr+150vkTUI9PisUs7z07K+/SFtIbeT4pGmafg4CVpycioHSnfNh4uOqvzdqNTgoR4uRv9Kr qHku/votZtpbG+SHXrU290VgflEDC0VVPFlrxb33xOXGb35plqsEhL1fWKU38gXt3reiaxLa3yXm kRywQxrA4jkEqhSzFl+Hp3IwHLjsG+TE6nAZCRlvF6Z/hi8/wd+jKj67z+scOXwcvW9X0/5fs/D4 cvi675h+MPE4ujqfzY/MeJ0v9j//2Q== + + + + default + uuid:65E6390686CF11DBA6E2D887CEACB407 + xmp.did:c765f3ac-1881-344b-850f-cb39f546655d + uuid:0d7d919d-286b-456e-9401-a12695f8c978 + + uuid:152d443f-61e9-4330-bb51-f38a8e360e29 + xmp.did:f18479d1-4e7f-4340-b533-076a69bfb2ae + uuid:65E6390686CF11DBA6E2D887CEACB407 + default + + + + + saved + xmp.iid:14709273-42b8-4844-95f8-dd7dcca7f08e + 2023-05-24T06:57:15+01:00 + Adobe Illustrator 27.5 (Windows) + / + + + saved + xmp.iid:c765f3ac-1881-344b-850f-cb39f546655d + 2023-11-02T15:23:12Z + Adobe Illustrator 28.0 (Windows) + / + + + + Web + Swatches + Adobe Illustrator + 1 + False + False + + 227.366972 + 191.018349 + Pixels + + + + + Default Swatch Group + 0 + + + + White + RGB + PROCESS + 255 + 255 + 255 + + + Black + RGB + PROCESS + 0 + 0 + 0 + + + code keyword + PROCESS + 100.000000 + RGB + 44 + 50 + 200 + + + RGB Red + RGB + PROCESS + 255 + 0 + 0 + + + RGB Yellow + RGB + PROCESS + 255 + 255 + 0 + + + RGB Green + RGB + PROCESS + 0 + 255 + 0 + + + RGB Cyan + RGB + PROCESS + 0 + 255 + 255 + + + RGB Blue + RGB + PROCESS + 0 + 0 + 255 + + + RGB Magenta + RGB + PROCESS + 255 + 0 + 255 + + + R=193 G=39 B=45 + RGB + PROCESS + 193 + 39 + 45 + + + R=237 G=28 B=36 + RGB + PROCESS + 237 + 28 + 36 + + + R=241 G=90 B=36 + RGB + PROCESS + 241 + 90 + 36 + + + R=247 G=147 B=30 + RGB + PROCESS + 247 + 147 + 30 + + + R=251 G=176 B=59 + RGB + PROCESS + 251 + 176 + 59 + + + R=252 G=238 B=33 + RGB + PROCESS + 252 + 238 + 33 + + + R=217 G=224 B=33 + RGB + PROCESS + 217 + 224 + 33 + + + R=140 G=198 B=63 + RGB + PROCESS + 140 + 198 + 63 + + + R=57 G=181 B=74 + RGB + PROCESS + 57 + 181 + 74 + + + R=0 G=146 B=69 + RGB + PROCESS + 0 + 146 + 69 + + + R=0 G=104 B=55 + RGB + PROCESS + 0 + 104 + 55 + + + R=34 G=181 B=115 + RGB + PROCESS + 34 + 181 + 115 + + + R=0 G=169 B=157 + RGB + PROCESS + 0 + 169 + 157 + + + R=41 G=171 B=226 + RGB + PROCESS + 41 + 171 + 226 + + + R=0 G=113 B=188 + RGB + PROCESS + 0 + 113 + 188 + + + R=46 G=49 B=146 + RGB + PROCESS + 46 + 49 + 146 + + + R=27 G=20 B=100 + RGB + PROCESS + 27 + 20 + 100 + + + R=102 G=45 B=145 + RGB + PROCESS + 102 + 45 + 145 + + + R=147 G=39 B=143 + RGB + PROCESS + 147 + 39 + 143 + + + R=158 G=0 B=93 + RGB + PROCESS + 158 + 0 + 93 + + + R=212 G=20 B=90 + RGB + PROCESS + 212 + 20 + 90 + + + R=237 G=30 B=121 + RGB + PROCESS + 237 + 30 + 121 + + + R=199 G=178 B=153 + RGB + PROCESS + 199 + 178 + 153 + + + R=153 G=134 B=117 + RGB + PROCESS + 153 + 134 + 117 + + + R=115 G=99 B=87 + RGB + PROCESS + 115 + 99 + 87 + + + R=83 G=71 B=65 + RGB + PROCESS + 83 + 71 + 65 + + + R=198 G=156 B=109 + RGB + PROCESS + 198 + 156 + 109 + + + R=166 G=124 B=82 + RGB + PROCESS + 166 + 124 + 82 + + + R=140 G=98 B=57 + RGB + PROCESS + 140 + 98 + 57 + + + R=117 G=76 B=36 + RGB + PROCESS + 117 + 76 + 36 + + + R=96 G=56 B=19 + RGB + PROCESS + 96 + 56 + 19 + + + R=66 G=33 B=11 + RGB + PROCESS + 66 + 33 + 11 + + + + + + Grays + 1 + + + + R=0 G=0 B=0 + RGB + PROCESS + 0 + 0 + 0 + + + R=26 G=26 B=26 + RGB + PROCESS + 26 + 26 + 26 + + + R=51 G=51 B=51 + RGB + PROCESS + 51 + 51 + 51 + + + R=77 G=77 B=77 + RGB + PROCESS + 77 + 77 + 77 + + + R=102 G=102 B=102 + RGB + PROCESS + 102 + 102 + 102 + + + R=128 G=128 B=128 + RGB + PROCESS + 128 + 128 + 128 + + + R=153 G=153 B=153 + RGB + PROCESS + 153 + 153 + 153 + + + R=179 G=179 B=179 + RGB + PROCESS + 179 + 179 + 179 + + + R=204 G=204 B=204 + RGB + PROCESS + 204 + 204 + 204 + + + R=230 G=230 B=230 + RGB + PROCESS + 230 + 230 + 230 + + + R=242 G=242 B=242 + RGB + PROCESS + 242 + 242 + 242 + + + + + + Web Color Group + 1 + + + + R=63 G=169 B=245 + RGB + PROCESS + 63 + 169 + 245 + + + R=122 G=201 B=67 + RGB + PROCESS + 122 + 201 + 67 + + + R=255 G=147 B=30 + RGB + PROCESS + 255 + 147 + 30 + + + R=255 G=29 B=37 + RGB + PROCESS + 255 + 29 + 37 + + + R=255 G=123 B=172 + RGB + PROCESS + 255 + 123 + 172 + + + R=189 G=204 B=212 + RGB + PROCESS + 189 + 204 + 212 + + + + + + Marble Colours + 1 + + + + R=255 G=139 B=139 + RGB + PROCESS + 255 + 139 + 139 + + + R=240 G=255 B=139 + RGB + PROCESS + 240 + 255 + 139 + + + R=139 G=255 B=188 + RGB + PROCESS + 139 + 255 + 188 + + + R=139 G=226 B=255 + RGB + PROCESS + 139 + 226 + 255 + + + R=255 G=139 B=232 + RGB + PROCESS + 255 + 139 + 232 + + + R=255 G=221 B=221 + RGB + PROCESS + 255 + 221 + 221 + + + R=255 G=165 B=50 + RGB + PROCESS + 255 + 165 + 50 + + + R=67 G=255 B=62 + RGB + PROCESS + 67 + 255 + 62 + + + + + + + Adobe PDF library 17.00 + 21.0.0 + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3 0 obj <> endobj 6 0 obj <>>>/Thumb 9 0 R/TrimBox[0.0 0.0 504.807 191.018]/Type/Page/PieceInfo<>>> endobj 7 0 obj <>stream +H; +A >6&dzYO v>QDV+ +2;1߰3*J)մ4jٜ4 (Ƥzf2g$9+|B\ +endstream endobj 9 0 obj <>stream +8;Xp,SI0lJ)o/B03gr02Cr^W%2VYEF85mQPSDHc@)oHhULL!E6`YGp=G!,Jk_ra$! +fRA66D'&bm'2h(1$V/%[#(Q^SqgFl\~> +endstream endobj 10 0 obj <> endobj 12 0 obj <> endobj 13 0 obj <>stream +%!PS-Adobe-3.0 +%%Creator: Adobe Illustrator(R) 24.0 +%%AI8_CreatorVersion: 28.0.0 +%%For: (Ian Griffiths) () +%%Title: (Ch09-CombiningSequences-Marbles.ai) +%%CreationDate: 11/2/2023 3:23 PM +%%Canvassize: 16383 +%%BoundingBox: 0 0 0 0 +%%HiResBoundingBox: 0 0 0 0 +%%DocumentProcessColors: +%AI5_FileFormat 14.0 +%AI12_BuildNumber: 88 +%AI3_ColorUsage: Color +%AI7_ImageSettings: 0 +%%RGBProcessColor: 0 0 0 ([Registration]) +%%+ 0.172549024224281 0.196078434586525 0.7843137383461 (code keyword) +%AI3_Cropmarks: 0 -191.018348623856 504.807339449542 0 +%AI3_TemplateBox: 683.5 -384.5 683.5 -384.5 +%AI3_TileBox: -168.466320512286 -393.109180415444 673.393659959146 201.91077808065 +%AI3_DocumentPreview: None +%AI5_ArtSize: 14400 14400 +%AI5_RulerUnits: 6 +%AI24_LargeCanvasScale: 1 +%AI9_ColorModel: 1 +%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 +%AI5_TargetResolution: 800 +%AI5_NumLayers: 2 +%AI17_Begin_Content_if_version_gt:24 4 +%AI10_OpenToVie: -229.394495412842 132.724770642202 2.27083333333333 0 7744.51376146789 7956.77064220184 4318 2607 18 1 0 89 170 0 0 0 1 1 0 1 1 0 0 +%AI17_Alternate_Content +%AI9_OpenToView: -229.394495412842 132.724770642202 2.27083333333333 4318 2607 18 1 0 89 170 0 0 0 1 1 0 1 1 0 0 +%AI17_End_Versioned_Content +%AI5_OpenViewLayers: 73 +%AI17_Begin_Content_if_version_gt:24 4 +%AI17_Alternate_Content +%AI17_End_Versioned_Content +%%PageOrigin:283 -684 +%AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 +%AI9_Flatten: 1 +%AI12_CMSettings: 00.MS +%%EndComments + +endstream endobj 14 0 obj <>stream +%AI24_ZStandard_Data(/X 4 +&6@=X}?;`Z[ȕݽ4 %EE9 v&"$B띬΄\ڋ0~;)uNhw;;7_[իɎN#͘;W5F;YG+^اʂ̑Co$Ѥ|Ss-|256xa3+4+1QIh82tÚfC|!ձ4-{b1i'>6(G_)ghٍtѐM ڣf:hh͸uDC1qKsj1yщ? +_Ӂ&Tr6؇5UK}5.U7ӑ株bQxoX*W6Ra:KmO2K.AɛJ1kLEs{U$ԽJ\4Kq#D{1I<|sxUr:7f7zlwO:|ځw+I'oiOo8Hmx,˩JoV'tõwSu\d^8ܶ|';J֍sSdS$$"Q9mjէb@?0 +H 6h Tx*``*h[]<'VD\i`Υp.=MT>VGqndI'd%P&svH“FTӸ7(tj^? םʧC_gs4҃ CKTdF< +);DwFp`" DH0 `„FXH\0T@၄ *DB6@(0.̗f~ή={{^^![l/Pqhh`hXT @`_fѠXP( _N gN:ؠC9XcbPX"2 fU"1 2ٸ\Zu`4"qf@$JH,rl7LC! bH0dxE$H0taH`2X@!ܹf팙SK7L"D15D`@$. l H T"pDajD0BC - +*`zCH,O4D #ݰRO} dHd@E!]9WDE$\DЀH0,(G$ˌF$"` {ZbY! B+# )( / 944(fA`2#)cTF&|-;2RhU8K٘Uiy.üe a֋?WD=˲'6dwvG:_kSu0WYOfӅ1e (]^@$;|Z@$X(J 5"Q eĔbPDb D R( %T  xд莈x3d 32|߀ĤOxxE"PZ(̨\S, p I `Y(M-BÐk-iT[23 H$ DB*\w2D =%Q͉Vv1B@aHh`X ,|R(ljRП1[fKfPeƌ2Wٝ5~v4Bh'3NsagExa(eN#3zâW}ʆB_iumL6 FaFtw$_f7~KU9 ,@$,p`1p`1ã 4"hPTB"hX4,, D"QHZDst. Xc_^"u 8 +++D!uh"Y$"Q DBDD`@$HCBD$HaaH4L8L^XtDL.*L: CUUUaarQ P]a`,C\D$ly49 ]P- +D )Ȋ + ,0,0,LHL" Tb@$+X(TEm#:D"j(CUa r ;ԁ fp]¨ G E cdPzbL.:mr|Fo^0ࡒ H:)hA @ @S-UVKQZ(j(n +[؂1X9"1cs1. 6N6DS\HlH>n/ w(0)P+bAhP8(Yt-ja["_(‚aѰpXB@ `!b0c@D"Π`X0,0004080LC@ ` ׀ 8ppX8,8084Tv HDTvW,!G$ʡnX@$D"0"aSa:bpH!^hX4( lkkj7aApd@c0b B‚b p P @ .̂âaX,/rHE-jA.f`P,( +T()Q8 _^{Db ɐ HE>31/-+)Il@\@ p pS::_o[ڙYP P ˪՚r Z("2 9Aae"k0 :ء:D*2Y<̈ءmhCH,,WQEQD:4,,f1 +DQb67WA$HPX8`T"b@$ *0$@ 0x@a `B T`A *H@B@X8z\*x L ` &l ƒ 8>!L;. @pPq"H3U@A H q + D8D^:WvtUe~*t2kc+ɫ2`RI&ƒ H 8(\8KeQvƌ 6``@a +Ta0zEIHJfJ{eFee t@„@b`HP @ @` 8q &X8p@ + d5@a"q&d0aa Ў Tx aBDx @D@x%`H !4`O0.ADB "|(,`HxЀ (LpI $Lp PX`"1R@(LB LA  +*<@a 1B ( ` +ZOrplw3 U2Tbѷwriv+p¬dǜv5V1wfi(i#FucQN$4z==XUs2"!'j`B@Wcw$4`$@x4B0$L@B$p D D`pp02 +0h P0*Hh=\%^Oz|OSiK%X I-fYtؑ=S/`'YÍObď=~X?&>38/_hIR +aUG&&3Cr]*Y:kňRxKKKĺ[(M `ya_7n?; +gDxrJLWY:SpJ\Yaw_ʪ?My?|렌I?(%,_M Y{ZRe#=;7+JJ|.Ndʤg4>(Cף/}^Ûx(:v~XͲS%exOr0$e9,vV#eJ$uc#~(c/},kלMʝA񇅓A_Qev5.R}ʖ׫Ϯ&MӨ&oNh$ffvDA;t_e%Ҕ\fI#XSWOw”?Vݭ>㺛 J+.^!x6:%^g2Ksn2R[=ߺJQ:lĦee'Ͽ>^OW;Ow;B,:tDzU^{p''ب-'6R.L!i#ғw;+']HX"Sm'䯽F<4Vee=TdZ;CxG;++PJFGz/쩔T^"c0Nh7yFv;f9uyv|8v/Iz@rt4e9wP<$Wb}O82˻R강w9kjL:|ӆ/.TԉZe]iYLIL< pMyȸ?s«CJz](֧<9pY5'G!ه֪ -MWX=WntUZWg8Iu<k`mZr-'ϒ}l)v50+ԢKV5 #sL(X'seˑf%E+bs<SDgULRԿ{eU,yOAJ7~)1BwB/˖)DkӴ-lɛ}hU]#7Vgr溔{[̽k|DUT;#ڦGijt'yC2*VŬND\lL JSY,;3bd㝏#IqV,-46(;x;I4f.m;حWm~ckWO?D?x#K;fSN{iH:DuЙٰP-SI^Pv`o"wRa`;R +NZ/{2qT;E'r9H2@$+p&Y_8e7~lGhcou.{a2{fnEfvmtW;I5:0=#{9"cTR2ƴBבwN:nuwb?if-ֱE9M+n֫,Wf٘P* Jog,2|Ȼa'XvgVyvux_D(5M̆4i/Z M.8L^<,B{i<*Q Zi8&glZUS**hsT'FeόeECfgxU4Z;;5ʛPOdgnNDURYJRFd2=Bl*QΗ"swcvKG( + e4Jx< {òX:y&S=QCΚ؎9z 2ߣTw _㪱N:XQ/jlVYNÐrl5"bqiSU:INNTNּ:"\Z*'l'auHdf-/IjdT]7{4jFQb(,}c_aGJ#D2:3%[m~U$A;H¢QJEʥdW.UpxW҇MUS9guAZǺliCDUt]|PhD)+-фxO2ʼ݊N{Ej/FmJX .}eJo9GcqMqZ"K+ Y<31gd#zF2[tҨ,X_7s2¼^"2zo<ª$FiFbdbf2*o%dʕ ҊGvFKլ dW#3%M'f{Wt:IGѿ4^9y`OMstt yTGzݤ#FbY/&qՓs4eS_B8N5wb>UeH(f2]JU7SN^>z+d?cidZ؜:L?<9& g^'^YwHu9M37o75WMc,C2r|c˾љY6.f,Z_i] 5 K3c'iꏗ2bIzI.tkx~ʆ +w) BY=<ëX ~N$M¢,"$'IuSĪtgp˃z$O蜴 dJqr9R>X(tܞ0,wq3gR k$sݓuZ2eT**`')hl*;n})zҡUULOWԳ+0Ku>ZzdEht%F}ZR_QT*n}kOsؓcd"2~7uH124Lw7wYlJGW4t%9egʒ`ɜsUq&݋kdcIkdy"ˌ!ٱKڸIO9mI%I'͸ES%IWHS #ӎtߴ<1S|y(CgtU܊9oi6%)X#ꦙ;)DK"Lf2I3q JrS8VѲK|k:({>G:t\])K9ҌVKqbq,w&q3Jsex Y.7Оןh':/(WH7v"_u lU.x#oΌ7bd'WrnS;1UcַYM5Cqj}iO%9 f(42kRw&ZSL+38&Lՙx{RkE$}.gt2޲Pj/cHdDB9*3k&cҧ%̬FeUU͌, Ḍ#62TBNHF&K'g̑9#ilG +VXlU7ߦQTN))駪h^EEU,{1Fcn%F4;C}J\*׳єh~r*]&^3Zf$3$hIȦBokGyzk>y{v9P -{FÜ2ۘΎ~>2/N)IYKgc ߜm~s3\;Ncf.Kt3-J<4LC;) fMԋMlTEIdo:bDgU˗j%5-Yz;\GXy)_](O{;fdU1ܩ,X'zUUgU|c;M5A7,33_L91JNo*(_VيJTTxUT=홡YOx#g^j[TO[)ox2M?LI[e}5K&&hhdhfa +ޭ L KjČd. -IU;LbQ膮P4 Ú+aG/zjVW/? iZa5v_K4Zodr›˜VNNwxzhv&#w…Dykot7yIwj?ӓQa&ewTº0H쐎먇u>A,3ɍ֛DD&)-I2UTl*fJs!".$ԃ29.g]C9RJ!Mʍ51̸Jn9r_+qQ~E%cɺ3 "dВdJ9r$g#MNPn)F|yWK$iҪǔ2Kٔ{RV6'eccfgff5GbvdU,cYXYlb3&VaJlV.fg笜=>rjҲԙLNƔVQzEҤ,7ILlr˒:#:rP<7[(\K v^X`ySNk.S<=(x6-#Zu&3< +\I:JKW!J dI%ǫȱQL2GDkUjRPsqQe%dabe#ZYn7/HIb]Vʩ\39(gP7WUؾ7L4`w3fkbh<+NUӌlZ6Zޠn|S,Zs)zl JR φfxig$^'z-a]b l;7O̬OY,!~j#^++ɎWEt}kULϲ%Uf̫SW4SLyu|GsI"Wؼ5/Ћ +ǥ 1C(r٧9G#KQNQf_;V6zJ&;&eUD<{뱹׏/s氤_C* ]ݕ>EvծLv?^l:'#}F>dssseƜ͎LGcsq(%KZ}5i1m6%njSidtt4RJT6xVh#I,͕b> y#;H464&T$kMMK\|ۤa5"!QlNFx^vewjlWu5SRM!hZ}W6W2ȭKhr|@i{ޒƭg{ Mίpx "j>L1AȒKyK9bKaQ24qlrjT6i̢LR٤TљqĮ>7;e% -IhysB;^GgFZ"ΙU?ѨUnfu7ڤȗ s\g39q9)#$"x4{> +'+*:TH(Ĩ>J;2kFh ]o|vSw%*!Fmjus+FuRΣmcW*;XJ,!A<_~zF ZyUHeqw4M'FU4R)V}V{VDWVZ83D)4Ea]T6'ՐeNK$ϱGu+NvʛwD*YٺUGh:5mN$TߺQljDo.KI)>I4t+ShXS,먐;;ёdLz涼YD9gCɈ;%([Z +cho-8bmGS0IDV॥!A3,BmЃVӖXT` RhW2'VX,M[6:#+ۉhzGq޻v^Mƨ9$]wBuI}u1q] c%ީ]x`;X/k"Pߍ D}«PmSh:DJIUEo~R U3Oz(j>ȷݫMOjԢno|9lY n^K ? 90Dfw!ʊ|b*v[X[ 2oG4H5 `l3]T.g+M.%T`@>D8̥j9K(0'&OwHzfcԃؓV^U\0kw”+0YbVa +{ \BZ5kQ7aV›فval !^bnB2X0:h{s6j*cbŃ^쯩,%xO 4SX&! +KDxywbM1#g[/ЊP1F'5C?n\;\*0^oա6g,b^Xkf:K褢G`Tcnކ]̽*y~Q*%$eȂx2NIf/f1>_&jDJEaYu\1P[XWNܯ{pcC1.6Y /sFXbYPy:0VzӷFUt΃IP/ Ӧ UlVPRWW7+xLKGq.]ӏTj'n7857]8.8+)Kg p<̟;Uᨬzqbv +;8>lg?۸?Wnc)LXaXױ',đ8wRKΰm kAma^qd)8/)Y!GKNZNq jr1VcspvqQ, $.Ow}n ^x1?u Z{m1٠;:cYbvzc]ӄ2 ّ}=˜î$YOgK{˜i=b[íoB: azrዥ'4$\v|ُ#j%r5O؇lbȼ!asqKŤ_;oWA!3i}_ 0ӅrY`ՋEp={{sGA`_̏j/n58/@>GbȣbL`v5 F%vЮ8P@w+N1hŮNkVb/냣_ceJc<0~-$XLYUZQDz1 MW1eqWSX0DͺIE2%F͌VJP4&,iC7o<ہq"HKb|7dO:=+eXεoofq02 |cgXc@o!M~0VxQq^%&Nb|#Qs+m~!Qvj< xKCl)nGWn&S5&`fc 4cq X6϶w}m3X:׺Ts1q"YpVh?] n`wAfX%*Bw\^cdLG=jƮ-ɷQcyJ%3;LvЛ}3JtDjɾq/u2/Wd~-4eG+K8M-˧rБ2C +%~wt=&M>x縗RDA1mc!Yy) TgF\{پKҜe5Շ_(@V +N ޼ anp/\h$Y&A3DžEhhÞ ~93,T@g}ڣ]Sό|[ٜJClSy?K4h)ABH4 +NϞ0B[lY!p R٨\lkl[33SҰ;>x`LC]n5Yҁ4cx5@سEOoO&)P73Pн  +zq3yŲ^ +v)(*@ӂv"m[M=4!(ʂ6/-X"iA'piΉ.vBq-)G&F7e 6[iSMꬡLfm3uA#a3Zp-Ct̨35 OaS~Rε0j$!?~B3Jj^:?Y6@3 ^mwD̠ PI< 7^Шݥ҉)@סݗ -u %_ƪ;E1œѮ:9EQU> 3"BJhvc$1~5ib$GYlڶ6 +Sm'Ze_<t/]mEnσ^(TҚϲ1JCzbwO?p 6U YCm +MP0:m-Sż/Xݼ-I*ms݃ AU= +BraN8bo}6 "?6C؄:&橗kb}&e =m!ڿx{Je[&4 qjxKx 3"-mro&LQ&mHdXXB8:: ?wxbROXv03mPoҠH 8 0Wr Cah:Itlt{{HwMypins9UPOG29cf)v͂KzۧZhX^VG@QS&:ùpfgۥ6O^m{=oL=wGɍ.i7QJ vP{iV/LHv0Zl+pI08SN+vrrl*9>/^5ۿͶ) Խ$)bq~`+(wK }^Eam>)df;4W$vpnhwHΣa`f=ږ;[}inGjKCq|9Tcxd1!w;j,z xD1Av{ #}2#7(['%^$͜}ϞЍ#1B+n/{@ + NqG,I\61,={ˋ;/G^nms|6nhLzw[~Yv=Rl^;`cWCqߚ,6a/׾w|[eA{wK#9ڻ[x(Eƻ[) ĩ*ݝ%hS GG4n'7 BeZqwg{P==-V}GD<%MRFo2+Hxq?Vw7ӴݢF + tnnS!Lyy~56A-}H~u*=M! +ͷx `Jy93;7D{vzgE("bK;[$TO7o-o uJȻe܅yuT +*{ț>p*A2o:2mSqU} ,FzqcP]Oe0.ԁQ9ߞlcqE?DƼ;%9 +*wJ"ЕY&M{ou]3NO:P~:R/-TKNC$2"/gN<{ 1A𤎄˻Bz$pJ6vO;}L=ַ 4Y%0@;HL<  [7g$"]N#?r|`VvJi<](qV.*d/ OOw&jck=oFMI𦏝K-ɽD}&(Kmr̄%3j9||T.wY/ ?]xNϓ\73lo4sPnH-ۖsl3u.;ڴCŋ#]:;W^ƺ-;Y[|WE׆VX2?bG(W|D_һ0a淮_co9S;i`oz8ib @ʦRG7)qKtP $frszΑHdK3=pG]/vLd/Ci$ +v…}ƕIwΧ5{5nLGxpWۣF?k܀/:hF@YӾ# VZ(~ߤ\UIAA6O+*'t:>Y n0ə;B @G>JmܢG{:_4fgIvϾhy2F2/4ьclq:8k>;oS tIaZ+aF~IHՙ,T?D7Ӏ.Lo[=Dwm?M.,~R]&"wF3w j'gcgc.2pLOП?E1"LwONHAagW; F ?ô\Ģ"bnJq$:~0/a0]R!N8e\Ħ @h +!4iXx `Y;VInؒ-50lj{l`ZEEn_vFۦ?/q +&h:DFf@/{ZTleՒ4rRmȡ܆?;Q5B3/Ėhѹ*&A $k.= '^VR6Xҁ+5p?P4x!1ŽPkgE[׬)sFxShm3Y'zB{p c?1"{Qtѓlז³uQBܵ!^рKͣɬ-VUOzi O1P&G ݗ#7&)V*l-ހdE69EN2b@F~pBO\dJ[Mj)?U..l1Ɲ13,T +މo1U1p0wtI14y`ҐYCY]6~Bg"hma+g|v.@VEUFKTg,RG>Si`o*V̼ڻ")W` {y^V.^0U"B L Ẍ́T(WJ}+'UW*Ͷvrv BTfؘ mwI@nPq.h_AK~I U/= t7MA=zj&MWbXW m*5"ҧlVZ' #X~uZ9(լı;"ir:8DޙPr(r25Ŗlɵp|f@G9pzQ?"9z eІ9D͎S&F9UU`?L6 Au;0H=N\©X՟#ͻEՑNGTd +H&z԰O':b Y ҅tXg4%i4:{WS/"' Hsq=K̂Iۧ,jmDXJ"ֱaQB\uOIV^ OLw~STDd<ʭ9 A&IO8NrJ#0*jHLh+u @48Q\wВD`bW1*I8 ]db8A-T` Nlms=Y b l CHJ7A,`S>z1!BSsW'`G$ى7yCܻގ]n0fIP8~"y_n}):9@Qx=w!ħbUl.pY3a|fuLu[T=.|#;ӱ_ƃP:`#]wM+nR Q@LǎoS@HŒDc!ELJEW$!+Sw,iu>c?wF?&biqժHΞB<$]v1G"Me@z]|`VzXiakmL;)BiXj*i0 + `@}*E0a9EɤOр셄,x$STr>'ݾ7KUưsJruM)ҹd>Wķq @B1' +FnN>^}cM\j: +W [ (C5GoOr[yD[HC7IpNh.RLO +0ͽOh,>2UC -t^~l:nhm1q8νRG´ u)cG XFMղI1*Z̙њ3/y =\38.^Xަ_r3"UXUQ_GSYzsVsa{.Th;;TH< +BLBZ݆>%&*e1/{>޽ V:`~T⻣#j `ܭou| +E)VǍ-r<'h('X4\&{`5k1KEf@'XN~iW~ +ByyӦuY SiԱg#>? ?ԔOZ~GPgSlDHzCw\򠡎dS(C %60v${ZN%b1.nsBOeοXGа2)Z"RoߖeX,`rv>R +r #c~Y4jex,qs|WHWUIlN9 Ī=^D?2Qְg + +M!btJ{G/&cC8 |A3XW;1(H侭 Kq!nUe+dygsTZ0iElR~\k|e(4hBܟGn*<̩¦fy.L!^- αWf~Ͻq$mǝlYsz;[ +`a[/ gއjzmԿ,g(bVAo o8=h 8Nq>7!D:k5`dzz4{$!TIJA#ࡹkgܽuK>8E뉘}ςބJ7zlYJ]eYYiP. V6˜XAa?O2aqG +x $e[0Z\#z9.`?XGq8\ep='tn,#M_i U^x%'YFl!ەz]>>mxdѨsOLuaŰrlNjحwkq885Z;zng)IgOG,|n݉k1O{kO lA}\" 31@XդOj@[7NRJ2%|O( . ֓lrr-k9> $*<A<>"d= v[$ %KRʄ,LzZؿ0F;)ٱFу#X'I>%TW`G bFGzҲ2ADq*r*uwGoCAO]Mk%U-:G] 1`WjӟyI9:YQ[Hdၝ^[i#8F$رN4A*OG%){QM! ]-Lg"QVi!,%r(^z}EUݿbU< ʚEBiߖ`fEĔK^d{'@$\8\78K}iY!IUŸRr]RUS7y%L\x‰B. +ZFeR +Âz'Tah}i:%q,@#x1Eu~YT` H1&\ + H?.COL6Ǎ#$ FLE=d_ĉtZgyr~@BKSh:]=o&w6CBK]Ynmn k+qNM)iUStsS <؝]7`r2OzD$TҸ%(p$*s2yb")'sE祸'szB<_=Y084ydb,]\;.|R 3g?9ܼK @0:X/V煉B̖jW-*p* s-i۴~t%$} +k}e !xB(䌽M]FcZaIsú9HQ/1\1F!O>Q腁 ?@mO.ii]&Z.LB&\tKhhW/8=ĬcVcߜUDZu= DG@RWKIVu&ib-;pSܤsa,y 'bPBnZbmMɁ=YFJSHwB<І t[[k " aslw䢇ΌIw`lV^I"_meAu^`uQ{ I~] hg4V=Q!W#Vö޶l.Ho|樫'DÎEjpdBRLn̜o *^z )eW@ Q?Q(MEGsʔD.#Wy!Mv8eQ% s.WLP: 65̑5n&D nwIv1:p%3rkp:ϕdUQR|/*%N{<1;cX>VƓvQ,8h-`m@cW9"xY%gri + ,;-(JGh5ѡbKfs&.ǑJ-$k : 1RԏbK={["kwH߀ʎXi3h~IDm$1 +C@%PF%!mh_VOk63>fj;Q+1)ct&)uD<#I%'`iޗcR2ʨyM^ ?fE);JidD7Ø$p9ύQbjiB&c9fənX{!4YH̛=#S==n6wS +(\-.S&ZJPI ayȐہ A4\61u 4Ԉ֣̪DLʒYAIQN=&x89 rm!,mU`?+'NHO@S+rCE q9$u9IcJs#~ +Ao ʸ ; eͬmY #gI`I% vo<$>fAݩ?4DU!;]`D5;$)?V5WWHr꒧P1.]m__DmcY\帰 :pl_p?!Ϝ &gTԈB*D   ܐcD44DȲ)<'! eKtמ4K2LZy^zɯ_TA XD}~[ ݺ?BݷDokMqNħ,:PTDSbjy1r懼X{v1D#`bᴍC hLH ny-4_ ;y_bhVK)Szl.Im !L?CTM ۲CMe{Lg{f"pr@P[ۑ,Nb]T0Je + K H9p~݃I|pLk".3` o..Lu+/*ۥme#XA$w>[cr2U +?;LچXYPI(VikaO^MUȽ@L\Y6`Sc(oA\ߑ"dJ~?m+͎ ?&Yڬf -f'uNcAgplХ|Φ"qBnl>" %DX]|`^4|z܈lMQjtGb{t +< ęL7BXw=/#*#VYs7Ym2A7mjh*^\$Ctꊭ%-ys-ĥ!e^ႼN$f-Y qSPY[Md7 +Mr iн4`? VOT 63ӯwdzǨt"ˏ2P +2\?0e/GhE<( ~;C;.Rᗳ +G-8= ԓ5mb]95 +];o_4*am_[Rl deYv3ɜ8M ,C{+1 &1ě)/Z*Mo3?["),RR7:Lߓm?VXrtMِ +9?aQ1<_d4X)G4pF\p!ׄړM6jXu!(m Ӵ2 AUssw`l1K)6A(h}7e.SFRԧ{ +Bb`>٣&e蜤 5kLM5o.=s7IFl2S;4IOBN=뜧z|yBkFcwޜd/2xwU;%-1`*inf@ +a'G6>g~ar*VQ>2,GE}RȌBnit,e7rI׌q1 ˝bI"s%rmS'8^ؕI%92jo:6yղ ]!zD@^ت=5#ߏQPݥj- ~_Xz-=8Ec[9K@lG@+rXŌ(F7#jb)%n{NwBпޡ1K]ƟgKgR_9$3GscVMhJƫх62+e*ULArvi.JM3CX +v@}h4Kƞ||T4ȷl\ Hp4kA*)"m fޮ׼P-lxyֱX\6DH=?=M@HdXxVTq 5 21_'aZa,s N,>5bl "OM~&oN}@n(S9!^d$U`{ȍRNZĐbP-2@k*96,]8 n4 uk!G1I^ +SKf@I ĞhNuXcJ+spE6e[,V h]NfL!$'\hN3>5'Đj2f` mtPv"@|廛:"*ώ<C3Ϊ,Nq9]r& : )7rqρKiRi:bYܥfTQj~9\Li#KMzn% Q܄X`[:; )I.0y* >EF[w>$l%0m$NwS<Zn` ̔GfH&)HXL[Gg?n%G% kl Lxd#˃h=ԧĎUkEBPf #=#k% eЭA"-PBQ\9ۻ54hBVH-$:.+VnQ  Gk%1Xx-ZUwBY,C;K% u;$iпGHH~}QPWAt!:ȷ?)Xj(V$J,ɭ odw!HO+!$H95 ̀C ѻc 5GGl|'Sxԝ=vt4@GFA7Q浑 kkD#eC'3"`anP7"{aF̘l,8%HWq.h;HW!=`H$9D!jba!D(ozzv>P?+69LEqQu-$jS!}ZKT)$BX)wfN kfl(Yu,5ؐ%|M=O?b!WD Y,rU;bZW%9D&6@))o@NGn@R$m@˯yTN,O(><>F8,V:'ΚM1tR{$>xEj2Bz(ΎC4 2Jk'zYmX wZg$12럫CSBTuO%̮Ȁ nbC@^gėBBBM:V(DJgZ`P?jQioGR@gdb2 0:,TY~u@$Nœۧ%bDeP3vqLN'x ?!!}X@/ e.~tQD@F z$ɝ?H.>a%O8t&gI&٩"B,1SA@E*FBun +  ێ.bxcѥrM}8 +U3=W LsʎyAL~ߵ(E3Uo@f2%1ad ePލu(mɤ taEłZvNŤ#Yl` zoIC9XmE*%,PPNѐRW;P[:d%LKoHmEgL*Ҋ(* (}5_d`=ڪlԘ'})r,CT3Xq)x1, @&qsx4]GIv3S!UiL\S9r >m _"5.כh!+rWl垔 |VE"{J'J'uHm%t$펉TWnSפ4YQr!grmɄϥdށIc2^: -M&W<%Z4JqO;#*ңP7'eҊF OݗiWS`fZrhp "78kEL鷔\D;I@~ +D +gT ?X yQvH_plNJ-p) ]c,\MD`#Kw?X:v;;Pg%K`j=tXmN{"Sku~!Kw +i,̚QK `,D5y|)1ͺLۡvC<1 +EH*D%.F)XXU#&lhͻP%Gsɻ]/+E|Sn/VA.*_ ~ л7q^6z\vݭ ̓$}P1Wyj @W(>y8A]tL 5XMqX62S"yj B2  Tx^aV'y@ +F*fB.ņ.1Jf[bm- ړB#6ӺrpUwB2_@U qT yǃjbADW_؞z7j"ȁQ kv2̭rra^]KEN?Hǁ;mrlR~I"Stꔹ8?0)03w +sr{nd!?y]Yn%?RPV~nıA:9h́pK@9ADܛPʏd \cŒ00 ̵PU;~k#-]d;s56  I%ȣPhLeucnѠ[&+7s{aa[z:uLXA˘:8L |fD<1 LHaj>"R*xNπg M!Lxa*m2 0?1q1>[|)ʌj%?Ѽ]h$A2]ƚ5ҌNu|Qq. +! O?>I^fT3x;uE3hl* hZppt Gf\OBk䉯cd+x18^d q"?jxL<3Tl##'e/ Qa^6vzi?–\SBH%;6o*/N"Pm OQ*PRyYzP9-m1']IBÏϛZ ' aM(y'/#l!\ #-Z|UK-ûxY=/v;_֦t) ~ $WI0F r4Ca XAvI@1#3KE/C2dqF0 *$h՞wnMg ֍wV_GɄ1oQ[tċNվ=F(Պⵙ#aD~G xdJjz̲`fnA#`X% ,~p5j20iYQ˿AT٪/$D}5m&YO$0DfQh,Lڇl:5fOTh^$<ܗorZJeR9L( 7R*D@܄w2@m7$O +1)2R\&VD42Z)5.U!3O,"l/MWRpCM.8TtN(&匎PERnE-~2ͩ1R! bd@*GbVIW˂P, GLy*d Ҫn*N{ҩ$dxt~Ӂ))\RVF" OPr +Qnx֭4!$O1X43v->I~ BF򃏿9ǖ$AUJYA"0Qr9Ma;\婃B$&Np- |EʪN21SA-@A]@[3VxZ*Q6oG"eD銃BɃ 3i`HXe;8vY!b$i^YbiT2q|1t݀{az<ȓA-er+ݮ9mjiBi9WcU{y-4e0y|-B^Y=zډr•AR͚"F6@@58)j#py"R@9`_8RɱD vCm޷X,-遉0DYrѮ|df/B>r'݌)VoU M^bf-k6eugH&dO^dDmmO[,}XXL4;?H)uUND6 5?WưVP P:.UY12VFW{ut3ʵapSրuӆ_3Na̪9N\[2I(Luf 6 ûP]]Uo@PhXbA +05+\NO\R-fKeVi-գd2iL4T?$Œ<,+9xe*P|arF"T + VJ_-3 g\*?U7[P^Դv{2]2,n_\P7qSnKf!̔<) JD [C%V{D0*xochc幁ENBRA`Y( n@+r'RD95` [p,_ 8 -sN.qLty%6gETt[AXrB9py8 gK>&a$^P;>' +`qƱwЬai @gN]jҩzSx7+Z"Vp83'+(@ߑvP0ɗ(/x1Sq JUrRҿR\9Cv4GgQeY ?[, %(#_9PmZ:kdLR,%N]},jZ-! ţ&d\5.ޯWbjUT 4ji )t[pWNwx.xm,)nT +=Y%'$ 64\,;@^j}XOKFJG0!Xlډۇ ɓdĕ:F;a6O?6yTd|Q+kD_­ЧxyWSNou%5Â+x>r5qwq8F|?GDPI;撕0VC8&6L@(8rciؑ!9j' )̟Y ϳlV\{S1ͬ+KudW/bf/$nE+D Kk/oGٓQ2+rEZ)}RWb0Z,"K2U +$zBɚ5+9К)}umZ) +fИi= A_8qL$If?R";n `Q]kMWMwrǡ׽BNs7luH-Ұ7`=9@hI6=&#tԹ&^9=nyXJ˘bF;sݐ0-D enXBIR]uXXt +XmkĘ8QAP>qP/bFj3qlF@I{3K h% Bx^+?L5J2/opцV&_Vho(>/ ?<(* +k +>(LTlF{?l5)64=@4EjftTW9b;'$# Tg% u"G  Yl 6FC(:'[/+a+4 q6{  awigww +M!^' +k\']&:JU>GE7(Ӓ=O3 #cwYd8!R~`K͚%czʱz=r} Ѫd`. (Ó!3n1",|un-A!Bf\+|fElwo'g8 i֪Htwꕅ q_[7 ދF~%ٻR'ޓ !~,̿DMlFY(n^ŊhzNoS` < +rK[߈Co?wd=)*7oψPkЗ1iJ^<= F98thbQV1D'viëZ&Pfᆯ|䧑&^hH#n4P,G.e;s5ٕ +9:I:hh'bDgI";wNqHd"2M(.'g0|7IYIEr'343=+_zYL.ɫ|bVKuvפ4d&V*٩klni$sk2#jƖl;f={rFlF%]lY_Չl8r-[|folɮ|lEҍdJg4x.񖘡cC]墲\9u=KΌRST>fc㛛#9;kj%>n3;Vlj:h=]]|b+[hlj1aYD!%3Lvet@ɿ_̯k<:߷6WIec_~VнɼE%YUZB Isue!5Eg_t^֡Nhc٩-{|CTuyhĞO#E|IS뗕QjoZ{W|'SSOx=ԮR$Uꭌe-ȒrS\fbe~fޏ7?Y- 6ue9>i_Cg\++_RuT!|XWK;$#ldbKjl٬6g ~WGw`\=!:!9>PKFڲmj/ eSSB-&;t4ǤCN*T[]5OĺӦ E-Je_2#Ɗ#YjC7X%>hWt^r)Ω/wV]Hf:!{B.$܆pJԛ//r=6^=EvEwz7DlQ(%G٘(d-%CFnή+:PjceO':-Fsdޟr Аث͌e1<Ʀlu5ٿSr7ȑ<OV> s*vĹI4)U Bc Ȁ H0 R"e@Ń5&h0P,8&xA#H$HX"H0HX"BX0@` GbahP@!@T@X@< @ $8@@¢ Dxh@4 + FAa & hh($($mz*3g7GkZJrq'(RIUOi($"UƊʵS<+RJ=ڍ˺klFФL !tq}"eN|fXNE(ǩX7WjDV]=mf)ZUUcrj]3ug9ӬV_b#gTUu^RmDUYu0H \L$|&C)c(&0 LH-kqTBz 0X+aCvlHH0F]9ֹQJ+7 !6*(e_b_ df2Sp瞮s#fho oD8ֱ\h 231MH`!G[O@Β=Q-W')?" ZE"/Ug-e!2.l.=prb$o&e.d-9)vMbf"Q%&)6KP֎!l5ĵ  z& on|$UEgJDZCNl$媀 \ ɓH0wy?Fqe(WZ%d|[E? #T0!>(oO!?}ÇQu$E?mvD1}:EM3=%u,ԒXL~̫`0Wp&&zcSz }su"f宅)dflPvV"v3uЯL:@jzV~ G۹V?8lzM? 7^'3]'=i_5lxa9Ȣ +R.?6ztn Ydn:|]ϷoIc`(%H>p-tZr,.TwֳC&Zrz#ypUㆂhs#/P R_kn%6+OBqc@WH#(4a: YAyvFEam]Ґn9ΈUh$dtjB7Ilƌ 6!B.]ՊHb#`:TM=,)fP]QGrihdڒS/#qnGލX8FDexX jYYsq 2wSzQS8z_X%+JNTBB0gD%KOxLP>V ΔܒK y +j\[2dTZm~CDJpqjBGŦ1& +m# ?L N$I REχiPl'[^ 627"Nﴠ$2^d3 [ 2uN!7ZX3-AG"`'aWI/o\]tJ".7mx:`[3JH# w3>ù%QOJXg7ttȼ VgY=~W8]^:+hAP>L,D xu.!ķ# !NӰқSS +./+7;hBWgLH-qE& _ ^r;dD @kL7d!DOByRl!z0 PD@AZSgEÄI"M aRmE0EId%ug2B~TF#∪_G&$0HIڣ(4%Ik$< SaKVSX B% >'Q$GTa"~HBrPGċf| =kkE|+IVDIXsHa!ي~BX8daŷ1$AڜWcA<`ZI# #7ve=ka` 6a C?hTS]u eLA&K R)΁3GaaAGݐaV9~&Afr| H C . $t8JqK@^Gxy@#p5 h[@DpHy{  o .^NoS ;@p^7QʼnPtcznԽ}q F` B@b.Dž +md;ļmD2 @@cʃ# + 4_W zm쁰b!mPCaɷIOmm=Fl4& +ul?Ad _`)mLhpZݜ5FB@Zb^A atu} FI> 9Hh KM$bgbxw[BOhQ!Ht.H)F C\3DШj  n!>CCR0>ψG;C"d"d!g$ oyl3/ܚ!4͌ܒ"k2"?f\/E@/b22#+d222It24rȯ#JFk]Թr$q# #PcsG\=>^ݼ5ɋx4 SU@]ԩAvb/0=QSB0O.8T{s.b[p\ ą)\p#bt +h8A+Rw|@f-h/lt%qE\VI驅˕xOTq%|+-A ޳ JYe ꚅYp- V_ d?9YƱ(l,/dĂ(-HebI,D %| +ٖ煵Ld[Kta(W\85&5lEN+^F&3/`hA@4lʊ%g`w0YUYVk~6ڄ{TaM5j8Io=N4KETG?!tkT ~DElvr* +0Oh|Y<ū8EMz\)*D(SLQ)P<.EŹRJZJJ(/'Ŵ M')) e/R( LPyG!DQgEzQ|2c*(?J(>l$$%)gR)(x"S(dZ({)"OSp<|B\_MٕL┬:!(O͌w¥ى 8`nBWp-!2=îp +c\(1\Ax s02H ^ҥzR߁uIz.⾳2.wɓvh /dMx9/\ס2䣙n^a~YEߋth/l8/K Tz Q^0qk'd8WK% +ErT;0DRq^0F!Nq8ā a8/,ah'T! ሿ0 CgFqÛ-1z O2mC'T*y6]Lhc,3bʌ!0jL!@db&[CǔȀLW2IVØȈBQ2ɼlnD0cMؒ8'# 8` T 4 Ϡ" і.&g26û3ΙXdfeޖaX3J+è6c#e'gIt(2ۙ3Gx N ׌hIhjCYL hđEaMaF3{  JV0TYC4]X 4Vs u/ fa^(Q}x_ՠO`tssAc9V.ptƅR .ꚤ>?e_F[0ׂ,dJ !F7ZMpPXDpƞ,w6cmM|oB6]^K=n?WƎcXܼjYALM"y&UuAJ6_6B +yۨ`!T!4†S`o00,g&Z5g 8Ga"hǫ(Td4 +2uPA0Ͳl}1؜>8X3u`oヌb|Ln7B|A:\Ey03gRڃI69Y3,R[;N Bgǃv 'VAу~lqq-`@I-}}m (%F\{=jB\E=wY 6qNO]=YQ==JJE.bG28z,}zQ*2$y!ssݶ%uWG5M#@*.;x7Zt@3h?Gڢ`Z& >F/Jha6֡zߟ T9X_TyD\ +Ѷ%*9sJ(30O/GҺ8"\e[ؐ`(E4MpFfsaJ08p8e@ib g :2j , (:rx)A;f eP/ReI,$Hp +Ba$U{wpuC옩P{F 5"(F"(CK^H3<rVA EC[QׁT4UQ@(_ @B=Ē*IGpu!9:),bCQE-6Pv MQVNPT 0 }@􁧓>Cm}[Ie=ܮL~ \#Obxle;SpX;V1D5^:9b19phHűU Di) ~4P|6EE6''Mt 0f*q\^XBC͹u4HHhH +37K3y,HG3`VV}M@K?2e1b1' #"0IaxK] pB/_h˿m/ ]ʝ +.R?.@d4'pqE&Ry'y;=ƨ+mdNCLGE9 n&{*@LK6e +)S,6J4;)`%5L"P;֘xNw뼲LW-{٤{a@(n<*H y@pI &ax`B$$4k˳( rtՃ* Z,AO.),<P׶kxl翼]9UT u-ykL>e&S ȺSD5<=SlNg׀&Ta'}P{dsIr>a7G6 A`] x, wf##{߿!>`քFpd0@hc^vU`$:R–8},c6vvE@AkTk(KWϜ"* XĆ]h@c^U7MU-JJzNyL6Z&`(p$-%^'m#K6|  F΢H PdUp~2R|"H4S~wF;PZm͊}Dt)Պ&@ovK /Slݘ,ઠ%ér 1@<`ȮMhUʬ^ᒀ@Lx6u})8LNܛ-uT8T3@$3n `0(%q<>Ka^w`A@/HO/3xfx.Д1a"[ 3|ŰQ; ˠ G$ţ'&ܓX^6ƠE̵Sl#8 B֓-Vp('ƈD&!8䳘yPCחJYeϮFPZg_r@TcӕroX ~RP pɠBA$޻(Uv?G$SoT(1a .MG6Zt$ \w#(LR,#ڹaly!C`txҴw>ں밄A'y3lȥg 9%ߩjk?cP_{Iit'(.,?eqm7r .0]_'V\ը^Z=@&{+B\8jbqWo<(fv4= ,1~rǁ%O!FAS GsVζZݱhv7,fb-0D[ +O9P54Y|.pǹH+ؙjQVz @.G g$Tx:%Õb,v(qVKI(RPpm%dJK1Je<>B)jH@_ʕz]O:>Xw)D)|2_w9颈7un@|2m柾(5$wm=bXȀ`ΧU L~$Iˢ+|L Hbu wſʧ.M84O8oF(g + +Sj~>q,5_ &*QMͿ&d6o(j>I`5(bf]yz!5H .4Npw7NM PRD򆃅7hvTqHlHS+qM͟T51׵\Ae +l|_)Y\%qm{ʸ#f8;[)3'3k\79F)k~JKKNZ/oϑ8DLNr%4EcZ +_6pBK>p~+@ +|Bˆ5(4UTk"=/2Dq +x{S'|0W]jHl$`j8\=ewQCS_@#;Y04en1q@m +ㅗG*}GSoo7tkse !ESe6,΀2 id"ѵ!:*iowpc\Y[q116{˵e6 +>PMѕR)ƾc:vHF13VKר+ +EbV^3%zx;-Bz +(FYhut3g WYn:bOYOJ氾=AVy]}_C%`jd(G,pQYťKSbMF6{bS[c{Sɉ _c|zB`!T`MIdhvXU10c!A.bi9F8 (3D>? F -pKD^$fѿDOu +go }޺?ϡqDτ~Ⱦ}挸>|,{ZLfGH_E < +1y$4 D|@vKEW }96.y}O&9- +Z'j +1|$9={Ipɧg~p}%\b2/[qc>6#i4*xamtވ W XZxE-ÀԎ pk@lO@(_F/* `8m3/,{P4/CmF^CD^$|DFH;ZMvֳ&WFI  z/^.e&xشP:I/~;#v[-i\q3 ;w^)~3/ '^A]EkfVCDE| xx֬5owt+]]xDd;New*<]YKnxgo&!|5T~QWMKassj0cQsVNLT"w!ggI(%b0hiZݜP>6)FE} /ng6Qߟm]Pa},fB)O..M4 ʝHs^qdL;5hֻt/}@} : rHt;Eͱ_D;BPɍt+ndyFw0i)=+]mFbqvux ]X`ZIȈFq =v}п%: 5ˆy g>as $ `_~y,DOtnL_RAWUmĽqދQ5_^Lo(v +oU͋H|"A xN3{F{;)}c_k-c\' Z Ѧ+_5uOnC2\GOR09!s9_Aّu#ux"\SV'ęhi +N 5Vvfˊ򧷵&㉣+Gk.kS{Tdo؛HŰC0HtZ:K8Z2h`Oد[r +vryi>Ms,`?YGow*wF$Unx;`4Ro"\:$%_K15e~+Rgu``bYb'K9QKsP +4ieZD(𓜊-Zz +$i 9Te_^ڊ / ;R#=Nج@ڻ} _cUʇpT`5!u.t].\t /ĠwU|!Ez'a%|hZ-zuܧk|UӥE7Bvs+fMb>r_6(Qr ERDWnxlznKcы [tTJeIt WCw}4J"GJ]m~-lkpbU5ͺM[S4~̕ ҡ)2Ǎ6*i\+?y?avDCM~u9ǵ'68N,aGNd %`S@wХ}@ ȄnB jFw+U~ +!C +;4.ғ$%F8WP˦dut *,$S@@OY|gߤzcզ!&dNƟ(}P~A)J50=σ&̆0 B +99T)LE s-Jyґ߁Kv}jܹh9g9s0 K&<1-8>Ӝ3y-(a2y!&AWZx,6xaymy,fw(r"(58?L*pNuYZC@Jy$_ *}Jr:|EP;?.JDhTh"y&oNK\_N9EI֠BT$oJ"e>$7t +'ܽ['בG(1i)l->DVߋ}%E΃mPUCdSR3TωǬvj0JF +ych">8g̳Z:+Uȏ߳+M.igO| gAnN!\e>Eqϙ#'fʏU$νRhOX;< ~xMb=?޿OdǣWoNT.5O Fa'ڳX'}08VF=F!] +2I jAYe!i´) Cvجd-eLkM|SJwy + &-J*!N=5EGxE$5zF+%8Hw^z<-@,yv <O1ڔ118G5Ap+[S>52JIӸ6F8*YH(=_#S:JNp Z8? YY ؼx:; +.Sʝ 3Y$Vŏ +O&W &Vs(-*_j^'h:NbYb|N/?L6#~/xqalb>1q uCT,t_>\6CWx8תs ]Qp o1[گI={[a&R-F O#,*.܃م8;g,OMs + |;|;!w|ʮa/^@TkCN{Bupksf ~@Є: $7J +}$k${}6 tzEDϼӐ >C]p]LQ>/1'ҀzM1O4C-A*esBuq%(8lD8epw4 )a7&MZ; )Fea;\ O%H@*_F`!Er޺&F2odxX%n# U{qs-nzK2)|CFy w6rD0uJh'߰E==P;d|zmȔ)/l2azޔ4? 7^z)+{@]Œ7j aO4ۡeVpk*II(ݬ#c2SW:ܕޝ3Tu[5{(e꒹ f;'CeTK8vNlxG{XVȜƔ*١~ #HdgtOU| HDӐ OMgh +Rd匝R,mb($*!yχ}2r$u|,tj^σWu<3ln +[.t +ZV 焭Gx&q`(|0CW%;ǾRxx V~M N  +C0<(yUv!JN&?`VazgT1)'f]&WbΏ2Dfc\0`c5s L]Γ4w&AsM',8 [TQzFoA70r ]Q,uJ i1˽Vh{c*:HFT—̺I){Iq C0yLۑ§]-McփXC}RsXlI(^_]vgv=AzU+DjWeWSL_T~ ڛAly.X4iz +V}qcg$V*N$Ӕ4?hXh6>GiS]17.w}/uԄ$25Z_v R: ̈d~GR/@ْXkteyA~t@A$BlfEm7OS`#Q$noZTKjk+GBBz~[C4ײ +cbґBJ>z QPP::vWUKʉh + i8+]); qqG3F. +Hj[_>r2)[e%@]D7Y( ?Ad*?kcjnDcnXՔUd7yQf@(ԣ̕VK#P/5#jWl@az4HZѫ AɸCOXPi ЦS>>}Wڗ7WU}FnjkԖ_i}unϒLzx#ӥ8!ia`+~Nǹn1Nz53MgzJ^hӒjZX0ɲhq_JLkCWȴ⬇ :H picՒSi՗^6Zgѥm\ ēi`YuMeX:4uK``Jܲɬ! TzBO!U6GrGTS+|}G 3%)|0k2f)񬈏 TjM1rc9HQFk$ )YqR%Ɩ[1bW˪9ybDZ-oGJ;j~%rQ̺8ۀĘ&8E+eŴiImZX1M}L#'H$uaL5ŕc5>VvV~Tog ~62$TmOvIfwzYAw:\;A?ߔPqpA$!|RE7ZŰQ^a zTe`iRYJYJ<]I5ҩA[B2*3Yz0nÊ9T͡UU+XE9vjUmVb=b;gl\]pUVշ%hUc)ԾgRUjW:ee<Ʀb߱nr{uGqzjrmVZ=H(yZ;Z"`c&V&׭C686wokuVm ڪ)E@k"ڻf< Mk7B㪞לʑ -u|W vxvLLu.\  zb+D.qu)!-™.ЬjvW +)B"2~`1otzoU?j\/jZ3jQj+眮zƷҌ;vinJ͗?߹f6j+\sbm5W3usⷷZR[qi\_m]Uۜn?JLuߝ({ߛst43ؾ՘syoֿ饸rM[93qӾz+ҌbsZs3hi\t42iQ(QHPX'#t4p:kkXxkgWkWLeN9y6s5ϕַ}?֌w[4]Ksu}5͚8[j};kkZKm7߯o?i-ϿrM1*ޝu/9^g:j)Ƹֻowto|Zhg: _ϫ͗WL赔o_WLqT_}]NjnҿLݜ樆ubw{ks5ۿ֯6kUy_k-kz9uŚ߭g:tƟ9?ݖ[8}f\>{Z뽼rwb3 LUrT[Kcj)4KViƚt4Z9չWZk[-f:-h74|K[LGu9lW~޸׵f:ߟ9縵ߌ)O)G_O9ksxkR֚u +endstream endobj 15 0 obj <>stream +>G5J-)[s8.꽚Vjuտovm͕g|oJ5||ickͭ7ribl:~4UWs9Wzlt1[[ͷ[Wn7bJ5i>G59{sKyś+9})qeN{ifos^)_^c/5_jb3~jwӚ~t]3m͜&r}q9f:N3 ߙrT뭔jS/95o> ;uWZw}r/Ó-~f,^vO͙ѯVm/It'Ɩל7ź/׃h#ICτÌu ;T\gjPw`.R6z\蕩S3Y!e`[)'Q3c1 |}/>3(9[w/_/?^ gY@8xplQd%?PaMb +7>2l$P`9Fd'2=5^//H?G1O9qy2+˹gQk9o[z+zW[+׽1~n>^nZLzmUWl5Ug5ksM7om{ߊw}if:kzozs5MW}5ǛS][猩Z9mYcfiy>S"M<resf"Yլp +,(ip&I%H(Z QЅ, +j+he7g sk8.IADehX42n$*5fIv,J %JTJ.RPV(zJ Pc!% p+B_L d/:zNy"b_4n APl4 ў\"6Г.bzjk8Tzr"D45,P!5A$P< 0); ŦB:{)FQȕ Y;DQ7Qʇ6bQHDbq>,R۩*R<:j7C) QRH:܊dk8^2A7K"1 +*Nik8r8:0* +5L(ʉÚʅƾ61\i*M܁I)Jŏ|4+ mWБ%D2 $58r|d  Pl G$ $`Qhi@(O IF݊uP#p&8ߡxdHLsTR߄l MmY'UfA!,x$'$(m#;ؘVMP<$qCt<0RB ]h խ(L??Lā}BSD(  ȀͼhaI0V@ a(<!4>CXz!”+39B># La(8ppe' %zy| J`Vyp. ,`8`.Rc@v/j9!bRP #PZ dH"A9)0R[Y +]kU/QeIS'ҏY8a&eBE ֢[أ +%wk8(V@E57|"  61š +%"u<b4kYs,Wp*RHn G$#5uAaPпbIcQTf-I4 Xr%8I0+[ÑD`EdSLFRYHSypbt< A.,2Zppk +^NxPfS s<췆kSEJ"e*k*z Y\r؋ "X0ln5OD䣒RC1,զ-ҿ?xFh 9GW78IwCO**1#%zg周 +aa=r@OyBD3I_z蝨Ouӡ`DF1&4tZ7gZqkL I٘ᅚjxj_63Qz&z!ƌn4M4z4M +LM04S:ziTizXd`PY,Ob>++ <L`*zI+S4VzTLò'+7gaKQKtؿ'S%5cSr,9 +`8Buzzlq2YS+HzZ>5$N$i1qN3`PeW'd +1zaaH\TEqUnTumF'!xOtΊNDuiP +b`!Stu*3m  Yod Yo̱Yof$fo(0L +3/$&29'hq,DةvBtLY4O^UҜR]'61#<&~Y0wLSby=:M%D*@IK%BY"HHDl,D +b,G"!081idfrbX"%`[G,)W(1-,0Hxe< +"D+ `x!4l aS<D;:*C 3N^*B i5!I1#6f4:xpyxb,EbH}+U<N ˾ :P8bL("שLiPz$"*y4lH9l죡`@R25VTa@n{ +6%fUpRJ 2 D &:0&:Me ]tL6 r.FI!FPDV'bjNO]At"܊`0`E/h 1IdY^T@tjahNMI+. Eqdk8V^ +X@tjMXxXInk8L;)U060Hp yIǂQYHЙQԐ72*F<0*KSi(U7Y]wB<)B|" +!fv +踦L<gTBRMDh* s쐖Mah]4ptNV FRVaELES,[1Itft|m Xl ЙHt\m 59t\HLʇၕ1ۆhpXwF.,&84 QD1) B +L2 /Nv9ì,{<fE^{m4e b!N.,w +HPQp+rU&#\!36mqV+&v7̶P~* +j>xxFBoe|UIel 1|K-@<-Zjj8P[H_Bdjw!jg`_"7I-o়s~#-+]YfYz);pPDmlS7gchdX$g,YIYT 1h3I_7֌M>R kSI+D.o(ҕ:6Dcz++xS-NVm:FSf6%B9-R*̙JwAnTc{m4  +"dBքi̪[;^Ap} ё_GWg#4*Y[Byx@Uqje=M9wUm">ðpsc;(BDG!,ʓ+{hJUf zXpK%o8FĘTIњJkod.,겗5k9NJwJS1+4lp1`R=CO~ GDM~IE\gbk})5E%I53X w۰هܓ6cQ 4"p1cEk:-ёZe#n϶p)bIH&`Ƀܨ.+䏐"SaBpZz<GgTY8`ȳH;h(5N27,Hkp' +-㝐[ p@ s5vf۷ +)]2%,qz&n7i$(vi_Ƃ] ̵}U'b!k +Ts +,B̷ll1Ű?&w6`7Rw4ʓ +fRwB[&n K%rux}qE w:oF7 Y!]lC0x-aɋkF([eb +6bH.d5X-Y8f{ a4z'49`sB׋̂!^%P2mG?d@(l~GO)/穪ȹ/rXu9 "3g:RzUAD@p} M #ikdI>>Y[(r洱Ʒ6h۫ͲzO3VH +GNU1&RizEsLDLR| r>%C Ř,ACwL /E6 + +䈯Sp/ kѪЖZZ~5(*ƕ_-lkG{2οꀻ r'q|-$ ZIV&DslԦ+!dQ9SƦ(;2W<&Qo \^ 8Aٚ3ˤ%(TM|6F`wS|I5I\ oO…3 CW!^#($F({KK8آW +쥏WL9oj~RFa& j3O}ry{(NuH"v!TA]JĐKAowaB"R80 =f]_hZI@WXBFxV_V[ щ|#]Z~?s;gD_jJ +Lpyf}-be0@|wyeNdf+?G'DcS0KyL' vlU$N)h~ +ne\J.@}cCϘ]\y/L͎Nd Ń7O v#H[_<'\՘ Av@LSi tZ]J$!A}x-āp5\:-pҙ { +D#%֧d.0}tHIk8bFU(qZTYA)7_m,6ʕRE fk:*Le5 O3BMӫ zs1)<4J&yҌҌb/⥔Kx]GNmB#(BoWrB0l&DVMcA~zkT1!>0BH7*`m|0XҼ%nKR\gc&c aӇU{CZĈvϛsu,*8k9g1Qҫ$nH U`ݛ@zgU b!K*srxVbT5P̵~0D;J]hH뷠)9Y5_򶫩a>mZBua>fʦZy\q 2Ujh߭IUGKwE2],ǭ?/j cFXO2hALhsUcKP o`[\Hԣc^W:N!x]>7EhS*@Gsn#i Ӏu +jPZKsf9m9RJ{4ŤEs1bvP繵.&qKgD0*uTqpý]H>02JJΤ6H- +׳[е}S$p&&1mPp%w.*SNÃ_9A1#ax=? ƿB } :МRJ u$b<KzАR^[S8{\'Ȅe/mzeB$p| =F_g&]shM'sz-іhCrcc\f55p-T+uɾjkjrYI̟T= Ο>LF$VԷqt@|AДlF8:7ϰ7ˁf!"p%rS~!%ccqm,"l nc|Q…wEN+ܛsTp +B߉HD,=>ڈW^gk`AЏK'ZPW˘r(G|.{oBnahDĎ jnn{vQܠBbC< m^=TۛPm`"xdNzbsґ{|/Z3qL>(ٜ56/z/qX1#}#+LU@W]=־_}z؀_4?~ÃEs錀)dmB#%,T/)9{Gs ?RkmFD1x}9}1!񣭿5a@xU aʔĒyFv*6HˋےB2 +z|qxE= *6WF yhl85V87ܽYFUV!pG/ğG.>Âb*4Fitp|Xe`W?LjUo ǰ)l my9nTEtbprS{ +3'&"2yT"ՠ&cY"p +vr0K3_R*+#\#/S&PE`$h RDg):"%yo~2`5>Ne."b +6MG5O& ?R7(  KZL^LUn|r + UU߈e?HʼnhĨJn[FKKlvL#v n58@B_+<&;bieN+3`'1Z}V'}CKbV4HآȅW-!$bҾhC EYG;;Q*',Jd8캴^r{.Uxo+FJ,`x6m 67=,|LHvCOO!IНy)E7lԜ2 TzJ6€@d1DgW) %R5x-@Pg c *Z%bKPP9gUM'':r^Wu K DRONo"ZfjFTK8*$1hٜF4+ +dV,0 \yQSB;`$,qCDh 1ciݠ4Ulx]nM,fEӶfqCy79n'0WۺvM:x/ג/|$|*vQ\AȖZLjw,Qh2iÛҾ+!i).cL.o,;+pqثMJYDՠ+N )˟QHs%s{n~.qY' P{&Uz:' #j]lo+?ȟʹ*qMʯ˦EWAHK*8 +s cJd#=b[aqQh Ԇ-%* hc^_ר0Hf7_XG*l}jh|+P`}D^KD9;9bŧo";G-CɇħUyTﰛ6kr9k"X3Bt O,xyAs8u.EWu@˭q@ *r1i :\2NlcREh*09PTBLRAyDH"#svyZSNPJL+vƤp,,Đ"N_դ 91K](%9ZGiDuƞH8X)TXO 4NԒzU灅AJ8FLj=hoEÒmK+| Uq?78V Pɍ/؜f=?{TA 9T{>fkݨ 8R%pA wj2l*3ZnT?V%S{7/f=dˤ6DzUtC s2T[GZ'ۀH3&12aTQKNITK:Ri˶EAw $RhC %\G}؞ +gisڷD-߻ 8Ɵ(v5׀M!\@ ,"l}jg :>2=OckA ܍i Of]} +TL٘kɆPN=ܔJ[3Gѳd3k4yr&ׁ+d/[b%۱ aOBC/z.\E]j4o5693DYb:U1̘/d +T=뙭-|ب^(Y׶qCKS(yHp +<,QDP;=L(:8wẌ3; 9ؖwQ|^\ -_Z󄢸9w`s<ٯ\ha0y+5TJO![A` +z0kB+SzՆìFGyDNVp>혖OĿ.3W DKb7LzE6~i IoGj{)'!'ڴU89ѣ_H}_a&3noƃQz5.pnPj.Nk#,{)=1D)O:\4@(ovGU['A!o4Yc6{|s .}/ȇ~|3nM_ x mЙVղd+άy +;#{{ lJVO +ML@DVii<68(rSb苊1#$Q^;C~eAMf>Y0rLE8|8 U7Yf +&3e0c$oٔKAQ $(!B)+#ʹ|*۟S1 ղoל,,}G-a޺"Ď}牐$ɚFb[$] к~@iR<Ѭ$8["V'j gApj)Sd73cEiD%MJ{e!l_~;[ +Ə.6a_hz)GX}U +ʹL\7͡V,\fc%pK:CY){uR+|qmrR)E+MmX.%ϳ@qCv9:n3'4G"}HmEcpBJA,qn2/l Iq(eDe~DTOÛv(+CBi!fPLM՟ ُaA8G|S2.#qH0OErNYPRG[s7fKf 9to4MzLzԽBcYrHcU&ȿ1Fig> %dR;}E5i%{KnE+KYNgCLvhDYPNI;FOY{H7h@%?ZJ.KPY8| t%yԂ+(?B=d&[QVvxA#A˂wP D@ !`/䇟;;!@)iDɫὦ?/%kF0(e (e,{ ;5Q*%ϣ +-{Yt\Sk@]tf 򼩋VzURBMvsL!z#OG`4*4p-T+ Cn(\iCWR13PYlsZ.o 84Q_Gg<}iλt|f} +,woħەaҶJ_O+CEu] I1Bd?gJtc ްS-/xGK>+ +>x#1 A L a!!8sD:}u+)OZrXBڴs\[ػ`~< +~  JAc&h43َs2Hü.3F"daޅz0^iOq_hT^fpAL|a/]aM@ 1Rh< a66ȊI ]@P4u('"e$Bڙ-p7c:]@`khT"6T{l8>n(@R)u m1 +6W+/ம1 $98:vo1+P"-p~ڠiK]m>m# l;sn؁twgỶoL]Ii w(;Jz0]@` _۸k|9%2'D0DUߠڸXN-BJmI}=c>+pIt s @q0!Y& #_N2 GmbE):)O?W[gcI{0q'@iQDh4gKACm]@. a( |Ű0peHrJΙU;(;O;G+c2 :OUJ. Zv j. pӛAV|}C;\-(XMbz[n@wmYN:Գ J#wlJ. (V"Gl2ij`~QJ4"4U.c#es6SF^.8fƵ $8@~hȽ6plFr'k'9Iy< [Fsl0#9Ŕ`ݽ&fY˻ 598d'? +dL̳ e]@=חFv9C74ԤUoU$i1r]j&9췇J+]k-$N޲jhf>)E}#4Sgv;XC@ . jJQ d}Immu>v#>s CiilC *.Y?8vLqt5c0\,e1Nr, +N#ڜ*FVZTh67 h~9bM4:~6/3$ڡlpcd/lٛ$lVU]@RM'60.~[uʺukU1W+3zdcdL %jGEq8Zɒ1æ. h&R+q!7F\)3ie_:c qbKHU3,X7ѣQ}xJTe(QU`C|`C;N!i$rf!L' JpCiH角ydt4jtU ]SC=FTJTt0X9Y`4QdSd^CF"5OٶLĻ0wƸ.]lBPV q7z@hlφP#00ZC ;F8 I1nr\-A+@ZD_~cuvѐ<-??9Ѿik!Kj&Vj{:E=di$Ě۽a 2 jℜǓ%BlɃ!B*G?է2~rR;¹0 JTJmltEF /FB S\\?cn.waQpanl\d^RGەzԤ7Ra֑tޱ4XicQ,cZbTӐeTGꘆT8GyhTSNASP*t,vP4d2{A=X +0mf=DèB7' +3]xCa$9H. LρF#$FFKRrJrny:X$` 7.na!cackG8*);Ƶ^2?JbVDk&3L,/QUvhN`ljFCzvWP<27ڜm!_K0_BU;-4$W3-/հkEJ :K^ ݉sfrv FV|b= = :o#Of#k&;c9_N(5H*cNqzILf feS'.Hgw UmB̖'du/O 0RU 1u V껖^=9sD|yXgBU>vvžYι. BQQ^\TiXn  +qªښ_NL4Ec'?30zP\ӰDUn|Zߛk`8{rv6)>N.2Y 9MXMF&[CVhXMz٬9)3I]`]A&8? R|U"YC=^hGgS}p;?XXART +՞<-} 8Xx9"1&a;(r$u +7uB 4eebTU lMuؠh`-),p঑b+5j5Cu:isgX{<_zÀUgwA:#/X&h4gEam*#7֏L,vFLӡPa"XX. (ς7W/~/U&cZ3-gt7ɚ1Co=yX_އK4#Y͎= H MXHf-񕒶sNT&,1X9E_)$>[)S5eb#ˋrvZbZ-.*r 9EՉkMT먍s6 -rk6 \*JCrcv7#uZڗO.%keF i!}⤊U,?OK"KaP~? #Y9,6Cd;>. +죞 (>&%|ogeb}d5(ggXf䑦{@̱ݢQ ̘[4ra  Jb8]hy#܍p]!f7?3Ls}X‰5UvC;Ӝ -݈Y^` t#g ;Kdpm5,kn3tiv)N\Rq\3!. PWj9*L> ]aĴr ePmpZ/4hhqT*,g[xdmuH4,VwW"-uF>uF>?9jޢ#N@Ѽ cҺ%e tw89O*cA. 8Q(% ysUTh">a>EP'/EÔpy\F",E_ "#"9%6샃& ~9Ծ6b,=iM:ю1Ld8!/n&l5. 8-[b%eRTX(8RS4fKS2G^# =#7Mɦ@ĺx,^1Z&.CZkL|_Q&/$gQ:c?9󞧈߷2-ee:mqyv gWj[n/d@g1O_I psoT];ިQ+;Cx (3--j|#ęCְ2L3‰=^1._]EnNRb4h/_IK]@P^D!h ֻ֦]R@u.a\7 +{Dj36!DKDZD.00J`tE~.\`SǶinÚB ځsL4x(V>ly*9<tkQjr}U'WK"g6q8v6x@9auY"X7c_81XoBᐥ99 0M4qiV=GزR|qYiju**N%r8rvƴ~wkdvٶ-z9h*EZ$'QEf6+ -YZ}%e l$nlKˡRV/E[.mh'a6} ?ydLF--R9n + +韛x8gQ#S6#YЉLO&8'Te |5.v{~͛Lݙ5Tde2F -oRU!yu$)MHhhT{X]aMi\s_+=McCHQ2;e,k9qT_3' +CUy)m6 J +{ $ N%9hf S/uB)Q9$Nq`S2`2 r= 鰛3]t[ rLlqnH\g 4OsMȑV*nG! +((#5, ٙq|^9f ޕ /ו:-OX?ƕگʧo5kInh} 2:(˽K!e;/8{uU Ah`O{A,gZCHػ@CKk-w].ǎ'}Z!Orp[-:miDЊqL3q$Wk . ,{v\XsR#py̒9 -b&y2"Q2Y֢Y}|$`|2TGu8t?r/jg%kΫYQZh8%F79v+l(J&I'/H L-UY$MnVxpE7hw#R*XG^PCw; RѲ(^Sc@[NQ'ϞL3aQ"ܭsfKd]Yw2#FNc1_qVuLrF\"ʺ繍JmlLZ gc{ST/z Nٖ+ɉ󫬐oL )C;8$<0EOK4ԑPc1GYlz:=)EΘ$?9bZDX,?#`\-}tC*ɵ)G,o;Y,Wnfi<{ZrekFF" !u=:a[yϢ,-ݻڭ҆6H^r<qpj?eruLjp#|jZ?+S)0V$Y+ WhLhT 8ɹ0:+4⤙vK֙g>ʢ5_MMd9L9_yR + #lqq8w#g +b ʱJ3_iG0Z @+:ϑ隍 *umr ljI _JQ~PZ4\e'ͫ/]d`A8]&@'~DCrc1,ۗuz[i zd]?K.w/96X".C>GҜ:GJ[aқU +T!x~]-(je "Ppײi:N[Ԕg-Ta(Z^xayU,yY͸ pUSņP[$RM8n9!r839"bY$Fߥ6*b;,AF[2XA:jy>6 z90Hī}f'~Tӕ~E+zi/Tg4*v8aO<,f] +a_b91g*d.n 8^#l< RQԢg$tB> V4TNb]gw-D 1s.z+LcKm@Ҝ +d GsH&nѾ"YɀMeЬڰ Y wb +ÙͲ@gk]DB!`c a9j2*;^s5QW et Q:g'Weg0({fyIUhqA9)RY.QNrqInV`gp}i7Ү=\}9 nHk3pǫ`~_NK=@C!#&wMIo 0R8/'yMlj3%FQRGvs4\Wk~z [5T;a8QKj\#%b?T7ɴoT@V$&aV`{*'w 뒊҆ k +GKyF8#a,-C@G9&l9aKVN?h.']]Ě@@Kݐ%Z0Wn3EiPwHP WnPoeӋ R|3(qlW\NiiN&_Nkɖhac=Q-WbՖڦPC;qՀ<6xj6RWU|c&PAI`%4 +=F!jsRG6Iaf$i4#+-u"uyxV,o7*#9e"E!:H?(qQDDQ҇keDGnBcZQ<p(w6QGGwy;U[`NDbI'vCuUŹ?@ V#[PKtbIΪz["|d6cu =2PJ=߮L-!ow1<>yĞYG28k -cifPr ;'|iy5,/;T5GRhyFzaqcYs"68ˉ-bHX|+jyjopBKc2 # <<9*iG#~!hixϽoT<0n&abJmGy>O+ ejⰗ Ӑ)tI|;QږgV26׉J,q5:emT9G+q$w>[A+XX4Ҝ??fpke(ߡ swAG3LMVDS'bԗ@. 8#nޏcBa9,]\ȵ#Ҙ1p!P PƼV"̑^To H i8:cG.` 9"-p8In^@`h'`Uj=24z'F|ys$<ǫbsG9/${v%[a|}s'c.sϟȉ3()[>ZZ!O g -9ʙT{"a-nlRv/G\ +1,g_'pbG"aף +Ւ<=lڻ~2aeVP:p9K˭t4"Y1Xvrw gR2繛u~YƌYu`S;`=&Jۥ. #1R^d6}d]@@ɓ xަZGEN 4.*e7) :k3`n}hv}/j/_˒]@2+[jVI&&2=<a5%k߫ky;,5a43܉"b])VRT' nTB8!NZbQvY0FN%K9ܲЉ_<{F!,4b\O8D<I. 2̛[;/#&DISX&%QRn3q~; _R tbÊ5 Fd +5tPݦfeZK*QCarV\ gػN^q(w2=n0}NP14ٙ6~)`4&-7M޲KVV)"yPD y0vG5HZR?E%Ch WX%G)[o87IYYlI_|K8mH] +2c|kɪAr }o8E_aZG]Pd,x`_?˷NkFBTx3"q',y|֧LGٕ5:X0>Sx eK4&ՠ8qԃJ&##-GOBKˣu8//mrArwZTM"CoawѲe/:cDۖdy ̐kZ'lsdg%jhoZЁBrQ顶2qusHSnG ş<ΖO$8G WH2YSFe$D#'#ns$4&'jX>YhpKmF,/{6քõXi`>f4:P|2_NR>7;UĵE5Zgx:䬏^{U]@pXIp? kv1bJ$ĺ0 +@u z('5y,iqk&ı9@jH7Z(i-B>cM\W!TF'Kdێ%tC@aJ)d 1А# EIS6 T>P*(0(AQ(RF$H 9*b^F`so4yY_C,C.KFZ9lõ*kBaj))Dd#lTv*֘6 + B.O^ +ͼ#5j7bYVt.+):}ukafMֲO^$-JSpi&-PT \L(F-ˤ7 +W ٹ}X{фI 5_u=7+A7HqW>-$} A"95jp +C RBU|A]` +k\jyQkwg.PrImO+!]I&ȓx)}=`#8~FC7n + 4 +*| +-1( gss{#]Hb EB \(o@[O u0(!m}xH< BqDAKZ3V8Ds;8=v=PEW&eMyv^Du"~m}Y95Mݖ͌Pf_"LSd],봖).8h& AH$DPH DTli^сQkr $'r$2{~fʥ^XJ#J?j&o6=$w,3cћ.|٢pewy3edu-JsTg L-b'MhJH#X|a.z;E7V4* ۑ"5Q狾eh:}~2zKM2;}4Yx}_,Xi+_XUsu_ }]ruXO n '8vw7povZOYhQso67 Hef&_jy4 ٠ F`> ?)Oܪui)(CWȾ^ 2` [º鮋T|3c4\_ y1>Rܠ4rB# @< =N1_6оkYB=k`sDD0ęT)3.7\d.%bt}~VP}K+h/d%K0/6MIP$ࢡ 2.W+Fx_vXO]|?"*h>9 7fԧE# +XagcYІt?q(0zJdF=#!ej4D228s:79Gφ˰&rH4A{+8|kD?L㨕X@(ӥ\kT"<9F/.C0/=CA}_}qzM7Hd:ĖTrI&ccTBբR*k2(BE"m"4EӄMs@M|}޶]_i!Yp~ +$MrRŸvSI ?uetO LV8gJ +K3 @J5Y%ǔ6:5R05'&#.:#㇆3*)6n 2N}(O%#YV.XF Y x_@Q5HHY CSYeTo-`S._ky3E`ׇEfQi@c@Mƭ-:~$D8F=ɳވ}g@1S F Q|elR3^#IiZrdJ`skC:B h!:=܅g`Ƴx(Da4@7NYK;27 P+5޶MK\c"ZK%%;`.xj~ l}y[G%mo0ʟ J_[ZUGα2$Su`> }I]U*@\΁7+qj MWh;{ 6C0h%OI4j$ j5xܢ0؇Ϲndw:RuڄN_7 jkts:i&jcsR hz`Sk?uy뢝~d0@u=qXХHWt^W^ xz21ik!>2e5Tl qC!Dy iDq٥OK7 ͤԜjz4$ǿ'zKbcUlѓ +x3: YM{M{iDS/CCDp.OɟX@=2qdS4oR}vgbVd?]ϤR +Qۦ[t5ɤ,52 ^Hy(G$lμ׶ް z=Ev~">3Q'VW / cK-Ϛb^Oѣ[ѓX˷nGym Jb'1`|6$35y$>~v?HFZWW/]dE(^ƸBtNb5{9y2k>L'uЌY}.rP@>?ʼ\5G,f˫AR4ZGw0 c0*fCS}ܔwh0d 6ylz.lRCċMy Y ؀bHeP:#Onu)5ʦFV +P!Z3{,e8 F֑>h}/Fp4q{Yj|&QI!'wpdIOU\5)1Ipm^pk5\Fs 5AEF* #QGhQa [S '7uj7ˢ)! KgsjNxuM s+iȲJ>BˋD^(PE)& }ҊGݵAQ8a 9W"L"4yW$|"cHN&bE.XS9Έ̸֤ZxY]B Vj4Y Ļ5Uۓib9\[:R](`fMn@NS0К!Db۲&w&/-|`}%㬉#H&*5q}L#skQ ƍy0F9Hic:7 +70:B̠&0Bxb: <`xKa.z5}h4m§Scxph$VرrG}#S]N˛Y*zCxg~\|B>1jAٌR>LF,ig`_+ >[SRz.ISOٱ,Gbj[Tq\kVCFd{R18V?pfqGHt!6CcxPCP*7`{cMfK+ +I1Ih3~?jYttHu$B^\$dLhڌdg>8)OB9c 5iIa5ux97պjk͘Uӝ~5 %PĤ$e| 8S#zKz_-T1GuX]NC|+M⥏0R)U2'[M? +VQY7*l5392ƿQe +&AD; +f\pta&A@sQJj +\#l8|Y6\#(DZyƑKein+)L]^~h\;L5qLuۮ.B[:Qj6rjxktz!c1YjX#?pdQ55G@'T#F5=} EZolX㩻خ9+HyrrG\k:IB CTC*s.SACh43! ĸ9[ăe ǥ%͢kP}T&,5؜"SDj+4 qDAE[~rce;5g)/TAQ=LupzͣTo&ճ[sPz]}0-R] 9/kH:`|R"5>1KY;)u>rTAd膖d<mg|+tAnZXw7b]=7WL:)3鮘pL!蓿 W>^pZKD\%kCc9AI-$AB\tÏHq" *5РRXj|Dxbx@ L +t4~H| 'pC4x +$@ԑF`i\|{˔/SX8Rsg@t/кq/bQ̞I"֗80#J /?;FD{O/ۤf:}"Ɖiry yحq;+<~{}c#->GN&{ 2geYM-c߳߬Ӝ"8qu !kYe)K1a1ha9" 5Z<1X)")-Ԉ5ɰMR !`NHwZ#L;"ͺԇ&>~g.,:.eY %.K($#A3ar8ě2 p 1t~+En?]N/bV3/Ǭszmѭ l($5־s/O4(}MhBX;pDAݖٻ8-5NsP` ̛Gp4}97 _)1 u7FM[7HPh?,x-V\rP;)Cuk5j[<":TἓʮVֹkO'(z L%f/4+B̓ѪHќ1;oaE,0hU!dӋc]`"22l]8먌C׌UZ,I&K >M.#{L=$RRV'E$="Uʓ饄: +#y.ldRyt0PVZ$kD~uC,zqE*،~w X4D'_/č-űB)lsci7 ȕ`0 x + +׬\4'GAcHQRb1:^_*R׭[%6nT]qMJG~I\A6փQ▶DROųdor(8F,{)ړ܇1} BcA67rPf蚏) My\C $zk\e;~!:i?ﳲADt&yX(s +leOd,&WXD [u1$ePfg Y18e FkG%p +!M I0*klHf!ScњcCU>A!!QBK^3LqXr*ގ ʿe +DNY;Lc-gߖyp@A}y:K0ck&j b e ӆbp^^F/|VlA ӑ%=_ì`oI*& Q |$+ȋn@"9qf|+m9\F<`^eyÈ'w ¾RJ/ܔ}[gGxle9q>A>55t6#Ne_gncfg(% \?:Pfw+1f $S̰nf3;.7g +2Qwe6&3C i~7#֝g՚p +Yuw?f}ēh$M ТTОxlN݀jwD~_HLfr8 ч 1U,a?:q{d4qF7$S'B6 "5nӂI7X2`MGQ<D̝2Whʉ]?:9)Z.1c(붢mY\oo?dmAHZؿ"\&ZjO(Y?YrM | Y[ck_aJ⋯pJӐX7Bߐ DnG"Tƅ^bC: +Z^}NF{`E$XѼRޖxud0R^/;34-UX o!+:Ҿh_6_}ia3E3"SK.ѧKm%)ѷqS:@۫@&ZRr(;~D~ +β ; +RL[\ 53~LkhUjAX|M;5DDMş8Yrd},AsޠȵzRUg +BpM]q!Cc]][-?Xaw3e˞goPJP?v6, 3+X*@,9fCBOb{k\%D}T`H҆Y3yq38-BT<QH5{fAŐL$9=|9>oN \FD ,CavenYvUe4mΘ*+[kC +U,p"c&4L %qBnx$R:s !OhPN;A2j[<vؑAU_pniG2Ƚ+H[J` G2;Hwp߼QS R}^ mM_XR.*,vꑷ S)`k0`Bz3/<ܮ0%i"4Mq,"*Ec,ICx*^WP`X\i:XӕUN6$VT1Q G"T/^\ aSwD %Km2^1O&xj@g~ uBmdN6h~HrXiN76Uuys'J'7]mVUu_%0Hj}{|C![ w> '&'e};-OE.hTzA߄hy~Jv.g4+=/{:퉰 |ְ @лJ4pIYĞ)'Ó\!7%G +RK"VUo75 +JBboQjc30B=^`Q=Uw>c|X:6rE (k?=)LIC0)"`8|-2R#üx#)~uk6̟YTKõ \W2t ڀ[^WD'd,t;}FG²L Z_9dj,[7GJAgK]i %hbֆ3* %KLmqp2)&+Ib|n\l[)yUYP ;&@ ' 0ԧ0?o +.J, @ +m|Tmܲ6:.M+@ u3m~KOϗCQCN-V&1^-We_o+#҄dEY&Z~8Xq-{5&#*lQj~XKR7~+ KK?ZXuJ +6mzy! -xkm7,GZ,R*;0}6{N/X2B+n<|~7FϪE-=-$GTT@r, .@B""%K8F.?fzK{y{uc`K +5o f׵8 +Rbnp[D3w %Ԯ5Q3 +@pudbOHM3e!f?. ǤrvҤh8bxL09yjk #jjlMI=Jі6 9)/jLj#6ΥdBchR ZFk ~;!;O:LQ©!O ycR>C,6ET*)P _"B[t|lOakNlvt"H5d&}%" AZ8g6c>=)shEN*޽uQ)CU%vhcZ.ֳ@{ߦK(ݡmq!8UOB@yu!ZǢǪ`38#%VTtk+׌n.aZ~+`!wo[ƻ!L*l`, +W `UX5%ox]ίsR!9Ek8<8:oFp,mp8ūKN&lnux?E6P36eלu$ H,CpC5K&C,dyb8 HE,=u Y"K!֠l.7=Nvv$t>D3! tABBP}R N/\9紺3hfJ"ʈ/Wb. 57sB<%@KOxރg;GNin'e+Z6AEBNB \0!?pm!6ߒ4pXxڏ?vG%p/{m}J~ԯ/z09U4[⁘fFk2 +hzfmQ u[kUx,=͛1q#o\e ݬC殗Az2Z& xԖv)M4?vRQ~=2 99Ad +KڮĮMyV*4B,}ζxqgu2^KueYMꚍ͹a/RB3ރ3FUl ›3Ct1Cq2:> e5[d-߫hϓDL`rۯ'KX/FUM3LA4uiz.C1Žq[h>~ [WCdC !6`n F|"L+l +zFe$7} ]qA(68hFG(U vs7 кs oڸ 7rƀ2F,I`T-ᵃ5!|T3 F!b 4CRdBk&UǠr_1)ZXp>HE B`DY +$@)`s#Ѐ_~݀QG&Em/"<D6.*G_8Lrh|TCH.jST357bX- +?M|/eˉH[}p] +>n&|¾2 $D`‰zk*FhYGR0#XJYȀUVqzH -[տIRZ9sn .,FgHbjԧVN=QIhQSXTC!>޵o<[2=  +,[b + +e 0JC_Ж{ARGW+%x@!"r,TVN4@ B7z\Mx3j3˃WQF(O~Ó$|^rt qxєMf3mZ̊?梲Ć6^G[.*k$)vCF.4".=* ?pғK,O]oeo2 Q[JݱK\\q~Œ) o;9=P$\? M<5wie~C|\mbg<}`3j,sOYJa戨.',#@b!^H8 ᪬jyW@y ,V8Av²{h=N)ȭ-epfrG h!] ƒ.^֬6¢b˄79Nu \zp>jBǎ +FTytROw[g{aox k@5ٵ{<$/#Kt5Ázc +2#*-94sٌg:dbatCa*\`r3lfɐѱٮca )M8ķweGBF hֵJ؊Ҷz1T?)Oĥ>Y&XmQc߿AWgBKvX^'G/!3\aV^Lf00ҷ|^->P#i;=*}g1Kn0'R9[]-ÉR;J;'g7}~jq!)}2V P،1iMAB4KBzyRYFE&w'ƙ|1 3`ڄm7e꾐&%$K)^w3JaPO)n7a[`awxUUl:X[< M:&!$4fZ!V6iKJPOVndv[inz?J|+1 WLzj*|Yh6te pZ$M4(޹ncѰ]X/ǜDc<\N }W%S/8H", D֫;he5:>CNvcտI&:;lIs?o- +(n@yv;(e}Y8b(p,nuH[5dNg)p݄D+qH%Q^;c[!SF3!r&:֯Bc뷘 f&1o+;@['7QWit޽̮lSp̵: s&%ſ T>©G(e?ޫT‰P8n~P#ڸϧ#,yEe2+z׈XX + rGR,&3Ջ(2C.;@`з%sQB] /^USC?0@%>`  +FN88k*XmgWea玲 +h.A @mQ8kad0M +Xzh8`rytf4K\S;Wލn=to-ֳ%{b>L !ay'/OxFiHu#N0081)C6?6qg,0VW^`g#UF/X5?a95QaG-@ԑ,:^L׸:t}6_*&J/\.0.]9zmɣfS,˹KN0{+2;fS+ sA=uh bbteQf_"Ztsy]>Z󌅡^&. xŔxJ~gؖ~I3 4YgHַD]NJ]px.MxMp3 ̪_5M%Bw]v栣-yZrFN0 WJXػ #8,W)/?y|y$!;Օ=CSdOnj.L\D҄}b}KVG!THM2 I r c[I2Q55;ŌI-Ra}N I<7?VQҒ$8gg6OCEa1 *M}A!# 76o^jZy&&-浑o.a3h2%xD"z)'I(:H׳7|$>r.) 1,% 7 byJyr e~"QW>/)BiȠ{=\^sÂ#*f|?a2$\Rݤo X- |\R|STҟZcR%%3Q0T'zwS[7n +-aL@ ;Ai[BmEH^2;A~Ihl9G +ؼsAT-+.J {w,q~%f*?>i)8E D!l¥vKQf -er $b"(҄4 Hg(8|N0 ǯLZ9@+fkj_RDwu`4 +" qcV5 F +Y%f \O EQ7ep?FP(CqědɆ㽰0A@6ޜ_4j>ji;raI񖫒%1 r4[AȆeejC%ϽGҟ0}!I[۟Ŏe($vZi u!E8"b(r?{c C 8BRS9 8TԪ4RIEd#]T r!GW0@~p&a6rsV~6fvha1< *,FR:(ΐWfHT")gGnP: eY}X[$m5sI#="(cuM }[ܨ)’̩[R)zmaT#BGݩ%Et8DM:F`f cdR*&`FJ$, +($ +AQ0 C1 zKQ~K +șwy浼Us:'CHXwQʄab!"QAA,.B0LtVZ+a^Gaz+q7^y|_x{(׻-M F8('(}YC3|x(rw2۬z'}7L vіҵkLL͙B=)sD(:)Q^L-)('(Yck"aY1_XWN `.U4U~f>z< Ha bH'ON ''Z׉X,a|Ad=&!?fly[~lj|'qp4Sٝ(uuh|bR ̆FL9P*meRƢ"`]@ð ,^l۰U7 @_|=Xj1e& H7z&3Tnک 7P(qIua= )Z^}^ n)u̟=k!ﵾlOD#>XI*AAn Z9 Rg zιLjĩ+ XP +OA%ĘjȧF.1Kzw593;'>C5eJ63bK{>VsIFK{ǘĀ6Otˏ,tN. +ϳōezs>R$G^p9!ToŞ '3=q*H{GhzڱqFnB/b{H{Ⱨ&@Nя5" ht-~>W :̃zY~ѭ"eHX|6#LLW&.?N@Y$xʿ^^,pL<+] ְy$X~'3viJTqoknk ԰J*N651Y/{^ۀ'CBl x#b\Zy@aؙY?8_裾RC`c1;@q>RG +0yzq!ҙ٭Yegu M#vlU[t8^ݯx(ޥ3EHQBgGMؕHVoXKIv~-W=:'3ƞUp:0G}>xA,[Vct_Po/;QxltUC y&;ޔ$Q  gUj7_ZE>|IwQXPqk+" mk4;ӣ6WS^L%F+\|ƎŅEJ%Md׶1شvG;Hйc 'G]H|NWt*=%Sp*5?SOS.hh#SWk_;ܴu25f¯sdU' =[`i޹}^-b^VmpЎ]#  +>Q@T:Wb"S9ew>f1ԩ.2@ `d4VD' s*Oׁun~z^t&iq&p*k +.߯U#.W|+PB;[]ӭI֦k#"oU}^Ƒ1]a5ӏ/q0Ρ;^,v1.@ʭ2(tJIW^)S+̀~* M^:Z%>QvYو9NGZD6 D/da<[zcnPzk^:fupXt.u"]+ߋ->]o"J2UɁ:.Ԡf]` b5^4^l$Ă+7CG+A=Y; Nثt{uuOWgW{ ]LŠ&b\GHPG}~p8XWzʰT.U{jDeU:YmMWi az@C=BмiUG$FJ=p<^̐Vw󨫍 +L\ʙCbhY͑ep^܃Qm{ ^{f@W6AUb(*>Q~$jيyq>z}*=1!lU%fKj_^>ZWXl +I(`nJv + +qZ#ƵzwŔ~yu3mx+LJjWf"cLPd^UW4KEWk^1+U !KW^mV\̯,^y4-!W{B> {$DbbAv_U@h&f98W+P'TWs/2 ]b20tuF9HUsW,B^}R*ꍮNmj\235H."ږJN]]rՎthHr8?}6hWFk/OnYTNݼozTX)vd=#|%߬g+~{4STl]6g,@A) +endstream endobj 11 0 obj [/Indexed/DeviceRGB 255 16 0 R] endobj 16 0 obj <>stream +8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> +endstream endobj 8 0 obj <>/Font<>/ProcSet[/PDF/Text]>>/Subtype/Form>>stream +BT +0 0 0 rg +/GS0 gs +/T1_0 1 Tf +0 Tc 0 Tw 0 Ts 100 Tz 0 Tr 12 0 0 -12 -103.0967 -61.2783 Tm +[(T)7 (his is an A)11.9 (dobe\256 I)-10 (llustr)5.1 (a)4 (t)5.9 (or\256 F)25.9 (ile tha)4 (t w)4 (as)]TJ +0 -1.2 Td +[(sa)8 (v)10 (ed without PDF C)11 (on)4 (t)6 (en)4 (t)3 (.)]TJ +0 -1.2 Td +[(T)71 (o P)5 (lac)6 (e or open this \037le in other)]TJ +0 -1.2 Td +[(applica)4 (tions)10.9 (, it should be r)10 (e)-28 (-sa)8 (v)10 (ed fr)10 (om)]TJ +0 -1.2 Td +[(A)12 (dobe I)-10.1 (llustr)5 (a)4 (t)6 (or with the ")3 (C)3.1 (r)9.9 (ea)4 (t)6 (e PDF)]TJ +0 -1.2 Td +[(C)11 (ompa)4 (tible F)26 (ile" option tur)-4 (ned on. )41 (T)7 (his)]TJ +0 -1.2 Td +[(option is in the I)-10 (llustr)5 (a)4 (t)6 (or Na)4 (tiv)10 (e F)31 (or)-4 (ma)4.1 (t)]TJ +0 -1.2 Td +[(Options dialog bo)14 (x, which appears when)]TJ +0 -1.2 Td +[(sa)8 (ving an A)12 (dobe I)-10 (llustr)5 (a)4 (t)6.1 (or \037le using the)]TJ +0 -1.2 Td +[(S)-3 (a)8 (v)10 (e A)6 (s c)6.1 (ommand)10 (.)]TJ +ET + +endstream endobj 5 0 obj <> endobj 18 0 obj <> endobj 19 0 obj <> endobj 20 0 obj <>stream +H|TiPYA2횩jAgTNQqEEE׃nEmqEiUAEYdD@A/DcXd\'fg11[_/"#{ߗc" ^[}V{n:LU|IP%O_M|g1N_T~9v*Fศacb!Z|'ury[2&H%ۧѪ4rulZU)^q\Ҩ:U4rU6T+dHp_RʵjRPGc̙ *yX\G#?+sqh:LqoX|\ڃa0d`Lð1lc,u"̏.`1 a,+i.Xbqb$EEE#$r +L#XKvIXN,r8y(%i;H)c)$d4Z'Drts0vB2Fa bo2GB~#4`/:^t:"E|9Sh2O;<"}/P&mH770 vlKfW>Uei"O)O~L'z75?߰A ~XOt>%L8KA*d+hl{P{r'6O|M<3GkR0e\냲a lS ¬In`-}\Yf>ós*̶E"3Yn3 'IBIPݨi@: +<}d i$G_e/xp|15Cb:wbH +]x[~~FӅa +ba%,0Mȇ;fu +Gd[O$E,h 0frT]~'e? _2$ +Y[4 ahoneCR/0W\9%nt;j+^ `g\9d7lV/U*fMBdʥԆ2OttM9!p pE4s)e*h[WE.~B?v}xZ`Y]<G٬v'"݇"¹ ~*v1W u:1vE8? t2 !wD LzTQW̙IDy!0_-]=9 ${+rv*G_0A9w|xU-LL?QMB? {{0HXB}gP\S;DFՔ-ʕY + +SkL:]΢nA~~iouPP)x6[SU<.[¡$b^t9r*%ءfΈhv>A4wtU̢];c2Y1M]q4MnAMlV>l,&Z7eMN[lOkk  UcSTHDG , 4fB}gForϹ9>`ʦ<"KjO"](#nFqǃnWR\#?w IZ>,SFYNf<̘_ ܦw+^B"AQ[OJΑ} Uy TYֽCDMA/J*f=$)'9n^$I]ʂU⚎s0rIS3͇1za$J$USkr'5qn,\gPݨARzaP7ɃB 9{>&Y%p]o}]_> endobj 21 0 obj <> endobj xref +0 22 +0000000000 65535 f +0000000016 00000 n +0000000076 00000 n +0000049817 00000 n +0000000000 00000 f +0000171853 00000 n +0000049868 00000 n +0000050219 00000 n +0000170706 00000 n +0000050428 00000 n +0000050666 00000 n +0000170144 00000 n +0000050740 00000 n +0000050914 00000 n +0000052554 00000 n +0000118143 00000 n +0000170192 00000 n +0000176016 00000 n +0000172367 00000 n +0000172451 00000 n +0000172833 00000 n +0000176129 00000 n +trailer +<]>> +startxref +176338 +%%EOF From e19bac1c708c903aa0ad4f2145b725329071887b Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Thu, 2 Nov 2023 15:57:24 +0000 Subject: [PATCH 067/142] Deal with some TODOs, hide others. Left some in as comments so we can get a servicable book produced --- content/11_SchedulingAndThreading.md | 2 +- content/{13_Timing.md => 12_Timing.md} | 4 +++- .../{12_LeavingIObservable.md => 13_LeavingIObservable.md} | 2 -- content/14_ErrorHandlingOperators.md | 2 -- content/B_Disposables.md | 3 ++- 5 files changed, 6 insertions(+), 7 deletions(-) rename content/{13_Timing.md => 12_Timing.md} (99%) rename content/{12_LeavingIObservable.md => 13_LeavingIObservable.md} (99%) diff --git a/content/11_SchedulingAndThreading.md b/content/11_SchedulingAndThreading.md index 958c6b3..49bf951 100644 --- a/content/11_SchedulingAndThreading.md +++ b/content/11_SchedulingAndThreading.md @@ -1026,4 +1026,4 @@ The main difference between these overloads, and using the `IScheduler` methods As mentioned in the earlier section, although this logically represents recursion, Rx protects us from stack overflows. The schedulers implement this style of recursion by waiting for the method to return before performing the recursive call. (So it is always what's called "tail recursion" where the recursive call occurs right at the end of the current method.) -This concludes our tour of scheduling and threading. Next, we will look at the boundary between Rx and the rest of the world. \ No newline at end of file +This concludes our tour of scheduling and threading. Next, we will look at the related topic of timing. \ No newline at end of file diff --git a/content/13_Timing.md b/content/12_Timing.md similarity index 99% rename from content/13_Timing.md rename to content/12_Timing.md index 174705f..8fca3ab 100644 --- a/content/13_Timing.md +++ b/content/12_Timing.md @@ -313,4 +313,6 @@ public static IObservable Timeout( TODO: Observable.Merge reprise(has options to take schedulers too) --> -As we've now seen, Rx provides features to manage timing in a reactive paradigm. Data can be timed, throttled, or sampled to meet your needs. Entire sequences can be shifted in time with the delay feature, and timeliness of data can be asserted with the `Timeout` operator. These simple yet powerful features further extend the developer's tool belt for querying data in motion. \ No newline at end of file +As we've now seen, Rx provides features to manage timing in a reactive paradigm. Data can be timed, throttled, or sampled to meet your needs. Entire sequences can be shifted in time with the delay feature, and timeliness of data can be asserted with the `Timeout` operator. These simple yet powerful features further extend the developer's tool belt for querying data in motion. + +Next we will look at the boundary between Rx and the rest of the world. \ No newline at end of file diff --git a/content/12_LeavingIObservable.md b/content/13_LeavingIObservable.md similarity index 99% rename from content/12_LeavingIObservable.md rename to content/13_LeavingIObservable.md index 151d8e1..9f5c9bd 100644 --- a/content/12_LeavingIObservable.md +++ b/content/13_LeavingIObservable.md @@ -530,5 +530,3 @@ could not sabotage ``` While I have used words like 'evil' and 'sabotage' in these examples, it is more often than not an oversight rather than malicious intent that causes problems. The failing falls first on the programmer who designed the leaky class. Designing interfaces is hard, but we should do our best to help consumers of our code fall into [the pit of success](http://blogs.msdn.com/b/brada/archive/2003/10/02/50420.aspx) by giving them discoverable and consistent types. Types become more discoverable if we reduce their surface area to expose only the features we intend our consumers to use. In this example we reduced the type's surface area. We did so by removing the property setter and returning a simpler type via the `AsObservable` method. - -TODO: swap this and the next chapter over? timing follows naturally from scheduling. \ No newline at end of file diff --git a/content/14_ErrorHandlingOperators.md b/content/14_ErrorHandlingOperators.md index 20ba1ae..b969b6a 100644 --- a/content/14_ErrorHandlingOperators.md +++ b/content/14_ErrorHandlingOperators.md @@ -14,8 +14,6 @@ Rx defines a `Catch` operator. The name is deliberately reminiscent of C#'s `try The most basic (although rarely the best) way to handle an exception is to swallow it. In C#, we could write a `try` block with an empty `catch` block. We can achieve something similar with Rx's `Catch` operator. The basic idea with swallowing exceptions is that the process that caused the exception stops, but we act as though nothing had happened—we handle it in the same way as it the process had naturally reached an end. We can represent an exception being swallowed like this with a marble diagram. -TODO: make this a proper diagram. - ``` S1--1--2--3--X S2 -| diff --git a/content/B_Disposables.md b/content/B_Disposables.md index 7ee1c47..0fa0f1b 100644 --- a/content/B_Disposables.md +++ b/content/B_Disposables.md @@ -52,6 +52,7 @@ Rx leverages the existing `IDisposable` interface for subscription management. T + From ea44590f282cd40363e712783c86ce26fdb96e68 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Thu, 2 Nov 2023 16:17:54 +0000 Subject: [PATCH 068/142] Fix chapter ref --- content/05_Filtering.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/05_Filtering.md b/content/05_Filtering.md index e98f953..34edb9f 100644 --- a/content/05_Filtering.md +++ b/content/05_Filtering.md @@ -269,7 +269,7 @@ Console.WriteLine(v); This logically has the same effect, but because we're using `await`, this won't block the calling thread while it waits for the observable source to produce a value. This might reduce the chances of deadlock. -The fact that we're able to use `await` makes some sense of the fact that these methods end with `Async`, but you might be wondering what's going on here. We've seen that these methods all return `IObservable`, not `Task`, so how are we able to use `await`? There's a full explanation in the [Leaving Rx's World](12_LeavingIObservable.md) chapter, but the short answer is that Rx provides extension methods that enable this to work. When you `await` an observable sequence, the `await` will complete once the source completes, and it will return the final value that emerges from the source. This works well for operators such as `FirstAsync` and `LastAsync` that produce exactly one item. +The fact that we're able to use `await` makes some sense of the fact that these methods end with `Async`, but you might be wondering what's going on here. We've seen that these methods all return `IObservable`, not `Task`, so how are we able to use `await`? There's a full explanation in the [Leaving Rx's World](13_LeavingIObservable.md) chapter, but the short answer is that Rx provides extension methods that enable this to work. When you `await` an observable sequence, the `await` will complete once the source completes, and it will return the final value that emerges from the source. This works well for operators such as `FirstAsync` and `LastAsync` that produce exactly one item. Note that there are occasionally situations in which values are available immediately. For example, the [`BehaviourSubject` section in chapter 3](./03_CreatingObservableSequences.md#behaviorsubject), showed that the defining feature of `BehaviourSubject` is that it always has a current value. That means that Rx's `First` method won't actually block—it will subscribe to the `BehaviourSubject`, and `BehaviourSubject.Subscribe` calls `OnNext` on its subscriber's observable before returning. That enables `First` to return a value immediately without blocking. (Of course, if you use the overload of `First` that accepts a predicate, and if the `BehaviourSubject`'s value doesn't satisfy the predicate, `First` will then block.) From 6fd764677e7b0f6a0e15d2836adcaceb112355cf Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Thu, 2 Nov 2023 17:49:35 +0000 Subject: [PATCH 069/142] Update build script after chapter reorder Also remove spurious copy step - the pandoc commands all now put the output where it's wanted so there's no need for the copy. --- build/pandoc.sh | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/build/pandoc.sh b/build/pandoc.sh index e4cda5f..48481e1 100644 --- a/build/pandoc.sh +++ b/build/pandoc.sh @@ -12,8 +12,8 @@ pandoc -o /output/intro-to-rx.epub metadata.md -s \ ./content/09_CombiningSequences.md \ ./content/10_Part3.md \ ./content/11_SchedulingAndThreading.md \ - ./content/12_LeavingIObservable.md \ - ./content/13_Timing.md \ + ./content/12_Timing.md \ + ./content/13_LeavingIObservable.md \ ./content/14_ErrorHandlingOperators.md \ ./content/15_PublishingOperators.md \ ./content/16_TestingRx.md \ @@ -37,8 +37,8 @@ pandoc -o /output/intro-to-rx.docx -s \ ./content/09_CombiningSequences.md \ ./content/10_Part3.md \ ./content/11_SchedulingAndThreading.md \ - ./content/12_LeavingIObservable.md \ - ./content/13_Timing.md \ + ./content/12_Timing.md \ + ./content/13_LeavingIObservable.md \ ./content/14_ErrorHandlingOperators.md \ ./content/15_PublishingOperators.md \ ./content/16_TestingRx.md \ @@ -63,8 +63,8 @@ pandoc -o /output/intro-to-rx.pdf metadata.md -s \ ./content/09_CombiningSequences.md \ ./content/10_Part3.md \ ./content/11_SchedulingAndThreading.md \ - ./content/12_LeavingIObservable.md \ - ./content/13_Timing.md \ + ./content/12_Timing.md \ + ./content/13_LeavingIObservable.md \ ./content/14_ErrorHandlingOperators.md \ ./content/15_PublishingOperators.md \ ./content/16_TestingRx.md \ @@ -76,7 +76,6 @@ pandoc -o /output/intro-to-rx.pdf metadata.md -s \ --template ./templates/eisvogel \ --toc --toc-depth 4 -cp intro-to-rx.* /output if [ -f /root/.miktex/texmfs/data/miktex/log/pdflatex.log ]; then cp /root/.miktex/texmfs/data/miktex/log/pdflatex.log /output fi \ No newline at end of file From 45d0739bef5e1e78cec6e23721c5d32f0eb02acf Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Thu, 2 Nov 2023 17:50:54 +0000 Subject: [PATCH 070/142] Fix appendix D title --- content/D_AlgebraicUnderpinnings.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/D_AlgebraicUnderpinnings.md b/content/D_AlgebraicUnderpinnings.md index 7355cbb..8ddf3fe 100644 --- a/content/D_AlgebraicUnderpinnings.md +++ b/content/D_AlgebraicUnderpinnings.md @@ -2,7 +2,7 @@ title : Appendix D Rx's Algebraic Underpinnings --- -# Appendix C: Rx's Algebraic Underpinnings +# Appendix D: Rx's Algebraic Underpinnings Rx operators can be combined together in more or less any way you can imagine, and they generally just work. The fact that this works is not merely a happy accident. In general, integration between software components is often one of the largest sources of pain in software development, so the fact that it works so well is remarkable. This is in large part thanks to the fact that Rx relies on some underlying theory. Rx has been designed so that you don't need to know these details to use it, but curious developers typically want to know these things. From a50fe876895ae44cde3371bed730e8236afc6b29 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Thu, 2 Nov 2023 18:13:44 +0000 Subject: [PATCH 071/142] Ch07 partial read through --- content/07_Aggregation.md | 81 +++++++++++++-------------------------- 1 file changed, 27 insertions(+), 54 deletions(-) diff --git a/content/07_Aggregation.md b/content/07_Aggregation.md index 86e8f40..2025bf4 100644 --- a/content/07_Aggregation.md +++ b/content/07_Aggregation.md @@ -16,23 +16,16 @@ Rx supports various standard LINQ operators that reduce all of the values in a s ### Count -`Count` tells you how many elements a sequence contains. Although this is a standard LINQ operator, Rx's version deviates from the `IEnumerable` version as Rx will return an observable sequence, not a scalar value. As usual, this is because of the push-related nature of Rx. Rx's `Count` can't demand that its source supply all elements immediately, so it just has to wait until the source says that it has finished. - -The sequence that `Count` returns will always be of type `IObservable`, regardless of the source's element type. This will produce nothing until the source completes, at which point it will produce a single value reporting how many elements the source produced, and then it will in turn immediately complete. This example uses `Count` with `Range`, because `Range` produces all of its values as quickly as possible and then completes, meaning we get a result from `Count` immediately: +`Count` tells you how many elements a sequence contains. Although this is a standard LINQ operator, Rx's version deviates from the `IEnumerable` version as Rx will return an observable sequence, not a scalar value. As usual, this is because of the push-related nature of Rx. Rx's `Count` can't demand that its source supply all elements immediately, so it just has to wait until the source says that it has finished. The sequence that `Count` returns will always be of type `IObservable`, regardless of the source's element type. This will do nothing until the source completes, at which point it will emit a single value reporting how many elements the source produced, and then it will in turn immediately complete. This example uses `Count` with `Range`, because `Range` generates all of its values as quickly as possible and then completes, meaning we get a result from `Count` immediately: ```csharp IObservable numbers = Observable.Range(0,3); -numbers.Dump("numbers"); numbers.Count().Dump("count"); ``` Output: ``` -numbers-->1 -numbers-->2 -numbers-->3 -numbers Completed count-->3 count Completed ``` @@ -45,19 +38,12 @@ The `Sum` operator adds together all the values in its source, producing the tot ```cs IObservable numbers = Observable.Range(1,5); -numbers.Dump("numbers"); numbers.Sum().Dump("sum"); ``` -The output shows the numbers produced by the source, and also the single result produced by `Sum`: +The output shows the single result produced by `Sum`: ``` -numbers-->1 -numbers-->2 -numbers-->3 -numbers-->4 -numbers-->5 -numbers completed sum-->15 sum completed ``` @@ -83,7 +69,7 @@ IObservable totalVesselWidths = vesselDimensions The standard LINQ operator `Average` effectively calculates the value that `Sum` would calculate, and then divides it by the value that `Count` would calculate. And once again, whereas most LINQ implementations would return a scalar, Rx's `Average` produces an observable. -Although `Average` can process values of the same numeric types as `Sum`, the output type will be different in some cases. If the source is `IObservable`, or if you use one of the overloads that takes a lambda that extracts the value from the source, and that lambda returns an `int`, the result will be a `double.` This is because the average of a set of whole numbers is not necessarily a whole number. Likewise, averaging `long` values produces a `double`. However, inputs of type `decimal` produce outputs of type `decimal`, and likewise `float` inputs produce a `float output. +Although `Average` can process values of the same numeric types as `Sum`, the output type will be different in some cases. If the source is `IObservable`, or if you use one of the overloads that takes a lambda that extracts the value from the source, and that lambda returns an `int`, the result will be a `double.` This is because the average of a set of whole numbers is not necessarily a whole number. Likewise, averaging `long` values produces a `double`. However, inputs of type `decimal` produce outputs of type `decimal`, and likewise `float` inputs produce a `float` output. As with `Sum`, if the inputs to `Average` are nullable, the output will be too. @@ -130,7 +116,7 @@ LINQ defines several standard operators that reduce entire sequences to a single ### Any -There are two ways to use `Any`. First we can look at the parameterless overload for the extension method `Any`. This effectively asks the question "are there any elements in this sequence?" It returns an observable sequence that will produce a single value of `false` if the source completes without emitting any values. If the source does produce a value however, then when the first value is produced, the result sequence will immediately produce `true` and then complete. If the first notification it gets is an error, then it will pass that error on. +The `Any` operator has two forms. The parameterless overload effectively asks the question "are there any elements in this sequence?" It returns an observable sequence that will produce a single value of `false` if the source completes without emitting any values. If the source does produce a value however, then when the first value is produced, the result sequence will immediately produce `true` and then complete. If the first notification it gets is an error, then it will pass that error on. ```csharp var subject = new Subject(); @@ -177,10 +163,28 @@ subject.OnError(new Exception()); Output: ``` -subject OnError : System.Exception: Fail -.Any() OnError : System.Exception: Fail +subject OnError : System.Exception: Exception of type 'System.Exception' was thrown. +.Any() OnError : System.Exception: Exception of type 'System.Exception' was thrown. +``` + +But if the source were to generate a value before an exception, e.g.: + +```cs +subject.OnNext(42); +subject.OnError(new Exception()); +``` + +we'd see this output instead: + +``` +42 +The subject has any values? True +.Any() completed +subject OnError : System.Exception: Exception of type 'System.Exception' was thrown. ``` +Although the handler that subscribed directly to the source subject still sees the error, our `any` observable reported a value of `True` and then completed, meaning it did not report the error that followed. + The `Any` method also has an overload that takes a predicate. This effectively asks a slightly different question: "are there any elements in this sequence that meet these criteria?" The effect is similar to using `Where` followed by the no-arguments form of `Any`. ```csharp @@ -189,43 +193,12 @@ IObservable any = subject.Any(i => i > 2); IObservable longWindedAny = subject.Where(i => i > 2).Any(); ``` -As an exercise, write your own version of the two `Any` extension method overloads. While the answer may not be immediately obvious, we have covered enough material for you to create this using the methods you know... - -Example of the `Any` extension methods written with `Observable.Create`: - -```csharp -public static IObservable MyAny(this IObservable source) -{ - return Observable.Create( - o => - { - var hasValues = false; - return source - .Take(1) - .Subscribe( - _ => hasValues = true, - o.OnError, - () => - { - o.OnNext(hasValues); - o.OnCompleted(); - }); - }); -} - -public static IObservable MyAny( - this IObservable source, - Func predicate) -{ - return source - .Where(predicate) - .MyAny(); -} -``` ### All -The `All` operator is similar to the `Any` method that takes a predicate, except that all values must meet the predicate. As soon as a value does not meet the predicate a `false` value is returned then the output sequence completed. If the source reaches its end without producing any elements that do not satisfy the predicate, then `All` will push `true` as its value. (A consequence of this is that if you use `All` on an empty sequence, the result will be a sequence that produces `true`. This is consistent with how `All` works in other LINQ providers, but it might be surprising for anyone not familiar with the formal logic convention known as [vacuous truth](https://en.wikipedia.org/wiki/Vacuous_truth).) +The `All` operator is similar to the `Any` method that takes a predicate, except that all values must satisfy the predicate. As soon as the predicate rejects a value, the observable returned by `All` produces a `false` value and then completes. If the source reaches its end without producing any elements that do not satisfy the predicate, then `All` will push `true` as its value. (A consequence of this is that if you use `All` on an empty sequence, the result will be a sequence that produces `true`. This is consistent with how `All` works in other LINQ providers, but it might be surprising for anyone not familiar with the formal logic convention known as [vacuous truth](https://en.wikipedia.org/wiki/Vacuous_truth).) + +TODO: read through to here. Once `All` decides to produce a `false` value, it immediately unsubscribes from the source (just like `Any` does as soon as it determines that it can produce `true`.) If the source produces an error before this happens, the error will be passed along to the subscriber of the `All` method. From 17bc09a3c27e60e60b9a0b94dc3b69956e8d4e51 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Mon, 6 Nov 2023 08:43:48 +0000 Subject: [PATCH 072/142] Ch07 partial updated for read through --- content/07_Aggregation.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/content/07_Aggregation.md b/content/07_Aggregation.md index 2025bf4..b336fd9 100644 --- a/content/07_Aggregation.md +++ b/content/07_Aggregation.md @@ -198,15 +198,13 @@ IObservable longWindedAny = subject.Where(i => i > 2).Any(); The `All` operator is similar to the `Any` method that takes a predicate, except that all values must satisfy the predicate. As soon as the predicate rejects a value, the observable returned by `All` produces a `false` value and then completes. If the source reaches its end without producing any elements that do not satisfy the predicate, then `All` will push `true` as its value. (A consequence of this is that if you use `All` on an empty sequence, the result will be a sequence that produces `true`. This is consistent with how `All` works in other LINQ providers, but it might be surprising for anyone not familiar with the formal logic convention known as [vacuous truth](https://en.wikipedia.org/wiki/Vacuous_truth).) -TODO: read through to here. - Once `All` decides to produce a `false` value, it immediately unsubscribes from the source (just like `Any` does as soon as it determines that it can produce `true`.) If the source produces an error before this happens, the error will be passed along to the subscriber of the `All` method. -```csharp +```cs var subject = new Subject(); subject.Subscribe(Console.WriteLine, () => Console.WriteLine("Subject completed")); -var all = subject.All(i => i < 5); -all.Subscribe(b => Console.WriteLine("All values less than 5? {0}", b)); +IEnumerable all = subject.All(i => i < 5); +all.Subscribe(b => Console.WriteLine($"All values less than 5? {b}")); subject.OnNext(1); subject.OnNext(2); @@ -231,7 +229,7 @@ subject completed ### IsEmpty -The LINQ `IsEmpty` operator is logically the opposite of the no-arguments `Any` method. It returns `true` if and only if the source completes without producing any elements, and if the source produces an item, `IsEmpty` produces `false` and immediately unsubscribes. +The LINQ `IsEmpty` operator is logically the opposite of the no-arguments `Any` method. It returns `true` if and only if the source completes without producing any elements. If the source produces an item, `IsEmpty` produces `false` and immediately unsubscribes. If the source produces an error, this forwards that error. ### Contains @@ -243,7 +241,7 @@ subject.Subscribe( Console.WriteLine, () => Console.WriteLine("Subject completed")); -var contains = subject.Contains(2); +IEnumerable contains = subject.Contains(2); contains.Subscribe( b => Console.WriteLine("Contains the value 2? {0}", b), @@ -269,6 +267,8 @@ Subject completed There is also an overload to `Contains` that allows you to specify an implementation of `IEqualityComparer` other than the default for the type. This can be useful if you have a sequence of custom types that may have some special rules for equality depending on the use case. +TODO: read through to here. + ## Build your own aggregations If the built-in aggregations described in the preceding sections do not meet your needs, you can build your own. Rx provides two different ways to do this. From 10999dae980fe4ac7a5781b8603ef2978bd1081d Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Mon, 6 Nov 2023 16:16:25 +0000 Subject: [PATCH 073/142] Ch07 updated after read through --- content/07_Aggregation.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/content/07_Aggregation.md b/content/07_Aggregation.md index b336fd9..299b78d 100644 --- a/content/07_Aggregation.md +++ b/content/07_Aggregation.md @@ -267,8 +267,6 @@ Subject completed There is also an overload to `Contains` that allows you to specify an implementation of `IEqualityComparer` other than the default for the type. This can be useful if you have a sequence of custom types that may have some special rules for equality depending on the use case. -TODO: read through to here. - ## Build your own aggregations If the built-in aggregations described in the preceding sections do not meet your needs, you can build your own. Rx provides two different ways to do this. @@ -352,9 +350,9 @@ int sum = s(s(s(s(s(0, 1), 2), 3), 4), 5); // it returns an IObservable that produces this value. ``` -Rx's `Aggregate` doesn't perform all those invocations at once: it invokes the function as each element occurs. So the calculations will be spread out over time. (If your callback is a _pure function_—one that is unaffected by global variables and other environmental factors, and which will always return the same result for any particular input—this doesn't matter. The result of `Aggregate` will be the same as if it had all happened in one big expression like the preceding example. But if your callback's behaviour is affected by, say, a global variable, or by the current contents of the filesystem, then the fact that it will be invoked when the source produces each value may be more significant.) +Rx's `Aggregate` doesn't perform all those invocations at once: it invokes the function each time the source produces an element, so the calculations will be spread out over time. If your callback is a _pure function_—one that is unaffected by global variables and other environmental factors, and which will always return the same result for any particular input—this doesn't matter. The result of `Aggregate` will be the same as if it had all happened in one big expression like the preceding example. But if your callback's behaviour is affected by, say, a global variable, or by the current contents of the filesystem, then the fact that it will be invoked when the source produces each value may be more significant. -`Aggregate` has other names in some programming systems by the way. It is often referred to as a _fold_. (Specifically a _left fold_. A right fold proceeds in reverse. Conventionally its function takes arguments in the reverse order, so it would look like `s(1, s(2, s(3, s(4, s(5, 0)))))`. Rx does not offer a built-in right fold. It would not be a natural fit because it would have to wait until it received the final element before it could begin, meaning it would need to hold onto every element in the entire sequence, and then evaluate the entire fold at once when the sequence completes.) Some systems call it `reduce`. +`Aggregate` has other names in some programming systems by the way. Some systems call it `reduce`. It is also often referred to as a _fold_. (Specifically a _left fold_. A right fold proceeds in reverse. Conventionally its function takes arguments in the reverse order, so it would look like `s(1, s(2, s(3, s(4, s(5, 0)))))`. Rx does not offer a built-in right fold. It would not be a natural fit because it would have to wait until it received the final element before it could begin, meaning it would need to hold onto every element in the entire sequence, and then evaluate the entire fold at once when the sequence completes.) You might have spotted that in my quest to re-implement some of the built-in aggregation operators, I went straight from `Sum` to `Any`. What about `Average`? It turns out we can't do that with the overloads I've shown you so far. And that's because `Average` needs to accumulate two pieces of information—the running total and the count—and it also needs to perform once final step right at the end: it needs to divide the total by the count. With the overloads shown so far, we can only get part way there: @@ -403,7 +401,7 @@ IObservable> allNames = vesselNames With either of these implementations, `vesselNames` will produce a single value that is a `IReadOnlySet` containing each vessel name seen in the first 10 messages that report a name. -I've had to fudge an issue in these last two examples. I've made them work over just the first 10 suitable messages to emerge. Think about what would happen if I didn't have the `Take(10)` in there. The code would compile, but we'd have a problem. The AIS message source I've been using in various examples is an endless source. Ships will continue to move around the oceans for the foreseeable future. Ais.NET does not contain any code designed to detect either the end of civilisation, or the invention of technologies that render the use of ships obsolete, so it will never call `OnCompleted` on its subscribers. The observable returned by `Aggregate` reports nothing until its source either completes or fails. So if we remove that `Take(10)`, the behaviour would be identical `Observable.Never>`. I had to force the input to `Aggregate` to come to an end to make it produce something. But there is another way. +I've had to fudge an issue in these last two examples. I've made them work over just the first 10 suitable messages to emerge. Think about what would happen if I didn't have the `Take(10)` in there. The code would compile, but we'd have a problem. The AIS message source I've been using in various examples is an endless source. Ships will continue to move around the oceans for the foreseeable future. Ais.NET does not contain any code designed to detect either the end of civilisation, or the invention of technologies that will render the use of ships obsolete, so it will never call `OnCompleted` on its subscribers. The observable returned by `Aggregate` reports nothing until its source either completes or fails. So if we remove that `Take(10)`, the behaviour would be identical `Observable.Never>`. I had to force the input to `Aggregate` to come to an end to make it produce something. But there is another way. ### Scan @@ -445,7 +443,7 @@ acc completed You can see clearly here that `Scan` is emitting the current accumulated values each time the source produces a value. -Unlike `Aggregate`, `Scan` doesn't offer an overload taking a second function to transform the accumulator into the result. So we can see the tuple containing the count and sum here, but not the actual average value we want. But we can achieve that by using the [`Select` operator described in the Transformation chapter](./06_Transformation.md): +Unlike `Aggregate`, `Scan` doesn't offer an overload taking a second function to transform the accumulator into the result. So we can see the tuple containing the count and sum here, but not the actual average value we want. But we can achieve that by using the [`Select`](06_Transformation.md#select) operator described in the [Transformation chapter](./06_Transformation.md): ```cs IObservable avg = nums.Scan( From 3caa2ad4cda1291ee2e38ea1226de713a062d886 Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Tue, 7 Nov 2023 08:10:37 +0000 Subject: [PATCH 074/142] Update Ch08 after read through --- content/08_Partitioning.md | 56 ++++++++++++++++++-------------------- 1 file changed, 27 insertions(+), 29 deletions(-) diff --git a/content/08_Partitioning.md b/content/08_Partitioning.md index ce57738..d55b247 100644 --- a/content/08_Partitioning.md +++ b/content/08_Partitioning.md @@ -4,13 +4,13 @@ title: Partitioning # Partitioning -Rx can split a single sequence into multiple sequences. This can be useful for taking a single sequence and fanning out to many subscribers or perhaps taking aggregates on partitions. You may already be familiar with the standard LINQ operator `GroupBy`. Rx supports this, and also defines some of its own. +Rx can split a single sequence into multiple sequences. This can be useful for distributing items over many subscribers. When performing analytics, it can be useful to take aggregates on partitions. You may already be familiar with the standard LINQ operators `GroupBy`. Rx supports this, and also defines some of its own. ## GroupBy The `GroupBy` operator allows you to partition your sequence just as `IEnumerable`'s `GroupBy` operator does. Once again, the open source [Ais.Net project](https://github.com/ais-dotnet) can provide a useful example. Its [`ReceiverHost` class](https://github.com/ais-dotnet/Ais.Net.Receiver/blob/15de7b2908c3bd67cf421545578cfca59b24ed2c/Solutions/Ais.Net.Receiver/Ais/Net/Receiver/Receiver/ReceiverHost.cs) makes AIS messages available through Rx, defining a `Messages` property of type `IObservable`. This is a very busy source, because it reports every message it is able to access. For example, if you connect the receiver to the AIS message source generously provided by the Norwegian government, it produces a notification every time _any_ ship broadcasts an AIS message anywhere on the Norwegian coast. There are a lot of ships moving around Norway, so this is a bit of a firehose. -If we know exactly which ships we're interested in, you saw how to filter this stream in the [Filtering chapter](05_Filtering.md). But what if we don't, and yet we still want to be able to perform processing relating to individual ships? For example, perhaps we'd like to discover any time any ship changes its `NavigationStatus` (which reports values such as `AtAnchor`, or `Moored`). The [`Distinct and DistinctUntilChanged` section of the Filtering chapter](05_Filtering.md#distinct-and-distinctuntilchanged) showed how to do exactly that, but it began by filtering the stream down to message from a single ship. If we tried to use `DistinctUntilChanged` directly on the all-ships stream it will not produce meaningful information. If ship A is moored and ship B is at anchor, and if we receive alternative status messages from ship A and ship B, `DistinctUntilChanged` would report each message as a change in status, even though neither ship's status has changed. +If we know exactly which ships we're interested in, you saw how to filter this stream in the [Filtering chapter](05_Filtering.md). But what if we don't, and yet we still want to be able to perform processing relating to individual ships? For example, perhaps we'd like to discover any time any ship changes its `NavigationStatus` (which reports values such as `AtAnchor`, or `Moored`). The [`Distinct` and `DistinctUntilChanged` section of the Filtering chapter](05_Filtering.md#distinct-and-distinctuntilchanged) showed how to do exactly that, but it began by filtering the stream down to message from a single ship. If we tried to use `DistinctUntilChanged` directly on the all-ships stream it will not produce meaningful information. If ship A is moored and ship B is at anchor, and if we receive alternative status messages from ship A and ship B, `DistinctUntilChanged` would report each message as a change in status, even though neither ship's status has changed. We can fix this by splitting the "all the ships" sequence into lots of little sequences: @@ -30,7 +30,7 @@ public interface IGroupedObservable : IObservable Console.WriteLine($"New ship! {m.Key}")); @@ -46,7 +46,7 @@ IObservable> shipStatusChangeObservables = .Skip(1)); ``` -This uses [`Select` (introduced in the Transformation chapter)](06_Transformation.md#select) to apply processing to each group that comes out of `perShipObservables`. Remember, each such group represents a distinct ship, so the callback we've passed to `Select` here will be invoked exactly once for each ship. This means it's now fine for us to use `DistinctUntilChanged`—the input this example supplies to `DistinctUntilChanged` is a sequence representing the messages from just one ship, so this will tell us when that ship changes it status. This is now able to do what we want because each ship gets its own instance of `DistinctUntilChanged`. +This uses [`Select`](06_Transformation.md#select) (introduced in the Transformation chapter) to apply processing to each group that comes out of `perShipObservables`. Remember, each such group represents a distinct ship, so the callback we've passed to `Select` here will be invoked exactly once for each ship. This means it's now fine for us to use `DistinctUntilChanged`—the input this example supplies to `DistinctUntilChanged` is a sequence representing the messages from just one ship, so this will tell us when that ship changes its status. This is now able to do what we want because each ship gets its own instance of `DistinctUntilChanged`. At this point we have an observable sequence of observable sequences. The outer sequence produces a nested sequence for each distinct ship that it sees, and that nested sequence will report `NavigationStatus` changes for that particular ship. @@ -95,11 +95,11 @@ Ship 232026676 changed status to Moored at 23/06/2023 06:51:54 +00:00 Ship 259638000 changed status to UnderwayUsingEngine at 23/06/2023 06:52:34 +00:00 ``` -The critical thing to understand here is that in the space of ten minutes, `receiverHost.Messages` produced _thousands_ of messages. (The rate varies by time of day, but it's typically over a thousand messages a minute. The code would have processed roughly ten thousand messages when I ran to produce that output.) But as you can see, `shipStatusChanges` produced just 19 messages. +The critical thing to understand here is that in the space of ten minutes, `receiverHost.Messages` produced _thousands_ of messages. (The rate varies by time of day, but it's typically over a thousand messages a minute. The code would have processed roughly ten thousand messages when I ran it to produce that output.) But as you can see, `shipStatusChanges` produced just 19 messages. This shows how Rx can tame high volume event sources in ways that are much more powerful than mere aggregation. We've not just reduced the data down to some statistical measure that can only provide an overview. Statistical measures such as averages or variance wouldn't be able to tell us anything about any particular ship. But here, every message tells us something about a particular ship. We've been able to retain that level of detail, despite the fact that we are looking at every ship. We've been able to instruct Rx to tell us any time any ship changes its status. -It probably seems like I'm making too big a deal of this, but it took so little effort to achieve this result that it can be easy to miss just how much work Rx is doing for us here. This code does all of the following: +It may seem like I'm making too big a deal of this, but it took so little effort to achieve this result that it can be easy to miss just how much work Rx is doing for us here. This code does all of the following: - monitors every single ship operating in Norwegian waters - provides per-ship information @@ -129,7 +129,6 @@ public static IObservable> GroupBy> GroupBy( this IObservable source, Func keySelector, @@ -184,13 +183,13 @@ More generally, if you have lots of sequences coming into existence as part of a ## Buffer -The `Buffer` operator is useful if you need to deal with events in batches. This can be useful for performance, especially if you're storing data about events. Take the AIS example. If you wanted to log notifications to a persistent store, the cost of storing a single record is likely to be almost identical to the cost of storing several. Most storage devices operate with blocks of data often several kilobytes in size, so the amount of work required to store a single byte of data is often identical to the amount of work required to store several thousand bytes. The pattern of buffering up data until we have a reasonably large chunk of work crops up all the time in programming—the .NET runtime library's `Stream` class has built-in buffering for exactly the reason, so it's no surprise that it's built into Rx. +The `Buffer` operator is useful if you need to deal with events in batches. This can be useful for performance, especially if you're storing data about events. Take the AIS example. If you wanted to log notifications to a persistent store, the cost of storing a single record is likely to be almost identical to the cost of storing several. Most storage devices operate with blocks of data often several kilobytes in size, so the amount of work required to store a single byte of data is often identical to the amount of work required to store several thousand bytes. The pattern of buffering up data until we have a reasonably large chunk of work crops up all the time in programming—the .NET runtime library's `Stream` class has built-in buffering for exactly this reason, so it's no surprise that it's built into Rx. -Efficiency concerns are not the only reason you might want to process multiple events in once batch instead of individual ones. Suppose you wanted to generate a stream of continuously updated statistics about some source of data. By carving the source into chunks with `Buffer`, you can calculate, say, an average over the last 10 events. +Efficiency concerns are not the only reason you might want to process multiple events in one batch instead of individual ones. Suppose you wanted to generate a stream of continuously updated statistics about some source of data. By carving the source into chunks with `Buffer`, you can calculate, say, an average over the last 10 events. `Buffer` can partition the elements from a source stream, so it's a similar kind of operator to `GroupBy`, but there are a couple of significant differences. First, `Buffer` doesn't inspect the elements to determine how to partition them—it partitions purely based on the order in which elements emerge. Second, `Buffer` waits until it has completely filled a partition, and then presents all of the elements as an `IList`. This can make certain tasks a lot easier because everything in the partition is available for immediate use—values aren't buried in a nested `IObservable`. Third, `Buffer` offers some overloads that make it possible for a single element to turn up in more than one 'partition'. (In this case, `Buffer` is no longer strictly partitioning the data, but as you'll see, it's just a small variation on the other behaviours.) -The simplest way to use `Buffer` is to gather up adjacent elements into chunks. (LINQ to Objects now has an equivalent operator that it calls [`Chunk`](https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable.chunk). The reason Rx didn't use the same name is that Rx introduced this operator over 10 years before LINQ to Objects did. So the real question is why LINQ to Objects chose a different name, but you'd need to ask the .NET runtime library team.) This overload of `Buffer` takes a single argument, indicating the chunk size you would like: +The simplest way to use `Buffer` is to gather up adjacent elements into chunks. (LINQ to Objects now has an equivalent operator that it calls [`Chunk`](https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable.chunk). The reason Rx didn't use the same name is that Rx introduced this operator over 10 years before LINQ to Objects did. So the real question is why LINQ to Objects chose a different name. It might be because `Chunk` doesn't support all of the variations that Rx's `Buffer` does, but you'd need to ask the .NET runtime library team.) This overload of `Buffer` takes a single argument, indicating the chunk size you would like: ```cs public static IObservable> Buffer( @@ -330,7 +329,7 @@ The `timeSpan` determines the length of time covered by each window, and the `ti The `Window` operator is very similar to the `Buffer`. It can split the input into chunks based either on element count or time, and it also offers support for overlapping windows. However, it has a different return type. Whereas using `Buffer` on an `IObservable` will return an `IObservable>`, `Window` will return an `IObservable>`. This means that `Window` doesn't have to wait until it has filled a complete buffer before producing anything. -Because `Buffer` returns an `IObservable>`, it can't produce a chunk until it has all of the elements that will go into that chunk. `IList` supports random access—you can ask it how many elements it has, and you can retrieve any element by numeric index, and we expect these operations to complete immediately. (It would be technically possible to write an implementation of `IList` representing as yet unreceived data, and to make its `Count` and indexer properties block if you try to use them before that data is available, but this would be a strange thing to do. Developers expect lists to return information immediately.) So if you write, say, `Buffer(4)`, it can't produce anything until it has all 4 items that will constitute the first chunk. +Because `Buffer` returns an `IObservable>`, it can't produce a chunk until it has all of the elements that will go into that chunk. `IList` supports random access—you can ask it how many elements it has, and you can retrieve any element by numeric index, and we expect these operations to complete immediately. (It would be technically possible to write an implementation of `IList` representing as yet unreceived data, and to make its `Count` and indexer properties block if you try to use them before that data is available, but this would be a strange thing to do. Developers expect lists to return information immediately, and the lists produced by Rx's `Buffer` meet that expectation.) So if you write, say, `Buffer(4)`, it can't produce anything until it has all 4 items that will constitute the first chunk. But because `Window` returns an observable that produces a nested observable to represent each chunk, it can emit that before necessarily having all of the elements. In fact, it emits a new window as soon as it knows it will need one. If you use `Window(4, 1)` for example, the observable it returns emits its first nested observable immediately. And then as soon as the source produces its first element, that nested observable will emit that element, and then the second nested observable will be produced. We passed `1` as the 2nd argument to `Window`, so we get a new window for every element the source produces. As soon as the first element has been emitted, the next item the source emits will appear in the second window (and also the first, since we've specified overlapping windows in this case), so the second window is effectively _open_ from immediately after the emergence of the first element. So the `IObservable>` that `Window` return produces a new `IObservable` at that point. @@ -351,23 +350,22 @@ public static IObservable> Window this IObservable source, Func> windowClosingSelector ) -{...} ``` -The first of these complex overloads allows us to control when windows should close. The `windowClosingSelector` function is called each time a window is created. Windows are created on subscription and immediately after a window closes; windows close when the sequence from the `windowClosingSelector` produces a value. The value is disregarded so it doesn't matter what type the sequence values are; in fact you can just complete the sequence from `windowClosingSelector` to close the window instead. +The first of these complex overloads allows us to control when windows close. The `windowClosingSelector` function is called each time a window is created, and each windows will close when the corresponding sequence from the `windowClosingSelector` produces a value. The value is disregarded so it doesn't matter what type the sequence values are; in fact you can just complete the sequence from `windowClosingSelector` to close the window instead. In this example, we create a window with a closing selector. We return the same subject from that selector every time, then notify from the subject whenever a user presses enter from the console. -```csharp -var windowIdx = 0; -var source = Observable.Interval(TimeSpan.FromSeconds(1)).Take(10); +```cs +int windowIdx = 0; +IObservable source = Observable.Interval(TimeSpan.FromSeconds(1)).Take(10); var closer = new Subject(); source.Window(() => closer) .Subscribe(window => { - var thisWindowIdx = windowIdx++; + int thisWindowIdx = windowIdx++; Console.WriteLine("--Starting new window"); - var windowName = "Window" + thisWindowIdx; + string windowName = $"Window{thisWindowIdx}"; window.Subscribe( value => Console.WriteLine("{0} : {1}", windowName, value), ex => Console.WriteLine("{0} : {1}", windowName, ex), @@ -375,13 +373,14 @@ source.Window(() => closer) }, () => Console.WriteLine("Completed")); -var input = ""; -while (input!="exit") +string input = ""; +while (input != "exit") { input = Console.ReadLine(); closer.OnNext(Unit.Default); } ``` + Output (when I hit enter after '1' and '5' are displayed): ``` @@ -423,7 +422,6 @@ public static IObservable> Window IObservable windowOpenings, Func> windowClosingSelector ) -{...} ``` This overload takes three arguments @@ -434,15 +432,15 @@ This overload takes three arguments This overload offers great flexibility in the way windows are opened and closed. Windows can be largely independent from each other; they can overlap, vary in size and even skip values from the source. -To ease our way into this more complex overload, let's first try to use it to recreate a simpler version of `Window` (the overload that takes a count). To do so, we need to open a window once on the initial subscription, and once each time the source has produced then specified count. The window needs to close each time that count is reached. To achieve this we only need the source sequence. We will share it by using the `Publish` method, then supply 'views' of the source as each of the arguments. +To ease our way into this more complex overload, let's first try to use it to recreate a simpler version of `Window` (the overload that takes a count). To do so, we need to open a window once on the initial subscription, and once each time the source has produced then specified count. The window needs to close each time that count is reached. To achieve this we only need the source sequence. We will be subscribing to it multiple times, but for some kinds of sources that might cause problems, so we do so via the [`Publish`](15_PublishingOperators.md#publish) operator, which enables multiple subscribers while making only one subscription to the underlying source. ```csharp public static IObservable> MyWindow( this IObservable source, int count) { - var shared = source.Publish().RefCount(); - var windowEdge = shared + IObservable shared = source.Publish().RefCount(); + IObservable windowEdge = shared .Select((i, idx) => idx % count) .Where(mod => mod == 0) .Publish() @@ -462,14 +460,14 @@ public static IObservable> MyWindow( if (count <= 0) throw new ArgumentOutOfRangeException(); if (skip <= 0) throw new ArgumentOutOfRangeException(); - var shared = source.Publish().RefCount(); - var index = shared + IObservable shared = source.Publish().RefCount(); + IObservable index = shared .Select((i, idx) => idx) .Publish() .RefCount(); - var windowOpen = index.Where(idx => idx % skip == 0); - var windowClose = index.Skip(count-1); + IObservable windowOpen = index.Where(idx => idx % skip == 0); + IObservable windowClose = index.Skip(count-1); return shared.Window(windowOpen, _ => windowClose); } @@ -494,6 +492,6 @@ public static IObservable> MyBuffer(this IObservable source, int } ``` -It may be an interesting exercise to try implementing other time shifting methods, like `Sample` or `Throttle`, with `Window`. +You might find it to be an interesting exercise to try implementing other time shifting methods, like `Sample` or `Throttle`, with `Window`. We've seen a few useful ways to spread a single stream of items across multiple output sequences, using either data-driven grouping criteria, or time-based chunking with either `Buffer` or `Window`. In the next chapter, we'll look at operators that can combine together data from multiple streams. \ No newline at end of file From d9ef83dc3df7c2570c697f0e322652c455e1ac2e Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Wed, 8 Nov 2023 08:16:26 +0000 Subject: [PATCH 075/142] Ch09 partial read through --- content/09_CombiningSequences.md | 38 ++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/content/09_CombiningSequences.md b/content/09_CombiningSequences.md index 8a7838a..f819fb3 100644 --- a/content/09_CombiningSequences.md +++ b/content/09_CombiningSequences.md @@ -6,13 +6,13 @@ title: Combining sequences Data sources are everywhere, and sometimes we need to consume data from more than just a single source. Common examples that have many inputs include: price feeds, sensor networks, news feeds, social media aggregators, file watchers, multi touch surfaces, heart-beating/polling servers, etc. The way we deal with these multiple stimuli is varied too. We may want to consume it all as a deluge of integrated data, or one sequence at a time as sequential data. We could also get it in an orderly fashion, pairing data values from two sources to be processed together, or perhaps just consume the data from the first source that responds to the request. -Earlier chapters have also shown some examples of the _fan out and back in_ style of data processing, where we partition data, and perform processing on each partition to convert high-volume data into lower-volume higher-value events before recombining. This ability to restructure streams greatly enhances the benefits of operator composition. If Rx only enabled us to apply composition as a simple linear processing chain, it would be a good deal less powerful. Being able to pull streams apart gives us much more flexibility. So even when there is a single source of events, we often still need to combine multiple observable streams as part of our processing. Sequence composition enables you to create complex queries across multiple data sources. This unlocks the possibility to write some very powerful and succinct code. +Earlier chapters have also shown some examples of the _fan out and back in_ style of data processing, where we partition data, and perform processing on each partition to convert high-volume data into lower-volume higher-value events before recombining. This ability to restructure streams greatly enhances the benefits of operator composition. If Rx only enabled us to apply composition as a simple linear processing chain, it would be a good deal less powerful. Being able to pull streams apart gives us much more flexibility. So even when there is a single source of events, we often still need to combine multiple observable streams as part of our processing. Sequence composition enables you to create complex queries across multiple data sources. This unlocks the possibility to write some very powerful yet succinct code. We've already used [`SelectMany`](06_Transformation.md#selectmany) in earlier chapters. This is one of the fundamental operators in Rx—as we saw in the [Transformation chapter](06_Transformation.md), it's possible to build several other operators from `SelectMany`, and its ability to combine streams is part of what makes it powerful. But there are several more specialized combination operators available, which make it easier to solve certain problems than it would be using `SelectMany`. Also, some operators we've seen before (including `TakeUntil` and `Buffer`) have overloads we've not yet explored that can combine multiple sequences. ## Sequential Combination -We'll start with the simplest kind of combining operator, which do not attempt concurrent combination. They deal with one source sequence at a time. +We'll start with the simplest kind of combining operators, which do not attempt concurrent combination. They deal with one source sequence at a time. ### Concat @@ -24,7 +24,7 @@ public static IObservable Concat( IObservable second) ``` -Since of `Concat` is an extension method, we can invoke it as a method on any sequence, passing the second sequence in as the only argument: +Since `Concat` is an extension method, we can invoke it as a method on any sequence, passing the second sequence in as the only argument: ```cs IObservable s1 = Observable.Range(0, 3); @@ -41,6 +41,7 @@ Rx's `Concat` does nothing with its sources until something subscribes to the `I Although Rx's `Concat` has the same logical behaviour as the [LINQ to Objects `Concat`](https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable.concat), there are some Rx-specific details to be aware of. In particular, timing is often more significant in Rx than with other LINQ implementations. For example, in Rx we distinguish between [_hot_ and _cold_ source](02_KeyTypes.md#hot-and-cold-sources). With a cold source it typically doesn't matter exactly when you subscribe, but hot sources are essentially live, so you only get notified of things that happen while you are subscribed. This can mean that hot sources might not be a good fit with `Concat` The following marble diagram illustrates a scenario in which this produces results that have the potential to surprise: +TODO: relabel as `cold`, `hot`, `cold.Concat(hot)` ![](./GraphicsIntro/Ch09-CombiningSequences-Marbles-Concat-Hot-Marbles.svg) Since `Concat` doesn't subscribe to its second input until the first has finished, it won't see the first couple of items that the `hot` source would deliver to any subscribers that been listening from the start. This might not be the behaviour you would expect: it certainly doesn't look like this concatenated all of the items from the first sequence with all of the items from the second one. It looks like it missed out `A` and `B` from `hot`. @@ -49,16 +50,18 @@ Since `Concat` doesn't subscribe to its second input until the first has finishe This last example reveals that marble diagrams gloss over a detail: they show when a source starts, when it produces values, and when it finishes, but they ignore the fact that to be able to produce items at all, an observable source needs a subscriber. If nothing subscribes to an `IObservable`, then it doesn't really produce anything. `Concat` doesn't subscribe to its second input until the first completes, so arguably instead of the diagram above, it would be more accurate to show this: +TODO: draw properly, and change final label to `cold.Concat(hot)` ``` cold |--0--1--2-| hot |C---D---E-| Concat(cold, hot) |--0--1--2--C---D---E-| ``` -This makes it easier to see why `Concat` produces the output it does. But since `hot` is a hot source here, this diagram fails to convey the fact that `hot` is producing items entirely on its own schedule. In a scenario where `hot` had multiple subscribers, then the first diagram would arguably be better because it correctly reflects every event coming out of `hot` (regardless of however many listeners might be subscribed at any particular moment). But although this convention works for hot sources, it doesn't work for cold ones, which typically start producing items upon subscription. A source returned by [`Timer`](03_CreatingObservableSequences.md#observabletimer) produces items on a regular schedule, but that schedule starts at the instant when subscription occurs. That means that if there are multiple subscriptions, there are multiple schedules. Even if I have just a single `IObservable` returned by `Observable.Timer`, each distinct subscriber will get items on its own schedule—subscribers receive events at a regular interval _starting from whenever they happened subscribe_. So for cold observables, it typically makes sense to use the convention used by this second diagram, in which we're looking at the events received by one particular subscription to a source. +This makes it easier to see why `Concat` produces the output it does. But since `hot` is a hot source here, this diagram fails to convey the fact that `hot` is producing items entirely on its own schedule. In a scenario where `hot` had multiple subscribers, then the earlier diagram would arguably be better because it correctly reflects every event available from `hot` (regardless of however many listeners might be subscribed at any particular moment). But although this convention works for hot sources, it doesn't work for cold ones, which typically start producing items upon subscription. A source returned by [`Timer`](03_CreatingObservableSequences.md#observabletimer) produces items on a regular schedule, but that schedule starts at the instant when subscription occurs. That means that if there are multiple subscriptions, there are multiple schedules. Even if I have just a single `IObservable` returned by `Observable.Timer`, each distinct subscriber will get items on its own schedule—subscribers receive events at a regular interval _starting from whenever they happened subscribe_. So for cold observables, it typically makes sense to use the convention used by this second diagram, in which we're looking at the events received by one particular subscription to a source. Most of the time we can get away with ignoring this subtlety, quietly using whichever convention suits us. To paraphrase [Humpty Dumpty: when I use a marble diagram, it means just what I choose it to mean—neither more nor less](https://www.goodreads.com/quotes/12608-when-i-use-a-word-humpty-dumpty-said-in-rather). But when you're combining hot and cold sources together, there might not be one obviously best way to represent this in a marble diagram. We could even do something like this, where we describe the events that `hot` represents separately from the events seen by a particular subscription to `hot`. +TODO: draw properly, and change final label to `cold.Concat(hot)` ``` Concat subscription to cold |--0--1--2-| Events available through hot ---A---B---C---D---E- @@ -68,6 +71,7 @@ Concat(cold, hot) |--0--1--2--C---D---E-| We're using a distinct 'lane' in the marble diagram to represent the events seen by a particular subscription to a source. With this technique, we can also show what would happen if you pass the same cold source into `Concat` twice: +TODO: draw properly, and change final label to `cold.Concat(cold)` ``` Concat 1st subscription to cold |--0--1--2-| Concat 2nd subscription to cold |--0--1--2-| @@ -78,7 +82,7 @@ This highlights the fact that that being a cold source, `cold` provides items se #### Concatenating Multiple Sources -What if you wanted to concatenate more than two sequences? `Concat` has an overloads accepting multiple observable sequences as an array. This is annotated with the `params` keyword, so you don't need to construct the array explicitly—you can just pass any number of arguments, and the C# compiler will generate the code to create the array for you. There's also an overload taking an `IEnumerable>`, in case the observables you want to concatenate are already in some collection. +What if you wanted to concatenate more than two sequences? `Concat` has an overload accepting multiple observable sequences as an array. This is annotated with the `params` keyword, so you don't need to construct the array explicitly—you can just pass any number of arguments, and the C# compiler will generate the code to create the array for you. There's also an overload taking an `IEnumerable>`, in case the observables you want to concatenate are already in some collection. ```cs public static IObservable Concat( @@ -161,6 +165,7 @@ Concat completed Below is a marble diagram of the `Concat` operator applied to the `GetSequences` method. 's1', 's2' and 's3' represent sequence 1, 2 and 3. Respectively, 'rs' represents the result sequence. +TODO: draw properly ``` s1-----1| s2 ---2| @@ -190,7 +195,7 @@ This is a common enough requirement that Rx supplies `Prepend` that has a simila IObservable lastKnownThenLive = live.Prepend(lastKnown); ``` -This observable will do exactly the same thing: subscribers will immediately receive the `lastKnown`, and then if the vessel should emit further navigation messages, they will receive those too. By the way, for this scenario you'd probably also want to ensure that the look up of the "last known" message happens as late as possible. We can delay this until the point of subscription by using `Defer`: +This observable will do exactly the same thing: subscribers will immediately receive the `lastKnown`, and then if the vessel should emit further navigation messages, they will receive those too. By the way, for this scenario you'd probably also want to ensure that the look up of the "last known" message happens as late as possible. We can delay this until the point of subscription by using [`Defer`](03_CreatingObservableSequences.md#observabledefer): ```cs public static IObservable GetLastKnownAndSubsequenceNavigationForVessel(uint mmsi) @@ -235,7 +240,7 @@ The existence of `Prepend` might lead you to wonder whether there is an `Append` IObservable oneMore = arguments.Append("And another thing..."); ``` -There is no corresponding `EndWith`. Apparently there's not much demand—the [Rx repository](https://github.com/dotnet/reactive) has not yet had a feature request. So although the symmetry of `Prepend` and `Append` does suggest that there could be a similar symmetry between `StartWith` and an as-yet-hypothetical `EndWith`, the absence of this counterpart doesn't seem to have caused any problems. There's an obvious value to being able to create observable sources that always immediately produce a useful output; it's not clear what `EndWith` would be useful for beside satisfying a craving for symmetry. +There is no corresponding `EndWith`. There's no fundamental reason that there couldn't be such a thing it's just that apparently there's not much demand—the [Rx repository](https://github.com/dotnet/reactive) has not yet had a feature request. So although the symmetry of `Prepend` and `Append` does suggest that there could be a similar symmetry between `StartWith` and an as-yet-hypothetical `EndWith`, the absence of this counterpart doesn't seem to have caused any problems. There's an obvious value to being able to create observable sources that always immediately produce a useful output; it's not clear what `EndWith` would be useful for, besides satisfying a craving for symmetry. ### DefaultIfEmpty @@ -250,7 +255,7 @@ You don't have to supply `DefaultIfEmpty` with a value. If you use the overload The final operator that combines sequences sequentially is `Repeat`. It allows you to simply repeat a sequence. It offers overloads where you can specify the number of times to repeat the input, and one that repeats infinitely: ```cs -//Repeats the observable sequence a specified number of times. +// Repeats the observable sequence a specified number of times. public static IObservable Repeat( this IObservable source, int repeatCount) @@ -260,7 +265,7 @@ public static IObservable Repeat( this IObservable source) ``` -`Repeat` resubscribes to the source for each repetition. +`Repeat` resubscribes to the source for each repetition. This means that this will only strictly repeat if the source produces the same items each time you subscribe—unlike the [`ReplaySubject`](03_CreatingObservableSequences.md#replaysubject), this doesn't store and replay the items that emerge from the source. This means that you normally won't want to call `Repeat` on a hot source. (If you really want repetition of the output of a hot source, a combination of [`Replay`](15_PublishingOperators.md#replay) and `Repeat` might fit the bill.) If you use the overload that repeats indefinitely, then the only way the sequence will stop is if there is an error or the subscription is disposed of. The overload that specifies a repeat count will stop on error, un-subscription, or when it reaches that count. This example shows the sequence [0,1,2] being repeated three times. @@ -290,7 +295,7 @@ Completed ## Concurrent sequences -We'll now move on to operators for combining observable sequences that are producing values concurrently. +We'll now move on to operators for combining observable sequences that might produce values concurrently. ### Amb @@ -299,9 +304,9 @@ Rx's `Amb` takes any number of `IObservable` sources as inputs, and waits to Why is that useful? -A common use case for `Amb` is when you want to produce some sort of result as quickly as possible, and you have multiple options for obtaining that result but you don't know in advance which will be fastest. Perhaps there are multiple servers that could all potentially give you the answer you want, and it's impossible to predict which will have the lowest response time. You could send requests to all of them, and then just use the first to respond. If you model each individual request as its own `IObservable`, `Amb` can handle this for you. Note that this isn't very efficient: you're asking several servers all to do the same work, and you're going to discard the results from most of them. (Since `Amb` unsubscribes from all the sources it's not going to use as soon as the first reacts, it's possible that you might be able to send a message to all the other servers to cancel the request. But this is still somewhat wasteful.) But there may be scenarios in which timeliness is crucial, and for those cases it might be worth tolerating a bit of wasted effort to produce faster results. +A common use case for `Amb` is when you want to produce some sort of result as quickly as possible, and you have multiple options for obtaining that result, but you don't know in advance which will be fastest. Perhaps there are multiple servers that could all potentially give you the answer you want, and it's impossible to predict which will have the lowest response time. You could send requests to all of them, and then just use the first to respond. If you model each individual request as its own `IObservable`, `Amb` can handle this for you. Note that this isn't very efficient: you're asking several servers all to do the same work, and you're going to discard the results from most of them. (Since `Amb` unsubscribes from all the sources it's not going to use as soon as the first reacts, it's possible that you might be able to send a message to all the other servers to cancel the request. But this is still somewhat wasteful.) But there may be scenarios in which timeliness is crucial, and for those cases it might be worth tolerating a bit of wasted effort to produce faster results. -To illustrate `Amb`'s behaviour, here's a marble diagram showing three sequences, `s1`, `s2`, and `s3`, each able to produce a sequence values. The line labelled `r` shows the result of passing all three sequences into `Amb`. As you can see, `r` provides exactly the same notifications as `s1`. This is because in this example, `s1` was the first sequence to produce a value. +To illustrate `Amb`'s behaviour, here's a marble diagram showing three sequences, `s1`, `s2`, and `s3`, each able to produce a sequence values. The line labelled `r` shows the result of passing all three sequences into `Amb`. As you can see, `r` provides exactly the same notifications as `s1`, because in this example, `s1` was the first sequence to produce a value. ![](GraphicsIntro/Ch09-CombiningSequences-Marbles-Amb-Marbles.svg) @@ -344,6 +349,7 @@ Completed If we changed the order so that `s2.OnNext(99)` came before the call to `s1.OnNext(1);` then s2 would produce values first and the marble diagram would look like this. +TODO: draw properly ``` s1 --1--2----3--4| s2 99----88--| @@ -367,7 +373,7 @@ public static IObservable Amb( {...} ``` -Reusing the `GetSequences` method from the `Concat` section, we see that the evaluation of the outer (IEnumerable) sequence is eager. +Reusing the `GetSequences` method from the `Concat` section, we see that `Amb` evaluates the outer (IEnumerable) sequence completely before subscribing to any of the sequences it returns. ```csharp GetSequences().Amb().Dump("Amb"); @@ -390,6 +396,8 @@ Amb completed Here is the marble diagram illustrating how this code behaves: +TODO: draw properly + ``` s1-----1| s2---2| @@ -397,7 +405,9 @@ s3-3| rs-3| ``` -Take note that the inner observable sequences are not subscribed to until the outer sequence has yielded them all. This means that the third sequence is able to return values the fastest even though there are two sequences yielded one second before it (due to the `Thread.Sleep`). +Since the inner observable sequences are not subscribed to until the outer sequence has yielded them all, the third sequence is able to return values the fastest even though there are two sequences yielded one second before it (due to the `Thread.Sleep`). + +TODO: read through to here. ### Merge From 726be65aa8a083a2ddd5dd34dbc921480ee50a0a Mon Sep 17 00:00:00 2001 From: Ian Griffiths Date: Wed, 8 Nov 2023 17:21:57 +0000 Subject: [PATCH 076/142] Ch09 updates after read through --- content/09_CombiningSequences.md | 389 +-- ...ombiningSequences-Marbles-Amb-Marbles2.svg | 99 + ...ombiningSequences-Marbles-Amb-Marbles3.svg | 71 + ...CombiningSequences-Marbles-Artboard 26.svg | 12 + ...equences-Marbles-CombineLatest-Marbles.svg | 88 + ...arbles-Concat-Hot-Marbles-SourceAndSub.svg | 155 ++ ...ces-Marbles-Concat-Hot-Marbles-SubOnly.svg | 95 + ...ngSequences-Marbles-Concat-Hot-Marbles.svg | 82 +- ...nces-Marbles-Concat-Marbles-Cold-Twice.svg | 107 + ...Sequences-Marbles-Concat-Marbles-Three.svg | 79 + ...ingSequences-Marbles-GroupJoin-Marbles.svg | 168 ++ ...mbiningSequences-Marbles-Join-Marbles1.svg | 153 ++ ...mbiningSequences-Marbles-Join-Marbles2.svg | 118 + ...gSequences-Marbles-Merge-Marbles-Multi.svg | 79 + ...mbiningSequences-Marbles-Merge-Marbles.svg | 12 +- ...ences-Marbles-Switch-Marbles-Bad-Merge.svg | 125 + ...biningSequences-Marbles-Switch-Marbles.svg | 113 + ...CombiningSequences-Marbles-Zip-Marbles.svg | 95 + .../Ch09-CombiningSequences-Marbles.ai | 2355 ++++++++++------- 19 files changed, 3172 insertions(+), 1223 deletions(-) create mode 100644 content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Amb-Marbles2.svg create mode 100644 content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Amb-Marbles3.svg create mode 100644 content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Artboard 26.svg create mode 100644 content/GraphicsIntro/Ch09-CombiningSequences-Marbles-CombineLatest-Marbles.svg create mode 100644 content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Concat-Hot-Marbles-SourceAndSub.svg create mode 100644 content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Concat-Hot-Marbles-SubOnly.svg create mode 100644 content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Concat-Marbles-Cold-Twice.svg create mode 100644 content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Concat-Marbles-Three.svg create mode 100644 content/GraphicsIntro/Ch09-CombiningSequences-Marbles-GroupJoin-Marbles.svg create mode 100644 content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Join-Marbles1.svg create mode 100644 content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Join-Marbles2.svg create mode 100644 content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Merge-Marbles-Multi.svg create mode 100644 content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Switch-Marbles-Bad-Merge.svg create mode 100644 content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Switch-Marbles.svg create mode 100644 content/GraphicsIntro/Ch09-CombiningSequences-Marbles-Zip-Marbles.svg diff --git a/content/09_CombiningSequences.md b/content/09_CombiningSequences.md index f819fb3..8c89e6a 100644 --- a/content/09_CombiningSequences.md +++ b/content/09_CombiningSequences.md @@ -41,7 +41,6 @@ Rx's `Concat` does nothing with its sources until something subscribes to the `I Although Rx's `Concat` has the same logical behaviour as the [LINQ to Objects `Concat`](https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable.concat), there are some Rx-specific details to be aware of. In particular, timing is often more significant in Rx than with other LINQ implementations. For example, in Rx we distinguish between [_hot_ and _cold_ source](02_KeyTypes.md#hot-and-cold-sources). With a cold source it typically doesn't matter exactly when you subscribe, but hot sources are essentially live, so you only get notified of things that happen while you are subscribed. This can mean that hot sources might not be a good fit with `Concat` The following marble diagram illustrates a scenario in which this produces results that have the potential to surprise: -TODO: relabel as `cold`, `hot`, `cold.Concat(hot)` ![](./GraphicsIntro/Ch09-CombiningSequences-Marbles-Concat-Hot-Marbles.svg) Since `Concat` doesn't subscribe to its second input until the first has finished, it won't see the first couple of items that the `hot` source would deliver to any subscribers that been listening from the start. This might not be the behaviour you would expect: it certainly doesn't look like this concatenated all of the items from the first sequence with all of the items from the second one. It looks like it missed out `A` and `B` from `hot`. @@ -50,33 +49,18 @@ Since `Concat` doesn't subscribe to its second input until the first has finishe This last example reveals that marble diagrams gloss over a detail: they show when a source starts, when it produces values, and when it finishes, but they ignore the fact that to be able to produce items at all, an observable source needs a subscriber. If nothing subscribes to an `IObservable`, then it doesn't really produce anything. `Concat` doesn't subscribe to its second input until the first completes, so arguably instead of the diagram above, it would be more accurate to show this: -TODO: draw properly, and change final label to `cold.Concat(hot)` -``` -cold |--0--1--2-| -hot |C---D---E-| -Concat(cold, hot) |--0--1--2--C---D---E-| -``` +![](./GraphicsIntro/Ch09-CombiningSequences-Marbles-Concat-Hot-Marbles-SubOnly.svg) This makes it easier to see why `Concat` produces the output it does. But since `hot` is a hot source here, this diagram fails to convey the fact that `hot` is producing items entirely on its own schedule. In a scenario where `hot` had multiple subscribers, then the earlier diagram would arguably be better because it correctly reflects every event available from `hot` (regardless of however many listeners might be subscribed at any particular moment). But although this convention works for hot sources, it doesn't work for cold ones, which typically start producing items upon subscription. A source returned by [`Timer`](03_CreatingObservableSequences.md#observabletimer) produces items on a regular schedule, but that schedule starts at the instant when subscription occurs. That means that if there are multiple subscriptions, there are multiple schedules. Even if I have just a single `IObservable` returned by `Observable.Timer`, each distinct subscriber will get items on its own schedule—subscribers receive events at a regular interval _starting from whenever they happened subscribe_. So for cold observables, it typically makes sense to use the convention used by this second diagram, in which we're looking at the events received by one particular subscription to a source. Most of the time we can get away with ignoring this subtlety, quietly using whichever convention suits us. To paraphrase [Humpty Dumpty: when I use a marble diagram, it means just what I choose it to mean—neither more nor less](https://www.goodreads.com/quotes/12608-when-i-use-a-word-humpty-dumpty-said-in-rather). But when you're combining hot and cold sources together, there might not be one obviously best way to represent this in a marble diagram. We could even do something like this, where we describe the events that `hot` represents separately from the events seen by a particular subscription to `hot`. -TODO: draw properly, and change final label to `cold.Concat(hot)` -``` -Concat subscription to cold |--0--1--2-| -Events available through hot ---A---B---C---D---E- -Concat subscription to hot |C---D---E-| -Concat(cold, hot) |--0--1--2--C---D---E-| -``` +![](./GraphicsIntro/Ch09-CombiningSequences-Marbles-Concat-Hot-Marbles-SourceAndSub.svg) + We're using a distinct 'lane' in the marble diagram to represent the events seen by a particular subscription to a source. With this technique, we can also show what would happen if you pass the same cold source into `Concat` twice: -TODO: draw properly, and change final label to `cold.Concat(cold)` -``` -Concat 1st subscription to cold |--0--1--2-| -Concat 2nd subscription to cold |--0--1--2-| -Concat(cold, cold) |--0--1--2----0--1--2-| -``` +![](./GraphicsIntro/Ch09-CombiningSequences-Marbles-Concat-Marbles-Cold-Twice.svg) This highlights the fact that that being a cold source, `cold` provides items separately to each subscription. We see the same three values emerging from the same source, but at different times. @@ -137,7 +121,7 @@ public IEnumerable> GetSequences() } ``` -We can call this `GetSequences` method and pass the results to `Concat`, and then use our `Dump` extension method to watch what happens: +We can call this `GetSequences` method and pass the results to `Concat`, and then use our `D ump` extension method to watch what happens: ```cs GetSequences().Concat().Dump("Concat"); @@ -165,15 +149,9 @@ Concat completed Below is a marble diagram of the `Concat` operator applied to the `GetSequences` method. 's1', 's2' and 's3' represent sequence 1, 2 and 3. Respectively, 'rs' represents the result sequence. -TODO: draw properly -``` -s1-----1| -s2 ---2| -s3 -3| -rs-----1---2-3| -``` +![](./GraphicsIntro/Ch09-CombiningSequences-Marbles-Concat-Marbles-Three.svg) -You should note that once the iterator has executed its first `yield return` to return the first sequence, the iterator does not continue until the first sequence has completed. The iterator calls `Console.WriteLine` to display the text `Yield 2nd sequence` immediately after that first `yield return`, but you can see that message doesn't appear in the output until after we see the `Concat-->1` message showing the first output from `Concat`, and also the `1st finished` message, produced by the `Finally` operator, which runs only after that first sequence has completed. (The code also includes a 500ms delay so that if you run this, you can see that everything stops for a bit until that first source produces its single value then completes.) Once the first source completes, the `GetSequences` method continues (because `Concat` will ask it for the next item once the first observable source completes). When `GetSequences` provides the second sequence with another `yield return`, `Concat` subscribes to that, and again `GetSequences` makes no further progress until that second observable sequence completes. The third sequence is processed in the same fashion. +You should note that once the iterator has executed its first `yield return` to return the first sequence, the iterator does not continue until the first sequence has completed. The iterator calls `Console.WriteLine` to display the text `Yield 2nd sequence` immediately after that first `yield return`, but you can see that message doesn't appear in the output until after we see the `Concat-->1` message showing the first output from `Concat`, and also the `1st finished` message, produced by the `Finally` operator, which runs only after that first sequence has completed. (The code also makes that first source delay for 500ms before producing its value, so that if you run this, you can see that everything stops for a bit until that first source produces its single value then completes.) Once the first source completes, the `GetSequences` method continues (because `Concat` will ask it for the next item once the first observable source completes). When `GetSequences` provides the second sequence with another `yield return`, `Concat` subscribes to that, and again `GetSequences` makes no further progress until that second observable sequence completes. When asked for the third sequence, the iterator itself waits for a second before producing that third and final value, which you can see from the gap between the end of `s2` and the start of `s3` in the diagram. ### Prepend @@ -349,13 +327,7 @@ Completed If we changed the order so that `s2.OnNext(99)` came before the call to `s1.OnNext(1);` then s2 would produce values first and the marble diagram would look like this. -TODO: draw properly -``` -s1 --1--2----3--4| -s2 99----88--| -s3 ---8-----7--6--| -r 99----88-| -``` +![](GraphicsIntro/Ch09-CombiningSequences-Marbles-Amb-Marbles2.svg) There are a few overloads of `Amb`. The preceding example used the overload that takes a `params` array of sequences. There's also an overload that takes exactly two sources, avoiding the array allocation that occurs with `params`. Finally, you could pass in an `IEnumerable>`. (Note that there are no overloads that take an `IObservable>`. `Amb` requires all of the source observables it monitors to be supplied up front.) @@ -396,18 +368,10 @@ Amb completed Here is the marble diagram illustrating how this code behaves: -TODO: draw properly +![](./GraphicsIntro/Ch09-CombiningSequences-Marbles-Amb-Marbles3.svg) -``` -s1-----1| -s2---2| -s3-3| -rs-3| -``` - -Since the inner observable sequences are not subscribed to until the outer sequence has yielded them all, the third sequence is able to return values the fastest even though there are two sequences yielded one second before it (due to the `Thread.Sleep`). +Remember that `GetSequences` produces its first two observables as soon as it is asked for them, and then waits for 1 second before producing the third and final one. But unlike `Concat`, `Amb` won't subscribe to any of its sources until it has retrieved all of them from the iterator, which is why this marble diagram shows the subscriptions to all three sources starting after 1 second. (The first two sources were available earlier—`Amb` would have started enumerating the sources as soon as subscription occurred, but it waited until it had all three before subscribing, which is why they all appear over on the right.) The third sequence has the shortest delay between subscription and producing its value, so although it's the last observable returned, it is able to produce its value the fastest even though there are two sequences yielded one second before it (due to the `Thread.Sleep`). -TODO: read through to here. ### Merge @@ -463,16 +427,18 @@ public static IObservable Merge( {...} ``` -When you know at compile time exactly how many sequences you will be merging, choosing between the first two operators really is a matter of your preferred style: either provide them as a `params` array or chain the operators together. The third and fourth overloads allow to you merge sequences that can be evaluated lazily at run time. That last `Merge` overload that takes a sequence of sequences is particularly interesting, because it makes it possible for the set of sources being merged to grow over time. With that last overload, `Merge` will remain subscribed to `sources` for as long as your code remains subscribed to the `IObservable` that `Merge` returns. So if `sources` emits more and more `IObservable`s over time, these will all be included by `Merge`. +As the number of sources being merged goes up, the operators that take collections have an advantage over the first overload. (I.e., `s1.Merge(s2).Merge(s3)` performs slightly less well than `Observable.Merge(new[] { s1, s2, s3 })`, or the equivalent `Observable.Merge(s1, s2, s3)`.) However, for just three or four, the differences are small, so in practice you can choose between the first two overloads as a matter of your preferred style. (If you're merging 100 sources or more the differences are more pronounced, but by that stage, the you probably wouldn't want to use the chained call style anyway.) The third and fourth overloads allow to you merge sequences that can be evaluated lazily at run time. + +That last `Merge` overload that takes a sequence of sequences is particularly interesting, because it makes it possible for the set of sources being merged to grow over time. `Merge` will remain subscribed to `sources` for as long as your code remains subscribed to the `IObservable` that `Merge` returns. So if `sources` emits more and more `IObservable`s over time, these will all be included by `Merge`. -That might sound familiar. In the [Transformation chapter](06_Transformation.md), we looked at the [`SelectMany` operator](06_Transformation.md#selectmany), which is able to flatten multiple observable sources back out into a single observable source. This is just another illustration of why I've described `SelectMany` as a fundamental operator in Rx: strictly speaking we don't need a lot of the operators that Rx gives us because we could build them using `SelectMany`. Here's a simple re-implementation of that last `Merge` overload using `SelectMany`: +That might sound familiar. The [`SelectMany` operator](06_Transformation.md#selectmany), which is able to flatten multiple observable sources back out into a single observable source. This is just another illustration of why I've described `SelectMany` as a fundamental operator in Rx: strictly speaking we don't need a lot of the operators that Rx gives us because we could build them using `SelectMany`. Here's a simple re-implementation of that last `Merge` overload using `SelectMany`: ```cs public static IObservable MyMerge(this IObservable> sources) => sources.SelectMany(source => source); ``` -As well as illustrating that we don't technically need Rx to provide that last `Merge` for us, it's also a good illustration of why it's helpful that it does. It's not immediately obvious what this does—why are we passing a lambda that just returns its argument? Unless you've seen this before, it can take some thought to work out that `SelectMany` expects us to pass a callback that it invokes for each incoming item, but that our input items are already nested sequences, so we can just return each item directly, and `SelectMany` will then take that and merge everything it produces into its output stream. And even if you have internalized `SelectMany` so completely that you know right away that this will just flatten `sources`, you'd still probably find `Observable.Merge(sources)` a more direct expression of intent. +As well as illustrating that we don't technically need Rx to provide that last `Merge` for us, it's also a good illustration of why it's helpful that it does. It's not immediately obvious what this does—why are we passing a lambda that just returns its argument? Unless you've seen this before, it can take some thought to work out that `SelectMany` expects us to pass a callback that it invokes for each incoming item, but that our input items are already nested sequences, so we can just return each item directly, and `SelectMany` will then take that and merge everything it produces into its output stream. And even if you have internalized `SelectMany` so completely that you know right away that this will just flatten `sources`, you'd still probably find `Observable.Merge(sources)` a more direct expression of intent. (Also, since `Merge` is a more specialized operator, Rx is able to provide a very slightly more efficient implementation of it than the `SelectMany` version shown above.) If we again reuse the `GetSequences` method, we can see how the `Merge` operator works with a sequence of sequences. @@ -499,12 +465,8 @@ Merge completed As we can see from the marble diagram, s1 and s2 are yielded and subscribed to immediately. s3 is not yielded for one second and then is subscribed to. Once all input sequences have completed, the result sequence completes. -``` -s1-----1| -s2---2| -s3 -3| -rs---2-1-----3| -``` +![](GraphicsIntro/Ch09-CombiningSequences-Marbles-Merge-Marbles-Multi.svg) + For each of the `Merge` overloads that accept variable numbers of sources (either via an array, an `IEnumerable>`, or an `IObservable>`) there's an additional overload adding a `maxconcurrent` parameter. For example: @@ -518,9 +480,9 @@ This enables you to limit the number of sources that `Merge` accepts inputs from Rx's `Switch` operator takes an `IObservable>`, and produces notifications from the most recent nested observable. Each time its source produces a new nested `IObservable`, `Switch` unsubscribes from the previous nested source (unless this is the first source, in which case there won't be a previous one) and subscribes to the latest one. -`Switch` can be used in a 'time to leave' type application. In fact you can see the source code for a modified version of [how Bing provides (or at least provided; the implementation may have changed) notifications telling you that it's time to leave for an appointment](https://github.com/reaqtive/reaqtor/blob/c3ae17f93ae57f3fb75a53f76e60ae69299a509e/Reaqtor/Samples/Remoting/Reaqtor.Remoting.Samples/DomainFeeds.cs#L33-L76). Since that's derived from a real example, it's a little complex, so I'll describe just the essence here. +`Switch` can be used in a 'time to leave' type feature for a calendar application. In fact you can see the source code for a modified version of [how Bing provides (or at least provided; the implementation may have changed) notifications telling you that it's time to leave for an appointment](https://github.com/reaqtive/reaqtor/blob/c3ae17f93ae57f3fb75a53f76e60ae69299a509e/Reaqtor/Samples/Remoting/Reaqtor.Remoting.Samples/DomainFeeds.cs#L33-L76). Since that's derived from a real example, it's a little complex, so I'll describe just the essence here. -The basic idea with a 'time to leave' notification is that we using map and route finding services to work out the expected journey time to get to wherever the appointment is, and to use the [`Timer` operator](03_CreatingObservableSequences.md#observabletimer) to create an `IObservable` that will produce a notification when it's time to leave. (Specifically this code produces an `IObservable` which reports the proposed route for the journey, and expected travel time.) However, there are two things that can change, rendering the initial predicted journey time useless. First, traffic conditions can change. When the user created their appointment, we have to guess the expected journey time based on how traffic normally flows at the time of day in question. However, if there turns out to be really bad traffic on the day, the estimate will need to be revised upwards, and we'll need to notify the end user earlier. +The basic idea with a 'time to leave' notification is that we using map and route finding services to work out the expected journey time to get to wherever the appointment is, and to use the [`Timer` operator](03_CreatingObservableSequences.md#observabletimer) to create an `IObservable` that will produce a notification when it's time to leave. (Specifically this code produces an `IObservable` which reports the proposed route for the journey, and expected travel time.) However, there are two things that can change, rendering the initial predicted journey time useless. First, traffic conditions can change. When the user created their appointment, we have to guess the expected journey time based on how traffic normally flows at the time of day in question. However, if there turns out to be really bad traffic on the day, the estimate will need to be revised upwards, and we'll need to notify the user earlier. The other thing that can change is the user's location. This will also obviously affect the predicted journey time. @@ -530,9 +492,7 @@ Every time we revise our estimate, we want to abandon the previously created `IO You can see the [example for that scenario in the Reaqtor repo](https://github.com/reaqtive/reaqtor/blob/c3ae17f93ae57f3fb75a53f76e60ae69299a509e/Reaqtor/Samples/Remoting/Reaqtor.Remoting.Samples/DomainFeeds.cs#L33-L76). Here, I'm going to present a different, simpler scenario: live searches. As you type, the text is sent to a search service and the results are returned to you as an observable sequence. Most implementations have a slight delay before sending the request so that unnecessary work does not happen. Imagine I want to search for "Intro to Rx". I quickly type in "Into to" and realize I have missed the letter 'r'. I stop briefly and change the text to "Intro ". By now, two searches have been sent to the server. The first search will return results that I do not want. Furthermore, if I were to receive data for the first search merged together with results for the second search, it would be a very odd experience for the user. I really only want results corresponding to the latest search text. This scenario fits perfectly with the `Switch` method. -In this example, there is a source that represents a sequence of search text. Values the user types are represented as the source sequence. Using `Select`, we pass the value of the search to a function that takes a `string` and returns an `IObservable`. This creates our resulting nested sequence, `IObservable>`. - -Search function signature: +In this example, there is an `IObservable` source that represents the search text—each new value the user types emerges from this source sequence. We also have a search function that produces a single search result for a given search term: ```csharp private IObservable SearchResults(string query) @@ -541,46 +501,33 @@ private IObservable SearchResults(string query) } ``` -Using `Merge` with overlapping search: +This returns just a single value, but we model it as an `IObservable` partly to deal with the fact that it might take some time to perform the search, and also to be enable to use it with Rx. We can take our source of search terms, and then use `Select` to pass each new search value to this `SearchResults` function. This creates our resulting nested sequence, `IObservable>`. + +Suppose we were to then use `Merge` to process the results: ```csharp IObservable searchValues = ....; -IObservable> search = searchValues.Select(searchText=>SearchResults(searchText)); +IObservable> search = searchValues.Select(searchText => SearchResults(searchText)); var subscription = search .Merge() .Subscribe(Console.WriteLine); ``` - +If we were lucky and each search completed before the next element from `searchValues` was produced, the output would look sensible. However, it is much more likely, however that multiple searches will result in overlapped search results. This marble diagram shows what the `Merge` function could do in such a situation. -If we were lucky and each search completed before the next element from `searchValues` was produced, the output would look sensible. It is much more likely, however that multiple searches will result in overlapped search results. This marble diagram shows what the `Merge` function could do in such a situation. +![](GraphicsIntro/Ch09-CombiningSequences-Marbles-Switch-Marbles-Bad-Merge.svg) -- `SV` is the searchValues sequence -- `S1` is the search result sequence for the first value in searchValues/SV -- `S2` is the search result sequence for the second value in searchValues/SV -- `S3` is the search result sequence for the third value in searchValues/SV -- `RM` is the result sequence for the merged (`R`esult `M`erge) sequences -``` -SV--1---2---3---| -S1 -1--1--1--1| -S2 --2-2--2--2| -S3 -3--3| -RM---1--1-2123123-2| -``` +Note how the values from the search results are all mixed together. The fact that some search terms took longer to get a search result than others has also meant that they have come out in the wrong order. This is not what we want. If we use the `Switch` extension method we will get much better results. `Switch` will subscribe to the outer sequence and as each inner sequence is yielded it will subscribe to the new inner sequence and dispose of the subscription to the previous inner sequence. This will result in the following marble diagram: -Note how the values from the search results are all mixed together. This is not what we want. If we use the `Switch` extension method we will get much better results. `Switch` will subscribe to the outer sequence and as each inner sequence is yielded it will subscribe to the new inner sequence and dispose of the subscription to the previous inner sequence. This will result in the following marble diagram where `RS` is the result sequence for the Switch (`R`esult `S`witch) sequences -``` -SV--1---2---3---| -S1 -1--1--1--1| -S2 --2-2--2--2| -S3 -3--3| -RS --1--1-2-23--3| -``` +![](GraphicsIntro/Ch09-CombiningSequences-Marbles-Switch-Marbles.svg) + + +Now, each time a new search term arrives, causing a new search to be kicked off, a corresponding new `IObservable` for that search's results appears, causing `Switch` to unsubscribe from the previous results. This means that any results that arrive too late (i.e., when the result is for a search term that is no longer the one in the search box) will be dropped. As it happens, in this particular example, this means that we only see the result for the final search term. All the intermediate values that we saw as the user was typing didn't hang around for long, because the user kept on pressing the next key before we'd received the previous value's results. Only at the end, when the user stopped typing for long enough that the search results came back before they became out of date, do we finally see a value from `Switch`. The net effect is that we've eliminated confusing results that are out of date. -Also note that, even though the results from S1 and S2 are still being pushed, they are ignored as their subscription has been disposed of. This eliminates the issue of overlapping values from the nested sequences. +This is another diagram where the ambiguity of marble diagrams causes a slight issue. I've shown each of the single-value observables produced by each of the calls to `SearchResults`, but in practice `Switch` unsubscribes from all but the last of these before they've had a chance to produce a value. So this diagram is showing the values those sources could potentially produce, and not the values that they actually delivered as part of the subscription, because the subscriptions were cut short. ## Pairing sequences @@ -590,7 +537,7 @@ The previous methods allowed us to flatten multiple sequences sharing a common t `Zip` combines pairs of items from two sequences. So its first output is created by combining the first item from one input with the first item from the other. The second output combines the second item from each input. And so on. The name is meant to evoke a zipper on clothing or a bag, which brings the teeth on each half of the zipper together one pair at a time. -Since `Zip` combines pairs of item in strict order, it will complete when the first of the sequences complete. If one of the sequence has reached its end, then even if the other continues to emit values, there will be nothing to pair any of these values with, so `Zip` just unsubscribes at this point and reports completion. +Since `Zip` combines pairs of item in strict order, it will complete when the first of the sequences complete. If one of the sequence has reached its end, then even if the other continues to emit values, there will be nothing to pair any of these values with, so `Zip` just unsubscribes at this point, discards the unpairable values, and reports completion. If either of the sequences produces an error, the sequence returned by `Zip` will report that same error. @@ -609,20 +556,16 @@ var chars = Observable.Interval(TimeSpan.FromMilliseconds(150)) .Select(i => Char.ConvertFromUtf32((int)i + 97)); // Zip values together -nums.Zip(chars, (lhs, rhs) => new { Left = lhs, Right = rhs }) +nums.Zip(chars, (lhs, rhs) => (lhs, rhs))) .Dump("Zip"); -``` + ``` -This can be seen in the marble diagram below. Note that the result uses two lines so that we can represent a complex type, i.e. the anonymous type with the properties Left and Right. +The effect can be seen in this marble diagram below.: -``` -nums ----0----1----2| -chars --a--b--c--d--e--f| -result----0----1----2| - a b c| -``` +![](GraphicsIntro/Ch09-CombiningSequences-Marbles-Zip-Marbles.svg) -The actual output of the code: + +Here's the actual output of the code: ``` { Left = 0, Right = a } @@ -630,65 +573,7 @@ The actual output of the code: { Left = 2, Right = c } ``` -Note that the `nums` sequence only produced three values before completing, while the `chars` sequence produced six values. The result sequence thus has three values, as this was the most pairs that could be made. - -The first use I saw of `Zip` was to showcase drag and drop. [The example](http://channel9.msdn.com/Blogs/J.Van.Gogh/Writing-your-first-Rx-Application) tracked mouse movements from a `MouseMove` event that would produce event arguments with its current X,Y coordinates. First, the example turns the event into an observable sequence. Then they cleverly zipped the sequence with a `Skip(1)` version of the same sequence. This allows the code to get a delta of the mouse position, i.e. where it is now (sequence.Skip(1)) minus where it was (sequence). It then applied the delta to the control it was dragging. - -To visualize the concept, let us look at another marble diagram. Here we have the mouse movement (MM) and the Skip 1 (S1). The numbers represent the index of the mouse movement. - -``` -MM --1--2--3--4--5 -S1 --2--3--4--5 -Zip --1--2--3--4 - 2 3 4 5 -``` - -Here is a code sample where we fake out some mouse movements with our own subject. - -```csharp -var mm = new Subject(); -var s1 = mm.Skip(1); - -var delta = mm.Zip(s1, - (prev, curr) => new Coord - { - X = curr.X - prev.X, - Y = curr.Y - prev.Y - }); - -delta.Subscribe( - Console.WriteLine, - () => Console.WriteLine("Completed")); - -mm.OnNext(new Coord { X = 0, Y = 0 }); -mm.OnNext(new Coord { X = 1, Y = 0 }); //Move across 1 -mm.OnNext(new Coord { X = 3, Y = 2 }); //Diagonally up 2 -mm.OnNext(new Coord { X = 0, Y = 0 }); //Back to 0,0 -mm.OnCompleted(); -``` - -This is the simple Coord(inate) class we use. - -```csharp -public class Coord -{ - public int X { get; set; } - public int Y { get; set; } - public override string ToString() - { - return string.Format("{0},{1}", X, Y); - } -} -``` - -Output: - -``` -0,1 -2,2 --3,-2 -Completed -``` +Note that the `nums` sequence only produced three values before completing, while the `chars` sequence produced six values. The result sequence produced three values, this was as many pairs is it could make. It is also worth noting that `Zip` has a second overload that takes an `IEnumerable` as the second input sequence. @@ -706,27 +591,27 @@ This allows us to zip sequences from both `IEnumerable` and `IObservable` ### SequenceEqual -There's another operator that processes pairs of items from two source: `SequenceEqual`. But instead of producing an output for each pair of inputs, this compares each pair, and ultimately produces a single value indicating whether every pair of inputs was equal or not. +There's another operator that processes pairs of items from two sources: `SequenceEqual`. But instead of producing an output for each pair of inputs, this compares each pair, and ultimately produces a single value indicating whether every pair of inputs was equal or not. -In the case where the sources produce different values, `SequenceEqual` produces a single `false` value as soon as it detects this. But if the sources are equal, it can only report this when both have completed because until that happens, it doesn't yet know if there might a difference coming later. +In the case where the sources produce different values, `SequenceEqual` produces a single `false` value as soon as it detects this. But if the sources are equal, it can only report this when both have completed because until that happens, it doesn't yet know if there might a difference coming later. Here's an example illustrating its behaviour: -```csharp +```cs var subject1 = new Subject(); subject1.Subscribe( - i=>Console.WriteLine("subject1.OnNext({0})", i), + i => Console.WriteLine($"subject1.OnNext({i})"), () => Console.WriteLine("subject1 completed")); var subject2 = new Subject(); subject2.Subscribe( - i=>Console.WriteLine("subject2.OnNext({0})", i), + i => Console.WriteLine($"subject2.OnNext({i})"), () => Console.WriteLine("subject2 completed")); var areEqual = subject1.SequenceEqual(subject2); areEqual.Subscribe( - i => Console.WriteLine("areEqual.OnNext({0})", i), + i => Console.WriteLine($"areEqual.OnNext({i})"), () => Console.WriteLine("areEqual completed")); subject1.OnNext(1); @@ -759,7 +644,7 @@ areEqual completed ### CombineLatest -The `CombineLatest` operator is similar to `Zip` in that it combines pairs of items from its sources. However, instead of pairing the first items, then the second, and so on, `CombineLatest` produces an output any time _either_ of its inputs produces a new value. For each new value to emerge from an input, `CombineLatest` uses that along with the most recently seen value from the other input. The signature is as follows. +The `CombineLatest` operator is similar to `Zip` in that it combines pairs of items from its sources. However, instead of pairing the first items, then the second, and so on, `CombineLatest` produces an output any time _either_ of its inputs produces a new value. For each new value to emerge from an input, `CombineLatest` uses that along with the most recently seen value from the other input. (To be precise, it doesn't produce anything until each input has produced at least one value, so if one input takes longer to get started than the other, there will be a period in which `CombineLatest` doesn't in fact produce an output each time one of its inputs does, because it's waiting for the other to produce its first value.) The signature is as follows. ```csharp // Composes two observable sequences into one observable sequence by using the selector @@ -771,18 +656,14 @@ public static IObservable CombineLatest( {...} ``` -The marble diagram below shows off usage of `CombineLatest` with one sequence that produces numbers (N), and the other letters (L). If the `resultSelector` function just joins the number and letter together as a pair, this would be the result (R): +The marble diagram below shows off usage of `CombineLatest` with one sequence that produces numbers (`s1`), and the other letters (`s2`). If the `resultSelector` function just joins the number and letter together as a pair, this would produce the result shown on the bottom line. I've colour coded each output to indicate which of the two sources caused it to emit that particular result, but as you can see, each output includes a value from each source. + +![](GraphicsIntro/Ch09-CombiningSequences-Marbles-CombineLatest-Marbles.svg) -``` -N---1---2---3--- -L--a------bc---- -R---1---2-223--- - a a bcc -``` -If we slowly walk through the above marble diagram, we first see that `L` produces the letter 'a'. `N` has not produced any value yet so there is nothing to pair, no value is produced for the result (R). Next, `N` produces the number '1' so we now have a pair '1a' that is yielded in the result sequence. We then receive the number '2' from `N`. The last letter is still 'a' so the next pair is '2a'. The letter 'b' is then produced creating the pair '2b', followed by 'c' giving '2c'. Finally the number 3 is produced and we get the pair '3c'. +If we slowly walk through the above marble diagram, we first see that `s1` produces the letter 'a'. `s2` has not produced any value yet so there is nothing to pair, meaning that no value is produced for the result. Next, `s2` produces the number '1' so the result sequence can now produce a pair '1,a'. We then receive the number '2' from `s1`. The last letter is still 'a' so the next pair is '2,a'. The letter 'b' is then produced creating the pair '2,b', followed by 'c' giving '2,c'. Finally the number 3 is produced and we get the pair '3,c'. -This is great in case you need to evaluate some combination of state which needs to be kept up-to-date when the state changes. A simple example would be a monitoring system. Each service is represented by a sequence that returns a Boolean indicating the availability of said service. The monitoring status is green if all services are available; we can achieve this by having the result selector perform a logical AND. +This is great in case you need to evaluate some combination of state which needs to be kept up-to-date when any single component of that state changes. A simple example would be a monitoring system. Each service is represented by a sequence that returns a Boolean indicating the availability of said service. The monitoring status is green if all services are available; we can achieve this by having the result selector perform a logical AND. Here is an example. ```csharp @@ -796,7 +677,7 @@ var systemStatus = webServerStatus (webStatus, dbStatus) => webStatus && dbStatus); ``` -Some readers may have noticed that this method could produce a lot of duplicate values. For example, if the web server goes down the result sequence will yield '`false`'. If the database then goes down, another (unnecessary) '`false`' value will be yielded. This would be an appropriate time to use the `DistinctUntilChanged` extension method. The corrected code would look like the example below. +You may have noticed that this method could produce a lot of duplicate values. For example, if the web server goes down the result sequence will yield '`false`'. If the database then goes down, another (unnecessary) '`false`' value will be yielded. This would be an appropriate time to use the `DistinctUntilChanged` extension method. The corrected code would look like the example below. ```csharp // Yields true when both systems are up, and only on change of status @@ -807,21 +688,11 @@ var systemStatus = webServerStatus .DistinctUntilChanged(); ``` -To provide an even better service, we could provide a default value by prefixing `false` to the sequence. - -```csharp -// Yields true when both systems are up, and only on change of status -var systemStatus = webServerStatus - .CombineLatest( - databaseStatus, - (webStatus, dbStatus) => webStatus && dbStatus) - .DistinctUntilChanged() - .StartWith(false); -``` - ## Join -The `Join` operator allows you to logically join two sequences. Whereas the `Zip` operator would pair values from the two sequences together by index, the `Join` operator allows you join sequences by intersecting windows. Like the `Window` overload we just looked at, you can specify when a window should close via an observable sequence; this sequence is returned from a function that takes an opening value. The `Join` operator has two such functions, one for the first source sequence and one for the second source sequence. Like the `Zip` operator, we also need to provide a selector function to produce the result item from the pair of values. +The `Join` operator allows you to logically join two sequences. Whereas the `Zip` operator would pair values from the two sequences based on their position within the sequence, the `Join` operator allows you join sequences based on when elements are emitted. + +Since the production of a value by an observable source is logically an instantaneous event, joins use a model of intersecting windows. Recall that with the [`Window`](08_Partitioning.md#window) operator, you can define the duration of each window using an observable sequence. The `Join` operator uses a similar concept: for each source, we can define a time window over which each element is considered to be 'current' and two elements from different sources will be joined if their time windows overlap. As the `Zip` operator, we also need to provide a selector function to produce the result item from each pair of values. Here's the `Join` operator: ```csharp public static IObservable Join @@ -836,54 +707,30 @@ public static IObservable Join left` is the source sequence that defines when a window starts. This is just like the `Buffer` and `Window` operators, except that every value published from this source opens a new window. In `Buffer` and `Window`, by contrast, some values just fell into an existing window. +`IObservable left` is the first source sequence. `IObservable right` is the second source sequence. `Join` is looking to produce pairs of items, with each pair containing one element from `left` and one element from `right`. -I like to think of `IObservable right` as the window value sequence. While the left sequence controls opening the windows, the right sequence will try to pair up with a value from the left sequence. +The `leftDurationSelector` argument enables us to define the time window for each item from `left`. A source item's time window begins when the source emits the item. To determine when the window for an item from `left` should close, `Join` will invoke the `leftDurationSelector`, passing in the value just produced by `left`. This selector must return an observable source. (It doesn't matter at all what the element type of this source is, because `Join` is only interested in _when_ it does things.) The item's time window ends as soon as the source returned for that item by `leftDurationSelector` either produces a value or completes. -Let us imagine that our left sequence produces a value, which creates a new window. If the right sequence produces a value while the window is open, then the `resultSelector` function is called with the two values. This is the crux of join, pairing two values from a sequence that occur within the same window. This then leads us to our next question; when does the window close? The answer illustrates both the power and the complexity of the `Join` operator. +The `rightDurationSelector` argument defines the time window for each item from `right`. It works in exactly the same way as the `leftDurationSelector`. -When `left` produces a value, a window is opened. That value is also passed, at that time, to the `leftDurationSelector` function, which returns an `IObservable`. When that sequence produces a value or completes, the window for that value is closed. Note that it is irrelevant what the type of `TLeftDuration` is. This initially left me with the feeling that `IObservable` was a bit excessive as you effectively just need some sort of event to say 'Closed'. However, by being allowed to use `IObservable`, you can do some clever manipulation as we will see later. +Initially, there are no current items. But as `left` and `right` produce items, these items' windows will start, so `Join` might have multiple items all with their windows currently open. Each time `left` produces a new item, `Join` looks to see if any items from `right` still have their windows open. If they do, `left` is now paired with each of them. (So a single item from one source might be joined with multiple items from the other source.) `Join` calls the `resultSelector` for each such pairing. Likewise, each time `right` produces an item, then if there are any currently open windows for items from `left`, that new item from `right` will be paired with each of these, and again, `resultSelector` will be called for each such pairing. -Let us now imagine a scenario where the left sequence produces values twice as fast as the right sequence. Imagine that in addition we never close the windows; we could do this by always returning `Observable.Never()` from the `leftDurationSelector` function. This would result in the following pairs being produced. +The observable returned by `Join` produces the result of each call to `resultSelector`. -Left Sequence +Let us now imagine a scenario where the left sequence produces values twice as fast as the right sequence. Imagine that in addition we never close the left windows; we could do this by always returning `Observable.Never()` from the `leftDurationSelector` function. And imagine that we make the right windows close as soon as they possibly can, which we can achieve by making `rightDurationSelector` return `Observable.Empty()`. The following marble diagram illustrates this: -