Home » Modeling » EMF » More about 'partial code generation'
More about 'partial code generation' [message #389356] |
Tue, 23 November 2004 00:42  |
Eclipse User |
|
|
|
Hello,
I have recently been advised by Ed Merks to look at how sdo works,
particularly in respect of how it works with the commonj.sdo interface. This
is in order to give me a model for how to integrate an existing package of
ready-coded classes into my project while not generating code for them - a
bit like a java package I suppose.
I have spent a couple of hours with some documentation and with the code - I
have established that, generally speaking, sdo implements the interfaces
defined in commonj.sdo by delegating to SDOUtil (looking at EDataObjectImpl
for example).
At this point, as much as I would like to know more about sdo, I feel that I
am losing the plot. I'm not sure how to go about finding what I am looking
for and, in fact, I'm not sure anymore what it is I'm looking for !
Maybe it's all about defining interfaces in the model (and so I'll have no
problem with my import statements which is where I started) which then are
implemented by calling methods on the classes I want to integrate. But then,
I'll still have to import them at this point and I've just moved the
problem, haven't I?
So, how do I persuade Eclipse to recognise these 'external' classes?
Thanks
Ian Ward
|
|
|
Re: More about 'partial code generation' [message #389360 is a reply to message #389356] |
Tue, 23 November 2004 06:54   |
Eclipse User |
|
|
|
This is a multi-part message in MIME format.
--------------030504050306030600010906
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Ian,
The point is simply that you can create a "wrapper" for an existing
interface using <<Interface>> and <<javaclass>> like this:
Ian Ward wrote:
>Hello,
>I have recently been advised by Ed Merks to look at how sdo works,
>particularly in respect of how it works with the commonj.sdo interface. This
>is in order to give me a model for how to integrate an existing package of
>ready-coded classes into my project while not generating code for them - a
>bit like a java package I suppose.
>I have spent a couple of hours with some documentation and with the code - I
>have established that, generally speaking, sdo implements the interfaces
>defined in commonj.sdo by delegating to SDOUtil (looking at EDataObjectImpl
>for example).
>At this point, as much as I would like to know more about sdo, I feel that I
>am losing the plot. I'm not sure how to go about finding what I am looking
>for and, in fact, I'm not sure anymore what it is I'm looking for !
>Maybe it's all about defining interfaces in the model (and so I'll have no
>problem with my import statements which is where I started) which then are
>implemented by calling methods on the classes I want to integrate. But then,
>I'll still have to import them at this point and I've just moved the
>problem, haven't I?
>So, how do I persuade Eclipse to recognise these 'external' classes?
>
>Thanks
>Ian Ward
>
>
>
>
>
--------------030504050306030600010906
Content-Type: multipart/related;
boundary="------------070404040103010309030003"
--------------070404040103010309030003
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
<title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
Ian,<br>
<br>
The point is simply that you can create a "wrapper" for an existing
interface using <<Interface>> and <<javaclass>>
like this:<br>
<blockquote><img src="cid:part1.01070208.04090704@ca.ibm.com" alt=""><br>
</blockquote>
<br>
Ian Ward wrote:
<blockquote cite="midcnuj0d$cln$1@www.eclipse.org" type="cite">
<pre wrap="">Hello,
I have recently been advised by Ed Merks to look at how sdo works,
particularly in respect of how it works with the commonj.sdo interface. This
is in order to give me a model for how to integrate an existing package of
ready-coded classes into my project while not generating code for them - a
bit like a java package I suppose.
I have spent a couple of hours with some documentation and with the code - I
have established that, generally speaking, sdo implements the interfaces
defined in commonj.sdo by delegating to SDOUtil (looking at EDataObjectImpl
for example).
At this point, as much as I would like to know more about sdo, I feel that I
am losing the plot. I'm not sure how to go about finding what I am looking
for and, in fact, I'm not sure anymore what it is I'm looking for !
Maybe it's all about defining interfaces in the model (and so I'll have no
problem with my import statements which is where I started) which then are
implemented by calling methods on the classes I want to integrate. But then,
I'll still have to import them at this point and I've just moved the
problem, haven't I?
So, how do I persuade Eclipse to recognise these 'external' classes?
Thanks
Ian Ward
</pre>
</blockquote>
<br>
</body>
</html>
--------------070404040103010309030003
Content-Type: image/jpeg;
name="moz-screenshot.jpg"
Content-Transfer-Encoding: base64
Content-ID: <part1.01070208.04090704@ca.ibm.com>
Content-Disposition: inline;
filename="moz-screenshot.jpg"
/9j/4AAQSkZJRgABAQIAJQAlAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsL DBkSEw8UHRof
Hh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwL DBgNDRgyIRwh
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy MjIyMjL/wAAR
CAB/AcgDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcI CQoL/8QAtRAA
AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS 0fAkM2JyggkK
FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1 dnd4eXqDhIWG
h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW 19jZ2uHi4+Tl
5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcI CQoL/8QAtREA
AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMz UvAVYnLRChYk
NOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0 dXZ3eHl6goOE
hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU 1dbX2Nna4uPk
5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD0/wAO6Jb3/hjSby5vNXee ezhlkf8Ata6G
5mQEnAkwOT2rS/4Rqx/5+dX/APBvdf8Axyk8I/8AIl6F/wBg+3/9FrWzXmSq Tu9Tqq1JqbSb
3Mf/AIRqx/5+dX/8G91/8co/4Rqx/wCfnV//AAb3X/xytiil7Sfdke1n/M/v Mf8A4Rqx/wCf
nV//AAb3X/xyj/hGrH/n51f/AMG91/8AHK2KKPaT7sPaz/mf3mP/AMI1Y/8A Pzq//g3uv/jl
H/CNWP8Az86v/wCDe6/+OVsUUe0n3Ye1n/M/vMf/AIRqx/5+dX/8G91/8co/ 4Rqx/wCfnV//
AAb3X/xytiij2k+7D2s/5n95j/8ACNWP/Pzq/wD4N7r/AOOUf8I1Y/8APzq/ /g3uv/jlbFFH
tJ92HtZ/zP7zH/4Rqx/5+dX/APBvdf8Axyj/AIRqx/5+dX/8G91/8crYoo9p Puw9rP8Amf3m
P/wjVj/z86v/AODe6/8AjlH/AAjVj/z86v8A+De6/wDjlbFFHtJ92HtZ/wAz +8x/+Easf+fn
V/8Awb3X/wAco/4Rqx/5+dX/APBvdf8Axytiij2k+7D2s/5n95j/APCNWP8A z86v/wCDe6/+
OUf8I1Y/8/Or/wDg3uv/AI5WxRR7Sfdh7Wf8z+8x/wDhGrH/AJ+dX/8ABvdf /HKP+Easf+fn
V/8Awb3X/wAcrYoo9pPuw9rP+Z/eY/8AwjVj/wA/Or/+De6/+OUf8I1Y/wDP zq//AIN7r/45
WxWJ4k1m50e3gaCBAkrlZLycO0NouPvuEBOByediYVt0ifLkU5vS7D2s/wCZ /eP/AOEasf8A
n51f/wAG91/8co/4Rqx/5+dX/wDBvdf/AByqGoa3eaVodhNFcQXy3WWk1Z0P 2WBW+YSFYgx8
sA5G4qu1PnmBwzZGt6ncaVLa6xFewajcW/hvVL2O4CAQykNayLtCn/V9APmJ 24yzHLGlKb6h
7Wf8z+86b/hGrH/n51f/AMG91/8AHKP+Easf+fnV/wDwb3X/AMcrmdf1bxGI 5tO+1WNrexXW
lz+bBFIyLHcXZj8k/OpfaY/mf5Q6sV2JnNW7rxZqCeK7jT7W1eWC1vYLOSFN NuJTIJFiZpft
K/u4ggmyUYEkRnkbxgvU7h7Wf8z+82/+Easf+fnV/wDwb3X/AMco/wCEasf+ fnV//Bvdf/HK
5G9n1fxJeaNFf/2V/ZE2v3Vk9m9s8wuY4BdAGTLhf+WQwu1gHVXz/ALCePLq 2/tCS4SC9ji0
q61OL7Paz28YEOz5EnkBW4VvMGJUCjC524cAO9TuHtZ/zP7zpv8AhGrH/n51 f/wb3X/xyj/h
GrH/AJ+dX/8ABvdf/HKoapqut+HtBurvUJLG7k823igmtbSVcGWVYjmAM7Pt 3BsK+X5UBSAx
r2+uX914eu7271GDSGsboIL+/wBPktre4QovLQzMrqu6QoMOMtGDnBKUuae9 w9rP+Z/ea/8A
wjVj/wA/Or/+De6/+OUf8I1Y/wDPzq//AIN7r/45VD+27y78Mf2rc3EHh14Z fmlv0LW7Lnb8
wlEUgUlsDIjbcoxuTG/U0DU7nV9LW6u9PeykLldjbwGA/iUSIjgdvmRTkHAK 7WZOU11D2s/5
mRf8I1Y/8/Or/wDg3uv/AI5R/wAI1Y/8/Or/APg3uv8A45WxRS9pPuw9rP8A mf3mP/wjVj/z
86v/AODe6/8AjlH/AAjVj/z86v8A+De6/wDjlbFFHtJ92HtZ/wAz+8x/+Eas f+fnV/8Awb3X
/wAco/4Rqx/5+dX/APBvdf8Axytiij2k+7D2s/5n95j/APCNWP8Az86v/wCD e6/+OUf8I1Y/
8/Or/wDg3uv/AI5WxRR7Sfdh7Wf8z+8x/wDhGrH/AJ+dX/8ABvdf/HKP+Eas f+fnV/8Awb3X
/wAcrYoo9pPuw9rP+Z/eY/8AwjVj/wA/Or/+De6/+OUf8I1Y/wDPzq//AIN7 r/45WxRR7Sfd
h7Wf8z+8x/8AhGrH/n51f/wb3X/xyj/hGrH/AJ+dX/8ABvdf/HK2KKPaT7sP az/mf3mP/wAI
1Y/8/Or/APg3uv8A45R/wjVj/wA/Or/+De6/+OVsUUe0n3Ye1n/M/vMf/hGr H/n51f8A8G91
/wDHKP8AhGrH/n51f/wb3X/xytiij2k+7D2s/wCZ/eY//CNWP/Pzq/8A4N7r /wCOUf8ACNWP
/Pzq/wD4N7r/AOOVsUUe0n3Ye1n/ADP7zH/4Rqx/5+dX/wDBvdf/AByj/hGr H/n51f8A8G91
/wDHK2KKPaT7sPaz/mf3nK+ItEt7Dwxq15bXmrpPBZzSxv8A2tdHayoSDgyY PI70Vo+Lv+RL
13/sH3H/AKLaiuvDSbTuz3soSqQk5669Q8I/8iXoX/YPt/8A0WtbNY3hH/kS 9C/7B9v/AOi1
rZriluzwav8AEl6sKKKKRAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUU
UUARwwQ26FIIkiQuzlUUKCzMWY8dyxJJ7kk1Qu/Duk3ySJPZJskt7i2dUJQG Odg0w+UjlmUE
t1zk55NZ/jiCG68OR29xEk0EupaekkcihldTeQggg8EEdqpyQ2fhbxDHDpNt Y6fZS6VeXc8A
It7YyQvAEdiAQnEjhnAyRjO7YoFJdUI3NR8PaZqhuWu4HL3CQJI8c8kbYhkM kWGVgVKuxORg
/kKJvD2mXGqDUZIHM+9ZGUTyCKR1xtd4g2x3GFwzKSNiYPyrjiL7xLrl/Z3F lb3qQ3dte6W5
un0m5s96T3Xl+X5UkgYgFMlt2GVmTAOWrb1jxTdaZ4hjt0eCW2+1W1o8EdlP I2ZnRdz3A/dQ
sPMDeWwJKheR5g21yyA349E0+L7Nst8fZrqW8i+dvlml8ze3XnPnScHgbuAM DFS28IaDa3Dz
x6cjO9vJakSu0iiBypMIViQIvlGEA2rztA3HOBDYWWqadcavfeHn1vUjqV5b pND5S3EEcVxL
HGY5JHTywqouNjA7iW+8Wap9P8T3146yW0lqdLi0K21NrjUn8qVzKs2BIUGx B+7VmcAhcMAr
bgUVn0YG5D4Y0qGzuLYwzzLcbfMluLqWab5TlMSuxddrZZcEbWJYYJJqey0T T9PijSG33Mkp
nEs7tNKZCpTeZHJYtsOzJOQvy9OK5FPGmrLbX8McUF1e28uniN59PuNORxc3 BhKlJdzjAUnz
BkfN907SCahqGr3eo6TZ5sX1Ow19rX7R5bxwvu06WXf5e5mG1Zcbd/zFPvJu +V8surA7qSCG
Z4nliR3hffEzKCUbaVyvodrMMjsSO9SVmeH9Rm1TSfPuFQTx3E9tIYwQrtDM 8RYAklQxTdty
cZxk4ydOs3poAUUUUDCiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigD
G8Xf8iXrv/YPuP8A0W1FHi7/AJEvXf8AsH3H/otqK7cLsz6LJf4cvUyvC/iK yg8JaNE8Gplk
sYFJTS7l1JEajhhGQR7g4Nav/CT2H/Pvq3/gouv/AI3R4R/5EvQv+wfb/wDo tat6tq1to1kb
m53MS2yKKMAvM56IoOMngnnAABJIAJHOo88+WKu2eFXnSjKUpaJX6/8AAKn/ AAk9h/z76t/4
KLr/AON0f8JPYf8APvq3/gouv/jdSv4j0iPSodSe/iW1nby4Sc75JOf3apjc 0mVYeWBuyCMZ
GKWTX7G20uLUL5nsY532Qx3K7ZZW52qsfLF2AyI8b+cFQ2QJcbOzTuSpU2rp P7/+AQ/8JPYf
8++rf+Ci6/8AjdH/AAk9h/z76t/4KLr/AON05ddt/Nt5LiX7DDJa3F0YryIx v5UbIDKWJxGo
DglXAb5xnaVYUWnifSryeGBJp4riaXyUgubWWCQsUdwdkihgpWKTDEbSUYA5 GKVl2C9Ps/v/
AOAN/wCEnsP+ffVv/BRdf/G6P+EnsP8An31b/wAFF1/8bpsvi7RIThrtyFeR ZWS3kdYNkjRs
0rBSIkDRuN74U7GIJCkixN4h0y31QadJO4n3rGzCCQxRu2NqPKF2I5yuFZgT vTA+ZclvIL0+
z+//AIBD/wAJPYf8++rf+Ci6/wDjdH/CT2H/AD76t/4KLr/43VWz8VwLp3n6 gH89r28t44bO
1lndkhuHi3bEDNgBU3NjALDpuAq5deKNGs/JMl5vjmiWcSwRPNGkTfdlkdAV jjOCQ7kKQrHO
FOHbyC9Ps/v/AOAN/wCEnsP+ffVv/BRdf/G6P+EnsP8An31b/wAFF1/8bqab xDplvqg06Sdx
PvWNmEEhijdsbUeULsRzlcKzAnemB8y5IdfsZNUOmTM9pfF2WKC5XYZwuTui P3ZRtAY7CSoI
3BTxSsuwXp9n9/8AwCH/AISew/599W/8FF1/8bo/4Sew/wCffVv/AAUXX/xu podfsZNUOmTM
9pfF2WKC5XYZwuTuiP3ZRtAY7CSoI3BTxU+o6naaVbrNdu4DuERIonlkkbBO ERAWY4BOADgK
T0BNFl2C9Ps/v/4BS/4Sew/599W/8FF1/wDG6P8AhJ7D/n31b/wUXX/xunTe J9Khs7e5E08y
3G7y4re1lmm+U4fMSKXXa2FbIG1iFOCQKjufF+g2twkEmoozvbx3QMSNIogc sBMWUECL5Tly
dq8biNwyW8gvT7P7/wDgDv8AhJ7D/n31b/wUXX/xuj/hJ7D/AJ99W/8ABRdf /G6afF+grYT3
z6ikdpA8ayTSoyLtkYJHICQMxMx4kGUOCQ2AcEHi7RLi4it0u3Wd3CNHLbyR tCzHCCYMoMJc
42CTbvyNuc07eQXp9n9//AHf8JPYf8++rf8Agouv/jdH/CT2H/Pvq3/gouv/ AI3U0PiHTLjV
Dp0c7mfe0asYJBFI653IkpXY7jDZVWJGx8j5Wxnp400S/wBHu77T9UQRxWT3 iXEltI0ZjVcs
6jCmUISA6ocqTtO1jii3kF6fZ/f/AMAtf8JPYf8APvq3/gouv/jdH/CT2H/P vq3/AIKLr/43
Wje3tvp1nJdXUmyFMAkKWJJIAVVGSzEkAKASSQACTVD/AISfSv7P+2+dPt83 yPJ+yy/aPMxu
2eRt8zdt+fG3O35vu80rLsF6fZ/f/wAAb/wk9h/z76t/4KLr/wCN0f8ACT2H /Pvq3/gouv8A
43VHTPGVlcaNHf3EvnefdXcduun28lyZYop3jWQLGHYrtCZb7uXHTcBWhrus /YfB2pa5p7wX
HkafLd2753xybYy6nIPKnA6Hkd6dtbWC9Ps/v/4BS1PU9F1iwayvbTWWgZ0f 93pt7EwZGDqQ
yIGBDKDkHtVezm8O2dvdQLYazcJdJ5c5vdPvrppUwRsZpUYlPmb5c4+ZuPmO bsV7q+malY2u
sXFjeR6hK0EMlnavAYpFjeT5laR9ylY35BBBAGGDErX1Lx1pVnoep6jbefdN ZWr3Ucf2eVBc
qv8AFExTDx5K5kTcqhgxOCCXbogvT7P7/wDgGcLLwkILqP8As7XS135JuJja agZpDC5eJjLt
37lY8NnOAozhQBYvB4X1DUFvrrS9WknWWOcf8S29CCWMqUl2BNvmDaq78bio 2k7eK2brxPpV
l5P2maePzYlnbNrKfIjPR5vl/crw3Mm0fK391sV5b3V9T1K+tdHuLGzj0+VY JpLy1ecyyNGk
nyqsibVCyJySSSSMKFBYv6hen2f3/wDAM69/4RvULyS5uLLXS0uPOijs7+OG fAA/exKoSTKg
Kd4OVAU5AAq5JqWhTXF3PNp2pSvd2621wJNIu2WSJS5ClTHjH7x+3O7nPFXf +Egt7WXT7PVV
+x6nfbxFaKTKZCjKrFCo+ZfnVskAhCWYLtbbGni7RHt7u4+1usFrbvdNI9vI qyQoMtJESoEq
AY+aPcPmX+8Mr7wvT7P7/wDgHL6jpnh2XTp7ez03Umku7iya8e806+nNzFBc LIVkZ42LnbvU
ZzxtUnaBjXtpvDtoLby7DWWe3uDcpLLp99JIZTG0ZZ3ZCznYxX5icDAH3RiX U/Genw6NJqFl
dwGOC6tI5pLhWjQQyzpGZQW27oypcrIModpwSAa29O1O01W3aa0dyEco6SxP FJG2AcOjgMpw
QcEDIYHoQabbtrcL0+z+/wD4Bl2es6Rp8DQ2tnq0cbSyTEf2VdnLyOzueY+7 Mx9s8cVP/wAJ
PYf8++rf+Ci6/wDjdbNFTdBen2f3/wDAMb/hJ7D/AJ99W/8ABRdf/G6P+Ens P+ffVv8AwUXX
/wAbrZopaBen2f3/APAMb/hJ7D/n31b/AMFF1/8AG6P+EnsP+ffVv/BRdf8A xutmijQL0+z+
/wD4Bjf8JPYf8++rf+Ci6/8AjdH/AAk9h/z76t/4KLr/AON1s0UaBen2f3/8 Axv+EnsP+ffV
v/BRdf8Axuj/AISew/599W/8FF1/8brZoo0C9Ps/v/4Bjf8ACT2H/Pvq3/go uv8A43R/wk9h
/wA++rf+Ci6/+N1s0UaBen2f3/8AAMb/AISew/599W/8FF1/8bo/4Sew/wCf fVv/AAUXX/xu
tmijQL0+z+//AIBjf8JPYf8APvq3/gouv/jdH/CT2H/Pvq3/AIKLr/43WzRR oF6fZ/f/AMAx
v+EnsP8An31b/wAFF1/8bo/4Sew/599W/wDBRdf/AButmijQL0+z+/8A4Bjf 8JPYf8++rf8A
gouv/jdH/CT2H/Pvq3/gouv/AI3WzRRoF6fZ/f8A8Axv+EnsP+ffVv8AwUXX /wAbo/4Sew/5
99W/8FF1/wDG62aKNAvT7P7/APgGN/wk9h/z76t/4KLr/wCN0f8ACT2H/Pvq 3/gouv8A43Wz
RRoF6fZ/f/wDkfFHiKyn8JazEkGphnsZ1BfS7lFBMbDljGAB7k4FFavi7/kS 9d/7B9x/6Lai
u3DWs7H0GTcvJK3cPCP/ACJehf8AYPt//Ra1ynizTvE48UfaLCzi1KK8jEFm 7sUXT2wC4k6/
u22l9yjcSoQ5/d1reF/EVlB4S0aJ4NTLJYwKSml3LqSI1HDCMgj3Bwa1f+En sP8An31b/wAF
F1/8bqcNiKmGqupGN990fN4/ALFKVKrFuLfn3KGmeB7PT9Kjha9vJNSEjTvq ccpjmaZgoYgD
5dnyJ+6IZMRpuVsVozaF9ss7db29na/ttwh1C3PkTAE8Z2/K3RCykeWzKCUx hQ3/AISew/59
9W/8FF1/8bo/4Sew/wCffVv/AAUXX/xusKk6lSTnPVsqOHlCKjGNkvIxZo7u 68UwWFtrKS6l
Z6RfQS3qRIzWskr25gaWMHaHKqWwdofYxAA4FS28F6sq6zcSSwJcXMVm9lFJ qFxdiKe2lklQ
SSy5Zoy5QnaF4LADI3t0v/CT2H/Pvq3/AIKLr/43R/wk9h/z76t/4KLr/wCN 0ry6Ir2NT+V/
cc14j8DaleeHo9C0q+/0KLShYQfaLyaHymVCu51hwJ942KQ+FTbuCvuZTvw6 fq9jr1/JaCxa
y1G6S6mmmkfzItsUcbIsYXDZEQwxdcF/uttw03/CT2H/AD76t/4KLr/43R/w k9h/z76t/wCC
i6/+N0XltYPY1P5X9xiz+F9YOnRWsF4iob29mkRLue3A864aSOXfFtdyisQY sqrFz8w2qagH
hHWLfR9EtLR7WK8tNNgs3vYryeBoZI1wH2KNt0gJLLHIFA+YZxIcdD/wk9h/ z76t/wCCi6/+
N0f8JPYf8++rf+Ci6/8AjdF59g9jU/lf3FG80PUn8TrfWZgtoWljkkuI7uZG KqFDo9sMxTMy
qU81iGVWXAzGpOh/YX2nUPtmp3s955cvmW9tny7eHByvyD/WMMIcyFsMu5An QN/4Sew/599W
/wDBRdf/ABuj/hJ7D/n31b/wUXX/AMbpe92D2NT+V/cO/sL7TqH2zU72e88u XzLe2z5dvDg5
X5B/rGGEOZC2GXcgToDXtPvLttNu7AQSXOn3RuUhnkMaS5ikiKlwrFcCUtna c7ccZyG/8JPY
f8++rf8Agouv/jdH/CT2H/Pvq3/gouv/AI3StLsHsqn8r+4q3VhrpvdN1iKL Tp9Qgt7i3ltm
neGILK8b5WTY5Yr5Sryo3ZLfJ92sz/hCbyDw9qmlQ3UEnn+G7fRoJXBTMkaT qXYAHap81TwS
evoM7v8Awk9h/wA++rf+Ci6/+N0f8JPYf8++rf8Agouv/jdP3l0D2NT+V/cU dX8OXmoaxdXc
UkCxy/2XtDsQR9mu3mkzx3VgB6nrgc0XXhy8n/tbbJAPtmtWWoR5Y8Rw/Zdw PH3j5D47cryO
cXv+EnsP+ffVv/BRdf8Axuj/AISew/599W/8FF1/8bo97sHsan8r+4zbPw9q MOqWccptf7Ps
dSutSinWVjLK0/n/ALto9oCBftDfMHbOwfKN3y4HiDQ5tI8DWVvdXVr59v4Y utFSNZDuubqS
KEIkQIBckwvgfeORgdcdj/wk9h/z76t/4KLr/wCN0f8ACT2H/Pvq3/gouv8A 43TTle9g9jU/
lf3E2r2dzqWl3lr9ntWJdTAJJXAcLtbJZQGifcCFddxQhXGSNtYcWga3FY2M 3mQS3djqDXdv
Zz3ssqKjQPCYzcuhkbmR5NzIcZ2AYAYa3/CT2H/Pvq3/AIKLr/43R/wk9h/z 76t/4KLr/wCN
0lzLSwexqfyv7jFsNB13TRZahFDp02oRPqAltWu3SILdXInysvlEkrsVcFBn cTkYwbk3hy8X
4fXHhWGSB9uijT4Ll2K75PKaMllAO1eFPBY8kY4Gb3/CT2H/AD76t/4KLr/4 3R/wk9h/z76t
/wCCi6/+N0e92D2NT+V/cQxWWr6nqVjdaxb2NnHp8rTwx2d085lkaN4/mZo0 2qFkfgAkkg5U
KQ3MTeBteuv7Sa5voJZrjRb3TRJLeTyebNL5eJtrZSFWKHMca4TAwXGAvW/8 JPYf8++rf+Ci
6/8AjdH/AAk9h/z76t/4KLr/AON005LZB7Gp/K/uMLxj4Z17xNp8tvFcwQ/a dPMJi+3Txx28
xDbjiML9oV8qv7zAQJuCtuZDf1LRLwT6kttpmlatZapKk9za6nMY1SRURBjE UgdSIkOCAVZS
ctuAW9/wk9h/z76t/wCCi6/+N0f8JPYf8++rf+Ci6/8AjdHvdg9jU/lf3FHR fCn9h32lNbvB
9mtLW9jkSNPLHmXE8Uv7tBkLGCjgDJIG0Zbk1ymt+F9YsdH1/VtRvEuBH4d1 C1djdzytNI6o
3nBH+SEN5bZijAC8AM4I2dz/AMJPYf8APvq3/gouv/jdH/CT2H/Pvq3/AIKL r/43QnJO9g9j
U/lf3GTP4c1fULi5u72SxW5kl01AIWfY8drdGYycjKM4dgI/mC4HztnI3NL0 6ax1HW7iVkKX
16txEFJyFFvDFhuOu6NumeCPpUP/AAk9h/z76t/4KLr/AON0f8JPYf8APvq3 /gouv/jdJ83Y
PY1P5X9xs0Vjf8JPYf8APvq3/gouv/jdH/CT2H/Pvq3/AIKLr/43U8r7B7Kp /K/uNmisb/hJ
7D/n31b/AMFF1/8AG6P+EnsP+ffVv/BRdf8AxujlfYPZVP5X9xs0Vjf8JPYf 8++rf+Ci6/8A
jdH/AAk9h/z76t/4KLr/AON0cr7B7Kp/K/uNmisb/hJ7D/n31b/wUXX/AMbo /wCEnsP+ffVv
/BRdf/G6OV9g9lU/lf3GzRWN/wAJPYf8++rf+Ci6/wDjdH/CT2H/AD76t/4K Lr/43RyvsHsq
n8r+42aKxv8AhJ7D/n31b/wUXX/xuj/hJ7D/AJ99W/8ABRdf/G6OV9g9lU/l f3GzRWN/wk9h
/wA++rf+Ci6/+N0f8JPYf8++rf8Agouv/jdHK+weyqfyv7jZorG/4Sew/wCf fVv/AAUXX/xu
j/hJ7D/n31b/AMFF1/8AG6OV9g9lU/lf3GzRWN/wk9h/z76t/wCCi6/+N0f8 JPYf8++rf+Ci
6/8AjdHK+weyqfyv7jZorG/4Sew/599W/wDBRdf/ABuj/hJ7D/n31b/wUXX/ AMbo5X2D2VT+
V/cbNFY3/CT2H/Pvq3/gouv/AI3R/wAJPYf8++rf+Ci6/wDjdHK+weyqfyv7 jZorG/4Sew/5
99W/8FF1/wDG6P8AhJ7D/n31b/wUXX/xujlfYPZVP5X9weLv+RL13/sH3H/o tqKyvFHiKyn8
JazEkGphnsZ1BfS7lFBMbDljGAB7k4FFduGTSdz6DJoyjCV1bU1fCP8AyJeh f9g+3/8ARa1s
1jeEf+RL0L/sH2//AKLWvO/iTfa/YeKrKaaWS205WH9l3Nu3yrNs+YSA8eYf nxkFSmQOrgxh
cK8VW9kpJN33PHp0HiMS6SaTbe567RXG+HPH9pqnh23v72C5Sd5HiC2tpLN9 o2bd0sSIrMYs
sAWwQrHbuPBO2/inQ0vFtTqUHmNai9BBJT7OQ5ExcfKI/kbLE4GVBOWXOFSl KnJwktUcsouM
nF7o16KyIfE+lTWdxcmaeFbfb5kVxaywzfMcJiJ1DtubKrgHcwKjJBFU5vGV gt1o8MEV1N/a
N61mwNrMj27CJpP3iFMoThOG2/K2/wC6pNRyvsSdHRWZD4h0y41Q6dHO5n3t GrGCQRSOudyJ
KV2O4w2VViRsfI+Vsc5puu+I/wDhHNF8QX91pU1tqH2LfaQWMkTr9peNBiQz MPlMgP3Pm244
zkNRYHbUVmQ+IdMuNUOnRzuZ97RqxgkEUjrnciSldjuMNlVYkbHyPlbGXqXj rSrPQ9T1G28+
6aytXuo4/s8qC5Vf4omKYePJXMiblUMGJwQSuVgdPRWBPqt/qWof2foskFrJ HaxXks9/aSP8
kpdUQRbkYN+7ctuI24A2ksdufceMH06S0g1DyEkj1U6beyIjFZD9kadDCoJb c+YgE+Y7mKDc
cMXysDr6KyF8QafJLbyjUYI7aS1uLhhLGyELEyK7MzECPYWKsrDdk9trCiHx PpU1ncXJmnhW
32+ZFcWssM3zHCYidQ7bmyq4B3MCoyQRSswNeiucm8ZWC3WjwwRXU39o3rWb A2syPbsImk/e
IUyhOE4bb8rb/uqTR/wllpbvc3N/MkGntetp9iRG7vcTRq3mYAyc70eNU25J j4LeYop8rA6O
isibxPpUNnb3ImnmW43eXFb2ss03ynD5iRS67WwrZA2sQpwSBUdz4v0G1uEg k1FGd7eO6BiR
pFEDlgJiyggRfKcuTtXjcRuGVyvsBt0VkQ+KNGns7i6jvMw2+0sfKcFw5xG0 a4zIrnhGQMHP
CljR/wAJPpX9n/bfOn2+b5Hk/ZZftHmY3bPI2+Zu2/Pjbnb833eaOVga9FYk /i7RLdLNnu3Z
7xJGt4Y7eSSWTy2VZFEaqW3qW+ZMblw2QNrYkuvFGjWfkmS83xzRLOJYInmj SJvuyyOgKxxn
BIdyFIVjnCnByvsBr0VmTeIdMt9UGnSTuJ96xswgkMUbtjajyhdiOcrhWYE7 0wPmXJD4h0y4
1Q6dHO5n3tGrGCQRSOudyJKV2O4w2VViRsfI+VsFmBp0VzEXiO8k8C6Hrhjg +03/APZ3moFO
wfaJYkfaM54EjYyT0Gc1Qk13xHHoOr+IftWlGy0+W+P2P7DJ5kkdvLIm3zfO wGYR/e2EAn7p
xinysDtqKzNL1Ga+1HW7eVUCWN6tvEVByVNvDLlueu6RumOAPrV+GZZ0LoHA DsnzxshyrFTw
QDjI4PQjBGQQaloCSiuMXxBrV7e6jHp97o/2yzeYjQpIj9rkSNyqkyGZQglA Vlcx4USr94cn
Qj8aaYr6418XsbbSb2O0kuLiKREYuse1ssoAG6THUgAK5IVgarlYHR0VgN4t 0q1SSW7vtiNd
JbQxm0lSRZGt1mWIqQWaQqSQAAcsqY3jmxN4o0aCzt7qS8xDcbip8pyUCHEj SLjMaoeHZwoQ
8MVNLlYGvRVexvbfUtPtr+0k8y2uYlmhfaRuRgCpweRkEdayJvFlla65rGn3 Uc8MOl6el/Nc
mCQpsPmbsHbg4CAjBO7LADKNgs2Bv0Vmaj4i0nSTci/vUtxbJA8zSAhY1mkM cZLYwAWVhntj
JwOaj/4SfSv7P+2+dPt83yPJ+yy/aPMxu2eRt8zdt+fG3O35vu80WYGvRXKa j4xW01LSXt40
n0m5t55buY7kktxHLBEWIP3QjSt5gbaUCsTgoVNxPEsVvc6yt+dsdnqCWluk ELyyy5t4pcBF
DM7fO5+UcKuSMAmnysDforEn8XaJbpZs927PeJI1vDHbySSyeWyrIojVS29S 3zJjcuGyBtbE
lr4p0O985rfUoHhhiac3GSIWjX77pIfkdVJAYqSFJAbBNLlfYDXorP0zWrLV vNFq06yRYLxX
NtJbyKDnDbJFVtpwwDYwSrAHIOLkcyyvKihwYn2NujZQTtDfKSMMMMORkZyO oICsBJRXKXOt
ajceJrnSLXVtH0yeNwlva31s0012vlrIZYwJozsBLJwG5ibnqFkt/GUSXl/a 6tYz6fJp2lQ6
jeEo8iRbg5kQOE2vs2cFSd3zADKNiuVgdPRWA3i7RoluLybVYE0+OK3fe8Lq FEsrxJIZD8rR
uy8EDAA3birAix/wk+lf2f8AbfOn2+b5Hk/ZZftHmY3bPI2+Zu2/Pjbnb833 eaXKwNeisC18
TW97qGnyWc8F1pGo+dBb3MWf+PmItuXP8SsqSEMAAPJPLb1xtmZVuEgIfe6M 4IjYrgEA5bGA
fmGATk84zg4GmgJKKwNZvdX/AOEh07StKuLG2+0WtzcyS3Vq8/8Aq3hUKAsi Yz5pOcnoKLfx
LFb2t2mqnbd2V0LKQWsLyfaJDGsoMUahnOY3DFcErh+WC7ycrA36KwIvFllc +IdN0q2jnlW+
tZ7hZxBIFjMTqpRvlwrZLhgxBRlCsAXUUSeMtGXT9QvY5Z5Y7K1kvCBbunnx IMs8LOFWVenz
ISvzLzhhk5WBv0Vzkt/rukmC81aXTprOe4ht2t7SB1kgaWRY0IkZyJQGdQfk jyCWGCNhNA8W
WmqTS2c8yLfJe3dsFSNwn7qaRVTecr5vloHKZ3Yy20LRyu1wOjorAj8W6VFp +nzXN9532m1j
uWngtJfLWNhkSyDDeRGcMQZCAArcnaxFybxDplvqg06SdxPvWNmEEhijdsbU eULsRzlcKzAn
emB8y5OVgQ+Lv+RL13/sH3H/AKLaisi61+LxH8OfEV7FbzwLHDf22yaJ0J8v egbDqp5ABIx8
pJU8qaK7MMrJpn0WS/w5epr+Ef8AkS9C/wCwfb/+i1q9qemWWs6bPp2o20dz aTrtkiccEf0I
OCCOQQCOao+Ef+RL0L/sH2//AKLWvO/iTfa/YeKrKaaWS205WH9l3Nu3yrNs +YSA8eYfnxkF
SmQOrgrCYaWJr+zjJRfS55NOg8RifZJpNt7nfahpV5bajpt/olrYv9itZrNb OaU28YjkMRBV
lR8bfJAC7cYbqMYNe+8M3mp/26l1dwL/AGposWnGaKMjbIPtG99hJwv75SBu J4IJ7mp4c8f2
mqeHbe/vYLlJ3keILa2ks32jZt3SxIisxiywBbBCsdu48E7b+KdDS8W1OpQe Y1qL0EElPs5D
kTFx8oj+RssTgZUE5Zc41ITpycZbo5ZRcZOL3Rh2fhjU4LDVHj2Wd9dpDGMa rdXbPHGzMUM8
uGjDB3QFEym4uCxwFg0vwjrGnT29wz2srrrv9ouj3k8hWFrP7OV8yQMzupJx nAYKPuZ2r0cP
ifSprO4uTNPCtvt8yK4tZYZvmOExE6h23NlVwDuYFRkgiqc3jKwW60eGCK6m /tG9azYG1mR7
dhE0n7xCmUJwnDbflbf91Sam8iTP0vwfcWPiQXcqpJbxXtzexTtqFy53TGQ7 VtsiKMjzmXeC
2QCdoL5Vmi/D+z0O18NXVpp2lRaxpsSQ3c8UIX7Qpj2SnftzuzhwxG47SuVE jGujh8Q6Zcao
dOjncz72jVjBIIpHXO5ElK7HcYbKqxI2PkfK2Oc03XfEf/COaL4gv7rSprbU PsW+0gsZInX7
S8aDEhmYfKZAfufNtxxnILyYFuz8PajDqlnHKbX+z7HUrrUop1lYyytP5/7t o9oCBftDfMHb
OwfKN3y5h8GavN4ebSpXsY/segXGi2cqzO32jzEjUSyDYPKx5KnaDJ988/L8 3Vw+IdMuNUOn
RzuZ97RqxgkEUjrnciSldjuMNlVYkbHyPlbGXqXjrSrPQ9T1G28+6aytXuo4 /s8qC5Vf4omK
YePJXMiblUMGJwQSJyvsBYnstXg1D+2LC3sZb25tYra7tJ7p0jXyy7K0cojJ ODK4IKfMCp+X
aQ2fceH9XSS01O2Sxm1P+1TqNzBJcPFCM2jWwRHEbMdq7OSvzEMcLkKNCfVb /UtQ/s/RZILW
SO1ivJZ7+0kf5JS6ogi3Iwb925bcRtwBtJY7c+48YPp0lpBqHkJJHqp029kR GKyH7I06GFQS
258xAJ8x3MUG44YpXAyG0L+0L6Xw/wDbYDcy6Vq6XzW580WUl7PDKisOD0Z9 u7aXCEgDkDQg
8I332K9keKCC9kls5Y1fU7m93/ZpvOVWmm5VWOVwqfLkt8+do318QafJLbyj UYI7aS1uLhhL
GyELEyK7MzECPYWKsrDdk9trCiHxPpU1ncXJmnhW32+ZFcWssM3zHCYidQ7b myq4B3MCoyQR
T5pAU7mw12/l0W8uItOSez1L7RJBHO5VITBJCQJCmXfMm/7qD+HtuOfpenTP f29kWRJ9I126
v5lckeZDcLctGycZIzcBSTgbopQCdvOhN4ysFutHhgiupv7RvWs2BtZke3YR NJ+8QplCcJw2
35W3/dUmq7eMDHrVrbtau9le6k+m20kUMjndEjmWRiAQB5qmMKQvCPJuK/dP etsBXn8L6wdO
itYLxFQ3t7NIiXc9uB51w0kcu+La7lFYgxZVWLn5htU1BB4L1GLwtf6Y09r5 9x4YttHRg7bR
NGk6sx+XOzMq4OM8Hj16qPW9Pl+zbLjP2m6ls4vkb5povM3r04x5MnJ4O3gn IzU07xfoOq27
XNpqKG3Fubnz5EaKNogBuZWcAMEyA+CdhOG2nilzSAz/ABB4WudYu9UmSZFS 4t7ARKJXjYvb
XEkxUuvKBtyqHXJXk44ANePwrdxaFLGtpam8lvftbRNql2zg+WIsreE+ar7V HzBQNuY9uCXP
R6ZrVlq3mi1adZIsF4rm2kt5FBzhtkiq204YBsYJVgDkHFyOZZXlRQ4MT7G3 RsoJ2hvlJGGG
GHIyM5HUEA5pLQDiWttd0/xF4eiiktbu+j03UC8dzM+0xma22xibaWJQFR5j IxfYcgF8rX1z
wJrF14Wt9BstSR4IdIXT0eS5ntlSRUKlzHEcSiQbV2ucR7cgPuZTr3tz4pTx Tb6Zb6no6QXV
vc3MbSaZKzRrG8ShTi4AYkTfewPu9OeNuPW9Pl+zbLjP2m6ls4vkb5povM3r 04x5MnJ4O3gn
Iy+ZqzQFCHT9Xsdev5LQWLWWo3SXU000j+ZFtijjZFjC4bIiGGLrgv8Adbbh svS/B9xY+JBd
yqklvFe3N7FO2oXLndMZDtW2yIoyPOZd4LZAJ2gvldjTvF+g6rbtc2moobcW 5ufPkRoo2iAG
5lZwAwTID4J2E4baeKr3niuAaXPqNmH8uwdJb+C7tZbeVLY53SBZArYUBnB2 sH8p0Hzcqve2
Ar23h7UUsNP0CY2o0bTnt2huklY3EywMrxIyFdqnKJucM24KcKm8bKg+H9ml sb1dO0o69Fqs
2ow3bQgl83DyKjvtzzG2zOG2HDKCUWuymmWBA7hyC6p8kbOcswUcAE4yeT0A yTgAmszxNqF5
pujCawMC3Ml1a2yNPGXRfNnjiLFQyk4Dk4yOlCk+gEml6dNY6jrdxKyFL69W 4iCk5Ci3hiw3
HXdG3TPBH0q/CZmQmeNEfewARyw27jtOSByVwSOxJGTjJxINWvNM1D7Br91Y vvtZb1LyCI28
aRxFBIJFd3xjzEIbdggtkLtBavqPjnTbLTftkcF9Kwure3e3exnjmUSyBA5j Me/bjdg7cMy7
Ad3FKzYFfWtH1/VrO40yaDSriFpZHtdTlnZJ7MsW2SJEIiPMiDYUiQFtgO5S xxJc+HtRnuNZ
UG1EF3q9hqML+a27bCbfzFZduAcW524Jzu524rYm8Q6Zb6oNOkncT71jZhBI Yo3bG1HlC7Ec
5XCswJ3pgfMuc+K/13VjPeaTLp0NnBcTW6293A7STtFI0bkyK4EQLIwHySYA DHJOwNNgR/8A
COXn/CRf2h5kHk/21/aGNx3eX/Z/2bHT72/n02988VkXcD+FbixvbjU9KtJj LqaLJfyNHAqX
N0s4bfgBpFCr+6JXf8+GAQmr9r490+XUE+0SfZ7K40q01G33RM0irMZd7Sbc hI0CR7nOFUty
3IrYl1+ys2vjc3XmeRdLbCGC1keUOYkk2BV3NK21i+UHC9R8jGn7y3Az/CMl 5ZeHvC2lTafO
n/ElRp5XUr5EkaQqI2BHDHexwSD+7PB5xcNtNYeKdR1q4ktY9Lk02GOSWSYq 0TQvM5JBXbs2
y53bhjb05yJJvE+lQ2dvciaeZbjd5cVvayzTfKcPmJFLrtbCtkDaxCnBIFR6 f4mtNS8SXWkW
yPIkNlBeJdKjmKVZS+Nr7dpGFUghjuywH3GwtdXYDjLbTPsPw4X7BNhp9asV tppl8xGjiu7e
3t5MAruVooInJBAbcSCAQBsXvhPUtQt5LybyFv31UaibSC/mhQYtRbbBcook HA35Cc/cxj5q
7aijnYWOU03wmbabThcQ2rWkdlfQXNuZJJwzXM0UhBaXJkHyOGZsbic7QDtW pD4T1uy0y/to
9S+1tLqCTgtdS20lzAltHCqyToC6Sbow7Omd5XGFDkL21FLnYHIeGfCt/otx pj3VzBP9ki1J
JHRpCXNxdRzIRvLN91DncxOT1bk1B/whN5P4e0vSprqCPyPDdxo08qAviSRI FDqCBuUeUx5I
PT1OO2oo53e4HOeGNCuNLuL27u4EhnuEjiwNSub9iqFyMyzYIGZDhQoxyctu wu/GZi8oljRU
D4iKuWLLtHLDA2nduGBngA55wJKKTd3cDnNXstauXvLVtN0fWdLuXV1g1Gcx CIBV/d7RDIHG
5S4YnOWxj5QTmXPhLV30/VbD7ZBd/bfDcWlfbLiVxI9xGJhvdcN8redkncSC Ohzmu2opqTQH
Mav4cvNQ1i6u4pIFjl/svaHYgj7NdvNJnjurAD1PXA5qhrdk+i3c+uTXVjEo 1pb6D7VK0UJB
sRbFZZQjCLncQSCCdi8FxjtqKFJgee+HBNeHw/bmRJp7fUtR1aaeJCsTQvJc xxuoyxAlM4eP
JIZEchjt574mb7QirGhgKMXcuQwbI2gLjBBG7JyMYHBzxJRSk7sDA1my1f8A 4SHTtV0q3sbn
7Pa3NtJFdXTwf6x4WDArG+ceURjA6iqdz4f1V9NuZIp0F9fXovL23iupLaNw IliESToPMQKE
jbeBlyhGFVyq9XRTUmgOM8O+FtV0S70dpZrW5S2TUo7mTzZAxFxcLMjKH3Fj 8gDBnyN2dzY5
qW3gbUrrULhtZvvNt7jSrrTZ5EvJpJJWlMWZlWTMcO4I37tF2oQOXGAvfUUc 7A5yWw13VjBZ
6tFp0NnBcQ3DXFpO7STtFIsiARsgEQLIpPzyYAKjJO8ZkWm3mkSwXGtXGlWO kabqt3qKXjXh
y/ntOFR1ZFWP/j56725UDHzZHbUUcwHmNp4IvtQ8PaM0kH+v0Cz067t7i+ub TyNiNuLxxY8/
/WkGNymNmNw3HHXw6fq9jr1/JaCxay1G6S6mmmkfzItsUcbIsYXDZEQwxdcF /uttw2/RQ5tg
cfd6feaZ8PvFFtdiD5hqU8LQyFt0crSyruBUbWG8ggZHGc84BWv4u/5EvXf+ wfcf+i2orrwz
umz6LJf4cvUPCP8AyJehf9g+3/8ARa1e1PTLLWdNn07UbaO5tJ12yROOCP6E HBBHIIBHNUfC
P/Il6F/2D7f/ANFrXnfxJvtfsPFVlNNLJbacrD+y7m3b5Vm2fMJAePMPz4yC pTIHVwVhMNLE
1/Zxkovpc8mnQeIxPsk0m29zvtQ0q8ttR02/0S1sX+xWs1mtnNKbeMRyGIgq yo+NvkgBduMN
1GMGvfeGbzU/7dS6u4F/tTRYtOM0UZG2QfaN77CThf3ykDcTwQT3NTw58QLH U/DtvqGpbrV3
keIusLmKQJt3zqQDiAbgGkb5UPBY8E67+LtES3tLj7W7QXVul0siW8jLHC4y skpCkRIRn5pN
o+Vv7pxjOE4ScZLVHLKLjJxe6Mez8ManBYao8eyzvrtIYxjVbq7Z442Zihnl w0YYO6AomU3F
wWOAsGl+EdY06e3uGe1lddd/tF0e8nkKwtZ/ZyvmSBmd1JOM4DBR9zO1deHW 73XLrWLHSGSx
uNLvVt3lvrGWRJVMSuSo3R87mxwzcAN0dTUfhjWr+60XR7/XLyxMmsxRPaQ2 tnJFsdoWmZCx
kfd8qnn5funuQKm8rMkp6X4PuLHxILuVUkt4r25vYp21C5c7pjIdq22RFGR5 zLvBbIBO0F8q
zRfh/Z6Ha+Grq007SotY02JIbueKEL9oUx7JTv253Zw4YjcdpXKiRjW3ceLt EtjCr3btJO86
QxRW8kkkrQSCOUIiqWYqx6AHgFh8oJEl14o0az8kyXm+OaJZxLBE80aRN92W R0BWOM4JDuQp
Csc4U4V5gZdn4e1GHVLOOU2v9n2OpXWpRTrKxllafz/3bR7QEC/aG+YO2dg+ UbvlzD4M1ebw
82lSvYx/Y9AuNFs5VmdvtHmJGolkGweVjyVO0GT755+X5t+68TW9lqGoSXk8 FrpGneTBcXMu
f+PmUrtXP8KqrxksQQfOHK7GzY/4SfSv7P8AtvnT7fN8jyfssv2jzMbtnkbf M3bfnxtzt+b7
vNO8twK89lq8Gof2xYW9jLe3NrFbXdpPdOka+WXZWjlEZJwZXBBT5gVPy7SG z7jw/q6SWmp2
yWM2p/2qdRuYJLh4oRm0a2CI4jZjtXZyV+YhjhchRqT+LtEt0s2e7dnvEka3 hjt5JJZPLZVk
URqpbepb5kxuXDZA2tiS18U6He+c1vqUDwwxNObjJELRr990kPyOqkgMVJCk gNgml73YDkG0
L+0L6Xw/9tgNzLpWrpfNbnzRZSXs8MqKw4PRn27tpcISAOQNCDwjffYr2R4o IL2SWzljV9Tu
b3f9mm85VaablVY5XCp8uS3z52jfh8T6VNZ3FyZp4Vt9vmRXFrLDN8xwmInU O25squAdzAqM
kEVHJ4u0SGyiuprt4kluPsqRyW8iS+dsLiMxFd4cqMqpALZXGdy5fNICvc2G u38ui3lxFpyT
2epfaJII53KpCYJISBIUy75k3/dQfw9txzLHT7xry2s4RB9p0jX7i+nSaQoJ Le5FwyvHhSWw
LjHIALxSLnjNb83ifSobO3uRNPMtxu8uK3tZZpvlOHzEil12thWyBtYhTgkC i68UaNZ+SZLz
fHNEs4lgieaNIm+7LI6ArHGcEh3IUhWOcKcK77AY+j2tncfEPWtQtJ/PjhiC tJG4ZFuJNkc0
RI6Mi2dudvUeY2eGXGJ4c8N6jr/gbSkvbi1ggfww2nW8sIZmZbiKE7nQ4ClB GBwx35J+T7td
vN4h0y31QadJO4n3rGzCCQxRu2NqPKF2I5yuFZgTvTA+Zc5cviO8j8C65rgj g+02H9o+UhU7
D9nllRNwznkRrnBHU4xTuwJPDGhXGl3F7d3cCQz3CRxYGpXN+xVC5GZZsEDM hwoUY5OW3YXf
jMxeUSxoqB8RFXLFl2jlhgbTu3DAzwAc84HOJdeI9S1nWYbC/wBKtbawuktk WfT5JnbMEUpY
sJ0HWUjGO1SeG/Ek2v3CM1ukEEukWOoogJZlaczblLcAgCNccDv+Cab1A0J9 Oml8U2GpqyeR
b2VzbupJ3FpHgZSOMYxE2ee4/DD0e1s7j4h61qFpP58cMQVpI3DItxJsjmiJ HRkWztzt6jzG
zwy46uOZZXlRQ4MT7G3RsoJ2hvlJGGGGHIyM5HUEDmLnWtRuPE1zpFrq2j6Z PG4S3tb62aaa
7Xy1kMsYE0Z2Alk4DcxNz1CpXAwPDnhvUdf8DaUl7cWsED+GG063lhDMzLcR Qnc6HAUoIwOG
O/JPyfdqxe6FcWXhvXIJ4Ei1DXLddKtoxqVzfuzMJFVjJNg7F813ZVT5VSRs t0Xbt/GUSXl/
a6tYz6fJp2lQ6jeEo8iRbg5kQOE2vs2cFSd3zADKNiw3i7RoluLybVYE0+OK 3fe8LqFEsrxJ
IZD8rRuy8EDAA3birAi25X2A25jMqAwRo771BDuVG3cNxyAeQuSB3IAyM5GZ 4m0+81LRhDYC
BrmO6tblFnkKI3lTxylSwViMhCM4PWj/AISfSv7P+2+dPt83yPJ+yy/aPMxu 2eRt8zdt+fG3
O35vu81b0zVbHWrBb7TblLm0d3RJo+VYoxRsHuNynkcHqMis9VqBkf2XrWo3 EuoXctrpmoR2
U9nZfZHN0sRlKMZWLom4ho48JtAG1sltwC4Efg3XIxqVyptTPcPpskFvNqdz cBDbXLSsrTyq
zYYEYIUAEkbeNzdXca/Fb+LLDQDbztJd2s1yJhE5RdjIApYLt53NklhjCg8u uR/FGjR6fDft
eYtptPk1KN/Kfm2QIWfGM8CROOvPTg1SclsBh6/4X1jVtdiuEvENpFe2l0m+ 7nQJHFJGzQ+Q
mI2JKu4lfccsE2gBXXQisNd0kz2ekxadNZz3E1wtxdzuskDSyNI4MaoRKAzs R88eQQpwRvNy
HxRo09ncXUd5mG32lj5TguHOI2jXGZFc8IyBg54Usay9Y8YG3tNOutJtXvRL evBc2rwyR3Cq
lvLMyrGwDCUiNSqsBuDDoGDA956WAoXng7UYbe60jTBavpd3oVvozXFzcss0 CxiZfMCLGVkO
2YHG5MlSOM5Fc6UfFD6pqGmTJcQJrq3lq8V7Jbx3SixjgbZcQ5ZQGZ+VByYy hxk46MeJrddV
vhJPA2mQ6faXcM8WXMpmkmUBdud+7y0ChQSS2BnIFSSeLtEhsorqa7eJJbj7 KkclvIkvnbC4
jMRXeHKjKqQC2VxncuXeQGXa+HdS0hdLu9Nt7GW5toruKS1mvJgn+kSpMzec yyO7Bo8ElRv3
FvkwFrUstO1GDxTcahcNaywXGm21vJJGWRvOieViRGQQEIm/vkjbjnOaksvF GjajeR2treb5
nyoBidQJACTEzEALKACTESHABJUAVJp3iHTNWuGgs53Z9hkQvBJGsyAgF4mZ QJU5X5kLD5l5
+YZTcuoGnRUYmVrh4AH3oiuSY2C4JIGGxgn5TkA5HGcZGec1rW7y38QxaVDq elaV5kUbQS6j
CZPtkjuymOICWP5k2qSAWJ81eBxulK4HT0Vzlp4juY9d07QdTsXS+ube5laa KNzERFIqKwID
KodTvwXymVU5LLkh8aaJdW6ajb6ojaaLKe8Z/s0h3xxCIs6tjGEEmGXBO444 KMKOVgdHRWRD
4o0aezuLqO8zDb7Sx8pwXDnEbRrjMiueEZAwc8KWNU/+EstLh7a5sJkn09b1 dPviY3R7eaRV
8vIODne6Rsm3IMnJXy2FHKwOjoqOSZYniRg5Mr7F2xswB2lvmIGFGFPJwM4H UgHE8YXur6V4
evdV0q4sY/sNrNcyRXVq8vm7E3BQVkTb0Izhuo9ORK7sBv0VmWFzc29xHp+r X1rcahOkk8X2
a0eBTEhRWyGd+Q0i/wAQzuGBwTVNvGvh5fs+dQ/4+LWK9TEMhxbybtszfL8k Y2nczYCcbiuR
ks+gG/RWZN4h0y31QadJO4n3rGzCCQxRu2NqPKF2I5yuFZgTvTA+Zc6dKwBR RRQMKKKKACii
igAooooAKKKKAMbxd/yJeu/9g+4/9FtRR4u/5EvXf+wfcf8AotqK7cLsz6LJ f4cvUPCP/Il6
F/2D7f8A9FrV7U9MstZ02fTtRto7m0nXbJE44I/oQcEEcggEc1w3h34leEbD wxpNnc6tsngs
4YpE+zSnayoARkLg8jtWn/wtTwX/ANBn/wAlZv8A4iudwmpXSZ5FTC13NtQe /Zj/ABHJb6Bq
OkXsF5pWmpDaz2MQviYbeJHMJyGA2ll8oYhym8bsMoQ1z9p4IvtQ8PaM0kH+ v0Cz067t7i+u
bTyNiNuLxxY8/wD1pBjcpjZjcNxxu/8AC1PBf/QZ/wDJWb/4ij/hangv/oM/ +Ss3/wARTSqL
ozP6pX/kf3M2tJ0+8stZ16aYQG2vrqO5gZJCX4giiZWUqAMGLIIJzu7Y5wNV tf8AhH/hZY6f
dTwf2jYWtstpGr8XV5bhZIokBwX3vEBtGGIJxg9Jf+FqeC/+gz/5Kzf/ABFH /C1PBf8A0Gf/
ACVm/wDiKSjO+wfVK/8AI/uZFPp95oniHwvp2hiCf7Dot1Asd7IU82NHtFGZ FU7W4BzsYHBG
BnctO6+Htx9ntLSORLyAaRb6TOZL65tFCxBx5hihOJgwkP7tmXG3Ab5iRo/8 LU8F/wDQZ/8A
JWb/AOIo/wCFqeC/+gz/AOSs3/xFO1RdGH1Sv/I/uY2506a41jWdMDIk91qV hrELOSFkhia3
WRRxkuptzkAYHmxZI3cWL7w/qrnV3tJ0xeakl35C3UlsZohbRRbGmjBeIh49 +VByFCnhmxD/
AMLU8F/9Bn/yVm/+Io/4Wp4L/wCgz/5Kzf8AxFLln2D6pX/kf3Md4Z8K3+i3 GmPdXME/2SLU
kkdGkJc3F1HMhG8s33UOdzE5PVuTUH/CE3k/h7S9KmuoI/I8N3GjTyoC+JJE gUOoIG5R5THk
g9PU4l/4Wp4L/wCgz/5Kzf8AxFH/AAtTwX/0Gf8AyVm/+IotUve34B9Ur/yP 7mNs/Ct2lhqj
TWlqt3dJCixzapd3m4RMzr+/kIaM5c7Si5jb5/nOFFS7sNb04eG4/Nga7OtS SW9vPdS3KRJ9
iuMxmdwJH3EOd7A7PMwFYIAbv/C1PBf/AEGf/JWb/wCIo/4Wp4L/AOgz/wCS s3/xFFqnYPql
f+R/cxs3hfWDpNrbQ3iKWuLq4uYo7ueBUknmMocSRbXkEe512EoJN2SUIGDS PD2u6Bb6etkd
Omn/ALIs9NuHmlcLA0Af94ihcygmU/KTH9wfN83yu/4Wp4L/AOgz/wCSs3/x FH/C1PBf/QZ/
8lZv/iKLVOwfVK/8j+5jbrwfcTeK7i/2pLaXN7Besz6hcoImiWIBfsyERyHM IIdmGCwyrBAG
sXPh7UXsNQ0CE2p0bUXuGmunlYXEKzszyoqBdrHLvtcsu0MMq+w74f8Ahang v/oM/wDkrN/8
RR/wtTwX/wBBn/yVm/8AiKLVOwfVK/8AI/uY3Ufh9p2sy+IZ7+y057y/uFls 7yS1WaS32wRI
udwGQJI2bZnawODwxFbljp94niG71W6ECfadPtYDFFIX2SRvOz8lRlf3qgHA JwcgVi/8LU8F
/wDQZ/8AJWb/AOIo/wCFqeC/+gz/AOSs3/xFDjUatZh9Ur/yP7mdbGZi8olj RUD4iKuWLLtH
LDA2nduGBngA55wMDV7LWrl7y1bTdH1nS7l1dYNRnMQiAVf3e0QyBxuUuGJz lsY+UE0f+Fqe
C/8AoM/+Ss3/AMRR/wALU8F/9Bn/AMlZv/iKShNfZD6pX/kf3MiufCWrvp+q 2H2yC7+2+G4t
K+2XEriR7iMTDe64b5W87JO4kEdDnNX9X8OXmoaxdXcUkCxy/wBl7Q7EEfZr t5pM8d1YAep6
4HNVf+FqeC/+gz/5Kzf/ABFH/C1PBf8A0Gf/ACVm/wDiKdqnYPqlf+R/cyLW 7J9Fu59cmurG
JRrS30H2qVooSDYi2KyyhGEXO4gkEE7F4LjE/hK6vLXQdNVoPtf2/Vb4yXMC FI1jaW5mWcD5
v3b4Tb82MSL8x4y3/hangv8A6DP/AJKzf/EUf8LU8F/9Bn/yVm/+Io5ZtW5Q +qV/5H9zNq70
+8k8WaVqcIga2gtbq2nDyFXHmNCysoCkNzDgglfvZ5xiuIltbM+DviHqVjP9 otJrW6itrhHD
xzR+XLcMysOGxNdTpkHAEYHVWJ3f+FqeC/8AoM/+Ss3/AMRR/wALU8F/9Bn/ AMlZv/iKFGa6
MPqlf+R/cxuoeFtV1iLU5r+a1S7nSyjjW2lkjWUWs7TBi4+aEyFyuF3mPAIZ zxUmm+Frq1k0
24ZIIZItVe/uE+2z3TEG0e3H72X5nblD0QBeMErlm/8AC1PBf/QZ/wDJWb/4 ij/hangv/oM/
+Ss3/wARRaptYPqlf+R/cxsfhHUbCbWf7Pv0S3uLe3hs03NG8caTTSPBvX7i FZTGjoAY1xhc
oCzNE8IalYXcE9zPA23Wm1Fl+0zTssZsTb7N8uWdg56kgFRkBeEEv/C1PBf/ AEGf/JWb/wCI
o/4Wp4L/AOgz/wCSs3/xFFqnYPqlf+R/cy1a+HLyD+yd0kB+x61e6hJhjzHN 9q2gcfeHnpnt
w3J4zT8H+D7jw/cW5uFRhZWX2KGc6hc3DTLlMsI5CEtwfLUlF3dQAwC/M7/h angv/oM/+Ss3
/wARR/wtTwX/ANBn/wAlZv8A4ijlqdmH1Sv/ACP7mdaDN9odWjQQBFKOHJYt k7gVxgADbg5O
cngY5yNXg1p7iZbS107UtPubcQy2d9MYVQ5bcciKTeHVgCpwBs77jjJ/4Wp4 L/6DP/krN/8A
EUf8LU8F/wDQZ/8AJWb/AOIpKE10D6pX/kf3Mm0rw9qOm6lok5Nq0Ftb30M0 aysPs6zyxyxx
xDbhkjEYjGdnygEAY21Qn8F6jL4WsNMWe18+38MXOjuxdtpmkSBVYfLnZmJs nGeRx6Wf+Fqe
C/8AoM/+Ss3/AMRR/wALU8F/9Bn/AMlZv/iKdqnYPqlf+R/cx3ibSnW41PV5 LiCK38rTWQyb
sB7a6kmPmEKdkZ3qC/OwbmIwvOJYTzawLyIS2txPqniK2u4ZbJi8Bht47WSR lfq6KYTD5gAB
kKghN2F2f+FqeC/+gz/5Kzf/ABFH/C1PBf8A0Gf/ACVm/wDiKaU19lh9Ur/y P7mdbIZg8Qij
RkL4lLOVKrtPKjB3HdtGDjgk54waHiTTptY8LavpluyLPeWU1vG0hIUM6FQT gE4yfSsH/han
gv8A6DP/AJKzf/EUf8LU8F/9Bn/yVm/+IqFCa6B9Ur/yP7mO+IFrZ6lp9hps s+Lu5uhFDbo4
8yWOUG3nZV6nZDPI+QMKVBOQCDU13TtR1jxT4h0yya1WC+0K1tLhpiwaJZHu 18xMAhioJ+Qg
bsj51xzZ/wCFqeC/+gz/AOSs3/xFH/C1PBf/AEGf/JWb/wCIqlGaWzD6pX/k f3MbdeD7ibxX
cX+1JbS5vYL1mfULlBE0SxAL9mQiOQ5hBDswwWGVYIA3Z1x3/C1PBf8A0Gf/ ACVm/wDiKP8A
hangv/oM/wDkrN/8RScJvow+qV/5H9zOxorjv+FqeC/+gz/5Kzf/ABFH/C1P Bf8A0Gf/ACVm
/wDiKXs59mH1Wv8AyP7mdjRXHf8AC1PBf/QZ/wDJWb/4ij/hangv/oM/+Ss3 /wARR7OfZh9V
r/yP7mdjRXHf8LU8F/8AQZ/8lZv/AIij/hangv8A6DP/AJKzf/EUezn2YfVa /wDI/uZ2NFcd
/wALU8F/9Bn/AMlZv/iKP+FqeC/+gz/5Kzf/ABFHs59mH1Wv/I/uZ2NFcd/w tTwX/wBBn/yV
m/8AiKP+FqeC/wDoM/8AkrN/8RR7OfZh9Vr/AMj+5mx4u/5EvXf+wfcf+i2o rlPEXxK8I3/h
jVrO21bfPPZzRRp9mlG5mQgDJXA5PeiuvDRaTuj3sopTpwkpprXqf//Z
--------------070404040103010309030003--
--------------030504050306030600010906--
|
|
|
Re: More about 'partial code generation' [message #389423 is a reply to message #389360] |
Tue, 23 November 2004 16:22   |
Eclipse User |
|
|
|
C'est un message de format MIME en plusieurs parties.
------=_NextPart_000_0011_01C4D1AA.F8648800
Content-Type: multipart/alternative;
boundary="----=_NextPart_001_0012_01C4D1AA.F8648800"
------=_NextPart_001_0012_01C4D1AA.F8648800
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Ed,
Looks neat, I'll try it!...Seriously, it seems that my OO/Eclipse =
culture is different (question about factories) and (certainly) =
incomplete - for this current question I've never been on the stereotype =
wavelength and if Eclipse/EMF uses them a lot then I need to get with =
it.
I'm trying to restrict my queries to those which seem to be Eclipse/EMF =
specific but of course I'd more easily recognise/work these things out =
if I had a bit more experience etc. I've already asked you about the EMF =
book which you've declined to plug - would that be a good place to go to =
familiarise with some of these basics or does it go into a lot of =
advanced stuff ? (yes, I've looked at some of the other forum posts!)
Otherwise, I'll keep askin' 'em if you'll keep answerin' 'em!.and =
thanks.
Ian
"Ed Merks" <merks@ca.ibm.com> a =E9crit dans le message news: =
cnv8d9$ido$1@www.eclipse.org...
Ian,
The point is simply that you can create a "wrapper" for an existing =
interface using <<Interface>> and <<javaclass>> like this:
Ian Ward wrote:=20
Hello,
I have recently been advised by Ed Merks to look at how sdo works,
particularly in respect of how it works with the commonj.sdo interface. =
This
is in order to give me a model for how to integrate an existing package =
of
ready-coded classes into my project while not generating code for them - =
a
bit like a java package I suppose.
I have spent a couple of hours with some documentation and with the code =
- I
have established that, generally speaking, sdo implements the interfaces
defined in commonj.sdo by delegating to SDOUtil (looking at =
EDataObjectImpl
for example).
At this point, as much as I would like to know more about sdo, I feel =
that I
am losing the plot. I'm not sure how to go about finding what I am =
looking
for and, in fact, I'm not sure anymore what it is I'm looking for !
Maybe it's all about defining interfaces in the model (and so I'll have =
no
problem with my import statements which is where I started) which then =
are
implemented by calling methods on the classes I want to integrate. But =
then,
I'll still have to import them at this point and I've just moved the
problem, haven't I?
So, how do I persuade Eclipse to recognise these 'external' classes?
Thanks
Ian Ward
=20
------=_NextPart_001_0012_01C4D1AA.F8648800
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE></TITLE>
<META http-equiv=3DContent-Type =
content=3Dtext/html;charset=3DISO-8859-1>
<META content=3D"MSHTML 5.50.4807.2300" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY text=3D#000000 bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2><FONT size=3D2>
<P>Ed,</P>
<P>Looks neat, I’ll try it!…….Seriously, it seems that =
my OO/Eclipse culture is=20
different (question about factories) and (certainly) incomplete - for =
this=20
current question I’ve never been on the stereotype wavelength and =
if Eclipse/EMF=20
uses them a lot then I need to get with it.</P>
<P>I’m trying to restrict my queries to those which seem to be =
Eclipse/EMF=20
specific but of course I’d more easily recognise/work these things =
out if I had=20
a bit more experience etc. I’ve already asked you about the EMF =
book which=20
you’ve declined to plug – would that be a good place to go =
to familiarise with=20
some of these basics or does it go into a lot of advanced stuff ? (yes, =
I’ve=20
looked at some of the other forum posts!)</P>
<P>Otherwise, I’ll keep askin’ ‘em if you’ll =
keep answerin’ ‘em!…and thanks.</P>
<P>Ian</P></FONT></FONT></DIV>
<BLOCKQUOTE=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
<DIV>"Ed Merks" <<A =
href=3D"mailto:merks@ca.ibm.com">merks@ca.ibm.com</A>>=20
a =E9crit dans le message news: <A=20
=
href=3D"mailto:cnv8d9$ido$1@www.eclipse.org">cnv8d9$ido$1@www.eclipse.org=
</A>...</DIV>Ian,<BR><BR>The=20
point is simply that you can create a "wrapper" for an existing =
interface=20
using <<Interface>> and <<javaclass>> like =
this:<BR>
<BLOCKQUOTE><IMG alt=3D""=20
=
src=3D"cid:000c01c4d1a2$96091020$1551f8c1@l8t7p3"><BR></BLOCKQUOTE><BR>Ia=
n Ward=20
wrote:=20
<BLOCKQUOTE type=3D"cite" =
cite=3D"midcnuj0d$cln$1@www.eclipse.org"><PRE wrap=3D"">Hello,
I have recently been advised by Ed Merks to look at how sdo works,
particularly in respect of how it works with the commonj.sdo interface. =
This
is in order to give me a model for how to integrate an existing package =
of
ready-coded classes into my project while not generating code for them - =
a
bit like a java package I suppose.
I have spent a couple of hours with some documentation and with the code =
- I
have established that, generally speaking, sdo implements the interfaces
defined in commonj.sdo by delegating to SDOUtil (looking at =
EDataObjectImpl
for example).
At this point, as much as I would like to know more about sdo, I feel =
that I
am losing the plot. I'm not sure how to go about finding what I am =
looking
for and, in fact, I'm not sure anymore what it is I'm looking for !
Maybe it's all about defining interfaces in the model (and so I'll have =
no
problem with my import statements which is where I started) which then =
are
implemented by calling methods on the classes I want to integrate. But =
then,
I'll still have to import them at this point and I've just moved the
problem, haven't I?
So, how do I persuade Eclipse to recognise these 'external' classes?
Thanks
Ian Ward
</PRE></BLOCKQUOTE><BR></BLOCKQUOTE></BODY></HTML>
------=_NextPart_001_0012_01C4D1AA.F8648800--
------=_NextPart_000_0011_01C4D1AA.F8648800
Content-Type: image/jpeg;
name="moz-screenshot.jpg"
Content-Transfer-Encoding: base64
Content-ID: <000c01c4d1a2$96091020$1551f8c1@l8t7p3>
/9j/4AAQSkZJRgABAQIAJQAlAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsL DBkSEw8UHRofHh0a
HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgN DRgyIRwhMjIyMjIy
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/ wAARCAB/AcgDASIA
AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA AgEDAwIEAwUFBAQA
AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcY GRolJicoKSo0NTY3
ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKT lJWWl5iZmqKjpKWm
p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP0 9fb3+Pn6/8QAHwEA
AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQA AQJ3AAECAxEEBSEx
BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2 Nzg5OkNERUZHSElK
U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOk paanqKmqsrO0tba3
uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMB AAIRAxEAPwD0/wAO
6Jb3/hjSby5vNXeeezhlkf8Ata6G5mQEnAkwOT2rS/4Rqx/5+dX/APBvdf8A xyk8I/8AIl6F/wBg
+3/9FrWzXmSqTu9Tqq1JqbSb3Mf/AIRqx/5+dX/8G91/8co/4Rqx/wCfnV// AAb3X/xytiil7Sfd
ke1n/M/vMf8A4Rqx/wCfnV//AAb3X/xyj/hGrH/n51f/AMG91/8AHK2KKPaT 7sPaz/mf3mP/AMI1
Y/8APzq//g3uv/jlH/CNWP8Az86v/wCDe6/+OVsUUe0n3Ye1n/M/vMf/AIRq x/5+dX/8G91/8co/
4Rqx/wCfnV//AAb3X/xytiij2k+7D2s/5n95j/8ACNWP/Pzq/wD4N7r/AOOU f8I1Y/8APzq//g3u
v/jlbFFHtJ92HtZ/zP7zH/4Rqx/5+dX/APBvdf8Axyj/AIRqx/5+dX/8G91/ 8crYoo9pPuw9rP8A
mf3mP/wjVj/z86v/AODe6/8AjlH/AAjVj/z86v8A+De6/wDjlbFFHtJ92HtZ /wAz+8x/+Easf+fn
V/8Awb3X/wAco/4Rqx/5+dX/APBvdf8Axytiij2k+7D2s/5n95j/APCNWP8A z86v/wCDe6/+OUf8
I1Y/8/Or/wDg3uv/AI5WxRR7Sfdh7Wf8z+8x/wDhGrH/AJ+dX/8ABvdf/HKP +Easf+fnV/8Awb3X
/wAcrYoo9pPuw9rP+Z/eY/8AwjVj/wA/Or/+De6/+OUf8I1Y/wDPzq//AIN7 r/45WxWJ4k1m50e3
gaCBAkrlZLycO0NouPvuEBOByediYVt0ifLkU5vS7D2s/wCZ/eP/AOEasf8A n51f/wAG91/8co/4
Rqx/5+dX/wDBvdf/AByqGoa3eaVodhNFcQXy3WWk1Z0P2WBW+YSFYgx8sA5G 4qu1PnmBwzZGt6nc
aVLa6xFewajcW/hvVL2O4CAQykNayLtCn/V9APmJ24yzHLGlKb6h7Wf8z+86 b/hGrH/n51f/AMG9
1/8AHKP+Easf+fnV/wDwb3X/AMcrmdf1bxGI5tO+1WNrexXWlz+bBFIyLHcX Zj8k/OpfaY/mf5Q6
sV2JnNW7rxZqCeK7jT7W1eWC1vYLOSFNNuJTIJFiZpftK/u4ggmyUYEkRnkb xgvU7h7Wf8z+82/+
Easf+fnV/wDwb3X/AMco/wCEasf+fnV//Bvdf/HK5G9n1fxJeaNFf/2V/ZE2 v3Vk9m9s8wuY4BdA
GTLhf+WQwu1gHVXz/ALCePLq2/tCS4SC9ji0q61OL7Paz28YEOz5EnkBW4Vv MGJUCjC524cAO9Tu
HtZ/zP7zpv8AhGrH/n51f/wb3X/xyj/hGrH/AJ+dX/8ABvdf/HKoapqut+Ht BurvUJLG7k823igm
tbSVcGWVYjmAM7Pt3BsK+X5UBSAxr2+uX914eu7271GDSGsboIL+/wBPktre 4QovLQzMrqu6QoMO
MtGDnBKUuae9w9rP+Z/ea/8AwjVj/wA/Or/+De6/+OUf8I1Y/wDPzq//AIN7 r/45VD+27y78Mf2r
c3EHh14Zfmlv0LW7Lnb8wlEUgUlsDIjbcoxuTG/U0DU7nV9LW6u9PeykLldj bwGA/iUSIjgdvmRT
kHAK7WZOU11D2s/5mRf8I1Y/8/Or/wDg3uv/AI5R/wAI1Y/8/Or/APg3uv8A 45WxRS9pPuw9rP8A
mf3mP/wjVj/z86v/AODe6/8AjlH/AAjVj/z86v8A+De6/wDjlbFFHtJ92HtZ /wAz+8x/+Easf+fn
V/8Awb3X/wAco/4Rqx/5+dX/APBvdf8Axytiij2k+7D2s/5n95j/APCNWP8A z86v/wCDe6/+OUf8
I1Y/8/Or/wDg3uv/AI5WxRR7Sfdh7Wf8z+8x/wDhGrH/AJ+dX/8ABvdf/HKP +Easf+fnV/8Awb3X
/wAcrYoo9pPuw9rP+Z/eY/8AwjVj/wA/Or/+De6/+OUf8I1Y/wDPzq//AIN7 r/45WxRR7Sfdh7Wf
8z+8x/8AhGrH/n51f/wb3X/xyj/hGrH/AJ+dX/8ABvdf/HK2KKPaT7sPaz/m f3mP/wAI1Y/8/Or/
APg3uv8A45R/wjVj/wA/Or/+De6/+OVsUUe0n3Ye1n/M/vMf/hGrH/n51f8A 8G91/wDHKP8AhGrH
/n51f/wb3X/xytiij2k+7D2s/wCZ/eY//CNWP/Pzq/8A4N7r/wCOUf8ACNWP /Pzq/wD4N7r/AOOV
sUUe0n3Ye1n/ADP7zH/4Rqx/5+dX/wDBvdf/AByj/hGrH/n51f8A8G91/wDH K2KKPaT7sPaz/mf3
nK+ItEt7Dwxq15bXmrpPBZzSxv8A2tdHayoSDgyYPI70Vo+Lv+RL13/sH3H/ AKLaiuvDSbTuz3so
SqQk5669Q8I/8iXoX/YPt/8A0WtbNY3hH/kS9C/7B9v/AOi1rZriluzwav8A El6sKKKKRAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUARwwQ26FIIkiQu zlUUKCzMWY8dyxJJ
7kk1Qu/Duk3ySJPZJskt7i2dUJQGOdg0w+UjlmUEt1zk55NZ/jiCG68OR29x Ek0EupaekkcihldT
eQggg8EEdqpyQ2fhbxDHDpNtY6fZS6VeXc8AIt7YyQvAEdiAQnEjhnAyRjO7 YoFJdUI3NR8PaZqh
uWu4HL3CQJI8c8kbYhkMkWGVgVKuxORg/kKJvD2mXGqDUZIHM+9ZGUTyCKR1 xtd4g2x3GFwzKSNi
YPyrjiL7xLrl/Z3Flb3qQ3dte6W5un0m5s96T3Xl+X5UkgYgFMlt2GVmTAOW rb1jxTdaZ4hjt0eC
W2+1W1o8EdlPI2ZnRdz3A/dQsPMDeWwJKheR5g21yyA349E0+L7Nst8fZrqW 8i+dvlml8ze3XnPn
ScHgbuAMDFS28IaDa3Dzx6cjO9vJakSu0iiBypMIViQIvlGEA2rztA3HOBDY WWqadcavfeHn1vUj
qV5bpND5S3EEcVxLHGY5JHTywqouNjA7iW+8Wap9P8T3146yW0lqdLi0K21N rjUn8qVzKs2BIUGx
B+7VmcAhcMArbgUVn0YG5D4Y0qGzuLYwzzLcbfMluLqWab5TlMSuxddrZZcE bWJYYJJqey0TT9Pi
jSG33MkpnEs7tNKZCpTeZHJYtsOzJOQvy9OK5FPGmrLbX8McUF1e28uniN59 PuNORxc3BhKlJdzj
AUnzBkfN907SCahqGr3eo6TZ5sX1Ow19rX7R5bxwvu06WXf5e5mG1Zcbd/zF PvJu+V8surA7qSCG
Z4nliR3hffEzKCUbaVyvodrMMjsSO9SVmeH9Rm1TSfPuFQTx3E9tIYwQrtDM 8RYAklQxTdtycZxk
4ydOs3poAUUUUDCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigDG8Xf8iXr
v/YPuP8A0W1FHi7/AJEvXf8AsH3H/otqK7cLsz6LJf4cvUyvC/iKyg8JaNE8 GplksYFJTS7l1JEa
jhhGQR7g4Nav/CT2H/Pvq3/gouv/AI3R4R/5EvQv+wfb/wDotat6tq1to1kb m53MS2yKKMAvM56I
oOMngnnAABJIAJHOo88+WKu2eFXnSjKUpaJX6/8AAKn/AAk9h/z76t/4KLr/ AON0f8JPYf8APvq3
/gouv/jdSv4j0iPSodSe/iW1nby4Sc75JOf3apjc0mVYeWBuyCMZGKWTX7G2 0uLUL5nsY532Qx3K
7ZZW52qsfLF2AyI8b+cFQ2QJcbOzTuSpU2rpP7/+AQ/8JPYf8++rf+Ci6/8A jdH/AAk9h/z76t/4
KLr/AON05ddt/Nt5LiX7DDJa3F0YryIxv5UbIDKWJxGoDglXAb5xnaVYUWni fSryeGBJp4riaXyU
gubWWCQsUdwdkihgpWKTDEbSUYA5GKVl2C9Ps/v/AOAN/wCEnsP+ffVv/BRd f/G6P+EnsP8An31b
/wAFF1/8bpsvi7RIThrtyFeRZWS3kdYNkjRs0rBSIkDRuN74U7GIJCkixN4h 0y31QadJO4n3rGzC
CQxRu2NqPKF2I5yuFZgTvTA+ZclvIL0+z+//AIBD/wAJPYf8++rf+Ci6/wDj dH/CT2H/AD76t/4K
Lr/43VWz8VwLp3n6gH89r28t44bO1lndkhuHi3bEDNgBU3NjALDpuAq5deKN Gs/JMl5vjmiWcSwR
PNGkTfdlkdAVjjOCQ7kKQrHOFOHbyC9Ps/v/AOAN/wCEnsP+ffVv/BRdf/G6 P+EnsP8An31b/wAF
F1/8bqabxDplvqg06SdxPvWNmEEhijdsbUeULsRzlcKzAnemB8y5IdfsZNUO mTM9pfF2WKC5XYZw
uTuiP3ZRtAY7CSoI3BTxSsuwXp9n9/8AwCH/AISew/599W/8FF1/8bo/4Sew /wCffVv/AAUXX/xu
podfsZNUOmTM9pfF2WKC5XYZwuTuiP3ZRtAY7CSoI3BTxU+o6naaVbrNdu4D uERIonlkkbBOERAW
Y4BOADgKT0BNFl2C9Ps/v/4BS/4Sew/599W/8FF1/wDG6P8AhJ7D/n31b/wU XX/xunTeJ9Khs7e5
E08y3G7y4re1lmm+U4fMSKXXa2FbIG1iFOCQKjufF+g2twkEmoozvbx3QMSN IogcsBMWUECL5Tly
dq8biNwyW8gvT7P7/wDgDv8AhJ7D/n31b/wUXX/xuj/hJ7D/AJ99W/8ABRdf /G6afF+grYT3z6ik
dpA8ayTSoyLtkYJHICQMxMx4kGUOCQ2AcEHi7RLi4it0u3Wd3CNHLbyRtCzH CCYMoMJc42CTbvyN
uc07eQXp9n9//AHf8JPYf8++rf8Agouv/jdH/CT2H/Pvq3/gouv/AI3U0PiH TLjVDp0c7mfe0asY
JBFI653IkpXY7jDZVWJGx8j5Wxnp400S/wBHu77T9UQRxWT3iXEltI0ZjVcs 6jCmUISA6ocqTtO1
jii3kF6fZ/f/AMAtf8JPYf8APvq3/gouv/jdH/CT2H/Pvq3/AIKLr/43Wje3 tvp1nJdXUmyFMAkK
WJJIAVVGSzEkAKASSQACTVD/AISfSv7P+2+dPt83yPJ+yy/aPMxu2eRt8zdt +fG3O35vu80rLsF6
fZ/f/wAAb/wk9h/z76t/4KLr/wCN0f8ACT2H/Pvq3/gouv8A43VHTPGVlcaN Hf3EvnefdXcduun2
8lyZYop3jWQLGHYrtCZb7uXHTcBWhrus/YfB2pa5p7wXHkafLd2753xybYy6 nIPKnA6Hkd6dtbWC
9Ps/v/4BS1PU9F1iwayvbTWWgZ0f93pt7EwZGDqQyIGBDKDkHtVezm8O2dvd QLYazcJdJ5c5vdPv
rppUwRsZpUYlPmb5c4+ZuPmObsV7q+malY2usXFjeR6hK0EMlnavAYpFjeT5 laR9ylY35BBBAGGD
ErX1Lx1pVnoep6jbefdNZWr3Ucf2eVBcqv8AFExTDx5K5kTcqhgxOCCXbogv T7P7/wDgGcLLwkIL
qP8As7XS135JuJjaagZpDC5eJjLt37lY8NnOAozhQBYvB4X1DUFvrrS9WknW WOcf8S29CCWMqUl2
BNvmDaq78bio2k7eK2brxPpVl5P2maePzYlnbNrKfIjPR5vl/crw3Mm0fK39 1sV5b3V9T1K+tdHu
LGzj0+VYJpLy1ecyyNGknyqsibVCyJySSSSMKFBYv6hen2f3/wDAM69/4RvU LyS5uLLXS0uPOijs
7+OGfAA/exKoSTKgKd4OVAU5AAq5JqWhTXF3PNp2pSvd2621wJNIu2WSJS5C lTHjH7x+3O7nPFXf
+Egt7WXT7PVV+x6nfbxFaKTKZCjKrFCo+ZfnVskAhCWYLtbbGni7RHt7u4+1 usFrbvdNI9vIqyQo
MtJESoEqAY+aPcPmX+8Mr7wvT7P7/wDgHL6jpnh2XTp7ez03Umku7iya8e80 6+nNzFBcLIVkZ42L
nbvUZzxtUnaBjXtpvDtoLby7DWWe3uDcpLLp99JIZTG0ZZ3ZCznYxX5icDAH 3RiXU/Genw6NJqFl
dwGOC6tI5pLhWjQQyzpGZQW27oypcrIModpwSAa29O1O01W3aa0dyEco6SxP FJG2AcOjgMpwQcED
IYHoQabbtrcL0+z+/wD4Bl2es6Rp8DQ2tnq0cbSyTEf2VdnLyOzueY+7Mx9s 8cVP/wAJPYf8++rf
+Ci6/wDjdbNFTdBen2f3/wDAMb/hJ7D/AJ99W/8ABRdf/G6P+EnsP+ffVv8A wUXX/wAbrZopaBen
2f3/APAMb/hJ7D/n31b/AMFF1/8AG6P+EnsP+ffVv/BRdf8AxutmijQL0+z+ /wD4Bjf8JPYf8++r
f+Ci6/8AjdH/AAk9h/z76t/4KLr/AON1s0UaBen2f3/8Axv+EnsP+ffVv/BR df8Axuj/AISew/59
9W/8FF1/8brZoo0C9Ps/v/4Bjf8ACT2H/Pvq3/gouv8A43R/wk9h/wA++rf+ Ci6/+N1s0UaBen2f
3/8AAMb/AISew/599W/8FF1/8bo/4Sew/wCffVv/AAUXX/xutmijQL0+z+// AIBjf8JPYf8APvq3
/gouv/jdH/CT2H/Pvq3/AIKLr/43WzRRoF6fZ/f/AMAxv+EnsP8An31b/wAF F1/8bo/4Sew/599W
/wDBRdf/AButmijQL0+z+/8A4Bjf8JPYf8++rf8Agouv/jdH/CT2H/Pvq3/g ouv/AI3WzRRoF6fZ
/f8A8Axv+EnsP+ffVv8AwUXX/wAbo/4Sew/599W/8FF1/wDG62aKNAvT7P7/ APgGN/wk9h/z76t/
4KLr/wCN0f8ACT2H/Pvq3/gouv8A43WzRRoF6fZ/f/wDkfFHiKyn8JazEkGp hnsZ1BfS7lFBMbDl
jGAB7k4FFavi7/kS9d/7B9x/6Laiu3DWs7H0GTcvJK3cPCP/ACJehf8AYPt/ /Ra1ynizTvE48Ufa
LCzi1KK8jEFm7sUXT2wC4k6/u22l9yjcSoQ5/d1reF/EVlB4S0aJ4NTLJYwK Sml3LqSI1HDCMgj3
Bwa1f+EnsP8An31b/wAFF1/8bqcNiKmGqupGN990fN4/ALFKVKrFuLfn3KGm eB7PT9Kjha9vJNSE
jTvqccpjmaZgoYgD5dnyJ+6IZMRpuVsVozaF9ss7db29na/ttwh1C3PkTAE8 Z2/K3RCykeWzKCUx
hQ3/AISew/599W/8FF1/8bo/4Sew/wCffVv/AAUXX/xusKk6lSTnPVsqOHlC KjGNkvIxZo7u68Uw
WFtrKS6lZ6RfQS3qRIzWskr25gaWMHaHKqWwdofYxAA4FS28F6sq6zcSSwJc XMVm9lFJqFxdiKe2
lklQSSy5Zoy5QnaF4LADI3t0v/CT2H/Pvq3/AIKLr/43R/wk9h/z76t/4KLr /wCN0ry6Ir2NT+V/
cc14j8DaleeHo9C0q+/0KLShYQfaLyaHymVCu51hwJ942KQ+FTbuCvuZTvw6 fq9jr1/JaCxay1G6
S6mmmkfzItsUcbIsYXDZEQwxdcF/uttw03/CT2H/AD76t/4KLr/43R/wk9h/ z76t/wCCi6/+N0Xl
tYPY1P5X9xiz+F9YOnRWsF4iob29mkRLue3A864aSOXfFtdyisQYsqrFz8w2 qagHhHWLfR9EtLR7
WK8tNNgs3vYryeBoZI1wH2KNt0gJLLHIFA+YZxIcdD/wk9h/z76t/wCCi6/+ N0f8JPYf8++rf+Ci
6/8AjdF59g9jU/lf3FG80PUn8TrfWZgtoWljkkuI7uZGKqFDo9sMxTMyqU81 iGVWXAzGpOh/YX2n
UPtmp3s955cvmW9tny7eHByvyD/WMMIcyFsMu5AnQN/4Sew/599W/wDBRdf/ ABuj/hJ7D/n31b/w
UXX/AMbpe92D2NT+V/cO/sL7TqH2zU72e88uXzLe2z5dvDg5X5B/rGGEOZC2 GXcgToDXtPvLttNu
7AQSXOn3RuUhnkMaS5ikiKlwrFcCUtnac7ccZyG/8JPYf8++rf8Agouv/jdH /CT2H/Pvq3/gouv/
AI3StLsHsqn8r+4q3VhrpvdN1iKLTp9Qgt7i3ltmneGILK8b5WTY5Yr5Sryo 3ZLfJ92sz/hCbyDw
9qmlQ3UEnn+G7fRoJXBTMkaTqXYAHap81TwSevoM7v8Awk9h/wA++rf+Ci6/ +N0f8JPYf8++rf8A
gouv/jdP3l0D2NT+V/cUdX8OXmoaxdXcUkCxy/2XtDsQR9mu3mkzx3VgB6nr gc0XXhy8n/tbbJAP
tmtWWoR5Y8Rw/ZdwPH3j5D47cryOcXv+EnsP+ffVv/BRdf8Axuj/AISew/59 9W/8FF1/8bo97sHs
an8r+4zbPw9qMOqWccptf7PsdSutSinWVjLK0/n/ALto9oCBftDfMHbOwfKN 3y4HiDQ5tI8DWVvd
XVr59v4YutFSNZDuubqSKEIkQIBckwvgfeORgdcdj/wk9h/z76t/4KLr/wCN 0f8ACT2H/Pvq3/go
uv8A43TTle9g9jU/lf3E2r2dzqWl3lr9ntWJdTAJJXAcLtbJZQGifcCFddxQ hXGSNtYcWga3FY2M
3mQS3djqDXdvZz3ssqKjQPCYzcuhkbmR5NzIcZ2AYAYa3/CT2H/Pvq3/AIKL r/43R/wk9h/z76t/
4KLr/wCN0lzLSwexqfyv7jFsNB13TRZahFDp02oRPqAltWu3SILdXInysvlE krsVcFBncTkYwbk3
hy8X4fXHhWGSB9uijT4Ll2K75PKaMllAO1eFPBY8kY4Gb3/CT2H/AD76t/4K Lr/43R/wk9h/z76t
/wCCi6/+N0e92D2NT+V/cQxWWr6nqVjdaxb2NnHp8rTwx2d085lkaN4/mZo0 2qFkfgAkkg5UKQ3M
TeBteuv7Sa5voJZrjRb3TRJLeTyebNL5eJtrZSFWKHMca4TAwXGAvW/8JPYf 8++rf+Ci6/8AjdH/
AAk9h/z76t/4KLr/AON005LZB7Gp/K/uMLxj4Z17xNp8tvFcwQ/adPMJi+3T xx28xDbjiML9oV8q
v7zAQJuCtuZDf1LRLwT6kttpmlatZapKk9za6nMY1SRURBjEUgdSIkOCAVZS ctuAW9/wk9h/z76t
/wCCi6/+N0f8JPYf8++rf+Ci6/8AjdHvdg9jU/lf3FHRfCn9h32lNbvB9mtL W9jkSNPLHmXE8Uv7
tBkLGCjgDJIG0Zbk1ymt+F9YsdH1/VtRvEuBH4d1C1djdzytNI6o3nBH+SEN 5bZijAC8AM4I2dz/
AMJPYf8APvq3/gouv/jdH/CT2H/Pvq3/AIKLr/43QnJO9g9jU/lf3GTP4c1f ULi5u72SxW5kl01A
IWfY8drdGYycjKM4dgI/mC4HztnI3NL06ax1HW7iVkKX16txEFJyFFvDFhuO u6NumeCPpUP/AAk9
h/z76t/4KLr/AON0f8JPYf8APvq3/gouv/jdJ83YPY1P5X9xs0Vjf8JPYf8A Pvq3/gouv/jdH/CT
2H/Pvq3/AIKLr/43U8r7B7Kp/K/uNmisb/hJ7D/n31b/AMFF1/8AG6P+EnsP +ffVv/BRdf8Axujl
fYPZVP5X9xs0Vjf8JPYf8++rf+Ci6/8AjdH/AAk9h/z76t/4KLr/AON0cr7B 7Kp/K/uNmisb/hJ7
D/n31b/wUXX/AMbo/wCEnsP+ffVv/BRdf/G6OV9g9lU/lf3GzRWN/wAJPYf8 ++rf+Ci6/wDjdH/C
T2H/AD76t/4KLr/43RyvsHsqn8r+42aKxv8AhJ7D/n31b/wUXX/xuj/hJ7D/ AJ99W/8ABRdf/G6O
V9g9lU/lf3GzRWN/wk9h/wA++rf+Ci6/+N0f8JPYf8++rf8Agouv/jdHK+we yqfyv7jZorG/4Sew
/wCffVv/AAUXX/xuj/hJ7D/n31b/AMFF1/8AG6OV9g9lU/lf3GzRWN/wk9h/ z76t/wCCi6/+N0f8
JPYf8++rf+Ci6/8AjdHK+weyqfyv7jZorG/4Sew/599W/wDBRdf/ABuj/hJ7 D/n31b/wUXX/AMbo
5X2D2VT+V/cbNFY3/CT2H/Pvq3/gouv/AI3R/wAJPYf8++rf+Ci6/wDjdHK+ weyqfyv7jZorG/4S
ew/599W/8FF1/wDG6P8AhJ7D/n31b/wUXX/xujlfYPZVP5X9weLv+RL13/sH 3H/otqKyvFHiKyn8
JazEkGphnsZ1BfS7lFBMbDljGAB7k4FFduGTSdz6DJoyjCV1bU1fCP8AyJeh f9g+3/8ARa1s1jeE
f+RL0L/sH2//AKLWvO/iTfa/YeKrKaaWS205WH9l3Nu3yrNs+YSA8eYfnxkF SmQOrgxhcK8VW9kp
JN33PHp0HiMS6SaTbe567RXG+HPH9pqnh23v72C5Sd5HiC2tpLN9o2bd0sSI rMYssAWwQrHbuPBO
2/inQ0vFtTqUHmNai9BBJT7OQ5ExcfKI/kbLE4GVBOWXOFSlKnJwktUcsouM nF7o16KyIfE+lTWd
xcmaeFbfb5kVxaywzfMcJiJ1DtubKrgHcwKjJBFU5vGVgt1o8MEV1N/aN61m wNrMj27CJpP3iFMo
ThOG2/K2/wC6pNRyvsSdHRWZD4h0y41Q6dHO5n3tGrGCQRSOudyJKV2O4w2V ViRsfI+Vsc5puu+I
/wDhHNF8QX91pU1tqH2LfaQWMkTr9peNBiQzMPlMgP3Pm244zkNRYHbUVmQ+ IdMuNUOnRzuZ97Rq
xgkEUjrnciSldjuMNlVYkbHyPlbGXqXjrSrPQ9T1G28+6aytXuo4/s8qC5Vf 4omKYePJXMiblUMG
JwQSuVgdPRWBPqt/qWof2foskFrJHaxXks9/aSP8kpdUQRbkYN+7ctuI24A2 ksdufceMH06S0g1D
yEkj1U6beyIjFZD9kadDCoJbc+YgE+Y7mKDccMXysDr6KyF8QafJLbyjUYI7 aS1uLhhLGyELEyK7
MzECPYWKsrDdk9trCiHxPpU1ncXJmnhW32+ZFcWssM3zHCYidQ7bmyq4B3MC oyQRSswNeiucm8ZW
C3WjwwRXU39o3rWbA2syPbsImk/eIUyhOE4bb8rb/uqTR/wllpbvc3N/MkGn tetp9iRG7vcTRq3m
YAyc70eNU25Jj4LeYop8rA6OisibxPpUNnb3ImnmW43eXFb2ss03ynD5iRS6 7WwrZA2sQpwSBUdz
4v0G1uEgk1FGd7eO6BiRpFEDlgJiyggRfKcuTtXjcRuGVyvsBt0VkQ+KNGns 7i6jvMw2+0sfKcFw
5xG0a4zIrnhGQMHPCljR/wAJPpX9n/bfOn2+b5Hk/ZZftHmY3bPI2+Zu2/Pj bnb833eaOVga9FYk
/i7RLdLNnu3Z7xJGt4Y7eSSWTy2VZFEaqW3qW+ZMblw2QNrYkuvFGjWfkmS8 3xzRLOJYInmjSJvu
yyOgKxxnBIdyFIVjnCnByvsBr0VmTeIdMt9UGnSTuJ96xswgkMUbtjajyhdi OcrhWYE70wPmXJD4
h0y41Q6dHO5n3tGrGCQRSOudyJKV2O4w2VViRsfI+VsFmBp0VzEXiO8k8C6H rhjg+03/APZ3moFO
wfaJYkfaM54EjYyT0Gc1Qk13xHHoOr+IftWlGy0+W+P2P7DJ5kkdvLIm3zfO wGYR/e2EAn7pxiny
sDtqKzNL1Ga+1HW7eVUCWN6tvEVByVNvDLlueu6RumOAPrV+GZZ0LoHADsnz xshyrFTwQDjI4PQj
BGQQaloCSiuMXxBrV7e6jHp97o/2yzeYjQpIj9rkSNyqkyGZQglAVlcx4USr 94cnQj8aaYr6418X
sbbSb2O0kuLiKREYuse1ssoAG6THUgAK5IVgarlYHR0VgN4t0q1SSW7vtiNd JbQxm0lSRZGt1mWI
qQWaQqSQAAcsqY3jmxN4o0aCzt7qS8xDcbip8pyUCHEjSLjMaoeHZwoQ8MVN LlYGvRVexvbfUtPt
r+0k8y2uYlmhfaRuRgCpweRkEdayJvFlla65rGn3Uc8MOl6el/NcmCQpsPmb sHbg4CAjBO7LADKN
gs2Bv0Vmaj4i0nSTci/vUtxbJA8zSAhY1mkMcZLYwAWVhntjJwOaj/4SfSv7 P+2+dPt83yPJ+yy/
aPMxu2eRt8zdt+fG3O35vu80WYGvRXKaj4xW01LSXt40n0m5t55buY7kktxH LBEWIP3QjSt5gbaU
CsTgoVNxPEsVvc6yt+dsdnqCWlukELyyy5t4pcBFDM7fO5+UcKuSMAmnysDf orEn8XaJbpZs927P
eJI1vDHbySSyeWyrIojVS29S3zJjcuGyBtbElr4p0O985rfUoHhhiac3GSIW jX77pIfkdVJAYqSF
JAbBNLlfYDXorP0zWrLVvNFq06yRYLxXNtJbyKDnDbJFVtpwwDYwSrAHIOLk cyyvKihwYn2NujZQ
TtDfKSMMMMORkZyOoICsBJRXKXOtajceJrnSLXVtH0yeNwlva31s0012vlrI ZYwJozsBLJwG5ibn
qFkt/GUSXl/a6tYz6fJp2lQ6jeEo8iRbg5kQOE2vs2cFSd3zADKNiuVgdPRW A3i7RoluLybVYE0+
OK3fe8LqFEsrxJIZD8rRuy8EDAA3birAix/wk+lf2f8AbfOn2+b5Hk/ZZftH mY3bPI2+Zu2/Pjbn
b833eaXKwNeisC18TW97qGnyWc8F1pGo+dBb3MWf+PmItuXP8SsqSEMAAPJP Lb1xtmZVuEgIfe6M
4IjYrgEA5bGAfmGATk84zg4GmgJKKwNZvdX/AOEh07StKuLG2+0WtzcyS3Vq 8/8Aq3hUKAsiYz5p
OcnoKLfxLFb2t2mqnbd2V0LKQWsLyfaJDGsoMUahnOY3DFcErh+WC7ycrA36 KwIvFllc+IdN0q2j
nlW+tZ7hZxBIFjMTqpRvlwrZLhgxBRlCsAXUUSeMtGXT9QvY5Z5Y7K1kvCBb unnxIMs8LOFWVenz
ISvzLzhhk5WBv0Vzkt/rukmC81aXTprOe4ht2t7SB1kgaWRY0IkZyJQGdQfk jyCWGCNhNA8WWmqT
S2c8yLfJe3dsFSNwn7qaRVTecr5vloHKZ3Yy20LRyu1wOjorAj8W6VFp+nzX N9532m1juWngtJfL
WNhkSyDDeRGcMQZCAArcnaxFybxDplvqg06SdxPvWNmEEhijdsbUeULsRzlc KzAnemB8y5OVgQ+L
v+RL13/sH3H/AKLaisi61+LxH8OfEV7FbzwLHDf22yaJ0J8vegbDqp5ABIx8 pJU8qaK7MMrJpn0W
S/w5epr+Ef8AkS9C/wCwfb/+i1q9qemWWs6bPp2o20dzaTrtkiccEf0IOCCO QQCOao+Ef+RL0L/s
H2//AKLWvO/iTfa/YeKrKaaWS205WH9l3Nu3yrNs+YSA8eYfnxkFSmQOrgrC YaWJr+zjJRfS55NO
g8RifZJpNt7nfahpV5bajpt/olrYv9itZrNbOaU28YjkMRBVlR8bfJAC7cYb qMYNe+8M3mp/26l1
dwL/AGposWnGaKMjbIPtG99hJwv75SBuJ4IJ7mp4c8f2mqeHbe/vYLlJ3keI La2ks32jZt3SxIis
xiywBbBCsdu48E7b+KdDS8W1OpQeY1qL0EElPs5DkTFx8oj+RssTgZUE5Zc4 1ITpycZbo5ZRcZOL
3Rh2fhjU4LDVHj2Wd9dpDGMardXbPHGzMUM8uGjDB3QFEym4uCxwFg0vwjrG nT29wz2srrrv9ouj
3k8hWFrP7OV8yQMzupJxnAYKPuZ2r0cPifSprO4uTNPCtvt8yK4tZYZvmOEx E6h23NlVwDuYFRkg
iqc3jKwW60eGCK6m/tG9azYG1mR7dhE0n7xCmUJwnDbflbf91Sam8iTP0vwf cWPiQXcqpJbxXtze
xTtqFy53TGQ7VtsiKMjzmXeC2QCdoL5Vmi/D+z0O18NXVpp2lRaxpsSQ3c8U IX7Qpj2Snftzuzhw
xG47SuVEjGujh8Q6ZcaodOjncz72jVjBIIpHXO5ElK7HcYbKqxI2PkfK2Oc0 3XfEf/COaL4gv7rS
prbUPsW+0gsZInX7S8aDEhmYfKZAfufNtxxnILyYFuz8PajDqlnHKbX+z7HU rrUop1lYyytP5/7t
o9oCBftDfMHbOwfKN3y5h8GavN4ebSpXsY/segXGi2cqzO32jzEjUSyDYPKx 5KnaDJ988/L83Vw+
IdMuNUOnRzuZ97RqxgkEUjrnciSldjuMNlVYkbHyPlbGXqXjrSrPQ9T1G28+ 6aytXuo4/s8qC5Vf
4omKYePJXMiblUMGJwQSJyvsBYnstXg1D+2LC3sZb25tYra7tJ7p0jXyy7K0 cojJODK4IKfMCp+X
aQ2fceH9XSS01O2Sxm1P+1TqNzBJcPFCM2jWwRHEbMdq7OSvzEMcLkKNCfVb /UtQ/s/RZILWSO1i
vJZ7+0kf5JS6ogi3Iwb925bcRtwBtJY7c+48YPp0lpBqHkJJHqp029kRGKyH 7I06GFQS258xAJ8x
3MUG44YpXAyG0L+0L6Xw/wDbYDcy6Vq6XzW580WUl7PDKisOD0Z9u7aXCEgD kDQg8I332K9keKCC
9kls5Y1fU7m93/ZpvOVWmm5VWOVwqfLkt8+do318QafJLbyjUYI7aS1uLhhL GyELEyK7MzECPYWK
srDdk9trCiHxPpU1ncXJmnhW32+ZFcWssM3zHCYidQ7bmyq4B3MCoyQRT5pA U7mw12/l0W8uItOS
ez1L7RJBHO5VITBJCQJCmXfMm/7qD+HtuOfpenTPf29kWRJ9I126v5lckeZD cLctGycZIzcBSTgb
opQCdvOhN4ysFutHhgiupv7RvWs2BtZke3YRNJ+8QplCcJw235W3/dUmq7eM DHrVrbtau9le6k+m
20kUMjndEjmWRiAQB5qmMKQvCPJuK/dPetsBXn8L6wdOitYLxFQ3t7NIiXc9 uB51w0kcu+La7lFY
gxZVWLn5htU1BB4L1GLwtf6Y09r59x4YttHRg7bRNGk6sx+XOzMq4OM8Hj16 qPW9Pl+zbLjP2m6l
s4vkb5povM3r04x5MnJ4O3gnIzU07xfoOq27XNpqKG3Fubnz5EaKNogBuZWc AMEyA+CdhOG2nilz
SAz/ABB4WudYu9UmSZFS4t7ARKJXjYvbXEkxUuvKBtyqHXJXk44ANePwrdxa FLGtpam8lvftbRNq
l2zg+WIsreE+ar7VHzBQNuY9uCXPR6ZrVlq3mi1adZIsF4rm2kt5FBzhtkiq 204YBsYJVgDkHFyO
ZZXlRQ4MT7G3RsoJ2hvlJGGGGHIyM5HUEA5pLQDiWttd0/xF4eiiktbu+j03 UC8dzM+0xma22xib
aWJQFR5jIxfYcgF8rX1zwJrF14Wt9BstSR4IdIXT0eS5ntlSRUKlzHEcSiQb V2ucR7cgPuZTr3tz
4pTxTb6Zb6no6QXVvc3MbSaZKzRrG8ShTi4AYkTfewPu9OeNuPW9Pl+zbLjP 2m6ls4vkb5povM3r
04x5MnJ4O3gnIy+ZqzQFCHT9Xsdev5LQWLWWo3SXU000j+ZFtijjZFjC4bIi GGLrgv8AdbbhsvS/
B9xY+JBdyqklvFe3N7FO2oXLndMZDtW2yIoyPOZd4LZAJ2gvldjTvF+g6rbt c2moobcW5ufPkRoo
2iAG5lZwAwTID4J2E4baeKr3niuAaXPqNmH8uwdJb+C7tZbeVLY53SBZArYU BnB2sH8p0Hzcqve2
Ar23h7UUsNP0CY2o0bTnt2huklY3EywMrxIyFdqnKJucM24KcKm8bKg+H9ml sb1dO0o69Fqs2ow3
bQgl83DyKjvtzzG2zOG2HDKCUWuymmWBA7hyC6p8kbOcswUcAE4yeT0AyTgA mszxNqF5pujCawMC
3Ml1a2yNPGXRfNnjiLFQyk4Dk4yOlCk+gEml6dNY6jrdxKyFL69W4iCk5Ci3 hiw3HXdG3TPBH0q/
CZmQmeNEfewARyw27jtOSByVwSOxJGTjJxINWvNM1D7Br91YvvtZb1LyCI28 aRxFBIJFd3xjzEIb
dggtkLtBavqPjnTbLTftkcF9Kwure3e3exnjmUSyBA5jMe/bjdg7cMy7Ad3F KzYFfWtH1/VrO40y
aDSriFpZHtdTlnZJ7MsW2SJEIiPMiDYUiQFtgO5SxxJc+HtRnuNZUG1EF3q9 hqML+a27bCbfzFZd
uAcW524Jzu524rYm8Q6Zb6oNOkncT71jZhBIYo3bG1HlC7Ec5XCswJ3pgfMu c+K/13VjPeaTLp0N
nBcTW6293A7STtFI0bkyK4EQLIwHySYADHJOwNNgR/8ACOXn/CRf2h5kHk/2 1/aGNx3eX/Z/2bHT
72/n02988VkXcD+FbixvbjU9KtJjLqaLJfyNHAqXN0s4bfgBpFCr+6JXf8+G AQmr9r490+XUE+0S
fZ7K40q01G33RM0irMZd7SbchI0CR7nOFUty3IrYl1+ys2vjc3XmeRdLbCGC 1keUOYkk2BV3NK21
i+UHC9R8jGn7y3Az/CMl5ZeHvC2lTafOn/ElRp5XUr5EkaQqI2BHDHexwSD+ 7PB5xcNtNYeKdR1q
4ktY9Lk02GOSWSYq0TQvM5JBXbs2y53bhjb05yJJvE+lQ2dvciaeZbjd5cVv ayzTfKcPmJFLrtbC
tkDaxCnBIFR6f4mtNS8SXWkWyPIkNlBeJdKjmKVZS+Nr7dpGFUghjuywH3Gw tdXYDjLbTPsPw4X7
BNhp9asVtppl8xGjiu7e3t5MAruVooInJBAbcSCAQBsXvhPUtQt5LybyFv31 UaibSC/mhQYtRbbB
cookHA35Cc/cxj5q7aijnYWOU03wmbabThcQ2rWkdlfQXNuZJJwzXM0UhBaX JkHyOGZsbic7QDtW
pD4T1uy0y/to9S+1tLqCTgtdS20lzAltHCqyToC6Sbow7Omd5XGFDkL21FLn YHIeGfCt/otxpj3V
zBP9ki1JJHRpCXNxdRzIRvLN91DncxOT1bk1B/whN5P4e0vSprqCPyPDdxo0 8qAviSRIFDqCBuUe
Ux5IPT1OO2oo53e4HOeGNCuNLuL27u4EhnuEjiwNSub9iqFyMyzYIGZDhQox yctuwu/GZi8oljRU
D4iKuWLLtHLDA2nduGBngA55wJKKTd3cDnNXstauXvLVtN0fWdLuXV1g1Gcx CIBV/d7RDIHG5S4Y
nOWxj5QTmXPhLV30/VbD7ZBd/bfDcWlfbLiVxI9xGJhvdcN8redkncSCOhzm u2opqTQHMav4cvNQ
1i6u4pIFjl/svaHYgj7NdvNJnjurAD1PXA5qhrdk+i3c+uTXVjEo1pb6D7VK 0UJBsRbFZZQjCLnc
QSCCdi8FxjtqKFJgee+HBNeHw/bmRJp7fUtR1aaeJCsTQvJcxxuoyxAlM4eP JIZEchjt574mb7Qi
rGhgKMXcuQwbI2gLjBBG7JyMYHBzxJRSk7sDA1my1f8A4SHTtV0q3sbn7Pa3 NtJFdXTwf6x4WDAr
G+ceURjA6iqdz4f1V9NuZIp0F9fXovL23iupLaNwIliESToPMQKEjbeBlyhG FVyq9XRTUmgOM8O+
FtV0S70dpZrW5S2TUo7mTzZAxFxcLMjKH3Fj8gDBnyN2dzY5qW3gbUrrULht ZvvNt7jSrrTZ5EvJ
pJJWlMWZlWTMcO4I37tF2oQOXGAvfUUc7A5yWw13VjBZ6tFp0NnBcQ3DXFpO 7STtFIsiARsgEQLI
pPzyYAKjJO8ZkWm3mkSwXGtXGlWOkabqt3qKXjXhy/ntOFR1ZFWP/j56725U DHzZHbUUcwHmNp4I
vtQ8PaM0kH+v0Cz067t7i+ubTyNiNuLxxY8//WkGNymNmNw3HHXw6fq9jr1/ JaCxay1G6S6mmmkf
zItsUcbIsYXDZEQwxdcF/uttw2/RQ5tgcfd6feaZ8PvFFtdiD5hqU8LQyFt0 crSyruBUbWG8ggZH
Gc84BWv4u/5EvXf+wfcf+i2orrwzumz6LJf4cvUPCP8AyJehf9g+3/8ARa1e 1PTLLWdNn07UbaO5
tJ12yROOCP6EHBBHIIBHNUfCP/Il6F/2D7f/ANFrXnfxJvtfsPFVlNNLJbac rD+y7m3b5Vm2fMJA
ePMPz4yCpTIHVwVhMNLE1/Zxkovpc8mnQeIxPsk0m29zvtQ0q8ttR02/0S1s X+xWs1mtnNKbeMRy
GIgqyo+NvkgBduMN1GMGvfeGbzU/7dS6u4F/tTRYtOM0UZG2QfaN77CThf3y kDcTwQT3NTw58QLH
U/DtvqGpbrV3keIusLmKQJt3zqQDiAbgGkb5UPBY8E67+LtES3tLj7W7QXVu l0siW8jLHC4yskpC
kRIRn5pNo+Vv7pxjOE4ScZLVHLKLjJxe6Mez8ManBYao8eyzvrtIYxjVbq7Z 442Zihnlw0YYO6Ao
mU3FwWOAsGl+EdY06e3uGe1lddd/tF0e8nkKwtZ/ZyvmSBmd1JOM4DBR9zO1 deHW73XLrWLHSGSx
uNLvVt3lvrGWRJVMSuSo3R87mxwzcAN0dTUfhjWr+60XR7/XLyxMmsxRPaQ2 tnJFsdoWmZCxkfd8
qnn5funuQKm8rMkp6X4PuLHxILuVUkt4r25vYp21C5c7pjIdq22RFGR5zLvB bIBO0F8qzRfh/Z6H
a+Grq007SotY02JIbueKEL9oUx7JTv253Zw4YjcdpXKiRjW3ceLtEtjCr3bt JO86QxRW8kkkrQSC
OUIiqWYqx6AHgFh8oJEl14o0az8kyXm+OaJZxLBE80aRN92WR0BWOM4JDuQp Csc4U4V5gZdn4e1G
HVLOOU2v9n2OpXWpRTrKxllafz/3bR7QEC/aG+YO2dg+UbvlzD4M1ebw82lS vYx/Y9AuNFs5Vmdv
tHmJGolkGweVjyVO0GT755+X5t+68TW9lqGoSXk8FrpGneTBcXMuf+PmUrtX P8KqrxksQQfOHK7G
zY/4SfSv7P8AtvnT7fN8jyfssv2jzMbtnkbfM3bfnxtzt+b7vNO8twK89lq8 Gof2xYW9jLe3NrFb
XdpPdOka+WXZWjlEZJwZXBBT5gVPy7SGz7jw/q6SWmp2yWM2p/2qdRuYJLh4 oRm0a2CI4jZjtXZy
V+YhjhchRqT+LtEt0s2e7dnvEka3hjt5JJZPLZVkURqpbepb5kxuXDZA2tiS 18U6He+c1vqUDwwx
NObjJELRr990kPyOqkgMVJCkgNgml73YDkG0L+0L6Xw/9tgNzLpWrpfNbnzR ZSXs8MqKw4PRn27t
pcISAOQNCDwjffYr2R4oIL2SWzljV9Tub3f9mm85VaablVY5XCp8uS3z52jf h8T6VNZ3FyZp4Vt9
vmRXFrLDN8xwmInUO25squAdzAqMkEVHJ4u0SGyiuprt4kluPsqRyW8iS+ds LiMxFd4cqMqpALZX
Gdy5fNICvc2Gu38ui3lxFpyT2epfaJII53KpCYJISBIUy75k3/dQfw9txzLH T7xry2s4RB9p0jX7
i+nSaQoJLe5FwyvHhSWwLjHIALxSLnjNb83ifSobO3uRNPMtxu8uK3tZZpvl OHzEil12thWyBtYh
TgkCi68UaNZ+SZLzfHNEs4lgieaNIm+7LI6ArHGcEh3IUhWOcKcK77AY+j2t ncfEPWtQtJ/PjhiC
tJG4ZFuJNkc0RI6Mi2dudvUeY2eGXGJ4c8N6jr/gbSkvbi1ggfww2nW8sIZm ZbiKE7nQ4ClBGBwx
35J+T7tdvN4h0y31QadJO4n3rGzCCQxRu2NqPKF2I5yuFZgTvTA+Zc5cviO8 j8C65rgjg+02H9o+
UhU7D9nllRNwznkRrnBHU4xTuwJPDGhXGl3F7d3cCQz3CRxYGpXN+xVC5GZZ sEDMhwoUY5OW3YXf
jMxeUSxoqB8RFXLFl2jlhgbTu3DAzwAc84HOJdeI9S1nWYbC/wBKtbawuktk WfT5JnbMEUpYsJ0H
WUjGO1SeG/Ek2v3CM1ukEEukWOoogJZlaczblLcAgCNccDv+Cab1A0J9Oml8 U2GpqyeRb2VzbupJ
3FpHgZSOMYxE2ee4/DD0e1s7j4h61qFpP58cMQVpI3DItxJsjmiJHRkWztzt 6jzGzwy46uOZZXlR
Q4MT7G3RsoJ2hvlJGGGGHIyM5HUEDmLnWtRuPE1zpFrq2j6ZPG4S3tb62aaa 7Xy1kMsYE0Z2Alk4
DcxNz1CpXAwPDnhvUdf8DaUl7cWsED+GG063lhDMzLcRQnc6HAUoIwOGO/JP yfdqxe6FcWXhvXIJ
4Ei1DXLddKtoxqVzfuzMJFVjJNg7F813ZVT5VSRst0Xbt/GUSXl/a6tYz6fJ p2lQ6jeEo8iRbg5k
QOE2vs2cFSd3zADKNiw3i7RoluLybVYE0+OK3fe8LqFEsrxJIZD8rRuy8EDA A3birAi25X2A25jM
qAwRo771BDuVG3cNxyAeQuSB3IAyM5GZ4m0+81LRhDYCBrmO6tblFnkKI3lT xylSwViMhCM4PWj/
AISfSv7P+2+dPt83yPJ+yy/aPMxu2eRt8zdt+fG3O35vu81b0zVbHWrBb7Tb lLm0d3RJo+VYoxRs
HuNynkcHqMis9VqBkf2XrWo3EuoXctrpmoR2U9nZfZHN0sRlKMZWLom4ho48 JtAG1sltwC4Efg3X
IxqVyptTPcPpskFvNqdzcBDbXLSsrTyqzYYEYIUAEkbeNzdXca/Fb+LLDQDb ztJd2s1yJhE5RdjI
ApYLt53NklhjCg8uuR/FGjR6fDfteYtptPk1KN/Kfm2QIWfGM8CROOvPTg1S clsBh6/4X1jVtdiu
EvENpFe2l0m+7nQJHFJGzQ+QmI2JKu4lfccsE2gBXXQisNd0kz2ekxadNZz3 E1wtxdzuskDSyNI4
MaoRKAzsR88eQQpwRvNyHxRo09ncXUd5mG32lj5TguHOI2jXGZFc8IyBg54U say9Y8YG3tNOutJt
XvRLevBc2rwyR3CqlvLMyrGwDCUiNSqsBuDDoGDA956WAoXng7UYbe60jTBa vpd3oVvozXFzcss0
CxiZfMCLGVkO2YHG5MlSOM5Fc6UfFD6pqGmTJcQJrq3lq8V7Jbx3SixjgbZc Q5ZQGZ+VByYyhxk4
6MeJrddVvhJPA2mQ6faXcM8WXMpmkmUBdud+7y0ChQSS2BnIFSSeLtEhsorq a7eJJbj7KkclvIkv
nbC4jMRXeHKjKqQC2VxncuXeQGXa+HdS0hdLu9Nt7GW5toruKS1mvJgn+kSp MzecyyO7Bo8ElRv3
FvkwFrUstO1GDxTcahcNaywXGm21vJJGWRvOieViRGQQEIm/vkjbjnOaksvF GjajeR2treb5nyoB
idQJACTEzEALKACTESHABJUAVJp3iHTNWuGgs53Z9hkQvBJGsyAgF4mZQJU5 X5kLD5l5+YZTcuoG
nRUYmVrh4AH3oiuSY2C4JIGGxgn5TkA5HGcZGec1rW7y38QxaVDqelaV5kUb QS6jCZPtkjuymOIC
WP5k2qSAWJ81eBxulK4HT0Vzlp4juY9d07QdTsXS+ube5laaKNzERFIqKwID KodTvwXymVU5LLkh
8aaJdW6ajb6ojaaLKe8Z/s0h3xxCIs6tjGEEmGXBO444KMKOVgdHRWRD4o0a ezuLqO8zDb7Sx8pw
XDnEbRrjMiueEZAwc8KWNU/+EstLh7a5sJkn09b1dPviY3R7eaRV8vIODne6 Rsm3IMnJXy2FHKwO
joqOSZYniRg5Mr7F2xswB2lvmIGFGFPJwM4HUgHE8YXur6V4evdV0q4sY/sN rNcyRXVq8vm7E3BQ
VkTb0Izhuo9ORK7sBv0VmWFzc29xHp+rX1rcahOkk8X2a0eBTEhRWyGd+Q0i /wAQzuGBwTVNvGvh
5fs+dQ/4+LWK9TEMhxbybtszfL8kY2nczYCcbiuRks+gG/RWZN4h0y31QadJ O4n3rGzCCQxRu2Nq
PKF2I5yuFZgTvTA+Zc6dKwBRRRQMKKKKACiiigAooooAKKKKAMbxd/yJeu/9 g+4/9FtRR4u/5EvX
f+wfcf8AotqK7cLsz6LJf4cvUPCP/Il6F/2D7f8A9FrV7U9MstZ02fTtRto7 m0nXbJE44I/oQcEE
cggEc1w3h34leEbDwxpNnc6tsngs4YpE+zSnayoARkLg8jtWn/wtTwX/ANBn /wAlZv8A4iudwmpX
SZ5FTC13NtQe/Zj/ABHJb6BqOkXsF5pWmpDaz2MQviYbeJHMJyGA2ll8oYhy m8bsMoQ1z9p4IvtQ
8PaM0kH+v0Cz067t7i+ubTyNiNuLxxY8/wD1pBjcpjZjcNxxu/8AC1PBf/QZ /wDJWb/4ij/hangv
/oM/+Ss3/wARTSqLozP6pX/kf3M2tJ0+8stZ16aYQG2vrqO5gZJCX4giiZWU qAMGLIIJzu7Y5wNV
tf8AhH/hZY6fdTwf2jYWtstpGr8XV5bhZIokBwX3vEBtGGIJxg9Jf+FqeC/+ gz/5Kzf/ABFH/C1P
Bf8A0Gf/ACVm/wDiKSjO+wfVK/8AI/uZFPp95oniHwvp2hiCf7Dot1Asd7IU 82NHtFGZFU7W4Bzs
YHBGBnctO6+Htx9ntLSORLyAaRb6TOZL65tFCxBx5hihOJgwkP7tmXG3Ab5i Ro/8LU8F/wDQZ/8A
JWb/AOIo/wCFqeC/+gz/AOSs3/xFO1RdGH1Sv/I/uY2506a41jWdMDIk91qV hrELOSFkhia3WRRx
kuptzkAYHmxZI3cWL7w/qrnV3tJ0xeakl35C3UlsZohbRRbGmjBeIh49+VBy FCnhmxD/AMLU8F/9
Bn/yVm/+Io/4Wp4L/wCgz/5Kzf8AxFLln2D6pX/kf3Md4Z8K3+i3GmPdXME/ 2SLUkkdGkJc3F1HM
hG8s33UOdzE5PVuTUH/CE3k/h7S9KmuoI/I8N3GjTyoC+JJEgUOoIG5R5THk g9PU4l/4Wp4L/wCg
z/5Kzf8AxFH/AAtTwX/0Gf8AyVm/+IotUve34B9Ur/yP7mNs/Ct2lhqjTWlq t3dJCixzapd3m4RM
zr+/kIaM5c7Si5jb5/nOFFS7sNb04eG4/Nga7OtSSW9vPdS3KRJ9iuMxmdwJ H3EOd7A7PMwFYIAb
v/C1PBf/AEGf/JWb/wCIo/4Wp4L/AOgz/wCSs3/xFFqnYPqlf+R/cxs3hfWD pNrbQ3iKWuLq4uYo
7ueBUknmMocSRbXkEe512EoJN2SUIGDSPD2u6Bb6etkdOmn/ALIs9NuHmlcL A0Af94ihcygmU/KT
H9wfN83yu/4Wp4L/AOgz/wCSs3/xFH/C1PBf/QZ/8lZv/iKLVOwfVK/8j+5j brwfcTeK7i/2pLaX
N7Besz6hcoImiWIBfsyERyHMIIdmGCwyrBAGsXPh7UXsNQ0CE2p0bUXuGmun lYXEKzszyoqBdrHL
vtcsu0MMq+w74f8Ahangv/oM/wDkrN/8RR/wtTwX/wBBn/yVm/8AiKLVOwfV K/8AI/uY3Ufh9p2s
y+IZ7+y057y/uFls7yS1WaS32wRIudwGQJI2bZnawODwxFbljp94niG71W6E CfadPtYDFFIX2SRv
Oz8lRlf3qgHAJwcgVi/8LU8F/wDQZ/8AJWb/AOIo/wCFqeC/+gz/AOSs3/xF DjUatZh9Ur/yP7md
bGZi8oljRUD4iKuWLLtHLDA2nduGBngA55wMDV7LWrl7y1bTdH1nS7l1dYNR nMQiAVf3e0QyBxuU
uGJzlsY+UE0f+FqeC/8AoM/+Ss3/AMRR/wALU8F/9Bn/AMlZv/iKShNfZD6p X/kf3MiufCWrvp+q
2H2yC7+2+G4tK+2XEriR7iMTDe64b5W87JO4kEdDnNX9X8OXmoaxdXcUkCxy /wBl7Q7EEfZrt5pM
8d1YAep64HNVf+FqeC/+gz/5Kzf/ABFH/C1PBf8A0Gf/ACVm/wDiKdqnYPql f+R/cyLW7J9Fu59c
murGJRrS30H2qVooSDYi2KyyhGEXO4gkEE7F4LjE/hK6vLXQdNVoPtf2/Vb4 yXMCFI1jaW5mWcD5
v3b4Tb82MSL8x4y3/hangv8A6DP/AJKzf/EUf8LU8F/9Bn/yVm/+Io5ZtW5Q +qV/5H9zNq70+8k8
WaVqcIga2gtbq2nDyFXHmNCysoCkNzDgglfvZ5xiuIltbM+DviHqVjP9otJr W6itrhHDxzR+XLcM
ysOGxNdTpkHAEYHVWJ3f+FqeC/8AoM/+Ss3/AMRR/wALU8F/9Bn/AMlZv/iK FGa6MPqlf+R/cxuo
eFtV1iLU5r+a1S7nSyjjW2lkjWUWs7TBi4+aEyFyuF3mPAIZzxUmm+Frq1k0 24ZIIZItVe/uE+2z
3TEG0e3H72X5nblD0QBeMErlm/8AC1PBf/QZ/wDJWb/4ij/hangv/oM/+Ss3 /wARRaptYPqlf+R/
cxsfhHUbCbWf7Pv0S3uLe3hs03NG8caTTSPBvX7iFZTGjoAY1xhcoCzNE8Ia lYXcE9zPA23Wm1Fl
+0zTssZsTb7N8uWdg56kgFRkBeEEv/C1PBf/AEGf/JWb/wCIo/4Wp4L/AOgz /wCSs3/xFFqnYPql
f+R/cy1a+HLyD+yd0kB+x61e6hJhjzHN9q2gcfeHnpntw3J4zT8H+D7jw/cW 5uFRhZWX2KGc6hc3
DTLlMsI5CEtwfLUlF3dQAwC/M7/hangv/oM/+Ss3/wARR/wtTwX/ANBn/wAl Zv8A4ijlqdmH1Sv/
ACP7mdaDN9odWjQQBFKOHJYtk7gVxgADbg5OcngY5yNXg1p7iZbS107UtPub cQy2d9MYVQ5bcciK
TeHVgCpwBs77jjJ/4Wp4L/6DP/krN/8AEUf8LU8F/wDQZ/8AJWb/AOIpKE10 D6pX/kf3Mm0rw9qO
m6lok5Nq0Ftb30M0aysPs6zyxyxxxDbhkjEYjGdnygEAY21Qn8F6jL4WsNMW e18+38MXOjuxdtpm
kSBVYfLnZmJsnGeRx6Wf+FqeC/8AoM/+Ss3/AMRR/wALU8F/9Bn/AMlZv/iK dqnYPqlf+R/cx3ib
SnW41PV5LiCK38rTWQybsB7a6kmPmEKdkZ3qC/OwbmIwvOJYTzawLyIS2txP qniK2u4ZbJi8Bht4
7WSRlfq6KYTD5gABkKghN2F2f+FqeC/+gz/5Kzf/ABFH/C1PBf8A0Gf/ACVm /wDiKaU19lh9Ur/y
P7mdbIZg8QijRkL4lLOVKrtPKjB3HdtGDjgk54waHiTTptY8LavpluyLPeWU 1vG0hIUM6FQTgE4y
fSsH/hangv8A6DP/AJKzf/EUf8LU8F/9Bn/yVm/+IqFCa6B9Ur/yP7mO+IFr Z6lp9hpss+Lu5uhF
Dbo48yWOUG3nZV6nZDPI+QMKVBOQCDU13TtR1jxT4h0yya1WC+0K1tLhpiwa JZHu18xMAhioJ+Qg
bsj51xzZ/wCFqeC/+gz/AOSs3/xFH/C1PBf/AEGf/JWb/wCIqlGaWzD6pX/k f3MbdeD7ibxXcX+1
JbS5vYL1mfULlBE0SxAL9mQiOQ5hBDswwWGVYIA3Z1x3/C1PBf8A0Gf/ACVm /wDiKP8Ahangv/oM
/wDkrN/8RScJvow+qV/5H9zOxorjv+FqeC/+gz/5Kzf/ABFH/C1PBf8A0Gf/ ACVm/wDiKXs59mH1
Wv8AyP7mdjRXHf8AC1PBf/QZ/wDJWb/4ij/hangv/oM/+Ss3/wARR7OfZh9V r/yP7mdjRXHf8LU8
F/8AQZ/8lZv/AIij/hangv8A6DP/AJKzf/EUezn2YfVa/wDI/uZ2NFcd/wAL U8F/9Bn/AMlZv/iK
P+FqeC/+gz/5Kzf/ABFHs59mH1Wv/I/uZ2NFcd/wtTwX/wBBn/yVm/8AiKP+ FqeC/wDoM/8AkrN/
8RR7OfZh9Vr/AMj+5mx4u/5EvXf+wfcf+i2orlPEXxK8I3/hjVrO21bfPPZz RRp9mlG5mQgDJXA5
PeiuvDRaTuj3sopTpwkpprXqf//Z
------=_NextPart_000_0011_01C4D1AA.F8648800--
|
|
| |
Re: More about 'partial code generation' [message #389487 is a reply to message #389430] |
Thu, 25 November 2004 03:01   |
Eclipse User |
|
|
|
C'est un message de format MIME en plusieurs parties.
------=_NextPart_000_001A_01C4D2CD.68CFE440
Content-Type: multipart/alternative;
boundary="----=_NextPart_001_001B_01C4D2CD.68CFE440"
------=_NextPart_001_001B_01C4D2CD.68CFE440
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Ed,
While I'm waiting for the book to arrive, can we run over this =
quickly?...I promise to leave you alone, for a while, once I get this =
fixed.
The good news is that I manage to get the correct import statement =
showing up in my 'client' class - that is, an import of the specified =
<<javaclass>> which I had wrapped in an interface (and it is the wrapper =
which my client has a reference to in the model). Eclipse still doesn't =
like it however.
My scenario is a little different to the sdo model you have shown me - I =
want my client class to have visibility to a simple implemented class in =
order to call methods on an instance of it. I haven't got as far as =
worrying how my client would have (direct) visibility, as a variable =
within its code, to the implemented class - I don't have any direct =
reference in the model anymore - I'll just rely on good-old hard-coding =
I suppose!
So, how to get the import accepted by Eclipse?=20
In order to eliminate as much noise etc. as possible I have attempted to =
duplicate your scenario. A client interface wants to extend an interface =
(the javaclass) which is wrapped in another interface. I have each =
element; client, wrapper and javaclass in different packages. Having =
inadvertently generated code for all three packages and got everything =
working, I realised my mistake (I don't want to generate code for the =
javaclass). I reset my client and wrapper to deal with a second =
javaclass and this time I made sure I didn't generate code for its =
package (however, all is present and correct in the genmodel). No dice - =
import statement can't be resolved.
I have tried to be as rigorous and systematic as possible which, with a =
little (!) intelligence, is all I can do as I don't know/understand what =
the machinery is grinding away at as I turn the handle. I may go back to =
'hand-crafted' code!
Ian
"Ed Merks" <merks@ca.ibm.com> a =E9crit dans le message news: =
co0amr$u8j$1@www.eclipse.org...
Ian,
Obviously I'm a poor salesman! Yes, the book is well worth buying, =
and covers all the basics and some advanced stuff too.
Ian Ward wrote:=20
Ed,
Looks neat, I'll try it!...Seriously, it seems that my OO/Eclipse =
culture is different (question about factories) and (certainly) =
incomplete - for this current question I've never been on the stereotype =
wavelength and if Eclipse/EMF uses them a lot then I need to get with =
it.
I'm trying to restrict my queries to those which seem to be =
Eclipse/EMF specific but of course I'd more easily recognise/work these =
things out if I had a bit more experience etc. I've already asked you =
about the EMF book which you've declined to plug - would that be a good =
place to go to familiarise with some of these basics or does it go into =
a lot of advanced stuff ? (yes, I've looked at some of the other forum =
posts!)
Otherwise, I'll keep askin' 'em if you'll keep answerin' 'em!.and =
thanks.
Ian
"Ed Merks" <merks@ca.ibm.com> a =E9crit dans le message news: =
cnv8d9$ido$1@www.eclipse.org...
Ian,
The point is simply that you can create a "wrapper" for an =
existing interface using <<Interface>> and <<javaclass>> like this:
Ian Ward wrote:=20
Hello,
I have recently been advised by Ed Merks to look at how sdo works,
particularly in respect of how it works with the commonj.sdo interface. =
This
is in order to give me a model for how to integrate an existing package =
of
ready-coded classes into my project while not generating code for them - =
a
bit like a java package I suppose.
I have spent a couple of hours with some documentation and with the code =
- I
have established that, generally speaking, sdo implements the interfaces
defined in commonj.sdo by delegating to SDOUtil (looking at =
EDataObjectImpl
for example).
At this point, as much as I would like to know more about sdo, I feel =
that I
am losing the plot. I'm not sure how to go about finding what I am =
looking
for and, in fact, I'm not sure anymore what it is I'm looking for !
Maybe it's all about defining interfaces in the model (and so I'll have =
no
problem with my import statements which is where I started) which then =
are
implemented by calling methods on the classes I want to integrate. But =
then,
I'll still have to import them at this point and I've just moved the
problem, haven't I?
So, how do I persuade Eclipse to recognise these 'external' classes?
Thanks
Ian Ward
=20
------=_NextPart_001_001B_01C4D2CD.68CFE440
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE></TITLE>
<META http-equiv=3DContent-Type =
content=3Dtext/html;charset=3DISO-8859-1>
<META content=3D"MSHTML 5.50.4807.2300" name=3DGENERATOR></HEAD>
<BODY text=3D#000000 bgColor=3D#ffffff>
<DIV><FONT size=3D2>
<P>Ed,</P>
<P>While I’m waiting for the book to arrive, can we run over this =
quickly?…..I=20
promise to leave you alone, for a while, once I get this fixed.</P>
<P>The good news is that I manage to get the correct import statement =
showing up=20
in my ‘client’ class – that is, an import of the =
specified=20
<<javaclass>> which I had wrapped in an interface (and it is =
the=20
wrapper which my client has a reference to in the model). Eclipse still =
doesn’t=20
like it however.</P>
<P>My scenario is a little different to the sdo model you have shown me =
– I want=20
my client class to have visibility to a simple implemented class in =
order to=20
call methods on an instance of it. I haven’t got as far as =
worrying how my=20
client would have (direct) visibility, as a variable within its code, to =
the=20
implemented class – I don’t have any direct reference in the =
model anymore –=20
I’ll just rely on good-old hard-coding I suppose!</P>
<P>So, how to get the import accepted by Eclipse? </P>
<P>In order to eliminate as much noise etc. as possible I have attempted =
to=20
duplicate your scenario. A client interface wants to extend an interface =
(the=20
javaclass) which is wrapped in another interface. I have each element; =
client,=20
wrapper and javaclass in different packages. Having inadvertently =
generated code=20
for all three packages and got everything working, I realised my mistake =
(I=20
don’t want to generate code for the javaclass). I reset my client =
and wrapper to=20
deal with a second javaclass and this time I made sure I didn’t =
generate code=20
for its package (however, all is present and correct in the genmodel). =
No dice –=20
import statement can’t be resolved.</P>
<P>I have tried to be as rigorous and systematic as possible which, with =
a=20
little (!) intelligence, is all I can do as I don’t =
know/understand what the=20
machinery is grinding away at as I turn the handle. I may go back to=20
‘hand-crafted’ code!</P>
<P>Ian</P></FONT></DIV>
<BLOCKQUOTE=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
<DIV>"Ed Merks" <<A =
href=3D"mailto:merks@ca.ibm.com">merks@ca.ibm.com</A>>=20
a =E9crit dans le message news: <A=20
=
href=3D"mailto:co0amr$u8j$1@www.eclipse.org">co0amr$u8j$1@www.eclipse.org=
</A>...</DIV>Ian,<BR><BR>Obviously=20
I'm a poor salesman! Yes, the book is well worth buying, and =
covers all=20
the basics and some advanced stuff too.<BR><BR><BR>Ian Ward wrote:=20
<BLOCKQUOTE type=3D"cite" cite=3D"midco0a3p$t5c$1@www.eclipse.org">
<META content=3D"MSHTML 5.50.4807.2300" name=3DGENERATOR>
<STYLE></STYLE>
<DIV><FONT face=3DArial size=3D2><FONT size=3D2>
<P>Ed,</P>
<P>Looks neat, I’ll try it!…….Seriously, it seems =
that my OO/Eclipse culture=20
is different (question about factories) and (certainly) incomplete - =
for=20
this current question I’ve never been on the stereotype =
wavelength and if=20
Eclipse/EMF uses them a lot then I need to get with it.</P>
<P>I’m trying to restrict my queries to those which seem to be =
Eclipse/EMF=20
specific but of course I’d more easily recognise/work these =
things out if I=20
had a bit more experience etc. I’ve already asked you about =
the EMF book=20
which you’ve declined to plug – would that be a good =
place to go to=20
familiarise with some of these basics or does it go into a lot of =
advanced=20
stuff ? (yes, I’ve looked at some of the other forum =
posts!)</P>
<P>Otherwise, I’ll keep askin’ ‘em if you’ll =
keep answerin’ ‘em!…and=20
thanks.</P>
<P>Ian</P></FONT></FONT></DIV>
<BLOCKQUOTE=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
BORDER-LEFT: rgb(0,0,0) 2px solid; MARGIN-RIGHT: 0px">
<DIV>"Ed Merks" <<A=20
href=3D"mailto:merks@ca.ibm.com">merks@ca.ibm.com</A>> a =
=E9crit dans le=20
message news: <A=20
=
href=3D"mailto:cnv8d9$ido$1@www.eclipse.org">cnv8d9$ido$1@www.eclipse.org=
</A>...</DIV>Ian,<BR><BR>The=20
point is simply that you can create a "wrapper" for an existing =
interface=20
using <<Interface>> and <<javaclass>> like =
this:<BR>
<BLOCKQUOTE><IMG alt=3D""=20
=
src=3D"cid:001101c4d2c5$069784c0$2776fac1@l8t7p3"><BR></BLOCKQUOTE><BR>Ia=
n=20
Ward wrote:=20
<BLOCKQUOTE type=3D"cite" =
cite=3D"midcnuj0d$cln$1@www.eclipse.org"><PRE wrap=3D"">Hello,
I have recently been advised by Ed Merks to look at how sdo works,
particularly in respect of how it works with the commonj.sdo interface. =
This
is in order to give me a model for how to integrate an existing package =
of
ready-coded classes into my project while not generating code for them - =
a
bit like a java package I suppose.
I have spent a couple of hours with some documentation and with the code =
- I
have established that, generally speaking, sdo implements the interfaces
defined in commonj.sdo by delegating to SDOUtil (looking at =
EDataObjectImpl
for example).
At this point, as much as I would like to know more about sdo, I feel =
that I
am losing the plot. I'm not sure how to go about finding what I am =
looking
for and, in fact, I'm not sure anymore what it is I'm looking for !
Maybe it's all about defining interfaces in the model (and so I'll have =
no
problem with my import statements which is where I started) which then =
are
implemented by calling methods on the classes I want to integrate. But =
then,
I'll still have to import them at this point and I've just moved the
problem, haven't I?
So, how do I persuade Eclipse to recognise these 'external' classes?
Thanks
Ian Ward
=
</PRE></BLOCKQUOTE><BR></BLOCKQUOTE></BLOCKQUOTE><BR></BLOCKQUOTE ></BODY>=
</HTML>
------=_NextPart_001_001B_01C4D2CD.68CFE440--
------=_NextPart_000_001A_01C4D2CD.68CFE440
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-ID: <001101c4d2c5$069784c0$2776fac1@l8t7p3>
/9j/4AAQSkZJRgABAQIAJQAlAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsL DBkSEw8UHRofHh0a
HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgN DRgyIRwhMjIyMjIy
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/ wAARCAB/AcgDASIA
AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA AgEDAwIEAwUFBAQA
AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcY GRolJicoKSo0NTY3
ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKT lJWWl5iZmqKjpKWm
p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP0 9fb3+Pn6/8QAHwEA
AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQA AQJ3AAECAxEEBSEx
BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2 Nzg5OkNERUZHSElK
U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOk paanqKmqsrO0tba3
uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMB AAIRAxEAPwD0/wAO
6Jb3/hjSby5vNXeeezhlkf8Ata6G5mQEnAkwOT2rS/4Rqx/5+dX/APBvdf8A xyk8I/8AIl6F/wBg
+3/9FrWzXmSqTu9Tqq1JqbSb3Mf/AIRqx/5+dX/8G91/8co/4Rqx/wCfnV// AAb3X/xytiil7Sfd
ke1n/M/vMf8A4Rqx/wCfnV//AAb3X/xyj/hGrH/n51f/AMG91/8AHK2KKPaT 7sPaz/mf3mP/AMI1
Y/8APzq//g3uv/jlH/CNWP8Az86v/wCDe6/+OVsUUe0n3Ye1n/M/vMf/AIRq x/5+dX/8G91/8co/
4Rqx/wCfnV//AAb3X/xytiij2k+7D2s/5n95j/8ACNWP/Pzq/wD4N7r/AOOU f8I1Y/8APzq//g3u
v/jlbFFHtJ92HtZ/zP7zH/4Rqx/5+dX/APBvdf8Axyj/AIRqx/5+dX/8G91/ 8crYoo9pPuw9rP8A
mf3mP/wjVj/z86v/AODe6/8AjlH/AAjVj/z86v8A+De6/wDjlbFFHtJ92HtZ /wAz+8x/+Easf+fn
V/8Awb3X/wAco/4Rqx/5+dX/APBvdf8Axytiij2k+7D2s/5n95j/APCNWP8A z86v/wCDe6/+OUf8
I1Y/8/Or/wDg3uv/AI5WxRR7Sfdh7Wf8z+8x/wDhGrH/AJ+dX/8ABvdf/HKP +Easf+fnV/8Awb3X
/wAcrYoo9pPuw9rP+Z/eY/8AwjVj/wA/Or/+De6/+OUf8I1Y/wDPzq//AIN7 r/45WxWJ4k1m50e3
gaCBAkrlZLycO0NouPvuEBOByediYVt0ifLkU5vS7D2s/wCZ/eP/AOEasf8A n51f/wAG91/8co/4
Rqx/5+dX/wDBvdf/AByqGoa3eaVodhNFcQXy3WWk1Z0P2WBW+YSFYgx8sA5G 4qu1PnmBwzZGt6nc
aVLa6xFewajcW/hvVL2O4CAQykNayLtCn/V9APmJ24yzHLGlKb6h7Wf8z+86 b/hGrH/n51f/AMG9
1/8AHKP+Easf+fnV/wDwb3X/AMcrmdf1bxGI5tO+1WNrexXWlz+bBFIyLHcX Zj8k/OpfaY/mf5Q6
sV2JnNW7rxZqCeK7jT7W1eWC1vYLOSFNNuJTIJFiZpftK/u4ggmyUYEkRnkb xgvU7h7Wf8z+82/+
Easf+fnV/wDwb3X/AMco/wCEasf+fnV//Bvdf/HK5G9n1fxJeaNFf/2V/ZE2 v3Vk9m9s8wuY4BdA
GTLhf+WQwu1gHVXz/ALCePLq2/tCS4SC9ji0q61OL7Paz28YEOz5EnkBW4Vv MGJUCjC524cAO9Tu
HtZ/zP7zpv8AhGrH/n51f/wb3X/xyj/hGrH/AJ+dX/8ABvdf/HKoapqut+Ht BurvUJLG7k823igm
tbSVcGWVYjmAM7Pt3BsK+X5UBSAxr2+uX914eu7271GDSGsboIL+/wBPktre 4QovLQzMrqu6QoMO
MtGDnBKUuae9w9rP+Z/ea/8AwjVj/wA/Or/+De6/+OUf8I1Y/wDPzq//AIN7 r/45VD+27y78Mf2r
c3EHh14Zfmlv0LW7Lnb8wlEUgUlsDIjbcoxuTG/U0DU7nV9LW6u9PeykLldj bwGA/iUSIjgdvmRT
kHAK7WZOU11D2s/5mRf8I1Y/8/Or/wDg3uv/AI5R/wAI1Y/8/Or/APg3uv8A 45WxRS9pPuw9rP8A
mf3mP/wjVj/z86v/AODe6/8AjlH/AAjVj/z86v8A+De6/wDjlbFFHtJ92HtZ /wAz+8x/+Easf+fn
V/8Awb3X/wAco/4Rqx/5+dX/APBvdf8Axytiij2k+7D2s/5n95j/APCNWP8A z86v/wCDe6/+OUf8
I1Y/8/Or/wDg3uv/AI5WxRR7Sfdh7Wf8z+8x/wDhGrH/AJ+dX/8ABvdf/HKP +Easf+fnV/8Awb3X
/wAcrYoo9pPuw9rP+Z/eY/8AwjVj/wA/Or/+De6/+OUf8I1Y/wDPzq//AIN7 r/45WxRR7Sfdh7Wf
8z+8x/8AhGrH/n51f/wb3X/xyj/hGrH/AJ+dX/8ABvdf/HK2KKPaT7sPaz/m f3mP/wAI1Y/8/Or/
APg3uv8A45R/wjVj/wA/Or/+De6/+OVsUUe0n3Ye1n/M/vMf/hGrH/n51f8A 8G91/wDHKP8AhGrH
/n51f/wb3X/xytiij2k+7D2s/wCZ/eY//CNWP/Pzq/8A4N7r/wCOUf8ACNWP /Pzq/wD4N7r/AOOV
sUUe0n3Ye1n/ADP7zH/4Rqx/5+dX/wDBvdf/AByj/hGrH/n51f8A8G91/wDH K2KKPaT7sPaz/mf3
nK+ItEt7Dwxq15bXmrpPBZzSxv8A2tdHayoSDgyYPI70Vo+Lv+RL13/sH3H/ AKLaiuvDSbTuz3so
SqQk5669Q8I/8iXoX/YPt/8A0WtbNY3hH/kS9C/7B9v/AOi1rZriluzwav8A El6sKKKKRAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUARwwQ26FIIkiQu zlUUKCzMWY8dyxJJ
7kk1Qu/Duk3ySJPZJskt7i2dUJQGOdg0w+UjlmUEt1zk55NZ/jiCG68OR29x Ek0EupaekkcihldT
eQggg8EEdqpyQ2fhbxDHDpNtY6fZS6VeXc8AIt7YyQvAEdiAQnEjhnAyRjO7 YoFJdUI3NR8PaZqh
uWu4HL3CQJI8c8kbYhkMkWGVgVKuxORg/kKJvD2mXGqDUZIHM+9ZGUTyCKR1 xtd4g2x3GFwzKSNi
YPyrjiL7xLrl/Z3Flb3qQ3dte6W5un0m5s96T3Xl+X5UkgYgFMlt2GVmTAOW rb1jxTdaZ4hjt0eC
W2+1W1o8EdlPI2ZnRdz3A/dQsPMDeWwJKheR5g21yyA349E0+L7Nst8fZrqW 8i+dvlml8ze3XnPn
ScHgbuAMDFS28IaDa3Dzx6cjO9vJakSu0iiBypMIViQIvlGEA2rztA3HOBDY WWqadcavfeHn1vUj
qV5bpND5S3EEcVxLHGY5JHTywqouNjA7iW+8Wap9P8T3146yW0lqdLi0K21N rjUn8qVzKs2BIUGx
B+7VmcAhcMArbgUVn0YG5D4Y0qGzuLYwzzLcbfMluLqWab5TlMSuxddrZZcE bWJYYJJqey0TT9Pi
jSG33MkpnEs7tNKZCpTeZHJYtsOzJOQvy9OK5FPGmrLbX8McUF1e28uniN59 PuNORxc3BhKlJdzj
AUnzBkfN907SCahqGr3eo6TZ5sX1Ow19rX7R5bxwvu06WXf5e5mG1Zcbd/zF PvJu+V8surA7qSCG
Z4nliR3hffEzKCUbaVyvodrMMjsSO9SVmeH9Rm1TSfPuFQTx3E9tIYwQrtDM 8RYAklQxTdtycZxk
4ydOs3poAUUUUDCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigDG8Xf8iXr
v/YPuP8A0W1FHi7/AJEvXf8AsH3H/otqK7cLsz6LJf4cvUyvC/iKyg8JaNE8 GplksYFJTS7l1JEa
jhhGQR7g4Nav/CT2H/Pvq3/gouv/AI3R4R/5EvQv+wfb/wDotat6tq1to1kb m53MS2yKKMAvM56I
oOMngnnAABJIAJHOo88+WKu2eFXnSjKUpaJX6/8AAKn/AAk9h/z76t/4KLr/ AON0f8JPYf8APvq3
/gouv/jdSv4j0iPSodSe/iW1nby4Sc75JOf3apjc0mVYeWBuyCMZGKWTX7G2 0uLUL5nsY532Qx3K
7ZZW52qsfLF2AyI8b+cFQ2QJcbOzTuSpU2rpP7/+AQ/8JPYf8++rf+Ci6/8A jdH/AAk9h/z76t/4
KLr/AON05ddt/Nt5LiX7DDJa3F0YryIxv5UbIDKWJxGoDglXAb5xnaVYUWni fSryeGBJp4riaXyU
gubWWCQsUdwdkihgpWKTDEbSUYA5GKVl2C9Ps/v/AOAN/wCEnsP+ffVv/BRd f/G6P+EnsP8An31b
/wAFF1/8bpsvi7RIThrtyFeRZWS3kdYNkjRs0rBSIkDRuN74U7GIJCkixN4h 0y31QadJO4n3rGzC
CQxRu2NqPKF2I5yuFZgTvTA+ZclvIL0+z+//AIBD/wAJPYf8++rf+Ci6/wDj dH/CT2H/AD76t/4K
Lr/43VWz8VwLp3n6gH89r28t44bO1lndkhuHi3bEDNgBU3NjALDpuAq5deKN Gs/JMl5vjmiWcSwR
PNGkTfdlkdAVjjOCQ7kKQrHOFOHbyC9Ps/v/AOAN/wCEnsP+ffVv/BRdf/G6 P+EnsP8An31b/wAF
F1/8bqabxDplvqg06SdxPvWNmEEhijdsbUeULsRzlcKzAnemB8y5IdfsZNUO mTM9pfF2WKC5XYZw
uTuiP3ZRtAY7CSoI3BTxSsuwXp9n9/8AwCH/AISew/599W/8FF1/8bo/4Sew /wCffVv/AAUXX/xu
podfsZNUOmTM9pfF2WKC5XYZwuTuiP3ZRtAY7CSoI3BTxU+o6naaVbrNdu4D uERIonlkkbBOERAW
Y4BOADgKT0BNFl2C9Ps/v/4BS/4Sew/599W/8FF1/wDG6P8AhJ7D/n31b/wU XX/xunTeJ9Khs7e5
E08y3G7y4re1lmm+U4fMSKXXa2FbIG1iFOCQKjufF+g2twkEmoozvbx3QMSN IogcsBMWUECL5Tly
dq8biNwyW8gvT7P7/wDgDv8AhJ7D/n31b/wUXX/xuj/hJ7D/AJ99W/8ABRdf /G6afF+grYT3z6ik
dpA8ayTSoyLtkYJHICQMxMx4kGUOCQ2AcEHi7RLi4it0u3Wd3CNHLbyRtCzH CCYMoMJc42CTbvyN
uc07eQXp9n9//AHf8JPYf8++rf8Agouv/jdH/CT2H/Pvq3/gouv/AI3U0PiH TLjVDp0c7mfe0asY
JBFI653IkpXY7jDZVWJGx8j5Wxnp400S/wBHu77T9UQRxWT3iXEltI0ZjVcs 6jCmUISA6ocqTtO1
jii3kF6fZ/f/AMAtf8JPYf8APvq3/gouv/jdH/CT2H/Pvq3/AIKLr/43Wje3 tvp1nJdXUmyFMAkK
WJJIAVVGSzEkAKASSQACTVD/AISfSv7P+2+dPt83yPJ+yy/aPMxu2eRt8zdt +fG3O35vu80rLsF6
fZ/f/wAAb/wk9h/z76t/4KLr/wCN0f8ACT2H/Pvq3/gouv8A43VHTPGVlcaN Hf3EvnefdXcduun2
8lyZYop3jWQLGHYrtCZb7uXHTcBWhrus/YfB2pa5p7wXHkafLd2753xybYy6 nIPKnA6Hkd6dtbWC
9Ps/v/4BS1PU9F1iwayvbTWWgZ0f93pt7EwZGDqQyIGBDKDkHtVezm8O2dvd QLYazcJdJ5c5vdPv
rppUwRsZpUYlPmb5c4+ZuPmObsV7q+malY2usXFjeR6hK0EMlnavAYpFjeT5 laR9ylY35BBBAGGD
ErX1Lx1pVnoep6jbefdNZWr3Ucf2eVBcqv8AFExTDx5K5kTcqhgxOCCXbogv T7P7/wDgGcLLwkIL
qP8As7XS135JuJjaagZpDC5eJjLt37lY8NnOAozhQBYvB4X1DUFvrrS9WknW WOcf8S29CCWMqUl2
BNvmDaq78bio2k7eK2brxPpVl5P2maePzYlnbNrKfIjPR5vl/crw3Mm0fK39 1sV5b3V9T1K+tdHu
LGzj0+VYJpLy1ecyyNGknyqsibVCyJySSSSMKFBYv6hen2f3/wDAM69/4RvU LyS5uLLXS0uPOijs
7+OGfAA/exKoSTKgKd4OVAU5AAq5JqWhTXF3PNp2pSvd2621wJNIu2WSJS5C lTHjH7x+3O7nPFXf
+Egt7WXT7PVV+x6nfbxFaKTKZCjKrFCo+ZfnVskAhCWYLtbbGni7RHt7u4+1 usFrbvdNI9vIqyQo
MtJESoEqAY+aPcPmX+8Mr7wvT7P7/wDgHL6jpnh2XTp7ez03Umku7iya8e80 6+nNzFBcLIVkZ42L
nbvUZzxtUnaBjXtpvDtoLby7DWWe3uDcpLLp99JIZTG0ZZ3ZCznYxX5icDAH 3RiXU/Genw6NJqFl
dwGOC6tI5pLhWjQQyzpGZQW27oypcrIModpwSAa29O1O01W3aa0dyEco6SxP FJG2AcOjgMpwQcED
IYHoQabbtrcL0+z+/wD4Bl2es6Rp8DQ2tnq0cbSyTEf2VdnLyOzueY+7Mx9s 8cVP/wAJPYf8++rf
+Ci6/wDjdbNFTdBen2f3/wDAMb/hJ7D/AJ99W/8ABRdf/G6P+EnsP+ffVv8A wUXX/wAbrZopaBen
2f3/APAMb/hJ7D/n31b/AMFF1/8AG6P+EnsP+ffVv/BRdf8AxutmijQL0+z+ /wD4Bjf8JPYf8++r
f+Ci6/8AjdH/AAk9h/z76t/4KLr/AON1s0UaBen2f3/8Axv+EnsP+ffVv/BR df8Axuj/AISew/59
9W/8FF1/8brZoo0C9Ps/v/4Bjf8ACT2H/Pvq3/gouv8A43R/wk9h/wA++rf+ Ci6/+N1s0UaBen2f
3/8AAMb/AISew/599W/8FF1/8bo/4Sew/wCffVv/AAUXX/xutmijQL0+z+// AIBjf8JPYf8APvq3
/gouv/jdH/CT2H/Pvq3/AIKLr/43WzRRoF6fZ/f/AMAxv+EnsP8An31b/wAF F1/8bo/4Sew/599W
/wDBRdf/AButmijQL0+z+/8A4Bjf8JPYf8++rf8Agouv/jdH/CT2H/Pvq3/g ouv/AI3WzRRoF6fZ
/f8A8Axv+EnsP+ffVv8AwUXX/wAbo/4Sew/599W/8FF1/wDG62aKNAvT7P7/ APgGN/wk9h/z76t/
4KLr/wCN0f8ACT2H/Pvq3/gouv8A43WzRRoF6fZ/f/wDkfFHiKyn8JazEkGp hnsZ1BfS7lFBMbDl
jGAB7k4FFavi7/kS9d/7B9x/6Laiu3DWs7H0GTcvJK3cPCP/ACJehf8AYPt/ /Ra1ynizTvE48Ufa
LCzi1KK8jEFm7sUXT2wC4k6/u22l9yjcSoQ5/d1reF/EVlB4S0aJ4NTLJYwK Sml3LqSI1HDCMgj3
Bwa1f+EnsP8An31b/wAFF1/8bqcNiKmGqupGN990fN4/ALFKVKrFuLfn3KGm eB7PT9Kjha9vJNSE
jTvqccpjmaZgoYgD5dnyJ+6IZMRpuVsVozaF9ss7db29na/ttwh1C3PkTAE8 Z2/K3RCykeWzKCUx
hQ3/AISew/599W/8FF1/8bo/4Sew/wCffVv/AAUXX/xusKk6lSTnPVsqOHlC KjGNkvIxZo7u68Uw
WFtrKS6lZ6RfQS3qRIzWskr25gaWMHaHKqWwdofYxAA4FS28F6sq6zcSSwJc XMVm9lFJqFxdiKe2
lklQSSy5Zoy5QnaF4LADI3t0v/CT2H/Pvq3/AIKLr/43R/wk9h/z76t/4KLr /wCN0ry6Ir2NT+V/
cc14j8DaleeHo9C0q+/0KLShYQfaLyaHymVCu51hwJ942KQ+FTbuCvuZTvw6 fq9jr1/JaCxay1G6
S6mmmkfzItsUcbIsYXDZEQwxdcF/uttw03/CT2H/AD76t/4KLr/43R/wk9h/ z76t/wCCi6/+N0Xl
tYPY1P5X9xiz+F9YOnRWsF4iob29mkRLue3A864aSOXfFtdyisQYsqrFz8w2 qagHhHWLfR9EtLR7
WK8tNNgs3vYryeBoZI1wH2KNt0gJLLHIFA+YZxIcdD/wk9h/z76t/wCCi6/+ N0f8JPYf8++rf+Ci
6/8AjdF59g9jU/lf3FG80PUn8TrfWZgtoWljkkuI7uZGKqFDo9sMxTMyqU81 iGVWXAzGpOh/YX2n
UPtmp3s955cvmW9tny7eHByvyD/WMMIcyFsMu5AnQN/4Sew/599W/wDBRdf/ ABuj/hJ7D/n31b/w
UXX/AMbpe92D2NT+V/cO/sL7TqH2zU72e88uXzLe2z5dvDg5X5B/rGGEOZC2 GXcgToDXtPvLttNu
7AQSXOn3RuUhnkMaS5ikiKlwrFcCUtnac7ccZyG/8JPYf8++rf8Agouv/jdH /CT2H/Pvq3/gouv/
AI3StLsHsqn8r+4q3VhrpvdN1iKLTp9Qgt7i3ltmneGILK8b5WTY5Yr5Sryo 3ZLfJ92sz/hCbyDw
9qmlQ3UEnn+G7fRoJXBTMkaTqXYAHap81TwSevoM7v8Awk9h/wA++rf+Ci6/ +N0f8JPYf8++rf8A
gouv/jdP3l0D2NT+V/cUdX8OXmoaxdXcUkCxy/2XtDsQR9mu3mkzx3VgB6nr gc0XXhy8n/tbbJAP
tmtWWoR5Y8Rw/ZdwPH3j5D47cryOcXv+EnsP+ffVv/BRdf8Axuj/AISew/59 9W/8FF1/8bo97sHs
an8r+4zbPw9qMOqWccptf7PsdSutSinWVjLK0/n/ALto9oCBftDfMHbOwfKN 3y4HiDQ5tI8DWVvd
XVr59v4YutFSNZDuubqSKEIkQIBckwvgfeORgdcdj/wk9h/z76t/4KLr/wCN 0f8ACT2H/Pvq3/go
uv8A43TTle9g9jU/lf3E2r2dzqWl3lr9ntWJdTAJJXAcLtbJZQGifcCFddxQ hXGSNtYcWga3FY2M
3mQS3djqDXdvZz3ssqKjQPCYzcuhkbmR5NzIcZ2AYAYa3/CT2H/Pvq3/AIKL r/43R/wk9h/z76t/
4KLr/wCN0lzLSwexqfyv7jFsNB13TRZahFDp02oRPqAltWu3SILdXInysvlE krsVcFBncTkYwbk3
hy8X4fXHhWGSB9uijT4Ll2K75PKaMllAO1eFPBY8kY4Gb3/CT2H/AD76t/4K Lr/43R/wk9h/z76t
/wCCi6/+N0e92D2NT+V/cQxWWr6nqVjdaxb2NnHp8rTwx2d085lkaN4/mZo0 2qFkfgAkkg5UKQ3M
TeBteuv7Sa5voJZrjRb3TRJLeTyebNL5eJtrZSFWKHMca4TAwXGAvW/8JPYf 8++rf+Ci6/8AjdH/
AAk9h/z76t/4KLr/AON005LZB7Gp/K/uMLxj4Z17xNp8tvFcwQ/adPMJi+3T xx28xDbjiML9oV8q
v7zAQJuCtuZDf1LRLwT6kttpmlatZapKk9za6nMY1SRURBjEUgdSIkOCAVZS ctuAW9/wk9h/z76t
/wCCi6/+N0f8JPYf8++rf+Ci6/8AjdHvdg9jU/lf3FHRfCn9h32lNbvB9mtL W9jkSNPLHmXE8Uv7
tBkLGCjgDJIG0Zbk1ymt+F9YsdH1/VtRvEuBH4d1C1djdzytNI6o3nBH+SEN 5bZijAC8AM4I2dz/
AMJPYf8APvq3/gouv/jdH/CT2H/Pvq3/AIKLr/43QnJO9g9jU/lf3GTP4c1f ULi5u72SxW5kl01A
IWfY8drdGYycjKM4dgI/mC4HztnI3NL06ax1HW7iVkKX16txEFJyFFvDFhuO u6NumeCPpUP/AAk9
h/z76t/4KLr/AON0f8JPYf8APvq3/gouv/jdJ83YPY1P5X9xs0Vjf8JPYf8A Pvq3/gouv/jdH/CT
2H/Pvq3/AIKLr/43U8r7B7Kp/K/uNmisb/hJ7D/n31b/AMFF1/8AG6P+EnsP +ffVv/BRdf8Axujl
fYPZVP5X9xs0Vjf8JPYf8++rf+Ci6/8AjdH/AAk9h/z76t/4KLr/AON0cr7B 7Kp/K/uNmisb/hJ7
D/n31b/wUXX/AMbo/wCEnsP+ffVv/BRdf/G6OV9g9lU/lf3GzRWN/wAJPYf8 ++rf+Ci6/wDjdH/C
T2H/AD76t/4KLr/43RyvsHsqn8r+42aKxv8AhJ7D/n31b/wUXX/xuj/hJ7D/ AJ99W/8ABRdf/G6O
V9g9lU/lf3GzRWN/wk9h/wA++rf+Ci6/+N0f8JPYf8++rf8Agouv/jdHK+we yqfyv7jZorG/4Sew
/wCffVv/AAUXX/xuj/hJ7D/n31b/AMFF1/8AG6OV9g9lU/lf3GzRWN/wk9h/ z76t/wCCi6/+N0f8
JPYf8++rf+Ci6/8AjdHK+weyqfyv7jZorG/4Sew/599W/wDBRdf/ABuj/hJ7 D/n31b/wUXX/AMbo
5X2D2VT+V/cbNFY3/CT2H/Pvq3/gouv/AI3R/wAJPYf8++rf+Ci6/wDjdHK+ weyqfyv7jZorG/4S
ew/599W/8FF1/wDG6P8AhJ7D/n31b/wUXX/xujlfYPZVP5X9weLv+RL13/sH 3H/otqKyvFHiKyn8
JazEkGphnsZ1BfS7lFBMbDljGAB7k4FFduGTSdz6DJoyjCV1bU1fCP8AyJeh f9g+3/8ARa1s1jeE
f+RL0L/sH2//AKLWvO/iTfa/YeKrKaaWS205WH9l3Nu3yrNs+YSA8eYfnxkF SmQOrgxhcK8VW9kp
JN33PHp0HiMS6SaTbe567RXG+HPH9pqnh23v72C5Sd5HiC2tpLN9o2bd0sSI rMYssAWwQrHbuPBO
2/inQ0vFtTqUHmNai9BBJT7OQ5ExcfKI/kbLE4GVBOWXOFSlKnJwktUcsouM nF7o16KyIfE+lTWd
xcmaeFbfb5kVxaywzfMcJiJ1DtubKrgHcwKjJBFU5vGVgt1o8MEV1N/aN61m wNrMj27CJpP3iFMo
ThOG2/K2/wC6pNRyvsSdHRWZD4h0y41Q6dHO5n3tGrGCQRSOudyJKV2O4w2V ViRsfI+Vsc5puu+I
/wDhHNF8QX91pU1tqH2LfaQWMkTr9peNBiQzMPlMgP3Pm244zkNRYHbUVmQ+ IdMuNUOnRzuZ97Rq
xgkEUjrnciSldjuMNlVYkbHyPlbGXqXjrSrPQ9T1G28+6aytXuo4/s8qC5Vf 4omKYePJXMiblUMG
JwQSuVgdPRWBPqt/qWof2foskFrJHaxXks9/aSP8kpdUQRbkYN+7ctuI24A2 ksdufceMH06S0g1D
yEkj1U6beyIjFZD9kadDCoJbc+YgE+Y7mKDccMXysDr6KyF8QafJLbyjUYI7 aS1uLhhLGyELEyK7
MzECPYWKsrDdk9trCiHxPpU1ncXJmnhW32+ZFcWssM3zHCYidQ7bmyq4B3MC oyQRSswNeiucm8ZW
C3WjwwRXU39o3rWbA2syPbsImk/eIUyhOE4bb8rb/uqTR/wllpbvc3N/MkGn tetp9iRG7vcTRq3m
YAyc70eNU25Jj4LeYop8rA6OisibxPpUNnb3ImnmW43eXFb2ss03ynD5iRS6 7WwrZA2sQpwSBUdz
4v0G1uEgk1FGd7eO6BiRpFEDlgJiyggRfKcuTtXjcRuGVyvsBt0VkQ+KNGns 7i6jvMw2+0sfKcFw
5xG0a4zIrnhGQMHPCljR/wAJPpX9n/bfOn2+b5Hk/ZZftHmY3bPI2+Zu2/Pj bnb833eaOVga9FYk
/i7RLdLNnu3Z7xJGt4Y7eSSWTy2VZFEaqW3qW+ZMblw2QNrYkuvFGjWfkmS8 3xzRLOJYInmjSJvu
yyOgKxxnBIdyFIVjnCnByvsBr0VmTeIdMt9UGnSTuJ96xswgkMUbtjajyhdi OcrhWYE70wPmXJD4
h0y41Q6dHO5n3tGrGCQRSOudyJKV2O4w2VViRsfI+VsFmBp0VzEXiO8k8C6H rhjg+03/APZ3moFO
wfaJYkfaM54EjYyT0Gc1Qk13xHHoOr+IftWlGy0+W+P2P7DJ5kkdvLIm3zfO wGYR/e2EAn7pxiny
sDtqKzNL1Ga+1HW7eVUCWN6tvEVByVNvDLlueu6RumOAPrV+GZZ0LoHADsnz xshyrFTwQDjI4PQj
BGQQaloCSiuMXxBrV7e6jHp97o/2yzeYjQpIj9rkSNyqkyGZQglAVlcx4USr 94cnQj8aaYr6418X
sbbSb2O0kuLiKREYuse1ssoAG6THUgAK5IVgarlYHR0VgN4t0q1SSW7vtiNd JbQxm0lSRZGt1mWI
qQWaQqSQAAcsqY3jmxN4o0aCzt7qS8xDcbip8pyUCHEjSLjMaoeHZwoQ8MVN LlYGvRVexvbfUtPt
r+0k8y2uYlmhfaRuRgCpweRkEdayJvFlla65rGn3Uc8MOl6el/NcmCQpsPmb sHbg4CAjBO7LADKN
gs2Bv0Vmaj4i0nSTci/vUtxbJA8zSAhY1mkMcZLYwAWVhntjJwOaj/4SfSv7 P+2+dPt83yPJ+yy/
aPMxu2eRt8zdt+fG3O35vu80WYGvRXKaj4xW01LSXt40n0m5t55buY7kktxH LBEWIP3QjSt5gbaU
CsTgoVNxPEsVvc6yt+dsdnqCWlukELyyy5t4pcBFDM7fO5+UcKuSMAmnysDf orEn8XaJbpZs927P
eJI1vDHbySSyeWyrIojVS29S3zJjcuGyBtbElr4p0O985rfUoHhhiac3GSIW jX77pIfkdVJAYqSF
JAbBNLlfYDXorP0zWrLVvNFq06yRYLxXNtJbyKDnDbJFVtpwwDYwSrAHIOLk cyyvKihwYn2NujZQ
TtDfKSMMMMORkZyOoICsBJRXKXOtajceJrnSLXVtH0yeNwlva31s0012vlrI ZYwJozsBLJwG5ibn
qFkt/GUSXl/a6tYz6fJp2lQ6jeEo8iRbg5kQOE2vs2cFSd3zADKNiuVgdPRW A3i7RoluLybVYE0+
OK3fe8LqFEsrxJIZD8rRuy8EDAA3birAix/wk+lf2f8AbfOn2+b5Hk/ZZftH mY3bPI2+Zu2/Pjbn
b833eaXKwNeisC18TW97qGnyWc8F1pGo+dBb3MWf+PmItuXP8SsqSEMAAPJP Lb1xtmZVuEgIfe6M
4IjYrgEA5bGAfmGATk84zg4GmgJKKwNZvdX/AOEh07StKuLG2+0WtzcyS3Vq 8/8Aq3hUKAsiYz5p
OcnoKLfxLFb2t2mqnbd2V0LKQWsLyfaJDGsoMUahnOY3DFcErh+WC7ycrA36 KwIvFllc+IdN0q2j
nlW+tZ7hZxBIFjMTqpRvlwrZLhgxBRlCsAXUUSeMtGXT9QvY5Z5Y7K1kvCBb unnxIMs8LOFWVenz
ISvzLzhhk5WBv0Vzkt/rukmC81aXTprOe4ht2t7SB1kgaWRY0IkZyJQGdQfk jyCWGCNhNA8WWmqT
S2c8yLfJe3dsFSNwn7qaRVTecr5vloHKZ3Yy20LRyu1wOjorAj8W6VFp+nzX N9532m1juWngtJfL
WNhkSyDDeRGcMQZCAArcnaxFybxDplvqg06SdxPvWNmEEhijdsbUeULsRzlc KzAnemB8y5OVgQ+L
v+RL13/sH3H/AKLaisi61+LxH8OfEV7FbzwLHDf22yaJ0J8vegbDqp5ABIx8 pJU8qaK7MMrJpn0W
S/w5epr+Ef8AkS9C/wCwfb/+i1q9qemWWs6bPp2o20dzaTrtkiccEf0IOCCO QQCOao+Ef+RL0L/s
H2//AKLWvO/iTfa/YeKrKaaWS205WH9l3Nu3yrNs+YSA8eYfnxkFSmQOrgrC YaWJr+zjJRfS55NO
g8RifZJpNt7nfahpV5bajpt/olrYv9itZrNbOaU28YjkMRBVlR8bfJAC7cYb qMYNe+8M3mp/26l1
dwL/AGposWnGaKMjbIPtG99hJwv75SBuJ4IJ7mp4c8f2mqeHbe/vYLlJ3keI La2ks32jZt3SxIis
xiywBbBCsdu48E7b+KdDS8W1OpQeY1qL0EElPs5DkTFx8oj+RssTgZUE5Zc4 1ITpycZbo5ZRcZOL
3Rh2fhjU4LDVHj2Wd9dpDGMardXbPHGzMUM8uGjDB3QFEym4uCxwFg0vwjrG nT29wz2srrrv9ouj
3k8hWFrP7OV8yQMzupJxnAYKPuZ2r0cPifSprO4uTNPCtvt8yK4tZYZvmOEx E6h23NlVwDuYFRkg
iqc3jKwW60eGCK6m/tG9azYG1mR7dhE0n7xCmUJwnDbflbf91Sam8iTP0vwf cWPiQXcqpJbxXtze
xTtqFy53TGQ7VtsiKMjzmXeC2QCdoL5Vmi/D+z0O18NXVpp2lRaxpsSQ3c8U IX7Qpj2Snftzuzhw
xG47SuVEjGujh8Q6ZcaodOjncz72jVjBIIpHXO5ElK7HcYbKqxI2PkfK2Oc0 3XfEf/COaL4gv7rS
prbUPsW+0gsZInX7S8aDEhmYfKZAfufNtxxnILyYFuz8PajDqlnHKbX+z7HU rrUop1lYyytP5/7t
o9oCBftDfMHbOwfKN3y5h8GavN4ebSpXsY/segXGi2cqzO32jzEjUSyDYPKx 5KnaDJ988/L83Vw+
IdMuNUOnRzuZ97RqxgkEUjrnciSldjuMNlVYkbHyPlbGXqXjrSrPQ9T1G28+ 6aytXuo4/s8qC5Vf
4omKYePJXMiblUMGJwQSJyvsBYnstXg1D+2LC3sZb25tYra7tJ7p0jXyy7K0 cojJODK4IKfMCp+X
aQ2fceH9XSS01O2Sxm1P+1TqNzBJcPFCM2jWwRHEbMdq7OSvzEMcLkKNCfVb /UtQ/s/RZILWSO1i
vJZ7+0kf5JS6ogi3Iwb925bcRtwBtJY7c+48YPp0lpBqHkJJHqp029kRGKyH 7I06GFQS258xAJ8x
3MUG44YpXAyG0L+0L6Xw/wDbYDcy6Vq6XzW580WUl7PDKisOD0Z9u7aXCEgD kDQg8I332K9keKCC
9kls5Y1fU7m93/ZpvOVWmm5VWOVwqfLkt8+do318QafJLbyjUYI7aS1uLhhL GyELEyK7MzECPYWK
srDdk9trCiHxPpU1ncXJmnhW32+ZFcWssM3zHCYidQ7bmyq4B3MCoyQRT5pA U7mw12/l0W8uItOS
ez1L7RJBHO5VITBJCQJCmXfMm/7qD+HtuOfpenTPf29kWRJ9I126v5lckeZD cLctGycZIzcBSTgb
opQCdvOhN4ysFutHhgiupv7RvWs2BtZke3YRNJ+8QplCcJw235W3/dUmq7eM DHrVrbtau9le6k+m
20kUMjndEjmWRiAQB5qmMKQvCPJuK/dPetsBXn8L6wdOitYLxFQ3t7NIiXc9 uB51w0kcu+La7lFY
gxZVWLn5htU1BB4L1GLwtf6Y09r59x4YttHRg7bRNGk6sx+XOzMq4OM8Hj16 qPW9Pl+zbLjP2m6l
s4vkb5povM3r04x5MnJ4O3gnIzU07xfoOq27XNpqKG3Fubnz5EaKNogBuZWc AMEyA+CdhOG2nilz
SAz/ABB4WudYu9UmSZFS4t7ARKJXjYvbXEkxUuvKBtyqHXJXk44ANePwrdxa FLGtpam8lvftbRNq
l2zg+WIsreE+ar7VHzBQNuY9uCXPR6ZrVlq3mi1adZIsF4rm2kt5FBzhtkiq 204YBsYJVgDkHFyO
ZZXlRQ4MT7G3RsoJ2hvlJGGGGHIyM5HUEA5pLQDiWttd0/xF4eiiktbu+j03 UC8dzM+0xma22xib
aWJQFR5jIxfYcgF8rX1zwJrF14Wt9BstSR4IdIXT0eS5ntlSRUKlzHEcSiQb V2ucR7cgPuZTr3tz
4pTxTb6Zb6no6QXVvc3MbSaZKzRrG8ShTi4AYkTfewPu9OeNuPW9Pl+zbLjP 2m6ls4vkb5povM3r
04x5MnJ4O3gnIy+ZqzQFCHT9Xsdev5LQWLWWo3SXU000j+ZFtijjZFjC4bIi GGLrgv8AdbbhsvS/
B9xY+JBdyqklvFe3N7FO2oXLndMZDtW2yIoyPOZd4LZAJ2gvldjTvF+g6rbt c2moobcW5ufPkRoo
2iAG5lZwAwTID4J2E4baeKr3niuAaXPqNmH8uwdJb+C7tZbeVLY53SBZArYU BnB2sH8p0Hzcqve2
Ar23h7UUsNP0CY2o0bTnt2huklY3EywMrxIyFdqnKJucM24KcKm8bKg+H9ml sb1dO0o69Fqs2ow3
bQgl83DyKjvtzzG2zOG2HDKCUWuymmWBA7hyC6p8kbOcswUcAE4yeT0AyTgA mszxNqF5pujCawMC
3Ml1a2yNPGXRfNnjiLFQyk4Dk4yOlCk+gEml6dNY6jrdxKyFL69W4iCk5Ci3 hiw3HXdG3TPBH0q/
CZmQmeNEfewARyw27jtOSByVwSOxJGTjJxINWvNM1D7Br91YvvtZb1LyCI28 aRxFBIJFd3xjzEIb
dggtkLtBavqPjnTbLTftkcF9Kwure3e3exnjmUSyBA5jMe/bjdg7cMy7Ad3F KzYFfWtH1/VrO40y
aDSriFpZHtdTlnZJ7MsW2SJEIiPMiDYUiQFtgO5SxxJc+HtRnuNZUG1EF3q9 hqML+a27bCbfzFZd
uAcW524Jzu524rYm8Q6Zb6oNOkncT71jZhBIYo3bG1HlC7Ec5XCswJ3pgfMu c+K/13VjPeaTLp0N
nBcTW6293A7STtFI0bkyK4EQLIwHySYADHJOwNNgR/8ACOXn/CRf2h5kHk/2 1/aGNx3eX/Z/2bHT
72/n02988VkXcD+FbixvbjU9KtJjLqaLJfyNHAqXN0s4bfgBpFCr+6JXf8+G AQmr9r490+XUE+0S
fZ7K40q01G33RM0irMZd7SbchI0CR7nOFUty3IrYl1+ys2vjc3XmeRdLbCGC 1keUOYkk2BV3NK21
i+UHC9R8jGn7y3Az/CMl5ZeHvC2lTafOn/ElRp5XUr5EkaQqI2BHDHexwSD+ 7PB5xcNtNYeKdR1q
4ktY9Lk02GOSWSYq0TQvM5JBXbs2y53bhjb05yJJvE+lQ2dvciaeZbjd5cVv ayzTfKcPmJFLrtbC
tkDaxCnBIFR6f4mtNS8SXWkWyPIkNlBeJdKjmKVZS+Nr7dpGFUghjuywH3Gw tdXYDjLbTPsPw4X7
BNhp9asVtppl8xGjiu7e3t5MAruVooInJBAbcSCAQBsXvhPUtQt5LybyFv31 UaibSC/mhQYtRbbB
cookHA35Cc/cxj5q7aijnYWOU03wmbabThcQ2rWkdlfQXNuZJJwzXM0UhBaX JkHyOGZsbic7QDtW
pD4T1uy0y/to9S+1tLqCTgtdS20lzAltHCqyToC6Sbow7Omd5XGFDkL21FLn YHIeGfCt/otxpj3V
zBP9ki1JJHRpCXNxdRzIRvLN91DncxOT1bk1B/whN5P4e0vSprqCPyPDdxo0 8qAviSRIFDqCBuUe
Ux5IPT1OO2oo53e4HOeGNCuNLuL27u4EhnuEjiwNSub9iqFyMyzYIGZDhQox yctuwu/GZi8oljRU
D4iKuWLLtHLDA2nduGBngA55wJKKTd3cDnNXstauXvLVtN0fWdLuXV1g1Gcx CIBV/d7RDIHG5S4Y
nOWxj5QTmXPhLV30/VbD7ZBd/bfDcWlfbLiVxI9xGJhvdcN8redkncSCOhzm u2opqTQHMav4cvNQ
1i6u4pIFjl/svaHYgj7NdvNJnjurAD1PXA5qhrdk+i3c+uTXVjEo1pb6D7VK 0UJBsRbFZZQjCLnc
QSCCdi8FxjtqKFJgee+HBNeHw/bmRJp7fUtR1aaeJCsTQvJcxxuoyxAlM4eP JIZEchjt574mb7Qi
rGhgKMXcuQwbI2gLjBBG7JyMYHBzxJRSk7sDA1my1f8A4SHTtV0q3sbn7Pa3 NtJFdXTwf6x4WDAr
G+ceURjA6iqdz4f1V9NuZIp0F9fXovL23iupLaNwIliESToPMQKEjbeBlyhG FVyq9XRTUmgOM8O+
FtV0S70dpZrW5S2TUo7mTzZAxFxcLMjKH3Fj8gDBnyN2dzY5qW3gbUrrULht ZvvNt7jSrrTZ5EvJ
pJJWlMWZlWTMcO4I37tF2oQOXGAvfUUc7A5yWw13VjBZ6tFp0NnBcQ3DXFpO 7STtFIsiARsgEQLI
pPzyYAKjJO8ZkWm3mkSwXGtXGlWOkabqt3qKXjXhy/ntOFR1ZFWP/j56725U DHzZHbUUcwHmNp4I
vtQ8PaM0kH+v0Cz067t7i+ubTyNiNuLxxY8//WkGNymNmNw3HHXw6fq9jr1/ JaCxay1G6S6mmmkf
zItsUcbIsYXDZEQwxdcF/uttw2/RQ5tgcfd6feaZ8PvFFtdiD5hqU8LQyFt0 crSyruBUbWG8ggZH
Gc84BWv4u/5EvXf+wfcf+i2orrwzumz6LJf4cvUPCP8AyJehf9g+3/8ARa1e 1PTLLWdNn07UbaO5
tJ12yROOCP6EHBBHIIBHNUfCP/Il6F/2D7f/ANFrXnfxJvtfsPFVlNNLJbac rD+y7m3b5Vm2fMJA
ePMPz4yCpTIHVwVhMNLE1/Zxkovpc8mnQeIxPsk0m29zvtQ0q8ttR02/0S1s X+xWs1mtnNKbeMRy
GIgqyo+NvkgBduMN1GMGvfeGbzU/7dS6u4F/tTRYtOM0UZG2QfaN77CThf3y kDcTwQT3NTw58QLH
U/DtvqGpbrV3keIusLmKQJt3zqQDiAbgGkb5UPBY8E67+LtES3tLj7W7QXVu l0siW8jLHC4yskpC
kRIRn5pNo+Vv7pxjOE4ScZLVHLKLjJxe6Mez8ManBYao8eyzvrtIYxjVbq7Z 442Zihnlw0YYO6Ao
mU3FwWOAsGl+EdY06e3uGe1lddd/tF0e8nkKwtZ/ZyvmSBmd1JOM4DBR9zO1 deHW73XLrWLHSGSx
uNLvVt3lvrGWRJVMSuSo3R87mxwzcAN0dTUfhjWr+60XR7/XLyxMmsxRPaQ2 tnJFsdoWmZCxkfd8
qnn5funuQKm8rMkp6X4PuLHxILuVUkt4r25vYp21C5c7pjIdq22RFGR5zLvB bIBO0F8qzRfh/Z6H
a+Grq007SotY02JIbueKEL9oUx7JTv253Zw4YjcdpXKiRjW3ceLtEtjCr3bt JO86QxRW8kkkrQSC
OUIiqWYqx6AHgFh8oJEl14o0az8kyXm+OaJZxLBE80aRN92WR0BWOM4JDuQp Csc4U4V5gZdn4e1G
HVLOOU2v9n2OpXWpRTrKxllafz/3bR7QEC/aG+YO2dg+UbvlzD4M1ebw82lS vYx/Y9AuNFs5Vmdv
tHmJGolkGweVjyVO0GT755+X5t+68TW9lqGoSXk8FrpGneTBcXMuf+PmUrtX P8KqrxksQQfOHK7G
zY/4SfSv7P8AtvnT7fN8jyfssv2jzMbtnkbfM3bfnxtzt+b7vNO8twK89lq8 Gof2xYW9jLe3NrFb
XdpPdOka+WXZWjlEZJwZXBBT5gVPy7SGz7jw/q6SWmp2yWM2p/2qdRuYJLh4 oRm0a2CI4jZjtXZy
V+YhjhchRqT+LtEt0s2e7dnvEka3hjt5JJZPLZVkURqpbepb5kxuXDZA2tiS 18U6He+c1vqUDwwx
NObjJELRr990kPyOqkgMVJCkgNgml73YDkG0L+0L6Xw/9tgNzLpWrpfNbnzR ZSXs8MqKw4PRn27t
pcISAOQNCDwjffYr2R4oIL2SWzljV9Tub3f9mm85VaablVY5XCp8uS3z52jf h8T6VNZ3FyZp4Vt9
vmRXFrLDN8xwmInUO25squAdzAqMkEVHJ4u0SGyiuprt4kluPsqRyW8iS+ds LiMxFd4cqMqpALZX
Gdy5fNICvc2Gu38ui3lxFpyT2epfaJII53KpCYJISBIUy75k3/dQfw9txzLH T7xry2s4RB9p0jX7
i+nSaQoJLe5FwyvHhSWwLjHIALxSLnjNb83ifSobO3uRNPMtxu8uK3tZZpvl OHzEil12thWyBtYh
TgkCi68UaNZ+SZLzfHNEs4lgieaNIm+7LI6ArHGcEh3IUhWOcKcK77AY+j2t ncfEPWtQtJ/PjhiC
tJG4ZFuJNkc0RI6Mi2dudvUeY2eGXGJ4c8N6jr/gbSkvbi1ggfww2nW8sIZm ZbiKE7nQ4ClBGBwx
35J+T7tdvN4h0y31QadJO4n3rGzCCQxRu2NqPKF2I5yuFZgTvTA+Zc5cviO8 j8C65rgjg+02H9o+
UhU7D9nllRNwznkRrnBHU4xTuwJPDGhXGl3F7d3cCQz3CRxYGpXN+xVC5GZZ sEDMhwoUY5OW3YXf
jMxeUSxoqB8RFXLFl2jlhgbTu3DAzwAc84HOJdeI9S1nWYbC/wBKtbawuktk WfT5JnbMEUpYsJ0H
WUjGO1SeG/Ek2v3CM1ukEEukWOoogJZlaczblLcAgCNccDv+Cab1A0J9Oml8 U2GpqyeRb2VzbupJ
3FpHgZSOMYxE2ee4/DD0e1s7j4h61qFpP58cMQVpI3DItxJsjmiJHRkWztzt 6jzGzwy46uOZZXlR
Q4MT7G3RsoJ2hvlJGGGGHIyM5HUEDmLnWtRuPE1zpFrq2j6ZPG4S3tb62aaa 7Xy1kMsYE0Z2Alk4
DcxNz1CpXAwPDnhvUdf8DaUl7cWsED+GG063lhDMzLcRQnc6HAUoIwOGO/JP yfdqxe6FcWXhvXIJ
4Ei1DXLddKtoxqVzfuzMJFVjJNg7F813ZVT5VSRst0Xbt/GUSXl/a6tYz6fJ p2lQ6jeEo8iRbg5k
QOE2vs2cFSd3zADKNiw3i7RoluLybVYE0+OK3fe8LqFEsrxJIZD8rRuy8EDA A3birAi25X2A25jM
qAwRo771BDuVG3cNxyAeQuSB3IAyM5GZ4m0+81LRhDYCBrmO6tblFnkKI3lT xylSwViMhCM4PWj/
AISfSv7P+2+dPt83yPJ+yy/aPMxu2eRt8zdt+fG3O35vu81b0zVbHWrBb7Tb lLm0d3RJo+VYoxRs
HuNynkcHqMis9VqBkf2XrWo3EuoXctrpmoR2U9nZfZHN0sRlKMZWLom4ho48 JtAG1sltwC4Efg3X
IxqVyptTPcPpskFvNqdzcBDbXLSsrTyqzYYEYIUAEkbeNzdXca/Fb+LLDQDb ztJd2s1yJhE5RdjI
ApYLt53NklhjCg8uuR/FGjR6fDfteYtptPk1KN/Kfm2QIWfGM8CROOvPTg1S clsBh6/4X1jVtdiu
EvENpFe2l0m+7nQJHFJGzQ+QmI2JKu4lfccsE2gBXXQisNd0kz2ekxadNZz3 E1wtxdzuskDSyNI4
MaoRKAzsR88eQQpwRvNyHxRo09ncXUd5mG32lj5TguHOI2jXGZFc8IyBg54U say9Y8YG3tNOutJt
XvRLevBc2rwyR3CqlvLMyrGwDCUiNSqsBuDDoGDA956WAoXng7UYbe60jTBa vpd3oVvozXFzcss0
CxiZfMCLGVkO2YHG5MlSOM5Fc6UfFD6pqGmTJcQJrq3lq8V7Jbx3SixjgbZc Q5ZQGZ+VByYyhxk4
6MeJrddVvhJPA2mQ6faXcM8WXMpmkmUBdud+7y0ChQSS2BnIFSSeLtEhsorq a7eJJbj7KkclvIkv
nbC4jMRXeHKjKqQC2VxncuXeQGXa+HdS0hdLu9Nt7GW5toruKS1mvJgn+kSp MzecyyO7Bo8ElRv3
FvkwFrUstO1GDxTcahcNaywXGm21vJJGWRvOieViRGQQEIm/vkjbjnOaksvF GjajeR2treb5nyoB
idQJACTEzEALKACTESHABJUAVJp3iHTNWuGgs53Z9hkQvBJGsyAgF4mZQJU5 X5kLD5l5+YZTcuoG
nRUYmVrh4AH3oiuSY2C4JIGGxgn5TkA5HGcZGec1rW7y38QxaVDqelaV5kUb QS6jCZPtkjuymOIC
WP5k2qSAWJ81eBxulK4HT0Vzlp4juY9d07QdTsXS+ube5laaKNzERFIqKwID KodTvwXymVU5LLkh
8aaJdW6ajb6ojaaLKe8Z/s0h3xxCIs6tjGEEmGXBO444KMKOVgdHRWRD4o0a ezuLqO8zDb7Sx8pw
XDnEbRrjMiueEZAwc8KWNU/+EstLh7a5sJkn09b1dPviY3R7eaRV8vIODne6 Rsm3IMnJXy2FHKwO
joqOSZYniRg5Mr7F2xswB2lvmIGFGFPJwM4HUgHE8YXur6V4evdV0q4sY/sN rNcyRXVq8vm7E3BQ
VkTb0Izhuo9ORK7sBv0VmWFzc29xHp+rX1rcahOkk8X2a0eBTEhRWyGd+Q0i /wAQzuGBwTVNvGvh
5fs+dQ/4+LWK9TEMhxbybtszfL8kY2nczYCcbiuRks+gG/RWZN4h0y31QadJ O4n3rGzCCQxRu2Nq
PKF2I5yuFZgTvTA+Zc6dKwBRRRQMKKKKACiiigAooooAKKKKAMbxd/yJeu/9 g+4/9FtRR4u/5EvX
f+wfcf8AotqK7cLsz6LJf4cvUPCP/Il6F/2D7f8A9FrV7U9MstZ02fTtRto7 m0nXbJE44I/oQcEE
cggEc1w3h34leEbDwxpNnc6tsngs4YpE+zSnayoARkLg8jtWn/wtTwX/ANBn /wAlZv8A4iudwmpX
SZ5FTC13NtQe/Zj/ABHJb6BqOkXsF5pWmpDaz2MQviYbeJHMJyGA2ll8oYhy m8bsMoQ1z9p4IvtQ
8PaM0kH+v0Cz067t7i+ubTyNiNuLxxY8/wD1pBjcpjZjcNxxu/8AC1PBf/QZ /wDJWb/4ij/hangv
/oM/+Ss3/wARTSqLozP6pX/kf3M2tJ0+8stZ16aYQG2vrqO5gZJCX4giiZWU qAMGLIIJzu7Y5wNV
tf8AhH/hZY6fdTwf2jYWtstpGr8XV5bhZIokBwX3vEBtGGIJxg9Jf+FqeC/+ gz/5Kzf/ABFH/C1P
Bf8A0Gf/ACVm/wDiKSjO+wfVK/8AI/uZFPp95oniHwvp2hiCf7Dot1Asd7IU 82NHtFGZFU7W4Bzs
YHBGBnctO6+Htx9ntLSORLyAaRb6TOZL65tFCxBx5hihOJgwkP7tmXG3Ab5i Ro/8LU8F/wDQZ/8A
JWb/AOIo/wCFqeC/+gz/AOSs3/xFO1RdGH1Sv/I/uY2506a41jWdMDIk91qV hrELOSFkhia3WRRx
kuptzkAYHmxZI3cWL7w/qrnV3tJ0xeakl35C3UlsZohbRRbGmjBeIh49+VBy FCnhmxD/AMLU8F/9
Bn/yVm/+Io/4Wp4L/wCgz/5Kzf8AxFLln2D6pX/kf3Md4Z8K3+i3GmPdXME/ 2SLUkkdGkJc3F1HM
hG8s33UOdzE5PVuTUH/CE3k/h7S9KmuoI/I8N3GjTyoC+JJEgUOoIG5R5THk g9PU4l/4Wp4L/wCg
z/5Kzf8AxFH/AAtTwX/0Gf8AyVm/+IotUve34B9Ur/yP7mNs/Ct2lhqjTWlq t3dJCixzapd3m4RM
zr+/kIaM5c7Si5jb5/nOFFS7sNb04eG4/Nga7OtSSW9vPdS3KRJ9iuMxmdwJ H3EOd7A7PMwFYIAb
v/C1PBf/AEGf/JWb/wCIo/4Wp4L/AOgz/wCSs3/xFFqnYPqlf+R/cxs3hfWD pNrbQ3iKWuLq4uYo
7ueBUknmMocSRbXkEe512EoJN2SUIGDSPD2u6Bb6etkdOmn/ALIs9NuHmlcL A0Af94ihcygmU/KT
H9wfN83yu/4Wp4L/AOgz/wCSs3/xFH/C1PBf/QZ/8lZv/iKLVOwfVK/8j+5j brwfcTeK7i/2pLaX
N7Besz6hcoImiWIBfsyERyHMIIdmGCwyrBAGsXPh7UXsNQ0CE2p0bUXuGmun lYXEKzszyoqBdrHL
vtcsu0MMq+w74f8Ahangv/oM/wDkrN/8RR/wtTwX/wBBn/yVm/8AiKLVOwfV K/8AI/uY3Ufh9p2s
y+IZ7+y057y/uFls7yS1WaS32wRIudwGQJI2bZnawODwxFbljp94niG71W6E CfadPtYDFFIX2SRv
Oz8lRlf3qgHAJwcgVi/8LU8F/wDQZ/8AJWb/AOIo/wCFqeC/+gz/AOSs3/xF DjUatZh9Ur/yP7md
bGZi8oljRUD4iKuWLLtHLDA2nduGBngA55wMDV7LWrl7y1bTdH1nS7l1dYNR nMQiAVf3e0QyBxuU
uGJzlsY+UE0f+FqeC/8AoM/+Ss3/AMRR/wALU8F/9Bn/AMlZv/iKShNfZD6p X/kf3MiufCWrvp+q
2H2yC7+2+G4tK+2XEriR7iMTDe64b5W87JO4kEdDnNX9X8OXmoaxdXcUkCxy /wBl7Q7EEfZrt5pM
8d1YAep64HNVf+FqeC/+gz/5Kzf/ABFH/C1PBf8A0Gf/ACVm/wDiKdqnYPql f+R/cyLW7J9Fu59c
murGJRrS30H2qVooSDYi2KyyhGEXO4gkEE7F4LjE/hK6vLXQdNVoPtf2/Vb4 yXMCFI1jaW5mWcD5
v3b4Tb82MSL8x4y3/hangv8A6DP/AJKzf/EUf8LU8F/9Bn/yVm/+Io5ZtW5Q +qV/5H9zNq70+8k8
WaVqcIga2gtbq2nDyFXHmNCysoCkNzDgglfvZ5xiuIltbM+DviHqVjP9otJr W6itrhHDxzR+XLcM
ysOGxNdTpkHAEYHVWJ3f+FqeC/8AoM/+Ss3/AMRR/wALU8F/9Bn/AMlZv/iK FGa6MPqlf+R/cxuo
eFtV1iLU5r+a1S7nSyjjW2lkjWUWs7TBi4+aEyFyuF3mPAIZzxUmm+Frq1k0 24ZIIZItVe/uE+2z
3TEG0e3H72X5nblD0QBeMErlm/8AC1PBf/QZ/wDJWb/4ij/hangv/oM/+Ss3 /wARRaptYPqlf+R/
cxsfhHUbCbWf7Pv0S3uLe3hs03NG8caTTSPBvX7iFZTGjoAY1xhcoCzNE8Ia lYXcE9zPA23Wm1Fl
+0zTssZsTb7N8uWdg56kgFRkBeEEv/C1PBf/AEGf/JWb/wCIo/4Wp4L/AOgz /wCSs3/xFFqnYPql
f+R/cy1a+HLyD+yd0kB+x61e6hJhjzHN9q2gcfeHnpntw3J4zT8H+D7jw/cW 5uFRhZWX2KGc6hc3
DTLlMsI5CEtwfLUlF3dQAwC/M7/hangv/oM/+Ss3/wARR/wtTwX/ANBn/wAl Zv8A4ijlqdmH1Sv/
ACP7mdaDN9odWjQQBFKOHJYtk7gVxgADbg5OcngY5yNXg1p7iZbS107UtPub cQy2d9MYVQ5bcciK
TeHVgCpwBs77jjJ/4Wp4L/6DP/krN/8AEUf8LU8F/wDQZ/8AJWb/AOIpKE10 D6pX/kf3Mm0rw9qO
m6lok5Nq0Ftb30M0aysPs6zyxyxxxDbhkjEYjGdnygEAY21Qn8F6jL4WsNMW e18+38MXOjuxdtpm
kSBVYfLnZmJsnGeRx6Wf+FqeC/8AoM/+Ss3/AMRR/wALU8F/9Bn/AMlZv/iK dqnYPqlf+R/cx3ib
SnW41PV5LiCK38rTWQybsB7a6kmPmEKdkZ3qC/OwbmIwvOJYTzawLyIS2txP qniK2u4ZbJi8Bht4
7WSRlfq6KYTD5gABkKghN2F2f+FqeC/+gz/5Kzf/ABFH/C1PBf8A0Gf/ACVm /wDiKaU19lh9Ur/y
P7mdbIZg8QijRkL4lLOVKrtPKjB3HdtGDjgk54waHiTTptY8LavpluyLPeWU 1vG0hIUM6FQTgE4y
fSsH/hangv8A6DP/AJKzf/EUf8LU8F/9Bn/yVm/+IqFCa6B9Ur/yP7mO+IFr Z6lp9hpss+Lu5uhF
Dbo48yWOUG3nZV6nZDPI+QMKVBOQCDU13TtR1jxT4h0yya1WC+0K1tLhpiwa JZHu18xMAhioJ+Qg
bsj51xzZ/wCFqeC/+gz/AOSs3/xFH/C1PBf/AEGf/JWb/wCIqlGaWzD6pX/k f3MbdeD7ibxXcX+1
JbS5vYL1mfULlBE0SxAL9mQiOQ5hBDswwWGVYIA3Z1x3/C1PBf8A0Gf/ACVm /wDiKP8Ahangv/oM
/wDkrN/8RScJvow+qV/5H9zOxorjv+FqeC/+gz/5Kzf/ABFH/C1PBf8A0Gf/ ACVm/wDiKXs59mH1
Wv8AyP7mdjRXHf8AC1PBf/QZ/wDJWb/4ij/hangv/oM/+Ss3/wARR7OfZh9V r/yP7mdjRXHf8LU8
F/8AQZ/8lZv/AIij/hangv8A6DP/AJKzf/EUezn2YfVa/wDI/uZ2NFcd/wAL U8F/9Bn/AMlZv/iK
P+FqeC/+gz/5Kzf/ABFHs59mH1Wv/I/uZ2NFcd/wtTwX/wBBn/yVm/8AiKP+ FqeC/wDoM/8AkrN/
8RR7OfZh9Vr/AMj+5mx4u/5EvXf+wfcf+i2orlPEXxK8I3/hjVrO21bfPPZz RRp9mlG5mQgDJXA5
PeiuvDRaTuj3sopTpwkpprXqf//Z
------=_NextPart_000_001A_01C4D2CD.68CFE440--
|
|
|
Re: More about 'partial code generation' [message #389497 is a reply to message #389487] |
Thu, 25 November 2004 07:18   |
Eclipse User |
|
|
|
This is a multi-part message in MIME format.
--------------000400080705080109000906
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit
Ian,
It sounds like you are saying that the import that's generated doesn't
compile because the project dependencies haven't been specified to let
the compiler find the jar that resolves the import. Is that a correct
interpretation of your situation?
Two points to note: 1) regenerating will never remove imports, only add
them, so once you have a bad import in your file, because of mistakes or
things that have been removed, you must remove it yourself and 2) the
plugin.xml is never regenerated once it exists, so model changes that
affect the plugin.xml, such as Model Plug-in Variables (which can be
used to generate additional plugin dependencies), will only have an
effect if you remove the plugin.xml and let it be regenerated.
If your problem is really just one of project dependencies you need to
add a requires/import in the plugin.xml to specify the plugin that
contains the .class files for the classes being imported. This can be
done manually in the plugin.xml or by specifying it in the Model Plug-in
Variables property of the GenModel before you generate the plugin.xml.
Ian Ward wrote:
> Ed,
>
> While I'm waiting for the book to arrive, can we run over this
> quickly?.....I promise to leave you alone, for a while, once I get
> this fixed.
>
> The good news is that I manage to get the correct import statement
> showing up in my 'client' class - that is, an import of the specified
> <<javaclass>> which I had wrapped in an interface (and it is the
> wrapper which my client has a reference to in the model). Eclipse
> still doesn't like it however.
>
> My scenario is a little different to the sdo model you have shown me -
> I want my client class to have visibility to a simple implemented
> class in order to call methods on an instance of it. I haven't got as
> far as worrying how my client would have (direct) visibility, as a
> variable within its code, to the implemented class - I don't have any
> direct reference in the model anymore - I'll just rely on good-old
> hard-coding I suppose!
>
> So, how to get the import accepted by Eclipse?
>
> In order to eliminate as much noise etc. as possible I have attempted
> to duplicate your scenario. A client interface wants to extend an
> interface (the javaclass) which is wrapped in another interface. I
> have each element; client, wrapper and javaclass in different
> packages. Having inadvertently generated code for all three packages
> and got everything working, I realised my mistake (I don't want to
> generate code for the javaclass). I reset my client and wrapper to
> deal with a second javaclass and this time I made sure I didn't
> generate code for its package (however, all is present and correct in
> the genmodel). No dice - import statement can't be resolved.
>
> I have tried to be as rigorous and systematic as possible which, with
> a little (!) intelligence, is all I can do as I don't know/understand
> what the machinery is grinding away at as I turn the handle. I may go
> back to 'hand-crafted' code!
>
> Ian
>
> "Ed Merks" <merks@ca.ibm.com <mailto:merks@ca.ibm.com>> a
|
|
|
Re: More about 'partial code generation' [message #389548 is a reply to message #389497] |
Fri, 26 November 2004 10:14   |
Eclipse User |
|
|
|
C'est un message de format MIME en plusieurs parties.
------=_NextPart_000_001A_01C4D3D3.1002DDC0
Content-Type: multipart/alternative;
boundary="----=_NextPart_001_001B_01C4D3D3.1002DDC0"
------=_NextPart_001_001B_01C4D3D3.1002DDC0
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Ed,
Your mail has jogged something in my brain, you'll be pleased to know! =
That is, I'm forgetting that the import statements are resolved on =
runtimes not on sources - basic I know; as I said, my java culture's a =
bit weak (s'why I'm keen on code generation tools!) plus I'm focused on =
mysterious things happening behind the Eclipse scenes plus when =
generating code I'm not thinking about executables yet! Anyway...
I should also clarify that the (binary) classes I'm trying to reference =
are just that - so not only are they not generated from a model, they're =
not in any sort of plugin of any sort. By the way, I'm not very =
comfortable with messin' with the plugins (didn't manage to regenerate =
'the plugin' when I tried - out of curiosity - it's in the metadata =
folder in the workspace isn't it?). Anyway..
It seems to me that I have to include something in the build path for =
the project to point at the binaries I want. I have tried adding the =
directory holding the 'package' of my binaries both as a variable =
(pointing to this directory) or as a class folder. Neither of these =
attempts have succeeded - but am I on the right track?=20
Ian
"Ed Merks" <merks@ca.ibm.com> a =E9crit dans le message news: =
co4iht$qs$1@www.eclipse.org...
Ian,
It sounds like you are saying that the import that's generated doesn't =
compile because the project dependencies haven't been specified to let =
the compiler find the jar that resolves the import. Is that a correct =
interpretation of your situation? =20
Two points to note: 1) regenerating will never remove imports, only =
add them, so once you have a bad import in your file, because of =
mistakes or things that have been removed, you must remove it yourself =
and 2) the plugin.xml is never regenerated once it exists, so model =
changes that affect the plugin.xml, such as Model Plug-in Variables =
(which can be used to generate additional plugin dependencies), will =
only have an effect if you remove the plugin.xml and let it be =
regenerated.
If your problem is really just one of project dependencies you need to =
add a requires/import in the plugin.xml to specify the plugin that =
contains the .class files for the classes being imported. This can be =
done manually in the plugin.xml or by specifying it in the Model Plug-in =
Variables property of the GenModel before you generate the plugin.xml.
Ian Ward wrote:=20
Ed,
While I'm waiting for the book to arrive, can we run over this =
quickly?...I promise to leave you alone, for a while, once I get this =
fixed.
The good news is that I manage to get the correct import statement =
showing up in my 'client' class - that is, an import of the specified =
<<javaclass>> which I had wrapped in an interface (and it is the wrapper =
which my client has a reference to in the model). Eclipse still doesn't =
like it however.
My scenario is a little different to the sdo model you have shown me =
- I want my client class to have visibility to a simple implemented =
class in order to call methods on an instance of it. I haven't got as =
far as worrying how my client would have (direct) visibility, as a =
variable within its code, to the implemented class - I don't have any =
direct reference in the model anymore - I'll just rely on good-old =
hard-coding I suppose!
So, how to get the import accepted by Eclipse?=20
In order to eliminate as much noise etc. as possible I have =
attempted to duplicate your scenario. A client interface wants to extend =
an interface (the javaclass) which is wrapped in another interface. I =
have each element; client, wrapper and javaclass in different packages. =
Having inadvertently generated code for all three packages and got =
everything working, I realised my mistake (I don't want to generate code =
for the javaclass). I reset my client and wrapper to deal with a second =
javaclass and this time I made sure I didn't generate code for its =
package (however, all is present and correct in the genmodel). No dice - =
import statement can't be resolved.
I have tried to be as rigorous and systematic as possible which, =
with a little (!) intelligence, is all I can do as I don't =
know/understand what the machinery is grinding away at as I turn the =
handle. I may go back to 'hand-crafted' code!
Ian
"Ed Merks" <merks@ca.ibm.com> a =E9crit dans le message news: =
co0amr$u8j$1@www.eclipse.org...
Ian,
Obviously I'm a poor salesman! Yes, the book is well worth =
buying, and covers all the basics and some advanced stuff too.
Ian Ward wrote:=20
Ed,
Looks neat, I'll try it!...Seriously, it seems that my =
OO/Eclipse culture is different (question about factories) and =
(certainly) incomplete - for this current question I've never been on =
the stereotype wavelength and if Eclipse/EMF uses them a lot then I need =
to get with it.
I'm trying to restrict my queries to those which seem to be =
Eclipse/EMF specific but of course I'd more easily recognise/work these =
things out if I had a bit more experience etc. I've already asked you =
about the EMF book which you've declined to plug - would that be a good =
place to go to familiarise with some of these basics or does it go into =
a lot of advanced stuff ? (yes, I've looked at some of the other forum =
posts!)
Otherwise, I'll keep askin' 'em if you'll keep answerin' =
'em!.and thanks.
Ian
"Ed Merks" <merks@ca.ibm.com> a =E9crit dans le message news: =
cnv8d9$ido$1@www.eclipse.org...
Ian,
The point is simply that you can create a "wrapper" for an =
existing interface using <<Interface>> and <<javaclass>> like this:
Ian Ward wrote:=20
Hello,
I have recently been advised by Ed Merks to look at how sdo works,
particularly in respect of how it works with the commonj.sdo interface. =
This
is in order to give me a model for how to integrate an existing package =
of
ready-coded classes into my project while not generating code for them - =
a
bit like a java package I suppose.
I have spent a couple of hours with some documentation and with the code =
- I
have established that, generally speaking, sdo implements the interfaces
defined in commonj.sdo by delegating to SDOUtil (looking at =
EDataObjectImpl
for example).
At this point, as much as I would like to know more about sdo, I feel =
that I
am losing the plot. I'm not sure how to go about finding what I am =
looking
for and, in fact, I'm not sure anymore what it is I'm looking for !
Maybe it's all about defining interfaces in the model (and so I'll have =
no
problem with my import statements which is where I started) which then =
are
implemented by calling methods on the classes I want to integrate. But =
then,
I'll still have to import them at this point and I've just moved the
problem, haven't I?
So, how do I persuade Eclipse to recognise these 'external' classes?
Thanks
Ian Ward
=20
------=_NextPart_001_001B_01C4D3D3.1002DDC0
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE></TITLE>
<META http-equiv=3DContent-Type =
content=3Dtext/html;charset=3DISO-8859-1>
<META content=3D"MSHTML 5.50.4807.2300" name=3DGENERATOR></HEAD>
<BODY text=3D#000000 bgColor=3D#ffffff>
<DIV><FONT size=3D2>
<P>Ed,</P>
<P>Your mail has jogged something in my brain, you’ll be pleased =
to know! That=20
is, I’m forgetting that the import statements are resolved on =
runtimes not on=20
sources – basic I know; as I said, my java culture’s a bit =
weak (s’why I’m keen=20
on code generation tools!) plus I’m focused on mysterious things =
happening=20
behind the Eclipse scenes plus when generating code I’m not =
thinking about=20
executables yet! Anyway…….</P>
<P>I should also clarify that the (binary) classes I’m trying to =
reference are=20
just that – so not only are they not generated from a model, =
they’re not in any=20
sort of plugin of any sort. By the way, I’m not very comfortable =
with messin’=20
with the plugins (didn’t manage to regenerate ‘the =
plugin’ when I tried - out of=20
curiosity – it’s in the metadata folder in the workspace =
isn’t it?).=20
Anyway……</P>
<P>It seems to me that I have to include something in the build path for =
the=20
project to point at the binaries I want. I have tried adding the =
directory=20
holding the ‘package’ of my binaries both as a variable =
(pointing to this=20
directory) or as a class folder. Neither of these attempts have =
succeeded – but=20
am I on the right track? </P>
<P>Ian</P></FONT></DIV>
<BLOCKQUOTE=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
<DIV>"Ed Merks" <<A =
href=3D"mailto:merks@ca.ibm.com">merks@ca.ibm.com</A>>=20
a =E9crit dans le message news: <A=20
=
href=3D"mailto:co4iht$qs$1@www.eclipse.org">co4iht$qs$1@www.eclipse.org</=
A>...</DIV>Ian,<BR><BR>It=20
sounds like you are saying that the import that's generated doesn't =
compile=20
because the project dependencies haven't been specified to let the =
compiler=20
find the jar that resolves the import. Is that a correct =
interpretation=20
of your situation? <BR><BR>Two points to note: 1) regenerating =
will=20
never remove imports, only add them, so once you have a bad import in =
your=20
file, because of mistakes or things that have been removed, you must =
remove it=20
yourself and 2) the plugin.xml is never regenerated once it exists, so =
model=20
changes that affect the plugin.xml, such as Model Plug-in Variables =
(which can=20
be used to generate additional plugin dependencies), will only have an =
effect=20
if you remove the plugin.xml and let it be regenerated.<BR><BR>If your =
problem=20
is really just one of project dependencies you need to add a =
requires/import=20
in the plugin.xml to specify the plugin that contains the .class files =
for the=20
classes being imported. This can be done manually in the =
plugin.xml or=20
by specifying it in the Model Plug-in Variables property of the =
GenModel=20
before you generate the plugin.xml.<BR><BR><BR>Ian Ward wrote:=20
<BLOCKQUOTE type=3D"cite" cite=3D"midco43u0$52h$1@www.eclipse.org">
<META content=3D"MSHTML 5.50.4807.2300" name=3DGENERATOR>
<DIV><FONT size=3D2>
<P>Ed,</P>
<P>While I’m waiting for the book to arrive, can we run over =
this=20
quickly?…..I promise to leave you alone, for a while, once I =
get this=20
fixed.</P>
<P>The good news is that I manage to get the correct import =
statement=20
showing up in my ‘client’ class – that is, an =
import of the specified=20
<<javaclass>> which I had wrapped in an interface (and =
it is the=20
wrapper which my client has a reference to in the model). Eclipse =
still=20
doesn’t like it however.</P>
<P>My scenario is a little different to the sdo model you have shown =
me – I=20
want my client class to have visibility to a simple implemented =
class in=20
order to call methods on an instance of it. I haven’t got as =
far as worrying=20
how my client would have (direct) visibility, as a variable within =
its code,=20
to the implemented class – I don’t have any direct =
reference in the model=20
anymore – I’ll just rely on good-old hard-coding I =
suppose!</P>
<P>So, how to get the import accepted by Eclipse? </P>
<P>In order to eliminate as much noise etc. as possible I have =
attempted to=20
duplicate your scenario. A client interface wants to extend an =
interface=20
(the javaclass) which is wrapped in another interface. I have each =
element;=20
client, wrapper and javaclass in different packages. Having =
inadvertently=20
generated code for all three packages and got everything working, I =
realised=20
my mistake (I don’t want to generate code for the javaclass). =
I reset my=20
client and wrapper to deal with a second javaclass and this time I =
made sure=20
I didn’t generate code for its package (however, all is =
present and correct=20
in the genmodel). No dice – import statement can’t be =
resolved.</P>
<P>I have tried to be as rigorous and systematic as possible which, =
with a=20
little (!) intelligence, is all I can do as I don’t =
know/understand what the=20
machinery is grinding away at as I turn the handle. I may go back to =
‘hand-crafted’ code!</P>
<P>Ian</P></FONT></DIV>
<BLOCKQUOTE=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
BORDER-LEFT: rgb(0,0,0) 2px solid; MARGIN-RIGHT: 0px">
<DIV>"Ed Merks" <<A=20
href=3D"mailto:merks@ca.ibm.com">merks@ca.ibm.com</A>> a =
=E9crit dans le=20
message news: <A=20
=
href=3D"mailto:co0amr$u8j$1@www.eclipse.org">co0amr$u8j$1@www.eclipse.org=
</A>...</DIV>Ian,<BR><BR>Obviously=20
I'm a poor salesman! Yes, the book is well worth buying, and =
covers=20
all the basics and some advanced stuff too.<BR><BR><BR>Ian Ward =
wrote:=20
<BLOCKQUOTE type=3D"cite" =
cite=3D"midco0a3p$t5c$1@www.eclipse.org">
<META content=3D"MSHTML 5.50.4807.2300" name=3DGENERATOR>
<STYLE></STYLE>
<DIV><FONT face=3DArial size=3D2><FONT size=3D2>
<P>Ed,</P>
<P>Looks neat, I’ll try it!…….Seriously, it =
seems that my OO/Eclipse=20
culture is different (question about factories) and (certainly)=20
incomplete - for this current question I’ve never been on =
the stereotype=20
wavelength and if Eclipse/EMF uses them a lot then I need to get =
with=20
it.</P>
<P>I’m trying to restrict my queries to those which seem =
to be=20
Eclipse/EMF specific but of course I’d more easily =
recognise/work these=20
things out if I had a bit more experience etc. I’ve =
already asked you=20
about the EMF book which you’ve declined to plug – =
would that be a good=20
place to go to familiarise with some of these basics or does it =
go into=20
a lot of advanced stuff ? (yes, I’ve looked at some of the =
other forum=20
posts!)</P>
<P>Otherwise, I’ll keep askin’ ‘em if =
you’ll keep answerin’ ‘em!…and=20
thanks.</P>
<P>Ian</P></FONT></FONT></DIV>
<BLOCKQUOTE=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: =
5px; BORDER-LEFT: rgb(0,0,0) 2px solid; MARGIN-RIGHT: 0px">
<DIV>"Ed Merks" <<A=20
href=3D"mailto:merks@ca.ibm.com">merks@ca.ibm.com</A>> a =
=E9crit dans=20
le message news: <A=20
=
href=3D"mailto:cnv8d9$ido$1@www.eclipse.org">cnv8d9$ido$1@www.eclipse.org=
</A>...</DIV>Ian,<BR><BR>The=20
point is simply that you can create a "wrapper" for an =
existing=20
interface using <<Interface>> and=20
<<javaclass>> like this:<BR>
<BLOCKQUOTE><IMG alt=3D""=20
=
src=3D"cid:001101c4d3ca$add098c0$1076fac1@l8t7p3"><BR></BLOCKQUOTE><BR>Ia=
n=20
Ward wrote:=20
<BLOCKQUOTE type=3D"cite" =
cite=3D"midcnuj0d$cln$1@www.eclipse.org"><PRE wrap=3D"">Hello,
I have recently been advised by Ed Merks to look at how sdo works,
particularly in respect of how it works with the commonj.sdo interface. =
This
is in order to give me a model for how to integrate an existing package =
of
ready-coded classes into my project while not generating code for them - =
a
bit like a java package I suppose.
I have spent a couple of hours with some documentation and with the code =
- I
have established that, generally speaking, sdo implements the interfaces
defined in commonj.sdo by delegating to SDOUtil (looking at =
EDataObjectImpl
for example).
At this point, as much as I would like to know more about sdo, I feel =
that I
am losing the plot. I'm not sure how to go about finding what I am =
looking
for and, in fact, I'm not sure anymore what it is I'm looking for !
Maybe it's all about defining interfaces in the model (and so I'll have =
no
problem with my import statements which is where I started) which then =
are
implemented by calling methods on the classes I want to integrate. But =
then,
I'll still have to import them at this point and I've just moved the
problem, haven't I?
So, how do I persuade Eclipse to recognise these 'external' classes?
Thanks
Ian Ward
=
</PRE></BLOCKQUOTE><BR></BLOCKQUOTE></BLOCKQUOTE><BR></BLOCKQUOTE ></BLOCK=
QUOTE><BR></BLOCKQUOTE></BODY></HTML>
------=_NextPart_001_001B_01C4D3D3.1002DDC0--
------=_NextPart_000_001A_01C4D3D3.1002DDC0
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-ID: <001101c4d3ca$add098c0$1076fac1@l8t7p3>
/9j/4AAQSkZJRgABAQIAJQAlAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsL DBkSEw8UHRofHh0a
HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgN DRgyIRwhMjIyMjIy
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/ wAARCAB/AcgDASIA
AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA AgEDAwIEAwUFBAQA
AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcY GRolJicoKSo0NTY3
ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKT lJWWl5iZmqKjpKWm
p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP0 9fb3+Pn6/8QAHwEA
AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQA AQJ3AAECAxEEBSEx
BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2 Nzg5OkNERUZHSElK
U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOk paanqKmqsrO0tba3
uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMB AAIRAxEAPwD0/wAO
6Jb3/hjSby5vNXeeezhlkf8Ata6G5mQEnAkwOT2rS/4Rqx/5+dX/APBvdf8A xyk8I/8AIl6F/wBg
+3/9FrWzXmSqTu9Tqq1JqbSb3Mf/AIRqx/5+dX/8G91/8co/4Rqx/wCfnV// AAb3X/xytiil7Sfd
ke1n/M/vMf8A4Rqx/wCfnV//AAb3X/xyj/hGrH/n51f/AMG91/8AHK2KKPaT 7sPaz/mf3mP/AMI1
Y/8APzq//g3uv/jlH/CNWP8Az86v/wCDe6/+OVsUUe0n3Ye1n/M/vMf/AIRq x/5+dX/8G91/8co/
4Rqx/wCfnV//AAb3X/xytiij2k+7D2s/5n95j/8ACNWP/Pzq/wD4N7r/AOOU f8I1Y/8APzq//g3u
v/jlbFFHtJ92HtZ/zP7zH/4Rqx/5+dX/APBvdf8Axyj/AIRqx/5+dX/8G91/ 8crYoo9pPuw9rP8A
mf3mP/wjVj/z86v/AODe6/8AjlH/AAjVj/z86v8A+De6/wDjlbFFHtJ92HtZ /wAz+8x/+Easf+fn
V/8Awb3X/wAco/4Rqx/5+dX/APBvdf8Axytiij2k+7D2s/5n95j/APCNWP8A z86v/wCDe6/+OUf8
I1Y/8/Or/wDg3uv/AI5WxRR7Sfdh7Wf8z+8x/wDhGrH/AJ+dX/8ABvdf/HKP +Easf+fnV/8Awb3X
/wAcrYoo9pPuw9rP+Z/eY/8AwjVj/wA/Or/+De6/+OUf8I1Y/wDPzq//AIN7 r/45WxWJ4k1m50e3
gaCBAkrlZLycO0NouPvuEBOByediYVt0ifLkU5vS7D2s/wCZ/eP/AOEasf8A n51f/wAG91/8co/4
Rqx/5+dX/wDBvdf/AByqGoa3eaVodhNFcQXy3WWk1Z0P2WBW+YSFYgx8sA5G 4qu1PnmBwzZGt6nc
aVLa6xFewajcW/hvVL2O4CAQykNayLtCn/V9APmJ24yzHLGlKb6h7Wf8z+86 b/hGrH/n51f/AMG9
1/8AHKP+Easf+fnV/wDwb3X/AMcrmdf1bxGI5tO+1WNrexXWlz+bBFIyLHcX Zj8k/OpfaY/mf5Q6
sV2JnNW7rxZqCeK7jT7W1eWC1vYLOSFNNuJTIJFiZpftK/u4ggmyUYEkRnkb xgvU7h7Wf8z+82/+
Easf+fnV/wDwb3X/AMco/wCEasf+fnV//Bvdf/HK5G9n1fxJeaNFf/2V/ZE2 v3Vk9m9s8wuY4BdA
GTLhf+WQwu1gHVXz/ALCePLq2/tCS4SC9ji0q61OL7Paz28YEOz5EnkBW4Vv MGJUCjC524cAO9Tu
HtZ/zP7zpv8AhGrH/n51f/wb3X/xyj/hGrH/AJ+dX/8ABvdf/HKoapqut+Ht BurvUJLG7k823igm
tbSVcGWVYjmAM7Pt3BsK+X5UBSAxr2+uX914eu7271GDSGsboIL+/wBPktre 4QovLQzMrqu6QoMO
MtGDnBKUuae9w9rP+Z/ea/8AwjVj/wA/Or/+De6/+OUf8I1Y/wDPzq//AIN7 r/45VD+27y78Mf2r
c3EHh14Zfmlv0LW7Lnb8wlEUgUlsDIjbcoxuTG/U0DU7nV9LW6u9PeykLldj bwGA/iUSIjgdvmRT
kHAK7WZOU11D2s/5mRf8I1Y/8/Or/wDg3uv/AI5R/wAI1Y/8/Or/APg3uv8A 45WxRS9pPuw9rP8A
mf3mP/wjVj/z86v/AODe6/8AjlH/AAjVj/z86v8A+De6/wDjlbFFHtJ92HtZ /wAz+8x/+Easf+fn
V/8Awb3X/wAco/4Rqx/5+dX/APBvdf8Axytiij2k+7D2s/5n95j/APCNWP8A z86v/wCDe6/+OUf8
I1Y/8/Or/wDg3uv/AI5WxRR7Sfdh7Wf8z+8x/wDhGrH/AJ+dX/8ABvdf/HKP +Easf+fnV/8Awb3X
/wAcrYoo9pPuw9rP+Z/eY/8AwjVj/wA/Or/+De6/+OUf8I1Y/wDPzq//AIN7 r/45WxRR7Sfdh7Wf
8z+8x/8AhGrH/n51f/wb3X/xyj/hGrH/AJ+dX/8ABvdf/HK2KKPaT7sPaz/m f3mP/wAI1Y/8/Or/
APg3uv8A45R/wjVj/wA/Or/+De6/+OVsUUe0n3Ye1n/M/vMf/hGrH/n51f8A 8G91/wDHKP8AhGrH
/n51f/wb3X/xytiij2k+7D2s/wCZ/eY//CNWP/Pzq/8A4N7r/wCOUf8ACNWP /Pzq/wD4N7r/AOOV
sUUe0n3Ye1n/ADP7zH/4Rqx/5+dX/wDBvdf/AByj/hGrH/n51f8A8G91/wDH K2KKPaT7sPaz/mf3
nK+ItEt7Dwxq15bXmrpPBZzSxv8A2tdHayoSDgyYPI70Vo+Lv+RL13/sH3H/ AKLaiuvDSbTuz3so
SqQk5669Q8I/8iXoX/YPt/8A0WtbNY3hH/kS9C/7B9v/AOi1rZriluzwav8A El6sKKKKRAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUARwwQ26FIIkiQu zlUUKCzMWY8dyxJJ
7kk1Qu/Duk3ySJPZJskt7i2dUJQGOdg0w+UjlmUEt1zk55NZ/jiCG68OR29x Ek0EupaekkcihldT
eQggg8EEdqpyQ2fhbxDHDpNtY6fZS6VeXc8AIt7YyQvAEdiAQnEjhnAyRjO7 YoFJdUI3NR8PaZqh
uWu4HL3CQJI8c8kbYhkMkWGVgVKuxORg/kKJvD2mXGqDUZIHM+9ZGUTyCKR1 xtd4g2x3GFwzKSNi
YPyrjiL7xLrl/Z3Flb3qQ3dte6W5un0m5s96T3Xl+X5UkgYgFMlt2GVmTAOW rb1jxTdaZ4hjt0eC
W2+1W1o8EdlPI2ZnRdz3A/dQsPMDeWwJKheR5g21yyA349E0+L7Nst8fZrqW 8i+dvlml8ze3XnPn
ScHgbuAMDFS28IaDa3Dzx6cjO9vJakSu0iiBypMIViQIvlGEA2rztA3HOBDY WWqadcavfeHn1vUj
qV5bpND5S3EEcVxLHGY5JHTywqouNjA7iW+8Wap9P8T3146yW0lqdLi0K21N rjUn8qVzKs2BIUGx
B+7VmcAhcMArbgUVn0YG5D4Y0qGzuLYwzzLcbfMluLqWab5TlMSuxddrZZcE bWJYYJJqey0TT9Pi
jSG33MkpnEs7tNKZCpTeZHJYtsOzJOQvy9OK5FPGmrLbX8McUF1e28uniN59 PuNORxc3BhKlJdzj
AUnzBkfN907SCahqGr3eo6TZ5sX1Ow19rX7R5bxwvu06WXf5e5mG1Zcbd/zF PvJu+V8surA7qSCG
Z4nliR3hffEzKCUbaVyvodrMMjsSO9SVmeH9Rm1TSfPuFQTx3E9tIYwQrtDM 8RYAklQxTdtycZxk
4ydOs3poAUUUUDCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigDG8Xf8iXr
v/YPuP8A0W1FHi7/AJEvXf8AsH3H/otqK7cLsz6LJf4cvUyvC/iKyg8JaNE8 GplksYFJTS7l1JEa
jhhGQR7g4Nav/CT2H/Pvq3/gouv/AI3R4R/5EvQv+wfb/wDotat6tq1to1kb m53MS2yKKMAvM56I
oOMngnnAABJIAJHOo88+WKu2eFXnSjKUpaJX6/8AAKn/AAk9h/z76t/4KLr/ AON0f8JPYf8APvq3
/gouv/jdSv4j0iPSodSe/iW1nby4Sc75JOf3apjc0mVYeWBuyCMZGKWTX7G2 0uLUL5nsY532Qx3K
7ZZW52qsfLF2AyI8b+cFQ2QJcbOzTuSpU2rpP7/+AQ/8JPYf8++rf+Ci6/8A jdH/AAk9h/z76t/4
KLr/AON05ddt/Nt5LiX7DDJa3F0YryIxv5UbIDKWJxGoDglXAb5xnaVYUWni fSryeGBJp4riaXyU
gubWWCQsUdwdkihgpWKTDEbSUYA5GKVl2C9Ps/v/AOAN/wCEnsP+ffVv/BRd f/G6P+EnsP8An31b
/wAFF1/8bpsvi7RIThrtyFeRZWS3kdYNkjRs0rBSIkDRuN74U7GIJCkixN4h 0y31QadJO4n3rGzC
CQxRu2NqPKF2I5yuFZgTvTA+ZclvIL0+z+//AIBD/wAJPYf8++rf+Ci6/wDj dH/CT2H/AD76t/4K
Lr/43VWz8VwLp3n6gH89r28t44bO1lndkhuHi3bEDNgBU3NjALDpuAq5deKN Gs/JMl5vjmiWcSwR
PNGkTfdlkdAVjjOCQ7kKQrHOFOHbyC9Ps/v/AOAN/wCEnsP+ffVv/BRdf/G6 P+EnsP8An31b/wAF
F1/8bqabxDplvqg06SdxPvWNmEEhijdsbUeULsRzlcKzAnemB8y5IdfsZNUO mTM9pfF2WKC5XYZw
uTuiP3ZRtAY7CSoI3BTxSsuwXp9n9/8AwCH/AISew/599W/8FF1/8bo/4Sew /wCffVv/AAUXX/xu
podfsZNUOmTM9pfF2WKC5XYZwuTuiP3ZRtAY7CSoI3BTxU+o6naaVbrNdu4D uERIonlkkbBOERAW
Y4BOADgKT0BNFl2C9Ps/v/4BS/4Sew/599W/8FF1/wDG6P8AhJ7D/n31b/wU XX/xunTeJ9Khs7e5
E08y3G7y4re1lmm+U4fMSKXXa2FbIG1iFOCQKjufF+g2twkEmoozvbx3QMSN IogcsBMWUECL5Tly
dq8biNwyW8gvT7P7/wDgDv8AhJ7D/n31b/wUXX/xuj/hJ7D/AJ99W/8ABRdf /G6afF+grYT3z6ik
dpA8ayTSoyLtkYJHICQMxMx4kGUOCQ2AcEHi7RLi4it0u3Wd3CNHLbyRtCzH CCYMoMJc42CTbvyN
uc07eQXp9n9//AHf8JPYf8++rf8Agouv/jdH/CT2H/Pvq3/gouv/AI3U0PiH TLjVDp0c7mfe0asY
JBFI653IkpXY7jDZVWJGx8j5Wxnp400S/wBHu77T9UQRxWT3iXEltI0ZjVcs 6jCmUISA6ocqTtO1
jii3kF6fZ/f/AMAtf8JPYf8APvq3/gouv/jdH/CT2H/Pvq3/AIKLr/43Wje3 tvp1nJdXUmyFMAkK
WJJIAVVGSzEkAKASSQACTVD/AISfSv7P+2+dPt83yPJ+yy/aPMxu2eRt8zdt +fG3O35vu80rLsF6
fZ/f/wAAb/wk9h/z76t/4KLr/wCN0f8ACT2H/Pvq3/gouv8A43VHTPGVlcaN Hf3EvnefdXcduun2
8lyZYop3jWQLGHYrtCZb7uXHTcBWhrus/YfB2pa5p7wXHkafLd2753xybYy6 nIPKnA6Hkd6dtbWC
9Ps/v/4BS1PU9F1iwayvbTWWgZ0f93pt7EwZGDqQyIGBDKDkHtVezm8O2dvd QLYazcJdJ5c5vdPv
rppUwRsZpUYlPmb5c4+ZuPmObsV7q+malY2usXFjeR6hK0EMlnavAYpFjeT5 laR9ylY35BBBAGGD
ErX1Lx1pVnoep6jbefdNZWr3Ucf2eVBcqv8AFExTDx5K5kTcqhgxOCCXbogv T7P7/wDgGcLLwkIL
qP8As7XS135JuJjaagZpDC5eJjLt37lY8NnOAozhQBYvB4X1DUFvrrS9WknW WOcf8S29CCWMqUl2
BNvmDaq78bio2k7eK2brxPpVl5P2maePzYlnbNrKfIjPR5vl/crw3Mm0fK39 1sV5b3V9T1K+tdHu
LGzj0+VYJpLy1ecyyNGknyqsibVCyJySSSSMKFBYv6hen2f3/wDAM69/4RvU LyS5uLLXS0uPOijs
7+OGfAA/exKoSTKgKd4OVAU5AAq5JqWhTXF3PNp2pSvd2621wJNIu2WSJS5C lTHjH7x+3O7nPFXf
+Egt7WXT7PVV+x6nfbxFaKTKZCjKrFCo+ZfnVskAhCWYLtbbGni7RHt7u4+1 usFrbvdNI9vIqyQo
MtJESoEqAY+aPcPmX+8Mr7wvT7P7/wDgHL6jpnh2XTp7ez03Umku7iya8e80 6+nNzFBcLIVkZ42L
nbvUZzxtUnaBjXtpvDtoLby7DWWe3uDcpLLp99JIZTG0ZZ3ZCznYxX5icDAH 3RiXU/Genw6NJqFl
dwGOC6tI5pLhWjQQyzpGZQW27oypcrIModpwSAa29O1O01W3aa0dyEco6SxP FJG2AcOjgMpwQcED
IYHoQabbtrcL0+z+/wD4Bl2es6Rp8DQ2tnq0cbSyTEf2VdnLyOzueY+7Mx9s 8cVP/wAJPYf8++rf
+Ci6/wDjdbNFTdBen2f3/wDAMb/hJ7D/AJ99W/8ABRdf/G6P+EnsP+ffVv8A wUXX/wAbrZopaBen
2f3/APAMb/hJ7D/n31b/AMFF1/8AG6P+EnsP+ffVv/BRdf8AxutmijQL0+z+ /wD4Bjf8JPYf8++r
f+Ci6/8AjdH/AAk9h/z76t/4KLr/AON1s0UaBen2f3/8Axv+EnsP+ffVv/BR df8Axuj/AISew/59
9W/8FF1/8brZoo0C9Ps/v/4Bjf8ACT2H/Pvq3/gouv8A43R/wk9h/wA++rf+ Ci6/+N1s0UaBen2f
3/8AAMb/AISew/599W/8FF1/8bo/4Sew/wCffVv/AAUXX/xutmijQL0+z+// AIBjf8JPYf8APvq3
/gouv/jdH/CT2H/Pvq3/AIKLr/43WzRRoF6fZ/f/AMAxv+EnsP8An31b/wAF F1/8bo/4Sew/599W
/wDBRdf/AButmijQL0+z+/8A4Bjf8JPYf8++rf8Agouv/jdH/CT2H/Pvq3/g ouv/AI3WzRRoF6fZ
/f8A8Axv+EnsP+ffVv8AwUXX/wAbo/4Sew/599W/8FF1/wDG62aKNAvT7P7/ APgGN/wk9h/z76t/
4KLr/wCN0f8ACT2H/Pvq3/gouv8A43WzRRoF6fZ/f/wDkfFHiKyn8JazEkGp hnsZ1BfS7lFBMbDl
jGAB7k4FFavi7/kS9d/7B9x/6Laiu3DWs7H0GTcvJK3cPCP/ACJehf8AYPt/ /Ra1ynizTvE48Ufa
LCzi1KK8jEFm7sUXT2wC4k6/u22l9yjcSoQ5/d1reF/EVlB4S0aJ4NTLJYwK Sml3LqSI1HDCMgj3
Bwa1f+EnsP8An31b/wAFF1/8bqcNiKmGqupGN990fN4/ALFKVKrFuLfn3KGm eB7PT9Kjha9vJNSE
jTvqccpjmaZgoYgD5dnyJ+6IZMRpuVsVozaF9ss7db29na/ttwh1C3PkTAE8 Z2/K3RCykeWzKCUx
hQ3/AISew/599W/8FF1/8bo/4Sew/wCffVv/AAUXX/xusKk6lSTnPVsqOHlC KjGNkvIxZo7u68Uw
WFtrKS6lZ6RfQS3qRIzWskr25gaWMHaHKqWwdofYxAA4FS28F6sq6zcSSwJc XMVm9lFJqFxdiKe2
lklQSSy5Zoy5QnaF4LADI3t0v/CT2H/Pvq3/AIKLr/43R/wk9h/z76t/4KLr /wCN0ry6Ir2NT+V/
cc14j8DaleeHo9C0q+/0KLShYQfaLyaHymVCu51hwJ942KQ+FTbuCvuZTvw6 fq9jr1/JaCxay1G6
S6mmmkfzItsUcbIsYXDZEQwxdcF/uttw03/CT2H/AD76t/4KLr/43R/wk9h/ z76t/wCCi6/+N0Xl
tYPY1P5X9xiz+F9YOnRWsF4iob29mkRLue3A864aSOXfFtdyisQYsqrFz8w2 qagHhHWLfR9EtLR7
WK8tNNgs3vYryeBoZI1wH2KNt0gJLLHIFA+YZxIcdD/wk9h/z76t/wCCi6/+ N0f8JPYf8++rf+Ci
6/8AjdF59g9jU/lf3FG80PUn8TrfWZgtoWljkkuI7uZGKqFDo9sMxTMyqU81 iGVWXAzGpOh/YX2n
UPtmp3s955cvmW9tny7eHByvyD/WMMIcyFsMu5AnQN/4Sew/599W/wDBRdf/ ABuj/hJ7D/n31b/w
UXX/AMbpe92D2NT+V/cO/sL7TqH2zU72e88uXzLe2z5dvDg5X5B/rGGEOZC2 GXcgToDXtPvLttNu
7AQSXOn3RuUhnkMaS5ikiKlwrFcCUtnac7ccZyG/8JPYf8++rf8Agouv/jdH /CT2H/Pvq3/gouv/
AI3StLsHsqn8r+4q3VhrpvdN1iKLTp9Qgt7i3ltmneGILK8b5WTY5Yr5Sryo 3ZLfJ92sz/hCbyDw
9qmlQ3UEnn+G7fRoJXBTMkaTqXYAHap81TwSevoM7v8Awk9h/wA++rf+Ci6/ +N0f8JPYf8++rf8A
gouv/jdP3l0D2NT+V/cUdX8OXmoaxdXcUkCxy/2XtDsQR9mu3mkzx3VgB6nr gc0XXhy8n/tbbJAP
tmtWWoR5Y8Rw/ZdwPH3j5D47cryOcXv+EnsP+ffVv/BRdf8Axuj/AISew/59 9W/8FF1/8bo97sHs
an8r+4zbPw9qMOqWccptf7PsdSutSinWVjLK0/n/ALto9oCBftDfMHbOwfKN 3y4HiDQ5tI8DWVvd
XVr59v4YutFSNZDuubqSKEIkQIBckwvgfeORgdcdj/wk9h/z76t/4KLr/wCN 0f8ACT2H/Pvq3/go
uv8A43TTle9g9jU/lf3E2r2dzqWl3lr9ntWJdTAJJXAcLtbJZQGifcCFddxQ hXGSNtYcWga3FY2M
3mQS3djqDXdvZz3ssqKjQPCYzcuhkbmR5NzIcZ2AYAYa3/CT2H/Pvq3/AIKL r/43R/wk9h/z76t/
4KLr/wCN0lzLSwexqfyv7jFsNB13TRZahFDp02oRPqAltWu3SILdXInysvlE krsVcFBncTkYwbk3
hy8X4fXHhWGSB9uijT4Ll2K75PKaMllAO1eFPBY8kY4Gb3/CT2H/AD76t/4K Lr/43R/wk9h/z76t
/wCCi6/+N0e92D2NT+V/cQxWWr6nqVjdaxb2NnHp8rTwx2d085lkaN4/mZo0 2qFkfgAkkg5UKQ3M
TeBteuv7Sa5voJZrjRb3TRJLeTyebNL5eJtrZSFWKHMca4TAwXGAvW/8JPYf 8++rf+Ci6/8AjdH/
AAk9h/z76t/4KLr/AON005LZB7Gp/K/uMLxj4Z17xNp8tvFcwQ/adPMJi+3T xx28xDbjiML9oV8q
v7zAQJuCtuZDf1LRLwT6kttpmlatZapKk9za6nMY1SRURBjEUgdSIkOCAVZS ctuAW9/wk9h/z76t
/wCCi6/+N0f8JPYf8++rf+Ci6/8AjdHvdg9jU/lf3FHRfCn9h32lNbvB9mtL W9jkSNPLHmXE8Uv7
tBkLGCjgDJIG0Zbk1ymt+F9YsdH1/VtRvEuBH4d1C1djdzytNI6o3nBH+SEN 5bZijAC8AM4I2dz/
AMJPYf8APvq3/gouv/jdH/CT2H/Pvq3/AIKLr/43QnJO9g9jU/lf3GTP4c1f ULi5u72SxW5kl01A
IWfY8drdGYycjKM4dgI/mC4HztnI3NL06ax1HW7iVkKX16txEFJyFFvDFhuO u6NumeCPpUP/AAk9
h/z76t/4KLr/AON0f8JPYf8APvq3/gouv/jdJ83YPY1P5X9xs0Vjf8JPYf8A Pvq3/gouv/jdH/CT
2H/Pvq3/AIKLr/43U8r7B7Kp/K/uNmisb/hJ7D/n31b/AMFF1/8AG6P+EnsP +ffVv/BRdf8Axujl
fYPZVP5X9xs0Vjf8JPYf8++rf+Ci6/8AjdH/AAk9h/z76t/4KLr/AON0cr7B 7Kp/K/uNmisb/hJ7
D/n31b/wUXX/AMbo/wCEnsP+ffVv/BRdf/G6OV9g9lU/lf3GzRWN/wAJPYf8 ++rf+Ci6/wDjdH/C
T2H/AD76t/4KLr/43RyvsHsqn8r+42aKxv8AhJ7D/n31b/wUXX/xuj/hJ7D/ AJ99W/8ABRdf/G6O
V9g9lU/lf3GzRWN/wk9h/wA++rf+Ci6/+N0f8JPYf8++rf8Agouv/jdHK+we yqfyv7jZorG/4Sew
/wCffVv/AAUXX/xuj/hJ7D/n31b/AMFF1/8AG6OV9g9lU/lf3GzRWN/wk9h/ z76t/wCCi6/+N0f8
JPYf8++rf+Ci6/8AjdHK+weyqfyv7jZorG/4Sew/599W/wDBRdf/ABuj/hJ7 D/n31b/wUXX/AMbo
5X2D2VT+V/cbNFY3/CT2H/Pvq3/gouv/AI3R/wAJPYf8++rf+Ci6/wDjdHK+ weyqfyv7jZorG/4S
ew/599W/8FF1/wDG6P8AhJ7D/n31b/wUXX/xujlfYPZVP5X9weLv+RL13/sH 3H/otqKyvFHiKyn8
JazEkGphnsZ1BfS7lFBMbDljGAB7k4FFduGTSdz6DJoyjCV1bU1fCP8AyJeh f9g+3/8ARa1s1jeE
f+RL0L/sH2//AKLWvO/iTfa/YeKrKaaWS205WH9l3Nu3yrNs+YSA8eYfnxkF SmQOrgxhcK8VW9kp
JN33PHp0HiMS6SaTbe567RXG+HPH9pqnh23v72C5Sd5HiC2tpLN9o2bd0sSI rMYssAWwQrHbuPBO
2/inQ0vFtTqUHmNai9BBJT7OQ5ExcfKI/kbLE4GVBOWXOFSlKnJwktUcsouM nF7o16KyIfE+lTWd
xcmaeFbfb5kVxaywzfMcJiJ1DtubKrgHcwKjJBFU5vGVgt1o8MEV1N/aN61m wNrMj27CJpP3iFMo
ThOG2/K2/wC6pNRyvsSdHRWZD4h0y41Q6dHO5n3tGrGCQRSOudyJKV2O4w2V ViRsfI+Vsc5puu+I
/wDhHNF8QX91pU1tqH2LfaQWMkTr9peNBiQzMPlMgP3Pm244zkNRYHbUVmQ+ IdMuNUOnRzuZ97Rq
xgkEUjrnciSldjuMNlVYkbHyPlbGXqXjrSrPQ9T1G28+6aytXuo4/s8qC5Vf 4omKYePJXMiblUMG
JwQSuVgdPRWBPqt/qWof2foskFrJHaxXks9/aSP8kpdUQRbkYN+7ctuI24A2 ksdufceMH06S0g1D
yEkj1U6beyIjFZD9kadDCoJbc+YgE+Y7mKDccMXysDr6KyF8QafJLbyjUYI7 aS1uLhhLGyELEyK7
MzECPYWKsrDdk9trCiHxPpU1ncXJmnhW32+ZFcWssM3zHCYidQ7bmyq4B3MC oyQRSswNeiucm8ZW
C3WjwwRXU39o3rWbA2syPbsImk/eIUyhOE4bb8rb/uqTR/wllpbvc3N/MkGn tetp9iRG7vcTRq3m
YAyc70eNU25Jj4LeYop8rA6OisibxPpUNnb3ImnmW43eXFb2ss03ynD5iRS6 7WwrZA2sQpwSBUdz
4v0G1uEgk1FGd7eO6BiRpFEDlgJiyggRfKcuTtXjcRuGVyvsBt0VkQ+KNGns 7i6jvMw2+0sfKcFw
5xG0a4zIrnhGQMHPCljR/wAJPpX9n/bfOn2+b5Hk/ZZftHmY3bPI2+Zu2/Pj bnb833eaOVga9FYk
/i7RLdLNnu3Z7xJGt4Y7eSSWTy2VZFEaqW3qW+ZMblw2QNrYkuvFGjWfkmS8 3xzRLOJYInmjSJvu
yyOgKxxnBIdyFIVjnCnByvsBr0VmTeIdMt9UGnSTuJ96xswgkMUbtjajyhdi OcrhWYE70wPmXJD4
h0y41Q6dHO5n3tGrGCQRSOudyJKV2O4w2VViRsfI+VsFmBp0VzEXiO8k8C6H rhjg+03/APZ3moFO
wfaJYkfaM54EjYyT0Gc1Qk13xHHoOr+IftWlGy0+W+P2P7DJ5kkdvLIm3zfO wGYR/e2EAn7pxiny
sDtqKzNL1Ga+1HW7eVUCWN6tvEVByVNvDLlueu6RumOAPrV+GZZ0LoHADsnz xshyrFTwQDjI4PQj
BGQQaloCSiuMXxBrV7e6jHp97o/2yzeYjQpIj9rkSNyqkyGZQglAVlcx4USr 94cnQj8aaYr6418X
sbbSb2O0kuLiKREYuse1ssoAG6THUgAK5IVgarlYHR0VgN4t0q1SSW7vtiNd JbQxm0lSRZGt1mWI
qQWaQqSQAAcsqY3jmxN4o0aCzt7qS8xDcbip8pyUCHEjSLjMaoeHZwoQ8MVN LlYGvRVexvbfUtPt
r+0k8y2uYlmhfaRuRgCpweRkEdayJvFlla65rGn3Uc8MOl6el/NcmCQpsPmb sHbg4CAjBO7LADKN
gs2Bv0Vmaj4i0nSTci/vUtxbJA8zSAhY1mkMcZLYwAWVhntjJwOaj/4SfSv7 P+2+dPt83yPJ+yy/
aPMxu2eRt8zdt+fG3O35vu80WYGvRXKaj4xW01LSXt40n0m5t55buY7kktxH LBEWIP3QjSt5gbaU
CsTgoVNxPEsVvc6yt+dsdnqCWlukELyyy5t4pcBFDM7fO5+UcKuSMAmnysDf orEn8XaJbpZs927P
eJI1vDHbySSyeWyrIojVS29S3zJjcuGyBtbElr4p0O985rfUoHhhiac3GSIW jX77pIfkdVJAYqSF
JAbBNLlfYDXorP0zWrLVvNFq06yRYLxXNtJbyKDnDbJFVtpwwDYwSrAHIOLk cyyvKihwYn2NujZQ
TtDfKSMMMMORkZyOoICsBJRXKXOtajceJrnSLXVtH0yeNwlva31s0012vlrI ZYwJozsBLJwG5ibn
qFkt/GUSXl/a6tYz6fJp2lQ6jeEo8iRbg5kQOE2vs2cFSd3zADKNiuVgdPRW A3i7RoluLybVYE0+
OK3fe8LqFEsrxJIZD8rRuy8EDAA3birAix/wk+lf2f8AbfOn2+b5Hk/ZZftH mY3bPI2+Zu2/Pjbn
b833eaXKwNeisC18TW97qGnyWc8F1pGo+dBb3MWf+PmItuXP8SsqSEMAAPJP Lb1xtmZVuEgIfe6M
4IjYrgEA5bGAfmGATk84zg4GmgJKKwNZvdX/AOEh07StKuLG2+0WtzcyS3Vq 8/8Aq3hUKAsiYz5p
OcnoKLfxLFb2t2mqnbd2V0LKQWsLyfaJDGsoMUahnOY3DFcErh+WC7ycrA36 KwIvFllc+IdN0q2j
nlW+tZ7hZxBIFjMTqpRvlwrZLhgxBRlCsAXUUSeMtGXT9QvY5Z5Y7K1kvCBb unnxIMs8LOFWVenz
ISvzLzhhk5WBv0Vzkt/rukmC81aXTprOe4ht2t7SB1kgaWRY0IkZyJQGdQfk jyCWGCNhNA8WWmqT
S2c8yLfJe3dsFSNwn7qaRVTecr5vloHKZ3Yy20LRyu1wOjorAj8W6VFp+nzX N9532m1juWngtJfL
WNhkSyDDeRGcMQZCAArcnaxFybxDplvqg06SdxPvWNmEEhijdsbUeULsRzlc KzAnemB8y5OVgQ+L
v+RL13/sH3H/AKLaisi61+LxH8OfEV7FbzwLHDf22yaJ0J8vegbDqp5ABIx8 pJU8qaK7MMrJpn0W
S/w5epr+Ef8AkS9C/wCwfb/+i1q9qemWWs6bPp2o20dzaTrtkiccEf0IOCCO QQCOao+Ef+RL0L/s
H2//AKLWvO/iTfa/YeKrKaaWS205WH9l3Nu3yrNs+YSA8eYfnxkFSmQOrgrC YaWJr+zjJRfS55NO
g8RifZJpNt7nfahpV5bajpt/olrYv9itZrNbOaU28YjkMRBVlR8bfJAC7cYb qMYNe+8M3mp/26l1
dwL/AGposWnGaKMjbIPtG99hJwv75SBuJ4IJ7mp4c8f2mqeHbe/vYLlJ3keI La2ks32jZt3SxIis
xiywBbBCsdu48E7b+KdDS8W1OpQeY1qL0EElPs5DkTFx8oj+RssTgZUE5Zc4 1ITpycZbo5ZRcZOL
3Rh2fhjU4LDVHj2Wd9dpDGMardXbPHGzMUM8uGjDB3QFEym4uCxwFg0vwjrG nT29wz2srrrv9ouj
3k8hWFrP7OV8yQMzupJxnAYKPuZ2r0cPifSprO4uTNPCtvt8yK4tZYZvmOEx E6h23NlVwDuYFRkg
iqc3jKwW60eGCK6m/tG9azYG1mR7dhE0n7xCmUJwnDbflbf91Sam8iTP0vwf cWPiQXcqpJbxXtze
xTtqFy53TGQ7VtsiKMjzmXeC2QCdoL5Vmi/D+z0O18NXVpp2lRaxpsSQ3c8U IX7Qpj2Snftzuzhw
xG47SuVEjGujh8Q6ZcaodOjncz72jVjBIIpHXO5ElK7HcYbKqxI2PkfK2Oc0 3XfEf/COaL4gv7rS
prbUPsW+0gsZInX7S8aDEhmYfKZAfufNtxxnILyYFuz8PajDqlnHKbX+z7HU rrUop1lYyytP5/7t
o9oCBftDfMHbOwfKN3y5h8GavN4ebSpXsY/segXGi2cqzO32jzEjUSyDYPKx 5KnaDJ988/L83Vw+
IdMuNUOnRzuZ97RqxgkEUjrnciSldjuMNlVYkbHyPlbGXqXjrSrPQ9T1G28+ 6aytXuo4/s8qC5Vf
4omKYePJXMiblUMGJwQSJyvsBYnstXg1D+2LC3sZb25tYra7tJ7p0jXyy7K0 cojJODK4IKfMCp+X
aQ2fceH9XSS01O2Sxm1P+1TqNzBJcPFCM2jWwRHEbMdq7OSvzEMcLkKNCfVb /UtQ/s/RZILWSO1i
vJZ7+0kf5JS6ogi3Iwb925bcRtwBtJY7c+48YPp0lpBqHkJJHqp029kRGKyH 7I06GFQS258xAJ8x
3MUG44YpXAyG0L+0L6Xw/wDbYDcy6Vq6XzW580WUl7PDKisOD0Z9u7aXCEgD kDQg8I332K9keKCC
9kls5Y1fU7m93/ZpvOVWmm5VWOVwqfLkt8+do318QafJLbyjUYI7aS1uLhhL GyELEyK7MzECPYWK
srDdk9trCiHxPpU1ncXJmnhW32+ZFcWssM3zHCYidQ7bmyq4B3MCoyQRT5pA U7mw12/l0W8uItOS
ez1L7RJBHO5VITBJCQJCmXfMm/7qD+HtuOfpenTPf29kWRJ9I126v5lckeZD cLctGycZIzcBSTgb
opQCdvOhN4ysFutHhgiupv7RvWs2BtZke3YRNJ+8QplCcJw235W3/dUmq7eM DHrVrbtau9le6k+m
20kUMjndEjmWRiAQB5qmMKQvCPJuK/dPetsBXn8L6wdOitYLxFQ3t7NIiXc9 uB51w0kcu+La7lFY
gxZVWLn5htU1BB4L1GLwtf6Y09r59x4YttHRg7bRNGk6sx+XOzMq4OM8Hj16 qPW9Pl+zbLjP2m6l
s4vkb5povM3r04x5MnJ4O3gnIzU07xfoOq27XNpqKG3Fubnz5EaKNogBuZWc AMEyA+CdhOG2nilz
SAz/ABB4WudYu9UmSZFS4t7ARKJXjYvbXEkxUuvKBtyqHXJXk44ANePwrdxa FLGtpam8lvftbRNq
l2zg+WIsreE+ar7VHzBQNuY9uCXPR6ZrVlq3mi1adZIsF4rm2kt5FBzhtkiq 204YBsYJVgDkHFyO
ZZXlRQ4MT7G3RsoJ2hvlJGGGGHIyM5HUEA5pLQDiWttd0/xF4eiiktbu+j03 UC8dzM+0xma22xib
aWJQFR5jIxfYcgF8rX1zwJrF14Wt9BstSR4IdIXT0eS5ntlSRUKlzHEcSiQb V2ucR7cgPuZTr3tz
4pTxTb6Zb6no6QXVvc3MbSaZKzRrG8ShTi4AYkTfewPu9OeNuPW9Pl+zbLjP 2m6ls4vkb5povM3r
04x5MnJ4O3gnIy+ZqzQFCHT9Xsdev5LQWLWWo3SXU000j+ZFtijjZFjC4bIi GGLrgv8AdbbhsvS/
B9xY+JBdyqklvFe3N7FO2oXLndMZDtW2yIoyPOZd4LZAJ2gvldjTvF+g6rbt c2moobcW5ufPkRoo
2iAG5lZwAwTID4J2E4baeKr3niuAaXPqNmH8uwdJb+C7tZbeVLY53SBZArYU BnB2sH8p0Hzcqve2
Ar23h7UUsNP0CY2o0bTnt2huklY3EywMrxIyFdqnKJucM24KcKm8bKg+H9ml sb1dO0o69Fqs2ow3
bQgl83DyKjvtzzG2zOG2HDKCUWuymmWBA7hyC6p8kbOcswUcAE4yeT0AyTgA mszxNqF5pujCawMC
3Ml1a2yNPGXRfNnjiLFQyk4Dk4yOlCk+gEml6dNY6jrdxKyFL69W4iCk5Ci3 hiw3HXdG3TPBH0q/
CZmQmeNEfewARyw27jtOSByVwSOxJGTjJxINWvNM1D7Br91YvvtZb1LyCI28 aRxFBIJFd3xjzEIb
dggtkLtBavqPjnTbLTftkcF9Kwure3e3exnjmUSyBA5jMe/bjdg7cMy7Ad3F KzYFfWtH1/VrO40y
aDSriFpZHtdTlnZJ7MsW2SJEIiPMiDYUiQFtgO5SxxJc+HtRnuNZUG1EF3q9 hqML+a27bCbfzFZd
uAcW524Jzu524rYm8Q6Zb6oNOkncT71jZhBIYo3bG1HlC7Ec5XCswJ3pgfMu c+K/13VjPeaTLp0N
nBcTW6293A7STtFI0bkyK4EQLIwHySYADHJOwNNgR/8ACOXn/CRf2h5kHk/2 1/aGNx3eX/Z/2bHT
72/n02988VkXcD+FbixvbjU9KtJjLqaLJfyNHAqXN0s4bfgBpFCr+6JXf8+G AQmr9r490+XUE+0S
fZ7K40q01G33RM0irMZd7SbchI0CR7nOFUty3IrYl1+ys2vjc3XmeRdLbCGC 1keUOYkk2BV3NK21
i+UHC9R8jGn7y3Az/CMl5ZeHvC2lTafOn/ElRp5XUr5EkaQqI2BHDHexwSD+ 7PB5xcNtNYeKdR1q
4ktY9Lk02GOSWSYq0TQvM5JBXbs2y53bhjb05yJJvE+lQ2dvciaeZbjd5cVv ayzTfKcPmJFLrtbC
tkDaxCnBIFR6f4mtNS8SXWkWyPIkNlBeJdKjmKVZS+Nr7dpGFUghjuywH3Gw tdXYDjLbTPsPw4X7
BNhp9asVtppl8xGjiu7e3t5MAruVooInJBAbcSCAQBsXvhPUtQt5LybyFv31 UaibSC/mhQYtRbbB
cookHA35Cc/cxj5q7aijnYWOU03wmbabThcQ2rWkdlfQXNuZJJwzXM0UhBaX JkHyOGZsbic7QDtW
pD4T1uy0y/to9S+1tLqCTgtdS20lzAltHCqyToC6Sbow7Omd5XGFDkL21FLn YHIeGfCt/otxpj3V
zBP9ki1JJHRpCXNxdRzIRvLN91DncxOT1bk1B/whN5P4e0vSprqCPyPDdxo0 8qAviSRIFDqCBuUe
Ux5IPT1OO2oo53e4HOeGNCuNLuL27u4EhnuEjiwNSub9iqFyMyzYIGZDhQox yctuwu/GZi8oljRU
D4iKuWLLtHLDA2nduGBngA55wJKKTd3cDnNXstauXvLVtN0fWdLuXV1g1Gcx CIBV/d7RDIHG5S4Y
nOWxj5QTmXPhLV30/VbD7ZBd/bfDcWlfbLiVxI9xGJhvdcN8redkncSCOhzm u2opqTQHMav4cvNQ
1i6u4pIFjl/svaHYgj7NdvNJnjurAD1PXA5qhrdk+i3c+uTXVjEo1pb6D7VK 0UJBsRbFZZQjCLnc
QSCCdi8FxjtqKFJgee+HBNeHw/bmRJp7fUtR1aaeJCsTQvJcxxuoyxAlM4eP JIZEchjt574mb7Qi
rGhgKMXcuQwbI2gLjBBG7JyMYHBzxJRSk7sDA1my1f8A4SHTtV0q3sbn7Pa3 NtJFdXTwf6x4WDAr
G+ceURjA6iqdz4f1V9NuZIp0F9fXovL23iupLaNwIliESToPMQKEjbeBlyhG FVyq9XRTUmgOM8O+
FtV0S70dpZrW5S2TUo7mTzZAxFxcLMjKH3Fj8gDBnyN2dzY5qW3gbUrrULht ZvvNt7jSrrTZ5EvJ
pJJWlMWZlWTMcO4I37tF2oQOXGAvfUUc7A5yWw13VjBZ6tFp0NnBcQ3DXFpO 7STtFIsiARsgEQLI
pPzyYAKjJO8ZkWm3mkSwXGtXGlWOkabqt3qKXjXhy/ntOFR1ZFWP/j56725U DHzZHbUUcwHmNp4I
vtQ8PaM0kH+v0Cz067t7i+ubTyNiNuLxxY8//WkGNymNmNw3HHXw6fq9jr1/ JaCxay1G6S6mmmkf
zItsUcbIsYXDZEQwxdcF/uttw2/RQ5tgcfd6feaZ8PvFFtdiD5hqU8LQyFt0 crSyruBUbWG8ggZH
Gc84BWv4u/5EvXf+wfcf+i2orrwzumz6LJf4cvUPCP8AyJehf9g+3/8ARa1e 1PTLLWdNn07UbaO5
tJ12yROOCP6EHBBHIIBHNUfCP/Il6F/2D7f/ANFrXnfxJvtfsPFVlNNLJbac rD+y7m3b5Vm2fMJA
ePMPz4yCpTIHVwVhMNLE1/Zxkovpc8mnQeIxPsk0m29zvtQ0q8ttR02/0S1s X+xWs1mtnNKbeMRy
GIgqyo+NvkgBduMN1GMGvfeGbzU/7dS6u4F/tTRYtOM0UZG2QfaN77CThf3y kDcTwQT3NTw58QLH
U/DtvqGpbrV3keIusLmKQJt3zqQDiAbgGkb5UPBY8E67+LtES3tLj7W7QXVu l0siW8jLHC4yskpC
kRIRn5pNo+Vv7pxjOE4ScZLVHLKLjJxe6Mez8ManBYao8eyzvrtIYxjVbq7Z 442Zihnlw0YYO6Ao
mU3FwWOAsGl+EdY06e3uGe1lddd/tF0e8nkKwtZ/ZyvmSBmd1JOM4DBR9zO1 deHW73XLrWLHSGSx
uNLvVt3lvrGWRJVMSuSo3R87mxwzcAN0dTUfhjWr+60XR7/XLyxMmsxRPaQ2 tnJFsdoWmZCxkfd8
qnn5funuQKm8rMkp6X4PuLHxILuVUkt4r25vYp21C5c7pjIdq22RFGR5zLvB bIBO0F8qzRfh/Z6H
a+Grq007SotY02JIbueKEL9oUx7JTv253Zw4YjcdpXKiRjW3ceLtEtjCr3bt JO86QxRW8kkkrQSC
OUIiqWYqx6AHgFh8oJEl14o0az8kyXm+OaJZxLBE80aRN92WR0BWOM4JDuQp Csc4U4V5gZdn4e1G
HVLOOU2v9n2OpXWpRTrKxllafz/3bR7QEC/aG+YO2dg+UbvlzD4M1ebw82lS vYx/Y9AuNFs5Vmdv
tHmJGolkGweVjyVO0GT755+X5t+68TW9lqGoSXk8FrpGneTBcXMuf+PmUrtX P8KqrxksQQfOHK7G
zY/4SfSv7P8AtvnT7fN8jyfssv2jzMbtnkbfM3bfnxtzt+b7vNO8twK89lq8 Gof2xYW9jLe3NrFb
XdpPdOka+WXZWjlEZJwZXBBT5gVPy7SGz7jw/q6SWmp2yWM2p/2qdRuYJLh4 oRm0a2CI4jZjtXZy
V+YhjhchRqT+LtEt0s2e7dnvEka3hjt5JJZPLZVkURqpbepb5kxuXDZA2tiS 18U6He+c1vqUDwwx
NObjJELRr990kPyOqkgMVJCkgNgml73YDkG0L+0L6Xw/9tgNzLpWrpfNbnzR ZSXs8MqKw4PRn27t
pcISAOQNCDwjffYr2R4oIL2SWzljV9Tub3f9mm85VaablVY5XCp8uS3z52jf h8T6VNZ3FyZp4Vt9
vmRXFrLDN8xwmInUO25squAdzAqMkEVHJ4u0SGyiuprt4kluPsqRyW8iS+ds LiMxFd4cqMqpALZX
Gdy5fNICvc2Gu38ui3lxFpyT2epfaJII53KpCYJISBIUy75k3/dQfw9txzLH T7xry2s4RB9p0jX7
i+nSaQoJLe5FwyvHhSWwLjHIALxSLnjNb83ifSobO3uRNPMtxu8uK3tZZpvl OHzEil12thWyBtYh
TgkCi68UaNZ+SZLzfHNEs4lgieaNIm+7LI6ArHGcEh3IUhWOcKcK77AY+j2t ncfEPWtQtJ/PjhiC
tJG4ZFuJNkc0RI6Mi2dudvUeY2eGXGJ4c8N6jr/gbSkvbi1ggfww2nW8sIZm ZbiKE7nQ4ClBGBwx
35J+T7tdvN4h0y31QadJO4n3rGzCCQxRu2NqPKF2I5yuFZgTvTA+Zc5cviO8 j8C65rgjg+02H9o+
UhU7D9nllRNwznkRrnBHU4xTuwJPDGhXGl3F7d3cCQz3CRxYGpXN+xVC5GZZ sEDMhwoUY5OW3YXf
jMxeUSxoqB8RFXLFl2jlhgbTu3DAzwAc84HOJdeI9S1nWYbC/wBKtbawuktk WfT5JnbMEUpYsJ0H
WUjGO1SeG/Ek2v3CM1ukEEukWOoogJZlaczblLcAgCNccDv+Cab1A0J9Oml8 U2GpqyeRb2VzbupJ
3FpHgZSOMYxE2ee4/DD0e1s7j4h61qFpP58cMQVpI3DItxJsjmiJHRkWztzt 6jzGzwy46uOZZXlR
Q4MT7G3RsoJ2hvlJGGGGHIyM5HUEDmLnWtRuPE1zpFrq2j6ZPG4S3tb62aaa 7Xy1kMsYE0Z2Alk4
DcxNz1CpXAwPDnhvUdf8DaUl7cWsED+GG063lhDMzLcRQnc6HAUoIwOGO/JP yfdqxe6FcWXhvXIJ
4Ei1DXLddKtoxqVzfuzMJFVjJNg7F813ZVT5VSRst0Xbt/GUSXl/a6tYz6fJ p2lQ6jeEo8iRbg5k
QOE2vs2cFSd3zADKNiw3i7RoluLybVYE0+OK3fe8LqFEsrxJIZD8rRuy8EDA A3birAi25X2A25jM
qAwRo771BDuVG3cNxyAeQuSB3IAyM5GZ4m0+81LRhDYCBrmO6tblFnkKI3lT xylSwViMhCM4PWj/
AISfSv7P+2+dPt83yPJ+yy/aPMxu2eRt8zdt+fG3O35vu81b0zVbHWrBb7Tb lLm0d3RJo+VYoxRs
HuNynkcHqMis9VqBkf2XrWo3EuoXctrpmoR2U9nZfZHN0sRlKMZWLom4ho48 JtAG1sltwC4Efg3X
IxqVyptTPcPpskFvNqdzcBDbXLSsrTyqzYYEYIUAEkbeNzdXca/Fb+LLDQDb ztJd2s1yJhE5RdjI
ApYLt53NklhjCg8uuR/FGjR6fDfteYtptPk1KN/Kfm2QIWfGM8CROOvPTg1S clsBh6/4X1jVtdiu
EvENpFe2l0m+7nQJHFJGzQ+QmI2JKu4lfccsE2gBXXQisNd0kz2ekxadNZz3 E1wtxdzuskDSyNI4
MaoRKAzsR88eQQpwRvNyHxRo09ncXUd5mG32lj5TguHOI2jXGZFc8IyBg54U say9Y8YG3tNOutJt
XvRLevBc2rwyR3CqlvLMyrGwDCUiNSqsBuDDoGDA956WAoXng7UYbe60jTBa vpd3oVvozXFzcss0
CxiZfMCLGVkO2YHG5MlSOM5Fc6UfFD6pqGmTJcQJrq3lq8V7Jbx3SixjgbZc Q5ZQGZ+VByYyhxk4
6MeJrddVvhJPA2mQ6faXcM8WXMpmkmUBdud+7y0ChQSS2BnIFSSeLtEhsorq a7eJJbj7KkclvIkv
nbC4jMRXeHKjKqQC2VxncuXeQGXa+HdS0hdLu9Nt7GW5toruKS1mvJgn+kSp MzecyyO7Bo8ElRv3
FvkwFrUstO1GDxTcahcNaywXGm21vJJGWRvOieViRGQQEIm/vkjbjnOaksvF GjajeR2treb5nyoB
idQJACTEzEALKACTESHABJUAVJp3iHTNWuGgs53Z9hkQvBJGsyAgF4mZQJU5 X5kLD5l5+YZTcuoG
nRUYmVrh4AH3oiuSY2C4JIGGxgn5TkA5HGcZGec1rW7y38QxaVDqelaV5kUb QS6jCZPtkjuymOIC
WP5k2qSAWJ81eBxulK4HT0Vzlp4juY9d07QdTsXS+ube5laaKNzERFIqKwID KodTvwXymVU5LLkh
8aaJdW6ajb6ojaaLKe8Z/s0h3xxCIs6tjGEEmGXBO444KMKOVgdHRWRD4o0a ezuLqO8zDb7Sx8pw
XDnEbRrjMiueEZAwc8KWNU/+EstLh7a5sJkn09b1dPviY3R7eaRV8vIODne6 Rsm3IMnJXy2FHKwO
joqOSZYniRg5Mr7F2xswB2lvmIGFGFPJwM4HUgHE8YXur6V4evdV0q4sY/sN rNcyRXVq8vm7E3BQ
VkTb0Izhuo9ORK7sBv0VmWFzc29xHp+rX1rcahOkk8X2a0eBTEhRWyGd+Q0i /wAQzuGBwTVNvGvh
5fs+dQ/4+LWK9TEMhxbybtszfL8kY2nczYCcbiuRks+gG/RWZN4h0y31QadJ O4n3rGzCCQxRu2Nq
PKF2I5yuFZgTvTA+Zc6dKwBRRRQMKKKKACiiigAooooAKKKKAMbxd/yJeu/9 g+4/9FtRR4u/5EvX
f+wfcf8AotqK7cLsz6LJf4cvUPCP/Il6F/2D7f8A9FrV7U9MstZ02fTtRto7 m0nXbJE44I/oQcEE
cggEc1w3h34leEbDwxpNnc6tsngs4YpE+zSnayoARkLg8jtWn/wtTwX/ANBn /wAlZv8A4iudwmpX
SZ5FTC13NtQe/Zj/ABHJb6BqOkXsF5pWmpDaz2MQviYbeJHMJyGA2ll8oYhy m8bsMoQ1z9p4IvtQ
8PaM0kH+v0Cz067t7i+ubTyNiNuLxxY8/wD1pBjcpjZjcNxxu/8AC1PBf/QZ /wDJWb/4ij/hangv
/oM/+Ss3/wARTSqLozP6pX/kf3M2tJ0+8stZ16aYQG2vrqO5gZJCX4giiZWU qAMGLIIJzu7Y5wNV
tf8AhH/hZY6fdTwf2jYWtstpGr8XV5bhZIokBwX3vEBtGGIJxg9Jf+FqeC/+ gz/5Kzf/ABFH/C1P
Bf8A0Gf/ACVm/wDiKSjO+wfVK/8AI/uZFPp95oniHwvp2hiCf7Dot1Asd7IU 82NHtFGZFU7W4Bzs
YHBGBnctO6+Htx9ntLSORLyAaRb6TOZL65tFCxBx5hihOJgwkP7tmXG3Ab5i Ro/8LU8F/wDQZ/8A
JWb/AOIo/wCFqeC/+gz/AOSs3/xFO1RdGH1Sv/I/uY2506a41jWdMDIk91qV hrELOSFkhia3WRRx
kuptzkAYHmxZI3cWL7w/qrnV3tJ0xeakl35C3UlsZohbRRbGmjBeIh49+VBy FCnhmxD/AMLU8F/9
Bn/yVm/+Io/4Wp4L/wCgz/5Kzf8AxFLln2D6pX/kf3Md4Z8K3+i3GmPdXME/ 2SLUkkdGkJc3F1HM
hG8s33UOdzE5PVuTUH/CE3k/h7S9KmuoI/I8N3GjTyoC+JJEgUOoIG5R5THk g9PU4l/4Wp4L/wCg
z/5Kzf8AxFH/AAtTwX/0Gf8AyVm/+IotUve34B9Ur/yP7mNs/Ct2lhqjTWlq t3dJCixzapd3m4RM
zr+/kIaM5c7Si5jb5/nOFFS7sNb04eG4/Nga7OtSSW9vPdS3KRJ9iuMxmdwJ H3EOd7A7PMwFYIAb
v/C1PBf/AEGf/JWb/wCIo/4Wp4L/AOgz/wCSs3/xFFqnYPqlf+R/cxs3hfWD pNrbQ3iKWuLq4uYo
7ueBUknmMocSRbXkEe512EoJN2SUIGDSPD2u6Bb6etkdOmn/ALIs9NuHmlcL A0Af94ihcygmU/KT
H9wfN83yu/4Wp4L/AOgz/wCSs3/xFH/C1PBf/QZ/8lZv/iKLVOwfVK/8j+5j brwfcTeK7i/2pLaX
N7Besz6hcoImiWIBfsyERyHMIIdmGCwyrBAGsXPh7UXsNQ0CE2p0bUXuGmun lYXEKzszyoqBdrHL
vtcsu0MMq+w74f8Ahangv/oM/wDkrN/8RR/wtTwX/wBBn/yVm/8AiKLVOwfV K/8AI/uY3Ufh9p2s
y+IZ7+y057y/uFls7yS1WaS32wRIudwGQJI2bZnawODwxFbljp94niG71W6E CfadPtYDFFIX2SRv
Oz8lRlf3qgHAJwcgVi/8LU8F/wDQZ/8AJWb/AOIo/wCFqeC/+gz/AOSs3/xF DjUatZh9Ur/yP7md
bGZi8oljRUD4iKuWLLtHLDA2nduGBngA55wMDV7LWrl7y1bTdH1nS7l1dYNR nMQiAVf3e0QyBxuU
uGJzlsY+UE0f+FqeC/8AoM/+Ss3/AMRR/wALU8F/9Bn/AMlZv/iKShNfZD6p X/kf3MiufCWrvp+q
2H2yC7+2+G4tK+2XEriR7iMTDe64b5W87JO4kEdDnNX9X8OXmoaxdXcUkCxy /wBl7Q7EEfZrt5pM
8d1YAep64HNVf+FqeC/+gz/5Kzf/ABFH/C1PBf8A0Gf/ACVm/wDiKdqnYPql f+R/cyLW7J9Fu59c
murGJRrS30H2qVooSDYi2KyyhGEXO4gkEE7F4LjE/hK6vLXQdNVoPtf2/Vb4 yXMCFI1jaW5mWcD5
v3b4Tb82MSL8x4y3/hangv8A6DP/AJKzf/EUf8LU8F/9Bn/yVm/+Io5ZtW5Q +qV/5H9zNq70+8k8
WaVqcIga2gtbq2nDyFXHmNCysoCkNzDgglfvZ5xiuIltbM+DviHqVjP9otJr W6itrhHDxzR+XLcM
ysOGxNdTpkHAEYHVWJ3f+FqeC/8AoM/+Ss3/AMRR/wALU8F/9Bn/AMlZv/iK FGa6MPqlf+R/cxuo
eFtV1iLU5r+a1S7nSyjjW2lkjWUWs7TBi4+aEyFyuF3mPAIZzxUmm+Frq1k0 24ZIIZItVe/uE+2z
3TEG0e3H72X5nblD0QBeMErlm/8AC1PBf/QZ/wDJWb/4ij/hangv/oM/+Ss3 /wARRaptYPqlf+R/
cxsfhHUbCbWf7Pv0S3uLe3hs03NG8caTTSPBvX7iFZTGjoAY1xhcoCzNE8Ia lYXcE9zPA23Wm1Fl
+0zTssZsTb7N8uWdg56kgFRkBeEEv/C1PBf/AEGf/JWb/wCIo/4Wp4L/AOgz /wCSs3/xFFqnYPql
f+R/cy1a+HLyD+yd0kB+x61e6hJhjzHN9q2gcfeHnpntw3J4zT8H+D7jw/cW 5uFRhZWX2KGc6hc3
DTLlMsI5CEtwfLUlF3dQAwC/M7/hangv/oM/+Ss3/wARR/wtTwX/ANBn/wAl Zv8A4ijlqdmH1Sv/
ACP7mdaDN9odWjQQBFKOHJYtk7gVxgADbg5OcngY5yNXg1p7iZbS107UtPub cQy2d9MYVQ5bcciK
TeHVgCpwBs77jjJ/4Wp4L/6DP/krN/8AEUf8LU8F/wDQZ/8AJWb/AOIpKE10 D6pX/kf3Mm0rw9qO
m6lok5Nq0Ftb30M0aysPs6zyxyxxxDbhkjEYjGdnygEAY21Qn8F6jL4WsNMW e18+38MXOjuxdtpm
kSBVYfLnZmJsnGeRx6Wf+FqeC/8AoM/+Ss3/AMRR/wALU8F/9Bn/AMlZv/iK dqnYPqlf+R/cx3ib
SnW41PV5LiCK38rTWQybsB7a6kmPmEKdkZ3qC/OwbmIwvOJYTzawLyIS2txP qniK2u4ZbJi8Bht4
7WSRlfq6KYTD5gABkKghN2F2f+FqeC/+gz/5Kzf/ABFH/C1PBf8A0Gf/ACVm /wDiKaU19lh9Ur/y
P7mdbIZg8QijRkL4lLOVKrtPKjB3HdtGDjgk54waHiTTptY8LavpluyLPeWU 1vG0hIUM6FQTgE4y
fSsH/hangv8A6DP/AJKzf/EUf8LU8F/9Bn/yVm/+IqFCa6B9Ur/yP7mO+IFr Z6lp9hpss+Lu5uhF
Dbo48yWOUG3nZV6nZDPI+QMKVBOQCDU13TtR1jxT4h0yya1WC+0K1tLhpiwa JZHu18xMAhioJ+Qg
bsj51xzZ/wCFqeC/+gz/AOSs3/xFH/C1PBf/AEGf/JWb/wCIqlGaWzD6pX/k f3MbdeD7ibxXcX+1
JbS5vYL1mfULlBE0SxAL9mQiOQ5hBDswwWGVYIA3Z1x3/C1PBf8A0Gf/ACVm /wDiKP8Ahangv/oM
/wDkrN/8RScJvow+qV/5H9zOxorjv+FqeC/+gz/5Kzf/ABFH/C1PBf8A0Gf/ ACVm/wDiKXs59mH1
Wv8AyP7mdjRXHf8AC1PBf/QZ/wDJWb/4ij/hangv/oM/+Ss3/wARR7OfZh9V r/yP7mdjRXHf8LU8
F/8AQZ/8lZv/AIij/hangv8A6DP/AJKzf/EUezn2YfVa/wDI/uZ2NFcd/wAL U8F/9Bn/AMlZv/iK
P+FqeC/+gz/5Kzf/ABFHs59mH1Wv/I/uZ2NFcd/wtTwX/wBBn/yVm/8AiKP+ FqeC/wDoM/8AkrN/
8RR7OfZh9Vr/AMj+5mx4u/5EvXf+wfcf+i2orlPEXxK8I3/hjVrO21bfPPZz RRp9mlG5mQgDJXA5
PeiuvDRaTuj3sopTpwkpprXqf//Z
------=_NextPart_000_001A_01C4D3D3.1002DDC0--
|
|
|
Re: More about 'partial code generation' [message #389550 is a reply to message #389548] |
Fri, 26 November 2004 10:49   |
Eclipse User |
|
|
|
This is a multi-part message in MIME format.
--------------060205020602050802070300
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit
Ian,
I think you should create a new plugin to hold your binaries. I'm not
sure if you include the binaries in the plugin.xml for the plugin that
needs to compile against them, if the source code will look at those
binaries while being compiled. I think not. Try to follow an existing
example, like org.apache.lucene_1.3.0/plugin.xml or
org.apache.ant_1.6.2/pluin.xml, which package some external binaries
into a plugin. Be sure to change the plugin's ID to something unique.
Once you do this, use that ID to define a Model Plug-in Variable, remove
the plugin.xml from that project, and regenerate the model (by right
clicking on the GenModel not on the GenPackage, which won't generate
artifacts global to the model).
Ian Ward wrote:
> Ed,
>
> Your mail has jogged something in my brain, you'll be pleased to know!
> That is, I'm forgetting that the import statements are resolved on
> runtimes not on sources - basic I know; as I said, my java culture's a
> bit weak (s'why I'm keen on code generation tools!) plus I'm focused
> on mysterious things happening behind the Eclipse scenes plus when
> generating code I'm not thinking about executables yet! Anyway.......
>
> I should also clarify that the (binary) classes I'm trying to
> reference are just that - so not only are they not generated from a
> model, they're not in any sort of plugin of any sort. By the way, I'm
> not very comfortable with messin' with the plugins (didn't manage to
> regenerate 'the plugin' when I tried - out of curiosity - it's in the
> metadata folder in the workspace isn't it?). Anyway......
>
> It seems to me that I have to include something in the build path for
> the project to point at the binaries I want. I have tried adding the
> directory holding the 'package' of my binaries both as a variable
> (pointing to this directory) or as a class folder. Neither of these
> attempts have succeeded - but am I on the right track?
>
> Ian
>
> "Ed Merks" <merks@ca.ibm.com <mailto:merks@ca.ibm.com>> a
|
|
|
Re: More about 'partial code generation' [message #389556 is a reply to message #389550] |
Fri, 26 November 2004 13:21   |
Eclipse User |
|
|
|
C'est un message de format MIME en plusieurs parties.
------=_NextPart_000_001A_01C4D3ED.238BF060
Content-Type: multipart/alternative;
boundary="----=_NextPart_001_001B_01C4D3ED.238BF060"
------=_NextPart_001_001B_01C4D3ED.238BF060
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Ed,
Looks like it could be a bit hairy!=20
I should have a look at plugins etc. anyway - I've been trying to avoid =
it up to now!=20
As this isn't blocking me for now I'll treat it as a sort of background =
job - I think I'll need to 'mug up' a little on the subject before I try =
to do what you've suggested.
Thanks
Ian
"Ed Merks" <merks@ca.ibm.com> a =E9crit dans le message news: =
co7ja0$qos$1@www.eclipse.org...
Ian,
I think you should create a new plugin to hold your binaries. I'm not =
sure if you include the binaries in the plugin.xml for the plugin that =
needs to compile against them, if the source code will look at those =
binaries while being compiled. I think not. Try to follow an existing =
example, like org.apache.lucene_1.3.0/plugin.xml or =
org.apache.ant_1.6.2/pluin.xml, which package some external binaries =
into a plugin. Be sure to change the plugin's ID to something unique. =
Once you do this, use that ID to define a Model Plug-in Variable, remove =
the plugin.xml from that project, and regenerate the model (by right =
clicking on the GenModel not on the GenPackage, which won't generate =
artifacts global to the model).
Ian Ward wrote:=20
Ed,
Your mail has jogged something in my brain, you'll be pleased to =
know! That is, I'm forgetting that the import statements are resolved on =
runtimes not on sources - basic I know; as I said, my java culture's a =
bit weak (s'why I'm keen on code generation tools!) plus I'm focused on =
mysterious things happening behind the Eclipse scenes plus when =
generating code I'm not thinking about executables yet! Anyway...
I should also clarify that the (binary) classes I'm trying to =
reference are just that - so not only are they not generated from a =
model, they're not in any sort of plugin of any sort. By the way, I'm =
not very comfortable with messin' with the plugins (didn't manage to =
regenerate 'the plugin' when I tried - out of curiosity - it's in the =
metadata folder in the workspace isn't it?). Anyway..
It seems to me that I have to include something in the build path =
for the project to point at the binaries I want. I have tried adding the =
directory holding the 'package' of my binaries both as a variable =
(pointing to this directory) or as a class folder. Neither of these =
attempts have succeeded - but am I on the right track?=20
Ian
"Ed Merks" <merks@ca.ibm.com> a =E9crit dans le message news: =
co4iht$qs$1@www.eclipse.org...
Ian,
It sounds like you are saying that the import that's generated =
doesn't compile because the project dependencies haven't been specified =
to let the compiler find the jar that resolves the import. Is that a =
correct interpretation of your situation? =20
Two points to note: 1) regenerating will never remove imports, =
only add them, so once you have a bad import in your file, because of =
mistakes or things that have been removed, you must remove it yourself =
and 2) the plugin.xml is never regenerated once it exists, so model =
changes that affect the plugin.xml, such as Model Plug-in Variables =
(which can be used to generate additional plugin dependencies), will =
only have an effect if you remove the plugin.xml and let it be =
regenerated.
If your problem is really just one of project dependencies you =
need to add a requires/import in the plugin.xml to specify the plugin =
that contains the .class files for the classes being imported. This can =
be done manually in the plugin.xml or by specifying it in the Model =
Plug-in Variables property of the GenModel before you generate the =
plugin.xml.
Ian Ward wrote:=20
Ed,
While I'm waiting for the book to arrive, can we run over this =
quickly?...I promise to leave you alone, for a while, once I get this =
fixed.
The good news is that I manage to get the correct import =
statement showing up in my 'client' class - that is, an import of the =
specified <<javaclass>> which I had wrapped in an interface (and it is =
the wrapper which my client has a reference to in the model). Eclipse =
still doesn't like it however.
My scenario is a little different to the sdo model you have =
shown me - I want my client class to have visibility to a simple =
implemented class in order to call methods on an instance of it. I =
haven't got as far as worrying how my client would have (direct) =
visibility, as a variable within its code, to the implemented class - I =
don't have any direct reference in the model anymore - I'll just rely on =
good-old hard-coding I suppose!
So, how to get the import accepted by Eclipse?=20
In order to eliminate as much noise etc. as possible I have =
attempted to duplicate your scenario. A client interface wants to extend =
an interface (the javaclass) which is wrapped in another interface. I =
have each element; client, wrapper and javaclass in different packages. =
Having inadvertently generated code for all three packages and got =
everything working, I realised my mistake (I don't want to generate code =
for the javaclass). I reset my client and wrapper to deal with a second =
javaclass and this time I made sure I didn't generate code for its =
package (however, all is present and correct in the genmodel). No dice - =
import statement can't be resolved.
I have tried to be as rigorous and systematic as possible which, =
with a little (!) intelligence, is all I can do as I don't =
know/understand what the machinery is grinding away at as I turn the =
handle. I may go back to 'hand-crafted' code!
Ian
"Ed Merks" <merks@ca.ibm.com> a =E9crit dans le message news: =
co0amr$u8j$1@www.eclipse.org...
Ian,
Obviously I'm a poor salesman! Yes, the book is well worth =
buying, and covers all the basics and some advanced stuff too.
Ian Ward wrote:=20
Ed,
Looks neat, I'll try it!...Seriously, it seems that my =
OO/Eclipse culture is different (question about factories) and =
(certainly) incomplete - for this current question I've never been on =
the stereotype wavelength and if Eclipse/EMF uses them a lot then I need =
to get with it.
I'm trying to restrict my queries to those which seem to be =
Eclipse/EMF specific but of course I'd more easily recognise/work these =
things out if I had a bit more experience etc. I've already asked you =
about the EMF book which you've declined to plug - would that be a good =
place to go to familiarise with some of these basics or does it go into =
a lot of advanced stuff ? (yes, I've looked at some of the other forum =
posts!)
Otherwise, I'll keep askin' 'em if you'll keep answerin' =
'em!.and thanks.
Ian
"Ed Merks" <merks@ca.ibm.com> a =E9crit dans le message =
news: cnv8d9$ido$1@www.eclipse.org...
Ian,
The point is simply that you can create a "wrapper" for an =
existing interface using <<Interface>> and <<javaclass>> like this:
Ian Ward wrote:=20
Hello,
I have recently been advised by Ed Merks to look at how sdo works,
particularly in respect of how it works with the commonj.sdo interface. =
This
is in order to give me a model for how to integrate an existing package =
of
ready-coded classes into my project while not generating code for them - =
a
bit like a java package I suppose.
I have spent a couple of hours with some documentation and with the code =
- I
have established that, generally speaking, sdo implements the interfaces
defined in commonj.sdo by delegating to SDOUtil (looking at =
EDataObjectImpl
for example).
At this point, as much as I would like to know more about sdo, I feel =
that I
am losing the plot. I'm not sure how to go about finding what I am =
looking
for and, in fact, I'm not sure anymore what it is I'm looking for !
Maybe it's all about defining interfaces in the model (and so I'll have =
no
problem with my import statements which is where I started) which then =
are
implemented by calling methods on the classes I want to integrate. But =
then,
I'll still have to import them at this point and I've just moved the
problem, haven't I?
So, how do I persuade Eclipse to recognise these 'external' classes?
Thanks
Ian Ward
=20
------=_NextPart_001_001B_01C4D3ED.238BF060
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE></TITLE>
<META http-equiv=3DContent-Type =
content=3Dtext/html;charset=3DISO-8859-1>
<META content=3D"MSHTML 5.50.4807.2300" name=3DGENERATOR></HEAD>
<BODY text=3D#000000 bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2>Ed,</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>Looks like it could be a bit hairy! =
</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>I should have a look at plugins etc. =
anyway - I've=20
been trying to avoid it up to now! </FONT></DIV>
<DIV><FONT face=3DArial size=3D2>As this isn't blocking me for now I'll =
treat it as=20
a sort of background job - I think I'll need to 'mug up' a little on the =
subject=20
before I try to do what you've suggested.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>Thanks</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>Ian</FONT></DIV>
<DIV> </DIV>
<DIV>"Ed Merks" <<A =
href=3D"mailto:merks@ca.ibm.com">merks@ca.ibm.com</A>> a=20
=E9crit dans le message news: <A=20
href=3D"mailto:co7ja0$qos$1@www.eclipse.org">co7ja0$qos$1@www.eclipse.org=
</A>...</DIV>
<BLOCKQUOTE=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">Ian,<BR><BR>I=20
think you should create a new plugin to hold your binaries. I'm =
not sure=20
if you include the binaries in the plugin.xml for the plugin that =
needs to=20
compile against them, if the source code will look at those binaries =
while=20
being compiled. I think not. Try to follow an =
existing=20
example, like org.apache.lucene_1.3.0/plugin.xml or=20
org.apache.ant_1.6.2/pluin.xml, which package some external binaries =
into a=20
plugin. Be sure to change the plugin's ID to something =
unique. =20
Once you do this, use that ID to define a Model Plug-in Variable, =
remove the=20
plugin.xml from that project, and regenerate the model (by right =
clicking on=20
the GenModel not on the GenPackage, which won't generate artifacts =
global to=20
the model).<BR><BR><BR>Ian Ward wrote:=20
<BLOCKQUOTE type=3D"cite" cite=3D"midco7hlt$nms$1@www.eclipse.org">
<META content=3D"MSHTML 5.50.4807.2300" name=3DGENERATOR>
<DIV><FONT size=3D2>
<P>Ed,</P>
<P>Your mail has jogged something in my brain, you’ll be =
pleased to know!=20
That is, I’m forgetting that the import statements are =
resolved on runtimes=20
not on sources – basic I know; as I said, my java =
culture’s a bit weak=20
(s’why I’m keen on code generation tools!) plus =
I’m focused on mysterious=20
things happening behind the Eclipse scenes plus when generating code =
I’m not=20
thinking about executables yet! Anyway…….</P>
<P>I should also clarify that the (binary) classes I’m trying =
to reference=20
are just that – so not only are they not generated from a =
model, they’re not=20
in any sort of plugin of any sort. By the way, I’m not very =
comfortable with=20
messin’ with the plugins (didn’t manage to regenerate =
‘the plugin’ when I=20
tried - out of curiosity – it’s in the metadata folder =
in the workspace=20
isn’t it?). Anyway……</P>
<P>It seems to me that I have to include something in the build path =
for the=20
project to point at the binaries I want. I have tried adding the =
directory=20
holding the ‘package’ of my binaries both as a variable =
(pointing to this=20
directory) or as a class folder. Neither of these attempts have =
succeeded –=20
but am I on the right track? </P>
<P>Ian</P></FONT></DIV>
<BLOCKQUOTE=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
BORDER-LEFT: rgb(0,0,0) 2px solid; MARGIN-RIGHT: 0px">
<DIV>"Ed Merks" <<A=20
href=3D"mailto:merks@ca.ibm.com">merks@ca.ibm.com</A>> a =
=E9crit dans le=20
message news: <A=20
=
href=3D"mailto:co4iht$qs$1@www.eclipse.org">co4iht$qs$1@www.eclipse.org</=
A>...</DIV>Ian,<BR><BR>It=20
sounds like you are saying that the import that's generated =
doesn't=20
compile because the project dependencies haven't been specified to =
let the=20
compiler find the jar that resolves the import. Is that a =
correct=20
interpretation of your situation? <BR><BR>Two points to =
note: 1)=20
regenerating will never remove imports, only add them, so once you =
have a=20
bad import in your file, because of mistakes or things that have =
been=20
removed, you must remove it yourself and 2) the plugin.xml is =
never=20
regenerated once it exists, so model changes that affect the =
plugin.xml,=20
such as Model Plug-in Variables (which can be used to generate =
additional=20
plugin dependencies), will only have an effect if you remove the=20
plugin.xml and let it be regenerated.<BR><BR>If your problem is =
really=20
just one of project dependencies you need to add a requires/import =
in the=20
plugin.xml to specify the plugin that contains the .class files =
for the=20
classes being imported. This can be done manually in the =
plugin.xml=20
or by specifying it in the Model Plug-in Variables property of the =
GenModel before you generate the plugin.xml.<BR><BR><BR>Ian Ward =
wrote:=20
<BLOCKQUOTE type=3D"cite" =
cite=3D"midco43u0$52h$1@www.eclipse.org">
<META content=3D"MSHTML 5.50.4807.2300" name=3DGENERATOR>
<DIV><FONT size=3D2>
<P>Ed,</P>
<P>While I’m waiting for the book to arrive, can we run =
over this=20
quickly?…..I promise to leave you alone, for a while, once =
I get this=20
fixed.</P>
<P>The good news is that I manage to get the correct import =
statement=20
showing up in my ‘client’ class – that is, an =
import of the specified=20
<<javaclass>> which I had wrapped in an interface =
(and it is=20
the wrapper which my client has a reference to in the model). =
Eclipse=20
still doesn’t like it however.</P>
<P>My scenario is a little different to the sdo model you have =
shown me=20
– I want my client class to have visibility to a simple =
implemented=20
class in order to call methods on an instance of it. I =
haven’t got as=20
far as worrying how my client would have (direct) visibility, as =
a=20
variable within its code, to the implemented class – I =
don’t have any=20
direct reference in the model anymore – I’ll just =
rely on good-old=20
hard-coding I suppose!</P>
<P>So, how to get the import accepted by Eclipse? </P>
<P>In order to eliminate as much noise etc. as possible I have =
attempted=20
to duplicate your scenario. A client interface wants to extend =
an=20
interface (the javaclass) which is wrapped in another interface. =
I have=20
each element; client, wrapper and javaclass in different =
packages.=20
Having inadvertently generated code for all three packages and =
got=20
everything working, I realised my mistake (I don’t want to =
generate code=20
for the javaclass). I reset my client and wrapper to deal with a =
second=20
javaclass and this time I made sure I didn’t generate code =
for its=20
package (however, all is present and correct in the genmodel). =
No dice –=20
import statement can’t be resolved.</P>
<P>I have tried to be as rigorous and systematic as possible =
which, with=20
a little (!) intelligence, is all I can do as I don’t =
know/understand=20
what the machinery is grinding away at as I turn the handle. I =
may go=20
back to ‘hand-crafted’ code!</P>
<P>Ian</P></FONT></DIV>
<BLOCKQUOTE=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: =
5px; BORDER-LEFT: rgb(0,0,0) 2px solid; MARGIN-RIGHT: 0px">
<DIV>"Ed Merks" <<A=20
href=3D"mailto:merks@ca.ibm.com">merks@ca.ibm.com</A>> a =
=E9crit dans=20
le message news: <A=20
=
href=3D"mailto:co0amr$u8j$1@www.eclipse.org">co0amr$u8j$1@www.eclipse.org=
</A>...</DIV>Ian,<BR><BR>Obviously=20
I'm a poor salesman! Yes, the book is well worth buying, =
and=20
covers all the basics and some advanced stuff =
too.<BR><BR><BR>Ian Ward=20
wrote:=20
<BLOCKQUOTE type=3D"cite" =
cite=3D"midco0a3p$t5c$1@www.eclipse.org">
<META content=3D"MSHTML 5.50.4807.2300" name=3DGENERATOR>
<STYLE></STYLE>
<DIV><FONT face=3DArial size=3D2><FONT size=3D2>
<P>Ed,</P>
<P>Looks neat, I’ll try it!…….Seriously, =
it seems that my OO/Eclipse=20
culture is different (question about factories) and =
(certainly)=20
incomplete - for this current question I’ve never been =
on the=20
stereotype wavelength and if Eclipse/EMF uses them a lot =
then I need=20
to get with it.</P>
<P>I’m trying to restrict my queries to those which =
seem to be=20
Eclipse/EMF specific but of course I’d more easily =
recognise/work=20
these things out if I had a bit more experience etc. =
I’ve already=20
asked you about the EMF book which you’ve declined to =
plug – would=20
that be a good place to go to familiarise with some of these =
basics=20
or does it go into a lot of advanced stuff ? (yes, =
I’ve looked at=20
some of the other forum posts!)</P>
<P>Otherwise, I’ll keep askin’ ‘em if =
you’ll keep answerin’ ‘em!…and=20
thanks.</P>
<P>Ian</P></FONT></FONT></DIV>
<BLOCKQUOTE=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: =
5px; BORDER-LEFT: rgb(0,0,0) 2px solid; MARGIN-RIGHT: 0px">
<DIV>"Ed Merks" <<A=20
href=3D"mailto:merks@ca.ibm.com">merks@ca.ibm.com</A>> =
a =E9crit=20
dans le message news: <A=20
=
href=3D"mailto:cnv8d9$ido$1@www.eclipse.org">cnv8d9$ido$1@www.eclipse.org=
</A>...</DIV>Ian,<BR><BR>The=20
point is simply that you can create a "wrapper" for an =
existing=20
interface using <<Interface>> and=20
<<javaclass>> like this:<BR>
<BLOCKQUOTE><IMG alt=3D""=20
=
src=3D"cid:001101c4d3e4$c15b3200$c9a50950@l8t7p3"><BR></BLOCKQUOTE><BR>Ia=
n=20
Ward wrote:=20
<BLOCKQUOTE type=3D"cite" =
cite=3D"midcnuj0d$cln$1@www.eclipse.org"><PRE wrap=3D"">Hello,
I have recently been advised by Ed Merks to look at how sdo works,
particularly in respect of how it works with the commonj.sdo interface. =
This
is in order to give me a model for how to integrate an existing package =
of
ready-coded classes into my project while not generating code for them - =
a
bit like a java package I suppose.
I have spent a couple of hours with some documentation and with the code =
- I
have established that, generally speaking, sdo implements the interfaces
defined in commonj.sdo by delegating to SDOUtil (looking at =
EDataObjectImpl
for example).
At this point, as much as I would like to know more about sdo, I feel =
that I
am losing the plot. I'm not sure how to go about finding what I am =
looking
for and, in fact, I'm not sure anymore what it is I'm looking for !
Maybe it's all about defining interfaces in the model (and so I'll have =
no
problem with my import statements which is where I started) which then =
are
implemented by calling methods on the classes I want to integrate. But =
then,
I'll still have to import them at this point and I've just moved the
problem, haven't I?
So, how do I persuade Eclipse to recognise these 'external' classes?
Thanks
Ian Ward
=
</PRE></BLOCKQUOTE><BR></BLOCKQUOTE></BLOCKQUOTE><BR></BLOCKQUOTE ></BLOCK=
QUOTE><BR></BLOCKQUOTE></BLOCKQUOTE><BR></BLOCKQUOTE></BODY ></HTML>
------=_NextPart_001_001B_01C4D3ED.238BF060--
------=_NextPart_000_001A_01C4D3ED.238BF060
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-ID: <001101c4d3e4$c15b3200$c9a50950@l8t7p3>
/9j/4AAQSkZJRgABAQIAJQAlAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsL DBkSEw8UHRofHh0a
HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgN DRgyIRwhMjIyMjIy
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/ wAARCAB/AcgDASIA
AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA AgEDAwIEAwUFBAQA
AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcY GRolJicoKSo0NTY3
ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKT lJWWl5iZmqKjpKWm
p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP0 9fb3+Pn6/8QAHwEA
AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQA AQJ3AAECAxEEBSEx
BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2 Nzg5OkNERUZHSElK
U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOk paanqKmqsrO0tba3
uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMB AAIRAxEAPwD0/wAO
6Jb3/hjSby5vNXeeezhlkf8Ata6G5mQEnAkwOT2rS/4Rqx/5+dX/APBvdf8A xyk8I/8AIl6F/wBg
+3/9FrWzXmSqTu9Tqq1JqbSb3Mf/AIRqx/5+dX/8G91/8co/4Rqx/wCfnV// AAb3X/xytiil7Sfd
ke1n/M/vMf8A4Rqx/wCfnV//AAb3X/xyj/hGrH/n51f/AMG91/8AHK2KKPaT 7sPaz/mf3mP/AMI1
Y/8APzq//g3uv/jlH/CNWP8Az86v/wCDe6/+OVsUUe0n3Ye1n/M/vMf/AIRq x/5+dX/8G91/8co/
4Rqx/wCfnV//AAb3X/xytiij2k+7D2s/5n95j/8ACNWP/Pzq/wD4N7r/AOOU f8I1Y/8APzq//g3u
v/jlbFFHtJ92HtZ/zP7zH/4Rqx/5+dX/APBvdf8Axyj/AIRqx/5+dX/8G91/ 8crYoo9pPuw9rP8A
mf3mP/wjVj/z86v/AODe6/8AjlH/AAjVj/z86v8A+De6/wDjlbFFHtJ92HtZ /wAz+8x/+Easf+fn
V/8Awb3X/wAco/4Rqx/5+dX/APBvdf8Axytiij2k+7D2s/5n95j/APCNWP8A z86v/wCDe6/+OUf8
I1Y/8/Or/wDg3uv/AI5WxRR7Sfdh7Wf8z+8x/wDhGrH/AJ+dX/8ABvdf/HKP +Easf+fnV/8Awb3X
/wAcrYoo9pPuw9rP+Z/eY/8AwjVj/wA/Or/+De6/+OUf8I1Y/wDPzq//AIN7 r/45WxWJ4k1m50e3
gaCBAkrlZLycO0NouPvuEBOByediYVt0ifLkU5vS7D2s/wCZ/eP/AOEasf8A n51f/wAG91/8co/4
Rqx/5+dX/wDBvdf/AByqGoa3eaVodhNFcQXy3WWk1Z0P2WBW+YSFYgx8sA5G 4qu1PnmBwzZGt6nc
aVLa6xFewajcW/hvVL2O4CAQykNayLtCn/V9APmJ24yzHLGlKb6h7Wf8z+86 b/hGrH/n51f/AMG9
1/8AHKP+Easf+fnV/wDwb3X/AMcrmdf1bxGI5tO+1WNrexXWlz+bBFIyLHcX Zj8k/OpfaY/mf5Q6
sV2JnNW7rxZqCeK7jT7W1eWC1vYLOSFNNuJTIJFiZpftK/u4ggmyUYEkRnkb xgvU7h7Wf8z+82/+
Easf+fnV/wDwb3X/AMco/wCEasf+fnV//Bvdf/HK5G9n1fxJeaNFf/2V/ZE2 v3Vk9m9s8wuY4BdA
GTLhf+WQwu1gHVXz/ALCePLq2/tCS4SC9ji0q61OL7Paz28YEOz5EnkBW4Vv MGJUCjC524cAO9Tu
HtZ/zP7zpv8AhGrH/n51f/wb3X/xyj/hGrH/AJ+dX/8ABvdf/HKoapqut+Ht BurvUJLG7k823igm
tbSVcGWVYjmAM7Pt3BsK+X5UBSAxr2+uX914eu7271GDSGsboIL+/wBPktre 4QovLQzMrqu6QoMO
MtGDnBKUuae9w9rP+Z/ea/8AwjVj/wA/Or/+De6/+OUf8I1Y/wDPzq//AIN7 r/45VD+27y78Mf2r
c3EHh14Zfmlv0LW7Lnb8wlEUgUlsDIjbcoxuTG/U0DU7nV9LW6u9PeykLldj bwGA/iUSIjgdvmRT
kHAK7WZOU11D2s/5mRf8I1Y/8/Or/wDg3uv/AI5R/wAI1Y/8/Or/APg3uv8A 45WxRS9pPuw9rP8A
mf3mP/wjVj/z86v/AODe6/8AjlH/AAjVj/z86v8A+De6/wDjlbFFHtJ92HtZ /wAz+8x/+Easf+fn
V/8Awb3X/wAco/4Rqx/5+dX/APBvdf8Axytiij2k+7D2s/5n95j/APCNWP8A z86v/wCDe6/+OUf8
I1Y/8/Or/wDg3uv/AI5WxRR7Sfdh7Wf8z+8x/wDhGrH/AJ+dX/8ABvdf/HKP +Easf+fnV/8Awb3X
/wAcrYoo9pPuw9rP+Z/eY/8AwjVj/wA/Or/+De6/+OUf8I1Y/wDPzq//AIN7 r/45WxRR7Sfdh7Wf
8z+8x/8AhGrH/n51f/wb3X/xyj/hGrH/AJ+dX/8ABvdf/HK2KKPaT7sPaz/m f3mP/wAI1Y/8/Or/
APg3uv8A45R/wjVj/wA/Or/+De6/+OVsUUe0n3Ye1n/M/vMf/hGrH/n51f8A 8G91/wDHKP8AhGrH
/n51f/wb3X/xytiij2k+7D2s/wCZ/eY//CNWP/Pzq/8A4N7r/wCOUf8ACNWP /Pzq/wD4N7r/AOOV
sUUe0n3Ye1n/ADP7zH/4Rqx/5+dX/wDBvdf/AByj/hGrH/n51f8A8G91/wDH K2KKPaT7sPaz/mf3
nK+ItEt7Dwxq15bXmrpPBZzSxv8A2tdHayoSDgyYPI70Vo+Lv+RL13/sH3H/ AKLaiuvDSbTuz3so
SqQk5669Q8I/8iXoX/YPt/8A0WtbNY3hH/kS9C/7B9v/AOi1rZriluzwav8A El6sKKKKRAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUARwwQ26FIIkiQu zlUUKCzMWY8dyxJJ
7kk1Qu/Duk3ySJPZJskt7i2dUJQGOdg0w+UjlmUEt1zk55NZ/jiCG68OR29x Ek0EupaekkcihldT
eQggg8EEdqpyQ2fhbxDHDpNtY6fZS6VeXc8AIt7YyQvAEdiAQnEjhnAyRjO7 YoFJdUI3NR8PaZqh
uWu4HL3CQJI8c8kbYhkMkWGVgVKuxORg/kKJvD2mXGqDUZIHM+9ZGUTyCKR1 xtd4g2x3GFwzKSNi
YPyrjiL7xLrl/Z3Flb3qQ3dte6W5un0m5s96T3Xl+X5UkgYgFMlt2GVmTAOW rb1jxTdaZ4hjt0eC
W2+1W1o8EdlPI2ZnRdz3A/dQsPMDeWwJKheR5g21yyA349E0+L7Nst8fZrqW 8i+dvlml8ze3XnPn
ScHgbuAMDFS28IaDa3Dzx6cjO9vJakSu0iiBypMIViQIvlGEA2rztA3HOBDY WWqadcavfeHn1vUj
qV5bpND5S3EEcVxLHGY5JHTywqouNjA7iW+8Wap9P8T3146yW0lqdLi0K21N rjUn8qVzKs2BIUGx
B+7VmcAhcMArbgUVn0YG5D4Y0qGzuLYwzzLcbfMluLqWab5TlMSuxddrZZcE bWJYYJJqey0TT9Pi
jSG33MkpnEs7tNKZCpTeZHJYtsOzJOQvy9OK5FPGmrLbX8McUF1e28uniN59 PuNORxc3BhKlJdzj
AUnzBkfN907SCahqGr3eo6TZ5sX1Ow19rX7R5bxwvu06WXf5e5mG1Zcbd/zF PvJu+V8surA7qSCG
Z4nliR3hffEzKCUbaVyvodrMMjsSO9SVmeH9Rm1TSfPuFQTx3E9tIYwQrtDM 8RYAklQxTdtycZxk
4ydOs3poAUUUUDCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigDG8Xf8iXr
v/YPuP8A0W1FHi7/AJEvXf8AsH3H/otqK7cLsz6LJf4cvUyvC/iKyg8JaNE8 GplksYFJTS7l1JEa
jhhGQR7g4Nav/CT2H/Pvq3/gouv/AI3R4R/5EvQv+wfb/wDotat6tq1to1kb m53MS2yKKMAvM56I
oOMngnnAABJIAJHOo88+WKu2eFXnSjKUpaJX6/8AAKn/AAk9h/z76t/4KLr/ AON0f8JPYf8APvq3
/gouv/jdSv4j0iPSodSe/iW1nby4Sc75JOf3apjc0mVYeWBuyCMZGKWTX7G2 0uLUL5nsY532Qx3K
7ZZW52qsfLF2AyI8b+cFQ2QJcbOzTuSpU2rpP7/+AQ/8JPYf8++rf+Ci6/8A jdH/AAk9h/z76t/4
KLr/AON05ddt/Nt5LiX7DDJa3F0YryIxv5UbIDKWJxGoDglXAb5xnaVYUWni fSryeGBJp4riaXyU
gubWWCQsUdwdkihgpWKTDEbSUYA5GKVl2C9Ps/v/AOAN/wCEnsP+ffVv/BRd f/G6P+EnsP8An31b
/wAFF1/8bpsvi7RIThrtyFeRZWS3kdYNkjRs0rBSIkDRuN74U7GIJCkixN4h 0y31QadJO4n3rGzC
CQxRu2NqPKF2I5yuFZgTvTA+ZclvIL0+z+//AIBD/wAJPYf8++rf+Ci6/wDj dH/CT2H/AD76t/4K
Lr/43VWz8VwLp3n6gH89r28t44bO1lndkhuHi3bEDNgBU3NjALDpuAq5deKN Gs/JMl5vjmiWcSwR
PNGkTfdlkdAVjjOCQ7kKQrHOFOHbyC9Ps/v/AOAN/wCEnsP+ffVv/BRdf/G6 P+EnsP8An31b/wAF
F1/8bqabxDplvqg06SdxPvWNmEEhijdsbUeULsRzlcKzAnemB8y5IdfsZNUO mTM9pfF2WKC5XYZw
uTuiP3ZRtAY7CSoI3BTxSsuwXp9n9/8AwCH/AISew/599W/8FF1/8bo/4Sew /wCffVv/AAUXX/xu
podfsZNUOmTM9pfF2WKC5XYZwuTuiP3ZRtAY7CSoI3BTxU+o6naaVbrNdu4D uERIonlkkbBOERAW
Y4BOADgKT0BNFl2C9Ps/v/4BS/4Sew/599W/8FF1/wDG6P8AhJ7D/n31b/wU XX/xunTeJ9Khs7e5
E08y3G7y4re1lmm+U4fMSKXXa2FbIG1iFOCQKjufF+g2twkEmoozvbx3QMSN IogcsBMWUECL5Tly
dq8biNwyW8gvT7P7/wDgDv8AhJ7D/n31b/wUXX/xuj/hJ7D/AJ99W/8ABRdf /G6afF+grYT3z6ik
dpA8ayTSoyLtkYJHICQMxMx4kGUOCQ2AcEHi7RLi4it0u3Wd3CNHLbyRtCzH CCYMoMJc42CTbvyN
uc07eQXp9n9//AHf8JPYf8++rf8Agouv/jdH/CT2H/Pvq3/gouv/AI3U0PiH TLjVDp0c7mfe0asY
JBFI653IkpXY7jDZVWJGx8j5Wxnp400S/wBHu77T9UQRxWT3iXEltI0ZjVcs 6jCmUISA6ocqTtO1
jii3kF6fZ/f/AMAtf8JPYf8APvq3/gouv/jdH/CT2H/Pvq3/AIKLr/43Wje3 tvp1nJdXUmyFMAkK
WJJIAVVGSzEkAKASSQACTVD/AISfSv7P+2+dPt83yPJ+yy/aPMxu2eRt8zdt +fG3O35vu80rLsF6
fZ/f/wAAb/wk9h/z76t/4KLr/wCN0f8ACT2H/Pvq3/gouv8A43VHTPGVlcaN Hf3EvnefdXcduun2
8lyZYop3jWQLGHYrtCZb7uXHTcBWhrus/YfB2pa5p7wXHkafLd2753xybYy6 nIPKnA6Hkd6dtbWC
9Ps/v/4BS1PU9F1iwayvbTWWgZ0f93pt7EwZGDqQyIGBDKDkHtVezm8O2dvd QLYazcJdJ5c5vdPv
rppUwRsZpUYlPmb5c4+ZuPmObsV7q+malY2usXFjeR6hK0EMlnavAYpFjeT5 laR9ylY35BBBAGGD
ErX1Lx1pVnoep6jbefdNZWr3Ucf2eVBcqv8AFExTDx5K5kTcqhgxOCCXbogv T7P7/wDgGcLLwkIL
qP8As7XS135JuJjaagZpDC5eJjLt37lY8NnOAozhQBYvB4X1DUFvrrS9WknW WOcf8S29CCWMqUl2
BNvmDaq78bio2k7eK2brxPpVl5P2maePzYlnbNrKfIjPR5vl/crw3Mm0fK39 1sV5b3V9T1K+tdHu
LGzj0+VYJpLy1ecyyNGknyqsibVCyJySSSSMKFBYv6hen2f3/wDAM69/4RvU LyS5uLLXS0uPOijs
7+OGfAA/exKoSTKgKd4OVAU5AAq5JqWhTXF3PNp2pSvd2621wJNIu2WSJS5C lTHjH7x+3O7nPFXf
+Egt7WXT7PVV+x6nfbxFaKTKZCjKrFCo+ZfnVskAhCWYLtbbGni7RHt7u4+1 usFrbvdNI9vIqyQo
MtJESoEqAY+aPcPmX+8Mr7wvT7P7/wDgHL6jpnh2XTp7ez03Umku7iya8e80 6+nNzFBcLIVkZ42L
nbvUZzxtUnaBjXtpvDtoLby7DWWe3uDcpLLp99JIZTG0ZZ3ZCznYxX5icDAH 3RiXU/Genw6NJqFl
dwGOC6tI5pLhWjQQyzpGZQW27oypcrIModpwSAa29O1O01W3aa0dyEco6SxP FJG2AcOjgMpwQcED
IYHoQabbtrcL0+z+/wD4Bl2es6Rp8DQ2tnq0cbSyTEf2VdnLyOzueY+7Mx9s 8cVP/wAJPYf8++rf
+Ci6/wDjdbNFTdBen2f3/wDAMb/hJ7D/AJ99W/8ABRdf/G6P+EnsP+ffVv8A wUXX/wAbrZopaBen
2f3/APAMb/hJ7D/n31b/AMFF1/8AG6P+EnsP+ffVv/BRdf8AxutmijQL0+z+ /wD4Bjf8JPYf8++r
f+Ci6/8AjdH/AAk9h/z76t/4KLr/AON1s0UaBen2f3/8Axv+EnsP+ffVv/BR df8Axuj/AISew/59
9W/8FF1/8brZoo0C9Ps/v/4Bjf8ACT2H/Pvq3/gouv8A43R/wk9h/wA++rf+ Ci6/+N1s0UaBen2f
3/8AAMb/AISew/599W/8FF1/8bo/4Sew/wCffVv/AAUXX/xutmijQL0+z+// AIBjf8JPYf8APvq3
/gouv/jdH/CT2H/Pvq3/AIKLr/43WzRRoF6fZ/f/AMAxv+EnsP8An31b/wAF F1/8bo/4Sew/599W
/wDBRdf/AButmijQL0+z+/8A4Bjf8JPYf8++rf8Agouv/jdH/CT2H/Pvq3/g ouv/AI3WzRRoF6fZ
/f8A8Axv+EnsP+ffVv8AwUXX/wAbo/4Sew/599W/8FF1/wDG62aKNAvT7P7/ APgGN/wk9h/z76t/
4KLr/wCN0f8ACT2H/Pvq3/gouv8A43WzRRoF6fZ/f/wDkfFHiKyn8JazEkGp hnsZ1BfS7lFBMbDl
jGAB7k4FFavi7/kS9d/7B9x/6Laiu3DWs7H0GTcvJK3cPCP/ACJehf8AYPt/ /Ra1ynizTvE48Ufa
LCzi1KK8jEFm7sUXT2wC4k6/u22l9yjcSoQ5/d1reF/EVlB4S0aJ4NTLJYwK Sml3LqSI1HDCMgj3
Bwa1f+EnsP8An31b/wAFF1/8bqcNiKmGqupGN990fN4/ALFKVKrFuLfn3KGm eB7PT9Kjha9vJNSE
jTvqccpjmaZgoYgD5dnyJ+6IZMRpuVsVozaF9ss7db29na/ttwh1C3PkTAE8 Z2/K3RCykeWzKCUx
hQ3/AISew/599W/8FF1/8bo/4Sew/wCffVv/AAUXX/xusKk6lSTnPVsqOHlC KjGNkvIxZo7u68Uw
WFtrKS6lZ6RfQS3qRIzWskr25gaWMHaHKqWwdofYxAA4FS28F6sq6zcSSwJc XMVm9lFJqFxdiKe2
lklQSSy5Zoy5QnaF4LADI3t0v/CT2H/Pvq3/AIKLr/43R/wk9h/z76t/4KLr /wCN0ry6Ir2NT+V/
cc14j8DaleeHo9C0q+/0KLShYQfaLyaHymVCu51hwJ942KQ+FTbuCvuZTvw6 fq9jr1/JaCxay1G6
S6mmmkfzItsUcbIsYXDZEQwxdcF/uttw03/CT2H/AD76t/4KLr/43R/wk9h/ z76t/wCCi6/+N0Xl
tYPY1P5X9xiz+F9YOnRWsF4iob29mkRLue3A864aSOXfFtdyisQYsqrFz8w2 qagHhHWLfR9EtLR7
WK8tNNgs3vYryeBoZI1wH2KNt0gJLLHIFA+YZxIcdD/wk9h/z76t/wCCi6/+ N0f8JPYf8++rf+Ci
6/8AjdF59g9jU/lf3FG80PUn8TrfWZgtoWljkkuI7uZGKqFDo9sMxTMyqU81 iGVWXAzGpOh/YX2n
UPtmp3s955cvmW9tny7eHByvyD/WMMIcyFsMu5AnQN/4Sew/599W/wDBRdf/ ABuj/hJ7D/n31b/w
UXX/AMbpe92D2NT+V/cO/sL7TqH2zU72e88uXzLe2z5dvDg5X5B/rGGEOZC2 GXcgToDXtPvLttNu
7AQSXOn3RuUhnkMaS5ikiKlwrFcCUtnac7ccZyG/8JPYf8++rf8Agouv/jdH /CT2H/Pvq3/gouv/
AI3StLsHsqn8r+4q3VhrpvdN1iKLTp9Qgt7i3ltmneGILK8b5WTY5Yr5Sryo 3ZLfJ92sz/hCbyDw
9qmlQ3UEnn+G7fRoJXBTMkaTqXYAHap81TwSevoM7v8Awk9h/wA++rf+Ci6/ +N0f8JPYf8++rf8A
gouv/jdP3l0D2NT+V/cUdX8OXmoaxdXcUkCxy/2XtDsQR9mu3mkzx3VgB6nr gc0XXhy8n/tbbJAP
tmtWWoR5Y8Rw/ZdwPH3j5D47cryOcXv+EnsP+ffVv/BRdf8Axuj/AISew/59 9W/8FF1/8bo97sHs
an8r+4zbPw9qMOqWccptf7PsdSutSinWVjLK0/n/ALto9oCBftDfMHbOwfKN 3y4HiDQ5tI8DWVvd
XVr59v4YutFSNZDuubqSKEIkQIBckwvgfeORgdcdj/wk9h/z76t/4KLr/wCN 0f8ACT2H/Pvq3/go
uv8A43TTle9g9jU/lf3E2r2dzqWl3lr9ntWJdTAJJXAcLtbJZQGifcCFddxQ hXGSNtYcWga3FY2M
3mQS3djqDXdvZz3ssqKjQPCYzcuhkbmR5NzIcZ2AYAYa3/CT2H/Pvq3/AIKL r/43R/wk9h/z76t/
4KLr/wCN0lzLSwexqfyv7jFsNB13TRZahFDp02oRPqAltWu3SILdXInysvlE krsVcFBncTkYwbk3
hy8X4fXHhWGSB9uijT4Ll2K75PKaMllAO1eFPBY8kY4Gb3/CT2H/AD76t/4K Lr/43R/wk9h/z76t
/wCCi6/+N0e92D2NT+V/cQxWWr6nqVjdaxb2NnHp8rTwx2d085lkaN4/mZo0 2qFkfgAkkg5UKQ3M
TeBteuv7Sa5voJZrjRb3TRJLeTyebNL5eJtrZSFWKHMca4TAwXGAvW/8JPYf 8++rf+Ci6/8AjdH/
AAk9h/z76t/4KLr/AON005LZB7Gp/K/uMLxj4Z17xNp8tvFcwQ/adPMJi+3T xx28xDbjiML9oV8q
v7zAQJuCtuZDf1LRLwT6kttpmlatZapKk9za6nMY1SRURBjEUgdSIkOCAVZS ctuAW9/wk9h/z76t
/wCCi6/+N0f8JPYf8++rf+Ci6/8AjdHvdg9jU/lf3FHRfCn9h32lNbvB9mtL W9jkSNPLHmXE8Uv7
tBkLGCjgDJIG0Zbk1ymt+F9YsdH1/VtRvEuBH4d1C1djdzytNI6o3nBH+SEN 5bZijAC8AM4I2dz/
AMJPYf8APvq3/gouv/jdH/CT2H/Pvq3/AIKLr/43QnJO9g9jU/lf3GTP4c1f ULi5u72SxW5kl01A
IWfY8drdGYycjKM4dgI/mC4HztnI3NL06ax1HW7iVkKX16txEFJyFFvDFhuO u6NumeCPpUP/AAk9
h/z76t/4KLr/AON0f8JPYf8APvq3/gouv/jdJ83YPY1P5X9xs0Vjf8JPYf8A Pvq3/gouv/jdH/CT
2H/Pvq3/AIKLr/43U8r7B7Kp/K/uNmisb/hJ7D/n31b/AMFF1/8AG6P+EnsP +ffVv/BRdf8Axujl
fYPZVP5X9xs0Vjf8JPYf8++rf+Ci6/8AjdH/AAk9h/z76t/4KLr/AON0cr7B 7Kp/K/uNmisb/hJ7
D/n31b/wUXX/AMbo/wCEnsP+ffVv/BRdf/G6OV9g9lU/lf3GzRWN/wAJPYf8 ++rf+Ci6/wDjdH/C
T2H/AD76t/4KLr/43RyvsHsqn8r+42aKxv8AhJ7D/n31b/wUXX/xuj/hJ7D/ AJ99W/8ABRdf/G6O
V9g9lU/lf3GzRWN/wk9h/wA++rf+Ci6/+N0f8JPYf8++rf8Agouv/jdHK+we yqfyv7jZorG/4Sew
/wCffVv/AAUXX/xuj/hJ7D/n31b/AMFF1/8AG6OV9g9lU/lf3GzRWN/wk9h/ z76t/wCCi6/+N0f8
JPYf8++rf+Ci6/8AjdHK+weyqfyv7jZorG/4Sew/599W/wDBRdf/ABuj/hJ7 D/n31b/wUXX/AMbo
5X2D2VT+V/cbNFY3/CT2H/Pvq3/gouv/AI3R/wAJPYf8++rf+Ci6/wDjdHK+ weyqfyv7jZorG/4S
ew/599W/8FF1/wDG6P8AhJ7D/n31b/wUXX/xujlfYPZVP5X9weLv+RL13/sH 3H/otqKyvFHiKyn8
JazEkGphnsZ1BfS7lFBMbDljGAB7k4FFduGTSdz6DJoyjCV1bU1fCP8AyJeh f9g+3/8ARa1s1jeE
f+RL0L/sH2//AKLWvO/iTfa/YeKrKaaWS205WH9l3Nu3yrNs+YSA8eYfnxkF SmQOrgxhcK8VW9kp
JN33PHp0HiMS6SaTbe567RXG+HPH9pqnh23v72C5Sd5HiC2tpLN9o2bd0sSI rMYssAWwQrHbuPBO
2/inQ0vFtTqUHmNai9BBJT7OQ5ExcfKI/kbLE4GVBOWXOFSlKnJwktUcsouM nF7o16KyIfE+lTWd
xcmaeFbfb5kVxaywzfMcJiJ1DtubKrgHcwKjJBFU5vGVgt1o8MEV1N/aN61m wNrMj27CJpP3iFMo
ThOG2/K2/wC6pNRyvsSdHRWZD4h0y41Q6dHO5n3tGrGCQRSOudyJKV2O4w2V ViRsfI+Vsc5puu+I
/wDhHNF8QX91pU1tqH2LfaQWMkTr9peNBiQzMPlMgP3Pm244zkNRYHbUVmQ+ IdMuNUOnRzuZ97Rq
xgkEUjrnciSldjuMNlVYkbHyPlbGXqXjrSrPQ9T1G28+6aytXuo4/s8qC5Vf 4omKYePJXMiblUMG
JwQSuVgdPRWBPqt/qWof2foskFrJHaxXks9/aSP8kpdUQRbkYN+7ctuI24A2 ksdufceMH06S0g1D
yEkj1U6beyIjFZD9kadDCoJbc+YgE+Y7mKDccMXysDr6KyF8QafJLbyjUYI7 aS1uLhhLGyELEyK7
MzECPYWKsrDdk9trCiHxPpU1ncXJmnhW32+ZFcWssM3zHCYidQ7bmyq4B3MC oyQRSswNeiucm8ZW
C3WjwwRXU39o3rWbA2syPbsImk/eIUyhOE4bb8rb/uqTR/wllpbvc3N/MkGn tetp9iRG7vcTRq3m
YAyc70eNU25Jj4LeYop8rA6OisibxPpUNnb3ImnmW43eXFb2ss03ynD5iRS6 7WwrZA2sQpwSBUdz
4v0G1uEgk1FGd7eO6BiRpFEDlgJiyggRfKcuTtXjcRuGVyvsBt0VkQ+KNGns 7i6jvMw2+0sfKcFw
5xG0a4zIrnhGQMHPCljR/wAJPpX9n/bfOn2+b5Hk/ZZftHmY3bPI2+Zu2/Pj bnb833eaOVga9FYk
/i7RLdLNnu3Z7xJGt4Y7eSSWTy2VZFEaqW3qW+ZMblw2QNrYkuvFGjWfkmS8 3xzRLOJYInmjSJvu
yyOgKxxnBIdyFIVjnCnByvsBr0VmTeIdMt9UGnSTuJ96xswgkMUbtjajyhdi OcrhWYE70wPmXJD4
h0y41Q6dHO5n3tGrGCQRSOudyJKV2O4w2VViRsfI+VsFmBp0VzEXiO8k8C6H rhjg+03/APZ3moFO
wfaJYkfaM54EjYyT0Gc1Qk13xHHoOr+IftWlGy0+W+P2P7DJ5kkdvLIm3zfO wGYR/e2EAn7pxiny
sDtqKzNL1Ga+1HW7eVUCWN6tvEVByVNvDLlueu6RumOAPrV+GZZ0LoHADsnz xshyrFTwQDjI4PQj
BGQQaloCSiuMXxBrV7e6jHp97o/2yzeYjQpIj9rkSNyqkyGZQglAVlcx4USr 94cnQj8aaYr6418X
sbbSb2O0kuLiKREYuse1ssoAG6THUgAK5IVgarlYHR0VgN4t0q1SSW7vtiNd JbQxm0lSRZGt1mWI
qQWaQqSQAAcsqY3jmxN4o0aCzt7qS8xDcbip8pyUCHEjSLjMaoeHZwoQ8MVN LlYGvRVexvbfUtPt
r+0k8y2uYlmhfaRuRgCpweRkEdayJvFlla65rGn3Uc8MOl6el/NcmCQpsPmb sHbg4CAjBO7LADKN
gs2Bv0Vmaj4i0nSTci/vUtxbJA8zSAhY1mkMcZLYwAWVhntjJwOaj/4SfSv7 P+2+dPt83yPJ+yy/
aPMxu2eRt8zdt+fG3O35vu80WYGvRXKaj4xW01LSXt40n0m5t55buY7kktxH LBEWIP3QjSt5gbaU
CsTgoVNxPEsVvc6yt+dsdnqCWlukELyyy5t4pcBFDM7fO5+UcKuSMAmnysDf orEn8XaJbpZs927P
eJI1vDHbySSyeWyrIojVS29S3zJjcuGyBtbElr4p0O985rfUoHhhiac3GSIW jX77pIfkdVJAYqSF
JAbBNLlfYDXorP0zWrLVvNFq06yRYLxXNtJbyKDnDbJFVtpwwDYwSrAHIOLk cyyvKihwYn2NujZQ
TtDfKSMMMMORkZyOoICsBJRXKXOtajceJrnSLXVtH0yeNwlva31s0012vlrI ZYwJozsBLJwG5ibn
qFkt/GUSXl/a6tYz6fJp2lQ6jeEo8iRbg5kQOE2vs2cFSd3zADKNiuVgdPRW A3i7RoluLybVYE0+
OK3fe8LqFEsrxJIZD8rRuy8EDAA3birAix/wk+lf2f8AbfOn2+b5Hk/ZZftH mY3bPI2+Zu2/Pjbn
b833eaXKwNeisC18TW97qGnyWc8F1pGo+dBb3MWf+PmItuXP8SsqSEMAAPJP Lb1xtmZVuEgIfe6M
4IjYrgEA5bGAfmGATk84zg4GmgJKKwNZvdX/AOEh07StKuLG2+0WtzcyS3Vq 8/8Aq3hUKAsiYz5p
OcnoKLfxLFb2t2mqnbd2V0LKQWsLyfaJDGsoMUahnOY3DFcErh+WC7ycrA36 KwIvFllc+IdN0q2j
nlW+tZ7hZxBIFjMTqpRvlwrZLhgxBRlCsAXUUSeMtGXT9QvY5Z5Y7K1kvCBb unnxIMs8LOFWVenz
ISvzLzhhk5WBv0Vzkt/rukmC81aXTprOe4ht2t7SB1kgaWRY0IkZyJQGdQfk jyCWGCNhNA8WWmqT
S2c8yLfJe3dsFSNwn7qaRVTecr5vloHKZ3Yy20LRyu1wOjorAj8W6VFp+nzX N9532m1juWngtJfL
WNhkSyDDeRGcMQZCAArcnaxFybxDplvqg06SdxPvWNmEEhijdsbUeULsRzlc KzAnemB8y5OVgQ+L
v+RL13/sH3H/AKLaisi61+LxH8OfEV7FbzwLHDf22yaJ0J8vegbDqp5ABIx8 pJU8qaK7MMrJpn0W
S/w5epr+Ef8AkS9C/wCwfb/+i1q9qemWWs6bPp2o20dzaTrtkiccEf0IOCCO QQCOao+Ef+RL0L/s
H2//AKLWvO/iTfa/YeKrKaaWS205WH9l3Nu3yrNs+YSA8eYfnxkFSmQOrgrC YaWJr+zjJRfS55NO
g8RifZJpNt7nfahpV5bajpt/olrYv9itZrNbOaU28YjkMRBVlR8bfJAC7cYb qMYNe+8M3mp/26l1
dwL/AGposWnGaKMjbIPtG99hJwv75SBuJ4IJ7mp4c8f2mqeHbe/vYLlJ3keI La2ks32jZt3SxIis
xiywBbBCsdu48E7b+KdDS8W1OpQeY1qL0EElPs5DkTFx8oj+RssTgZUE5Zc4 1ITpycZbo5ZRcZOL
3Rh2fhjU4LDVHj2Wd9dpDGMardXbPHGzMUM8uGjDB3QFEym4uCxwFg0vwjrG nT29wz2srrrv9ouj
3k8hWFrP7OV8yQMzupJxnAYKPuZ2r0cPifSprO4uTNPCtvt8yK4tZYZvmOEx E6h23NlVwDuYFRkg
iqc3jKwW60eGCK6m/tG9azYG1mR7dhE0n7xCmUJwnDbflbf91Sam8iTP0vwf cWPiQXcqpJbxXtze
xTtqFy53TGQ7VtsiKMjzmXeC2QCdoL5Vmi/D+z0O18NXVpp2lRaxpsSQ3c8U IX7Qpj2Snftzuzhw
xG47SuVEjGujh8Q6ZcaodOjncz72jVjBIIpHXO5ElK7HcYbKqxI2PkfK2Oc0 3XfEf/COaL4gv7rS
prbUPsW+0gsZInX7S8aDEhmYfKZAfufNtxxnILyYFuz8PajDqlnHKbX+z7HU rrUop1lYyytP5/7t
o9oCBftDfMHbOwfKN3y5h8GavN4ebSpXsY/segXGi2cqzO32jzEjUSyDYPKx 5KnaDJ988/L83Vw+
IdMuNUOnRzuZ97RqxgkEUjrnciSldjuMNlVYkbHyPlbGXqXjrSrPQ9T1G28+ 6aytXuo4/s8qC5Vf
4omKYePJXMiblUMGJwQSJyvsBYnstXg1D+2LC3sZb25tYra7tJ7p0jXyy7K0 cojJODK4IKfMCp+X
aQ2fceH9XSS01O2Sxm1P+1TqNzBJcPFCM2jWwRHEbMdq7OSvzEMcLkKNCfVb /UtQ/s/RZILWSO1i
vJZ7+0kf5JS6ogi3Iwb925bcRtwBtJY7c+48YPp0lpBqHkJJHqp029kRGKyH 7I06GFQS258xAJ8x
3MUG44YpXAyG0L+0L6Xw/wDbYDcy6Vq6XzW580WUl7PDKisOD0Z9u7aXCEgD kDQg8I332K9keKCC
9kls5Y1fU7m93/ZpvOVWmm5VWOVwqfLkt8+do318QafJLbyjUYI7aS1uLhhL GyELEyK7MzECPYWK
srDdk9trCiHxPpU1ncXJmnhW32+ZFcWssM3zHCYidQ7bmyq4B3MCoyQRT5pA U7mw12/l0W8uItOS
ez1L7RJBHO5VITBJCQJCmXfMm/7qD+HtuOfpenTPf29kWRJ9I126v5lckeZD cLctGycZIzcBSTgb
opQCdvOhN4ysFutHhgiupv7RvWs2BtZke3YRNJ+8QplCcJw235W3/dUmq7eM DHrVrbtau9le6k+m
20kUMjndEjmWRiAQB5qmMKQvCPJuK/dPetsBXn8L6wdOitYLxFQ3t7NIiXc9 uB51w0kcu+La7lFY
gxZVWLn5htU1BB4L1GLwtf6Y09r59x4YttHRg7bRNGk6sx+XOzMq4OM8Hj16 qPW9Pl+zbLjP2m6l
s4vkb5povM3r04x5MnJ4O3gnIzU07xfoOq27XNpqKG3Fubnz5EaKNogBuZWc AMEyA+CdhOG2nilz
SAz/ABB4WudYu9UmSZFS4t7ARKJXjYvbXEkxUuvKBtyqHXJXk44ANePwrdxa FLGtpam8lvftbRNq
l2zg+WIsreE+ar7VHzBQNuY9uCXPR6ZrVlq3mi1adZIsF4rm2kt5FBzhtkiq 204YBsYJVgDkHFyO
ZZXlRQ4MT7G3RsoJ2hvlJGGGGHIyM5HUEA5pLQDiWttd0/xF4eiiktbu+j03 UC8dzM+0xma22xib
aWJQFR5jIxfYcgF8rX1zwJrF14Wt9BstSR4IdIXT0eS5ntlSRUKlzHEcSiQb V2ucR7cgPuZTr3tz
4pTxTb6Zb6no6QXVvc3MbSaZKzRrG8ShTi4AYkTfewPu9OeNuPW9Pl+zbLjP 2m6ls4vkb5povM3r
04x5MnJ4O3gnIy+ZqzQFCHT9Xsdev5LQWLWWo3SXU000j+ZFtijjZFjC4bIi GGLrgv8AdbbhsvS/
B9xY+JBdyqklvFe3N7FO2oXLndMZDtW2yIoyPOZd4LZAJ2gvldjTvF+g6rbt c2moobcW5ufPkRoo
2iAG5lZwAwTID4J2E4baeKr3niuAaXPqNmH8uwdJb+C7tZbeVLY53SBZArYU BnB2sH8p0Hzcqve2
Ar23h7UUsNP0CY2o0bTnt2huklY3EywMrxIyFdqnKJucM24KcKm8bKg+H9ml sb1dO0o69Fqs2ow3
bQgl83DyKjvtzzG2zOG2HDKCUWuymmWBA7hyC6p8kbOcswUcAE4yeT0AyTgA mszxNqF5pujCawMC
3Ml1a2yNPGXRfNnjiLFQyk4Dk4yOlCk+gEml6dNY6jrdxKyFL69W4iCk5Ci3 hiw3HXdG3TPBH0q/
CZmQmeNEfewARyw27jtOSByVwSOxJGTjJxINWvNM1D7Br91YvvtZb1LyCI28 aRxFBIJFd3xjzEIb
dggtkLtBavqPjnTbLTftkcF9Kwure3e3exnjmUSyBA5jMe/bjdg7cMy7Ad3F KzYFfWtH1/VrO40y
aDSriFpZHtdTlnZJ7MsW2SJEIiPMiDYUiQFtgO5SxxJc+HtRnuNZUG1EF3q9 hqML+a27bCbfzFZd
uAcW524Jzu524rYm8Q6Zb6oNOkncT71jZhBIYo3bG1HlC7Ec5XCswJ3pgfMu c+K/13VjPeaTLp0N
nBcTW6293A7STtFI0bkyK4EQLIwHySYADHJOwNNgR/8ACOXn/CRf2h5kHk/2 1/aGNx3eX/Z/2bHT
72/n02988VkXcD+FbixvbjU9KtJjLqaLJfyNHAqXN0s4bfgBpFCr+6JXf8+G AQmr9r490+XUE+0S
fZ7K40q01G33RM0irMZd7SbchI0CR7nOFUty3IrYl1+ys2vjc3XmeRdLbCGC 1keUOYkk2BV3NK21
i+UHC9R8jGn7y3Az/CMl5ZeHvC2lTafOn/ElRp5XUr5EkaQqI2BHDHexwSD+ 7PB5xcNtNYeKdR1q
4ktY9Lk02GOSWSYq0TQvM5JBXbs2y53bhjb05yJJvE+lQ2dvciaeZbjd5cVv ayzTfKcPmJFLrtbC
tkDaxCnBIFR6f4mtNS8SXWkWyPIkNlBeJdKjmKVZS+Nr7dpGFUghjuywH3Gw tdXYDjLbTPsPw4X7
BNhp9asVtppl8xGjiu7e3t5MAruVooInJBAbcSCAQBsXvhPUtQt5LybyFv31 UaibSC/mhQYtRbbB
cookHA35Cc/cxj5q7aijnYWOU03wmbabThcQ2rWkdlfQXNuZJJwzXM0UhBaX JkHyOGZsbic7QDtW
pD4T1uy0y/to9S+1tLqCTgtdS20lzAltHCqyToC6Sbow7Omd5XGFDkL21FLn YHIeGfCt/otxpj3V
zBP9ki1JJHRpCXNxdRzIRvLN91DncxOT1bk1B/whN5P4e0vSprqCPyPDdxo0 8qAviSRIFDqCBuUe
Ux5IPT1OO2oo53e4HOeGNCuNLuL27u4EhnuEjiwNSub9iqFyMyzYIGZDhQox yctuwu/GZi8oljRU
D4iKuWLLtHLDA2nduGBngA55wJKKTd3cDnNXstauXvLVtN0fWdLuXV1g1Gcx CIBV/d7RDIHG5S4Y
nOWxj5QTmXPhLV30/VbD7ZBd/bfDcWlfbLiVxI9xGJhvdcN8redkncSCOhzm u2opqTQHMav4cvNQ
1i6u4pIFjl/svaHYgj7NdvNJnjurAD1PXA5qhrdk+i3c+uTXVjEo1pb6D7VK 0UJBsRbFZZQjCLnc
QSCCdi8FxjtqKFJgee+HBNeHw/bmRJp7fUtR1aaeJCsTQvJcxxuoyxAlM4eP JIZEchjt574mb7Qi
rGhgKMXcuQwbI2gLjBBG7JyMYHBzxJRSk7sDA1my1f8A4SHTtV0q3sbn7Pa3 NtJFdXTwf6x4WDAr
G+ceURjA6iqdz4f1V9NuZIp0F9fXovL23iupLaNwIliESToPMQKEjbeBlyhG FVyq9XRTUmgOM8O+
FtV0S70dpZrW5S2TUo7mTzZAxFxcLMjKH3Fj8gDBnyN2dzY5qW3gbUrrULht ZvvNt7jSrrTZ5EvJ
pJJWlMWZlWTMcO4I37tF2oQOXGAvfUUc7A5yWw13VjBZ6tFp0NnBcQ3DXFpO 7STtFIsiARsgEQLI
pPzyYAKjJO8ZkWm3mkSwXGtXGlWOkabqt3qKXjXhy/ntOFR1ZFWP/j56725U DHzZHbUUcwHmNp4I
vtQ8PaM0kH+v0Cz067t7i+ubTyNiNuLxxY8//WkGNymNmNw3HHXw6fq9jr1/ JaCxay1G6S6mmmkf
zItsUcbIsYXDZEQwxdcF/uttw2/RQ5tgcfd6feaZ8PvFFtdiD5hqU8LQyFt0 crSyruBUbWG8ggZH
Gc84BWv4u/5EvXf+wfcf+i2orrwzumz6LJf4cvUPCP8AyJehf9g+3/8ARa1e 1PTLLWdNn07UbaO5
tJ12yROOCP6EHBBHIIBHNUfCP/Il6F/2D7f/ANFrXnfxJvtfsPFVlNNLJbac rD+y7m3b5Vm2fMJA
ePMPz4yCpTIHVwVhMNLE1/Zxkovpc8mnQeIxPsk0m29zvtQ0q8ttR02/0S1s X+xWs1mtnNKbeMRy
GIgqyo+NvkgBduMN1GMGvfeGbzU/7dS6u4F/tTRYtOM0UZG2QfaN77CThf3y kDcTwQT3NTw58QLH
U/DtvqGpbrV3keIusLmKQJt3zqQDiAbgGkb5UPBY8E67+LtES3tLj7W7QXVu l0siW8jLHC4yskpC
kRIRn5pNo+Vv7pxjOE4ScZLVHLKLjJxe6Mez8ManBYao8eyzvrtIYxjVbq7Z 442Zihnlw0YYO6Ao
mU3FwWOAsGl+EdY06e3uGe1lddd/tF0e8nkKwtZ/ZyvmSBmd1JOM4DBR9zO1 deHW73XLrWLHSGSx
uNLvVt3lvrGWRJVMSuSo3R87mxwzcAN0dTUfhjWr+60XR7/XLyxMmsxRPaQ2 tnJFsdoWmZCxkfd8
qnn5funuQKm8rMkp6X4PuLHxILuVUkt4r25vYp21C5c7pjIdq22RFGR5zLvB bIBO0F8qzRfh/Z6H
a+Grq007SotY02JIbueKEL9oUx7JTv253Zw4YjcdpXKiRjW3ceLtEtjCr3bt JO86QxRW8kkkrQSC
OUIiqWYqx6AHgFh8oJEl14o0az8kyXm+OaJZxLBE80aRN92WR0BWOM4JDuQp Csc4U4V5gZdn4e1G
HVLOOU2v9n2OpXWpRTrKxllafz/3bR7QEC/aG+YO2dg+UbvlzD4M1ebw82lS vYx/Y9AuNFs5Vmdv
tHmJGolkGweVjyVO0GT755+X5t+68TW9lqGoSXk8FrpGneTBcXMuf+PmUrtX P8KqrxksQQfOHK7G
zY/4SfSv7P8AtvnT7fN8jyfssv2jzMbtnkbfM3bfnxtzt+b7vNO8twK89lq8 Gof2xYW9jLe3NrFb
XdpPdOka+WXZWjlEZJwZXBBT5gVPy7SGz7jw/q6SWmp2yWM2p/2qdRuYJLh4 oRm0a2CI4jZjtXZy
V+YhjhchRqT+LtEt0s2e7dnvEka3hjt5JJZPLZVkURqpbepb5kxuXDZA2tiS 18U6He+c1vqUDwwx
NObjJELRr990kPyOqkgMVJCkgNgml73YDkG0L+0L6Xw/9tgNzLpWrpfNbnzR ZSXs8MqKw4PRn27t
pcISAOQNCDwjffYr2R4oIL2SWzljV9Tub3f9mm85VaablVY5XCp8uS3z52jf h8T6VNZ3FyZp4Vt9
vmRXFrLDN8xwmInUO25squAdzAqMkEVHJ4u0SGyiuprt4kluPsqRyW8iS+ds LiMxFd4cqMqpALZX
Gdy5fNICvc2Gu38ui3lxFpyT2epfaJII53KpCYJISBIUy75k3/dQfw9txzLH T7xry2s4RB9p0jX7
i+nSaQoJLe5FwyvHhSWwLjHIALxSLnjNb83ifSobO3uRNPMtxu8uK3tZZpvl OHzEil12thWyBtYh
TgkCi68UaNZ+SZLzfHNEs4lgieaNIm+7LI6ArHGcEh3IUhWOcKcK77AY+j2t ncfEPWtQtJ/PjhiC
tJG4ZFuJNkc0RI6Mi2dudvUeY2eGXGJ4c8N6jr/gbSkvbi1ggfww2nW8sIZm ZbiKE7nQ4ClBGBwx
35J+T7tdvN4h0y31QadJO4n3rGzCCQxRu2NqPKF2I5yuFZgTvTA+Zc5cviO8 j8C65rgjg+02H9o+
UhU7D9nllRNwznkRrnBHU4xTuwJPDGhXGl3F7d3cCQz3CRxYGpXN+xVC5GZZ sEDMhwoUY5OW3YXf
jMxeUSxoqB8RFXLFl2jlhgbTu3DAzwAc84HOJdeI9S1nWYbC/wBKtbawuktk WfT5JnbMEUpYsJ0H
WUjGO1SeG/Ek2v3CM1ukEEukWOoogJZlaczblLcAgCNccDv+Cab1A0J9Oml8 U2GpqyeRb2VzbupJ
3FpHgZSOMYxE2ee4/DD0e1s7j4h61qFpP58cMQVpI3DItxJsjmiJHRkWztzt 6jzGzwy46uOZZXlR
Q4MT7G3RsoJ2hvlJGGGGHIyM5HUEDmLnWtRuPE1zpFrq2j6ZPG4S3tb62aaa 7Xy1kMsYE0Z2Alk4
DcxNz1CpXAwPDnhvUdf8DaUl7cWsED+GG063lhDMzLcRQnc6HAUoIwOGO/JP yfdqxe6FcWXhvXIJ
4Ei1DXLddKtoxqVzfuzMJFVjJNg7F813ZVT5VSRst0Xbt/GUSXl/a6tYz6fJ p2lQ6jeEo8iRbg5k
QOE2vs2cFSd3zADKNiw3i7RoluLybVYE0+OK3fe8LqFEsrxJIZD8rRuy8EDA A3birAi25X2A25jM
qAwRo771BDuVG3cNxyAeQuSB3IAyM5GZ4m0+81LRhDYCBrmO6tblFnkKI3lT xylSwViMhCM4PWj/
AISfSv7P+2+dPt83yPJ+yy/aPMxu2eRt8zdt+fG3O35vu81b0zVbHWrBb7Tb lLm0d3RJo+VYoxRs
HuNynkcHqMis9VqBkf2XrWo3EuoXctrpmoR2U9nZfZHN0sRlKMZWLom4ho48 JtAG1sltwC4Efg3X
IxqVyptTPcPpskFvNqdzcBDbXLSsrTyqzYYEYIUAEkbeNzdXca/Fb+LLDQDb ztJd2s1yJhE5RdjI
ApYLt53NklhjCg8uuR/FGjR6fDfteYtptPk1KN/Kfm2QIWfGM8CROOvPTg1S clsBh6/4X1jVtdiu
EvENpFe2l0m+7nQJHFJGzQ+QmI2JKu4lfccsE2gBXXQisNd0kz2ekxadNZz3 E1wtxdzuskDSyNI4
MaoRKAzsR88eQQpwRvNyHxRo09ncXUd5mG32lj5TguHOI2jXGZFc8IyBg54U say9Y8YG3tNOutJt
XvRLevBc2rwyR3CqlvLMyrGwDCUiNSqsBuDDoGDA956WAoXng7UYbe60jTBa vpd3oVvozXFzcss0
CxiZfMCLGVkO2YHG5MlSOM5Fc6UfFD6pqGmTJcQJrq3lq8V7Jbx3SixjgbZc Q5ZQGZ+VByYyhxk4
6MeJrddVvhJPA2mQ6faXcM8WXMpmkmUBdud+7y0ChQSS2BnIFSSeLtEhsorq a7eJJbj7KkclvIkv
nbC4jMRXeHKjKqQC2VxncuXeQGXa+HdS0hdLu9Nt7GW5toruKS1mvJgn+kSp MzecyyO7Bo8ElRv3
FvkwFrUstO1GDxTcahcNaywXGm21vJJGWRvOieViRGQQEIm/vkjbjnOaksvF GjajeR2treb5nyoB
idQJACTEzEALKACTESHABJUAVJp3iHTNWuGgs53Z9hkQvBJGsyAgF4mZQJU5 X5kLD5l5+YZTcuoG
nRUYmVrh4AH3oiuSY2C4JIGGxgn5TkA5HGcZGec1rW7y38QxaVDqelaV5kUb QS6jCZPtkjuymOIC
WP5k2qSAWJ81eBxulK4HT0Vzlp4juY9d07QdTsXS+ube5laaKNzERFIqKwID KodTvwXymVU5LLkh
8aaJdW6ajb6ojaaLKe8Z/s0h3xxCIs6tjGEEmGXBO444KMKOVgdHRWRD4o0a ezuLqO8zDb7Sx8pw
XDnEbRrjMiueEZAwc8KWNU/+EstLh7a5sJkn09b1dPviY3R7eaRV8vIODne6 Rsm3IMnJXy2FHKwO
joqOSZYniRg5Mr7F2xswB2lvmIGFGFPJwM4HUgHE8YXur6V4evdV0q4sY/sN rNcyRXVq8vm7E3BQ
VkTb0Izhuo9ORK7sBv0VmWFzc29xHp+rX1rcahOkk8X2a0eBTEhRWyGd+Q0i /wAQzuGBwTVNvGvh
5fs+dQ/4+LWK9TEMhxbybtszfL8kY2nczYCcbiuRks+gG/RWZN4h0y31QadJ O4n3rGzCCQxRu2Nq
PKF2I5yuFZgTvTA+Zc6dKwBRRRQMKKKKACiiigAooooAKKKKAMbxd/yJeu/9 g+4/9FtRR4u/5EvX
f+wfcf8AotqK7cLsz6LJf4cvUPCP/Il6F/2D7f8A9FrV7U9MstZ02fTtRto7 m0nXbJE44I/oQcEE
cggEc1w3h34leEbDwxpNnc6tsngs4YpE+zSnayoARkLg8jtWn/wtTwX/ANBn /wAlZv8A4iudwmpX
SZ5FTC13NtQe/Zj/ABHJb6BqOkXsF5pWmpDaz2MQviYbeJHMJyGA2ll8oYhy m8bsMoQ1z9p4IvtQ
8PaM0kH+v0Cz067t7i+ubTyNiNuLxxY8/wD1pBjcpjZjcNxxu/8AC1PBf/QZ /wDJWb/4ij/hangv
/oM/+Ss3/wARTSqLozP6pX/kf3M2tJ0+8stZ16aYQG2vrqO5gZJCX4giiZWU qAMGLIIJzu7Y5wNV
tf8AhH/hZY6fdTwf2jYWtstpGr8XV5bhZIokBwX3vEBtGGIJxg9Jf+FqeC/+ gz/5Kzf/ABFH/C1P
Bf8A0Gf/ACVm/wDiKSjO+wfVK/8AI/uZFPp95oniHwvp2hiCf7Dot1Asd7IU 82NHtFGZFU7W4Bzs
YHBGBnctO6+Htx9ntLSORLyAaRb6TOZL65tFCxBx5hihOJgwkP7tmXG3Ab5i Ro/8LU8F/wDQZ/8A
JWb/AOIo/wCFqeC/+gz/AOSs3/xFO1RdGH1Sv/I/uY2506a41jWdMDIk91qV hrELOSFkhia3WRRx
kuptzkAYHmxZI3cWL7w/qrnV3tJ0xeakl35C3UlsZohbRRbGmjBeIh49+VBy FCnhmxD/AMLU8F/9
Bn/yVm/+Io/4Wp4L/wCgz/5Kzf8AxFLln2D6pX/kf3Md4Z8K3+i3GmPdXME/ 2SLUkkdGkJc3F1HM
hG8s33UOdzE5PVuTUH/CE3k/h7S9KmuoI/I8N3GjTyoC+JJEgUOoIG5R5THk g9PU4l/4Wp4L/wCg
z/5Kzf8AxFH/AAtTwX/0Gf8AyVm/+IotUve34B9Ur/yP7mNs/Ct2lhqjTWlq t3dJCixzapd3m4RM
zr+/kIaM5c7Si5jb5/nOFFS7sNb04eG4/Nga7OtSSW9vPdS3KRJ9iuMxmdwJ H3EOd7A7PMwFYIAb
v/C1PBf/AEGf/JWb/wCIo/4Wp4L/AOgz/wCSs3/xFFqnYPqlf+R/cxs3hfWD pNrbQ3iKWuLq4uYo
7ueBUknmMocSRbXkEe512EoJN2SUIGDSPD2u6Bb6etkdOmn/ALIs9NuHmlcL A0Af94ihcygmU/KT
H9wfN83yu/4Wp4L/AOgz/wCSs3/xFH/C1PBf/QZ/8lZv/iKLVOwfVK/8j+5j brwfcTeK7i/2pLaX
N7Besz6hcoImiWIBfsyERyHMIIdmGCwyrBAGsXPh7UXsNQ0CE2p0bUXuGmun lYXEKzszyoqBdrHL
vtcsu0MMq+w74f8Ahangv/oM/wDkrN/8RR/wtTwX/wBBn/yVm/8AiKLVOwfV K/8AI/uY3Ufh9p2s
y+IZ7+y057y/uFls7yS1WaS32wRIudwGQJI2bZnawODwxFbljp94niG71W6E CfadPtYDFFIX2SRv
Oz8lRlf3qgHAJwcgVi/8LU8F/wDQZ/8AJWb/AOIo/wCFqeC/+gz/AOSs3/xF DjUatZh9Ur/yP7md
bGZi8oljRUD4iKuWLLtHLDA2nduGBngA55wMDV7LWrl7y1bTdH1nS7l1dYNR nMQiAVf3e0QyBxuU
uGJzlsY+UE0f+FqeC/8AoM/+Ss3/AMRR/wALU8F/9Bn/AMlZv/iKShNfZD6p X/kf3MiufCWrvp+q
2H2yC7+2+G4tK+2XEriR7iMTDe64b5W87JO4kEdDnNX9X8OXmoaxdXcUkCxy /wBl7Q7EEfZrt5pM
8d1YAep64HNVf+FqeC/+gz/5Kzf/ABFH/C1PBf8A0Gf/ACVm/wDiKdqnYPql f+R/cyLW7J9Fu59c
murGJRrS30H2qVooSDYi2KyyhGEXO4gkEE7F4LjE/hK6vLXQdNVoPtf2/Vb4 yXMCFI1jaW5mWcD5
v3b4Tb82MSL8x4y3/hangv8A6DP/AJKzf/EUf8LU8F/9Bn/yVm/+Io5ZtW5Q +qV/5H9zNq70+8k8
WaVqcIga2gtbq2nDyFXHmNCysoCkNzDgglfvZ5xiuIltbM+DviHqVjP9otJr W6itrhHDxzR+XLcM
ysOGxNdTpkHAEYHVWJ3f+FqeC/8AoM/+Ss3/AMRR/wALU8F/9Bn/AMlZv/iK FGa6MPqlf+R/cxuo
eFtV1iLU5r+a1S7nSyjjW2lkjWUWs7TBi4+aEyFyuF3mPAIZzxUmm+Frq1k0 24ZIIZItVe/uE+2z
3TEG0e3H72X5nblD0QBeMErlm/8AC1PBf/QZ/wDJWb/4ij/hangv/oM/+Ss3 /wARRaptYPqlf+R/
cxsfhHUbCbWf7Pv0S3uLe3hs03NG8caTTSPBvX7iFZTGjoAY1xhcoCzNE8Ia lYXcE9zPA23Wm1Fl
+0zTssZsTb7N8uWdg56kgFRkBeEEv/C1PBf/AEGf/JWb/wCIo/4Wp4L/AOgz /wCSs3/xFFqnYPql
f+R/cy1a+HLyD+yd0kB+x61e6hJhjzHN9q2gcfeHnpntw3J4zT8H+D7jw/cW 5uFRhZWX2KGc6hc3
DTLlMsI5CEtwfLUlF3dQAwC/M7/hangv/oM/+Ss3/wARR/wtTwX/ANBn/wAl Zv8A4ijlqdmH1Sv/
ACP7mdaDN9odWjQQBFKOHJYtk7gVxgADbg5OcngY5yNXg1p7iZbS107UtPub cQy2d9MYVQ5bcciK
TeHVgCpwBs77jjJ/4Wp4L/6DP/krN/8AEUf8LU8F/wDQZ/8AJWb/AOIpKE10 D6pX/kf3Mm0rw9qO
m6lok5Nq0Ftb30M0aysPs6zyxyxxxDbhkjEYjGdnygEAY21Qn8F6jL4WsNMW e18+38MXOjuxdtpm
kSBVYfLnZmJsnGeRx6Wf+FqeC/8AoM/+Ss3/AMRR/wALU8F/9Bn/AMlZv/iK dqnYPqlf+R/cx3ib
SnW41PV5LiCK38rTWQybsB7a6kmPmEKdkZ3qC/OwbmIwvOJYTzawLyIS2txP qniK2u4ZbJi8Bht4
7WSRlfq6KYTD5gABkKghN2F2f+FqeC/+gz/5Kzf/ABFH/C1PBf8A0Gf/ACVm /wDiKaU19lh9Ur/y
P7mdbIZg8QijRkL4lLOVKrtPKjB3HdtGDjgk54waHiTTptY8LavpluyLPeWU 1vG0hIUM6FQTgE4y
fSsH/hangv8A6DP/AJKzf/EUf8LU8F/9Bn/yVm/+IqFCa6B9Ur/yP7mO+IFr Z6lp9hpss+Lu5uhF
Dbo48yWOUG3nZV6nZDPI+QMKVBOQCDU13TtR1jxT4h0yya1WC+0K1tLhpiwa JZHu18xMAhioJ+Qg
bsj51xzZ/wCFqeC/+gz/AOSs3/xFH/C1PBf/AEGf/JWb/wCIqlGaWzD6pX/k f3MbdeD7ibxXcX+1
JbS5vYL1mfULlBE0SxAL9mQiOQ5hBDswwWGVYIA3Z1x3/C1PBf8A0Gf/ACVm /wDiKP8Ahangv/oM
/wDkrN/8RScJvow+qV/5H9zOxorjv+FqeC/+gz/5Kzf/ABFH/C1PBf8A0Gf/ ACVm/wDiKXs59mH1
Wv8AyP7mdjRXHf8AC1PBf/QZ/wDJWb/4ij/hangv/oM/+Ss3/wARR7OfZh9V r/yP7mdjRXHf8LU8
F/8AQZ/8lZv/AIij/hangv8A6DP/AJKzf/EUezn2YfVa/wDI/uZ2NFcd/wAL U8F/9Bn/AMlZv/iK
P+FqeC/+gz/5Kzf/ABFHs59mH1Wv/I/uZ2NFcd/wtTwX/wBBn/yVm/8AiKP+ FqeC/wDoM/8AkrN/
8RR7OfZh9Vr/AMj+5mx4u/5EvXf+wfcf+i2orlPEXxK8I3/hjVrO21bfPPZz RRp9mlG5mQgDJXA5
PeiuvDRaTuj3sopTpwkpprXqf//Z
------=_NextPart_000_001A_01C4D3ED.238BF060--
|
|
|
Re: More about 'partial code generation' [message #389558 is a reply to message #389556] |
Fri, 26 November 2004 13:33  |
Eclipse User |
|
|
|
This is a multi-part message in MIME format.
--------------040105010503090708000705
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit
Ian,
It's really quite simple. The problem is when you don't get it quite
right, it's hard to tell what's wrong. Good luck. ;-)
Ian Ward wrote:
> Ed,
> Looks like it could be a bit hairy!
> I should have a look at plugins etc. anyway - I've been trying to
> avoid it up to now!
> As this isn't blocking me for now I'll treat it as a sort of
> background job - I think I'll need to 'mug up' a little on the subject
> before I try to do what you've suggested.
> Thanks
> Ian
>
> "Ed Merks" <merks@ca.ibm.com <mailto:merks@ca.ibm.com>> a
|
|
|
Goto Forum:
Current Time: Mon Sep 15 17:47:19 EDT 2025
Powered by FUDForum. Page generated in 0.08763 seconds
|