From d1d380a88f32be0ea1b441f9e7a11ef954fc47d9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 7 Sep 2023 18:02:56 +0000 Subject: [PATCH] deploy: 25e063dbe05d987b3818d6611e43ed644e44051a --- 404.html | 4 ++-- CNAME | 1 - ...3321d.50613303.js => 2523321d.54e7755c.js} | 2 +- ...bc122.a2fd825d.js => 337bc122.22826266.js} | 2 +- ...12fa2.74d68d7b.js => 4ee12fa2.bd3f9667.js} | 2 +- ...94373.f790d5a8.js => 7cf94373.f6d9052f.js} | 2 +- ...80cdb.71718a61.js => 7d580cdb.bd936269.js} | 2 +- ...ed470.690ec9f0.js => 834ed470.668efafa.js} | 2 +- ...f91d3.21975b05.js => 83bf91d3.193b1d35.js} | 2 +- ...3ef4a.13c50ab8.js => f533ef4a.6e5c0557.js} | 2 +- ...n.be793c46.js => runtime~main.05f83fa7.js} | 2 +- blog/2023/08/02/copr/index.html | 4 ++-- blog/aoc-2022/1st-week/index.html | 4 ++-- blog/aoc-2022/2nd-week/index.html | 4 ++-- blog/aoc-2022/3rd-week/index.html | 4 ++-- blog/aoc-2022/4th-week/index.html | 4 ++-- blog/aoc-2022/intro/index.html | 4 ++-- blog/archive/index.html | 4 ++-- blog/index.html | 4 ++-- blog/leetcode/sort-diagonally/index.html | 4 ++-- blog/tags/admin/index.html | 4 ++-- blog/tags/advent-of-code-2022/index.html | 4 ++-- blog/tags/advent-of-code/index.html | 4 ++-- blog/tags/copr/index.html | 4 ++-- blog/tags/cpp/index.html | 4 ++-- blog/tags/index.html | 4 ++-- blog/tags/iterators/index.html | 4 ++-- blog/tags/leetcode/index.html | 4 ++-- blog/tags/red-hat/index.html | 4 ++-- blog/tags/rust/index.html | 4 ++-- blog/tags/vps/index.html | 4 ++-- blog/tags/🏭/index.html | 4 ++-- contributions/index.html | 4 ++-- .../graphs/iterative-and-iterators.tar.bz2 | Bin 0 -> 1937 bytes .../graphs/iterative-and-iterators.tar.gz | Bin 0 -> 1956 bytes files/ib002/recursion/karel-1.tar.bz2 | Bin 0 -> 5887 bytes files/ib002/recursion/karel-1.tar.gz | Bin 0 -> 6588 bytes .../recursion/pyramid-slide-down.tar.bz2 | Bin 0 -> 1541 bytes .../ib002/recursion/pyramid-slide-down.tar.gz | Bin 0 -> 1420 bytes files/ib002/time-complexity/extend.tar.bz2 | Bin 0 -> 38455 bytes files/ib002/time-complexity/extend.tar.gz | Bin 0 -> 38678 bytes files/pb071/bonuses/03.tar.bz2 | Bin 2648 -> 2635 bytes files/pb071/bonuses/03.tar.gz | Bin 2338 -> 2336 bytes files/pb071/bonuses/04.tar.bz2 | Bin 2531 -> 2531 bytes files/pb071/bonuses/04.tar.gz | Bin 2500 -> 2499 bytes files/pb071/bonuses/05-06.tar.bz2 | Bin 3635 -> 3634 bytes files/pb071/bonuses/05-06.tar.gz | Bin 3486 -> 3486 bytes files/pb071/bonuses/08.tar.bz2 | Bin 76279 -> 76275 bytes files/pb071/bonuses/08.tar.gz | Bin 106553 -> 106560 bytes files/pb071/bonuses/10.tar.bz2 | Bin 234785 -> 234765 bytes files/pb071/bonuses/10.tar.gz | Bin 230109 -> 230106 bytes .../postcondition-ambiguity/index.html | 4 ++-- .../algorithms-and-correctness/index.html | 4 ++-- .../index.html | 4 ++-- ib002/category/graphs/index.html | 4 ++-- ib002/category/recursion/index.html | 4 ++-- ib002/category/red-black-trees/index.html | 4 ++-- ib002/graphs/bfs-tree/index.html | 4 ++-- .../graphs/iterative-and-iterators/index.html | 4 ++-- ib002/index.html | 6 +++--- ib002/rb-trees/applications/index.html | 4 ++-- ib002/rb-trees/rules/index.html | 4 ++-- ib002/recursion/karel-1/index.html | 4 ++-- ib002/recursion/pyramid-slide-down/index.html | 6 +++--- ib002/tags/applications/index.html | 4 ++-- ib002/tags/backtracking/index.html | 4 ++-- ib002/tags/balanced-trees/index.html | 4 ++-- ib002/tags/bfs/index.html | 4 ++-- ib002/tags/bottom-up-dp/index.html | 4 ++-- ib002/tags/c/index.html | 4 ++-- ib002/tags/csharp/index.html | 4 ++-- ib002/tags/dynamic-array/index.html | 4 ++-- ib002/tags/dynamic-programming/index.html | 4 ++-- ib002/tags/exponential/index.html | 4 ++-- ib002/tags/graphs/index.html | 4 ++-- ib002/tags/greedy/index.html | 4 ++-- ib002/tags/index.html | 4 ++-- ib002/tags/iterative/index.html | 4 ++-- ib002/tags/iterators/index.html | 4 ++-- ib002/tags/java/index.html | 4 ++-- ib002/tags/karel/index.html | 4 ++-- ib002/tags/postconditions/index.html | 4 ++-- ib002/tags/python/index.html | 4 ++-- ib002/tags/recursion/index.html | 4 ++-- ib002/tags/red-black-trees/index.html | 4 ++-- ib002/tags/sorting/index.html | 4 ++-- ib002/tags/testing/index.html | 4 ++-- ib002/tags/time-complexity/index.html | 4 ++-- ib002/tags/top-down-dp/index.html | 4 ++-- ib002/time-complexity/extend/index.html | 4 ++-- index.html | 4 ++-- pb071/bonuses/seminar-03/index.html | 4 ++-- pb071/bonuses/seminar-04/index.html | 4 ++-- pb071/bonuses/seminar-05-06/index.html | 6 +++--- pb071/bonuses/seminar-08/index.html | 6 +++--- pb071/bonuses/seminar-10/index.html | 6 +++--- pb071/category/bonuses/index.html | 4 ++-- pb071/category/practice-exams/index.html | 4 ++-- pb071/index.html | 6 +++--- pb071/mr/index.html | 6 +++--- pb071/pexam/cams/index.html | 4 ++-- pb071/pexam/garbage_collect/index.html | 4 ++-- pb161/environment/index.html | 4 ++-- pb161/index.html | 6 +++--- search/index.html | 4 ++-- talks/index.html | 4 ++-- 106 files changed, 173 insertions(+), 174 deletions(-) delete mode 100644 CNAME rename assets/js/{2523321d.50613303.js => 2523321d.54e7755c.js} (99%) rename assets/js/{337bc122.a2fd825d.js => 337bc122.22826266.js} (97%) rename assets/js/{4ee12fa2.74d68d7b.js => 4ee12fa2.bd3f9667.js} (97%) rename assets/js/{7cf94373.f790d5a8.js => 7cf94373.f6d9052f.js} (99%) rename assets/js/{7d580cdb.71718a61.js => 7d580cdb.bd936269.js} (99%) rename assets/js/{834ed470.690ec9f0.js => 834ed470.668efafa.js} (98%) rename assets/js/{83bf91d3.21975b05.js => 83bf91d3.193b1d35.js} (99%) rename assets/js/{f533ef4a.13c50ab8.js => f533ef4a.6e5c0557.js} (99%) rename assets/js/{runtime~main.be793c46.js => runtime~main.05f83fa7.js} (68%) create mode 100644 files/ib002/graphs/iterative-and-iterators.tar.bz2 create mode 100644 files/ib002/graphs/iterative-and-iterators.tar.gz create mode 100644 files/ib002/recursion/karel-1.tar.bz2 create mode 100644 files/ib002/recursion/karel-1.tar.gz create mode 100644 files/ib002/recursion/pyramid-slide-down.tar.bz2 create mode 100644 files/ib002/recursion/pyramid-slide-down.tar.gz create mode 100644 files/ib002/time-complexity/extend.tar.bz2 create mode 100644 files/ib002/time-complexity/extend.tar.gz diff --git a/404.html b/404.html index 10f54f9..5c8b5a6 100644 --- a/404.html +++ b/404.html @@ -13,13 +13,13 @@ - +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

- + \ No newline at end of file diff --git a/CNAME b/CNAME deleted file mode 100644 index 4c91a2c..0000000 --- a/CNAME +++ /dev/null @@ -1 +0,0 @@ -blog.mfocko.xyz \ No newline at end of file diff --git a/assets/js/2523321d.50613303.js b/assets/js/2523321d.54e7755c.js similarity index 99% rename from assets/js/2523321d.50613303.js rename to assets/js/2523321d.54e7755c.js index 470fc9f..ffc2e27 100644 --- a/assets/js/2523321d.50613303.js +++ b/assets/js/2523321d.54e7755c.js @@ -1 +1 @@ -"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[9193],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>k});var i=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=i.createContext({}),u=function(e){var t=i.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=u(e.components);return i.createElement(s.Provider,{value:t},e.children)},m="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},d=i.forwardRef((function(e,t){var n=e.components,a=e.mdxType,r=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),m=u(n),d=a,k=m["".concat(s,".").concat(d)]||m[d]||c[d]||r;return n?i.createElement(k,o(o({ref:t},p),{},{components:n})):i.createElement(k,o({ref:t},p))}));function k(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var r=n.length,o=new Array(r);o[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[m]="string"==typeof e?e:a,o[1]=l;for(var u=2;u{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>c,frontMatter:()=>r,metadata:()=>l,toc:()=>u});var i=n(7462),a=(n(7294),n(3905));const r={id:"seminar-08",title:"8th seminar",description:"Manipulating with files only char-by-char and a magic tree.\n"},o="8th seminar bonus assignment",l={unversionedId:"bonuses/seminar-08",id:"bonuses/seminar-08",title:"8th seminar",description:"Manipulating with files only char-by-char and a magic tree.\n",source:"@site/pb071/bonuses/08.md",sourceDirName:"bonuses",slug:"/bonuses/seminar-08",permalink:"/pb071/bonuses/seminar-08",draft:!1,editUrl:"https://gitlab.com/mfocko/blog/tree/main/pb071/bonuses/08.md",tags:[],version:"current",lastUpdatedAt:1694108971,formattedLastUpdatedAt:"Sep 7, 2023",frontMatter:{id:"seminar-08",title:"8th seminar",description:"Manipulating with files only char-by-char and a magic tree.\n"},sidebar:"autogeneratedBar",previous:{title:"5th and 6th seminar",permalink:"/pb071/bonuses/seminar-05-06"},next:{title:"10th seminar",permalink:"/pb071/bonuses/seminar-10"}},s={},u=[{value:"Introduction",id:"introduction",level:2},{value:"Warning",id:"warning",level:2},{value:"Testing",id:"testing",level:2},{value:"Task no. 1: Counting (0.75 K\u20a1)",id:"task-no-1-counting-075-k",level:2},{value:"Requirements",id:"requirements",level:3},{value:"Bonus part (0.75 K\u20a1)",id:"bonus-part-075-k",level:3},{value:"Task no. 2: Weird trees (1 K\u20a1)",id:"task-no-2-weird-trees-1-k",level:2},{value:"Submitting",id:"submitting",level:2}],p={toc:u},m="wrapper";function c(e){let{components:t,...r}=e;return(0,a.kt)(m,(0,i.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"8th-seminar-bonus-assignment"},"8th seminar bonus assignment"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"pathname:///files/pb071/bonuses/08.tar.gz"},"Source")),(0,a.kt)("h2",{id:"introduction"},"Introduction"),(0,a.kt)("p",null,"In this bonus you can implement two tasks, one of them has a bonus part with generic\nsolution."),(0,a.kt)("p",null,"One is focused on counting ananas or in case of generic version any substring in\nthe file, but with a restriction on the function you use."),(0,a.kt)("p",null,"Other one has a more algorithmic spirit."),(0,a.kt)("p",null,"For this bonus you can get at maximum 2.5 K\u20a1."),(0,a.kt)("h2",{id:"warning"},"Warning"),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"DO NOT COMMIT test data")," to your own git repository, since the tests include\nfiles that exceed 10MB by themselves. Even if they are on separate branch, they\ntake up the space."),(0,a.kt)("h2",{id:"testing"},"Testing"),(0,a.kt)("p",null,"For testing you are provided with python script (requires ",(0,a.kt)("inlineCode",{parentName:"p"},"click")," to be installed:\n",(0,a.kt)("inlineCode",{parentName:"p"},"pip3 install --user click"),") and ",(0,a.kt)("inlineCode",{parentName:"p"},"Makefile")," that provides following targets:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"check-counting")," - runs the ",(0,a.kt)("inlineCode",{parentName:"li"},"counting")," tests"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"check-counting-bonus")," - runs the ",(0,a.kt)("inlineCode",{parentName:"li"},"counting")," tests with bonus implemented"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"check")," - runs both ",(0,a.kt)("inlineCode",{parentName:"li"},"counting")," and ",(0,a.kt)("inlineCode",{parentName:"li"},"counting-bonus")," tests"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"clean")," - removes output files from the test runs")),(0,a.kt)("h2",{id:"task-no-1-counting-075-k"},"Task no. 1: Counting (0.75 K\u20a1)"),(0,a.kt)("p",null,"Your first task is to make smallish program that counts occurences of specific\n(or given) word from file and writes the number to other file."),(0,a.kt)("p",null,"Usage of the program is:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"Usage: ./counting [string-to-be-counted]\n")),(0,a.kt)("p",null,"Arguments that are passed to the program represent:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"")," - path to the file where we count the words"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"")," - path to the file where we output the count"),(0,a.kt)("li",{parentName:"ul"},"(optional argument) ",(0,a.kt)("inlineCode",{parentName:"li"},"[string-to-be-counted]")," - in case you implement bonus,\notherwise we default to word ",(0,a.kt)("inlineCode",{parentName:"li"},"ananas")," ;)")),(0,a.kt)("p",null,"In skeleton you are given 3 empty, but documented, functions to implement."),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("inlineCode",{parentName:"li"},"count_anything")," - function accepts input file and substring to be counted in\nthe file, returns the count."),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("inlineCode",{parentName:"li"},"count_ananas")," - same as ",(0,a.kt)("inlineCode",{parentName:"li"},"count_anything"),", but specialized for ananases, the\ndefault implementation from the skeleton expects you to implement ",(0,a.kt)("inlineCode",{parentName:"li"},"count_anything"),"\nand therefore it just calls the other function."),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("inlineCode",{parentName:"li"},"write_number")," - function that writes the number to the file, why would you\nneed the function is explained later :)")),(0,a.kt)("h3",{id:"requirements"},"Requirements"),(0,a.kt)("p",null,"For manipulation with the files you are only allowed to use ",(0,a.kt)("inlineCode",{parentName:"p"},"fopen"),", ",(0,a.kt)("inlineCode",{parentName:"p"},"fclose"),",\n",(0,a.kt)("inlineCode",{parentName:"p"},"fgetc")," and ",(0,a.kt)("inlineCode",{parentName:"p"},"fputc"),". Functions like ",(0,a.kt)("inlineCode",{parentName:"p"},"fprintf")," (except for ",(0,a.kt)("inlineCode",{parentName:"p"},"stderr")," or logging) and\n",(0,a.kt)("inlineCode",{parentName:"p"},"fscanf")," are ",(0,a.kt)("strong",{parentName:"p"},"forbidden"),"."),(0,a.kt)("p",null,"In case you struggle and want to use one of those functions, the solution will be\npenalized by 50% of points."),(0,a.kt)("h3",{id:"bonus-part-075-k"},"Bonus part (0.75 K\u20a1)"),(0,a.kt)("p",null,"Bonus part of this assignment is to implement ",(0,a.kt)("inlineCode",{parentName:"p"},"count_anything")," rather than ",(0,a.kt)("inlineCode",{parentName:"p"},"count_ananas"),"."),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},"Smaller hint: This task does not need dynamic allocation :) You just need one\ngood helper function and the right idea ;)")),(0,a.kt)("h2",{id:"task-no-2-weird-trees-1-k"},"Task no. 2: Weird trees (1 K\u20a1)"),(0,a.kt)("p",null,"In this task we are crossing our paths with ",(0,a.kt)("em",{parentName:"p"},"algorithms and data structures"),".\nYour task is to write a program that constructs tree from the file that is given\nas an argument and pretty-prints it."),(0,a.kt)("p",null,"Input file consists of lines, that include ",(0,a.kt)("inlineCode",{parentName:"p"},"key")," and ",(0,a.kt)("inlineCode",{parentName:"p"},"rank")," in form ",(0,a.kt)("inlineCode",{parentName:"p"},"key;rank"),"\nor ",(0,a.kt)("inlineCode",{parentName:"p"},"nil"),". Why would we have ",(0,a.kt)("inlineCode",{parentName:"p"},"nil")," in a file? The file represents pre-order iteration\nthrough the tree. Leaves never have rank different than 0, so you can safely assume\n2 non-existing ",(0,a.kt)("inlineCode",{parentName:"p"},"nil"),"s in the input after you read such node ;)"),(0,a.kt)("table",null,(0,a.kt)("tr",null,(0,a.kt)("th",null,"Example input file"),(0,a.kt)("th",null,"Tree it represents")),(0,a.kt)("tr",null,(0,a.kt)("td",null,(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"8;4\n5;3\n3;2\n2;1\n1;0\nnil\n4;0\n7;1\n6;0\nnil\n11;2\n10;1\n9;0\nnil\n12;0\n"))),(0,a.kt)("td",null,(0,a.kt)("p",null,(0,a.kt)("img",{alt:"tree",src:n(4860).Z,width:"633",height:"684"}))))),(0,a.kt)("p",null,"In this task you are only provided with different trees in the ",(0,a.kt)("inlineCode",{parentName:"p"},"test-trees")," directory.\nImplementation and format of the pretty-print is totally up to you. :)"),(0,a.kt)("p",null,"Example of mine for the tree above:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"8 (rank = 4)\n+-- 5 (rank = 3)\n| +-- 3 (rank = 2)\n| | +-- 2 (rank = 1)\n| | | +-- 1 (rank = 0)\n| | +-- 4 (rank = 0)\n| +-- 7 (rank = 1)\n| +-- 6 (rank = 0)\n+-- 11 (rank = 2)\n +-- 10 (rank = 1)\n | +-- 9 (rank = 0)\n +-- 12 (rank = 0)\n")),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},"Can you find out what are those trees? :)")),(0,a.kt)("h2",{id:"submitting"},"Submitting"),(0,a.kt)("p",null,"In case you have any questions, feel free to reach out to me."),(0,a.kt)("hr",null),(0,a.kt)("p",null,"Ideally submit the assignment through the merge request. Step-by-step tutorial is\npresent ",(0,a.kt)("a",{parentName:"p",href:"../mr"},"here"),". For setting assignee my xlogin is ",(0,a.kt)("inlineCode",{parentName:"p"},"xfocko"),"."),(0,a.kt)("p",null,"In case you do not want to experiment on GitLab, send me the source code via email,\nbut please prefix subject with: ",(0,a.kt)("inlineCode",{parentName:"p"},"[PB071/14][seminar-08]")),(0,a.kt)("p",null,"Deadline for the submission of the bonus is ",(0,a.kt)("strong",{parentName:"p"},"May 4th 24:00"),"."))}c.isMDXComponent=!0},4860:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/tree-c9e37f87f9095c00fad33ea034485ce6.png"}}]); \ No newline at end of file +"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[9193],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>k});var i=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=i.createContext({}),u=function(e){var t=i.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=u(e.components);return i.createElement(s.Provider,{value:t},e.children)},m="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},d=i.forwardRef((function(e,t){var n=e.components,a=e.mdxType,r=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),m=u(n),d=a,k=m["".concat(s,".").concat(d)]||m[d]||c[d]||r;return n?i.createElement(k,o(o({ref:t},p),{},{components:n})):i.createElement(k,o({ref:t},p))}));function k(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var r=n.length,o=new Array(r);o[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[m]="string"==typeof e?e:a,o[1]=l;for(var u=2;u{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>c,frontMatter:()=>r,metadata:()=>l,toc:()=>u});var i=n(7462),a=(n(7294),n(3905));const r={id:"seminar-08",title:"8th seminar",description:"Manipulating with files only char-by-char and a magic tree.\n"},o="8th seminar bonus assignment",l={unversionedId:"bonuses/seminar-08",id:"bonuses/seminar-08",title:"8th seminar",description:"Manipulating with files only char-by-char and a magic tree.\n",source:"@site/pb071/bonuses/08.md",sourceDirName:"bonuses",slug:"/bonuses/seminar-08",permalink:"/pb071/bonuses/seminar-08",draft:!1,editUrl:"https://gitlab.com/mfocko/blog/tree/main/pb071/bonuses/08.md",tags:[],version:"current",lastUpdatedAt:1694109587,formattedLastUpdatedAt:"Sep 7, 2023",frontMatter:{id:"seminar-08",title:"8th seminar",description:"Manipulating with files only char-by-char and a magic tree.\n"},sidebar:"autogeneratedBar",previous:{title:"5th and 6th seminar",permalink:"/pb071/bonuses/seminar-05-06"},next:{title:"10th seminar",permalink:"/pb071/bonuses/seminar-10"}},s={},u=[{value:"Introduction",id:"introduction",level:2},{value:"Warning",id:"warning",level:2},{value:"Testing",id:"testing",level:2},{value:"Task no. 1: Counting (0.75 K\u20a1)",id:"task-no-1-counting-075-k",level:2},{value:"Requirements",id:"requirements",level:3},{value:"Bonus part (0.75 K\u20a1)",id:"bonus-part-075-k",level:3},{value:"Task no. 2: Weird trees (1 K\u20a1)",id:"task-no-2-weird-trees-1-k",level:2},{value:"Submitting",id:"submitting",level:2}],p={toc:u},m="wrapper";function c(e){let{components:t,...r}=e;return(0,a.kt)(m,(0,i.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"8th-seminar-bonus-assignment"},"8th seminar bonus assignment"),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"pathname:///files/pb071/bonuses/08.tar.gz"},"Source")),(0,a.kt)("h2",{id:"introduction"},"Introduction"),(0,a.kt)("p",null,"In this bonus you can implement two tasks, one of them has a bonus part with generic\nsolution."),(0,a.kt)("p",null,"One is focused on counting ananas or in case of generic version any substring in\nthe file, but with a restriction on the function you use."),(0,a.kt)("p",null,"Other one has a more algorithmic spirit."),(0,a.kt)("p",null,"For this bonus you can get at maximum 2.5 K\u20a1."),(0,a.kt)("h2",{id:"warning"},"Warning"),(0,a.kt)("p",null,(0,a.kt)("strong",{parentName:"p"},"DO NOT COMMIT test data")," to your own git repository, since the tests include\nfiles that exceed 10MB by themselves. Even if they are on separate branch, they\ntake up the space."),(0,a.kt)("h2",{id:"testing"},"Testing"),(0,a.kt)("p",null,"For testing you are provided with python script (requires ",(0,a.kt)("inlineCode",{parentName:"p"},"click")," to be installed:\n",(0,a.kt)("inlineCode",{parentName:"p"},"pip3 install --user click"),") and ",(0,a.kt)("inlineCode",{parentName:"p"},"Makefile")," that provides following targets:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"check-counting")," - runs the ",(0,a.kt)("inlineCode",{parentName:"li"},"counting")," tests"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"check-counting-bonus")," - runs the ",(0,a.kt)("inlineCode",{parentName:"li"},"counting")," tests with bonus implemented"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"check")," - runs both ",(0,a.kt)("inlineCode",{parentName:"li"},"counting")," and ",(0,a.kt)("inlineCode",{parentName:"li"},"counting-bonus")," tests"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"clean")," - removes output files from the test runs")),(0,a.kt)("h2",{id:"task-no-1-counting-075-k"},"Task no. 1: Counting (0.75 K\u20a1)"),(0,a.kt)("p",null,"Your first task is to make smallish program that counts occurences of specific\n(or given) word from file and writes the number to other file."),(0,a.kt)("p",null,"Usage of the program is:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"Usage: ./counting [string-to-be-counted]\n")),(0,a.kt)("p",null,"Arguments that are passed to the program represent:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"")," - path to the file where we count the words"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"")," - path to the file where we output the count"),(0,a.kt)("li",{parentName:"ul"},"(optional argument) ",(0,a.kt)("inlineCode",{parentName:"li"},"[string-to-be-counted]")," - in case you implement bonus,\notherwise we default to word ",(0,a.kt)("inlineCode",{parentName:"li"},"ananas")," ;)")),(0,a.kt)("p",null,"In skeleton you are given 3 empty, but documented, functions to implement."),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("inlineCode",{parentName:"li"},"count_anything")," - function accepts input file and substring to be counted in\nthe file, returns the count."),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("inlineCode",{parentName:"li"},"count_ananas")," - same as ",(0,a.kt)("inlineCode",{parentName:"li"},"count_anything"),", but specialized for ananases, the\ndefault implementation from the skeleton expects you to implement ",(0,a.kt)("inlineCode",{parentName:"li"},"count_anything"),"\nand therefore it just calls the other function."),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("inlineCode",{parentName:"li"},"write_number")," - function that writes the number to the file, why would you\nneed the function is explained later :)")),(0,a.kt)("h3",{id:"requirements"},"Requirements"),(0,a.kt)("p",null,"For manipulation with the files you are only allowed to use ",(0,a.kt)("inlineCode",{parentName:"p"},"fopen"),", ",(0,a.kt)("inlineCode",{parentName:"p"},"fclose"),",\n",(0,a.kt)("inlineCode",{parentName:"p"},"fgetc")," and ",(0,a.kt)("inlineCode",{parentName:"p"},"fputc"),". Functions like ",(0,a.kt)("inlineCode",{parentName:"p"},"fprintf")," (except for ",(0,a.kt)("inlineCode",{parentName:"p"},"stderr")," or logging) and\n",(0,a.kt)("inlineCode",{parentName:"p"},"fscanf")," are ",(0,a.kt)("strong",{parentName:"p"},"forbidden"),"."),(0,a.kt)("p",null,"In case you struggle and want to use one of those functions, the solution will be\npenalized by 50% of points."),(0,a.kt)("h3",{id:"bonus-part-075-k"},"Bonus part (0.75 K\u20a1)"),(0,a.kt)("p",null,"Bonus part of this assignment is to implement ",(0,a.kt)("inlineCode",{parentName:"p"},"count_anything")," rather than ",(0,a.kt)("inlineCode",{parentName:"p"},"count_ananas"),"."),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},"Smaller hint: This task does not need dynamic allocation :) You just need one\ngood helper function and the right idea ;)")),(0,a.kt)("h2",{id:"task-no-2-weird-trees-1-k"},"Task no. 2: Weird trees (1 K\u20a1)"),(0,a.kt)("p",null,"In this task we are crossing our paths with ",(0,a.kt)("em",{parentName:"p"},"algorithms and data structures"),".\nYour task is to write a program that constructs tree from the file that is given\nas an argument and pretty-prints it."),(0,a.kt)("p",null,"Input file consists of lines, that include ",(0,a.kt)("inlineCode",{parentName:"p"},"key")," and ",(0,a.kt)("inlineCode",{parentName:"p"},"rank")," in form ",(0,a.kt)("inlineCode",{parentName:"p"},"key;rank"),"\nor ",(0,a.kt)("inlineCode",{parentName:"p"},"nil"),". Why would we have ",(0,a.kt)("inlineCode",{parentName:"p"},"nil")," in a file? The file represents pre-order iteration\nthrough the tree. Leaves never have rank different than 0, so you can safely assume\n2 non-existing ",(0,a.kt)("inlineCode",{parentName:"p"},"nil"),"s in the input after you read such node ;)"),(0,a.kt)("table",null,(0,a.kt)("tr",null,(0,a.kt)("th",null,"Example input file"),(0,a.kt)("th",null,"Tree it represents")),(0,a.kt)("tr",null,(0,a.kt)("td",null,(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"8;4\n5;3\n3;2\n2;1\n1;0\nnil\n4;0\n7;1\n6;0\nnil\n11;2\n10;1\n9;0\nnil\n12;0\n"))),(0,a.kt)("td",null,(0,a.kt)("p",null,(0,a.kt)("img",{alt:"tree",src:n(4860).Z,width:"633",height:"684"}))))),(0,a.kt)("p",null,"In this task you are only provided with different trees in the ",(0,a.kt)("inlineCode",{parentName:"p"},"test-trees")," directory.\nImplementation and format of the pretty-print is totally up to you. :)"),(0,a.kt)("p",null,"Example of mine for the tree above:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"8 (rank = 4)\n+-- 5 (rank = 3)\n| +-- 3 (rank = 2)\n| | +-- 2 (rank = 1)\n| | | +-- 1 (rank = 0)\n| | +-- 4 (rank = 0)\n| +-- 7 (rank = 1)\n| +-- 6 (rank = 0)\n+-- 11 (rank = 2)\n +-- 10 (rank = 1)\n | +-- 9 (rank = 0)\n +-- 12 (rank = 0)\n")),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},"Can you find out what are those trees? :)")),(0,a.kt)("h2",{id:"submitting"},"Submitting"),(0,a.kt)("p",null,"In case you have any questions, feel free to reach out to me."),(0,a.kt)("hr",null),(0,a.kt)("p",null,"Ideally submit the assignment through the merge request. Step-by-step tutorial is\npresent ",(0,a.kt)("a",{parentName:"p",href:"../mr"},"here"),". For setting assignee my xlogin is ",(0,a.kt)("inlineCode",{parentName:"p"},"xfocko"),"."),(0,a.kt)("p",null,"In case you do not want to experiment on GitLab, send me the source code via email,\nbut please prefix subject with: ",(0,a.kt)("inlineCode",{parentName:"p"},"[PB071/14][seminar-08]")),(0,a.kt)("p",null,"Deadline for the submission of the bonus is ",(0,a.kt)("strong",{parentName:"p"},"May 4th 24:00"),"."))}c.isMDXComponent=!0},4860:(e,t,n)=>{n.d(t,{Z:()=>i});const i=n.p+"assets/images/tree-c9e37f87f9095c00fad33ea034485ce6.png"}}]); \ No newline at end of file diff --git a/assets/js/337bc122.a2fd825d.js b/assets/js/337bc122.22826266.js similarity index 97% rename from assets/js/337bc122.a2fd825d.js rename to assets/js/337bc122.22826266.js index 16ed7a1..9d72365 100644 --- a/assets/js/337bc122.a2fd825d.js +++ b/assets/js/337bc122.22826266.js @@ -1 +1 @@ -"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[1731],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>b});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var p=n.createContext({}),l=function(e){var t=n.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=l(e.components);return n.createElement(p.Provider,{value:t},e.children)},s="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,p=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),s=l(r),d=o,b=s["".concat(p,".").concat(d)]||s[d]||f[d]||a;return r?n.createElement(b,i(i({ref:t},u),{},{components:r})):n.createElement(b,i({ref:t},u))}));function b(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=d;var c={};for(var p in t)hasOwnProperty.call(t,p)&&(c[p]=t[p]);c.originalType=e,c[s]="string"==typeof e?e:o,i[1]=c;for(var l=2;l{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>f,frontMatter:()=>a,metadata:()=>c,toc:()=>l});var n=r(7462),o=(r(7294),r(3905));const a={id:"pb071-intro",title:"Introduction",slug:"/"},i=void 0,c={unversionedId:"pb071-intro",id:"pb071-intro",title:"Introduction",description:"",source:"@site/pb071/00-intro-pb071.md",sourceDirName:".",slug:"/",permalink:"/pb071/",draft:!1,editUrl:"https://gitlab.com/mfocko/blog/tree/main/pb071/00-intro-pb071.md",tags:[],version:"current",lastUpdatedAt:1694108971,formattedLastUpdatedAt:"Sep 7, 2023",sidebarPosition:0,frontMatter:{id:"pb071-intro",title:"Introduction",slug:"/"},sidebar:"autogeneratedBar",next:{title:"Bonuses",permalink:"/pb071/category/bonuses"}},p={},l=[],u={toc:l},s="wrapper";function f(e){let{components:t,...r}=e;return(0,o.kt)(s,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}))}f.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[1731],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>b});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var p=n.createContext({}),l=function(e){var t=n.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=l(e.components);return n.createElement(p.Provider,{value:t},e.children)},s="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,p=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),s=l(r),d=o,b=s["".concat(p,".").concat(d)]||s[d]||f[d]||a;return r?n.createElement(b,i(i({ref:t},u),{},{components:r})):n.createElement(b,i({ref:t},u))}));function b(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=d;var c={};for(var p in t)hasOwnProperty.call(t,p)&&(c[p]=t[p]);c.originalType=e,c[s]="string"==typeof e?e:o,i[1]=c;for(var l=2;l{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>f,frontMatter:()=>a,metadata:()=>c,toc:()=>l});var n=r(7462),o=(r(7294),r(3905));const a={id:"pb071-intro",title:"Introduction",slug:"/"},i=void 0,c={unversionedId:"pb071-intro",id:"pb071-intro",title:"Introduction",description:"",source:"@site/pb071/00-intro-pb071.md",sourceDirName:".",slug:"/",permalink:"/pb071/",draft:!1,editUrl:"https://gitlab.com/mfocko/blog/tree/main/pb071/00-intro-pb071.md",tags:[],version:"current",lastUpdatedAt:1694109587,formattedLastUpdatedAt:"Sep 7, 2023",sidebarPosition:0,frontMatter:{id:"pb071-intro",title:"Introduction",slug:"/"},sidebar:"autogeneratedBar",next:{title:"Bonuses",permalink:"/pb071/category/bonuses"}},p={},l=[],u={toc:l},s="wrapper";function f(e){let{components:t,...r}=e;return(0,o.kt)(s,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4ee12fa2.74d68d7b.js b/assets/js/4ee12fa2.bd3f9667.js similarity index 97% rename from assets/js/4ee12fa2.74d68d7b.js rename to assets/js/4ee12fa2.bd3f9667.js index f0db623..89da5d6 100644 --- a/assets/js/4ee12fa2.74d68d7b.js +++ b/assets/js/4ee12fa2.bd3f9667.js @@ -1 +1 @@ -"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[7963],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>m});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var p=n.createContext({}),l=function(e){var t=n.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},u=function(e){var t=l(e.components);return n.createElement(p.Provider,{value:t},e.children)},s="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,i=e.originalType,p=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),s=l(r),d=o,m=s["".concat(p,".").concat(d)]||s[d]||f[d]||i;return r?n.createElement(m,a(a({ref:t},u),{},{components:r})):n.createElement(m,a({ref:t},u))}));function m(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=r.length,a=new Array(i);a[0]=d;var c={};for(var p in t)hasOwnProperty.call(t,p)&&(c[p]=t[p]);c.originalType=e,c[s]="string"==typeof e?e:o,a[1]=c;for(var l=2;l{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>a,default:()=>f,frontMatter:()=>i,metadata:()=>c,toc:()=>l});var n=r(7462),o=(r(7294),r(3905));const i={id:"pb161-intro",title:"Introduction",slug:"/"},a=void 0,c={unversionedId:"pb161-intro",id:"pb161-intro",title:"Introduction",description:"",source:"@site/pb161/00-intro-pb161.md",sourceDirName:".",slug:"/",permalink:"/pb161/",draft:!1,editUrl:"https://gitlab.com/mfocko/blog/tree/main/pb161/00-intro-pb161.md",tags:[],version:"current",lastUpdatedAt:1694108971,formattedLastUpdatedAt:"Sep 7, 2023",sidebarPosition:0,frontMatter:{id:"pb161-intro",title:"Introduction",slug:"/"},sidebar:"autogeneratedBar",next:{title:"Environment",permalink:"/pb161/environment"}},p={},l=[],u={toc:l},s="wrapper";function f(e){let{components:t,...r}=e;return(0,o.kt)(s,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}))}f.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[7963],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>m});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var p=n.createContext({}),l=function(e){var t=n.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},u=function(e){var t=l(e.components);return n.createElement(p.Provider,{value:t},e.children)},s="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,i=e.originalType,p=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),s=l(r),d=o,m=s["".concat(p,".").concat(d)]||s[d]||f[d]||i;return r?n.createElement(m,a(a({ref:t},u),{},{components:r})):n.createElement(m,a({ref:t},u))}));function m(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=r.length,a=new Array(i);a[0]=d;var c={};for(var p in t)hasOwnProperty.call(t,p)&&(c[p]=t[p]);c.originalType=e,c[s]="string"==typeof e?e:o,a[1]=c;for(var l=2;l{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>a,default:()=>f,frontMatter:()=>i,metadata:()=>c,toc:()=>l});var n=r(7462),o=(r(7294),r(3905));const i={id:"pb161-intro",title:"Introduction",slug:"/"},a=void 0,c={unversionedId:"pb161-intro",id:"pb161-intro",title:"Introduction",description:"",source:"@site/pb161/00-intro-pb161.md",sourceDirName:".",slug:"/",permalink:"/pb161/",draft:!1,editUrl:"https://gitlab.com/mfocko/blog/tree/main/pb161/00-intro-pb161.md",tags:[],version:"current",lastUpdatedAt:1694109587,formattedLastUpdatedAt:"Sep 7, 2023",sidebarPosition:0,frontMatter:{id:"pb161-intro",title:"Introduction",slug:"/"},sidebar:"autogeneratedBar",next:{title:"Environment",permalink:"/pb161/environment"}},p={},l=[],u={toc:l},s="wrapper";function f(e){let{components:t,...r}=e;return(0,o.kt)(s,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/7cf94373.f790d5a8.js b/assets/js/7cf94373.f6d9052f.js similarity index 99% rename from assets/js/7cf94373.f790d5a8.js rename to assets/js/7cf94373.f6d9052f.js index 8d919bc..d7bb761 100644 --- a/assets/js/7cf94373.f790d5a8.js +++ b/assets/js/7cf94373.f6d9052f.js @@ -1 +1 @@ -"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[3095],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>k});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),p=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u=function(e){var t=p(e.components);return a.createElement(l.Provider,{value:t},e.children)},m="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),m=p(n),d=r,k=m["".concat(l,".").concat(d)]||m[d]||c[d]||i;return n?a.createElement(k,o(o({ref:t},u),{},{components:n})):a.createElement(k,o({ref:t},u))}));function k(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=d;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[m]="string"==typeof e?e:r,o[1]=s;for(var p=2;p{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>c,frontMatter:()=>i,metadata:()=>s,toc:()=>p});var a=n(7462),r=(n(7294),n(3905));const i={id:"seminar-10",title:"10th seminar",description:"Finding bugs in a hangman.\n"},o=void 0,s={unversionedId:"bonuses/seminar-10",id:"bonuses/seminar-10",title:"10th seminar",description:"Finding bugs in a hangman.\n",source:"@site/pb071/bonuses/10.md",sourceDirName:"bonuses",slug:"/bonuses/seminar-10",permalink:"/pb071/bonuses/seminar-10",draft:!1,editUrl:"https://gitlab.com/mfocko/blog/tree/main/pb071/bonuses/10.md",tags:[],version:"current",lastUpdatedAt:1694108971,formattedLastUpdatedAt:"Sep 7, 2023",frontMatter:{id:"seminar-10",title:"10th seminar",description:"Finding bugs in a hangman.\n"},sidebar:"autogeneratedBar",previous:{title:"8th seminar",permalink:"/pb071/bonuses/seminar-08"},next:{title:"Practice Exams",permalink:"/pb071/category/practice-exams"}},l={},p=[{value:"Introduction",id:"introduction",level:2},{value:"Project",id:"project",level:2},{value:"Summary of the gameplay",id:"summary-of-the-gameplay",level:3},{value:"Suggested workflow",id:"suggested-workflow",level:2},{value:"Tasks",id:"tasks",level:2},{value:"Dictionary",id:"dictionary",level:2},{value:"Submitting",id:"submitting",level:2}],u={toc:p},m="wrapper";function c(e){let{components:t,...i}=e;return(0,r.kt)(m,(0,a.Z)({},u,i,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"pathname:///files/pb071/bonuses/10.tar.gz"},"Source")),(0,r.kt)("h2",{id:"introduction"},"Introduction"),(0,r.kt)("p",null,"For this bonus you are given almost finished project - The Hangman Game. Your\ntask is to try the game, in case you find any bugs point them out and cover as\nmuch of the game as possible with tests."),(0,r.kt)("p",null,"For this bonus you can get at maximum 2 K\u20a1."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Item"),(0,r.kt)("th",{parentName:"tr",align:null},"Bonus"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Fixing bugs from failing tests"),(0,r.kt)("td",{parentName:"tr",align:null},"0.25")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"word_guessed")),(0,r.kt)("td",{parentName:"tr",align:null},"0.50")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Hidden bug"),(0,r.kt)("td",{parentName:"tr",align:null},"0.50")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Extending tests, undetectable bugs or evil bug"),(0,r.kt)("td",{parentName:"tr",align:null},"0.37")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Refactor"),(0,r.kt)("td",{parentName:"tr",align:null},"0.38")))),(0,r.kt)("h2",{id:"project"},"Project"),(0,r.kt)("p",null,"Project consists of 2 source files - ",(0,r.kt)("inlineCode",{parentName:"p"},"hangman.c")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"main.c"),"."),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"main.c")," is quite short and concise, there is nothing for you to do."),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"hangman.c")," contains implementation of the game. In case you feel lost, consult\nthe documentation in ",(0,r.kt)("inlineCode",{parentName:"p"},"hangman.h")," that represents an interface that can be used\nfor implementing the game."),(0,r.kt)("p",null,"Apart from those sources this project is a bit more complicated. ",(0,r.kt)("em",{parentName:"p"},"Game loop")," is\nrealised via single encapsulated function that complicates the testing. Because\nof that, there are 2 kinds of tests:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("em",{parentName:"p"},"Unit tests")," - that are present in ",(0,r.kt)("inlineCode",{parentName:"p"},"test_hangman.c")," and can be run via:"),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre"},"$ make check-unit\n")),(0,r.kt)("p",{parentName:"li"},"They cover majorly functions that can be tested easily via testing framework.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("em",{parentName:"p"},"Functional tests")," - same as in ",(0,r.kt)("inlineCode",{parentName:"p"},"seminar-08")," and are focused on testing the\nprogram as whole. Basic smoke test is already included in ",(0,r.kt)("inlineCode",{parentName:"p"},"usage")," test case."),(0,r.kt)("p",{parentName:"li"},"They can be run via:"),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre"},"$ make check-functional\n")),(0,r.kt)("p",{parentName:"li"},"When testing ",(0,r.kt)("inlineCode",{parentName:"p"},"hangman")," function (the game loop), it is suggested to create\nfunctional tests."),(0,r.kt)("p",{parentName:"li"},"When submitting the files for review, please leave out functional tests that\nwere given as a part of the assignment, so that it is easier to navigate, I\nwill drag the common files myself. :)"))),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"Whole test suite can be run via:"),(0,r.kt)("pre",{parentName:"blockquote"},(0,r.kt)("code",{parentName:"pre"},"$ make check\n"))),(0,r.kt)("h3",{id:"summary-of-the-gameplay"},"Summary of the gameplay"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Secret word gets chosen from the file that's path is given as an argument."),(0,r.kt)("li",{parentName:"ol"},"You get 8 guesses."),(0,r.kt)("li",{parentName:"ol"},"Invalid characters don't count."),(0,r.kt)("li",{parentName:"ol"},"Already guessed characters don't count, even if not included in the secret."),(0,r.kt)("li",{parentName:"ol"},"You can guess the whole word at once",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"If you get it right, you won, game ends."),(0,r.kt)("li",{parentName:"ul"},"If you don't get it right, you get to see the secret, game ends."))),(0,r.kt)("li",{parentName:"ol"},"In case of end of input, game finishes via force."),(0,r.kt)("li",{parentName:"ol"},"In case of invalid input, no guesses are subtracted, game carries on."),(0,r.kt)("li",{parentName:"ol"},"Letters and words are not case sensitive.")),(0,r.kt)("h2",{id:"suggested-workflow"},"Suggested workflow"),(0,r.kt)("p",null,"As we have talked about on the seminar, I suggest you to follow\n",(0,r.kt)("em",{parentName:"p"},"Test-Driven Development"),"\nin this case."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"TDD workflow",src:n(1530).Z,width:"2814",height:"1652"})),(0,r.kt)("p",null,"In our current scenario we are already in the stage of refactoring and fixing the\nbugs. Therefore try to follow this succession of steps:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Try to reproduce the bug."),(0,r.kt)("li",{parentName:"ol"},"Create a test that proves the presence of the bug."),(0,r.kt)("li",{parentName:"ol"},"Fix the bug.")),(0,r.kt)("p",null,"In case you are submitting the bonus via GitLab, it is helpful to commit tests\nbefore commiting the fixes, so that it is apparent that the bug is manifested.\nExample of ",(0,r.kt)("inlineCode",{parentName:"p"},"git log")," (notice that the first line represents latest commit):"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"feat: Implement fizz_buzzer\ntest: Add tests for fizz_buzzer\nfix: Fix NULL-check in print_name\ntest: Add test for NULL in print_name\n")),(0,r.kt)("h2",{id:"tasks"},"Tasks"),(0,r.kt)("p",null,"As to your tasks, there are multiple things wrong in this project."),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},'There are 2 "bugs" that cannot be detected via tests, i.e. they are not bugs\nthat affect functionality of the game.')),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"There is one evil bug in ",(0,r.kt)("inlineCode",{parentName:"p"},"get_word"),". It is not required to be fixed ;) Assign\nit the lowest priority.")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"There are some tests failing. Please try to figure it out, so you have green\ntests for the rest :)")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"We have gotten a bug report for ",(0,r.kt)("inlineCode",{parentName:"p"},"word_guessed"),", all we got is"),(0,r.kt)("blockquote",{parentName:"li"},(0,r.kt)("p",{parentName:"blockquote"},"doesn't work when there are too many ",(0,r.kt)("inlineCode",{parentName:"p"},"a"),"s")),(0,r.kt)("p",{parentName:"li"},"Please try to replicate the bug and create a tests, so we don't get any\nregression later on.")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"One hidden bug :) Closely non-specified, we cannot reproduce it and we were\ndrunk while playing the game, so we don't remember a thing. :/")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"Try to cover as much code via the tests as possible. We are not going to look\nat the metrics, but DRY is violated a lot, so as a last task try to remove as\nmuch of the duplicit code as possible."),(0,r.kt)("p",{parentName:"li"},"Tests should help you a lot in case there are some regressions."))),(0,r.kt)("hr",null),(0,r.kt)("p",null,"In case you wonder why there are always 3 same words in the file with words, it\nis because of the ",(0,r.kt)("inlineCode",{parentName:"p"},"get_word")," bug. It is not a bug that can be easily fixed, so\nit is a not requirement at all and you can still get all points for the bonus ;)"),(0,r.kt)("h2",{id:"dictionary"},"Dictionary"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://en.wikipedia.org/wiki/Functional_testing"},"Functional tests")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://en.wikipedia.org/wiki/Smoke_testing_%28software%29"},"Smoke test")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://en.wikipedia.org/wiki/Don%27t_repeat_yourself"},"DRY"))),(0,r.kt)("h2",{id:"submitting"},"Submitting"),(0,r.kt)("p",null,"In case you have any questions, feel free to reach out to me."),(0,r.kt)("hr",null),(0,r.kt)("p",null,"Ideally submit the assignment through the merge request. Step-by-step tutorial\nis present ",(0,r.kt)("a",{parentName:"p",href:"../mr"},"here"),". For setting assignee my xlogin is ",(0,r.kt)("inlineCode",{parentName:"p"},"xfocko"),"."),(0,r.kt)("p",null,"In case you do not want to experiment on GitLab, send me the source code via\nemail, but please prefix subject with: ",(0,r.kt)("inlineCode",{parentName:"p"},"[PB071/14][seminar-10]")),(0,r.kt)("p",null,"Deadline for the submission of the bonus is ",(0,r.kt)("strong",{parentName:"p"},"May 17 24:00"),"."))}c.isMDXComponent=!0},1530:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/tdd_lifecycle-327ad9ee0ed8318ed11e19a28e02b2cc.png"}}]); \ No newline at end of file +"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[3095],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>k});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),p=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u=function(e){var t=p(e.components);return a.createElement(l.Provider,{value:t},e.children)},m="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),m=p(n),d=r,k=m["".concat(l,".").concat(d)]||m[d]||c[d]||i;return n?a.createElement(k,o(o({ref:t},u),{},{components:n})):a.createElement(k,o({ref:t},u))}));function k(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=d;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[m]="string"==typeof e?e:r,o[1]=s;for(var p=2;p{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>c,frontMatter:()=>i,metadata:()=>s,toc:()=>p});var a=n(7462),r=(n(7294),n(3905));const i={id:"seminar-10",title:"10th seminar",description:"Finding bugs in a hangman.\n"},o=void 0,s={unversionedId:"bonuses/seminar-10",id:"bonuses/seminar-10",title:"10th seminar",description:"Finding bugs in a hangman.\n",source:"@site/pb071/bonuses/10.md",sourceDirName:"bonuses",slug:"/bonuses/seminar-10",permalink:"/pb071/bonuses/seminar-10",draft:!1,editUrl:"https://gitlab.com/mfocko/blog/tree/main/pb071/bonuses/10.md",tags:[],version:"current",lastUpdatedAt:1694109587,formattedLastUpdatedAt:"Sep 7, 2023",frontMatter:{id:"seminar-10",title:"10th seminar",description:"Finding bugs in a hangman.\n"},sidebar:"autogeneratedBar",previous:{title:"8th seminar",permalink:"/pb071/bonuses/seminar-08"},next:{title:"Practice Exams",permalink:"/pb071/category/practice-exams"}},l={},p=[{value:"Introduction",id:"introduction",level:2},{value:"Project",id:"project",level:2},{value:"Summary of the gameplay",id:"summary-of-the-gameplay",level:3},{value:"Suggested workflow",id:"suggested-workflow",level:2},{value:"Tasks",id:"tasks",level:2},{value:"Dictionary",id:"dictionary",level:2},{value:"Submitting",id:"submitting",level:2}],u={toc:p},m="wrapper";function c(e){let{components:t,...i}=e;return(0,r.kt)(m,(0,a.Z)({},u,i,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"pathname:///files/pb071/bonuses/10.tar.gz"},"Source")),(0,r.kt)("h2",{id:"introduction"},"Introduction"),(0,r.kt)("p",null,"For this bonus you are given almost finished project - The Hangman Game. Your\ntask is to try the game, in case you find any bugs point them out and cover as\nmuch of the game as possible with tests."),(0,r.kt)("p",null,"For this bonus you can get at maximum 2 K\u20a1."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Item"),(0,r.kt)("th",{parentName:"tr",align:null},"Bonus"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Fixing bugs from failing tests"),(0,r.kt)("td",{parentName:"tr",align:null},"0.25")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"word_guessed")),(0,r.kt)("td",{parentName:"tr",align:null},"0.50")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Hidden bug"),(0,r.kt)("td",{parentName:"tr",align:null},"0.50")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Extending tests, undetectable bugs or evil bug"),(0,r.kt)("td",{parentName:"tr",align:null},"0.37")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Refactor"),(0,r.kt)("td",{parentName:"tr",align:null},"0.38")))),(0,r.kt)("h2",{id:"project"},"Project"),(0,r.kt)("p",null,"Project consists of 2 source files - ",(0,r.kt)("inlineCode",{parentName:"p"},"hangman.c")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"main.c"),"."),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"main.c")," is quite short and concise, there is nothing for you to do."),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"hangman.c")," contains implementation of the game. In case you feel lost, consult\nthe documentation in ",(0,r.kt)("inlineCode",{parentName:"p"},"hangman.h")," that represents an interface that can be used\nfor implementing the game."),(0,r.kt)("p",null,"Apart from those sources this project is a bit more complicated. ",(0,r.kt)("em",{parentName:"p"},"Game loop")," is\nrealised via single encapsulated function that complicates the testing. Because\nof that, there are 2 kinds of tests:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("em",{parentName:"p"},"Unit tests")," - that are present in ",(0,r.kt)("inlineCode",{parentName:"p"},"test_hangman.c")," and can be run via:"),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre"},"$ make check-unit\n")),(0,r.kt)("p",{parentName:"li"},"They cover majorly functions that can be tested easily via testing framework.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("em",{parentName:"p"},"Functional tests")," - same as in ",(0,r.kt)("inlineCode",{parentName:"p"},"seminar-08")," and are focused on testing the\nprogram as whole. Basic smoke test is already included in ",(0,r.kt)("inlineCode",{parentName:"p"},"usage")," test case."),(0,r.kt)("p",{parentName:"li"},"They can be run via:"),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre"},"$ make check-functional\n")),(0,r.kt)("p",{parentName:"li"},"When testing ",(0,r.kt)("inlineCode",{parentName:"p"},"hangman")," function (the game loop), it is suggested to create\nfunctional tests."),(0,r.kt)("p",{parentName:"li"},"When submitting the files for review, please leave out functional tests that\nwere given as a part of the assignment, so that it is easier to navigate, I\nwill drag the common files myself. :)"))),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"Whole test suite can be run via:"),(0,r.kt)("pre",{parentName:"blockquote"},(0,r.kt)("code",{parentName:"pre"},"$ make check\n"))),(0,r.kt)("h3",{id:"summary-of-the-gameplay"},"Summary of the gameplay"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Secret word gets chosen from the file that's path is given as an argument."),(0,r.kt)("li",{parentName:"ol"},"You get 8 guesses."),(0,r.kt)("li",{parentName:"ol"},"Invalid characters don't count."),(0,r.kt)("li",{parentName:"ol"},"Already guessed characters don't count, even if not included in the secret."),(0,r.kt)("li",{parentName:"ol"},"You can guess the whole word at once",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"If you get it right, you won, game ends."),(0,r.kt)("li",{parentName:"ul"},"If you don't get it right, you get to see the secret, game ends."))),(0,r.kt)("li",{parentName:"ol"},"In case of end of input, game finishes via force."),(0,r.kt)("li",{parentName:"ol"},"In case of invalid input, no guesses are subtracted, game carries on."),(0,r.kt)("li",{parentName:"ol"},"Letters and words are not case sensitive.")),(0,r.kt)("h2",{id:"suggested-workflow"},"Suggested workflow"),(0,r.kt)("p",null,"As we have talked about on the seminar, I suggest you to follow\n",(0,r.kt)("em",{parentName:"p"},"Test-Driven Development"),"\nin this case."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"TDD workflow",src:n(1530).Z,width:"2814",height:"1652"})),(0,r.kt)("p",null,"In our current scenario we are already in the stage of refactoring and fixing the\nbugs. Therefore try to follow this succession of steps:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Try to reproduce the bug."),(0,r.kt)("li",{parentName:"ol"},"Create a test that proves the presence of the bug."),(0,r.kt)("li",{parentName:"ol"},"Fix the bug.")),(0,r.kt)("p",null,"In case you are submitting the bonus via GitLab, it is helpful to commit tests\nbefore commiting the fixes, so that it is apparent that the bug is manifested.\nExample of ",(0,r.kt)("inlineCode",{parentName:"p"},"git log")," (notice that the first line represents latest commit):"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"feat: Implement fizz_buzzer\ntest: Add tests for fizz_buzzer\nfix: Fix NULL-check in print_name\ntest: Add test for NULL in print_name\n")),(0,r.kt)("h2",{id:"tasks"},"Tasks"),(0,r.kt)("p",null,"As to your tasks, there are multiple things wrong in this project."),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},'There are 2 "bugs" that cannot be detected via tests, i.e. they are not bugs\nthat affect functionality of the game.')),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"There is one evil bug in ",(0,r.kt)("inlineCode",{parentName:"p"},"get_word"),". It is not required to be fixed ;) Assign\nit the lowest priority.")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"There are some tests failing. Please try to figure it out, so you have green\ntests for the rest :)")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"We have gotten a bug report for ",(0,r.kt)("inlineCode",{parentName:"p"},"word_guessed"),", all we got is"),(0,r.kt)("blockquote",{parentName:"li"},(0,r.kt)("p",{parentName:"blockquote"},"doesn't work when there are too many ",(0,r.kt)("inlineCode",{parentName:"p"},"a"),"s")),(0,r.kt)("p",{parentName:"li"},"Please try to replicate the bug and create a tests, so we don't get any\nregression later on.")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"One hidden bug :) Closely non-specified, we cannot reproduce it and we were\ndrunk while playing the game, so we don't remember a thing. :/")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"Try to cover as much code via the tests as possible. We are not going to look\nat the metrics, but DRY is violated a lot, so as a last task try to remove as\nmuch of the duplicit code as possible."),(0,r.kt)("p",{parentName:"li"},"Tests should help you a lot in case there are some regressions."))),(0,r.kt)("hr",null),(0,r.kt)("p",null,"In case you wonder why there are always 3 same words in the file with words, it\nis because of the ",(0,r.kt)("inlineCode",{parentName:"p"},"get_word")," bug. It is not a bug that can be easily fixed, so\nit is a not requirement at all and you can still get all points for the bonus ;)"),(0,r.kt)("h2",{id:"dictionary"},"Dictionary"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://en.wikipedia.org/wiki/Functional_testing"},"Functional tests")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://en.wikipedia.org/wiki/Smoke_testing_%28software%29"},"Smoke test")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://en.wikipedia.org/wiki/Don%27t_repeat_yourself"},"DRY"))),(0,r.kt)("h2",{id:"submitting"},"Submitting"),(0,r.kt)("p",null,"In case you have any questions, feel free to reach out to me."),(0,r.kt)("hr",null),(0,r.kt)("p",null,"Ideally submit the assignment through the merge request. Step-by-step tutorial\nis present ",(0,r.kt)("a",{parentName:"p",href:"../mr"},"here"),". For setting assignee my xlogin is ",(0,r.kt)("inlineCode",{parentName:"p"},"xfocko"),"."),(0,r.kt)("p",null,"In case you do not want to experiment on GitLab, send me the source code via\nemail, but please prefix subject with: ",(0,r.kt)("inlineCode",{parentName:"p"},"[PB071/14][seminar-10]")),(0,r.kt)("p",null,"Deadline for the submission of the bonus is ",(0,r.kt)("strong",{parentName:"p"},"May 17 24:00"),"."))}c.isMDXComponent=!0},1530:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/tdd_lifecycle-327ad9ee0ed8318ed11e19a28e02b2cc.png"}}]); \ No newline at end of file diff --git a/assets/js/7d580cdb.71718a61.js b/assets/js/7d580cdb.bd936269.js similarity index 99% rename from assets/js/7d580cdb.71718a61.js rename to assets/js/7d580cdb.bd936269.js index 1a660e5..5bd03bc 100644 --- a/assets/js/7d580cdb.71718a61.js +++ b/assets/js/7d580cdb.bd936269.js @@ -1 +1 @@ -"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[8442],{3905:(a,e,t)=>{t.d(e,{Zo:()=>o,kt:()=>h});var n=t(7294);function s(a,e,t){return e in a?Object.defineProperty(a,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):a[e]=t,a}function m(a,e){var t=Object.keys(a);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(a);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(a,e).enumerable}))),t.push.apply(t,n)}return t}function p(a){for(var e=1;e=0||(s[t]=a[t]);return s}(a,e);if(Object.getOwnPropertySymbols){var m=Object.getOwnPropertySymbols(a);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(a,t)&&(s[t]=a[t])}return s}var l=n.createContext({}),i=function(a){var e=n.useContext(l),t=e;return a&&(t="function"==typeof a?a(e):p(p({},e),a)),t},o=function(a){var e=i(a.components);return n.createElement(l.Provider,{value:e},a.children)},N="mdxType",c={inlineCode:"code",wrapper:function(a){var e=a.children;return n.createElement(n.Fragment,{},e)}},k=n.forwardRef((function(a,e){var t=a.components,s=a.mdxType,m=a.originalType,l=a.parentName,o=r(a,["components","mdxType","originalType","parentName"]),N=i(t),k=s,h=N["".concat(l,".").concat(k)]||N[k]||c[k]||m;return t?n.createElement(h,p(p({ref:e},o),{},{components:t})):n.createElement(h,p({ref:e},o))}));function h(a,e){var t=arguments,s=e&&e.mdxType;if("string"==typeof a||s){var m=t.length,p=new Array(m);p[0]=k;var r={};for(var l in e)hasOwnProperty.call(e,l)&&(r[l]=e[l]);r.originalType=a,r[N]="string"==typeof a?a:s,p[1]=r;for(var i=2;i{t.r(e),t.d(e,{assets:()=>l,contentTitle:()=>p,default:()=>c,frontMatter:()=>m,metadata:()=>r,toc:()=>i});var n=t(7462),s=(t(7294),t(3905));const m={id:"pyramid-slide-down",title:"Introduction to dynamic programming",description:"Solving a problem in different ways.\n",tags:["java","recursion","exponential","greedy","dynamic-programming","top-down-dp","bottom-up-dp"],last_updated:{date:new Date("2023-08-17T00:00:00.000Z")}},p=void 0,r={unversionedId:"recursion/pyramid-slide-down",id:"recursion/pyramid-slide-down",title:"Introduction to dynamic programming",description:"Solving a problem in different ways.\n",source:"@site/ib002/04-recursion/2023-08-17-pyramid-slide-down.md",sourceDirName:"04-recursion",slug:"/recursion/pyramid-slide-down",permalink:"/ib002/recursion/pyramid-slide-down",draft:!1,editUrl:"https://gitlab.com/mfocko/blog/tree/main/ib002/04-recursion/2023-08-17-pyramid-slide-down.md",tags:[{label:"java",permalink:"/ib002/tags/java"},{label:"recursion",permalink:"/ib002/tags/recursion"},{label:"exponential",permalink:"/ib002/tags/exponential"},{label:"greedy",permalink:"/ib002/tags/greedy"},{label:"dynamic-programming",permalink:"/ib002/tags/dynamic-programming"},{label:"top-down-dp",permalink:"/ib002/tags/top-down-dp"},{label:"bottom-up-dp",permalink:"/ib002/tags/bottom-up-dp"}],version:"current",lastUpdatedAt:1694108971,formattedLastUpdatedAt:"Sep 7, 2023",frontMatter:{id:"pyramid-slide-down",title:"Introduction to dynamic programming",description:"Solving a problem in different ways.\n",tags:["java","recursion","exponential","greedy","dynamic-programming","top-down-dp","bottom-up-dp"],last_updated:{date:"2023-08-17T00:00:00.000Z"}},sidebar:"autogeneratedBar",previous:{title:"Recursion and backtracking with Robot Karel",permalink:"/ib002/recursion/karel-1"},next:{title:"Red-Black Trees",permalink:"/ib002/category/red-black-trees"}},l={},i=[{value:"Problem",id:"problem",level:2},{value:"Solving the problem",id:"solving-the-problem",level:2},{value:"Na\xefve solution",id:"na\xefve-solution",level:2},{value:"Time complexity",id:"time-complexity",level:3},{value:"Greedy solution",id:"greedy-solution",level:2},{value:"Time complexity",id:"time-complexity-1",level:3},{value:"Running the tests",id:"running-the-tests",level:3},{value:"Top-down DP",id:"top-down-dp",level:2},{value:"Time complexity",id:"time-complexity-2",level:3},{value:"Memory complexity",id:"memory-complexity",level:3},{value:"Bottom-up DP",id:"bottom-up-dp",level:2},{value:"Time complexity",id:"time-complexity-3",level:3},{value:"Memory complexity",id:"memory-complexity-1",level:3},{value:"Summary",id:"summary",level:2}],o={toc:i},N="wrapper";function c(a){let{components:e,...t}=a;return(0,s.kt)(N,(0,n.Z)({},o,t,{components:e,mdxType:"MDXLayout"}),(0,s.kt)("p",null,"In this post we will try to solve one problem in different ways."),(0,s.kt)("h2",{id:"problem"},"Problem"),(0,s.kt)("p",null,"The problem we are going to solve is one of ",(0,s.kt)("em",{parentName:"p"},"CodeWars")," katas and is called\n",(0,s.kt)("a",{parentName:"p",href:"https://www.codewars.com/kata/551f23362ff852e2ab000037"},"Pyramid Slide Down"),"."),(0,s.kt)("p",null,"We are given a 2D array of integers and we are to find the ",(0,s.kt)("em",{parentName:"p"},"slide down"),".\n",(0,s.kt)("em",{parentName:"p"},"Slide down")," is a maximum sum of consecutive numbers from the top to the bottom."),(0,s.kt)("p",null,"Let's have a look at few examples. Consider the following pyramid:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"}," 3\n 7 4\n 2 4 6\n8 5 9 3\n")),(0,s.kt)("p",null,"This pyramid has following slide down:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"}," *3\n *7 4\n 2 *4 6\n8 5 *9 3\n")),(0,s.kt)("p",null,"And its value is ",(0,s.kt)("inlineCode",{parentName:"p"},"23"),"."),(0,s.kt)("p",null,"We can also have a look at a ",(0,s.kt)("em",{parentName:"p"},"bigger")," example:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"}," 75\n 95 64\n 17 47 82\n 18 35 87 10\n 20 4 82 47 65\n 19 1 23 3 34\n 88 2 77 73 7 63 67\n 99 65 4 28 6 16 70 92\n 41 41 26 56 83 40 80 70 33\n 41 48 72 33 47 32 37 16 94 29\n 53 71 44 65 25 43 91 52 97 51 14\n 70 11 33 28 77 73 17 78 39 68 17 57\n 91 71 52 38 17 14 91 43 58 50 27 29 48\n 63 66 4 68 89 53 67 30 73 16 69 87 40 31\n 4 62 98 27 23 9 70 98 73 93 38 53 60 4 23\n")),(0,s.kt)("p",null,"Slide down in this case is equal to ",(0,s.kt)("inlineCode",{parentName:"p"},"1074"),"."),(0,s.kt)("h2",{id:"solving-the-problem"},"Solving the problem"),(0,s.kt)("admonition",{type:"caution"},(0,s.kt)("p",{parentName:"admonition"},"I will describe the following ways you can approach this problem and implement\nthem in ",(0,s.kt)("em",{parentName:"p"},"Java"),(0,s.kt)("sup",{parentName:"p",id:"fnref-1"},(0,s.kt)("a",{parentName:"sup",href:"#fn-1",className:"footnote-ref"},"1")),".")),(0,s.kt)("p",null,"For all of the following solutions I will be using basic ",(0,s.kt)("inlineCode",{parentName:"p"},"main")," function that\nwill output ",(0,s.kt)("inlineCode",{parentName:"p"},"true"),"/",(0,s.kt)("inlineCode",{parentName:"p"},"false")," based on the expected output of our algorithm. Any\nother differences will lie only in the solutions of the problem. You can see the\n",(0,s.kt)("inlineCode",{parentName:"p"},"main")," here:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-java"},'public static void main(String[] args) {\n System.out.print("Test #1: ");\n System.out.println(longestSlideDown(new int[][] {\n { 3 },\n { 7, 4 },\n { 2, 4, 6 },\n { 8, 5, 9, 3 }\n }) == 23 ? "passed" : "failed");\n\n System.out.print("Test #2: ");\n System.out.println(longestSlideDown(new int[][] {\n { 75 },\n { 95, 64 },\n { 17, 47, 82 },\n { 18, 35, 87, 10 },\n { 20, 4, 82, 47, 65 },\n { 19, 1, 23, 75, 3, 34 },\n { 88, 2, 77, 73, 7, 63, 67 },\n { 99, 65, 4, 28, 6, 16, 70, 92 },\n { 41, 41, 26, 56, 83, 40, 80, 70, 33 },\n { 41, 48, 72, 33, 47, 32, 37, 16, 94, 29 },\n { 53, 71, 44, 65, 25, 43, 91, 52, 97, 51, 14 },\n { 70, 11, 33, 28, 77, 73, 17, 78, 39, 68, 17, 57 },\n { 91, 71, 52, 38, 17, 14, 91, 43, 58, 50, 27, 29, 48 },\n { 63, 66, 4, 68, 89, 53, 67, 30, 73, 16, 69, 87, 40, 31 },\n { 4, 62, 98, 27, 23, 9, 70, 98, 73, 93, 38, 53, 60, 4, 23 },\n }) == 1074 ? "passed" : "failed");\n}\n')),(0,s.kt)("h2",{id:"na\xefve-solution"},"Na\xefve solution"),(0,s.kt)("p",null,"Our na\xefve solution consists of trying out all the possible slides and finding\nthe one with maximum sum."),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-java"},"public static int longestSlideDown(int[][] pyramid, int row, int col) {\n if (row >= pyramid.length || col < 0 || col >= pyramid[row].length) {\n // BASE: We have gotten out of bounds, there's no reasonable value to\n // return, so we just return the \u2039MIN_VALUE\u203a to ensure that it cannot\n // be maximum.\n return Integer.MIN_VALUE;\n }\n\n if (row == pyramid.length - 1) {\n // BASE: Bottom of the pyramid, we just return the value, there's\n // nowhere to slide anymore.\n return pyramid[row][col];\n }\n\n // Otherwise we account for the current position and return maximum of the\n // available \u201cslides\u201d.\n return pyramid[row][col] + Math.max(\n longestSlideDown(pyramid, row + 1, col),\n longestSlideDown(pyramid, row + 1, col + 1));\n}\n\npublic static int longestSlideDown(int[][] pyramid) {\n // We start the slide in the top cell of the pyramid.\n return longestSlideDown(pyramid, 0, 0);\n}\n")),(0,s.kt)("p",null,"As you can see, we have 2 overloads:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-java"},"int longestSlideDown(int[][] pyramid);\nint longestSlideDown(int[][] pyramid, int row, int col);\n")),(0,s.kt)("p",null,"First one is used as a ",(0,s.kt)("em",{parentName:"p"},"public interface")," to the solution, you just pass in the\npyramid itself. Second one is the recursive \u201calgorithm\u201d that finds the slide\ndown."),(0,s.kt)("p",null,"It is a relatively simple solution\u2026 There's nothing to do at the bottom of the\npyramid, so we just return the value in the ",(0,s.kt)("em",{parentName:"p"},"cell"),". Otherwise we add it and try\nto slide down the available cells below the current row."),(0,s.kt)("h3",{id:"time-complexity"},"Time complexity"),(0,s.kt)("p",null,"If you get the source code and run it yourself, it runs rather fine\u2026 I hope you\nare wondering about the time complexity of the proposed solution and, since it\nreally is a na\xefve solution, the time complexity is pretty bad. Let's find the\nworst case scenario."),(0,s.kt)("p",null,"Let's start with the first overload:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-java"},"public static int longestSlideDown(int[][] pyramid) {\n return longestSlideDown(pyramid, 0, 0);\n}\n")),(0,s.kt)("p",null,"There's not much to do here, so we can safely say that the time complexity of\nthis function is bounded by ",(0,s.kt)("span",{parentName:"p",className:"math math-inline"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mi",{parentName:"mrow"},"T"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"("),(0,s.kt)("mi",{parentName:"mrow"},"n"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},")")),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"T(n)")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.13889em"}},"T"),(0,s.kt)("span",{parentName:"span",className:"mopen"},"("),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n"),(0,s.kt)("span",{parentName:"span",className:"mclose"},")"))))),", where ",(0,s.kt)("span",{parentName:"p",className:"math math-inline"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mi",{parentName:"mrow"},"T")),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"T")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"0.6833em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.13889em"}},"T")))))," is our second overload. This\ndoesn't tell us anything, so let's move on to the second overload where we are\ngoing to define the ",(0,s.kt)("span",{parentName:"p",className:"math math-inline"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mi",{parentName:"mrow"},"T"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"("),(0,s.kt)("mi",{parentName:"mrow"},"n"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},")")),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"T(n)")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.13889em"}},"T"),(0,s.kt)("span",{parentName:"span",className:"mopen"},"("),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n"),(0,s.kt)("span",{parentName:"span",className:"mclose"},")")))))," function."),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-java"},"public static int longestSlideDown(int[][] pyramid, int row, int col) {\n if (row >= pyramid.length || col < 0 || col >= pyramid[row].length) {\n // BASE: We have gotten out of bounds, there's no reasonable value to\n // return, so we just return the \u2039MIN_VALUE\u203a to ensure that it cannot\n // be maximum.\n return Integer.MIN_VALUE;\n }\n\n if (row == pyramid.length - 1) {\n // BASE: Bottom of the pyramid, we just return the value, there's\n // nowhere to slide anymore.\n return pyramid[row][col];\n }\n\n // Otherwise we account for the current position and return maximum of the\n // available \u201cslides\u201d.\n return pyramid[row][col] + Math.max(\n longestSlideDown(pyramid, row + 1, col),\n longestSlideDown(pyramid, row + 1, col + 1));\n}\n")),(0,s.kt)("p",null,"Fun fact is that the whole \u201calgorithm\u201d consists of just 2 ",(0,s.kt)("inlineCode",{parentName:"p"},"return")," statements\nand nothing else. Let's dissect them!"),(0,s.kt)("p",null,"First ",(0,s.kt)("inlineCode",{parentName:"p"},"return")," statement is the base case, so it has a constant time complexity."),(0,s.kt)("p",null,"Second one a bit tricky. We add two numbers together, which we'll consider as\nconstant, but for the right part of the expression we take maximum from the left\nand right paths. OK\u2026 So what happens? We evaluate the ",(0,s.kt)("inlineCode",{parentName:"p"},"longestSlideDown")," while\nchoosing the under and right both. They are separate computations though, so we\nare branching from each call of ",(0,s.kt)("inlineCode",{parentName:"p"},"longestSlideDown"),", unless it's a base case."),(0,s.kt)("p",null,"What does that mean for us then? We basically get"),(0,s.kt)("div",{className:"math math-display"},(0,s.kt)("span",{parentName:"div",className:"katex-display"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mi",{parentName:"mrow"},"T"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"("),(0,s.kt)("mi",{parentName:"mrow"},"y"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},")"),(0,s.kt)("mo",{parentName:"mrow"},"="),(0,s.kt)("mrow",{parentName:"mrow"},(0,s.kt)("mo",{parentName:"mrow",fence:"true"},"{"),(0,s.kt)("mtable",{parentName:"mrow",rowspacing:"0.36em",columnalign:"left left",columnspacing:"1em"},(0,s.kt)("mtr",{parentName:"mtable"},(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"false"},(0,s.kt)("mn",{parentName:"mstyle"},"1"))),(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"false"},(0,s.kt)("mrow",{parentName:"mstyle"},(0,s.kt)("mtext",{parentName:"mrow"},",\xa0if\xa0"),(0,s.kt)("mi",{parentName:"mrow"},"y"),(0,s.kt)("mo",{parentName:"mrow"},"="),(0,s.kt)("mi",{parentName:"mrow"},"r"),(0,s.kt)("mi",{parentName:"mrow"},"o"),(0,s.kt)("mi",{parentName:"mrow"},"w"),(0,s.kt)("mi",{parentName:"mrow"},"s"))))),(0,s.kt)("mtr",{parentName:"mtable"},(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"false"},(0,s.kt)("mrow",{parentName:"mstyle"},(0,s.kt)("mn",{parentName:"mrow"},"1"),(0,s.kt)("mo",{parentName:"mrow"},"+"),(0,s.kt)("mn",{parentName:"mrow"},"2"),(0,s.kt)("mo",{parentName:"mrow"},"\u22c5"),(0,s.kt)("mi",{parentName:"mrow"},"T"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"("),(0,s.kt)("mi",{parentName:"mrow"},"y"),(0,s.kt)("mo",{parentName:"mrow"},"+"),(0,s.kt)("mn",{parentName:"mrow"},"1"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},")")))),(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"false"},(0,s.kt)("mtext",{parentName:"mstyle"},",\xa0otherwise"))))))),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"T(y) = \\begin{cases} 1 & \\text{, if } y = rows \\\\ 1 + 2 \\cdot T(y + 1) & \\text{, otherwise} \\end{cases}")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.13889em"}},"T"),(0,s.kt)("span",{parentName:"span",className:"mopen"},"("),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.03588em"}},"y"),(0,s.kt)("span",{parentName:"span",className:"mclose"},")"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}}),(0,s.kt)("span",{parentName:"span",className:"mrel"},"="),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}})),(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"3em",verticalAlign:"-1.25em"}}),(0,s.kt)("span",{parentName:"span",className:"minner"},(0,s.kt)("span",{parentName:"span",className:"mopen delimcenter",style:{top:"0em"}},(0,s.kt)("span",{parentName:"span",className:"delimsizing size4"},"{")),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mtable"},(0,s.kt)("span",{parentName:"span",className:"col-align-l"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"1.69em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-3.69em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3.008em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord"},"1"))),(0,s.kt)("span",{parentName:"span",style:{top:"-2.25em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3.008em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord"},"1"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"+"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},"2"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"\u22c5"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.13889em"}},"T"),(0,s.kt)("span",{parentName:"span",className:"mopen"},"("),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.03588em"}},"y"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"+"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},"1"),(0,s.kt)("span",{parentName:"span",className:"mclose"},")")))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"1.19em"}},(0,s.kt)("span",{parentName:"span"}))))),(0,s.kt)("span",{parentName:"span",className:"arraycolsep",style:{width:"1em"}}),(0,s.kt)("span",{parentName:"span",className:"col-align-l"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"1.69em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-3.69em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3.008em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord text"},(0,s.kt)("span",{parentName:"span",className:"mord"},",\xa0if\xa0")),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.03588em"}},"y"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}}),(0,s.kt)("span",{parentName:"span",className:"mrel"},"="),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"ro"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.02691em"}},"w"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"s"))),(0,s.kt)("span",{parentName:"span",style:{top:"-2.25em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3.008em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord text"},(0,s.kt)("span",{parentName:"span",className:"mord"},",\xa0otherwise"))))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"1.19em"}},(0,s.kt)("span",{parentName:"span"}))))))),(0,s.kt)("span",{parentName:"span",className:"mclose nulldelimiter"}))))))),(0,s.kt)("p",null,"That looks rather easy to compute, isn't it? If you sum it up, you'll get:"),(0,s.kt)("div",{className:"math math-display"},(0,s.kt)("span",{parentName:"div",className:"katex-display"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mi",{parentName:"mrow"},"T"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"("),(0,s.kt)("mi",{parentName:"mrow"},"r"),(0,s.kt)("mi",{parentName:"mrow"},"o"),(0,s.kt)("mi",{parentName:"mrow"},"w"),(0,s.kt)("mi",{parentName:"mrow"},"s"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},")"),(0,s.kt)("mo",{parentName:"mrow"},"\u2208"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"script"},"O"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"("),(0,s.kt)("msup",{parentName:"mrow"},(0,s.kt)("mn",{parentName:"msup"},"2"),(0,s.kt)("mrow",{parentName:"msup"},(0,s.kt)("mi",{parentName:"mrow"},"r"),(0,s.kt)("mi",{parentName:"mrow"},"o"),(0,s.kt)("mi",{parentName:"mrow"},"w"),(0,s.kt)("mi",{parentName:"mrow"},"s"))),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},")")),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"T(rows) \\in \\mathcal{O}(2^{rows})")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.13889em"}},"T"),(0,s.kt)("span",{parentName:"span",className:"mopen"},"("),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"ro"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.02691em"}},"w"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"s"),(0,s.kt)("span",{parentName:"span",className:"mclose"},")"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}}),(0,s.kt)("span",{parentName:"span",className:"mrel"},"\u2208"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}})),(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathcal",style:{marginRight:"0.02778em"}},"O"),(0,s.kt)("span",{parentName:"span",className:"mopen"},"("),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord"},"2"),(0,s.kt)("span",{parentName:"span",className:"msupsub"},(0,s.kt)("span",{parentName:"span",className:"vlist-t"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.7144em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-3.113em",marginRight:"0.05em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"2.7em"}}),(0,s.kt)("span",{parentName:"span",className:"sizing reset-size6 size3 mtight"},(0,s.kt)("span",{parentName:"span",className:"mord mtight"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal mtight"},"ro"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal mtight",style:{marginRight:"0.02691em"}},"w"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal mtight"},"s"))))))))),(0,s.kt)("span",{parentName:"span",className:"mclose"},")")))))),(0,s.kt)("p",null,"If you wonder why, I'll try to describe it intuitively:"),(0,s.kt)("ol",null,(0,s.kt)("li",{parentName:"ol"},"In each call to ",(0,s.kt)("inlineCode",{parentName:"li"},"longestSlideDown")," we do some work in constant time,\nregardless of being in the base case. Those are the ",(0,s.kt)("inlineCode",{parentName:"li"},"1"),"s in both cases."),(0,s.kt)("li",{parentName:"ol"},"If we are not in the base case, we move one row down ",(0,s.kt)("strong",{parentName:"li"},"twice"),". That's how we\nobtained ",(0,s.kt)("inlineCode",{parentName:"li"},"2 *")," and ",(0,s.kt)("inlineCode",{parentName:"li"},"y + 1")," in the ",(0,s.kt)("em",{parentName:"li"},"otherwise")," case."),(0,s.kt)("li",{parentName:"ol"},"We move row-by-row, so we move down ",(0,s.kt)("inlineCode",{parentName:"li"},"y"),"-times and each call splits to two\nsubtrees."),(0,s.kt)("li",{parentName:"ol"},"Overall, if we were to represent the calls as a tree, we would get a full\nbinary tree of height ",(0,s.kt)("inlineCode",{parentName:"li"},"y"),", in each node we do some work in constant time,\ntherefore we can just sum the ones.")),(0,s.kt)("admonition",{type:"warning"},(0,s.kt)("p",{parentName:"admonition"},"It would've been more complicated to get an exact result. In the equation above\nwe are assuming that the width of the pyramid is bound by the height.")),(0,s.kt)("p",null,"Hopefully we can agree that this is not the best we can do. \ud83d\ude09"),(0,s.kt)("h2",{id:"greedy-solution"},"Greedy solution"),(0,s.kt)("p",null,"We will try to optimize it a bit. Let's start with a relatively simple ",(0,s.kt)("em",{parentName:"p"},"greedy"),"\napproach."),(0,s.kt)("admonition",{title:"Greedy algorithms",type:"info"},(0,s.kt)("p",{parentName:"admonition"},(0,s.kt)("em",{parentName:"p"},"Greedy algorithms")," can be described as algorithms that decide the action on the\noptimal option at the moment.")),(0,s.kt)("p",null,"We can try to adjust the na\xefve solution. The most problematic part are the\nrecursive calls. Let's apply the greedy approach there:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-java"},"public static int longestSlideDown(int[][] pyramid, int row, int col) {\n if (row == pyramid.length - 1) {\n // BASE: We're at the bottom\n return pyramid[row][col];\n }\n\n if (col + 1 >= pyramid[row + 1].length\n || pyramid[row + 1][col] > pyramid[row + 1][col + 1]) {\n // If we cannot go right or it's not feasible, we continue to the left.\n return pyramid[row][col] + longestSlideDown(pyramid, row + 1, col);\n }\n\n // Otherwise we just move to the right.\n return pyramid[row][col] + longestSlideDown(pyramid, row + 1, col + 1);\n}\n")),(0,s.kt)("p",null,"OK, if we cannot go right ",(0,s.kt)("strong",{parentName:"p"},"or")," the right path adds smaller value to the sum,\nwe simply go left."),(0,s.kt)("h3",{id:"time-complexity-1"},"Time complexity"),(0,s.kt)("p",null,"We have switched from ",(0,s.kt)("em",{parentName:"p"},"adding the maximum")," to ",(0,s.kt)("em",{parentName:"p"},"following the \u201cbigger\u201d path"),", so\nwe improved the time complexity tremendously. We just go down the pyramid all\nthe way to the bottom. Therefore we are getting:"),(0,s.kt)("div",{className:"math math-display"},(0,s.kt)("span",{parentName:"div",className:"katex-display"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mi",{parentName:"mrow",mathvariant:"script"},"O"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"("),(0,s.kt)("mi",{parentName:"mrow"},"r"),(0,s.kt)("mi",{parentName:"mrow"},"o"),(0,s.kt)("mi",{parentName:"mrow"},"w"),(0,s.kt)("mi",{parentName:"mrow"},"s"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},")")),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"\\mathcal{O}(rows)")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathcal",style:{marginRight:"0.02778em"}},"O"),(0,s.kt)("span",{parentName:"span",className:"mopen"},"("),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"ro"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.02691em"}},"w"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"s"),(0,s.kt)("span",{parentName:"span",className:"mclose"},")")))))),(0,s.kt)("p",null,"We have managed to convert our exponential solution into a linear one."),(0,s.kt)("h3",{id:"running-the-tests"},"Running the tests"),(0,s.kt)("p",null,"However, if we run the tests, we notice that the second test failed:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"},"Test #1: passed\nTest #2: failed\n")),(0,s.kt)("p",null,"What's going on? Well, we have improved the time complexity, but greedy\nalgorithms are not the ideal solution to ",(0,s.kt)("strong",{parentName:"p"},"all")," problems. In this case there\nmay be a solution that is bigger than the one found using the greedy algorithm."),(0,s.kt)("p",null,"Imagine the following pyramid:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"}," 1\n 2 3\n 5 6 7\n 8 9 10 11\n99 13 14 15 16\n")),(0,s.kt)("p",null,"We start at the top:"),(0,s.kt)("ol",null,(0,s.kt)("li",{parentName:"ol"},"Current cell: ",(0,s.kt)("inlineCode",{parentName:"li"},"1"),", we can choose from ",(0,s.kt)("inlineCode",{parentName:"li"},"2")," and ",(0,s.kt)("inlineCode",{parentName:"li"},"3"),", ",(0,s.kt)("inlineCode",{parentName:"li"},"3")," looks better, so we\nchoose it."),(0,s.kt)("li",{parentName:"ol"},"Current cell: ",(0,s.kt)("inlineCode",{parentName:"li"},"3"),", we can choose from ",(0,s.kt)("inlineCode",{parentName:"li"},"6")," and ",(0,s.kt)("inlineCode",{parentName:"li"},"7"),", ",(0,s.kt)("inlineCode",{parentName:"li"},"7")," looks better, so we\nchoose it."),(0,s.kt)("li",{parentName:"ol"},"Current cell: ",(0,s.kt)("inlineCode",{parentName:"li"},"7"),", we can choose from ",(0,s.kt)("inlineCode",{parentName:"li"},"10")," and ",(0,s.kt)("inlineCode",{parentName:"li"},"11"),", ",(0,s.kt)("inlineCode",{parentName:"li"},"11")," looks better, so we\nchoose it."),(0,s.kt)("li",{parentName:"ol"},"Current cell: ",(0,s.kt)("inlineCode",{parentName:"li"},"11"),", we can choose from ",(0,s.kt)("inlineCode",{parentName:"li"},"15")," and ",(0,s.kt)("inlineCode",{parentName:"li"},"16"),", ",(0,s.kt)("inlineCode",{parentName:"li"},"16")," looks better, so\nwe choose it.")),(0,s.kt)("p",null,"Our final sum is: ",(0,s.kt)("inlineCode",{parentName:"p"},"1 + 3 + 7 + 11 + 16 = 38"),", but in the bottom left cell we\nhave a ",(0,s.kt)("inlineCode",{parentName:"p"},"99")," that is bigger than our whole sum."),(0,s.kt)("admonition",{type:"tip"},(0,s.kt)("p",{parentName:"admonition"},"Dijkstra's algorithm is a greedy algorithm too, try to think why it is correct.")),(0,s.kt)("h2",{id:"top-down-dp"},"Top-down DP"),(0,s.kt)("p",null,(0,s.kt)("em",{parentName:"p"},"Top-down dynamic programming")," is probably the most common approach, since (at\nleast looks like) is the easiest to implement. The whole point is avoiding the\nunnecessary computations that we have already done."),(0,s.kt)("p",null,"In our case, we can use our na\xefve solution and put a ",(0,s.kt)("em",{parentName:"p"},"cache")," on top of it that\nwill make sure, we don't do unnecessary calculations."),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-java"},"// This \u201cstructure\u201d is required, since I have decided to use \u2039TreeMap\u203a which\n// requires the ordering on the keys. It represents one position in the pyramid.\nrecord Position(int row, int col) implements Comparable {\n public int compareTo(Position r) {\n if (row != r.row) {\n return Integer.valueOf(row).compareTo(r.row);\n }\n\n if (col != r.col) {\n return Integer.valueOf(col).compareTo(r.col);\n }\n\n return 0;\n }\n}\n\npublic static int longestSlideDown(\n int[][] pyramid,\n TreeMap cache,\n Position position) {\n int row = position.row;\n int col = position.col;\n\n if (row >= pyramid.length || col < 0 || col >= pyramid[row].length) {\n // BASE: out of bounds\n return Integer.MIN_VALUE;\n }\n\n if (row == pyramid.length - 1) {\n // BASE: bottom of the pyramid\n return pyramid[position.row][position.col];\n }\n\n if (!cache.containsKey(position)) {\n // We haven't computed the position yet, so we run the same \u201cformula\u201d as\n // in the na\xefve version \xbband\xab we put calculated slide into the cache.\n // Next time we want the slide down from given position, it will be just\n // retrieved from the cache.\n int slideDown = Math.max(\n longestSlideDown(pyramid, cache, new Position(row + 1, col)),\n longestSlideDown(pyramid, cache, new Position(row + 1, col + 1)));\n cache.put(position, pyramid[row][col] + slideDown);\n }\n\n return cache.get(position);\n}\n\npublic static int longestSlideDown(int[][] pyramid) {\n // At the beginning we need to create a cache and share it across the calls.\n TreeMap cache = new TreeMap<>();\n return longestSlideDown(pyramid, cache, new Position(0, 0));\n}\n")),(0,s.kt)("p",null,"You have probably noticed that ",(0,s.kt)("inlineCode",{parentName:"p"},"record Position")," have appeared. Since we are\ncaching the already computed values, we need a \u201creasonable\u201d key. In this case we\nshare the cache only for one ",(0,s.kt)("em",{parentName:"p"},"run")," (i.e. pyramid) of the ",(0,s.kt)("inlineCode",{parentName:"p"},"longestSlideDown"),", so\nwe can cache just with the indices within the pyramid, i.e. the ",(0,s.kt)("inlineCode",{parentName:"p"},"Position"),"."),(0,s.kt)("admonition",{title:"Record",type:"tip"},(0,s.kt)("p",{parentName:"admonition"},(0,s.kt)("em",{parentName:"p"},"Record")," is relatively new addition to the Java language. It is basically an\nimmutable structure with implicitly defined ",(0,s.kt)("inlineCode",{parentName:"p"},".equals()"),", ",(0,s.kt)("inlineCode",{parentName:"p"},".hashCode()"),",\n",(0,s.kt)("inlineCode",{parentName:"p"},".toString()")," and getters for the attributes.")),(0,s.kt)("p",null,"Because of the choice of ",(0,s.kt)("inlineCode",{parentName:"p"},"TreeMap"),", we had to additionally define the ordering\non it."),(0,s.kt)("p",null,"In the ",(0,s.kt)("inlineCode",{parentName:"p"},"longestSlideDown")," you can notice that the computation which used to be\nat the end of the na\xefve version above, is now wrapped in an ",(0,s.kt)("inlineCode",{parentName:"p"},"if")," statement that\nchecks for the presence of the position in the cache and computes the slide down\njust when it's needed."),(0,s.kt)("h3",{id:"time-complexity-2"},"Time complexity"),(0,s.kt)("p",null,"If you think that evaluating time complexity for this approach is a bit more\ntricky, you are right. Keeping the cache in mind, it is not the easiest thing\nto do. However there are some observations that might help us figure this out:"),(0,s.kt)("ol",null,(0,s.kt)("li",{parentName:"ol"},"Slide down from each position is calculated only once."),(0,s.kt)("li",{parentName:"ol"},"Once calculated, we use the result from the cache.")),(0,s.kt)("p",null,"Knowing this, we still cannot, at least easily, describe the time complexity of\nfinding the best slide down from a specific position, ",(0,s.kt)("strong",{parentName:"p"},"but")," we can bound it\nfrom above for the ",(0,s.kt)("strong",{parentName:"p"},"whole")," run from the top. Now the question is how we can do\nthat!"),(0,s.kt)("p",null,"Overall we are doing the same things for almost",(0,s.kt)("sup",{parentName:"p",id:"fnref-2"},(0,s.kt)("a",{parentName:"sup",href:"#fn-2",className:"footnote-ref"},"2"))," all of the positions within\nthe pyramid:"),(0,s.kt)("ol",null,(0,s.kt)("li",{parentName:"ol"},(0,s.kt)("p",{parentName:"li"},"We calculate and store it (using the partial results stored in cache). This\nis done only once."),(0,s.kt)("p",{parentName:"li"},"For each calculation we take 2 values from the cache and insert one value.\nBecause we have chosen ",(0,s.kt)("inlineCode",{parentName:"p"},"TreeMap"),", these 3 operations have logarithmic time\ncomplexity and therefore this step is equivalent to ",(0,s.kt)("span",{parentName:"p",className:"math math-inline"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mn",{parentName:"mrow"},"3"),(0,s.kt)("mo",{parentName:"mrow"},"\u22c5"),(0,s.kt)("msub",{parentName:"mrow"},(0,s.kt)("mrow",{parentName:"msub"},(0,s.kt)("mi",{parentName:"mrow"},"log"),(0,s.kt)("mo",{parentName:"mrow"},"\u2061")),(0,s.kt)("mn",{parentName:"msub"},"2")),(0,s.kt)("mi",{parentName:"mrow"},"n")),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"3 \\cdot \\log_2{n}")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"0.6444em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},"3"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"\u22c5"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}})),(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"0.9386em",verticalAlign:"-0.2441em"}}),(0,s.kt)("span",{parentName:"span",className:"mop"},(0,s.kt)("span",{parentName:"span",className:"mop"},"lo",(0,s.kt)("span",{parentName:"span",style:{marginRight:"0.01389em"}},"g")),(0,s.kt)("span",{parentName:"span",className:"msupsub"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.207em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-2.4559em",marginRight:"0.05em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"2.7em"}}),(0,s.kt)("span",{parentName:"span",className:"sizing reset-size6 size3 mtight"},(0,s.kt)("span",{parentName:"span",className:"mord mtight"},"2")))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.2441em"}},(0,s.kt)("span",{parentName:"span"})))))),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.1667em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n")))))),"."),(0,s.kt)("p",{parentName:"li"},"However for the sake of simplicity, we are going to account only for the\ninsertion, the reason is rather simple, if we include the 2 retrievals here,\nit will be interleaved with the next step, therefore it is easier to keep the\nretrievals in the following point."),(0,s.kt)("admonition",{parentName:"li",type:"caution"},(0,s.kt)("p",{parentName:"admonition"},"You might have noticed it's still not that easy, cause we're not having full\ncache right from the beginning, but the sum of those logarithms cannot be\nexpressed in a nice way, so taking the upper bound, i.e. expecting the cache\nto be full at all times, is the best option for nice and readable complexity\nof the whole approach.")),(0,s.kt)("p",{parentName:"li"},"Our final upper bound of this work is therefore ",(0,s.kt)("span",{parentName:"p",className:"math math-inline"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("msub",{parentName:"mrow"},(0,s.kt)("mrow",{parentName:"msub"},(0,s.kt)("mi",{parentName:"mrow"},"log"),(0,s.kt)("mo",{parentName:"mrow"},"\u2061")),(0,s.kt)("mn",{parentName:"msub"},"2")),(0,s.kt)("mi",{parentName:"mrow"},"n")),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"\\log_2{n}")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"0.9386em",verticalAlign:"-0.2441em"}}),(0,s.kt)("span",{parentName:"span",className:"mop"},(0,s.kt)("span",{parentName:"span",className:"mop"},"lo",(0,s.kt)("span",{parentName:"span",style:{marginRight:"0.01389em"}},"g")),(0,s.kt)("span",{parentName:"span",className:"msupsub"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.207em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-2.4559em",marginRight:"0.05em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"2.7em"}}),(0,s.kt)("span",{parentName:"span",className:"sizing reset-size6 size3 mtight"},(0,s.kt)("span",{parentName:"span",className:"mord mtight"},"2")))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.2441em"}},(0,s.kt)("span",{parentName:"span"})))))),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.1667em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n")))))),".")),(0,s.kt)("li",{parentName:"ol"},(0,s.kt)("p",{parentName:"li"},"We retrieve it from the cache. Same as in first point, but only twice, so we\nget ",(0,s.kt)("span",{parentName:"p",className:"math math-inline"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mn",{parentName:"mrow"},"2"),(0,s.kt)("mo",{parentName:"mrow"},"\u22c5"),(0,s.kt)("msub",{parentName:"mrow"},(0,s.kt)("mrow",{parentName:"msub"},(0,s.kt)("mi",{parentName:"mrow"},"log"),(0,s.kt)("mo",{parentName:"mrow"},"\u2061")),(0,s.kt)("mn",{parentName:"msub"},"2")),(0,s.kt)("mi",{parentName:"mrow"},"n")),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"2 \\cdot \\log_2{n}")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"0.6444em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},"2"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"\u22c5"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}})),(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"0.9386em",verticalAlign:"-0.2441em"}}),(0,s.kt)("span",{parentName:"span",className:"mop"},(0,s.kt)("span",{parentName:"span",className:"mop"},"lo",(0,s.kt)("span",{parentName:"span",style:{marginRight:"0.01389em"}},"g")),(0,s.kt)("span",{parentName:"span",className:"msupsub"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.207em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-2.4559em",marginRight:"0.05em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"2.7em"}}),(0,s.kt)("span",{parentName:"span",className:"sizing reset-size6 size3 mtight"},(0,s.kt)("span",{parentName:"span",className:"mord mtight"},"2")))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.2441em"}},(0,s.kt)("span",{parentName:"span"})))))),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.1667em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n")))))),". "),(0,s.kt)("admonition",{parentName:"li",type:"caution"},(0,s.kt)("p",{parentName:"admonition"},"It's done twice because of the ",(0,s.kt)("inlineCode",{parentName:"p"},".containsKey()")," in the ",(0,s.kt)("inlineCode",{parentName:"p"},"if")," condition.")))),(0,s.kt)("p",null,"Okay, we have evaluated work done for each of the cells in the pyramid and now\nwe need to put it together."),(0,s.kt)("p",null,"Let's split the time complexity of our solution into two operands:"),(0,s.kt)("div",{className:"math math-display"},(0,s.kt)("span",{parentName:"div",className:"katex-display"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mi",{parentName:"mrow",mathvariant:"script"},"O"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"("),(0,s.kt)("mi",{parentName:"mrow"},"r"),(0,s.kt)("mo",{parentName:"mrow"},"+"),(0,s.kt)("mi",{parentName:"mrow"},"s"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},")")),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"\\mathcal{O}(r + s)")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathcal",style:{marginRight:"0.02778em"}},"O"),(0,s.kt)("span",{parentName:"span",className:"mopen"},"("),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.02778em"}},"r"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"+"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}})),(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"s"),(0,s.kt)("span",{parentName:"span",className:"mclose"},")")))))),(0,s.kt)("p",null,(0,s.kt)("span",{parentName:"p",className:"math math-inline"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mi",{parentName:"mrow"},"r")),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"r")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"0.4306em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.02778em"}},"r")))))," will represent the ",(0,s.kt)("em",{parentName:"p"},"actual")," calculation of the cells and ",(0,s.kt)("span",{parentName:"p",className:"math math-inline"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mi",{parentName:"mrow"},"s")),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"s")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"0.4306em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"s")))))," will represent\nthe additional retrievals on top of the calculation."),(0,s.kt)("p",null,"We calculate the values only ",(0,s.kt)("strong",{parentName:"p"},"once"),", therefore we can safely agree on:"),(0,s.kt)("div",{className:"math math-display"},(0,s.kt)("span",{parentName:"div",className:"katex-display"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mtable",{parentName:"semantics",rowspacing:"0.25em",columnalign:"right left",columnspacing:"0em"},(0,s.kt)("mtr",{parentName:"mtable"},(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"true"},(0,s.kt)("mi",{parentName:"mstyle"},"r"))),(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"true"},(0,s.kt)("mrow",{parentName:"mstyle"},(0,s.kt)("mrow",{parentName:"mrow"}),(0,s.kt)("mo",{parentName:"mrow"},"="),(0,s.kt)("mi",{parentName:"mrow"},"n"),(0,s.kt)("mo",{parentName:"mrow"},"\u22c5"),(0,s.kt)("mi",{parentName:"mrow"},"log"),(0,s.kt)("mo",{parentName:"mrow"},"\u2061"),(0,s.kt)("mi",{parentName:"mrow"},"n")))))),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"\\begin{align*} r &= n \\cdot \\log{n} \\\\ \\end{align*}")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1.5em",verticalAlign:"-0.5em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mtable"},(0,s.kt)("span",{parentName:"span",className:"col-align-r"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"1em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-3.16em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.02778em"}},"r")))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.5em"}},(0,s.kt)("span",{parentName:"span"}))))),(0,s.kt)("span",{parentName:"span",className:"col-align-l"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"1em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-3.16em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord"}),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}}),(0,s.kt)("span",{parentName:"span",className:"mrel"},"="),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"\u22c5"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mop"},"lo",(0,s.kt)("span",{parentName:"span",style:{marginRight:"0.01389em"}},"g")),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.1667em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n"))))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.5em"}},(0,s.kt)("span",{parentName:"span"})))))))))))),(0,s.kt)("p",null,"What about the ",(0,s.kt)("span",{parentName:"p",className:"math math-inline"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mi",{parentName:"mrow"},"s")),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"s")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"0.4306em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"s")))))," though? Key observation here is the fact that we have 2\nlookups on the tree in each of them ",(0,s.kt)("strong",{parentName:"p"},"and")," we do it twice, cause each cell has\nat most 2 parents:"),(0,s.kt)("div",{className:"math math-display"},(0,s.kt)("span",{parentName:"div",className:"katex-display"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mtable",{parentName:"semantics",rowspacing:"0.25em",columnalign:"right left",columnspacing:"0em"},(0,s.kt)("mtr",{parentName:"mtable"},(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"true"},(0,s.kt)("mi",{parentName:"mstyle"},"s"))),(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"true"},(0,s.kt)("mrow",{parentName:"mstyle"},(0,s.kt)("mrow",{parentName:"mrow"}),(0,s.kt)("mo",{parentName:"mrow"},"="),(0,s.kt)("mi",{parentName:"mrow"},"n"),(0,s.kt)("mo",{parentName:"mrow"},"\u22c5"),(0,s.kt)("mn",{parentName:"mrow"},"2"),(0,s.kt)("mo",{parentName:"mrow"},"\u22c5"),(0,s.kt)("mrow",{parentName:"mrow"},(0,s.kt)("mo",{parentName:"mrow",fence:"true"},"("),(0,s.kt)("mn",{parentName:"mrow"},"2"),(0,s.kt)("mo",{parentName:"mrow"},"\u22c5"),(0,s.kt)("mi",{parentName:"mrow"},"log"),(0,s.kt)("mo",{parentName:"mrow"},"\u2061"),(0,s.kt)("mi",{parentName:"mrow"},"n"),(0,s.kt)("mo",{parentName:"mrow",fence:"true"},")")))))),(0,s.kt)("mtr",{parentName:"mtable"},(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"true"},(0,s.kt)("mi",{parentName:"mstyle"},"s"))),(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"true"},(0,s.kt)("mrow",{parentName:"mstyle"},(0,s.kt)("mrow",{parentName:"mrow"}),(0,s.kt)("mo",{parentName:"mrow"},"="),(0,s.kt)("mn",{parentName:"mrow"},"4"),(0,s.kt)("mo",{parentName:"mrow"},"\u22c5"),(0,s.kt)("mi",{parentName:"mrow"},"n"),(0,s.kt)("mo",{parentName:"mrow"},"\u22c5"),(0,s.kt)("mi",{parentName:"mrow"},"log"),(0,s.kt)("mo",{parentName:"mrow"},"\u2061"),(0,s.kt)("mi",{parentName:"mrow"},"n")))))),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"\\begin{align*} s &= n \\cdot 2 \\cdot \\left( 2 \\cdot \\log{n} \\right) \\\\ s &= 4 \\cdot n \\cdot \\log{n} \\end{align*}")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"3em",verticalAlign:"-1.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mtable"},(0,s.kt)("span",{parentName:"span",className:"col-align-r"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"1.75em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-3.91em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"s"))),(0,s.kt)("span",{parentName:"span",style:{top:"-2.41em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"s")))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"1.25em"}},(0,s.kt)("span",{parentName:"span"}))))),(0,s.kt)("span",{parentName:"span",className:"col-align-l"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"1.75em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-3.91em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord"}),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}}),(0,s.kt)("span",{parentName:"span",className:"mrel"},"="),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"\u22c5"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},"2"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"\u22c5"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"minner"},(0,s.kt)("span",{parentName:"span",className:"mopen delimcenter",style:{top:"0em"}},"("),(0,s.kt)("span",{parentName:"span",className:"mord"},"2"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"\u22c5"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mop"},"lo",(0,s.kt)("span",{parentName:"span",style:{marginRight:"0.01389em"}},"g")),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.1667em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n")),(0,s.kt)("span",{parentName:"span",className:"mclose delimcenter",style:{top:"0em"}},")")))),(0,s.kt)("span",{parentName:"span",style:{top:"-2.41em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord"}),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}}),(0,s.kt)("span",{parentName:"span",className:"mrel"},"="),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},"4"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"\u22c5"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"\u22c5"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mop"},"lo",(0,s.kt)("span",{parentName:"span",style:{marginRight:"0.01389em"}},"g")),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.1667em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n"))))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"1.25em"}},(0,s.kt)("span",{parentName:"span"})))))))))))),(0,s.kt)("admonition",{type:"tip"},(0,s.kt)("p",{parentName:"admonition"},"You might've noticed that lookups actually take more time than the construction\nof the results. This is not entirely true, since we have included the\n",(0,s.kt)("inlineCode",{parentName:"p"},".containsKey()")," and ",(0,s.kt)("inlineCode",{parentName:"p"},".get()")," from the ",(0,s.kt)("inlineCode",{parentName:"p"},"return")," statement in the second part."),(0,s.kt)("p",{parentName:"admonition"},"If we were to represent this more precisely, we could've gone with:"),(0,s.kt)("div",{parentName:"admonition",className:"math math-display"},(0,s.kt)("span",{parentName:"div",className:"katex-display"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mtable",{parentName:"semantics",rowspacing:"0.25em",columnalign:"right left",columnspacing:"0em"},(0,s.kt)("mtr",{parentName:"mtable"},(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"true"},(0,s.kt)("mi",{parentName:"mstyle"},"r"))),(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"true"},(0,s.kt)("mrow",{parentName:"mstyle"},(0,s.kt)("mrow",{parentName:"mrow"}),(0,s.kt)("mo",{parentName:"mrow"},"="),(0,s.kt)("mn",{parentName:"mrow"},"3"),(0,s.kt)("mo",{parentName:"mrow"},"\u22c5"),(0,s.kt)("mi",{parentName:"mrow"},"n"),(0,s.kt)("mo",{parentName:"mrow"},"\u22c5"),(0,s.kt)("mi",{parentName:"mrow"},"log"),(0,s.kt)("mo",{parentName:"mrow"},"\u2061"),(0,s.kt)("mi",{parentName:"mrow"},"n"))))),(0,s.kt)("mtr",{parentName:"mtable"},(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"true"},(0,s.kt)("mi",{parentName:"mstyle"},"s"))),(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"true"},(0,s.kt)("mrow",{parentName:"mstyle"},(0,s.kt)("mrow",{parentName:"mrow"}),(0,s.kt)("mo",{parentName:"mrow"},"="),(0,s.kt)("mn",{parentName:"mrow"},"2"),(0,s.kt)("mo",{parentName:"mrow"},"\u22c5"),(0,s.kt)("mi",{parentName:"mrow"},"n"),(0,s.kt)("mo",{parentName:"mrow"},"\u22c5"),(0,s.kt)("mi",{parentName:"mrow"},"log"),(0,s.kt)("mo",{parentName:"mrow"},"\u2061"),(0,s.kt)("mi",{parentName:"mrow"},"n")))))),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"\\begin{align*} r &= 3 \\cdot n \\cdot \\log{n} \\\\ s &= 2 \\cdot n \\cdot \\log{n} \\end{align*}")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"3em",verticalAlign:"-1.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mtable"},(0,s.kt)("span",{parentName:"span",className:"col-align-r"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"1.75em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-3.91em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.02778em"}},"r"))),(0,s.kt)("span",{parentName:"span",style:{top:"-2.41em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"s")))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"1.25em"}},(0,s.kt)("span",{parentName:"span"}))))),(0,s.kt)("span",{parentName:"span",className:"col-align-l"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"1.75em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-3.91em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord"}),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}}),(0,s.kt)("span",{parentName:"span",className:"mrel"},"="),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},"3"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"\u22c5"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"\u22c5"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mop"},"lo",(0,s.kt)("span",{parentName:"span",style:{marginRight:"0.01389em"}},"g")),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.1667em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n")))),(0,s.kt)("span",{parentName:"span",style:{top:"-2.41em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord"}),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}}),(0,s.kt)("span",{parentName:"span",className:"mrel"},"="),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},"2"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"\u22c5"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"\u22c5"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mop"},"lo",(0,s.kt)("span",{parentName:"span",style:{marginRight:"0.01389em"}},"g")),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.1667em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n"))))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"1.25em"}},(0,s.kt)("span",{parentName:"span"})))))))))))),(0,s.kt)("p",{parentName:"admonition"},"On the other hand we are summing both numbers together, therefore in the end it\ndoesn't really matter."),(0,s.kt)("p",{parentName:"admonition"},"(",(0,s.kt)("em",{parentName:"p"},"Feel free to compare the sums of both \u201csplits\u201d."),")")),(0,s.kt)("p",null,"And so our final time complexity for the whole ",(0,s.kt)("em",{parentName:"p"},"top-down dynamic programming"),"\napproach is:"),(0,s.kt)("div",{className:"math math-display"},(0,s.kt)("span",{parentName:"div",className:"katex-display"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mi",{parentName:"mrow",mathvariant:"script"},"O"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"("),(0,s.kt)("mi",{parentName:"mrow"},"r"),(0,s.kt)("mo",{parentName:"mrow"},"+"),(0,s.kt)("mi",{parentName:"mrow"},"s"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},")"),(0,s.kt)("mspace",{parentName:"mrow",linebreak:"newline"}),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"script"},"O"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"("),(0,s.kt)("mi",{parentName:"mrow"},"n"),(0,s.kt)("mo",{parentName:"mrow"},"\u22c5"),(0,s.kt)("mi",{parentName:"mrow"},"log"),(0,s.kt)("mo",{parentName:"mrow"},"\u2061"),(0,s.kt)("mi",{parentName:"mrow"},"n"),(0,s.kt)("mo",{parentName:"mrow"},"+"),(0,s.kt)("mn",{parentName:"mrow"},"4"),(0,s.kt)("mo",{parentName:"mrow"},"\u22c5"),(0,s.kt)("mi",{parentName:"mrow"},"n"),(0,s.kt)("mo",{parentName:"mrow"},"\u22c5"),(0,s.kt)("mi",{parentName:"mrow"},"log"),(0,s.kt)("mo",{parentName:"mrow"},"\u2061"),(0,s.kt)("mi",{parentName:"mrow"},"n"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},")"),(0,s.kt)("mspace",{parentName:"mrow",linebreak:"newline"}),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"script"},"O"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"("),(0,s.kt)("mn",{parentName:"mrow"},"5"),(0,s.kt)("mo",{parentName:"mrow"},"\u22c5"),(0,s.kt)("mi",{parentName:"mrow"},"n"),(0,s.kt)("mo",{parentName:"mrow"},"\u22c5"),(0,s.kt)("mi",{parentName:"mrow"},"log"),(0,s.kt)("mo",{parentName:"mrow"},"\u2061"),(0,s.kt)("mi",{parentName:"mrow"},"n"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},")"),(0,s.kt)("mspace",{parentName:"mrow",linebreak:"newline"}),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"script"},"O"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"("),(0,s.kt)("mi",{parentName:"mrow"},"n"),(0,s.kt)("mo",{parentName:"mrow"},"\u22c5"),(0,s.kt)("mi",{parentName:"mrow"},"log"),(0,s.kt)("mo",{parentName:"mrow"},"\u2061"),(0,s.kt)("mi",{parentName:"mrow"},"n"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},")")),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"\\mathcal{O}(r + s) \\\\ \\mathcal{O}(n \\cdot \\log{n} + 4 \\cdot n \\cdot \\log{n}) \\\\ \\mathcal{O}(5 \\cdot n \\cdot \\log{n}) \\\\ \\mathcal{O}(n \\cdot \\log{n})")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathcal",style:{marginRight:"0.02778em"}},"O"),(0,s.kt)("span",{parentName:"span",className:"mopen"},"("),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.02778em"}},"r"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"+"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}})),(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"s"),(0,s.kt)("span",{parentName:"span",className:"mclose"},")")),(0,s.kt)("span",{parentName:"span",className:"mspace newline"}),(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathcal",style:{marginRight:"0.02778em"}},"O"),(0,s.kt)("span",{parentName:"span",className:"mopen"},"("),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"\u22c5"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}})),(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"0.8889em",verticalAlign:"-0.1944em"}}),(0,s.kt)("span",{parentName:"span",className:"mop"},"lo",(0,s.kt)("span",{parentName:"span",style:{marginRight:"0.01389em"}},"g")),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.1667em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n")),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"+"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}})),(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"0.6444em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},"4"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"\u22c5"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}})),(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"0.4445em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"\u22c5"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}})),(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mop"},"lo",(0,s.kt)("span",{parentName:"span",style:{marginRight:"0.01389em"}},"g")),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.1667em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n")),(0,s.kt)("span",{parentName:"span",className:"mclose"},")")),(0,s.kt)("span",{parentName:"span",className:"mspace newline"}),(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathcal",style:{marginRight:"0.02778em"}},"O"),(0,s.kt)("span",{parentName:"span",className:"mopen"},"("),(0,s.kt)("span",{parentName:"span",className:"mord"},"5"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"\u22c5"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}})),(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"0.4445em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"\u22c5"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}})),(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mop"},"lo",(0,s.kt)("span",{parentName:"span",style:{marginRight:"0.01389em"}},"g")),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.1667em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n")),(0,s.kt)("span",{parentName:"span",className:"mclose"},")")),(0,s.kt)("span",{parentName:"span",className:"mspace newline"}),(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathcal",style:{marginRight:"0.02778em"}},"O"),(0,s.kt)("span",{parentName:"span",className:"mopen"},"("),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"\u22c5"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}})),(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mop"},"lo",(0,s.kt)("span",{parentName:"span",style:{marginRight:"0.01389em"}},"g")),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.1667em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n")),(0,s.kt)("span",{parentName:"span",className:"mclose"},")")))))),(0,s.kt)("p",null,"As you can see, this is worse than our ",(0,s.kt)("em",{parentName:"p"},"greedy")," solution that was incorrect, but\nit's better than the ",(0,s.kt)("em",{parentName:"p"},"na\xefve")," one."),(0,s.kt)("h3",{id:"memory-complexity"},"Memory complexity"),(0,s.kt)("p",null,"With this approach we need to talk about the memory complexity too, because we\nhave introduced cache. If you think that the memory complexity is linear to the\ninput, you are right. We start at the top and try to find each and every slide\ndown. At the end we get the final result for ",(0,s.kt)("inlineCode",{parentName:"p"},"new Position(0, 0)"),", so we need to\ncompute everything below."),(0,s.kt)("p",null,"That's how we obtain:"),(0,s.kt)("div",{className:"math math-display"},(0,s.kt)("span",{parentName:"div",className:"katex-display"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mi",{parentName:"mrow",mathvariant:"script"},"O"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"("),(0,s.kt)("mi",{parentName:"mrow"},"n"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},")")),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"\\mathcal{O}(n)")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathcal",style:{marginRight:"0.02778em"}},"O"),(0,s.kt)("span",{parentName:"span",className:"mopen"},"("),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n"),(0,s.kt)("span",{parentName:"span",className:"mclose"},")")))))),(0,s.kt)("p",null,(0,s.kt)("span",{parentName:"p",className:"math math-inline"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mi",{parentName:"mrow"},"n")),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"n")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"0.4306em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n")))))," represents the total amount of cells in the pyramid, i.e."),(0,s.kt)("div",{className:"math math-display"},(0,s.kt)("span",{parentName:"div",className:"katex-display"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("munderover",{parentName:"mrow"},(0,s.kt)("mo",{parentName:"munderover"},"\u2211"),(0,s.kt)("mrow",{parentName:"munderover"},(0,s.kt)("mi",{parentName:"mrow"},"y"),(0,s.kt)("mo",{parentName:"mrow"},"="),(0,s.kt)("mn",{parentName:"mrow"},"0")),(0,s.kt)("mrow",{parentName:"munderover"},(0,s.kt)("mrow",{parentName:"mrow"},(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"p"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"y"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"r"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"a"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"m"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"i"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"d"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"."),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"l"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"e"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"n"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"g"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"t"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"h")),(0,s.kt)("mo",{parentName:"mrow"},"\u2212"),(0,s.kt)("mn",{parentName:"mrow"},"1"))),(0,s.kt)("mrow",{parentName:"mrow"},(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"p"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"y"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"r"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"a"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"m"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"i"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"d")),(0,s.kt)("mrow",{parentName:"mrow"},(0,s.kt)("mo",{parentName:"mrow",fence:"true"},"["),(0,s.kt)("mi",{parentName:"mrow"},"y"),(0,s.kt)("mo",{parentName:"mrow",fence:"true"},"]")),(0,s.kt)("mrow",{parentName:"mrow"},(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"."),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"l"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"e"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"n"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"g"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"t"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"h"))),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"\\sum_{y=0}^{\\mathtt{pyramid.length} - 1} \\mathtt{pyramid}\\left[y\\right]\\mathtt{.length}")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"3.2709em",verticalAlign:"-1.4032em"}}),(0,s.kt)("span",{parentName:"span",className:"mop op-limits"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"1.8677em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-1.8829em",marginLeft:"0em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3.05em"}}),(0,s.kt)("span",{parentName:"span",className:"sizing reset-size6 size3 mtight"},(0,s.kt)("span",{parentName:"span",className:"mord mtight"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal mtight",style:{marginRight:"0.03588em"}},"y"),(0,s.kt)("span",{parentName:"span",className:"mrel mtight"},"="),(0,s.kt)("span",{parentName:"span",className:"mord mtight"},"0")))),(0,s.kt)("span",{parentName:"span",style:{top:"-3.05em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3.05em"}}),(0,s.kt)("span",{parentName:"span"},(0,s.kt)("span",{parentName:"span",className:"mop op-symbol large-op"},"\u2211"))),(0,s.kt)("span",{parentName:"span",style:{top:"-4.3666em",marginLeft:"0em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3.05em"}}),(0,s.kt)("span",{parentName:"span",className:"sizing reset-size6 size3 mtight"},(0,s.kt)("span",{parentName:"span",className:"mord mtight"},(0,s.kt)("span",{parentName:"span",className:"mord mtight"},(0,s.kt)("span",{parentName:"span",className:"mord mathtt mtight"},"pyramid.length")),(0,s.kt)("span",{parentName:"span",className:"mbin mtight"},"\u2212"),(0,s.kt)("span",{parentName:"span",className:"mord mtight"},"1"))))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"1.4032em"}},(0,s.kt)("span",{parentName:"span"}))))),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.1667em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathtt"},"pyramid")),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.1667em"}}),(0,s.kt)("span",{parentName:"span",className:"minner"},(0,s.kt)("span",{parentName:"span",className:"mopen delimcenter",style:{top:"0em"}},"["),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.03588em"}},"y"),(0,s.kt)("span",{parentName:"span",className:"mclose delimcenter",style:{top:"0em"}},"]")),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.1667em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathtt"},".length"))))))),(0,s.kt)("admonition",{type:"caution"},(0,s.kt)("p",{parentName:"admonition"},"If you're wondering whether it's correct because of the second ",(0,s.kt)("inlineCode",{parentName:"p"},"if")," in our\nfunction, your guess is right. However we are expressing the complexity in the\nBachmann-Landau notation, so we care about the ",(0,s.kt)("strong",{parentName:"p"},"upper bound"),", not the exact\nnumber.")),(0,s.kt)("admonition",{title:"Can this be optimized?",type:"tip"},(0,s.kt)("p",{parentName:"admonition"},"Yes, it can! Try to think about a way, how can you minimize the memory\ncomplexity of this approach. I'll give you a hint:"),(0,s.kt)("div",{parentName:"admonition",className:"math math-display"},(0,s.kt)("span",{parentName:"div",className:"katex-display"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mi",{parentName:"mrow",mathvariant:"script"},"O"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"("),(0,s.kt)("mi",{parentName:"mrow"},"r"),(0,s.kt)("mi",{parentName:"mrow"},"o"),(0,s.kt)("mi",{parentName:"mrow"},"w"),(0,s.kt)("mi",{parentName:"mrow"},"s"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},")")),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"\\mathcal{O}(rows)")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathcal",style:{marginRight:"0.02778em"}},"O"),(0,s.kt)("span",{parentName:"span",className:"mopen"},"("),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"ro"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.02691em"}},"w"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"s"),(0,s.kt)("span",{parentName:"span",className:"mclose"},")"))))))),(0,s.kt)("h2",{id:"bottom-up-dp"},"Bottom-up DP"),(0,s.kt)("p",null,"If you try to think in depth about the top-down DP solution, you might notice\nthat the ",(0,s.kt)("em",{parentName:"p"},"core")," of it stands on caching the calculations that have been already\ndone on the lower \u201clevels\u201d of the pyramid. Our bottom-up implementation will be\nusing this fact!"),(0,s.kt)("admonition",{type:"tip"},(0,s.kt)("p",{parentName:"admonition"},"As I have said in the ",(0,s.kt)("em",{parentName:"p"},"top-down DP")," section, it is the easiest way to implement\nDP (unless the cached function has complicated parameters, in that case it might\nget messy)."),(0,s.kt)("p",{parentName:"admonition"},"Bottom-up dynamic programming can be more effective, but may be more complicated\nto implement right from the beginning.")),(0,s.kt)("p",null,"Let's see how we can implement it:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-java"},"public static int longestSlideDown(int[][] pyramid) {\n // In the beginning we declare new array. At this point it is easier to just\n // work with the one dimension, i.e. just allocating the space for the rows.\n int[][] slideDowns = new int[pyramid.length][];\n\n // Bottom row gets just copied, there's nothing else to do\u2026 It's the base\n // case.\n slideDowns[pyramid.length - 1] = Arrays.copyOf(pyramid[pyramid.length - 1],\n pyramid[pyramid.length - 1].length);\n\n // Then we need to propagate the found slide downs for each of the levels\n // above.\n for (int y = pyramid.length - 2; y >= 0; --y) {\n // We start by copying the values lying in the row we're processing.\n // They get included in the final sum and we need to allocate the space\n // for the precalculated slide downs anyways.\n int[] row = Arrays.copyOf(pyramid[y], pyramid[y].length);\n\n // At this we just need to \u201cfetch\u201d the partial results from \u201cneighbours\u201d\n for (int x = 0; x < row.length; ++x) {\n // We look under our position, since we expect the rows to get\n // shorter, we can safely assume such position exists.\n int under = slideDowns[y + 1][x];\n\n // Then we have a look to the right, such position doesn't have to\n // exist, e.g. on the right edge, so we validate the index, and if\n // it doesn't exist, we just assign minimum of the \u2039int\u203a which makes\n // sure that it doesn't get picked in the \u2039Math.max()\u203a call.\n int toRight = x + 1 < slideDowns[y + 1].length\n ? slideDowns[y + 1][x + 1]\n : Integer.MIN_VALUE;\n\n // Finally we add the best choice at this point.\n row[x] += Math.max(under, toRight);\n }\n\n // And save the row we've just calculated partial results for to the\n // \u201ctable\u201d.\n slideDowns[y] = row;\n }\n\n // At the end we can find our seeked slide down at the top cell.\n return slideDowns[0][0];\n}\n")),(0,s.kt)("p",null,"I've tried to explain the code as much as possible within the comments, since it\nmight be more beneficial to see right next to the \u201coffending\u201d lines."),(0,s.kt)("p",null,"As you can see, in this approach we go from the other side",(0,s.kt)("sup",{parentName:"p",id:"fnref-3"},(0,s.kt)("a",{parentName:"sup",href:"#fn-3",className:"footnote-ref"},"3")),", the bottom of\nthe pyramid and propagate the partial results up."),(0,s.kt)("admonition",{type:"info"},(0,s.kt)("mdxAdmonitionTitle",{parentName:"admonition"},"How is this different from the ",(0,s.kt)("em",{parentName:"mdxAdmonitionTitle"},"greedy")," solution???"),(0,s.kt)("p",{parentName:"admonition"},"If you try to compare them, you might find a very noticable difference. The\ngreedy approach is going from the top to the bottom without ",(0,s.kt)("strong",{parentName:"p"},"any")," knowledge of\nwhat's going on below. On the other hand, bottom-up DP is going from the bottom\n(",(0,s.kt)("em",{parentName:"p"},"DUH\u2026"),") and ",(0,s.kt)("strong",{parentName:"p"},"propagates")," the partial results to the top. The propagation is\nwhat makes sure that at the top I don't choose the best ",(0,s.kt)("strong",{parentName:"p"},"local")," choice, but\nthe best ",(0,s.kt)("strong",{parentName:"p"},"overall")," result I can achieve.")),(0,s.kt)("h3",{id:"time-complexity-3"},"Time complexity"),(0,s.kt)("p",null,"Time complexity of this solution is rather simple. We allocate an array for the\nrows and then for each row, we copy it and adjust the partial results. Doing\nthis we get:"),(0,s.kt)("div",{className:"math math-display"},(0,s.kt)("span",{parentName:"div",className:"katex-display"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mi",{parentName:"mrow",mathvariant:"script"},"O"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"("),(0,s.kt)("mi",{parentName:"mrow"},"r"),(0,s.kt)("mi",{parentName:"mrow"},"o"),(0,s.kt)("mi",{parentName:"mrow"},"w"),(0,s.kt)("mi",{parentName:"mrow"},"s"),(0,s.kt)("mo",{parentName:"mrow"},"+"),(0,s.kt)("mn",{parentName:"mrow"},"2"),(0,s.kt)("mi",{parentName:"mrow"},"n"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},")")),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"\\mathcal{O}(rows + 2n)")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathcal",style:{marginRight:"0.02778em"}},"O"),(0,s.kt)("span",{parentName:"span",className:"mopen"},"("),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"ro"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.02691em"}},"w"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"s"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"+"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}})),(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},"2"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n"),(0,s.kt)("span",{parentName:"span",className:"mclose"},")")))))),(0,s.kt)("p",null,"Of course, this is an upper bound, since we iterate through the bottom row only\nonce."),(0,s.kt)("h3",{id:"memory-complexity-1"},"Memory complexity"),(0,s.kt)("p",null,"We're allocating an array for the pyramid ",(0,s.kt)("strong",{parentName:"p"},"again")," for our partial results, so\nwe get:"),(0,s.kt)("div",{className:"math math-display"},(0,s.kt)("span",{parentName:"div",className:"katex-display"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mi",{parentName:"mrow",mathvariant:"script"},"O"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"("),(0,s.kt)("mi",{parentName:"mrow"},"n"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},")")),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"\\mathcal{O}(n)")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathcal",style:{marginRight:"0.02778em"}},"O"),(0,s.kt)("span",{parentName:"span",className:"mopen"},"("),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n"),(0,s.kt)("span",{parentName:"span",className:"mclose"},")")))))),(0,s.kt)("admonition",{type:"tip"},(0,s.kt)("p",{parentName:"admonition"},"If we were writing this in C++ or Rust, we could've avoided that, but not\nreally."),(0,s.kt)("p",{parentName:"admonition"},"C++ would allow us to ",(0,s.kt)("strong",{parentName:"p"},"copy")," the pyramid rightaway into the parameter, so we\nwould be able to directly change it. However it's still a copy, even though we\ndon't need to allocate anything ourselves. It's just implicitly done for us."),(0,s.kt)("p",{parentName:"admonition"},"Rust is more funny in this case. If the pyramids weren't used after the call of\n",(0,s.kt)("inlineCode",{parentName:"p"},"longest_slide_down"),", it would simply ",(0,s.kt)("strong",{parentName:"p"},"move")," them into the functions. If they\nwere used afterwards, the compiler would force you to either borrow it, or\n",(0,s.kt)("em",{parentName:"p"},"clone-and-move")," for the function."),(0,s.kt)("hr",{parentName:"admonition"}),(0,s.kt)("p",{parentName:"admonition"},"Since we're doing it in Java, we get a reference to the ",(0,s.kt)("em",{parentName:"p"},"original")," array and we\ncan't do whatever we want with it.")),(0,s.kt)("h2",{id:"summary"},"Summary"),(0,s.kt)("p",null,"And we've finally reached the end. We have seen 4 different \u201csolutions\u201d",(0,s.kt)("sup",{parentName:"p",id:"fnref-4"},(0,s.kt)("a",{parentName:"sup",href:"#fn-4",className:"footnote-ref"},"4"))," of\nthe same problem using different approaches. Different approaches follow the\norder in which you might come up with them, each approach influences its\nsuccessor and represents the way we can enhance the existing implementation."),(0,s.kt)("hr",null),(0,s.kt)("admonition",{title:"source",type:"info"},(0,s.kt)("p",{parentName:"admonition"},"You can find source code referenced in the text\n",(0,s.kt)("a",{parentName:"p",href:"pathname:///files/ib002/recursion/pyramid-slide-down.tar.gz"},"here"),".")),(0,s.kt)("div",{className:"footnotes"},(0,s.kt)("hr",{parentName:"div"}),(0,s.kt)("ol",{parentName:"div"},(0,s.kt)("li",{parentName:"ol",id:"fn-1"},"cause why not, right!?",(0,s.kt)("a",{parentName:"li",href:"#fnref-1",className:"footnote-backref"},"\u21a9")),(0,s.kt)("li",{parentName:"ol",id:"fn-2"},"except the bottom row",(0,s.kt)("a",{parentName:"li",href:"#fnref-2",className:"footnote-backref"},"\u21a9")),(0,s.kt)("li",{parentName:"ol",id:"fn-3"},"definitely not an RHCP reference \ud83d\ude09",(0,s.kt)("a",{parentName:"li",href:"#fnref-3",className:"footnote-backref"},"\u21a9")),(0,s.kt)("li",{parentName:"ol",id:"fn-4"},"one was not correct, thus the quotes",(0,s.kt)("a",{parentName:"li",href:"#fnref-4",className:"footnote-backref"},"\u21a9")))))}c.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[8442],{3905:(a,e,t)=>{t.d(e,{Zo:()=>o,kt:()=>h});var n=t(7294);function s(a,e,t){return e in a?Object.defineProperty(a,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):a[e]=t,a}function m(a,e){var t=Object.keys(a);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(a);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(a,e).enumerable}))),t.push.apply(t,n)}return t}function p(a){for(var e=1;e=0||(s[t]=a[t]);return s}(a,e);if(Object.getOwnPropertySymbols){var m=Object.getOwnPropertySymbols(a);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(a,t)&&(s[t]=a[t])}return s}var l=n.createContext({}),i=function(a){var e=n.useContext(l),t=e;return a&&(t="function"==typeof a?a(e):p(p({},e),a)),t},o=function(a){var e=i(a.components);return n.createElement(l.Provider,{value:e},a.children)},N="mdxType",c={inlineCode:"code",wrapper:function(a){var e=a.children;return n.createElement(n.Fragment,{},e)}},k=n.forwardRef((function(a,e){var t=a.components,s=a.mdxType,m=a.originalType,l=a.parentName,o=r(a,["components","mdxType","originalType","parentName"]),N=i(t),k=s,h=N["".concat(l,".").concat(k)]||N[k]||c[k]||m;return t?n.createElement(h,p(p({ref:e},o),{},{components:t})):n.createElement(h,p({ref:e},o))}));function h(a,e){var t=arguments,s=e&&e.mdxType;if("string"==typeof a||s){var m=t.length,p=new Array(m);p[0]=k;var r={};for(var l in e)hasOwnProperty.call(e,l)&&(r[l]=e[l]);r.originalType=a,r[N]="string"==typeof a?a:s,p[1]=r;for(var i=2;i{t.r(e),t.d(e,{assets:()=>l,contentTitle:()=>p,default:()=>c,frontMatter:()=>m,metadata:()=>r,toc:()=>i});var n=t(7462),s=(t(7294),t(3905));const m={id:"pyramid-slide-down",title:"Introduction to dynamic programming",description:"Solving a problem in different ways.\n",tags:["java","recursion","exponential","greedy","dynamic-programming","top-down-dp","bottom-up-dp"],last_updated:{date:new Date("2023-08-17T00:00:00.000Z")}},p=void 0,r={unversionedId:"recursion/pyramid-slide-down",id:"recursion/pyramid-slide-down",title:"Introduction to dynamic programming",description:"Solving a problem in different ways.\n",source:"@site/ib002/04-recursion/2023-08-17-pyramid-slide-down.md",sourceDirName:"04-recursion",slug:"/recursion/pyramid-slide-down",permalink:"/ib002/recursion/pyramid-slide-down",draft:!1,editUrl:"https://gitlab.com/mfocko/blog/tree/main/ib002/04-recursion/2023-08-17-pyramid-slide-down.md",tags:[{label:"java",permalink:"/ib002/tags/java"},{label:"recursion",permalink:"/ib002/tags/recursion"},{label:"exponential",permalink:"/ib002/tags/exponential"},{label:"greedy",permalink:"/ib002/tags/greedy"},{label:"dynamic-programming",permalink:"/ib002/tags/dynamic-programming"},{label:"top-down-dp",permalink:"/ib002/tags/top-down-dp"},{label:"bottom-up-dp",permalink:"/ib002/tags/bottom-up-dp"}],version:"current",lastUpdatedAt:1694109587,formattedLastUpdatedAt:"Sep 7, 2023",frontMatter:{id:"pyramid-slide-down",title:"Introduction to dynamic programming",description:"Solving a problem in different ways.\n",tags:["java","recursion","exponential","greedy","dynamic-programming","top-down-dp","bottom-up-dp"],last_updated:{date:"2023-08-17T00:00:00.000Z"}},sidebar:"autogeneratedBar",previous:{title:"Recursion and backtracking with Robot Karel",permalink:"/ib002/recursion/karel-1"},next:{title:"Red-Black Trees",permalink:"/ib002/category/red-black-trees"}},l={},i=[{value:"Problem",id:"problem",level:2},{value:"Solving the problem",id:"solving-the-problem",level:2},{value:"Na\xefve solution",id:"na\xefve-solution",level:2},{value:"Time complexity",id:"time-complexity",level:3},{value:"Greedy solution",id:"greedy-solution",level:2},{value:"Time complexity",id:"time-complexity-1",level:3},{value:"Running the tests",id:"running-the-tests",level:3},{value:"Top-down DP",id:"top-down-dp",level:2},{value:"Time complexity",id:"time-complexity-2",level:3},{value:"Memory complexity",id:"memory-complexity",level:3},{value:"Bottom-up DP",id:"bottom-up-dp",level:2},{value:"Time complexity",id:"time-complexity-3",level:3},{value:"Memory complexity",id:"memory-complexity-1",level:3},{value:"Summary",id:"summary",level:2}],o={toc:i},N="wrapper";function c(a){let{components:e,...t}=a;return(0,s.kt)(N,(0,n.Z)({},o,t,{components:e,mdxType:"MDXLayout"}),(0,s.kt)("p",null,"In this post we will try to solve one problem in different ways."),(0,s.kt)("h2",{id:"problem"},"Problem"),(0,s.kt)("p",null,"The problem we are going to solve is one of ",(0,s.kt)("em",{parentName:"p"},"CodeWars")," katas and is called\n",(0,s.kt)("a",{parentName:"p",href:"https://www.codewars.com/kata/551f23362ff852e2ab000037"},"Pyramid Slide Down"),"."),(0,s.kt)("p",null,"We are given a 2D array of integers and we are to find the ",(0,s.kt)("em",{parentName:"p"},"slide down"),".\n",(0,s.kt)("em",{parentName:"p"},"Slide down")," is a maximum sum of consecutive numbers from the top to the bottom."),(0,s.kt)("p",null,"Let's have a look at few examples. Consider the following pyramid:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"}," 3\n 7 4\n 2 4 6\n8 5 9 3\n")),(0,s.kt)("p",null,"This pyramid has following slide down:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"}," *3\n *7 4\n 2 *4 6\n8 5 *9 3\n")),(0,s.kt)("p",null,"And its value is ",(0,s.kt)("inlineCode",{parentName:"p"},"23"),"."),(0,s.kt)("p",null,"We can also have a look at a ",(0,s.kt)("em",{parentName:"p"},"bigger")," example:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"}," 75\n 95 64\n 17 47 82\n 18 35 87 10\n 20 4 82 47 65\n 19 1 23 3 34\n 88 2 77 73 7 63 67\n 99 65 4 28 6 16 70 92\n 41 41 26 56 83 40 80 70 33\n 41 48 72 33 47 32 37 16 94 29\n 53 71 44 65 25 43 91 52 97 51 14\n 70 11 33 28 77 73 17 78 39 68 17 57\n 91 71 52 38 17 14 91 43 58 50 27 29 48\n 63 66 4 68 89 53 67 30 73 16 69 87 40 31\n 4 62 98 27 23 9 70 98 73 93 38 53 60 4 23\n")),(0,s.kt)("p",null,"Slide down in this case is equal to ",(0,s.kt)("inlineCode",{parentName:"p"},"1074"),"."),(0,s.kt)("h2",{id:"solving-the-problem"},"Solving the problem"),(0,s.kt)("admonition",{type:"caution"},(0,s.kt)("p",{parentName:"admonition"},"I will describe the following ways you can approach this problem and implement\nthem in ",(0,s.kt)("em",{parentName:"p"},"Java"),(0,s.kt)("sup",{parentName:"p",id:"fnref-1"},(0,s.kt)("a",{parentName:"sup",href:"#fn-1",className:"footnote-ref"},"1")),".")),(0,s.kt)("p",null,"For all of the following solutions I will be using basic ",(0,s.kt)("inlineCode",{parentName:"p"},"main")," function that\nwill output ",(0,s.kt)("inlineCode",{parentName:"p"},"true"),"/",(0,s.kt)("inlineCode",{parentName:"p"},"false")," based on the expected output of our algorithm. Any\nother differences will lie only in the solutions of the problem. You can see the\n",(0,s.kt)("inlineCode",{parentName:"p"},"main")," here:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-java"},'public static void main(String[] args) {\n System.out.print("Test #1: ");\n System.out.println(longestSlideDown(new int[][] {\n { 3 },\n { 7, 4 },\n { 2, 4, 6 },\n { 8, 5, 9, 3 }\n }) == 23 ? "passed" : "failed");\n\n System.out.print("Test #2: ");\n System.out.println(longestSlideDown(new int[][] {\n { 75 },\n { 95, 64 },\n { 17, 47, 82 },\n { 18, 35, 87, 10 },\n { 20, 4, 82, 47, 65 },\n { 19, 1, 23, 75, 3, 34 },\n { 88, 2, 77, 73, 7, 63, 67 },\n { 99, 65, 4, 28, 6, 16, 70, 92 },\n { 41, 41, 26, 56, 83, 40, 80, 70, 33 },\n { 41, 48, 72, 33, 47, 32, 37, 16, 94, 29 },\n { 53, 71, 44, 65, 25, 43, 91, 52, 97, 51, 14 },\n { 70, 11, 33, 28, 77, 73, 17, 78, 39, 68, 17, 57 },\n { 91, 71, 52, 38, 17, 14, 91, 43, 58, 50, 27, 29, 48 },\n { 63, 66, 4, 68, 89, 53, 67, 30, 73, 16, 69, 87, 40, 31 },\n { 4, 62, 98, 27, 23, 9, 70, 98, 73, 93, 38, 53, 60, 4, 23 },\n }) == 1074 ? "passed" : "failed");\n}\n')),(0,s.kt)("h2",{id:"na\xefve-solution"},"Na\xefve solution"),(0,s.kt)("p",null,"Our na\xefve solution consists of trying out all the possible slides and finding\nthe one with maximum sum."),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-java"},"public static int longestSlideDown(int[][] pyramid, int row, int col) {\n if (row >= pyramid.length || col < 0 || col >= pyramid[row].length) {\n // BASE: We have gotten out of bounds, there's no reasonable value to\n // return, so we just return the \u2039MIN_VALUE\u203a to ensure that it cannot\n // be maximum.\n return Integer.MIN_VALUE;\n }\n\n if (row == pyramid.length - 1) {\n // BASE: Bottom of the pyramid, we just return the value, there's\n // nowhere to slide anymore.\n return pyramid[row][col];\n }\n\n // Otherwise we account for the current position and return maximum of the\n // available \u201cslides\u201d.\n return pyramid[row][col] + Math.max(\n longestSlideDown(pyramid, row + 1, col),\n longestSlideDown(pyramid, row + 1, col + 1));\n}\n\npublic static int longestSlideDown(int[][] pyramid) {\n // We start the slide in the top cell of the pyramid.\n return longestSlideDown(pyramid, 0, 0);\n}\n")),(0,s.kt)("p",null,"As you can see, we have 2 overloads:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-java"},"int longestSlideDown(int[][] pyramid);\nint longestSlideDown(int[][] pyramid, int row, int col);\n")),(0,s.kt)("p",null,"First one is used as a ",(0,s.kt)("em",{parentName:"p"},"public interface")," to the solution, you just pass in the\npyramid itself. Second one is the recursive \u201calgorithm\u201d that finds the slide\ndown."),(0,s.kt)("p",null,"It is a relatively simple solution\u2026 There's nothing to do at the bottom of the\npyramid, so we just return the value in the ",(0,s.kt)("em",{parentName:"p"},"cell"),". Otherwise we add it and try\nto slide down the available cells below the current row."),(0,s.kt)("h3",{id:"time-complexity"},"Time complexity"),(0,s.kt)("p",null,"If you get the source code and run it yourself, it runs rather fine\u2026 I hope you\nare wondering about the time complexity of the proposed solution and, since it\nreally is a na\xefve solution, the time complexity is pretty bad. Let's find the\nworst case scenario."),(0,s.kt)("p",null,"Let's start with the first overload:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-java"},"public static int longestSlideDown(int[][] pyramid) {\n return longestSlideDown(pyramid, 0, 0);\n}\n")),(0,s.kt)("p",null,"There's not much to do here, so we can safely say that the time complexity of\nthis function is bounded by ",(0,s.kt)("span",{parentName:"p",className:"math math-inline"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mi",{parentName:"mrow"},"T"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"("),(0,s.kt)("mi",{parentName:"mrow"},"n"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},")")),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"T(n)")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.13889em"}},"T"),(0,s.kt)("span",{parentName:"span",className:"mopen"},"("),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n"),(0,s.kt)("span",{parentName:"span",className:"mclose"},")"))))),", where ",(0,s.kt)("span",{parentName:"p",className:"math math-inline"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mi",{parentName:"mrow"},"T")),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"T")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"0.6833em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.13889em"}},"T")))))," is our second overload. This\ndoesn't tell us anything, so let's move on to the second overload where we are\ngoing to define the ",(0,s.kt)("span",{parentName:"p",className:"math math-inline"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mi",{parentName:"mrow"},"T"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"("),(0,s.kt)("mi",{parentName:"mrow"},"n"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},")")),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"T(n)")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.13889em"}},"T"),(0,s.kt)("span",{parentName:"span",className:"mopen"},"("),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n"),(0,s.kt)("span",{parentName:"span",className:"mclose"},")")))))," function."),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-java"},"public static int longestSlideDown(int[][] pyramid, int row, int col) {\n if (row >= pyramid.length || col < 0 || col >= pyramid[row].length) {\n // BASE: We have gotten out of bounds, there's no reasonable value to\n // return, so we just return the \u2039MIN_VALUE\u203a to ensure that it cannot\n // be maximum.\n return Integer.MIN_VALUE;\n }\n\n if (row == pyramid.length - 1) {\n // BASE: Bottom of the pyramid, we just return the value, there's\n // nowhere to slide anymore.\n return pyramid[row][col];\n }\n\n // Otherwise we account for the current position and return maximum of the\n // available \u201cslides\u201d.\n return pyramid[row][col] + Math.max(\n longestSlideDown(pyramid, row + 1, col),\n longestSlideDown(pyramid, row + 1, col + 1));\n}\n")),(0,s.kt)("p",null,"Fun fact is that the whole \u201calgorithm\u201d consists of just 2 ",(0,s.kt)("inlineCode",{parentName:"p"},"return")," statements\nand nothing else. Let's dissect them!"),(0,s.kt)("p",null,"First ",(0,s.kt)("inlineCode",{parentName:"p"},"return")," statement is the base case, so it has a constant time complexity."),(0,s.kt)("p",null,"Second one a bit tricky. We add two numbers together, which we'll consider as\nconstant, but for the right part of the expression we take maximum from the left\nand right paths. OK\u2026 So what happens? We evaluate the ",(0,s.kt)("inlineCode",{parentName:"p"},"longestSlideDown")," while\nchoosing the under and right both. They are separate computations though, so we\nare branching from each call of ",(0,s.kt)("inlineCode",{parentName:"p"},"longestSlideDown"),", unless it's a base case."),(0,s.kt)("p",null,"What does that mean for us then? We basically get"),(0,s.kt)("div",{className:"math math-display"},(0,s.kt)("span",{parentName:"div",className:"katex-display"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mi",{parentName:"mrow"},"T"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"("),(0,s.kt)("mi",{parentName:"mrow"},"y"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},")"),(0,s.kt)("mo",{parentName:"mrow"},"="),(0,s.kt)("mrow",{parentName:"mrow"},(0,s.kt)("mo",{parentName:"mrow",fence:"true"},"{"),(0,s.kt)("mtable",{parentName:"mrow",rowspacing:"0.36em",columnalign:"left left",columnspacing:"1em"},(0,s.kt)("mtr",{parentName:"mtable"},(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"false"},(0,s.kt)("mn",{parentName:"mstyle"},"1"))),(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"false"},(0,s.kt)("mrow",{parentName:"mstyle"},(0,s.kt)("mtext",{parentName:"mrow"},",\xa0if\xa0"),(0,s.kt)("mi",{parentName:"mrow"},"y"),(0,s.kt)("mo",{parentName:"mrow"},"="),(0,s.kt)("mi",{parentName:"mrow"},"r"),(0,s.kt)("mi",{parentName:"mrow"},"o"),(0,s.kt)("mi",{parentName:"mrow"},"w"),(0,s.kt)("mi",{parentName:"mrow"},"s"))))),(0,s.kt)("mtr",{parentName:"mtable"},(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"false"},(0,s.kt)("mrow",{parentName:"mstyle"},(0,s.kt)("mn",{parentName:"mrow"},"1"),(0,s.kt)("mo",{parentName:"mrow"},"+"),(0,s.kt)("mn",{parentName:"mrow"},"2"),(0,s.kt)("mo",{parentName:"mrow"},"\u22c5"),(0,s.kt)("mi",{parentName:"mrow"},"T"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"("),(0,s.kt)("mi",{parentName:"mrow"},"y"),(0,s.kt)("mo",{parentName:"mrow"},"+"),(0,s.kt)("mn",{parentName:"mrow"},"1"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},")")))),(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"false"},(0,s.kt)("mtext",{parentName:"mstyle"},",\xa0otherwise"))))))),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"T(y) = \\begin{cases} 1 & \\text{, if } y = rows \\\\ 1 + 2 \\cdot T(y + 1) & \\text{, otherwise} \\end{cases}")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.13889em"}},"T"),(0,s.kt)("span",{parentName:"span",className:"mopen"},"("),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.03588em"}},"y"),(0,s.kt)("span",{parentName:"span",className:"mclose"},")"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}}),(0,s.kt)("span",{parentName:"span",className:"mrel"},"="),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}})),(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"3em",verticalAlign:"-1.25em"}}),(0,s.kt)("span",{parentName:"span",className:"minner"},(0,s.kt)("span",{parentName:"span",className:"mopen delimcenter",style:{top:"0em"}},(0,s.kt)("span",{parentName:"span",className:"delimsizing size4"},"{")),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mtable"},(0,s.kt)("span",{parentName:"span",className:"col-align-l"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"1.69em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-3.69em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3.008em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord"},"1"))),(0,s.kt)("span",{parentName:"span",style:{top:"-2.25em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3.008em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord"},"1"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"+"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},"2"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"\u22c5"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.13889em"}},"T"),(0,s.kt)("span",{parentName:"span",className:"mopen"},"("),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.03588em"}},"y"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"+"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},"1"),(0,s.kt)("span",{parentName:"span",className:"mclose"},")")))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"1.19em"}},(0,s.kt)("span",{parentName:"span"}))))),(0,s.kt)("span",{parentName:"span",className:"arraycolsep",style:{width:"1em"}}),(0,s.kt)("span",{parentName:"span",className:"col-align-l"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"1.69em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-3.69em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3.008em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord text"},(0,s.kt)("span",{parentName:"span",className:"mord"},",\xa0if\xa0")),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.03588em"}},"y"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}}),(0,s.kt)("span",{parentName:"span",className:"mrel"},"="),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"ro"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.02691em"}},"w"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"s"))),(0,s.kt)("span",{parentName:"span",style:{top:"-2.25em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3.008em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord text"},(0,s.kt)("span",{parentName:"span",className:"mord"},",\xa0otherwise"))))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"1.19em"}},(0,s.kt)("span",{parentName:"span"}))))))),(0,s.kt)("span",{parentName:"span",className:"mclose nulldelimiter"}))))))),(0,s.kt)("p",null,"That looks rather easy to compute, isn't it? If you sum it up, you'll get:"),(0,s.kt)("div",{className:"math math-display"},(0,s.kt)("span",{parentName:"div",className:"katex-display"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mi",{parentName:"mrow"},"T"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"("),(0,s.kt)("mi",{parentName:"mrow"},"r"),(0,s.kt)("mi",{parentName:"mrow"},"o"),(0,s.kt)("mi",{parentName:"mrow"},"w"),(0,s.kt)("mi",{parentName:"mrow"},"s"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},")"),(0,s.kt)("mo",{parentName:"mrow"},"\u2208"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"script"},"O"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"("),(0,s.kt)("msup",{parentName:"mrow"},(0,s.kt)("mn",{parentName:"msup"},"2"),(0,s.kt)("mrow",{parentName:"msup"},(0,s.kt)("mi",{parentName:"mrow"},"r"),(0,s.kt)("mi",{parentName:"mrow"},"o"),(0,s.kt)("mi",{parentName:"mrow"},"w"),(0,s.kt)("mi",{parentName:"mrow"},"s"))),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},")")),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"T(rows) \\in \\mathcal{O}(2^{rows})")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.13889em"}},"T"),(0,s.kt)("span",{parentName:"span",className:"mopen"},"("),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"ro"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.02691em"}},"w"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"s"),(0,s.kt)("span",{parentName:"span",className:"mclose"},")"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}}),(0,s.kt)("span",{parentName:"span",className:"mrel"},"\u2208"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}})),(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathcal",style:{marginRight:"0.02778em"}},"O"),(0,s.kt)("span",{parentName:"span",className:"mopen"},"("),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord"},"2"),(0,s.kt)("span",{parentName:"span",className:"msupsub"},(0,s.kt)("span",{parentName:"span",className:"vlist-t"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.7144em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-3.113em",marginRight:"0.05em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"2.7em"}}),(0,s.kt)("span",{parentName:"span",className:"sizing reset-size6 size3 mtight"},(0,s.kt)("span",{parentName:"span",className:"mord mtight"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal mtight"},"ro"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal mtight",style:{marginRight:"0.02691em"}},"w"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal mtight"},"s"))))))))),(0,s.kt)("span",{parentName:"span",className:"mclose"},")")))))),(0,s.kt)("p",null,"If you wonder why, I'll try to describe it intuitively:"),(0,s.kt)("ol",null,(0,s.kt)("li",{parentName:"ol"},"In each call to ",(0,s.kt)("inlineCode",{parentName:"li"},"longestSlideDown")," we do some work in constant time,\nregardless of being in the base case. Those are the ",(0,s.kt)("inlineCode",{parentName:"li"},"1"),"s in both cases."),(0,s.kt)("li",{parentName:"ol"},"If we are not in the base case, we move one row down ",(0,s.kt)("strong",{parentName:"li"},"twice"),". That's how we\nobtained ",(0,s.kt)("inlineCode",{parentName:"li"},"2 *")," and ",(0,s.kt)("inlineCode",{parentName:"li"},"y + 1")," in the ",(0,s.kt)("em",{parentName:"li"},"otherwise")," case."),(0,s.kt)("li",{parentName:"ol"},"We move row-by-row, so we move down ",(0,s.kt)("inlineCode",{parentName:"li"},"y"),"-times and each call splits to two\nsubtrees."),(0,s.kt)("li",{parentName:"ol"},"Overall, if we were to represent the calls as a tree, we would get a full\nbinary tree of height ",(0,s.kt)("inlineCode",{parentName:"li"},"y"),", in each node we do some work in constant time,\ntherefore we can just sum the ones.")),(0,s.kt)("admonition",{type:"warning"},(0,s.kt)("p",{parentName:"admonition"},"It would've been more complicated to get an exact result. In the equation above\nwe are assuming that the width of the pyramid is bound by the height.")),(0,s.kt)("p",null,"Hopefully we can agree that this is not the best we can do. \ud83d\ude09"),(0,s.kt)("h2",{id:"greedy-solution"},"Greedy solution"),(0,s.kt)("p",null,"We will try to optimize it a bit. Let's start with a relatively simple ",(0,s.kt)("em",{parentName:"p"},"greedy"),"\napproach."),(0,s.kt)("admonition",{title:"Greedy algorithms",type:"info"},(0,s.kt)("p",{parentName:"admonition"},(0,s.kt)("em",{parentName:"p"},"Greedy algorithms")," can be described as algorithms that decide the action on the\noptimal option at the moment.")),(0,s.kt)("p",null,"We can try to adjust the na\xefve solution. The most problematic part are the\nrecursive calls. Let's apply the greedy approach there:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-java"},"public static int longestSlideDown(int[][] pyramid, int row, int col) {\n if (row == pyramid.length - 1) {\n // BASE: We're at the bottom\n return pyramid[row][col];\n }\n\n if (col + 1 >= pyramid[row + 1].length\n || pyramid[row + 1][col] > pyramid[row + 1][col + 1]) {\n // If we cannot go right or it's not feasible, we continue to the left.\n return pyramid[row][col] + longestSlideDown(pyramid, row + 1, col);\n }\n\n // Otherwise we just move to the right.\n return pyramid[row][col] + longestSlideDown(pyramid, row + 1, col + 1);\n}\n")),(0,s.kt)("p",null,"OK, if we cannot go right ",(0,s.kt)("strong",{parentName:"p"},"or")," the right path adds smaller value to the sum,\nwe simply go left."),(0,s.kt)("h3",{id:"time-complexity-1"},"Time complexity"),(0,s.kt)("p",null,"We have switched from ",(0,s.kt)("em",{parentName:"p"},"adding the maximum")," to ",(0,s.kt)("em",{parentName:"p"},"following the \u201cbigger\u201d path"),", so\nwe improved the time complexity tremendously. We just go down the pyramid all\nthe way to the bottom. Therefore we are getting:"),(0,s.kt)("div",{className:"math math-display"},(0,s.kt)("span",{parentName:"div",className:"katex-display"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mi",{parentName:"mrow",mathvariant:"script"},"O"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"("),(0,s.kt)("mi",{parentName:"mrow"},"r"),(0,s.kt)("mi",{parentName:"mrow"},"o"),(0,s.kt)("mi",{parentName:"mrow"},"w"),(0,s.kt)("mi",{parentName:"mrow"},"s"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},")")),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"\\mathcal{O}(rows)")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathcal",style:{marginRight:"0.02778em"}},"O"),(0,s.kt)("span",{parentName:"span",className:"mopen"},"("),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"ro"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.02691em"}},"w"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"s"),(0,s.kt)("span",{parentName:"span",className:"mclose"},")")))))),(0,s.kt)("p",null,"We have managed to convert our exponential solution into a linear one."),(0,s.kt)("h3",{id:"running-the-tests"},"Running the tests"),(0,s.kt)("p",null,"However, if we run the tests, we notice that the second test failed:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"},"Test #1: passed\nTest #2: failed\n")),(0,s.kt)("p",null,"What's going on? Well, we have improved the time complexity, but greedy\nalgorithms are not the ideal solution to ",(0,s.kt)("strong",{parentName:"p"},"all")," problems. In this case there\nmay be a solution that is bigger than the one found using the greedy algorithm."),(0,s.kt)("p",null,"Imagine the following pyramid:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"}," 1\n 2 3\n 5 6 7\n 8 9 10 11\n99 13 14 15 16\n")),(0,s.kt)("p",null,"We start at the top:"),(0,s.kt)("ol",null,(0,s.kt)("li",{parentName:"ol"},"Current cell: ",(0,s.kt)("inlineCode",{parentName:"li"},"1"),", we can choose from ",(0,s.kt)("inlineCode",{parentName:"li"},"2")," and ",(0,s.kt)("inlineCode",{parentName:"li"},"3"),", ",(0,s.kt)("inlineCode",{parentName:"li"},"3")," looks better, so we\nchoose it."),(0,s.kt)("li",{parentName:"ol"},"Current cell: ",(0,s.kt)("inlineCode",{parentName:"li"},"3"),", we can choose from ",(0,s.kt)("inlineCode",{parentName:"li"},"6")," and ",(0,s.kt)("inlineCode",{parentName:"li"},"7"),", ",(0,s.kt)("inlineCode",{parentName:"li"},"7")," looks better, so we\nchoose it."),(0,s.kt)("li",{parentName:"ol"},"Current cell: ",(0,s.kt)("inlineCode",{parentName:"li"},"7"),", we can choose from ",(0,s.kt)("inlineCode",{parentName:"li"},"10")," and ",(0,s.kt)("inlineCode",{parentName:"li"},"11"),", ",(0,s.kt)("inlineCode",{parentName:"li"},"11")," looks better, so we\nchoose it."),(0,s.kt)("li",{parentName:"ol"},"Current cell: ",(0,s.kt)("inlineCode",{parentName:"li"},"11"),", we can choose from ",(0,s.kt)("inlineCode",{parentName:"li"},"15")," and ",(0,s.kt)("inlineCode",{parentName:"li"},"16"),", ",(0,s.kt)("inlineCode",{parentName:"li"},"16")," looks better, so\nwe choose it.")),(0,s.kt)("p",null,"Our final sum is: ",(0,s.kt)("inlineCode",{parentName:"p"},"1 + 3 + 7 + 11 + 16 = 38"),", but in the bottom left cell we\nhave a ",(0,s.kt)("inlineCode",{parentName:"p"},"99")," that is bigger than our whole sum."),(0,s.kt)("admonition",{type:"tip"},(0,s.kt)("p",{parentName:"admonition"},"Dijkstra's algorithm is a greedy algorithm too, try to think why it is correct.")),(0,s.kt)("h2",{id:"top-down-dp"},"Top-down DP"),(0,s.kt)("p",null,(0,s.kt)("em",{parentName:"p"},"Top-down dynamic programming")," is probably the most common approach, since (at\nleast looks like) is the easiest to implement. The whole point is avoiding the\nunnecessary computations that we have already done."),(0,s.kt)("p",null,"In our case, we can use our na\xefve solution and put a ",(0,s.kt)("em",{parentName:"p"},"cache")," on top of it that\nwill make sure, we don't do unnecessary calculations."),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-java"},"// This \u201cstructure\u201d is required, since I have decided to use \u2039TreeMap\u203a which\n// requires the ordering on the keys. It represents one position in the pyramid.\nrecord Position(int row, int col) implements Comparable {\n public int compareTo(Position r) {\n if (row != r.row) {\n return Integer.valueOf(row).compareTo(r.row);\n }\n\n if (col != r.col) {\n return Integer.valueOf(col).compareTo(r.col);\n }\n\n return 0;\n }\n}\n\npublic static int longestSlideDown(\n int[][] pyramid,\n TreeMap cache,\n Position position) {\n int row = position.row;\n int col = position.col;\n\n if (row >= pyramid.length || col < 0 || col >= pyramid[row].length) {\n // BASE: out of bounds\n return Integer.MIN_VALUE;\n }\n\n if (row == pyramid.length - 1) {\n // BASE: bottom of the pyramid\n return pyramid[position.row][position.col];\n }\n\n if (!cache.containsKey(position)) {\n // We haven't computed the position yet, so we run the same \u201cformula\u201d as\n // in the na\xefve version \xbband\xab we put calculated slide into the cache.\n // Next time we want the slide down from given position, it will be just\n // retrieved from the cache.\n int slideDown = Math.max(\n longestSlideDown(pyramid, cache, new Position(row + 1, col)),\n longestSlideDown(pyramid, cache, new Position(row + 1, col + 1)));\n cache.put(position, pyramid[row][col] + slideDown);\n }\n\n return cache.get(position);\n}\n\npublic static int longestSlideDown(int[][] pyramid) {\n // At the beginning we need to create a cache and share it across the calls.\n TreeMap cache = new TreeMap<>();\n return longestSlideDown(pyramid, cache, new Position(0, 0));\n}\n")),(0,s.kt)("p",null,"You have probably noticed that ",(0,s.kt)("inlineCode",{parentName:"p"},"record Position")," have appeared. Since we are\ncaching the already computed values, we need a \u201creasonable\u201d key. In this case we\nshare the cache only for one ",(0,s.kt)("em",{parentName:"p"},"run")," (i.e. pyramid) of the ",(0,s.kt)("inlineCode",{parentName:"p"},"longestSlideDown"),", so\nwe can cache just with the indices within the pyramid, i.e. the ",(0,s.kt)("inlineCode",{parentName:"p"},"Position"),"."),(0,s.kt)("admonition",{title:"Record",type:"tip"},(0,s.kt)("p",{parentName:"admonition"},(0,s.kt)("em",{parentName:"p"},"Record")," is relatively new addition to the Java language. It is basically an\nimmutable structure with implicitly defined ",(0,s.kt)("inlineCode",{parentName:"p"},".equals()"),", ",(0,s.kt)("inlineCode",{parentName:"p"},".hashCode()"),",\n",(0,s.kt)("inlineCode",{parentName:"p"},".toString()")," and getters for the attributes.")),(0,s.kt)("p",null,"Because of the choice of ",(0,s.kt)("inlineCode",{parentName:"p"},"TreeMap"),", we had to additionally define the ordering\non it."),(0,s.kt)("p",null,"In the ",(0,s.kt)("inlineCode",{parentName:"p"},"longestSlideDown")," you can notice that the computation which used to be\nat the end of the na\xefve version above, is now wrapped in an ",(0,s.kt)("inlineCode",{parentName:"p"},"if")," statement that\nchecks for the presence of the position in the cache and computes the slide down\njust when it's needed."),(0,s.kt)("h3",{id:"time-complexity-2"},"Time complexity"),(0,s.kt)("p",null,"If you think that evaluating time complexity for this approach is a bit more\ntricky, you are right. Keeping the cache in mind, it is not the easiest thing\nto do. However there are some observations that might help us figure this out:"),(0,s.kt)("ol",null,(0,s.kt)("li",{parentName:"ol"},"Slide down from each position is calculated only once."),(0,s.kt)("li",{parentName:"ol"},"Once calculated, we use the result from the cache.")),(0,s.kt)("p",null,"Knowing this, we still cannot, at least easily, describe the time complexity of\nfinding the best slide down from a specific position, ",(0,s.kt)("strong",{parentName:"p"},"but")," we can bound it\nfrom above for the ",(0,s.kt)("strong",{parentName:"p"},"whole")," run from the top. Now the question is how we can do\nthat!"),(0,s.kt)("p",null,"Overall we are doing the same things for almost",(0,s.kt)("sup",{parentName:"p",id:"fnref-2"},(0,s.kt)("a",{parentName:"sup",href:"#fn-2",className:"footnote-ref"},"2"))," all of the positions within\nthe pyramid:"),(0,s.kt)("ol",null,(0,s.kt)("li",{parentName:"ol"},(0,s.kt)("p",{parentName:"li"},"We calculate and store it (using the partial results stored in cache). This\nis done only once."),(0,s.kt)("p",{parentName:"li"},"For each calculation we take 2 values from the cache and insert one value.\nBecause we have chosen ",(0,s.kt)("inlineCode",{parentName:"p"},"TreeMap"),", these 3 operations have logarithmic time\ncomplexity and therefore this step is equivalent to ",(0,s.kt)("span",{parentName:"p",className:"math math-inline"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mn",{parentName:"mrow"},"3"),(0,s.kt)("mo",{parentName:"mrow"},"\u22c5"),(0,s.kt)("msub",{parentName:"mrow"},(0,s.kt)("mrow",{parentName:"msub"},(0,s.kt)("mi",{parentName:"mrow"},"log"),(0,s.kt)("mo",{parentName:"mrow"},"\u2061")),(0,s.kt)("mn",{parentName:"msub"},"2")),(0,s.kt)("mi",{parentName:"mrow"},"n")),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"3 \\cdot \\log_2{n}")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"0.6444em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},"3"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"\u22c5"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}})),(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"0.9386em",verticalAlign:"-0.2441em"}}),(0,s.kt)("span",{parentName:"span",className:"mop"},(0,s.kt)("span",{parentName:"span",className:"mop"},"lo",(0,s.kt)("span",{parentName:"span",style:{marginRight:"0.01389em"}},"g")),(0,s.kt)("span",{parentName:"span",className:"msupsub"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.207em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-2.4559em",marginRight:"0.05em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"2.7em"}}),(0,s.kt)("span",{parentName:"span",className:"sizing reset-size6 size3 mtight"},(0,s.kt)("span",{parentName:"span",className:"mord mtight"},"2")))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.2441em"}},(0,s.kt)("span",{parentName:"span"})))))),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.1667em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n")))))),"."),(0,s.kt)("p",{parentName:"li"},"However for the sake of simplicity, we are going to account only for the\ninsertion, the reason is rather simple, if we include the 2 retrievals here,\nit will be interleaved with the next step, therefore it is easier to keep the\nretrievals in the following point."),(0,s.kt)("admonition",{parentName:"li",type:"caution"},(0,s.kt)("p",{parentName:"admonition"},"You might have noticed it's still not that easy, cause we're not having full\ncache right from the beginning, but the sum of those logarithms cannot be\nexpressed in a nice way, so taking the upper bound, i.e. expecting the cache\nto be full at all times, is the best option for nice and readable complexity\nof the whole approach.")),(0,s.kt)("p",{parentName:"li"},"Our final upper bound of this work is therefore ",(0,s.kt)("span",{parentName:"p",className:"math math-inline"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("msub",{parentName:"mrow"},(0,s.kt)("mrow",{parentName:"msub"},(0,s.kt)("mi",{parentName:"mrow"},"log"),(0,s.kt)("mo",{parentName:"mrow"},"\u2061")),(0,s.kt)("mn",{parentName:"msub"},"2")),(0,s.kt)("mi",{parentName:"mrow"},"n")),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"\\log_2{n}")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"0.9386em",verticalAlign:"-0.2441em"}}),(0,s.kt)("span",{parentName:"span",className:"mop"},(0,s.kt)("span",{parentName:"span",className:"mop"},"lo",(0,s.kt)("span",{parentName:"span",style:{marginRight:"0.01389em"}},"g")),(0,s.kt)("span",{parentName:"span",className:"msupsub"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.207em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-2.4559em",marginRight:"0.05em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"2.7em"}}),(0,s.kt)("span",{parentName:"span",className:"sizing reset-size6 size3 mtight"},(0,s.kt)("span",{parentName:"span",className:"mord mtight"},"2")))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.2441em"}},(0,s.kt)("span",{parentName:"span"})))))),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.1667em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n")))))),".")),(0,s.kt)("li",{parentName:"ol"},(0,s.kt)("p",{parentName:"li"},"We retrieve it from the cache. Same as in first point, but only twice, so we\nget ",(0,s.kt)("span",{parentName:"p",className:"math math-inline"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mn",{parentName:"mrow"},"2"),(0,s.kt)("mo",{parentName:"mrow"},"\u22c5"),(0,s.kt)("msub",{parentName:"mrow"},(0,s.kt)("mrow",{parentName:"msub"},(0,s.kt)("mi",{parentName:"mrow"},"log"),(0,s.kt)("mo",{parentName:"mrow"},"\u2061")),(0,s.kt)("mn",{parentName:"msub"},"2")),(0,s.kt)("mi",{parentName:"mrow"},"n")),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"2 \\cdot \\log_2{n}")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"0.6444em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},"2"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"\u22c5"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}})),(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"0.9386em",verticalAlign:"-0.2441em"}}),(0,s.kt)("span",{parentName:"span",className:"mop"},(0,s.kt)("span",{parentName:"span",className:"mop"},"lo",(0,s.kt)("span",{parentName:"span",style:{marginRight:"0.01389em"}},"g")),(0,s.kt)("span",{parentName:"span",className:"msupsub"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.207em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-2.4559em",marginRight:"0.05em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"2.7em"}}),(0,s.kt)("span",{parentName:"span",className:"sizing reset-size6 size3 mtight"},(0,s.kt)("span",{parentName:"span",className:"mord mtight"},"2")))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.2441em"}},(0,s.kt)("span",{parentName:"span"})))))),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.1667em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n")))))),". "),(0,s.kt)("admonition",{parentName:"li",type:"caution"},(0,s.kt)("p",{parentName:"admonition"},"It's done twice because of the ",(0,s.kt)("inlineCode",{parentName:"p"},".containsKey()")," in the ",(0,s.kt)("inlineCode",{parentName:"p"},"if")," condition.")))),(0,s.kt)("p",null,"Okay, we have evaluated work done for each of the cells in the pyramid and now\nwe need to put it together."),(0,s.kt)("p",null,"Let's split the time complexity of our solution into two operands:"),(0,s.kt)("div",{className:"math math-display"},(0,s.kt)("span",{parentName:"div",className:"katex-display"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mi",{parentName:"mrow",mathvariant:"script"},"O"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"("),(0,s.kt)("mi",{parentName:"mrow"},"r"),(0,s.kt)("mo",{parentName:"mrow"},"+"),(0,s.kt)("mi",{parentName:"mrow"},"s"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},")")),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"\\mathcal{O}(r + s)")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathcal",style:{marginRight:"0.02778em"}},"O"),(0,s.kt)("span",{parentName:"span",className:"mopen"},"("),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.02778em"}},"r"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"+"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}})),(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"s"),(0,s.kt)("span",{parentName:"span",className:"mclose"},")")))))),(0,s.kt)("p",null,(0,s.kt)("span",{parentName:"p",className:"math math-inline"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mi",{parentName:"mrow"},"r")),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"r")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"0.4306em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.02778em"}},"r")))))," will represent the ",(0,s.kt)("em",{parentName:"p"},"actual")," calculation of the cells and ",(0,s.kt)("span",{parentName:"p",className:"math math-inline"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mi",{parentName:"mrow"},"s")),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"s")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"0.4306em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"s")))))," will represent\nthe additional retrievals on top of the calculation."),(0,s.kt)("p",null,"We calculate the values only ",(0,s.kt)("strong",{parentName:"p"},"once"),", therefore we can safely agree on:"),(0,s.kt)("div",{className:"math math-display"},(0,s.kt)("span",{parentName:"div",className:"katex-display"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mtable",{parentName:"semantics",rowspacing:"0.25em",columnalign:"right left",columnspacing:"0em"},(0,s.kt)("mtr",{parentName:"mtable"},(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"true"},(0,s.kt)("mi",{parentName:"mstyle"},"r"))),(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"true"},(0,s.kt)("mrow",{parentName:"mstyle"},(0,s.kt)("mrow",{parentName:"mrow"}),(0,s.kt)("mo",{parentName:"mrow"},"="),(0,s.kt)("mi",{parentName:"mrow"},"n"),(0,s.kt)("mo",{parentName:"mrow"},"\u22c5"),(0,s.kt)("mi",{parentName:"mrow"},"log"),(0,s.kt)("mo",{parentName:"mrow"},"\u2061"),(0,s.kt)("mi",{parentName:"mrow"},"n")))))),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"\\begin{align*} r &= n \\cdot \\log{n} \\\\ \\end{align*}")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1.5em",verticalAlign:"-0.5em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mtable"},(0,s.kt)("span",{parentName:"span",className:"col-align-r"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"1em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-3.16em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.02778em"}},"r")))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.5em"}},(0,s.kt)("span",{parentName:"span"}))))),(0,s.kt)("span",{parentName:"span",className:"col-align-l"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"1em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-3.16em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord"}),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}}),(0,s.kt)("span",{parentName:"span",className:"mrel"},"="),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"\u22c5"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mop"},"lo",(0,s.kt)("span",{parentName:"span",style:{marginRight:"0.01389em"}},"g")),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.1667em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n"))))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"0.5em"}},(0,s.kt)("span",{parentName:"span"})))))))))))),(0,s.kt)("p",null,"What about the ",(0,s.kt)("span",{parentName:"p",className:"math math-inline"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mi",{parentName:"mrow"},"s")),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"s")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"0.4306em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"s")))))," though? Key observation here is the fact that we have 2\nlookups on the tree in each of them ",(0,s.kt)("strong",{parentName:"p"},"and")," we do it twice, cause each cell has\nat most 2 parents:"),(0,s.kt)("div",{className:"math math-display"},(0,s.kt)("span",{parentName:"div",className:"katex-display"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mtable",{parentName:"semantics",rowspacing:"0.25em",columnalign:"right left",columnspacing:"0em"},(0,s.kt)("mtr",{parentName:"mtable"},(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"true"},(0,s.kt)("mi",{parentName:"mstyle"},"s"))),(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"true"},(0,s.kt)("mrow",{parentName:"mstyle"},(0,s.kt)("mrow",{parentName:"mrow"}),(0,s.kt)("mo",{parentName:"mrow"},"="),(0,s.kt)("mi",{parentName:"mrow"},"n"),(0,s.kt)("mo",{parentName:"mrow"},"\u22c5"),(0,s.kt)("mn",{parentName:"mrow"},"2"),(0,s.kt)("mo",{parentName:"mrow"},"\u22c5"),(0,s.kt)("mrow",{parentName:"mrow"},(0,s.kt)("mo",{parentName:"mrow",fence:"true"},"("),(0,s.kt)("mn",{parentName:"mrow"},"2"),(0,s.kt)("mo",{parentName:"mrow"},"\u22c5"),(0,s.kt)("mi",{parentName:"mrow"},"log"),(0,s.kt)("mo",{parentName:"mrow"},"\u2061"),(0,s.kt)("mi",{parentName:"mrow"},"n"),(0,s.kt)("mo",{parentName:"mrow",fence:"true"},")")))))),(0,s.kt)("mtr",{parentName:"mtable"},(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"true"},(0,s.kt)("mi",{parentName:"mstyle"},"s"))),(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"true"},(0,s.kt)("mrow",{parentName:"mstyle"},(0,s.kt)("mrow",{parentName:"mrow"}),(0,s.kt)("mo",{parentName:"mrow"},"="),(0,s.kt)("mn",{parentName:"mrow"},"4"),(0,s.kt)("mo",{parentName:"mrow"},"\u22c5"),(0,s.kt)("mi",{parentName:"mrow"},"n"),(0,s.kt)("mo",{parentName:"mrow"},"\u22c5"),(0,s.kt)("mi",{parentName:"mrow"},"log"),(0,s.kt)("mo",{parentName:"mrow"},"\u2061"),(0,s.kt)("mi",{parentName:"mrow"},"n")))))),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"\\begin{align*} s &= n \\cdot 2 \\cdot \\left( 2 \\cdot \\log{n} \\right) \\\\ s &= 4 \\cdot n \\cdot \\log{n} \\end{align*}")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"3em",verticalAlign:"-1.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mtable"},(0,s.kt)("span",{parentName:"span",className:"col-align-r"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"1.75em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-3.91em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"s"))),(0,s.kt)("span",{parentName:"span",style:{top:"-2.41em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"s")))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"1.25em"}},(0,s.kt)("span",{parentName:"span"}))))),(0,s.kt)("span",{parentName:"span",className:"col-align-l"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"1.75em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-3.91em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord"}),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}}),(0,s.kt)("span",{parentName:"span",className:"mrel"},"="),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"\u22c5"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},"2"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"\u22c5"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"minner"},(0,s.kt)("span",{parentName:"span",className:"mopen delimcenter",style:{top:"0em"}},"("),(0,s.kt)("span",{parentName:"span",className:"mord"},"2"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"\u22c5"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mop"},"lo",(0,s.kt)("span",{parentName:"span",style:{marginRight:"0.01389em"}},"g")),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.1667em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n")),(0,s.kt)("span",{parentName:"span",className:"mclose delimcenter",style:{top:"0em"}},")")))),(0,s.kt)("span",{parentName:"span",style:{top:"-2.41em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord"}),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}}),(0,s.kt)("span",{parentName:"span",className:"mrel"},"="),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},"4"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"\u22c5"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"\u22c5"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mop"},"lo",(0,s.kt)("span",{parentName:"span",style:{marginRight:"0.01389em"}},"g")),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.1667em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n"))))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"1.25em"}},(0,s.kt)("span",{parentName:"span"})))))))))))),(0,s.kt)("admonition",{type:"tip"},(0,s.kt)("p",{parentName:"admonition"},"You might've noticed that lookups actually take more time than the construction\nof the results. This is not entirely true, since we have included the\n",(0,s.kt)("inlineCode",{parentName:"p"},".containsKey()")," and ",(0,s.kt)("inlineCode",{parentName:"p"},".get()")," from the ",(0,s.kt)("inlineCode",{parentName:"p"},"return")," statement in the second part."),(0,s.kt)("p",{parentName:"admonition"},"If we were to represent this more precisely, we could've gone with:"),(0,s.kt)("div",{parentName:"admonition",className:"math math-display"},(0,s.kt)("span",{parentName:"div",className:"katex-display"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mtable",{parentName:"semantics",rowspacing:"0.25em",columnalign:"right left",columnspacing:"0em"},(0,s.kt)("mtr",{parentName:"mtable"},(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"true"},(0,s.kt)("mi",{parentName:"mstyle"},"r"))),(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"true"},(0,s.kt)("mrow",{parentName:"mstyle"},(0,s.kt)("mrow",{parentName:"mrow"}),(0,s.kt)("mo",{parentName:"mrow"},"="),(0,s.kt)("mn",{parentName:"mrow"},"3"),(0,s.kt)("mo",{parentName:"mrow"},"\u22c5"),(0,s.kt)("mi",{parentName:"mrow"},"n"),(0,s.kt)("mo",{parentName:"mrow"},"\u22c5"),(0,s.kt)("mi",{parentName:"mrow"},"log"),(0,s.kt)("mo",{parentName:"mrow"},"\u2061"),(0,s.kt)("mi",{parentName:"mrow"},"n"))))),(0,s.kt)("mtr",{parentName:"mtable"},(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"true"},(0,s.kt)("mi",{parentName:"mstyle"},"s"))),(0,s.kt)("mtd",{parentName:"mtr"},(0,s.kt)("mstyle",{parentName:"mtd",scriptlevel:"0",displaystyle:"true"},(0,s.kt)("mrow",{parentName:"mstyle"},(0,s.kt)("mrow",{parentName:"mrow"}),(0,s.kt)("mo",{parentName:"mrow"},"="),(0,s.kt)("mn",{parentName:"mrow"},"2"),(0,s.kt)("mo",{parentName:"mrow"},"\u22c5"),(0,s.kt)("mi",{parentName:"mrow"},"n"),(0,s.kt)("mo",{parentName:"mrow"},"\u22c5"),(0,s.kt)("mi",{parentName:"mrow"},"log"),(0,s.kt)("mo",{parentName:"mrow"},"\u2061"),(0,s.kt)("mi",{parentName:"mrow"},"n")))))),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"\\begin{align*} r &= 3 \\cdot n \\cdot \\log{n} \\\\ s &= 2 \\cdot n \\cdot \\log{n} \\end{align*}")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"3em",verticalAlign:"-1.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mtable"},(0,s.kt)("span",{parentName:"span",className:"col-align-r"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"1.75em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-3.91em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.02778em"}},"r"))),(0,s.kt)("span",{parentName:"span",style:{top:"-2.41em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"s")))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"1.25em"}},(0,s.kt)("span",{parentName:"span"}))))),(0,s.kt)("span",{parentName:"span",className:"col-align-l"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"1.75em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-3.91em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord"}),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}}),(0,s.kt)("span",{parentName:"span",className:"mrel"},"="),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},"3"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"\u22c5"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"\u22c5"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mop"},"lo",(0,s.kt)("span",{parentName:"span",style:{marginRight:"0.01389em"}},"g")),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.1667em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n")))),(0,s.kt)("span",{parentName:"span",style:{top:"-2.41em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord"}),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}}),(0,s.kt)("span",{parentName:"span",className:"mrel"},"="),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2778em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},"2"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"\u22c5"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"\u22c5"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mop"},"lo",(0,s.kt)("span",{parentName:"span",style:{marginRight:"0.01389em"}},"g")),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.1667em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n"))))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"1.25em"}},(0,s.kt)("span",{parentName:"span"})))))))))))),(0,s.kt)("p",{parentName:"admonition"},"On the other hand we are summing both numbers together, therefore in the end it\ndoesn't really matter."),(0,s.kt)("p",{parentName:"admonition"},"(",(0,s.kt)("em",{parentName:"p"},"Feel free to compare the sums of both \u201csplits\u201d."),")")),(0,s.kt)("p",null,"And so our final time complexity for the whole ",(0,s.kt)("em",{parentName:"p"},"top-down dynamic programming"),"\napproach is:"),(0,s.kt)("div",{className:"math math-display"},(0,s.kt)("span",{parentName:"div",className:"katex-display"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mi",{parentName:"mrow",mathvariant:"script"},"O"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"("),(0,s.kt)("mi",{parentName:"mrow"},"r"),(0,s.kt)("mo",{parentName:"mrow"},"+"),(0,s.kt)("mi",{parentName:"mrow"},"s"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},")"),(0,s.kt)("mspace",{parentName:"mrow",linebreak:"newline"}),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"script"},"O"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"("),(0,s.kt)("mi",{parentName:"mrow"},"n"),(0,s.kt)("mo",{parentName:"mrow"},"\u22c5"),(0,s.kt)("mi",{parentName:"mrow"},"log"),(0,s.kt)("mo",{parentName:"mrow"},"\u2061"),(0,s.kt)("mi",{parentName:"mrow"},"n"),(0,s.kt)("mo",{parentName:"mrow"},"+"),(0,s.kt)("mn",{parentName:"mrow"},"4"),(0,s.kt)("mo",{parentName:"mrow"},"\u22c5"),(0,s.kt)("mi",{parentName:"mrow"},"n"),(0,s.kt)("mo",{parentName:"mrow"},"\u22c5"),(0,s.kt)("mi",{parentName:"mrow"},"log"),(0,s.kt)("mo",{parentName:"mrow"},"\u2061"),(0,s.kt)("mi",{parentName:"mrow"},"n"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},")"),(0,s.kt)("mspace",{parentName:"mrow",linebreak:"newline"}),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"script"},"O"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"("),(0,s.kt)("mn",{parentName:"mrow"},"5"),(0,s.kt)("mo",{parentName:"mrow"},"\u22c5"),(0,s.kt)("mi",{parentName:"mrow"},"n"),(0,s.kt)("mo",{parentName:"mrow"},"\u22c5"),(0,s.kt)("mi",{parentName:"mrow"},"log"),(0,s.kt)("mo",{parentName:"mrow"},"\u2061"),(0,s.kt)("mi",{parentName:"mrow"},"n"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},")"),(0,s.kt)("mspace",{parentName:"mrow",linebreak:"newline"}),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"script"},"O"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"("),(0,s.kt)("mi",{parentName:"mrow"},"n"),(0,s.kt)("mo",{parentName:"mrow"},"\u22c5"),(0,s.kt)("mi",{parentName:"mrow"},"log"),(0,s.kt)("mo",{parentName:"mrow"},"\u2061"),(0,s.kt)("mi",{parentName:"mrow"},"n"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},")")),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"\\mathcal{O}(r + s) \\\\ \\mathcal{O}(n \\cdot \\log{n} + 4 \\cdot n \\cdot \\log{n}) \\\\ \\mathcal{O}(5 \\cdot n \\cdot \\log{n}) \\\\ \\mathcal{O}(n \\cdot \\log{n})")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathcal",style:{marginRight:"0.02778em"}},"O"),(0,s.kt)("span",{parentName:"span",className:"mopen"},"("),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.02778em"}},"r"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"+"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}})),(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"s"),(0,s.kt)("span",{parentName:"span",className:"mclose"},")")),(0,s.kt)("span",{parentName:"span",className:"mspace newline"}),(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathcal",style:{marginRight:"0.02778em"}},"O"),(0,s.kt)("span",{parentName:"span",className:"mopen"},"("),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"\u22c5"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}})),(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"0.8889em",verticalAlign:"-0.1944em"}}),(0,s.kt)("span",{parentName:"span",className:"mop"},"lo",(0,s.kt)("span",{parentName:"span",style:{marginRight:"0.01389em"}},"g")),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.1667em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n")),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"+"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}})),(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"0.6444em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},"4"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"\u22c5"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}})),(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"0.4445em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"\u22c5"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}})),(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mop"},"lo",(0,s.kt)("span",{parentName:"span",style:{marginRight:"0.01389em"}},"g")),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.1667em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n")),(0,s.kt)("span",{parentName:"span",className:"mclose"},")")),(0,s.kt)("span",{parentName:"span",className:"mspace newline"}),(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathcal",style:{marginRight:"0.02778em"}},"O"),(0,s.kt)("span",{parentName:"span",className:"mopen"},"("),(0,s.kt)("span",{parentName:"span",className:"mord"},"5"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"\u22c5"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}})),(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"0.4445em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"\u22c5"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}})),(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mop"},"lo",(0,s.kt)("span",{parentName:"span",style:{marginRight:"0.01389em"}},"g")),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.1667em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n")),(0,s.kt)("span",{parentName:"span",className:"mclose"},")")),(0,s.kt)("span",{parentName:"span",className:"mspace newline"}),(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathcal",style:{marginRight:"0.02778em"}},"O"),(0,s.kt)("span",{parentName:"span",className:"mopen"},"("),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"\u22c5"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}})),(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mop"},"lo",(0,s.kt)("span",{parentName:"span",style:{marginRight:"0.01389em"}},"g")),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.1667em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n")),(0,s.kt)("span",{parentName:"span",className:"mclose"},")")))))),(0,s.kt)("p",null,"As you can see, this is worse than our ",(0,s.kt)("em",{parentName:"p"},"greedy")," solution that was incorrect, but\nit's better than the ",(0,s.kt)("em",{parentName:"p"},"na\xefve")," one."),(0,s.kt)("h3",{id:"memory-complexity"},"Memory complexity"),(0,s.kt)("p",null,"With this approach we need to talk about the memory complexity too, because we\nhave introduced cache. If you think that the memory complexity is linear to the\ninput, you are right. We start at the top and try to find each and every slide\ndown. At the end we get the final result for ",(0,s.kt)("inlineCode",{parentName:"p"},"new Position(0, 0)"),", so we need to\ncompute everything below."),(0,s.kt)("p",null,"That's how we obtain:"),(0,s.kt)("div",{className:"math math-display"},(0,s.kt)("span",{parentName:"div",className:"katex-display"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mi",{parentName:"mrow",mathvariant:"script"},"O"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"("),(0,s.kt)("mi",{parentName:"mrow"},"n"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},")")),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"\\mathcal{O}(n)")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathcal",style:{marginRight:"0.02778em"}},"O"),(0,s.kt)("span",{parentName:"span",className:"mopen"},"("),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n"),(0,s.kt)("span",{parentName:"span",className:"mclose"},")")))))),(0,s.kt)("p",null,(0,s.kt)("span",{parentName:"p",className:"math math-inline"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mi",{parentName:"mrow"},"n")),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"n")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"0.4306em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n")))))," represents the total amount of cells in the pyramid, i.e."),(0,s.kt)("div",{className:"math math-display"},(0,s.kt)("span",{parentName:"div",className:"katex-display"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("munderover",{parentName:"mrow"},(0,s.kt)("mo",{parentName:"munderover"},"\u2211"),(0,s.kt)("mrow",{parentName:"munderover"},(0,s.kt)("mi",{parentName:"mrow"},"y"),(0,s.kt)("mo",{parentName:"mrow"},"="),(0,s.kt)("mn",{parentName:"mrow"},"0")),(0,s.kt)("mrow",{parentName:"munderover"},(0,s.kt)("mrow",{parentName:"mrow"},(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"p"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"y"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"r"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"a"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"m"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"i"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"d"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"."),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"l"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"e"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"n"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"g"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"t"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"h")),(0,s.kt)("mo",{parentName:"mrow"},"\u2212"),(0,s.kt)("mn",{parentName:"mrow"},"1"))),(0,s.kt)("mrow",{parentName:"mrow"},(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"p"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"y"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"r"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"a"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"m"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"i"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"d")),(0,s.kt)("mrow",{parentName:"mrow"},(0,s.kt)("mo",{parentName:"mrow",fence:"true"},"["),(0,s.kt)("mi",{parentName:"mrow"},"y"),(0,s.kt)("mo",{parentName:"mrow",fence:"true"},"]")),(0,s.kt)("mrow",{parentName:"mrow"},(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"."),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"l"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"e"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"n"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"g"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"t"),(0,s.kt)("mi",{parentName:"mrow",mathvariant:"monospace"},"h"))),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"\\sum_{y=0}^{\\mathtt{pyramid.length} - 1} \\mathtt{pyramid}\\left[y\\right]\\mathtt{.length}")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"3.2709em",verticalAlign:"-1.4032em"}}),(0,s.kt)("span",{parentName:"span",className:"mop op-limits"},(0,s.kt)("span",{parentName:"span",className:"vlist-t vlist-t2"},(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"1.8677em"}},(0,s.kt)("span",{parentName:"span",style:{top:"-1.8829em",marginLeft:"0em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3.05em"}}),(0,s.kt)("span",{parentName:"span",className:"sizing reset-size6 size3 mtight"},(0,s.kt)("span",{parentName:"span",className:"mord mtight"},(0,s.kt)("span",{parentName:"span",className:"mord mathnormal mtight",style:{marginRight:"0.03588em"}},"y"),(0,s.kt)("span",{parentName:"span",className:"mrel mtight"},"="),(0,s.kt)("span",{parentName:"span",className:"mord mtight"},"0")))),(0,s.kt)("span",{parentName:"span",style:{top:"-3.05em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3.05em"}}),(0,s.kt)("span",{parentName:"span"},(0,s.kt)("span",{parentName:"span",className:"mop op-symbol large-op"},"\u2211"))),(0,s.kt)("span",{parentName:"span",style:{top:"-4.3666em",marginLeft:"0em"}},(0,s.kt)("span",{parentName:"span",className:"pstrut",style:{height:"3.05em"}}),(0,s.kt)("span",{parentName:"span",className:"sizing reset-size6 size3 mtight"},(0,s.kt)("span",{parentName:"span",className:"mord mtight"},(0,s.kt)("span",{parentName:"span",className:"mord mtight"},(0,s.kt)("span",{parentName:"span",className:"mord mathtt mtight"},"pyramid.length")),(0,s.kt)("span",{parentName:"span",className:"mbin mtight"},"\u2212"),(0,s.kt)("span",{parentName:"span",className:"mord mtight"},"1"))))),(0,s.kt)("span",{parentName:"span",className:"vlist-s"},"\u200b")),(0,s.kt)("span",{parentName:"span",className:"vlist-r"},(0,s.kt)("span",{parentName:"span",className:"vlist",style:{height:"1.4032em"}},(0,s.kt)("span",{parentName:"span"}))))),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.1667em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathtt"},"pyramid")),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.1667em"}}),(0,s.kt)("span",{parentName:"span",className:"minner"},(0,s.kt)("span",{parentName:"span",className:"mopen delimcenter",style:{top:"0em"}},"["),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.03588em"}},"y"),(0,s.kt)("span",{parentName:"span",className:"mclose delimcenter",style:{top:"0em"}},"]")),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.1667em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},(0,s.kt)("span",{parentName:"span",className:"mord mathtt"},".length"))))))),(0,s.kt)("admonition",{type:"caution"},(0,s.kt)("p",{parentName:"admonition"},"If you're wondering whether it's correct because of the second ",(0,s.kt)("inlineCode",{parentName:"p"},"if")," in our\nfunction, your guess is right. However we are expressing the complexity in the\nBachmann-Landau notation, so we care about the ",(0,s.kt)("strong",{parentName:"p"},"upper bound"),", not the exact\nnumber.")),(0,s.kt)("admonition",{title:"Can this be optimized?",type:"tip"},(0,s.kt)("p",{parentName:"admonition"},"Yes, it can! Try to think about a way, how can you minimize the memory\ncomplexity of this approach. I'll give you a hint:"),(0,s.kt)("div",{parentName:"admonition",className:"math math-display"},(0,s.kt)("span",{parentName:"div",className:"katex-display"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mi",{parentName:"mrow",mathvariant:"script"},"O"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"("),(0,s.kt)("mi",{parentName:"mrow"},"r"),(0,s.kt)("mi",{parentName:"mrow"},"o"),(0,s.kt)("mi",{parentName:"mrow"},"w"),(0,s.kt)("mi",{parentName:"mrow"},"s"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},")")),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"\\mathcal{O}(rows)")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathcal",style:{marginRight:"0.02778em"}},"O"),(0,s.kt)("span",{parentName:"span",className:"mopen"},"("),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"ro"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.02691em"}},"w"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"s"),(0,s.kt)("span",{parentName:"span",className:"mclose"},")"))))))),(0,s.kt)("h2",{id:"bottom-up-dp"},"Bottom-up DP"),(0,s.kt)("p",null,"If you try to think in depth about the top-down DP solution, you might notice\nthat the ",(0,s.kt)("em",{parentName:"p"},"core")," of it stands on caching the calculations that have been already\ndone on the lower \u201clevels\u201d of the pyramid. Our bottom-up implementation will be\nusing this fact!"),(0,s.kt)("admonition",{type:"tip"},(0,s.kt)("p",{parentName:"admonition"},"As I have said in the ",(0,s.kt)("em",{parentName:"p"},"top-down DP")," section, it is the easiest way to implement\nDP (unless the cached function has complicated parameters, in that case it might\nget messy)."),(0,s.kt)("p",{parentName:"admonition"},"Bottom-up dynamic programming can be more effective, but may be more complicated\nto implement right from the beginning.")),(0,s.kt)("p",null,"Let's see how we can implement it:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-java"},"public static int longestSlideDown(int[][] pyramid) {\n // In the beginning we declare new array. At this point it is easier to just\n // work with the one dimension, i.e. just allocating the space for the rows.\n int[][] slideDowns = new int[pyramid.length][];\n\n // Bottom row gets just copied, there's nothing else to do\u2026 It's the base\n // case.\n slideDowns[pyramid.length - 1] = Arrays.copyOf(pyramid[pyramid.length - 1],\n pyramid[pyramid.length - 1].length);\n\n // Then we need to propagate the found slide downs for each of the levels\n // above.\n for (int y = pyramid.length - 2; y >= 0; --y) {\n // We start by copying the values lying in the row we're processing.\n // They get included in the final sum and we need to allocate the space\n // for the precalculated slide downs anyways.\n int[] row = Arrays.copyOf(pyramid[y], pyramid[y].length);\n\n // At this we just need to \u201cfetch\u201d the partial results from \u201cneighbours\u201d\n for (int x = 0; x < row.length; ++x) {\n // We look under our position, since we expect the rows to get\n // shorter, we can safely assume such position exists.\n int under = slideDowns[y + 1][x];\n\n // Then we have a look to the right, such position doesn't have to\n // exist, e.g. on the right edge, so we validate the index, and if\n // it doesn't exist, we just assign minimum of the \u2039int\u203a which makes\n // sure that it doesn't get picked in the \u2039Math.max()\u203a call.\n int toRight = x + 1 < slideDowns[y + 1].length\n ? slideDowns[y + 1][x + 1]\n : Integer.MIN_VALUE;\n\n // Finally we add the best choice at this point.\n row[x] += Math.max(under, toRight);\n }\n\n // And save the row we've just calculated partial results for to the\n // \u201ctable\u201d.\n slideDowns[y] = row;\n }\n\n // At the end we can find our seeked slide down at the top cell.\n return slideDowns[0][0];\n}\n")),(0,s.kt)("p",null,"I've tried to explain the code as much as possible within the comments, since it\nmight be more beneficial to see right next to the \u201coffending\u201d lines."),(0,s.kt)("p",null,"As you can see, in this approach we go from the other side",(0,s.kt)("sup",{parentName:"p",id:"fnref-3"},(0,s.kt)("a",{parentName:"sup",href:"#fn-3",className:"footnote-ref"},"3")),", the bottom of\nthe pyramid and propagate the partial results up."),(0,s.kt)("admonition",{type:"info"},(0,s.kt)("mdxAdmonitionTitle",{parentName:"admonition"},"How is this different from the ",(0,s.kt)("em",{parentName:"mdxAdmonitionTitle"},"greedy")," solution???"),(0,s.kt)("p",{parentName:"admonition"},"If you try to compare them, you might find a very noticable difference. The\ngreedy approach is going from the top to the bottom without ",(0,s.kt)("strong",{parentName:"p"},"any")," knowledge of\nwhat's going on below. On the other hand, bottom-up DP is going from the bottom\n(",(0,s.kt)("em",{parentName:"p"},"DUH\u2026"),") and ",(0,s.kt)("strong",{parentName:"p"},"propagates")," the partial results to the top. The propagation is\nwhat makes sure that at the top I don't choose the best ",(0,s.kt)("strong",{parentName:"p"},"local")," choice, but\nthe best ",(0,s.kt)("strong",{parentName:"p"},"overall")," result I can achieve.")),(0,s.kt)("h3",{id:"time-complexity-3"},"Time complexity"),(0,s.kt)("p",null,"Time complexity of this solution is rather simple. We allocate an array for the\nrows and then for each row, we copy it and adjust the partial results. Doing\nthis we get:"),(0,s.kt)("div",{className:"math math-display"},(0,s.kt)("span",{parentName:"div",className:"katex-display"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mi",{parentName:"mrow",mathvariant:"script"},"O"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"("),(0,s.kt)("mi",{parentName:"mrow"},"r"),(0,s.kt)("mi",{parentName:"mrow"},"o"),(0,s.kt)("mi",{parentName:"mrow"},"w"),(0,s.kt)("mi",{parentName:"mrow"},"s"),(0,s.kt)("mo",{parentName:"mrow"},"+"),(0,s.kt)("mn",{parentName:"mrow"},"2"),(0,s.kt)("mi",{parentName:"mrow"},"n"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},")")),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"\\mathcal{O}(rows + 2n)")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathcal",style:{marginRight:"0.02778em"}},"O"),(0,s.kt)("span",{parentName:"span",className:"mopen"},"("),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"ro"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal",style:{marginRight:"0.02691em"}},"w"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"s"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}}),(0,s.kt)("span",{parentName:"span",className:"mbin"},"+"),(0,s.kt)("span",{parentName:"span",className:"mspace",style:{marginRight:"0.2222em"}})),(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord"},"2"),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n"),(0,s.kt)("span",{parentName:"span",className:"mclose"},")")))))),(0,s.kt)("p",null,"Of course, this is an upper bound, since we iterate through the bottom row only\nonce."),(0,s.kt)("h3",{id:"memory-complexity-1"},"Memory complexity"),(0,s.kt)("p",null,"We're allocating an array for the pyramid ",(0,s.kt)("strong",{parentName:"p"},"again")," for our partial results, so\nwe get:"),(0,s.kt)("div",{className:"math math-display"},(0,s.kt)("span",{parentName:"div",className:"katex-display"},(0,s.kt)("span",{parentName:"span",className:"katex"},(0,s.kt)("span",{parentName:"span",className:"katex-mathml"},(0,s.kt)("math",{parentName:"span",xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},(0,s.kt)("semantics",{parentName:"math"},(0,s.kt)("mrow",{parentName:"semantics"},(0,s.kt)("mi",{parentName:"mrow",mathvariant:"script"},"O"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},"("),(0,s.kt)("mi",{parentName:"mrow"},"n"),(0,s.kt)("mo",{parentName:"mrow",stretchy:"false"},")")),(0,s.kt)("annotation",{parentName:"semantics",encoding:"application/x-tex"},"\\mathcal{O}(n)")))),(0,s.kt)("span",{parentName:"span",className:"katex-html","aria-hidden":"true"},(0,s.kt)("span",{parentName:"span",className:"base"},(0,s.kt)("span",{parentName:"span",className:"strut",style:{height:"1em",verticalAlign:"-0.25em"}}),(0,s.kt)("span",{parentName:"span",className:"mord mathcal",style:{marginRight:"0.02778em"}},"O"),(0,s.kt)("span",{parentName:"span",className:"mopen"},"("),(0,s.kt)("span",{parentName:"span",className:"mord mathnormal"},"n"),(0,s.kt)("span",{parentName:"span",className:"mclose"},")")))))),(0,s.kt)("admonition",{type:"tip"},(0,s.kt)("p",{parentName:"admonition"},"If we were writing this in C++ or Rust, we could've avoided that, but not\nreally."),(0,s.kt)("p",{parentName:"admonition"},"C++ would allow us to ",(0,s.kt)("strong",{parentName:"p"},"copy")," the pyramid rightaway into the parameter, so we\nwould be able to directly change it. However it's still a copy, even though we\ndon't need to allocate anything ourselves. It's just implicitly done for us."),(0,s.kt)("p",{parentName:"admonition"},"Rust is more funny in this case. If the pyramids weren't used after the call of\n",(0,s.kt)("inlineCode",{parentName:"p"},"longest_slide_down"),", it would simply ",(0,s.kt)("strong",{parentName:"p"},"move")," them into the functions. If they\nwere used afterwards, the compiler would force you to either borrow it, or\n",(0,s.kt)("em",{parentName:"p"},"clone-and-move")," for the function."),(0,s.kt)("hr",{parentName:"admonition"}),(0,s.kt)("p",{parentName:"admonition"},"Since we're doing it in Java, we get a reference to the ",(0,s.kt)("em",{parentName:"p"},"original")," array and we\ncan't do whatever we want with it.")),(0,s.kt)("h2",{id:"summary"},"Summary"),(0,s.kt)("p",null,"And we've finally reached the end. We have seen 4 different \u201csolutions\u201d",(0,s.kt)("sup",{parentName:"p",id:"fnref-4"},(0,s.kt)("a",{parentName:"sup",href:"#fn-4",className:"footnote-ref"},"4"))," of\nthe same problem using different approaches. Different approaches follow the\norder in which you might come up with them, each approach influences its\nsuccessor and represents the way we can enhance the existing implementation."),(0,s.kt)("hr",null),(0,s.kt)("admonition",{title:"source",type:"info"},(0,s.kt)("p",{parentName:"admonition"},"You can find source code referenced in the text\n",(0,s.kt)("a",{parentName:"p",href:"pathname:///files/ib002/recursion/pyramid-slide-down.tar.gz"},"here"),".")),(0,s.kt)("div",{className:"footnotes"},(0,s.kt)("hr",{parentName:"div"}),(0,s.kt)("ol",{parentName:"div"},(0,s.kt)("li",{parentName:"ol",id:"fn-1"},"cause why not, right!?",(0,s.kt)("a",{parentName:"li",href:"#fnref-1",className:"footnote-backref"},"\u21a9")),(0,s.kt)("li",{parentName:"ol",id:"fn-2"},"except the bottom row",(0,s.kt)("a",{parentName:"li",href:"#fnref-2",className:"footnote-backref"},"\u21a9")),(0,s.kt)("li",{parentName:"ol",id:"fn-3"},"definitely not an RHCP reference \ud83d\ude09",(0,s.kt)("a",{parentName:"li",href:"#fnref-3",className:"footnote-backref"},"\u21a9")),(0,s.kt)("li",{parentName:"ol",id:"fn-4"},"one was not correct, thus the quotes",(0,s.kt)("a",{parentName:"li",href:"#fnref-4",className:"footnote-backref"},"\u21a9")))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/834ed470.690ec9f0.js b/assets/js/834ed470.668efafa.js similarity index 98% rename from assets/js/834ed470.690ec9f0.js rename to assets/js/834ed470.668efafa.js index 8e5c00a..1439636 100644 --- a/assets/js/834ed470.690ec9f0.js +++ b/assets/js/834ed470.668efafa.js @@ -1 +1 @@ -"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[3223],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>m});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var c=n.createContext({}),l=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=l(e.components);return n.createElement(c.Provider,{value:t},e.children)},p="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),p=l(r),d=o,m=p["".concat(c,".").concat(d)]||p[d]||f[d]||a;return r?n.createElement(m,i(i({ref:t},u),{},{components:r})):n.createElement(m,i({ref:t},u))}));function m(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=d;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[p]="string"==typeof e?e:o,i[1]=s;for(var l=2;l{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>f,frontMatter:()=>a,metadata:()=>s,toc:()=>l});var n=r(7462),o=(r(7294),r(3905));const a={id:"ib002-intro",title:"Introduction",slug:"/"},i=void 0,s={unversionedId:"ib002-intro",id:"ib002-intro",title:"Introduction",description:"In this part you can find \u201crandom\u201d additional materials I have written over the",source:"@site/ib002/00-intro-ib002.md",sourceDirName:".",slug:"/",permalink:"/ib002/",draft:!1,editUrl:"https://gitlab.com/mfocko/blog/tree/main/ib002/00-intro-ib002.md",tags:[],version:"current",lastUpdatedAt:1694108971,formattedLastUpdatedAt:"Sep 7, 2023",sidebarPosition:0,frontMatter:{id:"ib002-intro",title:"Introduction",slug:"/"},sidebar:"autogeneratedBar",next:{title:"Algorithms and Correctness",permalink:"/ib002/category/algorithms-and-correctness"}},c={},l=[],u={toc:l},p="wrapper";function f(e){let{components:t,...r}=e;return(0,o.kt)(p,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"In this part you can find \u201crandom\u201d additional materials I have written over the\ncourse of teaching ",(0,o.kt)("em",{parentName:"p"},"Algorithms and data structures I"),"."),(0,o.kt)("p",null,"It is a various mix of stuff that may have been produced as a follow-up on some\nquestion asked at the seminar or spontanously."),(0,o.kt)("p",null,"If you have some ideas for posts, please do not hesitate to submit them as issues\nin the linked ",(0,o.kt)("a",{parentName:"p",href:"https://gitlab.fi.muni.cz/xfocko/kb/issues"},"GitLab"),"."))}f.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[3223],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>m});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var c=n.createContext({}),l=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=l(e.components);return n.createElement(c.Provider,{value:t},e.children)},p="mdxType",f={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),p=l(r),d=o,m=p["".concat(c,".").concat(d)]||p[d]||f[d]||a;return r?n.createElement(m,i(i({ref:t},u),{},{components:r})):n.createElement(m,i({ref:t},u))}));function m(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=d;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[p]="string"==typeof e?e:o,i[1]=s;for(var l=2;l{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>f,frontMatter:()=>a,metadata:()=>s,toc:()=>l});var n=r(7462),o=(r(7294),r(3905));const a={id:"ib002-intro",title:"Introduction",slug:"/"},i=void 0,s={unversionedId:"ib002-intro",id:"ib002-intro",title:"Introduction",description:"In this part you can find \u201crandom\u201d additional materials I have written over the",source:"@site/ib002/00-intro-ib002.md",sourceDirName:".",slug:"/",permalink:"/ib002/",draft:!1,editUrl:"https://gitlab.com/mfocko/blog/tree/main/ib002/00-intro-ib002.md",tags:[],version:"current",lastUpdatedAt:1694109587,formattedLastUpdatedAt:"Sep 7, 2023",sidebarPosition:0,frontMatter:{id:"ib002-intro",title:"Introduction",slug:"/"},sidebar:"autogeneratedBar",next:{title:"Algorithms and Correctness",permalink:"/ib002/category/algorithms-and-correctness"}},c={},l=[],u={toc:l},p="wrapper";function f(e){let{components:t,...r}=e;return(0,o.kt)(p,(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"In this part you can find \u201crandom\u201d additional materials I have written over the\ncourse of teaching ",(0,o.kt)("em",{parentName:"p"},"Algorithms and data structures I"),"."),(0,o.kt)("p",null,"It is a various mix of stuff that may have been produced as a follow-up on some\nquestion asked at the seminar or spontanously."),(0,o.kt)("p",null,"If you have some ideas for posts, please do not hesitate to submit them as issues\nin the linked ",(0,o.kt)("a",{parentName:"p",href:"https://gitlab.fi.muni.cz/xfocko/kb/issues"},"GitLab"),"."))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/83bf91d3.21975b05.js b/assets/js/83bf91d3.193b1d35.js similarity index 99% rename from assets/js/83bf91d3.21975b05.js rename to assets/js/83bf91d3.193b1d35.js index ef97441..9fa22c0 100644 --- a/assets/js/83bf91d3.21975b05.js +++ b/assets/js/83bf91d3.193b1d35.js @@ -1 +1 @@ -"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[7823],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>d});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),p=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=p(e.components);return r.createElement(l.Provider,{value:t},e.children)},m="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),m=p(n),h=a,d=m["".concat(l,".").concat(h)]||m[h]||c[h]||o;return n?r.createElement(d,i(i({ref:t},u),{},{components:n})):r.createElement(d,i({ref:t},u))}));function d(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[m]="string"==typeof e?e:a,i[1]=s;for(var p=2;p{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>c,frontMatter:()=>o,metadata:()=>s,toc:()=>p});var r=n(7462),a=(n(7294),n(3905));const o={title:"Submitting merge requests"},i="Submitting merge requests for review",s={unversionedId:"mr",id:"mr",title:"Submitting merge requests",description:"This tutorial aims to show you how to follow basic git workflow and submit changes",source:"@site/pb071/mr.md",sourceDirName:".",slug:"/mr",permalink:"/pb071/mr",draft:!1,editUrl:"https://gitlab.com/mfocko/blog/tree/main/pb071/mr.md",tags:[],version:"current",lastUpdatedAt:1694108971,formattedLastUpdatedAt:"Sep 7, 2023",frontMatter:{title:"Submitting merge requests"},sidebar:"autogeneratedBar",previous:{title:"Practice exam C",permalink:"/pb071/pexam/cams"}},l={},p=[{value:"Tutorial",id:"tutorial",level:2},{value:"Step #1 - Starting from the clean repository",id:"step-1---starting-from-the-clean-repository",level:3},{value:"Step #2 - Create new branch",id:"step-2---create-new-branch",level:3},{value:"Step #3 - Do the assignment",id:"step-3---do-the-assignment",level:3},{value:"Step #4 - Commit and upload the changes to GitLab",id:"step-4---commit-and-upload-the-changes-to-gitlab",level:3},{value:"Step #5 - Creating a merge request manually",id:"step-5---creating-a-merge-request-manually",level:3},{value:"Step #6 - Set assignees",id:"step-6---set-assignees",level:3},{value:"Step #7 - Return to default branch",id:"step-7---return-to-default-branch",level:3}],u={toc:p},m="wrapper";function c(e){let{components:t,...n}=e;return(0,a.kt)(m,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"submitting-merge-requests-for-review"},"Submitting merge requests for review"),(0,a.kt)("p",null,"This tutorial aims to show you how to follow basic git workflow and submit changes\nthrough ",(0,a.kt)("em",{parentName:"p"},"Merge Requests")," for review."),(0,a.kt)("p",null,"The rudimentary idea behind aims for changes to be present on a separate branch\nthat is supposedly ",(0,a.kt)("em",{parentName:"p"},"merged")," into the default branch. Till then changes can be reviewed\non ",(0,a.kt)("em",{parentName:"p"},"Merge Request")," and additional changes may be made based on the reviews. Once\nthe changes satisfy requirements, the merge request is merged."),(0,a.kt)("h2",{id:"tutorial"},"Tutorial"),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},"Use this tutorial only for bonus assignments ",(0,a.kt)("strong",{parentName:"p"},"made by your tutors")," or in case\nyou need to make up for the absence.")),(0,a.kt)("h3",{id:"step-1---starting-from-the-clean-repository"},"Step #1 - Starting from the clean repository"),(0,a.kt)("p",null,"In your repository (either locally or on aisa) type ",(0,a.kt)("inlineCode",{parentName:"p"},"git status")," and check if your\nrepository is clean and you are present on the main branch (",(0,a.kt)("inlineCode",{parentName:"p"},"master"),", ",(0,a.kt)("inlineCode",{parentName:"p"},"main")," or\n",(0,a.kt)("inlineCode",{parentName:"p"},"trunk"),"). If you do not know what your default branch is, it is probably ",(0,a.kt)("inlineCode",{parentName:"p"},"master"),"\nand you should not be on any other branch."),(0,a.kt)("p",null,"Output of the command should look like this:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"aisa$ git status\nOn branch master # Or main or trunk.\nYour branch is up to date with 'origin/master'.\n\nnothing to commit, working tree clean\n")),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},"In case you are on different branch or there are uncommitted changes,\n",(0,a.kt)("strong",{parentName:"p"},"do not continue!!!")," Clean your repository (commit the changes or discard\nthem), before you continue.")),(0,a.kt)("h3",{id:"step-2---create-new-branch"},"Step #2 - Create new branch"),(0,a.kt)("p",null,"In your repository write command:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"aisa$ git checkout -b BRANCH\nSwitched to a new branch 'BRANCH'\n")),(0,a.kt)("p",null,"Instead of ",(0,a.kt)("inlineCode",{parentName:"p"},"BRANCH")," use some reasonable name for the branch. For example if you\nare working on the seminar from 3rd week, name the branch ",(0,a.kt)("inlineCode",{parentName:"p"},"seminar-03"),"."),(0,a.kt)("h3",{id:"step-3---do-the-assignment"},"Step #3 - Do the assignment"),(0,a.kt)("p",null,"Download the skeleton for the seminar assignment, extract and program. For example\nif you are working on 3rd seminar, you can do so by:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"aisa$ wget https://www.fi.muni.cz/pb071/seminars/seminar-03/pb071-seminar-03.zip\naisa$ unzip pb071-seminar-03.zip\n# Now you should have directory 'seminar-03'.\naisa$ rm pb071-seminar-03.zip\naisa$ cd seminar-03\n# You can work on the assignment.\n")),(0,a.kt)("h3",{id:"step-4---commit-and-upload-the-changes-to-gitlab"},"Step #4 - Commit and upload the changes to GitLab"),(0,a.kt)("p",null,"The same way you ",(0,a.kt)("em",{parentName:"p"},"add")," and ",(0,a.kt)("em",{parentName:"p"},"commit")," files for the homework assignments, you do for\nthe seminar."),(0,a.kt)("p",null,"Now you can upload the changes to GitLab. ",(0,a.kt)("inlineCode",{parentName:"p"},"git push")," is not enough, since repository\non GitLab does not know your new branch. You can solve this by adding arguments:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"aisa$ git push origin BRANCH\n...\nremote: To create a merge request for BRANCH, visit:\nremote: https://gitlab.fi.muni.cz/login/pb071/merge_requests/new?merge_request%5Bsource_branch%5D=BRANCH\n...\n")),(0,a.kt)("p",null,"In the output you should have a link for creating a merge request. If you see this\nlink, open it and skip next step."),(0,a.kt)("h3",{id:"step-5---creating-a-merge-request-manually"},"Step #5 - Creating a merge request manually"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Open your repository on GitLab."),(0,a.kt)("li",{parentName:"ol"},"On the left panel click on ",(0,a.kt)("em",{parentName:"li"},"Merge Requests"),"."),(0,a.kt)("li",{parentName:"ol"},"Click on ",(0,a.kt)("em",{parentName:"li"},"New Merge Request"),"."),(0,a.kt)("li",{parentName:"ol"},"In ",(0,a.kt)("em",{parentName:"li"},"Source branch")," select ",(0,a.kt)("inlineCode",{parentName:"li"},"login/pb071")," and ",(0,a.kt)("inlineCode",{parentName:"li"},"BRANCH"),", which you created."),(0,a.kt)("li",{parentName:"ol"},"In ",(0,a.kt)("em",{parentName:"li"},"Target branch")," select ",(0,a.kt)("inlineCode",{parentName:"li"},"login/pb071")," and your default branch you have seen\nin the output of the first command. (most likely ",(0,a.kt)("inlineCode",{parentName:"li"},"master"),")"),(0,a.kt)("li",{parentName:"ol"},"Click on ",(0,a.kt)("em",{parentName:"li"},"Compare branches and continue"),".")),(0,a.kt)("h3",{id:"step-6---set-assignees"},"Step #6 - Set assignees"),(0,a.kt)("p",null,"On the page that is opened, please check at the top that you are creating merge\nrequest ",(0,a.kt)("strong",{parentName:"p"},"from")," your new branch ",(0,a.kt)("strong",{parentName:"p"},"to")," your default branch (one of ",(0,a.kt)("inlineCode",{parentName:"p"},"master"),", ",(0,a.kt)("inlineCode",{parentName:"p"},"main"),"\nor ",(0,a.kt)("inlineCode",{parentName:"p"},"trunk"),")."),(0,a.kt)("p",null,"Then in the field ",(0,a.kt)("em",{parentName:"p"},"Assignees")," set your tutors based on the seminar group. You can\nuse login for a quick look up."),(0,a.kt)("p",null,"In the end click on ",(0,a.kt)("em",{parentName:"p"},"Submit merge request"),"."),(0,a.kt)("h3",{id:"step-7---return-to-default-branch"},"Step #7 - Return to default branch"),(0,a.kt)("p",null,"Homework assignments can be submitted only from branches specified in the rules\nfor the course. Because of that, before you do anything else, you should switch\nback to your default branch."),(0,a.kt)("p",null,"First of all, same as in step #1, check that your repository is clean with ",(0,a.kt)("inlineCode",{parentName:"p"},"git status"),".\nFor the sake of safety, do not continue without clean repository. Then with command\n",(0,a.kt)("inlineCode",{parentName:"p"},"git checkout BRANCH")," switch to your default branch ",(0,a.kt)("inlineCode",{parentName:"p"},"BRANCH"),"."),(0,a.kt)("p",null,"If you do not know which branch is your default, try ",(0,a.kt)("inlineCode",{parentName:"p"},"git branch")," that outputs all branches in your repository. Default branch is typically ",(0,a.kt)("inlineCode",{parentName:"p"},"master"),", but can\nbe ",(0,a.kt)("inlineCode",{parentName:"p"},"main")," or ",(0,a.kt)("inlineCode",{parentName:"p"},"trunk"),"."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"aisa$ git status\n# Check if repository is clean\n\n# If you know, what is your default branch, you can skip next command.\naisa$ git branch\n# Find the default branch in the list; should be one of the `master`, `main` or\n# `trunk` and you should not have more than one of those.\n# In case the list clears the terminal and you cannot see shell prompt, you can\n# press `q` to quit the pager.\n\naisa$ git checkout master\n")),(0,a.kt)("hr",null),(0,a.kt)("p",null,"Adapted from: ",(0,a.kt)("a",{parentName:"p",href:"https://www.fi.muni.cz/~xlacko1/pb071/mr.html"},"https://www.fi.muni.cz/~xlacko1/pb071/mr.html")))}c.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[7823],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>d});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),p=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=p(e.components);return r.createElement(l.Provider,{value:t},e.children)},m="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),m=p(n),h=a,d=m["".concat(l,".").concat(h)]||m[h]||c[h]||o;return n?r.createElement(d,i(i({ref:t},u),{},{components:n})):r.createElement(d,i({ref:t},u))}));function d(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[m]="string"==typeof e?e:a,i[1]=s;for(var p=2;p{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>c,frontMatter:()=>o,metadata:()=>s,toc:()=>p});var r=n(7462),a=(n(7294),n(3905));const o={title:"Submitting merge requests"},i="Submitting merge requests for review",s={unversionedId:"mr",id:"mr",title:"Submitting merge requests",description:"This tutorial aims to show you how to follow basic git workflow and submit changes",source:"@site/pb071/mr.md",sourceDirName:".",slug:"/mr",permalink:"/pb071/mr",draft:!1,editUrl:"https://gitlab.com/mfocko/blog/tree/main/pb071/mr.md",tags:[],version:"current",lastUpdatedAt:1694109587,formattedLastUpdatedAt:"Sep 7, 2023",frontMatter:{title:"Submitting merge requests"},sidebar:"autogeneratedBar",previous:{title:"Practice exam C",permalink:"/pb071/pexam/cams"}},l={},p=[{value:"Tutorial",id:"tutorial",level:2},{value:"Step #1 - Starting from the clean repository",id:"step-1---starting-from-the-clean-repository",level:3},{value:"Step #2 - Create new branch",id:"step-2---create-new-branch",level:3},{value:"Step #3 - Do the assignment",id:"step-3---do-the-assignment",level:3},{value:"Step #4 - Commit and upload the changes to GitLab",id:"step-4---commit-and-upload-the-changes-to-gitlab",level:3},{value:"Step #5 - Creating a merge request manually",id:"step-5---creating-a-merge-request-manually",level:3},{value:"Step #6 - Set assignees",id:"step-6---set-assignees",level:3},{value:"Step #7 - Return to default branch",id:"step-7---return-to-default-branch",level:3}],u={toc:p},m="wrapper";function c(e){let{components:t,...n}=e;return(0,a.kt)(m,(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"submitting-merge-requests-for-review"},"Submitting merge requests for review"),(0,a.kt)("p",null,"This tutorial aims to show you how to follow basic git workflow and submit changes\nthrough ",(0,a.kt)("em",{parentName:"p"},"Merge Requests")," for review."),(0,a.kt)("p",null,"The rudimentary idea behind aims for changes to be present on a separate branch\nthat is supposedly ",(0,a.kt)("em",{parentName:"p"},"merged")," into the default branch. Till then changes can be reviewed\non ",(0,a.kt)("em",{parentName:"p"},"Merge Request")," and additional changes may be made based on the reviews. Once\nthe changes satisfy requirements, the merge request is merged."),(0,a.kt)("h2",{id:"tutorial"},"Tutorial"),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},"Use this tutorial only for bonus assignments ",(0,a.kt)("strong",{parentName:"p"},"made by your tutors")," or in case\nyou need to make up for the absence.")),(0,a.kt)("h3",{id:"step-1---starting-from-the-clean-repository"},"Step #1 - Starting from the clean repository"),(0,a.kt)("p",null,"In your repository (either locally or on aisa) type ",(0,a.kt)("inlineCode",{parentName:"p"},"git status")," and check if your\nrepository is clean and you are present on the main branch (",(0,a.kt)("inlineCode",{parentName:"p"},"master"),", ",(0,a.kt)("inlineCode",{parentName:"p"},"main")," or\n",(0,a.kt)("inlineCode",{parentName:"p"},"trunk"),"). If you do not know what your default branch is, it is probably ",(0,a.kt)("inlineCode",{parentName:"p"},"master"),"\nand you should not be on any other branch."),(0,a.kt)("p",null,"Output of the command should look like this:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"aisa$ git status\nOn branch master # Or main or trunk.\nYour branch is up to date with 'origin/master'.\n\nnothing to commit, working tree clean\n")),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},"In case you are on different branch or there are uncommitted changes,\n",(0,a.kt)("strong",{parentName:"p"},"do not continue!!!")," Clean your repository (commit the changes or discard\nthem), before you continue.")),(0,a.kt)("h3",{id:"step-2---create-new-branch"},"Step #2 - Create new branch"),(0,a.kt)("p",null,"In your repository write command:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"aisa$ git checkout -b BRANCH\nSwitched to a new branch 'BRANCH'\n")),(0,a.kt)("p",null,"Instead of ",(0,a.kt)("inlineCode",{parentName:"p"},"BRANCH")," use some reasonable name for the branch. For example if you\nare working on the seminar from 3rd week, name the branch ",(0,a.kt)("inlineCode",{parentName:"p"},"seminar-03"),"."),(0,a.kt)("h3",{id:"step-3---do-the-assignment"},"Step #3 - Do the assignment"),(0,a.kt)("p",null,"Download the skeleton for the seminar assignment, extract and program. For example\nif you are working on 3rd seminar, you can do so by:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"aisa$ wget https://www.fi.muni.cz/pb071/seminars/seminar-03/pb071-seminar-03.zip\naisa$ unzip pb071-seminar-03.zip\n# Now you should have directory 'seminar-03'.\naisa$ rm pb071-seminar-03.zip\naisa$ cd seminar-03\n# You can work on the assignment.\n")),(0,a.kt)("h3",{id:"step-4---commit-and-upload-the-changes-to-gitlab"},"Step #4 - Commit and upload the changes to GitLab"),(0,a.kt)("p",null,"The same way you ",(0,a.kt)("em",{parentName:"p"},"add")," and ",(0,a.kt)("em",{parentName:"p"},"commit")," files for the homework assignments, you do for\nthe seminar."),(0,a.kt)("p",null,"Now you can upload the changes to GitLab. ",(0,a.kt)("inlineCode",{parentName:"p"},"git push")," is not enough, since repository\non GitLab does not know your new branch. You can solve this by adding arguments:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"aisa$ git push origin BRANCH\n...\nremote: To create a merge request for BRANCH, visit:\nremote: https://gitlab.fi.muni.cz/login/pb071/merge_requests/new?merge_request%5Bsource_branch%5D=BRANCH\n...\n")),(0,a.kt)("p",null,"In the output you should have a link for creating a merge request. If you see this\nlink, open it and skip next step."),(0,a.kt)("h3",{id:"step-5---creating-a-merge-request-manually"},"Step #5 - Creating a merge request manually"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Open your repository on GitLab."),(0,a.kt)("li",{parentName:"ol"},"On the left panel click on ",(0,a.kt)("em",{parentName:"li"},"Merge Requests"),"."),(0,a.kt)("li",{parentName:"ol"},"Click on ",(0,a.kt)("em",{parentName:"li"},"New Merge Request"),"."),(0,a.kt)("li",{parentName:"ol"},"In ",(0,a.kt)("em",{parentName:"li"},"Source branch")," select ",(0,a.kt)("inlineCode",{parentName:"li"},"login/pb071")," and ",(0,a.kt)("inlineCode",{parentName:"li"},"BRANCH"),", which you created."),(0,a.kt)("li",{parentName:"ol"},"In ",(0,a.kt)("em",{parentName:"li"},"Target branch")," select ",(0,a.kt)("inlineCode",{parentName:"li"},"login/pb071")," and your default branch you have seen\nin the output of the first command. (most likely ",(0,a.kt)("inlineCode",{parentName:"li"},"master"),")"),(0,a.kt)("li",{parentName:"ol"},"Click on ",(0,a.kt)("em",{parentName:"li"},"Compare branches and continue"),".")),(0,a.kt)("h3",{id:"step-6---set-assignees"},"Step #6 - Set assignees"),(0,a.kt)("p",null,"On the page that is opened, please check at the top that you are creating merge\nrequest ",(0,a.kt)("strong",{parentName:"p"},"from")," your new branch ",(0,a.kt)("strong",{parentName:"p"},"to")," your default branch (one of ",(0,a.kt)("inlineCode",{parentName:"p"},"master"),", ",(0,a.kt)("inlineCode",{parentName:"p"},"main"),"\nor ",(0,a.kt)("inlineCode",{parentName:"p"},"trunk"),")."),(0,a.kt)("p",null,"Then in the field ",(0,a.kt)("em",{parentName:"p"},"Assignees")," set your tutors based on the seminar group. You can\nuse login for a quick look up."),(0,a.kt)("p",null,"In the end click on ",(0,a.kt)("em",{parentName:"p"},"Submit merge request"),"."),(0,a.kt)("h3",{id:"step-7---return-to-default-branch"},"Step #7 - Return to default branch"),(0,a.kt)("p",null,"Homework assignments can be submitted only from branches specified in the rules\nfor the course. Because of that, before you do anything else, you should switch\nback to your default branch."),(0,a.kt)("p",null,"First of all, same as in step #1, check that your repository is clean with ",(0,a.kt)("inlineCode",{parentName:"p"},"git status"),".\nFor the sake of safety, do not continue without clean repository. Then with command\n",(0,a.kt)("inlineCode",{parentName:"p"},"git checkout BRANCH")," switch to your default branch ",(0,a.kt)("inlineCode",{parentName:"p"},"BRANCH"),"."),(0,a.kt)("p",null,"If you do not know which branch is your default, try ",(0,a.kt)("inlineCode",{parentName:"p"},"git branch")," that outputs all branches in your repository. Default branch is typically ",(0,a.kt)("inlineCode",{parentName:"p"},"master"),", but can\nbe ",(0,a.kt)("inlineCode",{parentName:"p"},"main")," or ",(0,a.kt)("inlineCode",{parentName:"p"},"trunk"),"."),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"aisa$ git status\n# Check if repository is clean\n\n# If you know, what is your default branch, you can skip next command.\naisa$ git branch\n# Find the default branch in the list; should be one of the `master`, `main` or\n# `trunk` and you should not have more than one of those.\n# In case the list clears the terminal and you cannot see shell prompt, you can\n# press `q` to quit the pager.\n\naisa$ git checkout master\n")),(0,a.kt)("hr",null),(0,a.kt)("p",null,"Adapted from: ",(0,a.kt)("a",{parentName:"p",href:"https://www.fi.muni.cz/~xlacko1/pb071/mr.html"},"https://www.fi.muni.cz/~xlacko1/pb071/mr.html")))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f533ef4a.13c50ab8.js b/assets/js/f533ef4a.6e5c0557.js similarity index 99% rename from assets/js/f533ef4a.13c50ab8.js rename to assets/js/f533ef4a.6e5c0557.js index 1cc3c85..a5d850b 100644 --- a/assets/js/f533ef4a.13c50ab8.js +++ b/assets/js/f533ef4a.6e5c0557.js @@ -1 +1 @@ -"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[2160],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),p=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),u=p(n),m=a,h=u["".concat(s,".").concat(m)]||u[m]||d[m]||i;return n?r.createElement(h,o(o({ref:t},c),{},{components:n})):r.createElement(h,o({ref:t},c))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:a,o[1]=l;for(var p=2;p{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var r=n(7462),a=(n(7294),n(3905));const i={id:"seminar-05-06",title:"5th and 6th seminar",description:"200IQ encryption.\n"},o=void 0,l={unversionedId:"bonuses/seminar-05-06",id:"bonuses/seminar-05-06",title:"5th and 6th seminar",description:"200IQ encryption.\n",source:"@site/pb071/bonuses/05-06.md",sourceDirName:"bonuses",slug:"/bonuses/seminar-05-06",permalink:"/pb071/bonuses/seminar-05-06",draft:!1,editUrl:"https://gitlab.com/mfocko/blog/tree/main/pb071/bonuses/05-06.md",tags:[],version:"current",lastUpdatedAt:1694108971,formattedLastUpdatedAt:"Sep 7, 2023",frontMatter:{id:"seminar-05-06",title:"5th and 6th seminar",description:"200IQ encryption.\n"},sidebar:"autogeneratedBar",previous:{title:"4th seminar",permalink:"/pb071/bonuses/seminar-04"},next:{title:"8th seminar",permalink:"/pb071/bonuses/seminar-08"}},s={},p=[{value:"Introduction",id:"introduction",level:2},{value:"Task no. 1: Reverse (0.5 K\u20a1)",id:"task-no-1-reverse-05-k",level:3},{value:"Task no. 2: Vigen\xe8re (0.5 K\u20a1)",id:"task-no-2-vigen\xe8re-05-k",level:3},{value:"Bonus part (0.5 K\u20a1)",id:"bonus-part-05-k",level:4},{value:"Task no. 3: Bit madness (0.5 K\u20a1)",id:"task-no-3-bit-madness-05-k",level:3},{value:"Task no. 4: All combined to BMP (0.5 K\u20a1)",id:"task-no-4-all-combined-to-bmp-05-k",level:3},{value:"Submitting",id:"submitting",level:2}],c={toc:p},u="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(u,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"For this bonus you can get at maximum 2.5 K\u20a1."),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"pathname:///files/pb071/bonuses/05-06.tar.gz"},"Source")),(0,a.kt)("h2",{id:"introduction"},"Introduction"),(0,a.kt)("p",null,"In this bonus you will implement few functions that will be used together for\nimplementing a very special cipher."),(0,a.kt)("h3",{id:"task-no-1-reverse-05-k"},"Task no. 1: Reverse (0.5 K\u20a1)"),(0,a.kt)("p",null,"Write a function ",(0,a.kt)("inlineCode",{parentName:"p"},"char* reverse(const char* text)")," that returns copy of the input\nstring in reversed order (also uppercase)."),(0,a.kt)("p",null,"In case you are given ",(0,a.kt)("inlineCode",{parentName:"p"},"NULL"),", return ",(0,a.kt)("inlineCode",{parentName:"p"},"NULL"),"."),(0,a.kt)("p",null,"Example (more in tests):"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-c"},'char* reversed = reverse("Hello world!");\n\nprintf("%s\\n", reversed);\n// "!DLROW OLLEH"\n\nif (reversed != NULL) {\n free(reversed);\n}\n')),(0,a.kt)("h3",{id:"task-no-2-vigen\xe8re-05-k"},"Task no. 2: Vigen\xe8re (0.5 K\u20a1)"),(0,a.kt)("p",null,"Vigen\xe8re cipher is similar to the Caesar cipher, but you also have a key that is\nused for encrypting (or decrypting)."),(0,a.kt)("p",null,"Your task is to write two functions:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"char* vigenere_encrypt(const char* key, const char* text)")," for encrypting"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"char* vigenere_decrypt(const char* key, const char* text)")," for decrypting")),(0,a.kt)("p",null,"In both of those you should return uppercase characters."),(0,a.kt)("p",null,"Meaning of the parameters you are given:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"key")," - String that represents key that is used for ","*","crypting. It consists of\none word and can have only characters of the alphabet. Does not matter if they\nare uppercase or lowercase."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"text")," - String that is to be ","*","crypted.")),(0,a.kt)("p",null,"Function returns address of the encrypted (or decrypted) string. Or ",(0,a.kt)("inlineCode",{parentName:"p"},"NULL")," in case\nerror occurs."),(0,a.kt)("p",null,"Example:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-c"},'char *encrypted = vigenere_encrypt("CoMPuTeR", "Hello world!");\n\nprintf("%s\\n", encrypted);\n// "JSXAI PSINR!"\n\nif (encrypted != NULL) {\n free(encrypted)\n}\n')),(0,a.kt)("h4",{id:"bonus-part-05-k"},"Bonus part (0.5 K\u20a1)"),(0,a.kt)("p",null,"If you can utilize helper function that would do both encrypting and decrypting,\nyou can gain 0.5 K\u20a1."),(0,a.kt)("p",null,"Usage of ",(0,a.kt)("inlineCode",{parentName:"p"},"true"),"/",(0,a.kt)("inlineCode",{parentName:"p"},"false")," to decide path in code is prohibited. It leads to merging\nof both functions into one. Point of this part is to discover a way to do this\ngenerically in such way that there are no separate paths for one or the other. One\nfunction with no branching for both of them, parametrization is your friend :)"),(0,a.kt)("h3",{id:"task-no-3-bit-madness-05-k"},"Task no. 3: Bit madness (0.5 K\u20a1)"),(0,a.kt)("p",null,"This is a state of the art crypto. Please do not share :)"),(0,a.kt)("p",null,"For encrypting:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Split the character that is to be encrypted in halves (4 and 4 bits each)."),(0,a.kt)("li",{parentName:"ol"},"Bits in 1st half are to be split into pairs. Swap bits in those pairs."),(0,a.kt)("li",{parentName:"ol"},"Then use the 4 bits that you created in the 2nd step for ",(0,a.kt)("inlineCode",{parentName:"li"},"XOR")," with the other\n4 bits.")),(0,a.kt)("p",null,"This simple and ingenious principle will be illustrated on the following example.\nString we want to encrypt is ",(0,a.kt)("inlineCode",{parentName:"p"},"Hello world!"),". We need to encrypt each letter separately,\nso we will demonstrate on letter ",(0,a.kt)("inlineCode",{parentName:"p"},"H"),":"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("p",{parentName:"li"},"Letter ",(0,a.kt)("inlineCode",{parentName:"p"},"H")," is represented in ASCII as ",(0,a.kt)("inlineCode",{parentName:"p"},"72"),"."),(0,a.kt)("p",{parentName:"li"},(0,a.kt)("inlineCode",{parentName:"p"},"72")," represented in binary is: ",(0,a.kt)("inlineCode",{parentName:"p"},"01001000"),". So first 4 bits are: ",(0,a.kt)("inlineCode",{parentName:"p"},"0100")," and last\n4 bits are ",(0,a.kt)("inlineCode",{parentName:"p"},"1000"),".")),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("p",{parentName:"li"},"First half of bits (",(0,a.kt)("inlineCode",{parentName:"p"},"0100"),") consists of 2 pairs (",(0,a.kt)("inlineCode",{parentName:"p"},"01")," and ",(0,a.kt)("inlineCode",{parentName:"p"},"00"),") which we swap\n(",(0,a.kt)("inlineCode",{parentName:"p"},"01 ~> 10")," and ",(0,a.kt)("inlineCode",{parentName:"p"},"00 ~> 00"),"). That way we get ",(0,a.kt)("inlineCode",{parentName:"p"},"1000"),".")),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("p",{parentName:"li"},"That half is used for xor with the other 4 bits:"),(0,a.kt)("pre",{parentName:"li"},(0,a.kt)("code",{parentName:"pre"}," 1000 // second half\nXOR 1000 // first half after 2nd step\n--------\n 0000\n"))),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("p",{parentName:"li"},"Now we combine both halves (first one is ",(0,a.kt)("inlineCode",{parentName:"p"},"1000"),", which we got from the 2nd step\nand second one is ",(0,a.kt)("inlineCode",{parentName:"p"},"0000"),", which we got from the 3rd step) and get ",(0,a.kt)("inlineCode",{parentName:"p"},"10000000"),",\nwhich is encrypted character ",(0,a.kt)("inlineCode",{parentName:"p"},"H")," using this method."))),(0,a.kt)("p",null,"In case of decryption, reverse those steps."),(0,a.kt)("p",null,"Your task is to implement functions:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"unsigned char* bit_encrypt(const char* text)")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"char* bit_decrypt(const unsigned char* text)"))),(0,a.kt)("p",null,"Example:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-c"},'unsigned char* encrypted = bit_encrypt("Hello world!");\n\nfor (int i = 0; i < 12;i++) {\n printf("%x ", encrypted[i]);\n //80 9c 95 95 96 11 bc 96 b9 95 9d 10\n}\n\nif (encrypted != NULL) {\n free(encrypted);\n}\n')),(0,a.kt)("h3",{id:"task-no-4-all-combined-to-bmp-05-k"},"Task no. 4: All combined to BMP (0.5 K\u20a1)"),(0,a.kt)("p",null,"Authors of the BMP cipher are non-disclosed :)"),(0,a.kt)("p",null,"Create pair of functions:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"unsigned char* bmp_encrypt(const char* key, const char* text)")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"char* bmp_decrypt(const char* key, const unsigned char* text)"))),(0,a.kt)("p",null,"BMP cipher consists of following steps for encrypting:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Reverse the input string"),(0,a.kt)("li",{parentName:"ol"},"Use Vigenere on the string you got from step #1"),(0,a.kt)("li",{parentName:"ol"},"Use bit madness on the string you got from step #2")),(0,a.kt)("p",null,"For decrypting, reverse the steps."),(0,a.kt)("h2",{id:"submitting"},"Submitting"),(0,a.kt)("p",null,"In case you have any questions, feel free to reach out to me."),(0,a.kt)("hr",null),(0,a.kt)("p",null,"Ideally submit the assignment through the merge request. Step-by-step tutorial is\npresent ",(0,a.kt)("a",{parentName:"p",href:"../mr"},"here"),". For setting assignee my xlogin is ",(0,a.kt)("inlineCode",{parentName:"p"},"xfocko"),"."),(0,a.kt)("p",null,"In case you do not want to experiment on GitLab, send me the source code via email,\nbut please prefix subject with: ",(0,a.kt)("inlineCode",{parentName:"p"},"[PB071/14][seminar-05-06]")),(0,a.kt)("p",null,"Deadline for the submission of the bonus is ",(0,a.kt)("strong",{parentName:"p"},"April 21th 24:00"),"."))}d.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkfi=self.webpackChunkfi||[]).push([[2160],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),p=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),u=p(n),m=a,h=u["".concat(s,".").concat(m)]||u[m]||d[m]||i;return n?r.createElement(h,o(o({ref:t},c),{},{components:n})):r.createElement(h,o({ref:t},c))}));function h(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:a,o[1]=l;for(var p=2;p{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var r=n(7462),a=(n(7294),n(3905));const i={id:"seminar-05-06",title:"5th and 6th seminar",description:"200IQ encryption.\n"},o=void 0,l={unversionedId:"bonuses/seminar-05-06",id:"bonuses/seminar-05-06",title:"5th and 6th seminar",description:"200IQ encryption.\n",source:"@site/pb071/bonuses/05-06.md",sourceDirName:"bonuses",slug:"/bonuses/seminar-05-06",permalink:"/pb071/bonuses/seminar-05-06",draft:!1,editUrl:"https://gitlab.com/mfocko/blog/tree/main/pb071/bonuses/05-06.md",tags:[],version:"current",lastUpdatedAt:1694109587,formattedLastUpdatedAt:"Sep 7, 2023",frontMatter:{id:"seminar-05-06",title:"5th and 6th seminar",description:"200IQ encryption.\n"},sidebar:"autogeneratedBar",previous:{title:"4th seminar",permalink:"/pb071/bonuses/seminar-04"},next:{title:"8th seminar",permalink:"/pb071/bonuses/seminar-08"}},s={},p=[{value:"Introduction",id:"introduction",level:2},{value:"Task no. 1: Reverse (0.5 K\u20a1)",id:"task-no-1-reverse-05-k",level:3},{value:"Task no. 2: Vigen\xe8re (0.5 K\u20a1)",id:"task-no-2-vigen\xe8re-05-k",level:3},{value:"Bonus part (0.5 K\u20a1)",id:"bonus-part-05-k",level:4},{value:"Task no. 3: Bit madness (0.5 K\u20a1)",id:"task-no-3-bit-madness-05-k",level:3},{value:"Task no. 4: All combined to BMP (0.5 K\u20a1)",id:"task-no-4-all-combined-to-bmp-05-k",level:3},{value:"Submitting",id:"submitting",level:2}],c={toc:p},u="wrapper";function d(e){let{components:t,...n}=e;return(0,a.kt)(u,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"For this bonus you can get at maximum 2.5 K\u20a1."),(0,a.kt)("p",null,(0,a.kt)("a",{parentName:"p",href:"pathname:///files/pb071/bonuses/05-06.tar.gz"},"Source")),(0,a.kt)("h2",{id:"introduction"},"Introduction"),(0,a.kt)("p",null,"In this bonus you will implement few functions that will be used together for\nimplementing a very special cipher."),(0,a.kt)("h3",{id:"task-no-1-reverse-05-k"},"Task no. 1: Reverse (0.5 K\u20a1)"),(0,a.kt)("p",null,"Write a function ",(0,a.kt)("inlineCode",{parentName:"p"},"char* reverse(const char* text)")," that returns copy of the input\nstring in reversed order (also uppercase)."),(0,a.kt)("p",null,"In case you are given ",(0,a.kt)("inlineCode",{parentName:"p"},"NULL"),", return ",(0,a.kt)("inlineCode",{parentName:"p"},"NULL"),"."),(0,a.kt)("p",null,"Example (more in tests):"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-c"},'char* reversed = reverse("Hello world!");\n\nprintf("%s\\n", reversed);\n// "!DLROW OLLEH"\n\nif (reversed != NULL) {\n free(reversed);\n}\n')),(0,a.kt)("h3",{id:"task-no-2-vigen\xe8re-05-k"},"Task no. 2: Vigen\xe8re (0.5 K\u20a1)"),(0,a.kt)("p",null,"Vigen\xe8re cipher is similar to the Caesar cipher, but you also have a key that is\nused for encrypting (or decrypting)."),(0,a.kt)("p",null,"Your task is to write two functions:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"char* vigenere_encrypt(const char* key, const char* text)")," for encrypting"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"char* vigenere_decrypt(const char* key, const char* text)")," for decrypting")),(0,a.kt)("p",null,"In both of those you should return uppercase characters."),(0,a.kt)("p",null,"Meaning of the parameters you are given:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"key")," - String that represents key that is used for ","*","crypting. It consists of\none word and can have only characters of the alphabet. Does not matter if they\nare uppercase or lowercase."),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"text")," - String that is to be ","*","crypted.")),(0,a.kt)("p",null,"Function returns address of the encrypted (or decrypted) string. Or ",(0,a.kt)("inlineCode",{parentName:"p"},"NULL")," in case\nerror occurs."),(0,a.kt)("p",null,"Example:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-c"},'char *encrypted = vigenere_encrypt("CoMPuTeR", "Hello world!");\n\nprintf("%s\\n", encrypted);\n// "JSXAI PSINR!"\n\nif (encrypted != NULL) {\n free(encrypted)\n}\n')),(0,a.kt)("h4",{id:"bonus-part-05-k"},"Bonus part (0.5 K\u20a1)"),(0,a.kt)("p",null,"If you can utilize helper function that would do both encrypting and decrypting,\nyou can gain 0.5 K\u20a1."),(0,a.kt)("p",null,"Usage of ",(0,a.kt)("inlineCode",{parentName:"p"},"true"),"/",(0,a.kt)("inlineCode",{parentName:"p"},"false")," to decide path in code is prohibited. It leads to merging\nof both functions into one. Point of this part is to discover a way to do this\ngenerically in such way that there are no separate paths for one or the other. One\nfunction with no branching for both of them, parametrization is your friend :)"),(0,a.kt)("h3",{id:"task-no-3-bit-madness-05-k"},"Task no. 3: Bit madness (0.5 K\u20a1)"),(0,a.kt)("p",null,"This is a state of the art crypto. Please do not share :)"),(0,a.kt)("p",null,"For encrypting:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Split the character that is to be encrypted in halves (4 and 4 bits each)."),(0,a.kt)("li",{parentName:"ol"},"Bits in 1st half are to be split into pairs. Swap bits in those pairs."),(0,a.kt)("li",{parentName:"ol"},"Then use the 4 bits that you created in the 2nd step for ",(0,a.kt)("inlineCode",{parentName:"li"},"XOR")," with the other\n4 bits.")),(0,a.kt)("p",null,"This simple and ingenious principle will be illustrated on the following example.\nString we want to encrypt is ",(0,a.kt)("inlineCode",{parentName:"p"},"Hello world!"),". We need to encrypt each letter separately,\nso we will demonstrate on letter ",(0,a.kt)("inlineCode",{parentName:"p"},"H"),":"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("p",{parentName:"li"},"Letter ",(0,a.kt)("inlineCode",{parentName:"p"},"H")," is represented in ASCII as ",(0,a.kt)("inlineCode",{parentName:"p"},"72"),"."),(0,a.kt)("p",{parentName:"li"},(0,a.kt)("inlineCode",{parentName:"p"},"72")," represented in binary is: ",(0,a.kt)("inlineCode",{parentName:"p"},"01001000"),". So first 4 bits are: ",(0,a.kt)("inlineCode",{parentName:"p"},"0100")," and last\n4 bits are ",(0,a.kt)("inlineCode",{parentName:"p"},"1000"),".")),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("p",{parentName:"li"},"First half of bits (",(0,a.kt)("inlineCode",{parentName:"p"},"0100"),") consists of 2 pairs (",(0,a.kt)("inlineCode",{parentName:"p"},"01")," and ",(0,a.kt)("inlineCode",{parentName:"p"},"00"),") which we swap\n(",(0,a.kt)("inlineCode",{parentName:"p"},"01 ~> 10")," and ",(0,a.kt)("inlineCode",{parentName:"p"},"00 ~> 00"),"). That way we get ",(0,a.kt)("inlineCode",{parentName:"p"},"1000"),".")),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("p",{parentName:"li"},"That half is used for xor with the other 4 bits:"),(0,a.kt)("pre",{parentName:"li"},(0,a.kt)("code",{parentName:"pre"}," 1000 // second half\nXOR 1000 // first half after 2nd step\n--------\n 0000\n"))),(0,a.kt)("li",{parentName:"ol"},(0,a.kt)("p",{parentName:"li"},"Now we combine both halves (first one is ",(0,a.kt)("inlineCode",{parentName:"p"},"1000"),", which we got from the 2nd step\nand second one is ",(0,a.kt)("inlineCode",{parentName:"p"},"0000"),", which we got from the 3rd step) and get ",(0,a.kt)("inlineCode",{parentName:"p"},"10000000"),",\nwhich is encrypted character ",(0,a.kt)("inlineCode",{parentName:"p"},"H")," using this method."))),(0,a.kt)("p",null,"In case of decryption, reverse those steps."),(0,a.kt)("p",null,"Your task is to implement functions:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"unsigned char* bit_encrypt(const char* text)")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"char* bit_decrypt(const unsigned char* text)"))),(0,a.kt)("p",null,"Example:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-c"},'unsigned char* encrypted = bit_encrypt("Hello world!");\n\nfor (int i = 0; i < 12;i++) {\n printf("%x ", encrypted[i]);\n //80 9c 95 95 96 11 bc 96 b9 95 9d 10\n}\n\nif (encrypted != NULL) {\n free(encrypted);\n}\n')),(0,a.kt)("h3",{id:"task-no-4-all-combined-to-bmp-05-k"},"Task no. 4: All combined to BMP (0.5 K\u20a1)"),(0,a.kt)("p",null,"Authors of the BMP cipher are non-disclosed :)"),(0,a.kt)("p",null,"Create pair of functions:"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"unsigned char* bmp_encrypt(const char* key, const char* text)")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"char* bmp_decrypt(const char* key, const unsigned char* text)"))),(0,a.kt)("p",null,"BMP cipher consists of following steps for encrypting:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Reverse the input string"),(0,a.kt)("li",{parentName:"ol"},"Use Vigenere on the string you got from step #1"),(0,a.kt)("li",{parentName:"ol"},"Use bit madness on the string you got from step #2")),(0,a.kt)("p",null,"For decrypting, reverse the steps."),(0,a.kt)("h2",{id:"submitting"},"Submitting"),(0,a.kt)("p",null,"In case you have any questions, feel free to reach out to me."),(0,a.kt)("hr",null),(0,a.kt)("p",null,"Ideally submit the assignment through the merge request. Step-by-step tutorial is\npresent ",(0,a.kt)("a",{parentName:"p",href:"../mr"},"here"),". For setting assignee my xlogin is ",(0,a.kt)("inlineCode",{parentName:"p"},"xfocko"),"."),(0,a.kt)("p",null,"In case you do not want to experiment on GitLab, send me the source code via email,\nbut please prefix subject with: ",(0,a.kt)("inlineCode",{parentName:"p"},"[PB071/14][seminar-05-06]")),(0,a.kt)("p",null,"Deadline for the submission of the bonus is ",(0,a.kt)("strong",{parentName:"p"},"April 21th 24:00"),"."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/runtime~main.be793c46.js b/assets/js/runtime~main.05f83fa7.js similarity index 68% rename from assets/js/runtime~main.be793c46.js rename to assets/js/runtime~main.05f83fa7.js index f95901b..6fce875 100644 --- a/assets/js/runtime~main.be793c46.js +++ b/assets/js/runtime~main.05f83fa7.js @@ -1 +1 @@ -(()=>{"use strict";var e,f,a,c,d={},b={};function t(e){var f=b[e];if(void 0!==f)return f.exports;var a=b[e]={exports:{}};return d[e].call(a.exports,a,a.exports,t),a.exports}t.m=d,e=[],t.O=(f,a,c,d)=>{if(!a){var b=1/0;for(i=0;i=d)&&Object.keys(t.O).every((e=>t.O[e](a[o])))?a.splice(o--,1):(r=!1,d0&&e[i-1][2]>d;i--)e[i]=e[i-1];e[i]=[a,c,d]},t.n=e=>{var f=e&&e.__esModule?()=>e.default:()=>e;return t.d(f,{a:f}),f},a=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,t.t=function(e,c){if(1&c&&(e=this(e)),8&c)return e;if("object"==typeof e&&e){if(4&c&&e.__esModule)return e;if(16&c&&"function"==typeof e.then)return e}var d=Object.create(null);t.r(d);var b={};f=f||[null,a({}),a([]),a(a)];for(var r=2&c&&e;"object"==typeof r&&!~f.indexOf(r);r=a(r))Object.getOwnPropertyNames(r).forEach((f=>b[f]=()=>e[f]));return b.default=()=>e,t.d(d,b),d},t.d=(e,f)=>{for(var a in f)t.o(f,a)&&!t.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:f[a]})},t.f={},t.e=e=>Promise.all(Object.keys(t.f).reduce(((f,a)=>(t.f[a](e,f),f)),[])),t.u=e=>"assets/js/"+({6:"e25b3183",143:"eb7cc117",146:"dff2ebad",404:"1bebd4ed",516:"a7d8226e",822:"8c0e532b",866:"4200b1a9",932:"4688cd57",1011:"377f3aa1",1050:"a7098721",1171:"d7f7fb17",1235:"86cd1460",1246:"2a09abcd",1272:"b0067e0a",1378:"0220f5fc",1501:"4e286f4e",1505:"3aef4518",1731:"337bc122",1851:"0fcbc6ca",2160:"f533ef4a",2167:"713b7838",2177:"3da4b779",2433:"b5a32f14",2732:"1e298f0c",2741:"d675395f",3039:"765ea78b",3086:"cfa2b263",3089:"a6aa9e1f",3095:"7cf94373",3184:"3de247b5",3223:"834ed470",3340:"58dd4fbd",3388:"29694455",3502:"5af27364",3519:"4621632b",3528:"74c2e0e9",3561:"95b96bb9",3608:"9e4087bc",3618:"a6a48ea2",3731:"51624505",3751:"3720c009",3835:"95be84b6",3906:"1e2009d3",3936:"470a9204",4013:"01a85c17",4064:"f48be158",4195:"c4f5d8e4",4252:"d9adc206",4256:"75cccf44",4269:"0bfe45d5",4287:"75316eff",4477:"94036ea2",4637:"19d7c045",4800:"a2be6ffb",4932:"09bc59e7",4972:"27470891",5126:"d5ca4423",5169:"d79dd549",5383:"8418981c",5388:"fd0b1e16",5430:"52f2a5bf",5521:"9287eafd",5529:"280c26e1",5658:"af8b72a7",5787:"82b3b723",5824:"a80747a0",5975:"4edd2021",6057:"18f481e4",6097:"b0291f37",6103:"ccc49370",6112:"d661cf04",6192:"b2c263ce",6234:"fcc91f97",6498:"be4da062",6554:"8e1fadd0",6890:"22a175ec",7248:"edfd2a45",7509:"9eb50c57",7555:"73d5f13d",7568:"0608d96f",7624:"dadfcff0",7755:"ab2721d4",7780:"d02d148d",7823:"83bf91d3",7883:"4c4e9f30",7918:"17896441",7920:"1a4e3797",7926:"3011a4c0",7963:"4ee12fa2",7979:"37cf4872",8091:"bb882650",8167:"3593220c",8442:"7d580cdb",8480:"8b1802c5",8520:"62d847b3",8610:"6875c492",8643:"ff472cd9",8757:"e89da83e",8769:"90425ffc",8786:"a082abd3",9044:"b9b1ccdc",9157:"788cc978",9193:"2523321d",9197:"b25fbc58",9228:"66d5ef6c",9300:"146d9b84",9385:"95f41f0b",9479:"d74d369f",9514:"1be78505",9611:"f60c832f",9679:"b45dccf0",9710:"52bff962",9814:"c8cbffbd",9817:"14eb3368",9924:"df203c0f"}[e]||e)+"."+{6:"1c50e16b",143:"55f4bd7d",146:"0c0a899d",404:"a838562f",516:"dabdb919",822:"9cbc1be0",866:"e4798bae",932:"4f084bfb",1011:"4c98e03e",1050:"ef506174",1171:"fd985da7",1235:"733128af",1246:"15946a52",1272:"68fd3778",1378:"5b1b8f6e",1426:"d90fc9fa",1501:"b0df1295",1505:"ae37468c",1731:"a2fd825d",1851:"e8ea4c91",2160:"13c50ab8",2167:"e5a05e06",2177:"a33bbff3",2433:"3c491fc9",2732:"caf61e40",2741:"567b4609",3039:"eff9c6dc",3086:"c19c407b",3089:"c08b78c4",3095:"f790d5a8",3184:"66851c3c",3223:"690ec9f0",3340:"f45f89fa",3388:"a2e2c1d7",3502:"400470ed",3519:"f101cb78",3528:"fc48acce",3561:"aefbf3b7",3608:"dadc79bc",3618:"d5faeb42",3731:"ab30cae6",3751:"996e811f",3835:"0463fc28",3906:"7e268ae7",3936:"f961c4a3",4013:"02ca9acb",4064:"eaa96907",4195:"05fc7105",4252:"4d3c59b2",4256:"5b6f1b34",4269:"58ce388b",4287:"a7b24a88",4477:"8be2e014",4637:"18dfd0ba",4800:"f8d1346f",4932:"64a221ae",4972:"d509d6e4",5126:"c7f8ab3b",5169:"ee10504b",5383:"3eb99a51",5388:"7f8a8c44",5430:"f6c9442b",5521:"8885dd15",5529:"27c7a6b1",5658:"1e28998e",5787:"fdccb1de",5824:"4dc03a81",5975:"47ff14e6",6048:"83823b1f",6057:"35406774",6097:"5b91d377",6103:"6c86d4f9",6112:"70911e61",6192:"01869630",6234:"acb581ec",6316:"0ca4149a",6498:"4dfd3eed",6554:"b5230023",6890:"a5706cf0",6945:"04a6ca6a",7248:"1bede75c",7509:"bc586b34",7515:"45da5915",7555:"2c8e245a",7568:"ee46e047",7624:"3cd22a72",7724:"0fff5da7",7755:"e0b371f9",7780:"0cb68506",7823:"21975b05",7883:"f247e2b4",7918:"a160e7e2",7920:"48f1640b",7926:"573f9325",7963:"74d68d7b",7979:"0b06d100",8091:"671a659f",8167:"04c28473",8442:"71718a61",8480:"6f267f4c",8520:"06e10519",8610:"2d487359",8643:"4ff57c91",8757:"a63c019a",8769:"955d8c56",8786:"1797976b",8894:"de4803df",8954:"296edd99",9044:"859f8a18",9157:"4f78c34d",9193:"50613303",9197:"c6b468d1",9228:"fc107ca5",9300:"996dfbcb",9385:"79e14732",9479:"ab677fcf",9487:"b3a824a3",9514:"65bfdbb1",9611:"d6dc7ae0",9679:"5fcb5182",9710:"6e8cadd8",9814:"a55be3a0",9817:"9c4e865a",9924:"1c48be56"}[e]+".js",t.miniCssF=e=>{},t.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),t.o=(e,f)=>Object.prototype.hasOwnProperty.call(e,f),c={},t.l=(e,f,a,d)=>{if(c[e])c[e].push(f);else{var b,r;if(void 0!==a)for(var o=document.getElementsByTagName("script"),n=0;n{b.onerror=b.onload=null,clearTimeout(l);var d=c[e];if(delete c[e],b.parentNode&&b.parentNode.removeChild(b),d&&d.forEach((e=>e(a))),f)return f(a)},l=setTimeout(u.bind(null,void 0,{type:"timeout",target:b}),12e4);b.onerror=u.bind(null,b.onerror),b.onload=u.bind(null,b.onload),r&&document.head.appendChild(b)}},t.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.p="/",t.gca=function(e){return e={17896441:"7918",27470891:"4972",29694455:"3388",51624505:"3731",e25b3183:"6",eb7cc117:"143",dff2ebad:"146","1bebd4ed":"404",a7d8226e:"516","8c0e532b":"822","4200b1a9":"866","4688cd57":"932","377f3aa1":"1011",a7098721:"1050",d7f7fb17:"1171","86cd1460":"1235","2a09abcd":"1246",b0067e0a:"1272","0220f5fc":"1378","4e286f4e":"1501","3aef4518":"1505","337bc122":"1731","0fcbc6ca":"1851",f533ef4a:"2160","713b7838":"2167","3da4b779":"2177",b5a32f14:"2433","1e298f0c":"2732",d675395f:"2741","765ea78b":"3039",cfa2b263:"3086",a6aa9e1f:"3089","7cf94373":"3095","3de247b5":"3184","834ed470":"3223","58dd4fbd":"3340","5af27364":"3502","4621632b":"3519","74c2e0e9":"3528","95b96bb9":"3561","9e4087bc":"3608",a6a48ea2:"3618","3720c009":"3751","95be84b6":"3835","1e2009d3":"3906","470a9204":"3936","01a85c17":"4013",f48be158:"4064",c4f5d8e4:"4195",d9adc206:"4252","75cccf44":"4256","0bfe45d5":"4269","75316eff":"4287","94036ea2":"4477","19d7c045":"4637",a2be6ffb:"4800","09bc59e7":"4932",d5ca4423:"5126",d79dd549:"5169","8418981c":"5383",fd0b1e16:"5388","52f2a5bf":"5430","9287eafd":"5521","280c26e1":"5529",af8b72a7:"5658","82b3b723":"5787",a80747a0:"5824","4edd2021":"5975","18f481e4":"6057",b0291f37:"6097",ccc49370:"6103",d661cf04:"6112",b2c263ce:"6192",fcc91f97:"6234",be4da062:"6498","8e1fadd0":"6554","22a175ec":"6890",edfd2a45:"7248","9eb50c57":"7509","73d5f13d":"7555","0608d96f":"7568",dadfcff0:"7624",ab2721d4:"7755",d02d148d:"7780","83bf91d3":"7823","4c4e9f30":"7883","1a4e3797":"7920","3011a4c0":"7926","4ee12fa2":"7963","37cf4872":"7979",bb882650:"8091","3593220c":"8167","7d580cdb":"8442","8b1802c5":"8480","62d847b3":"8520","6875c492":"8610",ff472cd9:"8643",e89da83e:"8757","90425ffc":"8769",a082abd3:"8786",b9b1ccdc:"9044","788cc978":"9157","2523321d":"9193",b25fbc58:"9197","66d5ef6c":"9228","146d9b84":"9300","95f41f0b":"9385",d74d369f:"9479","1be78505":"9514",f60c832f:"9611",b45dccf0:"9679","52bff962":"9710",c8cbffbd:"9814","14eb3368":"9817",df203c0f:"9924"}[e]||e,t.p+t.u(e)},(()=>{var e={1303:0,532:0};t.f.j=(f,a)=>{var c=t.o(e,f)?e[f]:void 0;if(0!==c)if(c)a.push(c[2]);else if(/^(1303|532)$/.test(f))e[f]=0;else{var d=new Promise(((a,d)=>c=e[f]=[a,d]));a.push(c[2]=d);var b=t.p+t.u(f),r=new Error;t.l(b,(a=>{if(t.o(e,f)&&(0!==(c=e[f])&&(e[f]=void 0),c)){var d=a&&("load"===a.type?"missing":a.type),b=a&&a.target&&a.target.src;r.message="Loading chunk "+f+" failed.\n("+d+": "+b+")",r.name="ChunkLoadError",r.type=d,r.request=b,c[1](r)}}),"chunk-"+f,f)}},t.O.j=f=>0===e[f];var f=(f,a)=>{var c,d,b=a[0],r=a[1],o=a[2],n=0;if(b.some((f=>0!==e[f]))){for(c in r)t.o(r,c)&&(t.m[c]=r[c]);if(o)var i=o(t)}for(f&&f(a);n{"use strict";var e,f,c,a,d={},b={};function t(e){var f=b[e];if(void 0!==f)return f.exports;var c=b[e]={exports:{}};return d[e].call(c.exports,c,c.exports,t),c.exports}t.m=d,e=[],t.O=(f,c,a,d)=>{if(!c){var b=1/0;for(i=0;i=d)&&Object.keys(t.O).every((e=>t.O[e](c[o])))?c.splice(o--,1):(r=!1,d0&&e[i-1][2]>d;i--)e[i]=e[i-1];e[i]=[c,a,d]},t.n=e=>{var f=e&&e.__esModule?()=>e.default:()=>e;return t.d(f,{a:f}),f},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,t.t=function(e,a){if(1&a&&(e=this(e)),8&a)return e;if("object"==typeof e&&e){if(4&a&&e.__esModule)return e;if(16&a&&"function"==typeof e.then)return e}var d=Object.create(null);t.r(d);var b={};f=f||[null,c({}),c([]),c(c)];for(var r=2&a&&e;"object"==typeof r&&!~f.indexOf(r);r=c(r))Object.getOwnPropertyNames(r).forEach((f=>b[f]=()=>e[f]));return b.default=()=>e,t.d(d,b),d},t.d=(e,f)=>{for(var c in f)t.o(f,c)&&!t.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:f[c]})},t.f={},t.e=e=>Promise.all(Object.keys(t.f).reduce(((f,c)=>(t.f[c](e,f),f)),[])),t.u=e=>"assets/js/"+({6:"e25b3183",143:"eb7cc117",146:"dff2ebad",404:"1bebd4ed",516:"a7d8226e",822:"8c0e532b",866:"4200b1a9",932:"4688cd57",1011:"377f3aa1",1050:"a7098721",1171:"d7f7fb17",1235:"86cd1460",1246:"2a09abcd",1272:"b0067e0a",1378:"0220f5fc",1501:"4e286f4e",1505:"3aef4518",1731:"337bc122",1851:"0fcbc6ca",2160:"f533ef4a",2167:"713b7838",2177:"3da4b779",2433:"b5a32f14",2732:"1e298f0c",2741:"d675395f",3039:"765ea78b",3086:"cfa2b263",3089:"a6aa9e1f",3095:"7cf94373",3184:"3de247b5",3223:"834ed470",3340:"58dd4fbd",3388:"29694455",3502:"5af27364",3519:"4621632b",3528:"74c2e0e9",3561:"95b96bb9",3608:"9e4087bc",3618:"a6a48ea2",3731:"51624505",3751:"3720c009",3835:"95be84b6",3906:"1e2009d3",3936:"470a9204",4013:"01a85c17",4064:"f48be158",4195:"c4f5d8e4",4252:"d9adc206",4256:"75cccf44",4269:"0bfe45d5",4287:"75316eff",4477:"94036ea2",4637:"19d7c045",4800:"a2be6ffb",4932:"09bc59e7",4972:"27470891",5126:"d5ca4423",5169:"d79dd549",5383:"8418981c",5388:"fd0b1e16",5430:"52f2a5bf",5521:"9287eafd",5529:"280c26e1",5658:"af8b72a7",5787:"82b3b723",5824:"a80747a0",5975:"4edd2021",6057:"18f481e4",6097:"b0291f37",6103:"ccc49370",6112:"d661cf04",6192:"b2c263ce",6234:"fcc91f97",6498:"be4da062",6554:"8e1fadd0",6890:"22a175ec",7248:"edfd2a45",7509:"9eb50c57",7555:"73d5f13d",7568:"0608d96f",7624:"dadfcff0",7755:"ab2721d4",7780:"d02d148d",7823:"83bf91d3",7883:"4c4e9f30",7918:"17896441",7920:"1a4e3797",7926:"3011a4c0",7963:"4ee12fa2",7979:"37cf4872",8091:"bb882650",8167:"3593220c",8442:"7d580cdb",8480:"8b1802c5",8520:"62d847b3",8610:"6875c492",8643:"ff472cd9",8757:"e89da83e",8769:"90425ffc",8786:"a082abd3",9044:"b9b1ccdc",9157:"788cc978",9193:"2523321d",9197:"b25fbc58",9228:"66d5ef6c",9300:"146d9b84",9385:"95f41f0b",9479:"d74d369f",9514:"1be78505",9611:"f60c832f",9679:"b45dccf0",9710:"52bff962",9814:"c8cbffbd",9817:"14eb3368",9924:"df203c0f"}[e]||e)+"."+{6:"1c50e16b",143:"55f4bd7d",146:"0c0a899d",404:"a838562f",516:"dabdb919",822:"9cbc1be0",866:"e4798bae",932:"4f084bfb",1011:"4c98e03e",1050:"ef506174",1171:"fd985da7",1235:"733128af",1246:"15946a52",1272:"68fd3778",1378:"5b1b8f6e",1426:"d90fc9fa",1501:"b0df1295",1505:"ae37468c",1731:"22826266",1851:"e8ea4c91",2160:"6e5c0557",2167:"e5a05e06",2177:"a33bbff3",2433:"3c491fc9",2732:"caf61e40",2741:"567b4609",3039:"eff9c6dc",3086:"c19c407b",3089:"c08b78c4",3095:"f6d9052f",3184:"66851c3c",3223:"668efafa",3340:"f45f89fa",3388:"a2e2c1d7",3502:"400470ed",3519:"f101cb78",3528:"fc48acce",3561:"aefbf3b7",3608:"dadc79bc",3618:"d5faeb42",3731:"ab30cae6",3751:"996e811f",3835:"0463fc28",3906:"7e268ae7",3936:"f961c4a3",4013:"02ca9acb",4064:"eaa96907",4195:"05fc7105",4252:"4d3c59b2",4256:"5b6f1b34",4269:"58ce388b",4287:"a7b24a88",4477:"8be2e014",4637:"18dfd0ba",4800:"f8d1346f",4932:"64a221ae",4972:"d509d6e4",5126:"c7f8ab3b",5169:"ee10504b",5383:"3eb99a51",5388:"7f8a8c44",5430:"f6c9442b",5521:"8885dd15",5529:"27c7a6b1",5658:"1e28998e",5787:"fdccb1de",5824:"4dc03a81",5975:"47ff14e6",6048:"83823b1f",6057:"35406774",6097:"5b91d377",6103:"6c86d4f9",6112:"70911e61",6192:"01869630",6234:"acb581ec",6316:"0ca4149a",6498:"4dfd3eed",6554:"b5230023",6890:"a5706cf0",6945:"04a6ca6a",7248:"1bede75c",7509:"bc586b34",7515:"45da5915",7555:"2c8e245a",7568:"ee46e047",7624:"3cd22a72",7724:"0fff5da7",7755:"e0b371f9",7780:"0cb68506",7823:"193b1d35",7883:"f247e2b4",7918:"a160e7e2",7920:"48f1640b",7926:"573f9325",7963:"bd3f9667",7979:"0b06d100",8091:"671a659f",8167:"04c28473",8442:"bd936269",8480:"6f267f4c",8520:"06e10519",8610:"2d487359",8643:"4ff57c91",8757:"a63c019a",8769:"955d8c56",8786:"1797976b",8894:"de4803df",8954:"296edd99",9044:"859f8a18",9157:"4f78c34d",9193:"54e7755c",9197:"c6b468d1",9228:"fc107ca5",9300:"996dfbcb",9385:"79e14732",9479:"ab677fcf",9487:"b3a824a3",9514:"65bfdbb1",9611:"d6dc7ae0",9679:"5fcb5182",9710:"6e8cadd8",9814:"a55be3a0",9817:"9c4e865a",9924:"1c48be56"}[e]+".js",t.miniCssF=e=>{},t.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),t.o=(e,f)=>Object.prototype.hasOwnProperty.call(e,f),a={},t.l=(e,f,c,d)=>{if(a[e])a[e].push(f);else{var b,r;if(void 0!==c)for(var o=document.getElementsByTagName("script"),n=0;n{b.onerror=b.onload=null,clearTimeout(l);var d=a[e];if(delete a[e],b.parentNode&&b.parentNode.removeChild(b),d&&d.forEach((e=>e(c))),f)return f(c)},l=setTimeout(u.bind(null,void 0,{type:"timeout",target:b}),12e4);b.onerror=u.bind(null,b.onerror),b.onload=u.bind(null,b.onload),r&&document.head.appendChild(b)}},t.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.p="/",t.gca=function(e){return e={17896441:"7918",27470891:"4972",29694455:"3388",51624505:"3731",e25b3183:"6",eb7cc117:"143",dff2ebad:"146","1bebd4ed":"404",a7d8226e:"516","8c0e532b":"822","4200b1a9":"866","4688cd57":"932","377f3aa1":"1011",a7098721:"1050",d7f7fb17:"1171","86cd1460":"1235","2a09abcd":"1246",b0067e0a:"1272","0220f5fc":"1378","4e286f4e":"1501","3aef4518":"1505","337bc122":"1731","0fcbc6ca":"1851",f533ef4a:"2160","713b7838":"2167","3da4b779":"2177",b5a32f14:"2433","1e298f0c":"2732",d675395f:"2741","765ea78b":"3039",cfa2b263:"3086",a6aa9e1f:"3089","7cf94373":"3095","3de247b5":"3184","834ed470":"3223","58dd4fbd":"3340","5af27364":"3502","4621632b":"3519","74c2e0e9":"3528","95b96bb9":"3561","9e4087bc":"3608",a6a48ea2:"3618","3720c009":"3751","95be84b6":"3835","1e2009d3":"3906","470a9204":"3936","01a85c17":"4013",f48be158:"4064",c4f5d8e4:"4195",d9adc206:"4252","75cccf44":"4256","0bfe45d5":"4269","75316eff":"4287","94036ea2":"4477","19d7c045":"4637",a2be6ffb:"4800","09bc59e7":"4932",d5ca4423:"5126",d79dd549:"5169","8418981c":"5383",fd0b1e16:"5388","52f2a5bf":"5430","9287eafd":"5521","280c26e1":"5529",af8b72a7:"5658","82b3b723":"5787",a80747a0:"5824","4edd2021":"5975","18f481e4":"6057",b0291f37:"6097",ccc49370:"6103",d661cf04:"6112",b2c263ce:"6192",fcc91f97:"6234",be4da062:"6498","8e1fadd0":"6554","22a175ec":"6890",edfd2a45:"7248","9eb50c57":"7509","73d5f13d":"7555","0608d96f":"7568",dadfcff0:"7624",ab2721d4:"7755",d02d148d:"7780","83bf91d3":"7823","4c4e9f30":"7883","1a4e3797":"7920","3011a4c0":"7926","4ee12fa2":"7963","37cf4872":"7979",bb882650:"8091","3593220c":"8167","7d580cdb":"8442","8b1802c5":"8480","62d847b3":"8520","6875c492":"8610",ff472cd9:"8643",e89da83e:"8757","90425ffc":"8769",a082abd3:"8786",b9b1ccdc:"9044","788cc978":"9157","2523321d":"9193",b25fbc58:"9197","66d5ef6c":"9228","146d9b84":"9300","95f41f0b":"9385",d74d369f:"9479","1be78505":"9514",f60c832f:"9611",b45dccf0:"9679","52bff962":"9710",c8cbffbd:"9814","14eb3368":"9817",df203c0f:"9924"}[e]||e,t.p+t.u(e)},(()=>{var e={1303:0,532:0};t.f.j=(f,c)=>{var a=t.o(e,f)?e[f]:void 0;if(0!==a)if(a)c.push(a[2]);else if(/^(1303|532)$/.test(f))e[f]=0;else{var d=new Promise(((c,d)=>a=e[f]=[c,d]));c.push(a[2]=d);var b=t.p+t.u(f),r=new Error;t.l(b,(c=>{if(t.o(e,f)&&(0!==(a=e[f])&&(e[f]=void 0),a)){var d=c&&("load"===c.type?"missing":c.type),b=c&&c.target&&c.target.src;r.message="Loading chunk "+f+" failed.\n("+d+": "+b+")",r.name="ChunkLoadError",r.type=d,r.request=b,a[1](r)}}),"chunk-"+f,f)}},t.O.j=f=>0===e[f];var f=(f,c)=>{var a,d,b=c[0],r=c[1],o=c[2],n=0;if(b.some((f=>0!==e[f]))){for(a in r)t.o(r,a)&&(t.m[a]=r[a]);if(o)var i=o(t)}for(f&&f(c);n - + @@ -61,7 +61,7 @@ proceeded with the upgrade.


  1. vpsFree.cz
  2. Even though I've been running archLinux on some Raspberry Pi's and also on one of my “home servers”, before getting the VPS. You could say I like to live on the edge…
- + \ No newline at end of file diff --git a/blog/aoc-2022/1st-week/index.html b/blog/aoc-2022/1st-week/index.html index d0562bf..690b771 100644 --- a/blog/aoc-2022/1st-week/index.html +++ b/blog/aoc-2022/1st-week/index.html @@ -13,7 +13,7 @@ - + @@ -105,7 +105,7 @@ only one “owner” of a mutable reference at a time (and dynamically, as oppos to the Cell<T>).

Therefore to be precise and correct about the equivalents of std::shared_ptr<T> in Rust, we can say that

  • Rc<T> is an equivalent of a const std::shared_ptr<T>,
  • and Rc<RefCell<T>> is an equivalent of a std::shared_ptr<T>.

You can easily see that they only differ in the mutability. (And even that is not as simple as it seems, because there is also Cell<T>)

- + \ No newline at end of file diff --git a/blog/aoc-2022/2nd-week/index.html b/blog/aoc-2022/2nd-week/index.html index 30811dd..bc51503 100644 --- a/blog/aoc-2022/2nd-week/index.html +++ b/blog/aoc-2022/2nd-week/index.html @@ -13,7 +13,7 @@ - + @@ -166,7 +166,7 @@ copy-paste, cause the cost of this “monstrosity” outweighs the benefits of n types, you'll get suggested certain changes by the clippy. For example if you consider the following piece of code

fn get_sum(nums: &Vec<i32>) -> i32 {
nums.iter().sum()
}

fn main() {
let nums = vec![1, 2, 3];
println!("Sum: {}", get_sum(&nums));
}

and you run clippy on it, you will get

Checking playground v0.0.1 (/playground)
warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do
--> src/main.rs:1:18
|
1 | fn get_sum(nums: &Vec<i32>) -> i32 {
| ^^^^^^^^^ help: change this to: `&[i32]`
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg
= note: `#[warn(clippy::ptr_arg)]` on by default

warning: `playground` (bin "playground") generated 1 warning
Finished dev [unoptimized + debuginfo] target(s) in 0.61s

However, if you introduce a type alias, such as

type Numbers = Vec<i32>;

Then clippy won't say anything, cause there is literally nothing to suggest. However the outcome is not the same…

- + \ No newline at end of file diff --git a/blog/aoc-2022/3rd-week/index.html b/blog/aoc-2022/3rd-week/index.html index dd9c8ec..b23945d 100644 --- a/blog/aoc-2022/3rd-week/index.html +++ b/blog/aoc-2022/3rd-week/index.html @@ -13,7 +13,7 @@ - + @@ -106,7 +106,7 @@ do2Neg trait3. I was dealing with a binary tree and needed a way how to look at the other side, so I have just implemented the negation for flipping between left and right 😄


  1. Default docs
  2. Pardon my example from the graph algorithms ;)
  3. Neg docs
- + \ No newline at end of file diff --git a/blog/aoc-2022/4th-week/index.html b/blog/aoc-2022/4th-week/index.html index 520111b..c8c71c3 100644 --- a/blog/aoc-2022/4th-week/index.html +++ b/blog/aoc-2022/4th-week/index.html @@ -13,7 +13,7 @@ - + @@ -130,7 +130,7 @@ implementation is also very helpful in a lot of cases, e.g. debugging output, copying, equality comparison, etc.

I confess to touching more “cursed” parts of the Rust, such as macros to declutter the copy-paste for tests or writing my own structures that need to carry a lifetime for their own fields.

tl;dr Relatively pleasant language until you hit brick wall 😉


See you next year! Maybe in Rust, maybe not 🙃

- + \ No newline at end of file diff --git a/blog/aoc-2022/intro/index.html b/blog/aoc-2022/intro/index.html index 8963ab4..449ead5 100644 --- a/blog/aoc-2022/intro/index.html +++ b/blog/aoc-2022/intro/index.html @@ -13,7 +13,7 @@ - + @@ -85,7 +85,7 @@ can be installed only once and therefore it can fail, that is how we got the ::install which unwraps the »result« of the installation.

Overall we will get to a template like this:

use aoc_2022::*;

use color_eyre::eyre::Result;
use tracing::info;
use tracing_subscriber::EnvFilter;

type Input = String;
type Output = i32;

fn parse_input(path: &str) -> Input {
todo!()
}

fn part1(input: &Input) -> Output {
todo!()
}

fn part2(input: &Input) -> Output {
todo!()
}

fn main() -> Result<()> {
tracing_subscriber::fmt()
.with_env_filter(EnvFilter::from_default_env())
.with_target(false)
.with_file(true)
.with_line_number(true)
.without_time()
.compact()
.init();
color_eyre::install()?;

let input = parse_input("inputs/dayXX.txt");

info!("Part 1: {}", part_1(&input));
info!("Part 2: {}", part_2(&input));

Ok(())
}

  1. Copy-pasting might be a relaxing thing to do, but you can also discover nasty stuff about your PC. See this Reddit post and the comment.
  2. GitHub profile
  3. Even though you can use it even for libraries, but handling errors from libraries using anyhow is nasty… You will be the stinky one ;)
- + \ No newline at end of file diff --git a/blog/archive/index.html b/blog/archive/index.html index 066479b..f4a81b5 100644 --- a/blog/archive/index.html +++ b/blog/archive/index.html @@ -13,13 +13,13 @@ - + - + \ No newline at end of file diff --git a/blog/index.html b/blog/index.html index c891b3c..45ff5ff 100644 --- a/blog/index.html +++ b/blog/index.html @@ -13,7 +13,7 @@ - + @@ -21,7 +21,7 @@
- + \ No newline at end of file diff --git a/blog/leetcode/sort-diagonally/index.html b/blog/leetcode/sort-diagonally/index.html index 524fb4b..d1e8b9c 100644 --- a/blog/leetcode/sort-diagonally/index.html +++ b/blog/leetcode/sort-diagonally/index.html @@ -13,7 +13,7 @@ - + @@ -107,7 +107,7 @@ remaining requirements of the random access iterator. Let's see wh get yelled at by a compiler for the following reasons:

/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1792:11: error: object of type 'diagonal<int>::diagonal_iter' cannot be assigned because its copy assignment operator is implicitly deleted [clang-diagnostic-error]
__last = __next;
^
/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1817:11: note: in instantiation of function template specialization 'std::__unguarded_linear_insert<diagonal<int>::diagonal_iter, __gnu_cxx::__ops::_Val_less_iter>' requested here
std::__unguarded_linear_insert(__i,
^
/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1849:9: note: in instantiation of function template specialization 'std::__insertion_sort<diagonal<int>::diagonal_iter, __gnu_cxx::__ops::_Iter_less_iter>' requested here
std::__insertion_sort(__first, __first + int(_S_threshold), __comp);
^
/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1940:9: note: in instantiation of function template specialization 'std::__final_insertion_sort<diagonal<int>::diagonal_iter, __gnu_cxx::__ops::_Iter_less_iter>' requested here
std::__final_insertion_sort(__first, __last, __comp);
^
/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:4820:12: note: in instantiation of function template specialization 'std::__sort<diagonal<int>::diagonal_iter, __gnu_cxx::__ops::_Iter_less_iter>' requested here
std::__sort(__first, __last, __gnu_cxx::__ops::__iter_less_iter());
^
matrix-sort.cpp:161:18: note: in instantiation of function template specialization 'std::sort<diagonal<int>::diagonal_iter>' requested here
std::sort(d.begin(), d.end());
^
matrix-sort.cpp:17:19: note: copy assignment operator of 'diagonal_iter' is implicitly deleted because field 'm' is of reference type 'diagonal<int>::matrix_t &' (aka 'vector<std::vector<int>> &')
matrix_t& m;
^
/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1830:2: error: no matching function for call to '__unguarded_linear_insert' [clang-diagnostic-error]
std::__unguarded_linear_insert(__i,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1850:9: note: in instantiation of function template specialization 'std::__unguarded_insertion_sort<diagonal<int>::diagonal_iter, __gnu_cxx::__ops::_Iter_less_iter>' requested here
std::__unguarded_insertion_sort(__first + int(_S_threshold), __last,
^
/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1940:9: note: in instantiation of function template specialization 'std::__final_insertion_sort<diagonal<int>::diagonal_iter, __gnu_cxx::__ops::_Iter_less_iter>' requested here
std::__final_insertion_sort(__first, __last, __comp);
^
/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:4820:12: note: in instantiation of function template specialization 'std::__sort<diagonal<int>::diagonal_iter, __gnu_cxx::__ops::_Iter_less_iter>' requested here
std::__sort(__first, __last, __gnu_cxx::__ops::__iter_less_iter());
^
matrix-sort.cpp:161:18: note: in instantiation of function template specialization 'std::sort<diagonal<int>::diagonal_iter>' requested here
std::sort(d.begin(), d.end());
^
/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1782:5: note: candidate template ignored: substitution failure [with _RandomAccessIterator = diagonal<int>::diagonal_iter, _Compare = __gnu_cxx::__ops::_Val_less_iter]
__unguarded_linear_insert(_RandomAccessIterator __last,
^
/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1923:11: error: object of type 'diagonal<int>::diagonal_iter' cannot be assigned because its copy assignment operator is implicitly deleted [clang-diagnostic-error]
__last = __cut;
^
/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1937:9: note: in instantiation of function template specialization 'std::__introsort_loop<diagonal<int>::diagonal_iter, long, __gnu_cxx::__ops::_Iter_less_iter>' requested here
std::__introsort_loop(__first, __last,
^
/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:4820:12: note: in instantiation of function template specialization 'std::__sort<diagonal<int>::diagonal_iter, __gnu_cxx::__ops::_Iter_less_iter>' requested here
std::__sort(__first, __last, __gnu_cxx::__ops::__iter_less_iter());
^
matrix-sort.cpp:161:18: note: in instantiation of function template specialization 'std::sort<diagonal<int>::diagonal_iter>' requested here
std::sort(d.begin(), d.end());
^
matrix-sort.cpp:17:19: note: copy assignment operator of 'diagonal_iter' is implicitly deleted because field 'm' is of reference type 'diagonal<int>::matrix_t &' (aka 'vector<std::vector<int>> &')
matrix_t& m;
^

That's a lot of noise, isn't it? Let's focus on the important parts:

/usr/bin/../lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/bits/stl_algo.h:1792:11: error: object of type 'diagonal<int>::diagonal_iter' cannot be assigned because its copy assignment operator is implicitly deleted [clang-diagnostic-error]

matrix-sort.cpp:17:19: note: copy assignment operator of 'diagonal_iter' is implicitly deleted because field 'm' is of reference type 'diagonal<int>::matrix_t &' (aka 'vector<std::vector<int>> &')
matrix_t& m;
^

Ah! We have a reference in our iterator, and this prevents us from having a copy assignment operator (that is used “somewhere” in the sorting algorithm). Well… Let's just wrap it!

# we need to keep a different type than reference
- matrix_t& m;
+ std::reference_wrapper<matrix_t> m;

# in comparison we need to get the reference out of the wrapper first
- return x == rhs.x && y == rhs.y && m == rhs.m;
+ return x == rhs.x && y == rhs.y && m.get() == rhs.m.get();

# same when we return a reference to the “cell” in the matrix
- reference operator*() const { return m[y][x]; }
+ reference operator*() const { return m.get()[y][x]; }

# and finally in the assertions that we set for the “distance” and “less than”
- assert(m == rhs.m);
+ assert(m.get() == rhs.m.get());

We're done now! We have written an iterator over diagonals for a 2D vector. You can have a look at the final result here.


  1. just because I'm used to it and don't care about your opinion ;)
  2. exercise at your own risk
  3. me in 5 minutes in fact, but don't make me scared
  4. me in the next section…
- + \ No newline at end of file diff --git a/blog/tags/admin/index.html b/blog/tags/admin/index.html index 7e56e26..85b09d1 100644 --- a/blog/tags/admin/index.html +++ b/blog/tags/admin/index.html @@ -13,14 +13,14 @@ - + - + \ No newline at end of file diff --git a/blog/tags/advent-of-code-2022/index.html b/blog/tags/advent-of-code-2022/index.html index d5cdae2..45b6868 100644 --- a/blog/tags/advent-of-code-2022/index.html +++ b/blog/tags/advent-of-code-2022/index.html @@ -13,13 +13,13 @@ - +

5 posts tagged with "advent-of-code-2022"

View All Tags
- + \ No newline at end of file diff --git a/blog/tags/advent-of-code/index.html b/blog/tags/advent-of-code/index.html index 208449c..9f8a276 100644 --- a/blog/tags/advent-of-code/index.html +++ b/blog/tags/advent-of-code/index.html @@ -13,13 +13,13 @@ - +

5 posts tagged with "advent-of-code"

View All Tags
- + \ No newline at end of file diff --git a/blog/tags/copr/index.html b/blog/tags/copr/index.html index 3a160b1..cb528bd 100644 --- a/blog/tags/copr/index.html +++ b/blog/tags/copr/index.html @@ -13,14 +13,14 @@ - + - + \ No newline at end of file diff --git a/blog/tags/cpp/index.html b/blog/tags/cpp/index.html index 7776db8..5c6a2d1 100644 --- a/blog/tags/cpp/index.html +++ b/blog/tags/cpp/index.html @@ -13,14 +13,14 @@ - + - + \ No newline at end of file diff --git a/blog/tags/index.html b/blog/tags/index.html index 4a82b73..38975f0 100644 --- a/blog/tags/index.html +++ b/blog/tags/index.html @@ -13,13 +13,13 @@ - + - + \ No newline at end of file diff --git a/blog/tags/iterators/index.html b/blog/tags/iterators/index.html index 400c077..3e80f08 100644 --- a/blog/tags/iterators/index.html +++ b/blog/tags/iterators/index.html @@ -13,14 +13,14 @@ - + - + \ No newline at end of file diff --git a/blog/tags/leetcode/index.html b/blog/tags/leetcode/index.html index 12ef649..115556b 100644 --- a/blog/tags/leetcode/index.html +++ b/blog/tags/leetcode/index.html @@ -13,14 +13,14 @@ - + - + \ No newline at end of file diff --git a/blog/tags/red-hat/index.html b/blog/tags/red-hat/index.html index 778decd..b395c6d 100644 --- a/blog/tags/red-hat/index.html +++ b/blog/tags/red-hat/index.html @@ -13,14 +13,14 @@ - + - + \ No newline at end of file diff --git a/blog/tags/rust/index.html b/blog/tags/rust/index.html index 586fc4e..2434aa4 100644 --- a/blog/tags/rust/index.html +++ b/blog/tags/rust/index.html @@ -13,13 +13,13 @@ - +

5 posts tagged with "rust"

View All Tags
- + \ No newline at end of file diff --git a/blog/tags/vps/index.html b/blog/tags/vps/index.html index 54bb7df..d4d1d85 100644 --- a/blog/tags/vps/index.html +++ b/blog/tags/vps/index.html @@ -13,14 +13,14 @@ - + - + \ No newline at end of file diff --git a/blog/tags/🏭/index.html b/blog/tags/🏭/index.html index 0162360..09f8c0d 100644 --- a/blog/tags/🏭/index.html +++ b/blog/tags/🏭/index.html @@ -13,14 +13,14 @@ - + - + \ No newline at end of file diff --git a/contributions/index.html b/contributions/index.html index 276a3df..421c0eb 100644 --- a/contributions/index.html +++ b/contributions/index.html @@ -13,13 +13,13 @@ - +

Contributions

Many of my contributions to open-source projects.

Fedora Infrastructure Ansible

Description

Collection of Ansible playbooks that powers the Fedora Infrastructure.

Contribution

I have adjusted the groups in the Bodhi playbooks after Packit has been granted the privileges to propose updates without restrictions.

Bodhi

Description

Bodhi is a web-system that facilitates the process of publishing updates for a Fedora-based software distribution.

Contribution

I have adjusted the client, so that it doesn't show secrets in terminal when you log in to the Bodhi via browser.

Gluetool Modules Collection

Description

Modules for gluetool — a command line centric framework usable for glueing modules into a pipeline.

Contribution
  • I have proposed a possible implementation of git merging that was later on extended.
  • I have tried to help out with Copr module after they deprecated older version of their API.

Pagure

Description

Pagure is a git-centered forge, python based using pygit2.

Contribution

I have added an API endpoint for reopening pull requests.

Copr

Description

RPM build system - upstream for Copr.

Contribution
  • Supporting external repositories for custom SRPM build method.
  • Allowing admins of Copr repositories to build without the need to ask for explicit builder permissions.

python-gitlab

Description

A python wrapper for the GitLab API.

Contribution

I have contributed support for the merge_ref on merge requests that hasn't been supported, yet it was present in the GitLab API.

PatternFly React

Description

A set of React components for the PatternFly project.

Contribution

When working on Packit Dashboard, I have spotted smaller bugs that were present in this project and fixed them upstream to provide better experience for our users.

Fira Code

Description

Free monospaced font with programming ligatures.

Contribution

I have set up a GitHub Action for building the font on each push to the default branch allowing users to install bleeding edge version of the font.

nixpkgs

Description

Nixpkgs is a collection of over 80,000 software packages that can be installed with the Nix package manager. It also implements NixOS, a purely-functional Linux distribution.

Contribution

When I was trying out the nixpkgs, I have tried to bump .NET Core to the latest version. My changes haven't been accepted as they required bumping of multiple more packages that depended upon the .NET Core.

Darcula

Description

A theme for Visual Studio Code based on Darcula theme from Jetbrains IDEs.

Contribution

I have contributed support for diff files, though the project doesn't seem to be live anymore, so it hasn't been accepted as of now.

Packit

Description

An open source project aiming to ease the integration of your project with Fedora Linux, CentOS Stream and other distributions.

Contribution

Have a look at my pull requests.

Snitch

Description

Language agnostic tool that collects TODOs in the source code and reports them as Issues.

Contribution
  • Environment variable support for self-hosted GitLab instances
  • GitLab support

Karel the Robot

Description

Karel the robot is in general an educational programming language for beginners, created by Richard E. Pattis. This is implementation of Karel the Robot for C programming language.

This project is used for educational purposes at TUKE.

Contribution

I have contributed some refactoring tips to the author of the library.

- + \ No newline at end of file diff --git a/files/ib002/graphs/iterative-and-iterators.tar.bz2 b/files/ib002/graphs/iterative-and-iterators.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..a1c4ca6e6ee286b6eb07da9befdbd07d08784519 GIT binary patch literal 1937 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 V;syauVH98g7ji{7P>?&wPn+4jvLOHf literal 0 HcmV?d00001 diff --git a/files/ib002/recursion/karel-1.tar.gz b/files/ib002/recursion/karel-1.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..d98f3c6a6abb0b6613103b1e6dba2e7216136722 GIT binary patch literal 6588 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 CoLCD0 literal 0 HcmV?d00001 diff --git a/files/ib002/recursion/pyramid-slide-down.tar.bz2 b/files/ib002/recursion/pyramid-slide-down.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..2ed1eedc357accf3c865164d5a6d69e06658920f GIT binary patch literal 1541 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 aKp+qZ1OkCTAP@+IN8?`)MUEN(PyhgBAh{s` literal 0 HcmV?d00001 diff --git a/files/ib002/time-complexity/extend.tar.bz2 b/files/ib002/time-complexity/extend.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..71f6910a52cd969a9b16729054d68b398795f04c GIT binary patch literal 38455 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 literal 0 HcmV?d00001 diff --git a/files/ib002/time-complexity/extend.tar.gz b/files/ib002/time-complexity/extend.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..253fa3ccddbf0aa46d70eaaac695da3a2c1b7de2 GIT binary patch literal 38678 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 literal 0 HcmV?d00001 diff --git a/files/pb071/bonuses/03.tar.bz2 b/files/pb071/bonuses/03.tar.bz2 index 5243e790f26ee95479a23804bd2662822e46f6d2..d490b2e661586f6507abab9eb46165eba32f64e7 100644 GIT binary patch delta 2618 zcmV-A3dQx<6w4H8LRx4!F+o`-Q&~=$z_kDe@Bf7SxB(D<|NsAg=l=fx|KIum0sshL z4Sx6(00Mv#l#~@Js!#waK$3`phXYMC&}e9AWM~FJ8X5yl82|tf9y?_RH|>?$5DDx zrWIG0T&k*=mbzguSwqJc)cwzE;!~X5_n%W27l$TQF zFj-0S2B{MGCqp6KCG71~YNe1`Hl@nl^Tnno`SHKOgP>I`+7n z?y2;>(`M&=eN?(mMLCO%-3mV=CPq@1whO!ICUjJx(BnxF7g=YSf1|OEe2kNsz10-1CGTcz zQm3bhsdLD2IT^`l^!u+q6LmB4`SMG*PZzmmkLfl3Y*ue^G-(mRP6^iEg*=?NvY9y+ zY|{m4n_0OqRWmoedN|vYl4zPIGR4J3(NdRbEq1bzRLO$l+}UZ~<(aEO(^C|GMk#5= z*C#bF^0j<}fA^S+3$}5lcbLY*%(CZVWAT1{7|eb;uGQNQ zs!(oHmU>?_AKg+|uWHB8RLx41trXynq@s3?#Zg&Lwfo<}{^l5a#=dE!*~H7Mh_$Ty z_w(VAe})@{VO8S7`C+5I_#Vt0dDUylZiW~yFID?rJHHP#yX{{isy;E%Ei-p+Z2NdS zWi1>rWMPb~mnmcLuH}BUjdl<9N#sbBddeuJB9~HJmk*U_yebm~IOSDBa*s&kS$4W_tRJ3et@A*7gngd!#EJ)xzl`G<(VoLFi{tTG9YG9I3a@N$lVGGLtEwj ze|)wZwA01QN3%N; zt!K)qHet2yy`_cRiNuij%8$27v1tude_B-hHX_hacey-hSrzYx2kiFCpAvj%K<|Zk z1cuXB=cluKG(S;EDoT5g*pL5ysB-;mXSJJ-QS(oo7HH-DjNeNZkLKl)>6Fc?>G&qD z4o71bJdQ%eNwK^7BNzH}IHNRZCwEb1^{p^3`#sY}=`yr(!p=CMnlJY~T=<-ke^1<~ zW{nLM91{rT_ap5&n0e9AjI>$z<~6Yh@2_$0oWVLSMFolm83Yerp3E7MAMp0wMLBvt zN9kPq&Um^QyJvblWc^6>ycByyAvVb>rq#IafkU)zIW#<@)yEJZ81U9B1{UDkA!@LRD~rCCfDC~IVZ|)@*A2I z>rmf1I|Odvi$s$o>W=lHfT-yHp=XO8Yc9Ab&E${6$rEF=pxAlE&^apjB^1J|oOA$x zT;U2SjN7(ZHiIS+rV`0fgrpQ?Xk-W6y!T=T0;6ILi;!e_f3gkAUFwR+e|-?bZ#bu* zZT)9-Fz3LHn@WFKxWT=?%eh!W#pm}ho1O6-&iQ1>sEiEk<{B{V6qpLsM^hcu&nA~k zx&@mb3`OFYO`MHkb!s(0nQ99tP7SQ20G=e+>$#l%+$*NM^RF zikdW>Y^Slkb>z`uW|P6@qODY=d~6sSj1rYDl^pUGNak=gdKftooO>oJPa_ugiAT&* zNX*)G#COM4rEuQcA5`KWFUdD8Zkoa&n<$fK6Qwnh`Egs(;@=CSdZ1m-e%(s0jD=K? zKO?F`AT(y`@DwYuf6%!Z7KEsibV2h5^C_CTmR;P%JAbv|UuBmnkhIXre|KL8GBBIy|Z6RH^i= zN0(P*oo2}<J9O4b>6HaeBXp(KDGz<`4ENbcf0UTQld^ieTahp6Jd$Rg zWc!1692>q!gm3F&EWx`7;e>xpK{31z_9ca;IN~onF(=8V7jh<$xQ9xpr)Mj4im{pzV_JK$wA2no0*G zA)P$g3Z_y`P$-cn0fNDD6%=eb^L*8yb`+daXfu;1I#Xo28kebSMI>~kkT#Z7v|mDC z(H+aNi7G^}Z`?Cdg-KFolQ33A^rv2kxmpO6Q-~&KsVI?=Kufz delta 2632 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 GPyhfk;dKrG literal 2338 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 literal 2531 zcmV<92^{u9T4*^jL0KkKS^tBd`~U{u|D60*Q9)h*|DS*F|L_0*|N1}x0ssI~00>|T z|2*}*PTOmn(_OXP-Qg+g%eCu@XfD9e2TU?SQ^@r}`ld!rGynrefHDmL0ilp&(?9_A z1d<7eMol!PYJRCUf?y3JCO~9l%t@fY1Z_v^m_Q_gCW@HU^)zV7lSY6tXaE2J0j59! zpa4ioDXHo-^qHgvO*96NP-Hz3pa9SS0000SF&b&0&<21200x5~(?HMxqd*vjfJl%) zO#(DD(WaV)Dtc;qm}+`8F{IE98UdhaF#+m(KcYXc&-+=y6fr7@fuK&o0$ttbf0M=K z+8xNMJP~3uIJA(8qW0KK#lKT!VkI4=tMV6OQMzm!ZLn?A zkCAyGvP#S>+Cyn!qNt))LJ)@~p~n+yg^~h@VCGqFc>4ON#(_*?*OX-kRhAk>*TNZp zID9NvrrZttL4?h*A{=Vv5=iD?k&=W$LJ(*}1R*QX02{|=&v->|xUMYbVVWzML~N}f z8+piOga8|pU3_o)e}>N&-sML|v}*%x=I-t6ro6TeleD!Dl7*HOAt5C%Y&OiNPpai> zsI04kk5cZ#gnzQj_KeZ5G-5t>MtTCggOa`5#MUMaeRrz$5RX{RQP0?{5ws!lIphtI zoYN$VnbCu8uB%wai%cQkd5FEKR#XbHp(PI~l@6J~^**g;7+XyFsI&`9!=4e-z6;9p z`R%2Vh}>NBaC@N=@yh%%&4~GGmJnsevu&tXM75A4Jb4z>FfEdR-c|>uEv?p3b`Xub zO9R7%7rZjdoMpIn5U)3p2B@v(-9e_rx~NAf-j=Z7FR-!*h}aGnMm2%i)mSR)J1mpr z)K0+Tv2NwC-DvoibWFfw6GKK$)zFF-z`>M?#-eBWG~BIrK);I?r?%K|Uj!ZfDgV6 z4Gkk}0L6_PJ?=*OFv}?1eh-c}ooU*4Ro6Q`RE#3X6GxR45f((3rCoDvmXe1h{pMv} ze%aR>*-{K(>VkG7aym?3rP<3S#aXIPJM7TMzH^?mZ>v3s;7=DmBx(kfMb7M9ODs}N zEO3KK7t`dh(+UXMOhwGoXr&n)v?6UD{Q?Fl6u9MWtj#=rzlVd_ZhT|yAov5&jk`=? z7GtDn@e*4;VNJRcSJAPtjZljrp`&@D)fezNM zLr74%O=hYUZi}E&A)^Kv70jTOMF_(8MfMfBl7~hRD!ngWq3DS(xP)XQXorSHt5tN- z4u**m)(&1RZ5?UjU@K~<*lXoMoc#HLnw6!Pjb1F8J=dtoR*Hw4RP1S5((NCEIegky zEMbmh7ln+)LuP2yoeBvnSM0b_?;iclu|r|pr|zVJVhBbu;p?k==b&caup|?3nP9>F zbCfBNet?RKh#2u*ofR`OTmRb6>4By+TQyb!V;oK7h$2+Hp`92l(gsc(-B;>C1(J~K znQNl_l~sj4Lt;3W+Kb0yq&WQ@rgUU45Hl6^?@XdNK2c-SE@dgR3uoEH5d?v3t+}}D z3RhTF1}a+($iWzCL8&8R=mOc)NgCEq6Az9EE*4BV#7mh=0meE|X}Xzb=Ic4H0b7Zn zK{0BQGO6GjvOs2OZR$LIdX{Rn)AF&5V@-(bM*z?o#bIcS*oM!rpo6HA5E-zb3m`Z$ zW2VcPan(q)3)1YB5VORT#g`5`e>TN1-Y&K#&F|#!L7`^OE_rEtmyr}ldl-(H3qJhM z9-+APwDc5?P;PM^iqNVaUaMoQBvi60gsW>RM81+VCVyj@2APzrlCBOz_;1%1eTl&3 zECi3CVN=Al;u(g3&X0rwj26D(A`40wnjnRt<0@2HlwYn$ESSTB=vu7IglE&!EK+Z1 zozjCZH78QGL-2@=MS?V4*lArbu^VYYlF1I2>Lp_d>uTYEQ$rerdpo^wWg&Wf4i*C& zExGLvE!@^fk$UG`yCX5+YAB|CM#^R#$w;cgMY(7lhz|a9mCzW3%U8XNm{(7{+3ufl z5Sv2OXApGn@lZX4!d^0Hz_vwSkb3SQN|hl5PRD4=NE?Xme2iuU0)-Uvj(&L`Ze_~&U)ltZUa?4jB+=E2H5lmQ(6%ANO$f~jDtt~^%E};)-aF3^4+px_ zyuBl5A>+vbQtu0tYG-DmFlcBRASIM$StO_h(KD=(*ib|nATlM`(NlLoxXR>i27}RZ zH1XSzU`s^>QGv~A#cblQD4^k>#P*O@ZtiVaJUe9>-WCTjcAA`^+j}#nl1yHaq;*~K zvf*n-IhJ2H=dCEv^`SEeK(aR@oH+!BG`Xb%n5Nr7)U@Du{G!8m0};yf7motwLDzth zm_(IMn#e9g5IZ~A-R2q@LV$kE7N|XTiFwHJtLqDi6>_v)sz9o-w6HT}C^MQ0IOKm6 zW|g3nhQ{jz2}{>Fx)Cvuh@pnma8f5@8%?NW%wYK0Y8jsD7B-AkAVvf+rF@}tN+yYs ziWtDg)VYpybAgIT*X@gM&NXRNu^JogA6&P|XF#u560Nipk~gC?6TKD}lUqfI1*<~} zpHhKyUL)mb*O+F+bPWOP5;+6XaL>a^jRNAt!M}G8o@cr3Z$3cxr|t1b>U@ZVFb(6C z5g?*YoSPyE87#P$6hk;JG7?*~^FVOg#EedbcwC8>axUD)V#cvbbgn-aEktZ)m2hFC zF)uVCWkutk0F>)u_R5jSQ>|GtDG0Q!Yb*-I4&npV!w|fKj)SObbS%Kd3o4e4w3yOj zc?GtIDR78}=B`C-XF4zr9ytRtLWPSS*TriJAr?YrWjkm|JF&)f7bZkb=69 zi$UFK;4-*Ez6fs1bH(K0Qllq@AxRnb`iUW3M4=W0m>G#?FAJz^@09uk5G1r{FhrBI zDmcJk(@BZ8F-;XN7ACyY9$uqXDsz%P43#MP1a4|J6ZUU`B52j+lCYqrjOG+7EJl-c zttvm{b4V64a$Dwwj~jF6;P4=?reBmYM?To{53{o^KodtpaR3`mh(wDMF7&Y4>^FJt toWgUpBxC}}OJIW(y@^SCj6~46rD7;tEwR)gdcr~f7ji{7P>}zFpZs)drI-K! diff --git a/files/pb071/bonuses/04.tar.gz b/files/pb071/bonuses/04.tar.gz index 5f597fa593553f192e6910f7e5f40aca47465058..3364059cbf2b742326c7a5bcca907df5e4d0ad7f 100644 GIT binary patch delta 2479 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 x+!Qh#m9bjdHp$1N*_fetE&W|b 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 Ez;jN^vH$=8 literal 3635 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 FKM=xT(X9Xg diff --git a/files/pb071/bonuses/05-06.tar.gz b/files/pb071/bonuses/05-06.tar.gz index 87b5c56d90659f62afea7b6a86d6b921e7d2544a..02c9c76e821501bd83b1a9fe6c3b082d42f7d925 100644 GIT binary patch delta 3482 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 I`v72}+;63%Zw1*)X2?AWp7-OX}J(~PWEi!I7= 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 H0C)fZh6~^K diff --git a/files/pb071/bonuses/08.tar.bz2 b/files/pb071/bonuses/08.tar.bz2 index 0d0eb4e0fb8fdf85c83a2f4a8c196c7e392a9de5..227963dd0055bbab519a0dea8dd9b49faec7bdfb 100644 GIT binary patch literal 76275 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 %O; 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%0AM<8JfCF&>q zY(*+p-8U={>4}5qSZM7C6*%K2O#XP9HEwWWKC@9a@vq5RcnO^=sYMf72L=D6K-usn z`J|9Bs9VaSPJH1*yjda*F31#VQdQFzi}iFcw@>D(ZO2PaZFX2vQQ50R}NA=PZ1o`!b1l zTl7*|j@br(sc1%tjecK#^Omm6UD$L(8^YBoS8!{2+)I8fpDSD2b7f>HoFHI&=cNdf zECMQ_!<`Mq$6Tm_?B6K#u>5o^+I$}Dl%9E%$>l9? z0gXU3Lnut8ELqmZ_4?a#oqSfKg9C~4VW(FE%t#-B@JONH`MFiMt^YBs+?O9t`9x@a=;*x?-grr+ zA%TJO5B*j(3ENMyp^vE`Tj5;Bv2=PWHhmFLaBl&?@5q1A|vgdp2W*X||A zj2|^bPuTVXD<_<5p`SX?uWsL&Q`cs%qVJE$+x9P)86jWt21f#uWa)$(gF06oEX<^D zbn*IY$-Z%_W9{Lb-*|80XoaV`#Tv@ZiEZnaz<)&+u03Q(yFr4G?~o}ju`lf9^~{}T& zaRwjRUCzY*J!8XOOTB=ZdM8M%%fe{9Pqcouvra+_yXR7KzfscpiJ?io$7;WKuqDc{ zh-Od>)|+oQ5gYwM9H9I7-op~4nSIqihQIm9&)Driw`ZE%mxDie4s%Zj0?0tfH-%hl zoUy<#kUyRL^H7s7MZKaU+LGBoKwgog<-qV^Cwx$J+{;{T-b!hmVmfA8IdFW?s7hp) z_d>aF@QOOuO=>ACQrpfNOvy&5yJk@Z*_(fgA3R5+E(myFF?x*Ktx6W(*3CR)OHPv0 z({=l)+(c_Wn4A}gqx%|qLlyAZb80BMCUm0y*t<<5iD!Y!T>)UZ?(Jvjco7LepnIGn z$k#j8vEw3g^;5k~p%3R|;wqh0+5mc=P^)~Ib!13+t>rMkZtUX3GoZkB}7jTVgLV;3VV zgROl#PbY2LleLvkJb-%cU|JH7cr0TD*Y&63mhZU1q73?uY5(PUDq)p(D!g~A zUax%0Fedh;n3631I{sq zV5T<@dL50!tZl>4j?YlwON0#}xjE@RLFL;vB(E791fHSjv%kI) zCj~n9Se+6-nM7?SJ6w4$rTnlsDWMLz3Z5V?V<#9T3 zS_#Mc8i@o5X|y%pC?zQrG?JQz91X`YsxYS-s^w%ri9Z!8aV$wK99sP|wvXk8MB`Dg zdLlGVy7J+a{2227c43j6v=Hy}&Al_y&t8p^!4I6~x+czBl_6g>9NoP9UY< z+^#FA@LUif@Zf6*OqzY#6nn9v=Dw&fR&4HU7KN2Ek$#pqup88ny_3=VZg~9y*F%#W z9yJE%-MxS6NT9uAG$O4QxBnKd(#5ivXpM;ikOnu2AoNWLdml>V0wGaA6Z{3V%ZHV25i(kWElSm@O0xIF$6*$hl{b7-eDaP;2^VMWONU}PTxlxfj{ zS&mq?R({PyFQ9-}^@~#1Y*D)qfA44PDXD?`CI$%I7jg!F8;3kCVXed-k~~fOr$Vfy0g-`S4S)lD0bz8=VTdtHjtM7i z20|A{nn6#eoh@2PvY*c=aq_HKv*M!(owVE?t`?MAfAKdf4Kxxg)1G(zeWZk5T7gU> zd+g=8C$R*b{~cd3+f=z2BJl%?G9(b(lYxC7cG}Ahiju_tdsH_EYM{?mG^hoaetOi^ zNaXSGF#cY@$~&&@D_3SFdn79g1vI6HP_cB85+%*SwEd*?vd#BrD~o(K;%cW3!B0O?Y!00_iKJ5j{&^4044F>zYT zwlf(Ag}>D=0(W}EFcG`;KIiJ!37Sgw;pR7Vh%7LdbaV+s7&+?#LZ&=$kJor|aP=*& z@fldtvVwjozQeemH_+pM+%Mow5UBiHlG_NvwNfu8Jc@!d%|;^^)}pC_)za16?00lY zi(k*69qDQnIm5;#daSz^nLxzzz*qw<5AC=3ct1UkT7oh){=KqMBpQo%&pY;zLC}l7 z#}sa|Fvl{Oil++S1$?a?p%lh}%5V4QjW26B`ImBml_aFOF%IwxTua+E!~rlK->4oL zLWBm$l0cvgMFwthBX?3J`JYl#)8ic7_z zyB@(bP!E1Rmv@^M`Kt-Y%GBr*XM!{gJJ5PtJ&v5m&!fwdWXo@f{AfGf-;*@>qW$s= z%!#SP%ci~E93u+$J2*bKqhqxES3=9@<)O_6CfH2S$E?i8Rti4X=W3o05i2&6fP#Q4 zjar%ie4E|Zc<1?1`^WC@@;r-1w#bM5^)Ai|KRzpO69?U^ZjG_+TL9Sip*3Z7re$7P zmC_1oaf(X9!rZkN%j6-p8f=d?kYRI!Dx1ayhE07BjvAc3Q5B>11=}{oF{|hn`8^MC5VIQOdspaAJ^*CjfV`sU_l@#<$$N zb;d4C7f_T2B%mD05&$dr5FQ)k$o-Mt=DNE1Y6u3DxrbWS@xSw(=-ZR|6N~TLG$9NC zyKeEEc9GJ|)r+3-APkr7B1&@{P?B13*R7uh!RBOHGS5l8Y~S-SI!Cuk8~N|~lW7wx zGb1dICRsN_w3kGnZfU>Y?)1wKr7!jnRJk-$V@?d@yqhXr&kCOJKiX-SERPmiB*0zj zGvsd_-QKytE3>s$YE5Oka(xTbEt+V^X4LFSzFkV+k=WM^!+>azsngme^_`J)CrGF9 z4o+NameAn=jP+{VAUd?xY9G&U-Xk-KAJ?pg?9eeL0q7p8?;awro;8)xO4SmpPT-e;4Be|@%pU$Wmw~iiC?wPeY6g(HFT`)g+S69@FhYlj{ zzx$*Y{}2A47UlHfmex+7@S=VL;J*?je?IzNvtY(oZaK146@n8KEEy)!imFZj%3#uN zhvey~qwhLoQ+LxE`dz>pU?Cv({f7bk_A`XMM8G;|9Z$Lwgk5uVvpvQ;+3&fPB1Q@% zx5a)Cq*#r_FjDr8B6hx=5zBN@gW-*yf@h(uB7b-n}7I2@ z)OjVnDLf`{vh}I_?CSx~Vrf z!}Y#LKweGBb>xf>_3GtmEJFjV95hiHnIF3zN0PYaZ||I$G5d9^KG?73C_1%A@ zlh^s0QN~bIFf?dxMkfMrL6!n#ODVAyrVnDvseh#yhdb7j?HkDqcs{_hW*luu#xZcZ z_v|*L+HX>ro!=IByt(!|G6}kO;{A!XMepbLuB7-$vzdtnKNzt3yW~M2(cH-{LK9rq zoj5yytsJ7)a{lth**#mX1?q$pt`+A1u(R|aHsjY|hlS`S1wj0Kd}mq~uLq{$-gRm2 zK;QfO9#6|^anOfnErg-u8@N>$HYKKfUd`(F(?Q5vmyq?W#(fSzjORMjjV(~PvW~<& zc@4Rk408vN=B_dC4 z+;%S!WUnJhvSixT_Q;E2p`nV+BmxY+gVG<~C9EQ*@~ogGfJhfFB!M@aVWnl1v?X?n z?dANu;9!eI_O5+I)Hen%5!$-WVC7Tc3g~@wR4@*0*d9 zmgfa*FoI)DKvD@#-;%Jn@rfyX`&_T6N3ZloCpmoLNqRSar(yn69l|UnXe(;zT z=OAd4uJlN0#jQ#c?!I1mz{{(>0qE~`AxwbqwXFo1{kUm^$!_iP6sr^QY7}HC91NuK zRD0wOQ@g&xH{5h@tQt)8CRt0V1m;4bz#fUUQbBN$?22i?tC`-2OA4)WLfi2P^XdEh ze+fP1^<%X6+hXg7K_r7r?sMoRU;8?l?QS+>bsHzn$JMpb_(9obKbkAcG$o>fIWTg0 z(X9qUR_c_yY9Iz6fEnaXaU{~heZoKG8xUeuyby=TApZr8dZ^Y%s-)RT>)O8|`+Y;L zTYwP8XP58>iB&2i{v$QE2UkH}X!hZOvXe+;8Vk5ThxrO00nLu;>=lJ4Zsh;>Obb>)-gX_kzlK;?ds>2|N zC1sy=N$ZpEJL+`wX3wIU8omQ4-kRB+Py@pCK02CUEvNTy#OurlH9614 zBxyg*qKu0R1e09c7+d*RDe~>WEsF^VAUf5=|0|OWM)tOtYde*xBsfCqow$;}w-X2g zXT6i;X%S2R_MHnopo`8;vQHy1f72}gVep|k=e zv<=mqvx_b{P&8&t^u}93?4^Xp6>$f-61LQkywVQ-QtpZ~X3#Uc*Je>$ptRYgABxA<`vbm9Z1{+BiE=>qv9#+;xkKD zvb7y~(w4jYWt!;utgPzh&uc zZ%SvxppdT)1M`&o-Bc&Hd1Dr0qUptJO-QGM6T3@^1jcGzHER>K*E^d5(ExpH#>C_NCGdsr*K@C zZiIkd^3d+*?W}dG!>go$klkg;>=rOP>RB~U)%Lq$_KS+^?djUw%z}li03I;l0PubQ zRs^~GK&7YKxMTC*pat|2)c?2c2(Y2Nj=(Ux7PII7W?6YI>AW>XL0l)N~iJx_G# zVm89@Cgq*VAhr6B(Y=N~RI8sAUK?8kVVUHe+cH;ejz*;jkbLH9$k6?iPinp22y^R% z<1YauIM?oC=&r1_69wTOhCqSDNRY)k-}l8D&uz=2x}jr0$Ng|%^WBmRgR6vk*KIy0 zLX~UHhX~(fPafaUMny$X2nYuoD~9E$MC^|}%{+-}4m(SN1fY#~S}2N=IR-jKynqfY7`2I*{_+GCBwRajVS$FeV&@KSq*>6QOd4)oT!oy z*ZaUK6g&~^l&Hd6_FG;ylJw^o-R7hBzQKh_E}qSk@?HIeS!b{wK!J~LRK8b?Zp41) zEdCrGH<7|15Lfaqi9>=h1Q5l6Z#GC&c{R^Zm&%x#(lx;Z=dikPlPB@|WtVIHWt=x6 z)7?$!CScFO%lXTM(184C!RZJT_x9R9PQQQGRjG25+KQn@-*b&8R?*u4YUHtIZE0_D zb{@iF4{bL$NS319qfY|LO6|q_9F9vE=_dr^k%6K!*Vy1UVJ)2%@bN3YJK~DFVE`?Ff+5TNYQPnlHI1(E3mid^l>$CVZ(SYy ze>|6y1;bqe(sY8V|3QWR;FX<#N}0y^z;BgyC5yHT`jE(1lFzbU(eIQoB!De6G1aR6Ji?)dh*T zsC81~9CTE19oA9WSusamP;&33~P+Xdn$3VPd}7-hZ)R zGYVMZ0chNC_=5_A=%V>X4F^ymrsRi&aTNgOW`J?Ss6fuyOp!TN7anonb6}_tdBQfr z^z(Ej-N+7QKK%n+@p=+87k-ZOchk_q0fFqf;k$i5zuZXJnK7XV6aM*5_hCV&QbSwb zw#6UISWHovP@GypOg2Os1zv`LOFt6L{Q0Jg(b;e@jEB!0`5<41klXL4`TcjL=oa0$ zdnaE_o^8Ko6b!0<&gZWrF%{L%UmBg!+%XuLU{MaBcI4L(Vyq{gBFcB4q;}Ii4b{?} z?i&4drGC^$IH^@Ndhm*VUtiHr-{d#K`}Jr@fE~Hqhb)mG=-kDSP@$wu0m3c{rEWFZ zYY0iTGPC@++D0ji^K?uj7{CkwB7^7{V(e}5%6rkLQY1K=IyaM% z8o&NdDSoL&Itc99BALnoJC39--mYV?QjoP_G8A2Te^W10R%7Q-z4w@z`(>8JVbovD z8Oi-^iJ-sTGYim`^obCcEOxbDABfi;AVWx)`fr*8eK9I&O1|1fB^?Zz(L=_X5QH&i-?3y?#%~*o*+7HaG@2 zW8NcoW0ZdJ*W9kek{TA9PnG|!T~XG9Ym&{)?#^%V8e>?~!6HBmE!Q35-=2pqt+SUv ziUvl460kwEhwq;p%LCFfar4MN?%=iCjrEeTXvgkv_Dj^hAGr1u!NU(MPtFJwJm<+5|?dALX#?}iI z@-stWRZT1Y(n-p`WAMF0Z~YFbfR)3WdzS**5X~nDG{Rq1g}%OpPGc9mx{BmNX47iF zOYGq)bjdr~qF4CJ-+I8uy8oZLyveEkh%}>7!)YML1)U^k&DD53&p1erf3Kw`{hPPP zr_xVCp*z4mh^5tL=NkT&3_pk&v?StdOh)M8$pCM?U@`$T&8GC=o9vnA8Vn)E{7!0Qm$P`8@Bl3t>sDyNpT?xVrLfne*Qa1JRe%X;*t6X<3FoT^Y!h zSiG4Rj@x8|*?_d*?_)m;*Kf&|C^to)xeP~8M3%LmZDO*W%vJpuGpm2+C6VVH1X#lN z(nIB~DSP;Xx)@{-Q2RtU0?bt{#zDWI9s0J(sDc5@m^faVtD=|gdj{>l^~-v_V)zhbw>>%DUFIQldIP#0 z(u7M*SYDjq7nPcO0ubX3fZQkrqs^%XU(qSpm&xT98K01N3YG)4M5EC@?xEicaK^zk zaO6>Yvjd843arOmh~G4w3mUis!_JBp?D$ht*)Iv~w7*Fy&F5b44xq2I94T?_|<7t#P?N%S7>{#}Zo?~;^!ZJ~H#mHAw`C-@z2jxrsDMS7@A_8xQX$*Eh zvX3jFAyH@g;GsGxZ78y#m*CelX`z6G1y->A_H?Yp?l{9@BHKN5zx$25;l(A2_NOjU z>16#5UXsf7MWVigl!88LkF&MQ+*29dV5eN2Kfhiuos5lfJ}_!PcDQsoaYI%$C23^Q zOrY8v+?nCj)gitRoU^vkUF%Yx?zm0x9u1^v{#e+`dfnmFW(MP4%0us9WX^V6m`zjG zO6FhA2-M&Pfnv4rd^3AV?UvY?m)-&^VZk!L>KX=X>}S&P_iK8Z`1@YZ$HJj;c6m&5X;-yWWOJxV7ajxysF>M*R0~P z#$JNIsHVAMzhVe!gH*(3OyIv4SVr0QOlYK;CI?PO1q?bZvrL#A2a%KCs@6o$^*Sm5 zs5!uhjwjmLXjxA~IjF6LbAX4&X5A5jg3+x4%u}I0lD>snVIQeU?CTg<`5o_WBQ6X9 zQ41jIy=0Fq4?NI3otJmvn`Hjy&D1W|^*+AXDi$n`Qu>g9?N9v5o&qwg0tEN4)G;I& zgDhc>(w(q}7KC8ucFi|yN^J~?(q%kKw};1OF}uX+I9I-HJkf>(Ej^7dcTuY@$2NOD zq(PR6AU>xN+VePwWMED^ZD;VM-CA#AYrbt9cTaxxQ)%+K1LDr`K!a@ZQtxvlA7yVN zpFL6@kKpPdx>dO)cg0K4=-XH@^X%x5**ZP2C_Z_b@_E^PQm5kF;G5@$K41Naxt?X^x(ZO7(T>u&G%|&o(m`kwHFP1Fq zqEyhq1Io}eF2`q-C(_0FXE%qejYN$RJn;Mxbml2#uN8>fr)&GEqe3po`Q-4n03yuu-MejM2|Rn1tx zf_T_vsvaf?ZD^^moe1lHt@ihyICy%ef@=E2gu{)RPp_VVoakTd>u;M;=!vduJVB1H z!gpn#Fv#9IF_oAlRu`W>J>K5Y^Gh+XZ&dkGzFvN@V=U!~Up9T!42f?Vv@>!~;XWva znU2mskZG?+Al2wry;RPTLy}OFZQ|T|=Z+kXgv?yW&NnCVb(7;#9JrPtyIN~>BE0^% zA$@tTPy6eX1waQXQJ0c>;4l?PPc?0gP}^#GP|U+)>4yW@(C?>w3M_RfuX6W7JcOoQ z;)XQ7=RV%aF+@QYUNh}1&!nflQT|WQ1v`tfdvVR~N4xlim^xO|eERR{pre5?O|_PWiN(i zid@!n_vA*rBX>KAnHZev!=b=Zsriw0DY~&as&@!DKQMv8cU6l~QQnHj;>?VJcm|lP z)`IyHNBK@a^Pu*Wf``N0;H$`Io^< znz2;A7U?WBUQjpE(`ufXrF?U z8ChLt6*;W_(cxtWjsW})u5I`f^lqj^u1&4zB;He$4V9V_-MUc)^m`!EJ7Ey(W6T9? zcdhGXA(;uF{Bgk{8wRv;<801>fTU>iY;+TG$RTpeP;K_`s>Ax1Ycy2keL#`(2lv=% zuhuD)X1q`0`B}^s+c2c3cZHH}ImpkjL(ox}{W3jMaq>kyYQ*zTY8EJ~j?AC)I7}~e zu7Ph$7y$c^7KKt~FhEncZjQ3>-t`%2+_>7MN6#5%y@)=UK(d8QqJaIlSJXF{W`x!#_f4Ye=*-2ZA)4VxT68aIiK$;u*&$ymV|;((l;% zk3m`z1~Z9GC&lUW*Y57#aM)OuN~#(de;=GJ1!c@v)}oVVFeG?goEI-H*=fh@95SIC zE1EJzpWJa%n5%5Pp5A}He6c!K^h>0X>>|VlM8FPP&E@+UsqL2`oWDonZL!k_^&P+A=Fr#aKH_|ExGQjP4}4l_ z6|gZ5TDfIt*m1FIbIPcrLFotx&8#A?&c%8J{NkC^CR9tuyUVOPK9)@v{51ebG&(6S zyqvjV3}M90bg>C7H?O>xp@MzKk8Kg;N~(Vr`zf7~=*@j1+{V)EIOf$Zd7*c~Pb)>= z@b;O3Ij4_xh0A-Od)#2~fmP7J_|>RV{@0T8`#8jlMQm$_42& zJAOWxgQk`ma1pd|e;SFyrc(Iet9-_KN-R?nXQ$TmTScJ!1PH)`6Za^9pvROf-T>y} zy^YdecPVdpZw2##&+!8vXRn^u;;QVTEFboH(^h^N!zZwqz|4ssx>xAN?9{ZAmq%$~ z*>#Z&y4!arTGcl;MiqwO|9W(GrgUy7Z6-LH>`jffbnthKOZkV#56e#i0HEh&JnT_F zx>+ULViezSeQj4gV$Pf-l%xX`(4U7n1AI;!3bDuJ@7&7zKP_B8BI@RT12a+!-{2{2VGss5SoH{6BjlfW+s*C8C@O!zB zQE&+abUey&JnNlqtf&_l0~smJo|F?FWZ#+>hE3bhQU`{oV@}nNmz&>^S6kdynAZFq zjTw9GH!jM!G8&y&a5He_xs9*5vh@dyMK3FiBkCD^!t9I6qwmMaEFC5pH&+mAwcA zR?D0ynE#^3fs18!2gPW-trT(DIlYXqpR0x{P?jR{GvTFF2OgbfM%k?cy8)+MshRKK zR!6k0jJUhahC`(^H~@wd(aBzGN5YmfVt{c2i8-PqvFc5px65MgwT2t_yICW&`aZiA z-YulgWU~1j^7%-uD~gZ0w1>}B$ewmEKHC!gi@oMO4vgM&aX!??k5i+1aAbEG`PwD| z&D|2?nSwO?ESDH?cD}Z{Vt`5h82oU}4lE2+-E$0Vsj}{$ZS3^UPs#H_lPf9K-Y<^S zqtj2^DupomjN@h=li5{GoCChq&W_S5%-E^UU)@o)+_5c86Vq>!__2}qbb5~^zLwKyZ>cnG6cFdl69isn+M~oxNX)pevz+DXKQ`%f!mMIdA7@{ReB9>ue&?vDy074cRWQ;+Qk34|=K4xY^-ZPU6DX$&~ zkrW?1tIrZ;==ZOF^0wv9L_f`BpLL(i&Kv;&h%NeoV@CB@T7tP?*gJIY5#D(a?Y4;> z*^`=%2c_FYw_*A9x9ALs3Wm*&QIC9H3F!R=sf%WUQec9)BKPN31Fw3o0o7FvBl=im zY?1$B1E7_k@?@|QJrr<;2UNOM+B_}KzLRy3g)k{xSk%fcNO-`v$2((rid4s+&N;~` zS&Z5y25`8b;_ob(v+6gp3Oy?o1MU*aT3shN!S9sy$A@Qp=?R-Sb-KlV@KID~RZN!6 z?0X{IfFrsd<)zS3O~EFak_cI>MQU1Zz9;dT^I|}SU~nQZ`*b{MPMVVUs@~l4u&$3k zhU}(zJ`Coop{Y78d7p8lwE!1Qf)kOkwFIb3J#YYXMn@*L+<2#?)!Mgp_ zYhV?raJe7nl!~I9wEqr@mW~tjmQ+1cc|6+E)|&Z$x$>xh$y*`X^wG)#G^Aia0qMb1o!SVw^y1&J>Su1k(jA-4h? zg(4zp&vO{z1CeFpmY94`5{|aPGkD8`O5VW^LF=Cc_8Y(Q!5d_4aNcig<)N^1O9xwaKYq6Z344G;0P%^`=ZjMu(AJXm2PH}HH7R5z$U4z#5M&fm)G#u|e9 z4IAH!CF!4LdrdqJXbN&>DFQ&<){*SBrw|TQF>wt7lmq(^iO9gVuDk`2$JTc1JA)^% zmb5k2KB?ZVoi(B|t8X+ayOp6^7rD}7ZV{;8d(O~)9yYdW^{+nI(0epT(yrr57j3pF zm2h3f<+_7ccBj=JYXsQv7$>>!F6p9}z#p1gSj9^>yqxt&o1L0YUXcD?qt;xL+v!V4 zspzS^*?MlEtt?}@|Mx%sM9e2az%(IyC3TL5mPO(C+7$Aa=`4BgcFXJ3p2e`gT>wkmG@s&o!wOgS`M;OR%olZAK-BAIgq ze^}@4UeRmG>h+Jn=&QBh63Y`xXHQ)zs%w?(%Vb{7Vcqe!x)uA^(}2Q&9`x1e?-+OR z#G-#ltUfHZ{Jm%G`MsfVuMi!B+LCby>p{aX^<63}9G`a&?9E&3U*7RBr)ZOWt}Y2e z|3+CtRaszr*V>-BUsVVODcUwMpDLqN%LC8%c7bb3wx&xzYT22--0PJ>K$NM9eyh$+A zU?INv9<8h`%Pt=p-do#*Yn5mTSrwfBaD9Rgu|fV%&Ns-MPKgqLce>qR`xGkN3Ite$ zFn}iVs!QBPr$@+59UX(5&t&~33oqq?f!?p;|4@$Pk<1&Ep1W+>E8fT0KmW?e|By!& z8#VLhd(OYG@Xf~~Zew7;mR!(U+|^L^@H3|iT5hK=C@q)j>(urK@ay!j6ljHmA^qO93#;ofNP*iuw@oP7-{_9sEBM$0b! zkJiW1`E4mPq%6$*euV>l9EB*@Ylac4P9^%T>P#Cuu7Ur-=J&7u_Q504Ve=kugK}Rc5B#xt5Z^pTz?=uA6$YiJSkET+-ah}0rLoYH=hdTz>Tl= zZV-!fVXH1;0;SQ8^(yb*-tj@*(%vELK^_~A<)z?c#K@d_zjnApLo3mQO=q;FYNM@tax;kh0H*))2$n~`?6&u-jg8+xroX6NsCit?{>(+)o)k%B;AG<4^U8L0YZnLvkxzDVxon1^u4{xgPy*0^?Pv+ zv!dS)Ksa|$Q#Q~k<+xBSCr?z-t`LlKF@u`_dB0uzTFc^Mqhe}tToPoyOz%U zt(qN$n+ImcPT;43;~gh;(IFkv&u!*rBCgd-leQZmV$8{!%k~I!y=4vIrKihv;`mb|0l zD!$~ps#3IOYa?+na8Yvnhu8 z818-X30Z1Iq%fzTd55iy^1?sc!B`$3!~BfWh$8JHF_j10tP`(WR~89mWNER69xu~R zncPRYs_tz~`q=vL_uZ^V(Bg|8eF$h5@y0gy!5m#K9TP``9t$+({nE_O*K1j;Bd*hp zLUnO3-faIN=9ENk#c+!5p7n#s_Q9|m&`Y2>( zKI-9IZY7;y<5YoLyeHcKQyP|FaxRqTS19^NG{U`82S*7SR~Vrdnj9tUZw6$p_bKzC zix6jl;{T_@X9`WF%*>Msxw;}Q#&lAdG;QuB(?qVzY7oI>jyQ7Of9jXAT^CNpy5#Zj z8(NPK#b-vxic9&NxC12*{Q-OBJ>JJ=Y>+MdaGRU(rZ$vU@RwzN({8dtLFWa^`r)jJK;0P?~Mroe_pK73Jw zY$dx3aSn7WHR`(NG@m9z?ZG9V&eNSZJ-nJIHd~T7CTp5Vcz?URPP44EMAr!aYT+tJ zK57O%iB$r9>(>vktt=@VZXwaJ_Me>t6;oV%0@A;T$efkn9ta;{l@Xic($5b|a!ca| zuy?C$LH}dga99K6G&J*%0$C7`VHjn8X=*FzcH__2_`S0i*g!(zW$0V^E=$9FbrpNZ zwq;I=uph(71&9D$G^^142%h>XAqZL0SK z+j_w{$ofh^_UAdCDG?~B9R`l;2}Q`w%Lr;6=z2@sM%hzawOd}I_z$^X*J&Q>?6!M( z)rLt2I*exum&|vO^U%xxI;kqN zheGD-+CV`}RONAA#{fVo5W1g!FN&9G$20*6-iYToaT$kbOW)f3vqcmqW-4**ru3Nk z8d>eV{2o)!e9WuG8re+m?ItrtT?N%@4SmV(?0b{|Q#o^#X`%IPbEU(oq`d5-rA7K# z))6q!U}y8N*hOT2Zx8UfTF>; zV9>x1)~h$~^8Q9)uQl5ktxV1rITg@lVSIQ~Ya^X|?tKjgv8siTeY&AanmnSk(Gq)J z&znwlerr8+>lDx}e~QiC=c7`|mSL*ip<|`^6jkcIj|Rp^ z#(!L3qWnfsWP?@QIE_)xB1?!6$yCvShmvGQ?fN;I&Pv%LiYVaUn!YK-s1>wsGi|KV z*iK;BIJ|^%JyW94dBdvMsy=cGMR0SU7xg33DvW%D;Nzzj=Ig(ITGqVmUT;B1n+E-l zo2AJGS$?*i7K#QfMLKd_Jz@29e!uBHpPq8G%(E3U*(7m-30z2v`)PM=lpSUdx9FQA zEJ<8S@ohPLg!zH$iQK_C*f5L{)0SOLs9Hn;jQ^K#Qe3BQ0x&% zm7Dl)7r(k*t5!9i&!v4IZ^%rwPX?!IsT(!ZDYi1fZ44e)`eJ}~&yn9Y0;!q*RUd*+ zVz1b)%)+N^WWgDWA7=bm3R5$Y?gqZs1DAe?VFAQ#Ze58{&WDi2y`uLw?e z*uZtoFX0~^AoKC-G@`mVDfUS+qe{_c;cnwKZS`4wrL?`cIiqgWS3+kptcvRX--zY~ zy8K+$!~}N$|EsS@(D<^5;u#%X04_&(I%e+vt!+raW8ox!$9^RKwbgX;+5d@mX*x3q z+DI5i+n#!Kg9px}vST?J;mgOXj*2n!*Cth17)60I*p>^Z@6+}F@85b2mLJsCr}TEY z`uES1>Ao-R`QEy>Tdky$taXmDfQs6!s@Q~yWU^S0k)!@^ar7DaaWlBHm5tTcVA)Y! zJXOmBaGYIJGb(0fC3_ze(EnfExMKC4Cy%v!e#eyNIM0>wc-)7n1cAL4{n3;-k;CA$ zOzdU}jq)0SuI^x(2_lVDe*7Z|e!&rFuFv5*2bjg;j{ffmpS`-&<&Wh>Xt4XEmmy^8 zEbiHx6}ss^`=p;Z{&PI{=gsRs%qCDMcGWJOL%*BIO~?lw_acY1?Tzv$`+rcDg@dJ$m?lQwD;&x;Kn=_nxk(OQ{mTD?MfxlC1k~YISdWy z=43pjL7;+|OXp;0@kUn&A7?ap2sNE67=Tg;VuBP$hEZp%krV5E$uCf}o?zi}0h6U6 zK)nuCn$ByXUA*ofb$;o42_PR4eg#?}n$6elDpU1+!f-s%_QaXmObm0l5FLiwlYI+o z>YFYAA8UyVrieySdUrL2p_=iS)x{_VAjR$v&)n+*+~lp{_vCspJ>mrmR1SayhG1yh z3(1Txdiec^xf(Vs@52W{gQREHaCRGw$3N7!kYMlBwAvKyvT%u?@asug0VdVkblf!^ zjJ})P(BJuRU+Cd0rsCU|Bd@QkC$hGzF>u(tAry>E0}x?+dc4b3S^8b3;jdbUK3_I^|?4KvygR45QICvsMYY-jw!W9K&J7P``=kb(K1LtgEXWqGMdm)!6%>L@38F1z9`lwYH!lFb}`>1LqY>U2(L%}K8__{5@ank*5`V6 z=oW$Z^LJ`9a*tfzf%t2B44m1MJi7xhwbAmcpVdD1lTH?y!ztPZo603Wpd?j(Nz76m z)>uRCDHBAQdd5UjgkmDUc|n@9V`=0(dYMaPNu?J@=(q-N+?PtPS5rJ9@6^o@MGA;t zI=zF`cN2wT@M!S-P@co`kYiYiWt300ZM*zVSF@WJNl{nTWGDrC(9psGOB#&0_BRgpO=iXi*jkp^+WA7&!?p-$HCt?z_b4OesjnBkbAciJ*QgY zjND41e?_SbSWUD7y)L!BHX6yUl0HX?dp+>>jyHi-#E+t=bMhzteBF#)BL zQ2(0b0;e3<%-9i@u#yCOcNkNI^*IFFVGXQQ{*vYrsSuyAhLuD z?KuZge6h$bRB#gW@SJ;o`xaojV|Zrg|Jvoc-Nz}M-81cB9HQ8aq)})PbR+FS#ofbr!aY zg}!SwbnhMWrnpeM_x2W&>nnWNS!S*waG#P<%WoIsXz8x)cn#nfG~fyD0T8s}8-^Ec zNdr#@X;4N~2oxINol|%Coh09B*jngJyg>{CIMY4tFmx#)qPd8(Gf!n)%KL2OGeGI+x@5)(nZ#cQ{9h<22+`WZ- zdI-R9V3hV8-@ZOUJu*U`o-@%;Abk!e&JZ1x!;;2l?+G%2X;qEm!6n_-lWE0n;-FJg zl|sdq!@|tM|E(1H`3pY>MvgX-5*a|azx)K0Xe5GhooVqOhVnJ!yKeMppyBmmG^+Ud zP%x4YYCAJ3oQ)nW=91$zvbdvwEUohnB=!$^-gF)Eg2@ls!r}dsUmh=gxYeX}?;-0s zYp`4;@T&7>e|7+La6JVf2c%7$|AjFT?AETIqgZvkX-6l|8QueiuNNm)st-fHd`IeL z)TMIj*(AU3@2CF(4P*hVniQZYyuo@87j>)ac%G6FbS>JK|LoYyj-%iDHM!~e)Pvfz z-ljGs2^`F@06^Om`n8@8kv1dnWiJ;WjXQ4X-ycG-6HenvJg83lRSAZP#DG>t3RM5f=EsPnk{JCaB=0enB)tiRfonzki??)u}r zrab*1s|81FJtUeMzRww2VAi(tM_N4^QMim~d&JYBtCIc0!hwWZ9F>~VeW4arY=;c$ zalakbFQtz$daR_=;E|9f8|mbY4(CT2EBU5Q*vbeh{}?~X(!J!Hf|xGP3<*~K7h5)T zT`o)1q$6Ti7Whc0;xwTASiqPu;`~#%d0w8)=d#ZF&qbyIXzE zk1WcRz84~N#dY|O|&~^#gHjrJKf7@g4}?4s2Ja>h4kAFiU= z^iwvbzMh>?dG+fmXg2tG_k^z@F4DSe4c}p-Ww+Sq)jzWBC2qq{hDS{0EzeSgCg=&o zvF$zFf^sEH4IdyO{`o9^S*L!_0Gl|A4Ee;nRri=%TDh2^cfr@3)70FGmk~!HSB);WT}QTv-Eq(pY91P0b3I9j|vE7_06_nP)|RF{{mF7tNuUTfut%=)sydk&3lH83=R>TlqtF)ia>gTm~hj@Mw&pK4q}Wf+S&;g zK6`Nb*^d*%WNS_~54utVxt$=#Th7XMonn%+lDjJNd!TaSr9#q!sifvtRYeiTbDb8J zY4H!Pbd-DpRARA(x_x7%fLCfmO1HyzIzyf>C?UWTN5Z&WXv0=w{mAQVv{5+j#eOwN zru%WQu2P1nyr#YAxjirXuiscQII7D7Q}yx!jz(gb07aww;wL}KiL$s83zw&m-|MA^ zTM{xoP&1d~$UBUo~u+uyG{37bI7_( zY4u3-*)H9P*le=CQ)-3NCXlzy(K(tDWy1EOB9$G`xI=9MXA6- zGxa;N=NmfL^R_*hrICP;uV+lb!C?=#sX9B*BbQW1m?Xp1IrbW~i{hZ=kww^(LO?tQ zM|`+TT{a}lWYQ;Ny&R3R7FYwzi{<-~UN{&5)+#)D1BL^TN4Dbp$SJ}~zqwK9{Lx1k zPO!)OxUKsI$Uly;xZZrdC`JtEL47C+o))4ni!e|yhJ(*L{hr=*eYnWKW#i7Iz3O&| zqn=Cl+6~Gzt0VFL%(bk$di|s6Ij&@A>j8&;*L#sP^Ry!!*m}er#0>MjnyF%~#8|pz zksUdm0}i<)6Z5|=3E%R~sV1i=%H^yx;$*AF(S>PD7z{K`H(llt{p1&BKe9`KQA+`K znR&f}XgyI3Q-wXG&(69aO}t&Zq5C%bk4JgG0ptHs`z5RsL~uy7ULAUlowJ?7(^ z(Pzc^1U!fkX5;Y?Nzwd(VlwAvOedL6YUFx5#v^>PAFK?gD2_qAS%%13-#4PrA_(=A zf9no>?%YBUk-*qb`;c)1j|Vqrc}35n3ngT&x?Q~nJ|%n%o)TzG4BFzp&o`M|-v$N% zNw{LOU<{NN{G*=Paw@kPdlR|iw#%PM|6AXaf^^SC2zX8Dr6e?etu^e4*iHkyC z!W}|p`SGMFbJdL_Tkn7ETuvEt3e&=+xf8_yn39|RgA5lJn+Wvew>*=9gWtpJE#jI! zSbLc!-v}zd2yHr>FZt0p`zGSrV}(v@FXmqOYnk4n(BJ^l8*FhTMYsE60oHCvD zdQ+C&zsVRQ&35O>njwx+$5U@H&CEqO`yA98YwEcz9d7#LmRI+d4EVB(!sj*R>W zD+PxvCxqPu>9V9wck$6stC*RcO#R4MBtWt$k*C{nh*S_!I43hPX!&SXz6kt zc6?<*m~KzVn8sHDuQ-Atim!c3B-9zs-&o= zYU4+|sDaLz6T^xQFyjUk`RxpK_v*iXbEvTBkQn>_`h-lQFcUku@axMEB_ZvJy<@+V zf=>3_l-pB3=Z257Xh0?VGWtH2mfO{^Mnd_bG@@x7+4PMrZ^F)*FZp*qSSZ4+vRFHf zZ;6`I3|&e{6QOKiP$m9*q5l>iH|#>Rt16m4ikSX7r;~e*5%}vV%kJ zGy_u~WS4eU;Nl4DP|9&>9Am4koLo<9QP=6{J50~XzKi_MZutt6;hBl?QHJw~4yfKg zJsoF%)Xl2yG1dEJmEy_t#v>}?){HKW^^jcddR8r%&#Jq`JygeCCB7ZLql#j5FV6jBGr2;JBt%yF7lUOH_!cYcwDORTXr|DMzr7s`s- zNwX9Ss3l*AgCNpl$u5G~P8*7wgP!72^QoB<`){DMn)l zl%13y2AkEb*#N0Y8;c+~4~{t{g*f=*Th=qZR{Xuo(3{A>-Q< z9p97GafhyuTk^j37$`I-`A!qf_YdgAnsabCl0S7zJwm6Ql(^lr&Gb4aXOypt!9vc} zu{8?#i|>Nzj1xqKq4Kt^IRZlB7pWSEHmW1>#YZ1x@zXN(?mcV^8)7C_=1#g%iR_~c@$3JzRvAixg2cKP;AeoiME1cfIrlj)L=pf-i< zInc8FH(xn`Xjx$Ic#{YoHn3{37k<*6Ws)$%|OfIQCN z-kWDk0RGM2Z)&;T^je56I>uznpfQXFR{kWAE0AT*GAF0Z&2J(2%bqv2tk+CA4B#G4 z-j3q6oPU&Ba zm!nW03~{|O+@KEgqB7n5|17S~ZH;l>3Z9!Qi=+eDO$T4&!H^cYs;r)Fp+MV-coGvz zOpSiy6?~Zl|DD0}se%x`yy%|8EMGC}$$l>lQ0PPPBnmY(*y#xe7c;qnf?TP|^^?o%G>+y4LT9!LnI8ofCxqi92jDA@N1w94n~iMSV9w&=bR6M~p!O zC@}A!l^n2S@mLqZVU7PhMNLHger&|Tw-E774oGm_#^0zdfxs;B4J_!Vu7qnKeKhzePEJ;O%z$MLCTwtWa%2T&Q!jMTer;KMij9B+tN zERH+*p1cY33h3iLV`$>8-IGHBfosRK^X$r4>=@KJHlfqStJP!ZzJB8XU>Iz#I2bdo z?zH<6=6$}>WA@Y+_v3h*KtV|CaZ*_s^=QK}3=21VTf@^MU5T0&iT_ENccoI^dHZMT z%Jb`z8rT?Cwkyv_O)&$;+wxnx#=!7At%2|6ZlY|{N&&@d!2mztY+v24&ZQUULNG<3 znmsO=V88PB9jtEw^a4eIgMKlm0G*w?S=ez(+8YKS^K3{H@@LP`=PI7I6axUr)xg>= zZHMY%^6gdBHybO*865v|9|qde=AsZH%;+jSUR%9BnV?5^Wi;p9aFBnYGrjK26KYz6m=C`(|AC?$MwMG)|BS!PzhTD4DNxj9< zT7S%cB*4KlRu?T}m5x0tnrL~D&@7tOG^a|k5lJ)U_QRHA7NqZQ+qzBPA)Ac>AV>rt zGyoHqc3Q73yIyM+0mF$JoDRM*8d$v%qf=*8$KCKzY4O<=%`Hv9sf(S+An)`3T`;cV zwQb-K$;T*qsm+UVcvIB~IY!p>^VGy=8SV?9o2q+W(AIkr68QS{6TI^*j(%i-Zy% zNw`2C3=E-O3(u&fzHLQw=FX2QrQJCITf|}>3URMPf3z4U&-?{(e$ZXC3sq#`3!+xn zWV{CJ(ns%`Zfk(_o10D|aB|SD69)`r-|nKW6GA7QSbaZ$yaYm{`j>IiM=VHLHs> z=JgLeAWs(oT-d>w_y`9QPJ9VKQ=AO;sbCX~`lBBPME7m~fS4e5^Le+O^|!vZDBz%n z(0e4VoK(o)!^0z6P*krnZtBXzF!KiSyS8}-P*0Y#U}wj-A3ExP3u}n|^|74QA*NKU z7HE(#px~;)d`|`ylK#&=BU4AXd(~fWWGlrn&9%WCYI*8Mnp3++!OsK&oM~`e*3ZaG z`|ZaTUC?1A^qt4(YB#*^W>Oh%tISEqRk`j>HR-V|tblk44e-R&GJ*!pHk=8b3Bndc YJitWl#J{v*p8xT8BvXY64Ld*95WE+IX#fBK literal 76279 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 z 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�c1NLAwud_FL%U9wO4W161drn*zfj7^0v+S4XWZ_e%vE^ z3xC<%XslOpY&brJ>nAC?m^1Ms45EqnDF7(ZMQyf39)#5O)YmQYZn(%SwQ__=QU$;R z@_XEhiLiMYMD-V?6bzS4acD$`JgZ*S!!4?Es5BBb6#M^iWtf>?C*E>5e*fCuYVtZL zG)^>8c<7UP^_Ss9pkJ;4gwP!%E&_?9czo7lmMRJW^nRQQLSfHB=^BuR#e>5D0uaWD z3HpBmOJdfp)2sbD+#Lh_JNGC0vfb|&zt{40e>e1H`D`K#g~+*b2#ZEzxve30UYQVp zbURka#aMeu2J)U>D~y0lY$P) z@AKE5-38xSLPFcU#@GEbyN(TS+4VFUT~#}7cLq3tB)MdP8`sL=s_^%};CcUB>`N_7 zdbC-Z>^YfJJGts-K0-XJb+!!>K|(DQ78V>KX!0_5X(JEB{OKNJuNnNs!{}6q5LZTckmPM-vg3K`joxlN8Kg!2}(qy ziKLQWMwiv3Nd{8+^ojNogo!57`4ovK=2H2@zBwX(ogz>B$|3o&9;`>nh;bdXq9Q!_ zh=}SUA|dSF?}Os?U5!h&^N**&ZJsB;%NK8LEfasEPP^%Ki#g8^fyaO`Ba+{3&4ZlT zKi)CuhXOTLUZ&T0t>_m1`J^@ul6?=Y0qNMrjHpPPTmq4qe+2V%@@5>d+mq1!ct3&% z3n?ICJC{H67~h72JcNRLKhC#2f?mU|QwmC1r&x-624eHi1u6^?@)EK{2@sJcK!ae2 zk{n@x1_C5f0^{d#(YOsi4+j@k*o#C10DW+0zeyQZc9R_WI>%V9Lpm%55~_vXL{hHq zkFgFksOwz18LfdE+cc6$qoFiYuBg+L3c9b6YK1BdhL5AC)74Fd!c}$Y0}TPjJnjUR zYAi_7(7eolISjfW9b_hFIFwsy0x3ulWdx1`c$&!Wslflmw2i3>Vu)~}<|*KJyMY~X1m&iK%6n=5JP&JpPdxX1^wX*du1 zJ*KCunlepnU`-u)uvT?o-6YzhMA;~>LI5A`qgWVI*d=u4+8P$nMztNyp580WPfv^S z%gf##u(r@nQsT!Zh(tw2Co~4l&XNE~3O2qH}p5{Ox*eeI&v6KAu?0TAIj%NhjFb9H>rwd0(b_b+VxbDc4o`wE4F})6)u;POpfyW?Qy)Y0VM*6;TJpL2SK12bV?;R}MX1)Rg zeaG5ItGT{FCF)KhlgXU;#;T|h~%FOcpifzcE$y>jnAEdKM~kXXaSr>hPKkbjEe z{nhIs5PZMC?Y^h&as7{mR;>Q{n!y$1;phn;(w1ZQru66$P7EI8|Dr*wZKSsBw#l=j z$Ip;J=j$^@{K&~u;N?67Od9{GM-$FwWrbIM?s;|EKz++UzC0~uH~AGzn$KXnlMe7* z{6W!6&l*j4#z!u9XNikL_0%~D0HjdexNqA$czaMG(HU;X#ZfBb6l#vYZCGZ;6bBlXFea5e{_5Kjp8M;f0C$ z@i#w~YI(lzq{7-~+iWJ~$Mjz7Mvx;%Mzdx3*?pp0KG7A}AVg6lffRk>b9B&BkRn#) zMM(l8TL--*ZDxHP^VQ$6jK2-$d*7T2`dVKz*Nb{^)66{gZ-r4%O4r8$-~ZXOUl9f{ zm4FiySL{1_Fsdu;PaPc0U+w>M7kLlGf9X!f_;e5^pzGlGJ6qFT_G%@SA=o1LtT*Xp z3%?ZQ%aWPuqCIRITfcsFsXAIBOsutNUp2Z5JHkgz|L<|+-}J>F2Q#XGUcmbf-Wjh; z10A#O(AkbCg7IR9AUsJ}uq1*C#E3uw0`WjTO>29}FsG{0`Dr$1&~B%re}fyYUEFnk z^ug7d&c=*=PyIKXOGo(ijyQ-)G9Q&XBPw(M20{ zCwnTLy^?;H^9AKai{S4SHLrdLoufFR;f`=R2YniA&`j|)5TWz78ZI+@%~0K+;GA*a zDMD)AZ`uT@sjO+pbAW&ouyEoI++`wOG1Jvjnm~;xfg2h?kEvNtMVhWdl&{>=(LumZ zI9$+*44_=u6W<=*v|z;3eJQ|%K9z3>D{5Rv8rqMTL&Jm~TUegbu~GN-@fqH(Jwyz5 zqKVAJA3%VjAV64b{s1=7xPh=D2BoHvcp{+o>R^)Z(J_7NTB_ENHgp20y`L^BT}BT8 z>{7qm=V2h%nYQ2DmHAyOTexCi6`RLy9pLJSrj;wrMVp-BumD64TOs^!T8rn6nwdGb zR1j)8q~GWt37t$Ws_$oQ#n*s*ny;JD0tCML3X7LY2+`S%Oxy}vG${K|^cpJ-n`;ca{n3+;!`Hu@fMF-%nbD0SO zFx(^v>Gv7UY)uG5s*plDh%3~yq$qC}b^f~FQ(@vY+o#?5yPpBw{~t4xjtiKhVDt8n z49kJpdzM5xsDPpqLyjhDZ61LXI9P%mypr-C&N>0azRjg$DvkeJ`!NY+89w2%91QBR zmx^<3m!YP4rB#rWjsuEiwNW_q@M@M25DeZ#5GL9oAIK=KaK=F^P-2!kutt^}!Nz}7 zT;XL^+EbGnWUsu9LE+RD%4x|T#zgav$*l6)yH0W*o>AE>L2Pa^?%7%&wqf==5D(cO z+FbNsV4^@k0096UzR7l!TW2&v8G5C?RkiaGkvQ+PvBe#P=O&X9e+f9}@HjT$Xar>h zUj|K)p%LX*o4dsv93(d_Nj|3FvmhS(vn}mD$hVzl^!T_RB79Ode8-fyFBVv`J;dPv znVrM8=uQ@mfrwJ+nFy+94)$7{f0BM}@Nv=AbT&oCGd@%zaTtO3)fV%uyz^7odF|d& z_axx!x7|vJD?<4-P}R%qPEZnU|5-oj<)sR=XVkSG2bE+MW-hnb>pfrkmQowW;R&wz zIMg1IGm2Y_uFQd*I`I_``9t7qb>IklrMgL<+4s8+XUZ zZ<04HweuprK3M%4iBrAD`>k7MOxN$LO+&LB#^I1+6fGlVEznReY$xjf7L8@y?)d9@ zne{>ZkeqyJ41J7B>?04dj~eJB_KO*HO~kiDE>p90(Jw{5Q|J32{XrAdg0vWcM)!Z- zz`(@ts4-dzt-=0B3E9kP*5YhJx!{{4%Sqca zNo65ZGNN7eXzP06%aR~}R-hG9aSOIZI=Z&T{7qhnvAK@?8x}&VlwezJk^Ba-y1Ui~L?J%|6RD3~lO5 ziD)D7JddPF*IRTG+l;p3J;g{2L>PvSJr4z}R#jnY)U2SvQHzriGQc>B7Age`5J2O|%E5AOKgQ!7 z7C8W_dF#azm{Nk+)lejEsFr8YVfxQ6&*SRxhmJh(V_so&k2%&w1@TFESAjWRK~<;$ z)F9ZiCE_i~avuK?H!4qDD{%LJzh&n|0#CWta~0FX*PlLi2g=q#aq{~q3*{&{nN)sn z`&d(YAU8`P0%<@mv{A@P$T8tgVI8r)_?rEaI-iiyiqXo2A(8OP=Q}Z3!Z@YwmOX`ORUi#g~9Oa6IIf95=?a_dlChPk#mCY*!qRlp_u% z5N3ra^ws~XoI+r@(`0l8aXxmd72Z3B|Jfx<&z^uGVa0jhW#A59i&?)T<-oH(2pOa% zy!msQZ}_NJ%t9+ieKJQD$7%g1fCHF&DEJICiY$5C*XHws=X!{eI0?5X`LA8^*2*T^ zPI=6RH<+tNT0!QPgB5G|=a2;9AP*1s@Jh=+6{;!` z4n}3yT%5pE^9#v8={#5q%z3Noh(Y^lXxY-byJT+bQ#^{zzN=Y*5R%PhV27aXtm;o1 zc4PXm7Xv^sH6Mut(*%K>=1m94gw%ir%W>*+$Uc5`{ccU4MsY}0pN`htKfKjS8w9q} z=ggxlP#0Z6HC!*p%DKJ|Q6+>x;0p0Lflypd2_&F1^lWn8mHS#S0pZ3E-v|e`P(*z@ zzm%q1bgT#t(r!oHtfK3qPni5bUIM%NImB4aV)fp)Y`{@N^|I%YLlx4=*~tzWJ;3NA zcb2LCBNyB)R(70dbZ6G zJH;vV$bGpe0Myd&`Of0nHLTzSVCo<>3=SjRbV6l$E(8mV%KiD;TfwZkt{T%eh7LNh zJz>I+%{mzTv7L07qM5tA_DP0@tO%%gzmlKuK8 z!WQVQ5>4D_bb?IMDC`m{10H)m3Os%j2X%>|6Aphv<&ghr{P(!avJobjdHob4W#|$F zA(F;P`zc85xb(JflZedMZ9uO=iz)~}Zq#&^6A^&QeWZjiq@{_$DsU*{Mh*?se(;lB zIl%Pj7zS_ZMFODft4R&sIee2HT6+&w`<-kxT*z%UFJ_|1>=$ zXiSCEnCk{d=g!>2H*q~mK{rMpl(AQxh2tUjs?_)o2Pl%N!M8BB@Eq?Z$dD2|aK(=P zHK;%>1_6w_=Vg?L0Ii$m$S|@_l}L-Z3_?(~H(mq-i+(fLad0llhNYl0-ps_ei{JiD zCCwI#Nvir%l)$2N*8~!Y-waxm!ql!Lf zTka|z>Yr-k>7zk^29k~yFrSgYKt(?&kr5pi*y+Xk81bk62Fdbw<&O~<9JsG_jF))4 z;P?GyH=p}fh3mhz*A$yG>MMxyook2na%av1l@S>Dt=3qp8=Bw*hvWI*-XHGk8z-58 z`W6#NKwJ&f5g}0s9U}ETGq8$OtnC*83%rX zrBnYJnZ(NLuA{}u8>S5(eX!NYYPX&{_1Qkj ze49K&G*{bbj~AW)plspc^f0qx0G_y*g`aBGNltZX*pfgLy-9r1x7+7^&p+@WulbG$ z;4bOl(HI<&I)3Gt*MXWO98Ax9tN07f-(UfJOa90Un?PJ&5Eu;}rLL(U3^Y@Rvh)af z<1%WI#sFPgcIM5<90Gs?G3|!}qi1CPO7%ab8388mgy_QPusd6WfStkg23G6Fxox{7 zL%Ey7H5V&%8Ib3uofBjauWUusp|vAV2Oij(T473EBke zf*~{GwDmG($|jaV5`lvqHVwsZbJ0QIC{JVZh+F{Ren}97hyI1n@IO_34{P7fV;D#6m3*kHZY{TlyB}|cR zA6xqE5VM+zonV?6)4w*rbfb$`QBJGj30Ql<_EF?QKT$D>q$OahxM}y&+Lv38!;d)n zGtQM)sD17V-)@CqZ{Do|Nnt}Kj~B$9BP}$4i3RTP5(4^Zr3Jaw!uc9YkgtiW6o*S2ga9nL0S$5Zo0h#x%?H3{Vs zI*209YtvxtcnG$a><6mc;BL5+O)v?o2is{rBpcedeb~zJQec~6MndKckHakKUCNj$ zKRJw!52Kx1TFa=k>|(*RcOL3n^&$-5fN=~k3?&RWYAK1*pam%e1BbXnB#aB*K6qZ{ z5ugYQe1yb7OM|EYaf_!tf@I;){kK5nGa>W~F25|he%;OU=v*L6gV`R(yMO|43gjR| zP*Ye`DPj?W0CF8owleGW`epNIuOG9IdfZG`;_RPg5l^hj^|%o=?XgiZ{Lj)7Sw!m> z52FsflWiBwE248tcAkhnx# zaS2d;hwjBU5CFHid^Eaod74dm8@uXlRM?capI(u~CAi)GzZMiCt4G~6&E<6A)*>>ux%eq z9GicX4l-sKb-{GDt(|^0^R{j3mIZK%n&|=PzDFgvW^s33EZsvS?PXtu%l)ru(s$Yf zbZ>mx;a~vP!tui89XwsJ2Xv79?|Lx+G$D+P6=}9qczqS^^ZwX1zs~#oHAN3Cit?Vn z!b1$z*zN&NA+lLgPM2qjkS!YQyHn$au}aaX5HyH0q6IMk2e?2V5dcsoUeK<6$r-<+S#Y7sk0010Psj-h&=M`z6NZ`QGq`fq7lDJ-GI5S{{vrqs5oT+W0H+I9% z?TazNFUB<=vL!WcrWhL$z*dCq>Pdh!i~zF*i^*m8bE)SzBNxu3_ZRygGYs=1Ej7)6-?-67*~9B#hN=?qk@7het_2ACX)5?5*O9t)tR5*N9^Tq21Hp%2Q} zP}2x)vTT~#OAzZ33<<+!xu`bODSkyr;(SL6a`_d|p@G!d-XknT3;{QY_3MW;cp1wH zJ5i68x7_a8jvLP5SYY5esjdiJXZ*!_Awrbb6+j?4{w>Eq*)r?D+$;HgPp+C^&FaRs zmty|Tq@{|E1)L90uER7A+G`moB?~?{+02nr;$PNC@ce99f1GM+?06!x+N1^!%42w2 z$q$@b#C=O@zMhkdc0XFMJUqqT4jtO|8?u-f7BoM6sCv1?t19jM#X-81V_9rG4&#)> z4&SsdzLN2;z>!3A-mF&cL;wn-UR|sy?uC>P=64FtQYnRDE+YdDP0i ziHp)KSJGTTP8)cYBSOFN*KNaj1i8=EAS{TNZxC>nF?7eY6zI=peJL^5E2Yr#N5>d11d9t~1XrQ4(Sss32MY241MAtzX{q{|36O6}h> z?${5lHeCqI_BM+z_wnqtT9gg2zvxaP_x9j_$$5Jkoop`f3A?a7v!|S1{-usht@hA@a-HOgudO}rmrZzzrpFK|SRv2Udq3`9?;-qb19o#& zli$P9Wml1Y-^zNpAoxMrPxAhuwCF(1W~UXQ^8MY3uK7b6{Y2g~lOwTk-5Dy!e=jwz zxLV(8?HkNG;zgpr6@_~!PWasi_i|pr<*xh_+IfmRI3=74xtT0Z@!az5`vp-4A3Th> zX{Uc5O8Wy0!ziYYnTCTH(1T?Ewxck?>L2HYv6{7@nLJXGKXkNL#{%F$E&j23|2T0z z-I`|=t5(isXnH;)pXpGv2eV9d^%mr>9{Bmg#`x2mZ+po+^63)jqc4F&j+c7QjfRS9 zYZ%hvi|p~(zQbg3-z%Q>Zr5!RiQ6`OLwZl)r8#-wxdCMZnblVw(X{0HiIu2ZeKc1u zuD|Ii#-V1LyPiRm-A3IUb!y&ou`4O+KBVCvT=o$V849v^J2^#5?hT(XNont&!!-fO zpj;z(=4=&-0NrFK*G+%BKbiR)@3yaknBW5Sly)e&dAur-H)mR*2K8!kf4k9*08MAZ z;kUT!Tf0So(Ohar`)7uokzxUr3)+}HtNZas69i`!>CJ*Z?1or?3Q7M+ZbCHk>_42zV?7f`|YCNP75HnBf{UsZ?EA4hJa55?*je(uJ>np9L*fe zae#zTr*b0AElU_?+1f^n->E`lA?tY@qTzeVeQsl`$J-WF9$QHFEicl?C=lWWj`)Ka zcK~KMy!`#q>tf_{o9~~d&ED@fZr2R7`d)uIiU#vQvaAyuY+~;HZ1{)FDn#KR3I5KC+YYr$JvBARwjBiDOqw%e) zx#EC81qk%S9lVbh$ekD}Y({i<Mt&v zBHr3^#`}j%SeP?CPb-uw(cW*8W5aSCNj?<_@iV?uco`K3Miz)GMyr=gxeI8aX8rX6 zhs@HW8we+psK*Tjx|p~71H9}vou16=gG{~)2iR9Q8U!1=|K|-UY8>y zjG`RqVGBoLAJTW98e}*XUCD$VTDXcvWSFLSXL3c^j{r4yf(L%(16>(pOJcEzwz)(#1TM$Qf6dDkTt0ltn8+2Z-=1A>@~3M!QC zjQI>aISXBiSBnS4vZC>wTn&qs|>CUzqI56KqEN5pmTmIGYuBalW z`5DgYtyIP-Q)6oq?|&FF&|RHjmTyI#Gy|I7x}Ggm@(9Q?q6zF05jf-Klk1vS^rm!) z$+nZkPJ@IVxmRrje&>Gw3vx<6T+_v=KvPNJ@Nn7Z!bbqu;b*?A@pA+Eh0E{8XvI?( z)rjyY0DT3&m{gy;LlMRjfK|Sv9wB&qp2Dd{i%%t3xxK{(hm9n>@X(CN5;6#DgFKUI znE(V>XN^4?+dS3#`-Ck1qHZ*uxoIexqJ&(iVd*9V?Q#QO<6H1SVRi}&HZ=W{# zTx#a-v+OPBQn=43{2;8r+z~rc>OFh3Sbvv*`bfVIW$Af_r)lpteAR5X^?S}!uiyS( z;76GtBI|+vPZ}hK$CS|gjUOm^3Qsea06)6k>fQxuRN4{uns1DjDHwQCfJjC(2E6A z>&ZxB0EP^AC@U0#UqJbd-Wy+8{#L9t*L0cDvtLck2-&b86!&HdF}HJE-3EjFCagGs z)Y-i$@a2`3P3PDj<`%VY>gyV^gZD9BMHPnmTs`;n%v5vn%QYN7k%#nLuc3}tI{-k6 zq`LPwGD9voZu=o8x1{W?HQm7Cz9q}8Lr8 zAN!-`HkUV77kI45k|0r%@DonY->KR37w8!ub*N8UUHZnFacnwOYH4wW8H5vdZ!vyH z9I5T=C_{&@>14Eg&eGdUCss1YcH5 z?5aVtBW8RWS%^a7>JV+-%DG~Xkqy}Q3MxTB5FXIuu!(`%$#I7w0bL!f`u5H@>Y44& z{k~iExswR}SGl}X3x*!W2K>1}08(>Dst`0!kFVyA10N_j$K&t-g&RV3jU6>e*zI=7 z>&Ms=Cn7(zbFBQYL`g9Y^CN?8o(SSJSUEzi>3l3IVKUz&iEmwfnG41G+W5;T9D~*( z3ZB7}yarx!^3NZ^1+A=CdIYs8Yuy;c%8S1FyxxGal*g&@t>T-0#CClz>`*vdg(e6s z8E{*V_ove8jvB6WY~eX2U;k6dG@BbtY;Rowym*V^^TE0l9}9cqywjy1=zk|sujWfw zMk(au`pu>+ieZ8hq-w>wl*)4_ET_7 zd^Y^E9_oVRGawH7S!DUL5#&jbSSqtp#9835H{kv_2R`4l@G{lx6XJA?PN9_bWJ{S3 z$&EZdBdLpFuw;)MQ8uDu2Xxz0=%EPNwt@NbUi}bc-d$ni!dIONm3ivIVuuYV)o*n z0lVL^!s)^ti9b;znj~wux+hCr7PLzrJCEL9&-cg6T#|*eq||!6O-X8*O+Pv06wukW zEJh##ovngAxg+2p!8zcnz&8BkT37F0Qh5FKLt~8k(a$3@vrN1Soq;DfyXXI-pAh_f zGGl1*yl$$>8=aDR`Hmz~tyxR$)FC|n(Jm6;N#Lj6VW=bj>%`>mLL?hMk|MupYqzwdP2?^8cP=dZ zgtP15NQRgXTp}P_&Dod^O6c>ucxdhMkW6M*Mq{`9sMR|psio~(_Eh*v1SG6(xA_hk zZ0_#vw3q)a@G^2`Z}B!O`Iv$+zoJCRcLAJDi;dR zzWO%=fL%mHRDC?}zQ(G557D<>Cw9AAo*wm;9?T8pivWtJ`vKr!Cxr-L1TykD5~ygV z=5^qp$!<&CZCYT?ib6=7P!NnWmP?x|5PU)*j9j-po+}gXu@_0Ywmj;PnAC~oVr79$ zi1KA!xJwjTYc%T+ZxgG!Pel4npDRb&mD`6A9K4pkL;GC8wdBOR&iirWF3goy4FF9* zvcKPE3Vs*NVZPHVepP(M>^Ecr6r|7qc+p<Xxsoo$Yfy{;<`aDrRS7JQ*TL{LxnajMD!3?2$7+*LBmeraBxvKND%Q z*tnG64MT!9cdf^n+b*Mlvtj$?pv|ylSf+jb3!|vppAni{#FO;%*u|oR8%w>c!e0?b zgc0tYSK|N~RYV%G*$I|qP|5P&ZD$f|%rAc1YSo;NZ13-5UZ-b^9d?$6P;I8aN0rxq zSS-7GaP%UcASMFRQB-XQ0=GT`NJNr>eYdy)7jPnf?zpTBoDOWhk$PV?NGcPJbfI`n z>Xi!S3{ah=QglRqB1ghqT{RNgs8Y=WizK4`!ld?Qi(W{s^C0N+f`Yv**KV6m(1*57f z$+vtCQ0_EPE*h43=1auk1S$sbOIQ3qzdqAo5+E8|Cg0c(yWFlfC1pnioL|qZQr_ei z0@;tUDb_{K&s<6gY2|x6$Xh6zhSfNjKjtrenu}^vKNpUNx*-;Nc#woy42Va-jwj&c z18y8l<+(gR?zWfQI_cdlg^E;W;_0mV7H*c8=c%dZm4xtdp+EqRjKW&{VI~sW%A#DI zH5Z`1z_dv7FOA9hI}W_>1U0Q4O<&WXzN?PsEYBBKtMH^?IYX^UA>)KKW* z@aZt-mgkGdBwEpMA7pf%@fv$7Z^T5hEwOgjSbr7kR6+*q!GObW-EehCN3(eS2H;N+ zExG?&({KN$epAaE3UiDYmF~^j2*{2{e~R&_U2gwFRNB1ao%ddU(eA-s=A z8z8qtfF_DAi5op_gfu|;XFQ(+dpN~DzJ=2@m_3yv7$IfwHBtCv5yhUdS6MxXDlX#Q z4QXMfRoL98!i<)l;{k`Vt(CVr=hC+OMISNG3hr^y5K@tyc{Q&qYBgAN-*LJ))g^qaed4U(Co$#u+$qKmo+yM z9{{6>njt^YJAp9RW;!EmM!yu=p&Wt4>(j~H77VD6>c3baqsR!>Pm?LO#yu0AeP1IU zU|{z_Ml9T*yuJ(CnfB(1$3_DR=qAp~>3R++nz zpy#=y`+g7rg<1gcXXFe6471RwL1e@L0)P*|RU!l65CyxO4>AUZpf+9ptX@%TjM``U zLgd$|qHB#!Ng=Q5ysCwy6$`+zXSMv+lAOgh>CnITF9RFu1z4~JG#BeoxJpIaiWOn? zl}NZ%@!>@Z#cVMZ7VRoUz0%CVJ8wGhpcGlo!di0S?@NRjHQ~j50R;C)qjgu6)Nu4% z7FJb_Q1cTx>lB;?=iT`T{fbuyPGC=zmYzq6^mm?Q(8`5l;|k1amIBY9p5_Jyz6n5@ z-A_M0vdjbQDMRB@dBvDcO7YlFeu7ReTN$6loA?puRKW_g1>mmpNq za*+R~e@=9Kh33eup2&L!8BY3(g!BL~2hW#?St-Z+R?2~PybB{ha&fLM|J($v*@pH=oF06M%V=8T zs)tS6M1^ZE z!$Z~$EMh2%Z4MRVzRM3KNMphqn!W@AQUctCa1Ld#2`XraU{@g$x)zw)sUzL_8AQ3@8GX7>q?3eLL^D-@!@Q%;s?>=~Eg_Uw zICG@hl>k7rA30-!E3szDHtmf83M%>Y;f&z1qK z6(doQY$#>oOA)I~FeDbGAaaDJPHsd(XYVs9gar*Cu+jI#&GF`nl;96sO9I7{!wDb~ z5<`X|Bnb&4M$9Z}q=lklSHPOPfC5+HNu<*lJIR~VQIw$u9aCq4XbOWmP&ouJMX>$y z5S0%!EHqL`NW8=%1gda#+@{5zypSTbjK^V>f+9$UOTdJ(0cKUuSHRDz1tp5cR{|lB z;D|Dl64A)F^b`ovJf=9&j*3jp7{^xzN#`b!b;Gy%;!5{TT zav|uto++*mSIBa!sUeJ;zn+bS&;r*y=&Vlw%)X8Gz zWj+mm8&s28L!uJTT;G9_RVj0%>I0CE!AnDV#+;CuQP0kRL!zDy*Za|W zh44|kq<|_s+Dc=Ww2I{_^+hDix>6|g4V5_x!$ppHD5~pLHbUysIgy)KXL@jTxx{j=IRoPqH4F%jWxjzg3eo1zKnsgwewm$`h=SNT`1hN%X)Hzn4U@?5q$85PBF3JJ{rrsVdwr8O7o5ex>11u*YJEHkZbKAK3Py-&B5iVVCm<6siBeiVR!A>UoPj0FI4lW8 zAcdcj`sraH{H7=KOdOCOem8Nv6a*uqbgVXq?zU#C`jj688Onqt6=@}XK>{gZQs|T^p@^8SmO*LJA*K?% z%1y==H&JsC_(+#^(CP9xq2}@&I8pi{9K{8!=a*@+o-12 z@T;6{9F}`tvYs8{>9{YB5zu6;*(lKB}ba-zdU#ndbc?|kYDayk9EUMM0GRauNfu~#q+8}JjgOCP=W$zxY?K;}GqZ+NW zfR}agDTx8G3lZ+*Vr|@OJZL+cX4B^PB7cA4*_+2yAFnxpW~0Nq zZBa5?Pj#n)fgay}%4AOb^x20TjxEO0q*+IT(9CH8ttQ;Wfs8%iEm$0@8|Fg{ZLGm3 zqtV1mQ4bM$O)NnSh`7~B!;ORV93d`{EJby)FxUa~9MrhzUIf|=01!6J4fPR>NqZbB zm;s|tAQ*0G4FAK5q<9QAvban?d%L<8qvli@8V|$pF!V@sAZG}?=fGf&UqeiT1g;~ znEc1We{1n?Cyu?1x$mU+9{I83WjWAl#sGsSf$rb>u9A0l>%{H?dJ}R)HehT`QUOCX zO%TwVQ!$|k&ZVVp^pjzwmrBk)j{1xYiby*i)6T?1sdS zLsXn@wu7!<2L(Sz8ZkuTv^P1tA!B7t4N$1GWmYn@s4HV>HYPDKrDb*z1c)YKVVHvx zPO3mgBM-%VAVxUS%K>5ohn0o$72#5Vfhi8E5r`XY2}xZl=a|3N-=W4kyI>WUajb0% z9T{1fp&q?xq=pd8Y^FDFm_r!bPT?lmB$0jqUfzn8Od<+Fa6^Y71QRDHkl`hlX+}T- zhAD9E0HhN|0iJJIy2R5`10dur0!Ky!1kM;kr~}uR5D`wfha*skBpvD^MKuFTrt7h+tQsKpcXi$8heeBB#*)S_S^|V7rX)y`K#YWe7}tl6!wyi}wJ9G4J?}75P~dqnn}G5P z28%fa5^pXlD3Mk>n1?i!)*&GQpf(X52S7;RBta-Ldcd$nLd9X1VQE`HP>N-Ui~_nz z6rzx&1yEoxEJnsO?}#r@th9n?w8d(LB=T|YDuLQuIQg!# zQI-ZO=R;a~ipG^oVryVb&88dsSQv*%3-f97hoIIf<8`=c9M3!18qZNz8vlpVzyUyA zF}?ok3mKWMPykDLDg1yYo=Z=i-T03GyZK1WwU16CniyGT$S z#89Xd3Wi=?Iy)@c9Jsxk*1>SA9y%tepSxzJNm<(3>vLNV?$m49viZK-@A)>5<)rY)7u!?H6f6khXB|qL@B2xIVeg@YEqEc4X9xz*g(-HlqMi;LkMmN z2xOmSqWsfa=NP{Qf(!`6*ptS>9CmYLM;B~WwrB2gf1B5cq2x1M9GwHl#=7d-r|0^( zI$$X|4x8gsN28_q9Y({q>b=4*B#v#+n2f4WY2PUcC?+UWLRut>Q$*BkLmVPPon9k{ z%^+lT4OS~cVoE0X5utSLHV7$!!alIU+eIuykTlO7f|E*JFMA;*q&2k+VA!zXcp1O( zBZN!^X{_7B6{AU#iTZr-5Rx@H+?01+hPu9s_W%D+(y&PM3 zkTw1*@I(hsBkc0~#Jul%CTPgO$HOv+P-441TJMrz)v6vaE`E_az1+#j z=82ZI7xwsuz>AGxxWb7QscMB@${8~F=Wwd?>FuF0Al!8?3<4m41KhC;X(jNzws+)l z+6s|Sd2BRHOPLsw2g|7KMGC(4@Bz(7E0Jmi7q|Ia^p{*~&22mNebdn#FvVg?!Vwd-q(uGfE9{%%V~mm&{= zl?6_v(P&QB3UYgiiG_c*RG?3lrU*fs=zaoV^={74#js-iIpO7AJlG|n{8ZnUQQU-0 zzha1CX}S#|;T}0K=?F(^roNP0AyCxBao`SP<{?qoPIy)q9MSs^Qg&t8ak1X6U(=lJ zE6G=|zs%U1yD*&1pEYkJfHFf6#WDjRU?G4E1~Y&*#}N((zY=m%A-4zM-0(}eGB|z` zpUaf!ZkAm}$A6yG-}`*(wm}>K8mnGRZN}#$qw6VErnvNfa&SvPOrLK+yZ}N5ARr;Y z3(^D-kTFc|*ly`dV;VZqcvb+~5@8_b+YIkBWg(?#V@zo_F{XwCZHciBq}mWPF*YHz z+6KhNHVkPEHo$G6jiIq7G?>yG1~CH~Y;0o^Y-zR_%~V~XDK4$MQ3MH&2H8NNARuZP z6+|W~8j~cC7d@}W!9qpwYSn1CFfB9ONgRb`;nB|^JFHc8kFDHcfq zVkr;_&>97W8pCP&-i_a7Q*ZR2v}4bXRpr$QxHloxl#M@8Ym%T#Z|J+A5lMbknBu2A zX8HN!V8VfqG$EoS3+B*ZxagQv`AgT;gx>!UGxNn1#xB!b6yYSLeOC5#n7l9J>{};m za_?F&1#*wT&As7a&?{u9S}c47XhR4iLuTKX6 zkB!^@a6gsb%4EvOAb#}a0V+rl3j^Vls%tfv-g-Ew{nX@fxSH<&aF?0>e};8q8L_pY zW>b<&4P>mW4X`;eP)%Xc)=d^A2}OWrP)MK^OOM>MU3`;TBx7_t}^ zcBXEo*@OfdLIE(bs)B&1#WyEk##m|?G9d&wWHJYAT(#)JfQUl;c7=TJs@_wTL_i0cnhS}i7SR85XX`AN_f+~^Px2A=Wgcsb2HtLFEtQeoH& z0hxpPfCS)Wn4u#HEJPM!tXVIy2;th;4YQM!7pI~AR48;iSBjjVVo)$87(&@aFxjz0 zWvELXr4T{_8cB>8;fRKi+%YyJ*bRsvX|atNz{P5SgrpS!SPL?}mSH4N3=M%>8Z06J zOL>OFL$L$XKA9Q^K%iPMr-@F}0uxibF*KbxihGEWDqO>ddxtIQlv*JICL$IAO5&g@ zLR~wekY=ZWA|y#oH58(O6G_!nGo-*kEdkJNo(Q_L2}QuME@oW^r=>A6gS)tZU_ehT zx6roy2>_2(hirg52B44&h$&!PX@n^VzKGBun3k6cg5$s>T8YvLf`kwtfr^I+i7qMT zAP_{mgy@qbNw+ISu`K;*1_gZqoIK_bg9Z$Nm#?VCO8xu|JEdYQSDS6s3Zy`;6pfAH z9nl5U=pxJr0NF>78d6TT)>w-W2*C_tk&Lmp=UZX5zf2*dvfgU#*CH-G0TFQCN^Ayg zMkM0pkG#)_Um%N<>Ttu0FBKV&=Ihl)n=g@JY5bRV>Ufmpx0UjqRQ%SAH$zVf8jfYPW4gY zaBokg%C%bOR>q;|NIad{?h7$v6Abi_%Cu{p3k-Q&Z4u=iZQ-r=|{ECy)&~&lj?m9q~;lNV#oO8YnfDCC$0A#eQL(+ z1fxrxAZMGUngRpfDH#om&Pe`caTf>n%{8>2VS#Ph1H|oCb`lLfBF3Od1$r^}xVh*t zJtinub7#X0VGI9oCjkrzPG!^>_OB+0DbJKvW&Wo#r0;j{g%$Yt`!(#p0_^smgDkus z$KvJDG;yS%AV(ZrWahSD~ac|{bw^eae0xk%4)DOlqKL4mEYe(r=*!4N_7!)uh1fhMrI`e)H4*5=@L zp85Hg%tYs?;=i2rGWH<(!rDJz0=!}XO~uul&QxKMN$+wNk?k7DZcd3NA8*kUAaWZU zoI!1*5dK7=IFu6HV1%KO6cPza2L$MxnvkM#B{rtSM7VF|==xe84`A#qFQJl0==&i? zQY2tCqe?N9L1daK!GK(6A4%-8tFdXx736#xj{K2R$Cbau*EIcgZL&4?e3zW`wrcS_ zov$yzZfDx;H%$7_HpVa;Y-}3_!Q?n*gbm4Xf=vPci3JE!@f5?Ys3N1)gYmGcf*n4O z#E>e|7O9qoHpYb8O$~)=AxIoH*bEyRa%sd294Iu_U5guXLgQDy^5jh_z!MZCuQTf= z8&QS<0-+ZtRoN*UwiIfh_WTe3c=jhd5%9js4^iv9(U`Y+ z^Hhj;!>}YV1cnV8azs--0H{aM3f^jlOlGXz0v2iKSAgsCKG^UeGm{ZeprO+zn72Cb zTC7EEL#5U9E2H11$RzS$h=}X`M?X5lk1t5pgr<}Y4;odXL)OV^)gz2Y`Qvh(3OVg| zQiVY)m#YvY6R)t4gyypoab!;yZn(7AYu^^yZwRJffTFULTa;l~QO&()>6F@`iaDXi z-+P|-zCv9+HW8w|gldH^AhLTuHdbYAD#R=C6dirI`Vj>SFypm>0uf+TCwF8D2oUb> zSsEr0`8DK=eXat zDVECA7AS@^z_%-Qn1NH%&0#RW)ov0}Ueoz6bpC{bCBz#7UtyZH4?)fkG^RV@3rCX#v8p8!e0` zltmO11Z`Vi>&k(?Tcx=rS&?c0LKp-9U<5GW9H@vtqgYd&(nVBYcy*OaNI^{apD(<1 z-?o@i@4_#$V;vU)a*6EQs5l5f6xyvCHGgxhg>DD>J+)@ZDbsT@nkLUCz!ewMrdJwM zt*t3MrEg|hH$SS`U+56gNW~?EH&Z$|-wtC=Sds1*T=*H-nB*GuQ-H&M|Eu0!X|yEm zOXNH9exH$u0f?Fbw%Z$QY#T#j7w^HTpB2TB+2(UP99}QlXgUv%*=OyS8&2#(Fl>#E zb42F}%#k>p+~#qtppiI$VJ&lqDqOgCG=fn|LQpI6%1~ONmMy zNE8T{LQ}JX>_Q;~5CIns5qElcaRo6&nUPTSBtjCAND@N?V1ilFa>b+-2s|kuK{A;n z$b$$8cQPT9gDhPq4xGwyICC4`VLtD6+&8>i0;UgivO|(^#}N%`E32LZ$(ARv&)35slR0H-MAnhA4|FUZh@fgvPTi%J61Y-y%8+GqrUAtX~Y zLyK9G!-1)QJ}PuFuJJ{$PpmDSZ*BcLex`D zBN_&kO&~=H7pxXkc_Ls)$bf*!i8(`XKpZ3_23d?4n9(t$LTOAzA%ufave(kWAeaLvD4-HV3%jC#8W_?IH7KHDz>t`|ZPEg1cfB1*7W;p@BWL-x z<~|E~!7~8K+x0D#c@AKJ8AdFGagIQij|#a~XTNP!h7KMm6f)I}EUcM+ZJq-ie&2eb z&dlqoF<&@jJMl^FRGg+eu2-dQx5Ry`_CP4jz^RPWfU)74g$L0R;XQv>#Y+8dNA*tK zrKx0>Y>RhKNsEi-on*oOeIMr#TxD_fGX8!${U39A_2uOo%X{(j+D+ql-SJW}S~0lz zKuMDOutQU6zEX5b8q2yUa81l&p_EDzp}GQ@0m04>^>jEN@;6=p#DUS<9#wwiYPKjM=AzRLKmdcZz?OoShoUqAVzLL z8Iq)261fOf$s=Ym27$KFHjAwe1~J5%2{~|%5~;#q19LGYB0(sV8$_Ul+D!~jm?egm zDeJX7WWNSf9;s&pTh-M`U5j!y$V)qn63RshQ=8HoSCXm!7 z+zLbm;J}3oGAJkmztBNN_`rrJT4NY-3msuV0IEsllEfFj#wdu#%AiIaybc-YO-+kp z*(4zV7y;nApb!h%bYma@69~})(qtie7BtrPn>XsadzVhmo*04rBV);jqqFu{^i61? zR1?NK_%?tfqG!0zAQCCExm<%02qyL2xRW(G1ju)9S>-Wl6RWx#9M8YGr#BnvD3GeO zg(VTCAs@CDK|r;mL5|PrR>2S+K3R?Y9gt(pS+OZHN)^0QOfl7)UG*L27Laq4%65A(*K@oR{5NXX=TP~5k)*Y*h z!$@*Y$bwns1j3K(h`|@5S+nqOL=iT2!1G5|f?kGlSu#U)d8|+ATSt1PF zifbc+;}XmVz;ig=DWWtX+4y|5(d5IzElWTw&P)%@Z>aZsH;?0UT^aO#HlOG3d;h77 zbzYS@Ur%lKyY9r&>18>A?-SW(e$2G|rkN)_ z&DC^h-T}lGdDrFxh$wg*=Ar1AE*ZcxA^rCnrSJMwU-eX8GR{Sxi#P)e05CLi!_=u2 zdazUluzBpd7{X=sKMXJkwP<802yKnFlRQ!x1V@;qDY+6NZA=v86d1F(aNvj`76t)C zkqJUZ3S#Yy2{LU>wxOaE8%iLC5d@_T!vYBn5H!%*V?%9&Lv0N?#5X2RP~OSucV9AtT>Xkkh#5+Oh+@N(i9snTIZ)*$3~iAQ5FoT5i6DTG z4+T3zC_x`XrrZJa1P-0tY?AF=^atsIm?e>ugs-r8QFu`fFN)P_Z5ei6XiQBc6@>^v zeUKzF#uW)#V^?I1h9ag2+J#kR!tzuKz@;G&ktEo!B+-?Zo1})+G(!#eVMA*p2v-$} z2H{Fv&&-`>AhA#^$YA5MUCq^DW$bLAi*psgQ$kcCVSGdj!9puVMcg}N(Mh9%5%=bi z2pSlM`D=+HN>B`}fpQR}Hr?g~J7BV{Ail&vhG7Xv&a4K3Vp3Ql#EVTPqzfHa!G?vp zXdVz@B%qFp1Vn*`DIx^KW3Yj#P86C^n;54tG|&@hkVqk<#0{l00E0A;B7qTxikCH+ ztSoJbDYnEzL+C!1>(BSv?<@K$U!Bbd$%m1({FZ_#YvKA zk_bhUK2Uf~1bT2O(ISn|&0w2qH1KL#N+}cywBUdsk^~fj4nvyP6@vtVf{(>&alKfC zL@A7lD9vffXEAD}0!ScroK|WX?3KE|Qo*<7FltQ-ld5mMI{h zkXI`zs-&?DQ~CH6FG%1yX>&JLJ27xaz4^Nx{s*^#LGj@zQg>AYH&TAX zS0+R3oJ0hiK5;E3D2fs9KDYB9*1!@)`lxXkoqB}`uSEJD4n21kGTjgw1Rux+x$Q*=} z#?&-J2xvet3?`vM5h0C9B_%1vJWs!&YHOr2)0N4{lcB?NoJt+)XqqUY0s}n6E8$T} zK!{2}&$crd?o}l;qhUf~3UCVB2{5LSP>XUUC5^WP9{f(R?nfNm_BfF>+Sa6F#0=OGm1uWy_uXW8zWjjDmHo#mxN^kNF@?6uy$M8^UdF2bt%_f_9 zg$5zoxc>EM6(=&6b5@FJaX&)GVwBbZK}Xw1^7N}~jJK6U0pyst^cI{#wnMZUUMD~D zbSE0buY%Ld|DcDFWEcQoC4K3iX|c#{DOUjz6c0t!SBjAMNd!$%5P|WbP@J*Y{ja@w zyk;{}htX%{4yO|56DmxJGNSuZkctcSac+V!O2}|ht6;-8p@RV8Ac>P8SLiDh8CbO= zOhZw~ILuhuV`|f4+|wxp>nbKlxk9ckCI`N>U(RCO(a58gf(fNh1q!Er9MI7aCa@C8 zM+4x(aZZF9i9m2d4nwCIbqr=fphOs1_pqr^WJ;F~ML8RnA|eB#AR~|h1iis@?zAoK zTyEHsENKgE2^e7aEYrMD)@X>QX>qYIngI~zGBVi77KIkkyUW;s?V|1}q>~0;4p6&&LmI$vOTzYxBj=N0zcW}ZTLZH1`O3w% zdU1gYHB-$Jq7=pjRFgCVGXlkf0rl}%Fr3T`D0wU(lqJjEsokrStJzduNFy!3br-ahi7!ZBAI3>*bc1L!iglYAuwZOq{mJD$!xH00)kB? zL??nufOpllhSk;*0G7_O$s^#j2wYl3s}io&W*QbC(|rs~N4{VH*o4|b8%PA&LMvC{ zDbpsP#&Fb_->%6LB4ZT-h(sc2fFh=VsZ$7`81w~1Z7NwHu*>R_LcCuhvcN4gnNVA~r95Jjj;OdOzXuxY8bnxTZ^ za&EAwEUBVx5ZeaZA*4#NQ#1apPGJob(-#nmnn|=Vq=v;n!H5I`S($Za`}C7*EDIPb1Z0F5I2I-fqS>kLO>i)=Q_=E5NnofUNcgt@ zPbNGjLQt0XBKOU;G%hRVy5nR)bP6>^QjM~AcPRYxk*VTq9AB(6Otf7)dZW+fK(|K zk~KCVRHt-Nry3WC(-_#5Xe9_}v_Y9S1g|4P+ikSXa=r=@wt8)}#@kG2HNjQ?)GL5@ zO@#tcfEBc2kIup)%PF1Eaf34@(@9MW%_*dpQXS>gxp|c-+?0Sy0+quSj-iK0=twMs zVtAI2OB-WjcCUbS%@`FTGy^)eu#n1<1T+{(q!C4@V3s(!AQC);wM3JE}9erS#=%U;veOnkNl(OGI|^&fHonFQ>S^qGFQztt^+oUTOi z&nvejpg8}b91V7yA!!Q@qNE`EVy>JI@>M7pSDzCu{biuvKG!&pD$;p80@vGF9vRbO zJ}&|71o!|@>%r6ktONsShX6!~fk8tChHJtkiLgVPa6vZMCP@THqEOll(A4P_C1`+> znWbnIK1Z^}4aSe9rOpAsfDARWhd@LCW^7(pr|)g-ljP2A_xq=g7(k@h+c(#RFF}1a zDVL=NA}Ueu&f|p!(k4Ri?Cq=9-)6yjKT6#z;cI8sNTqcI^A!lwhN(UT zb)hm~g>v=EFQT&{05jtCwB0pb4PbHmM+8e0v+v0x=;`EsZ_JoxiVF5i($t0f=H4z;Hf_^k{C4WvuH?`};lebE6j{79wK5Iq#4w zhdJIyek3Gp<7HILQGlWD8E3RCSR$P2RfYnsGJr6K0kxxRf`6DdO_lF98KZ-;LF>Zf z6yYIsEhRu5F;b9)hn1mWn{P|zPM@)5V-<=%WB^`a|J9Vb`E8X{xL><}!0Gqz^{wK0 zd!{Dgo;_w)5FnkpU%Z?#Lm&le+?^0*mEh-e9%)`V>j^1SsxGA$jE)*hiV`8V3xj4^ zDJ`9u05NcDwyPc)HsX}p&Nr1H`FL!!%5#R`^eM&7De3S=7b*kfgd8QgxhkC!Y0w$C z_XEXgc6>Ed_Tu-)nO;m|z`Bm=y-z6WzD>dgKDTH^U_i}^GPI&*C%^r_w8MJjgU5Mn za;)I;U-{hrjh76$3a@zmbP5T3pW@g12$L20Msgu(sR6*M*UGuuoC{aO>5(0rDVj+jbf3g612%=~TL_@of=oT;_0>%J{W({g& zu$hGJK!CrA2r(s`nJoH((*mjjn5ILn_aCj+Xmgm0_xJVuo<`!kha4oYn%J9^Kw*fH zKZsxUH#sE8px*n%ed?r~ad@!g4C-_OthQP9S9VfM!J%SVHkf5k{TCiNguV$l;g<)VA z>Qw>>`yDXJQR!^XFENc6Edwpix^cXeG$`&EkZcc64Fsln{+g{Z{RMK~vyva;I!$u& z%S76;S4D}N3yNorR?nx%INxwaVGOm0N#|Fsnd=%8o<8ej;m~q^6-A%{gCgS}VS4B)@50{?t--)hi<{!TK!hDLMx&bUnRC!>SA1#>=@0d3aof4cz>)m>Dh$GjfDALGTv%eS^|W;$SIE4m@S$TItQs#*wv4ZvWWb#iWL`1M&Iu(H%H&k-p_-^He`T3}ypono$8&=- zB$~BObq6M|!21G2^v{OkK_2cmy5n~HC}YsgM;-j-0|Xky@tf}7H9+w^#IS8JmS2D@$_4Fy{agz z3BQ$w*2AcD5yLa{obQEXykZ)vZHuz(2bvJ&fI|W&epv3~TtiR_!SUwp9-B1 zhZ?gK?skTY`4Bnu!fL+kj4)x>5u-^8kMc1)o%Eb~gdC42Yfvl7%0;wL?9)D8jw7j0 zDPOUW_@qXNRKOd(gQ(<64p@@V!1(QF@<(2=Xk>SB8(`3#T0QE0ma;UQ{(4egAcKQf z{LIX#X}Vy}5#}_fRybNC``Mc>th=bVHd%Mc_)UOo9nvtB(zwpzQWhe}cZ^e~&K%Ug zQV2R&OQlC^0PXrNc7KUi2TOTV%%4+Zb)K_U5&zzvMfWfI@hxxG8vP&-{1-lwTt4;7 z~V08_!a>Qsh6273a?o+s>Z&?FWJuJ(lC&?te8 zj!nIsdIm<+q9VTQ>C~Wg?fby-oNMmelT^?&^wX2TH z*5tK!&OhwesQCEaZsWaspF2n(I`NC-IAdVI19ViYP7?gn2BlRP|5S5kr+z}qvZ6)z zHSiO5*H3|2u&KCPDmuvH5)l9#MFGddpj}9QwM7BpRhEPhfM?ifTtmA^yDbYfX%vs? zu`vuTr0lXzq9?-FNvmd6RaR^5Jjq*yM_H}gk$YC|$2>N=dsxP8AiiqT2Nsl?Hia}) z!p@Z{=prTIy5SyPU8i=awYNwOQPw7`QS&olrQFR&RD#D?6si-<(mtxMd!a=McF$M7d(`yzr^Y4 zrxVKA)_Z+gds#jx!fZqOgpYf!!H3H=vY3KZ3~FnGTsp_r5_cKkDk4kXg9~7$-~hg<4^cF%OvSuvaRS5f)hR9d-BBJ_8#Irmrbn&VyO@4HF{_nKtN`P+`Raf3?TUWG zq+w#>K38r^OXG&WPcewi4pkWHoCU?-KftT%0b@@Sv(8ayN|xK-axX+(Nd0xt#_d1` z-0e9Rv-~%;zDG~ey`7N8bRD9sVHJ>8wK~kWqE)Gw{h(A#7-7F`Sr-9f=^9JkuYD*$ zwrAH=Q^s5EB?QallxtNiA%qm%QUGYE2SkN*e;)SMK)@&5y0fxYpb~seOM^BI85z5M zm_YEzlPAq2rqNabY1nIR<+w=5CL-fIJwacGK6xH7oY zoo@w2?%(G9j4%vg*&(UX1qJ{MD=$q|Nk`AI`}}?9Mt_PxL-L@o@S`o$8s&_n@1jc* zJf`OfMPqHm;l)oXH1D4lD$f3jBT?IAu9~51K4nYS(@jt|5T$?L_xA(EulRF^V65YD zfNslii1{ep<7>GkRYB!PN?swBnr3u7;2hRVoVXTwh+iY?qG{QaSf&J}d7rMGzeX4! z-%~eHSwP98eRy`8t5&EOc#(~z+Sq0%%!OUv-FxwUildYCy8JMHqEAzs+c;}6f3}k@ zN{mjnqMLg>;5GaYD%ryjInZOA4l-!B(*3RN;<@~PQ;&R>d&)t=Bu(V{kV{S*XjACbkW3YPB(CgQrFydakw=OBgLEqkF+3czj zLvCL5SUyq1Aq@;{Au0W7uBoOp&szSM!)k9f9oC)kqcC6|Zh0Eiv$XX#&(XYY^mgWF z%Qa+TcSg>4(N)Y~&crlz7nJQ$eRPV7!>XKc$3ITRK<(0+BOtwQozS2)czZ(-tViZz zruJ@<=gO}Snm&794bE7;!&uM^hoFm|p&ED?MCG3m z5X57!soc93r_dGVqHD$lEI@%;E^|)GZPs;8L{hy|#*q_oL>n!NH zVKZBLXaM<0#VyQe2`<#XxT^F{qb8OTWERM-60^Q3C{3ljN||S98RtA&|Ic`ev6?X2 zGoK}l(w-z(M>_T?n|@~`w&7Fo=tk7&WUV(%Av^c2;5^?F4lXCTX73fZ_v)$qgGQ=Q z$>PJ5XV|}u4_6z(z5a3WzmUIrt{9Ws_E6=-Rs~`c7JTjzZ-cG>bQ zy2~(uFgy9b-(-Ke#r)%z^jKz4t@3@wNw5$yP&9K{?kacgSzzxh@Xo5l#s{bfzG58rDt;M)A# zlKm9bSqQNRyLKHLY84-fnr}%V2Y5f{?oDQDVyP!P+3eMuK^JkNnEkk*8;Qy9Ay?QC zaBOgW;1_#${GM{N&+W7hV*tzRP+Wh5og;7E1jFY%^Xtc?4+k>n40lj|yC!BtE$$(Z zPM(Joj8^BJdS9henAKV)nc6`PPa;NpPO*bLcx< zMf6%4tH5b3dx}X`$5AZn>XN(%JHF2t!u9`sU1!loDeVVsMbJW!$aqu#pm&itkB@6~ zIw#a-{j7N`l+QakfA5r<{aNUEl7NuE(nWoabRS6t@7(GlQbQ-fp3g{t1$e|R0K_2e z3A8MJ6&=>C21C_va!>$2?Qrz# zsckvCl#|gmo~fMyHAot2)X!GHEv*0D>N0ILXU>Q!9|l7dJZ??u_c98JU^s;=DGbI5 z$sXaCmOBYy6Ro2+=5diM&q>N1MIQL2u8~T|A*~+k9yVOF+16>7oonwi`su;*R(E2O z>Cmbt{cgW^07)$4o!O*!GEbYSHJ!9sKUXOrB%~aOx$Raa)$NB+va3AkC8%Y}(x1S* zMs$YLkL@2d-r%JBIqt*-_jB_b7ELP~Z0_sw%A;ZFH`gEH9Vg0LlZ5krZfNd9e=qh9=OZDjLVDY)f8KFiB<*}q zoauZIil8R@EG#S>PXrH;KmaTnoaEEUYqH~m^eZV7u<)hZ6lWHgqom~@amk%fyGwK%J045ug#3c4)#iR>j?43bOP`%Uve>&HWGfTucyD%bzqt#7DQ*3! z1IlJ?E0ABAE0t^5AT+7oQ#99#J*ukJm%;XWKkD#pA{4lvWeN9j33^2?VHm5uk8pwK z;jd<&>J5=;_+~xv6wMgI7C%OMG=$E<$o!yS#H0U$(lqWvZ1mI9E)8l zyya!E+j8ZG0aQM|7IpuvN|*%(KW83~RPyGrM;jctHdpjck-T%HMuzh$48|aux#??q zagp@W^A>oJdOvSTY!zNDrP5Us9J2uwrPjVq@`k=U;y}F2TFMGCI^W7-NFP57=;?F=;T+n(ik4ZKbb!r3aI&# zY4Y|yM~fa$wPozgZaRTl+5l9V6i@J}Q9Qy1H4Je98)i5ZqoiQHfy(VYBpd`GyQ(Ag z#0@h}+MUvuGr0E@ORqEg#_>9aJ9yaj#_ndjd-}UcLdMRb)}QQHwEcTz92Dx9f-6ev ztgygti4$w(?4d+>nxv9ii{Z`4$ZKWm6?Pf8s21;gbsBO~{B%sumx)bsBtI#o_GTm& zz^<7UU8UP`Ck^y3&1=0f5K4;eh0Stc{fbEB1`7LbvOl!jV#g5iN6jeI1*}d-TfuAh zhgPDkJZRs4q5B^9xI^rDrJoJnfy}CDL*g>n4D0$42tXn}`pJfy4=>pnus?1n<9upK zz>Srgvddwk*G;y34-;aac2d3%R; z#gq6490U1PoJ1&Q{pH1S@Qu~4Rk^@0+Lyo}&dE)pM5AY8h=_i!CZjzTP@q0$Zy1~6 zal2kyu;rdV8n_B$%kL%YG$$OB)G zzH|6z$EX^i)QkX6g8+R&-tnU2-CVhW!R)H?8%GmA>Q@uYvbEcebxnq`(ZL3Q#!DBD zNzKiP3?N_>D~DV(#-I8%dCWuZ*NFA_JpJjkNG709E(Zrvci#ww7+4BaBrYrGUTlBkf0e&Y0RTI)>tSU6 zXw|@0Hn&z~PbJ?WN8ygXFvLJvcnj%r!O$hm>>+uzEc!VdZq&`8v6^sX$R&tjn1$a! z9S(wRx(6j{OqZf(vptCOAGvCf6V87kG-XN+Oss`7v>!c@0+;>0h&}OECHub3w*ztG z#b7vrdLS)n-6HZv{k(o|1Ua^$!DAgfh^V-e5C=E3bsZ5vI{OzSyo~+~wVR07m^*Ug z@zfOlsGcYh~b-m7Ny&REa?G{N3`IzN! ztB@R!M6(kI?y%AN5Gs-8Y`NUAKLvhJV7@cZ_BguImXM_GmDFO1?E{0SVnG7n8EI;f zacK2LQfIzfQOfQk7X%AV8>_MhKt5hdq;aKg;4V9barfVYM*n=@WmycXKEZjzyStw0 z(WT^MI!w7%lOW@o*Ht@{WXR5wM>+gtQK3b}4TMf`9erdgABR7-sp8=CFXX58 zZhPe3;;)~Gz{xE2c10?Y8L?~HUiHgvDOI%mB*(88q68_4O#p)^lmn(tKTSl`!#5@d=D9H-zqC+=YNJ zqM8SwOw-;93<{z3BZGjcI)CNy$bd3QE2?Ih)o+*)=y~K zXi9T_7NuVL7vU3hQxM!%G{Ff@Nz9y_0vWW%fiEDQ+utTFBjHlrE~F2_nt}kAG%A=U zy|bO749lrQgTo}de=icG0UHl_v&`Ffx;G_t@Y0R3GqmoxH>b-_UwR+OIDUOjS6<~f zVn$IoI$2at@NMe1C0=Brk%R&=ZqRAf@beN#0PTqsEIwvUZR3S7_I^8xhuPz0xECkP zFQIXy>6bZ%b0BxA8(e$NlX9lLy{{d%qB(w-3mm%a$v&(ZZ!}$tXsVwCeShsAbVQ~y zoCE*>AvW1$HuD&BLjSElM2n9Bozwqii96u};oT{T7hgU=zb4`y$^g^*tcd{e&Uvat zfE`RDQO|bqs(Q!e9f_eCz5*xqwqA8En559!US<7+IxIt}TO6LI#SSDe zKZ>Zop?B!azCrGWoU4MpyIwU}%QcM`d~QC+(8JC;O26U^ef2i!(-=1vguW^{pEP%H z_4;Zww#y0e?}OvF36FBe*q=m98zUsXVK5+mo!nq z@Wyo+OfM$I#+c9Gfj9j}WZ==#a)}JP()0v| z3?R>fpcR<3O;vNaS3M=7t*FbP!IEcN)-U=Rue`kf?$chLZ*3T3G&i*pYya)HG=@iL zxpOzyR8g&nP^YzBKZ06uB&urEq%>lIAsX}n?-#&uuLl|4aVR!Dc*uOL#U~D%z{^Kn z5=+Z6wh`f9%OTQ^zq7bYhQBV8qV8X2yms9B=dhakmxZaI$DyN5&wdtJm!#t5v>0~K zq5XB-tZ(A%cq_@bZ_{rC=@uFI4OmJxP#nE{0|EbKLYz0~Lu4^HDOec~Y#(m|WUDZS zYXIpuTlqkU-*jQh53-Nxv#iROz2|K---_!m&qi+VWS;VO460Z-QJL+oq+t>(N5O13 zl&?Rp8u&+-9i}KJ zYj+d)NY?!kI1dp>7BuumU0~T>l_YHwN->{IO_s7!Z(unqpez^t%{kf-sHDJAKFtvz z+dI;;;UaUJr+W0Ejm^lzRy(V-0J?oLz2bHSu_5NS0gn0FuVvM1u}i9lsFNF%JKMPu0X*eD6|+9oi!J1RCtt zV!E z>15CMP#Hvz-S6VK!n}ynxj=b7O5Zvua#X2onsOC;)c;|ZG zdr1z{w;N7PKd}V)+{CygF6daMED!6C#ZCF+hln)jI;a0EN>Yxi`m28IS9ht4ysS)a zElSFz@#NIEygkZECn9{u_g~acBBB0KD_s}h72532v-zVE=1j}M1GSe{Bft?c78^uf ztJ&JmO>cMVRB4ejfT>KS>M&30z8Ef2ejNzGHlE)9Dq!Z#UC+#YH zq8DXFJWYp~v5gU&L)H^MS7w2ZVE~_ew4+*fq@Y?-NCV*Fr)jvbE9=`hs`P5p_5fgs zg7pN6)$ItbQ@615ZYlf{A5>-gHy`sQCR=^a)^Xq5^VgW;%04(-CeF=M&gB1f#p>W1 z#sx4CQSLH`0;t_40l^8LjmqK+0d`vt#L2)^TI}`ydY;1D&{le(T@LB%X$nfxu7#Tj z{h`vzW*O^eh=R*H8<7SPoQ&kD0c;j*X?_wo4>zQ_57xrsSvw?FH&LqleBlgP5ZeF8 z!0Zx3y|!2aE`8bJdi;?Q=EVkSWjz9TR1+2Dih^0rtGMK!g5nx9P#5zhe?&8)(L5bgN8;x#eHKb7d5mA4NO zlZgKWk+v4^a-}kE<-y5V_-1Wwe!&NP=(OToDRuN#>AN{Ku=6d;`a_{@V}}VGrd#zM zaDp>^B=4Fc8PZ4wuR8AU((|1uig>DuB@WIY>t+~AwHlqGPIR)3ujwJTi`&Xxgj^*QB2s1lTnJXc8srEQm!FV*7&WVV5w zYi!>Je?tC;GL9R#$4f)95q>dt;4eR;33aFt&N-Tzx$JY^kUzjr?cjUKSRToqQ`4;E9a&j5({JvY1OW_XWID~mhokA$-If4J;G6&f;TzKD8FA(NCo-Cuta!-VIK>0G zbU2b2NWl8tz(e`1TOARawC1I`(fG@g`&1q;3Alvsq9{fFLWUR)2F|+kxzRw5;(d&>#X5YuQS`?FEj`_!)(g->Mm$<@?7RMQ7 z(vf_yZTqmw$fKK<_$lW9p5(=Bv#=PPm3Eh8^8`h`!Y^3!_-qQ{G9MhEQV}9UhR}il zhzMdMj6itEg=(E@hpB3;sZ8JH2J6&1^Iu&e?oo03JJ&16Zt-Sh8g9KhkWq7JeFW7$ zFYW8PyVtkOSx-k-r$LoH5ujt;gVNYq=gaNXJh`UK_9I`%gS*`Lv(E}J-XP1zn)M#s zw(e-)nAfsd!SuZwo+x5E7T&)u615o{;IqRYGqai4DSKa?zFYC6%=%6u3P7+ua%ZdJ z;O@c2J;;&WKzDzW<6JhjML_QUJCMurlj+rV>agYWV3*&#CW;C`4l2rNm^fT}Kk&yv_)<7h;d5;o#_2(EW~R_JpNIdunC) z_R6Ga&hQEus=2Ra(huA>Fyp2kc;|T2(g|4O)xG5bm|(HM9w`96$(cpDM*S}^LvmNT zq!0u#fDD~r;2oRQ&pXU8zAgVW>kiBOvf^zF%2zb|cYpH|pZEC9=3Zzfm>2~S4L_yJ zqpjC)oo@($%y%d(P-sYuD9Sq@Mr%#5oRxOCW&@kUb(PVA2-Nm*Bg* z`k4jB*BZ?U&U@br%*96KoR*M*P|l^}(5?6z8s)HX48j#z%xWDMw5+-EDx1V4Cwl!t zL_jp1U$_Wg`kv8O`Jbg1(B4SpRz&qEnbbh&9a??ZZLhW(D~UySM5^(Hc^k^D`$Zhi zK$WQL!TqY9e!n&~F1ri=%~SsU^g#MvI5`XX{VI}Zm=8|Ba6fpMI?83_q@-QP|8$pI z?Ef|b?5=!5>dDkD1YfXx2jWD(-hPzfxMMq~EXhgw!3nB148D}IzmdmMpfsD|`1$I7 z9oI~HUh;0o_Y4D9h=^zXhXMSybHuykz&XgdI!Nx(weGVGw>a=8eQjy7aM6Xm?2!c{ zL_`o^NZ^saDEc%>SEyqKhBtZ%qJp!IDf@T%j=W`DoI_i+?17b?J+pWe=6W zn>t)<)?a?<43RYCmmw*D)S}YbvXC3^Acv_cs*b{%A#bI-HH?|YIR}(F z@Cen90A2{VLYhLy)g7D*dmAe;HcJ6h_>pzG!Srh+Kjw06+PV7eg^9sz>28)F41*EMQTwP-ch zKQCKDK8ck(j|p02^|(6iy}_q9Eenu?lQumqG+3q~5Io~6Hw&QH9Ur7KwgLvflnhO= z68=hd*Ss$m*MCQo41E9NMZe$f)2%G)!}E{wN-taRM-c7dV1Fu(0|A5~zlHtm@q)n- zB=HFongJA>`Al!PTt~=(fA>O zd0krz@g1l6|9ZZl5MVRBJwAz)lh0(wkghuP=jNu&ew}L1_3QtoAgow^y07#SPJSko zu~bz|O}QX4JY;w0`Tvoi#6B zdvD*L*7z?G<0$9lAT7P{d-mk6=U=yVD_o^L&`l}$#ESO7B#9c6dnmyWO@r$`WZW%i z&rWJMZBOdx)4)4SeXUY@0kI$o|`0$FEKDG2gk?7*HO6leD^mK>+mv2KkwLh zJsHwFN3~(tDl!B1%HsVZTIYsrUNF>XIgE3VK5a6dM3N&q&9vf7RWB|0Scj1zv1AM_ z4L)dLF6Zkyk;{Fh^B&Kq%wZO)=JJCphommdo!!6Ppda+lJ&G-mUMUi-X%(2 zN0WK&^EfdGDAN-Y2h(>V8Qp94J>eaQk3gR80~iqpUX4&$_!4}ad-xJioIZ}j6FVN_ z3E^6B=*iFt5(S0X1+3%5B@u~+M>6l`Lsz{t0qGDF*s5#ai#Rrmj{4MT0wZ#STY-d= zlj_QnRk^R$-}`TPK8{KWYA!0h3P8;oO4>&*WYbWw#&72NFT#*W-yggNC7Gx?B@7(W zUwF08F-GTZ@5lyiP1p}Fb!)z62Zha8B;V!3?5}PDBkpy$<^4*ul`FBN>-BEo1SLM# zsEzhAU(y{qf+L<%>PbzgsIUjzIjqSr5<4cOWL532@?e$~b z2iyB~VMQp7PWXl9C1d+To9k;d48 zs^|64EVKcdgRz@8T1M!Gn@<=p>fQ)Lr^k(a|u3PdFoht3q9Pl5M`|+qPTHLjD0{kkQs2{I9WR=}O^%aN$wJs)+k!g4 zshMod=@wJ*OPhQS9eDv!LXZMhVI3u*$umR5V`~>t>`bTGCyT9{auG(^hA!E!e3!Rh zYsBy9YO{N4P6OQPD8(w33x>)+YjLoNsn{U;x8gP$Eps%Ps&k+LTf(KzbY-b-NHUhU zoPV*|KEJIo{4QY5OyR}Z8JlDdkS<}`x9tZ&ZfyL#F8+ACk*K0B@u*AS=6v}YtlH}y zr8|z`t|(DM0acR`Dq70LupzcF8$`UBKTDgz0ZFI#0d+sSdM8?7IkDDuAtPD_Wej9k zSOl8K0KwkLz)cJ zzbibYQ&#Eokd^p3>jLP1*gdRG+LpE&WtSlUl}! zpNfzqpVU?MPv8K{o<aT0n2dwdkcK^jC*(Yh-gSDF6U=u_W59rmRZQ(vK8v%ix^lTShc75yY4ZMaaDPH)K(+ z6!z0uDdb{tz9hl+_kN$&lD=Hi@L0}}32mm-#@vu1@#1+eQG|dadutaZ$#y8n1@9EX zf;-vi+w%hJNe3Oi%a7JDaCgMQf0xbjyI%5#hUe+%+1ty4@74eh7*GIsKmaQOU;QA_ z)9qX`c`=W52?k zlzHYZTh%Nx)*<~!r0$_it*3VhBTbr>P4QHqWeddv`4i?7AHsZ9E3vrtdgV;kz$FJ8 zeDE$~3iF9DViC~ch#ka}5>uo9z3Fz1+*(VjHk4d{*5)6s_L^uS;dE$knRFffk{l~J zxJ~I!U3ajR3pxNGKseVssC;5dM7l8yq>JmVU!hg>qCM1$%^NKkM57>-b831nLu4}p zh2(X3tfX-C_q8A^m*v&xKGx(>+k^qA0R&#J;^TlTLTjxLsQBUz8h+4xg5H`<^p7Z(ZVR{7 z7S_6Idm-F-4Zp4})vlyReqB`s%fSnIys={mF}p0mt9;7lLxzr)sK2BD!BpH9Nbr3; zlO)WNUmvS&;|@D)>Klz@tk?0$uS33@-R6ILL8Er|T6}JJ|1=ywJjE5COjJ6td6qIV zXQZIFU#S&b2qZ)^uSA$uPjqs|){d9BQP{-3!D3#$XnF`E#~9f4o4c>}J##>`ZK$rT zQJW=xeN6e@0rcU>3F>-6CuE11Ar?>wAUOo0x;iY@LClv4FHiDp2tQ#UVR`u(b1=o! zs{B8s2t3cz2a8pS4QG{aFhDw%xj$d}F=MBq!JlB2b|ARCtB+byYtxd||CgBLc`FIZ za>`T7h$%{}jw=?`Mt$_*x@{?Ds6?;erjfY3^;GQ`LDr ze)0lD9&&i!`@Kwvh*aXV(rCj>ps4I(OzgZZB)Rr#HL^6PZVpYlZ1dw5Jmfl%WF#kUFPN5lcbmAM}uN`(!KCvcVMH|of$kW>{yekT(`e4#m=WI^} z)z2`)32#J`3H4;Ps-&bI0G^%8*ocwj?9|R+Z!6HrtP!CS%c&+umI;Q=|@X7KCwD6GU_&LSr##jdet3lGS=K znUy*kzNXV9(XM{Qbr>|3TpOansxZ$Qs;i6XVG~lY8nL1OJp$z{kW`c1`(C+sm`=Dk zNpbdvBc6YLZK2CWW7c0K1RD398#*bCLlD zT0bA6kW&&Q5q@CoGZ!raXFuv`_s8{axq5U8b?;JBb?l?9jY9if6Qg2_y+KEFznIk0 z!IS7;xw>b-eoI~byeI?{mqVY43f>7@4US=yuA=s~>LBYl-!iI<5o#N4xzsM-xVqp$ zCKU?BB(?0|88;vEw-{M;|B(j21uQ1A3}9K&MpHVlhneLG74P#=MZIS2Nzdpgpi!On zljD`$ApHm^%*L;V0t?uTc)_i&jKTl}yCbo{1Hudj#qj(A)}BSyDwY0*xB5Stbh~Lg z5VODGBEVFRloYpJiAA}X{*p0nLm7d&_|2!GeaGh)k8n`I@!&DOuIQEd4;PA)n26bq z-pN-KFbp9L@wbNc%kg*KjaOj|JS8}W{dWq}(lIG~gagt2pJR5h{uPwV+Qz@h0^OFs z0OC|Hx3;?v;*L9^i)33OZk!cUNUvn@V^|e$B7Nxp;-#kDc}fI%C}A2fy_B(B_4R*d z@OP69LJBt+kxMkgMyex3oeRZbEflf zIFfac7zgr4+IDOs{_4O?vLNxnI^u1Q+JEVno17WGg(zT@ofsb=-;)*X@Hrg z`8CU|;gP|j2xeyY13;z-4g$xL0Af4$9@bR8>QL_ze0BQr@K{a+DUo4xU_ZAF5+VDS zn=anp?Eo`*7HGsGCgby|I`+t{Wytk8Sia;FIz%1h!`)H5jtGz}}QJA|h2Z|+*@`vT0Q z1+?-6=hi47gTV8CCSnIoUlP<36i*zDJLX2fqaGztWrJip2JMGT;R67?@_B<$!lj&; zUvHDrsjJP$Th+W*Ps(pTjK+Amzn24nq18@gVk*y1JQRB0sA_XDGE4ORl`o?@|Aj z^#@o6$6Xlwys}`y!MG_58*6SusB5)=`NZUlcCK<1wYUPBw0Sz ziUQXg1nT>mz_9wowVz2#3M*YoEug2ug*lNPw8CahFRP+qci?Yha~*PE3W!`ZI~C$Q zREs3xE|l&2N_)Nf#h%MGs^oorGE{FCyY}it2(v!tNdQL|fPo}vW8NXgAn}MZdC@z^ zp`wHf7zqY@)g?Ci!55SCo53vKGZTVnzBaF+R}f5?Fje@dd^MH?yi}#n_gso)7;MWd zKbIMe$z-5Uu2<1XlYw62qrUvFG5QO&WNfN5ngZ_yy=|buPM}l4 z`al7IB;zBkH1$KCHCAJPFceuKTt0V^*Hl)#}`8Jd1H=oU03>n z*eEjyX(poD9jOTA@f7`73V+@_6DyuHDNQ&d32vC><(Q7IBsJl+@pe7(@d#}y$3&Wg zSTS4JY4vyduld=`4+>Fid^}rvjr+{kZNc4gvg?wLvxCecA4l7=%b2ii$NLk+#V=Cv zFhgrYOM>V}Tl{dhyQYVSs(2@_tVvBd*rNIQC)y6ievbCPx^F~HzL4<-TAumchK#c_ zi1@~4aFv*ze3;i;TPN*tYy)p=m0x_GePZSzz4wQMdU;B4{@f&-Q(!YipFI5Namay?t zJR`oorsLuAtCGWjsaNqP>Q!@MbyV&UaDE{Jg6gXhrl-3Vjl-820`L#Gtj41WGgtpN z7gM0UDJ36&xy4(I(>U$(>ScOb_^__$_D{m!d}poOWii<4 z!25AQA)AJ@bK-8zfqRyE_uwD@Df#l>-joD28rEq zPP0^4d_Fxdobf_5PAHgq0(=0Q5=SQLG=Kp2VY(~|{}F-Xd#=cTI)WN8Hd~KJ9G#B2 zxxmbID1T#q2|vY@Uti@^q(;4Fn8;4F3+QW={2x14tkkI zi1<;_Yu?3VVc_%x1b)L1tHx4$LR^hhW3zQ}-({P+Oq(fuq2wGqaM>oMnIVxXVfTqv9{z+TbAcjoBd&y069-VZ<(|H^@qF(@83+bK z#&$p7hnvXj1ZK@on*~R5XNK^c5U+#A*AVV-ud0@lBy*&XUkDNe0e+!^yPo7kH}e5_ z`vO65ZyB^lFpCs(U#=$z*s{yL2$RZ2!z-}YMHJ)g8a{r77@DDmqHWu-bAaR@I6=-( z4Cq+<`P>{^MK`31F>vWqJdH0E`=w=mb?>nlGlUc380Oma8a2JbiV`PR73_|leaw~b zQ2XV-ZKik+urC#SIVJv9dByoH_lg|Xk;M2Xz#QNo{R+I;mHS=q?QxB5-j*k|%Nj14 zy>)8C!&5TrsD1g=md3L#XzgaVpH_D#J4%Rq#&%AD<1lOc0RTKUb*b!ZHci%9q!(AzB6wMzXn&MJgd!mj z<4FjJGyVDj?)i`YKYOs3WjhQ6$#Uv&vuN}A%`SkGbUmvl8##U@b2gG|;0{b9h;`qu zIOA*&D-=ApSba!0Cs32nWc_tLchAg26#GM+&ucm0u-)-J8d4Ai{Zh`}_2`gSjMkym z78HSjzYw}B;D~ke-bqA$hMW~}bMI{>=b@!JNb0JzV&xwI31I+hEDUqxQxEykFDBl4 zFaAs27S$&GR=>%6WQ+*_i8-e zYP4rZlS`>41w;VklyCl3bABWnm%56nyy}3%OHH%Ca5H~hk5N|oelD-Y+;Dj3GhWqi zTaLu^HubU3LDPF9YwFw79w?KG8gPo^;qFKj($Iss2dx|nWcW6AgUHBhlcQ>#96)?;23rEUhE`n&M#1$*xvk~(Xuj^3|&AWw`FYX@nb{m|18Alz_=8 zUpJ!(5|H2l3@4Y4yxZZxm^)s4l!3^g)fQa&D$iHruXS3*4f@=yli7S4!4=&uqRnNp z_?>cih^;G%&-yfmpDGbN>)-t~{Oea+tePCzoTmbPsjm}mjtSwC9H*yfdgZ&CCFfHF zY8F`zP~d6#+Wo}DCQ<2{r^=V4op!(ASL~90Wf@a6YK4KX+-(oFZm)>i97R$uTpoICXCjq zsF~%->f_0Bo0`k9-@cr3M-%Z{JddwA!`F#J6R}iuk`P2l=RDhGRVzSwY+)3NeM-U` z&v~G2KEy8$tX{CbFIgn3uzpY3;mO0E-MlTv;!7Mr@9OHYQchke$Xgni>)$18P@!zy zIvAGT3y3q%BhQ{BFf4xGz7T!n2>{r`YxM}c4v3V72irPJm}y=-GFf8q=X&*RmJmrh zK}`NII^_gzgn+yH?vNQYI`9hV`eZ8dlV_7wI6kyqZ0L$!m(JVbPI9hFtDUXt-ax(- z1r>g3$A;vqc9F)mc+(p+ML@CLm%#`O-3T zW|>Q}{cO6AeS<;l-KF#&{FLRk4ie<^Q|p=s?U_mXmBS$O*0e`$>OZ;LJ3XK}+H5`V zGmG_knC>~U;~zb_R@tjtly`7BMQmc-yp*UTFiF7qR>2S0wYS$TBqslh4405U>_CPR z^f|chR}Lk77*nTA)bWAc}>@uV0HyCSjjDexJ70#`Q{^~Jcjj&2i@FM`1-B<*N z6UzSt4qNSwAzFC%$vOoG>UvmT)jyjG1SSJufMNOOc@LYNl=vmv#$%vYyZ(+#-Rgev zvlp1h=z&SoVmU;gOE!7+^v01sxA_+?WP06rj6 zM^AZ9`Ea5E&L=V0rdi9^IV*!&MZezl{m+#UlI*_2Ae?RS%k_JgmF%!(mXD zU%6VlPs+WanCvQzv!4$$LlmX!@R!vHYQkf=Q{8tGanBPgpA$$4Rb_;WQSN)sla$JU zG9hP~q9JL0GDAl?C}`1`p8GGPT)-pChz6(-!Cs|;yphMkhKS2VVCPVHdyT;GQQ%lY z16p4Z7_`*&I1;4-pij1g;{SSejRjFoprD&yo(lDEvgK1bxlrc6r}h@;^zVt1H&TO- z#Xyv&O#BAnrXs}kDUJ_R{T5Y0Y7BE6{nONeNZb*^Yi{I1n#to!?S&}juW>V)B7q1c zgFB@dpR{K>u<|F@(?GMw%GsA(kRyJXzH2OmLjpYr+$=vlCb2d#M3&SDauk?}uFl>m z$`2ab$0aDyJStkcAW`+9i?bLr3M@4^2skuZ>T=(Y-G3+JRihafUn^+tIK|Bd2(a{67Fa}@73L$yZvbg~yrp)}1+YXzEzU`60^vrRO6q)&3_EK_>@Nj!pQ9Y&D zD&JeEOCWiuTW=&1S&j9bJ3<2`u&pF?0J{IgW!hEcncVL<=}jG`}(B4w%|NP<+RPh zcJiz*WV0?1k}|WJeDjFQq2>Djg7=O6gm0Z$p>Otm&nM2-y0BA7PBm5^eE-Ux7y|VX z2X0?#MhpGePhvm4YrJD?H0SE$cuKhQgU0drXXokab!yFxNy-#Sf(6qPrmghiJ!j79 zf|+j1cDJ0)$w&taJtYRL?W#^xPD7x zdwIWbs?K_BLm_Acha3U@?lnA=tVy1z#UcwIdg5~*Tfi_0ncvY#oUo7z6-spx2zVwQ zjfTfw&zq^vlZGyw#obcr1_SC?n{Tq0PJ{g$5BK> z{^*=`i>#smgiD7$Xx=gOY80!|em*=uV;>6EDNByzgd8gf+ASJMZN}1gyj8OZZpR)& zkLbcopw=A?Fu^EbUR}wd)({+(4~-}P!(B>V6g3T}`t5~%F(hy>zaVKM*X>}a;f%IXtt+Xs2bm>W z7#w!i=chzir2ZiVDe=24*#XOVkQVj6(JM0V`GiUVx2LQhQmtFDK#dTF5CrcUsJ+a3 zoQ#y>8L)Vp>K{&qxcyPl_Sg+j`O4Tax=V3`^G8LU`}amc;m7D5-*-m z4{lCMK0Cd1H*2J*kb%6t-+34PqV6z{DssV`CddniFCW}OltTCr(E+CdNf6?$6`t;Y zgr2Q14Mpld;($KCX^dV@4xoB4AiCi?YRU@tc0aZ3ZpfDig~-`c_<-uYop+ld<-V8t zKwg&n{>XxjL#+srcVY(PrARGtoQN-^IZ`e8bUvs1w`eB@4_5#C0z{%b>B(S~A~uAr z=J6nFiaP}wI#0*XdU)x1BuSU`=+DF9HZtrYjbF@=^rB#N@_dNiD;;puzeep7aA3L4 zO(>-G_j6V?>DhcQUF7X-fkgMIBT)FtMGXzI_$l`~a>`{zfw~2E5o{FvBLit5_T{w) z51A7qt;XrLcx<%+R;Z^KzWzXZHGT-Z^r=ikd9III0+=Cj+_*nm0W-Z(eW5G;!kN1w z)E{vUM2c4y%V&olJ*>l}+@Od)jEpUF^g`*w+=CBNqii_=VCYDbPvIx*|6hurm+-OsS|%JMlUopsseEyIBC6XrnJu#h+r zrKeV>k~4^-CqUR`Z9hr}pOQ;I^y8R@&x!G9XJww8C7m`#3Bp-LVLdaMZh_lGv`bGb zA+eGL2(4?CIs<=Fj`AC3%;&;9X*@{bnPIw4u5s8MsOybzzf9M*16;Vj$mDDr^^X=` zdW8m_J5MR56uV4va(UMnMpiOu~|z1vflD zDb7BT`XJ>Kp`%Mnd7atTl8cGC74Niv$R&}3db&7sq&X!V1zNJ-Pb9{bfPCn8zk;!y zQ|ZU>mbg>@WfrMR;+wicUmC|*uAi1&SH0kW?m3Zyh8p=9#C}%yYWu8nnn9KX0nr8} z?CsS$(EdsWwrzxg$c^WO+18iZskGK<=z%$+6~aK21BQ$|g&Oh0$e=n#qMHI@r+(zo z;|Z;$S~s~sy}97Dfh+27Ryi4LfTHol9=_D>VJtAwlTjon6{?+q z5sKyv98<+O+E^Gv{PB{tZof}N-)V7**P&piQ^o&{gVZSV0t=@giAp^Ltq$Z%UKau# z3|MScb?qtHygi-CCGX20CU|>^RG@OWBxIT=AdvA|Pm!8B>4>??3UPFIDcQeTVfCP zHKzT5J|o7r*?kz$NLra0zwujpl`{aV?f)b{W?Gjq1;?m#!ga2g!Sgo9t8!05Hpu){ zXxM_Qg&u4XMdW|YOgZNns*2PK!0?Pdn)=~!59PI?14Wh12q7^52_b5Rkb7!(g0FfJ z+ZVxQnF0~<=`b-Fz9-#sN%Zh-6XEI*dwa8fN#(C)36@b^e^W#bJDfHX0X1qXE8IFE z+ty0zGR}xo@lb%&kI2%ZS10^1$=xYG@|S5>Kyo`6L+~UWP6nCPvk3hLcrzU+uKXxD zGwO*T0(g`KyV$-O7+@gBGH=UHrwU_b%X&@1E9$=5<51`o&sNb#`XwYQiT+Z$y4oHP zRFy$ySFyMd2}CZ1zW>LU*Vq^UdWV`i5AqWt#sW|Cd{6vC1~V=u?VG;IcHALfW-faA zYZ*hkD)45)ck7gM5d3}5l&Noqpr0GCp1=r%|DjYvG)gq_fyz?aDMbqpcCSQH__N}g zN*|UHJF=qlWoj_%^XlY7iB%L6qZTsqruH_aJHomU6(OA_KXAgIMUlom_#GaDe3;zI z7Uu@Ze5;>Rx?csR=2ETp@o|++`tT$GUtrqjw3t&4leB^%m^EtfP!w1;33K1L{b_Q) z4=#+>3P#Ua4WyjF<)OKYdY7i8+{|7R-0pFJZ62yy2imF>tE0#(?uwMt>!xeXugqw! zonx8>ukBsG-1Sn6+OU;-W{Id&RuUtqs`&(|Y+(CA>&RZw$pFWo7rWLV+DbHO6^}b| zdQif8U+WceJ4o-eSX()>XwD*2B22K}fdc&bfbxjF>97tDvQ*Gih!I2(NvhqPirGKZ z6eCWjP5$l!+Y6*)bl(fvuy|OD#N|=BRbj@KP+l_E;(qLEouI++5EKE#8bJtD*2{FG zltyK>s3!A%Sc`;_rx$~Z#-SP5KL%7nQ>wl~kK#4E@4~NCv|aD_rZhu~d>_x$fwugG zdumj!R)@*byTANs)JVeR9J0d9`U5u^{Vt@U?MT7C@JZ2)Egq6z=ezFSJcm321F>V! zh=9YI9E>xvq?SxJD7>K#_lEbeya(onff0UNgWwuJ% zgssNXHCax2Wl?u#!ai5&QlpfFzSzCCo9YrXf(iS`z4g4y-|1(f7vpSdCMzbZCnB?S zyFL7`a}eUKGl1x?fQF93wEpP%aP^2-gMZ@IoAa~3_9g*1zZ7o2APeAt<*Ao>>~L_m ztAJc+gN=-Qdf9ui_1EvDehEvDQoc+Xv0dA}HNMxmci*e{HpBcjlhA9CNtPUVF4%vX zQ+BM2e~(95BWggMa-I!R)mA!dpUt#7!FdoKC;C#5c8}6Kdf|Mgda95CE3a4USZ88X zwlnL-Vo2G)7J`h>=wAD4PWzvFgmD4Pb#7IOS=NMslY>>}jJ)pmgW>92d0M}9%rM{@ zEQ86#s@9C?;;6bwlN?x$>F?b}YFp|vdrPSMP;*A@F||E0AP`gb=vh;OSfY+LgZ{!P)CDX{t~&|5#TQ3w8e!FLJbo68tE*NE+T! zoRcrgsIrS`8Uf45t`3wj=l&GB*fR?PZ>KO9QW_m^UGxI+pJ;|r_FN+qZpe?t`E#fV zh?t3pVTKrDU?N~5V8BH!Qq?R%M42W@i3u5x=JuW&DJK$^(#|?I$4x_J1vB%PAPvHC zX-ZO(l%*tjmNhE(Yzi@R19C*-LCaqLTcZSY1ub)q8SOTT3JAL*0F!usn3qr14+=Z)eF_aLZ|mkmw185GVuBQ3dRcp-n;GfZWbYtWL)>Gvf_0%?yRC5E};W753KK(K=iJKG!l; z@3U_r!%I?K!GD~wa_Dpx0b!XAKcBn`n%LMzjFRS&`bQbQ*cN~Y4M2?`E{I_#s*TnA zkYyGwz6=+P7sY-k2h`bYxqhV_6GOgb>T`&iQ9vPk!YCy><>lDUh~yI45Yn5-X?-b& zR@f#)Sv11~-gtasFb#}C4M2OE29)5(VFm^d4b_byd-N{bblpmS?=FciFCk{w{8SHs z>uTh-fni*o!gA}Cx=KypY$c>|GlPRk8{+rzuKiW zhP#CFyokPne(@18x%vH8W|^$(^xAFj>)MV9k-RpY$Fn7{VvdtbZsbV}H{O{vr;mA|ESMEa$8m#BQ22Lg10Jc@5idov3pK*pCa>Rr1W za`jgcFFyN7sNPa9Rui#3J45%c)K=>_ji@R=Ybgb1B(-vj;sU?{1!;3BLOgTikx`HM zSFQW+2LH`B3-X$)xQ^VyLp1VgAm4a&U98gT~EtaLg2-+2_dH`dx7ECOxKX;!>O`XbW8&dGuA;Pc(P zgT3!8w9z!+QbYLnQVblyPjk=*7SJg5lU|WC${92fw3R(Cgg|lmv6|IVc#v>XPpVgD zRe0K?cUsHM7mFf}K(@X8B_#EW@;vA}oAcI*@x;92Ez|p`;oX zfCxK6pBFQM&L+fc8B@i_+sn<4RMP!711hBnsztbOW-B6VF`#Z=7!@b_QP4xPKImul zI&A!?_D%C%gvzQ_a-sY;@aI(1Qo?9ZAp!xw10|Yobgl|x)@rH~P~oedmF!?ak4I=s z_jo^|I2(w*$bRI9XF}z?XTz!^B`#MlTkN6~_+I|5MsMfIZmo@EJHD|mh|8Cp6=13D z2cnfkSlHq$O&;3dYU}XPqaTLIiMmfZ8o4vvEKo2@gOfAbPcJu4P75CbhhA@7v1lY#JJD1hbQye^KR=%a*FyhZBdDN8AyVOg4lvy9S`=Akbm~6J6dS(IuU|V$x9Tp4fO;Np zH)?}< zDqv|DArGaH)8m|c>TSukh_KR?d?u__1W0%@G%t6W<8&1Kl)JuZ&q=IA^JU-PFx{9F zF8QyT96xc=eByhE&6h`i9U`(F zR!I^O8`41Up2fAM0mD!CYMVDtK|^c*h#+&OqR!~ip`w%axW&x4UvyIQE7+gCv^`gj z#L2Xr`~E)h>1TAkN87?q`q20LRQu!bM2b2sp|68yxBAMfyhEjbv5AOSbOyEE?9^5R z1jWbZLq4|TYz`}X{cBQ>&69r3`Q4!zIAm-@=Fan6lbGMzRUKYYZ~Lbx4Fpa5k2|gI zTw8A2l$42tV*O&y09w}C{ECA@APeOE5gCLqsKJ)IXYD1_?m}u$9g6W^khnzRW7o8U z&9syF)IlD-8A=kvL=s<00@8~gE3}&^IwLLCdaft+TW)3}eHc%A6E|tvqK>%lyA%6= z1tFrdKcMi3q;X$@saV>!3&uhQbO+4)Y=XNfU2aMqpt5BDV6qFuyOYj}J=Y55k z-NX;iTvOzllqjk&+GCCB85YQUD*I+t&>n zl;Mc=!HR{D?=d9@bWczWX+QUK@qa8}zXGn!!V zgdrvZ0HHOY?go3jjW^xLD)e2wN%#ur6{=~saCx3LE!6MiA9MUtx2Sbw|5pSsIB?*Dc^lm8kkR-<|B_0u|!u$O!`ya$(st58NBcEp|FZoo4$f@ z4VQVW^5t@DoOy{wReqsx<}nXIN3vj(6>xzy#o8uTl5ICdfnA&Jmm`TbUPM+e3IAp8 zH=HhdwI4Q=BZ~GIdrPU(`cAK<%ZqN6sf$BVEH-=VW-x473;1D>kc3CN!j%r=s)&F) zhc6y@_=CKEF4CqKCWnjD`yMtA+r!GXH{^Evj1V!9{f&~yo2j146fgxzoWA9%J?Y(N(Mm103d;A z4xw)>I&U&~elkji^|>YRa)Tq?-hFpo$NEYc3>AbQk3Yd}yiE(5til64SvqCOS_h-5 zz~vw!C=C9(9cql*LH^7vc@%f-CtlpL??VTVoUj@&lQ)GroonC9LfRDvxYP}di=^9< z*9R`-+eC+BplV6I-|C8Ob)s%=z%W&NCt7q@KQ{9J9_7t8>GRjzAQO0-Ic;{@d7@`h zo=lLZVC&g0!VE6OOsF6&npz`WU67YTo#DjJR()U!779}?&9KUd>N%i{_2vplGK@nu zEo(fEN6Iu{#v-y$$(l+4;@Z(M9;CnzeGTTrO`vjMU>Q|@4n!Zff>Db`1$51dN{ zGQ{4_G5s9K_L^E!v3NMOBZ-0Y%lP0IMDM%Al|hd|YJ(6C(`Tt;2GRyHb+Ko|B8dFe zKo?jsO~j8!t#Z0vHYo;^1mV~t++o^QUK(G#Jm=ivnG4=d$H!>>zw)3_Q9fxKbk2pN zd)8_wZ?i@r5&cw3L#DhW5NOPfYlzQf)~59vb=NyLK&W6D$TwE}o~<>5#8cx40mAiv zUO+07hQE>=2ge+e>cotM4meG$0N;q=(G$0R53WO=)hw_eC;-P*6LuN#k{!ui2Y9Oa zEk}=MlFLPxNyK)b)m*|Ql5pu@ZzS}VZ8Qp;>L^FIP2WW%^*D=|o0NX9w#^f31eNSo zpuCLaK0Ab6YpMFSo7toD0Mskxf^xUaCNK?BR|b|gedLJ?$X=xD4i?B-@O_-a(n^A5 zt7w3@^4Moec^Ddx0`5O6r|WG%b&<8D2l2Wwi>u8u>U^ama{xMtu=}zD7#msB2Yf`Z zL=TVtT0!i{Bc512hXTNfy266S>A^Gs(zD#W-c?aT&jBG(W5V>xM&rz-cn(wy&-la6 zECT_e-Pd&%K=HGIRgLCA!&a_7)^cR1l7a2;m-qdw(6w>Ay=!&F&?=xyEIv1ZRNB=g z8|ke+9lx1r`tgK|@0q6eqP(>lt;MLfQ_~z3a2w8)6asl*LJPOo&zE4e#@y~49V?e< zlJxi&&np@VQ=+gX-}|dfkM`bf30*uq2?3HE9wuayN1>^RA_ci134kK!rQ9^k8UX8= zx!dn~Ujz=q3znI2Gbe^IfXdxMk_B*0MnyvN{;_n4b_Hi28)P4m=86yjp@#WSDumvl zL@Z7;DI19(7fzLfL8`oNzB*QMl+E{T&*m>>z_8+?*`dZ6`Hm<<45^MY%alZ{)#3T8f^l3bDe6V-q2517D@92hfhW=va2Df-6K zlU)q=eb6l*zlDnDMPlqFq&F(5&8()Kjs!A}ECN$hio#&r{S$;h9Ko(i`Qu8~st-8g z;d+3knQA?GSzsG|-Zhl0_x};A83vsG&*hNj_5Mc$W-h+>+w{Lv7mA*jff}>ASiqRq zt&G+Hbw5X%!=vtn#KUdpl3kn0|DU(7q5ON@zJvy{uRnv!55l@pR5pvJ4#r-=qC2?|$Ndr4rpf7UV{&SNtS3aokIXpYBp~uD%L))Y zo8>hiOIDE0A&rZ1#P8SFw|$A7yX}rP+5eCzvLJ{sG$oI7%E;hC&02O^65ydc`c1PQ z56cCpif-QvZ5kQQociW5C;_wYyItq++xN7)K={`&FD`ISuf%{y;Fk&SOH&w<56yc_ zLC{y$nOFTsnObTOg;p`p8cx|~8cB^SmG3sJ^&G561BgF{XT;Q)B%-LI4Dh3r)F)ukd> zRB)LfUUMG0cz4*82?992Z(Hc~^8Gziz`GjqdLzRNK`%~mH;Ry?9ZDr+_TmYN!)rEH zQRWuBzqYvF=G#LWO3&|6Fq1yN4!&5u7=a@Bq*TORE%8qKcI9T%{S!|(a?p)B&36c7N=mP`U@12(JIu;}w& zGn@%DXwgexo&Gn<8C*%zv#6C1r)f!z?L4qL&UQsmxOK!L)cALf8ug!QNt38Kh^pE@FO^Do?KC-#a2idWmGFJaj9hE=--*`wf+*5)x|7#-`X^xn1}Sdxr@F(?<^W*9YlB%A?i4v#P8|D1`=sRvl45j4O`&Ek{%YjWALyQpoO{E->ZIB*|M3bi!& z!EozO2Kw_z1fCTIZf31G5uM94{)BoA2EIwKZLpoCWaK&FDmoSoD~`kE5dm;))No;> z>TwB1_2*z#d|HM?Di{kn;vy1+ku3@R{0=e+MX|1-GAx?<2w_xg;389?6CxO<;6CMn z7nid5`(Z1mFI8*awPT#xD?~3lnO$$me=dI=mwMP5qx%wopFbM`3-aHKUQwh$1^=RR zd6L$>ABV8~zEkXBw}tuMZ6`d)%d4OsQUbI?Hi(eGhetpJPKI=K(S?u*o@{RY=a0Ym NyOJrwgo2@C*tjS0YkdF! diff --git a/files/pb071/bonuses/08.tar.gz b/files/pb071/bonuses/08.tar.gz index 7a9db277369dfeed900bcf5fa5ecf1cc13cd24c1..bb725d625325949247a3edb6f11dbeb96a9ff94f 100644 GIT binary patch delta 78512 zcmX7ucTm$^^Y(9VAF)wv6scmPgY*t6f(l4)p-S%{QbK_6y_Kd^m0lyg_f9AZgh&FR z1_)Jx5FmsWLJK56-+BKzb7ppCXXorSyK_Eswf|uF@q^(D51_($7de=MitU^H58a2+ z%^JJ1@n0Mww?g@3te+lw^l(q6CA&poVz3pK(AEXrA(3JS(shPO81x@^%M^seNlDJh zQj8WO(bE%4*dK^k-J|Re3>-I}23FUrGFOlnNBum+F$Mih zW9%bhp2XqeEJL{0vgWb@@8)dM+V){%b!m0i;nYf97i9EIT&^Cs)4v&X)XN8SKf=N5 zfV%0^x#hKqT_?i3Znoa8C&CpB%*n}y>T0ShXGeW&Z%6eXJFoWb7U8%B79?UILE``y z5IZ*b+9>7qj{UE173}%6`*)ei_PSrB##a0*Ui(>xU}k11yNv@fUFNN#IQ=_C>G{R6N$D`kCK6U{RLF%Q1& z*4dR?v)Rg2E7Exc(h6=TVK=pFCGlfPL8jZf!j_KoQ`o6VOzNR?Rf-VhfknDVWu?d> z9rhqVKY1H{dXjx;PhyE^U3Jf^j+W}Kcw9?H{G8jvBB*U<@I23NTT5uJO^RqO?0{UT z*Q17eQ-V-soYrA#HN7=)n5@S}Ov_Kx>Ds0q*csc$B9yxuwLE(0__5$W%< zyDF8`x@qQ9=A81=^i$xpfSI_}Q;H zbcG~;HAdMl3954BqBb<#g_^KE3zOz+-7b!bvb4AYsBxAI`l-MWrBzoTtz08+Ao;w- z{gu(d3dgarqR}rd`6_RoH?xZ+`ZFu_VQ|MvVOHnC(5!y44UoE~T@uVV)MqFK>3i5^ zfx-@@Upv^UeW1T}AkDA$^UY;yY_=md>T7F(*TtJk$SmZByye75I; zx2|0`&7xv|wufBL8*uerE+{&g9a(W49)GSd1MRd*HMY^a+=Nn~W3d_N_~iB1l^QFR zvv3whus~cafT&AO%D#iy_xOkWB@M>8{2If;vLm47Ww}RnG}g4cn@Q%+2wEMuqBr0Z z^vyGfmKNU4QQ~(!L+_=Wl5#A8HuIZISf>U5QeKeK;_K?_JT}=WeS}zKFZ_8=!T~AJ zx2rT|{&#T?6Zhz_PFhSM1Tsa1G^lo z!pHBEC{W)%?OIEDTz$A^izVva4SAhr-UrD!qMi`Y*A~%QP#8fV zhF2@)C$>yW`9f8Ml>`Pgzok~bPE>a9IjvxuOLK`ZRLqNrE2`vs#o2l+;-2o|9=3~d zcu4>%?C|mt+vgkqT76=##awPYl`~mjOmg_yb0($7(S6mEZ2!LJT0~nJYNZ|5S24)a z2aDZxo39Bmot9r7D_YyYvLwq|NRUqrjbJr#eDu8G#adK2MPmiIA!-AuNf(gx%k#-x zsze|A_t0y%>FTVIAc4Rz{8>*!=i%ZK0B~|0(noGq$UfoXn{zm{Kej(4Y$`0&q%Fb` zO(EZF5!R{>BedWi6o~Pg52ra*J=qqnttkE|yk4#Q(GD_>%9IDS@1)g2t>DQ@4l@~5 zM^@7Sqx=*QW>qy3nTkLZAMg0g9Vy$<31p!As_23y5B5wwcvoZ%2=sRJek`Wa7SYnl zK18RSsA~%>7v;X`mhMmZ-BZ2NN2Nz>*!|->L?4)qKBqTE?wN};K4Tc+O*UZopB4>) z$)yZ@02+MQei2rBzM!AjM?0(w zm7iytpq)N}_4GSN&Vg&~km|mR-R-Y|9tc(LJkz(fyB%_VO8Og!q}xKt_%-;BZP$ql z1%F-T(AAf`p~7um>6=InSLdZ4PcQJw^-w1X^rS@}pDnr_nKVf20p^&F?A&^MllEM9 z=)OLSopp3|Bnhie`u}kNe5E@SwiaDVbf-V!UGb;ViP-{3I(s60srE)bp(v*4jtt2Y6m^l{Uan5HZ3hT#W$q+QxOZX(j0;0Fd2m??emWgouoviaA? zHG44->x7B03Ya!seO~Wq!d)8cJD09JV&~s=It}4S>T8Fd?HksZt0#f?HBJiZ&TD#I zlVY%STqDb$V@6`UA<_%c-XXGw^e$B|79?=`g(74f<_9%pi6MmnyuE!br3UJ(Y3TjN zJ&H|jxT;TS2%U1hZz5LWA^j1sDYIDO%B2=i0S-Z3-z1PURcsq5S9SHxu(Y}!+jGZG zLVcJoXkcS(;M5hedvHEo2?!Ef)pXDO!EL#xx8pp^7r}OC-p#`lMB2*^+jA?6S+o6X znPjDME29oVhs#73dTDiLzqLp8E`3S=BGT{;n4xsxfBodxv&%7Z%QMQ6+98OT52+fSlk?K15 zTIY5tD?-Cu;*yB^y()+@4#^)t<{gSBmxi0<$>J#s)OVUi)5H2+y7c(OE@W$gE>R!cLlCMNn0P0TC>*4c}h#r{sMPC05(o-scO6$j-Z}vtd(E0U%c5ycQ=-mg8l|B0{_D@v8cJ6Duz9fM*iB0CCTs z^k6wP4`Zy<>~7bkkd(E5vaF#*RKyTgI^(#OsC68N?wNXEe~aPO`wl&EEhfDa-TKOA zGYNB!VseXZ%YRJM<*MqS@l;7KgXL#vqc{SGy=2rXmFmt;qe-glONs(Ge`|lg|31Ni zd4-ijwzMgdNl@!q(aOcGeFsZ%R9L}nIe1(C5vjR5FXXv&j^1)P@}>{3Pv5uf?cSF6 zS$Ox+unv}yhiBefd>9SGU>u|m)cL#aPhWRW0>QZ_wsaWs#Adsnln30Dn}K&O<)T|S z`fT}8^AOGK12Gp3I#0^Vy4M>t$?7#D{c@~BhdD-u@Y6LG5lyaJul~|rbS>7Dk zA%|$A%Z7M8u4sB7-@jr4+cpkL(HN(expY3q!X2f>sth7c5Bv8CW#-EyIB z2Ss^Q!e1Vr=WI;$6!HBh5MF-yQyp16NyWX$6P#mf%|~AW6jE9~sQnuW^=|))@U=U7 zV57$GGeWgLQ}D(!n8tJ*N6rdYiul!|i1iK&Q?Bz@68TuDZNbFvU3$vz7ZqAHI8^XI zW#_@iFXs7Ak5i{jEj#^gXKqSX@PhHSXeMWA{3E>|jR=g#4S^4DL>HXjkl#ftX125) zV*}wR{W{;-jTs*1=w&p%ty$bI2b>}!da&#;o9>`2I`?ws>-Jwk1^U&2AqaKF8Q1o^6rCl+3%YIuMn`9M+l!dx<+k{CdLf&ovAuJOAM_FuH={KJ+w zy83icz+=O}G-(dvT=Y|9q@R4&hEd}aJCAD*;=aFcEm%7(cT{r`z`>}7lKQZTk9OQp zLR_IHU(m$2to=VF)kh&OnD~;Wvsa?}8+!T|9`MQS><@)_#C(id=8(9r7a02`>3~#c zX6JA7eFM0FGU`&mx9nU=$_pA&`#R!3r7+T!i~nK`&gyg`w2&iZL+fv#nHO5&D)SW5 za*cj?@4`WHWbjLGwmdE5L9x4)DA-b9-rVoD0@kmXw;vrKFWM}J!e;J`v@CzAzk!= zyo|8lB9o7e)B@3SUTU9D1DD>+c6VVUn(`j3)=R-$tH{wgtwVCU$OIuwI=gZ4fwS{i z2{wf}(wT!eM>y|uq-v9dP z3==*=1>%U^yo0Ct_xSL{GYQ_{(=!pC%}vfv*9*5mq*pC;cgvQS$c7iM+PwO6{6W; z_gN2*BpFAXMdGr}?ezKzbp!~fEp9yg#33iYtYo`qicM)e1*#-qm223Y;EwjIKWeU4 zAT_xgqmeD|#l+sYkVPAO2z$FGkHOwZP`c#XlN)}i>69)Ec9pZCk`=ctqbkt#U@G7~m!DzyHwWF}LIm0|~;h(eF^4mXNl_T zfXdEV_G2h&KO+88DZV|h_e;Iquc&O9{9W}X18(eJ)+rQJJ*wbzRo>1{YAZB2b z4qt53Z>qwc+1j$as%^E=6}2;`W%v+7Jh%+99|Gyb_H3yu%@<^B-9c(QAy353!%(;v z84hRetpPX{mWPma>-1KGG{XPfL)(HUWjIhK-qW{dzb?fP*j3Y*WJw4qQKlMw%w&B$fZCiSjbLM)Yoy9_}I^I5)#A>p0Izf2Md$25KDJf zU$U_l^i}sZXR}qtug29-Y+xz@s{}5fHJTP}+?`GBbLZ_N$L&ZoCy0C3x_gxiP`w+i zbOnQq6$#=*5!l7%>yIe5c-is8f7x~742p#Ltp0tQ$T6P$o|T$ zD(VaZQ4=DYZ(YBmY@4Z-iXNvN$ie7dh{DSRJh+anR^&EEO0L!v$F>9)XeKE3KT@QYi=9}9! zDbh#s&{VvEb%(a0-w&3Gc6TdG$mFvm?VYqdAbb&5JK*bb^GydtYfGk*yTim3NIxjd zsM2wf9d<10Y3h=w-S%65_>Dy~7fw97I5CiVH7e|=-pK*=XCdf3VS-U!eIIUm@etDs3N=9SpizP;@O(o!vLWlp`{dwJpU)-fHb zO6swx6<2$2pE0ttofI<%kzO1aL5Qu+Emf_kM*8m#-w9fybNVhJc3vF?DMOEU9~|us z!q11Xz?>ay@34J|esZhl>KXgl*%3NDoJI!ugwv?RZs_R}{a8x<0u8rB4?U&!)Y?&# zximgrpeE;Ohygtt#2TWA8=-42b#iH5#Hu&h9J)6b1>pjTkDlI{i}UKS-q_vmp&lL_ z(W57tP8#U{48hdtq2zrMcz{l5J0ZZjx95`2)om}HEdb$T7k*33(3d(7s68X^L!IgL z3Sa#rdSBSlo^SXWz)JfI1^R~f=zpui|EJl0*7>Yb=r=4H*{l(9-L=oJJ@(r z)1Nna)S=Bm@1H-y*CH>(Xha2Hh^>hooxdQ!4}SXMGyl^sH+27fAA`{qaL>%-EeXB# zuV4&&?EQP!KgL$!naYB%EBLl%+-b&o8Vniofi{o*PI?T|q+5sojrvx~(dwyxwg2Fj87K&(UD3#Vg{Vtks0q3Hei&3NM3) zbJSF6U{uvzern3Jf$2N~h8( zds#{vmv(o~LNX5NtHWCKp76vNA-ZuXh8suI&y>_SvE!>v9xxZ4GrgQH-x?ae`irC& z3$cFIIB#lQ+huoFnjM-f!SaC>W*u==XA-Efq!^U&X(dg z8V~5xXwQa^bl-DMQySG%#4|$2t@C-kCD4uUf^jYqI zRIE>6cf)xV>FS6xdI+Q|pe+2%pv&?q6%Z zO@$DvwV~e?C)GemcVTEk-f0o)nFe&P5OESKe;|MQGE!9e z1>_NM!pbbeaG48tGM=RQkMVb-0F%(oixd~Is=76;op#oQBanZ;so>7)ooA%mb@HEa zWA1*my!w@G(WaVl)m~_EygPd9tq>~KfF(+QBr!h@$$c{uGXGHEoEUhdj-}D#Qh)ZP z(cO(-w$PLN=2GaC-4J)%Ya%$AryybS{48L25I2I_Q{wxU=u^P(9%j58*xK`@P{ z^c4(a_KXtvzk-#J{o75~J^cUJI}YZU2ziX2>6e=g5{of~tAIE&rzhIOw~Gf$0%o1N z^nO*j(}43t`pX46Oj7g2PNG)m@jtZc|0jZRkH*EWJOW)HX_Ky>>2=m)YwJR%cl`|k zoD-r~p;c3x&Dg8Kf5>!c*L8X=EPai>L~V|y^bi}*VX}dn@rES23F&X^N${n4g#TmR zx#EUI+sjkb7`-xXl^F{_&4NU%WZIsu8mc{HF%6v_JBcOURi}N&kqL<-K(32!GBd#Oafr_KnhDN;^@Ztx55jfz|w`p@Ix^!d25GNbu z_WaQQ3h2zFG2EfLvLRX@A+IuN7}pbXQO^Qbb`*bX98`WApR`aoQa>`U>Cc8y4&Lj$ zbeSox?JC@)*D53{bt+aNCiHnF&$CqLh=gwKpig(qBm5c)dqAK4A4wke3T0DP&ztkM zKEf-9&5E&~fGfa<^$HmV5r6hAEB6C)kL5o8&2((2=U!{`&z}Roi==iTPd10ONyqu8 zC=cIib)M2IcBIJd*{8?Du^u9M9km@D4NYd{M@$D(r@dBv8;)+hJMha~siq>E3nIeJ z?^5zT%FbecA0b|6yo;pW$l0FV^+z6auN-V_Ns_2w_Z~o9XTqSM;nj6^%d7dDo{=KH z2h+k`%`Vc)Z*(^>opMs*+0{1+?hv7pEu2EMbY?LtHazsZp?*4RI6NS*Sh3s)#DQUJ za6g-T+BW4Z8QA;U=pY*QytjI@`e?dWnIPs#m$o%#bTyA}36WNI9jTjG2-(D~7GoLu z2(IS6^#FDA96R&Y&^jDvkugmw5WMt)Sc?6CUnjBjt0w}YH=o<8>nr2ZFJnFlXzoX z#MY%)@J`$psOpe@hZlY60F&*0!Wn3Tv4xO1Y$vrrE+bquYN6Jg=8IH zO%VDr(^;Z4B2CIEO%m>U&8@AV!3X|00|2Z9E-szg;;oWkLhAAFFkfZWn=x1CKXWnd zVtwx_>olfyJo*-OZ3Dc3sBc(u#hOwxgsA-!MX0iID?23%9_w5O{_~bubF_N$$X+V& zVP1YQ{Yv_sthS7TatQ-2?lR_q*#=N$)OsRNNfCV=!;JMj-s)|SV*v#ltd8O?^GbnV z1df@eOmiFr?G56kFO}r78da!-neORN-_hI<5iW2!d*xpSSH1(Ux$`}OS#kGAK+f^c z;K(nbTHMX>P{Fkb);+%S1WadrL5CFZXU?)({Zd$bl~qn_=nO>pIqWj{5RbS{=sNy_ z@MjM!dEPcNd-Y-$mX`9;@jnMI1b(WDQMR#a#`30)g;;S&nhMs;EkBJps>7?dDlv9_ zio6(1gp}4`={7B9OF)ovQRzq=$OqI6m#cWq0#pr&*VLU2=jR{RIIFiN?E{C+&@S^@ z?2+B9UzfAtptP5vOUF1?%=Rlvv$3OU$}%@x8rbXCT(;}0JvwN37uf9oR(VPb>4+R5 z73Q?IIFeR8Dd)aC>fxA=5r;N)?`WM7hn1qX2LC(zeJO5@N6sD9Uv4imhCQiWfD8Kv zEj_41@{)R=NXRmuCyYvL03eWW3B&zK@qCo`bS2#>Axn5=aiHRJSH9u8H=yzu7g-KZ zk@cz2X~+uy&Uzi(h+D5Qx6f9;HoaJ1`Em+tR$FE+5BdR&0Hjep6h6>Mbqv9zCuvRJ!KM ziEZe=XR5(!siV&#`dYQcq8g$5?)S%tBj2Mp?8uNhDFYkciVs_*Kg}MQWiBg)dSXW{ z%w2S|R79wz@whPH$*qtN=eJjocvl842^LxR_3M$gZ!*p5H@yL2K;L|8Fsg`zu2{Q4 zO!)GC+4^F_&&iwD7BW}!EA$6bpbhdt5`Cc#)A=hI{B?T=Hkyq+qD`&*fmVp9YPV*F ztdS+}R?|weH`g37G|Qc$f#3TJy;lNSrPkq5e-?JWYiOAQX~f^MvW!y#dW(+ul)J>^ z7ppU*dfq#9t}fp9G_ct4zp4jkBa=eLE_!^5bY-zK)Y(W#Z~`Cj*7A6=9xrUQK5Bkl zcCqdfk}!32Vp%?~>9dpx9AX_9BIW!9hzH@$v!VLgPS(=00?@5w7>$Et|SmCY{P zP;8o5C3qTG`M~ge!oU;3%1x=!7Hevy&_4!k;=Qqt`oro5A0pVpg5n+l!K64OD6mRgA{iki;+ir-6PiNTia8{KT zn?X}Y4QqpnP5G-oDEQszn8t4BFHY)Tu^}!Fj9UQB$j=c2Z^2#AZ`)dSS4`J$M7CYM zAb}UjX~%I{rkkDWa%ddLR-Q{<>$T`od2dO%MYBP>Ja#BDzl^6KC7*TQD^dvmL|fHB zG_>F7m>D+_FpX`cOu|4; ziC%8Mnk6saMgH5^nA81Z@dig!{qie6COrVGfI@{-TA~XD(G@n5eGR7k9}Gahui9V^;06wAKpVjU6Suk~CfW-1NKDV)J(B zGydhvjb1YMsR7N`4Lc8jVkZ}f%38-(p9bX^Z3z|=ehx~xzxcZFuRh00Z<^6b`yYensqBx_H zYmmYzySRyq)%OQ_^(AAU&*vHJT&FXy9OeDIQCY3stu4cLo+0UIdtDN1JQ8Qgb`bor zTQpXwP|~X6ZiDsEA5v$QooT&ArNjY%UwPqBwh&#R%1_%wYpA(TQJ+7Oon(Zr=Iz#6 zQl~+(cf^&^GCb_uc=Z(OVt!k{DCXFi)!p@icoO$zB)U;*8b!AM6%BIWv$O*xe0_35 zDy&7fC6_WTTS9T;2TxY=lz*i^9=WFzs!=K%CR(eFs!*!@Z?;&Pr>9I}t`uN){d`Hz zW`BOxRa$~ibmDi#K-CAVhwHm z*Fe>|mLLYf{WoI@kss%9n?;s2D(^blf)@CQ-%~En7OST;VszQm7qLF84ldp;sCTth z)n#BLqp68MVs_a}@qOMW9^kcY(`_5)kOAE%Z3Sa|g{@_Ea3epAl&i0-33t8y-xYg1 zSd}NxJk3lf#F4F>on$<=)^C*N(Wp&Lcm6%s?74WazaWL4Au9|a%_^r{^PrU$I61q< z8W(|{7|FIsF~STmPZpFiW|_^T-edz}5R+QuOjh%@ZGIajr@ zq)=}1t3YFj415TSTXmGjfXYZxBmyfwqiCied2C7Z`j&A+h1j!q> zwC*(C50eaWT&qT6&m|>NWN8hvZ>f`%!>E#ZD>+?AnuszFZB!8ZcGRst=ut-|l;sIm?R$*U3T2W)-x zRn1VE^@9#UWuj{Q-Z7dEwncM_5|z8NiVhGs^)~Ya@BRLZsnA^$^^(?-`3%0Mb)WQ9 z?Xi!9^Z6V0&aCDEp9u%ihu@8O+=}N?m(QyWJ^`Ey6s;@X>$1_Y-K^&0mm8Fw>aF-1 zR!7G}L{o>~4ccsg^NX+ymi)_R{T1IWJ;6hLrbSmU121D*be@3%;0=|6(dr=63?}}L z2J0+mxRft4=N7z|M>YSTMP<>5vnWWsws>zJ!*UmbRxK_GWoHY9^(uQg}2a+B=6cIUb>lEqvQFYxQXs)rOT7)mf zMNu$RhfN>bS%^zSG*o6{r8Ga6Ggk`Fssi<$XoGNJu3@GfiS$9clsS`AN5m-a&*)A& zJ%KxZ#s{CH_dP`{8w;{cWxhGz9U|7_wd45x;3HOQsb9lYQ;_ykW+g-E>}{RwbEZ=Y zl`;l9Mw2mp zvCHk6JxUM5IAxR8>-!&~H!DS>0XWM2Qx)|Nv$Yl;RWr7W>KsDnQ}};f~d9TGr_{DbxLV(&jA12GoEUDLjiD0Y)n&hvk^9I#%^u3Q=C)w zDt5af>Njh|e-1R!?5`rshC#LiNh2$dxh_WCvbk>Ro0sIk;DIy_?2muB2;jV@!!^?j z93#KkJX?IS2I^)EQbu@!_5@ez3&T=RWLVKD*oGhx*uOgGqg59z{`{Fa_|w(U;1;l2 z+)2J8IYsbIK=RsLHQ+VX_UDqo3teTsxn@H%|5R4cORg`eY0H5CPG0a7EZl?Bp}_ZP{T4 z_Dfy52+{I5MvknCu-{opw1%}>%Si@z-Y1p6$!$74LTIpbf&#f6_+YUVh|p+hboZMK zI{KbtJVc#zpDn6-8jGJwU5(wkA0s;t5fZyE=u#sJV{3N2+fsn$OfLQu9bDL{yOZ%b z?y#7nsVTGqgiY7a620zw{aJZ>M3#qScBa&;(3EU&%s|)jc|z_cNB$6TUat=yGTv?BhyJGV0 zHG&J;uhmy`lRp?r+vCav!WG~G26rZ^7GuX|m`z?jT1cH<2XLdl#|COPzKSdvJrZ>N zuF_YfQWsNseuoLSDAz`!uF2?q3y6lh#ghlK!iq)}kMgE(gNA2PmuA+tFr|NZgGNoJ zQ%OEJu2`GWs{fp1ok2v_;lR+xZOWd2hKulR3D1>AHMf`C&bOb|H!dgw<{}+`cp?yo zLr$Q!IoBa=zz@E%h>I?98hrfJA;mTD@8T!LmvKltD_cxDYu2x$jT+WvoX7H7eJFXd zBV6Es<&L=o+o^h?i`ff-Xpf;gRqrv)9+zUq`Cd+H=KA4yD}rw)WUJY-SiUF}wZ9EDLpFs@;TYdR_*T9I z)poD1g6DBtf?y4v2}_dgV%@3urS}$TzAV5jZiu34OR!OWh$Yhh6z9E_OtR|pZ7|PBnLCJ778m{Feh7`q!Hvkf?LCI zvjJl(SL7Qg6N2uQEsjL3<&Hxb7>H1u*i3de4&n(HB*ubt*O&?MBDj85mhma(ty zd_eA*C=pI3r}N+axj^3eLNJvnDv(TP_ZF()1q|RHCES6DsOJBA27Cl>)_3mG` zLiA*;3ICP6laX+NmJH3jd*LKGJ=66QQj#pDP3Q&4sZEjQ7r zxI_ma#-%5db=?h|Fh9$Y{8{j#y?@M6%tXgr z8>d1xQ+2KZ$%j&7tDakqqGv6dz(rDBDuAgc>DIcOO^)vm#A3e`u}}yK?EW(aklS!B z(8LYCXO;_I*i)sFNF}L2uTf=x<1r5B+su@;r-dMi4u8;ueAr{x$^SWdBq-}W>6GOS z{IvCN!|SquIt3<$8MsojZ6C{wkBxE?M~_JWXtAyI2BI)U{#Qe^1WXa6I_30M`5It8 z)#%>Wq#hjZ{$NR^GxTWmCnmYWQMf{P$?yX&`9^AY$phVrq3U#qxPIfn?>g|>#iqnpc3It%k^!L_5>DfF<>LWy!XzC&R|Q7{ zJa3)*{e!>UlyPTHW6PtPw900UQ?f%E>b^)CxdaSPk5^)Zv|15pB#<0~f1Dk6By zDL*6j=g$!DCrcbEs-d^ktx0c2HW2OQXPJYOhVIO8zH~y|WInNNySVwuf8~L?nyzzk z>Dj*t}vm6oz;e;jl&_7r4s*o z;y+=SJJ0-#MczuW+e`oXs|Z>HlMjft#J@p2HMo8EwO^vw6)_u7z6;Q>cPG?l?0m7#oN(Q z^+jw;uMOwx64=v6l=}gf9Zt!3%ynCjvp6{ko`>oOPYcJaGQS9DhEflY6J-|0egRg) z=Bq^lkUqYk4Q-MEGSKNn-S!P6vU4*r;my3fJH-1%^W3&kG2z6j4@t!ST-A_dNmTSp zVPiscn`Nn%wE(m7)W*R7k?W{)W-)MI}-zRFmcjce#WW)=yvj!Ab@yb7EVO`~D67K5UYoKgJdF+&#(dtZDkhFV66asK)SII2x$e+2Tl%jwmmVw@a>TY7wR8 z!H%CERY*;<=fW^n(+{?>33@9sfgmnr&6shqHU-Pq-h){o#C-n+nDgokD+q-4LF)-W z_7NUFCOzOES7PHt=!nK*%ivwkYjg}&b)nm79QgN%j{~c~Ly0N4isEP-5jeA5Nr)=#XdpRgTLz!L@P_-(& zR8Q>BPW0&JdWxL6OmxT!h|IiPB&r@Sdo`z~5Xh{S<3Qn+Yz=2;?43J@xmZTGKG8iY zRj7YzCfN>TJT{b@l*}0>^6yn=J-DA1?U)^@m64m6%3{j_1d4h|1wwT_tvid{3}x& zSp4qbyrj>iKLnJX(TiD)ya!C`<8=yps{<%FPTX*HTGy0Qa!|RV^Z4g+nfD>-dEZn> zs;vIJ?1M#-PprCj^ONOSwOy~^-J&}{(z6{wHk{_F{ouHqT`A7=!0F|ss>&)~BBEfz zUS3&i`bUz->M#7)3zdg86*U+$eO+s|9=wyull^O=^yeiW0FFE(Z$*?Fz`CpoXLEeI zJ+l!zaU6Usm2~(-G`F0*3;CL)T2$PO^&5O;&6*zcsZ!KyMD~tqRaLe*X~PYW;B~e} zoR&9gZdq_kYKf+ZM2}l$wLza&x8`-OXb* zs|!CpLZgctgiWCf*nAfcXoCc%g2k#fIjW|T+b6~(W5z;G(lZ71fwCKBcwnrR_}}vu zboUhzAH7j#&6g1}YvvnO8;O99_H<{ncp9xg?>Pb77kCscC-=W%3q={cMREfLPpXUG z`j8TF_I}=6k587tlcZUZJURre-S2wUF42#uKEN&ak zMPpVptexury!&%0%GM^_S4?b(m|zdeUHHvSS(8P$5p+Rvyxt5(*AMd0(!w&KtWSox2mx^+bzz?4I1Yh0<6kyq64QIgr$@X)smK8 z!PVKM;YkPm%~zGxk_-%$6|3BPksmh2 zLtXZ6?|c9UG?ODt=NwaFIKRgD1XtBG2+L4=e|0`!^<51LmnjY+us5mAOQBHD5-?@I z`cl_kXopqN4 z$Z}nw(#)wfF9tL)Hdg7|dh{SE8O!jXV#Bo0EYG!YIZ<16;RA>4XqIwl501>t8B|%I zOo`vuw8hEe5HlkvuPh!kk`-65bDVfX!jHGWRnYfo=t?WH1Ur0k_6~W~aic=T#EVsA zwy_f68FP2%6JW(G$H^&~Nva=kp|Ly^+Lrb0*m4Yps(haC^DB7EqdGCfcl+$Xdm=8z z+&lM;rSy)=K<#@y$LW}=e0uw=oXHF7kZQotm8~%0dz$kVGV-SLp_>+|Q|)honS8=X z?vf;mJFR$@n7@y!l<{UCbg65I8}cM8z<{obmG*jB^*lD=^q(n}(J;A7K{I7NUUkIt z;ryl*la4hlxe2L(Cc{DtSJ;5;vZbX~f86Q}8(plf~OmQ&7*8(GdD9c1!CMplQ+ z0KzW`<`J^QUi?)oJj7&%*<&f}?xydOj3Cz}K3rFhYzX-TA%F45&$!L3s0b1N0GD|@ z|76R5d~m-$_uT`ZFU+-H2XYj}$&0-698kyeJyrCy&cwp1QGrad6 zjL#=VURBHBf34EO%-OB?;-5E)nu~<~1Hrk8T1~Oi)J5+49hgkYXnqik?#?COegG>+ zjnqf)XUI9A?>BOvGxn4m`p02q{s6X9pjFk_|5U7V8`<)nZ7L8xY7oTdkA7T|;8Ium z5JwB%ifDz&@X%h^hkSaVcSI?vy}Q0s2J=9WioIaJyX`&yw;#a0aO%VYX5uSMiZ840 zV5+y1@0b|%No~lpzX`jog^hGZZ5h2Di5ByePw~tdv|4%SvT6Ef&U{*fAOzUFOXD91 z%kln0ZbYc)(QFomReTARV&(%M2Iu=+M%0gg9D@Jjn_N%o$%F3xyo||~R#w}xR&*NM zI-j+{RSBqXG3d`Lh*XYK@sF8#9HaNO{HZ!CaXn6~=JEUc#KgIuNv^NuFU@|<&aKD@ z*tAYEQv1vvXF-$kQ2V{EQwj|BTvp?Q{%Mul2Qy|Dk;-E}@x{td?JFzcc#eWSg(}ar z%*;To%^}v3ps8uMmi-{nMeV_nv26>}HKhC`RcW?mxm70m&A;qNkH{+KBK`(s*vRv~ z#uo%me0M&_l-E_itk0h*s86z@?nXjz7E6_tjG$Lgh@rJnyNCK*F2K6w;MDa5nGtuN{k0#h8W>c0y#YQ0Vw4A(rQI z-^Cxp8Zt|!>bCVP7l2eId_#?1%f8AaPv3Otn+j2nfK@;B(JCg2%;O;W5Tj=m$TtdB z5r|_i(_aM?n!~ArS+3v3g{ri~?3X5|n`rYQaYH$D%2ZbWy~9=TL#y0W#O|e0$i)Wp z3VQ+FEE)H7OwVCS?Xq}YRgwnj5y(b$%SI?DPF{@1GR?Bx9@v@jo;JZ72SkZn-N`h; z1-44vJBclMd8^@m%MnWa{rkm+AQh$2F^an{b6ttfI^$caEr{(`RC!ts^espeqep(~ zT%2qAa^B;Eg%8zWD5G<#tuA0p?+;q{diUj1z}nqq>c${sT(!xcB$TDVheG2E-H9`zjb}xP zR$%8iI~7vOlBLeYuTrNIsMsc+GtN93#ylehAO+LLFmorM9sU+-MzFh@XrV*-KjL6QO=Zv_rBV^s-aK^baZ{NLt_xXIjzkgqM&ucu-^Lk#-eupL( z)K(M(2Ww9|_K2p>OJ9zBNQKN@d!UZ}2$;Mk4Yi2h->;rr_K!yDIb>#A=-BH-?XsKX zj4XHxm}S(#l%Iv6PTlQXiKma>^YZ&XUh)1$V5Q6H*P-+E&5^=A9zlc_WAtD8Yj@zX z+m3sPs)l=WWzMRPiiY|1liP%cL_ZrJO9l8*et%C$W=_|yr-l8-g9(C!W` z2}rYOk^Gh>Zzz^lC7sufl3gsah_Q`V8(j9~uT$vi1q?T+_X~5kj@!oHkMW4QIP%{A zT=2t&70uOpUf5++eC)>K4=}kDUjx7iYw~&ft4T#{!50nRo}s!!B~M|u&RqWXQL}5o z&1+?uYyE-kttoBEeaw@cjNaALJS zHQ1dY?5rezOP@44gln*+_Z(~n}#bGIa23)4!qTSSD)wdS1HbOPxd=tWAmnv z|CT{+rvhrh$IcH)Nwto-|B6 z+UZ&ldW9nP+=8_BMLQ53dw4B;QJFP(YAw9zK;_N+bfS$R!KLPC;#CjC*kdL#yGG~vzr`^X>N!p!GweM#1uMmE&eW^4^sq|dVvJIO18zl&d z52A)^bl;}M+S2@OL?dpS_6{qRE*ecQ{&kkkGC4SM_q*Q&>*0xgVLxM25&-Pv#Q7mV z+0q-R&qc8~rvH@}6%zN%otHm(avVv|OpFh=>KbY$-@~dtAKOpRop6?@e5+kUzv$(; znOD^vuiTLlw6|2s;JEhB@TSxpl@-T7Z#s+BoFw1*mGnz@Y>G8B&j{7%+Gm~;`dD@j z^8DSki3NeIN&|%}eKAqn%O-CDsCVUM;Eg)WaZn-Y0qM=Z4}7*>MJ1EFjkNoNtSkuUl2~c zug#6`LwM-*ek8Wg$`;K9z=l z${am+BhLH7&gfj;=$kn_4p@{I#8v$XV_XhTi>!S499&88IL_3SNcP$H#pJF)*p1xW zD#&DXw#!z*_WGZV@xi7u%c47$q4iQ0Cpb0EmUpZwbc9nPWfl&q0<&9R|q>MAHoCy&P{1Q`^{!tj8POOj zFZ1eUe{p5P%=5sL4gbv|o4dEkx{$eJ&wLc(RraXz*m*SJVNbidw{V&~dpS}4d+=QD z#L-o+mhA*LXb7#jsu*R(vPzCQ+Htc5VSp^~)xElUr6G=^SDE>=gZ|vjzA!UUKX%r- z$y7{1OeE#GDBr&uz|h@+>qm-{FU40-RV6R}#f%Tt&pnd(13OdHoZxb6!bwRUCn5B7 z+fvWSu3A=N*>ZnlGb;=4ZcLNa2;E%p+>GlPD=a7rYPe7>5yF_pv}`h6_x>zGSj45k zQE4M~HsINd&S~Fb%0r$~gsQ{8pGGBr|HjDUx_t2_EmWQ_24Eb3CPCytXLl}XD}Rc!ZB%7J+}p`k`2uxRc=F>*p<|WVmlX}1^m>`n~h7DOzInd z?E@5_>K4S)luB>O@Y{~(pVz;2Do|=I@EM~trX(pt;Kamoy49B`#A5Ny;!ftqbCEET z?DL_^ipX1pCE%%?OwWS1bw#XF(3&oCE!Fw$`M>?GLC1TvrpE2fNRzQfvcIhXHCSK1J`9QAC;Eh9T|GVBrR752+)X|GepX0((I{!6CuDIz-S2lx%r%|Ivs1k6 zj~>T{)Ng1XJ9x9E#*O#N5#!H&-X$uS-Pg*qFiy);(X`VY_D{hqbtJ3^eiJmQ_@aZd zlHeubXMDs1#w55|X4IdDXecId%Aqg8p5&AjaV@#EUh?W>Z&>e2(W&SCcGX`M3#J7I zY6OI0>&%WuV;Rhf!ZjDSzh|Pu3lIYY4Ke3&b61MtK{auApf!I@82FpkCUE= zZk}#*4S8a}3yKWS>Sp!YsUb|8J8x`Ca&j61WU7Shf$FdHz%v2}%jCcqx%JmK3QnlX zEZuvXI(lrrxUxwjOP|yehTS06-|aeRG*tBdq7?kvUE0W;_5|sUw>2wk^T(ap&XM<} z)GP4wr6KO+GP3**4}HgVJlfh~S{i{vg}b} zp2zf@EU-$hb`DM++FFdRxB0tLXq=`MGLd&hq-sn4s-i&&ni%Maz)@Z)Tm&ba(e$V2aI-QttY-o0Kbt_M>s zeU%`(RbiKn$3?C<_+QZa5qjMOZJJtTL>)V49`h6^z@6?^Nli^JyK%DbxIjS9VYt;I zRbEK!#@cxWc_a}*-&%jsnO0xY-ME7oUBtQXD?Y8a)>W=$%%C>MdR^~W000=!$| z%FghfC6~g-jWsr=hdc)21QuOihA&?DtG)JZRtkTzp~mCMk4Kk}VQy$8&Nbia8I^rZ z6RPUB02n4mA~rPRM6ps1r?U&lPfmWXPdDT_us4d*8Ez13aZ>qCzL(&idONlLpVZ8P zg_=d*@dvtw$=4)oao5hD&;R3le#m3G<>7QA&T&E1UuzT}JU7Cy?VtgrBl5dK=@jsb z)+P&+-vhCK9maBwp?IE z57gX0tmVx>DOPe($`Omt7kK~DwHWxKZYjG?VTQih#N*!#xAcHJEi>oIph>2>>&iR- z&sSE@`+j4Xa!_0{BB^#sfqG$k~8PcK(V9(6LA^N*sYm7@Dv_ww8C&15AwiI zX-Wm}K66*k`V9fW$K~O9Kw)9?R-M)2Zpjd)nGpJ8#SkE|*OV#5!=1Ck(9>(4qffmq zCP4H#(1^{{9Z=&y#x_tdH;S>x>uheLl-*WR7yb)S?$3q$nCyY_22}z^Q#oLuu-Yg;8yrxka-8}v%46*A!Yh>yKf$;w<0evjeq@n>#Cc3bpA)Eg<4fLmQ*qTLUVh#w6 znE1c3#3dKY^c`}IW*74K4*1E_l?IL?dBg9{8_GRxAT zvcUYr^8@|1(O72x5TevT^NMdK0FX1E{`&GlI0=S@4_i7c4})BgW~ zS5Hp5PJ=ML|KT;U=I7P0L&372s|>QZ!yf(NZ+2i_$~=0PTp8tIW#Cj57smfGiR&fj z;&mklfao(&8bPf8;t3o4)4jCpN4Nz6Q?dF#ge)FQ#|E>ZfutSOf0?F)1Cv~3Vaz?^ zL%{zMKJh_k*@)z5?lO-p6&5+D|Ii)8z`+7Ko07Wx-)TWn5_qE#gnIRE|99m?4j1Z5 z0u>gVsUYyki?^36v38L)wgGj4&lA?aD7$t+QCxG~4U|@yqU-ct54sT(kp}>-ciFQQ zJnm1^@nRll0i}s!>)RBv&kZl5x&8l)k_Bt#^r%Kpr7Z~iSHXM9!S&lH#Ud_BD`3=O z8KdK>{BfglRj(F1r{o`22^d&&bnT##H+R2Dxz8Y9cA)k>TKLu{wOy9^kud^zMdDmxXl zYw5}WZHmQ7Y^5#e`5v(MN>UBDx^SY0>ngFo97|SiW{;&CHHxF-v)gP3K8AuHS3bIz zVr*oHdr}15r(aopzhnjct<-6UDm)DSw+RiH_{D;n7tpyWJDXn=WuNZ~qNK9ZZA>YB zv6y(ytHQU1N2_*&C^YYIFWYR3YeIeSe4%tM*!zJ1rulQqH!);bN5M8^buhS;GPb@6 z)671NQAb1!fH5e8eh|9@bc2n+S_^UeIu)g|sNMQ+cPfwuYFY?M(7+*he$jQ_HN7(h zCgQy?k3CDz>?=W0fK%fjN-<#6_&*5O1p(V7Fs3roY;O=1EJ)^nSC}9Ow2WTomCm6+ zF=Y_yI&pjp;NgG>7A(jzT_sMI?|{7OH*pTSIOT}S>CzoG8^5#(?PKG41xjVNK%frE zDYpkDP~d7fH^5;(8Q;tX;g3M=s~jGE6n&mE%hP#x8;j&ncwla$OWQD29>XSbm;(w_ zK%C0PHy+_#Q_>h1kK_hS{GfpLDZJmo!=pg_1Q^k^{bw2D`yUa++JT-Q2AI`0N(Ob{ z>LtG+umT1ubOAJI?`a3_mM5C{LaAeT$w$!+D3iKPut;1*c1VLc@Qlbz>9bm~rCcLKVyX!+(y^i7S3YZWqp$t0Dj|aO&PK+St4^Var;wa2MVlriWr;gM-!&WK>BKqU%@J?~}HZX}=8`b5_ z&)dY9g;_<-8_`H4ghd#H_r_!rhO2k^#Cn3Gv{;h_s~ zdFFCKB5D}eQWh~|U?WkXZNG)igl`+0wEgDGgo!P)gPC-;e>BlQv;zfYo9= zx83^8#u|duu%(31Tx>3H2}v)eGJkcY`&NMbqJUEjL(~L{m{d;$CmJ-f#LfACmiR zteN;a%-129Vxzv|bN3F%G7L#CeMA_{MaZSfeznC~wq-*xN;xhqE@Ph?Mo$1-=nDqA7ED zOdhwIH;M6^xFZdagYbYXXH)!S3-N_4#9J$DxXNtWZ8#E+@mqfbSv!^kU}SYT-Tct7 zO%$bmrdxz;)40%0L3@$y1nC0~M6^3QIfaS~UMRz8pj*cE4Um>xA{z`ed}n@AB|#>)ap7@JLKp~c)B`hE|2^TkQ)g}D5b4tER-=W;|uZ%$U{LU z7Vj8B5>=hr)bp5{KoCAt)EO^P81mFxgMRj45^QTGLEOH^=9e#C&CjnmRkb!#YrD8} zU?O0_jZ>V=ozauR=`>)?9K%*@2ENpiIMQ0dpnwrBfR0UeprtKtsycvK@As+bz^A5M zsXAPto_2$Q3D3hu;~Wvh`U z`)|<%FoJ{!vS;R@q)$5Z4@um=U=J#Mr6Un`1MNTjK$^RuxPw&GH$ zkcjHAu@my)Gs*E(R!3`69dfw<2pTCm%p+hngx;BgrLgn;*86l@Lf0y45Czw>ChRwI z1I${0HIu5)mhBajfrwcd(9iElZ zp7+!s4v;L|8bS#SBboX?aFDh(K<&hk@KN zJS=cXPJRO3A)%69*(UDjH+QLGf5^-WyE1JLRv0DRj_?A{UdlzVXEo&;XH->@q;hD> zcCAcHC}Cu>KV&VoN+@`1G|WeN^|M*XYL{6NDWZSVKhC3n(l5sDsyNS23v_%mPe9_b z91MV0kMa59yKkj+2L6|KGtUO4-ocm8eMS_lU@)13QPs8PB|p7 z=iO2ygJ;_zj>vgr!8A|lGI3jOz{$hP90%`WQm zM(PVDpj{g;B(3?Rz`X8zX$y@?L9@kJcv!?#Rxt&=&F-Uxcfxd#JJYbxIdmPc=9vNy zm^~0f>!I$INUy(bW6kxdt7WTJ*-@Tm8 zF^NdmA(&w>j8{ouIGmF&+JdH7j`gQ$5zF8h*QL8n5nQ-6ng01o_6;tB3?f$s?^?%P zrLbYflL5GB&Cb1A5x9zhBX@^uXh6LzYKN4D7IDc8m=1G%Hh&QoF=hnCfZBG(+OtGh z_=t!clU_wWjoD(yg*pQ4i|`O|gZHxc6`Vo*7IEEUa^&D&7)LF?b+NafWF*< zLNaq}FyX5u0W{n-i-g2Uc2qngTM`%E;bY2}G+-rS=nOr6d&F`xIUqrOE0zdHwDrl` zZN^H(AOkrx$B-?eY3O(0mNLA9!-OXQ{R=#lO{@t->lEnVBrN4%t<@UWOXwAP086hD_0V zC=f==B-bAt#%yytbQ+(pmjk3Q&Tx><>i2=nVBlA)G6Lf|VglhTJL5~U{6{`ob3@3= zAf0tro(P2P%S?U6Ap)nz0co$n;m@GG|b}SsNr-YbZSh%Hek4 zSwH)v!C4b)kkMb4N&nrWr~P~>pnna`_>zm+>a~M&*OdXrj0C{wH^)`d>Q7k$>3!b4 z0uPkkI=lwLrz0lewG<(p;9pol7H2BXUAe4&r=`4kSsmZNjY)xUD`+jW8EsPrYXlL# zFk&{&F7l!L6h`@-pj9>jX8fji84iF zkjt|InH6^S!0?ojJlK{5EM{)C?4x8Hw;f89^zVo_s{QvkMpz+?r_2&{8(}K6WV0#1 zUOQV%GdZQoECiPb4AI#?(_swW&F8hsf;6uqc&a<4tg({TRfrN}?l6eZWmi!Sb#XvG zWE`TiN$P-V-{%YtYC@(qs?n~>>}{q=`QeRcKf654@SH)QM=-r{1!2$!MI*=`P{0B) z=u1GaL4vjqr3q6%E+(E4#Bqx;(`4E~STkXQq1dAXaL(LE%@zq6%+og$2n5z~5EtVU z{#S%s%NX&XR6Z$yH`6;Y8kCGRn&wOkES%yGo7gOa@|4j9BOS0?HeXhAUED+4e+Sx+ z^R)q%;xfRgc&gTu4s6UEbPak5<3k*5_~JJ)hO69CHJx_Koz%M(+!bKPnz9V5LHe%` zP&q4Ohy&`}zr@lO`JHmz2U9zppI7GfD0cotYJo4~RS%h69w!eDq^zx%a{BSB-F>R{ zb5wC_<7vY3Y^MB#3nfkk7TzUlHPE~S45X7HR)`c1bBiqS;fB10D8AX53K{rE-`CszA|XKR%N*&Eo^n)0ljsW@`W^$WOZyUw3s z_V=0_KJOF7oDDjZRl~aJ7I}Dp+g^uL@xrd8I7TdV<0Usu*&yh0 zVv2(XMYh}lNs0DoaUB7$Sw~%F)(K^dKOeF^Drt*hz;ZG_xnWHlU~NHEPKW+BflWW@ z_y-9I9dqVK?M!JS4mrGJ!PRFz6MdRTGR*5({h##l8f#Pj=~+JpE=E8Z^E1&C^Ow+7|wxbHp z7ebhGF;I|pzJ*zoSemt-!_kcjX}2LP`f?J6^#)bBLqUY1;jpr4l9Ke)R@qy^)3GdV z)+%vrD59$d-jn`5-IU28nnrL&pde)|f{-q18W%N_1fO2KQh-o-j`gjc{eW75&VQpt z1g4t&y`C%au<~9revNos7S9T?Z5`4 zf`A@ZQVAXx&#I)aoWP^!t2JvQMiXehL4-so(0v83G4Gb0`noE5Xsc$-XRG^QSY|NZ zfJ+^I>92XF$;Oaq9WmS8;c9@aI%oh;0fHU)bo8wrK@~ky3=i$^&#uR~6);2{Sff{_ z>p)H$#<77Z)Z^P+8MJuOV+Yl;kzcCWg`w8TPtzOh)^vW*^p#jT^h7*oDVKty<&?sL zH=XhHr6kaG6K4=Uw?M1Q+L%)+$8CFRt^sX%xfIO}ssOEF{d}=6va>`Ukl@x1M!i!W zd?kursT=db;B91lTh@9!bOJVcDA}0y!BA^$AlyDPXw{N{oeq5b&SBq4???E>q|fH* zM!Mf?>$k^}fbjKIGKQ7_w@2)(EG8!*fQbSYKxM0Pe96<|aCU}3T~TxRswld0H4n;N z3`^o+td)adw!H%&%@^zk68JMzXB%n#K!0*MtFvfuKMv0>Z?J`OKUTh%qyLDhrq05U7txzq^FEV&V0<}$RMS_D^;bXrOgKxjhDP?k|E7fE9ZKTa z8!HItv{MQ~i=1(|Q4pmO=Jy*o!_2N4;08RYk^4skcItZHeOIlFE z7o4!eh4iY3^fN4$e)%#gI&=mnwp)du+&B+17=?*>x1BB;5m@Y_2lK0oPl;H~kpMsj zU_T7TdXbyR7srh8n?w|yu?hp$sfipKgVyXiU|D+Jj`!?FLXqySs8S54cx9?Dp_z07 z;1H7GfcEZ~E;leV6GazkA`O-+w48w1;>+m3+GDYe22=}Ve z1D^L1R5b{#sSz-VD)>b=yhmmbhyNt{!p|`Ra+6m=0QGJv0FalD?0Sj^JB8Yx5Uo=% zbL-`OAyesk?-SHnqQxEcD>-=5(ILdDG~k03sRK!|{NOXNOdR^J4iqSWGit8yQky+N z1Za!a*R(xjTvMV?O)bxrT6HD-6cneh@;xZ0aLj5Y9KH9VG(aJ_I#vY?aX@cWSB-n#`&coW}Ae47k?Kq#;7LtQ`YMtH~LgGaQt<+z|zQ;4fd4 z17p$w45vuI4}PQNt(N}_Nau=|1!LW?;p8_}wIP2fEj+;kmDwiiHiY8u5?UJ1+K)(z zleXS|OPt&eOW`h+EW?;XCyQxN^0p|43wT&Ztf0gCam0|r_yE#7IA*O5suR{Tjnf2u zDAVks=|t8agQ5T&qcMvm*UZc;XZJMA!@_F2*5oD6x*XfMysrwG5TI=xi&aRnv96fG)E?$O(RNTUuTos@CfyJRk z0o2SOZhaVpJw8$_nu#_cc}!P^y!ovv zG_{3Sh_t{3f(q&Q4JNb%7s2A>ql2abVJ!=HCw-fNouGn|4oID#EE}Q{vKS}$&RiJ$ z7p}X+&z1d~Vo-updA9|}1Tv!2*;tZ446~Y9VB83fsj>?htGFr^+|!`?>OKtEH=cbl zct(P-pE4DcbZ;r#p0NobF&SnYE)@%j=vUPndCrk9@^|7?`gvLd%Q7BhR68r4AlLwq zexxAhBY{J?y>-pVbd#&`K03jR5j@do8$el8fyF& ze!GjFo$^{Jg1b*uM>AsSA~yOVV)}#uMT}_Nk6Bw7!vI^9On;vxKD2aoAdNfYX0#Zk z02|;#fLelpYeK}s`tM{jScu`F1@;!6zTzdw8U-Mstcz8!6CStwzcl?Z7?|3eG>C9t z=R=qs8L_9$^3{=kjMu-vICA3ZEzI10ft> z$R>N&HW~1KA{P{~W?mcOJSGLP5AXLvu`^O&6=Pe-@QFKSOAHpC8~%rih;f%o$j2PD zqhR9!rh%^n{m-VXPUV9)`P!ID0TP z;=PXG;R?R(_$_H9@B{icmFQgqU}s_rARvd&)3voflJw75LK`PxRnVgmkg;wptb&U4}ZrBitR`#CRgg9b%k zrpmDjjCs`^MM6_*A;bKF2N=t41+WNzk~`YJpb1i65Y{82YXaa35;1G5suAQoF?r-7 zL$eQ{jsbFCHnK68xvEkaS@;gm%1}kHo8$6%|7dWmLN0tMi5#q?fGX>i%LDbsv6$W)u2=k1AxD=5e zGA4w_%)dh8TgL99!r3`?wOI(VAdSuQj+qG7EQz{cLW{Lev#=V@tFkyqG+^hivqS1s z)u9zFI(Rs2Orv1iNoL9|{=7gy>ZxK{4?ypAHBCit1O5M0Zm+6~!y7y0t;j)3kRxw3fKe+Msvjoe=zDXK{YWwtalp9?5HyzZo+!X^W4iP9cV54Al#n{*lEAc z01#pWNZel#4Nq);ZkY6STm`Vt&58P4FJEWyDc(uAD`|5+h-rstV4xHR$ zK1g2y=95>umM))?TD_IN|C@e%cJ-6p-(bi5dPF{HWWDA^Pp(1KT|X)UiKelpGr=z9 zhZLMHe|dlO)6u}D-AYE0mVW-Jbv3Uu1bU& zCBfM(5ppM8-KFhtj_6#Nxh17je&}8{-9>75gui4q?95}Ud%9vN(5m{C2-*%RvwL~` z>hxzeT_oymo_g_I$_ri2aUh&=RW5u-ncjQjRLW{DI_((l>3QoPrF%~Ly|zjmd6Q+) zxUiz1E@(;T7rwrEvH!b%+f6=&WhM45x5E29=kpeVbxOaSzn@@oCGYAii0y2qzu03= zQuY&TTYL4;%E{dR&HjM27n?Ude`Ghz(h!H#1#Im1H!ONKRQG-?GNd^HCUqTG?T50Z z>MGhSh_~&DxXs2Q{_9tc$oq+pXkI29YTVk}qgdni)lcubJy;^Y??~t+KIfcQsYWo7 zy}^?iNutVK@>9tZYA<#xd!6iCITm`eZLfp*S*sn)-n;f`l__p|Q713qnD)5=4P%P~ z2Nrj?hMm4{&vDGH-*rnplmU1jIC|TxKT=i$grph zY*Cv`t8Kkuc>bk*UVq~LC_ZTOVe1FNHzRk5-){Gv6RUcld)jdTEjJ7l(4U&k6^H>im)ir}ze`qM9#Af+5qlAQF5L)&KaPwu3r=Z30*GM}V;G z?|Isr;>)?z7r#OuFwVc78^ij>2`a0}-}c|{SOPKihz;cY5f_w=?2rCnH1XEfo$B{kGrj6a2vg6+6_~SHs%c$ju+zR+CQRH^7za?ulVf0cU|ch zy;u25#3%`igjsQ~g9zZOX2}#?QUj z;ID%oF5NZthHxbcDu`aN2KF*vJy6&`xwZNgE4y{*q#rg#Q@U&Lo}|I<;&bc9Gie@H zJ;Gs?yLG?4bc|Z$_tLo4Bt=0ky%5kaq|iJx5$31#)XKW zp%;#iheJj=@&b4GUi~R4Xi<|nH7NFS3Tyl;@79uR-O@WlsY5q<|6Kma$hs}5OicTYMdn%Dgm=Y6aS9Ki~LS``L5yM~Lv@qnPMmScm(| z-^6;Iv~0ffEQ1$q3q`nc8Rwo?9@-BtOtzI|6&|9;>NcWF+JdHpFFY|G&`4>u?Y+Qv z+!_F@cXh@lPHN`j=i~I4^93pL@`=e%{Ta@$kIa*or#(y#T={hdID#>}{`JtO>f)2T zPCGggNYYoY*BiZ$Z(z!x>5Ny(pxh8^0o3TK0|Vh z%wI!3UKLJ!5Wb_K@ObB1UD3Adu7vm1o1pGp#E{?3ClVBW!cU^c*)&_ z*?BbqVx=J~ZgmF-I( zE&D#*^D5c(A-yf<)*lOXo#Mwyvh)eh`%Zwph+R^ip# z&6jU=GA7hOY3klRW_f&wfp=jL9u-u z=o{71vZoKUo1)IM;pJL{gEq%n+)%+vrk^gm_SFU}_9d7Xws*Y9o}#*~zu4#S=h+Gq zRU z-t9;P(a8d#Yb&7?z^?Pa&rYwI?f#8syIUR|*S3LUzv#i@q-Zm*Q@u6Z^4MK~@o<8* zdu7ATtjVoz&Cxx+JO26G%(wemQ3st;=D5J-?iQbUb}(Rjx$~BkQ$YBe(d4*~LTOd? zG(U~Jzaz8q8RENBPkSWYDWSYearYBj???KFYx~$BIgb~(WEgq)S?8mvx9+r**}$le z+?o^n6O4RH|IH`P_E}&}UrW}vcGt$dw*0$0ji}p8Hp~0Wjg9{ByR3NEwO1DfS-!N0 z2XDM)Dg2*-xfF@=z3pVZufd+qVSmNma+6k^pWma%Tyl>)dFtcpmR+dRrPb7DCzBvB zQov8Em1LdRnSJ%WyJwWv3=}_m2aFn=`DSn10n6*Rp9PcIfa1j~B?p#sOp{2ZZNPNS_mSPA3dZuDmbY#)=jp}gI42r@ zYuo`gK-e=6;xyk3f2F{m`PctU9y`(0b}LQ!7QOuz|H)`?oBqWoE6V9A1c};f|F&E% z`^4;C;~s(oYG0M1yWuTgRS<7p3%NgQ)=Bj;zI|F*1}QCK=UIGX<7c$mV6)dS^~#Ue zYm&KZb**_M6Rce545ev4Wk!RM!i!Ovp&_ANfdl0%(>mQm(Od+bWH zNyXC!{t{05`l&B|J`>W{2`&SJ{XfczQ;U|qi{1f50xJqy6 zf!|5CZMV#T1N7MWGei1o2H!QW?0v>~ur#px$sg}iEPdgDfq&D4bCat2-94gDyN5gC z^|D9pch`O_enu}O=(t`_7h2`cZu)U$oGs>krrtjsJ^xMaj>H|tflpu6##@Kud7Z$$ zMjwwVXFQ17TWH|pr_g;l;AWD_t!oK4f9lhaOt~@Zix=sXbNMLyzC>v+9_yQ2i}MuGo{Cy#7EU(4h~ewh}xO z@6{3Xlcr^}8sS49U(vgn_q6Vu&*xV~dcU|g%$6)mgu4)D)q~0~FW=|Y{yq6fPBh^L zk^eGHf0>#17|0R8Km2>@wd}oQXJG}Sf=?@ogJLdjmeI0hGftI|21mE8FZ(RD!o;Jc zkWqtM5yF|=Zj1e}97{DmjRQA|>Li+t+mkv{??=hp{H-sQ%V&DI?oQJ_-Ie3f+%C=E zGd(Mz4KEk?p+B;IvtKz$QiN}P456R5&5H)OD1R4B~Ch! zV+0!{zXP5gdu&Hf8QW@I<11IKipT}jo&#W*+5lB?`&^G(wtk)1pH1^g&-Q??1HB#O zaP=(f{CN4$f9y$AS;!qkpgM(n?#1%H1n#JPlGo>VrkPRAw)+FvMTg5hjVg>YIhWVG zi)pO)m^iLsGJL$+6T0+Sdg|=!X5_1%hg=dOw1NC@P>U7?&hkarxhsiT&6M$Et7krm zbE3t#y&;O)6^y0*A{7hnJ-*d`dvhtb;(c$Awxjwm{1KVI9zSfe6pNr;d8mIbrJQq5 z>bTUaq1cCah?#q?zRj9Fo`8C%%XR+S-2+D|Cq6GKFZqO3{os*|E9kf`73zLVE%M%y z)Nx0^ZGBnV?!kfc(S0NC)E>p}8i)3#3Ay9HOldq5&93rxLT%h1|2WpyK!_ni6klf) zC@+`2=DPfP8^3tS>-9Om@!8_iufuKnMIJ)d8s}^Djv7y_8zmk^r4plj8?N19qc8Bc;|g|es=z+jUIzl50vzB&_9xySF!wmBe5r3(x%(bY zB+C28XL|6t+Qi^znx#?)E)_7_M+zL4>~i%{Lzp3SV<;k0cz1wPSKW)D_$TMLmUnSv zU!hf*!~04AC;5K;S$xUuxlAb6H#&ZvKm6nHp(m$ITm6O%4qYJn@I8L`fw+1Pb-`oZ z4)g;Koa^s$9Szs4oxY*uTnUtY=@4iu`jTa+UH#KNYVdgx;3Qn;^N@A}ca}y2yT!=EP z=^qo`tMk(JC%mxgyhj2Gy2{0D{zwp0!1x0~Z?p@)23Tsyw@T^2-_%GPS`O)vebgKb zc@_~`btYyty`r)8)T4G>75<;!6$L2zaiNm^*KSxpWy1`oUE@bbGhLfKfzdky4cQFx-tZfomc*?3Y zbg^8L<~0_zCgZQ3oPS?ZE^JEF{FAb0)ZcfP-A4xEZ1BrpBuJzI{_6X8&x#Lrsa;hy z;=t~_qC~E?cK4hs}e`z`zx~|2lWp5D-H)%Dn@*{Ji({?Vdu=nYL~BX z_vw~t_2z42Ru=flIa!>OBkdX$SlS~==8pcljsT4U)mT;ZzHyUKzT#^VR(m&$jTg1{ z-~0e9Y+HRvd37Vh^;FI8hR1dZ2UyUrAug+z)MuB4tUFB$wJ}LXdS`4Dj=|*UV?P}7 z9K5E!3z9(ig2~UkJmFb|8`T!CZ~8weg0rD5-$QdDM+_FjKi+Ps=z5`6xRm~F%ICtv zPQ}o=(?&G?TMfEO9>+4dLly6D%H97S@1Xv96gXmYzt#5%_5j1`fcc^KNfx#@C9J;- zOHX@kdp+AJF6#$8V>EXhr`E+qBxKA$R z!*M|8<1w~orx>#@KzngNvH}b{Bys=7WXVKyj_jQmZZ%^k$wht#kK3Pqt7xEM8foi$ z?IF3bAVSM^VAJ8ewwl0dtXI;r{2`UgkG~$v>}1l$3J(-Ka#->#C+%`m{?_nS$=%E1 z9$qeeTG1jBbGt1i=F=ZXuM_Ws$1Lxd+&+515V+%cDX=yYzV}+w{j3pwNfj>cUwYB2 zhp!{|9nrn!sLN95=wwY; z?djJwZI{LvZ@%f@VtoLI)@>ahwhF|8l{K@vUrqvSmP5FHXj+~{okpju?#y&|vqLWU z@N4%1N?&d~W-@x(a3CAyI*Yi-!O6JcIK49MZ{#exH(qz2&fh{6rg!C^%(Q?%O4(nuoltjRWk6h_tEqpZ z5&Ql;OMLr|ZKBOuP#5l2gRLR0VwXj}gzU$Kea)9n8(MeX+*i@O0X4!mG}lFUiGMue zfclz0c12dASLM^>k;k|1$5bFD8Q*fvign@u#b^SsfB)6i?UiS($Ay!moE!Ph^wyQn z?rKZhJ#lL%9%`pG7URyZ^~(GAkgIj}@a{`lvIC7 zVL6gVvtgy1T=n?=xRMx_BqOGnrI2< zq1B9+%iNa_P+cfQvIcSXzyDn#nrvQd5B;_p8e6HEMjxI;C%feHLX?rJtw5P}q@NK1 zjgM0ZssqDI`%kN3M(V2X-dya{zI2YkqSw)}7X^Q4IO>Bw{(+syZt4+|s-@odAYbvo z)3PVhRE~g+Pm`2_KaFdn3JR2$Qf2SiQL#uTCnA&+Nrfj+XPSI5Jy=G+diNE+hMl0$ zGq3$fcAl*#hV_DNzZsD^%rKTa%zexJ>hQ|cTMr-N1 zcK?6!oHN=8N7bMG%s8CeR2URvEu)>j{r1C_oEjVpX{JIkD_XzCIMCDgm=9vbjnix& zDOXGxum{{dNATBBeFJKo$PK{WqdLAw5>lF+{_sp?f7^KYfcKRCcx4?U>0P=UIkcpt zP*EI_7?dF#&NHavd0s4ssA2WhdpqS3asGcx#X6*q4DYj>P-`N2ws00 zWYKt22~&2}$1q^R9{*BV2VhcR6N!9ULwIRPafNy<9Fe`Sb)&|JL@H$NB zaHjOH2W_IA3{q{D{_Vf8hkr#3H2K2LZ+s4Bbn7IZ2+~1Bc8?$Bd8Zt$A|)np1a#mC z3yfnW%2@Isbp7?jGJwlQ@kmTQ78ZX{2v~uKLr1Dk6K1*Mm@5kheRN^m!@0tO_UN-! z7KAJ6=8t#JmY6N<9?yCCFWzrw1(l&{#9uXPsYKh#WjtYptZ^P_;ib(g2FhLm#K|5k*+=`sn2#had zacMs8S|mL#+iCIH&3N*AVn~htWqXKmGMc@EBQrh#DO$4#6jgc`B=*0k1mT1hLf(WP zSyYkaf?f2q+WBIg-Z@X;7teq4`mL`?{SZ{ zdfRKUCeFPTIwO!PkNo2J>n9M=n?R=vmql9lrA+k?|9Y=YH6cTFk^FxjOgl|h);o+d zelYk{=$?GyBnfr0tXF$!GOyqv0cAgVW=_UydaU9t?`jRD$Gb1V$9bJ@s1^N#N-G_w zu;YrNFo~SHc3fub)gJEeSizUpo!5V2Wd)eet=5*q9?YP#gz}q5WV|k$yOztzP;~&dL6bVtG#l(T z0HYn&uaV9ey@?*B_hKgKJhs1kj{@bfl1{#u=LXQ|(|bgQ*SFW(MNpbiApiH|hiATd zf94vUV-~TlPtqJ_f0iFAbe+7%1MVcRqwmrgfg15#Bp^IsJz0Nr<9*SqiMELFtC4EM z&kB*ewJ$qr`KW{lF`!x$UcmhDMG%!>+M7%;S&&~kW!hf{sfI^97#R>zGv}g(SgB>8H6;(g_ z`5nGkZjzfccHDoSCXP2-{hMY6lO7JV{-j3#7{zOQq=pNXeap@FY#UjIn-m?7cCuy; z5FT{q34ViGQ%Vnhn|^%7_h?nEhB;ppGaJWcU?igvs91ZCxb%aPn@%?eHNN`n+FTyY zK3PsUG=UCSg}0NxvxdX*<$7pG{*lv|#ZMRkVm8IYSFL}UOwO%G&Ql`5p6n563WNyp^$T-Xuq6uezK$yE*}DWDQ@GlI@r3MBmUQIOu^EQy3GfL+J^i@Y2eyN;Yj zUKY2}#MpfFHgY!KOVV4KEo_(cIaHGpGCuRko9_YQadfin2{a+Nd?@(F0Y-*RE;+SN zVp)GqZ+DR$=&Jk;2YN+#_43FaUxu7SCm2&#$;oI?Vn)dWqjZ!1uc3sRKK6KTw&DG| z%43g0A;%0femMU3x6;9WIGONBDS+}f+d$R7xjx$-Or{b&e=uXj`(U0x%JVU-$!k;H zOso5+IhcD`Tr!Kq2LO*;_$_j^qyhZcF% zB{Tgbi^oc|jPdCf0lO3BUnPIG2h|HZLRTPJVvRU+lS(7mWWpVKjgO?I_x@>(JzntN zKZhF6+NS?c+3eNRm2XGwzXXjK@IL=r+H2s6x`5%`J?Kl@DoE2s*GPX(-d!{^WZ@ubY>gCDh2q9oF2wo$NGKt&9qBqnRC>;IjJA#6 zNq&Z#9*Hu%4xTi{v6 z6AwlY3g2W|#fpVG8v21+! zzRUZN5OMWlP|I66P-3<~l_xl=w-}gdau`U4(t)edWY~Y7a@2Po2t8bltVtf}X4yS{ zo&j%_+xQ@8H9w7QE%c18?oqsttl@X1S1RBG)W8R5>D-cIroqEd>JnnnagpfjaGnUJ zz)Mw9&$%f%Dd`__jj&A?X3%;`>uH?ka-*FC?ke@l6ZHSWRzw+#`wrIaAKF;u(zk^r z%vF(aSz&)d460=RB{;v9QYa$W*XhjRY=29;oz~pq3?!>BiORXL&u(9_bvoS`*h9vj z79u=`fq;u%ccuGZ31FRX+|36mCYvM^pQ9zSNK+{Jyg8UHy2UEflwg65@?$7RP$iPz z;hqJS<)t)U@`Ja@$&q=50hlsg_{lm@8Vnc~Bu9S@qcX1>oqs!(F%8S2m?H9aYG$wf zQB5nOWEo8}M!k6Mc+UVk=Z?F1;v+WkWlR;w9pXT9xpkKR-d{{FsV>2Q8dLR@8!=ED z;ld#JVz2yzyu#M%S-bN3CztuAn#*j3QQ2y!2}w01Irp0?x)Kv2AK=!3m?_!m2$)fX zL6v{5iLp|@Bm<5pRkb5uNV!BRh#3u}E#uqwRoC4(*wyy`j@fRJx&Pt7aOM~va0DzZ5vqJZl%4nk>zFtwJdn}wS z9Y3OidR;r2y)c+9D3NL{uu*VU@=1BTkotear>l(wlM7AjEW-6K>grqdOLUe=w|_dM z6UluLxq=(K3@zty#BY7dgeVJ@>me(NKoK(nfsy9~uHeQewK4qWrd#uMbiJWiaF&Fx z6OUJssJpqK@92Izw@H&G)Xrghyn^gUk^NhavBhJ5x@Hd$ToHsm8c*!L05ri9C80pl--#YgN$Y6o zyRer~(D_aZd2qkHd8?N)lU=%7g>j=3XOQ>y$e|c6wFex0GAg#PyAl#E8*G1%JfOvX z@Qs!Mf4*1CEfAzPk5%p^tF7dBrfSXR)0beAkB`Fv7ygJxf0#goEgZ+Nw~8E3#HLSI z_wP|H(bg1_byObNA!%Uk+c=k}0ml=)UalHhD!vxyM@nc5U0wv+_Q zq~E)KhjYRg;UIEr02^pDUF3gK_+PaE+_^6@WP&C9{g0Niz&Gr@IRJrV5(JJpw{1S@ z&8|`OBm`x1xX#%V;0@ZCEAp}V9)Os=0iK8D)$<+7eTxO$ucyj7)k5v7+^vtC+)rb-7J4tC8Jj^)Ua}> z{LJa=j1gfSVmQ#>4nhngtl$6r`9}F7E_M~FxqZ|uABhH)6l)|CR|!D`Z>v>N9lKgj zp{3-~A(LH~TlkHfKh#XE9lCOReP;YXDr3>ea~O+9_YsfVv_;1QS6Jf>_a1UwVXaX^ z1=ND%&A?cLos5E{1Y>{XlPeCS0)&NNw$VA8n9tnQNGkAjgX4AB{j~}*A#^eTHG82k zTTGP(UF_+-Q$T%I-^~zYFbvpn_Q$u8V&OV9hM!9~{<&N}m8b7S2Mb+V_4OE$Ird4K z!ephc*6%w&+NCZKGcUR?xqCQ55V}Te1Hw7<%HrsEPw-@K={bL%RR}E_&M=rjigNRd zmkzUq0@6(3;9LH6ZzMh+1Bf0O9x5s<0`;NR6@^(Ia($}TUG^ zUP07#uIwS^ojzX=hCUk+vnqaO`|M%GG0CKS3?4nBsD8EK9x{*z&*<0<>nz4%l2k3L zrx_oXLDXub+o697L8wXtW5Q@~w;wH>dbNJ^xr9v8@1Qt2T+|P$ukX_oMps9YXZCow z4-M7nuDc1BL-9XoUVa53?9Uh+Dx1MKJQ1ods*i~|pQ}PGQdz`an?G4*8|?q?=ZIEM zteQ>%F~ALk8F7BYe1m;zt;`xWLl2rh`R5vH*;gU{F5rNyy?~?Y=K6yg}#@y{Fq=wcz`Ho>8Vui7vo|dv z^iPt=wL=lO8jcb3-}_u6jG$Zf;&8=7od8Xk%i(``E9G6A$l_ib$3e^imYsu$Bl}u8 z0=@fw0Sy0loQL6|q+z*&*!lIlQN4{CopI2;p47tU?^q{sgifmCUVj$Ep@zao&HKMU z?Tc3e=IIz!I(S^y=ftQVMUPZR80oEN_%2)(?nHBXZQGyL`RUHq`UgJ7E;9Zuz7sUUHzOh3M0qm|a5JtS z>_NG9kqo8p)wGE_YSsYM8-1}i70kNAR7tZojQkW%aut~!Zt>npexyye^vP}$&xr4Y zDjaIXK$Ek54SWqN-5u?X=YH(060Iuz4l;it zjTlqhJwJ~2@ojgEf5rcMe+j-2k}6QciF|u^imZ~j#<2ofv+p z!qK7nEckjk^kunYjn;iB0>PIq&}|%!IXW9Teojc!{9JKTa0j3;D(DrGP0N2m-lfB` zp)MzszQO-Wu1vHy;`+LRZ-HBB^@2VvLk7d zGw%6vd+4{GB#K`;GA;{#Pyx7TIW;~ex#r5B#c#Rgvc_K=>TL%}2c-hoPqF>5v4q@( z)6vTU-a+Sq&ntE0b;4$|D*BOHW_wqNiuFLUsuEjQ~Lb|peAbj>ZmSD znbrcEM&dctq<_u+IaGh+{}M}#Y*3Gt<9JE5X1V*QxPI~Eh0P=^g72MmeIiavcuW?4wmqtmBVa2O0f8p0sHP}Jxpb9mdPKs2LO66g0F{V~PI$JYznckt zNqJju6qJ9$iTdCDUtj$WKjI}nNv52A zgri(oQ}L^+bLPbc;uAnAZHM0S8?TdIxH&S@GZF{-AOlGhh6(YQrNC_(sMQ>ZqD4Q$ z|Lm9+uYUws+urX_d{BQC-K(okJr;E7LRIq>=tc#9wG(e<3wtE!q7e{{)xP;1+T329 zG*NRZ7xI6+pDLA~HQTs58TGDuT?Vwe;5Az|V3E+}2FYCme#21R@2z(aZ3fH} z#ciqW0}`KkTL7gR03|c&--7N-Qt<>#F}J6Kd_R8{rQkfzHc-i1Fx|Ha18F4vGHnOn z%#QS#^=lVMly9GM>Q}R4k#av?)vVJ%1Y1W&Kh}nW`8GqY(P`>=|7xnjlrG^UQZ7eP03$zrK2;zh^2q4#7J`Jt{?o9_S^J4%d1Rtd>~D7ey9NHSaQLgc zo85WorfR3j$`jL<902Y@5Aw57@>x$|jz5wppw98(;P_GsAr*q+e(y;i?>exffI(yd z)~8dUnZsCP-1z8qe1Wq0Y`rb&cu&B}C)0mcy-{whJP|F<7ax@#>ckP*5~MUaM(9fp zD1HHA4SsD;UKal zN@+6cZ$fpgz<4K0AEg^Pq?65VU;nLu9Q7-QWvnWE6a~U7u7LjVSk*ZcOhTm~^#8ev zg_L>4Cq0%!5^#bizkb)47*uE%(XMjqZ5WLW6dejE7jC{!L#79qx^e&%z`TDDnK_v7 z;+k^$HYw|?ek(A>`+~;xcBio9H%?_e$0Pz>3io|nLoqajOeuOP|7mveD{~ED^lPI)Z@W#{UZ}VmKuKuw9G&WFD*p; z{y%Mj7TAb3O)8eBfK)glJ)7$QpLYZRL1|3~iNWAhVcN-$9hXJ~sUeLC5ZBicLK;AI z`U&8EOD

h6AC7CY)Nx;eyBk~tgcxRep7A+D?WofN^Q3TkZ85+!57 zh}HFb%M-AjwmiMR#CNv>`C4ZBq-`1tBEQEUS zd-PUbE1zlAXjq`wYW6I(7`NXFCBi5a?6-!Jc5y0|>x)7~u>n zATyc4o{v%+49t4Rc(X`$2WtfX3=7$)NsE==7#$$_w*1(Y`SIq%Z z#(z=9-fsp#rs#1ZB)<<2fLhEgVyKUQ@NM#r(<#XkPy}ZR5{*6J^Bm{7KZJ6mBe4)% zNf#XO#Wp>cSIobkLdfsGbmC<5mq&W60rUr}#e=HJ{+sn{(p9AFzkW^lHCf^VK!bh^ z$;XEzHyNo4kV;r}H4Zqhr!d)RDWd}J)@Nfkl9?}e^Nd`jPUtW`R-iVT_;qareYaQ83jC#Eo%;&@0UMF zamx^3U@gM-C|{GE?tBV8Wh%RjvQ9R?`XF&H(LHz_%#Fkr*hd}W6ItVMSK7>g@s?6Ko%8)y2gF@ zkPZY}YW;*9Z6B+{t#{y>4Ul8qG}`X4sSmnDI&fRHg~@}wx5c(NiSyNp_!)^Sn@|H2 z+$?*aioNBI)q!NuWX5zj>VVXkEK?`OO2DKjH(mquVA2do=%)09L$N|hWX%O<|7o?8 zhQZRA{68=Vw>&k1!hkF&#ax5}s27}@QTlLo!5)nPnMcqv{t!d-ES$p+GMnOr$mfXi%sbZ{bp#_Id zjobJLI~OB!sZGz*Gd7$fAXRGoQLk zFe?bjrVp@iu{v9|Hod^p+Vqy2Wm;ZVd+&Fz=KQ_+7+U>}KRh~eF8qbtL2ts_3M0>f zxG~Azp<6B>7aK`&=}9MrC8}ooqj!a6m#x#VG)xyOA6SR}B70(c1JfAsfpH;Jk;eY^ zAk#kRc)N86fuz;@Kha{{g|PMk`3n^G_NBLyLoONSCPT44uPd`ZCUCB%}Aq8HPd4;9h4S$v#HqE zfIcCw&M((>Q87dp>IRix?F7+P*-T*qI#V=uv?}_{IRbsK@Bus$FhBqTtLIf>oi>tM z`tQ~Mqcd*~Ak(76syg!^(OxG*@bas zn=3a3#*dtDFfgbEWujn+PepxvGc;dXK8Xbcg9xr7IVmc=R>Ow2Yr z!chK$SqUIvBxxnqHAs{r2NGlzNLbKlG?Iu|)m0$XAfQ6LWQ7V7wy07^uAPQkxN|w@ z?(YqU%Smzb&3F8R*=!i2)HBq2MeYD|T_IoOQTw%3CVv!IUgxz0IS`N3ZA90zr?+@~ zW=4b%L4pVd9Ist2#j}_)Sgxk0^cu2U59q=y9=H<&gEAx`B_XQci*P*v9i^+J+x@{m`Iza~6W&Wpl zSx-j7;>!U3j~8vN=eygg`F0=nm)p|E-0V@#dQ)&|GyO+c8s929W&jMhb0H0%Nhkn= zYxQY!N~C;4f%4xowMvc*TR7~oxoP1bQn+;mx4DmUs%laN4$f>ObV} zgtfVY>(~Q=8*Z>B_UsF3`$$_#nvXX zW>WE@4}=Hc=SXOrYckwq-I5-9dO0s?uo(SFq*>27AG<@v5wJsqRxKT1YfXX=Q^oS8 zo^8|yhA`#T{TKJolhqJn7>+1C0eWI@2FtIMv4afv@dr;Vqw%%mFJ%Y(a*pB2e>lc! z_ZzPSq1h%9{m%U=GrkycDaB}5JRBu!4eaErwXlw;_~mb-qK!O;t?jqR#%@9&C?xYl zdIi3;OJKi~wXi3DV zDNwsleFC+fM8vD3*2(VOo3&4FbYpz*Z^pZ0AttqW`NFTrF;4v~N+3+Grg2vwDO;uF z^A>1eZkLPsjVRj4GPMClJ-I8JeS3;1jc32a)^d7sXh?!i)zgF1^iur2hVVQ(viEcR zcG&n`+Xtnt(ZSRa(_Zmb799o>?2WyF&(x@1AhCecIr+cuQu(XmnLJ#M~&kTRyk_!cL{z)i&#<)kg&At1_R1SQmkJR`xsB556021Fa0ux zmF#%Z<4k)wOj0w?Eu+B`l-&<^v!R!7v+8=fvnG3+XK2lCB(L zN&%2Tga8wGp=th$1~+q9WulxJ6G07@j~xAblfRhS;FISM!ZPzg`ryC(Go--t>ax&y zB-n_)Z)q&Qm)3|(!ScRVz-^dmtn^1EjA_9{KulMo&-YQ_g+c}3c_wF2@NC-gj_*fX zF| z#%v-7$9qnF{BzXoax+wK(n54>2jZO>axJbbpo?+|&$`fo(E(lk4zT%ftZ?=6B9SwtNinz57C2$j8DJK^%Z%-)0i1furym~|BORhl!LWi>* z&cu0)fJ}cnTMUIyLP6qEXTyTqmbGfy7;&okUy78TyNJe~los997ktA}%JIDwBIfc5 zAe(BUW0%r5zI4ShG3hLEHq270twytc({T^B?H(zT>B+x|JE57_!gOO6_SAw(bf1lh zjQbX7&HmU6E)SWr|i^F!R@8HHap&}Gb zvQ&Jl*~i__s;q304;G$t=AAuf^zD~M>++JIP@hs{JIq0W0vlL#00{H*ZPtW`mFVvb z%CFemHU-k21^taSVofTxrX(@ZebN0?c*g*sn2FCWGTd5DfMX-dac866%!fpBVFy|xMBB5`^v{Yxy<@mBgv{I{doNkwZ|x0 z^Fj`4zvF~loW8nk`9RHg*m}I4q=M-{fVm2X(-*Jr(J8R_r`aaaj01piG!Cxlr zzq7qe@APPa!xQYb7y_S5+ynaKTP%C5&4eAZeOTvn|Hq$fgDpQAJhrtax>KBnKQn;T zGrxFG*8}=xR}^Z(yDH5ge*TR~)#NTM<8LBXn7;FXb+(vF#-;DQlv{><}!=O^Ol zp#@162+-mrY1lf`-F@(H?}Cs377W##6_}e`dRWWmRJ33?oMWl7zMGbfE!V_+QMvDC zEl|uIwt-tO3~bQvZ!HKVWj-m{UJhCq{+$PV?8lAfd|e2ormB}|skkmAi0=)o@p9_f zqx8gZ`Cqjl3K&YM-w=SLWH@{C-hs@LKHMW~^X+Zy;2@DR`qs_%X-8JZ!^Nhiu%=9`LP~#aJ6m&Hx&y*!`7_2ha(Dz-OM*yUsK-wa=-b& z(^OFU7FWg&Le!iQXe73wrgQYq%1-4v+)9gNo&lk8N+&c?Lm~(Jr}jJ0fJ%`Rt~V*g zG1`gk`BHS4krij+tu7uh3n+|Q_ zL^!_XRK^3!maQ^q7r#6#t@h&%<)t_yA z*H2@uQ5|D%DOIS^qTCXE{c@enIJP{SyGwrL&KUiYT?Z?C&to`USLNF&^_E2?bdu0C z6^HZr$swdIrj4|7+Q?RepL;|Y#qK@I{7Ri#DdVhFf4jX;`X@SX@vC=77yYXN1iI}l ziR9^XW5{EiWb%}J3=++Jg76j?G~X)Yewp=;9=+7-K}V<{0hRGBFG@mFYS4?qC;a_GF6T#P8rxZlFhQY` zmfFjASD84Xl}VR_3N={VfG&fAq$5I3JmqvU8-NbSYm>Y8NLe5EsLd7AV#};hig>t; zkqs?%%&i@6x=Qs@VXLcoT54-!?An5Y!VqoYWve7vB$5d*o9RHakjc$?nU-9|>cH|z z+A%@6tV&2T2l?s(&+2xI4k=GaUh}kMV{aggSD9C|hH_J9Or;^+Q7K8XS>CH%OB~Fp zQR6W*|AdB{Cv8kAx@6b4?NSw#j!#|s#TIr{ho$+=GYlU61+g-`KHG$hktw7u7~+Xt z0|o%b-ixDbr{0wzamo`oQ;?PWC7sGLT%rM?YL))De}}w|_y%jkgs~#rW98L_A%}wU zugAAR0vuWQi2ZvN(aZwJ2Tq+pZ)cgK&djrU|DPkM?N;8@mQ8dULNwd_(?bj6XP~%k zPL($;9rK7YrLt$fUEg?N=2??79xR`NePfxD@yg@&=IpA14M&~~OM(%KEv}lhi1DXP z%Opjx`|D#n8V|bJ*IXK*FK>&=!1Cv@NUm6y?CE}`n|{Myw!e71xSNgCkWV^6*Kb;1 zB#>bVGHiTcW0;o-PaU+{yOCZ}rdVyuJfm8EOp7A^LRDuheyAi=Fd0Qdw2E$eSDQT% zfHRFJYGeSV9IunG)5eE50>)~zGzlA>#TwZ~RcI6Zr}uHgjZEwH8$6>U6nl0$L=@eE zAb!fxdTpGjEdh2neaG-G;PK^6wC#OJZ-R#G@V>=a8m?hqAK|LAfoTAN4U8Iy?O4Aj zr(`%%WFqA8C$WCYJbNN(BoL&4?x$3M9LX)59+4|Xy>{(A# zu`KmN+Nn6BqAhI)R~p=TqeSW4j`h&kA}2Y;R`L`sZivMhIB|!BOWcxPEzZH$z*364 zvibZEQ|40G;iLIt&cfcn?lMG#*%|G7`WX7o3DLEQ=eGIP`SvDT8CZ=n<8CwB!_C0` zZus`PjlT|dw=Ndt&7Lxeu6X+qi<4@bc7ZH%gMqAuiZLIXB{VBFacqK*zf zD?Dtd4+LxONs>vA_x!RUT<%&`%P<-FEXeMK70Ek3d}CB0`V`Z7d;VPP4y6XufoBuL z)x$*~&FRvm1s2uTZlaGkh@dC;^Ed`r%^%g-rhSLyS?--b=~M%MEw#`FB37c(%3#-F zQtw%0_hVM6WpTG!i&lZ_sG)Q-`JY+}Zgu`zs3DsGAV7dze4fTiPA9rtE0SoT63WtLi16*xzfns_{3EPYR(*4|jXEvfGpXNTf zj*KdrZ0kqe`5sXq=l;x5J2ik<^4Rm<*s~l`&Fv%+XQs}gk4~laHAoBtA%o!gAHt35 z|3YrJ{XSX>CyTyOjkqy)_Y+fmbRBQxBHT~zd3jKR& zLQ4(QJo3n)gRDjqHM+_;>A5HT)Q1h;hNN!UChAbT)3`$+*zRhz&5^bdK;_L@WYK-U zXTJHp0;O7q9x%6tJ8#zh4C+lGZ%g$kM|D*Kd2C9)D(wi^;deS2Riej&Bw<+FfWH#P zueKJ8iNSrWF|w)4WZ7uB-FKob;36t$4;RT=yQ~V;5gq-h&p4J$tNn`Dr}l8Rs$0LOF|p-7idBj+`}DVbmU+?Ad>&6bzU zf6>iax2kLT3%r*vgXM+Y-(j*monqB_bt7&gZpH%m9z&6q0dB8b;YpD4*BF-!!;NJ) zfJLLT)7V*-$5iF!2tY`fax|DMPh*u&oQ=ZkDG@GkZ2*7RBJaC9r8Sr!^ zh$h;Jr~Se(M(%+n>F`EL6r$W#;X$6=19ef!V$F(}2m(U;dH;?J;des^gfEh24R?mt zBBpex^QBEk^mX+0{7hlsP(@8=JD>I{_IO^lXjc)Wns(BJEm^HuS=!mnJ!2$9bEZQ` z5t#0u3@ArxN{5u9AYABT1L5}8asDTtXL-h6o(@UrO(z~US2pxB=0CqWJqk%j@hw-Q zvHw@wKYS(_RFIF9FVnk(x^3NvyF#S@O50oB>Jf~0KNDh?c%wz6U$PqXM*PK!Abq!+ zd($`ZU+~tPuj&L7w`SnMyqlO@6#?&zGCP@#r>6|#3v!rVY9y(;(5n(J7qSI*70Md2;=NDPB zUiWOM?P@o0KTHSWYHA91mJo{uUdVVeLSrG-&?u8*(p)*bq$%dYFW$?%$=O;lwD2@xEPes$?l@(x#B*WPnQC_NMWizZKVvZED=QXUN7 z$9PJ3U@PAz4r@xuPmwe~BDb#5BeW-g)038US+}Fo<%9^W2pfr_g&E(3xI=Re#A-=; zXSAEnNE=?t6`)dP*p1oK9Z<6=@@x5#w@rN}tdzTrHAw@BTRXH^*y%*fuK_&pm5 zhliLZ?|TA=s+x}q_uctJB!GrEF;A<9Cd%Q@0Q-J<&>nw?b`^tmv*Z`Th8bFk@OQ}j z{}#VgJX30zW@MHEk{?tlb?4yc_I^_Nq)~vn?^tyfuvuorTQ)UbW7QHuzt#-sp`STQ z_mR|?V|lrE?nMQ|=tJESCqxIVo1Gz)0jDToUrn- zoY(DYteEdaOQm6B$U0wk$`Tx=>?sIAf4UX|h~sen5tG+zqEu=C&^IB3%rG6zEv4@i znNO391v{!@+Jz!%DQ`{b$QQ)tCnC7~k*nmkq%|+N5APn?KC;XKedL0%u8CzZtQXw7 z(CK>7dKg3LxS5F*l0$7`v(_0^WU+_rGsXgC-gi913Hh)?;+GECkq)x0z=q}>2h%!5 z&tcIhMT|Bbv3fp5{JYxTDDh#`B9hxviUgD_(m8t7ICSI6|m%c_=zaouT?0 zTr#$Y?+uhwcJ%l2ZxriR0&}8Os7Q%?qCU-yTcx-@)BUzuSF8+p1JFSHNUI02Dz=%L z@tlwxO>@%4p;sXJDy&cxWhCaz%uc4vSilontIpMxI)@ZBEy*EZrfy;He*5Rvsi$EG z!xitx?IANgG0+ZuA|K(WigM}3u6HdBdX&|V1`^d|*l~*9R#9~;B+bdt*sHsaF#fV zDponext#qJEyQ)R>#?5LdveB0D~z1$x3?p^^r?fskR##4DIVl9SIZ^aetA@+ zvQ4TaTTm|j$y~uzd*;2-GAG^gCTWTLe@OYB&(-E*!9X>bnNBLOpP%A=K*Z*=fHXP$ z7OxS(Y|@S{?RAD;+kHjuKy)qyVdJmu+Jj`rr2vfji)sE;b*+7s8if&qt>wc;%g3|l zGXhU5qB!mCqew=@pe8M~%ky+Kx%aJ+LMK&ifUU90G?Vl7BxmdT3f=%H--J=fwi`A@ znX4)qP*v7GuN&%gvQc1h-?KeCDUhCEvAm{jMOSNkdTO61TIykaEB{5GJ#S0BJNYHhrkprpRik$P$ApLEGr z=W9?>*7q}jutECuO(!AA<^KyJtZ5?PHxGZ>v>r7+W;#|Pta8CO&`~*w@@+o25+Jd1$ijG{ z$j+YHV6He{hf=lawMV?dJF)BQhWg%3I{}y=3}S=}hK8TPe-N+j*&@PLI)l6gPb0JW zyAFsSvski5JK*}A?I=cNR@a^at-$L*!qIHSmyPoLP=9C33SM2f5Wm@IZn)e&?#SFy zIPG7ELBr>0sykc4&^#YN@+9UWWt=pGxDr3{WghSTtvEp15 zDSen84`p0sO^gqetYjLaP%iyLk+Ia!bsn%bb0c^9pWna6$t~OSe1(^QLaXFnYF|3> z%BI6>Vm7T=jZQ^#7A7rvE>63RKDz=ihuh&!J#;jc1!wshr>yM>i}Ra8I34b4y;3IGCgSGR;AUuLWDuQ~D{VTy;=ctkW+~@TDm&$# z%&k6yEJh1B@PiCN1`NP=j`Q?`4?uaTXxfpV?`nKrfkGb1YKV#P5X}Ly%;kW zPo&tn%bDDp*Zs4XsFj@QY+3tZDh&0}mbJStTdCb~Z5o$Of&+5FHs-OP>|7H;cbd?v zwE!~w0Cg~fX!ZJ3qR5t4h6M!L#~fl*9TeJ8c<)*;h&b+fd>5jK{umx={l8{hqb0O& zxcrw%Hqw5S%cpX%(gDRg9ZKj=!1B@#0<6hG`41?Yd~XKK=4n|TVyOY9C#dnUw2z@=3W0L56g!3z|dPho>S9xkS6 zJmyQZ_0ha_5o(aIJ?rk;bl}XD06F37rikAuq~J@fIts1_49Gaya_nafWafk#=H`&B zr>hThA+BYEv0Q9`{89u4UyGjJHS_GE@E;%!O>Q;T^u+{lQN7*aZGBYTT4QvJq0tUH zTLLv>*YNy$EKPuv(sVy%Nj%NK#>Jfgxc-AoS#1_9bTsHQ2d@qOsEZ~Y533%e`^Rvo z+%dcF)LLkpBae1*k*Nv&|1YQ!V+xf*mlk2taW!52J!b{m_|S#FsX<9kCaGFnP!<$> zR%UTGFTtnE`4>b)t3x1EqVS9TEJW@9gW=$ z9_fF{e~tc6pr`Y<&eepM(v$$zndCF3se^^TPs5}x4bnB88w9cBqD(V1wOphLt-zkU z5rhEbT7V!fQ})UF2EfvZl12CSP!6|i_r`!dylIi~?Vad0QQ-T=r zN%!IG8Fc@LhYfnYVg?`r1Z)%P2KU4{B{@%&iN{MpbJfOk8FpDi0nbP;RQ(vXSF10{ zK6pZ&y&gxwK`uip-0x_o`uX@%M>(P7#peEL&T3No;_qNV`QaB3l*EUx%k`1gyoCyp zQgAliY5QxY=Iqj1l@XJ%fIsq;vaeG1M$@x&_%s9TMdxCrVNSHcXi@bxWRp94Ubfm? zWr}Qp^^Li3)nczX_>qnIk0?-6Tcx4?)yFn8JKZd#KTJ|frhKPSTjq~rMbvlJdwd$5 zO9u*^Qj=j-Jk_nVQulba+I>Y@5FHH)hQk4%V$q?uF}4>sA`BklK35^X#pdpu<9F8M z6y^}l*Sk8JgLB<+eA0GvR|SA^IfQzo_z=u1JydM0Re1z_y4t`(8wfuJ%sVd!j=0pM z*_W9kzoxpnm!9lAEZSeGy1`ds1mUNn<(a#`Y&}UWqh0Jnb{6PUAbeV0Rmg<8Cx{+E zK`&=q<#X@H!WTSTYWYF6LBHUJt{z*zCWp4O9yd;x$SdGRW`_Oc$nsJu3#*~^inhe# ze?YkEZzu{lO*HE|YWe&b@=9%FKMeFq8*f$-0{IWMiu!2=cBK72Wa)By z{ck-dV>}-y=aqP!R3dAA#vNN}?h+A4`KkfioUR>qx+MgQp| zndI&Ss&Sv5YsR5dd3;^psVF%kkPAbW*t7_rX7u_R(3Ko-mwMkjAVgxh_m}0StHt#B5ZL0xr(4FhDX03OdSxf`f@eB4D z+<26sG}i8F?#O4$n;L?sp)`oZ>!2dH%)4b`Cx{ulQ&3=Zr{og*0d3kCubF9)ZqDnf zEk_}Myf8tUhB)Zx;QCTqMD?X0pQ!y?8b*SU50}6|p|dVyuTaiysPx*2Ts* z@Q*K=)qA|PQ8=<8$RG%Id&t``J`?#oG7Tp-Mk8Izag5^+QFvhKav)$tN^SMdTA!?r z#_5X--9lcOeEV<63EMTa1Zcd4&yqE!f)|Cgfl(Ww+1GlzHUlYV>$l}SkcJl>j6RC) z^i@&1LvZKxwZ_(EyW85ANR#?ERsT1}C>0(x93*rH;2kP<~n1ILXUCXIAr$X2?fS|7;glW|unzS*65&jX=pAgc!s?UKHYKxiM7go%NF z6CoRQm}In}8DRgTER4yXt=X;s522|pPvxQz2>m8;_s9Lo%W$6BP+(c~&*maj=e_Oc z-+G9yc^Ps00`8V~`vZx4#nQ8bob(lh&3f)PJmM=Rvrkr4wVW7eDU(6e74?fs)noLZ z0U4C?H)Rq~t26uzz;zFOxm!JNPfhRZgbT`0`KAAUJa--9sOMBCC9Hb3Z9Yg8%M!@m z(MmH$IhH0dB+0^g=eEk@oPyzo`SJV8ne<(fTxczn0M?lynuwpGhz^#yrFP_bl44}) zNW9f57e+kK`=bt8N#m5N+$#Ql3Wr%BoUJsv=zlP7YQV&RZB&I_bC)b%eWVHI=4W<# z%AXUSG%~{I-^blwv+IiB@ML==%beodaBq$|rqJAxLPKy2Sw1rhR3ES&%)k~`S~!pi zv9$KMZ44ZSNeg`$K6H8ofPo#tRCH0wi`v9zJU)^HEs-zwl4B&S3P%wR_mH9d>rRYH zCLo_3_K+H(GEv!nfX2zr&!}JMO!&B9<=I7+yZGjxiv93p**XS4&OV`^==RQR5=LXC z1rp)BC4x0H;GeOvxeh_CuYi=R>ruBW=1$wC{>T>joLluwYfS+VV zCL5d}b5@9s@C)xa-9%~Mx;B;V{g5+9Y2x~MU!Hl(3Dk=`DHjJWvy3N)ijT*`=`#%U zgedP)DyjXMM`=d&Zf4}$0`OfSrK_ce5P=Krvi&W6n=*Vs<2Ofnc@+KG^IO%~3%EZ4IabYjung*1|1akG|1QjHp^H{yQ$ z+!r2ZU=FkXW9yx`?gH3_`bw#xyvX)JLhV`#N*cvGt3~fN1xYbqCVx<@TJ}9!Z&P5z zcx2^;lFVk4&xm~*G`UxK*ce#hQ)t33wm`;r3mEEf&z?eNU|o_roQCmue$*&|N?^md zQF8Y)qH%SVgn1Gc1dm$!@QgW7Q1;Q!{&Uy(Ca!ZgWNXV@SmM2U8?=)V8)`daMsPzlK zeX2D=Pqh!qUteyfpun8Cyc|Y%g|_T_3X<^HAOCr~Fr0VFaJ9&av_9PKxf>*MU% zWa{f<`oxb6(6@lwGO0_{LzMqD4I}|B>9J~LW~fe8&MTI;bgJAb5L)a0KCIuKk4C?h z&6hrs;}bbHjK=tj;BV2Coqplcw@ZNx9yXJIPQ23D^6@AZFFkVvBh|P;mW`v8{=WZ& zV4yuMk*#@~zNVqm77aVa6UtFV$sYeTV^!qKkF$6db;VUfY`nJ6`bbbtm+ujgJ$BPJ z_~wXMz7n^Eqcu`FED4Z3;rE|GF;A-v+AoNs;fL(^ol7?6C?)xJzRRuDXfZg9L`%1x zt||GP%$6bDj!mq*>`H&3UhF|%#fIBDh}TOcFda=Q?Ssk>16o3C z5Ena5E0J`k_lMp){R&_7IhjXBUZmeN+}VaYKjS~T5JdtE0~~M-0fgPZZmD%S&@WeZ zXlh``j(N9Rn?(-=9Cb6tom2*=7-1R}(2z!ei&Dq{B#6uRPl%&I_h0)M%8aN04DPW6 z8$(u*9|^(;bRhT&U@udSuU|LLx66^`MT*g-xK!4uf(6myJn;l$xe#y+fTn1j7g9}_ zARbs3BKW~|s`RK{de!4-7t%vq600xm0KHs<02qvgPoALw=USw%=W0Cq&pE62bd91l z0F?T|T0P-}f_IGQI#dK?6H#J(qe{#Yt7jxEphBS{V1kHXp$SIn3g1r;X1w)4BMtg; zPxP12U2CWzCK(8rS_Y#3~_|otY4|2XIXh!iv;1XIlrJE%vLifXChW zRMro!xauSA`Q#BfL)OFp!O>8w>cMpvqwsJSG6eQPZ`=Kfwe0=GI=y1q|4|m^;oko-832$0krEPRaSTF$ zswYe!L};gr*e%llL7M9`NtCfnf>kVHpcbASuIcnSZmdSYe;s72{V3NlI~9nAt(XHip%fdypGX`Wi;JK1^Z%yINoJep@L;!3Z z7Zc9$5rhbpNklF|;1lXO>qR*<0a66sBrMh>DEh^4OfsR+fi9r-JF{Z$6^Jr$UYmoq zl{Vz@>VLs$EPGtf4nm60OP1-I|j?M$rrytR2t^gQM9s zT_`YnH`0m1x8Qc~#T+&WOIMeIH)TS>43x@~U(JE(96|P9h5)!tv*7+LsBp zV;SF<8vX<=5XM%_l%NTn53e?hQ!MW57NVy`uv~5a^gW)R!r1E=vcDeXL3K&PRp+(HFvkK0%MT%?I>9)pp;TB8;M0e!D( zgM##WncG|Na^i7UD-nAx7_LJ1(mLeJt)!k3*c@MYRx=~`26HGTpD`*_@5>7U?s2!zH1&{~{uJ#xM7ori zkv=~Uf5BqH-6iS^bIo*`g2j%il{d7^01=hw?)*ElY8Y1wFW3+G_6|cZe4o3(Q+CEa zJugFu;?;b{NrFkw~b-$QEwc1;Ef4Gs)yYvsU zVCzkMjJ!Krrgytxn_n$VcnG^(G|Lgvyq#!{9uEIvVKKj^TY-PJpHz_tusuZ2d5#}lZnX89q7Vd zo+6>nY*OzUXp`bCsKyK0o-8AEQHM>IB&nBiG`l;C$cVT?z36)x&i7m&2H5iv}mAM!6g`h5)umMEL zIW3i1ErRAj--1c!WBcbI1|x_Y=Bk0zDARxi+~$JtFSC7lPdg2wO$B}n`=}WBph9iX zL@j1LxM$>mG^TgV;LRunkiK6-?`mShf9;@^VRu4M}E-R^%jcA$R%-XKo174=>MG!WzSXrzbss3;AuLDZIS}; zU7Zu|-fvivUZYwxr!%*;?d{%8IwSM$RMG3DZsqrx*DwGSO>!hYs3DV%StI}tG?OFC zsT;Ycbi$olw*>~%#mBR+XW&t`|6cVg5%m-o2pQKsSBpoXaL}@1>^O{lyr&DWH_Qq` zk9_sl2~`GW;vGc{$#VPpFeY2gi^B2Rg(dn}xmpG1dADtjnT;L<#?{Gx+ zWknd*G_rZ4NhUA5M%P^SZah4CKjzTO^M3j|4-NT?n9bAOKD{M?SQJ-T_HIjyO%mc>CaFlJ3@NF%@Es*;R@d@|)?Q=pit?+#mC z9qpgbT!iM(yS4Ei9FP(BL5xCb=r-&bYZ#;oB50Q%!z-5TW4ZmPDC-`70a@qCXs-_X z5W->o?p~L93T`vVN7Znmfd~l8;?g%tO1R>tB_8^7GRYZGL!qhMpPAXHmq?l)f2W7W z3g_`KeeP5%#u8qOfb__1b7Pz3Sx3EoEJ%fYj$b|Z*5OU30Ox1rIeOBEaH!-~6X2_@ zMpT+*>X-{Gy{lawKyO?50#`wAWKW%bsXQx@l#2a=d^Z2PouiE3U~#J}QPdiP5{#^m z!j+9i0MR4xg)@4)6sr%ytEtQ3EPxZw!dl+vyH+49+p7L`gI_z|zP5)be{U95LcQ^j z`Fq4&Mc=*bmv>!C1LtwfOk=nvno>N#Fb{-tL7Db*VSk_S%~|&Brj-27%7A24Yo>Q# zlV9M*p$?8-Ej66-6wg&K7_x~~t=;=?8~!1KH}c?YSs?tPyi8R7)Ei?ZW0Vxci!@=b z#@&w*k35i%m}~IC_}vWm%{|p%$uO4ycm~Io;|JmAelN8@9bt>KmBx!0^Qzk6x`F^` zZJ6lMo<)dsb-wplIIR)i8XdA{SjNq25uwldBI_Qzf9X}H!Vxo=zg`+ z>Hxl&X;-BO%G#l%nPe}v1p_bYidu;Y8+Vfw_3}JMsVY)U?r+j^tvC3j{QAraeRFym zR^5Mni~HBz*RxY;7Tc|+g&=UcZ(G$l0Ku6Vf~aWqw;!9@YZ|OQ!_oIK>p~fvP%8VY zJSQ(xaooz>Xbw$eYv_U4^Yc>IUj!2*8`XJUw*=n0DQZzxCy+#f6MV9lq`mt>{`k8e zL?M0R!_XrA1_ubP=ltUzp~nQWj%q<%ZjxZ5WX`eR~l*t_K-e1xMON zIc%-B5v@yn1|l`={iNq;p{sJ7=7Ub|5cD_+2Yy{+844>EUU);Nwr({*zq2U=Q}IR} z5`uZ7?&LIzI5Rqd#I*LwGoUNV*T0|nF?Ei|jZ^*S86=*3vMnQ0eA?OwO3)XF% z@+$B@dN6g7x;L1wAk>KTz)RThj8++qZrl{u5d^bT^=8mOnZYn~^VlBgk7b-C*tVM% zF#eAv`S*uMzg?W^bfzNN7N*>efaX)Pi}jQYj3`vOfX}9nCA~+$jR6M1)Y0G?rqVwQ z7=s~*5xmLjpiBRNGj$`HVhvJL9`;&+VHTMzAcj0*7mM*E$8FsN@vIyGr2imYIi%i? zk}JA`uqGR%`8`3Bt8tpzV-@0%v$VqTU$Xb-xNUI*>8?(dN*#_Kb$`>t4a*w|rES7?XUI~Pkv7(jw2e8 zpy+Rosyt>*(ax+8{Z~SVP^qE)&G8|)u{_Es^7Ms`xrekM^vL8JHfYb9Rc*dVddOCO$%zlgv-o{mx*neZI^aUvcJKR@0x;)MXdjVlxr2Svq zh!b(Y+EMSyzD`Y2pFgnPl`q6PHEqUt!0ORo9-|ec#7NemO0*~;(u1Hd99l2(Z2$H5 z9>9hyQ=8YXGJmhSf0p#MTml$8( zBL!Sb*A2SrffyNrRT{9z&=iWxwwPmWJ>JfVy5L+GT&dTtes7l5v?NpJjZ~!y%DSkY zBp!(f4ZBdLW|b`(48H@@sYW3ZclZ}&gr%mR#1gxn9~aKu{jWaZR==LsPoT~QC5C6g zj}K|@{Z5?1aNvVvrif?!g}hF~nPp0qVg2AHj4+M@?bVaXkHvn5|G4u81A%e6!rnF+ zMA#CGM6@yO3S*zmUf++=WyDH=fCvf+@qYM4ujM;u0Ia#*iI(uI?lA;!iOt_J>s{SC zJ!8>$o)WZ|9pjun5|%5vZG>Z2Z`Cp3c|^H((pIM6W%s})u67FtmEqKIxWQBO74Y%$ zX!_w%ZKj7*iKH3g5-!(9MMK>ATQaKk?w0Sh`p+FuEpvfB1~)tEB{)dj9Q$+ect)y=?Pdth|AW4J=UWHLIejlS4P=$23VROh8 z-NPW%j{?);aUe z!K~^!^mz;?c>a>W9+*)lehWCYX`hC8TZ%$61AhqrVPWmOgW0Gt6)!bQ?sxJ7Csapc zW(R;@VIZV+H&N`Kvf}usPIW6EgHPmGmiN1^pFK__c~8UWfFAFV*Zl)Cz5XGkV?AHV zkl7lmvI33p=kDbbhBG{YTdFmKn$7PYt=9=LZIrt;%R-B}aCmOAJA;s3jQwDm7N^_H z&&fnDD7y61XOTy6rj5tlh0EHUR?#Zurv23AZAo?+eACfu&IXRl=O^4QQ=^$97z4BC zCVYQCd1F$Bi`7}QvIaBy+R9izNma@3emvqyKTCPb%kav%{r9<*l=ClodhoExhxJ*$ z0RB4XW#fp~#+lAzD=f^*&>V+V~+mlA63^ zANRE)9PGwCjTiE9YAJ07e<4zd$ChHy)N~g6(bGNc+E^-tj-*~ek^gW95H9J*Ck^*7 zu|Mqa_ii;841|@9vcN9?gzoM(9cJPF+FUas|Gxd9CRz*`C+2H}Vn7b1&O#r6)!A?^ z4~PzzUzITPmi!46KPiX+U$1W*=wzp^P=oCso_`u5Mih3{S+uaR=sl3m2J_6~I06d=)Dg1Q63LCfWvVKxd_iM_afEU%CRX)92J!brWCp`tcv;7-ojAt?4 z;9g;G>lH8Hmwxq76z-&^-*_p0F^N^*Tzur>sNHcby_^3Tyu1T>7KNX`hFKWI9Z$vj zhGJ(-kT&-PBTr|js-E}}840kHs7By=@?3cK+dw;c=k033viS=?!gXqCjUZAB8ETMM zuQI-T`u$@4Q_zDS*||?{3WnDYDcB$ya29&X^r!=%i;{C4a9DhG_v~=e4~(vqtfJ#wDkkLrlq&S|)raEgv|wF&4%AVCt%EYB8#aMn zoPUT**miHeZNPIOH6AMLI#=zk5qsll6J^m;ZlV^1<#G!fs zmh8$rwJt}xQEuEHoIx)n?C`)A7nzH*gW}Yj#2FpEBF=Srs}=Cwz_T4T^zLq*|0!$p z<82oCTCbbcyPEb*S((SQ-C)-5Yk4I!r1)5&2<$0Aj_Z&ztKB&c&WF06@{fm1)hOvC z74cS?V`!&(`z?yeHd^O_+zdU5Lha3fToLZau9DNa^NbE6tB4e~%Do4S9ydF>o0AeX z_t}yEkSKdIo-hUT{2KV2v~dL0O6BZe`_4SK%Q(<5&>6YqECe48Dfc}Kb*3@_WW~Bw z-Pdbjee*^rAd_Gj_yRHoH95Su>%vylff+B=8zf??XojE#xEz@zT ze@|Y#p_Q|!hJSvgx~?0#3cN;350>POSW{sF1;exBJAMlWH?EJ5fZ=($o&JPb9_MKWK%D-`<=25m>!wX4?gHDxx+ro7if=iz|~V) zF2cDCh7R2MZMuH=7LO97>gh$57c~KcH{6;TS$xx8HLUq@f+j>akY)m1 z|8;DLTZ+als8LI%gg1w!#*zc{T?D5N)G<)T`xwa2T1^|1F!OBr+g~lcG>-Qg;o@!X ziailu#i?Xcs@^J-!hg!ftY>O5=}GMZz0{PbrVwt0K_x$zgo7XK9*Zvc`EuDZ;r&_) ze=Bw7?Dlr^+>|#Y>*N=oxN8HGIL57~H!LpqFQ$M`>DEfL77%YG-rms%m;FgKJ=4`$ zb3zHTh$ovTqbY|7o{p{KV|NPXcBaBRh{HhR9ce(1U}!Hq@g*Ov{-gM85a=n;j$AzS zQ75eRw_ALj+3L=ZmPIhlTucRqoPM?wF_=eg<}^#*6bu~dtvJbPuEN>GgjbHI?*$iGH00xHVLQT8vt~I*xc$o zw+)*Lh4tn`_qqWSBwt5DC=L1|HY-<09Onc77Yv3EO+19=n$jn}0?^?RkBu1VDe2u!u3=nbyh`~-9o zCqUy_jlI~bVPv!Oy6DJ^7eV!GjsBN#p6YS9eQgWGUSfWuwq{MR7I&ROB9ci^P%URY zBhltsxR4FSSp^2%v7RwRvt9GS3-~>EOG+h?eFSSzbspuvqqeh^=xSKJaA1iQR9c3L zYwwP2Oa31w!GJ6lMoX&xK(9jG+};Ym_psqE^C^DVp-7|WLRR_<#KTclZpAlMXdGlU zIG=5kP}<(*isK?due}*f+4oe(gCzi!q`k9D$w*({Hvy6Hqn&!t;`JznIgmx{Tbl9w z?D(SFH)bGvQ!znOST|e(EO@GMle&+U<|lLR)R234E80;TR9WGeLZJl8to=~Wt<*;C z^KCXbGZefw2)l2yvMl!;b;nKq(R4Nms<~Q>4j|0zQWVGTk>|0ivQj~i^6`XhgBN3% zeZ;8uHbTx7EM%wQgu6k%_5rk4{f5zFRNUeV>@y`Jy(rHpn%?5R@1jDLC~Fpgm+S z!F~!i`sTm5Y1@z<_2YF!Gh=^hEmK`8;wD|Xu@~xFRb!+NB@5JcJw>S5?YZ)E zkP_q&C1xmtV6r)eQ9+kQ6ojId*|Ow_vzt)NAstH;Mt4os-bvqnRzB_JjkMuCi28r* z_p9p*3I*dMn1osuB(G2cK0TsBO%;#xy{8$hgm>@JxsBTO#xtYkfRM3uws2oslLwgk zS-;OXq|H3@;TtH4^sWM6(zsblNK_gYRVo^ZAh0wb)k;!p0DzMjO~vDXtIk^5QFBgM zd^cvbDMPh+R4OI$SF&vQo=r_E^ZDV@+%iROuwb!MD7?#v;X~MJjw!^ne4NGaUih+B z7K{qECckCicDz$t1w}Jhj#JokE7*rxaf<=X~O2upwf-JlO0<8BUhodMuMugTT!9zzY?gioyeHx67N&G0e|LE z;5CC{eFrAF2JGk0-1&1>8scjE{a?cKI6Kr!uA@5Y7j!Y%^s*l!jsuzR@zp&%wK4LSf_C><9| zaDc_j`Q>5G?PyyKqnd8Je;3Ms`>Q)F1fDdg2_VZD88!YG>EF^Pl;v@CA?@tO1SAK3 zZxK}FQT3nGp&oxjb=^&`Ll9a`j6JTHsM*R*-n_C`!p;5!Hs5-5pRg=TWxGx;f{+0UgIDI1jEmMuOm^eW#V~T zmOuICS6@ASz(?4g-al}zXm0H?u@4>BkuN49lm=!ERrrqIDlU`PS6A_z^KVv*$gP6O zSA4P2FL(;e1p`ZzdWwO3pp~~8 z^!9rZQrm)_OAu1$qJ1GbtmNRR64BxLtuTR0F56piB@*k{&D*ygem9ZJ>}9|sFH-P4 zi^L9k*A4rvy+h87;xf%rK?YS_Vwl`rR(1 zp2?XXVaD*gn3m=Yo-9OObt&pD9#5V@nvUsMa}sBn!bn#JqD9oKT?jShI3nD4xW^If z-*rDIRu4W9sP}TAM^Y=?1Hf0h)Zj9`kwxH3S}V&vGc|0lv-Izm%bgZKT(r8?S&Ndx zgriRmn%R7%Wb`2KheLCVg!72oh8R1`vDQ00$c4Fu-nG|{?!A7n$xCZ&x@W{|Zk@1k zZ+|_}#o+;`h{8RT7o?PlQ`iR3UbCDg%>?wU0#g%JS}8tgyV4zsW^HKt@dHk->R2M# z7nI(lL5==MB&4Q=tdS5<>$N?xZafk`$c-~3u4E^H4W^O(yG_^Sk?5N#aAu~N;Gj<7 zVgp4LLi}YFotmC2B2ocHwmmflbmWXn2!yVehRiXf#Q5p^x30U1l?ro3Q<^t}%yZQk z%tjAlT}G47n!riZv`A(`a|r6#*RDyDrAn2LKY!TteWH|!bdj`b%2uM_ZKCs5DB{3= z@L2Q}@2!Ta>t;4aKfJopmy%HM>T<@Zj=ZFY`9INs$4VYDa7VqCfz=|!>JM3Hw49EW zoD_#dVpRmh<*Wi3uYNjJM=a86Z@T!o#qhzk;iZ1t77tbhYy&_mgHqHd(iQ*%KY~3A zEJmlc8gw{p@a@RrYwcehYU~I_&-Y(j6csf#0mhnadHWWLPc*lzk*a$t6kghj2NLG# zVtNfn?VI<2{o-#BVs--wwykd=2@geKjjg!Sc7E5{mOd|cu!o!OwYLq^6?v4VL0lzW`{pO+2FG3XRMZ{%Yx)xK?GD-g9zQ&i_@yq)s@ss*95 z&(F{p*vJN|RM@{*-l#j(BpK0jCL@iy?l~9;W*zQlqNldID4-a(Z6!Ym>Y@&O00XUx zqtBDfd@dTI3cdZ`+p{j13|D0>JLME|VlL`C&fKR6lpQFSl)G?Iv|j%3r{$s_HEcNO z;eG{D4eT0B?vYo9&)$7;tn>$uU?NSL5pds!+u=!`J-kPx?8E}LX=w(_)Kl&iRuDwn3reB9dm|91705gccB%=fX!LUrUqVGudS3`7~NB<;U z;Y2k~;8U#g6gGGTD783ci=)ZE{`nb`P$e@@2|u!ZxxF0Tv6;`h`vE@Z3Np*8Z(=G7E`c|GnLue80P=?Too%pe5rp z-sgio44oqdX!2p7YCqQmkRyl~9*ESnkEoa`a*CO{h7eK!AdG_OSio4YXiAK~rpgdi zf(e60$YNnY&>)7SI=GK_J;o<)n?k|X3!`tD^1w%VM4L%OFt&FZfR?~M-%Stc3t;hT zt=ENLi4dKxojj1T@0~zr8q8wUI`0gFs-IZaKGUV+gv4*&=Ey-Wf&Y1W`DyS`vn)I< z0nVX-8e^db!83}2as6y1LDeGc`Yu~+^w2+rgM@oIhkDqnyr$BF(W2-hL+S|r^zs+v zk}V_$suKNnDY-bqKlWh|Dpn!+@ri-T5gW z_c8^?Bu?HvXZ;?CuZI;6dKc(hsWb%Q>< z80M7PKtGopjPt3B8Z~BmN~cv*jK}P3NI`r3991K4@X8aRr_$}q`y;7b-U|6QAK2mc^P8;#_P^ow1Hh(j-M>3!~CnmPj5t%n0GG0 zcr+~A%faA_{6L@wGf21=28N?gOlK`_2X48=3?w&znL;SW6dL``#0I_r;(lS2@WZ$G zkfK95wXL*&mA`$%=m4+$v1Ua)iu38m$tn;)NOLHECkzTP-`x4iwC1tY14fQXJM(dF zJjkCfC&5Yg@fE&yvQ~fAK<3Gb*lVxYiI2bEcO%S`OE>@k0rYXBiLs=4K%itE*xJxp zwAIgpRTK+T(v73~{$VZ>D)7H9hhkGhN#8!XlG2C@?l z1I)*1hR1UJW3(a#Yxfg|Ow+~pD)URX=IZY^13f>C<-!~gsA{->)E)0c#4inICqXjLF8x48DkxGIVhx%>NUwbf8VBxcSl?2EWj3PHiAn*ZbklzQ%% ztzQE_7t^;5cl8=d17>)9Agpz-S93&aL_o6=beRtL@+r1FNxuBvX*&i=_u4oh zF{(Vd!HY|OvVefG%~YhCV^a1dP`9>sN5>Il1$Fh(7;2w*c0kVrirF|nr1Kbn`Zvt;W%2zQ5rQ(=piRl9AfU69Zt6Z5>}WHGQOW$%2S?w*{Fb_zOGTWF zX=BNF8+Oby!axFP#IAtAc;Lgm(ep*sin~wBUnA$w{X;*>ndkGwO4><@N z1mk7;eCDw5jqM(MO;f|h&A3UG|d9-P&&9;#h0j1VMtkG!MC*Mq!{n)bM8+zWj zYyLxr+j2hf>L-h>NX1RKDe>NX&L)1!=Aq7AV^jO9S#fgR2a-*`aQ*;D2M3v;Z%k-q zWRs#Tx9Bjpv_DSCB@o6YSO*%DS_uyD3zgQUF19`d;PJ*?V&8vfE#8S{SyRYLSep$BW_jtbi(L^*=&Dy^kVrHxuFNZvTxYEXDb)F z|DrTBI(7lD(M&{$b-`CMH@RS*jVqr~_HOueWbjagNFgomqCgqC`PPU|Yu}@)+(7c>64Gl{HMy?U7qx-rSDd z=A`Mz!IaxT7A$($7+6q0#ZxRnAQ5hAfa_PEo4uo#Da?MRdbg5QfAxJoW1;Vb-(s~k z+yp~b6aATsp+LrqFdNTyV9Q*1OD>Pk-{W=hd(`aJ3hm^-vG|4CKDOr6`HBqWZIOhHF4vv=O*}kR^|tW#JzvR^iTd}h+D2SV zaj_{r2XVqlx)5BE-Zi+_Edr{J z3juz)S1i@(KLYJuQ7&3Q41{pa=~G|hyve(GZ=D^jWv*mZ=`Sv`R8vl%rVJNDKK0vq z{^iBJ%$lKzvM7UjL{?lKq#ZR=sM%^!AJ83HZ)5~haO0Vq7&zOW*y$6DfiV$+?^SjnY)v{b^Cd#$Wd9k zeq8xiOvB9r->ihw7AWH#rK9FS-F_qY7=Uxh+>u4(7M`L!9Y zt|!BYm7!32jMRun?eJz!N0fU?-Y~82ig|}JVr39Br9no8)jK^Uzb7FoFXd6R+ZP0w zkY!#wuO62%F9k6XjCAH^{=vn$YUx;XD+QmowJau9(=jC}M$Jo6PumJ5??IPr4%_aE zK4M@#Fb?n;*t3&!WGEeM-re|ND_(v}sv~$&sfrq{_6fR&u6>rZu1bJY<@B<(;RhZvA*UHi-d2D-reRytZ) zS&PqK%k;a+&`J^utI9Cud#uG|LuP*0@wBS^szgHD&Lu$+h55&S)b*wlS!LM~-oABG zC>_HZT0nKhF7oeo){(!6!iP_>XDsp;VYNJGL*7&fU;qQ1t^9c-u|}L59p2Lnk#7Ik zRIulp#T7a=FD{qL!K{;A&2`Slp96i8gLvq2 z9SiVeT>lVdjF)wuq+O=!U`7)~A0oA4lR@*O=v5(HgMluRoqXQ+=i#$3d>|WO2tXJ0 zNQ1${&$L3=9z)okoowo6!2mL=quZzTWkK6M5R?8=`m6VbIuovsBEcls0qB6}Pr+cZ zoo3-F4YFMDReg;@6iUHEBVqu| zp_0PKbWhFG&GvlxgZCpp@K)@2^U6^@msYi8tG^mvyMewI#nbZaXH%Z!sL_voL)i9pW$odD_Q z(vjv^0O9Hj2jv0{VEtdxqsZ^g(D%)~c8|bBT`!Lgx@`MwDND$ZbwENzX__F9Lq zKuo-`A@NyHiH*1z6Ed(m zfr;{@bt#RNh$Ewz;M(TDz$9M4h7oddl4?IBNozi}rD(8Hf0P3OkRSs-oeS8@1qk|zy<-Mw9+yE_ImMHvgR*H2Avd$|k_UHX9t&`?Q5f6{J>- z2yXMByE5 z`~M9f=T-249vB+3xltq}&JEYSlSzg8>!d4N{0raf@bfpDCS{wtkKn)f_no?f-x~2X zP%)Y2u+p~dbnX&co430C5cn*t(z~Q(Y%^8Rfb~bf`&FWJ5*u-qp4!fhE zGm58VmtD6mTJG2p5PA7kIrRLCzCxP_WD1?Rd1iGwjw#*iVgD~X(~oM6oapmE4DlT! z5IypoU9QC!LH8S2Sv+Ue%4J#d=jZ!)&;oz?V({-K=Fn{~_MWpnhyhQ{n;x*x|0Brb ze~kFXFhXH;kKj$HaN|YEuZ!vT#h}i0F$VwAMrgvqY8M~7;7Z&X%zWf33>I}Bc)k-O zSa(9$KX`Av>(N9`B~RX4iiY&xCo58dN=ic(LaLOgf z&~z)weKH=klT$G~FztB)5j@Mm>e?+@QcW2Q`LjV+rN`PBgHy9Ra6;{3MjwUs5uGEx zI09fh{qYj7loa0uXL(`sTmCWK|HY&GcTYdS(6bk7gGiFVm3mt_v*_Qq`_T22j*AF( z5CRaaDUr{6mJ44eDHlH0OQ83skIJBE^%s&#yjXOYvOnSF-6&(Rr$gMu7_~6p^M7d1 z(?M$}y%VDmCfcMdnnjfgPZJ>M?`yz0{8`|{GC31oInFU}U!=MiVIntf3ObR_siic; z^XQoB3}wN?hg{-Gy7rDA9rs8z-i$;CSF&pEUvL5IPrlphuQZ8%{`PtN+#?Qezo1P z2cD|AwY@t-T{4@0Htf`!b=6c@w6U&MjNVBi zEXSPh`7lI54;JoANkvEnOpazqu&?TyGywws5Xp)G5d|88A{C1+gGHs!Cr5pT0~wIW z>Dy%Ebsf!8bm#waf6mUwr&lHY%(?&m9gTmesE8Q54mK`*r3@gU11DB)0-~Sxkj71| z0up1+{}Qe%VS%f2Tzg-?!olgfOil}p108IZw|sz|Z7f~en^)buC$~U*>8h;?V8dfz zpSr+$3nHe6L0-u*jZ|zC)Y*58h7Wca#7G5_f}FpKs#d-s@hsrqd`NPD!{0M#>`O+y zFV|xgxr2MvUc^Z|?4I2Z`rDz;gc}^F2(}NM*sNXR9db8%G}LuGE*BUw z7KZLA1{^KUqSsN((~Svx73YqrIeb9K9@eJGA(T{TTdYLUHYF@r#?u#1SEsFlIthmU zzVY(A68PHSP`F+uISMp9`K3re1%|6=oo&sX*bUDu%bw@frCM>#Pu7zZz!sdB%%)qWJ87_&8nf zMiNH2AQ)86s*-b*j*uW{(slWv!gmWt7_E1jbB@^weC}os1Of<_A%E@f?P=G70t@oO z++*Vy0oCsB?ubtvMu%a%dpeUuWYGSs_7YJ zTjc8L+(Yy1H$*I`#FGKXOL*}e)G=rRS%h`5N-)fM=P76MV>UpsIF5_A&eHUABH$FEZrMJ3#Tnx$~{j-5hQ`CQM6$cMq;U2f1+l4(&egznwzH(m)}}g z8K^WzV1rv-hxxUG;#mI3r=-1SObw>8iOG#|;)u zh|Y1A)rGAeQwNTPp@G+X*e(RHh;7uPVu2+p1%||;dx7hd*m7fx`)0|&de=ExroTA% zVWN<(JzKOigvqu95P^tUB4e3+8~{x9=Xn6?H`YqQz;3R9j$)2~FJEb^a1{+HYDpg- zD!JF{=%$a1#5iwHtdI82Q|0$$myd?VB9@5A3)a?;Y`M6uT0{Y>(k?%W8o2( zY9pDK(VqG38g^4dEfX25sOxJgN4V@0a%d{#{wlvAk$YiH{L&|Q?=&j3h1XSSZF9Zd zZQjtn?{Dpw&#Cp%-z`$%`$mu#+&U$qaSlJ63jRk^=oJ&50A$z4@4F{znLe-QEbm|= zV_&kuv-T=9Ao{JAG?V8dN@!H7K!dbBpXAyfqdFI?+)Z=fzKxUU)Xkk92m8Ccg*nK| zW8o0^Q0hr{?FsxL0lut6q0UzQc*x3%eJnQFav-^!EX5Rf4bVmKQEz!d%4(P=U+l=Q z#W!3P$M5gifixiEMNJM8`Nyd-*2@;wSNxd->x9IW+NHHm znwE#A@t*8hL4tSFCQ*FYW_$|dxyXgE$C;DFV_}X#xi9HozbwSf*NhMc7~<6=P&8;t ziUw$47b=UY3JO&68#Gq=*Iz)(yxAF;PzFS$q4ROZ=!h5+Sd`ef(LyHk=~IR?Y_wSN zvciZ}_nOH*zV@6NWuL!T)QBTFqP2DpI?aDHB>4()R`dxxj$!KaCpG>Tzx7g|r;99q zQl?mS*;F}cpf+ydHlPo!)Ny&;nZg(6IB>)U@bk$wJy8TYNY~;=h7TL_a9lLY-{+uz z#xCdzEx3@VA#SK>vgsg*5F5Y{0hU0-<~3&Cm4IrFLj{(!4=?j4avQm%GftQ>68L7s z_?-4$eG9*h^FcgEcn85J@l|Nv4oTMk;t!`X_DwC~CA{LN@%AyEK;kZI^r_>s9i5c^pCVQc)CL}G2qS%^D4Y3)s5M=5sVl|u76NglBk4AfJ+1fx9ng!H92gyfQu`q{I>8LGT7FNXw8LXVk+Xx6c4q~a zAqoW2s;*K9Z@}8;B8Or(@eg2GiiX7is##%RK29b9AA=^zILC~& z0PSDJsr)1kF^a^~RC9-cbFI;V$LR8~K~mOeA|ylAU)wL9O$J9jy{ zj$zlBYYAv4Or7-i@Yll<ae6@*iNf2sfaA6J6$|L4jYn84?pMzm;2+N?iD`y zDBw^l^jfN~m|yAO{og3E9!bXo7Z~Pin^W;%`dl>KnsztMZKLvS_1f!cy971nrCejSwsx)Z| zL_{poJIr=mmcinwx!7!hU*rrGWhj9pd-S@IbGtvHO`nSx_@Nql{jO%0^6xBYcI;vo zZ=nUqor@rTc6kN`;w`ICAR*Ra^14Tz6?M!}%I)}~eq|EcNIR!acA6Xs(?2JuJ0~6>iqPr0-4R{UM77Hau|UI?9{7;YM6Zvc6!g?HZ8x_ zbjD*Rop{g$cQEQrS=meCJ4xsUNt%5KL3m6ZCPD^V%pqI#Q#c43S%`UauX4kolPI74 z%WHWTQ9_pm<#IP2^Xs#9A_U8e?obO&c8m^~*y1zG!sP#((2M=bXtv({0)_=#hLfN` z5|(XLE}*GHQ{>jPc6Y%`Y@gjZ6}%v2C^A_W>@k^Qe$$brIfjw%EZ06SqaEd0y9>Lm z=9y}N>IYz`q7|yI^n-M{0~hekIBOq&)6!y{9Pjg(wU@GKpED1YPFt27M!sl0X*9*=Gy z!jGt-ONz8+_9rReYnrflPZl}#zhpk5q9T<|GuU|aBJX)G0SYOx4mRqXtyY|wN`+_h z89Uv|hDyfnDr0)RC{?e?8=~U*gt&s4a;TGMWAWuhi5Lx~y2k+p5 zM%FF08q>F;)#EPG3c?}anVADVs|PC9)vqFHJ8!u3eVL~}A~MNsHZEzIolHX*;d8x! zi-Qd>8sy|g6?g#9*d*i;M!#5PB~bFge(m9Oe> zSg$)53$Q&#v$?!^*)VY4{@1UjXBS(FIcNZf3Kd8&DTiVTp zJwYT$4qaF=YJXX0>uLO}?y8mQ&W3>1Vzf{TXAD<2q2XM6VP_>knmB#s>kz-x-HSLB z`txnSRzxDewtn(Sgw~YN7U*0D>Hi%QAM^&B_o&`fU?eJhzpBf#)38&A+kaAyhe6*& zou~3I8*CUqDCxJER0{Y-l#N+|nhyH2fu~xkOX3g&1{ZKQ+I221_W9GYSyk2>KjOfw z)atG^Jri?aFx_n^NgA+GF}|$x~a?Zy{UTuVQt*=hY9{-3F&3 z2zftnHZ$yhoB`QbK}5is)j*sl*Tgm4uOJnrS?^*&kTdU$WAY8y;jyafIDA7TlA%h= zo&w8XV1#2P;gfJ(otn$e;rm?vI2L68u(#;^;mrMr7RFHY*zV5aMizQDL3*K16BWBH zswc(p=9~+mgu#NtIs@Fg4-}xt^k@Khk8#p0fv;@H`!#Q%#lz}G=ZoLw#Ra*3QHtfMWNES7kdNrWP;iSaerBPl$^~A@EG@o*Y7k7;LC@Ey9-C z!gNFGtcIR@>sulrLt{hw%l!xHA)~K78yPK}A%l`SwBnhLWMZM@V>R)a`-PJ4{xJ{n zd~NVHSm@}{=m$-uUd_9YG zKKyb&`1Uquh##wjdvDmm*Li)MFX67C$WV}8!$h#}w%%a2=Aq*ky3|`|i8Xd}Gj*U1 z1%^2d{;Q-xWPM?_3D3u}LRxck>bxjJ{-Om@FN&>lU^sFBV%~`3`GD>Tg3;qQbh1o% z*|y~V|LU0f30`30^8eS?z{REUWsl-L6Y2;ELF9KIL|#9Vb1YhbL_qCe5d=(9Yz^Za zKexba%7^}KWnua5(%k4QD=ya(J|6C3&h~(6$CGz(%hGpk3qI zPBsLT5FVbTm=PSl$qFF>FZOB%V~oJrFa@}++^E_3!a!ypFB43YCQTjX#AZmz+vh3X zn!^Z5n%xS$@)iF{zECBSDzOyIUYcs4FUA5nBF*Z^?q(OCE`}Gv`V^OQw(xVZUpXCo zPZp1}`GEbV-6R4U8oPGQ>rDtmHp8yX(dPE`-@Ri2Sp#C+i_y`TE`TAJ&qO~CtT(bi zdNc2)?~=VXG+gjYQSz{#`M$0vIJ{olM#aJ&%7>}aIuPQfR%B47)3Z>}af#XH32)lt z;~+fv+$`m`r%OQq@q6%c_4vZTMUgn}6eS0J2e{RwJBqza_iKtEb1|l(Q{^{%5-ms567ZpmRQs!wNI7j-v zamfk_XT@ol323h+;rys0Yrl$cj|TchmK41)XT$qrymNf0dK|yP^Og5p-6EWUj=Z`k zvNDb1W7uos3|jPI}+#rT%l6{dD~Igvre6-GzL97@d7 z4MjaMTU0p|SCXqd&hG1vzg9+SXV=$k+q-~!`86~1rGvz=3S4V5yP9P_jH0QxgzYFy zzYDeuAfAl?RflPRbufdJ9wWFkP6M`yIQP8RVdJai0AJvkud^MmyMC9Hu zZ$s%Gq)*>AZ1s;%VmVQCebA=4NW~K0PQzmPx=^I5tE5CVV_|WY#Bmr=v!1-SJ|(6g z?sPgor!Kp5y)=jSDyWk=rmIOpCf?ERW zup$rx0h6<|9vI4un+70EGgfa!P^oDCYdarxE8h#}4%|ECsa*tLJ}{w;_}Wgz2hq>= z{bP9$H~`j71>}+R%?}<_1p)Nxi3amB{B&DAB!a|cCM&aW# z31WhK(YF;H!t&X#FUZ4`{>b{K`Y;4irlKR?C&}O!V707_I%^*PtpB~`e->Lhc$xc4 zr*PWNA2g=OnxmLeVGv5)+M!-!oNW5aWKm_-hev_vaSwD6Xi|YIJa_!^g(fBj_XGfF zgh&yNe-M$Y3}{Vq1B@Tz$E1w9r6-9R^1BxaF9Io=d>)coci zlvh`=e?W)D*8}urwtUe)L#D$JV|va>8lqt-KIND-W_0G4ZOzO7$P31`coVYWukU{* z{7hmEx{}o3^WW`O4Tpb(6t^tA^B1RqziBc~>q&X(Q2HuMY-< z1Fk})g-Ot68?ShPWu=F;F|J+69N7KoL!Taxbd~)3py-qf z<`G@Y=b@0Q$~S=vL<_}%oe3s@x`kJAeU{3uun^%G*v?K6kH@pjdnf&UYW>*E+UX)_ zP5~t+UP3i9H|45Dm28MT{g?GaNyE?1q8|O0nXe61&f6J?+g}fCGIK1ZvM=kacoXUV zUHPwi2ej`MlUcckU(9^An2XNuU(YX1M@_=9f%rZPt?+qU^hBp^45ogEnZEFqW zCP!KRaFbM&`mEfQp=z!|0YNc-U^NUg&VM|iSUYEFrGPpVhGs4g=ig)yHP4b_rO7KZcx<48qwOa4l-p@GF2NCuPl7JuwW&!)tIhZ+(z>(xN zTmXmqa1qb@k@1Z)nCdQao#Z=!$Q3(8?LjBo6Yl5>IF9B!vhP6-_$2vJm!sj)2$txs)K!WRh~#OcP9grQYNv zS+@`2>%E@}>yDJ6S0-g~C$ZprpHGY4FRP4FwOlz8=!{Gsv8{R1q=9TC!a%_WsL~sY zx|J>23P#)JusZ1}r@dr$q|cFJx|RND%;gM3r`l=70O1^Sx`CHW&6WZ5Bjm#t?{+8W z){*e%bZTMJY0!k6YxNNsmIz@fjz*~PgdyixDbvg)--PY3{}EzO`k87RiM;l`ML-X% z(+aWjb*~Gp`WhKvO)>}xfd=z|15ZynJ(ir?$o@$O{vDo-s8^>i$S0|YB*_h_S29uR zRxsk9;p~O=%wKq*_^~$Vh7kQ}CdGP5b8n0?P9H$4SiE;TM(*Rb+r;18cHdw57+vzF zZ}0HouR3BLs;0Nv$R3J}2_=eJDfUj<+0>qG^+I|}bPKbJL z^Lykc=DG+8s;BDDB-?kWU|Hy#8FBq{2aWSJ84boaeD(mRq%f6}&6Ia_>5{4NA<*0p zX^AbptccuYY&c3uC7$8@f%NVm%{6ecghk|*?-r-q!Qml7&L)FEFRrI~KcQl(OW_^O z+t2W<{f_$dA8lS!z1XW|XG5HVVTE(XtzMS?CW2!}C*+oaghh+kqIWO%e2NX?xd*N) zH=xXku9=vhLM-|)Jye6TNg@b#39_1`k2X6`6hA;IheK_fL+Yg&XR--ORbQ1c?}hSr z7F8-g!FM%VXLCDmyHif5Umwn&_U{-k@Wq7-0{&14cYG>ZOmqq&Ac>L#-Gqic&=>0y zij4+dE|RVcrGM5Q9qmgT!)4Lm`iR$pb-ZH%en$1?gFQ{y-$=wxp6sWO(ce+|@C=i= zj2)=O**69F`T}86(Zy3PM8nO#N0`?Z3A(eErH-DS!4UIJuoa_yRZ_C^;&mr^2r(eL zcTQ`jNj5p3=0_I9e>=3XSbH0|=ybEt4`_p6>j&v<`QU>UjWH}N#mek^f5YG%fy@Z+ zX;3f#xD(=Vt?A=6l=>-LCt!VT8V{V6octW2u7XZjEjFS5nZCjcCyi$lA9=45e3IDa zkc6Yc2Nvu04>9ZKe06n|BB6}6n@~b*0T*#xtj#;_$!@un6F=H*jdwEDQf+(Cgcu7W zLDj#LbtD%BkQ{lWm@-ia$TB&)ufN#6YEKy?1|FLtl&R@(f*s-lsAXMiZj zp*-Z`7Ps;~BVDLc1-+SUu`Q%S|A&sTWX76``;dhFMK^%zOs<;pLLG zbnVX_{VW6E{ix1YOqo}6UYPx`K+XNboadsb{$^G@=XXi)Wx+D4KQ@~9dxinxrpy+X z2z^e~h>vN-cIVqtOU&BE5X^5qUzMo(O@p+HLI}6w8+`Z%4?2eADQcNC#wVD_CIt?w zrN6$+<;i_f6J7`(Y~Jdl)Q$P6eT^J4_ z6QhOzV2wJE15!n07e8YZ4S3?MIqRa=jN~1U;ceSg+H!q%p505^l+Qu>Q~-;BI>A#0 zWJZ)AAixB%{fvo23YGKvh_ACjF1sNo6s%Z5GKhttyKQva4plA_xXOpyX}@*$v}&^d z8G3BDhcccmixMK}DPmvFr@*Y&FBM}Io#s|l353bOW*GW!V33Z9E*Y}~C4;cvqtQdp z?ObKW7(dB2k3C0XQS2Cgd=u=T1jpH>qB|nDbZZnYx+9tA2<%Xl=70;tmXyC4t{71J8 zp;%36;Zg3sKbyhd2&nqv@#=i+>GU^C>T#CYmShL&#&W;Wn!qSd7LELr* z*$1oL_~fcyr9OctP6lcV`WRrq3>s$^c+3fCAu8%k=`&_OiV(Xg;ZD>=2`;7QQx;=O z)-#U+Iq~-8a7Fs&4G&6sqn7e~e3zP7*ZW@ubz&AEU`qfcL7~cy?J1HyDgCaR>KkNseTD7mdfF8`umWDA! z(J*L%7&-UFR7j5xF&0?|_PMDW!@p&=8JJh);}ivvk}zie@f1@+^ngTg`V-D-cz3(s zl`##DxLH5kBeiOHZni=)`$P+yn{b}?K?D3uz>5HW^R<-xX(LIfY26MJ;CP44u09L3 z{pv3%>F9`mP;hxT%Wmc_`2HBk+IQfLd=~naJ#x5!#5+KbB?g}h`@1UP4!#Zf;$aPT zU*1lUfA<+ti0;!^ZU}$C^8k@GZ{!{fhy%U|br6?nvAA>BWgc~_ zZ4DVMC{~Ugr~}e8*ztT$Uzteo)sNpp-qOC%SAv-+XzF0m+km zE$U^cTjYhRwLXm@=y~nXemI+x>jMG&%{jDy6vr#rSw$5E`m~@E1R(&yWXyvQY!FS7 z07x2~A31+gs+zz9H6W0bHcJMIg%(jx^@2A8W==hQ{oQAZwTdr$9ko4VG(RW(0Ei8P z7~M`ffRN8S=Jj73U*7mNp0vliC0?(s4>}L^R)*UEAg{E4}F`p)3N z;YOw^@{PU}pqPb8FWEKMddlhCXC%45jbJ4|s`}(uI#Htu91BPN&v;U>9aYg*P~$ve z7h^cRvkhx53U_23B57D8m@oJqNtS^Tvt0>@Xsb|h-w;}@PueT+)jYS$=R9?O2)rtEs~&KdHCwX!3uv9%LWJJ64v!hY(p!@9l<# zeA-FP@PNWK_&vTm3kP*yXKKxk_rF2v`+JuR!MtJ%D?g(1pfNAJwMZf-xeQ&0b|xHJ zcMiE4!a)y*rmDq(U^C|;|LQ!diQuYAjRB~>!jC2Ye7SSES!Ig7Dc?+afed`LRT3dA zC3=i`Mrtp%2}%S?cdm0vHB0Ecu3DPJ{b2(!pmJw7@K1^?j`DPzfvlX%>b39Pd1-HV zT@4p*+uv17KlviTd@_yej|9}JOhVBCYYjt-D0X{*tv7T|Xdrr;FZW^dZrbXpLGA=eILj;)>H0`{V0 z{y`Si_O_e^$9*)bw6jJpH?GECdJH^|^2^=yVjyAv$t{c|NPu|1O@Mkov)o?FurqP> z%CGF1&l$IonwozS7a!k5D@G%l(T?{yY#zfQky|nw$_Kr*KpG*a*@pVglKz6vb%?X9_%~Ly z0pQ~)7@%bq#ezBj8LsaRqixm*UQ#SW)}!ovj-wuwW=P0{req_eC0)M5^VF9RR$n`T z146MiJewNEwN+my4?dAUuC;qLk-@rqhxsjm z5QKAN!YguSno`=VB4w+cuDThNo2gu`KaCG#0X+C7BIM=8C~c3+5~5U zO7uzo%GDfkr|`@FC+Q~ndzt7qcmUn^4Eu+D>Qk~%qgBUF;j!F+93-97V~z9a)oP5y zKy+{Zcc_mzjJ7tok;g2Q7bJ{+>k*wt7KXmlIk|-X0SDl%x;DBtS0x=)yM5t#b+-E4 zL5n!DTFzQI3NGri>o9rod+$!xQMJUn-33kjx|dV-2Fu;wpF{SPI=PshuX5HqIg})h zpl=GzFxH|8q=|^@APXGEmQd(h30o?0_}YI@Q72bk)GStTSgfp!to}SdkvO*Sx$mal z)7IMRf!Cx#XfJwboIQ!U{ZHV!QQvrtg+qmK&^`hbFB#PHa#Y9x?WyE@lH&3ahO&JAP@mI&;qZdy!=OIKTJU z#+5G7yuLvNo^PpAXez(gTQ?(tX6IgKxY%PHg9Rq4=4t)!UR!ULvO zd6<6|zk%Rk$*_~V`!a2zfaBL4!tFdLpC}x&SU@ec1+|$NO^BCRA^Ooq4WB2dFe?(} znB*k z2kS%{)l9&KQCGCVh!ZBla$Y&#H+Z~?<#GmU16A1%!LdW7jlfR zzaNh=L<|%Jei}9$HDu7vJX(naC9=RS4A0sj7CG4V388@2V=cK zs3Eg;^U1`pvJF&?&L!IW+S`rWn`K@}7*Yn*P`A8gn3o?#?96zZxDDK9X&SG3y`wQm zp~}G-nghFG`I~nEC0U8it0u>}mq>y0LFhNN6nZ0&PqYmwA z?oV8Fk~ce_ewf!|Z9hE!j{p{kI{wvkXD15yE1i7E#u=tFQi`B{umSyZ;yB)ibv%Qh z*Qs5i)txG18<6O8iixD0N4u6K_T^vQ8F=Xb^0;8ZzF313g2Ko*=u5hZ4&xg$D~Z0E zX_PFzXvJ0k+zM{63IH~wJGh4-L4&ydhhD$CA>CSD>i__T5w!owl0-t^jN$J8Cse4B zaOGf#U5#xZJ93-z5#ZbbVb~yI`!Az_-VxjlXCy(^F@1RpxR!y0BmZ+|Z{uI%+*@)~7Xx#2tiJVTa$rgYN6kzM@PdOMLQm zafmSM(5r-!gG!Vaa-D6|Ulf_LXMXzoWom2t4tYh%FxzaQPrNjxM_@g9pDA)=agoWA zWQ-io{bkJ%bR<%!0($ZyoKmrIXZ9T`;(<)6#tJl?Hzgso46_hBw~hp?>3+R(oxbGH z1wjM^_G;iye;wcV3u0W~4SGV~2_^+s! zU9yKQvN&Ycs1eE1l-?bUg8)Gy`@A&QZVTt;NjQEw(A;R%kjtf{=y3W(dAciUq#BcQ zFP7W_DNpnL#Y7VJ)_?G_mUO6f9gpTI|4pbm{QI6R1aUBF<|MX~Rb(OAP%NIO;^$EF z?7Wo(y~Zg;1>wQK7nq$_tXnvulMbbAQR6fMtNtykm6ROh7kuKUlN$;aVan zN&nELIhu!ZTW{5rY8?8#B23#2J(qPLY&nN>kR=}vFptJT8yR3V3#J$ArN)=SZR0~a z_&k&llPNtuf~U}qKfx)6%wDYo1`kuPGwLshhqtMf1+AYEqrmVe8G#E{ZHxQIG`?rM ztaTQ#4R3Te2_b4Aho3Xt)aLB7>xs+_G505Jz83dN9IOK0h6nyoPT zU@+0xq)(>Y;%R0fV7#^_#xy~plAo==yQ23s{#Z!~KYX^JReL25lbQwsQGkNy9lY?K z2%UvTg_^%bGCDU5El%$bEZ+YU@~zqEfZcN9KI2`Z+didTzjHYpkL?bi!iyAf;x^Kn z@_UQ6gQco{^%Big9_$JTYu>@oOKuX?EC?zcNGhKYUeYF{jtqFOrCWz~E03yjIiJB~ zggz82a6NKa0fWMTzcti-gjoKqjj2*6H4{9n^WiUyFAFd*mOi^V)JDZ6%^}bwqXrbo zwz$Tv!dLwNaICyb%aQJn?nXs3=mNlSoQ9c-bEQRgwoZm zFSR=JS%F|X;ksw=xyg7g%5AqheEKe6S$e06@Q%Kk_rG>F?QFCJ?-q>>DOaY^-=y7I z{;_g1-suF02Gb&fwPDAhvyo5F#ti`AT_5H=Uvz=3aYllW$>s5vh%=ymW)*ktF@v~| zNf=7V>@|b5;~|V~grA?wO5hIaz8qa`b9*Xx9lc9>*tVKpX3%FUsfY{xNh5f8a`#CL z=w9_74@q!ASCi3$nJT5aHW`@ungph7b3LKpr(aQUDY-eN^S!;s6Sevba&D>SX8ZUk z5P*C_q+g(1@}XONY3TvWCY$ej6sadzzoK-#;sX>bW3&Oy$Qi{m7YkkR;1T5!(v&S-FdzisduJ~ z#z@PP$HATnez%kBELoL6t`@b%aVNQ%{`wRYmBttjX9}^M_PX&Twn_-{G2${8<&MsC zMcLc|u91QN2`8g6o=Ocm5DAzM{0IkC;U++}9tpEznEbIRm;w?+mEsE} zOd!;4kJhV|MK8;wSf3qNTnEJ7JK|~!Dph5jBF2}K2Dp^j#1@3N!(kQ6c8|#(S|&DF@b!=T12#% zN=mE#{v$@(DAowop$-@Qd7nc?Az3`G1YRjn_@4>!3_*H(X(~S7f@??-9HJZtP@ad} zP`qJU1yUZjeL6xQd_Vk2F#zA*w-LI~;XvSmGs-ABn**g(A9nvRe7xpoWrP#fFIEQi zbyNOoq7tyPM@Ajw$G_#I)N0iW&cCTT2P6tkM?2Os=4!}4TCT}LC8lxlKCywlQB312 z=c8LX8cV_|#biDM_Iz9N_0i!V_diyYuKG=~%SM7>e8LbAu<}dTt57yE>7;hNYylF1 z@&-L9;Qgs$J_h3+%*|{8*#=ex-Hqf!%Xs1^Z`50;`&N~)F)^nIpe|<^IV9B7p$e>1 z{CzDDb|(UisB%&yCobIFiamVClUKy)v4 zXjRm!H@2v^hlr6THIJq>d~?>=vV&bq8lj1$4yfo`;IZ-MzY z$rD9g!zos6lb&<#X~R;jT01`C&Ld8)&@qs>Pwj{Vp=RoKF`>7WWjE~hV`^>6R%Tk{ z?F~vhXO*r-I?wqnSd9w`oe)aSB8Qa+|CRw_v7hectfa`HYLc}V7oFA0z_M@fg|c1v z@S?*Uuj1;6tlFdRpJLSkf3csFZA6zB?~8zucP^q*(r>02w>4Wygc}nVS6PrL-y!$s z?z3R~GxJ;`A@Zn#cB47F-azKNFtf76<>&j}>;$0LP@ryg{P zY2WY`8_g~&oO28DJ~+9lnN}DEj9-SwE)I9KyH;^!c4{M@)87{jw&0HtsVs*A%V2Oi zPiYaM-A5;C37n3WHjX94r1r1H_#r{Db|g`$zpz#5fRIL&_%g(XQ@58&C<`##@*};ms1ESrnN5z>=(?kRw^g^M6?I) zV}%0eh+zLvdhm}*d37Bdi_x$dp|O)bCwVGyO zx0A^OCzJ_J^re2VhR{v~3ac?=b&>{+(e8?V5Dg7HdK1lejZ>N^dyIi(PBEE`aRA^z zNHvHPH4eR@NuIN8lYoGEJM z@ttXFH%}r6Nq4e|4;6n3G#N&`=B~7af0}exvIw@R?xQI&`9nMnT;n^jjUiF4IQ})F zj@Ql_<-A3bdKvhcgB`qz15^zgGiu&<_V-1=W!mcT*3yv3I!JQ~`hN8Z4CgW z;bHkYajgaRVU-|*S)vC5!B~2c`*d+35FGRB{G^iGiYD+i|9r75Sc#Bf;?pC{?^n$SGE{D?@Ryd?=f>$YD~aQ`mF>5k)l z0YOTj`E*|A4tztgtKjY)B{mEOr!hd}vZK%TK}uN`*kRZ$8?m*&Ap6{$x()&&>o9$< zeDpdy2(Nya*q0j>2q6WbZ33JD@XvtkW=DAR%zs%?pqLS?2(l8Ic7807BG- zh?D?=nxz2iIynP1Dop5aj|Z|Rg#8^L>i+3-4^Ryw+d!V-3)Phb90_@n_2;i>=F}6y ze)p>gNEWGpo`!3b0Ccqm1ElPMT5oLqxDFkcxEYj2Sj0(G0wIz`;$oR4vMaQ%#o??jZB zQjCNFUJw)WG(}fR-UPc~$~{MywWTG>gSWfB#a!!$>alV&5E%3ZBa=lhq4R#foN6^KdZp^j)5{(bbUBd#xS=C+-?_V8h03&rE|bsC;EZa6azs3 z1y>@Z71MN-u(+tA0|bCrZgO5E&J&NxDy+&L+$5RZr;080uV1y}c27N7wx9-8CKp|L zHv@`4C2ioSE)f44J@H8@EVx8B#NW~;)ja58SV_08a+!9|%-hPeEyUN|tDpeD!l?IN zf@T4RZsElS$5lY?Hs-8{*huSi5WyCdccCl^+{v0gMGvKm9QATLNcBvW2K=x^r|Vf; z0%_;_MZ8dTgqzqY23-{&>06)!b>2ko&a0_6EOu$S_tXS$aa&8j>u3&#LiJeS;~%b! zo35a{@3S8;6U*#Jk@eT#H@3Ikj2+6bjbyTV^eXEnU?$QdwP&GBdM7t0k!pWX&nnug z#oBU3-@lAuw3R%K^K zA-RCloPGny!b^59&coZjNHFhc$V{7%6}>Jbwic=u=h;4SuPd91gGrAU`k>G5+Hm4G z50&}79YAczuet_FxpCHuwqp9kJl0`UqAKcnC7`9{RES@Ov;BF)egl$6^HM!eAYMG$ z&4>f$PGtlB2v8z})(pzocmZKoK{UWxI=qU8?^SVfWK-|FR1HBG5Xy|t5ldFBUj2=j zNYfxlPAE)3H4ZP7fFTSJ7?UMTdB2JzVJmHH`fE&RZd=2|eYzUHz9gvGcRFrL|ES&k zuQnGz8(N6MQ^=roy>>8Juw&f*yoqwg)5BfRqamqwt{;&(%#z%p7|yW&KLmqTUPv^) ziUdTuLoWVI-az-IFmmd18~-HW6R6`K0wA5WLtmQ24|`Rez#p?O4psJ#UJ~^jqFHyh z7)A1RydAro&h1{?6kXAm4modH10UJ(1sh7#ynnx@f?2c5m$}Sc1c6Wo8F=Kn8&A{^ z=pQL!2E7OX52gQ_`h8x2C?kzVcNFvW6eS6@G|+6~-OpiPpjb>8gxe{fx_`xVcAGTr5}?yRwDsaUXIYZ(S?$e;JcB0=2G_KZbW1PN zILp>Ek+Pb)X%SVBptBc`-XZi$W=C5l&RL;2h=Yow2Qym0HD`H+&MiX{+%<);TdH1cIAC z5M};z_C8E$W+djDx}7Gl9TE4!OB8LGW!#q)2EcdT71vo@)i0^$Wg7})4YYr%e~KpPPu>T8)*HQ~L99;hQHP2= z3dc0D8CSSs!vmHOYp>9I{1ET4u)0Oav?!WpN;^HdNJEFCo0>tgGWm)eEp(TpWTKKt zCOs`ISlv^@9R~Mkk;g%{sI4A95v9gdfmRT4*91FP-c^5&G?{(NlW2pUE(8*OUwVAi zw`_CKBaewv{kO5CyHmC4EQByOS14f9&8N8Awg2wX?T;t#>=3-RedxZqx&R*7gRF6? z%ZLT_u4xX5HsfqqpKgHe_^N>5)*8P8>Vcj|;ppL!nC(a}?gKczBX`c68D0s?Ed{D{ zjPig2_q$D{H3F!TH*Y~5``rfk@c_D2+m!;UjyFewvaRUqLNeWF8s@B;7W@PNY9N2W zOy0uqGyEC*MP5JwXYA3UcJKfNIhCn>#&gOoAkPPe6+-3s^hwERJ^h}Gp;Y9eLuF1* zM5k_`pMHV&$9g8DX&O=mtHQZi{z41}B}PRe>Fd>50p8o6<7yQtzTbY1@b)l4@QtMh z{Q-Il1_N)bgMlG0LjZi1`aLBgozcTZjiE3LLgd0N+F;XPp@DTqXrR_^b3aNEZ~0=dxR}Iiy@$+M|~y3RR@=e*>!a1|n*~ zj1r$6cly$kXM6Xc(oj}$FLY^UzPu-_4aFv}sa~$tqFOV`dkMWfBs^Kb)H?4HLw)H5 zn16b7j#OxPH@!NU?BCnYfi{CkTkIjYvTfTd$g&YfY;ys>xY|rZ9e+s3W904T|#&prtn{ zMuk|83|$r`jcCrvPHK6my%bSiVd5+$X&hyvB+VKk0;_=tqc~5|71AR+R*)ieS9m9- zr3xj1`YT*A*C-fj{u=S)5!dTDqQ&4bi%6b9c%0bBwZ$3dK<8sP)1#6Sz1@(4{EiJ95|+wz`FSLOQ8rs2YQYyJAKm!h|!(7mQSCkIfFxoMwNx%=)>DgL?B z|1+J;gC!Vv`%&BhQ0bDA#t`t=oogaAJvh$Br2!2a2LhEqeoMn|tN72ZfEnq-K?Wag zsOf9Q;Sug0X1&|^g9e+d`5<@tM}dniuql{$G1Xgdl3NznF?Kfc4?;v9I_BuiB0 zt30|ak(BUOX&ho`NPkEyn*Ox{KQN4t2?wc@z|v=Ncxj;XCrf&ME&+h_WCs+=WEcs+ zp!6R8?j9E{nDrOklZF-NI*Lk2v$ex*tAF1KT+F32J?+G?c+%}W%;$shuW!ujnVMYtB4 zjR!OV1{hv1-bk`Yr$@nY96FX}K&aR>0UHQSFvsM#vLkwNooXSz2Xxs$cwAdedDv?H zbOy=V3nxxc>#yO_Fl6*rC$|Ix6FJ@H!IQq`@>hAWhBpZ#v9OzJU*r8*yX za5C#yKK=RDq~yU)_eZVE*Pd=7p0fkz;!E^?8Xj&A{0oU zT_ei7)qh6cTm1Kg&8H4^ERXa9S!3qkc zV)sv@|Fj3V3&gZo-A!Z8g4AgL>nbD=wg{r;3Xih}fOO5`)0o zD3_<05+LsfEL3O*zD5sl%WjEm$JWP6zKRCYUPpUCI!&(|ijP(5$1xFv1fn15_n#)= zK@Xt4=rQ<9{H1HR!C|QK?wbol`r#|4)bZ}xvomfO%l zDM^#jBEAnQGkmlhxY#QNsP@uPU4h4ay$o3l-tvweeY zdyd4>rZgcKW%#vkrcL9MC5egnN4H~KOju(;4!4C;fAsSoe2`8$!5fez-A}YS7Vfuk zMW4NcjVojSZOX0;81^@u6Tq7eCIRtVrco$ee0tFkMMdJ_YSEfD>pGQzb@>|!d@-hwWAx;^(-^pSZ zuiPTL(}y1ky}`Pp9&5POdR~Rx`xec`rUmys*Xp(Sr6g#-`cY&~l7|sd)u;r&AlKI- zWax+(2!D_H9o)R9dt7J|&)VYq{dvWx)8}JgN@9oexwNWwQVS!ZE>2Oi;YVV+WrI|f z{w&PKOztkkX$K>#+7nLEbOL4Q7pMwEPMQ7AprH}oHgZ&Wb+=nlw#kF+44T8WrEM$a zh1}b-J3*2NQcX?wEn3hm@D5f-D);~9?KUvKRO~?j0W(N(OuTWQ+J7MDg4}1M_?UO8O>q>2 zXO03IpViYTlEbw@Z6hWt1%w`~@$0t&uyis-ek}oIz&Q$;b?pA_7YgiPF*Kopg;FOb zYnbwBWP{LyY@Fd>+VQsP*8?^)ST~Z`$ABpF44M6RJNthxh);3-1U!p-mP!H))mKZ? z(7M%noIfd!cdfa`Yz+aos;#u&x5VE2WY79@RflMM)@XG;ZbnCPqCK$2_2sTNy3nj8 z3?Kn;0j2jjmcp;Cz+{1&U^_<0ER*%>=pCX;fBt} zcwj7LX{nil7U7`Y$~N_>J{o$egWiI5|Hz%QVwg^*U|+k=#CpYZy(}_0yb2Q<2rtlg z4D!sS*H}9D9#+go9xo|o>N4QasM*hLRVcMPYZz$C)m5a|N`FA@&JIf#~LxiYdpei&+E+3&?&)RmJHmXV4Ws!QRzp^4Wez-qQloP62+r>VHW%v%< zfzI@1QT$uT96wUIT1QzYB1P(h`VX^(q3H<2?{Wv=#r56JGYx?N&$0+aG)wi#0jFoa z7O}B>eNm^|%n+-NA#p2=fMSYIp3~7OgykPam*zBIQ=;p#==)s?=<}hC0RqY-N7a2i z2%8a^H~u36$H3ejnjN{1aWpPj$Ns{3$J2IWYai4ZxVo?>6w65k9bS=9$w>{-2oqs< zdUj?#8-NWdpX&I=4$3)dd9$n7mJ$r@J!#P_Nh06@7961J0IojLB)tRMzbprje5lmM zcpELZed3hhqmm^du|3j0r^VeXweggh_frb3Al+s_(2^C1{KwCAK7ef5r~*kYv!sUm zDs40Q<#+ge@WX6)vrR>UtVwCnEU+3vvJ3~n3_L_be3Lg~n^o#_rUD*g2&m$2>PDPW zTv<}P)PD)oF!tE-zhbJoSc@==BJKzoR3(c_I@+srL+(9zgw`l)H3wMB@o6U!*U4rKSZMxVF@7Dd)>IIgT{)7`A$y1wHfN z$Z$-v&-r{?U6AH-__sG|hcz0@lFj54=Z(pSkyc0 zgGKn^myL^;NLDkZ_w#r)oAAs0O^F6v$fLLkr*8vWU-4tMOguB>{t!Xa-TMu&)R(^&IdH00b*2ymIG9%9TW8IXdrVE9w&n>sK3^E<(q~q1-NN$v zk1uq|<+U{ApXZRw46eH|ub7&+LpL#5vSZw`Jaqo%P};uhc>4XN^EeZAbfv~}R;AwC zsdvP&tXzWwTUkp>FAXMovq`h3zP0G|^mmQdfhQTsF5Qlq&$7+}h*0&XN3U2bGs8!- zJchW@AxbT1bOUX+oopj2MKpO!TJ=g-XQZrAlz*hjnAgu&hVQN4>I<92%=-nD%FY=( zeT=2A-dh~4LG0r)pP{oDoMBt)aH>_yu`Y1()>!=iI_N~^$5Zi>*x3Z3QB&Ed1Oa^Z zT^B~Azk3iLG2yzUa|*%~KS5ppUE#HryHE6kiCn(@a8L*ql5$>!fR8_vUHx5Zh*hTv zYwDt0oj$Mtd^(KSfc9sF<}zRzf;dcDUgiDgloir(4QLT zK8ZKtOG;lYO7sl1$Ue4oR&yPDwYG#S9<|9Gf5%yVpb>W25A5$$>Pk~$5gJy=`>p*= z9xEY?wSDm`DWA8b-Ch!<5bFw@%Bzf#GwqDy)nq5V@k&WV=^12@& zXMF`S<9B4{g}%2iymxSzzUy$|mIW`|!@gWMaGGiG^7jp1y3^$vw!)CYCGjg1eI9?| zRN(lD(uO&+gQd11Lva*n-*xqtH&eQ#ZBby{lDwmtsDRZP-~WtwF|p9%U+g*GtkB2S z|LU6yoH9Mz!T|(dcPnt>)l>=}!5CD9v!`G9xWUWomTo|-EUs=+e#y#<2W-0b@S`Lu zfhfUerTvby%601{ubjx{)LeH1K9h+@Cq++AlnOk_L3S808i`!+0F@j532&6#YaXQ5 zI`L&LmL@+Ty4Y6Mmmy%;m*TJKr>=9wElPS2VU}1qaUNv3G->i_0^9Nu>F~>Cgn$M#Rws?MclXS62>2<5~^*U!BEd>}r^&qxp{OE1;rX9KTUjR1U5pO}D!1S|1 znhcX-$N>v#!wHb;PZd$r((Q)6MdHpnC)(NnL8k78m9ysr!m>;66O4XZhBKGIv1Yh5 zw$PK88*QV}%D>z12h+OT8q1*#j9SdAhOfx)$-kK7FhYIE(Wo)F#TwGx(?VwH!Vun; z%QY~+`t5&pqG`8yI7Uly9bNzZWoILPdv1M!Ea>N!>zhbbV;K|_fHAZqJ;qCZE*NGBjek9*Lke}5C%@&2 z^_wP(?_ix5lXLuagNYQnU&xQkfxd_~ZzGfYX6U2d-`+Wg_viziz>H-K<*0Qp7OiL2#bfVMnMF5B~=o3kfls|V_CCbH&ZTNvJ?5KwJV!lyol-lo`XS^ zHU!kAE~O(ki(c5E4>n8CM|!y5dizr)ti8`(2N>ioz}!+f)U0Bmq08x*q$pz|X194W zm|cacS4E3wvE=OSlpc&l?x8l-8T?vZSWgR2!Pwy{WkE*wh)GaC_+R6BraWOB;Z&|!!L9Iz*1g;UEf~^h8&TQF7K`nK#&Al!eUf5 z4n+;&;q%F4^`-sDbF?s|GO3%ts?xtAYc#3Ae7Qk!GC4aW*= zAYpqO_qA91+Ft(vD?rr0N)Q!ljQ?GsJ>KbnEP%}+*B#FE6T2)4nnu#Bz2 z9aZtJY-`O?2tGtMIE%_Vu=2CpS1Mr?Bn5W+quvn%AzngaWXiN05kTaw<7*}VB(TrN zid#i5Uqx3;WAzspD|e_X&xDY-19!8`BBP4N)lenI@D3U0lD<7I{gycc@6SnI ziSxS9OnLWh#j|%XqPt}})Z#Q?wx{42sZKO6ZyI4Y^=BbidTX3%6rOsuUYPFoLyaTAzIo3Au<|fDTGOsy^yNH(5YP za^zE?@u{qm!FYs&Z$i|b%R@qSD))hH8qd=?<}|4C3u_)w3RRzH@coFbXi3AA;Jwyl z{?KkZqB&kIhU|O`D~*{^7wOck>s-d91N6PMkyb2Vt^_Hk%o*b?Q-5hnwezS)%m&B? zJe{I#PxLAIP~&ew=zU>dq0XjnrFU<>N$m7&b|}pfKer#oW}dIjTbJr)a7j`TL;4|2 zOx`f<*E$4?3O@$<<-mZAg>ITBpoc!+5+UT-0POqibQ z8xn=OWp3G?+0)&$6_3FuYX2@7BWa$U&2?r;M#~jHw+e|<9q)m1z7vOHMFtxU>W@FA zs@%f=4j1`H;YWi+A_G`QL~xf;Ra#3L71{~ZWgoDF@?v<{fTS5Y1>lv|*KwEdfky}O zHl(mXj3xFu4@KWTV6<2El_2R7oK*#5nS!=oFr{p+G5MUN$!}G2j?(mO5#$4g{Tu;+ zXPSALz>5?;T>=K`lyKhV?3&6!|3U{dZ%y56ay>}BMzt>XXLDo1!>6N#iBH61!sA7U z?l8b+0?802eD;?J)cP8g;R}Kf%((H`WIgKRSAYQh$0g1a5YnuG(84Gf^b^gD;{lNX zA8Cn+mx^XybsVI+PSgwWwR@J^9NKFIoqPCXAkQuykD_@SAXC8;*dQGlW=FXCc+aQx zbUN4X<6|(J9PYFZ>{Y-qym8LlQ3_g4d{+%=`QnP+5^v-U$EDZ0Bm#gF1YQrwwuJ^- zCWSmYfcx$I84od)o(ZrnkK~~(eHfN=)Nv7yR}SWO>JS;Nu(*Y+A5ugD{6>bnf?3;j z9IF5@T=9|@2GF=J1Hm)NYn`cjzWs8NRz?>;^pwMy2F=lG(i6gGEmtDbJ}Y0!Nk#IJ z0A&MR5?ztWrBiuIGk1!(sy&7YSEXhCol{jN%Smh@sX&|gMP#B-pb^!>)A3y$VSQhg>ScHWiMXNJtFX?nAl|A!at0 zX|w(a!?6s8qi{}#sY}kQBZpGlRLso^SPuMS4wreDT+~y z>9iEn?tg@;>*a`g8(i%c`OjA$F0kRUR~OPAr(dqN>*HQdV_`EUdTN5zyM;BFRKi5 zQV+;Unc2gS5{-cj}P&pVCr{`vhZaTGr1@a_VQ5nWi4*RJ?VgkI}-?%zt1G z>^)hfR&9*@?=BFSD5kjVzQsJvC35rRukVO9wgmps)28~jo-QZsMt>aHGxK<=+jm+G zvI}|z#iZtg;cpTMZIK=5`otQ~_HWS#C3wHPjxWR<9?@^bG|*Qn6w z$e5=9_INY>JrMvk{2g>1(U}k@M#9`q;Ebukt!sqG<(y^4ulZ|S3gB{XF&~>pOQ(W} z&B(U*Pw03SON;}}u$)?5TuG_2l*%)3k`X49VkqTx9ax6xT^(ex)KXbH7N6nO~u{d=rBTNib4LtA`&K>8}rbdjplTi%Ep6z;HO zbUt-1A>Z&N+G#Jg#a|hL9pdL!wc2E830QEmze0hP^B61rB+$ojT8UU>6O&)^um0pX z_!3T}{jSW*VNCV2nMT%^dX_ZW0`*^`W}@xnTOa zl`mV(x)R^9w-1w>K4G4Xm-KL=s_9i1;|ae%7R47t_u7!bO-vwCt^8x2%*Hb`Zv_d0 zZgCSWr=pyfP-pns^KWYZ^oM_oX2UGph%MQhFdfY*7jC%>2+mFeaQzyN-ru_b&e-HKhiO7yptV2VEp3Q`L@JSJNI`9tBo#ON)3zqhXfo#hUvTLZ(L3}0 zzU~VO9J0-PFUAnRvbzQ*JY2U}8}rhc_UnkZ6@ILpVSQ7m(${Rm7*iBiX+ zJZ|KKwT0>W$Iv=r)X!xg02?*30nFIBMU9z}_6BG~XWnCd@OeJG;p~MW7=sv0u~Qp~ zd#tRk0{m~v9w@;~|0M{e@-e|}6v@<>+<6hp7vsSEIZ+jz#}2k;-J_81eKJO|Dj9!M zN1ODK<{kLp5-~60e#ls5?fkWepEmn)BV^)E6n;fVbg+slZ-v^JYfDWuVVzk-jnnDh zk-Rdyddc3t?q9mjq*us`*2`U8DE9Jm<YRXBp?+mBMRDN+zO|U|fIPBae7?%6P_QddAPm!r}FLDOh=+yfqn* zhoMjP(e7KTvAQbTPDnE%{4Qb8_BDCkKNTGG=8Aw)c}*itBLbQ#w~w4!#qf^XB!Ib1 zf9_Z|g@VH=7KO1qR56d!WX9jdL~N>$6k#rJ?(ESo>j?$aAk8TeHz*o-$nDP}!|TU2 zi5zqW>kG1mxycm{*HjPX71HgKu4k0=d~BxuL{1DVm-DTHS7gb@f+MafY#H4scv(im z?YOMe`q;mLpRHQT%NI$?QS|3*p-V`k+h=#+YYKr=3lVy<*S!O_M|9`besSr)%Nh;^ zK?eKbT)CZM0a4Z9vIxDCQmQA?K1^oS{#OCyd?)Kz4^2>?BOwus89s&pfTn?eNk+1{ zxAQWZ6_D5vvmFVSx_BE90f+z`{*VTSveDhPTD{g#K<;*I`qPE0z0znOf8ZC#4wARlZDc^l&d{BQVvlBt2ChK;5rb zF`coEnc;r0rm8S4nSCkLyjn_Sf)nD*8dplR-L0LqMu%{@m8HMVh~r~SEVYlQr}tQY(pe)*>wUagrZV$!d-BaSTPq*B)ZCymAcr$XV*Ofmdv zeweS;&T~qN!J7IfE8Jv@2?YFZcu4lzwC2l|b@oZo7+9WB)xW2z_s>KJG3D$TU+gwx z`VWZ5AiiM1;A`?MvzZ&-hVSTNEsjc)m&;BgKrV)#)R;{zDbZ+}t_EH~2Z^?(oW&o4 zBidu+5^7a}5w7l)a*Pkf!y@6k1AJrrFKR_8mjvloTaXExU98j^gX+5WL*(C(YcF4x zFBPa1t-8Owh#l~3d@#+=2CLhwi1-W*6$$d63n{~ntEIIt4))`-x`dcn3dnw|jg&#Q z3MhOeA|=b?t_Ly~#FBKaG8aV)dMi%%SFPq<9tma1ie`5`dx45ZFWwyG)6@*ocNiwQ zRw}lSCoBs?OajU+X;^SyPGb$)yHU@|^_o2#W=fz2eWS@SF~Dx_8d0i{@_uw)DF@1k zWYlGZ<${2CJ0%;7DY_a2BM%PL)n)cFIAo27aFQ_{ca)V955Cw(URdkV6A@)Q5gP}) zp#$wm#82}{}sz`yZXC`EQT*3YVw1TYTQp5!0+*e`F&EOmc5vvYSMQ;cJ-eT>mW4ChGoQy7mfZ_23QHwx-Jdwx)XEW*eW zmjgHR<*W#Ni+<=r)0{5^vC)sL%M+Y#y;CAjFWWf?yf6WPf(pA5r-ZK-X=*zBt0A|l zdRu|CMsJj#O1i-ZTrD6a!g*_nZsQqa+fa5rS@H<0{NsTOKis~FLefA>L{g$&o9pHT z%aBU~CzW7xm&)@#py%U{=gHONkoA95D(z%5}DGDOI*}07Od9BXD{y2OB zrhh8Zgv;di?409VvT|tRWg%D(g^R_}gs6{N8~>OO53<5`Zln8(I@rg~eI*?Kbn19| z3QrA0&7*dB)9TiAP{S_v|LIVq>~aYZ9GYtUiq6g3^ab-#!-4LQbGxPgMP4j20coBD z;;MaY2i1#h9Hh+m^4poqI8&!@7XDNF!vG{E3yr6>K)Y{xI*?d z(_uJ}5LVk-e1@nt6|(-lXa$UBj^Nas?ic245P?zGXutFk6)*yKEw+pj#OAs-`e#~zb4R%Jj=)yBv6xs&r&O!hif`ZeEvJVR z!R0jOvp;_3##(YbjA!JP&H8zbm0us-GDorNsGzgk^rv-Sv~(`{o-w#pA9g{44R}L_ z&WKxC4*m8*bwceO8yEJ?CcKFwijx`k0=h*34is851nMPTn7?Q2s*T~#HU466KlGZP zgPjOGViUz?NYoRG4PPoLl#}hktfKNDe^j@ANBazDx53D6(|0j1;Hae75y zxRh~qD6nBLKx5z_Ere)m8#9@G<0IFf7!}R_FIV#rHI(6>1YKSa^HeDwuhioRFwGcg zSa(6a-_gayU3}+McCC&yv3kwB!kFZqREG1A1$aF=DgY#LG4j>dQ$1Az?8G`jYm^X4 z%*$wC4e8O2GhM2~DP!??4%&EgduL`gXj-J`Yw9n@5z_U2je9B}0ASiX8x7~9?Jur3 zUcb7z500e(DI=F4`UJ}enrWH^m)L~+_EXp-J^o@x&C+~`KRd6YTEWNJjZJ9R8XIgA z;Pj039VdC*SeZW{HF6W4W*mT@iqgO_wDw`M7AFmAvQ&jkP5rIpIk#XGkkv(Mhs!o$ zGI-k}Ba`DFkD$c+eaU#Q5Up-HKZP8`|J$ovnSvj@q+*a7y7-|}+7apvk=vQQgUTWB z2Vp&Y9a%O{-cmGx3(O2*nK;m3H*Ph>JRS}FE1%q63D2Hjd6A<>mVla+&QO{(t-WBq z3E{(z*sk6Yd+f@qCj_>*MH3Fkn$Z95t-#v`D*>dtA-X{~z~xp{wIrfRmcY-RRr1NL zM~>_h$_-?0x+(r5WZp6N&O@%RNc6MS?iadwX>J=-!dulK@q=Uc7r%!%CG_7^FR9aJ zT^7S$Nj~6yoqdWk$Y?IZEyx$q`o;EEV&jBYD0;g5(}+x0XBM0#$>$Msf{LuQxrysa zj|Pik0u1%ElnPD1{kye{ynOu*Q*4A8f(^;Y%uI5vyd09`0WMo5*b9I1X{`29k1o~F zS9tl}+s0h5HHxK1)Z-Jyca4qS88@mmCMv=4AEgBjwT>zIwF;v!#A$Um{q8!{{8azW zq-*TMyw0N{Mck2Aom36!zc)?3#;AyJ`r-A(Ke(7#C`H0PEgb}D1bnx1A-SB<4U&6c^BlM$7 z{B9D9?*B`RM36(Z)b4epwKKTZDW$n>EFeWPwuMEWI17wl4X$_f!{7YYg?VDm_;@m| zPSE|-*xwj{Z*@U_GsJ5?f}ux{xk@|xESFf1M>p992Zi7J(j^-i8aNSx;d6#tI<}$b z3i|W#R=7`!o?ECF(NYIUkY*^`s0~L^YdtEq`+fKQ1&811K{@y@=dK9$L@1fcGRfPl zK1*pY*^b7B4V&_r|2ip?frvl|IVn@MO!Ox{_TQF5yxYd{RJ+&h0%EPy5e>aztwu`p zPcHo>l{sN~Y`m#sGw14Zl&@>5qe+{0+ni=QtMz(-Bh$7Tl=Azn6kMNGfBBmQ+MOjQ zzb^Dz70xH}DHgAyAJ1@2Vu9ZnA&!A1=f&$;8cjy28W(QFG}Vl;^9q~{=fV55Xf-G3 zMF)*VLg8Zs;~Y*wjqX3#OZ%X0JAFpQ;p?TOBP$W|Y6~z5zDG8p zXD`~NsG~^S9+`d(#sC_a(Gl*u0Kave1o}Va1IC=@K8j1GR@8X9t{sMpGRo@qxE=4V zlJA19DmY&Fn*gGYBE$S@PI9%eHOnwx)90OjIIuv2Lx{U2S_s;3KGfZ$PMt#|hd^_H zL;iPhQM^pmwX-t27-1IvRcuRZ`&ks{>RszmfgZ}MYq;H-02d7L{5~=oM8<3;RNA-W zkoXwE?$Hd1>VZk$OU4Qz zD2zi_*FD9Y@oC|#;BZ$NQ2|<+Jj#;(Q%i*eHT;h8EGK0j{cT8T<`r^SoixgRY4E5y z1+e@>A+@4@beg>X(i=UtYxxw!SlqvtB)l{yd~D*EQ={tUP#9v7VtZO_s~~UxqPODDIZ-~T9&AlR z-vG%=oVs{`V7o{sp@gxinbXkrX=5UTcogO|@{WGm3p^;Lw;!Grmbj;*`gUNZQNFv$ zpv(WLv0%@%tu-#*`i_OJ5LwC!Ku8=G9oiDVa1wRAN5G@?<4A{OA({jD5!}oE#T?qo zQ5oM}x&tM4h74>{t3lR^!91!|LIW*|Gm{wo!8~ArsTN`w%gGe1;Du|*dGUU$l4?)|F$Qnrpw05Ai{#o} zn(V2MlM>_NAXeS(URlX0LPZg2J>UPKQO% zHPiCNHxZEsZG&I#xCnT5YwT4(Z}`MS;{%p?r=6=VQ;Aq!s!Gi>;I z;jFF&&(z$r94L%iS%Wyur+urziR)6Szj+2I!Y_^QuP*>oi3~o#;1fF@9RG1wdkkhj zRH`LiYpGaMmJ!Hu1&WheE*A@CtWSDGlofzWyp$7lUFj-jZ}CIbkm0PYkBMPi`2R5< zUh`T3qF>|ag{G7Q(bT&XbP95(JzZg(T6x~ApCezZPlf3s!dk%!Z?c)N!Hw0_jui41 z8mjzbQ?0zeAA!|Ew2_`-DXKFER$b&L^{H;N*GiUK@wY!EWdRbXx+4UCZtx3OIKJl_jK2km zu;hDC(Enwx96o9bDhSN!z9OpE+0a*7X05>WlApAMgliMj(bIivWPw%08X8S{zLksQBypD#A_AI7I;*{(R@4DWQ%dR#HPj={Butm z5m-)GBo2G$Iy#2RKDP>z_xG7NeSV#vT!^tTX{b9KBryzlfIM_dwSquXwP8IDa zrjx~6(pgulk@yc|{BG8up>}zKKrwJ^mjcwra`~I!3Knvtp}pBuxz5-UUA@rn7zSY3 z)+X!Jj9~Zr&;q*)OT>l(GrI2Szm^U*Ea2*Tn66VhK1q&KKoxu^IjiPWfiPVd0RLn5 zIHu4nK0UQRoR;||DTjt~nxX87e|RMt4CVAK0m0zQn`-08LcBvJ`xzq)&cV!88R4Ni zGn%8b#Edi}CLE=U^df$gcqWCex*^JdoAxkfSq`QcFaeUMA<3n0xlLQ$=bNI|hWI46 zz>~M1-Bcpa>Pvy%oGiY92niDq>%#|Bu-}OA{CZ5uJrw~03(fxMFGpXw!?ry8$hGe# zQW=b$pja9aYpw7SNOnss8@X(CZ)cIGJ2BvkDSTS;nhzxzV6k4*`$RR$t8wJO65&3 z_j2oHZnS!ieq$D=-vR%Wh}qIRCMvShOsH*&i*o8qxe4 zb>-*@N{l5L&&r%<1pb73Gfc5K1zGsTcgl;`ixCTkE6cwD=##XzVu%iYOLxIbCo7*1 zLEYU>?%5gnH>_E`SXxm|9lE2Ys+}!Ez$;t-fXx&>UYeH`29-%-sOZurs` zSRlskT>s7+=ASDe4j!c_n%(6sGt8x1QLKB+q-#Nei93(gWA|iefJWl8Csg6{7iM^9 zi+7s%^N-nzaDHsK*WHGMK znI+a?eSYm_gT&MluqevN^j**{6&V(Ky=jA^{t)2d2)Im_D1p#`nkz)56ICvFx;-pgC5+bcsu`6={77BJMGz%2hf#6iMA<|&LN2eYRVI!MG{l0s0^y@?WP zhT8wmYE?Dd@R@E6rn~qyTuCws%0Bmlbhbp25+46|a0Z*~sF=Mw-8-9aENe%kD9iE- z`iUFJbOT?%+{CQh$&$qvd z>I;%?U7*dvXWpY&%F*+2-D@tqDOGY(pqA^dC&FC*$X2P7!RmNm+#eEJ8M3y#Xi|{? zzL+Vf#ZGUPcq^@2KKbtO3WzB3xX%LQM|#Z~sxle!zFUXK9K&R41q9n<2!fxh+9dVZ zEE+t`;j>Ce>gg}ACt)Y@e&gbPoDlY#gOy!!XHI+Uxp^0sHEE2ayuj4i445FegP%z& z;}eZQL(C>hoHvV!QPyo)$<-?{0P2pArpnlOL}}3U;+uhzJ9w z)ty{>NmauD1TDAuLki_!Z%+81;i?5mCO*KyMV{%Do91Ap{%cb65-*83?Faos{5alh z7dvuK@vCc4r33xw9+iRJb%ltP{`a`3#Z1t;E3|Lz&Kllu0FZ42@0unv#jw0*?YG}m zfy{5qYnu{Iw^t3M!aV2PMf7){OU={J=>IW4e4RDE^QCiM^3X-)g^Gs-rb!K%zKB*K zz`ncmYXn0X+cw#9QP7vAORwymfli1hT`4y&1_z*?l7_0iN5#Kncn&%&PaQ;!f3TvB zBan$WPp&E2lhcol-BIpMK4TMH66GbS%cp<+Kk3uY6LISwOa`)Y&O?4F%l+3~V81hq zs7PV*n5Qy}|@lw+(Y_)MeRI@@5cK1gNKs>+ZAXH;D99=yV9}t#@sjcA4?{A;RLS#Epd8=^8Cw#M^`MMBH89tgV;dS zq~khttWa0=(e>2{J~@iM&fK>m-bvz4P;(kM+RS2S42g?EMuKJr@Pht++H{7%aV`>6 z_GoZfjbWU+99z&b^rBour{2p3`7FH9{;YFHQy{==c$-)Cb(6+H(Sb=orKm3?o)l*5 z5o%`9MvQ0{)1e$M>N$Qykqnf@i$pHV4zqq75mlWBj{@pLEqW1T zb?Ba{G~f(s9k^M|f|zKWKagMU%I*{IcG(1Fz`vXUPx)7(i?Ww}2z;f>K{d(Lf&S4p zPfPcrpde$;FP67I*u<&VrmGzaq15dp>ZBox_OQ^urnj*?pf!zF0k85>)A}gsTeuV4 z^gM+>M(+&Nw&WQ4y@E9BAq~Rc)-WhHqnONvaq_{ZJVwM8)@D+fHH)lohM2OItCHq> z_Vx5V&Y>~D%~&dKF6b=yhbA_{S-XPkGS%G|8bGTh$^M^`?i>pxlBZ&v!}<1wC`t#Jgk-Z1J>ERCNkBiux~Fwt~rj0}y(9 zvfIQyoGBhG0Gv?wN1bKxA9_MRjV>eryFRE`4Z+zo(sQi(P9y<8aZv85|=k@vJU@HOqc)Nd|jC(EbcurMnlpGS#Bd|Tqw zlkzZIBVu!wVwFcW&2RAkorbIn6%>7jwln`JTTM7$A+@NsjKdd{QH`=Ez11seT}?NU zSgN*=FP<>cx1+1)=staPKTsO{5Qh3_j`#^GaV)P7D^3Uy%Ekk`;3Ev$x1&2!$FP&6 z%6wPd^fQY9k{83v_y){SpdPHa2M_}i>=1yt1->y^r{eHswQUWs1v3jCAV~e>eLSOO zAor-FgU-Dc9X~ZJI{FGf*nocZ_I#mU!{N8Eh4MZgEY>IgC&Dybhh@lv;WngusBAl8 zD$EMv1EBkd#3CO?nM!Uv)hE=SwpIf}R@Plzx$0)a3296E+D!!#bsuV=z#jiaC`JjG z!93~@+uGaamdG_CJzkwh*Nf zdwnOfwWao;Bh{h^!b);B^G8L_(m1D`gMk zdxZTsVPTKO94j)6*YcEbOsmV9Gu;*0t%F#bQe>&hV?Xc^T70wD1~wHAHjJvQZ-tv1oO}5WMp*2cG5*sK>J>8TO#*HqV7~NbKKk5F$LAHj;eCe;l03;zaS^XKL5pNY$0r z!@|}1NurAjPtb$ZZ9=A8ngI{c0g6JNY)o8)ezHm1O1me-|sP&*dd^lHqRBf`3%)=BXI8;UgKQPY@#?Cru8_?Lk|C-W|h|wGUx=|M;3u&7TT2U87Wl z26Ep!Czzz>Bw!$NDgzc^^bEmjhDGWerZge>tI!Sa8wv~f5Gq&=Qj8c+Z2O#sW#Zoa zHFkPaMf&9A=*Zb`tiL}g@z!V&KFzY{`~$mA$V1!A#`+P7YE`gPc?>D7g$&nlhPH76 zp{d9E@0?CtIdjuhMV*_s0abZ~!XBf7ToD4CnO~ecbxs)En;H=BUTG1QGxf#2 zdVm?^>T^^_5cw*?FT*umHFO3%$~mlaz1ecM-UO|B6H?5(#r20#BtIz zvIb`F1mHsr@oR}Eu6Z}+qdQGfEHgRN%BN=Dg*Edg1964TQLK=IXM_~eh=Cs7;0Onn zv|CXbmj=l{&S#LkVn_cla>EA(q5J5HV1V*(yyjtyU4As^bgSb0<0I}o#N%-3)_Wp6 z5MCd}%--Rnd}YA6+qg8UTzMwI0RlMyjiRwjjGslRvrqUqM}+QfJfFqj`0+ef_4sqj zWp1xLa6aqCV(SVzRqRg&q%T5IZp)$DyJdHv-hNBk`^E5uWg<`S>A*ff^q4^EgwWw_ zv7hE$60s%ZdCI)Ytod5QEevjfRr@^)sme~mB{~f~A9%+IrQRaQAvcl%ljvNGWe_w5sD0s z)p5*n#EjrUx8K;|7rHcDNfAv$_H`iI*)=a5*H?H{tU~-=_%T`DtSJ{2c)#A{YfBGT zO?VOXe=j=-G?^5o9>L+(2gst=MGO-jzq@_QuPQ;RV(gYG+KRsMc2b zYv24r;3#YHeY>~K+ti1g#`jKSa2HfPwK_rHPLkMt^}h@^7Kw3CMEnDr>y`5H2f*+eq^ zeJT6;O(N911rEzFm9Lo(lv4WZg#of@UP#z)vivI`gm>Vy@ z?d$z;4owS7_${APNaGyEP4Ck#-A0ovSHBAVygHjw$hl$)-ASe+3P5A7*U}=tSe*LM zSn%|k@j-`&i?P(O#=ZJ1kki`}37nfm6_rJxp9^JL$^xWH!y?cK+b~U3P4mpWtaKr> zOH<%X*>}oLC|gcG2_(Z(eby4RfnTc{9tN?cWtHFCh{?Av>#W+qnB{4)`Xh&s(GwDW7;qOQ&0UWJB;mH?Mc?=pqf>_AyD0Yxu+zuK9bt;+Ba`Ml@0R zoJOmuKd$CK>)LUy>qY7c_{xqK*)MqdTTYei+QpG>?E%tMBz%wRG=2<|p5R@=YAV zG;Pk(^!Rnynq4RXwtR3WnBua1ciaV>18{CzzBW!9RHzEHfRqry<>e;>_DGQlzN>8P zt^AzvGR<394*79EC1l8FoUJo=3rW(~CP! z@F?JZ_qSGXRv_6nYzr<=qp)C{?kw6B4=w_&sqb7R9=xDi{k5soGzVqCHOZMfxcSW1 z%Q62lkJjNI*CQgekrr9`2vrSk!}`a8x-bS%4s^wZ=8>El*ti?ko_~^qPNSO>7Ae-k zfb>DTPQ6N1jBIBIM_aH?a|Aeb7EA}zu&b?sxRrq0z>-SeQUqiU%{_UVX@K3=32PYz zvGs{&Dg|F$7T4c+*HUn+c;_5h63x#)7B9T70aCW!F=eSv0-=gB{&=i9yf^KFUd1PX$bv!Ulp8r{1ewOC{ z8*+5JOp#7K>8`EOG1N!WEdeq{;>PGYP)hO=dbai(L1fXbVSTt-RVH-B+*x(|ghyyC zpQ!@OVHG-$pV>)CUj-h>bkV;E6Z+>km>_h~7lvy+c%N=Ji$pwY5Mt0DvIK zg5|7gN9`2DdGg8i{tGYoFnh63Qs(ts7<31mqgn0hxNO(s8&RoeuzaaSd=A*?w4%{zhl#e+@GDKnQT!q% z!QxCW+l==&KC*ZW=@!Ik7Ldqc_cNBF#A=pAb@ZfI%H~(~)#TWe)(~Z18c7OR&+9Oy z!dM3LMnQrQT-cTWN@zKXVBz>ZzgMR9ME0`oBTbW60&)8rkmCc>QmrHI4+4eRJt+I! zCGK~#5mjiQs_gwU)(d#7@5w{W6h=V$98-2=i(tEgNnORL#WX}i0b>INY922?K-e!U zQl`*_Xdkc~?W|Z&Jsa0qllr<%&@}g2YQiXY_911MV*41B) z{IwzNtymfm0n=hIgFM{v?^hK%JlN#_LcLK^;I{0zk8W-$Q?GveP=2`l?>PoPB6o_n zqvFPf^FiOq_Caq!dR?T$v1r1@S**{xgtCYBz-wWoYIzh!th4myT~$i6itTXut$1JL zG&}$96gMxh!M)+(yC7HBCMP&>-mj~nW`n?9r025YgdkN_7NePK@opm8Jiwep+D4K8 zy)@tCQxjx9uHeGfg~M5dCI>Za&Iu6ne?i5CBhi>LQH9w{ei!lyjQ(j&VZ3 zR2$jy$0wVg8Uz~if+>QbgY>5?*twi%9ZztF!EM{H>Yyf@U~a-3WhSFsaQkq8Lc=3- zMW*mdBDpFwC*Etcb_+*gDa~1IPd87+5huG2EL#`<+ z?`DDnRjgk3F_HkV5e9{XSty39@288=`n4avIM97r4*#G{<$o4-?^W#EWcxLl`MEgr zyY^W54jdgsf(P9fQWp`OJyUMDWP+qSQmLJ|mR?lP)1H|zXqWX9-uluC)g-o`)z$As z_~~HGbeg+5^i!8A^E`I3<;2UCU_!fLdUq9!Q0fFGMt!J~#QdoiDL<5=qv_g(w$f4vh3*!betav{S+{GJSIXa?q$gvth9jAnbdS%#W z{}+)mya5|U6F!&bnr&r~=dJ+}BFt#Z%e>f0mD=JDiOe)ntcEq*TCtYIFWHg8)zZSv z^t7F)6rl%nj$CbK&?we0i=qE^`<%+lN^dXe2Osc-@|}25>RJ> zSmT1?a*1TS_w^{K4Iz@GvE=1(6<*|YtU7FoO2lH6MH_eRmVc2svIi{8kme_*P9xM#)=ocb+W*%wNdbOzC_rnk+P>tta#3F97EPj0=Q+ToG92~A_H5s6hy z^0PQQ)m%B0e!EKR6D;~`8B(^MyQ;`OuI+%HuikeB{Jpp2vzn(FAfP$1^6c^>1J(X9 zM>_VhoI;q@LX1OqWedwR=zB*`l|i@IUHfYBa3_61e1?Ht${yOyl!EVuNXtpP27M+? z@A@)q_lJ320Q*zz^SqNkz+;1C6CnXH!z%yB&ZLe858>!0reL9TJGP!YeM&0fzESm* zJ%vEIzA-?5DGxO)SRgXHLN*s=B$=trMox<=0b4N8|l`EWjJ@3 z$W18uDt;D$hSq+B-6R238R=jsQ$$c6cdXO@6m`O*b=>T67uYfZ$hUkhZ?;!oD)L2R zHU#hKea%IH^9+~guP=TlF~Bh0+}|YI&67WHCpQzX=CIt{A2W|YRHW3^GQNs065vWClNbYG z=9)cI(_HlzrZ%iWs0ETbNDaV3D_oD=DOr5Dsd_VxWWMH~M%$G`-fZH@qaaW@yPBYX z`CqYICxp2HX`J0aKSY$4+s;S76g={w%y3z)7>5h6dNbPMsA+&$?m`k>4V#d3ED2c! ztW()C0m5qKM+79x`7_h{$%r^*oL*b6Cmik`lg>cuF#k#y)jD$9@{?x;f^E0=Ty?UW z*2!noX0#sHS9{-w8Eku7fqdP=gIsT|?bz0dv@QVj5-9u1-!-N`^eRFRdo zd@X&m>dT^(4_S5qML@d0!#$^4b06{<&s3J8v{#gTGzblN1oU4c?|KZ|rib1A$H~6> zZ5_?{gJ9b}kc!D!A6yUYp1KJ=pVxuB)@gj@yZ%;BzTYhf)sHcD8ILjGKz$ew*?4aN zAZ0*C;1E?a04^+nansapHUYNK!JX1MVgPd1tDK2slzG8yR4P7WLT3x;YpV$RTnK3t zxKv(^_stfGQEjfK6YUnhSQnp)Qu|-_Llyc*tr%z{eLMsVg-Alk8k9d;QgyIwb$Hu8 z%G~#z7T9&7LCzswsJhPVCG7vZP~P(wR~-v284O zXSA>S`f`YQ=X5d!yBBJ1N_eNwJrTJ=nI$HuQT<9-Ha%NV|3w+HKPZJ_Z+FGFf`rsV zme9Ce#@21!V^mGoer88VBt~xoc_a4L()fF<;hALjWMeo_^-K@b<|rx==U%^Z3+>`) zwWFJQA?VF?FVmCA|GJkn%aDV#$ni9*g;D+pmH(s~V5sdHIW3WD1K=rqPhv*4InY_b zk*dY)pqbu`lpu+4lGm*@FTJv&beHrar}jt-xu>TuYA$0b8>b7p$k(vfcY9@TI2rQm zA`FrN;kZzz#;}@)c4Z`HiZgBw0+RK`rjQGA8=67QuraTGc$mxuuMQ_O_BnryDpb9b z@=mT&wTbn|vPM1PfDEvL6ssv~?lumZ?W3G$uB~&ZRcEF9?qQCybt!r`&X+g)zF~uXZPGmjSF7Rt=xnZS_$w$Z3B|QU1_b3{w zJQ0I|QG6Xw*qvJi=MPYzC8qerFx z!}?j0g_f+7x4Rqyp&S@WWy;!p5t&6qod~-=QaMAk90AySeO+f;I>180$u`~eWv2oM zF%&*hfOaX2R9Cvh`Mqq`*CcI zjp8FKTj}-+axPermKMJ8iWGF2#u<-apea1x)+-zFw|Lm~OXET- za9eZ=#JAVV=``jQYn(NuBsA(F-Zd;1{nK2TAV6wg2UZWLFH&*wJ1p!nP7(?yD zK9o8$S$>RjE@Yzj5snJVtIOJt!R;haU#AeDd}A~_Cl%my=|nU)Mrr5?DpRmww|P4U zRGd23qqqan-59zJIMtcRx;2*5t~1_=h0*rXOk*shgl5K~Yc7pXo)H|KD(q(IT`#Sj zjR0H_xtXP|2E}dveowHV;umuYDxVN*nCYT`8uQbd4m^_1vg{H3OgZj`gjVm#^w?7h zZPAhJ>PLtZtaMtdPMDZ4)zD?B;sb&hK(e2*1J4h?#16rM;Q)*fAYiDOghd^y-0#0@ zyT_{lvsNRJY8Xr!2_V6d^rF$ZGEmIHgPO{rCLK&7!yl^AGFPRgbz(6rMeCHLnbxu7 z2s&u+tb+?m2JR4m0Bv^d%yuMqUC6sH{;4fjhS){ za~t_&ZDgP%wZCo@D+}G!f9`Y^E3d;^j6?_(ue;0ik3^i#KQQ2D%&OfSC3vA4kbsj{ z@rnt<3S#(neQKYf)W6USybBFr{TQuYHE$3poK(E{qQ_`#!(;*!cha1a8qjL%eYw5@ zr#v}m3M0W0X<1BWPXcQ7E#=Z4;{=Lr!FLzxWEVj#pd0gmI=iIea;~?In=^R$zH2%% zZm7BfN?fc2Pkin4~=MMjV-&o4U?FHCkL(y79sKr904T_yKmCVJ!)-y5&M{YMX z-oimS)xWfFop`6A#f2f?8BW{VNufsmBFpKjPgrRb*#effCo=_mwoiYKT_=~*Gc<_^ zO8i{?LmLKY6DJ1C{oqzr2SI(&1Q{312QrI$iagiYjNRQCy^@IePa~QP~ttR1c)JarU4M{A1rX;AWBR_ z^DX>3^=6Y{Zh8jslT=VWIw6W3z>|*6>%xRV=k1~MtBH-&Tj_XKH7mX{`Qgyz9tcv6 z@I8QF$iPZKE;SBn+niy#vvlbA9_{nlM&fqzJ{4bOFV&bx=*n!N^^UWd($xxZ%cnky zJQNQj)Z`&F6?B&h{D~tP&*vMbR~FNDBO|$HUGzV1jTw4KGcmS6L0PmkG6yE908I@2 zm5SzdPzN~5*>`oxvt3x?AxH6cnE@{yN4#&YTuDhS70ObaGS8hR!t}CNAp3m0Ll?15 zUWc7AHzCTqW*S2h*GMHAaBqh~$DgV0xBk~at2+nh<} zq_mK(_P?Wd-x~6Zzor{`_qQ2pDdK8= zgdfzCM8BIJ-C!2ogqtBpf?&?2x850TU}L}@%n^}T*X+7R$UcAJM#zr@a%1yA7 zgk8}x!M?8^!c|z_k+g$oYHBCM<&FKvdt@?4J!GY4b?Z}LU3!)IgnKBJj^en*Xx#Y- z4pDfebJ9lNX}icwhnM$*o*j6iks6;1C}ad^I!9}9a%d!y_*ix=gP&Rgo^r&~4} zDryFDkd2E9mg_y~c~yE77E?0`GC_mcpm2?(lz$;a9Jh8#KTBnY(GFG9B%6ovi&&*l z|7)m>vX8Pzvbs&)d^4kR+4`$kgC4Uim=6!>srn|Wyc`D*Y`QA6`ddM*`i)JM(O)lE3f8DURH967t4o2c3UFJ^uT`eN5W zv|1mc`(t_sfvaXsg7ku5Y2Vo%4a?&_SfR;@H7v90qM>O)Ch>XJf6Q#kL~OB?4uEQB z6Y`E$pb%U>A@&eZ_Cs2~q*wY=A)VDtCW>u4TUdtSWa$eVV*FdMl~?k1UA=Yo7lH^h z!>u5OKtQ7-NP5PKMiSnrDPNPdk<11_Z`h6@SeUnGftj3ME+3DR(E!(qNX$#?w({WN zglLIEJ2SO&@Aq+hlr^QjjSa^TXCFJqCFHa0X&$BmzohnA7mCid*eO6~g5@)w)I%?D zhx1^5S4D^FI^ZcdL9)X9>>Y+!o}YsEw3@=8x04R1xA7ACn8$2Z{(j-s zW{?eR5$MqIV>4v6dKqKty|a?0!UZ@V7-upHpk(}f4b2YtGQwY~ar-7v&t#9c;J$W` zx~U3CU|;VSE%Mz>QtFxusrMt>s*5*vFT4MBBt9eiHJq17Voc(Eeo_a@`PhYsrE(K; z47cFCEta;rPb(NXU-E$$LE9Yyd0O%x5v);31*4H18!m!V21T659Hl!AO}xlO&jPCz zM&ghdi7*8~G=~Nlc)9DD>nj0Wl|WVw9u>dj^9p&zVuM6UZb?aju77gHmb=n{U&k5U zB|bEdd$mfqrPTD5&HiMYgC9#uzt5qkC+eZ`swa{<1XWg9Z1#*_uv- z%KJH-&e;(VrggJ(11)rliSDff(7j*LL*XXS33b~2BbD>SlWQ}uym&NGvumVHn`LAy zrvwrDDW!0MG}%pIWi@z63bl+AB5gTp<^gX07}3~g3I++;8BEM@S#_bED1tW*NMH$v zIj($h7_L7@$bY7A$;lXv?EPBQYPQi?wR+u|ufKsA8R^{!Ws%g4vC!Z9#gByafw-}q zo+0@YSAsroQR>db^Xqqi{TwQ_TdyK+{`DX#6|KzE{zuJHe5k=Oav{?OLohb4jmQxo z82}fgTC$G_4)Uy8gE9cg=8zBwRw46F1{+&V-HOKL->3+PALN0F_Qe39>3tf=LlRc! zl&H{C)B@233QRE=u3^N7@fd}_S>JSd1 zM5v@gLfd)(t+z10?MnU-92u>t|K*QrxcCE6I02nG&^|1mhCZ3xA4}r2e z0@2LFtzb3WmETjn8GhL<7?+?)!+@?%T;<|N)Xj&(mmhOHDT(s8kFx;aynmiNCuHeW z6JQv@ocnSvUGQn=+l%VW)m~#eeU2J{EC?yS8mN88t_%W7E1_~=fM`^x_#xtEXO^L! zaa{*mHld;{HXtl<_GjSV^(3&onat$fjHhdN03ouRb%ujkx)M^V&qt5tStG&ZS*bXn&SGu)((bK{tJ8o|cL_E%hrpEpwP_vW04F~Nq z*^>{|qHrfXKO1f3ZIU&Wftl7gCz=G_gd?I8q;SpvHhs1tf>EsWb zxMGU5mNZS{Ai~5cw;1g?mUF5sL-z1(3|e(*n0mFyLR`}D5*W5DKbvdl$9D*RRAO|& z&%*Ga79ZOY6Y~BWJp3Q*bp~yP<5K{BN&HwApd64Rk!O(XFsVQR$SdU9jUxX4;G1?v z1?=nKtFX%$;W#r*p}9V`a?AtQqXsys^YLVEEjD!+4KzuMuM&)cs4fq6EOPmYv@!v~ z>iqAiNShLYa{4*3VYqHI+8nnBPXNUMA;?87OP;6fT6_Z>Kr9f6NFVe2PI>blC`^XU zxbDAMXb1<&O`_zi=k_tUhOi6gP~F|J$lO*wmMAdBA0 zg0b3~;#b=|I8Z_rX4T8~nnoIt>54SqZYZ(}(+XN<3f-8H1Uwre6sRNx8KTsiZv zSlmkTedO?&5-Gz*4sd?v(Qp7nF)L_oApAUMb{bR;rgDghs2KD&wB<>YC_c|8N=^M1Wi(${CaJCv$kf^{EIVvmsrb&I&L~-s zMPcsOF4p~(h~sJx0PaDi6eobH973|eWE1p+=Ia@vtNqnr<8!{i|+!T;VKaKOLAim*V{O| zAs&^F{Hui{;tU$^#i!&LBnz^O^-Sa;aGMe4kEEhiKf&q{qK`j5l(iw6%B}u#ng_!5 z1SHQhfcfS_(?bqrk(<;f7h#2$Z^1E=mBehR3Q?_BI@od32pc!oo4R-YG)=Z)j3^(~ zrp2N459ROT!+V!u<*&u5_v~B_FY@W1`zZYb3!wx6kkQ9<%h~L?VGY@Hv$7E4sbdq{^(QnH|N504wf#xmBYN?=Aruox#o{)C_Hv z4ST4?7!T}qQMX5m1PlOXQsgaag)0VEQF0>EQNXL+mhE0*mAM#Mso z4hV>F9OAj{xKN-0l5?Yw&fJaQh9IS5f68^ zT64#1n0}994FAMt)C3Je*LR&#RNu6IQk&MrKw+Y;to+bwy1fo&wRe$dq52E_I|pv( zs?6|#DE#ZOZp_&FM9P!VDnCD_T9??evRr57a3Q^Qy#LA@_Ha#q4r`yfc92eQK zo)T4zsrjr^A06%nTRpD{wjjcM+SPX`h+u6wN8a4L(*RFBM$Yf%zzWXCxMRNtEZWZ~ z4L@0pAC~(vDiz9sdIR!KUHUE~-MA48UuZG3x(Hyq(71r#%Hhsw0W!`!G0WXdk z0ZCy?6)A1%4yRB%c{qn$zN?>b|8DVBp>%jL_!2;S{TbnT^w| zFSML7lO6W7ohUr^nvSr(4}~M+GGd!6po(4xm*L<~7ii)B z3@S=p3so){sxB_wUDmhxR}AUxYy%y0vqmeHxFz;WJ@?^o=X;%A_QY&``#Pn{_h}QV zk-Lv0esoY_hxxnHhkei zs%MUuM{3$|xiUNJcbn{PDh}HG21&~2yOX;7AVdj+7{G)PpjBZ8NCI%6SOt&}f;23E zkVXu^G6#9R*;B3FTX{0@y=aei4XQcW-%DpR2aj|KNtqZhW=3R<1`R-=nVAv{d3Kid zKz#%$-YXDoUh#CdAHZF+mF_!-DAsW9pMG#pokye^Z*_wySBBPDYR~{7WF^jG|338M z1_a+^XuRxL?DcHO0sCngI?&zQeF4TcM|G~wKW5E{G;+*eexJ_gO~TGn6t!oGDvAem za6Y{^%_j0#OM@^C(82+GGVpK5_t`+(Fn#UI)u=v(M>fUCzHYlw+e<^a04`?)W35rTL5C(& z@wLB2W^?~i8-PF7Q)YQAuOTTY;=gh985UwxN&cLIT}GG8Km;wtO54F03;hO^&j9f^ zO(9y42A&0&zY5Vjpjo8!zLwOzf;;F|57`ZN{eE6D-a=`Nhx4-h=v*8jUbL(z-bQ?b ztVoba4|xh=QLPirpCWqwsR>&)0x2k@ak!`8KZ09QP~dN}9IcT%smTnWY89?)t&=rx znM&7x(-WB27(e8G!S=NeO>Y~S4$1cOEtnYC#K3qy7Q#&<_CW%lxi0XscSSGWywA7rim_9gEevHb^ZbF}4dvrv>{lSn% z@2`3~y#vW-BK13?uFmG{BATuYiq?$5>57ff&{zHF{5^IAG!U=U`K5DG_ugpacP?yz zNIqsb8)f3q)r1Lq<8eobV;C65(ApH|huCg|T>GduiQOF%(t6VSdSBgHAlYxzR@*{U%cikPAvb}f6E|GVpdlS5Ca4Nk(r*Flb7K;{3MQsUSFy=J;WX%!GbD0+R9wS zA%f^wabpS`7=V*SRK8w-!Im4eJAH$j_@LZW`&H`d2i|tRn?bcUlMeqZ`JkiGXd0u**rGm9) z5a&blyEOy@a70clbJ8R%;1L9@XNwyG^E16#34mD0%z>Bz21}U$gK88&1VZ=aeaD_F zB-Wy>DyenN{`~ci4$aOeG>kH8WwJc|^R0C1E<_#-6fpu2yPVEKs81*6W6xR@UpmPZ_(h}uEjqidcFXKLN|PSWwS$i$6miy=CP4NXNK?`f`Lj%0hqo{#gCD@ z!vZ1_0EmR)YKR#Ec%-GY1d|9*z=?Ns0sw3r@#$C)Xl7>Wxj{KBQw9hT2CA|kz*A}t zW#m)>18P7@W1d4GG5`VuAAyi;L;wz|f(2YQK*=v@NFyU6aAZg@2q*vyMkT_|KoB4n zA_L51XZY#6)AZ1vtT#XTXRRKB1Mw^JX-H_?$izLHYxIXLjl*d#;nrGcvl#nJx`xR+ zUo(Rpj9ZgG2J7Y5=8-P!9L|wX!N_7x&gL8A0N$3_G3`^0-oN$nO*K21iSDOQ#UeYm zv7H@bl4IrRLSb6f$qWiYOlF)kh0FqsN!RVO?7#)q7qyns_G;y0VUU@nNfP0LGRu3_ zwCigCNciWWJR#UX#g9s?KEDSmhZj4~!toQ#Z!-kv5W>y@kbqFlL*lplaUcV{kNpH={ zB2HRn7^Y8tiH7$j&&#lRFGt>lnKR zaU|kMur=;|fAjWzi~Gi%MrHZ+e2E!vEr;G_F07CphlrcH^#ySO#aMrhN?c=;a)Zg) z1=SCKT_LSSScQrCNQF5w%pieV;yL2aw9%@OaV_EBm(Xg}RvR_T`JW@#O=4ZStgQqK zJ~;C<+^Ma1{>1O`Fnfl{+id71??QP!14o18cIf*wHq(Eyamy(5Eown z>W@a7D#kOa8e^MR{tM6fUI_qKpaJ4gM}0y8r>erizph(rv$NC?$dB%j^l@%C zhvOgvf1~vq5Z$#c7=T?@q4?i_EdFeV>b3UII`|SD$dx`92EgaRH zZdEcDqST{H7rC|#Kj~pC=-f@U<)xQ+L=vckzjs3GxJEbtG&uVFbUG#A01+q=eianV z-6ksC)1r(MwJACS96?g3=J`@wI}L4%_JKG*Dk4BIV93bG#Bf1?Wm&F2CO7@LRi1AJ zQfUwYfRh&?xPsm8@!$InrrV)?ORa?xUtf(qlLiFy50>3uQSJ#FPwxm=$1Y8+?cJ@%W6| z37rvr+_wuQnf1TJF`q+abSX^}J;v$}n;;(yQp2=nFWX++Q?d~sBvsP^O{UQ#xZujY zIA#gS@R|V+`p;GI9PJ};S9Bu>>{kyT0dr=z$-CkTK>oQ#l1%X`+55@CY`GOy2Wa2> z4u*^$MoH7eg}bI(aS>cc7=zF3YCm)}j6>ycfa$C!08!QXcO`L{*pZAjyFo()pk-U; z4}|)n%s9Nj(!FD1&7QPHm6IRk2C9!hMmraT6Ew*!f{p>w#vFr#It6-g^Yjpaw8+PQ zlp;VR1!m-?Ky=a!3&eg>zZr!&3P) z5-e=!7CQToai!s~aCODfdh5oPrL6p3`o92kqZdo2+Sa0e{hCz-8R^JxDSRq|fg>!q03+09 zozsy1j~e8v{bRgV$2FF940E(Z*aFLHHe{U~0Shg7v5e=Q*p4_cbPr}&q!pW9EY3@%=$YBly zJfKo@oNhrjAVkmv1Q;<2fPh41gEROUC`Js3OCbaZ%~eSyPeLM13K9Yc$O8rli9;fH zc@nNg$KvrHZW$QMmd;s*hIj`{b%;{aP6QYW&+Hzqi?! z4sj|iUeP)8k*xrxNf^+;Ml;%!m=T*rt`1AwjNK%m|1iUc0R0|0uEncml03)nbns)J z$47l7;8R)F0&xlm%uFr%G()?J!4?pk-2!i=3b&wPfGwW_$BP1TLV1?OQ395tv!SuX z3^vCecGsz|w6pbQ(R!zWc`s92(`GZx^*-XOfU;q8!N4mGD5Ry!(cINFo_abpJ_{vb zxZKH({S;ea=ZVr{`5cos?10*V0~7~-$`6Dj?VAN{pw&SYB^?fOi=P!V{V zoE{VC&ZVB_VM0Y5{&Wd(_w@6TW${@V6s=T-)~yM#+x_X*w@Bx_9)j6q_t%`+o(`2y z)!9oE%kJ2RplXVXA1Dc*-E*#FDOrCl?YXQ;XtEBi*aQI@gYF5UD*I z@WP*q25@WcK^q*lg7tPKve~ETR+qEe+~vI&SK0mt@T0B&$j@|jNRjUa zKyB%XD_Q2BP%ayA?e!=>VF!>TNPaDxAwJj2vhQX4=EB=0k!dM`T<5Fa)VHjx%^m+3 zSab#5bL<_TK1h4=YBrl|)efc`W?imD#8*oS$*h(nIx|z5rgkNHcVJ)mPawgAmCr~` zfe-QDY~{XztUSg7|LW@R;&b}AjMq~C8p@~NkbV;rtq`0MaoOAOqpV1d>MZj1an!5G%MKK`ntm5F-l^BEh(r9GqA34}D05 zWVO^Ko9cwDjE+lsn%V{iyfeekTQ3)V=GPP z!&hPx{lw>L4-Z+?;Mbqc^btqJ3W*-H9VpY?e{QwJe&fCz+|o{PsJgRc)mWU@1)xR; zTt|c+9`4U7^laB2O%-I5YGIQuaKlg+RFfiXcjCA>1Odo1>R1vqxely%+%@5W6_wiX zgoiZTCb^OeKk6BgiPueDaB`am)~SdeL!e)Wlvtbahh;_@$fVRX-w5mSqoea&hm1uG zH|qLywU@ZEMcX@b=XWbFD>eH$yu$ZGao#-Gf#Ak zy{ZKK!cImJpfX4;SgLIP+;opci1yvr)iakFgJe?#_OzBH#kVPqHxCu z7T|_Z=Fa@3%P?>Ofr1=4Fkrw47*pLgQU-JLWC*MfQblakieI9=bcLE@Qe)Ku$EMoJ zY}+$RTBI}BCd}GyYb^oX$U?aShPUT;IiLaTBehjSl4rLXAHLr4@G+DtqeI{BPu68{^rr;{MmU`iUf|KKVI zaG#gp>${`Im|A8x_Js9Q%SRFK9ISWR{(8Mf_F2Q=RrB#x)O^)ppN`~~2D$hI2)8kRHjb^~`5}{8q-&y%W0hT;v`|)bBB#Zg7tNVLh3 z6KKFdKA?tH_y7)IC0Q~QQ0w>vl(BA0#HfQeZ$n&yG-KQ|ln${cpTu&(YD&Rv)RO3BnKoALY6y{N0PQ5!@X)?j3!E zhiL6Hxc=Z*j~PYP{>=xbZ*z3VdJLH}+aEdVQKK^CBjI_DkrlOMMlsZ*jT)hQmY4C! z{7{0a)5%Rs=&H7HdJGUE3lINbhk@HRRMI~_(bn%;sSrElPLybcd2w+zi5M6O3i;g^ zL|+teqqfIOQX8p(igv)%jLnYZHJJeDKTxEOXi#;f-{#LcPKsLXQ=l4? z3Ghv?%}_B>izsjl3$Gst0(Raks>lAY>+9gbqGCu*EQhDlS%fDgkhv9=FJ}|EgC2L7 zz9=IY+@YQeC;?C6f-e0P(7h1$nS9asQNtz1(*&GY(l~N~)a3z2sBTFj)n|TZLe018 z|9JDw-uBjd2w}_tdL5@orO^oB{v_kmaI4reZIf;(#CT_OTvW?0)#BwyMBE!+82Ad2 zZCQ~IK9>);|Fl4U>*UF|o9=-II|uHl;kS1-LJqx>tgUBYO2ZVi%!18#V(o!?uX4_k zoWo^FB2gsN@k@mB^i@*=?W9g$~8G;hHr zH?J7JunNrr?dSX=1P1PvPejgso?*;dCkJ)^<+yNeMlAy%Iin~}&+{@+&@dUA5 z*GVrY55xhv2O4YxEQ$sA+l)Qy6Or6NUu6%{%yk>@9LrK3-s$yvi$37*$< zh&&$-PF1;;)On`R)n|U!J=YB)B7}-d)Y+C)mYQ_os4~^t7h^RvGuWPh^HuHdRtc#9 zu!{93fo2@cOUSYVb*`FU%AfP-(#`1#N8NCyApB}t0RmDx8hb+Gg!+#Or80iCSW|j- zu-6s~gck0&>>bZ};L*pe(Mxx#3amHqwMB#I-6&m3>AU7RjCc5{z@Vl);Ff2NP{3UR z_>sBv_eV$so?I#c^TLg&Cvh#RRDi#?@5$U+S8QCY_wGpbKXwEouQJ|RImJ8`+McM} zs0%F5Zxo7T+R0-{{13FI{_S86K3ydaV-5P@WT@7lI_W&*=r3GkC>yS_iPw3z2{Js4 zX9gzsCckJqh04der}Sm|Hc+G&KB}nPuvtM8fDQtTIeF^hw`Z!YcL|!Xc9fc;E?d0+ zLija8W`A>=?E50yW^H{uw*Ec&^1&`B@-A}acdNE$7gNxBP-@!nzVWV|iI<9GFbTK&gk3|@7-yjwtJ4`R8M+AH#F=!$ zyUrS3f!HXqF~VC4hwzn5mA)AqLD9%Y7^GGb9&u|>rjb7HJKp9t^TQV63 z=2?gzjpFM-S+K%bbMM)pB|;*IVLDLjvWr??=W=9rck*xc}`Ok zi+N{rr9~r-(xeA%d@>b2^%mQemR$1CRa1cevUl7ruY<61s?Sn;Sc>QXBdI80DT_ed zfFMACXRjtOd=x|7!DVW-JvTKOd@p+!mUZ6zQV4?{$_NehfKAgWaBej2uGc)Kimm9m z1k6`mY}u*JsfBMHx~Ioa=~8nYHBbj{xA;0zhbEUKi{L}#Xw}>=2e&r6oR2C*NlcY& z7?A}$?DAcMB5yeATJoE>;kVt*dZEV=^JWagCi7SkkEMqtD=5SsC{BbWJEb}xSn5XzH}}w z!S)!)z_%1yocZn=?%hUZb16=I8e7y*KjH`W3Mg%n`SiI*kQ2 zI9zsrB6QG5EWv{z&D-kTh~3de^WuQo_`e*DP}OIvu5kcbJ^ z*%nTyhrhV~_n zAJR9s*b!d!@McF8;6NsLMQ2>G;J}$jfCmA=Dm6$(GA|;84FesmFOua2Q?*QqY94A| zw1fGTHQ+n$b}V%$D_~jy$_M}q3z7lpD`xnwy*dB9)Qa6{QdIZI9KeSWbL&RUR%GNC1?;vCLVPN~6r`X{Wr-Ch2i8 z>?8;vfP@$e^(-a+UfU_jwi-Hc>bc&mP%%8V6w6DCOYyVH{kS~ZjIDY9UM$==JaB|G z2ZKNX0R~|xK^bh3X5Bnf_*r{?(}L~7?D42kQKAPY@lDf0-tqhxMgjHJ_2KakPo;3M z`OPLY|5;{u>cC$ae*SO!fTIRzOR`IQ@N}dsId;e*8?8O0_k0h^_lw5|K^+9Y6hV^j z9CH6Id+LRwm+K<@AM+M(B`|&W5OzeVw7?SDD04yIvu@$)tven&5>=fLIg{ZCR`X6qNS1VleYXa)ZQ-bPmec9#=$ppTi6 zkr5e~kwKdhN-3!c29N=n0BQXYBDatt^8?#1u_ORRj4~i*WC$4m0gwhjJsA$?{KFG> z79kwPAO!DUI`WoIu0ImMgP|E1Fdz{2KM|G})b4ECFhmjP`8+;?@SGeVK>>;K-LQpu{ zzKpiNx$-5!TJq(z~d#gR-eYgYZ zA_jRVA^~Jz;%2R-zMR_nTREzG6017tJvdaqs}?r0X^wU%m;Q?zw??;aPfL#KtW~*c zBVwa;wazA=DtkQq4p^w6dZLt+wPcN%C$nW94qCmxzm!eIuUEhk{5HC9mG_%S8=)Mq zrWN)ak20il-5D~R(*C=B@<7+NQbcy_b-in&fr%H;640y5=!`BRU7~J5lwWfJ7ge9G zoCG!chChvE>bXGj_wnMUOGtX0^GG4t30(Y7L69jVYrYIr{K_x>ro?j&tn*&ms! zki)H};Ldbl^dHJ!_TzxB^g^GtZLYS_P_~Wi*f1Wg3O@bXU2PsrjBJ#?o&R5fFc4rF zf-*L+IC}mnvd;tWwm@n1bg!r55tT7T)Hb*G^$$7DhlV7^qtGNE)0nBFk>n%O*Jz^N z0awO=sKTkWt8~q7&`N59OFAatUD<@0c95!CuFtD?+Wc->z82JO9@{GBOXC?@`FrI% zKU?uhR;nbFPmPX5`Y~UL5#F`d4D?clqM`gy=PW{I96a@IDTQnj;AyB{=vtrUCSk!w z!a_ln@!<*19Pa#@?cawHh5YjOSX!<7vX z0qr1<4vcLgWz%b>g?Km_pP%-Q^%gb)?ViZKy34}zxtSgWm(`LhUC1nT%PrqKy0-0f zpJIiVRA)?#$QUq2MhqD|cP!h?FePR41P0EfOqw9*P-HBaEL5W2Y&6dbeVmClV@*}9 zce%{lGH}!S=XHPIM9kt&A3$KF2yj6ei71`WUhV&VBuMB31I?qiUp5y(+@ z29zzugTfcXKsLUHr1z4cQm566l6zoKB3IT>o1#)mye+r7$tEvpM$qef%P&ZkA$vii zkr|dt9dt=dH%H7Tub4W>tNOyeN<5DU@IABR7#b@Bym`gPHW^G|A{$l>9^rLnZD$_c z?RXDvBY8buChQn0MuTfY)^^Uyj!*Hf$62~C{h3*)*7rh<|slr zvB!AX0@4MX`*jkMjklR^ouY3yd0*I}@etW}QHGQZXk0-BYldGooM0q&T(vq*@Q68P zlaZIV)T~D!8qHHEDM)v{s%MVI7#I8Gn8sLk@TOF4mqf7Bwis|f6O>SYdEns#f-}ty z7q^wD`}|=eMybyi^c%@$T&RMREtv&cz5Mlnw8xK?|Ix+Y2R=Go5$rLmv3cVpOSl_R zkKCM|OGd~49`^$d=t&knYFD8E#-?VFEq!Q010@9vbiTsMHuuK<^D*FR+WY2>bXUO; zs}z{t;%B|2TZ5qcAwIC>>5J0)$^mf-u8+bN#R>^!_j)NXba0i&RcOIPD9=;E)G)EM z_liI2Z+za_lzbnokbOXoG@v&(ES}{cYH9Z?^0nQ`v4Y0h>+LARHEm5|?KX-3Z;O>l zgM0dBwF*3Jvc`cW8onb}J~Bczg!Owh|M-A1VsLb%^G%CVIwo+Qvt%1>+U$zfH4J0c zd?8yZj}O<8W?1Qa7()W^+96K}>O}aj!a9SU!v!caKfUTX#2pef&dWFX5Fz`qKO|IT z;y93k@oS2kZ(2YU{ER^h!_AI#nWf|Z;y^7m2-+&7_^~J8Qr31w%|Er%IV@)^|AhDEIA5AZPSOwKZHL4im<)cDp^z<->OR))niF(UH9 z(Wgjd+M~@{aKs{P9DB;JD?$DMK=m|JWC#L?Ms7zS8SC4`Fbu)`*seVdZr=H126Fi4 zRxAToy4z2eD&vr(xjGPjs|5mz0|_J<0!m3Ff;1rnY0Ds#A&WE&-H3>m|Fmn(Grs33 zIxWjOTWrql^9JVV4^ak_8fyF=(f{~=N~OP@s-5cgxb1NM_oqPYU>GtXWCm4nf=8gr zwq!sT`is4@Z5h+vclXtoF*x7H@Uq&Gbv+B@!n{3`_!DOy@3!vt#NOrwc+PyoFIrK~MVMDq8=W_eL6kgU8z|pw z*W`_`;*yN5ekjWmZUO8Y=GR~s%(KmAGB)(#7*CV3VEfmyBRfMBNH{@v|3BP>#XG9D zL>QEC$MIOAyB{?ii)Nn=|3XuSoTK!ftP`h}!ewzXeU|n#ymT0dde#5pXl2|Dcf2#`A?x>7B$Mk1i3{MJL~Z>Wj z=HWh+W`1B2WgwC^65$G7wyx(gRGFp<6XrZtE-D>=`- z9XC!p`r%m)DFvEVb*y*0IBQa5D>kE0y} zL)Zi+;+!9Gl_GAc(4Yz?r=Df5De32C;AD?iyV-kP4EPW^VG8toQ6pN8i(^(J3m_&y zl=PAVV3y4kWE`;hIuRg{JrNRAhe3lhgqO(|dlKg9Of=Z2BLGK0xWAk>+1jcU;S5tt zAND4!b z@UQLGm2hheLsUji-6wlbJE+w~+jEe-UXai^78DGTEG6 z^y}-57|;j+<^Tk+52XMay%<$;2|Rb@#7T}CkxwDu?iU8N7A+=PXS1Knbl}c0%DGoK z5vuz+pYN3#nT)SWO^?mq4z#8^8i{LCI|&Tp>nzX61gn9@tNPG-JcmW+ncVs>@jzDA=8=t`8B9dP}-FPa})(WQvqqsaKKZNZFnB`tkcmUpiJKekS@MV z!t?>oy>j#?sZS3;H8kt2o;azHfmz*hB{(Z2_+`7xFFtMSr24Z8#=yt~1|ZVGiU2(d z=y{$fbPL=fdDqMcACC6+`-=obFdDwN1mV#Em&aS$Cf26+uK)t@r)nc^}L?C@)P(3+E2S8 zL5@L(GqNLLvOYI&`aR%)F6jU*SZ7WxS!jo+=AeU6WQ%&wU zV}=!FU}0G0aes+zr|2&`w-`aWa%77weLw{q*lDU(swacmq;OzVUDUuiUY+wpDldho z>iiyJ+u&MIiH#K1n;)6_(HVebh12X57&6@Wex}v{qX@+YDV>sB_yTS>pN%`j$~ZBZ zARoeLbLy!WK?E9O%|pnP6DQ*Bj06UbHV6?Z&%`U@P`x6pRS63y{r#CD5K|$dIT|eX zJmdOAVL%>zLVb3aumLDOwAPK9BUa1ECVk?0n=g_~i+@Wq{cvtECeV4_4U1H6T$U0H z!OZS@ep_KG-2vgXw?R*C2Nd;}|2OrzTQUc`yH-hij8;b*Q@Kz&QS=Ws0!;3_jR(1O zq5Hu_KsZzmlSGm(C>omI{mmcu-*&@>yu&ecHHxGO{1XFm$dgc=I*^dP&Fu%~Td$!m zBp-1Ch8dPlNaB8V9NV$QnnqVPza9guSD7MGP!DxRyV9`Lk|*CC=Di77kND#VW>mu^ z7&nzv)D)C-R*l0^CLtRgY+RT)HADwnLlOfRx{e1Z@&F)ZkQKID=zzc|5A2w9b=@J9 z_pnm}hy}dr+MskqNu!q&&X|O?hw%R7`f0xIgppbA%HHlRa_kC*s zp=dB28ortfwvEraN~w)5`)L+qDFqf*@7v#*T*~;Hb#&PA>C{U)0*$OaHmSyV z^mQ)$EEcg!DTMX#V8Kijpmvi-nFh;GsPO2&T-~=7&UQDjxz$!@u9yywfc|6vmA^S- zAw9bo1a~0q1zQaS3jmN|FO6q0Vbw44Zifl=L+(zzQPLOrtO}4_V{AjTgS_37=%b_7_wSNRVE6{ zhG%IfhIX~9g~MD0Z#MgWWO}OmV~*YbNA&5A7MqtDggR5^_{}(*LsD50|a3#Cg-+}J#URC35m|8aC#>lZTD zZFwRBqGT$U?+5xEJ@*Ev1HhpvL7Ge?&oWPSMuGsy0k(`OFxJu;FdbGy%IXoSk=#;y z?qEUjL|%h5^A6*or=`$LyyLNYr-~6Wl1ih9CMZj|?0V^OfrryF@6KOn=WyDiG6;pN z??yAHXXjiJbMnEFUiM&I0Tq+95#)Rn0l^#Wa4_Kl5FjB~U&4cIA%G4_b6P1(OvrG` z7FmR|3Tc4$`}h0a6E^sn;eT%um~2$0Jl3G@N{|zLp4Lnb+s1LPyA%7`4A)9 zej}v$TIymoV+ju?^sR*CI-)!rwaIimcH)Q$4nbJh6frGQV_y98vnE_#kuT!uQ39=D zst#`z#gq~><3uIj6YV7iRlEL`uwDHPk2+%_yonEvrCDDBp1Nyh&<<1jAahh=I$ipo zCeJk13Q9F`R2wc%@`2_KR`+;NUs}il9YESo8-(ZPr|E&lD!gMnNSACjE^#E15{iY{ zWo5ZzSW;?oakyL<7DSGV#PuEUu?Fv+iL3;z`E+Jtm;At!m6$2@6$mnGN|OIWH!U@H zzeu;m7Al<8^fKZ_X}d|2FKFH&qN^8fgqM>kQT~m)@%F@&YM~)lb2$Oc@69>Ih}az+ z9=Hmm>hJBHeNS%d@>8iidOqR?11DaU0mr|MH=#axdS`Za&~P#rmd&Px3m(g?Z%;EA zC?%n6o*FHL^p9U^^cCvGTn5{QrBXQtJ+u+T7u$@I_Xkuc;M3=rxC1oZih-*ryYaoTiU{+?jy3=y! zd(gLBE<@Ve@rG~E_uFHaB-4o;I^M%x-v`mUuRnW1hW9&WKBZweT^aIVh!M5kT*gdo zF-6G+RqvH-EbfV_`KV(~nC$%eZhmDt$>aW?(Da}Iw>8b6lgs(>OAxMbcmEAx%bIRP zGB?~EQ}~2@=j*F)Y^isOGVwAauDp`sSZ!1Mx%$M(pvGVf0faeaTYC!RQb-mmBAYbn zvV|YbWi!z%Ux!p=+q@2gnH0}ZaR>@@IzU4CiYU;*)p~#QXZW;w{$XY zkGW2!Z}(6uP(K4KXsS>T_*grDSdvf&dqf_dfB~@*ia^3 zHtgC4XLS`|3HH4Cxcl1<#YCEF01r61!1t1fM&bV`5?dz|)xB)b7Ca7>7gaO=l#IFAjz3mM2zt>X3 z#)@Nm7ye&B5!E+(;btqsuj178Iiv3*UX<=0a0bhMjirDqAeIL7?AHdY5}1x>87;}x z-3?DmO2+fk8J6b!+3L`Y_UX3RAVLIhPaT{0oZlqk9}3wdQke=%c!5NW|k3nEuOhxdXGGFe<~*}9W3!w1AC zCSvODX9{7^w0g0Wtc1OsZos33f`M^TV6Rpr1;_W|JE1uTkC#^mbPZ7HI{jrA-9cGw zg4^H5Me~R+9hSn|I#gDomg}_GD9bsXjy=HbxH7X=xIGu+LoDox%_evFdghUO^=FMx zc<8d9S4xAW1+=iy@nR3$jxN@{rCfQZwa|1LX4={G5>xdO*4qEX!^(duB(= zlBISd*Tik{!u@6cKkCL};bnz-o?F@c|JrJ^`pDCHXMVVvKq4VG6bK*zi%3FH0t(uc zB)~vH0zm-_l}J@WB2^&Iqd0-0|BYO4rSTLil)09fGIe@sYfDZaF{v(4V+jMw__ zD#+`EqK$`}oT)jbIK+#Tr&2MuEwb4!ndt+gaM7;%|I(Vj-k??T?Fd6y(0?Tj4Ygst z1T2Q??(`cbWjv+EZA8subR=31o0(2^mD}2EQ$w|0p#W$490@8021GAI<0KFYiTEKx z>2$BwKemJeavcs!pddi6CQ62;gC{f)6{_N)%$)&`C;}v`xB#JHYTyRL=S(ndk3Gy0T($Wj8#knF$!0cCGk>q!wh z851ys3PM>VZ#%s=as{`P1Vk#g`@Lbo7e8P*mq*2i_ReB$*>H1RE`j|`mL6hcfqaQ0X{Tr28paau;I3Z8aa&bi#PK=hFvuRE6ho$ zYT=96za4yly@}!vypGSDjH(?Ro5vdq4PU7-49v@{eCoR=yh~mcRhI92?l}G@JL~bE zX$_mK=QLQk8kH|HXNV(qZj-&TR;WhF!;CaY^4|;i+RsxN3SnE%^4{=_`;WGZItxz%*R@9eV5>SAI83HS0vWQi1 zz`#XWfdV7~Nf9WbJIVln!Bhp*Kr=xsY97neXS3PJ0e5Mws0zm!%Zr%pU-VPZgHiFy zOlrT6#P%Ri3>Y(kGyrBg=m;}{F`(^aH;XS$L@|*WhGaAh@!myMQK&c|V4Hx&`6Ytt zj!uKI6#?P8TN3xw($#OyzKi3hX1##KV_U*+V_;g57z9Q_gvOq8C-bChuON*ss=um2 zpW)(Oa(L!VNq|>B9<9s$TdFv@usfeN7Ht)pCQ|J@}hYS!v21z)`sIj1glf1`fYJ3f~ zC*cKp4hV}Cdzz1^>zH6i^51xa{Py$I+NTBq%$-bu7VyCtQ~{*OFd!{wLPk{d0znWm zFi}G0M8yOE0jmX|L+O#4pb!iQXibMrKE*{EO4rfgR^n=`o!JJY0f6cb^74l<{kss< z7&3zFZgo++D$Bn^MNqo#K{3p$;&3@2Qr-Xwd9>8@xVv97(>cGXTv$f$ap5RjR4dknrlv+jTQ@du)IEAkXS^(DM-TaV~2 z6+%z2I@>^;tAnn+Ni|_f<2*DwA?>Z-*G6wyVcTH(n41t*9713!?)DBT<@v1wFb^Bp z+rQFEwZ>*XP9B4Ua`xKOzG=5qJ7@Q6;1jUwEr*i>mdh^B^$JaIB2Vu8e64R`a04++Hd$qN_+ir+IiRy6>_Xi?y|L;S(XvJXO|P7VGMQ$TButjX*_v$j%4c`@OZvL;l*66YW<8x# zt+K!Q9q`F|Eu}@-r0lYS`dUN{H`M<>FJs;h`~@xl$Ego;#~u=kN)Cp|A=Ya z*EK-Sq_iZxNED9w&yNp%{>%aqYVn9|y{(KEMnBR>3_f$}Y>vvNMr>EK#fgHWRmX$3yFK zJG#b5lW7TI==t?NVDtp&-l85938KOLF~ffXURAQ!xVM0<2OsI@t@!s}Xz;Io+e%e7wlwa{HIcGY_* zWTY>vEu+%OJRt%hyF2yp(AhLS4e`Ed<4WoBbuHRX9FtZ{B3sk-tjX#4=y!>jrev3T ztGp>xe%vs;87VXMY{*;Or#vrxf&@P%7#Lau>w?5G060TeDAHx=H;ZHHvNa0K;R_~n zMuG!gWCP8upBj+sP=n%9@ES~w<38K~#K5>93I{YO$ibFhaj)1^Se6ZPVhD(J8QhWp zP{5FVt+$}`tOk6+1kfrN^Dk>1z=)MF0R>Ef5eDSM7&0OR{CJ~FoE24P@=2S<%kb5rl0gOlpmICZXM zeS4|T@Xyp^FqMcW!v5^% zk=-F+yNK-M<(9R+<-h8BKb&o76;eFeCv`)VHj zOL~G~w&+#bYe8uXVb^xA7)@I>@6FZDWQP2g*HS{o(GHK{-NDb+f>69b(re-#zIhV3 zrIM`vPnL$R&=xs6FpF8%yQ+|iJxZd%T?x^p4 zeSO6+7hvd626*Xb;5AHu80;W5{lkd@Fn?kb(VrTPa-V7d*%wd|v`~K_KOXKSnMsbp z$sc>nuuHkpS_GGqhT=)tKl1N)qdw8Kc)`2gQbqvO5Lhf|=GA1;DTh5;V&yWw>cOA9 z6M~6Ea9V9!Z#xTKf)_Vd?C^IQJiqxxm9RVF>~!WmkTB#3m>~pJ;5CQtPTaM>4PCFD zfZu!-uM!XtL0twU!&|e=QE(Q>hQ!=xdu}qpI+lMv9I@Y4UkQ_2-PKnh?vXnL-&21M zjWB-}3=ugZOq}7sUNgV$9+PesD-67mz3_t*jY^z1{A7SfLq_>uE0hZqh-GHUkBn2&5 zempXMg%NSW6-j$Y2`(sJ3IrB#jE7P%R&?b?Je21tDOn`>}Rgc*L4;d>^aXi@)B9dx^v9nyRhH z?Cf(rkePoN4^+y5woC><+rHQxfjAN+(fkm=BU|R+yzRo{6i*${AVTz{CW6>J?|UI1 zo2b@i2k1affbWN}g+)5YZ7qv6itqs7rSuq4=eyef$&~pRNc%BmWaH-*d716`rq2Z2 zPM;Iq5A(y$j-6hu^4R@ZEIOdf7(88glKWrWMShEsw=c^SY8i*NJFU;aU_oXIo!5z{D zO5+uhG{hJHnb84u4hr~%2_dp862}v7UO39+eS54i?iG&g9xzX;OlQJK`_{PYo6ywD ztr}K_?4DGC3RUdho!y#S-|G6%k4oPvSFyerNSLrBrE7+xtljro;fKm4wall?VMU}w zs)rxaEM51GUgws|$>p%Lk#f=MRzMtc>)v!KEU&EaPx_9rK(FGjBFzzlvr9nt4Y3uO zk#6dE^*z}0H@TbosGA+&cHvEYs;_Cnv^Q?7Ssm%NNfKTLaWl@y9JY3O;0h!CpzmjN zMBwP8!UwwP+h_|~`tzZCl3k@U0U{@Jadr0>j+yTlhM&~F8bP2EmG<3$Zb!pS{k8Y} zZafu&F%NRKjH*T&+@E_RzXNILm^vm_*{4AtL;EanExjM3h=H72t4N;Lhcp%^oADt{7x%wf=O4LO#m&N2%$T1WPkABKqG!LZ8Ka&COK5*s-1`PkAU^*i%xl(LO!2zwGBZlk?AU*N6 zRl&&6+13enPUNVvJL^`$C_q{oFA9xdKC!F!?5y~E-WzLWUdvP69{d?vHQOJ`x_ewr z!Axi>FBRTiT6^J;=MW;GAP1ORp161{3d9Jb0TcnMV89@$?Qv@nk9)&`HZSc)0WqW( zH~a3+p29OehYk>JAv8E4z`gX|7*wf=1nv8>S2P_NMtjr3sgw#USr6xO58cvU{<^tvSq7Qm ztSiZg!=~#k7B|Xz>9ZK}GN1D5CBJQ)s}mr=w)vEI!i(Y>$q#z0)V%RV-#M7^SIWul z6m5E**<8A$dlvl0*b9p#9QwOe?FS^4GmZLJtBf4xityxxE5-N=ng58S1K!6};>7UF^6^*Ifq9erEIzCsa-dpAQ@E3lK+>D9 z`cIf=mOibfiKE`FS02K?pdoAP$gh5pp9bcN8DQou5GsDhV;97&tCE_r$y49vl;iYe z5n>$5ahhzr%AV)3cDCFZ*FR5XvhzL=-)$YPa`U?FlQurOP8t+U!zVFOSl}MNouzyp z=FF#N8TD=JCrU1D&To}9;2Fp&WXJCJq;b<_@-Jh)exvlF;v|x9<7s%amJ+YFjhuo96v8y;4&R*Fxjgs?b=`8p5I^@30#HKbr^K)Cf6?C*$hINEm`iVS` zFB=rq8}2}vXhv-&urp)UVGaoWHOghzg)Ag4|Ek2c$r4#5FhC1^Z!N;PZT^9ShPaoi z2p4(4peoDyS}9h@rYML1myJ=dN{JMn0J(m=oCI=>?|btKenbGlD~I1BbwjAB8)iS{ zp&kJ{F zqZ(Qnl+%?h6g^C6D9c%0r)oMhk(96d3ZkdR65xVzy&SP)R$4JM(w@mwD`A4kYT~r9 zHNi^vj$65WVzX?c6?-R~Y1q-v_akHeRa=b2O`l14J9onQsCZ+*+a3@XA2DfFezUJ; z)7JCCzmW!{!7h&06+u-87;inWN`dhPSnWPxy#E*dkgnF&m7e>Gn_?70Cr}KC8IUp} z_n82K1Yj8NjKTs1=>Y*ypSS=h4h@cDkpp<*P>U>&slFCZs4!k;h125wg{lJ?-5y&D zr=|@cg1*EvY^~vVPX0Wg{XV4FugaSAli9@(aJt*ws{Z633b+2F^y10@Z{zlWsiWWjE!zb z)~$wUo7-X=EP5jt0``PxC}a(mQ(9KBU?ca7C>muNJHGUO3P6YmOS_swZqssLx7*fY zbunn-Y#(0n_$iJ*0-J3qMXm0-UF_tI-F2qM_Bx!T2w}OOh#T7nY4$l|)85dkA{~_% zmE-$g*6nY)Nk+7H&o%4?n7V~9Sa~=+dFeBtSJ6^Y>yMg(J3gIGlK{u>j;V^R?mI11 zE+WY_suC}oqho!7@6l^OOTuEtdul??(xE>FX95+v?XHB6om*GZPR`408gzC z?$+GYAy)R<8wabuV(i|soE+yT?aj`BoCRv80whNC)$xS4A-Id?`e^>>eU&3SnxeY8=(n_ zq{?1{oOM;YCS?+&JA(q3awH5bzT^DH2&qAS z`h6xb!*`*GB^ZRZK>7bSR>#?iL1vcdx^0F{~mk{1*=@z@a|fO4DAJjvRJ*&ODQ4p5i)KFF4BtZkMC5B@yK?19tDTLitxN zKNNAdOj}qgLcTrerVV0hcvdA>$(LsSOXpfWw5;nUISuN zgpw^mi^7YEh*jmWe4c)ibyc0sZr`C`&;tM*K*0t8AjhewsBny64}Pna{FGh-&V3nf z9jwSwV4?D|kMX-onR8jgcl%n$Rbx_3dm?DURP^#O)i~wU;?BWXT(Kft)6Mr3!;iH? z*^lCmTsaE<))jvm`Jc6$C4QkxP4r%_G{J79a{Z z79Y_NlAHMm%cVGdU*m>#Mnde^34JN4kBWuo{k~?h$A~9NA+McINT;&<~t-XGI}K$d?@4={nQ|AK=njL z+3tJ*CQf=d6~PAJIy!W1sJz`w`iLQ+#Y#PTzN!Zt)KBxUe#<4I$oOg61QHZ?IlcIz zfc3XtU2qsxC@RiUAg3QO`q*ZxY8+InGam~t!^myd?G%;V9YiFa2o+>ntan<^qB4eN zK8H)1lksx~qMdrg06&=cDyIW+U+sN=l<*E}!#!i?&LfF!-{kFvF>dCd2dmQoKR1(s zP+f)3|3@WN3Xi$iq*xe2!w^L|_qc_>r?*Ga%8P+&%(LtNY)n9xRJr2Tub!zMU+zrZb&qo{~6lDaFkYEQ2}gWNWVQ_szf} zSu;g-$a@nDm2aR;hBnjZ#r)=tc4za2CNyG0coc$u7m_dzbdsdGYn{o!MAU~OC&vJ9 z4Peb+$I=&SLeZQp;yyM<`^#8zF7mUF7i_Y)8t&A#JuegWcMy0eAO^Ztz^c_d?Rz&d z8ZmB|69WEay6ZBiiX~LP5WJ0N*Nc7)8EXVo{p*U<1ptMJERp3IO#S$8U@1(>A+Tq(4oSQ>u_{IiB1r%Cl1gqApZsMG@!5JetFtio~#E8rurDk&M{>nyhf1X^vkM{ z21kz*6RsYg$xMDmSHq7^kJ3L*=-xRs>ys=-qq)WWs$8wspEL@cTR-ZYGU2n&;;<$+ z%OEoIirgWZ#!2_z88&wX7Lu=>X%+i_vdOMSq)wI2cG3Q7e(t;!gkUxw4cjL-xKzv! zvSiHm=3t_}NJ2mws_AvltG^6L0R9sFgV$vA{Cb119#`Q5B_W*!m#oV!b5pF7HTdJd zDurXuj{h-Yr73q97^R(Bj{F`O8sYjkT@CLxAnK>V0RBEssS0yNex+-j{rUqJ^j*ie zQ)+0P7^2Rl8~nVxw%N~A>a73+2JA~p4RPVf7%l&y0BDc-=*Q9II2Ez4jn_j_^J>MA zf@1SUa1ibO9-b6{eas=CdLMTzYjFUR2JjB>;+D}trBwcb%MaL#frUbtmJqOWDjnvl ze)_DIlZKH$s9llyCY=NI3qxGa-qdwvnwMMmnWx#Ckr_{)Ih!zmb=8}r{YZgPM)vtUG!w`vdP03G=>`r)HwmR64#yYh7Xni`bWsgVDl6k2J3aUFsMmnjz{XE;_q=Rwu z1Q%)?S5Y0Bjs9ltKtjZ7TOZ!Kl%p&pu728JsOD#tnTv?8exc9(JOdy;D2Yj0o4^1w zDT9U#4)mAWdGS5CiOI9)SR}=F#?wy#pOtI%#q;JY{cjxL2guKA!y3+_s6TnL%U$mg zom!A`I#oelNS4h)6#u2GFn8A_{Te+BnyyX1#m?Uvb0|WlcY`Wy3}JCfl*f!BhqxaZ z*~*fV&pT$fN(Q*;G{g8pHmn64N6OqtC4hIi^l4_|q3>7}u_9GIXe!B^{Iv(h&>j`@ zZeCI|O&k3yWgl8!yt$yWG@jF*IybVUjTtFZqLA~VHuwkEg+2(j-iQ#; z)}niO6i|R7b|8K`$oFUS11f=3DQJQSL7;EU(6PYMMa1_%-iIXw2Tt3u79SI5gFHr zCTi>jrS>9=v{ml)jB(~|)rJ<5>QdI^50<@TjXz{#xQCl6V0hc0 z$fcl4cTMpo`s7NttbHxBjjx4U+ep;NCIFh!-nEb(9GN79C6%y9BG~1GeB%U&QIaDDG*g0y{(tYA%go!~9jP#x=Am@zCCl zut@l4NY}SJ*f_*<^!yZPbN9JCN7HTln*s6ix&TESF2rUG8Grz&jXxfpUb%KRK8ikq zx%(MWT16I>F=5(4<*bDnhLd_mHM;$kL4ILQ;1@}H>F)RP1r?U(nChTWoFeHC$}c@i zhbq(!qGazql`F;EGNXU8sclY@uS0}J1-!B^2El#sn4<`MDw^9A7n+P}>gzJnIVSfWNF+hT$wUUr?&d&D-juHcoyJ{BlJCfg zPp&bk9{&m%1<`<^Vuq)*6n+7==jq(^`1PAwY1e>v;vDBR(Eg1^>}%o6DpbZ`yiZsw z>Q3Y@V#)J`a$(3}?9r4F&R#o(gg{&r^Tvnv(tgLgb>1j^W{RqgrID_$>F#uNr<>2$ zU9KEX&vz@TlyV3LppgZtd8v~E3*nBul>@_vmwl;MP1Gipr%V$VuRn>oL!eT(oIms#pP{aW}_(3N@eMthAK=t$2)_(D_N)&5T z<9--qWih2E%9zJ7`z1_wgow&96S7iZHzU9$lE~$He7*wmj$5i>!_p$NZffvYj18Hn zC%+K6K)@KJ9dZ7jq|J`4d17)!@YqP1|LYlhZt=H zcCleaO;s+&cj!mU*z00XFRV(7^t7Gk_}c8#am3(}$flumbczDJ;S5)aGK-3h!*F!8@DLURcWglmjkcjoIWGHK>?T zwetUR11mzG%YtQS4V=Bn?iL~lFs8xGKGN?&OW zbO4ZHLh|^k+b1uR#&URRS>ZlHEKHdF>#`Khw0Dinw*s~Cpp8SRjF02csE$hKrMd41+qs;4}&IB@ro{b1Vt3 zK=NTHC!p3W7is-Ea1y(99{P_Ld-|T1nmVatpQ09Q61ju6q-<*Qe`YnRsGqSM ztNc^@smAl2#fh>CxH>{9(G~&m0|?!hxH8yLa<0OVLI9U<^w)^C>^$TFE-Xu=X@in= zzVn_+VL64ub#YrZk}*U;VO#mDX+w5*k8*lsvQi!*_qxGyDeKxS+fLqIR=H9@Qy0BhvKGR z#Vpk8bZl9oyFKxHSiCHJ}jWxRfa4}ykd?*pdi|*dEdw(ZQ+D9WOoA{|!$t<2-QsSYi+X)Y&hbp%7CyB{GKH8(4 zQwP-E#Sc>H1h?|yBGS77skh30)1xeMA}amXn*b6Wil%@ANK@blA5dg7lMHHQAENn%L2kngx{104@R486Xx0u}Htm)Z6#8OzV$oqulp88;B6n zchq}E?7*f_ua9nL>MkYj2+|i7Wz9{7@}DA6KgH5R#SuSO2D;q#eiQL#J%d|>^)$*` zSe^`@Po9lxhC_K&dgzO$ScQlJuo;mch#&+4k^&lV)B;wM*56~bR>T%YQH)4%i!q+n z8@4qnvoe?hUYU=nP4E0KO+i#)g0gQrT?`f6wR=x<-WNy8pcII_druC<#mC>GqIT!G zz%YR@ydofmX@N7V_iR_!!R8%X*HrdO5oV(0?DLVAjA!ES;co#7tzlwkZZ>B4#rqJB zRO+y#Q^200;<@G_Dv_`cUu9GYpH6SmRE^g>Hzi0*J?kO8oQ8~cof8Sgj z@bGo)9)W?#a{QN7i?o+LQHLG6C+RB8<8nLo>CtxI&GF1C?UX~Z%BkY#E&sQ_$3YKW zBViLB=qC0FZ!NMhPKdhF2Bc&85f)O8!^oo$QT8hSp%?$sQ-@FW3MYH?y=0$J-u zcXLl`Q`qVLwJ6tm!^f6U*1vqB$ERbc*vXla5WXv76H z6l1zt(@!@FiA3XbL+ap(kh|CS6PMtEGVGTMhXlY#KWp=Usb8Hb6S{GL>B}fTj2@gFwNE-Diy-P4@ z`lQ(<9(>xC7;P4AWFdbv#NkB%kWtv+mskw7_B|!Ddj&mReoB9rz2`?258kg9v&#jH zo-Y>i`qdKwH(SM|F728z8jexOQo_R4zsB4=nhsUuTk?gqMZs5`Lop@-YZFp!bz`jC z*=&OR5y-)sgNbJBP$Slm#k%b2JHpne1>-HabUa-k#CH7W6H|h8-AXEi!*IE%w&KFi zI+P^=%r$OvNQGf7eeD@1EP6xYzDjTLRU*~e??y=erZ5>}5 zz%l^9wxdQLKZh&M%VhCPbLKgH^i&YPAq+w#LoTW#pgMg%N*7QM1 zGH67V|C$!D#^cUR2meqD!mNGW{g0b(7DW;aDqBbm(DF`}*=!k7Qp^g+Sr2l#%xtFM zUQzVG7=3nWu>YYD6fDZp_M<<7Ma-{+rlaC*3~@ZP`Y3-#h(jIdxj&cx1+eNe1aBLR zMM=eeugt`^$IV-kn>7D|1nVU0wuPU= zr)G(5^;*%8Ji`i_sJ{GmMsSxH{t~XYQ2{*?D|#YwFfe(<2LtI}cPdbwpq;u36}4_w z&IssuD0EIg2FubW3tiy2qR<{fh)j6bq4UoJsuowO@!}CW&qqN}27%2F=GsIPXob(> z@Np#;_Gw0ynp`g<;d)*YhFBEjdM3I5lJvJ%qjoO7XcmwU90U**x^3{g^*47m{eZ{( z#D9nDl%gXk)XLeRjqbjM)8M>p;*5^;32)~tH^3=Et|xf23cuF?I3p&b;1Qmwq-l!Z z?oFN?Xs;9X(QwNTGx_Q&yVa}ka0Q9GVLnpi$qtUfS-(D>Ju0=`r2`EJRldKikNu^$ zOn^w71P0lkpI}JR(|-d7NS_JGGujZDb9m&@4a{AuL#=Pq4WAhsX-kb>n>wO;_?c+C zw8=~;473q5s;5mfRM|Tp_|W_v>*(dR{snCQI)zka)B(jD-iBzo63tfALB+R%JtfE@ z=k7^DfPoNB040C->r$esANByRZI6Qonk;`uG3T;{9g!N;_B4O<@ zJRk7J7e-~l)4Y!3I8iVo#u*WOAMHFJ^_5znBApeLOKxJX)N)G#VGR0Q-@_+SB&hAvM2QIS zZ8YGB${zyU&M>AGuV{X$;Ov)|)>1^{tRIHCjQMUl+qSAP^1MHIRjhvhC_{%iX8z?D z)3Q<11VO%uq@4Y^(@TFg z`PM>-Bhjs3paDZ0fJ9tq2P{7gR=oZzm;@@e4r$#laS~E39SjX&fa*ZVk2HiBGBr>m zk_iSuCLH_DsF9=0+-%UoNB~CjMj^}M+2~nD!X+*bZSu-A*EPiTrFAUF%9V3}u)|*N zSJ?eV_4jLlb%*&s)C04&WcnVOC65jjB5Z4J*|onIR!LmN1^=|?C0}C{XHEGzsKce% zgJ(`luB6fD$IRg3I%UJgq*aB@xE62?(B;_|Abv^ChFmAJ5z8@^+#T7FBro9}zWp zy98T@^!_k`K(qstQFET%H#WVgXsl&X5U;A`8Gm&my*EKGkE*BckVCE8EOm^$)tzk! zJUieIS`ZYHI<9RIBcSI>8?%0+`wy@>u71;6=OI+ZDF#gFux^Mz1s!PnZuHgERy*uj zb@1@G!bbomTp_R2VFSx;gh}dSjztKq*uo<8U%Y1hR}*1CC{(zVaA^Ym;;g=P**4e4 zWfnATcuoRGA>W)cYAFY>)HN8H9MW;q6D`zmv&_X+YI=Z%=ADGZjZKf+3?qxb(aQA* zx?)JrIy1Hb`571Y5~#n>TYHgUTuqKqlxHgMCbMTg;4w#UA1hqQN7<@cHklB|viQ4J z-pTtM>5lR3PMIsme~Ri@pdoulrZGtL+{5RdKwiqt9793=pKp3t5d>rX_A5Q^mwsJ=1Tef;Q4HG@D}puvwWMeL zhB%ZzTQAp!)jt}`fEYzu`g4y7F%fc#t3Imq^o+Cmt?)Y=6|efGEYrlsn8s5XH)n#5 zDU>u{0Y_LSzfNA(piSO=EL@!013vFo+5YQo&Ux>)%4PXW_xRr5U(+Bwhec>}$r?Bm z63Zb5aAr-k%OKq!SPruZj@2&$rq=FU&X3 z{cM2d@2zF|q}-PSNM0a-2wI=7{f|BpDcYo))wUg-W`csq>wL*7wFV_g*Mf)2M?Ons zERAXCrI#sHm{>7LTnrEh0{jRf$q;wd<3R#MrdUDKGzlnxTYi{ALAg|7enUGt3?P++ zaxHO)RsU)YuPobs5B`Y6NTc(Kjqy#}B~@o)fK)|dk5&_MfHBXv9LpqkI2djd;#oD- zy?hbOn1~_7@07GF`7+9AnuL;D=X@%~e@_FT{<D*=isJf(=9LgV|4<{c*Qtyyo^T?I@1 z8}O$a25ZdaQ2q(s`d|~s6Y9?oK?_ehTf>sylE_!bqJ`fn!{elFRs=PhL-sFj zQ7U&uD2DJTQ+ITU+y62S=Icy?1+f{JO(c-q*MC2UKiwQS1D5`T*PiLAetRMV2ASbG zp`**pAn_#nz%DY(|3<9`Y)OP!F8TJ=P`Fa%gnrOA`#x^q#?rxn{RWCOhx@u*pWEo& z_aO7ugzT&Cpkv)aOgo<1Vdgn$gd8{}WoAGLatzQKq6P-#1Ijokovinp+qv8F^)ZZ7 z>CtoIRi2@vTJ^{+L#&mbgOp~t$|3QqYT}iiVlr)!%wzCS7{U#Me%#NR&N2FaaPN3y zJ6)y0me7Jo8Wsa(OCJ=G$~8xe5g1POF9IXa6_-F)d-j^(zSpfued87HHH~ z3_FHB$?bGdcM(PJ>o5boF;XjEBUC=Ge z-TJBw|AEhtpo_@zCGXPO?jBT_)d7byu(+aploW}i2oq7C(b1HxEeN{5?ma5NW-{#5%T2QhcuFZpK7Vr@=adzTl#43(DuRt#T{UV3 zA%$%U|1qm)lI5-TFV38dq47rNBp6W+8OIyt{Fw+W2AAQ1ADW#FX~<2n;rK|Azy>{$ zke?k(c}p7vnkT2dvHc_6K@<$3QSG(^GeJg;r|%M5iGgj>(U77N0@H$z18jlfm2<|G zCG#X21;`77017bStO>vaKffoXYF1qCR1hmg9^5h*Wh&=f ze(|nkcApkb%rEd z4lABnk$$ZljwcD|XDBMtB{VjuRBv}Ijy%XP$u5G(Fi^zh?3Xt!g5n?f5bMII?K4mo zwmt@X{cE(_Dd@k8)m1GbT09t&4oul~RYUp%wb98p1y2xf`HYZr)=s6>&QoXaqF94B z{3;ma9Gx7V%~NN?a&D`WLs0^kq-Su4@T5`CE0t$4HF2gcvEGMMTTxJYaoZ%+PiXw^ zm>ehg>uz&eC%M+{&vaI}I@nrhJQ!!3!yIk;0U)P-O_MJ%GpxTWEhT@B>8e*M?IK)n zrSv$q1BNCX6H^Km5DB1{0Kp(v|4wkZ+I4Z8K*^G81|YXL`qC7mUXfc~ZCuK&7)Gjn z_xki-rDdUr&FAEV=525U!OH$K1`DV-o6MNS*fisSG$}|npiX}Uf$S~LbzT;IR(mHB zRC(F$jQ;(RLCWsAd>7>+I@uEaaOR~Csgxr2eLcx3j~(&XS!q+X;{T~NTSgU0hiPyP zz6rPZMm}&VX3PB?`@Gs%I)} z-=nkX5_D{JB4SjE#r26+ztiGVlz_EzfBMX|es-jK)q zrA_l=L_h8CmWcUgwD`e4JM~%NDL;a&4v{9)&462#o;`tZ_)%8SU__o^h3j`#Sa4J3 zGGY{W=1sC>xbwR{>57U^yqMZ;RD{PFpQ&Q^w^`d5t&^kMl#uKT6-iA|@$0NuVGL3P zRzEFZ_r!oWK(JapX{%~~WRQE@getln@&y)Sd)cbow~a~Zm&;f%?&G)Xxtp-Xj2mBy z=lBsV=INO;*yE{YORseg;%Sb-7#&^pPlbwR)H(YJVl3nmmtO_yUybXN%ldWwGz=Kk z@gmin^yCx&gk5^TvguVKYSgO|{iAzqREf37ix6OY)&-X&X&^m2>t%-rkk^N=FF5i_ z??f030u<0d3?VqCtQjES?KWj?wp%09o-GR2tRe0*3O7>l|N_W3Lqc0g;%O z*LqvvIop?8jv||NxAb=)8<{Z8#>E9vzjcBj*3n+2OFt= zaUlin7varg5Ixpw()IkgDoPk&*Ue@VJkm(#6shE5zVIicFd|y|5o(Jyd%8y`upC3O z4yO;`#_?hFIce)4*6_2ckh_6MIm!mVy-11rvMYwmdC{#L1|JJ&OOYuOrsO+h?mmEO zqT^}(wN6UzX6IZS;;BeHu!71p&QM1hV1?y@Klc)h*mSAH5}4sC6n0AmXw!8WE9r?Vvf zh@4Fg)DQpxPYZV3YB5%p9JM|bk=J@$Z7d(jNIk(&Mj5HK67JMn`TgN1#Qgf4YjLE5 zh~Sf=ekR>1P4NCjXD0C^#A%$vwZeF^Sei^Hd}F%(O$cj!$%~$on~Gde8G@(3gLn`t z9dnkhvOj^9i*Y?RUQ!QO*u%8{&z7WahBNiD2RLy+7#Lza*>R4auzZzhaguE&iTeDI zsVFct*66TLY?Yr8hl?WW;$2F0(|WJO+jbQ5W*fBX6R3YzYWa#J>p6po3_gccJ`p}N zPGCiX%D=ip2zN~L1wk!afhg?HXeS#n6JRk#zT2fsC#r3CwBmWk~z zSzjnwY)VaOw%ZB-7j!NkKziv0GYzI~6(`aflaRa2!fxsz9-~0E+wmOD81-xC)#_$v z@Tr)J!7E&;q5-o00Uwoz;61YI=!-qkmrai`IQJ0mNk8FBK}c)C5Hxz#>CY&?-r!81 zOo#gy0Yj5v_9Cs^E}mRg-V(x)%J%5ZN?d1CCwfA?w=bk;MgX5Bm-9_~HZv0b4lgR+4uYroh$91s#+}DoHV%ysW zV8AmoGD;~bAk2)xfwIG5wDk^aONQ;J+VOY~{{JmIG|KUal}BN&JX$Fo{NomW2zON< zW3744TKjyfBRfgN$C_GHth*cfNKNe2TG%wNKGsws@m#(1mA2Lis$r`ObpS1v?zaA8PIXlY&zIt4;E?L<#(m z`TUMzziOw-(NXlZui2e>I?&&W`&6U(zeMt&s9CyDh#-bpspK~`;MOEmc|K%8E4yX- zD-UH~_t(_ei6HX3W@^PJeH)K@54Yvh)ecDK-jCMGN#Gkko>2X?NODM3t;u=?Zr@ir z6_bpq_2M?M*1m9^xpR5~mvwF_g6++}D7un91pg8puanV3Q+$ z{;A!5o2|xYMTODnbe1VgvvR8$WQ3`ZuV;{=dx#lBtOE%(MOcM^!J0;5o`JKRKnOhP zmUUz*gaDzE43~OsA%m;9stYH_mJl;FikTWS#fzQ0$tp;*`h`~;FBK#wl-S1D-Us`gGKjL)%wj}+$3YqVuFfyMUhUmDxEglF? zhcLW1pP+ctId7HgAd(jM8=mUkt$cyVDZ0#Wa%i8Mm%8n`5zFcQV@PY$Rl^5b-Q zDy))a+9Th+K=@|pGE_DLH#EUN`l_b4?@mXQOXh)FL>F>{rJb~{oe(})43dC{-XIuN zl7|n+pk`NjLXY7S2lIH8n!q6B zmc~_BkS$1H7MvxSeCQ(XK7*wCl^5PpjIiBI1CO<=&ezrQBymMHK)Ne-ss0tN_le0m z6k_~XN~q?c1fQdF_Ahhy;3ApT^}N@PcBrgn0q6z5FD80ff3T>H=T`PT#>&LUFHjqD z(*YflhXT=Ec^QO*RNz67!Z3nV85|oYIdS|(X0FZ1ar(RTLELg!6e+NHVhW>TVX?e(gCeT9ZkrX0cG_c@6e=kT)XoT}I2xZ}^>h$Dt3}2~K$Q2a zRDOcJnQd}V4AO#N0mTFo42&7q_SUqteVzT_IqQkC1hfKNsGjJeD#NydiLDSCUsi{@ z*)wHmlB%{xec1r)fqmcyoYzadQASRU7#G~lr zSFBz0bo~5sO?RAPoNk&O{E^y0y^4bn9s~o1?NZOgj|jUn#Q6E0hA_CfYB$^b3xJZ- zGC0@W+5}C-&UX8~en~`9h>B}-i}zQwOA-AP=CjmS zloeRSz(}Jn{SZ5IHv?qb=`t(*1L4?*5nV$)Qiqg$k9HpyTXu-{gt)FMvM$TV8`7Xd zN6b}#X4`sKUCjmHG2U(Plo_&Gs?_b% zeO_k{h~V<~46(ro;q3YfnHjN**vs)Qqo_0#izUUaQ{=*A_j|-qiQ2ROR^7N#boNP@ zvvT(AV7h*7NUL9-&ut!9!x!C}oH0afme(2&bHqDBVfIG$v#pgW@9_0zx? zsHTzEEA2I*7ShI|d%_JP4$2K33>&n-&-eZ!a;nfJUcS4TJCZk_4_g#M}Zi=LRIOZ@4N*0p{mk8 z?aTX^e*SfYajCO=>)_X=gn27P@}s5m=Qk^s2P|pY9n4xKT?`)&=Us*n!chn2b#y)o z^#h~6!TxYK@;d}u{kNQ>stwF!$nEV338l@?#Q#}zgv?=qpPjJU?hK#NxlVeXGEOh9 zDfDb#AvATLq8xzzN4iceVGI@AS&G!?Gi@);WdJh>VOQX6r#yL8tyR+pnmX0s$MQ*+ zStfHhiWmTmQ$I=s**_D9>wEc~Oy{lW(N;IsyN|vl0A;0H6?&6%oNp-gr1y-v+y2Et zwkBM}on#<;kBG%c9eys-??U*I(W8bs0xm|*?3MWDcR|JZZCDjtyV`XaX;Em3+w?BO z(_mL?kX%Us;h_6SEPV{5cVtaz795dc4j2Aue5`*Mn23Mo+{Z;pQQk!kbOLEjhbF{Y zK-lM1jP_3r4^!lU(=^{-9vP-{ZuQGu(Mbx%or1oP_Moxb5@=_Vu1nqB@kJN^xGfRA z9ym>G2?4RD`BiPVSXsD(R=1YiK@qgI=rys z)jm;(Np$_vjj9qv!6=;!Xv8WHAOy!;+|)*Vjvp%cQs>f8q;x z2#cx0-I>zLD-i9h#V<`*LU%nEq+<5w)@bLpEE9c|9sG9rRNN7QCs!*R#HRFdF*FbW z2%Q4{4DD4^^-dLp{}Kv+zMvFg;j$t|hHOQYfZTrRGkca2rOKnZq-7xB%waMjWl&X9QuHVf*=^c&=3 zA|h$hyo`FR=U+B-eMNFo^!{aI#0n{Fj>NRK`8;AinqH;+k(~o8)o@8@PamS zS^_tGNcjSa?{#dJnWV7)suZjzR2yBCT%XgX&kNQ^&|QY^>%#I;I~tR~LlG2N93)6+G_=%hdbuc@6hDlq3+R!lbjk*{z$R(q0V4={#s)1C zlgV5|q4+a5tI3~T)2Av4wVG(Y)E|N8ft1!_{FLx%$2<-*tY#2TfX)lH!J1Aj6je(f zmrwGu7WQ$2g)Dxvciv!3IinxppUG^Opm+k(U=CgI?eJ}9P}tH#|`Q287)o3+JEW;FfGnFh>4 zZvZy5#@y3xxhC%+;2{JfgS~1kX1eEDyaQJEF7~AE_9Q`D0Pf}Fy~E;VLI}=yCjA8L zXQ41Y5VOK8jnFQ&gbz!)Ed?v*b!J%z4bw!&zn(LTVPs3DMlp}1!E)36{gH{hq(Ec< zb>yCy)tFcqrQ2BNzLMc7{$BO=oVzU#yx-DrPq=S4Q{pVH_ZaI7{oiS3{@$#Rx7Xc) zUO2Z1h84%ODyw<}`@x9d zDE#tvnU*bX!tp#4x&psavaXwIIA>mHDi5oaILwz#rAK+{V_$T!%N{HmIaBptvjeBa zEot(I?R0CW?di^qm_6iF+a25T<#-Kofa0c_fP`|v-Gh*;K~jf8|L-hVmDa)BY?Xg zz7$f8OxZ*#n83L?m|Zj~m{A2XO3);27Pnt2lZGla*U}M|JBg35^r3Bn|^ANJ(4Mbd`|h7sgQ{T zKf(HVpD7)0OE*xg2*4=pe;T*88gj4v<14;6BTP63l{G%OQFyxo$3LUxhj@{$-}?3I zYBalXN)gAof+i*@@q4lrHcuMwtQlHyTSad6y>)LL$OIK&XfhoGCI&xP_njH?c?<3L90h%Yv>H6}%``Y4de2K| zk;#1UtuHyLy|CxM_YQwf$UyuQ=V!6dp9VSSfTE)f^75frm8hYPh}97&%ES1Cd~7o8 z)QPe)BJ@;x|6lnyiY_z=Ij>h41Vr}I)SRb zp0dU7RTEU>j+2kL#>BVyH&!rj$CjhjQ=r>xaR<-A?J__Y3mRP0-W!)?WM>*QN^ON1`_31Kv;zUTa}>vGqNLm1T=9H4WNb} zX$D=5Qbuf$y1;xOgoQl!oay}_uVi|B#V)?8Srw|Yk#V$40+uq1b7zds5VWV5)yI2t zu9*|Qq3O(?|99p55R3eN&Ks4P+l#wdjGI-kRK+aiW3OyyCc3dI1kV4PTZZd(P!O}v z0ymp)CJT$*i{+9G+88uh9ZgMXH!>YG?_ihObWLScS={{%Ixu;%>Z(bi-0*Fm|eOOv_?PY!}G8b)!(OQrIv%j%IRufu}3YIl8|6S*Vl$TRH#p5!UnY*;+n2Z+DpV z;1d8x1x<@i-2QUSr%s9TwU6p4d61(!_qd058tI&6oTst}E%W=PUu~NU0q#AuVP&5* z9PeROW6F0KGYeUieDI$x>nICb3TS@yXehbglNqdwmVp%PM62WymTNA{_cdweZFG|* z7)jB+9?|>H0x}woPoaKeV;5Fy=?89muG>=vn08UKv{kcUoXNufK=%Uo=RUpu8( z14{VkpD=v?R*zH2Fr{eBWRr+Rsz;gBl z*onwZyF-cBQ{4vJB2mU?JD&dpM!KrOidJCWlx-&V%&v`$jT&>a*aCG^j$Y4^An4jp?Q%u-%(9sx~}9g(ic*`ef!U+Mu2)mn1pCAj{%oSS+Sr&x(*>Telsvy@lf3} z6m3MlE0lW<>HAa<-WKdt)qoIgFFg=N7U>~W`%x;11b_jfI%M_1Vf-v#>cnz;_l53mv^O@(pP|{C2_nsG_s4NK0?Cd>j1_1D?lkWv+G32UDa} zG&YCOtkLA!x0kHXCh1#y)}jMIAMdf~SNjy5L5^`Z@`02p)%wPLdVeg{`Op?kBMq@9 z#8hGvOfNR!W8e=X;wEv3NT4`hWy~TdG+7H{O-O%vSwluSMGl4OLn7qS_4&_(xR2xk zk&KAUj1Tz)DyC*eUH;qyoo}5FuBBAj{IGG$-y7gh0ez^~JJ&li&>;65^fdS|4f7h$ zx4Po|M{j7|ktsNr0_-D@zZkiqtwcP@FP$e@9JqgPcvF-Vqy8$t`dgD-Q_(3p{kq|Cb0Cqr>xCXD*1 zx;|^@vb>N@8v7>szOy_G_M|dKQ(!@$SczH4$al7FSP#+VD|_+vZDpQ|R!|};zr||c z2mzUtkUIUtJ@eMpP7g715{6)!>&4LBZY5{X$X8Vl0y@*C$Lmh;aeW-(_y!eyYUx-Wv#aNyWUn}d1Yqb@N$>EEWMfxu_;3xDbW8!H{?{Q4F zPm35Q7R9&GQzB3nt`1L*Hv#<^()-@u%r@L2Q$fk+snUB!h1RE6?x#_uq}gUCV4rAk zw-dfAbvY3x;mcZ#dkc%7XD;46ZTkpC8f0EH|Vh{1v1H3q8ZO%d&%y!X25uO3-<9tMp1nd{|n95~%v?xzIAyrOk* zh`MoquCJXfb3{bp!WpX9tYDFy;Iq}85y!zR#(m`?0-wgsKglinr3BffD-GoTG)V!C zERiD=mjP4p&_Rew)C|&V+tyoRkK8v4Li#Qn;&urn`Pb?$6K=>fXb>9Ha37{Yy@egF zl*3k{=mb3KS)FCFva79tv<{As*5*90E%Oqv1h9>nkM9AA2kTavh7N-$0G)}g=#qaq zITP~GOxDxI~r|(=OISQDO1g%t19;yBqtB!u--iH-g&=nb!;YaaUOJCJy})~rsXnNC|aEYE*o zHz_55#j~wD!@b$`zJz^dZR2ocU}vuZq92LHrft9QZj*5Z?K zX){;>HqGo&_mTT4f0W3c!v*1PA$ddJ=dy$?&=-|7hn|}))a2 z9JEt4eNR{>Ux#zWFj4b+v=$KWUW>=uIX3-@jUU;Vwda=SCAceSXj2$kfLOQ2ub=vW zj4;%9XmKPMO*wnQiXDLY&K%C2f)v;^9+&x#(Ki}+Kz739CCbdYllNlWuVOp%KYIMS zyry{H7fI?aDsL3P+84uXHaG?$14!!m@ru$;Q?Rj}ANq+GRcnlr9X?I4?*x$Dv6nf& z5pl)`Ii7-1!`*>NVbC4#d8qGg>rqw^{ER}8=A_|myz_Yt*pSMOx7>~$ce!w#aOfm> zg@Au7?v=UcNNbFvbo=a`X|xN*L1QYRPW`1(z>@h0C&P|fNp9gMVd@f1^TR>mmXGE7 z1@S1lseA&1wY zx7oW|kH${F+BHx=N(J{#Z{xLCdcL(ro=e6FBnDSOtcrS=RnlkVME0pBsKfax9*<*wJeUCc-t+ zndYKU5$XIf#0wPVlzN2rKVxHV*GyxDBmyze2H5~jRFnxt2nvVQ55p9RB*~F@BONdv z!QdkK+b&E!UAqI59R~JhM}AK(ZT-Cl2*amFp5&>VocXWB{1}9aNL+}7dwRdZXl*-E zPPKp%>jkM!-u?V8Yq|$gB|e=!Qhq^J09F&{~B&}=~GS6Xn+)it-QtO$liKGlEXUL zvN(xo&7$zbfBQ^20{~7bTr7(EYyQE^4d|(i)C@u~%;%sT^;v?=Rrbj(&#IANxi4wU z#3&r6;Kk~@#lDIq`GNv=za4=*2Y?HWq{oa8G$D!HUAL%-RVW30u~qn zfnX3!yjGPlB55lkv2~Cln?!z+s$xSVr+YY)ZXXK3T1EOMgJ57_s-~inK4gw{8b^YMJcIy#1`}%C zgY;~|Q2ZE^2Z70CpC9W+IUfTBHR+?CDhsMt3p;51rUFedMq-=fam*Lyp#K3hJkZKc z#m|HqqCZ$y;-ogzf^EL;f@PTp&W}{NP-Euwh~_wCHecE}ka(wyZ0tv}DVQb6R7 z=Gq$Zu27TsQ(AA!qIumDE)-d-9%fg1`I1|o zp)eHm`LFLrK;jI8U@U|L=6y~q>PZc&`i)B+alqARLBIna>R-zUf}l^-y*$OVlQkof zpZG-ZpTtuwx3jX+osu|8s3P7d^bYt87{Qy~goJHtl^eBzKsXEN+`&g}_NMyA}qi1YV5)m3GZns;h z2CU4KSc23urWOafTn!ZB(0b9>W|Wh9xUgdEw%zC7K6wvF*^3lK!fJY5nN7H(%M8M5 zAT^8@RPKZ&fn6Pqg+1U05`gJO@JMv@(Ui&OcYK;79n3;O z8zwfsNIQOpYY$=Tq8F57ODAR0aB%RLiasTu(z`pEv9ZWiLwl}5p<>F7h9(4M%}l2*Si^&+?_~p-Lv?m%n%#AWn8MUDA$mGQR5JZLW$78h7su!`TTsrT#q_ zOW(?`ikOexn_{1|IgOIA#$MS9$(Xy18QF%S#9Y7%8@=M$$zL7D=R{^R>jw3MzdnyY*2{xFc z%HcP^te}-LN5?wF92WU7bndi7)N7jDx{3dl-R%5|)*zt(nI90vbDkstoWcMz{;hxq zuWJEe{Zj)t;OYHv+2#{y;FEOL^!R+tqA|J6U&-6f#4bu4ibopw!^M~WWKh+OkpEfMol$%lHB91K#h@i zP)?`b0SOCJmPXDM->D!l!RFqvwvYn4m`&MmfepP5?!8x6h3{C8#s_z^rPnC@ z<1kp?tpAp}CGnhQC?Nz+29e)+oW7}W(u;<^PlU?kGEi35^Tms7&NbGu&RigT-|( z1sy>HDBUFUdH+YN=VFiHyC4_TK@uo+8gtnV8n+EX@5|~v#}4>!L&v}Ax=01xO(nGC zx-F#_U=fT-D|X>%3W;g4xFfk%`OO0STW5c+2YxI4nrR99tfp_0@Tt*36HZ|08z++R zVY~Vv({;3ISh@T|{==Q6xwQOGb>De5h_atVP`DQp+Od+#N^rLbjqwC+srVvC6{Kj$ zhcc91@hs`Urff=Mbp6veO_nW`%5S zKDaoGMdkOyW5(S!&PnNSyAyux_HHIzbaq&tDoG%;N_E$gy278*(B|5*_D8rS!aC?;&L&KxXIxt>EHNAr`8g2NViXEnA#;D*@IDJFCq;=tM=T<|7IE1mLqg8@w4 zUx+Hs^S|OkKJCY+#A&raKwMN^5gaXlzg~LT_PsERf+7JPV7iVn(smT>AmXfY z6G zH8-)9!|}k%X2~N?^LHeFXmN&d`{4pmON}a$t>^9aut2bPv+xE>$aR}Km?mO&sDzBs=)napMLyK|A#6|c(~oAAIG&p zp6TFDg^lS;hD$*ON#%|@{5N5SI__H4|F+Mo7+h?p=W1Ty^Y}Ym$_myp3Dty#qzfh9 zhfewy(8H4`3-U_>7h}JtKwcM;rsbGhcV^YT^1|6Od^8>0$^ON1$;kHMc^V`$00N!p zOz&T=(9zYm9NGMTQ3~dh!&ZhvhiN1c zOIG}0daMfPopmOqiwnQYo!>2(KB(7yr81~!LlV9DedVhu`7)$F2+l4`csjS6tC)mY zOPkr5S>t$hP~&GRfVJp)i=k0Nrdw({w=qzDyp|AQ#A@ZTIh9K_V*C&G9#Ub8kp64c zj3~$7^VJOclX$=$PDuIy=nzVo?0~2lYbPQnXPc1rWDj94zRb~Pw|Lu?$9%C(@9DYf?f)^{w3vmBwL z@A|@aiw!O2o81K#k-y17!v;I}Qe9wBud6o%WLmWZ{joRPu@fqcPaN9QA?RQ zTcTG!x;YzGz)ue~Nr|4$;Ik9Y8rNrY_TVXK~c)O0uR#gST%DORB5mPDMprIio2D-=2$j0a|) z!?eLbGFz+>LUtcV0V&3*2!<&o)oV~Qpx{o7j*BxzbBXe{YkK3V{p3-&qVIpHyH+3S zT#6>d)bZl`z2N?qvV)rP*%BsMx##q^Cbkrh)WZQhBd>gU*T_R9K{P6j=U+?MzH|uZ zv@Ar#z6xRQqmY7KZQdNbWtQ))HLG>N8U)sCXr{%r@2s?ttb&IYp z)EFKsQ`bWJ4(J`tb?)0Mv6gjkEe-}D%k4-KB-N$JH@k2-{@`+9oD-P?Ry*5ApRVp< z%xx79yTO#oV<&-&4y!@ZVJ)#9?uz3@TIV`p$H>UE00{yEUAU;tET%PS`+iD{^_QeN zF1PlceNo*5Vc4*dR#+*ZJiInonf?uRW{eVfAN^!?XQl%dryaJ?!yb9hd z@j)b`#WQ8B3*90(Jwf|=y^ZmlB>7W3ad0D&SG_%yI`tDr2YtEFM)P|`(GI^zTMA8e zR>1;(cyv!D&xGxxI_M7=3)u%tKjs?^+E%!^i$|T;^oOe3J1c%`einB8yD7rMq;Hu! z(yxpvJH(d1B^-bA@tMSaB-ag$Ve;u^Q|kpYP2y^IWTun;Kq!TQghv~WF%rjRFaRGI z95{Os7-c3k*-itrwE>3*m~+zV0*r1Ndx7yMs@!bSe7NhKdCDCJ z%kVafS2HrK$V;=tZLB4r2qKCy)E*$mM*i?6h_U|^L@SZ3E9j{dpjJd ztK`>pL#n>yL3{XTXTiq^l4S~20}X%yXlj6gnBfZ@f+Ug>SZ{L54p%tF$m#HRDk8su z*z$Jg}_}OPRq+{5# z!pkg0`uE4*ekCWrFpe>yb8ozvh*2x}K?*;Z?d$PxPaHGCDu;L3WjK>k&UL_h?(9c* z$PQ89c}R{`FNLTgz@Lp5^a*TM01-Z~C)j)t`F87B<7hUcjN??fNBbJTAV&I&X?1|tQ<^vHk69T7O9we^G=!5wd}CRR2@Bjl@RI+k$&wM ze@X(V>2(xxe^UAeUTq>n06Rd$znLdFRP>&(VW{0N7Fujt81FvPE5UFriQ3R?4L^Zi zY#RukGGJAMA&bA}ZW|LK25n=q(Ic!4+{t7y9_1bV6Sr^H12M^c({p4VkwZR7+s0Dw zjKH+I|1%DO-)Y9*n+hKcp%p|06B#o6W5B(%Tkr-AmX18?m=vjs-Y9WkE4*OHiSUg; zaCK^Jr2CpoWgM!t6s}7SXEaKQPZfpF_+80~Yv&$+Pe7g?v!dm?1zA z1L8ae>q#ImdJa3F?p~;8-S0P5W~Z)i#Bo7_&{}H1mYBV+72-(5Ng& z;5K0$qSM}e;3|%aut5>i_et>P>H?@&&oKy6;O!!70lE9S{buYqkEM1NeMCBUSjtga z)Fg>BYNp7uZ_Er~-H~2`QJuZdk48O|A?Wj)!)duAv&j{g42KL~rF{PyQGN*&C-Ag8 zUQK)}EK)5WPSsVW>ps&1tE`&c$K2T_>r^H&ya& zM3lOURUl8|#y6tXGUR9!XV0Y$wZCqA+=PuA%knKSr$Uk}8qv6@PyQNsyFtvV7+nTB zlIx;Iywy=wb(JKC&r?jq12vNYmzTCwFk3tSd9zD)u$8H+Jt77Peuqsw!0DaUBEYBD z)@%8XYXtDOu#Q8e?w?(%gLz^fmie$mCTI;uIiKikCQK)*<|_wPXfvjZCcE|F8?wya zX;F^lMe~x*TIUu+rQ{V{$2*%9=lumUTC#~=4@l@Sy$z>p9Z5CU==;I=!zs_nszJ$41`nX%IgKfj@gqvMKV&Ot- zA!Nipc^_~odV?^A%_yE>_Z`TpG3^*T71(Jwi|>$4gz=rj;v{p7@5Dy&$xC3&7}&sO zw@1ozIvvxmdIRH5u9qTw5yN6yc^x$IA^7?0XbWCDK5e(p2=pVkD>v~;8moN5G0rMq zV!d|0SQhI%*J3hd(WcJ={}lE8RgOEk763Y!t?k%WxvL=I|FWtXOms0~jLo^M5Ia;D z6URi$0}kxUj;$L>2ip2W?YoT}VkzYmd7Nw01@vP^t$a|VlHRAg@x>%ELOBn}uTIuz z%YIn-UHJkW@2SB6fU%(3KkT>B$~y^U`^(=dUR{rDGDK>fAmAqZgWNdI7H_L0m9(2& zT?D77IiZX|YS%3`9Sw8X#1Rx`s{V&bC!hL6+XoETIN#LdcwsQfSGkeXr5%c^;4f+^ z9l()Q$(U|Nd@NO^Hu_jrwhbV<1aESym8*W-1vMQ!?NLBmaHsJuVgoJSui4^g)TV5G zV*C3RGib9aqX=xeH{Hf+r|#@I*+Y=1aX{G3zeo)?dRT7{JT1B(M}d*YRnPaHmS@m~ ztjF%$(3wH!a=~tNqehu3qTf(c@KJnwgmlDl9;^oRoSo&el)77U3aG51NE_|EVlj!3 zxfjiC;HR`k@P!RYh|fFtH86rxOy|N&?-dD#d%5Gjn?Qcl5STi<*(h69N>29^1SmQn z77Du?n4MYDs&2_DE4pGMnK9|rPFDGNbmqsf)eQ!&X{L0+GEHgvC9Ai%0l+(Kix4(O zP#bFNmks~kZ`2GOC;8N1QD%avnD?S!L)s@vy?x`SM5?9biurqKF9xlgn3YwidmqjOT*U6_Fy46rAQu)8dA@JhT9{|L zYB4$@n1YgoEhjy4v8gpV(D(XkBA%)zxvm^c4K7p-4Ft@YkkgRL!nhgk6^}XWIZ;WH z{_ozmSX6S0<<_p=eqfuIYz{%dB`%542|{SuyBW*#+fmp!(!_(oQq{vP)C6U|@w7|~ zbKQ<(MXcXM_#Z%ZaVkp}HTWbZ)N|bDYtv{sDqv?ZR?DWh>o&b0_uF5RJmnJ<0!$=8 zl>q4pR;UG$fni#qXPkM+coJy`-7Y8E^YW8*SV&hoQ_P76soT0w**ExyK+!9h^kbpnjoi>fe9fFvcZ-ilpq7%~5TYTsG1bzKHdLfP zo?y2JcRK5Qu+N*@Y{s4e*}5$M$2MU2qe4G@EzBN-o0+A~vf_b;$Au=jN$-;{yyeL? zi%m4Mn$&EUrG7#68$viso_W{*dIDv~>2}QBa+X2^ti07sbcD1kCO#NnuGVU$9m)Dq zW4BEuOA^uGe)xBZbFt0x?8_1=VQ~avF7k5ijI)P-U?nlGO7y$4I}e{lH0|fBDz5<< zs!80r3*F3_?e*TJ_=Rie*urdD%(8S@%v70P;)A!&zq4D3*{tBT(`O`u(SBE91t}yo zk7{ntZcAh*cIon6J|X~GLqbnj^3OT?$v`K&Dgm1*SPz5{r2qy8ctCNTperq?fVr?XlNm(c#0;t5V zoP00Dt}xM%P&&O@$oTzQ%*VM6pRwis)*2y5f>-`YPSYE(-%xv-{xgH~E(vF7pDD}R?NKdvBMd~+$ z1fQkQd`9B@9S;__6svPM8PMHe+HQ*^6OeRTl`B9`-i!#K7b^KU#^t zMCtkFz35u3Q@3;;;a7UpC>P@AO0&`C<(0iXD5TQEa(Q*scqY7Wajn4!2mr)lZel&D zfSn}CnfwdPj#;B>pXq+EW9NIy{7+D`C-8{*rQta$oW;l@k3IoLg*qQGx7dCCkNKU7 zOj;8-2FJ2ddK-3-9&(%djJV?IzN4aJjlBV;r;lg$TMzgc8T?oT;tJe)gB|=GXW2Z1 zaQ6h2rrm05k%YS%=Z@LvI=}>Zl*{4UdzkBi7L^}4rV)^4egDj}OQ00eU!|2YZ@F%} z)EAr4BFK-R%Db+a^&C(YPwz`k)!0zj%b%iy(VWeZiLd9(J@#yf!jj)e-+-dxMI`{E zo9a{Xl>n05J=wg}-b{)a8kmcWfz7uIq>@8v#TeiLc*(jKrhAo9=upI{NJ*gHxP%c( z)1)C1zIfE%J1jgWMbj_@d{mH@-IPBKF9e5%P{qs(VgWyE<2ra(95kb&{i(nEVm~gK z_te=~xp{%j$#NKF_EtXZkI_V6qy<=4i6!qP%UCuE?u+32*u+*+m{*Y#yuT@`tw$Ah z58k3iLusn3T~G6#F3Hh>Uoz#OqajU+LMfQoj)dp{<0(;EPAC(;XS>az94delvJ^3l z`LjYR38Aa#d2pNvKdOO^G2mPi;yIuzDIYY!bNb*P>0&1%0YX5tR)_B8*-q6H1a zVgZ2s_fEmu^v9o7P~!#2JhMs!R*CyNm?;R&;{0zXw2C+++Mb!*l(H8qVT5(@Z#8ha5l;vZZGIqIiKu5og-Dq~iiO$K3O4uni3fM9>Agtb z81KKQrRLM|3B2ykBaLXkR#z5G_=T7?Ej~P2YYEn^B3_BTf72Tu@27~NYICWtPV@GH z4t;|zH2Sm~!|sWF#L;oDEwxK4t&ZP5EAg6;zhO&{*;CF1U%3*$khJPG&~f{hMPPXz zk~8W9t8;iGgcFf4#5>p!cKb$IWc#ZcrcokgldQls;`bqszb!@-Kp|>&X0m-~!2_s8 zpkI!Yse)B?J4{rG>C<2So+Yanl^B+#Zg<{CSVib<$TMazwxJ`~j7t|RmlNoK9H9oU zIaN)Km()xBp)INK0cKjO@egmL}@m~sg}dgxVw z`ZCa905sr1g8`}_I18gP_lgR@^xmjHaGk*)o5=ZjPuTk_|82Wwxz&6bhTEjak;-pc zmiqwhgj&K(%*^_Z(lnR(#`TN#%K161k0O<|>i$jqpVa3n-8)8)vI@>iBO^Tf`}#yT zNt!`9i1#^cm)lODFDmH|T34X&@H&_QB{2rFGD(8639OnwZoI6&(Ej02zo-v)CU-FL zd|$AUIb`q8<3+-(hsd@=9@w&tK~o4A0~SlJqvq!|Iu%k$;#lW36JtBQ_36k@%dq2M z5Uo9*>5squZWXhp7~^?ZbDJ^@dp@TVE83QKeMK%uHbhw7fU9gRgKr)w0)J1gvsImU z2J^&wlZ0tnSy4ORAtQ$@Vmk^!-$|H1w=}M?Y3*rwWQzH?G!;5m(R%Y`%H}>VU3lJp z>8T$8@s3+U`=B@mNOc2Xj}BORj#yU(UBA1?^Uc=NWy5IRQJ)v4Um}-h7}8hzT^}aV z|Ed7J*HzPFT}?RUIgtGT>@wLbDDgshCr4HeCjPubq&j&iRTSYD$cDK5s`$#;jG+H; zYgH$eEUWSmi50>jcB(shDJNhn3#CPn^M@7+D1kd~WeB%F?ITyTD=|LK?8!3^o(myN z(n6wrOK?t;T{H1z935kfhvFhy>a#?~0EW;(-Ip*72#p429AK~-i#Z57bfr++7I|VT zxh-=Z-UnxxarsMQnbaBo@w_0<(2gpj>*!aMbueV8jW9zIejU}T@t_TRFJpX}55p)avhf*XK%NS{Wo)YX$EMN4=@2gAd+c<&9rkxcjt z+0#m@k@qeq(ig>asvD^Lxc&*a3@P%C2YszBEc9#(YuZDWqTvU%PwbE`SstIG+T9;` z*n?GggubU!f)m5I#V6SGuZl&MK*SkN5UnH13xeV!IPc#UXoFhrkQ4q~S?bd-F1|=B zz{*zKS|~Ox#72d~z%Y@7>G?DS_HxtO*}SEzMjbZQq@y z>%RW~^m9lHCcHj@`Gh1TDLsiz7{Z+kXj;M(gPmOGrVX_XDEbIcZtzOMr8 zbzeBvf#`s2TaVvoe3u^H75gA{BR})8N;NhJ&$?w7$F8U!jyGR0k$lc3T{ZQ3JKzRo zB;M`VP#-^uJ0&wX!wmv0a8jd};HoK?_p3Rp6d8`nek{OHzU<1&=$JBp<2@j^?%xX=M4-g3Y;xu%DP+AtsCELih1Yz|e>vTK--s=OLP#@qH$Un(DfGnb>2A6KT ztbe0c3J0iNRi%c8s!Bfz^!fEf*?bR;m+nf}vV5|S<1pgzna(Vzz;5Sp^Yw{rBX%nD zIVE{0$z*u8g{)U6m@scD=2p>*hkL|{Ns`0AT7gL8 z(canXazmkMeK5-@N6kT9oEA#a)Brh}w11(`8b?O>0;K^+U>5nU8s)lBeEn?+7@f0g zuI68o(ay`35+{C^8!g;Rl4V`!QW*ObgD`&JRoW<(t5e^~EQ@}-8d}dz^C;u~i!0>; zll9$fBQoA+^l=xwr>{tLZ0p>EzgNm{fCrb_NDgYgDfzNv-NXW4D=C*YDR;AbzCcAF z>NWy6w&|j@W{5zH2nq9>j*UelN_=zB<~VA|FR_&sX5x+>_t&j0(LUI>R{2+&zKM(` zd8RasTjsRHbTa%Fah|Df7`{_7gxt;>-_Nmq-uF-vnQ;(H2j+3M@p@*2~?H#f) zn8bnkiEGuvP$)pzqOV;P)euRLjjrtd=n|j%lzt!Ks|zDrJVjjv=+Q$jFZnlMtPSM| zh+X})m)*~k)=&Ctv?Qm~u*jp_8~Xjgx{2W>7t1rX^Btiwb9If8yw;8w)r=DtGVi$@t2+(@I)0H3jUJ^lh zE^~nH(Ow_g$ZQu=(OO^LL%hOz?D=Qp@E>#4*Sr&p6oEmnC=IAGAoo59q0jVsM-l-h z{3}SoDM{x1hC52(R(((VyWiBO*?FliZd#8}mW)y|c_NAsE8c-gxu`*)88a$1BCVgT zOUkF?lVb*C5Nvz0vIX^g+`c_c$8xK~W9qNm0HfhQ927B)`kZHj@L0A&Hvv0u+p=BF zNaD4N#?kodPNS-l=a(J8Pf)yJacFYCo(vY8wpf1f)b_RiCV>kk6YD#-0f^ZFC_9=+ z!G}V|m+NFkL8XA3#xhmAn3BvN_{M&Ig%|Fd6wzq6;n~;W{D8n1Co_NG_Nn6CI(q1g zPQ!VBoKDEAek?cF>Gc8h>46QF2bDB8CE0@Bd0pWE|B|o&ca`2n7j!A%AoQfx3(YpUK z3tvv6zHG_QiwAa--dMfWT~cGM@`xc|3i?>MHRxG%>U)|msW zR-~?p$-p}>gG3H6FI<)#=TJKjZyFAhd4J8e`6kz%&?}s(w{1gn zm5e(#oK8m^{u)j?FyF64uu5!eWxJeM=DFE9#;%yVRLUPFsB+VhWy>PDHVp`Y!|ox@ ze(iETvkk{itX?x~QU#|9F_hPWPg0f!(wv<)Kb<;AC-WoSZXw%J_UckYc9=NYq3+P7 z9r%N@0~5G2?$7J0UP%wt4LwKgJ8@MOvFD{UE z<4+z0!B1ZgB>9SIElQ1kFchEaa+y0Ar06_ z^V+kQ2$2aFdB&oI1S;4&dRYXnw-%!FoCbw}5F7@gI=5Ln`oz6dDQW%Y#rTcCjUEyC z`e{-1+c_tF`yYa(;ayzezz6>lKF#Xp2X%*Fg?Th#^lEx%?{b3y|!;^m&3-G`jWfc z&uk48>A?(Pr@%8O-W%9NFysapmiZ0uabgwY(oT>U&hS0lu=s!V3s+QE9$43X_};qAPiI18KI-00>>?aGkp#`9)u;NGh&5@2gp(0+ z%I+5YvUGqTP*8+9*&5Te#4-_cgrCc4(Qvhsqr>ZKTeG{e`<$tDx}@2=BUZwb9s>949KmbAJc zm2creqmhg{mcIfqR*IkFj$yinGr34F)dK40MPGncFXR_=Z*b8xkv~H`ntk*!NM4O< z|FHFclNe}BBa5&p&7Q?c^1T;6Jj1^MRn+Ymn2{2m`$?=6VWl^w!_RFc z*e?+GqiNN|XOp=<-3|S|KN0#XoRb~0>87K4*R$|s!M73l$f5>QE{vs;ES^2am-D%8w1-5B*&9I<$j?g3Sa;N0Xh@Tv+(-b%*fUpq`4au* zt-T+5-+UTKb>IM4MnQ%B|Kr|~^b5Wru?~cIf5z8+hespZP!m_qJU;n$-JXM9yCX&< zn0-_KYe@}`v(vi#j1(ZUE*t6nS6+JETYn&f#0`Le_S=27qc>g@_(SUKcb8BZYK_Xp zSW+e%S#{iQu>O>6XMRE)DxaM*5LKqdgD#XZ;13;xv8?CO_wi8T;KrU;!IOG(bfouG z?=F4pr`yDPM2rXy#LQ@&wJ4muUoJcv@nFJ_CbkD}GNr-@jQ({7hua&@K$4$rG|PG#P&E zK@U76tiOY(6x8)AoX4MaU{JSNIQAKaoR_01_usaW-eP)BdqA}7$olX7sS^v!aGvd- zpP&_)HdBT>xi-st;YO$HSDTi*)c#RtD29lmr+t~4MHv&Y*-3-Mq0m@w44K!InTfpg z?Ad+JS*Fu5vh6Ii!t1?@&IV8)C&eNw?BAL_{%0q+e7#*qgrk5Eh4K@{Yzoz5oG6-_ z>D!rJmxfsGfb2c=& zWAjGpTSzCCnFxe$BGWWq|67Buwh{Q4P(tj z?7TVVr*xg2LBSz}Y?8P~l3`FdqDDAhKs?DZNZ2$3;JWR#TxLICK0~GEr&nRQXc4Z5!9o11NGgIGG}w-9bLw)z8m;?iH|C9C`uFur2?_^_;%6A~|Y({-|ZdEsuG=wTbDaCA#dZ ze6WaQ%ty=8!;#S7ATTkeECD*;Fn+#sk2Q?6aH623KWx z-IBl@=Tm-v=^XK}^GgEqL>5Y!@H#~SAC<5X1#fe_SzpRx_AvHGsn3?)q?e^1CT3sT zXZmSdmB_yW$pm7*?}j51J#`0%W>>^qy^ewIlRP0UL;L>P*S(nyRRh1w8}@JyPXQ29 zjR+d$Xj*UJU^hA`WJ=y9fV8$fHI1?ymR971n@Wl1_(CJ74Ba-+DGn>0l$A#&zG>?D zW{4e3=4n0t7xAPj+29dpF4%~dQUXOi@MXY&4B~XrDji^;;fB_*sr>6iLMA%awUuHI zDs`FuE_zE<`0gHy7m)fO<-|6|^9D3twU1A|wA<|Lk8u!8{@v6;nBin!)PTdzs?v8g zxVF;Mj8za0m6=_E+}_otcDLl>*0*@#+|+|~HZ>k1c`_w!Cr(@`Sa0a0O73WQPa+!^-#=m~h=WzUWloT&W z-gWvT9l6avuET|P)7m~4#8J5+RV z8?=0W=d%i(v3<6WZ2z`ow?OCK2m$dfSq5pfGy)FoZV#gbHuCaj#wgLY7Nw3jAwQYD z${ghSk&!2jT6IspR-^vF1ck2As@W8yq0h|G4zwO)^dHS2_1#>?w6#e8-RRnG3%Ma; zS|%OLNgZ&A7z`($&W0i))|q;rWJ-`u1`>PoE4JM7r%T(NCo`X}Ia-927&9G%Nw1l2 zZo)dG(sTU?J>vIKd^|&Exc_O_L$)JurNy1WBY4r#PxE6cE`xTvW z8(I7w0qm)jUMl*oQ}W6&wxD6@DB1o4+7;(HZOOSr4^>LD+Me}mX2)xyDNoHuNzgA9 z&3SqZE<-XSLsBcS823K$jC|ys?jVAE;l(~(3C6sp5pX@_(-u(flJwTAFDIWLkb@C? zyWRUgHCq0!q^{LF2x&DPtn{Y(HTUa>49?nu*(J|0xExF{}w;?Q%Vm4bIQ zDvhn$vn1DaMft@yhBVsR&j&}fCQNKQ?z{$v?r+f0^kAK!u;c zir6h1!d35qkUq8ep<263Bx!{R0_uig@*H$jztW<^_%JIm z%Kvjr4618~0; zt7(x-zyv1ncRc-qX{KYdQ7sK)l#I;)nQ5#}q9A8TdKb9v z90@S61t!rW9Fw}4MtOVn?ho`;$BHY2SSGEniIF(tr1g08o14K7@5k<* zHz9SQ@(6vpJ`nPST%mF+@I_U8GDB;hrQP{eb_%DfRgDAXkjEgtPKR8|A@RBdD?4$o z;UL3!LNkE~0+5Vs#!fzNWMRALWg$E2E z(y{$zf*9k&GxCdKK1cJ37_X+}G*iv;)^=1pzSM4+iS}kjacdlSzc0*m&bvnH8 zf!i9H;3vNV*wEKPXF^Expm(#oFI%zUnm5R+wD#QoG5tD;Uog6box?gi=(GX2%^ccc ze`93jSa3octCQJ^4E-(`4T4EnwZm9?B}?IETTjQu>Ea&v#%)Fb41s(NAs_@40fC{^ zf3a@c^{6|YT=!KFt3!SlXI*@zJE$(iGplY z{#5XHH_kuI-0g?HC{!Dfg7>T@3rv|o++`aD+*o`%L+&xGWk)0IF>qU}O;r_=R&UN# z7JaNe%rl#=z8s^n@Nri2V>j}^|GRMscyE$-74ehvh@X9pLj`s#NUv!K zp7bfJqe!soi@!<%34N2vAN0RCn?ZkjPdFYdzFcYyp!FA)movrawOTBzN2En=H}Gn6{ttuQum+d(nuo#r?In{$z6U+lBY*BZOixo#U44 zG7PW+E9}fV!irf&nlYLfDM7AUCWbx(zo1DCmOtWT$MPHkDcD_Xg!IJ>r`gGR>~P)3 zWqqzd6zOPA#nyU;e^aY2Yp>mBN;D+o>pad9UJ+XO1ww3!-}(Q>6Ez5zujsGe74Bk4 z9P9LHdn+e9s~8idL^)$e}45~>M$F~4+0nGAQPIHOGScv;9R`OWn7 zp3i=~vej}rM&&lc^ZXY6bDELErt)Eu)U0Z1ARod|*M@R9B3f8oFz6u;jB9pfzp-%l zIjXikd?v+H$DT)N=_L_ZxvGKTi@z=Nv|9nR` zx$AGz`d-CcDU$cY z7mTav7@E z6o+MNeoybB*cjJQ6T9;BMAvspS2LN~4h@k%Y2E?bMmvl`OHM~Eld}V-hm2^m`NUT% z|1WBIpLH-E@6MS#+w@D7n-*mG(3gf=Ej+B|4d7*v9_f{mHB80_`{FuFlv@{IAF>0b z%hH64aYC12v?>j3oNptm@l4QRkk+i{l+3Z}+;VN(W%vR;+wr0|*BsGQU7@`HCXKp| z@1qfY&qP#UHC2WeN!yI>MxPzDOpEs}SY7B{0Ra)`HHL*nUp@h1~y zaXRSBx*X+#Pk)a|U0VQRPmdYv^7rrD~&^xMid z_bK?<>Ld!z>OI+V&YeWWZCH9@+4owcKVAh%3;{IetETuP7zPJ<|q`FF_S`0*nxfE@pwE?`zvy(si(aD$1O2mdIFrh zM%`Jo~7Y@wm9vqMs1MPusTSjP(FZb4~d1sBDt2q z!Z6sASAJT!b0yWx112$cC;`(7^LI#;gH^=CP(wAzgWsbX(N1u|U8Bh6jPMUQGE)=N ze_tWyC#&)UK-fBD|7dW#TAsagf zos-($n;#S5M6^Ty4@3MsVc^~_x2_8XjKkjk;H|&V zk|<*i3Twf@pDCNu^do!HVuC|Xybd=6o(tVgRk%_wKQ^2iP)rW3@rYf75UCaUWxmWT7)_%WYFUtuM;@ z-e5bT=s!&FX_FoM5cEJQAMyK;q#It_w|K z1nO3$aZ@D}rQI!5$9kYHU%rnpbx!wv%~K-RBkX4QU9q(1D*bjk{QJo&wWzt&Rn@(l z_sHC4YLDBR@C7#p$^~RN9-Dq=>BKx8xo@*7gtTWu zV)At{pR3M^TCsLa@UQquZ41BMe19|~jjMe1o~%GoLs5fu1c9f$8?+gG1q5_2;i_wV z$@;OQZ2g1KEk7yfpCR^? z7Y3z=20^T%73mK^?cV(G4cAy4<(X?qEd0Ca?(hVclKQlpa=tHD_lalavHuu<3iBAS zi&Me?(UU!R&C_Z}#ExUCa!l3g%RspX7{>rm76Hj;70 z`WCvbvzP|~?;c@j*wk&?u2G`)T|JHRyly%ahP4DF^7KLMA{xxOdj)(@@)%$Mf=gyR zmpp3JXC${vIX~%TwId_C;zS%*#!=MD8?RrY@@)$@{$Z+t>$z1dfj#dC>lrcEg?^v! zT=(a5F;Mr%>5Yq@3`2?@-p)Os4}C5WHeyq;C8b>zrSzYla@=}srM7+4s(x*;W-^9? z5MG?y`PF4wPVwfp_P(mXr9Dm4nKH62ALdlFv@4-_V{pfbcvX(aR2(-!c(zM`kE7>? z4r+^sW89>bzQ_LDH2?uDqBMvnSSYZ78eAAseZUlKL?Z@21DH3B^^=1 zn}1Nr-?A68wdCd+_nxHsd?l7iDx~Lqm`U}mg*3&V2N9mwlXYt$-9*tmd|f_h|NLD& zpHJ}=V?VSGXUM>t%TU3`2}sRP-QX%?vGVTy5Tj(JDKoLOzZXPe=+Dw@5b<-k@w0$N z0nkCDCwnVcLB*wu4!H@%n+a3_a8P^j&6b3ycII}m-+s-!0qWGus;g3JYVX}W@k-u; zVhRzzw$o?m=2_#c{?4ZQGGvG+1+avhIN>6zqfAXBZ0zzUAnm?xM5UcKIS90H)MWDK zJ@N<>=cKi~v-?jZDl=RqpHQQ$ayMPS1c{!D77J|(F2Rqjj^?CA`pMN&5U)EDt_m%E z*>2nRcM&J!u(%}7*Ia43?>VnaRY@Bs=IY_)%!2lIt-Fa4IxSIv($C&eO{}SOZ^4g? zl~9w!IfKUwLF8QFM$lt&JQB#995;kk>^1J28Ff|;feS75P6Ycq0jp~!Z zz1vg9XeB^fH3CGHh;Ai6Yz6%VV5`?2{rY+7gHU!eB>OT72V)$eJ2oRrIJBX5O?)^N zqzPnFbD0iL;i^qJTLrP0lvv*6A1e9OuL~2Hmv>2uvn~Hxzl=vF!QoBy%d2#tDiC+U zU``wM$Fq#Vhx5_w!G9g4%vDtWpCz#<(d6Ex5@S`!+UNK=Q%nLbW1eqzo%|LDV6F&U z7L~~YiTeG97X&lcw77n04(}H|3t3_VsYHu=-kG#Ww-C|TUHg*Q#lim6PoR_iR@ne$ zm1zdWvBu$gkg_eO7(bJ*EhX^CRkSiU*Rz zG>JJu4Q}7Oqz7yS)lK3duWX~YiNT$~Gy{o41vjj$+=r7GNtnEN!3Fun!H2vlt#hTd zRvi-#%Y5@vai@)&T^r}i4e1S%+Y#Y0WX^wrgFQVOG;nsErWdC{h;m5J{imuNxV)c) zQijJ8o3@|)a|*6Q-FH_czUe8ZqTN)8gm<=dE z(Q|*=0~6`rU^pV?>$fZMfy6dou_(^77{6!=ld`>_2V{ugpyH6t0_}Cghd+asqNL0{ zrqp~MfuuXG8rPM*NHA|HBm7}4eA5{0$B$U}=f5$E9b+;Hz#k9MT6fzP`a$+VdL7HR zr8vDMN;8p~J<*bFQa-FA^C_R!O>>oi+DbbSkCDKtv%`Du^HXf35an)oG&&mRVDy&P z;25Oz5G=@e{6gHned&Q57G3eM$eLa5w3@@`7Z$FY)fe^OL5>6^B^7kfF)=u{KwyaS z{z<;X_JoXr*6Na%o)SmA*MjmozMyW}9xrP6>+y`qWzor%v6o@`{YBab1PR3q1B(@~-?n1@m`=FJZZZ7fUb` zNcgXw3{S>>{;h#b`nzo*+6RXo4-2zm;WA$M*4(dG@km&*~{Us{X1LX{}C~5_T-feX=o$ zp5#Z8iHrSh{JZ`KNM6%s;HF3V@DxS9R>kVF7n4S8(VP+7>}gMUP}jBzxFC1F#x=-> zBva+EjuGj9@9ok(to>OLGRKB=T2}IQb$?!1KB^%cVZUN06z|z{^MO5TW-}Z|%erPX zww%--WH7l{3FBb-Vd+4iBNxT|q~UdJp(vTtHWjyN0g+qa3q`Pxqh1_SuVNjaZ+yXS zQaa9FhyP~|*div`EW0Ph=TBFvQbEZx2zVT*906Yt{7}GMjA6t`2K9x&Ws3p#FK)Hq zF}DM1I;glV@B#wpLAS++hEIafjcGVF;sNnx<5#edr;COF#HsYHXw;GTM1R~6>Edqo zISxOuJehR5j&VxUjk<%>yS|$0dgP~tfIDxvb_mUw9%2advcj=TagLSM*-?j2{|wRi zB!=Hye;t7{ZowH-JiN%&M}spX{66=^mv;FnSaTT606jp$zW`v^su~C%s=swkwXOyd zgCx9Rk&j8oeN^nqiTD(K4u7EA!(9VhxE?0XVm4oH`>yOq*SF+2Y1dbhM8|qedOv}F zx29&W#6C?|aOIC)jfA|D1flD;y3A#1`%!nb` zYE>(+QYJg;(CMe;vXR%AZ*otR0y*dgi>aOK$Z$PFa_?)g4-Wvh#L4`|`^ndf252Dl zE6Ix!$Ep{N8JV|l%KEH-1g*&tTh}LfC9yDApP}u9+tL$m(i_Gxbmu|c^hH#z&60)V zLTa{Zfku1AjS3v!k<}4Zrwx@g`QDzWFVaE+iB)tQwlSszPIKnJvDdtW26IMG7oJd-qb_;{1d*M z2TGL-pM&m&eoG_QSeuB3%%EMm+TXLh&%-3V8vS@{<*hm(#VfE+$CDoUvHMRH#X<$F zSJNKNI2FM!d&BLrVn;xbq`aLA%Wg`*OgO5%JouuBf2~m4Bn?6T9E+kN(`-BTM<=K_ zL0~0S5q(D8P?qw=68;7cBxPTiByzjHr*qFFk*-Nl^x!8<0*PtBHcZZVh*}G8Nk)XO zQEkUt>-lgxv(4ujXCjFFiI9zUrL;dsMbIOYKA6&pJ&T>KfoB|=<2o#Y(-FU+5t5zN zk2%5iFs7QvQzwGb)9!9Sj|l>hWs6V?nj6tIxp4g=UL_Kf-2KOmI^A05VPmiFO)W=74ms6E(x?Fl-S*>y?a&*6}0e{iOA(AEyJx^8^v9ZI;P1EUko%25w z@w@QHN;*SCM+Elp@p88WN=yTlHoY)tXv>zZ11}9Y;%>zfSY{8qmd>ypj0`Zp=&(r` zUf52h>%A!cdu;n>qanc{LPZ&0d0+wV92ULg)dYoN<0U-e5(}_fauC0cGM2+PNK>lg z8puHbqA^S8z%Z=kq%laAOF>Fa{|e)n{?NOq}lF>+iv~a0MBUN(zD%xvD?IbqQN(A=V!bzj1fz@Ash^l!jw!W5on) z<|As5G?THlRZV$S9oje)V@mU_GD96?y6edJcQ*&3q|L(k2vkU)Ty=4CsyN>~gUDrb zhygCowbVnfHu}TX=ToC+wLyihLLBG{{4?3|pdbJRs5`_1>=$LN_lnk`Uk>b*NSq=z zw}k^BX%BE~(7`n)d&k8mbi)Xe_@Hu5i!>{zCTGBK{BF$8ff-osZP$^ghWN3HJbH4Y z`%q=nj2IH|%Di5XY!l~Vwf-o^(6f9zLhOw*^%8K!A=))s@^9FFz8*(IClt!UDxSDO zTvCcOA3#0;0IS@NR++>mtJ%0ihnp5lbxjxfKWY$-omuL+8)Cxb&p16@AvBbKx9P`x zAaPz^FZ86akW;ap3i1CE=O~0$GJhZ-+DJq(88OaNThKbiaW<8PrH7c zGjyE2aQLbH<4}mg1uKLp_C)JEnI%M`YZ_`0_K|-W5kcL+bY>#Mk1M_UJ$xZu5(Z!h zn0^onoe|iNb726RWZ<9uJ@p8YXlYOMjvrS9$JwLpS^T-E;gjIK!5h-r10tJCR&f-7;9;Nw7j;g6FCV3 zI0eAjv5*f|c^-lx-43ZiQ8PW#Q(a3w#q}N}*GbY49^atTMvVGPsh{(3_ug=GJ8+|8 z=o*5)*IOUL44v+Ta&G1kiDZF4X&ts+_cd+yuv&ZbPYeA77}Im2FRI0U8`&=k(^mWx zkP_tU>{G^V4t;t&SN@{DL*VJ|{w`OH^csfyx}D5fY5opYT3hcD(xP{Lr}0oSoxXgv z4@>Msv1X)y_Uz)1Yd##X)WRhf8-TA%*QO`Wu@jo{jb zRfe0uL-zSN(|VP6Nh#{zq=y{J^w`9#rJ>UlO<37yw^aW=%Q+tn69s_)932PF zT}K?}k2c}StdcH|#5Jci*I6Uih_09OA7gLEOQApp#^D(?# zoxKnxO0INZpyYQDAQ~wo0INL#k7;YS zSh~*DE87r#PZgz~9pNjy5eb=0li$y38t=c@5o!94u#D$q#(k#qVoU?q2R4g zZ#8@WaWC1^M+lAWi$1T>0qIC< zl-PH(sG3dF)4?^~dunebTZ&~eBprdLp5drqtU57;wr2?wIV$O{1y9amTRZBaW3t%1 zWA>2eOP5mQm`7SdAzWe6U%}z}@AeI*anS-T`RR6tlS=m|fSUgu^`LtJ0mDKwM_arD z&Nn3POCuY+B1_}xx$q7Uxse)ERid|H-yaf~*JS(69d$PedE%cHrZUF2qJf&S`xGdY zl`Lo9f)XG^k*gc(_9n73>77SqtbzIj^WqhBvhvKRGHGt8m75l|m(zEJ+o!V3{~&MA zRjCjPP+U`dsPS+@(w|3PiO(=d=Yr&@O2!>temAQ+%7~T0pg17BH{_0Ji-Nr)_oH1N zdB^FrSvekxHARe^ol@O22jWg=lx%3ex$FTNpRfst(-I{m)KdRng$b)U*Q9PJ>oGk3OJu!Of+baDL-)_Cf11w|B86@&$DhOQ@qF9 zTA`+{bj269BFn3UO&pRUiw%l1ZXn>-Ea*A*s$tKR*oba!dFr~r;Ee=2xi$sKIwEiB zYQS|*i&BI6Id!bP%CJHhQNIg;nT>4G_0+zhfwNWX-_r{RG>S%i?}1KlA$0zb(^2({ zr@Z;-mU~C?KkcBhF~kJ_an^Rx&`y3o>FM`y+oMa2YOUbj#18Sin+g5)IM24^@}v7e zaZbZvKs`T6wf?%n^gEL|SoPaqSEZy{$7qBO|00Z~=nXbzU2pcsX}7yhxIS%_YIrI&S#@ zYD@d0o>2Z7;Wv`N6=v50)w81N1r+nU1+^cJuKc+74gJxr>;jigLc=m=(7Zy1q7~K! zV%@n_d6*4pNkS}7w$V8LuhNgr7o>dTmIjPh$aMC5IMYbiO7=-dx z077Wctg!TowK{Z`vNW+az*dMQsP=#2T;Z zoLWGB?%h`{nn@&Ekg1{^)qq|}ZS^)GDXUtTka`#w(0-n{g=2Aue6NZL%^iVmSM`39 zoMbFIwujts5c86oM!##w5|8g;ec-S{8|X3j?AEA5pFHK!D56VhZSb&Mq+msz zR@dy=$`id1*)3M6o@{4mbr2+A3cj6$93kiQtbKn2K$rkmyCvm0L&&dJ*?YgTJJ3ld zM~yc!h63ZA1<&23Z$-nDuV&RGU<({@~YH zwv`?J9S882d(h8`Y~$PA(2OZJX|f|8bV+6M=KTQM>jqa|LQ}Jtk)9H-i7}jdLxn~X@Jgpx@~L)x z#tApQt1tSVn;Bq7<>4v8X=M_YwEWu=Tq3^G7uB28R^mh=?hO zG{-+;KLgBh2F3P*HNwgNK6R!H9lLe^&*#gT&5FSBF)(#pdRXJIWf-Ohpn(Ao%l#E3 zuT3S&bfUo0TPaCQ(1kJ~b609#PcS@$q$NAOMyXO|&%E|7$_`0!C*eQwUF#sx)NDR> z4r3?)A#(i)d>ERYAg#>4g3r01$3)90J}%e=RAHD_EZi#H){PuBu0Bh^-~ccO*^RM+ z5fI*x%FliFQkmJpv(a65!IdyeiR;Sw;v};ER7pdVQp7?CpF*WAT zdRVI3`x8J+^so|p4YWv>g&YQ52&aGjvA#y&hDO6ak-hl4Cq5dQ&;oR|Phh%9$}?X* z=yao+vE)khQ+*Mi<@fz3Fqa~2`=QX!Py%XHl`t_Q1`6&rVIdj~auE!1f9ctocmg-AX+E4)mLoKO2)DQd6N-xHXxl_Rqn$C3T0$*-J9BxF%lc zSyIFf{*7P1E%vvzg0(SL`o)8a;(GDpHa!eK@WbL+Dons5;_kWZ8%7T=kM(m&FvkmL zn3TD@mt=D4q3-O}pRx%yrd6-wdarsF8dSl(}PtYW$Q3y(9=g2!Ti(D z;B)p}Hx3(?!5SI~S{B+sdt9{YD06|Yl@p~0-ldeCe2wfxqM6IAMAeP#N+E^XAu=KH z0qLb@92y?#USpR7LnNTSE9M+cj-J^j9sr%;)X|X7LU}p<0PoAAp{R7wu*7FyYR&E! zjTV-~ORRb)gr<7)0&N(3YMOlcoTm<~q=v!{6m=z&Vo>7IOR#|p#+!Lnm*Xjo{4YcC z?`;OPY2Vb%?&=lsB_N@9==iCwaOC#7#*K6p)7JXW)fhJ!nuEY9>+TPM0MFfcmrNsD z6bY4BxIkiIk5iF|? zijud;j#*&|%BGzViCOm?Y_nl zsXx+0(Bfx09Cv@hKQC3sTLeWW$q((&hM|FR6Z`%>f*1%E!psCItTLw+z#+Oy<}Yij zeo>qnPRhupFPszC)0*Nc8<)MC3U-RIQ*BEQA5^|~_=8j+#IljXrT}p-$XWj=w_Uih z*Eq+bWNnr7bhH24bKR5APsvrYy`Mti-K~~#6EQhAKNWXWY&kKFb2iGYM)_0ZXdKT8 zgXVU7ENKCNt^|{pKIb`F3xUA5!T2vf?D}D_^$_e|H+E!1I4a~BWEqh8k1s*iy`XBC z_f{qPDipMe|CHe~6C&^+KEEF!^L=j)?&Drq)(<5vw)J292l{6~OHNH|mxVmzoz>W# zNcpgEEq@nF^A?EsGa*UC1HLOe@jZ}^aHIq>sS-xqWJd2x-ZpJpU!lC-4;>UJLIimt z0|)9q#w9y)FHX>uU#CmjE-gw^8zD3>xcwa$;E4GS7O0r?dgHKV@8sMgngVR3aDh-w zIX#HG>b))l(R=($^=fWwq#!uEF0R)xI6PE$SU22k6Z%_LBom*sAziZYE-) zy`5Rvo6PDWjVt;=@WBO|(HDL88WO!V7v%U!ul-8@U??~{n_q6+Y+>jlF`TB)*I%_$ zN`qi+T??5tueO$$^?2U-*C{%B^> zoZ`P!E6*(36;3u11v?yjROX-=TzGBAm+m@b&M3D6)5eIE-F=X;1F*l6wUa_&2ql6C zB;E>Jy$LiWMCpsynF6hFS#>RCJ)#M|Ex$;oA2mvD3F(&P8*?I5(vKrW4}C4ZJG?mu zDBs^OLecL!&H40HbK`?vu#4j{&lm1fBU`c;5mf zAb@O2=9Yu@-wxoIovtjp!+}_0gCXngJY-x$g+_Q*rzI!d)@`d6QI1g)1OLz~nRFDa_ZuWM?alYIcNf2i zi-#DL{yTOoKB?tGOj+Q}QC(S#|IIDi+Eg-GFxzbK`~3G9*{ET!_fuy*mp56V*6>$8 zg_+-C5^jXX6qa|@CZua}7;7P7RDT#WQyMHZF#(#2vT2(b=FeP9g#Zd=I7x(U!zSJ$ zI)c22?VHm%Q=H_G64y+@Sx#nB^bT?S>q=tjmi|$RjFg31%aCrTGybXH$mi_blk;^Jl@FSfeB?^ z%OkTochX+lM?hPmD5ALh9jY9Aj%M$O z)vlTDN^+Ht=DNM>xbBNN!sPNzgas6PZZUXocr5P??3rj`D5Ai2xap|Hs5VH=J0p48 ze?2DKMw?uLNwY>~x=JpeX6Ud;>t)*Aw~(1^cgE zAOLv~H%7mIN>f>xPd5y9n3fqDfp*<^c%t?oOi2g&@_X^R>~+q}Q*T_fucKjCx;RYt zMyU-QaMYEHIUU2yq7wKM2<~VDKhl}iUO*a|I*}ff&w6Us4ve1$I7R38bl9a9r@KXf zBJ#?u-0cWn{fFlHKOaEw|AQdBd}yoZGHDBM<%Rsqu8$QyMlCmzzno-j-;E;pRCd|f zDV5ty_SwYITk7`Abgeae$$5mA@I^btAH`Fg^%#iE=}SoX$vA8Lpube(vd8QvCSV?A zaxuJqp!D1!o^{QTiYR6SMdIHujdKK$Z$VN(}9?Vsrn#Y>A|^!{PYRi?6`nkcU=6`X1{}V z$EXqk3n~4b`Ls}NROF&1A^$TepTcX)bIV0De-RP!WTi^M) zGr%pX7K;p9<$F)82=)s%l?Lq}O-D?i_s3c8JLu+UGrpg@eNxaW)O5Qg0K%*iPvD`c zo5do5T?j8tEw-$)nEX7afWS7JbL>!N-8Zs}SaV0r|G4dG6{46ycLhFqC zlk#l)YFElK3(NF9B}}xlV=SrphID-pzqP8^m-jW=2LsEVZ-D;P%tq6q3;#qt5xAlx z3)=QeWLHy_P8p)ujIP7af*YqhQ3ztpZ#;~s;2h|fG`*3;8YPhPG5nvmg5b#B?6=}Q zE0Xj3mef>fwD-GZ-Met-4yX{VueRIvXIv>Ss2vevMyIze1ps@e%T3rl~dU!5V zRPp)m77r2xG3G5d#N>Pkv^*AZJpa$LD`QXQagSuc5QYZ%G`t}KQkB5;4~7!yL+av2 z)^fZsim%bBe~+OxH=iLZr5nXi|EFKzG<3IrU#quHFzpH`l3x9n?@qI1@;Tj3Zu0Jw zyYy@I+{0-{NsfGw!W+;k7&20D$MO3u4;wb{mw9Z6_ENr zp8tJPXu^M{c{*-5alazFk>+<(w^N;c415eTiQM(;mmOZBe#HuVHPHvHp9hcXH0;C4 zAM6BKu0gf11(Ob8cKBtc0sAoiCEGuS@2l(WbBn3cC36h%(kf(6;bZ?tzz|a>=}<#K zoIja9K^mW7)%U9m+N_SfU6ULw(`_gSajy?^PFor8{0yFQuQ?5hj2hOFkDf~NJQZJ} z*lUK0&qaFSh2ZaD`J_(5y4%TtY%21L_h0GS=$dv;-A|kpEo)3 zooTfiiR0=KCZixN*;z~NVdIZ7e_h6i_ankWl0VZa;f!SVKHiMNDd4VtfnREV^4UO7 zpIGT76soX45(({iZmrZ_#>ZKWFEF)AHX_$Q;aHu^;};)I#qEDq52_#*IjjRi+!%EOMNCEF8YD4~Js<~0ydvc7+J4QzE8D+&v2YT9by^+}KE8na z{JdEuR?8;}civa$+RoQEUAF#{p9kA}X;%F+_qJ!Gcic__4LqN2nAo9&i+DT=Ae^PJF&L2$?Az>DI(BWii6pq zbU+u|6uY-{Vd5;(z<9R?TifA5i^};h9Jt{{or<^pN=P=lgA5>e7i#~TwmM+uTtF4U zE*)wY8d1kP%y7hPKo%9)Nd}`=25wWv%c~DqoZ;6k2<73unH11XPWtxVnJa7img8GF z#V4<4d%cy)=ue!TlQB`iiq=FJh>@FN2BY;=Z_vt5feDxX*ZuRGDf5!-Vo-^TS9h0B zDVC?LS4YIFG4Wbmyp*UfkOWmF05!-lV<6{*&cy7wlhlhu*M4lv&0p6I`=Ei9S-MvE z+yAh&R>wfB`C1UWoQbc1=Du$je8vAgEPK*JwrjJit{(vb74vcL5XXc|@_kS_o$Q!W zdFBWp~voz;u=5k##-BAF@5WU z(2wkCoBRrdVNYpG>zga_xRKBXrU(NH2s~2)GXGUWc=<*S*T(~ED_{w8dw6#I#gnRa zxTU|r8%*Kd#a`k8nRO1j0<1GNr-L_s_s=_am>nE zCmkzy6PC<_5MPx@xI1|<0RgvT=LRB|gEMQdiAx}@T#JX6#Do1SCNT{ud3 z+-_bAYnv59Dl7$xI=do__dy*~$Kv-x-K;nsP&A>Qs?sYQ4Bb6CYzymyG=%#SJm%Kt zl>-+~Ls&eIHn4vmVXJ^WAp@ERE)3{LP+XlD!m10(UB7dps(a_bQH60eQ5jkx!dE%t0nBXoBzg1pRGSK@ zTPiwYrBRCAnT`jBc!baCHU6dR-c=BGn!9>w7=7QA;|#*}zm^dybmA092!Rb?Zp0{F%3Op6b-`;Cxd{A1d${l{a9>Ci@%!_;SBEfC7beQl|>$a zyb6|iUI;vV`WGcU1gaWQ$jFYT(8-F(W7$xA{!JJjXIwpAV>Xh3PGpn4RDk* z+x(E(dy}z415UpK8>Y!;x^bx3Y&ZQI$wi&zXlrxDU2wLgm6&zStLBpo+9!fk+{F7Jmtc2e(QP(n zyJ5zz3I9@fsJMn79>!}cJq$G_A^roQ%0d=G^&7I4CGWHT2R)3HK30ChdAmLV@2wwZ zOdP`o@vp8g2*J_bpgX|fiPf~ z)Yx9?DjY5HF2fZ{YAcna|IE#Auk>UMf za$@Li+`Lr~=z}dh1(bm9l@sx8Vh1g^%|pI)kGIx#n?g$^7N6zfBNW$Xag2d<=F7e> zu3175bbyPLj!1&E1Py;vIH7WiQ1wnL+?l1HRS1t-?%~dYDewwZ!JcmE_Ik)_1wWt^ zr=|X;^Oz8VY@E^U+Mv7_5EE5~OErhP89saoE9>UPON`X(Z1;ehQ&N+LhzNH$BCnTI@15#YX4yPxAFERX#x7T?OKSqP6fw`Dr^sfL?;9a z?kn=8VI!@n*|chjWrRUX!v3-upE-#Q^L?Gdy9&%urzcB2Nc*cb9H6Ih)0};DjWbvc zvDf8_hO>17XVxr`j80vBLd{+l{!w08rF@UG4%0uo-xYCaZ+&7$!u95#_2sJ2id4S4989qcPM`b@1W8; znDiUf!`4asNe3*(Zlr(ErDr8RQ zuMI_XfF`*RSOPgwrD6ZAI4*c&<}G7fIT!Hb-Vre9WDh7hk#k*Qer>Imf>{WPthE;DvtqE$(8t z^MG$F*t*=-mVygU(0i^Ojw85>^AE9;BQ;-bY5*A9*DhFm#M}*ecw?3u3or`?v&Bl& z(+46R`$1~D?nv+J604IUy~xtaol3|%lLT!+f{NfwQ*Bnsv^wQg3C36^MSc($t290J z6*W2QXILLPyo_>unyMQGjNml0bxCA(wA5fves`kQYY`&U3Yv+jq9io;hByu|U%ro% z2_XK0=)2Z&zRTuoSeHye{;{aSPP?J+!QqYX5=9u1C=pVN>>_U)9lvWH^u^qTs_WnI z(w_inmMwU|{D}iGIb=-X{S-9+)}e$`gBt~+ zd7dYsb1nbComQVrW?iqjLzyVJyxkqLZ?rOJ+1k(^QkC#r1&+uT4+VU-tqNH71bkbC zCm^HirKHk-o2zSWOsU?f_Peu|F`}+{%Xp|+JV6Q=ax#Y7=ef$mRy?n?bOae9VUvkHj^xs{190O;X4a zoiwPEYlevjMT_~?YOeX?IL2A59Y}xd-gS2*&?%lV=$;HfYiQ>}43$3{xzYG&PfU#W z9B?>B%#}+c%uNel%D2W9)Bb??{ys1OCwGfXTm&ZNv9nh#b1WG15!(H>n9lUr6!N0vW z*yI=FTnj-4tTJ!gP%K4xV^*TM>)_RAF3%`S7?3tOViwJh%|e=k1u0G!?EKydf)Lv+%?u80P_)Uv?un zsC}QejBR(QxH>YjIOgOj0EJ|}QYkM=)>=Hi11Arks#8bl0Vueiq+#5jd2!JEiLHpg zIJYTc)-5gyPqy=2E`ABMKUJc!~9k^c?1FRTHQc)m6ro@3lk!59a{afUPB1 zT=YESrLn!ym*1n$O}=u-fx+)z8+lnf5`vrS8RvN`Rg}EiKmM;cF)Hc8fJSP@t?4w}!3}ntAgrle!l*r@Kh|&_js{%qdfaj~w?qQ# z5Fu|%8WN?cJ+lRH(fmGrXM2?E6{taGf{+ThVeTRPXQ{fN3lG)rj2&pn=CpA5wd}hc z2VJu3;Mw^(rF*>t8T$hcUM&ZktO>O)1I8kFcUAS}>q1vrv{mYNFSB7E{Av zFBMx#x>4OQ^XuJa%$WWdX!&nG>u%WguWI%Vh30;st^3iTO(HLfJzw&t^k?=yL#}w< zQk$g4?-=t~L|Hjz4^T|I^u_P{lx`ey^*I^w*hxf*VlnqasyzvjkGjRGU?_N)g>%*> zQU04b5P%Efd(vX~xNL6LJbwaKr3yBNuf#ps{XNM{m9MEN)lw73|BF6dQ5u6MKF>$$ zQ(J$$#YS(luWv*)N3!B=0MC$2Wdyrh&^Cos`P9duj(>8_p+w<}x6IqUaB{ zpT{EgbiPAH{Hb!3-bzIxGOdB16vmCCbV5(8KP#H4D19z^&r;IA;}fnFb8%BkDEnLK z^OYk6(FXY1oQ$IUfQY775uv|Me!Z9u&5KjUgqZ#NhZ+a?VhY@WTR~vZI+JLhLfMZ_ zQcplsRU+tR^V(;xu3HGUF2f-XlTHnsyu+Y?rI6gUtHgcY&+g}Yw$@OODmNoHf%Zil z`otXg*>^Hl+g`ob69r1#!mb71(G=ascsrm-O&e93QcCcScD`3>n+6)Grr79QSmSf` z_?6Fq2QWhr%-``_`n0OGSO+7Ov8t!l0^VY;XxA}QJ(fzh77JxRT}qA%dm}AD(|4@- zRk~~QxsEr3>b0i~opGHxmWB0GzH?Zzhc#&~!>tT*Dh$RM80~cq#=6-!iH0C|vL?iG-oGcx=<0 z<2HP=Ec@yUR#Fu6l+DGebU~4Kl7H^xHXnjs;wPW!UG+5O}sXMu_WgW9^Yu z&Y2O;4&iM8Jexlr(jWx9((cmQ2dD;8mv#ga{g z`Y0phrOveHfHnBoA@G>Ju&~IS}UUx?(G9PKWi~MxZ zp@*>4pSlNM=IFr=Uo!%T9J}32-5yicl+u=oBNIA0Y=|6K0JPcul3)>0r1^)01=V zRsX0LTYO{!0qg{&)2U2k zk-!L+MCg+cpZrnbO@9t;-}X{a6_{#M5TiOcfX|vTgdq}>IQK{S59B$pAEn?dLX*(A zy6K%jSBQ%QRUspP*3tU-vUyeGGWmo8()hHAUV#O(wWIH?*U~Z^HP`&s{T0CV%fL3% zVP{gC52N}o&T2wuay1=(Fl)6Ddv~Uu)Z!^Af7o(o!x^KKXAP5(%_N02=~V%S7diI= zubPlEFxvOanlY*y98u=vF8}oTHpHkAch6FYVqiF91!X8+Hdt1ao7?1of%uJ4Bj^o0 z;>3It!!Rg?NUD4fE8<`vxr&qoB7M?q5-12cZDwbxjXr<~3B2UN!8Z1GAAn-`VZrbe zy<_H9I}c7ep(?}jk_oK?xSKC(X~CeMIUn{8zV@kujltrWeH_a0ST9yWx*B2Ben%A! zMQo53(r_8{uBGfjnKT_-8L^fQn%zQVe`tQrWOeQ z4VfXZnoaucFT-qDqE#DBOR27SWC|g3$ z5$X0MS|_7&Bavuce6FdFb1Toj zn1gaVWgCl!`&6e9yMwm--=BdbkHLT^d3F_Ko=G7pe7IY|`9bhomZZC^obRCb3o z6#pdCqO;_A1-PED1>?>SoiFc`aBk0A8~l=n1|Vg-vl%hpC|jQRUucVD@dvHjlADX9 z$PdM1Ysz9nHka&QyNTBLA}g7*wdPUN5hm5GqUZ-%zqqX?D!rW@5T{TWxPlegGC1zf z(NU3(Y=sjc1t&oLQPgbYLnpUs3Hmo-h``KN-$eFxDKx3|1ygPmuryKKyd4DAL{X+; ziFvo zNll{kx-&xPL4^pNV_tAhC^CjAGYU*zN(X8MlCU_uJECGElJb82GHZ?aiw_fRxn#HM zaH|&0R+voW|C9>1l|s`TG(hLH{@XfPM$56h#Up*h4SuCA|I)L=GT9A+G;`*kR$;^2 z$3IyOZS$(WM(wJ%Zk5wqHS$gGCQRsHIGyF~tl_cukE)1DP(}x^8pxr`z(ymY{21bU zau5y5^whr^pq3z0s4d2B=1;htK`7zqIgFmo*}M43{gOoI4=CDYGk6-zL*{>PyK0OM zMtU(S*WenROd&8+Ttr(5K(h4Z+O{j{-M$ArA8IqMB*j1(P+$9bw6yHZNHOW+Bq@gw*|>G3BrYl z5124#U$60Cpd3=(_$?D#``Zrx4V8<^A_5OOAOQ#fbzQz4kuool=7fY88w7yBV#Nyl zrSSh7F&JQo%IEydieaM+VbepZxK6+fevGNEXJN1%@*V4|h_Voc-1r^&tKg4DVGLY8 zjZj_N#3H=I&r#NzM;4_;`k_~LjXm>mK-C;duyno{9y4;QVHMH2Qhj+3Qq&LY@Gsrc zf~Qt`g%Z_g8Dq2iPum=d$`4uDH8l2V!kqIDHa&74H7S}3N1`G-yHh(~J0Sqs%RQp* zQZV;Vm!Ow=%M)IBi};&##dw(3;*mC4YzTb0Anja2kA4EMYSAll>4U&h@LgNTqkx`=3oX+c}YMw7S zsimC*$6aV$lB}0cSk8i3)~GOkbF!-iqptvD=AyU8=Rd5_=*3WZ4kiEVO~U z36)6mq+j)!mh{2X{n+*^?dmyO>dxbIZd?573?gQGzixU~a1(6sE3bc(ZQk&RFd+=b z8M*y2RGP&=MOZ;g!O7E(bcOO0%2oZz{k6X6Y0TWYdRU;f)cJH*f9P0kPX=dP=C@^X z9*YV>AhxH>M2d6-1hy>gJd^E|&?l~5^ISNUThvJf0>K}368dAh+*DLZc_=Z=U{~y; z>cFZ(@Bf+a^aRgJcBLKq{kB4<%_6YbE1n^|T{#1KcTl!=uD+Yr%tBZ9&-6SD`r-gL zK*+x?ZXEmr&OGxmyLc`8hYO0714p>FsLcJ@6D{2oQP;TiUv`1vSWKmeSr7+I%%4g% zL|*Z@%kkgeuJbg!7pByrIsd;IYaXYhN9@Dff^c1(p4a;2Co;RvgKC9NdFC`*8}iu4 zz+M!i$!sc!&x*LvO|1RN-KLe`rLWz_JGfkE+dEfFll%3SH-8EByL~f%UC32A^nhQR zzlRxeMf<?)A`v_^M+G2aXp>8f?8w<^D8IUCH=u4S%`plW!O*K`lR zN&5EU?eM$H+abNZH|I{76f`5hxN&?7JgNbK{&!{VHdt4krjsEjsIMzV4iHmRQEcA6 z#eN8yaGrvYL&Q_|n9M>XU9$b@dHyMOWr^A(Yd{WOc4*Ly z8wq@a$C6t#-;WWkL9^iyI6@K)aNrEniE%o2*X|Q4LAQ!l?$}{op&ezOlCA2$!vP!S zCQ;NcOL3w^n{7rZZ|Enawoo|*-)s4=pG;S~=|YpCj@|)8xb^zlyxY%9A$u$_t(65y z_A9lCkfUxjBIGDNA91W-@M0Nj&JL&O27!$96MzewYfr*@% zD#DHi-=8RM^Rwn7d9GcRjB^@_5-tg-WD$Tidj685)=!RI?yM*H27QI*FU-GkzyTnm3nuc)v{_{ccsYl~QG}>Nd<#tJg zt@)HPdDD0(*(oGs-6SP4mO|D_K@$1ZyK6QV#f@IyLdh%6e8KKcUCq-;jyFE75WM{p zCqw)-+TUr5&4V2ExR4Anb`Zb{1kNos{t@Uz+`YyJ{2QzWKjG&-CP>kQs(ReuHfQ(6 zTAt1<<7coEl4o#HCv3k$&$jFCJU%Ht&|qhxx#O8>Z9FSAL8LtaVb&i!sr49h+UxwG+Rsx2vpTgt)sHIk-uO(26OQIxX=^`$)larYeoFM z>kKkAq-yEW15*;!E4i$#j!6I!31vJ*0ZmD9W}GTlGCF2WIyRsXV{L6&y?>tl$u8J! z#5a^`In`|Nt`}8Hu;FBHiq4vLL(1s%kKuOgr|1?-eOA;d2{;M6AKO?(3`jGz3a8#g ze=RV^KjjoW8K`BW*D%b@>7m^&v>x|2X}gE{kNQdN^&iur>-o=ULg%^H>P%0Y*d<_Z zik0`J^RP>>13!b3#R6Q6?576$4Q)J(z!&PP6Lo?E{;np<_I%?<_{;T3l(Ef?d+}X$ zS{JaQMkUL-o`B-+zT61Z9Oj>FI<4wIRiz#>2xx%`F=6>ypHEbs%K0{4K|*{j#?Z*?`qH z&`%n0K1rcADKto`ADDVGG-y5UKdsTrAOvR7)jhW@)#F`{2}&4N1eN@QKkv7}K?i@| z1d&B%)jN;lLlO7dYKBFAI#C`ik{@=m+3i|L>bFuqlV_wy}clyWPz+jmV=8vxx$`|e^ZZ{NQn6nL$EQdEwi>>`&yQG#D zdY3R0s5x-e+e^Wp?ItjoL%OSwsY^rAUZJqAf-%7-in(&uUN!#DsF9J4_zjSmvShzc z%5E}uRJN&lW^Pv^b@s(_vC2NAdLf4TKV(u@n&nXlIwn*I>Y~(|Kj6+5U5Jj zp@I0o7`Tdvy!)9$sy~NdIfHUduH_G>$WlP1ss4B%4=NN?a4s?Iv~&-1)qVzJ%>|KE zHumSdKsNk9-W>Jm#d@9GO8<^q6a4fwXI}|{lCqaqdtIsV`~AxzXzz#sV<)9(gK{>S zydirU+l1XYUp7`21A8l!nBgWJU+bUksKlv8USm9qRB{s8YXk1wX6kORlPCb11VuNp zG@QZXsG9ux<;4{f;Q>CRQmY1VKLm~(P0UMa1_SwW??T+sR$tMc5kSBX;RH1+NS8{f zb?uit?Oq!<{EK<)cgRh1HKIF?<2s*wYo1zLb2}LaG^TuGUtwIKmkb z2;XsS_GZTn!IAjv7SW)rL)BOEW1M_Y(8k2p?EC-j<(9E zlgn^YKrUd_`~3!E6BiH!>rjN}7)?J{;L8~Yg@b9VnJ56axoZw|K*=uu?UU{(FlQ1(wN(FbWPTc^V(RHBPQ_14@T1r5;7U z-2c0_4}#fQ%$OmnILT4Bl8}{}#v-!GC40p@3)I69M%?s8|JMzNug0xld+uz{)1 z;HO%0ZG5p`nV)D%>s(_Rqk7Q8q>Y(%_H!rJ{WP%La(`D6ryz5vgyNXVzuUxZiTx;y z;awbm2SF+ZcL-VsSB*{golPIrbgPv;Gw&wa9l5eKf+%7T*8H>S$X~)SLBNkz;_C1L z$F}j79Sz~sPA@G4N3Wj#@zIRX!8T?PfD<3x6A7$w1*j?2S(TG`$d4X)3Cbv+1}DKQ z&r1!0m`}4YoPfJ-+l*O&7iypooSzC*i%JP?6AueZet-Q)PctA85{rTqi9qfUqOkQRi}pys{PA-Stawahetj{Gf_&O0D@ha29}kk z1Sbj%bkMfeu}hzlL?;!ng+w-0hH}~z_VA5qaNX(JWiJCVO}18~^vZ_61~Vtd7fj)f zx*oiT(^~WA9P^1KT_ePcF)o!1n%Elc3mEc{Ak5&!2|?Bd2j|55FU5tf!8Z<^ik!$E zu6FeDL-Dv%bC(UK zwcy*!T|k zMDb-o&2B%+RFWjtUhzU34=uTNN)t_$pSOCykxYTzKBYxJ!n<9}B|Cpa=kt|>imF=m ze{w#{acN6-ju3ZDSXM3Or?O}Ncn*%D53+Yyo30R)w+VBb?}44prD23#ikNo89!t{6 z`zwYHBwqUMu_r{`OHHH?ksT*T%I^_pzZMnI2d3RDjZrLiaYABMc#et!9SX(;!_}}f zLP@Rau{0D~b1aP3aWxco)&3-CUy=(Q9Qq}I8Gsd%8;EppKWvM~ynvZaGW3c?i!|JZXRHhq+)Fx|o9!`ahGk>_JM!yx$5v1`L4v zCan%?sG@m8OWws)SdH#$BqT~zn^g@d0BosA(iLazx-3-2Pw$`Zb_982`4CP)aU~&6 zMx@H6Z$QEwJm5dC_rY5<82pAu<{WVJtvTvE6)a|<(IkLd!f>L6!PFM#yTnb0rpJY6 znfT@N`mOPTy4pE_)fDyN5nSA9Tu=4=(r~5AtI#8O{YV=*sn@X>+$-w^y@~|C10(Oc zxgeO}nE%pOPuo+KLh)ElUxKDN0>w;jab_7`!knyYm#6PxCh>VFKB8iP&ZxQSLhP7t zl=-4u=(x9(FC#kAm&g(vjFZg;%5iON^kk2Z&HFOEb*huliEb2vz95X1>>IQpS#OJq zhnh#uvAKnwcw*!xzb0S}VYgRmk%Nt@rNRL^oGx0Lq2+kg(J}@f1OQ0j$F+$7CtQEi z-sO@q$jt0`wC2!oaD1C1AEpu*IjF~gHQg?Xg43n0WT-%DDbEF(EjpoaaX%=sPn97E zf#i?)#3ht=EX@eRU$D(Yg&6Bk$KVH_bF)>z|OS{?g%d)JRIKQ;rjtzpswFet>M_#0oXJ{_t@Q|R=`^&)S3Mx-~ykx>F*N5sch!kyyw|M z%GDoQG%F$cWIyi+#)-c^^}19(FsVZ0QIXhXx_tB?RGjV;MS0amFE&hn{=MTgh43pQW7OjTUW^5rU8Yh+3)wV3&ntT?JaBlE@n=q9OmI&P7;)ybGbgU0-CwjH|Zbml_xki}B@Am3ZN*!&s-- z8u6Fefc6>AGTGDHUZufz?#U_59<)Dbim*_G$8h15ryOhP0r9$EF|O(Kjlwz8M`AM_ z>!~vwf}7-zro+&0byyYugfhsQ3G-C{*o;1VWYW34bxzvy;+5bm4$qqNZ|tuPAdaFr zV|&T3|C&p^hit3uWjF1C5=wBJ(H_=B=7Ig6YpybYzc)Nkew)-9qS{tOL-@yRW4Vlg z-#7&(;3JU27AY9z=uGwE5LXjE%{WrvxT{V*la7y1C*>tCavzEkuIHTOxO6J=(P!0n z$!umdRx$SaUU(3Z)FZg)p4>9Xc1*5iR%;tQ22m-#D2$IlEIn<{QJ9d5JW*^e2?%oN z$-NS%(o~Qul+fQIrsT8aqLN%{ufdy!{loQG+0N{f(53OKB5?f__$I!GTk4TvgNFA?y)|9MsbkLKH7qiML%mBp$(%;?2IyBC(IX@HcW4c|NoaE7z{g*?a_l zb+D)PlE*jAT2!F$=U73MsavktIyk46xeV0M=T3@Vl>XTH;=m9^9jCib8G?jU2%)RFsAJj?v~3a#!U>4Hfru02{j_T&^~y0c%k19v@*8$iV>vfhR#5B@VQsFgI(n5W%9 z+TP+MLFyVr%1>6Nk4-~2jGKor%=PfQXdSRRyUBr#ZTCx9ky89`;DxvNx$Q+AS|Ovw z@aagm#c9yfA~6+n-Fej@OO1Rjh1exku6d-OaA|C@UUiT?@P;LVHeD$d&x2?F=eM-e zpfo!Cl!EB!YLCZw>gkWmLdy()cK&5fb1|}$q0NTrVq7@@$%Jn+$eLQbRA{}v zBfe#mWoolzF=U~FjwMQTu(@l7e`qZCn*ib@GA@atCQxm*o%)WX_HS1v){cGS=OJHY za6ACh{Q=&zOxM9=vK)(a6>;{i3uWXMUG6lEI8x6G0FEW}4!i0i|LFN%zUKYsP;Crm za?vYkMp@ILo3)xUw~B@Xo1SZL;k0?#*tz{Ei#(6scE@k`)at$rI&fwI4N-t%r?=cB zR)V4m4Ne8Z@RXz)!6rrxKk8Ho2qbJx3WHG~<`5D@lLml_nWZKT5t;NQvH&2PT@Du> zs^mp#*g|x-POWT=M-cKoNd%zXL18X2+!~v&F0&0>W+&Jq{5R(7_!J~NL?o!y1Uq)S z+I0fPRxSKU_iG_mkvd`6F6iN1-V)oEfy*+wEP{o^`d(Dfa}X)B8EL^#JsmT=v*LgWq( z9gQESsE1;)YbkF$T&+j%MRH^csSqyRV ztwxL2h|0;s;Bk)M^V8$`Bf|V_V)j8*W?m^cHplWaSROpGa{fR+$;i>x@FsMeNX@`QLB!3zZiZVF)d67ZBm zIUUcAwcH;gaj}rYb!DupW8)FYyw%+xGFvl6)kZ98TAUiohzbNl@>QRprjBi*)x+h= zXCM2m^Aqm{(n1TYV)kV&{fx6p>0&vvmfWYVl-D|~f;WZ{QGr$)2<&|VeEg?AeZx>+ zgDd-bV)9Q3hJ7$4stmKojRD$4t4C?UVy}fW zcWtRE%y-bS&>q11b2GJj7p!4;lkhj z^P8PBfdcFy;&HV5Woo>zLO==Tc>k|cqE4zU%b^&wMId1G>g#&e-YlHga=?+Ye^<3= z)7@?sjR8n@dU5B4ix>oaHQ+z9xZJ8-48BXRh=(BPq0*uxaH?Un5F-?E#K1Dx6EO99 zrvnZORbRUxZk8E@ywq)U0@SScb)721cCjLV`sT?K{TN?iQa1+Fz@!*ve(P!nu-3>L zGm`D52o_cIH5-byX&{=ja`|QKZe(7gu^j7wS!9qwi%K!Zmooz0F!rj4SU^F8GeLwH zGTRskuERShYC^KaQfZ6`0*A3P&CY4G=LEC zke6T+2F@@9TZ44ahfrW!Cj2w(leRNpTSphJXW-{`a}#s_Rwri3@{iXcKZzIpfsV%B!)o7yNu-xa=}R5 zv;dvZNC9MF@MevBJ|ld3K5TLlffMOpNkmuM6dPOkJmBl+JjyS!#{k_l5%b&v8_;!p zJV4@>mU_!82wWn`05!56#vSaj=wB{htaoa;e9C1Ej|LOW#>u}_Rz3*=f~>suxSSB1 zQ_EdWV%j1_l~Q~87F^B4lJU21;~ORC`JvBA($7xP?ZeGHVOq8T)O0hJ^9LJ4^J?20 z)w~0l%x`*#IlaAey`PB%Bd=mE+T=9pz`rI>$-PuBgp^N3OwSS%fik|H_sNsfw_DI~ zM3>!qNZ~j3Xw2%RWUB8fHO>gx^ew%MuE6s}`77wc;o>pr#|59 z%6u2WpnKw3{;Edfi|2q)6et}#g(!LA!)Oj+c0wR`oSNW4b(dGUu`#6jA%apkNHhA>{r4mDXyO#TG^-ezUXUSSGwE_9HHXAO=#NseUiz86;k*ghD?M4{{F)Uo$_~%tKoeTuwSxH%X%Sh)6zf~xoLq`OzbD;=DpNx zBYHh~yxz%uT^X%CSnc{*B!OqJtqzk{{0 zROCvjw?XzK_&iqNDg|LJYmOzW)i3Xrl4>#&mLA{x*T&bH9U@Qkt{UWP24=bh@^PIw7o=zJ(5 zlDkRO$n)rvgq~>IsNJ2!6@8C&QDS3MMVac{i!Bv*p)+>?8SUQGKS0A){BJV_NZ>5qw-P6E|~sGyD)KNLJbY1qo5>0++}K zQ}tQ{ic{(3 zF4$%L5`<%gK;s&*M!(QyD!2cLVKr|wy;TI*tD`Gjo!%n9hdLI+XS*WL%X~&`CgnqB zDINO(_CAttr6xY!E%fs~{>Z$01eh4BCcQ(RgrB!-?cVCqN~XCLgR%<=!R%AMy#;BvEcT1;Z-%ct zr`U7~Gkl--t>+4tlGn;%I1p%ed5^OXZK9C94g*huU=9x+9$$Nw@y70Mc}~9{1SD|d zXbSahmAje~^^F%_?U#?XFfOs>gZ%YAE&205&sL`M^XX%;S^qrygdEfl$-^)nhIW@_;@1_@8%$>}P zs}w+#gLy@)e@Ou<1Iw{cly3au*7X?3^?uwmYwnHNl~upgL+rL)#&@Q9*A5NQ5k~V8 zafS@&s3pKN0KiO{0jCW>bhE|McfyX^`LAPj`9gInY%mTSiyO^Iv&HheFEtPZfgA{j z6L10Tph1S_AQFK%nJurGaJg8XwJ+~vhR8)NLiXP}i2h!Yr=k!TU9a}itB~*wnEMhg z`2=i(I%d&Qsye(H37}QJjglF%q&lP0G4N?wvv4KB_jr1*ImmSy6;wH~A+8`FNLM%l zNi4WR6&UA|F%|6yRSl*1K)WHaEZd>?;7VmlA`BB?h5$pJegb#6aMD?z_E{ zXg$Cac@&u@ON3HUlZ8Od6IKa1MZACE-11wygNc`MYjK$F@76K1i)R$)&2QUE6jkP; zOF=ea-2XLSfK;4{XFUG%EmGE0d%&vP190}nB4f{n?n%K87kRf8+ctfk9TycBM)BMF zyeZ2SMmzfx9eJOdz-gE-HBvM@BO`4uPYc%gKRSImr^!`GDr`ujTb@}&D@_7!o@|lv z9RE?1=BCN%Uihs@@#}xeqipkbY~>?T0=|D~39btz z?SkJB+#+6hQ=U5;9_rwG@c(_!lK!?d6zFHo38-i=QUbd58}87fP}VA&GuY z%JU88iTLmo_3pJoo=NtxR(S!iZb7B=wzflrN+I%f*2B77uAhPM7!l(F5duS+9)Ay#Tn-CY z9g1Dh-PSDlHeIRWE(Mk+C(b)Vc`VFJuPLHL6C~727WzH85iPP%1VkXapZS%dZ}kr{ zx2+QFk1(3SWzh5(Hc_B1S)G8bmdSv6lf?ycX&~a|RHa?6zQ~I2y9MWOL(GrpMFmFb zCJr}GsU1vPy(8C!lzsVgPJ`dso5`dfq-vOc3I&tO@*QJe_|R5})5u$ee+#2)Kk~f^ z`oC)GlDOR|cPr7e&&ZKy>6QteWKY|F&O4DjMtDt#&|2J@MxG8+JYt@|vKtUt+9fJDZB ztomhhLwy=mfAM}xkiL&fAUHx$>-V%pRyP=f&RYcJrf6<%``lK3HTZSWuf6z!%N zLU@R`^{GNBY#uhT7~m76W;_M99^Nson8VOHo$pUWN4$0`MrX8K?4IN(C{#*SB?Ca=EDkB|{sbB+HVqb%hvS}b03A3>ox z!?9a*^e48}5+$j_r#6Q(y?8VXl8uvCinz^{H+CLeKRl9 zIP?nv0~w33a{Kvq7nJ?Iqa-igPNOnU9t8V2VgS|>ImnOs(;)nAea*FWT0zA)BkoOoa*|_X$Lx>4?!fJ z$ZG`G+r-p8sP7Hpx_)m3puWTxm}8A)7=3oKTyZ?OnLUm`B-L8)=!2nO{VJtZTvLpbDxc3c&>d4ybtb>IOc&9^Oj0Ts}>5)(Jg z{1dD=g6iAeRATvwmIyysCf?Yn2C9>MkHkxb!CJTWu~?p*w9OH43$VIuF=be73X434PRKte(j(+|QShd8aBjFt5oz>PDvHr+f zd%(+{AQh1;@BOjCobJu?o@VmRmHx~z5Q-P`FT~moydz&>qhUT7rgKLRqsq&seO1-9HfvWMLo2`S_Uj;*IeijzZP^17FW# zv{|Lw?I9#^>E@nihCp?A&fD+eFPzhrK=V;Bs2?+|$lu_Epnl=xzJvH(1)xavJQmUVkz zbBHva(!433yPq}WSr6@wtFyOeB|h@~llU9Ei?k~dn|_MWG!Y4sB( z4*;nBXRMNSTRk5opoGcST!eF@^$~reldnkQ1_RtqzH03=={q4vD_tdJUR{!Q2&8dd z6=Rr_HZ1O3e!L+`Y93w3$gzpr)f+f9RX@erM|Atm^*|2V?hE-Bzmvr|g9n|OcjU6? zbLqD$X06x3Qc)P^|B_mDp8TDzd>+BW`mTPldXWKSNmc_{-KM@n}?gFX)IM5-Td@7=$sfw1fi~`YRG!l%Td)%AYz7 zj7~8lOlIecLWZ><8uU(RePLC&Qyz&3TYeqR(%{WqCcw(8>Wr`AU$Z7?GW|5a&4)IU zq$ZT@W-vUQf4OUaykfrS(dD6uzrgMw06`rU@b>Z~K&Yn^V9YS`$YKHu!)Kl9_ClT+ z__k*k{%v#ZG`&~bh;SWkl<;-YD2`SI6@BPF@5K z&(9fp*J{-jxY2}16C5gP7y0IB4-k@mvB`%dI#CZrGh_YTS!xWrno(R}+Ko*sd+PmR z2QcqZQ`!3FwdC;3?r|bjc@G1qSV9Z$MhK=Br!|`K61lKSmX*JKfl8au#wvCiwk<1< zncYfdJ!D>D$?ge52UxLTZ=b)neWqSd-#XB=ulzfq8UnAolS&F!*-|I+vNVBmw~dHE zF=E`KbqI*Iw8+(|Yv4SwhhtIbQKBjo+#$~H$YfH0fO78x4xZ*;K>0~%6(H8-&=`!$TwxNs{`FC4cuS>Mzc;@dgP>3o)GUQ0La5S-E!ic>cIAW$`ZLjUh zh=BRotq&)~QOzT#dG3|?xnEQ2cB&~k7f(%FuW|&tVu|X3eRKqMfYN}#HXf2-cgbgw zQtLAW5!CwtXK&P$d%+PMtyBRJz&*ci;9@r==q%cuY+6-!@AaG})nNV^mZf)-3K!+P zG2rrM>COm55F0WeV|j4@BiN4;xMKXf`)b@tKh@s+&A3B~i}T1m?V){|0^~#IDD?hr zk1Ei_gBX4eK6VS0cZ?JyjlTy(Iemo7sg#8YGZn6DDneI?oo&HBLcM2sh_q%=9cA{A zd1^Ok7n@aOy~G87dYb4nH(S0>&@e*|DxG312g{)$HcPy)_kiP9WyWUff&`kBZ^Xd? zY|=VANAz4rjHa|RmP zWOl$@>r>$IG(|hfk8i=cqcxy^<euvI%@!p1|RN*j(>hXQ!FKmgbm{j0{0}+TAOWwoN=! z@I^IXi4aMB6?vPHX-V7soSLZ;2)mSo<3|Cic&onHC&GnHzo8yuqSwB7BaTQJ{;`@VeVrJ4u_NXS@(ZwnaDSHlfIUf%# zi;+p-XCo%VP4!K06;*nM6d-&SXI~E|@(q4d8(KSpXm|BHLn33I@BunIEf1cTE38F`NqTyM4YJ zBg5Si{StiJl1vmns^QsOxVuLhHOU%d^A0-Pl3nVIFS{yOw;Nii(1MSVh4>&0!=0l2AZ!#=F%d?-62)mG7Lg{{9J zmx%I&j6b(ih4s`;FV>THA$O_$HLbGM)Bf;u(?~l_--dlj_p1%*oFYk6D=l4N@-Dkq z_bhCet;}RzEVwPF^^@V!9Y}bLu%=bCbfDgx0=gKptAEV!0|yq|-wSqIF~Sfc8B4aP zX$fU>>n8jWanpY{1(2g50aMiK(J$X>FySnClZz3APt|~(IMD?@`{F~_E4}%wE&Mh9 zYFDjcpHZoOHSr{_ccxv7qeX?8V;ZG=$u$<}%9u84G1HP=UH^$ijy>si(kQ~{_&R-% zOr06!vC}ptORg5w;wTzRGG9m%{L85t)bioKPfj-5k8{D5$ti{?JH=mPH>>+&CgECy z+RgvtizVD@-pMf*h(&n(+oA1v%aA08e^=3I)b)?v0l(890=PiGmJSC)c2%L-<}Av3 zo$mXayC0D%T0+KT4yIAU3%Q57+kVu|T6(3#*HnqM7RoN*R6PaN2z zJmW0qIvy(_h=)*A&ZaaEba4Vno!x8k(SOP>9sB*-@u@>0i``1WEfJ6ooBks{Mgkki zxLwArz!?lH$wYt#S4db7jtf>>+NrbIGE1IyDxTP`7wP72_lMMg1!6!}m?02}RJdoV zI7&}G$5APe=FuIQD{Q~;Yr&yia1baJV8-2yFzRkd9_Vi%uS{B|D2Hz5I9wMWcytyo zo0)tpS!o(xc9fU2zzxWIe0Za#D`0LV`Hzz6p>@>z17awX1BZ*&$P>S&3J}+WUEJgh zq}uw0wcjGS=rtet_P#9)ViapOaySUWrtldJr zc_{I8=o#V55${$w-e!BM^0Rqxnh*7l>2Xu(t8+;+QqW`nHI@quj9U}#w~420dZlQR zk=lact=IYB)oSTSxMBso5n2N$$aonR`oY$D+c%y1oa~Mu@%TJoQ z%5mlRuL>QPR!dH-oyL2?dE|MCqp-QcKenX)GVqsP2m|2PAqK9#Rkma=>;y6)NR-dM z9#%TV+%|reh6Tm5aJrvqbC!;5BQn-&*MZo z1;aHtD|1GL)T6te_s>>KIgp8wgC=u7%bCeFsi}c;il6UMfDA|O3$`@Yd4L_~(Ws5z z-En|xjwtU49QU2TVf3vWj9dtPA?^wUa4q`#(#`wP zM6KaG^trsxoR#+!nTTRoLWpNRkgdY!_BK&@cC!T%162c5LXVl!e1vg=(ArWmsl9={ zYin!;iH$vcZwIw||tLSXP>Gu;w1sOeiWdguj>?^L9X9GpjyG zmVko>bO;UCKTe2)UTG$j7hEE)ymg76Hp8PztyG=tr}WZF?8q3;@I5_#5|SIG@y1JQC4WEHRz6=~Ub&kCfcIP`fd z9#x5ieo3!#TI7R>7|{SlwW_6C3duW8@XoYHWK8Abr!`j{v)DeG=qLKNMiANsr;c+_ zm%vwP-?>o_#dzg{4aYrF(}+^o=q%t1`q&vI=);^I?)%v%-&H?;oi#uCcHaBzoQa;< z6ED9_DKW9Th1odTpy(QJ$zeH#>fZXPjw*rZ4LE@1jpw``V>sesH+K#~lCw6D4b}Y- zzj2+%ukx+p7jjuMS|HYI`EXLF(@##Fa&dxIJ5g6GCjjMKCBZ!DNNs&2C(2Esd4%~c+Ug`t@BuL z5atr9fuUp!M-y4YUBr)Ed%7ZM@;ni6KlAF_h^zj{kt8>@?SH-$bM?|L2JYxbC-Euy#6H(s!_S=M=Xcprf_05*Nj zg&kPqZZpG?Sgp$4Li0;t^qsTQtpFY!U4Da$5#I;^c?dOv_yKvf)yje2Pcn%f@2BT- z(~=lyT91kMZ0R_RQeVB@nIGDpM#T0}eaqwQs?xQu$fzb?y(mYuyrpUI;lWf;*{O5} z@BWZ0Lt#O-3IznMXjvi`n;j*Q9(kn7uKZf7SB9%0Qeh>Wp5R6N-&5 z(&?*+#R2q!l_s4ebOMpSKgAIN2f-`B&wgxAF8@s;QkdP7{=XYTL7%E2@a*`>_0Nmj zunv*2e?6vL#BPiiN)sIl4<-ZU)0t@**x*TOq*cI`$f6D^AW#;P6~vu)r9LWA@3^LG zuEn!Iw345U?Z-}jSAqlZj`-Tk0>rTnhsCaSYIEo(hl;nLcv=pY%CCIItx-f;(P9l~ z`Ndyy@wnwDKEuD^D*;hHkH+3Ut^voX`tpyIlC%ZQUX6ZvXFYUiwkayPAyMBGsY+JV z>B&c*B!eoZ(`nb&O{m$JIZEM-{O(+(@jJ9ww|4*iyOS%BVcU*>!xE|{4b}ud3Orxk z^q!)k#kTw z9az*?66^$S`>6meK+?ZiVDluW#F|#uHLDUd6=MR;qG?#mO)2EPy(M{nh`WzaF>oegv zZPf4SAH$m>0DL4zkm1(h4Fu-3OdS7JFFYN*zXO*mE`xzs` z`xx$siGeor73TkH{_H6zrwz?Q8#|W8qjVUyyeBsMm3}BnYl3$i&9$k=H=)>tK3%V$ zuN=R-%8vq7j8G@BIUVfSL)cJDh~u5nVP7E(KLKmd4niVp2k{MNd=rHhbg{i-Y+U>3 zYFV&?BchuEf+K55TdQL$#*NN#{yzQ8vKX|1c!WQfT4*diR7dg{{JW<3x{^EDBLt$` z#>|>8U;S<4tRgx|s=MWV9Y`Q+rcCu8sCHILS7{d0EtnX6P8f)~;-|f&R90#8d}3k4 z-+0DBR$@gxaMfgk%*n!QFNYzhmX^wL&;K|mpt&r6OIC(QcUus652gFO6koBdqu?G- za|h!s%iQO?Q@SZdRaBhpH}=Xt9vi^~w>HGN{Dy+F1ljv5;G4BXvz)HHLCDhM0!ckc zog=>xK2$7MPjYD~yJSCFkoytg!;caO39*gU6odV z!`^so(cdXmWIQp4CT|w$wB1N+5&>3bIOcq&8U?*DZmB$V`qd(os+KZTO9Z+sOx2ql z2908woQ8dL+3%C^S=U3p4mb}wr^rDAvwj#VVKv-j=TT4qwY%qIaIGhyXM18^xJYWJoO z0W{}KiYkuyh7Z%dg%j8i;I1F%03i5rNl9Wv4jVWtkgVlL=}=cmI{r6`pAyleNJbbkTnj&&jbapMaS(cwdPauKUZ@HEc9@g5f`@FLyi6 z$){M&Ym0r~&}Hdhw{lyRCHt4~a1K>M2v-UwX6cu`So&m*&Dey6Jt~GPo;`e<7L2qm6EFwbOmyrwHD*&7zJR zN@Fb5RkRV5@aq~($sY01#dxPDI=gZ6tU>h*;Y^r0FM9?bKTl9Rn2w|rHlBaD>P0+M zHw%@uH!5=t?|X2|m01>_oW<$KhHz{1Kj3<_xAdO5Kij@@TAEZm@fRn`ep`61UHT)6 z#Gj&*WtF|EuLkH($Ix3niTN|}0h3bd-Z&s>;202xCefc_zL1dT`H#vMx*YnZcS|XC>M6sVo z0d!8M*H~*M;s7u1OgvjLPtgs7){_PmIZ~Zf^`}3;&V#5cuyKGeKz|6cL-R&aZ#SkS zcixXr-4wEEWkD)2-_7n#)Oezd^l?1mjU2L z8bE6`)(U?OBq0k0Yq3!i-Gja>$68@F8p23!lq1%#R^uXy{uSK5oNrM4GA7T`VSXZ#XOD4T8TwWwH5^tV(ICZLUKK6e=~Y*zlD&dXlg`@ezSvS%X$v0K zyhqVou?SCTtXbtB*Qk>!$L)S_B^EFoZ@az~hya8D9(^9HUZt^A(n;+s1x`+e!p?8R zP2&@8R9ZC?daB~uRMDJ2EOi}oNK2e+^He7%oNkBFY2C`CW4rLc zbZ=9aJF7t!&W)>5Ztq_LHSRgj-Sj4Jf zt*4M3l*AcrBIfc+=CB+DF>-t^ze|8p*+Sw}4%o(|PA@$}rv=M91HU)o3Em&%L7_5& z9tn3(1f9a$NZFqWMXXz>|3o;;Kuun1_v%j3`}ncQSlxLM{wi?OR(e*1`p_iuN&hHs zg!ob$iaQ20F(1H~r6rlrao@8N>II6_6!Q!Kzy_sM=)5mjKqJmDxo0Z;8`lz^1O`~O zYrgu^{Uy;HaaxxJSh<^yvT^VLAOns<`~CmYX!C|aANE3$&H6RO0}{n`92PPzHm(}U zZ1v5NSiJrX>7)n3LADOY=)G*u;eG~wnsxu5g{Y*!F->85_^;o@;4Y%rkM0UDWE!4( z(lNYu-uMIpLp$e~T0wHe2&82UJ|>T#WIT{=^AU#$nleilqi(zF2tYEO{@cGYXa^#Q zE4BqU z5k|mHb@~Bif!x*v?jkptOy^VcDKE#7>16@CCiX@07Cq`aR|nq1B$=S2{JHs)q_7M7 z$#@-yi?HEM;P6@+a0AJ+fDO8U4g?^80iod3U2^!EVw>2R2d!j^))s>W%|Ol^A%`d* z&nnR34>*x3b39v{{XB7&|9%!*tvB*yCNs0)Uy(RxN{)Y0$gEs_Z20ZuXJ^vy>nLNTc{RgxZt~mlI^4 zKYd7NQ)6#or)L%d@%xt|Q!={L3$AR@PKb0a)9mxnc~ zUq9#)<^&H5{^;|7wK%P|e1)W~wvbYWiknZO{D-T6MiX}-cj-S{Dwbf|@qUt}s>uBf z*V5hrLgA|9J1F&DucJoVFNu%MsFDRW0BQehDXkOpPFqWY_~fvyU<`%o2r-!ZluU66Z;nY^ zuA}uxA9FpK09U<&th1#sq1bx!4$WVwA9IwJSk=`yZkW4Ln-`u(`#Z~8<)nIl8B57r z$9a zR$q0mlvCC0hZxLRe|(sA&kXnPEpOOpj?yP^Q|7JZ#@lMy@_Rv-6e(t(laf5M(rg3l zMid{pdADF@k_dY{%?y6E&lFdhKavamO4>k=WTtl#OKSRcO>Kxbyne&r_hNEg$Htz_ zeo{+t0Ao|x!n{91(3g3R7z&rSRvJTHQ&7^+HHrKfCg$159C8EV(QbCO`1h*38;PXC zF4h&bb5>JIIP&9GVBS1Zd7b5vZh7)ut0(q^jXi4=M!UMr4-O7R{mR@WrhdKh%JN*z zHvlu`$8EdJ-qy22SBnNRZ1nK_HE^ae87iT~gm_|~=&QVs>h3Uqt@ToSK6|DhRtyk% zXwMH)mRDh~=*G=kwMR3T^kBE}Sgnsg63lO+5XcaTw27^U(TrUwHhX<)ZR`F@rq?F{ zaggBS5F7^HOf`jO*@up=rX(S?RYrh7g^F|97GJC3FPXZ{!98Z;@X#ivxt@H*Jk=Mm zWcXzi2zk^4@(aH{#v9pdv_dT?` z(!Git1Lm1_3J|oDx`V`?P3e`&79qXS1&?$MwxzvFhP@}&uH`;@+^7jt+?2qT>%*b1 zs)56cmP?u3gz(4Ou?a16yY;ie>P+JIv~2qh`*LfP9B;j~lO_UJ8vB{8{&P&MWOV9~*^Rt#9@7S@OL%w*ql)~`cc!yr$KB*5dh!{7Emi%T-1E-pg9})eeJiI#K0=Wlw?*t`0iDAX0HSPg35Ht;`xXh|y+@D+ZLp zn-dp$!sn|32&pjy{gZye|j|%Mdo9 z8Y|z2Fc1QORav{#6`BuMS+lh3KSpTK0CUV$n?B>b`&UkiuNIfK{jF@7i@cUdvnV>s zQ}lEoG_cN)^Q^BxTTz-c<(ytGXl1j!XC~GUzoNE}cCiRS2oYW_3S*Bxy_L8XsJU2v z0y{ej0jypN z7{YSg?0O1hTzur>m1`!n$%PRT_E_Tq`)hvx;D9#fHzMpiFYq&K8m^H+NQ*f2@0~J} zKD&k~nfy9Q)h2;*|uY_(B=K}q<&cq1YvUHFsitkeYEJyzr(#G?4j z$Oa<%;AIk$XjL32f6X8t03esb0HXrUv`HPiHdeT&1ImDd)KAUPq;5Q007f$&zt%F( zUg}f&-kxlm%`#g1FW_G*6~L~kL`7*j5h@NZrQm9n#bW?JKwdA?rPS_mMG`+F`>om# za}VCRlg6}0BTkCrq*^~ooF|#<%(ysM#;()o#vqNpws|f9m;t;RH+o7q=DrT;_41c* zfUAAJV;O{)^{YHNhTDYoQBO-}+I7zCpV&4FarDN>iv2L)fPMO<3AUg=z9mOrZ?t8% zv(m)2&3VHd5IGivdVfcgEN`PIj>o>;bezY?M>aJkpTpPN+VOpVDaoyp(Xj4y zO}OpW#-&yN6?DE49MpM4)4JU@!bcdj;9DLNFFm;Sv2K+r9~7;9CM+AZL~f z1v(*LS-Qy)p~Z@Trb^?aDiEPplK8T-jD-oIdY7MaT+_(WX`~<}d+XZWh4&m(=#txOO3H=~I z6ab)lW5<{Y=`xHHRi00ZuRD{W5!&$c@d57LVKj`j_{2v{%{HOI%PEPo5Jq4A^h&8( zTmClGQR%tY%q990Y061Se@bx-Cu5GPT~pB_ip2|`1V-K_yjL&qM5tQ(s$uZ}NlA0^ zg>zlITdxI32ZGU(E&o%Ftt{dg$tO(^J<`hbe7Ph6TApM?8Vi@;Pe1Y?P0zX%qK1^FBp$g!o7@4NETa#jNG4*;Abeqkl}<}XowsuUA5bD~^+SwQ zN6$}E?!d^it=iW?Ib@$ud~!TilIU~Rf2hl~e%&4zs&OI#4>7GiwQ9l6;Q&1ZxXWfs zM$@FEZh1(3#T8u=dN3p` zvXFIvVi-dhrVcmn_0E)jcsi9OU7#J_?V;eS%rnxug!ozq?tIvGSMJVOP1VP?uqJPM zgbV9FMMMmU5skPDX7zB;-}t zTag$}Ge`OSDvfKMmn^xaJP5Nlr%^KF{Nhr|9d{kBhsQHM4=UVd@JqqF1#}~z+jOf3 z^zpudK3O=>hAy^mr-KW2=b}SAwv3q(Q0uPP%ic?yyK6`6{R;Mk`86FK6Sr=djE{XH zBl+r@c-*->r!>jrq=5cCi$Jgr99OkckY)HJ7-^LI79FRStQi2yZdzm0)KNV#x}DEM zkxa(UqRM$;5|7FfFkk8=ucv6q3!Ew}sh*-uO78_vwGa|uS{-;6YTrlWISCK;=k78> ziSVUq7`W>6muqJ1S~AuK*jf@T(A8Z5yXZ!1+?;QwAqvzRxN};&rF-D7#qXZ5Lhe5wStOymPU(X5A+9@1#`NYn0 zt=0sCa86PbDf2&B>QWDlN{jjkpEMMy4&>h!KHV_gs{t89!znqpI)e7=1=rn&bQ9X{ zDXuT#o$wf42^ptyjCx|3`|$nf3&eczeeYc107Ny6nj7{N^2FcljOVEndV;W;krY*M zo}Y{L^R?|uATj`DoJQ&WkE5)H+uN zgujBr;rXr(%mOt&eq0*}6!QbWo#-vi7%ZCsv#=N=n{L77rSXZGk9OC zYJ|579EDxVwoT&vw$hh?Xn8P*HVY}5NLVl!dq2eVN10E+;Pc4{6KQHb*W*x=6<2fn zra9PVjCbx`BQ``eez?&eHfJO>u{aXT}6SUC$7s;JhkYOVpIjzHiBi zV&Eyu84rNt4Pvv-ycBr#&34QF3xxC|mL+0I(1rOF0a(Uz=lI)m4r9J(+&3?eXz~g9 zZk&{%jy@_EJI6pG=of3>FzP+B8N%IxGacGJSq(@TT_4 z6e?@_`D+K3FD*}sr`_Sxz%y_LVyV;0p{X<3ZXcvRZ4h7udU*^oV3a|Hy&E@(y`ZC0 za;a`hb|-X59U~~n>1hQ5cX*%@co*csOO$xD`r${%)6@Q6eMNDd%BLr6o?{-%1SQ6& zH&3bPFr7#8mw{9&y$k#*+VjgE!Gy(e!ytea=y-sGHtgJ*Y>FV9p2+6FJY8$_O2QK*MZB;S z1o^lhXvG^Z8KX#;)d%>Wu5=)u@=a26wZ+H-E=VVtDrV|!WUAa0Q#U13nSSeN@` z<%1Dzc06Z@yk!oTT3uybvDd&witK(l;(rbcB#hoV-C z{3~tWpeUed8uEn%>7bMc;kfSa#5eblSF1TVYPp)_+Kc`{dO@U;yR-b!*EPGbBG>;V zL9`c+wSX2PaUM|>(ljjCVXmXw%;Q*QSk2BA7dSJqR`^fILFsdZ=_j8+htQHU7)qb^LU&9l<(dJ$C432s(sV|FZ)Hm9|UcwJyf5 zuV~C0)F5BjUV&gvK`LKa2KR?nz|)M4DmWfB45XPobE!1Q{%>{N-!)sT6)u#2S*=_iBtsE4Q7?kUCgQ|EqjUQo z8zUS4ma`9JwP~RyqL&$Bn@u>yDv1{G_4sAo;4`)=RP zi7ZHzriZK{i3TBN@Yc!5dKIC$L@&O+$mekApAu4fULQ!kszzN$o&zX!No=t?+9>{@6*-6OR>l{^ zinal^?j5(M_>C!oWEY|*bZ;Jc?@l-VZ(Mdnbej=fwev}(*v8-@eVr*jXmD?XPxZQ{ zIhkg*C^|Xta()BkEjNPKi*Hw}1|hHc`Wxiutr6QeO`CxE3wU=h=p!MeGEY49> zqgRQ5Q^vFv_bGI;t@V@F=9G~my(cbs4-jK+~dY`?Z9fA+mjsP50@$f=aj z^;ubDO7Hkq7qxZgr(vkLIW?qQJe1TVAHJZSc5ym;r3#DboF+@J#;YkU><%?Hm7lD| zgd7HG&%^-&)E)-}|5h0MFPazho76u7T5`|SE^_0=HC<>{w4a6kmwc)S4$MEjK466H z8P9W@EF%0uPtG>B({tZsAH`GqbrDKLJ!5Tdv@p{SHG0b|k`mMmv=Nb$;l`PzTjx^r zy9Q5GAGOmCeNgVA4mn`V^UB^f#8|>m+gp2BJcix+ib$BIvnHxH<-CnZ;gONM{1cw( zsZ`w~ry#gyPKz!Tyx>j8szgCkF2Chbzz<$ z3&3=A9A(}VngX-F4G2TIJSN%Sz+eb^8Xek^Cqm%!1OV4n`rhVeobS7&$Vw#rkgZ2T zNl<2vaSeZV9(?Bk(bbtc0HT08_8eW7Ki#(<1dG413<8kqTWg4(O5lOU@7;*=zTy9SP0ur_fUPzhl;kM|P9wFUrJH5^|Cjj`@Bh+qIiK|1N8RFKbrHF4X; zuJon)v{-c>p6r!7C$iyyY2hP{Rx}6HRo8P%iGE^XjY|i?Cr*Llh zvPUA*UM~}`l(uHb9hXBQcAr@Qyo(P;Jx2_&m1lj}0=;Q&XCJ?QEJC5%(yS)p*TU;* zeLZJ0dNJ_&ra`#t_=4|7gSFL3=A6z8IJz4lmpkU&Ea^q$g=o9C*-2~u7JT+q)2XVB z7x2JPatc3(FEmB#K0A>#E*MyL*ic_E{^n*v>Nf;bf)4(ty567bdg+IHv3x~Kb{F6( zR?d1eXh4)HZzl=4rj3t=FV$6q zwB=r2b>Xu$x@&@xM|Y0GR{)tOGHDoLxw39x)|%`lW{gwD<018_)NeBcsMef+MQMIX zDG|?D4S?Sc1_q}Nz6j3|-jfk5S=YnI; zyg7fP{v=hFR4TSgC=i-GR7S`?#KDFE1f4y7lc?NWW3TV|l3Sk&;wlCaU4P!b_pC4R z_aS*cH4oCQt}ytc&z?T=%#2oI;ph+gDaqkX;1f6pn?2$yx}T}9YuCoZN31T%k+P9~ zA;~N{rc{d8NfF)*vQwhqJm)9B7waI=d?$Ix;>iRjIBko1Y%wDHtTE*`azo{0arWVL zAB}N+}SLqsr!z6WSF$EK84z>b3OzJ2IO-lGWty) zGfE8igRli?62B=6BIh+L`|i{fzG2*b(u|ZXL!>d37dUer2?=^p-;EVFmhL0O$Ry`{ z9|FWgAYL`7Zv==OPy=O*P8$N=X3wV5`Rf{*wa9D_0S5aJ!bK4>yu;RN&P61qdEpWB z%rGxeojq_B8z_&O3Tnb#PKrmZMREWuh^SmTb538@yty{j97dSOhli|J?23gW%I}*} zI7qGuh}Bz3^woLC%l?@yK7PJY62Do0394ze8g>JuX8v_V9nM=#QQ%G~hyyoGA{9BC zailpLx4lT_b~I@_{Mz>ZaXpKsjLZEU-1`i6lJQruaFT*OL_1j!aUl8z!PRJ!Y(gR$ z+9*cs$%@?u8ED}YGXfmnVyJyz`KrgP4%TLGjY5CKQh!Q!w7sbg8E9HQ|H?5b`D=RN zxRt|wf?c@Ol0&*O*r0u3QNU!cBrO#m;)%-T+*_jEqnkT-V(Lr1n0)6cSv2j##Z3N^ z?p^oR;AT6T_IKJfB)rrR?lfQ0aVNCd)Ll=EE;B}ry71I44I1{j3#!Bc9>`#M>$e?U|dk%sQH$zx7Npc|UB39_gSd*f8+pd%Vlk@ET`kS?`j8QcT<3-B4$G zdc5k28yBef8J-B;K1qXu1Ok^hh!h1-mh{d*kh@gE;;jOvmz(oi?{qD=0Fe< zy7VK7Lzfw_d^8kX>F|LCeDj4cFXvq0Wi9jFkRDz^^?`d`Y)S4VK<+^?Xe$)o+n3e$ zT`N*>4Wt)CE%H1QVQr;2A%y}oEQ%cL22IS7P%h6YMG7(cFw#HFd+&*lxrvm(M1#CZ zDQsY$tnECy;M0;vLx2i_XiKcMJxJ zVkoQ6MMq-5HTQt=H|AJyOzi6=;VDIj9^??bxwV~oXv;bQdLf$z{R>4;&#|sjry5;NQ;R2SHeF5RtWIZHWSRJYrC~{ z1Au+3Z+tIO6Bnh)(vSi$u~@-g(eaEuK;ptGW=DBt{SCea;Nq3+1^2`2=IR>^XI$wMU=0cv%KL}Lg|%N1hXODF zgA1n~9f)BG#8;u4AX>z;2>@OB`_Tsi0YTym<^kvz^TM)fT!+H808IV*v{w#93Q%AEaj zmn&pYib#OCtqoN~MULb|EZJ1+Z&(m;92q=ZIRQ2~L;~!~L9+9au+(|B97zrkWLOj* z^@Ape&?dt5M}O9n36@_o$le^eOVR&Yx)s!9OFe3+z_5aWI=(`tQY-pBNO&zpY~c?BKWRX#_VU*{i~cZ_qpcLbEk#RoKq3>t7#oVZ8)|> z!uLJe$nkwwF^_obLB$?%L{RQ{epy(KnYZveg(?$14FeKSe{Z_#hB^DMq_oL-{<|`B z^q@*cshse4DmSh9%79i6;8ii3l6ul5{=(#S9tqcS@hYPWw$@sQ? zpVs}jN=Is5B+~<%FbE|`i~{Z<-05>eoU>t|X(u(6$K)37>RzG^Yo01 z#6^}2RSB|#u~<5Sl+tbTGyj66+#5hv@cW-Ds4=T>VGYt*_j3_J9&ZH6hfAGw4^I?c z_(qQyOSfAhn!cYmRePfh0z2%b^$h(Fkx}7Y@fsI)y`|GGley*FOG##k^qqR7 zwXZPR2PajH;K~a9`_|ow*EwK8f~T>1?z^^DAp)ASM`(Q7@UExhn#%tdZjYMe>V`z1 zxVF|qcZ2rbe4XlQW(T(tNfW&dDrqb_sQ}Y1BxyOb#hA*UeLdsThb!Uaf!Tj22k|ek zQE(>5T@K@ql?AXwGq5i6q`UCFd%+w|f;G@RCn5s+?@Hv2>s zEe2dYFs9@X?Lx|!W_q)OLPY^V8Im_0>GId;@3UdjG&WT_|S@m{{BzXyd>BJTdmxOtgk9kDp^;;-NwU>+WY9gt>7=@pNYqI zirhI2f~b#)NPLJl^i4<`v_zz%22Cr2t9e(&w`p4O@Y%!tG*YIGr{rpZlPH&({g`dL zHeFb6sQ#JmjH*dLefsL&h9N@f3?QH%Jb+xZ-L8>wV6q$oATeC(2<)D1iawuC+sVY1 znt!J`hpn|G1-=7)ttPh6&6=ass&|q|Wdz&#KdsPYC=}D@?MQIU_#+LMSO+7}bviN` z=d)#pj^@~f1lFIZY|Mb-mP>`J%tq?o0LQSj?m)5e@q&%8z(X1nqCe=OC`ShnM*eAX z&UA!Jnu&HI@RR~NwsI;UC~=iubofBir}H&-ojT2~BbnHdVNM}bFgE|WQL2^5NcQr7 z41+K#CM^&^4L6tJ=R@orElP3N0iD|Zi!6nk8^q66is@2CTY8kbfd$Fkk}?pNnUtj(Px3!rT+zL!MGiMTIPI*jziC& zv=2ak1MP@f$M$k>B5v7*IXR}CRfYenI3KjAbo(%+unjczRPIg|)BST|+Ywl4g;uyz zZ3>-%5 zk5CEhzGAti$O8_lu<<4Ov^n%UsJ%ba-2HLq02sm5_(Mu>+ce{!!>GCzc3i3 z;ap0{!ft=Xy!VQX2xRn_ggw_EUlgBLeGgT&{7HANd+{JGcR{u^Iw=sp1h6)0meti# zk2LYbIZnZ~_p@~p9a71E#LtaI-KH?sz;)!6NdbKCrJo z*K7r8#f4%Q{84tF!k6?ZFyDvqv$cL~V+cFW&T-Q@PRr6Rg;;)uZVI$-Of(UOv%Zq2ms&@;#N6aSY@hn@r_^UAy4u~Mu7R2U%-3fG;>0U~=EiA6N zI|{>51G$K@jm!&lP{(otN3>i?pp2Wii z4lK5u(F;WzmY|}GyC~1a;I`#kw^Pl`*6xD(*u%aN#-~cuaNrzvJ<4UtLW^2T@|qKN9&UI?5GnT7}){=|f}y5pJur ztsx8Q2D_ZHhTjbkXw#=`r^8)0^n0MMM0HA50_9=03_+PlxMECS!b)#$*gD}~_ZLe> z?a+w!z?bknlDbGCv}r2C005dY)6k6MHAkBy&BjR>%23k`l5k$P($2?j96X38-#;mV z?g$^Ai{uK#6F&ydfpDJJk1PKxG6+|S4{OH*Fx_83*@llfJ-v0!b9I|nYa4bFxW}aN z&7rwI2pvoOPA0rDTxPqXRuqJIC&On@JgmKxxlFJqJk7AU9k%@jm+k(E1`lSAh&ld zUIb@a=rH}~7fs&m#eCD`VZEH0R!PHln9s+UjS_0THA(I3<0A7-VtV9%z%`q-35rFN zocY#XDBl+L!KMiV;nEjLvcu}dHWt18x~)UlGQ9tTN1cpuca0{vR2zGQ8}tASmm8tT zhff~lXpNM@<9dC`t(`bp7FYaLKbe+_sfjeh^c9m4EwfcGrxwZMs{h)1;rM_$K=X70 zqx88m(qj>$C>Si2oT+I+pA(U2^io{qzWoO3iZqxUk6mDghmcG{UPb!Txoahpq->gd zE6EBeFq|>$@e4R^n^XJPZET3&t20vaCj674Fr75KRgn;pUDY>uY4)!8^VB9e59kc_ zb4wY473}JK;2B6J<4Gl+_l%nnK?HLf(?dz>A6M19v{Vq_@cxkUEKiV>=fm;+1vX7PS=5Nhd5dgzqz#TORqZs>Dc zA2Z1igqXpQl-`|P zVdhJJ`!2Xbve7^A(H9wKS}E}!Xc2A-^|5t3?H(hiQQqPp17cRW^)&eFSXx-m_H!5F zIYIK3v_bSuzbpPx+!T4BM_IqOgGS#>YU8y-uOxb5b3dMlIa$Ko zN#1jx&2tx3bW;C{ThT+YVxcB?QkcOMeUsM=KkM;EnWoI7KUKY8I2a8P9l_3~<7;@ z*UFK3+8lpx&k+zANlir$|6R@@D zLxK2#_qo=|H*?{Uh=hs@X2C>Tb%1o#N$B6e|D>v003F3M^+fF%WggT&r1`-|wJr=1 zK{-32sS*CfD|E%wJH#itLe5CW@cu8M1Bws;m%#QPJsXZ9_{(x!^t(|O#t&X~+P&Kh zg?3X6*)(@iVnF}V@?!rk+W;qri0XkPQ8X9#{Zi=9r)BcEWRPmZq5U2S(W;JSvMgCaeJ7c(3)yq*yZl)xWh)sfNG-1icJ-y+&KH2$ zXrCwndsmgqveHnC#ZQi8Zy}|6mTgKS8&`~nTRBCuo$ZjOA{$ZZ%2x;Jz{9m%i2fBE z$E3`LD*zWe4giSsl8Q!RZ}1fgKQ2fDvtJvRG&hd+&@QcP299Uz>)EGQ{X6&pPC zge}iuQ-jV+%SXbo-RYXO3K&U;z7G?6SUkGHx+N3Cnc@q7=G;A2gEx;VG<_7nzy(7m z#Y!epqiNSjuQax14IuHHsY4L9*oKBs`1^AhJd^#+l6#{iLdV#WM^oE#~}@X4(^ zBU{Vg6kwf>Vp|-yhJKaitW4*f6)X9FsMEZQy0{(IY>1w zur6^mn zFvx_U5QUiEn*QTPg4&PXJ9m^0tag*Lyqz+bGy6JO)z>(BMEP-tkxlcY?KUiY3zU3_ z%u16?6tbF-rNqhP9zbKySTUhBfs?l3$-EZxwJ=oq3L-Au*V2?eCjC-MSnDpe75>eC z)rhw_d<1ua^Wm6qcB(IXB!OafL_>|;(#OlgvjET^!nE8N&yuhOV+p{p?v$puD;FoDB3fmQ{6q9q-AX7un zcqqPtpK=!I$imqh6RT^jUsIh;l`KR1nk&bjjgLVVe7^>3r_g4Spz5Jd=+9eUKTSbt zu2o{xOBR5z77zkEf#)?Nwe?vSAg3m9U|YGkyN#RER%bgp_RWQ8i9T#3ojKa+Tm$k$ zuoxXHw_%+^>TiLXrkr?Yi6W3{ka{R5bC=vl9GlX9`zu+i>z*1K^iE&gQS-JkG0X)2 z=u@B}^=r#}S)jHJDi<^gCvl`Zmf#`7TqTA6wXF0+NsWup!sz#x(w->=#sj`WXopUM z1Own`y4b?|iOa;!P zJ3G`2gbDD@%0+O8Kg~8g&ZcWJ^_08m3|Be2XyLj7UWmnGWoYu-r6(ic zU_hdGj{j`X`NWRa>}sSD)2tL{n-x(W3WDxkH{GKJq7pICi6h(l`v`VHZ|?X_>VV>0 zOo67>h;3FYC$Qxj4Sb2n#8(-DfJ!Y$u@vJ8w$MM>cQf98)vi^A!L3~{)tYk9b0$wW zRQo)uaOA2LalAG%e3kMqEsI9YbOWny?6&7%Dzib<*NiZpJn!%#+)-6bVvMn|?HBH5 z5R_#fq9RD(-YX9{o}|xD>iZ8mosJS%oXP&EXH-w%AD!1K<-dVdJz~^mX=_+8&=S@td@4Q5}V2%oeOn ziZ$p%=aQ^k&EQxw_O%W_Jua<4 z2SD=uSAs(*-Jt+AD0e=Wk&mi=^qSohZDyrNS83YR_^vZ|Wbvh9g)B~)Q6f6>h*g?y zdtz$STstvu)SH3_bJ8Gn^$Gd?#RMG1QAL{r`6rq4%$l$|E1DTUSGGB3_z16Y8L`5Z zuq)|$gNvF|(jf5GJ^PN%+1Z%BUQ+ol%(uG|$l76U{F~rlN(nmZhMMg53GQaV%PXj( z=roq=$Fyi)C&Jok`w{gx<{(`xZ-u`70qcg=lleoe<|l2W=@amsn1^3{Vy&!N954-4 ztX1Q|OwjC8m>07gh>W%nC~FmvTXjc93Mis3Dp*GFX7XlimwwAqf=3t6?YVt?W{@uZ zGp3IWdP3ag;qPM6z)7sWJNZ*^1`P| zjo=9WvKlm&Jz)<|EmQIha!F!cTq`y#}nnG<^QN!&HY&m=q?HXWfrI_=q zEy8*DG=_--22D_en~0iV{tZW&T^8EX?K z_4$EpuJW~yb5k`6%inj(t?bpPCj*9^uJUhv?oS=8={k=`_z@YsRGrdoho&aLlS`l# zH61#`=}Ztj+WRe2izckVxuvv$U{7i{QgZ(D!_my9dJo0Y(tz6mE5m78O@2er@hcOeukmW7%5}D$H@}!sZpDLqWJC6A=6OD$7}r&-Whxif#=-aI%;3n2;u0xvvs*w=8$J=&{tiSSh7Wl~L$C z6Li_Tlw;v3`n0KjbgW!NO+WED=s$f#uC^E1)_ro{E4#!*%)?N%UVTXJ;(r|S!4pD` z^K_^eqd>70evi0SDT*A*X{=ZMV91|SI#iGxdgW0edft!5Fj@~kimP#LBr|_FHq|B1 zxdty>d2S>F)Iwg?qP4vUr0clXE~FOZhp_jl?Regdu8-`pYIuz&wG@5Z7z4}H@r7_B zpq2`x1bPdpi*;tfl(gnsb|%^{bMvw_>ZbH?@UEg@?04j{!qlYgrZ3ai)p~U6VyZZDLQ3Q1)Zm?g3cQN>xiB5`J#F4| zCGXJo#lC8SBQj&H;27~D+}uv?Lp2s>_f|se; zO}ImR=l`a5Di4@y05?F$zy6`-d7fgkE%eqR2CA@%*(oF8EhX(ixR-88HD%s#;M?Hh z`x+Q_J+{v@Xku`2kN=c~!|z9!~t zGEv6g(JK*o$ucgFnju<;Lc!8SNLt^xM`cCiA~6BZcbO@ZTn#36Mtd!7)Z^Fws7`GcWTG2KRWP!IcQvxGX%HY@6iqS z*eDJ-GIJBn@o@C@oP*evd__ew>Jmhe?vNOLIp2u{Z~?{oUH5o@kPXS1!sFD$ zR}-xQqy!hl$1g$hmEB| zqUBgG%F}CwM`DF%S?PT*7n-E+or(s;vokQ)2Ol%tDCpO7J(@UrL*1C>E?i7A;fjBN<^TLgIu=LD{<1|}aByx0 zD_N++8%1}OZdZX46?hY}?ps0KP>E~oYex(&gR`Xe&^-^StG)RTiy^P~>j@@?U+fP=(8g{& zpfFzZ$8}ORgQ6I!XPnVSR$l9%b$A3MeF42CU*F61z2EG0a@*~zK5oR9fw9mPcW%wZ zzI~-F{D})v!gKNq^oFxSZ~Ey7Mm$?-J%Eo!+n<6Z2@si<5#^wrOPX!$jWi`e=hZWi zVbCi06G>RM#=tEfd$hlG)$r!CFW-FF2Uz1NCopb$ zQfZM%WB=)g6)O;LSgT>T3wRG=UNV_po0^PsPYqw<|9*A`>W)JPCqB!EvAK7;BOHKq z;ENpC@^AzYCwW&LmitrU1(e~+ix{T?ml}{boy2zAt}r%mAOzgUiW+zcG&ST-O1?Ps zzYC3~w10zn5_#LAgO-j1DbEj^*=nLmIhP)*h{9+z5v;m7&O0V_p)L()Yg~dOFJ^~I zEFG#`Y-HaZmBf(LU`e5^JgqS`vY0dfc;fsHw#iJEXht69-5`R^n=#BX9iD-Z%H{ff9=dIp&lbnPOpD|Gs@ovu{kJU0`vGSW9 z8pc^Zu*4ul``5MBYJ;YaAPF8N^ss6LOq3zykM116@^lqf*mF&KO+TPxlubhaZ7Brc6&dS!eX7;0-LG4>+03MXtoyK7q`hPUqiKQBKXA7YKrytY)klYe~yQJO*h8 zhW*)P)T|TpnlixhcA5W8okm7oICv;!6!&YlN^Jd8&UG^v*Xy{YW5+%=pFm?_xfO?Y z6W)xvHjAk&bQeACB#z2ei0~u?@L>HcN6J!>@x&wL;GAhsUj)BF>D>3lK#VIzL+ZKc zaQg}Li;90*=;l;kIXsGS!n^veh)wE_iPa4=&y5VGXqfGG=^aXJ614suiz-?=SUlpr z*r(h&GnrKZz>}5!k$>N=HF~-s-&92)dpS3D5rNVyuLOc9zODFE{|_N};jnTtAC~8} z!p^6PjFENR2L^(aE093eHnU}hfSRs@BCwonQ^fPP7c7%tdu0OYSBeR9HAfw6k+_-I z9CS$$_r94dOhy0h)?2L=oq7=bp8#knjdIL>JXvcK1pB#`?+Gue^-EG7>Df_aQwWJ? zd5NOW>B;y=q81Z5W;ZVTTBaW*l)Ma6GVxFpR1^&KkYoLsbO3vlWPpuTnZ*@``oA5* z`(t!9tH0NOdX>?wdO3p_#f=U|CAw#$ceUAktmd#$c?OD!p=XFVK6ug2-$xQw2c^ft zuyn+>Oy#t)wRDl*Bp>+7?Z!z7R#%9%sJs8I-5EO=sIf3Tt#ivpaPL-u0g65U4#UQ{ zN}7{++XAAV5S7%0>i0g6@Spaz8AkJi8AG(Eg7FVcPJ&eC@9MPHOHqhZKc6wEV>bA# zQY@VX289g0-X6#Ii>uJDOHHFL+W4-lx4jYamM^>%eu3emAJEDMj6wbW%HbrYNRD+D zQ5VOM1hHtobUJ`Sf^8p=&L3u)L?!idC)_V?3^4}cb@lDIPBg{jgU{Fcd*H$9u|U`! z?!1uK_H#nBz_OV$Pn=C47*{9#oBb3V)rv}7x~ z+Z~2jD>HOq2L{-VP)}~H-3)ADb650c{DH`KKr3*+&8046)YGZmr(te0f3!32n_rW<75^e z3pc?vl8k$1f0vp(3&E-kFv2*M76btFMlVUy1>M`j9TqBWbMQzs)^!qWE)Io=KOyB? z;qu_}24~`d1z zUAhPrvs7M0?LnmTEB0PQgc72j^!{WQ$*+^K;B$ouO8abbPPW{QqT}|pVqHL5*&mSL zf2oqaX_k2o8z^iJZ->i!eGHRjVoUjk*K8gAL@{(hlvTs|1P&3S-3a524N=%Ioh6!M z9DrHT#&@MFPpU-&c~wo~=>ry{7|{HkWxHCuQ5DH+&>ZuN>Z70#5u1qTf>e5VOK3qu zeI>&a$4b}cwETbRksRik;uYp~lFsG6W`k7*eBlv-7!2{8p4coe{qznrEepmKjX7zF z=}^kgL@u-oxnEWg3apVnV(Qn`KFX$W^Tg37oW89A2o^kJhj>7g_6a#nngh zfv1BoTW{o|DJRm#4sV+Ay5##etePxUay&pCU~va@%Qt7saiDNo-)oRUOcD*_EO+pz z`Q6zm-H^a9xpmUIo4|RLrpspY7JsmPTSCuT4vzx?!kY3lyu_%<=YIL4o7Pp-{L1BV=GW{5z;)=Vd>z|^jQxA ztgm7Nl(Wkrwv-~a!4wjQ;(}TrrgNn0oV-RKB`i7ZG$~Oz#w*_9M0uSYpSG+2p3AD_ z*V)}m7)SU;2L&|nX~2B5gwKD!=8{+2oP>aL960Og?h7>f7>|;i&;vd_^%)-JokTI8 z%1ao8V;(UgYO{P}qCr6BIqTD8!Yh3pn(Wb z8;#%=i;-c%`=QfIJG{Pru*>7PzA)D&HaQWOt)=(hlrzp3&6iX@XC3Q}fB7FG6%$${ zb5ni)>N1(EnAm4`^<6F>YuLKESfDZcRX4b#s%Bv@>%+SQGn|`ONm%G zU-pbhwE?q&tL6qZGSrGkiNWf|>N5rd{E9(v49IYsM**AhM48xi^KZrZr{jc=yf%RO zZ)gbdLfVbD4f`|sx+G{HCV=3nN)JjE)wE)>b)bVN-FF1ln-cGNo+^Ami0dw8<_184 z5>-cJ`!c1|OI&>5$x$Vyz2^Oc|A%TzcgQp-XdTl)K8Xd4Uv8Kc0){k{d<-X238i?q z_~Qr+h|C$88JQR`WMX*GM&@P=oZGlycyQ`LyAa^aQV@XEnhZxFLyRyH>QtNN^=gME zp@ZXp0>OhM8psCpgcwPLWZ4A+L_0dAEEiaa8{!ZQ!Gt_y{T#L-nn#T*(zTWXO}ZryZ@D;)n^dcgJ3Ci2 zi*2^`h)`<71KX)#E!Q^TSEgxQSe0WC+&mH;Kc`qD-&`qHF_xU26|Q~fV^4*LWu=Vc zhDwYLwj~(k+6m%LggT@@8I5>NNRh`C)qz26@pYHGfYWc*$POUL_)^U1HHGKWw8q{Fca*2mGJby+NceP&qD z8Sju26y1C+e#<6TLzrWbZ;J$FyyQas zY4nXWAZzv%@Gb8VjYqFxj-`<k7RpI)to`izJW1|TcCdxQ&7ghh)UUc6iLPPsWb9K zuQ=4U)Q5nz-107-HiVKkqFj0bbIyK38aQ{{XPQQ@k=BhVO2yo5AhqA&(MQ02;97U~ zK4zllz$k~(ZJO9J_0cQ?9w>%;d76TJ*X?Co=S0#nJ_bs_I*}0mbUJ}0G8xap1kLc2 z>rhk2?&}`C@EMMSkx^E@GGG?7hI`Vm#P+k4I_%dZ^PDVY-%vQfC(GU;Qnv_go&H<5CG?`Pe)L;7OF^)x&Og(8K$NAR(#$?luLnNTFrCo;EAwuu-N}9ok zK!YMiQ-kd9Zu`2PmzPh=;^=K&$f~+e7$YVV?_0nNK8l~(#{6UW2WBqRMKBS!!B?^T zhj%%698Z6(sN2!47e9Z=Mq}6D#aC34Pig0)vDg&<&W3A2_RpHbKVwumf9Vjuh;fiA zvyw%0=vQ~$)=)|8NSNn+Z@`#a`u6#dGk0B4)xi1?kf#HYqLutB2Nz4Sgd>WLon^rE z4npr5j_9OX0k28tZY^wR7jifyBcb=2c07!NL4b6lGw;LqAmOfRiMzT8;_&Hl#wGtP zM9PjET)~r%NNU62;8}iSJJ;jhzH4z!6+jRXt}j`uD@_NuRE8za(5K=2)hUq^@PS;q|B=v< z@OoTTYMX#I36`)vw8Tzxnu9iTVGEcoN$auc(fH0*nX{2lIgeyZ|$g@$iG$6urL!C<6t- zX{A{*^qKU@oCVO5xI&Mj$_kjd5e#j-&i@&ou+h_GXO`B-!Hpo24$5sjm8T8I2!>H~N$&ECrJ0cwAq`V2c$kbr} zqlm5-^ShvNLAqFG4MdNhlWz4ao~W%GOQos4D`rw z;ArS_PeLKgUt(=0qnP$x%t4A!Ps{Cf%y~s_@czf0f8>Z?XCs~%pN(?09AFMpPYrTV zNAM*F6xlkfu=Dl}(GI|nlS3>(ov`oQS@qaQaC7w zDn~m-%0e<=ICYqcW9EE6&CjeUiXOgDALLs>Fi$bi5#8-owG)HU4-ZHj z6YRZIzTCO*?#v%|ab`UBxeRq7h^G=wLGqfSvj;p6A0NEVY+ep_Mpj?oiw>VAt(1)- z3w>>`(4%t}gR>~qX z_9rkt!Q+Gub->|+W+@9&cN(Q1H$8YAgw?xPpH)h8jC&T%n=-}ZrF%Rn46!E~ z0(qwyF3dQ4%(MQOF(pYZf6l&YYNRJ`iI@_?13&^0S?hu5^G$oNxDO9cg75{!EzUyv zE*5#YR8QQAMt_H?1e3Uv_Mu= z|FH)}UmC0lWF=`)181_`K1JPWPWQz!^Xl`ZuMrC|lZ>a1k9fdU+SYMfub}fBUNe3e z$!7n%y6Bt6l(wXkmC2sMhO~ms9fzq0e@npPIQvX zm^Har#Ep87X5#qU0r`e?iU$>qh&+ky*?AFltZ9-BG2^y7CGDh|(WN~mC1{&t>`fm+ zoRS>%-^xaNzx3_zRmu6>dTg$0qIj-F?QVzp!z7e7EPAJU))NdcKv5GXIjDo=^H1Cy zzF4*at@3$z-<-+iTm@KO4CX(TwF^5^*7kAWN$m&5TSLm<9^|}?MVH{vpH%*R?4Oe& zXt~(P!-zZbPOteOq5Us%`GV#E!jlyuS|d;^>;@!loS&bqJhA7XyTl@3B$=nye=|6` z(r7pP#O}Gh5VTXOOQW%aSa+pDOmD^ctW7Utdc#Rh^;wBpc)ziyHG@=;9#}FvN`9pQ z_@6@SAlctNzP6b!3?AVrRPf$djDe{$q~)?z>4&zsIBDsEU>-MU;o11oj51{=nWdiA z%`aUN-Q-x`Jf}TBaR+RsQzDN1|E7L!rk~hv$Bb)1RPuSo>=Z{3swSlAm*s}jb!h8H z|CngXifVVOqZ9C=w!!ZDk|1eIplB7aJET$XwFs2a&&eN->ayK^8L}oY;too3`jC*c zLq4NP8joHZ%e^gbIarWS8kp-tfztAw)cyjZOri``=7?QrU#T>wzMm=5O2?=R>^~?g z0nzAhv-RVXGF^&OsUT88GmGdW(`Ceh?<#i%Q9>Be{(gkGrKH;Bl*pO&253P?X3y2) zUmosRX3asl43B$d;D7_w)b<+5ox#TI>7t;RQ(tj%Qmwdkn$|C3sbf*JrvvF%7Z<3tY2_lo zuJ^jH=d{`Bi(a{@xFOwI)D(X-#cx@JwH%Mk4Gl%ci}DNKZL0ei4NbkZfMu-7qjy!u zy1)ke3b+Z^LtxO7AljiG^PY?XC9dVXhgWUX4&Urv2Nh5~cxs4T=jxj7p^#mxSN+8L zYQA7Xms+nM!0$o6vqUPY6KBn=Q%g z&;OTyU%nG&)V}L8>_;HFzhe<+7%XWwAoX`GL zhsV75^sA})n%~u4>I>_@W{*6pSO(Was#ny>V>QfNE*?WE#$>!+sxjUosumv)sxh*q zr6>*1b%s;Z(6HA1ZJb8xoyZJIWzH3bgO|3akc2thRlLWHNOes?q?uyW^e5jeW4=3^ znOsSlty|Ic-ulw^wWY;K2Wu4$_4Vcoz0J3ir(LY;3sj<}IKytNvex#LL#ef+ICpky z{K-B}uKF1`ONMTct*0baR`z(sur*dtGt2plv^ei_rN%=?vk|-2Uo>rpMZ!+SWv3O+cYJ*g>BBRB z7`Im-TJJF39^f6&a_%-}U<&?}SLqX_|MmvU(=^J@R6)ih8BWz!V{{J2Opyn2L)nz= zBo3K7QPCD?Hs{b4>Y?9$U7f-PhdKDWhKe*h_C0}X&c*J8u2p**4nvLJB0kNDnxX4x z+1MT%EQdp4 zsKUH9LoRqqUrT3!Jl>t>)2{K)zewmMu39BE-G2mzMOEnTOVXtFs&>@_OkEov&&Vx6 z8Ux;nWQL?kj^KQ}IS9YP4y~V4VsL8tdiRsbKQ2crF)6q-w2E?aW%0TjP?{qMqby$D zkbZZSQ*)@X1sR0FW*yS%88sEU5N--h81)KT0EO@tv{QW078iN4#=ZGP=f(J3xti#b z!Hb4I))mE2-h>t&FkS(o|vt9v!G(GH~FLp6j2Km*~vPjsNF zWsM&lyyem<1T4ru=W zg|-0GOaE^Sd3S{|tLLUkitzeb%J5qjxNZ`!jg-jPcc zctd+9da=gxa;4&0h)SNzfRXd7N1tjR+Os#zPw+1O@@y5HsN)h-{{-WJP#;%7!6j_l zLgl(%y@+&4^add6@deiOfN^0yy@o9N&`9PyZCwI!^jY*MQtCR*-0CX6gAA& zf~n5ih*&%9C3#oNhI>}4ad@L2ey_#A1FKYCso1}q9zzOA3BPjhFF(Y3k(8%=1NjFA ze#@;ZdB&PdP|UdcX_>9XvKk@dtd|oxxninwO4n;PSb0`m`5Dd{uP;?zr7Cvv5W`Qx zHE$qJPdu(gJ`I~w5H3&9oOz6js_%5IP1rBOTI>F1W$iK0s$#r{Re87Av^mI;>9`XD zjifeUlrwpLx2|M1uv-)6+CPAj9z`iStE~_H-h=X5;%1ypbfoBss4%bMT9Unoy=9A} z(2clbtc>hKCXjXGKV_ejrZgUaj&9>prIt1x(y`M!Gc1x##p}n)D!-j9em-0D)?Su* zxhND*aoX7@f4S$Bx|I}`Jv+$K9Y8BSjW|`~v&-U0+`Y@_By`nuNdp3mPk)N%lI1cc zNgGck;Rvy?{F5mnJ}y!`GZx9|%mrk!@@%SQY;46VBuL8#^U)r5~j3izu#B_3gLmmcDvU8Jd5+z|zS9 zCw!z^Md`IQEi5I!7uy1JC|-~jXgXjZ0ZEbfH2~fv!c;XZc+Zz+>VScwbM^L82DEq4 zOgQk@%4)=^Bwzvp?Pr@Zu*@HV8abvR91}&eW$8ImbH=uEQ{3_C$W+W@?=`G--Vh5! zp1dVrG~j5_K%wMxQn;f^mo@GZ^dLcAZT$ZViEV%%Kiaag&t% zeML7wq$Zq8b7>w?$oe!?fH(Z&Ul@LhbPiAF_DM7>Gw5+tdrtFbOTMN(+8pLNzX=tm zv7~}>-}d19hzBYL5}3IWSb+iNP0D9Vmh&1z3u3!EOk)08P3<$x!@NY`E=jsN_$?p% zz~@YKDoW-iT=K-k*QR~Qp=arc_oMRY&8pgakB)|xJu67rK+8hpFmjr7gVYwPG>p)i za~79?s2RKI3Ax6`QRs^`BGoG8yF3tI4E*yNYbu(2(+dLatXu4q-{gPhY>v=d4=L{s z3?Cy83XFHmDyc8_52Dv~yLLzE9qjSfUBU1PZ1Mc;)r7LOJDSywP!UCq2c-K+)&-I} zZ+6OZ_}xPVGD>wM)&-k1QY}JqExj+nu@))#I%Sd_SXCcOwn#N%8y3-;sL9v7Z=>4N zaGW#ne9a*~&U!|ngb-gYyvqcUVSs{=;HH}!mn)EwI`4%tQX!$S%U)71Ka1*po@U>yq z<3-gFeiS7Z5SGeJalGylY0ymA{93-5WE-svC5Z50fVpM5;6vVL9|~{pqi0Spb;ig2 z6#+e?Uz4Lk)W_z#fj%5m0}Jhwky=v2FSm(*aX* z-Q$Opaxk*qtT((?5Z}Nzw|k<4({C$mo2zh-U+ye+p>c9|5$!K>*vq{ly|B^)4 z8X1=k`@54ooB&E{f#GDSwx2_jh)(pA(9H`>RAlOy^K;l;9gQ3WO zYqU~>C6po;nuqG;_uO(`(QYmsS7>eS7|RNY_af`wvKNxFKJHD{F4n_Vwj7Sl_~1y+ zm&anuv8HS;@J}5+B;LrD3gDlny9$cBE491?fC1?sO>h!lHn~HWBdPNvHGhIA|BK42 zjk-fAbgQ~x2&prEYp8LFA4&hTQrOaHn%_1HCnW7@`M`ZThjY3G1@Zo;$BDo`>|q$A zdPM)a!vUGx=G|i$m}9{efgf8BH`z_xndPF7W$@d^-_{(Th^H8jdB$>;Ya!XBRWrR$ zJG@Q56J{VAs-D0f%3zWV-MtU1h-!)>&vrv6P2%!t&$U1;jf!f2B|>y8t(3wRM#F}@ zG!`97n0wtV)mBZ_4bwdAY5S#`C)uf_hnM?0(I4n{T*J^hoMw7DAk=@ei5+OkaQ{aWehm2D02OV^JkospA#u8mrxFP74;k_K@4Ke3>S zrg{jv_~R56UN87)SR;~kp3o>ik-}1RfCS)yFh}?Phy%Drng=~qeZ@Xv$r*SSg5k`pF9x+2AEe0?$eyNBk|J0G>JX9_ zR>9&MI^DOlIsMst7aTM{nW(;{8u}5jOc3ZHm|~w*R`0(#SAg*%k2LwMC{)b3@N85& z%A%QwD`Pu9hZRj`kn*KL{=M|o@)JWbAm}syzP#dRpmVj&u+}`jR~#%}nDv!r?@#I+ zfCHFHxGpNNe}Keusyt3S+6)?)<+k1PzRg@hwCm!S#>jG2b0Z5K(0o{%w)Wfx{3GJKBA`yycv3%chk5}Z0lQx8lL?Ee1=_76)NXshI2EbPI3=kNAB z9p8HOdvCUZ9Nh{r*^H)=W__L1Uv1KB-c-?)*!0G>iXi$Fly_BXTTgo+M@IhwC;E59 zCq((Y2)IX}zyn{G;diHc>BkUoeE*^UI?B9jAK0g~A`;B={IM8C2vltuugIJ(B_8n> zk#E_xdG$@;Ya~A+t5M54E;SqT4zFlL%SacM1R2owGIxnpjmzH($pMO>hBI*J(>N1L zeN#rKxhy`z6p-a#*C^b`>-)e2uW9v!)$VkGbn)kcJ&nQ-?7OXs=JE4doEruMISn9Q zB61_wj4CxP{>MIU8MdrT_FsTs=}{kzfHsJ>*Cdu8hS__`V-4vRYR_^QFxxIHY1l~; zrM>|cVO6!nC-XLTZTzhO2BRP&3&qHZ5&x2ue_KiuEo zT|t!a3SCzjG>?ov-*=NLeaXbTWM&wUJISgk*)m*j_HT!*=R7ktAw2j5f=QheZ67j9 z4qBVk@uQCAS!Gj1!IRd1^KmU`-zTTOM8*`|Ld9h9=I2K68jtdi^dGbad)k6{tKS74 zc^g{c?FIenAi&^i3;PLc3zcHIm&n-Zn_Zs6zi47HayI+AwsN%CRVlV^6m=~d@dOEf z#kCek^^hY)p8yyf<#37rIVK{;iT?a5)yCM~1$r2#w{OvX z=70%o5aOHBcfve=(1+pOH>y(nSt9^Hg0(pC^Dn>L_FZZravrEp&G+7%q3hoLAXg<- z4#DY|rW&X>o?DuH_Cy25_h~hw&fEL9N-dpUH9XQOicDj5d7;prtc*-2d54yN8^THwU}*{d*8m;+0sAVmCQc0xgtFC(oQr9qC})^!^7BCvZL2#J|GU+ixij!nfb)N=-eL_k;Zp z9Cm>zr-U$4=}&n+F>)cDfWTOdk1%m_XxB(Lkyn2tKnSn&9vN>?iZKOa6A&UTmvbC{ zK0JVseaVFsA0#zCA|l}$_R*^<3xnYL`xtV$VyR}oMHa?&p&GVd*u2KvK8{1zr=LHR zQ372Vs^p%r-odDy5R!O?qpdmf-lf=OYOhF#(2Y7&j|y7oD-f7UA=2LWG`uyCEJav4 z9vQ{$x>}Zh1m#>Gb;T->iFn@T0c>J)AtZYGrqjJHEL12u}JqW9j%65poBOt-Vi?yaE+AY%rIC2~8pfnfBcNCTCFGzsXR zyPTOrYRs*Quo9V`q=iOhpFZNfJGeHy>i%B2)hKdiXkYZ>~M4LN?o%tLXL{qM4& zaz@UVR4^v$XHOGOSUBJj;#Xj4{mV_DurWuE5DWU$HG2fq&1;&1HY?5FqHp9Tvs|Cm z%+W|xv(lP(K+LHW3(()&Ie+8e2KyA->eyoHb~Ow~|yQ-QHCE zb|$GKZI)1?a061jb!Xx}`8DxcNm^P9FOt7T3`jg)6P^hoc3gA6lIruori8!V;luuS zJLA-qouLX#TVQ*P1Q+Y4!ecXzPJOE_b?GP8U}HgDNHkL3(I=-YIvh&uK}OnzQ?0|02*Ypa7*6eS#$s9+L$Yfhx^Ix$o7{E*^(6Lf?s}W%iT&>G{PocX$KPK zF#1^D9%P@M;x^~qfLgNWaIRVSOd*vVD;rU`0};-kX)19fmZgv~0di@{tObW$>!x#Bcjh?83!>K93I~O!-UIrh}SFRF=(5LLcl~ z^8H=l4~L+g0{?^A`_v(su`Qt$M5uI_PSgHLQfL?l`^l6Y0j|IoW-xCDuzve~PFke_ zb55=~_sCZ9qQYDE862aURQc-gHe(J@Qez*+aetRE`NazEDj?KTn&y+4ja>XeiNm$^ zNzd@@KFfUZJ&E=YFb3gAp>}7lEdeHJx_D`0kfp`$qG`WwIY)jG3ZQG5j_9$ z%BsjqLzQLH&K1(<=@QObj)CliFE?9#e8@XDkMth*8U9ICR&?L?k!qBQslv8#rLf?c z<$&11020dhl#M7cFv0n=33G9xAP$Yj=moaBSE(JdXD`1)*=X|}5rp95;Jt>5_`BVHr?UvWyi8kN5bW!FeM zXd#7vPDhhn9A;a17I{0@<@Ys~vY+;JgL*DErk)$?sh7Hd*icIObS{37Syvd*BvA3d(yLKJy9%m}aw1prfv-p-GOn+!mwZJ<)u^-_C#k<+)%i7pS>ef>;s^h zz_8V3Iu;nZ#9V$uU<8&M_pRSWv+Vn=CKjCAOR0}NnCXZVI$Zk(apw&wdW~0#2$m{0 z+=hwww_jd%$cC<^||PR=itaENQ!zH>z55Em~e)B z7;muwan}xroXLQ{iSAX=(YRW3x>35!(SgW3@8xE1g0d(QdZ)8p5Af6O2@RxmBK$uLwJL~5s$e5N~1%hEZLDBYenN3 zET*r%Kz+_tD*w)*M7Ik@Dc2)d{?rdopfDo=%-I%=LTYI06{be(Di$I{ysVs9=s(aJ z^B9&GIn^WYNL2`6=!+qkj5RdY1$Vu_&8ll1b>^X)BqC)8)+CFtpff?S<{YWc_R>NV zH1&XSIpo#dlz+BDw!xthn1;jX+T#;8gHa6O+%!#!Ze{d?&Nkd`km~9cRs;oB@$iH) z)}2t3Uh&@}Z8=+yKw7@mtdz^%QKM`7&L=0HeOHdq8-|5N-2G(!NA;Q96dPt3r&JX8 z+#W~=W+d_GHN55lT7NOjfKQ7u0#oCRt*h=0@!L)aT%e&NT~}5y2qqw{;}2c{^Dp5# zuj14di;pDYA;l+}ice#4_vz489N|J4(*=aFcV9!maza-zDQ9Xp*MVjMY#DZz=sw^b%ReRfwGmbR*jXjVVyycakP(m00-5gzO?y_8 zb(WCC%mdhh<{E6lXRMGUj7aL5y*{c3=se5t{4gryLk2^}{9shSjZ0tswEDobnfcoD_xglH#1!nO=pDGs)7`;)gSCf}Ksy3xP(9}{7c z53_No`9&MMX=L{BMe{$m1lOU@`c%dnG6-WqMh!{p zi>}cS9uWvFy*uy7Y7=5v6M9MQzU@JD6|?X~lC;M=+o4J}#RumwHIz7rUbHgV(Y*c8 zee?Gxi|zd>W@I5__-KyG;FO?*rXV`_8}+_D+~#BN4_GwUu;@7utS<*!=nC9(6WU&Y zWxH-r@vb9s>=9T#H5ef6`kL%Yj0=C16*kPPt(H4zYj$QDAMtQL{v9g{SvJY;g%Pji z8&>Z7Y=fi;ni0|3jPw~vo-UCZ0D)LI-|b@VcAPmS7A6ekf)@lNPyUyZ{LSb1rNS5aG!t1CuI%AM3 z?BcZ7X8GD;#UtOj-WBCJtnI)sWbPnD6>ma-=i=7I1=`fgTk)`1ieFXGC6*~@sK*_Y zDx&;FBu8_%H($Icy3;-?NPbgS{-r0HVCRq|3YFSIk~nV-fh^i0+2T%Mj}_crr1rFY zwFl%UCMWWg3>p3fc5#=zq&P?xWB>Z5_hf>U((zAPrGw%-B4yHa$Q&!=>8LveFI zpF;*v+Nv$)bE824vT&{K@daHiccmKmWM3 z1Pm3G6UP8r(FxG-sF0>JPDV@D=7r%jVAAo&5t+RBC3=@Bb^p8$ zF=T5^jd=&smPLel%qfJ)BLe)>ReMzS1;liY4Q zU~zPDTwc;G*i>yd=BQ&1R6+KJy-s4oy#*ya9l#u1y$jBVo73=o3|YsS!6k4KtJV%d z?4m~)(RZp-1YDZLna;7Y~8*2_HXmh=BmA%&$x!d`_{Mpi;L49xhCi zQ~O)%6-?`zk+$N)KOW=rDC~F<;j(SKb4OCwXITBAKxALOHl|8h@6gLHnKf~Iu71P z7RMV)<-c=2aG@1yB1xNDV#B8$Mzy8fp-Nc)X0qmr%xG9!I)qn!mnng`RqFa+A7>RS zVfnPq$g6keQ9pF@)0hrB<|yl@2qH1lhzTQrJF{_vYR@7<@Vg)i@Z4p(EYlANpMEbm zqzQqykHWzI_yY+6!G#m#YiQwvXldE0zh8tL5d{6Mgf^o#B7tUVbHqT}RiQ<$|KTU9 zdMW+>HoEB}A0*kIOtWT8P$ijup~VCs6n1Yon5%LDcssUpFJ{6576Fm@K(va3Z3-022!{Do6YMi#BKnJ)fuc#7TJ|OwJF{}K1&*@QfFiZ6@^9o@t&1g8%r*voD@Yq zX1>^*qrFT+E7z0W11O1KMxKs;koa45&hEi5_IR=!r+faMmUP}2D4R#zo_mL5)~LAr zK03E5wwvnCi{Vk4T#eGbPvX(gIuT?2O-Nxt#LYS)v?+|~Gqg{m&kpDPKTGCZ$Q^0r zv-frkDh%q*zm%duThoQ(%dyddE`o5(3%MB@B#hA2K%9wi$h zNf0VKOugmhW?!cH0x^o=;t=07u*T6U;lz|EP;ebTd!?*A2Auu@ag+vyWDV1rApwMH zkX6mK-;at@?(g4WQ8$V>@T`uhkTV`T=DP!g)Nn`AzQhy-YktnvBj}vc8($Msea_6V za-G&IXg(W1Y+Y#IUP&W8S}tVbvflg*09!z$znQA4lyz=$_m(p=glBFcT|^WR1)&2! zgZ^2b65y8hDcLx+<{MLaSZ+HRy2)Ao6dbNi2g@P|^>#}b{TQTKeV#}Xvth}fdc$F} ztt6gHSh1uk_wP2CP6}zgvkZxz5w;P&iv0POuEx3q`p554@+a1CQjlG%V25j-n5 zsKRGc{6qv3Jb3yge1tjQqAMHx_5(wiiR9>sOd1I%jSG5BT-{vM&ZqCZ%N zBi5PF z(mMMO8#PL-tMnIq9zx`vAwbTj#xgMwL}{yScc)=gjnNPU27Or~^W0Lqx)Gypdu;PR9mNMd7s9Bsakzw2hzo=0NHef=LJGt267$fS!dUjcL~| z7vVU*H8bEE#r}eA%M9-L94R=N=OmRSA#?*n`x-yhHSY~*{QuxyJouP&JH$QoyVFvu z2jeV3R^Id^svqO9Lvi{k=Y1MmA&7moolL3Ny|IFp&eRmN`ov?fM^;=sMa;a+z$=H+ zocIrV-@>rSg}B!x?|USD<-Z$UZZ`by4(fH%Bq@H&V}hYIbXPjrAARQSm*DkQ{TtuX1K16i2@dAdd2r<&lbJl%8YgTuq$;*C! zeBsDvzt!)$b9w4x+rL%PhR*NLYk3aajnp;EO4twRIT`>-U_Lno5~Y)KSk_mUzRz8@ zNJd2j5Jnz+oWA}mmCWGDvHp7DtH{*DtQ?%sfq(E|@^TRDHOTEd5|%TzJd59y^!PNi zXBa;m1ri0D)ghCRE=M{FrUs_w6>H)nNI8$2I;TUq;t4eca@uk~)mi(L!0-`-ozfaA z*O<%Fk!i__QuB_gF1#{x)2QWd=0CN=)2~(^4NS6KvAc@_TE?f!ys{{ht(# z6NdTIGDye#8}C^3eH$nymVHNdShsw%BfZht&~y@eYV3 zY&UFkQG}}vsSB8*4z+w(HG@^NsPf&{p~-6wQaGEGfJL8V|I;yLq^k@mHYgVvWCm7g z;!7+SM$yVw>+}0GfTJI#$Jqmph1YM$Zm)29~kvl}%g^>-W4NDcG`$4Gj_ukXP;H;Zh-jjx<&`!c%@{o=U@Ps5_H zP`|h(tTT)~_|< z4AHW?7e9WuNa<%q(kH#zVaQzY=dZ?yGrAdbHlYX?f8fT;X!97c@{D6HGy1qXh6eb9 zV1x@lL8Nm(*cLLmni7K|X?~c;WWJJQyf(OQjktxA>U)V(ty4|KGye>A^o*ZH`@*rz z(j#x5(x$sLqlVJ(}x~RC$Se{L-KN71~dHeWG~0iYLKH=1k5rIEeduF zp3(+KL^2m{+i`KnusY`{qM0(laV4KMpy?I_N2z9@I>Yx09wIl!?xAUzn}HgOI|Phe zkstN@)_!7eIckD4PQ~QZLQPvUPOn`Rx0pI;Dm%vAT)n+ieUXx3mO{cn2)!A%Z`)wn z_02Rf9K9ozgPprIQ~LPfLY?|z_}WHDPgj?!o8QqS_{Rgm5Z)mj$k7~pRWGGzccD$D z#ROfh`j9f4b(TgUd)g%qjgT(jdCfS8)?(&N{u)S$0* zk@l`23(B^1iiiH~(+5l#6v#?mKE$nme z##gqjQD<&C)Zbd5@1d^Q3K^nO;H;##enQxqF|Ygy#cxH=j$ikGo^N*8DxutV5;@kT zpsUJmiP#unCV_8~i^mTQkhzj~lp)m7^f^ZbL?sdZ-?wZgns^rU2tvq{K%D$r^~GvV z5jEtx*5|oTA$U^{0dnf++}pmPNg)_{lbgR!YsNG7gu9x|mec1+Dj?c=vO<2IcMb6f z373JuN%M*U-R+e)z0-(5Wi5y1ZB5|Jr!QW_-;=)_hqss*p*Dh@`9UwRJ+eAT<|JvkP-H@n2#_Bc%0`Nb zExPL{t-*ait2BFOHYRZ56$z!+p*ml*bu}?pA30^3?x%YYA(0QCFD?=U(r|n3R2(<@ zc%Rr|ta(99vN4tAYi7o7!*4gkTTaoRm>mf0Yq}rBfL{w3;Vb=fz5NDE?<`zjQMysr zSz$Tta_MI4k>PFRlxk_mnxe40{$gXxgX!CSa*?)p)FR#=G#Vy=eDoCB`*y+L4866( z`TP^>kj~wOvf%D(!I+h`$``{!C!*YDSFn~M6cVdQv3oV8S-*H`ScJWznQE|9Xs(}c z)*KfQ0AL^c)2Y%FRMI%e3MvwyXt^kWhd<7(6T-^cJwUj#8H6Cr8J_6~Fkm%qkWNRc z&#slwf@l%%3_-DSSm;+sU`vAcn(Q5&lr@mK55B44MNBNf&4UM~+!g_|t7BBO^xoqp z1}Vr5gJtk_juMIsGH0QKWQyUHpP<#lr!Z(&vZk5 z!xaGBx8`OKn1;-=))fKIHyL(4VnE$`@XLO$r=?-YB4`AF-R0LYRO~;7b?Z{G&_-6c ze$(e%$c6nVB#=_5YVuKwJ~P*_Z{1s2h(_=tylQymO@GU`rFfRg?XiffvyoUG;LKAg zNR||l5y%9FYKOxcN+a*FJuqJFPkUqyHI|1#RpzrHkUK$n0ijG8<5=jbPi>Q2WU%~= z31CE}B+FPqSWk(l6#TF{#~8~dHecXJuAb9^N9@G6_wl@FF@UN6oj*m?**_Y>3 zTNc53{1n4)tUv@DF%wT^s2kRQZ2;%oXrZaF^VD;NNTnA*oD1jl1s}UhYuOTA9bDqN zBC}rFO7XPm<6K)`HPyY1e`f5m03aCP4T%%JH;&z{@{a$z&bFv$>8xj3Q({`%dk{Z| zG%MMK{3SuSdnqHalBbUz3_RBTw1VH4+PeuMCbMSraaX{!3-<$+xE|BFyBe7b74A5p zp+ufo&)k5ed=w%Tp*_O!BQ%SkF_pC*7?Y`#q!1QZs6FuG6{5p!C1zOAvt*;OxD>{G zkXmxY1rnF+>b*5d$_+b*e$WzeI?s;IMg!WdOy~iZ$f@(j=K>RtfnLBp_HOg=fm1iR_!pK@Bl0dRNqp0Kl0(D=)Yr~GhO9o?8YA@^oLjgZ$CBR)trmez9rFCUPLnktGaeLrbGg3Ty-3R}7e zmka212s_n%oQ?uuYP|erei7;1cWCCNe0sL)nc?^Ny4~r;H#;rrIB}lF1eoX1%_SE7 zoJpb4{B?oX≪E1!K=crEt&0Q+r5xKZ31Po{f| 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 literal 234785 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

Example #1

Let us assume function that uses divide & conquer strategy to return indices at which we can find specific element in any list.

def recursive_find_in_list(
values: List[Any], key: Any, lower: int, upper: int
) -> List[int]:
if lower == upper:
return [lower] if values[lower] == key else []

indices = []
mid = (lower + upper) // 2

indices.extend(recursive_find_in_list(values, key, lower, mid))
indices.extend(recursive_find_in_list(values, key, mid + 1, upper))

return indices


def find_in_list(values: List[Any], key: Any) -> List[int]:
return recursive_find_in_list(values, key, 0, len(values) - 1)

This implementation works nicely, extend is linear (with the respect to the length of the list that is being appended).

Let us try to dissect the way this function works on some specific input (that will be pushed to the extreme, just in case ;)

find_in_list([1] * 5000, 1). What shall be the result of this? Since we have key = 1 and the list contains only 1s, we should get list of all indices.

If we were to draw a tree of call hierarchy of recursive_find_in_list, we would notice that in sum it is still linear to the length. However we use extend!

In the leaves of the tree we return lists of length 1. In this case it means calling extend 5000-times at the second-to-last level of the tree on the 1-element long lists, next level 2500 calls on 2-elements long lists, next one 1250 on 4-elements long lists, etc. At the top-level we get 2 calls on 5000/2-element long lists.

A lot of extend calls, right? And the lengths of the lists are growing (in this example, second call happens on 2500-elements long lists).

Because of the extend in each level of the tree (call hierarchy) we traverse all of the elements. That means:

O(nlogn)\mathcal{O}(n \cdot \log n)

because we have logn\log n levels in the tree and nn elements at each level.

Example #2

As we could observe in the example above, extend iterates over all of the elements that it adds. In case of recursive calls, it results in iterating over the same elements multiple times.

Consider constructing of this list:

Rendered construction of the list Rendered construction of the list

Let us assume that you extend the result with the list that you get from the recursive call.

  • B iterates through 1, 2 and 3; returns [1, 2, 3]

  • C iterates through 4, 5 and 6; returns [4, 5, 6]

  • D iterates through 7, 8 and 9; returns [7, 8, 9]

  • now we return those lists to the calls from A), so each of the extend calls iterates through:

    • 1, 2, 3 that was returned from B
    • 4, 5, 6 that was returned from C
    • 7, 8, 9 that was returned from D

    and returns [1, 2, 3, 4, 5, 6, 7, 8, 9]

If the recursion had bigger depth and/or more elements, it would iterate through them more than twice, therefore it does not take constant time to do nor some constant multiple of the input, since it traverses all of the elements in each of the levels.

Implementation of extend

There is an example of dynamic array:

For the sake of Algorithms and Data Structures I we consider APPEND operation, i.e. adding the element to the end of the list, to have time complexity O(1)\mathcal{O}(1) (amortized; which is out of the scope of IB002).

If we have a look at the extend implementation in this dynamic array example:

void dynamic_array_extend(struct dynamic_array_t *arr, struct dynamic_array_t *src)
{
if (arr == NULL || src == NULL)
{
return;
}

for (size_t i = 0; i < src->count; i++)
{
dynamic_array_push_back(arr, dynamic_array_at(src, i));
}
}

Apart from checking edge cases, we can notice that we run for-loop over the elements from the other array and add them one-by-one to the arr. Time complexity of this operation is time dependant on the src array.

In this specific implementation, you could also resize the memory allocated for the array in one go and copy whole src array in one go. However even if you did so, it would be still dependant on the size of the src array. Cause you still need to copy count(src)elementSize(src)\texttt{count}(src) \cdot \texttt{elementSize}(src) bytes. From that we can assume that for specific instance of array the elementSize(src)\texttt{elementSize}(src) is fixed, therefore we consider it a constant. That way we are getting O(count(src))\mathcal{O}(\texttt{count}(src)) as a time complexity of our extend operation.

- + \ No newline at end of file diff --git a/index.html b/index.html index c21ab7b..2083582 100644 --- a/index.html +++ b/index.html @@ -13,13 +13,13 @@ - +

mf

blog and additional materials for courses at φ

About Me

I'm working in Red Hat in the Packit team and studying at FI MUNI while also tutoring some courses there.

Content

On this page you can find my blog or unofficial materials I have written over the course of teaching multiple courses at the FI.

Mastodon

Feel free to contact me on any of the following Mastodon accounts: Fosstodon or Hachyderm.io

- + \ No newline at end of file diff --git a/pb071/bonuses/seminar-03/index.html b/pb071/bonuses/seminar-03/index.html index d575bfb..09e2593 100644 --- a/pb071/bonuses/seminar-03/index.html +++ b/pb071/bonuses/seminar-03/index.html @@ -15,7 +15,7 @@ - + @@ -35,7 +35,7 @@ to get its address.) And you can also call the function by “calling” the fun pointer, e.g. comp(left, right).

Submitting

For submitting the bonus assignment you can follow the same procedure as for submitting the homeworks, that is:

  1. On branch main add the provided skeleton.
  2. Checkout new branch seminar-bonus-03.
  3. Add your solution to the newly created branch.
  4. Create a MR to the main branch with me (@xfocko) as the reviewer.
Directory structure for bonuses

Ideally create a directory seminar-bonuses in the root of your repository with bonuses in their own subdirectories.

Structure of your repository can look like this:

.
├── bonuses
│ └── seminar-03
├── hello
├── hw01
├── hw02
├── seminar-01
├── seminar-02
└── seminar-03

or

.
├── bonus-seminar-03
├── hello
├── hw01
├── hw02
├── seminar-01
├── seminar-02
└── seminar-03

Structure of the bonuses is entirely up to you, just keep it consistent.

- + \ No newline at end of file diff --git a/pb071/bonuses/seminar-04/index.html b/pb071/bonuses/seminar-04/index.html index f607df6..84df0c8 100644 --- a/pb071/bonuses/seminar-04/index.html +++ b/pb071/bonuses/seminar-04/index.html @@ -15,7 +15,7 @@ - + @@ -40,7 +40,7 @@ you want.
  • I keep only one copy of cut.h in my only once, so it doesn't take up more space.

  • I would recommend cloning this repository and copying the maze directory to your own repository, since there are multiple files and it may be easier for you.

  • In case you have any questions, feel free to reach out to me.

    Submitting

    For submitting the bonus assignment you can follow the same procedure as for submitting the homeworks, that is:

    1. On branch main add the provided skeleton.
    2. Checkout new branch seminar-bonus-04.
    3. Add your solution to the newly created branch.
    4. Create a MR to the main branch with me (@xfocko) as the reviewer.
    - + \ No newline at end of file diff --git a/pb071/bonuses/seminar-05-06/index.html b/pb071/bonuses/seminar-05-06/index.html index 7e2c937..3c6f7b2 100644 --- a/pb071/bonuses/seminar-05-06/index.html +++ b/pb071/bonuses/seminar-05-06/index.html @@ -15,7 +15,7 @@ - + @@ -39,8 +39,8 @@ so we will demonstrate on letter H:

    1. Letter H0000, which we got from the 3rd step) and get 10000000, which is encrypted character H using this method.

    In case of decryption, reverse those steps.

    Your task is to implement functions:

    • unsigned char* bit_encrypt(const char* text)
    • char* bit_decrypt(const unsigned char* text)

    Example:

    unsigned char* encrypted = bit_encrypt("Hello world!");

    for (int i = 0; i < 12;i++) {
    printf("%x ", encrypted[i]);
    //80 9c 95 95 96 11 bc 96 b9 95 9d 10
    }

    if (encrypted != NULL) {
    free(encrypted);
    }

    Task no. 4: All combined to BMP (0.5 K₡)

    Authors of the BMP cipher are non-disclosed :)

    Create pair of functions:

    • unsigned char* bmp_encrypt(const char* key, const char* text)
    • char* bmp_decrypt(const char* key, const unsigned char* text)

    BMP cipher consists of following steps for encrypting:

    1. Reverse the input string
    2. Use Vigenere on the string you got from step #1
    3. Use bit madness on the string you got from step #2

    For decrypting, reverse the steps.

    Submitting

    In case you have any questions, feel free to reach out to me.


    Ideally submit the assignment through the merge request. Step-by-step tutorial is present here. For setting assignee my xlogin is xfocko.

    In case you do not want to experiment on GitLab, send me the source code via email, -but please prefix subject with: [PB071/14][seminar-05-06]

    Deadline for the submission of the bonus is April 21th 24:00.

    - +but please prefix subject with: [PB071/14][seminar-05-06]

    Deadline for the submission of the bonus is April 21th 24:00.

    + \ No newline at end of file diff --git a/pb071/bonuses/seminar-08/index.html b/pb071/bonuses/seminar-08/index.html index 2e4cb70..48d0491 100644 --- a/pb071/bonuses/seminar-08/index.html +++ b/pb071/bonuses/seminar-08/index.html @@ -15,7 +15,7 @@ - + @@ -43,8 +43,8 @@ through the tree. Leaves never have rank different than 0, so you can safely ass 2 non-existing nils in the input after you read such node ;)

    Example input fileTree it represents
    8;4
    5;3
    3;2
    2;1
    1;0
    nil
    4;0
    7;1
    6;0
    nil
    11;2
    10;1
    9;0
    nil
    12;0

    tree

    In this task you are only provided with different trees in the test-trees directory. Implementation and format of the pretty-print is totally up to you. :)

    Example of mine for the tree above:

    8 (rank = 4)
    +-- 5 (rank = 3)
    | +-- 3 (rank = 2)
    | | +-- 2 (rank = 1)
    | | | +-- 1 (rank = 0)
    | | +-- 4 (rank = 0)
    | +-- 7 (rank = 1)
    | +-- 6 (rank = 0)
    +-- 11 (rank = 2)
    +-- 10 (rank = 1)
    | +-- 9 (rank = 0)
    +-- 12 (rank = 0)

    Can you find out what are those trees? :)

    Submitting

    In case you have any questions, feel free to reach out to me.


    Ideally submit the assignment through the merge request. Step-by-step tutorial is present here. For setting assignee my xlogin is xfocko.

    In case you do not want to experiment on GitLab, send me the source code via email, -but please prefix subject with: [PB071/14][seminar-08]

    Deadline for the submission of the bonus is May 4th 24:00.

    - +but please prefix subject with: [PB071/14][seminar-08]

    Deadline for the submission of the bonus is May 4th 24:00.

    + \ No newline at end of file diff --git a/pb071/bonuses/seminar-10/index.html b/pb071/bonuses/seminar-10/index.html index 5935f3e..dd6c0b6 100644 --- a/pb071/bonuses/seminar-10/index.html +++ b/pb071/bonuses/seminar-10/index.html @@ -15,7 +15,7 @@ - + @@ -46,8 +46,8 @@ much of the duplicit code as possible.

    Tests should help you a lot in case is because of the get_word bug. It is not a bug that can be easily fixed, so it is a not requirement at all and you can still get all points for the bonus ;)

    Dictionary

    Submitting

    In case you have any questions, feel free to reach out to me.


    Ideally submit the assignment through the merge request. Step-by-step tutorial is present here. For setting assignee my xlogin is xfocko.

    In case you do not want to experiment on GitLab, send me the source code via -email, but please prefix subject with: [PB071/14][seminar-10]

    Deadline for the submission of the bonus is May 17 24:00.

    - +email, but please prefix subject with: [PB071/14][seminar-10]

    Deadline for the submission of the bonus is May 17 24:00.

    + \ No newline at end of file diff --git a/pb071/category/bonuses/index.html b/pb071/category/bonuses/index.html index 6e3c4f1..6f4b22c 100644 --- a/pb071/category/bonuses/index.html +++ b/pb071/category/bonuses/index.html @@ -15,7 +15,7 @@ - + @@ -32,7 +32,7 @@

    - + \ No newline at end of file diff --git a/pb071/category/practice-exams/index.html b/pb071/category/practice-exams/index.html index ee65e63..d15a7b9 100644 --- a/pb071/category/practice-exams/index.html +++ b/pb071/category/practice-exams/index.html @@ -15,7 +15,7 @@ - + @@ -26,7 +26,7 @@

    - + \ No newline at end of file diff --git a/pb071/index.html b/pb071/index.html index abcb6dc..9f1ab88 100644 --- a/pb071/index.html +++ b/pb071/index.html @@ -13,13 +13,13 @@ - + - + + \ No newline at end of file diff --git a/pb071/mr/index.html b/pb071/mr/index.html index 3b5d45d..85d688e 100644 --- a/pb071/mr/index.html +++ b/pb071/mr/index.html @@ -13,7 +13,7 @@ - + @@ -42,8 +42,8 @@ for the course. Because of that, before you do anything else, you should switch back to your default branch.

    First of all, same as in step #1, check that your repository is clean with git status. For the sake of safety, do not continue without clean repository. Then with command git checkout BRANCH switch to your default branch BRANCH.

    If you do not know which branch is your default, try git branch that outputs all branches in your repository. Default branch is typically master, but can -be main or trunk.

    aisa$ git status
    # Check if repository is clean

    # If you know, what is your default branch, you can skip next command.
    aisa$ git branch
    # Find the default branch in the list; should be one of the `master`, `main` or
    # `trunk` and you should not have more than one of those.
    # In case the list clears the terminal and you cannot see shell prompt, you can
    # press `q` to quit the pager.

    aisa$ git checkout master

    Adapted from: https://www.fi.muni.cz/~xlacko1/pb071/mr.html

    - +be main or trunk.

    aisa$ git status
    # Check if repository is clean

    # If you know, what is your default branch, you can skip next command.
    aisa$ git branch
    # Find the default branch in the list; should be one of the `master`, `main` or
    # `trunk` and you should not have more than one of those.
    # In case the list clears the terminal and you cannot see shell prompt, you can
    # press `q` to quit the pager.

    aisa$ git checkout master

    Adapted from: https://www.fi.muni.cz/~xlacko1/pb071/mr.html

    + \ No newline at end of file diff --git a/pb071/pexam/cams/index.html b/pb071/pexam/cams/index.html index cc13a33..04f90a4 100644 --- a/pb071/pexam/cams/index.html +++ b/pb071/pexam/cams/index.html @@ -15,7 +15,7 @@ - + @@ -50,7 +50,7 @@ are just a hint to not waste your time tinkering with a user experience.
  • you are expected to handle the situation accordingly.
  • Failures of any other common functions (e.g. functions used for memory management) should be handled in the same way as they were in the homeworks and seminars.
  • Your program must free all the resources before exiting.

    1. Subject to NDA.
    - + \ No newline at end of file diff --git a/pb071/pexam/garbage_collect/index.html b/pb071/pexam/garbage_collect/index.html index 755a7f8..98a4224 100644 --- a/pb071/pexam/garbage_collect/index.html +++ b/pb071/pexam/garbage_collect/index.html @@ -15,7 +15,7 @@ - + @@ -43,7 +43,7 @@ are just a hint to not waste your time tinkering with a user experience.
  • you are expected to handle the situation accordingly.
  • Failures of any other common functions (e.g. functions used for memory management) should be handled in the same way as they were in the homeworks and seminars.
  • Your program must free all the resources before exiting.

    1. Also applies to Fedora, but… we use arch btw 😉
    2. duh!
    - + \ No newline at end of file diff --git a/pb161/environment/index.html b/pb161/environment/index.html index 7444780..c97669b 100644 --- a/pb161/environment/index.html +++ b/pb161/environment/index.html @@ -15,7 +15,7 @@ - + @@ -56,7 +56,7 @@ precompiled main for tests, e.g.

    - + \ No newline at end of file diff --git a/pb161/index.html b/pb161/index.html index 44a1cad..9d3382e 100644 --- a/pb161/index.html +++ b/pb161/index.html @@ -13,13 +13,13 @@ - + - +
    + \ No newline at end of file diff --git a/search/index.html b/search/index.html index 4812ba9..82a223c 100644 --- a/search/index.html +++ b/search/index.html @@ -13,13 +13,13 @@ - + - + \ No newline at end of file diff --git a/talks/index.html b/talks/index.html index 3fa9ef5..0b5ea56 100644 --- a/talks/index.html +++ b/talks/index.html @@ -13,13 +13,13 @@ - +

    Talks

    Featured talks I presented on various events.

    Packit: RPM integration, all in one

    Do you want to automate how you build and test your RPM packages? Do you maintain any package in Fedora and want to automate the releases? Or are you just interested in CI/CD on GitHub or GitLab, Fedora and integration of upstream projects with RPM-based Linux distributions? In this session, we are going to deep-dive into features of Packit that can help you do your day-to-day job.
    • DevConf.cz
    • Brno, Czechia
    • 6/2023

    Also presented on:

    • DevConf.cz Mini in Brno, Czechia (3/2023)

    Credits to Paweł Kosiec for implementing his own React components for talks.

    - + \ No newline at end of file

    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·S_f7e9?K3W=vJH5XGMcZZ`T4wihY{JK zw(OmM&C;uXuFtCUYdVs-q`?bn~sF+S829y45+Li=|)tixC1sA=BK(~vQ_lL1T_ zxAS6SoH4MFJ2QrY6#Q(-u-olDBK_A?&}HU-vB^OIFhVZ>el?ar#Te|*QMJGiw_wP) zbtiE?movdf-?dU{r9%uAl0RbrcuhdyV|Yn2pwX}3MA^y+42?^#JZx}0se{s{#!UFt*J|Bfk^oi9U9l=o90?KYf$ zu0m_HoB2!WloM5vP8A!BGv4TD1RG$jk9}@RioolyTiseygKo}uD*&i$o&VBqF5vMZ zNN+RMnXnH5{yo}Ef)&=r7`STvk?jX1FgQa#?exfhr-OW2`_naAfcp=xr^*(df$#8& zQKvh{0HaAI9URwDKBY#i>iaAuVoQmugG%~fR3;M`L8>4{026Ebo(}` z|brfxXYDAQK@=Z|m~Vm}piy&G?d= ztAUI0UmBN;&ho5;?J�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 nD&RD4)L{ch|9@Kj{g(`&0U(zjpaBXD{}uchy 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