From 75272fb86e6a32e488902876854dad36b19d5e73 Mon Sep 17 00:00:00 2001 From: Yadunand Prem Date: Tue, 2 Apr 2024 13:55:06 +0800 Subject: [PATCH] feat: 2109s PS6 done --- .../CS2109S_PyTorch_Command_Glossary_v3.md | 408 ++++ cs2109s/labs/ps6/imgs/img_activation_fns.png | Bin 0 -> 78037 bytes .../labs/ps6/imgs/img_activation_fns_der.png | Bin 0 -> 71986 bytes cs2109s/labs/ps6/imgs/img_linear_nn.png | Bin 0 -> 55686 bytes cs2109s/labs/ps6/imgs/img_logo.png | Bin 0 -> 42203 bytes cs2109s/labs/ps6/imgs/img_numpy_pytorch.png | Bin 0 -> 118353 bytes cs2109s/labs/ps6/imgs/img_tensors.png | Bin 0 -> 24429 bytes cs2109s/labs/ps6/imgs/img_toy_nn.jpg | Bin 0 -> 40828 bytes cs2109s/labs/ps6/imgs/numpy_pytorch.tex | 19 + cs2109s/labs/ps6/ps6.ipynb | 1964 +++++++++++++++++ 10 files changed, 2391 insertions(+) create mode 100644 cs2109s/labs/ps6/CS2109S_PyTorch_Command_Glossary_v3.md create mode 100644 cs2109s/labs/ps6/imgs/img_activation_fns.png create mode 100644 cs2109s/labs/ps6/imgs/img_activation_fns_der.png create mode 100644 cs2109s/labs/ps6/imgs/img_linear_nn.png create mode 100644 cs2109s/labs/ps6/imgs/img_logo.png create mode 100644 cs2109s/labs/ps6/imgs/img_numpy_pytorch.png create mode 100644 cs2109s/labs/ps6/imgs/img_tensors.png create mode 100644 cs2109s/labs/ps6/imgs/img_toy_nn.jpg create mode 100644 cs2109s/labs/ps6/imgs/numpy_pytorch.tex create mode 100644 cs2109s/labs/ps6/ps6.ipynb diff --git a/cs2109s/labs/ps6/CS2109S_PyTorch_Command_Glossary_v3.md b/cs2109s/labs/ps6/CS2109S_PyTorch_Command_Glossary_v3.md new file mode 100644 index 0000000..5bcf96d --- /dev/null +++ b/cs2109s/labs/ps6/CS2109S_PyTorch_Command_Glossary_v3.md @@ -0,0 +1,408 @@ +# CS2109S PyTorch Command Glossary v3 + +## Preface + +This document serves as a reference point to all things PyTorch. It is designed specifically to avoid unnecessary searching online, providing you with the key elements of the `torch` library for Problem Sets 6 and 7. In fact, you can use it for your projects, other modules, and wherever else you decide to take PyTorch! + +> For more information, visit the [official PyTorch +> documentation](https://pytorch.org/docs/stable/index.html). + +### Table of Contents + +- Installation +- Usage +- Tensors + - Basics + - Randomness + - Operations +- Working with Gradients + - Partial Differentiation +- Common `torch` operations +- The `torch.nn` Layers API +- The `torch.nn.Sequential` API 1 +- Training PyTorch Networks + - Optimisers + - Losses +- Data Augmentations with `torchvision.transforms` 2 +- Closing Words + +> 1,2 For Problem Set 7 + +--- + +### Installation + +To install PyTorch, use `pip` in your terminal. You can either download it globally across your system or inside a virtual environment (recommended but not necessary). + +```bash +$ pip install torch torchvision +``` + +> The additional `torchvision` library allows us to make use of popular datasets, hence the additional package +> installation. + +### Usage + +To use PyTorch, import the library and its submodules: + +```python +import torch +import torch.nn as nn +``` + +- `torch` is the base library +- `torch.nn` allows you to build neural network layers, create loss functions and optimisers, and more + +## Tensors + +The PyTorch `Tensor` is akin to `NumPy`'s `numpy.ndarray` object – essentially, a n-dimensional matrix. There are a few different ways to create tensors: + +### Tensor Basics + +```python +a = torch.tensor(...) # creating a tensor + +# data types: +torch.Tensor(...) # any kind of value +torch.FloatTensor(...) # float values only +torch.LongTensor(...) # integer values only +``` + +You can replace `...` with any value of any numerical data type: + +- integer +- float +- n-dim (nested) array of integers/floats + +Let's stick to using `torch.tensor(...)` to create tensors in this module. Let's avoid using `Tensor`, `FloatTensor`, and `LongTensor` as they impose restrictions on what values they can hold. + +> __Bonus:__ if your tensor has a single element (i.e., a `1x1` tensor), you can extract its value using the `.item()` method. +> +> For instance, if `a = torch.tensor(123)`, `a.item()` will return `123`. + +### Randomness + +Most often, you are required to inject randomness to your experiments. Similar to `numpy`, you can generate Tensors of any arbitrary size/dimensionality with random values. Here are some ways to generate random tensors: + +- `torch.rand(size)`: draws digits from Uniform distribution `x ~ U(0, 1)` +- `torch.randn(size)`: draws digits from Normal distribution `x ~ N(0, 1)` +- `torch.randint(low, high, size)`: generates tensors with random integers + +```python +a = torch.rand(10, 10) # a 10x10 matrix +b = torch.rand(10) # vector with 10 elements +c = torch.rand(10, 1) # vector with 10 elements with an extra (insignificant) dimension +d = torch.rand(28, 28, 28) # a "cube" tensor with 28 elements + +e = torch.randn(10, 5) # a 10x5 matrix + +f = torch.randint(0, 100, (5, 5)) # a 5x5 matrix of integers in [0, 100) +``` + +> All of these random tensors are, by default, `torch.Tensor` object data type. Each element of these tensors are also of the same `torch.Tensor` type. +> +> So, large tensors are made of smaller tensor units. It's the fundamental "building block" of PyTorch (like the "cell" in animal!). + +### Operations + +As with `np.array`, you can perform familiar tensor operations such as addition, subtraction, multiplication, division, and exponentiation. + +```python +a = torch.tensor(50) +b = torch.tensor(75) +p = torch.tensor(2) + +c = a + b +print(c) # torch.Tensor(75) + +d = b - a +print(d) # torch.Tensor(25) + +e = b * a +print(e) # torch.Tensor(3750) + +f = b / a +print(f) # torch.Tensor(1.5000) + +g = a ** p +print(g) # torch.Tensor(2500) +``` + +In fact, when working with PyTorch tensors, you can perform operations with non-tensors as well: + +```python +a = torch.tensor(50) + +b = a + 4 # torch.Tensor(54) +c = a - 4 # torch.Tensor(46) +d = a * 2 # torch.Tensor(100) +d = a / 2 # torch.Tensor(25.0) +e = a ** 2 # torch.Tensor(2500) +``` + +--- + +## Working with Gradients + +Efficiently computing gradients is what PyTorch is known for. When creating tensors, we use the `requires_grad` parameter to tell PyTorch we hope to perform gradient computation with this variable in the future. This allows PyTorch to store gradient information inside the tensor for later access. By default, this parameter is `False` because it's relatively more space-heavy to store gradients inside the tensor object. + +```python +a = torch.tensor(10.0, requires_grad=True) # set the param to True, default is False +``` + +### Partial Differentiation + +In Machine Learning, gradient computation involves taking partial derivatives of one variable with respect to another. To achieve this, we use the `backward()` method of tensors (provided that they have `requires_grad=True`). + +```python +a = torch.tensor(5.0, requires_grad=True) +b = torch.tensor(2.0, requires_grad=True) + +c = (2 * a) + b ** 2 # torch.Tensor(14.0) +c.backward() +``` + +The variable on which `backward()` is called is the target variable (`c` in this case). All other tensors involved in the computation have their gradient values automatically computed. So, in this case, partial derivatives `dc/da` and `dc/db` are computed automatically and stored within `a` and `b` respectively. + +> Fun fact: this is why we call the package `autograd`, which alludes to automatic computation of gradients!!! + +Once we call `backward()`, all that's left to do is access the gradient values for each variable of interest. This is done via the `grad` attribute of a tensor: + +```python +""" +Partial derivatives: + +c = 2a + b^2 +dc/da = 2 +dc/db = 2b +""" + +dc_da = a.grad # 2.0 +dc_db = b.grad # 4.0 +``` + +--- + +## Common `torch` Operations + +Most, if not all, of these operations are differentiable by nature. This means you can use them within your *computation graph* and compute gradients. + +| __Operation__ | __Remarks__ | +|-------------------------------|----------------------------------------------------------------------------------------------------------------------| +| `torch.sum(input)` | Returns the sum of all elements in the input tensor. | +| `torch.pow(base, exp)` | Returns the exponentiation of the base tensor to the exponent. | +| `torch.mean(input)` | Returns the mean of all elements in the input tensor. | +| `torch.square(input)` | Returns the square of elements in the input tensor. | +| `torch.no_grad()` | Pauses all gradient computation and tracking inside the `with torch.no_grad()` block. | +| `torch.matmul(input, other)` | Returns the matrix product of tensors `input` and `other`. Same effect as `A @ B`. | +| `torch.reshape(input, shape)` | Returns the reshaped input matrix if dimensions commute. Same as `torch.view(input, shape)`. | +| `torch.softmax(input, dim)` | Computes the Softmax of an input along a specified dimension/axis. | +| `torch.max(input, dim)` | Returns the maximum element in the input tensor along a specific dimension/axis. | +| `torch.min(input, dim)` | Returns the minimum element in the input tensor along a specific dimension/axis. | +| `torch.manual_seed(seed)` | Sets the random number generator seed to the one specified. Good for reproducibility of runs. | +| `torch.zeros(size)` | Returns a tensor of zeros corresponding to the specific size. | +| `torch.ones(size)` | Returns a tensor of ones corresponding to the specific size. | +| `torch.squeeze(input, dim)` | Returns the tensor by removing a dimension `dim` from it. Eg: (1, 32, 32) -> dim=0 -> (32, 32) | +| `torch.unsqueeze(input, dim)` | Returns the tensor by adding an extra dimension at `dim`. Eg: (32, 32) -> dim=0 -> (1, 32, 32) | +| `torch.clip(input, min, max)` | Returns the tensor with all values in range `[min, max]`. All out-of-bounds values are made `max`/`min` accordingly. | + +> For `torch.matmul(...)`, you can also use `@` between the matrices of interest as long as they _commute_. Suppose `A` +> is a 3x4 tensor and `B` is a 4x5 tensor. `C = A @ B` will be a 3x5 tensor. +> +> PyTorch can also matrix multiply tensors of higher dimensions (3D, 4D, ...) but we will not be getting into that topic +> just yet. +> +> In fact, all these operations can be called on `Tensor` objects themselves like `x.squeeze(0)` for example. + +--- + +## The `torch.nn` Layers API + +The speciality of PyTorch lies in its pythonic way of building neural networks. It provides a nice interface to quickly prototype models and train/test them using a compact, low-overhead, neatly-written train-test loop. + +### `nn.Module` + +The `nn.Module` interface provides the necessary methods to facilitate the construction of neural networks, both simple and complex. The `__init__` and `forward` method are the most important: they house the individual layers of the network, and compute the forward pass for a given input tensor respectively. + +> __IMPORTANT:__ By convention, ALL layers are initialised in the `__init__` method. These same layers are then +> referenced and used via `self` in the `forward` method. + +Here's a snippet of a neural network using PyTorch: + +```python +class Model(nn.Module): + def __init__(self): + super().__init__() # don't forget to inherit from the parent class + self.l1 = ... + self.l2 = ... + self.l3 = ... + self.l4 = ... + + def forward(self, x): + """ + By default, the only input this function can take in is `x`, the input tensor. + Don't add any other parameters into this function to keep things simple. + """ + x = self.l1(x) + x = self.l2(x) + x = self.l3(x) + out = self.l4(x) + + return out +``` + +Here are two layers you'll use most during your time in CS2109S. It's best to familiarise yourself with them! + +| Layer | Usage | Remarks | +|-------------------------|----------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------| +| Fully-connected / Dense | `nn.Linear(in_features, out_features, bias=True)` | Inputs are vectors of size `in_features`. Performs `Y=Wx+b` and outputs a vector of size `out_features`. | +| Convolution1 | `nn.Conv2d(in_channels, out_channels, kernel_size, stride, padding)` | Inputs are images/tensors with `in_channels` number of channels of arbitrary height and width. | +| ReLU | `nn.ReLU()` | Performs the Rectified Linear Units (ReLU) activation on the input tensor. | +| Leaky ReLU | `nn.LeakyReLU(negative_slope=0.01)` | Performs the Leaky ReLU activation on the input tensor with the specified negative slope. | +| Sigmoid | `nn.Sigmoid()` | Performs the Sigmoid activation on the input tensor with the specified negative slope. | +| Max Pooling | `nn.MaxPool2d(pool_size)` | Performs the Maximum Pooling operation on the input tensor with the specified pooling size. | +| Dropout | `nn.Dropout(p)` | Performs Dropout on the layer _prior to being called_ with the specified dropping probability. | + +> 1 Only in Problem Set 7. + +### Optimisers and Losses + +Most important for any gradient-based computation program is the optimiser and objective (i.e., loss) function. Writing your own optimiser or loss is a tedious process and is error-prone if you are not sure how to write efficient PyTorch code. To alleviate this, PyTorch allows you invoke popular optimisers and losses with a single line of code. + +Additionally, here's a list of popular loss functions: + +| **Loss** | **Usage** | +|------------------------|-------------------------| +| Cross Entropy | `nn.CrossEntropyLoss()` | +| Binary Cross Entropy | `nn.BCELoss()` | +| Mean Squared Error | `nn.MSELoss()` | +| Mean Absolute Error | `nn.L1Loss()` | +| Negative Log Liklihood | `nn.NLLLoss()` | + +After computing the output of the forward pass using your model, you can do: + +```python +loss_fn = nn.XYZLoss() # some arbitary loss from the above table + +output = ... # some tensor +target = ... # some tensor +loss = loss_fn(output, target) + +""" +As mentioned above, to backpropagate the loss wrt the parameters, you can simply call +`loss.backward()` and it will compute the partial derivates (i.e., the gradients) and +store them inside the `.grad` attribute of each and every parameter tensor! + +Pretty cool, huh? ;) +""" +``` + +Here's a list of popular optimisers: + +| **Optimiser** | **Usage** | +|-----------------------------------|--------------------------------------------| +| Stochastic Gradient Descent (SGD) | `torch.optim.SGD(parameters, lr)` | +| Adaptive Momentum (Adam) | `torch.optim.Adam(parameters, lr=0.001)` | +| Adaptive Gradient (Adagrad) | `torch.optim.Adagrad(parameters, lr=0.01)` | + +Here, `parameters` refers to the network parameters and `lr` is the learning rate. Different optimisers have different default learning rates while some require the user to input that in (for example, SGD needs you to specify the `lr` while Adam has a learning rate of `0.001`). In your Problem Sets, if the learning rate is __NOT__ specified, it means we expect you to use the default; you don't have to tune these numbers yourself. + +Suppose we have a network `net = Net(...)` that's build using the `nn.Module` interface. To access the parameters of the model, we simply call the `net.parameters()` method; it will return a list of all the weights and biases (i.e., parameters) of the model. We pass these parameters into the optimiser, along with any other arguments (like learning rate, for instance). + +```python +net = Net(...) +optimiser = torch.optim.SGD(net.parameters(), lr=0.001) +``` + +__IMPORTANT NOTES:__ + +- Before you perform a forward pass, we must ensure that the optimiser doesn't have the previous iteration's gradients stored inside it. To flush them, we must reset them to zero. To do so, add the line `optimiser.zero_grad()` before your forward pass through the network using input `x`. + +- Additionally, after a backward pass via Backpropagation, we must perform an update step to the parameters within the network. In Gradient Descent, for example, this update step is `w = w - lr * dLdw`. To do so, simply call `optimiser.step()` after the `loss.backward()` line. + +Simply put, your forward and backard pass should look like this: + +```python +for x, y in dataset: + optimizer.zero_grad() # flush the prev gradients + output = model(x) + loss = loss_fn(output, y) + loss.backward() # perform backpropagation + optimizer.step() # update parameters +``` + +## The `torch.nn.Sequential` API + +In PS7, we will be working with the `nn.Sequential` API. So far, you've been creating model layers one by one and calling them things like `self.linear1` or `self.relu`. However, for larger networks, the process is tedious and cumbersome. + +This is why, we use the `nn.Sequential` API that allows you to add in the layer objects __by name__ without instantiating them with a variable name. Here are some examples of the Sequential API in action: + +```python +densenet = nn.Sequential( + nn.Linear(784, 512), + nn.ReLU(), + nn.Linear(512, 128), + nn.ReLU(), + nn.Linear(128, 10), + nn.Softmax(1) # softmax dimension +) + +x = torch.rand(15, 784) # a batch of 15 MNIST images +y = densenet(x) # here we simply run the sequential densenet on the `x` tensor +print(y.shape) # a batch of 15 predictions +``` + +```python +convnet = nn.Sequential( + nn.Conv2d(1, 32, (3, 3)), + nn.ReLU(), + nn.Conv2d(32, 64, (3, 3)), + nn.ReLU(), + nn.Flatten(), + nn.Linear(36864, 1024), + nn.ReLU(), + nn.Linear(1024, 512), + nn.ReLU(), + nn.Linear(512, 128), + nn.ReLU(), + nn.Linear(128, 10), + nn.Softmax(1) # softmax dimension +) + +x = torch.rand(15, 1, 28, 28) # a batch of 15 MNIST images +y = convnet(x) # here we simply run the sequential convnet on the `x` tensor +print(y.shape) # a batch of 15 predictions +``` + +__Note:__ Do __NOT__ pass your layers as a array in `nn.Sequential`'s arguments: + +```python +net = nn.Sequential(xyz, abc, mno) # correct +net = nn.Sequential([xyz, abc, mno]) # error +``` + +## Data Augmentations with `torchvision.transforms` + +In PS7, we'll be dealing with Computer Vision, which requires us to apply transformation on bitmap (tensor) images. Here are a bunch of augmentations you can pick from! Feel free to check out the [`torchvision.transforms` documentation](https://pytorch.org/vision/stable/transforms.html) for more! + +| **Augmentation** | **Remarks** | +|-----------------------------|----------------------------------------------------------------------------------------------------------| +| `ToTensor()` | Converts a numpy array or JPEG image to `torch.Tensor` format; compulsory for transforms | +| `Normalize([mean], [std])` | Normalises incoming tensors; for x-D images, you should specify the `mean` and `std` as x-sized arrays | +| `Grayscale` | Converts a coloured RGB image to grayscale | +| `RandomHorizontalFlip(p)` | Horizontally flips an image with the specified probability | +| `RandomVerticalFlip(p)` | Vertically flips an image with the specified probability | +| `RandomRotation(degrees)` | Rotates an image with a randomly chosen degree from specified [d0, d1, ..., dn] array; do not use radian | +| `GaussianBlur(kernel_size)` | Applies a gaussian blur on an image using the specified kernel size | +| `RandomGrayscale(p)` | Randomly Converts a coloured RGB image to grayscale with the specified probability | + +--- + +There's definitely more than meets the eye when it comes to PyTorch. This library is the primary workhorse around the world, so it's beneficial to learn it from the ground up. Problem Sets 6 and 7 simply offer a taste on how life with PyTorch is like – it's way better than initialising individual biases and manually writing out the equations for a lot of Machine Learning applications. + +Of course, as with any library, if you're interested in diving under its hood, feel free to look at its documentation where you can find fun tutorials and exercises to jog your mind. + +> For more information, visit the [official PyTorch +> documentation](https://pytorch.org/docs/stable/index.html). + +"Happy (Machine) Learning!!!" ~ CS2109S Teaching Team \ No newline at end of file diff --git a/cs2109s/labs/ps6/imgs/img_activation_fns.png b/cs2109s/labs/ps6/imgs/img_activation_fns.png new file mode 100644 index 0000000000000000000000000000000000000000..11eea67b242f739629c03ceecf2fb074f774d97e GIT binary patch literal 78037 zcmZU(1zg-e@&LMvOK~mkQna){fyLdWlrHWCiu>Y=TPY63-HH@?D&(CX>k|nQ%1~Su6}P3;+OtB`+tX0RSLS0RX^8G!!@l!|s>?0C*v6 zB`K*UFDXf*=4AiL%ElZ3kPA=zhzfo`NSvt~7b9i~M9L3ZL5d|4Q$XXmSg{FW5Mz0b z5)eVDt?9r~4DJl6h+qL*x&0i?ox3*?m)0i1blX$$1!% z?UqiDzn!}e*h0trS=IG)v6Y}HxW_66K&b^{E4^Ft#(N_uNFhcp_`JNLAG$JLF{fDf zH2-X<9N0g$g8-G1OdlQI`6KQP0JNsE;gbNw63#xo$CT1|K|YS(gG6h<(wpL>$I-jz z)GGUjfOI|=q9$2KZ6ZsnN`oX8g^DsN7n_ZYZakxl}?pU0dY?1zUFU-VW6DKjck;In1CDO(&# zA2ik|LvYOE7Usb)Q4SMDgYfu;sVgKgFo+*VlR2DgSAG&hHIb!arg>q47#0}R6uXWg zA}opfGlaAP*CjO@N{Lg&`4jW@*545$OL=3kDgtb28uG1I6J{Y`qOE6Db|06HR4DQ6 zN}N?b-me*1y%A4SC}v~8BKIW-Ok@)Jklx50JT{lhuC)~t4aR31S*6$jw{y=KRzwqh z3JWwLdNTL8l|1j|Ge@6`#c2IO!zLnSKwXwG9J`IP6QI9=nSw4U`0%g=%V~n$0R7LJ zOvi4zgWd&?qN@A*m3gzP;BCvWJvhGiwX00v51wP};8uA}tjZ3>)ToHI2*b$T-1gXz zo=+dQ^bon>!NmsC0LJ~1>Rq^Bnjwl?7`~@&jk`tyV&euXb)sHje6o~^E0aZwcFab5 zK*yur!ihdlzC07B-Ri)uIm;6sh`A&llG%bXx#$6)?otXA({w+vr-8KY_LW6S-hNYl{e|$-<%` zlI~hMgWmmu{RaJ9XYB}2Z})`ADw!e+Bau_IkzJS`=wN#`w6n&9%YzexF9Cbk(oc7u z1oZcIG=h|?O}Bo4H6I%X2iUkf=LIRiYk7Th^(>?2Q>SVu55PjV5#KQ`5EYXQ{pTAYP{?IfYLd#iPbV z7SfkTFs|f+p%avptvJqWiPem0E2WxEGHz|je}_QX2`K!s2k)M6Undw$m=s}dWMado z74pG^7c4x3adJ*nMt;yEvLTfo^4rm?F+dWAlpd+tWw9A~>Ux9Sif7;dV+{x9`#|om zz)drU2ST@z;GvD@PE=DUX0V~BU`P)b)4*A$jFp?B)xld{ulXkNi)oaGlc|E44>y{i zB`i7&kpW*m+D!J0NjmmjK7t0T6^9kc9_b!WN$7>Ry!Ie?P@Ywe^@Dt|W|?M5?fbpr zN%Mjtg{;ASGt6pcfrwx9s?1!B_KXd2Tyb6lS*&D)Y!Up7nQ_V~vf7d*Md`Uq1+D5@ zT6`a_)V`_{vy6Q($ZM6oEjvTpj((N;s{R#w;^`~=M8;Q(AHJ3@X?RE$XmFJHPHBDy zx}w)5dB%BW-H9g_?q?5aZI_IymuuK+ww2v!M3sHY>C;Rr*2>o^sW&{z)yWdnUe?Gc z7*)?IHz-)i^_BDy3oLvsL$5%uYFgE&66H)b_EtVMDb+s}G=e|Ek;=?VJ;9y&GD>=L z^3U)3NtFrD+Atk09h-8Sa;NfToeZ7Fh13Pkh46*nwWYPumhJ~ef=Pll8G0E7g7+>J z2i|1H?*aq@L`^2b?(mXjTW2Xt4vL0nIey!Yw-w&YM^}&(C+9Wj{g6M&6sfQ;rOp%m z;1~GB`q&<;L*FLjB%2hq#D7)~{A^^6Yt7wb6e%9s1yuFM&5C|{TF5uvA~7tOQD zOO%m~@{F?T6X`?POzi9blJ&c8Psx+h2dgb(#oojS--Pbc_0~d+37FM z#y?EPYPo8E)cCDsZ{i-S9gc6ooN8}(rzVDFvtB-qOiaI?bu8V?c%5o0(N7p{MR~q3 zI1_%Lx$QEYvQM!E>TjCAO^nRITs03IR{of39dv*&%QySO?%2+x!Lz}@-TC_M_2+By z7aTHgO%S6t+2R)xvUk{xw>|NTFO@p82%1x;~(mb78`Muol z$9*Qf`EFhAQ*WHSt-Y!5Qf^Nl>TiY37r1LuTE1~TQa<)Rp+2tGfV6AC{fL#&HE1<- zRBWU(sMFQ|I#4N)CvZRDE>J(v0*M-jHYg~V9jB>_&&+wg?(j+NdR#l_$oQ49qwzsE zRmfsUWREWWc-VLt5uQ6e2VHQivN}x!WgXqVLG6c&gk8zkKfmpM`~Ho&%GAW7FEc!^ zS2<$w$4yW93Ii%fV`Eu|T3iSQPRmW>n>e z%E?Z3V`&o?#J4rE)u5ffBjEXMk5C@nrgowGpNL;8?5kx%Wgw?)Iq>$LYgMHY6jCCYP_bEiL#28Uoh^#?cK$%h&Ip13B)XkYZFf(p$#O+8Oj z|Ji^j%+uh2;Ec$0l5+iv@-H9V+Lx+Ys~?66qd$ zf4SX0?5=64N%#SzgIAU7$mnA}Kh#jlR4({&Pov3^*SyZm^*R;CJ7PUD%c*;Bu0PXk z{o&~Y)-=j=&*Jwi}7je=k zDg<+V%=XlWCgSn}`y;+$QIJrc2*rAAs4wQ%3o*y58rVi#oq&kk_7C^6e>0D9k5LF6 z_*}sR#+*5JUhbrEHtJg*Ivl;bX*oDS6+W zzaMNJJKJ2rtk>aT`Ve)T)|xhEx4q)&+5)@U5pq7kKTcYH-|^97bt5k`>Zazd z;Bpwz@Ah$eB5P^&T;bs}>~e$O)4smL)nkzlSJ>fMf2C#YWLRX^XYMri^z>IzzN)II z>Z8P6^`Fv_*%^D|)nn{GSlAKoOuim|1O#G@3;@XqLa`H1dP@6Nw;~w>ULlvmX3B5n&FN|D>!8cm>a+0g!-X0AzR$ z2#+E_^8e;#fGhySf58y|fKV#{(!cAdz|+593_SkD`6oq;3jv_Q|KYBdjQzvtCJ7-IKmqTIu<;TQlKTQt)rfa6AzONZ3Mb{We2(%2wdp@j~iu1@%hfi+F zXL;-`l@HoFySNI(5(wHfw6twPBjKAXUhysFrPjWyV=3-gnMCtRwu3YA$I3Eq?1$Ri zM?oFuDbAz94K(Ui;9R8t4JuG13_3_UfVH3Lf5CbPc%TguS_PW_hP5Dhnt*kw(8IFKY@VBAB~DxX{svcKTrZj|4+O> zCECLR(q($w4tR_5?^Vn~!e?yjrb{oVob1-K?+2H&xEAq1XWR0Hm1UI3jMmfgKV={F{o% z%#&==OVCBF0lUb8!jw8X*Du54Gg99QOHsP?qP z0igjGjae>l{kkuYT2Wwf7!D`}KJr{bjUOw~r$fFIxR!5=OtPJw+9O4Kdw;GPQ%CqG zgvN@+EeORm2ad|C=k*@rv16wHbj$6K2lfkf00>x#Cq6H{(LrX%=-CmY*w=P@Z{+gD zQtDDaR|>X^A5H5<_wP<+Z!$nrE8cq}#Zrlzqw0zSqARiQ-zR3tRTZ&}JGNPsGIX!;JEEVc%W$Fmi1IPveX0e`eZ+6`djCOfF9561`wKck(?^ zra$(_jdjxHWL{bVFrE>#O_p8O)k%l^(elW0U2YfaCO*l5$(s0%D(T{j_dR(R{c0xo z&^|%zZ^%@nQHn5Fi|BB+E7bm+@f>icGEajmF)Y|3ibxSGulp`$&$N+UldO64$$|Y4 z^8lBYOvGY_RR+fIoMRSyAZ2X7ZzMm)?x1AcBBzLw-d(p4ugVx8DPWOMJVAt4t2^&BFhO$!F=t~ea zC3YO9J4_B^TgtvG#0cX!y@{)({mQUHV#|8QYm3k%4YTAJyb<^he?t`kbC#b!SNHYF zSX){;z*smq>T+}G5cv=w06L&d_noD5GNwS&Ec|F0O0w1uWSPU@$ zksw+{^%cO1x+_*#aTtNgl7h%3lu0#GE&a!I_|@-Io~qVDTyh;ur~i=}VReK~F=gebqve*_di&L5I?}h6F<7MBop)D9 zUbqmX+bs#Xx!KH1+Ac{?Vb|Jx=-L`BhL~T`ci|5YC76gXBQAQ~2-kpm?OiCRob^DZ z{7uZfVpKa@%k!E+QOo7Ed4Cg6-9vtx!X}@DPrAWc680qvBGrYsE9Od zAbN+;>m?&DJj8s&pQ|zrEjR2~$@IC>Ztzvg1kHo{qNz`gN$i+f>kx5_h03B2K24lE zy=SNJ}qX7e;D#q)*q_CP{H4=B5kclVuFssJxV#-RZz47%a zR1@m2RC{YJzi2M2(<-z;?iA`^2l)EwGHo-M$MJ%LqjrTcSgVXuS}+eyz@N&)=12^# z;$kG&|Fgy@>HLlS=Q{j4bcOzmW!c-9o_-T_{r*8qOE3({J+cMwLMEE$NG&*ZKwJC^ z5+GNIUQ{+vgf9%2%zW8$>ItPcb!wRCr^fr$tzm!9sL%-kWsS2ax+s}?ZOx3p&>q?Zz;lG}0Lqc5nWEY`luM2pdDD=&M&oTQEf$8!DhaXg zYRBIY^muM{=^$GtHIc&6_+jv{tAUTEki;vdZfIyv&S%42Mm;?}jZI0wqy%e>#(fq) zl>K4Q_VBQYh+_mu%u4#?kE%##0-%6KksVs-N!RJ6@x=J+oIq@IMGUI+-w4zyqA73Q zZA7*>Pl{~Hu&N>UM%D4P`q`IKydK~bu>L-h!Z&({2~u$3LRL=oDU_?omf#S$PA%cH z*Me*BKkB_-|IywqKIi~S@EZUQf?|W+@_thEa*MmJv~)0#%GK4C>RJ86hwY@8SbAA1 zVvt^N-Z%Bxm*!Ey{`GSop&FlJd9$^XqGSY^>M1R2Iqvt%KHqaL(q|W!*w^l-dM@hH zAA~?Rpdu$flxI=*%`eAy?m|4vd50qbfNL}(+6tJPWvWD^jRggNd%sugSzuQDJu^w6 z+3!^114H*9{@H=Z0$bMM zYq396Ij{cF``MTZG*Hxog$14Ha{%|%;rwO=@dgNhAE5HFLeDBsCaOA|fLRa%V6!E9 z@q#K6h>XS#jYK&@#8#V=R){hvHZ!g!nG<=5>^8+WA9r+FZ?*{3?I;;?J6t%ZeE_e6e%KGQi5NF+ASx0D8x94Rhs(Jsi8k%d7piz|o%0}>?ku(e4dK<@vVQq^HbLT(5 z9HoC%F)Aj_h2hcLOyFFK9CT6e%Ap^Oz9q6e`sritDd&Mw3QuTh%NCM(}l8ea6$Pe!*IIw!%2m@G<;y zMx*et%_}95kS+VYV)zo-MJafwowPI%Kog9&gRHtql$~FUh3g;&RG1q8;)npLkt#oR zAs$2>qq-|<%U4|<=zr=##i{N>9GZ?s`2Fmwjv?}ucOf>rD=e49s7d56zE0929096U?xvIx;?Ma)wg!Y^EVUk0=wJ4-A3lpoE& zmZx=b<^o)W4pX+%Y?qI97VD|Ocya@k<3;(MDA#N?Iom$9$EK2Z$@4M3j9M#-3I<*2 z1&q>r0j}bTv0=G#o$F1qNJ8G6NjY6zk|W(fFs+W zaATK&UVB&4k9iih5Ohuj+ktE#pIqf@wLGal79;1S0a`wZq#)XDpK?F#9GNfQE{D4P zog>)X61>!4YvMN)GtIvgZ_;n)j)`1D7^m=Na^l|hNnNM;W6jKe4T?W=pzNZ@q1HKc z`o|dfm?&1M!u>f|or3|7z7TPag^R1f_wlYtD1;P8j{^+C#-Y*}L%<3Cior8rLaP`U zC>w7ZPj0?lsDE|Q{5h?`IIDb7s~kEZ$i`t)onks{JJSes`k1iT>D%TL_Sx@Neds=6 zFhgVCj>to6t2-tbh=e=7>qqStY0qH&5hlsv=i=K;B8JB3E_7(!W_LjGp;YU=H+sKz z&FVAm+)&8V7y>G)tNhiQoj=C##UF~p;r7q|pIr)H{GlBMin`}18$%k_B5(GCp}*<- zA=waZ!WXX!qFoU`D6>mRzR%#$Z<(gb=vbgKs2clYTal>2S&bKXw{YQzc(lPPd6XU= zXuAs)skTXYr6O5Dps$F}Is3;>a-wji-Lhj*10*ZMB%jPbMx8)NemF9 z2SbAaAvTNkBl;X)J`1>f2~GGxg9z)Ko@8NRnQS)bG3Gy7vUVo4#!NmB!nlcQn>P_!i~!zMTdOm5axozHJ=ZT>8}(9T_~H&*J*R=!RO|7tOd$^SK?;+u7*tk2 zBx))aT|_K`YHE^qCi>8UID}+_rhN7*hj^n>0&pv2VZf~aMF<)Jj3(L7+`K?Jg{Sw^ zuW!bZq1cxxFBapNC2MacH<*7qAvkbrTL1Z#B7#VVH&sQUjQ|QP%JdwXsn9(#)<$kosN&jlh})y9ECM?+RW zT@n@>bJ}d=PD~E4@(B}$Bs5-OaS&x7Qi@4cY+x%;Mh0+8--^6j$(=!TsZCE7Nm?4? zu%I5H@1djU%qs{XRzw|-Jyu;*@FGfo!|{?MGl=Q z<;18MBC`3{S2W#u zbuYFeB>kKTwatbefV#3Q0L(=NmzEml0=~H zcNbzL5;3-z@$piVh%s)b<60+>zhAPQu-&B-5x`?J$Bi0;$=TS++4101WL&+topj>& ze19eSd@gFhZ$IswvwEI+J-4{}OP-N#pXn9md9J^@mZAT0G-C!*DpgR%E`S zfB+-+$1P*WO*>Sml03v3D-VD8g}l>!uIB9q1)at=UjE%Fm*o*;F{yk{RH&;VmXO2G zP2fM}tJdzIrtVCG`Vj?%VVkR|3Adx$_lLjK+icEg<`Lc|qaPC~moQ~?rZdqR1TN&y zIM?!~b*07%q`tav&>3w4h(iOGY%B5{_N%0S-fr7IsI%pC9Zo2P)(+JTnBnY9$Q1db ziuvPv!h3cYD@#=+`ml~u@31bR`bv_$KZaJ)TZw<>MSDyqVionbr>3u`D`t&C&kyHE zi9fsxMlyvL5mf{69|l!@O*-zEPpSv4=EijI(pD~*KBntY563cAex81HzcAbWDO&WY zQT0!dIXdj-zT?@eEoWRHAt&(ruTl;BvGQeeKM$)?;YQ1} z4bau%g*xJ4bxPh*voo8m<|+a?cxdYK7k+8@1_sdyGa-u`iDEH#jazTVP@+1W@$jBF zL)?e`m%`MUVxuX(A8vkG8Kdvi+n1L*4eYG_(QM(z)fp_QN<3iMkz28GBZI`e3%QAc z_c_@v#i*4pW&h@ET|rUxxX4o3w7WTYIfX|xxf73cLW{atKuUf zBEm)oF>eTeW$HtO-5eM`@2@%bQ@WdVZ7!eqHp~t>_xlhi{?#{Qabk;WRp5>TtDy^G zSSJQH6b+akMNS0v%r0Cw)@|&y^YAX`DAC|<4ViBDoI&&IE$KP>{<0_0LlZ-XtL3uV z=`Bl}M_v-ow0M42LVBP-pA*uk8+fkVcJ|>;(t#CgCn-HTC#mw!TWo4gpX0jFrO{f~ z;>{I+Uw529Y|kU?Nif-))gymE zb;|#9X${|)ylK6V4mZI<`j;$hxV|VJgsI2za}_|<`2ub~d*zeBC1tk{zcazVVw!`G zRbZz6`_bKzwn?7M*GkrSrlA5hcjVX%GLba7+j!N4dEM(N-ubidk5_Av)`z40Bsy)4 zMsqPwZjZOWj{?Gbj;4%#c-7NwNWem{`r@xly+M|GnPpU8?5s++UOCrGt{?s)V!4(~ zSYms(J#Imji{R$Pc+^zwYW;RD^8owzmAuH5)f(^}x6`)J>g`uuVTU#V*%z?KiPx(2 zw-wr@>?zVo`NMuyzq|Jzb-;3HWZM)Qh?SpU^-7db4Dk~12Q?S}eDyde29#hQ>uj51 zl+h2(wyH8(g8aqxmggNhOwGNRr?^BO#q-&wd{U3&E`u5iqEt4OZ~3bu z7tyIaU;dY3nTl34mRH*0dgAoe&BHd|brXrrVKI-8>lwG#W3aPL-+(b+zMMel4LT8o z;d>880YSw6v}Or03S)LYPC@aa+I}dgfmyWmYumL7B2Iw9%ciro6Q3~-Di)R{CNSg5 z-Asd^5^kt}K%N7|c7JiQMV8Nuf#)8hAEK zYtfB>H#Q@S(#rl0{AT4~ru>}Wn~(*A;2NQ)DU21JfZSL;#~>Rqxo4{6{Ua!W11cpv zoWybN45eKt_yIsC4#FbmYs5s8R-#V_fL^-1C^X`?6a{U44DW*l|tg zZmxOFU_($(+4`+F(J;b2fXc}KAco%+=q2@)K=*eu_pg+96lM}WAe`f!FK`ukRbEZfcyW|qt-s%xc z2X|2SMtfv6zDRgEYs?`Yo+qWgu-PAdy=4N_s?(C-56W)oMmHY0x!>O0NtTf zo&)A#6i!{H7rPTHR1SSjFG_mPq{G+NO~U+gkvuDq77%cnbY!9xIH;ttsl-AJT((TC z)V_Z0O$8heZhvsQf0LGo`S}MHXGztp!MhR86yB9S>_dx3Mf1c01LQbQa4`Z0sjuQO z4wjXCvSrt<(`pl3hO_f?svwz~?noQHS7g1X;&Ciq+?*>lRE@^E9FKBwz0I3zoyuKkI5NWkg(bwbZl9b=RxrLLLAKaL?w6({uN=Fi?D3b={@qOWD6T-B zTG@5babi0nE0nM&aF6_+6+lTG{Fe^4D1h)N3ErJ`jYcQp!z;Tq+WG;95rkgPQSriGO^Y& zYZELD3N|KZlSa&SZkEHor1u@zox^-SOpWoccZjD%sHFqgc0%HeA z!%_ve`+qAxfW<25aMJ+ATg~K+D3Sf;4J-Rq#I2{!4~Wz^P_`MPQ#f1T#$tu0KhhGq z80za60Kg0?G}Nba@VBbyk^Li>NbL+5QwhOc!(hqQ4D1a=`Xr`MX=B9N84(zXFwj{o z{($tFt%(?y23VQxQ?X8(M9$-jAO>Wrggj(DpZh&f-2L)hQe3_16_f(a zRYQvoKZi`=Y^#&xL+k34O_@0?3#DpIUi764yhjeJvP4Ch`2IoCB{j9r%E&{@IYv_^ zyj(T@>{KjjfY9}(MkxTzg0wMw#|Xaq{;_RnlL~-~VSf)MaG(d! zu-GREUQ(cg9Hbqnh%qz*-!qQ~FoyiJ0^l!#sV%A38vmqP!?jW}ffGQ*k{lUl4u+HP z(<i&=P_Fr_S(;-vlF?tZ4BeVZF9BDVF72Qs~BKhIvv@O;}G#sjumIz z;kg#B>$7uwj}cQ4sTy_QJuDgL#5D5PL*GIctY|$`IHA6d3=Z76JI{JvaxQZigT7>h z3o-3qAwI=-fLY>$cN+p$san-FYAd_ou^Vt%U{YUc3>nMRi%7^l7WU&?E|+? zJn2>QV+fj<@SEuH3vN{|>NDil;V9utB!jaZPnS|N@ly6X;R(KUkz#boN_1!nTf_r1 z%neex>P)^$YcXhM_^j_wR(IeAzf@Tc;0dw7ED8TIoiwXdFC zm=wnB{ppCk@0-|z?y(%7yZiR*HZDBNo2DE@r! zi7KPh*p0w|GEMBjQNqBh*a0W}@8@0wN(|Ibu+W+_qF;Y$q#pGAL$6V_ zG51@u6s$ARlJJ}Q@H4a6g~CJLFjwE)2!Pncway|9AL!J-$kmU)%3_ldOdnH%EMCE2 zUgEx0f3LFOTHG??IzOk1b-vL<@eJylN6cmL?d{Z&>OT4B_=Up0d?qUuV$CB(UtW9L zvp>(zqh>Sx_9~;#9Suy+-aEes6+fWHQQq&z=W8jBwC6YZs!mR|s?JU^PB&M`B=W<4 z7xu{K5tBt049i0sj#Ri<1lq7#c#vokj9!V;4ok%9Irb7&d<*2kiojqD%ati%8-Fbx zK7<^1bP(Gqc}i442&7y?i2)G4di5%f%l9-Az284jO)ZtheMC2IU^$*8yJmTfwiLRG zY7~5y%-B6!OM5LvcL41{ILcdlK3aX^z?9AL(PqZ))nTX(G3!Fyz1yUI{x*OdH}F0F zVNcc1DP@9xE9e&hQ=5+B*pi>H7yPbrAS!MEe}g8JomYqHcI^2ln??S2Z9nZ zMby3J5E=oLVoS0jXR%TjTn+l3#4e6*@hteCPa}2+RuaiUb9wZSPR>_(;xi!+|1z7``pGMaCu^{Vt4b0IxdY`JI1EmS^;}%54p5LORdAEW@Fg5<3>FT+R+PQBY3|g)lNNP8gaOvMpVRq!E06lI81Cyu)FlBmmvD~1 zA@{4uEi|}$fjd~YIYbnRI&>vRjKdBDBl+Ghu7(^7KpalU9^)*7A|w%xOnrbT2-!iH zF{t;vOZCdIHD5yJc$RllCy4Vb+%p_BWU(7YB>N`Hk9y}v_I``Tk@Zy=tfTa|hZdp- zV@NPT3W$-kIMV=`QI}4T5}= z|J0_2K*hy~RX1H7FvW;!c3S-1Ug=n`lJ$0+LzR)_anW}0_W7c8E9-eDcIz0~I{tH) zl)j|Tq$XF3Tp(_N`axl{l+|>+=ZB?iY5&rN{;W*4%?jVY)=6t7lnaLIhMt)lc>%FmjVPiMKb5KING_sKl z!UNt&@}icj&ybbJv5bYWU0wyCR=ix2C2NZ>k8aipL?uSmQ)=|nNtX0S)xthbyBE*t zII^`L4nU;=04&2`!<~pmYcBzA5r~d4-9EuynC?*shK~@hPDD%;F|=KyI(3!AEyL$a zLxOEx5ABvEexIlDP?4>Q6w6b~$NbG57XM6E;5#U?BvM6^@+1z92*eMAs@lMkt}(wk z=e2g-55C*3yy5td&-eO+P0wfdTMIu{G9ET!83#9_gq8y}ew^=<^2#{*t$IRKxzVg=G&3WCJa+V{HAxU|^ApYKOhUSVCdp zC1lXTfC4dplC;Bu%`W$+=MTOjQ8f|cB$&gE0DEzE6d1tsbcX@`Z2S$5+hp zZ=O4J<0Ctq49{{5+Y&%^O2p1U`3!b))Kp}ak-CVT;`l_#3fltlX@yfNo!VuFQhB)4 z$ct0qi8TMYF8|#rna8Rpk8c*%Eg7EIs&)q!U3evi7J(}rYL1|YtcA0L^HaJ^r|y;4 zd~7FT@W5@;YpT}M%|4(FAY;jB8uyEWP@|-S;<&|zl<;xWw^8M#lJHk#HS{y4xl4zx0@0__=*O39Zgj^eYgTN1fuV@4 zkD6VbWXqfWwRoUv!}&%$#_>Ex+-yW$sX*TYe*1-QpqoygYDoUt1Pu(_;B0s%>YU7Q za^KY^za8oqr+2>^&1~3aFIipjozp6g8hQL3O_^Fy=8uCan?`i$TwyejOZzC?C5N}e z3BE+Wm`ubd@lTl68PQe}tcqd~Vj?QqiQ|2Sl(k4yDj5|3;O1BMLp1y%6n#ShK)E5P z)=bNNX8(L;?_;KLjD|VdyWC|-WEAM!f)6ojYuw57(p%rG7SE~aLkM6DdY8H+VZ^4z zTt*H>=&CE@YP-;gz89Mrcvd6E*%lr|N#^lHz9u1lkx38pC&D~P2w~abJLoDfeBA#S zFW~&A@fSUWf+6#URw27z0cz+)nxmdSuEzE8p^q0K+AF>wa)&u8Vz$`MMlN%)mH&2D zv@JpJk=jqb&v$oc5Y_k2%<29-E$(}p>yy_si?vK!8I_TArBxUw4^fTGkGJM!l(oc) z9}~oiwohq@`1c0ok2tO)ESjfu8^)R>7VL<-pgS!zSwVz3JEKM$Z_g}aXydm&5}s+t zTuV3-X3_`xR7XJmjQ4Dx#>}stLs)j-q){kwZ{9LnW;LnFVaVLmMx$zr5BkwMoTigs zsM}w2DbmRN(d^Z`@nATf#MONN5Ik5Qb^YL5EUBr|;| zAb`Pe>z*bVwR)>va>xZgjPg}9YX89N?l*YFkX5s`vtNZuYyCgnF$^wkeniYxQ9tg= zGRd9UlvP7-ZeK^sLM9#I3+@eL%w@~xD{X7dILXI$F74(e8McmbDMqm+gO5gI6^o`F z-Zljsi@YV4Bie_2$+_QkP54@{!YwzD_@i|9-WM--lP&$wuee|Wc2afX13|6 zWO9sHk$>n)BPE5JME*jObXQkE3--Kl%8j!9x(F&JYyBW;M72~?>?HxRf)nQ-dD_>> zD>M2Y8lid|ncoi7*2J}xF~WO}JDz=2=|Y@H9?jn*@0TydM>$g2B2ciXH1R%wv_X2Y z)EFSS7a=A`O0e-_3RD~bIxc;9a!Ajel&4b>s%f#a)0evf#_Rs+NlUC<&nqd|v0o83Y!he5FcQut5m&V$wp!IFFB6 zNNX_T`Fh4Ekpd)R@!^Se;;_GPV!okZ|Aia5u@#j$=~+QMYFQGw3 z4+khLemrr1h?_k0w7|sQ0)qpH;J#d+w0Y9$2*ea5BbQ%E6n%oWn`+wOS2Jnl>N?rSpe zU7SVSIIp!^*D)L1i`&?ZDyLS+qQ~Uh!;7Em4lD)m zqeR4t1aZCAB1+(+=@y|unnhcL%6`irHjg^%4*=Z6L{RodZ1iq-Njcdz>3rLil8k)x z1>yj<)hdYfSiwXwp&^&4_(4sImI0HU?*V|x?9Cw~8SOiTtX)(dtm~hb14sf0XutfO zPkTwco{KS!a*#d_ODb563CGt{bq*`1eD#K+vA=8#bZFxSQbGg01x8&#Ld0d%AZ7rT zWsbwx018ZO^dHln9UTeA-J}SJe${C@k3lZ*DLtwr-NZTBz8aOJtU*+ytuI1R!S-y| z_$o=UaDnl+tWMKpt~F<4pzo?@(na&^vYQ|T);F?c%A)xTW|LP71t$1G=w*y^Iw6}V z2x@1od!~IK$sDs9kfq7wNUpKCyAEqv_z9^ao(t3LoWSTwcvK`u+^U%8Ik=Ktx+2aI z<9xPGoX*ikb>L=~l75Y~ZeZNIkZFJU4Zw>l5g%9wAIb6AnU%g? z*JM5ZN))_*t2CE@J3`BPUHa1}`yu?bxXMN34SIGYDMo?-@_<+&SUM~R*b0qZ8`>~v zB3|pvMKa^g8aA&sz)c1Y0O`cP>P1SUd|RJ)=zxYII4I|ZFA0kKh@sE`8)@C4$S<9q zmq>PKsLPbaNXIa&Nr-X3(u*$ffE52^g#Y_lbIk}=JOb_KAs6}78ddzw42KJBfiq%g zfz#T!f^vCcTBJ;7&YvmTJDLGn8bYE};tIV^TCITHPuDQa`5f27UnRFk7kOr|2}vT* zV4Vv7Je%+A_gFX+h}OiHP!+z+A#V_?X*SXL->5@bELSESC$cTo6B-G)?+LQRjW>9R z33;?o^~f3xEwdV27o@}yk!pK&9|Kdlqt17!E2t1a>gfQKS=_mBqR?-+gj`9a6|z+X zXbSKw3kQm#JxtBc4d0JRt?4?4035FJ1W=&YNHz6=y` z<~S4k1iZuHjB2}6U%2Y0OO!Vf(9of zo796|*2<*9KGIG=w2@S;)>}pZfrFhzT%?A29Nq3KE>4$VIzhr)TSu%n9iJiJb@6w} zF{m35ffWGUovJLafe+0WY4yNNvCW*Ubn-j-#U;avY5(&WWB}2czhE&YqjK5>e}e-S zH*N(GW3G^Dberr>QfR8HEg1gjg-GGZF~%r{IqO7uJ=Ls#EZoT;HpqJsXbt%UXXG}B z{mpv&9^&JAtK=nPgQ4SJ-@WWK1+fl&c~gB9P?AoEdUf~L6iatd^Bh%HM<1VEMfH5V z>_Xj+O3i#Cy-oMHOSTw)qD*vaIROHdcr{CLcB7hsO`aGlkXucMU0giaTK7lK<&^lk zXN9DCNb_9uWdOgY%%B6Oe-s!1Ve8L@nj=exb@#{lF9Jz0Dg!op7dp{!^xma zJdXQag%-u~m-b3}m_ zj}$9bNL0fjm5$9Ar?$PTr+SNJA8E@|fEAzPPa1Lq&RGY3LTT0Z0s;&wX36oNU~UYl z^ZLff&`ue1rps?HmPmh!syU#q$*e7f5?cEwBFq9$iIB?ivv3nm2OFd3KK*?cO%M}N z6l;yWQ>cx7JH01upT=R>v_y7?U6<;ccUUi*G}k@7Xd`A-qwlc*X<2_L;nN&fU(uzf zKELfVT{UF#x5J@ANtmj{PD+=9*1y z`?Xb9%{8ye+_|*X%~_|pPKFO6z0R}{mZ?AvDFA{mpFA!mWQC#eb1wjNNVX*JAqXpZiV*eG3}OWH1N@CC%^eOXya0Bnwv-4_)!UU1S_u zbi6E~Kiq#W16I#jszHvhXR|~P6YZPXG}o8=OD@c#(>7o`5JZ(PfGUIb^XDWUJE__` z%zG%dOmU1(I&Je$4gmeX_Km;eqXonTJkW@?QH-|grP~qUOChvAN*Und-p4>J`DDu$D1$V^<{kgiRl7-6RA{`TE2ey)cg)4&q z)bK0?vFTf5yjxDWR%v#*|MSMC0s4oAT<=Lo$GQ(m*IGpiKm79c`fOX*MgwCxTwYZv zp|G;YgZv`ZGND(z)Ua%G!LuTgW5(^uL(G&&F3y$pN1ee68Nu)G>bB5(O{mA(s6CJY zgvK}{u>HS?XeZUIsehZ>;3YqDzaFV;I{0imzhaUGa%;>GHLYEC5if`$&t{)NPMvQS zBaTK0P^5>rbQ0|He7InN?eb_uQ~p(kEVs4Nru^~HkGkH1e`Yac zLBwtJi=*3ZnWNjX_NFaFv<;2v|6%Mcqv8m*w(S9i;O;h92!jR!!68WSpusI@aDuxG z?rsSd2ok~FWpKCPIzVtISg^cJ&Uw~Z-@oq{YnatN)zw|qwfDa6yQ*Zcgmlj3C!D@9`q;Onc4!vLRtqB!G>a7a>{?_>%6qe%DwKgtsin&x7`pbm2 zI;XwQKP-M4AurWCnfGRDVtP{Z^8xn-TTmZ&B!?04Ki(dn$x(w4BnF0z+>{r=?T&&{ zFS{0xYd06E4#b@r4ZSXTo8KUu2Brx3zSX~P;>-S(hHEc-BEYKVaghvMl zjdMIr2$D@+-*cz7s$zbpXZ`B_-mlI?C78)#(|rV$=b-8*o4s-m7u#`RW1;zJ2lLxp zY6y2jjlM5Z6+Z!-ku3^{ejgP8_)OzoKtE-aO6caz9)GWveP>`@f43&F=#@KhlZsa{ z`%X+B!97tF3$0&airQ8!izgQ91gCTN=Kszai7XWi>WfVEu;T!xYhc0-SD-_UZ|Z&4 zsC~H@{99}8If=nSuGdppTv|JRL$^9Z--Xvy`YVeHB#H~{Cs0>gSx`KLwa&p45D+!3 zNyXOxr<2Ano+dQu*-%j)7IOF;v~8y?mLK_c5AtGN*9@v%_7;y$Ixb-FeM^5|)r-jc zm>{{;XUeO{>+agx=S3|Vg>a(oj81pY0r!_rj*lB(TwK)o-+Qav@cCXlTJTXj408>? zf&Uwj*>=RYf&iBWzyXd`--;kAKdg#nz6xkV6Rh&tgc7uk~?a;HAMFW@*sWZe~G#@`Z% zyhh7ZLeXZ~?_-tk1d``iCHj6B*Udkt)wgEjKdv$H%Q%cBQ>o*B$G1GFVDX)k^3|&<)P^n^L605g+Ab$z^Q*^WQtmX5jf*#vc2Iw!}fB%k_uI_N1Fg z<@&6bzipzd{lQxsrlV`R>xsej#o~CS^>P(J6D|R^YL){+AR=TmTG*{7 zF59EEukLqM_yFcKQ_!WT-7lU-xGq|3xjJIhWIidk!#^EJ&Ros88P_fn;EZeb{Jx*{aH+FT+K#a z!iiL*A_e+G!wotpb9MCT5$=tWxLE_B)%;X6hSm?4i~D$3VQ5 zj!IvVvwp@p-#^aH2USB$XWRhsi(6k+Z~ya18^8kbROI#WBuTi!N%qqQmRRPcL0|>&P*x9`XM@OxYZ8`d-+=iZ)ZMVE8@u zkp-D@dByJ{?L83*nP(9imxQ`vu=pC{<`KpkqS-&3fh{O_GL@hB@M7t;tuPt6HB|TNar-%>#}va;tJ^3U%k;X6ZlZ$ z{Yzo@x(3AwaI zUCWOJh)&h~k*`y*Xk*pjD2?X(uQ)${IR*nTZ3>3_4e`A{**^a)97P`u{%uZ3<8vJr zu=42M*n8oY<#;0gJzv!`6Gx$~mKT{gff0pG#vx5L$+H!pSC95Ul42);c%G`(0P>BC zg*g=&4VIQ!v@^>?2!*Ziv36#(5Deo5v4#6lZ)DYhLc!YLjHIO~m(|lakGT|xvcq` zrAbiz>vnReyruAPLDbkOepb0N1O{vidm5>r;j>9af0}G zImOB{=VE&`cbsEjrc$+1EA0c0Fm1Ys4*dzCgWmV?>^mbe6q|r^#_T9dioO?MY&RLKKlDj|Iie(LGAGX zcxuYu!CcSLXX2MS7X`Nc0lMeR2U%6l!R^mx`gV@{oIPDk+XUZYU$J;16)Kh*tZ<|B zcLo2rJX)oI{ZhlkXEahyaiVn6{B&jELtZqIFeQ{ikjXIhqC6gh78R4D9L9-ob`Tm2 ze~CkklL-X^j@ql8ykzC?d&}mrP)@7MV%z7xsIC9u_~Z1@Rt(p^SuLN9Z)og~kEVVp zY$Yj?x*AkO-7l@J>@!+M|Br_D~A{7k8e%Ao)go;>#NGLWO)*9(tOobC(=0}VI)U~oasmE)H zJ|Y0%YXR$ZC#(UZ8!g-o)bSDuWNt09zPr%FO|IVJOOkI z2=BdzLG8A6i8AT{fNDI*or18T%$lKo5xtQ)z$g@*g-j)8;q`~_vw;=N-%4{bI~S-Z zYsc9VMWb<&wh8x#j_HIoyebiVgWuP>=75pwZGh7o{ivgiQwK5oN24|sZ$r2-`yw5Zh3MCO8*mYgI(3P_>Vqe4T; z4tcK~KNuU*sS@pXp}o46XnrH#DCaYZPC&Z!L>zN)`%y0P`7aPxEHgOW?0#(?+EhJb zf|I9_n!Zr&eN!B_4-UO-9P=A>Xuo%lXQIRF2TIAP$9SaJTjod(D<@(6k6$=<<6~tjvqVhEbIN!Lp!VaDSO{oARfk;;v0CgL&stF~tO<`R9EUseqvuLMG+VsNSrlS4zP9>koBrjWXvGl+j8WD5_ zRI#Onyo`#^jFSE zZ-*_#HtdaOw(Y6XQ7Z^dpXt>jK?w{n=N#M3RV*-ar*7_MJ~z^qh%^w+6;Y49s>m&= zgid&v$KAyhjgzr+i!cNEZn9sZW?&$j6dk3C)!~-?7!dBwJj5?oieD&cN(>Tg9aEXOUq}F~62gDjmrjQ zRyH;ohKOnLf#l0O06lB@Dz-hR#J_9~F!;AsxkO8(EfbI*Ajq$e#xr`Lb;CiHvm=jo zVX8T=Z~Mwq{=~o6QatqUJ2<4pnMuii`PIzUYi?H_456KfxA}TRaCee?y!8`J^N9oG ze!s%OA*eS;{6p&#&>=8l&7??ydJ6$xszDv8t8XkXowuMIsanXiwnx*@rWx(+$7ZQ(?lCtaFi@F8_6*7W*%gSEAQ1!7 ziZG7sSg4e7Vvdo6_jKVa$rNxsy|g0cIO!bz-jGz01U~7IO!A3Gi*B(EK>kAhN9sgDRha=dJ{JFSyxzQ|*$GoOBMTe4zXF8FoQ$mPhKO4KfQ8uG2K2a9ZIo!fv; zeF9Tta>@iGSK$e;OFsYZ`&qfe>B!I-ts=-ULN9|%^V{uNB-tUWfZpmJLXnN^ zSpkAHUXkzFwaQeQ>C$O|qvd6ZZ{!h7Qn87OW!Q^vUschsVsLZ8?|L;kayn)2;qoC_*_4# zWxD9qx`Fp*pWn4v8N=&Fo^BF;EV_>Vv`3m)>`K8_8V_vT*s*@vMf)(m%ImfG^nLzC zMDj^YLl|F0nkp?;8oI%A?AdP0F7BINeKw3CfzO^e;>e!jpTLUp-}p@3UoV$B&#W&vjs$P_24?BShqBtwa~J{*(Xj!YO`7O1$POqbV# zG?yJ;I4;w-we^DirAD&^CRZG_3JpbFvR>}Fr279&Ma z(8E-66!#LzHHch~Y){tY%Xno22<2nvX%Ek2=vr$BffiB;JNWzh0vr==MRXR2=rjqD zgT>F-BjT=s#M0gsEHvzoo}56hXxOctpVIZ4zZG=}@Kpctty5OvGBl9{+BCW_rtRLJ zA$5z*MPla4Ex1^rH=tGnn4OB>l$75e5XU)@E#5wUJ)93~>_Sd;9^%#Q@&$aRjm+Z7 zizOU!Y8+u#`Cw1XhDagcP*O-WVkU3&SrNJ&!m_nH8dRDoSNXm!{A})JP#o6FAED{Z zKkOBl=uXH5okKdz)G;AZWB|t0z8Z6R*#b<9^#cI8EL`uITL7Si@t%{+{tZaTxxsfd z;vlZTb>^8M_QLR?Avo8p{)g6SLkw&WicB6bc;2*HL* z2oh8>P0(cBavR~C{=Wf z&*si8xZLNB=6z1Z^!#O{kG2EZ%b2VxPYW|@gbj&msblbCs8uJ8;v=4^6o&r;s!R;Yr8Yg1P)h4`8f0E9}viby}_Vfgr zGMz6IymrY;x2oi7U_nUFLrV{MsZkvBH@<^b{Byp4>_RbDI#upxxzo_y12mCa%t&x z3t;?;*W3&dBJBMH(bzA*-Jp^#9Fx(~WSk_S0Yo1Z$qwROI39qV#ZhH??{9Jn#b*O5q%AtrO74sK z(FZx(TF`XaY^Bd!b1R-}yqP>kfdzw`6D4^Ki$Iq20Kq-^?8!-jf5*Cn{Dz3{TPUHT zN7CcE?bSl}2jdYyK;fuoipTXcA66mhhz%3}!y_5`%T$)t0Bt;%P8GRZ)0oNH5QMix z4(k07aH}7ni1zg3EozTsuX+kbqbQ7QrPHe!&CYWX?WvHf`#MSa z34L3^+2|EAl+N;3coxNOr)5$SH`xfFhbZfMW ziAvLn_plr(!gu_kf=Srs;3}T84(*)|2Z~Jf$fp;bEAG44nPScfu`I{QNb&X$AMAfY zJIu}`;Dz6t3#F?#>f+PlyE9i zs@KEuuVx9!0>9AxWZ}jsHKgwV!CZzo>KjOc`85`L6$n$X9YfUDIC472jY{x!gv;7) zY&KTK%&{RjmXqu;cd_& zGU&CDxw{1}bsN?pDqaqTF##;dva^%Na>PG}h0$q;XB#paM4ZFoB2LXVqtLbI4X?p6EL64w@gP0(LaEm~YC#+B&(a^3({IaT$FDug8x|#${P;vC(QN z&i(|;{w0Bas>WP9`I;G{6VQ{0bUHe6MPv%oN=zCYPkb|E^a-*yDIG>2q>Iogy{qYP?Yk^;pT=(>pB>P8HG$B#M7M)0hXv0H%9R+aW{Mm^d#(je-GKgCvw+Jw8u zKtn+JvZ(SU)c{R$gnd|HDqJ$GF*d%c@ZRvz65CWtEZi zn}CUf+;-1X!mjl-c;QXGWXH z12VMRnC$iUM^*R1w09kAD4!CG9st4Qhh{h<)TJYsPLEwm2M<;=^MSu~Gqg6;GTauM zABPkZk#Y>=H|~s0kR=7kI#5X~{HZZTBmr>U(|xMPBlH+~Rda9MyCcb`?*_@PGG3B) zN6}}Et%hP2(5WjR)3c9^5L78(irCbCINGDRY_^=8ze`=TziJa|_P!KocJ7sHHXl^o zf2+sPuL3vIpLXx@WUo}a8ObgXf%H(E2+TDR*aJlv;pE0ofIETz_#Zg#hdf`IwTcrI z|EHTj^>(I0O(p2LPN^%LJ|T<00upTk0ySc^bLd!ossiFqur4Ybv+na$8q<MYrogw5CR;_JC>zxTi|9+^j4(O;9=K3WKXVbT!nUy z6LjOqNlT=4Xh|inNv*Lfffkkw2>}+0XUK05Djo4GsV!#OQvd{G>nBkpo<+hGaRCKd z1_CZsYa1L5%joRAp)$)l5-{wJ@EeK&ln4+%>^*szZ_8otem+>a2|RwN^E}AGGJD=Z z?bd{?dWKc44Y%<5bh}w-#@^~pTa%1_jaU6Le?aT~<>}^3{kujb2+z`r=fvwwp0dxe zP_?E?hK~HHjB{k&&>pkIu%AuE7GLy5I-{+26tI?S4g`14qG$vhFn)1(=6*!idY!jc zMlYVKM)vVUxH#9CVlyx^6l@JRIiDVBWTrG@0*XBh8`=39uo*;6w?IJT+lD$Q@Zir zo)&m^Ac*f*5ca|sC`%s!Q0Cz;1*;k>=UCzqxHTu z^Fp2B1d8u@qCbd5ttIoo;RT70>5eW9plNA9c(3Jvp57?jE>Cy55t~MTbw>kC(%4h5JsY?gm-E|M96gbLr@X$i$dmu; zkHyPqpXi)^^ntTdQ+V&7j#+E&?NI&PnNss%s-;Sm?UwN&xiRC-VCiT-S*$mUDhP0? zEOGStB?A|Kh@lEa1oRrg1w(r!217fO{*;^>W7#)8^W1k0OKksnU_OvY zZx$fa#-2e3q3)9oes&l7Vccqxm#zAImFFnj5%1NaT-O>kr)_wLwkUht*=s}hNdh!itv)om{%CzLuuwaCXX>XIm7-u+ z>4(YAk;KFesM#v}9tLbr5JU0m9U{tn>M5vn;zqb7_%xcTo-G(=yB*oEM$tFjVGNl5 z193Lx#nW8{zTot&Ahf`uJUZGO6i}z6^`VW404Fyj=7C;|v7m7qEh30o?Vz7f{Lgm4 zgXL#|gbuZ&u|)0APAB7F%aP7)kdS|;)5Dr@Pm(^fpE=U&IokhR7CW4gKiQ1Z>8e(-u<&y+x5L0ke^yFM*bD`~0y`DC#J2kXPea_vc1XY1Kz zd{3|e1cnxvrX$i2KZfUR+0y-XOH0$mCzTyZ%T_{CqZ+ zEa;fPe^fHtdgPX){@L5fi+e9*j)0v}N6fJi#7KY{^lL*%0Rd&o4XAr~uAPEp6%x?H z;;O1GKyT=>^tNcouhS~ca`vFEFYTz}ub+DRHxar$@!3&@0+^PGi_B; zIEq>?gQD*B=9rmDZV5T*P=yjP5hfw6pDYUlv5jgc^lg}lyT-Di+JP@qgQa<75FR2? zIE$1Y?S)uUF(Wv=jz1pF-psIbFi0OOp8 zlT+BDAe-C2f`pgnr%T{VQmdUNQ;{#lOsOs^4~rZfj8KK)dl0e$dgz>5=#3N=NcQC3 zL*w4C6k?9vP4GtXjB}kQ!j?WQ)TBTsrQ)@QR*}S)@aV4twVwEJWn}KMzG>v{TFr>B z##$yXMkoCNf5R@+`_3PssG)q7OtQC`--lcRTG9_TqWZ~$5uMr;4>rdw6 ztxWP z4dz#W`kr@lU2laXV@1;+%`ds*h7W(?9cy!EYz6*$bxv@Wu~7S zyl`E=b3(6!{u!%wez;xDfPKICa4gzm;Vst8;+DOz{mjmbX74SiPnTD6sli`Pp8?bF zZ@-GQ1OUKc~2L$T#W`6;X+RFHcasJVGN%Ghr+pbmT^RD39a5EhUdIeM6x*VgZ zV=aiA-i5_w0R)j%_@pch{;{rXq9lTbI*a9{Z18s7^dOuT+nqcNMhhq-C)Q&o>>T zXkkcVa$uRW+TyaN!BVE~XlfSauuB~n?%ta3P2kYBqdnxTcm1F9G2hb;b~bu<##*~; zPdy|lOqvGGkY_hneO&q_WX(VJ4|?2$56iLY=4f+P&6!YR`TXTRwf+HEhKFDDd=^$8 zY}Mb$ngtCBqsAv~Jz>Is3plvO^W{j4Es((TEk%#>+w_TFF_952EO>m2LLx^1!D549 z1cAwxwgK}YM_#L=zr(xEHbCM45Q-ok7BsQ$K z&Tp-7PQJHZ;nQ!bovCAS8$i-r`GP3AY^RHd#)bc z9u)`&7T5akTK@p2=~KswVlLqQ2EsH^3UH1OKdig? zZAudvR-n zYi;RD!!$0G<7NlQQT9$LWab-B?wUQBPcV|6X%-JGz~t3558pFE600dPJdUCkK*rlz zFb(?<)}xXoFtJf@dXQ#5g#sv8ASVeM9FHa2ENYD0x$1n$nnR+}O;@H6*SZ4*HM*XV zie=}N(iE!6cHb>_vBF+39C;?nQ3uUB*rgx3cZ(-hVyGjmK8JWA{#|YV$@E*pS-Ztz zD!Y+5lse-P_eLGQ#U^_nUTMivB}yY3%Qq1F?Hr+jUfk#PCY!CL8Z*g+9MY6<$#~!E z5-HgtDLt>Hh^6wy;yPL|Fm7eOVVdne1CWaeC5U;;KP;+@3F%xUnlOy0=@SP9$w6P0 z@Vh#AYB*=3o8$WmHexK&JMw@Rnx0vyVti8O#&4VD}il)7+vB#jJsMb}k;K0N)nq4cj0u`zPr|7^+L&GdhQRb@C(A#wQ| zPDLRk;Az?GpLm2#N`!{a;wG(LfLIH!)y4_otCDs8aq)m5M43VPOP!^Hl0xkACGkS9 zs9T+bWh}?4szouM)_mB=;-Pry3n?rk8J4#vH5iNsXS-5%H~kNo&ki%|5<_v9_^Q4L z;F9R&zu_3s1Lc~Is4E%+O?0YF`1EnO3n2N%B2?tz40kw0FW+Yg?K;#x2VpE~bh4!)12 zGVkKWvZo#9XsVZ-)`TLUDO8~Z?BH*Fd`w!c?Y)#>N}-bOfYwrv&nsd-m|$r0@t&%73y zREEk>F6yd_Cfsed>J4xA?Z^BZji=TgFv)3NHKZ%ii1sT}2)~Z(yqT99fxi$3O28$I;%qY^rXt z*QfqkNkTzWMe?*7anufy*iZSgWJrY^`wU5@sm7dsiw6O?I)5#cIGM1T9*NqunpB_7 zO=MNl`Z;dSgd8Pi(Zgrs*r*A0JWrX}%s4M?SE8I*eR8Q#qEe|U^-2EiHtxN-B0_@s zQ@r&3T$OdTy-qt^tIQ~WfX22YJ?RN96`#%tw?QPB`P;oW8epaxW3wwyiibA3gqBf_ zlLEo*M6TH~Nb<-8T$+y(dvG5o*I&Wly_cT{2JL+g`BlnlQ1^e7*jyPYVU-_{QtY6o z#ZTD~9LcGEK@mqgA&6kqRzvOiSt7q6*WJVYvXD-zBVR`g7d2^*TuRI7)KU4U^AFgg z3QvGx^~uj^w!2P+XiW1SIlH?GBtGkNV_}OWu1pc{+!AU(J7eqWi)!yi^}T7`X*Fni zBwcVDGGGbx98;YG%32wUMYd37F=Y4d0tv6|&~Qe7n~x>XIC9HYXz{Coaqk{LH|Sbe zSb*b)wPD*suEbCEu*Zaag>|aSOYa-ET`vGrW5aulo`=UR3Vs!W_el6FU4KJv=NX3% zdH^xP;;86R8dS9tJLT0NV*}~+aL}G|YLrGJXnj+<50&#S{0wi_iAj-XypvvRHvkRk zZ`Mq4ml%hi6F2DTtc+UT#mpT`>r2|V?;163(ui%;K)bnOeC}2ORHYpgdG|xVv{))9 zk$XPyP8Tb!zx>uBr{uYLWSXZbM)ITWOOm?JZecnYGGw8tmiv8ym4%~HXhg`cfN$*8 zUy%`KLx=s@@+%DHKs@urV@whXYI}^UEWflQj<*V21eWBxL~&{!M^{@`i+ilw0Nlx{ z!f?s>NK5O>gHCiREz0k2B1sflG%XfA4yW${e;lN!W>k^6a8%^!Wn@NQ1ri@ta(l}% zxFHd)U>N%Qs2XD1syfMz*I3&E23AzjGL=ir4LniNslSTrCo_i5#ud57%WLKaNdhL? zW9;GKxdkmHaz7Vr8Tuus*LT0-XG=Zn1>VwU*oQ(x~tn;smo6{TTKw^S2`C? z4`c_gvuiBIMzOK5u++JX3if@3I$s?vKe&%|$BWj2PtdhkO4RyM{uuuOi2>EaBV5k! z=n&D1Mac0#(a!Iubg1x%M4F5qH+U0GorQKSGP`ZbYlQ-xC^B^Mi7A$&eAOeIrRTcs zZ7X+3MEA#b1jIzNxX6iFW6-}0x=$509g)Og@sf=a)RL|c{PjwvDn4T;s1{Hf;ZjxC z`SOrrRVqRa3oA=slN!&nJ*VZS`mwxiW70;d9xFlFIt6FoXnK11?RfjVCUzw1RHxY? z+u4oXtwY=-j*5Sjm6gq|GX$f`^Ze>hW+#>Jr5MkJ>lF$9+7V~qldkB-zZLiqSgxvb zXue=Nob8Iy|BpTIY$_}T^X6LIKHL7sf`z8A`@AxaB8{kbP5Z!?7nhpaK7^%478%C{ zA87eYH)i{ONaQ`KtJ;&Mf}vsVBarE!*6C@4vGy#)0;;G8xKL>vFug2M2o>Ca*Dr!a zE)i3$zsI6|l1Y)YKY~yu@WikA(UhT66P|OPq$0aUmm8Tr)sy@u*X8nfwfvw!lkfPC zm;YxS6Xj20%gTbA#Nl!HUHB{KK1sz)I$RYF2Me`B+oeduj+NLnLQ|h{&dk=R-=Dt^ zQi?-EpzqV2`s&G^^nd+Ia!Uy;n}BTqjQe-gQFYE{+Fu8zXdC*~X1gy~0~-{G>2J@# znD_w58ZGJj+pjlu$j=OFf6ICsF*Q#(AAdgrTqsbOM1_|Xt}4+GCqj3ioz5IrTFiu+ zEmUMI{z}jr3M+*yoh;QCFWKlc;d#5YLAXfK?=l4yV&ODh_(o1)c#F$5PRW|u$G^R0 zt-wPSYhAmMY^o{ts-2=3A`O3y4~^wcAHyC}oZJlnkaYY6I0g&?mYC*fxYQLaZ;Py+ zj(gI2#|)pfzCP){VkW<(eOv~rGr`tNG{?<@*U3DEl~Nnok*kaNd42KQAy>1E(w1;;YB8n17t|NE2Sr@Yx@ZoLj++PEkg-s`^ntEWNDO?QQ_L^&NSe zXyC6h!%9B9EBsC?JX17e+I_{^U>H}_TIT8ijxRgsHGTK^emhe@mheKzz@sD_FjFuv zi4~vVt38K$=|ydh3jZ}O_nj`L<^s56L}Y9Kf^KWOUR2S*GnU91D?bRYXGI^ZL0LB0 zXTYJrwWF;Ae-!&jF0qHc_Jbq)wxgc(=sOC{$@T4B6#Vsy#6}}oL8dIU$qHssO3tkj zVS8;VqfP>}$l;tBg(Nd};$OtZj0e9_M1SF3jrK#rNO;a0%F2`({YO0#vH|>EU+~HP zEo>9TwjV&c4>`$9#m^dnTeba_>=yE$TLm&Vp4MsguC-rj5!_FfosXm7=?#}eBp^3@sTq5rb(-59 zZBa&`b(+QGYG{Tx?YUgO4o)sj=u>b9?C z;bFLWqE_1Q`OzG~Cv>eJKryQc7-ixlyosvh@GldOGWDG1+2yrWZ z-()Nk2=<7I!%1c_5!^nPcJ-dds3vD3ZBpGRCK4zL*J9GqviuL~-TKl0q)Y-yU>F`U zh&#EOW@YQN=l3TAlIxS>rhU%l^GQW}z=c>WDX*yL*?t;4JpOMEc|4*keg?)UFV-Ia zThs)J6{IE}tdkeb+0?(RVmnjfG$hl%36J>pRz>vX?S21tb3AFhufKQY@#94qN+LH( z6gJW@Y?<}N(KxX7S&pfyJL`g;!T_^wDCzL_0kb|+8h&oRo84=NRwv=VfP=`1XvaE| zxiR;K4;W@TVf>MUYsky@dH+$AG`6i?o0K&mApiT&EBsH0H$W&JsEW)UQm;#lF@sMR z{1RTo9%DquXCA-A4g;zYm*MQGNMdJ(@T^~blZBah2)G9dnW7v+7+dHu(pb)Y2ip;U z8|^ZZkS7#~aL=`Q+&Le$N3>62gx1BNryXbtp{PB9>LzRC3aI_Y0Wh3B(@dtcBep=$ z*R^H>p!g-+S&gRrCkONuNvH`WM&@LvZFS$%^56YbMV4@?aj0sIVt_Kt7!akX?BA?! zA29}=WLqD56f`e+fdOsU)4#Mn+iNt_ZngK8GCZtw81m>B%4Dr`ALF>6*clMk3-~9` zvJGteKCBCf>V6N9sH)ORO1-YtChT)M5b)2QBeyg2KK{rc{tc-}E;k5_tYNveI7UH3 zUeSR)i5^??++g{W&zR`dl4Y5zfAy8v?T+6!{`0H~7!z z$A6YUWFb6(JaEP8%J zx?qyA>V!8H?CoYXBNcmaIRyN2bAevozpK61M|y|G<+%S2>Fdu`lbbnfZ_%QCj||+Y z_Eokd-PZ}C38Mog{!H1~=nHBKCSz67cNYWF=4kPT0V26set$l3=#LXcH~v(9-mR6X z&r?r#Wy+h%KQ+wa9m4Gk{LW3{zVd(X?4l;DVq$421}LDd1E^@x*qb*BukUgt$jOB( zP(*wkg|dQBaV5aIg^Vx#N(`o0wq?mr5CohAlc!HQV26o~OyeIz^@HNt<1gWi+124b zLUEa0fyZS>?OUl+M4qL#acpg_#&K!O(8co-YKc6d9AH915)Ya7+NCR}tI}sb4-5vG zYQ6Hs7cmH<>weLhGeEO%;$;Z<{L4!^8 zt*>??RDXq=j~B+e18^Db9^GxG&dk9v# zzEfo*$;ct3rUoOS1`8H3-N{y5+IxIPu#`aazI849=iBVY1{G>#LfobhbF*AI#Ftjo zQ*MU>?5LiGJYDj%PeJ5@JEXR<;DzoEsU7^07}0{S3*J(d4*Rg6KKp?p=I{R<^F<(G zw{j5bEHLqBiTN$)h-GACpo*L&W@d&LZ9S`uFzD^+#fpfImNu0P`m667z8I2S;i|07 zL4pk7n0)n)F!!5{Rrl_VOxBOqke}O}c~uV#l$i@om8qooM~)gSFm$ZB=$)KUjyroVAgr2W=$+L16_q+$zK4Dkd4Y%WIsxiL z)#!^138GaFhhs?^l-WH;5R!1HZycIW>)cxfUrOibf{iP1yihti*K03M#wZf-cE?;2ne`7$QIA_&%T2_n9g zN_goCzL)lI;+1T%b41>vb#+Mu6h<`w-XR+@Ma0xk$g)i&`i8FPfYDCpWalnr^`Tk9i zfsU#jy`Cv4DY->Or1qtyhH9yo^)V!p&3oy z)SO~LF;n#9MhT1v`qdi@h%;?SoK~fFmV=dy(0hUPaR!%#3r(;J$kh>5PM zgv=aR44k_tAA)f1;Lrk<)wsTvGw8PL_3P(;<+|im8A0ia;WQMAfNQ^pR`O=0WkM_0 z8z?*#HDg>PgH!}Fq~j>q;skjB*QuTj(pNkWlH7!uWExG$JYP7rW8Wo16N#@Y>?Rr7!5O-@vHUxV*szWV7N z@7dn1Ki&Clr-bHN5M3I>swI38SIb5 z@!I{uFs9#p`#wMUWc^+F3QCtkXMw>=A)^Yh<-qDXm?Q2!vB=U{2IhX;5^LZ^X{y8=+JQwzDGYieqG?&O7^08-Cj z8jpgfsTkp*GjYI9hAmesKAwPt3g-jgKq!vRCWGqk0`(j97aWTPSE6o*!Vh8;99tLj)8oyXx&1`2ZOtE)bKz zC-P+{SQAGcGiq)3haWQIgbX@@;cDP`k5xZ1z}{|>{wXO#>i;a=C2qFz2kcw)`rZpclqge*c6^8fg3lMiyt-s z^?ACJnqw7Ruk;-tS?P`sxHH2Bc6w|%X3|@#p&%6j#GikCpNLq&)lM3|`+BPatJRxC z3Ow9@@j*_N&aNFJdloeKr9xQeYrn96Clic|28MUl1x* zSwq~^IzcBhu=^GeO>k*<;L(I6X?>C^ENUVx498>SVM6LU<5`QPghdmmeLH_`Y^X*e zHm4QWG)P3gZqt+gb!)v$?N8Eie#h`}=gI=8=Vcjj)3dV64U-lA@IRJ*zqdSuJsr_W z`W$#@ID_S_=>a=^yy2;S>e-RJuYkOg_|bV_BZK^fIeJx9)tg+F%)tqUES-q?BP)6n z(URobMtlQ8BBBvx9gfe?kbArp;(5jX*Xe^bZs@6yXA@GoWY=pD_cZ_~#B!~1W{PZHqJ#~3 zy8pRwr&YZi;LS3hEi;jD!v+q_Y6oV2-2|qTJ5P2ehjpIExHSS#xn`jTjqUbuun1uC zM=i2Q4PqxG$sB}4b?K9^h}eyEe^yJBceBvpmG%+j?<-DY>i(8SLsa)tU;m@<@87?- z;6cO-{d2Uvuc)*PTun`3H?~j8U#RGaIqQ~z4bFWMN$%(N)?mjU7=+$hCeaAa03J%K zZ%OwGN=xK;c$EL7=_?d7$kNVp{a1A;W@BF9>}hf4w_k%`mWSD2dzhKRzVVn3M);P@ z>&4VIKYb`DM^UX}x4PSW6rVxobQuU71OKGIV5x&*?{~idOb@A87~=R<42qxFfH z=uMR;@7)R|JKPVobmR`U15HHGz->JyCG>QQ#N3B6atW|E#i!lcG+!VliIQZJ^=m*8 zB7_ZOxw(6cfj!3-(a-d8)DHFbNr?lXqI~GS`CDYH^8yG84+Nkfa{w#89ejH&4DnST z2>IorKroa<@br=p-aW0$Uq(;69v@xTk1CRweZP67ZTXWUow)3T&Q|kw%g{gh4f>T#-H1pwV7~6-O!Wy0mD_#i$oH?&HGW#c5 zh^GB=x}01G_^PX4Y95cxcQ8^TM2MOF`t66aYlG629CEUaf&(#>87ZVq?nr@|>bK`E zH?XMlt}X}O*s!8O&ZFFtlA$DS_OYi*Z^-IPQgx1jem8T#)#+x4Xt-7yun{3u2>M0W z`<2SA!NWp&=aX=En^KPW?5fMl=2Zumn8Aa6Pn*gKK0UTJ#dPbD?yE;3`eGnUhf zP`EIcDb&sqGgk=bu&0uRy}Pgwfv2)}IgP#O5-S1h%o==m2srjCC>8Na*=iapDEvkZ zXnJkjHs8XmbSrKK{x5Fame@PC4vAT&JF5senYq-nvER%H5kAE7Lsp8}tF2UV61ib1 zbWQGF&u-v{?0WDO^;1j2|Mu*fMy-O8Y)KLD#Hbv%>cUF4kH|h~T~C5l>1q zKH0Xn5IGiLsf(16Ex){R=5V5QzO>>b7s@7B+WzFmPlgL~-eJnLh1vm2&A^|$W zTTKo-_btM-oVu>hS6oXt_cp$x4i@U6eEMagmCS_HibHv^vhQy?Y6BQ*xcdL!W7!zOpiQc9xeHg0X? zwY0GsJ$1y*G%4A~VgDf2x(_%0kfe!our(fzheyP5S+M@{4T;9Rb8KRT--Q6=4YA1` zV2sM_5YRDUWFTDP+6y!T>{=#ss@LrbM~?PBGc71ouoF{J?R-FPrQ4M?I2gnTu>+Gd zW*R;OM5Bd9!M|=xOZ5gp5>teJ1z|fvUP2JUnSMuVe!!5p@JlL$>W;F{@v!(IVD)r+ zdn7|-HqR&&dwAo5BTpqDmVttl-UR^LF7dWQit7AFXtLD^!NNDoK79?b#1iCRY^0f- zzt!#J-eleK|DI*j;v_s&F`N{QM_{jjP44uNGxFtSH^$7mm)5+>>*~jSR%Z>yYPYw< z^p^OLC((u6Tv!EQ%W^`3B;kJn%@$_9U~ue>1apB>VKYjQN-&BdXAsRQH=1V?Tt?MN zIJ*AyD@fqZ-jKr+Z1}C-_hZvHO7fisFywMHCa7IcFoZ&OP9(T^CNMWq_CIwmViW6{+|ve2!f?n z_XKJQYhtAJ_NJAU59>>Y7nZ-ztW?9jEp=T8U|ElDPbyopD;J^BcGGL);+aWtD3$CU zbjE=@)4qFa589n&W=%nogs?3_jPJwK9ql7uS9sRrEd?yM#ow4p+uJR zjL?J!Ve`VhYt#B>k1CmK6y3at1!%q0sbtgMqT>|8*+03ZIRnj{-}@NJf*=-aTBts& zSQ&3kWnFM=+Yw*x`OT`B=m*x3CZJXD6fs@vnD0^%Xg-11j<;IU^*NIts0 zL)Y{`qMf7zE&0%%$-=o0ptUrq?%I`a+B4iN&D|gWu?#CO0|mKk3C1e~s^j ziGUVj&d3<8(zl6ibWoyZ`>E*lJXlnzBkxK!Qrb+f zAJY{>{~PciAt}>f9r=uiQZ3*MaiO;5-5e?-r2ZJ6bO<9PCFq{3w9*vQY0{SH4Ee4} za_iGpCOy?mk5x?+)!k4EX4~u#8>Eb_pbbB9M^}uag=BAxF`MyITxCaoO^Mr7ON~$?#12{ za@ZYIKJ78CBv2*E$d)U$ag`44`+J+&`WQH&ogu4e`HpnQQ~@K~5|Usr;vQqYf;frF zhlh#x!bYq3?F#azQQ7j5#MP-2)1Ak}%s`@qd2Fe1r`HOo9?I3aM#k@J4E4-GgTgX0 zQm`E!E%e)7yX5e{Ks2wvX}`)yw+h8}P>T{mn}UfMS$f|B_MeFd>-njs!b(1kS%x|e zhvv7>ehR=^T+9iC3ZB}1^WveJT&+=%Ek+mv->}mF9|31v@AyXu%`N~&VfqGjR_;(u z?DbYH73zGS3+>EFH@MRU$Rwo+TnBPd>RG8U2K>qpmjQ}T^{Qi=g7Nxg-@(t4c4B&h zg!qU@wj-Y+ZdBB_WK@c&@C-8PDVrRLAJjNfDN5+QGBwSNz_)0Ny}mmC*d%cj;#po{ zwavmu{*s%kg1nxPDTr)IdiqebTmsln)iHE}&i~=QT$tv88>FMd_9k{uk`2M3RURkv1??4~YXi)Yd z$wtZ*-;gm-zTK>U=iSTFs>nwq?WqXamdJU6PJtjKiAglvwJNgThO%3l+=Y*rKZoUg z4Plj9dL+id#1TBpwL^ulXU+K-GDF&oV?ce^CArT(C_y^{QESRt^%$>7^r!Oy3QmSoSUzSxL)d@D&+Iam(k;(_?V1C9E zLs8JIE>0i#4;`-}@@B{R%54@Mp8}YnyP%(y7Cz4gF9#pD7KT&zj^bhvtOjYk&wGh} z>Hiz{mK=Ur74GZ$--Z+sWaR}?9A{5=?J7)vzrD9$79?PYs9gU9N_`+^wSmP)zVn7D z+w|SJH!gss=EPDvIKxO`S$VFEtS@oIc~JF_U;fK-=kA+#pamH!k)LGsqGg&RE6b{w zjKJ_a+$mPNz3eRy`53^v@!=7txvU^CJhx|6Q9lv^?>wt+FIy#r&64E0{)dF>fSU|a zlso37EL!R~37;S2bDoBu(@4@e(+Y5)B=C&M&LP*{HJ7Vj6_VFAeCZ7#{%+jkz`c|_uA6O&?B zxXmH+tW(WIKv$TCGRsK0wgJfP!eI2^SlJVcAEo~zr-6o)w&csJkGhWcV-pqCor;%beb<%(2?(07kfOZ z_h0d&19maN2f=g~ISZfzMx^!iOiwm>4}XL;SFR^P`ULyT&-$(T8B=4zex(eouH|-j za-bbr_ld+=w7{`O`pxI5&v84~S@Cr@$lY^P#Y-S_UE-%%#ZPTOoUuxV{_}Aq^VY|I zv5$6hwIHRB8O5v(NUFZK5mvruhv|ZVV=Mk%$W0=_v7@TF(*JiuO?vo2km_V#`va=4 zVGHA-+V5l6@&jBuP1S7uXFlE?i|27FFoaNq2kS5Lv*_?m)~Z@^*Z@?fdD6zeJvY~P$$i4EElU>zrG_6R5DnIO)+r-y6ifliDRchj% z%`m_FkolJ`hqnj3EXIQXjX$Zb{(pQ6VKIPuAY=eOPu7*$n@u)GuC*Ebq*lI_6F*ji zUVQMvE8K?ECU z4!fVrAs0pX!Js^2`$Y0W!Nao05?nrM06XNr{Tqn4;n9SQYLi#DKB0Tcyv^RcB4Pbx z9-FxAP5{?>-$!z$D0Dz(x5n*uLv4^8N_>34JG=fF`N>(E;XgPl=ov;4GP)W!Z=2rl zxsbDtbl3&vS0%>j(t`^RIFO$$JeJML!;^L>%e#i2{-lcx)9c^_^eX%f!LbV$;lwPZ zrKPsqRBi=`U+YoT#?8%W9%3pfK&&!6G?d6qZ1Dz4o2#&>AHN)x3pwv%dKb$g8Fcz{ zmQzGz(l{0u9~X!FeaoKYzgr=oYaoJe9H{3FEw%z13{P?C8;^9Ufok*yjP}#vR6Ej! zB)S_o!Ei2gnBTa>a%~T`^gawpnQXO*6#1cl-PML=sw=aEF4HcCL2$V5%U9^vx2z3%?9!&U$^N!f%kAlw=OL5wTz3 zG69qj_2-Y@V-=OK?g@`8ffi^Vu%I^ohTMb8lWZSlY1={o?F6TcI}@GidCsUa{LavxV{Bkh)Z@Ak;Wb9jK6EQ}>9 z>d$9llKZ#xBUKW@8@XOI>G8unG7<17KmRqA*dWO8`CbhtC#R4(2Ctf;o-#@yH99(a zuGL8R*Zv%;_3ioE&Uju?Sy?Y2P==e*)3*3?aj2@TeQ*R)tS2pHWqWtQ;k`d^!_T5u zsMWL96G_d?%zT6-duQqlDsQ*wB3hqM7j>Z78p&`XFjAs6o3I(LApkahCmF!mh@t!Y zuusL(VH8(`hjMItiZ(|4xd~OcQm_xw+?l3ojXNML5qMqqJmqJjtn}SUOELW&zwDjo zO9#K8XliJfi%Kwe<5~wR{w}?)d(k)$@%eS{YbsH|1Fiy)|8!n%VY)g$=mUmdgKo@N z(u8f^yEiX>{$M2a*r_W;z^KAuk_W^-DtpCWpq=Fs^z<#woc&?;;AVFOEzlBy0iX&^ zEBD<2vBd;)gz8OFTS`C=pYJyD|Di!KbHLX($hIHP0wW369_=GL_N;W%fa_WzunEBy z`)z<59W}mtLs3uO?7ONC@e-8|v=E5R4~N>706NVg_xAQGmKctOR##{H$n|LPp~9y+Z*d)vXy&k)+{_xWu^+k!gd=-o9%9FX zBaj>hm$=~78ofD|-xcE}=1;DT&(FlX7pXOUDqWw~7Rm`hn* zjpXjD(?&x1KV1%-j6cUABB@n!m4l}Nlc3n|!i%P6f;fYQmR~|Rb34uR?yu!-?^nCR ztNirINs17}s2C00%3Z|4Dr18oxo8J*6~b)MfPe$ z`T!W6VH2C7Q&f2qlk$6rV#ykE9L8@{H$<3T^VyCp1CyD zwanq*96x<5sPG5wFjM%?>+jy5$<;b)Nb+zeCvc5nHvU6a%9@D$yeF5@cg@J|r27sH z$X~WWU|Hwp-|cuSjLncSzJ&0(XF@PbK=B@VeL7od-a+68z=K4zdLf>s#AHCe)bj7| z)e;em90U9b9{?t!0qXOH3%nskHQ*YLyEA@ouJ^O{R#Cy2cA5aSZ20kz2v5K0;+hvh zK*VY7eX6J6Irp(3wXYod&29nhDDQR69k+Y^xTGyHsCNJ&GP!y1aO-_W|G*GtuQ=qQ zGs!t>^l4m9bzHh}H#aASdh-=^WZ2FY6>djKt(yRK2UqLQvoo=^a>=aF8-2F0{k7gz zi4sPa%z95nc}xnE{41Qn%x|20kX+-+pHs*%%mf6kWt)f|skYgNIMpw@j&3?NuedbE zs+%+Y%XA7@CWoiJ5S_bp-j6CacZQ(V8{vO1)(i6L`{Z1m%AM-@*^m#s+m}oOTB^iP?Kd7lR5aprBn_SyCD6r>IbdNr%>*PLIjoM4ZcC>eR*9PQ~ zuxKa_SSR_hUPKxH6JL}c`SCwGuk;uQ} z);vBU4iXD>MG+~6%z_s0m4jBF?W+;V^X1?QdWW!1+jL4+DJ~$O69K2u@}nPL%fH32 zN^h+E-Cz07my!IosH*SD&T5Lfwsxw^Qj?mcWiA&N*Qe)sKtqbfeL=yL_wPxIzkc=n zdAd8PA}k`3Z#SBmkdWXpA@x`3)vMCyFJ24)zS@gT)6>%~hG*0Du4d<%uTqke8zWxn zLF&FYzi}Pt@5gG6ppNXl#YR2AWOro%1%hyii|dy){kWeFG)kL&?$H;O z^F1m0D8WNIPtGEtGbh)loH3TDU(S6zR$Y1a&W@!EsNyz$Z)c@8AG8_S4u9Z20CbnE ze@qo8WMu3!RO{j|#U^HaN0uW90vbZQAZ6-WSMRSh?z z2yy>EhmTj@Rz_Z5o_e1D`uv%zJ^bzItm?@TuK*Q@jpl@Xe)DNxwgnD9x_;%I(G8nC z`2H5(;v4ZLuS5|9qXiTO)a!59gZlq47So4PuNyvp&IN(O=*T7GFtJSQORaC;)KlW{ zyYXm?i;H;&Mq*jz@AC5}0skb8w2;*LF_xpmYHnU6gVeG6p(Qi7g0$|WDMcVJ8LfZCBg|%oB5M?!PmEesg`+)Z@uT!u-= zG8mLQDA=q4^j%LP-LITU(+IxcVMbizugKa}ei^~UsKQrFPXr_`{o%xnC`!ttyk|I7 ztprkVY^pdcN&gm{{(%u+V(-R4z9;X%&|+r7B=3ukJguPB$0Sb^xWb&csBx+~AF*{9 z@3nHb^nG-$$EALn5R7Tf-k& zB|ZiG{SAx}q)KpZQ(OWvyfy%ZNeR2KIC>n2Z(8S^E>aMlmYmG(;PA9NC+?VZZ>f3q zy6E`$cylfCfj3bA(CNdwOHn~bN7oOeST=xqFJ(|*5Rf}EiMxCf>0c%z=y&tPOk&y& zX@)XojCiy&_o9x}m}j6c_zgSnvlhW?4XC4gtcEa%AsHIX8^Y&grLsw`dW_tbeYP8! zsbJwd1njM+Ge$=@T4M@Ku%vVmyKhC$@^TrZcV({3JF9De6iNSqJSvg_GY5DppecT! zLs@vu!PYs@ChQXM*D;@fv7`|z&k4#C&coX^=b#`~yfq%c2GvnVzWusM54U|&#TN9<`2 zgIUsznlzK-7Cs-mQEyI=z1n{K&N&)P83>JH=N-(Vlka3+5nu7sgZZC4tABO&Gn)UZ z7lg{`%_A6V`ExWlGIq2iP`|haEEC6VI*GO$0yPAI2gQ=CN58rA;KAth$4&g$o=67i z3+ygr2f1>!ybY(4m-jLRCM~23{sHFoo*Yp(@-Ha7z7^xuEim1UBDrRq@G=EJ0tetx z_GiZcqpcpVyFuNJH`cC8Phw!=%g8+AY*hD;e zKEkY(lERFvmqLdih)-GkK4GG157rcD%V^8+F-cBVz%<$~ z*!%kQFugKXXLb(vln!NT(rv`5Df6o^%V)9PAm{@k0)SD~2ETJi)n>H+IJiM2GSN>fEc=WNpY4}KhTaAQ3;V}Nu9@LvP zK##HlMAah60wuai);D!GWs@fbjUIyVgFSP}VBi)dXV<;C%A>4*zq5pax0YT?q$#99 z@c}!5CSLR5dSA1DVk$~y{e~I@$y-i$ZPyB;rc z>)EbhV<7k#v_at`knFXfM)Fc?&kN-B_3;|;E*n)2uej(253=4uOvh%;0!%{5nbv-R zH`ISaz9Oef@6)AR_kG!T@SrSJ|D{WEtD{?ambkJkvWI+tHI9QxhS&iFOCt8e-8P$} zmXvB?foHF;npT*jj<-Op`o``d&2QFU+pQs1m!oExV_)l?2~_pW{a&!Z{-?-^f`pEv zA)!q|NOo3j62^ZJHb0$rKwj6xw%Ouyym4bIVd8>6h(`mjwCYdgH(YCB<0@(UcYW|C zGqfNBWNbg{);QeoX_$Ur_4 zPP}9c$f|q%EUlL+4>~81FTo>UrjCNc;(_L?b;01txx~ZKfWMQk$k=ZxAHUPDX0Q98 zjF0qjjx7LpO*tp=tI>1&>AQDr(wX}U_08+o05X2y;x~10`Lq1Z>%|&}#E&XL{Cy$y zL>Z{Wt#3dY&jWmge*$=NBII!1DZ@vwhgW@AN~1^w(vxL8qVAqwyZU+rdsY1M?Xk zC;bYIK7S>CV>c(ctF^UvleJ<@bzE^@3fst<7b*QaXU`9b*n$lzD3HG@HId>tD34ZiBg@7bX(SHay}sH3LW7Z1ih(B|37}bT16LvZ1~F{h7I@|% zi9OyvAFw2!*hF!t!c{;zE&DAEFT-bd6u;WMaid3mUcamVPa_Y2hHu`?Q8hz;IERr2 zt^ve$F6g!ksVr}Z4L&rgZuAg?^|azxrEv{?FqP_0AQG&DQ`XV$ROBjGP6e7zMgha< zTP?h1SM#%r!ok`f_!j5zxC9Xi`iF5yoz;7h524GPimGsTg(>63K;~_$;SY}}XYg2S zT#C7&Qva|JIX9}V*mXdGzfRiL<8f}Q!tnHTn>ct)4WFEk))b-mWgM?lroRgk8Umqf zLBku@LN?kkG9fF}q1|ug8+of>Sn5ICYK{_E*D;($-63C0;;vxg3cOt_#r1w%@Q-zm z1s_sas%B!_QnQ-x``gbodBCy;a%tJ;HX+dAcM;M!-0XX8=DDWVUz_PGIN^Tl>3yKi z>okbXuiZI9*ir8O3;w^EQiO1v>4gqiDCH<&4iS40Jh&J9ZN0DG7hcIJ3L{DBdDNqZ zr-cW7hiTx?QO2O-h_#{Pf!O-d*sRZ*nJ3?6wSNX1&3TI|RQa3thQW*YGz0wync8Kb zur^5nNghV;79zaB2aD#}`WVnCXzHnqnsNSXRj->KvCW(IfaAvxv!u2*Hyi!Zb~bZY z@<4);UTezA{9}E93W;4y4+3hj`X|?SU%o!UcJM8~C!GG=a8l$v|3>xQzloQI)zt>Rs>v+}1pZXbUSAZ$ z>afH+39C{elz^m9M>m~`kl{joHyhH;bUgHBIGpa1h#1-37-LU`D#hMj!=Dhx!}>aY z%VSfYRVyTf1}Gwfa08k0#M(Q4p>#m-LPiII=zM-a;Ka39RzUjv()xl0iU@G)JmeWW zSGJl33?uh$;jp&&$T)J+yH8x}g^)PWE)S$|?o}NQi-Lsxl|&Fg6@_BqN8!yv)R#Ey zcme|f5>GaeC^H2Q60mNWg_M@?ZtHuiJ}-O07t7 z3+p7etX7w{i`KeYH{8d3?m+2+C3nrKtk8vMDvHqHFm4YyoWUAk!C|?C4i}_5|6vRx zsWNP39jxC^3}~rTKXdH2aXTk$H0fBEVbDwo47H+h7|iv5gWbo2|Dc%^9aZ|6@`ELf zYngOD?f|_F8^cxxiM5BFUWj z{mhbIlBppb*|gOc@sTDLKQtyWlw-poa{wI%t#zZt5(+(Q>FYv61cb{Pw?4e|flHCX zfp(VmMqbVsveALr_P?*+bhvBS=^}ruDI@<~pEn01R6kTuV(}lng_7Q`WC5SE&a0r+ z*ZmW^pEi(6ZMXPuORu<-G;uBWUPf2_mzrkRl47S%##Si=+qv8Nl1KcbDhdy1!)*@J zj<^P8pl_twwUR9vu{pU1uZ~?DatmV~6!oR*6{8!8#U(sXpCJ}+dmS2zz;fcw@*E+hw5ICe49n!pL;84P( zDCDn}{Zn-hzDn62{S*<*dY&Oym-S6+2lYY_(V_|;DA9N=W`Q=GJFB1?7q@Rv6b<_Z;!F|(pw>8x1`2ygJ`-d#%GB_6C3Wa zcap4q#$$bF*^K15sGO_^^Cl&RuiE|=0YkICNL`@7NKZSHAi8s5Zvmj@0V~xS{=!D)127)_c(XmcCV=W^7xU z=UqD^*FU3QQ%xBh$f^5?mKKY0euGA(l+y2lIUf+|l9t)VkKUFTi&;f=(ITq3LPe)? zcc^t)9dj`t5$2vp8Hf)v&tsg>B;~+LnckZd4`6lMcgw(IG3GU9_&bk%^in-65Yii6 z=yF-f9Lid#K#vwGmnt)xd+-mk?=pzWmg7sd|y>TZjK@G!c%Rocaj*i z)e&pBMWC8Xel-K}Gy?`tpU>z14RB-m zVgccR5{=L(n^?kf#kjkhm<@@=-#*PgpZ;0aJi=Y?b3meP5nMgTX0GIEgF%0^(hFe= zJZMbve3H?I3wh9>;V;jV5prkS&chJewW=8W?qr&^9wx{PC-u_Um=!v3N~InxAi(Z(rM*zHY0D#um$mFK?M zM=80*1DPb{^2w>HjO%7^2sD`BzN*`XTBfy53q+nkIrVoSWSK0J7>C58@R|=v#mmza z>;-HcOa}%BJwYw$NF`%^7YXH!!3Bv z@MwJa@oq0TwXpn@?_%MNdn|*GFPyvE$wI8a&?$EEL@|=>L+je3P8*e+Cse;hc19cV z;5cv5%}%8UBTyJqAjNQh?J7K>WZpoj9&}{|z$(8?(d2)WbE8$P94?}NZyMB1{wo-{ z`KRYUPEL;YkESL{t8DsY)wIb6_)n3>LY_6o@K;HlM9fnya0o1ZW5OO6zJyU+7x7;c z*^F=y1UBkp(B+`IhUXj+EsEe{hR4`bth*Msv7ykWdDiQX)u_K4=`w5G< z1v`&$0ZESz@1<;qQ*b@njqay->I$kJq&bkELn81KPvR2;%~nYoL4o`vsatst?(G>- zcYwFZNvv6KfURMHmWdV!7X0)gwW#k|{zz2Sd(~i7iPZs}Q*R`u=R%`S2KeBV%ep2Bu@|GHhlyQ6g zlc$Z_nLo)HwCCWfR)2)d8NE9p(YqVP45 zF9TU(@If)Np__&&uPR*YBJA*EiLN*dQ>=2Ug%kx@7{EmYez+(d?K29EO5^n)EhKxO zq@orJSq^9CGy517kVGe6=U-y!@h5N?;|L`4u6g8Z30{o$37D-_PEkC#ERdxsLq()h z{Nz!>Y`+t2Yi6rBxT%R?+5A%kcW{=h+N502yAzIy2$J83xAfZ=?5}kW&4qBB5XJT>@IhH<>lm z%te?Yk08~VwSkO6uP9jyF!`gOmXFf|@$d-CL2l^O;6=g~e7YH4-p(-PBA^wQTrA|3 z#pmzhrj&U2+1W5gKM&3#<~~IWGe!?=gdbg$Fcm(|ZD#hUddUS>G{slG zgovCDI;NA;GGEH5MKn zxiC?R|5z}C4hD@{wYkDjUTwCH%G*hjE_9D=?b6DkWmkJJ;ngxJJrW=gk`h>@;J)B> zaFRjFHSjyv9Ph#r42nT3UVugkGHJZ-w1;%-91OUV?XqErv%92~{O5SUIC-{{#}Cf- zV_mRGI7nrP!sgp$p2w;#zgZvp|VY{3grk7N|Wg@5HM zR_XvLMY#7G2pb<@AszR72q&&SDj7cuU%U*{l&l-+P^T)@1b^|4qO5BV)1=;a?iuXz8U->H1A-Ncl-P2E|aWMSdiq9~f0ig546(yyU76aeW%C$z0*pN(>0r#9(3Prd;$fH0g zj~9Mi?xScTy0&xw95+1)lN?#3g*}4YYoj=|mv`S+LV8Kex$P!&({Dmo#`b|yp9dHcq+$ynmOA9;ej54c3CDo$ESB8;aQ!zz$KEcx5Ek=2l4Ar<&cFB&ia z?QUz%EK)*YZz)s0RSkoWa7X@CZpYM2Sqs`c)&>3DZI6VVHt^EL9K#6{eeWafdyDDe zFfT5i(;VRE%QY2zP^^}p-~a{3lwuiVmBH7Rn=P11Po)zQ(TFs&Pgc@1|DixhW_pXS zAn@MUlUw$9(B;SQ!WJ?oCweF>N|j7_kNG31Qm;UQ+tV{^p#hWn%7}5wiHrA4IoZAHCq~;Rs!63+gVw8; ztw$G6_q82VB8He|^b07|5=od8(nb08dN-idY7;E&-KvyExnhNyV`}!6eDP(S-)oXD zbTF7a+AI|hzW(poA!HE+fp|VJuO#I%mA7wMRA1(YKusAC6ypcPjjSiB1Q!NEKtPri z;|+DlyO4Ofm$BxC-J-1V&w8gjp%bej->g(<^ZswV4*QFl135wMGQp(nS-NlYOJSQ6 z)JrzrFF!=>X7O`|*{Wy8uqE$Yn(0C#%0_3Fn#d_qvm^dBErn}8X|JO>CS^o=t?BJl zckKoQSC9?A5xNLA^6RrNRil)dRO;4zy7pi=(Lqr?l95LD`vXayn!8mg{B~cy2)L30 z5k!r{EC5|ibmEJJgcwk4$j?joXSKZDsw!*)AlxEP{|Y#n$YT4at(pc|z_HZ+iQIDH zDpxGG@1wX7^!MBBWAo)9{}kta7|Uouu@{Zr5;UM#M#(HB8xD>|VRj}ZnPkfARKC(6 zsK@u={^+p;@Pj@ugE6+ryD*~c7Qiv?%#(higeMpmaS6{EX(~4HuXt*}jO$dE7d_-j zDU-jQuD_MSG0t-;cvO4ZsLCJ->EJuU8JK94${$lJBAAee%c1<<#IKoM^5Hl6TH9v( z<6dcTl*2x|E#wc#R#|<;^H*Yfufw~;{a$JUA7`%w)`G$?=$QK4e_yy>r2OKa9O?4z z|FRUe(Le6dX!BGqJ!c^Qnud=Rm=~eciw*M?Q&k2d$l>!i=htnTOh~Ub&k5^j;()kg z6mQUHJ)&$Y=d?2bdOgIU_s37AN)2z)q`-TD1Oh0CIc)Tzmdk%EBqQIeVEfcbPEFCQCXXn@k znLg`3WUmjtzKHOD^s7W5)Vli12Ot|`<{P6!#u+0RVnnl|1H;a~l;Cu9nd5+3ez28H zyuU5M_kEmPwU<4(BJE zz4c9o?B!2+w}=Fpiuy&L<-1JdB6lHmC5ajstA?O3=5rEUxM<|y) zkEbIAL>=$+J*uhlQi*S=uq}sIdKHq74kt;{hJJfQ3sJM}bpKv$kxb6`c_5#&*HO+w zc8X>h*!UgU%DY*_F-b3< z4;+8>F6y%?Zvi}%HL~J(Q->Hi7$^th+Fs{Zc`lLe$}!>?SBT*_r2R)mvRYAHSy|cJ z$nHL$n!NvAx{FTY7Mz9|1Hz8QjMRpx8@zuyxOpf(Q=b_sZ z>P;_F`p;_ltnmPQnNM6qUK;en_#H+bccwa1?p&uJVpPI1mc3WvQ7X;q&eH!~p1qAu z0v{ItYrJbdYKDTQaQ(|zwpeyvSMu!4KqlJeXl#&gbGWpp>dM|gFiS?G?4z_s@9Duk z)VhlG&-r9Zc<2loa!r%*$=DG~ZKkiaVNVWUJ1m(OO22tZ#$rgveg%(o&`f`&W-@vr zS6p~UBPOg9lJ^ZJVJh(Pj5Qu&hT!=4+AqaT_k*$A+XiDf5i_DQ)zmLloK+4>hyfP( z<0F;Fh}s59>etQjg5P!&HR=oRS}n(T!_)07CW&Bn3SJBOz-up!pt3}s5UzR$45y>( zd?e-Y#^NclMM#XBeRaZvcfjt2vmM^x0bc1cWxD1lmDD zV;NV8atYyDbQsPc79tq$^N6rFM6g3Q`h7-VgMoug9*k4NW24Jv=XhSq88dVLwf(o^ zAeD?5)#j!OjTC1Y_Sn`s#5caLHj2yUjXqn%jh4DGf_xshF^=yI?pB0wuPG;Gj4Ts; zacf_j<-R$VI*fOka^NO@P-oBa%m|hEf<;q7<&Sd}RV<5MqH>jk=4tYI#xzZrbW2#n zZuLj<)jds^82IDf=&?TqZ#36PAw(-k8u;mmInUokA0io%HQT#CycWc8J6?s|_pSeX zGVNYsEW!W@E#?VFGy+UPb*&o;}!nyipYzy%#;TV zv4aVQzd@`>ItB)^9D1T=mT~K%d=V$}*KfsvS5XV|sk6y{&u7yo0;IGT=IyD=l%ueN zrs9_vW#-*cPDx{q>72l%8Sg|$inIR39QRu&Yce&c*~v8@NJPUGgk`^)b+5bY$iPmq z7O>c|*VMqFTYCIT#p&jTG0o5MaAU?XI?0ME@?U5sO&E3uejKXC-@oUv zfd!c~J2jB>$@HkhM^c#kP2dJ}XA%$gQS4R1(2xdMZOfntjnh|VWcNH%^(AnO0&$2U zjT@vkQRSgsZMWYag-xw-u$bm}My~|KA!cHxg)~Rl3)oef`Zc9pNy)Ks4;A zl#oD`6qNAP(9q2oX4Irk?|MJsU90Y9%Q$Egy}hBXr3~Gj6d1;=XJo}R7))X~1-0^6 zga3$3CTO=nfw46nV}{o>^hXB}dTHo&SYa+Ot4!0fi&D@mG4*7cZS)q#^ma zVqAmuY)QP!^BhiZ=+zy3YK_G_(~Lze!as?(w0mi*%{+5@{ZR6imikwEP;8py<}1WA zP^?(;q?ql0G4+Q}enurj3y)ZmEl}mPi2+cO*^FNj_*_hD>iV`k_4QVdUwFX6d8}gh zZRg!?LJ6ot$h#C3_H8UA5~ac*``dd5*b;M6(XW9#$wvnp1h$WT1;B8c8nOv46P}_- zR@s*V>h*hx`ZEmQBAv)=o~go-Sj!n1O62rK5v$!;U|4Iy%%svJIl-= zwrTC7D<1VX#p5;u1Zv(`cb%)l>=$H`u&z*wYQf3YZWHV@CXeiswe;ivb{p}M{kC9k z>Iv5Uhackm%x;mJhU>l*zpINtLhAA|2jtr~?zj*9vza0Y!H@9|x_r6Sm7f}1T@;NA zPV3b`(IYCSqG6r7wA7jP;69<6M9@%>kATNOuWQ(@{vTvpA;lcu;SLM7d@ zzSlKPzzclp8-g{&yDL+v%E~O_b7B4fZc)MGSGRMzR82Wy3~PLiTkVOedcv<(VXjtb z*6`Gq(eYDL_v@eDMxpSbgFct z2uP<=lG5FyLxBO(g7@I(`@8qg%ilbc zs;s~LlJ?M)#eDqUyo{|0Odm(~zJwswvbA8%FchYJ@0P&-^da8wW|WYYbY2 zMM)knKJvt?G!l$1{rvc1lz)_$qE!8q`5uLm!^e9Tw>|AHYQj7(t2Bq{S@k1qH7Zkr z*s&cqb>;II1b8PrKXKR@e_dsm=)E?xf_p_;@9~ z$Dg}fz(A48-xV*uLc1vt_9_z!?na|uymXKI`Ruw7Am{Z50&%pI#ni? zW-Bec#8cU6j-Q8{Mz2X>TyfoF-)y=t{ zV&V`c{QBjDExeQ-969k|`7hAAU(?pFivSt3CO_yQo6TXOo41c=u%m;ip=Hr1sVfX> zlt*O_8|ZBi^mP4?OeR#le7vx*g1E39p(E0W^{W*TeC_(r z{MdijkgMEkZ-ZR;{E^GPWQ@PmLU%PJK$ZU5YR~Zi8gvoE+bRq++hvVV)0s%`jIgZ;7nw+@peA^WJp)g#?QyzgC*QESvHd-U}K9N4SC zH~Szh;9NWLpfp8Y^O7YNK7WppCLV6g+?AV^5Al)NTbP|ZjK6xgEdJQ>d6OrZ{enVX zF(NXqD_@AdSC7sP{}Taw;pZm~j-P7P_+68k)$kcK*%QU(ZL+=;@Bii=d-(_2L0!TpBPF;&xTxS z4zW#Gnu!yNdVl1NJy0$EN(sGYQ6fKbuNv;J6GN9icw~Y4{{LklNi+Ne`CvO{Fq55L zOtCJ?<7bZ3fR5$W2H6uf}1~kly1(ClARXf@iK-ti=bbq)QHYB>?%^)r+Ft5pf$v zwUlDTGz5f6HQ+FJAI)uY(__6QwWP5?^RGssOe^n(mCHltgLUG%jn}QY^acH_% z(`DL>oLW1d`u`$-2AHuT=-ff+a5gj&LI#D!vJ@O`?>Nt1Up%_Y55q-_(ZE$@fbAX! z+wY*-AVijJy#+!Z7bA9cYxO6@KoTiX+^o;~ubmR30EyzSDFEHu1K zUt4>69?%^{nv|NlnWm<$?)J31zPIZ&<%(V;I??t|5`(Bl2x-gxdaUVF(zI)|s|ITx!KQ@Ti3WSrhj$wnAl94gn z+uJi=R#8`fW9G3xUpL(K3J^+{;kIT}5N?MIl6d7^IKQ?eS)F~i=P_;wEK~zA;-l=q zPgDsZr{pJ;a0aKHKVddEDcn;ZmwJ}2H)HD-Y=_d?+>BXlY!05h6ANfG7xXXxt&3LG za4qdjqcBclf7H)5z1r2TC;+*e4&NQ^Lrn}Qq@0KukS0|1I#}fCjc0mI{{z@EgXBAT zK%E|dbO40*WNXOXl7vhL(CXiTvzO65jgkch#DLMtEG{An93SSI74TFJg#pL%c*kCb z&r|rqe)F@Z%trW(QGZ1zE79X{n}ZY~x8ZJ5;XsA2h1`K(zDG$YH;@raqCtbw0&ibz zYU>liwb>GefF;6RJ8y3pY>$4zb1bRKE(;JT2A2S{@IuUJ|Le0R5`t_JH)&9;S~6$T zAt*lJ=IXm35(FVdMp3 zCfHKT>(_|RYRw?kUm=iEdAAqrKgckkH-)_ddq<-YJuY&~aneND3>6;}W3S`;^*^2U z7w?C=<>u->j~_{#d**I4z2nrsJE7&nxjGhA9{Hgw+`jX)zetFX@sIS6^zg4w-btUBg5ucI>Gi((&)`S=A<3!TJE#9pi39uM zy<9&1?~DRTVZ%GYUfrIvUKW-ak=zmbk_@-Xt(D?7(MP zt#xIHv-Iiy(pJ7E*DacNLgn#q>1MU`JiNzs*lwCaXcD6fr>_16ln7k|Vz=F!9Ymb9gR>-7JoQyg{FgwoL<4nyXM=eEaHpbh zu8M?|-LYVk&#hAb-aEdV@w%q+vun~9{2EmN`)X0mkW1C3#m`N~)v9-c2^b2%oef_A zM^_O0safy^CKSXz9yOgsd!yRSvtBiM&(C15)@BgHJ7Ckr+tD59m?~3DE^mM(?WNmX z`PjUPvFdo;CEw~hETX}v`he)dw1?c7XxILaUlucqZj*r9w!cy_wfx`w!XQ^8D6$ir zsav$1#Wv-6{O66u@y^=)>V4g&xbI2q652y)z^ZRBQ^=)1mDCz?!WTq zI6j`2t#&xHeEnjc{tm6u`{@7}T|+_MaHf8`}v077QkI zs^bo922>M3<%EOZO^;N1Pd4#P1q*H-Pmhmpn>tl}iYRMs{i2oeIWz8) zUd8$sKJykcOH(sufzK-?&%PA)7v|Brt^XnwcI;-}O-*8-H!?2lMqX@aR>)(hOL?CZN)lXq1ML!B>f8sbW~$j_vxUOnVH#Pgo7o4fVBS=1dK7$@a=EK zWu5e2hWRp)Jd8?;H~}fCImUuR?vgS#YwsR0R4NnCU^Razcb*n}XJYcz!fW8sko>)S zGznM(xvtUt^0kIC_@9zJuRm=j7PZ)HRw(L~h@(2cU~UxCnh1;YD&p)S`QG=fYKzJS zdK6uIw**6|AA3}Kz~tVO&(P~#?eckz+ClHIjOk=vKmHeN=sX zu4F>;07klmIvbmyFoG<+BatRK2qUrCb0Vhlo!hTjp_wM)1rQ=g*yn8U#}AM9AeR3E zV3acU8aBLdJGYWpSjJ=2*I%DYUW>w_zQx>f-p_!ld`UpLXj8Z~@Qt~Mcfw*hYOKZV zO(B=#ASL5(tyscYVDCXiEfo6qi6AwfF>?&neK#D&3;SI>Cbsxj-}}z@7mSXNk8OVM zjJeRkk*+P-G>A~?ZvacE+HF&PCRQLD2ei|AGMo%lQ>xzrZZbO_ko(_3dFvYhPWW7# zZ-bd9P{RrPUwOO}cYeRIy)Dtw1ZWcsx{t_mwRr8jonjbsYQ1MSvhuGBg$DKg_f~u< zMJxtI%2h>7PLNLX#Mk@gI<< zb$$N*Uz9R7V1@xRVylh?(s3I-XZ#Pjs8@}xhV>LiKpu?QY^qaEx+f+qEn?x4k;s

l=H9Sa>_7G1lD4*cC0FpWo{Xn-&2VNDyf$!m4_1|3dp~dUqN+ctDqq&WcjBhEng6J5!-1%V@YjUC zp5C~H6_bZ3m981!e${1_uulvF6qy_T?CJzc^Gt?phrqGlO6RNiJ`lVG9#gLEu%q1&}^KO7j2I z{*USb$Ng;Xvs-iwDA~=mcUg6uIRL>?s0_gu8W~FbST>1XHQhSVRYUFZXTFuk_n`Oh zC)|e&Y$82XUEYZ!_+b+&oVG=dOt4*P_0QU2#*_8fq8nsKue&#R{CZPejL<;!m1uQ) zoX+oup@}+TR`UQD{KV|&=LyXH*s81S!g{OxLoe<$F$ktE*hlgdBbyT-*&*I1TVi2O z?`4kdGmZvpmC_J6tITl1pkAQ0GWS=zy?b2yxslSDWxdai*1iuf9Bm})3;^s&i^r0; zcNVnaFZ)jHEBMSCbwLeNpNs~V+k7pA@1c&01pL(^piC~X_^q&-L!fNTo!}+;gd%k| z!>vQpF6b5Pzi418OHigK?(?s7n%b(hc5WKCkn@xOnkms-X;b(jj%~d%Y}|gn^rte+@JB8bIv#f`tHF+7?qGn_~c>$9qTT zBk--A%nv1)*9lk%bNMq#0o0APtNjgH|C&=*I_x!|_IYLU_r)hb;`!N>ytnf;>Aqk& zBHOI~G0wSm`fe9aUu?~>t%D_#8quhpUW)>>gxlFZa&ML$Gk(IH!%nh=2aQrF_&z}W z?Lt}NlJn!(haTR$j;aZe^EM|)zSH~~;+*pU*l=zO&J9hYkoGkK%fyc#?`^Ym)O3Eu z!24>K1GF_Y4>~DDZ8?O<4`U!Sn9$1Nw*R(3xA@(}NF^|D;x{fmOi=)&u*z(-uKGCZ z*Zt1`G=pluZ6D^pP=P6YUqF#RJK?^2FJWRHrtfaht5eMOCP4xi^jPM{`dG1%sRruk zawO0)!ycwitn7h7hIVVc+WT~TM{*f~oM7OP-RnPLo+KfH0iARz(D!;@?>AT&=a-hM zUc|K$L78f`^Q4>rS+dcOVI&aH+Vz+qI!cb~Zcy2qY{ILBit)bR3H^`)FP; z^YH7{B&DCfTc&{0dOS8(Oz4;xQPX(Zp?TgMoIkvf;O?&Q!M6t~p;dEHIC_ zy?{53c<2bF&^5Y#bP@me0t#Uq1FhS z2oMB&7TVqwFa0TWV&+`@%}84_KYP*MJ~Ci})THW*s+aQ$k1Sb1M}x}$X#xDSneJn8 zTW(|#_O&T4EJ@JIWudx()PtB@)-6({C4Ei>kwNZmwNp7;aKIWJM$jIb8MEU@@Uc^= zX5!B3OF`ctH^deP=oqi6ayj|{5w_)ols870l9#~KIZzM*Xb# zyMARam)sFvgO&n+7?Q84_Ve&p=iYx2JdF~4ZbL^gdJ6XT3!6OBzP_%P&>8c}-~3$P zv1lJtx?VAAkXDH{!kW^T7bpr+te!8benU6s+o*8h+oGCn+-8+Dh;I{eHuvhpJK4tc z7C|diDzQlRuJv_S+f~+uz})j09!7i^jX#6W*p7=W`2~XKDsJdQ%A-W@P`hTD$nB$EZV;IJIOw)TB?Yq=c;HR#)htBrv1S$-r3OZ zqq3Lu*h%-p)_vua_U^9&!e{e4r$g zip!nD8G7_0O})hYS7_ll6u_|&`M*d&sxz@7wacaUqY1i~{~K-r;?LSZwa3L8=&#ET zhUGJcH38FQa6Zwq%?$DMrK;RZxv)63fv#WRNbc~qUOjXzZH**g4^J3(XQCKSjUM`RNETonGrmxgvRs(i)q zWzkRc6ai=);cjAK+shi5mfaMNw?t&H3M3TLlS7UmjK^z# z0#=3pB~id&R=w(;kgqIq-yZhN25`(cqJ-lQXTuEng20$n7}8;ycXAR*IuWQ8_MRSs(Fglfc2t?Ffbx(AgVtH)V)0hh`UF>zh(yN9l@W7Uz5J?{O=kI zq5Qkw(RnXO<@4>7IdODt2$9Zx(2sNBFo?d~1IVG?LL z5VHaHOPq(NfPAngEc(tz4^D*OXh!WnArbR=Xv;^AA36ZUq2W#Ey8_cG+56XPK+LD2 zj*zWq{7+iNj6m}a>*dwVH~!!1>h_UeOy}v~G#&?lyv9t+UK7RW9x$oEM1r1+t1{S4 z-&LU9`QR*axGMYSSExrNT`e5k_dzhVpvVYQP(0oKeWx5BncJqPEv?OEh-rW-_3pi@ zPhN!amR4W#pWrqQ3uoG$d=_k3vH5&urpB%?i&~|l$m>PQzaI9b;S9t{8b`u{!o0ci zeOLwR`o?f-zh0Cbk`L`MYPJh#KQXc^4O`Sp%3rU3d7fHYB2?zEyFed?ehQ=M90ZCC6y2xg*CLr49ZeXTnEYf)gNe3@lI z<6aSG0)M(D-Mw_JzE`7Tm1fl;_-4!!SU*Z3&^m#y9-bFFxgu=*0g|h%wuv1Ct>D#RWfwM(|k zfa@m{PyBOSII`Q&bhqkoYv5$$fxv^Sv3PT``%*l=ZNXK!OER=o6-_s@=l=qUM=dxD z3TIsk3&$%fjRi@B;4^yAq?KAHy_wJ5@|qlQuiR5SG^4laT@~)9nYG#)e$P%FJDg6){b$Tsd)Tu}F5;aY|l6}(z_uE*Tz%ZWA}-3u!& z597j(BzccPe9(HL-LzZ$!CZq96s(YaCsbx02g$=t8yXpT-Ig?tA5mxkg<0CPcWx)4 z8A%ixS!HAv>VjAx-y0mFaiCY%$V1wiLK_ z+FxBM=vyCK*>nE6Q_l{j@fnrC`|LUzFOB*9|Lu6CnUEx!(S$E6Gf=Gz@|zHxHlyQ& z{B^PF$JhJD=qm@4kFa>teX#$e;6ByOB9E}xr<}JtCFjq=sodnrJYdVj7}DlXd0-Sb zJ0xL74O4x>PTyiuYXJH0>&0#JWTUr@OrOFt2|D>|rLA$j$>fE;hCM_RqYDq)h%?y~ zpc`Q%bk@vL?^o8anLXqyOKYAFNpBh?^_dzQ&w@lZG%vD`LFrr4BrO25i>`fLGgfx# z8|K5`&=8}@PVv5H7+-N4NDSX-XMe}61$xAiuBF#2`&YaeZ-Qd)YWiTvePrwTb_!;l zz`q&m&IZ1RIGQe0BMX(>QINbzZJT9d{rM>eX&1OZR;CMIK0DI z)3Z4+b;70Q#ne{v^MVfnz+YD3u(!SWJjKLtL@X|n1c{*;M5314UlFYG!Q!J_hJQ(#=Ji{NWvotNcGvNN za4J#u_ep%}69=T5xk=9+{!kNK=0w*_gA%e8tVud(%L#Id5OXS46(R`dPG zNPzQpH_Eaz%B=xFbmGB9?!Vc~^k0Un7I{$^BFhcaTpn-}7#=2KM#ej?r{(^jl`-zM zp=Fkf=khW{YdoX$&dNB1DC>^CS ziD*cAn1xb{>u5aT^kHy60&+r`QzXDI6>y4y6SR^90pwp@=vizpc82v|K1GX*4$;R! zTtVPN!i7Ru5JBz<;6~HzL*|lqDTu&^gSbFs+0<#+1{u)YgqhWJj>Hry$-4>3$yboR zQ`i5^NZRK>@jEI##Ru8!3DdhbvX4FtfnlD}7*gi6DVx3n8&jv)$DIocMMmc?Ne>!x z%w^p(yeOuPs(m>%Ks&kEgtw&aU0Ec@GC|N|{j5O6Z+0*#n1doiG|AJKA347uADUTh zdlA(M9^iwHN*>(w(;D!LzUA#N3R46@5gpWUJP?7FV<4b&(Ub|z{v%Yy7kM7S6=2$( zK%pK(4hohN1~CwdNijIh=&w1}p4Jp`v;qX=B;EDF45*lAARnad)4xc6 z)rUn=_gC4!*8GPmF26Urj0(2kvSXXCI_al=dEi}CN!(Byf#{r4Pr%s*g<5Y@)_7K zAuL?SG8r%bH(Gj}ThP(hKb&}QnU!-l5~bgK)|6R zSXd~G7v_Q&zxmW@!oSMW5XPMfp*D09=;Z^cHtaxzNG?A)tYtDXkvR#xcQC{(G)O+# zY?|#`sGI_bgiv-63W*P0ePhtAN!*E6Ek^Dw5|18w=G4#M71p{v<5S z6wb;(-wWQU(g6{*qb+)pYZNS`B1D4orl*(E{@X>fQSQ*7+aaVpV+fL)>?Tq)^Pdic zt8`doglb4Ig-LaRlI5HM`w0I6e=22a(iE3+MUIR*e|8dAs4u&kk6V(9mF(())lJ;5 z&073gV9t9OB+t?C6tE~d=!bRTgAxKey044hazCUgh~EyiKJ52JXJbI207sC2v6FPI zOcK!Y64_uc1OpQwX%O}TTVe2dkSmcj9cK=5K-?HdGM9SNVxBC#l`t-^?COgjz~?2) z#`Q7%P9JLbJ(RL{_!Z!uOli%c@F*;(H8SEfn0ODrD&d0y47W-t4$qol%jCa`ZJKh2 z8yz*x17;wlh;D!QdlB%6i!d4J!r&p|7!(;i@8fkm>x*#qEwVbd0Y+;{CtTb8zez)j zKFB3=wuFuMF}t=$rcU#W0{T%0LiJ;n2cfq|t5|<8Ju1y}#}?LP5$)ae`2;6HM7g1O z8ECZ}Bpa^3D0OkvvdVAqk>72V$$`!;{_TW^#0Uk(f{sw1wNpv*cn$aKFL!e#U>)g% z?;(nO!o$jweO0_Ho>dsV^%`}B%N15wYHFk6oe#g=yy zWAY~)bD$I9<@^Co@e%>1T5<54|&`7owgZ=|?=;Be6L-(^MFV*j}r@eMpW zSWD%6mF>&)eI>@sS0{ElwAb?BBS5uJed*yg+TnQf14l=hol>l{-gc?up11S)D{tFN zuemSVL2=^r3El<578+^t{+^mu2cmDHE+ox)DS_=x!D*3Vd%@|{7mk151#Ce>!23in zM5G--ZdWicPt58fG;%dUlfp^MDhT=$-_V&<*BE4*2I_iIF{I`C6mQ23BwQBY4E!0J z|E!>nNIGRngOiMg%BdY8l}LJ>du}ry0;H-5T$`HzeZjnCFfjzGz(W%08_NJ)ui_R{ zYFAv%D{NJt-sef9o@PqmGGt5u(0u)azwS#64JFeywXuI|IGbBFobs$S(wmO;pu%ZX zLUB~vUN0m8NR0bs&rbfg!kt$RKEr`#(v895ab3|wp!}2H&fGtcKx3C52j{ImfAY?Y ztlq?Oq0wr2)=Q~p&zMi-q3xjOM2+oayURFN)3QWn8X~y2FKJ4iLIjL^c8VHoH_uq-+#AjL-^p6? zXG`nx(~0Ot{2n*VsK|jbV?OCPe*|UdVeDJl19G)PnUnngKDu5nm#w`ZTc~z`S@n0J z1vj^-{og`jxCfGI&eFpm?d5`i4&Pkv`j?d5HTfn(NKlLGfGh2XIgP6wW>=)v4xKER z;Z|&~;A@?m4*)jOu1vgdeOF`v`0pP4Of58XtwMZ3osXtiM}mRD3_y$vKknJOskVQX zScv1%cOCq~?fctAVMmX&--l_OJnSiZ$NWVp5(oOSeo8{P?&Y=R0P<+?YS#RJSL>yl z+tm?T72-2LBI6lPKJ~OG-{PB~wL31SKg`)2u`gVy!?L&f{ zjvsnu-gIWfDgAp{-;W0t%xo8Kh1K@6SWbF~6X~CCsk$7p@8(ok7l@v_1hBs1IRqVuMG$9Ltw*FRS%=kxNkCNV_k+7|o9pXsA=>R-`tT{77HUVdzRBC{w_vt6Tt^JDV zJGt_2i^73n3My8+pYV!Sb0h3PP>Y$^e!Z2{7WY?^ijgu*TfZd>2FKgi-)`(>gwxW# zzJu9-M7-p+wd3fs>Ytqjc%6Zrgi2TLGkII;qra62A9-S zUL$ot6VDdFa{)~`7hrxkG)Lv{?S%i$zlUhKA z9A2MT1YlBco{9i5CRd+#loUm(hb}FH#Is|^2L%vE?iF4be{OASQ91~8PyaP}D|3(6 zapQ_7baU-U(PjN5-H{)iUZzqOl>L6HpDzV#Ub9MJBlJZPmO@od6gyuS}z* zpJU_(Gpzv?#RedSmw4Z-z7H6pZ2BMi=J*~TE*M2xyBPeD4&xjc7+Ab|y9bCq>QEQA z8}|<2HZTxO+|5ghft~B?#dJ%bvO5RO4wZtghWNYHZx?>81Tw5^Z;p9{O`e67!L^Cb z+F9G|F?GsR3-ODFo$HN$$`*4PPTqpbMRCVcVsJXojZd+fn;v2&HVAUx^{3hD!=27x z6)Z{P9t`}!9(2>r&PRHrNA23sugbzgrL)5ofx9)M(|oNOumRmD225nt<6*Ly)NDSF z70APEmVJKSpKEe2@g4C)gfe+Nd>B#X0{q1+C+#?A@1F;$0621|g?g>KZ5>2EnM)_l zq~>{l3XlG<*QwLryC@ccU(199VZIlks(6el{R~aE*DDndzyA?;a5%}qq{^Y8e9@3w z8JJMcW@5M2^2$1wmsZ$ z4htM#0mjg+fGBFU!_>X>g`@2ARu#Z@aJ!Xy3@laa<|-l$lu(Plhi&{D3L(3j=~n!AU5<=g`@p{`+*j~EHmn__ zpQWIpTC$;=>X=BTu9;q^EWL44QE>d@O;)vI;1@#mvNR1&XzI`HxYUleW{tyI3dlXK z$;XAR7KJl`nAVeBk>_55y$bhFuWFA0aBQkV-OSTJ7k(~X!U!}|GgbFuZnZMV=VJl=1g(}G-=ysk#@)K+P>Q!z5|@z6Wcce^Og zwIk-gp@D{`caT=cRELsHdpUJ`Yryk~|J(Yp!M=Dz$jHqJITVbQWc$c}LBTKLLvCu0r8`XhnO-rMFL%aNQb(a-i&ZAfcGXka^VR$2iwoldEZ_u^2 z&VvI&`@JpoK0F$`XVO%nlx+;WMpJ?sK8FXw&fSR1zRND#&Rm#qsc+I` zgx;h`QmG|$f2o$`3ntB@3tV|RX>YVW;5azizZsS(Tw~4S>s}31R9rvD@^Wx_Mqhq^ z8E`^B^BUVa>`ogpWTxPY9asRgoOq`u8-NaFl8i_Ey}jA|WOeh=-0$c+e=i%I!45$v zl`tQ){LYpz35ZK$rw}sURs8o<6P=M*rf^yNPzhX}1hLBfQH?3D=lHcvckhP5BuDz* zO0Hb_)ICwBg+K$Uin#)RuV1NkzHe+B#ouL#h-#C0%aHm~5zPFtzz;pO+BmGF@NT-*(7-_QnU07-y)rA; zkhaiMMj|E#@;pkyJzx}IwjG^25_fsB-7?J=8y{&Y+wgLQA6P7W1Jp$?qcsq1JNYpi zfM@gTCg={8g*|QO8Q@bIa0&b__8D{c*bnI9TBB?%1Rx=>-J>&hx|Z=Sej2f|i@(%E z{^kyfvKALgLV?1tA1nBDM~{!P!2aWZlPms$gA@kk|K?gy68G(_tRD4*ZSo*WwG**-57dfp>c?hQ2adxW~#c%d*ahkOAD#E_p9#}M6a*rIu zdP8sJl0htE-jBmxMB^Ioo ze(>w{G2byqBXHH;j-f&mu?&sVZB(o-9=XEX$*#}W-+)8`cSM(`*A#KF3Xmt7leDgD zH1??qk{cZmrW9at*tacrE;aLl=G5N26vB*w`~%!*s;dSNtNj;Yz)hqlrbT)bZw?3< z+wC|yklf?3_yB{Yw_Q2|5GmVD!+>BM`|elku}95ru(2K{k;+P&RauVaARewC#-Q5DwJK281MZBF=SEC&L`HIH$q^3KborCVwHS zBf)Ke^;EEHI-^!;U*b6YFa6xNzc!U6M!8Gvp$wR&93%x?q)EcSwk1w^E!Ei@g*5%g|{%dz3;>H*(~*Ndm>MjJG0 zP(ip>%`za=9iGOLZtfN>k|7t^{(4Wj?TwvPn`KdxN#NZ6p-gSF&_Fx`Hi$g}P--J&5g zsnV8&D1bRfPu+@b4~QAwXx%CCO0R1VrdRs!J66C5;pZ*{z1TDfeFNS&{6W|#g4j_{ zz}n;hKGuojJR15eFQC?7)z2MR#vH*M1wzb75zJBajcmVo&rAl1~q z^Cb|@Kx0+kRo~B)yUVlCi5P!GSxKn<5JNAB0fb-BWH$oK3&*u&*z11fx1-49mK(O( z-GyLfZ*zJ28-pA!;S}#jSTE}^$!!FEd+(Au2!aTfSTkF>O4G=6x)+EM1V+J;PikKb zjgujPT?{ym(b#1A$&BmzXx247c^+#k4EaWK#_G=+HOGSoe+y5R^emjS?~c42 z_MgKKzE`^n_e(-l!sLF7S3Ik{0yI3f5c1YFjj?c*e#9axbm}TsU5Rm2>bgiJ)G#7J<^9m zDJZc+qn%vnA?qRuxlPWyNCl^8oP&hh>K=z5>?i8?OtAzJk z9Oje*Y33UN`E@b1&dXZCr!;?*W2pK8kK?^oLb(6LF(zhgqRk489{}C`9`$81`R1g+ zdeYc56+{#Su_V2keG(W1iAZg}e%78z4L^ok>~3VX?854{iXv+`2zU z@qr#V^gC;_AC8fzXb^lB0z_n2zdIk=rRLac+@tFk`=8F802tQj6cchI)2%#+MfPLT z2aG2eu)7U>6EBGU1pSo6;b_h1;2$1)2^2 z2go>NfFojj(70neh!sqj&&XDt;o%Uan7p^kCb756cf+}_8oplIT1oH7RqQjAlhu2- z)SJcAzkf@l$;T!bO)4#D-ua|G-_-2;+G{HMu&sd}d7-4(iUp@kP7j&^z3lqju)LSV zD%9DIjT8Aw9Z9y;pT>3F+6v!h>^SMr7mZ+4R0Lq!-|tKfBr5PCcJ4%~4_?1zYDaYF zu6terrPwy17&Y}O;ae)4BwL~3$!P75Xu~J7awqRbBn7|`@0?#TY#3F^D&W4&esk2@ zc-(b4VDxqEm>9&}j)i^#W-gVvq+sA$hSuYGT^Bpi zp@DwD`qQ1!27`m|{0@mI|5jpggA@b{qqCn2ezab81#Fkx1VOlHQ6d^rI_sP;+gaiW zlF=j2bz|c+CVbcKYQn7^-`vQ90iitxE=vkH$0UJ{syo{!uqc8`HUX^6t~I_f6`DLV z^6e`<8g$j#TkyF(^bbQ^>Xlo0Se0bM4i++(bUW#CW3~0X?a-4>DE<_kf-37!3^BsZ zdN1Q8O}Y-R)@jvTxg37IC>?h2Pv+0*9(ouUH@0JdLHR6{udSvl!D{opMu?9T3SI{? ztS>*WaKwmH4m2yACOK3Vx<4dJ^4(5I3RIP9#B|gnV~ilXLT9^E6iq#&~Rg8|Z6y#xV1E`zXh>g=4VV$)uid zFsYS2E=!Vkj#Dg{C77-r?64IM;ePWiC?6ljgUrK+A-96*O3S=y-@LDS?(jT=kcE$h zo#mBN@AbX8X$P~UI>)a$?$>=rjB1IoXrc3Y02(SZt(HBwPnyNOp4r*kKpnMqk!)ZX6kFf)wGS6iVCUn;E9xt|Ylp>=WYTJHS2yz2t%& z0tOqevEEPzUzk-fY>$Uwp$PF;`y4r$VFT*Y9M=Q2eVu(NoU*ctXT5B8``@g*2aE4H zI%^CXUiWgHFFdmtnl`a2`@Jio=eA?@4h|2QE=WK|h4+n#E(+MozM=lcckZMW1sP+r zhogs>Ww_KTnF)5u#9)9u#yJ>+xjV^3cs|mDg;2x+&J4qayP2RIN!@JEL%-x-Vzj8PjdIIZGgC;`K7|EyyXpwXJ=N}* zJ9EJ=7E~o1dz8>}C%PYuME`1&1jix7NsalB5WGU4R??~*%A+83F;B==vxH-{UwlZY zF9`Hlw3Koi3-~)DayIaR>vPSs5?R*B@okt(gRj}%XUmxHn}SuP9dqWV&TDzoZuao! zqsSc_ejWJa*Yqj*CtA^vdB_j4FrBsZME*o%?hztk9j;n9px2G5ufYzxLt;_0!;}gT zBpKoBvrz&Vg%PwOHFj9sV6q`hPM9d{x3f^J$}bT*ItJcd0q24_7AS6E_#(_6o^}uT zI4Sw{Bht%IzM`XcI}WmVravf1$2;;^k_}9K73=6ru~FocaSSe2ji}CGETx=xoj=pA zX@_v01-UAXcR=xqQ|`h-2O-YcMTM)5Dr9y=i$x1wOjWA~7vX}v4$Ze($EBbKzgB=h z4>`k784W|S%h!YrrNtmq7GilWe-aTc2v|wERJJWR+f^=B*%7~0vS;Zc|2(JUTeA3(GwiPBLt#E<2~}pG4K#o zMm*FUfm33Ce>A%=8e(N1g|S76i~WegUR2N@LA-;>$s|gIYajMtjN^hsX)QP?rjz!* zQeHpSM6c94*Ni1a_w-=$YFuWY+}27mt2kFQ@SVVbjT5uY+vtgBEmWA#+QO$!IYS0V{% z7Dd$MeFmrp`-k@DxicIpaP(1oYX}aQ3Cj=D5}3&~ZP;e$Nz2HDMuUP?*opFTHYS*7 zaEFUXXt8YHI#@ILtE`E94^B!j6&IDt2(%|qkY^{RBm5y2gNNLc$3>INlO*?s>Mnne zf`q(3Vh+ROh=3yunO`Mjb}9r$fvx|9RpfiOQ(&zsBB{yBI)5H+iEKo1bFyZP>Ir%& zl;BxMm@C6y@x|ix;#NlFQm%dY`arvt1RiDN>)YZFSl1AC$2k7)#cCv96QYcY%tR;? zC%vUlz1pP+U^qaftEympjy@Mh9kJdxf9YOr5BD3#q!e zAy7|2hU7@2%gW`o8yJ7;5MlDJ6y(8U#d28fNGY5eY@QyIx4i&^?q0 z3c`>gAu+Tx(nv^ylA^@Wo!{~Oxt_n`IX|C$oqg6`d#!t~wb#0t|H>0a1)?k9NAUZ+ ze;Dp1gHUhu-N-IU)WiJq>P%ctsk6Gi5F&4L_JX*NNxI-b!SCh33(>4Rl!H~s<&WGb zERMg!3d(Z)(24A?2qTA3hkLjuqA^C?q};*^{pdw_M)W7zVTok^VYmh2ZcG%7kFfqm z)|_Ijkhfpg=@L;)tW8m9^EgaJ9;z#Uy+YkB3wyy~y4HNIMZaCf`X3=Pa#h*Fq(`wQ zw4bhGmzD?6?n$R{896{isl2xzk%MKaewXBAlJL~@six^}#)eeji}()Nrob{5x4A;) zrF2?~jLzaN=i7>3aEl4f(zQbN#DT%~S2U||L-G`$=7s+v=|N~-GP@OQ6=|VVm6Aq) z)+yE}6gQ=~hItq#D&bkiHxXJU4G`panR1=$C zqX4RD0YLoOnxqeU%fqX*(f|;4*OdkZR@mcF`MaQgzBr@MdNT5p$JTnR_ZXg1{CHLQ zEde}0I};}6I|o(zM`n^R_443lEEflc=J@Rq2%VIalqU*fZ@cvaHJR8fH* z5Pzorknhh^47Icm>!ja2VPlPdbxg~Sh;#BHaor$bpeYrhdhiD*J4hB_x?dLxP@d7fmMe)E4<3( zhk>5qY8iTIw7OJ15bKkB)0g{beux26IinVN=sP*rM`g57LY1*lyv0>EXqoiQg!Zsn z59bQ9efT5BoS4nTRy%j-g^_rO^V(@*zhJ|4V5u4&C}Y?L#sUnXC$yeUXbJ;86{Y=j z3&R_(2ODD)1A%f8V5$Negz}I=CQla_O{N}GHo>->iBtqYd4jS^`&u2MIsZIn2~sb< zPhZo$7uE)s(A!j`1vNezU=ANEat8)Q2+oOSjVoG#z5=f^*8u4FCj2x)CTn;+A~2a& z^qxclq8~`Al83;fe|U^v6BZR^W4kViezY9P748XJ9?u7bX&~>9Qwymv9EO2X2oBf~ z(c9pyOxu1G;DU!=hP$%B^;#Q;{h50=tkkE#zt0$1{#aOzJpCA1% zt6h;%Jg-O^L8g-j58rcWNk^I%Hj&>XvM&Q^WdTEMkX0i18mwfj>V7tx?ih(KpR@63 zqG#ZRL&MGbSqb*|gzrOTdF`moxD~6cp7Wa-IcG6CQv=I-n66Z|A?*)_d|b1^THwN4 zK_F}x{AmhoIP3$C8U8!Kj&%A+c`vj>6}qy3^dl4jgi+HF0qBtGx5QhPD)4259VjE2 zU~>1|1NyZT723xT;h|%A2?E*eO@{Y-=tj_sxHGe4N&XNF4pqvN?cjj3f|4@@pn4b* zNvncA2WcoPW+;J0n-al*9G)G2p@4}|fOn)S#8)fIL4iO=HaF09<`Xr}(TgI4XD5h~ zY8}V@VBA3}Pp!t##W;a~5O$rH66yk%BkML{*GDMAUjp%$h?tEwAC7*mQZk61Ch6*_ zMS?<^dXoR>+(92)SB+7{rrFU}>i!K0Xd38GNR0pkLh+QOk$MpvLh&m5?B!scN$b-Q z$q1UVxm9bpYy=}y2(g0(6y(4GQUXd6O3VmxsS$Ayp~9K1QVw&S@1vcvvYgguzK3d@cnR6D1Q?J*85{1)Tf{- zO35?nN*PY-h|ZlX5FmVL6C;p>YQ|{Z{iVLimjk@J#KhwD-4Vg!H`a0Go*J2R(K>CT zX<;fyw+CpT!1l6(Xpt|499uVU;UaFLWmQU z(rO3f4KX1RAodZ{D>e<Og?+NWr}eDg&pH#5rDff}BaTqLmN$x0|?=EB}J{5poT zhZw1brULNaW7`^&J8{Tu^Q68E3;n}9BNR3J=DR*>jW$BUOop{jGjOuVoLS_=kw$=& z{5#rn`Pcek2Wxn>=Z!(6A501u(%XB#F)BnvP*i^Nmad+zx_~t^Yu~riCTs&ZGHkFx zQHjscPh)N80wNP-JVyQj9}s(ggb|{oz{P?D+B~82{ef$T<_Hu$+oZT|DkCr zz_s}SQ&d!jIz<{yNZQ57>RIYNC88~=o80MW-W1gHU#;bD?OU)6s_9QkzfSBrF4^VE zPuh%PT``GbQ-l8IuJ5;q5>?-ZAl}{5jZm2vP5yYs4k;p>a7rR_#S4KA?>v6_j}4hh zpYs|Y0X1sbkEULUB_FfAwZfMIs)>?T__2~LM1#;%T`TXzUY&!xl%jMgHv}Ffg|a6H z6OzTM4#PxI{_E-_+hvQ{nKid&X{Yfsy7PBmy*q#Hwz)|+xYzxW^Xd4w{kfs9ex@H5 z@s~l{U`W*D*+dl?H$?eD*>kn}JBp|RznHnp23&J)yu5~d$`?XY_7ci+uD@I!|AplH zhf%(JL=)BYJ@)7Ww05Uf_$J8`)v(-on}XalAT9E8y^k4R)xs96MnfG!Fz&y9#u7_H zlWY&+5K^ICg2&vmxWPtY0EFUyVaCab|}_a+uXp7kcIZ9LDMH{1eIcDb^{Cg zQT3*7MG+nTyi$bO{^dvPD=6{`0)2U&{l;QU!x_m6s2vGT<^$f!|haIx=yGfav!@basnM?x*h>)0s-`7CNf}#8)CI<{%u^@n&Q<@?ziMY^*!d>kR)*R9J-ujb zpX=W^0@-t_50_?CkNNloD=vMhHv{ z2Y71?BL;p_Ap53^)>=DE-fk=5s{D631FvRZFSIzf$d1)@%LTkC z!!8-wo0TaGg{iBgF{GrsehV$|FD?OuB4{a$Zd>FuWBEo<4oziW!v&&Xo=Jcqhj9xybYgjNw*qVH2J3TV4Y*Yt{Yeqo(LJ zxtzeQ_C!hKjffK*)V2+_tjQP?nszv{)jf`LmYhB$J#RH4z$bL0jl;0U5?>wnN)C*s z3OGp3a*6$QY%R;m!7PdnaN3s#dQ1jH^}3i@SBOnHTk3%0HebA@)O|MJ-tM(%9(0u5 z8iHP$XWGWHp4QEAL$)!hxK!rD$?u<9v*NN-ONU6GnH34~+Y|VtBvs*K-sK}YVpa8J zlg|8zk=O971J!&YvV@Cp;oUPiUwH#QUbtRguvGcal3cvJAh&&^`k-2X!0>c>I6mrzc1cTUCW zK=fXWI-P)kGLNR#LWA?zobVH^%q`F$Pn-SID6n`7Wriq=eG^mN7N;y89OW^?! z;@a5U!6&lRxXI2|c5swxDaH?*#23Dhp2QhDn8SMWY#(!RyW~Am&ua7B7B6#kz#P6e zmG*tMZJe`NcXzY)3Oig>HqB#jczhGMBccnzh&w9RPY;sHfvD>wRAs!7xD1#-?alLV zv8v%OR4y1q!rkqK5AcUwChL$@Ao|E+45#|$wliHdg!?$dxXYX@i0Q&kZ)S`$*t z4IK+(0sm*VX@9aGP)XwU@g@}SLqEA$Ym2rN+fZXLM}j1TN{sxwEm?XKlB0lrQ_UlJ z@BQrvPtgU1l2VWL`MfRDZoAc#K#NPEUu_NxZ|zcR@PK*1N#TeN#e&~ONYHw9AQmmV zfL;EsQkEK9j4*T1{hVeZxvVG!I9PUTrdww}0yzPTOtbydx6)2L|IGmmg_5eNXp=6` zZjY&Q6lhdQa=8C#UHvMw7xvmd{+8g@w1M0@^oO{c-Qi8~P#K0e9%1peXMZD4_}yUV z@noX#)ld=m>V%1*`OT^|9v;;TbtSl=tJVX}4~$OOBUU*Z*0%PaQrmnLMxHgb6YtaK z3dJ$pAWF%sIRE_+@v3Z(v+H1q++=X;fq~LL50M|e^3oF*Kbk;5Wv_Hm{4gee=|w^K z09fA6WUcelu{;k4l;!ITl7lorc=bVKJ6~k9_NJ|cgPMst$k{?5yD zRew--rf&l$ne8~d9(HgYQI{@j_d(OqmYqz-o@akYQ)O#=%Li^;zwb9Zl|zUwAq?x( zGddVA+r!b1Eq*_fUPgGlsA2z8IrsbaLw$p5ysYn?n{qW~0hwc#?x8iGmiHU_UtfCF zM5Jjf{h>bbK}>n#nyo}t{sW|sUJ2e+3sc6cx-gs|jNwA9yf};CK{x?~MpO$|sooMf zD|`m9JZEu)tvL=|?kRA9ME=+F51UZp+gQf@8iPzc7N8e~-9>^c`b2s0nKM*6n9)a` z1mRG%@cxab2lQ&+tT?v%(Ft{*sOsFSUCkIP%A3E31m-W@9#y!t z_`CLh<{QGM1kUf22L3nu^r~TwO91fP48JK<;nRA$kCxg2b)w3c6R?r+5#K((NCJk< zyC;0jJdPBf8}jW~^y@#Yt7iaI;Oc)4@0|0}vRUi>E3n-*Z~r7p)fEw6IHDk9uukxJ zaLbNd@}nT<-)`;ceOq)}gk1E>7N_Sfu&n1)J-x<$p{ZK9ZDVanel`)?*VTBg|G(ul!ov?@?3aYWO2=o*Y;Xq6tm{nG7=X@7^{-&We3^uq1$`lE-m@X`x4QAkqCzs z$nQY|DJj39OA-=Sn;=7~BARK#r*0>vX}Bx?y_Hl64o~x|in*l6>V`fBA1C{|xK;^# z4&MOeh=DdIFd0?57pCoTgw zEU#N(#qY=lzblTwx5ZtYGBPt`0;-i0L~XA2uqQ^f<3iE+|Bh^2e80Q((3qu6GodP>(J$$j1prdWBvf76yNVbl`U*6XV^;9Q zfwdSD`H{{qGCZ4fUGaeP{Q&jLc1zjkmGgxLMY>KAvOj-L>pgcx$@}DHYdMF(iYki- zx5~;Af+PE%30evvlw4yYewv`4qS^oRn`4}bGFD*onjq8G(ju%edijzihGaebs9J}E zDU!n`vE?gUgLh(IT*u!;9Ow;YuL1$yudvJb#A(r|1<3QsqmWEbT=^e4h^x&`8$Kh( zS4^##i&Zb8(7ERY{kiG{&KrBZ8HzORk6YFmC*o}Da=Y%AWAdP0Y- z?i6=%!?0AiPFJaifF_7>rOIxpF=xllD>*Y8-i7#%&EP$mXjKVG=kAI9W8YV`o%oIc zZrY|pr>@f+xk=iL)>LAu`-a-0ieE`Y0QL_A?rak7g`54=IY^qD?b{=4jr2J_;q7T` zc(QZ0x8$zvRfXN$tcKZoM+PYf?_c0bBv7ssXVBCnAL+UK7uV)e2brkoH(vj=d^riM zRyMTuZP=y+17y?*x7k*@Um&G=G`_TCzxUOiR-~$z8|9;jJvG9xA;`3Hr1SI(hwhJDF}bxZpxJnoQ4GM zJYHxEZpo1gmP)4D%0CHpkvU%uUtwNiO)6P1nS)enJL||y6Wh1P;|xr?5MbO0m7J#l zBEGzG_3%)zu^QvDH9!WrxVqK%j%XVdnCw(r_hDz+L&m9o{?{)heLA~IQzAB!TUY_d)(CxWAH34&vX zUBH!pOwG)UrX=yF;WUc#kn_~?pY~tE@D70UK++$^&2&wkCmJXt^Hw{W!#{dN3vC5c z@6GDX6xZye`Bo3QMnl}9saWbOD}(*E*5^R7&EEE9FMnvAN2v{ojLO&so?^lJ`uzf7 zQcLI9mY$XhtlT}+Z&UfyTdps!cSXN+XREt=6C~E9YOa-}&Z@3@9iK^-{A*>NNDN6v}FaeU28oy=zjU;C%zdE$t zZlAVZtNGKd?uXgMR0s$dHB@&dG0WOLy1r&OT~#ziMKaO6V2mG=mkUuK|+|2gzDWy}50N-e4bniT7cy z`d-;8E-Y1w&7ee4EJSIL#~1nf`5OPo5QueTi`go~c33%hLK;*j-U&<2LcP=8rhI1m5eLB z^{t4eL2=$1U#I_1vYIf^fXZTDGhAr>+jfw51hcBGUsJ$IobM2Yx5-8(i*P%}#r-XT zVRye#BI%0-sxpGhKtQTB-InZA#SX+3L--HETL(hy!xWv`2-3h+NoM zfD+do5K`yN4IX@L9@LY{oJKKjjE0P_wY(S}nWxiuIzt%>HCVxxk?DCS&X7!Nw-?lWHN|pqu#18hQU*93@BDCoC=)|u(#0mLPD9&DEz0)w zQ^+ETQ|cdMsq6&7CejBlpVBcjsn=5#jD!X)Z+G_o7fSh*OiqzGJfe^$M){BJ$2ZqW zw$794?m7N82c@rbS@2c!ct9~q*45uRYJ+m#E>avmb4H~{o~Z8oKp&*XsC#JTj0bWK z4E`4J`Oaf9nJ`fvA3F?Ynz!hlVShE977ziPnN9h+xPu>NU^yx7k6y{tx$IC=*cWLdxC=zK>u=oY9QO4cUSu z9JB$_Xn>1Sm>ScGB(t*D`3sKjT&5Y8WBVkZ9_M>Pt0k|m7J3MP8J{HfKJUCypaGPs z(U2$UlcDT=F*-6em+N1baMDgDC1i8Vt3CQ=&%rA7_{%-5aI7o?t++xOr|Aa1LB911 ze`Ecl6fOuki`n^>3$yQPO5&gOR-gX^FF4>0z@c5vgZsgt{{b+Zl~EAKo#Oug^%C-q YBtmPv-XVzm5)b#NE9)p#A}qrGADQtqLjV8( literal 0 HcmV?d00001 diff --git a/cs2109s/labs/ps6/imgs/img_activation_fns_der.png b/cs2109s/labs/ps6/imgs/img_activation_fns_der.png new file mode 100644 index 0000000000000000000000000000000000000000..2446ace7f0b45833fe0d77a319c0427a800ac6f2 GIT binary patch literal 71986 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 LNkvXXu0mjf>2vCh literal 0 HcmV?d00001 diff --git a/cs2109s/labs/ps6/imgs/img_linear_nn.png b/cs2109s/labs/ps6/imgs/img_linear_nn.png new file mode 100644 index 0000000000000000000000000000000000000000..72c2b27941ea39a47a43701d37a517d4d72d9135 GIT binary patch literal 55686 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 literal 0 HcmV?d00001 diff --git a/cs2109s/labs/ps6/imgs/img_logo.png b/cs2109s/labs/ps6/imgs/img_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..375678e417599ab8954cd41af1f5cd525372cdd7 GIT binary patch literal 42203 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 literal 0 HcmV?d00001 diff --git a/cs2109s/labs/ps6/imgs/img_numpy_pytorch.png b/cs2109s/labs/ps6/imgs/img_numpy_pytorch.png new file mode 100644 index 0000000000000000000000000000000000000000..d4dc5e1a7e24962dd1d5b2ef7543e353b5073f13 GIT binary patch literal 118353 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 literal 0 HcmV?d00001 diff --git a/cs2109s/labs/ps6/imgs/img_tensors.png b/cs2109s/labs/ps6/imgs/img_tensors.png new file mode 100644 index 0000000000000000000000000000000000000000..bc3f38c7b458dece2181a0947b7d6a616f14a54d GIT binary patch literal 24429 zcmeFZWmsHG6F-Q%MX?|W1VV6k3mzc21$Sp~mjJ;%xI=JvXM#)c;66xj8GLZ|aPRxx zoA4{&yh_QDG2h=_&=(PdgXif{%EaC2|Oge2hSScUc-(LAt&(~L;N}p15{A$ST|6V#q(+zGBMHH-!$;!six~0`m!(DHig%R%_E`bpd-^Hn`!JRX z){oC$`M!=TUP(?YEy&R`(lhFAhr<8`?~Zb|ulB#|^~D<;HrA`eLdI|=?_OIVAebi6 z*IVKB#hdUPYA3%B_gx)Z^6UOC+K5QdR`tAqkXU$jaeg z-~)Pic!08?ploVlVWIwjhhx0ZXRKD9d|C_&Z@Bq(`$&7Ev z|H|TM$^S-OR-Rl0WN%E)!NA18^hN-KoSdA`-pGVUQB?dt#ex6$-`fV&xw*L+nOGQESm=Qq^bT$|j{2_jHVzbjSMuL_M2#H`?agf+%|SNgkM-&s zfSerp-@JJw^v~bld>Xr&|4Yfn;Xlm+8p!zghLM?piSeJhfuekmsXX%LuEtgxqUP3s zcmNs#EG*o7f93zbz4@2oA0^fQEy>Bk@n^|D-u#~>RUC}%ML^a7Nk@TyHS?dsf4=-r zK|aREmj5A%zs3AlDj;V83_iwxbS8kYGiCQ34o(P8N>o_c75*R{HEpr`yf4%1a4WQh zS+5-hF`qMaIdumdpo4&(K8E1)kzB~^HQom(`0KIp5f2|@wxmVJAkMEXYqZ0LF~7icWS&k#AtMUYp2-c8mLU4p>37ezxNvc={o}i z`p@;>I5xa;%kG_a>#`kpS^{dVrpkjW8n3iIZ>%L(+xALoRIgAMl_t?lNpG32r*9&D zp??eiv_C{>u-ds8;xV-YTTUgoTmEjW@yS@+%N|qW?e2#f`cVxX+EePbG7OkQQ4%N5 z!bEcBqh80KZjZY-p?xitn1PsQ9b_|}@1A!dNlxOsF=&}<@e@JgGqc*ukvpjb`unM2on>qKothE-@v1F67y;*rgx-B_ zLxgulQMoPc&ZPB=oziQPW^mcP!lRnWl@RLK<1HBPsig6TV*(s%w=CyAz$QO|Iidyp zabt0oP@4PJW`n0HGk8~DBp-KCXu*vvGp{0?cA#!87C-OGUj?f!XkC{#SzF<$ zGowcfouE%D(eze>d31&i%MNv`&m z3M(IPvlTK~kCIZ8yh()HeC-!;Cr8e2Z)4!ljl}ip&S5d-MBm_ipGby8wpT+6N|}mR zi}DpnNVF0}5h$Y*grw7-ShNSCN=lIQDQMQPaop+HcDawpF{Yp-x*QH3Mb+v)q51}g z{yVIFz!FMnY+Po1>~~zPw<~c~oIe-OYkG^BKdkLu+Hn+R;sTq~dm5Yx7ry81@63c> zZ9AQ)$P8=o(^c-kwj5Hx-f7y+M+VW+Qa<)xJhQ2ME%(yu5MO<#r$2v-!%gIWP6#g= ziFi9o1^?8H$M=H7W8kCLo{9HouAGrgD|hp`Obz)i_v2e;9_(qY^XGNUH9kf@O?>{3 zec}7-FEsqG+eTl}3|c0NDVeb{Ad8=$Y)qM8fKM1`ISrp$@c?REL@M>x<+3#DV9d)3 zJpbVJMVQBu^YvCf!zI`x02pIP5e}R%8l5+2laZy@jx1am-abin74~&JtTK5s-z5%= zYHOpf)lMIuutj> zQVKWxP)V!R@m8^GTf9w))y$Cj@9A5JsgE^AmiK4`#ba}W1BJFo5jSR%1(Uce=}48{ z(G>PI+aJ?SFm$)c|J8eJ5Ds>oVy0y6bmfYsb(OAC3F9L7K#(G}A`brr6n&%U-oG*&}$|n=UK6uujt=EDK|C__G);}GwHj}mUbo5x9ti7 z0u#74D2$Q39c9ed*wawd)8CWY^&O#6@Dyr1;XJ%mMs ztABJ9%MJ?~iiiw;M_N*_#thiwa_TEp48#dU;2Yv#5 ziH&*yI!(0Dlc(=&x|)|+;cwiyW%jRaaXmj|d5|mx(qnIwN=(j{-*i9xJu~~hd8-#! zr?4mpR)SM!A8LxptLkDQmz5g8(n0|_vj=peAyv5U8@V`Pu7QWl*?w`(XC zEXk(GJ*+ng{WaF~qMd0t5GNlEvql()@qr7m_jXe(R9egQ7>Ii?&n=%w%r!F>Uh6+5;e*9?2}A zzLa7jLQbbNzWd8{!W!PSeu`YV%zMHuQ}MrMS>MiQg~g=_=1No^XD#lMS~DT+6-pI* z!4y$(%U;)cq`yfYC)wvue7|#)mQ3Xw5B`?2hj_tE!mUcm>c7RipN(({vH}CkW2Ou^ zzR_4J;|fTN%NE~UK$~W1%wH3Rn6>)Mq_Pw=1H6%B7MQE19q1#b7oY0 z>=|E>LKB7Rc3rmj3?o(Ua7^o{(J1$eV=}YJ^&MT)kR-DR(4N=nYin!M(^f3%jtFcm z^7NE2PdPnt5emArkodgI%$o5loN1L5(&rpH8MkC87BikTSP+_DyO3(6PSv# z9aMHFEtX#9BX+QPjt!WkP|30vYrs}_^8c$z`0X84@dl4qR7q>-iXb_|Yvs24iZ#b# zr|?Tb!1ffLzO(2e!l;!I;oXfZsmj`mv+|k^I<_I`!K!z{Ak4t+U3szL5`i!F*Z>Cj zQU$m!_a^k?iLTa`7%ws{1HKIA6-2M5w)qZXE~VNV}{!MklFe9jp{vb z)BZweuc=efcHXSjy3_BvEt^%u_q6syG6+3la5#WqbqbcOGjkW7HFXY^yQEI;JSbwE zYaT7UA>_ZnN4yVX^oiRTOytA_i{0sHwXy5S>Z1b+1{;~@Det`3tW1uGB@(aSUAacX z6T#@)OW<b!#@990?k$DS@Am}c3c5Nhwu1X zCigez9y`n6Gqq2585y`rv9gan&L{`8TqfcIWtP}Czi*}dapkNPs_(V&mU^(4xcp$a z)B5k8_l8R7PN$nQC^5kWLCjoT*X|m{4dlwKdNkKh_IqPSAfZZ7c3L=`2#E4?wrDHty&`0#0(sImB!-I2|BnPq|BRHn38e7wp@Jke&w4}lL=;w9Ga>-kOi%Wgw!%>lKBQqKGV%ox0Cgx5EfnjJDr`GhQ!jg<&^O{X^A5BR^?u^ zw5{j#HLb1brM#|A8g)KoAZMFcp$;@QwL2U5C=x-949`RQtDUVP7QH%e@wRq1`CuKc zU6);#8~)#>_h_|aVydcVU0W5Tj|*`_2)`z(O>M&Kh0K_~l#dnLF}hI+U6C!y-pOnf zM{D}(g3ge57PDa$gozx!#`E$5g08WIrl|zt{@?~^eT&<}*FN`H>nNwatLyb3mJ{_h z*lMEvc9oB{p5FH?XX}N2?T2Pb@VZCS#yqx<7p>DCT^qyY5>-p41lfbWlJ-dY=E8czmzN>7 z3unG3lhT9KwZ8Ru#1uPny?$E z9cs(k4Nk^J&{UK+UM!1;1r-oxpEk)MP|9;581~7rTpMrv;8$}0#Y9gQt|KFyBzL^$@Zc@5 zXJaup37v$>-W_&3kz(&P_Rq}Rtj~td? z)H#8GJmtMJxQ3T-=VuKjoQ&^(HyG{CCK??wg8CyDtanXrw%RhIA^7ypuqxlXEgeq? zzw?$LV_d)lBpzCKe|(+Kx3{Hc3`=i_v)M(5nB55zC9rf4hhcxU*VHOMTYR+W@&GP!JvsVnKuQVNAo_pYNO5ST3Gj7yJP$^e5K$*5c^9m z$jQkBX9|N9fmP<76Zm3r_^OcB|^%3Wn^&C7Mrfywrk3?5Y~`c zgt(lQ3i9Ez_Cm|7>@{}_y0BlLqHVUT()+~~;RC~1d&^uG7tilPY{EHA-MU#J;1MQ6 zc2n(n)|)<_=g=2-mTKd%cn~5ab0b*6D=}YdZhf-y?1l@+cZ=wXHU1^NX1^L4|GS1I z+YGE3^}7fT^})D}wm_LdLjgb(i)go737Ct_v}1AvY2c-4;+BB>t>uU2g{#>t?*i}9 zK3J%6KH!f?AD~D8%W{0ybcPs91LK;6|Fzmo2fZp@el*B8$l>x(b1+kmTXY31X7-U8 zvsu1uzhl#+_HZ+u2e?1}_38Q*xs2v88dhCd3LL|UsfVy9fkPm!FZ<`L3+R;wJ_y8t_de0OW4B&`H;}9|?Qid?D5>5>^Z`o_ z3^};#PDa%I8nB1i?Woe?fv1&xn^N1>xZ2a6xfi!0-?Hf!x3su} zO_%uP+k9OuX_s#=)MvMPiEUFlnK*z&mmMBc$;a#W7d&!!^MOY!3znOM^ZU-=>y&H$ z^9!Z6f|Gao{6y2t5Nx`;X4va36da4NtMQNDuXk8C8)rh~L$Wm37qObF3g57c&!@hu zCplv}+Z5Ac?_@7;+tBBvLsr_7P2rok)t`=J9cfdzcit(o|JBszDkpnv(@=&BFZDBv zcX{0#)F@ct(q`DVLW2T!YXr7oc#QB5Y#vEGv4KuY{Mp{P4>pQzK{X+~0fA0KE^w@z zvpeH@?Ih(&#RqxW1ZbG%6U}v6jy-M0-48#)uHJ_=T*H@~$CHW6vEjSU1yJ{AeiGn1 z=t&3~GEKk86@U7K!QnnxBDqbYW@|8r;zx{}z@4hNxy&smBqFwlC(2P)woJ>jhs2~A z><@$dq<>MZnjGZp74)b4iyuxz9Z`qChQUDjDDAIF0*3B9F?djmMwm?7*#%KFHx z>X)Wg>P42OsY9c12$q(G0qms(J9Grg8>5KTTX%S*p=dYlWJtKf*)3`BAl_=6M`v{n z0xv4`Bizc$^dmIj{klE)tVs8>PF=%+Wp^W*^2{U~fy62{bayVNq!!d*kTSZ~eBG&w zeeSWET+_RV{v6g{ySSis_SRJdpU0^2Ivqb;Qp7;sAOV|LU=t$fJ1TLX zWFM1Mv<(=#U6gg9lKrMqA*3cp`YwZnakHEP@TqQs5KPi5?fdvgo0uC2=wN*{<@nHd zc64}3RjyJ4XEqm$g#tmAtuQg7YB-zT~ zGN!k%UM-2^nHW#N7RJ_3ZXcdE71%l6qd1J`9?q>vEs?<3oYaQCm2Ma3fh=F^g>v|I z1MCuQQ?mcwMexY;W5a4!R2x1HMyb}?Sx zS8t+Md=O92e1-Qc=%5UxCUnv66#3BWekHad?_tF&S9|opDBkHJ9@mM?&m0zwdj+nZ z5#EvQ<6o-y{;=;c|u7yT2;+_n%B#ZNs59Co2Dk=vDf?YqH(k)9vwrz$Z9 zdt2C;Q0R0#dUj|^(&nmJXds)|*IK3r@Fxckr11_9p1C2=`tz=&ddxmOjnf=lh*E~f z8ISf_>#E#g)}3=4qoAk!G;wQSQRgr7m$XiV&YmBpCz?Ppk)GbdUL2W%!);NX%f8X~ zj)#E7ib`h<)!@LPaFcn>lA1_4oSA5J9LGk^sp(8jDV)+zLg$|3dyhuqJIp*W%f?-3 zE^x^RQC1y_tAb{f1&Ub`R^Ji2m6x4`RumT}Ft1Z3+jO3s;P}n1W+5A%EU|c!*pi?L zwm;pYh3zFn-&4?&y{h`~*5tR@QnL)x40W90*cx4os+KOn?!)IT%069QZ7b8*2$aEj zf7M}Eq4CGv2C!9QLnLCBw+kDdb^sq=H7;-JnEW4$(ap%5p9d95oS&(}8x`lB$C?&` zNFl%NQ@TQ!irX$NYBhRZ@Hn5!PCubrR7A@L{ADcX9yYfaUd}y!MJ%hSrn%OAKUiG1 zd|sBi6HOzF42M2C1R?;FHakQEZd}!m`>k!XZew-M{lv&}S-Ox%m%%?*3N|nR4sWW~ zWdH3G`ul!G33T;LM-7fYZ~~#4*Fs&*bBh)nasL*VB+mp8kF8jSLBNUk4>)4R0VHy! zY7Phf?cex&!~Q!K;L3B{cUDc`Fbs;8vpWq2vy-#Vl=9k7fhBLx>@Hn8STOpTO3+- zo=OV97u4rxMbIVbYftCLnyYJQXcE?Tog-UQ(o#J7bI1`?q&Ek;AG9gx2S1~}Jyj1x z`rH83x3AwBQ<^5Yn86w~;CO6VKbh}aOz#95T?m7*_1^yI?Nr=n`wlG2hWVHDkLGsB z!1=dOzX@lF4XRE;e>TQjA*09f`R*EH8ki%ZGWPnV$N#B%%149DT~eqI`d1y24`vkD2THb++e+&e8=>7l@qMOyA`BU%XfQmoOlNfvaV>G~n0but$FZWCT z$L!4k3#UGatmgldrK(3X5z|@qe+-ljXl1Ok#2o3LEU7=@iO9UPf0~jc5ztDhmK-bG zKUty!2=)EHElyw6s>y*zxu1yZt#ya6IPa^QPvl4JR}V6{l@vrHx1EmgDypcw^+&}` zV4qgciB_p$cx3+_214X|{{pCuo}Hb&df9#Nr$tGb>hqcSK{1&OJ`L~NV+r%A;`sgM zz4GzzVqsdLw4n~q)~m|P%Hp#{f(Bk{TD{iwzA{#5-w=xy%0~CRJD;h(+DsihTJ73M z1^u9LJlB|N@Vv6`(53Qo&XzSJuBRCeYhQAKSUcVn6=ck}5{*oM6XJ*89*F(KBjpV7 za^Z%yp5_`44h=Qz?(V7+bY6~%jzv0*^3T*_9t@r(M@!AwZT#FH>2`9`m<&rjzS_zh z?2n-^?(jp_NK1B8jeBhApf4(E(v{RO8@0xZ``#!b_5n{ppPK{DCfKsa2BXiF^orQ+ z9n^>O>PQ>s#=pSh`fSH{Ys=ntwKKqe&NwmIy~X+9y>_!B^8#03EmPBqA0|@oi}^rH zaZQ@xAh_1gV+Vq_M##ve%yJl_JAJJ=2%>r3>14PoHy4+NZ=jNPMIhmAq#LsX-)>pHtjpDVO7(W|yFj~ZW)%Ub>qlJo|UG@py>$ke01vTHE3{G(L zU2NYTNBP9jH!QNSL5oYuiBb}*{oa#56NCXKl&sF%>A_mG6rs?vl>)1{Oe zsWfUbgO>RWlMKdCpEIKP=05wXB$U;DvFI@Bs6iopvz-%#B+f1heqw*rf!bn>OUxlN zt?i=C{X1GjCIeUSR=ytM?ZLU!;#<#u)Q%`_-bK*YB?5l6Ot(noOZ6mcWZ)IChVjVz znKY)aTSLhdL1f;IWHQ`$X-*Mr*CRMn>^~l~ zoyo1dvBE}JJN_cxO46!#`9?qgiwrX8lWSNfzSBm$+Dp%0Oyut+sbo`(40vMdt>#$V zwzGp|IJ89M!%c&5NQ}zrrZL_Rv{o5^2I;|zc{6=fjgOE2uKn30ny3*}{gbNtmpHLh zUnB`44V`wga&H8&={TEc`w%I7kMA7wQDAsdEjGt2`H>b>xcm8fUlgY|n!%(k>42F` z0-c5dUzxKWNx54WHs^CsYCqAIQ_(I`B1&umCLufztfIm~CQ_7lA6lD&+@iC;wqt=V zF9kTMrVX_v{m*{f9I_?`+-$QKAJnZ8xOQkpwCV@4pX5XwSy}ccDzy7tPh?s#-_qG3 zj1B5~9tVVz^3UJi*DpCQj6uL{MW;m0t?0@5-*$d|zX{3ms0|5x;9;mZLG0X9JgV@VVU z8!J~ROZO9UfMTvIo?{_>WjMzq$N{_7ufbl#f1ycx9Ssb4v+TvzS4`E6&D(FdSH2+1 z2>h0FXOrt#C5IAMmJNv#6U5TUUZlTs9N)C-)e0o?qnX1vp!9w&iGlz-}y2 zIM@!8CC5;4wYle9cBMG-BoSJr(`n^8@?;-M&xsP4S3urNSO+%*?XxX z6tE>u3p13&{KkJVn0Ba&Q`*CL1NMme)DmX0%6UJO;U5+00K z+g0S7yU)=gNTxH`9Y$yh($==Kexhu__GU(Z*;dP^Rs6Uv&S4b89_ext!e4frkc}j& z^xYaw=bcfAvRrB6igau%JY`^N!}-msQPFb9Q=r*kL*sU4Jf<5y=W{yDDJu{z81i8< z*=zuDun@`cX}co!_Lv>xWf?ii6$@dPUf){QU6bT<_ad6}#PB{M9p2XD&KkH5V%%lN z)glil7$(zDFNJoA3o^6dBd(~qkCxG*+4K=jL~f1S&R_OAad?s!N5x2h2pSBzY4NxzCJs+H1vF0wN`--b~P3r1uAETv_4aDvht+7uWtlY0O zAHBqtL*z@|p7+DQ4y7$e11o=hmLmu>70?wz&p1MbVOTQ@!rH<@lFqm-qHZTPO2ucu=RLc5rDms(u1 zX1a|=Rt0aJSEu~Hy1BKQ_lG(7@p0wj-QmLEGq7q&u<$Y^XtWW~pdHGZc&^K1PGu;u z$8QW#FwR5+&>aKMcUL)s9adii=;+p(#psC>dNv&MHu#Z}pDC|#nj-5cqnXgOLm`Yw z9lf-&MKd1WO7&ClzXcFkxyjtAO7YoaPh+StRFB*#E?(9&3kgDjwSmbdno|P$nnSkf zuT*4kkjD#3SAnco+p@03tH(Wb_>D8DB#zNvA|A9Bm2y}4&Rh+6bk3-XV|&stE4cH^ zmDU%+myV_}`EyY+icp(Tz(!-bV_TIZwvk|y5@|aDcN%ar34d&(Dq05Xg_}MO+X>mM z(0ITXHpQ>0o_!=Pjja5>QpyN-n8HXxNh7^>x$C5Jw>!HM9>+4GH@}`~+K)fCY^B-y zy-PSgt8iMM^M!;YZKDu=O()Q~fXl+MWyd>;z4eQ`A;|%XRI-y$d~puO9DhYsOyN<| z_j?&Wi^j&nT_@s{jzDkorHhr%tXEy!3exqZY=<))!KPZ!Claq>*0g)U0yq0LvMCJi z`gXC2|{ zQplN-?d6Ef=I{4!-RX93RZ$>@HW2Mc2Ig^HubGaV&sYzRC*mjtz4!EZcR=m#Wh;Ax zw3brqG4dp-{)TXOO;(lY21m3Qv%z`p`3?NalA4|yhf_)4z}l= zTT;{gYm9db82tKdLT61Qab7x3_Df532}G`^L^Gxf^}QyW4|ZT%o)v}$@t{ZG1d?9N zvo2Tf*GQ9yEO$lN7&^bbwHYfXwrT88CHXps*ZupSmk>?_!&AK`huX%YS$ z%I&-m7|eDNFgUFqUaaGhp6t2y7IC7;_%z7jdxDk5ju4vzlu1Qiz8|IeTWw^Od*6J7Z$r5>f1>UEy?md$#57 z9mH%?fs3z^-pcr8aPp8Z`aVP5C@$bTQho(^1z-Clsdo{%JsbrIel^DAi^P{rD>&st z%?~0`maE{#-I^CXK({zDc?k@q;M;Obd zW`yZ{)U>4tdHW2*j{yk{VZ|RwTVw}mNl^d$$4;cv1z~Ods}%dzv2%<4gjQfdF55Jz zK3Y{`yc@+}+fLT}jqPw2OF%eSHVFwkREV?szFoF~5rxAIwPel1zxs*$m!btGj5$bp zuuXdw{PXQ%zpOAk<4feeGkrZ2)%n(YzWcjaIe|GWqhm7Mg-pO*E_I^opzh5}5ln<^ z5>1(3E&_YkY|0FWj3|L;6Yy)nVkqg?qQ0@Q`zx!v@5>ah=pT)Z3(geVuTo6}ty2&5 zlswWh^TgVBoxgt8BdR3tfU;SwzGS!h&=Qut@EYx^-DQM$7hhS9qi?McU!VDs_H9SI z{ny_@IQ(a0?a~eURu&aWN10hP8-9+w7$Qj-?q7z5Kt8Kz8)J5yC%31gsTx6kouvLK zNrtwWJmNBTXqxCxJ%;;(ZVAj5lFayA3^f$Tti?Xh@czF?UNTCP=`WkBz`hCzH>)QoFF z$8qrkg$)tbQL40pk2|&IdI`@;9SNKntDD3@t;HKrjpCE=h65wJ`V;c? zur#Y(gXM7wJ>Br}yGWu5XmGL@un!uRetpK9L5R0~<@r(Te6vPYA<_Dr{qS|ZqNPl< zATii*i|1k&SF=w+g5)jHnyIQ`ptsU!(=WR*C;>i_A%UUAt-(3_iN|^Y_)4$!4aw+> z-=LvN@o+mTRvEWFvt5qzjXM~`MJ`AL*%H+(Db@^>Ye%Zjr}*5!scxeJTx+r+F?5Jn zfPL|rV`($$`=J4S4keZ))|*N{c=I`o{L+rw;GKl2q52`2lRgE;WxREQ)+F>OM>nS6 z=YB=5M~RH#*Q*c1K5)bQDs_)W8$)*4HW1 z1uMd@8|%kwRC?zgN{+mr10g#x5~MqyB0d*R_bM>9-Z;bgP#uID92roZ=MEY=@wOJY z7J+1{r=UBIy!lmKk-R%SV;{A=XFz%i^hj%JB>Q2kj%rS zQPqZZt!-hhxYF{|gv4QveA~O3wtHj8=8Y%u`qoZ$YCfp+i^dby_l`55g;c3!$Bpjz z1aLf2SG@b`cU}t3U&8d_SKoQb9QZmBL&{NZa)e>L;#cDIc9UU@AoUp)^_!K|V-}pj z#L;ygyy0+yzVBo_1eBR7?C*&6-yCJF;Vzk=v3DS1QOy48L4z`EZgq=b=;+WUVZOlS z9^xdS;-I&}*{wWf;kOyI-Z!S4IEluEAsCPan@|Tm=nbuBBfR91r>><;4Qv%&s=0q= zol1}B!vmA{|Ki1L5o!};N_0(3$~`n@dw;c+N=Tt6*}l>_4?hM|kk&f4Xf5A9^C#q# z=wl=Z67Hq`{W@og`chV;EuZzP0>3*!&hxW&eGVMrYWOIwP9>%sJXNnA8A|nTr0eC- zDVpt=c1+4_ z+`*vryz&L<&Ps6?_GWpesq};I$B;NjJ6`oBG(QGBI{$rqkV~T=ec~P0ZqML{dfcZs zelgOT4*d9}hVM9J6lUT$Z?yIrw$_mmeS%X1^|)1KAOW_dbUf?qrTS)?xDEV}2lE$5 zCz~SsBACpM+hy(29}E$4;BcFmaI@J9tMEQ3`voDis^}5CgaolkHXBbLoM&;OSqG}4 zm;^nxm71)H_u)+`#Bsy(b`yvQJ2({Bl0x;$($CBa38q2Y&`N=enIQOdBqFFJ{ULX zJ++{%i0L`1MaCeQ;&_kL0;AwswqJMoJbqllU=`PHoj*SF7v_n!tjkrc`K36Ah6>$I zA_p!x2%v&hVpN};+0_T z9W`>l2GlWXI@}rb#(|8SC;LnZVw_umglcAbX%76 z8NH++o9?&paxap#n0GBd{!bOg4Mmr4Bg0OgX?fG%9}4DU)cCn=GYeMTWn2|3bn!KD z$l^zS{I!%Mt%l9RsSVbPB&wJ+Nzr7WZ=ZszSG{nX3S0UK^;bo*gKSf8dqOa=5Y`)zeBJuMri!)#}J4}ZJY zxUZv$0@?n8;393?Zv*vp2`poq!9M<}2DcjJ`ara%zA8r!EaA3oazWHn|25A83&%+Z z{rk!YLrD?RHoZ=7D6DTfN)BpgRkHQd$9>>OpeTV3Q{Yrs+P6)JZ}#^Irlx}rS9dos z7yOW_nV67{P%#rLZ!1nJrmTaz9=FSbxu9nkF$q6C%giX|L!oH%8DRj57qA@a;NbN| zU&`W~rv*ZNAjax2Yd~nUZB9oP0S$&!_DUzgkmbNZ;tht(OuuKQUXox3*$(!&@XJ&> z@{DxA1|EpJf4KizRLUuxp|AbQQLP_fQq(Z{Ybs*tCTrE(B+|!{&99~0m9UXXSqa;6 z(rrpbjZhPQV;z^#hDit<$@L01MVDAS-DQ=VOLDU7fJe!ebo{QDEP)N??Q`T+eeMxu zNW8&LWqY~mna)pRtx6)4e4_a!;wzN5d;t&#pGP}Yx|Y}Z6wQ{NV7eJJJBJpfAPo^U zw?QYDLf6pGd95|8$B&42CNrZ%=Oi(4$6JbU`pCi{!o#u_PQW{>kJO_y`Ibyq`PBqN zILblLn@ZZ7xzvcCeO2F{VNo5hIPk|Nl?uqL6n#1V&HmoXO<3?-;VyPdhJio^J#8&= z;J02*;;x_eJ=BNVvzi=yWgHbVh4Qbo*6s_9<0G>VQb z%aiojX>0$HsFa^HCdjM=5;_zZ3tahj`-JiOWMlUMek?q5i6Mb?xRTFYa$LW3bnSDx z>XEPC6eZW?*QEZi$BgbxmQ8QFR8XwI%~SiMR)0O z7u4xTX%(jS=mC?gF*aTZSpGr|MocH$j1j|Szck&es&}#ouh!tBD%5Fp%$umF#C8nC ztl`Ol-F(3ZRB2zIg}Ri=xl|7sw5gc8De}jUKtveLkD-uok0r8Nzwrj36OKwJTWqFk zCyc3f%L{xYZ7ZkRz%i5DRQ=L*?ojtu>t2CKPLrW^qA`KmXE^w^ylNpI7}+<7KCe&) zM7#VqBzNGm`OxlBkbN<3n5N!)Ch#$p>N_jEgtn*MMh2CHCT>EDR%2g~9=H|u`&2;B zXGqlu_3}ffv79^J8FWYLA4&Z{J~vRs>t5IqnU(2?+gVW!$7@iU)E~p!9ASvl6MD0m zCBDeInb|9Y9uXq&TvXRcMuykm=Mxuv4xHD8bcHzK3^R!@J6@H|p>aI|VrhOIqRGpe z-Hs)~*4{16p}9r8sqS}fIg`@&)u|KSJ*~f3^tkV}YTTcZYEO^dXQNHQpxUvVb zFkmWW=-cw5u73(R$G@wA%i=xu9{Kw@vamh) zguD0?tf%kz5q1yQX>kpU`AUPs-~(*wsKi$2dRpfRY)i6vOi*ZA$+zCy?c{w+enF|$ z&X4Xhrgo&XlmXL23?+|oJ(2K zONI4LS^T#26lQJj{J&1}d_x1`ro^c~+^y&dy-OR(S2~duoyEtpB*}fx6FBm9C(b>` zOg-_M9r%#SY_Y5or~{}=+maaNl2XHL$Kxl$Az5pQ<&iV}Q!(S0&-#h~poB3!v@J*=@xaRgvK(f2HcfBceav;sT9x zJd74{cr6s=VO8xOV zOSMxMAhzNK=DLXs2@t``Y8@z%Q(Rm;SC@(XcwRK2y$4^HZhNEpnuJvOBOlUy1Bg*N zks&^a)csusrd}DP{BNX>EYFSZZ?8^(oc*&^hIy^6S{w^jtm`Cq`!%Cli@~sJ7KhED z_M{4UL=*zC2+tQUUic+7?(SM>nCHbC0qeNBf|ks8WUDwpt{5O(LStIPlw{8Hba?5k zG9o2~=<2WqD$`2B*TlPD>5oOq$3^GylT2{Gvg>yUbp}(~{SD+{U^R#=LnZZS?Dk>- zw6Ryw#<6Anh*7Tw5`P51Y=lAIZ)BV{X;Q>2M#0RRx*iAY$y|2d&-Uk(IF=lh=Jfor z5k}8ROG``R0KF_vhCy+6m&|e^at-?;m#r27LG)9=-yUY0nhqts1^|JK()xJ|dmuIh z)3M-1ON89EY71y$q2Ai^jP-&!!5E0@KLL11F^ZdOcCt*J@?1+k=|Ck*G8Gz3pf_G= z_w7}f0DHjVJcW5(Nmtz1+|SH3eD2PT7pxm(Yez1-$nMDrl0ry-){F}9qDjpg#!|_$ z@LUvRdVdr4MST^r0lKb|f6@GXhOsC1#MR?wsJp!wE6|3aMvpxKa>9@V@-41|z~>3D+HZ>jC;b$%9wUMeo)Qt}HQ>98g@RgSbG@Ke z;gjF7awyBXiw?QSAp*hLk)YP&z=;Nst_x(jU_Fv|M5EQ!Zfs|Bwgviw*foP_D$?EL z!>Hj0^Jl>y8RIzu7Aw4eEs{lelbw!e$TG<2My8XvELL@ZX6^$YV@}lCN~)}O6-p%pM)1;&v zcY{iaY9vwm$YT&rB&cpmRk$Ewl9_LP-)oGpbkUkbdc9sGUFq;R%XDqA$sv8UE2zcI z%I&h-E*JGD5T{@{!o3lvlm?*u;Et=i>vM;rCA4Q+_!&FP*ZUVXEeD&0>-77|q>Oe5 z3fp=4mH|aVzXRGKn%GUQT`l$b3<$OOIaCf9?l58^h7KC{2>VM{ND8qb}Tt zAh_kbUL>8OFox!SBTd5yb|at*a4b-WhchjkF4DU4GPE9bj(x}B{*5P`io(ZvqT2^AXCsUps?pXhZ%%b8@=n0UrriTk-h52;Vw1|tm)PF`A(r=q3UfB- zgx1yJ4$;Tet?bTne{d^@ooraxCEGU)6LVK2xd_32^_Jj#Y`ILHXPMbB?EA3YFDCJ} zSoM|K`IjDpAx{`thz+^AI~}PPL>@-$wBU2(n(ejzc`11bL7z z_CQ?b{j00bVz%ODw=30@7sWe1zwsI)5i&ycKxE0z67QW3N-cxc&E!msCb~sZB4oa9 z)0Fo>=Gb>7Jd+p8hUf%5oUtv4o^s$L^(sVWcHgRAkG@lEkm3 zOvE}=LqR0?yX|I=k>X%)%!L&OV5AhSh!-Qek{LCd!5r$#MY=QyB*t$&+xGVoJ95vs zbpa**^Yu6%yz^;u{~Tv^+_~+24s;J+(E0SdPNx3{gIN14LX5p$Sg*&F-TTST3mu{m z6U-we;gy+K6ISyrN{LpH@UN%%XC})Ix=^NDn_Y5*`vK#y1y5sLNZ%MsOIslDdH7U9 zO;9yzCQ;}Q(}ipeDUtr`Rv>gMo}Z3AM9dE-s*l?0^=doufJ#vvS&M;cD7W9e+*$1+h|Oaug31Wu zHM{P-)I5CnkT^b8y@ac$?ql?`;2``r@K~#xIwtoi6Ge10MEghR!iXA7J3)*0DLg4} zgFA(!kQA)oN1yyI{VG`R(c_y|5qT-1zy!tqgm0#3goeqO?@3W%Zm&G=2q(5Nx75#; zQ3J}!8F5PI%UDj*kn?$$P8NCYMFm2~aW-E(l$IUw4kz#blP@Xk3$RIBFX;}$dxA3i zfg2}uW`QDr^#viNMQCdseweb?Otg8v5ZFrPs}5@6w3wVEIaWWGZ4%JM4j@*PUxII7 zv=g1xS-_6taN@%0=Jf^R5LcG3`H?JJy6&}3&Grfz6fFHR%IqN~#3`|eI9MePG>J~c zI6>~LSj4+2E@#eu_JBt5Dh4IOKv2{X= z9ho}$;fcbt@#n!AA0X5lKIpre|MnYcVLnABIl~5-w~pn%NIWQfxfns$uRyXg>^$~B+%;v)Fm8{Z>bM6B&Z1-VC`%TN}82m_@~{=W!68>Sx~6>yV>t21w%;nG*A=w zvLyM`^jt zBaoj*$Blxf4=;0pzJ5Nv+(ewmZF>6_?nWmftQVv(0Z^#UHzXj4YjON|m$Upqwv}4= z@<{6quo@&6NH1`e1-1Ue^)9e->R6MW4MZs?#e>j?11}G}c@b9b`5<^&#a>N?LvVU` zKr@#8GgTMlY2TU+&~H&RZRVjnL@tNqyZPsjPJGI{->s}?&xw;G5=%c0+vXbRozgha z!OmZUZyeoR<3dv7ZR2BAhD#MwW<>gJ^an%pM24OH6eu^629lVeHdv?06cHsU zRrZe&Cc(GP>Jbp-oYCkSR5r1{q*>^11kBPXp~T=lfsrLf+@HXFg@B<0ki5MbV1>bG z37yIbJ6;KsYUnr5Er}AdV%F9rh{Gv)csn61s-D#CUsX+*VxQ65qpk>}rC3K8H;XMg zAK1R5$R7EGqwX@3ElJrkOjF|FfkXvXUXAiO5i!z+$V5|mF1xN&63_Q~;y zW%z{ABYtsCkl$)|plm+zE&ZlbcO{B4zuYTw z-7tsFuvMNx4h~$G%(avNz!sNVdwS_tH5=(1Y2Gdp8&Y+`Kkbgn1y$YAe}u#U4BgsD zNJWN!4I&sm!79Df8VbVW>;T;a`BqmRm43GxUTCMF&1E)%bM?g7?H4q|(LWNc4U-_vfFXLQUW9z&7q@mycFyrpPEV~@K%r9a|YoA=-Jd}H=Ie?G=~ zzrcyFPEo#q&iH-$=STy&${%<9afZZ#(-|6#LL{law#PWBM|MhwNLre_r!gJ==4hc0k`a^;yh*4Y&t!KiX&`GwkN({IaSb#5ii;4- z2cpW5bv!)XrV}do9VWb>m0qs+IkSWy);UjK4Oi0*Ok1deQC{MK(oq}UP5MshWGUGI zL9C0AD0i?vE>T(*G6b3KSUQb(ZW)LSa(%k?j&S``1G7IPJ1u-RZk<@^51K7OatANw z$>d~21-kYDjze{3A_08@%&O=%PkK z$Xz!iBF^cYxnsSDHOSH8c-X)n$X%ndGrHk)@|tY@1fK)>xH%}V%KP5AIH?T7w1IiRY80(UZO46ix8x>)&{F7fG zUa#u```A-<)DY<i*!DkNujYVmtacWL^5zeH z38%Oj3s*mRLq?-$3J>8X7@=C+WpF~hHPCGLh`XONO5~GHrT)gOB*sZuzjmtv(P;&w z{XSXG4;u(Q@xJ{iIKOp}y3b?2Pw_8c1C6c^COfkp4i#uqcs#dEk+;dLG}vZ;0H;$( z{Bz#=NBaqA1X!?iXS;D(#>WhKu`#+kf&BR87nQ6L{klaurMj0d3#>U_Z{s;1cH9Tg zf+;A%b0$NQ_Un{tEh$(mB8Rn!^|(E6c9l;b$S4V=LA7(WYrj)T0Oaz!Ly5}YG5!V^uvPfx)7wQc78^uSaaG3%X1TW#Y~Z&9m%l#S^k zj1@k%oY{|fg$YwMng`diVN5c4gM=Gk>5}4ZW^+d-H6m`Z4Y5Z9W8fq(B>45mK+{ES zATyR0TcF|?B$d@QXmH@`zBi-1A8LN%L6JxD`V?)W0uDbq@)m-yE14R3Rx)EK`6-AvmG;3R$m*B@u=b6 zv4mMdnRGfmfYKgDWyl;^YgFNh0XQlD1%#3q-sn`uQt)U-aT`8!JKEEqe-;;Tc6Z z5q7^6DI9*1-yNhvD40X(yofd-ZFHz}57mrPQGvqGMZ8fGu|~6H0b6qHKdxI(v;@AsEgZNZ zi3t#^>vgkcwC4MZJWA}8th-1Ba zU{&JTCH%8*8m+-ZBusF8zytXDBx&bW;ht%{b@D^3rwO4Dvjx_CPA0RRrBxRG?!P#n z0kckhQPABuc9`#%XQIKPO+#b54V%${PH~#eJ12GwIbR&HJxG+t^%6R}?UZB>!!z|e z@dCF;h_!xY)l9pFDGXFFsb!Dk>ZX7Z+LwJ5nO(MF%i(9T2elbwoFPfK0p(f`i&u?p zzF>tGz&+)t_-7oj8?}o6?l=DwIzF9qS}O2)B@{B2eeTF*T_&x8slo@07SDh3E&j)J zEwQbG!AsVbIRMR9Hti#1KG2KqYk9+O{7($9xG0_xXH^PBI<3%PjFHbU-4(4sABq0} zzBqcg>fULYFVg6N-7qi1*f-_C(nyD>Nlm#5P!0tHin+eP29TYvcy4lU~I|z?XHbR*0HSB zJ3}9S{j%Qjq8>;o7_SjpvI!xzm zi3>7L>1Hhg?3+P}lGt(v%x|2M8O}_X6-1>)I!u6zb=!S0F8jzIJTZE&lYZP_E}=q` zKN?HaLW$doa}GyhxGLupI;E!5?z=<9y3Ii4DsafmSS5VlNy_*(^Fm;6NZ zh5o-A*J2F~Z!W6JliMv8cRdu@dULhgELwgwfa?}7Yc#J5JvNd5_zlqvTn;hk!p2s# z@ZQ?hMG`-JzuJyHb}PqWFS~7wRxg<=$glK5;?lrFao>VtrKstAVX0mLP7FNtz0@#x zwa&|2%)8A9lbT{@@)z`@vya!i?o>j?VELur!;X@sU-I7z9tO-@odI{J4V&vp@q{J?qEG!-}e8MCm%1hS{V3d#~_8S}!xP7^KuhUU9B2c}w z#Q1)Cz-2pT$3lxXZUJ%6%b= zegZh}E>JzkDSR5h7Gn%}#tGWEHeFYkV{gXwwomoSx>`-JZS< zpxBNB8-+BMHP7S1|Hll09|}}hFx+8k#fW_u|J^LO0Wf_0tc~=44FNwiaIqA(F2)h> zn!f$#EDAeViu;n(7w5mNT(_l(wT~wDdF}M~@vpM61lt8i=-*bb&9M<vNEZ+gP*93U7wNrs zk=|?QorD@73HS9o``_oBefPa%pZ%Setno4ii;Okbn&p|#oa=o2d>+L3SXoUObm77U z5CZrColk)tg2*mj{PO`Ga^Q1`>e3~0@=G+7loV8SG<0;dG_{l+cUSVcsWBv0b7s!DBA-_a@=@K<7JuN-!|M7F)2x6kT$aArZ>;f<7 zBGUyjrVHn-AP5L_;S#XgKMVf1=fXu`jTDqr)HJlfgfd3Z#S3I)7s<)~tQwf@2mBpG z&UA_S`W;0I7HtbkUKdvJH!)wS_#PBDvFQw8`R~4P4WOpE%zlOAs=!}@LN{(oNZyl@ zmXUq)$2&4{|X9a$O`RCnKl)BiDtCUcew@BENL~4h6HKHl>9N3$OSa zD%J-vUyGZl`R?jq*}i1xQ+|24q^{#%m$yI}uQu1OFb*#+S6$e2Jd z5b;@hm=NfDq0@_!iiCv)-2kfhUHm_9>nV{5gvx^`eQ?o}DM#g4*jCznNj@TVb=#+I z@WsJyp^}D;}6E6BL zUmbF>=p5Aay7rFq>y}4&y*ztHH0{RKQvG~XZcI<~@4D6bF#>bnyh?M5;mhFzYI(oB zLfSb*3}JkKTBLeGr2bdF-{$%*13>{>@%GgyJ#C9IH2mU0wC0bn8I}1kA+r5IWnjIF zwsF4#_3I+CK?9?h8U=^@{vq%-@1Xk4+n}N(b5YZ3`w^H|5Vk zW44p3!@e~leny1|m?BQHrYYYx*)xxfxVBrsmt?YWg=_401AD`K@;L}pFKRr^jx~ic z4=;6@sW&efR)!`#$gNHrmdMbW1Z6F9R-Ot>5ij;Xip%KTC`_ z2RZFhqDCjF%A$L)$I&9Zb7;(Z*0hldg@dQ`KHqw()L*Y>lKi2c{v7>(dz92ZToAe2 z?8ALjQec1iR6ov=*3`^=rjsx1%CJ?^M=Xf##2c4=M8FrH86fYcVM4Z=vVeJZP*W0r zz+LX?uJ?4!%8ex<3LHOHqjW!)UN}B(hfk(qw6@McOy{7to9&ZM;a(N4>rKCoBd9ug zXKxQaUvf3zIxKomcm*g=J|3Q_bqmUYwFyNk{g~HswrgU4fBFd5aF<&3 zNdnm8P~=~`$A!p`yCOpymKK7`97XjI^^(}>`$z93$TD9s#}kUp&2Y3wYWTZ2&6!1< zR12J8PHt7|_IN>ApMr~o$xBG!Q;OYYbaWaRDzhGZ)`$`tB&ahNp755Yury1rsG2aV z4Err}JJc8bLPyMDRrAh4lp79<;EC1t>X4Abv%l^FyDSySna41C92)#^_`)@rKG92B zXLry|k88E(!JObANa@OFu@H|MPZI=E&D;6NQ+ZyfR(mhrDIEhfeg0li>^|h1gzjrC z?%_MVbm0=>LhiBm=<+jPGO9dPQoDbNRr~+m@MhmuJ5$Ab9hus~$S#*=aeiw}M_w#JHM&grb!0Hs?g&y%Rl~<-Z2c^>QUr#mhx_)(%9by}A z$Z*xWyggrL5;!G#kU23L{SwWBnuf|%;m>d@JFD9LqE6~|lTW^+ZzfPfm``TP>=#(!>59!u#w;N5lYU6wihm0f}cE?LId=61yd1WKaTty^s_1Phv2#o;SKSNywEuatI;r(*nAFRt`)YEENXFP zk*n*CtVfoHj?+#(y))p&KTu>@%5b^C^x(73km=yop$K$Au77&@|FdteT%UOmK5DnZPL@Fi&a|#t@uXSb2iz~)(S@i?br;^c>U&VmQeZ@-N9 zU#(|F<}!dbO~G3nXTsyCo(8gmDUSRRd8+~??sL#P(Uioy@!gH!m+$WN%i8#&+580l zr%oe@XK+$`DwtR(&weCgWT1xAi+DwhTM)9O7b)RER&aU0j~k)hdHmkH=!@+aaQ8WA z9Cnm|gKstA0``yW@e{5`oLyzu5?%aP8z8*rhYv6khB3~qCfwwu&WbI<@ zz0kHe=isCDt5q>2{P}rjDS?|SDgjzvMhZe?8}>r!{xtuWhCJmF7GEdUBsQVdF?+o< z>FbE~Pg2hhcWIB*<+nFCciv2D;V&Vg3C!U6PZ01q$a)M{(3@LWwkTIox&M)V;rC_R zuUgLypO6+5*MuVhA325isSXY}2Z0IFvEriHg zJ>Xv9y-$38929~{)WSF)cqsg5WNNtYUG?vH=&2c3$)^&N_X7UJi=CD{0|pZnotUYUK|+)B}K z^t;)=fG8`5*$pK;{DgkF?qxs#kV9^0+BwLo=ywsGS1L#mo7e_p|NYG*Z(DgxlbykJ zt~zoV<@akttN$tGdfnfVz#tU)au6zo-#4knj`<(@fiVri_1#$nD>tU$LypYnZrpX> zw0UVGIQU&r&vh@}z0WhHghBzZjuWYphp3qEYgK@o4)01v>TkB)+Mk2}9?}r@i)Anx zkJTC;TVn&U0_QGntFyo!rfbCOakF#rW+PUSyA7p5>N#3Hf&#kr6<>jIw<4?<6K#sRo$)tWEiuvCd04>(g~~Izb5Od(PeIP!EUa4^Jl5*j z1_iL+*8it_{r@u`+yldl8h5*&g92}XcOF$YT95`V8xqM3HvUS*b!AUU@G+J?eg;GV zRQ$>AA1H%$Os;5zQQ%{RYFjckNssbnGu;|boWJ2SAo^@aQd>idw)K3dJ~RVTjWyM7 zSb|nYz-d97CO_A&B^VL}^3nTq6ev%0ljAvPX^udD4ziRz2d(oTo@A?)=W2v{?T8s`@h=3!!HJ2#ECzLOyI!jL~&5-I^Hh5!78 zpwn-l+rLxWSjjTk^+vJ=g7MhypFfbEPu>(>a(*{=QC=OZW$t_xDPCFSK&9q=aQK(n zbWAlvbz>Jo?W`qdYS=eQt0=nr z`c|r(Xkux`*vZ#rfm1+)dM;6@={ZQhtCzVnWD<}#0X4Ei|3$VTU@}KGt9zz54zg1;Ld4qQBAEKW}IL# zPxMkuxhSI3?8`ng*;~&sN0WY?nADj zn^<6g61o9OD2HC>XFC;y$E9J_Ad_yGkY-3Q^ftC5veqISZ=zp4T0iGhopI$w0t>la z%ymxJt9Re4%7+o*0k%69QMRAdSi`uvz3Bk(@6Z3oKNtN*<8NA}1xkuVKtKhxb}l02 zpDPT6OWwwsjY4%)8<(HHpWvI4=HNSc(QpGjpAicVPs2V1zc~jnh^S2J5048BdPYo} zJ0-$YEtR1oy`kwiRvRUajwDHs>IS_P=LhK-`jT9_`MWkHhp_wgj7Yaq+~BwPJjWrz zqcpJulx|grPSVUH6GsqRn@juNfq#aZ zM2Lk15uB@gbl=o|sH^1ky1nRFAGtOIMtQ^71AB{Q^bpGvLvyNnXLt7!?NI3OQ%6ns z!`qp-D&whz>`|ygExJfx7w~|7>wAhytWPie!$BEI8i!GuEcR_pEcQ_-vVYDox7&uM z*7Z*FYg`PRa*xSPvzFZJBQW(X1|U-AcS^7o&yp6$YWckQkB)|3N{xSWZ3TIEKd~bB z+-GihkhdpyRM77M#|s{B_ogGAv9l=>^%S^AyCTGbA2gBtpUfv$uh30vCM|ktGWJt$ zMzXz`hj6cd+(t;fOd)3f1 z544{P+voUv4f$i1O4Wr(MQcyXM$kny1<)7p2iSb}9QQVfj?^Q2^!ZX>`~sLg&(@PE zr^VX|HV9w4K3%mnC|Cd^QTt-eodX+wI=vAfmKbkBg_1Q;J2DsO@`Uu>crT$=q*J)V z%aHKz_RoOuq>XkKxhE{=kcd~B$I7?Is4AC49?MBVglAMQ`lDX?qhF70vEI(Ay}_zl z+#1HFO~H159wbKt@x+b!kV0@iZP_=go!?nLQOr?p@Es62Of=r^_Ad^M)`9+_+GQ;4ix7H(S|U@vz# zEU&){1o#ZpFL5A~qM6(YdNGE&gY{J)X1@Nm?(|9(V&@MM*BmhdamDda&VB)x2o*)0 zgXWVP%0|+*Ik28%E!AZc0LnRQP8gWnVEWbKw_F`rY*tiwpN14Aj_~Lk|M0)M-V4w4 zM?@qPME7-uMfpm9lmzXFiV8@pW+>hI)$s$wf;U)(ZQZ3G+x|m8&;a(|A(!W!(lW`Z zaW8eBEXa;=a-vn`Nw`%^bcT?^zIhff%bb`y)>6-`^(K|ku83f>kaj~-Xsh0blst^N~yR(Mw`#DVT2hLFj^96EUk$wNjvnpUm~82h(@Mj0}JFdRj(Y?3vb%Y<3j@LZ-X?8enb7n2r`HCY@adbAVxcq(BPNh(wgr(TPqw!e6Wvv#oSFx z`jMzm&CHu^nkm&j-^y(|9*buSQs+qkZqn!8+!m^Faw5cRskJ)`71DP*d&;8WWQn z?E3J6&hI3_j0CO`QF&i1No9Y>k+(t$^u3ROoFJ>Y#$fHgN*3$C{RKQ`EWF<^e-0vC zw#2N|T{R@AV`uZ`{frp8oE+cJ87;kT^(X)CMv#MW?ZY(yMrNIuM$mRDF(Q~?YlUVg zGLW}YNGE9)ka&=90o#Jl>UIg1rR8W>a;$BasylqxaHH6)V*W>hAeL>vsBIU2%ccpC z*m(Nkd>*$+$7%A?qk(3}TY!?-8>u9X4f3TKgU%|nhYKWpX~Q?qzB}d@WZ2nMRlZl@ zQq8#as}*yfE7oDJ?HrsAc8F+`}3^qq@7M@<5JJ$w5bWA?jEA zhm=}@YB6mkw$Mt0yErn;?;zY=ML%Kl5_U%7+BbNDA?MjZ1vah!;98XMxAd|seRu0z zo%qah2UkI=;qbR3L(tn+xUntt!jl|7bmOt>D%ZPDsU1aeqLc&0b6kE}*!=~~AlySm z4TA?Y`{@|#0L5}c2*hQq_;`t@b@V7FYhu#}d2}@>U#i@I_NR$=zpU&jqt93unvq0> zNSha}CQ0C5dANus@)$34TB}`)&J!*ol!XJXR~+l>R8$)2D8?i}_fQw7AW&+vEZWyc zx(M|cD*8}wZ}6EXFW*nDNDS|`xgp$*q9*kli?y9ycl2CO#U*jw<@*|DPo6U&%ALJ8jDH$P!nv zm4Zt`+dCh4bW>plMY`{Rm7PpE|s+J4>BByfuZRz}eY5x0(E!jbE7$F}I z`C@kv;SVRTbNsdG!6vihbgQ<;g0g$=U%&VDI<`Hhk>q+^(}>|s#>k`kDGllZyT z+Zk}aG*b_&&~*+)COy`jezZSN&~X3`*U~n>e-0{VZ>-#I?N|iA>GlzOCjt=H*Y{5i z5|Ix8J4r|VCS9m-gG6NFG$vOsqj-MCVp4cwZ>u)oPC=*5_4kR@4f9`8A;kCtBX@f8 zDMa9c)sj)gke5@4mOht;TVTva@zP!NPnn{GS~Flh4EVD%bNeBL+>tky`#5B48LB&3 zdS46i?zNQs7Wuuv)XW49PSdN$;PE*Ubx0QB`q*{+8=Nsoj0>q~bEd1m^JLVMg{897 z=p^;I_v|=m@4__&kZS{0Gi|)1bqLYCe-wZpq8mfq9r;{%5YDabCNCl=;w_$5xx`)k zjiRlqQO=VT{f8z323yhsjDEfT)}Zx}q={ZlNn)-PInOWfQkcajy7dKqd5E^6%XCvUYtQU*-R*x zL*DV`yto=Hm|6a8FVP0j$`;7u0aHlxTzIlUYcGt6tz=}ublR}SZD*ah+_xZi)aMQN z3T%JcF%ZQ^FDayM-B3V?j%&5Z#oVlxTuWN~-FaY%bpq+2gI-$H2FqVIR)_>Yv8LF~6fJ zzEaQdd_{A@O*7EmR-bCFpM%`PjyC=-UXhV?n9~>Ij)QhfH5AcquhaPbt3}2XmdjozWyXcH?-rAFyv4CDp4J1gu`7S@u+X2vz)8cR%~r$FSvwBivge-0*i7;@ zGHLh_CoMC_)VVh|#>JUNej|Lj2l8#43v-J(V>2)QPVFWKbluc@099O-WwIhq)mpL zbo7ue)m|OH`Oznu<;_6d;vjsf&mg`2A>Iqu&( z*l1gabCNfA`Pitjd5&Fy-O=$8`yF#5(`&IeFwZ+Td>ECyITG~XBC)H-U&VseF|m8- zuQP$|L+wg?>jKrj=_9P#=6BZqE5)KKJQ7&SU=-ilZYI8{WfC4L(Y`ckU+yy9k@mEZ zigMZwej7hVqSiW-#W#D~1U8S&UQKHbh^Ej;fzsIjb4 zoZG8IG;P1DOxUa;s}OB`kahvc=fr^RgkP9e0%!@Uhlt=EXzb?LklBsXw#r9n)}lPy zFLZNYgo7$JDvl!ltDU~FXcDMZ-`KBOkEe=8T_~U&cEtBH)OGP0RMjxpN$pW z)EGu%Zem5x6dqjO&nzxK(ey2al5+Z&7W)t2lqA_n{8Z1NaomTU<7(WO z9S@+<{l|yUL%4eU%DCffNO?7P!eM;Fy5+8DEu$~JaoxMKz)e;k_{mvKBILZ3{Wk^5c>#m^)hSv@oX2QB>AnPD2eqsRUCNumm*<9zC zpjX%6tP<>lhf|8;t`?PA2_{~AyL_Gs(rYfAl6$QNJhH@Sg4*)qf+7U(&I?5jCRpX> zQcqMza0l|G-&ftTNS=G( zp+EV;Hh=9Ef4uZAwm@x9*F^FJy4HaOw`$NXm z^tzV;S!Q%SJwETqd+a4Hv85(2{4;b^n~TvO5;rR_NNnZt4WbEa zl|71iAHL)h$*K((^}YU2X{HOfXY-^)oM>y!rJtiOOcjxNeP>ayP_*_`CDdph7G^xw zEMkjL@3_bS{c;ArtvvV6sIwM8MUeD*B?K$%xiI zH$BqRE><@ly?v|DypOShWK=i=kDJ3ftiR^SWE0D=98+LFZaNMp!sh3E26t%B3=3a< zQxEsnm3M7#iXYws(%785Wul-t4z@M5aB1++-S1iR7{e3iD<`Tu198Xjst2#pj3WnL zAq1stM4nop&fre$-fxTe7&)H#s4r3Td%`7xzt>kxhi`UFjD@sOR_~iF0#Uh9#*M2G z!KwGQY8~){6DQEVPQX_PuWK>>%T@f-w{R28Za4U@y*?v;NXa1Fa4?{(De(HNfDAJo znwiIKJ#8oKxY{ATGa~BiKrqdZPQJlHaTl*gnlzc-MvVkkd>Xh7O!?4rD?HD5ffH{K z0ka`H%coGOSFt~!Igv9fts*9&Znxwbb@1V}^gHj|=wynO>L4Aw42D0w-zNgsGn_No z(0^?<`781APTOxDaMx2Fs6F#8)Rq{83^;meQXP-;i#9$ILm+LDzQJBpmOs&qr@HlVa z&^+XK13AoI=y3A`wlB(mfS|(ZP3s}qXGx6DfNq8!{>52!Y7_99I*Mf=>=o>f-^>B;-%e}J^;<`@xPnmGM9 zXiBbehquk`7UjjSTZ$W0TPnQuuSZJ3ETrDkGy7`!=p6hDOk+G;&L#EoQ_Ak?dFjJr zVffQwDbM%t$(~nkG^QrqS^Qy2bcNXgR0>MSQJ2_fzfK&65=)A}!44ivXGMI|J#K3A z&W{~ZKhz7=r6q3>et|C#?hitFZ8y$L zcTnEI$u(Y1W3GjGXP9nB>GN2XHF4}&gSMTs`5`Zq5Mx^-xQn|jr)8@x(M(PiwPo>b z@81(g$rD2q&VHs6&I|_G_UE=0u#=dCsgCN)cu5V3uQj#^zcAOhKPH%cR!Q1+*2oc6 z8D7a_XW!7N+MAQhH?V0(xFEee!}uFddfsEx zpC%GEI-hQ~HQTSJT`}G;mnFVOJ}URhojeY3$~rMpWRfy}`sqYxF}9AA8&~OP0;Di& zXr_ZJWv^%sowidhK3eA&i}(|&@?;KF+5*Cj>jEUYoG{?6u9)*2lf0rm? zqSNN?tDIeA=Y4n? zY7y3+v^(rY7IA8YLOw3Fjd8ofqP#9Fc+%-J^MbDnu^3kRGi0nUbKnl87H}@1I8Q zKc;d)yN}%KX&2ok{OJ??P?Hkrh7D&C10Cd)&%da41aSVqF4Bp+O=1xo^7j))uJIojRgUD zK`B66lW#}H!B*dk^m=u?&DniKAm(yqJrzF9SyqvPnf~#8bJb_*vC7EtC~1q>+dc;n z{qese?98MV_eg#xf0(VQtZdACMJ`5%_Fq4%PaFqx@&&M64jf{Fr#!(doa!8xF_{VL zJE3doVYuJe^ncLCSqNT8Y*r9nuugpvR_;@)9`1W+u5upuB1)yG-|&kNmtnu$ z6*e0sW^90}m3e)&=eNjQy!mpMa`a9`o=RHfVl_+Pi6oN$&Xq#8*o<(eZ}jUNyEpwl z)O3`bgZ!iOiJoo@+&+Ob zhMs)=qn}YBKp~+?_uDReu7fqw5p&b^b#jRrzdTTR7bKIZ-*@mkiRWiN4^W`Wdt1f*YeP{t zGD-`h)v68;t!F43!Ax=Y6GvtMp?YrkbB6R|TgIbK3ft?S6ep}6S>QVaO50ViQ3V6P zwRYV0Dr#EQD67bE`!uJ`H*^rOsxvPm8?8KK=)l(kr}cEBg{vpx9y>iAoB;#=l<)a} z&>*rXfQQU(IR~+oKFr?qoQM&BwR^p} xjT-GP26Z(nfBv50N;Bj^x5#+wD^Vb-X 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 WT+hisARi&+{{po57GQ$\n", + "\n", + "`PyTorch` is one of the largest DL libaries widely used around the globe. It offers a very Pythonic API to build layers and compose them together. In fact, data processing is also made easy using the multitude of tools and wrappers that are at your disposal – it is the complete workbench. Of course, there are other popular libraries such as `TensorFlow`, but they require you to understand how to understand \"computation graphs,\" and thus we feel are less accessible for beginners. Hence, we decided to use PyTorch for CS2109S. \n", + "\n", + "In *Problem Set 6*, we will attempt to help you learn the `PyTorch` API by having you build a simple deep neural network and training it locally on your system via backpropagation and stochastic gradient descent. Subsequently, you will also learn how to build data processing pipelines to prepare your data before ingestion into your model(s)." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "afedfcd3", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-02T04:57:17.202366Z", + "start_time": "2024-04-02T04:57:16.227482Z" + } + }, + "outputs": [], + "source": [ + "# RUN THIS CELL FIRST\n", + "import math\n", + "from collections import OrderedDict\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import torch\n", + "import torch.nn as nn\n", + "import numpy as np\n", + "from numpy import allclose, isclose" + ] + }, + { + "cell_type": "markdown", + "id": "a5482ebb", + "metadata": {}, + "source": [ + "# 1 Tensors in PyTorch\n", + "\n", + "### 1.1 Concept - What are Tensors?\n", + "\n", + "In Linear Algebra, you've learned about vectors – they are 1-dimensional (1D) serial arrays (like `[1, 2, 3, 4, 23, 18]`) containing a column (or row) of information. You've also learned about matrices – they are \"rectangles\" (i.e., 2D) that also capture elements.\n", + "\n", + "**Tensors** generalise the concept of matrices: they are $n$-dimensional arrays that contain or represent information. In *PyTorch*, everything is defined as a `tensor`. It's analogous to `np.array(...)` from *NumPy*. A `tensor` object in *PyTorch* looks like this:\n", + "\n", + "\n", + "\n", + "\n", + "---\n", + "The following are some mappings of useful functions between Numpy and Pytorch, in fact, they are so similar that there is a function `torch.from_numpy(ndarray)` which transforms a numpy array into a pytorch tensor! The main difference in the functions in the table below is that Numpy and Pytorch functions takes as input and gives as output numpy array or torch tensors respectively. PyTorch tensors also have additional functionality for GPU acceleration. Refer to this [website](https://pytorch-for-numpy-users.wkentaro.com/) for more information.\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "id": "bcc457e7", + "metadata": {}, + "source": [ + "### 1.1.1 Demo - Tensor functions\n", + "\n", + "Notice that tensors have a `.grad` attribute. This is used for automatic gradient computation. \n", + "To create tensors, you can use the `torch.tensor(...)` constructor: \n", + "\n", + "A 0-dimensional tensor: `torch.tensor(5.0)` \n", + "A 1-dimensional tensor: `torch.tensor([1.0, 2.0, 3.0])` \n", + "A 2-dimensional tensor: `torch.tensor([[.4, .3], [.1, .2]])` \n", + "\n", + "If automatic gradient computation is required, then the equivalent constructors will be: \n", + "`torch.tensor(5.0, requires_grad=True)` \n", + "`torch.tensor([1.0, 2.0, 3.0], requires_grad=True)` \n", + "`torch.tensor([[.4, .3], [.1, .2]], requires_grad=True)` \n", + "\n", + "We can call detach() on these tensors to stop them from being traced for gradient computation, returning us the tensors without requires_grad=True.\n", + "\n", + "We can call item() on our tensors to return the value of our tensor as a standard python number:\n", + "\n", + "`>>> torch.tensor([1.0]).item()\n", + "1.0`\n", + "\n", + "The following code block shows how we can make use of all these functions introduced." + ] + }, + { + "cell_type": "code", + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Gradient of y with respect to x: tensor([6.])\n", + "Gradient of x after detachment: None\n", + "Value of x as a Python number: 2.0\n" + ] + } + ], + "source": [ + "# Create a tensor with requires_grad set to True\n", + "x = torch.tensor([2.0], requires_grad=True)\n", + "\n", + "# Compute the gradient of a simple expression using backward\n", + "y = x**2 + 2 * x\n", + "y.backward()\n", + "\n", + "# Print the derivative value of y i.e dy/dx = 2x + 2 = 6.0.\n", + "print(\"Gradient of y with respect to x:\", x.grad)\n", + "\n", + "# Detach the gradient of x\n", + "x = x.detach()\n", + "\n", + "# Print the gradient of x after detachment\n", + "print(\"Gradient of x after detachment:\", x.grad)\n", + "\n", + "# Extract the scalar value of a tensor as a Python number\n", + "x_value = x.item()\n", + "print(\"Value of x as a Python number:\", x_value)" + ], + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-02T01:51:48.246718Z", + "start_time": "2024-04-02T01:51:48.237176Z" + } + }, + "id": "a937e9bf", + "execution_count": 2 + }, + { + "cell_type": "markdown", + "source": [ + "### 1.1.2 Demo - Working with Tensors\n", + "\n", + "Here, we use `torch.linspace` to create a `torch.tensor`. In PyTorch, and Machine Learning in general, tensors form the basis of all operations.\n", + "\n", + "We then make use of the built-in *PyTorch* function `torch.sin` to create the corresponding y-values of a sine function, and plot the points using *Matplotlib*." + ], + "metadata": {}, + "id": "3a9b1300" + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "be36fbc0", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-02T01:51:50.250837Z", + "start_time": "2024-04-02T01:51:50.149722Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": "

", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiIAAAGxCAYAAABfrt1aAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAABD3klEQVR4nO3dd3RUZeLG8WcyyaQXQkhCSKEXqaFXEVQUKyggFgQFFQVcF3dVZFewoq69gKgUK2BD7MpKFULvIJ0QSiChJSGkztzfH5HsLwIxgYR3knw/58w55s6de59cSebJO++912ZZliUAAAADPEwHAAAAVRdFBAAAGEMRAQAAxlBEAACAMRQRAABgDEUEAAAYQxEBAADGUEQAAIAxFBEAAGAMRQQoxrJly9S/f3/VrFlTDodDkZGR6tevnxISEkq1nfHjx8tms51XhgULFshms2nBggXn9fqSuuyyy3TZZZf95Xq5ubkaPny4atasKbvdrlatWpVrrr8yceJETZ8+/YzliYmJstlsZ32uvP3www8aP358uWz7zTffVP369eVwOGSz2XTixAkNGTJEtWvXLrLec889p6+//rpcMgBlygJwVm+88Ybl4eFhdezY0frwww+thQsXWh999JHVsWNHy8PDw3rzzTdLvK19+/ZZCQkJ55UjLS3NSkhIsNLS0s7r9SXVvXt3q3v37n+53muvvWZJst58801r6dKl1oYNG8o1119p2rTpWXNnZ2dbCQkJVkpKykXPNGLECKs8fr2uXbvWkmQNGzbMWrx4sZWQkGDl5+dbO3futNasWVNkXX9/f2vw4MFlngEoa56GexDglpYsWaKHHnpI11xzjWbPni1Pz//9qAwcOFB9+/bV3/72N8XHx6tLly7n3M6pU6fk5+en6OhoRUdHn1eWoKAgdezY8bxeWx42bdokX19fjRw50nSUYnl7e7vVcSsLmzdvliTdc889at++feHyevXqmYoEXDjTTQhwR9dee61lt9utffv2nfX5pKQky263W9ddd13hsnHjxlmSrNWrV1s333yzFRISYkVGRhZ57v/Lzs62Ro8ebUVERFi+vr5Wt27drFWrVllxcXFF/pKdP3++JcmaP39+4bLBgwdb/v7+1o4dO6zevXtb/v7+VnR0tDV69GgrOzu7yH7Gjx9vtW/f3qpWrZoVGBhoxcfHW++//77lcrmKrFeSERFJZzymTZtm7dmzp/C/z/aacePGnXGcNm3aZA0cONAKCgqywsPDrbvuuss6ceJEkdc6nU7rjTfesFq2bGn5+PhYwcHBVocOHaw5c+ZYlmVZcXFxZ+SJi4uzLMs6Z6bFixdbPXv2tAICAixfX1+rU6dO1nfffVdknWnTplmSrHnz5lnDhw+3qlevboWGhlp9+/a1Dhw4UOwxGjx48FmP0549eyzLsqysrCzrscces2rXrm15eXlZUVFR1gMPPGAdP3682O127979jG2e/ncyePDgwu/79DH/86Mko12ACYyIAH/idDo1f/58tW3b9pyjGDExMWrTpo3mzZsnp9Mpu91e+NxNN92kgQMHavjw4crMzDznfu666y7NmjVLjzzyiHr27KktW7aob9++Sk9PL1HOvLw83XDDDRo6dKgefvhhLVq0SE8//bSCg4P1xBNPFK6XmJio++67T7GxsZIK5r2MGjVKBw4cKLJeSSQkJOjpp5/W/PnzNW/ePEkFf40X932ey80336xbbrlFQ4cO1caNGzVmzBhJ0tSpUwvXGTJkiD7++GMNHTpUTz31lBwOh9asWaPExERJ0uzZs9WvXz8FBwdr4sSJkgpGQs5l4cKFuvLKK9WiRQtNmTJF3t7emjhxoq6//nrNmDFDt9xyS5H1hw0bpmuvvVaffvqp9u3bp3/+85+64447Cr/3s/n3v/+tzMxMffHFF0XmEtWsWVOWZalPnz769ddfNWbMGHXr1k0bNmzQuHHjlJCQoISEhHPmnzhxombMmKFnnnlG06ZNU+PGjVWjRo2zrpuQkKCePXuqR48e+ve//y2pYGQNcEummxDgbg4dOmRJsgYOHFjserfccoslyTp8+LBlWf/7S/+JJ544Y90/j4hs3rzZkmQ9+uijRdabMWNGkb90LevcIyKSrM8++6zI66+55hqrUaNG58zsdDqtvLw866mnnrKqV69eZFSkpHNETo/G/H/nMyLy4osvFlnvgQcesHx8fAozLVq0yJJkjR07ttg855ojcrZMHTt2tMLDw62MjIzCZfn5+VazZs2s6Ojown2fHhF54IEHimzzxRdftCRZycnJxWY61xyRn3766azf+6xZsyxJ1rvvvlvsdk/nWrlyZZHlfx4RsSzmiKDi4KwZ4DxZliVJZ5wNc/PNN//laxcuXChJGjBgQJHl/fr1KzIfpTg2m03XX399kWUtWrTQ3r17iyybN2+errjiCgUHB8tut8vLy0tPPPGEjh49qpSUlBLtqzzccMMNRb5u0aKFsrOzCzP9+OOPkqQRI0aUyf4yMzO1fPly9evXTwEBAYXL7Xa7Bg0apP3792vbtm1/mVHSGce4pE6PpAwZMqTI8v79+8vf31+//vrreW0XqMgoIsCfhIWFyc/PT3v27Cl2vcTERPn5+Sk0NLTI8po1a/7lPo4ePSpJioiIKLLc09NT1atXL1FOPz8/+fj4FFnm7e2t7Ozswq9XrFihXr16SZLee+89LVmyRCtXrtTYsWMlSVlZWSXaV3n48/d5+iOJ05lSU1Nlt9sVGRlZJvs7fvy4LMs66/+fqKgoSf/7/1LSjKV19OhReXp6nvGRis1mU2Rk5Bn7B6oCigjwJ3a7XT169NCqVau0f//+s66zf/9+rV69Wj179iwyP0Q6c4TkbE6/wR0+fLjI8vz8/DJ9M5o5c6a8vLz03XffacCAAercubPatm1bZts/7XQhysnJKbL8Qr6XGjVqyOl06tChQxeU7bRq1arJw8NDycnJZzx38OBBSQUltDxVr15d+fn5Sk1NLbLcsiwdOnSo3PcPuCOKCHAWY8aMkWVZeuCBB+R0Oos853Q6df/998uyrMIJlqV16aWXSpJmzZpVZPkXX3yh/Pz88wt9FjabTZ6enkXKUlZWlj766KMy24dUMLLj4+OjDRs2FFk+Z86c895m7969JUmTJk0qdj1vb+8SjVD4+/urQ4cO+uqrr4qs73K59PHHHys6OloNGzY877x/ziSdOXJy+eWXS5I+/vjjIsu//PJLZWZmFj5fVhlMjngBJcVZM8BZdOnSRa+99poeeughde3aVSNHjlRsbKySkpL09ttva/ny5XrttdfUuXPn89p+06ZNdeutt+rll1+W3W5Xz549tXnzZr388ssKDg6Wh0fZ/I1w7bXX6pVXXtFtt92me++9V0ePHtVLL71U7Jkl58Nms+mOO+7Q1KlTVa9ePbVs2VIrVqzQp59+et7b7NatmwYNGqRnnnlGhw8f1nXXXSdvb2+tXbtWfn5+GjVqlCSpefPmmjlzpmbNmqW6devKx8dHzZs3P+s2J0yYoCuvvFI9evTQP/7xDzkcDk2cOFGbNm3SjBkzzvvqt392ev8vvPCCevfuLbvdrhYtWujKK6/UVVddpUcffVTp6enq0qVL4Vkz8fHxGjRoUJns/3SGBQsW6Ntvv1XNmjUVGBioRo0aldn2gbJCEQHOYdSoUWrXrp1efvllPfzwwzp69KhCQ0PVtWtX/fbbb+rUqdMFbX/atGmqWbOmpkyZoldffVWtWrXSZ599pquvvlohISFl8j307NlTU6dO1QsvvKDrr79etWrV0j333KPw8HANHTq0TPZx2ssvvyxJevHFF3Xy5En17NlT33333RmXHi+N6dOnq3Xr1poyZYqmT58uX19fXXLJJXr88ccL13nyySeVnJyse+65RxkZGYqLiys8vffPunfvrnnz5mncuHEaMmSIXC6XWrZsqW+++UbXXXfdeef8s9tuu01LlizRxIkT9dRTT8myLO3Zs0e1a9fW119/rfHjx2vatGl69tlnFRYWpkGDBum5554r04L4+uuva8SIERo4cKBOnTql7t27l/ttAoDzYbNOT/0HYNzSpUvVpUsXffLJJ7rttttMxwGAckcRAQyZO3euEhIS1KZNG/n6+mr9+vV6/vnnFRwcrA0bNpxxRgwAVEZ8NAMYEhQUpF9++UWvvfaaMjIyFBYWpt69e2vChAmUEABVBiMiAADAGE7fBQAAxlBEAACAMRQRAABgjFtPVnW5XDp48KACAwPL7EJDAACgfFmWpYyMDEVFRf3lBRrduogcPHhQMTExpmMAAIDzsG/fPkVHRxe7jlsXkcDAQEkF30hQUJDhNAAAoCTS09MVExNT+D5eHLcuIqc/jgkKCqKIAABQwZRkWgWTVQEAgDEUEQAAYAxFBAAAGOPWc0QAALgQlmUpPz9fTqfTdJRKx8vLS3a7/YK3QxEBAFRKubm5Sk5O1qlTp0xHqZRsNpuio6MVEBBwQduhiAAAKh2Xy6U9e/bIbrcrKipKDoeDC2OWIcuylJqaqv3796tBgwYXNDJCEQEAVDq5ublyuVyKiYmRn5+f6TiVUo0aNZSYmKi8vLwLKiJMVgUAVFp/dXlxnL+yGmHi/xAAADCGIgIAAIyhiAAAUEEMGTJEffr0KfXr5s2bp8aNG8vlcpVo/Y0bNyo6OlqZmZml3ldpUUQAAKggXn/9dU2fPr3Ur3vkkUc0duzYEs+Zad68udq3b69XX3211PsqLYoIAAAVRHBwsEJCQkr1mqVLl2rHjh3q379/qV531113adKkSeV+MTiKCACgSrAsS6dy8408LMsqVdYvvvhCzZs3l6+vr6pXr64rrrhCmZmZZ3w0c9lll+nBBx/UI488otDQUEVGRmr8+PFFtjVz5kz16tVLPj4+hcfhiiuu0NVXX12Y68SJE4qNjdXYsWMLX3fVVVfp6NGjWrhw4fkd8BLiOiIAgCohK8+pS5742ci+tzx1lfwcJXvLTU5O1q233qoXX3xRffv2VUZGhhYvXnzOMvPBBx9o9OjRWr58uRISEjRkyBB16dJFV155pSRp0aJFuvXWWwvXt9ls+uCDD9S8eXO98cYb+tvf/qbhw4crIiKiSIlxOBxq2bKlFi9erJ49e57/N/8XKCIAALiR5ORk5efn66abblJcXJykgjkb59KiRQuNGzdOktSgQQO99dZb+vXXXwuLSGJioqKiooq8platWpo8ebIGDRqkw4cP69tvv9XatWvl5eV1xnqJiYll+N2diSICAKgSfL3s2vLUVcb2XVItW7bU5ZdfrubNm+uqq65Sr1691K9fP1WrVu2s67do0aLI1zVr1lRKSkrh11lZWYUfy/x//fv31+zZszVhwgRNmjRJDRs2PDO3r2+536uHIgIAqBJsNluJPx4xyW63a+7cuVq6dKl++eUXvfnmmxo7dqyWL19+1vX/PIphs9mKnKYbFham48ePn/G6U6dOafXq1bLb7dqxY8dZt33s2DHVq1fvAr6bv8ZkVQAA3IzNZlOXLl305JNPau3atXI4HJo9e/Z5bSs+Pl5btmw5Y/nDDz8sDw8P/fjjj3rjjTc0b968M9bZtGmT4uPjz2u/JUURAQDAjSxfvlzPPfecVq1apaSkJH311VdKTU1VkyZNzmt7V111lX777bciy77//ntNnTpVn3zyia688ko99thjGjx4cJGRk8TERB04cEBXXHHFBX0/f4UiAgCAGwkKCtKiRYt0zTXXqGHDhvrXv/6ll19+Wb179z6v7d1xxx3asmWLtm3bJklKTU3V0KFDNX78eLVu3VqSNG7cOEVFRWn48OGFr5sxY4Z69epVOGG2vNis0p7cfBGlp6crODhYaWlpCgoKMh0HAFBBZGdna8+ePapTp85ZJ2pWNY888ojS0tI0efLkEq2fk5OjBg0aaMaMGerSpctZ1ynuGJfm/ZsREQAAKrmxY8cqLi6uxFdJ3bt3r8aOHXvOElKW3H/6MAAAuCDBwcF6/PHHS7x+w4YNz3o6b3lgRAQAABhDEQEAAMZQRAAAlZYbn49R4ZXVsaWIAAAqndNXGy3vy5NXZbm5uZIKrgR7IZisCgCodOx2u0JCQgrvueLn5yebzWY4VeXhcrmUmpoqPz8/eXpeWJWgiAAAKqXIyEhJKnIDOJQdDw8PxcbGXnDBo4gAAColm82mmjVrKjw8XHl5eabjVDoOh0MeHhc+w4MiAgCo1Ox2+wXPY0D5YbIqAAAwhiICAACMKdciMmHCBLVr106BgYEKDw9Xnz59Cu/+BwAAUK5FZOHChRoxYoSWLVumuXPnKj8/X7169VJmZmZ57hYAAFQQNusiXnYuNTVV4eHhWrhwoS699NK/XL80txEGAADuoTTv3xf1rJm0tDRJUmho6Fmfz8nJUU5OTuHX6enpFyUXAAAw46JNVrUsS6NHj1bXrl3VrFmzs64zYcIEBQcHFz5iYmIuVjwAAGDARftoZsSIEfr+++/122+/KTo6+qzrnG1EJCYmho9mAACoQNzuo5lRo0bpm2++0aJFi85ZQiTJ29tb3t7eFyMSAABwA+VaRCzL0qhRozR79mwtWLBAderUKc/dAQCACqZci8iIESP06aefas6cOQoMDNShQ4ckScHBwfL19S3PXQMAgAqgXOeInOuOfNOmTdOQIUP+8vWcvgsAQMXjNnNELuIlSgAAQAXEvWYAAIAxFBEAAGAMRQQAABhDEQEAAMZQRAAAgDEUEQAAYAxFBAAAGEMRAQAAxlBEAACAMRQRAABgDEUEAAAYQxEBAADGUEQAAIAxFBEAAGAMRQQAABhDEQEAAMZQRAAAgDEUEQAAYAxFBAAAGEMRAQAAxlBEAACAMRQRAABgDEUEAAAYQxEBAADGUEQAAIAxFBEAAGAMRQQAABhDEQEAAMZQRAAAgDEUEQAAYAxFBAAAGEMRAQAAxlBEAACAMRQRAABgDEUEAAAYQxEBAADGUEQAAIAxFBEAAGAMRQQAABhDEQEAAMZQRAAAgDEUEQAAYAxFBAAAGEMRAQAAxlBEAACAMRQRAABgDEUEAAAYQxEBAADGUEQAAIAxFBEAAGAMRQQAABhDEQEAAMZQRAAAgDEUEQAAYAxFBAAAGEMRAQAAxlBEAACAMRQRAABgDEUEAAAYQxEBAADGUEQAAIAx5VpEFi1apOuvv15RUVGy2Wz6+uuvy3N3AACgginXIpKZmamWLVvqrbfeKs/dAACACsqzPDfeu3dv9e7duzx3AQAoZ1m5TqVl5SkjO0/p2XlKz86Xy2XJsiRLkmVZ8nXYFeDtWfDw8VSov0PennbT0VEBlGsRKa2cnBzl5OQUfp2enm4wDQBUHWmn8rT1ULq2H87QzpSTOnAiSwdOZOvgiSylZeWd1zbDAhyKCPJRzWAfxVX3V4PwADWICFT98AAF+3qV8XeAisqtisiECRP05JNPmo4BAJVaTr5Tmw6ka/XeY1qVeFzr95/Q4fScYl9j97ApyMdTQb5eCvD2lKeHTbLZ5GEreD4r16mTOfkFj+x85bssHTmZqyMnc7X54Jl/VEZX81Xr2GqKjw1RfGw1NY0Kkped8yeqIptlWdZF2ZHNptmzZ6tPnz7nXOdsIyIxMTFKS0tTUFDQRUgJAJWPZVnakXJSC7alaOH2VK1MPK7cfNcZ69UK8VWjyEA1iAhQTDU/1armq1ohvooM9lGgt6dsNluJ93f8VJ6S07J0OD1bB05ka09qpnakFIy2JKdln/Eaf4ddnepVV7cGNXRpwxqqXd2vxPuD+0lPT1dwcHCJ3r/dakTE29tb3t7epmMAQIXncllatfe4vt9wUHO3HNbBP735V/d3qHVcNbWNq6bWcdXUODJQgT5l83GJzWZTqL9Dof4ONY0KPuP59Ow8bdiXprVJx7V23wmtSTquE6fy9N/fU/Tf31MkSXHV/dS7WU1d27ymmtUKopRUYm5VRAAA58+yLG3Yn6av1x3QDxuTi3zc4u3poY51q6t7w4IRh3o1/I29uQf5eKlrgzB1bRAmqaA0bUlO1+IdR7Roe6pW7T2mvUdP6Z2Fu/TOwl2Kruar61pEqV+baNUPDzCSGeWnXD+aOXnypHbu3ClJio+P1yuvvKIePXooNDRUsbGxf/n60gztAEBVlXYqT1+vO6CZK/fp9+T/zccI9PFUr0sidW2LSHWuFyYfr4pxFktmTr7mb0vRjxsPad7WFGXlOQufax0bov5tY3Rdi5plNoKDslea9+9yLSILFixQjx49zlg+ePBgTZ8+/S9fTxEBgHPbdCBNU5fs0fcbkpXzx5wPh6eHrm4aqRtaRqlbw7AKfwptVq5T87el6Ks1+zV/W6qcroK3LH+HXf3aRGtIlzqqE+ZvOCX+zG2KyIWiiABAUS6XpfnbUvTe4t1atvtY4fJGEYEa2D5GfeNrKcTPYTBh+UlJz9bstQc0a9U+7U7NlCTZbFKPRuG6u0sddalfnbkkboIiAgCVTJ7TpdlrD2jywl3a9cebsN3Dputa1NTgzrUVHxNSZd6ELcvSkp1HNXXJHs3bmlK4vFmtII3q2UBXNomQh0fVOBbuiiICAJVE/h8F5M15O5V07JQkKdDbU7d2iNWQzrUVFeJrOKFZu1NP6oOlifps1f7CuSSNIwP14OUNdHXTSAqJIRQRAKjgnC5L36w/oNf/u0OJRwsKSHV/h+69tK5u6xDLRM0/OZaZqym/7dYHS/fqZE6+pIKPqx7t3Ug9GoVXmdEid0ERAYAK7LcdR/TsD78XngET+kcBubNTnPwcXHWhOCdO5WrqkkRNW7JHGdkFhaRDnVA9fk0TtYwJMRuuCqGIAEAFtDMlQ8/9sLVw3kOgj6eGd6+nIZ1ry9+bAlIaaafyNHHhTk1bklh4FdlrW9TUY1c3Vkyon+F0lR9FBAAqkLSsPL3yyzZ9vDxJTpclTw+b7ugYpwcvb6BQ/8p5BszFcuBEll75Zbu+WrtfllVwYbf7L6un4d3rVZjrqlREFBEAqAAsy9LX6w7o2e9/15GTuZKkKy+J0JjejVW3BlcQLUtbDqbrme+3aOmuo5Kk2FA/jbv+El3eJMJwssqJIgIAbm5nykn9++tNSthd8MZYt4a/nr6xmbrUDzOcrPKyLEvfbUjWs9//rkPpBffeuaJJuMZd35SPa8oYRQQA3FROvlNvz9upSQt3Kc9pydvTQ6N61tc9l9at8FdBrSgyc/L1xrwdmrJ4j/Jdlvwcdj1yVSPd2ak2p/uWEYoIALihDftP6J+fb9C2wxmSpJ6Nw/XkDfw1bsrOlAw9/tUmrUgsuEJtu9rV9MLNLfhYrAxQRADAjeTkO/XGrzv0zsLdcrosVfd36Ok+zdS7WSTXtzDM5bL0yfK9ev7HrcrMdcrh6aG/X9FQ93SrI0+7h+l4FRZFBADcxMb9aXr483XafvikJOm6FjX15A1NVT3A23Ay/H/7j5/S47M3adH2VEkFd/l99ZZWiqvODfXOB0UEAAxzuSxNXrRbL/+yTfkuS2EBDj19YzP1bl7TdDScg2VZ+nLNAT357WZlZOfL32HXuBuaqn+baEauSokiAgAGHUrL1ujP1hWeKtq7WaSe7duca4JUEPuPn9Loz9ZrxZ6CuSO9m0Xqub7NVY3/fyVGEQEAQ37efEiPfrlBJ07lydfLrvE3XKIBbWP4i7qCcbosTV60S6/8sl35LksRQd56ZUArTq8uIYoIAFxk2XlOPfXdFn26PElSwS3pXx8Yr3qcgVGhbdyfpr/NWqvdqZmy2aRRPRvob5c3kJ3TfItVmvdvpgQDwAXaezRTN01cWlhC7ru0rr66vwslpBJoHh2s70Z11a3tY2RZ0hu/7tCdU5crNSPHdLRKgxERALgAv2w+pIc/X6+M7HyF+jv02i2tdGnDGqZjoRx8vfaAHp+9UadynaoR6K03b41Xx7rVTcdyS4yIAEA5y3e69PyPW3XvR6uVkZ2v1rEh+v7BrpSQSqxPfC19M7KLGoQHKDUjR7e9t0xvz98pl8tt/56vECgiAFBKKRnZumPKcr2zcJck6a4utTXz3k6qGexrOBnKW/3wQM0Z2UU3xdeSy5L+8/M23ffxamVk55mOVmFRRACgFNbtO6Hr3vhNy3Yfk7/Drrdui9e465vK4cmv06rCz+Gplwe01PM3NZfD7qG5Ww6r78Sl2nMk03S0ComfHAAoodlr92vA5ASlZOSoQXiA5ozsqutaRJmOBQNsNpsGto/VrPs6KiLIWztTTuqGt37Tgm0ppqNVOBQRAPgLTpelCT/8rr/PWq/cfJeuaBKh2SO6qH44Z8VUdfGx1fTtyK5qHRuijOx83TV9pSYt2CU3Pg/E7VBEAKAY6dl5GvbBSk1etFuSNLJHfb07qI0CvD0NJ4O7CA/y0Yx7Oxae4vvCT1s1asZaZeU6TUerEPhJAoBz2HMkU8M+WKldqZny9vTQf/q31A0t+SgGZ/L2tOu5vs11SVSwnvxms77bkKx9x07pvcFtFR7oYzqeW2NEBADOYumuI+rz9hLtSs1UZJCPPh/eiRKCYtlsNg3qGKdPhnVQiJ+X1u9PU9+3l2rboQzT0dwaRQQA/uTL1fs1eOoKpWXlqVVMiL4Z2UUtokNMx0IF0aFudc1+oIvqhPnrwIks3TxpqRZuTzUdy21RRADgD5Zl6fX/7tDDn69XntPStS1qaua9HRUexNA6SqdOmL9mP9BZHeqE6mROvu6evlIfLdtrOpZboogAgKTcfJf++cUGvfrf7ZKk+7rX1ZsD4+XjZTecDBVViJ9DHw3toJtbR8vpsvTvrzfp6e+2yMmVWIugiACo8tKz83T39JX6YvV+edikZ/o005jeTeTBHVZxgRyeHnqpfwv986pGkqQpv+3RA5+sVnYeZ9ScRhEBUKUdOJGlfpOW6redR+TnsGvK4Ha6o2Oc6VioRGw2m0b0qK+3bouXw+6hnzcf1qApy5V2isvCSxQRAFXY78np6vv2Em0/fFLhgd767L5O6tE43HQsVFLXtYjSh0PbK9DHUysTj6v/5KU6eCLLdCzjKCIAqqQVe44VXq69YUSAZo/ooma1gk3HQiXXsW51fT68kyKDfLT98EndNHGpth+u2qf3UkQAVDlztxQMjWdk56td7Wr6/L7OqhXCnXNxcTSODNKXD3RW/fAAHUrPVr9JS7VizzHTsYyhiACoUj5btU/DP16tnHyXrmgSro+GdlCwn5fpWKhiaoX46ovhndQmrprSs/N1x5Tl+mnTIdOxjKCIAKgy3lm4S498sUFOl6V+baL1zh1tOD0XxoT4OfTJsA66okmEcvNdeuCT1ZqxIsl0rIuOIgKg0nO5LD37/RY9/+NWSQXXCPlPvxbytPMrEGb5eNn1zh2tdWv7GLksacxXG/Xuol2mY11U3PQOQKWW53Tp0S836Ks1ByRJY69ponsurWs4FfA/nnYPPde3uYJ9HXpn4S4998NWpWfl6+FeDWWzVf5r2VBEAFRaOflOjfx0reZuOSy7h00v3txCN7eJNh0LOIPNZtNjvRsryNdTL/60TW/N36n07DyNv75ppb+wHuOSACqlrFynhn2wSnO3HJbD00PvDmpDCYHbe+Cy+nq6TzPZbNKHCXv18Ofrle90mY5VrigiACqdjOw8DZ66Qot3FFwtdfqQdrq8SYTpWECJDOoYp1cHtJLdw6bZaw/o/k/WVOpLwlNEAFQqJ07l6o73l2tF4jEF+njqo6Ed1Ll+mOlYQKn0ia+lyXe0kcPTQ3O3HNbd01fqZE6+6VjlgiICoNJIzcjRwHeXaf3+NIX6OzTjno5qE1fNdCzgvFxxSYQ+uKu9/B12Ld11VHe8XznvT0MRAVApHDyRpVsmJ2jroQyFB3pr1r0duWQ7KrxO9arr03s6KsTPS+v2ndBt7y/T8cxc07HKFEUEQIW392im+r+ToN1HMlUrxFefD++kBhGBpmMBZaJlTIhm3ttR1f0d2nwwXbe+t0xHTuaYjlVmKCIAKrSdKRkaMDlBB05kqU6Yvz4f3klx1f1NxwLKVOPIIM26r6PCA7219VCGbpmcoMPp2aZjlQmKCIAKa8vBdA2YvEyH03PUKCJQs+7rqChuXodKqn54oGbd10k1g320KzVTt0xO0METWaZjXTCKCIAKadOBNN32/jIdy8xVi+hgzby3o8IDfUzHAspVnTB/fXZfJ0VX81Xi0VMaMDlB+46dMh3rglBEAFQ4G/af0G3vLdOJU3mKjw3Rx8M6qJq/w3Qs4KKICfXTrPs6Ka66n/YfL5iknXgk03Ss80YRAVChrNt3Qre/v1zp2flqE1dNH97dXkE+XqZjARdVrRBffXZfJ9Wr4a+DadkaMDlBO1NOmo51XigiACqMNUnHNej95crIzle72tX0wd3tFUgJQRUVEeSjmfd2UqOIQKVk5GjguwnadijDdKxSo4gAqBBW7z2mO6esUEZOvtrXCdX0u9orwJv7dqJqqxHorRn3dtQlNYN05GSuBr6boE0H0kzHKhWKCAC3tzKxoISczMlXp7rVNf2udvKnhACSpFB/hz69p4NaRgfr+Kk83f7+8gpVRigiANza8t1HNXjqCmXmOtWlfnVNHdJOfg5KCPD/hfg59NGwDoqPDVFaVsUqIxQRAG4rYddRDZm2UqdynerWIExTBreTr8NuOhbgloJ8vPTh3e2LlJGN+92/jFBEALilJTuP6K7pK5SV51T3hjX03p1t5eNFCQGKE/hHGWldWEaWacP+E6ZjFYsiAsDtLNqeqrunr1R2nks9GtXQ5EFtKCFACQX6eOmDu9urTVw1pWfn6473l7t1GaGIAHArC7alaNiHq5ST79IVTcL1DiUEKLXTZaTtH2Xk9veXa/2+E6ZjnRVFBIDbmL81Rfd+uFq5+S5deUmEJt7eRt6elBDgfAR4e2r63e3VrnY1ZWTn644py7XODcsIRQSAW/jvlsO696NVynW6dFXTCL19W2s5PPkVBVyIAG9PTburvdrXDlVGdr4Gvb9ca5OOm45VBD/lAIybu+Ww7v9ktfKclq5pHqm3KCFAmSkoI+3Uvk6oMnLydeeUFVrjRmXkovykT5w4UXXq1JGPj4/atGmjxYsXX4zdAqgAftl8SA/8UUKubVFTrw+Ml5edEgKUJX9vT00b4p5lpNx/2mfNmqWHHnpIY8eO1dq1a9WtWzf17t1bSUlJ5b1rAG7ul82HNOLTNcpzWrquRU29fksrSghQTvy9PTX9rnbqWDdUJ/8oI6v3mi8jNsuyrPLcQYcOHdS6dWtNmjSpcFmTJk3Up08fTZgwoci6OTk5ysnJKfw6PT1dMTExSktLU1BQUJllysl36sEZa3VLuxj1bBxRZtsFUHI/bz6kEZ+sUb7L0vUto/TqgJbypIQA5e5Ubr6GTl+lhN1H5e+w68Oh7dUmLrRM95Genq7g4OASvX+X6099bm6uVq9erV69ehVZ3qtXLy1duvSM9SdMmKDg4ODCR0xMTLnkmr4kUT9vPqz7Plqt/245XC77AHBuP236Xwm5gRICXFR+Dk9NHdJOnepWV2auUw/OWKfcfJexPOX6k3/kyBE5nU5FRBQddYiIiNChQ4fOWH/MmDFKS0srfOzbt69cct3dtY6uaR6pPKel+z9ZrbmUEeCi+WlTskZ+WlBCbmwVpVcoIcBF5+uwa+qQdrqmeaQmD2pjdHL4RdmzzWYr8rVlWWcskyRvb28FBQUVeZQHL7uHXh8Yr2tb1FSe09IDn6zWz5vPLEYAytaPG5M18tO1hSXk5f6UEMAUX4ddE29vo2a1go3mKNffAGFhYbLb7WeMfqSkpJwxSnKxedk99PotrXR9yyjlOS2N+GSNftqUbDQTUJn9uDFZI2cUlJA+raL0yoBWlBAA5VtEHA6H2rRpo7lz5xZZPnfuXHXu3Lk8d10innYPvTqgpW5sFaV8l6URn67VDxspI0BZ++GPEuJ0WeobX0svD2glu8eZo6IAqh7P8t7B6NGjNWjQILVt21adOnXSu+++q6SkJA0fPry8d10innYPvTKglTxsNs1ee0CjZqyVy7J0XYso09GASuGHjcka9UcJuSm+lv7TvyUlBEChci8it9xyi44ePaqnnnpKycnJatasmX744QfFxcWV965LzO5h00v9W8pmk75ac0B/m7lOLku6oSVlBLgQ329I1oMz/yghrWvpP/0oIQCKKvfriFyI0pyHXBacLkuPfrlBX6zeLw+b9OotrXRjq1rlvl+gMvpuw0H9beY6OV2Wbm4drRf7taCEAFWE21xHpKKxe9j04s0tNKBttFyW9PdZ6zR77X7TsYAK59v1/ysh/dpQQgCcG0XkTzw8bHr+phYa2C5GLksa/dl6fbmaMgKU1LfrD+qhWQUlpH+baL1wMyUEwLmV+xyRisjDw6bn+jaXzWbTjBVJ+scX62VJ6tcm2nQ0wK19s/6gHpq5Vi5LhSXEgxICoBiMiJyDh4dNz/Zppjs6xsqypH9+sV6frSyfK70ClcGcdQcoIQBKjSJSDA8Pm56+sZnu7BQny5Ie+XKDZq7grsHAn32xer/+PqvgbLMBbSkhAEqOIvIXbDabnryhqYZ0ri1Jeuyrjfp0OWUEOG3GiiT984v1clnSre1j9PxNlBAAJUcRKQGbzaZx11+iu7rUliQ9PnujPl6212wowA18mJCoMV9tlGVJgzvF6bm+zSkhAEqFyaolZLPZ9MR1l8jDZtOU3/boX19vkmVZGtSptulogBHvL96tZ77/XZJ0T7c6evyaJme9mSUAFIciUgo2m03/uraJ7B42vbtot/49Z7PyXZbu6lLHdDTgonp7/k795+dtkqQRPerpH70aUUIAnBeKSCnZbDaN6d1YNps0eeFuPfntFp3KdWpEj/qmowHlzrIsvfbfHXr91x2SpNFXNtSDlzcwnApARcYckfNgs9n02NWN9bc/fgH/5+dteunnbXLjq+UDF8yyLL3487bCEvLo1Y0pIQAuGEXkPNlsNv39yoYa07uxJOmt+Tv19He/U0ZQKVmWpWe+/12TFuySJP3r2ia6/7J6hlMBqAwoIhfovu719PSNTSVJU5fs0eOzN8rpooyg8nC5LI37ZrOm/LZHkvT0jU01rFtdw6kAVBbMESkDgzrVlo+XXY9+uUEzVuxTVq5TL/VvKU87PQ8VW77TpUe/3Kgv1+yXzSY9f1Nz3dIu1nQsAJUIRaSM9G8bIx8vu/4+a52+XndQ2XkuvXFrvByelBFUTDn5Tj04Y61+3nxYdg+bXurfQn3jud8SgLLFu2QZur5llN65o40cdg/9tPmQ7v1olbLznKZjAaV2Kjdfwz5YpZ83H5bD7qGJt7emhAAoFxSRMnbFJRGaOqSdfL3sWrAtVUOmrdDJnHzTsYASS8vK0x3vL9fiHUfk57Br2l3tdFXTSNOxAFRSFJFy0LVBmD4c2l4B3p5atvuYbn9vmY5l5pqOBfyl1IwcDXx3mdYknVCQj6c+HtZBXeqHmY4FoBKjiJSTdrVD9ek9HVTNz0vr96ep3ztLdeBElulYwDkdOJGlAZMT9HtyusICvDXrvk5qHVvNdCwAlRxFpBy1iA7R58M7KyrYR7tTM9Vv0lLtTMkwHQs4w67Uk+o/aan2HMlUrRBffTG8k5rUDDIdC0AVQBEpZ/XDA/TlA51VPzxAyWnZ6vdOgtYmHTcdCyi0ft8JDXgnQQfTslWvhr++uL+Taof5m44FoIqgiFwENYN99fl9ndQqJkQnTuXptveWa+H2VNOxAC3YlqJb31umo5m5al4rWJ/d10k1g31NxwJQhVBELpJq/g59MqyDLm1YQ1l5Tg2dvlJz1h0wHQtV2Fdr9mvYB6t0Ktepbg3CNOPejqoe4G06FoAqhiJyEfl7e+r9O9vqhpZRyndZemjWOk1fssd0LFQxlmXpnYW7NPqz9cp3WerTKkpTBrdTgDfXNwRw8VFELjKHp4deu6WVBneKk2VJ47/dogk//C4X96fBReByWXrquy16/setkqR7L62rVwa04grAAIzht48BHh42jb+hqf7Rq6EkafKi3Ro1cy1XYUW5ysl3atTMtZq2JFFSwR10H7+miTw8bGaDAajSKCKG2Gw2jezZQK/e0lJedpu+35CsO95fruNc+Azl4MSpXN05ZYW+35AsL7tNrw9sxR10AbgFiohhfeOj9cHd7RXo46lVe4/rpklLtfdopulYqEQSj2TqpolLtXzPMQV4e2rqkHa6sVUt07EAQBJFxC10rhemL+/vrFohvtpzJFN9Jy7VGq41gjKwMvGY+k5cot2nL1R2fyd1a1DDdCwAKEQRcRMNIwI1+4HOalYrSMcyc3Xru8v006Zk07FQgX299oBuf2+5jp/KU8voYM0e0VmNI7laKgD3QhFxI+FBPpp1byf1bByunHyXhn+8Rm/+ukOWxRk1KDnLsvTaf7froVnrlOt06eqmkZp5byeFB/qYjgYAZ6CIuBl/b0+9O6iNhnSuLUl6ee52jZqxVlm5nFGDv5ad59Toz9brtf/ukCTdd2ldTby9tXwddsPJAODsuIKRG/K0e2j8DU3VKDJQ//56k77bkKy9R0/p3TvbcPltnFNyWpbu+2i1NuxPk93Dpmf6NNOt7WNNxwKAYjEi4sZubR+rT4Z1UKi/QxsPpOn6N5cwiRVntSrxmK5/c4k27E9TNT8vfXR3e0oIgAqBIuLmOtStrjkjuqhxZKCOnMzRwMnL9OXq/aZjwY18snyvbn1vmY6czFHjyEB9M7KrOtcPMx0LAEqEIlIBxIT66cv7O+uqphHKdbr08OfrNW7OJuXmu0xHg0G5+S6Nnb1RY2dvUp7T0rXNa+qrBzorJtTPdDQAKDGKSAXh7+2pSbe30YOXN5AkfZCwVwMmJ+jgiSzDyWBCclqWbntvmT5ZniSbTfrnVY301m3x8nMw7QtAxUIRqUA8PGwafWVDTR3SVsG+Xlq374SufWOxFu9INR0NF9Gi7am69o3ftGrvcQV6e2rK4LYa0aO+bDbuGQOg4qGIVEA9G0fou1Fd1axWkI6fytOdU1fojV93cAffSs7psvTK3O0aPG2FjmXmqmlUkL57sKt6No4wHQ0AzhtFpIKKCfXTF8M769b2MbIs6ZW523X3Byt19GSO6WgoB6kZObpz6nK98esOWZZ0W4dYfXl/Z8VV9zcdDQAuiM1y48t2pqenKzg4WGlpaQoK4tLU5/L5qn3619eblJPvUo1Ab73cv6Uubcj9RCqLJTuP6O+z1iklI0e+XnY9d1Mz9Y2PNh0LAM6pNO/fFJFK4vfkdD04Y612pJyUJN17aV39o1cjOTwZ9KqocvKdeunnbXpv8R5JUoPwAE28vbUaRAQaTgYAxaOIVFFZuU49+8MWfbwsSZLUrFaQXh8Yr3o1AgwnQ2ltP5yhv81cp9+T0yVJt3eI1b+uvYRLtQOoECgiVdwvmw/pkS836MSpPPl62TX22ia6vUMsZ1VUAJZl6cOEvXruh9+Vk+9SqL9DL97cQldcwoRUABUHRQQ6lJat0Z+t09JdRyVJXepX1ws3t1B0NS525a72Hz+lMV9t1OIdRyRJ3RvW0H/6t+CuuQAqHIoIJEkul6XpSxP14s9blZ3nkr/DrsevbaLb2jM64k5cLkufLN+r53/cqsxcp7w9PTSmd2MN7lyb/08AKiSKCIrYcyRT//x8vVbtLbhhXtf6YZpwU3MuBe4GEo9k6pEvN2jFnmOSpHa1q+mFm1uoLvN6AFRgFBGcwfnH6Mh//hgd8fHy0KieDXRPt7qcWWNAbr5LU37bo9d/3a7sPJf8HHY9enVjDeoYJw8PRkEAVGwUEZzT7tSTGjt7kxJ2F8wdqVfDX8/0aa5O9aobTlZ1LNl5RE/M2aRdqZmSCubvPH9TC0aoAFQaFBEUy7Isfb3ugJ79/ncdOZkrSbopvpYeu6YxEyPL0aG0bD3z/RZ9tyFZkhQW4NBjvZvo5ta1mAsCoFKhiKBE0k7l6cWft+rTFUmyLMnPYdfw7vV0T7e6XK+iDGXnOTXltz2aOH+nMnOd8rBJgzrGaXSvRgr29TIdDwDKHEUEpbI26bie/HaL1u07IUmKDPLRP65qpJviazFf4QI4XZa+WrNfr8zdruS0bElS69gQPd2nmZpGBRtOBwDlhyKCUrMsS99uSNYLP27VgRNZkqSmUUH6x1WNdFnDGnx0UAqWZWnB9lS98ONWbT2UIUmqFeKrf1zVUDe2pNwBqPwoIjhv2XlOTV+aqLfn7VRGTr4kqVVMiB66ooG6U0iKdbqAvP7fHYWjS0E+nhrZs77u7FRbPl583AWgaqCI4IIdPZmjdxbu0kfL9io7zyVJio8N0YOXN2CE5E8sy9K8rSl649cdWr8/TZLk7emhOzvFaUSP+grxcxhOCAAXF0UEZSY1I0eT/ygkOfkFhaRBeICGdaujG1vVqtJ/5WfnOTVn3QFN/S1R2w4XfATj4+WhQR3jdM+ldTkDCUCVRRFBmUvJyNa7C3drxookZeY6JRWcfjqoY23d2j5G4UFV5003JT1bHy/bq4+XJ+lYZsHpz34Oe2EBCQvwNpwQAMyiiKDcpGfnaeaKJE1bklh4Jojdw6aejcM1sF2MujesIU975btSa77TpYXbUzVr5T7N25qifFfBj02tEF8N7hynW9rGKtiPU3EBQKKI4CLIc7r046ZD+mBpolb/cQ8bSYoI8lbf+Ghd16KmmkYFVei5JJZlafPBdH23IVlfrdmvlIycwufaxFXT3V3q6KqmEZWyeAHAhaCI4KLacThDs1bu01drDxR+VCFJcdX9dG3zmrq6WaSaRQVXiNNWXS5LGw+k6cdNh/TDxmQlHTtV+Fyov0M3xddS/7YxahQZaDAlALg3tykizz77rL7//nutW7dODodDJ06cKNXrKSIVS06+U7/+nqJv1x/UvK0phZNbJam6v0OXNqyh7g1rqEv9MNUIdJ95FKkZOVq8I1WLtqdq8Y4jOvr/ypSPl4d6NArXDS2jdHmTCG4QCAAl4DZFZNy4cQoJCdH+/fs1ZcoUikgVkpmTr3lbU/T9hmQt3pFaOMH1tNrV/dQ6tppax1VTq5gQ1Q8PuChn4GTnObUz5aTW7juhtXuPa03ScSUePVVkHX+HXd0b1dA1zWuqR6Nw+Xt7lnsuAKhM3KaInDZ9+nQ99NBDFJEqKjffpTVJx7Vwe6oWbkvV74fS9ed/dR42qXaYvxqGB6p+eICiQnwVFeKjqBBfRQT5KNDbs0Qf7bhcljKy83UoPVsH07J0KC1bB45naUdKhnYcPqnEo5lyneVffLNaQbq0QQ1d2rCGWsdWY+QDAC5Aad6/3epPvZycHOXk/G9CYHp6usE0KCsOTw91rFtdHetW16NXN1ZaVp7WJh3Xmr3HtWrvcW0+mK60rDztTs3U7tRMafPZtxPg7alAH0/5Oezy+GMSrM0muayCEZiM7Hyd/ONqsMUJ8vFUy5gQxcdWU+vYEMXHVOOMFwAwxK2KyIQJE/Tkk0+ajoFyFuzrpcsaheuyRuGSCs5OScnI0fbDGdp2KEN7jmQqOS1bB09kKTktW2lZeZKkkzklKxqSFOLnpcigghGVyGAf1asRoIYRAWoYEajwQO8KfTYPAFQmpS4i48eP/8uysHLlSrVt27bUYcaMGaPRo0cXfp2enq6YmJhSbwcVi81mU0SQjyKCfNStQY0zns/JdyojO/+PR54ycwrmm1gq+IzFJpsCvD0V4FMwYhLg7Vmlr/gKABVJqYvIyJEjNXDgwGLXqV279nmF8fb2lre3+5xNAffg7WmXd4CdK5YCQCVU6iISFhamsLCw8sgCAACqmHKdI5KUlKRjx44pKSlJTqdT69atkyTVr19fAQEB5blrAABQAZRrEXniiSf0wQcfFH4dHx8vSZo/f74uu+yy8tw1AACoALjEOwAAKFOlef/mqk0AAMAYiggAADCGIgIAAIyhiAAAAGMoIgAAwBiKCAAAMIYiAgAAjKGIAAAAYygiAADAGIoIAAAwhiICAACMoYgAAABjKCIAAMAYiggAADCGIgIAAIyhiAAAAGMoIgAAwBiKCAAAMIYiAgAAjKGIAAAAYygiAADAGIoIAAAwhiICAACMoYgAAABjKCIAAMAYiggAADCGIgIAAIyhiAAAAGMoIgAAwBiKCAAAMIYiAgAAjKGIAAAAYygiAADAGIoIAAAwhiICAACMoYgAAABjKCIAAMAYiggAADCGIgIAAIyhiAAAAGMoIgAAwBiKCAAAMIYiAgAAjKGIAAAAYygiAADAGIoIAAAwhiICAACMoYgAAABjKCIAAMAYiggAADCGIgIAAIyhiAAAAGMoIgAAwBiKCAAAMIYiAgAAjKGIAAAAYygiAADAGIoIAAAwhiICAACMoYgAAABjKCIAAMCYcisiiYmJGjp0qOrUqSNfX1/Vq1dP48aNU25ubnntEgAAVDCe5bXhrVu3yuVyafLkyapfv742bdqke+65R5mZmXrppZfKa7cAAKACsVmWZV2snf3nP//RpEmTtHv37hKtn56eruDgYKWlpSkoKKic0wEAgLJQmvfvchsROZu0tDSFhoae8/mcnBzl5OQUfp2enn4xYgEAAEMu2mTVXbt26c0339Tw4cPPuc6ECRMUHBxc+IiJiblY8QAAgAGlLiLjx4+XzWYr9rFq1aoirzl48KCuvvpq9e/fX8OGDTvntseMGaO0tLTCx759+0r/HQEAgAqj1HNEjhw5oiNHjhS7Tu3ateXj4yOpoIT06NFDHTp00PTp0+XhUfLuwxwRAAAqnnKdIxIWFqawsLASrXvgwAH16NFDbdq00bRp00pVQgAAQOVXbpNVDx48qMsuu0yxsbF66aWXlJqaWvhcZGRkee0WAABUIOVWRH755Rft3LlTO3fuVHR0dJHnLuIZwwAAwI2V22clQ4YMkWVZZ30AAABI3GsGAAAYRBEBAADGUEQAAIAxFBEAAGAMRQQAABhDEQEAAMZQRAAAgDEUEQAAYAxFBAAAGEMRAQAAxlBEAACAMRQRAABgDEUEAAAYQxEBAADGUEQAAIAxFBEAAGAMRQQAABhDEQEAAMZQRAAAgDEUEQAAYAxFBAAAGEMRAQAAxlBEAACAMRQRAABgDEUEAAAYQxEBAADGUEQAAIAxFBEAAGAMRQQAABhDEQEAAMZQRAAAgDEUEQAAYAxFBAAAGONpOkBxLMuSJKWnpxtOAgAASur0+/bp9/HiuHURycjIkCTFxMQYTgIAAEorIyNDwcHBxa5js0pSVwxxuVw6ePCgAgMDZbPZjGRIT09XTEyM9u3bp6CgICMZ3BnH59w4NsXj+BSP41M8jk/xTB8fy7KUkZGhqKgoeXgUPwvErUdEPDw8FB0dbTqGJCkoKIh/7MXg+Jwbx6Z4HJ/icXyKx/Epnsnj81cjIacxWRUAABhDEQEAAMZQRP6Ct7e3xo0bJ29vb9NR3BLH59w4NsXj+BSP41M8jk/xKtLxcevJqgAAoHJjRAQAABhDEQEAAMZQRAAAgDEUEQAAYAxFBAAAGEMRKYUbbrhBsbGx8vHxUc2aNTVo0CAdPHjQdCy3kJiYqKFDh6pOnTry9fVVvXr1NG7cOOXm5pqO5jaeffZZde7cWX5+fgoJCTEdx7iJEyeqTp068vHxUZs2bbR48WLTkdzCokWLdP311ysqKko2m01ff/216UhuY8KECWrXrp0CAwMVHh6uPn36aNu2baZjuY1JkyapRYsWhVdT7dSpk3788UfTsf4SRaQUevTooc8++0zbtm3Tl19+qV27dqlfv36mY7mFrVu3yuVyafLkydq8ebNeffVVvfPOO3r88cdNR3Mbubm56t+/v+6//37TUYybNWuWHnroIY0dO1Zr165Vt27d1Lt3byUlJZmOZlxmZqZatmypt956y3QUt7Nw4UKNGDFCy5Yt09y5c5Wfn69evXopMzPTdDS3EB0dreeff16rVq3SqlWr1LNnT914443avHmz6WjFs3De5syZY9lsNis3N9d0FLf04osvWnXq1DEdw+1MmzbNCg4ONh3DqPbt21vDhw8vsqxx48bWY489ZiiRe5JkzZ4923QMt5WSkmJJshYuXGg6ituqVq2a9f7775uOUSxGRM7TsWPH9Mknn6hz587y8vIyHcctpaWlKTQ01HQMuJnc3FytXr1avXr1KrK8V69eWrp0qaFUqIjS0tIkid8zZ+F0OjVz5kxlZmaqU6dOpuMUiyJSSo8++qj8/f1VvXp1JSUlac6cOaYjuaVdu3bpzTff1PDhw01HgZs5cuSInE6nIiIiiiyPiIjQoUOHDKVCRWNZlkaPHq2uXbuqWbNmpuO4jY0bNyogIEDe3t4aPny4Zs+erUsuucR0rGJV+SIyfvx42Wy2Yh+rVq0qXP+f//yn1q5dq19++UV2u1133nmnrEp8lfzSHh9JOnjwoK6++mr1799fw4YNM5T84jif44MCNputyNeWZZ2xDDiXkSNHasOGDZoxY4bpKG6lUaNGWrdunZYtW6b7779fgwcP1pYtW0zHKpan6QCmjRw5UgMHDix2ndq1axf+d1hYmMLCwtSwYUM1adJEMTExWrZsmdsPfZ2v0h6fgwcPqkePHurUqZPefffdck5nXmmPDwp+hux2+xmjHykpKWeMkgBnM2rUKH3zzTdatGiRoqOjTcdxKw6HQ/Xr15cktW3bVitXrtTrr7+uyZMnG052blW+iJwuFufj9EhITk5OWUZyK6U5PgcOHFCPHj3Upk0bTZs2TR4elX/A7UL+/VRVDodDbdq00dy5c9W3b9/C5XPnztWNN95oMBncnWVZGjVqlGbPnq0FCxaoTp06piO5Pcuy3P49qsoXkZJasWKFVqxYoa5du6patWravXu3nnjiCdWrV6/SjoaUxsGDB3XZZZcpNjZWL730klJTUwufi4yMNJjMfSQlJenYsWNKSkqS0+nUunXrJEn169dXQECA2XAX2ejRozVo0CC1bdu2cPQsKSmJOUWSTp48qZ07dxZ+vWfPHq1bt06hoaGKjY01mMy8ESNG6NNPP9WcOXMUGBhYOKoWHBwsX19fw+nMe/zxx9W7d2/FxMQoIyNDM2fO1IIFC/TTTz+ZjlY8k6fsVCQbNmywevToYYWGhlre3t5W7dq1reHDh1v79+83Hc0tTJs2zZJ01gcKDB48+KzHZ/78+aajGfH2229bcXFxlsPhsFq3bs0pmH+YP3/+Wf+dDB482HQ04871O2batGmmo7mFu+++u/BnqkaNGtbll19u/fLLL6Zj/SWbZVXimZYAAMCtVf4P8QEAgNuiiAAAAGMoIgAAwBiKCAAAMIYiAgAAjKGIAAAAYygiAADAGIoIAAAwhiICAACMoYgAAABjKCIAAMCY/wOwdaU1C/HBiwAAAABJRU5ErkJggg==" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# This is a demonstration: You just need to run this cell without editing.\n", + "\n", + "x = torch.linspace(-math.pi, math.pi, 1000) # Task 1.1: What is torch.linspace?\n", + "y_true = torch.sin(x)\n", + "\n", + "plt.plot(x, y_true, linestyle='solid', label='sin(x)')\n", + "plt.axis('equal')\n", + "plt.title('Original function to fit')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "23acad3b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor(True)" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Run this cell to explore what the FIRST 10 VALUES of x has been assigned to.\n", + "# By default, each cell will always print the output of the last expression in the cell\n", + "# You can explore what x is by modifying the expression e.g. x.max(), x.shape\n", + "x.shape\n", + "x.min() == -math.pi" + ] + }, + { + "cell_type": "markdown", + "id": "ece5d5e2", + "metadata": {}, + "source": [ + "### Task 1.1 - What is `torch.linspace`?\n", + "\n", + "From the example above, answer the following questions:\n", + "\n", + "1. What does `x = torch.linspace(-math.pi, math.pi, 1000)` do? \n", + "2. How many values are stored in `x`? \n", + "3. What are the minimum and maximum values in `x`? " + ] + }, + { + "cell_type": "markdown", + "id": "ba5928f9", + "metadata": {}, + "source": [ + "### 1.2.1 Demo - Using Tensors for linear regression\n", + "\n", + "For this example, we fit a **degree 3 polynomial** to the sine function, using a learning rate of 1e-6 and 5000 iterations." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "828fdba4", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-01T09:19:53.795438Z", + "start_time": "2024-04-01T09:19:53.435227Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "iter\tloss\t\n", + "----\t----\n", + "1000\t0.4506033957004547\n", + "2000\t0.4224050045013428\n", + "3000\t0.4060209095478058\n", + "4000\t0.396359920501709\n", + "5000\t0.39052513241767883\n" + ] + }, + { + "data": { + "text/plain": "
", + "image/png": "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" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# This is a demonstration: You just need to run this cell without editing.\n", + "\n", + "# Set learning rate\n", + "learning_rate = 1e-6\n", + "\n", + "# Initialize weights to 0\n", + "a = torch.tensor(0.)\n", + "b = torch.tensor(0.)\n", + "c = torch.tensor(0.)\n", + "d = torch.tensor(0.)\n", + "\n", + "print('iter', 'loss', '\\n----', '----', sep='\\t')\n", + "for t in range(1, 5001): # 5000 iterations\n", + " # Forward pass: compute predicted y\n", + " y_pred = a + b * x + c * x**2 + d * x**3\n", + "\n", + " # Compute MSE loss\n", + " loss = torch.mean(torch.square(y_pred - y_true))\n", + " if t % 1000 == 0:\n", + " print(t, loss.item(), sep='\\t')\n", + "\n", + " # Backpropagation\n", + " grad_y_pred = 2.0 * (y_pred - y_true) / y_pred.shape[0]\n", + " \n", + " # Compute gradients of a, b, c, d with respect to loss\n", + " grad_a = grad_y_pred.sum()\n", + " grad_b = (grad_y_pred * x).sum()\n", + " grad_c = (grad_y_pred * x ** 2).sum()\n", + " grad_d = (grad_y_pred * x ** 3).sum()\n", + "\n", + " # Update weights using gradient descent\n", + " a -= learning_rate * grad_a\n", + " b -= learning_rate * grad_b\n", + " c -= learning_rate * grad_c\n", + " d -= learning_rate * grad_d\n", + "\n", + "# print fitted polynomial\n", + "equation = f'{a:.5f} + {b:.5f} x + {c:.5f} x^2 + {d:.5f} x^3'\n", + "\n", + "y_pred = a + b * x + c * x**2 + d * x**3\n", + "plt.plot(x, y_true, linestyle='solid', label='sin(x)')\n", + "plt.plot(x, y_pred, linestyle='dashed', label=f'{equation}')\n", + "plt.axis('equal')\n", + "plt.title('3rd degree poly fitted to sine (MSE loss)')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "76952906", + "metadata": {}, + "source": [ + "### 1.2.2 Demo - Using autograd to automatically compute gradients\n", + "\n", + "In the previous example, we explicitly computed the gradient for Mean Squared Error (MSE): \n", + "`grad_y_pred = 2.0 * (y_pred - y_true) / y_pred.shape[0]`\n", + "\n", + "In the next example, we will use PyTorch's autograd functionality to help us compute the gradient for **Mean Absolute Error (MAE)**. \n", + "In order to compute the gradients, we will use the `.backward()` method of *PyTorch* tensors.\n", + "\n", + "Once again, we fit a **degree 3 polynomial** to the sine function, using a learning rate of `1e-6` and `5000` iterations. \n", + "This time, we will use MAE instead of MSE." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "d2861c55", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-01T09:19:57.884874Z", + "start_time": "2024-04-01T09:19:57.603483Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "iter\tloss\t\n", + "----\t----\n", + "torch.Size([1000]) torch.Size([1000])\n" + ] + }, + { + "ename": "RuntimeError", + "evalue": "element 0 of tensors does not require grad and does not have a grad_fn", + "output_type": "error", + "traceback": [ + "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[0;31mRuntimeError\u001B[0m Traceback (most recent call last)", + "Cell \u001B[0;32mIn[5], line 23\u001B[0m\n\u001B[1;32m 20\u001B[0m \u001B[38;5;28mprint\u001B[39m(t, loss\u001B[38;5;241m.\u001B[39mitem(), sep\u001B[38;5;241m=\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;130;01m\\t\u001B[39;00m\u001B[38;5;124m'\u001B[39m)\n\u001B[1;32m 22\u001B[0m \u001B[38;5;66;03m# Automatically compute gradients\u001B[39;00m\n\u001B[0;32m---> 23\u001B[0m \u001B[43mloss\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mbackward\u001B[49m\u001B[43m(\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 25\u001B[0m \u001B[38;5;66;03m# Update weights using gradient descent\u001B[39;00m\n\u001B[1;32m 26\u001B[0m \u001B[38;5;28;01mwith\u001B[39;00m torch\u001B[38;5;241m.\u001B[39mno_grad():\n", + "File \u001B[0;32m/opt/homebrew/anaconda3/envs/cs2109s-ay2223s1/lib/python3.9/site-packages/torch/_tensor.py:363\u001B[0m, in \u001B[0;36mTensor.backward\u001B[0;34m(self, gradient, retain_graph, create_graph, inputs)\u001B[0m\n\u001B[1;32m 354\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m has_torch_function_unary(\u001B[38;5;28mself\u001B[39m):\n\u001B[1;32m 355\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m handle_torch_function(\n\u001B[1;32m 356\u001B[0m Tensor\u001B[38;5;241m.\u001B[39mbackward,\n\u001B[1;32m 357\u001B[0m (\u001B[38;5;28mself\u001B[39m,),\n\u001B[0;32m (...)\u001B[0m\n\u001B[1;32m 361\u001B[0m create_graph\u001B[38;5;241m=\u001B[39mcreate_graph,\n\u001B[1;32m 362\u001B[0m inputs\u001B[38;5;241m=\u001B[39minputs)\n\u001B[0;32m--> 363\u001B[0m \u001B[43mtorch\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mautograd\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mbackward\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mgradient\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mretain_graph\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mcreate_graph\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43minputs\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43minputs\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[0;32m/opt/homebrew/anaconda3/envs/cs2109s-ay2223s1/lib/python3.9/site-packages/torch/autograd/__init__.py:173\u001B[0m, in \u001B[0;36mbackward\u001B[0;34m(tensors, grad_tensors, retain_graph, create_graph, grad_variables, inputs)\u001B[0m\n\u001B[1;32m 168\u001B[0m retain_graph \u001B[38;5;241m=\u001B[39m create_graph\n\u001B[1;32m 170\u001B[0m \u001B[38;5;66;03m# The reason we repeat same the comment below is that\u001B[39;00m\n\u001B[1;32m 171\u001B[0m \u001B[38;5;66;03m# some Python versions print out the first line of a multi-line function\u001B[39;00m\n\u001B[1;32m 172\u001B[0m \u001B[38;5;66;03m# calls in the traceback and some print out the last line\u001B[39;00m\n\u001B[0;32m--> 173\u001B[0m \u001B[43mVariable\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43m_execution_engine\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mrun_backward\u001B[49m\u001B[43m(\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;66;43;03m# Calls into the C++ engine to run the backward pass\u001B[39;49;00m\n\u001B[1;32m 174\u001B[0m \u001B[43m \u001B[49m\u001B[43mtensors\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mgrad_tensors_\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mretain_graph\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mcreate_graph\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43minputs\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 175\u001B[0m \u001B[43m \u001B[49m\u001B[43mallow_unreachable\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;28;43;01mTrue\u001B[39;49;00m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43maccumulate_grad\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;28;43;01mTrue\u001B[39;49;00m\u001B[43m)\u001B[49m\n", + "\u001B[0;31mRuntimeError\u001B[0m: element 0 of tensors does not require grad and does not have a grad_fn" + ] + } + ], + "source": [ + "# This is a demonstration: You just need to run this cell without editing.\n", + "\n", + "# Set learning rate\n", + "learning_rate = 1e-6\n", + "\n", + "# Initialize weights to 0\n", + "a = torch.tensor(0., requires_grad=True)\n", + "b = torch.tensor(0., requires_grad=True)\n", + "c = torch.tensor(0., requires_grad=True)\n", + "d = torch.tensor(0., requires_grad=True)\n", + "\n", + "print('iter', 'loss', '\\n----', '----', sep='\\t')\n", + "for t in range(1, 5001):\n", + " # Forward pass: compute predicted y\n", + " y_pred = a + b * x + c * x ** 2 + d * x ** 3\n", + " if t == 1: print(y_pred.shape, y_true.shape)\n", + "\n", + " # Compute MAE loss\n", + " if t % 1000 == 0:\n", + " print(t, loss.item(), sep='\\t')\n", + "\n", + " # Automatically compute gradients\n", + " loss.backward()\n", + "\n", + " # Update weights using gradient descent\n", + " with torch.no_grad():\n", + " a -= learning_rate * a.grad\n", + " b -= learning_rate * b.grad\n", + " c -= learning_rate * c.grad\n", + " d -= learning_rate * d.grad\n", + " a.grad.zero_() # reset gradients !important\n", + " b.grad.zero_() # reset gradients !important\n", + " c.grad.zero_() # reset gradients !important\n", + " d.grad.zero_() # reset gradients !important\n", + " # What happens if you don't reset the gradients?\n", + "\n", + "# print fitted polynomial\n", + "equation = f'{a:.5f} + {b:.5f} x + {c:.5f} x^2 + {d:.5f} x^3'\n", + "\n", + "y_pred = a + b * x + c * x ** 2 + d * x ** 3\n", + "plt.plot(x, y_true, linestyle='solid', label='sin(x)')\n", + "plt.plot(x, y_pred.detach().numpy(), linestyle='dashed', label=f'{equation}')\n", + "plt.axis('equal')\n", + "plt.title('3rd degree poly fitted to sine (MAE loss)')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "ca266605", + "metadata": {}, + "source": [ + "### Task 1.2 - Polyfit model\n", + "\n", + "We have demonstrated how to fit a degree-3 polynomial to a set of `x` and `y` points (following the sine curve), using two different types of loss functions (MSE and MAE). \n", + "\n", + "Now, your task is to write a function `polyfit` that takes in some arbitrary set of points. You are only allowed to use **ONE** loop for the backpropagation and weights update. You are **NOT** allowed to use a loop to raise the features to their respective powers.\n", + "1. `x`, corresponding x-values, \n", + "2. `y`, corresponding true y-values, \n", + "3. `loss_fn` to compute the loss, given the true `y` and predicted `y`, \n", + "4. `n` representing the $n$-degree polynomial, and \n", + "5. `lr` learning rate, and \n", + "6. `n_iter` for the number of times to iterate. \n", + "\n", + "Return the 1D tensor containing the coefficients of the $n$-degree polynomial , after fitting the model. \n", + "The coefficients should be arranged in ascending powers of $x$.\n", + "\n", + "For example,\n", + "```\n", + ">>> y = torch.sine(x)\n", + ">>> mse = lambda y_true, y_pred: torch.mean(torch.square(y_pred - y_true))\n", + ">>> mae = lambda y_true, y_pred: torch.mean(torch.abs(y_pred - y_true))\n", + "\n", + ">>> polyfit(x, y, mse, 3, 1e-3, 5000)\n", + "tensor([-4.2270e-09, 8.5167e-01, 1.2131e-08, -9.2587e-02], requires_grad=True))\n", + "\n", + ">>> polyfit(x, y, mae, 3, 1e-3, 5000)\n", + "tensor([-9.6776e-07, 8.7905e-01, -2.4784e-06, -9.8377e-02], requires_grad=True))\n", + "```\n", + "\n", + "*Note: For this regression problem, initialize your weights to 0.0.*" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "c1f9a796", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-01T09:20:29.199401Z", + "start_time": "2024-04-01T09:20:28.547952Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": "
", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiIAAAGxCAYAAABfrt1aAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAABm3UlEQVR4nO3dd3gU1dvG8e/uplfSaGn03quAUkSaiogIikhRQUEQy2sFpdiwKxaaKKggxZ+ChSaKFOm9g/RAKKGlkJ7d8/4RjUaKRAkTkvtzXXvJzp6deXbA7J0z55yxGWMMIiIiIhawW12AiIiIFF0KIiIiImIZBRERERGxjIKIiIiIWEZBRERERCyjICIiIiKWURARERERyyiIiIiIiGUURERERMQyCiJyzduyZQv33XcfZcuWxcvLCz8/P+rVq8cbb7zBmTNnrC4v3/Xp04cyZcpYXcZ/tnHjRlq0aEFgYCA2m4333nsvT+8/ePAgNpuNyZMn52wbMWIENpstV7uMjAz69+9PqVKlcDgc1KlTB4AzZ85w9913U7x4cWw2G7fffvt/+0D5aO7cuYwYMSJP73n++eeJiorCzc2NYsWKAdCyZUtatmyZ0yYlJYURI0awePHiK1aryD9xs7oAkf/i448/5uGHH6Zy5co89dRTVKtWjczMTNatW8e4ceNYuXIls2bNsrrMfPXCCy/w6KOPWl3Gf3b//feTnJzM9OnTCQoKuiLhqm/fvrRv3z7XtrFjxzJ+/Hg++OAD6tevj5+fHwAvvfQSs2bN4tNPP6V8+fIEBwf/5+Pnl7lz5/LRRx9ddhj59ttveeWVVxg6dCgdOnTA09MTgDFjxuRql5KSwsiRIwFyBRSR/KQgIteslStXMmDAANq0acPs2bNzfrgCtGnThv/7v/9j/vz5FlaYv1JSUvDx8aF8+fJWl3JFbNu2jX79+tGhQ4crts+IiAgiIiLOO463tzeDBg06b3v58uXp0aPHFTt+amoq3t7eV2x//9a2bdsAGDx4MMWLF8/ZXq1aNatKEvmTEblG3XrrrcbNzc3ExMRcVnun02lef/11U7lyZePh4WHCwsJMz549zeHDh3O1a9GihalevbpZsWKFadKkifHy8jLR0dHm008/NcYY88MPP5i6desab29vU6NGDTNv3rxc7x8+fLgBzIYNG0znzp2Nv7+/CQgIMD169DBxcXG52k6fPt20adPGlCxZ0nh5eZkqVaqYZ555xpw7dy5Xu969extfX1+zZcsW06ZNG+Pn52euu+66nNeio6NztZ85c6Zp1KiRCQgIMN7e3qZs2bLmvvvuy9Xm0KFDpkePHiYsLMx4eHiYKlWqmLfeess4nc6cNgcOHDCAefPNN83bb79typQpY3x9fc11111nVq5ceVnnfevWrea2224zxYoVM56enqZ27dpm8uTJOa9PmjTJAOc9LiU2NtZ07drV+Pn5mYCAANOtWzezcuVKA5hJkybltPvj7+IPFzrOxY7/yy+/GGOMSU9PNy+99FLOv5vQ0FDTp0+f8/4uo6OjzS233GK+/vprU6dOHePp6WmeeeYZY4wxx44dMw8++KAJDw837u7upkyZMmbEiBEmMzMzz+e6d+/eF6z3wIEDFzxX0dHR57UdPny4MSb733qLFi1yHf/vj969extjjImLizP9+vUzEREROeehadOmZuHChZf8uxL5Jwoick3KysoyPj4+pnHjxpf9ngcffNAAZtCgQWb+/Plm3LhxJiwszERGRpqTJ0/mtGvRooUJCQkxlStXNp988olZsGCBufXWWw1gRo4caWrWrGmmTZtm5s6da6677jrj6elpYmNjc97/x5dfdHS0eeqpp8yCBQvMO++8Y3x9fU3dunVNRkZGTtuXXnrJvPvuu2bOnDlm8eLFZty4caZs2bKmVatWuWrv3bt3zhfYqFGjzM8//2wWLFiQ89pfg8iKFSuMzWYzd999t5k7d65ZtGiRmTRpkunZs2dOm7i4OBMeHm7CwsLMuHHjzPz5882gQYMMYAYMGJDT7o8vpzJlypj27dub2bNnm9mzZ5uaNWuaoKAgEx8ff8lzvmvXLuPv72/Kly9vPv/8czNnzhzTvXt3A5jXX389p5Y/QsSdd95pVq5cecmQk5KSYqpWrWoCAwPNBx98YBYsWGAGDx5soqKi/jGIrFy50tx8883G29s75zjHjx83K1euNHXr1jXlypXL2Z6QkGCcTqdp37698fX1NSNHjjQLFy40EydONOHh4aZatWomJSUlZ9/R0dGmVKlSply5cubTTz81v/zyi1mzZo05duyYiYyMNNHR0Wb8+PHmp59+Mi+99JLx9PQ0ffr0yfO53rt3r7nzzjsNkFPrypUrTVpa2gXP14YNG8wDDzxgADN//nyzcuXK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wk033URycvJ5l2ZatmzJ4MGDefrppwkODqZkyZKMGDEi176mT59O27Zt8fLyyjkPN910E+3bt8+pKz4+nqioKIYOHZrzvnbt2nH69GmWLFny7074ZdI6IiIiUiSkZjqpNmyBJcfe8WI7fDwu7yv32LFjdO/enTfeeIPOnTuTlJTEsmXLLhpmPvvsM5544glWr17NypUr6dOnD82aNaNNmzYALF26lO7du+e0t9lsfPbZZ9SsWZP333+fRx99lP79+1OiRIlcIcbDw4PatWuzbNkybrzxxn//4f+BgoiIiEgBcuzYMbKysrjjjjuIjo4GssdsXEytWrUYPnw4ABUrVuTDDz/k559/zgkiBw8epHTp0rneEx4ezvjx4+nZsycnTpzg+++/Z+PGjbi7u5/X7uDBg1fw051PQURERIoEb3cHO15sZ9mxL1ft2rVp3bo1NWvWpF27drRt25Y777yToKCgC7avVatWruelSpUiLi4u53lqamrOZZm/6tq1K7NmzWLUqFGMHTuWSpUqnV+3t3e+36tHQURERIoEm8122ZdHrORwOFi4cCErVqzgxx9/5IMPPmDo0KGsXr36gu3/3oths9lyTdMNDQ3l7Nmz570vJSWF9evX43A42LNnzwX3febMGcqXL/8fPs0/02BVERGRAsZms9GsWTNGjhzJxo0b8fDwYNasWf9qX3Xr1mXHjh3nbf+///s/7HY78+bN4/3332fRokXntdm2bRt169b9V8e9XAoiIiIiBcjq1at59dVXWbduHTExMXzzzTecPHmSqlWr/qv9tWvXjl9//TXXtjlz5vDpp58ydepU2rRpw7PPPkvv3r1z9ZwcPHiQ2NhYbrrppv/0ef6JgoiIiEgBEhAQwNKlS7n55pupVKkSzz//PG+//TYdOnT4V/u799572bFjB7t37wbg5MmTPPDAA4wYMYJ69eoBMHz4cEqXLk3//v1z3jdt2jTatm2bM2A2v9hMXic3X0WJiYkEBgaSkJBAQECA1eWIiMg1Ii0tjQMHDlC2bNkLDtQsap5++mkSEhIYP378ZbVPT0+nYsWKTJs2jWbNml2wzaXOcV6+v9UjIiIiUsgNHTqU6Ojoy14l9dChQwwdOvSiIeRKKvjDh0VEROQ/CQwMZMiQIZfdvlKlSheczpsf1CMiIiIillEQEREREcsoiIiIiIhlFERERETE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4oknLKxeg1VFRESuaf379+eOO+7grrvuonHjxpw+fTpX7whA3759mThxIpMnT6ZmzZq0aNGCyZMn5worVrEZY4zVRVxMYmIigYGBJCQkEBAQYHU5IiJyjUhLS+PAgQOULVsWLy8vq8splC51jvPy/a0eEREREbGMgoiIiIhYRkFERERELKMgIiIiIpZREBERkUKrAM/HuOZdqXOrICIiIoXOH6uQpqTk/e63cnkyMjKA/746qxY0ExGRQsfhcFCsWLGce7H4+PjkLIsu/53L5eLkyZP4+Pjg5vbfooSCiIiIFEolS5YE/rwxnFxZdrudqKio/xzwFERERKRQstlslCpViuLFi5OZmWl1OYWOh4cHdvt/H+GhICIiIoWaw+EoEHeZlQvTYFURERGxjIKIiIiIWEZBRERERCyjICIiIiKWURARERERyyiIiIiIiGUURERERMQyCiIiIiJiGQURERERsYyCiIiIiFhGQUREREQsoyAiIiIillEQEREREcsoiIiIiIhlFERERETEMgoiIiIiYhkFEREREbGMgoiIiIhYRkFERERELKMgIiIiIpZREBERERHLKIiIiIiIZRRERERExDIKIiIiImIZBRERERGxjIKIiIiIWEZBRERERCyjICIiIiKWURARERERyyiIiIiIiGUURERERMQyCiIiIiJimXwNIkuXLqVjx46ULl0am83G7Nmz8/NwIiIico3J1yCSnJxM7dq1+fDDD/PzMCIiUsAYY0jLSiMhPYFTqac4eu4o6c70nNedLifGGAsrlILCLT933qFDBzp06JCfhxARkXyWmuEkITWTpLRMEtMySUzL4lxGEnGphyntUx6HzR1vDwdrTs1h8bHvSMqMJyHjLFmurFz7mXLzFGqH1c7+884pvLf+PYK8ggjxDiHEK4QwnzCiA6KJDoimQYkGBHkFWfFx5SrL1yCSV+np6aSn/5mYExMTLaxGRKToSEjJZNfxRH47kcTeuHPExqcSG5/G0fhUEtITcPjE4PA6gt3rKA7Po9g94gFI3v8YPukBRNvisIUs5VDYngvu34Eb5rO7yHRm4nC4k+HnTpY3nEw9ycnUk+e1/7TWYzQs2xYCwtl+Zie7zuyiQckGRPlHYbPZ8vNUyFVWoILIqFGjGDlypNVliIgUaulZTrbFJrL+0BnWHTzL5iPxnEhMv2Bb9+Bl+EXP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XGnhONPCs/+bUpZiPu6UDPCidLHilAz0onyYH5VK+FGphD/F/T0L5mweEZEiKM9BZMSIEf8YFtauXUuDBg3yXMxzzz3HE088kfM8MTGRyMjIPO9HrOHuyN2r0KXKXbQp14GDCQc5nHQ453Ei5QTxafGUaPQMlGyIDTD758CyZ3O934YNbzdvvN18aN3pHhoXv4mktExik+LYcbYSxb0jKOEdgb97Mfw83fDzcsPfyw0/T7fCteKriEghlucxIqdOneLUqVOXbFOmTBm8vP5caVNjROSfZLmySHemk+XKvtGel5sXHnYP9VyIiFyD8nWMSGhoKKGhof+6OJELcbO74WYvUFcKRUTkKsjXn/wxMTGcOXOGmJgYnE4nmzZtAqBChQr4+fnl56FFRETkGpCvQWTYsGF89tlnOc/r1s1e8+GXX36hZcuW+XloERERuQZoiXcRERG5ovLy/a1Vm0RERMQyCiIiIiJiGQURERERsYyCiIiIiFhGQUREREQsoyAiIiIillEQEREREcsoiIiIiIhlFERERETEMgoiIiIiYhkFEREREbGMgoiIiIhYRkFERERELKMgIiIiIpZREBERERHLKIiIiIiIZRRERERExDIKIiIiImIZBRERERGxjIKIiIiIWEZBRERERCyjICIiIiKWURARERERyyiIiIiIiGUURERERMQyCiIiIiJiGQURERERsYyCiIiIiFhGQUREREQsoyAiIiIillEQEREREcsoiIiIiIhlFERERETEMgoiIiIiYhkFEREREbGMgoiIiIhYRkFERERELKMgIiIiIpZREBERERHLKIiIiIiIZRRERERExDIKIiIiImIZBRERERGxjIKIiIiIWEZBRERERCyjICIiIiKWURARERERyyiIiIiIiGUURERERMQyCiIiIiJiGQURERERsYyCiIiIiFhGQUREREQsoyAiIiIillEQEREREcsoiIiIiIhlFERERETEMgoiIiIiYhkFEREREbGMgoiIiIhYRkFERERELJNvQeTgwYM88MADlC1bFm9vb8qXL8/w4cPJyMjIr0OKiIjINcYtv3a8a9cuXC4X48ePp0KFCmzbto1+/fqRnJzMW2+9lV+HFRERkWuIzRhjrtbB3nzzTcaOHcv+/fsvq31iYiKBgYEkJCQQEBCQz9WJiIjIlZCX7+986xG5kISEBIKDgy/6enp6Ounp6TnPExMTr0ZZIiIiYpGrNlh13759fPDBB/Tv3/+ibUaNGkVgYGDOIzIy8mqVJyIiIhbIcxAZMWIENpvtko9169bles/Ro0dp3749Xbt2pW/fvhfd93PPPUdCQkLO4/Dhw3n/RCIiInLNyPMYkVOnTnHq1KlLtilTpgxeXl5Adghp1aoVjRs3ZvLkydjtl599NEZERETk2pOvY0RCQ0MJDQ29rLaxsbG0atWK+vXrM2nSpDyFEBERESn88m2w6tGjR2nZsiVRUVG89dZbnDx5Mue1kiVL5tdhRURE5BqSb0Hkxx9/ZO/evezdu5eIiIhcr13FGcMiIiJSgOXbtZI+ffpgjLngQ0RERAR0rxkRERGxkIKIiIiIWEZBRERERCyjICIiIiKWURARERERyyiIiIiIiGUURERERMQyCiIiIiJiGQURERERsYyCiIiIiFhGQUREREQsoyAiIiIillEQEREREcsoiIiIiIhlFERERETEMgoiIiIiYhkFEREREbGMgoiIiIhYRkFERERELKMgIiIiIpZREBERERHLKIiIiIiIZRRERERExDIKIiIiImIZBRERERGxjIKIiIiIWEZBRERERCyjICIiIiKWURARERERyyiIiIiIiGUURERERMQyCiIiIiJiGQURERERsYyb1QVcijEGgMTERIsrERERkcv1x/f2H9/jl1Kgg0hSUhIAkZGRFlciIiIieZWUlERgYOAl29jM5cQVi7hcLo4ePYq/vz82m82SGhITE4mMjOTw4cMEBARYUkNBpvNzcTo3l6bzc2k6P5em83NpVp8fYwxJSUmULl0au/3So0AKdI+I3W4nIiLC6jIACAgI0D/2S9D5uTidm0vT+bk0nZ9L0/m5NCvPzz/1hPxBg1VFRETEMgoiIiIiYhkFkX/g6enJ8OHD8fT0tLqUAknn5+J0bi5N5+fSdH4uTefn0q6l81OgB6uKiIhI4aYeEREREbGMgoiIiIhYRkFERERELKMgIiIiIpZREBERERHLKIjkwW233UZUVBReXl6UKlWKnj17cvToUavLKhAOHjzIAw88QNmyZfH29qZ8+fIMHz6cjIwMq0srMF555RWaNm2Kj48PxYoVs7ocy40ZM4ayZcvi5eVF/fr1WbZsmdUlFQhLly6lY8eOlC5dGpvNxuzZs60uqcAYNWoUDRs2xN/fn+LFi3P77beze/duq8sqMMaOHUutWrVyVlNt0qQJ8+bNs7qsf6QgkgetWrVi5syZ7N69m6+//pp9+/Zx5513Wl1WgbBr1y5cLhfjx49n+/btvPvuu4wbN44hQ4ZYXVqBkZGRQdeuXRkwYIDVpVhuxowZPPbYYwwdOpSNGzdyww030KFDB2JiYqwuzXLJycnUrl2bDz/80OpSCpwlS5YwcOBAVq1axcKFC8nKyqJt27YkJydbXVqBEBERwWuvvca6detYt24dN954I506dWL79u1Wl3ZpRv61b7/91thsNpORkWF1KQXSG2+8YcqWLWt1GQXOpEmTTGBgoNVlWKpRo0amf//+ubZVqVLFPPvssxZVVDABZtasWVaXUWDFxcUZwCxZssTqUgqsoKAgM3HiRKvLuCT1iPxLZ86cYerUqTRt2hR3d3eryymQEhISCA4OtroMKWAyMjJYv349bdu2zbW9bdu2rFixwqKq5FqUkJAAoJ8zF+B0Opk+fTrJyck0adLE6nIuSUEkj5555hl8fX0JCQkhJiaGb7/91uqSCqR9+/bxwQcf0L9/f6tLkQLm1KlTOJ1OSpQokWt7iRIlOH78uEVVybXGGMMTTzzB9ddfT40aNawup8DYunUrfn5+eHp60r9/f2bNmkW1atWsLuuSinwQGTFiBDab7ZKPdevW5bR/6qmn2LhxIz/++CMOh4NevXphCvEq+Xk9PwBHjx6lffv2dO3alb59+1pU+dXxb86PZLPZbLmeG2PO2yZyMYMGDWLLli1MmzbN6lIKlMqVK7Np0yZWrVrFgAED6N27Nzt27LC6rEtys7oAqw0aNIi77777km3KlCmT8+fQ0FBCQ0OpVKkSVatWJTIyklWrVhX4rq9/K6/n5+jRo7Rq1YomTZowYcKEfK7Oenk9P5L9/5DD4Tiv9yMuLu68XhKRC3nkkUf47rvvWLp0KREREVaXU6B4eHhQoUIFABo0aMDatWsZPXo048ePt7iyiyvyQeSPYPFv/NETkp6efiVLKlDycn5iY2Np1aoV9evXZ9KkSdjthb/D7b/8+ymqPDw8qF+/PgsXLqRz58452xcuXEinTp0srEwKOmMMjzzyCLNmzWLx4sWULVvW6pIKPGNMgf+OKvJB5HKtWbOGNWvWcP311xMUFMT+/fsZNmwY5cuXL7S9IXlx9OhRWrZsSVRUFG+99RYnT57Mea1kyZIWVlZwxMTEcObMGWJiYnA6nWzatAmAChUq4OfnZ21xV9kTTzxBz549adCgQU7vWUxMjMYUAefOnWPv3r05zw8cOMCmTZsIDg4mKirKwsqsN3DgQL788ku+/fZb/P39c3rVAgMD8fb2trg66w0ZMoQOHToQGRlJUlIS06dPZ/HixcyfP9/q0i7Nyik715ItW7aYVq1ameDgYOPp6WnKlClj+vfvb44cOWJ1aQXCpEmTDHDBh2Tr3bv3Bc/PL7/8YnVplvjoo49MdHS08fDwMPXq1dMUzN/98ssvF/x30rt3b6tLs9zFfsZMmjTJ6tIKhPvvvz/n/6mwsDDTunVr8+OPP1pd1j+yGVOIR1qKiIhIgVb4L+KLiIhIgaUgIiIiIpZREBERERHLKIiIiIiIZRRERERExDIKIiIiImIZBRERERGxjIKIiIiIWEZBRERERCyjICIiIiKWURARERERy/w/29NB5ixbMswAAAAASUVORK5CYII=" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def polyfit(x, y, loss_fn, n, lr, n_iter):\n", + " \"\"\"\n", + " Parameters\n", + " ----------\n", + " x : A tensor of shape (1, n)\n", + " y : A tensor of shape (1, n)\n", + " loss_fn : Function to measure loss\n", + " n : The nth-degree polynomial\n", + " lr : Learning rate\n", + " n_iter : The number of iterations of gradient descent\n", + " \n", + " Returns\n", + " -------\n", + " Near-optimal coefficients of the nth-degree polynomial as a tensor of shape (1, n+1) after `n_iter` epochs.\n", + " \"\"\"\n", + " weights = torch.zeros(n+1, requires_grad=True)\n", + " pows = torch.arange(n+1).float()\n", + " X = x.unsqueeze(1) ** pows\n", + " for _ in range(n_iter):\n", + " # Forward Pass\n", + " y_pred = torch.matmul(X, weights)\n", + " # Compute Loss\n", + " loss = loss_fn(y, y_pred)\n", + " # Compute Gradients\n", + " loss.backward()\n", + " # Update Weights\n", + " with torch.no_grad():\n", + " weights -= lr * weights.grad\n", + " weights.grad.zero_()\n", + " return weights\n", + "\n", + "x = torch.linspace(-math.pi, math.pi, 1000)\n", + "\n", + "# Original true values\n", + "y = torch.sin(x)\n", + "plt.plot(x, y, linestyle='solid', label='sin(x)')\n", + "\n", + "# MSE\n", + "mse = lambda y_true, y_pred: torch.mean(torch.square(y_pred - y_true))\n", + "a, b, c, d = polyfit(x, y, mse, 3, 1e-3, 5000)\n", + "y_pred_mse = a + b * x + c * x ** 2 + d * x ** 3\n", + "plt.plot(x, y_pred_mse.detach().numpy(), linestyle='dashed', label=f'mse')\n", + "\n", + "# MAE\n", + "mae = lambda y_true, y_pred: torch.mean(torch.abs(y_pred - y_true))\n", + "a, b, c, d = polyfit(x, y, mae, 3, 1e-3, 5000)\n", + "y_pred_mae = a + b * x + c * x ** 2 + d * x ** 3\n", + "plt.plot(x, y_pred_mae.detach().numpy(), linestyle='dashed', label=f'mae')\n", + "\n", + "plt.axis('equal')\n", + "plt.title('Comparison of different fits')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "e60cfabe", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-01T09:20:32.269111Z", + "start_time": "2024-04-01T09:20:31.636353Z" + } + }, + "outputs": [], + "source": [ + "x = torch.linspace(-math.pi, math.pi, 10)\n", + "y = torch.sin(x)\n", + "\n", + "def mse(y_true, y_pred):\n", + " assert y_true.shape == y_pred.shape, f\"Your ground truth and predicted values need to have the same shape {y_true.shape} vs {y_pred.shape}\"\n", + " return torch.mean(torch.square(y_pred - y_true))\n", + "def mae(y_true, y_pred):\n", + " assert y_true.shape == y_pred.shape, f\"Your ground truth and predicted values need to have the same shape {y_true.shape} vs {y_pred.shape}\"\n", + " return torch.mean(torch.abs(y_pred - y_true))\n", + "\n", + "test1 = polyfit(x, x, mse, 1, 1e-1, 100).tolist()\n", + "test2 = polyfit(x, x**2, mse, 2, 1e-2, 2000).tolist()\n", + "test3 = polyfit(x, y, mse, 3, 1e-3, 5000).tolist()\n", + "test4 = polyfit(x, y, mae, 3, 1e-3, 5000).tolist()\n", + "\n", + "assert allclose(test1, [0.0, 1.0], atol=1e-6)\n", + "assert allclose(test2, [0.0, 0.0, 1.0], atol=1e-5)\n", + "assert allclose(test3, [0.0, 0.81909, 0.0, -0.08469], atol=1e-3)\n", + "assert allclose(test4, [0.0, 0.83506, 0.0, -0.08974], atol=1e-3)" + ] + }, + { + "cell_type": "markdown", + "id": "825a4e0b", + "metadata": {}, + "source": [ + "### Task 1.3 - Observations on different model configurations\n", + "\n", + "Run `polyfit` on these model configurations and explain your observations for ALL four configurations. Refer to the learning rate and degree of the polynomial when making observations regarding how well the model converges if at all.\n", + "\n", + "1. `polyfit(x, y, mse, 3, 1e-6, 5000)`\n", + "2. `polyfit(x, y, mse, 3, 1e6, 5000)`\n", + "3. `polyfit(x, y, mse, 1, 1e-3, 5000)`\n", + "4. `polyfit(x, y, mse, 6, 1e-3, 5000)`" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "4c2554da", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-01T09:20:38.151067Z", + "start_time": "2024-04-01T09:20:37.724923Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor([-3.5401e-10, 5.1256e-02, -2.5358e-10, 9.4585e-02, 7.6460e-10,\n", + " -1.0178e-02, 1.0055e-11], requires_grad=True)\n" + ] + }, + { + "data": { + "text/plain": "
", + "image/png": "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" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# You may use this cell to run your observations\n", + "x = torch.linspace(-math.pi, math.pi, 1000)\n", + "# Original true values\n", + "y = torch.sin(x)\n", + "plt.plot(x, y, linestyle='solid', label='sin(x)')\n", + "print(polyfit(x, y, mse, 6, 1e-5, 5000))\n", + "\n", + "# mse = lambda y_true, y_pred: torch.mean(torch.square(y_pred - y_true))\n", + "\n", + "# a, b, c, d = polyfit(x, y, mse, 3, 1e-3, 5000)\n", + "# y_pred_mse = a + b * x + c * x ** 2 + d * x ** 3\n", + "# plt.plot(x, y_pred_mse.detach().numpy(), linestyle='dashed', label=f'3,1e-3')\n", + "\n", + "# a, b, c, d = polyfit(x, y, mse, 3, 1e-6, 5000)\n", + "# y_pred_mse = a + b * x + c * x ** 2 + d * x ** 3\n", + "# plt.plot(x, y_pred_mse.detach().numpy(), linestyle='dashed', label=f'3, 1e-6')\n", + "\n", + "# # a, b, c, d =polyfit(x, y, mse, 3, 1e6, 5000)\n", + "# # y_pred_mse = a + b * x + c * x ** 2 + d * x ** 3\n", + "# # plt.plot(x, y_pred_mse.detach().numpy(), linestyle='dashed', label=f'3, 1e6')\n", + "\n", + "# a, b = polyfit(x, y, mse, 1, 1e-3, 5000)\n", + "# y_pred_mse = a + b * x\n", + "# plt.plot(x, y_pred_mse.detach().numpy(), linestyle='dashed', label=f'1, 1e-3')\n", + "\n", + "# a,b,c,d,e,f,g = polyfit(x, y, mse, 6, 1e-5, 5000)\n", + "# y_pred_mse = a + b * x + c * x ** 2 + d * x ** 3 + e * x ** 4 + f * x ** 5 + g * x ** 6\n", + "# plt.plot(x, y_pred_mse.detach().numpy(), linestyle='dashed', label=f'6, 1e-5')\n", + "\n", + "\n", + "# plt.axis('equal')\n", + "# plt.title('Comparison of different fits')\n", + "# plt.legend()\n", + "# plt.show()\n" + ] + }, + { + "cell_type": "markdown", + "id": "4e2fb6c5", + "metadata": {}, + "source": [ + "---\n", + "# 2 Computing gradients for arbitrary graphs\n", + "\n", + "Recall the neural network for `y = |x-1|` from the lecture. We are going to implement forward propagation as mentioned during lecture. This forward pass is the act of feeding data into our input layer, which will then be passed to and processed by the hidden layers according to the different activation functions specific to each perceptron. After passing through all the hidden layers, our neural network will generate an output, $\\hat{y}$, that is hopefully meaningful to our problem at hand.\n", + "\n", + "\n", + "\n", + "### Task 2.1 - Forward pass\n", + "\n", + "In this task, you are required implement the function `forward_pass` that takes in 4 arguments: \n", + "1. `x`, the input values (not including bias)\n", + "2. `w0`, (2x2) weights of the hidden layer\n", + "3. `w1`, (3x1) weights of the output layer\n", + "4. `activation_fn`, the activation function of the hidden layer.\n", + "\n", + "*Note: As in the lecture, there will be no activation for the output layer (i.e. the activation function of the output layer is the identity function `lambda x: x`)*" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "id": "4d97ca45", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-02T03:01:38.802087Z", + "start_time": "2024-04-02T03:01:38.795809Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": "tensor([[3.],\n [2.],\n [1.],\n [0.],\n [1.]], grad_fn=)" + }, + "execution_count": 83, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# This is the same as unsqueeze(1)\n", + "x = torch.linspace(-10, 10, 1000).reshape(-1, 1)\n", + "y = torch.abs(x-1)\n", + "\n", + "def forward_pass(x, w0, w1, activation_fn):\n", + " n = x.shape[0]\n", + " x = torch.cat((torch.ones(n, 1), x), 1)\n", + " # Perform a forward pass\n", + " a = torch.matmul(x, w0)\n", + " h = activation_fn(a)\n", + " h = torch.cat((torch.ones(n, 1), h), 1)\n", + " y_pred = torch.matmul(h, w1)\n", + " return y_pred\n", + "\n", + "# Exact weights\n", + "w0 = torch.tensor([[-1., 1.], [1., -1.]], requires_grad=True)\n", + "w1 = torch.tensor([[0.], [1.], [1.]], requires_grad=True)\n", + "\n", + "# Performing a forward pass on exact solution for weights will give us the correct y values\n", + "x_sample = torch.linspace(-2, 2, 5).reshape(-1, 1)\n", + "forward_pass(x_sample, w0, w1, torch.relu) # tensor([[3.], [2.], [1.], [0.], [1.]])" + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "id": "8a3184ab", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-02T03:01:43.470100Z", + "start_time": "2024-04-02T03:01:43.465055Z" + } + }, + "outputs": [], + "source": [ + "w0 = torch.tensor([[-1., 1.], [1., -1.]], requires_grad=True)\n", + "w1 = torch.tensor([[0.], [1.], [1.]], requires_grad=True)\n", + "\n", + "output0 = forward_pass(torch.linspace(0,1,50).reshape(-1, 1), w0, w1, torch.relu)\n", + "x_sample = torch.linspace(-2, 2, 5).reshape(-1, 1)\n", + "test1 = forward_pass(x_sample, w0, w1, torch.relu).tolist()\n", + "output1 = [[3.], [2.], [1.], [0.], [1.]]\n", + "\n", + "assert output0.shape == torch.Size([50, 1])\n", + "assert test1 == output1" + ] + }, + { + "cell_type": "markdown", + "id": "9c8033e1", + "metadata": {}, + "source": [ + "### Task 2.2 - Backward propagation\n", + "\n", + "In this task, you will start with random weights for `w0` and `w1`, and iteratively perform forward passes and backward propagation multiple times to converge on a solution.\n", + "\n", + "Submit your values of `w0`, `w1`, and `loss` value onto Coursemology. Your `loss` value should be less than 1." + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "id": "d79c3395", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-02T03:12:29.008533Z", + "start_time": "2024-04-02T03:12:18.880737Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "iter\tloss\t\n", + "----\t----\n", + "1000\t10.045333862304688\n", + "2000\t8.946976661682129\n", + "3000\t8.083948135375977\n", + "4000\t7.403078556060791\n", + "5000\t6.8642473220825195\n", + "6000\t6.436517715454102\n", + "7000\t6.095942497253418\n", + "8000\t5.823876857757568\n", + "9000\t5.605810165405273\n", + "10000\t5.430357456207275\n", + "11000\t5.288575649261475\n", + "12000\t5.173434257507324\n", + "13000\t5.079381465911865\n", + "14000\t5.002045154571533\n", + "15000\t4.937958240509033\n", + "16000\t4.884366035461426\n", + "17000\t4.839096546173096\n", + "18000\t4.800426006317139\n", + "19000\t4.766984462738037\n", + "20000\t4.737689018249512\n", + "21000\t4.711678504943848\n", + "22000\t4.688270092010498\n", + "23000\t4.666922092437744\n", + "24000\t4.647202491760254\n", + "25000\t4.628774642944336\n", + "26000\t4.6113667488098145\n", + "27000\t4.594768047332764\n", + "28000\t4.578812599182129\n", + "29000\t4.563370704650879\n", + "30000\t4.548344612121582\n", + "31000\t4.533658981323242\n", + "32000\t4.519261837005615\n", + "33000\t4.505115032196045\n", + "34000\t4.4911980628967285\n", + "35000\t4.477519512176514\n", + "36000\t4.464054584503174\n", + "37000\t4.450812339782715\n", + "38000\t4.437822341918945\n", + "39000\t4.425092697143555\n", + "40000\t4.412638187408447\n", + "41000\t4.400496482849121\n", + "42000\t4.388679027557373\n", + "43000\t4.377202033996582\n", + "44000\t4.366110324859619\n", + "45000\t4.355399131774902\n", + "46000\t4.345085620880127\n", + "47000\t4.3351898193359375\n", + "48000\t4.325725555419922\n", + "49000\t4.316679000854492\n", + "50000\t4.308060169219971\n", + "51000\t4.299867153167725\n", + "52000\t4.292091369628906\n", + "53000\t4.284744739532471\n", + "54000\t4.277796745300293\n", + "55000\t4.271248817443848\n", + "56000\t4.265082359313965\n", + "57000\t4.259285926818848\n", + "58000\t4.25383996963501\n", + "59000\t4.248725891113281\n", + "60000\t4.2439470291137695\n", + "61000\t4.23946475982666\n", + "62000\t4.235273838043213\n", + "63000\t4.231363296508789\n", + "64000\t4.227708339691162\n", + "65000\t4.224303722381592\n", + "66000\t4.221127986907959\n", + "67000\t4.218160152435303\n", + "68000\t4.215404510498047\n", + "69000\t4.212835788726807\n", + "70000\t4.210443019866943\n", + "71000\t4.208215713500977\n", + "72000\t4.206140995025635\n", + "73000\t4.204216003417969\n", + "74000\t4.202425003051758\n", + "75000\t4.2007598876953125\n", + "76000\t4.199214935302734\n", + "77000\t4.197778701782227\n", + "78000\t4.1964430809021\n", + "79000\t4.195202827453613\n", + "80000\t4.194048881530762\n", + "81000\t4.192974090576172\n", + "82000\t4.19197940826416\n", + "83000\t4.191056728363037\n", + "84000\t4.190197467803955\n", + "85000\t4.189395904541016\n", + "86000\t4.188657760620117\n", + "87000\t4.187970161437988\n", + "88000\t4.187328338623047\n", + "89000\t4.1867356300354\n", + "90000\t4.186183452606201\n", + "91000\t4.18567419052124\n", + "92000\t4.185197830200195\n", + "93000\t4.184756278991699\n", + "94000\t4.184344291687012\n", + "95000\t4.183964252471924\n", + "96000\t4.1836090087890625\n", + "97000\t4.183282375335693\n", + "98000\t4.182975769042969\n", + "99000\t4.182692527770996\n", + "100000\t4.182427883148193\n", + "--- w0 ---\n", + "tensor([[-1.5630, -1.1366],\n", + " [-0.6188, -0.1137]], requires_grad=True)\n", + "--- w1 ---\n", + "tensor([[ 3.7083],\n", + " [ 1.5504],\n", + " [-0.6191]], requires_grad=True)\n", + "--- w1 ---\n", + "tensor(4.1824, grad_fn=)\n" + ] + }, + { + "data": { + "text/plain": "
", + "image/png": "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2LBhA9LT0xEcHIy7d+/qXW/Nj9+ePXtw//79cv/HzZoeO32q+/vQ0ONqzN+hTka7JTMICwvDBx98UO6a+Pj4Ct8TUUxf+QohKixiY1ynsqpzn2/evIlDhw7h22+/rfD2hw8frv26VatW6NChA/z9/bF//3787W9/q/7glVSV+zdz5kztec888wzq1q2LV155RbuXxJDSj40pH6/SqvP4paamok+fPhg6dCjGjx9f7nWlfvwqUtWfvb71+s63NFOmTMG5c+fw008/lbuuefPmaN68ufb7rl27IiUlBcuXL8cLL7xg6jGrpG/fvtqvW7duja5du6JJkybYsmULZs2apfc61vr4RUREoG/fvjp7yEuzpseuPNX5fWjq36FWFSJTpkzBq6++Wu6agICASt2Wl5dXmTfb3Lt3D3l5eWXqr+R1NBoN7t27p7NX5Pbt2wgODq7UdquqOvc5MjISnp6eGDRoUJW35+3tDX9/f1y5cqXK162OmjymxZ8OuXr1qt4QKX6Hf3p6Ory9vbXn37592+BjbGxVvX+pqano3r07unbtivXr11d5e+Z+/AypV68eHB0dy/xfU3k/ey8vL73rnZycyg1NqU2dOhV79+7FsWPH0KhRoypfv0uXLti2bZsJJjOuWrVqoXXr1gb/bVnr43f9+nX8+OOP2LVrV5Wvay2PHVD934eGHldj/g61qhCpV68e6tWrZ5Tb6tq1Kz7++GOkpaVpH5TDhw9DoVCgffv2eq/Tvn17ODs7IyoqCsOGDQMApKWl4fz581i2bJlR5iqtqvdZCIHIyEiMGjUKzs7OVd7e3bt3kZKSovMP1ZRq8pgmJCQAgMFZAwMD4eXlhaioKAQFBQEoei346NGjWLp0afUGrqKq3L9bt26he/fuaN++PSIjI+HgUPVXTs39+Bkil8vRvn17REVF4eWXX9aeHxUVhcGDB+u9TteuXfH999/rnHf48GF06NChWv+WTU0IgalTp2L37t2IiYlBYGBgtW4nISFB8serMtRqNS5duoTnn39e7+XW9vgVi4yMRIMGDdC/f/8qX9daHjug+r8Pu3btiqioKJ090ocPHzbu/3wb7W2vFub69esiISFBfPDBB6J27doiISFBJCQkiOzsbCGEEPn5+aJVq1aiR48e4syZM+LHH38UjRo1ElOmTNHexs2bN0Xz5s3FyZMntedNnDhRNGrUSPz444/izJkz4sUXXxRt2rQR+fn5Zr+P+vz4448CgLh48aLey5s3by527dolhBAiOztbvP322yI2NlYkJyeL6Oho0bVrV/HEE0+IrKwsc45dodjYWPHpp5+KhIQEkZSUJL755hvh4+MjBg0apLOu5P0TQoglS5YIlUoldu3aJX799VcxYsQI4e3tbXH379atW+LJJ58UL774orh586ZIS0vTnkqypsdvx44dwtnZWURERIiLFy+KGTNmiFq1aolr164JIYSYM2eOGDlypHZ9UlKSUCqVYubMmeLixYsiIiJCODs7i3//+99S3YVyvfXWW0KlUomYmBidxys3N1e7pvR9/Oyzz8Tu3bvF5cuXxfnz58WcOXMEALFz504p7kK53n77bRETEyOSkpLEiRMnxIABA4Sbm5vNPH5CCFFQUCD8/PzE7Nmzy1xmjY9ddna29rkOgPZ35vXr14UQlft9OHLkSJ1Pth0/flw4OjqKJUuWiEuXLoklS5YIJycnceLECaPNbbMhMnr0aAGgzCk6Olq75vr166J///7C1dVVeHh4iClTpohHjx5pL09OTi5znYcPH4opU6YIDw8P4erqKgYMGCBu3LhhxntWvhEjRojg4GCDlwMQkZGRQgghcnNzRa9evUT9+vWFs7Oz8PPzE6NHj7ao+1Ps9OnTonPnzkKlUgkXFxfRvHlzsXDhQpGTk6OzruT9E6LoI2sLFy4UXl5eQqFQiBdeeEH8+uuvZp6+YpGRkXr/vZb+fwVre/xWr14t/P39hVwuF+3atdP5aOvo0aNFt27ddNbHxMSIoKAgIZfLRUBAgFi7dq2ZJ648Q49XyX9/pe/j0qVLRZMmTYSLi4uoW7eueO6558T+/fvNP3wlDB8+XHh7ewtnZ2fh4+Mj/va3v4kLFy5oL7f2x08IIQ4dOiQAiMTExDKXWeNjV/wR49Kn0aNHCyEq9/uwW7du2vXFvvvuO9G8eXPh7OwsnnrqKaPHl0yIv95NRERERGRmdvvxXSIiIpIeQ4SIiIgkwxAhIiIiyTBEiIiISDIMESIiIpIMQ4SIiIgkwxAhIiIiyTBEiIiISDIMESIiIpIMQ4SIiIgkwxAhIiIiyfw/IaIcE4j6py0AAAAASUVORK5CYII=" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# torch.manual_seed(1) # Set seed to some fixed value\n", + "\n", + "w0 = torch.randn(2, 2, requires_grad=True)\n", + "w1 = torch.randn(3, 1, requires_grad=True)\n", + "\n", + "learning_rate = 1e-4\n", + "print('iter', 'loss', '\\n----', '----', sep='\\t')\n", + "for t in range(1, 100001):\n", + " # Forward pass: compute predicted y\n", + " y_pred = forward_pass(x, w0, w1, torch.relu)\n", + "\n", + " loss = torch.mean(torch.square(y - y_pred))\n", + " loss.backward()\n", + "\n", + " if t % 1000 == 0:\n", + " print(t, loss.item(), sep='\\t')\n", + "\n", + " with torch.no_grad():\n", + " w0 -= learning_rate * w0.grad\n", + " w1 -= learning_rate * w1.grad\n", + " w0.grad.zero_() # reset gradients !important\n", + " w1.grad.zero_()\n", + "\n", + "print(\"--- w0 ---\", w0, sep='\\n')\n", + "print(\"--- w1 ---\", w1, sep='\\n')\n", + "print(\"--- w1 ---\", loss, sep='\\n')\n", + "y_pred = forward_pass(x, w0, w1, torch.relu)\n", + "plt.plot(x, y, linestyle='solid', label='|x-1|')\n", + "plt.plot(x, y_pred.detach().numpy(), linestyle='dashed', label='perceptron')\n", + "plt.axis('equal')\n", + "plt.title('Fit NN on abs function')\n", + "plt.legend()\n", + "plt.show()\n", + "\n", + "# Task 5: Submit the values of `w0`, `w1`, and `loss` values after fitting\n", + "# Note: An acceptable loss value should be less than 1.0\n", + "# You should try adjusting the random seed, learning rate, or \n", + "# number of iterations to improve your model.\n", + "\n", + "w0 = [[0.0, 0.0], [0.0, 0.0]] # to be computed\n", + "w1 = [[0.0], [0.0], [0.0]] # to be computed\n", + "loss = 0.0 # to be computed" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "id": "c4bfdc7d", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-02T03:07:05.366381Z", + "start_time": "2024-04-02T03:07:05.352349Z" + } + }, + "outputs": [ + { + "ename": "AssertionError", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[0;31mAssertionError\u001B[0m Traceback (most recent call last)", + "Cell \u001B[0;32mIn[90], line 12\u001B[0m\n\u001B[1;32m 9\u001B[0m computed_mse_loss \u001B[38;5;241m=\u001B[39m torch\u001B[38;5;241m.\u001B[39mmean(torch\u001B[38;5;241m.\u001B[39msquare(y \u001B[38;5;241m-\u001B[39m y_pred))\u001B[38;5;241m.\u001B[39mitem()\n\u001B[1;32m 11\u001B[0m \u001B[38;5;28;01massert\u001B[39;00m loss \u001B[38;5;241m<\u001B[39m \u001B[38;5;241m1\u001B[39m\n\u001B[0;32m---> 12\u001B[0m \u001B[38;5;28;01massert\u001B[39;00m isclose(computed_mse_loss, loss, atol\u001B[38;5;241m=\u001B[39m\u001B[38;5;241m1e-5\u001B[39m, rtol\u001B[38;5;241m=\u001B[39m\u001B[38;5;241m1e-2\u001B[39m)\n", + "\u001B[0;31mAssertionError\u001B[0m: " + ] + } + ], + "source": [ + "w0 = torch.tensor(w0)\n", + "w1 = torch.tensor(w1)\n", + "\n", + "x = torch.linspace(-10, 10, 1000).reshape(-1, 1)\n", + "y = torch.abs(x-1)\n", + "\n", + "#IMPORTANT: Your forward pass above have to be correctly implemented\n", + "y_pred = forward_pass(x, w0, w1, torch.relu)\n", + "computed_mse_loss = torch.mean(torch.square(y - y_pred)).item()\n", + "\n", + "assert loss < 1\n", + "assert isclose(computed_mse_loss, loss, atol=1e-5, rtol=1e-2)" + ] + }, + { + "cell_type": "markdown", + "id": "413cd863", + "metadata": {}, + "source": [ + "### Task 2.3 - Different random seeds\n", + "\n", + "Try to fit the model on different initial random weight values by adjusting the random seed. \n", + "
\n", + "What is the impact of a random seed? How should we compare different neural network models given your observation to ensure fairness?\n", + "\n", + "Submit your observations and conclusion on Coursemology.\n", + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "id": "c98f725f", + "metadata": {}, + "source": [ + "# 3 Neural Networks (using PyTorch layers)" + ] + }, + { + "cell_type": "markdown", + "id": "8c0f772a", + "metadata": {}, + "source": [ + "### 3.1.1 Demo - nn.Module\n", + "\n", + "The `nn.Module` class is an interface that houses two main methods: `__init__`, where we instantiate our layers and activation functions, and `forward`, that performs the forward pass.\n", + "\n", + "To create our own neural network, we will inherit from the nn.Module parent class and call `super().__init__()` from within our constructor to create our module. Next, we will implement the `forward` function within our class so we can call it from our module to perform the forward pass. \n", + "\n", + "In this example, we define a custom LinearLayer class that inherits from nn.Module. The __init__ method initializes the weight and bias parameters as nn.Parameter objects, which are special types of tensors that require gradients to be computed during the backward pass.\n", + "\n", + "The forward method defines the forward pass of the linear layer. It takes a tensor x as input and computes the matrix multiplication of x and self.weight using the torch.matmul function, and then adds self.bias.\n", + "\n", + "We also created our own activation function which uses `torch.sin` by inheriting from nn.Module.\n", + "\n", + "Finally, in our Model, we can combine our own LinearLayers together with our SineActivation to process our input data using the forward function. In later sections, you will see how we can train our models." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "36fd1dd3", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-02T05:01:23.721712Z", + "start_time": "2024-04-02T05:01:23.715216Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Original value: tensor([[1.]])\n", + "Value after being processed by Model: tensor([[1.0562]], grad_fn=)\n" + ] + } + ], + "source": [ + "# Define a linear layer using nn.Module\n", + "class LinearLayer(nn.Module):\n", + " def __init__(self, input_dim, output_dim):\n", + " super().__init__()\n", + " self.weight = nn.Parameter(torch.randn(input_dim, output_dim))\n", + " self.bias = nn.Parameter(torch.randn(output_dim))\n", + "\n", + " def forward(self, x):\n", + " return torch.matmul(x, self.weight) + self.bias\n", + " \n", + "class SineActivation(nn.Module):\n", + " def __init__(self):\n", + " super().__init__()\n", + "\n", + " def forward(self, x):\n", + " return torch.sin(x)\n", + "\n", + "class Model(nn.Module):\n", + " def __init__(self, input_size, hidden_size, num_classes):\n", + " super(Model, self).__init__()\n", + " self.l1 = LinearLayer(input_size, hidden_size)\n", + " self.act = SineActivation()\n", + " self.l2 = LinearLayer(hidden_size, num_classes)\n", + "\n", + " def forward(self, x):\n", + " x = self.l1(x)\n", + " x = self.act(x)\n", + " x = self.l2(x)\n", + " return x\n", + " \n", + "input_size = 1\n", + "hidden_size = 1\n", + "num_classes = 1\n", + "\n", + "model = Model(input_size, hidden_size, num_classes)\n", + "\n", + "x = torch.tensor([[1.0]])\n", + "output = model(x)\n", + "print(\"Original value: \", x)\n", + "print(\"Value after being processed by Model: \", output)\n" + ] + }, + { + "cell_type": "markdown", + "id": "c6adbc1d", + "metadata": {}, + "source": [ + "_Extra: We can also define a `backward` function to perform backpropagation which will not be required in this problem set._\n", + "\n", + "In this trivial example, the Squared module takes an input x and returns x**2. The backward method calculates the gradient of the output with respect to the input, based on the gradients of the output grad_output.\n", + "\n", + "We can define the backward function for functions that are not fully differentiable that we still wish to use in our neural network." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "3e1044e1", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-02T04:56:54.392808Z", + "start_time": "2024-04-02T04:56:54.230366Z" + } + }, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'nn' is not defined", + "output_type": "error", + "traceback": [ + "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[0;31mNameError\u001B[0m Traceback (most recent call last)", + "Cell \u001B[0;32mIn[1], line 1\u001B[0m\n\u001B[0;32m----> 1\u001B[0m \u001B[38;5;28;01mclass\u001B[39;00m \u001B[38;5;21;01mSquared\u001B[39;00m(\u001B[43mnn\u001B[49m\u001B[38;5;241m.\u001B[39mModule):\n\u001B[1;32m 2\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21mforward\u001B[39m(\u001B[38;5;28mself\u001B[39m, x):\n\u001B[1;32m 3\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mx \u001B[38;5;241m=\u001B[39m x\n", + "\u001B[0;31mNameError\u001B[0m: name 'nn' is not defined" + ] + } + ], + "source": [ + "class Squared(nn.Module):\n", + " def forward(self, x):\n", + " self.x = x\n", + " return x**2\n", + "\n", + " def backward(self, grad_output):\n", + " grad_input = 2 * self.x * grad_output\n", + " return grad_input" + ] + }, + { + "cell_type": "markdown", + "id": "023c28dd", + "metadata": {}, + "source": [ + "### 3.1.2 Demo - Activation Functions\n", + "\n", + "Pytorch also provides built-in activation functions. To help you understand more about activation functions, we have included some examples of activation functions introduced in the lecture, namely Sigmoid, Tanh, and ReLu. \n", + "\n", + " \n", + "\n", + "Activation functions introduces non-linearity into the output of a neuron, allowing the NN to learn non-linear functions. Without non-linearity, our entire network will effectively become a linear model with only one layer, preventing us from modelling complex representations based on our inputs.\n", + "\n", + "Sigmoid, Tanh and ReLU are three examples of such activation functions introduced during lecture and the code block below shows how they map input to output values.\n", + "\n", + "The choice of activation function for the hidden layers and the output layer depends on the problem you're trying to solve.\n", + "\n", + "#### For the hidden layers, there are several commonly used activation functions:\n", + "\n", + "ReLU (Rectified Linear Unit): ReLU is a popular activation function that is widely used in deep learning models. It maps non-positive inputs to 0 and positive inputs to their original value. It is mainly used in hidden layers because it is fast to compute, has sparse activations, and helps to mitigate the vanishing gradient problem, where the gradients can become very small and cause the model to learn slowly.\n", + "\n", + "Tanh (Hyperbolic Tangent): Tanh is a activation function that maps input values to the range [-1, 1]. It is similar to Sigmoid, but instead of producing output values in the range [0, 1], it produces output values in the range [-1, 1]. Tanh is useful for solving problems where you want the activations to be centered around zero, such as in recurrent neural networks.\n", + "\n", + "Sigmoid: Sigmoid maps its input values to the range [0, 1]. It is less commonly used in hidden layers because it has a relatively slow convergence rate and can introduce saturation, where the output values become very small or very large, which can make it difficult for the gradients to flow through the model.\n", + "\n", + "#### For the output layer, the choice of activation function depends on the problem you're trying to solve. Here are some common choices:\n", + "\n", + "Sigmoid: The Sigmoid activation function maps input values to the range [0, 1]. It is commonly used for binary classification problems where the network produces a probability of one of two classes. In this case, the Sigmoid activation maps the output to a probability distribution over the two classes.\n", + "\n", + "Softmax: The Softmax activation function is a generalization of the Sigmoid activation that maps input values to a probability distribution over multiple classes. It is commonly used for multiclass classification problems. The Softmax activation function is used to convert the raw scores produced by the network into a probability distribution over the classes.\n", + "\n", + "Linear: For regression problems, the linear activation function is often used because it just maps the input values to the output values without any change.\n", + "\n", + "In summary, ReLU is a common choice for hidden layers, and the choice of activation function for the output layer depends on the problem you're trying to solve (binary classification, multiclass classification, or regression).\n", + "\n", + "---\n", + "\n", + "_Extra (Vanishing Gradient Problem):_\n", + "\n", + "_Below is an image of the derivatives of the Sigmoid, Tanh and ReLU function. We can see that the derivatives for both Sigmoid and Tanh tend to zero when the inputs are largely positive or negative, while derivative for ReLU is zero only when the inputs are non-positive. In our neural network, gradients are calculated through backpropagation using chain rule and the derivatives of each layer are multiplied down the network. The gradient is more likely to decrease exponentially as we propagate down to the initial layers if we use Sigmoid and Tanh as compared to ReLU, leading to the vanishing gradient problem._\n", + "\n", + " \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 119, + "id": "1ea9f8e6", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-02T03:28:32.429716Z", + "start_time": "2024-04-02T03:28:32.330845Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": "
", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA4AAAAJ3CAYAAADF1D9CAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAADQ6klEQVR4nOzdd3gUZdcG8HtTdtMT0gspBEIKgQABAlISUECwoTQbgmJXEOliIUiTpoDYQSkqKlJERV5QCU26gNJrIEBCIJCE9Ha+P/bbMctuKkk2sPfvuvbKZuaZmTOzM8/MmfaoRERAREREREREdzwLUwdAREREREREdYMJIBERERERkZlgAkhERERERGQmmAASERERERGZCSaAREREREREZoIJIBERERERkZlgAkhERERERGQmmAASERERERGZCSaAREREREREZoIJIBERmYxKpYJKpTJ1GDUmPj4eKpUK8fHxpg6FiIjIKCaARHewoKAgqFQqLF682NShVEtiYiLi4+NrLf6zZ8/iiy++wHPPPYeoqChYWVlBpVJhypQplRp+x44deOihh+Dh4QFbW1tERERg8uTJyMvLK3e4o0eP4oknnoCPjw9sbGzQuHFjjB49Gunp6TUwV2RO1qxZg/j4eBw4cMDUodwREhISMH36dDz88MPw8/NTTlBcuHCh2uOMj4+v8xMCubm5WL16Nd544w3cfffdcHZ2hkqlQpMmTeo0DiKqn6xMHQARUVkSExMxadIkxMbGYsiQITU+/nnz5mHevHnVGvabb77B4MGDUVxcDD8/P/j7++PQoUN455138PPPPyMhIQF2dnYGw23atAn33XcfcnNz4eHhgWbNmuHYsWOYM2cOVq9ejb/++gteXl63OmtkJtasWYMlS5YgKCgILVu2NHU4t70+ffogIyOjRsc5adIkAKjTJPD48eN45JFH6mx6RHR74RVAIjJb7u7uuP/++/Huu+/it99+Q9++fSs1XGJiIoYOHYri4mLMnDkTSUlJ+Pvvv3Hy5EmEhoZiz549GDt2rMFwN27cwMCBA5Gbm4vhw4fj4sWL2LdvH86fP4+OHTvizJkzGDp0aE3PJhFVUrNmzTBkyBB8/PHH2Lt3r6nDqTZra2u0b98ew4YNw7Jly/Dll1+aOiQiqkd4BZCIzNZbb72l9/93331XqeFmzZqF/Px89OjRA2PGjFG6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dttt3HrrrXXcUxEREcfTNBAiIuKySkpKGD16NCNGjKB9+/bcfffdbNmyhZiYmGr7N2vW7KyvuXPnTrKysnjhhRdo3rw5ABs3bjyj34IFC/jkk09ISkpixIgRPPvsszz99NM1vm5YWBgjRoxgxIgR3HrrrQwaNIhjx47RuHHjc9xbERERx1MAFBERl/XUU0+Rk5PDq6++SkhICMuWLePuu+/m888/P+/XbNGiBX5+frz22muMHz+erVu38uyzz1bpc/DgQe677z6mTp3KVVddxTvvvMOQIUMYPHgwvXv3PuM1X375ZeLi4rj00kvx8vLio48+IjY2loiIiPOuU0RExBF0CqiIiLikpKQkXnnlFebOnUtYWBheXl7MnTuX7777jjfeeOO8XzcqKop33nmHjz76iI4dO/LCCy8wffr0ivWGYTBu3Dh69erFhAkTALj++uuZMGECt99+O/n5+We8ZkhICFOnTqVHjx707NmTlJQUli5dWu0dQ0VERKyku4CKiIiIiIh4CP1pUkRERERExEMoAIqIiIiIiHgIBUAREREREREPoQAoIiIiIiLiIRQARUREREREPIQCoIiIiIiIiIdQABQREREREfEQCoAiIiIiIiIeQgFQRERERETEQygAioiIiIiIeAgFQBEREREREQ+hACgiIiIiIuIh/h9i2TldQXsGMQAAAABJRU5ErkJggg==" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "x_sample = torch.linspace(-2, 2, 100)\n", + "sigmoid_output = nn.Sigmoid()(x_sample).detach().numpy()\n", + "tanh_output = nn.Tanh()(x_sample).detach().numpy()\n", + "relu_output = nn.ReLU()(x_sample).detach().numpy()\n", + "\n", + "f = plt.figure()\n", + "f.set_figwidth(6)\n", + "f.set_figheight(6)\n", + "plt.xlabel('x - axis')\n", + "plt.ylabel('y - axis')\n", + "plt.title(\"Input: 100 x-values between -1 to 1 \\n\\n Output: Corresponding y-values after passed through each activation function\\n\", fontsize=16)\n", + "plt.axvline(x=0, color='r', linestyle='dashed')\n", + "plt.axhline(y=0, color='r', linestyle='dashed')\n", + "plt.plot(x_sample, sigmoid_output)\n", + "plt.plot(x_sample, tanh_output)\n", + "plt.plot(x_sample, relu_output)\n", + "plt.legend([\"\",\"\",\"Sigmoid Output\", \"Tanh Output\", \"ReLU Output\"])\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "971aac32", + "metadata": {}, + "source": [ + "### Task 3.1 - Forward pass\n", + "\n", + "In part 2, you manually created the Linear layers and explicitly specified weights and biases for the forward pass to connect every input neuron to every output neuron which will be extremely tedious for larger networks. \n", + "\n", + "In this task, you will be using `nn.Linear(in_dimensions, out_dimensions)` provided by pytorch which abstracts all these details away. `nn.Linear` represents a fully connected layer with bias automatically included. We can also choose to remove the bias column by simply calling `nn.Linear(in_dimensions, out_dimensions, bias=False)` instead.\n", + "\n", + "We inherit from PyTorch's `nn.Module` class to build the model from the previous task `y = |x-1|` from the lecture. \n", + "\n", + " \n", + "\n", + "Pytorch is widely used in machine learning due to the ease of being able to combine many different types of layers and activation functions to create neural networks. This task should allow you to appreciate how easily we can build neural networks using PyTorch. \n", + "\n", + "The model has been built for you in `__init__`. You need to implement the `forward` method, making use of the layers `self.l1`, `self.l2`, and the activation function `self.relu`. You need to combine the linear layers AND the activation function in the forward pass function!\n", + "\n", + "_Extra: PyTorch has many other layers implemented for various model architectures. \n", + "You can read more in the glossary as well as in the docs: https://pytorch.org/docs/stable/nn.html \n", + "For now, we will only be using fully connected `nn.Linear` layers._" + ] + }, + { + "cell_type": "code", + "execution_count": 127, + "id": "81145ccc", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-02T04:13:25.016858Z", + "start_time": "2024-04-02T04:13:25.013710Z" + } + }, + "outputs": [], + "source": [ + "class MyFirstNeuralNet(nn.Module):\n", + " def __init__(self): # set the arguments you'd need\n", + " super().__init__()\n", + " self.l1 = nn.Linear(1, 2) # bias included by default\n", + " self.l2 = nn.Linear(2, 1) # bias included by default\n", + " self.relu = nn.ReLU()\n", + " \n", + " # Task 3.1: Forward pass\n", + " def forward(self, x):\n", + " '''\n", + " Forward pass to process input through two linear layers and ReLU activation function.\n", + "\n", + " Parameters\n", + " ----------\n", + " x : A tensor of of shape (n, 1) where n is the number of training instances\n", + "\n", + " Returns\n", + " -------\n", + " Tensor of shape (n, 1)\n", + " '''\n", + " x = self.l1(x)\n", + " x = self.relu(x)\n", + " x = self.l2(x)\n", + " return x\n", + " \n" + ] + }, + { + "cell_type": "code", + "execution_count": 128, + "id": "1040ee57", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-02T04:13:26.388248Z", + "start_time": "2024-04-02T04:13:26.383984Z" + } + }, + "outputs": [], + "source": [ + "x_sample = torch.linspace(-2, 2, 5).reshape(-1, 1)\n", + "\n", + "model = MyFirstNeuralNet()\n", + "\n", + "state_dict = OrderedDict([\n", + " ('l1.weight', torch.tensor([[1.],[-1.]])),\n", + " ('l1.bias', torch.tensor([-1., 1.])),\n", + " ('l2.weight', torch.tensor([[1., 1.]])),\n", + " ('l2.bias', torch.tensor([0.]))\n", + "])\n", + "\n", + "model.load_state_dict(state_dict)\n", + "\n", + "student1 = model.forward(x_sample).detach().numpy()\n", + "output1 = [[3.], [2.], [1.], [0.], [1.]]\n", + "\n", + "assert allclose(student1, output1, atol=1e-5)" + ] + }, + { + "cell_type": "markdown", + "id": "b897a701", + "metadata": {}, + "source": [ + "### 3.1.3 Demo - Optimisers in PyTorch\n", + "\n", + "Optimizers in PyTorch are used to update the parameters of a model during training. They do this by computing the gradients of the model's parameters with respect to the loss function, and then using these gradients to update the parameters in a way that minimizes the loss. \n", + "\n", + "In the following code example, we will simply demo a few basic functionalities of optimisers. Only in 3.1.4 Demo will you see an actual optimizer at work to train a Neural Net.\n", + "\n", + "We first create a tensor x with requires_grad set to True. Next, we define our loss function to be the simple equation y = x ** 2 + 2 * x. Next, we define an optimiser (in this case, Stochastic Gradient Descent, SGD) and pass it our tensor x as a parameter to optimise. After updating the gradient stored in x using `backward()`, we will call the `step()` function to let the optimiser update x. We will then set the gradient of our tensor x back to zero using `zero_grad()`.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "7c2a8f0e", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-02T04:57:09.043600Z", + "start_time": "2024-04-02T04:57:08.881544Z" + } + }, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'torch' is not defined", + "output_type": "error", + "traceback": [ + "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[0;31mNameError\u001B[0m Traceback (most recent call last)", + "Cell \u001B[0;32mIn[1], line 1\u001B[0m\n\u001B[0;32m----> 1\u001B[0m x \u001B[38;5;241m=\u001B[39m \u001B[43mtorch\u001B[49m\u001B[38;5;241m.\u001B[39mtensor([\u001B[38;5;241m1.0\u001B[39m], requires_grad\u001B[38;5;241m=\u001B[39m\u001B[38;5;28;01mTrue\u001B[39;00m)\n\u001B[1;32m 3\u001B[0m \u001B[38;5;66;03m#Loss function\u001B[39;00m\n\u001B[1;32m 4\u001B[0m y \u001B[38;5;241m=\u001B[39m x \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39m \u001B[38;5;241m2\u001B[39m \u001B[38;5;241m+\u001B[39m \u001B[38;5;241m2\u001B[39m \u001B[38;5;241m*\u001B[39m x\n", + "\u001B[0;31mNameError\u001B[0m: name 'torch' is not defined" + ] + } + ], + "source": [ + "x = torch.tensor([1.0], requires_grad=True)\n", + "\n", + "#Loss function\n", + "y = x ** 2 + 2 * x\n", + "\n", + "# Define an optimizer, pass it our tensor x to update\n", + "optimiser = torch.optim.SGD([x], lr=0.1)\n", + "\n", + "# Perform backpropagation\n", + "y.backward()\n", + "\n", + "print(\"Value of x before it is updated by optimiser: \", x)\n", + "print(\"Gradient stored in x after backpropagation: \", x.grad)\n", + "\n", + "# Call the step function on the optimizer to update weight\n", + "optimiser.step()\n", + "\n", + "#Weight update, x = x - lr * x.grad = 1.0 - 0.1 * 4.0 = 0.60\n", + "print(\"Value of x after it is updated by optimiser: \", x)\n", + "\n", + "# Set gradient of weight to zero\n", + "optimiser.zero_grad()\n", + "print(\"Gradient stored in x after zero_grad is called: \", x.grad)\n" + ] + }, + { + "cell_type": "markdown", + "id": "65c27fd8", + "metadata": {}, + "source": [ + "### 3.1.4 Demo - Training Your First Neural Net\n", + "\n", + "Now, let's make use of an optimiser to train our neural network in Task 3.1!\n", + "\n", + "Take note, if you make changes to your model (e.g. fix any bugs in your forward pass), then you will have to re-run your previous cell to update the model definition.\n", + "\n", + "In the example below, we are applying what we have learnt in the above section about optimisers to train our neural network.\n", + "\n", + "We will using `torch.optim.SGD(model.parameters(), lr=1e-3, momentum=0)` as the optimiser. This SGD optimiser will implement stochastic gradient descent for us. As mentioned previously, `optimiser.zero_grad()` will set all the gradients to zero to prevent accumulation of all the previous old gradients we have calculated using backpropagation. `optimiser.step()` causes our optimiser to update the model weights based on the gradients of our parameters.\n", + "\n", + "We can see clearly from our example below that we are calling `optimiser.zero_grad()` at the start of the loop so we can clear the gradient from the previous iteration of backpropagation. Then after we compute the loss in the current iteration using our loss function and model predictions, y_pred, we will call `loss.backward()` to let pytorch carry out the backpropagation for us. After backpropagation, gradients for each of our parameters will be computed for us to update our model weights using `optimiser.step()`." + ] + }, + { + "cell_type": "code", + "execution_count": 137, + "id": "587d9e4d", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-02T04:20:54.253141Z", + "start_time": "2024-04-02T04:20:53.150715Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch\tLoss\t\n", + "-----\t----\n", + " 1000\t0.3594755232334137\n", + " 2000\t0.13189829885959625\n", + " 3000\t0.05977959558367729\n", + " 4000\t0.03069353848695755\n", + " 5000\t0.016396140679717064\n", + " 6000\t0.00869276374578476\n", + " 7000\t0.004500675015151501\n", + " 8000\t0.0022789021022617817\n", + " 9000\t0.0011381806107237935\n", + "10000\t0.0005686104414053261\n" + ] + }, + { + "data": { + "text/plain": "
", + "image/png": "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" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "torch.manual_seed(6) # Set seed to some fixed value\n", + "\n", + "epochs = 10000\n", + "\n", + "model = MyFirstNeuralNet()\n", + "# the optimizer controls the learning rate\n", + "optimiser = torch.optim.SGD(model.parameters(), lr=1e-3, momentum=0)\n", + "loss_fn = nn.MSELoss()\n", + "\n", + "x = torch.linspace(-10, 10, 1000).reshape(-1, 1)\n", + "y = torch.abs(x-1)\n", + "\n", + "print('Epoch', 'Loss', '\\n-----', '----', sep='\\t')\n", + "for i in range(1, epochs+1):\n", + " # reset gradients to e\n", + " optimiser.zero_grad()\n", + " # get predictions\n", + " y_pred = model(x)\n", + " # compute loss\n", + " loss = loss_fn(y_pred, y)\n", + " # backpropagate\n", + " loss.backward()\n", + " # update the model weights\n", + " optimiser.step()\n", + "\n", + " if i % 1000 == 0:\n", + " print (f\"{i:5d}\", loss.item(), sep='\\t')\n", + "\n", + "y_pred = model(x)\n", + "plt.plot(x, y, linestyle='solid', label='|x-1|')\n", + "plt.plot(x, y_pred.detach().numpy(), linestyle='dashed', label='perceptron')\n", + "plt.axis('equal')\n", + "plt.title('Fit NN on y=|x-1| function')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "6f845c8d", + "metadata": {}, + "source": [ + "### 3.2 Concept - Save and load models\n", + "\n", + "Your model weights are stored within the model itself. \n", + "You may save/load the model weights:\n", + "```\n", + "torch.save(model.state_dict(), \"path/to/model_state_dict\")\n", + "\n", + "model = MyFirstNeuralNet()\n", + "model.load_state_dict(torch.load(\"path/to/model_state_dict\"))\n", + "```\n", + "\n", + "Alternatively, you can save/load the entire model using\n", + "```\n", + "torch.save(model, \"path/to/model\")\n", + "\n", + "model = torch.load(\"path/to/model\")\n", + "```" + ] + }, + { + "cell_type": "markdown", + "id": "ac548df6", + "metadata": {}, + "source": [ + "### Task 3.2 - Model weights\n", + "\n", + "For this task, you will print out the trained model's `.state_dict()` and submit this to Coursemology.\n", + "\n", + "*Note: An acceptable loss value should be less than 1.0. If your loss is greater than 1, try re-running with a different random initialization, or adjust your model configuration.*" + ] + }, + { + "cell_type": "code", + "execution_count": 142, + "id": "481bb0cc", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-02T04:23:56.764275Z", + "start_time": "2024-04-02T04:23:56.758484Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--- Submit the OrderedDict below ---\n", + "OrderedDict([('l1.weight', tensor([[ 1.],\n", + " [-1.]])), ('l1.bias', tensor([-1., 1.])), ('l2.weight', tensor([[1., 1.]])), ('l2.bias', tensor([0.]))])\n" + ] + } + ], + "source": [ + "# To submit this output\n", + "print(\"--- Submit the OrderedDict below ---\")\n", + "print(model.state_dict())" + ] + }, + { + "cell_type": "code", + "execution_count": 143, + "id": "d6e437cc", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-02T04:23:59.123744Z", + "start_time": "2024-04-02T04:23:59.119881Z" + } + }, + "outputs": [], + "source": [ + "def get_loss(model):\n", + " model.load_state_dict(state_dict)\n", + " x = torch.linspace(-10, 10, 1000).reshape(-1, 1)\n", + " y = torch.abs(x-1)\n", + " loss_fn = nn.MSELoss()\n", + " y_pred = model.forward(x)\n", + " return loss_fn(y_pred, y).item()\n", + "\n", + "assert model.load_state_dict(state_dict)\n", + "assert get_loss(model) < 1" + ] + }, + { + "cell_type": "markdown", + "id": "9151f959", + "metadata": {}, + "source": [ + "### 3.3 Concept - Using NN to recognize handwritten digits\n", + "\n", + "In the final part of this problem set, we will be building a neural network to classify images to their respective digits. \n", + "\n", + "You will build and train a model on the classic **MNIST Handwritten Digits** dataset. Each grayscale image is a $28 \\times 28$ matrix/tensor that looks like so:\n", + "\n", + "\n", + "\n", + "MNIST is a classification problem and the task is to take in an input image and classify them into one of ten buckets: the digits from $0$ to $9$. " + ] + }, + { + "cell_type": "markdown", + "id": "eda667dc", + "metadata": {}, + "source": [ + "### 3.3 Demo - Loading an external dataset\n", + "\n", + "The cell below imports the MNIST dataset, which is already pre-split into train and test sets. \n", + "\n", + "The download takes approximately 63MB of space." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "2ce62735", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-02T04:57:52.145541Z", + "start_time": "2024-04-02T04:57:52.090524Z" + } + }, + "outputs": [], + "source": [ + "# DO NOT REMOVE THIS CELL – THIS DOWNLOADS THE MNIST DATASET\n", + "# RUN THIS CELL BEFORE YOU RUN THE REST OF THE CELLS BELOW\n", + "from torchvision import datasets\n", + "\n", + "# This downloads the MNIST datasets ~63MB\n", + "mnist_train = datasets.MNIST(\"./\", train=True, download=True)\n", + "mnist_test = datasets.MNIST(\"./\", train=False, download=True)\n", + "\n", + "x_train = mnist_train.data.reshape(-1, 784) / 255\n", + "y_train = mnist_train.targets\n", + " \n", + "x_test = mnist_test.data.reshape(-1, 784) / 255\n", + "y_test = mnist_test.targets" + ] + }, + { + "cell_type": "markdown", + "id": "e092f6c4", + "metadata": {}, + "source": [ + "### Task 3.3 - Define the model architechure and implement the forward pass\n", + "Create a 3-layer network in the `__init__` method of the model `DigitNet`. \n", + "These layers are all `Linear` layers and should correspond to the following the architecture:\n", + "\n", + "\n", + "\n", + "In our data, a given image $x$ has been flattened from a 28x28 image to a 784-length array.\n", + "\n", + "After initializing the layers, stitch them together in the `forward` method. Your network should look like so:\n", + "\n", + "$$x \\rightarrow \\text{Linear(512)} \\rightarrow \\text{ReLU} \\rightarrow \\text{Linear(128)} \\rightarrow \\text{ReLU} \\rightarrow \\text{Linear(10)} \\rightarrow \\text{Softmax} \\rightarrow \\hat{y}$$\n", + "\n", + "**Softmax Layer**: The final softmax activation is commonly used for classification tasks, as it will normalizes the results into a vector of values that follows a probability distribution whose total sums up to 1. The output values are between the range [0,1] which is nice because we are able to avoid binary classification and accommodate as many classes or dimensions in our neural network model.\n", + "\n", + "*Note: When using `torch.softmax(...)` on the final layer, ensure you are applying it on the correct dimension (as you did in NumPy via the `axis` argument in popular methods)*" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "id": "596d04f8", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-02T05:18:11.250227Z", + "start_time": "2024-04-02T05:18:11.246543Z" + } + }, + "outputs": [], + "source": [ + "class DigitNet(nn.Module):\n", + " def __init__(self, input_dimensions, num_classes): # set the arguments you'd need\n", + " super().__init__()\n", + " \"\"\"\n", + " YOUR CODE HERE\n", + " - DO NOT hardcode the input_dimensions, use the parameter in the function\n", + " - Your network should work for any input and output size \n", + " - Create the 3 layers (and a ReLU layer) using the torch.nn layers API\n", + " \"\"\"\n", + " self.l1 = nn.Linear(input_dimensions, 512)\n", + " self.l2 = nn.Linear(512, 128)\n", + " self.l3 = nn.Linear(128, num_classes)\n", + " self.relu = nn.ReLU()\n", + "\n", + " \n", + " def forward(self, x):\n", + " \"\"\"\n", + " Performs the forward pass for the network.\n", + " \n", + " Parameters\n", + " ----------\n", + " x : Input tensor (batch size is the entire dataset)\n", + "\n", + " Returns\n", + " -------\n", + " The output of the entire 3-layer model.\n", + " \"\"\"\n", + " x = self.l1(x)\n", + " x = self.relu(x)\n", + " x = self.l2(x)\n", + " x = self.relu(x)\n", + " x = self.l3(x)\n", + " return torch.softmax(x, dim=1)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "id": "95c1a075", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-02T05:20:17.458629Z", + "start_time": "2024-04-02T05:20:17.454070Z" + } + }, + "outputs": [], + "source": [ + "model = DigitNet(784, 10)\n", + "assert [layer.detach().numpy().shape for name, layer in model.named_parameters()] \\\n", + " == [(512, 784), (512,), (128, 512), (128,), (10, 128), (10,)]" + ] + }, + { + "cell_type": "markdown", + "id": "d356b9ad", + "metadata": {}, + "source": [ + "### Task 3.4 - Training Loop\n", + "\n", + "As demonstrated in Section 3.2, implement the function `train_model` that performs the following for every epoch/iteration:\n", + "\n", + "1. set the optimizer's gradients to zero\n", + "2. forward pass\n", + "3. calculate the loss\n", + "4. backpropagate using the loss\n", + "5. take an optimzer step to update weights\n", + "\n", + "This time, use the Adam optimiser to train the network.\n", + "
\n", + "
\n", + "Use Cross-Entropy Loss, since we are performing a classification.\n", + "
\n", + "_(PyTorch Softmax normalize logits while CrossEntropyLoss accepts unnormalized logits and CrossEntropyLoss already applies LogSoftmax, however, we will use Softmax here as we want to showcase how Softmax can convert the raw scores produced by the network into a probability distribution over the classes)._\n", + "
\n", + "
\n", + "Train for 20 epochs. \n", + "\n", + "*Note: refer to the command glossary to find out how to instantiate optimisers, losses, and more*" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "id": "60ab3632", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-02T05:18:29.674622Z", + "start_time": "2024-04-02T05:18:15.183827Z" + } + }, + "outputs": [], + "source": [ + "def train_model(x_train, y_train, epochs=20):\n", + " \"\"\"\n", + " Trains the model for 20 epochs/iterations\n", + " \n", + " Parameters\n", + " ----------\n", + " x_train : A tensor of training features of shape (60000, 784)\n", + " y_train : A tensor of training labels of shape (60000, 1)\n", + " epochs : Number of epochs, default of 20\n", + " \n", + " Returns\n", + " -------\n", + " The final model \n", + " \"\"\"\n", + " model = DigitNet(784, 10)\n", + " optimiser = torch.optim.Adam(model.parameters())\n", + " loss_fn = nn.CrossEntropyLoss()\n", + "\n", + " for i in range(epochs):\n", + " optimiser.zero_grad()\n", + " y_pred = model(x_train)\n", + " \n", + " loss = loss_fn(y_pred, y_train)\n", + " loss.backward()\n", + " optimiser.step()\n", + " return model\n", + " \n", + "digit_model = train_model(x_train, y_train)" + ] + }, + { + "cell_type": "code", + "outputs": [], + "source": [], + "metadata": { + "collapsed": false + }, + "id": "7cf3b5fd0f653e73" + }, + { + "cell_type": "code", + "execution_count": 58, + "id": "a99b7049", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-02T05:18:29.879303Z", + "start_time": "2024-04-02T05:18:29.675746Z" + } + }, + "outputs": [], + "source": [ + "x_train_new = torch.rand(5, 784, requires_grad=True)\n", + "y_train_new = ones = torch.ones(5, dtype=torch.uint8)\n", + "\n", + "assert type(train_model(x_train_new, y_train_new)) == DigitNet" + ] + }, + { + "cell_type": "markdown", + "id": "01fdee35", + "metadata": {}, + "source": [ + "### 3.5 Demo - Explore your model\n", + "\n", + "Now that we have trained the model, let us run some predictions on the model." + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "id": "6f83aa93", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-02T05:18:55.537241Z", + "start_time": "2024-04-02T05:18:55.510301Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "true label: 1\n", + "pred label: 1\n" + ] + }, + { + "data": { + "text/plain": "
", + "image/png": "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" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# This is a demonstration: You can use this cell for exploring your trained model\n", + "\n", + "idx = 190 # try on some index\n", + "\n", + "scores = digit_model(x_test[idx:idx+1])\n", + "_, predictions = torch.max(scores, 1)\n", + "print(\"true label:\", y_test[idx].item())\n", + "print(\"pred label:\", predictions[0].item())\n", + "\n", + "plt.imshow(x_test[idx].numpy().reshape(28, 28), cmap='gray')\n", + "plt.axis(\"off\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "fcc94586", + "metadata": {}, + "source": [ + "### Task 3.5 - Evaluate the model\n", + "\n", + "Now that we have trained the model, we should evaluate it using our test set. \n", + "We will be using the accuracy (whether or not the model predicted the correct label) to measure the model performance. \n", + "\n", + "Since our model takes in a (n x 784) tensor and returns a (n x 10) tensor of probability scores for each of the 10 classes, we need to convert the probability scores into the actual predictions by taking the index of the maximum probability. " + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "id": "a5684246", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-02T05:30:31.386136Z", + "start_time": "2024-04-02T05:30:31.326612Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": "tensor(0.6764)" + }, + "execution_count": 84, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def get_accuracy(scores, labels):\n", + " \"\"\"\n", + " Helper function that returns accuracy of model\n", + " \n", + " Parameters\n", + " ----------\n", + " scores : The raw softmax scores of the network\n", + " labels : The ground truth labels\n", + " \n", + " Returns\n", + " -------\n", + " Accuracy of the model. Return a number in range [0, 1].\n", + " 0 means 0% accuracy while 1 means 100% accuracy\n", + " \"\"\"\n", + " idxes = torch.argmax(scores, dim=1)\n", + " ints = (idxes == labels).float()\n", + " return torch.mean(ints)\n", + "\n", + "scores = digit_model(x_test) # n x 10 tensor\n", + "get_accuracy(scores, y_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "id": "beafdef0", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-02T05:30:33.432831Z", + "start_time": "2024-04-02T05:30:33.428819Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "passed\n" + ] + } + ], + "source": [ + "scores = torch.tensor([[0.4118, 0.6938, 0.9693, 0.6178, 0.3304, 0.5479, 0.4440, 0.7041, 0.5573, 0.6959],\n", + " [0.9849, 0.2924, 0.4823, 0.6150, 0.4967, 0.4521, 0.0575, 0.0687, 0.0501, 0.0108],\n", + " [0.0343, 0.1212, 0.0490, 0.0310, 0.7192, 0.8067, 0.8379, 0.7694, 0.6694, 0.7203],\n", + " [0.2235, 0.9502, 0.4655, 0.9314, 0.6533, 0.8914, 0.8988, 0.3955, 0.3546, 0.5752],\n", + " [0,0,0,0,0,0,0,0,0,1]])\n", + "y_true = torch.tensor([5, 3, 6, 4, 9])\n", + "acc_true = 0.4\n", + "assert isclose(get_accuracy(scores, y_true),acc_true) , \"Mismatch detected\"\n", + "print(\"passed\")" + ] + }, + { + "cell_type": "markdown", + "id": "9ce50c78", + "metadata": {}, + "source": [ + "# Submission\n", + "\n", + "Once you are done, please remember to submit your work to Coursemology, by copying the right snippets of code into the corresponding box that says \"Your answer\", and click \"Save\". After you save, you can make changes to your submission.\n", + "\n", + "Once you are satisfied with what you have uploaded, click \"Finalize submission\". **Note that once your submission is finalized, it is considered to be submitted for grading and cannot be changed.** If you need to undo this action, you will have to reach out to your assigned tutor for help. Please do not finalize your submission until you are sure that you want to submit your solutions for grading. \n", + "\n", + "### HAVE FUN AND ENJOY CODING!" + ] + } + ], + "metadata": { + "kernelspec": { + "name": "cs2109s", + "language": "python", + "display_name": "CS2109S" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.9" + }, + "vscode": { + "interpreter": { + "hash": "aee8b7b246df8f9039afb4144a1f6fd8d2ca17a180786b69acc140d282b71a49" + } + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}