From 186d70713f6544ed3ead61952bbb75acf6f5b3ce Mon Sep 17 00:00:00 2001 From: vinoth chandar Date: Sun, 29 Jan 2017 15:22:57 -0800 Subject: [PATCH] Adding documentation around Hoodie concepts (#71) --- docs/_data/sidebars/mydoc_sidebar.yml | 8 +- docs/comparison.md | 5 + docs/concepts.md | 115 ++++++++++++++++++++- docs/images/hoodie_cow.png | Bin 0 -> 31136 bytes docs/images/hoodie_mor.png | Bin 0 -> 56002 bytes docs/images/hoodie_timeline.png | Bin 0 -> 23093 bytes docs/{performance.md => implementation.md} | 6 +- 7 files changed, 125 insertions(+), 9 deletions(-) create mode 100644 docs/images/hoodie_cow.png create mode 100644 docs/images/hoodie_mor.png create mode 100644 docs/images/hoodie_timeline.png rename docs/{performance.md => implementation.md} (56%) diff --git a/docs/_data/sidebars/mydoc_sidebar.yml b/docs/_data/sidebars/mydoc_sidebar.yml index b5c590d62..843dc09b0 100644 --- a/docs/_data/sidebars/mydoc_sidebar.yml +++ b/docs/_data/sidebars/mydoc_sidebar.yml @@ -35,6 +35,10 @@ entries: url: /concepts.html output: web + - title: Implementation + url: /implementation.html + output: web + - title: SQL Queries url: /sql_queries.html output: web @@ -47,10 +51,6 @@ entries: url: /admin_guide.html output: web - - title: Performance - url: /performance.html - output: web - - title: Comparison url: /comparison.html output: web diff --git a/docs/comparison.md b/docs/comparison.md index 467b60984..0898417d0 100644 --- a/docs/comparison.md +++ b/docs/comparison.md @@ -7,4 +7,9 @@ permalink: comparison.html Work In Progress +## Kudu + +## Hive Transactions + +## HBase diff --git a/docs/concepts.md b/docs/concepts.md index 9a2faac3c..8de1915a5 100644 --- a/docs/concepts.md +++ b/docs/concepts.md @@ -3,12 +3,119 @@ title: Concepts keywords: concepts sidebar: mydoc_sidebar permalink: concepts.html +toc: false +summary: "Here we introduce some basic concepts & give a broad technical overview of Hoodie" --- -Hoodie provides the following primitives to build & access datasets on HDFS +Hoodie provides the following primitives over datasets on HDFS - * Upsert (how do I change the table efficiently?) - * Incremental consumption (how do I obtain records that changed?) + * Upsert (how do I change the dataset?) + * Incremental consumption (how do I fetch data that changed?) -To reason about consistency of the above primitives, Hoodie introduces a notion of `COMMIT` +In order to achieve this, Hoodie maintains a `timeline` of all activity performed on the dataset, that helps provide `instantaenous` views of the dataset, +while also efficiently supporting retrieval of data in the order of arrival into the dataset. +Such key activities include + + * `COMMITS` - A single commit captures information about an **atomic write** of a batch of records into a dataset. + Commits are identified by a monotonically increasing timestamp, denoting the start of the write operation. + * `CLEANS` - Background activity that gets rid of older versions of files in the dataset, that are no longer needed. + * `COMPACTIONS` - Background activity to reconcile differential data structures within Hoodie e.g: moving updates from row based log files to columnar formats. + + +{% include image.html file="hoodie_timeline.png" alt="hoodie_timeline.png" %} + +Example above shows upserts happenings between 10:00 and 10:20 on a Hoodie dataset, roughly every 5 mins, leaving commit metadata on the hoodie timeline, along +with other background cleaning/compactions. One key observation to make is that the commit time indicates the `arrival time` of the data (10:20AM), while the actual data +organization reflects the actual time or `event time`, the data was intended for (hourly buckets from 07:00). These are two key concepts when reasoning about tradeoffs between latency and completeness of data. + +When there is late arriving data (data intended for 9:00 arriving >1 hr late at 10:20), we can see the upsert producing new data into even older time buckets/folders. +With the help of the timeline, an incremental query attempting to get all new data that was committed successfully since 10:00 hours, is able to very efficiently consume +only the changed files without say scanning all the time buckets > 07:00. + +## Storage Types + +Hoodie storage types capture how data is indexed & laid out on the filesystem, and how the above primitives and timeline activities are implemented on top of +such organization (i.e how data is written). This is not to be confused with the notion of Read Optimized & Near-Real time tables, which are merely how the underlying data is exposed +to the queries (i.e how data is read). + +Hoodie (will) supports the following storage types. + +| Storage Type | Supported Tables | +|-------------- |------------------| +| Copy On Write | Read Optimized | +| Merge On Read | Read Optimized + Near Real-time | + + - Copy On Write : A heavily read optimized storage type, that simply creates new versions of files corresponding to the records that changed. + - Merge On Read : Also provides a near-real time datasets in the order of 5 mins, by shifting some of the write cost, to the reads and merging incoming and on-disk data on-the-fly + +{% include callout.html content="Hoodie is a young project. merge-on-read is currently underway. Get involved [here](https://github.com/uber/hoodie/projects/1)" type="info" %} + +Regardless of the storage type, Hoodie organizes a datasets into a directory structure under a `basepath`, +very similar to Hive tables. Dataset is broken up into partitions, which are folders containing files for that partition. +Each partition uniquely identified by its `partitionpath`, which is relative to the basepath. + +Within each partition, records are distributed into multiple files. Each file is identified by an unique `file id` and the `commit` that +produced the file. Multiple files can share the same file id but written at different commits, in case of updates. + +Each record is uniquely identified by a `record key` and mapped to a file id forever. This mapping between record key +and file id, never changes once the first version of a record has been written to a file. In short, the + `file id` identifies a group of files, that contain all versions of a group of records. + + +## Copy On Write + +As mentioned above, each commit on Copy On Write storage, produces new versions of files. In other words, we implicitly compact every +commit, such that only columnar data exists. As a result, the write amplification (number of bytes written for 1 byte of incoming data) + is much higher, where read amplification is close to zero. This is a much desired property for a system like Hadoop, which is predominantly read-heavy. + +Following illustrates how this works conceptually, when data written into copy-on-write storage and two queries running on top of it. + + +{% include image.html file="hoodie_cow.png" alt="hoodie_cow.png" %} + + +As data gets written, updates to existing file ids, produce a new version for that file id stamped with the commit and +inserts allocate a new file id and write its first version for that file id. These file versions and their commits are color coded above. +Normal SQL queries running against such dataset (eg: select count(*) counting the total records in that partition), first checks the timeline for latest commit +and filters all but latest versions of each file id. As you can see, an old query does not see the current inflight commit's files colored in pink, +but a new query starting after the commit picks up the new data. Thus queries are immune to any write failures/partial writes and only run on committed data. + +The intention of copy on write storage, is to fundamentally improve how datasets are managed today on Hadoop through + + - First class support for atomically updating data at file-level, instead of rewriting whole tables/partitions + - Ability to incremental consume changes, as opposed to wasteful scans or fumbling with heuristical approaches + - Tight control file sizes to keep query performance excellent (small files hurt query performance considerably). + + +## Merge On Read + +Merge on read storage is a superset of copy on write, in the sense it still provides a read optimized view of the dataset via the Read Optmized table. +But, additionally stores incoming upserts for each file id, onto a `row based append log`, that enables providing near real-time data to the queries + by applying the append log, onto the latest version of each file id on-the-fly during query time. Thus, this storage type attempts to balance read and write amplication intelligently, to provide near real-time queries. +The most significant change here, would be to the compactor, which now carefully chooses which append logs need to be compacted onto +their columnar base data, to keep the query performance in check (larger append logs would incur longer merge times with merge data on query side) + +Following illustrates how the storage works, and shows queries on both near-real time table and read optimized table. + +{% include image.html file="hoodie_mor.png" alt="hoodie_mor.png" max-width="1000" %} + + +There are lot of interesting things happening in this example, which bring out the subleties in the approach. + + - We now have commits every 1 minute or so, something we could not do in the other storage type. + - Within each file id group, now there is an append log, which holds incoming updates to records in the base columnar files. In the example, the append logs hold + all the data from 10:05 to 10:10. The base columnar files are still versioned with the commit, as before. + Thus, if one were to simply look at base files alone, then the storage layout looks exactly like a copy on write table. + - A periodic compaction process reconciles these changes from the append log and produces a new version of base file, just like what happened at 10:05 in the example. + - There are two ways of querying the same underlying storage: ReadOptimized (RO) Table and Near-Realtime (RT) table, depending on whether we chose query performance or freshness of data. + - The semantics around when data from a commit is available to a query changes in a subtle way for the RO table. Note, that such a query + running at 10:10, wont see data after 10:05 above, while a query on the RT table always sees the freshest data. + - When we trigger compaction & what it decides to compact hold all the key to solving these hard problems. By implementing a compacting + strategy, where we aggressively compact the latest partitions compared to older partitions, we could ensure the RO Table sees data + published within X minutes in a consistent fashion. + +{% include callout.html content="Hoodie is a young project. merge-on-read is currently underway. Get involved [here](https://github.com/uber/hoodie/projects/1)" type="info" %} + +The intention of merge on read storage, is to enable near real-time processing directly on top of Hadoop, as opposed to copying +data out to specialized systems, which may not be able to handle the data volume. diff --git a/docs/images/hoodie_cow.png b/docs/images/hoodie_cow.png new file mode 100644 index 0000000000000000000000000000000000000000..bad15a891e412f254af87500a3dd4f1a71be05b9 GIT binary patch literal 31136 zcmdqJbx@q$(l0tphL8yX0z+^MArlhZ-5mxE5ZnnG+b)004j{Aug-{06YW%0Km&f z4-i+pmCS_^e?Ue8(gFZLSt#nQE;8aXlC6T6AfR}FXdCf?OkZ3<8US#C0svm00Dx=6 zC9f?2z@8oe*wFz1IO6~ST&tuyd2Yl!Y&n>s$o>6291d4iRkg6N$jZw4`t|FNA3t_> zb|NDqM@B~4+S(Qu7ZF5mZf=Byh4Jw4XlZHNHWnQ_s*2`DmroAW>T*n4O429$rVe** zfBuXdX(wQzM*;$$;N!%PoSc2_IxcS$pl4|aj8CzLcSnCw;uFEe#47R%-YIHc%C0t% zQFc`~3^ulViI@G=^9+ zlAe^9Fu)&~SRC;IY$dL03jp9H{`y6du=kDv032N;gas6xX7(FVJZDv&?u%h(p!Z0v zP|!K6_C~yviplzMqM$Lcd$8|*apM^}7helNdYmC14&-0C^{mH1{YC=wvvpoJz!RTlH;`IS(fk_X<{sA0y$CDGM zWgIq51na8MZxoN%W#kq{JhWMnV%&MOwI$3W z+;0q|$!cwNpcKP)&O>=~)p0G<)N3?q&?U89@SMSx>q7tlrB%>)Q(EGHmnPdyIgwx3 zG0$4q<0s`I=Q1mV-m(qXGM+!cnhXG#;y_LB_g|@(39LQVMnjpOCa23wc>Jh-)7O#( zX;r*E0xYbkCy56DIKYIAZ9h+NeAwrJNA+A=t2#bTn6m&Pg;IQlkx^52Udthf(XheD z5^t=-@Ve1QRdH?#>x*}B*6IuyQOk$yZQu0KEyE}{#JTxKQ7WjdM>?{8`sO)xfYyR? zokc4=hgjkGgZEW1FIR|2Y$QTKHEf17l_Qq}MD_HkhU_#djukFUa0s^i*QnGLj!=^L za}N3L2ST*noF0zPPdqZu4igu=IWmn?1)>PO)30d=p-TiPd8ys&l(;!CgaQE$qCDgf zT*a*o+Ucd}{2!YQw0zQ|NgF0T4+K;b27)Pbmiv}F8ix(VCJzYPX}PPyT>3i9`WSM- z)TshA@1-IBKaitWyBMq~9ru$>5%dmPnD?CNCgvDSwLev85bl(*Ae~NeuMLwZZPxZZ zoZ>*56t5UQ*NG9~^s>|%l)BxOHbNCCf$3a5(K9Qfj`tE;(5p}>x_NyAjPXZUT}T%$ z+A+6I`y?h23p|3fZsf^3`}0|7*hv^BA9Y{v5AM<15~JW*=#ruldmxj4f{;*AY?MuR zBC^b9b#H|70aIapb^r>yFyZ%smD7WtiTcbVxgxgbdq6dq&GhiGltXbY?H{g9Dp+gG z8zAmsJ6BP8;-Uo^(m?{~(*+e`#aQ;kg)lWRi{Im_TwHKKydbIC}SP*`bZv z6k=7sph0qD^H}z7!JnM7+7??iU>%X3N~zSKVaMh7ZOeHpg|i?hSVum)C6g38VX)B! z*uU+jKNg=UAcEOiso64R*zNS=d$_s+c5Q=*^nkhS6I+XqlpAXx|K|w)TzU)^gKc$u z1%1u|#xBZ9u14yeoU2 zshEz9&TRse4M~p&ONy6h(C%Jk=U9mmzz}-`Afi>IO#ma_Wc!HH+hHmZA>N6{Tx&@v zl8rJ00I=v9G6Os!!XG~5kLfq2>k-YWf(3lB9{Y3k$=5H9{#_*&hlp(86N8b z5z0pslH&d)@WVCqaAG1v(g$#p(Ibe*(f@z;+7IN5PF0<`vcp+Cue;*LtJ_mYLab{} zG;Vva@MilbPBSYBX6>zxmILqM+bMhYevbQe!ohP~gm7tzHDA6@q9hLv*4r`A^crk^ zT+AsJ?M7XRxEY&%Rt~ zy3b{?#85yBecK55QER3DEcEF!2f<4(SWA|RsbeMwoH~N^)SU=e;DxZ2y4+~K#IMq6 zTG(rEH#6dXGQ%tL6N}8ZPy&0hPmgdc)(qxY zqE4C9Uq#U&&ZqNOn&CidrcnKfzd5Huoonp&v%Dh){*wuAt`%XDc+I%g8r>iC$=OG8 zf|_2*{<9AlkHOe7?2(BQo$e3nz(PyjjW25=CA=Ia3GdM$M_p`Ul>-|o1{D<22_3Bs*9_&IB*$x z&d5StgGC#?;Vj$Jg-rYKvJ|j|aq4d6c0ky<_Ue|$_RI4xbzQ;jf}U^Z^oBVdE)IGz z#l0ubDtbT~T37KWJNF-hQk=h0pW;Bns$cR^p1Uf#s2V`@VmAjXQeNjtr{z}pvWw=Q z8PB-68))_V39STVhLwDg#ob5?m+?c^-jFx<_8iEW^6>ugr0>j^2`LX&cq1}Z6%}#o zzaK;uBaYg#%6Yj3_VR{~qPxC^0Q0U=t`sR$zps*Xfcof8RqHOVk$tMCXx2mAGRgua z*T+Dx^~|p5e*F!u6102uP0$pLAMKs;+|%ju{4mV@h9QRr<%P=oOoa(#><&`yiNh-6 z*o_#GmuB^u%@4nVkIYe1O^ZJ=={Bu*4hr(TF zI3vl3g)@LNKC!96?bQAAG)VIENSl!+GkM8}tV#x=F{kyrM1Gc$51_CvblES}@m}?V zRNirf=^@FTQJ(z3bT|I`Q@(Qgx;Y`m}TF0(9ZF# zLc@!tW{7hUB^TX`eD!PPdZ{a_Qv=F{A1p@t^l*PEZ~MpOZc!p?j? zJe>aZjhk+$z64$19`}Hq z)nesxYc6HYaY}DtaV<>;zO&9EbLePGxWwwY)zfyk{>;!^25Zk?3g$6Gyf8VVmW~?4 zwsAD?E_Y%|aYBu@Gkbp?WY-jE7XM1&`4K^be#Z1Z^mP16TC3JY)Fn* zjBS&0(Dh?+9<<7=2G)c^pHB5~8tlaE@IF#4R!DgB&>TriUWvh!TD#1QkkC=@UIk0F z*j#mov2+Bg8ixFhgf5QeYcbOJ&1M2LY`bSU&d=ks;5u`dU$O8s>gAO}UDO09$?$a} z1Ho7Y7`vRrYkq#%tA;x%`k5ZkF#YWY`m^H0gEMpigr*9m`8(Ye-d(pdB(_k8^Q4NL zou$6bysGj{Y=2TlyvMjdY)Z{ugdXP^QCOzQX~C@Y-~hSHH^0$P!axXzFJLPy4yBfP zjQGZjuqR~>*Mz9o{ZV2oIfG;Br6Y+dojJe1pe$P7VN!P&7Nwpu=XoPuv&tUy;gVOtkJ*IyX8T|ugcFkv2W)p%8EbG%UMjp= zz}*?EUsChBTtLlmrm&CZNxsoeB+lShEp<|KoX*krc-hxi6QRg#A5VS|@LLSrWm!j( z7nx=BruWgAL`{vn&m+C^CjkN2A3YVpMu43sztG74@CwW6dT+mEekC3I<5OPoDR{K~ zNqH`D`0c;T_-jf&E(+#*Ytg|o@TElZ7a ze8|lZXP6J06oQF0}m}Fvsc=e#S@jK7XgXbYk@4^QZ^`T_i#9Q zUx%$diSVZ0ta+;BKQX64ztXR}k?O1)`PrVPX>kBVgnmuLUbOqLZgX}$CqvM-%X$M3 zErdZ&JVC!C#A!m42f%a_xP6i>q&BuC2eG=tp+=$6Vp z)F?fAh^E*mbCpoY3Xgg*hU~Cv>m&MYJZ)&)<1i_IYPb${uH$i!oi^SfW@H3sAQ8d1 z$Yz3rjrCOrQf$63_%$ou13-sF=X(Z=Fh3ut-;?*OSh?@MX6x%?@b1>`l)Td>TdML@ zn@QuJIZ1x|JkOs!)F9%WZmkHF>WrjW2w?0EGmeGkd7w_>BM zTLXr)+GN{|LBztU2{!~n1C*Zc-y{y2OW?yKKRU~4d$tTB zu&%{=Hs^FwXy95H*6t{!5v4pt?*kT>XghJgz`MpFO<_P0EG_DXIa9yP`%xyglb*O2 zSsk*#l~9E{AQ9cI67v1a3E zdSOapEUfN>z+4^O()K6$pXiiq#1$|rpDzpF)~r*Tpq%)EzXUS4n*ptp--&+jH=&*} z&;K0-6gD>m5qS%{fDHWEgaSq)9{Dgr#scl8W*baXYXv#T{*!P1BZhPZ2A{XA@z~ zp-+6*lQbiL;NyRlWa%Y2u}dvco*NDORu+@i{g8si{&g~dym~~4s++UAPs-AuHpKZs zH5EfED^zY>P-_6NDpw%O2!R~!Jj=J$g0__mPxkKlQw=Tl&_Bv(TG=sBaWXD_0$;^;^{or4(zKd)s%nKCB<}4&?8uZX z?gKg{U%jRbsiaEBVpN&U^x5!A>-y!i{8vM~CNi8NG@YZA70Co_xpWC#w&~JUM8|v$ zRo#{~QCiG;Y}N#*{FX#vSOekyPXP2X7M}|Tka}A}~Dn&Y!ETlb(WV(5ZF@aZZrOj`e75CXK-{<$34TUnYA;^*HPP{5~mlYN`0% zO;>_ro907ZU89?{G96~WNtxMmN*p1Mm(%0L3Ow6jrzUD3O?Nh0;3bQM`zx4Y$)N@To64h|!y2-NN-z!d?_mQ#*_XVEFYTTBjlT=-ZnI#q$y(5+PxpWX z=Uu}#R9%BTcXkM`vI>}5@RkX*Awm4~=rkb0(m1EFa0&;&Oo0DvCv3&y*vzrW){(@YyDOKrIe7cHhGSMe1c9I8H8#=9OkcR%zi zmR>yDUm32u#lX;x+2`$zmaSKDQ5`52YT>+6>g&BCbhmIo zsw<&*SxxIhaO1~ve)8d6b-H1RwtSMBd%a30$RZw32Gye1gqJ43qqW!6iOUjmH(ept z#$}_y)cH#gQk4DCC-Z}yk0Wh)dg#bWNsOhv0uL-+`6gKyvN~$gCHpk3*3m{MTHv4> zkFyqvFVLK6=Ge~*Z}?|XPtVzEF5GipG?>D7<}RFrji6jB-@7UZ+bE=D##FF&2Y2hL z)Ea{ysIJ_kP<13G_g<)ICY*hAQ&R4;(gyl*G4izmGv<$|n4X4Km*6-cNl+)FgNBDO9r z)?`J8i-npWTR&Z(7Y9YMIfN6tUR4#$4wX-qP|6fFX%;fW#}nJ#WRPBeP9Z>cG+f1H zyS_roA=t?1hc#e2$!( zPKR~x80MRJ#ew+9itGVsTkn?(86&U+pfNw0qkEhzo)L~8qk_%XZ0#FsMfs8^^Dv^` zM1HJQm!IAXjf1$ynjiFkztFEYyIP86$g+3JoyDvFPyJc2!MR#Rtt!)knCEe`uxwrx z0o_cK*1H~4maUXU#BS_~5|*Ypca+3V*%Gk(Wl9<-k(9?VeWoG5ysX$5Tpv6M`RpQG zO&L0WjDu3~C3%HS)lPCJI;i-4NVsigc)BK`R2_OUuCnvwj!du~hN1*` zM~|cqjMv&wP|fsT+M6>4-dkU3&9i$mtqq8rXz$ftK3u3~--FD|txT0ImsSSEy$ApTuH27!MXI z_Qeb?_*#|DI`6!-K$$6Ba-a$kcRJ!z?IWijp+#qUHp@w6EzqQ&^Vpy=;C@&o^G)c& zPnZr4ZZPH0zDq6#1siZQ8atbOmhqX~1eA;esOQQVTa1kx$sDO>=Qs@-F+KT29HCUo z8`k6g`9nAQ0!X2bi?(x0#9?oJw%9_bSF1UL{p+nd<^)?qm%=k4mOkD)A0w(Q;C@LGtFpVk8!`f$v63S)(7*bu62x9B7L_ z;LhTXL7maqS5E+RUW_qTC-b+emN)S*htzpNum1<#W=Vsylkw@``-RVtj;t2v$Uo^>`zecZ>IIiBDhTR8q83?~GqNH}6zkDam?Hxiu<-MFW} z0~G_yD7k1>A9uPe*0R11jmGuo=asRY*>+{Nm=g10XCwROk`^pP6hdk*Q_H`! zI7q*$m)jW&fd;Baut$0XQr`u@eg>tv>M0>xr<8WMM|3K-sakxX8^!8{UlSWv3%YDA z(@3hlklg(*`?2HC;;)ZJj< z7ds_BA!$Z*dF&$Rh;!q zZk)f&P{r>a)mSo~P+P#CaiF4mJ1&l+Wii**Wlx4g-}mgnbYoxRlf0IOE+_e2a;|s| zfohpP)JAS?nlcoE*vT7(C_f&8O06e3Wr2HBz15oYzA=p+BG#s7`+BI5M;pZ@Hu&r^ zg*|ir@l1~921!A z0_qqT6aKvha;VoA##I1fOr3DqrrYNWz}dWSKpbF1D&#?2%T#>A@BH<{066}=)7%8v zKpCy2q|C)F@nk;QI7MG@u$)-}XMNO13LZqBWh+7c-ebaB(t#$t!764P{LMf_(RM9Q zk^~1TWs9~p{Eru$!sTD-=8Wt0q#L|}%C*kj>=+KH;Tg-%uu^RD^{Kh#wJoCW8=F|3aQP9ep}OyL35&|{t+8zLgDQ&I5;RdFW{G(i;zN}#`uUAU`p{>5$M`SXh@SW zJ`5{-rnJ$tUf&Ap;S8B2-wCDQjQqqD=*62|lRdgJ_2r>Q;qWpALqfJ6X1^?sB(9i} zo)1U$B`)hE`;y#?FAMX}SuY6wZC99Hr4ew)riVAws=QT_MfWiSB{Vx;DJQm&zqHyI z|454eb_CSQD^h0Rv$5jqMja#0=ipil!aG z{lCJMwA61nb&`riuKzMc%}JE(uI~h^ym_48EHmv zcD<_@;cv9jI)Tv~^D06*W{=^O1Agy6$3cBqZ!0wP#p}llII>{EO66sbS&&#DMYW&W zdkIk}sK0*J2mepvb2=>aB#YF2k4PNpR=c(uJSj2)Mi5hL5{)m72QDWlDzmM#+P#TQ z7Li7=SLn}a8J+FtfY&CYiBqWAYuXay7Z`mO(xg#V26^fmTD0wGGpr&D7@x$m4$qideepp)g%c)_RC!x>dL*Rp!t&raEc|!WcX*XRx zTUDm^>);2BCfv>XQnPmtAb4DVMTRDrm-?XX8>~*+w#nowRtHZR3$?;%+Z}{in(5Vq zdGag{&p!rNk1}zIM#@<*&3s8h4Vpb7L9`4B8e@4sVR|%2NubBBe4Kk<%DHb4rzMm! z+n}dgX-Aeg=q{_3Lh2U9^=}qx0u<1~@Gz>SE~|X|T|&3I&*D^dK_1|FHd=?&hYmpI zq+T@%ck0BA)_{j4$t4`JrbCUIpK#>Jd>yBud#SA=w6!tQ94>5Dhoy)s&~7-M_sFi* zs*gBAh!pK3I4I>WU*m()S9`BXgzqvY#_MOk-g+7qE^k>cdgK6onmdz|2Su$wRbjeG zAWN8)dE9v)-l@9N`wiAhDoTJ)39F^;rxZ|qhSr)oxq5%@r7g`S)>J|_O>5J^3;0KC z0m7K}7`$%=J^s0d8VA_I{AZ~xApX#Qb`S^!xPbl%y!1#zFX-WAOf0{vDKD@W$*)LZ zFJip~3app>_6xls4kmeke>40SaaC<>($IwY#FinJ8ENZ0wit;V6u7X9?t2#v#2{ ztWp%|_8Yau2G#>fNx85~_I2BV6{0!|0b%4HkrWGa1C6{d30f zNfO`t*o}>_PQS;aGqNw+GMG@ic~45>q_UPr(l{yj+w4V=p5hGWX@%pFDBer~R5bd)mGq;{K%EUt7do2(F1R zpc{(K@u~5W^?}UV`oHq&oi0q^X8m-LsUYqo z%GMio^#0fILNlN%I!uR%yAs@&_XJfRH0_phQX{A1g3>@XX7_Xqw3iBJfw##r*@~7g z*M9?{i~VhsBt0OvH!w(Q4@~W5x-UGH`;IQOD;n*AvudqZZ*j{5VKIdpTlpKx z{BpT9IE?HR0*17O?tZ%)vH%uffX?q#S2wAr?COu)d#c6$%~eFPMeI;JewPU}|C?L> zV-f%No$LRCKmQ-G)FX$6wSq*E{)t9VJ)rRMkO+V&uI2Ktr~_*SDP-tuF?!*{bZ-CJ ziELes^BeCFK?NqHDRN6t>!A>2ZE22RJ z)djvDcH3eEJVZq2Dx7w+I>!4HNOA=ue$YsAxA!Ks!^u%Zs@~5v?SYhp)mXdh%VS&4 zJm%pfhc^k7M%)D@cS%2jcXyvy{HB(z15}kTWVL$^_?2O2F+%-`nsmSoX$8Ax7EM}D zHB+(Ts}3M89@aJv-5K4lGJz zKZ2GTA!>`q(5IMLLa|7X5NV^Lkus(HGI{uHwQ~?QdNwDCEw%7EFdnlv^TntKt61?? z-qtdQ+1l$=Pc?0kfsOa)n5mBQ#!iu1M+qWl?H_!$hC$~AO`1eaU;`3)X1nKJK*$u! z^1yCY5oHSAYwqkq_{3p8U+_C3n=ov|7ffo@e$CO?8q#8Kw5PW+1V^^2T zr|qcD=YpbozO3+{`IfjSmOyKPxMw72^l;6$dsE0&xFRucOo(@%UReuarZ zFq+b4IFVI8JsS* z*T?dC*ASCLkx-z44M^<}1QV-0l{g^Ppxgo-4`m*1lP z0SS9e)Pn;K+rauqnO51YIOWFyGJ}TnH;P}R9p&S5WNW%z$(u``Ca|77V@ttxHMGxH z3W+c;C1x|%*) zH8K*#9@OS$P&>cfIxeeBrjywY*xFnNr@DVtA-TW2guR<5o8A}xqaj9&DBgoS(16~Q{yw189EJKck%yWXf}?LEusql zgS1L-%8%l{A86?ODf0e+9|TbY9cLrjf5R1UFhVb!^)*zu|CVN3Kn~hC^=$@X|21-) zvvt0vnH>0t@e#aHyKTro@bO*iVQ`VKJ|4B5aqiU4+zveT;bWr|_lQd*%0r{^o z{SR84kIga!s@MM~_eyCU^?&Ds$jkahFheayIE`l74G;RCKKLIjSZ_29si-w|-bX$?*D6G}#=2rm(r1N?UyL`CG{l?XmN zOcH+ebraYN#Ji&4;sw6=76ol#5_hUPem zKH~fOf4;9`f!p8TZd}w{E|i9ViHK8^EN}Olno2Q3WD^dpevBPpH?eax{miKE;o|-c z2y}sIuON>Cy@T-?)O$fG)`|&6yY4yKiX)zaKcYNSQsZ$`mBg+l-#S}$<2E*&adQ1L zQAb%pna7PC()IYw$FBo(QU|PX{W{Jj4?$c61=&6C$j$2`4jxyRuU7EWg0~ECGtNd2 znI9_?sQb{vqu+4G2key{#1{wtboCtLVUaFy)5vHul$11i!32mKD~1Ls#h|NM_O#PW zyzlFNcJC^(kuiC4_#t*yD2BuBy;lj4ydrgomm4nqs>9Kd|;eV`#DN0d14_KN^pLk!6iA&*nXyKg#upTfYrsi}YC= zkTBpWDz_?BxEx}eq{3j)5_VrjbS&)kDK?KsH{DJuaynyiLkHw|9Pw(cWVwH`kTFbJo%nf-SW*?M6mpeRcn5$!L&AeL|S$BgSsj1)QkWPXll< zxQqIQOD$&+_S zlBt^;efJWuw1mBATxA?`K3V60a2BNGCr)M8^VI|Y*oQ7KFTsnjFCwDHd_%!vOx@Sp zX7pq*2(o4hl+hs~w`{(CSd}Tq?q`AInAp<2a@AX~nkmJ}x;Sfu+pyG0dC8K@!yGELHgnb_i!{4&h5vfj$Mvz||QVL9FKaQPR&MOZ|KIsL9nzNajH_@LR1 z?X%FZ8-OkW?uLe~Z)OQ9qWiIK0m;p=8>|WTJl7aY?z|q{o@N=m(c0T~jw z&(VA6;Id@RqkVh1gC6h^oYqv0xXCm-Tsz*&Xly>g%Xx3$y#z}XQ%Um^8__hQBlh9X ze0)z(#;JY1X@zTK2ZiUAj#ITy3uFUwoMbtrTWC>T%9t74GI~EM%RV{e-7Xz-G@f>4 z{}pX?fjS!_bG&c*GJ8N+SMhaqrJYJBU7Dl$vilQ@r3NO=r-K-f)=<^!)G4t}J)mp~ zGi<4n6`qL>(MfI|dmtMVL7-curHnxyS-L6_vohHu0xz+25ovPhfc za{&xqUS0Y*U2b$Weqb_lP#^=Q?Bi7Ja#94IeSgQd@$I%C5>;!*xjX#%KuYq_n<3vq z?e5mhSN4Efeekm%FeQnMkw%rDRTxW1C^Ua!tN%6EF?V&aedZgBm8a1S6qKnb4Qh5B znn*TS3*0daouH@u1Bisov#BBKyN0W^>FG`p8ai-Bc5nR2uc-=SFjYyPmq2+;Yj?}! znPS}y4{68W(#IVSg=${5PATzQa3{9=@NTfW8BDrDFYwV5o=5#4 zHIj!Gsy!9aTHcwG-l|vROu%M5leGEiCH6TX-XGO+{(^lCDcw4u#oPIBjrVfLDZgkm z801d+n@(w;cRT>A|DyMS%fAhq%aztD;^g5LH3njA|GjYPw+ELu6=W-hqJG_%uq6SW zrLMt=4dqC#P9~<Z@q(w7@&}?Z-47-EBp-RB{~?_f`(-^y~BETx=)Af(7K$^Vr5wCi{e#;z{*eA$?wu-L=Q-R;m~yg z552vKbz zQ0HIQykfz+Hcr^TP*9AS6JYAIL|jYXx49#BuU}wk@(57+Y?L0(@k|I8iT-b%dIZog zEZyEIy#H;`1DW^bh|`6C5ekTFS%xxA)BVFu7`9{;8NY}7H=Vyxl}77>7Ue&EslTQ_ z{?lMP=skIYSmfUWpCVTBHzb9lcupSe)11+a@7!wS z#|FL5Sg(W9+X4G&-kN_0bs#F$O+)-}6n5m=^4FugcU9~2q#iiY!dDAEPEWYW{aARY zIBBT2U?y8GC#_U|v>p%sNK^c}V-?BvjzBW3SY6Qm+580!8;*`S8GhX@;fjK;hE9io zNmB7WC9>H5yE3E5bsFH?HNEHWQAGC6vP=ov~8aV+hwANJ1#tXtqD~q*ImR zmz5Qz=}5@d-{=0G8~i#1?RR%?$?EvE5sj={XXQR&XGMeQs$(Mm%JHR>a!B5XhKE=I z9aMLl+$II?Dl;yh3Scdyk!0U~HzLt--$m49Grby|s{#w3;a4|v&Qzy(-C`P;#BhCp z`0ujv!qSWoB{33WLtb|kJAq@ynzSBOd=^-)6CN@fLeJg6o$nwLgb8Z_AnYm% zZ`@OrhAJ`AgZ*1p_Ru!RP>ubk+yt~O)+u5q+Tj0xH!o2Tp&5SK| z3bW+VEc}Xbq-!W0I|`?-QsT6esI723cb&Byk#&F=D1VWG%R0Ydl+gp0nat#z`hV`* z(kxW}LSPGILte}@p1&YK$`g|5u>}-vWOsz*x$n4kfZSI$*F?uWcZ0iu`Z!I8bsWLQ zIH2F1VXGQNM-geVa>A=XvMfpkxb|1!vC6F8bhA?MxQC7zFssO704lfhW_Y0a%nfr@ zhdCSNcYl~&V+OhuVU*C|L3G4P@J`7(3kdu)(YZ+=^k;7m|H?Mvh5kOJU72rhNua?$#H(VPBUB0srVYI%9X&vAM<3IJM)+X6zzZ8ibIP0k||*^#fPBO81d=<-#HA)&e3F)$HbE!No5TpE1XU9=Mn8Db=sP9C@6?^fXS}($Tp2W2_>v88ILY`L{5@d>K`bmTh zAz!x5K{uB1!Yu>hF+!-Wkiw1{Cff%cARq`Wu4Tg?Y|tEJ7%m`VT z2&=YqBK?aB15&6fkVBpp)kjeIXVis=qyV#-Lrg1j4C3*iUrmWb2;}g|yY_0S<_%$y zsM7Be0+N~!lbz#mEf9E7$Gio^+8Jw@)>L_KL~zrV`F$g5NysDm)oUu_W(7lTX2cU+ z9UVWVbq;Qto;dVrR#T5oQ|DHFG-}$#xt7|i+lcS7cScQq=NCHCN)*lIxYj@sJ4Mdj znPBxaq>TZ~OiM{}#aA_E*T$8n|EY^(OiBBJv=?fdYqL;}m6HY~8V@UyEv4Ol1$+S4 z8~Hb{MrpDUon=NrTI)(_v#G})6xQ)p;E*?a_-K%&R=36>3+m0|NIPYWtjk+j6`!s5 zp4RK85*<>OZOjep?o&S#0G4*4hIec^?KN^1*tB7^-!v8?9_#DT!=b;)yGxU0f0vaU z>99!1F30OQ2np_D5PM%$Q4L(x zhbNUn&NAUp^P1<-p9A1FUD~R(GCylfRP@(zCoukWcU*LWmn6PQ8PdOYFZd>b{|(oB z)#apoc`cuaul?8Y%<%=8{gZ=v%q5b0EP4kbTcfv@1XOfz&s~DUM%z zZWg4MNU0j7>T8^j?gayvfzl^Uq_rJuJ`^HqrRKHSA z;lcSK-fIBw2v+bFH?Adx5h232^G1^{44BRv^DP_^oi#$Dvr?84Jus~gB>VjB%3jcZYydS9W^CRuojl+N?gj$@zEbM>S0 z&Q><~GTMvlq(Or}<`Kv3r|n00kYja7t9{{szn(N~nWl5w54?wrp%1*qZKuMvBTY4N zGaf;ye-EED$r`s6Q804v%3tpztZQLjLxIviJ1_%E5FL@pv~Ut%Mz9SeF|zH`-{EtL zU>;Qp5V1R`kFT65Xm?-^UH4?%>Se zp`I?pkD_00(D)YEIp>$m&e~lf?$9%SzOez7Rl^O><(bu%8*?XH{YW50&alaaW-D&K zGVFDjz$$X;y{LLl4_&H)@n7KB+#hTlxT=zA_GLdy?B_$S9Q2 zI~`!*YS@@t#^GUD#AeIz>@@*bx*|Q_r9l*iA+QcUl+cnyNK&3*F5}~Chc*M1JF#dN zN3{#(FZp9(HTOyUVQSwB#W=nvu9BFH|M>7qO^XOUHgr2KkSAvPG^ROcI=G>KHr~rZ z0zJ73Ebb{ZS-TPV(~`G(pK0J#WPgMPU2=IH3ZwjTBzo|;KF@gu`nu{8ZFUcn*owZt z2_6&mB;`8NksLJ5QHAf3pIzQJb7eG@lNh^&5ltVP$2btAi^mr{XjgDB3|Sb{Fu!c2 z3VgJp^nxb*vxMGT@QpdRDY>^Q_Iy9)eLSU+eK#TQNMMi4R4K=sY{SoMjCFEvK7t=5 zCbrDoCC)hOx}vd81~Jo0tnRP6s8-bQ*KRBJA&yP!k)T6Og!-Fz_TFH62ZoUdaH*9M z@&%@yBw67=kZSK{Wn9B~rK-sV$7L|Pf$M}!DyzfIY-d}_GEjS+iLBD}Sdd-tk0xdhk9)$i(J&fbOv3NprN)M;$b>xFAf!h>9{m$YY?8EL> zjA5u~7E!yrC@B(F>b5}LaforSP>sV+y@}F~LZO`3{JJlQwlPr9AYrwOf@m5s;P3;y zqp#Solx=$LGV6xJGEaPm2e34EHs6@5@C5#enO4Kty-#%oJ-3y~drK3632&v}7FvUC z+tZpH5(YNMAp)y{0+Xg8`>?bbuZ9McqDmLK#PpYk_$XymyQZi7K)zS5$q;4FQ6NhO zDRyP9{WGFaZ(U|3txdGcqE-cH%mdBuHeK9d;5Z8}^vU)!w1K>%H70+9MA6qmyk+RO zpxW)??pG;Co3&G8Wl(xJ1L95#Z?Lc^#(Ke8?>jmp@aXhk9WLpF$_T-N$Wke- zo2bPrW)%gY(cFPbk=ViA`CIOCa@Vqr!r1WQb=zDs`Nb*-;t{(yfgGBH4oLp&Q!tLV zkfq4ha;u*lgQq8Eut1vwY;!!(b&4x#Eo~w1>=Oqs|GnidnJ2dW(u6GKABIKaf`!(< z0lSo5+@c;9sb72x_Ea|u@$MhJLmW;b>I)EbNlLcvNq(4h`H2rkUGb++I$TFMYVSO6 zh@DLb%uXNMxO==-_Z_I2@o@j1Sl-h$m>;j=S@zNQvu|55rFJA2;y-4reTHu}G~_^DRe$f_+x1n8jiouycfK9U>`{%mnLJPn-Je@~hH_|IPM1Hb}g~(u??!BDm@Lf3? z4GSjwyoHYEdgY+hn{G&gIMjrMolVv?h2)aB6-C~Qu00Gn7!S7){J9?+tVDEdT_rBC z^!B;6P(RD)m)vuk842!GjQXl{qVkFBV}f-v>q%DXM0E3FXH1;f&^^lN!yepc>O{0pZrY%%?#o-(YkZ(Azf4I5Ft_@wFwt~*Ve;KVlGt!5b zy;1L<9r8sV@EbcS)pFYIlx3q-8aKwG3RKa&4_V51utH&5Afk^oXn|z&K~mySbS!PQ zXHw6*vF7EGQyfdJ&M` zLo5^#P>>p$6j4yBymS&N(wm5YQl*6+2sNbK9rXLo`~A3gocr&LJ1#$9ha_vSJ=g4O zK6BMD>?9Htl~{y$nizRml5tcJ%wZz>jcv#axTR++Avw5$DwI&-P&3>(G`k^WaH`Wa zy`^&Ey&2AY@T1%|QMNHVhRH5g{lPh@rXNQ>`)KXm=MFK&&(BawF zb`4jzH!5Ir{a@t--_)6_7>t8wL8Jd=i5iWZ?rnuSQLwx_~#C8@hvyAT#QqlJrKMy{oyCZWE^b+OLe0KF7b}aUqxJ7I9Y7J)4%v6F8|Pr z<(ffA$;9vs=2peI7sdB`>=2TM@6Lp&OoT0^>>(6NMf2AqZWIX*^n^c=irzN8;Y_X3 zdH#MZQDpRm>xt?94_&S?-`};A_3EF@Si+AOy z7Z19!Yy}>gpXzz{1Df5kqNIZt<4G%?w3k|v`gJt{i@k>WEeJjH<_g{ z=)Fye2$!ee!UM;TW8TNP|6|;y6i}0@duL#kHPrv_1gN1Wi*bXE6Zd<8S3T&~n^TJs z*>x=`r%bp76V&IvHqL+BlpJx$jxKc2x>~Niq2Yy0O%45W`eL8Wxo{YL6`?Jr79;IZNWbCW4YqoT9CKcV(M zr3P=GAO{78Q)aGQ%jMu#`0_$nJvH=e|I7R>jbSP7RoV0U2?lw{bAsAdrGA*J^f2#V zD(O4qt{#iDv5=W((hj3dhDk?izyN{OwDz6quVW`ZTJ1Fxy?tZ~?grUiT*@-DI!g%X z()-)B<+A4r$%8?^mmhw56+TTY7xO(^9546c{ZR+28rGtd_3t{Sf2MaK@UIqNuUBdo zzj@sKv0_I)oVtGZRDa>>_o>*!pCQ{v{-sM&a6Finlln|zS5%qhq&_7X!$W0pOGU8uTLV*-uj$R z98`XP?S{kJ`Ah8yylST00j`q&#TX$+U{%sCPg~k5+@`69toUlyQ#@y92Vb$P3SK(R zYQ`pbf32pB+2;IMzQ>IV9SHdOcm8~^y@vJY| zNS%nue|b!4lr!v$W&+ES^h3ih}{!YD^I)?)t_G zh$yFvNPIu>3KI{{G)@l1KH5vwn0;>{r^6P+&;z*V|5gjFfcd&BA$%u70?Z}-0>!f~&ztsLc-|E%^89-fwE zz?xSth~28+9lX~d_QAe>a4X4QsNQu@=zlr{(Wl*GZaxX05NcrjsEVGk#{B1+3Iq zq&K-e#c#2ly9YGG3QDUpo5PpCQW`2RFtc|o_?c}h=_28~yq>J2aC2HGGCejXJ?~If zG^6A4(zB)}^YcJ{lFt&nQY-nXD|QItaoRn0tL7m%uISM#^{$Wk5zp>bvO?;PMhqar z6!njlq`1$77+jTVP4)LE+FPuYLH`sE3+@Krp5H0xqdqVG`TbLE&d6tO3`p~>+MH>@ z%Y9CvA@S*&@Tl~|@69$v(6c(&(p85?{B4E7PUUs-_-g0>SW^Beh4R0i)}C&tRx#1E zP#!xn*BhmI_fq~@ZXM5B6Q9dO@SK&C`jF&bsi!pT^d6YIT}I?XxRQ$PT2Ayoo>24> zM7pgB^$pXwc_RYF8rF1kZ;l_GZ%4?<{puHEqkIY98$^q_>SJ2gmlchAnoJQ-jB*3i zrjG;l>zzT*D;3XdG%)@LIi$2-@oJ?6=c*TYr>u>nEuV2KeK?bxc1YXX=fTeR?;D&L z=fVAl3i~C6B!^}X;>O@;gRz+7s+F^j`-dh&vI`G+U}#k>E3&by`mIQWP>5->S$bQl z+MVxuW>@}h9kI+A4D?5M+e({0WruNM>3GZ9g4sSPcGxiRn%U%Obi^WSqqb5Pck#`y z3A$uhbsOBt@=1ZN)C1jvQ4~_aA%PwoQXcYNvp)V^*7={=7}fwuw7Rd7E)f~$=RJtFw9CJii#$<0d@309 z5807G*CKNg42pF`ZtI`UHRt)+7IzEiuV|U@tm>ptUa*ENQ<|Lj!MsW0xT){E5Jn8!}!cZ-1n21T~Smk`K# z1T3ok(`Bq@&+4o7H4e_AFz5X?e=BPKN1#&4y#yR!aVJ&yh2@GM*FFH5a>tTl2FW{I0*NS#77v zD{$+4Ib;6_=(2d-ygmq1D-rOIXo7-3S9Kgc;|T5`L5J9$I?uH{z>MR7K2WDVtg_v) zMvgyFMqV&1ubQmx;_%ZrO*~zSyZGsH%FLIUzB6(1R@blCUA`m6-EH2)XV}v%{6bk^_r8;f+pPV*YrOTe)$Z`h;;n@>^WdPp)Xez_ zWIc(np3WPxkMG~_EnX@N^541}(h#ygwNg7b%f$rrXWCkn4t@sZ4uw9=vs;{1w?+?e z60U7HAwC_6FH7lN;yvKN6r7#_s2ePbJtK>N=ilvWa&qHxvo1Fo`Ff8n%tz4Vlwt&* zu$*}B&o2c_Upko@{R@Uz*ncwK?dcZ#4RNk5u&vw;c`H6QVYIo?pA-AFV4sBlNDgXh zot+Bzox4aR3oGE{HvFh<5t<0;Yvo&Ls{A6?@UhsHy<`I=J4D(b^$RBB z7*aw7rArhcZr1(!%iIYQ@zfv?-3kBz5>ws-lx7^DneSY3yE)OjIa~N}+Gu(Y7^|8>B|WJDMNydo-1Kpr z;oD4!dXpxO8<^IwzPpLfXbJa^urmf{#ZEK;K!w*({OZr_Gso_0GRfrrRrbB{RbV1J zT;jxo?9HC|f31yw6e%P(so18EDjiJC73hW&?r3d9GY1Kupsc3%Frud+CzB3?0lImlqm8~44gCLs%JDr#9kX?tU(AhGh@TIHr@ znDg1IF6p|xM_{yp7e0}ov5-vZsI5qwYpi>YG z`f|qSW5%Rjw(p_}lDgaVqblCAteG?@=~=oiUz`edepHx#cBxP&1N+kNxGQ`gs?5{* ze6vk#{y1CAg_+#J7Q6lj`Dz6warPr09!dyk*)1VHZy(F5?GE|J90O~Y zZ*%Ookn_NDM+*^;X*_)P3gcbOad_Qvtgb#x~kt|u7R9G^cnjaSR# z79LqWMFqXuFJvG+mx>v^Li95cT z<85uM7|j%X{SyP&+NRTH6SN(l$QQtBPh$jjbk5Dpu)(9&s$Kq7CY5n+k*Zf zHXbZ&24oeeK;F9NFkFMzk$L21Mduw6{hZ;Sm)(Edg-Z-^_Q~}OR6F$(bK~p>;%2+C z(5Nb;E-~5qOX&ueT*R&-`be;$#RcMqQ=#eCA0iypgJ18(KDKCyW*|I^G*TR&c$m*J3!$|oq@;Lb+IAYp z6+#K$nFcE2gj>neGwuD;tp*0Y_~n`P>FI%T;ohFvg{Xmf;oh#^X=zTh*$Mw!qi6>s%+8vR#UiU z4wZsQayp#3P=3E@h`mg5xwDWIy71^*{{>BF@Q{}+RYh3QUI@Wyi;QRLH6ERv5<<3w ze8#4!$hL|vY_3nwd)@L6Rah}pR_pP*Ye7+1;2Ii2Lq}_a3iU(t1!Y>MZ=KLFue+az zseFSntgfEo9lobF8e6isa;-qyC*p0|ew5>*z=~_?H^fi<>`W|Ai4o&bR*w1GBeHLJ ztr0+X7v3L-V`IlBs96EzhTt?*0}4AXt0=B`ALb{vL3=Djdt6jhTwNV<#Vc6H=Et@H zey^o{LK~s6dv3+*l-XpYvy1DzjXE6#{3U}AGA4*aOYM%C!)-JobCBEp?(q!DlD9RZ#WC*!SX0Z3;`SRw>GCwX)c||G8 zA;W?WY9a6LQmaoC+X9|9*VvkUX|q^yk~9IjYUtyO$>|V3zMQV)G9olQ*6$vFtA;8 zP-LWjwEoK)%M9Rpi<}fbb*+U%(>NE9Z-u3Nh%=FkpIE3Rl4-gqHKypEif1V8UcYbi zFW4_*aFHy>-VY;H?kD4(DF>btG>||CCawX+pV~w6L%K^GX0^Xsi;cE&;|^zin|h&8 zsOlVK6R!~v7xCptaFDh9wE(bjd76`I&6E30i~3gHFZt0G?_bP0{*ctJn@71Yf$2`H zYrI9G-2yBAHSSRpB%>^=^Z57ud?{UixVu1(G98ctP1E61>zV=pDUFaAj&U%o%586z zm+cqs`}I0*Y}+QQiw-A|)ZEz&iCFw3on{or0e&`0>eWH82n@+oM?eRb==opv3x82FV0Cmq09whleGQpt+)Vc^~C zx1-YGEY5wAGr)HB8vz8{0i2}~GAzHl4ok*SI(>JV-HCPXrTv}Psfs5xo_QT@hWJ?+ z8~TMT0-a>M>)*xCl*P1dGQJ~Ve!cB!wANC1-~KdvOYy6XB2z}rf^FFY3_&|k>uj}# zJ?`BbAzpY^W@DceRv1o5E6RP-!1+tABiKX32SSVE`PIA$Hg8+Z@T6{iBeSYJWL^$L@^mf@$1M56ns?ukg<_$L`b#tJa!-jO zKBm`UcEER;)79owPr(Z&oe!Q2#=jI5rPKUJ#5T{v|6Z$Mvv2B`=WJN&e4NyFA>MFR2g~I0VnCd7^z>oX9aQv;#rv2{Q`3xfTy!!n?ySrBrM^avndT&whSzRqFFeb?@ z=R)=@B9av(&vNjTwV=!eiD;M2>;ca+b;wf}hs>= z^8%WN^?UGXf3JVqdO_4Q?JI0OsuQNV?^Mb&xxSvVDj}~hJ+SB0+rr$_>t(n=dVbx= z52QD_x^XTO1i~C7g-#s}`m{-0?~fLabHe3}1)W9GZ>6^E)T0m7I zP}CHIrf;*-qgZ;>xhDfu6?OkdAo~B%zmSIkXrE{y6exR={*y&%f&jHTn@9ibo=)jo z_M)Mnk~4qu&sJa)@PB;xZ=mK6XZI&R8xD1W{s*~+PXO(vf3E<21FuBr-_*X^2?QOw zz^z;k|2rg41WLt*S^lIk0p9rkH~v48TAK}cThL*1GZ5J41~M9n$6A0g=Fs{F4w2zd zpio&`=Ol~SVGs^b{lmU0X_Tw0+7(7!D-+9w{ooyYQ z%;yu7gav%@vA_UfQ>UjWs7eV2l0l#ySQY4WD{-f45R2e}m)LD@U54%2T>{nyL~zH^ zRaq#M5k`M*dNW+0Z797XKcJH=8~;0RN(;btso`t%7XN*swFtDY1vbPV#RuD67mk5# z4)jhm0n^Ts^Kk~RA$8j-h9&U>QCBdPhj`vVkc-aKtVV_){H7g@DSoLaj<<3PCz#Vx{(+y^us5o-@*w=s=H>R z^tpqA-3K5=5gBHg%1A*)m5FZ<)d8bmLZWKjL>q+4A2$*@fg)q5biqe36{i)@f@}!hOT>?9!U^4(o5g!Oe5+4_*y*DHUf zR5WeI4hz#s+FzlFhwd;GiAS2dIDz@_-XBTDa#Co%1ve#OGR%jC5d@Tlj*9tcYWduY zC<10wnX9YLSO1oss|QNf!FGJjLgI($IsnwiE*A*4x3PcLD>oswJjp*Q=HJX7>u*ErXr%OYG`kx>{Q_x58abl-0dQwNGfa#8;|oL^VlY_o z!seEytK`#YU}+`4)*CM`L=_ft$PILSkmTNchpF9xl1V!jH1Yx4nU6dSXg5+XHowdi zYvLLCjxgZX+5d$8Gz51qo6|}P4OPX^I&zjm7_eBCZ=lHyxL%smE`M$kaI{7P{)e!d zmrsC4Fdxis6F*idZV~y~E!6-=psdk4bPrY(W~PF^ozAJMG9q7pz7{uB8RtkH41*J< zu_$Nc9^3j66-4lZgYtMB(#C@0oKHa9UF%DX{y1)XjG2K zIR;Rcu&X3G(0~P73A~A*FN++OOo+YAPC7#uFA5-DJ((&={aNMnty(4@*hmCdK|lkD z^RQqE<@g z=wyGddarH)U~NZl`m~=X;CRBqhlWS7}2sXp4pe0h#d9W68`=t`~A` z9)lBRDJuGtTIRf@eLg^ugYfZVhhOgNZO+vuS*%)tk@z}7G3t^5GY(KflT(2HXzev9 zid}UCTX<)J>I16%Z>3m-?9LZk*ye!f@(}PVQ2|}pIZX^q4xQ@E-)~|2HI74~sKB-g zz(RtecbUx0%tu=x%c^KVK_z9`at% zY=qt&xf&+=M%;cU|t)aVK2BlP>Tw_d`uWYpoG^L^?`Qn| zXnBGz%~3_qt}LbCmXgB6!=eG*U9h`QZ1Kebj9x>mm)DxVB(a;j183hPrZc@PcS$qf z*g?|B?F~M!3!lt=gI6ydIyANbaIu7poc?4Sei1nEZLht3pnE_!BzSME(8z5S01u6e z5t`ViS-4*9fnQPU1{n1Y4KRrV6mV$=dTPa&*HrA!P(8tzA~vV4W3=y;(DPh%t)%=$ zVCe(ZhTQvFwzk&W+uIiwqV_SkpT#?X;#_Ez)#G1(QnBPWRDJGd6_xTelc>}hFbrw* z^UVZ$#4Cde=OC*<$>t5pek#sw6F4Ag(zUOrfjBCwxyzB?5vwrko0-yc^f5DFv%8PN zagRg1Ymi z5#z0AnZNtVCn`8zfngI+EIIjtK7Fz|so3|>x`)^HlA`q{F>8exIP9j|1YDx?{k`(` zhDfMo4q&7=M@@M)bI;8H%vL{_{vgx5A!yI;Hte3*i9F;!kji*J6;!`;rzNt<82_yF z_Sro4?9un;JYAkf_WVb!!6Tzy(q!Z1oAtFWkAVBK^mb?9yqgZi06IL?Xa|8t;)@%E z!)(>wB^Uc*XS8%KW5e2~AEV?2HX^w_82ybV(7n%BQ*ir9J7xkk>f)Z@FkA)e{@``XsOc!^$v16^y~6T_$<8MY z!^p{CS%wp^NmaGETkSkYIxT((m5g6kK`XK0DLcJ;?xK^v*Ykdcz1r*|9gg zrk#I|)&4jQmh1T04E+o`Z1nP;hUN7LX1%jOllspcAdk*7a4j2f6Dw2uMHg_9NHs5X zPs`lk?MZ#uOOCfS{vWcJ7l^>2N(sw|=ME^i#Aq|23_2rIX#lBcCf+R*g0*!`m#BU= zQ@VZ#;G*;UPT;0X$1C8I;(A$&$DV#9z<`eKvA13L89^^z1k0kw%G&KpZDCn0?{4(J zxR48fdFXHOoV`;3qjPIMpxRYKpJdim8k~q3O2=Qr$F9^k}&nVeg^vmX@To-=&xAZI0 zO@RzpPx;6wx86raA)gvt+A%?|V<5}(ILLQB8FmmTybVC{&i}FI>^5MFiSZ#wh+F=F zQ;K6O1Cnzw2syM!$R-!5CIw1fUn)i&MINUdnCFmtR$zl3I>#DC1cua&(b4&_%l<=)4RB!AEjGvPfLf@#JsW~y8xp1jQK368TJ zCb*VofbPEzFmvJx3_$O6JDuCaRdnjmoz}hw;!IQP75#7ZGHp(9*?@0 zKY4Rz?@a%IzJ4g)r1r*Zhw@-BcA(gY6K_B_OPei#E0t}(LHq?(8Tke=@5k&YD(Uf! zyCJyMH<#GU>|caX4vzAoxOq}!&L;VbrDK6{(% zTg=%@-8;~ry*B43_*%EM3ghKWR8l1ngaekDVc{N+*CX2`rgYZ^gHZpSg`Yc}t;Z06 zM*4DX-mWyt-T=SYvNgS*qQ*g|FsEQnB+q$i1{4`cw17f+M?OO9P?txqmVhg9#7m)#trqZ@u>t*wkd$W z+}(}lKd|O9W+^Q_{^huV{bUe4i~(d>j2{-}-#}3~>E@8Bm+=Ez08o{`J3Wt;&+q!p z6w$!a*CrJMuRDhT*M9Ae&ptNfz-=-3Ac4+r1uzmAosJ1tP9=O2cA=OLwKp|Capa~t z;CIR0O~#GPl|E7J4;POG_R=?a`h77exL%veBjjDtH2`Q$ckKaf@1<>U{aHEJ=O?Q& zX!bj|QVevh)Q2R{1&jo73jM^eKf#KuJ;3nuB84-xfRSO(&TKx^pcO-3yXcsyEaFnW za7W8qIH4?+#ZT8wE{&5Kjvqpy$m^BZ1q(g8M{lqUxB(_TLWG4COy0?+C9&fairY#E z`41yM7}|%Z2A>u}4fI^D9=9u9Ls6I3CQ1wd(vWg~LSlN>oWbCu{Qwr&cGd|o^tJt&$EpK1un@F9;m zpnvkQvM$X?btK(^$l_Ckhh<`X$i(Fj9Xu!+7UEpdewLT#QsunZ`dZxMh?#$5UY z_^5czHdJ|laK)$>0fc`%!Tb1A!DYdZ_4R;Nz|Jr{0Q8C)YP8IFd3R%^`ytr*e5!DO z#-@fH)A&Oh@B~?x9yFt9`v#lBbM!k4`*0zCQFOD}Gd~#+0;FNPbCpj1ee4ICCeo~x zEnw$XAZQIc=9h^RM^g9YC|iL_wdd*1EbmLEYci;b?gwKBLN*n8AZ+vl`v5ZPaVFC} zUJ0u|84&dU{hJQbtF*;^?D~@l02~jpEW<(U$`4${ftEZ6yZ|r*&ZF5jzb_(QU*HB( zWk6=)oap=CSBC`zbiywKrwE5y5ugK&z+7%Nro98&696VNbR7C%LP&s}7x)IOc|P4i zL)l9bxMsPcR~?_l1zi0P`@uO;QR2G_Cz+Hx?gLX3^3u5HWn<-Kt7z?E3;Y2|Nl40F zl90S4rC=zjpeQA+C?hEN%iCH>*GHLj}{{bl+1 Fe*t$F-q-*D literal 0 HcmV?d00001 diff --git a/docs/images/hoodie_mor.png b/docs/images/hoodie_mor.png new file mode 100644 index 0000000000000000000000000000000000000000..8d7d9025465cc68f4c010ac938483b554e52f791 GIT binary patch literal 56002 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 CyB3)M literal 0 HcmV?d00001 diff --git a/docs/images/hoodie_timeline.png b/docs/images/hoodie_timeline.png new file mode 100644 index 0000000000000000000000000000000000000000..b56aa00322ea54880057f1f7328928713a7b9101 GIT binary patch literal 23093 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 Zx`+Pv1(ISK*}wu2THow^ncmgA{{(b)<)8on literal 0 HcmV?d00001 diff --git a/docs/performance.md b/docs/implementation.md similarity index 56% rename from docs/performance.md rename to docs/implementation.md index a3d1a1a77..b1222e78b 100644 --- a/docs/performance.md +++ b/docs/implementation.md @@ -2,9 +2,13 @@ title: Performance keywords: performance sidebar: mydoc_sidebar -permalink: performance.html +permalink: implementation.html --- Work In Progress +## Index +## Data Storage + +## Performance