Home » Archived » BIRT » charts within a draw2d figure
charts within a draw2d figure [message #32481] |
Mon, 02 May 2005 12:01  |
Eclipse User |
|
|
|
Originally posted by: nicholas.gauthier.utah.edu
Hello again,
I am interested in using the charting project within a GEF
GraphicalEditor that contains Figures. There are a couple of reasons I
am interested in doing this:
1. The GEF framework will only call paintFigure() when a change has
occured, otherwise it stores the figure in some soft of cache. This
would eleminate the flashing appearence of redraws when implemented.
2. I would like to allow the user to drag, move, and resize charts
within the edit part. GEF has a whole framework for this using commands
and edit policies.
So I went about implementing a figure with a Birt chart within it. I
wanted to just implement within the org.eclipse.draw2d.Figure the
paintFigure(Graphics graphics) method. Within this method my plan was
to pass to Birt the graphics object like:
************************************
protected void paintFigure(Graphics graphics){
IDeviceRenderer deviceRenderer = null;
try{
deviceRenderer = PluginSettings.instance().getDevice("dv.SWT");
}catch (PluginException ex){
System.err.println("Oops, can't find the device renderer.");
ex.printStackTrace();
System.exit(1);
}
deviceRenderer.setProperty(IDeviceRenderer.GRAPHICS_CONTEXT, graphics);
//now create chart as shown in SWT examples
}
************************************
However this didnt work and the deviceRenderer must take a GC object as
its graphics context. It turns out that Graphics object
(org.eclipse.draw2d.SWTGraphics) does have a GC object associated with
it, but it is private. Is there anyway to do this?
Thanks for your help! Nick.
|
|
| |
Re: charts within a draw2d figure [message #32689 is a reply to message #32481] |
Mon, 02 May 2005 10:48   |
Eclipse User |
|
|
|
Originally posted by: mpadhye.actuate.com
Nicholas Gauthier wrote:
> Hello again,
>
> I am interested in using the charting project within a GEF
> GraphicalEditor that contains Figures. There are a couple of reasons I
> am interested in doing this:
>
> 1. The GEF framework will only call paintFigure() when a change has
> occured, otherwise it stores the figure in some soft of cache. This
> would eleminate the flashing appearence of redraws when implemented.
>
> 2. I would like to allow the user to drag, move, and resize charts
> within the edit part. GEF has a whole framework for this using commands
> and edit policies.
>
> So I went about implementing a figure with a Birt chart within it. I
> wanted to just implement within the org.eclipse.draw2d.Figure the
> paintFigure(Graphics graphics) method. Within this method my plan was
> to pass to Birt the graphics object like:
>
> ************************************
>
> protected void paintFigure(Graphics graphics){
> IDeviceRenderer deviceRenderer = null;
> try{
> deviceRenderer = PluginSettings.instance().getDevice("dv.SWT");
> }catch (PluginException ex){
> System.err.println("Oops, can't find the device renderer.");
> ex.printStackTrace();
> System.exit(1);
> }
> deviceRenderer.setProperty(IDeviceRenderer.GRAPHICS_CONTEXT, graphics);
>
>
> //now create chart as shown in SWT examples
> }
>
> ************************************
>
> However this didnt work and the deviceRenderer must take a GC object as
> its graphics context. It turns out that Graphics object
> (org.eclipse.draw2d.SWTGraphics) does have a GC object associated with
> it, but it is private. Is there anyway to do this?
>
>
> Thanks for your help! Nick.
Hi again,
I am not totally sure I get what you are trying to do. However, the
chart library does have a Figure wrapper implemented for integration
with the BIRT designer.
I suggest you take a look at the classes
'org.eclipse.birt.chart.reportitem.ChartReportItemUIImpl' and
'org.eclipse.birt.chart.reportitem.DesignerRepresentation' in the
org.eclipse.birt.chart.reportitem plug-in. This might help in what you
are trying to do.
Thanks,
Milind
|
|
|
Re: charts within a draw2d figure [message #33536 is a reply to message #32689] |
Tue, 03 May 2005 13:05   |
Eclipse User |
|
|
|
Originally posted by: nicholas.gauthier.utah.edu
This is a multi-part message in MIME format.
--------------010406020107070907090808
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
Hello again,
So adding creating a image and rendering the chart into the new image
worked perfectly. As you can see from the screenshots I can now drag
around and resize multiple charts on the same GraphicalEditor.
My new problem is that rendering onto an Image allows limited user
interaction. Sure I could add a mouse listener and listen to events on
the entire figure. But what I would really like to do is be notified
when certain points (for a scatter plot), lines (for a line chart), or
rectangles (for a bar chart) are clicked on. I know that there is a
trigger framework for handeling this within AWT & SWT, and that it is
not yet implemented for SWT...but even if it were implemented, rendering
onto a image (I believe) would not allow this interaction.
Is there perhaps a way to translate a mouse click location into the
selected point on the Image rendered chart?
Or any ideas on how to solve this?
Thanks for your help! Nick.
Milind Padhye wrote:
> Nicholas Gauthier wrote:
>
>> Hello again,
>>
>> I am interested in using the charting project within a GEF
>> GraphicalEditor that contains Figures. There are a couple of reasons
>> I am interested in doing this:
>>
>> 1. The GEF framework will only call paintFigure() when a change has
>> occured, otherwise it stores the figure in some soft of cache. This
>> would eleminate the flashing appearence of redraws when implemented.
>>
>> 2. I would like to allow the user to drag, move, and resize charts
>> within the edit part. GEF has a whole framework for this using
>> commands and edit policies.
>>
>> So I went about implementing a figure with a Birt chart within it. I
>> wanted to just implement within the org.eclipse.draw2d.Figure the
>> paintFigure(Graphics graphics) method. Within this method my plan was
>> to pass to Birt the graphics object like:
>>
>> ************************************
>>
>> protected void paintFigure(Graphics graphics){
>> IDeviceRenderer deviceRenderer = null;
>> try{
>> deviceRenderer = PluginSettings.instance().getDevice("dv.SWT");
>> }catch (PluginException ex){
>> System.err.println("Oops, can't find the device renderer.");
>> ex.printStackTrace();
>> System.exit(1);
>> }
>> deviceRenderer.setProperty(IDeviceRenderer.GRAPHICS_CONTEXT,
>> graphics);
>>
>>
>> //now create chart as shown in SWT examples
>> }
>>
>> ************************************
>>
>> However this didnt work and the deviceRenderer must take a GC object
>> as its graphics context. It turns out that Graphics object
>> (org.eclipse.draw2d.SWTGraphics) does have a GC object associated with
>> it, but it is private. Is there anyway to do this?
>>
>>
>> Thanks for your help! Nick.
>
> Hi again,
>
> I am not totally sure I get what you are trying to do. However, the
> chart library does have a Figure wrapper implemented for integration
> with the BIRT designer.
>
> I suggest you take a look at the classes
> 'org.eclipse.birt.chart.reportitem.ChartReportItemUIImpl' and
> 'org.eclipse.birt.chart.reportitem.DesignerRepresentation' in the
> org.eclipse.birt.chart.reportitem plug-in. This might help in what you
> are trying to do.
>
> Thanks,
> Milind
--------------010406020107070907090808
Content-Type: image/gif;
name="screenshot-charts.gif"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="screenshot-charts.gif"
R0lGODlhXQNyAvcAAB4eHtTU1Gtra7q6uoy9bOdIR1T1aioqKqioqOHh4QX0 D/oFCsqFbJqa
msbHxZENAEKuKg3ZEHn2hfSKkOw2OFtjFBL5KCT6OC76QqbK8ICAgPb7//z+ /+r2/+b0/+33
/+Hy/+Ly//7//93w//j8/+Dx/9nu//r9//H5/+Tz/9ft//X7/+j1//T6/9vv /9/x/+/4//P6
/+v2/+n1/9bt/+z3//3+//f8/97w//L5/9ju/+74/+Pz///M0f/09f/N0v/r 7f/L0P/X2//s
7v/19v/29/+4v//V2f/W2v/q7Nzv//v9/+X0//D4/+f0//n9///Jzv/CyP/e 4f+5wP/f4v/9
/f/o6v/Y3P/p6//Dyf/Eyv/Axv/4+f/Kz//i5f/+/v/Z3f/h5P/g4/+6wf/B x//3+P/j5v/a
3v/Q1f/z9P/y8//7+/+/xf/u8P++xP/GzP/k5//O0//l6P/8/P/t7//U2P/T 1//Fy/+9w/+7
wv/d4P/c3//P1Nru/9zw/+Xz//D5/9rv//n8///m6f/S1//x8//b3//R1f+8 w//w8f/R1v/5
+v/6+v/6+//Hzf/v8P/v8f/S1v/HzP/m6P/n6f/w8v/Izf/x8vv+/9jt//L6 /+73/+f1///G
y//n6v/b3v/Q1P/y9P+9xP/a3f/u7//d4f/8/f+/xv/Fyv/T2P++xf/7/P+3 vv+8wv/k5v/l
5//5+f/P0/+7wf/Izv/c4H9/f9Xs/+Py/+n2/+z2//f7/97x//3////z9f/E yf/9/v/Jz/+5
v//U2f/39//+///p7P/o6//t7v/Z3P/DyP/Ax//Y2//f4/+6wP/O0v/i5P/j 5f/e4v/K0P/g
5P/ByP/4+JK035/D6hErcJi85Iut2Rgydh46ewokaixIhzNPjT8/PyVBgX2f zYSm03eXxzlX
k0dlnk1NTUBemVVzqmmJvHCQwWKCtlt7sE5spIyMjNnZ2fDw8F1dXXx8fOnp 6bKysqRQK2+z
Tq+zfdImHn43Dfp0f9TQyAAAAODg4P///yH5BAAAAAAALAAAAABdA3ICAAj/ APnx00CwoMGD
CBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOqPClwYLeX MGPKnEmzps2b
OHPq3NlNQ8ufQIMKHUq0qNGjSJMqXcq0qdOnUKNKnUq1qtWrWLNq3cq1q9ev YMMe9akBm9mz
aNOqXcu2rdu3cOPKPetTrN27ePPq3cu3r9+/gAMLHkwYKMFtiBMrXsy4sePH kCNLnkw5cd3C
mDNr3sy5s+fPoEOLjkqQm+nTp/ulRs26tevXsGPLnk0b9uXRuHPr3s27t+/f wLcSDEe8eLh+
yPsdT47cuPPn0KNLn069unXnt4Nr3869u/fv4HGD/xtPvnzR8uOHEvTGvr23 fuzhw28/3739
+/jz69/Pv7//9tmFJ+CABBZo4IEItgTOPww2yCA456GnngbfVGjhhRhmqOGG HHbo4Ycgkneh
iBkGmOCJKKao4ooshrWggw1CSNSLD05Yzo3lIJcjczzqiOOPQAYp5JBEFmnk kC+Cc2OSQprY
4pNQRinllCeiJ6FQVv4jY1AEoeMlOv142U8EBRjAAAUT5CPBAguE+eWbcMbp 5T9y0kmnnHjm
qSecNI4Xo5xOUinooIQWauhvVqYnFEHmNIqcoxEsoMA9GOBjjz4QFNBPo5x2 6umnoHb6T6ik
lmoqpzTGGGqgh7bq6quwxv/qooNbLqqBO7i60w+u/UhggAQTKMAmPhJEsGuu DbrDIK7/IJur
ssomC620zFIrbbLLVtvss9zimio43ebKqqzklmvuuejy821RBKXjbjrIwVvA BRQsYEEEBChQ
QJvvpvOPu//6KzDA/f4bsMAG90vwwu8mPLDDAyvc77cSvztuuhhnrPHGCVrJ rgbthCxyO/08
YMAC+xCAsgEKKNDPyP+EHHM7M8c8s8g240zzziPzzLODP8tMM9A9j5zqg0WH fDHHTDft9NPf
EcTO1OwgV3UFFzgAQQUUlKnPPf1Qzc4/U5M9dtlni0222WevLTbaaLPtdtpz v213n33azc7S
UPf/7fffgGdGkDqEI1e4BCqzyYAFClCAQT+EE/6P5JRXHrk6k09OeeaXW875 5pV/jnnnlydJ
uOmk8x346qy37rpWBK0j+zr9yN4PBPrYwwABDCyQT6W1z/6P7MOvU7zxswuP PPHLM5j88cU7
2Dzzxjuf/PXkJZ/99euo/vr34IcvvmEakGM+Of2Y388CEuQzwQT46mtP+ufX b/8/9uev//78
9+////rz3vgGSMACOo0g4kigOPqRwF4lbgGLa5w+GKjAClrwHxbMoAY3yMEO evCDGhSgAUdI
whK+iiDjSOE4kLPCHvFIhTCMoQxnSMMa2vCGOMzhOERowh768IcrIog2/4ZI xCIa8YhITKIS
l8jEJjrxiUTkIRCnSMUqdocg1siiFrfIxS568YtgDKMYx0jGMmpRilZMoxrX CBqCZOONcIyj
HOdIxzra8Y54zKMe9whHNLLxj4AMZF8Ico1CGvKQiEykIhfJyEY68pGQjKQh V0LJSlrykpjM
pCY3yclOevKToAzlSDJAylKa8pSoTKUqV8nKVrrylbCMpSxnScta2vKWuMyl LnfJy1768pfA
DKYwh0nMYhrzmMhMpjKTSZBlOvOZ0IymNKdJzWpa85rYzKY2t8nNbvKymRmA kTjHSc5ymvOc
6EynOtfJzna6853wjKc850nPetrznvjMpz73yf/PfvrznwANqEAHStCCOoiU 4DSoQhfK0IY6
9KEQjahEJ0rRilr0ohjNKIwQqgFSavSjIA2pSEdK0pKa9KQoTalKzclRj670 pTCNqUxnStOa
2vSmOB1nS8OZ05769KdADapQh0pUle60qEhNqlKXytSmOpWoR32qVKdK1apa 9apYtWdUs8rV
rnr1q2ANq0y3KtaymvWsaE2rWrWagYSu9a1wjatc54pVstL1rnjNq173elK7 8vWvgA2sYAe7
T78S9rCITaxiB2vYxTr2sZCNLFgbK9nKWvaymAUqZTPL2c569rMg3SxoR0va 0pr2n6I9rWpX
y9rWljO1ro2tbGfbWdj/0va2uM0tYW2r29769rdv5S1wh0vc4l5VuMZNrnKX K1TkMve50I3u
Sp0r3epa97oWpS52t8vd7gpUu94Nr3jHG0/wkve86E3vQdvaUZ6q973wja9O 2etS+dr3vug1
L373y9/e6re/AA5wa/8r4AIb+LMEPrCCFxzZBDP4wRBmLH3dG+EKW/iyDr6w hjec1gxz+MMg
7qqHQ0ziEj91xCZOsYqHiuIVu/jFNm0xjGdM45TKuMY4zvFHb6zjHvs4ojz+ sZCHTNAgE/nI
SNankZPM5CbDc8lOjrKUWTrhKVv5ygOFMpa33GQtc/nLRPYymMfcYzGT+cw0 NjOa17xiNbP5
/80kdjOc57xhOdP5zhG2M573rGA98/nPAfYzoAeNX0FjmTk5RjSOFT1ftxLa noh2oaQnTelK
W/rSmM60pjfN6U57+tOg/vQ/Ih3qUpv61KhOtapXzepJjzo5r63yoyEN61bb +ta4zrWudy3p
VyPH17wOtrCHTexi9wPYsXb0rOfJaBo3e8bPXq+yl03tNMu62vL8Nbbjq21y GvrQx942fLvd
6PaKO57kPvd5073Ra6ubnex+d3jj3aBvX5ne8uYuvv9hbyvvO9/X3Xe/p/xv gFdX4O42uDkL
rnDoInzaDR8nwyO+3Iebm+LlnDhu4fEO5JyjAfQAqMbprXF0BqDj/f84BwLi 0aCSjzMB72Cu
xeuLcXG6XLYB6NE5Qu7PkYfb5j+fJwJ0zvObw8josZ05hWvuIKS3VgD9GACD 4tHxBvzT5/9M
AHKk/o8EzKMf82CQ08UedOMqnekSLztxkcPzf8Sj2wM4B3JATnZ4QD3mdu/H O4rej7wLAB4t
/7nfAQ90cmobOQloAHIQ4KDBj1PxXGcQPd6RALL/ox4pZ3yD4j53vgfgHFCP NnDPjvajq324
iu8HAgjvoAHwKObARs7XkwN7F1b+1QzSOnNu3/TT4z72c889j3jfIKiz3PD9 SP3iGeR65tSe
9jxSLulLH3jmzj7zx/+H3AFPj8OrvuvLh4f/9zU/dKv/XvGV17r5e498sjeA 5c1nEPrBv/7q
Z1z18Nf29v/R/XAjpx5u93vS53sMMnBSNnatFQDK13eNVw+zZ3lkd3zed3xv 53/hJnfMcQ6F
l3YRaH8YmBwaaHoL1w/ZR27w4IATaH8DSGUQh3YIGFsc1w8CwCDw8IHep4I3 aH/eF30iyIEC
+HsuJE5yl30bCIE1yIPk9oKqNX3U94PFNYTs9w9QVw8JUIEQKIAp6HYpB4H/ RnIWGIX/BnkO
AnO3l4ThNoVVmINXmFxMSH1KaFpDNw/Hh3kz+Goh5wBq2G3eB3vlB4GKx3ji V4dRuIFmKH/f
F4jipHsOkHt3t4be/3eHauiExdWGpfeGpRUPNogchIdyHkeCWPhzO8gcfCd8 zMF6gdcjXBh0
2qZ7yWGKDTJ0PLJzjhhunJhynkhuGFh/a0eA/JZwlciLvhUPCICB72CKiqdy 3cd4egiKFpgA
UDcPvNdteXcOiwh0qAiEqih4UEeN5RQAs6dyJZiNDXKMCJCMP/h5ereCyXZx TSiJ+GWJSEaJ
LgiM40aPYyaPTAePB2ePYIaPNaeP7Wha/ohxABmQpDWQFFeQBglaCBlxCrmQ ntWQDfeQEMlZ
EqlwFFmRmHWRBpeRGmlZHAlwHvmRkhWS+TaSJAlZJilvKJmSjrWS72aJsHaK aZeN/OiSYv8F
k+r2hqAodi13dD85akGJk3Glk+cGkP43lD65lD1JlEXJiwYYZUi5lELZdEHZ lE75VkYpbvqI
lWXXlFiZlWq1ldvWlUP5lVeplMAHI6zACkbwlnAZDFMwl3PZDGNwl3cpC7KQ B3yZB63QCogQ
mHgwmHggCqLgBojpBqqgCmzQmGxwCqewBZIpmcpABpZpmdQQBZqpmcmQBZ7p mb6gBaIpmqiA
CndwmnfQCZ3wBqz5BpLwmo4Qm5Ywm7MwC1Bwm7cJDF2wm7spDUHwm8DZA8I5 nD9QnMbpDHGQ
nHEQC7HAB87JB6AACmgwnWhwCNapCNgZCdpJCNxpB95pB6mQCnX/MJ51IAxH cJ7oiQTquZ5C
0J7uuQxXEJ/xiQxgUJ/1OQqjcAb6eQaf8AmG8J97EKB7QAu0oAcGqgelUApS sKALGg1U8KAP
ygxiMKETOg1hcKEX+gxesKEbCg1m8KEf6gquAAckCgev8ApykKJyMAksOggu Sgkw6gmeYAU0
SqPGgAU4iqPFkAQ82qNA8KNAOgRCOqTHQAdGSgekQAptsKRt8AhOCglQmghS WglUeglWWghY
qgZaqgahEApp8KVp0As+MKZkSgRmeqZFkKZqOgxl0KZtWg1cEKdxCguwsAh2 ygh42gh6ugZ8
ugarsApzEKhzYAqmUAWGaqi/8AWKqqjE/4BPZIlt8KiKagmWagmUDtKWcBmX dFmXeJmXe9mX
fxmYiECYhXmYibmYjvmYkTmZW1CZl0kGmbmZUdCZn5kFoTmaWlCaqJmaq9ma rykJsekIs2kJ
tYmbucmbvQmcwTmcwmmcx6mcy9mczxmd1Fmd15md29md3xme5Fme6Jme66me 7vme8jmf9nmf
+bmf/fmfhiCgA1qgB5qgDNqgEBqhFFqhGJqhHNqhIBqiI1qiJ6qiK9qiLxqj M1qjVnCjOYoF
O9qjPAqkQTqkQlqkR5qkTNqkTxqlU1qlV5qlW9qlYBqmZFqmZ2qmarqmbvqm cjqndXqnebqn
ffqngjqohXqoVf+QqIv6BY16T49abTJpqVV5llTJi2WHqZlqBHK5qXbZqXrZ l34JmIJJmIaZ
mIrJmI4Jmazaqq8Kq7I6q7Vqq7iaq6aJmqrZmq4Jm7JJm7ZprLqJrL6prEHA rM3qrD+AnMrJ
nM8JndJJndZ5CNipCNoZCdxJCN8JnuJJnub5rUcQruI6rkIAn+VKn+eKn/vJ n/4JoAJKoAeK
oAo6rw5arxJ6rxaarxq6rx7aryJaoiaKoirKopPgooMAo5QgowibsAvLsA77 sBALBBI7sUeK
pErKpE76CFAKCVKaCFRaCVZ6CVhaCFvKpV4KpmI6sj5QsiZ7skXApikLpytL p3a6CHj/ygh6
2gh96qeAKqiEarM3m7M666hQ6YvzSGsz6WtnaYbAWLRuebRJS5dLi5dNC6pQ O6pSa6qIiapX
u6qT6aqXGaubSaufeaujqatk26us+avBOqzFyrbI2gVvq6xy2wN0W7fQirfT urfT2bd/G7iD
W7jciriKu7iM67iPW65XILn2SbnqerntmrnwaqDy6rn1SgWhS6Gji6Gly6Gn C6KpC7Csm6Ku
C7uyS7sIq7A52rAOu7u827sUa6QWK7wZa7wbq7wd67wfG71fOr0ja71EgL3Z m7JlwL1y6r0u
K74wy6cyi741e6g4u6g7S2ssyI5N2JKQxpb5m6n7y6lM+6l8/xmqUTuYU3uq VtuYWMuqCoyZ
XevAoBm2EnyaZeuraCusamusUNC2vNnBy8qsIWy3yUnCzkmtfHutgJuthLut hzueifutjIsE
Mgy58mnD6Fq564q5Aaq58dq5DPq5EDrE+Eq6++oFSeyvqhuwrUuwsWuwtUvF Opq7SYDFvTsE
Wwy8Fzu8xXu8ybu8zfu8ICu91Fu91svG2uumcMyy3xu+41u+dxyo6Wuze8yo 7vvHNOeGNxlR
+Hu0SLupU9C/nuq0jCzAjkzAVZuqk5zAW8vAnPm1EEyaY8vJFHy2wJq2xLq2 uEnKyQq3H5zK
IyytrWzC1uq32Cq42uqdLWzLL5zLu/9Mw74MBjisn8G8w8Pcw5w7r1KAzPYq uvkaBkfMr6j7
ryQqzU5MzVF8sDWKzbibu9ysxb/bxUsqzhqLvBzLvB6rpel8xuusxu7sxvHM BXIMvi9LvjF7
vvicx4jKvn1cTz1LbYJM14RM0Id80J06Bv+7yAFMqo9cwJGsqllbyVwrq5gM tri6ybxqthbs
0Rkc0htsyr9Z0nSrytGat658wrCswi9tuN16y+AarjUdueeK0+mq0zrsrsTs w8ZMr6B7r2JQ
xPpquv1qBku81E08sK9bsLML1TZ6u1bso7vbzd+M1RhLvFtdzmOMzmYsstRL 1tj7zirbvS2r
1nTM1nbs1jT/q7773L48+74tmI8BDVEDrb8GjdB+rchPK6qC7dAGLMkITJkT fckWrckZ/die
3NGg/NGiLNIcDLdxK7cmfbcorbfVisItvcK0PNozHcOOy8vmOrmrbbns6to+ /cPHHMTKXNtF
fdTOnNu7vboC+8TALcVRTdzaXNUSm9zBm9VfTM5dfc5lHLJoTLIlW9ZtWgu1 cNZpTc91bL4z
m896LNf9vI7//Iskld6GvN59/dfv3cilSrXzbdiUfN+Knd+Nvd+dXMGfjMEg faxuS+CY7aya
zcoK/sosHcsuPcswXcveqrg0PeE2ndo5jeHC/K6by+Gyncy0bdtG3czPrNtK beLT//zb1Rzc
18ziVH3cVl2xMb7c4xzG5vzV0IvjY93O1d3jPl4LK4vW2S3k3E3keAzeSD7e /rx0TD5STq6p
Shvl7r3Q8W3lhR3R9v2qFO21tXrRYrurX87RFxzKGlzmJG3gmX3SnK3SDO7m Dh7nEE7nEj6u
FF7DeH7hO63hfR7bQe3hgR7ihE7ih87Uvg3F1jzFjn7FkP7iVz3pWg3GXC3G Xk3GYB3dOT6m
1H2y2vvpoI7d87zW9uzdRh7XOTvX9FTXy3bXB5/X6h3riazQgT3Atg7R9a21 uo7fva7fwL7R
kf3fk03mpWzmyI7myl7CC/7ZsszCck7a51nn1H7nFg7Mrf/Nw9sO1EItxN/O zLid1NHc2yi+
6Co+3Atb3LoLscjd7uE845b+3DeuztPN6frupj4O5KMO8G1d5HC9vgWf5N4G v+bd5Az/5A7v
v7Me8Q098Qd82FrewFwewV7O8WFO7JRt7B488s+K4Mt+8m0O2nAu2i4s7aZt 56gd8zmc4TRf
zDbv7USt80gs7j1/4k597is+9C2+7kSK9F7M3PDu3PMO3Zr+9Dve6dsb6kFu 9d2N9ai+9aqu
5Kwev64e9rDOv7IO8fAt8ZBM8Wp/8Vue8V2+8ZAd9wBe7CF/7Kic7Hhv8mye win/4H+Py9NO
roN/w9g+8z1d80A824tvxOHO80z/DPmK/tSNTvmPbvSRzsXurvTxfun0nulO n8ZQj7Kj7+9z
XM9Xf+r6nOp+zPoGqfDMBhD/BApkxcrIQYTBpixc2GzMw4eyZOWhmKdVK0QZ 8WzEI0qUG5Bu
VKliU5LNqVNbVKpURsalS2pRZMpMlsWmTV9adOpEherOzzudOr0h+kbSUUdJ LS2dNQvK06fA
ukydKi3IVaw9tG790dWrszhh48SKxccsH1Cg0KxFc8itIriR5BKia8eunVSp 6uytI+zIX8BI
BA8WUtjwsiuJEyMD07jxqFFnJJ/59MnQ5T2Z99CipceznlKlpIweHY3K6dPM xKxePS3M69fP
vMyeDc3M/+3brlzB4Q3n1Ss5weVMIj7IOCXknjxZYc7cGBbo0IsloV4dyHXs Q7RvP0bHOx1S
pNqMb/PIPCT0idRXYn/JfSH4auSrCRUqzf00vXzs50/E//8iAhRwmDIKLLAa LhJMEBZYFnGQ
EQgbkXANCtdYZZU5MpzDFFOq8NDDX74QUURiBjLxRBRTHKifflQUKIMMNNAA RhdrTJFFHHPU
cUcee/TxRyCDFHJIIos08kgkk1RySSaDtPEfFp+UckoqbWzRxIIQSoihhiCK aKKKLsoIEY46
+iikkUw6KaWVtmjpJTJimimKmm7KIqedtOgJqKCGKuooSZJyZClLmoIqKqqq wv8qq6208uor
scYq66y02GrrrbjmquuuvPjqC7DABhPMsMMUW8yxxyKbrLLLDNFss84+C420 0lBLjbXWYIuN
ttpwy2233n4TbrjijktuueaseC46LKarjjrssttOu+6+C4+88s5Lb7323otv vvrwy4+//v7z
T8ABDTxQwQUbfDDCCSu8UMMNO/ywihBH/KLEKq28UkUYZaSxXxX/JfhghBNW eGGGG3b4YYgj
NrjgiSO2GMoTs9TSCIW4dMhLiSqyCCONOPIoJJFIMgmlNt2EM8456bTzzjz1 9AkooYoyCiml
mHLqUKkStWrRIBp19NEfwBKLrLPQUosttw6BSxG5IqH/i5C78NKLL79APULU UUkVAjFTGUMV
sskoswwzzTj7DDTRaDXNVtVwdU1X2Xi1zVfdevMNOOGIm8S4QZCjRLlklWW2 2WehjRaIaan9
DjzxyDPvEfQgUS8R9ipx7xL4CpmPPvvw049cH8w9F90iCFQXQXYZdHARCBmR sJEKLcRQQw7v
xVfffSGO0sWAZ8zA4YovVn555pt3/nnoV3xy+OgZnlhjLTtm6GOIQg6TZDJN PhOkNFdmc6U3
X5JzpjpvwnOnPXH2kyhABSXUUKAT7WLoRY3uAemkRYpplHraWqI2tapdLWud 4prXvgY2sY3N
VFcwm2PQtqq1uaptsfLMrORm/ysq1I01d4NN3mizN9z0LViAC47gCGc4xCVr WdFx1rMeB7nI
Vcs717KctjTHLc95S3TgKt19Tkcu1RGBda1TVxlgpyDZvct28aLQvHhnrw/l a0T8Ql7yBlK8
gVmvemMkYxnNeEaLedFE1ENjla5nkI1pr0sgAxNFxFSyjZwMTSorCcvalD6Y xKx9OKlZ/H6S
sz/xbFA+OxQUgkYV/jGqUQBUWlgGaJZKQQ1TVNMU1ji1tb10DVRgQ0IEyaaY CqYqbaxiW2bc
Jqu4kWZuqBFhrvDGKy+g8Fd+E1bgilW4YyVuhtJpXBJuGLkh6JBy2Lpc5jbX uc+FbnThMh3q
Uqe6Jf+6zkBPbNfsane73FkxQ727lxZJJDw1/gOMx2tYOtv4TnjGU55pnJ47 5ymQN26MY1ya
Ave+JLI7hi+P40uZmvyIvpetjyYzex9PbnbI+e0sUD0r1M+g8khFEc1/lBTg pDBZwEtJLVNW
25RdGBhKB5LSlBNMJRguKBlWatCVHIQbraQwy1vZTVdhMGGv+AYs3vSyhb+E IbKaM0zGNe6Y
OZwcD8fTzG1xrlug+5Z8qGlEayYxm03kJheiSDt44U5euxsnFkEEPC62M53r RN493fpWuMa1
RvZko1ylhyU4Zo+f/hyD9+wIvjLpkXx8XFPLAAmzOQ2SZnkyZJ90Vj+K4u// ovqL5FU2irRK
SqppmTTgJhNYUq15SpShEtVKy4Yql6oKphl81Ss7GMta0Q1XYiDhrvTmKzOo MKgsJNbgjHU4
ozpncTW0zuOQqUynZgtzUYWmEKdZxHGhTqus0+a6YucusE5RrFUka718Z87g PayuJ2JrO+16
XvSmt4x0tec98xnHvXqpr3Uc2ZgCS9Dy9fF8LEmoIBlayIc6NpETXWRFG4nR /RGtaEbj6NI8
6jRLHXCkCvykaFMKQbGd8lRnU63aWtVamnpQliCsJW132tNc4la3fxuWC38b w6MOt5hLnRZy
K/dUHz5zqtIkoriOWC5zbfV17PIqdr9JRd3Ri5xZ/0QrOmtUXjGqV8pTpnJb /TXl9+rVY/L1
a33xaCaU5bewf+xvYv/L2AAjkn6KvJ9FESU0BV/2UZm9JIQ1KVJOktSTJgXl p7ym0gyzFLUv
9XArYfU2EceWlrOtLU9xqcvcApXFvvQtMIErTBkr1bhMtdaNletMIEazqqTz cVaxSV2uEvmr
R95ukq/43SaLd60xMp6Vq3xrXOfaRezFcsbyuqUt0xGggBVfmAl7UP7CSaEy s1NDbcYnNUvU
fozMH5w1ymDMdnSzIJVwninMZwv/GcOk0jAFB93hmIIY0bC9KYkZfeJHq1jS Qu3tC4Mpw0zb
cNM1bqqnofpDqVaiFrWg6v8QrQrdH+9nuuiqrhNVbeSwhrO7Sz6rvtJqvVkL jJ1R1nXHPV5l
Xks5y8DeHpfpG9D7Gtug+3WZsv3bbABDO6KQLbBk3wzJOGN7ztomYIQ928kF 9nm0fwE0uQXN
4VWydoPrtilOQ/juW972p7zkrYstDWPhMou4jovWcfvNzBxza+AD5/HBSy3d UzM81df1ZsTH
qmSz/s7iTiYercO4sPZ+XO97b2PIbY3P8UKJjTiykq/1Kcd+mnzY9i32Hldu 2DKz78zwS/PM
2UztyVq7fzqHlIO37XM8f3bPoW2guEsb6NMiHYMfXjosm+5unUb9hPKmeouJ eu8Ya33G++bO
13v/uFyAs2fstSg7qauJ9iCjeshslyI43/7qcsa6i0+2+8bxznfsZ1+efsf4 Gu/6/Sv9K50j
Pwji+dpllDd+sI8ns8vNDHM0y/yxlzdwtXF+7Ulm2/M9vzMCgV7h0hulcSuV 1LMgdFO6mWK6
D5Kt2CuheJu6FbK9SisqTNM9Tes6Ttshfwu7gBu4gnuus0OitEuX5YMiiNMu iYM7WJs7WaM+
jfu7XIOHd2CRc2gAenCewKMYHXSYAJjBfjgHBIiHFck7F0mAd9A77lOYFjEY NRI/fPq+GzE8
+Aq27jk5YhsolTMfyHM/yYM/ypO/AZu2+su8+9u8/Nu5/fso0PM/PQu6/3AT wNMzugJUpdUz
NNeqqQVctAa0rdmDwN2SQHu7NHyzQH3DQH7rNLADPh0Log/sseMTweRTuxLs puZDMnHyruhj
wemruxc0r44LgB05hxtknhy8ES8qxX5BgFAcRVSUklYUuXoSHu8bLyfEmCfc NSnUspITtu9h
PCx0PC1sP/V5OfeJOfmZPwJrswOjrJw7w86zpAfjrJBiw28jPZQyPcJAPVQ6 t6RjvQR0vTzM
qRGCN6lLoXmrutsTxNyjod0zxN5DxN8DtYATNYMzPqxCPgBRvm16uLZDwecr qxXcIroDmOqD
wVsTgH4YAIGIhxlsgOZ5xSFsngRgEYX8hwSYh/9+mAfAwzsiPK8kvL6ItEXw u0WRjEK8Orz4
4sW/8kUwA0b92sJhfL9ijL9jDMPIcjNHYkb84wr9g8bP678JA62T8jM4zEY5 3EbVWy1vPDRw
HDEGHEfZ8ylzrD1KC0SsUxxCLC53lBx4xDFFDDXncsR7hMR8lMR9ZL7scj7u UsFMFMgW5MRa
80RdY5FR/Id4oJ4BOAcWsUHAgweEPEK/7Id3YMV+CEwBgIeQ/AfDREwUycHh YZEEaAAWQQAT
WcwUkcyKFAh6eIcE2Mh6+EHKHIi83EvCDIBzQMgc8biPVELvI0mSDD8oFLzU PMkp3MUqXLwv
E6yCCkaE4sKF8kKHAsP/NUtGzLu5jDJDnkRDn+S/zgq9/wO3ACQtoyRApDTA brTDEGM3pyux
RkMxSFsxerM6ChxEdrxAaTlEDUxEeWyuRjS7RwSysiTBszTBflRLVwPItjyn tyTITuS4XJPM
fkAAxjSRAdCRI5RNHMFIHDlQHulMwROIicwRB12jUwy/HXFIi9SRCR0IhBRC igHQyRSIAs0R
Bl1QHVHNWBSv1ixJkYRN12zMXCS5ObrNXsxN/Do2ljusZVMsZ2usaKM5ZbS/ 45Sk5HxGzWLO
aQzK0RvKoXugOKTODbPOOpQppnyt13tKW3LActylCKzKFwsurCzPQjzPd0zP eGSuHRu1q4ou
/7JcHbO0LvqsxFa7RIqTO7fcRP6MS//MNQUFTQ/9B71ETHp4zADN0EKFB0IN TVXE0OGRzM6c
SAyl0B3cSyEcUYFw1AyN1MQ0xSD8B0sF1ML8h0G10Hqwywf9uNVMGCaMzVqs xYKJ0fJLSRpd
SRvNwpcUxkCSSUKiSYhCRjG0uZzUPCI9GuU8UjUESm8TSqG7sCctjHJrKUJL t9az0nB8uj10
tC2NNKocqgnEvawTU60kU640U69czzStxzVNuGuKRPmEU0pMS0ucuLgDr4vj SBfUU5D0uAAA
0VAdCHioBwXdSMDzUEL10Lu0UIHQyxw5h8as0IENSYXFEYY9EVRkkf8/ZaN/ DVjBu9iOtKtU
RZiJIbzXHLxWJL99osJ/qlGBasn1481ki8kunMkvrMnh/FWcRLDKWjBn7Ao6 i0Zu+7k2BMBr
LMqwOcoopUOlxE4FdEo9hEot7cOp7FJutUowRaqtMybeG9dlOtPgO1cQfE+F G8EAabiuWjW3
W0voYzJNVKt7vTvW5DsZ7AcBEAh4iFhCTcy7DUlCPVGKddhTFVgeQRG9/NOG lVTFtFuE3dS5
TFH1MlnzUzyVTTmXHLPehNnflNngpFlpu8llFFbL4jye5bljbU5qVNY3lM6i hVJzS8pCo9I7
TLR2w1ITi8oU88NJm9ovrUBw5TpxTSbfK1f/NGXE4ktXU2PXsV27OIXXOZXX gNRPPE0RKMvX
XBtcw0XIekiAgxXYvy3YhfxBwHUnx0zc77URzDQRI3RQkhUI68XevNXejvtY uHJcWU1ZWl1Z
3RQzZGs5y2U2zH02zQXS4gzWMhzW/+lJY7Uz0lVSN4xOohtAZz06KU1a183O K23aLOVDqeTS
P/TSq6vafAvX6/C6rvy04KXHrx1L+HTTdnU4tGS1FEzbirtTtoVLt1VVj1PF efDQz5xbwbtB
B2hf6iHUA11UgZVMykRUHjbcwv3bUzVixZRbFIlQB4DQv3RfQvXh9mXixb0y WKRNXZxR+vUy
+71R9qvcXI3ZXZ3Z/161yZq7WZ1ETmI10jqTxm4TvQUeWtQtJW082tS6zgle WkUTxwvGVqjV
4Nutt9wlT2IyzxDOwK0F3q4VXjVFuOKNz+OdxCKrz3hlS7WV4e6jYet7W12L B8TtVx+kwX4Q
wiAWPwvVEcKEUB0Z0CHckfENyQjFEVkeCFXUEVG04is55R9MZSZWWE3FNfh9 K/lF2fnCzTG2
Vcp92TO+3DTO3DWuWc4V0gTbyTgO3TRE4CRN1iVdVmxM3Qeewz6eUnVrykC2 VqfF4NqN2g3G
3Q7W3UUe00ZGz0cm4Ug2YbFk0xRWIn1010yW0xfGz0523hnO0xoG2Y+LBwRQ 2HeQZckEwv9B
pcxV1tt+SACEnIcJpZ7APIcpblhaPtX0pVuEBGkXCQAFBUKOVeKJRoCKZmLT FEwU5eLGhdWT
tc0wTr9fbNlbNWPEQuPFUmMBs+Y27twB/tydDaBupmOgrUYmZdbpLOfqRNrW TWdqZVpBnt2n
zWBtlVpEnmdFZpyBA2Ecwufk+rdF5Gf3ROGwNV4mwmSz9Ue0NegYRuhPVuhQ tmHte96+/mtc
tGl/mc31wunHVUkxllyffmb9jWb+nWb/rebNPWpszlk5k2OfXUMFFlqizGPT qupzlmCsxkOt
ZudB9k7aA2vx9NYwlY7h4917LtN8VmuwbE979Oe3tuS4ns93deH/f8TEgw4v vyavgpRLwFbV
jj1uJGTcudo+w57fZY5c9dvNn4bmoJbmoabmop7sICXDIVXqIuXm5Rzdb7Zj zm7SolNdaD3A
pXxd7YS9diZkrwZPdOxWdfxW1x472D5r2U5rDmTP4aVkfFThS+btgVbeggbu uxbuhIbe4t5T
5e4XiIxwvjvmF0WjZNbp6K5fxaZuxtZRYoRsH7U84hxD48xmOC7gYp3jn3XO oIVOPG7gZpUg
c45WBKxS0l5n7iTHQv7qeA7r8VxHYirr/RZhctXntQ7LtsbtddVtsuVHgv7t OqXXgXTw/pRe
Cs9yLZdw5m5ueMpwMN7wxJ5u/M3RyMPu/x6tPF+9Zu9GcQJusPH25jp+Tmvs bBmfahoHbRtv
bwqu1h2n3e88R0BMZCFPKnvmb63176+cRyW/bXVduBUu2xO0TzqdV+lrcBSJ XlHeck7v9MCe
q/YKXDMC88RDbJ5mWQ/PXxDX1eyO7O0GYBMX4O/W2fBm6jh3aheHanEmWj02 2tWN4Kue1hyP
XQvmancO9G0Fcta22nbsXRtTzxJudOIdcIB+UxZOXt+uawW3U7y2V1A2SE8P 9063cPd6bmVG
vytE9TKHScfmUWOUbFgHVpxtxlrv2Z9MYHC+Yzt3Ujx/Vm5EZ2GH3e2Euq5+ Z0MOz3S8SmZn
ZET33RGmbUa37f9pb9Nqj3QoR3Apt/S1zWsrx9dNF3eQ33JynydSPz8rZMn7 xVF2v+7HbvUR
X3PKbnPLBl1bP2BcL91wPt07J+c85+M9V1p1Jvat7s4HhOdDXu37bm1DN2sj n+3/9tp+fnSx
3W2BnmtKZ978ZHCOz/QHx/KQ/3rlHnm+HXVz13B0R3kydtnGZnl359VXpz95 f+M3N2AW1+x8
P2+p5nl/Z11p/cas1nGCP/bU/nGkV/gPLnJHVnRzlWR0FXCKFzIDt/pNhmFu 13pv12twB3vN
zz5yD9kzKnnI5XAyV3lcZfvJ0+4fhXs39lxa3+aar3tkNW8Y3/f0pmqfZ2+g /3uhN23/Y5dv
g/fxo094D85KxEfrDVx0AJ/kEPxnyK/6SZ98u678elXCjPN4vt587Ne+zqfY zy/7MD/7Wp1c
VT/zlk9z4eTuAJ53bVZxzL738qbzqB7nXlfvfxftgH9v2SX6bKXvQQeIQZQG evJk5eBBY1gW
LiyW5CFEIBInDqlo8RidjHRIkWrjsc2jkJBGJipZ6eSllIVWqmmpJlSoNDLT 9PJh8yaRnDqL
8Ow5rAxQoNW4ECUKC9aipIyWNmq65umaVavmUJ1jylSVrFl/fenaldi/sGLH ki1rtl8/s2Iz
ZNCgga3auHHTyq1r9y7evHr38u3r9y/gwIIHj6UrF+1dw2EV/xPOy5gVKyOS JwebYtlyszGa
NcuSledznlatEJHGYxqPKFFuVrtRpYoNbDanTm2pXVsZmdy5qUXp3TtZluDB fWkpXhwVqjvK
73Tq9Ob5G0nSHVG3ZH3WLCjatQPr4t27tCDix/cob/4H+vTO4rCPEysWn/h8 QIFCYx/NofyK
9kfqT+i/HQHakUoqdRhYhzBHKLggEg06KASEES5zBYUUIgMGhhiOMsoZHZ7x ySeGiLgHiXvQ
QoseKepRSilSuOhiNFTIKCMzYtho4zRh6KjjM1746CM0ZggppCuuwHEkHK+8 IgeTckzy5CBR
DkRJQQglxFBDEEU0kUQWXaTRRh19FP/SIyNBUlIiJ1WS0iUrFeLSSzHNVNNN Num0U088/RRU
GUMVxcVRSS2yFCNNNQJVVFNVdZVWW3n1VWP/IBYXW27BNRhjkWq6Kaedevop qJFmWtakdqF1
aqiHkQXZZJRdhtlmnHkGmmikIXIaaqqx5lpsstFm2xa46UYGb75FAZxwWRBn nBbILcecc9BJ
Jwl1jlhnCXbbcfcdeOORZ1556anXnnvwyUffffjpx59/AApI4IEILsiggw1G KGGFFmaoIYce
giiiISWaiKKKLL4I44w03ojjjjz+COSQRBqJpJJNOgmllAQZZKVCWDqkZRJc dunlEBhpxNFH
IIlEkkkoqcT/kkswzURTnXbeSUSeevLZ55+AIqUUU05BJVVVVmHVKFePgtVY qWZV+lYGhI2a
KtVVW3011ldPXdjWWSe2amStGlHZq5nF2hlooY1W2mmpsdbaa7HNBmywwxJr 7LHJKstss8kt
1xx00U1X3XXZadsdt+F5GwS44Yr7w3rtvSfffPXdl98h+ynSXyT/ESLggAUe mOC8R9Rr771C
TJjvhftu6OGHIY5Y4okqrtjiwTEmXOPCOTbc48NBRlwkkkku2eSTk0QpkMZW WtExQx9rKTIQ
JJcMJspjrnxmy2u+/GbMcspEZ50345zznkH5WVSgQBcq9FNEL3q0Vkl7tbTU XT99/6lgXe+F
qlgASBYBSqppXjsgAhN4QP8VUIH/A5vYxvaqKZhtM2ij1dpu1TZdrYZXcvuV bYSlm2L5BlnC
WZZxnPW3aD1nWtW6VrYOx60uKM5bjevB4yBHrsmdy3L2wZzmOOc50MFrdKUz 3elSp7p8XaF1
GXqdv2QXMNoRLEUGy13CqMC7G/luR8D7kfCGRDyKHY9JyVvelKrEMSxhQXpb 4pL1TJaR7HmE
TGZCk5rY5CY4yWxONfOB+XJWhPQJpWftG1TQDjU0RVGFUUh71Bfwhyn9tQVq UrvkYjKpyQBy
UlKddCAoQylKTB7Gf2k5FSoXCEGxke0yFZRV2mrFNtO4bf9XcYPN3IAlwt3g zYTD4ZsKlQM4
aQ3OWoXTFhQQ950afgtcOYwce3gYH3Rdbl2ba9fn3iU6A5FuXqdDghJXVyEn 8gt2/5odiWpX
MNy9SHcz2iLDfvcwL4RRYsWrGPIwxjwqbQwh0MsSyKgXR+yJqY7bw6PL2gSz lvRxfH8MJPp2
tj6j/AyR71Nk/BhptEZVwX6QYholLRU1TG2KLoZhzEk3ycBRsrSlLmWgAQOD 0pgWUDEEPMsq
W9VKWJ1tVp+RpQZpyUG49SqXIbQbCX+jNxQex2/CZKHgqEU4bBluO8rs1uJu +MwdmmuaPlRX
5tjVOXcFqIjcPOI3w8lEcoIBih3/OucU01nF2x1MCu5UWO8aFoYvQmx4EzsS Ps2ozzT280oe
A1nIRDbQkxVUZWViWZoSusfwzYx8OLmZIAnJsz8dklCGQpT8Gkk/RylNVCG1 JEk1ZdJPqrS1
Ln0tbGEL05Wi9Cw2Za0nNZnSueTUVWWL1Rgu+NMM4qqWHbylr+i2y7sZy5d7 Y1YwoRU4F041
hladITPFo9XHQbNclKPmD60pRLKGLl7dpFe91Mq6fbW1X2+VosDUaUV2Imx3 CxNDFx0WvIiZ
YYyALePFlJcxfjrvn21ErEBJJscwpcyOkM3j9/goPprVDKJ50uxEfSYoz8Iv UUVzZP0gKcn+
nZZ/MlXt/ydrq1vcxrbFLlZlXWjKNVTe1JNTU3Fud6uWx4RNpxN8ZXB9qjZb FXeoHsQlCG+D
1F4uFZhOlS4xpWpMqiLzqjRcHOMat1XJdbVy6QKiWIeoTfOiNYmpE6e+XOfe 2AEsvnO9Yjuz
CE/86pWv9OSvf41nsTMOWI3+ZKMbH5JgLy2Yjo69Y/f0uNA4VfahmI0onzLc 2USCVqMgJu39
TCuX/Y20fyh2bYpBvRgav7jUpi6pqWiLlxsPsJM6xulYWMXKHwNXuEOeZa7e duTk6nLJzW0y
dJ88zBYWE4ZV3VbisLxdcXVXml6uZlivOdZslnWb8ipdWs+8Vva6lc3oHJjt 4P9c33feN797
nWc9+/tXPedTwPv0s2Gjh2DFKpigDT5ooiNMWT9W+NEXlqghK8phjHp4fhz1 aCQ1TalKmhgw
K3VMYXC721eT6tQWv/hfZisqWEd8xZvkeFhk7ePf9jSWxN2grpFrVCUPK6l5 SxZT+/asYUf1
hceUYbKzqmXucvW7XwWztMVcbTJj28z3QnMTub1muLo53PS1q5zLXWd043nd gQ0wGpu3xsMG
lN6Etrf2Hsu9yHpPoeBj6IQta7M7ZRbgnBU4pRf54dF2VMQKVwunSenpjuc2 1H3v2sMxLniM
azwxqdwxyF1LcRrzOII7pWCthQzUIqe8qEmuW8uZDHP/J88cqtSdsnWRvUxl 75zZPe/hl8WL
TSJa+7wKyvbRt61mc8KXik6v6121KHV57tev9wQwn99d2OcBet5wrDdj7y12 hJZ9smhvdL/Z
Dmn1BXzDcc/o3A9ud5BumuGdPvEkBSj+ADatxq0ePPrTf/5Sfo3v62fx30Vd 8Vj32LeujLzJ
iYxyW1peub4uIbClkLB5XrHd3HXlnA2V3rhwmc+lXrSNF7WVlxEVXXpp23rN XhS1me2tE+5F
XV7xHhhV3e/t2WBp3Z9x3fR43ZckX9ghGtkp2tkxGr+Vj7/5hNuxD9xdVKVl 3yOVFvctnEjp
nYsFnvoV4WsVXoy9n/v13fqt/9bHzZ9YiJz98ZQFSd7JCVXlfZD/Zd6vbV6w dd50FSCV4dzo
6Zwz8RwDoh60BdHqjdkEepPR4csFPtHS1Z5c3R4W2dcHehHV+R4ZkaC7EVaB FV/XHd/XsaBB
LV++mZ2EQR8NSt+/RVr1uc9nyZ3B9WCm/SDeeZ8QthgRGiEoihISJuETuh+p /V35yRhuSaFk
PB6Q2drk7d9x9V+vcSEAeqEAgmGU2dwYHmAZJuAZml4aepUDsuG0sR7RwWEF xt4cllMGfpt8
0VUektse6lcI+uF/AWLWEdjWyVshUgTyzVFjOdjYQRgj7ptDRR+eRCL1vZ31 6aAlipb2+WD+
dF8Qpv9WqX1iKO5jAo3iXDCeKn5K480ayVVh/uGacRGVFtbiCGneCXHeCoWh lBlblWEX6QXj
AkZTl4EXWBmj0EngWVHgg1jgOCkd7WngHXLgNOIVF01d74mR1QFfCXLjCXpj ChriCoqj8rmg
OTqfDKbjI66jDUqiO1Jih4XWRmHiR9UjEKLW3uUjWYiAVE4lVValVV4lVmal Vm4lV3alV34l
WIalWI6lCIAf+5naQI7c/ZUcBukfFvLfQh6VLSoVLjaVLhLbRBqg6GEVMJ4H GmpkA65hmJGX
WV2bMo4kM5YkBr4XSoKbSsaZHrYkCPYVTI5gu20jvBEfCr4ROB6iTrbgg0n/ 1qI1FIUFZU60
HVHi4DtWIvZdYojR4yTZo1Oa5YsxBlneJm7mpm7uJm/25lTS5o7pYz/2VivS GlsOl1vmGlwi
2RY2ZBc+5BdG5C5W17Elk0WaoV8KI2CqYXg9YBsO3RuiF2LKoWLS4UlC45s9 Xe7NmbnZWbrl
2dUFnyB2I0DdZGfmJIOBZjmKZgySptoBUg3qTGpS1GoepaXRHcKNmEyV2Pc5 3KnZpm9GqIRO
KIVW6FUCp22t2ilmTVpOIeQd560FlXLOYlyynHPeInTmonTiJS+GnnUiYDNl Z0Z6F3d25GBG
YGG6HhItI3mmmXk+Y1w55nx1YGTGEx++pD394WX2/9nwGVigJRZOVkShjSO+ vaC+Pd8MXhYk
DmU7qqZREhxSXlrdwSaJyWbDZdyDRqWFrimbtqmbaiWGkoqq2RgCdWhxFiQs tSVCGpnKXd5y
uZxzxVx00dznUSQZ8mWMOo520igxCmbQEWbrlRmPQgjSsVW3Md0GDulK6l41 nlvv1UItqJtl
ClYgmmC81Sdnjoxn5mci8iR/NmKWrp1QCmiXEuiX7qBrYtpSxmZTnqlfCGed qumbDiuxFmtv
xukAzakTcihxShCeBtlBimhC7trKYd6J0mWK2uWK1hx1ViSMapcCokezbeTP qd4xumFIHibq
JKaPOiNjoiceQiY1SuaRhv8gqIIqfMpkqdLkqR7YN6oqfhoaOTIfDMIqUGrp rA7SDdqqRbFm
wcmjUiacJjoNJ+JjbQqrsWasxm4snDpojClrKVaNnTrrWhqknkorn9KiXF7r y2WrzG1roerl
i/5iouLQXzLqs3WnR0JqMornuvZo0i2mtwVpNIob1BUpnU3mnd1rLeSrNjLp IG6moKmglIJd
q4Zm841m2jnaltJqIRVlwxooD75mJjLlJt7jU17sWHAs27YtxyIr16zaqAUr /TmecZoscu5p
FjInQ/LSc/5SdD6VRLZodVpZdmUZRorr6TWqzt4oMobn68Uhpcrej74r0aYn kc6rkVpjX4Gq
qCr/KaliZpMSon0CbNUi4qFhbcGiY2ki7GlO39d6adiC6YHOY9ny6tnOpsdC 5Vjwgu/+LvAG
r/AOL/EWr/EeL/Imr/IuL/M2r/M+Ly/ALfmlad0SZMnmad6i7N7y2sr6LYoC rooK7nSCXuFe
Z18q6ow6G0cCHQQ+brr6LDiRZLu213lebryOG0turqdeY2WCLtZBLX36a+lW TziyauruZ9b2
59aq4+uyY+wy7MDhKsSS7a6Waa82KJqiJVnYAAd3sAd/MAiHsAiPMAmXsAmf MAqnsAqvMAuP
MKiOsPTOrQZXr1pSIfaGKOUtJ/eaqPdiK/hqq/iyaLce6pVhJ/oq7jDm/6yN PiqORqpI/uzk
NiP9AmnTPSb+ciq9cu6dYSO7hS4A1ySqTm2UXg/qDuwi+qR/cm3CYtgkzq4E JyUFS6zZUiza
xjBLMUYL57Ee7zEf97Ef+zHTirAdByTfAasQsiLJ2jC0nmwOkyjfdi9zfe9z hS+UCTH5eivN
gmvi6lASr6+5fmSOSup4RnF5uuvQVrGmymv+Jm29UmaSZuOSCl/U2mSqEvCq CmyV9qTWOqLr
no8Db5bsRnA8wrGuyjHu0rHuZjDvisUfN7MzPzM0R7MIB3IID/Kcwh/VjKwr 4h8jy6JCPjIP
R7IPTzIQVzK3XjIRH+6ypS+5FqPjoqthwq96lf/yFFsuKkujKmOx/rqnCPqv fJqqZtKyGN/n
6X7m1SLw6mLpwcpqA3PpA2vYrQ6zmCbo3SGzr/aFIXsNHkszR3e0R3+0C9cC DO/uP7YfNqeK
Nt/tDcfiWzryDltrD7fsD79sEJ+zofoiomqyjCLxdjLuErcvPOso7AGtpdZh YxatenpgFu+v
K38uLHuxLAfwkw5awFKpIlrpOSp06zK0Lzs0MEPw9T0sMY/p7Vpw7l40X2Q0 s44FSLe1W781
SFuzhpqfyDbrNoMoS4/oN7/0nzrkTA8qAeZlL+5lEZ+vzS6q+pard54reL5v 5E7qEknxpdqh
kOLzFbOnS/LvK3fx/0b/NRgLcC0vlkEfMMFe6U9uNYB2rcIOKES7sUQj6PbN cVnkncUO4QbD
NW7ntm7nsR1fXEo/KyxeoV5Tq5/+3zgL6gAO7hDjdGHX7Jb1tBKz73eCZDw/ 9ihHNj1P9lFj
7qZittK+Z0w+rWf361RTLRmPthljNRovsGl2tdd+dWsLc2tOcDEr6KfQdtra 9lhwAH/3t3//
N4AHuIAPOIEXuIEfOIInuIIvOIM3OAfE8OGpbRTW351e7yJnbyPvdbX29d+S M02bc8wO9szm
NOLuNCdDtycvNig7sbrGL7sGbeWecqZa9tFqLitrMXiPamfP52eX9xhP6U6q rmmnMQO792rX
/2p8h3WYwjaZOhxd/wN+97YokoWDV7mVXzmWZ7mWb3l/Q/iTt9RvW3hwJ+e0 9mlzxnSgQmRN
h7iLGu5Fmvi4BmbjMrH7VveOXnelmiQVz7jRrufutfIW9+9T7zhAO6nxEfR5 G3B667IC8zJX
oyaSTxo8zvdYU3T+qGKUk3R+mx8BfTkT/gOXh7qojzqpl7qAezkhj1KYK/KY 660Ob7hxy7SH
A7ZyozNzq3O4njjOpvjONnHPWjcUY/f8aje8WnGNr3J79qGgc/Y/82tAhzGU IjqQ62dpZ/Vp
/6eFebWk5aDDLrntVrCTY3rF5reTF3ITyp8Smrq6rzu7t3uBo7paa/+NXav0 heOwNxP3mYuz
rCP3Xdq0zLq5ER82O8v5T093KD+xixO1ntsznyc10iY7kjo1s89kZhr6v9py VQc5Qg85e/cy
pD+0pHd77Uasff/qk2e6Mp/YbT3hxJ30p7s7zMe8zIe6lMttA8HYhNstcFsh madsicK0vqd5
4IK4GLa5+Tr3zSa2O9N5UItysOe50GIqiYDq/R67Pt84Uwf6ZscnxY+u1Ea7 6SY6Ll81oxss
amf7e297gdLu2Na31aD8r26c3/kdxaX7zN893ue9gcu1qXhcqo1KpxPyqn8o 3tp7S2t4cc/l
vqs50Qu20X9riR+xriu9owJ1Y9v5UJPysBv/NToxrbH7eafyMxdz/b5WPOmG dgGPvasmsNlj
e4AeOchzu9jmKlmDe7lfcCdqeo21fMjilt7/PvDrPd+T4rKqCsu7mssP/ivy vKu7NKwrvtBT
MqEWfflC/jrz9K4rdq/XuVBLrrDDuClLveen8mX/OY7386A3u+l/PVUXtKLn 8quyruurNhuD
rXyL9UTH9jHP9rgDxD+BAwkWNCiw30GFCwkmHOjwH0SEDydWfNgPI8aCmDh2 9PgRZEiRI0mW
NHkSZUqVK1m2xMQQpsWFGmM6tBkzIsWGOiFKNOiTFSsjQ4kGm3L0aLMxS5fK kpUHap5WrRBV
xXMVjyhRbri6UaWK/01YNqdObTFrVhkZtWqpRXHrNlkWuXJ9abFrFxWqO3vv dOr0BvAbSYMd
FbZ0eNYsKIsXA+vy+LG0IJMp97B8+Udmzc7idI4TKxYf0XxAgUJzGs0h1YpY R3JNCLYd2XZS
papzu46wI7t5I/H9W0hw4cuuFC+ODEzy5KNGnXF+5tMnQ9P3VN9Tq5Ye7XpK lZLy/Xs0KuPH
MxNz/vy0MOvXP/Py/j00M/Pnu3IFBz+cV6/k9JczCcBBBKSEQE88sQJBBI3B gkEGi0kCwgiB
mJDCISy88Bg6NKSDFFLa+LCNR0SEhMRETKwExUtULIRFNVxUI5RQ0pgxjV58 uBFHInTcsf+I
Hn0cpowgg6yGiyKLhAWWRZRkhMlGnFwDyjVWWWWOKucwxZQqtNTyly+89JIY nMSMyKeCMshA
Aw3OHBOmMtn8aSeZcqqoJ4Z8cgnPPPXck88+/ezoTTjbdPMgmggVdE6d5qxz poKCIqoopJJi
qqmnopqqKkSwymqrrr4Sa6yyztoirbXIaOutKOKaK4u67tIiL776+iuwwSQp zJHDLEmMscYg
i4yyyi6zTLPNPPsstNFKQy211Vp7LbbZasMtN956+8034YYz7jjllmvuueim M8S6PWihZTvu
vANPCvHIo8I89MRQj70w3IPPC/noM8O+/PTjzz8AJxFwEAIpMTD/QQUbdDBC CSmc8EIMN+TQ
QxBFfIRESExMBMVKVLyExUJehFFGGm3E8cYdefSxRyCFLINII7lAUslFmGTE yUailJJKK7Hc
kssvwQzUzkP/OTPNNYlGdOmCJGJU0ZvkdLqgJay+Guustd6a6669/hrssMUe m+yyzT57iaan
/slotRGiKc5FFS3UUaEgNcIoSZWi1KmopKLKKqy06sorsMQia1RSTT01VVVZ bfVVWPXiy6/A
BCPMMMQU69WxXyULNohhiS32B848A2000kxDTbVDWFPEtUhgI2Q22mzDTTdr j8A2W22FII5b
5Lxl7jnopKPOunPT7Y7ddt+FV95567UX/9989+X3vvz28++/AAcs8MCEF1z4 wYaTeBjiiIfI
cMMOQQxxxBJPTHHFFl+MkcYaUU5ZZSJYbvllMJPZzJK0pCY9KUpTstKVsgS0 LgktTG5riNGQ
pqYMSHBtTfNJRqIGNzK1zSdoE+EISVhCE54QhVdzW9vIhEGFQM0iUkvU2zIC FLtBKm9I2RtT
+nYpwGlKcJ3iyqcOJ6qzlGotqHrLqubiqrvEinK0AoytcKUrXnHuV134XLBE 1wPSle5YqFPW
6k7TutfFbna1mxbudLc73vnud9y6gvCUQ7xwHY9cyUPXdpjHLneRJ17ooRd7 7gUffdGnX9oD
WH8ERjCDIUx8C//DQvkahj4gqG99E3OfxeKnsfl5rH4iu1/JZnQylPXPf/9z mZBiZiSaGRBn
CISSAn3WwC098EsRdKEHDVJBpUmQhS4UZghTWExjHhOZydzaCmsCwg/WECcw TJQMjWbDu+FN
UlPYYaX8hqnAXWVwnjJcWBA3KiSypXFMpEvkoLiXytUKc7nSXK+g0DnIbFFY w/qi6TojRtEs
i3XOgh20aCet290md9biHRLgCDzj0PFbxRMX8qqjPD6uCzx/LE/0Btme6h2y PtnDz/YC5r2C
gS9hVhhfgyjpsIdhkn0a2uSHLpaxjXXsYyEbGf5Mtj8foPJ/RVjlkAb4Spsd UGcJ7Fn/lX7m
QKF9QZcY5KWZ0GTBXQoTq3aqmjK52lWvftVrzBxUVuO2QZ7MjWn/eNTdcjgp vlkKKt4EIjiF
WDhQlfOIi1MiXB7nRLxMzp1SvNytMrerzTHGnsACXRf3GcZk/ZOMzXLds2QX LdmsEaFtXGhD
5QhRMNjRORPNY0X3qJ0+ZvR5gUzP9AoZn+slcqSL7N7Avnew8CVopQwznyVh qsmK0bSTN6Uf
yOznIp6W0qdAVWUAW3mkAh41lkmd5VIZCLQq4HJow6RgVX8pVrJ+V04nEO94 yVte854XvelV
73rZ2173vhe+8ZXvfE/g3ZkE06zRhFtPPMhBrRJkrTjM5jbH/9DDuP5wU+Ec 4jhDlbhzMi5V
6oTcq9o5K8tRsbBXRGwW8TkZxpKOn8hKHUDLKFA0WtZ21ErotbDF2eB567Pg Ci0ey2VR02I0
PKnlKGs/+lqR/ot7jawtJHEryZZCiLfqiynF3ldT+XFsuDodZf5MmaP+BXWo ApSZUW+Ws53R
kqm2DBoEsTpVgvjyglIF75p9Ql83vxnOcZbznOk8Xvu+MJgtNPOa0xrgSOmN UgWG698yleC6
EpGcRkSLXtPZV3YC1sLwJKw8DUvPxGoRdKETXWNP91jVMcuMlE2jQVWs2Tf6 zqHdGp6MjTeu
GpdWXc3TKPTk1VHq4Quk2PMXSRlp0v9H3lZh5DPf+dDX2/b9Fn4YezJOQ7lT Uupvf8plWZab
S8CadVmWPFtgU2/51KgCc7tJSzMw+fzdNtcZ3elW97rZfd47FyrPGSw31QB8 wz/rMNAGJvQ3
OUU4RDfYnIyOsKMpDOl3TjGeVjysrzyX6Q8XK8T+/HRAJzvQyhb0sgetlu42 i+rOwhi0raao
uWB92hy/S7XSq1drrbcv2AK5pLQ9qW1TmttJDjvJEVvyTJNt00/mtLgko3Jy r7zcl1Wby0j9
MnW5PeZcljncVlXzvMtckHZfHetZ1/p63802MWlkz1SfoVrtPZS2ajPfg5ar of3NYLwu2lR7
dRyr/Co5WR3/fLBVnCcWG77YTYPYsSOObKgtPuqMl5rjp9ZWqucIclaL9tXL w7HzUL7jlffY
5T/m9WwdidJICnu3xVayb5sc3J83e8o9jXbRp83coj4X29LVdi2ti12oQp0h aL6q2Hc/kK3/
HvjBR3fXnYZfevM+bgLxs9kHnPZuIjiIbb+rohUX90bT/dF3FyyGKa1hht/T 4X+HeODHCGoT
E1SNGl/xbjq++I+vWqI01qPkZa3jWvMY1z7etWyFPHMiB5ulcE70dI70OEnZ PAnKQIm4RMm4
nq3K+EdlsMz1tgz2lE6ptk3MrsvbcG8hdG/qkO/OhE8ER5AE24v4JggEya3e runs/whM39Yu
+sRp+hxM4JaI4J7I4LYv4fZuw/qOi8TPWDpN8Myv4k4M41KMjRKvxTzuxeDv jlxt/i6q/irv
/i4v/zJv/4LM1zyvyECvkgZQYo6t9A5QuBRQyhpw6FYvAo2OlV7v2ixwujCw 9jZQu3KPu8bt
BFPw66yuBPvQD0kwD9/m62oo3sjKmtiq+d7q+QotBhdsBgPO+gYO+wpO+y5s ByuN78DP7/QJ
8E4HO8qP4s4I/UgtCa0FO5bQ/Zqwjh5P/kiL/vzI/gQJ/wxJ/xRJC2Xu12rO yATwpUZPDA3Q
5xIQ6BhQ6FTvlFjvRybQlSowupZODp2KzOqwA++w9/SQaP984gmyURu3kRu7 0Ru/ERzDURzH
kRzL0RzPER3TUR2fIBBbqCYmohANsW5YMBF5SO2gj66kr4hoMBJtcBJxsBIl Te8wsQc18Qc5
cfw8Azs+ceJKrAhH8fBKcTcWshaAgwkfyvHiDwpdUQphkQpl0QppEQttMeY6 j+Y+LwBDrxcJ
8BeBiwxPbwGdLQ2PcQ1b7+jcEJa87AJpDxqfThoVwgNV0BqvsSDW0SiPEimT UimXkim1sR3D
Lk5kKAUPUcAATRF9iBHzUQb3ERKT6PqaKPuiyBInTeEsjcPCDyGDsDMoErKI UBQvLv0Qjzco
0iJTESOdcMY2kuReEbU+crVC0rX/RjK2btEk/0+ldlElK8QXZQrZnAwBmS0m Uw+51HBlbLIN
KfANm3Enw2wOo3GXoq671CYehxKtmtI0TxM1U1M1v/EpjU9urJEq782t7HER +U3B7Ior86of
+eof/yogEY4sefD7FOsgMaMT+4khG1Ky3tLwkDCzdOcU63JbVDGinnDkbCzW PBKQLI+QMA+R
NI//tvAkuzAlv3Alw5AxxzAYIfMMi3EyabIyk/EmMTMnsw3Mqqsns+sz7VDc qpE0xwQbV1NA
B5RA0xE7mrI199AdYXMeEdEqaRMrbfPQ3I76HkzuJKzuKgzvuK8sM5E488k4 E7KfPI3EllPU
UAyzNk6h/xRvOu9yFTXyOktu8mYt5WyN5XLt5Tav/3IRJXXLPBWTJdMTGJct yoLuuKANPnVE
AudzGTNTJ+OQJ7vNM6UKNPFQNP8zUHxCELaUS7vUS78UTMNUTMeUTMvUTM8U TdNUTcGUItdU
TBMUS9kkNpnvQbkpQueq37Yy0fjRKyURLClRLAUywxauns5yE0NULUUMFB2S OVFU/UwNFVtU
1V7UOkdrLzuyL7ezCrvzCr8zC0tyyIDtML3QpYAUPZlsSB+zSInxSB/wp5AR gJjUuZzUPpku
A23v21aoSv0zTtukINwUWINVWIeVWIv1S9vUWOG0V6OpQasS367ywLIyTx0x N//hrk/98U8B
MlCBcyC9r1B9EERHR0QVtS1D8USPMEXXz40iNTgYz7NCDvKi8MamUFNBklNF 0lNJstdwkQsB
0EdLNX2CFFVdcj1XVSaN0cpqUj4vs0nrU/bus+k0cErBjT+lTiiX1VcJwlg3 lmM71mODFTs4
Vlkx9r8GYvmwqU4FrTbx9Db/7e2q71p5M1t9c1vzblDNElw9DAgzI+JIdPDO Dy5J8TlXlF3j
iDpjDEYtFTtNjvLq9S/vNTDzdTBB1f9E1eaOjNjO00J2rjFNTxhRDw0RFgLj M1YZdlYd1hmj
1On0k0orNjQ1iGTfkSBIgG7r1m7vFm/zVm/3lm/71m///xZwA1dwB5dwC5cE RjZu6WYFHfRZ
ITRaJVQf97Qr0clP1wlQA2ssu5VQL63DNC0teZb8ypVRzzUuJZL9WLRd349S 8zJG+fLknFbl
oLblpBbm9rUwrRYxfzRgT5XnHLMMh/Fg3zNhyVaolPFsoetJZ48z8/P2fvIg grIdSdYnDJd6
q9d6rxd7s1d76xZx8axX5xRlG9dOH5dlJ/QRdTNm525m7a5mOVQ4v9Ugw9WL jpNclZPwjLB0
h5bFpDN1jxZeW/FS51U7N2pTPapTQ+pTbTdUdZFUkQwMt7YACZZIzdBIHZDo FLZsiYo+kbdW
n1FKfXI/p7E/PzBxFXcgtheF/1NYhVeYhfW2e+9rNLMKfFvQ+e6U7fQU4NCX crHVcrUVcwW1
+zbXUItTXBNV4kr0fiHSOVV0f3vHLie1OllXaWWUXgnYXg0YXxFYXzlvgXv0 5hJzdyG4JXtu
goFXMpF0eJWUDTW4YTn4YW21M0G4bUXYYqMXY6e3hfNYj/eYj/n2hQclhkmY 7OgxZV8QH6cV
NyVXhyGMhyfMhyONW2/WQzHtUIsYdIVwUU208BxVLpuYoS4SipG2UiMPU1/X ip8Wi6NWi6dW
gauWgcsTYC9pMQeWjFWVglnVgilTjS2TjY839tJ2eT+YbSmWjt92aQL5hYrP TfyLhjL2hPsY
mqNZmv+394/hTZrEbobrcXz3rXwjN4etdYdltodp9ocjOYhxNn519nPBCJNF V5PxV2iZ+HSL
1l0zcpTlNTsz9ZRjN5Vnd5Vrl4td2YuxNud4t2tf8msjM2yFd2x3eWF72drQ djPxU5ibN4SB
khoFWTSfBq0Y5ZqT7x+mWaRHmqT/tppRME6zuZDvUVpblkL5NJzVd5zZt5xt 9pwnuXMfzoh9
1i1JN57Vtf0ktfHwUuSm2HWbdp9t1Dv/WUfF0zCvlhdNVYyFVIJt2YwXGo0b OpV4Wcva+Jcn
OmJxlQMxeoQv9ko5OpnpBK2OTyBK2q3fuqRPOnFVWnxV1oYbMZG/GWZjGkP/ w7Km3Zcgh5OS
iXh+x/WIf/YhgzYi9Xee+ddoXTSKi5qUBVifae2Kby2LdW2Ld7RfRxWWHVhr M2mMfRcm27NV
L5h4qQ0n3RiYKXptLXqOybqOr3SYdmKqPHqtQfoGdpu3e9u3fxu4g1u4h5u4 i9u4jxu5k1u5
l5u5b0CuNfqDJsiZFtdZZ3ObYVArqVWRwZmRxdmRyRmSbfowsEOIc9ZzEfWS R3QIzXWT0fVR
ldCx65mo45UjKduULRuVMVuVNZuVA5pHyfNfQVuqRZuqa/l3wdY9s/pVMbh4 ZTWiWRusb5UO
L/p5M9qs7ctQjo+aSlYgmtvDPxzEQ1zER5zEefu5/3UVUTa8UahbNtEOWrn5 hrVbry30K2da
Q3WQLCkSnT9UndGbndU7k5NYsZcYqFH3sUP5f/VyaWc0FvP7Rmuxvzl7PP31 i3VXlgW2d72W
PSt4JtN4qx+6q30ZDpXXtSVWjolZto2ZKGs7ajQ8hpSZmTu8xOeczuvczu8c uE98o1P8zVfc
ZMsufK3brsk3xvP6ZWm8cr+bpsObQ3Ucp9HSx3t2vUe3vfNXntc1vlU3suk7 gPP5vmt0Fvc7
R8OTX6fcswM8aweca9WzjBH8tHX5yzM4zB/8q6E0mF87V/e8mK0Ubtm8z9t8 mjj8H/Cc2Ivd
2I+duPX8mMcu2Js9rf+ckP/r2pBb2nyrda+7W6YV/cYzN3PIe8cHW345Dcjd WcibM10hNdP9
lxWVnIoHGL/5Wb/9mb8BWsqfOndj2dgKnLQT2rRzOUljvcHNltbHHGIlfGJR fNd5lbZ/vc8/
Gq2QHeIjXuLnXNmJskxwW97G7mRp+MWxG5FdtkJr0LszNAe5/aYLksfP25J/ vH6RGGjN/b2J
Nt0hW5SleLI9HanfXakPeN6butTtvYFTPYwJnJb3fctxucu1ekkFPuk009bL XKydt5cs3I4V
9CKgJs7j3IQFQhe63uu/HuzDXuzHnuzL3uzPHu3TXu3Xnu3b3u11oeLfRCob vqMJsVlb3AVZ
GnL/cfjQRT7bSf43xft9ORfSV17Sg/zlOdl0Md2Jhfpd1711SznnQR0w5X3U CbOLAbzK8X2W
sxyhjz54FVzawBzpmDF5Cz6Ohxnh05zXl72En10gNkD2Z5/2a9/2bx/3c1/3 d5/3e9/3fx/4
g1/4h38D4l5OoamsGL7PAJ3jHRfG8RrkYRrb+/pyGf0SvZXwK7mwd3rS31mJ zx2+G79/aT7J
I9++J587+xlHwRPzBVrzCfqBid7zC/aWQ99VR1/WS59W39iDAaJKlV9fChYk 9i+hwoUMGzrs
18+hwgwZNGigKDFjxogaO3r8CHIhR4UbSpo8iTKlypUsW7p8CTOmzJk0/2va 3BBS4siNO3Pm
7PlvJEehGnuyYmUkqdJgU5o2bTYmalRZsvJYzdOqFaKteLriESXKjVg3qlSx Ocvm1KktbNkq
IwMXLrUodOkmy4IXry8tfPmiQnUn8J1Ond4YfiMpsaPFlhrPmgUlcmRgXSpX lhYks+YenDv/
+AzaWZzRcWLF4oOaDyhQaFqjOQRbkexItAnZtoPbTqpUdXrXEXYkuHAkxIsL OY582ZXly5GB
ef581Kgz1M98+mQo+57te2jR0gNeT6lSUsqXj0YlfXpmYtq3nxYmfvxnXurX h2Ymf35XruD4
h/PKK3IMKMckBg6CICUKeuKJFQ46aAwWEkpYTP8SFl4IRIYaDsFhh8fQASId pJDSRoltPIIi
JComwmIlLl4CYyEyqkGjGqGEkkaOafTiQ48+EgFkkEUMSeQwZRx5ZDVcLLkk LLAsAiUjUjZC
5RpWrrHKKnNsOYcppggEJkEGfYGQT0UBtRBFFmFk5kNtvgknQz3dRGeddt6J Z556mhRnUB5B
1OdHRCUE0U6FdmQUUkolxZRTU0Al1RhUXYWVVlx5BdZYZJmFllptuRWXXHXZ lZdeffkFmGCE
HYaYYow5BplkUFBmWReYaZZZZ56B9plopJmWmmqsuQbbIbIpQlskthGSm268 +QaccMEVZxxy
xynH3BXOQQeGdNVZh53/dtx5F5545JknBXrqUcGee2LAJ18Y9NnnBX76mcHf fwAKSKCBkyA4
iIKUMPgghBNSeCGGGmbYoYchikiiiSg+oiIkLCbiYiUwXiJjITXaiKOOPPrY Y5BCEjmkkUiW
oSSTXDgJ5SJSMkJlI1diqSWXXoIpkJgGlRkooWhOVNFFGQTtJ9JKI8rQnk4/ DXXUUq/U59Ai
Wb300okuyqijj0YqaVVXZbUVIl59FdZYZaGV1lqfvhXqXKPeVepep/4l2GCF HZaYJIs50pgl
j8k6a6224pqrrj3w2itppZ2W2mquvRbbbLXdlttuvv0m7bTUImHttdlqy223 01V3XXaGcNfd
/3fhjYduuuuy6+678cpLb7334tvffwESWOCBCS7YYMERHlxhwkkszHDDQ3wY 4ogmnpjiii2+
GOOMNd6o444kl2wyESinvDLLLr/8ZJRTVnllllx2+SXPPh+kNdZqGo001lnn 3/TU/v8PwAC2
pGp/0t/+ArU1rjXKKZCSyqTGZimzYSptYllbp9zWFrjFRW51oVte7NYXvKlq b4bp298CNzhZ
0coyt8KV4hbHOF+NBliRG1ZrinWsZC2rWZqDVueO8DnQhQ5bzNkWdLyFunCt blyuAw/s0KUu
9bTLPfCSz7zsYy/95Mt3/BqQvwAmMIIZ72BYSF7CmAcE5z3vYdKTWP/1LHY9 jWXPY9sLWY5G
RrLwiW98KkNSy5gEM/XRjH1Wcp/O4hemMZGpfhq5H5sQeMBIEqp/AqykJS+p JwIiyoCSfFMC
F7XAp4DtgVYh26W6kim1ceosnnpbqMjAQVLV7VRaEGFgVsU3VwEOVoRb4WUQ F4QXMu4HMnxc
sCRHrMoh63LMytyzehMtaQUxdEIgYnNKh0TqpE5c2yHX685lniiup3ZVnE/u srif3vnnd/0S
XsCIVzArHG9CZlTYwtQIPRC1sUQTq9jFMraxjn2MeyL7ng/0OL4i9DFJ5wuk zNZns/blbEs7
k58igRY0QGXEkUfLaCcPOCdMinSkJH2JJs//9NH9fXIpXmvgVMRWygieLZUV XGXbPrUFDYpq
bqXKAghRlTdcllCXKIyVZHx5OMQJM4aOoyFqkHlDZeoQc7jpITR/OM0hjs6I 0TmdNpXIOm86
EZznmd0U33O7K95nd1tcZxeD96/hDax4D5onwpSHRnyyMWL8fOM/sccx7dGI oHc0KEL5WL4/
Nil9Dx1kRAs5UfjxbCAXZeRGi/bIk6aUfwtZgWc/C9rQina0pC2taU+L2tSq drWsba1rX7sC
zeqEk5sNyUq75iiXho1SppQgKim4Kba1MoOvjGUUPGiqu6XqliRsld9eJTij TsZwLdyM4oZZ
TKcKa3I4tJyyqOqs/81Fczifo6Y1ScetbIJLdWFtorliJ07auaucuKMXOnmn L3Z60Z1hpKvB
kKe85TFPr9HjK/UoZj2MAVagdeweHn8UvoQu1Hwuc+jManYzQ1IUkT2rrNI0 KhGOcra2Hu0s
bE+M4hSreMUsbrFnZfsQ2pL4Tww5CteMEMqvRYqUlSrbTIFrQVZiEFRxG9Vx e/rTWi5Xb6wy
IXRTeFTqAnOpvMou5J5qQ8oZy7s7dKZ4sVperWaLq6b71jaX2E33PjGcZiVn Ws/JVnXuC3hf
lKsY60rGeloor87LJ8Sm188EA3SOA7Wj9753WJRNWLHoi9mFCYmz91U0kWPC KALth9mOQv9y
xptWiIs/DepQi3rUpIVxQ0DMaTjdFsctHSVMe3xKtGkqyDd1JVxqUQvjIten tLQlk3P53F1G
t5dSVup1mfqrK283mVte5nebWdVncq5zWbXWecms3jO3t1xrLuu6zmq7eKlV d/dq65zbGdd3
zjWedi1jgPncMD/v88D+jGNABQsyBxs2wohdGaMtDNEMR3bSHa60ZUOc6RGn 2pMMIbXDHw7x
iJ/W1HKS8cLdtBAbK7DVO351b388a5sOl8i4xrWRd51kXwvVuSfkpQqL7cJj V7mpyoaqlnPI
TB5Ke7yeo5Z5t4pNr66Xm63jNlll9203ixvO5ZazfuEKRniOEcD/eB1wn/cK aL/am9ANLiii
+a3oxDaUsY9+bKQPOdn5LfLDmF6Tpil+cUE1XOJ0r7vdXQx3haA67j+psaJA yXEHelymEwy5
cIec01uX/ORI7vWSV+5kYUN5urWqbuJ0hV2aHzPL3XV2l6P9ZWqH2dpAT6/Q tc1Eo8O3zfN9
s33jnN+31lndd/4vPd9t9Xhj3Y0IhqOC5RhYOg7W0A8Gn8kkLPYKkz3gEpU0 hylrcLY3MuEl
5rtPenL37Gt/+6nNu9Csb6ZV51i3PP544VV5eJxqENe6brxyg9rcyBeV2JWf ssxDo/kacleq
OfeyD0Xvc2JWREFnZmCVet+0eknXekv3/3pNF3t0xl9Sh2dUd0a55zAFlnW9 91fAx2DDp29f
d3z95kdj52jMB1nOl3Yelj9thz/VB34ggX3cJ4Pbh2vc531BYXEvKH6B91K8 RXi/ZXgXpH7F
xXiz9H4j1GRE5XJRVn/GhnnINkM1x3n892w6F3rSNHrJUXpHdHoGmGaqB0Ws R0Wuh0Wwx0UQ
mG79xW55hnv3dHUYyHv19nv3Jnz55nV5BHZFknyAtHyOJXAoaFHRt4LT53YK 94I0thAtoIiL
yIiN6IiPCImRKImTSImVaImXiImNWHK1kImdOIk3uHeHWBR+d2Pj52o+6GPn V1PpZ2sbVIQf
5Hjwl4TBNn8v1/+EMfeEM5dsm7d/zTZV0BZe/4eFAUh6Y0aAScReBzhWCShF SmdFTKdFTid7
EbhuU3d7VeeGugeHfaWBWxd8hfaBeBiCYedvJChIGNZ8aBeIP3NwDiFiLiiK o5iInkiP9WiP
94iPk7iJ+ViPoJiD4LeDuXWKEJSKQIh+QtiKO9VB7hdCjxd/SjhstshC9peL +LeL+sdsOFeF
/ndVAFgtxTiApleAyfiFCBiGCjiGDFiGDniG6BZ11TiB11iB2XiB+mRggeZ7 g/aNXVdYIHgy
5DiCyleCfpiOG5aCgphRLJhZcfKP1tcT/AiVUSmVU6mIuEaVmOiP8Sh3Gfd3 LCWQHYf/irFG
U8GFkMRVZDxlhA0pi8DWchHJhBPphLuii1HIixnJZeBlVdM2jB+phcYokshI dGL1XifZjAv4
jA0YjQ/oknbmX/LEhti4IW9okxkohzrZgXbYk+L4k3pYjkJ5jpCmYZK1jvQj fZdViPColRin
EFfJmq3pmq/Zj0xZQKnJNFxZijy4WwQplkAmcoinU7D0ismllkjIlk8mXYVz i9ZVkY1zkVjW
ixr5ecHYkXtJHD/nl1w4koGpZkcXX+BGX+N2X+b2dLOnhtZ4VzMZmdo4mXEo aAuGb4R1aJoJ
JMjXmXw4lOh4gupIaexYmgh3mp1Gm6qZELBJoAVqoLCZlQGq/xOkuHFfKXhh 6VuydpBCNoRn
uZBpCVTEOVS0uISUB5e4KJcWSZcYGVW+2H+gJ4zkRYx9GZLYCZhoVnQmyWYo iVYquVYs6VZo
+JK155gUaE/pWZN/xp456Z51CJ/Fd1B5SD71uVj3CZoD93xqZ2lVo5RvJ5sf JqB6h2qHIo+r
eaBfCqZhSo8JqqCnxqCA56A9qJsROpa0NnKJZ6GyBItHyFyz2JaTh5wfqpwh ypwj6px26Xl4
uXNgtqKic51dlZ0wKpjdhnSFmZKHuZKJ2ZL7lYYSaHvn+aPNo55Cyo2VWaTg eIcQNo6cGZT2
+ZlmF5oEB338OYim2YIASqWnBhSDMv8oCzqPYoqruaqri0imZSoSZ+qVDDSQ MVWQErqKZUlk
roiWczqcdVqcknecSGV5wXR/fWpMJHpzdwmMeclzQJSFhtqiiPqi2yaj3uao NQqpNyqpObqY
tNeY7aZnAkaTHCJvN6l1c8h1HhiqxreZS1qqTXqqf6ifBceqSUmIr3qDMJg0 V2Omk7SwWNMT
MSCxE0uxFWuxF4uxGauxG8uxHeuxHwuyISuyIxsDveqrDqsQGoemwgqWawpy E1prZqmsF8qs
GeqsG3qn0Qpze8oZmdecy1ai0CmoV6iifAmu1/SXX0WSMbqMhDlOhmlOiJlO ikmpO/quj4me
mhqk84aTG0j/h6CamaLarwq1hwDbWPh5dkY5mmvXqv6JsFdqiBExq3qHshDL ECSLt3mrt3vL
t33rtxNrsicbkCz7oC6rimRJoQkJnMsqnDb7azhrnPSnp5fHp8SUf38atNpq hSnac0ZbTVso
rkqrnWA4o+cabulKbut6blXLmGvoo3tmgfS6e53anhz4nsS3b6PqrwzlmWf7 pIC4n6TZtu5I
fbAqW3LbsElTq1n6t83rvM8LvdGLsYFbP2jCpUKjP4MrSlKBa4NXrG3amxU6 s3LauEq2lpAL
rZL7S3HZs1B4rZibrYG6rYPqkdUpgEjroqKrqNvJjE/7qFEbqVM7qVDXuubp bpCp/7Wyu430
Vrtfy5PxKbbzKYK8a6q+i6pQepQFe2kHu5SqpjW/urB067DLi4OFErHSi8Ip rMIrrLHUO2I9
QasibKsp25W4RbibCKEve6yJK7MKSb68RqePy3KRK5HrC6LtO5fvC7Tx+4ub O51Fa78gib+h
O3T7S7rm6r/oCsDqKsDsyrru6roymalpJJmcysBEartGirs+KcFAScFmW3YC q7bBy7YG66od
zHBYqqXXW7d9vBF3y8KBLMiD/LcuXH0wLMIkLCfAasPbOwY4bLgGucMxm6w+ fGQYar4aOsTp
W8RJdcQwlMTaZXOd18QcqZdQLERSjF75W8Xk2rSlm8Wnu//FqdvFq0vAYGzA 8QpvW2uv3Yiv
O6mvYcuvbUyqb9xoAVuUoknHU8qUVWqIpja3IyzDzEvI1WzN18yxhtxpiCzN KJulKhusjvzI
teC9uxmEPFzJi0uz5atyD8mhbumhRsyzoCyiSjzKVBid3Eqonnttx6i/rjyY sCxf/1tfAYxf
A0yeltqjYgy787pGC9y13niZR5q7Y7to5mjBcqzMBCu8duy2eNwmTfnHySsU WxqKi7wQmqDS
K83SLe3SLw3TMS3TM03TNW3TN43TOa3TO60J2nxS3Ky805y8CQHOjaxjhUus 5gyzb/qb7YfJ
7WynRPyW8ky5SFzPojyFJrqRKPr/xJ0bxSw6xWU2rsoY0Fg80Fpc0Fx80F58 y+UZk5ja0ECq
wOtJu2jswMEMwcO8R25MYRUcx8msqlLajg3xjsbrqz3B04mt2IvN2I3t2I+9 0j4Nt0A9FEJt
wntX1KyWprmZ1GzKm6zYw+r8wynnkFHNyVPtyfPss366xKR8otJ5yl6dymC9 ylSMeiX5ymbt
nWSo1uI5jZUKk5d6wFlLxpvKtfdqmbcbjhG818Xc13Bsgmm70ava0Rt8x1bq wScLwgqRA93t
3d8N3uEt3uNN3uVt3ueN3umt3uvN3u3t3jkg2dkdwg/rx9pt3/eN3/mt3/u9 SRyM3Xl83z3x
3gNO4AVu/+AHjuAJ7t3xDeCUXd/8DeERLuETTuEfddJE858JG48CruAd7uEf DuIhLt4M7kkg
VtKGcuEVruIrzuItXuEp/g+FreGiyOEibuM3juM5Tt4k7uI97uM/DuRBPpvX /cyHzRA6juRJ
ruQdzuNC7uRPDuVRnt8wLuNwa989gQJZruVbzuVd7uVfDuZhLuZjTuZlbuZn juZpruYo0ORS
7uZvDudxTmJUXrwzfohYvuZ5rud7zud97ud/nuVtrpWXTeiFbuiHjuiJruiL zuiN7uiPDumR
LumTTumVbumXjumZrumYHqtEjppGvhCALuqjTuqlbupfLugbrup3vuqs7uqv Dv+QrV7i/l3k
ZYrnp47rua7ruw7mqU7jsu6UwB7ssB7rxD7squbMn27rDMHrze7szy7qvm7s fCfSICXs1P7r
2a6D1/4TyW7Yyx7q0C7u407uYy7t267txT7tcVftKsXtC9fu7t7MtK7sCnrr 5Y7v+S7u567u
6O7v/97vxw7w2J7uIe3tdg7wgKDwC8/wDe/wDw/xES/xE0/xFW/xF4/xGa/x Gw8I/C7nHw/y
IS/yMUbv327vDMHxKa/yK8/yLe/yL7/wHj/yM0/zNS/kdJ7hVq7dPQHzPe/z Pw/0QQ/xMm/z
RW/0R8/fOP+28n3lDNEETw/1US/1U0/1VW/1V4/1Wa//9VvP9V3v9V8P9k1A 9J3Ex3t8NfF+
JtZr0mg/W1aD4mzf9jH29pJU9th79nQf92aP93J/95Fkt3rv93lv94Jy8Dov uE4f9omv+IvP
+I3v+I//9GMf+N5M35WfNSQcw5R/yCT/4Ho835k/3y+M0kGt+R693ZVd+qYv w6gf+qrPsJ3f
n6cP+5z/0f8d0lOO+JCv+7vP+73v+1Mv+dZO+aAP96Pv9rP/07SvyJu/3asv /J+fyELtUdYb
/alPQNmL/LLp9rVa/L9K/cZP+CWv4YTO7rn/++eP/umv/lUf/PIO/d3c+ts8 0suf/IvM/c+P
yCYu/czv/ADxr98/ggMJHkSY/1DhQoQGEzo0CJHhRIoKHTKMePBiRY4PMQrU GLLjSI8WBUos
2LHfxoQZMmjQ4JJkRZYLa9p8uNKmTo08J26EEVToUKJFjR5FmlTpUqZNnT6F GlUqjJk4ad6s
mrUqSpEgvX7V+rNrya9Yw5Y1ydXsWa4FM6I9KzZlTrVxKdZE2dauSblw9/JN 23VtXLxv9WI0
6xKmzL+Dwf68qDfvWMAEp17GnFnzZs6dhdod7PPvaMAbJ88ljfpm3dR+57Ju LVnk4caUTz8m
jXc25dRmYce2+ht4adUqE7+MmWG0Y9weV5N925yyZ+rVrV/HfhQ0R9Gtc9ve jbo3b7C0t4s/
uTI68/+t4F+T3yv7PfrvxF0Pt1rce3P1PM3Xtu+/ho5bTDkAr+rvufz0ExCo 7B6EMEIJkzrv
Lvb2G0k+rwRkizfT4CMMPuGWc29DEENE77YLZ9JtPukOJEs/73wTDEP+wntx QIoUS47E+mJk
8EQHJySySCM7qxAyG3vzCSLR1LMRytf662lFkqR8LLLumFTryS1za7LKAa28 siExz8QwMrew
xHJGM99cc0k140Tzqh2RYyy+8SoLMsUEEzoyUEEHZSpJxJZENFFFF2W0UUcf hTRSSR/98iAe
8zQUsjaBvNFFGhHaIVRRRyW1VFNPRTVVVVdltVVXX4U1Vll3yNQiMifFNVf/ XXfltVdff8W1
UoIuNVBP7jhN8SNP70poVmefhTZaaaelVtRacwI2W2235bZbb7/NVdh/iPWR JmTLo7IsL9fa
qFp334U3XnlPvVZHcO/FN1999+XXV3HJhbEv+hhtd16DD0Y44VTr7alfhx+G OGKJJ8Z2IoCN
5S7dSAtWuGOPP6aWYbcoJrlkk09GmWACewy42402gTlmmWemuWabb8Y5Z513 5rlnn38GOuhN
RD4pZaOPVvJRB85pGGmnY1sZUxTBfVloq6/GOmutt+YaZqLFfTrsiMFO00mx zyYs6mJFHihB
sqNM6AO556a7brvvxjtvvffmu2+//wY8cMEH/+Dr/1vRRjzxnRRnfCu1y/12 I8Inp7xyyy/H
PPO5DW+88yUD6AeAgwDoJwCF3iG9H3lMB110gkg33ScBSAdAAIYGAGelc0wn CPWVVndrgAP6
OWCANXXyKQB5fuf9JAeW78d2z43+F8+1p2YWTkrj1rx7778HP/y7OZ++/NTm 6Weef9B/5/QE
mV4//fjbL/qfcxKUHiEHEpSn9/ePV48D0oM8gyQgdSsBQAIA+Dvznax6BYLc Ttx2OIwRRHwX
xGAGNbg38jXQg3EZXgP6AY6FkM54oHNICEfYtJUocABbWp7t9mcQE/4DhW6R ngBUNzIe6rB/
/4ihW+ShwHe87YP4eiDLKv8osGBxb4NPhGIUM9fBI1aRJDMs3UQGMI/cOQSL zePJ8A4wDwQc
6nZc9E8/FPiPBKSxaaRbYxtd18KmWRFiSZRah+4lOSn20Y9/5BsV7TjIiZCO hAsZwAFFY0h7
BWB4CCxjxRKSyD/Vj4dNioiWeLhJQvILj9fTY8Y25Sg+AtKUp/SjIDu5yn+I cCWRTMjw5uGA
NjrElf2ApWgC8I7luc5esUwfLdMYx9BtkidwJIgcOWlEVgLrkxFU1okQtZEa VNOa18RmNrW5
TW5205vfBGc4xTlOcpbTnDVQZTMHSTr0+XJApnPl6NJXzEv244QwjN4/XngA t8AzjfDzoTEN
ElD/IObTkgdVJ9Ue17IF5WiaCTlnRCU6UYpW1KIXtWY6E3pEHdpueepLyP3U g8yOFhSkPIGe
evJ3ECyuhH4iRaAaB6ge3qWufzwJgCITuEwKbhRSz2RofnpqKIwW1ahHxWYt aoFUpqITe2b0
qRX350vYKaSXAgCdAKYqz9g5ZHahWylChBc6+hHkqll13vDAIUCCIIB0TEse 9IDH06gq9E4Q
DCpd3PZTiDbVr38dp1KVCliMarSuh5UUMxFrMqAu0WV9JWxkJWtNwS51shM1 7GI1uyjFbnZi
jSWavyB7WdL6dbCljWhmPbva/XSWtQ8D7VM1NUqCJSQXt8VtbnW7W972/9a3 vwVucIU7XOIW
17jHRW4uVPta5ja3k7ENZfbaNqmNyMC618VudrW7Xe5217vfBW94xTte8pbX vOeVwXKdu172
mg+6YXGMYaJJJ7qMyVwIQW9+9btf/vbXv/+9rnrbO2ACo+29Womvi355HxVl 7yAAhnCEJTxh
CnNXwAXGcIZRduCsMCeTOJlTlnD0qQdX2MQnRnGKvXthDbfYxbBdqGOxp6H1 OJggKsZxjnUM
YRa/2Mc/jlyMQ1umGsGpxkzccZKVvOTw9hjIT4ZyrzjcHpWAKMQfWtaYNtUB LnfZy18Gc5jF
PGYyl9nMZ0ZzmtW8Zja3uQNDjnKc5fywi4UWy/+VobGMGupmPvfZz38GdKAF 3WW20XbOidPY
oRuX6JZYD5oNVZCe4dKghAza0pfGdKY1LeZCE3CCnwZ1qEU9alKX2tSnRnWq Vb1qVrda1QOc
qatlPWta19rWt8Z1rv/EaITUWbaIMXSWwkTf9Nz3IJtGdrKVvewyd7ptuoZ2 tKU9bWpXe4Kw
tna2tb1tbnebSry2lKPzmq2NMNvc50a3pZ2taM+Bm91nc/e4xC3jbZU73ffG d77NDOd399vf
u/J1dL1lb30X3OD45ve/Fb7wRgUcvkhMCC4kPnGKV9ziF8d4xjW+cY533OMf B3nIRT5yXCSc
4SdHuXccjmCII2QGL4f/ecxlPnOa19zmN8d5znW+c5733Oc/B/oMTJ5yohc9 LCvvcIY4uT2X
B93pT4d61KU+daq/fOhGx3rW76pEOyuYlAmpetjFPnayl73mV9d62tWOdCrf NzpMP4jZ5T53
utcd52hXe96NznYWVdlEGwO73QU/eMJXHe96R/zJ+U7kjA2stk0vfOQlP/m7 /zrxl8/74pW+
x4SwwPOfB33oRT960pfe9KdHfepVv3rWt971r2fB4TE/e0Vr3u9U6zzsdb97 3vfe978Hvudl
T3viR9n2x2LWtQGPkOA33/nPh370ST/84lffx8c3duRyL33ud9/73y899a0/ /gxj38ZMHKrA
/8G/ft8rlf3vF77lyT//Q5ufiUpy7Z4OAn/+s76y/Qe/0AIAAPCHAhxAAjTA ASxAfzjABWzA
BERABlRACHTACZTACHzAC6xADLTADPTADgRBDhTBDSRBCjRBDTzBDxzBFAzB EkTBF1RBF4xB
FlxBGGxBGpTBG7TBGpzBHcxBHtTBHhTCICRCIDTCH0RCHFTCHawI+5sv5KOu 7QPAKRy9/6NC
7hPABdTCLeTCLvTCLwTDMBTDMSTDMjTDM0TDNFTDNWTDNnTDN4TDOJTDOaTD OnTDJpy3ISOg
KEQITvDDPwTEQBTEQSTEQjTEQ0TERExEpVLERnTER4TEQAwtO6TESv+0xEvE xEzUxE3kxE70
xE+8w63Lo4eDQsdTlI2IxFRUxVVkxVZ0xVc8xEkExVmkxVq0xVvExVzUxV1k QzzEK3pbji9p
k2BDDycwxmNExmRUxmVkxmZ0xmeExmiUxmmkxmq0xmt0AlnkxW3kxm70xm8E x3CkRXdaCCds
qNl6mzy7DyDBxnZ0x3eEx3iUx3k8xiwUx3vEx3zUx33kR10kR4UwRz5Rlum6 vTs7siekx4RU
yIVkyIZkRnvsx4iUyImkyIq0SAf0Ra6Tvzd5u74wSEljR4cUyZEkyZJ0Roi8 yJRUyZVkyZbE
xIwcRZZDvo7UlAARkoTwgJzUyZ3kyZ70yZ//BMqgFMqhJMqiNMqjRMqkVEoP 0EaXdMqnhMqo
lMoChElQIsWZ9LASOcgFwsml9MqvBMuwFMuxJMucbMqpRMu0VMu19MaqfLRy +ch11J5/KMu6
tMu7xMu8/MmzZMu+9Mu/BEw7/MdG+0Xxs48iozSE0MvFZMzGdEyhRMnAlMzJ pMzK7MLB7LU8
3Mj4GLZiq5OGeszQFM3RrMvItMzTRM3UnErMDLfC3Mxf2QjSlM3ZpE2iNE3V xM3c1M2JdMtx
q6MmUszaFM7hpE2+3M3jRM7k7MbeBEZbSb+nYoLolM7ppM7qtM7rxM7s1M7t 5M7u9M7vBM/w
FE8mME7lNM/zRE9O/2ROkyNGOUmI8YTP+JTP+aTP+rRP6SzP9NTP/eTPNmTN YdFMgbMQDkmT
97zPA0XQBFXQBbXO2+zPB4XQCL3M9XxNhEosA2XQDNXQDeVQ7HRQCQXRENXP /5Q31xRQbtmI
P1DRFWXRFnXRF4XRGJXRGaXRGrXRG8XRHNXRHf2DDxXRHwXS3aTQE623hODR I0XSJFXSJWXS
Jl3R/AzSKJVSyxzSq9Q+hHDSLNXSLeXSLoVRKJ3SMBVTtqxSmcQ9hEiBNFXT NWXTNnXTN4XT
OJXTOaXTOrXTO8XTPNXTFADTMfXTP3VJEg3Ic9GWjdjTQ0XURFXURWXURlVT HwXUSJVUiv8U
1AC10oFLCEfV1E3l1E711DeF1EkV1VG9x0o10Ut9LDT91FVl1VZ11TgNVVKV 1VnlxTJNOs5T
1VfV1V3l1UbtU1oF1mClRVttuys9iF5F1mRVVjr9VWF11md9SVG0SjM1VoJY VldVqmvVVjdt
Vmj11m+FQ1PVSCIt1ITggXNF13RV13Vl13Z113eFV6WCV3WtrHm113vF13zV 13yNVXD11389
Q3GNyVs904PY14NF2Hat13td2IR12IeFWHjtV4Cl2IqdUGl9y3JFiIjlWIYV rHyV144V2ZE9
2Im12JO1WGLtO1w1WJJ12XQN2ZeV2Zl12G5F2ZsFWJVlvNYSxnX/yb5/oNmg FdqhJdp1tVmc
RVpv1dnNay2tBMm5vIWoldqppdqqtdqrxdqs1dqt5dqu9dqvBduwFdtbONqk NVtgFdhpJVg3
iaat5JMQgNu4ldu5pdu6tdu7xdu81du95du+9du/BdzADQGTPdvCJdW0zVg9 2ZIGYyLBddzH
hdzIldzJpdy4JVzDxdxIRVzfTJtkybInrNzQFd3RJd3StdvLzdzUHdOlvT22 FbHP5UqEMN3Z
pd3atd28LVvV1d0pZd1SxI+4TMyDuN3hJd7iDd3c3d3k/dHe/Vn9A96blF3j ld7ppV69RV7l
xV4I3dzm5Mwu0RJ2SYjqFd/xrV7Uzd7z/93P7TXMU0wIEHDf94Xf+JXf+aXf +rXf+8Xf/NXf
/eXf/vXf/wUB80XfATZP9a1QKWtfAFbgBWbgBnbgB4Zg9xVgAqbg42Te80vV g4jgDebgDvbg
D6bf663gEc7NC74/FE1gEFbhFWbhFq5fESbhGD5NE37CDCYIF8bhHNbhDYZh GfbhwDRgciW3
FN7hIjbiI7bfCf7hJe7LIEZVFEYIJJbiKUZiJWbiK0ZLJ6ZWTEWIEvDiLwbj MBbjMSbjMjbj
M0bjNFbjNWbjNnbjNy4BK8biOYZKGj5HKD4IONbjPebjPvbjPwbkL+5hOiZk l7RjgcRjggjk
RWbkRnbkRybjQf8u5ElOyUMm1CHuYkjW5E3m5E42Y0mm5FCWSC1eWy7OY09G 5VRW5UCWY1F2
5X0k5WI1ZUVe5Vq25VtG41Z+5V0Wx1he2YKlZVwW5mG2ZV3m5WNuS4zlXNFC iBdw5meG5miW
5mmm5mq25mvG5mzW5m3m5m725m9+AVBG5nHeRkueSxv+B3BW53Vm53Z253eG 52cWZ3KmZ1w0
Z2mCzYSI529Wqn32538GaHCe53omaFD05Z2d5XQOaGyurIV26Id+aGMu6Inm xINm2mpVaIie
5obW6I72aHaWaIoW6Uu06NYtUOe0r/P7aGnu55V26ZfG5pAe6Zm2w3s2xWC0 yZveCJj/5ume
9uloHmiaFuo5tGmH4syczpGN2IWlZuqmduqnhuqoluqppuqqtuqrxuqs1uqt 5updCOqhButQ
tBhL3WLgYAnGfUIcUOu1Zuu2duu3huu4luu5puu6tuu7xuu81uu9xoGvDuu/ RsOS9l2zRmoS
Iwi+RuzEVuzFZuzGduy1lmnAlmwyFOzmrY+zHjG96o7H5uzO9uzPBm24juzJ Ju0vrGwMBpNN
QeuGCu3Wdu3Xhu25Hu3Spu0tLOrnxODV5pPY5u3e9m3O9uvaFm6qVGbuPRAn +d6fHYHlZu7m
du7nhu7olu7ppu7qtu7rxu7s1u7t5u4RCO7hru3bbrmD6O7y/zbv80bv9Fbv 9Wbu7wZv0j7t
Ey5ShGDv+rbv+8bv/I7u2X7vyY7vGk7kf9DvASfwAjdw6ubv/gbs/77j+Sbv A4fwCJdw9k5w
Bf9r8WZZgpjwDefwDrdu97bwCy/u9U2UjfDwE0dxDwfxEAdrDAfmf/CDGJfx GafxGrfxG8fx
HNfxHefxHvfxHwfyIBdyP1hxFqdpBkdkByeIIWfyJnfyJ4fyKJdyGa9wI59p JL9kZ0qIKefy
LvfyLwfzG69yKxdpLD/nAFeCNFfzNWfzNnfzN4fzOJfzOafzOrfzO8fzPNdz JRhzMqdoF8fo
PRf0QSf0Qjf0Q0d0NS9yP//zET9gXv/ZiESX9Emn9Eq39DdfdEYvaEBP6Ev3 9E8H9VCX80zX
dHo2c3xm5oNwgVVn9VZ39VeH9ViX9Vmn9Vq39VvH9VzX9V3ndRfo81In51O/ aS1HiF439mNH
9mRX9mVndlb/dWBHZmE36lQniGa39mvH9mzX9lh/dmg/Zk5H520X93En93Kn dVL39m93dCEm
dlVndqUy93iXd3lH93TfZXAP8HcXrHnn937H9nq3d1GWdtyWoIL/TD7Rd3j3 94VneGPv9oAP
5YGHG8/9u6ROiEDA+IzX+I3n+I5Xqo4H+ZAX+ZEn+ZI3+ZNH+ZRX+ZF/eIif ZIkvceh4WspY
+Zq3+ZvH+Zz/1/mdZ/kKjUCXD3F8d90+sXiE4PmjR/qkV/qlN3mAB/pCFnr9 Q0zoPYg+sPqr
x/qs1/qt5/qu9/qvB/uwF/uxJ/uyN/uz7wOnf3o6jvofmXo/YTS0l/u5p/u6 t/u7x/urV/u1
v2KYn3iZl0vKyPvBJ/zCN/zD5/qW5/u+b3t6020gMYHIl/zJp/zKt/zLx/zM 1/zN5/zO9/zP
B/3QF30TUPzFX2K/n5F0Qe6UZqLRd/3Xh/3Yl/3Zp33JL33T/+HGz2eEqP3e 9/3fB/7gv/y9
x30f1n1q/wfhV/7lZ/7m13ziL/4YPn4E5n3nt/7rx/7ah/7or2DUT+jsB//w F3/O/7997u/+
6Yf0hBj/9Wf/8S9/8ydg70dnHaD/+rf/+8f//Nf//ed/gNAhcCDBggYPIkyo cCHDhg4fQvwn
cSLFihYl9rtoEYC/jh4/ggwpciTJkiZPokypciXLli5fwowpcybNmjZv4syp E6bGiRkyaNDw
syfRixmLIk2qVOnRiRCfQo0qdSrVqlYXLtXYlOjOrl6/gg0rdizZsmbPop1Z 9GfQoVl7bn0r
d67Rilfv4s2rd+9duhPjakwreDDhwoYPI06sWOZaoEIz+K0IODJlpnb5Ys6s efNVypMtLg4t
ejTp0qZPFwbQuC3kyv8+u45tMS7n2rZv49bhOSlH1L5/A/8PLnx4YtVE2T6O DVs289cVM0GP
Ln069erWr2PPrn079+7ev4MPn2k30t7Ez6NPr349e4/GeyJ3W3l5c+XPxePP r38///7+oZNX
lHntEViggQciGNZqyblGX33zVaSChBNSWKGFF2KYoYYbctihhx+CGKKII6oQ IFcJopiiiiuy
+NGC8pn4YH1xkVijjTfimKOOO04YY2AtAhmkkEOe9mJrEMooI408Mtmkk09C eaGPFxFZpZVX
YhnWexrFd+SUSTYYYZRjklmmmRp+WdGAWbLZpptvirTlRV3aB+aMYp6Zp557 7pgmRWvCGaig
g7Yop0V0hmlnc0vy2aijj27o50T/gBJaqaWXpmdknYrKxqiFtdQCqaijkimp RJiimqqqvmma
KKebSkSDrLPKCiqotOKaq6678tqrr78CG6ywwxJbbLCm/rOqsssyS1irSCrZ z2TSbkVtUXHt
amstxnLbrbffghtuuMg2W6655+pkaEWIQnsnRpL99a68WlXE663i4puvvvvy uyuylKIbsMAD
x/kssnQ1FVfC8y6Hbb8PQxyxxNz+S7DFF1usLkXsHjzXwhR9/DG9FE1csskn T1wxxiuz3KzB
kTnol8gM0wxXvSjjnLPOFMOcVMs/A43qyzInObNz8hpNrbUU2dK0009DHbXU U1NdtdVXY521
1ltz3bXX/7aQG7TYY785NMJFxwty2ka/2rbbb8Pt6olk0123kBr75BiMPSuZ tt9HsR234IMT
TnjMANuduOLs4S0Rx3xHK/LSGElbuOWXY87p4Ytz3vl6jf/zONGZk1666ad7 zJvnq7MenNmp
ox677LObHnPrt+NO2utyxUy7778DD2tPuRNfvGG7v9V77Eoz37zzz0MfvfTT U1+99ddjn732
zodtvPeD9bM66KKfHfxsvytvefqGq/y9+2ZJ6/n4ensJufl+z74++77rD295 7wOQLBkJH+fm
xxrh3a9/cVPgAtHXvgBCsCuA6xzyssJAzF3QbRnUoAPtN7wIgnAnCeNcBZey wf/CnVBzwEuh
ojJouxDC8CbVWlwJLXO/G+IwhzYsSgx7SBOFJc6ADGqXDotoRBxuzodKdAlg CEg3Ie5tdEec
IhX5p7olYlEl06obFOsnRdlNDmSV+8sY3xZGMpbxjBw0Shlf08Y1zmZyahyZ gLJox5N8xolj
q2FSWIi2edUscGBim8Lw17Y3BtKQmsuj/452LZ/dMZIjgY0eg8ZHpPixb4B0 JOAUaaeknW+T
KpzW2jw5SEeqrZExe6EkW+mRJiqNbJd8ZP4MGTJT/hGVbkwjLj9ZF6T1Mpdi 5KUof8lDVyIz
ZHbrIgJrZ8tSFvOUm7xlNFtozE5WU5qqrBkt64jMVgL/boJcnCVRMvkgUAIz m+fEJTZ1echr
chOOIxNkI4mCuG/6cIAdESfZmCk31KHzaPTUpDuhWVAVhlKgwSToPBd6UDXh U5Lx2ydG7EZO
m9VymgY1ZzcLmc6H+jKh7eQoJuHJyT5CMqJ3rCQ/93gc+jWzdsTc5TAXONMw zvFV1UJjTRv4
tzbmNKFzU6krWyq2i9KxikpdauZYSdSiVnRs/iQiU6tqVXn25J5PVaJRfzbV jl01rGL9Yla3
msxKAu2rHhwrW9u61oto1axyPRdSjenWu+LVhCmdK18JVleh5jWwgq3nB/tq 2ID9lbCDRSFJ
i+KAc5CxrU49LGWXpVayLtZw/40tZ8I2W7okVja0qrps+TIrWESyFbSiXa2l SAs70y4lAP14
DwD6EQCLvKO2/ZDHbWVLW9u6cSICqC0ABKCRAYBDWue4rURyKy3eUm4AB+jH AQZAOWuVMQDy
eC5z3eiA7fbDuDdULWvLK6jEphK2S5lHP+bxD/a+A7fMg+x721vf+Ab3H+dg nngp4gDmyaO5
872u0hywy8qNMQG6lRYAEkBgagU4gXs1L4XL9tID/lO9SJluA/oBDrj2w7qy bQqHPRxZNzp4
AIjcrnH/e5TainiM0hKvAHZLuRPXOMIsppw8HPwO1NJushUeMpbQ61ANT8TF wD3uPJLbFCV3
d4zTPf/APBCgFdgMoMky7oeD/5GALZ+4tl3+snGk1eX8mk/IRF7z3YysTiSr ycQXGcCC21jb
D584ANNlsJUlMxk6M+/GJ05jOMUo6EMHj7xsXjSLXMs7OCulw9Lqc0WmOw8H fLkpku4HpdsY
gHds11CotTSmtzzm2R56jGKWCJkRDeSMepPRsl6Ro5MHad60F9VxvK2kJ5Xr 92w5xoDZsYoP
QDleb5m+OU71UZb9jx2jOdorvOKsq40iN4P01v+osXG3696K7Jdaq+b2s+2b X/BSq79JZh5+
w81gLh+YWszVbYDHGIA6N9jVnmVoYa3tbwNhe99L/e9vuzuRUAtAtgIguK// b1vG4c5W3RSR
7mzxKxGEK9y70wWHgSWCgNpCNrvgha6+xzvhf6NcPQHXdhVffdqTpzzmwqm1 BVlORZcHVtEy
3zlqaK5Xmx8R53nVOc+LPhqf7xDoSk8ztY3udN1deIhgXTrV1Qfzp2MdMSuv OtdhPdSsg/0w
W+862Z2JlLCj3TBIR2nZ297Upqc97mVZe0ndbncUwl3uegcL3bt597+bMe97 H/xOxg74wyP0
mIRffFcMj/jH8/tHjJ88TgK+vctjPvOa3zznO+/5z4NeelenPOlb0nfIoz52 cS0960ly+tTD
nnSrbz3tP/L62OO+cLOvPe+xnfvf24n3wkeJ74Fv//z6DD/5JCn+8ZvvGuVD 3/bMdz716bL7
6DP+9tXffmyuj33Ca5/74veL978/+OmPP/1UMr/y0a/+95+K/cl3P/zVL//h h7/++t/I/Xmf
//0D4D+UX/+F3f8FoP4NIAGCHf0dIPUpYO0xYAM23wPSXgRKoPFRIOsZ4AWm XwJmYNFtIAeK
nwd+4M6FoAhuHwmWoMxZIArG3gpSXgu6YOrB4OTJ4AxCXg0u3gni4PGpoA5a Gw/2IPD9IBDO
mhAOYe4VoRHK2g0m4d8x4d454RPaXRTq3RRSYdtZYdwhYRai3hJu4ZB1oRc+ HhiGIYWNIRke
nhmeoXlhoRpWXRuG3RvC4f/SyeECRl0U1aH93eHTpeEeuh0b9mFl/SEglp0g DuJhFaIhdh0i
JqJh0SEj3tojGl0kSiKcUWLRWeIlalgmmuAmciJsOaInbtUihiLQjSIpEpUp niLLpaIqqhQo
tuJgwWLKyeIsBlYtotwt4iJe6aK/sWIvItkr/mIrBaMwqhcxFmMkHSMympYy LuMd8aIzjlU0
zto0UmNYWWMT5qEXZSMNbiObNeM3BhY0hqMPjSM54pU5nmMMpaM6uhU7tiMM YSM8KtU8Elk9
2iMV4eOQ6eM+HlE/ouE/AmQRyaNAAtA7FuRVHSRCuo9CLmRVNaRDfg9BRuQN uQcAmIdGbqRG
ZmT/R4LkR4pkR3DkSPpDSZKkR6ZkSK6kSaLkSaokTLKkTLpkTL7kTdpkTs4k Tu6kTtZkTwLl
TwplSxIlTRYlTw6lUSolUh6lTzZlUD5lUjLlUjolVUKlVUplVU4lU1rkRXrl V84i+YDlWJJl
WcqFWJplWqrlWoYOTLHlW8JlWaJlXNJlXWbjXNplXuplKOLlXvrlX6phXwLm YBLmDApmYSJm
YgLgYSpmYzom9zHmY0rmZOZeZFLmZWIm4FlmZnJmZ1bdZnpmaIomnIHmaJrm aQZWadpJULBm
a7rma8JmbMrmbNJmbdrmbeJmburmbvJmb/rmbwJncArncBJncRrncSJn/3Iq 53IyZ3M653NC
p2+qJphoAD9Y53ViZ3Zq53ZyZ3d653eCZ3iK53iSZ3ma53miZ3qq53qyZ3u6 53vCZ3zK53zS
Z33a533iZ37q536e53QmSXXyZ4AK6IASaIEa6IEiaIIq6IIyaIM66IPqp3/K CIBCaIVa6IVi
aIZq6IZyaId66IdeqIQ+CIWCaIma6ImiaIqq6IqyaIueqIjald9JBIm6aI3a 6I3iaI7q6I7y
aIXCKGCVk0XQaI8SaZEa6ZEiaZIqqYk+ztI4KYJ1lsJs2UjR1EQM6ZJiaZZq 6ZZyaZd6aXZy
zE69CzYNEP5IzpiK0pV+6ZqyaZu66ZvCqYKG6f+Zkmm8pVegxdOMxume8mmf +umfAip3ig6C
xUudMlIxsY2aBuqiMmqjOuqjqij5lCmaKtTMnKlztJOVQuqmcmqneuqnGuic Rmk6hRMsXVcg
bYWiguqqsmqruuqr8sOPMoeqwmqt2uqt4uqayqps0Gqu+uqvAmuwuuiuxkav CuuxImuyKiuD
EmtlGOuyQmu0Suu0vmeXROdtUmu2auu2cit5dslPgGu4iuu4kmu5muu5omu6 quu6smu7uuu7
wmu8yuu80mu92uu94mu+6uu+8mu/+uu/AmzACuzAEmzBDixrGGzCKuzCMmzD OuzDQmzESuzE
UmzFWuzFYmy9XuvGcmwYx3rsx4JsyIrsyJJsyZrsyaJsyqqscQYEADs=
--------------010406020107070907090808--
|
|
|
Re: charts within a draw2d figure [message #33573 is a reply to message #33536] |
Tue, 03 May 2005 10:34   |
Eclipse User |
|
|
|
Originally posted by: mpadhye.actuate.com
Nicholas Gauthier wrote:
> Hello again,
> So adding creating a image and rendering the chart into the new image
> worked perfectly. As you can see from the screenshots I can now drag
> around and resize multiple charts on the same GraphicalEditor.
>
> My new problem is that rendering onto an Image allows limited user
> interaction. Sure I could add a mouse listener and listen to events on
> the entire figure. But what I would really like to do is be notified
> when certain points (for a scatter plot), lines (for a line chart), or
> rectangles (for a bar chart) are clicked on. I know that there is a
> trigger framework for handeling this within AWT & SWT, and that it is
> not yet implemented for SWT...but even if it were implemented, rendering
> onto a image (I believe) would not allow this interaction.
>
> Is there perhaps a way to translate a mouse click location into the
> selected point on the Image rendered chart?
>
> Or any ideas on how to solve this?
>
>
> Thanks for your help! Nick.
>
>
>
>
> Milind Padhye wrote:
>
>> Nicholas Gauthier wrote:
>>
>>> Hello again,
>>>
>>> I am interested in using the charting project within a GEF
>>> GraphicalEditor that contains Figures. There are a couple of reasons
>>> I am interested in doing this:
>>>
>>> 1. The GEF framework will only call paintFigure() when a change has
>>> occured, otherwise it stores the figure in some soft of cache. This
>>> would eleminate the flashing appearence of redraws when implemented.
>>>
>>> 2. I would like to allow the user to drag, move, and resize charts
>>> within the edit part. GEF has a whole framework for this using
>>> commands and edit policies.
>>>
>>> So I went about implementing a figure with a Birt chart within it. I
>>> wanted to just implement within the org.eclipse.draw2d.Figure the
>>> paintFigure(Graphics graphics) method. Within this method my plan
>>> was to pass to Birt the graphics object like:
>>>
>>> ************************************
>>>
>>> protected void paintFigure(Graphics graphics){
>>> IDeviceRenderer deviceRenderer = null;
>>> try{
>>> deviceRenderer = PluginSettings.instance().getDevice("dv.SWT");
>>> }catch (PluginException ex){
>>> System.err.println("Oops, can't find the device renderer.");
>>> ex.printStackTrace();
>>> System.exit(1);
>>> }
>>> deviceRenderer.setProperty(IDeviceRenderer.GRAPHICS_CONTEXT,
>>> graphics);
>>>
>>>
>>> //now create chart as shown in SWT examples
>>> }
>>>
>>> ************************************
>>>
>>> However this didnt work and the deviceRenderer must take a GC object
>>> as its graphics context. It turns out that Graphics object
>>> (org.eclipse.draw2d.SWTGraphics) does have a GC object associated
>>> with it, but it is private. Is there anyway to do this?
>>>
>>>
>>> Thanks for your help! Nick.
>>
>>
>> Hi again,
>>
>> I am not totally sure I get what you are trying to do. However,
>> the chart library does have a Figure wrapper implemented for
>> integration with the BIRT designer.
>>
>> I suggest you take a look at the classes
>> 'org.eclipse.birt.chart.reportitem.ChartReportItemUIImpl' and
>> 'org.eclipse.birt.chart.reportitem.DesignerRepresentation' in the
>> org.eclipse.birt.chart.reportitem plug-in. This might help in what you
>> are trying to do.
>>
>> Thanks,
>> Milind
>
>
>
> ------------------------------------------------------------ ------------
>
Hi Nicholas,
I think it will be difficult to implment listeners from the outside in.
The position of the series elements (markers, lines, bars etc.) is not
fixed but depends on the size of labels, the scale of the axis and other
variables...some of which are computed just before rendering.
It just might work if you have defined a fixed scale, hid the axis
labels and the title and knew the number of category entries in the
chart. In which case, you can re-calculate the position of the elements
and use this information to process interactions.
Thanks,
Milind
|
|
|
Re: charts within a draw2d figure [message #33607 is a reply to message #33573] |
Tue, 03 May 2005 14:00   |
Eclipse User |
|
|
|
Originally posted by: nicholas.gauthier.utah.edu
Thanks for the quick reply,
When the triggers are implemented with SWT will this be a possible
solution? It seemed to me that the triggers handled very specific
events and had very specific responses (like 'Hover' causes 'Open URL'
or 3 other possible actions). Can a trigger be added to a specific
point on a scatter plot, or a specific line on a line chart? Will it be
possible to create your own trigger response (by subclassing Action)?
I kind of think that developers wanting to use BIRT Charts in their own
SWT or RCP programs will have similar requirements for user interaction.
In software such as Excel, a chart allows users to highlight, select,
tag points...etc. Will BIRT Charting do similar things?
Maybe it would be a good idea to have a Figure rendering, with all the
chart elements as child figures? Then again, maybe what I am trying to
do is just too specific?
Thanks again for your help! Nick.
Milind Padhye wrote:
> Nicholas Gauthier wrote:
>
>> Hello again,
>> So adding creating a image and rendering the chart into the new image
>> worked perfectly. As you can see from the screenshots I can now drag
>> around and resize multiple charts on the same GraphicalEditor.
>>
>> My new problem is that rendering onto an Image allows limited user
>> interaction. Sure I could add a mouse listener and listen to events
>> on the entire figure. But what I would really like to do is be
>> notified when certain points (for a scatter plot), lines (for a line
>> chart), or rectangles (for a bar chart) are clicked on. I know that
>> there is a trigger framework for handeling this within AWT & SWT, and
>> that it is not yet implemented for SWT...but even if it were
>> implemented, rendering onto a image (I believe) would not allow this
>> interaction.
>>
>> Is there perhaps a way to translate a mouse click location into the
>> selected point on the Image rendered chart?
>>
>> Or any ideas on how to solve this?
>>
>>
>> Thanks for your help! Nick.
>>
>>
>>
>>
>> Milind Padhye wrote:
>>
>>> Nicholas Gauthier wrote:
>>>
>>>> Hello again,
>>>>
>>>> I am interested in using the charting project within a GEF
>>>> GraphicalEditor that contains Figures. There are a couple of
>>>> reasons I am interested in doing this:
>>>>
>>>> 1. The GEF framework will only call paintFigure() when a change
>>>> has occured, otherwise it stores the figure in some soft of cache.
>>>> This would eleminate the flashing appearence of redraws when
>>>> implemented.
>>>>
>>>> 2. I would like to allow the user to drag, move, and resize charts
>>>> within the edit part. GEF has a whole framework for this using
>>>> commands and edit policies.
>>>>
>>>> So I went about implementing a figure with a Birt chart within it.
>>>> I wanted to just implement within the org.eclipse.draw2d.Figure the
>>>> paintFigure(Graphics graphics) method. Within this method my plan
>>>> was to pass to Birt the graphics object like:
>>>>
>>>> ************************************
>>>>
>>>> protected void paintFigure(Graphics graphics){
>>>> IDeviceRenderer deviceRenderer = null;
>>>> try{
>>>> deviceRenderer = PluginSettings.instance().getDevice("dv.SWT");
>>>> }catch (PluginException ex){
>>>> System.err.println("Oops, can't find the device renderer.");
>>>> ex.printStackTrace();
>>>> System.exit(1);
>>>> }
>>>> deviceRenderer.setProperty(IDeviceRenderer.GRAPHICS_CONTEXT,
>>>> graphics);
>>>>
>>>>
>>>> //now create chart as shown in SWT examples
>>>> }
>>>>
>>>> ************************************
>>>>
>>>> However this didnt work and the deviceRenderer must take a GC object
>>>> as its graphics context. It turns out that Graphics object
>>>> (org.eclipse.draw2d.SWTGraphics) does have a GC object associated
>>>> with it, but it is private. Is there anyway to do this?
>>>>
>>>>
>>>> Thanks for your help! Nick.
>>>
>>>
>>>
>>> Hi again,
>>>
>>> I am not totally sure I get what you are trying to do. However,
>>> the chart library does have a Figure wrapper implemented for
>>> integration with the BIRT designer.
>>>
>>> I suggest you take a look at the classes
>>> 'org.eclipse.birt.chart.reportitem.ChartReportItemUIImpl' and
>>> 'org.eclipse.birt.chart.reportitem.DesignerRepresentation' in the
>>> org.eclipse.birt.chart.reportitem plug-in. This might help in what
>>> you are trying to do.
>>>
>>> Thanks,
>>> Milind
>>
>>
>>
>>
>> ------------------------------------------------------------ ------------
>>
> Hi Nicholas,
>
> I think it will be difficult to implment listeners from the outside in.
>
> The position of the series elements (markers, lines, bars etc.) is
> not fixed but depends on the size of labels, the scale of the axis and
> other variables...some of which are computed just before rendering.
>
> It just might work if you have defined a fixed scale, hid the axis
> labels and the title and knew the number of category entries in the
> chart. In which case, you can re-calculate the position of the elements
> and use this information to process interactions.
>
> Thanks,
> Milind
|
|
|
Re: charts within a draw2d figure [message #40902 is a reply to message #33607] |
Tue, 24 May 2005 17:08  |
Eclipse User |
|
|
|
Originally posted by: mpadhye.actuate.com
Sorry for the late reply.
When interactivity is implemented in the SWT device, it will be possible
to have interactions specific to series elements like markers (Line /
Scatter series) and risers (Bar series).
As for the types of interactions, only a few have been provided to as a
kind of proof-of-concept. They are intended for extension by the
community as interactivity is likely to be highly dependent on the
specific output device.
The interactions are defined in the chart model and can be extended just
like any other chart element. It is of course necessary to provide
implementations in the device renderer to handle any custom interactions
added to the model.
Figure rendering should be doable...however it would be very specific
and likely not very portable. Since the chart library provides an
extension mechanism for device rendering, you could go ahead and try
your hand at it and contribute such a device! :)
Thanks,
Milind
Nicholas Gauthier wrote:
> Thanks for the quick reply,
>
> When the triggers are implemented with SWT will this be a possible
> solution? It seemed to me that the triggers handled very specific
> events and had very specific responses (like 'Hover' causes 'Open URL'
> or 3 other possible actions). Can a trigger be added to a specific
> point on a scatter plot, or a specific line on a line chart? Will it be
> possible to create your own trigger response (by subclassing Action)?
>
> I kind of think that developers wanting to use BIRT Charts in their own
> SWT or RCP programs will have similar requirements for user interaction.
> In software such as Excel, a chart allows users to highlight, select,
> tag points...etc. Will BIRT Charting do similar things?
>
> Maybe it would be a good idea to have a Figure rendering, with all the
> chart elements as child figures? Then again, maybe what I am trying to
> do is just too specific?
>
>
> Thanks again for your help! Nick.
>
>
>
>
>
> Milind Padhye wrote:
>
>> Nicholas Gauthier wrote:
>>
>>> Hello again,
>>> So adding creating a image and rendering the chart into the new image
>>> worked perfectly. As you can see from the screenshots I can now drag
>>> around and resize multiple charts on the same GraphicalEditor.
>>>
>>> My new problem is that rendering onto an Image allows limited user
>>> interaction. Sure I could add a mouse listener and listen to events
>>> on the entire figure. But what I would really like to do is be
>>> notified when certain points (for a scatter plot), lines (for a line
>>> chart), or rectangles (for a bar chart) are clicked on. I know that
>>> there is a trigger framework for handeling this within AWT & SWT, and
>>> that it is not yet implemented for SWT...but even if it were
>>> implemented, rendering onto a image (I believe) would not allow this
>>> interaction.
>>>
>>> Is there perhaps a way to translate a mouse click location into the
>>> selected point on the Image rendered chart?
>>>
>>> Or any ideas on how to solve this?
>>>
>>>
>>> Thanks for your help! Nick.
>>>
>>>
>>>
>>>
>>> Milind Padhye wrote:
>>>
>>>> Nicholas Gauthier wrote:
>>>>
>>>>> Hello again,
>>>>>
>>>>> I am interested in using the charting project within a GEF
>>>>> GraphicalEditor that contains Figures. There are a couple of
>>>>> reasons I am interested in doing this:
>>>>>
>>>>> 1. The GEF framework will only call paintFigure() when a change
>>>>> has occured, otherwise it stores the figure in some soft of cache.
>>>>> This would eleminate the flashing appearence of redraws when
>>>>> implemented.
>>>>>
>>>>> 2. I would like to allow the user to drag, move, and resize
>>>>> charts within the edit part. GEF has a whole framework for this
>>>>> using commands and edit policies.
>>>>>
>>>>> So I went about implementing a figure with a Birt chart within it.
>>>>> I wanted to just implement within the org.eclipse.draw2d.Figure the
>>>>> paintFigure(Graphics graphics) method. Within this method my plan
>>>>> was to pass to Birt the graphics object like:
>>>>>
>>>>> ************************************
>>>>>
>>>>> protected void paintFigure(Graphics graphics){
>>>>> IDeviceRenderer deviceRenderer = null;
>>>>> try{
>>>>> deviceRenderer =
>>>>> PluginSettings.instance().getDevice("dv.SWT");
>>>>> }catch (PluginException ex){
>>>>> System.err.println("Oops, can't find the device renderer.");
>>>>> ex.printStackTrace();
>>>>> System.exit(1);
>>>>> }
>>>>> deviceRenderer.setProperty(IDeviceRenderer.GRAPHICS_CONTEXT,
>>>>> graphics);
>>>>>
>>>>>
>>>>> //now create chart as shown in SWT examples
>>>>> }
>>>>>
>>>>> ************************************
>>>>>
>>>>> However this didnt work and the deviceRenderer must take a GC
>>>>> object as its graphics context. It turns out that Graphics object
>>>>> (org.eclipse.draw2d.SWTGraphics) does have a GC object associated
>>>>> with it, but it is private. Is there anyway to do this?
>>>>>
>>>>>
>>>>> Thanks for your help! Nick.
>>>>
>>>>
>>>>
>>>>
>>>> Hi again,
>>>>
>>>> I am not totally sure I get what you are trying to do. However,
>>>> the chart library does have a Figure wrapper implemented for
>>>> integration with the BIRT designer.
>>>>
>>>> I suggest you take a look at the classes
>>>> 'org.eclipse.birt.chart.reportitem.ChartReportItemUIImpl' and
>>>> 'org.eclipse.birt.chart.reportitem.DesignerRepresentation' in the
>>>> org.eclipse.birt.chart.reportitem plug-in. This might help in what
>>>> you are trying to do.
>>>>
>>>> Thanks,
>>>> Milind
>>>
>>>
>>>
>>>
>>>
>>> ------------------------------------------------------------ ------------
>>>
>> Hi Nicholas,
>>
>> I think it will be difficult to implment listeners from the
>> outside in.
>>
>> The position of the series elements (markers, lines, bars etc.) is
>> not fixed but depends on the size of labels, the scale of the axis and
>> other variables...some of which are computed just before rendering.
>>
>> It just might work if you have defined a fixed scale, hid the axis
>> labels and the title and knew the number of category entries in the
>> chart. In which case, you can re-calculate the position of the
>> elements and use this information to process interactions.
>>
>> Thanks,
>> Milind
|
|
|
Goto Forum:
Current Time: Wed Apr 16 10:37:20 EDT 2025
Powered by FUDForum. Page generated in 0.02831 seconds
|