From a1d7b846da4e5e6345ef1f190220ca293a9f1d0e Mon Sep 17 00:00:00 2001 From: Johannes Christ Date: Sat, 26 Aug 2023 18:11:47 +0200 Subject: [PATCH] mnesia: Add figures for implementation documentation Leftover from #7255, see https://github.com/erlang/otp/pull/7255#issuecomment-1683453370. --- .../misc/implementation_async_transaction.png | Bin 0 -> 50880 bytes .../implementation_async_transaction.puml | 37 +++++ .../doc/misc/implementation_table_loading.fig | 150 ++++++++++++++++++ .../doc/misc/implementation_table_loading.png | Bin 0 -> 22338 bytes 4 files changed, 187 insertions(+) create mode 100644 lib/mnesia/doc/misc/implementation_async_transaction.png create mode 100644 lib/mnesia/doc/misc/implementation_async_transaction.puml create mode 100644 lib/mnesia/doc/misc/implementation_table_loading.fig create mode 100644 lib/mnesia/doc/misc/implementation_table_loading.png diff --git a/lib/mnesia/doc/misc/implementation_async_transaction.png b/lib/mnesia/doc/misc/implementation_async_transaction.png new file mode 100644 index 0000000000000000000000000000000000000000..9efdc02684995ff5df52a243329fd5cb944ac6b5 GIT binary patch literal 50880 zcmc$`bySq?7B-G3A|Rs3fP|n(gLJ2YAUV`fQlfNsheeAZT?0rBLw9$Hba!_n-SE5d zeLcr>-m}*4`{!F9Yq!3n(CO_+L@U$ zzO^v3?`$Olm+&!ysoMU2ALSajj$;}T143O$;iDRwYdOhI=|AJym|N1p2d9PwZv;17}Z9`CVnOsf6UfT znjJ>5q5cgP5^~gscy|ZWr-_0b{%l$vwTp%$4pVo?DNB_w?=dk-Yk%pHTd7Rcz`7#t z$H}GW`ga2s!#HEO?tGbSLi-0%{>nEi-ar*I{xcRBqI9_ipO%3*IKdnq1_1Dvw*TtmD>DkYv z8bZRP`Ft#EMblb6ExjqQd(0Qpdht^@ZNHoHUS=8N^NYq=E4N5>Ke=w@l(hbwV6QbnF8ejhj0Qch_WSVf7(A56i*0~7FFD`sJN(Y2Tz|vCa?raV@Z-htbRy1B(lKiNC3VmCkkReVdF7w@ z;`W-1yWQ&)M05B$;U-LqM74pR_Z*M1?$nA~PzuEwy=JM7U%x-8xtBe>&ZCx!dKh9T z9vDgA1*xY{$hm1*Qo7>i^QJ$8MCCL5=LlhQQN^{}FMG&jzg@gu`g7OYU;>B~A zqt-ecT@`O>^x`o)EqUUHceltN)}hipXE5v@R$p%x{+t){`gvaS2i4r9*VokXzAC+y zVDB+p_Y)J%yP5RB2HNRR9TK9!!*jee-+0+jZB=chZ=g1!7CBMoG34e{wR_++r4#R> zk6!3}2N*p{0xa_r;ngoFe%GLASFf#T|L7`O|at@A+I2~?I z)T6#eUF?MOy=nB>UFyQZYA5mMXF4-PNx6nVO^-}^8TiVGkjp$aw>|WQsAx~ZScwGz zek8{H&o}{>gTtCjP1OXHMjN)nfpB3Q8kPUeVKCIm5KInb}r9-cFku=SwX@2^kBo|VmH3>RrtH<%0_B)a%tY6vP(mh zw(C$d80D15WfdI$Fba}SyEjw%_WPaeZ*mk8Re;$`e^d0e_|j+foLckj!W zFV)r6PsBbuUd+xp?k;xBo@8bO3Z59&zPrZG;wPs2O+i7ykf{H_PM49rm*MTEE#mY%%)(tT1| zQBh*pGdtVlZ_pY0ZOyyWWPLaf?4nDPasF}4;L4g2BDOpyyrBER75;gFP766 z6T7K5n69)2)-kCeLnWtI$J%;lmw+s1Z$);{+wBXN#bm7AK$bce{Zn6G-+oBhjq`oA zd!D){C9jH%@xm%>SA>nyIW4E3p`)Wq;*j!3YO5ItIlpppa_X6(j&~JaQ7jqBR%w|L_2f|wZMFomU1bMWo`)qyA}suq7(CKVqOoSO0703zEkW_T|%E9>gQ z)}me-cD(4p>1UORSZD~;(Ce|7X_Cv~jE^2o2MS%#FfiznrGl}(7S(;ZY&lu!1Zy3* z+^pC#H8rKVoUZ$5D^AvDdvvrtx5Olzfu-8D4EWrfc7=6{4lbC|rUatu9^RDr*KBoIblDQ8LdjHed)j_zaAH?1mX`C38e zJsSV7Z2Il5Q|?nqzmAWy<%@}m`XRivOAz1Vc6xArak{mlWeLokA>OT0LF3z=_Qejt zVECr;P?owuN|gj;d`@y;$-cWkhpXv8+CnKyq z2{55(H0azAIlWvQw`+E5gXdiy7a}QmPgWR

SS?%c{f4w^{ZZqoUsP^1&e?w9iY9 z7~(ItCEo`WB{rrjWn>oO43y=}><ruQ#0RaJ8@AW31drvZ7Kt=hNmT<2uv#9uFDb+)7uRS2J^BeX`R2I)J8E`xX z*dr1cXWla$^y{!;73TBPLjr;oA%ePR&U7k{-=<;jtlueKQ@TFU-1Ag(Z7{3G@fzCA z11QR=zW4T8PEEdwY8tBzv(V)k+bLtbPhjAZv7{()dSCL`vG^AT!FV-r)<=%Q=v9Vi zQlujG_L6EK6G@7^TwD>oTh*tG^s_>O_u@<6WouR_tP~pcm6FsI_VxB=7HYH0om`xs zD!+1}&PMiO-x7;hl{7Zn?~=J}4dvtVx|+d=<)x0JjCn`X)j2Yd{oFzc98jN*u`!*B z?z9s1198~}OeVZoOu0M2wHvpzwkFCpfEe(TZN!4XVQcdIaLU7CymY(K_rAl%D97ts zl-6Wf+3e9=orYobHE{1TY2>Y!njA*GjgrK+-vh~NENAL_l3uPMnP{A|&&ME{-qX|5 zU{YS6KFLM%<5!S{t%9AfSJ2YZ>WJoei!+&32o=5b-Bqi0P^1Na}Clf2jr^%Gg@_S!Qoy=1PWDp{PpPf)u$l&$G9lCQ_kA~`lX z8Xg*IDSA`O?!)^%SoY5=uepE%BA?gru&SS{?N()%D4l^?|>%Q!6 z^}P>u<>l|G1WerHG#w7Qy!$~obHG31KH9y_A0gCmJ_miT+R;&7Dk?D#H}`uVotOKO z_t)O1zWm~+Z`e|*kkuI{K>Xl=VT#+wouoj)H(3`MqFuhb#|L8;_wV0dvCY(SMWc#5 zu&6n2?u_9>eolZQ`kqM{B@M-r zuC`sZ+SRGVe1esY%@YlUCJuO*o`KUQ0_|H^C@8&P{NU$V+5d%C2+Mgx6D`)G7Sy6Q zO_(za7k&&kp0V7@HsFRNkWWUj$l7f2-OA@D+=A(ML@S}bV+99%6(GHQ7_cQNR47^+ z0XIaUZo+`Vs+vJ^Ss=mb^b60Df1_yg@;M}`e`9`Otx5E5NHn~4i2svbcs+1Xla6x% z;EZEpG2nrlXidY!Io2Fssi{5fBe_pN$TWD|91_t4zMqx1rC8!N6+^-JA+moR#?Q~6 zsWrX0cmQG;J_Le6AH_5GJrGeqe1+d?h2Q@gmuLe|*aungZ7gU?`VB<>>$(rXWGl+c z6`TRUsh7;}{U(A=Ko9{u7Z#TE%~(tn<7-gSCmS%%xY9jmggI;#Ho=i>)E@h^Ld|`U zK;@Ogn&w#B_ixcjvd^YJJVXl}G3x&56+pzt%{!2$RIwHLzh#m#dx!uR zDTbFKaGs3X)zT}Z0?u;I0MBJE?{*1U3}wRsAQ&KI)fKn0VrjDgQT*An+Ekes@+VJ_ zh1xalD%lzm($dMc0A(_1mN%xu1>MSRmOA^3o%dIPUuo;;NRi$VvA4Hp_bVwmOnClr z?{mF(Kq&|-k&zG5M`}DSPY<^W$l*zM<6UFCIrguOK@>>mobS0=q3 zX(|K09l*>2e_I4XrC2~d*|i-B%HE`)NaYK;z z$oL(fk$T=SqK{zId0KrpZNU*-iYM$)P(yNsQ6z-sd~o=XqjwIfUgC+{nVpU1P@Uq+%A(8^+uFD{ z5PE=vt!*=JyVJ@biOyk8^=ln;vkfTw4ppYIyxZaXjc@kOPcg1W7J^mVs4C; zAlUuafGwo#0k9`kSQp$23*jK-woC{cl$GP<=O33`3)l<1vIfH*a!DLw&d3I_{G5PkFJ zJuO~CJvn5>#leQ?cI)Ws>i%ehigwYs4*O`kAM5?V8mo)->!)Ee=uCcLYRb^I#0L=o z)QdqyMMZ%^K3|E&l>V_kI*9Thfg{2|u)1$cw(g~=#6PqrV~M__PGzru%$Ut_)CCjk zP%}+A*U}$LnSCCDP$!&$B{##Xj-N>OAMEHKV^pE5R-H+Ej$<5J-%bXrQH{vAm=eSs z0|#w=jO<|jed5tabR1jGo-J5!Umxwp+FDyQ1!b537RYhl{=h=ilTI!ZdIpAqC7}f9 z1{a_Jh8mF0DKiOyx4uG+>pq~Fo14R^pFWjQHKhW6e;*Z*=%hnbeutQYUyrfR?>v4% zt5j(si)!JJh{N1ymt_NYuHvAuw?4M@pv^(G2;ZXe_`&|KG=Am(t3rRktbR+H~xF3$sE z)QqN{tZ;2!=i9*YwXxYL1zy=RzRQ8mxmhN`pHBn-`t|wBV-c@hW1;{mZth6U*m>$jjFyd`Keno-o}-6{9A1%=lM@htt=DVW;EiLjRT}vOBsf*I$k2?9h%Hkd7tL7N zP2Ii~ll61u)T|}*+%0YUDVh;iv6mq#!JSsS=I#aiXEIiLse#qbk#6ah+S`g&Uolhk z5ekg+;sAwZ>{j54l!9CV?qjy4WTwqP&{J5tLGI@B_81``ycSnimE+q^z$MoG_=Mc?8yZLoLSu!4|T$S{e2q7AksQj(Rwe| zuk04I=`Og5+|5`&J@I1~6`l`@EChAP2jtukl-75OdADgjw&-43(k+5FL~bBZpAlNp zg+E>Z!v^2fxPf@%GYvzbnG1_;JwNq0UN68RV46HxjJaH36*{wASsz(o50$c{Q=oI$ zf`Kd067Jdwa{X+NFHT7Ei37(bZJ0cWjAd8o=)#;y&=qU><=^$EWWxvMe#T_OqB=FY2U~6_Z z_-o$GY}45MEB%gF!^slt^a~z-GI9KF>%%{0NpJVJh7nUsN0N6g-9V62BC9fVm5xwp z9M-TyoA|;ob8=bC8zPGpSh2vZ2Ex~zy%et{+!l$I{QgBVGc$8%H_*>tvh5VlWoI5; zz{5mAZf`MW;=@OgrUC9cq_~9f*3oQE@k~s;p5%f*8@3TmP+S(5<*2mM8tis#dM7#3 zvp32}T;#p&MeM3k3sdh%xOQKy`w{CTlE$fMp*(H|ENPMk!g@{&tP6)5%-28iDE`gI zo7ig;6+%*g3mf_-5;8t+TwXrtxCGA|&v=^I8UD252{}2^wmnjU0VFeuv2ggt`ufKY z!l!$Lk4V$-prWsM55K5yw6~MI8X)2rUnbq2tlDzkTb7cV$k!W3#K+C3+_#WK?g^3# zxmQa?kV2tQ7+{c0-Gvz7U-Q0cR&b@OIAkehbfS~B-$(qm?2V;XWViI|VJwI@_!&><_HSPq+5&GF;P!O%^umH!RWuqKFY)FO=(it8 z3hnMLA^HLrOmeEi!;6D6K;9-ycE7>9W-LWYb~V;3;p{s4mzOVII5`h$=8@Zs6}xUf zOR=Qu?JaXKEn4Xdaw{%2>Wfq64>~s|PUXCTedEgpN>uLOgsNw@I?&yO78$Fk_FI-_Wo@Wi zV81Fheb{7O4&kv~rl3!Zl+@f`VG9zY$jCDpa(5q7%E(U(9f?p_iBdc_9!MWR&Pi~J zuBw?f#rmmb7JnXM1F3*s=o)NU@SS_Ma!w~M0n4^WWZ7Pk$>ECP^n}Crg0tLQpW$I; zjfW?p<9SI5h3hrbR@@b0fm*$a=um+%L{8nfnD<(c#vmD0A$Q$p=LQCQ{_2AAf$Aa@hGg;;C{NIPR&h7U$f+22Gk3aGlv_i)X_4AWDXs2Zvmm<**1z>kn|KX*9NU=cRe)3eUBSWnRa}FOfTdTt2)nL*F%y z5p#P<^vKMJXmhh@c6QWKJ7PJitP_Pv&J%vM5gPy6h)#ILb0L+zISR%%vzK?RR|H%H zQ9-{y^K1dWoAz->8vHdc!|#L(H7ADFF1I&%Jv2_4nguWRW6aF^eW~IZrew2m&eZ#H`Fbr z3!7N~9w$Y{^RUx>;`W`biPJCc<$$Jmecr8G-$1-#DrKNjRc_MYRcA`&tluf5Myuqj z*u!R!ozIZ*bm(7)S7Afu!MWp5=1R4((%|tfSIyBZ>x6%|+XMQA%ey;$7F8TR?$h4` zPN#Rfm`J&Q5*9&*?s12OhL+iux}8>6IK*#L*J40LB^6u@re7w<$@G*3%Ep~B1B^dD zUJ2Ysq1o6sA9Qp`GSvO@Q0<+_P~}0)UFz;? zx0fnIL|FI?e9n99E<(1ui-D^5nv8gp+ucqD)oR?=fDb)3+ugY{HZtE0&kTXW7qv z?mS=)H6O}sy-3Y^SYdR(Ux$qR#}BrVnI``da`HqPL|7w}Xv1HTBIA6-fWXkKAiuak zU{`-4x zXpYNabqF1<)KYt!67Y5!y*vgZDq}}~xd^QvNLbl4EIIkC>d8d)IR$^^SJhCaYz>yE z9L2AqVY&6zNMpDkL;9zIUvZcl(iXIHm<@AzQlZ~Lm8Z3DuMr5_gwg4EE(D`-he@iM z{ReoVbD-0wz_O$Zd-NY~|Nmi{>(C}vFrW;QI%K5(H0<`hE8iR$p(yb|@$1#?ts85E zr(vO){rxa=v!>TYQAZg7gY;ufA=@L162@!p%6al?J37=SLS`Rf8{u7Hu{sEOj$)L+ zsYqt7M!EBTXE3EyX%Xb(03#&pH`=7yvV?AGZR32#wN3eXk-JT{UbX*%B>8bbKDZ-A zweY+h9bj3yIy&wLVpXMs9gz78ZH|xn)fxM%U|hlHx)?I#TFDm~xDZq)kyb{dl>E{j z$t^4r8(Ibi0ax*Zk5eR! z#;_5npP&DpdXoR&Q|F4sWWJe_MRAoZPz5kjZICELhZawO6y-r^aqv|h70F&svjLH6 zNmdxO&*($aYzWBhivGS1+)tzRY`s3bV5sRB6*7KoUkB}&ogiD9I1|&rM9TbYk|~(* zR=?}mWRVf9wZv6IuiyzyQHmf{R#rB1-h&We==vx| z6%Q--g|-)L!22J#-ORPU*q|<~)K&JPLiqi0sVjSnQ(^E%v=xnfR>kHexlqzjaLL_3$1~ zXu--}QMfN0Fn&RA`0OWK7rTZu-r(Y%eu*NPDvJ1+)Yp7JqLkFRn(fQt-154xfV5UI zRKuoweubTVU>ge~CZZr>&8+qlt$^4Us|=;@LhP>Y=7McQPWZeo!)FUBR&bZn@}Wdm zBHoh)|Z&P{woB8*RxVej^XjE33BW_56zXur6H(0Zjs^N!pt)o13?Qd+1g_ zKxX9mYSNrAP8?!1xvwIgJ0>|}e^g+#Q5;;7OVoLRclySsJioZud?Ko%&nopD86M{Jwcs+F2v0~$eJt~KFV?fv z`)pQ$*CB$){E5P17SGATXY8@Gtj;Lrq}0pGMz(w6fr^j!Nd?|(%mEgs5gR)+ZX+8P z*@ujriw*PrebmGVkevjZ8Z{TQlFazf2j9GyHa7C`2G}$%GkxJ zVjz8PW$n8Iod*0Xo6!8(`_6*9hqa4Q(M2DLJtd5(ZpIOKP`R!+(9NS|@bLJn6EgmD zV2K608!DTlJlsJq2|3L;73E-xz{o2sLUS>}LdvMYH>Q{SUG{E-i|Ca0CCubFtcqQ8 ztb+!W%67Ct^?(b&tEYad*>>kUBCHBKB-|m=4iuLQH;(ZgT5=>lD&WlF>&ZET;Qb~L;>Srf~V(9RY@GX8T=VboZHmnyHm({ zh`_<#K9;|E-eSwj=a1AMh+itc*01@H0YBDz?muufRlsjpb+MZCkp$hZW}hR=y|4kKSI# zURu>M*^SWl1#1i+)AUsMXH(!Ci`PO6RdLApaW0IFfPVBk_4cyy#(U>>T_m$m?xHnN7PB0e{^^$G z!!2h{&f@hS=rvSoel0_7)hX7tNWr6zgm(r=+)z=`?1B{t#f%^qFe*w|Ru zm?#xp|0GJ^K6?-A54!F)UKE6hY0J5~`fE?eInfQ8%YXm*cS!#FMn5GxJU6ZR@x6ef zKvfVwLEw{g!RdGX9flPU^};$Hk%nqQ_ zKj!j(4$4xh-e5$*z@q&#NU>;vdT2jzrK;+kS_CTDbpI1@tV_ED5WQRxt+?Z}X46__ zX##?1$7rF4gZZmExJ460JO--m;dS?c6QR9iM5>PqKH7Wo=MBm~>Ypeo-{rB>@NWUW}qU}H)w|8XH3+~?!^jY%Y<_v0@K172NB3MDYu_X@4%y8A>MeRsC62c~A-PlHNV zG`4p!=91L;F30ni^jFlJM8_(_G}iQ@-)eeMZFhux9((HF|Bt*ww7C zOW;`TqDv<&Jw*aXt(@@%kwZ3xw6qiJJPX=I$1?|bW|+-u9IGVRSzIeh)J~zm{^$1r zaXyH$$MMA+Lwr5|L#SqfulCE`9qA(gn!w3IF3vL;vVx!m9nk!NvQh3l)$pB*2Gsr_ zM7GUdW*?%ZVWYY7Z%s^04kTGGU)+x6&k&QECw@@RZnmMXOfd%r3e4z_d{1{>qef9J zS5aifW<2q>BuAnnOPAl|$YF8ZICre(Oy9TA)_=v{9h zsn6&+mb;9Pm+SBs@c0NowR}Q{pdH8ItQqDi{N|mI)yFlZ{Y=U00?K|<^EdU)$E#1p zFqF*ul9*)lzlRBFTh539_q4vU_OfG$ga>Z*^M&P{AuGwcioadwi%0JjeK&^f=6t34 zyU+=V4Y^egU&Yj%Np|a+LrG;S>`EqWdD&;go~rje-qmt-D|MTSL~G-WtCYTzdg{|- ze{eu7Sd->-e6{W_4&OoYvpFaLljJCydJth%p$E8(KeN`H6TgMddY2#ctTu(Rw{GC_ zL29ORK|_FQbiKj++BRPDL(O!Yi`QNv953VFJ$nvM?nevl5_>HB+RRMmT7{KH45$h& zuRPu@zAndh>>6Z z1!5v<{{zJA7+8FP>Sm?$@NfZCc;{pEE%y>bP+I0yTkU8b{NmaSdJ(SNwU>0`y^O&5K zBy`wrqYfleO^~BetA)7IFEE@k0t+nnmDK6Yf^|g|;G!UVKMl^ovH0vsTL^Y9>h>mK zAhZWI-qlybS95VaEtJP&qtC2kNo^ zqCYBonw}x*eO(%77Z#MJYOb~WsYy+m{BZmudjeN;0==b;qY7I(?O-Cn0{WNr4$T4~0MDy(uScpKoh-)xuY#E#GQ3fz7ICZdUzdSQrYWKRiF^}D5WVSAIG9Vn=ovy} zw|)nJRn(n1?8rtW&A$mE(Z^6q;Ca;f_<}(Y0%-rf3Nx~iRJcZ~NHA71?AGtKqG?3l zmW?toun^MuLFc!ew8*fy!{u?Tq_ISry;+pjKPL1jXPHG$Kc4QhpNULds#Ze+*9ms2 zt3GOdqPnG7hyuY2b`N;UTU=apnYhlB|KLsXt4n)JmDKsr(Q(M8095#(MyMLki(@?g zS$~-Tmy^kWscl|%XCFENNDuNTsF4N5h zT3W7!qg}yZOe;FUYwyj<4@Xqa3Y9f;Km!E>TTN+bFC)jeSaQ3%&0ZTJaj`s_-ywEA zv3y!wObC~Ux?t4x&Kv!ib0Z%0c!LL^jc*7v%@|cbPADuYvIG53AjYjhavb(;Y1EyTod>t3>{?2~nKPak|+6bXppG5TPa?r>qzw4DcAWgOH zO3piLg}sOZS$3|-1p)m{-Y|elRHH$~?ul8~H`+NbXELqAXcjWPlzB`|pn?n_O% ze4>-%2p76yK*;f2({0dH8vyIp0{MzgUPDfkMfZOOG3WPcZxH;nI5v*LQ}POQvn&Y`<*rS0&o_F3?;AZ(tLOz z0wMh)JZnzB5CK2t6(W#W!p!voz!b&~dYGQeLnN=fz<(uWPDxT|psk1AVS|LECFyny zXACV(I#SVYXo5?!cc(RuX73?el(xshw~$aCvk82AZsX23)ru>plN8}osV?!>a7>ps zEcP>)?w6=x>K=f^81Vm2-H_U)16r;q?Ch%zhpweF8?C$w7ZS``cYDa|2B)tjvL|9c z1BSMqp_GJiOEN?9>g;3v!8-pMlw@zFC!YC_97`U+A=2>6N^8TlHC7357nR383Lg#b zav7M9Lk~RZK(`f!zxmhVrMm-GmbSCf&m4D$gHl-t(PeGPj!E^x*I>iyj{pj{DcJ-8 zT^hSU7J`|oVtx*e0J}0k3T4>Q116lD71;vaY!Yy|qD5S_JIn)^SHGF%+;aK;Ijy2G z*vG$lkV!*;3O~eUy!fAE#uT0XGUkQHD2OeXXUahG6c9~zeBVyVpdouY0glBR`$^kDV9(0!5BkSHJ5s&!)e zml3NUg(7F|B2=q48zKIC@2VG zY5)<(t5QoHG}1g2f1n@x_0hW&l%Q5b`Kn-cZB0su56EAVZjk1s;s0($3e)2b!;MqZ zIXXU`x#y30Re?wW(Hf=Jk(``-d8)Ry7W9{4wY|9Ygp~Pqr99RoKei%e6y zvV=C)Sj+-ipr*pWzyJ~v5<%C}X#of~r$6HC{x>M@l)|B71p(=hy}ujc3G<~BAu zJbcJepiM7e$D3GJT~i=3fsP>kUkCs!4H_C+U0vO*Hx24EO!~#ZX7z)sna&3=TGAQg zUx;OWesIBMJOh)yF`0(;jJ6gDh>HSyIhACGuGHOTSb{U#aomm$7aWVxBLA$S!)cEkuq;H`WG1XYJK3eOj7 zCHnB!`+ev`R?$7}Nm&(QEsTFt7&*d97ok7Jvfd}Brh=ADEE{^vSU=xd;vy6pG*7-T z_c_5_8_Qv<1=5Iuow*QDHlaW8pvulf@*;3YGo5ne=NgX}=mailBx1F%VU(x;480L- z<+YHG`gX;L)u=bQErJOvr(WebBO+fL%i+PphXT%fhFWFvV3%)PtvlW(jMLSb(R~5KoD;cT=xFqOppKWhd5f53muR8JHrGG?NF)NjAj;;0+^K%NqH$Hyq=S+jA z%1p+i2t^}cRNxGJDr3F&_bvf4<*_Kc2dIj$g)^4!W>t7Ef#zQt0mB{J){=sf!@mj} zO4EE{Ag2MCKz{{5{C*rM12?M_tBhj%J9kJ0s{!MBqv0#(KUjrXDQV$1Q!F8%gVWm5 z7IYWm)?h$-Tub-fVJJF(CYb~2ribCt*|=+Xd~^{g6{Tds;eQotq4;Z zPxtrrO-$5*xCy9RfH0(YVW`T*!I~5_Oj+C8yYDUc)O%v77n`n3Pv3<=_K%n13#39< z+v9~iT0?1pWHEr4iG$7(w|=6`0A$smyR}y@UUsIoOTY)plz&4IyiVdG z(deS~GUU1UvE2cgYKtBHfWu@1pZcVbppSaS8m}vk; zsi(WbDDw1!Wq$!4n%2#-ZJ#MWA;uKYw;t125>sq0B?s#Rp)6CK760!N6YC8=thVZ| zM4C+klEF+f@03%)A3WL=q{2(I^8^u`xBM-UGo0jllhH}qox`~Syh9_9nBWUGT-h+D z=OxbNv;H3VfKGW;IejzRs~_J6-nW7k{nKD`VPOF1j_6ggT|sl2?J>}+`VieA=3H<2 z`lRM;rwuqjOiWBae}CYz?&IPPQ%c&kOxdpXOC|sF@v>q4Chlewp}0}WMN^+%gf8ucXTX`iBSiFss+%Sq}U0>GoS}{w8+F^y7pT1 zZKWr>FZ!le(Qn>V=*Y}uknFxeD(Kp>3UrY`$fe)lg*_hy)PBvP4A(5_=zc|n1-`I} zp_*)d}=4oyA6BP3>`*ss$``0xF5~{YTpX}hOXw@ zbQ@OPU1#VwaPZxQcq`s0_IilTB3DB1QH>NIv zFdTuEU2a+T?*OevS1eBf5M8VXtrnV3oLmV_ZC|}2D#Q1?tL<@Kgg{V3z7E_K3k(hh zQqh2id_bRE_Tuyo6@0p4tNMzgI`FokoA*w;0D@Sx3t;RkKSA4mCKNPBZ%x(6t^i$w za)xq%3FB2jnGSe`68d2Wj)`=OzlJvqqPc9i9!S)~c>tH|H*Q|E>UeTOxCskZ(U)gV zpsIfVSlV`|lgwX9wfd5qFPT}|8#IXH+A;>!A}v?0N@4XvO{Nx?D63EZuB<7xYB8_y zcmj~B!Evrh=qPrEl(fr0&|`0vgdR^wJ}rHmA-{?5AM=yao(||Pr|)o?4o`!qjZg9D z(Yq~JDQ|{y)*EQb3*tf|cEe`{WU)6liUzpzQL&?gdxA01~2@Z`x zU1xqwkCi_wjezM130&uMz3bE=RUUiMf>6+d3QJE%yi`Df%Xvyj4dsilirGenJE(S- zJ@ev*1RVTm1-_xHW6e~p0R>%(Q25IOxo3z8VH3%xBPtb30`Vy1k2mz z?irw)MS4?8h08fNe_ZjE(1CbO2|^#$`U`mh?ha`bFgBdw_64SVUy4A1U&D zVP~N&hSRLv?UYk#b08z4rsfieP}N#yG+F@Eb8~Y;9s{*}APJAKm)AH%Z)YvE774ot z+QewkM0vvCo`=CIx{I+jw2VaTPP}MdY9o9jkDF>h*@O0bPs+(Ojy^ZcW)I_5vg_ZZ z8yw`aK-L9xle~1<9D4c8vZIbW)-QI4kWV3HrGp8^AM$9TPi}gt8f^nb&hfTHc-NN3 zBlmkk@X+#ii>WRl7BA-y|yhPJZ}-o9-kCB5Yp#On#j?;B#A zI&8LwKgZKGSp+l*t;NP+Xt=iY17TiEup0)CwLpYz2zm-yU2}ZzQ!7kUm(<0O7qUG9F*>tJW6S?QPu#L7IkpTh?-R6ygL{HIc@xtqrr(OFeh0wd8<5sYDm z+Fk+v{z;@78XBq6QM1d-Kvpi&dO7RQl$e+}d=ixPxCYql;OyL-h`E=*M*whVG;R^% zQ^O=m2RO`1nI{&mC~a?o)uhY2`=wgb1|VT4D+bkJUvhkMv-AL~v6 zdH$pu6J}fG&e|G}FAqY1fWc?CEn1^0=W=UvNvpI7Fv8qZ4|;$oI1W_G_2SFRbB>Uu z)nZ$;^IDZpX?mxWJiEllvpTc)E(2a|e<02$S}@Nm#h^aXy#!Ahkd%`0xIA~5DN0*7 z-KwE(6ZVaFKUw)s=7EP_b9M;J26}?sMH#JWnz`06dR;Xdc^Isb3E+}dAk@Cdi92XZ z0$P;3);E|~SZMp$=)aw)@BlBQyo8ivtpU(;OiVc^?iV?_ijTx=@J@&J767WJ{MD+X z1l0pX=BWM3%$#B%zvRc-S{1iw)aMI;2>TmwUu7bPcbgD#7Mf3=>*)N=86w{N)#~#D z+BDP^NQj5>PQwQqz}kgh9XgbJS2ijJjh|qq=pXy;?bhPO>4$k6qlpcI6$G$9y|!a2 zD&oy;$0U4|6uBQz&kPCqr`2x_7FCFDde>&EzWbZji}eF#)5EL&FOao7*n~xvzGOI> zAjA4!Xgos2jxM%$_m182KE75Khsm#GA+g}=GQS|n&1vnRXC)0~q0 zze3SiO=bc{L74tK6ruiAI(@I0_or0k|9)oTbOE3@P=-Sz)#c|mup{xDlCWa^qACB( zYb?T{lmY^7>EXaZ{RHZ(%kwP{PYx|lu>c~_!1w&uH?!)2l8l7kQ7+Qt8|+AT;a3V4 z{%0;zt;QSXg-v|(#tqQmJJQk7(b{T!g>H$MN;5?xPg!@Iv7B5on6q9LMFRyU^AO5j zW@KEVq!@DuW_;%39?D;N2@^gToF|uY21q#WzvnX6dl%c9CZ9yJJ#~4(MMIMYh6FC? zc)ma6jYG!R?ndZT1$s2jx4)CsGoU3HH0|Ljv08UD-bLW{Qhs*BDnR1N=dhU^3q;t(9+ww(tNq_xThI1~ zwBt>xn!qX{fVWs#837IjJd5O~7u_6CJjV*Sa5``sc0aPGA>BT1gHj3#x=)nbFZJ@?AKMZUU7JMTwX`NlPfLA>vEL@5L;BvEH6JGB9cVN?i#$8GgttTQBg1= zPROJB=mzlLz2$Z$E-o%)WbvRGQfR2?4aqF|YPevVAqNms7?~^dFajc-TT>*4pYG_Db zJbL_iri`=jrI?ugO78-2HQ)g*0%cKDGST310tULeKuWa)ywwFzii4H(%*rxDK;i5} zGXD5afu{CGLq`l(U_EI82Y4<=ZgH_7c%X}o<`Y4W5u~G&le~I3mCfAR+Ns7Vi4QrY z(--id5@;;9yz7$-4V5nT0UsZqpr9b|%$hhphis$1RFDFw!t|-%LOg)4pNws{G1Z96G}L~JU*o+8S5LK}TGs^)+Efe- z>i}xb5-Rvk4on`4<5!K7abk)b~*x6 zi~&?jjO1W~Alq|y7fb=t(7M%I(}&Vw$VH%yR+YE6=Ujp{hQ<5G`W@XsW|fq1Wsx?W z61ataTk?lIzh`&47-Mmvork~8ew!@1ZtJ;mTO*qewaZE`WxA|?!w#4ExVSgaGhP*l zT@ebFhfx*Y)I2z>lxMQ87bQYhmE`}Awzm$eDsB6Q2@%Ca38kb#Qc^;syEi4RNH<7_ zgaQhJbfbV9WP=FOEutubbVx~wl!SD{du~w2nR}l5dB5-YzWHb7U|{dHuC=Z+esNww zw~1J82R#Ef%xHnXGLO#lv5}G5_ub`xzuS%y8{G>2n!CFKapkw(9xcEczlnu~9Q8Ac%o=lHApDU|b_ZFC($N&#=iz^d^5?*=3GJC(7 zw#Sz~2d8lb9^aUH_84spXVsBtf8ec4#gkr(0(7TfC7eneOt!psL!XxFr)D>y1$uVe zdY~k2TPZ0iW}o8UIBqc0i>SO?=n1!&x};-v2BAyO z69rCRm0fZ{m;9aNWHJGy(uVUBdBJ~H_v7mQYhEE4#B%~7$d~Vct&QM;1`Bxg$eV_(aEX#e!2;oK=US3t9q0KOnMq(2{hEsT8vkAKN#LCd) z0k~DI;;8!!VHywopWW|<`yOogZ;$M35AU14#!rcke&>jk8ei{$ce1Rk4CWNjGBBu_ zOsMx(5<~n2$M!x1T+|8-C}4lz{`pQ*EGrCSnZ}y=ocA;&7D$8SIMmo?{_tw^m%vW11 zDr~fyw1!IGCVts)$dJ3XRscnQd-Jg3&;KgdXT=O679sClpqXBP3iZ$y>->FNEpx); zdHNj)j4ZnLOd42##sTgJi<8z1rVCs==a(;Ef>}2+9-o9{OV3knesa>x%Bsn>2b|-* zRql6~S%-#(2zD5`I5{21-aUNr6w1^)i&C|aUQmSVmH}N4c80F+ZQO=oQUwHdRf|VW zIMI)MOn#um1`6(O7=4oc$}3R46@f56h1-eCv4V21^|Ol%w}hsyZ`>qq%bM8 znCI>7?ZJ|~(`2|;$8=2d(c{zy!?{$QZNf$BX9P+WS``|IBqSvAw*YXeabKoy`pkd+ zt`l&@t3PTca?Zoxy)PcoIK06U6dyui6wp;Et2Z@$0?Qg%{Zz3nT*Mh&f15G31wyL*~ zkE@|iE7S_XVPO-eSG9WHLTy6%lHGtqJow4$F>a^RtljtAnpRrJVLuN*ao~FEuKZ%~Id+i*I#OS#;BjDTx9 z6N%)8Ial*teIe<4Jpg-|5g29W|6#8 zf&n6j^e|9FO7$Sz--cG7^+C%0s&>gi;Y;Y-`Lhf|L&_(N7^v)=@Yh?>*Z#Ls4-H}a z_sRlW{BCy{uEqMF#ceUA%Q*m~9rnH8R&?E-mB{(3ao|IF?VAnPXY9npKWT^97uY{z z36nw86aKoPE1(ZIe~P*v5D&{QN&v8Zq`cNYR##US7a=(} z!=?v8<;d@%;$W%3Bs{|Hy$EJnikTtUmyXJX-<%zz(o_R`oD7_r1CoXVcQs z;0Zhg`BrDjnzuKVCdEmjND0X5jtM>dVQv9K5U1`kk6)ceps}Uz8Y@S8g?2cBqLyU{o*< zSeEFo>Y8L5Rc0N%Ag6vODP;*`QKCQTIn>N@n*KJD9DdGDLcEbCR278<1x#hz3VKL2 zGy`+U?KC?TPX44aPH?WCR3B|K7!54QSptK{YF91#9V9|y zZGY1$;7R^pYZZuI{lC#F1aOCr3LxqAfx^_FH}8PFY`&L&@d4sloA$~0D;XaeH~<#i2nuX% zZ6+?w=tRCUCjpnkvg2BTf_QSU`XnN1bYb;-N`-@xAGmWA#~9$#zcO*-OX39g4)mBF zZRI3-Z}qhnI?qPDTJ*FNx|I^1HqAFO7s|jMMcS*)=%ql%gZI7d{reJGuS$#WB}XKA zOqeO#e)~`o$#lVnawGG3o?*F?q#3MCM88$a_siE!4hp2h-Al(86Ck**b|l^BvZCg_ z4gx>MYU71lav->D%2SYx=C@TnDmd;#b2AkZiVU;52qxRfE>^%q?O|656|-_-|eqGAN1R>>0GBs!*eoV@mbkfDZshB zp+0Gu9|$8n!u3-{lnp3vAgfC(apCe|Sz;VlA2N*SOBZLDDYt1YO$0x5?$l7q{z+x>JC24!^S=%*7d z2vZG(L4qaKsw>v?T{Gu&N>`4+ud7F`5+nmD{a2g^7PerwQ6Ka_ON?(bn@#b8En$$A z^Ll7xQB{HNBp67Rzvo?ZisXErJ5YC8x>@^EdYsgE^{tw#55EDN4sy>r+vX2!dT$mC zQ$g^|I^-6GH3PPZNRzZIGEhx}Sa@vcNYJ=?LtlOo6}E#7x|WVX8(EgnMwUu(`LsJc zH{OEt;`I=U6ebHOoqGKsHo(97-ZQm@_VY(_ky5wFgPV^SatC*ZNRxwxgkuOLqbOyW zxB7x%KYH{J4q84&Fb1i8;<8?Z;iw}hg;dBA<7))adQMs}aN*YH=T6$S43?$Lp3ume z`*xn_3$;xvRkk?C!#hlWL&T%CU#i`*yW6I}F_`NK-Z-_lvuXkU)2C86o8&yVU$*c0 zN3L4swU6%D_|)KL|8}@+3(<=o9qUKnkc27OgHS}BtIWaa%hq1>njujn-2mjVB`CrcxLbzUp(H^Lu{`yyTn$ z>pGJj!O91ruDZX=odPD3!t z7&N90;-zG@gjct8VZY?&<^lofdNJ`GKPX182oOA%1vPi3Uly+Aw=tc29wV*yi)MZh ztM}g?zu+Phl}6R8B|J8?fo^(!Nkb_PUQ4k&yPL-ZL5uYx=F(H+O#!WYRx;R-BuyDB3+wW0TW?{M z^8{^od6%(4|998-+SR>Qi@$FiUAf4mHKqhprB{vvO8n!_+K@-x-3W~zS9xJ#8h#hI zMCHq&xLxJfRz<@SZLHVLthn>|RKV~xz()AJfjBoX8j{(E>f6k8DAh&{fFTN4(0WqQ z@@E$qQ=&%KbXXQWmX!M^(@K36c6`FE*#;|j#RtcJ~W04m>vvx zto6g*@%oiI%LQXVkiPq#A!M1Vp)MIO;_1@`;77lGBc!0XZZ~vo4T`oyXxL~TJh4b) zcObj0G@)}-7M2^=n(59#^WZ-}4fK<=aR9kKSr7*W$q52yP2ieJ1~$BAEuag0_aQ90mH>JnUb+?eA)8yUN$Ku1Rx;2s9F zJDYxmO1g&A$_z@akBd-X=dO4*lprUi|5MTdUmmY$0V5@WBFDzY29VKU{o6Y1y>aMb z{;B_nom3}c)4Ksxo}JwS^pikiP3?SvioE> z_yDm6mR&oW2-<$hF3>+9Ob)&Qo^V(v^u#B$yi}5fk8m04 zV)Ssq|GC6N|5f0#f0L-Z`u7E}XEK8MH(|e_>_5QbcQAd2>~ESCK)iBJ`$TB1l+6w& z4L@ME|7jOy9wg&5_@j5g$Vjz+z9jlyikUfwM_Q@#HAtS`5%P7P!JE5gY#fk8n)OS4 zs=#it!opwx7kAzu?XTqp zRSVH9BbZf+3x7~(pW-AN!%GHH+1sQf9V*3iaR0Ekv_S-vL4EMm)VNV zPfr&z?UhVGp9>?oPJx`%>`o1`B3M>tR?yVZ>$3q+uB6I(V^`DCVX)erX&530gT~(H zYLbH-l;pv;&Kv(7#2ur83iDB7VLXqroc`JN9p_kjSHjQbxCyM5N;b>E6yIlqlOmsR zb?|E_joD^YjLF**{kGBE13OdW7MbRU@b1*j&REqk z)agSvj4T#(RIS(FNu%G1hcroJG5&NCQ1OnI-2Uw;<*y!oELu=1W@rC{aq z-qZcJfd29?By(|n+6MOSOI8+p&4zz+FaVv&9Ji%(bP|Jtq@A2rU<8@0x2&wJm>8DR z%Gz3u)ATv27@$3`+Vm4JfvANS(8>-e5H-WNbA5gNwCgbcIVZ2iV=~1x6~?fg4C(9Z zYs& z#ctqrPmE?;Qr6@|#5LZ~`*XruyGNfGs4!+#;HN&w()es5^M0kia$m?|)8kkRY4Aze z?MG8-1j ztQqE>1Cb3QZ(*z*;P{x$Vq#)2ZascYR8+Lh5y%4-UrfDn$ABV`&sYqU%mJ+6hZe!C ziMgDkq$R{Y{xnN64N1LB9aF9=4>~2O=453e=}+<7v#Nb{tuZq@(b3n=E|FES;ToiE zYci`Vh{R>iu|OjPQ`r-;qImLkb=l@_)kc6+4je%A5A~h-o$z8K$EM=izOxqHuMUr5N{!#tmi7I=Z`W)~b#19T`}ZZdA#kT9l#J z&F3?1VQ`Y}?-y@>Ty^%2Ou*$cDLeR4dsJqgo48^{6AxwGO(tdOQWX1=M(7AR>n<~2 z$$|rot1@eJ*#*S+$mNk0T~P2SAyiQdF9-+- zFd`HZxsN+`!%m?T)6^tF;$__$Rzm~S3~?B!mAQd9ZDU4SVc|>tZ{1{etK64wMpTvi zBB`~hP^l`22=@rNyY)P7eYp>8%FD)8To(7jr+Ncx_Eb<_Po9=Mc})@3Mo~b%t10O$ z-mcG=w<@;=VKBcJjd?FnAUm1Zxa((HUPeoQLC$~>%oX`7M4%V z&8K)Bb~YB_qyi01O))kgH6Me(1!PaMmbVzkA%rh2F8a;G+$h$|moZZpmzVF!xg^Ma#tr_;yt zO5}x>WY4qqTny&*B&@t<-Kc;o&5+@NHy`Q+oy6Si+_SI!FNF|FB*qg9j?0$Dw{Oea zQrPoySZr=ptdff4WtAPtVnC*=`z+e37^`uLX}LZwo)LOR7ae|)L;PF(c}+FO68^%5 z8x{2F^~`M)^oSfK{rKqcYRm`cH|4IaIA&{XH=m(@(_4joZ)zlY^wr@z1xXBq*uEpc zJ|}RQDZ#vAzbha{e)LE|QIYQXHyD(kN`be&Fns3NG2eCpK0aDHI&aW0hUZ|&0hvlE z1_(OvBEA+RS8Y#Pd@lNH@=&I1Jy4|Q&>76rA`Zb-SY|pS|Rn?4c;8ai~yB0+j%6VqRJ;5hmqZ51c zj$hb{(%9|=b1sIld(ZBQNd<=;aY{}+^EPn9#~QE#hVO3AeKz#*9z`Od`4GxHwVb^L zv*mqRRI;+N_+017qOQTvW#_FG3sd|RV2RKN32%?wyP5-}Nz|LN!RpFfnd6sv|kC`e-E~Um6Szsazx= zIVz15ay6WssEv(H zd=b$!m80iQG0HHpQ+cHmL4bOs0B#}!ugRxe_XtOaLcJO^iXF`3f8biQBTC99Blq5W zG8ILr-7{mT=f3?P<&06+Oa3{Tcol9yph57 zvU5{3=(}?$46#R0ncBV@G4uH!enH+@HehkbW?#;O=i0 zhu=k4{OmE(KQixKGn)*PWLD?<2z`RcnMN*E+$XKu%~ zL`2amLdI&!?Ph7mjZJ}}JbIsUi}frL^2+*fWF=ePGgvB8LkS{Vqud4cCEt}R`5-5Q zed^a$2}HJS$c)U&4y#=4S4#&g!{{j_wed6SV$ksd%{SOjtnnp2J8s5^(m^WSq~?#s zi&2#|+4wQ4;$`^*fTQH=yK zw(N#XxO!Wx<dzhyARX7QpC8d~JD5BNoC}CRsbi|}r-VKUo-?gUet7bN;1j)`q*7%MZ)=^rv}bxVm775Utqshn z?7IS?NdMTdpReE}MJA9KJA>!}IRq?tmes%>Z>S(8q8w zS}41UckkYbBo2dq1|~04>M#1^d{NB^#Qs(L%26WA%J^bNeA`k%lLW^HF)}g&yLx|R z6AHVW4c;T0e4LyGQ1`-2@C_h4FA3irEV5A3($b1wfYu2p#KrNC=g);xoYd7hntA70 zl?|WKaMvjLNe23pr0=mmsq5*TWIP@Khfwg@&&ID@p)3HMyqp}~%@2@6-K6U)oqNf` zKY&0z&!8G_)^UH&yCXiVwlc_FT5LjI87V5>T6dy!q+p(u%=Gr{0q*M@-qVRAS@CW0 z6Dt{p&m+{^IyeruE4*>_Gv%hOPZSXgpk};OBy5s{Ko$+twt0kGNG zw=BL-MjVfdizBW*n|id89beEtQ%K?Q{ZDbO)XOJ?wX$U;+p9E0zd19WArtN!YLBQ{ z`OX~~oE)m$l?WmIXyl8hS&B+ZpdeBJ{Z)nQf)dm6@-mg~k)ubYt`W~tX8o>DabHkd zJhVUQ#6Uj1qbT93ULBtVC(_7prq}w;*8HHZfhYXq%!`hEDwi-?HRj8gsX`vP!8;x6 zH$9k@$!qN(6X1GfMMCN6bwwgS)te4L&KpNW&|jwvPbhr+__U`8#w09*I{`LA0L0up5dLBbAjbL%OVl$}x@e!_eSe0?s4G z^xeyG^`Lh$ExqP672drJ6Ap=3C@oOw=~zrLaj)_t5LEN+6?+{O}Am>TSBbowL3 zWtpc$!;Ecfqhn%3N&R`O7f%PWDq^26P*t?)JtxDY@Ck-$i+=*jKe8SUJa|L>DU5~F z$W^uaf_7&Xw~c;AO(E9137FMr(Loy%cr0-(KQrQo5-pV2=VWnmOC!`34nm-%^zacR zmYkAONoi@2R_VAZwi{+O92)@eS!`S!5USN#S;r9Q^BIt_8yjw_L;dW$cUvtfXk1M~z?B?2WcGK>~5b_Rl}g@BCA3yOi5t)mL+ z>I6G>B9=QKHF23A1mBELq;J)|TOqDD#dxz(r*y?+0?5yY$wTWQk&~V6kKI+_{5>_5 za>?n6?krn2F^v@ogcmrb0At+a>-$r^qYz)MwF0tlLFQ6?roYuR+e!Kk9}!S-TzWwut6L+D=^~?yt<8RoC=35h$up30@trr zXxf~ge`TuJq=`tzROL(>jJmhTZ|maVD&7cFYln*b!&`*#ed+9349@`w`FX)y3mx)ZRg%)N#(Q z&q|hxzLjzBjZOgQ=`cQwThkIo9h0pWfg<551DDn}Yd~dFi?G)4Ck5rBQOJDpD-uNKuvNI$QX~LPnLuqx8lQ;If%LsG-~2 zoPPfFhGJQIWxhtPDrnRn+djLDRUK6P_kBVglzFV(|6^^^o&~2KWE2!c>gp=$1Crpr7pNbbB+-|UxYF?k!r#*j1@8jAdUKn z9N8{*9$Y!P{u_RWtlJ!0ww$KpR4ZQT*nG@7hoq)0Ytg5rJr?mJHeG(QWjrM_cFlVF zH3n&E zX;7-Br&F(KnnU-I1Fcwo8WiAYAWmJZ_CM+b^k#?SssQ4^3rP3b->ceOfMd))e*6e$ zHJm*!rBsuv(b>Qgfww>~)v&^56ml9aE)KLk;T9O4k61cbHQ47h__)UhZay4>`rqN} zdyWtZ$jMMz(S4H)Ap)s-STt1&0CYj8$!DO&`T8{~E>3!eXHH@3L0jiI`4!zne=C8r zRnlYyO^xiz5~UVqlOrSZb5XCX$-V3ChOS%GmOWJ1TzzFx9T?__T9~**be$&8_e*3r zp7k;MtaN(xgONgTJPcPqNsA))rio~Tv_y#s3fv{&EW&B$hhLwGsU?euhyY=)pu^ZZ zbh~0>WMo9SNI*<1?&vQDmRS(~Y0Qw>+1R8+Mq-sMg9cwD(~kv;Llg{T-3nll{#|c` zo5O*M%1l(Lpo5)kNr{mIkb@P5hO5tL{kVd0qZmpgkeP^3WXOJdwe@`;(96QYLUz5f zd{|@#ON)#AicI;zPq6HaTiA?F-4||HneL<#KkruIwaGbK1i^i|M7_F93)38f`eQ35 z))8PSX8Vgnii^#bR#xtBAWzO=%E??D>&jBS{q6xi*lnTYJUa;|d3`S6nx?5s$jrp# z>LAeD_Dg-dk^jg7gG|-o_;QSA#VL}Bj@p!(vBKBpm;MQ3w%E$P|43%if`olCAj5P} z^3xVSv!g}$vA|3Y91HB1{j(lxbBk~bqBS3zo9TY1|LiWUeaQXc9!t*x!{@-z@UiuD zTwGj~hRzW$F83wlHM_5Lf8l83#AcN2Izsywuf+te6EyU|$o$%uUDq8G)!m-gl4@s+ z+Th0oQeyaHTzcxgc9Gjx1q{lGI@tz;IdCM-5dkVQ>{&*Lu#qEu9b!zM*s%cY6x)I7 z@B3gvGELo+KknVFHM%tIP3oc=r|>{R$&_~Z?AUHH^YtKgf@WPpb%UTKKoa?d&%C1| zB&^w{VffYP&<-u12a5bT8*HS~)3>WES7r`cke4_L+ds3JE^5ryU=dk3<%SwJ%3*@*^ zKaTosLB4TpFIDv;|`$X;k;;!od`}0#0@bqG07&*+Z)GOhYj;F-32bM zVP-RA0p|pfIYUfvFrK->-Fs(?pj@FZ=k#9`q1!oA$cz(~d`CHe3umYyo7fd!w@Oq5 z%qu83U?5cr!p_G^>qH$#857tcZPswKnTw0dxGN?<76J_=Up_;|7aphHa9!_}Q9x!2 zYWhL`bCgBxBW@gGH_CV#rFqn&C#xLZX=X1NP*)&Sijp1%-A`Il)G@ecC`87}AP42FId5Dhq!8lJ%XfOm6k{>urgv~RHPY1dg< zZ5qO<_6LUU5E2rKGBL5S1(F?&05dDZv8yqGRX9tls{y7N85!R{=i#PPZ$5sQiLeu5 zV!~^2lL-Rj1-9`z9Q&s>(vZNpK;TA`V=yRby$FwYe{cOY8ynk|rCV%d1`^QTwO~#U_M{)NQbtrd>=@C%~%*plDDT0{E}m0UdJ_-ouer{Yhf}7aWNfx0aYakMsJ`9$;rLv2l+c#4vU(HE>H=-dS@#u6Hra{&*cd?W}t^Y%{5t0<_ge6zQijE z&0yXG+ZBW6`MaWwYjK?meTBFN3WYuUukY?GO3Q?+_{J@)VDP~oy^eoeV%ZMwoevb0 zN*T2gTw@A;55g1{s7u`L{g5+j!l#kC9~kIpr479UzL1q8@hAYGE0mDyhG@i;)wX?k zaI}tJKl^Ethxchk(S)$sbdz_nf=mF7DME%R*2XKnhgJ;15k9^xk((BioUHJAN$NQ9 zSvU~06I?Il%uWxN*&;8>4l2hkMdH!W5;pw@JuVeVHD#lR;Cm{Rf|1%H=jr)Xi{Oo zR283j5>%FVZ+gQTD!ovPzW_NsiKruyc>RcjeyQFo0R186ks^Obo*eNNq0jjnIK`GO zizSQ08jJoSbcI{TV5!R3`GEd7M7kS)zZ*0rN8C2p`d`XB~TrH)7GJt?vIY| z;5YGQa4uxPp;5qyz;TlxFg6=D5`_xyS6Vq-m@R8w0?tgLQBX68-aA@fUynZWjcQ0ul=M$1u<?YxjVCwi$D7^Fv4TJs%(ueg~G(halpu{LVp#s+V za^&lSJ3AKF6?PpBxSr#v9C7Vx9Hf3CpMK$=ps2j~j9MGKE;ma4740OZCFCc4n#FTa z;~m1Zf5K;ItQVH2M4blJ29==U!D_&}kwJ3sJ!tTg4*kP_b{+qCqfo$5vBv)U1$+&c zYpE&V+2@!49P;fHLyeBQWBALf{`HB8nS6;elCUJ_1_Fp}n+K7}g(lK_1R-0dMlC(x1JS-tas+{t(`jk9nb`Q_E_oWWIGcRjg4*_j~GUZNDd(yhQ}|pg0J!@ zI&gP~7!BQ#Z8FC3u$eC3Iwhq4MM#gN4EsgfDek@^B&SJZ^x&YLZ7wFd-<`g*a*7JQ z9Q8^12K`&mzt~p$p6OqkkPc_?;VSEH`^NT4p;i{>bZO4&m`D46eha%Ile;uCc+_gw z!oolXfh5hhX>-aMry+c+DsSG|`|kS3PwC+(hl(FMYGf4#?@-6R(n~6IXO||&&DhEP-m=zW9>pD}j^<$r+zd^{2 zlZg$J52gBbL`z`(ri{tAIEM6rqQX1&_UmgOZ_VYa$*?y~QjmHdmH`jiB-N3vEd_1m98Jd4{i{O^JGs7G7NU-iqhAjYe(ZtW4;@K*{g!;jy)`!J=0dKK=-* z(W>@3;Yv*9Tz&9oG+?*Afb9)<_I-c%WQ zl4qM!q5V3|%$M3b z+Psj8d+rKl)$#meBG|@qXcY!imHmm-BQt4DMb4XCJ;Wl7b=f!5F)+km$x4W-Ga#{Y zZk`vp^1GSQhiAk92Tt*p0$s&i?6?;5h8n4nifg)~;(LFFINiMG<=ZNoeH|^GG>cyA zPW`{66TYG#ouF!_408@8$u9?006yzi%1$4T2|UlvDz)2{sWV5(9_Tph2O29FR&5VQ z#pVS)wCeX`ua-;^L!nXZIsGJ;T z6-e0!sIf#Y97`G?h8Yg_?IVB>_X6x9whit|_|KCUuE2RU!nhAGi5>TUCCZe2NBz)6Yo1CKns$WLnqC#IFsbY$Zr>{pfe z%Hkvbj}!Ty7G31HJzr=;c=vSDy}HW6LRq2ZdF7rSeH9FXh8=4L+MA4K#0#IfnciPA zX3x8I8#_Kyz!m@GGuz#x3kpqxj%!vIu*;?EYF>%H-WETTbbH9vhjQ;wVZq_hzdEnn z7$SGNu7QC~Uw-Ceru*~vr)5Z1D0ma~Q5Lv0D@4xo3igv%5hEf|1#6h^Xp78TX|>jX zi4aRVex5#GxgOnln%LU1X+z6^!}8>sJ0gQV26SON!2hTmediZd0;uZJyTS6-5-9yw zLlec|z;_=nupO%aveDBO7~XhwWB!cX$%EW*Ib3eQV0UDT0(Q69?2QF0BkKO)JQK787|ANIcJmif)8@y9Zam-au(O%>nVHb9)YIIn$L zw1_!`CayVph2-c8GEGV?qN=D30v-ne~fvS_yLV(p0~*AO2ke-+sB zb~zOvFOn)Ut>p7hI9=or%JF+1C+~gr0z;B|JRgq6)fZM>Q&%m?Dh)cjE<_zw)3il0 zPm^c05*05fd<#KR+he>NZ$$T`Hga-uz0avp*Sxp5wU2<@0bw!iJN&)NjF4DCX*uGq{6jr~IUO)%0 zKpbDwy<91J`TTPzXcN9XxOk^;RVP#GWF-#C+5Vd^EN~+m98xNywq|Tqw_A*(g4ZyA zM9OJvUo6_36yE=Moe<;-Cu7ha#1J@`{hp*biu1yOL?c>~_%~}A@ln>KSJ+JS`cZ>h zmLtyB^ybwj*|uKn=*n1^<0^k6&vjZgZx}SE;S|QdKG|~S4m4Un5)JSN z934KU0eV2y{_2$X?#FxSr><3}U0*It$=8=j(6mHQwOZCP@1d0zrfqbfv`~CzGr4es%cpBRqcfRJQ|LxORsjN2ZU<%X_@?Nacm+Atj#N(mR# zaB77vK>=4EGTj@a3b_P5WmXm=-@32--Hp*8Xl(WXW=F5m$&-&BKgP{wWM{Vn6ih|s ztb0e#S!Bm^XL-<-^sF>=5OF)KySo3cugK?wz8q<~FK{t(^COC=a9= z?bQ)^aJV9v3!U@^ilrO(KhsIH+q7L_6q&z|)ELO1*iFFCJmq!>Oe0TDH#0DH$+7O| z|4?=zqg;j15j2h$6Ta#3dY6rgFw4+kgzwQ2qFWb=XSz~~ys9%*Usc4XBX|2IXDVPxD@3gqIgk|6-hY<}JJ>ufeei;ZtGzk#R6Cr1Ao~4Ai zRqCfT35YGsg8_IDDJ4M#usa|&Kt*kwi+_Oh7X#TL17XUL+gN($2UEj-kZFCslryGo zE98^1*}(ka3Pwv@TL>SMNc!Nt=NH28jg;b?GYCO2(d)Ivd6Dp}2o#dFUIH|oYG3&l z%)bSGB`%BUI(-Cj{ISiZqpsJ(6xlPrypxT0p}hlNdV)SS`kZWFpWdO2X^mcPLCXp# zsN?36$vj?l05V-oBp5xMjL-h2sw%!~is?hQ6-i*Rf4l|{pp`i%TXz2|Fwx22u5MeM*H+=Yj zyLS`^$EL3!pfc=S9QmVPB964m)b^vCLuzR@OHNigtOixRot;rPK}YHYls_cR`a!jJ z_sy|Du9rWR3kNOc!1#2}ed>4soI62v185!0=DG6({hLNtd24=a99o-)WwjF9pdVIz zVyj43OTb>-dsUUM13u8@%C8UnOZPypTuQGB3QKS~dY=!VNr_{(#r=BFV4#&CdpVu@ zZA7v?4=>-(Sbkdlv`xzQQROZ9U%^$xNV zXhd3koGVWB8?pRsqmr(Dk<_bYsAHWBYRZ1D*soTI*S#X9;QybW6E*$I_tH5a z`ka==>hukPhVxuoAJnM8{F>}-Vzqatq~gm7_QAw*S$?yo(?i8mmfC}NWPPAr`{y;% z*}AlE<|(b3*cgfv^Eu75JFPP} zvZ5zjjd-v^ZM{2af882SoCy|{m#?CabRlEe#cXE+Hwtq2Z7Z|MZ3Q>*4qQ6E_=LhA76ywe&hE7@$@>Sx_QhEhS0?^!%l@R&B^_ zgQS}^`wmLQ{UX+< zDD&J7kH;D~OOI{6bV9Y3DZZ|v1J5Ij6Rnr}=PNKF$#kbQ7T&2)sCHSx;yKp)o)rW< zW$xY-yzG86O4DXXjIfs3$*@0VSjO)?@`aEiT72vYC2(8jdVc$?+?+!q13lqgXVOOU ztutA}ZFiQZn^Y*cCeNFTUy!*;I^oSGTfI%g^Dl3;i2;&xFDfQHpV)d>p2!d5rbFGB zhMeCm!h1w>U+jJnCc@%#rSRov{1Ct)xH6keS9v)IUO149HCD;cy&g*pdi<2S4Pe~CtI40 zwuKAtxSd#|H6F?~>C=wBtwE@@we@gHilU{0`Cq|Vv+<88A5+#RIr&=POMn|l`J73^ zJNRgw=6lTSqNkh;`ZiZTWKVhQ?w*TS4%4*dyX&W`z01cwS(j%!NpY<>cZR;YvEdgG z326k57yD;kxYKV3!q!hOaDuZk0Vcd&a~F#PhgI>HHV)DXBDST8xbz;>VTYPJf&K1; z*yYmQ9QmcBP%m%q-Q8-^%_B!~X)@z0|9e3Cq)4z|D*_OF*5cx-xWcQGKXJ$#f8K6{ zZ2gDUJSw~ZFqB*~;VVV|?Ybpo0&X<8cBRu<{Vxv^$A;s-Kazi>>c3y^&$r?K?nC}1 zCjQb>{xfy|fB5qdlYjZ%NG#Mz5@9+URW|*{FJps@6`=q{rQM;_ z@6H}*U{HVmT+cbVCMH?_7uq4$-wxB6L_PZ7a<=M>C{vo^?ep8TovZA(SksDLM7~hu z{NKJ=a+4axZTEC#tGCENT)Mo=b@|MRrx98rGtXZPW|LQ6KKqGVRd!hs5OBW! zv3zSkxx2RWgi90j@aj3u0Q|XsuqONOJ9e6_kyy6=D&Hq?qFZe2Ygnx z!#}5~s5sMz;H&1mYzlug9pbw0*|D^GHu-dYd?6kQ?)|IKH1g3fu!F+?CyW;ICBXH( zjzC>Lw3Qe)z00;b!Gq8S9o6(WA?eL$^F!BZGi!N$IalKQZgXWFg8q^$e*}Lye`LD( zPWlEsZ-j z5fG&cG@^vgvBX4^#CKb4TPu&VlHckDWaVa<%6yxT2=re`%7%eU@%&FkNJZF2ZH}QB ziXhdnKUsB{f1?Hfy1o#J%UzlP zZu5bhr_T**-=A-#&>daD2`V)wC+WOa>E_d#Mnjdt)r#5(U_#^n+%H&#u0j>W`fa!^ zt=BZKF|TZ5^y~8j-^p2t(+|UJroJmv#G8CVFMWf6jb<`vN(qohJSzPDgIa#}xgV&C`!rjn;(Qd?Jq z(5xB3xuN^feFTUvygHe;`Ti}^6Ua!WUVTzlw%J9eWb$7u3i6B|8b4EXtaWG7*Eeg&vGL+K54!=-xIy8dcrfFu3mVy2JXtREhJou&gv27uC{4c)mO zHk!Xm5J)|zWCwuv;%AW{8v}iqd3Ux3;A1d^#ZCC4vE$#_F+7@D0x>kvr&{{$gU&fy&+nEvUP@>?S>)^iNa4FA6QA0=;s_kGH#@$4PX^QDFMX$q_aE zWrB!Z$oeMpmu(_kecbwIR{E))MFR`4257PVugv{-r^SE$lVAG&pBBUa3;yrFI3j`{ zuKqG9sCIY7Fl*Ip&kNe-vRP2a9Coy^Y*ttQkS?FQuG*9ba}v?4jINb!V@nGtKqh)D zHEeBP#>8~PM8#(PG!22P$U?tznGuOZZVNO_d+>pT!z1}Gv4c8H=A;l2g*++pnVbh| z4z$}N4iCj`JLm>;^nkus`zc0j{Lt;;AoSQEOud(MET-k?1hro!0YEG|RswMfCVzM{ zj2Nqz8ks?UKGB0nm(8f?qP}F&mjREoQ>U}snCXBm#b*P}oNQF%pW?zVHQq^GKHGDp zAO&%9bcFG;q}RRNWMqz|d;#?EH|vCP3f%Eo9c1}1uM+fgm$*z7cDGjFzJ06wUkcif! zM`s7Yzi0M`8q-Pk8`wZ$c5`@BNJt2kjW`uAFM2+w$|caFk&sk?eT_ysOoVjnOB4*e z1J80-cQ=oq;5INmFe}t8oyblkMxYf=JpM`V1VxB^fCDsU2g?h=Ux0B6oqK5wvE(JC zr0TL^7U>T7PFp{$DqK;&aI|Rf(7*t*j2kv?(fXbcxpL@vptE@FNbSn!x5@8eRnJA#}JNE&7eNnHDltUxQ{j&3B?f zDn=YfhIm(E-I0B&ym2|QkrZ{_dTtgt4{`qWk&h(2yir=VHz$w&opg^ir-TuTF2HD^HC2otQ6=h! zG1?+-q!TgKnWan^5~;grivl&*UCs#r7~^k>iejRT4DJl+MmEO;Jlx$yIRkf^2Sm1C zz#xD4z$4#2eNtdxV9>;P`R5&GpSxl>w8)iruQYjgs~aB$+-w6iJL-ji6UmgZ{d;ak z@!MDPq=2D+bq5=4OaceoyirXg8)|%VQrwasO`+U3#ts?iGWrZ{^0Y1jA*R&?G(38GlKsk+D`VxpmTeUxMH5=H5Dp1)$|!BN)`Ho>#Nwph(A9ilcVVPaxRtwx||LqM)d^Ob>pODoTy z+4hqles>5d0=%yn82o~Q%8A?$J4HrbI7j~HMeohqo%U;lwEs3n$Ye}C1o=TC&+(lFk~O7gG*q2?heom-$Ci<=jR8iVBqEePtMgXJ&lJ)t?W<& z-X?H1?nM}Q&J_cYi&LbrWm| zs8uyB>0@j(u0ok67FWh5ln~u!HI=pIZKwr)gAC)JBB$dK!G!Wa(yAO!pr@wx?*cQ{ zQ$g1-?xWGNN=mjvRcNn~u=9+%%o_VU#P>sw0HrtB$|?C#+_*noq9!s45POiHloGma zu-V4|Nw>DKNsvZd0Aw5|AH(C#i@x>yKaC7Gj;v*CY3Q*d&Y%?PMMpuDV%dFn z`JODe3gB(Dk2yqL9_cOinb_~QFNkkH=C!_UiB*?W*5wLDi-v(eRQ26GKZSI*b9cZu zN6*U}tGlfSrjlLYp!j3@v4a^$9s^kyuKeA81$?3$PoI37f`4bczVO7A`VmY|#;q;` zquj=e_1V7jmoByDdb7c!IrH*)(JUg2`_x0ByGs&t6&=BVGNB2Qr3tmTsgUafAhD>z zA}O@WeA$=&zy>9Oh$vlDYy2%@K8h6k4uhV-eBdc1b+k$XPOqYWY@hxP;poU&o^pFJ z+t%fyppFFqWll@dvyEjhtLa${^U$A?dryri%J57hoFvN#4S=)^-uX9Au;(1i|m zGw!}~zt-ok@nv@DV;FW`=*8Eg@3dwcp;d~)g6cs3%bky)NCMa8fhW>bmWeT%@!Zu) zN>oGNUv&}M9IA_jf^$pQ!HG4f!!O(DnW}TU((xPK?jxmQ_1t5CUjIE9YkDo--AuY( z;l4Zpnh)^!g-1sIpVrPhp6dVY<3__K9Axh}i9{kL$xg;WW|2`LA$wDbY$pm)$uUkT zo0OF{va=5o*&`z}?&}kkZ{OeVe%ycD{o~QYIOlvmpZEK^-q-bdzOFoJ?|F z=s!t)wWcvsgE!t)5M2$2&D}DdE@e!>uBIVp7=)}fimrAld{)T1jcOP0@=Q#KrzTun z2`&-d`>8!I+{K#dvAokey(hqzJH8Oi6!MFTZd3!*ab1!OQtQsb$6y4jhe(QS)E+~I z3ITAS)pqms(`JWr^!L^E=@;@|A4xEk20G~U6Jr@^X+6U4nX5oMj{JSdDv8DU^MVY}(2ZhQWXoBId<#dO$pl8%=bUnT(H<>u^s?I_U~ zo?gxxS>L|=prCEwNe;3e;4@;>i-tKKKU!-CG>L7z30T5rV$XM3!X!L#fN#<4I077A zQ~ZJ=3C8GOMUw%A-csKtD2XJ@j9E5&QF9DpdOsc$@lifYtoPk-<&3O1QW`$H7Wn0> z*!4s(Q@7~|hU;p%smO!t3JOGsx-OWt=~uKoccKsQ-(x*!8_pvB5Rfl%@m)=oQx)qp zHe!N;J5Gbbe+sOuqGc0IlilfuiF03kbY7ZYd@pmgQR z6=@vFwV?7G+uC?>4J+euHd5`P!omqi+c5Y`9eDx`QR=?#K%1E_W3z`~TE)k@x^lsD=3E)<_%x8>2s0J^bdGhRgiiKr&TgrTmh+*j60L}8ns_9I)MTm|BEsmX!9%>Cr%ej7zrY0P-Wxo z89AW>WoZ`F?7cgJPHvZ6-@OfSzl5en9yt8~Dhanv#CBPaT4$;opu zy=o+^mhL?LgxpUYY@Ygy5@ccnvC7b#jXyPGo_Cgpg< zVR=#MM<5`T;z({>duq+a3)0v>@TQppqWfgTKr5eH3=j4j@~noSixQS^-7}A*cO}!H z6+2yT_EF3*C*TyicFbnR*at-ZRyr@LtE=PRQsD#60$nXDD+{jEH26vuXfK=-1>g%@ zsr#cTW|KlSNBB{vyaNdLs5mvHn{KGq%%#Z6@6fPq!l@Qla9D;V;4}SlCk+iv&Rsn*ECtnD0)e9l2xlQ! z8M{Z}ulFURJc?VUjEkA~RS6&Z*5dKCFEga7Xm)GK= zu!V`Js7&mc(qsIGi&C=v5jp67jLok)Aaly9(NZzMzG(|Q&LPM;|AT0Wp)ehQunzdy z*^R+Alny@hYH45^0Jk!S;sEiix-UEq(U-DXxTrL>wDy$HWt_jZWEn|_ zh-jqw{h0V^bAED?g6MjIT^mi}@mkojo%|vYv5@?p9H_z5(DM%%V`$lo^Q_35sgz0V zVSjjMC*L>~vmz zZ5kh5k3%Y7(T(~(&9F!M$;%UoRK321#g?zHc{e4;q;r@Ma&zCvN}VDe5g!XD>LV%8 ztMK!k5ohmVAkU*D3f0mUBJby7T7!gZKw*mc;jq+2mNT0rOW_N@yk1r&$H$R&d}ZTG zw9MCHH-vUE5W9d54I38{H2$jt`JlPCviznNEK| zU=K-F(_G{Lslir?+v!Iuca>IWxQiV1eS zA5ii4FsOCQey3iN`&P$p0o5$=O>9EI6$5l;N16Ab;#Q1e#h$ANqCK?u`JyS1hvN?l z)B<)(2a>|&(cxPGA!}?klxkoqnajZYT{E(8c}L+8GM7qk@!`Qs9WbJ5u-N@aXWz=b zQO6P-f52D)nn2$=Uzd(NNS93@i^RuGlED-m_Ry@qU zvmim*iC1_C2KGS_5`uHB@h*YG8aXPWUXHPDP=x(=N$+EvUb|UzeIpD|pcKAuvKLE5 z!O(f_%a`JZC;yY52rPk-j{KqU-4fuNbL7a8hpDMxucI~U&{Nt0r4%n)*vq4QlvKRD zo?p9m;&=X~_`E*xASDIZ)!|KwpTcmdEaM#WO$#TLNF#o#7=miZ?cF7}`yeg8 zc2oMd(TBPwdk^u0g8%jb1Nr|h@Wd^%wS!a`vQ1$0tu6|INFVCAjP%Y{R#uSsfi>H4 zzu5Q^HXySi49t8Ff|=!MVj-WoMwRH&5A|=L@B zBHl1nnY!=h)vH%uzg8q$gH!A54xV1(snJpJc=Y{TbsZ{$(PHe^$e{ipEG%5f1pA+P zugYg?n%V6xW9_+LV6-1bS2w}seI)6}Vd4iao31WffS4J|nac_aRiN>Gkd%<1<~KbE zGZX;m1oR8{F%-4eJZ2S3IYi)cE9Zh)m*5>B+*|6&FdU?DWoF<5V*Ea2u(r110Ok>HaBk&&CC*URP_c)oLDuqL2k#P|2S*W{9qK+bxPrFh2w37sx4HoSpB&;2_<4 zGHq^t{%yP`PF`71N{iErr-tgqGccc6*IQ2#;|QWE$Kiq`&%chWG#a4R?BDRQXb|NH z<|I* zP*PANB`5DWm8fVNpa*l%6smzbhKvSi&5%-yHxzmA$w|Hh6$V-Ubd7MlqGb*7UxS%f zlO1)CC{`1i0KaJ%tY94YKJ3`B)TBvx zv~JwSY0QD&gu;SY#VYoUnhTuG0s@Ha?Cdu2$n+Wro81ILN;xRZ=@L$%;jG~fM<#uU zxBBQf z69@SUoGm9{=IQ7E<;TE@?bd(e0ZTGd@JbmB1#ei8IKj$`XHiD1#;jQn;wC*qRu0EU z)-wU)7r$9xMVd%Tl4{&r9yjP5m29wkTlp-2_5%MxxOfx!{|ZP<*AGPe1O~&b|J6A{ zxIy^XhviI=VE-S#&3hi?wL{!;vtN23)QNQQ{tHFpy@n0N_-ZMoXhS^t3QfZ#YCK{d z@y}un;^f847hMfwW+8Eg)&wBEFKj=dzwcuLC{s#K$BzD&1)DYN?m#{6ui(f7V{m}T zxesPW^z>ETfCv7envpB=UK;lh^Gf|hp>gr$qgL;up+rz%-^IjqD7jR1K_Qj;+-CI! z`f8?%!!Ls<$S4vEbE7rU7YmRR4}nhY&845pAu1QGG^nJ*%u-@T2M34i3XODAfMIU< zgKhevkzvkRQtVfUTo^V({l%ovw7=*&#XYFXSlGva6GAhF!k=3mkMjAYM&-l*f%*=; zsC3;ATSdvuDliJO{_BZDnt%cpZZD@Y<4Tl{+)>^rimv*n zuh>5>rvPf}#&RoGYHMI4< zdM75BQl|T)6XGM@nYr1Xg^hvate1%xp)u>1c@lIW!$5BiKDq#!lV1mVL6o|i&-iU_ z8b3jpQOo_?F;l9iM+UL3xu1^uY~UF%VgOvoV_}u=yKN$CUk>DWOq$# zjJnjeX(^Wdmn|G!B%r2Kq5Wpg)kJL&M2e`7CLNs}C0>%I&xb;8PhQF|E*xzbIjwfa z?h~H!G6BCb`fA;q%6h({{)i0< z!_wdf#`m&e#R=8bqscZ2+D0CqZ~Gg1{KEw|VmDbsi+RJMFiW*y59+Y&+H+osL^}FavrX)Z-y9Xv@sFX@DR!hpc^zpKP{O zKc%NQtUJraSG%_`t6<;Q|NQ&1$4WWii*E(p_~X7DGa{$!`}}2yfl)oF+^P_(M4QMO z9)AynN;Tl-nuTa&oNwOo=Pq!#7awcjcJ`!ukxZ9yj<49yOolwnAZ8itVVgLB*EIhG z>YJRgk#mOFzp!6koWea_&-E|t@B2^e@yGf2)mzSGMae|SEa*v7pTCSz7z98pCFy_@ z`UF~ieqRJ2bTpa=S0Y&+<7MB~79j?&Z#OZajq|^`&>Y*r$jNrkN`$w}ad!#g$u)4g zaZc?&_xb1eQI3E|g7qy@6p0G(SlX#+vSQ@-rVv0JpmxwkbCq4(Aa{}v2CE-)%HK_z zHINWOLBZwIW&DTDNwxY>JDJD=p3Cs@Lb$Y&p~No1uAy{m+};uojvv(hR(vi4R7%8L&%pHuj^q zY2gqK_es;ZoRf8N!;FBnnVN`$*X(96YX-~%SvALAOTFc8-T)6Lfo(~FP1bv5_*s!% zRIJ@--EJ0d6C$C1XkP0(444=@Vp~9VMU{7q$)Tgk(JBn5xWm^@smt+`c_iZTb`yNmb%=lIdC2DaSkmxfMSrYtIOHWPxW&BGUP_G z??NSP^&t_%bBr9EYabTB8H9yFmBSF(0;}JH-X%q2?`0Cj1c1Lm9ulK=ee$X@+xy#I zTGrq=46jN3$$KeVN9(^Umk&i>$_pavjCur2W) zjWJ!fHn;5Gj+ZBSQTuvzYGPd8UYf*q-c#H#?nD|nKcl1xJ%mx2NTbAmeh&h1+*RCn z_RJ-9TW|1e+XUBVAe5$U<=BNz(r>SxqPy>lWX)=^a0Zp8Vb za>h`5*Gp#Gew@@rV(arutZ7$TBu~B3->W03sK~%btfMV?Kg-A#pNfxIEMmMbGidmA zy-_P_virLn?}DheTm6DWuhZncAIZ*sNzU$mW|N#oi=KX;MVexj%=9>q?&VT>)c!iQ zTdjF;Lcu1nu-%v-73M4 zj=ZnRykg9C-Hld@EqWgZZmEZ1v zdWn`k;ZLHVV_rCn!dTp=qJQ!9$B6oJ^yjs}z|T73tskkgbVl_UN#){;rNztc`^yK2 zcVN16?jIC=Y@cUEJ>ECP#nkBB{B4$%Fj2kkC`C=*BGYajdf%Y@rg5HfIO`$jo`&4* zfya|=HP2v@LM#Mpjp7gap1)YknI7AMir6Vhug#va)-Bdi;>mN4keQq=xR4%CK5zZa zr2Z_IH2RP`Q*9x2U2Ok8xf; zfEtJCOm;5CVWlDBADSE%$Lwg=8XB6a)4$Kpe-viXDzco42%foV7=GU@xcr23sFXcl zO~M>{81Q5V!GCt1}`>UfTKWB18sW?Kke+BHmg)^fIy{ATN@@&OZ2oMK6_UVpZ~bVH;1+L9O;>2zMPdhHXp3j!LMYzFTkcg zyP`tE^0M}jc~}0FdsP)*W{_@L@y?6x7p^SUT~DuLk*eZRKD;X|*NXaxUf;*IfyTxlqNFa%o*B^u7_MuJb~cQ0kq*kH_*@JOz2-`SW0a>0+kc zgL-++vuK)RDw>hR1PSax(RS^VN{4vgvRG=KM?ZR0tQJ~eTp8YfkibWsLhx!ZaU(rW zQ)wQWv6z*l6Ty7h#^sLsN3Q+Cn*0$7$rph+N4;}$9WBq8YiAT+sMQ&p zX2;9oTMihNt(b(ayV#@b)^T%oUTW7=EidJ1bgD?})R2}Ylg^uZn5apkxJ4&j(YW#M zQku23F`8uaJyKNZi-TPYlXkuZYt#7W5(f5Ik}MW;LbrTcr!hfQpc^aGhdNe4XyY0$ z`xecvMo6%WV0H*rn)CVc18+;a8Wc#XuB&l3o7i=HpB}+Z(@b;hSbTL!cD93~YMX$Gn|6TshXd!Y@KD~~ zshu`;)I+Fn+jjSa#SUy`W?~8SOt(&Ucim(a(>g z{TA&=ODKcPYevz%DQ?fTHRSDsMsG3KmaQxw;S)J>bv4vY&`R5)_Jc@IEcW^57tL8` z#2JP@HC%B%u2lF#JLd-So?+ync@$kMtiyvxCIc`<@Jt-Ya+gL0neD zdiQB}v6-FwokvSOx1LM1(e!wV_}8Q#h)HB*&}K{d)^C5nzDadLgH^1%(`h8Klz>8a z`SaH$Ew;v1T}dOYavSj$lM$0f^-*nZV7`yTL^ZefYqvh~y7rRJW5{^?p7k z-zkBi?HMFVfyHq_y2Skt9b5x-zgff>@nq1WIFfJ2*o24OI%e_mrZH#V1bgOCRhN1d zp2#UsH?ULm{An*aKH)+GjBVmuKBnT68W|*|Fgu4^^tmjGoAE}b(DI?WOJ_f|h*WTO z!~DspeVt8wlt z&Zcu6^?u^2E^*H`WFNkB7}XPLs37(vL+XurNO*XQM@UtdTiA%6hwRSLlIbEWvS>|5 z^-K>-w_NsGUeKejU0GhNQrnz$nM*_|?P}Uj1^G@X3x0*^bx4r8lY5VrFJ|75l zL=8LZj*ZHj{U3fT3PNwt0WmD$XCBWU1H>G a#VRR-633HIku>GVf7O&U6`v}YU;Q84@P};x literal 0 HcmV?d00001 diff --git a/lib/mnesia/doc/misc/implementation_async_transaction.puml b/lib/mnesia/doc/misc/implementation_async_transaction.puml new file mode 100644 index 000000000000..0c0558cd9019 --- /dev/null +++ b/lib/mnesia/doc/misc/implementation_async_transaction.puml @@ -0,0 +1,37 @@ +@startuml +hide footbox +title Asynchronous transaction commit protocol + +box "Local node" #LightBlue +participant Client +participant mnesia_tm as LocalTM +end box + +box "Remote nodes" +participant mnesia_locker as RemoteLocker +participant mnesia_tm as RemoteTM +end box + +Client -> LocalTM: Ask for transaction ID +Client <- LocalTM: Transaction ID & Store +activate Client +Client -> RemoteLocker: Acquire read lock +activate RemoteLocker #EEBBBB +Client <- RemoteLocker: Value or instruction to restart transaction +Client <- Client: Patch value against transaction store +Client -> RemoteLocker: Acquire write locks on all nodes +activate RemoteLocker #DarkSalmon +Client <- RemoteLocker: "ok" or instruction to restart transaction +Client <- Client: Read and patch data into transaction\nstore, and collect every update done in it +Client -> RemoteTM: Ask nodes with table copies for commit +activate RemoteTM +Client <- RemoteTM: "ok" for commit +Client -> RemoteTM: Instruct to commit +deactivate RemoteTM +Client <- Client: Log commit decision, commit locally,\nupdate SNMP, indices and checkpoints,\nnotify subscribers +Client -> RemoteLocker: Release locks +deactivate RemoteLocker +deactivate RemoteLocker +Client -> LocalTM: Release transaction +deactivate Client +@enduml diff --git a/lib/mnesia/doc/misc/implementation_table_loading.fig b/lib/mnesia/doc/misc/implementation_table_loading.fig new file mode 100644 index 000000000000..cc8d0dc8f5ce --- /dev/null +++ b/lib/mnesia/doc/misc/implementation_table_loading.fig @@ -0,0 +1,150 @@ +#FIG 3.2 Produced by xfig version 3.2.8b +Landscape +Center +Inches +Letter +100.00 +Single +-2 +1200 2 +0 32 #c6b797 +0 33 #eff8ff +0 34 #dccba6 +0 35 #404040 +0 36 #808080 +0 37 #c0c0c0 +0 38 #e0e0e0 +0 39 #8e8f8e +0 40 #aaaaaa +0 41 #555555 +0 42 #c7c3c7 +0 43 #565151 +0 44 #8e8e8e +0 45 #d7d7d7 +0 46 #85807d +0 47 #d2d2d2 +0 48 #3a3a3a +0 49 #4573aa +0 50 #aeaeae +0 51 #7b79a5 +0 52 #444444 +0 53 #73758c +0 54 #f7f7f7 +0 55 #414541 +0 56 #635dce +0 57 #bebebe +0 58 #515151 +0 59 #e7e3e7 +0 60 #000049 +0 61 #797979 +0 62 #303430 +0 63 #414141 +0 64 #c7b696 +0 65 #c2c2c2 +0 66 #6e6e6e +0 67 #717171 +0 68 #333333 +0 69 #949395 +0 70 #747075 +0 71 #b3b3b3 +0 72 #c3c3c3 +0 73 #6d6d6d +0 74 #454545 +0 75 #9c0000 +0 76 #8c8c8c +0 77 #424242 +0 78 #8c8c8c +0 79 #424242 +0 80 #8c8c8c +0 81 #424242 +0 82 #8c8c8c +0 83 #424242 +0 84 #8c8c8c +0 85 #424242 +0 86 #8c8c8c +0 87 #424242 +0 88 #c9c9c9 +0 89 #dfd8df +0 90 #f7f3f7 +5 1 0 2 0 7 50 -1 -1 0.000 0 1 0 0 249.423 3937.500 -1200 3300 -1330 4050 -1200 4575 +5 1 0 2 0 7 50 -1 -1 0.000 0 0 0 0 1325.577 3937.500 2775 3300 2905 4050 2775 4575 +6 3000 2850 8550 3450 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 1 1 3.00 220.91 331.36 + 8550 3300 3000 3300 +4 1 0 50 -1 4 19 0.0000 0 225 1770 5775 3150 Send init info\001 +-6 +6 3000 7200 8550 7800 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 + 1 1 3.00 220.91 331.36 + 8550 7650 3000 7650 +4 1 0 50 -1 4 19 0.0000 0 300 2025 5775 7500 Send no_more\001 +-6 +6 1997 4710 9553 6840 +6 1997 4710 9553 6840 +6 1997 4710 9553 6840 +2 2 2 3 0 11 49 -1 20 6.000 0 0 7 0 0 5 + 2012 4725 9538 4725 9538 6825 2012 6825 2012 4725 +2 1 0 1 0 7 47 -1 -1 0.000 0 0 -1 1 0 2 + 1 1 3.00 219.97 329.95 + 8533 5700 3017 5700 +2 1 0 1 0 7 47 -1 -1 0.000 0 0 -1 1 0 2 + 1 1 3.00 219.97 329.95 + 3017 6450 8533 6450 +4 1 0 44 -1 4 18 0.0000 0 210 2025 5774 5550 Send table data\001 +4 1 0 45 -1 4 18 0.0000 0 270 3510 5775 6300 Acknowledge data regularly\001 +-6 +4 1 48 45 -1 4 13 0.0000 0 210 1455 5774 5025 table copy loop\001 +-6 +-6 +6 7350 600 9750 1800 +2 4 0 1 0 29 50 -1 20 0.000 0 0 7 0 0 5 + 9750 1800 7350 1800 7350 600 9750 600 9750 1800 +4 0 0 45 -1 2 28 0.0000 0 315 1395 7852 1357 Sender\001 +-6 +6 3000 2325 8550 2925 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 1 0 2 + 1 1 3.00 220.91 331.36 + 3000 2775 8550 2775 +4 1 0 50 -1 4 19 0.0000 0 300 3015 5775 2625 Queue sender request\001 +-6 +6 8700 7800 11745 8550 +4 0 0 48 -1 4 19 0.0000 0 225 2040 8700 8025 Grab read lock\001 +4 0 0 48 -1 4 19 0.0000 0 300 3045 8700 8475 Update metadata info\001 +-6 +6 -1185 3390 2700 4590 +4 2 0 48 -1 16 19 0.0000 4 300 3885 2700 4515 Create table (ETS or DETS)\001 +4 2 0 48 -1 16 19 0.0000 4 225 3720 2700 4065 Grab schema lock for table\001 +4 2 0 48 -1 16 19 0.0000 4 300 2715 2700 3615 Spawn real receiver\001 +-6 +6 555 2025 2925 2700 +4 2 0 48 -1 16 19 0.0000 4 225 2370 2925 2700 Find sender node\001 +4 2 0 48 -1 16 19 0.0000 4 300 1305 2925 2250 Spawned\001 +-6 +6 8700 3375 13575 4500 +4 0 0 48 -1 4 19 0.0000 0 225 2835 8700 3600 Grab table write lock\001 +4 0 0 48 -1 4 19 0.0000 0 300 4875 8700 4050 Subscribe receiver to table updates\001 +4 0 0 48 -1 4 19 0.0000 0 225 3240 8700 4500 Release table write lock\001 +-6 +6 3000 8925 8550 9525 +2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 1 0 2 + 1 1 3.00 220.91 331.36 + 3000 9375 8550 9375 +4 1 0 50 -1 4 19 0.0000 0 300 2025 5775 9225 Send no_more\001 +-6 +6 1800 600 4350 1800 +2 4 0 1 0 51 50 -1 20 0.000 0 0 7 0 0 5 + 4350 1800 1800 1800 1800 600 4350 600 4350 1800 +4 0 0 45 -1 2 28 0.0000 0 315 1740 2205 1357 Receiver\001 +-6 +2 1 1 1 0 7 48 -1 -1 4.000 0 0 -1 0 0 3 + 8550 1800 8550 8775 8550 9450 +2 1 1 2 0 7 48 -1 -1 4.000 0 0 -1 0 0 3 + 3000 1800 3000 8700 3000 9525 +4 0 0 48 -1 16 19 0.0000 4 300 1305 8700 3000 Spawned\001 +4 0 0 50 -1 0 12 0.0000 4 195 2385 -300 4725 for all tables except schema\001 +4 2 0 48 -1 4 19 0.0000 0 300 4005 2850 8100 Apply subscription messages\001 +4 2 0 48 -1 4 19 0.0000 0 300 2565 2850 8550 Store copy on disk\001 +4 2 0 48 -1 4 19 0.0000 0 300 3195 2850 9000 (Create indices, SNMP,\001 +4 2 0 48 -1 4 19 0.0000 0 300 2355 2850 9375 and checkpoints)\001 +4 0 0 48 -1 4 19 0.0000 0 225 1740 8700 9525 Release lock\001 diff --git a/lib/mnesia/doc/misc/implementation_table_loading.png b/lib/mnesia/doc/misc/implementation_table_loading.png new file mode 100644 index 0000000000000000000000000000000000000000..7c43998b3f454bed499fe6cccebb445862a8c1ff GIT binary patch literal 22338 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 Y2*cN+`ou6$4EKPkv6WGsf#