From 7362838b3172ba2205439101a2db2b4d9b990028 Mon Sep 17 00:00:00 2001 From: chai2010 Date: Sun, 18 Feb 2018 04:13:35 +0800 Subject: [PATCH] =?UTF-8?q?images:=20=E9=92=88=E5=AF=B9cgo=E7=94=9F?= =?UTF-8?q?=E6=88=90=E4=B8=80=E4=BA=9B=E5=9B=BE=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- images/Makefile | 31 +++++++++ images/ch1-01-go-family-tree-x.dot.png | Bin 0 -> 10542 bytes images/ch2-call-c-sum-v1.plantuml | 46 +++++++++++++ images/ch2-call-c-sum-v1.uml.png | Bin 0 -> 38588 bytes images/ch2-call-c-sum-v2.plantuml | 63 ++++++++++++++++++ images/ch2-call-c-sum-v2.uml.png | Bin 0 -> 57266 bytes images/ch2-cgo-generated-files.dot | 37 +++++++++++ images/ch2-cgo-generated-files.dot.png | Bin 0 -> 51673 bytes images/ch2-int32-to-char-ptr.plantuml | 29 ++++++++ images/ch2-int32-to-char-ptr.uml.png | Bin 0 -> 16100 bytes images/ch2-qsort-v2.plantuml | 88 +++++++++++++++++++++++++ images/ch2-qsort-v2.uml.png | Bin 0 -> 50324 bytes images/ch2-x-ptr-to-y-ptr.plantuml | 23 +++++++ images/ch2-x-ptr-to-y-ptr.uml.png | Bin 0 -> 9685 bytes images/ch2-x-slice-to-y-slice.plantuml | 36 ++++++++++ images/ch2-x-slice-to-y-slice.uml.png | Bin 0 -> 14544 bytes 16 files changed, 353 insertions(+) create mode 100644 images/Makefile create mode 100644 images/ch1-01-go-family-tree-x.dot.png create mode 100644 images/ch2-call-c-sum-v1.plantuml create mode 100644 images/ch2-call-c-sum-v1.uml.png create mode 100644 images/ch2-call-c-sum-v2.plantuml create mode 100644 images/ch2-call-c-sum-v2.uml.png create mode 100644 images/ch2-cgo-generated-files.dot create mode 100644 images/ch2-cgo-generated-files.dot.png create mode 100644 images/ch2-int32-to-char-ptr.plantuml create mode 100644 images/ch2-int32-to-char-ptr.uml.png create mode 100644 images/ch2-qsort-v2.plantuml create mode 100644 images/ch2-qsort-v2.uml.png create mode 100644 images/ch2-x-ptr-to-y-ptr.plantuml create mode 100644 images/ch2-x-ptr-to-y-ptr.uml.png create mode 100644 images/ch2-x-slice-to-y-slice.plantuml create mode 100644 images/ch2-x-slice-to-y-slice.uml.png diff --git a/images/Makefile b/images/Makefile new file mode 100644 index 0000000..6a63adc --- /dev/null +++ b/images/Makefile @@ -0,0 +1,31 @@ +# Copyright 2017 . All rights reserved. +# Use of this source code is governed by a Apache +# license that can be found in the LICENSE file. + +UML_FILES=$(wildcard ./*.plantuml) +UML_SVG_FILES=$(patsubst %.plantuml,%.uml.svg,$(UML_FILES)) +UML_PNG_FILES=$(patsubst %.plantuml,%.uml.png,$(UML_FILES)) + +DOT_FILES=$(wildcard ./*.dot) +DOT_PNG_FILES=$(patsubst %.dot,%.dot.png,$(DOT_FILES)) + +default: $(UML_PNG_FILES) $(DOT_PNG_FILES) + @echo "ok" + +logo: + convert logo-2018-01.png -resize 300x65 logo.png + @echo "ok" + +clean: + -rm *.dot.png + -rm *.uml.png + -rm *.uml.svg + +%.uml.svg: %.plantuml + cat $< | docker run --rm -i chai2010/ibox:plantuml > $@ + +%.uml.png: %.plantuml + cat $< | docker run --rm -i chai2010/ibox:plantuml -tpng > $@ + +%.dot.png: %.dot + dot -Tpng -o $@ $< diff --git a/images/ch1-01-go-family-tree-x.dot.png b/images/ch1-01-go-family-tree-x.dot.png new file mode 100644 index 0000000000000000000000000000000000000000..feb8adb80c631858c9fbdce2c33ef4f84bff66ee GIT binary patch literal 10542 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 literal 0 HcmV?d00001 diff --git a/images/ch2-call-c-sum-v1.plantuml b/images/ch2-call-c-sum-v1.plantuml new file mode 100644 index 0000000..59a92d9 --- /dev/null +++ b/images/ch2-call-c-sum-v1.plantuml @@ -0,0 +1,46 @@ +' Copyright 2017 . All rights reserved. +' Use of this source code is governed by a Apache +' license that can be found in the LICENSE file. + +@startuml + +title C.sum(2, 3) + +|main.go| +:func main() { + C.sum(2, 3)) +}; + +|#AntiqueWhite|main.cgo1.go| +:func main() { + _Cfunc_sum(2, 3)) +}; + +|#AntiqueWhite|_cgo_types.go| +:func _Cfunc_sum(2, 3) double { + _cgo_runtime_cgocall(...) + return +}; + +|runtime.cgocall| +:_cgo_runtime_cgocall(...); + +fork + +|#AntiqueWhite|main.cgo2.c| +: double _cgo_xxx_Cfunc_sum(2, 3) { + return sum(2, 3) +}; + +|#AntiqueWhite|_cgo_export.c| +:sum(2, 3); + +endfork + +|runtime.cgocall| +:_cgo_runtime_cgocall(...); + +|main.go| +stop + +@enduml diff --git a/images/ch2-call-c-sum-v1.uml.png b/images/ch2-call-c-sum-v1.uml.png new file mode 100644 index 0000000000000000000000000000000000000000..c4930efa0520e3099a5b70dc1d951b8bc6905591 GIT binary patch literal 38588 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 O6A_dUNO`33_WuAS^Oha} literal 0 HcmV?d00001 diff --git a/images/ch2-call-c-sum-v2.plantuml b/images/ch2-call-c-sum-v2.plantuml new file mode 100644 index 0000000..9e1286b --- /dev/null +++ b/images/ch2-call-c-sum-v2.plantuml @@ -0,0 +1,63 @@ +' Copyright 2017 . All rights reserved. +' Use of this source code is governed by a Apache +' license that can be found in the LICENSE file. + +@startuml + +title c call go func + +|_testmain.c| +:int main() { + extern int sum(int a, int b) + sum(1, 2) + return 0 +}; +-[#green,dashed]-> + +fork + +|#AntiqueWhite|_cgo_export.c| +:int sum(int p0, int p1) { + struct { int p0, p1, r0; } a + _cgo_ctxt = _cgo_wait_runtime_init_done() + crosscall2(_cgoexp_xxx_sum, &a, 16, _cgo_ctxt) + _cgo_release_context(_cgo_ctxt) + return a.r0 +}; + +|runtime/cgo/*.asm| +:TEXT crosscall2(SB),NOSPLIT,$0; + +fork + +|#AntiqueWhite|_cgo_types.go| +:func _cgoexp_xxx_sum(a unsafe.Pointer, n int32, ctxt uintptr) { + fn := _cgoexpwrap_xxx_sum + _cgo_runtime_cgocallback( + _cgoexpwrap_xxx_sum, + ... + ) +}; + +|#AntiqueWhite|_cgo_types.go| +:func _cgoexpwrap_xxx_sum(p0, p1) r0 { + return sum(p0, p1) +}; + +|main.go| +://export sum +func sum(a, b C.int) C.int { + return a + b +}; + +endfork + +|runtime/cgo/*.asm| +:TEXT crosscall2(SB),NOSPLIT,$0; + +endfork + +|_testmain.c| +stop + +@enduml diff --git a/images/ch2-call-c-sum-v2.uml.png b/images/ch2-call-c-sum-v2.uml.png new file mode 100644 index 0000000000000000000000000000000000000000..6c8bbc23b24037882687c2af371f61015f3df8e1 GIT binary patch literal 57266 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�-xI|9$Z6mmjEt_7%dIkm>{;N#)V4;zNy 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. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +digraph G { + subgraph cluster_cgo_package_main { + label = "package main"; + + nocgo_x[label="nocgo_x.go", style=filled, color=gray]; + hello_go[label="hello.go", style=filled, color=orangered4]; + main_go[label="main.go", style=filled, color=darkgreen]; + nocgo_1[label="nocgo_1.go", style=filled, color=gray]; + } + + subgraph cluster_cgo_generated_files { + label = "cgo: generated fileds"; + + main_cgo2_c[label="main.cgo2.c", style=filled, color=green]; + main_cgo1_go[label="main.cgo1.go", style=filled, color=green]; + + hello_cgo2_c[label="hello.cgo2.c", style=filled, color=red]; + hello_cgo1_go[label="hello.cgo1.go", style=filled, color=red]; + + _cgo_gotypes_go[label="_cgo_gotypes.go", shape=box, style=filled, color=dodgerblue]; + _cgo_export_h[label="_cgo_export.h", shape=box, style=filled, color=dodgerblue]; + _cgo_export_c[label="_cgo_export.c", shape=box, style=filled, color=dodgerblue]; + + main_go -> main_cgo1_go -> _cgo_gotypes_go; + main_go -> main_cgo2_c -> _cgo_gotypes_go; + + hello_go -> hello_cgo1_go -> _cgo_gotypes_go; + hello_go -> hello_cgo2_c -> _cgo_gotypes_go; + + _cgo_gotypes_go -> _cgo_export_h; + _cgo_gotypes_go -> _cgo_export_c; + } +} diff --git a/images/ch2-cgo-generated-files.dot.png b/images/ch2-cgo-generated-files.dot.png new file mode 100644 index 0000000000000000000000000000000000000000..dab55affbfaaedf9a85bf546bb1dfc9a5b18ef50 GIT binary patch literal 51673 zcmZ_01yG$$mo*9r8VDMK2X~j?4#6$B`w8yuZo%C`kl^m_?gV#tceneTcjljO-l@7( zRGm8VwC?U+z1LcV%FBv<{DAWT0s`Wrgt&+T1jM@u2nfguI2hm)>rhS*@B(SCASMJ+ zHimZq0U-b(AtI>c0(qPcovExm+mE?|PfX^QiS|=3(=R=*v1tll^;6{Rqm# zaF+0s^^l+01tDr!Byf`A&XSUQFSFKb^%=p##ZRjd_Gj8h6&$Tw?RU+4-m~iNCw8b9 zOiWOSkis1(jQ{iEi$)^f)}y)@8015w2Z#0UKQHSjjA)klo&W2%;3q@SAxS1|-~C9! z{a-%?KPZ}Aiu}JH2Y+TutVhZv+i`67uPT9J#A|N;-3&-!LRqMAk$(7OZL5E^0w^Z5 zj_=$6RfOoLx@d)GTr{I3ljFE?|X5x&Z+{~0hlWM6+|J~gYB zi@xPz7u2t8QVyu=J-__~a6==%_1^xc?SyHljIW9|N2z2@dRiZNhtlTPJN*%OtttL@ zR|d$T9&b<5WM(APv`5g=87b+A{xz(=T7n(o4rMhpGgJR*0#E>K)-*a4%lM+(JaJQgoS-zc&>o{J3?^f+uTzMb1 zJCz{fu!?&<9^{Wu)g(-Vo8ik$tQS`rk1Ei-^3PkAF%IFjhh5xwL}^&K+zzqZU=-oiW`*O zlPdr9s3A1a9p5TqpN!MLS;9L-#bvSMd{5GR&*#FXvn457ZU?yvr5d%*+w2zegnvXM z(6rF0l?n*=GQ8WG>EGV1s5Lv4w!GXfF@uIa9ZVO-;dwt_DCEnguaiA2HMr1f){UI7 zTP>@(-5wv*NyU!uPy7LG55%B_ifnhhM~;8FThqm1HHpq(!$rWPckr5@KKm<-obV@# z&n@_>l6(7UjQdRdY_%11FqwP#`gA5Wl_#^a9Vh2>qg`bb+Fj`JaA~)jVk~*GSbG&m zSvIm%Z|yukTcWOr#IX+Hyw>7+Wi${?G}-R$ox*AwJKPK!PMj>)B zA=U#15sMI+|G8q>ZkWz)UO$*~Qffh#V*^U;Tw;Gpjz8h)tX=nZ$(nz`{j7CoT2U^+ zysR-V)1bkyh3B~Wtj%tWbFYCp=Jj}?8b2#ncAWpMW!Yg$CbB`->tV-k)pc(tUs)@K zXduUS`n%X*GLzx5=ULlRnZwDVvQ@(dOsCv)W&aoZQ+iA-8{g-Laqls?CANQ-*nkPt z^rXIm5Y#jmx}Xer(b%KN3t>^ImT4Jv1;9T9w(b3PCw}b4{~mi3+4_7rj9MEh`k6uJ z__jX+cW=!5ZpGP3SHdyJes3(M{q5!K!IV-zT&YZpGdo}czxkwYX_@z!axj9@G|FPJ zhU(3Y?dP!Z&EZT;k#e!9L$uDTrx{h`bg3qL_Nn35S+6??$k%4)EtPAfC>rS+}KlAD1-wbXBf3mdrvo;M`7Uv z{5phN5jbD%o?hG4Vn=M3Y0nFF>aEh(N$}z~FMVxJn~usZC&UN_fdD?S>Q!yjthZ7q zR-vosx7`$R9t9#3U%E+Y2|8v?GJ(3WhLT@FD`n*y*)y`%^l!zk;uGe7mQz=Rk9v0Z z3ZDuW@K*fYJ2j2U)gsLRDNkTUjY1 zjf$SYksB3;)F8Bv;_+rq*LfD?(cCH^f<3?g()e;QSu$A8c(M1B#$Nw!$@ZVxs_=n> zcwx0mg&%l34-a{R?_`C(it+x4DQEi39igUuqFJEj@v!(cT9ZMyO>5Qds1!eP1IL#J z7U~}8>dJ21elRo~5L-qyfB(^1l;VO6GC3dyU|VmPO)!KKGbJq|&Z2i9vW0RpXKqg(rdK zB%{TPVbpQifEKgif7nKMeZJ^lQJUj(Sb4lT(th0jcF#lneP2%)v$xw=ON%d!-P$RJ z#|FQ1&248WVT>Bz!IuzCH0(2-R!>a(>rHu?j#_(p!{!If#PL0hW^!IAnifoAYeE{8 zlJj6ZL1Wl8n;c*bM957AUvJHqx4#Za7Q|tW*;`idz5Xiw=fEA{fco&o+C&UNs6#aW zbHGo07O1X>jx(>j=8z@ncX`0X7`tu1D;>A>!9xf~}oQ^Z{N zqu*i*RLga|au6LWL-5>>E9oa;C-|l%@iwrsv#yA7-Y#t{chF7hUF!di@!iV|SDh>NX`s&B{37Q4l z%sQRsbX_(AQ9lmv5r?4A`Fl8Y7>Rh6YClZBE#e;md%e-&bYX9zy0KaKet6*Nm!Ygv zO4Nw@6XKBQI*n44*pXmII4`qINZT6=RecURw6 zOHWNuQiDiIx(QQ8tY%Mz{$*NE11zCg}PDg zvF8wB9+>nclR@(p`c{v&H%m^Z#L@>cA}BW-iF}@q0gd}AZ2wemhXh$IvZocN8Tiq6 zSnnm+-z5X#Ym<17rYF+fy*t)cy~W1Vei? zKL8vDbeM$x8;))^6>7_{@4 zP^CW%v(VybuT=kSZo0*;cSxbpkJ^03ETKrE_3$P~a1=(NUDPxGqd8mr=NnD&QtH|& z*b>^3!9+*%?YZ77qwb%eD%+b6`M4_dNiywa@pQQC1GjW(AkE)Z5%J|p>eSm*O9@3P zan!X(618q0bIj5oWs7I5DQnYeq9wnUyi^x1&0kTZX|Qk~8jx~vFESC;&R2oLES4K= zVQ=~g$1JW$RH9uBMmXWBF(YB`UTkM8_vXd?0+#UMo?%1FlnP@>rj?6T9G6P`hg{>% z2`k*X%~C3C{G_!QzmwCYl1?SbCZ!Dj;JR#a+FHc_ppn(mCQ|5T>nV60NL$6*el`I+ zlr)9Okl4c4eX~?|gph6~Z>CauFyL?$R0@jfa~FToUXlv_fuCbI6{(P~k-nZ=mre@B zR<2DqoF^L%nj#;%Jcu)zSw5(;Ta{LCHu-I#Q*Zc`G?%n*SHsT_{T#mC?sIe&c?(HV z)2i4Say#D4mTlRtt-J59&?qWX*l3PWIG0^JZP^&iI{&AY)nZ8yr|yU{!Cd1Bwo>x0 z&U+RrL+~}3*L!k>E72Q#pP@%gq2)!QQg8QaopL;y9bBw6U%AbbNxPKzpnUgvtxMdV zmM0KZHxiS)a?junp(*N8Uc~_bR?vxYRjP#w--=Yr>A#xK#^Zc7Yp}fa&neElK2cjh zQLA@N_h3Kb#^yDw@!&j>!sd1^p?z^Il=@_c_^?vtDHTtM5v?pJ!g0&|2q7f_70c(k zVU*HhQl&(#I~ZdtSA#oeMXRmh6mx3XJWOPX6!YGhU*1fq?0c-yNvaUae3gDW?dt`% zI)_uu2*Fh@Z3?5xYq!{uiJj#S3^(V{#!|cclTxo&K=F1xkUK&{dEUuK>!x-!K~0Y{MKNAI&J$hUf~1(S@o| zn=8}SG@B{fnT@u1>sq(1bR0yTFR}U@y|aNHJPgb4Nr;Xq>+n(-iY*RDKh_ejT?^681vD7Dr?diHkRcEy`l4qf`Z5E65S*^qsGJgqo(=G6A9=1fAN)?mh>#45{i zvCj3+$o(~M%JrBOv;FjwnPuOdT0i&xT$x3p-D54%8p(5wCc%W_VuoE?4d*3kp*&~( zVtXcA-JYCaLHud*TYBeTj9H-7_i_i(vd`K;zN3Q`F+BwG^Kc@a{RiLOC?sY>m0b>; zDySqkX?4R~tNDs7MdE<%*b!|eRhUQ|%JFbF(OHX-$4vK(O|359CZQZx(*otvL@mc2 zWxE?xRjJ`ex@w%DuVK4G4XQ9h4RgO^M$P9aQ)n~J6o1WNFl5@@J6ui5H~yeI@EB8` zY+RdBFrPcNdQ-zXen1Zsx4Z4We};emCV{jFl9~~Bz`M^aMn~nd0xrQ-MuTX3YsYUL zo0Lu38lq4fXa4-6lg zcI>9s)3$rdbw{G6ETEe1z4n;8)DaruLq>~3)Erg`5l6ZW93eDVte z0>)32(hxQFm546e(GQf!vmb^1Xwo6pkjm2IpsZ&4;{;}ApLPxpx* zsg!C+RR0*g>_!MG2zmJS06Jl?TfN#F>__KM6zBYiX^pydRY^4!DNOrXQk;XelpFM-ZzHRz;ZjC6ehp6MM!)hfeK_{xEWGW`O`lYax*Bfna zS6`eeWjw>^JcChBWtJJGy`NMD4kh&zxVguquoyRef4e1=QWPd-)LcXIa_u$%5+!+(iL|+s|8Vl*J+w#PRF6kx@^M1^DE;fcuxr?Z4N8Jx#M^5%T z$@~rej`H>y-mo~nR66DInM#wc+p#`opS1?|6eo^cCN{(CQKD`i3i=jBN|=O{Q))53 zE;qvTh_P|Mh4<8w^I9%==%*u1)epaTQg-9QSmVo-9rGmal1?64X3w6b%R}|xp*-b( zzOT^3rGi(exYj{lEDSg!nxlf_5I__@H9bs$=%IH`6k>V%YPfQ#QZky?$hR%ds@#eOJRN zNs!5qqmf6KPM(jRe(Wg$lwj`BBX0>tGVRRPGp{SCA-_q^X*-}6= zN8|V*&a9_9LANP`e?y3*GM5Q0U5y7p+HxZM8?#|w_`C6i&ShbrHh~QB1dA|>IF<}v zMK6k_U5`w83i&_M=IC7CKgcIF8+cQ`M%P|mo(&g>p8YeI+Hl1 zP+o6^K!+dOaff?yKQa{_6>vi7d7a3b?16j}GjKAZX`5qWL_oCl0@ron2~5y{`XiJl z2?q1|l<(!#a|Sa73~Sj|Msb-GG*{uM;n8hr8MxFz@J3!m#ZSfxb3Hjq{72=dw65-> zhJ_*@zswoIW7xoUOC9~b+JQaXTKdv-X&AVjM8Kp$52YlDQD^X{1j~Amv7zA;=-6sU zFrdX?KeMLWu2^91kyHT5A#4tt%wP6noR__ry4wWf+aJMAT4=k#t+R-J3R#;+LRnEYG=Zy9H?&}8cGakK4d_8_hGR6g67*``ItY>~n?kvKW0H$fhA zVJ_14x5jHUO}8l1Fn65jm-Bx;C=Em{^TgcNZ$D0vC&Mq4|Ul zjri6E0wWjw1Pp2H#Sb)60dh|P9e<)o6+_@E-8{``SK*8MPg5sdi|Ei24ffHpWfV|L z{XlcjDgLd*FCU2HT_jzY-~wU*-;)fxR($4)0vm*^ znJStcH%;uI;MJp+7XQ%~$UaDE)LE$4i3qtkQ$G$2ueIQ%OOplMFjR?4R#d4wxMZ|k zp3q2?Z|2nN-u_ucOI6MOf`@S_nH$HmD<#-}DfeSIh!2yzJ+9?euGdhkDrOfsa7v zLBQ&oEYs%ZT=#kJWXBFpwy%6u^Frp@Cp2BEvt)z^!*7r42{EBIVBj#tPpz6y$T6tz z`!gEM+a|D|c1KdShJ^UysS;x0cXFcssvgcr`Is`mXu*_wa-Ixtw+SUcv6c93$5(gI=u}8ekK0^Or*PBN8s1!zb7(BxhpV4OZ4q{~R}d?TJHu7f z3lG}xn#`m9sB9S8)I5HoTLhOE1TJ6W{W%n|9fUYt5m%6incyrsH`tgJ0zhup%p!!bqGwFI!eiHqp(+l5;+^NKam>s1?O3Vp!{YL> zb}JzHYB&0Iu7MzVN|sw@woID_Q^zIC<9;KUFD0j(CHL2LjFC(iv-tuo=11ZUy)EUd z(!;c(I3=-SAqC^&S24%3!~7zYmC&NIBBA6~>Aw*S%6IaX<&P262ZShBa!PBefz!lk zN@9g*2AH}B3`!E#Rfq0Hk|jSs4Kd0(5-7vHh!y!O^UL43$_HH(d7PV+J*HEGDCsR* zb83WgkQOP`tK42`(_E-P)GLmirjVtRWOl~Z{aOn2?!&tx~@;s|~E)%sxBxt?4 zXAPh%mVN4i=#i`Su2IcyGrlR1yRAlW8Y#~-x>);Cc!!@=MpBy4gFMOn>{>U#f2|Y3 zqOe%=$2sZLdohSjGHCuP|9G6>x9vUB8$b*sp0&T}9L|-W-3B8Q(8GRl(Tjmv{LMeO zKeHjt@<7Y*>qgeCkj-*2o(DlM^BQGSr`4^I6^C~A^RdSK z&vvtR#6E23aH=TXWUfqe1c(E3fvw>{J(b!jXtD)y)liYpwp;{CYMPa=qK=| z1=dJhl8)P;dd7?EEQ$f`yv}D@we@9WtWUu;0HIZ+QhKPxJ#XxG)M&pa8H|KKKZ?1! zoKlNSobh2W-Y)N5Sk4Y)N|3`NL+UY&pzSHfE0%er>8Bu%gIvw0y_3SgzkyZVU%L^E z*i}5-w)ebi376qS+8EXIDfHY*S}9S{2Wq2enFQ;JZsOMv#>HQi@`}mll8@|11{|j# ze#m6=3s>X8MY1C#iS(sy(rmz+BL^N0l)ON@cMkP*52-Jby-_$JpOx(SX--j=_;QiplYwh z8xJHGA*6urr8bGZNWU-XSBq{Cw!@)PK}k|=Jnr+@t47{hHU9-C^mJN1dPi zS-W>UMhp^KTGBWyL9LQ_UOc+Ti!kLx18dO?<%GoN3?0FCN<4&UEU_Z*2}5w;z|ZdU z2>sC{!=zpAh2KuL;^(&^N>s@7g@|PUos(*_U-iCG+3-okj<6M}@YkN4rRh8r#*sZ< ze%G`;`NKe`!(d5n=S~w-)`FNIe{M)l?+D5eT<2S6iOvm-whM8lBU@E`&+uJs_#&*V z=pcdY#AFQg#IJ5?G@gN<;Rtelod!}I^sUzldrrX__7Xk6`N;&SxXY;4jj6b)6HhhH zgOiT2I><^%L_Q+0zK1b{SKVrr?-ZDr5-U zjVQV7ul?EAc5SDH-j6&b$_Rb&9zbCDHTKg^6dbSGI2UT6<|PYJ!B@WM4EqoF`xZ49 zCvJafEm0C$>@OC|Zc|Rr8Zx36D$}Gj_lP+ zu2Al$dhbkT9xcLl=}d*s6B!JJd7&Hac-$KX-7SZbfzv@F($zH!dSMYHko*iUpX+C=|Yh@>H8d)5(){bUiKR@^(OKIE7nzR_DJ z*8D{xY(!8!^zm#T`g?-?ObdA_Mt_toRNDRqUE2AYEp3E&HFVH>{(~+k zgxk(XA%{%rM00V+^G9Gf)PDEk=f9+#t##Lax1CGeZTV+ZIx(u;?@sLi&YB~s2iO)` z=79vFTqO!<6dH`w;-AGg?MJv4{PI{CL|tTV-&cjkw| zOVHLh*`sk5E;Veyr4&bcI?qPSrk!qbb#cmB}HR9&`bdO=-p)MeV2ItFapE8~PB4AA&T3-bMeW?%cxF^J?U zB*!QC{ucYP>FQvFqFs)7ILdW{#Gt+R+ZjTd{Gwq^%O|~}@2dC9s7x16H$`6ZEvxRR z2F>4;p6gsFs~#SNlbda~`rzLqIX=KX9z zg+d`z@@c4T&Gs7|=F^0H$Dap1wfz3qd`iW`1>XN28XksJ2QTBUz)Ztj0C zvgZ}x9=KRuO)RP`Pc>)#o-#xKa`p$~5mG?n1gAAv&=2Ke-mt+!&(iA8$+wW^gj9;{ z;=HsYZYk1}E$!bgUrMP#dW1w8ic_RRViHrguA~OqwNBcc z8*=_R9=+SO?Y!PYx6cn7!34`4kDhlcbG%FU>3xhMpJ;wd^xPVkL6c(s=D)bi5P42F z62jS;9vV0cmw-p60`-XL6f1$|2%TEALS9%1_p4cr zVu|@C$gWH=UzUEK$LdS8^Yb5xa^3c|5*ifu5QexCQul0(L;vQGyGA5)PJj6;1x2lb zob{XBl`o8TKFjBi9}nd|a3h8a^!RHdALYiT286_ti?vCFI}oj(C=)$z7n6>lo)I{V zX0RfnY$Ty5l;w=ILXZ~mq-x0zCDAa*{dx(w<}dO-x0$T-b}{t{_t=L?pC|D=X-AV* zK1_&VxvY8oHq}+sQhZC$HQW0kakt6!!D8l!@J^axEQe8Kr=u6@@~sl>eo6Bi-Ez+N z*c!tt>QOIF&q4mfG76*itGKn-+h<_^()VOt-IFuDm(zDOp0Wk<)HOd$fjqj2M-+>8 z1?8ISUiv8+@$4F|GeSsBy&0ymD(%k554CtbRAc6(N%8C<_0$$AH{{QVe8_o1$r$BF z{@S3;uFxt+Ttw#JZS+!_&j+&5(+~YETZ2z16^eNn!>aK}qg(^Y?tP>)1YF5XESPOB z8mj7imf04_4Ia?tgR>_|pF@xHW_P;}Pqc)!0MKcd-h(X24bl+okDs<)5~O!Am!5pi zGGwXU8;=Z`zY;UdP1<}=)Of8Xd0eRP7yBMZN&=zYCCLROPDuCSm$#|-N#a6pmTS#b zi2z2LNaST*>+c6`C5aAy6oGFN5jgj7@v>;jW0N~N&)Pk+vKYR3tcZ*rTSM$QR|H(c zY-CEDHy5Ub?=nxJtcuRLn)>V-r7`AEZxzKeAMm6_kQRy66+O)(oX}vfeqV0mUUm(p zudq(V%%fm(uf*`e+F(B@ui+9+jwFYiv3}<}&m|vopoVwg9BpZ-XP%xHP+yLhfD|d7rN%5f6I_11xG`}|*2w+0jWuaF?vjZHn_n)Qp;qhAd~N#C zjEPfEyoQh=5xwcuBSCU_^sT>-6O;&ElxA{!9`-5R_ug9M=Neqs*;f=W?vOm{6e;fy zk(;fOfBoGE__X_|sZ!mJMQ^RMD)sWY?u@bGw4SEQI?OjHqwtMoDym$8c~qdkwFcQi z6`>{rj~t`c$w+&}MfRpdnNUI%YnI>-c{(R2%r8;IA`ZC!UWAWL5A`clx)gj z^v)M%${}&8p3YJxEk8}bAC}Z=U`9Ac;XzVCkpF5gJ}0Y54{=uSx79ltP2o*hSF@1# zsRF{Cn_l`PQhX?!@J^hODVa=DbNAPry8fjridvU^5_XaaQ-O4TTA?)5jdz%Ea&?pP zpN5$w;Qr>-&{;}r=3n)**8R+P;!|#GdZ8)Q{nMr-X%JF6?_qCAV1YYrv0edlRWb0T z{}=V%>mE&^LVeqq2^JD&NrhhAfSr%!Ow&ia|DUw#lz;PZt=G%rB%l-9Qyro3CYds| z2!{g6;JWGBE+(=e{lWWt2$6E%A;M`lPLf_MNDVt5h#D1;NHy;H-h$#;-_OT!K1U+| z{dVjfg=Co3;_KKNp#|B<@ud&dyw3A06yy=(PhRh?d1?@iVjhq8kjk*lisc07 zx4h*aJ?GC4SLvH#pjcNpy^SooiFp(s{Sui!sS(@VxP0+RZLSiJ?X$YGmKsU!MCWMB zj2JXZ@i@w613vaJ0}m^bnAuF7->6v|&2Df8vEQEM$y={t!#yh6Ep*!H_k`9lKFCtZ z#m}wz49%Die7{4CzReG4eksi6^_E=tOVmO)^_!n4phD?em2aSJN8*QmHyB*zpKhni zja?$-&jTO>(kKqS(RnFAi z3~e?`KaY!fZRV}GESxE|&@4|3nyOxa4~jgclst5t+HMTIq10pbm&dQL+cxee-Hf_KR z7wq~#wb_qyGyfRFay@T_1?}Hw{YasQ(6V+toheLOwx8skbgVCf)=F>Q-+L z+VdPa(7 zmFg^QD$SM-HszL%yC_@v%&n?3+45(*?*+}T>ykUEwK-RusuFu%s#2xe)y*%4OF*um zGKAEaKYToc@jPQYQ@c(n0-&08=ebZ7LxpoxOVl>B_*#&^di$jC#7N=E#8yaMfcmsy zdi$|eKZ=$MXR_!=>vj21l4f0?_YH&Qw8*z!*=321zZtpbo}7k>*WIzKF%bUc<-T$7 zhn8EsBQ4bUz85n_wD8|VE<2po;upB$D;@zk$dAifMUfGkERPrC`lJde?nM^+^u=HKW`Dd*<6$bxAICO z9oj}CKIn%aVsnd#O5+gW)>}AS7qsTh{PLmtSzWv5pxwpdpGBk|y~ZSXjsf@QYd5V@;@K?TVh%8^(}5JOtG026o{h@$W=)eEVe$NJ+q#L zg3i_OdwA?nB%klgKkA%`;Xd_H6(ExO>Q(Q0 z=;z?r9l{sY^Yxzge~IEHSiYOWpuu3H}i3sic$U0caYgHtdr;UZ=Bm%~U4L63!7 z&nUjk)=^Zu9~wruM6xV6@u|w@l2>k{xiWv)WGh*nO=dd-vxh-<;e?`tt9>tq3)Apb z7KPR!osOWXvmIYKV3S?+x_nZac8q8U0^)b0;sN-|q= z_d7mP0_&k>avG;C7y76YcY`dImmH@d{Xov+*h~fi%U(|>m)*$x1Dt!mwqCt%=M9lF zT1&SCI)3xp`XmHNRj0qje^vksQH;~Y@nU@C(VdV%Ht;yhLC5ERuKzzHuZn4=tNCPdJvjR8l0!#T`KR9}g(+Rr6%islgg~l6TTy;y$QXn?{UiGRY;D zYLnBk-lp@nlIha^r*!J&q9SkiiK8d*FjLiFlefr1~lCF@$g5b z`b*rOAvV9TZ-G27`~9YuTg$zd9cN=n0CW(a;krpzDPEH|V>cyAFe7b$dBAnsieTUV z?S2X-)rSHxb@uC=mn`cQvJL7nf*{5}0couuS-U9QH!3V$k_qT7h4t@8BG6q1uq>Z^ zvxI}Wx_GRXIXI6>s<)B7@BM4c=jcyrH*&)vf6MV)1ZX)efJ_;pFbG@Vc;23`?7Ba) zH*`+7IOHqt*E6(U$MT$aygxNZ^1O@WK8*$h==s%ZiSVpAi3~+zA2QvzZpmKCZi2qHt! zcFBh)!)eiUvPhX`um53I(>l;fVEXO#j=xZ)G}U4MFOdbKhO1Bzgl9mTPzHP$Bl(td z`%}7f2A?+AoI&7qpM@a!6Xdp7W2#S;m(UH?lllPCPADG}39NVe-yn2v0G_B5Re`U+ z)@o%jW{*fXXrS%s6nDq~O!-%>c|C!4Y7VoYc>EE1)!-i`lf`R-!T`<@r}bSyt{NVN_mfNV_Ru+4tH zYk&Jl=X&eti;_YUEY>~SOC+GX(MwbEZURhd{YrziQe^ot5)HQ0MDpIMVe@&ouwII* zAz1G)1Fi>RKzOT7%HuSNGC&IjHg1snn@nT}B7Aqg9HeL-9|8ubJspGgxR&VGrX2qZ zATK!nh>?9Mn0>%?_oC-q0y4{ZGMj}G|$BhdDCeSOU! zfj;7nJ^ijJCi!UC%QNpc_Y`*P-&cbpIr5r7GSr!<1TZC4YBTLX=a-}0hPTC0*)7}l z4}#eT{@43IcrNR{b|O93otfhot^6AML!W zU!LxgFm*j9A~ZR6;uU`t!@l?X$L-PrNGg%6m(&Ikecz!be>G36R?}|;_^%9Bz`Vrw za;<0_+6;JsR*oZ}SCb)OiG=RM9v5g>G6z(8SV_PY84-ux{yhPdSXNymC4T|oebY0L zULKqAr{n^nB11i&SH6x7N+`%jrVdTae|@}fM2Y-=%a8$aGLXj01N;yiNkv)~+7Tj{ z2ou(r9sqwfHhx`CQU`(~MTYE}+F;>yyEZWf8Loe_{T;=z33sqqTb%Zp*R?U94+Nva z1Y&+&7C{GWj*>q+0FHtNeDWjgsnwdz#I7cy&M~2H&Q}`lT#fTPXI)gZoK=tWjU}b7 z`2zA$V-enx=#(f3UH)drqr?Xc3B8Yi4-Q3IY6yjr=AHCkA9I+ja=yoX5_Vi%ehuki zu(t^z!?RjB$SU!82UH)iidW8q@H;b@xyw6BOD-V*sB0df*R&mE^ZKJ>*5>K+k+>Nl@@ z-4s}zv@o3f=nOav{FLEMS6dpx!lVnzzVNznsKVqSjeYH0Y}4DN|lKOoM=O z+1Q4T5Bb_i*%Q*g6CG-7^WM;o42D{i7!_6waOUL#9C+1HSu+<%zz*=ye?Xjn7sKCqu1blS=s_9y3KslpglT$ii9$$SXjzKcf=w2ViCbVsEjv$0(cf_9(Gk+4F9 zwIabnvmq%|E&mM`eAoe!0x3YMm?Ij2W1C}^g!3*XOrUp!t|?&|Mf}S>q3hs?!oIvi?z0u z(VF>ODa?N5^Ryp+h0^6o3HODwhT75^Po1CZa)g0bHq|49{EJDRBbZ9#p@jJ|F|m z4oI79Rc6^0X}(%6va%zjs%Nv*LU*fLJx(6Z6bH6}VzJ>Er?vrK>Uy3f#V)I2_?m4$ zK44lb8Y%EeU^WJOcB*AE(lPq$%K&5GWWF2$c;jJ2?cjfVki)E_=QjVfP`g>peNhjb zb!#JKAqjk}z;Nsl&CV0CKCYcJL*)GlwB|;GeMkTmX zxkTEQgwg%hLO&bYLn}A(%m4dd07uDoiJdgzEi3lpyj!xvR^s^YQ1IKZz=lu96b)JR z2nf$mJ`gDvOIpfp_ls3uI5yY?JNR`@YiqgH;#~hnopD{#qPRm{y-ng=)IlR)h;rJy z1LIvF=kE;MyZB-N^D@J*`EUFg|NUedF_%RWF8}XMA_g z1A3L2BkA089}ioPtA_o8w^k$TwXUgv>qa+T5iW34Z1t6cy_R6%47qvZx*viOpl!^e z&c`6H2M^-XNk(PuTAgKD*iHBuUdGES;C>qpfJe9JYeqDi0BYjm7blt6Fs<3>4o27@ z(Di<~F+ligy~@KrObTc!fhH?t2|;rLCtqM^GhEMIad}%T|LaARP!lM|W#}8h0L|UXHWeV$9Ht|z%BfrPyi32*tq-*t zTFvxG;k;Y62h~M>q%3CaK%kSgNjF=l+CfTkJXxIic!=;NAev=DR6RFmhnV2;lOf4S z?w^u^;G<+Q{hV=;sH3A??dmnq5f6jzr=4UeYvRr^F zWn;#G1+zE%nhH+osb+v3|G>2g)4QSLD~LFcgRi9lE`~w`5i>9|9Ka+p$|GU8@6|n1 zY;f;^y&nI8=YHKkU6<)Q4B)!7Fa`W4fU*!sqE=H$oEl+AY=ATaH^XkI=zqpC|s z;BoFtf}plan60KF7J)-%*dOV*LmUgKqMKKF24GfsHX#lnHGsyaYd&o%mZ~dwZqV!f ziE*mP35EA7v|Q`c!OrkFfP#tEqlTd}7EnW;FL#Dl?gRcrat-0r9JY(Zn*&w@W{Y`7 z{gpf!Tz$y{z-z|sF~9q*wB&XE+f3(JE-d7$=z}K~VBKE^AnGM>%NhjGc%X!qG@`E( zv3yG-Q9^EI3!*O;lnb1YiOpQchZkVe4@2F@ie@%Ry7l)!)s~I97I(QeJ;@3JH=^WF1h&XM-Iip*KOVzzBb6_)O2p2u9h$)pMVVRmd zx6?5tAb6@zi%pgwAnX=_7htnqJtp_{NzQPXl!#jXwbQIzg~H|M3yHqwZ{OGn*vx5I*SnkVP6s zI~^idt~S{I0ptyYGxyJuX>L3LXr;vQhsQ;DS|fY}pw$V9X47U~$pY19OuMpyKbpaXFvjO*E9F zl6j-nmWjTey}dGIGkKEWpmrsQQVfPDm1=y=Hezje;Ig61&H?_G@D+#6Mc^&A0fYEx zd(cNmV;j?lw(K4j;C~;Ki|k8%3za=YSpfFFONQ@g14_=Q=?lzn$w)>&_l>uo|39YQ z!Y%6O3;Uz9U>;U~Ol7*O zPYNJ>sV(31eV2~iR;FqW6wtJ`o2xfkFGAiIn=Hz7u|xk1mrVtmH8TQcP%nS@9V7Xd z%US*N>)C>nyO)lZNsm~2>E9yY6mmdI8`&2iZ))i3(d*@5%EKVP{-&Gu^;Zs)RSkQZ zrV_CikPfWu9s+&5BBQkCu_`=t$R=D^GD9r-bV5NjIIZm5LKr>nT?Trt(7!nyZ>9f+WDEqaSvRxnoYL;6g0rGTr^z7XSgk{hqY74mnO+6*cH8;X`jrv$y69 zeh_2qZGI0l#<}^Y6C4XRoS|b{V{i`j?+mWb0~y_cuL{KCj_x{{_K2(|r7u2C-P2j}{-e zgUxH1r2U)uQAzYz~F*c}7i;w#sQ z0-fI<6Lvv`uD}n{dBiIiL@PMKQ-unIEz$Arq6Kr7yJx4sTH|!Kx7tXS0n=cRj^~7W zbFyU&7Hmn1x-QjY5C0LWNIY}2Uz!Wz!&aAlTrwLHM>DEAiL3S5iUF%=1iyy2KG1*1 za^jG}E+H2EUUnp#8r|Fz8$$7>>2CDjb!PLtlj4rt4=;OTJwZY92%?|Rz7_-syTDVgdYCV)aC5VhHf+%x!x`leU< z)5|_`b|S$}*$)7EAj_-Yz;2(=lwKaoe^5#@9dDP3re-HHoOAAPMKxS`&1)N9LFaUM zpgz<~Iy$w21EqWb({NR6OD$|+RE56p2I--_+(C-ubvLkFvT|4fZgnIoELSFm*T5nz z?bHN3R{S#ZV)DLm&b%6g*QIm$pDz9|tyKnwOB1P%I98(=Wvh4`)Ol zF~k@_UZ<|%kxJBLZB7mzhqh&=vi2lrctBgEtr}FT5luS((eL9sBbI+ zM=>TRmJCY*$s>V7Z-m+!H_uo_xK{m+mXRx*Q+rxGQ<>*y^wrCkc?N6;UUMv1Fm7!-Ga(dH$4 zyf%YneF7}ww&SGGqS>okgCP{mD5IR_n^7b~?~a)hbk10Q8&tf|a~%o7Mc$WMiqNk> zWq?$Ed}w;hbnU}1g}xOjkcf)aAC8McuCt=%0x4*hy_T$eAh|6WC> z?JuUy8hIvE9AhkQC0w(_e=@ZIw3WbmZJ(L1g{W@n z4H@#IIeQa80??94pB7+Kie%LUHrUl6VBaO54AK&cRRHOl4jan$4!03c-pP<_g5ADa znx+iNyOXy+oSTH$Q|~KspP>;`xF?tu$%GRm20Y)d6JPqo>;?8?`HkW-UCeSa6ioNr z%b-`!;?QbNb!vaV3w>SCH@hk`gHzx|r1|x%c22{Mxak3I`$|~1S){t*x=oQuSd!=S zl3i(=rScuqdcboBSmCh^@(0(9>vA#1cE!dsPS`d=*fXA>HKuHqqpO`tK%@Xfod}r! zTHVW81Yu2_5=oIp7ONeySd(0${r?T3Bi@i`7VIB0v0)OcMTAXt_*_SHnzXXA-G&Y= z)AL}?YhwP@pE{bFq(JsmG5g4fm_9z9O)rWFTXq|aEGc+80;LwXYy>BzL|5khjGgxgBQ7y^(1i(?q*@rT6@W;%E3e4dY?PpZ6${5o4MJSeFVVI$PV9 z7OMZ`uwbOzUy&WrJ9yDW&wOS{K1W%Hl1N>;7(tuqy$^Vn)h#%#bFiBr%wxdTiiN2x)n>lb=Z1I386io=RX zt$&)Hi)GJ=pvOR0!BlT($iw42l|Q`h`~A?HLrbNrX(!BSHjqR?vIgDM0E|||mN!F> zv1L>XRQacMi+eJv(?s#`t5|3DMfB6-eROB-Juo(Nw3{f|##eWuAq1CJ0^yTGM=)Lt z3|eChDh~1-rj~n+5&QApoS!tk;e?*A@8Sa<3Zr=v>QM~j^QDmJbWOioVDq8(RUzm8 z2ekYN;ge^%d`>9Ilg!2n($64M$jf~Bryv^i8AOfewVhl;LD$rK(qK(O+SG|bm}>u{ zHYiArc|cNFJ+F;`z#8yI8!k7!nqAPL+8tCw0PyiT{36h;S!%*LT4reV|Kov=)>( z~ICttp}rh_=c+lq*S4LYUVVz)N$zX+|nw&cnlUL{K+daNYCb#?WVPeDT=?LPk@+3 z-3Ed=zy2n9|M|9w*fw7FsPnqnY!`y zwE<3MBKOM|Ojq8^0%%)Oft|9sICqkm_u1;vo%>9_H{xTdn(Rzvnh&_MRXgSPu zehjH^KwJP+kd`B`iJJ*eh8Bf`S|yQsI^`}v9usXDXo)eL0N^l0tZ~$&dU1lke(~8_ zV7*2`z9Rud8Qm1Jd4Xv7{Fs#hitNb;N#1uy`(QlxH~zjF5xlXZjQPfqn@&mJfWv(3 zw+EMN74~y~Aa04>n<;q>EW&|28VrJhz9p3=I)_@(W*Tv{D?lKVuJXe}^sfHf8)t zfO-{&(~7K4tQ5I0XA3yWYy3u-2^EvToz$9p^5@OzHs@WKO#f4~T;Rf(RM*}H;2-uz zl$Vb1ottrs0eY_}iUG;Kap-SZ`P?FBfSc3L(5-LKvvF#LT1Z@U*MrOD&R|Tbs806- zsILD@P5YUxb{mL*Dv;qqStN`kXz!HsPk0Y5(@MNBqU^!WT_KLzaD%V+$=i7MJqpna z=|RBD*=-poG*Gee-@tgzrAD%B$>B_dg8D)hMoPLLBt0ODGj znX`%5F;Hj&FkVA6|8!tA<3U~R5`zI8ntP#?7AFh{cg4!T>R08uxk=_yzhO9%Y%#aP z2Jg6NGW4$JU zv4}#qgK|JU~JdyGl8- zc?Se-L#r!Tn_pa)xW2mf=Ld0Bj;UYDH$YZ*D+7c&jx17uG?y=il?Gd`yeg2C1LZIu zKQCj05`YbOc;#TQxjhVrRV1o~U`#76b&(itR4R{24&%N(Kat z7nIjYLBbCP+`6#DJrbF34HP8GF;CK6Lcp~KD59wi8*)@`0U|4j?D}~ZgnSJoc9am= zHf0kAbdCkwj+zw#-mhw$R5o3xju=Jn?^t4>+Y6lJWyBEL-}|V$0JY#F(8R|B z)WddP{iY!3To~|g>fb@_5d+Gqzp83e+xxI&Gc_Z*T5v~$C1n}wP1Bo#tO`G+RLODt z(XWdrhUuhc1r@_}(m%ud*zw3;UonR;wXak3QA*>xiUTF*)k;;gj289N(}Hie^Ui6% z>*dqUpynM?6n97D5Z~v^<>imx4(d{il8l|5Iu?;#)@XKzN5u3-K0@r#f%L>mTv9K@ zg+cP>owWh}9xc_}ah(6-pPv+_33I}RVObP%0UQ3>)`EQoL>1J7XJvJz#n!*qbpj|< zKNBLqfk<)#)_1uHN(Yt`pH>$aJB4 zS7~;CG?FT3KYOQ&YN=fyu=E@$nU~#}s-XN$W4+UFwaS3mO_iP?+C8&$R11=}!`U^& z<>U~_;kv6oqHI`-`-ie88z;y>ro>@SOFbO|U6e}?gY!*=@`EiQMteQCKb*UkRb5An z`Tfm^cGo(5Mh$Ipb})2ax~j>I7J~>)|NOVdV@7eu^_a>(iUQeNzJOF0o=mNSIqCLu z^vl%rIJ;lKqjX&TQq!gGK59d<_M~&Iazl^O;1gzF%K3&F&@!C9tcfO~hv4Iv+3XHEnbf@n01b6(U7k#2i-LdCqR*2-3|nJXYyMOQ)E~=uy2V0}6od zu)e+b_pwxu9_@0`dmbj43;mgaNaP5h*4CDZn@K=@&0qE+I!15i%^0Sk2-$o4>5|DNwX8R+e(B;XFkSbqJu==W4lb#` z3p^7a-jP5Q1p@hg%~?f(rlFbNT7IQu#tCwz@6Pg3~98mnU{&zmbP7HGLy=dvjpYni=!#c{B#>b&^H?(WWgU3{m@%Q`U($g!w5?7mS+AGhsHequK4?9iK3<Fz+HpsHpVy4chO#zD}({A zX*53iv}SDhLlN#*${ys??w-TQl7PH(?%n+F&@-DVP2*Y8OXqT<6pd4ojjH%|+7HMV zvgj78O6hU%4`O^uTqqZtbzgA(JhMR;mT^o^=vMi01z zHPxG)XWB2%nj|SpufXj4mfk&_md+Kltdf#z=#Bl;;*8|r`Hd79mJ;Y^|Co@uDA2&M?CgO7-2m%di+>o|NqDJecO;UNby49lSO!@nHw~PEH zJ@-!vJ+D@A?p->@irm%o4iRLpbk+T5uw#-eS}kh@zuG_y@$HpyBAq|cE&s^@CgF!Z z()hjak94v~U=hJh!e~hg`dLIYJLHG_i><9;)eE+JiA1ao3#s)`z5`iyHCF~{uSML> z2if@l)}HGg$tX&kRts>-#rN{c4ips=fmm1RRY|rxYXcF*j=OIrzwaq^sQhK_*2Y>Q zoGBEdmO_Ah$I9i;%7!51C5UCtM2R`9&OD5fkR$lhyv2Wn z9QofzQhQ`5#?xw6*s1X1wR9wpQB;S=euqe$we5A{N-S~^sVyazpY#8TM*fF< zQw2If@W`g;Lf=hgZDeY3vf}QjLQJQ3UO|ZN z>aRx$RizqQ>3#FJ9B>jHy$`1J(@CKWOR8hInq1-!8h=(j<<`Ei*xS9Iq8@YF#Kt{x zyV=z2DM(B!vKn6#UVpX$y3hEyPGgXR!z`Z9b z<#Ifmaq@=uncexP{jQQh&#M^{6(N*P&PYOErL|x)XfqBm-}k8q$T9D|sucXN9 z68p*X2x+>i3a}nd^~+p;wzHamNWg`q8DOp6Q(xaBr1#btY8ALuoE|ln$DCA^>_T*k zrXP!pTHrr+h4S)g?6}KmQ=%$)Rxq8=KOpIKB>m(tI|PLdzs^e`oe9bSI?ROzNiz8p z8KczKy`G8*bOr-W3?)@|ZcF0dhL}-NDSypLrSC$`Nr2jgDpbWyUs?I8GvJIdpaP_# zhL&kvpH-QtTOmvPMHbD0h>*K-{6=m>7^)dUPXJz-c#~pvfi6 zkGn-@&Cov;m5PMs`)c~XMlrvCfR-U0^IG=&=a)K>%NSb+ndQ)t+0WaBYVIjr2R*O3 zC=PmLRVdkip+)qED~TVs%6xP(g~Ygg{FIzlwn6lQqv_Z2kUr*?79CWFPgpLJ1Zz{S z{X*=?%RM;Zl~cr>h_;FkHlDfV3+>nI)(_&7X)1Tp02zoOStHRl0zJ1aQp`68q~aC4 zumMZB%pxNjY!Uk3kIHlYNOGIaN}3~=LuB9QA@AFvg_LiVD2uii-nhdKmn?Cfvx)^# zGO19x-tI8|H~|5Ugvsz^;@ud#&adP%3RgD|Zi!6sF#|VNBFTSd^$Ybzjh%=M>v|&G z-ZVj6twJ@XOBx+3^d^z>`&W~D&hr^2ec|ge>95?)Yx5Fg$*zJEY~;-H)F%Y?m@ZPe zas9^<*sRBxSRfRm{>Q0_694UlSORh>HQv$R1$YtHmZQe0eGs&&e1vg8%X zz~(n40*>l*iVa1nvX)H@*4*NS5usPgZq7r2hkkVV;}f1eA8&oszPo8F%Ur~Y+DO_c zYZ2dSO(~_*L9s)*EjOCxqo_TzhYI92U(4nrjo{RwqO^a^zh39+AsaKVQzrF3y_lA( z{sFq^E<2wn>~>W zhC3}dlgUP>Yca@R^f#2Lr0(;l^iHLsOeeS(s?-vFARp-%UYE_+pC17QLKN#m=67x> zfK8k0NvCL2?Icm?ZMb3Z z#)$_{xLwm}Tav7T&Wz_}-}Ria>qBB7LaRP-%bspee$BIZb5LU?%wPv((^7 zhN`l&Sz+5L&4I`4uI^7Z_a5*IU_8=hO8G@8vb>1{0q#oa{oLlQakD8H<**=@?LQQp zr@vuUy4nvS87h_k26Sft`{QtHe#)Rkn^9E5E8|0|Qb8AMuXnCahny~*Suwf4JZ6P>KAf8?wF&;Dd>Ib| z`gN_A>@&!{0%o;!3(u3Rjqq{aa(&FoByc@dOeN~|trYi4{uuP6agaYbwNuP9R|-&* zChB;slk1mDZPku+=yZ3C4|ZVpWfmd0IsfO+Or|`d$QSbIc#7GQ)8nVSkc=mNAqxhf z_0ZKP&Rukv;bjGF|MyNgI&gm==&a`qVwxV4=G=6V3nYGFwqJt$+7O>+iD8#ICt5k> zR6Ltt>=4yw_4E|1NdcElMUu_GP}`DM0{1yQl|S}6=KEI6w6DiC#aRFIDmfgR4ffCq z4g6UAA@O)wfS+M!z%It`&6464?xx+6VmNbNJ`Q3Oodzta_f{#mMyCCPitbLYh*_w0 z*_rk$<^2Ec1#gp5-UWX9Q}T<2`lr0z%a!50BhzV(qlZp zC`D92H&Lu!@bt6MbZ>ZGu)WZ1q3*cW?7I4Gu02*L7jx@VN>hxCV2dC%a0@asa5+XqMLLHR*i2bb+_g<{~p& z`2PY4hf7ItEN0T;Lc9MghEK~+^2L;(5r3mJV5coo^j&_#FES)QqEK#W*H2m10u$HI zZh&Y*aw|v7MoDJ#VHXj+x(*fIn`@ddOWn3BU)^6I)8>N#8(0RIzIaGhCk`3Yb#flHAd>$q#@dK5Dl}&`YlTU2IEBy16CGy9EIsFn( z)`&)XbzB{=aNc}%)(OxN(|M5$*0@>rQol@U4^nY4hkl~aACPupKQLbr zUYpqYe6877S^nblbDor4ba$O}w5(@ljq>%UQmT|tIIl_SxqE-1E||Uev7EhnzxOY1 zdW1yc)E3peUn}&(<&T@KR;TELEwhW{lUnn)N7D~{ex-N$Z0ZSax|Vc>OcyWdPH)cSb}XO1QHb8* z9e=`q^@d|nnlvg!YE1O}7nV^rUIbo*&P@NiIGqOxWjFf++G%3wf008kU@c{O`eKkv zI@qJmxLzn`P9-9pA3m#csXbc-BZM87z)e%F3J{dAi9j12!!X!;t(}E!7)8bRl$PfJ zILJP;(#8iCr@va@9cPa^O9|s(*I6$2uZHVg^68!lNnT>;cCC~d`{}khS0cn=3S}Ve zSjhW*;;B}rQrINViZe3~owANa~W`UD3}P!G4t0PmDdN zCeQ`Y?ZQlJMs6Xx=@sNnD^)fp`a8~{Pm*7P{VtSNcTX$|5v;Q#zfUt$8*SGSJ``cuWr^Khk?{Qhz!>#yMLkPo`id1Z-^>t?Tc|OM=e#2CCJT+$( z4E%*II))*IghxXkX0u@W6?gS&GmcYV#9dnY z&jbGJ3Ro-ykD6|zj8;`8OqR32BX#Jd?s0SrUg%D0?RGQ;ON}~U zK1)<=`^?-^U3uB2Sf`uxQggmws2EmSHsukZb7|*1bu_ADrd>=krlFffp8tI3@V|YG z-BCnsuHF0pUs+g^*Y)+rs78{%&QcfCQzsn&%X-lWQli9#bD0nRyX07W{JZfpt9Y&$ zPpjkySh=7k$|RL)irDv;82KZrM(?<@g7dft#^m`Z1gA~vhY!y!WCg}VnPad3LKD=?K$G@wo_JG@#%u3AUB916 zCOn{MR#m~-o)u-Q!Y2>LaH-Gdokv7GA;`NA{6C?tR`eYmIw!G8ge3A1uT#ZMl*p2C zW^jpoNlESdC=(i8)2xT+l^Qri=`ydo4hqMg17>5C77kT?GL=;jlrvj+_%i3GBNk~L z5W@C&pr~t#FbIQv{&hXPH%arn>kP}ZcVResJdcxfs(=xUEbqdTbq`?DXNDtF@vJAL zU-o6Smv5i9Mq1BluqEm}Kc0Mqj@rVT94KyGro&YBZWk|bb(`e=E4_DGdpGx|MZT$t zt#4+RP-#>AF>ovHg)C3&mC7uAWLV{#9;6sComH@01U22rkl3A1ShIe&d%ySe6lCeS zcjXl1r^vn!tD4rcmMs- zC^)XGB(Ia&r?T;=Rrh?q^6pyF|3cfe`C;8y=}yz`IZk}q_r~Xs^U}P42PBDSU@iHt z-yNP`=}RTFNKg$8{eDl;%eQnId#en>=&%->wX4n`%e#s)!jtu|(A>ghQk~h9Epa7> z8dn}p=ikcDQywHI`pVv>O9ulcUE1AL^O$}#sir}0z7mtPF!CQ|Wo`ZV7Ax5;>WdC# z2s7tS(R|}S2M52f`OAlnVO$kYFeCD})p)*zkA_XgDsS#a8B^|a-wh_WgUyUf!Sx?I z&eN6j5a>k}l|TLTFZ?RgjsljJ6!^jc0z;}l6#2$h742z4ZKuRMUs)7xf4w83T!Ckibx z3Oj~ABjGhGJ$=NV*M}&$-#mAp{rQ)B59=FvMMS>%*GM$2PUpiB#<# zdBNUzZ)YkOXP)FxHT#d1Xb&j5PxaZrpFXg809#pL44X=eqOW} zvij@xoVXlo8z=W*d~vJ(;)fIx`tP?-P@`b@r&-HGANgK3d_6ILm6m0@iS#0z$QIQc z7Pb(U%b{<(Wg2c}TnPg>@0+q$ypsk#gRWQek!EuOStp^ha|~;zbc>!bY}DFXl=`p9 zP8!@nL_sLAOTjE9As7)J=sE^l7dU?XpWjLx5VQ6{!8!RgsRa8K#}$#S4y+}+ zFP`Ne4){}aD|{$&8}hx5jz%C<{+w~G?o^fcOn%5@GyF3`0ZNWF0A(?QQ6IVp8*EMW z=%C#0e4geXK{ASNxisK{8UkWh_4I^vNJHNqA((g&OiQ-Pm94f=x-7=OQH->uD%J!3 zY21(O+Df86wTCdGJHEE*;2W+qoDMI)1hG{N1yKjXf(il_-})9TYvk2TZIpX0&wMeu z`04cD!)1im$o#=MV(#)ztA%2&+VSMv-KQWxO%l?Kc(-=#>CkE#;szP$nzy22V_f5d zMy!*j{)C8~T?xUBPXbEAv=b9P_a*bCxwSbHivXIXxn{of`m_0^rIwfhpMs^A`sj7 z)^yv;st-bC|3aa&XhyZ0fa`5)M?ksl>Z2^=;P~a~{_$ZHopS-k5WhP%%;2)goiY1* zy#|wR?(f&Ie5$`%yM%RiMP;LO>7+ta=)dhs!(6GXZ3D^qRYRCxR4Lrlyf^Lrh;P-Q zv*#4oL0ch{4c5 zN0FzejF6lz8LwA~(Fba?0R#RXvwK@(EQihCVf-xA0zCxBS@O6~s-|_6D5i2uqtv?cCvg^WWx* z*gNA|WPLNxP&>F8UPJgf_t?Fvbh7>uTqu|O9s7Gv{|hidLb3m#h?BnMy&|l_aMAS6}7`Alrgt z(5GCC{`#6QIzGIa!1Q8IKFKzNyiG&=LVg2b`tJ)uRCzIsPNL;{YwpuS+jkUVuG)tZ zzs*=xzH&)L4BVg1gaNN}2Sd60aq!ahT*sxcXG*4!Q zarxExW4GEa@qxY&sZ}YOCPa4X+Zn4}@0dryaoC_9Bsc$FL!fIm@JwoPJ3}{|=)@c! zor+#C%qOjSP*CqqBHT^vOYM#D%+WBF_^eA6Mjtve?P*R8@_*n~fvGxe)HvfUJF%Vy zm&`C>s)Vles9qU(r;!X8KcR`L(gwe4wU~JKMrnhft{C(PJ*~i_t!zG3y~NdxF>|(* z^RM;lHQFxK<*d4NSuK6bL)su(d~iu+Z710fxD}j-BOSM-AJ?@IZ||s^9K{EHQU1Mk zvx3TZ^;dqDOy%Iz)4`3|F5lf5v5-HegwxN|1+nX!Qw%C-u!qiyZ$nmS|NXT%l?Z|x zk?W=%Eu3Balda1Y9&25Z8zx7k2Yg4c_mT=~Q6=2OJGWGoX3NcK00VKN&EHxQTr92ZppmKS^>s)4yUcyq`*(p;ftMv`WqHj=Zyi_A?X!7Q;zG} z(lsHXVFn0dA4NcYiSf?!R%-jiehKo8&GY>cO~a4M1HJYWMo6zE+Sq|%JK^!BKl|Fe z$^74icLu#4_jY4NA|yDc%UV&^}65zf$T zKaqo2E|zbK;=k+9S3ecM*Zg*+xU6$pI~dYhIbqh~O6PE^*J5Pb3h51}s-FB?A2v1W zyUJ^Vx>a7fsfs^#y5Z}!)cwwj@aL8i)y6FHcY0y_j3V=33>SqHiHmhXUlkRhnHDz4|ADR@(rt{JHc7R`pIw9u+W5~l z5HsGNO5?(l;!V2@H#%9Z>4!UhA8GjxQ%@%hQnKkx<5p}QtR8lAN^;c#`t=Ro>ND;QSqF!m+1Y2I#RX2 z=M$==Qc=Hk24p(WPF#xPD|U4fF8x2#ghA~_pr|c|4?|==IwRm=7yx1@Y@SarS3*DF zK;*lSQ!(km6V;V%cbj7RlTR~rhFhr@4WGhJvNLCUsiG^Y-*wWz8gZkER1Fwuj69O%X_8>wyf+R8Aw?7N{}$79oZ zHN$T%-mZmPVtt=u@*JO3j;*NNMYdC#%j2Sn6E>XWGqSt9rK&#C(ATgLB{K8coe&8Q z@#Mjq_J`R@i$-l29}yf>fQQD<^okZIshqrjC-4&WR2VS&-$;7cQmcadLrk4k^mG4^ zoE1MU6>omR_u>C&CpnJ?R}pq_ImVI{4ww%7E=~=e+K8o|jZRq4>Zj0ujURrQ1*OWe zv(@tT3)FL6+UZnGZ@}kxUcU(Rx8KVH!$HW`;@fst8Wb?0oERr^=YvpfKI;Z|v7c%) z=8ik6i-Q&lbsL@6b{hD7?zejZZ_i`$)g+3{lf%&P({5n2sh5>)%7sv8x*GE<)bm`* zlI4}b#2-<|)jwutc5b^>Mi1HWtq#{q?k{q?3g@e1v_+S8l(h8|5s}|83Nzi*ENf|r z;{!!pTK%l3oV|k5t(Zp# z*bdI9+tj`cGrdr<9A@`>z=c{((8n|80FAd}rV=Xa7?M5UQ%OV5FUoS>1yzbA%O%Se z?wb86(IO~&mkvcg5yT$i5;E6av`At32^hP+KNjS3q*rkoA8hX@)5>rU8o$B4+Gqm? z`i0c@pBO0yO;S8tvtzkls2v zdhJbl@Av!sbH^Yr==eP4c;2&XBb^SR{do6&`RWL{YV1Gj>s6bE{sD|!Db^GjAv>&S zZymL}4*zNm0SyH<`p&&bk7M>TE&Q4VD<*g4#!PtLJonr$PLsNWLd2mNU&|ehrYh6n z7+X`Q04@I7?BzC9n8V+euhLW_!%PSw1POu+p_hlgMlL=Tdbx=I<+0@LiNlR1DqLd% zy~Uu{lFG0ibQ=x!tl(=z#)xVH*u zViU2i4t(dcv=&w|jh^n!_|ZBOfsegTs8Mj5I+-!+OM$jZjr@d@+38 zeB#&y95kwS8P^t>Yi*@X<5lrtukm&HFJ=O1ZGRn;N1%&+{izlb?OSl1N01LfH}0(S zvjopF=S?sF*dR&p)|~XInbd)l=C@%iJPS;^gkT)TccWi!;6VrwB<^1h-~AAK>vL*y zWl@lRZHMp2SJsqVhkjJzY3QWz|7XKHI^49f*C02~TBS-W7cKfWO(=U`6ZJ z)~Du9KgZ?}28~=gFZvr%>3kKFB8H-a#ArSrU6!0}>72jPzLTU?>ZR9Ol+09~s}-Y2 zkejzFsQirMA#M*lM+yhRH;QkhBj?2bZYcTXQ2o`0tW6e|fEbQE1-vp2Jw0gMUsN`J zm88;8__wQQcxr@8%NZS{1hPZhbSYZ-LLxDX@lYbI4xEdVEGr#|9+OV zW)idE;J8@f8fk!rdeD*GHC&SkRV)u-A{P-up{y}r`x+_~a9=DLrGXbAf&=t!MAae*P}1I_jr{wC$j}1A;*L>_ zG&;o5OGv^K3$(ltw>`2JgxO5(>nBjLd&`#-iv33J27$!IY0k3yy@I#&DUa9CpNZ!~ zAjG@?g~X%Zpd8JZOWkoPqWv^%D2|5l`8ogrHVxMgOP0J1*k{gRkz!E}JX5z4&Q>0W z8gcGWT1C~%Q5IIpC`zkEHZSm{4G6FPArEXVz1wVcs5G0UM#p?pIm`Phd$5eny+vnmInx?}t7uNwc^j-QSF z?}RaE8P_4roctC*sA%*IRIB;r%iU?LZL#Bk(6c0 zXX>O?<~9H9nk6Md3{iYe{JX2FhLKeyg`qPlPerqtffYHYuD1U6STQ*S15SdrSk{q`2@do$AlYbOGhJ_y5qP@ zJyKVUuDjdigJr?~okKRci;fl&cZx-lG&9@NcIM`?HX>WR;pvPi%orabo;gDi#EgK$ z%cHr$J!+kjSJw24+{Yc|ALW<`0p<&=ym?A1w=(vcX%LUQ_NH>>%$3nnN_39@a}5zH}pDX zA;zAZ{geQj5pvBBznDk2B84Vpz6HQ5SCPhf2D`9nj)Ppt%ulQayuwmSf`_OX-1lTQ ztiNT#!#>4-U*GQ$`8`w4nEYmV4D#b+`k7D&SD62x=`ns~Gg|VEiBHv#u6|^rv)M6o zr|8QjWp}%X3acjH0$l63kmz@;3~2>=cP38+qR86h&%e?$#@>BKBxqZ?r2hO|2P)l@ z7E=4ra+uZz|22iq6&VUQz*#+QXx$-1(eu%Sz($$jCe@?paLL3HGSZ>pIzq*-TKMOL z3*!ahRJms5F=$;`dDIijF>9h;+(Huy2V=`TG?K06CxLD1KnNbll;*| z_ywD3_Ua^!po?UQdajc9K2g}J9`T~`C7wQ5@}?JP-5Y+rDuEa?(&M({z6=8vyc;Z zodD+jG&6L3@G8o!#?-?Np8yT|_fb_$NYeE??7vq4SVx<8dHN&ZR{r;LS9uoJ%Wg87;jEnAuDi|I~A)<2il|qD?kO3I2m3j9%_b+ih zA2{up(BPz%=gBn+%Q==RwNGdPap@E=?8Eu`qeB^%8S=jK9#3h;l9S>PV9Ef zHi+PKksG%#Y+_YDmCL`+bPMV=hL&^_P2Np@N$E`va@-5JDE(9n@n%>@k{4WL=B%IQ za4}PCe6I#Ru-{yVIr27h60*hNwk0MeG62uH^F8bP&nQ_??MGt>+vSPo`koE1Axo=Y zl&E_2Q;qPOk_0^6dgaKezxS>*_oP(~_Kt+xi~ZP`XsUR0z)G<~YgLtn5SRm#(c2>x z&u{%|xh%TLl-=R?p;ueMGhP%r&U-RPo6sp?@@j{Jeq@~bh89v4V?5@fWYCejT}5=0 z$FX^}N@sNA>8&!0pJdHX0K7BXSg!$U`$IDQ7hhw&>GTkC`jX4LbbkNL;WT*Iv^J+a znz^itX!mn-TxjnStU@Cx$BcwZS;jJL(olGGSPjfyPEN2GRn6CvMkQ`WykUedHg~60 zQ<6JcAr=gsqA%~e-!ZO5yCYsq!Wgz8ZUY^FtYmGeUHZRRz z9Fg7lSv3i@TLN0q1^1x~{cnE_SbaJHZw>2QSp(L=T;v8bar3Mmq$%as)Xw2S;|;HP zMKz=P92n(^Zo8O(%e}0^OGqlPhdS)JqFnaA0p-OYe*foq&@yyUv%Pzr%ir?O?ofu1 zUi^hf^sG;`Uj*v&1vq!xx09>obeQToya(C!IJ4n6#O*KTk8+Sk%DY4*Qpn#|xc)Nl z>b7dD&v%8j#gOx~Wb&WnB{1i8OA$;8aeVkdO8*@(Zmi(G;(`f0q@zor@(|45Iq<ydB<8%mEekWn1uc1k2lPKFn3`Z`x& zF5Y%3DP3VR&iMYmfjchg^a*_kFv>cAvEm`~VHT$Q-*X@E_&a+5jPnWL-dPHpa<7#b zHPLqn7Ov$#6?6(?vaY<8$onsbfO&Z&*KHNQ54Z5g{ifhAh*5JR`v9j=gkZS!??dRC zazI8+xoo%wGHqJ#UC?T$q+MO}G&3ZQoNJG`@5@WRFvr93N%RqZGR#Ua*AQb$%oMKp zq9vWUs-?BWMeEN7$t=*qfH+5!`%jfG1{()+O9Nl>IgFc#vj9e$9jk!z8V3NFe?M}O zs&D!hpvvRz6oo^UG%z>cki1bfsB~B2m4{LZABdI=GTN^ zn=`1qixQ5wi}ZGwU0>2NrlFhDw`8~vK5Bg6YrEJ2U$P^{&w&082Ze~MuNnn$-6u=a zo+Vj+IR#>7xuVbQuc^g3U{Z^zq^ztreivn8-TdqMGK@gy$vP%FMHGSeTqUiv13o&& z2zT%-s!dhC0e!a(=bOMX(^cBMn=JtpvX-T$qY<7IBD7zXVf+|6nrx~c;yY!5=7rx6 z>IQ|@(kymdVi;v+RSkpi1Q?M35`91qI zt6fw};eWlU$bn2K*Dkse>9EBs2)o>TGl)ve=T4~tO z7(1MDJ|;4LA#4I`a4aq=lI6`R8@|`njk`k(IW344h|ly&ASurfEtKL60tS4m0kH4m zXlxI$Lg>n-+8 zDiYNw&`koFAPpM#to4yOkpT#4AOGQpfae-uER2sa;79`$jjaF1b8EJBEM{b;%zlsR z^jW7-vP&Uxjk$os>J@16P#`GkeUFmHaqnpyMV7o8FKy2!uTEBf%s+7Dq0qSY(>7BU zkkB;CQTSo2&y5%Ch2F@r_$;)!mHxw|bP#h2T)EsdhOZlMSVxm2qJ3a`2AJK zWYBr3619tlsGymr@m$FdDbRmqya<^8Gih-aMz4-njo+wb!zMX54s;^{~P zr-S%&-EYwu3!++Ntu>lm)SEvo^5kG{Yttmp!}?sGumVtQ3n%qt?BthYx#Da`-#sD! zpOKQ0VCkah6v#Av%mBq>yYElQefPh!o3?zXZu8x~a=Pu`gY*As(`O&_qLY~HYBGi( zi8lHE{fTLfvkssTd3kvHO|m7CaL7vR!VX5YH?*Qjh|wm<3svQpW2ClhD>kPo9R<8| zCesR4OA{moiSkHj2#Wjoyk(I*+-h^O-&uy$<@f+C;WOYl0!x`?9f)%5D*?4#e}ipJ z6VbPg*cS)$<6h2EloF?Xr1?1pCDlD>8YNtvHwAAkQ}~%5u=9@OUabHOm+3c!j{c?{ zmEB{Mj_?1?E-)?@l+(==gOXGl=mNXW0Gm*> zdI2%JfnEGM;He!-_A_$t1XPc5Yz2%3FDQ|GZ-=(K0cj_1oG9yq5$FZOnjEtp0x}1K zgOtym;#U}0$X1HO1v&OFttlsUp6h`ohM`ZIFb^54$1COCLM@W=frS@Jp(E9OZHFa> z6EM6}eYL*V`xBEyCW6G+?f^Pj2dJXu&CK{-yX*mqFEak8$)(sRI7|!jFmsR7m88@P zsT7U&H?T>Ss_ZgXnbg-cMD`E+d52bWKyNDD50ZO;pc9H!i1XS@hS6IG3Eo1lv-?@B zGkkzHm$xf6S!1v31&;rl15=8syPF_HaXylNmLslQ@APao>>i32H~v=@h9 zBkLj4f;h|`J_(#iR*!~5b6BPSDvzP_c65aqb2BZ1Zt{^s6LT^HD2DO&15mqK2j+yEe*8`MK((zfw@cho_7nN)I^9a1WE4vNuOsRF@MR`@q&y| zQehnrks4NW*PiBrFIQP=3PU^2ieFivbZH#e0!Ionz;G%(=j7k2B82lpyuG>p2{yQ?8{Fw=tas6k~Ca+WDFzA z;EX4-pp}|X2YbXxfn>|9Z<14Ce7N@aC#A5dq)xL-fmW=-2NSE5ZqV0933ffrX|xK+ zDC5D}mHcc36i3gH>05EQJ}hbA{fkb}b2qDdZ%^tPzg5h4+|*=@d)#clFDSsvhu~2! zs`&xPo0421k)kdU0-NNjvbLHU>S~jwoR-bmmLz{w6T>c?t^PzwdKXhI9LJxO1I<_} zOTW<_kTORD4}`8cNY%QUiS2E}@xTv+w5%S`%j7=}R?Gra0{g?V)G18uj({Eq5)iQ< zSTE}DEj1ZN76m8FtZ%{A=#v~(=2kz1p068C3RJmS9Sj|*%LSq;fTrok-U@gdD2r-h zYKq2PY#ew;Pe3`DL!677+kAZ}do>gHf|%W~WjeRcGd2L@5NJqfhtVV=d^jX|RgY;} z3WO0&*a_qnl8K+kLy*6$x&4}ZlC8?vs&A;EO@wk%pdla2;B-LQo^ zm+_oX08O5%JlGJeG#w1Y6+bRic=99>3{+N;ymM#DIBTBsssg&3r8jy zKLFgZUqQC5Z)OD0(u?BDp>YK`75TaAhzJQ$ncUubO)W2*1=%}*q>Yg-Vd0{TSNCBx zYFP`9N&4F|79Sy7k#qFXPTsB}C82o5hf45segzFG?KWmi;5E=sN7TAqO2|}rh#d+G zl#W*Fx$Xz`%#~R@gwIF860AI4 zc&4Eu%Vp_Q+gQ*Hf%HpeAoD`7JktpozJJNP=@YhDI=x=`H=0=(C_AKXT`uUQ4@hiY~5d- zfy5rl*ar@Q8UltXI7HBK2)NSvDbTewN%DA2yReUPyp=#lPt`g)#=m`uMf`nbGTgIi z7UkH@=(hCT2&P#)grjJNv+$YB1t#x-oYB3x74oC`@I>D*)USP6D@P|O;BT<*ryHPNbc5c+^q9E3M z6VzSorDvfm2;nKuuDz0_l(2eqs5mftr5LQ9g@$l{3PMeF_wumFn1%2M8MT$9Bz7{E{Y^v z>6y3(%Ie~docpUNRRslRF?=dIBzz13U=K$Av5uM`7zf+wpMcvOAWKMihJbEiQr%K~EF_R7tJt?V_@tybKJOusQHM19AF zb3LEz^)F6*(Od^bD=kfQajV=1h3P})V69y;7o<1PDMSF>Qo)+dY?GJ8vZ!yzVjKtk zvsM^8P6iA08eqdSMYmlb5VG*j^^}2?a2VsFHw4}P!iyvv0y0$>d(rRNEt0-Wx+7e< z?$*T}VVNR<49BGc`Y%jYkTU^3kB2m_y7*WK9o`nY4{TWID=H^7>lPbsMjDWYp6NpcL&*CqRIi1 zZ?HOj+BdO*WWd_m+9L2fU|3@S*(&&^fT5Mqp?oi%N-0EHP=$t`z6(17A_m=iy$cpi z3bC)H_^7Su?3P9^+g=#S3aY>c?`3fIiO^+;V3TxKzOuxh@|0l$`ffoHsMnK3%Ev0m zR0M(FRsyaLs87Mh&K%@#cY#<4Lhg!MiP9Om^w4ox4p8)b`vwSmj*#0y zo<#bk==parsr?`xM8zGP^SQ4C`%iSTC~zo+MmUgCt&XUIEKvqAGKhq^cXuKzG5(;T zcy+xF+5Q9boK$AVR2!P10d`E{C^_ z<|Q$E1-2WhO%EK^a5)=ky^Gr5I;d`!z|7*Qyp^*?If$HrDNODuvs*Hsk`46$bP@RHi;z z$nAak^@}&$j6ae`&_teR+*U&8SmCo%=n!{tafx_T>$W+Tz_E##1UXq*8a;LrPfm7! zCowWIa;#$Hi^L*|A$9_DK0KU&}6zp$+ zjea0Nl_3Z8#~CWe59Y&hg`zeI*QgpCPb!4p%Pk8AmNuIx& zZ3Hx$eb|Vt;oPuaqdpgV-R5fp=}}g5-kYr4-#EQ7@f-lFY|t^*p;}n1nYlTs`3B(W zBS;pi!^aj4`FY#Z3PW3ba)Gv~Nj%pGc2A9?jXoYV4o%-}R13O zdy|(dHzS_IkCJeuG}@8ODD%x)!?5wAty#eOJ?eQ0{TXVkx#}XaLCBSIhg7o-K#Dw@=Zgi;}sB$Vf z4mnZnz9?>qU^zk{6VbH>y(FURI)KJc2`18C_V{Ja1+))B3O7%YL8yNK6x-?*jUWZn z!uiPo^5F=?VcRwHOixcQrGQdiUcSO{PE=k|@xW5Um+Ba>-bP||R22Bv?%$?6OtH*( ztCB8sdU2HyzFU~-&&ADXqGt5W5G(7XLuzI54LhHqV%aLsO2YjCTX`BT3@0OFvv^up zab!GIm_lF7eaU_pn-alxuNh1MH(qUg#-vP}5i?#EJ6MX{4%o5E-xa3%A6z=2kT@X6 zg?+zWl)%4CDTBcq#MBD7l_Lk2yCTVxNM40inK~JGonlpA z(3FBP*9*^ZJDh&txYKg}v4>@!LLr#Pw4MCKu1h2MQ@uDCW(>j{ zjQ&S#5d%d~^nGNGwZQGNN9FNDzzm#YQ~)l&-)xxc&W8@|>_>ndnhj)csM7poFtb2A zNtSnS2vuv*B02J|b!clEx|euH4FB@*##=sy7p>Hu&&8v;=!5n&jbf2MuR{AP{9QVv zNvZQ#`lSa*_)hXLk>ERIJi9jYMtw*6<`=04`Rr z&Q~P_fJ>ScSQa(@E}&C!S5SS82`H&ouv7eijR*sVs%56AUqmr_6FtrHM&U{Rl$%Ln zJ90UZar!6QnK9lY%o<+1sdB}S)JNLI+%^qx9sxlF)5ov&n!mPA>P9~A+!N&4nX6b# z^;iilo`SbLIe0CFzw3(iy|(AKqi7QI%%`_x#3B#+Y)HBS1`X25BY!A z`u5nWY#l2;A_Vn8EX*f|w&H0D6X*aZ2BY}z9BN9E`aO4#y;~1~BuMcgwG_&_pK^JC zx%cno53K3QyK1C#m|zY3`$CvOtMSB2-}KvmpTRIsg20wV3}GJs@3-K`TV-I4nI*Bi z%Kq<9!sl-RtLYM!pdS05&q49P!q9K&r~IcF@SlOykZMBFlmQy_-%8<507LcvxQgP* zW$mtK#x`G7V)T<%Nb z`;7l}rbWUf;9ABGO)&QRf`q)Ci$eH0(F#?9X^JXOwVyz5!*oxxn8n?h}f3fUUzf)|>PLFLqqLmlfr0!4=7~`0AOD%>Gri7D zC6Uu&{zK2%Mk1UwPm~XvyoT1HUCgTeDA(6{DEF z)kq$zw8$Na{?O-Ion4SKRDTk>bvb7pJ5&~@DRwQ|V{jb4<(E^rs9xUJBHJPiP1?xNUMoz{sbG?-jch&JH&< z<@JpStL_&z&a|*BaEh zc1uFK;u#caoHDngDP!WJh!qD4KA8{ZZqo(qd=hvl{VZ&G@FzRy6Fs)kvl-TBpPSgd z9tCi9>s|I-tV#=Bte9$CPCLhroKc**wj(AEoX97xCt*EP#-GQMO7!zX&cPZe*O~+b z|8M@$0JVhgJ^3Kfq?NqA(VfSn&B z<8M^|q*@i7e5@y_;iE^3IZ1BkJ%fcs!PGO;Aoc!Fy`)K1Si{CIZH0;!B?O-8w%?nP z7L%M2@<*zMG{1jlY?-?pcGvd1rOdT3I=@fW-sY2Nz4P$3X7<3zyo&3^cyBR&T>Sff z4drOR$Tw8ZjPp_CkL(FoDBeayUu9#5DJc2I!ZQzv<*fsPj%26uevhltm0R;?R=PKc z@Za=?Bh(vrSZTrZz_=IGVJK?ioteI4xYi)3aeYJ=rH^*YKj{HwR#=9%TrhJ4XSi1W z?hwuaIm+?vBgdG$RgrIwo2nJeff~t$3TslfNwT(?bE-t9mc_F>)HaC~$`$?@rtTdP zx$}eHx|%wK1`k!byA(}2qQ=;YXRoQYYohpX3%FbOUq&qN=+OPDbmUujbwtx`8|^V% z{@nFWyvLyfb+Su>QJ|^scH$~s2cB_pWV>Xe)JR%^nzH;uc{{Iy@ha`Pf>j<|!^)c9 z9lVg*JBb52G~m1WG|&e~41qx&r#@rydZqX1en-xZC)X`?AYw;U#uGDF*3(1l(Fiw| z-Pck!_m3yO5f5!{JY262ZIx+wuy}r+pqcX_%_W7os#Fuxe-e)6KFySVt3lbs&V;D? zjf05+qtSbHPqSLhZLj8$h6{69tHV!szR!O&r~jD8cbTVS$h-9P^yAi*qpje3k*jrM zce=elQ;K$fLc#pT>SmHoIUl)dD(s}!=05lRHt9_304)rG)WG+AM5`wQEw`x1e5vJV z0|v*=_57+@(&ajtja9XO=zDZTba4XC0!QkW%a{1NwQN#04@Tha&lYX?er8OehAS8U zYMR=v8Qjr+&p;M(|3h)T{A?6aY~?9=Tp{z!N2gS_nPhr-~LHF zPJW5#9ZLuPi2I)A=35g)U4z9FZ{uJZ2MmwaB$srlOHPR7Kh z=UAzhiukFS#(b_LjbW9`JNh4TH}~m^&Dqyx9BTdC#T329sE)sDRCl}K>sEiHxUy@a zdM(&?F8%9Z@6qvHKl#98d`c;jR6Tv4UESW{9RoL~ijRUdChrN0hzXL*$6vpOOZ#k* zN9fYY+Ybmyn~exgt?zpgBfMavhm)X z+T8A?b3Z<|O2nrhG8#TJM%(*V+aJ!ekBNiDL-@Ac!ouz-#?;yfS#fwA{M7ivL)<(h zjV8pnU&o{{Hn>yVjZL{#sKArw{n=T=)3b0Zpgz-k^=V!P|C63*4cD0=+e{Xy5q>ggS+4FuIhgZwCY}ZkdPuPk* zF&CUs!bUmvA@NP#n`NaN2$xrhdl!;1Jo{_d;xqfRq&mESn~9VO?e1Imeh1#3H5)H8 zUVZ(n(n4!jAwvZ+6Ktf_;NKg3ftSlTcml~=Yw7#DA~x;)4&9ogf_7I_dKRYs=?}eT ziRz5QkJ5*VD)ZWGrOUI3`2s%SJQ>Lt_oRHW7J0JoZ&ibJcW11sD0*EZSYE@0k2Ri* zSWIW*mE2hgc_d4t#bDN&U)ZEuAt^x=fyxLahYyoL-518zb?2JS0=7e=cfpw299g)| z@%NONX*VcQ394IH&xV@L^Cl-YEFW!V9UV~*Bc)Gt;hgV+ts-C>+SJ9Y)?J{QhrLi+f}JFVxbEgVl8Q-Am%1 z^X^#j_&4skrKugmyP3dT(Bh7cr9@F9j2mIqweB(CAMBsj_Wpd}c%s*Z%G6SqNyIK3 z8J~|>IvJ*Ol#5i{rV=VS=+iMh`m&E&aDU+AZi#C)LUQr_Xr+64S?FDBMI4o89emwG z4fCd#7{PH_wPe5lqU30Ai8V!M*jmR?FB)ZLHLUyA$(2$f2w^d9=r`yt7qw03Q zQfUb=6e%`dy|>zoAOEHMEsyrpyTtq2XGYpMsza$w|D93I{D<>;1QM&!IQNGh85*<Y@GKvb;z{N$2ahpM3{onhhKU@v$BXI_r#9zBao$RsAN=NeCx0j;@Zgyy0 zdxX3Eubi|+|4;K+4&R&MeVBr4J-TF3p7l>q<# zqUwI69LrxNXDxzm*G?n-bhCv?LWN*%0FpH+r3t8mWFlMpO-9s+$rzbDBI^Q3*}*V1 zBVeBwv?7QHZ?-u}s82o_umXzJx4?z|7(`Ai>^G?i2J)~0967HZ;ML!&ZGWoCll>5f z#`?Z0*e2XJlv1L(si~Z*Y7$78DL0rQvI2aB*kSNgo(H9J2f%HK<^_RJ;PM3UYn5f1 z=RN4A4z8xD2?yW|AvR+g@Dz7``BE>;KY~M3D#!gjN|=WIX7~LcXc+2GJ!FuFD)XUE zmE0`wrWXT0L;YIlqIljZNCU|2g)q38stDxYz#MWPd}Rq08>oo9>#_$jfc3F_YI*?N zO#tMQxI}bWvKAg7`^K!(`{v64`} zc2t=6DP;gOo@RTh_HI%hclwQHa6;Y+#}ROujR6`IAA>^Br4zd=L>sFv{0*TOh~q)^ zA_LiUXrljWPf!J@8(S*Y@!tjUrG7gcqZ0Lfy4s&Y3&M=q2Jh6Oe8t*-(UhG;>6H() z0EU?+7pQO;u2cu?j6l?0x?K>#(%a;904ebAMe4aOgLk?^zWxA^of6esZ2+5sk6Ocl zFl2sx;d3LCbU`5dgA(NX_5xJFD_fO=?p_9U)ax^iwLP@^uZ15&Z~Z5*;IB^5t+C^5 zi3gdS73u*Uw0;IL)2$fUWumLxw;q2N;taeA(UtRm4`@t6f;l>Vjn%M(LBOS3(wg)n z67alrMT8n5Zk(O?Wx#py?cI&)pu#2Lwuso8tnO1Pij9q3Y$JN>e0%@3yjhF~$KT>I z4tmN$`9_%eQ9<01U#8OXeDp_Kjo_ABr*EA(=Z3&ul(rl-I? z$FQs64E&M_t`=t060_7^%Xl5gN`GndZAe4;+%dWW+ZjE4C~gg#oKFc#SarH42IxGS ztOT8aJCEd^5i;M+z`e2nP0g)8Oz{A!G6~hi)fI}f&?r=)OyRMP?K{ZXhCL0$91q01 znTt6IP^=59*J|pG(AG}7ys;ZE69*_4OL1}WN(Q;|tu|z(R`iI!YEuf;#mrbKaj8&Boe*w#q2&vUXuaJ(UygzeVSaF2R@4*22RaJx zPT@%Sj7hB^Qw=N2lM;@QRT~gc{<~h-GY$6CIP3m+(EY#a^AhSBChOHWs6I%C1)?DN zutk<0@VrCSF(-g=V{@TOmgPZGjNrk26&E-UI8LHcuU%vs-Os;8v(}91_Ins zy`1a-O%Y6CfG)W7G8KXYHGZoCJ73?@a#;=01RZ14nSxjo7>UQ$_%MhAQG^0_;{Our zc1Wn5SOp7!P=k?Uv^!WEOzQ7fs^4wLT6rr=#Tha^gyMIyYYcL%M#1Un8=5k1`AWhf zjH&Oe8bt?%GGfJJ_M)3Fm*}0ZevG&g24u-V{~VN#6c3;uFld7Aik={DV_|)xwC78m z4!FLQNztveh=k%`AvFgppl@(Q8w221tpDX1>ACC4icAUugiCz@xzFhv?sFc4aW{s% zSH{omlz2d=d7(o2z5%`*^*F0aJm{n0=a!M;$KBAvDspb5 zO#m94sQfM-ATo7ur`>t+XJtk~xeSv+cr9;^x2G6p8r*WbF|ZV1fZqZcG>XgV-l0@( ziJHYM)MJIY9zLm*+#-G5$t7+HhFq) zB_ZX&YZ_XAgVdlH!+3=dYtR`*JV8Bi3`rcMjFk8LF^yz6K**n|f!diszs2K+*H3mP4KaaX`jPb*=O)w1%P^>)eO$d zTRmOpS+d;29)yF~}PkA$z?cs=tYx{PlTS`E8z%U630-pu0Ob!I&Q&T(oN{E5n zhETp+tb)7(5ciTCBGLN9O3|TEr9UaJ%yfugm=T-Lkb#MZN68I}2<)X%fSr7vBt_G?_ zfAWG_Y<5|GetydAHvoeve0WmIOvKNAL1l#qau-G@rCbkHdwNS@)Mz z=DIhhNH)K|x>X=|?kd}JaDA4_)S+iFMNFhw4 zlacbP*yr8o#aE}2`=5x{zcVRSc{~=V2_SP?!x(&`70Y zV%>-kQWLG?iY+p5HES%zcIWM`BN@tmJAurGR(4b?f^FiGh zWH$scY4G_+K&t$@V>$l|SV&=lkyh6j>ZiXkR)B(oERG!raiCP}y7ACMIviSF=%BSx zUYtAi?*})JTc8kGkB6iL|M?sd4~0_Gp?$OaFSc<4MRU!Sn<@SGb9D)@g2of_RQ?y+ z`2SHw@l>)H*%d3s{2zvio@&2Xi=Vi0H{mo03FiH0;>cFrc+w$uz6hcHKXYVg`_s%;7;R;aw5j8V^H%vRP8aiPB|y=LI+y% zDb#QGzH~}~emhA;0Pp$AuJEx18E3ikmCEg=XF|?>mofZ0dvTBG@*IEqC_qmK0ziN^UtKbZ)8D~K;LB9 z#O+A?L*Ro_m>tMmo*((J{52^$(aolFyKk;m97l=F!82cfH%q<1bDiO z$;VY}W^CSLBjt5EtZ)Ovm?-P|FYr78!gW)Y0&B9yui1BZ5+f!8lEAH8MvGqCmEX0Z zU+0r#$3@p;Jut80EL*xpXfIE`oApaX(QaBxqpF+5qt9ctMOsi6c%}N7^~1~1>IWIY(JU$ z)BeTLnOnlUkj#V!T1DKVbw8ZFY@*dC-}odjceui@2bE>&OI^2>WF6gnBk46v=i^p= z8SDQzoJiT|Usdo>)GGLh*}j+XZDbZilW7w>Taqf~y|}YY>R=xKUg+nyF@rDCs}xd! zKKBhZG>yKG?oxlqUufRUe}Cjjo5_jU6FXfHEm`jZuNaX5xK6SAz_t7~3%%UTrr6Md zYTTCLYN8O!zJHG8aqBWmp2C`V?5m`xI?qya4@Gr{0{`-|&m@$?#FV zXq1VpF}yd_uW*|p>RDJ^b5h0D_f#^Sn@1=POPF>5K^{@n;E zuYUDUc#qz0p87`IE?$nT@8S#YP{xJ55YEi zU|>V~GCdfOGVuj2R%nA~EiH>(XDEsT&haZh><+Qv@$R)+Ix6DpW-#$>Th|mzAh)#^ z249lHi@j7g2`g2`RF5>0E#ousLH@kAr+>I(Kiek!B9+>i$J<7V{%Ihr0pFMhW4ZpmeOYw4tgpw{H@Ky<1HQ59?IyS zoK2p*eh+^5S|hr!a4y)Sg#rh-vgL-73Q1T$w@W^v&@-BxmwzV6=2ZT++NFVT#WIy0 zr^pcFWr`173!irv|D%rzR!$WyPeo}?Tw>}^(6qL8JSZypvUU~in&5m}R@<=~mph#2 zMr13$To;NA&nR*jDA+BXi`^)k7yA^w7Jrkn?dU)-4aP$d`f@9ge@6z{pEl5-{X%53 z>iDDr|CqzQVbT;MJS_HEbN1v5|NGX&<31Q~My>?Zi7XDs#Y?EZBfNMqRL ziM-7zk<|Dbxzjyg1o(Phm-O9K18K#S<7KM7FR$&4SN-EY!u{?uvdSHEYE>AA#^lx1 zbK0;WhljJ~-ffEvek|nB?Wolvbt>Di{2}Eop$TK?08m-$Cn+NZpUg@#%v=27w$beU zkFwMlY99@zq3F7d+*j@G#VdXjdC|NHSJ~ulQL2mExV*|%I7DR{N@BZwo?X~@eN3GC zRQenHyW}Kf)yy|bfBHsYnm-k)7zWE4efI^RbpRuN&k*j!zm^UxHeWeJ0s(enufcJ7 zpIo-uPx6EC)&YT~4rifOhtPLwc8NmTs;+tj+WCnS15-9T%{4fkqjn#gT`;>|v`=dP zZg?vHZLYFl`iIldlNZkixqF4T60oAT+MLOlKEvPV>RAA%x`@6wHs%A-QwQOR=fyaa()(DyYN@bL1{0y{t(OYxaS8H!1if{ z>==@PCM?X8blBG81*H3`_Tr`D24l*cPVX7nr!FFfXRB>2XBgGoV^ueD`MRjd>Dq+& z%TGxyzUpu`mAfBb%FcC4rSiBbacpJ^lc)kVwE zA6@wxYwtX??)P%vPIfD4avLak*+nJz(HmvkTvSq7gUc;z?md2z(LA;AgU+80S|-=w zVpU;f@yPy*g2T-WNGRf36;E1pkx|hdEQqFFg$ zpUhovoUXZH`ZDZM>zoVQi!W$3icr=MmMK`PoeStI~nT;Z`)s zAaU;Ky=#fMKT3Yqy#RPU#94ZY;fCR`koM(Ag-c68i9I$>#A8)v(haSpufc`Shc>+h zYitq=w$Y2d&qkvZzmN9G{K2B)2(eZtHu+=Q*XHr*(ZUK2iV9vB-R?!~h|aA!iSVP{ zddBY=-f|1WC{K7SBG1so{dj)kjh=_mk!<-mo&8xY1Z#Ffs4bAoc>*U#!h07yTxei8 zsPF^%BXv6FH1AR@!7pdjH?->;_UzRE9Ddm1EE3@$9E~`3V8Sz1a(U-1;3?x%D4Ti- zFw}yd1@Cq1vGU(Bx2v&n6qU?=+xRfib5$(`H@}b@rE#( z9A%p5U~= zBVp9`=+K29V$IyF2jpt^jN46nrZcd3V9d?)hP4#6 zbgNd(Np9ZpF5`5n;xG;SwIbus>U^xXymPI5Yf#igB~0J5sS7J$dDjc)(S9D^T5mb^ zD4VX~cN;^&p4U$<9|zb?KWr!L+2-D=drc0;u8kfy_qs01LtKl4w1;wZNsROaeMzmD@Dk|(#_kN+3ix4S25uz(r2}Ye*I!wg!PLebKSOI zFbFVHC*@4liYm<>IYXj~tg*(K)q-e9Af!ZoD|ET~*ntm084YW7+7ZJy>?&_PeI= zE|K7m^X@VIL$Eb9RyO(%3Nl2Z##b5%I2 zcQMzL1ZtbSQ7nwua3J{EdhdQtpm^YfP`08M^7YV@9cm@{H2tsykMu@UwRTf2QV%+{ zlHnh}A_WE;)_j{k6I!kLpt?5Ztb|u3uB?%`cm1*v9kIG_Hx*r4Ul=`z`_l*WwoK1& zs(5de9u{q37~Z(={ztE_QEXpVC#Z|JJYRUhDD#6QNjKz)&lb;G4(K0}BX|rTF16Q) ziiSI`4CVRLQ3-DTzsK??32I~udw=KqM~#YA;2?)AqWBnczj=2RcPurOyTzu=fwz~C z#ZM5NLcr9*F#ln{^I-r-eGp6ivis#9>5uhiyR$a*58J@OuJgG~=f#;(cBy6g^y9-& z=^|5`nimEO74bT%OAB70BEwL4;$b|mD_Iw+(WgzU;t!Q&#>j;Ia!-qnn%7yo0?Rb3 zua!qIC54IVZcAdkAf%XPCW*l484EJlMQHq~Vxb-TEr6?}IM<=Q@~pbM+M>*6>^-T4 zjoXrajc!4>3KFhlF-Mb^|c=_~ClQ~fISSc@F&f`)RNn?s2b7&XM9;*<{H*(S}Ae;?^z7O2{`X@*aBwLZ-Cny1Wb+w8+zCwVHyhsy8UwnLnoV@ zP7i+nTOshn7{Xyl?vcd-9OmDu{>P60r=GwBm4rO2Wkbnk|9b}31<2d1ch&UhzjY#k z9)`Z`g8#Srs7VN4Cr8jE#B==hISsQZ`{5LiRUr=40lRjgdnDh1$pamD2550rqVT~@ z$i&|@n&$-#H^^Oj`M(+h=~4g{|NrpKtnYE951&;?0qEjh=|!^Re>;VPwhTZQ3WaqV z3eQ2TK65%u=HI@(`4I#kse+L LNPUzr3jTipj{5Ro literal 0 HcmV?d00001 diff --git a/images/ch2-int32-to-char-ptr.plantuml b/images/ch2-int32-to-char-ptr.plantuml new file mode 100644 index 0000000..72d16e1 --- /dev/null +++ b/images/ch2-int32-to-char-ptr.plantuml @@ -0,0 +1,29 @@ +' Copyright 2017 . All rights reserved. +' Use of this source code is governed by a Apache +' license that can be found in the LICENSE file. + +@startuml + +title int32 <=> *C.char + +participant int32 +participant uintptr +participant unsafe.Pointer as unsafe_Pointer +participant "~*C.char" as c_char_ptr + +== Go == + +int32 -> uintptr: int32 to uintptr +uintptr -> unsafe_Pointer: uintptr to unsafe.Pointer + +== CGO == + +unsafe_Pointer -> c_char_ptr: unsafe.Pointer to *C.char +c_char_ptr -> unsafe_Pointer: ~*C.char to unsafe.Pointer + +== Go == + +unsafe_Pointer -> uintptr: unsafe.Pointer to uintptr +uintptr -> int32: uintptr to int32 + +@enduml diff --git a/images/ch2-int32-to-char-ptr.uml.png b/images/ch2-int32-to-char-ptr.uml.png new file mode 100644 index 0000000000000000000000000000000000000000..4aa6190008125af1443f08d55632f9b717e7bb71 GIT binary patch literal 16100 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. All rights reserved. +' Use of this source code is governed by a Apache +' license that can be found in the LICENSE file. + +@startuml + +title qsort + +participant go +participant c + +[--> go: qsort +activate go + +go -> go +activate go #DarkSalmon +note left + go_qsort_compare_info.elemsize = sv.Type().Elem().Size() + go_qsort_compare_info.fn = fn +end note + +deactivate go + +go -> c: C.qsort_proxy(cmp=go_qsort_compare) +activate c +note right +void qsort_proxy( + void* base, size_t num, size_t size, + int (*compare)(const void* a, const void* b) +) { + go_qsort_compare_save_base(base); + qsort(base, num, size, compare); +} +end note + +' begin + c -> c: C.go_qsort_compare_save_base + activate c #DarkSalmon + note right: callback go func + + go <- c: go_qsort_compare_save_base + activate go #DarkSalmon + note left + //export go_qsort_compare_save_base + func go_qsort_compare_save_base(base unsafe.Pointer) { + go_qsort_compare_info.base = uintptr(base) + } + var go_qsort_compare_info struct { + base uintptr + elemsize uintptr + fn func(a, b int) int + sync.RWMutex + } + end note + + go -> c: go_qsort_compare_save_base done + deactivate go + + deactivate c +' end + +loop + c -> c: C.go_qsort_compare + activate c #DarkSalmon + note right: callback go func + + c -> go: go_qsort_compare + activate go #DarkSalmon + note left + //export go_qsort_compare_save_base + func go_qsort_compare_save_base(base unsafe.Pointer) { + go_qsort_compare_info.base = uintptr(base) + } + end note + + go -> c: go_qsort_compare done + deactivate go + + deactivate c +end + +go <- c: C.qsort_proxy done +deactivate c + +[<-- go: done +deactivate go + +@enduml diff --git a/images/ch2-qsort-v2.uml.png b/images/ch2-qsort-v2.uml.png new file mode 100644 index 0000000000000000000000000000000000000000..a197397e4c4ef821665cf2ecca98e48bcb6d4f7c GIT binary patch literal 50324 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 z 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 Ljz;?N%lG~lf-(yc literal 0 HcmV?d00001 diff --git a/images/ch2-x-ptr-to-y-ptr.plantuml b/images/ch2-x-ptr-to-y-ptr.plantuml new file mode 100644 index 0000000..7333271 --- /dev/null +++ b/images/ch2-x-ptr-to-y-ptr.plantuml @@ -0,0 +1,23 @@ +' Copyright 2017 . All rights reserved. +' Use of this source code is governed by a Apache +' license that can be found in the LICENSE file. + +@startuml + +title *X <=> *Y + +participant "~*X" as x_ptr +participant unsafe.Pointer as unsafe_Pointer +participant "~*Y" as y_ptr + +== *X => *Y == + +x_ptr -> unsafe_Pointer: ~*X to unsafe.Pointer +unsafe_Pointer -> y_ptr: unsafe.Pointer to *Y + +== *Y => *X == + +y_ptr -> unsafe_Pointer: ~*Y to unsafe.Pointer +unsafe_Pointer -> x_ptr: unsafe.Pointer to *X + +@enduml diff --git a/images/ch2-x-ptr-to-y-ptr.uml.png b/images/ch2-x-ptr-to-y-ptr.uml.png new file mode 100644 index 0000000000000000000000000000000000000000..574ece57ae47876d7be4c2f1e3bc4e528d949c6a GIT binary patch literal 9685 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. All rights reserved. +' Use of this source code is governed by a Apache +' license that can be found in the LICENSE file. + + +'var p []X +'var q []Y // q = p + +'pHdr := (*reflect.SliceHeader)(unsafe.Pointer(&p)) +'qHdr := (*reflect.SliceHeader)(unsafe.Pointer(&q)) + +'pHdr.Data = qHdr.Data +'pHdr.Len = qHdr.Len * unsafe.Sizeof(q[0]) / unsafe.Sizeof(p[0]) +'pHdr.Cap = qHdr.Cap * unsafe.Sizeof(q[0]) / unsafe.Sizeof(p[0]) + + +@startuml + +title []X <=> []Y + +participant "var x []X\nvar y []Y" as slice +participant "var px *SliceHeader\nvar py *SliceHeader" as slice_header + +== []X and []Y to *reflect.SliceHeader == + +slice -> slice_header: px := (*reflect.SliceHeader)(unsafe.Pointer(&x))\npy := (*reflect.SliceHeader)(unsafe.Pointer(&y)) + +== copy *px to *py == + +slice_header -> slice_header: ~*py = *px + +== y changed by *py == + +slice -> slice: y = x + +@enduml diff --git a/images/ch2-x-slice-to-y-slice.uml.png b/images/ch2-x-slice-to-y-slice.uml.png new file mode 100644 index 0000000000000000000000000000000000000000..9b6ad2bcf851affe06485f93e6a0401f77e2f087 GIT binary patch literal 14544 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