From b1d257150cb52ab7de4bbd84d55452f60b8b8abe Mon Sep 17 00:00:00 2001
From: ghidragon <106987263+ghidragon@users.noreply.github.com>
Date: Tue, 31 Dec 2024 16:00:39 -0500
Subject: [PATCH] GP-5196 Adding support for expressions and symbol names in
address fields
---
Ghidra/Features/Base/certification.manifest | 1 +
.../Base/src/main/help/help/TOC_Source.xml | 2 +
.../Override_Fallthrough.htm | 5 +-
.../topics/MemoryMapPlugin/Memory_Map.htm | 31 +-
.../MemoryMapPlugin/images/AddMappedBlock.png | Bin 24616 -> 14346 bytes
.../MemoryMapPlugin/images/AddMemoryBlock.png | Bin 23385 -> 14635 bytes
.../images/MemoryExpandDown.png | Bin 9398 -> 6644 bytes
.../MemoryMapPlugin/images/MemoryExpandUp.png | Bin 9293 -> 6507 bytes
.../MemoryMapPlugin/images/MoveMemory.png | Bin 13400 -> 8608 bytes
.../images/SetImageBaseDialog.png | Bin 5922 -> 3914 bytes
.../images/SplitMemoryBlock.png | Bin 17627 -> 12135 bytes
.../help/topics/Misc/AddressExpressions.htm | 175 ++++
.../CreateOffsetReferencesTable.htm | 4 +-
.../ReferencesPlugin/References_from.htm | 7 +-
.../help/topics/RegisterPlugin/Registers.htm | 5 +-
.../core/fallthrough/FallThroughDialog.java | 15 +-
.../editor/VarnodeLocationCellEditor.java | 9 +-
.../plugin/core/memory/AddBlockDialog.java | 50 +-
.../app/plugin/core/memory/AddBlockModel.java | 16 +-
.../plugin/core/memory/ExpandBlockDialog.java | 30 +-
.../plugin/core/memory/MemoryMapProvider.java | 4 +-
.../plugin/core/memory/MoveBlockDialog.java | 37 +-
.../plugin/core/memory/MoveBlockModel.java | 11 +-
.../plugin/core/memory/SplitBlockDialog.java | 232 +++--
.../EditExternalReferencePanel.java | 8 +-
.../references/EditMemoryReferencePanel.java | 3 +-
.../core/references/OffsetTableDialog.java | 28 +-
.../core/references/OffsetTablePlugin.java | 8 +-
.../register/EditRegisterValueDialog.java | 32 +-
.../core/register/RegisterValuesPanel.java | 6 +-
.../symboltree/EditExternalLocationPanel.java | 6 +-
.../java/ghidra/app/script/GhidraScript.java | 2 +-
.../java/ghidra/app/util/AddressInput.java | 607 ++++++++-----
.../app/util/AddressSetEditorPanel.java | 13 +-
.../ghidra/app/util/OptionsEditorPanel.java | 3 +-
.../app/util/cparser/CPP/DefineTable.java | 102 +--
.../ghidra/app/util/dialog/AskAddrDialog.java | 12 +-
.../core/memory/MemoryMapProvider2Test.java | 28 +-
.../core/memory/MemoryMapProvider3Test.java | 22 +-
.../ghidra/app/util/AddressInputTest.java | 219 +++++
.../base/values/AddressValueTest.java | 7 +-
.../values/ValuesMapDialogParseErrorTest.java | 6 +-
.../program/util/AddressEvaluatorTest.java | 199 +++--
.../byteviewer/ByteViewerOptionsDialog.java | 17 +-
.../byteviewer/ByteViewerPlugin1Test.java | 8 +-
.../markuptable/EditableListingAddress.java | 9 +-
.../wizard/AddRemoveAddressRangeDialog.java | 13 +-
.../textfield/HexDecimalModeTextField.java | 114 +++
.../widgets/textfield/IntegerTextField.java | 137 +--
.../expressions/ExpressionElement.java | 24 +
.../expressions/ExpressionEvaluator.java | 509 +++++++++++
.../expressions/ExpressionException.java | 25 +
.../expressions/ExpressionGrouper.java | 23 +
.../expressions/ExpressionOperator.java | 172 ++++
.../generic/expressions/ExpressionValue.java | 42 +
.../expressions/LongExpressionValue.java | 110 +++
.../expressions/ExpressionEvaluatorTest.java | 206 +++++
.../ghidra/program/util/AddressEvaluator.java | 816 +++++-------------
.../program/util/AddressExpressionValue.java | 167 ++++
.../CreateAVR8GDTArchiveScript.java | 4 +-
.../MemoryMapPluginScreenShots.java | 6 +-
61 files changed, 2902 insertions(+), 1445 deletions(-)
create mode 100644 Ghidra/Features/Base/src/main/help/help/topics/Misc/AddressExpressions.htm
create mode 100644 Ghidra/Features/Base/src/test.slow/java/ghidra/app/util/AddressInputTest.java
create mode 100644 Ghidra/Framework/Docking/src/main/java/docking/widgets/textfield/HexDecimalModeTextField.java
create mode 100644 Ghidra/Framework/Generic/src/main/java/generic/expressions/ExpressionElement.java
create mode 100644 Ghidra/Framework/Generic/src/main/java/generic/expressions/ExpressionEvaluator.java
create mode 100644 Ghidra/Framework/Generic/src/main/java/generic/expressions/ExpressionException.java
create mode 100644 Ghidra/Framework/Generic/src/main/java/generic/expressions/ExpressionGrouper.java
create mode 100644 Ghidra/Framework/Generic/src/main/java/generic/expressions/ExpressionOperator.java
create mode 100644 Ghidra/Framework/Generic/src/main/java/generic/expressions/ExpressionValue.java
create mode 100644 Ghidra/Framework/Generic/src/main/java/generic/expressions/LongExpressionValue.java
create mode 100644 Ghidra/Framework/Generic/src/test/java/generic/expressions/ExpressionEvaluatorTest.java
create mode 100644 Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/util/AddressExpressionValue.java
diff --git a/Ghidra/Features/Base/certification.manifest b/Ghidra/Features/Base/certification.manifest
index 7f03be2e0c..72eaba576b 100644
--- a/Ghidra/Features/Base/certification.manifest
+++ b/Ghidra/Features/Base/certification.manifest
@@ -398,6 +398,7 @@ src/main/help/help/topics/MemoryMapPlugin/images/MemoryMap.png||GHIDRA||||END|
src/main/help/help/topics/MemoryMapPlugin/images/MoveMemory.png||GHIDRA||||END|
src/main/help/help/topics/MemoryMapPlugin/images/SetImageBaseDialog.png||GHIDRA||||END|
src/main/help/help/topics/MemoryMapPlugin/images/SplitMemoryBlock.png||GHIDRA||||END|
+src/main/help/help/topics/Misc/AddressExpressions.htm||GHIDRA||||END|
src/main/help/help/topics/Misc/Appendix.htm||GHIDRA||||END|
src/main/help/help/topics/Misc/Welcome_to_Ghidra_Help.htm||GHIDRA||||END|
src/main/help/help/topics/Navigation/Navigation.htm||GHIDRA||||END|
diff --git a/Ghidra/Features/Base/src/main/help/help/TOC_Source.xml b/Ghidra/Features/Base/src/main/help/help/TOC_Source.xml
index 2b0315ae17..506c93713f 100644
--- a/Ghidra/Features/Base/src/main/help/help/TOC_Source.xml
+++ b/Ghidra/Features/Base/src/main/help/help/TOC_Source.xml
@@ -196,6 +196,8 @@
Block Name - Enter the name of the new memory block. Start Addr - Enter the start address of the new memory block. If the
- program language defines multiple address spaces, the address space must also be
+ Start Address - Enter the start address
+ (or Address Expression)
+ of the new memory block. If
+ the program language defines multiple address spaces, the address space must also be
specified. The address space selection will not appear if only one is defined.
If creating an overlay memory block within an existing overlay address space that
space should be selected. A block within the default address space may not span across
@@ -378,11 +380,14 @@
Length - Length of the memory block to be moved (not editable). New Start Address - Enter the NEW starting address for the block.
+ New Start Address - Enter the new starting address
+ (or Address Expression)
+ for the block.
The NEW ending address will be computed. New End Address - Enter the NEW ending address for the block. The
- NEW starting address will be computed. New End Address - Enter the new ending address
+ (or Address Expression)
+ for the block. The NEW starting address will be computed.
You cannot move a block under the
following conditions:
-New Start Address - A new start address can be entered here. It must +
New Start Address - A new start address + (or Address Expression) + can be entered here. It must be before the current start address.
End Address - Displays the end address of the block (not editable).
@@ -521,7 +532,9 @@Start Address - Displays the start address of the block (not editable).
-New End Address - A new end address can be entered here. It must be after +
New End Address - A new end address + (or Address Expression) + can be entered here. It must be after the current end address.
Block Length - Displays the length of the block. A new value can be diff --git a/Ghidra/Features/Base/src/main/help/help/topics/MemoryMapPlugin/images/AddMappedBlock.png b/Ghidra/Features/Base/src/main/help/help/topics/MemoryMapPlugin/images/AddMappedBlock.png index a5fd31ff6f529cce9982f62235f115861b2c6dec..16ae13088ecb4bcfeed14a5b3b69227cfcbf0ef5 100644 GIT binary patch literal 14346 zcmb_@cR*9$vTiI$u^=EIqF|##P
|5Wn8Et;{q<+A?ul80vI zjZH6rk55Y8nyuf_e{wbGNr`?)I5! u`CB=xY;q!&^== z+9Pe-_N(GooP^4JCBMG5#d*$kiN? Q*`pX27vn%7_V<(SWa`U;FKFU_GRb$~^x@aw}Tl&;%9OfUPxh#dK8=bp3m(J xZj}mh7APTMt!ULgX;_qk%qMiNNoF%t8E9-T4k7`f^l%nTh)MK5V3zy xGXkTP!+M?l(N$RLk|?iEl`7 zl(hQ=27w;DUIfEq)lOt9z1Z}yKZcp-QYpD&hZ7I-G> KJpzpjg1UuGX2jxDj^~|;E})}w0yJt~r3iI~Ir+6tUgXdH(pNQ&p${&)l9dRY z#aJH>`YZ<*b+kmWr*q8^yJ=l!9GR87b4qq|#t;^>?q3eFy(YmH#x8Z8!c6mql*(yw zYQ73DlC_Jq6VJ$xV5`Y4M(XR-7(Yb2G^7ZkwmmxK3iKRL4%ptTmav-^3b+Usa&bFR z18;l4n{&~+FSxIYDp9r9bTrl*CaFU7Mb>B_CD?VDVVsoFv!vl03RyeF1AB%pF&(k4 z)`_zMoWg=xzNStAoI(mYV-d#F2F2SYz1YvyMxonQ%Y)q0(L2YL4I$409PSj==#E-p zk0zXoHYz$HU$@n7_W#25t0sEmay^dcRv7hCef)Qi-vlG<=x|qulJX^=hr0LX$9yZF z)bB*TZYWK=4fP#zltc`h&|BZnKKU|(G1%942;l8Bb8uCuh|_XR(Y~qW8;`8x9cZ9M z5N5!m-P0C?Mb4n_=IzM>hIP9A2-b%}^~W|wGM-D$C3MtZI%1WEW>sk6Vyl58*ubif z+C~`{icsvULIeTY0b`l`fO%|X U~`dU$*Gg-jb%?_BJ-&8Ej{!@*Wn zs~Tp;E3`ICjMIzR8*RASSGTZO;ts==Wh{P0$yidGi+i_jH00J6d=VkF8dF03!bd>( z6<1uI?_M-}m{gMdt$MXtYe&zAW(LfAP?YBZ)7&I-Ha(<8Yu7JS82jsTVmU=%EmG?9 z52rP^jk0!%diQjl>bom4Y*6Z*M!fq8NXg8d1d7CsN|PO1l6WrK27ze8SF8}i2H4;d z^l2$x!V3)d780{bvZS-cZ`iAo>tzPz *` zv$}L`KN_C#b)mDiyy&YUMl+R8A4`I-xRw{tv-Y>*JVNmme4wr@YLa0=>Ms z_0I@+N4fwz>R0zb9K1sRVi-S+<@}V(ogncu_-sn|Lm9+DgXZSre5suETJ0Jm2W)#4 z(+namdNwU*V_S1O%Z5LvwR#1!Ml^9aVXrcoPutz7SdMrKn;e*ydMs?aRkWy6c;d (!V2W+i-!z2?w;CF^*Y zFthmjj$~W*))GO L(b+8;{?&96%||^t-MfahqwJ!Sf{teH$Yppf0p1%4qCi_|CTRen4@M_=KOK zLqj1n)2m!*)g))VXvUcN(4?TQb9jRGhPns(u!BsM=wep%Kv=dbkSd Mo zVBGLf X{eHSn-v5QLOs4&%g z7i93+rS mEfR*KgVgIsiQnB^ zXE_eJP~<+aUv2O{6nY&ogu@2R>sB6p=-tzFXeiz>_1=+M-I?$jV|MJe{=%HoF(0t) znI-Cxq2?li)&tva?8gKP1KCN+C-)k@e-;1A^Q? uLM&)NU7Nj$C&k5_H+*5%#*5Yp0W5)O3b#Y!PE)zY;8bZum}ELl4$M zMk^GSCIkyb=i(PD&p1+^beJa}RKoY@XeYtb^xN(I9W(CkM2#TVk7I%Q#nPN!69Sbu zXP3H_3g${ff@3T)XK6UZk_YKAI9#)Y3Yb;O3Tn`-)9g5Ui7FJVSiI%2iw0RM$tQrl zqw0?RxK_TEyw-8K0)?6O#N^v7S{S4ZW4suez3313hH@6?>TO#k@D`UoUiUC?T00D+ zpZ6_U_V(BLhBX^eTh%|C$ pWJMAYXM-tx41`2<9DXu97_teY~n#?{#lDsCPkXWe-VpF5N~74fY{1p*yE< z1f-%pd+1iJV36*udZ)|M-9hZP1z21g?1rQg3QW_Pt3~u$>tU(WrJe>WkS~6MW&71F z+ot-$U6}Cvb1x#ypbYhdi|T_r3W$S|{S=iz?SeYAUgn(KvC5bIx`6|IC+QyogaqNo z;47eXWrtz7imx9wu&tS7QW$u%*`?ON_}=|<7UQv~iVg*tA O P)&jn;kbs?p7=Tf z2*ee(L5+X!vURc;i%}%Y(s}>;>sc&IeEajeWOvG+{sQNdLS@K`KB%Rk*bxVz5v3!# zTxaniR}E!;fumh3?oNWqvS_tAu`JV?_@~7_bwYc5jNdJ!+!u5Up4AwylO7AgD1Q&n z8H70b?s<=V?dLXSKh$fP?=8}nVHye?fIA{)U!ZP>=|0Pc(m%WrTRK{3JGj?Y?TgA! ziG3y$UAFfeQ#;;~iRN;_Hn~(B1_@{OK!t-mskF?u0=4%LCA;oDw* $O-6P%;|L9orpOgL%{(#MZ7B_|pRhIo-h$ zR^F3-wKkwn9QrO?8?1A|^n$G8`0f~Mu|#ppxA~VsP8f&kD$Pu5(PR3+-Fggd<%ARL zgr_}I;*j%1Yk;#RBtXr%
dH?7O7>)U ^)>Hn~lSkRz$zWSo9 z9Z8}t^h?LA$DD2r#G0aGfRA#sE13dk+nT!}%`e2CY#Ilu-d%|NLFwcMlp2*CNAKD* zy)%T%+ SV(i>Hbx8ZZBKLI1kDZm@wrR v~wW%WHTJl+N9uQms sCk;h`K#w*if!g4$ z#9u#`8pgDB6VYD}gXk@$j(mH+Y))vLYjmIf%ggrT+Yi|*y{coF{q=5#QPTpB<|F-< zWj^W34SYzi`$edduvI&W)!Yh>U6x(r7kKd%cg+ho`mm(i7#2G7U{*fvdVwGBFOorJ z?8uuS7F2V0&DV2el8he#W>e|ysOhwuDc2X7KZ5TENSUH^$9++jx;#l8l-PpJ4 B~U?IXjzi1Jv2&28~ziQn|rJS$Z4dH}w#-_yr4s`H}vi_1^ zk6+FvOPRwL?Vtr+k5c@{Vv}P8w|Q(>3rxW)$@t#!)&(1iDCQ+FdR!ImT#e1yE!R7! z5;zjN#%bp+>K^tJk?2XUY9J7}-o_73d42P @q6@ z;W^RLmN8u{(lZj0Vv1v|y5WF%9*33S#^drM%L!H9Cy3N-MsLv^a+e0&5MH3Q$&`e_ zR<5_)zSBI+TFDu4$y&WJ!Zae4B-Jt} gx1@kD#HIUqgPr8; R-E7=hEwylr z54AbZ;X8bGf9lWu_Z%o}3&*% C *QMzwc=9jZX?qE8Gq9{V~cm~UVHXFYb?e8;&U2rJcLEuHT z;!VXhWuhsTu8ykszLW`0dnsq7w40qeSZGI_KUquj^q(l+){fTSDm1j;cbWFT_6zJ% z6H%zHGRY75z26xqJ&P4Q%ZJHl%Ro>M>wRO!D)Bh5Zp`yu72vf#I6V6?2cuX6R5Z;M z<6w8+Cb4GK$+P&?Cl1-UxR@GOs-y);BLfM_Nc31hP0pT`SlPQTDF~egNq#!&-6|wF zB?6g#t1f-@iI0f?Bgca$vT_efRHe-gep+5|7-B-8+tTtdkSqOX@uh?V$ta4>n0w^` z?HU;NpZ;^{TZj)dw;5vcSsOH5`Vjs`r#_z?En-0Jd#xXG)zD~v9xSH1yB8~PBUZaI z?yPSZ>Jww>%-JT$)u^Nihyc{x#kQ7Loaj}&uw%Lf&wtuGYlmUMzGb1miVt~KeuSUG zKz)B k-SQ}sl^$56GYvXS$ene-{L0NU=#7}1yEzu {<(zT7~=Q0)1S3~=P&Nr9N9_4GP|2n;Vp=2{)Z;x zsP4QP&U<0KSxu0$A{MQ2Hlp~S{$pInMmK^ODQL?VihlhxPNb4$f8z!NHSq-<28jm? zA!&{dVh{G(Ms#(>z$cI{o3fnEoVqxF)?y0aYU+T~xd6&QHH`t5Ei8;U3S7H72cEq+ zyDD7PAYTwdr(=h6*~z#i644PArlUZX^^pupe)~ZYl*tE(_;X0_!Q$amXlkX$wuASY z^=)zc2}dr$wCBq%2#*@RBe82^z0PbIfg~_>Pflym@4vjo`oS**OT^d{;o*SP#(m0pjwNO{oYR90Ax zO0(Cez=onaV6)Emv-xDncvt}wH(o>5bWV0QGE &2Igq0X^g!Y_6*H)T1 z&u;pnQ?j`LlQ#h-Cwsb%jdhvTl$XjX^S@QGl;~h)jk@kL!2)HacVEWUT_3qjX^scn zx}SJ`#EOsOL`xvesR5^J{O)vlUVw9+u?paGXNa+R(ES}kOcGEq8Z9g0hzXYDjT2 zH)q>y<1Y5tQJ=qSv^964^D?ZavwoS4n=|>zu>yAWCRP!${h$z7`YrkDPQH=j635K5 zPm+M#PL@RjT%#BPS79KPh4O}W RJ-MMZs%TK62^!#QGe@!d;RbUXe0RRws z9Vmc1e+r%i!vViKMRBQ3ke|O%k1Bv86bQ_J2mAj7S58Zf|A1mT9exErIR`S6U&|{b zbAt_9z$Q+?spfxj&)>WJ7w;8A<4bq#k$x4aowKFEHl6exM##z|Z{3KetkaZC6sJH; z6>bQ9S25E)BSt9>Y_QL+{MZKNkw1m36gzd7{!d!V;ELr6faQ}0w@SAHu);U)*|!r_ zi`iZLN0)Vig;3hya`!kK&6XDKNy3xV4YSho)S+2=bmC+Zp9jErf8M%0$+8+P;zup% z>GxQPHxs|Tb0FWFUbJm;vyqt|2+(Ltfjp|&=-HjR6mpI wu27JXKBI_#(Ps>c`;9V>d%>|6``z7evB-JkfQm! zVq`vlXc=Wq=~`RvO{gfc)zFHqDWE;!9P#a18-Es`+=#}aQ=5$cwjS8)nrP};!Hm~O zOqJK^cDV~iy9iOmgvhq@r$tsSFtr>88kvl$MuhXcYLSdiMO~^tKVqaG2%NE3s+R+{ zWwUDpFh$4gD8FUKA=pr0z2qyw07yG@C`QPtJU(af-5ZZ>Wx?8dKSxR45}Vt et#38{Z-MW>yb%947xCYs?0>no|M_Tp4;U6X-5Tw_J<5Jo=b0d}lB d)OU}=!!Q xM%ziF; zQ%S|h&u` )Eb9*%}j}J>m|Yj3{knS4+~G0%M`wv#jy(<9yLgl^Ww>j~c+& zdM5VHa pn;!r_ =^8_-02 #*_#KJ )TpdO@MMG;OnBja!OUuNBl(i zY;Sjj4p}sBqs4RuVA V=^6zp)*1nEN^Cqn>q^6wa0)~1-iByjgHxj~ zVXe1<4=d)U$IAL9hn0gJd>Xhu_B~;{=JO@60WO_3oUSn8>7V^6UUk-y#Czvc2zq*Y zz1kg-RlVPRYD0-I!0?w^6SjTqhW!Mi6IEzE&&bH+Jb<&Ny&2Wx8aJH$JYBX%&%5?o z&_zfn^QM(aqW4=>(UMF*datO-=AM}?@cGKG4we&v4Muy*RhJMN3vj-EJMWJGdGU*k z)(PoUbx!*2N#Fj(c$ymor*W83OK=ot!U<0emz6Q|K#9ilDIe!86!Y^B7}}|_wMNHb z$5nr4s2l(qKRvtUsjdV6kz#Ov&AH=z;77JQ-vQ=iS*~A5YLBn?l`>SQG(d9^ymJyZ z;J0f0Y$;gm^`2H)pq`B ?NowV3~U z>1diEnoY+aEON^Y-v~#i#k0)^tgmp>hu5k0k# DTYkHvA2p&Cm(L($Nzdb#>!y%Ho~{8k#K|#j>@l z&44rnFI#w=-z<<4ba#-nZp{Bx#>t4hx`flfx@ZS|&qS&W+e*rWEAiEK|1nr!f@d6f zR*2r?mhjOKGv%W!aVU~96T e ;6{`5$liu5Bpgpq^lN`=eC|L8uQ_GwSFJ;dZIUd;Un{f`#t| zP+3BGopUkrB_BNGKp9A~t8;S))xOu{{@lH9lM=!2JJH>N89ND@SX*}UO!>=g$KjV4 zy#we@rbw6`dOt4vGOBdEB~`L-5w^|0)`80Xba15ySIR}|I=U2t{qSxn)-#jlX}~U| z+-?f5aX#p_T~Y4uw&ZEZXc|k!F?Sxl>*ILAIfCBy5prSO=^8P9`~ZOZgIu04^^_kRsGvFO z9fN^+@xwg+?MlR1#ao$xPcdY&_A4bH+C#R7a50xx=2!Bw@>jGTAJ{BeJrmS1<>)GR zGBkSkg)zPU_?^4-IRC>;gi$PJE9D{Wib3A0&j{&Hez9P4583H$iTgs1OS4Hen=^Ra zeH^=!=o(gf>yhuyb>IwLdX0}Jcfqi)4bZ+k$gu{U2kE&9R`n{%TXR+i#xbSwH5Hyy zpV}d6--17SP`r9z&`!K>X z#ty%4ed(xc#k6lg^>YRw|E@k^oi=7KQ>Q3A`|ruY{~>Jo|2IhwIZA~!ew~!k`b!ZA zWM=<|s_X>V4Hckz7~38LN~PkBVd;d0A`Gf*L+>2u#k8do-lFq6^7|azW?y!+fm7;X zRg}SH5Qy4#6n|IYqlQr0cHs@;bzxUw!7?g<-lJoVGlClJm-)5;JtG-KJ`;qw&3$|; zH~w3l>AnGw>%k5ipDqv53~H2xdxjf>hpPvB@lJ36+Luij7YBWGIV?N&L+z<+90SFo zn=ly&mqgn+Q#0$s2Xe!p sV?x#m3ig$&`W-koi&Gkr`jQ2z$h4S2CJWGXdhIRS0B?BZ2X zz3c9JWC`%LRem`RQ=E1hGPmLbqzLxRAV4eb*?gH>a{o6ct=#Kz5!G=m0cp)Nm-29a zl&6Q^QfohxA&sGnS7pr%VQ|oM2$Uqdq2?)z{FZa04|aptv_dteN1ZCST$L2fhMJ=5 zeQlm1$6YHWR{?t2@5ooG_gc~~Fd{Sty?Oo1#7jWOIUAfoDG)CBJKnW4L}%OvG@%Fd zClbtd6w6a!k9S9-NBBcXFvgSt1ZrBF-+!c~Pk$=+$o>9&N@dlDmo4FFoUSKP;(Bu$55 q*wg>Bd*G_S7_?) z&g|Q1i3mY` i&XB=+yMoh8k@I>Au$a0 jb?q_o&}D~oB}g2F36WtN=O5jCRl$~2 ujB5i(= kG_v^cu8=oPjEAWc%0 zNkkRBBntUg4_6J23HNmVR80(#)Ua{0BPztT>S!aeZ_EJ<$vObV&L7y +vas4Jh`ANd!m*|YS=RGKtO;O3uX*Wl8i*h-J^X33if(!%L ztSICUJDU&KSXW`_NX2&7#{F=+GR10uh;Ws{Z4JW!HO*2PTr+$F9U{GJtx?KVm&%b* z^mW%=T|DuN?+uM_CRojH#--7(BfJ&dp@EEm3P_vqFcDrQPBm1T35JeBvCxNr!sUc@ z7L7kQEJ=y-3HGaV+~e_DQ}BuJ{;qaPH8#z?K^&iKo;+W{0Bm5at?V4T`FctBkq~sh z>6D#Vipr?Cp3@FV7#-go$Bz@{aQ=i8&pVy$(7DN 7g#F&OsLJz_H2j<5BX+ry+AXKjiTrPw$I4@>J>Uj7~ zdbDM+j1SO4!@|v|p$6yx12JuzBVQ6xrA9!{PHWBiJbP7uGAJ5-&N?$%QnDAMZ~NTl z(jBj*@+CYqPfF}z%?t}y*M+7jfQ^z;{({=d*oh)O54LQ08ea26|K^>rAw@uJvtDbe zX#)6kLKF*Um;7IY5rD&7HMA~@K>@rZmF&Vbdz}-Z*~!h@2h!3CWOowiI5N2q{u=@1 z95-R8m^Mpqd43K+ycO@5?^w!^V0NZxn+0-<8|V6|d;gP5zlQ=oErLyd0f DHY6Wm-lm<7P$Km!+XeiHqX{xZ zc6z)5zrc>?Pnn)nH<;jAAT;m*G2+Hcz$Qto80*+mCr|+*h{7ogl0yzPxOd7W{R~4D zQk}9B_Dzr^RaVcnyo*!KG^aes>0g(Ud%i1q9`gGyI1=%EH$=sO<~6Ib(Z5Mu)5yvI zF-kGM$nNiNf)iOzPlB9!6+F#6eKh*D_Scn4e5Hq01)&1Qph%Vj$@hYF atp@6$OzA~EANeVY`{)Zf(LUiYPQy|f^G?f5 hm7HbkVR0BQFI3$`9)*l*nvm16>ePp&0%zn@=hD)|{APyJ=^HePlm|(5a5j zx%6bS;c=K-T}NPbk~ 4#Rrs~bPCbU|kNeRN*c zT$E)e&%r^O7Y?8Jb|ieC1LL)&j>Imh%$ft7@#u?h?J=o^)l1cReCD1Br>l!tg^;Qq zM$ugIq_6U3NO?XI_-^{my)d F*&`i|3@HN$3XkCBe^_*>z0VuY4FQQ zC0Ck#xeKXfgj8^x>jkdLr1D^0yOrO^7G`bOKzln9oG+6Vg0(!o03~&Z5Ar15y&L )HJJ=rQNypsFuqJHIlEEu^LHMG7I5Ip^TF6l&xN?T z@ryt2TM>Xp2G4mVq}X~K*_hD0H!N_NprNgAbMsDuPtH$>*~2NoJIPq?{^h~$f7CaY zzkLluH3pozr^p7X^SK0GngGZOLYYo)>f?6udVF2#JoqY2R=;Pu{1qFb?ukY*%KP=C zw|VIRoLq<5Q^Eb%0C^ 7RM6Db|l(+z(G5%xF#DjC%fN^$>X#2F&18wG(>zGsGGnw9oWqiUC8dRW|P zm<{;%KYXGlo@26amM->PuS!uknm()VK6O6;!;-j?OPuG8w9 XBEuShM?b<>s?xFa4i#ZktN%L39XO)db{0#^gm(b52S4~SCEInIN!A0AeR z0z4c~vWFQPd~?Qh!>Kq>&{Y_qD`iP|F5vG kfK5}*_5)?wqbHXTv zE qp@GnY@qGSvKp zgh^~oW#GowOAB89&BW8-j*X5Vb+(dqshx5{RLh;YWrxOK+x}W?ugNoyG&wnp)*5#~ zuK#0oLG@XnkBC(gIE=FEeeI2C$-`2(adJGm0BEYu>JNcK#Sf+H94$HD6?V9TM5w0j zAH}=VXCbWtgk>V>4j -HJlQy^P}Lfzq#O?1;z3FargJ`xp>vlBAWe&Lzsbd zEUKy^D*m5OGI$na4YcWOZo;Jb_RE0M@Y_e@l*KZ0itdcdhu&Enckvw0>Dn4H82T%f zNyk2-3@0lA>Lr>eB0WUD{AsNHBxRd0HacAN%Gag~t3(7_P`}dw_%4(fc@0g@t3o}N zXADIY-(4TG=(25;vwf@>Jo?|>KZ-AXU>?cJEk%!F_L-$Q+3NsifZZmFqC60yl2vSr zYL&5HY2Q83o&DpPCx$4MO&`xaZ;?H|&&CCxSCA#8g|fPEtn2e-jBBqb>dhzdSnzy0 z{I3IdTm=I%qEsfdSQmS=>M*$EIb~2`nUUxx?yuWXGXa3Z3A3J2_~B*sxZ|L6ZD%Is z0Cc4_4W68{Ds#B2d>;W^d9|?LFp9-W=WhetVcN2~f^PqKq^y(&B393}OxWC5kGp8r z68Uc-+J6t?{@+JPE1hCR!8>m_?oa=2OB_-Py5|<341`RO{{Orc@&BxG@xL3LQT?Zx zG6K~pB};Zkpy7%;Juv|Q#*@$f=S!Nb1`^U0DN3L}7=A^7E*6LY;v<0e0sK#lI_V9S zX0tO>FHntNCasK2L!?N~&tZP)wJGif`voJ?Esilz%$8%L*%^xvV2GIw&or|ou^=J) z%ZjS)gA*OGercT{i!D#n=?zM{+pN_WZ(f{xI>D?iXdXHi*s!dM&Xc_X3oZdY{05oS zCsS$8XLWj3eene|hU86niCnrv(}hI3(}aL~_Q{Q21VH~cFPcY+42E5%fSy?k1>Sfy z>2=(X1=J?}st~g)&_!UU=gsVm9Rw0FKIn;v=&Q>PXHMJt28suPe6iExv@h!m=m1r% z56Pe}txuPHIzf}2z-G*P+!vtPk|MQY2=Z#;RTNwOuF~FzId9mnVRIn3+!DfnMsvZq zaLR4BF(gUk__J-Y`gf%$0Oti5_3C?oCX*10vQxY5*oO$-{7578*%zC0Vp<1uKgO!D zOn>pbL2H%G3btI3CeRbXHf7z$ZTr5leLcrJ$38$!_OsDh98L;vstFmh$2dJ@r5S%+ zbX5`9F3BHD1YE=L(}t#?lS?u3qE)-)^n0Oga%7AHU-8+I(PE3SYC1=G3nB~6_LaVQ zqt$~C+!;c XiQbFI?bn4<}uvx zJadCP$c|iX0QRRlPE9TT+Yx5?^&0{-zvRj!*v*)o3gGD$8`~>ohAc=C{Kwc`RNlE* z7K;*)`@d}j0%8czrhPBucf)5Fre)s~Q|}E#xr?{eQ)*NQ_LQMOApCew_+6d|o{vd= iixOxI)%;;_B0cD#XZe8UT^=wNq$IB*Xf)(V%Q4rrELP0^HNJ@w(K|w(?LqWZYg@=Y5vC6G$ zgM!jOkrWY9ann0Yhtp72Ck0la2G#dF_ysLCm*kYI32@ds&+vUgvJ@??cm6G?2%=LG zRMEk~ffW)oZl*=eLk;x%iWC+8)t==%eUpZh^M-~z2i>pZ=1zeBCL`X_Hs)d*lom9L zv1$|AdueG?)>o<*UO4xAPVyQa2Kt*|obF~&e|(m+h_EkVp}~+Jph7^13>_XO=g_Y) z5FdC%9wTCM@+mq{@Z})mESR?ZTJ|B1j9EbzR%|OeOO@&potivyqxjEYUyRCEm+xBa z&^5iJqHra6oKm}G9z_{2J%XBv8;<5FUv5aIA+*Wry5qbaCM$H)$hn|`tdv+QxJX{E zID(0W0fy(hJfQL%V<*t2Bq4{~68cy87TkKUFyzihTo<>>elY|V;kNF{>b&+*^8oEm zQi?wpp$r1Lv0LQxeWlQ26-jcm6V9SM=K(lIx%!8h5y0W$+CY@4eLg3K_;aJV*)H+@ zcP?l<3F2Pgs>pvIM~Swpd~#b}$E6dM?A{5XeioaW1AW-!Z}>?orr8il_pD)m`f)2e zop!2-O#Zk(|A`R|l&9P% gK^W!b;=sZ46)DMTT035KL zL#VfkBxb4i`ff(lj|Ha~)t^4AD5l@Ij(3{ERc1fy5-Hw>YwQd7sGc&-IYt1nc4I=H z+v@L5KisE8YVDt3dPOdMF3v4m5-*}AYV9Few5N!NasMXTy8~*yG432BgR3M|p Xs 0P8lAZHCF6xHU9y&189J&ju+9!v@YOiNm+p0*0ra@ZUwOM5+$<6@n z;;D}$g-A?Gu11ef5~km>kX(a98f8`6f9nwm+uNUos@sv8-~{MPJ{c*0YT{QhsGxm9 zXz#PBnO2-VqMXKL^gdP~$+>O{*TWTriA@2=C{2Vsa%!X=NFY*^mmt&2=PQ#?lus}Z zxdkz0N{1~Rc)5*~hVe4QjWf(OZB)2E9cbF+P&oXc>bzX4Pj6C1Pa$MP>t$Z-%~(!2 z;cfsO;5NKxpCy(1y%?Z
P#clytM%-K)G^1@ zlCNt-ah =%ZssZ zCgmw;4m$patuejy-I=~1**quiWuEvDkS>Cz6ozJIoV)i(2k3)~ ZG65m_(5W*xkGtNP2=uBE#=^szmaR67QT z5p6Kp(p!G@$#Doare%BlNI*BD%7Gqjf|+U6*D7TySn*ms@ZB|`?T&zjP14b5k#EFG zE)o+6M|5@C0Z}HU=8l)1*K1&Hz^ZE?Hx~Nf0aF4g@110=3vd1G&BxN%q3h+e=C#`* zlXYNHBaL-Np9!0B^UoaJIefHe-oD42t&ptjP;b1$#s}a57lSuw@Uv+uW2<42lTw&@ z>Q#`+k9VWxn`K>Q$1rKqL6QRnSh>f%G~T)QKhI&R$d*-t0a=}Ef`^x~g-nTXDB2Eg zjmv9QsK3~CN3BmgO7pzWb;dc7@s68&EzuQ!8C_+=3<55npuuf(n$_g=Qj^75ydqk; z5EMXn2MmVaRb-DWI?? WObUNz!;Ge*sqwndgm`N4hLf7ktxgJ-wu?G~q6`++RQB+
XS7ox z72{Q|thgsNFrRjul?oSCF@Xr`sL4`neOtSte_jOVy(c(1f@=z`&!Cwq3RlLr_%`i* zwY_}RJ-jg5M}*ot&PQdcRks73e2jFv4wR4@StTR^IJI1l6R!adLk#7{H;ABvnX5B- zeV? U uFil`_7Hn^LL363HGaOHI$NAUX2}h5S`Dt9KV^vBL1g1EHfV>aQCIo0) zaLciTzGY`5wUt~GXb291Ex@!GUo+lAUXR#zXO}*b=e_8w@k!P4MrJY&R@|cqm+L0s zF&g6(@Tm}Qhuv8u4I@Iyd;ul>h8l^iSDbiaUgO(LIZ~_^re#mSRSak}N`stdMz8HL ziTle{Xv&Gb$z(~cu`pF(aO62sW?N2me>dmQ5mB*K-8%{@w&04P?@Yw~R0r5ehAn_z zKsR5Q67=NlqIdL|UaJ933|vYrcM=nHKOoBawd;|D(Dtsy0bmwP9TVD{mX+*^5ey94 zq=Lp_T6D1tP-n78U}Ed6%u@)ix~ZnEK;6(IIPM`Qp%_A~UZ*-jH&F^cyK$tg#8ESI z_IK;tlc){>koASt6)R|v}g-q+hHB=s9m4~nkK@+=2eEz%?@tIha6s! zM zmZxIUk35!4Qs=}ucz9Yqv!ei0lGC)gA3K*U 9k=G6! zPb@UI*9|6sZ7;ObZ;Y4n4EXf +f5eAsiv&aMAqC5T8?U zL98(WtEJ}WSNgm}Y~Cy&=WtIG2qq)#-C2%>y5v|5?Y}we?)^!n3M4zgul`K2f6hhV zd%R6~?! >ziDp-WqSw_uA4vuBaiED@$I>)cCxyzLv&E9Td;V8OfS7=mPOPDHM zJLw!9l6PqK0uCNe7(xnGpD*Vu*4jRu+a*R5^Y*F{x?g(6Ncfcji&Qc065WabiE5yI z`0&v9l{4kpfN{>oerq0+E`)6kJ|m;~5P$o;ysdMx`vhXHAGK&{Ph-i7L(u)*B6u_| znwNI9`_xU3 RM#05K69Ea3E63xiI_yq3_ z4rL-1dxu1J@Pm~x@;;+kb}qf)uA8ahVi@7RcUk5f{o`n%k1O}pTtcYv@6v0Xtm=LW zQ&5OtjBuc2eiVW4@VVeQeav5LpIy$!ix+o_a52f3@ug+0ql+z)X0y;}63gk5ve|S6 zYo?BA+kN7 #}_Qjc_LZ-StEuN*;>+iL2{KK$z0+9Gx@0JIq%uHXf2v zp0jY#(1Q$f&^>~ZDK@g5fmk>_M1^FuH3{wP+Q*fZGwtoT(c`O239*+I9kK<;(?jB( zmo$&Tp&fV21_BM-!W)Ly+emtShQ)jS^Zgz+L2Yy8XN>+U9nXT)_v!5yz=Ng_?XFBm zuZyt1na@Gp6-k${tYF!6To9$p9aeu 48W=buCgpwq=ZwtwD*AdYaz_*!5yZ(6=60y1}sg&tAxx@5ufAn%1oHw5yxb`67 zIlQ;9!B6(v3t6Gv7@!Dqa=ZJ6pNcYB+3o_nO4bVjY-wIOmKDcz5;FT?bFiRC0&RM7 zElpTEz3ckoqlFx8Q=%vYKadsxg|@MwL LiwjE`m}esLHRtR!?!z3Qvf4%n2PfzS^n0k z)e5{*{b*I_y@5? 7qYtKI`w`W^*v5P}4NJkWJX-=yK_R4s(A^|jN2x!Ns~=R) zAJGR);tT(oZro+ja*}X8URsWD`o(Jzsxy&?W(YJa#&%b{4q(h)B}u|SKv^gOABX~S zieAMgnp;@dYYUpIF+JUI- o$g7v|k2PW(IYMlMe;yvU)W&s^M>4q*o zTS9AJG>!^)`14UiGTQFDxC|$bpBo>=RUYQ?lVse@ n~e&>AkV<^p5yT&>77({%5w4yY4=YWE |m=-@d2MEHcJaAO cV?NmY*{W~DSV#FIQRa{P z-E(hFBGeVrI(Zo}wXtb?y|vI)VnE_y)32AH1f0UC0ur^_DW5ec2#eznatSNN Ub5~G=q_XgUWw4 zoQYz>=Z;GdJBWP0aRiAQeHHLYYYq{^F)AT~wXY6~T6Mo5xrjw4tMtTx^rFc~kD5rd z*4>R(5|j^a#JL|lGnmXJSQB0_Fr$Wga--kZspl5VWvuzbMSn9Q>mbo^s$YjRHHOb# zc0N;k;egzMUIOB?{eUmL*dNV?dWePA>p}&a7Y;Gn7Q$}rh6jHOa6yxy{d&6{)5e*^ z$pD+f=QDfYchqLsI43gElkL;D@B490%8R>gL4@pnGPIVZfe^Ahx9}}H(r$upl_$`G z5^&wq$obal1+0`|^sBeh&4(d?zucbsCt geN?17! zv5{!)If}<8?cvWm{N(KBYdgk|-o-8CY|1iv>}5`TAnaid8*jX|TEf{L3ruUR4AaLk z+;U3`IV V2H1h@w|>e~i15JBqiMiPh9c6I|*_(y;iuJLwy zGr!Zq6aF!bEQue_WEG=-vH){)MiQ5SEL{UWy9S>4yX?f6a!w-JfGrn54|&wSF^0Ry z*$EJL@M1i3>0K<-`L6&e_ax0v_A?XtIkV^~n4>uY2I4XXCphB5*UyPO!YlkL+{9D? z#S}^zQvU&8ZMI4zrsdq>I*%xtZxlP|a(JgZI&c*+8s0 RNYwlZF(^oy@(+vpw15lp`!27|uJa7GEY8 zzm)vwv@LoM!$8ABqQ7pRQkKyF!5w_uRm#~JDoOOQ@91*Uo7G_nZ$ fo!0nZeYIMbSOv0gd{W0Zx$<9gX{)UNxbS zhrezZXf(BJe?P?Kmr{AhvVwlbBJk54_tUS|Pfk(MF|?sh!AW778j_q+M9?@Fu43|f zzG*tK+0r6-j_%`eD71&yJ#-eCyiIws4ECTwblcRR5TbX#Zs^gN7w`Z*=o71?DRp-g z>76Js(vOeitDzPui2qDO`mKn+2^KN8uHzjBQ5>|^fhh)rW6u?SHhs5{D_o$)2y#H1 zL$3njdam5Z{j @F1D#!=(JYW~XGHvM_ofL;os>Eh+13CiC#{S5Qpk7h**~iG z%h-r~a1&2utjj-^|27U#kZc;Ko3j>p%d(;qEdOkzeEXm~0g8bax$6u38Rsj~u Lj#}*g=HYF0W<8F?u>a`DhOhBOG33TzM;xg7ADgwg|tpJlAA`4(|-BiEM*; zlmdp(q){$OBZF@Jw)#vj)F*m~ACpPFSe_4r9o4Yu1iX-@3T8okmpf(2Wk(r*30Zk` zI0QZ_boh+To#@lo5SDllbIp{9KQl&7XIPet#L$`u7IKiEw!|X{4YCu5a*7VwI76eo zf`U?@{eS#W93C!iM~MzEl8=1tRfz2-VG~uzKvl8pv5y3qTM>s)!3Q@9BQkj$_fZ(g z@WEtLZ+Y`r`>&!B5^xzI^WcDYlZgEago27kLphI{Qz*~YI~2jWi)+S#cY}vgxGPd1 zp{S2KkC!|0Fg=1BcH&Ev+DTZXE}6#RZ@!LXw8O5#lrGco`3ZpfIw&rB5#=<=GVGn^ z@Hmfq@bL| |;}nP_WiIq;n%-HVqqlg!%R z)^Q;jzXVHy4KEh%gsG13#1@h{pATd*WGF(zY;b#PMiC<=zNuZ$QSVtCx7BJ5rOnnO zVvz7T)tG-gf$s7SCglE@?yKpQ^IP%L|9=16?*_*tg87?Ed;z)kKGip~!sS;UO@)$! zXQESW8O}wgbf1|jcTCUP-_Yb8v(y~ !!tZW3`4v{`<(CLE zsukyBgWHZfU `gV&nb>eh`H?B4tsj`95kyg**&l-GjxWc<+`iWnqU`~#z92XRc7mu4` zCD_F#Nlb{x#XII07ipF!rv>%a8ju3NTHUa*$L2z-q1D7M7ycXzcOm_3_>j8vVINHT z#u{nG{%F}4^a;t{a2V0iU!RBtG&UgB-e@I^WK$k_fi6JV-7B-|bswR87U@t;+Aa2` zdHyo(sE@vY= }m z(k+tcHU#uA$#a40k!(+DthFlVN-n~*ytvrtn%7QW9})Vv 5jqQ9r5s|=CM@PrNfSl(wRMy(xuUh&`&@nTYH#TaV<_q`ARX{0XxX)By zKta7lg21Xyv(uh*0y=CH^d>iCWEGm< fv-S* zN~x!u^cW`9U;j8XE`zq!L+paT+Lj;uDzeZDR6X>ggHMiT3yEEdb2(9m@mCeQeCka{ zIKm+^L0oMvm9*;nJ0-fS@fOclNcVLmU8TQDmr62^qQNIBgP0fm1LbB`%2?&mPm>(f zb%X3kUkAfzJm@yYH8u(;IRl>(W1>?pcCTlC_$F$)q^&UyGb}sl8 nR9%KW_#wtTxjt`zU(eaKOR*fMb^mSd;`Ru^$I;Rk)ptAcJO$*t7u^hK8DYCEbf zfRtst87@>jq3or?PYt~j=DkCe37xU;!(h>5PVb|@dd`WRz1_DBgx0?6 $U zpC6pB7zCUR=hnXr)Vn951Pc>-x9qa9Q|^@XO;?!K)s &H1JGhG zG(r^L-`z(}zx`o&Gc8B6s#3`|sDJt`6T8)6Gcp|6jk`{E5ltT}Ssd@6q1z}$G*zt5 z{lh^Wan+vGEOF%m?kd5#n};di6TDm2DB7ysN`K~;tpdjD@zSn@RVP>J+%aX{=KTm1 zH&tQWo|+oR;TF3vU)olMT43BX!x$4316Rs!c7F$9>Ii>)mmF@VmdowGMD(6oWRG`f z^8HM4%AukYXUQW#H^jEY#$xRaP1;N;wran!Fj+V*@$P(+{GI?iBJ*>ca@HQrGGKvH z9B(r=Y%EJMXB{&0Y=-n!2VTY-Su0M1p@q$d#1lO{YPd00&d0|_^LJRdQzum%ysXc6 zHJ9w6JTv1{c8kg$B?9L9?X^PN;l*sg{@&5icl7kZ@p4KM-0Gqsd`>ocl#YGaV!|Q0 zO?wZ!nAP7mNz!j0zb+Sd>Yfd+F&3+4XhNwta7+Lms4|P0Q3#(nK)s_DEhl@o$OB<| zooN|WBb{!unrj&J*GKD&PJxqJ@_w{+)rc70;BNV)yV79Qek=w`6J<_F6wq|~1wlzZ zdmgE34K&$&Iv=Muh&1|ab|3XghU9QAoW?3?9CN>m=gr?(VN&nGw%nW7MRU!7A8T*( zS|OPfz1c56SQ#99Wpiv#IyarGCvXNkX2!{ZzLA#%f~MbkZQJXm2(*NEM0@{x-jjgu zw2?WH$2tw;z2|rk;32%x^-V~*TyXT5Abt)2a3{T;DHB_EF6D*<7wexSQq1eh0W|$* z^$)*3#_;oe8Z;gzx1`7YD5`&b{W-;x#pGPwA`|f+9?vEhPha zX(V*4yAAd#KQ|R_9g*P5oY6%`Wx=4K%(Jk^pBxqPk=K4N^Q>s&9&S68iTQONm7}$l z3@b=2uFTi{Thec*-=qBS35%pA%wetxxc0nF+U&r|SNNM=z|~ct7&)mY&W+A!PB7zg zh!Ue!=-Cvp1`<>?suw`YpokbI>PS^+h&dC4N$ienro9Iy=KBIzR&bE?h;L=nh8PMS zRQMF`x$M`!V v;5;_86ZF$D5gqStL~9{ z+<%)QV3!CY84~!Io9#vL!;;nQ_lmUZxL&kNx3L@Qblp4y=p<`%J2j@P`g)wTRO|6t ziXYU`bXr)o?IxixDHSAK1)SHvDr|C5u0{G9-Q(v@|G!rbc?SV;AJY=C2iLKXi{5CL zHpXafN^;oE5W1=8=m+*xlDHUck@zr81KZQkjQ}v0<^Z0nta FomH__C`dkX(U-M=okOBIiw^p*o+$ZsQWbJ ze#UgsoaoGGGa&A{wQi76vLFcxM_|JClsLVwwqegDVWd3X<{N1ttWq*nuU%)-G!Cr% zYon$K5wtDZ^hJK(?q@BI>6x{?59YHLx6ote1IJA~aD}cGWn-l!q9fpi=y$opgwrM2 zx=VQ*^RkX$x+utmzvF}J#ipp1FwHYy LorH&{b(=evs^vvDsc!S>RqI66YpC=9aoH&|!x}nZD00#teQ3 zZ~TO WPFA zDjoxJA}BmuR$3YyqbdT4a)LTKM7%J9CeS34_=t#zK_L{Bl*NR~`eeq3BEkUy0f)#? zUjw@`PU8Nj8m1WK`o;rNf@ppobCvoAobDC1R(k`bBK8s^Un0BIzu3uk5S;07D*Tg< z(BDn+Ub@FAV3vvB@uHQ?15S=%nRe$&P%Gb5+Lrp%i%UK5WRPl;K k z!cD(wSC_ebnyH0 zMfET9`63E~2nB{kW@cT09cXB9K&JUOYqMm!A{@I&9or-AG$-*P5k@8?6(n8bZB$f^ zb}rH?yNc=*`xJl!nZ(@o2R2t31FF1FDXF88xbPv$XviP$R<3hSxjcPlMqBsHpTi8P zAx|&J{1fmUXp1|tt?R}hD*+m>+Itx4q*Q88w#k!_#J+jnvwZ(S$1Uz~ddB==&6=Bb z$S$p27>(ZY`{0&~Bq|~=HgAQ;v-cPQ!r0AKB`d#(Q-4QeR^3^acVeqJ$5HM5{SfBR zYbe3H*Jv0N1q5n$B@Anf!Z>~j32HMKE9>X}H>}8==H$~_l{X1aVsa3K4IojP?ibIR z2fV%>ax<|LI6}x?kG-K^0`IF^e0Ki?h$(O7g;dL&r|7?Y!{l~k2M$#*K<6QRaTVQw zkhgd6klOdoyMB&S&H280ku!a6CB|A*LGQ&K2;G9B{v_H~&^(&(4ZP`{?JSAjZmpZ` zplrpNH%H8Qj&U647<8xTo~uGBR-7KILO$ImvTx;)oA%ht46ss- W>5S?po*xExus^V5Jty*kzYf$_f5T=r4 z=_C7o72CS)%2aC$2IHRhJn8YtL!Ipbwfgs)-x>P4ixonvzNGN3WAqG=TU)LnU7{lm zz7nO!IH0|@)@v|DA#M}1VJ_ngq}dD}VpNn+%UjwU4R0_02cD21dCuZ9SK~d8{@T-h zdvH-Q39gUl=p2cUq(DP}u~UB7xv??GQ`YS(GFgTFmb04Q-dLZPE+n7${brr5C-NH2 zW_sm#5efFiRb;&^NEiT!a$~F(?YnPz?rO5 _!O&TsYIyfdP ze|u7PB6d*WtKb{kV)z;YvtN =-)CIqbRKEd}TgexSoK){E41et_wOPEnd3^>;svM?(eqsgIZVA-4x #uK5ikutlo5r7y>I7hsbNIr;RDOg!*^Yco4K{Gh}!ly`4d#o(=Ql;`4HJeF= zxp$0@tI#Ahn1psi$ 8{5|au!;Vkcnw*cjuj+Ox7?gvXgD7HX^^TJ{Oikifnt_mlv C%08JNx8cVEnf+HagS?U;gko z5bH#pgB{4#JlY!i-OL^3AL$J`DHC2}r!z>IrDGDiti&;meEu09p3^G;{l{q_(f+Km zQlVO22%@zZ&X&37o$8wu^w5{9P}C?4nba(lBy2wQXrYmC%==;jC?tBTYBRnfoXm^! z_kQ7*=mMOR?aHq&2A*NWSBHFJZa$seYw8!$FPkcY>;GFx|Gi0G= 2)<6 A#lLDq7T?Z|<5x$ee+ zN9Sr4H;`7sr!U2QVy46j%lpW3@m{uh;CLy)4tqgabPqI@6Bl%a<@vEvyCyI~FSj0d zmJon-K5s&oNAHR%cQUDwsUE-5Fv844`qvm5Xx{Gs!#e#RPW@jk;eS<$|N9#K|LTl+ zAdn&!sT^$!c_B8RO5&ALm~M@*QgYzM=~|ajUj!_D05)0A{0By2{q6i)HgVZA>d427 z90HOQ2fCdv!xyfkA+U&Knt4$4y%n0 E_(*XznD0lC;(1qCE*RA>)JS9e@mu&GNl0H*&@fK{~VcrZWAAvR=uW zPRd+f)AENs_l!9S8)is4aGobQA+5~;A>cgZ6xFcMVeh&NH@zi<5TgvMukz$k{Kr=L zU{%tjF%CZKnMr-&rxcZVQnbpwX57#yW{dj-qxP-ZgCNdwS_zYg=c3mAc`51VXjG0l zS+wJb)`Rzc)oy`Mu>bufw8L#)l|Xx~%{7!Ggo>SUwoFYzORIU5deb6dK|i7~9V)2I z+wI|E@iBv$stND7gQD-8m&%7fW7~{M9Cq `>SS<@3z zgU?lW88UBEF@ae{Uvn;%l$sT#8|%uBTtn+eKUg*J2BwSV7Im#qw!f`@rst`vrSrfx ziSs$+D%@%KV9h>3eK^|%dH?|%I(2F5KCtOK9oK+f(a*d*LN1>Z_Z{^>%6=;Nu o@|TQT`SF_hG#dWUDmyFgRcG7WSr^W3dM?j5 zgtEwP6mPF8rR!zxf88GJs|HHiYPt 756UBWaGXUWiO(_C4+r$$KRd_e)lM z7r}>32ya)jKMUdQnj?f_k7tjgW9DG^xSJ|fkMZ};hlg_76_s_WZB|SGIpboh?_%C< zCbRs` %ZcMltLyG%f7c2;ow^R6|-M^NHj}SA?4VZxmU^FUxW7 zu_CwOBBqYk#M+`m{Af9|90KeV{WFHTu-HuOG=EeEuCMvR-HXjF;v$SUkms9o*Cl5XGlOM|*wvd^HaHs?+!wpfW6dwpsK+b8n?! z4C|v)u>kdL@b0H&&)R7FXO!%!;^gA0?1;zkgNTb<+tqP^!ljl;xZ>#i47a85Uq+}P zHn&@L`Ry1tz2*{~$E&HP!*A~+Ax1B9Yf{OnHR>>!Yknf7omWrMiMU^7X&dlu&FxtE z%@?_M+4qb(N!WN$RlOrUffLI!KTZ6I;pugd`N5LkQ9b^2Uc;xG$Ku?myW$XF7j@IGSm6ZlQjeViI73Y@-o3}Yh7kONcRm4Q zWAmm4ya#2cbbr~LN%4Wps%h|TqMZdWcH1
!)AiV&Ug zvPjRA)1a{Xr5^QNEr->Hhe-T(B`L5PcDv)Jpq51Uhp_|{@X4npv!DgEArWcv{I<51 zC)&qoz0N%u+~Z*-Ru rbe`n-QT80Ak`YVs}n_D zrK;Mi MU}miE>D(*IKoZpYe-4XgEEDYs=lm23V$tnLz+9~$nN?W z{nCJ9sxnQOli&*-iP3()X)#IYOs2hek^c}P8HIc;`CYbayI#GUIp2DJ#c(2j%*D6H z37(@LfOp(R0rzevw4XJ(a)33tWtF|1W>W^FcQ{aSeENE_=Sw$77lXbkwU=m-Fd1w~ z#3}9;&hnZ5r#$~+#Su%Do)Sv$?*j(P{m{vG6!MNI)Hn3%QWn52d5ve~uH?RfUke>F zJUoaUi*0S&;`@v_JXSo;82LeBe4isPQ|+2gwA;_uO64q8Ll9RO3=xfVz`Lr&0)`#t zgE%>P4X=#c&sSy~NOBDI5Zlcg{07QmJIAU;H;dzs72xY;4@A8i(E)mP9<$k W5K4W`DSVJJ3)?9MLDyDGCeMliD( ICEm;S5VTK~mb4oHzIH#cJO*GN5$a&D1Vnk-;$HQVj&2AbR9p7XXQLa6 z>e*R@Ic#1P2vEzoiJ%EhSk-kWe)AAdud*VGOd+&z^MArw30IwWoTX<^=YMzBleNC3 z6g(NBd*{t1Y|vkOzm3|^KQV%{edUXWvuvY$?nU1$67pt9{)VUoLgjZmDN1vruF|%_ z6}^LbyGh bT@he~3BLL0Xdm9nPsKf&w#<1Bubw=I Wd7 UOu%2B3W z8^5Q+5}ZDuZ&sXYDwV+^YUeKMzjc8mH)cI;K3Y8G*eoOPbe5{j&jUSjj{a-Q3xjLf ztv*UF8)7ifoZ9S)fd{TF{j{W5P eD_2;}-|O)UQ#Dvm9?kxy*L?HKRa)+gsjzxv^gzGj}!(#(?l$#vHDx zC0P_xuMx%@QG$O~_M47L{|FxrnQvJ|?NgceYtwwS8e_S@VK%Av-u1mmo@IFrTx%Z- zP{5yHbXpRVlZkMCcqEnYmhOf5=k9Y5AK9~VF>-=`jl6GQW!~GV64pfwp%pJDblH8# z4K@Zsi#Ffva?`v{?=1Fa-Ms2uF3j4k8+@Cawx=DQD~FDdun49kpYyD3-vx@4&4~@X zHXvbiV~ulb!fq#vS7@$68sO)v3^!PktXN}>JkQw7?-gm3H9cBtul}tayAV+$^ZiDk zo6e^lyKM^xMXleaZ?rCzqfUe7W2Og&c?fWq)TiA;T_ypwa;4fAZt!l6HuK^V9^*-P z97HbXr51-- BYjs!QK##4o)K#&L)D7R5$PW3F!-tW)W#|d8vZUQVnv!E$ zf0~k(rSCK~()9%D9kFs#c$eRd@SxOOXp62U7D*%u4^M?&jMNTqhq}^@8~-28>y; zMz8Y02t|l5S19()H+)E;Sx6APpmMV$hUjJI?X+>;bn+&E4e8Dtsz_CEq&~PH>?PKZ zyd59aNaU?)ra5{ueBH>j97(a+d+zd~WX`-n=ez}(JS2l9z|I}kA1Au0MZbJSJMLMk zycOO2J8 ^|y=YIb06|Bv%s3eXpZdR2A7%*2p1cQs(P5<}-#5+6%Ws$FT~G|BuR& z|1WBk|DWH<5kqtTTWhIA%NHX-I3{Stf`6$$p`ML*H`k0)f6=s5#MJ@wVtovbH{uTZ z>NOfze|(W%-}Ip(RlUhYgy?VR)Cb1^hDw|_o8d^tJEs3N5!ReUlwbG4L$R<^(gvDc z>YgNfR_y#ZIG-B( BH`W-qU^PwX+c z$yCDG{5ff`AMy02!@5m8^KS|$k+G|$HzVesM!7y&J-ObQ{w4)qn-r&%`QOpcqs(v@ z9*?u6k@7<$Loy-!?Vc-RzQhHoZy>hDB;6q|kJtJmbn^1}`40iqf8Bb$L7NE1=CoTe z&j0Zdo_AzSCKy$3xg$Gx24lkI6QnugEc1ptV2ThX4~*^5X(K~;Z4ck*!otqZ#qjy+ zz4n4P;seP1<`qqEN0YA6@z+? FwC*y)^V4TrYd&zF0@-nqGZ`Xte60_%D qxwZ`;>6 zxj&%D`r;cN;IS->qd Dw2UEEB5&Z&PX$=`!ln)*wEm-1_0faq 0en8*e+u4GK+$?VBa=jVtBcr={7qdU_wLAV6i=8A^m6-q*SNy z8#^Yi<}h-GEa#tzudASjkT@KuDPH6*P+nrcvk@bnB_JAwLlG#bB3=~@wCFqaL3M7A ztJJ4Yx0Oe889# 6YV|y|OHI(@3kPNNx9ZWJ@_veDtI^>7by-@foUtc^4;Oby3Y= zJQsO8v)iEvWK((qDNd7EEoQBHj%3Ft6!xo;rUe>i?K(PH|IEZm6v&UcIo^z%MkUem zFk8w+Na!q8tX;BK66}qkM!vt##;S9|1k8Bfkh$%RU-zz>&v95T+Fz!`5}e@Ib;FaI z7mfvayuRL)#JYGo(zn~pPLJXD`b`U4NpxpK`8q?+Cic2(P9!8Wrup@p+w*dRE*2mo z!e=Uj{ie4AyCI88I;+-*WrNr3(!8V)!WCTVW;XF#!8ueypi0Ghr8WA_Se}wom!0?W z2}gi-Z*nF1XuyL``P6uotn2C7bV~Gs4=zQ9=Q<^~LOpT2!Irb 1s0 zZ=?AZEex7Mq>jIv*=pI+z3kHkAk4e; 2W}bdb<0b_fi_&e9lteyJvycW zlTu^^&U7Zra+pkrJzXALvDljvme8jv8Gg12K^zJ`$olZ`FeWBOV~;8z&rww+ny O<69-C~MJQN={?0Rbv@fz;B zlHmAHkly~y&T>FlFQUs8>klq%;e?oo^g7nx(=W{XTX UYGNLC-Av_BPhyB%2`lT;alIRX8WYnz3COnG z@^ l6upBmvdIOARV+G06GZ6?Zj9{0;FYn=yGfPmm} z^NYCGSlB4HscPw}-oSD-C*BiBf=7_!MR}p88iJ-2cOcjS(sc 5jYqf z2=@;oeDn#+$Rllbnz6b*Vkte5z_fj5x#%=|R;C_P4lgf1W?^~SRpy;Yy4m5D;dvtV zz0W$-ojhg|a}z-xIX%9*!r#C*@!3I-cc}H)WLZkP+V!V?Bf&50+k^`=#0(tXPdohG zwQC&qaPh|U2lF*S7QHcAIm;;Xg^)FF-AIU~p<;|CS*-M!>LJS$p|PGyckd#B{QT2S z|G8DW*-q}1?u%Lj&70N|t(Yb-VD`?pK%=%yy)-bw$LK=8uq9p6 5qYnZ}`b;?MCsn<@y#@LCLZXo1 zlrLoJ!}i?Q(^K_NAkFskgU-q6@9&4iE~s{@{$Y746%CF4bLeoLU@xB+0Wp-9yIvF{ z286eV5={R265PDx{v4OlD2Rd}`1T9j3vxM7|7q3J(LzE7yIcQ@4mk>Lip&cZ^NyDU z6Y>eFI<5h@s|?xsnq$rP{pH^yM2cUN2t&5tx&P}nH;yDGl)(gYvDddEL%2UT*USzf z{u^5Y7+n6KeH>27{7a`FN )* zoN+wD%ShqoDZuk}RGzStmC5d}eN!K77fj|?NoZrw7Xqeb{EW;pKA!jzV$Bn<(M5;H zl(7j_0auohG{!4ciS sVU~+mx%@Re>75G5x<+d|65hv z(7OUXTV^Zpa!$G9$Rcy3ff=hJ1tGPji66zkktfizN-NzJco$xWRvZ!zoJPgGD21Sk z6wDKV(7op#c9Ld=QvLs;w+OOGmm`Pkc(=f|2M1|7s1wjgx&Jo>wYW|`*~;8?g9}Q> z>^4D)Grlcpnu=fp%@Fm{w(dtNM4QW_oT1^cv{Dk~mXw* ~UjZlW}vA_#}YoUV1%4z}22d%o4l-;=?1+nq5OvTJV1pV%pWr|aDJrj>y_bbVog zYkQfqw*%{zoj31~k_L(aH)ZP|!Z~V1f2O^a-0(249elX#h)g(&^P!!NYnpx_op=-Q zpTaq8le{~5wu;rIr!OiFVq)hrUuOV#FhP@!|B@$Wi1{d??Br#7L7pM3N@Ke}>oyBv zlEVHwNt{o;7r)Nra)a% Ky%=5r9)SGcupLL*AL%6GEUfyyXd_!iGq@EfpV#LD {{ixlhd4bV4AC?^|1=o!aFaC$Bdj_>h_o z<~3I*ftZm|$R`u`5Gx~~#e43)kfN7=)!03{U;d$~KEkF*Mj=ieP1HP6;6=!o9%T4_ z-^pOJQ%R#nE?*QDC%YWhdnc)8ZhW+DR7`v9AH$?}6X&$C+g-^Mt%?sPy61)SUv(LI z- =C};{m&XXpvK<+YUMhkn%cHCB1)5{fJhaTF1-Y#cPXJr z?}&7e9zd!hQWa37_iE_UrE?IFD!qn)KnS6ifDr24c)aIc$GP{7H{N*b*Urw$+B D7*K}sRI(7B&GMG#wC{FKJFJPZM8y#1;pzP1(R* *&`{q uOFtgCj9 wQokd)>Q%5v1BmLZqPe7}m(Qg&L*ynZhCppfCF z^)+>8yN6SvOlBhzU6R*c8*Xf|Z*?t9OB7t(BE56S%gV#K+SEt7L|kkcpO4l(3jA-9 zx+MC?dd1>ZSXdMU1ACf*BZZr2rPFc+Ia9g}vsX6hp*%Zp61Fn>nothoHGq6V=-C+y z98k|;PL)1R#%#`ZKv^{EWYFqgHcs^pw0Vc)!oo#Gg0k$Mdcr9wtHf6WVE<7g)1&hS z$i4}JE4f}Gm3PJ-E;8I)HkorclhTF*_#O)OJ6o_HoUJRp8wHb4fOo6nP1`-&4fx{X z=|G)w&f77;lQA%9dUZJVFH5v7e()YI#Qr%bt!^ZU;*vHDuzg_<;8&jQr`Vr2$_p zoeU_M0H{L($n}50u>S^t*#N{zzx`y(Y^YOl^(T!h(d;C?4DGzAl%){6#7V4P0^N;E zgv4Uw{H>E_esJ?U1%W3qMLM5o#?_{Bv86{Zf2^6mn1j4XLwSH(K9ghV;NWmfz2vw` zqI;7UGxGg0mL?e~)B?BYhPaM0pk9BadPQ16IxCnC%D l%k-tsVmT8rSn#?vOIXR7+7R|DjKKaIMSZyJD$)mTu2BHM&w8d?g*b%AljuU4Kb z+Ex*|SwOxE{7_ um4 hf6t9kQcBDnjo>b5m;sj9fbYPb$((+)xQODf z-12V3tg~vOCetH`&AsH?@RA0h;mNYHr$c#-HGWnJB4^rK;+V%rF{hR+<|YJK9N59{ zH#J-6_c$6FK3PX~>PJHJa{8i-s*OBr!ZWf0Sn4V~i5m~tKHlBl U4p;3{i6Zo-wzG8NGJDH5m?M#w4<8v3+V5&EN$bxeq|Z$qy942s(_tG8k`4G7 z1kdyJ4?%xd)Ln+(NBG)3{b+P6xPw)tf$O5h M#wofOg2?@>+mE2b!;#{Iy!$vM;La zscnENgOT{@FO;o_iVx*^x~IE(GvH1l_KV2qEGw}OjbTR$T2U}B_ctr(rAcq6M#PM^ zB4tn0QmgADAUc;a4sA5lRXPq||1tOeo85zf=EU<4pWav5kr2&&9U{HQIc5~2ZTgLN zh1o9-tXd4@`401^BOAFU clw=TxL%RR=QK?D2`*;I5)tmNV`VN9l%veEk5)t)tpK4apjV&;qkJ>dd z5D^7cM^SQzCK)PqO`bk)M9>?bSKJ}Wzx8khXq!_gq)a+6VCVor8D4SHaY3 zlCt2_-YOM9I)&Z|Ier_~K--$0ksf&Rxo@beXjA*U?IvA;?E=eQdb_jIFO4{-8AzE% z`H
mZd^DA4`&grAIa*3nnacSP7pjYP* zh>6?;;rsSVC@-eSGot0qrLmL%V{s&e9sNzg{YYWNJK5Evwop=|(QBzpyVmr{7ECWq zw=yhTiwVx+?Ys|uyC(jnp!s~qV5+LiPAa+G|2fwVI>v}5S*#->n!+ %@fWqx=Cti`q)phYnA%=hV8XSE}WN0^WKFFi1wOph0v6iEPq3X+c5FhBeI zK5ZN_s;nYT=z3?Ii)foEP99FFF}rnqP|jUU_slCk7wh$&z4~9S1)E|+Iv(?0g4_<& zwQ8sH*hc+0y{fTf26g@!dA%_lnRVV%cLeWiueOt_EB#0xL@NGvZy&EQ^ 2f-?JbUxwh5~X&ED$K|E%2K^DJzz z2ZqT3TQU&bjA7V!r3}E84Itd(KIwV~=Z-G!{AlvmBK`?B6ti;Dx?>M9f%Lzh{~HLk z$;IRRhCG)@#;r#%mCHe~p(u3g2NY{a@HbriUxDZUe 60)g60IyqoR0Q!Zs(c;+ z$5?DHHg6E?Bx~#e7sS$Z_(`DwP7BcHpTzek!TldTSby!yHrj5QipY|eTy6+ZF~u4K z9up+V_;>NE<+T(VKg(1de!1P;lq_d!KapnOOqXCLc+-59d{V$q$^u#JQRwMh*qE(i zx{&L5adfOm##zx3iS+>>(MR%m=*iJ0+lY5O&-}ZO2W~S+h-0Eq_Y|(Noq&-V z v@VB? z@4Jbh>{@X~Q{BsrS=-z2IWNb@C8nkpLx|>@6Z8Ycw<7Z(xtSnnskYNT{3O{g!vmff zh=d&aGK78>A573&jOxp4T7w T)RkmsF{)}Xo{`&B4Y7e8T6 z nK_<~%0%HrO@sG)65W zgk93VWJvWctVjfIIimmQSj+DQ4bt^Tos sYaI z*?4kj<*@Q7S(!&%F$gNKW*sV`YV)9%h7W~#D869GnA?P>aPK|)7yrAJ^bJAi&L8&e zzp_il_m;eAWHUe7NJbF_z~?{vq|FOlRxlec9dB=vNNIfYN$@{dUdwjDwpwR7YI^qU zG|+9T>Z8sz_C R_7q*puMhUT$4-<5#-Zi#373#gYF7RQ;_BEUh8 $i)|mc@bEFxx=HBKWE+u_%tSWr0p+ zM%N$r4qTk{C|xJnt4r{OA%{Yk 3wD-6RP$VK7nq9bh^y^7HA(s4o|P`5%| zycm)S_rWs4yRTO|pk%5Rs2Jb6T61S#Qq^}=s;bP FpU6z9_kpCQJM>74ITi_$l(R^ZZyN`N5O8?I=O@>5~3{ z`{j;#NQLqBlHp#DcwBFLJ)WVkYt*@tkB3HEqOzw HLwi170p@;7(hRYv06XRVg0J#p7DdT`vk zJ6rNqrL6c~7*)c3jx;VZyR$WlUa2=jbnLcsIPI9Y;4t)9XX^FuwC;Gb2q%>qOX2af z(U615a yfZJ`q;W*g6{>*#xA%8esAychhnCj|@yVweqoW6k` z5wCG^v?Fflnq-eocxG=D|G0--GK2t XlBm z3`1fISB;kYMpEvD!o5FONWW#0i_d;U{4!;PSYbu=%>9NeGsyv7wl)NVoe#T8Bk0RR zsfjsFE&|YxE&H|GMdo{jHldrbxGQ6vxi`KXCt(K@-9kF5S0!AF3thZ>Il*cgJ$#!8 zvM#e0HJ@rf((8pxl+1qV!GnWuUbXL|)BVd7->t|yevB48KHxp@HmD0YOtRr_7WW;Z zIy;tUU9Y9t=A6G{?GI5RJYi#HoiCY^e94~ddfxHf&0oc56e~@R7%0GqjRn~6-TMdt zIq?cNX>(jj0HEB76?X3i(w%Jr`l20gfmb(U(cit~(2u%-NI2 +sAwSGQEdUcX~QKC{5DY&OE49Qcg)Dt?}GKPxp42hcxj^ zi&(j~dn1CIWs1Y`d7ty%G%4vGyam5K(2d#Sf4}&?Jl@!&K$m!2;&WP>>wfPmBjYgE zcLW=*#D&`%$<+LTy0iH=BTRA~Zc25l#u(CI>O5x8j$YAX|8Y0$g;JjV3|OP`y=5ym z)Nx#2e+S~^UYiu?G? z8)E(5@dy zKi1c3jyeK)!#`~)F@J4pUa4)Buy(R*HRHKKEd;@w&t5;#n%UbYne(;w$qH&~;}e*d zI@h${oYc*8@dN6K8CqXl$z^G2UWZYq2M8ia@ve&Eh% g?Vfq+wG;vo~>(* z150LR@kgc@G^KSeYHw>g` +;VT&cntt6fd9_74)t*7mGJ7%Zu^~XRFRL!Na#AHzouipI;^o?Jt zXikdR&Q0Z3RnMAXd&%%cukAH6-Tgds=X%FLV2k{7dL(p+)15fOM)vwVqQ3?uyJ@sH zJMXbQewi`A_$6lL;%uVh)5~T*&s+?* Pz0Ymu{(bOGK*;D=a(X_N9a8mr{M3{jSUDEN^({R5bfAE??b@_vefU_8 zK#Gp}K-Klor|wgJWu=5EyRYMDbFf_;N 5R^95uRSq4wp}lHmNWS*%1a4nP&C$jk|~j#)>L$& z+!!Wm< #Ks_wd?k{M+1MmJ*E?!{MPED9_1)>}e>pb+mj@ z#E2$V?mPQ02Y>}TG{_~9ADw?X;JquM2P~wezE@w%6Zsl_@Cw_AS4b5MQ+_P$+4B&u zE=^VqlA;d{mMS|EwktRYmJ-#de#mOHwk^cXMV+l|cp*q33-?uE{F!E%5 >iY+O1 zk1OaZjdyd=WNBYIqe2}O@MuCY)3)5N^QqiTB_(efEW3Ym&j2vsivnOE3k?1{UPL6x z+5K#$6S03D$=2$L%1g+|UAFZ_n*m0_pDlal;>v@;Y`Qo#8R#WnQ&v!yFO#(h{s)qf Bp4b2Y diff --git a/Ghidra/Features/Base/src/main/help/help/topics/MemoryMapPlugin/images/AddMemoryBlock.png b/Ghidra/Features/Base/src/main/help/help/topics/MemoryMapPlugin/images/AddMemoryBlock.png index ac077c9b3a6e9133c2e3a864e103b9fe1bb5a4f2..224b8e3e34ab3155a1eebcd91ace1a2319f0bc96 100644 GIT binary patch literal 14635 zcmeIZXH-*byDl6n2r4K7A_$_3jzNlaVSx(LMS2On_a2ZE1Qe8}(n|nAdhcK$Gyy3A z=`Ep?P=nL}fp8|Swf27ZID5S3+uz@Fe(0FY@|3$?_jNyc|58={8pRz75D0Wl;l;C8 zAkcXh5a?VS`FY^Z!12Xw5J+@e;hBu4x6uY%I*i7Eu|q@mYuO9aPpz$iZ{HZ81K*xw zyg+xE_o^;Bu$@i!MOocN$}7S*dH>M;Va6K%wv4V-pWL3cDDwA3Ikg$^;r(` *Ld(hh_*eRvYBzNWvMbCtVY7zH+)C-=+X7( zK%y%@G!}WI5C>y=LY)(&vc@g1;(fJh4>n^&O7Tor>}glL(=EH&g6fpyidzL^J9|?T z_#x~*(Gf-o0=Wz(Zh$M|@k6SIGY)fZIerpj2QTxU{1~0NW#=58y*7b`C1EkjOLFWm zwz1datq>3>gMJ7i9xZXGG%<)V+;c^eILG`nZ5xV*n_^efl}3E)SAz{tJily78aEkW zR{&`)qdXEYYKXPcF~;b%rO>ylJ+cd~NY5u@KI1mX{E?=(l&lX{kE)^VN42j`G?4pc zKLd294x1tVfJjsW5$gdHn8UKl6DNZrX=7)}yaeW3cbd8*`LeNDegwCYos0o*NFj_% z1g66zw{%pdd6Mkh(CwKPFKkqEf;jhUDBvfT5pOmAlApHJcMqBEY1#HezL%koJ~~UHs+r?Q z)0lQ5K>YcJh1?fDlp$Pi(A_LAaH}>;#=I7B^xE0Wd9PVIcDxtOG-axeG_*xK>FOj- z{ehjPzQ>iVWLdst*CwYaECaI?8HIQ~WaJx5iC&8fZC@RFwWMBtT=p`+FwdX!F*1QM z*lj^x&r&S1TSdi2ijL9vL!?apKG&G{C;KPd9xOWO;+8Ip9hA^Q_ O}z`5f&0^;cNW~Ta4F3BNVbm7#}y<-85e?*sQrFlskRdp7ll{I?)1xd^M0igwKV; zsiqXGmlS?}3m 2QI{; <$jJ@155DBxC#vwJaa0>873wU=7rNaI5&zE$)|DHX}N6vIQ?BoOJ`G$T-$ z18Ck(nq3ddESAs*ID}QaIbAM(+fwI>PI^FYK9#D5;shcc`WlAL_H24+Ab@zuJXUZd z?HM 9GO!;vl;Y~(GN76L$0w` z;TQ*Y>uVvrJ5`7iF}MFc8eXkS84~m3=6Tmz>Lxe{IuKfSQl@oMI()2Ipk~wXPzxWY z58WvaJzO0!JDhoSXqA8TqB7}~xvrPf!71-!Se$|L4vKg !x~dZ|qN;%q!{jp({1fIa`Yf1Q zg*l;Drt;q-IAHi|k*r;2ClZ$)^;%yIz?S8Kperg!la13=_*6SS%ZwoN#a~bdnOHc} zRhyPDS-OU?zU%l3VQhQMDK^#_5O2q_y+`%7qtbBajezV>6QihlA|opn8P*lO)ME*M z2Tk|VDw#>nF^L(9eEY0u+XVCco#}RUZ|??J93|o^f}M`$N?Ccnk+T4v9G!sIqXb>) zE9>D#iF%*hF}%x8p?VUB<}dobeuwE5)xz**QF1F4?kfEllX2DDE$Ps9v(kYs!;?xj zP#c=Q`u^nm8QC(#^3J!DqDs%K27g3Zz=N@GvBl^gBh2&?&Z`ESV^AqaFXI|UzQXOe zqtaI!249ZA#xRXM>F&oQo_R0_6UyK7wUb+V%6qa9)tC3Reai4=B~7-j6+X-8_Q(~5 zDny9NgV!?n%nGD!a&{7<^qcq78{inZ)ZhhV^J4 yx{1f+S3Hm+3~nV75!T6O=`QV-{QEvy6%h(;`l|)9d`)0PiEi zUsXz#7;L6;tgHC%6o+{w1RC6 Dv48X*JO^+55y4B2ik>i#+`ldt`B|)vvI(@NSv;D)^5G=gXW* z+?gKv8tcWiDW+8Ko)@_ZPC-bLf;q|AJ(iY6?nBu?R$E^%&|yy@rZMc)h4V+4{je;b zCK17XJ0>D)`vpOWmNNKc`9&$goaYQa1D;yf?m>Fxq1VGH+!90{c0!nO@@gL%$2L$R z@M;lMG1b}>i}0AS=b9SNUVrvcznRK0=diTc@br>Wt=mRuBt9$Z^bUWsE4F9XOlQ`T zKafT#5V6~|es#L$9bdu8STPB=LUk!5XK_OZHJSTrFJ _p&7KCdx{&EGGXu$;pW3SM47Dl8w9nHfa-R(CH16=fe~y*x}U^!uST zZEY|8p}IEvsBycaa1^`t*nNiv1X2}k!OxrG7QArkxn8-NKCy)`uYgozqFx^9M?w?U zF4%1E`4_k9JPKU^X52Qb@7YHbcQ3i^c_H^j4SbW_Nk7In75#Mu@UML1N)5Yi@!jg} zPdf(!nbiaD|9Rhq9)MCT=u05bV5e)sD6Dv{^o`}t9{bs|j)n3m#YNt8cmX+b)(|tE zH;4$52mrmpF5rRxSAr41OGmR{5a^>+9WdBes(*i*mmX951QfXRJ-y<7GbEm}5oTa4 zkB~kGiYH%ULt9o45OYP`BB*71{`mdp6^{gE_J#NNLVlW3K=piF=tF+qT&=4QuPBff zjXA8*zxn$P1vCj($aW4YL;moK_8>$6ywta7Ct}~|JjCCNqY mD{pYyxZYv8Za~mKtn_IwHW)AVlEN?U9O4)J!Dif71FloxD1j7&k 8DZBY*N6Ma{VLN1ueQdxBi^0~@9Mef z1Vrm7qIhtI?J&mLxV`CvKAX v zI;h!OIb-u%cy?Nt_J{E8DXzCFoyqsdGbr?TJ2BVnK7Y{*$AZ(eYJ#{p_w2u>WiT>C zOqK&;%HfsY;+;H<7i2pUj2>u^kGT!21hCyda^<;epFE$A;Dl~MuDNHsLD85D!_LWf zEK^17;N*OVrWr4?C56>M<-R(2r0+V1gF2*w@ta8W6?_o2zHD&=B0?6A_ydmEMebD< z?369&S@Mim3{4&ed96;59qsJ3^uKA4FBQhGSdVAwSN1oc&i(TtXNo=k)i>SkqHQ#E zAoIOE8mj*6y%8;%xGiMAEQKFE&7aDsH^}1plw537%I-;Dom0|XH5`;9Gh(j=gOmS< zEVvVTk_?u-; l +RU4g%b z`W)k#?y fV9Yp0!Tp?A#Z{A4;9ZU{L}y4^O_ zdo{)Vbb{s=iGZ|vgVoK?AdTDE_mB2Yhtq$sQ@Q(6q)Hd58IM3PRxM=@ZI<^D9?Ple z-mqq#6-=~&4&=c#B0sqwJHC`RU&F+66=t-zy?;>kO &!+{;>)j5^wbyo!;WW3hY*1jz?~;3x9?{IpQV!{uI; zqYYC+t`q$oJ=ga1M)SO%{j9R>F%7X)$dw)|6c?~k@3bSf)d=JWt6O{2?H52&Ztwh9 z*-2AVqkH@(G`OZAWbo5i=ugK-q%f^2#B!iR!{qHvmWrr|Y75%Mp->um8_#MF{5%?3 zKbD- o@1bIP7nhl~?HCXyRrD@Rz0gHh zYQRZ7+{$`g`tIZ!+FyuuYb6YH5emBTny}V@HtFQ`fmpa5jOj;eF@k=NE^%A&ha<<0 zQGqBAdiZE8I9_>T1FSmH_a du%5d zMHeC>tWo+A_t9(%G4De$^m@RC9t>=GBn&>sy B6R1`fiC^Ra39W 464 zUwDc7|7pMdLiX9CG8Ji4y+QNKcB9ON0727 FZlhKcIk^tm+zp%yRS?uU3J }KqAdpg!wB_?a1TVeBvC{?Cs@StoeU@EP z|GSH*MA6f8mKV=bjo4cR6F+dVtV;pCG8@PseMfD946PG_7(dNz^l#dL;50J3$ytRo z>Xblay$1tKQ3!zZ;X8q>o-R|;RxKCLy*hh-OCES`%FuL@0hdl0yAp7s?SEiz!^3lz zp6^!Wgu{xNEn%nReWC2a%sX!SKH6_;-*Qk9N&_h=S|llNa`%Mo?Cnv+%IWihAUZ9Z zY1@*farf(Sv{woNj7N3@fAdch{Y}YLAm;a;j%p$F?57 74?D~k z`xbYPD4zNn+dQp>d+*cM)i+t)GsS;?0@n)8DGE~V<2qqZ;7dRuvUGrPi_gZT{yi>V zD&KlQk}5BNz>>d@cW+Z^Xxok6vd}+88~LMN0Dk7OlNeGTp8U9PZkb@=dVfRqZcOCL zh`6GzWe9b$0kG{i_{@g%iPGk7FZI2R5kXq3Q7Xe!g+# H$yOrEB+g{qt%C2g6aMCeYYSCtRYysv-N%0l)`J5 zXfD!-BgWJL=e?|56K+a?xLLd1sKsN#-(Y@GW5GZUIgWl4DVH^G{JgSjbn0RIzlg4b zgC?QH=JJ9hdJn2#UKRIbD!KJnzo2 *|T h1s zDbVC?<}X1f((mJD5NhArDcc={3&%DHQ-E$La1{Ey5Z F^a;$c3STW0J&-B~B N=j;@-^R6o>lU6UgbKoE@3j`fYjwssfp6pS+DfkUJlR>nlN(ix zuu!#J_h<>mGFWxo)BHK_5u==Q+UVRpIa-;QFPCZecIT2r^vdb7{Y{#>dW4?Fi;KUt zdDj5?J`utB#bDw6k4@8XQ`i2?WYoHjhrgO6`|kka>40IIM=E_sw?iH}@blvJhSAxC zht1Qis|$cS7QULVfzzxzYG#~uN>tMsc7DU|&?WzVGa#>z`=dvU7LAgbS2%S_wX)U< zYe#p^+g}d)M-Xx`J_>uUANz{09X5s!`U4dWzz+lwZNUWW*-}n3&xn28L|K!PI6H{~ z|D55=(TY(x@U^y1=LAIc{NE9-Ncewr@%j`5il_NMhu(j|)&Cli|0lQg*q{@KQVtDw zw2iOce|br3#~JYlQ!r~7DVhY7Ye4yMBQL1nuomK}IytU3>HUzyYnH1*5uaIwIP?^X zisjBrhD|;H*ky6tViWI3zBA{Sk0dmnO!H~Ie0*9{*k>B$A4QdDiobTkg!O*n02>FV z@_ZGD7rP_Y`X-dWlQSw_%Z(mB<~w6lII{p}87eBaBRSHyFgfp=UN?=xw?DIXBqEr3 z&z7~ygdLAT2G;}(UV9+gyLHC_*OSoASSl>p@@M8)NB%7C7nxLyn4D`B6Ag4Fzy&Ol zw7#x}N|FW$hPc8wz}ZM0IFl$5UnHx|K3pP(ku;g|Q?pdZQO~tFGVx3QK)(%^G(REI z+CAg_?JF`|tfQpgKq?*D j-=R%u1Z zo-kk_(l$FcYQo8{3;e?LBf14A-fNB@RxOkYlDS9B+lXDqSDaw VsW5 z+toqhzOP!aTXQbsb(oiEKWnUaC62kZqwpF-1lQWe&yqbmIvyQv?D?P|MN@GV;k%Wk z+BMb9>YdhjKBL(i_QzAYzBLIxTB9<;OU(hRke^&ZG}19c2 _ zGF)KD#xu(&H-C!YNk2zP#(MrUn0zWc$Z2$L@>%S@NuHyvE#X&xVA7I&J8k zB2?Jzpy(@NoJjL(t=L`0cA>}UdwTK)LI939ega1 Qt7h@uNJ6~)@efy#lH^P9+ocMVtS|IIq?|CnK zjc;1OyGU^ 21qCKr6|60%tv4}o z5 _dh4y?hdmKbQ_P zYaqT0yFeRSPgdgZgALQ~O?4BWMZb|q5#dnlJDi`e1ylH@WKzYpJW=*%icu*Pdam ze2o`4dQzemAW*U8qv^|^*T{68RJ(bypKC=dS>D+Qpk_-!S?%|Hhf3j>k6+NJsTuAO zO8S>+Xm+jS1qsyO`*QEXE0>? zAk?}rkK5=lt_D#71asy*(cUM&!s>f$1kwdBXXvPCC_h?v-1e9Pzq_W9gi@ev`=T#w zohjb~XswDk)YbHEV{ lL0!6^eHr>T$vvTrYOxo3oYx@%FRJs}Nb3&qoT^-oLQuUu#i+do z3~#1cevSZ9_F3DA_bGT$DsYA7s&7hbl=Ao^`IuX*^iZo8QdClY0Ll3k-`UlkO+^HA zG8}4D;#4ZAe*KsR;>A(fD*UH}qjSodeTH&w2J+^}niitIUdoC2lDcVB^g8 SjkOLw z9Zo-A>~+-lUy(x+!TLh31kUr)AJYa7V^-87$Lb3grxM&JN$A7n*HV`S<>$a;NTMK> z<}4Xs^5JEvWW%_@1dka(^ZHbx4)xL1L_)h<>vT?-v&Ss3Kdw)7nCLDh*1}bA)=Zy9 z1NIOSeVjkB!@jcH641DZT>UO%JLyxj)UTnN5<@fx%1Ze8ydaFBv-QHva2kV>(8Z^x z^2Ut<(8JjGsTFJ1VAJ&H{zw1==hs4LMOP1cPuhD9gp!q8(Q0c2wfj~MCepcT*HkRh z?+l7)a0D0RA1RvVSPo5oj=;?BZfJI#IQ0MUD{&HWi?Qy|EVG8!OqsI0=wCj5J8&a% zZ0F;6RsL8Cwl4 }r!*Ri0k8rLXNVn@sTTgG7DQa!WA( z#c?mXg<6h-NOcVV`?>3EGHsH4Kzs<0;XxqsKVn?Lu@fAZ;?Mmi@c*eE|0h`GzYvN4 ze*w?`HV7^Z!xqzZ5G 9=2x-o5fqCtDnWe_Oeef %G)t zI2`lR@}iO-rt&Ph)pu;X^Riy6VyS|kVBPi%Jg3r&YYl)LxC)!|Yr)(Df$GE@07l?> zWCEWr4qWlEJMP10 fCE_Cm4f#or=^*9Y(x=z3V1)2bFW&4DNm; zP9>2OwO`ormcpwEE`K*y+SoTZJ$Mq8j5S~f0~oKKwQ}O5qOi_78U!+VF#(Bne<-|+ zCb%e6z5y~r^(aWlw@e18yrU6}!y!-K8@bc>bE`cjn5}GnPIAn1o*Y${*W~bS!clsW zpRo9=m?`UBQi)sle-Q3F3j%dAs-3_3hd*?S45Me1q(5})6b*!CJmebjaaBSe+7%jH zan5s)hM?olXBYpV|MvCJWcTrK+X9*zWBX7!cCd7zQEB(Rk#nd}^u`5H>c#Ur4e4!O z3F<%m6TZ6BqnN9@4KWmLmB#AFh2srV!^dsnitK*)`SgrB{;?&1(Fj~nF-ao;Y7#gQ z`-#r>C|}fDs^83fP7__XnHeVeCqTrzEkF|hl~9yCF>oKd(y*D?6-l=wvdwCZbSt)- z=eALoxf|mb@VfpgXm*i05qHA$8KJx6CdOt{{}y6N(LE+WwbPrpvmTF2Dt~|6AE9y$ z8_nkZ3(*4*n<&+HC1h;^Sh~K&iARJ0d75DLg=DKZ5_pAN*}%KnG>u_sZ4~iPjR*)T ztyyvt_Xut2^Re8A`N6&fH3;;KTChL;9#qfwn|8y?-HWdDpulI}dv`e6A&d79E6=Gt zS^yec@57RCY9G$}UEIL4vr_htdsb rD W^@vk+j|{BS$jnJ0u=*6FSql*<_GjC4JEbjHn7i`T_tAUQB@v6!wjFVeot zTAG*8uJ*P -vKYEB!C5$YP3RBSZMG+5Mnm^HS9 zfYow9nmPe!XsHSC*zG5m&wv7;_}%tcgj(w9jaM2;b1s}c>LSYMMy;*V`TbBwhUopw zd^MoZGwy6$<^wi)M=j!+?dTb=JOZR-p!Z;Rhu4U6Qr-5|XK4vfcwjO6U{vesfeKsE z4PdL~Zc_>&)e$-a5VU)OgRn%sS2YI>)VZ4IqqCD@2&Py6d(;YnoQjhGiB|oN!eua? z2!6ZswprpBUksG$jC>;Rp5na1jWz&@)vG 798jdochu;C }}C+Pg8CJ6wRmjrPG{s z|1)x+q46m>YgN!IDIIOX;-L-Q61Z*dC1gMuIPs@_cgfw-Q!OppO8u-U+xa=shxv?h zya<@@3IecSCg8MW@ShmX!qo0;7BiUk({$L}~oL~}kSBO-3dlEXpmB5#M$?JQ)V zKy$g&kmxf95SahN?=0JVzQHlahlU)@5G7ckHPeoc$cf>??hglra86NnQwJDh&CE5% z(sv{D7a9wS!kX>?O)b+aGsf1eXZ;^EsjPTd>_F^xq+H+RzzfUgx5o5g4=8`<40l0e z`*2bAojr?*Whyz8NECei`1UpU1;J5Zc+Qe)l1ltXkC|`}g9|Tiz*-5FoKW@5VLhKy z`I#;nDXx<0751UBx~A6NWY@&3Pae?<-`d3VEtvOo+KQcNbhZ>+i&X|pteDHoC`?^p zZ<8J`d{le@3crWs`nm}gr=e2HlG85~Cwa}ovgXH9O9O=5tGqs%&&R`xVKI-;8;k#R zmzxUizR2vr$yL(SR Tp#)rmDLAZp?D^jkxM8EXL~a)r9fGGE&eZf`0EWVq3Z4*CR6% zmy-7?V-XiNTP}L>JrZS6NKw?6PCncDr-Pi26^KM4#ZVD7*uAM`DC$Hmzl`M9==~)T zWu-)~gh