Skip to content

Instantly share code, notes, and snippets.

@hsugawa8651
Created March 21, 2019 04:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hsugawa8651/557a9237653962defeb8f55d9922aedb to your computer and use it in GitHub Desktop.
Save hsugawa8651/557a9237653962defeb8f55d9922aedb to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 68
},
"colab_type": "code",
"id": "u8woq-Zbu_SK",
"outputId": "50009bf2-3bc9-47c1-cb14-562c29510776"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Juliaが動いた。Colabで動いた\n",
"Juliaが動いた。Colabで動いた\n",
"Juliaが動いた。Colabで動いた\n"
]
}
],
"source": [
"for i in 1:3\n",
" println(\"Juliaが動いた。Colabで動いた\")\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 153
},
"colab_type": "code",
"id": "E1aF8kDksOb3",
"outputId": "23f5219d-fa12-4d15-d464-519c205671fd"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Julia Version 1.0.0\n",
"Commit 5d4eaca0c9 (2018-08-08 20:58 UTC)\n",
"Platform Info:\n",
" OS: Linux (x86_64-pc-linux-gnu)\n",
" CPU: Intel(R) Xeon(R) CPU @ 2.30GHz\n",
" WORD_SIZE: 64\n",
" LIBM: libopenlibm\n",
" LLVM: libLLVM-6.0.0 (ORCJIT, haswell)\n"
]
}
],
"source": [
"versioninfo()"
]
},
{
"cell_type": "code",
"execution_count": 0,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "4u4Ei0NcuUne"
},
"outputs": [],
"source": [
"using Pkg"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 136
},
"colab_type": "code",
"id": "7kGU6hhEuekR",
"outputId": "07fc04d1-191a-4f77-bdf2-fef75418f745"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[32m\u001b[1m Updating\u001b[22m\u001b[39m registry at `~/.julia/registries/General`\n",
"\u001b[32m\u001b[1m Updating\u001b[22m\u001b[39m git-repo `https://github.com/JuliaRegistries/General.git`\n",
"\u001b[?25l\u001b[2K\u001b[?25h\u001b[32m\u001b[1m Resolving\u001b[22m\u001b[39m package versions...\n",
"\u001b[32m\u001b[1m Updating\u001b[22m\u001b[39m `~/.julia/environments/v1.0/Project.toml`\n",
"\u001b[90m [no changes]\u001b[39m\n",
"\u001b[32m\u001b[1m Updating\u001b[22m\u001b[39m `~/.julia/environments/v1.0/Manifest.toml`\n",
"\u001b[90m [no changes]\u001b[39m\n"
]
}
],
"source": [
"Pkg.add(\"PyPlot\")"
]
},
{
"cell_type": "code",
"execution_count": 0,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "A-_QyCMoume_"
},
"outputs": [],
"source": [
"using PyPlot"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 467
},
"colab_type": "code",
"id": "70amifiGuuI4",
"outputId": "8a2df0bb-e5e3-4d28-cbd3-c68c9b350727"
},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"Figure(PyObject <Figure size 640x480 with 1 Axes>)"
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"1-element Array{PyCall.PyObject,1}:\n",
" PyObject <matplotlib.lines.Line2D object at 0x7eff07e255c0>"
]
},
"execution_count": 6,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"plot([1,3,2])"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "rfANTrGEu2Pt"
},
"source": [
"# Prelude"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 85
},
"colab_type": "code",
"id": "KEdr5eNXt8SQ",
"outputId": "3d0d11b9-c5d0-4baa-ada5-2976447c440b"
},
"outputs": [
{
"data": {
"text/plain": [
"3×4 Array{Int64,2}:\n",
" 1 4 7 10\n",
" 2 5 8 11\n",
" 3 6 9 12"
]
},
"execution_count": 7,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"a=reshape( collect(1:12), 3, 4)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"colab_type": "code",
"id": "iQXcvJJUu04_",
"outputId": "242fb643-9529-4e13-87b0-d0714693ef95"
},
"outputs": [
{
"data": {
"text/plain": [
"(3, 4)"
]
},
"execution_count": 8,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"size(a)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 221
},
"colab_type": "code",
"id": "WEDgyc5Uus5Z",
"outputId": "821e7042-bbe5-442d-f430-ed93182421e6"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(ij, a[ij]) = (1, 1)\n",
"(ij, a[ij]) = (2, 2)\n",
"(ij, a[ij]) = (3, 3)\n",
"(ij, a[ij]) = (4, 4)\n",
"(ij, a[ij]) = (5, 5)\n",
"(ij, a[ij]) = (6, 6)\n",
"(ij, a[ij]) = (7, 7)\n",
"(ij, a[ij]) = (8, 8)\n",
"(ij, a[ij]) = (9, 9)\n",
"(ij, a[ij]) = (10, 10)\n",
"(ij, a[ij]) = (11, 11)\n",
"(ij, a[ij]) = (12, 12)\n"
]
}
],
"source": [
"for ij in eachindex(a)\n",
" @show ij, a[ij]\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 221
},
"colab_type": "code",
"id": "NTQ42omQudV7",
"outputId": "545aa38e-9d64-4379-8244-1ca7b627051c"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(ij, a[ij]) = (1, 1)\n",
"(ij, a[ij]) = (2, 2)\n",
"(ij, a[ij]) = (3, 3)\n",
"(ij, a[ij]) = (4, 4)\n",
"(ij, a[ij]) = (5, 5)\n",
"(ij, a[ij]) = (6, 6)\n",
"(ij, a[ij]) = (7, 7)\n",
"(ij, a[ij]) = (8, 8)\n",
"(ij, a[ij]) = (9, 9)\n",
"(ij, a[ij]) = (10, 10)\n",
"(ij, a[ij]) = (11, 11)\n",
"(ij, a[ij]) = (12, 12)\n"
]
}
],
"source": [
"for ij in LinearIndices(CartesianIndices(a))\n",
" @show ij, a[ij]\n",
"end"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "O8TAoyGCvb3J"
},
"source": [
"# ex1"
]
},
{
"cell_type": "code",
"execution_count": 0,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "9zl73HaXub7K"
},
"outputs": [],
"source": [
"using Random"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 102
},
"colab_type": "code",
"id": "Rl8L5iknvnys",
"outputId": "731981f7-9f72-4d90-e724-60faa4abf33f"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[32m\u001b[1m Resolving\u001b[22m\u001b[39m package versions...\n",
"\u001b[32m\u001b[1m Updating\u001b[22m\u001b[39m `~/.julia/environments/v1.0/Project.toml`\n",
"\u001b[90m [no changes]\u001b[39m\n",
"\u001b[32m\u001b[1m Updating\u001b[22m\u001b[39m `~/.julia/environments/v1.0/Manifest.toml`\n",
"\u001b[90m [no changes]\u001b[39m\n"
]
}
],
"source": [
"Pkg.add(\"BenchmarkTools\")"
]
},
{
"cell_type": "code",
"execution_count": 0,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "a1L7VJEKvypf"
},
"outputs": [],
"source": [
"using BenchmarkTools\n",
"using Statistics"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"colab_type": "code",
"id": "I8BVA-GIuMiC",
"outputId": "b2fc198c-c223-416f-eb13-3c3512f243da"
},
"outputs": [
{
"data": {
"text/plain": [
"make_uvw (generic function with 2 methods)"
]
},
"execution_count": 14,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"function make_uvw(nx,ny,rng = Random.MersenneTwister(1234))\n",
" u=rand(nx,ny)\n",
" v=rand(Float64, size(u))\n",
" w=similar(u);\n",
" return u,v,w\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"colab_type": "code",
"id": "iaw9_56NvgMc",
"outputId": "bdab15b4-5215-482e-f2b9-fb7b4d1734c1"
},
"outputs": [
{
"data": {
"text/plain": [
"ex1_double_loop_ij (generic function with 4 methods)"
]
},
"execution_count": 15,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"function ex1_double_loop_ij(u,v,w, nx=size(u,1),ny=size(u,2), alpha=0.3)\n",
" # @assert size(u)==(nx,ny)\n",
" # @assert size(v)==(nx,ny)\n",
" # @assert size(w)==(nx,ny)\n",
" @inbounds for i in 1:nx\n",
" @simd for j in 1:ny\n",
" w[i,j]=u[i,j]+v[i,j]*alpha\n",
" end\n",
" end\n",
" 0\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"colab_type": "code",
"id": "x0_PW-ZXvjlW",
"outputId": "ba733062-cd67-4e4c-c176-8e23e99bdf02"
},
"outputs": [
{
"data": {
"text/plain": [
"ex1_double_loop_ji (generic function with 4 methods)"
]
},
"execution_count": 16,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"function ex1_double_loop_ji(u,v,w, nx=size(u,1),ny=size(u,2), alpha=0.3)\n",
" # @assert size(u)==(nx,ny)\n",
" # @assert size(v)==(nx,ny)\n",
" # @assert size(w)==(nx,ny)\n",
" @inbounds for j in 1:ny\n",
" @simd for i in 1:nx\n",
" w[i,j]=u[i,j]+v[i,j]*alpha\n",
" end\n",
" end\n",
" 0\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 0,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "Ncksf0Q9vmRc"
},
"outputs": [],
"source": [
"rng=Random.MersenneTwister(12345);"
]
},
{
"cell_type": "code",
"execution_count": 0,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "GMd5d0lLv43r"
},
"outputs": [],
"source": [
"nx1=200; ny1=100;"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 204
},
"colab_type": "code",
"id": "swLM_DPWv8R9",
"outputId": "cdbf82a4-1f54-4b75-c387-31d64560b136"
},
"outputs": [
{
"data": {
"text/plain": [
"BenchmarkTools.Trial: \n",
" memory estimate: 0 bytes\n",
" allocs estimate: 0\n",
" --------------\n",
" minimum time: 51.452 μs (0.00% GC)\n",
" median time: 63.237 μs (0.00% GC)\n",
" mean time: 66.718 μs (0.00% GC)\n",
" maximum time: 2.000 ms (0.00% GC)\n",
" --------------\n",
" samples: 10000\n",
" evals/sample: 1"
]
},
"execution_count": 19,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"@benchmark ex1_double_loop_ij(u,v,w, $nx1, $ny1) setup=( (u,v,w)=make_uvw($nx1,$ny1, $rng))"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 204
},
"colab_type": "code",
"id": "GzWrBywav_fT",
"outputId": "e324b0da-9fcf-4485-cf8a-035bdc9f3cbe"
},
"outputs": [
{
"data": {
"text/plain": [
"BenchmarkTools.Trial: \n",
" memory estimate: 0 bytes\n",
" allocs estimate: 0\n",
" --------------\n",
" minimum time: 10.536 μs (0.00% GC)\n",
" median time: 12.498 μs (0.00% GC)\n",
" mean time: 13.228 μs (0.00% GC)\n",
" maximum time: 474.144 μs (0.00% GC)\n",
" --------------\n",
" samples: 10000\n",
" evals/sample: 4"
]
},
"execution_count": 20,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"@benchmark ex1_double_loop_ji(u,v,w, $nx1, $ny1) setup=( (u,v,w)=make_uvw($nx1,$ny1, $rng))"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"colab_type": "code",
"id": "CI4OCKFSwGgL",
"outputId": "bdfd3e6c-1e80-485a-b28e-24ae17242068"
},
"outputs": [
{
"data": {
"text/plain": [
"ex1_eachindex (generic function with 4 methods)"
]
},
"execution_count": 21,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"function ex1_eachindex(u,v,w, nx=size(u,1), ny=size(u,2), alpha=0.3)\n",
" # @assert size(u)==(nx,ny)\n",
" # @assert size(v)==(nx,ny)\n",
" # @assert size(w)==(nx,ny)\n",
" @inbounds @simd for ij in eachindex(u)\n",
" w[ij]=u[ij]+v[ij]*alpha\n",
" end\n",
" 0\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 204
},
"colab_type": "code",
"id": "9zk-Snm5wLNi",
"outputId": "9fbd69ae-f24e-4ecc-e929-df101201c1a0"
},
"outputs": [
{
"data": {
"text/plain": [
"BenchmarkTools.Trial: \n",
" memory estimate: 0 bytes\n",
" allocs estimate: 0\n",
" --------------\n",
" minimum time: 8.945 μs (0.00% GC)\n",
" median time: 10.329 μs (0.00% GC)\n",
" mean time: 10.829 μs (0.00% GC)\n",
" maximum time: 48.689 μs (0.00% GC)\n",
" --------------\n",
" samples: 10000\n",
" evals/sample: 5"
]
},
"execution_count": 22,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"@benchmark ex1_eachindex(u,v,w, $nx1, $ny1) setup=( (u,v,w)=make_uvw($nx1,$ny1, $rng))"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"colab_type": "code",
"id": "pyv3gkhBwPlZ",
"outputId": "21992f8e-ae3e-43f0-d20b-47911f73ea11"
},
"outputs": [
{
"data": {
"text/plain": [
"ex1_CartesianIndices (generic function with 4 methods)"
]
},
"execution_count": 23,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"function ex1_CartesianIndices(u,v,w, nx=size(u,1),ny=size(u,2), alpha=0.3)\n",
" # @assert size(u)==(nx,ny)\n",
" # @assert size(v)==(nx,ny)\n",
" # @assert size(w)==(nx,ny)\n",
" @inbounds @simd for ij in CartesianIndices(u)\n",
" w[ij]=u[ij]+v[ij]*alpha\n",
" end\n",
" 0\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 204
},
"colab_type": "code",
"id": "dVnSb_5owS0H",
"outputId": "82d623ac-6a9b-466e-b519-c1db869e1029"
},
"outputs": [
{
"data": {
"text/plain": [
"BenchmarkTools.Trial: \n",
" memory estimate: 0 bytes\n",
" allocs estimate: 0\n",
" --------------\n",
" minimum time: 9.372 μs (0.00% GC)\n",
" median time: 11.245 μs (0.00% GC)\n",
" mean time: 11.764 μs (0.00% GC)\n",
" maximum time: 41.984 μs (0.00% GC)\n",
" --------------\n",
" samples: 10000\n",
" evals/sample: 5"
]
},
"execution_count": 24,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"@benchmark ex1_CartesianIndices(u,v,w, $nx1, $ny1) setup=( (u,v,w)=make_uvw($nx1,$ny1, $rng))"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"colab_type": "code",
"id": "uH9W4VlmwWAz",
"outputId": "69cc75f5-110e-4388-a75a-2c4039322c55"
},
"outputs": [
{
"data": {
"text/plain": [
"ex1_LinearIndices_CartesianIndices (generic function with 4 methods)"
]
},
"execution_count": 25,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"function ex1_LinearIndices_CartesianIndices(u,v,w, nx=size(u,1),ny=size(u,2), alpha=0.3)\n",
" # @assert size(u)==(nx,ny)\n",
" # @assert size(v)==(nx,ny)\n",
" # @assert size(w)==(nx,ny)\n",
" @inbounds @simd for ij in LinearIndices(CartesianIndices(u))\n",
" w[ij]=u[ij]+v[ij]*alpha\n",
" end\n",
" 0\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 204
},
"colab_type": "code",
"id": "bGNWzDkXwZBp",
"outputId": "b6b91bf5-6e7e-40ad-bcbb-1cc5618a1eeb"
},
"outputs": [
{
"data": {
"text/plain": [
"BenchmarkTools.Trial: \n",
" memory estimate: 0 bytes\n",
" allocs estimate: 0\n",
" --------------\n",
" minimum time: 9.105 μs (0.00% GC)\n",
" median time: 10.437 μs (0.00% GC)\n",
" mean time: 11.001 μs (0.00% GC)\n",
" maximum time: 452.964 μs (0.00% GC)\n",
" --------------\n",
" samples: 10000\n",
" evals/sample: 5"
]
},
"execution_count": 26,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"@benchmark ex1_LinearIndices_CartesianIndices(u,v,w, $nx1, $ny1) setup=( (u,v,w)=make_uvw($nx1,$ny1, $rng))"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"colab_type": "code",
"id": "L-CXfjdiwb6J",
"outputId": "bc83334f-5052-4ce9-b6dd-9c5b8f8ce8bc"
},
"outputs": [
{
"data": {
"text/plain": [
"ex1_with_matrix (generic function with 4 methods)"
]
},
"execution_count": 27,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"function ex1_with_matrix(u,v,w, nx=size(u,1),ny=size(u,2), alpha=0.3)\n",
" # @assert size(u)==(nx,ny)\n",
" # @assert size(v)==(nx,ny)\n",
" # @assert size(w)==(nx,ny)\n",
" w=u+v*alpha\n",
" 0\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 204
},
"colab_type": "code",
"id": "bM9s6d_CwfOh",
"outputId": "0f1554d3-07c2-44ee-d7c4-df65be5a0cf2"
},
"outputs": [
{
"data": {
"text/plain": [
"BenchmarkTools.Trial: \n",
" memory estimate: 312.66 KiB\n",
" allocs estimate: 4\n",
" --------------\n",
" minimum time: 37.794 μs (0.00% GC)\n",
" median time: 51.663 μs (0.00% GC)\n",
" mean time: 66.438 μs (18.64% GC)\n",
" maximum time: 20.115 ms (99.51% GC)\n",
" --------------\n",
" samples: 10000\n",
" evals/sample: 1"
]
},
"execution_count": 28,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"@benchmark ex1_with_matrix(u,v,w, $nx1,$ny1) setup=( (u,v,w)=make_uvw($nx1,$ny1, $rng))"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"colab_type": "code",
"id": "1Up18capwiWR",
"outputId": "f4d36c65-1129-4cc1-b7d0-6c2700d5a34f"
},
"outputs": [
{
"data": {
"text/plain": [
"ex1_with_dot_matrix (generic function with 4 methods)"
]
},
"execution_count": 29,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"function ex1_with_dot_matrix(u,v,w, nx=size(u,1),ny=size(u,2), alpha=0.3)\n",
" # @assert size(u)==(nx,ny)\n",
" # @assert size(v)==(nx,ny)\n",
" # @assert size(w)==(nx,ny)\n",
" @. w=u+v*alpha\n",
" 0\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 204
},
"colab_type": "code",
"id": "hVme1gdtwktW",
"outputId": "312eb884-43c6-473e-cef6-35ddc42514b5"
},
"outputs": [
{
"data": {
"text/plain": [
"BenchmarkTools.Trial: \n",
" memory estimate: 0 bytes\n",
" allocs estimate: 0\n",
" --------------\n",
" minimum time: 10.588 μs (0.00% GC)\n",
" median time: 12.857 μs (0.00% GC)\n",
" mean time: 13.635 μs (0.00% GC)\n",
" maximum time: 503.366 μs (0.00% GC)\n",
" --------------\n",
" samples: 10000\n",
" evals/sample: 4"
]
},
"execution_count": 30,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"@benchmark ex1_with_dot_matrix(u,v,w, $nx1,$ny1) setup=( (u,v,w)=make_uvw($nx1,$ny1, $rng))"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 102
},
"colab_type": "code",
"id": "f-TBeNIywnTs",
"outputId": "6caa3b45-8b5b-42ab-aefb-737b214b1f58"
},
"outputs": [
{
"data": {
"text/plain": [
"14-element BenchmarkTools.BenchmarkGroup:\n",
" tags: []\n",
" (\"ex1_CartesianIndices\", \"nx1=100\", \"ny1=200\") => Trial(11.073 μs)\n",
" (\"ex1_with_matrix\", \"nx1=100\", \"ny1=200\") => Trial(40.790 μs)\n",
""
]
},
"execution_count": 31,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"suite = BenchmarkGroup()\n",
"for (nx1,ny1) in [(200,100),(100,200)]\n",
" for f in [\n",
" :ex1_double_loop_ij,\n",
" :ex1_double_loop_ji,\n",
" :ex1_eachindex,\n",
" :ex1_CartesianIndices,\n",
" :ex1_LinearIndices_CartesianIndices,\n",
" :ex1_with_matrix,\n",
" :ex1_with_dot_matrix ]\n",
" suite[string(f), \"nx1=\"*string(nx1), \"ny1=\"*string(ny1)] = @benchmarkable $(f)(u,v,w,$nx1,$ny1) setup=( (u,v,w)=make_uvw($nx1,$ny1, $rng))\n",
" end\n",
"end\n",
"tune!(suite);\n",
"results = run(suite)"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 153
},
"colab_type": "code",
"id": "QWeuO4mpwq_n",
"outputId": "21404a25-f790-4372-aae5-ffee9b318825"
},
"outputs": [
{
"data": {
"text/plain": [
"7-element Array{Any,1}:\n",
" Pair{Any,Any}((\"ex1_double_loop_ji\", \"nx1=200\", \"ny1=100\"), Trial(10.854 μs)) \n",
" Pair{Any,Any}((\"ex1_CartesianIndices\", \"nx1=200\", \"ny1=100\"), Trial(9.754 μs)) \n",
" Pair{Any,Any}((\"ex1_double_loop_ij\", \"nx1=200\", \"ny1=100\"), Trial(51.801 μs)) \n",
" Pair{Any,Any}((\"ex1_with_dot_matrix\", \"nx1=200\", \"ny1=100\"), Trial(10.800 μs)) \n",
" Pair{Any,Any}((\"ex1_LinearIndices_CartesianIndices\", \"nx1=200\", \"ny1=100\"), Trial(9.036 μs))\n",
" Pair{Any,Any}((\"ex1_with_matrix\", \"nx1=200\", \"ny1=100\"), Trial(41.035 μs)) \n",
" Pair{Any,Any}((\"ex1_eachindex\", \"nx1=200\", \"ny1=100\"), Trial(9.114 μs)) "
]
},
"execution_count": 32,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"r_slice=collect(results[@tagged \"nx1=200\" && \"ny1=100\" ])"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 153
},
"colab_type": "code",
"id": "6CgGbvunwthD",
"outputId": "2423f33a-bba1-4144-ee8f-a25ee720ef8d"
},
"outputs": [
{
"data": {
"text/plain": [
"7-element Array{Int64,1}:\n",
" 3\n",
" 6\n",
" 4\n",
" 1\n",
" 2\n",
" 5\n",
" 7"
]
},
"execution_count": 33,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"funcs=[ e[1][1] for e in r_slice ];\n",
"times=[ e[2].times for e in r_slice ];\n",
"faster=sortperm(r_slice, rev=true, by=e->median(e[2]))"
]
},
{
"cell_type": "code",
"execution_count": 0,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "Mlfs4Ed0wvuL"
},
"outputs": [],
"source": [
"using PyPlot"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 868
},
"colab_type": "code",
"id": "3XXE2UKjwzZu",
"outputId": "00fc673b-75ad-4a4c-e187-a2f16deecace"
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"┌ Warning: `getindex(o::PyObject, s::Symbol)` is deprecated in favor of dot overloading (`getproperty`) so elements should now be accessed as e.g. `o.s` instead of `o[:s]`.\n",
"│ caller = top-level scope at In[35]:1\n",
"└ @ Core In[35]:1\n",
"┌ Warning: `getindex(o::PyObject, s::Symbol)` is deprecated in favor of dot overloading (`getproperty`) so elements should now be accessed as e.g. `o.s` instead of `o[:s]`.\n",
"│ caller = top-level scope at In[35]:2\n",
"└ @ Core In[35]:2\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAwgAAAG4CAYAAADhUMBLAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3XlYVdX+P/D3AQTOkQMKDoAiBxQEFWWwcoaueQHFK+KUSerNgUAzHK5jpWZBJjiV462wBG8lIrfk26A9kIRoXkDTPCiYRM7XiaHDIJz1+8Mf+3oElFGm9+t5ziN777XX+uzNLs5n77XWlgkhBIiIiIiIiADoNXUARERERETUfDBBICIiIiIiCRMEIiIiIiKSMEEgIiIiIiIJEwQiIiIiIpIwQSAiIiIiIgkTBCIiIiIikjBBICIiIiIiCRMEIiIiIiKSMEEgIiIiIiIJEwQiIiIiIpIYNHUARNT8abVaXL16FUqlEjKZrKnDISIiohoQQqCgoADW1tbQ06v5cwEmCET0RFevXoWNjU1Th0FERER18Mcff6B79+41Ls8EgYieSKlUAnjwPxhTU9MmjoaIiIhqIj8/HzY2NtLf8ZpigkBET1TRrcjU1JQJAhERUQtT2+7BHKRMREREREQSJghERERERCRhgkBERERERBImCEREREREJGGCQEREREREEiYIREREREQkYYJAREREREQSJghERERERCRhgkBERERERBK+SZmImq2srCwUFBRAVlYM48JcFJv0gDAwBgAolUo4ODg0cYREREStDxMEImqWsrKy4OjoCABws9RDepAJ3HcVIuO6Vipz4cIFJglEREQNjF2MiKhZKigoAABER0cjJiYGABATE4O0tDRER0frlCEiIqKGwycIRNSsOTs7w9lSDzgKODs5AdauTR0SERFRq8YnCEREREREJGGCQEREREREEiYIRNSkNBoN0tPTodFoWlTdRERErRUTBCJqUpmZmfDw8EBmZmaLqpuIiKi1YoJAREREREQSzmJERK3SvHnzsH37dgCAh4dHo7XTvn17tG/fHp06dcKQIUOgr6+PvLw8/PHHH1CpVJg8eTISEhKQnp6ODh06YNSoUejWrRu6deuG4cOHQ19fv94xlJeXIzk5GdeuXYOVlVWD1UtERG0TEwSiBrBnzx6Ehobi3r17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9Ly0djXtHtdQ1Gq19B6Eqq6vL7/8El9++SUA8D0I9FQFBAQgNjYWixcv1hlAb2dnh9jYWF6HRG0YnyC0YOvWrcObb76J8PBwODs7w8fHBwkJCVCpVJg5cyaeffZZzJ8/HwDg7e2N4OBgBAYGSt2Tdu7cCTc3N2lmnREjRsDNzQ1fffVVjdoPCQnB999/jytXrmD8+PFwcnLC7NmzYWpqiiVLlgB4MFOLu7s7vL294eXlBUtLyxq/+CwyMhKHDx+GjY2NNK7C29sbhw4dwvfff49nnnkGgwYNwqZNm6Qvuh06dMA///lPDB06FP3798eRI0fw9ddfw8LColL9AwYMwMaNG7F+/Xr069cPMTExCA8Pr1Fs9RUVFQVra2t4enoiICAAc+fORZcuXaotb2hoiO+//x5dunTB6NGj4eLigvfee0+6u9eQ56UtEEJg/Pjx9a7H0NAQPXr0gJeXF55//nn069cPQ4cOxfr16/H9999j3759SExMxJ07d1BUVCQl1Zs2bYJGo8GRI0fwxhtv4I033sCRI0dw9epVfimjpyogIADZ2dlITEyUrtesrCxeh0RtnEw8qTM1EbV5+fn5MDMzQ15eHkxNTRu1rfT0dHh4eCAtLU1nHIHOeks9YLcnMPdHwNr1ifvWti0iIqLWoK5/v/kEgYiaFScnJ6SlpcHJyalVtUVERNRSMEGgKoWFhcHExKTKj6+vb1OHR62YQqGAu7t7palwW3pbRERELQUHKVOVXn31VUyePLnKbU+acpOIiIiIWi4mCFQlc3PzJ85kREREREStD7sYERERERGRhE8QiKhF0Gg0AB7MPCS3N4EzAHVmJoqu/+8N1Wq1uomiIyIiaj2YIBBRi5CZmQkAmDNnDtws9ZAeZIJp06Yh46EEoYJSqXza4REREbUaTBCIqEWoeMGek5MT2hvqQV2Yi49H94AwMNYpp1Qq4eDg0BQhEhERtQp8URoRPdHTfFEaERERNQy+KI2IiIiIiOqNCQIREREREUmYIBARERERkYQJAhERERERSZggEBERERGRhAkCERERERFJmCAQEREREZGECQIREREREUmYIBARERERkYQJAhERERERSZggEBERERGRhAkCERERERFJmCAQEREREZGECQIREREREUmYIBARERERkYQJAhERERERSZggEBERERGRhAkCERERERFJmCAQ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REREzV1d/37LhHikAzcRNTsqlQqhoaEIDQ2t0/5WVlZYt26dNJNTbeXn58PMzAx5eXkwNTWtUx31lZ6eDg8PD6SlpekMMK60/uopYLcnMPdHwNq1RnXUpV0iIqLmrq5/v9nFiKgV02g0SElJwY0bN9C3b9+mDqdenJyckJaWBicnpzbRLhERUVNpXqPwqNUICwuDiYlJlR9fX9+mDq/OcnNzqz0uExMT5ObmPvWYYmJiqo2nc+fOePHFFxEaGlppmtSWRqFQwN3dHQqFok20S0RE1FT4BIEaxauvvlrtm4drMl99c2VtbV3t+xMqtjeGx70l+G9/+5vOexYe1q5dO9ja2jZKTERERNQ6MUGgRmFubv7EmYxaIgMDA/Tq1aupw9ChVCqhVCqbOgwiIiJqJdjFiIiIiIiIJHyCQEQtmkajAfBgtiEAkN+7AGcA6sxMFF3XfRuyWq1+2uERERG1OEwQiKhFy8zMBADMmTMHAOBmqYf0IBNMmzYNGY8kCBXYJYuIiKh6TBCIqEXz9/cH8GA6UoVCAVlZMdSFufh4dA8IA+NK5ZVKJRwcHJ52mERERC0GX5RGRE/UHF6URkRERLVT17/fHKRMREREREQSJghERERERCRhgkBERERERBImCEREREREJGGCQEREREREEiYIREREREQkYYJAREREREQSJghERERERCRhgkBERERERBImCEREREREJGGCQEREREREEiYIREREREQkYYJAREREREQSJghERERERCRhgkBERERERBImCEREREREJGGCQEREREREEiYIREREREQkYYJAREREREQSJghERERERCRhgkBERERERBImCEREREREJDFo6gCIiBpCVlYWCgoKICsrhnFhLopNekAYGFdZVqlUwsHB4SlHSERE1DIwQSCiFi8rKwuOjo4AADdLPaQHmcB9VyEyrmur3efChQtMEoiIiKrABIGIWryCggIAQHR0NNyt9IGjQYiJiUFRB8dKZdVqNQIDA6V9iIiISBcTBCJqNZydneFsqQccBZydnABr16YOiYiIqMXhIGUiIiIiIpIwQSAiIiIiIgkTBCIiIiIikjBBIKJmT6PRID09HRqNpk22T0RE9DQxQSCiZi8zMxMeHh7IzMxsk+0TERE9TZzFiIjoMT744AMsWLAAAODh4VHv+mQyGQwNDWFhYYGAgACcPHkS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EREREZGECQIREREREUmYIBARERERkYQJAhERERERSZggEBERERGRhAkCERERERFJmCAQEREREZGECQIREREREUmYIBARERERkYQJAhERERERSZggEBERERGRhAkCERERERFJmCAQEREREZGECQIREREREUmYIBARERERkYQJAhERERERSZggEBERERGRhAkCERERERFJmCAQEREREZHEWN8BEBGRYbh8+TLy8vIAALKyIrTOz0SR0gnCuLVGOZVKBWdnZ32ESEREOsAEgYiIcPnyZbi4uEjr7u2MkDJbCY9P8nEmu6JK+UuXLjFJICJ6SjFBICIi6cpBTEwMXF1dobh/CTgxGzt37kSh1X8Th7S0NAQFBUnliYjo6cMEgYiIJK6urvDw8AB+NwJOAK49egAOffUdFhER6RAnKRMRERERkYQJAhERERERSZggEBE9pQoKCpCSkoKCggLGQUREWmOCQET0lEpPT0e/fv2Qnp7OOIiISGtMEIiIiIiISMK7GBERUZOJi4uDv78/AKBfv36NUqdcLodCoYCtrS1GjhwJLy8v2Nvb4+zZs0hISMCDBw/Qtm1bqNVqPPfcc/D19YVcLm+UtqnplZeX49tvv8WOHTtw//59XLlyBdnZ2bh//36d6rGxsYFCoYC7uzsmTJiATp06wcvLy2D6Qnl5OU6ePImsrCy0b9/eoGIj3THYfiCIWggfHx8xf/78J5aJjo4WlpaWOoqoaRw7dkwAEPfu3Wu0OnNycgQAkZOT02h1UtNLTk4WAERycnLdy/52RogVFg//rWedAAxiadu2rdi7d2+9XkPSrb179woLC4sm6wtqtdog+sLevXuFWq02yNhId3TRD+r795tDjEivtm7dCl9fX1hYWEAmk9X5G6K6iI2NRXh4uLSuVquxcePGJmuvMa1cuRJ9+2p3L/rBgwcjKysLlpaWTRwVUc1kMpne2ra3t4dSqZTWb9++jQkTJiA2NlZvMVHtYmNjMX78eOTm5jbZN6hFRUV67wuxsbGYMGECevXqhaSkJOTl5SEpKQm9evXSe2ykO4beD5ggkF4VFBTAz88P77zzTpO3ZWNjA5VK1eTt6FNpaSlMTEzQrl07vX5Ao5YtLi5Ob223bdsWCoUCf/75J9q2bQsAaN26NRQKBUJDQ1FeXq632Khm5eXlWLBgAWQyGWxtbZvs95SdnQ1/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CEREREREJGGCQEREREREEiYIREREREQkYYJAREREREQSJghERERERCRhgkBERERERBImCEREREREJGGCQEREREREEiYIREREREQkYYJAREREREQSJghERERERCRhgkBERERERBImCEREREREJGGCQEREREREEiYIREREREQkYYJAREREREQSJghERERERCRhgkBERERERBJjfQdARETNx+XLl5GXl6exTVZWhNb5mShSOkEYt9bYp1Kp4OzsrMsQiYiogZggEBGRVi5fvgwXF5cq293bGSFlthIen+TjTHZFlf2XLl1ikkBE1IwwQSAiIq1UXjmIiYmBq6urtF1x/xJwYjZ27tyJQqv/JhBpaWkICgqqcsWBiIgMGxMEIiKqE1dXV3h4ePx3w+9GwAnAtUcPwKGv/gIjIqJGwUnKREREREQkYYJAREREREQSJghERCQpKChASkoKCgoKWnQMREQtGRMEIiKSpKeno1+/fkhPT2/RMRARtWRMEIiIiIiISMK7GJHByMjIQOfOnXHmzBn07dt4d0KRyWTYt28fAgMDddKur68v+vbti40bNza4rsby+GtQ22tCpC/Z2dno168fAEj/NoRCoYCJiQnkcjnkcjnMzMzg4OCAXr16wdraGr/99hscHR1hZ2eHdu3aoUOHDvDy8oJcLm9w20REzRUTBKq3rVu34osvvkBKSgry8vJw7949WFlZ6TssqkZWVhasra1rXCcyBObm5o0+76CwsBCFhYUa227cuIGkpKQaj1Gr1fjggw8wbty4Ro2FiKi54BAjqreCggL4+fnhnXfe0XcoVIt27drB1NS0xnUifWuK5EBbj/9fsLOzw4QJExAbG6uXeIiI9I0JQgtWUVGByMhIdO7cGQqFAn369MGePXsAAKtXr4aDgwPu3LkjlR8zZgyGDRuGiooKAEBISAiWLl2KgQMH1qv9H3/8Ee7u7mjdujX69++PM2fOVClz/PhxeHp6wtTUFO3bt8fSpUtRVlYm7Ver1VWG8vTt2xcrV67U2JaVlQV/f38oFAp06dJFOs+aXLhwAf7+/lAqlbC3t8crr7yCP//8s17nee/ePbz66quwtraGmZkZ/P39cfnyZY0ye/fuRc+ePWFqaip9e/kotVqN8PBwTJkyBebm5ujQoQOioqK0jkEmk2H//v01rhPpU3Z2tl7vWFRaWorRo0dD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",
"text/plain": [
"Figure(PyObject <Figure size 640x480 with 1 Axes>)"
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"┌ Warning: `getindex(o::PyObject, s::Symbol)` is deprecated in favor of dot overloading (`getproperty`) so elements should now be accessed as e.g. `o.s` instead of `o[:s]`.\n",
"│ caller = top-level scope at In[35]:3\n",
"└ @ Core In[35]:3\n",
"┌ Warning: `getindex(o::PyObject, s::Symbol)` is deprecated in favor of dot overloading (`getproperty`) so elements should now be accessed as e.g. `o.s` instead of `o[:s]`.\n",
"│ caller = top-level scope at In[35]:4\n",
"└ @ Core In[35]:4\n",
"┌ Warning: `getindex(o::PyObject, s::Symbol)` is deprecated in favor of dot overloading (`getproperty`) so elements should now be accessed as e.g. `o.s` instead of `o[:s]`.\n",
"│ caller = top-level scope at In[35]:5\n",
"└ @ Core In[35]:5\n"
]
},
{
"data": {
"text/plain": [
"7-element Array{PyCall.PyObject,1}:\n",
" PyObject Text(0, 1, 'ex1_double_loop_ij') \n",
" PyObject Text(0, 2, 'ex1_with_matrix') \n",
" PyObject Text(0, 3, 'ex1_with_dot_matrix') \n",
" PyObject Text(0, 4, 'ex1_double_loop_ji') \n",
" PyObject Text(0, 5, 'ex1_CartesianIndices') \n",
" PyObject Text(0, 6, 'ex1_LinearIndices_CartesianIndices')\n",
" PyObject Text(0, 7, 'ex1_eachindex') "
]
},
"execution_count": 35,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"fig, ax = plt[:subplots]()\n",
"ax[:boxplot](times[faster][:], vert=false)\n",
"ax[:set_xscale](\"log\")\n",
"ax[:set_xlabel](\"time / ns\")\n",
"\n",
"ax[:set_yticklabels](funcs[faster])\n"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 965
},
"colab_type": "code",
"id": "ZDZmv9qRw1th",
"outputId": "ffc51721-ee6c-423d-87f4-f06c4494cd91"
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"┌ Warning: `getindex(o::PyObject, s::Symbol)` is deprecated in favor of dot overloading (`getproperty`) so elements should now be accessed as e.g. `o.s` instead of `o[:s]`.\n",
"│ caller = top-level scope at In[36]:1\n",
"└ @ Core In[36]:1\n",
"┌ Warning: `getindex(f::Figure, x)` is deprecated, use `getproperty(f, x)` instead.\n",
"│ caller = top-level scope at In[36]:13\n",
"└ @ Core In[36]:13\n",
"┌ Warning: `getindex(o::PyObject, s::Symbol)` is deprecated in favor of dot overloading (`getproperty`) so elements should now be accessed as e.g. `o.s` instead of `o[:s]`.\n",
"│ caller = top-level scope at In[36]:14\n",
"└ @ Core In[36]:14\n",
"┌ Warning: `getindex(o::PyObject, s::Symbol)` is deprecated in favor of dot overloading (`getproperty`) so elements should now be accessed as e.g. `o.s` instead of `o[:s]`.\n",
"│ caller = top-level scope at In[36]:15\n",
"└ @ Core In[36]:15\n",
"┌ Warning: `getindex(o::PyObject, s::Symbol)` is deprecated in favor of dot overloading (`getproperty`) so elements should now be accessed as e.g. `o.s` instead of `o[:s]`.\n",
"│ caller = top-level scope at In[36]:16\n",
"└ @ Core In[36]:16\n",
"┌ Warning: `getindex(o::PyObject, s::Symbol)` is deprecated in favor of dot overloading (`getproperty`) so elements should now be accessed as e.g. `o.s` instead of `o[:s]`.\n",
"│ caller = top-level scope at In[36]:17\n",
"└ @ Core In[36]:17\n",
"┌ Warning: `getindex(o::PyObject, s::Symbol)` is deprecated in favor of dot overloading (`getproperty`) so elements should now be accessed as e.g. `o.s` instead of `o[:s]`.\n",
"│ caller = top-level scope at In[36]:18\n",
"└ @ Core In[36]:18\n",
"┌ Warning: `getindex(o::PyObject, s::Symbol)` is deprecated in favor of dot overloading (`getproperty`) so elements should now be accessed as e.g. `o.s` instead of `o[:s]`.\n",
"│ caller = top-level scope at In[36]:19\n",
"└ @ Core In[36]:19\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAHVCAYAAAB8NLYkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3XlcVdX+P/7XYTqcwyiIAoqAAgKKCFgiDmAOoOIHU9RQEsvUi5pikmOFU3AVUbQstVs4QGUiYldLr3khEdC8IKYJIibhgGmgDCEgnPfvD37sL0cOowdQfD8fj/OIvdbaa629Nh5Wew1bREQExhhjjDH2wlPp6AowxhhjjDHl4I4dY4wxxlgnwR07xhhjjLFOgjt2jDHGGGOdBHfsGGOMMcY6Ce7YMcYYY4x1EtyxY4wxxhjrJLhjxxhjjDHWSXDHjjHGGGOsk+COHWOMMcZYJ8EdO8YYe8kcPHgQ/v7+sLa2hkgkgoeHh1LzP336NN5++23Y2NhAKpWid+/eeOedd5Cfn68wfUpKCoYNGwapVApjY2MsXrwYpaWl9dJVVFRgxYoVMDU1hUQiweDBg3Hq1Cml1v1Z/ec//8GcOXPQv39/qKqqwsLCQqn5l5aWIiQkBF5eXjAwMIBIJMLevXsbTJ+ZmQkvLy9oa2vDwMAAb775Jh48eFAvnUwmw+bNm2FpaQlNTU0MGDAA33zzjVLrztoHd+wYY+wl8/nnn+Po0aMwMzNDly5dlJ7/ihUrkJiYiNdffx07duzAG2+8ge+++w5OTk64d++eXNqMjAyMGjUKZWVl2Lp1K9555x3s2bMHU6dOrZfv7NmzsXXrVsycORPbt2+Hqqoqxo8fj7Nnzyr9Glrr66+/xtdffw09PT2YmpoqPf+//voL69evR2ZmJhwdHRtNe/v2bYwYMQI5OTkIDQ1FcHAwjh8/jjFjxqCyslIu7Zo1a7BixQqMGTMGn3zyCXr16oUZM2bg22+/Vfo1sDZGjDHGXip5eXlUXV1NRET9+vUjd3d3peb/888/C/nXDQNAa9askQsfN24cmZiYUFFRkRD2xRdfEAA6efKkEHb+/HkCQOHh4ULY48ePqU+fPjRkyBCl1v9Z3LlzhyorK4mIaMKECWRubq7U/MvLyyk/P5+IiC5cuEAAKCoqSmHawMBAkkgk9Mcffwhhp06dIgC0e/duIez27dukrq5OCxcuFMJkMhkNHz6cevbsSVVVVUq9Bta2+IkdY4w9x9auXQuRSIScnBzMnj0b+vr60NPTw1tvvYWysjIhXVRUFEQiEb766iu580NDQyESifDDDz8IYWZmZlBRabuv/xEjRtTLf8SIETAwMEBmZqYQVlxcjFOnTsHf3x+6urpC+KxZs6CtrY3vvvtOCIuNjYWqqirmzZsnhGlqamLOnDlITU3FrVu3WlzPvXv3QiQSITk5Ge+99x6MjIygpaWF119/XW64MiAgAF27dsWTJ0/q5TF27Fj07dtXODY1NYW6unqL69JcYrEYxsbGzUp7+PBheHt7o1evXkLY6NGjYWNjI9e2R48exZMnT7BgwQIhTCQSITAwELdv30ZqaqryLoC1Oe7YMcbYC2DatGkoKSlBWFgYpk2bhr1792LdunVC/FtvvQVvb2+89957Qifn8uXLWLduHebMmYPx48e3uMwnT57gr7/+atZHJpM1mldpaSlKS0vRtWtXIezy5cuoqqrCoEGD5NJqaGhg4MCBuHjxohB28eJF2NjYyHUAAeDVV18FUDOk21rvvvsuLl26hJCQEAQGBuLf//43Fi1aJMS/+eabKCgowMmTJ+XOu3fvHv773//C39+/xWXKZLJmt62iDmVT7ty5g/v379drW6CmzZ5uWy0tLdjZ2dVLVxvPXhxqHV0BxhhjTXNycsKXX34pHBcUFODLL7/Epk2bhLAvvvgC/fr1w5w5c3Ds2DEEBATA2NgYW7dubVWZycnJGDlyZLPS3rx5s9GFApGRkaisrMT06dOFsNrFFCYmJvXSm5iYICkpSS5tQ+kA4O7du82qpyKGhob4z3/+A5FIBKCm07Vjxw4UFRVBT08Pr732Gnr27Ino6Gh4e3sL533zzTeQyWSt6tjl5eXB0tKyWWkTEhJavMClqbYtLCxERUUFxGIx8vPz0b17d+H666YDnq1tWfvjjh1jjL0A/vGPf8gdDx8+HEeOHEFxcbHwFMvY2Bg7d+6En58fhg8fjoyMDJw6dareU67mcnR0bPaq08aGB8+cOYN169Zh2rRpeO2114Twx48fA6gZXnyapqamEF+btqF0dfNqjXnz5sl1aoYPH45t27bhjz/+wIABA6CiooKZM2dix44dKCkpgY6ODgAgJiYGbm5uze6g1WVsbNzstm1qkYQiTbVtbRqxWNymbcvaH3fsGGPsBVB3nhQAYTXrw4cP5Tpub7zxBqKjo3H8+HHMmzcPo0aNanWZXbp0wejRo1t9PgBkZWXh9ddfR//+/fGvf/1LLk4ikQCo2cbkaeXl5UJ8bdqG0tXNqzUaa9tas2bNwqZNm3DkyBHMmjUL165dQ1paGnbt2tWqMjU1NZ+5bRvTVNvWTdOWbcvaH3fsGGPsBaCqqqownIjkjgsKCvC///0PAHD16lXIZLJWL5SorKxEYWFhs9IaGRnVq+OtW7cwduxY6Onp4YcffhCedNWqHepTtL9dfn6+3HYhJiYmuHPnjsJ0AJ5pa5HmtK29vT1cXFwQHR2NWbNmITo6GhoaGpg2bVqryqyurla4n5wiBgYG0NDQaFH+TbWtgYGB8JTOxMQECQkJICK5J5fKaFvW/njxBGOMdSILFy4UFlmcPXsWkZGRrc4rJSUFJiYmzfo8vSq1oKAAY8eORUVFBU6ePKlwrlf//v2hpqYmdERrVVZWIiMjAwMHDhTCBg4ciOzsbBQXF8ulPX/+vBDf1mbNmoX//ve/yM/Px9dff40JEya0eh/AW7duNbttU1JSWpx/jx49YGRkVK9tAeCXX36p17ZlZWVyK5aB9m1bpjz8xI4xxjqJ2NhYHDx4EDt27BBWen7wwQfw9vaGjY1Ni/Nr7Ry7v//+G+PHj8edO3eQkJAAa2trhefo6elh9OjRiI6Oxocffig80Ttw4ABKS0vlNin29fXFli1bsGfPHgQHBwOoGWaMiorC4MGDYWZm1uLrayk/Pz8sW7YMS5Yswe+//47w8PBW59XWc+wAYMqUKdi3bx9u3boltM/p06eRnZ2NpUuXCul8fHywdOlSfPbZZ/j0008B1Dyt3LVrF3r06AE3N7dWlc86BnfsGGOsE7h//z4CAwMxcuRIYauOTz/9FAkJCZg9ezbOnj0rDMmeOXMGZ86cAQA8ePAAf//9NzZu3AigZr+5ESNGAGj9HLuZM2fil19+wdtvv43MzEy5J0Ha2tqYNGmScPzxxx/Dzc0N7u7umDdvHm7fvo2IiAiMHTsWXl5eQrrBgwdj6tSpWLVqFe7fvw8rKyvs27cPubm5cquFgZq9/9atW9eq1aSNMTIygpeXFw4dOgR9fX1MmDChXppff/0V33//PQAgJycHRUVFQts6Ojpi4sSJAJ5tjt2nn36KR48eCatV//3vf+P27dsAarZu0dPTAwCsXr0ahw4dwsiRI7FkyRKUlpYiPDwcDg4OeOutt4T8evbsiaCgIISHh+PJkyd45ZVXEB8fj6SkJMTExDQ4VM2eUx27PzJjjLHGhISEEAB68OCBXHhUVBQBoJs3bxIR0eTJk0lHR4dyc3Pl0h09epQA0KZNm+rlqegTEhLyzHU2NzdvMH9Fb2JISkoiNzc30tTUJCMjI1q4cCEVFxfXS/f48WMKDg4mY2NjEovF9Morr9CJEyfqpVu2bBmJRCLKzMxstJ61bXjhwgW58ISEBAJACQkJ9c757rvvCADNmzev0TwVfQICAhqtT3M11r61vw+1rly5QmPHjiWpVEr6+vo0c+ZMunfvXr08q6urKTQ0lMzNzUlDQ4P69etH0dHRSqkva18ioqdm3jLGGGMvsFdffRXm5uY4dOiQ0vM+evQoJk2ahDNnzmD48OFKz5+xZ8UdO8YYY51GcXExjIyMkJGRUe9NCsrg7e2NzMxM5OTk1NvQl7HnAc+xY4wx1mno6uoq3JPtWX377bf49ddfcfz4cWzfvp07dey5xU/sGGOMsSaIRCJoa2tj+vTp2LVrF9TU+LkIez7xbyZjjDHWBH4Gwl4UvEExY4wxxlgnwU/sGGNNkslkuHv3LnR0dHhuEWOMtQMiQklJCUxNTVv0WkDu2DHGmnT37t122dmfMcaYvFu3bqFnz57NTs8dO8ZYk2pf9XTr1i3o6up2cG0YY6zzKy4uhpmZmfD921zcsWOMNal2+FVXV5c7dowx1o5aOv2FF08wxhhjjHUS3LFjjDHGGOskeCiWMfZcuX79OkofPoBmaR7KtXuB1DSho6MDa2vrjq4aY4w997hjxxh7bly/fh02NjZwMlZB+nxtOO8uxcV7MgBAdna2XOdOTU0N1dXVz1ymqqoqDAwM4OLiguLiYshkMhQXF0MkEkFfXx9z5syBpaUlhg8fDlVV1Sbzq66uRlJSEvLz82FiYtLs8xhjTBl4KJYxJdi7dy/09fUbTTN79mxMmjTpmcsSiUSIj49/5nyeB2VlZUhPT0dZWRkAoKSkBACwceNGAEBMTAyio6Pl4oCaNlBGpw6o6Yg9ePAAJ06cQEpKCs6dO4erV6/it99+Q3JyMt5++22MHDkSVlZWiIuLazSvuLg4WFlZYeTIkZgxY0azz2OMMWXhjh17IezZswceHh7Q1dWFSCTCo0ePOrpKLbZ9+3bs3bu3o6vxXMnKyoKLiwuysrLkwi0tLQEAdra2sLOzk4vrqA2SHz16BF9f3wY7aXFxcfD19YWDgwNSU1NRUlKC1NRUODg4NHoeY4wpE3fs2AuhrKwMXl5eWL16dUdXpdX09PSafKrHGteeL143NDQUfq79nwkvLy8EBwfXe1pYXV2NZcuWwdvbG/Hx8XB1dYW2tjZcXV0RHx8Pb29vhecxxpiycceOtQuZTIawsDBYWlpCIpHA0dERsbGxAID169fD1NQUBQUFQvoJEyZg5MiRkMlq5lcFBQVh5cqVcHV1bVX5t27dwrRp06Cvrw8DAwP4+PggNzdXiL9w4QLGjBmDrl27Qk9PD+7u7khPT5fL49GjR5g/fz66d+8OTU1N9O/fH8eOHZNLc/LkSdjZ2UFbWxteXl7Iz88X4p4eivXw8MDixYuxfPlyGBgYwNjYGGvXrpXL7/r16xgxYgQ0NTVhb2+PU6dOtejaysvL0a9fP8ybN09If+PGDejo6OCrr75qsL0qKipQXFws92kLjx8/BgBkZmYiPT0dmZmZQvmK0rRnx2jUqFHCz87OzgCAv//+Gzdv3kRSUpJc2qSkJOTm5mL16tX1Xv2joqKCVatWKTyPMcaUjTt2rF2EhYVh//792LVrF3777TcsXboU/v7++Pnnn7FmzRpYWFjgnXfeAQDs3LkTKSkp2LdvX4vej9eQJ0+ewNPTEzo6OkhKSkJycrLQ8aqsrARQM38rICAAZ8+exblz52BtbY3x48cL87pkMhnGjRuH5ORkREdH4+rVq/jnP/8pNym+rKwMW7ZswYEDB3DmzBnk5eUhODi40brt27cPWlpaOH/+PDZv3oz169cLnTeZTIbJkydDQ0MD58+fx65du7BixYoWXZumpiZiYmKwb98+HD16FNXV1fD398eYMWPw9ttvN1ivsLAw6OnpCZ+2ep1YbQfU398fLi4u8Pf3B1DzCjNFadqTVCoVfu7Tpw8A4K+//gIAuQ573eP+/fsrzKs2/OnzGGNM6YixNlZeXk5SqZRSUlLkwufMmUN+fn5ERHTjxg3S0dGhFStWkEQioZiYGIV5JSQkEAB6+PBhs8s/cOAA9e3bl2QymRBWUVFBEomETp48qfCc6upq0tHRoX//+99ERHTy5ElSUVGha9euKUwfFRVFACgnJ0cI27lzJ3Xv3l04DggIIB8fH+HY3d2dhg0bJpfPK6+8QitWrBDKVFNTozt37gjxP/74IwGgI0eOtOjaNm/eTF27dqVFixaRiYkJ/fXXXw20Vo3y8nIqKioSPrdu3SIAVFRU1Oh5LXX27FkCQNHR0ZSWlkbR0dEEgC7+sJcoRJfozkW5NADa7TNt2jThZxcXFwJAI0aMIACUkJAgdx21v5epqakKrzMlJUXheYwx1pCioqJWfe/ydieszeXk5KCsrAxjxoyRC6+srISTkxMAoHfv3tiyZQvmz5+P6dOnY8aMGUor/9KlS8jJyan3vr3y8nLcuHEDAPDnn3/igw8+QGJiIu7fv4/q6mqUlZUhLy8PAJCRkYGePXvCxsamwXKkUqnwZAcATExMcP/+/UbrNmDAALnjuudkZmbCzMwMpqamQvyQIUNafG0AsGzZMsTHx+PTTz/Fjz/+KDd/TBGxWAyxWNxoGmWQSCQAADs7O2G4s7Z8RWlUVVXbbTj29OnTws+1w/JaWlrC1id1DR8+HBYWFggNDUV8fLzck+a60xCePo8xxpSNO3aszZWWlgIAjh8/jh49esjF1f0DfubMGaiqqiI3NxdVVVVKmyhfWloKFxcXxMTE1IszMjICAAQEBKCgoADbt2+Hubk5xGIxhgwZIgzV1nYuGqOuri53LBKJQEQtPqd2XmFzNOfaAOD+/fvIzs6Gqqoqrl+/Di8vr2aX8Typqqpqt1Wxded8EhH09fVx4sQJxMbG1tuXTlVVFREREfD19cWkSZOwatUq9O/fH1euXEFYWBiOHTum8DzGGFM27tixNmdvbw+xWIy8vDy4u7srTHPw4EHExcUhMTER06ZNw4YNG7Bu3TqllO/s7IyDBw+iW7duDb7APjk5GZ999hnGjx8PoGZBQu18KqDmydrt27eRnZ3d6FM7ZbKzs8OtW7eEjW4B4Ny5c3JpmnNtAPD222/DwcEBc+bMwdy5czF69Oh624h0BFtbW6SlpcHW1hYAhP3ssrKyYAcgMysLmfnyT+iIqEO2POnSpQu+/PJLTJ48WWH85MmTERsbi2XLlsHNzU0It7S0RGxsbIPnMcaYMnHHjrU5HR0dBAcHY+nSpZDJZBg2bBiKioqQnJwMXV1djBo1CoGBgdi0aROGDRuGqKgoeHt7Y9y4ccIq2Hv37uHevXvIyckBAFy+fBk6Ojro1asXDAwMGi1/5syZCA8Ph4+PD9avX4+ePXvijz/+QFxcHJYvX46ePXvC2toaBw4cwKBBg1BcXIz3339f7imdu7s7RowYgSlTpmDr1q2wsrJCVlYWRCJRmz39Gj16NGxsbBAQEIDw8HAUFxdjzZo1Lb62nTt3IjU1Fb/++ivMzMxw/PhxzJw5E+fOnYOGhkab1L25pFKp3BBs7X52GzZswOvztTFz5kzhzRN1h5uJ6Ll888TkyZPh4+PDb55gjHWcNpjvx1g9MpmMIiMjqW/fvqSurk5GRkbk6elJiYmJNGrUKPL09JRbAPDuu+9Snz59qKSkhIiIQkJCFE5wj4qKalb5+fn5NGvWLOratSuJxWLq3bs3zZ07V5iUmp6eToMGDSJNTU2ytramQ4cOkbm5OW3btk3Io6CggN566y0yNDQkTU1N6t+/Px07doyIahZP6OnpyZV55MgRqvtPTNHiiSVLlsid4+PjQwEBAcLxtWvXaNiwYaShoUE2NjZ04sQJucUTTV1bZmYmSSQS+vrrr4X0Dx8+JDMzM1q+fHmz2o6o9ZN4W+rBgwf0xRdfUHLiKbp6+htKP59MaWlplJ2d3ablMsbY86a137sioiYmATHGXnrFxcXQ09NDUVFRo0O+jDHGlKO137u8jx1jjDHGWCfBHTv2wgsNDYW2trbCz7hx4zq6eowxxli74aFY9sIrLCxEYWGhwjiJRFJvixXWcjwUyxhj7au137u8Kpa98AwMDJpcGcsYY4y9DHgoljHGGGOsk+COHWOMMcZYJ8EdO8YYY4yxToLn2DHGnjvXr19H6cMH0CzNQ7l2L5CaJnR0dGBtbd3RVWOMsecad+wYY8+V69evw8bGBk7GKkifrw3n3aXCa8Wys7PlOnfKemesiooKevTogT59+kBVVRVaWlowNTWFm5sbzMzMWvxasOrqan6tGGOsQ3Sqodi9e/dCX1+/o6uhVLm5uRCJRMjIyAAAJCYmQiQS4dGjRx1csxeThYUFIiMjO7oaCj1dN5FIhPj4+A6sUdsrKytDeno6ysrKhLCSkhIAwMaNGwEAMTExiI6OlosDlNepAwCZTIZbt24hMTERp0+fxvfff49du3Zh1qxZGDlyJKysrBAXF9esvOLi4mBlZYWRI0dixowZLT6fMcaeRbt37Pbs2QMPDw/o6uq2qoPS2B+76dOnIzs7WxnVVAoPDw8EBQUpNU83Nzfk5+dDT09Pqfm2VkJCAsaPHw9DQ0NIpVLY29tj2bJluHPnzjPn3RYdmwsXLmDevHlKzXPt2rUYOHCgUvMEgPz8/E6/wXJWVhZcXFyQlZVVL87S0hIAYGdrCzs7O7k4ZXbqmkNVVRW+vr5Nds7i4uLg6+sLBwcHpKamoqSkBKmpqXBwcGjW+Ywx9qzavWNXVlYGLy8vrF69Wul5SyQSdOvWTen5tlRlZWWb5a2hoQFjY+N2/8OmyO7duzF69GgYGxvj8OHDuHr1Knbt2oWioiJERES0Ot+2bD8jIyNIpdI2y1+ZjI2NIRaLO7oaz532/N0Xi8VQVVVFbm4uxo8fj+DgYFRXVytMW11djWXLlsHb2xvx8fFwdXWFtrY2XF1dER8fD29v70bPZ4wxZWhxx04mkyEsLAyWlpaQSCRwdHREbGwsAGD9+vUwNTVFQUGBkH7ChAkYOXIkZLKaOTJBQUFYuXIlXF1dlXQJ/8/TQ7G1T1IOHDgACwsL6Onp4Y033pAbzmnseoCaL+s5c+YI8X379sX27dvlyp09ezYmTZqEjz/+GKampujbt6/C+llYWCA0NBRvv/02dHR00KtXL+zZs0cuzS+//AInJydoampi0KBBuHjxoly8oqHY5ORkeHh4QCqVokuXLvD09MTDhw+bdX0PHz7EzJkzYWRkBIlEAmtra0RFRTXZ1rdv38bixYuxePFifPXVV/Dw8ICFhQVGjBiBf/3rX/joo48AAAUFBfDz80OPHj0glUrh4OCAb775Ri4vDw8PLFq0CEFBQejatSs8PT1hYWEBAHj99dchEomEYwA4evQonJ2doampid69e2PdunWoqqoCABAR1q5di169ekEsFsPU1BSLFy+Wuwd1hzu3bt0KBwcHaGlpwczMDAsWLEBpaakQX/s7dfLkSdjZ2UFbWxteXl7Iz89vsG1qfx+2bNkCExMTGBoaYuHChXjy5ImQ5v79+5g4cSIkEgksLS0RExNTL5+nn1jevn0bfn5+MDAwgJaWFgYNGoTz588rpV2eVlFRgeLiYrlPW3j8+DEAIDMzE+np6UhPT0dmZqZQB0Xp2lNFRQWqq6tRXV0NKysr3Lx5E0lJSQrTJiUlITc3F6tXr4aKivxXq4qKClatWtXo+YwxpgwtXjwRFhaG6Oho7Nq1C9bW1jhz5gz8/f1hZGSENWvW4MSJE3jnnXdw5MgR7Ny5EykpKbh06VK9L7r2cuPGDcTHx+PYsWN4+PAhpk2bhn/+85/4+OOPm7wed3d3yGQy9OzZE4cOHYKhoSFSUlIwb948mJiYYNq0aUI5p0+fhq6uLk6dOtVofSIiIrBhwwasXr0asbGxCAwMhLu7O/r27YvS0lJ4e3tjzJgxiI6Oxs2bN7FkyZJG88vIyMCoUaPw9ttvY/v27VBTU0NCQoLwVKCp6/vwww9x9epV/Pjjj+jatStycnKEP6KNOXToECorK7F8+XKF8bUd7PLycri4uGDFihXQ1dXF8ePH8eabb6JPnz549dVXhfT79u1DYGAgkpOTAdS8TaJbt26IioqCl5eXMPE8KSkJs2bNwo4dOzB8+HDcuHFDGFoNCQnB4cOHsW3bNnz77bfo168f7t27h0uXLjV4HSoqKtixYwcsLS3x+++/Y8GCBVi+fDk+++wzIU1ZWRm2bNmCAwcOQEVFBf7+/ggODlbYGauVkJAAExMTJCQkICcnB9OnT8fAgQMxd+5cADWdv7t37yIhIQHq6upYvHgx7t+/32B+paWlcHd3R48ePfD999/D2NgY6enpwv8wKbtdwsLCsG7dugbjlSU3NxcA4O/vXy/u7t27GNiMdO2l9t9FQ5362vD+/fsrjK8Nb+x/Chhj7JlRC5SXl5NUKqWUlBS58Dlz5pCfnx8REd24cYN0dHRoxYoVJJFIKCYmRmFeCQkJBIAePnzYkioQADpy5IjCuKioKNLT0xOOQ0JCSCqVUnFxsRD2/vvv0+DBg5t9PYosXLiQpkyZIhwHBARQ9+7dqaKiQi6du7s7LVmyRDg2Nzcnf39/4Vgmk1G3bt3o888/JyKi3bt3k6GhIT1+/FhI8/nnnxMAunjxIhHVbzc/Pz8aOnSowno25/omTpxIb731VoPX2pDAwEDS1dVt8XlERBMmTKBly5YJx+7u7uTk5FQvnaJ7PWrUKAoNDZULO3DgAJmYmBARUUREBNnY2FBlZaXCss3NzWnbtm0N1u3QoUNkaGgoHEdFRREAysnJEcJ27txJ3bt3F45DQkLI0dFROA4ICCBzc3OqqqoSwqZOnUrTp08nIqJr164RAPrll1+E+MzMTAIgV7e61797927S0dGhgoIChfV+1nZ5Wnl5ORUVFQmfW7duEQAqKipq1vnNdfbsWQJA0dHRlJaWRmlpaRQdHV3zO//DXqIQXaI7F+XSAeiQz5IlSwgAJSQkKLyW2n+bqampCuNTUlIaPZ8xxuoqKipq1fdui57Y5eTkoKysDGPGjJELr6yshJOTEwCgd+/e2LJlC+bPn4/p06djxowZLSlC6SwsLKCjoyMcm5iYCE9GmnM9ALBz50589dVXyMvLw+PHj1FZWVlvsryDgwM0NDSarM+AAQOEn0UiEYyNjYX6ZGZmYsCAAdDU1BTSDBkypNH8MjIyMHXqVIVxzbm+wMBATJkyBenp6Rg7diwmTZoENzc+IEV7AAAgAElEQVS3Jq+DiJo116m6uhqhoaH47rvvcOfOHVRWVqKioqLePDcXF5cm8wKAS5cuITk5WXjiWltGeXk5ysrKMHXqVERGRqJ3797w8vLC+PHjMXHiRKipKf5V/+mnnxAWFoasrCwUFxejqqpKyKu2jlKpFH369BHOqfs71JB+/frJbW9hYmKCy5cvA6i5z2pqanLXbGtr2+iK7oyMDDg5OTX4Tlxlt4tYLG6X+X0SiQQAYGdnB2dn53p1UJSuPYnFYmE4OycnB5aWlhg+fLjCtMOHDxemW8THx8uNUtSdEtHQ+Ywxpgwt6tjVzj06fvw4evToIRdX90v4zJkzwoTjqqqqBv94tAd1dXW5Y5FIJAxfNed6vv32WwQHByMiIgJDhgyBjo4OwsPD5eY2AYCWltYz16c1av/gKdKc6xs3bhz++OMP/PDDDzh16hRGjRqFhQsXYsuWLY2Wa2Njg6KiImGfroaEh4dj+/btiIyMFOayBQUF1Vsg0dz2Ky0txbp16zB58uR6cZqamjAzM8O1a9fw008/4dSpU1iwYAHCw8Px888/12v73NxceHt7IzAwEB9//DEMDAxw9uxZzJkzB5WVlULHTtE9I6JG69me9xlQbrs875r7PxXKUDvPr0+fPvjhhx8QGxvb4H50qqqqiIiIgK+vLyZNmoRVq1ahf//+uHLlCsLCwnDs2LFGz2eMMWVo0cQ3e3t7iMVi5OXlwcrKSu5jZmYGADh48CDi4uKQmJiIvLw8bNiwoU0qrgzNuZ7k5GS4ublhwYIFcHJygpWVFW7cuNEm9bGzs8Ovv/6K8vJyIezcuXONnjNgwACcPn1aYVxzrg+oWSkaEBCA6OhoREZG1lvQoYivry80NDSwefNmhfG1izuSk5Ph4+MDf39/ODo6onfv3s3ekkZdXb3eCkJnZ2dcu3at3vVYWVkJT0gkEgkmTpyIHTt2IDExEampqcLTsrrS0tIgk8kQEREBV1dX2NjY4O7du82q27OwtbVFVVUV0tLShLBr1641uvXPgAEDkJGRgcLCQoXxymyX9mRra4u0tDTY2toKYbV72tVugZKZlVVv0URTHWtlk8lkiI2NVdhxrmvy5MmIjY3F5cuX4ebmBl1dXbi5ueHKlSvNOp8xxp5Vix6l6ejoIDg4GEuXLoVMJsOwYcNQVFSE5ORk6OrqYtSoUQgMDMSmTZswbNgwREVFwdvbG+PGjRNWwd67dw/37t1DTk4OAODy5cvCCtGGhpmedvPmTWHD3lqtedVQU9cTEBAAa2tr7N+/HydPnoSlpSUOHDiACxcuCHtsKdOMGTOwZs0azJ07F6tWrUJubm6TT85WrVoFBwcHLFiwAP/4xz+goaGBhIQETJ06FV27dm3y+j766CO4uLigX79+qKiowLFjx5o13GVmZoZt27Zh0aJFKC4uxqxZs2BhYYHbt29j//790NbWRkREBKytrREbG4uUlBR06dIFW7duxZ9//gl7e/smy7CwsMDp06cxdOhQiMVidOnSBR999BG8vb3Rq1cv+Pr6QkVFBZcuXcKVK1ewceNG7N27F9XV1Rg8eDCkUimio6MhkUhgbm5eL38rKys8efIEn3zyCSZOnIjk5GTs2rWryXo9q759+8LLywvz58/H559/DjU1NQQFBTX6VM7Pzw+hoaGYNGkSwsLCYGJigosXL8LU1BRDhgxRaru0J6lUWm8ItrZDt2HDBrw+XxszZ84U3jxRd1qFMp/cKfPNE5MnT4aPjw+/eYIx1jFaOplPJpNRZGQk9e3bl9TV1cnIyIg8PT0pMTGRRo0aRZ6eniSTyYT07777LvXp04dKSkqIqGaiORRMTI6KimpW+YrOBUBJSUkKF0/UndRORLRt2zYyNzdv8np+/vlnIqqZRD579mzS09MjfX19CgwMpJUrV9abLO/j41OvrooWTzw9cd/R0ZFCQkKE49TUVHJ0dCQNDQ0aOHAgHT58uNHFE0REiYmJ5ObmRmKxmPT19cnT01OIb+r6NmzYQHZ2diSRSMjAwIB8fHzo999/b9a9ICI6deoUeXp6UpcuXUhTU5NsbW0pODiY7t69S0REBQUF5OPjQ9ra2tStWzf64IMPaNasWXLt9XQ71fr+++/JysqK1NTU5O7ZiRMnyM3NjSQSCenq6tKrr75Ke/bsISKiI0eO0ODBg0lXV5e0tLTI1dWVfvrppwbvwdatW8nExIQkEgl5enrS/v375dr36d+p2jLq/tNRtHji6d+HJUuWkLu7u3Ccn59PEyZMILFYTL169aL9+/fXqxueWjySm5tLU6ZMIV1dXZJKpTRo0CA6f/68UtqlKa2dxNsaDx48oC+++IKSE0/R1dPfUPr5ZEpLS6Ps7Ow2L5sxxp4Xrf3eFRG185gGY+yFU1xcDD09PRQVFUFXV7ejq8MYY51ea793O9W7YhljjDHGXmbPVccuNDQU2traCj+d/Z2Zzxu+F4wxxtiL57kaii0sLGxw1Z9EIqm3ZQdrO3wvWF08FMsYY+2rtd+7HbfBnAIGBgbNXhnL2hbfC8YYY+zF81wNxTLGGGOMsdbjjh1jjDHGWCfBHTvGGGOMsU7iuZpjxxhjdV2/fh2lDx9AszQP5dq9QGqaAGreQNGat80wxlhnxx07xthz6fr167CxsYGTsQrS52vDeXep8GoxAMjOzq7XuRs2bBiSk5NbVI6BgQE0NTWhrq4OU1NTzJ07F7169UJ1dTWSkpIgk8mgr6+PR48eQUVFBR4eHvDw8OBXhD2Hau8Zv8qNvdTa4C0YjD23FL3W7XnR1CvFOlJ7vFLs77//prS0NPr777+JiCgtLY0A0PF/hRKF6NLV099QWloaRUdHEwBKS0uTOx8NvG6wLT7dunWjw4cPt1lbsJY7fPgwWVhYyN0nCwsLvk/shdXa712eY/cS27NnDzw8PKCrqwuRSIRHjx61OI+EhASMHz8ehoaGkEqlsLe3x7Jly3Dnzp1nrp9IJEJ8fPwz51PXhQsXMG/ePKXmuXbtWgwcOFCpeQJAfn7+S7UZdFZWFlxcXJCVlSUXbmlpCQCws7WFs7Mz7Ozs6p0rEomUXh8Vlf/39aijoyP8bGtri/v378PX1xdxcXFKL5e1XFxcHHx9feHg4IDU1FSUlJQgNTUVDg4OfJ/YS4c7di+xsrIyeHl5YfXq1a06f/fu3Rg9ejSMjY1x+PBhXL16Fbt27UJRUREiIiJaXa/KyspWn9sUIyMjSKXSNstfmYyNjSEWizu6Gs+9YcOGtUm+MpkMKioqkEgkePDgAby9vSGVSlFeXo4JEyZAIpEgODgY1dXVbVI+a57q6mosW7YM3t7eiI+Ph6urK7S1teHq6or4+Hh4e3vzfWIvFe7YvcBkMhnCwsJgaWkJiUQCR0dHxMbGAgDWr18PU1NTFBQUCOknTJiAkSNHQiarmacUFBSElStXwtXVtcVl3759G4sXL8bixYvx1VdfwcPDAxYWFhgxYgT+9a9/4aOPPgIAFBQUwM/PDz169IBUKoWDgwO++eYbubw8PDywaNEiBAUFoWvXrvD09ISFhQUA4PXXX4dIJBKOAeDo0aNwdnaGpqYmevfujXXr1qGqqgoAQERYu3YtevXqBbFYDFNTUyxevFg418LCApGRkcLx1q1b4eDgAC0tLZiZmWHBggUoLS0V4vfu3Qt9fX2cPHkSdnZ20NbWhpeXF/Lz8xtsm9mzZ2PSpEnYsmULTExMYGhoiIULF+LJkydCmvv372PixImQSCSwtLRETExMvXyefmJ5+/Zt+Pn5wcDAAFpaWhg0aBDOnz+vlHZ5WkVFBYqLi+U+be3x48cAgMzMTKSnpyMzM1OoS2PpWjqnriVkMhkeP36M1NRUrF69GmVlZcjNzcW4ceNQVlaGmzdvIikpqc3KZ01LSkpCbm4uVq9eLfeUFah56rpq1Sq+T+ylwosnXmBhYWGIjo7Grl27YG1tjTNnzsDf3x9GRkZYs2YNTpw4gXfeeQdHjhzBzp07kZKSgkuXLtX78muNQ4cOobKyEsuXL1cYr6+vDwAoLy+Hi4sLVqxYAV1dXRw/fhxvvvkm+vTpg1dffVVIv2/fPgQGBgp/pA0MDNCtWzdERUXBy8tLmACdlJSEWbNmYceOHRg+fDhu3LghDK2GhITg8OHD2LZtG7799lv069cP9+7dw6VLlxq8DhUVFezYsQOWlpb4/fffsWDBAixfvhyfffaZkKasrAxbtmzBgQMHoKKiAn9/fwQHByvsjNVKSEiAiYkJEhISkJOTg+nTp2PgwIGYO3cugJrO3927d5GQkAB1dXUsXrwY9+/fbzC/0tJSuLu7o0ePHvj+++9hbGyM9PR0oZOu7HYJCwvDunXrGoxvC7m5uQAAf39/ufC7d+9iYDPStaX8/Hx4e3sLxxKJRC6OdZza9u/fv7/C+Npwvk/spdEmM/5YmysvLyepVEopKSly4XPmzCE/Pz8iIrpx4wbp6OjQihUrSCKRUExMjMK8EhISCAA9fPiw2eUHBgaSrq5uq+o+YcIEWrZsmXDs7u5OTk5O9dJBweKBUaNGUWhoqFzYgQMHyMTEhIiIIiIiyMbGhiorKxWW3dTiiUOHDpGhoaFwHBUVRQAoJydHCNu5cyd1795dOA4JCSFHR0fhOCAggMzNzamqqkoImzp1Kk2fPp2IiK5du0YA6JdffhHiMzMzCUCDiyd2795NOjo6VFBQoLDez9ouTysvL6eioiLhc+vWrTZfPHH27FkCQNHR0XKLJC7+sJcoRJfozkWF6dAOiyUSEhIoJSVFOP7000/l4ljHqf3+Sk1NVRhfe9/4PrEXTWsXT/ATuxdUTk4OysrKMGbMGLnwyspKODk5AQB69+6NLVu2YP78+Zg+fTpmzJihtPKJqFkT1qurqxEaGorvvvsOd+7cQWVlJSoqKurNc3NxcWlWuZcuXUJycjI+/vhjuTLKy8tRVlaGqVOnIjIyEr1794aXlxfGjx+PiRMnQk1N8a/6Tz/9hLCwMGRlZaG4uBhVVVVCXrV1lEql6NOnj3COiYlJo0/XAKBfv35y2yyYmJjg8uXLAGqGENXU1OSu2dbWVnjKqUhGRgacnJwafH+vsttFLBa3+/y+2qdgdnZ2cHZ2lqtLY+mGDh3aZsOxKioqEIvFGDJkCHx9fSGVStGtWzf8+OOPkEql6N69O4YPH94mZbPmGT58OCwsLBAaGor4+Hi5EYm601X4PrGXBXfsXlC188COHz+OHj16yMXV/UN45swZqKqqIjc3F1VVVQ3+IW8pGxsbFBUVCftFNSQ8PBzbt29HZGSkMJctKCio3gIJLS2tZpVbWlqKdevWYfLkyfXiNDU1YWZmhmvXruGnn37CqVOnsGDBAoSHh+Pnn3+Gurq6XPrc3Fx4e3sjMDAQH3/8MQwMDHD27FnMmTMHlZWVQsfu6fNEIhGIqNF6Kjqndti0NeoO/SmizHZ50Zw9e7bNVsXWzrEzMjJCSUkJgJr2PH78OEQiEbZs2cL7pHUwVVVVREREwNfXF5MmTcKqVavQv39/XLlyBWFhYTh27BhiY2P5PrGXBi+eeEHZ29tDLBYjLy8PVlZWch8zMzMAwMGDBxEXF4fExETk5eVhw4YNSivf19cXGhoa2Lx5s8L42q1TkpOT4ePjA39/fzg6OqJ3797Izs5uVhnq6ur1VrI5Ozvj2rVr9a7ZyspK+D91iUSCiRMnYseOHUhMTERqaqrwtKyutLQ0yGQyREREwNXVFTY2Nrh7925LmqFVbG1tUVVVhbS0NCHs2rVrjW43M2DAAGRkZKCwsFBhvDLbpaPY2toiLS0Ntra2AGrmNgIQtj/JzMqSW1RRV1Md7dao2xGv7dTV1qdbt26IjY1V2JFm7W/y5MmIjY3F5cuX4ebmBl1dXbi5ueHKlSt8n9hLh5/YvaB0dHQQHByMpUuXQiaTYdiwYSgqKkJycjJ0dXUxatQoBAYGYtOmTRg2bBiioqLg7e2NcePGCatg7927h3v37iEnJwcAcPnyZejo6KBXr14NDvnVMjMzw7Zt27Bo0SIUFxdj1qxZsLCwwO3bt7F//35oa2sjIiIC1tbWiI2NRUpKCrp06YKtW7fizz//hL29fZPXaGFhgdOnT2Po0KEQi8Xo0qULPvroI3h7e6NXr17w9fWFiooKLl26hCtXrmDjxo3Yu3cvqqurMXjwYEilUkRHR0MikcDc3Lxe/lZWVnjy5Ak++eQTTJw4EcnJydi1a1cr7kbL9O3bF15eXpg/fz4+//xzqKmpISgoqNGncn5+fggNDcWkSZMQFhYGExMTXLx4EaamphgyZIhS26WjSKVSuSHY2g7dhg0b8Pp8bcycOVPuzRN195YDajp3/OaJl9fkyZPh4+PDb55grA3m+7F2IpPJKDIykvr27Uvq6upkZGREnp6elJiYSKNGjSJPT0+SyWRC+nfffZf69OlDJSUlRFQz6R8KJopHRUU1uw6nTp0iT09P6tKlC2lqapKtrS0FBwfT3bt3iYiooKCAfHx8SFtbm7p160YffPABzZo1i3x8fIQ83N3dacmSJfXy/v7778nKyorU1NTI3NxcCD9x4gS5ubmRRCIhXV1devXVV2nPnj1ERHTkyBEaPHgw6erqkpaWFrm6utJPP/0knPv04omtW7eSiYkJSSQS8vT0pP3798stJImKiiI9PT25eh05coTq/tNRtHii7vURES1ZsoTc3d2F4/z8fJowYQKJxWLq1asX7d+/v8k3T+Tm5tKUKVNIV1eXpFIpDRo0iM6fP6+UdmlKe7x54mkPHjygL774gpITT9HV099Q+vlkSktLo7S0NMrOzm63ejDGWEdo7feuiKgNxjAYY51KcXEx9PT0UFRUBF1d3Y6uDmOMdXqt/d7lOXaMMcYYY50Ed+yYQqGhodDW1lb4eZneX8oYY4y9SHgolilUWFjY4ApMiURSb4sV1rnxUCxjjLWv1n7v8qpYppCBgUGTK2MZY4wx9nzhoVjGGGOMsU6CO3aMMcYYY50Ed+wYY4wxxjoJnmPHGHthXL9+HSUlJRBVlUOzNA/l2r1AapoAat5EYW1t3cE1ZIyxjsUdO8bYC+H69euwsbEBADgZqyB9vjacd5fKvWYsOztbYecuPDwcy5cvf6by1dXVoampCQ0NDZiZmcHa2hqFhYUoLy+HhYUFAgIC8Nprr/ErrBhjHYqHYtlzIzc3FyKRCBkZGUrNVyQSIT4+vt3K9fDwQFBQkFLyUhYLCwtERkYKx021yfOopKQEABAdHY2YmBgAQExMDNLS0hAdHS2Xpi6RSPTMnToAePLkCUpKSlBQUICMjAwcOnQIp0+fRnJyMmJiYjB27FgYGhoiLi7umctijLHW4id2rNX27NmDr7/+Gunp6SgpKcHDhw+hr6/f0dViCly4cAFaWlrCcX5+Prp06dKBNWpaWVkZsrKyYGtrC6lUKoTb2dnBzlgFOAPY2doCpgMbzEMkErVHVQVFRUWYMmUKDh8+jMmTJ7dr2YwxBvATO/YMysrK4OXlhdWrV3d0VVgTjIyM5DpHxsbGEIvFHVijpmVlZcHFxQVZWVmtOj88PFzJNWqYpqYmNDU1oaKiApFIhGXLlqG6urrdymeMsVrcsXuJyWQyhIWFwdLSEhKJBI6OjoiNjQUArF+/HqampigoKBDST5gwASNHjoRMVjOnKSgoCCtXroSrq2uryv/ll1/g5OQETU1NDBo0CBcvXqyX5ueff8arr74KsVgMExMTrFy5ElVVVUL800OMADBw4ECsXbtWLiw/Px/jxo2DRCJB7969hetsyJUrVzBu3Dhoa2uje/fuePPNN/HXX3+16jofPnyIWbNmoUuXLpBKpRg3bhyuX78ul+bw4cPo168fxGIxLCwsEBERIRdvYWGBDRs2wM/PD1paWujRowd27tzZ7Dq0dCi2oqICxcXFcp/29vjxYwBAZmYm0tPTkZmZKRfeWNr09HSlDL82V3l5OcrLyyGTyUBEyM3NRVJSUruVzxhjtbhj9xILCwvD/v37sWvXLvz2229YunQp/P398fPPP2PNmjWwsLDAO++8AwDYuXMnUlJSsG/fPqioPPuvTWlpKby9vWFvb4+0tDSsXbsWwcHBcmnu3LmD8ePH45VXXsGlS5fw+eef48svv8TGjRtbXN6HH36IKVOm4NKlS5g5cybeeOMNoaPwtEePHuG1116Dk5MT/ve//+HEiRP4888/MW3atFZd6+zZs/G///0P33//PVJTU0FEGD9+PJ48eQIASEtLw7Rp0/DGG2/g8uXLWLt2LT788EPs3btXLp/w8HA4Ojri4sWLWLlyJZYsWYJTp061qk5NCQsLg56envAxMzNrk3Iak5ubCwDw9/eHi4sL/P395cIbS+vi4tJOtWxYfn5+R1eBMfYyIvZSKi8vJ6lUSikpKXLhc+bMIT8/PyIiunHjBuno6NCKFStIIpFQTEyMwrwSEhIIAD18+LDZ5e/evZsMDQ3p8ePHQtjnn39OAOjixYtERLR69Wrq27cvyWQyIc3OnTtJW1ubqquriYjI3Nyctm3bJpe3o6MjhYSECMcA6B//+IdcmsGDB1NgYCAREd28eVOu3A0bNtDYsWPl0t+6dYsA0LVr15q8Nnd3d1qyZAkREWVnZxMASk5OFuL/+usvkkgk9N133xER0YwZM2jMmDFyebz//vtkb28vHJubm5OXl5dcmunTp9O4ceOarE/t+XXbCQAdOXKkwfTl5eVUVFQkfGqvv6ioqFnlKcPZs2cJAEVHR1NaWhpFR0cTADp79izRnYtEIbo1/1WQNi0tjQB06CchIaHd2oox1vkUFRW16nuXn9i9pHJyclBWVoYxY8ZAW1tb+Ozfvx83btwAAPTu3RtbtmzBpk2b8H//93+YMWOG0srPzMzEgAEDoKmpKYQNGTKkXpohQ4bITYAfOnQoSktLcfv27RaV93TeQ4YMafCJ3aVLl5CQkCDXLra2tgAgtE1zZWZmQk1NDYMHDxbCDA0N0bdvX6H8zMxMDB06VO68oUOH4vr163LztFpyDc9KLBZDV1dX7tPeJBIJgJrFEs7OzrCzs5MLbyyts7MzNm/e3G51fXqOnYWFBYYPH95u5TPGWC1eFfuSKi0tBQAcP34cPXr0kIurO6n+zJkzUFVVRW5uLqqqqqCm9nz9yqioqICI5MJqhzhbq7S0FBMnTsSmTZvqxZmYmDxT3qz9vP/+++02z668vFzuOCIigvezY4x1CH5i95Kyt7eHWCxGXl4erKys5D6186kOHjyIuLg4JCYmIi8vDxs2bFBa+XZ2dvj111/l/iCeO3euXpraOWm1kpOToaOjg549ewKoWe1Zdy5TcXExbt68Wa+8p/M+d+6c8AToac7Ozvjtt99gYWFRr23qbhnS3OusqqrC+fPnhbCCggJcu3YN9vb2Qprk5GS585KTk2FjYyPXOWjJNXQGtra2SEtLE56WtsbTnf62pqenx1udMMY6FHfsXlI6OjoIDg7G0qVLsW/fPty4cQPp6en45JNPsG/fPty+fRuBgYHYtGkThg0bhqioKISGhsp1Lu7du4eMjAzk5OQAAC5fvoyMjAwUFhY2Wf6MGTMgEokwd+5cXL16FT/88AO2bNkil2bBggW4desW3n33XWRlZeHo0aMICQnBe++9JyzgeO2113DgwAEkJSXh8uXLCAgIUPik5NChQ/jqq6+QnZ2NkJAQ/PLLL1i0aJHCui1cuBCFhYXw8/PDhQsXcOPGDZw8eRJvvfVWi7ewsLa2ho+PD+bOnYuzZ8/i0qVL8Pf3R48ePeDj4wMAWLZsGU6fPo0NGzYgOzsb+/btw6efflpvMUlycjI2b96M7Oxs7Ny5E4cOHcKSJUtaVJ8XiVQqhbOzs7BNS1lZGQDUrJD9/7dAyczKklsxqwgRKWVYVl1dHTo6OjA0NMTAgQMxdepUjBo1CkOHDsXMmTPxn//8BwUFBdypY4x1rDaY78deEDKZjCIjI6lv376krq5ORkZG5OnpSYmJiTRq1Cjy9PSUW7jw7rvvUp8+faikpISIiEJCQhROGo+KimpW+ampqeTo6EgaGho0cOBAOnz4sNwiBiKixMREeuWVV0hDQ4OMjY1pxYoV9OTJEyG+qKiIpk+fTrq6umRmZkZ79+5VuHhi586dNGbMGBKLxWRhYUEHDx4U4p9ePEFUs+jh9ddfJ319fZJIJGRra0tBQUFy7dGQuosniIgKCwvpzTffJD09PZJIJOTp6UnZ2dly58TGxpK9vT2pq6tTr169KDw8XC7e3Nyc1q1bR1OnTiWpVErGxsa0ffv2phu5zvktWTzxtNZO4lWmL774QvgdczJWIQrRJSdjFbnfvafblTHGXlSt/d4VEbXzWAVjrMUsLCwQFBTU6leVmZiYYMOGDcL2NS1VXFwMPT09FBUVdchCCgD466+/EB8fD1tbW2hpqECzNA/l2r1AajULcHR0dBS+J5Yxxl5Erf3efb5mwjPGlKqsrAzJycn4888/0a9fv46uzjPp2rXrUx1Ttw6rC2OMPa94jh1rE6GhoXLbhdT9jBs3rqOr12p5eXkNXpe2tjby8vLavU4xMTEN1sfIyAhvvPEGgoKC6m2XwhhjrPPhoVjWJgoLCxtcRCGRSOptsfKiqKqqUvjmg1oWFhbtviVMSUkJ/vzzT4Vx6urqMDc3f+YynoehWMYYe5nwUCx7rhgYGMDAwKCjq6F0ampqsLKy6uhqyNHR0YGOjk5HV4MxxthzgIdiGWOMMcY6Ce7YMcYYY4x1EtyxY4wxxhjrJHiOHWPshXL9+nWUPnxQbx87gPeyY4wx7tgxxl4Y169fh42NDZyMVZA+XxvOu0tx8Z5MLk12drbCzp29vX2jrx5rjKqqKvT09PDkyRNIpVJoa2ujuroaxsbGGDFiBDQ0NODh4QEPDw+Fr7Rjba+6uhpJSUnIz7lsoukAACAASURBVM+HiYkJhg8fzveCvZR4KJa1Ow8PjybfoLB3717o6+srtdzZs2dj0qRJSs3zedQWbfe8KCkpAQBs3LgRQM0efmlpaUhLS0N0dLRcmrpEIlGrO3VATaehsLBQ2Frmxo0byM3Nxblz57B582Zs3LgRo0ePhqmpKeLi4lpdDmuduLg4WFlZYeTIkZgxYwZGjhwJKysrvhfspcQdOwYA2LNnDzw8PKCrqwuRSIRHjx61WVlxcXHYsGGDcGxhYYHIyMg2K6+1EhMT27wtmqslndLp06cjOzu7jWvU9srKypCeno6ysrJ6cZaWlgAAO1tbODs7w9nZGXZ2dgrzEYlEbVrPWtra2rh//z58fX25Q9GO4uLi4OvrCwcHB6SmpqKkpASpqalwcHDge8FeStyxYwBq/oh6eXlh9erVbV6WgYEB77vWRp48eQKJRIJu3bp1dFWeWVZWFlxcXJCVldXqPOzt7ZVYI8XU1dUBAKWlpfDy8oJEIkFwcDCqq6vbvOyXXXV1NZYtWwZvb2/Ex8fD1dUV2tracHV1RXx8PLy9vflesJcOd+w6CZlMhrCwMFhaWkIikcDR0RGxsbEAgPXr18PU1BQFBQVC+gkTJmDkyJGQyWrmJwUFBWHlypVwdXVtcdm+vr5YtGiRcBwUFASRSCT8Qa6srISWlhZ++uknAPJDsR4eHvjjjz+wdOlSiESiek9XTp48CTs7O2hra8PLywv5+fnNqlN1dTXee+896Ovrw9DQEMuXL8fTL1mpqKjA4sWL0a1bN2hqamLYsGG4cOECACA3NxcjR44EAHTp0gUikQizZ89uslwPDw+8++67CAoKQpcuXdC9e3d88cUX+Pvvv/HWW29BR0cHVlZW+PHHH+XqOmfOHOHe9e3bF9u3bxfi165di3379uHo0aNCGyUmJiI3NxcikQgHDx6Eu7s7NDU1ERMTIzcUS0QYPXo0PD09hesvLCxEz5498dFHHzV4HRUVFSguLpb7tLfHjx8DADIzM5Geno709HRhOLWioqJF6dvSkydPhJ/LyspQVlaGmzdvIikpqc3LftklJSUhNzcXq1evhoqK/J8zFRUVrFq1iu8Fe/kQ6xQ2/n/s3XlcVOX+B/DPgDDMMCwixOLCuLCqILiTCOYGSmlqmmJimXa9lkvSdatwC3PLpbia3UITLBMRvVh6vQaCQOoFcUkQ8EqgoaQoSwjCzPf3hz/OdQRkm2FYvu/X67z0POc5z/M9zxmGh3Oe55z168nR0ZFOnDhBN27coNDQUBKLxRQbG0uVlZU0dOhQmjhxIhERffHFF2Rqakq//fZbtXJiYmIIAD148KDede/cuZN69+4trPfr14/Mzc1p165dRER09uxZ0tPToz///JOIiLy8vGjRokVERHT//n3q0qULrV27lvLy8igvL4+IiEJDQ0lPT49GjRpFFy5coOTkZHJycqIZM2bUK6aNGzdSx44d6fDhw3Tt2jWaM2cOGRkZ0YQJE4Q8CxcuJBsbG/rxxx/p119/pYCAAOrYsSPdv3+fKisr6fDhwwSArl+/Tnl5efTw4cM66/Xy8iIjIyNat24dZWRk0Lp160hXV5d8fX1pz549lJGRQfPnz6dOnToJ7fH48WP6+OOP6cKFC/Tf//6XwsLCSCqV0sGDB4mIqLi4mKZOnUo+Pj5CG5WXl9PNmzcJAMnlcjp8+DD997//pd9//51CQ0PJxMREiOnWrVvUsWNH2r59OxERvfbaazRo0CCqqKio9TiCgoIIQLWlsLCwXu2vDmFhYTXGAICO/yOYKMiY6PbFeuVvrsXZ2Vn4/4EDB5qtrdqrAwcOEAAqLi6ucXtRURGfC9ZqFRYWNup7lzt2bUBZWRlJpVJKTExUSZ8zZw5Nnz6diIhu3LhBRkZGtGzZMpJIJBQeHl5jWY3p2F2+fJlEIhHl5+dTQUEB6evr07p162jatGlE9KTT6eHhIeR/umNHRGRra0vbtm1TKTM0NJQAUFZWlpAWEhJClpaW9YrJ2tqaNm3aJKxXVFRQly5dhI5dSUkJ6enpqbTD48ePycbGRtivMW3h5eVFw4YNE9YrKyvJ0NCQ3njjDSEtLy+PAFBSUlKt5SxYsIAmT54srAcEBKh0SolI6NhVddiqPNuxIyL64YcfyMDAgJYvX06GhoaUkZHx3OMoKyujwsJCYcnNzW32jt3Zs2cJAIWFhVFycjIlJycLnbeLP+6t1rGrKX9zd+yGDx8u/D8mJqbZ2qq9qvoZre1nKTExkc8Fa7Ua27Hjx520AVlZWSgtLcXo0aNV0h8/fgw3NzcAQI8ePbBlyxa88847mDZtGmbMmKG2+vv06QMzMzOcOXMG+vr6cHNzg5+fH0JCQgAAZ86cgbe3d4PLlUql6Nmzp7BubW2N/Pz8OvcrLCxEXl4eBg8eLKR16NABAwYMEG5H3rhxAxUVFXjxxReFPHp6ehg0aFCTb9+5uLgI/9fV1UWnTp3Qt29fIc3S0hIAVI4lJCQE33zzDXJycvDo0SM8fvwY/fr1q1d9AwYMqDPPa6+9hiNHjuDTTz/Frl276nzWm1gshlgsrlf9miKRSAAATk5OcHd3V9lWU2w15XdyctL47Vg9PT3hdqxUKoVUKoWlpSU8PT01Wi8DPD09IZfLERwcjKioKJXbsU8PT+FzwdoT7ti1ASUlJQCA48ePo3Pnzirbnv4FGBcXB11dXWRnZ6OyshIdOqjn9ItEIgwfPhyxsbEQi8Xw9vaGi4sLysvLcfXqVSQmJiIwMLDB5VYNSn+6HnpmnFxLVFPcT6dVjSOsGt/4/fffIzAwEFu3bsXQoUNhZGSEzZs349y5c/Wqz9DQsM48paWlSE5Ohq6uLjIzM+t7KK3etWvXND4rtqpTJ5PJcOLECYhEImzZsoWfodYMdHV1sXXrVkyZMgUTJ07EihUr0KdPH1y9ehUbNmxAdHQ0IiIi+FywdoUnT7QBzs7OEIvFyMnJQa9evVSWrl27AgAOHjyIyMhIxMbGIicnR+VxI+rg5eWF2NhYxMbGwtvbGzo6Ohg+fDg2b96M8vJylStjz9LX11frrDUTExNYW1urdIwqKyuRnJwsrPfs2RP6+vpISEgQ0ioqKnDhwgVhJqW+vj4AaHxGXUJCAjw8PPDXv/4Vbm5u6NWrF27cuKGSp6lttHTpUujo6OCnn37Czp078fPPPzc1bI1zdHREcnIyHB0dm1ROc/0xUFJSghdeeAERERGYNGlSs9TJgEmTJiEiIgJXrlyBh4cHjI2N4eHhgatXr/K5YO0SX7FrA4yMjBAYGIglS5ZAqVRi2LBhKCwsREJCAoyNjTFy5EjMnz8fGzduxLBhwxAaGgo/Pz/4+voKs2Dv3LmDO3fuICsrCwBw5coVGBkZoVu3bjAzM6szBm9vbyxZsgT6+voYNmyYkBYYGIiBAwc+96qSXC5HXFwcXn/9dYjFYpibmze5TRYtWoRPP/0UdnZ2cHR0xGeffabyPDpDQ0PMnz8fH3zwAczMzNCtWzds2rQJpaWlmDNnDgDA1tYWIpEI0dHRGDduHCQSCWQyWZNje5adnR2+/fZbnDx5Et27d8f+/ftx4cIF4VltwJM2OnnyJK5fv45OnTrBxMSk3uUfP34c33zzDZKSkuDu7o4PPvgAAQEBuHz5Mjp27Kj241EXqVRa7RZs1TPt0tPT4QQgLT0dj/7/zRPPu+VKRPzmiTZs0qRJmDBhAr95gjGAZ8W2FUqlkrZv304ODg6kp6dHFhYWNHbsWIqNjaWRI0fS2LFjSalUCvnfe+896tmzpzCbrLZZkKGhofWqX6FQUMeOHWnw4MFC2sWLFwkALV++XCXvs5MnkpKSyMXFhcRiMVV9JGuaAHDkyBGq70e2oqKCFi1aRMbGxmRqakrvv/8+zZo1S2UCwqNHj+i9994jc3NzEovF9OKLL9L58+dVylm7di1ZWVmRSCSigICAOut99tiIap4cAoCOHDlCRE8mKsyePZtMTEzI1NSU5s+fT8uXLydXV1chf35+Po0ePZpkMpkwGLxq8sTFixdVyn667fLz88nS0pKCg4OF7Y8fP6b+/fvT1KlT6zyeKo0dxKtuX331FQEgNysdoiBjcrPSqfaZrWtiCGOMtQaN/d4VEbWCQUuMMa0qKiqCiYkJCgsLYWxsrLU47t27h6ioKDjbydFRcQ9lsm6gDgbCdiMjozonhjDGWGvQ2O9d7tgxxurUUjp2jDHWXjT2e5cnT7A6BQcHQyaT1bj4+vpqJaba4pHJZBp7ynxOTs5z683JydFIvYwxxlh98RU7VqeCggIUFBTUuE0ikVR7xEpzqJrkUZPOnTsLzzRTp8rKSmRnZ9e6XS6Xq+0RMi0NX7FjjLHm1djv3bb5W4iplZmZWb1mxjanXr16NXudHTp00Eq9jDHGWH3xrVjGGGOMsTaCO3aMMcYYY20Ed+wYY4wxxtoIHmPHGGNalpmZieLiYogqy2BQkqPyfD5+Nh9jrCG4Y8cYY1qUmZkJe3t7AICblQ5S3pHB/csSXPz/V6UBQEZGRrXOXVBQENauXdvoek1NTTFq1CiYmpri2rVrKCoqgouLC2bPno2XXnqJX8f1DIVCgdOnT+Prr79GYmIibt26Vec+HTp0QKdOnTBixAi89dZbGmlXhULBr1JTs1bfpmp/BwZjLVRNr/t6Vk2vMmttYmJiCAA9ePBAbWW2lFeKtUXJyckEgMLCwuja6e+Igozp2unvKDk5mcLCwggAJScnq+yDGl7/p87FxMSEDh8+rKUWaXkOHz5MxsbGLa5dDx8+THK5XKUOuVzO564JWlKbNvZ7l8fYMa3as2cPvL29YWxsDJFIhIcPH2qsrsjISKxbt05Yl8vl2L59u8bqU6fVq1ejX79+9crr4eGBvLw8mJiYaDgqVl+lpaVISUlBaWlprXmcnJzg5Oj45P+OjnB3d4eTk1O1fCKRSGNxisViAEBhYSEmT56MyMhIjdXVWkRGRmLy5MkoKipqclnqbNfIyEhMmTIFffv2RVJSEoqLi5GUlIS+fftiypQpfO4aoa20KXfsmFaVlpbCx8cHK1eu1HhdZmZmMDIy0ng92lRRUQF9fX1YWVlptAPAGiY9PR39+/dHenp6k8oJCgpSU0TViUQiWFpawsLCQlhfunQpFAqFxups6RQKBZYsWaLWMtXRrgqFAkuXLoWfnx+ioqIwZMgQyGQyDBkyBFFRUfDz80NgYGC7PncN1ZbalDt2rEmUSiU2bNiA7t27QyKRwNXVFREREQCAtWvXwsbGBvfv3xfyjx8/HiNGjIBS+WT80OLFi7F8+XIMGTKkwXVPmTIF7777rrC+ePFiiEQi4Zfn48ePYWhoiH//+98AAG9vbyxevFj4/2+//YYlS5ZAJBJV6wSdPHkSTk5OkMlk8PHxQV5eXr1imj17NiZOnIjg4GBYWlrC1NQUa9euRWVlJT744AOYmZmhS5cuCA0NVdlv2bJlsLe3h1QqRY8ePfDRRx+hoqICALB3716sWbMGly5dEmLdu3cvgCe/JHbt2oVXXnkFhoaG+OSTTxAbG6ty9fOtt96Ci4sLysvLhXZxc3PDrFmzaj2O8vJyFBUVqSys8R49egQASEtLQ0pKisqSlpamkud5+zVlTF1diAg5OTl44403hPXs7GyNvaKvNYiPj1f7qwLV0a7x8fHIzs7GypUroaOj+mtcR0cHK1aswM2bN9v1uWuottSmPHmCNcmGDRsQFhaG3bt3w87ODnFxcZg5cyYsLCywatUqnDhxAm+//TaOHDmCkJAQJCYm4tKlS9V+cBrDy8sLX375pbB+5swZmJubIzY2Fo6Ojrhw4QIqKirg4eFRbd/IyEi4urpi3rx5mDt3rsq20tJSbNmyBfv374eOjg5mzpyJwMBAhIeH1yuun3/+GV26dEFcXBwSEhIwZ84cJCYmYvjw4Th37hwOHjyId955B6NHj0aXLl0APJn5uHfvXtjY2ODKlSuYO3cujIyM8Le//Q3Tpk3D1atXceLECaGT+vRt1tWrV+PTTz/F9u3b0aFDB/z3v/9ViWfnzp1wdXXF8uXLsW3bNqxatQoPHz7EF198UesxbNiwAWvWrKnX8bK6Vb2KbubMmc/N82L33g3eT9169Oihsl7fP2raIk0ee1PKrtq3T58+NW6vSm/P566h2lSbamLAH2sfysrKSCqVUmJiokr6nDlzaPr06UREdOPGDTIyMqJly5aRRCKh8PDwGstqzID/y5cvk0gkovz8fCooKCB9fX1at24dTZs2jYiI1q9fTx4eHkL+ZydP2Nra0rZt21TKDA0NJQCUlZUlpIWEhJClpWW9YgoICCBbW1tSKBRCmoODA3l6egrrlZWVZGhoSN99912t5WzevJn69+8vrAcFBZGrq2u1fABo8eLFKmk1tWViYiLp6enRRx99RB06dKD4+PjnHkdZWRkVFhYKS25uLk+eaIKzZ88KEySSk5NVlqoJEmfPniW6fZEoyPjJvzXsBw1PmgBA77//vsp6TEyMdhtPi6p+ljSxNKVdq+JKSkqqcXtiYmK7P3cN1RLbtLGTJ/iKHWu0rKwslJaWYvTo0SrpVbf6gCd//W/ZsgXvvPMOpk2bhhkzZqit/j59+sDMzAxnzpyBvr4+3Nzc4Ofnh5CQEABPruB5e3s3uFypVIqePXsK69bW1sjPz6/3/r1791a5ImlpaanyV6Curi46deqkUubBgwexc+dO3LhxAyUlJaisrKz3S58HDBhQZ56hQ4ciMDAQ69atw7JlyzBs2LDn5heLxcJAetZ0EokEwJMJEu7u7s/N87z9Pv74Y43djhWJROjatSv2798vrNva2sLT01Mj9bUGnp6e6Natm1pvx6qjXT09PSGXyxEcHIyoqCiV75unh8e053PXUG2pTXmMHWu0kpISAMDx48eRmpoqLNeuXRPG2QFAXFwcdHV1kZ2djcrKSrXVLxKJMHz4cMTGxgqduKqxZFevXkViYiK8vLwaXK6enl61eoioSfvXlFY1zjApKQn+/v4YN24coqOjcfHiRaxatQqPHz+uV32GhoZ15lEqlUhISICuri6ysrLqeSSspdHk7XEiwt27d/HHH38I61u3bm1dz+9SM11dXWzbtk2tZaqjXXV1dbF161ZER0dj4sSJKjM4J06ciOjoaGzZsqVdn7uGakttyh071mjOzs4Qi8XIyclBr169VJauXbsCeHIlKjIyErGxscjJyVF53Ig6eHl5ITY2FrGxsfD29oaOjg6GDx+OzZs3o7y8HC+++GKt++rr67eIGU6JiYmwtbXFqlWrMGDAANjZ2eG3335TydPUWDdv3oz09HScOXMGJ06cqDZ5g2mWo6MjkpOT4fj/jzNpiob8kdFQVRNsTExMcPjwYUyaNEljdbUWkyZNwuHDh+t9Bf151NmukyZNQkREBK5cuQIPDw8YGxvDw8MDV69eRUREBJ+7Rmgrbcq3YlmjGRkZITAwEEuWLIFSqcSwYcNQWFiIhIQEGBsbY+TIkZg/fz42btyIYcOGITQ0FH5+fvD19RVmwd65cwd37twRriJduXIFRkZG6NatG8zMzOqMwdvbG0uWLIG+vr5we9Hb2xuBgYEYOHDgc69myeVyxMXF4fXXX4dYLIa5ubkaWqXh7OzskJOTg++//x4DBw7E8ePHceTIkWqx3rx5E6mpqejSpQuMjIzqfav04sWL+PjjjxEREYEXX3wRn332GRYtWgQvL69qA+WZZkil0lpvwVY92y4lJQWSHjI4AUhLT8ejO0phxuyziIjfPNGMJk2ahAkTJrS4N09UxdWq35LQwrSJNlX7aD/WriiVStq+fTs5ODiQnp4eWVhY0NixYyk2NpZGjhxJY8eOJaVSKeR/7733qGfPnlRcXExETyYFoIaBxaGhofWqX6FQUMeOHWnw4MFC2sWLFwkALV++XCXvs5MnkpKSyMXFhcRiMVX9KNT05okjR45QfX9UAgICaMKECc+tl6j6xI0PPviAOnXqRDKZjKZNm0bbtm1TiaOsrIwmT55MpqamKu0DgI4cOaJS9tOTJx49ekTOzs40b948lTyvvPIKeXh4UGVlZb2Oi988oTlfffWV8Ll3s9IhCjImNysdlZ+HjIwMbYfJGGtmjf3eFRFp8Lo+Y6xNKCoqgomJCQoLC9VyS4r9z7179xAVFQVHR0cY6uvAoCQHZbJuoA4GAJ5cGX/2PbGMsbavsd+73LFjjNWJO3aMMda8Gvu9y5MnWIsVHBwMmUxW4+Lr66uVmGqLRyaTtYonkjPGGGvb+Ioda7EKCgpQUFBQ4zaJRILOnTs3c0R47qNCOnfuXOOzyNoCvmLHGGPNq7HfuzwrlrVYZmZm9ZoZ25x69eql7RAYY4yxWvGtWMYYY4yxNoI7dowxxhhjbQR37BhjjDHG2ggeY8cYYy1UZmYmiouLAQCiyjJ+xh1jrE7csWOMsRYoMzMT9vb2wrqblQ5S3pHB/csSXLyjFNIzMjK4c8cYE/CtWNZiZGdnQyQSITU1Va3likQiREVFNVu93t7eWLx4sVrKUpdn26CuNmHaV3WlLiwsDMnJyQgPDwcAhIeHIzk5GWFhYSr5nhUREQGRSNSoRUdHBzKZDI6Ojujfvz9eeeUVzJ8/H/v370dsbCwUCkXzNAJjrMH4ih1rtD179uDAgQNISUlBcXExHjx4AFNTU22HxWqQl5eHjh071rrOtKu0tBTp6elwdHSEVCpV2ebk5AR3d3fgdx0gDnBydARs+j23PJFI1KR4iAh//vknrl+/DgBISUkBAOzevRsAIJfLsXXrVkyaNKlJ9TDG1I+v2LFGKy0thY+PD1auXKntUFgdrKysIBaLa11n2pWeno7+/fsjPT29yWU1tVNXH7q6upgyZQoiIyM1XhdjrGG4Y9eOKZVKbNiwAd27d4dEIoGrqysiIiIAAGvXroWNjQ3u378v5B8/fjxGjBgBpfLJ+J7Fixdj+fLlGDJkSKPqP3/+PNzc3GBgYIABAwbg4sWL1fKcOXMGgwYNglgshrW1NZYvX47Kykphu1wux/bt21X26devH1avXq2SlpeXB19fX0gkEvTo0UM4ztpcvXoVvr6+kMlksLS0xBtvvIF79+416jgfPHiAWbNmoWPHjpBKpfD19UVmZqZKnsOHD6N3794Qi8XC1ZCnyeVyrFu3DtOnT4ehoSE6d+6MkJCQesfAt2Lbh7o+1+qgo6OD7OxsjBs3DoGBgXxblrEWhjt27diGDRvw7bffYvfu3fj111+xZMkSzJw5E2fOnMGqVasgl8vx9ttvAwBCQkKQmJiIffv2QUen6R+bkpIS+Pn5wdnZGcnJyVi9ejUCAwNV8ty+fRvjxo3DwIEDcenSJezatQtff/011q9f3+D6PvroI0yePBmXLl2Cv78/Xn/9daSlpdWY9+HDh3jppZfg5uaG//znPzhx4gTu3r2LqVOnNupYZ8+ejf/85z84duwYkpKSQEQYN24cKioqAADJycmYOnUqXn/9dVy5cgWrV6/GRx99hL1796qUs3nzZri6uuLixYtYvnw5Fi1ahFOnTjUqprqUl5ejqKhIZWGa8+jRIwBAWloaUlJSkJKSInw+q7bVZ5/XXntN47EqlUooFAr06tULN2/e5HckM9bSEGuXysrKSCqVUmJiokr6nDlzaPr06UREdOPGDTIyMqJly5aRRCKh8PDwGsuKiYkhAPTgwYN61//ll19Sp06d6NGjR0Larl27CABdvHiRiIhWrlxJDg4OpFQqhTwhISEkk8lIoVAQEZGtrS1t27ZNpWxXV1cKCgoS1gHQX/7yF5U8gwcPpvnz5xMR0c2bN1XqXbduHY0ZM0Ylf25uLgGg69ev13lsXl5etGjRIiIiysjIIACUkJAgbL937x5JJBL64YcfiIhoxowZNHr0aJUyPvjgA3J2dhbWbW1tycfHRyXPtGnTyNfXt854iJ60wZEjR2pdf1ZQUBABqLYUFhbWqz7WMGFhYTW2NwAKCwt7kun2RaIg4yf/1rFPcyzz5s0jAHTgwAEtthxjbVdhYWGjvnf5il07lZWVhdLSUowePRoymUxYvv32W9y4cQMA0KNHD2zZsgUbN27EK6+8ghkzZqit/rS0NLi4uMDAwEBIGzp0aLU8Q4cOVRkz9OKLL6KkpAS3bt1qUH3Plj106NBar9hdunQJMTExKu3i6OgIAELb1FdaWho6dOiAwYMHC2mdOnWCg4ODUH9aWhpefPFFlf1efPFFZGZmqtzmasgxNNWKFStQWFgoLLm5uRqphz0hl8sB/G8G7NOzXqu21Wef5iSRSAAA1tbWzVovY+z5eFZsO1VSUgIAOH78ODp37qyy7elB9XFxcdDV1UV2djYqKyvRoUPL+sjo6OiAiFTSqm5xNlZJSQlefvllbNy4sdq29vJLTCwW8+SKZlTVSRJmwNawrT77HDp0SOO3Y3V0dCASiZCVlYXu3bvD09NTo/UxxhqGr9i1U87OzhCLxcjJyUGvXr1Ulq5duwIADh48iMjISMTGxiInJwfr1q1TW/1OTk64fPkyysrKhLRffvmlWp6qMWlVEhISYGRkhC5dugAALCwskJeXJ2wvKirCzZs3q9X3bNm//PILnJycaozN3d0dv/76K+RyebW2MTQ0bPBxVlZW4ty5c0La/fv3cf36dTg7Owt5EhISVPZLSEiAvb09dHV1G3UMrHVxdHREcnKycGW4saZMmaKmiGqnVCohl8vx448/YsuWLSqfUcaY9nHHrp0yMjJCYGAglixZgn379uHGjRtISUnB559/jn379uHWrVuYP38+Nm7ciGHDhiE0NBTBwcEqnYs7d+4gNTUVWVlZAIArV64gNTUVBQUFddY/Y8YMiEQizJ07F9euXRN+STztr3/9K3Jzc/Hee+8hPT0dR48eRVBQEN5//31hAsdLL72E/fv3Iz4+Hleu67WqoAAAIABJREFUXEFAQECNv2gOHTqEb775BhkZGQgKCsL58+fx7rvv1hjbggULUFBQgOnTp+PChQu4ceMGTp48iTfffLPBMwDt7OwwYcIEzJ07F2fPnsWlS5cwc+ZMdO7cGRMmTAAALF26FKdPn8a6deuQkZGBffv24Ysvvqg2mSQhIQGbNm1CRkYGQkJCcOjQISxatKhB8bCWSSqVwt3dXeUZdqWlpQDwv8kU//8olLT0dJXJFc969gq2JiiVSkRERPBz7BhriTQx4I+1DkqlkrZv304ODg6kp6dHFhYWNHbsWIqNjaWRI0fS2LFjVSYuvPfee9SzZ08qLi4motoH2IeGhtar/qSkJHJ1dSV9fX3q168fHT58WGUSAxFRbGwsDRw4kPT19cnKyoqWLVtGFRUVwvbCwkKaNm0aGRsbU9euXWnv3r01Tp4ICQmh0aNHk1gsJrlcTgcPHhS2Pzt5gujJpIdXX32VTE1NSSKRkKOjIy1evFilPWrz9OQJIqKCggJ64403yMTEhCQSCY0dO5YyMjJU9omIiCBnZ2fS09Ojbt260ebNm1W229ra0po1a+i1114jqVRKVlZWtGPHjrob+ak2aMjkiWc1dhAva7yvvvpK5efKzUqHKMiY3Kx0VNKf/SxVOXToUKMnRohEIjI0NCQHBwdyd3enl19+mf7yl7/Qt99+SzExMVRZWdnMrcFY+9PY710RUTP8eccYaxK5XI7Fixer5VVl5eXlMDAwwKlTpzBq1Kh67VNUVAQTExMUFhbC2Ni4yTGwut27dw9RUVHC2yhElWUwKMlBmawbqMOTSUdGRkb8nljG2qjGfu+2rJHwjDGNKioqQmRkJHR0dJo8notplrm5ufAcyf/x0EosjLHWg8fYMY0IDg5WeVzI04uvr6+2w2u0nJycWo9LJpMhJyen2WMKDw+vNZ7evXur5A0KCsKyZcuwceNGYQIKY4yxtoNvxTKNKCgoqHUShUQiqfaIldaisrIS2dnZtW6Xy+XN/kiY4uJi3L17t8Ztenp6sLW1bXIdhYWFMDU1RW5uLt+KZYyxZlBUVISuXbvi4cOHMDExqfd+3LFjjNXp1q1bwmNwGGOMNZ/c3NwG3WHhjh1jrE5KpRL29vZITk5WeRNIlYEDB+LChQtNTqv6C7U5rgzWFIum9q8r7/O217atPu2rrbatLT5N7FufvA1pw9rS+bPb8O382W1aXiJC//79kZGR0aB3tPPkCcZYnXR0dKCvr1/r7QBdXd1qX7hNSTM2Ntb4F3hN9Wpq/7ryPm97bdvq05baatva6tbEvvXJ25A2rC2dP7sN386f3abn1dfXb1CnDgB0V69evbpBezDG2q1BgwY1aFtD08rLy/Hpp59ixYoVzfJKs+cdj7r3rytvQ9u2tvRn07TVtrXFp4l965O3IW1YWzp/dhu+nT+7Tc/b0Fj4VixjrMXg5+VpDretZnH7ag63bcPwFTvGWIuiq6sLb2/vZp9d3B5w22oWt6/mcNvWH1+xY4wxxhhrI/gBxYwxxhhjbQR37BhjjDHG2gju2DHGGGOMtRHcsWOMMcYYayO4Y8cYY4wx1kZwx44x1mqUlpbC1tYWgYGB2g6lzZHL5XBxcUG/fv0wYsQIbYfTpty8eRMjRoyAs7Mz+vbtiz///FPbIbUZ169fR79+/YRFIpEgKipK22FpFT8QhjHWanzyyScYMmSItsNosxITEyGTybQdRpsze/ZsrF+/Hp6enigoKGi2tye0Bw4ODkhNTQUAlJSUQC6XY/To0VqOSrv4ih1jrFXIzMxEeno6fH19tR0KY/X266+/Qk9PD56engAAMzMzfsiuhhw7dgwjR46EoaGhtkPRKu7YMcY0Li4uDi+//DJsbGwgEolqvFUSEhICuVwOAwMDDB48GOfPn1fZHhgYiA0bNjRXyK2KOtpXJBLBy8sLAwcORHh4eHOF3uI1tW0zMzMhk8nw8ssvw93dHcHBwc0Zfounjs9ulR9++AHTpk3TdMgtHnfsGGMa9+eff8LV1RUhISE1bj948CDef/99BAUFISUlBa6urhg7dizy8/MBAEePHoW9vT3s7e2bM+xWo6ntCwBnz55FcnIyjh07huDgYFy+fLm5wm/Rmtq2lZWViI+Px9///nckJSXh1KlTOHXqVHMeQoumjs8u8OR9somJiRg3blxzhN2yEWOMNSMAdOTIEZW0QYMG0YIFC4R1hUJBNjY2tGHDBiIiWr58OXXp0oVsbW2pU6dOZGxsTGvWrGnWuFuLxrTvswIDAyk0NFSTYbZKjWnbxMREGjNmjLB906ZNtGnTpuYJuJVpymf322+/JX9//2aJs6XjK3aMMa16/PgxkpOTMWrUKCFNR0cHo0aNQlJSEgBgw4YNyM3NRXZ2NrZs2YK5c+fi448/1lbIrUp92vfPP/9EcXExgCcD0H/++Wf07t1bK/G2JvVp24EDByI/Px8PHjyAUqlEXFwcnJyctBVyq1Kf9q3Ct2H/h0dwMsa06t69e1AoFLC0tFRJt7S0RHp6upaiajvq0753797Fq6++CgBQKBSYO3cuBg4c2Oyxtjb1adsOHTogODgYw4cPBxFhzJgx8PPz00a4rU59vxsKCwtx/vx5HD58uLlDbJG4Y8cYa1Vmz56t7RDanB49euDSpUvaDqPN8vX15dncGmRiYoK7d+9qO4wWg2/FMsa0ytzcHLq6utW+mO/evQsrKystRdV2cPtqDretZnH7Ng537BhjWqWvr4/+/fvj9OnTQppSqcTp06cxdOhQLUbWNnD7ag63rWZx+zYO34pljGlcSUkJsrKyhPWbN28iNTUVZmZm6NatG95//30EBARgwIABGDRoELZv344///wTb775phajbj24fTWH21azuH01QNvTchljbV9MTAwBqLYEBAQIeT7//HPq1q0b6evr06BBg+iXX37RXsCtDLev5nDbaha3r/qJiIiatyvJGGOMMcY0gcfYMcYYY4y1EdyxY4wxxhhrI7hjxxhjjDHWRnDHjjHGGGOsjeCOHWOMMcZYG8EdO8YYY4yxNoI7dowxxhhjbQR37BhjjDHG2gju2DHGGGOMtRHcsWOMMcYYayO4Y8cYY0xrYmNjIRKJ8PDhQ22HwlibwB07xhhjzcLb2xuLFy9WSfPw8EBeXh5MTEy0FBXQvXt3/Pvf/9Za/YypUwdtB8AYY6z90tfXh5WVldbqv3z5Mh48eAAvLy+txcCYOvEVO8YYYxo3e/ZsnDlzBjt27IBIJIJIJEJ2dna1W7F79+6FqakpoqOj4eDgAKlUiilTpqC0tBT79u2DXC5Hx44dsXDhQigUCqH88vJyBAYGonPnzjA0NMTgwYMRGxtbZ1xHjx6Fj48P9PT0atwuEonwj3/8A6+++iqkUins7Oxw7NgxYfuDBw/g7+8PCwsLSCQS2NnZITQ0tGmNxVgTcMeOMcaYxu3YsQNDhw7F3LlzkZeXh7y8PHTt2rXGvKWlpdi5cye+//57nDhxArGxsXj11Vfx448/4scff8T+/fvx5ZdfIiIiQtjn3XffRVJSEr7//ntcvnwZr732Gnx8fJCZmfncuI4dO4YJEyY8N8+aNWswdepUXL58GePGjYO/vz8KCgoAAB999BGuXbuGn376CWlpadi1axfMzc0b2DqMqQ/fimWMMaZxJiYm0NfXh1QqrfPWa0VFBXbt2oWePXsCAKZMmYL9+/fj7t27kMlkcHZ2xogRIxATE4Np06YhJycHoaGhyMnJgY2NDQAgMDAQJ06cQGhoKIKDg2us5/bt27h8+TJ8fX2fG8/s2bMxffp0AEBwcDB27tyJ8+fPw8fHBzk5OXBzc8OAAQMAAHK5vCHNwpjacceOMcZYiyKVSoVOHQBYWlpCLpdDJpOppOXn5wMArly5AoVCAXt7e5VyysvL0alTp1rrOXbsGIYNGwZTU9PnxuPi4iL839DQEMbGxkLd8+fPx+TJk5GSkoIxY8Zg4sSJ8PDwqP/BMqZm3LFjjDHWojw73k0kEtWYplQqAQAlJSXQ1dVFcnIydHV1VfI93Rl81rFjx/DKK680Kp6qun19ffHbb7/hxx9/xKlTpzBy5EgsWLAAW7ZsqbNcxjSBx9gxxhhrFvr6+ioTHtTFzc0NCoUC+fn56NWrl8pS223fkpISxMTE1Dm+rj4sLCwQEBCAsLAwbN++HXv27GlymYw1Fl+xY4wx1izkcjnOnTuH7OxsyGQymJmZqaVce3t7+Pv7Y9asWdi6dSvc3Nzwxx9/4PTp03BxccH48eOr7XPixAnY29s3eUzcxx9/jP79+6N3794oLy9HdHQ0nJycmlQmY03BV+wYY4w1i8DAQOjq6sLZ2RkWFhbIyclRW9mhoaGYNWsWli5dCgcHB0ycOBEXLlxAt27dasx/9OjRet2GrYu+vj5WrFgBFxcXDB8+HLq6uvj++++bXC5jjSUiItJ2EIwxxlhzqayshKWlJX766ScMGjRI2+EwplZ8xY4xxli7UlBQgCVLlmDgwIHaDoUxteMrdowxxhhjbQRfsWOMMcYYayO4Y8cYY4wx1kZwx44xxhhjrI3gjh1jjDHGWBvBHTvGGGOMsTaCO3aMMcYYY20Ed+wYY4wxxtoI7tgxxhhjjLUR3LFjjDHGGGsjuGPHGGOMMdZGcMeOMcYYY6yN4I4dY4wxxlgbwR07xhhjjLE2gjt2jDHGGGNtBHfsGGOsnTl48CBmzpwJOzs7iEQieHt7q7X8vLw8LF++HCNGjICRkRFEIhFiY2NrzZ+YmIhhw4ZBKpXCysoKCxcuRElJSbV85eXlWLZsGWxsbCCRSDB48GCcOnVKrbE31b/+9S/MmTMHffr0ga6uLuRyuVrLv3DhAt5991307t0bhoaG6NatG6ZOnYqMjIwa86elpcHHxwcymQxmZmZ444038Mcff1TLp1QqsWnTJnTv3h0GBgZwcXHBd999p9bYWfPgjh1jjLUzu3btwtGjR9G1a1d07NhR7eVfv34dGzduxO3bt9G3b9/n5k1NTcXIkSNRWlqKzz77DG+//Tb27NmD1157rVre2bNn47PPPoO/vz927NgBXV1djBs3DmfPnlX7MTTWgQMHcODAAZiYmMDGxkbt5W/cuBGHDx/GyJEjsWPHDsybNw9xcXFwd3fH1atXVfLeunULw4cPR1ZWFoKDgxEYGIjjx49j9OjRePz4sUreVatWYdmyZRg9ejQ+//xzdOvWDTNmzMD333+v9mNgGkaMMcbalZycHFIoFERE1Lt3b/Ly8lJr+UVFRXT//n0iIjp06BABoJiYmBrz+vr6krW1NRUWFgppX331FQGgkydPCmnnzp0jALR582Yh7dGjR9SzZ08aOnSoWuNvitu3b9Pjx4+JiGj8+PFka2ur1vITEhKovLxcJS0jI4PEYjH5+/urpM+fP58kEgn99ttvQtqpU6cIAH355ZdC2q1bt0hPT48WLFggpCmVSvL09KQuXbpQZWWlWo+BaRZfsWOMsRZs9erVEIlEyMrKwuzZs2FqagoTExO8+eabKC0tFfKFhoZCJBLhm2++Udk/ODgYIpEIP/74o5DWtWtX6Oho7uvfyMgIZmZmdeYrKirCqVOnMHPmTBgbGwvps2bNgkwmww8//CCkRUREQFdXF/PmzRPSDAwMMGfOHCQlJSE3N7fBce7duxcikQgJCQl4//33YWFhAUNDQ7z66qsqtysDAgJgbm6OioqKamWMGTMGDg4OwrqNjQ309PQaHEt9eXh4QF9fXyXNzs4OvXv3Rlpamkr64cOH4efnh27duglpo0aNgr29vUrbHj16FBUVFfjrX/8qpIlEIsyfPx+3bt1CUlKSho6GaQJ37BhjrBWYOnUqiouLsWHDBkydOhV79+7FmjVrhO1vvvkm/Pz88P777wudnCtXrmDNmjWYM2cOxo0b1+A6KyoqcO/evXotSqWyweVfuXIFlZWVGDBggEq6vr4++vXrh4sXLwppFy9ehL29vUoHEAAGDRoE4Mkt3cZ67733cOnSJQQFBWH+/Pn45z//iXfffVfY/sYbb+D+/fs4efKkyn537tzBzz//jJkzZza4TqVSWe+2ralD+TQiwt27d2Fubi6k3b59G/n5+dXaFnjSZs+2raGhIZycnKrlq9rOWo8O2g6AMcZY3dzc3PD1118L6/fv38fXX3+NjRs3CmlfffUVevfujTlz5iA6OhoBAQGwsrLCZ5991qg6ExISMGLEiHrlvXnzZoMnCuTl5QEArK2tq22ztrZGfHy8St7a8gHA77//3qC6n9apUyf861//gkgkAvCk07Vz504UFhbCxMQEL730Erp06YKwsDD4+fkJ+3333XdQKpWN6tjl5OSge/fu9cobExPz3Aku4eHhuH37NtauXSuk1dW2BQUFKC8vh1gsRl5eHiwtLYXjfzof0LS2Zc2PO3aMMdYK/OUvf1FZ9/T0xJEjR1BUVCRcxbKyskJISAimT58OT09PpKam4tSpU9WuctWXq6trvWedWllZNbj8R48eAQDEYnG1bQYGBsL2qry15Xu6rMaYN2+eSqfG09MT27Ztw2+//QYXFxfo6OjA398fO3fuRHFxMYyMjAA86VB5eHjUu4P2NCsrq3q3raura63b0tPTsWDBAgwdOhQBAQFCel1tW5VHLBZrtG1Z8+OOHWOMtQJPj5MCIMxmffDggUrH7fXXX0dYWBiOHz+OefPmYeTIkY2us2PHjhg1alSj96+LRCIB8OQxJs8qKysTtlflrS3f02U1xvPatsqsWbOwceNGHDlyBLNmzcL169eRnJyM3bt3N6pOAwODJrftnTt3MH78eJiYmAhjEKvU1bZP59Fk27Lmxx07xhhrBZ7+pf00IlJZv3//Pv7zn/8AAK5duwalUtnoiRKPHz9GQUFBvfJaWFjUGmNtqm71Vd02fFpeXp7K40Ksra1x+/btGvMBaNKjRerTts7Ozujfvz/CwsIwa9YshIWFQV9fH1OnTm1UnQqFosbnydXEzMys2oSJwsJC+Pr64uHDh4iPj692/HW1rZmZmXCVztraGjExMSAilSuX6mhb1vx48gRjjLUhCxYsECZZnD17Ftu3b290WYmJibC2tq7X0phZqX369EGHDh2EjmiVx48fIzU1Ff369RPS+vXrh4yMDBQVFankPXfunLBd02bNmoWff/4ZeXl5OHDgAMaPH9/o5wDm5ubWu20TExNV9i0rK8PLL7+MjIwMREdHw9nZuVr5nTt3hoWFRbW2BYDz589Xa9vS0tJqs2qbs22Z+vAVO8YYayMiIiJw8OBB7Ny5U5jp+eGHH8LPzw/29vYNLk/TY+xMTEwwatQohIWF4aOPPhLGru3fvx8lJSUqDymeMmUKtmzZgj179iAwMBDAk9uMoaGhGDx4MLp27drg+htq+vTpWLp0KRYtWoT//ve/2Lx5c6PLauwYO4VCgWnTpiEpKQlHjx7F0KFDa91v8uTJ2LdvH3Jzc4X2OX36NDIyMrBkyRIh34QJE7BkyRL8/e9/xxdffAHgydXK3bt3o3PnzvDw8GjMITIt4Y4dY4y1Afn5+Zg/fz5GjBghPKrjiy++QExMDGbPno2zZ88Kt2Tj4uIQFxcHAPjjjz/w559/Yv369QCA4cOHY/jw4QCaNsauqrxff/0VwJPOWtUbIj788EMh3yeffAIPDw94eXlh3rx5uHXrFrZu3YoxY8bAx8dHyDd48GC89tprWLFiBfLz89GrVy/s27cP2dnZKrOFgSfP/luzZk2ds0kbysLCAj4+Pjh06BBMTU0xfvz4ankuX76MY8eOAQCysrJQWFgotIWrqytefvllAI0fY7d06VIcO3YML7/8MgoKChAWFqay/ekZuitXrsShQ4cwYsQILFq0CCUlJdi8eTP69u2LN998U8jXpUsXLF68GJs3b0ZFRQUGDhyIqKgoxMfHIzw8vMG32JmWafXxyIwxxp4rKCiIANAff/yhkh4aGkoA6ObNm0RENGnSJDIyMqLs7GyVfEePHiUAtHHjxmpl1rQEBQWpJe7ayq/p1058fDx5eHiQgYEBWVhY0IIFC6ioqKhavkePHlFgYCBZWVmRWCymgQMH0okTJ6rlW7p0KYlEIkpLS3tujFVteOHCBZX0mJiYWt+W8cMPPxAAmjdv3nPLrGkJCAh4bjz14eXl1aC2vXr1Ko0ZM4akUimZmpqSv78/3blzp1o+hUJBwcHBZGtrS/r6+tS7d28KCwtrcrys+YmInhl5yxhjjLVigwYNgq2tLQ4dOqT2so8ePYqJEyciLi4Onp6eai+fsabijh1jjLE2o6ioCBYWFkhNTa32JgV18PPzQ1paGrKysqo90JexloDH2DHGGGszjI2Na3wmW1N9//33uHz5Mo4fP44dO3Zwp461WHzFjjHGGKuDSCSCTCbDtGnTsHv3bnTowNdFWMvEn0zGGGOsDnwNhLUW/IBixhhjjLE2gq/YMcbqpFQq8fvvv8PIyIjHFjHGWDMgIhQXF8PGxqZBrwXkjh1jrE6///57szzZnzHGmKrc3Fx06dKl3vm5Y8cYq1PVq55yc3NhbGys5WgYY6ztKyoqQteuXYXv3/rijh1jrE5Vt1+NjY25Y8cYY82oocNfePIEY4wxxlgbwR07xhhjjLE2gm/FMsZanMzMTJQ8+AMGJTkok3UDdTCAkZER7OzstB0aY4y1aNyxY0wN9u7di8WLF+Phw4e15pk9ezYePnyIqKioJtUlEolw5MgRTJw4sUnltFSZmZmwt7eHm5UOUt6Rwf3LEly8owQAZGRkqHTuRo4ciZ9//lkjcRgYGMDU1BQDBgzAO++8g3PnzgEAvL294e3tDV1dXY3Uy5pGoVAgPj4eeXl5sLa2hqenJ58r1q5wx461Cnv27MGBAweQkpKC4uJiPHjwAKamptoOq0F27NjBT6+vQWlpKdLT0+Ho6AipVIri4mIAwPr164HcTxEeHo6UPAVmzpwpbAMaPqC4ocrKynDnzh1ER0cjOjpaSF+/fj1eeOEF7Nq1C5MmTdJoDKxhIiMjsXTpUmRnZwtpcrkcW7du5XPF2g0eY8dahdLSUvj4+GDlypXaDqXRTExMWl1ntDmkp6ejf//+SE9PV0nv3r07AMDJ0RFOTk4q27T1kGQHBwcMGzYM+fn5mDJlCiIjI7USB6suMjISU6ZMQd++fZGUlITi4mIkJSWhb9++fK5Yu8IdO9YslEolNmzYgO7du0MikcDV1RUREREAgLVr18LGxgb3798X8o8fPx4jRoyAUvnkFtzixYuxfPlyDBkypFH15+bmYurUqTA1NYWZmRkmTJig8lf9hQsXMHr0aJibm8PExAReXl5ISUlRKePhw4d45513YGlpCQMDA/Tp00flSg4AnDx5Ek5OTpDJZPDx8UFeXp6wbfbs2Sq3T729vbFw4UL87W9/g5mZGaysrLB69WqV8jIzMzF8+HAYGBjA2dkZp06datCxlZWVoXfv3pg3b56Q/8aNGzAyMsI333zT0GZsEUaOHKm1uq9fv47jx4/Dz88PEokEgYGBUCgUWouHPaFQKLB06VL4+fkhKioKQ4YMgUwmw5AhQxAVFQU/Pz8+V6zd4I4daxYbNmzAt99+i927d+PXX3/FkiVLMHPmTJw5cwarVq2CXC7H22+/DQAICQlBYmIi9u3b16DXqNSmoqICY8eOhZGREeLj45GQkCB0vB4/fgwAKC4uRkBAAM6ePYtffvkFdnZ2GDdunHDrT6lUwtfXFwkJCQgLC8O1a9fw6aefqozdKS0txZYtW7B//37ExcUhJycHgYGBz41t3759MDQ0xLlz57Bp0yasXbtW6LwplUpMmjQJ+vr6OHfuHHbv3o1ly5Y16NgMDAwQHh6Offv24ejRo1AontzSHD16NN56661a4yovL0dRUZHKoimPHj0CAKSlpSElJQVpaWlCDDXl0dSYuvoKCAjAypUrUVpaips3byI+Pl6r8TAgPj4e2dnZWLlyZbXvDB0dHaxYsYLPFWs/iDENKysrI6lUSomJiSrpc+bMoenTpxMR0Y0bN8jIyIiWLVtGEomEwsPDaywrJiaGANCDBw/qXf/+/fvJwcGBlEqlkFZeXk4SiYROnjxZ4z4KhYKMjIzon//8JxERnTx5knR0dOj69es15g8NDSUAlJWVJaSFhISQpaWlsB4QEEATJkwQ1r28vGjYsGEq5QwcOJCWLVsm1NmhQwe6ffu2sP2nn34iAHTkyJEGHdumTZvI3Nyc3n33XbK2tqZ79+7V0lpPBAUFEYBqS2Fh4XP3a4ywsLAa6zr+j2CiIGOi2xdrzaONpW/fvlRUVCSsHzhwQO1twhrmwIEDBICKi4tr3F51vvhcsdaksLCwUd+7fMWOaVxWVhZKS0sxevRoyGQyYfn2229x48YNAECPHj2wZcsWbNy4Ea+88gpmzJihtvovXbqErKwsGBkZCXWbmZmhrKxMqP/u3buYO3cu7OzsYGJiAmNjY5SUlCAnJwcAkJqaii5dusDe3r7WeqRSKXr27CmsW1tbIz8//7mxubi4qKw/vU9aWhq6du0KGxsbYfvQoUMbfGwAsHTpUtjb2+OLL77AN998g06dOj03rhUrVqCwsFBYcnNzn5u/KeRyOQAgLCwMycnJCAsLAwCV4346j7b17NkTV69eFdatra21GA0D/ncOnj4vT6tK53PF2gOeFcs0rqSkBABw/PhxdO7cWWWbWCwW/h8XFwddXV1kZ2ejsrISHTqo5+NZUlKC/v37Izw8vNo2CwsLAE9ur92/fx87duyAra0txGIxhg4dKtyqlUgkddajp6ensi4SieqcBVvTPlXjCuujPscGAPn5+cjIyICuri4yMzPh4+Pz3HLFYrHKudGkqrZ1cnKCu7u7Sgw15XnppZe0ejt237598Pf3h1QqhaWlJTw9PbUWC3vC09MTcrkcwcHBiIqKUrlqq4U7AAAgAElEQVQd+/T4Xj5XrD3gK3ZM45ydnSEWi5GTk4NevXqpLF27dgUAHDx4EJGRkYiNjUVOTg7WrVuntvrd3d2RmZmJF154oVr9JiYmAICEhAQsXLgQ48aNQ+/evSEWi3Hv3j2hDBcXF9y6dQsZGRlqi6suTk5OyM3NVZmA8csvv6jkqc+xAcBbb72Fvn37Yt++fVi2bJkwjq0lcHR0RHJyMhwdHeuV//Tp0xqOqHb29vYYN24coqOj8ejRI2zZsoWfkdYC6OrqYuvWrYiOjsbEiRNVZsVOnDgR0dHRfK5Yu8EdO6ZxRkZGCAwMxJIlS7Bv3z7cuHEDKSkp+Pzzz7Fv3z7cunUL8+fPx8aNGzFs2DCEhoYiODhYpRNz584dpKamIisrCwBw5coVpKamoqCgoM76/f39YW5ujgkTJiA+Ph43b95EbGwsFi5ciFu3bgEA7OzssH//fqSlpeHcuXPw9/dXuUrn5eWF4cOHY/LkyTh16hRu3ryJn376CSdOnFBza/3PqFGjYG9vj4CAAFy6dAnx8fFYtWpVg48tJCQESUlJwpWmiRMnwt/fX7gaqW1SqRTu7u6QSqUAnkxCASA8/iQtPb1aR7SuK6GakpGRgYSEBLzwwguIiIjgZ6O1IJMmTUJERASuXLkCDw8PGBsbw8PDA1evXuVzxdoXjYz4Y+wZSqWStm/fTg4ODqSnp0cWFhY0duxYio2NpZEjR9LYsWNVJgC899571LNnT2EwdG2D+UNDQ+tVf15eHs2aNYvMzc1JLBZTjx49aO7cucKg1JSUFBowYAAZGBiQnZ0dHTp0iGxtbWnbtm1CGffv36c333yTOnXqRAYGBtSnTx+Kjo4moieTJ0xMTFTqPHLkCD39I1bT5IlFixap7DNhwgQKCAgQ1q9fv07Dhg0jfX19sre3pxMnTqhMnqjr2NLS0kgikagMGn/w4AF17dqV/va3v9Wr7YgaP4i3Mb766isCQG5WOkRBxuRmpSOc74yMDJW8L730ksYmSRgYGJCVlRX5+fnRP//5T/rwww/pww8/pH//+99UWVmp8XZgjVNZWUkxMTF04MABiomJ4XPFWq3Gfu+KiPhR+Iyx5ysqKoKJiQkKCwthbGys0bru3buHqKgoONvJ0VFxj98Vyxhrlxr7vcsdO8ZYnZqzY8cYY6zx37s8xo61esHBwSqPUXl68fX11XZ4jDHGWLPhK3as1SsoKKh1EoVEIqn2iBXWcHzFjjHGmldjv3f5OXas1TMzM4OZmZm2w2CMMca0jm/FMsYYY4y1EdyxY4wxxhhrI7hjxxhjjDHWRnDHjjHGGGOsjeDJE4yxFiczMxMlD/6AQUkOP6CYMcYagDt2jLEWJTMzE/b29nCz0kHKOzK4f1mCi3eUAJ68q7Wqc6dQKNChg+a+wkQiEeRyOaysrNCjRw8EBATAy8sLiYmJyMvLg7W1NTw9PfnF8i2AQqFAfHw8nxfG0MZuxe7duxempqbaDkOtsrOzIRKJkJqaCgCIjY2FSCTCw4cPtRxZ6ySXy7F9+3Zth1GjZ2MTiUSIiorSYkSaV1paipSUFJSWlgppxcXFAID169cDAMLDwxEWFqayLTIyUqOdOgAgIty8eRNJSUkIDw/HmDFjYGBggBEjRmDGjBkYMWIEevXqhcjISI3GwZ4vMjISvXr14vPC2P9r9o7dnj174O3tDWNj40Z1UJ73y27atGnIyMhQR5hq4e3tjcWLF6u1TA8PD+Tl5cHExESt5TZWTEwMxo0bh06dOkEqlcLZ2RlLly7F7du3m1y2Jjo2Fy5cwLx589Ra5urVq9GvXz+1lgkAeXl5bf7NGenp6ejfvz/S09OrbevevTsAwMnREU5OTkJ6ZGQkJk+e3GwxPq3qee5hYWFISkpC3759MWXKFO5EaElkZCSmTJmCvn37IikpCcXFxXxeWLvX7B270tJS+Pj4YOXKlWovWyKR4IUXXlB7uQ31+PFjjZWtr68PKysriEQijdVRX19++SVGjRoFKysrHD58GNeuXcPu3btRWFiIrVu3NrpcTbafhYUFpFKpxspXJysrK4jFYm2H0aIoFAqtdeqqiEQifPjhhxg4cCCioqLg5+eHwMBAKBQKrcbV3igUCixduhR+fn6IiorCkCFDIJPJMGTIED4vrF1rcMdOqVRiw4YN6N69OyQSCVxdXREREQEAWLt2LWxsbHD//n0h//jx4zFixAgolU/GyCxevBjLly/HkCFD1HQI//PsrdiqKyn79++HXC6HiYkJXn/9deF2Tl3HAzz58pgzZ46w3cHBATt27FCpd/bs2Zg4cSI++eQT2NjYwMHBocb45HI5goOD8dZbb8HIyAjdunXDnj17VPKcP38ebm5uMDAwwIABA3Dx4kWV7TXdik1ISIC3tzekUik6duyIsWPH4sGDB/U6vgcPHsDf3x8WFhaQSCSws7NDaGhonW1969YtLFy4EAsXLsQ333wDb29vyOVyDB8+HP/4xz/w8ccfAwDu37+P6dOno3PnzpBKpejbty++++47lbK8vb3x7rvvYvHixTA3N8fYsWMhl8sBAK+++qow1qnK0aNH4e7uDgMDA/To0QNr1qxBZeX/sXfvcVFV+//4XzNchhlmBgEVEJUBQQFFBE0RNTCPB1AMDqKkkXqOlQdLxcREPYlKQSYoeSIvfU6YYWVxy5+WfqwDisAxG5AkuQhKeMFMVC5nuA3z/v7hh/1zYLiI3IT1fDz2Q/bea6/1XmsPw3LvtfZWAnh0RWX79u0YPXo0BAIBRowYgbVr16qdg8dvd+7ZswcODg7Q19fHqFGjsHr1atTU1HD7mz9Tp0+fhp2dHcRiMTw9PVFeXt5m2zR/HqKiomBmZgZjY2O88cYbaGxs5NLcvXsXCxYsgFAohKWlJY4ePdoqn5ZXLG/evIklS5bAyMgI+vr6mDJlCi5cuNAt7dJSfX09qqqq1JaeUFtbCwDIz89HdnY2srOzkZ+fz8XQMl1/uDVNRCgtLUV6ejr4fD42b96M69evIz09va9DG1TS09NRWlqKLVu2gM9X/1PGzgszmD3xIJXIyEjEx8fjwIEDsLGxwblz5xAYGIhhw4Zh69atOHXqFF599VUkJycjNjYWmZmZyM3NbfWL11tKSkqQkpKCEydO4MGDB1i8eDHef/99vPfeex3Wx83NDSqVCiNHjsQ333wDY2NjZGZm4vXXX4eZmRkWL17MlfPjjz9CKpXizJkz7cYTHR2N8PBwbNmyBQkJCQgKCoKbmxvGjRuHmpoaeHt7Y+7cuYiPj8f169exbt26dvO7dOkS5syZg7/97W/48MMPoa2tjdTUVO5/qR3V75133sGVK1fw/fffY+jQoSguLub+iLbnm2++QUNDA95++22N+5s72HV1dZg8eTI2bdoEqVSKkydP4pVXXsGYMWMwdepULv1nn32GoKAgZGRkAHj0mrDhw4cjLi4Onp6e3EDo9PR0LFu2DPv27cOsWbNQUlLC3VoNCwtDYmIi9u7di6+++grjx4/HnTt3kJub22Y9+Hw+9u3bB0tLS1y7dg2rV6/G22+/jY8//phLo1AoEBUVhc8//xx8Ph+BgYEICQnR2BlrlpqaCjMzM6SmpqK4uBgBAQGYNGkSXnvtNQCPOn+3b99GamoqdHR0sHbtWty9e7fN/GpqauDm5gZzc3McP34cpqamyM7O5v7D1N3tEhkZiR07drS5v7uUlpYCAAIDA1vtu337Nia1SBcREdHjMXVWc+d+woQJautM72jZ/i2x88IMWvQE6urqSCQSUWZmptr2lStX0pIlS4iIqKSkhCQSCW3atImEQiEdPXpUY16pqakEgB48ePAkIRAASk5O1rgvLi6ODAwMuPWwsDASiURUVVXFbdu4cSNNmzat0/XR5I033qCFCxdy68uXLycTExOqr69XS+fm5kbr1q3j1i0sLCgwMJBbV6lUNHz4cNq/fz8RER08eJCMjY2ptraWS7N//34CQDk5OUTUut2WLFlCM2bM0BhnZ+q3YMEC+utf/9pmXdsSFBREUqn0iY8jIpo/fz5t2LCBW3dzcyMnJ6dW6TSd6zlz5lBERITats8//5zMzMyIiCg6OprGjh1LDQ0NGsu2sLCgvXv3thnbN998Q8bGxtx6XFwcAaDi4mJuW2xsLJmYmHDrYWFh5OjoyK0vX76cLCwsSKlUctsWLVpEAQEBRERUWFhIAOinn37i9ufn5xMAtdger//BgwdJIpFQRUWFxriftl1aqquro8rKSm65ceMGAaDKyspOHd9Z58+fJwAUHx9Pcrmc5HI5xcfHP/rMf3eYKExKdCuHS7dlyxYC0C+W1NRUIiLKzMxUW2d6R/N3YVZWlsb97Lwwz7rKysoufe8+0RW74uJiKBQKzJ07V217Q0MDnJycAABWVlaIiorCqlWrEBAQgKVLlz5JEd1OJpNBIpFw62ZmZtyVkc7UBwBiY2Px6aefoqysDLW1tWhoaGg1WN7BwQG6urodxjNx4kTuZx6PB1NTUy6e/Px8TJw4EXp6elya6dOnt5vfpUuXsGjRIo37OlO/oKAgLFy4ENnZ2fjzn/8MX19fuLq6dlgPIurUOL+mpiZERETg66+/xq1bt9DQ0ID6+vpW49wmT57cYV4AkJubi4yMDO6Ka3MZdXV1UCgUWLRoEWJiYmBlZQVPT0/MmzcPCxYsaHMG5Q8//IDIyEgUFBSgqqoKSqWSy6s5RpFIhDFjxnDHPP4Zasv48ePVHrdgZmaGy5cvA3h0nrW1tdXqbGtr2+6M7kuXLsHJyQlGRka90i4CgaBXxvcJhUIAgJ2dHZydnVvF0DKdr69vn1+14/F4sLCwwKxZs9SGOsyaNatP4xpsZs2axQ1vSUlJUbsrxM4LM5g9UceueezRyZMnYW5urrbv8S/hc+fOQUtLC6WlpVAqlT3+WIL26OjoqK3zeDzu9lVn6vPVV18hJCQE0dHRmD59OiQSCXbv3q02tgkA9PX1nzqermj+g6dJZ+rn5eWF3377Dd999x3OnDmDOXPm4I033kBUVFS75Y4dOxaVlZXcc6Pasnv3bnz44YeIiYnhxrIFBwe3miDR2farqanBjh074Ofn12qfnp4eRo0ahcLCQvzwww84c+YMVq9ejd27d+Ps2bOt2r60tBTe3t4ICgrCe++9ByMjI5w/fx4rV65EQ0MD17HTdM7o/2ZHtqU3zzPQve3Sn2lpaSExMbFPJ1AQEd5991389NNPiIyMxIkTJ5CQkMCem9bLtLS0EB0dDX9/f/j6+mLz5s2YMGEC8vLy2HlhBrUnGvhmb28PgUCAsrIyWFtbqy2jRo0CABw7dgxJSUlIS0tDWVkZwsPDeyTw7tCZ+mRkZMDV1RWrV6+Gk5MTrK2tUVJS0iPx2NnZ4ZdffkFdXR237T//+U+7x0ycOBE//vijxn2dqR/waKbo8uXLER8fj5iYmFYTOjTx9/eHrq4uPvjgA437myd3ZGRkwMfHB4GBgXB0dISVlVWnH0mjo6PTakabs7MzCgsLW9XH2tqa+x+7UCjEggULsG/fPqSlpSErK4u7WvY4uVwOlUqF6OhouLi4YOzYsbh9+3anYnsatra2UCqVkMvl3LbCwsJ2H/0zceJEXLp0Cffv39e4vzvbpTfZ2tpCLpfD1taW29b8TLvmR6DkFxRwEyoAwM/PD4mJib0b6P9pvkodGBgIV1dX5OXlISEhQWOHmul5fn5+SEhIwOXLl+Hq6gqpVMrOCzPoPdGlNIlEgpCQEKxfvx4qlQozZ85EZWUlMjIyIJVKMWfOHAQFBWHXrl2YOXMm4uLi4O3tDS8vL24W7J07d3Dnzh0UFxcDAC5fvszNEG3rNlNL169f5x7Y26wrrxrqqD7Lly+HjY0Njhw5gtOnT8PS0hKff/45Ll68yD1jqzstXboUW7duxWuvvYbNmzejtLS0wytnmzdvhoODA1avXo2///3v0NXVRWpqKhYtWoShQ4d2WL9t27Zh8uTJGD9+POrr63HixAm1Z4a1ZdSoUdi7dy/efPNNVFVVYdmyZZDJZLh58yaOHDkCsViM6Oho2NjYICEhAZmZmTA0NMSePXvw+++/w97evsMyZDIZfvzxR8yYMQMCgQCGhobYtm0bvL29MXr0aPj7+4PP5yM3Nxd5eXl49913cfjwYTQ1NWHatGkQiUSIj4+HUCiEhYVFq/ytra3R2NiIf/7zn1iwYAEyMjJw4MCBDuN6WuPGjYOnpydWrVqF/fv3Q1tbG8HBwe1elVuyZAkiIiLg6+uLyMhImJmZIScnByNGjMD06dO7tV16k0gkanULtrlDFx4ejr+sEuPll1/m3jzRPKzCz8+vx+8GsDdPPBv8/Pzg4+PD3jzBMM2edDCfSqWimJgYGjduHOno6NCwYcPIw8OD0tLSaM6cOeTh4UEqlYpLv2bNGhozZgxVV1cT0aOB5tAwEDkuLq5T5Ws6FgClp6drnDzx+KB2IqK9e/eShYVFh/U5e/YsET0aRL5ixQoyMDCgIUOGUFBQEIWGhrYaLO/j49MqVk2TJ1oO3Hd0dKSwsDBuPSsrixwdHUlXV5cmTZpEiYmJ7U6eICJKS0sjV1dXEggENGTIEPLw8OD2d1S/8PBwsrOzI6FQSEZGRuTj40PXrl3r1LkgIjpz5gx5eHiQoaEh6enpka2tLYWEhNDt27eJiKiiooJ8fHxILBbT8OHD6R//+ActW7ZMrb1atlOz48ePk7W1NWlra6uds1OnTpGrqysJhUKSSqU0depUOnToEBERJScn07Rp00gqlZK+vj65uLjQDz/80OY52LNnD5mZmZFQKCQPDw86cuSIWvu2/Ew1l/H4r46myRMtPw/r1q0jNzc3br28vJzmz59PAoGARo8eTUeOHGkVG1pMHiktLaWFCxeSVColkUhEU6ZMoQsXLnRLu3Skq4N4u+KPP/6gTz75hDLSztCVH7+k7AsZJJfLqaioqMfLZhiG6S+6+r3LI+pgsBDDMINeVVUVDAwMUFlZCalU2tfhMAzDDHhd/d4dUO+KZRiGYRiGGcz6VccuIiICYrFY4zLQ35nZ37BzwTAMwzDPnn51K/b+/fttzvoTCoWtHtnB9Bx2LpjHsVuxDMMwvaur37t994A5DYyMjDo9M5bpWexcMAzDMMyzp1/dimUYhmEYhmG6jnXsGIZhGIZhBgjWsWMYhmEYhhkg+tUYO4ZhmM64evUqah78Ab2aMtSJR4O09QA8ejNFV95CwzAMM1Cwjh3DMM+Uq1evYuzYsXAy5SN7lRjOB2u4V44BQFFRUavO3a5duxAaGtql8ng8HkxMTODp6YmKigrcvn0bI0aMgJmZGQwMDCCXy3H37l0YGBjA19cXa9euha6u7lPVkWEYpqv61eNOGKanyWQyBAcHIzg4uK9DaaVlbDweD8nJyfD19e3jyPrucScKhQIFBQWwtbWFSCQCAGRnZ2Py5Mk4+T8RmHfjfeQ/fxC1Q8YiPz8fgYGBkMvlau+f5fF4vRZvc3khISH44IMPerVchmEGFvbmCeaJHTp0CO7u7pBKpeDxeHj48OET55Gamop58+bB2NgYIpEI9vb22LBhA27duvXU8fF4PKSkpDx1Po+7ePEiXn/99W7Nc/v27Zg0aVK35gkA5eXlg/5h0AUFBZg8eTIKCgpa7bO0tAQA2NnawtnZGXZ2dq3S9FanTiKRcD8TEXbv3o233367V8pmGIZ5HOvYDWIKhQKenp7YsmVLl44/ePAg/vSnP8HU1BSJiYm4cuUKDhw4gMrKSkRHR3c5roaGhi4f25Fhw4ZxV376O1NTUwgEgr4O45m1a9euXitLoVBg3rx50NPT4zqTe/fu7dHPMsMwjCasY/cMU6lUiIyMhKWlJYRCIRwdHZGQkAAA2LlzJ0aMGIGKigou/fz58zF79myoVI/GIwUHByM0NBQuLi5PXPbNmzexdu1arF27Fp9++inc3d0hk8nw/PPP43/+53+wbds2AEBFRQWWLFkCc3NziEQiODg44Msvv1TLy93dHW+++SaCg4MxdOhQeHh4QCaTAQD+8pe/gMfjcesA8O2338LZ2Rl6enqwsrLCjh07oFQqATy6WrJ9+3aMHj0aAoEAI0aMwNq1a7ljZTIZYmJiuPU9e/bAwcEB+vr6GDVqFFavXo2amhpu/+HDhzFkyBCcPn0adnZ2EIvF8PT0RHl5eZtts2LFCvj6+iIqKgpmZmYwNjbGG2+8gcbGRi7N3bt3sWDBAgiFQlhaWuLo0aOt8ml5xfLmzZtYsmQJjIyMoK+vjylTpuDChQvd0i4t1dfXo6qqSm3pC7W1tQCA/Px8ZGdnIzs7G/n5+VyM7aXt6pi6rmhqaoKNjQ3q6urQPLpFqVTi448/7rUYGIZhADZ54pkWGRmJ+Ph4HDhwADY2Njh37hwCAwMxbNgwbN26FadOncKrr76K5ORkxMbGIjMzE7m5ueDzn74//80336ChoaHN201DhgwBANTV1WHy5MnYtGkTpFIpTp48iVdeeQVjxozB1KlTufSfffYZgoKCkJGRAeDRmy+GDx+OuLg4eHp6QktLCwCQnp6OZcuWYd++fZg1axZKSkq4W6thYWFITEzE3r178dVXX2H8+PG4c+cOcnNz26wHn8/Hvn37YGlpiWvXrmH16tV4++231f4gKxQKREVF4fPPPwefz0dgYCBCQkI0dsaapaamwszMDKmpqSguLkZAQAAmTZqE1157DcCjzt/t27eRmpoKHR0drF27Fnfv3m0zv5qaGri5ucHc3BzHjx+HqakpsrOzuU56d7dLZGQkduzY0eb+3lJaWgoACAwMbLXv9u3bmNTJtL2huWP5uJKSkj6IhGGYQY2YZ1JdXR2JRCLKzMxU275y5UpasmQJERGVlJSQRCKhTZs2kVAopKNHj2rMKzU1lQDQgwcPOl1+UFAQSaXSLsU+f/582rBhA7fu5uZGTk5OrdIBoOTkZLVtc+bMoYiICLVtn3/+OZmZmRERUXR0NI0dO5YaGho0lm1hYUF79+5tM7ZvvvmGjI2NufW4uDgCQMXFxdy22NhYMjEx4dbDwsLI0dGRW1++fDlZWFiQUqnkti1atIgCAgKIiKiwsJAA0E8//cTtz8/PJwBqsT1e/4MHD5JEIqGKigqNcT9tu7RUV1dHlZWV3HLjxg0CQJWVlZ06vrucP3+eAFB8fDzJ5XKSy+UUHx9PACjnu8NEYVKiWzka0wLo1WXdunWttrX3WWMYhmlPZWVll7532RW7Z1RxcTEUCgXmzp2rtr2hoQFOTk4AACsrK0RFRWHVqlUICAjA0qVLu618IurUwPSmpiZERETg66+/xq1bt9DQ0ID6+vpW49wmT57cqXJzc3ORkZGB9957T62Muro6KBQKLFq0CDExMbCysoKnpyfmzZuHBQsWQFtb80f9hx9+QGRkJAoKClBVVQWlUsnl1RyjSCTCmDFjuGPMzMzavboGAOPHj+euMjYfc/nyZQCPbhVqa2ur1dnW1pa7yqnJpUuX4OTk1Ob7e7u7XQQCQb8Y3ycUCgEAdnZ2ajNdAbSKr2Xa999/v9dux2ppaeHq1avQ09NDfX09iAja2tpYvXp1r5TPMAzTjI2xe0Y1jwM7efIkLl26xC1XrlzhxtkBwLlz56ClpYXS0lJuvFV3GDt2LCorK9sdawYAu3fvxocffohNmzYhNTUVly5dgoeHR6tB5fr6+p0qt6amBjt27FCr8+XLl7k/qqNGjUJhYSE+/vhjCIVCrF69Gs8//7za+LZmpaWl8Pb2xsSJE5GYmAi5XI7Y2FgA6hM4dHR01I7j8XjcOKq2aDqm+bZpVzR3WtrSne0yUGzatKnXyhKJRPjuu+/UxtitX7+ePc+OYZhexzp2zyh7e3sIBAKUlZXB2tpabRk1ahQA4NixY0hKSkJaWhrKysoQHh7ebeX7+/tDV1e3zWd1NT86JSMjAz4+PggMDISjoyOsrKxQVFTUqTJ0dHTQ1NSkts3Z2RmFhYWt6mxtbc2NHRQKhViwYAH27duHtLQ0ZGVlcVfLHieXy6FSqRAdHQ0XFxeMHTsWt2/ffpJm6BJbW1solUrI5XJuW2FhYbuPm5k4cSIuXbqE+/fva9zfne3Sn9ja2kIul8PW1pbbplAoAIB7BEp+QYHapIrHddQB7y7V1dXczzweDxs3bmTPsWMYpk+wW7HPKIlEgpCQEKxfvx4qlQozZ85EZWUlMjIyIJVKMWfOHAQFBWHXrl2YOXMm4uLi4O3tDS8vL24W7J07d3Dnzh0UFxcDAC5fvgyJRILRo0e3ecuv2ahRo7B37168+eabqKqqwrJlyyCTyXDz5k0cOXIEYrEY0dHRsLGxQUJCAjIzM2FoaIg9e/bg999/h729fYd1lMlk+PHHHzFjxgwIBAIYGhpi27Zt8Pb2xujRo+Hv7w8+n4/c3Fzk5eXh3XffxeHDh9HU1IRp06ZBJBIhPj4eQqEQFhYWrfK3trZGY2Mj/vnPf2LBggXIyMjAgQMHunA2nsy4cePg6emJVatWYf/+/dDW1kZwcHC7V+WWLFmCiIgI+Pr6IjIyEmZmZsjJycGIESMwffr0bm2X/kQkErW6BdvcoQsPD8dfVonx8ssvq7154vFnygGPOnfszRMMwwwa3T7aj+k1KpWKYmJiaNy4caSjo0PDhg0jDw8PSktLozlz5pCHhwepVCou/Zo1a2jMmDFUXV1NRI8G/UPDIPC4uLhOx3DmzBny8PAgQ0ND0tPTI1tbWwoJCaHbt28TEVFFRQX5+PiQWCym4cOH0z/+8Q9atmwZ+fj4cHm4ubnRunXrWuV9/Phxsra2Jm1tbbKwsOC2nzp1ilxdXUkoFJJUKqWpU6fSoUOHiIgoOTmZpk2bRlKplPT19cnFxYV++OEH7tiWkyf27NlDZmZmJBQKycPDg44cOaI2kSQuLo4MDAzU4kpOTr3u4QYAACAASURBVKbHf3U0TZ54vH5EROvWrSM3Nzduvby8nObPn08CgYBGjx5NR44caRUbWkweKS0tpYULF5JUKiWRSERTpkyhCxcudEu7dKSrg3h7wh9//EGffPIJZaSdoSs/fknZFzK4iRVFRUV9HR7DMEy36Or3LnulGMMwHeqrV4oxDMMMVuyVYgzDMAzDMIMc69gxGkVEREAsFmtcBvv7SxmGYRimv2K3YhmN7t+/3+YMTKFQCHNz816OiOlL7FYswzBM7+rq9y6bFctoZGRk1OHMWIZhGIZh+hd2K5ZhGIZhGGaAYB07hmEYhmGYAYJ17BiGYRiGYQYINsaOYZhnztWrV1Hz4A/o1ZShTjwapK0H4NFbJ2xsbPo4OoZhmL7DOnYMwzxTrl69irFjx8LJlI/sVWI4H6xRe6VYUVGRWueutrYWEyZMwLVr156qXB0dHYwYMQJBQUFYu3Yt0tPT8dlnn+HatWuoqKiAWCyGubk5xo8fDy0tLRgZGcHU1BTm5uaYNWsWtLS0nrjMpqYmpKeno7y8HGZmZl3Oh2GYQaQH3oLBMF1y/fp1AkA5OTndmi9avJqrp8tt6xVpfamj15V1pD+9UkwulxMAOvk/EURhUrry45ckl8spPj6eAJBcLufS+vj4aHxtXm8vMpmMEhMTn6ieiYmJJJPJnjofhmGeTV393mVj7JguO3ToENzd3SGVSsHj8fDw4cO+Dolpw8WLF/H6669z6+Xl5f36QdMKhQLZ2dlQKBRtprG0tAQA2NnawtnZGXZ2dmr7fX198e233/ZonADA52v+Gn38uVNDhw6Fv78/kpKSOpVnUlIS/P394eDggKysLFRXVyMrKwsODg5PlA/DMIMP69gxXaZQKODp6YktW7b0dShMB4YNGwaRSMStm5qaQiAQ9GFE7SsoKMDkyZNRUFDQpeNra2t7pVMHACNHjoRQKMSwYcPUtldVVcHLywsikQj37t3D/PnzERISgqampnbza2pqwoYNG+Dt7Y2UlBS4uLhALBbDxcUFKSkp8Pb27lQ+DMMMTqxjN4ipVCpERkbC0tISQqEQjo6OSEhIAADs3LkTI0aMQEVFBZd+/vz5mD17NlSqR+OZgoODERoaChcXly6V/9NPP8HJyQl6enqYMmUKcnJyWqU5e/Yspk6dCoFAADMzM4SGhkKpVHL7ZTIZYmJi1I6ZNGkStm/frrat+QqVUCiElZUVV8+25OXlwcvLC2KxGCYmJnjllVdw7969LtXzwYMHWLZsGQwNDSESieDl5YWrV6+qpUlMTMT48eMhEAggk8kQHR2ttl8mkyE8PBxLliyBvr4+zM3NERsb2+kYWrYTj8dDSkpKm+nr6+tRVVWltvSm2tpaAEB+fj6ys7PVlvz8fC7Gto5Zvnx5r8VaVlaG2tpaLFu2rNU+kUgEhUKB0tJSeHp64vr160hPT283v/T0dJSWlmLLli2trgby+Xxs3ry5U/kwDDM4sY7dIBYZGYkjR47gwIED+PXXX7F+/XoEBgbi7Nmz2Lp1K2QyGV599VUAQGxsLDIzM/HZZ5+1eevpSdTU1MDb2xv29vaQy+XYvn07QkJC1NLcunUL8+bNw3PPPYfc3Fzs378f//rXv/Duu+8+cXnvvPMOFi5ciNzcXLz88st46aWXuA5CSw8fPsQLL7wAJycn/Pzzzzh16hR+//13LF68uEt1XbFiBX7++WccP34cWVlZICLMmzcPjY2NAAC5XI7FixfjpZdewuXLl7F9+3a88847OHz4sFo+u3fvhqOjI3JychAaGop169bhzJkzXYqpI5GRkTAwMOCWUaNG9Ug5bSktLQUABAYGYvLkyWpLYGAgAOD27dttHvPNN9/0ZrgAACsrq1bbHjx4wP0sFAoBPPpPRnua90+YMEHj/ubtHeXDMMwg1TND/pj+rq6ujkQiEWVmZqptX7lyJS1ZsoSIiEpKSkgikdCmTZtIKBTS0aNHNeaVmppKAOjBgwedLv/gwYNkbGxMtbW13Lb9+/erTWLYsmULjRs3jlQqFZcmNjaWxGIxNTU1EVHrSQFERI6OjhQWFsatA6C///3vammmTZtGQUFBRNR68kR4eDj9+c9/Vkt/48YNAkCFhYUd1u3xyRNFRUUEgDIyMrj99+7dI6FQSF9//TURES1dupTmzp2rlsfGjRvJ3t6eW7ewsCBPT0+1NAEBAeTl5dVhPM3HP8nkibq6OqqsrOSW5vr31uSJ8+fPEwCKj48nuVyutjRPksj57jBRmJToVk6rYxYtWtTrEyQ2bNjQatvChQu5nz/66CMCQKmpqe3Wvfn3KSsrS+P+zMzMTuXDMMyzrauTJ9jjTgap4uJiKBQKzJ07V217Q0MDnJycADy6AhEVFYVVq1YhICAAS5cu7bby8/PzMXHiROjp6XHbpk+f3irN9OnTwePxuG0zZsxATU0Nbt68idGjR3e6vJZ5T58+HZcuXdKYNjc3F6mpqRCLxa32lZSUYOzYsZ0uNz8/H9ra2pg2bRq3zdjYGOPGjeOuGObn58PHx0ftuBkzZiAmJgZNTU3c4y001aHlbejuIhAI+nQMXvPVLTs7Ozg7O2tM0zK+x4/x8/Prtat2o0ePxh9//IEjR4602qdQKCASiTB8+HCcOnUKlpaWmDVrVrv5zZo1CzKZDBEREUhJSVG7Qv748ImO8mEYZnBiHbtBqqamBgBw8uRJmJubq+17/A/muXPnoKWlhdLSUiiVSmhr96+PDJ/PBxGpbWu+xdlVNTU1WLBgAXbt2tVqn5mZ2VPlzfQOoVAIHx+fXplAcfPmTahUKm6MXzOJRILvv/8ewKNZsSdPnkRCQkKHz6HT0tJCdHQ0/P394evri82bN2PChAnIy8tDZGQkTpw40al8GIYZnNgYu0HK3t4eAoEAZWVlsLa2Vluax1MdO3YMSUlJSEtLQ1lZGcLDw7utfDs7O/zyyy+oq6vjtv3nP/9plaZ5TFqzjIwMSCQSjBw5EsCj2Z6PjzWqqqrC9evXW5XXMu///Oc/rR6P0czZ2Rm//vorZDJZq7bR19d/4noqlUpcuHCB21ZRUYHCwkLY29tzaTIyMtSOy8jIwNixY9X+eD9JHZ51tra2kMvlsLW1bbWv+REozTNm8wsK1CZVNEtJSWl1JbQnNE8maqm6upr7uaKiAgkJCfDz8+tUnn5+fkhISMDly5fh6uoKqVQKV1dX5OXlPVE+DMMMQj1yY5h5JmzdupWMjY3p8OHDVFxcTHK5nPbt20eHDx+mGzdukKGhIe3bt4+IiE6dOkXa2tpq437Ky8spJyeHPvnkEwJA586do5ycHKqoqOiw7Orqaho6dCgFBgbSr7/+SidPniRra2u1sW43b94kkUhEb7zxBuXn51NKSgoNHTpUbfxcaGgomZqa0rlz5+iXX34hX19fEovFrcbYDR06lP71r39RYWEhbdu2jfh8Pv36669E1HqM3a1bt2jYsGHk7+9PP/30ExUXF9OpU6doxYoVpFQqO6xbywcU+/j4kL29PaWnp9OlS5fI09OTrK2tqaGhgYgePXCXz+fTzp07qbCwkA4fPkxCoZDi4uK4PCwsLEgqldKuXbuosLCQPvroI9LS0qJTp051GE/z8QPlAcXNnzcnUz5RmJScTPlq49qKiorU0isUCrKysnrqMXQ6OjpkYWFB77//PikUCjp9+jQtXbqUXFxcyMbGhpycnMjb25s2bdpEW7ZsoaioKIqPj6fU1NROfW40USqVlJqaSl988cVT5cMwzLOnq9+7rGM3iKlUKoqJiaFx48aRjo4ODRs2jDw8PCgtLY3mzJlDHh4eahMX1qxZQ2PGjKHq6moiIgoLC9P4B/DxDkl7srKyyNHRkXR1dWnSpEmUmJjY6g0QaWlp9Nxzz5Guri6ZmprSpk2bqLGxkdtfWVlJAQEBJJVKadSoUXT48GGNkydiY2Np7ty5JBAISCaT0bFjx7j9mt48UVRURH/5y19oyJAhJBQKydbWloKDg9Xaoy0tO3b379+nV155hQwMDEgoFJKHh0erzkdCQgLZ29uTjo4OjR49mnbv3q2238LCgnbs2EGLFi0ikUhEpqam9OGHH3bcyI8dP1A6dn/88Qd98sknlJF2hq78+CVlX8jgJla0bFeGYZhnVVe/d3lELQYoMQzT78hkMgQHByM4OLhLx5uZmSE8PJx7fM2TqqqqgoGBASorK9XeqMAwDMP0jK5+7/avkfAMw3QrhUKBjIwM/P777xg/fnxfh8MwDMP0MDZ5gukREREREIvFGpf+/I7SjpSVlbVZL7FYjLKysl6P6ejRo23GM2zYMLz00ksIDg5u9bgUhmEYZuBht2KZHnH//n3cv39f4z6hUNjqESvPCqVSyb3hQBOZTNbrj4Sprq7G77//rnGfjo4OLCwsnroMdiuWYRimd7FbsUy/YmRkBCMjo74Oo9tpa2vD2tq6r8NQI5FIIJFI+joMhmEYph9gt2IZhmEYhmEGCNaxYxiGYRiGGSBYx45hGIZhGGaAYGPsGIZ5JhXnX0Zj+a+oE48Gaetx2yUSCWxsbPowMoZhmL7DOnYMwzxzrl69ioAXJiF7lRjOB2uQc0f9fa1FRUWtOndZWVlwdXXt0biGDBkCIyMjVFVVYfjw4XjrrbcwZswYzJo1S+29v0zfaGpqQnp6OsrLy2FmZsbOCzMgsVuxTK9zd3fv8A0Khw8fxpAhQ7q13BUrVsDX17db8+yPeqLt+pvq6mru56NHj0Iul0MulyM+Pr7VfgDg8Xg93qkDgIcPH+LatWu4d+8erly5gldffRWzZ8+GtbU1kpKSerx8pm1JSUmwtrbG7NmzsXTpUnZemAGLdewYAMChQ4fg7u4OqVQKHo+Hhw8f9lhZSUlJCA8P59ZlMhliYmJ6rLyuSktL6/G26Kwn6ZQGBASgqKiohyPqHQqFAtnZ2VAoFG2msbO1hbOzM5ydnWFnZ9dqP4/H68kQO+Xu3bvw9/dnnYg+kpSUBH9/fzg4OCArKwvV1dXIysqCg4MDOy/MgMM6dgyAR39APT09sWXLlh4vy8jIiD13rYc0NjZCKBRi+PDhfR1KtygoKMDkyZNRUFDQpeOzsrK6OaIn88ILLwB49Pvl4eGBkJAQNDU19WlMg01TUxM2bNgAb29vpKSkwMXFBWKxGC4uLkhJSYG3tzc7L8yAwjp2A4RKpUJkZCQsLS0hFArh6OiIhIQEAMDOnTsxYsQIVFRUcOnnz5+P2bNnQ6V6NDYpODgYoaGhcHFxeeKy/f398eabb3LrwcHB4PF43B/jhoYG6Ovr44cffgCgfivW3d0dv/32G9avXw8ej9fq6srp06dhZ2cHsVgMT09PlJeXdyqmpqYmvPXWWxgyZAiMjY3x9ttvo+VLVurr67F27VoMHz4cenp6mDlzJi5evAgAKC0txezZswEAhoaG4PF4WLFiRYfluru7Y82aNQgODoahoSFMTEzwySef4L///S/++te/QiKRwNraGt9//71arCtXruTO3bhx4/Dhhx9y+7dv347PPvsM3377LddGaWlpKC0tBY/Hw7Fjx+Dm5gY9PT0cPXpU7VYsEeFPf/oTPDw8uPrfv38fI0eOxLZt29qsR319PaqqqtSWvlBbWwsAyM/PR3Z2Nrfk5+d3Kn1v3H5tz5UrV7ifb926hevXryM9Pb0PIxp80tPTUVpaii1btoDPV/+Tx+fzsXnzZnZemIGFmAHh3XffJVtbWzp16hSVlJRQXFwcCQQCSktLI6VSSdOnTydfX18iIvroo49oyJAh9Ntvv7XKJzU1lQDQgwcPOl32vn37aPz48dz6pEmTaOjQobR//34iIjp//jzp6OjQf//7XyIicnNzo3Xr1hERUUVFBY0cOZJ27txJ5eXlVF5eTkREcXFxpKOjQ3/605/o4sWLJJfLyc7OjpYuXdqpmHbt2kWGhoaUmJhIV65coZUrV5JEIiEfHx8uzdq1a2nEiBH03Xff0a+//krLly8nQ0NDqqioIKVSSYmJiQSACgsLqby8nB4+fNhhuW5ubiSRSCg8PJyKioooPDyctLS0yMvLiw4dOkRFRUUUFBRExsbGXHs0NDTQtm3b6OLFi3Tt2jWKj48nkUhEx44dIyKi6upqWrx4MXl6enJtVF9fT9evXycAJJPJKDExka5du0a3b9+muLg4MjAw4GK6efMmGRoaUkxMDBERLVq0iKZOnUqNjY1t1iMsLIwAtFoqKys71f7dJT4+XmMcAMjJlE8UJiW6ldOp9H2xiEQi7mdzc3MCQF988UWvtuFg98UXXxAAqq6u1ri/qqqKnRemX6qsrOzS9y7r2A0AdXV1JBKJKDMzU237ypUracmSJUREVFJSQhKJhDZt2kRCoZCOHj2qMa+udOx++eUX4vF4dPfuXbp//z7p6upSeHg4BQQEENGjTqerqyuX/vGOHRGRhYUF7d27Vy3PuLg4AkDFxcXcttjYWDIxMelUTGZmZvTBBx9w642NjTRy5EiuY1dTU0M6Ojpq7dDQ0EAjRozgjutKW7i5udHMmTO5daVSSfr6+vTKK69w28rLywkAZWVltZnPG2+8QQsXLuTWly9frtYpJSKuY9fcYWvWsmNHRPT111+Tnp4ehYaGkr6+PhUVFbVbj7q6OqqsrOSWGzdu9EnH7vz58wSA4uPjSS6Xc0t8fLzGjl3L9H3dsTM1NeV+dnBwIACUmpraq2042DX/Hrf1+5aZmcnOC9MvdbVjxx53MgAUFxdDoVBg7ty5atsbGhrg5OQEALCyskJUVBRWrVqFgIAALF26tNvKnzBhAoyMjHD27Fno6urCyckJ3t7eiI2NBQCcPXsW7u7uT5yvSCTCmDFjuHUzMzPcvXu3w+MqKytRXl6OadOmcdu0tbUxZcoU7nZkSUkJGhsbMWPGDC6Njo4Opk6d2uZtvs6aOHEi97OWlhaMjY3h4ODAbTMxMQEAtbrExsbi008/RVlZGWpra9HQ0IBJkyZ1qrwpU6Z0mGbRokVITk7G+++/j/3793f4nDeBQACBQNCp8nuSUCgEANjZ2cHZ2fmJ02dmZvbp7Vh7e3vcuXMHAGBubo6amhrMmjWrz+IZjGbNmgWZTIaIiAikpKSo3Y59fAgLOy/MQME6dgNATU0NAODkyZMwNzdX2/f4H+dz585BS0sLpaWlUCqV0NbuntPP4/Hw/PPPIy0tDQKBAO7u7pg4cSLq6+uRl5eHzMxMhISEPHG+Ojo6rcqhFuPk+iNNcT++rXkcYfP4xq+++gohISGIjo7G9OnTIZFIsHv3bly4cKFT5enr63eYRqFQQC6XQ0tLC1evXu1sVZ5506dP79Py//3vfwN49J+U06dPIyEhgT03rZdpaWkhOjoa/v7+8PX1xebNmzFhwgTk5eUhMjISJ06cYOeFGVDY5IkBwN7eHgKBAGVlZbC2tlZbRo0aBQA4duwYkpKSkJaWhrKyMrXHjXQHNzc3pKWlIS0tDe7u7uDz+Xj++eexe/du1NfXq10Za0lXV7dbZ6QZGBjAzMxMrWOkVCohl8u59TFjxkBXVxcZGRnctsbGRly8eBH29vZcXAB6fLZcRkYGXF1dsXr1ajg5OcHa2holJSVqaZ62jTZs2AA+n4/vv/8e+/bt4zoc/Z2trS3kcjlsbW27nEd/+M+AiYkJEhIS4Ofn19ehDEp+fn5ISEjA5cuX4erqCqlUCldXV+Tl5bHzwgw47IrdACCRSBASEoL169dDpVJh5syZqKysREZGBqRSKebMmYOgoCDs2rULM2fORFxcHLy9veHl5cXNgr1z5w7u3LmD4uJiAMDly5chkUgwevRoGBkZdRiDu7s71q9fD11dXcycOZPbFhISgueee67dq0oymQznzp3DSy+9BIFAgKFDhz51m6xbtw7vv/8+bGxsYGtriz179qg9j05fXx9BQUHYuHEjjIyMMHr0aHzwwQdQKBRYuXIlAMDCwgI8Hg8nTpzAvHnzIBQKIRaLnzq2lmxsbHDkyBGcPn0alpaW+Pzzz3Hx4kVYWlpyaWQyGU6fPo3CwkIYGxvDwMCg0/mfPHkSn376KbKysuDs7IyNGzdi+fLl+OWXX2BoaNjt9elOIpFI4y3Yx59rl19QgNr/e/NEW7fRiYi9eWKQ8/Pzg4+PD3vzBDPw9cB4P6YPqFQqiomJoXHjxpGOjg4NGzaMPDw8KC0tjebMmUMeHh6kUqm49GvWrKExY8ZwM8XamgUZFxfXqfKbmprI0NCQpk2bxm3LyckhABQaGqqWtuXkiaysLJo4cSIJBAJq/khqmgCQnJxMnf3INjY20rp160gqldKQIUPorbfeomXLlqlNQKitraU1a9bQ0KFDSSAQ0IwZM+inn35Sy2fnzp1kampKPB6Pli9f3mG5LetGpHlyCABKTk4mokcTFVasWEEGBgY0ZMgQCgoKotDQUHJ0dOTS3717l+bOnUtisZgb6N08eSInJ0ct78fb7u7du2RiYkIRERHc/oaGBpo8eTItXry4w/o06+og3p7yySefcJMnnEz5rT63HU0OYRiG6e+6+r3LI+oH9ykYhunXqqqqYGBggMrKSkil0r4OB/fu3cP/l/Q1Jo0UAUPHgrT1uH0SiaTDySEMwzD9XVe/d1nHjmGYDvW3jh3DMMxA19XvXTZ5gulQREQExGKxxsXLy6tPYmorHrFY3GNPkC8rK2u33LKysh4pl2EYhmE6i12xYzp0//593L9/X+M+oVDY6hErvaF5kocm5ubm3PPMupNSqURpaWmb+2UyWbc9Qqa/YVfsGIZheldXv3cH5l8hplsZGRl1amZsb7K2tu71MrW1tfukXIZhGIbpLHYrlmEYhmEYZoBgHTuGYRiGYZgBgnXsGIZhGIZhBgg2xo5hGKaPXb16FdXV1eAp66BXU4Y68Wju2XzsuXwMwzwJ1rFjGIbpQ1evXsXYsWMBAE6mfGSvEsP5YA1y/u81aQBQVFTUqnN3/Phx+Pj4dLlcPp+PYcOGwcTEBLW1tRCLxbC1tYWlpSVeeOEFuLu7D8rXbTU1NeF///d/ERUVhYKCAjQ2NkJLSwt37tx54ry0tbVhYWEBe3t7uLm5Yc2aNdw7qLsSF3sdWs8ZUO3b7e/AYJh+StPrvlrS9CqzZ01qaioBoAcPHnRbnv3tlWIDiVwuJwAUHx9PV378kihMSld+/JLkcjnFx8cTAJLL5WrHQMPr/7p7GT58OCUmJvZRq/SNxMREEgqFPdamfD6fNm7c2KW4ZDKZWl4ymWzQnZ+e0l/bt6vfu2yMHdOnDh06BHd3d0ilUvB4PDx8+LDHykpKSkJ4eDi3LpPJEBMT02Pldaft27dj0qRJnUrr6uqK8vJyGBgY9HBUTGcoFApkZ2dDoVC0m87Ozg52traPfra1hbOzM+zs7Fql4/F4PRJnS3fv3oW/vz+SkpJ6pby+lpSUhIULF6K2trbHylCpVNi9ezfefvvtJ4rL398fDg4OyMrKQnV1NbKysuDg4DCozk9PGYjtyzp2TJ9SKBTw9PTEli1berwsIyMjSCSSHi+nLzU2NkJXVxempqa91gFg2ldQUIDJkyejoKDgqfM6fvx4N0TUtsdvE+rp6UEoFCIkJARNTU09Wm5fa2pqQnBwcK+UxefzsXfvXjQ0NHSYtqmpCRs2bIC3tzdSUlLg4uICsVgMFxcXpKSkwNvbe1Ccn54yUNuXdeyYp6JSqRAZGQlLS0sIhUI4OjoiISEBALBz506MGDECFRUVXPr58+dj9uzZUKkejR8KDg5GaGgoXFxcnrhsf39/vPnmm9x6cHAweDwe9we0oaEB+vr6+OGHHwAA7u7u3Je3u7s7fvvtN6xfvx48Hq9VJ+j06dOws7ODWCyGp6cnysvLOxXTihUr4Ovri4iICJiYmGDIkCHYuXMnlEolNm7cCCMjI4wcORJxcXFqx23atAljx46FSCSClZUV3nnnHTQ2NgIADh8+jB07diA3N5eL9fDhwwAeXb3Zv38/XnzxRejr6+O9995DWlqa2tXPv/3tb5g4cSLq6+u5dnFycsKyZcvarEd9fT2qqqrUFqZrmq8A5efnIzs7u9WSn5+vlq69Y59mTF1nPN7ZqKurg0KhwPXr13vsNX39RXp6Om7cuNErZalUKiiVSnz88ccdpk1PT0dpaSm2bNkCPl/9zzWfz8fmzZsHxfnpKQO1fdnkCeapREZGIj4+HgcOHICNjQ3OnTuHwMBADBs2DFu3bsWpU6fw6quvIjk5GbGxscjMzERubm6rX6KucHNzw8GDB7n1s2fPYujQoUhLS4OtrS0uXryIxsZGuLq6tjo2KSkJjo6OeP311/Haa6+p7VMoFIiKisLnn38OPp+PwMBAhISE4OjRo52K69///jdGjhyJc+fOISMjAytXrkRmZiaef/55XLhwAceOHcOqVaswd+5cjBw5EsCjmY+HDx/GiBEjcPnyZbz22muQSCR4++23ERAQgLy8PJw6dYrrpD5+m3X79u14//33ERMTA21tbVy7dk0tnn379sHR0RGhoaHYu3cvtm7diocPH+Kjjz5qsw6RkZHYsWNHp+rLtK/5NXSBgYEdppthOb5Lx/a0zv7H5lnVF/UrKSnpME1zXBMmTNC4v3n7QD8/PWXAtm8PjfljBoG6ujoSiUSUmZmptn3lypW0ZMkSIiIqKSkhiURCmzZtIqFQSEePHtWYV1cG/P/yyy/E4/Ho7t27dP/+fdLV1aXw8HAKCAggIqJ3332XXF1dufQtJ09YWFjQ3r171fKMi4sjAFRcXMxti42NJRMTk07FtHz5crKwsKCmpiZu27hx42jWrFnculKpJH19ffryyy/bzGf37t00efJkbj0sLIwcHR1bpQNAwcHBats0tWVmZibp6OjQO++8Q9ra2pSent5uPerq6qiyspJbbty4wSZPdNH58+e5yRFyubzV0jxB4vz580S3cojCsz8kBAAAG0lJREFUpI/+1XAsemHShKYlNTW1bxuxhzX/zvTm0vK7p724srKyNO7PzMwcFOenp/T39u3q5Al2xY7psuLiYigUCsydO1dte/OtPgCwsrJCVFQUVq1ahYCAACxdurTbyp8wYQKMjIxw9uxZ6OrqwsnJCd7e3oiNjQXw6Aqeu7v7E+crEokwZswYbt3MzAx3797t9PHjx49XuyJpYmKi9j9CLS0tGBsbq+V57Ngx7Nu3DyUlJaipqYFSqez0S5+nTJnSYZrp06cjJCQE4eHh2LRpE2bOnNlueoFAAIFA0KnymfYJhUIAjyZHODs7d5iuvWO//fbbHr0dq6ury92O1dPTA5/Ph4mJCWbNmtVjZfYHs2bNwqhRo3rldiyfzwefz8fq1as7FZdMJkNERARSUlLUvlceHwYz0M9PTxmo7cvG2DFdVlNTAwA4efIkLl26xC1XrlzhxtkBwLlz56ClpYXS0lIolcpuK5/H4+H5559HWloa14lrHkuWl5eHzMxMuLm5PXG+Ojo6rcohoqc6XtO25nGGWVlZePnllzFv3jycOHECOTk52Lp1a6cGVwOAvr5+h2lUKhUyMjKgpaWF4uLiTtaE6W9efPHFHs2/5Ri72tpaREVFPbvP8+okLS2tXpshr1KpsH79+k49z05LSwvR0dE4ceIEfH191WZt+vr64sSJE4Pi/PSUgdq+rGPHdJm9vT0EAgHKyspgbW2ttowaNQrAoytRSUlJSEtLQ1lZmdrjRrqDm5sb0tLSkJaWBnd3d/D5fDz//PPYvXs36uvrMWPGjDaP1dXV7ReznTIzM2FhYYGtW7diypQpsLGxwW+//aaW5mlj3b17NwoKCnD27FmcOnWq1eQNpufY2tpCLpfD9v8eZfK0nuQ/GU9j+PDhSEhIgJ+fX6+U19f8/PyQmJio8cppd+Hz+di4cSM++OCDJ4orISEBly9fhqurK6RSKVxdXZGXlzeozk9PGYjty27FMl0mkUgQEhKC9evXQ6VSYebMmaisrERGRgakUinmzJmDoKAg7Nq1CzNnzkRcXBy8vb3h5eXFzYK9c+cO7ty5w11Funz5MiQSCUaPHg0jI6MOY3B3d+f+99t8e9Hd3R0hISF47rnn2r2aJZPJcO7cObz00ksQCAQYOnRoN7TKk7OxsUFZWRm++uorPPfcczh58iSSk5NbxXr9+nVcunQJI0eOhEQi6fSt0pycHGzbtg0JCQmYMWMG9uzZg3Xr1sHNzQ1WVlY9USXmMSKRqN1bsM3Pt8vOzobQSgw7APkFBai9o+JmzLZEROzNEz3Az88P1dXV/e7NE35+fvDx8Rk4b0boZwZc+/bEgD9m8FCpVBQTE0Pjxo0jHR0dGjZsGHl4eFBaWhrNmTOHPDw8SKVScenXrFlDY8aMoerqaiJ6NCkAGgYWx8XFdar8pqYmMjQ0pGnTpnHbcnJyCACFhoaqpW05eSIrK4smTpxIAoGAmn8VNL15Ijk5mTr7q7J8+XLy8fFpt1yi1hM3Nm7cSMbGxiQWiykgIID27t2rFkddXR0tXLiQhgwZotY+ACg5OVkt78cnT9TW1pK9vT29/vrramlefPFFcnV1JaVS2al6sTdP9JxPPvmE+9w7mfKJwqTkZMpX+30oKirq6zAZhullXf3e5RH10nV9hmGeWVVVVTAwMEBlZWWnJ3UwnXPv3j2kpKTA1tYW+rp86NWUoU48GqStB+DRlfGW74llGGbg6+r3LuvYMQzTIdaxYxiG6V1d/d5lkyeYfisiIgJisVjj4uXl1ScxtRWPWCx+5p5OzjAMwww87Iod02/dv38f9+/f17hPKBTC3Ny8lyNCu48KMTc379EZdX2JXbFjGIbpXV393mWzYpl+y8jIqFMzY3uTtbV1X4fAMAzDMG1it2IZhmEYhmEGCNaxYxiGYRiGGSBYx45hGIZhGGaAYGPsGIZhngFXr15FdXU1eMo69qw7hmHaxDp2DMMw/dzVq1cxduxYAICTKR/Zq8RwPliDnDsqLk1RURHr3DEMw27FMv1HaWkpeDweLl261K358ng8pKSk9Fq57u7uCA4O7pa8ukvLNuioTZj+pbq6GgAQHx+Po0ePAgCOHj0KuVyO+Ph4tTQtnT17Fjwer1cXPT092NjY4MSJE2hqauqdRhqAmpqakJaWhi+//BJpaWmsLZlOYVfsmC47dOgQvvjiC2RnZ6O6uhoPHjzAkCFD+josRoPy8nIYGhq2uc70PYVCgYKCAtja2kIkEmlMY2dnBztTPnAOsLO1BUZMajdPHo/XE6F2qL6+HsXFxViwYAG0tbVx7Ngx+Pn59Uksz6qkpCRs2LABpaWl3DaZTIbo6GjWlky72BU7pssUCgU8PT2xZcuWvg6F6YCpqSkEAkGb60zfKygowOTJk1FQUNAt+fVVp64lpVKJhQsXIikpqa9DeWYkJSXB398fDg4OyMrKQnV1NbKysuDg4AB/f3/Wlky7WMduEFOpVIiMjISlpSWEQiEcHR2RkJAAANi5cydGjBiBiooKLv38+fMxe/ZsqFSPxvUEBwcjNDQULi4uXSr/p59+gpOTE/T09DBlyhTk5OS0SnP27FlMnToVAoEAZmZmCA0NhVKp5PbLZDLExMSoHTNp0iRs375dbVt5eTm8vLwgFAphZWXF1bMteXl58PLyglgshomJCV555RXcu3evS/V88OABli1bBkNDQ4hEInh5eeHq1atqaRITEzF+/HgIBALuf+WPk8lkCA8Px5IlS6Cvrw9zc3PExsZ2OgZ2K3ZwOXv2bF+H0Mpbb73FbiV2QlNTEzZs2ABvb2+kpKTAxcUFYrEYLi4uSElJgbe3N0JCQlhbMm1iHbtBLDIyEkeOHMGBAwfw66+/Yv369QgMDMTZs2exdetWyGQyvPrqqwCA2NhYZGZm4rPPPgOf//Qfm5qaGnh7e8Pe3h5yuRzbt29HSEiIWppbt25h3rx5eO6555Cbm4v9+/fjX//6F959990nLu+dd97BwoULkZubi5dffhkvvfQS8vPzNaZ9+PAhXnjhBTg5OeHnn3/GqVOn8Pvvv2Px4sVdquuKFSvw888/4/jx48jKygIRYd68eWhsbAQAyOVyLF68GC+99BIuX76M7du345133sHhw4fV8tm9ezccHR2Rk5OD0NBQrFu3DmfOnOlSTB2pr69HVVWV2sL0rNraWgBAfn4+srOz1Zbmz2pzmo6Oc3d377W4O+u3335j71PuhPT0dJSWlmLLli2tvmv5fD42b96M69evs7Zk2kbMoFRXV0cikYgyMzPVtq9cuZKWLFlCREQlJSUkkUho06ZNJBQK6ejRoxrzSk1NJQD04MGDTpd/8OBBMjY2ptraWm7b/v37CQDl5OQQEdGWLVto3LhxpFKpuDSxsbEkFoupqamJiIgsLCxo7969ank7OjpSWFgYtw6A/v73v6ulmTZtGgUFBRER0fXr19XKDQ8Ppz//+c9q6W/cuEEAqLCwsMO6ubm50bp164iIqKioiABQRkYGt//evXskFArp66+/JiKipUuX0ty5c9Xy2LhxI9nb23PrFhYW5OnpqZYmICCAvLy8OoyH6FEbJCcnt7neUlhYGAFotVRWVnaqPObJxcfHa2zzx5f4+HiiWzlEYdJH/3byuP6yfPHFF33cyv3fF198QQCourpa4/6qqirWloNEZWVll7532RW7Qaq4uBgKhQJz586FWCzmliNHjqCkpAQAYGVlhaioKOzatQsvvvgili5d2m3l5+fnY+LEidDT0+O2TZ8+vVWa6dOnq40VmjFjBmpqanDz5s0nKq9l3tOnT2/zil1ubi5SU1PV2sXW1hYAuLbprPz8fGhra2PatGncNmNjY4wbN44rPz8/HzNmzFA7bsaMGbh69ara7ZYnqcPT2rx5MyorK7nlxo0bPVIO8/+TyWQAHs18lcvlakvzzNfmNB0d11+ZmZn1dQj9XnMb5eXladzfvJ21JdMWNit2kPp/7d1tTFPn+wfwb1soAhVQIRAVqBNBMENRwWmGD/EBcHNCpjMLm7IXvljcFudI1CzTuYc6nS7K5szmFtic++kiDhkqCWN0OEUxVdeFKWoiKxoCUxQEMxS4/i8M/Vse5KntgfL9JE3mfd/nnKtXzk4uzn2f04aGBgDAsWPHMGbMGJu+xxfVFxcXQ6PRoKKiAs3NzXBzG1injFqthojYtLVNcfZVQ0MDlixZgm3btnXoGyoXUw8PDz5c4WSenp4AHj35OnXq1CeO6W47o9E44KZjQ0NDER8fr3QYA158fDz0ej0MBgNycnJspmMfXxfNXFJXeMduiIqKioKHhwcsFgvCwsJsPsHBwQCAQ4cO4ciRIzAajbBYLPjwww/tdvzIyEiYzWb8999/1rYzZ850GNO2Jq3NqVOnMHz4cIwdOxYAEBAQgKqqKmt/fX09rl+/3uF47fd95swZREZGdhrb1KlTUVZWBr1e3yE33t7evf6ezc3NOHv2rLXt9u3bKC8vR1RUlHXMqVOnbLY7deoUwsPDodFo+vQdaPCZOHEiTCaT9e5wf8yZM8cOEdnXZ599ZnM+U+c0Gg127tyJvLw8JCcn2zwVm5ycjLy8POzYsYO5pK45ZGKYBoV3331XRo0aJVlZWXLt2jUxmUySkZEhWVlZUllZKSNGjJCMjAwREcnPzxc3NzcpKSmxbl9VVSUXLlyQffv2CQApLi6WCxcuyO3bt7s99r1798Tf319eeeUVKSsrk2PHjklYWJjNWrcbN26Il5eXrFmzRi5duiQ5OTni7+9vs35uw4YNEhQUJMXFxWI2myU5OVl0Ol2HNXb+/v7y7bffSnl5uWzatEnUarWUlZWJSMc1djdv3pSAgABZtmyZlJaWyrVr1yQ/P1/S0tKkubm52+/2+Bo7EZGlS5dKVFSUnDx5Ui5evCiJiYkSFhYmDx48EBERk8kkarVaPvjgAykvL5esrCzx9PSUzMxM6z5CQ0PFx8dHtm3bJuXl5fLFF1+IRqOR/Pz8buNpy0Fv1ti119e1HmQfJ0+eFACyb98++bvwfyKbfeTvwv+JyWSyrrEzmUwdtsMAWFfn5uYm2dnZCmRtcMvOzha9Xm+Ty3HjxjGXQ0hfr7ss7Iaw1tZW2bVrl0RERIi7u7sEBARIQkKCGI1GmT9/viQkJNg8uPDmm2/K+PHjrYt6u1pg/3hB8iQlJSUyefJk0Wq1MmXKFMnOzrYpsEREjEajxMbGilarlaCgIFm/fr08fPjQ2l9XVycrVqwQHx8fCQ4OlqysrE4fntizZ48sXLhQPDw8RK/Xy6FDh6z97Qs7kUcPPaSkpIifn594enrKxIkTZe3atTb56Er7wq62tlZeffVV8fX1FU9PT0lISJArV67YbHP48GGJiooSd3d3CQkJkU8//dSmPzQ0VLZs2SLLly8XLy8vCQoKkt27d3ef5MdywMJu8Gr74wmAxASpRTb7SEyQ2ub/u/bnVBuj0ej0Ys7Dw0PCwsLkl19+6dEfQ9S55uZmKSoqkh9//FGKioqYyyGmr9ddlUi7BUpENODo9XqsXbvWLj9V1tTUhGHDhqGgoAALFizo0Tb19fXw9fVFXV0dfHx8+h0D9c6tW7eQk5ODiRMnwlurxrAGC/7ThUDcHj18NHz4cP5OLJGL6et1d2CthCcih6qvr8eRI0egVqvtspaLnMPf39/6TslHZikWCxENbHx4ghzCYDDYvC7k8U9SUpLS4fWZxWLp8nvpdDpYLBanx3TgwIEu45k0aZLN2M2bN2P9+vXYtm2b9QEUIiJyHZyKJYeora1FbW1tp32enp4dXrEyWDQ3N9v8KHd7er3e6a+EuXfvHqqrqzvtc3d3R2hoaL+PUVdXBz8/P1RWVnIqlojICerr6xEcHIy7d+/C19e3x9uxsCOibt24ccP6GhwiInKeysrKXs2wsLAjom61trYiPDwcJpPJ5pdA2sTGxuLcuXP9bmv7C9UZdwY7i8VR23c39kn9XfX1JL9K5bar+ByxbU/G9iaHXbXz3O19P8/d/o0VEUybNg1Xrlzp1W+08+EJIuqWWq2GVqvtcjpAo9F0uOD2p83Hx8fhF/DOjuuo7bsb+6T+rvp6kkulctvVsR2xbU/G9iaHXbXz3O19P8/d/o/VarW9KuoAQPP++++/36stiGjIiouL61Vfb9uamprwySefYOPGjU75SbMnfR97b9/d2N7mtqv29m1K5bar+ByxbU/G9iaHXbXz3O19P8/d/o/tbSyciiWiAYPvy3Mc5taxmF/HYW57h3fsiGhA0Wg0mDt3rtOfLh4KmFvHYn4dh7ntOd6xIyIiInIRfEExERERkYtgYUdERETkIljYEREREbkIFnZERERELoKFHREREZGLYGFHRIPG/fv3ERoaivT0dKVDcTl6vR7R0dGYMmUK5s2bp3Q4LuX69euYN28eoqKi8PTTT6OxsVHpkFxGeXk5pkyZYv14enoiJydH6bAUxRfCENGg8fHHH+OZZ55ROgyXdfr0aeh0OqXDcDlpaWn46KOPEB8fj9raWqf9esJQEBERgYsXLwIAGhoaoNfrsXDhQoWjUhbv2BHRoHD16lVcvnwZSUlJSodC1GNlZWVwd3dHfHw8AGDkyJF8ya6D5ObmYv78+fD29lY6FEWxsCMihysuLsaSJUswevRoqFSqTqdK9uzZA71ej2HDhmHGjBkoLS216U9PT8fWrVudFfKgYo/8qlQqzJkzB7GxsThw4ICzQh/w+pvbq1evQqfTYcmSJZg6dSoMBoMzwx/w7HHutvnpp5+wYsUKR4c84LGwIyKHa2xsxOTJk7Fnz55O+w8dOoR169Zh8+bNOH/+PCZPnoyEhATU1NQAAI4ePYrw8HCEh4c7M+xBo7/5BYA//vgDJpMJubm5MBgMMJvNzgp/QOtvbpubm3Hy5El8+eWXKCkpQUFBAQoKCpz5FQY0e5y7wKPfkz19+jQWL17sjLAHNiEiciIA8vPPP9u0xcXFyZo1a6z/bmlpkdGjR8vWrVtFRGTDhg0yduxYCQ0NlVGjRomPj49s2bLFqXEPFn3Jb3vp6emSmZnpyDAHpb7k9vTp07Jo0SJr//bt22X79u3OCXiQ6c+5+/3330tqaqpT4hzoeMeOiBT14MEDmEwmLFiwwNqmVquxYMEClJSUAAC2bt2KyspKVFRUYMeOHVi9ejU2bdqkVMiDSk/y29jYiHv37gF4tAD9t99+w6RJkxSJdzDpSW5jY2NRU1ODO3fuoLW1FcXFxYiMjFQq5EGlJ/ltw2nY/8cVnESkqFu3bqGlpQWBgYE27YGBgbh8+bJCUbmOnuS3uroaKSkpAICWlhasXr0asbGxTo91sOlJbt3c3GAwGDB79myICBYtWoTnn39eiXAHnZ5eG+rq6lBaWors7GxnhzggsbAjokElLS1N6RBczlNPPYU///xT6TBcVlJSEp/mdiBfX19UV1crHcaAwalYIlKUv78/NBpNhwtzdXU1goKCFIrKdTC/jsPcOhbz2zcs7IhIUVqtFtOmTUNhYaG1rbW1FYWFhZg5c6aCkbkG5tdxmFvHYn77hlOxRORwDQ0NuHbtmvXf169fx8WLFzFy5EiEhIRg3bp1WLVqFaZPn464uDjs2rULjY2NeO211xSMevBgfh2HuXUs5tcBlH4sl4hcX1FRkQDo8Fm1apV1zOeffy4hISGi1WolLi5Ozpw5o1zAgwzz6zjMrWMxv/anEhFxbilJRERERI7ANXZERERELoKFHREREZGLYGFHRERE5CJY2BERERG5CBZ2RERERC6ChR0RERGRi2BhR0REROQiWNgRERERuQgWdkREREQugoUdEREpxmg0QqVS4e7du0qHQuQSWNgREZFTzJ07F2vXrrVpmzVrFqqqquDr66tQVMC4cePw66+/KnZ8IntyUzoAIiIaurRaLYKCghQ7vtlsxp07dzBnzhzFYiCyJ96xIyIih0tLS8Pvv/+O3bt3Q6VSQaVSoaKiosNUbFZWFvz8/JCXl4eIiAh4eXlh2bJluH//Pr777jvo9XqMGDECb731FlpaWqz7b2pqQnp6OsaMGQNvb2/MmDEDRqOx27iOHj2KxMREuLu7d9qvUqnwzTffICUlBV5eXpgwYQJyc3Ot/Xfu3EFqaioCAgLg6emJCRMmIDMzs3/JIuoHFnZERORwu3fvxsyZM7F69WpUVVWhqqoKwcHBnY69f/8+MjIycPDgQeTn58NoNCIlJQXHjx/H8ePHsX//fnz11Vc4fPiwdZs33ngDJSUlOHjwIMxmM5YvX47ExERcvXr1iXHl5uZi6dKlTxyzZcsWvPTSSzCbzVi8eDFSU1NRW1sLAHjvvffw999/48SJE7h06RL27t0Lf3//XmaHyH44FUtERA7n6+sLrVYLLy+vbqdeHz58iL1792L8+PEAgGXLlmH//v2orq6GTqdDVFQU5s2bh6KiIqxYsQIWiwWZmZmwWCwYPXo0ACA9PR35+fnIzMyEwWDo9Dg3b96E2WxGUlLSE+NJS0vDyy+/DAAwGAzIyMhAaWkpEhMTYbFYEBMTg+nTpwMA9Hp9b9JCZHcs7IiIaEDx8vKyFnUAEBgYCL1eD51OZ9NWU1MDAPjrr7/Q0tKC8PBwm/00NTVh1KhRXR4nNzcXzz77LPz8/J4YT3R0tPW/vb294ePjYz3266+/jhdffBHnz5/HokWLkJycjFmzZvX8yxLZGQs7IiIaUNqvd1OpVJ22tba2AgAaGhqg0WhgMpmg0Whsxj1eDLaXm5uLF154oU/xtB07KSkJ//zzD44fP46CggLMnz8fa9aswY4dO7rdL5EjcI0dERE5hVartXngwV5iYmLQ0tKCmpoahIWF2Xy6mvZtaGhAUVFRt+vreiIgIACrVq3CDz/8gF27duHrr7/u9z6J+op37IiIyCn0ej3Onj2LiooK6HQ6jBw50i77DQ8PR2pqKlauXImdO3ciJiYG//77LwoLCxEdHY3nnnuuwzb5+fkIDw/v95q4TZs2Ydq0aZg0aRKampqQl5eHyMjIfu2TqD94x46IiJwiPT0dGo0GUVFRCAgIgMVisdu+MzMzsXLlSrzzzjuIiIhAcnIyzp07h5CQkE7HHz16tEfTsN3RarXYuHEjoqOjMXv2bGg0Ghw8eLDf+yXqK5WIiNJBEBEROUtzczMCAwNx4sQJxMXFKR0OkV3xjh0REQ0ptbW1ePvttxEbG6t0KER2xzt2RERERC6Cd+yIiIiIXAQLOyIiIiIXwcKOiIiIyEWwsCMiIiJyESzsiIiIiFwECzsiIiIiF8HCjoiIiMhFsLAjIiIichEs7IiIiIhcxP8BgadIruP+UBQAAAAASUVORK5CYII=",
"text/plain": [
"Figure(PyObject <Figure size 640x480 with 2 Axes>)"
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"┌ Warning: `getindex(o::PyObject, s::Symbol)` is deprecated in favor of dot overloading (`getproperty`) so elements should now be accessed as e.g. `o.s` instead of `o[:s]`.\n",
"│ caller = top-level scope at In[36]:21\n",
"└ @ Core In[36]:21\n"
]
}
],
"source": [
"fig = plt[:figure]()\n",
"\n",
"for (case,(nx1,ny1)) in enumerate([(200,100),(100,200)])\n",
" tag1=\"nx1=\"*string(nx1)\n",
" tag2=\"ny1=\"*string(ny1)\n",
" r_slices=[]\n",
" push!(r_slices, collect(results[@tagged tag1 && tag2]))\n",
" r_slice=r_slices[end]\n",
" funcs=[ e[1][1] for e in r_slice ];\n",
" times=[ e[2].times for e in r_slice ];\n",
" faster=sortperm(r_slice, rev=true, by=e->median(e[2]))\n",
" \n",
" ax=fig[:add_subplot](2,1,case)\n",
" ax[:boxplot](times[faster][:], vert=false)\n",
" ax[:set_xlim](5e3,5e7)\n",
" ax[:set_xscale](\"log\")\n",
" ax[:set_xlabel](\"time / ns\")\n",
" ax[:set_yticklabels](funcs[faster]);\n",
" ax[:set_title](tag1*\", \"*tag2)\n",
"end\n",
"plt[:tight_layout](h_pad=1.0)\n"
]
},
{
"cell_type": "code",
"execution_count": 0,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "WObDIDmXw6sC"
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "YwhdtsaexBln"
},
"source": [
"# ex2"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"colab_type": "code",
"id": "mXSvQ3GaxDOV",
"outputId": "6143e2d0-c30e-4c4c-85c0-89e2c9410d28"
},
"outputs": [
{
"data": {
"text/plain": [
"ex2_double_loop_ij (generic function with 4 methods)"
]
},
"execution_count": 38,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"function ex2_double_loop_ij(u,v,w, nx=size(u,1),ny=size(u,2), alpha=0.3)\n",
" # @assert size(u)==(nx,ny)\n",
" # @assert size(v)==(nx,ny)\n",
" # @assert size(w)==(nx,ny)\n",
" @inbounds for i in 2:nx-1\n",
" @simd for j in 2:ny-1\n",
" w[i,j]=u[i+1,j]+v[i,j-1]*alpha\n",
" end\n",
" end\n",
" 0\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"colab_type": "code",
"id": "oHvU1pZDxFlm",
"outputId": "184a3cfe-6a43-4e9d-bf47-de748b3c59b3"
},
"outputs": [
{
"data": {
"text/plain": [
"ex2_double_loop_ji (generic function with 4 methods)"
]
},
"execution_count": 39,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"function ex2_double_loop_ji(u,v,w, nx=size(u,1),ny=size(u,2), alpha=0.3)\n",
" # @assert size(u)==(nx,ny)\n",
" # @assert size(v)==(nx,ny)\n",
" # @assert size(w)==(nx,ny)\n",
" @inbounds for j in 2:ny-1\n",
" @simd for i in 2:nx-1\n",
" w[i,j]=u[i+1,j]+v[i,j-1]*alpha\n",
" end\n",
" end\n",
" 0\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 204
},
"colab_type": "code",
"id": "GELehByyxaPY",
"outputId": "cf9e07d3-a012-486c-cf1d-279683bfdbf4"
},
"outputs": [
{
"data": {
"text/plain": [
"BenchmarkTools.Trial: \n",
" memory estimate: 0 bytes\n",
" allocs estimate: 0\n",
" --------------\n",
" minimum time: 54.765 μs (0.00% GC)\n",
" median time: 75.025 μs (0.00% GC)\n",
" mean time: 78.491 μs (0.00% GC)\n",
" maximum time: 949.207 μs (0.00% GC)\n",
" --------------\n",
" samples: 10000\n",
" evals/sample: 1"
]
},
"execution_count": 40,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"@benchmark ex2_double_loop_ij(u,v,w, $nx1, $ny1) setup=( (u,v,w)=make_uvw($nx1,$ny1, $rng))"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 204
},
"colab_type": "code",
"id": "OqbdqKuaxeQh",
"outputId": "7e50517c-bd98-4190-84c6-f2005e0931d6"
},
"outputs": [
{
"data": {
"text/plain": [
"BenchmarkTools.Trial: \n",
" memory estimate: 0 bytes\n",
" allocs estimate: 0\n",
" --------------\n",
" minimum time: 10.918 μs (0.00% GC)\n",
" median time: 13.104 μs (0.00% GC)\n",
" mean time: 13.779 μs (0.00% GC)\n",
" maximum time: 32.241 μs (0.00% GC)\n",
" --------------\n",
" samples: 10000\n",
" evals/sample: 4"
]
},
"execution_count": 41,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"@benchmark ex2_double_loop_ji(u,v,w, $nx1, $ny1) setup=( (u,v,w)=make_uvw($nx1,$ny1, $rng))"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"colab_type": "code",
"id": "0SM8VZ3Axgna",
"outputId": "06ec81b7-93d4-421f-f249-de85134c12a5"
},
"outputs": [
{
"data": {
"text/plain": [
"ex2_CartesianIndices (generic function with 4 methods)"
]
},
"execution_count": 42,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"function ex2_CartesianIndices(u,v,w, nx=size(u,1),ny=size(u,2), alpha=0.3)\n",
" # @assert size(u)==(nx,ny)\n",
" # @assert size(v)==(nx,ny)\n",
" # @assert size(w)==(nx,ny)\n",
" @inbounds @simd for ij in CartesianIndices((2:nx-1,2:ny-1))\n",
" i,j=Tuple(ij)\n",
" w[i,j]=u[i+1,j]+v[i,j-1]*alpha\n",
" end\n",
" 0\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 204
},
"colab_type": "code",
"id": "igGmqsrcxjNP",
"outputId": "88f810fb-8cfe-4a90-a131-fbd3891c5ffb"
},
"outputs": [
{
"data": {
"text/plain": [
"BenchmarkTools.Trial: \n",
" memory estimate: 0 bytes\n",
" allocs estimate: 0\n",
" --------------\n",
" minimum time: 11.389 μs (0.00% GC)\n",
" median time: 13.550 μs (0.00% GC)\n",
" mean time: 14.200 μs (0.00% GC)\n",
" maximum time: 33.031 μs (0.00% GC)\n",
" --------------\n",
" samples: 10000\n",
" evals/sample: 4"
]
},
"execution_count": 43,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"@benchmark ex2_CartesianIndices(u,v,w, $nx1, $ny1) setup=( (u,v,w)=make_uvw($nx1,$ny1, $rng))"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"colab_type": "code",
"id": "491sM57AxmBo",
"outputId": "b362f5a1-b732-4c29-855d-bb9ad8b2f5fa"
},
"outputs": [
{
"data": {
"text/plain": [
"ex2_LinearIndices_CartesianIndices (generic function with 4 methods)"
]
},
"execution_count": 44,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"function ex2_LinearIndices_CartesianIndices(u,v,w, nx=size(u,1),ny=size(u,2), alpha=0.3)\n",
" # @assert size(u)==(nx,ny)\n",
" # @assert size(v)==(nx,ny)\n",
" # @assert size(w)==(nx,ny)\n",
" w_I=LinearIndices(CartesianIndices( (2:nx-1, 2:ny-1)))\n",
" u_J=LinearIndices(CartesianIndices( (3:nx, 2:ny-1)))\n",
" v_K=LinearIndices(CartesianIndices( (2:nx-1, 1:ny-2)))\n",
" @inbounds @simd for m in 1:length(w_I)\n",
" i=w_I[m]\n",
" j=u_J[m]\n",
" k=v_K[m]\n",
" w[i]=u[j]+v[k]*alpha\n",
" end\n",
" 0\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 204
},
"colab_type": "code",
"id": "kW54gKC-xoy-",
"outputId": "9a048bbc-0aac-42b0-b8a7-f364ebc346bc"
},
"outputs": [
{
"data": {
"text/plain": [
"BenchmarkTools.Trial: \n",
" memory estimate: 0 bytes\n",
" allocs estimate: 0\n",
" --------------\n",
" minimum time: 8.906 μs (0.00% GC)\n",
" median time: 10.400 μs (0.00% GC)\n",
" mean time: 10.895 μs (0.00% GC)\n",
" maximum time: 47.163 μs (0.00% GC)\n",
" --------------\n",
" samples: 10000\n",
" evals/sample: 5"
]
},
"execution_count": 45,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"@benchmark ex2_LinearIndices_CartesianIndices(u,v,w, $nx1, $ny1) setup=( (u,v,w)=make_uvw($nx1,$ny1, $rng))"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"colab_type": "code",
"id": "GjATBy4bxrcu",
"outputId": "de34752f-fc5f-4623-c415-4972de59ac9c"
},
"outputs": [
{
"data": {
"text/plain": [
"ex2_view (generic function with 4 methods)"
]
},
"execution_count": 46,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"function ex2_view(u,v,w, nx=size(u,1),ny=size(u,2), alpha=0.3)\n",
" # @assert size(u)==(nx,ny)\n",
" # @assert size(v)==(nx,ny)\n",
" # @assert size(w)==(nx,ny)\n",
" w_sub=view(w,2:nx-1, 2:ny-1)\n",
" v_sub=view(v, 2:nx-1, 1:ny-2)\n",
" u_sub=view(u, 3:nx, 2:ny-1)\n",
" w_sub=u_sub+v_sub*alpha\n",
" 0\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 204
},
"colab_type": "code",
"id": "7b3luQAlxvEF",
"outputId": "ee666242-7b04-4314-db53-ba0858db51a2"
},
"outputs": [
{
"data": {
"text/plain": [
"BenchmarkTools.Trial: \n",
" memory estimate: 303.53 KiB\n",
" allocs estimate: 6\n",
" --------------\n",
" minimum time: 42.012 μs (0.00% GC)\n",
" median time: 52.443 μs (0.00% GC)\n",
" mean time: 103.169 μs (46.16% GC)\n",
" maximum time: 112.921 ms (99.88% GC)\n",
" --------------\n",
" samples: 10000\n",
" evals/sample: 1"
]
},
"execution_count": 47,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"@benchmark ex2_view(u,v,w, $nx1, $ny1) setup=( (u,v,w)=make_uvw($nx1,$ny1, $rng))"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"colab_type": "code",
"id": "DoPfMa6fxxkV",
"outputId": "466fa244-4852-4075-eda8-9a022cba7d49"
},
"outputs": [
{
"data": {
"text/plain": [
"ex2_dot_view (generic function with 4 methods)"
]
},
"execution_count": 48,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"function ex2_dot_view(u,v,w, nx=size(u,1),ny=size(u,2), alpha=0.3)\n",
" # @assert size(u)==(nx,ny)\n",
" # @assert size(v)==(nx,ny)\n",
" # @assert size(w)==(nx,ny)\n",
" w_sub=view(w,2:nx-1, 2:ny-1)\n",
" v_sub=view(v, 2:nx-1, 1:ny-2)\n",
" u_sub=view(u, 3:nx, 2:ny-1)\n",
" @. w_sub=u_sub+v_sub*alpha\n",
" 0\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 204
},
"colab_type": "code",
"id": "m8YA4Pfvxz4J",
"outputId": "f5090dd5-884a-414d-8518-a1f5b4aaadac"
},
"outputs": [
{
"data": {
"text/plain": [
"BenchmarkTools.Trial: \n",
" memory estimate: 192 bytes\n",
" allocs estimate: 3\n",
" --------------\n",
" minimum time: 12.832 μs (0.00% GC)\n",
" median time: 15.110 μs (0.00% GC)\n",
" mean time: 16.108 μs (0.00% GC)\n",
" maximum time: 38.263 μs (0.00% GC)\n",
" --------------\n",
" samples: 10000\n",
" evals/sample: 3"
]
},
"execution_count": 49,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"@benchmark ex2_dot_view(u,v,w, $nx1, $ny1) setup=( (u,v,w)=make_uvw($nx1,$ny1, $rng))"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 102
},
"colab_type": "code",
"id": "ZxwsJ9tLx2o3",
"outputId": "729aa677-40d7-4f8b-fea1-42ee80f5b54b"
},
"outputs": [
{
"data": {
"text/plain": [
"12-element BenchmarkTools.BenchmarkGroup:\n",
" tags: []\n",
" (\"ex2_double_loop_ji\", \"nx1=200\", \"ny1=100\") => Trial(11.020 μs)\n",
" (\"ex2_double_loop_ij\", \"nx1=100\", \"ny1=200\") => Trial(52.296 μs)\n",
""
]
},
"execution_count": 50,
"metadata": {
"tags": []
},
"output_type": "execute_result"
}
],
"source": [
"suite = BenchmarkGroup()\n",
"for (nx1,ny1) in [(200,100),(100,200)]\n",
" for f in [\n",
" :ex2_double_loop_ij,\n",
" :ex2_double_loop_ji,\n",
" :ex2_CartesianIndices,\n",
" :ex2_LinearIndices_CartesianIndices,\n",
" :ex2_view,\n",
" :ex2_dot_view ]\n",
" suite[string(f), \"nx1=\"*string(nx1), \"ny1=\"*string(ny1)] = @benchmarkable $(f)(u,v,w, $nx1, $ny1) setup=( (u,v,w)=make_uvw($nx1,$ny1, $rng))\n",
" end\n",
"end\n",
"tune!(suite);\n",
"results = run(suite)"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 999
},
"colab_type": "code",
"id": "froO8ZG1x4-C",
"outputId": "92cffed3-c18d-4177-f06c-73606f4f2f17"
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"┌ Warning: `getindex(o::PyObject, s::Symbol)` is deprecated in favor of dot overloading (`getproperty`) so elements should now be accessed as e.g. `o.s` instead of `o[:s]`.\n",
"│ caller = top-level scope at In[51]:1\n",
"└ @ Core In[51]:1\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"faster = [2, 6, 3, 4, 5, 1]\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"┌ Warning: `getindex(f::Figure, x)` is deprecated, use `getproperty(f, x)` instead.\n",
"│ caller = top-level scope at show.jl:555\n",
"└ @ Core show.jl:555\n",
"┌ Warning: `getindex(o::PyObject, s::Symbol)` is deprecated in favor of dot overloading (`getproperty`) so elements should now be accessed as e.g. `o.s` instead of `o[:s]`.\n",
"│ caller = top-level scope at In[51]:14\n",
"└ @ Core In[51]:14\n",
"┌ Warning: `getindex(o::PyObject, s::Symbol)` is deprecated in favor of dot overloading (`getproperty`) so elements should now be accessed as e.g. `o.s` instead of `o[:s]`.\n",
"│ caller = top-level scope at In[51]:15\n",
"└ @ Core In[51]:15\n",
"┌ Warning: `getindex(o::PyObject, s::Symbol)` is deprecated in favor of dot overloading (`getproperty`) so elements should now be accessed as e.g. `o.s` instead of `o[:s]`.\n",
"│ caller = top-level scope at In[51]:16\n",
"└ @ Core In[51]:16\n",
"┌ Warning: `getindex(o::PyObject, s::Symbol)` is deprecated in favor of dot overloading (`getproperty`) so elements should now be accessed as e.g. `o.s` instead of `o[:s]`.\n",
"│ caller = top-level scope at In[51]:17\n",
"└ @ Core In[51]:17\n",
"┌ Warning: `getindex(o::PyObject, s::Symbol)` is deprecated in favor of dot overloading (`getproperty`) so elements should now be accessed as e.g. `o.s` instead of `o[:s]`.\n",
"│ caller = top-level scope at In[51]:18\n",
"└ @ Core In[51]:18\n",
"┌ Warning: `getindex(o::PyObject, s::Symbol)` is deprecated in favor of dot overloading (`getproperty`) so elements should now be accessed as e.g. `o.s` instead of `o[:s]`.\n",
"│ caller = top-level scope at In[51]:19\n",
"└ @ Core In[51]:19\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"faster = [5, 3, 4, 2, 1, 6]\n"
]
},
{
"data": {
"image/png": "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kLW1tVb7zsnJIbFYTJ988gllZGRQVFQUdejQQW2u2w8//EBCoZDWrl1Lt27don379pFEIqF9+/ap2kGluWMVrKysVHUq5pN16dKFYmJi6ObNmzR79myytLSkJ0+eEFH1OXZ37twhc3Nz2rJlC92+fZuSk5PJ09OTZs6cqdWxVZ5jV15eTn369CFfX1/64Ycf6NKlS9S3b18aMmSIqn5cXBwZGxvTjh076NatWxQZGUkikYjOnj2rdpzt2rWjPXv20K1bt+hPf/oTiUQiunnzplYxVe6nuubYrV69WuOcLUOdYxcVFaXVnLXje8OrzbHTdtumWtavX08AyNHRUa18/vz5BIAKCws19oFCoSAAdPDgQTp48KDWdRljjaehc+w4sWulXrx4QWZmZpSSkqJWPmvWLHr//feJiOju3btkaWlJy5YtI4lEQtHR0TW29/jxY7K3t6fly5drtf+wsDByd3dXK1u2bJlagjV16lTy9/dXq7NkyRK17bRN7D777DPV+levXlGXLl1o48aNRFQ9sZs1axZ9+OGHam0mJSWRUCik58+f13lslRO7f//73yQSiSgnJ0e1/saNGwSALl++TEREgwYNojlz5qi18d5779E777yjdpxz585VqzNgwACaN29enfFUbK9tYvfixQsqKChQLbm5uQad2F28eJEAUFRUFMnl8mpLRfJ29cT+aold1W2//PJLvSZ2I0eOVP0hU7l8y5YtBIBSU1M19kFKSgoBoHPnzqn+f9CmLmOs8fDNE6xe7ty5g5KSEvj7+8PCwkK1HDhwAHfv3gUAdOvWDZs3b8bGjRvx7rvvYurUqRrbUigUGD16NNzd3bFmzRqt9p+eno4BAwaolfn4+FSrM3jwYLWywYMHIzMzs97zeyq3bWRkhH79+qkusVV1/fp17N+/X61fAgICoFQqkZWVVa/9pqenw87ODnZ2dqoyd3d3tGnTRrX/mo6zanxV+8fHx6fGY3gTYrEYUqlUbTFkEokEAODm5gYvL69qi5ubGwCo5ijWtq2+5phWzLE7c+YMAOC///2vKj4HBwf87ne/g0wmQ3h4OJRK9WfwVZ6S4efnBz8/P63rMsaaH5493UoVFRUBAI4fP47OnTurrav8D9iFCxcgEomQnZ2NsrKyahPuCwsLERgYCEtLS8THx8PY2Ljxg69EIBCAiNTKXr169UZtFhUV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",
"text/plain": [
"Figure(PyObject <Figure size 640x480 with 2 Axes>)"
]
},
"metadata": {
"tags": []
},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"┌ Warning: `getindex(o::PyObject, s::Symbol)` is deprecated in favor of dot overloading (`getproperty`) so elements should now be accessed as e.g. `o.s` instead of `o[:s]`.\n",
"│ caller = top-level scope at In[51]:22\n",
"└ @ Core In[51]:22\n"
]
}
],
"source": [
"fig = plt[:figure]()\n",
"\n",
"for (case,(nx1,ny1)) in enumerate([(200,100),(100,200)])\n",
" tag1=\"nx1=\"*string(nx1)\n",
" tag2=\"ny1=\"*string(ny1)\n",
" r_slices=[]\n",
" push!(r_slices, collect(results[@tagged tag1 && tag2]))\n",
" r_slice=r_slices[end]\n",
" funcs=[ e[1][1] for e in r_slice ];\n",
" times=[ e[2].times for e in r_slice ];\n",
" faster=sortperm(r_slice, rev=true, by=e->median(e[2]))\n",
" @show faster\n",
" \n",
" ax=fig[:add_subplot](2,1,case)\n",
" ax[:boxplot](times[faster][:], vert=false)\n",
" ax[:set_xlim](5e3,5e7)\n",
" ax[:set_xscale](\"log\")\n",
" ax[:set_yticklabels](funcs[faster]);\n",
" ax[:set_title](tag1*\", \"*tag2)\n",
" ax[:set_xlabel](\"time / ns\")\n",
"end\n",
"plt[:tight_layout](h_pad=1.0)"
]
},
{
"cell_type": "code",
"execution_count": 0,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "gJreYkgEx8UB"
},
"outputs": [],
"source": []
}
],
"metadata": {
"colab": {
"collapsed_sections": [],
"name": "matrix_computation_20190315_colab",
"provenance": [],
"version": "0.3.2"
},
"kernelspec": {
"display_name": "Julia 1.0.3",
"language": "julia",
"name": "julia-1.0"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment