From 2ecc05f839d4149c15730afb22a331ea5f20bf28 Mon Sep 17 00:00:00 2001 From: sanaz Date: Mon, 22 Aug 2022 17:10:18 -0700 Subject: [PATCH] renames OMT to HMMT --- ...mbership-merkle-tree-storage-evaluation.md | 28 +++++++++--------- rln-research/pics/fmt-vs-HMMT-g-1000.png | Bin 0 -> 25431 bytes rln-research/pics/max-storage-fmt-hmmt.png | Bin 0 -> 38152 bytes 3 files changed, 14 insertions(+), 14 deletions(-) create mode 100644 rln-research/pics/fmt-vs-HMMT-g-1000.png create mode 100644 rln-research/pics/max-storage-fmt-hmmt.png diff --git a/rln-research/membership-merkle-tree-storage-evaluation.md b/rln-research/membership-merkle-tree-storage-evaluation.md index 4719f1a..e39e0fa 100644 --- a/rln-research/membership-merkle-tree-storage-evaluation.md +++ b/rln-research/membership-merkle-tree-storage-evaluation.md @@ -1,14 +1,14 @@ # Waku-RLN-Relay: Evaluating Storage Overhead of Membership Merkle Tree ## Introduction -In the current design of the Waku-RLN-Relay protocol, the membership Merkle tree (MT) is locally persisted by all peers being relayer or message publisher. Message publishers require the MT to be able to generate valid proofs with respect to the latest state of the membership group whereas the relayers need the knowledge of MT to be able to verify the rate-limit proofs of the Waku messages. This incurs some storage overhead which may or may not fit resource-limited devices. This overhead also depends on the algorithm used to represent the Merkle tree. So far, we are aware of two algorithms namely, Full Merkle tree (FMT) and Optimal Merkle tree (OMT), and in this post, we would like +In the current design of the Waku-RLN-Relay protocol, the membership Merkle tree (MT) is locally persisted by all peers being relayer or message publisher. Message publishers require the MT to be able to generate valid proofs with respect to the latest state of the membership group whereas the relayers need the knowledge of MT to be able to verify the rate-limit proofs of the Waku messages. This incurs some storage overhead which may or may not fit resource-limited devices. This overhead also depends on the algorithm used to represent the Merkle tree. So far, we are aware of two algorithms namely, Full Merkle tree (FMT) and Hash-Map Merkle tree (HMMT), and in this post, we would like 1) to compare the two existing MT algorithms and clarify their differences in terms of storage requirements. 2) to determine whether the storage overhead of the membership MT fits the resource-limited devices. 3) depending on the second item, then we can decide on whether more research on the MT storage optimization is required or not. **Existing Merkle tree algorithms**: In the present post, we analyze two different MT algorithms: - Full Merkle tree (FMT): in this algorithm, an empty full tree with a specific depth is being initialized and the required memory space is allocated upfront. The values of the existing nodes are altered as new nodes are added to the tree. -- Optimal Merkle tree (OMT): In this algorithm, which is implemented in the [killic library](https://github.com/status-im/rln/blob/master/src/merkle.rs), the Merkle tree nodes are generated incrementally as new leaves are being added to the tree. +- Hash-Map Merkle tree (HMMT): In this algorithm, which is implemented in the [killic library](https://github.com/status-im/rln/blob/master/src/merkle.rs), the Merkle tree nodes are generated incrementally as new leaves are being added to the tree. ## Storage Overhead Analysis @@ -41,15 +41,15 @@ The FMT algorithm uses an array with `2*(2^d)-1` entries to represent a Merkle t **Group size < Tree capacity**: In FMT, the group size does not affect the storage overhead because the required space for the full tree is allocated at the beginning; further updates on the tree only alter the existing values. For example, at `d=20`, the storage overhead is `67` MB even if the current group size is `1000`. Therefore, in the FMT algorithm, it is best to set the tree depth close to the expected group size to save storage space. -### Optimal Merkle Tree Algorithm (OMT) +### Optimal Merkle Tree Algorithm (HMMT) In this algorithm, each Merkle tree node is indexed by two values each of size `8` bytes on a 64-bit machine (`4` bytes on a 32-bit machine). As such, each tree node takes up `2*8 +32 = 48` bytes corresponding to the size of indices and the hash output. **Group size = Tree capacity** The following figure demonstrates the maximum storage overhead (i.e., when group size is equal to tree capacity) over varying tree depths i.e., `d=[1..20]`. -![OMT max](https://i.imgur.com/dm4vEvQ.png) +![HMMT max](https://i.imgur.com/dm4vEvQ.png) **Group size < Tree capacity** -In the OMT algorithm, a hash-map is used to instantiate a Merkle tree. Nodes are added to this map gradually as new leaves are added to the tree. Each MT node encapsulates a 32-byte hash value and index of size `16` bytes. +In the HMMT algorithm, a hash-map is used to instantiate a Merkle tree. Nodes are added to this map gradually as new leaves are added to the tree. Each MT node encapsulates a 32-byte hash value and index of size `16` bytes. Unlike FMT, since space allocation is done incrementally, the storage overhead is a function of the group size and is less affected by the tree depth. Below, we demonstrate this fact for a tree with a depth of `20`. Under this depth, for a group size of `1000`, the storage overhead is `0.097` MB which is almost `1000` times less than the storage overhead of a full tree with depth `20` i.e., `100` MB. ![](https://i.imgur.com/l5xNMqN.png) @@ -70,17 +70,17 @@ Note that this analysis is only valid for the storage overhead, however, setting -### FMT vs OMT +### FMT vs HMMT -Comparing the max storage overhead of FMT and OMT, as depicted in the figure below, brings us to the conclusion that FMT is more efficient than OMT. However, this is only true for the worst-case scenario where the group is full to the maximum tree capacity. -![Max relative](https://i.imgur.com/G8COahY.png) +Comparing the max storage overhead of FMT and HMMT, as depicted in the figure below, brings us to the conclusion that FMT is more efficient than HMMT. However, this is only true for the worst-case scenario where the group is full to the maximum tree capacity. +![Max relative](pics/max-storage-fmt-hmmt.png) -But, this worst-case scenario does not always hold, instead, in most states of the system, the group size is much less than the tree capacity. In the following figure, we take a snapshot of the system at group size `1000`. In this snapshot, we compare the storage overhead incurred by FMT and OMT for `d=[10..20]`. -![group 1000](pics/fmt-vs-omt-g-1000.png) +But, this worst-case scenario does not always hold, instead, in most states of the system, the group size is much less than the tree capacity. In the following figure, we take a snapshot of the system at group size `1000`. In this snapshot, we compare the storage overhead incurred by FMT and HMMT for `d=[10..20]`. +![group 1000](pics/fmt-vs-HMMT-g-1000.png) -As you can see, in this more realistic scenario, OMT shows better performance than FMT. For example, for `d=20`, persisting a group of `1000` members using OMT requires `0.097 MB` whereas it requires `67.1 MB` when using FMT, which is `700` times more than OMT. +As you can see, in this more realistic scenario, HMMT shows better performance than FMT. For example, for `d=20`, persisting a group of `1000` members using HMMT requires `0.097 MB` whereas it requires `67.1 MB` when using FMT, which is `700` times more than HMMT. -It brings us to another conclusion that OMT outperforms FMT when group size is less than the tree capacity. However, the exact point at which this relationship changed needs more investigation. +It brings us to another conclusion that HMMT outperforms FMT when group size is less than the tree capacity. However, the exact point at which this relationship changed needs more investigation. @@ -93,11 +93,11 @@ It brings us to another conclusion that OMT outperforms FMT when group size is l | Algorithm\Tree depth | d=10 | d=20 | | -------------------- | --------- | --------- | | FMT | 0.065 MB | 67.10 MB | -| OMT | 0.098 MB | 100.66 MB | +| HMMT | 0.098 MB | 100.66 MB | However, the MT storage overhead may not be reasonable for mobile devices especially if we plan to load the MT in memory in which case we will/may face the per-app memory cap of `32 MB` on Android phones. -2) If we can not predict the maximum group size (hence the max tree depth), then it is more efficient to use the OMT algorithm. This is because the storage overhead of OMT is proportional to the group size and less affected by the tree depth. For instance, consider a tree with a depth of `20` and with `1000` active leaves. MT storage using OMT requires `0.097 MB` whereas `67.1 MB` when using FMT, `700` times more than OMT. However, the exact point at which this relationship may change needs more investigation. +2) If we can not predict the maximum group size (hence the max tree depth), then it is more efficient to use the HMMT algorithm. This is because the storage overhead of HMMT is proportional to the group size and less affected by the tree depth. For instance, consider a tree with a depth of `20` and with `1000` active leaves. MT storage using HMMT requires `0.097 MB` whereas `67.1 MB` when using FMT, `700` times more than HMMT. However, the exact point at which this relationship may change needs more investigation. 3) If the maximum group size is known, then it would be more efficient to use FMT. diff --git a/rln-research/pics/fmt-vs-HMMT-g-1000.png b/rln-research/pics/fmt-vs-HMMT-g-1000.png new file mode 100644 index 0000000000000000000000000000000000000000..1000b4af46eb1589d94849b688980a9f97f82530 GIT binary patch literal 25431 zcmdSBcT|(@*Cq;Lc}0;|u>m3~3J6l9BL+~K^bXQNdhZ}L*g(31)Br(xuM!9lKv8;# zbV5~nM@ong0&|D(oAb?g)|_?zoME{ZtUS-%_Pxusuf1canu;6^H3KyT1qF@#GieP9 zic=yK6qM8doCcqqF>yIbL1BJVUiyjFOXHPspAW{KsXT$y)UqF!4VT>xYw$YbKQc-p zvbEjs-saq#L z3jX{4p`-+Ao#+5J>0aE9U5i!8jrFJ{EY9N!_H@$R#V6fgKI+s$kFMhh*xO(y6ch#h z7qE;+e+@isI!pRPi;I$t^jod!WD4oG6r9J6w1 ztO-V(u<`^>zcTT%GJidhhDR9BPiw6L|GGv=!7D@(sQJQV{M>Ywv-f$wyIUdVc@*6F z#9wD5-gB1L^PyA%jVdhK(=q40ob5diMj<^en-ONw76&e1d8_75G_k8Wsn5F1kAfnC z2HaB9_1fhP{~HxG0mCdw5;x>2hM*Sqr44&_Hv<3uUc`O6uleFf*cC>!;?aC#p4RzZTnD!t1ERz_o|HS3$*DF^P96xW%LPGwVcqWgP_sQXl>$$?vn|7JVY z8eVu9RV+A2Y5gMazlrU-l%vt?%W9v$q+Ls$atWv!b#8y{?B+pklCeSZ>g~S z@PN=7BEJ1uy5ICDV$qsixha z75{7M;pzE%-`j;Z-Q!YU;JWOhxjWv%M=F|Q~E}oIu`e72GA>|~s`flFW zUXH1zL`XsbS!*^>8@OdEkm9ejF2*A!p`aYeXm_|#Xd{9f-bUt}>kge75sVv=zI9}i zL4mb!-v>*oB9DC20v~szGGX0hF1-*+*~GqgyKfNIf^3y*rEO%Sfy3z`7^1Dz=jRc7 zdUCS(%*H4;KZ7q5e{eQ>{(8=i<9Z|9iK-L@nHxq63`r}aoqzjtJJn?&tEP_(%^+|GrBmrow9CV zQ$R;9?xyU{c4mwXB&Gevdi+K%)_=Am-kbMD1P~Z|+;-nlttBi?C|0-7iqLwz{`Uxq zH2KPZNIaP=|7+OKJfI0XtdhRzYcPHfwJyGLl>4t37gy{iA>&gTVgE z+RcjidX~d^%Q$_r0hp~+M#tC=!shYx_b;$L>AT1378Cbz)!U!5gK4$L6@%~lP|?`p zt{S<<7AXA7IOESqC)R-RRLY`WG8_7RNeHxOR0gv6GH`sTSHl&(v^|E|SM2QjRk1bi z?QC;bK$;7wdx*?ef4LRu;b~1^nv9rJ#4HonuTU>y`Zi*jw~bXL$+xk75QV9a4} z6MJ!11JQMrjD4Hf7xz}BY-^HWfi9OPjbL1rSIDk`ms(-Hkr8QrL7u9+#N^Nq(WP@d zVn>HtuJ6=*)^DrME7vRw9jM5gaK({QBh07*5$Z5X#qzO8k^%bYlY@8j z8Ea+o>cWI;!t*jc}{P1Hi44HW$Vk&t6tf53+gC*-zVfa{=RBuq_@>fEICF1ye5pUf@lX;R8 zf??={RCsYk>OV&?%k-qj!Ty@SSkd8FKf9oyRi^{n@!@3ORZqMhyBM3fRu+&kAFXQ9 z=^%If==7|=sz93Si(22x)j4~x2LJKF-ylYv6q?b&qVRAxZ(T%}7c1F-i~B2AlJdkH zH2Rgtd8kWKDO~*2%WmJR4RDE~(GQTK1FTfB8Ib z`L_x9+^NMn_bZF)p;DQ1>Gbn2E1T>;WpF|mR`D8GrsVAgRRTDv z0>SnF{SzXQ;-z&sI(eXz42LsN1X3Qe7@@ES;|7(ME%anV*zViJK~sf z$E3Z5wO{ot2syI(pyZ*0ROj5^R=tMowtUh!vVT(R+r&sPdWI;6)!rw_2L3n)ww-eP zzBb93PUmI=XBzk?)gg(4JaxL2AQbl+IMYY#UGFvS8{|-vkCP{#+E^n@Bkayk8>%tx zhvm~IM1O`ytmrg)t~SBB9yL>eX<%|jO3t7`PG`z@!G*VdT^>@z0~RqkD>mU(KG&0p}vS8PlgEoV#=ZewieW{Y^`7 z0+l1dH@($%atz(0i&D{bM(`jZ239A?(&II&^2d?l3P4oS<%wMUlw?sPegFYm9)uO2 zXP+jZ!Uk5y0EhSYWu1nbNEWtSAPTz1&iEurvL91opDpRON#qA^f7Gc#2n--QcHYll zjPX@q0f1=O@!J-iO1#Hsizt~C@Aq4q1CU@NRU6AkNA~PNXFu2Mt+p`*s4=*B5%(r5 zEm_&g($?m|hE2R2l(((H`l4sSfJE{&7Yyy7mr2t8GMzDo{m8}tiY%r)yYXm=5wHR& z$Zl3SB%LJ-Lvnzlp-#xH^+wF;lvLXN2L?H(kMCdQ-BW;JAvD4UB{l2@*|NtUD*)_O zh#y18T1g{|1r2ik^Z6qP)R$xF!YJEP&f2xz1QT%4x5>ykQ$OkV;9n8w_@b9XvsSI+`Qx-b@Y-~wy&tn}4)7*&!AhFW&SS!TimL{V2%xOuwnznA;`GKsbya$)V zd$zOr{V?P8Gl~~y-Mmg`9q&bKbrP8kWJDJgrs1xMIDdsKh?Y2j7{*-I=E5YbJ9&f1 zLU7I0!W;KPcgiN*g`t~o9O#Aa9EC|!fA-56wqM7<$2<@W5_UfP`2EkT2$(Ns{IRR= zCj)~D%j=)WpFbQT{>`+l(G&JOJOUHvVdPL~s&wUWPh}>DIR#uW{!qXm_%>N1uJg~X zt&y-b&__KFTf})7nPV~SI#yDV0G&@_VilId56H4K&shFU=yT!s?ti83PbhYv50)X@ zQywSCG-skxzzXBh2agPb&B$<+w*YWMJ%4tSfRX~O1T)Ec>`^Nx&@HT;o=we zdA|yN({QqWT^D4+j|~7l?UKqQMRa<^v0|%#g#Je6!77~lnS}29rupz01Q#Dms*Y1| zCL?h0;^Go|=U%mSXW0Px9vn=73Ui6DkUYkIF6sKI5Xod|tro1tFZa1r9(-R^w{z-> zH-km!H|?%eVp>Q<+V>EN{oj8Rpt}h*8!e2}jl}B1tA~pc#N0$aONIK~IT%)s6sPjs zj2Z*-s`GyWoBFe40?ucZdDUeNFgUJg!69jLb8|!QanJJR3u51!X(etjF)=OTF3R2b z7(j}SK^!{IclBp-m_D3NF`|Wh;A(zLxl3ACSC_$MZfkeD7R2>~gZ0CP zLl4rD1<#RHf(+skzzZ5UKTiRJ=&OSG&k9t}FdWUP%`F2`3LtM0XO&M|5G+0K3t2Ah zuG5LIIuf)(}^kw`pvQGk@U~SIn#k4cMPgPdC`@5-b&oP#*Uo}9-3Gpa`+}*T6Oq_$S9SVw z4^ljn5xIz6d#y0JXXlo@FE?A zLYoyEMT&Pj+fyc!?eS)H4B(hOgM(LTA=_$(E?-Y=02cBvJlcPT#r69|x$jdy!lyS{ znK3G7z+lsqWxXAxe&8Y;AM_LZ&9QtA-kA(8R;Yu$W!JsM+}26r_#`&t0(e!;GR%HR z+G*}HNq6ejfFfu`*cA*zPt8jlOiQ#tiKT~vR$Yk~hfJUWkGHz`v5TbLMQGY;e&$zM zapc$@I5#xTZk^kd2QH6a^vzZ#Gtnl+qgUP)FmkPc1so)z@Yk5ZnDnJjojv5Vxeh&KPxgMwvhfth+0HdZ1qdc&WL>`5-G~v z@OLT^;r`pgg>t_cU{DJ^QTSps6t`DNB)XD(QSdV;!aSMXaofN z#zr*MUy_NmdmZ3xGJb!;>m9NG5;NflDC(v_CU7p-F(h(t7(bU ztFvioE9bBC10=UoJfUPk)t%}!lD{ds__qPDi#vs+;zfTj!k`4;hdpdx#;3y0cr&F) z-zJ~Q0Q?Vt&g#|A;2dg1^!Id}St};Z@Z;Xm{^IaJ6&)8=&PO2?UaKR|5e`ZJg>`I6 zpDu+G?JtM_P>BEVAkTLlg`Yysr!iIx9x}<7e)zh*y)A8TZ@=Tkkx$&kKvm#SB5o*C ziz6E!YhvQJTGdf^rV!=3tZZAed(cmu`axJ5U$Ewj_$(Wf;OLy0#=-h~j)vJ&fkaZAGh>T(K_uC}-b2RoDbd&c~ZFfrYxVPzj=Ru>8fP3C#l zl%-k^Sg^7UNPYM>#?l?HCnkH_K?JOR{u(h4R%@~s1yI4KRO;z(d1q1%=Yh4@I6Gq| zZeFY46q!fEu7zLaQfOR12EO!aB-J0j^rLz*3}k$nfA%=l*H+#SE?<*brZJgx;3@=} zK+geD45S@W0~)h#N5NfPm|BFts>B5HAsDtgxx3Tk!y6R=WIi1!+_JyBH4P4kiEl9! z`sM#0QdKvVm1#h?==sBRlKqt3`wwka;s<;(!#s{VkD(xbz?Z1qgZoK^9nJr27g`ds zrdpRSoaWadOKFW5+-<^S%x<1z=|GJRnmuN~1@YH0`Ii;{2Gdc{8IdWm#FCmWFpo{c z-|!yZdH0X7okbg9Hf@c6_RH+DX!p9s{-Y>4!SmU7qk~fs9rVqnu^8vgaKU@$B_GZnN&qDSAD)Ujd6k+gYF0 zh(#=%qwOIDIN^Q{^k+NX33BL^RR?%Ea*r-oZY_^0)93eV_5oBiR=?LH?_l`8x}C$b z(%65$*d8p}vV3l-R0-P;yT-A8yDHae-^+L}HhLpDI2S054Mnn<<{?PRnIheS^OH zYsL3(0+vrJTb))U_DTv*!`~N|sox3w>YCpw_ut(VnM*XU&?M!A!x6tvr|c%g%Q=lu z0-DJ~B_#9(SYvK(?s=K%ll{^|T;tUG!P@#1bU*s=qBT6gOF%%tBA4Xa%IKTVikx#s zT?Cm8AS_1FLl&KC1G11Kd6~{QaQ{+zlr@A&iw}lz>2gP~Csb&r7Xa^v1kSN#s9~q- zOS>90VBVE97q7q6sg&%T78{Y(8UWsE|BR6!lxF%;q;Emu$t2(w!ZM>CakwGJf(YPs z3Wp@+Qz^59gCu&2lzhy8V)yp2$ZdMdyOjUJVMkhPcOJ$aT)A|f15rYQQ_`D>U zjTjBdK)GOolyBw zIP_rm?+lv+J@enDGcT6<^UFaj={hPiIw+8Y(7nDIpO%8u16isUb^lwi5sb)mM4|*V z(8Jq1cgSxIX>I6^7F@htbM6{<1U~ro6L*@ir;K)>75m-a3}Kl4yVtwpf^V zpY;z6WWx_P6B@q*{^c^L_APo!NlE$tdBeOSL5j9PPd+g$Wo|^!0fY)-uI$EmBN(m> z;DY;*k+*VnKHFOTR`;;qI*PN(!f$V_ZrvD3f_J9oKk$RH&H1f6!7!6VrtDxtu-_E0 z-&l7c=lYEnftknnG52Wzb5+)>5r~$135FW~8Q9oBhhw_|IM2xWGzO4JuUyWP2WYm$ z5Xr}?ocu}XO0uZCRsYaXEO~Usu%F4~?oUQH%w~!mB_5heB z)jFHvmwf_lNx26g8qZym_6eY}PER;O;HD`{fiu5Bl!F3_=0U@Qj1L%$W=oKitOC*k zFtlr}%xD!#KC;W2mdwu)W#AnwHF@>a3!$k%E}=gx!TvVL-Kik5=J`Y&Hf+vnrBM=A#XqW6+ zwEziv+1O7MJa~Hi;3qLejszia=(j478UaRL)Mdx?_NZq5<)f^;9-Wo+bHF6h&D-1S zYFQll=%e!a`Q>gCR^$D|jI9H>RW8LSIh!tH0#&s8pm0|Jo(BGaS84`bBy&R7&5RBY zoYg@p362eTA$GxjATJg&8O!?=)cAUQSFglv9mS1|=UpmP$4s>8Nx+C)1%y<0k>y4yK2qAnn6Ex*t|J*{wo}pd$-fhoibm7I5&6!!ZZw<&3eu z*woX<6mwAV2T)HTRqrOa7F%yz8du%t7CUwQ6nRoEKq9n8$4ifY3h=AT!bm^>AVGJZ zkPRj4OCky1_q|4<40>rt*+$m)D#H%gUh7_ zMI#OkHpZWpCNL^gE#yjvqy$7&;wG*#7gsWp;w9+;8b?T^0RyiJS)B&&R|(|K+wT;Q zIPCQ%sRRC6jOM!a(QYKs%LmOY>Yz}CDin%-#QSKSATN#llzRG@GEBFMV_?jf?Rdwi z<7n)na(R+y0OpN4%JYLpG`Z!5-r%!Sd-}9teY8>CCI<#ySJh6DXI3V$dCKSJoEAO= zF8ZkZ9*(aFq$?clC@5KNZ7phN-Cqn)I^aU(bGK(!l+$a;)1EE0UhE?!_h3u3@XL4MFD|v257i;=-k>nsGe&;iOvNSOmsGF&_a%AuG7*4nZBfLucrcR6yzeIgHHo7~LJfVD$KJ z?6c1bUAS`2xjs4VRZ>c*XfLQmTv9&Qo##JKqG}H}6|uHWCy#tfkZYdn+D6Yt^LkFC zt8W^iFGwG+87)IRD<_BPicxEJwp)O45`XG?#I@ zGM#bfg!}tMXKj+9zQ834WKde?=ReeMEN5T30Q+?MsMbU(PVG%nv5FrVMT9vJ+!ysG z?8~{(kI(}wC0-~O*HW0dHBnbtt!bdy8CYs@?j^8m&Y^a@?qJR6Vnepto3#@9S52-0 zFV4qDY5n;_T47Sr3uRr$62f{lbUvQl`#jI~Db~}+3oxDvMJwBW7^+z4ZBv#IDP|jO z2+<%B#pblpZU**h60Djrz9cx-S~~x>@EuBP48Lm5 zA*x|@0o0P1e+U*<_60E<`H>*k2aI=fte@Yk_4W||Qz`IlqgLcD1=TsfK;y zOl1|AU*YbMye7QCaY{Z9n~MuB)zx|Jq}Zglzbw|{-=4tn)oQa6|CpfU#h@m2q_n(I zmT$gieN-Wa_6aMo$KCOsnR&vvmqq<9Pa;tN@`Nvo0d`N{VIKvkLv@Mewl*GLgE`gaJZm@S@I{wG^JT&hy&ZulfhJ@&JBv;J4THo2p8#yrGnL-(iSNDLA$-zKN=`y3v4)o1>_cK%-Nly*CnAoN9-ol20M|LxBe z*G5i&W~hv^21WyKZ|{}b<&vX;N_X2c;BLqi6w2tzWFV)0gRj}W;UbBhKe*JMEo?po zpjB6_H>Q4U{CY#HQ{oLue;xBPhi&UM(@}BuVBy4PG1FKDsT8DWOxSu!BnSoyVi{~- zt=!^m2>A79Fjh*3`;_y(q$DE+08gs5)ds@aM-2X;RJNVE+d^huZLq|Mu``~F|9=+Z zA_^GWFFJN6@JucoJd2W$*c^Si+zWE^`-E&@8_NbJDE2hy3Z4-yc;5U)#9f}ziIXWk zb%Fr^qT9a5PO^z_gg&pdQnu_)^IH>5C#CIlKXwei>J|7&jDYe4@a~g!OaUDYq@b>D zI7&Elr*a4frA~O@-lE868%tlMY{eXzZwLdhuV#O<)4V%H6nmc}=i3g^L6xA&jBq9@ z&O{}SF*@87zpr14d>jT1U=zDyS_qoHc6*`&1-ypMLMSsal^AhGKpM%d00e6*hr7b5 zv+Z{YOvD=X@w|v44brA=c8})koLOv!<%T60`j=kOk3;QW5y6TN>19uo z@Y;L=?lde!H7vfcv4HatZwWczQi3;Dt4Rm9O;0)v)5M1Z^$7#aYf>&nOWF~jc}CTp zCTtuY&v`A!;HTdkG%=GD5kRP2@d$DygHJ(j5W3VG|0u>qEr8;b9Pn>)fKdV>aFsg} zV^yAE)LQP%@Eo30ks|4T}06kZnnUuB0mPijU0~9^_Fe zW|3l=yb(J|z(hX^+(+esR-=2vq-wLr1U?oJF;=-$TBN>L3JN9DZ2V;8(RKBl(SD6? zaaRdlnD-<4@Td$ z_w8|}l?QJ#GpBPU-UE`y>rvC&qe4j#hlZ2AvKU<0-)tw?aRJ=T9Q43#dw(O;lTHEf z{j35Zn1j<|8E*l$4&}mo~I9(!11yX7b1W^BL}!S(8@$&@8YcM;QkL7Fc3jEesN8t zE@*gS>e=mt%T4RCIsPSzI>0>}8%-iW-xK`c=867CM@w_DCy=0N53#M8%>I>z0adZG zmibQ~o#{$yHM_p^Uted}Jn!?`2D!(qAjc3)1K=qE(6-khv<$RE5%X!qXK!O0b<~aE z*|;9wS5{M@?>@fnOz?IhbpQe`Tu_;$P-;{PI8Rcx(BWAz!natHs_pOWxc$H{$8CJ8 zE4BxeBKCYpiz(iHWj!QCt5qVLeGFqbha#=huJ6vnSB1@|I7*D;oP?c4d|HAAij=RV z(2YkE<)m-J15O4VB~Jap|G^=hWE|4o&5%Aea*0cqOG(!xC)l@Dt;#coYk;oVK5{kY(sNOjp75aJNp%#~@96xAW z18JawSP&b|O;t5JZK1|bo*`mK{#)0K5vjOJqbvpthEy2NFkHiH;qH5T$__a*D`4&` z*TV7dl1Uv((NxcL8c*>0lZ+#XLCwzTs9Q2{w?e>l`R{M<%*Ai+m3^n#L4(j}b>l^@ z1d~K#T3pm;yEpj&D!(dxcZIk`xrW|B~~{CU!X z@-;)mg;LHcX`x?A2!wDdRHcy~_1X54jn3=FhM>xFv!;62LPG^zbHun?z@FbQ^qem! z_C^6Rn7QoH)u7@dZ<|L60Aru~gV?n(`Gv$3!f@kRwck|#Bd`gefKRwgF?!U5rN$DY9Rt>dc}WTcY@8#tA^1wzvT8wB zK6P}obrYb;PBa)MPg4ON!+(L-7a~NV2V$B8^nNEfU{s!VkQme|0WHYy1&?=DIu%T) zUCu2Q@9if&Ure1YPwK^`^3BEkL=ZOQGI7bBeIL9f^N?$J7Tc==J;^MT5#-jY;iv7p zS@N0bGy7c!)^@C!8%431(`P2-tMOE2#G{aN{o=c)w-w$LeM@1Fxl+=OOtQsq@7d^MK4OQMsZ7O=sB7Lkj~+eB5bOJrH*&>T?;;auA9E@#6?1^oe4hIhkh%K} z8U_-;#|k*@;Q=Po6GwdsymwfiHYGVg)(?oznYh~0Y;^oyX|GcERYy>*SlGig=FZ2T z;1xfLQP(dHFt}XRDOM8uA{?+=}*t^>FKU=635tM9{T26Dfd%U&;myP3@)l|>#9F!dX)n?F` zje5ijVJWZiQub|JHF2I`?^2MR?5J0Uw6-y#gZLqGTUhH1Vz+ZP6jK2`z_s4I$z^gl zzpyvJLuz4LnWj*>MY4UtOSUCljA z`6|M?DQSQA9+Y{cach;-nc8b5Nu)Z$@<5CG8dc>bFG#K)`CWr7Q1{OSUZdyb+I`r0 z5yEjxHKE5O_qG;1Yw+dHJm*m8*9kbN&@a><=EjNcUQ56SC%$?1$lQCv&wI~DG0l85 z(xNFzfUvmRr@2UtzWb*HR zDh7Q}t5fJ}&i{zS%JQ~TcZxR$Kr4t4QTvCSKH}J9LnnK5yavoS>SH+<;H)ztq~3s$ z^}jj--LTl3>by4TyP!`B$`f-XmEyzEd71}(n};|HSwg695kMJo=E3)|FRF3}7|`83 z!oa2LZz z>Anuh|;)&Xd+BJo?16GQCL9K$3BT)N>OKzzC%#A+OnN8;ExRen%q|JY?C+Cx4FPbH~uS5)v95j0#FyRt(lY}{bU>>vJ@EBf&b^kh9Z(H(PofP_m)(O_qN@*=6PygoE8jiN03 z=vwHZ{cY}*7)yKhliS6qPr&c^mnA|L{(?1(rhwAY`NG4URYX!FC5q{T?9$`e?)E!W$F4uxovQcT1%(@FP_~i2ytzos@{t$v zkeB_9)9v*I{aUuVt22+AEW#b2%|v6hb1_k~?TsI!m;;5AuW>)eumAZKd0>P)7)^n9 zw>SRr|Fi|2*B?YG`N zF=4}qb7{QB!UM<1f%3|Z(5QN^nYiuge$WcpcS{0%g(LD?7f5?#rt3v*o6`X~&s6rB zfue=fj}zp|g5{n79vM5j=o1PWZc9N<&k_6co~=fV!#!2RkDdD^dZ{H1T_D=#(m2L+ zck5w;`0X_(!#}e98fyT&8zH~7w|f>1N=Dn0-(}6_YCn!SA1s}+Jwx!QLk3GyM3@7Y zn$AJv>Gc9Cl{z|{`=_N)-TQAA<#>AR75_zdIi|#5YhdcxgS+8=!qikTT>V6vo$lZL zc6yrx4e0(C%EqC97=9tx)f9E4N^%_NeKfGYJZZoPaORrhi(azd_!&g%T3)2?{(An3 z%LN?jy3dL3kFoos3qDJMKv5`io+^jFl8;;;czIKi6=L zMYRbz3zCXOpYry@zcDFEN&C^1NP0Myy>0(+w2to9{f@fm>HCq%*A>nC6(W+g=wtIN zBa&yhG9Pl3-p>2y#mRb+%aNBJ8(;iEwQ=hPH8u6rE4deUre56$)728VbtjMg^*?v; z_xvVXS5~&V50h50*1omyn^vzI@`X3TIARuqV2{ zfE1#naA6{;ql^A?-g^#PLcU8@%6*@$Z4Zs}n;sh1YdaFRL??!#zZqoohR8H@^Jf8G0tyBhfLYtk&U|wrzFN>w~BY zAEV)ee?(TZ@U>m9^oTRf1uqtE5${DyeBajJ@L|GT!4%%4&-HsE>}a?S1>X$zItv_B z(Caw#PfIh#s0Uv|PMYvVAXkD5wfb^s8vM@C$|1%vJN{3DY2$a+i~Z(ri6m~m-PyBG zQdF6OujS|aO-J3#;aErVJC48f(R;D01o1X?zzx}UTEIR| z*qQMiMBOpI=5+)4+V|_3l+Z?ej$q*>Xk{htM&d-moeInbRQws|qb-X7v*HfFb&V<> z@k|EsFm)*}XFcFLBhMt)KY!djI8$GW<&XeVpB&O3#9< zM|z26y!PK1X$oozL|Mu>3T+3gL&i(sv5Ot4_(!t^M}0rWxKjGv5pR8^fbCb`!egO~2a^gwV2iIybZTQ|BHP2KyWi z;AQN2ad3=z!PY|Zml5oo<7Ex+^{^4+Ukj_Mvk$A&HYD1O)yBmZU3ytYi_+H18&n1w z1Y~%k2L#!X_CL)_Mi^*~bQT!qFzA2mv*blku0}}xpa@sxjwjRPPcc1Ruc5~1^>}K>mP)w50$(bA;+4vsO2q|qBIL`;S!eyN;I2f;v zF$;8eI)gAtRBeAR!IllzOqgp`>9&(K~mS6CqwDYK48(#c8o?4~L%=dth{XEU!^+q_I7`isND?KM&Z=&+~i%~}YLSxjv`~$u& z>T^XIYuB_ohr|^F6)%2qm}`yv7_IlrK`Ma}7K39H+k;W>18aV>lNF zln=)~u)lLic+&jQ5l?4^VY@qKyKnLNaPIZoDa}hB@*ytmxz<4bnD|y)tw{!QaUgFfb?m@UUqV)@xl*sP+m;k#Ek=d@egRq?MJMn?M zJfnZA4vRG5&;BF@PUOhD^t$^;CMVQ58=3C~m>B-dQ{Df-wEldn_+EMcj>D@wv))v)Xl{=DRto%G%71pGk?Xw~DfOjw4ou z4fSxSRGWsmp%hQlrd!vYtv-OSp;sk>g<$^NZQ9+IFOmMN3z)T~)uGA(omhvV&MGhD z1Z}Z{XS)|F?@^*f<4gG|e@O(_sJU;Jo$etE{mj2ERvmMY2z_wRp`AAiwN){;TGu4B zGR2Jt^x<)n-v^NRp*$X;792u&FV2@}dHWmI?$fF-axlg>o8{NomFG|6BeT&<-_CNq z3blk>yjsyF{&Ntls`9-w(s zciLFd_+?8&DPb56^Z)mrMwVxAljJ7oh)>&3e)`adlg!JlIrr4Y>3BV{2^eKaHCsRs*hD zo=e`MuGb&3Y~4Lo9Pb=eebc^Rra{ve{uevAHKeG5INW<_k8WPN$M)6=mDOrh8WM}I zMute5EpY0p~XHZzny0VK~EIEUot~4`{3QUvfF!HV3&(vQ7A6*ms20>6D7n6hxUP zWYLw~i~-!F1!*R(eBDPUx{ZRkEcA3Q4Na!V6tnH$4#%2*1NZ2V1isG=YX~ZfYIAM57c^v^Wr8cjs5;C_@x7^@wa7JrbYF^b=7 zccDc&HMv;mnLNWhJlmb+bSdjcI3njJzl}&mk=RD@Y25df;F-X|8o1JJQ$O+XX~+hH zeXd05;l#{Sj(Y)hY~B^8x|m(UIxq>W(6$#7ve8Iq`;jsg=UBckdI;O3zV7%T96PD8XG{dMqm14tC^Thg9?D7ZJH60A+)7N2nR$n4k;@5Vp*-9_xzrP&>`LKhd zH>)ncGv+zIO!zRb#rt?DB|{(=|3DENInq zU#zxcWTsnXDT6kTj%@}V*G}m4zk#n$@joO&Br?;)*hv?X7G`T3sIzmE_8?YjEB zT{PPNS^K{09C2o6uf+=2MTp#!>OSw?FgE<@c}{=-smQ&PUkzC&&v&SGVNJgG4~A{G zK9K%Q$ZN59HgH|>LNWCeZgA^+wNuaS6Lqpq?kV{gng^ROr&?=wDNps;=EVx)Cc4rnoc0n zR)jJ2)%pRoIr7@9fsNBY_WDC#pS)Kwu^r8TYk#+*ND$X3lq>p2w1+VHyM4E~n^`wj zT{Ek4;H!m!v)n)@;z7g>cuPE259*73T3Qx|+=YSBM#IQ4X8oM1D7K|(GkRZRL9>Vh zHwD?Ag@5~Mo*9al4}7-(;dNxzSK>>>zz+)pjLw zb-!+Upa~53qcb%4F?>uknKBoe_HeQI?iuVAsWXd{v(gg;KVB-8vlb2*rYrrIIY#|h z>z!xoYZJ}l**MDd4Q|lZ!;Py%eIDL{)=Y1Nz;9v;nr~KqNR&!=C+Z;@X(>|iVO0r1 zi+maTr$OL7L)1#6iEZbpe9$rJYww3)+j`nDDQ5@&MMQl$>Gdoox}<%JFT`xuXEd)7 zPq4OsGw&F&xo7>bY6R$lGPjKOn-Z{!-%V}E|%_pgM^_0qTwIBPgARmKJJC$2&SWQr3MiArXax&HS# zoAckq-!{^Ue5}4)l^x&D85-n%&6I?NoFo-#?~eMa-wua2;$zwkti<6;Zxv0ia*a00 zG^BnkRG@~cDj}m!cHb0z&vT$CN31OBvwyJ})WhtOj43YtnL7K}^WB32<4YAUrJ{&t zIz_XU;AW_6;n#c}?VA=MxrYzW>3sh=n<1m<$@B8!qZ^`E`>v(sCvAEx1)BBlxL?Gd z3urirgr|JyRFlV^&Te_9a^XCBqSUR4eT!kY{nhUnT=8=IwSSDL8knxRz2Z$;deVm2 z@tF#oXiwhfzLxRujk=z0iQys}fij79vC#yvl6A3t`PHwpg_?-vvx^(Q&|mKpl+P+^ zn21-sW!t>>#_;D|hricfTN;Eo4AG5d8Y3(#CbyaUvYvKv=PnbgZV=kE(aXlEpXUoN z)T-qyR}{-5mO~xv=M$ER)OrYjRUl@AUs?Jd8?F;bLLcWDSaw8DR_sode;A&S0*i(^ zEL&4ki&$6HN>HuVJtz*`ri2)FOdHjFt%IL$9=MY> zDt&AG&J@I8zxz^^Y{_@Vi&pPW>s-Xc4qTN~xtrKp79aSS(V`Oh(Jc^1RGy{TZj)zjT}J+nAFBz7hiez>{Wi zvpSx5ejE89ud-QITQ7YgYd_;YpCtgmGTY~=>srECo`yZGH&R;IV8KW5Vx zP`v1pTLl-yvW@M{3mUlNbxH>?j3jdOMw0L3e%fpzH@T+Cs!V1EmgBZP0B@)&08mm=K5LK1L7PO zKN@)KFl+Ckhn9Y~-6U40M-b@2|GVUb3iNbecGoEVREAgL{`2K`N>srPET)Z@^Fdiy z?POj8qX#V?|Mwe0#VVM|J7+jA`R2ZZcfJ6*!Ggtw8%bMM+MSf|ZoL1;hX?H_^K^!u zSvaTR`9GU2Q;9coX4$H-Yr>9Z4?MV49)RMoJkKS@Sx#(wm7!ZV7cXq!i|8ES!l;a`CqoApKc2mLw%IqTRGx@>Ialh? zvGDbdG89WuSoWx@D($8LBs=7-q3KGOUjZ&5)a{<<@VkM}#kjC*Y<|jf`aGk2ci#su?-P15wil8EG4qES+YPub~frhxeuUDI4loG`9=AKkx~e+I}j~Vn(%ZPWeDa zf4bt{0SwftDM1-7=<(2}TwN2HFTug5wKeG;S6|pP@${^+bFgTOF8u3e#>O{ck4(%m zw9(+cOFy|6X;)ILUBz$GZxY;T7@sy=P`drY*W&UM937qK2kaNyHwEymsDc|?-r9kq zxB|O<8*Tii;-2e5E$BRP_($Yp+}@t=_^+If4h5B7rhC7w^z_WoXAzwF$|=LT+S~8|DS<^FD95a&S;o& z4mU^L9G|x95V~OLGeHaOu3ETPZQOTFt{)<3;H%VW%{-b`H`596ZLCvlNW|q>zcQE! zN7dGLh5u}#ack%n^&9=yu&klx|zGtsoAiZldobuyya;n&$jq~cdwfBFtpdlFqMCpY9CZh!1v69J1^=VF>yB$G+tw;NqB4VC2N4la z5ph&dL6DAEKt-AmTENJqmjp&?KnOPSY#<;Y14%%TDu#{_LmU`^&_YRQ0V2{Q5LyV4 zgpjub_s;m<@4nxCf8X=ZIXO8eYprkXy>`yd{=R%o?^fH=TzpJA=T!BW6GU_V1Vo$p z6GY$pK338x+?Dy1dsVU(eyH)(!O$AhEoxhQLX%Qby2XaA7RPrtVrCNpev7Vw1Bd`& zv}#X4&C}>^_||lU;^!b}=8W#>_?rT6fuo##4~ee;Fr~WP)(*)oc+cM_r<1(2@)Vmm zq;SKyQhm(?jd^3o>C)FcX~HN{Ak5NaYD{ul>*evsxuk4O@M*G}bLrw*LsvddX>Mt+ zRQ!C|7Q8b4IHkH__Bk;7j-@+Z_d@LkG+d84oaF!EwP^nB-rqS{l1I^xBxPPnoZ@5g zPfly;s=sJ`EydL`l~hS-%-{bj0XumUos4g@%kTgmoW=PP@C=sj?QtvSB7@mlPXS|_Zh7ya;_~x}5W&JmOA!bD23=T%qa> z`BV5(!2IS&>p%zFSeYE0wQ7SRK66bF3KeVd*W|-^st^9mne@7OdTjJwhr{cbZ$vLL z&pmhk+}D7cj^sgZ!sc-(UP-JOWtf_twpcqtj$X_uv}RjhFMiLVD7!z5tuFt9^;D9_ z7e>u2rr~K6h=$9JQoHeI(o4SH-@aX!i=n;A!}8a40 z8ggB1*sOEr6mcA9CouQIr`4Xc9nW! z?@_Vlm>+~FY1YGkkGI_x^FaH`pX5nvC#3X_)i+k%9Lefe?E0WnH7kQ`G|R`v-xAM% zP^X&fx%DxfAQft;t}Pssl0JqGVQ3xV)D+-ey_(Tp`7$=9_fkc=y>nzNCYT&hs>9y@ zDDodI`mZMSFF>dFM0d{&dELrx@bzdqP827;u#zN2h54Q6=qAef6AYv@nVEe=is`mk zCFx+YxOk}TNgXcA8lP2;!c(UU-}5JWF5Kz*Mimy$j_2nK%OrGrFV)zcGHutd4t^?B z8GP3l`dy{?KU!V&=pRoL0yT3uPUm87L==q(xLprET`t6EYp6I;^<{A3M^$dWv|Z)W zZO9xH{Ko@$R__6|=H1imwU>J~Rhp=y-P4GNtVc$ji$=13I)uBi{9n|fapqu+=NO7% zPV@%=Mwr+_c#J6J;<=y=AO5N+pyTC!N>DPTo<^;hR!m|e3ig_78L8M8e zWyH&4LIt+a4oSfj&HXM=>>AD*m=t1`4K(kbQDzAcj-<*8O{nII>Elf^x*HYmyV43b z`RLu5YoVawLp@GRRL~16W_D(wQAziW{#hjuCXcyY3ZEZo2s^$MA3OZg@UuE}r8U1G zh_@?z_5$jwXJvC|z1o(KHoL>PZK*~Xo!5CG6p3v_`5687X7Q1bq+`PKLSYs7CG{CM zcXe4-ZMYlE0;u~~vX`=-@sirYtZ1q?038%g&h=6+_p7cEd zj#uZ}UcWvfVE?A!O9e`nENE81Zc!amPh5&#L_5+eikvZfV#d3e25Xi{t*MwOdRm#< z{a1cz$ly^p+=w_|3cp9>9C0KoO?qs#H-dXQZF0ARe;R6U3Nvh*z(4M9MoYBjm7SZr zPV*?lEITzYUTYuJp(U%f4<-+kRK31CTe6c;wgkA#jfFjqL zj3(HMw`{EEQr~$Dtz?I@D<2br(gFnx+6Uhlo$h^0q-&8qllV+l_bt0TO1S4R)|CGx z!N3Pn6&T`0@0+4NI}~H=>r3xi;L4zUUEotnk?L#94+a`jU@0Z~zrkl|RnwaMhE5s2 zOd0WO- zjx%7jZayw8EscgCuslw+Eq%?3D`2cnoF}-+8r%&tw!e^7Jy@&7KUh)Dj`hU_X~T&8 zl#?M>BNo2Usk>4JvDRrp{q`CQi#xO{BKShnAtZ;IKF}uQ{#L_lsHRg@_m^Je90ZHP zF_BzbnoF3*bK|T|uX6{$PMhxLcp0^?tneJUCFI-|^QS;K@{Gngv+#iHabUs7`nCdw zpD(XmW36O0{W=Ws&?<8|pR>tPlt}dDiPc(_Sa1tYPsVrT_%1@jYR~HVu6{`=8oQ59M880m6!3WB(^|tvn zop!14_3^nW;B)O5{9*3WBSXL%ciy<4?H@{*t0kbM#_kpK$R*9!lrh;=B*V3ZI3J+Z zxd!QIuk%sHMaby{SpqSjxSIL8T@X0D2qjgnPOp|rHJ#O}yA(6tl2SMtXJ|0LHNygD z;6u%`D){ih=|_1zd(PL+deY8;)S{?LcP~^WZ}p2b$r4aisoRe$8b7lH{8NS1!VFA5 zQ+fLt3xk#Hg1kISNxk`KgBM0oB{WJPGe6fcB}>r9ROYvF1}Pm7{*Jh4dQq44RVwY1K5KaTFoSRxHb(!ORgnbf7JZkl&4W&*a2 z)nrSU9U>H7OFT9eISCeAw^XK}{U$@)RI6JC4_MAe0hbDtv0+C7Jbz&v{aH$C3fKGA zAuHB^=fybS6lWl{{p2O20^4>w(&sG*mEVe!aAlgM#Y3*O2Y?Ew%7D70d>?|v9b!^ zUY?ziZYd2R6mae8(UQFti4-EF&~^o!Edz<@Hank>mJe@2sV_zsMdha7c>?NevcY5o zP#2Zaf9dI0kr?T5>C%I>>i6$o#qL42qYx$&353?7&0c%T%g#-AUneq*9t2TBWnQbgXe?S=3Lf4q2?fjPrw$xJZKKTr zaS>|Zre-zm5EuE6t3TW5_S+cI_`|c zy4GX?9s;d%Zdd`Wi6zD}y}dRhQGc$P%sIbZ zSzn87ZOO{6B2X=sQ(YTl-F>q4_62mO zk#1?zy?ESO#-+8Lg*cP&k~49THQ@N*gnyHTRYm-*^zCv%FMzA-faTm>-m$}>Rw$U` z_gttIFTlNc>fWSxugTwtqmCx4ZTAGXV!VM&Ewj;ZtweNJaiFeR%3y!h4?mY@V8)|2 zi&2YR>X*=i9hsLPjM_*+;USByG>R)UW?9+>hh$IWt5fvUHC(h7?JNaurSsZ>6JO=8 zsSr<@HXlm)8ro5f(%*%I@hr1GGZa``RHtkfw@wqMbzSL1nhsWwLj|xsJZ=Cl(Z^EmK4UF}flD97DvCyQ`)lH%omZsu z9m+hwoIgWeKRo+Upp=vp6L4>=fj|vT2hhPG?(XhBsc+Bw^_>Y`U1-dW;y&Ad_TrBR zwa$!&&_|JOk$5C2jp7<1L07Z3vWjPRWIh-OWkk}zXo%(bzT}8VMZ}qx*5+1>yKFON zh|m|Shb;ZG(&dump4r@uO1&y0~pbdXv|qm6MEyZG-2vpN-F3x9{$ z+2x86Wc@#!t+>&Xc$fuT%V&K0+L;BRVD%w^fq?_8y5+EAY=gDQ68#u>YCen<a`&W z*?SqpvCjIn+z?53pE%=O;RETxTlMgnh4>|kl9CeB#E@q-pvIo;>gxLF4$L${S-2@Wplf&gCsx^)}aoje_ssIC5{_sjf9eK$hd?iTV5 zZ>igY^MY+6kGw2ctnBl8zV$x{0vH-?%J1}3dV6# zJ`ggnqx{}aLJ2`UZ_nTUxG8cZ^Q>#bSEQzXW$%noq>0d}bsuP7L?=ntwBZb4!d38) z@n%TX4NHFKOelz4?l-{%)a~#AT*iF&wT|{xLECwTjht>s>-!;)t?H|t;QAuevf)O~ z?!+IODmfA8Wx%0YJCKYWz-Ttx-Qp&<{% n65;^ce{9(j1^4d?@mt|`rAh(Rqo5Kdy8PM|^ULop-oF3es!RLP literal 0 HcmV?d00001 diff --git a/rln-research/pics/max-storage-fmt-hmmt.png b/rln-research/pics/max-storage-fmt-hmmt.png new file mode 100644 index 0000000000000000000000000000000000000000..2142f9f13240ce126419df25ab5f4fe0f0088792 GIT binary patch literal 38152 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

R$MgRv~lR zm+#EYTsuw%db}<1p2dPM?}d=}8M;aMqYPFnla|`1Ari-jpE)Rd=AKd2B+?1a2%yCi zhOpe1rp6yCZIn$CiNwCNZeA)Njx#4CAvGa|!9$ypWK-j{xGjIdrXHJKK)4U$i&{k| ziVvrnH<0{3>7D`<(D8z^`S{XX4Poo^91NyHqyWp9g(9�Ek|r8NhJrrUa>rI9~o^ zr{x4j6z=xCviepNl|jQMqz$cA$GPsg?^j8NS!jfFvR1mUJuC2pX!Pc1YkLH(nuKe& z8(biSrEbG(r-z#8M#@SC9eJ*PTGSxjmJB#h%F=)_%uu(9i8Jx~a(E-g<+SAhK>gz98_<_6cj5KVW$40SO1yGaunGV$tTDW-$+ z_;6HUkg(nha=NI5l?)@0Ci(T`YlMk#2DL z@$#?$y+3bPZ1z+1(`B1!e!R)u|lanE4FOBI@kMDksu8P>X|F2`-+ULDp&R^W% zc>K&?f1Lk&^9gUG8;~34ZTfpl)l1kv^i+*?O2@bV)X4o=Qzj)0j8( zb)HXT=Q7^xQNV=GooK&|{j&zODO&RQ@waE*x&vdUx&|x z6W%OGvR5K@AwsAFrS*R};nv_+ZQp)EHc;YtkQHv#i$$y2JInLTrmU31`*-0n>zcXc z#=x`Ca7r`HA^Q#48#rjaJ^|}MS}Xpb`ibAH5w0mZGDVQEIg+dc+W%3SC z6|gTKMGnnf>-wE?D*f>}qq1ORUY5MHai=b?@DCmQ@Ql*gRsUtlEvAo$3{>_PWlXPc z(&%_t<`|T*rpW_o7QlntHMKb{&x?g;2l~QCi zToQ{(?F!0q>|WKjK1q1fSg~!<5u_s~i`RJUa<5lilE2}R_TMSy(3I_Y*jiGYlA|gQd&Hg-$f3 zFwBb??GYV`-*-*@CL^&|W?EaKOX-&Oms1XzQwKbf54i?4XFXg9-M%Z{BKp&S)9{H> zeFgYhhZBpSlEy5-y{j6)@!!Z$WM)yr{8Mel~HQ0T1Yd8S1E#< zefOuj6{7Km3F_-r6$Ame|__CX#0IH3xTHx za<0Gq`NxerOAc9n>ZdepWG9@XOXFDy1G$dKc(*5@(DNr(TRu*xP<3|ET0iNpOnWr^ z7j0X|j81*6RL$@nsHL|D?xu zMm+EBxxcoZUQyk^Y?C7T&_AX<(DHX>H?zadBpAmg{(gL8tOG&u!5=7)4R+H}kyKvO zl9amd(VmYBdbq1K#}=1{%hpkA)(0SCZ>_^WOV&1_+{PtdG0+UUi`*K%LtHdQ1?P^G zuKvs@BBX9CUNtWz?}I~Bja04fmkU&_!QGJhdN3n$vadL&Eb)!!V8;`!2(SH4b=IyHK;k!$(~2mj~|+J}7?CIJ1aEe~_>7 z$hXUbDRtF)uz~!k4=H*sgPsL%VQ7@l;IT^RIVtZo_@jHWdP2EPJq(LxJ4(acct%;G zq9K)6HKf&blL!YQN<{EfwDYohSQf|_fI$Fg{P5pVr%7Qqt ziT*qx&eL?f?QM@ovyEC+x0gK>Hgh*c&Jo_{5(<%RHt==qYn=<&|97-o^7CZZ)8o(I zT&e*c1<_7$+hHMLWLTyrq}_Aahs7%KGc*K`e|iY`Di74FoXNT`I4zln&+)2 z6A=W>_klCz@uqw1bz1Qw;(egJk*?~jM)WvH451$16j{loY;3-NithBqRBS5Tu0!>+ zzW~Wdeb|0kdC~0jYRl+PE{vw^>e3oy08~#eYy9zi(UrOxvYAmWQa0p||MHSIm(4z0 zb-UWu(5>+K(-T#d99l%hMcpqpfQ*Z-bdIl_5g z5xM5$v8}k-=7*ZyA0nA($7_F3WK*vOM`v=y=H%mE!JDEPo+d3oI@=WKW*WPA&R>c` zUDSeA&z)4;isP6WYbyX5{it|jz1JP`3K`5OOVJ(vvq`WNa`6Lmzf9Aheb)HgeBqUl zZ~d)XOJ0l3E*nxB*5JY9d(vZQCV4_?&V+M7txyQdHwm&)MhF@b((=b2%c`I6KQ_ z7PRMYxDIpcqdNXuq|EOJrk0)jsdEH0-#1YM8hv`_U)zq|dai&N^6o#vsA^49IUz8FsY-Y9`u%q&T)`m) z1W~nzUC+kO_NttXd;;kDgKwlHx}yIHWW6*M$b(zsTGAgUTnYK|@%8MjeEJoGayX`J zoo+8smnALZ#wOH8dsSv-Uc{46t8dZxsN1>v%-v_olIq_7lii}+w{o=(8 z;!-$8#VGoDweO@Wj^AvF+BrW-h`)YxpK08Im{pRibrx6Op5F403i+?593D*9Eu`;v ziY-_^=6l4B$mS*ukIF?>l7lj@E3AF=Qcq|PEd@xWXR0Hb$D+fb*`2VZ_cExj{D8Pa z!+D53@*@8^1XapTz@I+D`vG?88$0zjuz$KPH2;P}d0@;ew>P%uL$a!ZiUR{@WK(=O zrc&9#-~B}XXD`RWymi}-eq1=P|11G?-f#3;+6eBSi-8kP&9L*r9GxgsYksq;6yJYe=Q!p+?oElw|=oar7h<@2acMT zUs|lhdHl8z7q==31U z7##pm^&0tj9bD8W^&4jct|oErQSisap-y zI>0BTZf9QlhcUWp<96KJ#pQMqLq@0@A>{|42P$sf(M%nLj7ETC%(BYfT|Pydh-lx? zoJBene#~Yez&}bmwcF?#1LxssjqgKd@#qf7rZ&TEFhx|JrZguRs*|=RJd2m+P;`ZV z-({BpZJ)1QSD4tudj(cK%B}ONyD=5?^fGqmBod{kq_jK6uJZ=1__^O{pL?#z!Y9{U z=!3C9$qakOPvO}^W3(Y5u8VG)Q`t#nm^vr>FsF-}3YMNjSMDO#H<_cEyVGkBCt}4j zo4C3SHAUU`ztGrx2RSKj$+ljb-Ofas2hnfh(Np^DlbbuWw^rhhI=Of{1B>pamT5wK zYzVE)a3f=URR^fS34g2p>qTR2?Jd%H4cHo-PWj9b|N32Tl4>~uK{tH0Mr_V|H!7WB zPM}i+U}5fAlhL4&7CZ4?a(*B>i@4K4#=gkvLudMttNs~HyB06+5U!lPFcY?kf5j8h z`RsruPGZ0~(i4YL9pdy)ryw>iM^y95E*K%InLffyIs?MuA*abY(c z>z%O8G~|u5{UNaBuGqJSX8wiu52$LlsFY*@rJ~>ErIuLmw8}JNgMGs{vz^1dD7sf& zwr(v!HTlBaz~lQ%xC&humY+YHU=7DVUkRX&zNqQTF^87BeNBDT2>8ojq1{Na`QWSj zkR(?=Ibfz-ck=eYX0es?0DXf!HFEaL*qWzn!p+_luDn{0yf8O9@75;hB!MmhK5^iU zCAdsIDYMe$b7-yK>Z--#mW2?P-TumIPG&*TH?aqF^ zWG_3?`tfBk)=TqWVoAcVUk<0B1wa9>o^V62pYu%mE4IgqVgD@a!an0&g-YW$;+xNn zmB(i>pW_15Yx-?RBMbu=4>He*WjlL45!Uu$mQe{--23NuBrd{6)yik18?SAor*$}4 zVP~4e_)yA}YRun-VQcZ|)BfHAQ|unq@t1fNBIC{zN5RR9iI=6FU(2X#c3QqGzhq8BA+3Dlr%vy_bT)h5qp|$?&o7aT{!<&{p z^`FOeDoeM>t`Ijqg0`Ab0l=vkKYQfg44+@ICXVoL!hS?4P-71QE2rV2FW>27-^;92 zn9}9nn=gDbJ6@|rqZN%*>r1fZ)MP_7zNQn{ty`2eRQIHIa3ur<%lRXLJ~Mk@+XB1^ z?#!4<)0|8aR(|@l*e&wch3^H_32t=%ynD<@e9yx$yymCb|uCb zx}5AUVI|0dt}0T#bNpgBwc|t z*9ZFThiAN|J#^9@oz3zk2EwN1jW#{jhIl1?j6dkZ2-6emMa5vc*O0kG$(O|AktGlOSOym$q-_`ZS;6QCXf}eSH)9YGEuaY+< zCeXJtk$%Vu&L{0_#PfIhM=h{x@Dx*7lleb#?MoXim!I8F3%+>t4R>V=OH~|~aYEO9 z@TSqe%K$j9+y}|lKZF1qG`$obzIzxH;)&5qS zBSPw{vkNx6m-mTVMZH>FX+*FksQoK^Q*>@}vM}YnJ$TW+M1Fs>BBTa!N>Oal>P^2k z5_k%EwjHTisa&n>RCYm<)#KGvw#%+mV|T~>gy9KoGXldwh)aK{0B*DMSlBkAKXUdA zD0Nj;?`8N+1;OG#R*LQ+_mfP+%u`1Jo_wG3fc&pl_n&@Xnw@>=3pJ&{(ApV+6e`|y zp-8*1iGKT(ct`pBPyDg6p6$z6))Mcdhuj79>m7(8X}m1lIC0BvEsvs?tNaSx*iPm! zjlrRc%pD$E7#9I4;KpE*4xj~WN^=P}g=dyN_{>s2-F7nL#Qa+PGl*wwk6ZY4Xar&i z9iKI5PpVyYR{Yvk4b1EItp^y1rhkUFCoi(^f4Zl7W~{B-xYOp0>_k`p=zz@)xT*az zcxxQ1)_Tu|^zs8SPEV|Hh#t=Ckf6ODuCX)jv_aPi!hT!l(gtkP<9%Hx8x_Av|7b{SHt*TBVWaqGb+W%mo?l;pf-*0}?V zVM?!B61@G6SkP35+59K{(7}u}tI);A_fzzb9N^U)%EjW#ADHfN2JR&xx!tFCgWz0+ z)xIn%9VLfv^_uIaq2*RoWa0gEwEZqSPSl_8_KEY!sLZHC#d#V-v?l_H(W?h0JKDVr z$`O@iq@xCdC$ni2BNNEud16bNj(s8d*;BXl2-j2I9y4>yCY9ck*&Ej5Pk9t=45k~y z02vO5%=HF#*OXfkj6XSIId7)p&X|YSkG`)w*zpIL5t6O?cWa7P|VKMN3Sgn?451K9{EL@-t>#EC_dpLf6Va+F;Yx|~^MH`M9u?mIO2X7*)9 z_pZ*4L#dnaCJn~uw_An`Xbd22*PP2QdvIozy0}~Rd~Rx>gg_S*mYILPtNxTIc<)v5 z;ImUn({)SVaml5II1}UVHFbef)IS=^ziIzU=(fn;uv^4c!(!z}N{BkOCvG;O_efpSPI&9*iof4zuYaPi8bw&C_iR2W zUm73vg8{@fSqliikA*U1nh&aaUW&T*P;uwlwY-54J~ZOu?F1t4u>?`O$12BZWL<< z8EVdIm=2ZDU*aE!m~VvYExyi@rpE(PXn% z`%4_c(o`RHt0^EargsgKh=7WynG$H`31MC*V%4l{#9bm?FUBG{v9&*u1iU2LJClSQ z|I)Z?kWt;;x~x?vJRNWsZdpO!`iXrEb)nAl^m479zN=|vrEzDXs!2|1!!p1Xey9Hr zS15DzuHRMZ>Eks0$(S~%q9`-uvHU2xf7Ge6d_HESElA>oScuk(;pE>SdVNqfdorl` z?K)wDZG(HK+}Nnb?#`dEgw1{6D(l7ZD*eT5x)k}GDli2x_+QhY2h)>D#$xsoJLh>h3Ya6g9# z&GoZtkB+JB-V}9?vy_|7YPw1%`CLDlN?e+{M?_6VO}Le~1V(Kp`qB68;i6DiPxj23 zC2rYees9^>XT@d>zUZ5Nbx@{es`iV?lK?MT1XWC(d>NZFQW^GDH-mGJo%C8kXQSAh z!#W`w=B|i>ExM&XDp~~>Hs@{}+@GgW=K++xqz78DLa*Ny`?ODLzSQNjG#=uVb{OKO zAJ;Qe^10tg60yEPV~tx_kd^`**4|%2G_z!SXPOWGz3DM~DHE3a(&N%?6|q^;Nm=u2 zcRlG5%gyXc(b}_mvaM#G{14m$px2SUt69A=Y1`L~X3V)koPdg4S8^nqW(5?&UQM~A9J#L4d zja3|+SgHBu+L;*oR^zQo3HJIxqGsBhEv%Mh4=AS#pfGYm7)`I#QFg5Bw*H%|9s#Yt z&rL3BYXJZAkq0J&Z4KFP1mrB%z>cQ_6Aq!3W8vLVw z^^q&Mx8ArKcGgm-XccF(rGtybsoG*dJzR03-_dqC3O7fPH%OHXUTE3)=ziih@?XuL za+3=axq1%#MY|(_7@oSSy5bx)BqRm4#wC2TEnfQhR9&yxpzMnzG5n@0nC7__nng%> zGBj^*1^^VTRf|3MmT0;|W#*6D`)meA$6Sp*VJrKS`e_r=c-|pIOT_u=>laQh8*X^| zf7<)bu%@r2gv^ki5PNm)=ATzae(wIN(22k^-R0M+qehtr54vXRouybq4=J zA$(pNExA^+uY8njYnx>3nDq8rqUbLrGi!MW{&|^V;QcUR&yExx4k}Y}_J!-C@6zQ7 zO@7!8_j&>0Sg{)p_E~QMzZb=OdvvTi|NX^&Q4v^H(u75c;IBG&Rc%*O<3PoA?6qTx znPO){{hzugCjgERpkJ4NV$`_3Pi+1o>uEu&vUQWm)+m>FJETpJAd5(yR#vHWn`+R9 zgvAt9Ya6wvPBv5SPm<$0ezt9RnT}1=NKN~rubpU8Lyg9g-g^{s2eTbh-abJ*N9C-$ zABmZc4-xh+t7^yR|B&&sKdHFVD$@@Z`gHFv%tVz#y=}ALiD(I-)Ombs<#VTvi5mD~ z+mXq>u~ZOc;CTBFBA5{t1x762->OChFxM-*hWL8HFU0+k`pv#!l$!Bzr(N)>J{8fM z*kg%_t*e!$f-8@1jN5sUeZ?ugN>N4$bqBkAsE-w{ZgiRD3&L@QK&pMcg$np7=UiXr%Kb%{EyM>bQz-7lKX5)<q~$IKPx1G7>-jKCYZ)Nc191JCxdb5CBfZ%n+P* z-oD?85l+l=UdOB%C~#{2$*PbIPw&W|%;8j^DlkppbPXXh;W3|6VB>JK`Bh=zKJ8zW z4Bv*NNib-o;2QTLY53>agr!xt&d%lQ4RThJr(e*z!>4GqUKRll`@e5E{H;g z+lAxOb;8>UH=fimk74IT`yDk&zCExjAH09#j{cWKemmIBd2}^o-2a?xeDKXy{F}CC z3@1A2bw}3gAC+b&{J%Lrw64+u2@#4d1nv#IB?-oXZ>j&ylBLpor2>r?21{_(muFzqkJu9_Rt*Jm{R3+Z@)^K<*Rlt!@|Y{_WV4$3jVLur`Hmo7wJ4UZh}B^qF~48LLGRRGg8_6{FW2x zw7Z~x=}uy#lH~u!`qtIKOzT!{I9Wz+B$!RkhipEM&r_PLhxDyCjP%xtReLH<0>M^i zQ@nbjN@HkkrT*25g%8jkr)nd&PuU9RJ$J8vP;I6G8GOae5&b^du3FB?1Gp;Kt6DDb zoZqQ5|5n8%6aL3V#~te~FK+dja2^$XXDjsuct>dIFz@Hv(S2vn@b?RdO^s6h1qKI9 zI4!gk@|knfKLz4wXZUm6BvJ(#c!oEC1fb4&tae%LS->0~sQcg;_OJXsRUwC1Ep<%e z)%X+4*@A0}Cl+yxMr1mA^R@%8b*StgvsFELQs`ipe6eb;E3r2`UZlT#p6@)5=?f%6 z=_F&H`GO}fG3K}M{yJUaGa!*e`rZ9j>64KEFcz_RhoQ?2K+JjL>JWG2>Z7+iph%j$ zCh511x=)jZ>E>D0M#R9Aa}f^UU&}Smo4;)}V7}MU!@Q~$mNRQYUTcVK*L^BL<5N*m zl6(vAj(pEtX#(O!P0Pxd`bLAdCthT;Bl@)G4!?x0$AygXsD}SHS@cy6D95Q4C0-4J zHg#T?qdeHKuqxYg!|IY%bONwD8(szcX3q`v+LIu14r?JSFf3R@yd zCclUcpnCG+Xde^8Y(qr9s@ z0zE*_bbVjb_qAaM$JsvZ4fY-JpN<-Vtu=-PVW1$Wrlz4Ns=y8BNw+3ARDL* zeKk)Ws>KR_DzQhX!B7*ef_F|tYV27CJT(*AX;}E2#QwOGd^n5DOp0HD&yN~`fq}>d zAZjhanN<|ZYekM9WLNzw>ngH&!n^;Dan7mp-fbo6#$=~@lHMiPC^W^taC5NIvy7;u z8030!rM0->{VDay&9O>?>lpH`aHapYzM(V5Gw8A^_jCk$w?b}}Y*QAc(pso{oEZo!K_%bQ zC%DX;xV@Px^Y8!B}c@vkyns>{Gfd(Zs%kyA?Rqxl8u^xR&p;y2jvv}zxFZz_GE z^pBwQxTl&n&mXy575{x`N%M@QTVG#*rN~Rnc3@Bu;?Ha;O5mUtqvm;mDIV_CuY5A7 z^VKQMf^kHlmJpq-lBr^8fU>$cHTLqMg2wtr)IkNnL)`#uqw&whtZ$`SEw)IECI>2h zwz_E?hL69h=ynPYCWMRlvEKN^lZP(6wes;rR8*gJGl70t59le;pys? z52$7kTXS~9AokqM8Cmx5V#ZSBMv@NxjEThA3nc_cv3M)j6g`z)cTNA*G|dxnBHtpr zw1{fGDIlUXfBLuLu~;E-)|yOX&Er`9Vu7@8^Uzu+LgACzebn+O-aMD#mI4vq+hbnp z84Whihd(kL6rR*Va=r&xJWKuN(QiE!nmzmvXo$(_eGL%A?kuISZ$4v!euWn@``$(9ttMag5d!dvud7eJ8v`B$I$lUs+!f@{85&y*l4dei>g}tFk5AMn z{4TO`7ybvleYk9slmDp!Eqce?Hpfr_)$G=-xK<2Md)1U~kRSAJP1uC3TI}a}dMqID z`VM_{*=7Pb&&klHT0=}X>vhUV;uS<=3G@2Xoj6wzZ93|zBf#j7>Z>G_r|X%EK>bY?qfugqco}m+Y&kGKb{Y z#UEbHIjmGIuyVOVkg*$fv?0#=Sbk?9-O_U(iXa+e7zPzcBh3fxOr%rnsg$g*%PrZz z)#*5tm)+y%3w6H2sM_ZT;EWz;W7Hl(3A8qf5q>UJZENY$>>n!XVM4HZqp(OVGH*x=UcqRf=Q+lNN%VGW$iiQOup6>MG!v)_ z;h-KNTjk)QGAcpbCIaGOom=fpa86?+TOYw>_IL2lRau!vc?X?$;H(99($uDvC~K-k zCy@-_mC<_(H{)Mo zpIpDb{35(u}SD zVb1bt9kMqS7-!VcC zNyAkv=_+w#M>;V-ax&Fsotqq{F6SY4nMb)9huNF**J}@6UDY%wc8KTNkiQ?eo>MkR z85F%S>)hj@*r%0fi}-v#i%wQtn#vF?vFR`d$KN05j2`sULIaLCZ2r_~UW&tUh1_}o zzdW9$)}`h2C`_GpW{*7rlzHAetI!^?5yx3lL)+KFBGXN#|_% z%&>;lcy|XiP?!&(8v1~e-m4WQT%CK9lCgc?yL-v=4{a?Eo9UFx4NvpyPtNM@zsRO* z&IbSVW>gn)SZHm_3RH9bSrAWL1N#8ZD13Rg)^Ts^YD;b7ZGwO)dpCBiE=LV}AQm%R zasWZJUV&qT7@;`}N<$-SPL|tCuf+b8Q3gT_3F#x;$e$+=uW+Nbml{$Op(khhsl5WX zw_MQ2=vQWw1HKE`#n%d>9 zg&Hc{!8!CbP$ZD2VE!{?%1;dj7pN0ayg#IpBi@NH2#eHGT&Sz`MFnAceRGqznmEn5 zSgF)~YUUUfwQGd-nl$l-9v+;QVzu@{lHM)Tbxq|>pD>Hf+ zYIc&^RL6Ee=)zQ~c@GN@=G2{qINUr)AZDK%@B z^V02uFJkM@T5W^r`mjCX2cqCv=}cRY4i)wpdOpli{8xb-&C>;j|CE82@{*;5B;7}u zU+sMnQtBRQYusO3n8H|7FCg4M`pZawviE)6EG%jEadLqI=T=?*$b1nhWG&=9>{$ti z<62D9>`celvtsCl-)gvRU4WZifTt?v2Kj9_GNri95wmBK>+web1 z6Qx%BZ;qr+yptZ>s)JM5Z1JnqdyLkXTW9^ZH!IQAh?=&6ZYSA59wBS!vAAURuYNGr z@bxV38ah49vS!HfwXBsx3U`$2M8N3WQVaQqDh$sldH9YIg(mQZ!E(OHGY@sGemY4N z33H(4VF!#xkk!tH0>4WI(BZIMQ0A~6K!|rtPA4y*Ll&&&Qno&u&q3M&jpt`6=|G*C zs>&v$5Y$5K@on6vq;TX9k%@OdgEXq#KFAeJ?tIoK=p2=$4^L*)iKOX9A*?0yhw^=` zx@25H$SYX3lk{3S3Yq^DJ1o?IZ~HvJHPiy-^9Ht9$#ua?BG%D%TB;mqd1{P9_k^M3 z+9rm{P$!$?4akqo+2ydXn>mCl?>LPF!tr;%pmb9>r`8A6)mb33l5)GHwV~8(5#bf{ z6o$!*ZQ;xIzzi+bd9~DJJHrvX(mDPPgpw2c0zT^HaP&a$?#}vd`d)XGaMKA>JzuOb zTs6Y7&Z)k%P<~z3Yt^PnD8{n1SLsx89uf-KBFM6 za)4msh@C5hRhnV8v^5e|-wdr+=p7FYOxPfrgOMD+;_L%p?Bq?<+XC%Hp1asOK>xs& zXR92=T34MF+3^ACa-9#5zA#n!z>aUUK=qIXK)Fa@1xD#tu&HOKDVxp!k0Q1d(g*VX zQyQeKKbU1t02;@K(CpLFX(^e%Rg7UuL+5qC1v3ysvZk+gVTLnXKMT^?#Z@f=EJ?th zMzJfzG~WTw-EUbnC>y}J7O#q6@JWEOSm_8dGvD?1&36F?X&6*vS-PfAW=ba0hk)dWFjY{ zvI`Fs7la(1)sN$ia-=)I4<#oXeWuc@vdLZm>+$3nMx8c)fPG(7Zz)X9V{5U&OZ`b7 zjOb|rigU9yQ_XfBZ8dzRRo_}8vWGqD8usiSC?mQ5l)vLN{BwXRTr~&TM-HJ!qLYrI zd!`56>iriLFd_?E^MU8)OQ9akSxFrj*KWuM-YSCX5i|L1rh35p82HxB zj@iYMyYa7yjoL7ao18;#P_3mioU^ve97BF~s<3J7(R2p9htO$L6d+!y9VCi0?hbLb z6M^*BqV&iYdsG$!-q(^WTiUonkd@O#VsGBONiaTTJ;T#lp!F~WY7mq9)4webDEq)6 z4yC>iA2r*|?M|e;$+(~=ve@?KOy?O6n^FlkG@v2E`bU1T#fwq}OR?R1f-n586Edi$ z>M$2;hUB(iDTqC$h6_0Lddtt*RVX0f7681U9@u+XfWAh(~@piOsI+0%Of_ ztBCjJ*%l7Y9uY>PGQU~Q_*owOhyDN-v0*MDk#nTjqsWMjtA$@22V=*z5&v0ER^9CT z;Ag3&uLcF6T>~!;mSrF^F3|QE6uOl^Z#5IX7Szo-Q{3~RM-5XkX0u;ZlPkz*jjgXdsa`;a zIeO=3)B`fSs4Ng>9Q-E4KKoFe+-!QF6$p$Gq&9d_x@tsOsf`BcK(`>B+2FX@w7meE zELa;cpW21*=yFWnG-Mg&H!nBy!Fc!9=RYrtlA})jj$1P^T=-TB;-#j*wmqa}>`_gN zDbrIK3&jW#*3%aw(11F(%d|yB`#riN53Bkv57z>bqsqrk*URw17uw}g@aDPf#3qojB+-mJFADh8B74U#4m#g;1^X6CPBQ?_5h-uQ`78gkJRS?rzQD~6^G?!2WTE& zdAd}Jt0>i*DCMK5`I2rQG=YELG?ilt?Y?b0C;E5id-{)lYgsyND2QGaQPfzrAOyOZ zCNKQB(Xl<23`J9dgHXZNJ%VgM zx#tBnaBJ4$#D(+@21$w$adP{Jc2Q7-AOynp!y!7J{&Lo6nVU{aSyuYtClm zApK(+mHCp#c9m$geUpDK8>q(D1R_1c+?hU%s}iVZZa@+49bbV0Lq^%}ifUl(;1>boE;Oc(N*c5TaU|gJy1LRmq$O zh*xbJ2+ID60=@R{Z^yRGZvol6%O$&btGvEc0tKMQ9asGb5QZ8Gsi5azC|n zNLWGI4ixoGVozkQx&8CW{KoawQKXPF#W^_c3QK->rrINUxha-Y^;iS`TN|*a<5I29 zW!B19u7!c?wsiUsgaUi{rUlR`u50Msr+~AIg@pRRSo5lgosbPm#{=;f&X{@R8y#^J z{NacDxYULfD(PY)6{BPO@QOoa!mC-ho7os3IyAGAT4oaA(Z8erI{ zN(HPa&XN1}f80@%FU+worv=9RK4_V&?kqUcxAt)q40s{P9ciJbdi+yX9yJ}cf8Fl} zeB=hZgJ)L&1!5kt+Chg|<<2oce~dN5C3Oi2EO-7KfwpP&1IzEIpdn}IA8k;;FoWN`)Z1Nj^Li-QV46pFYEF^(hJ9me1d~X%7q6RlY5)} zIBSq{YW$EgpY>RBtaw0t<*yy#c^pAB#0#-_Va?eQ54kvr53;A5*mm?f_l;dOa8V<0 zEk^kbq;pBlHUDJ#!h9CLz2`p0gp7X*<7RF5^eg-9K9zc7(66lsfF%%YAmMsfS2{6?=s73)+pes%HjW19PzIj z(;eIPs&T!8^hAuDxbb%LYWauagj*+zJ;U+2lSM;fNXSZE#xo6`yMuR=4;PO;fXV#1 z{>d4qe?e-^7h}%R`ua+?pzg$ve6IUysqnMTfVSXIQ}cFhHC*Nx`(W{%m7rF~V`r&( z>PEqhvkMLGH@#D)?#^$nHhQRYE}r-};~B>N!y6!pq+;xP|K_zWt40i>@!RkfP4aR4 zX8^W3&RNwRX#mL<)ju=ub_ND+6xGDrD@9NuL?n?!yVWZbN)!mp^xA+}e)hf^YE{aj z7m9Np%v*4MV!gxYL>6Kf_r_R>LJ3cENG-t4TX(2V$I z;_GVMEWnzLdSfirv;UA_2j##&#-0=UCZ|6rxZN7fIcphhs^Gk^vg;@a@CU_Ls-i2c~KreQ*s9kHg-4&L^5v zlB@9N0=Ms2NV0L`)1+7&zlH>+`*7yCzAHAUC*0l>gdt%BZI|@=etQ^*y}_y#pz*G^ zetB;F7TH%6E>KTmI!oH+;1UEG!KVCY7-1Rr49giWf(ZGKP;1a~ZbR!P{&UatnAX;z zy^(-;FjrX-GPAL4Cuhdc#V!dTbi1Fx(d?sImUqlvFKeO4m??|7%t`p6W`DP0K~UzE zaR-;3Bm0YI&Tw#&;r$Fk)@vrVkuz6EE+x;{%YlngWt z#m+Ef{eN&a3RuerbBjTg3~Kd94Nd7lxS`uQ_cMGYAT}-q&0o%+9x}rcDot{tih#@M zg?Cwm7N$iDp0Jo<%oFMzapJM|mV>55icCP~3$5kR$wuUJC#pB-{YPzt*fcafR!e*n z2!|FKT9T23UHPQ`qDDwWJ5w`PIbu8pqqhO%r8#bwt{Svd4;2 zUS3+@*B{Dk_;671_4WnHRE+5P6XP$_&;G14eW$@wts-2{o&KcBGH9xF^3Zy1wgr3V zYez`y!BQ1_4r{4h8(plqlP0fzVG$aIQOaURP=X53{R8Cl0Lig)QJBZKXeav$TyuKj ziN|anu7kb2O4@W3ZUL6$GsV|V!fW2cumeaUr`BFP4`d1-4J#a*b$k$S9M<1*6}r-b zLADr!Pukm|dP2{|4|;kyM->ynTqG}UDcdR98C;Y?-KX?E)j=tqe!OyjrPcYf zqQ1HiftfJ+(GV1(`D+J^n|drv>YfMZ{sqGX^r6Bt7tIU4?z+*ufId|<0d;W%dBeUl3yHt2(5eYx2vi#lX$l zEB6g33D6@H#J9t>Jx*Z*V#etvwj`jp>L+)5CS@+qbJ(ImC0K37#;mT)WxhGcIHiQ9 zUAYPQq?iRWcUW2&3n+K@dNv5~DBNR?JJ#Oq>v}_P-lH>eG%oqzL=C8Ex$kHk=Yo(t z-@m&_x&Tzr$-T`^`aQvqGT(t~oak zVBF?!H1#uf`>=+BN6971msn#`Ifdee0d!B)WB<8xCCxl{1)7$xp8s>XPB-~Q06XE| z-K3R-*-WE^uUIeXnL9Y7z11hb>BvOh=xRzn?NR@Xex2xkBx-u4P!woAkxN-Y%2l6g z8iQW~=nWgc7J=>(vxE{^qmPT7@0K8DHs4qgTVk?S_7{OtQao=xuU8i}TgppiOBdjb zN&=;thMwQT3X+3?@(|cNp4(Lia2?Nm$3!NA-4Ecn00I^Lf4gzS#7vG-ZEX`}NbeJ> zwNb9&AVqoC-JX1n`%Ny%u50^M4zf6o@;6+7HZQ<3%RvYiyLP7mwJgWwbk{Sz!SO({ zGhy8`|GRdIPiSBaP>BKL2Hpb1&jg@8KB*NR(Z*XF>jk7Qq)G^fcc{wm@CK7&0H5on zyrax#t@<10lB~f!IwnBia^inBvpWl*@4Q2^Ib7-TsDG>SVBvzY#LhMc*iZ$~wh+Yo zQ=vqn^`!dr7s-c$%Z8nu?4hg)_1Mi=nEQz`mLY+xRZ!I?Koe{9j92R5M7iYw=0kQg?v(6h1#G_wAKi90kG|~x zN+_&&Cu*X*>(l#os!tB)EeMXEHYabp8hfXBcdck|0}LERanLYx6n|ReeU6#l4&{S# z-vacqBjcWdb&Z1%6_8GuWhPKRM7_XDpQNo_94b~swJRLk(&pij_+LGOz+Kf+ zttzN83$1JUgWFb+m)gti>$?$XSsmT4()}WB=%Rq;srL%4!sGMaVYFOX)3baX?<_?9 zCx4e-9a5G+B8^jMq%sK?Z=-@A&lime;9Hr!nPcT$hw236-s+-UZ&6p>E&_~o%N`hx z&r&*(*DSdJ#h%(blJ7a%Z|fFK^Q%-cq<$|i00jdzE*F_?`zduhG^;=3K? zZC8%kBOyZ-&ujUL(1njC8!KyJ<$2IBg&flpzJ-B{m(N20LX&GWbf+OoVV)e9Fwd6kx7@TdhPbTU@^Jx~EmQFc++@L#m!(P{ag z>uVEW_qJ6Ih7sx5k{sr%1h;BnoHq~1E7 zt`KG`@NVFNO*Oz)PZF^cp$GP5mrRbx8q;g;1djQaJkLtIG$Gh+^N>}cmoQv5bf`Xe zlfEa?0|2wc|A&gb>Uf+=;Qd`_?@_9auBRLA7|9h`Hj0>GPQ?t#c#*ak75vJMDkTy< z+Ai}}*(D2OY@qjm7^3n=)e-OH`mEvex!J=P`?KzgcAMFVGP1aLwNuuki&Ivji$hoL zZLGu_RKS`ps;z&Y^q*<0H+fMat84tCgorKuv2SG5@}hi-T)*q7`~h0clnewjx=8G# zz~|4ODARWcYdchHB~w0{JWsp;AE%uRs6X4DSGL8$v`0h5o9gDYI_F+Qi21a%Ia)}9sg8?I>^Zv@y?W8#R``6{gr zc3qB^mr($EO{;qCx1mwPsbxQ{94O&b$VODwPaC%f5i8e}8%({~nrG|^Z8u16y#IN9 z7bCVg;?FJEzc_%5mx2*z|9V>^k52@v_oHsvba`tWZhIojsUV`2Y#&kC3u@$|ALx*5 z>*A7A)k;P|KN9wyacQm)UfI~3t_WsU=%6?HliSDK^L>C`*;eD(>#Yxc7_AsNNd4NEPj8~(Iq`_&Dk}KQE}`lt3u;&7-T=Hu1kA+s6mHWni28Zpz<+*lpvCZ+k!`oDf*WiCmi|Xq{zULNuY~e{TL_Ky#asNxB4wK@^vI3bphRQ>**S^Zw?*_l6HOJ+7=oCNblQf3H{b zXvPP%Gpayqob9&#!T++aM7T5hBQ4eelp6d+dDoSxwiVDe1LXNvmr|M5`p;+dlVPW}n|26?Y-D@X0{yg2wy7G64Ho;3oSh%v z`?t?|cpR1Z^2qbhRFtS*5dgy%0SuM?!W&{BoY|pA0uAc4>Xed+oeM~ zFSP&fuLp$x_3g+*L~H~$d;#p(F~Y+$__?;$dW(kL>fm~zjyA|0*e>yb8Npfg26-cHa~TnlWRkAzf_oai(B-q2=Tn&)gz{sj zO4S zHYbiu1HJ9v+1Cfw2JPax`{ddFBWV%5QPSk?EtXiSaoRS{>B^53e8soVU;)(Id2rez|4v&t~ zrMuV=*~2`8K2ty9uLjY_<_Z6J$WJK&>aw8qZ%4++`*`lgU!Q14z*jFATs%(MRu9v2 zL-Fu@G0I^teBYTYZQ4*tA`OYvriKCk&fMCWBk9cYl}VB9VXhaC4!`8d(oJBSyvKyG z(zapF=2wQ6D*J6>00f9+g z0lB0c-I%(anc4Xz!07_AfQTZWUq4^Vz-zcH{rpC^=i$-6pY!*{ixrT6-w5NRwWyK+ zQOMj*-@|j;lI^q!i0qqi4w0-Jh0V`z!SM2Ycy;oSm1Xh$^B~Sh_f$H0v*1so&38t* z2KX|ehf#AXJHJky3!Iy)1SQsv{A0MkNpfVa5YW-?Z`TL<(YQT-e?52j|G&L675@)& bg5N%Zotz4Fb9{=}8OcD;^hW9R2T%VG5=phR literal 0 HcmV?d00001