From f9804128e68bc632133a0efc118ae48670463633 Mon Sep 17 00:00:00 2001 From: dsbarinov1 Date: Fri, 21 Oct 2022 20:28:20 +0300 Subject: [PATCH 01/19] [Adreno] Add documentation for Adreno deployment Purpose: assist TVM users compile and deploy on Adreno by expanding our documentation and providing sample scripts in TVM. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Information about PR: The present PR consists globally of 3 parts. The first part is an introductory article on compilation and deployment of neural networks on Adreno, covering such topics as: «Build TVM for Android/Adreno», «Advantages of textures» and «Differences in compilation and deployment of models for Adreno devices». The second part is a straightforward example script for compiling and inferring models at different precisions for Adreno devices. The third part is auxiliary files, images, etc. --- docs/conf.py | 1 + docs/how_to/deploy/adreno.rst | 314 ++++++++++++++++++ .../deploy/images/adreno_architecture.png | Bin 0 -> 84159 bytes .../images/android_deployment_pipeline.jpg | Bin 0 -> 101875 bytes docs/how_to/deploy/index.rst | 1 + .../deploy_models/deploy_model_on_adreno.py | 295 ++++++++++++++++ 6 files changed, 611 insertions(+) create mode 100644 docs/how_to/deploy/adreno.rst create mode 100644 docs/how_to/deploy/images/adreno_architecture.png create mode 100644 docs/how_to/deploy/images/android_deployment_pipeline.jpg create mode 100644 gallery/how_to/deploy_models/deploy_model_on_adreno.py diff --git a/docs/conf.py b/docs/conf.py index b4982f14c049..c5f4d7205136 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -89,6 +89,7 @@ def git_describe_version(original_version): extensions = [ "sphinx.ext.autodoc", "sphinx.ext.autosummary", + "sphinx.ext.autosectionlabel", "sphinx.ext.intersphinx", "sphinx.ext.napoleon", "sphinx.ext.mathjax", diff --git a/docs/how_to/deploy/adreno.rst b/docs/how_to/deploy/adreno.rst new file mode 100644 index 000000000000..3208d9f3e29c --- /dev/null +++ b/docs/how_to/deploy/adreno.rst @@ -0,0 +1,314 @@ +Deploy to Adreno GPU +======================================= + +**Authors**: Daniil Barinov, Egor Churaev, Andrey Malyshev + +Introduction +------------ + +Adreno is a series of graphics processing unit (GPU) semiconductor +intellectual property cores developed by Qualcomm and used in many of +their SoCs. + +The Adreno GPU accelerates the rendering of complex geometries to +deliver high-performance graphics and a rich user experience with low +power consumption. + +This guide will demonstrate :ref:`the benefits of using textures with Adreno`, +how to :ref:`build TVM with OpenCL-SDK` (needed by Adreno devices) and TVM RPC +enabled. It will also provide :ref:`example code` to better understand the differences in compiling and deploying models +for Adreno devices. + +Advantages of the Textures +-------------------------- + +One of the Adreno's advantages is the clever handling of textures. At +the moment, TVM is able to benefit from this by having texture support +for Adreno. The graph below shows the Adreno A5x architecture. + +|High-level overview of the Adreno A5x architecture for OpenCL| + +*Fig. 1 High-level overview of the Adreno A5x architecture for OpenCL* + +*source:* `OpenCL Optimization and Best Practices for Qualcomm Adreno GPUs `_ + +Reasons of using textures: + +- Texture processor (TP) has a dedicated L1 cache, which is read-only cache and stores data + fetched from level-2 (L2) cache for texture operations (primary + reason) + +- The handling of image boundaries is built-in. + +- Supports numerous image format and data type combinations with + support for automatic format conversions + +Overall, with textures, it is possible to achieve a significant performance boost +compared to OpenCL buffer based solutions. + +Building TVM for Adreno +----------------------- + +This section gives instructions on how to build the Android part of TVM +with OpenCL-SDK and TVM RPC Server in order to deploy models on Adreno. + +Since the process of building TVM for Adreno is exactly the same as the +process of building TVM for Android, please refer to these instructions: +`TVM RPC +Server `_. + +Alternatively, to build a TVM via docker using OpenCL-Headers and set-up +with Android TVM RPC, refer to this guide: `Deploy the Pretrained Model on Android `_. + +**Prerequisites**: Android NDK, Android Debug Bridge and OpenCL-SDK must +be installed and Android part of TVM must be built: + +- Read documentation about *Android NDK installation* here: https://developer.android.com/ndk +- To get access to adb tools you can see *Android Debug Bridge installation* here: https://developer.android.com/studio/command-line/adb +- For *OpenCL-SDK installation* please refer to official github repository: https://github.com/KhronosGroup/OpenCL-SDK.git + +You can also build the android part of TVM locally. From the root +folder of TVM: + +:: + + mkdir build_android + cd build_android + cmake .. -DUSE_OPENCL=path/to/OpenCL -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DANDROID_NATIVE_API_LEVEL=android-28 -DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=ON -DANDROID_STL=c++_static -DUSE_CPP_RPC=ON + make -jN tvm_runtime tvm_rpc + +where **N** is the number of cores available on your *CPU*. + +At this stage you have built TVM for Adreno. + +Build and deploy model for Adreno +--------------------------------- + +In this section we will focus on target, needed to compile and deploy models for Adreno, demonstrate +the differences in generated kernels with and without textures and, in addition, the +possibility of choosing a different precision for model compilation will +be considered. + +For the complete step-py-step process of compiling and deploying models on +Adreno, including selection of precision, running the inference of the +model, getting the predictions, and measuring the performance please refer to this tutorial: `How To Deploy model on Adreno `_ + +|Android deployment pipeline| + +*Fig.2 Deployment pipeline on Adreno devices* + +The figure above demonstrates a generalized pipeline for deploying and running neural network models on android devices. +As can be seen from the figure, the compiled model has a set_input() and a run() methods, +which *prepare the inputs* for inference and *execute the inference* on the remote device using the Graph Executor runtime module. + +Adreno target +~~~~~~~~~~~~~ + +Normally, when compiling models for Android using OpenCL, the +corresponding target is used + +.. code:: python + + target="opencl" + +Using Adreno, we want to get all the benefits of textures, so we have to +use the following target to generate texture leveraging kernels + +.. code:: python + + target="opencl -device=adreno" + +Let's write a simple model with one convolutional (conv2d) layer and take a look at generated kernels for these +two targets + +.. code:: python + + import tvm + from tvm import relay + import numpy as np + + input_shape=(1, 56, 56, 32) + filter_shape=(3, 3, 32, 64) + filter = np.random.rand(*filter_shape) + + dtype="float32" + input = tvm.relay.var("input", shape=input_shape, dtype=dtype) + weight = tvm.relay.var("weight", shape=filter_shape, dtype=dtype) + D = relay.nn.conv2d(input, weight, padding=(1, 1), data_layout="NHWC", kernel_layout="HWIO", out_dtype=dtype) + + mod = relay.Function([input, weight], D) + params = { + "weight": tvm.nd.array(filter) + } + +Now compile our model with the classic OpenCL target and print its modules: + +.. code:: python + + target="opencl" + + with tvm.transform.PassContext(opt_level=3): + graph, lib, params = relay.build_module.build(mod, target, params=params) + print(lib.imported_modules[0].get_source()) + +Notice that the generated convolution kernel has pointers in +the initialization of the function. The kernels generated with the above target are buffer-based. + +.. code:: c + + __kernel void tvmgen_default_fused_nn_conv2d_kernel0(__global float* restrict p0, __global double* restrict p1, __global float* restrict conv2d_nhwc) { + // body.. + + +Now take a look at “opencl -device=adreno” target: + +.. code:: python + + target="opencl -device=adreno" + + with tvm.transform.PassContext(opt_level=3): + graph, lib, params = relay.build_module.build(mod, target, params=params) + print(lib.imported_modules[0].get_source()) + +The kernels generated this way is actually working with 2d arrays, leveraging textures + +.. code:: c + + __kernel void tvmgen_default_fused_nn_conv2d_kernel0(__write_only image2d_t pad_temp_global_texture, __read_only image2d_t p0) { + // body.. + +*image2d_t* is a built-in OpenCL types that represents two-dimensional image object and provides several additional functions. +When we use *image2d_t* we read *4 elements at one time*, and it helps to utilize hardware in a more efficient way. + +Precisions +~~~~~~~~~~ +The right choice of precision for a specific workload can greatly increase the efficiency of the solution, +shifting the initial balance of precision and speed to the side that is a priority for the problem. + +We can choose from *float16*, *float16_acc32* (Mixed Precision), *float32* (standard). + +**Float16** + +To leverage the GPU hardware capabilities and utilize the benefits of half precision computation and memory management, +we can convert an original model having floating points operation to a model operating with half precision. +Choosing lower precision will positively affect the performance of the model, but it may also have a decrease in the accuracy of the model. +To do the conversion you need to write a simple conversion function and specify the *dtype* value of "float16" before calling the function: + +.. code:: python + + def convert_to_dtype(mod, dtype): + # downcast to float16 + if dtype == "float16": + global conv2d_acc = "float16" + from tvm.ir import IRModule + mod = IRModule.from_expr(mod) + seq = tvm.transform.Sequential( + [ + relay.transform.InferType(), + relay.transform.ToMixedPrecision() + ] + ) + with tvm.transform.PassContext(opt_level=3): + mod = seq(mod) + return mod + + dtype="float16" + mod = convert_to_dtype(mod["main"], dtype) + +We then can compile our model in any convinient way + +.. code:: python + + with tvm.transform.PassContext(opt_level=3): + lib = relay.build( + mod, target_host=target_host, target=target, params=params + ) + +**float16_acc32 (Mixed Precision)** + +ToMixedPrecision pass traverse over the network and split network to clusters of ops dealing with float or float16 data types. +The clusters are defined by three types of operations: +* Operations always be converted into float16 data type +* Operations which can be converted if they follow by converted cluster +* Operations never be converted to the float16 data type +This list is defined in the ToMixedPrecision implementation here +`relay/transform/mixed_precision.py `_ +and can be overridden by user + +In some cases, we want higher precision in accumulation than the input data. +This is supported, for example, for conv2d and dense operations. To override accumulation type you need to register +function with @register_mixed_precision_conversion decorator to modify parameters of ToMixedPrecision conversion + +.. code:: python + + from tvm.relay.op import register_mixed_precision_conversion + + conv2d_acc = "float32" + + # Pick a priority > 10 to overwrite defaults, higher priorities take precedence + @register_mixed_precision_conversion("nn.conv2d", level=11) + def conv2d_mixed_precision_rule(call_node: "relay.Call", mixed_precision_type: str): + global conv2d_acc + return [ + # always do main calculation in mixed_precision_type + relay.transform.mixed_precision.MIXED_PRECISION_ALWAYS, + # the dtype for the accumulator + conv2d_acc, + # the output dtype for the operation (usually fp16) + mixed_precision_type, + ] + + # Same for dense + @register_mixed_precision_conversion("nn.dense", level=11) + def conv2d_mixed_precision_rule(call_node: "relay.Call", mixed_precision_type: str): + global conv2d_acc + return [ + relay.transform.mixed_precision.MIXED_PRECISION_ALWAYS, + conv2d_acc, + mixed_precision_type, + ] + +Now we need to modify the conversion function by adding some logical "forks" and ToMixedPrecision() call, +then create a Relay graph from desired model in any convinient way and obtain **mod** (which is IR representation of the model), +after which we can convert it to the required **dtype** and then assemble our model sequentialy + +.. code:: python + + def convert_to_dtype(mod, dtype): + # downcast to float16 + if dtype == "float16" or dtype == "float16_acc32": + global conv2d_acc + conv2d_acc = "float16" if dtype == "float16" else "float32" + from tvm.ir import IRModule + mod = IRModule.from_expr(mod) + seq = tvm.transform.Sequential( + [ + relay.transform.InferType(), + relay.transform.ToMixedPrecision() + ] + ) + with tvm.transform.PassContext( + config={"relay.ToMixedPrecision.keep_orig_output_dtype": True}, + opt_level=3): + mod = seq(mod) + return mod + + dtype="float16_acc32" + mod = convert_to_dtype(mod["main"], dtype) + dtype = "float32" if dtype == "float32" else "float16" + +The "ToMixedPrecision" method is a pass to convert an FP32 relay graph into an FP16 version (with +FP16 or FP32 accumulation dtypes). Doing this transformation is useful for reducing model size +as it halves the expected size of the weights (FP16_acc16 case). + +From this point onwards, we can compile our model as normal + +.. code:: python + + with tvm.transform.PassContext(opt_level=3): + lib = relay.build( + mod, target_host=target_host, target=target, params=params + ) + +.. |High-level overview of the Adreno A5x architecture for OpenCL| image:: images/adreno_architecture.png +.. |Android deployment pipeline| image:: images/android_deployment_pipeline.jpg diff --git a/docs/how_to/deploy/images/adreno_architecture.png b/docs/how_to/deploy/images/adreno_architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..ccb33067521edb1dfaa36a06e71fffc8d9b22429 GIT binary patch literal 84159 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 FV1jh(D9Hc- literal 0 HcmV?d00001 diff --git a/docs/how_to/deploy/images/android_deployment_pipeline.jpg b/docs/how_to/deploy/images/android_deployment_pipeline.jpg new file mode 100644 index 0000000000000000000000000000000000000000..adcc936f19641865a01683814674a9a11c228497 GIT binary patch literal 101875 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 Lt1LC!-2$RI;tDeEr|ej2tFh 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 literal 0 HcmV?d00001 diff --git a/docs/how_to/deploy/index.rst b/docs/how_to/deploy/index.rst index 74bae0f9234e..ac1e2a127616 100644 --- a/docs/how_to/deploy/index.rst +++ b/docs/how_to/deploy/index.rst @@ -169,6 +169,7 @@ target device without relying on RPC. See the following resources on how to do s cpp_deploy android + adreno integrate hls arm_compute_lib diff --git a/gallery/how_to/deploy_models/deploy_model_on_adreno.py b/gallery/how_to/deploy_models/deploy_model_on_adreno.py new file mode 100644 index 000000000000..16f9f7b56e09 --- /dev/null +++ b/gallery/how_to/deploy_models/deploy_model_on_adreno.py @@ -0,0 +1,295 @@ +""" +Deploy the Pretrained Model on Adreno +======================================= +**Author**: Daniil Barinov + +This article is a step-by-step tutorial to deploy pretrained Pytorch ResNet-18 model on Adreno (on different precisions). + +For us to begin with, PyTorch must be installed. +TorchVision is also required since we will be using it as our model zoo. + +A quick solution is to install it via pip: + +.. code-block:: bash + + pip install torch + pip install torchvision + +Besides that, you should have TVM builded for Android. +See the following instructions on how to build it. + +`Deploy to Adreno GPU `_ + +After the build section there should be two files in *build* directory «libtvm_runtime.so» and «tvm_rpc». +Let's push them to the device and run TVM RPC Server. +""" + + +################################################################# +# TVM RPC Server +# -------------- +# To get the hash of the device use: +# +# .. code-block:: bash +# +# adb devices +# +# Then to upload these two files to the device you should use: +# +# .. code-block:: bash +# +# adb -s push {libtvm_runtime.so,tvm_rpc} /data/local/tmp +# +# At this moment you will have «libtvm_runtime.so» and «tvm_rpc» on path /data/local/tmp on your device. +# Sometimes cmake can’t find «libc++_shared.so». Use: +# +# .. code-block:: bash +# +# find ${ANDROID_NDK_HOME} -name libc++_shared.so +# +# to find it and also push it with adb on the desired device: +# +# .. code-block:: bash +# +# adb -s push libc++_shared.so /data/local/tmp +# +# We are now ready to run the TVM RPC Server. +# Launch rpc_tracker with following line in 1st console: +# +# .. code-block:: bash +# +# python3 -m tvm.exec.rpc_tracker --port 9190 +# +# Then we need to run tvm_rpc server from under the desired device in 2nd console: +# +# .. code-block:: bash +# +# adb -s reverse tcp:9190 tcp:9190 +# adb -s forward tcp:9090 tcp:9090 +# adb -s forward tcp:9091 tcp:9091 +# adb -s forward tcp:9092 tcp:9092 +# adb -s forward tcp:9093 tcp:9093 +# adb -s shell LD_LIBRARY_PATH=/data/local/tmp /data/local/tmp/tvm_rpc server --host=0.0.0.0 --port=9090 --tracker=127.0.0.1:9190 --key=android --port-end=9190 +# +# Before proceeding to compile and infer model, specify TVM_TRACKER_HOST and TVM_TRACKER_PORT +# +# .. code-block:: bash +# +# export TVM_TRACKER_HOST=0.0.0.0 +# export TVM_TRACKER_PORT=9190 +# +# check that the tracker is running and the device is available +# +# .. code-block:: bash +# +# python -m tvm.exec.query_rpc_tracker --port 9190 +# +# For example, if we have 1 Android device, +# the output can be: +# +# .. code-block:: bash +# +# Queue Status +# ---------------------------------- +# key total free pending +# ---------------------------------- +# android 1 1 0 +# ---------------------------------- + +###################################################################### +# Load a test image +# ----------------- +# As an example we would use classical cat image from ImageNet + +from PIL import Image +from tvm.contrib.download import download_testdata +from matplotlib import pyplot as plt +import numpy as np + +img_url = "https://github.com/dmlc/mxnet.js/blob/main/data/cat.png?raw=true" +img_path = download_testdata(img_url, "cat.png", module="data") +img = Image.open(img_path).resize((224, 224)) +plt.imshow(img) +plt.show() + +# Preprocess the image and convert to tensor +from torchvision import transforms + +my_preprocess = transforms.Compose( + [ + transforms.Resize(256), + transforms.CenterCrop(224), + transforms.ToTensor(), + transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]), + ] +) +img = my_preprocess(img) +img = np.expand_dims(img, 0) + +###################################################################### +# Load pretrained Pytorch model +# --------------------------- +# Create a Relay graph from a Pytorch ResNet-18 model +import os +import torch +import torchvision +import tvm +from tvm import te +from tvm import relay, rpc +from tvm.contrib import utils, ndk +from tvm.contrib import graph_executor + +model_name = "resnet18" +model = getattr(torchvision.models, model_name)(pretrained=True) +model = model.eval() + +# We grab the TorchScripted model via tracing +input_shape = [1, 3, 224, 224] +input_data = torch.randn(input_shape) +scripted_model = torch.jit.trace(model, input_data).eval() + +# Input name can be arbitrary +input_name = "input0" +shape_list = [(input_name, img.shape)] +mod, params = relay.frontend.from_pytorch(scripted_model, shape_list) + +###################################################################### +# Precisions +# ---------- +# Since TVM support Mixed Precision, we need to register mixed_precision_conversion: +from tvm.relay.op import register_mixed_precision_conversion + +conv2d_acc = "float32" + +@register_mixed_precision_conversion("nn.conv2d", level=11) +def conv2d_mixed_precision_rule(call_node: "relay.Call", mixed_precision_type: str): + global conv2d_acc + return [ + relay.transform.mixed_precision.MIXED_PRECISION_ALWAYS, + conv2d_acc, + mixed_precision_type, + ] + +@register_mixed_precision_conversion("nn.dense", level=11) +def conv2d_mixed_precision_rule(call_node: "relay.Call", mixed_precision_type: str): + global conv2d_acc + return [ + relay.transform.mixed_precision.MIXED_PRECISION_ALWAYS, + conv2d_acc, + mixed_precision_type, + ] + +###################################################################### +# and also define the conversion function itself +def convert_to_dtype(mod, dtype): + # downcast to float16 + if dtype == "float16" or dtype == "float16_acc32": + global conv2d_acc + conv2d_acc = "float16" if dtype == "float16" else "float32" + from tvm.ir import IRModule + mod = IRModule.from_expr(mod) + seq = tvm.transform.Sequential( + [ + relay.transform.InferType(), + relay.transform.ToMixedPrecision() + ] + ) + with tvm.transform.PassContext(opt_level=3): + mod = seq(mod) + return mod + +###################################################################### +# Let's choose "float16_acc32" for example. +dtype="float16_acc32" +mod = convert_to_dtype(mod["main"], dtype) +dtype = "float32" if dtype == "float32" else "float16" + +print(mod) + +###################################################################### +# As you can see in the IR, the architecture now contains cast operations, which are +# needed to convert to FP16 precision. +# You can also use "float16" or "float32" precisions as other dtype options. + +###################################################################### +# Compile the model with relay +# ---------------------------- +# Specify Adreno target before compiling to generate texture +# leveraging kernels and get all the benefits of textures + +target = tvm.target.Target("opencl -device=adreno", host="llvm -mtriple=arm64-linux-android") + +with tvm.transform.PassContext(opt_level=3): + lib = relay.build( + mod, target=target, params=params + ) + +###################################################################### +# Deploy the Model Remotely by RPC +# -------------------------------- +# Using RPC you can deploy the model from host +# machine to the remote Adreno device + +rpc_tracker_host = os.environ.get("TVM_TRACKER_HOST") +rpc_tracker_port = int(os.environ.get("TVM_TRACKER_PORT")) +key="android" + +tracker = rpc.connect_tracker(rpc_tracker_host, rpc_tracker_port) +remote = tracker.request( + key, priority=0, session_timeout=6000) + +temp = utils.tempdir() +dso_binary = "dev_lib_cl.so" +dso_binary_path = temp.relpath(dso_binary) +lib.export_library(dso_binary_path, ndk.create_shared) +remote_path = "/data/local/tmp/" + dso_binary +remote.upload(dso_binary_path) +rlib = remote.load_module(dso_binary) +ctx = remote.cl(0) +m = graph_executor.GraphModule(rlib["default"](ctx)) + +###################################################################### +# Run inference +# ----------------------- +# We now can set inputs, infer our model and get predictions as output +m.set_input(input_name, tvm.nd.array(img.astype("float32"))) +m.run() +tvm_output = m.get_output(0) + +###################################################################### +# Get predictions and performance statistic +# ----------------------------------------- +# This piece of code displays the top-1 and top-5 predictions, as +# well as provides information about the model's performance +from os.path import join, isfile +from matplotlib import pyplot as plt +from tvm.contrib import download + +# Download ImageNet categories +categ_url = "https://github.com/uwsampl/web-data/raw/main/vta/models/" +categ_fn = "synset.txt" +download.download(join(categ_url, categ_fn), categ_fn) +synset = eval(open(categ_fn).read()) + +top_categories = np.argsort(tvm_output.asnumpy()[0]) +top5 = np.flip(top_categories, axis=0)[:5] + +# Report top-1 classification result +print("Top-1 id: {}, class name: {}".format(top5[1-1], synset[top5[1-1]])) + +# Report top-5 classification results +print("\nTop5 predictions: \n") +print("\t#1:", synset[top5[1-1]]) +print("\t#2:", synset[top5[2-1]]) +print("\t#3:", synset[top5[3-1]]) +print("\t#4:", synset[top5[4-1]]) +print("\t#5:", synset[top5[5-1]]) +print("\t", top5) +ImageNetClassifier = False +for k in top_categories[-5:]: + if "cat" in synset[k]: + ImageNetClassifier = True +assert ImageNetClassifier, "Failed ImageNet classifier validation check" + +print("Evaluate inference time cost...") +print(m.benchmark(ctx, number=1, repeat=10)) \ No newline at end of file From f99a22e4dcaf97d4be0275bbfbdd5440e54f2be6 Mon Sep 17 00:00:00 2001 From: dsbarinov1 Date: Mon, 21 Nov 2022 12:21:23 +0300 Subject: [PATCH 02/19] Add correct links to images + small fixes --- docs/how_to/deploy/adreno.rst | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/docs/how_to/deploy/adreno.rst b/docs/how_to/deploy/adreno.rst index 3208d9f3e29c..cefe4f132a4a 100644 --- a/docs/how_to/deploy/adreno.rst +++ b/docs/how_to/deploy/adreno.rst @@ -15,7 +15,7 @@ deliver high-performance graphics and a rich user experience with low power consumption. This guide will demonstrate :ref:`the benefits of using textures with Adreno`, -how to :ref:`build TVM with OpenCL-SDK` (needed by Adreno devices) and TVM RPC +how to :ref:`build TVM with OpenCL` (needed by Adreno devices) and TVM RPC enabled. It will also provide :ref:`example code` to better understand the differences in compiling and deploying models for Adreno devices. @@ -50,7 +50,7 @@ Building TVM for Adreno ----------------------- This section gives instructions on how to build the Android part of TVM -with OpenCL-SDK and TVM RPC Server in order to deploy models on Adreno. +with OpenCL and TVM RPC Server in order to deploy models on Adreno. Since the process of building TVM for Adreno is exactly the same as the process of building TVM for Android, please refer to these instructions: @@ -60,12 +60,11 @@ Server `_. Alternatively, to build a TVM via docker using OpenCL-Headers and set-up with Android TVM RPC, refer to this guide: `Deploy the Pretrained Model on Android `_. -**Prerequisites**: Android NDK, Android Debug Bridge and OpenCL-SDK must -be installed and Android part of TVM must be built: +**Prerequisites**: Android NDK and Android Debug Bridge must +be installed, the desired device must have OpenCL support and Android part of TVM must be built: - Read documentation about *Android NDK installation* here: https://developer.android.com/ndk - To get access to adb tools you can see *Android Debug Bridge installation* here: https://developer.android.com/studio/command-line/adb -- For *OpenCL-SDK installation* please refer to official github repository: https://github.com/KhronosGroup/OpenCL-SDK.git You can also build the android part of TVM locally. From the root folder of TVM: @@ -74,7 +73,7 @@ folder of TVM: mkdir build_android cd build_android - cmake .. -DUSE_OPENCL=path/to/OpenCL -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DANDROID_NATIVE_API_LEVEL=android-28 -DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=ON -DANDROID_STL=c++_static -DUSE_CPP_RPC=ON + cmake .. -DUSE_OPENCL=ON -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DANDROID_NATIVE_API_LEVEL=android-28 -DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=ON -DANDROID_STL=c++_static -DUSE_CPP_RPC=ON make -jN tvm_runtime tvm_rpc where **N** is the number of cores available on your *CPU*. @@ -237,7 +236,7 @@ and can be overridden by user In some cases, we want higher precision in accumulation than the input data. This is supported, for example, for conv2d and dense operations. To override accumulation type you need to register -function with @register_mixed_precision_conversion decorator to modify parameters of ToMixedPrecision conversion +function with ``@register_mixed_precision_conversion`` decorator to modify parameters of ``ToMixedPrecision`` conversion .. code:: python @@ -297,7 +296,7 @@ after which we can convert it to the required **dtype** and then assemble our mo mod = convert_to_dtype(mod["main"], dtype) dtype = "float32" if dtype == "float32" else "float16" -The "ToMixedPrecision" method is a pass to convert an FP32 relay graph into an FP16 version (with +The ``ToMixedPrecision`` method is a pass to convert an FP32 relay graph into an FP16 version (with FP16 or FP32 accumulation dtypes). Doing this transformation is useful for reducing model size as it halves the expected size of the weights (FP16_acc16 case). @@ -310,5 +309,5 @@ From this point onwards, we can compile our model as normal mod, target_host=target_host, target=target, params=params ) -.. |High-level overview of the Adreno A5x architecture for OpenCL| image:: images/adreno_architecture.png -.. |Android deployment pipeline| image:: images/android_deployment_pipeline.jpg +.. |High-level overview of the Adreno A5x architecture for OpenCL| image:: https://raw.githubusercontent.com/tlc-pack/web-data/main/images/how-to/adreno_architecture.png +.. |Android deployment pipeline| image:: https://raw.githubusercontent.com/tlc-pack/web-data/main/images/how-to/android_deployment_pipeline.jpg \ No newline at end of file From 7700637e7c78caf542ea1f5415e7ceca72e69824 Mon Sep 17 00:00:00 2001 From: dsbarinov1 Date: Mon, 21 Nov 2022 17:42:31 +0300 Subject: [PATCH 03/19] Remove images (.png) --- .../deploy/images/adreno_architecture.png | Bin 84159 -> 0 bytes .../images/android_deployment_pipeline.jpg | Bin 101875 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 docs/how_to/deploy/images/adreno_architecture.png delete mode 100644 docs/how_to/deploy/images/android_deployment_pipeline.jpg diff --git a/docs/how_to/deploy/images/adreno_architecture.png b/docs/how_to/deploy/images/adreno_architecture.png deleted file mode 100644 index ccb33067521edb1dfaa36a06e71fffc8d9b22429..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 84159 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 FV1jh(D9Hc- diff --git a/docs/how_to/deploy/images/android_deployment_pipeline.jpg b/docs/how_to/deploy/images/android_deployment_pipeline.jpg deleted file mode 100644 index adcc936f19641865a01683814674a9a11c228497..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 101875 zcmeFZcR-WPwl5qyC`#`o(vfPRw}?m=5fnm`h=?>Pia>xs6r?u+0YM?sI}vG8gH(|w zARrwQ=`E2KAPHaG_v~}`dH4IBv-i38e&79L4@?O2O!CZHGqcujm3dBooGt*Ejr0ul z02CAefC2djaJmS%sS9;|1OS+r0Hgo_06l;r(iK2Wen;*C;3Zc8fa*O3fQtN=;&v4)G`AoDX6F@si|masL8jc2qs?#P_xjm3SHKwWixZ26Mn*ed z&m88%SkbEwo`y1<;pF1x;T02?ki00Rps1v*qN=8ILsw7Vz|iQrIL#Id1 zF0O7q&wTy-p#gzmFT*1uqoQMyQ(mX0rN7C@%+1R$C@d;2Dg9VoQ(IU6siCpGqqD2K z=S%O`k<+3cyH3L0(K$EC3LINXU(m1pKT1 zAK?Mj>9>FJ_y6G9qBnx!w+a!XeIakPFn5Fz?| zHyC?9yg$DlgO{)&A~k$5l;fuWN-dzV;@gMf4d}>Vx!x8*K1Ivs4DP3AWmNZ(m&X+5 z6S6hLNTLMG@9*nM1JV;(8r}p;y|!LL`@GYX6_bV4f^-Sim>o*| znQsvMN@t*dq{rL*#`qbfs3)rpdA0g|d$fch7i=dSAY=DT-98SB5xHqsYS<39|SKZ)TpNg7HaM}G4NW6%xK6r!I#y!QZ z+6#_N-@=LNTy+U7H*qNKe3J6k^@AP7Sgssm>u#;%Ob5o*0$e1WeWc57t`-_2`JVEh zu0vzK9@5uGD;49P9tfzl4>P9N*%^H3U_D>H{Zs12`Ymbn5J$*N2y-^tLwdnK(yLW$ z?nW2y!A$Hq4xU@w0@t5J({G$aEm8Yd!Yt)d>D5y6bJHz1b&aY*ms37!VakbjEJte8 zd3-h9ehFv|Qe=pKN_r4YSEl}o4(_sKFL-F(jQEJ{%57d^Iz;Zg ztmK9Vs^lFYRp6o7G~baaVBBl}5QXofBzuBRfL58%Dd71`Q@2*kbMWU!S`te&o+b6l zKWk2AQD?IiLoVc;6G7%2o&uuak52)UJ{@4%kqxxm+hRL;LHpMa#~@m7ADjDR?w;&S z_bnzbHG>v*c%c#Ui^-$cli9s;T7ulL73#*L3b9X|^QUy2DEAWR#}$COw`m~ASDkp2 z1#0%T@!0&HeukEK`eYdkapKNv?$lJB z0_qi)pMeqboH*jej%_$0DGY5hD@+#knpa7D&Yh?|U6{^ql?6Tphz^q#Ml~98EZj;a zw2dfDR$1=-t0iQDYTuj!hCT%kkz1JdlTl8;)yoHr39thS` zz%U1niL8VngcN&cT_BFL8hCWb)Iio|+N6)*&41?Bc_iU+$5VjT;vtA+02((UrejFX zh47BY_;gYfG763b8IcutCYfZIF|;z7v_(WWCSge)$xD@IFD1c?#SR3+cm=5yJ0@`H!On{*iypgE1hq z>?6?bHqeJmR~Ydja*_-b0-gUjO0tsu!_-Y=4C@ng%X>({zbE+>ygc+s+!TU~M*PP65-%gGZl|JoXW+GkDL%PnS2; z?vW5Rh#fJrQz_Acy1M2r9w5_1j;ZsaL`g)0Rw& zv(F_{s>8;r^K@{Cwuj0ckeJMY=8JJw8%>JSSIUOj$-*$dyQS5zo6hJs4%PLT#zeaN zHaw7^NMO=SWEoEH&Lo&lxJmEUcbo$1;w?{f@;FYx()HW-*a_Qekr@Y6}(Z zFUI1Y8gFWbbm5(F>5Kl|nzH-wh*r^>3E{}-yy&kpwkh3{TR+b#$o3ern1sAYU;gyi zE&w~mo}NND5gg+;QH#O)YbwP^BCq|B%#8v3Sv?*3bIZHZt84Bu7Wo{e8GuIdu8&WN zC*E&bX>9rp4jdX1MYB2dj0FLr=w?R@d<(dUczIh0%u&8*mGfrqqg&a* z{gKihkD06=ZVa|{GHa2IxtG#iKxTrj7mg0IUBDIX+hn;bqwvKdU3a*5%iZ&6S4?1A ztUr>9?;3}Zvc^n@LP4bc0kUe9Bu*?ONx{JK4p=55L3ZrV3?TNkdtFzhgz3)Ol;f7D z;F&(3S_9DfK)}HZY;1>(Cs~Iwq(`kZ;^48s9e1_wg}=6f&;lKOFX*u4QqRvze_yR& zH`f9RycfGK%+sD0m zo2wJy1|^?oY1qxQi_LV|0snOkNbiEjk|^=Ai_SRb#99_-PdgnCYB#5*=1*P?Uhb5H zUtd>pi!o))?_a$&ycgzNU@YUUw|f( z@waF%o0bo5F-4aDVXBfpBCSMFO@)12O-pQIeT$!Gw9 zh99@;_fB+vFFh(%4`(;CfAajl=IlSh{eP?v7=ce*EQ-+3Db+<=r3G_!`k`<;<*s)W z)AAVBI&sWaj(Et^6YzVpdn$HLHf$D>z1_y8esWpX+Pm75nSxBj0+J#@{Gt=iva3}L zYOe*V-TP!N;5nx0`8b{Bp5y{&nBxMcWOwT^-XC|h4Z;aiW{PbUaQ8c2PQ5(6+%~V^ zNqh5Y_YY`3&ys*eq4SOo zedFY7+Y1QNdm_f%#H`<9Vpo1Fq-U&P7_N|1R11m za($j>5sCXy6`(x1ZVf4u*L-<0Zf^zS7uGM=OvG91{QiZsSLFNAg!bYd=EV0x3lG`0r6WJ5*)!|PzVrWB{n|)x{Cob$dHTtq@=eTbA)$X_NxiSgQi5$)^ zdnI|#2`rdWuA-P~gz{Wz4VNknpna)mV3IMg%5hfiq_Opn~!i`tW9?31~pQ6a<@U?udLqDO&m zq~q3;*XWvrm1%ZxH>fs!%eXvbP}!cReq@hZF$Y;Nt(xf^+jnv~iqYfFyCXzFaIBNJ z=jKAAbj<*7s~X08Q1a8=j$4=F^=i`Qg$LNXl9l}8tvGLb0)AZ`RXAp(j7d;^knaC_ z@!%al|H3gZ_7o5UtdV#T!UpYWx2M4|g41n~ah05NV;-!^R{mdKl?^^jzEV6$;9v}~ z#3bk#-7Qe==*Lts+u zBWU8Q(2&VM^mIqIa$~~;iTO((M_t}U*PUkNPm98zJne%hhDBAO`d=rn)y~~j=EUCn zELQQ|UE%6QeSM15v4}GtG??|Nc}?v0o^F0E6a**CnjH>gEfta%MNZLRx>CL5$1a(h zf~q1<8t(Bt<+0)qRS_@6@~yYQ2@s|=Xu@Z@#{jX9IHOKyz5!GF#XsB_OyLLgTgieA6W zZn_SMK4)+G(IrzuhNe3&Q13bwf#t$c;p_OSA_>vbn!zV=cKMsXh5qYSP0}}e0kZek zM*9FfLAY1R8LRhg>y2#J&r(%?$E0)3!A=TY%$Q4gzOfN?)o9$`gz0&_YpfV8!jj-vvcCt} zpNKdknfv^|tkNqx37{JJ2oi0UxPX0o@U0cgU2EYNsYar<+K*;`q_ypT-m4s1Hg9jls>D?8M3yBd575;jo3*Vi-%WL)bdD}@L(}t2hguRQ|>ic;7 zsdTtw82q|UF-OlrJm=ixo(IQQJXsNnOJ~W@Nu;)D=e?pKX^a1f|gclpyQeDlT&+^C;xThfrY*wJPExF^OzY=T5EjZ?&t2V~>=tFwibrE78vfKEL;R zhY#AO302$+_FLu&wv#n=vJH~RGYt;p9nX_`x|Fs^o&^>%;{1n{EX7wm>T@Pj{9f&- z;t#7g53MUIg?u;$D%$z;4}KvB_@e?W?`%H3B0UvC6Ee~&jBRZxBJdO6dvT)C#IDvC z=+ImhUvbh||#0S?JgBv+k=YP%8?zEoY`6fkr+vd3Tpt!q*!Cu~RXLUTDj0RWR zV=gP`tvo>;dj^kS`6B{&UOGcqZe9pG4Ec!gFq=WhP)@CUKvX5*M%x^%rU{1j& z*YSgM#;(55*1pAAEr+l|m$&u$sXx!gR!0}Aic%KSpN)9})*uW4`86e!Q96!`E1?qD z)U53SB&4n$jbgs# zkBEdY!vt`SJvNE4%~wlS{nGuy9WsxnXGfpUWKw>D_WZJK2w)^VfQ|Yap>0OL+ z4B^~DB0UU*4d2Uj$0sw0w`S8_?)O-<8g^i84o}LeUkJVa;@c}1_-B1BAoQ?@i$n>h zfx6$pQBHQ1FbpD`6@Ns189(tqGMM)FP#L@$mXJD6nub@`$7;z#`8u@3u$m<;6B_bt zJ+iNaoU*5UuTLv8GbVj}C~wL5qZhza{e5o@E!np|l4%$;_3U0^GU*EGYlt}UjRsvV z!3A3sSNXP639Pghyo7u$l6L>r>buJ_Wf#tTU5KQUpppuvI>^OWJ@1#Z;vfio5YWQ*9fTNe7M>f0MPmJ(7`gqj~R>EU?Diuxb!Sd09Ef1;a)-rc3RMIa~^0-zG;5hvR4Ur1G zJesp27hiNMSvq!>^T?931qu%8^3o7jbm?PE?W@*1zr>&PC1f0O)&k@nEYdy|(GpzT zgRzahnC%|PB$gi-zWM6tlJg6GDL}lbc9$)-ryUUm;yMMmK+fSO+D-vycDAW zaL|a$maw~P^Q3ruVFJg@SITlT@hfyxGGp8DdJx&a!2)x}`gbEKp&=`fx)F~pj?HUD8o!z?}j?@B>K`> z(AP_)G`>L2W+>bxF;-SPH-uo2L6mD9T^qP12Tx62)fRsA;Saw&(H|Fa zEEb@=xpQ)9ir|f%E5R_ax*gg)bA@^=UKVb;xt_D+C%?TwslHrFxQ0DT>P7Kt0Fka- z)$3~BlfKJeas*QCx_r-bB|LB#I`KW3lS^Q&ar;?QI%kv_6OZU(3OtHro2vy3?^6z3;XeQPX zBzzyYTRnPfki<;}^px}mJ&MRv0L|G`0AvAl=nGo$u$#PFQu>3Dt$>U7b<0NAy(!rp zlxgP>y6w-!%&M=K>hI6x^Ypt4i0Ae-vrLif&62fwGPNk88c zZVkZstB6dv3nUW4N0xm+-Fkd9ItA?^{%gznMslA<3<;^GZo;B z_tvKLQUdtvC!QvWUf)7LOAz%1IMNK>V!*tZ#a8fKPdH;`p!>NYNN>wmdaZ1nSh4gi z;2CeYgo(6!|K7~Oe1et~PWdIs2^fBy81Cy{A-HZ; z#4-|8R4`}l5oGaUkB`nLn13fx5X@SFA8gNVvrcVW^IBWlI?41cD-Vcz@ur*4Um|#G zD3kr@it|5qd$h!{^9g%=u}vno^-5%{wB;wQ2_+AlkM0RPe7yVWNwzk}DykY3*$l>k zFyj@tle?o3lM&@vV+wD-=5%@ogS-c{#H5slw(e^S&WY~_vCqGQQ8cD1Gni z*YTjb*`1|b^(W8rdd=5@)Ps;FgRu*sL=BIMkTES~>^Kq$v0qbq>Q2dLSotuS{v|jj zX*2#!>6Seg)r+=DK6@OZ+iU79W)8Uk1mH6<9f6jyV(mGh0T<$hs-Li#NF?hR3<>dR zYj{#UXDCBeBMI3Oj8<_`5ipxpmZ)>B9dY7l}-K@^* z9Qai&B2~t?)aG|O;I9#Q%G|rCAIHYpOIP#HSsezGS(Lf44KGg#T8cMndW>h8}N{g z;{rtU4v4sn=(G*~iko5dqfRj02#5Jc!3aMfF3IWDV59L{+iSKaCxZ6=L8Hs_sleBb z{xPk}q)`x8Z3XDFy-WjkFfl*l;Y%Hj54s%9PXnHKS{Yn1I_i}P4rrtN*ve`R?JyzM z>=D&_CN2gbZF>DV`qvI0O%@uJTv!Okw^xZ$8ul(%!x+%SI|ussUbKmPmyOI}X7F(@ zV+i=mNT=95H8$<&p1~Ip4c36Kulz|o?#DZ^a1Rgpu8<2OkA@}2wT68-$`>MS9Se;< zu)VtaX3S7!Ba=wQVsyJ8I-XnCf%vk4w|2g%vIzxBzccmDCSI4iK~*3-D;fZQ`P7&&DZ$AG*=LgEpn! zsJ}8R&@{}@NRtKYx*${a#qdn0Cso~3P1A+L7?d-d7iRHI0Uilqtd!XnNj45Eo-x`u zP^yn!jz17hE}2wtn+!3v z)bJfA7H%W1As0}QpQqTXZ+bX1B*{LEm|(uH@nM=NOI-9qg5LUPVzq*R>EdDM{CR>i zcJO}M5hI&H19wCHy;4JgpW$_h4;8n7RdnQd5nfM=YXH6R>c_oj3+xdmJMix`J^c2T$>AXfI~6%X27JvB?#8|Ch1oYVL!i>pTT# zg*vMIsrR_)T3}#D^iGt$1olx8PWcXg{Ma7lIcn^c8(f7BNY*m28o6;pHmr*Jp%UHA znBzms2}Q(I-vJC~yLv3*%EdBAQK&1Ou1xt&SIM74w?6~gt#$iJ%4bC!qGO(uz=YL{ zln)P4ASg98;sg;gF^}#Ie_4Fc0Y@eu>*9_Odcr?xN+11Fu)-PJg+MZ`f-wDrTWy{4j%pHiK5WI4X zbJimaZvD)hTc*7{V`JCpuls~L>~*rzXG@^YXW`ZwVp^-Z+Z^a)E8YQj#Q=kkUF06! zy7^u&vm#dD!}@Lcn}&yvEYPY?FXg-j57xFp`)=aI!bvH(tBa#DT8h}0@jmyh(CVM8 z9-!OdR+V>_)|KkUsaZ0Kbk9H4E=Zs74jtYJJkmM^tQ_uXHov{{%(+)SoFwSHDZsG; zWYChp`(PwGX8F+a;ThrC6`acvx5VqR7z`_x>_>DiJakyUa)n-Tb)P7cwXZ)%Hpy?2 zeR6-v!(uue`&(~A8x9g(LpD|+U|eL>qZ6(4oGH^FUx`DZdL5B>{z7*b{NFQ0pxk!I zu?3WX%Y1dno0C2FyOH;B?iY{jCq)M$-gP>Yw48KgV!UCWdYntz&QKP&@dKp4w4R@K zS1XJ!CYa)$IcXT<&Ts8EjX9=J`#hJG)z;XmuVd+^Sk>M~+E?V3Cl2g3`&8VUcFHBY z3yX1N56OQcW$b_dXPBhE6AZ{%KUz{QD1nMMUGMFW)FfgZf!=GohOzDkRQU2jhlUTf zz5W6;A;r?tl1{30uk^1=?{?S@*UYoHOia;M(Kmef{yupQI-S=gmFh&$Mp_Z$VO}Nf za7H;Tetho23^Zji3**A|RF$~YRW1cIZ4jvxuXXulDzm=)F>^h5=$vE2!fKyyea?Ot zyV>pFKehY7Ul4UnUH2S6htO5w0~UhvJTRcB6vINRn=f}h)>zC22X|lodENUZGi)M} zXSuZr`K1ZPhKK|4!W?kHh`|vVQTRD%P-AeI>8seXmm;BZo*l1d{e;ht?b_L9%b=*# zHqcXANUtV%(&vl^#BeUH7EKdVM!b(9HZgMV6u{_mJ4#03hdKS7)-eIY?ap64C88;| zugxI6ih-=S(<1?CyK zUW_$6|Kf8I5tO1V`<+iTm(dBgsf&TGj90FPs(Kv8&p}EgZ)L zv)`s<=H_sC6&RDiEmUtRM?bE(cbh%rdO>bh8`+w?#=-tU$2;2&S04NB_gDY;UUTOr zH9!);NHLY0JU90UoGIpa>+Z);{ZUORH_6|-DxZQJ0QyHOHJq~fVaOSRFF7aR(YC4d zXB4M%JLMArM6{Wfxf(zoeXpqGDmfb*IxrW3^Hm{H#x-c8OmmXCuajaq6q z8O7=|te!GHEzMT#)(<3}CuWhPfN}G5&FYw@;;z;*4Ox#;+c+w(5}V7R+nT6$>f$bK z5^GTl+yL*6XtrniaW{mhsR=gybp-T(g$XW@GxP#}IcSv3Md@pP%l#h*YN$@f|EHKB z=h1n@d(_6C{Y*Y!u*JQDk1j3w4#1E^r*2I*4JVEEJ1}a!G|;a)2}CJqfJ=dbq%lEd z+SP9;q^CI5ZIr`mTQ9W-X;~__R)a9gwpncC?(-2Kc_t6w4JaT74GGQv zZ#Mov)s9refx86wI@H?no)f0uHMA=NuKRx+*&-YXM@OIeReeRD`vE=QJGLJWK7bZI zpkbtFWHfwdHvM--zE7@-b#0K~s4f&mkVP`XhZV`$dnX^ssdkNj>^uB~XbvBREC=aw zkp27Ex@K*1e&IwX>TsLvaZO$&d%>A9igWXmBKsub*N1=z`s3ot?q+{XE26{%OAZ7>zR@b8 z7<#>sYXh^MH5ry`PqshvXvMi2x&&I^l9+rTBKJ0UWqqGx2yfb%=@r*3n+HYdc^ro{ zIC%wo_B1PBE-!}fq;Y(+q+9#^C)=2A5MJxw8LzV#**3(yJ_k&3j;i%d)Ej=T;#0it zDVy`~Fg754HKJ7n3y+Y|;99&V(H>}Z3eX$z$gS6jLkVf?TM|s2O60G zXA0rTH0>XWxc%?yLtf%eOw0&s*b^M0y=3}P2FBJ2rZw^YQu4ZEcPRD3N84<<=qf!zvTvM{bnTSd&ii1GKtA6^maXjL8JZNW)o9ri>K zYB!iQ-vsg{91tD{PRdD4qD3ZGL%PX{O2iu>FaNrX;HMM+E}ba(Vxv4RB(E=ZdbbzM z{#cMI?iD?zfTW-R5(pbCW431N_4HP?@B8x1Lx|(3ndT&>_mO>Oo0`(wJ5wp0TMIjr z9cW0DqYwW$3HY6rQ{cw#wc#7^oqC%i+s|sec*oC;Oc6&+ zCboB8s-yZy{A;VZG2igd|4nTEubf4s>e6D#9Y7Kczc2A^=i@}{wuDZ)rGtzeSe=Kd z_|H!&Zuz3;=}Qc)l-EBO&T2~nl#z&8a zMLgxs`yD;*NWBkrJ8oK_izi)x8DO(|;$a@H9z|2@cTx(c+v3V)zj?@QZW?=fH9}WS zuV22n9{A%Ojlu1BL!0^KpcZzsy8%LfvcdjNZ<-A-f|*;IR|Qq?mR;nbvAQ3&scWbU z2&CIoFEdtdJIh3W?~7A2Ry?l+|J1xk!V~dq!wVmrk=qp<0HG&+;qoYg>EkCCI*&Xs zV+s|Xiicw|H_UDvlx457GG-*z`nubbS+~0nM@@jPq<)fG zI@+|234kA5>rYQV)-9c__Eq+lNb*6PJWjO7Kv+qi54RC#VP*@vogr*E&sxVbaKE$B zT({$bFZ)6~zz2_58_SG1EC(bG5hbGtg}dqGxTy5|59H1Cw}(%ueuAb8P3EgDTMEK< z-Hs!|AJ7$l8mqAALBA~<+NdFZ>IKn1Q$a;QxS&q9Ys3N;Qfk-u>!Db5(az^Uvh8C7 z6#rB1&e8^}cV-JUV=GgOZ4FD;hV?ZE>fg0KzHDTm_l)O0cUS`GO@#-av4^8sOq*&v zMC^^D)cc1?uk?bis7*Y<)-Ni*B(b`fuafu-B^p{%E4}v5=8CqU8lD=PJdr%x(69jD z&_4q}7n)b?@yOk*;>yzBMs{L}mOU6>WQ?uR2#kj2Af`GWJ|$nS!{8FlS77VI2l~oz zWJryfSDeMKw1+5t+cT}h1C3)lkJB?_4-DljKf|iChE~+RXxVGo`D8bPzbRP4Hjm-^ za0UV*mJBXdnCK zL0n2n9t(V~H55=G-i+}auu{Rn+r;Vsv5#!azYd-2f+i-uoAvh)U%Vull5s`G?nI)7 zG^XOLUczo$;0=4J?>4^rwaIJGuvHunMgl57Qfi-3!bte}bX{%J;=*mW&4nfd2g<`p8s@x8A)0#MgSWS9# z5j}dUvv*nT3wH#-qiy3I4x($Oe-(H@%XS3fA~_F*P-Bq^inAO$FyH*HMUNXdztkno z%Drd2cF|hnyH%TLvJxha%$#$Mj<{|(XJJav0-w7F^(^<>JG}i@RO%S7AvW8YJ5xIz z&nAs3?r*XCT>775??KZ=vGdsE;eW^-(JIW764eP6O{dK@!)D#nYq=z_k3pTVU z>PBnyvy%2X#&fcgS+YI`zq?*;*mmUq&>6`wM$pEtbi$dYt$WESTpd_^ooiMnt{0Z+ z9e$0^N+DXD*ds#4-4!gM%ij?NoXfaPpo|>qch=mD~&ju%UdY$lAo&xsL z##;(s`Z|K5NRZ!>pFc;J9Y5NiBtm`B@61_##;Ueng>&MwNvXuzTx7HYg5IRqwxfI_ zLfgq*H0EQ!kdA0Lxa3T!At=(EMo{%z$W>Ra@q;-^Y$XCM?H>!Po>`y2&(ixTQAT2N z>CpmJ(~CiMa4G)k!cG{016|?Xqf{b$809-JE7sEJAo^;$JI8Wr{>9QYZZ1jHM-Qy( zXf-WA`e^OYbv$!q-*6+l8#+LX3^*`B2sM>`1Bguy4jUv5?82WM%uD-ElE&({0}v8# zm!2Kf`Bh4{2?Ftbl8VX-e)K$s-Uo7N%PF)6F<8SiV{D$g5A_1k*%Dg&4z{C7E{YR7HZF8FF!iR9lN>v6TluZJ800u zqd71i3bO#dT^}FU7L+Nm0Ir@?*byuVH-PV@<3VCgTK6oQ~@u*!b zTRePmK8|-V$A_*Her}D#Q=K6DZNRxC%P>FPn~z5$N-6H)_DrCoz^@hmAL0XawR?2ykc6RRm`5(mXQcM%F@a%G;3{N< zgSlXK{KI20XA!wVV71BfqUZka_S=v;hfIQTLwV^LB|a(#E!2HMnCFUTJReHkl1?IG{6toqq%ifdQ-{3n+Qks=LCjI=a| zL#WDyecIM^WD2lNPyq|+1hU!1Mk|77HXbWVTgyr8I#;2xrni*dtIFMXjCR}%&!FQj zjT>T9{^D@!e1+iKJkJ=(3Z~>gL%F}(Bw>JeKSIXs+4_$z*-$@6qL{FxOHR={!|c+7$%Cm-7)3V#mbtpdsN#5~a9Zy~C^_Q`d(q4xx8 zd`d; z6Wg7ZM>%BtF%q~xNDW!Lm*wor5>@k7GX420y*%t~X+2bIl_LMTk!hLp(w)?wKgbqN z^xvW3za7s15AW&Tle+3LK`XJ`?N7%93~>foHe!_sAfNlVC!i536N5Ev>E$n!uz zY!oIdfu_wxeMQ}HKgNWMFQqw5lMG1uYXR=9f`UU04FqREq;zq#UUbk?z~>Obm|oBHZsk!|q|nns3W4$o z+qTa$hA-t91bnhDLoCMc%n;ck;j`efGm@2F-5O9GI}sAh6TWxnuHfQ`86;YZ$}7xy zq5e5!fz4E+Cy$u=B42ZRR~Z4Erp^0sL^V1aeB#WdwBRzAGxz10LT^1a2}%rY_QmaVlBk;Sv88MFe8V1!vU1Y1 zykD2smqerUDaQ8so>%Y+#qC_=Wi48g3AjMDR{HR1kAl05oB;pBEAK)zqmYRt76Kdx zifO$_J}Xaf@?Q)NTzqDz_{Nv%ti9$yY5ARk=DKbpXK zco0^^01sXuit~_!&h{CU3%W;D$TYwC`C9GE&5zvQLVr;;WN4q!zVMB1)tBR!e?*8X zbfujnftv_xRr|5_$_@|GhOqSnKZIEfZ!flfY`BLrrH+*`zqnobvW&^w{ip3v>^z@_PY`BfCp`0fta3Pv zB`6@@pz-w~1HAN}mAGeD^$o_`;f_n)55bHb5>zUiAV>HSIrldbcyNXs>eq1t96umi z`Aiua{+NxURt4qu<=QA~YkbJOwKd60q0h%(vq>*tx<=+g!qsHg{c+f}YU~@_UA33) zU%L3$FZeQ`nrF<6Y zFT$4nF;-j}Os{$OrqHdzc+$?ISD2za&}vF-?^q?_ZiJpxf{pG?R#jk-LdMt&l7=RD zIXEqEOeu&51kOUW{G2wRO7DaU=a3eCh@}Z9mf- zuK_L0AnfjlTCUh<@-Il2aJ4HDTj|}cloPTwvc@;9v$h^(+m^XB_XT((mj=$YL1P)q zyxSI*WqmMoTcAa+D0@M?V=3OT{V=mWp<=smL{4^lhjqNGoYL@Febcw*9FZrrxeN_a z+*G1~;09focF>6-%n*y{K*mmJDGooY#(=_^-0ZA1R!o{Bj#ZXld^fmJY;>8iAc1~k zs!GGhu5!ODZ@%{eDgL_wkB2gnd@~>-i?P}iZt31%CcNwFs7ZCwG z5580EZljdqDn=@UdpWtE&G(WS$$ygf<+GXfo98?kuK~9VFPzV<+1OP_S0antP_!gv zeTTehS9u2P$o^45y_&|zt&}e* zdes!7a9ExQXNQnbl<;${pJev~0Er+elMfZ%#b%c+Kp3s2J7iIDimIEQ_Sd>F31o}wIpGtggIqhdd}49W3bDw6H8>qUupFR%_;}^f zCZVCQUiB)|!reW1((*GiUC)raf2PoWw>c2_P5~*spo0sur+~HbDU_b{E@EMxkZpJh zsG{9D1>C9|JHBi+pc8=oDPZ+C?#cu`Mjk18 z#lQ~$EvJBQ=NOrip3NW8*_;9jB>T^}oB3``(*f$j5 zo*4wqCF!3iZjrdK{^1%dg_Vhm=Y%KptL;M8$Hk&93rxH8DVL~9jH4`i2|^w|j-}II zLCX_syL`{`noxzmT`uw&KSNmXDGLyRXs-6gey-{cgwnjY^qZhWh4E^)f?qs1rrfaG3PP zRc(HjJ!GE`e-YbDgt++I*j-4d>&*~^(6pFBPjc9@tU6?cA8vusoCYY-v_yK_>y z?_jM)d^uGaUgGMvSth$w^DXCb_&H$?>IJsAY-oj>6w|X`$QN_8W34;{A#CDv#mV=G z+usycWhIg)Gjd#o?O5a1cBm7DuqO9k(aHAN>Na35gyxcm_Q;Z1UQlfUs>?uY`%8~w-j>wHl^uV|P> z8`C@yntJQ~!Xm;TY;k9E0|Q|oho>l>5%msDlTE`bN(63piFQ5WN=vzhcr?qJ)?skg zi=msG-gKfC132pI0#eI0JK~(XLL|nEB1tR=cDy9i(kjpI#OBK(7pu{t(PM_Cex_a7KC zI=LPLz;Dkl>i57Y-Toi;-ZQMJwOboSL9qeSn-nRcAfj|>5s@wgM0$w`2pDP70tA8} zMWhG_NS6*$A~p2T5fG4$^n@lop#})?o33~7>s#+~?R~y?pZA;}=Q=+k6R$AmeA;-% zxW_&2ha~;2kp*H$2Q%%INu4P|$;6r!@5j0poZ3g;I+ta)sRP>L(c?4XE4<=r(Tk(O zkV9YjqSv3-{UjSSHQ7(19SJA#9{T;-I9>+n*ALbU6;GxLbqq}QW=x3+ z51QXryAVv_^zl5W*yE@Z*%UVlf9T zYiKH1Y_rFZ#)SIVwT7z3p}E8faQT-fVK!;fJ(nZmtk!Q+>X*Rp5;`;BijcQx>V{v+}SP{2OHt`#Ajhkqp++bN~4V&z&9z$|z@iLTiLm8-%Tqov2!tHZ49&ISKtd-N`GRrZS90 zsXf%VTyWv3!*QbXxel++Un@NgU4d>*b!z3J`blOF=7RJ)T}z)g73NrGXnrYwh|Hx->V&}ozX_6rl@pL^Ik z9Y0nbGN_C6wxn2wj4E8kZ3bbdnYLQfu6+*C8{8V|sjjM4=rGl&q8v9cpk6X$}~3davC<-;nB!bW*cL9#p9ipB`;sw1C4Iw!nx}zX?;`*`E2_4AGL`y=dd)Bh~fP?sW5m0TT_{_mJdfzEYeCKiSjCD)uSHmazmu7Va z{;}o3kMW&NGM#TF5T^*~+DYd&;9Q@;J|1P|=lLRi?iN3Oz-YuoBN)SyKXJa#ndY1R z&TOX$=b8e;sN5M$s^oRfvG$|veZvUB(rBK5K4{LJ%S~rz=>m*yPezAtvrR301-;T6 zAgP!$03~#Bzc#wR`>-I+0u+>O@JXl?;>f)UIS@u%CP@7x6No{qD*{VysJPNE+(2yV zM2!C@nY%x*XA9*2*|TKaQQe69Np`Im4<hN9O#p}OG*JnQo+UoPyZ04d+@8>m zu6sCiPhR)?FNbaRJffY`5X^$vL>}SNGn?yqVIEU#W!^OFHh5D2TO_TStWM!b^q}Iz?$|a?@OdISpNe$91$;-b^a*Ooovb^;JAXb(< z72AR+=^8z~J-ntkRLFR}F~Xc)qaK4RUxY?L=cQhWHcH}ZVTD>zq^A~FdLA;DCV)R2 zCT_wLV#hs7vRXiN^)&OyJ92jlTiso$A5;~8D9PZ>kD0kwmJ6EDh1?rUh0S85TKhwj z`SH)*QjIJ~ZzJh%TijPw;`pj;W9EIfGauPoo_+zx^0w#F^j+VzO+?lq`={MSe4!T- zpgIX%%B-)N$K(O2Pl_c786iW?FfR|tQ5Z9yQsq<5zhC!8o-&pG80DSbGD|yVFgn}Z zcw=A_E{qM$6!Q(hWfkFXv}!`-tUF~+J8Qgatqmi-RhW}&6?t1Ay`$)xzuE|OKlFP4 zV+AIQT+3a~8Bk`#2VeakMp~3M$AItL1t$O$y(h?vKiQ5JCXv2ZjX5hh;e^TlAH~H9B$hM39lt6k?HKe$h zw>qkWd1qxvwv_6Es=dTFH}U|@`^=Q35_>`LLrkw!OTvucpd(y~qkML}K4#^a$7$u- zJ7srX)161~XH#5Ct=WJm{z7GG{sWcG{CIHx7bKRZzz2Uh3RD7%s1v{#@YyLC(tLEc zrc%g-W6I!NX7lxkwr!1b5oCN@>~9?M8REZe7lI~+I!#6sv8=?qIK-p+Mx5-FGFIAV zxR^V#8~UPL+3CjgK5D!3gCtM*}kc36E*f|p&%)#Jo)Apmqy`_ZX@#GDr9V5j{PTMu# z6KNA@D#ES(&xxOcnx166$Q~pDgLYxL6{R3N*2n{p$m~~Yos)#_aKyC5bV*EYI~wWB zwOfQ6ll0H#;tn?0v#NsTlhL8I!kvM8=^>Yk`^xir_&k*z7T@FsKdf|{Wj-1}9q@*FDEfeu)xf3_eUyn4N=o`%o*vtGTkeyE&b z83DDQKI+!1*?z!DN$~N-&R&8mB$@j9=m+mlOm-!Gr$FgWns$3mNz`7c?sko1omcR| zu8B;DVT)0%9F+P50NOlvL{M#Kqb@9(?)hZYbER};M_15R9`(CNMgwgQ(G^Y*_?P>p~E8kT5bINX$M*FfP2XNAOA@dBX1*d(@+A% zLi*?5u7hxKzHi`DUJxfz{|ULL9$GVj~UOm-_YhG!@&vy8+uJRMVA}?@ffNIlL z=<6%Am}$sQGPT7#_ys;9Ex}v8OMzn$u^S^eLrB2XZLz|o@sPmX8s4xSvq7gKZm%~+ z@uvBle77Epow?M?cSHIIjRv0Ub&|-2{M-q!U0=fMM+Hu{)^g+&zdm3xoOqp3OjX3g zy>cb~4XbMf-NjR*{t7yy^_o7OILKUN!<@*a@$a*!ww@0~yW=_WLQ2j8BbLKobutx$WEsc$>B2Ah zIx*T9vx8QV3FZ!&y!I1WjB3PIJ%33f%F@&8%vg{}b`4X^_xB=ahF`{8)|kCVBuMi* znY|z&=P1MATF3k=AhN6xhZlQwR03*c@lR}^H?oK7WBFb@=F4S;XJ!Xc1;#WeyUv^= zaNzY7!~mosA#4LKjF}c{^+nP<$E< zUU{SlWq_(p?dfq`xBTwoEB_TC{+9KN`eRAMQ)Q=kDTocnlCaYq2m7yqI^I;K6L$~= zjOS>-we{8AfQ!?1?Oug^d@iBZr@2*GUS22vj)qbx=``YyL4Hgt2_kmDLJ96stdF68 z6Z`PJy2MKOzA%G|sPB~%)f!m2J~#wIz2|Fte~|M;P9hg9UzPg&_I7a!e^$WlQwu>C zZlB+!%z+^`%yXZ|H!|Xo?NmG?TM!H~^hM=bwIzFAtX8O;R3XdegGULx12o@`9$COm zhWDIkpZjs8-%oEf^fs?(Wb-=H9EUV#O+-r0c~Qji_8e9nFZs)%=JGnYxQO=$5g5>z zJLsGR0klr#<#O`I)m`}H^(%_B2P@oy#wr^NhcC`GDUDXsA3uPvZv!@qz2>k%0gkZ@s3D44HrO!!xeFT_dIeq zL5J9+*}G@K89gm3KHsb3y0|Eq8|PTH3^5a@0or zAkRBSf0ILmE&Ye#2i7|t8(kM`{beI=Vc-{!jZ;Bt$!wJEzNfYHGf6ZX4mUExdzo!^ z9IPR?Pwg;Xg06)fa%q$~vHOj3O_-Qbzis#(T^)sV0Lw7A1i=Ojw6N{R) zd|mFH@k(#2i#n%dpWBY5eJt- zCm2^dli?jD%D~FI$PzlO$wl>zYZdxYWZ}W@>0{2G+R}1-`HZWn005nM=>VESe>VV^ z{B04_B~Tz@+e?7d#*RLbnKb;-?&tbD)X%!XnPsqjw_x>8)WxU$H^-tlOrWU}5az~!L1fNjoPml!D+xojXF+kGb+^>}Uzw!}` zET9_cNcMEH5{PxZDS8upGG=qt6el;bdZYdOlzocodQXv^A%YSvk2w)@Xw1M&8ttBF zf1T5E@TKXIj*}_yBA4caH!VDCAT>JT4O`OB5eoGnw4!GAY{ch`5?Z33nhO@!776dO%#ZIL zZfql#t)5q8J<@jZZj2)CAFul=E5j0k(RMT;NlO`=uZsFXK@#7k**s9RWr7+d%W2nMll6HQ6$n`?m#s zMVd$~1C^%cPT&gb#J;d)ETmn~804@CC z{o)(=X?yVq(s3b}PEoInmEW$D^0?k3&niBbN8;)h%H1!??|Em@fHFhh<;+hI$oPs! z%qm;zSC9D5w^sNQN2Lc;J)Uu&+SGzE{v_L=&v@>to=3bfuq6j@h%%DCoO2r=_lP0A zPzFj?h^-q&PhB48HxC!`vy>EnXB*78OS}$fkUt@G71$?@0jPM00@Jqzb)s_is@QWw z6|tHP@!2vhhDJxR&)VB6pQxp1J2eViJ`%0)v%T|ZMv>r(<+WUxliMTOam{=UIjj%Y z4PMTW1`of>IIh=lN?YNCAo1~a0}QJ7nu&TIVoOsfK1Su>nZ%(g6D&61sNvx)=GphL zhR1?O?z5Yy#1U=U+{5HLAY=q>ANMr^wHnJq|LNfUt3S!hPTm1nPb2)vPqNR3K|jgT zvLKoIhm(I7-W`p-1}zu@nUxE~sKK)S1DH2Az@PrnH<$T~K>fc}rT$H^oXb&XphP-7 z>=-kO%G9E8!lb^KnG$XlrL6Q(-&j0fX)5Z6bD$(U;A#AVOv;MJM%%mztG)a<@?&Ih z2ElNiCM=%w=CB+;p0;?em>Qz61s;pTRwYT;pJFofm=jFUX;Zza1Qo=*moi)C%=_-V zWOIhbQp&M&$jvaE(6b*(xQaV4R^Y@V!*@5h9?@nuKG@zs+s(zAD*K65e z&xKnUWD@L{7~z3 z=Z>x*0pI#=C7Ssqk%h!(!#h5fN$BiIV8L3DPbpWE-0Wj zvxKSYKwfPL@Kv8PF!WatB+3v9>^*&PTWw6WCk=r`t__7-v~`z0p=z#tqx`6AA@J#! zzR2laFr)gMuW3iELrDWw%Y=Mv&zpEp?wi(DTXgqIb~-shI0&H8OQHjFLYa;@6PB_; zb~O&shf%48>3V@-Wb4;UE;b<;{5Xl=AxHQ0kfW25Ix8EISn<*R8s1nthay<>gd*~G z!oI)HPclwWAn^uhxQ!m4KCwD02P7jI}TL4At z)6w12M72@4EgsULz*1>s+NwZv%n|M?m@aCrt@d>cik23llM_@CWtSV>GpetNIogJ< z`0v;{e7)BxP3Cv+)Gnh%mBtrhk7)a`_h5dNr80w_^dA@n6G8qb*;TI4*?kFfAfqo_ z?4t!kHE$iBBLcPUrJsO|zPbZ+!cNsdj1cul%%<4QxC~;JW6Xyu6P%DRA@!QDzGHpV z_FU4-7QQ%R^NVo?PwL*=UeJ~yw}? z26K=xH{n`%*H#d%!>!_5R{_TAo(HO`wyfF)RXwPIq3W%8zIdzugb3!)b@DZ&gViTXAcdig_wxq%e6xSvTRv8R$ zV7RWp^g7e7RN|dpyI6SvNPk2pQ5|iK zxUF2FAXoXq%6Toaa){vC$;p6s3Kk~XV0txVr`cAe;)UX-K6SAQc3vWPejJ&a&)D}V z3@>tqG%!m+;(_8}kmfWY)QE)oz%=)RM57|0_^bB%oa<;MiJRz5(8HCi_Vr*XLq85I zp;cneL|eaHeSMa8sC&L%$_Qm<-7os$dcc>0fANXBYW@jGQz%q$hm zvqk0s8)cANj|11kN(yDD?FGdP)(aaCPN{$eBEb^r*|7PRq=TTR_{Qi0Ro9GOa&!J~ zQw%Ns@$k#+Myctee?OE9k>*C;V$h1}voJz!MkeX4|IiiSlz0`pMOaaOcWaB{q%M4}$cQ zMR_7Go*I)IZd4!~-~urog=a(NXXz$an8$8k{D6(-e>or~diJYbD|=js8UEg;_X%S+ z%@vpqL6$_1FHi+AnxACjhzio!&WmHNxMi<8mpV>JZ@BHGL_3UfehYvs!`Ld0xcuw2 zoC;@6?~REnvuOlb8ax(Bq*Wo8iL6I69DR$Vl&yAa??haSm~AmQZMx#P^}MJvZ8ky_7w#(Ye*R zS;5S1)0fgD)^yZSqOQO4VI8B&@V%D|zCN*2BOL;PsY`Av18&$Yfs82SUs}Jv(9u(W z^Eu1aj6ReD4hwrqHA_l$DBOLDzDoiUaa{}P$Cn*}+JiL*NET!G0q9{DV)_Y?l2Kp% zr~D3l;MfMyRS4GuHv2PMB!B3N_iqmVx28kpfAZgRa(|M2kr^Y^2#^8tXxPVK2AY$P{4q!WEtW-N})w2 zSDtCw8)#+kJ5%d7d?4R2+w($%l4xLDZEVqa3dzAA-dp_cTGtFp8z>I!d75HZxGgsz zh1N5-D($RR;PWK#F5+sXhG`*4xN(aB;#~<7TI}%!&(Hc3!l2;LqeqAy*@&cPMTO(% zAG6zsa?KcZ?QNM`L?5dXZ`ULr%eH%#!Gs>`#+Q!`9m{`~%`W5OQT$;QUAPyX_2#zp zB3$C}tV8)AcPpkeS$&^G{uM3fd_zjqF77C5S1qP6CFOTekq+aF5M0V;yNN<(M z@jjozNWU2jG0z;iJtK!V!Y!qoxb;(QzWK7wKg@sjDd2@#aqjh`;5{JzwMcze4-<5a z!_MbXYE6@&>p0vA?}?dh{Z2R3cJx*EIX&W2>1&Dh^|oEw$@`po>E_jY5{oD< z+D1{r>>UCZP|7E(<(Cu^3i5(I#(&r)urFE;dkrFM_lsxG0l2s7D_(b8Nz|G5<%r_+ zvzm!-77}gWRg}1%EJ;inE*$p1ja!C2vEMG)9yys5X{%W2#2D@%7D=AK!G8f0w~D=( zka#h@di+clyOZ80X-Qp>D^<9q!#7{us0JU3%Zktorlu;N+b>@T^%wjU>3^!}bWSGv z=2zDj+PC0@q)2ctNz-QgT8^F?Exv{A|~{Q16)}gdS@8AtAUn9 zSc48l(pf<3j2Ogn{@9N=gb6N$7zPwbVIa{*2F9cb^C%V z_Niga3V{qq*H23ZUz1H_h@E<6p@h{ej3bQA^_)p;FFLaLyscb)==f!{PE+K*p#a5h z7xF2R2`@rSa3TjRtpLF2`&NA2R+|~?7qx9$e$y`9<^J-wr|(+nIocW0%`U`*QCk*$ znuq$ge%ra9DR3^s^~W9UOn=_nZKf{D0%PRjOZqM$r$W%;tJhC`3JpA$;TOoT`p<9% z&Huok`Mbe`ZFTr0zjcsmDRvTiV2xJ@4c86ZRH?hy?J`W;%&|6J*iMoJtesd3WM9G# za%2>@!N4H_3gSxt0o;x9_Ma(_|IPKO5S$YU%m?&MAV6o%Gkt!-g6u>51&Fbd?;jF{ z92fxx`jPjmKO1|9xZiik_VZbWpJeN&0H5+B+mS`1-ANgGVWbhr=#HNT62|w$Z!0Jd zAr?3Qy1p5(At*9>6xgG;sVjjzr#kQ_VRevpJwoE4(i8xR;w;>e zw*VAXn6AI)x!&~0k(+>~N_~0Czk&h%ci&w{|8>>*d62#!wjm0)5#vI@Hqx()91tW` zVrUK-fh<`Ins>LT{AA`I6(VBQzi#~}<&l5mLj3dOW5mt?Jc*c%Im9sqKyhHq`Q?kh zK`hk4xJb>w#u{X=B=b3)eisodp9{cvi~j_`{YgIIUuMbw%@jQa6uz<}7FaPN$7~fM zCpR_r!|;d*^!6oO!byY)Gbx_mN10L!j8R%X0w#pw*FU%8zq|hb5`h@-y(~2GLnL*J znq3q?FbiE9E$s4>L39a?DFDomBV7*fM6Tlv8hq!Dsy59ZG_keEy2@U*|EKoh&oa4x zcYW%+-*0o6xbb&D%?Y%HYg?!l(0B1uT`{&ju9v?IuyJ;6oq?f0^(WPe|F>qg_fk&2 z$%>5oXd%2^xCrZ&^CTx!ZMgjMr}NU}A6exK7b8^XnOiw*v5-KbgB4a*WuRER*wQw2 zwrATyrE)xm7c(+R`8+zlxk)^6G9c#$;CKN%B42xDS3vvmS>SvW%>*HSN< zx9@HM%sIqjbX^>N(S|<012Cz-VqyO}lkjg$C8r1;MN&+o1ET1{ z`@rOAL)szVldcmD30_!{^B z0xzIBO*;$@bmt$QA6zuDjgfF+@nH8ie8SivTfh_7w>o^SK)Jd>5hTqmFc~YNdS&176qpoItG%&o6dQGcxSN2n7!` zlEDyqX(DuR%XhGYws0x>f+&ag|Vonbnk7F=Pe3=Udz+)<2oi`Za ztNJi9BU69M6TCL?H5=S4DM(A;CmEUWPclN--cPcT0>oX^=d5Yc83e%;eI6(maUTHT zY#e@)bzcANzD0d$g)3@g2Yk+gY(W3_3>t_PRgWq~mT4?i z`*A|RCO=I80|jg)Z+?;m3OSMP0$NwIuYuTD=0`d~6aZo8TnacXTo3Tdnl2(pJW&J#2o=!g$AiGh zC4koynoW2H-XKvrQqo_Mb);IY4>#w@dBVB zhVlaj@7r1?Vy=4|TV>pF^#?ZFN;IW|ytCo23<|HEbAzNB7Q@6DvT1JK9 zWd?~a+UPbmGmmOm10VDBs6n9I?%=slhaWR+zK!`PxDdC7z5GVb9McrV_ZgW$on>=_ zhkaa+pmf>bG3$A5-i*@?NsZplE{>wpSKRHTHRFDnyg$Opzd=}`zp>Zv%ao?KA^s?S zq}Is{Tb47&7PB{zSb?-JmbE?tq#2YO=ihU=fl<}NDoA%al;g*hr;}we=lRs4v*QAI z!eg|_IG3uE(ZKYkayy)u_(|4Yt6b4D!jDF&aOw0>z2sydaQWgbCTQ6FzCnctXP)|q zT=WW0@=K>(y5kmVxFN;;q$c)yk;W%{(t#-?F#TMSr72W|!p`|Y1Ect)4LOc>EJsr~ zC2q2GLrE~qf>^mN*GghqZizbL5C;=kCJ}&=3&s%+ESij=UlTCm*91iV8h$ViMS8sf zEX^~cv%i*U0SQ>I-%_&>bG5((3oQnfrSCAGBx=?XX?`ua8eA4BMC+FU`L(Qo*^+(% z^urA>1y;XIfzSvLIqMMtqmdyCVAjp133^m2m}bd!*;+yFGQ}o z99YP{wY>7`{q|j6`NHlB(|#uSP5ek+OF!r8OK7b{RSYPkvd}*hYvAt~-+{}&Fm^6o zMvZJo=L)eYY^m*ut(L1}BwWSVu13!jr8JqJ8HSbnJ16p&-$G9FTWKUD1(?QvA5i{>SE8~%#T+C724{U_x0(Laa#=&(Gz*mg)Y;P0RQt1tL3 z|Go{0OyAbn>(4=x-m6+v{w4ew{_>M-)(#N~N|JF#bcB2&_L~5S-=4bxe{R!%Ugwkt zI6RQG$5(y{kF&ZgQW>J-v3#~R>JnU<;EP9LdK+_G^QSFV*s|LL$IY~!@kdS=M5=|q zDV>nAv3Z$&mdkBEc9TSjqYP+dv%5opG?_?Lh2(T}fO)>37E)_Ez3E-|j_hVz3|SYp zQBMlHuE3u3{&A{No%l#h)zQpBWBlS_`o~2%a)U|)_HoOM*#J?2#IgpZ;^CCtTIblP38gKC@nZ7^KMU z0jR;CTGK2u8HhElcJ`r`R26al=@oAXl?_>=@KlLrI-lLHeSWw zYtPc`fo(FfgwtgzKRM6Q?hKClOd6D{$mtr>N5sb;_nVTg)(aDD54d>jVgc^`nGyJ1 zp4BSt_6Pf~!L&AW{`ke0vf*Q(Ji<`(L{)wgXF|!i#dFb`2;q#{F!k?acXioHpQ=!+ z$Qn*1Nd{%YJlfs*X;$`+Y?5MH*o|UX0;Tv~-#ZKT6S~le>2IADd87q>i0eqO&sS+5 zU1Gn^n`mAhPbYYmVqsyq;i2?V(5mYrk7F4mF&X>?gk^6fAwboKVr?=Vu^5H`Fyl;f zW=@wSZ9}xf>mZlv8}CZit!+8P3@hw;0da25V$2d-PIyj$nMu0BH9?Kf)QNfl=cMJ> zj%F=z=|T06-*sYr*?NpjUv^yeaso=2tE3p|gsh}lJI(Z`d6frBD-yaxd zGY#VFn~>yw#A~Ui8EIxeOc=?kPFj7}P>nT=k$k;mPLZ+i$BY;b z5xRG7H;M*Y#g@9;9A-K(tt?l>z~qo0ZZvmVo02@~I9+pKH-bhxN^Ri9lcDvim*{3@ z_`?`3X-W>?W3Z0VrsRt?BSquZFb5%9^CNCtm+ZYA))fQ54mK2``IeQRf4mA-%&Wns_@bap9=|kPMVQ1&_dT_$cAtHgkpTu{$u9D6s^scfGK_7|~7< zpyvq(ykOtdcZ1+!D&_(@bsoO{Ro9;2Zj^ ze0(oV$=s!}#jwCO8OqnW!L#iqsU;D@E%6Z|&orO8Q&Qx=E8ynDHZ}|ZlqkwpR8Ii` z(Q5K65%w`ZX|#{U=EBrvj>}g#i6f~#%@$PnhoxYw@7Y$v_%lN67AEb^U$Pg1M1?M& zUl+qu*zxpZ%u;w=y9xt84++J5#liOLS} z)rkBuA_2RpV*0nc9BnHq!lsk%s@-IHz(D7$@KlPr&9F~qshm0y4>l*by61J}_SiBQ zPWY&EM?1aXKV@R~g`CrDGRy6*&~}XW9CWtZ^@wFPCNDU=VZ_tNv;6xS6xlwhv{X)_ zE)K}scwdt>Rx1v~!TaFIKW_-KBEMBar=ow$XB5MfNXjq-4*BIo=;lu{&yY;u9*yCf zzwQM3_p9mv{yu_b1YzGRd2x0|8JL9^wLG8aWtu@|&hfoNR4%rnesnZ!*Rz5aemJ7n zwF3b~0#V>htLX)ylT`2Wk@Qx^U!tT)>tC88|0Tl^Clab#l8i6MSfHTWW{{pwD~1%# z)>SdRn*peN<0l53DMw@9B<27yiG@#aK$Q4%V-`?ARhM+IO1OzfRP-z!(uYrQrUL>! zne~CMe?94cpay4g74Lm+FNz+13zsuKZ3&3K%xJ!sD=M^dkjL^;2R$sk%6(*r0z~E1 z0L(Z6sC4a6NAG_3GSRgl`f9IN`W=BlUyk;Hwie0H0lvt8iK8HsK~Q$sJmIb@R;>eY zzb~zt806Uqz?Ose`GEc0Tgpx0D|AKXuzw%$Z)5%N;8DQ1YJMzoxp?q$S3C=!RSoR% zi{Pj~Pn|zs|NnT?Z+Men!)!=;`)E1AK=!-%(kQRb9oNfLe4Ma5hoLlQ67I5Y3buP4 zv_ogoi_4yl^${3AE9ISy zEv7g|em!n&PGcI9qrq@6H`j`;mwsEHD|>Cls&<)MfTK^;cP-~r)isq;lzsUU%eN}; zW%9d)`ov|6?7X|$jvG~zoBb=it1XT(pgDyif*RM}OJw1~lLuK`E#I({%)X zQuq8`LbmMmyPU(C1yF7hZNWtp+6HO#fTl4&el7njS>WG~H2;3>1{fWp>)SM9Je87^ zVuLioL&A1xDD0RmuH%(w$K85FMEX8tb)kCQBm9g;J}iEqrbK9Ly8+88qZYu4WoS;M zdyLVQ3B+W8dg52bb!2|Vw@P2Pm13#ZY`Ybf4*XCM34i*pev@Wx2JG7OIPalGiDqkUGWb9Y(@Yf+9vV+Gzyh`eE2T?NsI zNYn|7t?#H_dYKz;Jg~)Rb#nYgWpv5~b;UMmD@`JI@a@`UhD-DGwZ%z1=zcyj!bt+e z0%#Z~&w*$F4+)F_c+}=N&;3fGiCZRRl9MQX=v45X)IQOk;PDFqrzHAT5p;5%xE`S1 ztX{yTM5|^7dJ}dI$Vz2iK0I-pFW7Kb;oT(mrqMB>l|OU=_N?QQOe7I?=eSTWYe^ z=;FHVZQyCA7f$p|las*&Nrkeq;hPfI(;Q@$g!1QO)QmIT-Hk1u##|NDX1&5_Ieb}h zLHAmQCDpEsHR=xkVz)Y_^2xWK$6IWUfsN@q!k8Vv8e_c=lG+2@PhzNqDul$G9DzoSSwH!;i4DhMr((;7vP3{eiq<+(ZCq4Fy1VT2 z7w*7!suYIHRGm@vRu~#eqE$s1E?Wu^IF~am`aZRK!2JBPG5b>FbQ)AYQr+S@O6ZQo z$NAEdp$;)ZY*QyDp~>O&fmz+)#;)-#r%kvtkNN!#hx^Jb!RqD@be$Z&>c4dmJhf%^ zc<21{1>`o=)25M>XY=s%fa(rf6Ae~c7vX?Sst|lIHT8PP^CsQri!&@Qg!qo>@tybA z2zPQxgRz!0qUGeYyzsP*6tEsOe0x>V&6^S%%*UL|W=6po5-CYRrQc;Ad@UKM=Jj}~ z$fdZ7W_I6@vcSjZWDpQ$`0!d}$of39WE!hoW<^=N&S1On*O2{Xf=$G+=Ql+gYJU^A$0ZX1wAe~u$HesOp2_rw1^wRwr;#; zf?a?{MI9OCSIUn_3j%Y=TADO)Qb##f;$(No?r5p-ri^gi-P@gc2ml}rnfLna!99FP zJ0b}SF7uKhd8;je)x7dYj_F^{E*t*UMfs)7f#)S@K$^FXS+4<)vsr{H%|{i?0`JNO z0(GTZ05!*ZwzUj~F>ucitX5|WgiZK~lGTT7YZ`Iru+2sLdpZ}*Za&Io36Km9>L&XxC|Vi*X+q=LKn`q& z>*c8O3_5fC`H|l%FRv>yk)O&XvM-It*q|;9zUOE;`)DSS@$l*|1|t?3;m3|{*Akt_ z$^qD-(?ZOCv)d$lqMUesx!>k@ZvERm=ifMgeH=rKap|uotTm5uT}IoXUrz+reS$V} z)#JHBL^ex=*SD6-Vp{Cx{3~>Vu4eSyp^Ge1?fqsT#Ow|$nSE2cklV4jJbygK;i=l| z*qRu_a~Ym$8$EYAjHCE=ATlsy8`}nILw8Pu+H_Tl)?O-!8Y#a2R;akXtPM}$8O~AE z6I&4-9UJzeK#0$EC}>h4Armd*cbO=I@9aRHAt2i<1PF=Px9rJUu14j9bghqKCS)I@ zQuoD^740LpA5-$(d?I+JsKE;B+4hr+h13HSq|2%2!Q$st@FHPwaL$UMOgM#*bc|-< zqrtrM+zw&u;gaRl%2s>Dx5g4tBb8;gEBcH8@hQ|zgwC)3CmB8I3dGJ&e5_t6lh9*8 zY8|;LQMWwIn1;P(=V*CLjGp(J>9bQTEaZ205#Q6>*tSBs2_N03RpxbNJfkFzg`6rh zwhx&;*FTlEn$aE~5_o>;)VO{}b$n!u)#_nNOPk z*izJ6c4IuiyRpxPMYZ`|9dSf*X%MGfFEOK)iXkYeMRg8k;(SgEl zQIQ~WKNj^*&%I~j6DCH{LQttPNcRDgWWoLuz7H|*JpT6xYIP2%ND-=RgOGG$EIf;7 zIzqOl)4`>%5T-TKnF=veXd1hz{jH4>-tEcmIxW09YZrA$h9Jx`u-9{BTcm9mLQNV) zP}VCxm8*ekS(W@4tCO~WQuWGl?h@t9<5+>TROs5LA9<3S=_;0w&Ks9xK<<)8)3=>w zZXAsxR@@kOZQ#qtCWtOHEN{&cIK%PVBP34q+jXMLo@|)Vmt9#z)Ojomq^&k2IOp5z zsHL2o)CJFHavZNLG(*BAU1A=G+mh$FDM-D=z9^kQw4iDSg;SW1!TXgBZI}>tIW&*a zXVu<157&-6z3`0f$e1O~M2>03eweYGA?KUZgbC=4J%31_ufkoPDqffGrPsW!z^nU= zc2Zp0ozqxR1YFWy9idYPH#~7&WH~1&b;0n#3x{M*(-6gw$vVN8HRO~Oryn1T*q_*W zFETa}uv}q}l0^sxW8M<^oVF9_%HmCd=>s@gXnjXH96pJ%m9t{GJA+$=6^LJS!@sD~ zgIYrRd{`DDhpXnxpK5H*IZURMcJ|?d z+7-RB&iT=MY#!A@PW5*g(75w+@Pu^^{w@b?XUC?$U0n8 z_S?_MXeK8lat0~89*M#V;IeeE0Mi>1vp4Fygsq~5FV$}dMs9FhB%bM7>vgf918Az8 zWfAjrKw-#~y(#-k`>F)zDW}e!;3VvW4sT-3?#DQ=uR+MC0Sni8J3pX?>V@Bx89R^B zW|}k!Q)uFXsBJ*-`OH%;!DFUf?I<@Dk>@t_rOqWKqGqKRI2V|Ug@2eE zM2&P4g3>Z?8R}Qnrs>_9?-r+T%kY>FIN#^>5oxpaa)-C%H(?mVCFbTfdJHMxg4vcrl*iwc!0H z3dxu-ER7FwK9lg&RIM_QLP2jvl`p=z(R^}HN|o2qCHTs`gi`YWTs?Fe2u_-62OSl^ z?>ntm-@4j41E?Ku_oNW(Jm#+~%NgRs^95MJiFW&Ihg@;hcGG>>u-ua1w)z1`Vck-drB7SSBaIJC*BBu~xNoZF{z$Le=f^_)6jiI= z-kX8`9zc#ty8nvqO;NM7qk{&wy&+=r(4>ArowAD`^;_&sb$4J#IlZh=^HL8`iu>*i zK1ZHPvQ58Pvk`99=xSs#%*B>$o=BAS#SkipcS3efG+rery33KjqiTq#i5@+fd# z54x=o?TgtRkQ=!kJ7Hcq7TYmr?#L*$*E|`SVrY(ik9SMbg;4Zboy}=*o(O-`LzzHS zdLhE@xDr^$__8G%TQk~N>%Bs zHmIg)D;IE9*6^;Y6F#5tCav$db?xKHN7^g#3D36HCu`2MH${D&{I))sHjYhke$%JB zY~nuJKXmVLRsE)`8_xxjHY?bltmq9nxzlCjt9@Ly6w*q(8gAfmlwH9pUd%@)~MduQZPq9+BqI*zgWUnrO@U zVQs!(_c%hS*P%GK{pRgMBX&jO>}Zs&hqg<&%V>?M4q-hui(a25o4vPS?am( zFh#aB*SX}dRqp6x6{g#gcSAMRehr!HU$8nd8j?R?mhg5SKNasxbIQ!V>fkAOCRLj? zH@q{jCDb}RxbH4sxJRJ^Bbd1}#{pkIDz<7mxipj+e_gIoGNN2AqOL@H-RH5)#qY=3 zHY;OChp}CoJ7z1_k++8C2*YysqCU;Se0M>2-)2iDKs^^0Hcm}oV*T#KqBvkBfgQBO zdoeRpu+z&AQ7K|x%X-0H?{cNbuf~W{doLsn8a>F(*x*H)zi4o~F*qWWRhn6|bx9y> zeoz-~EAjp)cWGt<{!;nu6tUXaLZwfJI1P;&_(&M8T?b6-`xls!wtd`#bJgWbl-bF1(2ZQs(c0uj2g2)S{Y+s zwK=yWdMAW>>g6drvPb8BiBS4Ea5L}3bPsOI#z>|nb83bt?l|;4Ua)168yyRON{GGz z0Hr~`?%9*4mVEP$ADv(R<#dRAiN9&JG+lRho@H64=WLuZctX{pcJhC*_a0zPZCk%L zRzRfp8Wj)$0g?`eTWwMLv0~4?a;`4kcjlFEq_Ne|*D#uf-tOLDFxN`+mAvS1(rKWFHIM5@d z+}LQ8Y&3kv$L&KTy8_(*z#fp({0D1-%uZ7Q(5D2xVl?itnH@{#bLT>8&9NzKk*Jd9 zb^aHJ!ViXIyi2z(>rGwaa&feSxrsNzkt@XBa?b9Krwvv2sbZfET_H+EtptbePv1K< z!Ro*zbOTCNjgP!yWYQ2{c5>IcVWiAIr$=`UEJ@6Ed~T_n*GHg>C$Ps zb|x2*Oytu*`sAt>EU(9-u~O&>MSQ@O+a-}=Zo(0A%@0IV9NbTmtW~_N(Q&zUm>Pxbh`0?V~l8m!iO(*1?v{tK;hPG;{4 zyKj_BuYNmn8FR(X&y2P{LF(M_SI;_VWr!NS{Kh-zvI1tSGP$^wWD|={Dc^R) zdU)sB)X)+2BX=#Z!>ue+-!OX_-6Fa7Ua5a^X|Q{zQ||heY>un%QEeu>dWv0l)@H{| z4jI>u4=5SDDTMW1?-4Ja?Q1376-7;p(*3$xvzDu;-=<0phu?KuaT@$`2Ljf~Q`28jxea zO1wT#aXRAS*c2;ms%OIcm&}+q{N{ju*DQcs4}jolpO(a-ONnJU!|SQ{N(U4RXmI zY|eg`hp^TS%$6!Z%Q{!@3sqh17Fj)gcTlb*VdfQmxCL8wy5gnF8zQm*2*B_*-BXIF zI|Z~4f`Fz5tUfW^*z8q|Dp{gyk$j^j6XWouMK3bTm%`W9Fvhe`3f~igKNXDFamb2n z=Ge37ds)=RKw6mdW&OTFjCTyS3KTAcO=gBzqRToBY7k69FWa3T4n6rIS}tG8Vihiv z@J)_}i7QY7CQE7rXH<~(BK4E#Rx}r}w+L2KQqm?)y-}0rfAOBtmo})J~2XfW%lgF8K^k*;Yxv_=f!fjl{Z z_sE&@C$A6S>XD+S$#dOm&Z252zseu!^0rPVE9x_j&620LW)VtX;Ydql%v0c{4p@=D z<#y>TscR!?#oX2OlhcN4`6F^C*A+vhz)zZY{A2H6b?#tUtc$LUimY!3gm#2#v1QSljrdUL!w@pNTn=}k($R<|`>&0Q7kstu2 z7BGOMcW3ug&sE+}vY6ca9wfXK$?n%E3R_-(!{*>F{2cM-Z9-^ zy9^#%!K#&aNM*S2tE?)6v&HB+i@qY*3t1WjcJ#<(>rm@{)|8yXaJkNhlV{{;#ahP( zzdr+)Rh>{@3q}`VYLf&jj6M;GoHIAMR`7QJhPvC>-vmdiwoH^ zVFsow=C7A{)POn^+OMC7YJfc>ox{)OSc$z5(UEIzKP@jJRk+>gERucu#u<+nha0&< z7!@X)zu#NwnlPNQy2f@hQIm2*a(PCuO%M+JSh*jI-0tI(KbDFh=Mg>EdnE^@1l?>` zCmpX*q^GI_27ffWQQu__`BjSLNah#SLSNl3Rl-hs=}r=Q&<|iQhMraN_n#rP=Hd3& zYnk^{PgYsRYi)VoJ}FfeTZ8F1?vxRNVkRu$^{4uk@rVZ6XXZlq*>uq--Y=XPzriSL z`55_hP1r!(0^ah~SQfAIsUY55HqB$ZZ9=J>v<6cVGM=nfLLryx(a7AyvztPOZHA?4 zoBFtO+mk;!RgBv3?|=1r&84 zzxQouctX<~%UkKsX%5As?{rD79b*#{$bYKeBfv5wUKQTR-qYfQCu5~fc`>~rp^&{>&pY- z@UKXH?EXhJ)xRh<{%3hknGieyVyF!OdXzc0Rh~r_5i@(GK&VMRLC0#y%*@-8Y(|TH zt<}5h&zhb$s;u!$#&d07xzvIf(+Ce$cGf3_uLDkv5Y>!qWK;SQSYCC;!A>cjY?u9P zR$j8|LOB|45x!xl52LKOY%!_DN>JboE3m<;r|2x=2eBI#{wAKur{xZRFvD2S+?R_( z-A=1?w%{4>78q(qZz2$&gj&LPNW>Uj=jPt1iCP|R?b+GDZoT}w(e;w7bakQYY(uOz zFN&uvPX*r4eysZ07IMUoF`Zyir@-1n>Yh4=cc@6L97{hJ2hQdZxElK88rji%%-1Y< zQym6AWZ!!h=r{}~SQt&c?=lzwu2@<>s?JRWot^oaKB97tSDF@W5UC|tuQbxuk-hs~ zl>Vjki#J$>cyy+ZVC4IKCm~1d6i$}msb}NQucJfU1*J@)B!rKq8e+q z$7no)x2rl~Xdgg<#;Jx>Xyq*B*~`TB=bM?EUf-tJ%Ew&fGkl>Ewfe&9ny38qv<{y3 zs~FAF7=NF_xAbCQ^U?=Q2Y_RNc8Vhi^4>ot@@{HMyOaX!AySq{Y;9`=XX$ z8y1EMImqw(yjbTjbH?sXv1j_|0_P`^{szW9PH&4fWL=L&P`_a{sc+f-5XNN9knx$q zxlBB$)n8)*tX_b^iOY?erRcSiNsjNfn2*SzH%a%ZA*NBhJp^a3?3@{X~iqn3~_MDyXBo=bBQ(MTcJRhr_Vd?k$T|hgO z#qWrX*mDJXqP{Z?LA5>F#6&oUhg!w=Xl!%EZ7sgAS0kDo^B!}hjaT~XAx{1e}ZUa`1kD$zdPqj#fPZS54;iwH4z z@){&hc1Bg#+b*{iB~3F4?e6KqQh4EwLs50vD4vtvWDTB&DNea>4+*YA3+q=H2-?%* z6alR8noqdmx09$9=!#a!qUSCmX?lkPR>KATdYHW)_>wS zBlp2f>9I>)4;nI^>53CHdP+3;BiJ)e;1d)~3r>db8O+aEFB(fnW&6kPnKw|a9M~LSn7uRLWJAf9YWXB!p7UC&%4OzwV9?ums@gGOy!l&P^OQQlMiHN}Sr+>} z%r45Tm3rpeVQ)t#9_4{9i->R4UY9PRvTZY$dH1EooW&L~jm60P+!VXL%iw88(6?zj zS(X*`9zA3o1S{tJW{9Z>KKC$ZLlhq^%^=?Fr;XF9M^FuW9hq7!`asL$^>lI;B^fW6 zY1hzaSD2#7S5!)G(y$&McR{{|hC<*mlg&z*puD`JRVI--D376X{JVd9>~Ta6QDy(* z`3fVE=k@VHBz8MjMTbX^s6eS_?tA2kcgK#;Pdz?n4Z*DMD`cgGcF`3PTju13zX{I) z$}mY|uO4bbyDu786^=^&LFS;fBeTY|{{XsKb|Mkzc$Fv8@tB@f5WBXcggpqBIs7mF z{5OXN{u%-({7dp~@2^SgyniIEUn1EqfG|^zgQRtPAd8=${d2h6!DsRBXxe#mzCv|c zx&@rQerHq6c?0_F4}9S>CJu)$(khvv>hs??hzH@u;~HP^t0hd`3%iH+^SxGjjjbaYO9RO*bq2Vs9&hJ{GJg_O zjh1hf`>^R;(r$q|3OcDF1Gu)saSHeHN+fJr*1J7cOTV_cj^*6BeXE2{_2J{^u}Wk< zlR@^zB*(aAQo@M|d4C*Mi4f{1?OwVH0veyej0*cjs@lGluRbW*u{*oz*Wj5_?U9E) zDU41ls=aToo%m60Nc}?wQ*Xjog2iNC$fOpV7rLR$ZJPn+)#VE+L&v_X=NudsDZEej zA^T0*;o*d;2NO@~{bKMj6D$cCUUHK%HEYx<#!G6!7zh6=J(>Z7wxV66ncSltXDFWO z-jpv9eqIxF-e-S7+1DG!IQ6-=*XrzwGck^a9^}XAb~L=_xu{PnDVK+Sg&ua(I!dV8 zo;v;!Wj}TSFEaC{8$=QqCkk4Y%S(09}fX~8wb)OtF)+Xx1(wylnq)IM@PM{XHaq7*0_ zNWo|DR@>Zjt3e<&R#~Q1a|HFNcxWwCeYtP|ZN(|&*q-7iwI?&rAr=XiQz1Uvp;Bwi zgkY`0vd>0ECa*0cR-6K#(g&S8qf8li=Z%iKG~fW91GIIvg0Bp=aj6WYc!Q8kTw9F1 zr>u4KHhw?4#&DKVSVcZ!{qE}Rvv!BGq{$v!*kcIYoNQoEwrb~Sy&_#4SDBq-11vlvVJg*XC zrM5(vQyD`yIJl}B3QUWOhg^uV!(O9}E$8;}?+r{PTR=CvC<9TPw;v~+PjF@;kL#EYDa{qF_{$sI6*39pUYT9AiZg^uYEv-=UUNM zKMexh8P8bz^p<)_x0DGbwz69cO9r-#_63BexTAd?iH4KDAOrVTkWtBV$|g+(95^i`qGwAeN9G&zkT^yAk~m3kT*?h1wC zK`^qd^Anvj->MWkuilGFn!iIjRji8D`au>HNMHwPZ(Cr1pWxtly-k==Cb4-9(z^&3 z-b36?tALX@s3vUoX@?*raxit*gBU03V>k&?@CpcKJOUQ7Qy=%OksD$a3Mkzj*og13 zgAi9-2kZ!RKA;19QlKRXAqci&Pmr5XTQ~ti{)3EJwGRX=Ufio){0@!X$9&c{hyHfZ z55INoj{kqB(~$o$L?H3u-kY<2s_WNq3g7X65Sb2ImeL~_l~Z6d+;Yki!T-7E(Zzf z=Lm&aAXv38pTk(@?1HRXQ`J)k9E;ydfujBe4Txf~0ZvaupGpfoclla{9G1VuhouNN z-q0Uxo$`i|I=m9i!@}kaP_H*J`Pnh=wcfV+M%*XF)DA(z+_;r$W%tWQ7lx9>oaHq- zqZ(+hC~_-uJ^eQOiJ{=ud`;h$JJaAwj{#Da|*mN6fN2HW2a2J}D*Dv4CCv~?QH%;g&1Tr>(F1@$2>Q13HB zpT%}7q+W0_2+I1l9V%Rhp3H#SjPITsA}5^$`L95M{I#KbsP@bLt33(e(E<30pjZ1y z_Og_fNZ!J81+_i&R1y_oJ4~t-@HMmU* zm40%N$_gimB7SRdpqX6G984VsBxRyx=JMVTGG)%I2YJS55T363FPe&iA8zR`w>zQ| z(e`_<=Lnj95X#YyUL|+BHp|cL6(T&jasxt6I!$j;wHo)p?c1N=D&hio`VnDLQl=P- zw~C?}^6xhFE_@8P=^ee}dFIPFjcuwpemo+LP=Hrxb^GW>c=uGXlSNTx%S|_2o?aGAxm$JCN(WFx;}02oh!db}j%*{8z~t|2KK`-z1Ob z5fvvj7%|3D<4-Hp&Ue@u*Z3zctPJYw1t|reGcr6(e(U3|emxWRvhs%FU=Gq*;-(%K z-}^F%&2UW|PW3Q@KK}{IrRQw38K}rAa%zjOJVJe&4k_kmapt*QFyrA7XNiGDiN-Rw zkR4b-le$_EuSHBGTYvsoKnL__;TmJ>M5}7UuEzV4qj@!bF=l)&3H&Ft?}&4TIk63= zenB-zn6uV(*4>O?D+>`G6ZiGbadb>w+&7=w)YMDqsPED{%|DC!bR{r!*3Ss5MM0od zBaPv63+&$7r74H4$Q1C=djp_s&KTLz)F+vZLSIW*yE7_O^pC|J zxqRf&i8`7u#|z^OLc-rt>O{K?8Z9l1Pm9@cn*n&~bOkqd{3ubW+p15VGI!7`uz~Ux zgO-J?sY>*xET;3%9#)>0{UmY%~fN| zJrmF~!{Kw0h1l4sjLX*~GrU%_S1aARXL-7$E8F$cO2ya+d(}`{$$57;_foMrB=5^B zMXqhoO=m%!>LWLHDTu|e4_2w&}Ik;tgKrgtcT>NM}e zlaxGD`Ma^sRx3M@v;74{d$4;OSwp)i8q71&Xzl>2F+!9dw;eWu!_hrg<8_|;yz%r% z(7=8ApwWs84I?)42I^R`7v@I^o;JtRvF&t*1fRY|Eg?bYRfbW%mxqV%e7h<@mQ2%| zou7TjhC?TVU+_Wp>OQNsP*l;XhophTB$OREArf!&S1@NAJCxaZyf7WS6;od+Uh4Ul z7yKuMSwMnbEGe8u)EH|;N;;{ zg+4x8JHdsKiK{+E%=H9N`TDT}x5=;>VY^PBhbQQJ!YSXq7b|`G+Hn+?ynIJuLc4G! zVHG0S2p%XMK}Nr*Z?iEWO7y|3(WJFf(PKA023qn|;mdckgl?8Uo%S(r>;FFBx42c6 zscbHTH)#l<>yF5L@?HIzqpx9*NjWE6@SS5Ef}>eckBmjQoKI9!*~Si5h^oE< zuM4h8<-wn^9}1KV6Bra(6$s>Ih`YyMqjFEFflMs=1{s4xgZrrPjh+DBB{=%xu)I{rIz8+a7I0Olw*GZL5o=7W=?Kbf2b}um)6}Iz5 z^42GO=U_AH4v$HW(f>Xg1A@nQy$MEB<`;mkaRG-VRg+GU^xapAes5Wvh1Ar7MI(R* zxylOrUD(_=1Zna!T$2E^_ZO9}>iw%V45nv?FL)o13kA8&G+sU`qPu2U5-w^_C?j358nJ}TtT z{m3a39GRW-Z_y&CR9pry!z`^mJmdgzLD3%!oo5CM@Bm&wh8a!^3zl2G5C7@v5kLJ# zf0W7e^0+JGPZyTQ^{6KB(yKFKhwj{^eZ#aXNLhSPSNb0qM4sOZi2k0)*%6s-gNHP) zgC9P9b>LDG7R6rgbefSEwcFab;Zsl-j=}RveN;Z8krNIBeUkg-I^h4jj-j-`%6H|j z(O?KXf4UWbj`H_=QKWomg@2^}k5NPa^CljQ+CP4h^XVL|o#E39Tl!Ns9JLkO|C8OD{eL~wRbMqv;bCKABh~4_nwP5k13l-6 z&kfT;DSmag{rUU<%{Kil+w{ODg|fHwJw>BUhcUt`E*U-II#(#U^gao`@2kBPx=0~* ze_f2%2;1iI?MSYwA6KYjMovzkq{oGfvb;w64_CE5lATBm6RQg;=G&W<807Q39R8v zRfs6P=0yIvhqSjQp0~ zZJhAeytntt<~$^jK6#!F4gq1@n}QENxf~7UIu5y)Yt(3Wt&PaLMsNu6} z@=EwI(^LW*v(6O(^`J-Y%*lcm%&5^@MWu}k=JC#>& zfUKJ-aKQ(lb&#gE%HoP&8!Am}35IYSbYIj)**WO%S>)+|kWl{$-dx{b{yqX?|DQ93 z|9?d>oj`(}Y@i>|fGrTg@Xb=;v88ILEoA2?L70Sr(17>8i$P_FTMvmz0saQ~5V)%U z4A}i2eEvU#u>K!6j`?S9qW#Z7ll>o~evnlGM;I4e(hYdaB53t?Qj3628s`e&um7?% z@PDSAhaXG3BZ{PfE<>hhXKc)e&3|jiy+=F`B|u2=5@{v1v|7Eu*<-HV_E*K1^#3n^ z7JOFIKNu}Yv&z1Idn%}}O(4;T0u*oiXl)UmN+uAxlcY;X$1NFvjOTGSJJOl_7?qMP zcck=m%ZDfy2aT*#511?l4Ub=We%52+V`K5(n5XK>cfBm?IcUQ-)j=iW`zy|c!d{k8hZ^m7dB2V``5nWH6hR4!?q1)Yb?OK_B&7gw^BDn>KEW0Yx8NLHWc8Q{a0k%U)%l z`PIC%b)y$#v@QAD-RGPhbeEl< zd=(F>1TCYm?ME8w`S2{s*_lTcFjRh5|%%z+iP=;VnND63Jb1 z{JXjGK2;s^q@PT>ku8UG>3b8y1>8HjhLV?)+Q-T9F8*3N-cngV$S6Tapz{{paNI=* zNvIV4`>6af@W|Z~=&UMLx>`Bdn;m%vHhVzxMsA8Ppb6|iuwqsv3Xp)z{}!PE+P}dG zpJo99^VhDX|8_OKAY<$zZC2;%|ICB#{kfxN{5dlz#4}S3UaM!E5S-+?gz(S}=Y#8q z|I;d#!h4|BYr(|@joCz5HNRu1?~!||t|tO7Q;FmTw4e9h`_}kvg1#>;lSc0k4r`G> zA#%i@O4)0>W{t-ov9~X4LW`%C85J%st-ErDPM>Pn&UM;+_-V{cV<5ZB%}YYQ2A})e z+h{}@OwuEB1Snk&*iSJBZukEJ=-c4RR6EoB7$vSRW2&95b<1B){ds0WUQCgXP~s3{GlGTSv;y9|<0A`8H`mi6xm{vZ>F18izREBY@v;sM!}e9KC7 z8CZca>?C~Nx${6?1yRa>V1?Bu5&P7;P!c(C5#yUSkp$gwO6dHJ0}0jyXk7;r$nz_> z7}B!{@E9B`9w$2e1H=k)R~@y2#^~_^VQ%9u(9}{X61U6x`6JtPii<0rgti43<{Ap8 zd}xwx!kl<_TwwNW)e_+>l3an>Pqtg0{yhP$9Bs?mT9FJJMiiQTI~1pdPPTM3-MpG! z`;;6I5|tyGFbctCRx!XkqTYh3uo!eTqRU8q{Ph}&Sts1KNwayENGlCG znt{WRg7zWcVOs%%J_ErORU}G1czg{i4WxtHapw`aQy^HZ4E<;)&exMTV zK9yc!k3rv%*DQp9qvUKN5D+XV}O}-z=4SSON0A7^tb|(p9q?8Wx`}>joh}MRfdBmfiJ%?bGZE5nghGF zwRp5)OtcnXe+Dq86att<{%KCIPI27X7=vAa`}hiRI9X(zG3Y7x5}0Ip5* z^aoiOu%n;8qtc<1nnd1T=bN<}=s)Kh6yfnEdLE4a1Qe&dkJKtxa0O3DJaFL$RSJOT z=*{2s>t9-y=GzInXbONz|9PU2!y*1WQT*xHN_z@O55GAO%p*35*{Al=B9Vi|LOrnS zpBwr+k+{qNdhpQx^HD!Ae$PqBpC$wRA+Q@!|6?$MxBM0UnxTMB9q9so)_B0O2eUKn z@~;2j29kIl9Sqr&T7VL`$$`cVV-M&xmU&X4>+Fa{Q#zD6&Sp6lkF8ROPI?PGOXmHQ z#n8%rNuIHAS0o_&_uB|&h4E+bf6fZ-OO^q2{z{Bo8eF<%3(e_fx;+au+7TR~?@SbE z2pq_hfP2m}ek-Y-L$Me2=uyDb?#Qe@mkRKql(X%q-gois&j%;@+49^sZGJfmu*F}@ z$@Ddt%Jt6{F7?&R2+E;7NtCe<_=GgtbUba^;JADe7rdh%OllKukb{tcpTGNqu%BP< z#&0*QUx0Yk2et_!A#f1FS@_`QUcnrcU<9Xu&N~3KzAWuQY{5@otHOcR{c1h`!optA zs*?g?q$40)7Fw{d{nvCC*cTm7{Qglik(@*Ux9MJO2hq8cRzv`NdVBD~_&N_g2>JM> zVON60^wXpCuO7BjSHyNH;RISD9jQHY6bS^CUvHOnJBD<$$0;qZo2d4F)U>VI0#IMf zMiEy(<*EsE7<9mYAKf-sq0M7?%E>Tzun!`rLgxK~j3bs>T0$x#`N9qDv@iVXDxnW= z91X`lF=fvTeD#@N{~D1k)09*qW)(2GpQ4p+;|yl)4LtVWP1}EN|KIL0>inxcMt=Jr zRm$2|q}~mU2dqPAyzcuh>0M!%CC!^uAhns4RSP(_hj5lZ5dzIOV4g2CzPm5B>%dPM zL<6sKn@o7mX% zB6Aft2Hb?Ko>P){Rn~yg2CBqY=%?db7s1x%eRES+=r(rI(<*DbbBCnbUkJ+L-CO&! zLHzdFuYb>Q7{gjUj9^re9w%7nbQQ@7%3{98Fai8A2UhwnQilf%#Hir%Q>T063ws69ro4(bjsT9evNpxw*gNzKtn|AT6J z7o>KqF$8qMX$!gGw{d+bc3EDDdp8{8Yn8iasvN%eloR+-gu@w7W5AI&#aBE^aI@j(mq&O-F#02)Vj1J+^(_lMZH=*9cS)*g$7 z3I?f<4|Uvi(f=qTrAaenx{yKf;c_F)gr{_3jb%aMGHx_Jv`{ML0jf9r{w!)nuP;8w3oPkJ0lN=N6-E^ilvelPC*u5VuDo~TV zF)#h4S>>I$Sb?1jlla$q%LU^fWZ{0?nM4KJshsNN+cue#CmqC7r~|A>k@_nEF<@rZwPbS&bdhGbWsH-EGS2aBi2 zgE(tGutivRXtKihhbr)!6Z-39;(6qQ*4wo!^E=XUy+zgCBGKK`FIs2F3U0I`B^A6T zEZ)>xbCpz;fqm`c%-tk;a;cp6iTf)7!3#Oev+(2J+gZJ0CWC|BkvxXYnO;G@cS}CE zQo+p;fZ{+0t%8Qjkt~#O7i{9PA=aXSqL6x#bdDf|TVyqSb6|nZe zH~U@9_sx&s)k!xqYiReV7NNTirKkYZ({}jSA8$0rzrWEg|5x8=EQBZ!^)EKDy&oO} zU&vpteE-|qt1lP>(M5}pBm>|v3Y8$sqe||`CKoGH~2J@Gj6QebwHNYmya0)bHbTmgwr;z_ z;UV!RQZv88A%xG?ku=VsN-=`DK=x?Hzoyjm?o_2}1E``0{fg%CyMPxB!H&~ArZb)GrT?HCKy#f_7EWLs2HbBYE3?Vhr9?70z8bW3s1kg@VAo6 zrIXyVI2|tCYUj>C9UG5&%1c@mCu(6Tod~QABrXDCl3T2S#8|p#9-CEn_W8G=fku6O z*reNCz2N&4sN?`Lp(T)LrEtk>3g=v|;WU2z1zL=`ILRs9er`3r!0GEG;)?D5>rOWa z8_}8ox0PPll?gRp?PcA+BlxkVfGwSyS?|e?Dp|~uCbNnCo?NI~wB~RY#0+fhyZ)wJ z{z5x6=#1S!uGoPz(ETZ7PB1B6(a3>eh$#mQIL3)F|1+$|NZtE6%yn-frM&~LhdkXbacY0y ziF&1=-L)M(tLmxjI>rKHet*C|R2Os)M<);YsB!0UMz)4Y$RXm{8<&zFnF<8GCE&`w zmwPp=)#}*3L8lh8Y=^k1Gz{itB)s(7^R&`xPIe7F3iwCeyB*(~grDH+;7rMb@S0+z z%41rI71&UxsXDTJX2<+`2x4lq{7T+fNrh~cpxNP3KO_EEiDUg6iS>NyI>X?s!V*tP zoLn%;*znr|w4RA`ipt(H&+ilF6Gud_z9<^?clU_B-8pN#r2=+?Mek#~IrEYu6EIRJ ztQSdGz7L7ZS(P-r4{C_*|Ia>*ngOO|%ysS1A9hRr_h3QzaRLARWUQnvw7?3ZywJhf!* z>vnUA1x2CM-5grIw2HZgPNIo#xdm<(s}wYFdZQtWx+R}oqM`Qai^JGl#ml*g)qXni zl3}0JEXPjmT^_-`3p`*Qo;C_kHGdRUerfHhtj`~;!*T#hv)3?1LPouO9K`@wDB;+M zCy$fLn00JFh?14)%J%9K3#a{XHGtc6{`SBQtdb*JMyJVY#9Qg;hXc-`L~@5g{=xP2 z5jnwPy%D-~3Xtd)`i9Ud!W&c*Q-oR)htqYV^U%q2U~lQ*L*JynMOy;59d_iG@dlW~ z@QC4JeDVg&&hPTmt#E{CLY1gFK?kd{C+DsHc4%D5Mbz_sSF5Xh$PAzy9$#LmZg2(F z+f^Fl_atc@(kcw5bj$P`z^K;fJ#*$9?S4~SEB^zemJC4&* zh4{Y%4h1sE03E4u(GD9k(a5M8uL)!EkGiHN?<$?L)tdh3TrNMr87eQ5J(Yc`9~}5qdTrk=225e@y%Y>+;G`tZUKVpj7`1+v;Oj?k1EPkmISpb zA9G&0=+i-N^m{esRT761eo8nAiw|9^HISZRTz;xpQt_nr0BhLO6(}B2{?IkKzh%6b z2<1UkBSTzlJp(wj4#V$j%_%=}_8H1UH0^ISGTbA(KREd6D_fiGU2mSB9D>c}Vj-M0 zwpDDtH@+jzKm<`Ns>Rgnt7CcjrJSzeJYQOG;~u~nZXYlWtC4E2xsleSW>9X*e+94u zdFKcoD;U2m6qfyVg_SNK8ZHLtPo{eUPHVHDDr-Y=U#2sqnU~KM-syGyU8<5lc!p`Q zw~2dsk1sWNw|Z3Z!5F0h&QNg~+nb-N4&y^O9iK$|)HTh`v|aGQ%Ksf^h^94zws2o5 zGEOQqV4j#JgogaVGISKO;a6zik7vR^z6=P9t2+lILkC*pFn|v%kO_9GkWZBUzTUS; zRa{2-q})|i=)G(5T?@9>I}hzzYg1+2s}S9apNxkNFn&n9Ea78e2>DaK{IEMC<(#+G zc*dOq9%SFjNp`DV>MN+=LDK0^AqiTuU9+$AcgSx=di97ZIFejT1+IvPw%)Fk(FN>2 zftbUcr7ueL7!&g==q59OVw@SNP9$$Aof}J49}H# z&A7c*1*2}>#7h-9>4%=Rt(1GLDmI8?jN1nS)`kG2?%ld?NojAVx$%8MKM)(wPP$L7 z5mZV2DXGfi!wMMm`!$*74Zo^AkJXh(;SYEhuhGr<;Kv!=X$QbU_j9w+5CI3vbI&_V zR)+&M#Zx6h0jn>AZ6n8T)4YsnVKKI|SKAcxEWW|+{Uv-)nO_+qaac1k8bcfVq>x@h z&Z*7CHQZvX)WoYw3SM)aV{xe#qqwKWuS4}WSYZQ9tYvuIX=JPZ+$7_x^tQr{@oq&S zpCUJ(2Gu&ARL%IObIQrbxJsXaDOzV71j zxK&Vt(4aZuK2-)`6R0CEDd8bYx)t;g(=MCr`t7-RLp9Y~@++=?;}f=X`;03uz158S zXvQ4@u*CQL^vkZ%vNu|Zek?61PL1ZTI=~YeC0$x-H^vs)R!QZSGkOIs)wZXtIg2~q zEjK}lkvsKy8_66j1#-?!>bjUNX<@+S`YsmAf#95&Yq-dWM^g}nF-+z{agyKQ4Br{& zyJ5*TSr;G?cL_Blj2^)mWiM-0=jjp8VK!VZDaseoQ!`*?#Yg9_m`k-4;%KG7w&bEH zn!po!K3C8zB1xX;dK|VTa+_+LF838)5QYe z4^3zPFas0fmX#x0)61QYvqM`Loi=Q?X;zySU3n5Xl020sua0lV_+&m)5F^-_;L5!q zb*c2Y!l7gdlSMV3!BncJRO$6hzU&<5Bh}h7TzzfIhheoX3tPfgRY*kCRs=IXCE4aH z{CIF3JQPMxytbPey18^NRo&=ls&emaf27F8mg|fBd^`5_Mz5`2N8XrIp!UkFm({|A zp@R|LQ^g(56=Kq#ib?oF1sxOm_SMlX#b@S6q{$K9iVEanD#PP0gYKucU6*Kz1 zUI{x&6I^lzMW6BT6xu}>^(WW*Vl8p^ubX#iQ&3WOimA0 z1s)!;JKC+66dV8jOA1rE=l%oV6lNUxSCIY=p;I{Tr-t~-a|X}#s1}!D&GBr=Zw6LZ zA}ATx(f+)8PtraiLGg6v-FJ>(c_iNYT_b!402NhySj}z1)OLM;e~!DA&0%ABjgTX6 znfU(88cT+YJ3@NzglD~&=bd4F0a_D;<#E34=7-O~E5z9DeSTCTlDX3M?Id zlq~VbD&L2>oPVD>ce{A+PE7kbeUB3q*KaLPB)hkpOloMEecn$maz3PyZ4O(Ig+1N; zXc4&xy8!%gcBuki{K!t`3yE%#Sr_T$ZY@~|sA>?~-xhJJYj!SY^b|RK$j&)M)+o7} z*YG&`a9iD>M$FmV{#k?itQFS=_|X8#=1)sQPX&TWr!rDLVIJz~54U$)(9yS9C<&Kk zk|}T&`L@?_L+i@KLP(r`CvZTWb5D|kuxNc6wdW{|H~09^Vb}34ZAdtQX?cS~G46=V zr(~W|M7I4VDJjpHHm!fRs2z0<6(|p&ew==SrGz|OLwCJwT#=34ggTPZPNrnTdngDg z>%FxC8M0}K zfY>cK;eW{?4~!Q5Kbf=6t6z0*G$-l42F^5N^9_Ghyknx z;h0vT{%t?~2ie?q4V*v)2eBUWzn&FZz)Bqf0Vlj65I=0}ahg75sS+80)7Y zk!YGbE(TioL%bdI)`z54dS?P?aL4m9y`q;e=9l^yP4U$AUkYASlMm*cU-8_DV4`R7 zXs)6vFSV|TB%A9Ma^-j#(3Z>}aARnnC)e1#J*Vm#ihs3UZZIH+^cF~CiFXeqm;VMh zz5j%N+9B;*2G?spf>C_0zJqhmyB zS>t;U5`9A{Y9!i4tEWd_%2vh0WnrBdVb}LcG=3+QaSHx)XfC91jmqAIP-ZLtXi_?M zrKqRy1*JlVbX)Y0pkd-=rgK6Rytb#lw^SV^sAk)aNtF`f@#J-x_2&H19d=u*aamRl zHg@GLmZ8ixJ1ILh)_jqdm{%q5?CW!l^!4}tAT!tyUXmyQ*3DZ@l)$M2;MQXU*b#Jb zK<8Ex_s!-#rR6;k>|VYi<)$12EMN%=a97u z<|*CD90M)fDl*vDvZ5qa&??5wrKaWC`X{~EY8|;iWuKDZfTQZ~y-YB1K5H-D_4#Sx zX(-?JxZ8>JNgaCQ>!mN}?sxuSR!SBcxppYrH`_-uo+U%H0HnBlFjdJ@dzkkj0jm_N z@=%8PX!7BQ!q*Bi14A8~&0qm&9JN4rjG8I{X?d9;s-5!|VJD<$S5m+vk$qnDeDOXK z;CxjAi7O#ai$rtPc#p<$aL_Dagf=<3u$@b z`9$QOu3e6V#$JR!_hK$kX6}fM4d*QX0@S)XFR^;D9U&wIbXn{JaJ%HrR_<1i|LP5f zk*EG3tN5un39&kA;VFTT3TIsU6f5yean(gz>z?JzuBjd-(^^QJK#6CRv^clo z$%`&7hd=BlhPHM_L`&*fd9))6#|NcF#3q$7H3NP|QZ*V=mUxP)FGUQuu4!?N-FkfU z?Z|TN%@flp!{j%&P@&M1Ahy8N>mqzbY(TRTDEmzjEI5=NDu@R5G1QaNi8BGq98fb3X&xYG|NT0v^w+r^DVy=smvwPZi@Zi%VgHl zw<*X{UtzS%^HSh_@6)}cnkRJcA|<}p_B)r!*O4iG%wuO68XAPl;Ev_zsZd^7aJPCH zM6a!Lob2*>GV&Yz#RV!&fFPCw7DcKpNA6x)LQ!a#bko$tLf_|e??i6Mj*UAIBh&(a zkl}@`p}WfTp3xo-zgUDIp*5R$d6y4K2ST%Xe)VuKEKi+}I8H`Rx@XH<_lwEpAnKyB z^pxRX56fq?I=tPtB6-!7zYfQ-eLTYCsk=NfF{DC$t~Q?#3uNVX*d}H<>Eh<`uLsBtmv05S1=Eh=r^_L6H-}58-q&nZIjifsQthiLOm-%2kxeAzc#e8GZzdU zDM{gP^$I3CN|%;!cPBV(UWq4M)v|VsOqBgNtlQyL@zQSpOQM=kf?S;7XtvAwQS+)I zr7QC1oo;7wT9M?L)HiCz>wRVML9CZY@yB#@N--FRXV79cBuK3%(e%hz=MjQ1%AZ~d zl~PkSJ6`+{`Sk54ea=YX5)SFh?xE(|0`6q|%R>%<@vNwNukcscR;fjIse4ja1D(C& z?B2!A>1a`Wlv_B#<1>87pFC<*T~qaiX{4eSidP&%-jA?E9$zBS;xK;ps4b>EfPysB zsfpx$M5o|LdGwTX*R>o(YUb$z4|`A3Q|!;BqSGYs8$=CU=(-IK29J8Ovh&WmJ2{8K0HBlA(qK#7x~pe&*}^-fA(A5-ahe zGcw5nkGm$CSSr9gnGDb7g;l#FRSYdbc^pCm7ef; zq-3hXafdOgM9}+^qOciT?MnJEcI_OTqKl|Dxl`rwo)E5&b^GMyz?#0*80vJE1J9(q zUcVr!@g7!tk&8@{{2b@ucQ}d9vYgO6(>itJgQ_*UoA_P5pj1uM#Oc|AVYpsjixH0uw}H+!+kTM@+E{h_NgP6~Kp3 zrFTCBM04}8xDgnP%BHHK5+B`;NyiG`@2?U`x2oa5$(3d;?othzSnn>WQ5xjug;btU zHuX2-dk}37`z{F)hc$gtS1JsDi0@v7F(mCt6Eucy;=+>hY<3GOb6|@Nn=5L%HObe7 zLvwF+2{^92di3gnG`)5(OPHbCF)!7?G(#BTR?jAjxO;hz-DFv4+J#Sd9&p55AX7e) zNG38^dO0VA_Pa)cm;YIHtsAzcl)^PP{rt>u4`$o>{ zVqFsB)g5lZzm4Pp74nAfpD;Lr!}L#?9sfDyRsT0ol4X6ZfUJn68;$v_vV&|lFaF!I zY_ngMjg;AY8-ym7Gpg}bYmI2?H$&S1cVRoJLIQ)Pv3|MqNYb)Ym;_~h-QX)j@q zO{K>B6Tka(N~r}<8Zb7U(!t7Ad<<#5R=MCFBGqgQdzaDE|JdKy#rL!bR6oMv>=d=R zgnd))eXl!0#(gpSYAIPL5w%bV`Qrx*Q~5`8DgE{{ZGoZ13lyVIH2^x(x$zz`-T?%9 zm~Ph|3~`P6kzCtmJU>9uyTF0<^M39oKy@ae00=yl#3)hwgKU@WsW9=}LDor&Y!xJq zybx*Od7mEOvwwP=I>4wVjQ=3pruo3=_=&c;SAO7y!JYWw@m9YvHPX3?7s|WWrFxs zHe^qv+X^N2dtdW^@9W2EHGDY1U9fH*O`Q?d6u&dcPet$3Ng;DQa@uF|a_wFR=JWKC z?vxCnH`+6ownHDyl3E!jj|S(!9SFwn27T72?tAO%emW9GUt}PbQtU|{gxUFIxk*&S6CV>rx^X|0&T=}ti8l10WaM`-Om=1=>{b^ zf?@X__t;#W&)@ycETj2)V3z#@NVwC4CKopU0=O71e_|lh%7mwE?{T1i0Lwggk-i>Y zJLYlo=5>@)9)yPZc(2i_zoLe52gXmF+1X&DRS~G&MeN?j!I$=qT?-ZGn5x+ zWndgrYGkqH4M-X|Lvc7*PRuK7VpO!BJ>2B@N_|y6&XmjVmG+wY8|YbTe~EK@JH1z* z-Qj(+4j;FlT*_}=SxyLj&jFDaBVK__MizY_Dte0vXmJ->F#oghN%idmn#&WfLAlBt=?Eie;8O=C0&tIG ziTZ?u$D&c0id@XcU(Hg4Af{sAcFohh5LVGzJ%^25H8rEkx~9Z_HYQZPrKFE|8q-^A4ybJch*{E667^f z0gfPE;1MM?tnmLJQ|3Tvpx)G+CVCTC)8QOgx!7#tjZQmZflXOZIxSYCOqnA_TJKxe zw?umL3%=AB`hlCR?lv5FzEUD4#)!wmw(bq*>)o|^Gt;&y8y|#2609)K*f%v~ zq`|3bcyOu`MJ+#5@A9&-0x^((AO>>5=20t(H5y>@Bg0cw)UTqE_~F&K1b zQEc}TGzneAPK?Ebu;Wi+(Hp(Cn|IOqFa?q#41q;`-RBqhLFOKq0-jeBvU>1T$d7+I zeHH!LP6Zb_1t;cK7Dw%8=8y+A2A7Y#Mg)!?jtFj^$iEsFrY!ClskV>157YtogPrLg zDh$d+yaTyE{Dmn=?Xr1$iS9&xG%!jx1*{Q-V?g1dQTn;TIP|O$xU)Fy*QXrlM87^b zIItAy<}`*aIH=6iS(px7+Gp8`iXP(V32F*?T+|n487X>Sy^)2As;C=+k7&N)#L61Y z2Yhv19wx`hm2PUo%3mR-LD-R0E7ec(x4t{4%8-_rG^Vs8^6}Rf{&^pgIvi}}mZ#7Y z#zdfmy*E<`Oz2Xt>+i=g9aeNA9+Cu02( z^Hk;_?12M1uPEZnr3vWn5q-qC41#$7=~>NBCf&vz2ojAj0F!kxw}MayIM*kwKq|D# z7xdJRF1v3w(ow z*t(4|i8Ye*yQ)#?gxmM|T266)!kPFv@CJy5G#~AMS#+!6#&B3BWu~trM|JtnueNRe zg*T@AQ7P947Q2VM{EQbfoDASv`o@{Bek4o$9J{kdjyzb0AH;j+`(J#G zKXYLmT>sC_Wf1G)x*euS8FJ!6h%fa6MX4Y%pzgjftYhCKFaCW|KqeTlP5XzIfi-rp z7|OHqYYH`YkfTsA{p2JX2TDXI8|H78)F1zPG$lMwi)6VCruP5fyKS3DvJ1>Q;n-M{ z-jd+U0`?OOL)^Y%LAOSnXp;)w(Y(GRDNE(G1&du_`9a2ISr1i#?(+pz3&fO+UJJ4# zsuR0vXzjlFj{znhup&>C2SDbjE&sY51t-FHj|_lA@L)eWsGB(S@gYR^+GGJe9RwQ; zGb262gG@4ZP=Z#8$T7+UR=zCq-&TI#)>&`U%neA@|DpG4)J}|158aDp7&Ok)Xml=k z%~2FFeC8UzMUW~8#>eeX&c!+cs5ZxMF6O`E9{Dr3$v?+s@-KR>Uyj*-(Q}aj`s@CYX+uesn$Wogja%teSM;#F@*fC* zKNAXnukFx)&sW4cRPGAmJO38|5>Q8V@ex<{UxWPf8u-H>WFK^aw`IL**fj|7bWHx3(2`> z6sUMtkd9C7iU{(d#JM3S`Ok^MM3ZdWKZ)d|-73vsxL<$PY`>3ePs7swbYg;?Q24rK zua*vV09^eYp;fUQ#~9!MfD)<|qa1NZjyVVhi60?@nRBK)XiCm7B)tU#KJo9V9>1r2 zfdBu>AKD)b2QK>8;q?xC%mqNFjp?h-c;RXWc}ar422VK;FaQt!J&Eow|0ehK>4dCP zV0HJygbe>FULcZP?gw886H6tBvO#GL$cJyXoJIVm{-3 z=bGQ%w@rwz91rZ&q=Jp@xSc7h`BM*_Q*jq4&2*hU9((<);Kb^Sa8F(7+z0XL43i)u z-~ElcqR4L*xc+QNKeyHWLaLxU2dPEx$VB}hGo>0MCE4X}nieL{EyM}$<$;qlTNb46 z{FP4(6%ToW+7WXILg2{&*rb!nTliOKHWNF?0($*4a3d7}OaEO^rB(?*aTxp{>*oT0 zqG*ho%qHF=zF!4;?0?Dc{bvXJ;VLCOFe4&`C)KtE(VH23_(ib&q)B(suOP#KPow*7 zZtvG0WMfu{Fi5=A6=XwT4iRGyL`dsz)jj_7k^cp`a`5;69NF?uXSh1s6v3gu6+)x+ zIMR`9TWk(VN4lVd-LA{_cCZ@ED9l!kkuvsWMY(&4!#{2i`L2LeB|cucrgl3yGJRMz zogQJunRCcnp_W0rjc|c2;jm9RxL`Z(S2+}b{z~Z1w&;A+Vd-Zl9s&1dmpNXZU zRR{9wY9xX=igZ@DR(O}^z`(23&IEinDCoW+a)T3^+r3Jfc7y!!Il$9SQSJwshk!fB zwV*_8U>v5@P$0S>2S(}1e8>S0%+C#r!$5@~|F+W!r_U*U9FtAjcvO^7c+gi9c}1H4G!CO$yP49HpjtS#4t^q5^YeS}1ALK4Ahz3gf( zSXjP|jKnl-p4zzO02@ z;ggzUPlx`}?VlTX>O>IMtOUxtb!FqDxvj+ZYH|aD(?k+OYu&C;Vdn2VSL*OAzaxZC zvdxQX+@F@nv4aeg$1e>}Vpm?urXGCMi{2)&?gZ9w;vc763-Qx8F>)sYWFvG_?ZD#p%~d;K%lWzC zfQ?Ij%hPyl{P#67`1@LucW|+DKaaiOH(+za6CU!7?kjy@9vKoxsrW9Nu$^aw2fvCUX!xoquPs+CO1Rm-hB}J46_{1$i@Y=2s6PEd-6p!^?fF1 z!*qRHIv8dlWjp2uvvW)W=a+BZeK94rB91sLcVYp*U~3Jw*NrePrXzdTdXe>Sn|X#4 z|AgWy6zCYyAUGP356t|3Cx-cB%M#G%{do^4?PQPqh0+c%(jfsOox<;obW3W>*$BXJ z^%NbK$W9bM1wuB(tfBu#ucGwRwecL0SIrN)d2ybdz<&_H09*A9K@3piussKBrxFU* z4qglW7E-i;5Rn8FBhb@`d7EzZ?-V0{ds&J3sU!2hb`|vO3c|dbWZ@(0Gl)D@B{E6P zxG+Xj!)z1plj>B^%9@dCXXko~{v$-dor@n1sI9*KPHnYHxM+@z8pqTniPTED2bH|y zc?Dk@=))hv2Y({lc)YjMbVyhB%;goR3OJ;G9>dS0jL{U_3ERbKUv3OZTSlWkgXrUg zIUM*W-sj#0`}8k-B!6sJgG}6oGlN^GZ-B%0H|jjF`7;mL^)`QJ*Fy|wkj(t{gkm>D z{Qfy#bDq=^3+Tm+g=a0v!CA;Zf!U`r(ETg9&mS84JwS@4=6L`92~Tp;Nf1c|$9cLO z6{0in9b&uyglu7);}f`!FXkKfnq<-{S^LbOn<9%Y?-sH{CV9(D}(UhnsbENp$WBmS;f*yLDTD( zu=sL5zWdG>Skj9s2mJT$S#RV%JDNrD`QevOg-pCXx}K>>ni%H>Kx+j6y+QmT>o@<7 z%J4tF2IEH*E%6SP+|Pltr%E3LcsUlW>a*#;eYv@E?vesoJ?*sp$zkjNW5mJvRuPi#L$YjeK{&DvHhX-ZBjr#iz@8;g~x}lqbz?N!z5&o zMD5Q`v$-V90^?~gQ0#wMvQoBD%es7M)lLt4Tkmk!)vsF`qtA4E9K+P$-eSR-lDWCk z(%kVj+lI0g_UrK&=sfw^5K2M~s_ar8blGlX;;=sgG3 z*#6j{o3tMl44~N>;CRsw|CV!5#Z5P*3P2^$wTN9dQ3R1H5NH^`T>tfJf7mTmn?X1& zZtA{4eAy-l14u(-IMBL20B1AM0e)$DJPGjfy=W{0yG}L{wJK{8G)I(}#846%Yq!)+ z+LR4eCpt43*y`(O>7PB$r>}hO(DSDE^qso&cb#7(TI6+w0Dfg4cHhbWiLv&x@%Hoe zKdI2j{|;)R#)|$Gku-w?Y9cCvh1ZgnEW>||ng|t#wyt(D3BQF!J(H33=8okF7i%?U zn_U&U6wvXY5g~wgdq5`Zl<3)?ZGz%DA9y=f=8f9Z@J1i%1Wi(Xu<-})TjH2v!QR_; zqse-91Nergr4zgE%L7;*mC~LSI~n@SBN;Nz3L>|dr{K5fE#H!GJ7llh4a`bkPTA37l(3-#J(iVyif#Gs2l3f z&MXY6Ax|0IWmi*&vMoVNGG8u}P8q>S7w9H?tpumCH$~V)@L@C@e-z&@({PpDpXzq7K~d368Qah$xFU-B>AbtNe8Q zjvrlzB9kYs8>?ztx_CsXRx#B-cWXrQmyuX zWO3+qrPQ@M^hV@!GG=5+YR6$?_!qc2U(Lz0;uXjJGZvYlgHQ4^RpM3+ZU(iA`WtaH z0@hJ3Gl8>N79G|~tmJ9-z-BtFcRk-YVoRHT9kYz|!bxZm3@7$=8@BO`gNol?dFkBx zDE0hx%YX!JGbbkwS&>?53fKB3cSU%GZan`~?O<4}ovj=)yWN(4+Fh8A{?3cW8Pf=f z*NAU+pG}mTMZI0Now8fD$|u>i_NTK)tP!90jtA|uHb7~7xQz&lbrbA$t#-Us3a4Y@ zlTlgFyxGP9)~fV7k3wIBtd2)h60{qgT|!a*NLm@)0vNI$K~=-4H>giYt-Cqu7OQ4W zl{Ayy$$dSAcBa!;yrNK2mO4F8%jlC2RIXk|^o>Uif^&F2C1~L~<`9l(n?`gZKv4sv z)hR8hg7BwG#|uC7C-aSy`Tyo_7ztsZ$DtRE{ssE&8 z;h%tvtdw*_2;nn3$IhzDx6n_3{N5GJ!8!``;GO(H|lUMlN5Ce<&Ft62m zl9oE%%m0_k=jrropvZHp?po>wF&t%;60}=4dJy;hyFWW9{D<-|VZRMR^2PE8*qY3A z8#fJi<&^4I)Z<-W=e-q}cQt;7WuL!Uech8;ozOK5e1YqkO~1z#LEry?JNX}pH~HPg zsv9+5#vt*7tR#Kfy$?5>L%4hR=*#m*@H^Mf9j`X6YORB=J8zHSFW3Gc%cS7%z&!5L z54PS9+^OHgP|4~*lIp_}3 z#_rreQz0;aPRs?O=NW+j_M!W&sFO?G*ybre7QccwtEa5 zC1W62>?CC3Ja&8k@Cst>3&Q_Nmr`HO4>IY!y8qTb!jrHuOmW3~fvGRWpjWP^-0_`QGg7jSXuB~ut6B3OL z{(bm(-hD^0JnG=d^tIZ9@~ArS19$Y#-90o8Jf}PguD~h#lzrDJrh2yO9AtXl9=)sz z%rVt#{Z;*=k0GnAv!12m;VCBpK@pmAOYK!MZLwdSM0N%tyl&UO43##lg5-4&R37B| z%wxuXMdm#C&$K!tXp65$GdQH|aZlF7rOT_~Nkmy3py%c`UWq>QfE9%UqLH=tEVH6V&=~azX?UWwxAT3?jPFZ`XbF zUGNbv47`OCP0^ba$A2(Z;v3GX{ zD2jy)QfOwtYKn>8fDG+-?+m=*OXFMj@#fm05_U7wwKBMn{*Q1O>}Yx# zkrRt~AqGqogys7Iz2S@*gpk#W1}~#CZGP$Vb4UHYPgb)9^~Ic193>e;ZiOtGo{!Go zA!W8hi|xYe5#%trrU^t?72lvK!JdL6TubF6cUcvi)72fP)N@*Io+Pzg4RcgIOf&%w zobV?gmzI4J>05GS687}6D~t3J(<(<9vbE~g0GFKzA8TG!$Xte0q}-d7^hdhITC1Do zwhQI*`{sK}8m)#TY2+0`xICbTLcfYZGt00~yw9hyRSZ<^6Llz6IMz#BKWjA;X6e9v zvohpKWq?yOkBlw+GBz-D6=;09K$Wi-l#)HUXYAYerS+b2_pFMcv{9r*j7+LbnENB; zlakFVn~G-z_%voKNAVlvuk2;Yj8W4dRN#8P$(IO>j>v4RAL+|(I4OSBb}aX^4=92Vr$>99&3AT2hzL!FVef|AD7;fW3-UzbRszU3nLx&#Z7ceKuG8g z=tV5ni`1x$-W>2S=p+Cd%o%iJIA+}v&|sQ);cS56Q~|A{re8EU{1P+CZ+vZ0<*3%i z`C);3nx+re;QQZdhrct;*5s(R%vIC7n{{TPzK)#!L3S56nvO-@BbedT8c1BYDHM*#BP>n1hrvY(?oWLsULWtVeUw={ z{?Y#WCsH9_-KX_D8gu@PAbkAxe%!p~SswFic8?$eu0b@T`c<;@_k zj5afz-G8rn=+gPz;}>GM`WMDt$Ou#Wl`zRbj;A7W(my#1iAiS*+b4K2)U{s}_-uJ9 z+3#>^x_#7ee zjtaEpma=3`hdC;dBhq2PpYC!@oHL|oQcz%*jKtg=|jzpvT zky$dg*Pf?OIOkj1BJQcDx_TjPb#7OJK{IvF^i|1wu=>BCVy@~g>(zu!y4(hnY<{!+vL?O~rB2mCle4F!v> zuV`qPX{wjpoQ-y+@MB8vol}f*Q}OtabLiCE)$q!oxJf~lG%d&N=mg098V*nf2Ls~N zz-mJ`I9ItnkWoMCPg$%Yu*w-GnQCG@5KiWm{H&MlG$CpN&0<61z~W;p{Is$8-3DWW z!%Z`-EO&kHBvK|eaU`Z5@$-WU5%vJ57NQaJ41IE@S9mK_sC&t$ea?@7FRc~SzYW@;(t=gdV^D*v4DU=IX~so`tdmjp?zPwCSUz9u0Z;eb={eLqp* zJxo{mV}F%0;&fc5LBWFMN2l{PvIB+9^W++^^S!&b^D~wPwUf(JhXqFh-k(%E`qjBe zkuTsjTm2bZ>=Hh`bpPEXE>DE$cI|%Ze(FBWayi2M#KzZWl#lRpuded4Dl>`gPGCR7 zHLiSDo}{Rf;PD@95wQ@pTJ6HqLpiPE24v8}L$X()Tyc}8>kW6`*tlej4SR{v&nAni zg$QPS@nKbYmmc^=rYooE>4wKpnA=-cU5jDYx$7%Ii=D7c5)J%L9~2w0|C(6)c#m;N zrslNBtcRTClhvUyF{Sv0`J@itpbg<;nT?9yEm08PJAkQUehY)3BZ`_w?HlET7TbbJ^7hh%q?;H8}wZmma-lTPOrb1RKXl{;; z7l6ec23r99;EUkpRLUiu?=}6!QP1EQe#CFDZiVs63Fi~%CIu?a#+c}?-i~JNR+(L8 zhj%Pjy3J)?Z#bIcDd7ULRRnRqa9ca5+@aXI=JXxg#!S{BBaf=pSw`)lp7WOZZU)bA z%GjY$-n_tJ`H#2{L6K4yqK zV*gF-<-LuLA7rv`?V9en#CPCq;Es0YnCINsMQdqBtKQTq+fc$z(IeM;mYL_a-l5Fb zoJZL56hd2~ti{ymSLjn^CPY*^-sBnznIe}JF!%>H#A$?k(m&DV#@?WN~R$vpk($K@`8_sa=> zbRZvwiNS?uGb78fi-L&h3HLRtG#ZDFm5)q~BBRy9O}RL#D(TAvlU*ZE{N{Schp6hz zSR~T1+&s!nZuPWC-!o|`{&qR$%to#vfN}7z6Y>)rdy6)gqI6ep)aewGVXis5r?F$}ayrG8x@g*-viU-Ad!yrxp~S}z$kDp(&@vf2o@Es7 zzHSzFA4g=krZ&&t?{fiFAA=>y(JQAl6?imvl*Ce7Pj8@uEp*3v&QBHC*4A8FfHJxw z2Er#hqH#`}*S8Fj)V93V`~Ivg3Lm~Vm$xzATZXn_6hh3Zxyf5AG|77eMm$BYMi8=c zx5j-=RuX!$7fjfDSGch_?EXk~Vhgi$u{&O$hH0I>bwix(wD{a$wPr(VV`#<&Ea$>P zmPhW#MHPO9nTM;NU*y_%47-F_4x+=HB-!p(h1u$kIcTmgzRBk|W>utbAt=J_E1sq{ zg=YdwG#*}@k=IHcRqFKdUfa;NeFva2oc;6+$&8-hYE}7-@T?a`GqPX2oUm(&h@D+t z3$3g)EefMu2h?lHUc0o}i{H8yMRj>6w{UgVIO;=kiLs+r8>cghMNM>il2RCSMk-lh zjovv>ituwnZ|j~{VrwG@?l4h#hF`Rs5o&W#IzXCUWrd^?a7u&URizGs~aF;<94Q6WrgFZ%t0TAe?cjZ(|N&o!8DD z3+O-vGTppk4b}peG6B~b;2m4k%*@eMGFEg+W?&Oye!wPf%hScXn6iIO0bJ=O0WNs99L{zd#b&IsDYB3P}#$k!N<;V9U>7ulKEpy zsCpe0HG*!p^_>Ak3BrbJ`NWiE?DRFTe=Fs_uNkP2+XS7*_2+NyyjifdO)X9NKopm` zD{4g^JlIw0fb0SW@F}$hSXG#$?i+P(i}4m*GTz@0KLet{jC=#J|X~|!sb#Pt&eds^mQw# zZ+XwG+TO~nK2_lbEIOY>e{j^gg!Yu(fVA5y3bh>1? zHuyE@(%mG($rSsYfNi zZh*zjgEEz=!^NPAHHQz5+p6)GGTAB!TMw%1ZhCe5Ia6PJ=aP@6gZQMp?d(Rml{3`g z-t=6)GaG|ih=R7}l=V}_9&z#8NY-u)n&4>eX5@*Be>qW*wi5%^F~z}1RZ>1uGYL0v zSNf68oD+Rq_8q>qBKpx`ia!)+ba_(&@%PPN0UeSDrLV3@FDh@(1?^K{M^EkdjNwO{1~-hI5vPWn z*Vo4;wmm+Pgkof%C~XpVV%2b2F}k7EYjkMI)~_moM4->hjXOLS<1yr zk&;2L&OJyhdhbekBIx z=UT!U$N6dJzPJ$TrZS(;)ZiEjt-*TpqeGBqOIQ^e2m2yY z37%8;4Ec?P<_(#qD+&LCjpuMO0B_{~&u{BjubV)n$K0GqR*aBbBd9w=`iUSgqLB)eVXN zGOJvhHl$)_cZrcuxy$}^bNZVK)y+EXLO;#!Rnw~C3dP8C?_DE#X#%t(dSACFT>wUb zFlOr^=oor>;Y9yz?U4^`(Q{KU119*VDL(D(giNdSZYSq&+sZy{ z7QMyfQll+bdyKtV!&88Vp0Lq#;GLJ#{MCyI07Fn>2s<4hfV2mCQ@7z={7F((Y^@sc z47lPz(BZ(Z3)!b)XMwN70#5i7r{K>{!k@1X{F?DekxlbBN}C%0Uhp5YT2! z%nm_gEL)G-d=PX9v1VrkAX`A60vJyfF79mtzN-<>E9wA zKYIRJH(?GkxKURGOU0WK64Gx_#EJ5^etfq0xJa$^0^42+(>5vzE|J?XNqu_3bCc=n zqRt1S0x7$=BjKI>^K!Wv`b!4Jv*B5p3APBz*Y}X4VcM7La7X)RAj?~qmf24}MN!%0 zgNy}Xie}e$BiV~l)*{sz)WqXr5CsEGIo+UalSH0@p*4_xDO&(YW~hHF*!^=TM26xg zC#fF~F^Q^w|5Ybqq0wMFey=TXe*lir$>`by!C>7FkHK7%JtXAnMb(Wm_K6Y9Xqz(z zhK+Krem0|gGEOUf-n7OA%N~xf7CuivDBxT(1FNnwMCH{{b+6V`(&f=U8%9Oy!Zdr_ zfL_@%2_;4$=@H+#_W)>67T&ri2dI|LqN(5%xkE&iGxHWLEsrt~rbAa5KJ&96N*Kpl zh&2`>W9JGeZ>6tjX|LGFtj)SV2=R`JDqZUX=$vmOa7{v2K2Zq=cr)2xUWzqE*r#Pq zcl!HXhA>wv%ju{RIG>JByM&Eyb;C5LRsu?~V+Od!(syHei*n~`5>$Gh=027v=S7@K z@wn>o(BpZ$;>qvYbCG22u%^HgL{L1s2^A7Sl)}*m22SjmycRN9tsiaC`yLv4W`pMT z^{)?I8ob4@sS}~GUogN~dllNAyU3iryc?5>aHM}+S^eokGq3i9{O3cr9mzGERrNfy z-z3~0Tp#TlQ*jlmzx~EEI(l<(d&qF}I_5d@Y?UHTMHP1m^J?=Fc4gH+w>=|4UN~`{ zGl-Y`?bM8rOq=+qWS+6YWNf_}1EJ0k8(y14r&j4#cP-dhLFd~lS5T*k9c3T3>99 zv*OpE5G8jD$6Jh8KYzWu%yh)p#=BIBNm15#PcU#fJ6rX>RsLA^c1@V8MYn(5WpAj~2@2L**Uo zJdtPLJR=v%V!~dRq164@pME+8Z$H>vsoH!OzV=j9CQYp$B^(Udp z6N`-q8Y22aO3>x&H-D*rfRD#HykcM1AWUp!=w^Rc4=TWvAZ_OLn)uap)<;th{ve$L|_Im?QA2iAC%vMxOeYm7uHoI|(|{da_WY1R{vmwkh4!COO4HFiph*lz};~MVy{G+u7ut!~NhCe|F33?~;-i zWu&pv4gJtFqKKDBMmPv}QTUGq(7JXD+HDdxhYUUJ86U^eay0YCXuKthJnVLEwk9ei z+%%zbST^@=tJ(A#!4mz_gbgglE$RR$EwoOGI#f8l7nNstFKE@uLFfiutF7a@P-E12 z``f2#Ya1?QF6U+%_;fgvFsbz}Zw%vv@?GW0^xwy>1gtY$UAx$Fo*&*?^%w-?z0DPc zbL&2k3gzbJ%9{YitU~oCg2V*k9HGsa;5*fz+G)$|9i%T-sbtlD>cqJjC4LV3C$E`k zKOTwSMx2D7##s}hGl&|5;wd$P$`*v$5M!4ne>^$fH9vDO_VLD9{Y%0EuhyeplTDF_ zcpvgkwPsFgNE%HyJ2t!vPj)SdtS^$GHM1uSJiq*%%iPh)K%4(`!4RKbVC!Qz*!`5- zxKnkb{5X^M*w#rEf~7nzeX}BZE7&^1xSeX|>tPQ&dp5=I-DaU*YhjX-IgUOpXTHNv zbd#tSeE8x=x9bMW@f~rw`*Hf?6)Kq@UsQ45Q~q#W!(C`<^0%V$3gYflSgigj7Mc!YgSjQCZqGYU+D5e>}#w;o85ksU^LK`+A*BBj0n z+W_R@&zUTAVfV@O_9OEX9uVqqs0OAnN)an5QMDo0q}1V-)cJlh$lbl}8u9&rCzR-8 zYj7A*BD_jI&o+lzoig_L;28FbVWUzZJ^uc~ZHR8I#&qflw>#kcQ@ZoFs*R3)Vfv75 zydpl>Q^IiZjEcjBEoH4#pMa9Achn8&XPU#!Sid@P_bQ_Wx0Q^x>c0DOw@b|-3iMvb zoS04C!Z~r4lVf!Ya?s^5T1@umRDXtwX=?-%^x^s)bbz$31N3W^`irL`pz!4eQVW5=_h|P&?PX*7nYVT&tcJ(X(@avW>qH@tou& zw_OL>VO2jkOf7;gqh_LZm%;GK))A~k_D&gx`~gCdpprUv?PcCYTiBK$pVP5A!$N^a zuceyLN32ShRh(yg;i86R{~}BNd9Zr>)zE`p8Tm=p+n0Rp)U*@TT&6D$U%a0a(ZuAC zU~{2)dhQ5YuA-OP%R;oyZe}SwrnCy>W4PAp?crd%WEQ(9`e{E?2#rEOWifGE!UHZ} zn8N@P#YsjHr4O?-jP%IpT3O>%5sRM)F3vEuCOhr^Lg>K zTls1?zQKiU@H(-B@Yi`Ob{r{H&aX@(CCFRJR~?5#bPLsuqa~X}5>t6~>>BrLx@V#{ zw-aL`?Y9kwo6XKpB=- zU@p{9$4f3tHd);lw9trae59i_A{EAWlH$^S3!pT=Z;wi?xO-oag(F7uHlMC;B_eos z$9Aa5G885<9vfK2K53`hNNZD(T$yVdqip6ao+;`=(RJ?aRqarE)owZ)yZi6pmE~8z z6U+g<@`QbYkbl~eXH0rpR;a*=@N|$?VVG=FtAC`Zccwe8_#xl(kn_8C^fObE;Vdsh zCJa&|V+DK42fD?3RJBt|^Gb#kQeuw3VRj15M>HYOBp}l1Cs_}6AbAVoBv5G{5bK6s82VC!+T7cwQ>shr9OWaBtgHJ`g6kjrGSo2YjmNzzS9Z2i{mn_U8PRx>HHY z@%V?{^-)*EHq8;{8`xD zJ$;-UZ&9Wp8hM+vEb;0PTf$(Dux5KZcC?@Ra{l&S5ZL!md`$mr_rv$I?o=qPNTd&& zkXD6hU?yJDfX8g|%d#4m*;q@gBVN;F&%_m{G_ivtJ*Q;$p6K3M;eJ}v?a*s4ULIj- zOG8xuc!^7)j+3UJey+k{nfgo2cB2tlO>+iNMJ_t-yQ^W^e67(SfB&{Td3QFDCBXJu32$a^uZY$*QATxN?o~KTvdv@IM zsxkY|(+tqcBL~FZ3I(r#JB8nYbX{H8>{2Vg;k1!=4!mW1C#fJV!+KXd$u7-WylY@U zzwtvISeFOBzm_UB#L7wLY2~8#!oc59+w;Be_dakK{@;xAFTRj}+ z=&9p+RVxL>%aMB1!773%AK?lK1uqumR~t35#^fyalR2A~sfd^AINVt8$dPsQ=AY-o zVf;sr^_S$1=uVQ?Q*a;~*|@&*=qbYl1UWDf=116a;sjP2cPJbbOq!sF-cD-UbZ3=a zzv^;7t0|>?=>Yg-q;%mQv}7Pt^lhGO)!3d!_dt7O3M~1%@mH80C`IXYDI(ll-{OYy zLj3m0FE~iRrUMhq>jAd>rC>u}QqE1R+PT%RtF_BY50oxE`vXOrQ%a2t7Sl-OK3*E) zLqnLM8W|1G4CiZVaKkFQQsNitZL_%ey5*$`=+g$xUK59&cX&h9_S4XoBdXu*S86y3 z-ZZ-urTj2YxP4Vz9?c5OwmzqkzjQY63+( zuMeQ|gMVR}`hV{J+*#D%m)YwzH0T$T(xvS5i}55cDAoi?gVjy4hg~ET;`o~OSVh04 z1=j6ej4<~)n`mmA8)NjoBF@J+=WabxNQFVHA*7)}K5ca%>27j^3ub24%NSIomHSip z9+~bNq647I4InXq5;S)-xpTe9dNwzqHQVLOf_7iR=Gr3ECQR~;jwhvp&}Pein#`f` z3pEx=6Nh+0#N@w=WsC3HSoRKoiY3nqmMuD)9O$DTfG?e*7TIK+K>04$oClCGOx?a@ zKsk0c!8$YbQ0U~~rErgJ)5`Eq1%pBSN4CxYqo3@jpCcQ(_@pj103fu6o+LDi4VdAM zC?fA5tv-`FyU&jp79-bW=V^%qOmKr$`(A ziR}LOx>VYw=bB=cbV}7M`pw2BLe}=ASty~x5`vpU>ERDRh-R)9vUz1;jKD|@K-@}1 z9yzcj-v@%Q{O6AdLIqBkpa~&I&ntq`+xlQzH_ijmD*|v~FO11SN@EO~XkT-LbkW54 z2bsJG_#4h2WXA}FDrNZ=s_uuA_RJ3Ilh zrk3i_6Za0lXYUyS!mZXE1rk<4svf3xZI=d=TxT!<$3O*Sl741vlMX^W3?aV$*VF$s zGye-~=8Dgm5rZ*Xb~>Tu43(FcaCTE%5g(pD!W*h8Q2O!@^3&bGVgiW#7Q62Lo4NPd zx|J#OsS;_18oSS&{iOFz-t_EYr^G`GhOWD^mMrO1k;+hSTIhR1j9u7n2X_WX->ltG zFHrNpZU9T=PpOR$|GoCA^2wMe;n0iNxi5w{M-lZ@7Oi)@k=_EqJKNod=3}~)k@=p{ zR-|?kn;c|6UCe>0t;Ql6i@vvatdeFu$xQ#ytU0IeqY}m2tW}G9r;oIZ@{6RiShIT& z0lwHXPL6%hl%qn>XKM4y<*5MC0D1~$vYebNWPpeLU1paeLW@1+Ak=v9!~Qp{dt?Qm z%EdELL=f^cQ4u=_WuKShC`@i2I(Icr>qWFY>GII&nvi4ePalxa1lF$6*fP)gY2L@_ ztrOKI5?+-UTgXfoyw5C;=C}O#=2*1a%>pXVq(`LAWERMY8VTzkWDJ73t=RJVD2FuL zTi&h4HuOV}o{k1PF^R7_9-j$`iZYBYG49$)cJjs34;soo07j%z%+Cf5Jyk<#>9C-K zJMDeCEu{x7KJRdv>Nn1762%CvoN-*(f;VkVTnS7RJj2TwKok`b96-u+Mij`&WB^2-$byclLMO?sM-w_xsLy?jL{TS!-ow&AHaf zm}AWGjyc`|qvX|z0!@{Z36h7lE8T3f`pJg_FXX5*oVH!+rrE+BAq4v${1)n_IY)+* ztO7x1M!JbEP>>uLhImaXilQBo&p6?$bs@B=%EfZTxvI3}+_C38?wR_g zze@NdKxTlbX8i0JW|I|-*${Xs^Gx_s@lBr~*cU)mAduVyzB`4bLn?qCl?ICW8fBCb zW*`Ol^<+V2Y1I5wwkMW|tX7VrnWKO@o-+M}p=?(Rip==oVwnoSxV>8Z)e}w$^HpNpJ`JOB z2z?_!`*ZsQ0|e9jwV@3Am(wXW4zeddiJpfyaiWFkk9OB0`1cI2ftPvbkFoy!cF)id zae&z2<1OCAvb#&7sPVP*`zy#ZY?1`4O#xpA@>*lvLE3a~V-G6OuvW+%ec&k7Dd|i@ zRyteuBjur5HkqVwAIIDO+xq$n-o5;HiRVt=F;Q235&SBAE{&Gw}`pmIU zgY!~Ji?9zB_TBvZ`!=B{&fvi`NNuQY5AY$89K=%_6-`v}nFq}ZhbAMwvMV{?=};`< z@D!F}Mz6W7Yo2sX8Ihn8o#uTn)GH_M_a%B z17G3h)h?U*NLmn4#Sx8L`XtAOprcLAMRU{(ILWHt%00pvJ$PiQB z{{W;-IL4wSjhW&{o1_viQbMy+N%9dlt!Mpby<^9XI_FO}uPR?&ePSB2`^Aw~5-QJo zi-#0^jzZIpepNe@iV1UDTbQ<=rv zYJdHSf&JMI^daYDuHLKl4yWB$ZifA8DyV3DOTC6DXBlOV;{Ck1Arni1-CvH2+`lih zSyd-~UrCcETJ_P}lB&D&DI>mJM~+?G{RVE_z_O}Xw4OIc9=ck#4TSzFNbr5YV0+&p zI`Cq7Un!EGh9cXgW_RUUJLv~FW87TQuC)!gn?axP2iY`JXbu9F%BAD6o0Am9TUNP&=MEEp8E4i&>Ncs;TK5T^uMh z0ECTkfnb1024k-fNoZ>)Ff9;wIPGHqf}c$THi7X6P#zMfsPHfv0yqf3Ox25aF%$s% zw0xud1{aP28NpCfR->f3{o(D56;KW?P5#HO0fzA7o$p)5ByPmH;x@Q zbsAVdW`HZTq6ej)s{ofpW|QzcMBEqm=Z?|A-6&2mVP`@`N@6|B%i4m}fMcKbx95Jj zlhAz?B!~>Y`s3pD{YXlLR)6WRkVQXT%f(fmj(j~d)8*7GRIVGM&2OkJ+U$|z>U9O- z-@9h5S!HZ6Vb}P!?!|}K^YpPRcwY>v&eVHyd z4qeqy+109k*R|uel3u6b4K5HY6}Yout1R7eLG1t-lE=0|?H@l!Rjx$&rtRvv8jCpE zUN3M>f@P2If!G(BfYMpq8_R02sYW+WC5hF`05X?7PZsDBH<}agE7VQuIl$Xotpim$ zr*tNdo|()2>K+SY^Mc00p}=p?*Xvh0_-VlqFD`;b;t#wJnUQGwaKAxB^g%ISxZ-*> zNzA8t*Q*&&*YzOr@Uw9YhiX%fb@oP153bLS$alYgjbrIZtLcR04i!3ca{;f{(V8IE zulnT0pe@+sOrTv*(xN``tkc?xT07voKCJ2b<3s Lt1LC!-2$RI;tDeEr|ej2tFh z=R@|Cu51zj-Nx-@;@+E!l?RUQ(A{T&D4ZSC4qLYF+B3VR>zF-FEiKWTWHQG5vTeb~ zxD5id=h7+eR=7Usya@GN!`w=(;Z897w5?xXzJJv2V!S+}x?0#7eoun9U%Rtxb%>|2 z_(PFW$`(FYYP4gL(DB88z|dwEUrjRyqdJIVQ!`Msga)Gwb~RoY-_*9Mir3$AG?L&7 z${8XR99D-WACR=C*_(--RRm;^DEyv~DC4Le*z?TzZF;Czm;aawen-mq2N1$M7B?t0 z_O*JJ6J{qJ#UZ>#W-FY+3fpmKs57|A;fAuBRXUr~TBP%XPhhQg8 zdHGiK<%6X|jHFt@$$cG=#;!h(!wMb`mn!=W=95daslgbEzNy6t5>%Mx-j>3JyB8?q zpWH7b!jydQAz?vVeBVjcG!e@kP-9ySm%x31hhqrH$*yk`*8eJ#{oi%&NM3uC?K?B$ zcqD{ri13K!sY`XAKbvbnDvU_>bi#4xA9C`J#T(h3HI!QsIj5!RVHXVCL?uBmyZb44y!?H5ZijK9ay%nyMni#>TMAG+E49 zY+%h@f$DuK9p<=L+T(?`%=6l0kLL*RHIg(&@P?g7*sz)zL6~pLz#7uHD7dCkj_EoM zirq88gcs9$B4zW_h0mYuGKv4toaAuD>T%K)-NRM>E!Eh}UvC(t8<<4Um4PCStp|GM z5ApcRwlE3f>^`vJ9@Q^scbX#EGH)ci}{bH2~9#G{rEHN}!CR z+0?l_G1aK)sUC%pc#ovEFWMn=duX(*TzXYWvJTmIecnSbCu8LD^?b=WU$PE1?`D=UJ_LH1PG}9}vye;8N7yCI((91R zm;!*Fr%arDzMheXk*EOE-Z3cu|Ay-MqtBzY!^8Puc?3f5q1xK2Q}MbItmhFT4i4%N zHp!HnyjfL?h|=n3Xq)QT*2a&V2?h!*=Z%LFHvH3AZD_g_ExWDE>+|Z)RPpv8QIZXJ z!e?i`T!c4S(4?yN&oexhZ^@uZlh4ULi7fm01IGQ}M)NI&8 z%sobDq3QZ;o})!0X%*wq+M%TK=;LoGj8xS`x9c+si!MqhD&W^*mfS?4Be0R<17+4L zyI+K`yQRkt4k|`TKN1%QU`GZ7q731N2*_fLuBn*q6JRGz$smF?-9Kz`aD|6SOP_TD z(1QO3(%*Cw6WFr-{&&*K?*)%}92J8rVeQW-9Hv{)1pL^-Yur4SW&}NVoO#{s`cYHs0OVnO{+&uo4>J+V zMTKK&X$MixJ|K^3Vh~sh`P&RlI=9?L;?q%q8Zn_^yw~SM#aW#;WSM1w;FLV%{dKLU zf=;h7I|I*B9Ghi!;sas1S~=Q0#G?mgPCBHjdwH$HVGM7rN(O zy@+!BaWU?{`Pc-n$ia2E-A&)DGOF{_uzts>&Z5>R)g*@lOkWKk4{uh2$QPlJ!PIk= z$`dLUhLAuN%E_i|oAM$1gl7MwO@kdn zp&`Fq^s9);4oRBPzW8<@p%1$Yehta#3$qC&3pI=BpM@z{K;^`kYIB^j(eWkAhis(pYibZ{4B&<}XEst(nRz*QIg&!nQsP^3Xc~VB+ zQd+6jw_uBN5g)Dxw%R~2h~*%dE`^cooIYiKV|vj0u0B_7Sq+;1cys9P$fzB!@6%s~mMVa|9Slb7R8?ZH zpMP+X``f8OT=qi+OwLolRaW!%GX2mUfhmEFv*ZOfUyHVp{WTQqeXm?Mv^Jja>S~2? zUXk()w`e+B;^mNRmOU5HOOvgb;))jeu)_x0V+blWF5E&l-2ahmHFlubQ!>H5NQmG1NP5;r?RZ z6=JdKQF5Tw_(!S6l7VRs&W$?U>++9qoi{OE7(b~@4|%lf6Qc*fZA?*CHCQ1HGiS2H^sEbv2ejY-E|h zj^80Rcf^V^?N1#jGxYN-e_9b zkS-j4qr6+$MejcQVvCpdXXA{$9>yWt)4yu2b3cF@(BJ<~ANIYT{kC6-4L-v7fMRDH z0}f^*B6qsjX+-*LWZC>)lgqEA&M2q{>Oq8wC*M70?A_QM#X?Rgfh(6`LjV~La8+-% zoxvK=$}+Uqc+Cxjtj*>)#QIINE)RLdjrT^jmj*|z-#Z5EwmEwez&b`#?f&5=4f|Vj4ASJJA}A}0dR-m# zxGn>jT{j)!P!$oeBI;(?SEY|WX&|z3l2_(ZZFCE)sB4Z$PVMhQHJq-J%e;yBEpl;c zDIBnVwUCA|BWxP8odvin1IIY@$FR|9a-Xm?`?{1ai?E;~AJd}xs6)u@%LnjOZzMwv5aIr%k6L5QQIZ81~mDRG~i~;pe~bQ;@cY z)4y~q;2#F=+A6RiyYu+&=h>Pl!heB3e2bj?znz5fw``?goYAASO4dyyf_GF&^F?br4Om6{iMFq-u; zmNRGe-{%&HU6ERYJxkHNzo}2xIjSx&CQTQ}>gYA0dNm$7w>FS<>4}u=&@Q`!vvx!h z^mBCsM}RvSc3-uO&?4rtllMYON}j4Zw_3x?md)6w4)!uWo#?r$qx(`d<_=q&i+vMY z`_65CtTaT;+Ol8xvQcE@j@PeaSdG3pCW`#Os5Smz8F%~>$Iw%>Clnu2T&wIMFVsCd zu`0As^e0SbO5*VFS!kUH<--(-vX(sY<-M7)xP=31 z$x~+v345uq{fv)TreG<(wO}R6;lx)X?|c-;Dy##BHnv`KCB!w%F6Ff~x{B%7C~8CL zPlDs9>Z)`l-PxT4a-az!KrVfAm+y|#@?$trUtHsB+{{?0*``~uKUCf*_RBc&MuFkv zsuHcmwRsA=*W9TMfv-_@1U1KSE8!_ar)0XjV)PYbsyTr8|X zeHKn@H4p$NIfpl`L64YvaGL8|`*2b!4upN7G#IdmW$^8?jatVD>lP!hpBMdn5kDp3 z=g^?G|3B%7GPb#{P1BEy!?ePN^4n|ChIj{w>8jsOoTGFoGR)Q@R(DDjZ*~Sp%}H!M zU})MtaA(Ln-#Y3ajpP!7hZ+Q)p_>x49XGi(z7jyrRF{CuMb)gQuBDITiWX%DF9u1n zja0w#HGcelb1BL$pAp_oYG1gOyfWpxnw~RVg~&y@5In4`rACtc1W&=tuR!RtAM+U} zeNAj@6Le`oZm(!d#xbOPy4p3ljEdo`7(aH6!80-oaIWAMOo>H=JD+JK#mi0-Z<61S zQ{VUygQ+cFnYfSKd?hnot7gy(YSEPrAMTft(b@T#bVpFRCrE%F!q#nppJ4EG$G%PJ zw9~bwg9YwA=}ktc=EN=Nhd3yG&(^Ct2?2D6trE%bp_G-onBsk#LZe>>cM2B8D{p=2 z)b`epnZbnp4k^}dgoRgSYRXiWVOtoo(JW~H<&f2{r`h0BGiSm-Gxxr~&%TcrJv}J1 zY?B>v+)}_*@f0>_bYw;2!|9!gFj8v+h;NsBhanW31v~1YVfG zXO5hqM-B}g)qW)zYQ{eNnfozXRZHTX{AC#-PM-ocLdqMtjLK4U^e+2HZfcgtk6>@g ze3VmH%aFP+>uNrLsIKqq8J{>-vjbsE!RtB&BJ3eV7P$tYH|t2fo?i1R=F*H&|JogM2O26tck!ag;EQ4m&0DqvEZg-X}isZiJRPLiHlvHtt zym(1my;Vh|Q-!`sDC8V-%s)TwX2gNuH{C`KnSTE}x#(Y9{uloR-v9I5pJO4f3Ffyd zUgh}kw!dn?AMX_L-&=x!n4x8~tMz}oXV7@Wh_-%Pqr@N@SsXU$n{I|qc)|_~s8GBa z<-@GDDPgd=r?;*X>%bNJbxp13PVb1N%WW_95kkLSw)S;ASMuz-+uXSB xo(UZ>Xxa511XsmdfJc5?%L4t5KjG*9_^+2+=I;~6e#-uzW&dCBKA3+W_z!9C>Zkw! From f9178ab8c2673e29c493fec41c61f5a222e81357 Mon Sep 17 00:00:00 2001 From: dsbarinov1 Date: Mon, 21 Nov 2022 17:51:07 +0300 Subject: [PATCH 04/19] Add request_hook in deploy_model_on_adreno.py --- gallery/how_to/deploy_models/deploy_model_on_adreno.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gallery/how_to/deploy_models/deploy_model_on_adreno.py b/gallery/how_to/deploy_models/deploy_model_on_adreno.py index 16f9f7b56e09..ecab9c55ee21 100644 --- a/gallery/how_to/deploy_models/deploy_model_on_adreno.py +++ b/gallery/how_to/deploy_models/deploy_model_on_adreno.py @@ -24,6 +24,11 @@ Let's push them to the device and run TVM RPC Server. """ +# sphinx_gallery_start_ignore +from tvm import testing + +testing.utils.install_request_hook(depth=3) +# sphinx_gallery_end_ignore ################################################################# # TVM RPC Server From 0809fb6bffd067d7789f7f8c7968f5f3532605ba Mon Sep 17 00:00:00 2001 From: dsbarinov1 Date: Mon, 21 Nov 2022 18:02:22 +0300 Subject: [PATCH 05/19] Fix trailing newline + add license --- gallery/how_to/deploy_models/deploy_model_on_adreno.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/gallery/how_to/deploy_models/deploy_model_on_adreno.py b/gallery/how_to/deploy_models/deploy_model_on_adreno.py index ecab9c55ee21..499042b13895 100644 --- a/gallery/how_to/deploy_models/deploy_model_on_adreno.py +++ b/gallery/how_to/deploy_models/deploy_model_on_adreno.py @@ -1,4 +1,6 @@ """ +.. _tutorial-deploy-model-on-adreno: + Deploy the Pretrained Model on Adreno ======================================= **Author**: Daniil Barinov @@ -133,7 +135,7 @@ ###################################################################### # Load pretrained Pytorch model -# --------------------------- +# ----------------------------- # Create a Relay graph from a Pytorch ResNet-18 model import os import torch @@ -255,7 +257,7 @@ def convert_to_dtype(mod, dtype): ###################################################################### # Run inference -# ----------------------- +# ------------- # We now can set inputs, infer our model and get predictions as output m.set_input(input_name, tvm.nd.array(img.astype("float32"))) m.run() From 53484bebe5192436d2a4c8b184bf6a0b7b90b291 Mon Sep 17 00:00:00 2001 From: dsbarinov1 Date: Mon, 21 Nov 2022 18:16:04 +0300 Subject: [PATCH 06/19] No newline at the EOF + blanks --- .../deploy_models/deploy_model_on_adreno.py | 54 ++++++++++++------- 1 file changed, 36 insertions(+), 18 deletions(-) diff --git a/gallery/how_to/deploy_models/deploy_model_on_adreno.py b/gallery/how_to/deploy_models/deploy_model_on_adreno.py index 499042b13895..754655afa226 100644 --- a/gallery/how_to/deploy_models/deploy_model_on_adreno.py +++ b/gallery/how_to/deploy_models/deploy_model_on_adreno.py @@ -1,3 +1,20 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + """ .. _tutorial-deploy-model-on-adreno: @@ -164,13 +181,13 @@ # Precisions # ---------- # Since TVM support Mixed Precision, we need to register mixed_precision_conversion: -from tvm.relay.op import register_mixed_precision_conversion +from tvm.relay.op import register_mixed_precision_conversion conv2d_acc = "float32" @register_mixed_precision_conversion("nn.conv2d", level=11) -def conv2d_mixed_precision_rule(call_node: "relay.Call", mixed_precision_type: str): - global conv2d_acc +def conv2d_mixed_precision_rule(call_node: "relay.Call", mixed_precision_type: str): + global conv2d_acc return [ relay.transform.mixed_precision.MIXED_PRECISION_ALWAYS, conv2d_acc, @@ -178,8 +195,8 @@ def conv2d_mixed_precision_rule(call_node: "relay.Call", mixed_precision_type: ] @register_mixed_precision_conversion("nn.dense", level=11) -def conv2d_mixed_precision_rule(call_node: "relay.Call", mixed_precision_type: str): - global conv2d_acc +def conv2d_mixed_precision_rule(call_node: "relay.Call", mixed_precision_type: str): + global conv2d_acc return [ relay.transform.mixed_precision.MIXED_PRECISION_ALWAYS, conv2d_acc, @@ -188,12 +205,12 @@ def conv2d_mixed_precision_rule(call_node: "relay.Call", mixed_precision_type: ###################################################################### # and also define the conversion function itself -def convert_to_dtype(mod, dtype): +def convert_to_dtype(mod, dtype): # downcast to float16 - if dtype == "float16" or dtype == "float16_acc32": - global conv2d_acc - conv2d_acc = "float16" if dtype == "float16" else "float32" - from tvm.ir import IRModule + if dtype == "float16" or dtype == "float16_acc32": + global conv2d_acc + conv2d_acc = "float16" if dtype == "float16" else "float32" + from tvm.ir import IRModule mod = IRModule.from_expr(mod) seq = tvm.transform.Sequential( [ @@ -201,13 +218,13 @@ def convert_to_dtype(mod, dtype): relay.transform.ToMixedPrecision() ] ) - with tvm.transform.PassContext(opt_level=3): + with tvm.transform.PassContext(opt_level=3): mod = seq(mod) - return mod + return mod ###################################################################### # Let's choose "float16_acc32" for example. -dtype="float16_acc32" +dtype = "float16_acc32" mod = convert_to_dtype(mod["main"], dtype) dtype = "float32" if dtype == "float32" else "float16" @@ -226,7 +243,7 @@ def convert_to_dtype(mod, dtype): target = tvm.target.Target("opencl -device=adreno", host="llvm -mtriple=arm64-linux-android") -with tvm.transform.PassContext(opt_level=3): +with tvm.transform.PassContext(opt_level=3): lib = relay.build( mod, target=target, params=params ) @@ -268,9 +285,9 @@ def convert_to_dtype(mod, dtype): # ----------------------------------------- # This piece of code displays the top-1 and top-5 predictions, as # well as provides information about the model's performance -from os.path import join, isfile -from matplotlib import pyplot as plt -from tvm.contrib import download +from os.path import join, isfile +from matplotlib import pyplot as plt +from tvm.contrib import download # Download ImageNet categories categ_url = "https://github.com/uwsampl/web-data/raw/main/vta/models/" @@ -299,4 +316,5 @@ def convert_to_dtype(mod, dtype): assert ImageNetClassifier, "Failed ImageNet classifier validation check" print("Evaluate inference time cost...") -print(m.benchmark(ctx, number=1, repeat=10)) \ No newline at end of file +print(m.benchmark(ctx, number=1, repeat=10)) + From c427d8287fcc52b1cda9b3cedb3640bf36c95df0 Mon Sep 17 00:00:00 2001 From: dsbarinov1 Date: Mon, 21 Nov 2022 18:21:14 +0300 Subject: [PATCH 07/19] Fix request hook placing --- .../how_to/deploy_models/deploy_model_on_adreno.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/gallery/how_to/deploy_models/deploy_model_on_adreno.py b/gallery/how_to/deploy_models/deploy_model_on_adreno.py index 754655afa226..d3854b238792 100644 --- a/gallery/how_to/deploy_models/deploy_model_on_adreno.py +++ b/gallery/how_to/deploy_models/deploy_model_on_adreno.py @@ -43,12 +43,6 @@ Let's push them to the device and run TVM RPC Server. """ -# sphinx_gallery_start_ignore -from tvm import testing - -testing.utils.install_request_hook(depth=3) -# sphinx_gallery_end_ignore - ################################################################# # TVM RPC Server # -------------- @@ -125,6 +119,12 @@ # ----------------- # As an example we would use classical cat image from ImageNet +# sphinx_gallery_start_ignore +from tvm import testing + +testing.utils.install_request_hook(depth=3) +# sphinx_gallery_end_ignore + from PIL import Image from tvm.contrib.download import download_testdata from matplotlib import pyplot as plt From 0e0a8efd7079479b863ba865d1e15d37483e6e74 Mon Sep 17 00:00:00 2001 From: dsbarinov1 Date: Mon, 21 Nov 2022 18:32:00 +0300 Subject: [PATCH 08/19] Fix style --- .../deploy_models/deploy_model_on_adreno.py | 35 ++++++++----------- 1 file changed, 15 insertions(+), 20 deletions(-) diff --git a/gallery/how_to/deploy_models/deploy_model_on_adreno.py b/gallery/how_to/deploy_models/deploy_model_on_adreno.py index d3854b238792..ca9fc9a8cdc6 100644 --- a/gallery/how_to/deploy_models/deploy_model_on_adreno.py +++ b/gallery/how_to/deploy_models/deploy_model_on_adreno.py @@ -211,12 +211,10 @@ def convert_to_dtype(mod, dtype): global conv2d_acc conv2d_acc = "float16" if dtype == "float16" else "float32" from tvm.ir import IRModule + mod = IRModule.from_expr(mod) seq = tvm.transform.Sequential( - [ - relay.transform.InferType(), - relay.transform.ToMixedPrecision() - ] + [relay.transform.InferType(), relay.transform.ToMixedPrecision()] ) with tvm.transform.PassContext(opt_level=3): mod = seq(mod) @@ -226,7 +224,7 @@ def convert_to_dtype(mod, dtype): # Let's choose "float16_acc32" for example. dtype = "float16_acc32" mod = convert_to_dtype(mod["main"], dtype) -dtype = "float32" if dtype == "float32" else "float16" +dtype = "float32" if dtype == "float32" else "float16" print(mod) @@ -244,9 +242,7 @@ def convert_to_dtype(mod, dtype): target = tvm.target.Target("opencl -device=adreno", host="llvm -mtriple=arm64-linux-android") with tvm.transform.PassContext(opt_level=3): - lib = relay.build( - mod, target=target, params=params - ) + lib = relay.build(mod, target=target, params=params) ###################################################################### # Deploy the Model Remotely by RPC @@ -256,11 +252,10 @@ def convert_to_dtype(mod, dtype): rpc_tracker_host = os.environ.get("TVM_TRACKER_HOST") rpc_tracker_port = int(os.environ.get("TVM_TRACKER_PORT")) -key="android" +key = "android" tracker = rpc.connect_tracker(rpc_tracker_host, rpc_tracker_port) -remote = tracker.request( - key, priority=0, session_timeout=6000) +remote = tracker.request(key, priority=0, session_timeout=6000) temp = utils.tempdir() dso_binary = "dev_lib_cl.so" @@ -299,21 +294,21 @@ def convert_to_dtype(mod, dtype): top5 = np.flip(top_categories, axis=0)[:5] # Report top-1 classification result -print("Top-1 id: {}, class name: {}".format(top5[1-1], synset[top5[1-1]])) +print("Top-1 id: {}, class name: {}".format(top5[1 - 1], synset[top5[1 - 1]])) # Report top-5 classification results print("\nTop5 predictions: \n") -print("\t#1:", synset[top5[1-1]]) -print("\t#2:", synset[top5[2-1]]) -print("\t#3:", synset[top5[3-1]]) -print("\t#4:", synset[top5[4-1]]) -print("\t#5:", synset[top5[5-1]]) +print("\t#1:", synset[top5[1 - 1]]) +print("\t#2:", synset[top5[2 - 1]]) +print("\t#3:", synset[top5[3 - 1]]) +print("\t#4:", synset[top5[4 - 1]]) +print("\t#5:", synset[top5[5 - 1]]) print("\t", top5) ImageNetClassifier = False -for k in top_categories[-5:]: - if "cat" in synset[k]: +for k in top_categories[-5:]: + if "cat" in synset[k]: ImageNetClassifier = True -assert ImageNetClassifier, "Failed ImageNet classifier validation check" +assert ImageNetClassifier, "Failed ImageNet classifier validation check" print("Evaluate inference time cost...") print(m.benchmark(ctx, number=1, repeat=10)) From 1ca0d4937955f04ba184eb75c9366afdd88b3064 Mon Sep 17 00:00:00 2001 From: dsbarinov1 Date: Mon, 21 Nov 2022 18:45:50 +0300 Subject: [PATCH 09/19] Fix trailing --- docs/how_to/deploy/adreno.rst | 6 ++--- .../deploy_models/deploy_model_on_adreno.py | 22 +++++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/how_to/deploy/adreno.rst b/docs/how_to/deploy/adreno.rst index cefe4f132a4a..85729ff42650 100644 --- a/docs/how_to/deploy/adreno.rst +++ b/docs/how_to/deploy/adreno.rst @@ -227,9 +227,9 @@ We then can compile our model in any convinient way ToMixedPrecision pass traverse over the network and split network to clusters of ops dealing with float or float16 data types. The clusters are defined by three types of operations: -* Operations always be converted into float16 data type -* Operations which can be converted if they follow by converted cluster -* Operations never be converted to the float16 data type +- Operations always be converted into float16 data type +- Operations which can be converted if they follow by converted cluster +- Operations never be converted to the float16 data type This list is defined in the ToMixedPrecision implementation here `relay/transform/mixed_precision.py `_ and can be overridden by user diff --git a/gallery/how_to/deploy_models/deploy_model_on_adreno.py b/gallery/how_to/deploy_models/deploy_model_on_adreno.py index ca9fc9a8cdc6..813196e6ca0b 100644 --- a/gallery/how_to/deploy_models/deploy_model_on_adreno.py +++ b/gallery/how_to/deploy_models/deploy_model_on_adreno.py @@ -43,7 +43,7 @@ Let's push them to the device and run TVM RPC Server. """ -################################################################# +###################################################################### # TVM RPC Server # -------------- # To get the hash of the device use: @@ -114,7 +114,7 @@ # android 1 1 0 # ---------------------------------- -###################################################################### +################################################################# # Load a test image # ----------------- # As an example we would use classical cat image from ImageNet @@ -150,7 +150,7 @@ img = my_preprocess(img) img = np.expand_dims(img, 0) -###################################################################### +################################################################# # Load pretrained Pytorch model # ----------------------------- # Create a Relay graph from a Pytorch ResNet-18 model @@ -177,7 +177,7 @@ shape_list = [(input_name, img.shape)] mod, params = relay.frontend.from_pytorch(scripted_model, shape_list) -###################################################################### +################################################################# # Precisions # ---------- # Since TVM support Mixed Precision, we need to register mixed_precision_conversion: @@ -203,7 +203,7 @@ def conv2d_mixed_precision_rule(call_node: "relay.Call", mixed_precision_type: s mixed_precision_type, ] -###################################################################### +################################################################# # and also define the conversion function itself def convert_to_dtype(mod, dtype): # downcast to float16 @@ -220,7 +220,7 @@ def convert_to_dtype(mod, dtype): mod = seq(mod) return mod -###################################################################### +################################################################# # Let's choose "float16_acc32" for example. dtype = "float16_acc32" mod = convert_to_dtype(mod["main"], dtype) @@ -228,12 +228,12 @@ def convert_to_dtype(mod, dtype): print(mod) -###################################################################### +################################################################# # As you can see in the IR, the architecture now contains cast operations, which are # needed to convert to FP16 precision. # You can also use "float16" or "float32" precisions as other dtype options. -###################################################################### +################################################################# # Compile the model with relay # ---------------------------- # Specify Adreno target before compiling to generate texture @@ -244,7 +244,7 @@ def convert_to_dtype(mod, dtype): with tvm.transform.PassContext(opt_level=3): lib = relay.build(mod, target=target, params=params) -###################################################################### +################################################################# # Deploy the Model Remotely by RPC # -------------------------------- # Using RPC you can deploy the model from host @@ -267,7 +267,7 @@ def convert_to_dtype(mod, dtype): ctx = remote.cl(0) m = graph_executor.GraphModule(rlib["default"](ctx)) -###################################################################### +################################################################# # Run inference # ------------- # We now can set inputs, infer our model and get predictions as output @@ -275,7 +275,7 @@ def convert_to_dtype(mod, dtype): m.run() tvm_output = m.get_output(0) -###################################################################### +################################################################# # Get predictions and performance statistic # ----------------------------------------- # This piece of code displays the top-1 and top-5 predictions, as From a8783f0713b9fca729fcf10d32d1aee178ab1538 Mon Sep 17 00:00:00 2001 From: dsbarinov1 Date: Mon, 21 Nov 2022 19:05:53 +0300 Subject: [PATCH 10/19] Fix whitespaces --- docs/how_to/deploy/adreno.rst | 6 +- .../deploy_models/deploy_model_on_adreno.py | 72 ++++++++++--------- 2 files changed, 40 insertions(+), 38 deletions(-) diff --git a/docs/how_to/deploy/adreno.rst b/docs/how_to/deploy/adreno.rst index 85729ff42650..955fc229a7f6 100644 --- a/docs/how_to/deploy/adreno.rst +++ b/docs/how_to/deploy/adreno.rst @@ -229,9 +229,9 @@ ToMixedPrecision pass traverse over the network and split network to clusters of The clusters are defined by three types of operations: - Operations always be converted into float16 data type - Operations which can be converted if they follow by converted cluster -- Operations never be converted to the float16 data type -This list is defined in the ToMixedPrecision implementation here -`relay/transform/mixed_precision.py `_ +- Operations never be converted to the float16 data type +This list is defined in the ToMixedPrecision implementation here +`relay/transform/mixed_precision.py `_ and can be overridden by user In some cases, we want higher precision in accumulation than the input data. diff --git a/gallery/how_to/deploy_models/deploy_model_on_adreno.py b/gallery/how_to/deploy_models/deploy_model_on_adreno.py index 813196e6ca0b..9321342ade2b 100644 --- a/gallery/how_to/deploy_models/deploy_model_on_adreno.py +++ b/gallery/how_to/deploy_models/deploy_model_on_adreno.py @@ -44,7 +44,7 @@ """ ###################################################################### -# TVM RPC Server +# TVM RPC Server # -------------- # To get the hash of the device use: # @@ -185,43 +185,46 @@ conv2d_acc = "float32" + @register_mixed_precision_conversion("nn.conv2d", level=11) def conv2d_mixed_precision_rule(call_node: "relay.Call", mixed_precision_type: str): - global conv2d_acc - return [ - relay.transform.mixed_precision.MIXED_PRECISION_ALWAYS, - conv2d_acc, - mixed_precision_type, - ] + global conv2d_acc + return [ + relay.transform.mixed_precision.MIXED_PRECISION_ALWAYS, + conv2d_acc, + mixed_precision_type, + ] + @register_mixed_precision_conversion("nn.dense", level=11) def conv2d_mixed_precision_rule(call_node: "relay.Call", mixed_precision_type: str): - global conv2d_acc - return [ - relay.transform.mixed_precision.MIXED_PRECISION_ALWAYS, - conv2d_acc, - mixed_precision_type, - ] - + global conv2d_acc + return [ + relay.transform.mixed_precision.MIXED_PRECISION_ALWAYS, + conv2d_acc, + mixed_precision_type, + ] + + ################################################################# # and also define the conversion function itself def convert_to_dtype(mod, dtype): - # downcast to float16 - if dtype == "float16" or dtype == "float16_acc32": - global conv2d_acc - conv2d_acc = "float16" if dtype == "float16" else "float32" - from tvm.ir import IRModule - - mod = IRModule.from_expr(mod) - seq = tvm.transform.Sequential( - [relay.transform.InferType(), relay.transform.ToMixedPrecision()] - ) - with tvm.transform.PassContext(opt_level=3): - mod = seq(mod) - return mod + # downcast to float16 + if dtype == "float16" or dtype == "float16_acc32": + global conv2d_acc + conv2d_acc = "float16" if dtype == "float16" else "float32" + from tvm.ir import IRModule + + mod = IRModule.from_expr(mod) + seq = tvm.transform.Sequential( + [relay.transform.InferType(), relay.transform.ToMixedPrecision()] + ) + with tvm.transform.PassContext(opt_level=3): + mod = seq(mod) + return mod ################################################################# -# Let's choose "float16_acc32" for example. +# Let's choose "float16_acc32" for example. dtype = "float16_acc32" mod = convert_to_dtype(mod["main"], dtype) dtype = "float32" if dtype == "float32" else "float16" @@ -230,19 +233,19 @@ def convert_to_dtype(mod, dtype): ################################################################# # As you can see in the IR, the architecture now contains cast operations, which are -# needed to convert to FP16 precision. +# needed to convert to FP16 precision. # You can also use "float16" or "float32" precisions as other dtype options. ################################################################# # Compile the model with relay # ---------------------------- -# Specify Adreno target before compiling to generate texture -# leveraging kernels and get all the benefits of textures +# Specify Adreno target before compiling to generate texture +# leveraging kernels and get all the benefits of textures target = tvm.target.Target("opencl -device=adreno", host="llvm -mtriple=arm64-linux-android") with tvm.transform.PassContext(opt_level=3): - lib = relay.build(mod, target=target, params=params) + lib = relay.build(mod, target=target, params=params) ################################################################# # Deploy the Model Remotely by RPC @@ -306,10 +309,9 @@ def convert_to_dtype(mod, dtype): print("\t", top5) ImageNetClassifier = False for k in top_categories[-5:]: - if "cat" in synset[k]: - ImageNetClassifier = True + if "cat" in synset[k]: + ImageNetClassifier = True assert ImageNetClassifier, "Failed ImageNet classifier validation check" print("Evaluate inference time cost...") print(m.benchmark(ctx, number=1, repeat=10)) - From 29f84d25464379a3331a9c299513f3f941c3ac03 Mon Sep 17 00:00:00 2001 From: dsbarinov1 Date: Mon, 21 Nov 2022 19:13:03 +0300 Subject: [PATCH 11/19] Fix whitespaces v2 --- gallery/how_to/deploy_models/deploy_model_on_adreno.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gallery/how_to/deploy_models/deploy_model_on_adreno.py b/gallery/how_to/deploy_models/deploy_model_on_adreno.py index 9321342ade2b..350c33418305 100644 --- a/gallery/how_to/deploy_models/deploy_model_on_adreno.py +++ b/gallery/how_to/deploy_models/deploy_model_on_adreno.py @@ -39,7 +39,7 @@ `Deploy to Adreno GPU `_ -After the build section there should be two files in *build* directory «libtvm_runtime.so» and «tvm_rpc». +After the build section there should be two files in *build* directory «libtvm_runtime.so» and «tvm_rpc». Let's push them to the device and run TVM RPC Server. """ @@ -223,6 +223,7 @@ def convert_to_dtype(mod, dtype): mod = seq(mod) return mod + ################################################################# # Let's choose "float16_acc32" for example. dtype = "float16_acc32" From edef64066f4a4ce9ed991ea4a506cb34109c0d6a Mon Sep 17 00:00:00 2001 From: dsbarinov1 Date: Mon, 21 Nov 2022 19:23:40 +0300 Subject: [PATCH 12/19] Add newline at adreno.rst EOF --- docs/how_to/deploy/adreno.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/how_to/deploy/adreno.rst b/docs/how_to/deploy/adreno.rst index 955fc229a7f6..826213c4daef 100644 --- a/docs/how_to/deploy/adreno.rst +++ b/docs/how_to/deploy/adreno.rst @@ -310,4 +310,4 @@ From this point onwards, we can compile our model as normal ) .. |High-level overview of the Adreno A5x architecture for OpenCL| image:: https://raw.githubusercontent.com/tlc-pack/web-data/main/images/how-to/adreno_architecture.png -.. |Android deployment pipeline| image:: https://raw.githubusercontent.com/tlc-pack/web-data/main/images/how-to/android_deployment_pipeline.jpg \ No newline at end of file +.. |Android deployment pipeline| image:: https://raw.githubusercontent.com/tlc-pack/web-data/main/images/how-to/android_deployment_pipeline.jpg From 632fed6138eb45816957cbada22b9cb3079e245b Mon Sep 17 00:00:00 2001 From: dsbarinov1 Date: Mon, 21 Nov 2022 19:36:53 +0300 Subject: [PATCH 13/19] Add license to adreno.rst --- docs/how_to/deploy/adreno.rst | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/docs/how_to/deploy/adreno.rst b/docs/how_to/deploy/adreno.rst index 826213c4daef..5b7a6ae258bd 100644 --- a/docs/how_to/deploy/adreno.rst +++ b/docs/how_to/deploy/adreno.rst @@ -1,3 +1,20 @@ +.. Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + +.. http://www.apache.org/licenses/LICENSE-2.0 + +.. Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. + Deploy to Adreno GPU ======================================= From 4a95c819be2b0dff09380a7bff5d63f8237c32d9 Mon Sep 17 00:00:00 2001 From: dsbarinov1 Date: Wed, 23 Nov 2022 14:38:41 +0300 Subject: [PATCH 14/19] Remove sphinx 'autosectionlabel' extension + modify cross-references in docs to work without this extension --- docs/conf.py | 1 - docs/how_to/deploy/adreno.rst | 12 +++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index c5f4d7205136..b4982f14c049 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -89,7 +89,6 @@ def git_describe_version(original_version): extensions = [ "sphinx.ext.autodoc", "sphinx.ext.autosummary", - "sphinx.ext.autosectionlabel", "sphinx.ext.intersphinx", "sphinx.ext.napoleon", "sphinx.ext.mathjax", diff --git a/docs/how_to/deploy/adreno.rst b/docs/how_to/deploy/adreno.rst index 5b7a6ae258bd..f7ef8ac26e43 100644 --- a/docs/how_to/deploy/adreno.rst +++ b/docs/how_to/deploy/adreno.rst @@ -31,11 +31,13 @@ The Adreno GPU accelerates the rendering of complex geometries to deliver high-performance graphics and a rich user experience with low power consumption. -This guide will demonstrate :ref:`the benefits of using textures with Adreno`, -how to :ref:`build TVM with OpenCL` (needed by Adreno devices) and TVM RPC -enabled. It will also provide :ref:`example code` to better understand the differences in compiling and deploying models +This guide will demonstrate :ref:`the benefits of using textures with Adreno`, +how to :ref:`build TVM with OpenCL` (needed by Adreno devices) and TVM RPC +enabled. It will also provide :ref:`example code` to better understand the differences in compiling and deploying models for Adreno devices. +.. _advantages_of_the_textures: + Advantages of the Textures -------------------------- @@ -63,6 +65,8 @@ Reasons of using textures: Overall, with textures, it is possible to achieve a significant performance boost compared to OpenCL buffer based solutions. +.. _building_tvm_for_adreno: + Building TVM for Adreno ----------------------- @@ -97,6 +101,8 @@ where **N** is the number of cores available on your *CPU*. At this stage you have built TVM for Adreno. +.. _build_and_deploy_model_for_adreno: + Build and deploy model for Adreno --------------------------------- From 039df072c65f2b16e4ec54a91eb165091de72b99 Mon Sep 17 00:00:00 2001 From: dsbarinov1 Date: Wed, 23 Nov 2022 18:46:15 +0300 Subject: [PATCH 15/19] Set default values to tracker_host and tracker_port --- gallery/how_to/deploy_models/deploy_model_on_adreno.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gallery/how_to/deploy_models/deploy_model_on_adreno.py b/gallery/how_to/deploy_models/deploy_model_on_adreno.py index 350c33418305..4e26f0ce0fe5 100644 --- a/gallery/how_to/deploy_models/deploy_model_on_adreno.py +++ b/gallery/how_to/deploy_models/deploy_model_on_adreno.py @@ -254,8 +254,8 @@ def convert_to_dtype(mod, dtype): # Using RPC you can deploy the model from host # machine to the remote Adreno device -rpc_tracker_host = os.environ.get("TVM_TRACKER_HOST") -rpc_tracker_port = int(os.environ.get("TVM_TRACKER_PORT")) +rpc_tracker_host = os.environ.get("TVM_TRACKER_HOST", "127.0.0.1") +rpc_tracker_port = int(os.environ.get("TVM_TRACKER_PORT", 9190)) key = "android" tracker = rpc.connect_tracker(rpc_tracker_host, rpc_tracker_port) From 12e536299d9665da97d5cde575589deed40b83b3 Mon Sep 17 00:00:00 2001 From: dsbarinov1 Date: Wed, 23 Nov 2022 20:48:44 +0300 Subject: [PATCH 16/19] Add local_demo to be able to autogenerate docs --- .../deploy_models/deploy_model_on_adreno.py | 45 ++++++++++++++++--- 1 file changed, 39 insertions(+), 6 deletions(-) diff --git a/gallery/how_to/deploy_models/deploy_model_on_adreno.py b/gallery/how_to/deploy_models/deploy_model_on_adreno.py index 4e26f0ce0fe5..f23a19299528 100644 --- a/gallery/how_to/deploy_models/deploy_model_on_adreno.py +++ b/gallery/how_to/deploy_models/deploy_model_on_adreno.py @@ -242,8 +242,28 @@ def convert_to_dtype(mod, dtype): # ---------------------------- # Specify Adreno target before compiling to generate texture # leveraging kernels and get all the benefits of textures +# Note: This generated example running on our x86 server for demonstration. +# If running it on the Android device, we need to +# specify its instruction set. Set :code:`local_demo` to False if you want +# to run this tutorial with a real device. -target = tvm.target.Target("opencl -device=adreno", host="llvm -mtriple=arm64-linux-android") +local_demo = True + +# by default on CPU target will execute. +# select 'cpu', 'opencl' and 'vulkan' +test_target = 'cpu' + +# Change target configuration. +# Run `adb shell cat /proc/cpuinfo` to find the arch. +arch = "arm64" +target = tvm.target.Target("llvm -mtriple=%s-linux-android" % arch) + +if local_demo: + target = tvm.target.Target("llvm") +elif test_target == "opencl": + target = tvm.target.Target("opencl", host=target) +elif test_target == "vulkan": + target = tvm.target.Target("vulkan", host=target) with tvm.transform.PassContext(opt_level=3): lib = relay.build(mod, target=target, params=params) @@ -258,18 +278,31 @@ def convert_to_dtype(mod, dtype): rpc_tracker_port = int(os.environ.get("TVM_TRACKER_PORT", 9190)) key = "android" -tracker = rpc.connect_tracker(rpc_tracker_host, rpc_tracker_port) -remote = tracker.request(key, priority=0, session_timeout=6000) +if local_demo: + remote = rpc.LocalSession() +else: + tracker = rpc.connect_tracker(rpc_tracker_host, rpc_tracker_port) + # When running a heavy model, we should increase the `session_timeout` + remote = tracker.request(key, priority=0, session_timeout=60) + +if local_demo: + dev = remote.cpu(0) +elif test_target == "opencl": + dev = remote.cl(0) +elif test_target == "vulkan": + dev = remote.vulkan(0) +else: + dev = remote.cpu(0) temp = utils.tempdir() dso_binary = "dev_lib_cl.so" dso_binary_path = temp.relpath(dso_binary) -lib.export_library(dso_binary_path, ndk.create_shared) +fcompile = ndk.create_shared if not local_demo else None +lib.export_library(dso_binary_path, fcompile) remote_path = "/data/local/tmp/" + dso_binary remote.upload(dso_binary_path) rlib = remote.load_module(dso_binary) -ctx = remote.cl(0) -m = graph_executor.GraphModule(rlib["default"](ctx)) +m = graph_executor.GraphModule(rlib["default"](dev)) ################################################################# # Run inference From 8e45ad4a6d7ec9069458bb510a13471efa0d3902 Mon Sep 17 00:00:00 2001 From: dsbarinov1 Date: Thu, 24 Nov 2022 03:09:10 +0300 Subject: [PATCH 17/19] Fix quotes --- gallery/how_to/deploy_models/deploy_model_on_adreno.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gallery/how_to/deploy_models/deploy_model_on_adreno.py b/gallery/how_to/deploy_models/deploy_model_on_adreno.py index f23a19299528..2cad0b4cb49b 100644 --- a/gallery/how_to/deploy_models/deploy_model_on_adreno.py +++ b/gallery/how_to/deploy_models/deploy_model_on_adreno.py @@ -251,7 +251,7 @@ def convert_to_dtype(mod, dtype): # by default on CPU target will execute. # select 'cpu', 'opencl' and 'vulkan' -test_target = 'cpu' +test_target = "cpu" # Change target configuration. # Run `adb shell cat /proc/cpuinfo` to find the arch. From 81a60ce1349ff3d0ca9a3872b97119600e315b98 Mon Sep 17 00:00:00 2001 From: dsbarinov1 Date: Thu, 24 Nov 2022 13:56:26 +0300 Subject: [PATCH 18/19] Fix benchmark --- gallery/how_to/deploy_models/deploy_model_on_adreno.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gallery/how_to/deploy_models/deploy_model_on_adreno.py b/gallery/how_to/deploy_models/deploy_model_on_adreno.py index 2cad0b4cb49b..d6ed1f1f99a3 100644 --- a/gallery/how_to/deploy_models/deploy_model_on_adreno.py +++ b/gallery/how_to/deploy_models/deploy_model_on_adreno.py @@ -348,4 +348,4 @@ def convert_to_dtype(mod, dtype): assert ImageNetClassifier, "Failed ImageNet classifier validation check" print("Evaluate inference time cost...") -print(m.benchmark(ctx, number=1, repeat=10)) +print(m.benchmark(dev, number=1, repeat=10)) From 98ee8b589478bf575257da6ee6a61645453940f6 Mon Sep 17 00:00:00 2001 From: dsbarinov1 Date: Fri, 25 Nov 2022 14:43:13 +0300 Subject: [PATCH 19/19] . --- docs/how_to/deploy/adreno.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/how_to/deploy/adreno.rst b/docs/how_to/deploy/adreno.rst index f7ef8ac26e43..af613aa5cb21 100644 --- a/docs/how_to/deploy/adreno.rst +++ b/docs/how_to/deploy/adreno.rst @@ -78,8 +78,8 @@ process of building TVM for Android, please refer to these instructions: `TVM RPC Server `_. -Alternatively, to build a TVM via docker using OpenCL-Headers and set-up -with Android TVM RPC, refer to this guide: `Deploy the Pretrained Model on Android `_. +Since there are many required packages for Android, you can use the official Docker Image to build TVM. +For more information refer to this guide: `Deploy the Pretrained Model on Android `_. **Prerequisites**: Android NDK and Android Debug Bridge must be installed, the desired device must have OpenCL support and Android part of TVM must be built: @@ -94,7 +94,7 @@ folder of TVM: mkdir build_android cd build_android - cmake .. -DUSE_OPENCL=ON -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DANDROID_NATIVE_API_LEVEL=android-28 -DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=ON -DANDROID_STL=c++_static -DUSE_CPP_RPC=ON + cmake .. -DUSE_OPENCL=ON -DUSE_MICRO=OFF -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DANDROID_NATIVE_API_LEVEL=android-28 -DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=ON -DANDROID_STL=c++_static -DUSE_CPP_RPC=ON make -jN tvm_runtime tvm_rpc where **N** is the number of cores available on your *CPU*.