Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Archived » Albireo » Will there be a fix for ...
Will there be a fix for ... [message #4551] Fri, 02 November 2007 22:36 Go to next message
Chris Kwon Lewis is currently offline Chris Kwon LewisFriend
Messages: 24
Registered: July 2009
Junior Member
Will there be a fix for letting you use JOptionPane and JDialogs(etc) ?

I noticed if I use JOptionPane BEFORE creating my EmbeddedSwingComposite
it works just fine. But if I attempt to use JOptionPane or a JDialog
after I've created the EmbeddedSwingComposite that it will display, but
it tends to freeze the whole program.

Not sure if you were aware of this problem, but it would be nice to be
able to use JOptionPane, and in my case a JDialog since the person
before me wrote a lot of code for that particular section which uses a
JDialog and JTrees. Initially i thought the problem was setting the
JDialog's frame owner to the awt frame in EmbeddedSwingComposite. But I
experimented with a regular JOptionPane(doesn't ask for the parent
component/frame) and noticed the same problem.
Re: Will there be a fix for ... [message #4621 is a reply to message #4551] Mon, 05 November 2007 13:23 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: canadianguy.gmail.com

You may need to provide a little more information. I know that I have
successfully used JOptionPane and JDialogs both before and after creating
EmbeddedSwingComposites. The code I am working from is modified from
Gordon's original article code.

Originally I was often having this problem when an invisible dialog was
added to the SwtInputBlocker... but I believe the fix for that one has since
been applied to the sample code.

I would also suspect that you are getting pop-under windows (your swing
window could be trapped behind your SWT Window) but it is hard to say. You
could also try the changes Gordon and I discuss in the September 19th post
to this group.

In short, I would hazard a guess that compatibility issues such as this are
vital to the project and will eventually be worked out.

-James

"Cklewis" <chriskwonlewis@msn.com> wrote in message
news:fgg8p4$5ko$1@build.eclipse.org...
> Will there be a fix for letting you use JOptionPane and JDialogs(etc) ?
>
> I noticed if I use JOptionPane BEFORE creating my EmbeddedSwingComposite
> it works just fine. But if I attempt to use JOptionPane or a JDialog
> after I've created the EmbeddedSwingComposite that it will display, but
> it tends to freeze the whole program.
>
> Not sure if you were aware of this problem, but it would be nice to be
> able to use JOptionPane, and in my case a JDialog since the person
> before me wrote a lot of code for that particular section which uses a
> JDialog and JTrees. Initially i thought the problem was setting the
> JDialog's frame owner to the awt frame in EmbeddedSwingComposite. But I
> experimented with a regular JOptionPane(doesn't ask for the parent
> component/frame) and noticed the same problem.
Re: Will there be a fix for ... [message #4689 is a reply to message #4621] Wed, 07 November 2007 16:32 Go to previous messageGo to next message
Chris Kwon Lewis is currently offline Chris Kwon LewisFriend
Messages: 24
Registered: July 2009
Junior Member
I just wrote a seperate program to test if the error was still happening
and it is.

Here is exactly what i'm doing.

1)Create a Shell, set layout etc
2)Try JOptionPane.showInputDialog (works fine)
3)Create swing component (a piccolo "canvas", which is an extended
JComponent)
4)Add my EmbeddedSwingComposite
5)Let the GUI load
6)Click on "file" menu and click on an item I have preset with an action
lisener to call a function that loads another JOptionPane.showInputDialog

The result is the first JoptionPane is fine, but the second one freezes
the entire program as soon as I click a button.

If you would like, I could upload the project so you can try it. It's
just one file along with the folder with all the swing integration stuff
from Gordon's example.

James Peltzer wrote:
> You may need to provide a little more information. I know that I have
> successfully used JOptionPane and JDialogs both before and after creating
> EmbeddedSwingComposites. The code I am working from is modified from
> Gordon's original article code.
>
> Originally I was often having this problem when an invisible dialog was
> added to the SwtInputBlocker... but I believe the fix for that one has since
> been applied to the sample code.
>
> I would also suspect that you are getting pop-under windows (your swing
> window could be trapped behind your SWT Window) but it is hard to say. You
> could also try the changes Gordon and I discuss in the September 19th post
> to this group.
>
> In short, I would hazard a guess that compatibility issues such as this are
> vital to the project and will eventually be worked out.
>
> -James
>
> "Cklewis" <chriskwonlewis@msn.com> wrote in message
> news:fgg8p4$5ko$1@build.eclipse.org...
>> Will there be a fix for letting you use JOptionPane and JDialogs(etc) ?
>>
>> I noticed if I use JOptionPane BEFORE creating my EmbeddedSwingComposite
>> it works just fine. But if I attempt to use JOptionPane or a JDialog
>> after I've created the EmbeddedSwingComposite that it will display, but
>> it tends to freeze the whole program.
>>
>> Not sure if you were aware of this problem, but it would be nice to be
>> able to use JOptionPane, and in my case a JDialog since the person
>> before me wrote a lot of code for that particular section which uses a
>> JDialog and JTrees. Initially i thought the problem was setting the
>> JDialog's frame owner to the awt frame in EmbeddedSwingComposite. But I
>> experimented with a regular JOptionPane(doesn't ask for the parent
>> component/frame) and noticed the same problem.
>
>
Re: Will there be a fix for ... [message #4758 is a reply to message #4689] Thu, 08 November 2007 19:56 Go to previous messageGo to next message
Gordon Hirsch is currently offline Gordon HirschFriend
Messages: 100
Registered: July 2009
Senior Member
If you make your example available, I can take a look. There's no
specific problem that I know of with JOptionPane, and I have
successfully used JOptionPane dialogs in the past.

Cklewis wrote:
> I just wrote a seperate program to test if the error was still happening
> and it is.
>
> Here is exactly what i'm doing.
>
> 1)Create a Shell, set layout etc
> 2)Try JOptionPane.showInputDialog (works fine)
> 3)Create swing component (a piccolo "canvas", which is an extended
> JComponent)
> 4)Add my EmbeddedSwingComposite
> 5)Let the GUI load
> 6)Click on "file" menu and click on an item I have preset with an action
> lisener to call a function that loads another JOptionPane.showInputDialog
>
> The result is the first JoptionPane is fine, but the second one freezes
> the entire program as soon as I click a button.
>
> If you would like, I could upload the project so you can try it. It's
> just one file along with the folder with all the swing integration stuff
> from Gordon's example.
>
> James Peltzer wrote:
>> You may need to provide a little more information. I know that I have
>> successfully used JOptionPane and JDialogs both before and after creating
>> EmbeddedSwingComposites. The code I am working from is modified from
>> Gordon's original article code.
>>
>> Originally I was often having this problem when an invisible dialog was
>> added to the SwtInputBlocker... but I believe the fix for that one has
>> since
>> been applied to the sample code.
>>
>> I would also suspect that you are getting pop-under windows (your swing
>> window could be trapped behind your SWT Window) but it is hard to
>> say. You
>> could also try the changes Gordon and I discuss in the September 19th
>> post
>> to this group.
>>
>> In short, I would hazard a guess that compatibility issues such as
>> this are
>> vital to the project and will eventually be worked out.
>>
>> -James
>>
>> "Cklewis" <chriskwonlewis@msn.com> wrote in message
>> news:fgg8p4$5ko$1@build.eclipse.org...
>>> Will there be a fix for letting you use JOptionPane and JDialogs(etc) ?
>>>
>>> I noticed if I use JOptionPane BEFORE creating my EmbeddedSwingComposite
>>> it works just fine. But if I attempt to use JOptionPane or a JDialog
>>> after I've created the EmbeddedSwingComposite that it will display, but
>>> it tends to freeze the whole program.
>>>
>>> Not sure if you were aware of this problem, but it would be nice to be
>>> able to use JOptionPane, and in my case a JDialog since the person
>>> before me wrote a lot of code for that particular section which uses a
>>> JDialog and JTrees. Initially i thought the problem was setting the
>>> JDialog's frame owner to the awt frame in EmbeddedSwingComposite. But I
>>> experimented with a regular JOptionPane(doesn't ask for the parent
>>> component/frame) and noticed the same problem.
>>
>>
Re: Will there be a fix for ... [message #4833 is a reply to message #4758] Thu, 08 November 2007 20:40 Go to previous messageGo to next message
Chris Kwon Lewis is currently offline Chris Kwon LewisFriend
Messages: 24
Registered: July 2009
Junior Member
This is a multi-part message in MIME format.
--------------040206060602040709030109
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Here is the example (attached),

click on 'file' -> 'try me' to get the 2nd JOptionPane to come up...
this way the gui and embedded swing composite are already loaded when it
comes up.

You also need the piccolo library to get this project to work.
downloadable at:
http://www.cs.umd.edu/hcil/jazz/download/piccolo/piccolo-1.2 .zip

you can add the piccolo jars or put the piccolo portion as a project and
link via a buildpath.

Gordon Hirsch wrote:
> If you make your example available, I can take a look. There's no
> specific problem that I know of with JOptionPane, and I have
> successfully used JOptionPane dialogs in the past.
>
> Cklewis wrote:
>> I just wrote a seperate program to test if the error was still
>> happening and it is.
>>
>> Here is exactly what i'm doing.
>>
>> 1)Create a Shell, set layout etc
>> 2)Try JOptionPane.showInputDialog (works fine)
>> 3)Create swing component (a piccolo "canvas", which is an extended
>> JComponent)
>> 4)Add my EmbeddedSwingComposite
>> 5)Let the GUI load
>> 6)Click on "file" menu and click on an item I have preset with an
>> action lisener to call a function that loads another
>> JOptionPane.showInputDialog
>>
>> The result is the first JoptionPane is fine, but the second one
>> freezes the entire program as soon as I click a button.
>>
>> If you would like, I could upload the project so you can try it. It's
>> just one file along with the folder with all the swing integration
>> stuff from Gordon's example.
>>
>> James Peltzer wrote:
>>> You may need to provide a little more information. I know that I have
>>> successfully used JOptionPane and JDialogs both before and after
>>> creating
>>> EmbeddedSwingComposites. The code I am working from is modified from
>>> Gordon's original article code.
>>>
>>> Originally I was often having this problem when an invisible dialog was
>>> added to the SwtInputBlocker... but I believe the fix for that one
>>> has since
>>> been applied to the sample code.
>>>
>>> I would also suspect that you are getting pop-under windows (your swing
>>> window could be trapped behind your SWT Window) but it is hard to
>>> say. You
>>> could also try the changes Gordon and I discuss in the September 19th
>>> post
>>> to this group.
>>>
>>> In short, I would hazard a guess that compatibility issues such as
>>> this are
>>> vital to the project and will eventually be worked out.
>>>
>>> -James
>>>
>>> "Cklewis" <chriskwonlewis@msn.com> wrote in message
>>> news:fgg8p4$5ko$1@build.eclipse.org...
>>>> Will there be a fix for letting you use JOptionPane and JDialogs(etc) ?
>>>>
>>>> I noticed if I use JOptionPane BEFORE creating my
>>>> EmbeddedSwingComposite
>>>> it works just fine. But if I attempt to use JOptionPane or a JDialog
>>>> after I've created the EmbeddedSwingComposite that it will display, but
>>>> it tends to freeze the whole program.
>>>>
>>>> Not sure if you were aware of this problem, but it would be nice to be
>>>> able to use JOptionPane, and in my case a JDialog since the person
>>>> before me wrote a lot of code for that particular section which uses a
>>>> JDialog and JTrees. Initially i thought the problem was setting the
>>>> JDialog's frame owner to the awt frame in EmbeddedSwingComposite.
>>>> But I
>>>> experimented with a regular JOptionPane(doesn't ask for the parent
>>>> component/frame) and noticed the same problem.
>>>
>>>


--------------040206060602040709030109
Content-Type: application/x-zip-compressed;
name="swtSwingProblem.zip"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="swtSwingProblem.zip"

UEsDBBQAAAAIAMtraDf1M9tAjwAAAOgAAAAaAAAAc3d0U3dpbmdQcm9ibGVt Ly5jbGFzc3Bh
dGizsa/IzVEoSy0qzszPs1Uy1DNQUkjNS85PycxLt1UKDXHTtVCyt+PlsknO SSwuLkgsyQBy
OBG81LySokqF7My8FFul4qJkJQWQIISpj1tlcn4eTGV+UbpeanJOZkFxql5W SoleTmJpXnIG
0HY9ryDXeGd/vxBHTz/XIHym5ZeWFJSWwAxMyswDK7bRR3YyAFBLAwQUAAAA CADLa2g31c09
AMQAAACHAQAAGAAAAHN3dFN3aW5nUHJvYmxlbS8ucHJvamVjdHVQQQ6CMBA8 a+IfCHep3jxU
OGg8m6APKGVDSmhLtgV8vm0pGky87czO7ExLi5fskhHQCK3O6TE7pAkormuh mnP6fNz2p7TI
d1vao26B2ysYjqK3Tu3YDVVMQm4mW07OcEdddSApCaxfcy0lKJtTskyejbdM AGSFqkF0ddkD
9yjCi7MyVQcmJmpsMuCd6A1kbW0zrtENbGTBAPit4BwMm8Fnm4jJmqDkNyUy Sw0XaQeEqJ7B
/wbz3hcIunDue+Dz3PVHvgFQSwMECgAAAAAAymtoNwAAAAAAAAAAAAAAABQA AABzd3RTd2lu
Z1Byb2JsZW0vYmluL1BLAwQKAAAAAAD6a2g3AAAAAAAAAAAAAAAAFAAAAHN3 dFN3aW5nUHJv
YmxlbS9zcmMvUEsDBBQAAAAIAPRraDdrui92NwMAAFgJAAAnAAAAc3d0U3dp bmdQcm9ibGVt
L3NyYy9waWNjb2xvV2l0aFNXVC5qYXZhjVVbTyIxFH4eE/9D5WlINuUHEB8Q 2F03KkZMeNhs
TJ0eoJuhnbQd0DX+9z29DHMRwUEG237n0vN9PT0/Oz8Tm0JpS/6yLXuhZifk iv4aK5yUIO3w
8PqssELJeyYBAXuI0isKWS4KAwi0dL54HH66CFt0b+gccsicsxFnhQX9dYPp tpVfF56zV1Va
+l3k+Y3/9yT0hxb8FHQn+Aowi4kwBZqdBt6CLL+GurawOY2cryHPm0UHXtJy w2lmaCGyTOWK
3o+Z3DIzPIaRioOh94/wYpvePL9CWlhp5opMp5tn4Bz43C14WRhhA+vhU5TP uchIljNjSPS+
EHaN5JM3B0giwlj0mJGtEpxsmJAkJXOr0Sv5/YcwvTKk7wySxH1jfQmPv5dE wo7E2bQ/dJhO
MFYUGMZnHeFtQLTyBSTGvy+bRlQVINMYMGB3a5FDeuHBVBgXXhngab/vE03E Mr2IBlQD4yPJ
HYbZbI0YD0mqdZMDFDGH5H0wAMmJWLpRheDBfcTgN6JcsXCEfyF3N34yUQfd Srmpw5wFbp+y
BodJVArJKsEkNV8hmC9KJ0bYvV0LQ2t+qvhJeAaDsSpeiYYlaJAZELWs6HPG 9R4iVz5au/o1
hhqw4WSmDlufaazyAegtexEb8Q+JsrqEfTmTRtuiZq1217Io7USwXK3S3hUs lYZeQId6xNRi
kWpekk4lI+5w2dM6t28EZUjvZnfToHQSn0Iriz0NOKkbL8lQUBZqX24ybdu5 R4MttWwQWC1E
8RxyE1HvFbyzHVqooszRqrFjxnkcBYeuYV0x3UA0KPCaqVdiim3ZhvRagvOd wQcib97Qdydi
3Ssy4SbS3k/0ochC6Zy3+KIrLxPAtCj6GePpRQmgSf9YxM6GvLbdiGzCVIzt pj5weTV6OCjA
6Cx6CJCqxxPhXrVTN1chg9fxaD4eTabBzKGdz7B1lH6l0X2OxxKcPMzunyaz xV3bWcDiq2Zp
n54pn68/ybAhYG8XoXV6j/oVU+q1V5GK/aV9I4wFiQz5M9+5+6O8kxY94eIL UDzR7eufQGWC
/Ui/3kKnwbaN3cp70MJHGURz7+1oo2BLTLXXlVR13Nw1eH72H1BLAwQKAAAA AAD3a2g3AAAA
AAAAAAAAAAAAJQAAAHN3dFN3aW5nUHJvYmxlbS9zcmMvc3dpbmdpbnRlZ3Jh dGlvbi9QSwME
FAAAAAgAz0hnNwgpnIwnCQAA4iEAADsAAABzd3RTd2luZ1Byb2JsZW0vc3Jj L3N3aW5naW50
ZWdyYXRpb24vQXd0RGlhbG9nTGlzdGVuZXIuamF2YdVZUXPbNhJ+94z/A5qX o3IyldzLzdiT
uzq22/NcbOUiT/3YgUhIQkQBOgIUq7b+7/ctAEqkSNpuJvXkMJlYpBaLxe63 3y6g0euvO46P
2Gt2odfbXM4XlkXJgP3tzZu/s8n5hF0rY6UtrIid1HmWMSdlWC6MyDcijdnd Qhq2zvU85yvG
VcrsQjCeJHq15mor1ZytuBW55JlxSngu8CaFzIbLjE8zwQqVitzNg+DKMD1z D1dJJtdGsI/F
NJMJ+yATofC4eRu/cZrKhUwWu6WkMJgFW1JpbC6nhZVaDZ1FeLlfjFs3eWHt +nQ0KssyFn6d
WOfzUSbmPBuJdXayefsmXthVRtLBR8rr1bk5dW9oNNzETphU0mKv7PzjtV97 tc7ESijLyR6a
9nXH6PhozZMlnwtmSnhbKisQClrs7Pjo+Ajr69yyz3BAzEsbn9/fXW1gzln7 q0vYrecdX7gJ
/ylEITq+vNM6W8ouffdSpbrs+EKQvp0lHxAvoUTeK3iB+GqFT32GH4g9qdAb 1qUNoMni8zzn
W1LS9WV4v/sGoNkByGCFUqZzYQ2cadYZ3zrRUciyc5YF04BUboEVU+QOtoIy aI33K50CPFOx
4Bupc8qECUUVoKbYGGBeKJYXSuGlTwIJ0CvG2eT+jgm1kblWBLeY3ZNogKP8 VaRDJi2bZjpZ
GofMQoUHminVuvCJwU0workwpa1Z6FK5uQuZpkLFjGYAgUnGjWHnpfUQqgKw Bz++PIj2kLXi
xX6DOgz//2jk7bgMBmDxIkvhGsp4YYxImVbZls1yvXIexAr4mwuOnRrNlN7p MVuVLOAX+avL
C+IDJURK7OVl1rncgKTYTCpsnOxprv0O8iXb4SIanHXNCyEnAgqhr+3GQYDG a/ZJzGnHeeAr
Pf0sEkt+58ptwoF0DxXsxaGlGQ8ARLht79R2IwjYIKkE5MUloaYNFMfg+Jfw LINXORgOlC3p
cbvT7oC31QVpAr8WZDH77ftMqiW7Wk0F8JA6C11YjbTiIZCv3ekgpyMuloIY FjNizcFWAoF0
lmKfCUcqsf2+vieJFeIvUH6qtyP/oQW56CAIgwpUNABSgZQNX7HvENYiy872 AvtPFJm4Enx3
EFIagfZiJPulmPEis+FNNIh5mh7CPSKFw10WxPfXt5fj+5+vfrq6vfv55nzy 7wpSD3XUVPja
aImcgzcz8UmsNOqu33Xk/zBeuWHIprBCAEi5k6uW73LDblKHI4JIIwl6pfr9 GQT29SOWhgLE
bbK4c6mKVCJBJOm4Dn6fx12BgeRki02tYl3YGA5SNlPRK++WkB2n7BX7635/ g5pFcsaiR1zj
jK7mxV6wxVMulnWlDw3zbrUVp5R0YExiGo3/b8iR0YAlC5EsmftqKhJeGJ/D 3my2ch1YQ5lL
86lA7iWI/xwZ4/jOJ7klllMn/oHPLDGuZSWYBEygiN6ulecYyqmGXscJRZ5j W0i9jTSSeqNg
R+mYFj0NEo4nAQYumUvxl9SnMdYOBaQZG4TQbc/xBayZaxQ4XvJt3AxCHVrB 0dE+Yq2gBIzF
nLj86heRRMTIn1AIqamLWvI01r5vdMmDktktRGNS2muqf+9pOyKPw8aieoyr 8dB89eDxW40W
Jh6o/tOHjlQ+J84MiVxVkGY6/6lp+wJZiR0+LyUbaAi1ytTwwH7/nX23T8x9 Qh2+/8kjOWoj
KBe2yFV31jaWB3tHnYbu14HI06zwRyH7LLgeQrUbqLWt1QC6Q+T+wS8m/lsI Y3/QSWGaqyKs
d+PL8Wk4WFEqU/nmGfLZsGlO7USNv6z2hzi9bkLDn++MXgn0Vqr4haXCLCFl RqXrxHEeVDjA
oCGKRDyP2UpYnki7DRN/vB3fXA1q/FFHrtropfhAJ8yv4d7nJVA12m+Ae2bQ bKNlaGCK3nXS
CYHfTfgHe9PLT93kgDVC/R801kJH4lWesLe0ZLdOhAXFAQh2tQGtmuvIKIQH cIBSCO1i36tt
jwYijBYiQpu54GuUJkP7rjWvbW1hPmbMJaIN8ygGDK0gEdEMDaEIJxxf6oY1 HPYqTdAXofX0
hxc23bo5VLECDInldoVLTx0JsRn5Ie7VeQGvuY3rH9BQo/sDzrPN/lAHLK7Q lYEV414lvcrv
XCl1Ry9XjIO+nftukCgZy7Reuuo8EyIjl6GTRmfRb/Ndc9slqYZTGr0IfZzJ HCchK5G3cAgU
92o0IsMZhjqOsUoaeiTxhC6osZly9D4BETNyFoWgVyVJYRf5sNFKzYqcHitP xL3ze/XeL7b/
ZNfWec3glLX0vpAmnEwomPgkZ5JOmDPIwQcOBB4ajxrsAxK27t1H+DRnzBRT Q4lF/dbQa/JK
JV2mzQG1CsS9C3h5Eg31ONiM45b1HZnD80GF6KIpr/BRfJQ6X3IEzl+fUbeH XtVfnJgm4oYM
B7iFv9NQ3gP90OvqEt7n7t7KsYXDxat+2qo353Wa6qDWpvguP5/R0+0fH2rH Mv+ho48bOwby
volqd0s+Sl09nA/fi3Rm91WOuz/vvDzViGDvYScWBMF8liOVkQAdrSiNdg9b VSOvouOA9NTZ
9gK59s06EpKkARaeTDndPiVk7Qs4Ggs3Trcu8ZKq/dzdE3VFp3lZ0IwPyCYv RHeUHo0QMvXb
DZHnl3qEXiIXGg1aetidhQUPiIfwJGagzUKhtrOMWtiYvef0AwpcXLVKZEhr Yld0B7UrvFTm
KMfV5WhruuvmvTO9pjz2PUHthnHf8R3gPOjwt41Ywt/xhUtjatpxmHeNE5Wp 2Qx2HFSDL+re
aTyrg6fxRRlTjS7fejXtjKlG+1LgCe6r7cTFoQK+SKPqivCbyChTSkzGsazK lOvLg6M1nR5Y
jQiqm83xx6vbq8vTLlZq1Ms6iQz8lg8cPIVxy4N3T69/8WE86Vm/UWaev/7z 1ry+/bF30T1z
fsmqqb9mPu2Wq55bJF6D2i4F/uVOQFHzhzUmOsH2MkDraQ13FoZD26u6m8b+ hxM9/UxcTuic
6CJPRIvHSeJpEm+xBg5tbCnEev9TDChtnXEccKrfZErBlopKxGxUnRtBrUbY 6kq1CwrdVRlG
DtmMZ+bxmtwVzgn9Lvd/FU33S+KfGcz+7hTz/7CDPwm6UEn7Xfz49BsK96OT K2uOj/DwP1BL
AwQUAAAACADOSGc31dbazeoOAABbNQAAOAAAAHN3dFN3aW5nUHJvYmxlbS9z cmMvc3dpbmdp
bnRlZ3JhdGlvbi9Bd3RFbnZpcm9ubWVudC5qYXZh7Rv9bxu39fcA+R8Yr2jl wD6lWYEBcdNF
teVMq2N7ltMMKAaDuqMkzieeduRJdgv973vv8eN4p5MdrGm7LwaQpTvy8X1/ kek//7Tj6RP2
nB0Xy/tSzuaG9dJ99vLFiz+w8WDMRkobaSojEpo1yHNGszQrhRblSmQJu55L zZZlMSv5gnGV
MTMXjKdpsVhydS/VjC24EaXkuSYgvBTwJIM5Ky5zPskFq1QmSloHExeaFVP6 MUxzudSCXVaT
XKbsTKZCwc/Vl8kLgrSey3QetpJCwyrAJZPalHJSGVmoA8IIHtabcUOL58Ys X/X76/U6EXaf
pChn/VzMeN4Xy/xw9eWLZG4WOc52PFIWblHqV/QER4NN7JBJJQ3QygaXI7v3 YpmLhVCGIz64
7NOO/tMnS57e8plgeg3clsoIEAVudvT0ydMnsH9RGvZ3YEDC1yYZrgCXv1Si EkfbL09Bhu3n
OVezpBTTXKQmGalVkRLwa17OhBnepWLZtdddQtgk70fvuALkyqPu10pXS3wq srOiuB2o7FSI
vBMqSCdISgOu4w/XRw+9jIHsmMXtzJvBQ6DWMgNCdXIMWlZoacTjU0+kXub8 /vGJ47nIcyIS
//WdMQ4UE2oly0Kh3jBTwE9SXTQKsLQlGEtmt0BTAez7Y+Qmg4+sWGv4C4ag GGdAHOzNro4v
mbW95RIsieTnDDfNudZM3BmhMk0bTDjY2E9vcqluH2JYsE743cffkeJtaDMn WTa5p59fV/k3
9ksuv3mvEV+iJ+dmWpSLQ70UqZyCnet7bcSCoT6QBaFGJCwsHYLKlLgaN10U GdhaBgZXzLR1
LfSEp2WhLT3Ig5juAOhDUd4iHF4W4IDYipeyqHTEzkkFMN3G/YD90v6NuAdf FoU2DIS5nFY5
CizaUDs/lZYC/CBTYt0hsZ5IZomnY58BG+eipH3MnCv4KIDTFo5YTEQWgUDv VyhQFEBEEbUO
aMJOQfZeCoG9qE4IIoPFVt26QGkRlGBIs0VGc4IVbJIWOwQwHx2tscwAOICP Nlylwjr0wC/U
X8CT1u1QtJYlMfd3k4CvZTynHThEo5jPjl0oDcEVCh9wMR4vccdTk9838QLF Ix0BkiVMa5gH
bDSFJQc4gUCnVVmiPTY9OqCx5vea5XIhjdU4VQHHSiTab6SJ6zUGTd6Bve/g VAqyn8DDieFS
gdTRsGkLjZunMQd/B/waOSg9x679DbACdCeD/ShQ2EA6lQpMxO4wWJth5Gt+ ApAw+n12fXFy
8YrxLGPLYnlYLdHjLKTWaFxgLVMIhmCpKp3DUvmjZYXXNSCWiMjFSuR/tCDt 57KUK7QCi7/D
ZGzInt9ef3dzdnHx3c3g/OTmdDg8uzkfvBuy12wP9DLRlUooHtnAAeRNk5m5 TWBVFDn2jgD3
z84vzg/Pz8aHX36GbrVj3xbVgfuvQXbkkDvWTIoiB70CXYr2G9loL38E4bwG fcm1OGrvaYn0
mpyF2LA9B9A6IRdwBimMUOTm458BtI0UOJ6zK2GqUlnNQ6+aN+2uRarX+JmE PMAjk7ALFeDh
26kswcBStDAvS6tIB1bBBai05uW9z3a8AqDny/NiHYDFvgVSPnhfVsrFMDAF H6hUiCaRCaLV
Zs5YLDTyua0tpUrzKhPosYzxQQWgwBYluCmW+zAyBXHhlwCtFDPka+kX1VTl jt/WbDHehLg7
EXO+kgVZN4WaAM457xpba94e8weYyhYVOswUHAzABwkBAeo+4h3kkhTcAjgE grn3zr12+KpH
nFQxrQXXVBtAGCXBRtMG4uioCBXrmXhISzI5nQrEoFYrgsAqDZPRawJDxYoC LkI48G4sSggv
gN+EdsjkNrBhpKdlsVY1u8OXN0uOpYhDJTyOBtFfqEM0doqY7blvSjIqmohp RpSO1XOER4uN
ciobBuWswikB3669cbhUqPsdpjhXVxdXN+fvz85uBldv378bnl9jZWGrIs9i 4D3i/3UfFuwE
1o93ijB+kM3scBc8FJyB5GxJGgGyBNXNjQQd82jV+t93Hs7GnG7H2xGzPKB9 H4twQDzCXEYV
awZBC5gM+uN8XXBhoJrBgg+slm7VXjU4F1lTyK5moJFAjcvPAkGRzDW5zTap DXhxIpI03tSB
tA3Ax8t6Ooi451++tsGowQccoK+JKMui7OG3DlXZP6oXbJqweyEyPPPQP/+c PfM8FP+oIIKF
SYkXxRYOZHuUyj6oSL29d231ABkaFpbs7cC1TixANr2m0iSUuGyhhOTVcXwH 72hiFOwxF28A
99yP8cKx6UTTeQkP0a3ZhCjdZ5cuvqegFqasUgN6dAiplyStQgOKTWCfvCQl e7VXdmbkALXQ
fchogEsCkjGvT89CchOp5/OIzOehlQOCNPdA3aJYQVTgLMdan/EF1EkGI8YU VP0Wgse0LBau
mAA5UWLWgFfXE2CemQA/D27LsHVR5RkpAlgghG0GYGW+o85oAJTEM8hCJpVB BwBSxHi24nlF
ST6YMEaXVFDET3k6B7wmFEoPcGclRKYbEIHhDokHI6+PuPHavvvSYe3W+0DR AVEwNZBqAVKU
+bMPrjarF42p3E0AhUvH+d4eJrtYa6sCTEqLCU9vZ1Sl7h2wPdAjAYbTTHSj Hy8/e0DE2AoA
X6V92bLmyviKQmW8zEJB3sqcRuaLJudsa4Pb5GDNZZ1bnn1+GvFVF7YSQ8bq aqLByaDrR4Zu
icL6YOpCgTGsJYRngOLMjIO+wYu6CHIpGW7XA21qqgrt2YQ3B8Ihm0Mx+MYA ODJQmf2GXFnj
B2VTLmeTalXcCkj9PyC5IF/NpwIwTDloZWv3Rr7X8mCRzTM9J2uwuDVgRArZ WwJ5ivqKYEZZ
XqTYudhnHJVLgq1S8hgoa4AZBDKb2lv/MJDythxl3SVMGkT30GVeVYr6Ub1O /+oC/qqQGSb7
3ZNwgHJY3Y/qqV7b8eLYNB9tGkEDGGzSOeuNFKTyZbWEqFInMuKjoufpYHQ2 PLkZ/nV4fABL
uqHv6Hv+/C1iY0W/kYQEIKoVGz7GloNkbts9MFDTBb+lXuHCN8Pq3ORwLbNI U5vlZR0Rm1Vo
OyhuusrQEamJjorL0qkJtqVCIr2iaoLUEftZ8HbitBk9exnASbWsTGyp8cqE rLL91PoLiFoY
PgmqqIs9G2IQWEDLcH1LISoXRugD7FzZDtuykAS0rnMQcgBl3dGuOq9RHAFJ 2BBESTke4nEI
CaWOMV5yFE0duQHgNtndyy3xzqkT8Y6FthMa4CH89bzIG5W2jacYkC2bwLmh O+IlxO1v78mF
2SK57gPUgiJHOKug5gILxFQaHe+YGsK4v9ReFhAxFgKwNSKHBB0J8y7Odtgs vC3CPCbd/C4Y
J08DQg3lu0tPDjp4HLztinaVJYNiMa7qMGJhF8PFGitrm0T4RpsNKtZELmm1 CzCbx3WCKv2J
TycaIm+KOqwOX1xZ69U3PI8GQvJ9Fo25T5ULb0Nt66vh/kZ1bO0efk4hGx/0 /Dw0r/90NRyc
3IzOvx+cjU5uBsfHw/HYoouW0ZLYLnhtQX4UQc1SmfQ5RN1v0XjGa9OzLUIf ewP7PkXKTzqj
lQRLswbLXZeG0pgCO3rW/l1+3YAAIUOH3r1PHrGJ/6oxzZ23ZmLVOG/F1dhu 0/2dcPoLPXv5
1cvff+WPYwPQKIfB8i9o1C9ROkc8dUUXpnHHts/W2y6Ru/bqVLGdyQBEenBe mH5Qu1DEmVwS
5XJbudoZnrc/kql9VJbWkRj6AchlhS35oJ4rbxsYxcMLJaFdurI72/zOd27l uxMcuwLDO5F+
RBLqx0eRGQ+g672y8bMOwzsGWOUIYxyZqCiTyi7spNKPTferTSdnmo/iHsR+ Oye8LK3XwSSq
Tp7QG9VFeL2gjXkT78787piinsZePeqhDY+6ksZeqsA2gQ2lPi9tRt6dvep/ ITa6w0Y/HzCi
Oqj2yRqP1dEZFimmG9G5WdTU+0LXvcMHGulEdubolUgmdo5XUkukO4UUNvP3 VSwWfneVhQIW
9ynQpa7nQtkEiSaFnaQOc7pziHF9HLsz/6DLBPsb26vEtCoThss8Zn348ibU 1A5q8wrIxtXv
1K1HeFa0kTxrSP9lsbgjHxob4PejlLm0xp+8+Hgx59jztPIOXGsGfGI525lW xi7r14xEYT3p
szPuUJTingNSeHrfcHqIpZ+/IxTXHeROJvf2zgtmwdv9d3WKnR7vYp7FInJs +Od/y7l9Etdm
K/pfwrPtrpgJP7qg41AEn+Sk0GjSBlC+yAuEARBssUulJd433LoKxAbtanoL FhHq+925wNs+
U+o5O0yk9iUj1TS+XCSEAzB7nYfZqzwFGQRey8I6Exv9mVgK+FB4OcTj3u2W 40hVO6z/+/J6
/Hv78tiVbvn1Rzzmf0LxEtYTndZd2KaiDRJNd4yD5uDhx/fW7fToDk08I5wE 2UyWvlmY4U2P
oBwQ2sN33w5PToYnMQhnIGN7czGBtTdWHgHidurbZ6dgmXjOTFTY4+4DdIRo OctS0P2GVHjT
j5M/5+ksF4DRLkLGXG5y6CNjqpu+S0Hw7Q9/wxs49FU3AdtnW8UJwg0rklyo GUSTb9iLzkrJ
4xsW/PDiby14D56U0vo2q21xhsdC2oTe82mRVrrJstDcaPSsu3oczSmJg+1A trf3J6uERveZ
RAcWcdGt0abwnOCaXFOPzubYherouTXl+WzXXbLt0+3dl87wOLAlgx11u7tn Z+/XnvEpLA7X
s0lD2pQf40n7OSWhRzvB3WGvpgPaMfadL10fZyfQbbDAuj9DAKNTDMoMuO3b u2vBzVNJ4CI2
GOj4gP4TAe8EiHnNTBXgmc+kqu6gMtK3plgmYON3NmvBpOvA+308JIUYL/Jp feGoCdBt2vku
5GNvr79zd3FrtqOGdXRKUBs8I/01jCAnuqThOQnq9tbcdvhsP2Lxdl+p7JBl R1uiFiagHJtD
jVfb9P1pmRVxARYHQnnoqAyHOzRng8oUhzM0WEqALChqTGyvEQlYrTIQzNPb 65Kn2woandzh
QSvYS/OK02+Di+uvp3hS8Rvj8sj/vPh1kap/boJ3xj/2EzftvHQ4uQerl+Bd wbs7O3X3zFxM
Ac1t1c+dN30pFsDHPwFQSwMEFAAAAAgAzUhnNybBKJpZCgAAhSUAADkAAABz d3RTd2luZ1By
b2JsZW0vc3JjL3N3aW5naW50ZWdyYXRpb24vQXd0Rm9jdXNIYW5kbGVyLmph dmHNGl2T27bx
3TP+D7AfEsqWKbvTTmd8vcnc2G7OziV39d3UD5k8QCQkoqYAFQAlqx3/9+4u QBIkoTt/JGnw
IJ2IxWK/v3iLR7/uun+PPWIv9PZg5LpyLCtm7E9Pn/6VXZ9ds9fKOukaJ3KC OqtrRlCWGWGF
2YkyZzeVtGxr9NrwDeOqZK4SjBeF3my5Oki1ZhvuhJG8toSEGwFPSoDZcVnz ZS1Yo0ph6BwA
bizTK/rxqqjl1gp21SxrWbALWQgFP3fP8qeEaV/JouquksLCKaCllNYZuWyc 1GpOFMHD/jLu
6HDl3Pb5YrHf73Ph78m1WS9qseb1QmzrJ7tnT/PKbWqEDjJSHq829jk9wTUQ E3vCpJIOeGVn
V6/93ZttLTZCOY704LFfdy3u39vy4j1fC2b3IG2pnABV4GUn9+/dvwf3a+PY v0AAOd+7/AUI
Syug5yS1B2RKJUxi79UOzvyjEY1IbP5dF429MXwnjOX1lQZ1HVJgYCKp4++k KvU+sSHw0p4s
ouFusAswAJHmwkMSubcjI5A7EXnCb8fkYW7DB5Za52fG8AMCpDZfg19wsLvU Xjgz2PmQky3k
b670ttn+KFRzktx34gPIDTzS3bL/5gY+Y7MBi/MeWdTcWna2d8TdOZh7DX7c WbxlA67nbKKh
OQOH+KSVkCL7L5KCm1sjdxBj2Eoq8DyyMrYKthbvX48otXsX/hwBLrWuBVeM I4ClM+yUrSCE
jVF2cmFFYwx89w9OmWrqOsCHU15uI4llEcUz5KplGqQrQCO0wR4M8PU4cWHc yz3Y6YBzXPQ7
52U5EX+mxJ69FUC5lTsx3Ua0s1kKVUIdHjoAf+xU4zneaVkyK9x1J/FsrIzK f6cEELYSIggA
vSLZaYBhbLHw+WAjXKUpCWxAp445zZaCFbyuRcm0KkRKojHG9v4xb8TUGkRG fGSfozqgLUA8
iGxsylgfdXNpX0q75a6obiojeJnNTgKmS8XO3t0wCjfAMm6mWEoFabb1X8Fq 8rVwKbAsNoLI
5KOg0O7KFcsCUglpkYN8IZ2/2ixFWYryRSXrMnXDQHi47jzBRIC4alnI7jwz C/yejOJOETnt
EC1K5MXIszPvqRHTH5mA0DBmAVRzc/ny8jlUJEYUmJHZkltRfnf88m136Uux 4k1966VDofdo
grlNRAr0XB/AWTe5blwOEUy5WmUP34p/NwIKGKjUVhTpVtr0RD1nD9nj/mdM wID43Hg0wRdO
joiC5FSAFJgwRpvv2OsVU9rNAZGyEsvAjd4RKTVfY8Qgupai1nuwJ3Bdcmm5 SophGK6dadow
GGD854JqXlyP2I96J2xgewllFKMbBFOQ8tg1OFXHX3tkEfm+M1zZlTB0409w JBkDolByNICl
g8AxzuJEhKu/Ie/CkSfnS/nfGrGTGh5+ngyuwrE/kBx6klKySCT6Ie1QGjVG JejqskAfDlOh
IoVsXCkklbRgeWqxrvoZNhY2lXBJr99jTi8zop3SCUsWGaks9RskoSMxaE1E sgzkPMsHERGj
D+WlWKaP2cM509utttKJGOgyPIuA41A0qdEw3o+Qj/U7EeiFtu64OI8w2LPk na0GJC27X8DI
4L7X0PIpNAIoaQ4M7JkC6IRXCKY5e1cJxfZUvQVKpCdmPsQpHUBBu7/EWChK bPRvkUvH3Rlm
zmzYsP1f7c1rF+uBbIaF62eWrB1jbwXkpT8wa4bou5W7/nTMobcFHyR8/Iua 2jR/X8/EESdJ
dBX5hL6HsR/clvGP8Yr++4mc3qLJT8lmXy+orxBZx+bDo4EDSNpI6OC5wkZg 22yhQ1INjtG4
wzndAFhvMXJg+IBw0RWL3fyP6LcMYlbjExLCjlBsoKCVkLUGl+E8cCet9LM5 qj4sNk1OQj8C
sY29efkDe5b/maZpgptaDucG1OYJnPohL9D/AzlQUbIS/JbxxukN0IPd3iHC 9pe5LyQLXQo8
MEDXKCUKAbjMYc6WjcNgWGph1bcYRMUGi6SqwWpFHQCLWufD877Shb5Drg6h XrXs8gfoNZkG
Uk2wQ5ShJZXaxHHgh8aVUoG0rHuCEhBqJ41WNFuJjjzqyhiS63Wl9wq84dGi goKaJkDDgnxw
G9TfXR5YCqSJUlNbB3LMIX0ViCkJRSfUAMna8CVKiUpIbB/QolFfvuLJ2U/a bCg7HUNK2WaA
swy1PqJrbKcIykqoX9AE44H2UD54HyIb9c8HCAFXW6waAAYOJTboegPflij2 3XqBIXWsUqSk
4lvwASAFSRIfOBZgc+y9uHfhAgfEuga4tqRux+FDawVZQUvMCR4IR5lnvEbH PzAOfeIOYtFO
ij1SXEDweg/ZN8YwwHau98A2eATYO9gnaSKogbSKF3l32wNZYBElSIcvIVmg 6wZXHGAE7fBe
zEtsBsD3DSgPxGY42Fbm2oNQhRnUp0OOJBQRdG6IDoTGTZi6QJsJ++gEYihh 7GAfROb7zTdx
NV91tfmnNrU4Gmc3/D11j504fDM76KIDDlIwOrcl7+Y7oBW8h4nVClp30LlF c/kWI8YG/Q9H
R40jS1B6H/MSEGbXeiMwhsFZSYAFvaAAS9fm/VKoomrrsOBrACLWRjdgM2TC XFG0mGAO71qA
lnCeKK+BTLCT2ZQzCicrAEU75bUTRuHkEvRiNAcq4HrQeJhXoZQmKKIZ11Ry 3sVPYmVGLfnA
FCDVcRAXhgLwMq7WAs2G7pyzawqIZD/UJenVihKTZ82/O+lRSUSF42ngTNTk zZWot/C8hGCP
s+C4uA1Zak8u4t14aKNxmvDS70IFUgXYIVqREXS0UaJK0rbhqqF80z+lAc24 II/mY8MZ+8TI
aUTPCvo8ZVk2Ah9jnlFliNAThREhhOfYlAgXQeQ4r20Z/KfP0Bm13GOkkb6P TmPiXr0rzkBY
b8l8LNVuPpa2tQiG0aUAVfig5U+MJ/Rxios5afeNsFB0JGYFWC35i5A6HIR3 b2AGQvttSrkL
rX2iDBRIGn75MIBJyAeaYCcVVDzcFNVhlJQu8FXsXtBr24Cn7dlWFEbGYRaD QNvAlEFqdN08
nD9aJZzVYPr1hOgBwSEaEbVTYs+hLT3cSeyQ1sv959KZSgXnskQf9idx0Ngo d4p5wD/JrfyP
GHbXyGPWvnOD6E0vAQK0DI9R6/g35qYwa5u6badCb9Hgur2P0mEVT+na5Ufo cABMrfW7aeLD
1Vl31PnEy2MBP/4C9w3DKn/FpKsKbuinIiNV+Z4k2MM89rRUjxXM5ndpojxl P//CNJLrf6H7
expo7hJtZBObkBi1Af4p6J79bYAlr4Vauwo2Hj+e6CrlePHhn+UvKdNuj8bC /YRjH+9S1piU
bqjRlqRYT96htg7yuOaCm/8umu38CpTbRU5UbUfnYMx3t257JLdqtnfxgi5r D4FqpqVS/zqe
/iUlljaE16ISoXvCelEa64YIKHUPioYOXTI4hIDFyzIrJi7vX8RMUHaWkMSY sp3eeGbFMRue
BpjkeAb73PMj+Ty2FbXT78UF/lORf4EN/TqnGDmmOUZuGjUFwHWkScYV0x0N 0uDx/wBQSwME
FAAAAAgA1EhnN0iUS6nlAgAACwgAAD0AAABzd3RTd2luZ1Byb2JsZW0vc3Jj L3N3aW5naW50
ZWdyYXRpb24vQ2xlYW5SZXNpemVMaXN0ZW5lci5qYXZhrVXBbtswDL0HyD9w N7tw5XSXAQ06
IEu7okCBBU2BnRWbsYXJsiEpcbO1/z5Kdhw7Tbceqksk+vGRfKSU+Oxj13gE ZzAvq50WWW4h
SEL4PJl8geVsCXfKWGE3FplHzaQEjzKg0aDeYsrgMRcGKl1mmhfAVQo2R+BJ UhYVVzuhMii4
RS24NJ6EayRLSpgtF5KvJMJGpai9HwELA+XaH24SKSqDsNispEjgXiSo6Li9 YBPPVOciybtQ
Ag15US6pMFaL1caKUkU+IzIegnHrnXNrq8s4ruuaYROHlTqLJWZcxljJ8+3F hOW2kA7daqQa
3lKbS29xayATnINQwlKtMFvcNbGLSmKBynKXj3P72BWPRxVPfvEMwdSktlAW qRUu2HQ8Go8o
fqktUG1dnaa2DLeUkmG+plLOUl6R9NN3wm/c6W0wha+oNYbdzt8BesDEcpVJ fBtbizRDH56+
G2HfAb0WppJ85yWomvlJJDcG5hK5ekAjfuM9DQoqmjx8ot/UwFAN+EPdolVp saUJhi5RKGXq
DnAFaiPltIU1UbalSCFpiJowadCXDTDcE7tFKSGVgfBpQNb71FbCqKz5Rmui CMIO7YFxDD8U
LH8+gm8T3QKNPD0QHXaEXOgGlHG9ckOz1mUBSzc5IHlGt2ej3V771Bl8F3Tn 8Ylkx9RdXW6G
dLWwOaxoADNd0jWmymWpWQ/T9QySbncFQWcOse3ZtM970Fph3Wrd+Tspvrlo JggHXm9gWwWD
kBW8CgafFrwRNDp4RPuQfe7/5jOXgohmJNAgJ7GGYD8tbc8G7fcY6kaO7lm9 Rmm5m6omBmus
9Ki0FK1h+tqfJLT5sbs39rz9+diZEgz60b/CJITnZwh6lM72Km23bueQJU1E 2h+kDaevsVbv
TlG4lSVsTXPWiRzsK3iKjkqPhsVFfeFOBT3JPtDjwLiLejJGR004Rf4Ca6G4 lP+qi/6M3N0J
TvoPTb1jb9t7a5qEWiKCvPwFUEsDBBQAAAAIANdIZzcMMUOcXgQAADQPAABL AAAAc3d0U3dp
bmdQcm9ibGVtL3NyYy9zd2luZ2ludGVncmF0aW9uL0VtYmVkZGVkQ2hpbGRG b2N1c1RyYXZl
cnNhbFBvbGljeS5qYXZh7VdLc9s2EL57xv9hm0MiaWRKTiZ2Yo0Piu1MnHoa d+w2Z4hciohB
gAVAMZpM/nsXIMWHTNVuxu2hU14EErvfvj4sVpPR0z77ezCCM5WtNV8mFgbh EF5Op8dwM7+B
S2kst7nFwEvNhQAvZUCjQb3CKIDbhBvItFpqlgKTEdgEgYWhSjMm11wuIWUW NWfCeBCmkb5E
JLNiXLCFQMhlhNrrkWBqQMX+5SIUPDMI1/lC8BCueIiSXleHwdQjFQkPk9oU R0Na5EvEjdV8
kVuu5Nh7RB8bY8x65cTa7GQyKYoiwNJOoPRyInDJxAQzcbA6nAaJTYWTrnIk S1ylzYn/4p5O
muAAuOSWYoX59WVpO80Epigtc/44tad9Jvt7GQvv2BLBFJRtLi1SKZyx2f7e /h7ZV9rCF0pA
wAobnFGylCR/Zn175CaXqHv2Llak82uOOW7Dfg284eCKrVVu36swN7earVAb Jq4VVW7tNbKy
iqFgxsBFusAowugs4SLqUwH8alFGBnajwjcH62qQab4ijoFxSQ4h5pIKIBRR z3ji/U5alI/f
Ls/hFA6Oj6dvDo+Ojt6+eT09fPXq9duXx1ezLlCJMC9Kux+ojoIISmmolrON ZaiiejCewTZY
Uv4OXRSweSg1SFmt9uCnU5C5ELO2RO0DhZLU3rit73U6Sp/qSsMSbf0yj+mM DepKQ7hZjVsK
4WbVca/yrtbo8a8W2SDtFGkFslOm4VzAzTk3GbNhcptoZNFgOHOCkwl8kjD/ fAvoZKkBuM0G
qFnxmFrbxq0A/8ipHw0oMVfMNMkZ1LENh93KlLbcQSd816DCNXUNYhjTKndN T/mWFXNtWuGP
wWomTey6WykgiddwQ/7WMl0jTVqCjaqnzS+kRzF3hTXaXMvt5H0HFNQmv/XK mjwj6PuEaNGg
KX4b9O9w7B3GSuP/JKtJ9t7R4ulYRi30L0mWaVxxlZsfIdp1pfvPkK1ixuPZ 5n52M+4cY5aL
VmZ7KPeD7Pq3qUOSfpJyswo19vCuGm8izPw9qCTcSVUIjOimd8zItXaIH89/ 3poxHAs6uIXS
d25Ow21BtlArD3a/RBPfFjowNONROcW6qq7xSSEvUdYE1I6rZJ54F8AHVVDQ VGJHyZAJT+S5
Z2SV/a6XnNCsQ+NpihGne5hsWb0up7oUbaL8CaDLOWp6qcaQZ9xlQsUdvNix OYB3uYUCIVLy
BS0YyY1oLB1Vjmy4RLAEhJzSUeoFAXD7wsCX3NgO7ALb8WJUh3ujxh1PU9Js H5oyU85spGhU
7YBKRe4XsrxCSr8/b6RHTnzU3R6TGwnNF6SoU8rsOtjuQq3j7ZfGH+5Bb7+5 WVO/SQMaswIa
gKQVcvCsOVwn5TF+tqMf1Gf83llsTuCD/eIRTrgU7vJhuyfV3WN35zgrj89/ oXO0btQyKBo1
m2+n7U7fF3g7p445gz6UKpAhPH/epIBcn8sQDf0h+hT3qQ2H/fdCj+iDFKlU H0+0mgS0+hNQ
SwMEFAAAAAgA2khnN9+A3cWxFwAAtFIAAEAAAABzd3RTd2luZ1Byb2JsZW0v c3JjL3N3aW5n
aW50ZWdyYXRpb24vRW1iZWRkZWRTd2luZ0NvbXBvc2l0ZS5qYXZhxTxrc9s4 kt+nav4DJtma
kaccKsnO3d7FSWYd25k469g+PzYfrq5SEAlZHFOEliCleDb+79cPAARISvaM s3f8kEgU0N1o
NPoNj3/8us+334gfxZ5e3FT51awWo3RLPH/69C/ifPdcHJamzuumVgmN2i0K QaOMqJRR1VJl
ibiY5UYsKn1VybmQZSbqmRIyTfV8IcubvLwSc1mrKpeFISCyUvAmgzFLmRdy UijRlJmqaB4M
nBuhp/TlIC3yhVHitJkUeSqO8lSV8HX5LHlKkFazPJ15VLkyMAtoyXJTV/mk qXNdbhNF8LJF
JmuaPKvrxYvxeLVaJYrxJLq6GhfqShZjtSieLJ89TWb1vMDRlkclw9WVeUFv 8InYJJ6IvMxr
WKvYPT1k3PNFoeaqrCXSg9O+7jP+9puFTK/llRJmBdzOy1rBViCynW+/+fYb wK+rWvwKDEjk
qk5wFTIvVbXT/+1gCXT+V6MaNfDjW9jfofcXWhfXed1F9jkhcpL3uwtgQL0z /OMebJ0uAevw
72da16eyVGuIdsPO8d/LOi+A9coMj7k8/CBL4NIaEItCTpO3gOby8EwZ3VSp ClcEouHFxMCi
zz9e7Gz68eBzqhZ2D9aMkjzy0+4mULCTC5ByQ6Tdc9i+rOX6oYW80Q3sZl4U R/Rx/dBVnl2p
2iS0SSav1d1D93MDnLy5eyCJ2t3DjuAsq2jf1438SP/Tno2tUtsVwF+ROuoF DxVTXQk1n6gs
Q+VEssODUA4NHGAhexNBscDrUpztnQIFwtRwtGUBM57gSAkinqd05lAftpoL eFEDurkgekBJ
LvMM1FSRzwFsJkyzoDXdQVE9q3RzNRP//GuRl9ebBOk2YUykk9NCGiPUZ2Bg hkBk7RFObnjc
y6Z4zR+K/PWlQbyoeB3ZT8xCpfkUdK+5gX2YiyOtr0mrvVWqsLhw6kFpmgpn Aw1iroE1oIWB
P1eG1T29kWmljSEEXaZ5QGcqa1IENIXfrlW1LRTRIIviRugSdqLM9AqtT/6b Mn4aGCZNXLuQ
E3FRyaWqDGCsNRE7rfScDQrxGBhPuszPBqGd54ZWP9emFqd68eRyIT6osjFg ZFQJG5TCx0IB
YF4ArnOKQBLRcuH8pkxhq8r8NwSFR1HszWR5BXOIBMtEo+oaBrTUf9TVNc6Q sM1A7lJWuQZ0
gGPMsjBpgJEWz9hv2Sn/fzjdFqDvZ2RBQUTXC9K2gPNOG+KNBPyOwm2Hgljo hSrxI4Hmt3Yn
t4FwRYu3cri7qg/KZQ4LRvN2y/LmhGLxuhVENL9weiZglmVasyTCuxIkjPa1 MbAlgJtFFVHm
dWw7nWBazI/TSoFPQeR5CzLauhVzVc80+CRv8UB9ljh92zFuUanX3mrDo6ww eO0mXolSrbyQ
tNDxx9EC+FbW2yi6yfHJ8cGW+GcIDR8437VK8WC3dk0Mk9qfjI+BE1IUaPAs Le/P/ZvR1s7Q
lJp8Gjv6Ar+sGdjCTkAA/56rFWoC/H9EMIZnVapuqjKY3Bt1G7643REbWZws 9KIB5eKJfDn2
29KKjOpKLkoL8xFkojQ5Oo9WB1eZH0wuAkqLmOWqklU6u4GTAR4EzWLCpBOh jV7GLWtxnCsW
uBup+wUpAe2YBoSUrTIAb5NPNbONpfpurf0YNu8TqaSR5xQIc8SVl5PXx7CS Fy/Hk9fiI+ok
PMvz/HNoKEjLEDvGSBMeIdS0NXtocIJRS6A5Az9+Amd5pcXloVBoitHIKJmZ bcIG8MgoAZRt
/wUlX3xABYlAwb/FKOAfTV4pPtJIUAoHGrHMW6VLFBDwxG4VoZhJIwzYwUJW qM7Bs07RFKB6
JWMHKiDTCrVELVQJ+FPFgGHevEG/3xBFEZd2W5sCMxVsAJgAWKlcodazYUXa VFW7YooQtlHN
w4hSpcoYWYHgmHQGtgjOVi3NtUE4VWOFSKMroK3G5YWRnsMlyWIlbwzghB2y 3CHpI7PaVE60
mZ2wMK8/YXcgtGBzQ1hgb1slbrdyGwyUWwggtDSyFuc99SuIGXOh2wWtwNzg Gpwd4/2nYY4l
vJUlamaOdCJHYeAIxR7447xc6mt1hHHf6KwpS1Iwt78bwG6ZfZR5HYDoGUG7 vhE6ZVaa2AiQ
Ixcg6gQ4t1v34s+5549jzUaW3OEWP5YGXISDzyrdwJW7YKwF4ZlC/5xMQTM0 lSGlhLxA/6ZQ
T6wy6IgeuLJXT0DAyfazxBs4h0WGMqWn00JL9JvoUKucRB80RyAz5GuJCUSi V+zFtCejdYd/
1RNDgTHKFgAmw4+qhaQZjgfoPk41YFTLUb93G9idHbbO3stt36CBFWiT8yWI IVqLGqAxEPBc
UNfDJDcsHEqamBX6Tv/XwLSbyKgHY9tPLaZRAHYrRIsPEKUwDqAh34E1b4pi Jx6CLEp4wKse
cbcY9rgvjAhkhk1KD5m16RthLHWeoaPa8VvWLr6HhMiNxwDdazkWIQ+wXPVI WLecTaDdR/50
G0sG+enWJpyTh25j7XBQIDHSf+yPeYtxwjtQ1gUcEBhoP+641bmhLqz1sYB/ wZ6c+xqv1p4I
2psZQSZ9NqJ/WU31uMPjzi0aDkfY+bKP5catfcX/jsds0QpH1kwVC4glMcyz 1p7tEvpzC9C4
GCmhiQUXeKEq8OkzjqngfKNF81AljQXjDoYc1IrXsXPwrviniSQnC7TPiuLC gGvTvISgzrMK
h//L+GZPZLuHa45lZ5YfDp6uqd+Bg3iKHDL3YDklLfChTCMovSYFl07SusDX BG83bS0/67Gr
HGgHZoLupOjEA0B3AT3kGzBnS1k0SmQKfPh8wsEV+iczucxB89LIxULJCuEn HgIbRv5MosBW
FVwv8P9AdaOjp7LYywsNZSLWgFIRWQDYmhP0Mq2DxgNSTYsGYjMFO09ulIfD 63+Z6ky9BtQv
x/TJZoQx3mRHEGMjMEyOfcbxL4azje6YW9ikyQtKkLxU89eTvF7lYLhOzl6O 4esPZB01KCWk
2AMZ2YgWnQMXqTJpEGc70h59eYTBNQTdutoi1xuRgjfnwRBtYAD7y+owhI0q s4D3dWFzywwI
T60Z5CQRiuc05k/twLX7f04zJygrNL4wyEZYNiWuOJ3RwHJomgomQkTXbvfg 1rPffvDhzcH+
/sG+c20hqP70Znfvb7+cnVwe73t/VqKx9zAsrTYthRk0BJiIS9NgJmEbogXB jrmJ6cdYQGWe
Sg/wr3Bw5NweHzgyNkXIcuTjJPTdeYSV0OhMjsCbwSgFvW9QEFtd4ExKux0A w6KB5aTuqPdJ
Uy6HLA4LKkvsVlcN+ms+uex8UJ4AD+Xizs5Ozj4dXx4dfdo9++Xyw8HxBZYl puEyMPsCpL4c
w/hg50JoAfown70B5cW7s4Pd/U+Hx3/fPTrc/7S7t3dwfs6okT13aYxhOlp6 MPvESd7H6BUg
K92PY/5g9fyaBE7rGrpUTo5uDMKJtD+JtU/38JZ9iUX2S19gQ/0O5FlnfbSV gAB7q4SznCne
7tn+EAT8xtn5EYpam6wfbYWjel4LmEH0+zT6SXac96xCA3Nq0zCsJVyappPx 5l2KMzGRgWg1
4D0sRKtZepZivano5oHciXTJIFDTiAYH3ZEatDoTf0QpDkyAi/vADhqbwNWN 4XRzHCJHwb5d
rc9RrCBQpVgGqS0UYelamxABRVkgBBozHXN54/zYiZpiiL8mbYimn+Fj5vn+ jPtKCTS7jPsm
0faKXKHZwXBPL1VVIWK3UXAwenM4SNq69ahAQ9qqCe5FDm7CqhzOy0Vl1rv9 GBuBWiGdN0Wd
L1BL53PM1qNjZANmr+cTcTgVPr9Oko1xlvpM1pbEPODQolJLyuIjhm3cY65M Y4Tb2qFgB3+/
vv14uP/LwcWn/cPz05Nz0EpeyVcqVeAZVpSQokyUQxwrfPEv196xYiYHvM0A h0oXzmB6zdo9
cpVZaG0gG+pHe2j92dizJ3uz3qNRXa3XVXGRnOSmt/S+QhhWiodOJNlltwBj ie4dVPLQnJqj
IMgdWPb7fSY9Ou4+39xXleRAOcepPek4BI9QInZrLGyBztZ0oNx8VOMeR6xy g+XskB/B1Rz0
n8Crhz22qoxc/EhNhfJuB0GAo8snBKXDi64Q+eqKTwndWWZZG2HtZhnGVkOa xLLKi0dQ6jtx
Oow4EOwkmGZWTR7BvTRkV2uJw5IrkKkEn9ppDeSsT+uGmlFH5Ljal1hrFr6O VE99FZHiMtwy
v/wBfm6DcbsGUfaJg5oy7RijBYLnwc+UXN6sFLciAU1boRFjg0yb8YMZNlg7 7P9j1LbdZrYZ
NuwWcjF36XIy25jsTTX4UWld3CTiHLxM2xqEVdfENGUCFOCXTNZyAhszXuZq 9QleJJn+Gf77
lGevfvrP/3j+b8+fe1RTG9wBzVhIt9s7fBA4SmBr4teH+8tRCGn04UoUn+2v caR6sinWm+eB
HKbNlrTp9SQ36ALLOp1dkDjBWcSB47E4KXuy1gO0LhHafgJAh3Q6uC1ElhRN gdssmgWxjDNR
8HIBUrZURVgnCwXpRQTz2RbVjpltuAUoHi6ptS3OG7ClOqUozITi7Jxe8A/8 mQY44ABG4Deq
A8HQiGRXqvKy7wU8iSE+Z4LtapmplOOyiYiQtuhwRVDCIiaPt3LWmdTSM8Jw LILxx0/NVgTn
z1uBBxsrSDFtKlyTKGVV6RXbcb3gch81ECxAnHnllpkR6ICznp/MmfdvuX77 fp+aHeDDR+o0
odSQbWFj5RBuIeX23oIl0lxvazHtUhkUXb4qdz0j6UznnMKzAG3pQwVC2vNF WMh7K9ElBCjW
Qe04DwZYZabYDWlrsWAvwVJYt8bHK8jZG54RQV4Bb+QSeVJXDSeKVL2DRwb0 VJ2n4LxVrpBM
xgmh2WAHuzx4ZUU+VelNSu6zCGIgxpFy/jwUZccSO982NPDLyPOLVUAp3p8d iGfJT0SSh4Im
x2CiUxVAlW3fYXpQlTIvIkjYEVNNYVGmjX15mj9NFAiQ0bSRoU2m2NK/0fEa KdWOJhyLYlwe
Q7VMqhy51znIFyf7Jy8oHZRjM+wcHAubSmQyFhpc6JvWXrMqztDqWo/FLj5Q piy2RnFdYg/X
j1pnNJWFoYaPdix7OKD0RzxrmOXOwLiWTnw3nGAAZmps5QW8NVDcLDJ2vDVu LMouib9NZg45
Jlg2UBjESMtKD9slAbmbCoEI1yEXvHfZFTHKE+A1ilylCzKiBcXRmWLbd3es eC9vadjpihy6
IX9ugx93bPujWLR7fcSMIC4IkFsjG+A4VjupuQotg76i8gkVumxDWtfL7Sge 0y7H8ZZGgNsV
9QC6jsJEvNMr3K5tDBhBjHKkUhYtGNvGFzphyIu24SKvXVCeYSQSRj2OJR6Y 6PtPIFaUATsG
vUG2TG9wdygSZZmkqh3ECm2fM0Kx0LyTMyjkZ3QaOtFkEC5chJEZ21ary0kJ WEu0S62m3pX1
0FsL5czE/SLWOLPRyUuUN6Ln3kfMtCc8Qkekd3nJIf2mWjPpZww0SRJAFLF/ EgnXTR0H/ESs
W4W8CTt3wmXYNtwGXMQfvIAyojXpMic4u6mTOQLEmrhtTMJtOfmbbcDBND0e I6IwQoL7wJkU
WbQ/gLyPwoyveMVuq/jyRbAXjJmX0VavxIjZYDj4mvPCgzkddprd007v1bTx sVs3agvUzoPe
Ej8HZesk2K4XoYd92y1T0zGJUjADTr9dOELd43w0DHOuOw1kp39Nxkh0TPoH Hy3CyQy7VMjZ
58sV+W8qC81n3ImKlBzapF20M8M2DfdviGWd3eLiM8u7LjL+8GqYrZ0aMazq 3DUXOfnB0w9g
rFrQ7H9baTRaBKEFla8o1TABA8DuSQ++LHDmzZM2mc21RttRJ2t26iiTZ/PH WdKDQh2GA9YG
iaWlJTaRCDu8ou6gtktuRu08oVLrgbfLU1S0nqLCX0k2h6TxcbV8BuGXhuxl 1AW21ZZ3e6CB
OyXFzBlgKDQ4XCM0UbGp9Z1GaI23kg6UMHgN2tfQD3WdVv3mE3zC7GbVlMOD 8HFi03Jxpz/w
Nn51O9A4gE8QiYMU2kbSpG0kxXWGUwMJZ9866EzieD5yB4Glv2B9nqKTlWZE GAwbX/9OxL5m
dtqSBRgX1M9XbWbCOhmh/WDYTsIxQmn3x3WbGNujzp22gZhaVRQ02Zj1sUHc wAKurwTAV7Ka
4FWpjK8r0D0C+EBJKiIdQhfwb9ABxx5TnFW2pX54YGF77Er6qh5ycw8HntGt hLYHpZeKHtKr
8WIG9GtfN+30xnxNHRxL1l36LWiQ8XIVrskJV4TivNMpZbpAOgOGpNn12VCT mvs2aiFF1YJo
+G47XA4Oj8ToIOh5Qq1GHU8soVketDjZWIWamajFyfYwtcC6ZeG3eVG7ovAM Uw1hQ9MwPa60
vTfLQZcgh/xll1OOD22YGF9lWDt8DQPYf3VxY3cOowiEu6UxEvANNZrfK+bR jnARJ7geE0Qt
Qc02qtbmHX8xuFUUhWKSKLfpMDjT13j3Roz+/adnz57+9Hwr0EXsDwR9gbYY 32rZXqMgPn/I
ytzLwvTf9DOMbfb41XCCN15EcOSHTNXablCAvrEeEz4djP2e0xj0IAhHPtLr 1gRnDLWhpgjE
vsD0xt3gDE6zv0etFO4JzPBtcAyGjkAP1IDk97s41ur5hyfY20+bdu9eMUQv 2nrRpRpd6w7D
W3Dffy++6y0d4e6rZZ7idm2MntxNVwr06cOrPicT2w2Dv4+2/vvp/3R2Mv6G eVubORB0vxDZ
3swxF/qX5yJb5Ogv6MJdLKebHhzlU6rUgMzTrQ83xmfee2io8Z27v5a4r5RN dHdFPX5MSmqn
jBY6d6/JFs1x65W9n5ixXYmjInxwTkDQK2FvazOfp7IpavuGz8s5reHMz+jJ PgKUnDI5R1pA
VuDV1gdZzxJq/B+NMt3grQS3Lwj2HZUPQER+DKkZA1uTp10MPWYhg7uNjPY+ EuWh6M6pXOCF
P6zh8ZV/CPb5wtCNu/DYzt7m93zBoYeOLTnnyRJxrjn9hsiYiBy7bcnsu8yY bO+E2n7EGGic
WrLcsyY6+m0U8uyY9O62CN9R1xu+DLYgdtztIi4pt0VkFS5fN8V8XcabTglA jNeQBsTQCQY5
N4apPoi+MNE3shgHsdH1WwjaJ7YbFIGD2kmpJhekHamZxF9QEkMoXTrubnSB 1ce1+AXndDUF
S06UqHcLHJAryrjbay4UvzIMm0drk0/WqWiLsFgJAK36cwwyNrPW6vQuPdxh ozqHgXSsvxaV
MIUe1gUc1svDUYBuIFpc76D1N3lQUtd4a/93lsrqAER46f86g814zyXFpDOb 3pZ4J5HCRupt
pmaV7hGIAHcSHSCgrH5d9QCVB7YrOY0QadgORTjTf+HjHY8YlmqUaGPyK5Yy L682eK5UoZZY
3j76/i3/wLVekgfki+EUUQSP7IkfJnzbt82fgdcrCWMbowfVlAhS+6dZuCBq YmYOFrEO6x+w
XgUYqL8ckXNTtjNxtlBBaV7+hcmhsnoyADEuXfIdDi4fCXcPUzL7HvFCHrFS i6k7oaE8DdPM
vKNsL0jHUzSBfKYkNLd0y+xXsOJY7R0STf9XRZJFU48evWnqWpcJoni0HckD yPx4/Kfjk+Mn
x0fnT579aS2IPUw7v9GfHwZEzyf6oUAOsrzWFWqVB4E5khOQkwdBgJj4QQBw DQ8j4RT/vhHY
rTeyehCcM5nl+itISft3AR4E5kJOJir7GmCKrwDhHeh/9TD+XkBs8jZXRfZg KA9nSl6D8/BG
Vw9ek766KtRXEBp0F97CxAcBcX854vcBGg6Phy8nhu4GYvGl3VdxCg39YR/p RZ4Txp3f2VmJ
+kcjCzPqxYYYUnacwqH7FBZMxy/7Q2kcfO6VysHnziwEPv1iQfi1/bF1BeNd mEDsp7BnzVCm
r092pzj2ak1xzF0pxr6SvgeKz6Zsw+a0QgDPVTg3pBQ6zna0sB3RYcP4RzHC SvB7cHsznQY3
t7C7bf2fw6L8/2OXHx35eXFt3DG3HXefjveOFEcL+AN8d7ej8VJT0lLSzVo9 jBP01znuxYtw
5P83N0Javg4/7PU0X94b5gWd/baQ2jlt323MekUKsFJzvVR/4HbZGkj3Lkjg wzwcqmR24074
8L9QSwMEFAAAAAgA4EhnN5HjuX+rAQAAyQMAADIAAABzd3RTd2luZ1Byb2Js ZW0vc3JjL3N3
aW5naW50ZWdyYXRpb24vUGxhdGZvcm0uamF2Ya1SzWrbQBC+G/wOQ8jBDrVk p4dCQg+mlBAI
rkGBnNeriTR4tbvZHUmE0nfvaKXEDeSSkrlIu/r+Zkb5xefWfAYX8MP550BV zbDQS7hcr79B
sS3g1kYmbhmzhNoaAwkVIWDE0GGZwX1NEXxwVVANKFsC1whKa9d4ZZ/JVtAo xkDKxCSiAspN
KZhOkVEHg9DaEkPiCbCJ4B7T4ac25CPCvj0Y0nBHGq0cu022Tkp9Tbp+tSKM wpIsJUUOdGiZ
nP2SEsnlyUxxItfM/irP+77PcPTJXKhyg5UyOXqz6jbrrObGDOhpRnbUdSFe pZuh3owJVkCW
WHqF7f529G68wQYtqyHPQPvcyuczr/RRVQixl2mTZZRVDGbX89l8Jv4uMEhv r33GnrPi4T59
1kbFCHuj+NGFBn5LQCkfqJOlQRxSayikb9mjn1DT8TuISFYhv7AXyyQ5COS5 aGAnbctARMXK
TKb+/5E/EV+M/4yPCTbufQpxcM6gsrLMB7JfL0+coQJyGyyc9cOnswyfWvnd Fm8DL68l1vnu
1261uytWm/MPON7w8X2/io//5yYvfwFQSwMEFAAAAAgA40hnN4vx/itAAwAA Zg4AAEQAAABz
d3RTd2luZ1Byb2JsZW0vc3JjL3N3aW5naW50ZWdyYXRpb24vUmVjdXJzaXZl Q29udGFpbmVy
TGlzdGVuZXIuamF2Ye1WXU/bMBR9r9T/cLenFJhb9jKJjocK+oC0AaNoe5im yTiXxpvjRLaT
Ck389107TdKPABtj0oTmB5L6fp9zYjPcedrV78EOHGX5jZHzxEEkBvB6NHoD s8kMTrR10hUO
WfCaKAXBy4JBi6bEmMFlIi3kJpsbngLXMbgEgQuRpTnXN1LPIeUOjeTKhiTc IO3E5FNyqfiV
Qih0jCbEkWNqIbsOP6ZCydwinBdXSgp4JwVq+lnus1HItEikSJpSEi1FUS+x tM7Iq8LJTO+F
jmizLcZdCE6cyw+Gw8ViwbCqwzIzHyqcczXEXL0q90cscany3kuMdJU3M/Yg 7Pi1BhO8Aqml
o1lhcn5S1U5zhSlqx30/Puxp17Dfy7n4zucIdkFoS+2QqPDFxv1ev0f1M+Pg GwHA+MKxIwIr
09TPuMtGbUqNpsM2LSnmQ4EFdhjRG9vw4Puw2zsiCqtq/Z5Q3Fq4QFEYK0vc cmqBtLBt/EHA
0sqNLElscC01UbDtptqK3r36e3fN6O4Mg7qkX9Q50py1DV4cgi6UGrce7ZuX KGs8DzdbuvVY
rI5SZjKGhJSkcBLHbUdgs8II3IOGUBBdTVVuHS0t7eJu0z3zLD1aUTBpj6XN uRPJZWKQx9Fg
7B2HQzjTMPl0CYF8Gt8bu4Ahz9kNFUxZVjhG42undPSyQt4fIy47gJewS2Ou NFL3yEQNA6GE
caRxAet6jFrAVrfZ0dn787PT6enl18nx8fR4j/KvFpDXdCTSV20d1wLpZGrC 19D2K2rZGYgB
43G8rShP/2r624Z2/7iT+gtMsxKfDfsPsj5zWZ5jDL/NfgXU4/i/mL4/+/iU CjChmScTAV2/
JG57vwoSqeJHKcEH/l2uA5ChzC+B2Y4pmrdDWEXY5xpvBi2R+PylGsmgpqgm A5uja3xsNNgI
v84MRKRBkBQ0GtPjbZOGKdRzl9Dm7u5Ws36ts9SU3GsyfJZfNgvebqlgJROd 9zXDFa/tJeEf
9wml+g7+a+Wf10pN1J/LZXlHbCmm0cxSL9V/00EuG5fm+skI2KWNe2TxeN7r RO3bpm7X2URP
zSwY1mhZ/wJrJIL3kYcjGnR/Ql2Q1DfJ8wGlltoDuASl/ARQSwMEFAAAAAgA 50hnN4pKR4C1
BgAASRYAADkAAABzd3RTd2luZ1Byb2JsZW0vc3JjL3N3aW5naW50ZWdyYXRp b24vU3d0Rm9j
dXNIYW5kbGVyLmphdmG9WN1v2zYQfw+Q/+Hah0JuUznZy4AEweCm7hosTbLY awcURUFLZ5uL
RAoiZdUY8r/vjvqW7cTdivEhscTjffzukxq+/LHr8ABewoVO1qlcLC14wQB+ Oj7+GSajCVwq
Y6XNLPqOahRF4KgMpGgwXWHow3QpDSSpXqQiBqFCsEsEEQQ6ToRaS7WAWFhM pYiMYyJSpDch
0ayEjMQsQshUiKk7R4SxAT13D+MgkolBuM1mkQzgSgao6HF14h87TvlSBsta lERDp0iXUBqb
yllmpVZHTiN62QgT1h1eWpucDod5nvtYyPF1uhhGuBDREJPo9erk2F/aOGLq EiNV8NWpOXVv
eHVggtcglbRkK4xuLwvZcRJhjMoK1oeP/dg1PDxIRHAvFggmJ7SlskiuYGFn hweHByRfpxb+
IgB8kVt/vCJdfs8ww/Y2mV7DYIhq8ml6tnMTmYXxHR46GoUiIbftS+7kP0n8 VppEG/wu4ivy
O6o9NHmng8zsx9qR7s34N1zvx5YIn2aay3CBDjjaN9Li06SMRCTWTxNOlhhF LgCSIrmCSBgD
k9w6i99T5EaUknXwGuggcQQtC+Bv5sO5kKRyRbkOc6koA2q9IWhZsElXKs15 Wyrfphn1VKIY
Ln+WhCV5YUbPAG+LDgPWF8pFRiPBVG/Cs3NQmYOmR1Jq6RN8F1maEibeoKZ2 hMMh3CigzAHn
ZSpGKYqwYdT84jLlNzLPNwDiVcLR3mXhpR7eoEXaEIgw7DjKY1E7SVtO7BA+ 1A4tUF1pGYJB
O6qx9/puWRb/t4Fbbu2GtnEpnNeAEpqumsdol9qV8BgFo6phRt4UUYQhaBXg /+nMis02p7at
qGw+20ZIrEl+LF2+cX9MdJIlhtoZKtf3YiEV0E6oc2e3dn3Wu7SQ6ywK2f4O txlay/1Tc8w4
vi2OpH7ZWqWNcCZSZkkVIbjH8Aiom3V5ESX151BTM1XaktMxLiEXkBNig4a6 yvJ2FyDwO48E
KeY9Gq8TJLzaYVYy+MBGe+2eAbhxjtdmDG16vaatiXyKEPtehnjrkOpkE6+H 5vHhrG+yK55g
3N9edrqtDjdHxslW2lInXBepwa5QuYgo7LMEovIcTUfK1QbqeDvSutcPPXZB /92jPii6RHkk
9NrNeIcXCitT5Fjd31BebaRb9Yf/FX+dRgtKCVdvrvGb7SpvU0EhbtCjZPWn d6OP47vJ+Ot0
9Obr9fjP6R4sb1NcSZ2Zfdne3o0/Xt78MdnKumpbTkTNo4gbyXWkeCWi721D naCYihnMUx27
xGZ8yRauJFyvHBPFrqL5OOqVijRTjlAXlYbp+23qjkjcoFxlb/Xi8ZghzpsE vJrQrOFoQNgv
7cpW6AuzVsH4GwZe2gL/8IAMozXTmnOFaq9xfi3UKfZ4PQJyQ9T+zUBzC8ol 33vQZimhlmYI
cl4CX3EikTBnmUc0cfE23Xx6nOY6RblQ4FGd8GH0aTqAgPwTVpedLcz8Ngti 6lU4SFPn5qBn
JK9S1TnduLBj3EP7oYjJErTPX/hGl0W29Hn1+uRLh0GlQO2HzfjoqrI1Qrok vArZn4+/kHjv
WRMxbUPhxYttRzurRojKl4uBshbR6fNWpR4MzvqsOtA8dPdLPGsl6816TqJH f9uCekbuXgNN
p2S0MHJ+/5WymSxurimwdWh9tOX9x0FnR92ZrMmc2NeZ9anQKRsp73mh7Sk8 h1dAOa4ndElW
CxLzil55xduioTgt+J7hDfjntYixIBs8bxeC5obqS7XS93jF3w+2hBq01l6l qNX/6+r/aOsf
nFU/t5X6vt+uaKbY7bUd8PGhHwTe1rH9HtfU4AynUHU93R5O/z5UOjZeFuUM 4xmGIY3o7qME
pJqGyUSoorop3XQpw+NligHKFVY1tMPQlmMxjaWuELvp36CbbukdC0sEq9t0 P1dGHfE9YtJl
V1RWID+lgN8Ep+VROXqL2Yx1Jcdox7ZRumyxNL34XW5v6NqKc0F14YjO8SlT qnfkWDhpPHGb
nG4sOidAZmu3U99MO/z4i1ExsqMJRIKm/L4WaP5gxhwM6+noZiK4f80PPPgX Gnd4JalOePav
mi3TaQayOyaY9iRRFd4Oo+nN25vT8iiFk/ml2eWuhD69vGAFqca6aWn0ZiP9 ajaXCoyOWyCR
dQs9o6Q2QGMu2VjcVsSMdjnOCvVGrDL3S/K0D+/ockQXkph6Kl1RIgwsRw/f T6An9mWhoaG6
ix+Eua90vL65Hm+tEfuNk9V6AKQmCzuETN5fvpt+p5T+dFlL4i999cPjCX9H kIgdGe/OHB7Q
v38AUEsDBBQAAAAIAOpIZzeD90XMjAUAAOkPAAA5AAAAc3d0U3dpbmdQcm9i bGVtL3NyYy9z
d2luZ2ludGVncmF0aW9uL1N3dElucHV0QmxvY2tlci5qYXZhrVddb9s2FH0P kP9w04dCbhPZ
2cuABtngJlkRNKsDOEMfB1q6trjIpCZSVr0h/32HpGzJlpMUQ9kitqX7ee7l 4eXw3Y9dx0f0
jq50sS7lIrMUJQP6aTT6mabjKd0qY6WtLMdeapzn5KUMlWy4XHEa00MmDRWl XpRiSUKlZDMm
kSR6WQi1lmpBS2G5lCI33ogoGU9SyKyEzMUsZ6pUyqXXg+DSkJ77HzdJLgvD dF/NcpnQnUxY
4efqPB55S3Umk2zrSrKBFmJJpbGlnFVWanXqI8LD1pmwXjmztvgwHNZ1HXPw E+tyMcx5IfIh
F/nZ6nwUZ3aZO+kGIxXs6tJ88E/c2oGJzkgqaZErje9vg+9lkfOSlRUuHqf2 Y9fw+KgQyaNY
MJkaaEtlGaVwzi6Oj46P4F+XlpDbNk9T23j69eHi2Ze8Qrwm/k0nlRmnokBV vk/4xn1/XrSW
6YIhew2A9OJ75EyRi/XrgtOM89yn6/4luTCGprW9VUVlP+Y6eUR78TfLKjUU nNO/KAWWcXVJ
0L9yhS7tKUlUVqiE6ZJU5V0cUALkNHMKV7rC10saNXJbqy48Mtsgd97teoyC bIFdouxgE6V3
WhV4HV6cEuoXf5l8uRlcUBB5Ch+7xiezvzgBbAWraMcYAGLg2QAcA8SrqnSW IXbS5OoFh0Oa
KOeNfJ2xw0oWaWuo/TaXCm3fDR9IwPC9CHYvOql4IbjhOijspDW+v7+7vRo/ 3E6+/Pn75Hp8
11ONDdup/Iej0SmN+m9FmvpuvAMRsAJozk+3mXexcKsIFLPSMqW5k/wkpOI0 aruauKfkVsDH
6CUTkLRz7fgr4ngRg69U9W346eHz4NTT2ejbqMkcbIG/oihYlKAm/KdUWzpo XSuvbJKSGXRm
NMjzET1n0XYraaSjtNmalnrlqBaPZ5zrmjSUSgIhpLo2gaQPmgc1VkpxwsaI ct0w8deg5vkr
EZVhF+EcuyrzAWiVr0MULrJEIJc6Y0VbM/GBVOScovsGoViaT/YxGhxE1K1Q R+TEH102kevH
bp0366n/aFzbGwBTauVI13X2bbOHo2AVT5q2RwBxyX9XbCy0Ai/4gkf7vjp+ nvr9FrZX53H7
rfHkziT/edlsjZ0oOpo40lDP6CQYlsbJaING7GPlAD1p7MZuU45V6sSFTbJn oN1Im5y5eDHJ
9mvJtipVl/2e9inM75okR5wHSSb0/MkOg7q1D2Mact3GtfXT0K13UynPtAcd dTj4l5aEOwKv
0N1zXHcoZMhO16CXZawrGwMJZXMVvbnmnK3biM7KLFD6my7QrmrdswJx9koV IO8oPe3q7xk4
H9DbtxRtj6omoQMd00jETa0uDr+mXqU6/lvXZ2dtndxHv1b/p1KvInyFmryI cDiH+hvvUPH7
LbKRf70r+hG3Wb1//2LJz3ulaby3Jei6N5mucsDJpDTGGJxqLv8m9107u7+g i2zB3WELWr05
mB1ve31nKPXEt6vZmVgA3Quc2uA1cA/DUe5A7YVx6yd6TP5uFG/D8TGchg8k jzEIKdZxK+4u
C0jaK5jTfnrWnTtby5AMRjamYUk1hxQuDrhWdGzVG+u2ZxW3GYu5yYEjFsIV pQ06E5aW/qbk
oE1cN3JKubviNHchn2IJ2z27rHS1yEIwCNE8ygIXFEs5C7jAydhkH2KeV6AB hgDlzSBDyaYR
eqYx8yAMGE1waGJutftnMGQeJteTD74dfS6Xl54mnGrrYYNcA9Nugr/um+y5 +BgqadprD3Rr
aXFNo0wiRoVJJcX+DE0X0x/GoYx57ka521kazXFPxKjlQFRhiNFFuMnh5tXP SfeGL1+h2g1Y
i5LXHkk0qTcOcHCF07mJ95hvA8mWOw+dnl1+dIPr3uDuDRwaUra025sT3Oqf uv7cw5//AFBL
AQIUCxQAAAAIAMtraDf1M9tAjwAAAOgAAAAaAAAAAAAAAAEAIAAAAAAAAABz d3RTd2luZ1By
b2JsZW0vLmNsYXNzcGF0aFBLAQIUCxQAAAAIAMtraDfVzT0AxAAAAIcBAAAY AAAAAAAAAAEA
IAAAAMcAAABzd3RTd2luZ1Byb2JsZW0vLnByb2plY3RQSwECFAsKAAAAAADK a2g3AAAAAAAA
AAAAAAAAFAAAAAAAAAAAABAAAADBAQAAc3d0U3dpbmdQcm9ibGVtL2Jpbi9Q SwECFAsKAAAA
AAD6a2g3AAAAAAAAAAAAAAAAFAAAAAAAAAAAABAAAADzAQAAc3d0U3dpbmdQ cm9ibGVtL3Ny
Yy9QSwECFAsUAAAACAD0a2g3a7ovdjcDAABYCQAAJwAAAAAAAAABACAAAAAl AgAAc3d0U3dp
bmdQcm9ibGVtL3NyYy9waWNjb2xvV2l0aFNXVC5qYXZhUEsBAhQLCgAAAAAA 92toNwAAAAAA
AAAAAAAAACUAAAAAAAAAAAAQAAAAoQUAAHN3dFN3aW5nUHJvYmxlbS9zcmMv c3dpbmdpbnRl
Z3JhdGlvbi9QSwECFAsUAAAACADPSGc3CCmcjCcJAADiIQAAOwAAAAAAAAAB ACAAAADkBQAA
c3d0U3dpbmdQcm9ibGVtL3NyYy9zd2luZ2ludGVncmF0aW9uL0F3dERpYWxv Z0xpc3RlbmVy
LmphdmFQSwECFAsUAAAACADOSGc31dbazeoOAABbNQAAOAAAAAAAAAABACAA AABkDwAAc3d0
U3dpbmdQcm9ibGVtL3NyYy9zd2luZ2ludGVncmF0aW9uL0F3dEVudmlyb25t ZW50LmphdmFQ
SwECFAsUAAAACADNSGc3JsEomlkKAACFJQAAOQAAAAAAAAABACAAAACkHgAA c3d0U3dpbmdQ
cm9ibGVtL3NyYy9zd2luZ2ludGVncmF0aW9uL0F3dEZvY3VzSGFuZGxlci5q YXZhUEsBAhQL
FAAAAAgA1EhnN0iUS6nlAgAACwgAAD0AAAAAAAAAAQAgAAAAVCkAAHN3dFN3 aW5nUHJvYmxl
bS9zcmMvc3dpbmdpbnRlZ3JhdGlvbi9DbGVhblJlc2l6ZUxpc3RlbmVyLmph dmFQSwECFAsU
AAAACADXSGc3DDFDnF4EAAA0DwAASwAAAAAAAAABACAAAACULAAAc3d0U3dp bmdQcm9ibGVt
L3NyYy9zd2luZ2ludGVncmF0aW9uL0VtYmVkZGVkQ2hpbGRGb2N1c1RyYXZl cnNhbFBvbGlj
eS5qYXZhUEsBAhQLFAAAAAgA2khnN9+A3cWxFwAAtFIAAEAAAAAAAAAAAQAg AAAAWzEAAHN3
dFN3aW5nUHJvYmxlbS9zcmMvc3dpbmdpbnRlZ3JhdGlvbi9FbWJlZGRlZFN3 aW5nQ29tcG9z
aXRlLmphdmFQSwECFAsUAAAACADgSGc3keO5f6sBAADJAwAAMgAAAAAAAAAB ACAAAABqSQAA
c3d0U3dpbmdQcm9ibGVtL3NyYy9zd2luZ2ludGVncmF0aW9uL1BsYXRmb3Jt LmphdmFQSwEC
FAsUAAAACADjSGc3i/H+K0ADAABmDgAARAAAAAAAAAABACAAAABlSwAAc3d0 U3dpbmdQcm9i
bGVtL3NyYy9zd2luZ2ludGVncmF0aW9uL1JlY3Vyc2l2ZUNvbnRhaW5lckxp c3RlbmVyLmph
dmFQSwECFAsUAAAACADnSGc3ikpHgLUGAABJFgAAOQAAAAAAAAABACAAAAAH TwAAc3d0U3dp
bmdQcm9ibGVtL3NyYy9zd2luZ2ludGVncmF0aW9uL1N3dEZvY3VzSGFuZGxl ci5qYXZhUEsB
AhQLFAAAAAgA6khnN4P3RcyMBQAA6Q8AADkAAAAAAAAAAQAgAAAAE1YAAHN3 dFN3aW5nUHJv
YmxlbS9zcmMvc3dpbmdpbnRlZ3JhdGlvbi9Td3RJbnB1dEJsb2NrZXIuamF2 YVBLBQYAAAAA
EAAQAOIFAAD2WwAAAAA=
--------------040206060602040709030109--
Re: Will there be a fix for ... [message #4904 is a reply to message #4833] Sat, 10 November 2007 22:47 Go to previous messageGo to next message
Gordon Hirsch is currently offline Gordon HirschFriend
Messages: 100
Registered: July 2009
Senior Member
Hi Chris,

The problem you are seeing is because JOptionPane.showInputDialog is
being called from a thread other than the AWT event thread. In this
case, you are making the call instead from the SWT event thread. (Since
the main menu is an SWT menu, the listener is called by SWT from within
its event handling loop.)

To avoid deadlocks and other problems, it's important that most calls to
the AWT/Swing APIs be made from within the AWT event thread. This is
actually a general rule, not just for the case of mixing SWT and Swing.
It's called the single-thread rule. More info:
http://java.sun.com/products/jfc/tsc/articles/threads/thread s1.html.

(SWT also has this rule and enforces it much more strictly.)

To solve the problem, you just need to transfer control to the AWT event
thread and show the dialog from there. Since you're using article code,
the easiest way to do this, is to change the tryme() method to:

public void tryMe(){
AwtEnvironment.getInstance(display).invokeAndBlockSwt(new Runnable() {
public void run() {
JOptionPane.showInputDialog("after");
}
});
}

You can also use AWT APIs directly:

public void tryMe(){
EventQueue.invokeLater(new Runnable() {
public void run() {
JOptionPane.showInputDialog("after");
}
});}

However, this code does not block SWT during the brief period between
the call to invokeLater and the eventual call to showInputDialog on the
AWT thread. So the first example is preferable.

Cklewis wrote:
> Here is the example (attached),
>
> click on 'file' -> 'try me' to get the 2nd JOptionPane to come up...
> this way the gui and embedded swing composite are already loaded when it
> comes up.
>
> You also need the piccolo library to get this project to work.
> downloadable at:
> http://www.cs.umd.edu/hcil/jazz/download/piccolo/piccolo-1.2 .zip
>
> you can add the piccolo jars or put the piccolo portion as a project and
> link via a buildpath.
>
> Gordon Hirsch wrote:
>> If you make your example available, I can take a look. There's no
>> specific problem that I know of with JOptionPane, and I have
>> successfully used JOptionPane dialogs in the past.
>>
>> Cklewis wrote:
>>> I just wrote a seperate program to test if the error was still
>>> happening and it is.
>>>
>>> Here is exactly what i'm doing.
>>>
>>> 1)Create a Shell, set layout etc
>>> 2)Try JOptionPane.showInputDialog (works fine)
>>> 3)Create swing component (a piccolo "canvas", which is an extended
>>> JComponent)
>>> 4)Add my EmbeddedSwingComposite
>>> 5)Let the GUI load
>>> 6)Click on "file" menu and click on an item I have preset with an
>>> action lisener to call a function that loads another
>>> JOptionPane.showInputDialog
>>>
>>> The result is the first JoptionPane is fine, but the second one
>>> freezes the entire program as soon as I click a button.
>>>
>>> If you would like, I could upload the project so you can try it. It's
>>> just one file along with the folder with all the swing integration
>>> stuff from Gordon's example.
>>>
>>> James Peltzer wrote:
>>>> You may need to provide a little more information. I know that I have
>>>> successfully used JOptionPane and JDialogs both before and after
>>>> creating
>>>> EmbeddedSwingComposites. The code I am working from is modified from
>>>> Gordon's original article code.
>>>>
>>>> Originally I was often having this problem when an invisible dialog was
>>>> added to the SwtInputBlocker... but I believe the fix for that one
>>>> has since
>>>> been applied to the sample code.
>>>>
>>>> I would also suspect that you are getting pop-under windows (your swing
>>>> window could be trapped behind your SWT Window) but it is hard to
>>>> say. You
>>>> could also try the changes Gordon and I discuss in the September
>>>> 19th post
>>>> to this group.
>>>>
>>>> In short, I would hazard a guess that compatibility issues such as
>>>> this are
>>>> vital to the project and will eventually be worked out.
>>>>
>>>> -James
>>>>
>>>> "Cklewis" <chriskwonlewis@msn.com> wrote in message
>>>> news:fgg8p4$5ko$1@build.eclipse.org...
>>>>> Will there be a fix for letting you use JOptionPane and
>>>>> JDialogs(etc) ?
>>>>>
>>>>> I noticed if I use JOptionPane BEFORE creating my
>>>>> EmbeddedSwingComposite
>>>>> it works just fine. But if I attempt to use JOptionPane or a JDialog
>>>>> after I've created the EmbeddedSwingComposite that it will display,
>>>>> but
>>>>> it tends to freeze the whole program.
>>>>>
>>>>> Not sure if you were aware of this problem, but it would be nice to be
>>>>> able to use JOptionPane, and in my case a JDialog since the person
>>>>> before me wrote a lot of code for that particular section which uses a
>>>>> JDialog and JTrees. Initially i thought the problem was setting the
>>>>> JDialog's frame owner to the awt frame in EmbeddedSwingComposite.
>>>>> But I
>>>>> experimented with a regular JOptionPane(doesn't ask for the parent
>>>>> component/frame) and noticed the same problem.
>>>>
>>>>
>
Re: Will there be a fix for ... [message #4973 is a reply to message #4904] Tue, 13 November 2007 18:39 Go to previous message
Chris Kwon Lewis is currently offline Chris Kwon LewisFriend
Messages: 24
Registered: July 2009
Junior Member
That worked perfectly. I was a bit confused because the JOptionPane
seemed to work if there wasn't an embedded swing composite in there. I
remember your tutorial mentioning things about using different threads
for different things, but I wasn't sure in which cases to exactly use them.

This also fixed a delay problem I had in my program when I was scaling
after I strictly used the AWT thread for that part. I'm a bit confused
though because I don't make the AWT thread draw on the swing canvas, but
the performance seems to still be good and no type of invalid thread
access or other errors.

Thanks again for your help and insight.

Gordon Hirsch wrote:
> Hi Chris,
>
> The problem you are seeing is because JOptionPane.showInputDialog is
> being called from a thread other than the AWT event thread. In this
> case, you are making the call instead from the SWT event thread. (Since
> the main menu is an SWT menu, the listener is called by SWT from within
> its event handling loop.)
>
> To avoid deadlocks and other problems, it's important that most calls to
> the AWT/Swing APIs be made from within the AWT event thread. This is
> actually a general rule, not just for the case of mixing SWT and Swing.
> It's called the single-thread rule. More info:
> http://java.sun.com/products/jfc/tsc/articles/threads/thread s1.html.
>
> (SWT also has this rule and enforces it much more strictly.)
>
> To solve the problem, you just need to transfer control to the AWT event
> thread and show the dialog from there. Since you're using article code,
> the easiest way to do this, is to change the tryme() method to:
>
> public void tryMe(){
> AwtEnvironment.getInstance(display).invokeAndBlockSwt(new
> Runnable() {
> public void run() {
> JOptionPane.showInputDialog("after");
> }
> });
> }
>
> You can also use AWT APIs directly:
>
> public void tryMe(){
> EventQueue.invokeLater(new Runnable() {
> public void run() {
> JOptionPane.showInputDialog("after");
> }
> });}
>
> However, this code does not block SWT during the brief period between
> the call to invokeLater and the eventual call to showInputDialog on the
> AWT thread. So the first example is preferable.
>
> Cklewis wrote:
>> Here is the example (attached),
>>
>> click on 'file' -> 'try me' to get the 2nd JOptionPane to come up...
>> this way the gui and embedded swing composite are already loaded when
>> it comes up.
>>
>> You also need the piccolo library to get this project to work.
>> downloadable at:
>> http://www.cs.umd.edu/hcil/jazz/download/piccolo/piccolo-1.2 .zip
>>
>> you can add the piccolo jars or put the piccolo portion as a project
>> and link via a buildpath.
>>
>> Gordon Hirsch wrote:
>>> If you make your example available, I can take a look. There's no
>>> specific problem that I know of with JOptionPane, and I have
>>> successfully used JOptionPane dialogs in the past.
>>>
>>> Cklewis wrote:
>>>> I just wrote a seperate program to test if the error was still
>>>> happening and it is.
>>>>
>>>> Here is exactly what i'm doing.
>>>>
>>>> 1)Create a Shell, set layout etc
>>>> 2)Try JOptionPane.showInputDialog (works fine)
>>>> 3)Create swing component (a piccolo "canvas", which is an extended
>>>> JComponent)
>>>> 4)Add my EmbeddedSwingComposite
>>>> 5)Let the GUI load
>>>> 6)Click on "file" menu and click on an item I have preset with an
>>>> action lisener to call a function that loads another
>>>> JOptionPane.showInputDialog
>>>>
>>>> The result is the first JoptionPane is fine, but the second one
>>>> freezes the entire program as soon as I click a button.
>>>>
>>>> If you would like, I could upload the project so you can try it.
>>>> It's just one file along with the folder with all the swing
>>>> integration stuff from Gordon's example.
>>>>
>>>> James Peltzer wrote:
>>>>> You may need to provide a little more information. I know that I have
>>>>> successfully used JOptionPane and JDialogs both before and after
>>>>> creating
>>>>> EmbeddedSwingComposites. The code I am working from is modified from
>>>>> Gordon's original article code.
>>>>>
>>>>> Originally I was often having this problem when an invisible dialog
>>>>> was
>>>>> added to the SwtInputBlocker... but I believe the fix for that one
>>>>> has since
>>>>> been applied to the sample code.
>>>>>
>>>>> I would also suspect that you are getting pop-under windows (your
>>>>> swing
>>>>> window could be trapped behind your SWT Window) but it is hard to
>>>>> say. You
>>>>> could also try the changes Gordon and I discuss in the September
>>>>> 19th post
>>>>> to this group.
>>>>>
>>>>> In short, I would hazard a guess that compatibility issues such as
>>>>> this are
>>>>> vital to the project and will eventually be worked out.
>>>>>
>>>>> -James
>>>>>
>>>>> "Cklewis" <chriskwonlewis@msn.com> wrote in message
>>>>> news:fgg8p4$5ko$1@build.eclipse.org...
>>>>>> Will there be a fix for letting you use JOptionPane and
>>>>>> JDialogs(etc) ?
>>>>>>
>>>>>> I noticed if I use JOptionPane BEFORE creating my
>>>>>> EmbeddedSwingComposite
>>>>>> it works just fine. But if I attempt to use JOptionPane or a JDialog
>>>>>> after I've created the EmbeddedSwingComposite that it will
>>>>>> display, but
>>>>>> it tends to freeze the whole program.
>>>>>>
>>>>>> Not sure if you were aware of this problem, but it would be nice
>>>>>> to be
>>>>>> able to use JOptionPane, and in my case a JDialog since the person
>>>>>> before me wrote a lot of code for that particular section which
>>>>>> uses a
>>>>>> JDialog and JTrees. Initially i thought the problem was setting the
>>>>>> JDialog's frame owner to the awt frame in EmbeddedSwingComposite.
>>>>>> But I
>>>>>> experimented with a regular JOptionPane(doesn't ask for the parent
>>>>>> component/frame) and noticed the same problem.
>>>>>
>>>>>
>>
Re: Will there be a fix for ... [message #573387 is a reply to message #4551] Mon, 05 November 2007 13:23 Go to previous message
James Peltzer is currently offline James PeltzerFriend
Messages: 43
Registered: July 2009
Member
You may need to provide a little more information. I know that I have
successfully used JOptionPane and JDialogs both before and after creating
EmbeddedSwingComposites. The code I am working from is modified from
Gordon's original article code.

Originally I was often having this problem when an invisible dialog was
added to the SwtInputBlocker... but I believe the fix for that one has since
been applied to the sample code.

I would also suspect that you are getting pop-under windows (your swing
window could be trapped behind your SWT Window) but it is hard to say. You
could also try the changes Gordon and I discuss in the September 19th post
to this group.

In short, I would hazard a guess that compatibility issues such as this are
vital to the project and will eventually be worked out.

-James

"Cklewis" <chriskwonlewis@msn.com> wrote in message
news:fgg8p4$5ko$1@build.eclipse.org...
> Will there be a fix for letting you use JOptionPane and JDialogs(etc) ?
>
> I noticed if I use JOptionPane BEFORE creating my EmbeddedSwingComposite
> it works just fine. But if I attempt to use JOptionPane or a JDialog
> after I've created the EmbeddedSwingComposite that it will display, but
> it tends to freeze the whole program.
>
> Not sure if you were aware of this problem, but it would be nice to be
> able to use JOptionPane, and in my case a JDialog since the person
> before me wrote a lot of code for that particular section which uses a
> JDialog and JTrees. Initially i thought the problem was setting the
> JDialog's frame owner to the awt frame in EmbeddedSwingComposite. But I
> experimented with a regular JOptionPane(doesn't ask for the parent
> component/frame) and noticed the same problem.
Re: Will there be a fix for ... [message #573401 is a reply to message #4621] Wed, 07 November 2007 16:32 Go to previous message
Chris Kwon Lewis is currently offline Chris Kwon LewisFriend
Messages: 24
Registered: July 2009
Junior Member
I just wrote a seperate program to test if the error was still happening
and it is.

Here is exactly what i'm doing.

1)Create a Shell, set layout etc
2)Try JOptionPane.showInputDialog (works fine)
3)Create swing component (a piccolo "canvas", which is an extended
JComponent)
4)Add my EmbeddedSwingComposite
5)Let the GUI load
6)Click on "file" menu and click on an item I have preset with an action
lisener to call a function that loads another JOptionPane.showInputDialog

The result is the first JoptionPane is fine, but the second one freezes
the entire program as soon as I click a button.

If you would like, I could upload the project so you can try it. It's
just one file along with the folder with all the swing integration stuff
from Gordon's example.

James Peltzer wrote:
> You may need to provide a little more information. I know that I have
> successfully used JOptionPane and JDialogs both before and after creating
> EmbeddedSwingComposites. The code I am working from is modified from
> Gordon's original article code.
>
> Originally I was often having this problem when an invisible dialog was
> added to the SwtInputBlocker... but I believe the fix for that one has since
> been applied to the sample code.
>
> I would also suspect that you are getting pop-under windows (your swing
> window could be trapped behind your SWT Window) but it is hard to say. You
> could also try the changes Gordon and I discuss in the September 19th post
> to this group.
>
> In short, I would hazard a guess that compatibility issues such as this are
> vital to the project and will eventually be worked out.
>
> -James
>
> "Cklewis" <chriskwonlewis@msn.com> wrote in message
> news:fgg8p4$5ko$1@build.eclipse.org...
>> Will there be a fix for letting you use JOptionPane and JDialogs(etc) ?
>>
>> I noticed if I use JOptionPane BEFORE creating my EmbeddedSwingComposite
>> it works just fine. But if I attempt to use JOptionPane or a JDialog
>> after I've created the EmbeddedSwingComposite that it will display, but
>> it tends to freeze the whole program.
>>
>> Not sure if you were aware of this problem, but it would be nice to be
>> able to use JOptionPane, and in my case a JDialog since the person
>> before me wrote a lot of code for that particular section which uses a
>> JDialog and JTrees. Initially i thought the problem was setting the
>> JDialog's frame owner to the awt frame in EmbeddedSwingComposite. But I
>> experimented with a regular JOptionPane(doesn't ask for the parent
>> component/frame) and noticed the same problem.
>
>
Re: Will there be a fix for ... [message #573426 is a reply to message #4689] Thu, 08 November 2007 19:56 Go to previous message
Gordon Hirsch is currently offline Gordon HirschFriend
Messages: 100
Registered: July 2009
Senior Member
If you make your example available, I can take a look. There's no
specific problem that I know of with JOptionPane, and I have
successfully used JOptionPane dialogs in the past.

Cklewis wrote:
> I just wrote a seperate program to test if the error was still happening
> and it is.
>
> Here is exactly what i'm doing.
>
> 1)Create a Shell, set layout etc
> 2)Try JOptionPane.showInputDialog (works fine)
> 3)Create swing component (a piccolo "canvas", which is an extended
> JComponent)
> 4)Add my EmbeddedSwingComposite
> 5)Let the GUI load
> 6)Click on "file" menu and click on an item I have preset with an action
> lisener to call a function that loads another JOptionPane.showInputDialog
>
> The result is the first JoptionPane is fine, but the second one freezes
> the entire program as soon as I click a button.
>
> If you would like, I could upload the project so you can try it. It's
> just one file along with the folder with all the swing integration stuff
> from Gordon's example.
>
> James Peltzer wrote:
>> You may need to provide a little more information. I know that I have
>> successfully used JOptionPane and JDialogs both before and after creating
>> EmbeddedSwingComposites. The code I am working from is modified from
>> Gordon's original article code.
>>
>> Originally I was often having this problem when an invisible dialog was
>> added to the SwtInputBlocker... but I believe the fix for that one has
>> since
>> been applied to the sample code.
>>
>> I would also suspect that you are getting pop-under windows (your swing
>> window could be trapped behind your SWT Window) but it is hard to
>> say. You
>> could also try the changes Gordon and I discuss in the September 19th
>> post
>> to this group.
>>
>> In short, I would hazard a guess that compatibility issues such as
>> this are
>> vital to the project and will eventually be worked out.
>>
>> -James
>>
>> "Cklewis" <chriskwonlewis@msn.com> wrote in message
>> news:fgg8p4$5ko$1@build.eclipse.org...
>>> Will there be a fix for letting you use JOptionPane and JDialogs(etc) ?
>>>
>>> I noticed if I use JOptionPane BEFORE creating my EmbeddedSwingComposite
>>> it works just fine. But if I attempt to use JOptionPane or a JDialog
>>> after I've created the EmbeddedSwingComposite that it will display, but
>>> it tends to freeze the whole program.
>>>
>>> Not sure if you were aware of this problem, but it would be nice to be
>>> able to use JOptionPane, and in my case a JDialog since the person
>>> before me wrote a lot of code for that particular section which uses a
>>> JDialog and JTrees. Initially i thought the problem was setting the
>>> JDialog's frame owner to the awt frame in EmbeddedSwingComposite. But I
>>> experimented with a regular JOptionPane(doesn't ask for the parent
>>> component/frame) and noticed the same problem.
>>
>>
Re: Will there be a fix for ... [message #573451 is a reply to message #4758] Thu, 08 November 2007 20:40 Go to previous message
Chris Kwon Lewis is currently offline Chris Kwon LewisFriend
Messages: 24
Registered: July 2009
Junior Member
This is a multi-part message in MIME format.
--------------040206060602040709030109
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Here is the example (attached),

click on 'file' -> 'try me' to get the 2nd JOptionPane to come up...
this way the gui and embedded swing composite are already loaded when it
comes up.

You also need the piccolo library to get this project to work.
downloadable at:
http://www.cs.umd.edu/hcil/jazz/download/piccolo/piccolo-1.2 .zip

you can add the piccolo jars or put the piccolo portion as a project and
link via a buildpath.

Gordon Hirsch wrote:
> If you make your example available, I can take a look. There's no
> specific problem that I know of with JOptionPane, and I have
> successfully used JOptionPane dialogs in the past.
>
> Cklewis wrote:
>> I just wrote a seperate program to test if the error was still
>> happening and it is.
>>
>> Here is exactly what i'm doing.
>>
>> 1)Create a Shell, set layout etc
>> 2)Try JOptionPane.showInputDialog (works fine)
>> 3)Create swing component (a piccolo "canvas", which is an extended
>> JComponent)
>> 4)Add my EmbeddedSwingComposite
>> 5)Let the GUI load
>> 6)Click on "file" menu and click on an item I have preset with an
>> action lisener to call a function that loads another
>> JOptionPane.showInputDialog
>>
>> The result is the first JoptionPane is fine, but the second one
>> freezes the entire program as soon as I click a button.
>>
>> If you would like, I could upload the project so you can try it. It's
>> just one file along with the folder with all the swing integration
>> stuff from Gordon's example.
>>
>> James Peltzer wrote:
>>> You may need to provide a little more information. I know that I have
>>> successfully used JOptionPane and JDialogs both before and after
>>> creating
>>> EmbeddedSwingComposites. The code I am working from is modified from
>>> Gordon's original article code.
>>>
>>> Originally I was often having this problem when an invisible dialog was
>>> added to the SwtInputBlocker... but I believe the fix for that one
>>> has since
>>> been applied to the sample code.
>>>
>>> I would also suspect that you are getting pop-under windows (your swing
>>> window could be trapped behind your SWT Window) but it is hard to
>>> say. You
>>> could also try the changes Gordon and I discuss in the September 19th
>>> post
>>> to this group.
>>>
>>> In short, I would hazard a guess that compatibility issues such as
>>> this are
>>> vital to the project and will eventually be worked out.
>>>
>>> -James
>>>
>>> "Cklewis" <chriskwonlewis@msn.com> wrote in message
>>> news:fgg8p4$5ko$1@build.eclipse.org...
>>>> Will there be a fix for letting you use JOptionPane and JDialogs(etc) ?
>>>>
>>>> I noticed if I use JOptionPane BEFORE creating my
>>>> EmbeddedSwingComposite
>>>> it works just fine. But if I attempt to use JOptionPane or a JDialog
>>>> after I've created the EmbeddedSwingComposite that it will display, but
>>>> it tends to freeze the whole program.
>>>>
>>>> Not sure if you were aware of this problem, but it would be nice to be
>>>> able to use JOptionPane, and in my case a JDialog since the person
>>>> before me wrote a lot of code for that particular section which uses a
>>>> JDialog and JTrees. Initially i thought the problem was setting the
>>>> JDialog's frame owner to the awt frame in EmbeddedSwingComposite.
>>>> But I
>>>> experimented with a regular JOptionPane(doesn't ask for the parent
>>>> component/frame) and noticed the same problem.
>>>
>>>


--------------040206060602040709030109
Content-Type: application/x-zip-compressed;
name="swtSwingProblem.zip"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="swtSwingProblem.zip"

UEsDBBQAAAAIAMtraDf1M9tAjwAAAOgAAAAaAAAAc3d0U3dpbmdQcm9ibGVt Ly5jbGFzc3Bh
dGizsa/IzVEoSy0qzszPs1Uy1DNQUkjNS85PycxLt1UKDXHTtVCyt+PlsknO SSwuLkgsyQBy
OBG81LySokqF7My8FFul4qJkJQWQIISpj1tlcn4eTGV+UbpeanJOZkFxql5W SoleTmJpXnIG
0HY9ryDXeGd/vxBHTz/XIHym5ZeWFJSWwAxMyswDK7bRR3YyAFBLAwQUAAAA CADLa2g31c09
AMQAAACHAQAAGAAAAHN3dFN3aW5nUHJvYmxlbS8ucHJvamVjdHVQQQ6CMBA8 a+IfCHep3jxU
OGg8m6APKGVDSmhLtgV8vm0pGky87czO7ExLi5fskhHQCK3O6TE7pAkormuh mnP6fNz2p7TI
d1vao26B2ysYjqK3Tu3YDVVMQm4mW07OcEdddSApCaxfcy0lKJtTskyejbdM AGSFqkF0ddkD
9yjCi7MyVQcmJmpsMuCd6A1kbW0zrtENbGTBAPit4BwMm8Fnm4jJmqDkNyUy Sw0XaQeEqJ7B
/wbz3hcIunDue+Dz3PVHvgFQSwMECgAAAAAAymtoNwAAAAAAAAAAAAAAABQA AABzd3RTd2lu
Z1Byb2JsZW0vYmluL1BLAwQKAAAAAAD6a2g3AAAAAAAAAAAAAAAAFAAAAHN3 dFN3aW5nUHJv
YmxlbS9zcmMvUEsDBBQAAAAIAPRraDdrui92NwMAAFgJAAAnAAAAc3d0U3dp bmdQcm9ibGVt
L3NyYy9waWNjb2xvV2l0aFNXVC5qYXZhjVVbTyIxFH4eE/9D5WlINuUHEB8Q 2F03KkZMeNhs
TJ0eoJuhnbQd0DX+9z29DHMRwUEG237n0vN9PT0/Oz8Tm0JpS/6yLXuhZifk iv4aK5yUIO3w
8PqssELJeyYBAXuI0isKWS4KAwi0dL54HH66CFt0b+gccsicsxFnhQX9dYPp tpVfF56zV1Va
+l3k+Y3/9yT0hxb8FHQn+Aowi4kwBZqdBt6CLL+GurawOY2cryHPm0UHXtJy w2lmaCGyTOWK
3o+Z3DIzPIaRioOh94/wYpvePL9CWlhp5opMp5tn4Bz43C14WRhhA+vhU5TP uchIljNjSPS+
EHaN5JM3B0giwlj0mJGtEpxsmJAkJXOr0Sv5/YcwvTKk7wySxH1jfQmPv5dE wo7E2bQ/dJhO
MFYUGMZnHeFtQLTyBSTGvy+bRlQVINMYMGB3a5FDeuHBVBgXXhngab/vE03E Mr2IBlQD4yPJ
HYbZbI0YD0mqdZMDFDGH5H0wAMmJWLpRheDBfcTgN6JcsXCEfyF3N34yUQfd Srmpw5wFbp+y
BodJVArJKsEkNV8hmC9KJ0bYvV0LQ2t+qvhJeAaDsSpeiYYlaJAZELWs6HPG 9R4iVz5au/o1
hhqw4WSmDlufaazyAegtexEb8Q+JsrqEfTmTRtuiZq1217Io7USwXK3S3hUs lYZeQId6xNRi
kWpekk4lI+5w2dM6t28EZUjvZnfToHQSn0Iriz0NOKkbL8lQUBZqX24ybdu5 R4MttWwQWC1E
8RxyE1HvFbyzHVqooszRqrFjxnkcBYeuYV0x3UA0KPCaqVdiim3ZhvRagvOd wQcib97Qdydi
3Ssy4SbS3k/0ochC6Zy3+KIrLxPAtCj6GePpRQmgSf9YxM6GvLbdiGzCVIzt pj5weTV6OCjA
6Cx6CJCqxxPhXrVTN1chg9fxaD4eTabBzKGdz7B1lH6l0X2OxxKcPMzunyaz xV3bWcDiq2Zp
n54pn68/ybAhYG8XoXV6j/oVU+q1V5GK/aV9I4wFiQz5M9+5+6O8kxY94eIL UDzR7eufQGWC
/Ui/3kKnwbaN3cp70MJHGURz7+1oo2BLTLXXlVR13Nw1eH72H1BLAwQKAAAA AAD3a2g3AAAA
AAAAAAAAAAAAJQAAAHN3dFN3aW5nUHJvYmxlbS9zcmMvc3dpbmdpbnRlZ3Jh dGlvbi9QSwME
FAAAAAgAz0hnNwgpnIwnCQAA4iEAADsAAABzd3RTd2luZ1Byb2JsZW0vc3Jj L3N3aW5naW50
ZWdyYXRpb24vQXd0RGlhbG9nTGlzdGVuZXIuamF2YdVZUXPbNhJ+94z/A5qX o3IyldzLzdiT
uzq22/NcbOUiT/3YgUhIQkQBOgIUq7b+7/ctAEqkSNpuJvXkMJlYpBaLxe63 3y6g0euvO46P
2Gt2odfbXM4XlkXJgP3tzZu/s8n5hF0rY6UtrIid1HmWMSdlWC6MyDcijdnd Qhq2zvU85yvG
VcrsQjCeJHq15mor1ZytuBW55JlxSngu8CaFzIbLjE8zwQqVitzNg+DKMD1z D1dJJtdGsI/F
NJMJ+yATofC4eRu/cZrKhUwWu6WkMJgFW1JpbC6nhZVaDZ1FeLlfjFs3eWHt +nQ0KssyFn6d
WOfzUSbmPBuJdXayefsmXthVRtLBR8rr1bk5dW9oNNzETphU0mKv7PzjtV97 tc7ESijLyR6a
9nXH6PhozZMlnwtmSnhbKisQClrs7Pjo+Ajr69yyz3BAzEsbn9/fXW1gzln7 q0vYrecdX7gJ
/ylEITq+vNM6W8ouffdSpbrs+EKQvp0lHxAvoUTeK3iB+GqFT32GH4g9qdAb 1qUNoMni8zzn
W1LS9WV4v/sGoNkByGCFUqZzYQ2cadYZ3zrRUciyc5YF04BUboEVU+QOtoIy aI33K50CPFOx
4Bupc8qECUUVoKbYGGBeKJYXSuGlTwIJ0CvG2eT+jgm1kblWBLeY3ZNogKP8 VaRDJi2bZjpZ
GofMQoUHminVuvCJwU0workwpa1Z6FK5uQuZpkLFjGYAgUnGjWHnpfUQqgKw Bz++PIj2kLXi
xX6DOgz//2jk7bgMBmDxIkvhGsp4YYxImVbZls1yvXIexAr4mwuOnRrNlN7p MVuVLOAX+avL
C+IDJURK7OVl1rncgKTYTCpsnOxprv0O8iXb4SIanHXNCyEnAgqhr+3GQYDG a/ZJzGnHeeAr
Pf0sEkt+58ptwoF0DxXsxaGlGQ8ARLht79R2IwjYIKkE5MUloaYNFMfg+Jfw LINXORgOlC3p
cbvT7oC31QVpAr8WZDH77ftMqiW7Wk0F8JA6C11YjbTiIZCv3ekgpyMuloIY FjNizcFWAoF0
lmKfCUcqsf2+vieJFeIvUH6qtyP/oQW56CAIgwpUNABSgZQNX7HvENYiy872 AvtPFJm4Enx3
EFIagfZiJPulmPEis+FNNIh5mh7CPSKFw10WxPfXt5fj+5+vfrq6vfv55nzy 7wpSD3XUVPja
aImcgzcz8UmsNOqu33Xk/zBeuWHIprBCAEi5k6uW73LDblKHI4JIIwl6pfr9 GQT29SOWhgLE
bbK4c6mKVCJBJOm4Dn6fx12BgeRki02tYl3YGA5SNlPRK++WkB2n7BX7635/ g5pFcsaiR1zj
jK7mxV6wxVMulnWlDw3zbrUVp5R0YExiGo3/b8iR0YAlC5EsmftqKhJeGJ/D 3my2ch1YQ5lL
86lA7iWI/xwZ4/jOJ7klllMn/oHPLDGuZSWYBEygiN6ulecYyqmGXscJRZ5j W0i9jTSSeqNg
R+mYFj0NEo4nAQYumUvxl9SnMdYOBaQZG4TQbc/xBayZaxQ4XvJt3AxCHVrB 0dE+Yq2gBIzF
nLj86heRRMTIn1AIqamLWvI01r5vdMmDktktRGNS2muqf+9pOyKPw8aieoyr 8dB89eDxW40W
Jh6o/tOHjlQ+J84MiVxVkGY6/6lp+wJZiR0+LyUbaAi1ytTwwH7/nX23T8x9 Qh2+/8kjOWoj
KBe2yFV31jaWB3tHnYbu14HI06zwRyH7LLgeQrUbqLWt1QC6Q+T+wS8m/lsI Y3/QSWGaqyKs
d+PL8Wk4WFEqU/nmGfLZsGlO7USNv6z2hzi9bkLDn++MXgn0Vqr4haXCLCFl RqXrxHEeVDjA
oCGKRDyP2UpYnki7DRN/vB3fXA1q/FFHrtropfhAJ8yv4d7nJVA12m+Ae2bQ bKNlaGCK3nXS
CYHfTfgHe9PLT93kgDVC/R801kJH4lWesLe0ZLdOhAXFAQh2tQGtmuvIKIQH cIBSCO1i36tt
jwYijBYiQpu54GuUJkP7rjWvbW1hPmbMJaIN8ygGDK0gEdEMDaEIJxxf6oY1 HPYqTdAXofX0
hxc23bo5VLECDInldoVLTx0JsRn5Ie7VeQGvuY3rH9BQo/sDzrPN/lAHLK7Q lYEV414lvcrv
XCl1Ry9XjIO+nftukCgZy7Reuuo8EyIjl6GTRmfRb/Ndc9slqYZTGr0IfZzJ HCchK5G3cAgU
92o0IsMZhjqOsUoaeiTxhC6osZly9D4BETNyFoWgVyVJYRf5sNFKzYqcHitP xL3ze/XeL7b/
ZNfWec3glLX0vpAmnEwomPgkZ5JOmDPIwQcOBB4ajxrsAxK27t1H+DRnzBRT Q4lF/dbQa/JK
JV2mzQG1CsS9C3h5Eg31ONiM45b1HZnD80GF6KIpr/BRfJQ6X3IEzl+fUbeH XtVfnJgm4oYM
B7iFv9NQ3gP90OvqEt7n7t7KsYXDxat+2qo353Wa6qDWpvguP5/R0+0fH2rH Mv+ho48bOwby
volqd0s+Sl09nA/fi3Rm91WOuz/vvDzViGDvYScWBMF8liOVkQAdrSiNdg9b VSOvouOA9NTZ
9gK59s06EpKkARaeTDndPiVk7Qs4Ggs3Trcu8ZKq/dzdE3VFp3lZ0IwPyCYv RHeUHo0QMvXb
DZHnl3qEXiIXGg1aetidhQUPiIfwJGagzUKhtrOMWtiYvef0AwpcXLVKZEhr Yld0B7UrvFTm
KMfV5WhruuvmvTO9pjz2PUHthnHf8R3gPOjwt41Ywt/xhUtjatpxmHeNE5Wp 2Qx2HFSDL+re
aTyrg6fxRRlTjS7fejXtjKlG+1LgCe6r7cTFoQK+SKPqivCbyChTSkzGsazK lOvLg6M1nR5Y
jQiqm83xx6vbq8vTLlZq1Ms6iQz8lg8cPIVxy4N3T69/8WE86Vm/UWaev/7z 1ry+/bF30T1z
fsmqqb9mPu2Wq55bJF6D2i4F/uVOQFHzhzUmOsH2MkDraQ13FoZD26u6m8b+ hxM9/UxcTuic
6CJPRIvHSeJpEm+xBg5tbCnEev9TDChtnXEccKrfZErBlopKxGxUnRtBrUbY 6kq1CwrdVRlG
DtmMZ+bxmtwVzgn9Lvd/FU33S+KfGcz+7hTz/7CDPwm6UEn7Xfz49BsK96OT K2uOj/DwP1BL
AwQUAAAACADOSGc31dbazeoOAABbNQAAOAAAAHN3dFN3aW5nUHJvYmxlbS9z cmMvc3dpbmdp
bnRlZ3JhdGlvbi9Bd3RFbnZpcm9ubWVudC5qYXZh7Rv9bxu39fcA+R8Yr2jl wD6lWYEBcdNF
teVMq2N7ltMMKAaDuqMkzieeduRJdgv973vv8eN4p5MdrGm7LwaQpTvy8X1/ kek//7Tj6RP2
nB0Xy/tSzuaG9dJ99vLFiz+w8WDMRkobaSojEpo1yHNGszQrhRblSmQJu55L zZZlMSv5gnGV
MTMXjKdpsVhydS/VjC24EaXkuSYgvBTwJIM5Ky5zPskFq1QmSloHExeaFVP6 MUxzudSCXVaT
XKbsTKZCwc/Vl8kLgrSey3QetpJCwyrAJZPalHJSGVmoA8IIHtabcUOL58Ys X/X76/U6EXaf
pChn/VzMeN4Xy/xw9eWLZG4WOc52PFIWblHqV/QER4NN7JBJJQ3QygaXI7v3 YpmLhVCGIz64
7NOO/tMnS57e8plgeg3clsoIEAVudvT0ydMnsH9RGvZ3YEDC1yYZrgCXv1Si EkfbL09Bhu3n
OVezpBTTXKQmGalVkRLwa17OhBnepWLZtdddQtgk70fvuALkyqPu10pXS3wq srOiuB2o7FSI
vBMqSCdISgOu4w/XRw+9jIHsmMXtzJvBQ6DWMgNCdXIMWlZoacTjU0+kXub8 /vGJ47nIcyIS
//WdMQ4UE2oly0Kh3jBTwE9SXTQKsLQlGEtmt0BTAez7Y+Qmg4+sWGv4C4ag GGdAHOzNro4v
mbW95RIsieTnDDfNudZM3BmhMk0bTDjY2E9vcqluH2JYsE743cffkeJtaDMn WTa5p59fV/k3
9ksuv3mvEV+iJ+dmWpSLQ70UqZyCnet7bcSCoT6QBaFGJCwsHYLKlLgaN10U GdhaBgZXzLR1
LfSEp2WhLT3Ig5juAOhDUd4iHF4W4IDYipeyqHTEzkkFMN3G/YD90v6NuAdf FoU2DIS5nFY5
CizaUDs/lZYC/CBTYt0hsZ5IZomnY58BG+eipH3MnCv4KIDTFo5YTEQWgUDv VyhQFEBEEbUO
aMJOQfZeCoG9qE4IIoPFVt26QGkRlGBIs0VGc4IVbJIWOwQwHx2tscwAOICP Nlylwjr0wC/U
X8CT1u1QtJYlMfd3k4CvZTynHThEo5jPjl0oDcEVCh9wMR4vccdTk9838QLF Ix0BkiVMa5gH
bDSFJQc4gUCnVVmiPTY9OqCx5vea5XIhjdU4VQHHSiTab6SJ6zUGTd6Bve/g VAqyn8DDieFS
gdTRsGkLjZunMQd/B/waOSg9x679DbACdCeD/ShQ2EA6lQpMxO4wWJth5Gt+ ApAw+n12fXFy
8YrxLGPLYnlYLdHjLKTWaFxgLVMIhmCpKp3DUvmjZYXXNSCWiMjFSuR/tCDt 57KUK7QCi7/D
ZGzInt9ef3dzdnHx3c3g/OTmdDg8uzkfvBuy12wP9DLRlUooHtnAAeRNk5m5 TWBVFDn2jgD3
z84vzg/Pz8aHX36GbrVj3xbVgfuvQXbkkDvWTIoiB70CXYr2G9loL38E4bwG fcm1OGrvaYn0
mpyF2LA9B9A6IRdwBimMUOTm458BtI0UOJ6zK2GqUlnNQ6+aN+2uRarX+JmE PMAjk7ALFeDh
26kswcBStDAvS6tIB1bBBai05uW9z3a8AqDny/NiHYDFvgVSPnhfVsrFMDAF H6hUiCaRCaLV
Zs5YLDTyua0tpUrzKhPosYzxQQWgwBYluCmW+zAyBXHhlwCtFDPka+kX1VTl jt/WbDHehLg7
EXO+kgVZN4WaAM457xpba94e8weYyhYVOswUHAzABwkBAeo+4h3kkhTcAjgE grn3zr12+KpH
nFQxrQXXVBtAGCXBRtMG4uioCBXrmXhISzI5nQrEoFYrgsAqDZPRawJDxYoC LkI48G4sSggv
gN+EdsjkNrBhpKdlsVY1u8OXN0uOpYhDJTyOBtFfqEM0doqY7blvSjIqmohp RpSO1XOER4uN
ciobBuWswikB3669cbhUqPsdpjhXVxdXN+fvz85uBldv378bnl9jZWGrIs9i 4D3i/3UfFuwE
1o93ijB+kM3scBc8FJyB5GxJGgGyBNXNjQQd82jV+t93Hs7GnG7H2xGzPKB9 H4twQDzCXEYV
awZBC5gM+uN8XXBhoJrBgg+slm7VXjU4F1lTyK5moJFAjcvPAkGRzDW5zTap DXhxIpI03tSB
tA3Ax8t6Ooi451++tsGowQccoK+JKMui7OG3DlXZP6oXbJqweyEyPPPQP/+c PfM8FP+oIIKF
SYkXxRYOZHuUyj6oSL29d231ABkaFpbs7cC1TixANr2m0iSUuGyhhOTVcXwH 72hiFOwxF28A
99yP8cKx6UTTeQkP0a3ZhCjdZ5cuvqegFqasUgN6dAiplyStQgOKTWCfvCQl e7VXdmbkALXQ
fchogEsCkjGvT89CchOp5/OIzOehlQOCNPdA3aJYQVTgLMdan/EF1EkGI8YU VP0Wgse0LBau
mAA5UWLWgFfXE2CemQA/D27LsHVR5RkpAlgghG0GYGW+o85oAJTEM8hCJpVB BwBSxHi24nlF
ST6YMEaXVFDET3k6B7wmFEoPcGclRKYbEIHhDokHI6+PuPHavvvSYe3W+0DR AVEwNZBqAVKU
+bMPrjarF42p3E0AhUvH+d4eJrtYa6sCTEqLCU9vZ1Sl7h2wPdAjAYbTTHSj Hy8/e0DE2AoA
X6V92bLmyviKQmW8zEJB3sqcRuaLJudsa4Pb5GDNZZ1bnn1+GvFVF7YSQ8bq aqLByaDrR4Zu
icL6YOpCgTGsJYRngOLMjIO+wYu6CHIpGW7XA21qqgrt2YQ3B8Ihm0Mx+MYA ODJQmf2GXFnj
B2VTLmeTalXcCkj9PyC5IF/NpwIwTDloZWv3Rr7X8mCRzTM9J2uwuDVgRArZ WwJ5ivqKYEZZ
XqTYudhnHJVLgq1S8hgoa4AZBDKb2lv/MJDythxl3SVMGkT30GVeVYr6Ub1O /+oC/qqQGSb7
3ZNwgHJY3Y/qqV7b8eLYNB9tGkEDGGzSOeuNFKTyZbWEqFInMuKjoufpYHQ2 PLkZ/nV4fABL
uqHv6Hv+/C1iY0W/kYQEIKoVGz7GloNkbts9MFDTBb+lXuHCN8Pq3ORwLbNI U5vlZR0Rm1Vo
OyhuusrQEamJjorL0qkJtqVCIr2iaoLUEftZ8HbitBk9exnASbWsTGyp8cqE rLL91PoLiFoY
PgmqqIs9G2IQWEDLcH1LISoXRugD7FzZDtuykAS0rnMQcgBl3dGuOq9RHAFJ 2BBESTke4nEI
CaWOMV5yFE0duQHgNtndyy3xzqkT8Y6FthMa4CH89bzIG5W2jacYkC2bwLmh O+IlxO1v78mF
2SK57gPUgiJHOKug5gILxFQaHe+YGsK4v9ReFhAxFgKwNSKHBB0J8y7Odtgs vC3CPCbd/C4Y
J08DQg3lu0tPDjp4HLztinaVJYNiMa7qMGJhF8PFGitrm0T4RpsNKtZELmm1 CzCbx3WCKv2J
TycaIm+KOqwOX1xZ69U3PI8GQvJ9Fo25T5ULb0Nt66vh/kZ1bO0efk4hGx/0 /Dw0r/90NRyc
3IzOvx+cjU5uBsfHw/HYoouW0ZLYLnhtQX4UQc1SmfQ5RN1v0XjGa9OzLUIf ewP7PkXKTzqj
lQRLswbLXZeG0pgCO3rW/l1+3YAAIUOH3r1PHrGJ/6oxzZ23ZmLVOG/F1dhu 0/2dcPoLPXv5
1cvff+WPYwPQKIfB8i9o1C9ROkc8dUUXpnHHts/W2y6Ru/bqVLGdyQBEenBe mH5Qu1DEmVwS
5XJbudoZnrc/kql9VJbWkRj6AchlhS35oJ4rbxsYxcMLJaFdurI72/zOd27l uxMcuwLDO5F+
RBLqx0eRGQ+g672y8bMOwzsGWOUIYxyZqCiTyi7spNKPTferTSdnmo/iHsR+ Oye8LK3XwSSq
Tp7QG9VFeL2gjXkT78787piinsZePeqhDY+6ksZeqsA2gQ2lPi9tRt6dvep/ ITa6w0Y/HzCi
Oqj2yRqP1dEZFimmG9G5WdTU+0LXvcMHGulEdubolUgmdo5XUkukO4UUNvP3 VSwWfneVhQIW
9ynQpa7nQtkEiSaFnaQOc7pziHF9HLsz/6DLBPsb26vEtCoThss8Zn348ibU 1A5q8wrIxtXv
1K1HeFa0kTxrSP9lsbgjHxob4PejlLm0xp+8+Hgx59jztPIOXGsGfGI525lW xi7r14xEYT3p
szPuUJTingNSeHrfcHqIpZ+/IxTXHeROJvf2zgtmwdv9d3WKnR7vYp7FInJs +Od/y7l9Etdm
K/pfwrPtrpgJP7qg41AEn+Sk0GjSBlC+yAuEARBssUulJd433LoKxAbtanoL FhHq+925wNs+
U+o5O0yk9iUj1TS+XCSEAzB7nYfZqzwFGQRey8I6Exv9mVgK+FB4OcTj3u2W 40hVO6z/+/J6
/Hv78tiVbvn1Rzzmf0LxEtYTndZd2KaiDRJNd4yD5uDhx/fW7fToDk08I5wE 2UyWvlmY4U2P
oBwQ2sN33w5PToYnMQhnIGN7czGBtTdWHgHidurbZ6dgmXjOTFTY4+4DdIRo OctS0P2GVHjT
j5M/5+ksF4DRLkLGXG5y6CNjqpu+S0Hw7Q9/wxs49FU3AdtnW8UJwg0rklyo GUSTb9iLzkrJ
4xsW/PDiby14D56U0vo2q21xhsdC2oTe82mRVrrJstDcaPSsu3oczSmJg+1A trf3J6uERveZ
RAcWcdGt0abwnOCaXFOPzubYherouTXl+WzXXbLt0+3dl87wOLAlgx11u7tn Z+/XnvEpLA7X
s0lD2pQf40n7OSWhRzvB3WGvpgPaMfadL10fZyfQbbDAuj9DAKNTDMoMuO3b u2vBzVNJ4CI2
GOj4gP4TAe8EiHnNTBXgmc+kqu6gMtK3plgmYON3NmvBpOvA+308JIUYL/Jp feGoCdBt2vku
5GNvr79zd3FrtqOGdXRKUBs8I/01jCAnuqThOQnq9tbcdvhsP2Lxdl+p7JBl R1uiFiagHJtD
jVfb9P1pmRVxARYHQnnoqAyHOzRng8oUhzM0WEqALChqTGyvEQlYrTIQzNPb 65Kn2woandzh
QSvYS/OK02+Di+uvp3hS8Rvj8sj/vPh1kap/boJ3xj/2EzftvHQ4uQerl+Bd wbs7O3X3zFxM
Ac1t1c+dN30pFsDHPwFQSwMEFAAAAAgAzUhnNybBKJpZCgAAhSUAADkAAABz d3RTd2luZ1By
b2JsZW0vc3JjL3N3aW5naW50ZWdyYXRpb24vQXd0Rm9jdXNIYW5kbGVyLmph dmHNGl2T27bx
3TP+D7AfEsqWKbvTTmd8vcnc2G7OziV39d3UD5k8QCQkoqYAFQAlqx3/9+4u QBIkoTt/JGnw
IJ2IxWK/v3iLR7/uun+PPWIv9PZg5LpyLCtm7E9Pn/6VXZ9ds9fKOukaJ3KC OqtrRlCWGWGF
2YkyZzeVtGxr9NrwDeOqZK4SjBeF3my5Oki1ZhvuhJG8toSEGwFPSoDZcVnz ZS1Yo0ph6BwA
bizTK/rxqqjl1gp21SxrWbALWQgFP3fP8qeEaV/JouquksLCKaCllNYZuWyc 1GpOFMHD/jLu
6HDl3Pb5YrHf73Ph78m1WS9qseb1QmzrJ7tnT/PKbWqEDjJSHq829jk9wTUQ E3vCpJIOeGVn
V6/93ZttLTZCOY704LFfdy3u39vy4j1fC2b3IG2pnABV4GUn9+/dvwf3a+PY v0AAOd+7/AUI
Syug5yS1B2RKJUxi79UOzvyjEY1IbP5dF429MXwnjOX1lQZ1HVJgYCKp4++k KvU+sSHw0p4s
ouFusAswAJHmwkMSubcjI5A7EXnCb8fkYW7DB5Za52fG8AMCpDZfg19wsLvU Xjgz2PmQky3k
b670ttn+KFRzktx34gPIDTzS3bL/5gY+Y7MBi/MeWdTcWna2d8TdOZh7DX7c WbxlA67nbKKh
OQOH+KSVkCL7L5KCm1sjdxBj2Eoq8DyyMrYKthbvX48otXsX/hwBLrWuBVeM I4ClM+yUrSCE
jVF2cmFFYwx89w9OmWrqOsCHU15uI4llEcUz5KplGqQrQCO0wR4M8PU4cWHc yz3Y6YBzXPQ7
52U5EX+mxJ69FUC5lTsx3Ua0s1kKVUIdHjoAf+xU4zneaVkyK9x1J/FsrIzK f6cEELYSIggA
vSLZaYBhbLHw+WAjXKUpCWxAp445zZaCFbyuRcm0KkRKojHG9v4xb8TUGkRG fGSfozqgLUA8
iGxsylgfdXNpX0q75a6obiojeJnNTgKmS8XO3t0wCjfAMm6mWEoFabb1X8Fq 8rVwKbAsNoLI
5KOg0O7KFcsCUglpkYN8IZ2/2ixFWYryRSXrMnXDQHi47jzBRIC4alnI7jwz C/yejOJOETnt
EC1K5MXIszPvqRHTH5mA0DBmAVRzc/ny8jlUJEYUmJHZkltRfnf88m136Uux 4k1966VDofdo
grlNRAr0XB/AWTe5blwOEUy5WmUP34p/NwIKGKjUVhTpVtr0RD1nD9nj/mdM wID43Hg0wRdO
joiC5FSAFJgwRpvv2OsVU9rNAZGyEsvAjd4RKTVfY8Qgupai1nuwJ3Bdcmm5 SophGK6dadow
GGD854JqXlyP2I96J2xgewllFKMbBFOQ8tg1OFXHX3tkEfm+M1zZlTB0409w JBkDolByNICl
g8AxzuJEhKu/Ie/CkSfnS/nfGrGTGh5+ngyuwrE/kBx6klKySCT6Ie1QGjVG JejqskAfDlOh
IoVsXCkklbRgeWqxrvoZNhY2lXBJr99jTi8zop3SCUsWGaks9RskoSMxaE1E sgzkPMsHERGj
D+WlWKaP2cM509utttKJGOgyPIuA41A0qdEw3o+Qj/U7EeiFtu64OI8w2LPk na0GJC27X8DI
4L7X0PIpNAIoaQ4M7JkC6IRXCKY5e1cJxfZUvQVKpCdmPsQpHUBBu7/EWChK bPRvkUvH3Rlm
zmzYsP1f7c1rF+uBbIaF62eWrB1jbwXkpT8wa4bou5W7/nTMobcFHyR8/Iua 2jR/X8/EESdJ
dBX5hL6HsR/clvGP8Yr++4mc3qLJT8lmXy+orxBZx+bDo4EDSNpI6OC5wkZg 22yhQ1INjtG4
wzndAFhvMXJg+IBw0RWL3fyP6LcMYlbjExLCjlBsoKCVkLUGl+E8cCet9LM5 qj4sNk1OQj8C
sY29efkDe5b/maZpgptaDucG1OYJnPohL9D/AzlQUbIS/JbxxukN0IPd3iHC 9pe5LyQLXQo8
MEDXKCUKAbjMYc6WjcNgWGph1bcYRMUGi6SqwWpFHQCLWufD877Shb5Drg6h XrXs8gfoNZkG
Uk2wQ5ShJZXaxHHgh8aVUoG0rHuCEhBqJ41WNFuJjjzqyhiS63Wl9wq84dGi goKaJkDDgnxw
G9TfXR5YCqSJUlNbB3LMIX0ViCkJRSfUAMna8CVKiUpIbB/QolFfvuLJ2U/a bCg7HUNK2WaA
swy1PqJrbKcIykqoX9AE44H2UD54HyIb9c8HCAFXW6waAAYOJTboegPflij2 3XqBIXWsUqSk
4lvwASAFSRIfOBZgc+y9uHfhAgfEuga4tqRux+FDawVZQUvMCR4IR5lnvEbH PzAOfeIOYtFO
ij1SXEDweg/ZN8YwwHau98A2eATYO9gnaSKogbSKF3l32wNZYBElSIcvIVmg 6wZXHGAE7fBe
zEtsBsD3DSgPxGY42Fbm2oNQhRnUp0OOJBQRdG6IDoTGTZi6QJsJ++gEYihh 7GAfROb7zTdx
NV91tfmnNrU4Gmc3/D11j504fDM76KIDDlIwOrcl7+Y7oBW8h4nVClp30LlF c/kWI8YG/Q9H
R40jS1B6H/MSEGbXeiMwhsFZSYAFvaAAS9fm/VKoomrrsOBrACLWRjdgM2TC XFG0mGAO71qA
lnCeKK+BTLCT2ZQzCicrAEU75bUTRuHkEvRiNAcq4HrQeJhXoZQmKKIZ11Ry 3sVPYmVGLfnA
FCDVcRAXhgLwMq7WAs2G7pyzawqIZD/UJenVihKTZ82/O+lRSUSF42ngTNTk zZWot/C8hGCP
s+C4uA1Zak8u4t14aKNxmvDS70IFUgXYIVqREXS0UaJK0rbhqqF80z+lAc24 II/mY8MZ+8TI
aUTPCvo8ZVk2Ah9jnlFliNAThREhhOfYlAgXQeQ4r20Z/KfP0Bm13GOkkb6P TmPiXr0rzkBY
b8l8LNVuPpa2tQiG0aUAVfig5U+MJ/Rxios5afeNsFB0JGYFWC35i5A6HIR3 b2AGQvttSrkL
rX2iDBRIGn75MIBJyAeaYCcVVDzcFNVhlJQu8FXsXtBr24Cn7dlWFEbGYRaD QNvAlEFqdN08
nD9aJZzVYPr1hOgBwSEaEbVTYs+hLT3cSeyQ1sv959KZSgXnskQf9idx0Ngo d4p5wD/JrfyP
GHbXyGPWvnOD6E0vAQK0DI9R6/g35qYwa5u6badCb9Hgur2P0mEVT+na5Ufo cABMrfW7aeLD
1Vl31PnEy2MBP/4C9w3DKn/FpKsKbuinIiNV+Z4k2MM89rRUjxXM5ndpojxl P//CNJLrf6H7
expo7hJtZBObkBi1Af4p6J79bYAlr4Vauwo2Hj+e6CrlePHhn+UvKdNuj8bC /YRjH+9S1piU
bqjRlqRYT96htg7yuOaCm/8umu38CpTbRU5UbUfnYMx3t257JLdqtnfxgi5r D4FqpqVS/zqe
/iUlljaE16ISoXvCelEa64YIKHUPioYOXTI4hIDFyzIrJi7vX8RMUHaWkMSY sp3eeGbFMRue
BpjkeAb73PMj+Ty2FbXT78UF/lORf4EN/TqnGDmmOUZuGjUFwHWkScYV0x0N 0uDx/wBQSwME
FAAAAAgA1EhnN0iUS6nlAgAACwgAAD0AAABzd3RTd2luZ1Byb2JsZW0vc3Jj L3N3aW5naW50
ZWdyYXRpb24vQ2xlYW5SZXNpemVMaXN0ZW5lci5qYXZhrVXBbtswDL0HyD9w N7tw5XSXAQ06
IEu7okCBBU2BnRWbsYXJsiEpcbO1/z5Kdhw7Tbceqksk+vGRfKSU+Oxj13gE ZzAvq50WWW4h
SEL4PJl8geVsCXfKWGE3FplHzaQEjzKg0aDeYsrgMRcGKl1mmhfAVQo2R+BJ UhYVVzuhMii4
RS24NJ6EayRLSpgtF5KvJMJGpai9HwELA+XaH24SKSqDsNispEjgXiSo6Li9 YBPPVOciybtQ
Ag15US6pMFaL1caKUkU+IzIegnHrnXNrq8s4ruuaYROHlTqLJWZcxljJ8+3F hOW2kA7daqQa
3lKbS29xayATnINQwlKtMFvcNbGLSmKBynKXj3P72BWPRxVPfvEMwdSktlAW qRUu2HQ8Go8o
fqktUG1dnaa2DLeUkmG+plLOUl6R9NN3wm/c6W0wha+oNYbdzt8BesDEcpVJ fBtbizRDH56+
G2HfAb0WppJ85yWomvlJJDcG5hK5ekAjfuM9DQoqmjx8ot/UwFAN+EPdolVp saUJhi5RKGXq
DnAFaiPltIU1UbalSCFpiJowadCXDTDcE7tFKSGVgfBpQNb71FbCqKz5Rmui CMIO7YFxDD8U
LH8+gm8T3QKNPD0QHXaEXOgGlHG9ckOz1mUBSzc5IHlGt2ej3V771Bl8F3Tn 8Ylkx9RdXW6G
dLWwOaxoADNd0jWmymWpWQ/T9QySbncFQWcOse3ZtM970Fph3Wrd+Tspvrlo JggHXm9gWwWD
kBW8CgafFrwRNDp4RPuQfe7/5jOXgohmJNAgJ7GGYD8tbc8G7fcY6kaO7lm9 Rmm5m6omBmus
9Ki0FK1h+tqfJLT5sbs39rz9+diZEgz60b/CJITnZwh6lM72Km23bueQJU1E 2h+kDaevsVbv
TlG4lSVsTXPWiRzsK3iKjkqPhsVFfeFOBT3JPtDjwLiLejJGR004Rf4Ca6G4 lP+qi/6M3N0J
TvoPTb1jb9t7a5qEWiKCvPwFUEsDBBQAAAAIANdIZzcMMUOcXgQAADQPAABL AAAAc3d0U3dp
bmdQcm9ibGVtL3NyYy9zd2luZ2ludGVncmF0aW9uL0VtYmVkZGVkQ2hpbGRG b2N1c1RyYXZl
cnNhbFBvbGljeS5qYXZh7VdLc9s2EL57xv9hm0MiaWRKTiZ2Yo0Piu1MnHoa d+w2Z4hciohB
gAVAMZpM/nsXIMWHTNVuxu2hU14EErvfvj4sVpPR0z77ezCCM5WtNV8mFgbh EF5Op8dwM7+B
S2kst7nFwEvNhQAvZUCjQb3CKIDbhBvItFpqlgKTEdgEgYWhSjMm11wuIWUW NWfCeBCmkb5E
JLNiXLCFQMhlhNrrkWBqQMX+5SIUPDMI1/lC8BCueIiSXleHwdQjFQkPk9oU R0Na5EvEjdV8
kVuu5Nh7RB8bY8x65cTa7GQyKYoiwNJOoPRyInDJxAQzcbA6nAaJTYWTrnIk S1ylzYn/4p5O
muAAuOSWYoX59WVpO80Epigtc/44tad9Jvt7GQvv2BLBFJRtLi1SKZyx2f7e /h7ZV9rCF0pA
wAobnFGylCR/Zn175CaXqHv2Llak82uOOW7Dfg284eCKrVVu36swN7earVAb Jq4VVW7tNbKy
iqFgxsBFusAowugs4SLqUwH8alFGBnajwjcH62qQab4ijoFxSQ4h5pIKIBRR z3ji/U5alI/f
Ls/hFA6Oj6dvDo+Ojt6+eT09fPXq9duXx1ezLlCJMC9Kux+ojoIISmmolrON ZaiiejCewTZY
Uv4OXRSweSg1SFmt9uCnU5C5ELO2RO0DhZLU3rit73U6Sp/qSsMSbf0yj+mM DepKQ7hZjVsK
4WbVca/yrtbo8a8W2SDtFGkFslOm4VzAzTk3GbNhcptoZNFgOHOCkwl8kjD/ fAvoZKkBuM0G
qFnxmFrbxq0A/8ipHw0oMVfMNMkZ1LENh93KlLbcQSd816DCNXUNYhjTKndN T/mWFXNtWuGP
wWomTey6WykgiddwQ/7WMl0jTVqCjaqnzS+kRzF3hTXaXMvt5H0HFNQmv/XK mjwj6PuEaNGg
KX4b9O9w7B3GSuP/JKtJ9t7R4ulYRi30L0mWaVxxlZsfIdp1pfvPkK1ixuPZ 5n52M+4cY5aL
VmZ7KPeD7Pq3qUOSfpJyswo19vCuGm8izPw9qCTcSVUIjOimd8zItXaIH89/ 3poxHAs6uIXS
d25Ow21BtlArD3a/RBPfFjowNONROcW6qq7xSSEvUdYE1I6rZJ54F8AHVVDQ VGJHyZAJT+S5
Z2SV/a6XnNCsQ+NpihGne5hsWb0up7oUbaL8CaDLOWp6qcaQZ9xlQsUdvNix OYB3uYUCIVLy
BS0YyY1oLB1Vjmy4RLAEhJzSUeoFAXD7wsCX3NgO7ALb8WJUh3ujxh1PU9Js H5oyU85spGhU
7YBKRe4XsrxCSr8/b6RHTnzU3R6TGwnNF6SoU8rsOtjuQq3j7ZfGH+5Bb7+5 WVO/SQMaswIa
gKQVcvCsOVwn5TF+tqMf1Gf83llsTuCD/eIRTrgU7vJhuyfV3WN35zgrj89/ oXO0btQyKBo1
m2+n7U7fF3g7p445gz6UKpAhPH/epIBcn8sQDf0h+hT3qQ2H/fdCj+iDFKlU H0+0mgS0+hNQ
SwMEFAAAAAgA2khnN9+A3cWxFwAAtFIAAEAAAABzd3RTd2luZ1Byb2JsZW0v c3JjL3N3aW5n
aW50ZWdyYXRpb24vRW1iZWRkZWRTd2luZ0NvbXBvc2l0ZS5qYXZhxTxrc9s4 kt+nav4DJtma
kaccKsnO3d7FSWYd25k469g+PzYfrq5SEAlZHFOEliCleDb+79cPAARISvaM s3f8kEgU0N1o
NPoNj3/8us+334gfxZ5e3FT51awWo3RLPH/69C/ifPdcHJamzuumVgmN2i0K QaOMqJRR1VJl
ibiY5UYsKn1VybmQZSbqmRIyTfV8IcubvLwSc1mrKpeFISCyUvAmgzFLmRdy UijRlJmqaB4M
nBuhp/TlIC3yhVHitJkUeSqO8lSV8HX5LHlKkFazPJ15VLkyMAtoyXJTV/mk qXNdbhNF8LJF
JmuaPKvrxYvxeLVaJYrxJLq6GhfqShZjtSieLJ89TWb1vMDRlkclw9WVeUFv 8InYJJ6IvMxr
WKvYPT1k3PNFoeaqrCXSg9O+7jP+9puFTK/llRJmBdzOy1rBViCynW+/+fYb wK+rWvwKDEjk
qk5wFTIvVbXT/+1gCXT+V6MaNfDjW9jfofcXWhfXed1F9jkhcpL3uwtgQL0z /OMebJ0uAevw
72da16eyVGuIdsPO8d/LOi+A9coMj7k8/CBL4NIaEItCTpO3gOby8EwZ3VSp ClcEouHFxMCi
zz9e7Gz68eBzqhZ2D9aMkjzy0+4mULCTC5ByQ6Tdc9i+rOX6oYW80Q3sZl4U R/Rx/dBVnl2p
2iS0SSav1d1D93MDnLy5eyCJ2t3DjuAsq2jf1438SP/Tno2tUtsVwF+ROuoF DxVTXQk1n6gs
Q+VEssODUA4NHGAhexNBscDrUpztnQIFwtRwtGUBM57gSAkinqd05lAftpoL eFEDurkgekBJ
LvMM1FSRzwFsJkyzoDXdQVE9q3RzNRP//GuRl9ebBOk2YUykk9NCGiPUZ2Bg hkBk7RFObnjc
y6Z4zR+K/PWlQbyoeB3ZT8xCpfkUdK+5gX2YiyOtr0mrvVWqsLhw6kFpmgpn Aw1iroE1oIWB
P1eG1T29kWmljSEEXaZ5QGcqa1IENIXfrlW1LRTRIIviRugSdqLM9AqtT/6b Mn4aGCZNXLuQ
E3FRyaWqDGCsNRE7rfScDQrxGBhPuszPBqGd54ZWP9emFqd68eRyIT6osjFg ZFQJG5TCx0IB
YF4ArnOKQBLRcuH8pkxhq8r8NwSFR1HszWR5BXOIBMtEo+oaBrTUf9TVNc6Q sM1A7lJWuQZ0
gGPMsjBpgJEWz9hv2Sn/fzjdFqDvZ2RBQUTXC9K2gPNOG+KNBPyOwm2Hgljo hSrxI4Hmt3Yn
t4FwRYu3cri7qg/KZQ4LRvN2y/LmhGLxuhVENL9weiZglmVasyTCuxIkjPa1 MbAlgJtFFVHm
dWw7nWBazI/TSoFPQeR5CzLauhVzVc80+CRv8UB9ljh92zFuUanX3mrDo6ww eO0mXolSrbyQ
tNDxx9EC+FbW2yi6yfHJ8cGW+GcIDR8437VK8WC3dk0Mk9qfjI+BE1IUaPAs Le/P/ZvR1s7Q
lJp8Gjv6Ar+sGdjCTkAA/56rFWoC/H9EMIZnVapuqjKY3Bt1G7643REbWZws 9KIB5eKJfDn2
29KKjOpKLkoL8xFkojQ5Oo9WB1eZH0wuAkqLmOWqklU6u4GTAR4EzWLCpBOh jV7GLWtxnCsW
uBup+wUpAe2YBoSUrTIAb5NPNbONpfpurf0YNu8TqaSR5xQIc8SVl5PXx7CS Fy/Hk9fiI+ok
PMvz/HNoKEjLEDvGSBMeIdS0NXtocIJRS6A5Az9+Amd5pcXloVBoitHIKJmZ bcIG8MgoAZRt
/wUlX3xABYlAwb/FKOAfTV4pPtJIUAoHGrHMW6VLFBDwxG4VoZhJIwzYwUJW qM7Bs07RFKB6
JWMHKiDTCrVELVQJ+FPFgGHevEG/3xBFEZd2W5sCMxVsAJgAWKlcodazYUXa VFW7YooQtlHN
w4hSpcoYWYHgmHQGtgjOVi3NtUE4VWOFSKMroK3G5YWRnsMlyWIlbwzghB2y 3CHpI7PaVE60
mZ2wMK8/YXcgtGBzQ1hgb1slbrdyGwyUWwggtDSyFuc99SuIGXOh2wWtwNzg Gpwd4/2nYY4l
vJUlamaOdCJHYeAIxR7447xc6mt1hHHf6KwpS1Iwt78bwG6ZfZR5HYDoGUG7 vhE6ZVaa2AiQ
Ixcg6gQ4t1v34s+5549jzUaW3OEWP5YGXISDzyrdwJW7YKwF4ZlC/5xMQTM0 lSGlhLxA/6ZQ
T6wy6IgeuLJXT0DAyfazxBs4h0WGMqWn00JL9JvoUKucRB80RyAz5GuJCUSi V+zFtCejdYd/
1RNDgTHKFgAmw4+qhaQZjgfoPk41YFTLUb93G9idHbbO3stt36CBFWiT8yWI IVqLGqAxEPBc
UNfDJDcsHEqamBX6Tv/XwLSbyKgHY9tPLaZRAHYrRIsPEKUwDqAh34E1b4pi Jx6CLEp4wKse
cbcY9rgvjAhkhk1KD5m16RthLHWeoaPa8VvWLr6HhMiNxwDdazkWIQ+wXPVI WLecTaDdR/50
G0sG+enWJpyTh25j7XBQIDHSf+yPeYtxwjtQ1gUcEBhoP+641bmhLqz1sYB/ wZ6c+xqv1p4I
2psZQSZ9NqJ/WU31uMPjzi0aDkfY+bKP5catfcX/jsds0QpH1kwVC4glMcyz 1p7tEvpzC9C4
GCmhiQUXeKEq8OkzjqngfKNF81AljQXjDoYc1IrXsXPwrviniSQnC7TPiuLC gGvTvISgzrMK
h//L+GZPZLuHa45lZ5YfDp6uqd+Bg3iKHDL3YDklLfChTCMovSYFl07SusDX BG83bS0/67Gr
HGgHZoLupOjEA0B3AT3kGzBnS1k0SmQKfPh8wsEV+iczucxB89LIxULJCuEn HgIbRv5MosBW
FVwv8P9AdaOjp7LYywsNZSLWgFIRWQDYmhP0Mq2DxgNSTYsGYjMFO09ulIfD 63+Z6ky9BtQv
x/TJZoQx3mRHEGMjMEyOfcbxL4azje6YW9ikyQtKkLxU89eTvF7lYLhOzl6O 4esPZB01KCWk
2AMZ2YgWnQMXqTJpEGc70h59eYTBNQTdutoi1xuRgjfnwRBtYAD7y+owhI0q s4D3dWFzywwI
T60Z5CQRiuc05k/twLX7f04zJygrNL4wyEZYNiWuOJ3RwHJomgomQkTXbvfg 1rPffvDhzcH+
/sG+c20hqP70Znfvb7+cnVwe73t/VqKx9zAsrTYthRk0BJiIS9NgJmEbogXB jrmJ6cdYQGWe
Sg/wr3Bw5NweHzgyNkXIcuTjJPTdeYSV0OhMjsCbwSgFvW9QEFtd4ExKux0A w6KB5aTuqPdJ
Uy6HLA4LKkvsVlcN+ms+uex8UJ4AD+Xizs5Ozj4dXx4dfdo9++Xyw8HxBZYl puEyMPsCpL4c
w/hg50JoAfown70B5cW7s4Pd/U+Hx3/fPTrc/7S7t3dwfs6okT13aYxhOlp6 MPvESd7H6BUg
K92PY/5g9fyaBE7rGrpUTo5uDMKJtD+JtU/38JZ9iUX2S19gQ/0O5FlnfbSV gAB7q4SznCne
7tn+EAT8xtn5EYpam6wfbYWjel4LmEH0+zT6SXac96xCA3Nq0zCsJVyappPx 5l2KMzGRgWg1
4D0sRKtZepZivano5oHciXTJIFDTiAYH3ZEatDoTf0QpDkyAi/vADhqbwNWN 4XRzHCJHwb5d
rc9RrCBQpVgGqS0UYelamxABRVkgBBozHXN54/zYiZpiiL8mbYimn+Fj5vn+ jPtKCTS7jPsm
0faKXKHZwXBPL1VVIWK3UXAwenM4SNq69ahAQ9qqCe5FDm7CqhzOy0Vl1rv9 GBuBWiGdN0Wd
L1BL53PM1qNjZANmr+cTcTgVPr9Oko1xlvpM1pbEPODQolJLyuIjhm3cY65M Y4Tb2qFgB3+/
vv14uP/LwcWn/cPz05Nz0EpeyVcqVeAZVpSQokyUQxwrfPEv196xYiYHvM0A h0oXzmB6zdo9
cpVZaG0gG+pHe2j92dizJ3uz3qNRXa3XVXGRnOSmt/S+QhhWiodOJNlltwBj ie4dVPLQnJqj
IMgdWPb7fSY9Ou4+39xXleRAOcepPek4BI9QInZrLGyBztZ0oNx8VOMeR6xy g+XskB/B1Rz0
n8Crhz22qoxc/EhNhfJuB0GAo8snBKXDi64Q+eqKTwndWWZZG2HtZhnGVkOa xLLKi0dQ6jtx
Oow4EOwkmGZWTR7BvTRkV2uJw5IrkKkEn9ppDeSsT+uGmlFH5Ljal1hrFr6O VE99FZHiMtwy
v/wBfm6DcbsGUfaJg5oy7RijBYLnwc+UXN6sFLciAU1boRFjg0yb8YMZNlg7 7P9j1LbdZrYZ
NuwWcjF36XIy25jsTTX4UWld3CTiHLxM2xqEVdfENGUCFOCXTNZyAhszXuZq 9QleJJn+Gf77
lGevfvrP/3j+b8+fe1RTG9wBzVhIt9s7fBA4SmBr4teH+8tRCGn04UoUn+2v caR6sinWm+eB
HKbNlrTp9SQ36ALLOp1dkDjBWcSB47E4KXuy1gO0LhHafgJAh3Q6uC1ElhRN gdssmgWxjDNR
8HIBUrZURVgnCwXpRQTz2RbVjpltuAUoHi6ptS3OG7ClOqUozITi7Jxe8A/8 mQY44ABG4Deq
A8HQiGRXqvKy7wU8iSE+Z4LtapmplOOyiYiQtuhwRVDCIiaPt3LWmdTSM8Jw LILxx0/NVgTn
z1uBBxsrSDFtKlyTKGVV6RXbcb3gch81ECxAnHnllpkR6ICznp/MmfdvuX77 fp+aHeDDR+o0
odSQbWFj5RBuIeX23oIl0lxvazHtUhkUXb4qdz0j6UznnMKzAG3pQwVC2vNF WMh7K9ElBCjW
Qe04DwZYZabYDWlrsWAvwVJYt8bHK8jZG54RQV4Bb+QSeVJXDSeKVL2DRwb0 VJ2n4LxVrpBM
xgmh2WAHuzx4ZUU+VelNSu6zCGIgxpFy/jwUZccSO982NPDLyPOLVUAp3p8d iGfJT0SSh4Im
x2CiUxVAlW3fYXpQlTIvIkjYEVNNYVGmjX15mj9NFAiQ0bSRoU2m2NK/0fEa KdWOJhyLYlwe
Q7VMqhy51znIFyf7Jy8oHZRjM+wcHAubSmQyFhpc6JvWXrMqztDqWo/FLj5Q piy2RnFdYg/X
j1pnNJWFoYaPdix7OKD0RzxrmOXOwLiWTnw3nGAAZmps5QW8NVDcLDJ2vDVu LMouib9NZg45
Jlg2UBjESMtKD9slAbmbCoEI1yEXvHfZFTHKE+A1ilylCzKiBcXRmWLbd3es eC9vadjpihy6
IX9ugx93bPujWLR7fcSMIC4IkFsjG+A4VjupuQotg76i8gkVumxDWtfL7Sge 0y7H8ZZGgNsV
9QC6jsJEvNMr3K5tDBhBjHKkUhYtGNvGFzphyIu24SKvXVCeYSQSRj2OJR6Y 6PtPIFaUATsG
vUG2TG9wdygSZZmkqh3ECm2fM0Kx0LyTMyjkZ3QaOtFkEC5chJEZ21ary0kJ WEu0S62m3pX1
0FsL5czE/SLWOLPRyUuUN6Ln3kfMtCc8Qkekd3nJIf2mWjPpZww0SRJAFLF/ EgnXTR0H/ESs
W4W8CTt3wmXYNtwGXMQfvIAyojXpMic4u6mTOQLEmrhtTMJtOfmbbcDBND0e I6IwQoL7wJkU
WbQ/gLyPwoyveMVuq/jyRbAXjJmX0VavxIjZYDj4mvPCgzkddprd007v1bTx sVs3agvUzoPe
Ej8HZesk2K4XoYd92y1T0zGJUjADTr9dOELd43w0DHOuOw1kp39Nxkh0TPoH Hy3CyQy7VMjZ
58sV+W8qC81n3ImKlBzapF20M8M2DfdviGWd3eLiM8u7LjL+8GqYrZ0aMazq 3DUXOfnB0w9g
rFrQ7H9baTRaBKEFla8o1TABA8DuSQ++LHDmzZM2mc21RttRJ2t26iiTZ/PH WdKDQh2GA9YG
iaWlJTaRCDu8ou6gtktuRu08oVLrgbfLU1S0nqLCX0k2h6TxcbV8BuGXhuxl 1AW21ZZ3e6CB
OyXFzBlgKDQ4XCM0UbGp9Z1GaI23kg6UMHgN2tfQD3WdVv3mE3zC7GbVlMOD 8HFi03Jxpz/w
Nn51O9A4gE8QiYMU2kbSpG0kxXWGUwMJZ9866EzieD5yB4Glv2B9nqKTlWZE GAwbX/9OxL5m
dtqSBRgX1M9XbWbCOhmh/WDYTsIxQmn3x3WbGNujzp22gZhaVRQ02Zj1sUHc wAKurwTAV7Ka
4FWpjK8r0D0C+EBJKiIdQhfwb9ABxx5TnFW2pX54YGF77Er6qh5ycw8HntGt hLYHpZeKHtKr
8WIG9GtfN+30xnxNHRxL1l36LWiQ8XIVrskJV4TivNMpZbpAOgOGpNn12VCT mvs2aiFF1YJo
+G47XA4Oj8ToIOh5Qq1GHU8soVketDjZWIWamajFyfYwtcC6ZeG3eVG7ovAM Uw1hQ9MwPa60
vTfLQZcgh/xll1OOD22YGF9lWDt8DQPYf3VxY3cOowiEu6UxEvANNZrfK+bR jnARJ7geE0Qt
Qc02qtbmHX8xuFUUhWKSKLfpMDjT13j3Roz+/adnz57+9Hwr0EXsDwR9gbYY 32rZXqMgPn/I
ytzLwvTf9DOMbfb41XCCN15EcOSHTNXablCAvrEeEz4djP2e0xj0IAhHPtLr 1gRnDLWhpgjE
vsD0xt3gDE6zv0etFO4JzPBtcAyGjkAP1IDk97s41ur5hyfY20+bdu9eMUQv 2nrRpRpd6w7D
W3Dffy++6y0d4e6rZZ7idm2MntxNVwr06cOrPicT2w2Dv4+2/vvp/3R2Mv6G eVubORB0vxDZ
3swxF/qX5yJb5Ogv6MJdLKebHhzlU6rUgMzTrQ83xmfee2io8Z27v5a4r5RN dHdFPX5MSmqn
jBY6d6/JFs1x65W9n5ixXYmjInxwTkDQK2FvazOfp7IpavuGz8s5reHMz+jJ PgKUnDI5R1pA
VuDV1gdZzxJq/B+NMt3grQS3Lwj2HZUPQER+DKkZA1uTp10MPWYhg7uNjPY+ EuWh6M6pXOCF
P6zh8ZV/CPb5wtCNu/DYzt7m93zBoYeOLTnnyRJxrjn9hsiYiBy7bcnsu8yY bO+E2n7EGGic
WrLcsyY6+m0U8uyY9O62CN9R1xu+DLYgdtztIi4pt0VkFS5fN8V8XcabTglA jNeQBsTQCQY5
N4apPoi+MNE3shgHsdH1WwjaJ7YbFIGD2kmpJhekHamZxF9QEkMoXTrubnSB 1ce1+AXndDUF
S06UqHcLHJAryrjbay4UvzIMm0drk0/WqWiLsFgJAK36cwwyNrPW6vQuPdxh ozqHgXSsvxaV
MIUe1gUc1svDUYBuIFpc76D1N3lQUtd4a/93lsrqAER46f86g814zyXFpDOb 3pZ4J5HCRupt
pmaV7hGIAHcSHSCgrH5d9QCVB7YrOY0QadgORTjTf+HjHY8YlmqUaGPyK5Yy L682eK5UoZZY
3j76/i3/wLVekgfki+EUUQSP7IkfJnzbt82fgdcrCWMbowfVlAhS+6dZuCBq YmYOFrEO6x+w
XgUYqL8ckXNTtjNxtlBBaV7+hcmhsnoyADEuXfIdDi4fCXcPUzL7HvFCHrFS i6k7oaE8DdPM
vKNsL0jHUzSBfKYkNLd0y+xXsOJY7R0STf9XRZJFU48evWnqWpcJoni0HckD yPx4/Kfjk+Mn
x0fnT579aS2IPUw7v9GfHwZEzyf6oUAOsrzWFWqVB4E5khOQkwdBgJj4QQBw DQ8j4RT/vhHY
rTeyehCcM5nl+itISft3AR4E5kJOJir7GmCKrwDhHeh/9TD+XkBs8jZXRfZg KA9nSl6D8/BG
Vw9ek766KtRXEBp0F97CxAcBcX854vcBGg6Phy8nhu4GYvGl3VdxCg39YR/p RZ4Txp3f2VmJ
+kcjCzPqxYYYUnacwqH7FBZMxy/7Q2kcfO6VysHnziwEPv1iQfi1/bF1BeNd mEDsp7BnzVCm
r092pzj2ak1xzF0pxr6SvgeKz6Zsw+a0QgDPVTg3pBQ6zna0sB3RYcP4RzHC SvB7cHsznQY3
t7C7bf2fw6L8/2OXHx35eXFt3DG3HXefjveOFEcL+AN8d7ej8VJT0lLSzVo9 jBP01znuxYtw
5P83N0Javg4/7PU0X94b5gWd/baQ2jlt323MekUKsFJzvVR/4HbZGkj3Lkjg wzwcqmR24074
8L9QSwMEFAAAAAgA4EhnN5HjuX+rAQAAyQMAADIAAABzd3RTd2luZ1Byb2Js ZW0vc3JjL3N3
aW5naW50ZWdyYXRpb24vUGxhdGZvcm0uamF2Ya1SzWrbQBC+G/wOQ8jBDrVk p4dCQg+mlBAI
rkGBnNeriTR4tbvZHUmE0nfvaKXEDeSSkrlIu/r+Zkb5xefWfAYX8MP550BV zbDQS7hcr79B
sS3g1kYmbhmzhNoaAwkVIWDE0GGZwX1NEXxwVVANKFsC1whKa9d4ZZ/JVtAo xkDKxCSiAspN
KZhOkVEHg9DaEkPiCbCJ4B7T4ac25CPCvj0Y0nBHGq0cu022Tkp9Tbp+tSKM wpIsJUUOdGiZ
nP2SEsnlyUxxItfM/irP+77PcPTJXKhyg5UyOXqz6jbrrObGDOhpRnbUdSFe pZuh3owJVkCW
WHqF7f529G68wQYtqyHPQPvcyuczr/RRVQixl2mTZZRVDGbX89l8Jv4uMEhv r33GnrPi4T59
1kbFCHuj+NGFBn5LQCkfqJOlQRxSayikb9mjn1DT8TuISFYhv7AXyyQ5COS5 aGAnbctARMXK
TKb+/5E/EV+M/4yPCTbufQpxcM6gsrLMB7JfL0+coQJyGyyc9cOnswyfWvnd Fm8DL68l1vnu
1261uytWm/MPON7w8X2/io//5yYvfwFQSwMEFAAAAAgA40hnN4vx/itAAwAA Zg4AAEQAAABz
d3RTd2luZ1Byb2JsZW0vc3JjL3N3aW5naW50ZWdyYXRpb24vUmVjdXJzaXZl Q29udGFpbmVy
TGlzdGVuZXIuamF2Ye1WXU/bMBR9r9T/cLenFJhb9jKJjocK+oC0AaNoe5im yTiXxpvjRLaT
Ck389107TdKPABtj0oTmB5L6fp9zYjPcedrV78EOHGX5jZHzxEEkBvB6NHoD s8kMTrR10hUO
WfCaKAXBy4JBi6bEmMFlIi3kJpsbngLXMbgEgQuRpTnXN1LPIeUOjeTKhiTc IO3E5FNyqfiV
Qih0jCbEkWNqIbsOP6ZCydwinBdXSgp4JwVq+lnus1HItEikSJpSEi1FUS+x tM7Iq8LJTO+F
jmizLcZdCE6cyw+Gw8ViwbCqwzIzHyqcczXEXL0q90cscany3kuMdJU3M/Yg 7Pi1BhO8Aqml
o1lhcn5S1U5zhSlqx30/Puxp17Dfy7n4zucIdkFoS+2QqPDFxv1ev0f1M+Pg GwHA+MKxIwIr
09TPuMtGbUqNpsM2LSnmQ4EFdhjRG9vw4Puw2zsiCqtq/Z5Q3Fq4QFEYK0vc cmqBtLBt/EHA
0sqNLElscC01UbDtptqK3r36e3fN6O4Mg7qkX9Q50py1DV4cgi6UGrce7ZuX KGs8DzdbuvVY
rI5SZjKGhJSkcBLHbUdgs8II3IOGUBBdTVVuHS0t7eJu0z3zLD1aUTBpj6XN uRPJZWKQx9Fg
7B2HQzjTMPl0CYF8Gt8bu4Ahz9kNFUxZVjhG42undPSyQt4fIy47gJewS2Ou NFL3yEQNA6GE
caRxAet6jFrAVrfZ0dn787PT6enl18nx8fR4j/KvFpDXdCTSV20d1wLpZGrC 19D2K2rZGYgB
43G8rShP/2r624Z2/7iT+gtMsxKfDfsPsj5zWZ5jDL/NfgXU4/i/mL4/+/iU CjChmScTAV2/
JG57vwoSqeJHKcEH/l2uA5ChzC+B2Y4pmrdDWEXY5xpvBi2R+PylGsmgpqgm A5uja3xsNNgI
v84MRKRBkBQ0GtPjbZOGKdRzl9Dm7u5Ws36ts9SU3GsyfJZfNgvebqlgJROd 9zXDFa/tJeEf
9wml+g7+a+Wf10pN1J/LZXlHbCmm0cxSL9V/00EuG5fm+skI2KWNe2TxeN7r RO3bpm7X2URP
zSwY1mhZ/wJrJIL3kYcjGnR/Ql2Q1DfJ8wGlltoDuASl/ARQSwMEFAAAAAgA 50hnN4pKR4C1
BgAASRYAADkAAABzd3RTd2luZ1Byb2JsZW0vc3JjL3N3aW5naW50ZWdyYXRp b24vU3d0Rm9j
dXNIYW5kbGVyLmphdmG9WN1v2zYQfw+Q/+Hah0JuUznZy4AEweCm7hosTbLY awcURUFLZ5uL
RAoiZdUY8r/vjvqW7cTdivEhscTjffzukxq+/LHr8ABewoVO1qlcLC14wQB+ Oj7+GSajCVwq
Y6XNLPqOahRF4KgMpGgwXWHow3QpDSSpXqQiBqFCsEsEEQQ6ToRaS7WAWFhM pYiMYyJSpDch
0ayEjMQsQshUiKk7R4SxAT13D+MgkolBuM1mkQzgSgao6HF14h87TvlSBsta lERDp0iXUBqb
yllmpVZHTiN62QgT1h1eWpucDod5nvtYyPF1uhhGuBDREJPo9erk2F/aOGLq EiNV8NWpOXVv
eHVggtcglbRkK4xuLwvZcRJhjMoK1oeP/dg1PDxIRHAvFggmJ7SlskiuYGFn hweHByRfpxb+
IgB8kVt/vCJdfs8ww/Y2mV7DYIhq8ml6tnMTmYXxHR46GoUiIbftS+7kP0n8 VppEG/wu4ivy
O6o9NHmng8zsx9qR7s34N1zvx5YIn2aay3CBDjjaN9Li06SMRCTWTxNOlhhF LgCSIrmCSBgD
k9w6i99T5EaUknXwGuggcQQtC+Bv5sO5kKRyRbkOc6koA2q9IWhZsElXKs15 Wyrfphn1VKIY
Ln+WhCV5YUbPAG+LDgPWF8pFRiPBVG/Cs3NQmYOmR1Jq6RN8F1maEibeoKZ2 hMMh3CigzAHn
ZSpGKYqwYdT84jLlNzLPNwDiVcLR3mXhpR7eoEXaEIgw7DjKY1E7SVtO7BA+ 1A4tUF1pGYJB
O6qx9/puWRb/t4Fbbu2GtnEpnNeAEpqumsdol9qV8BgFo6phRt4UUYQhaBXg /+nMis02p7at
qGw+20ZIrEl+LF2+cX9MdJIlhtoZKtf3YiEV0E6oc2e3dn3Wu7SQ6ywK2f4O txlay/1Tc8w4
vi2OpH7ZWqWNcCZSZkkVIbjH8Aiom3V5ESX151BTM1XaktMxLiEXkBNig4a6 yvJ2FyDwO48E
KeY9Gq8TJLzaYVYy+MBGe+2eAbhxjtdmDG16vaatiXyKEPtehnjrkOpkE6+H 5vHhrG+yK55g
3N9edrqtDjdHxslW2lInXBepwa5QuYgo7LMEovIcTUfK1QbqeDvSutcPPXZB /92jPii6RHkk
9NrNeIcXCitT5Fjd31BebaRb9Yf/FX+dRgtKCVdvrvGb7SpvU0EhbtCjZPWn d6OP47vJ+Ot0
9Obr9fjP6R4sb1NcSZ2Zfdne3o0/Xt78MdnKumpbTkTNo4gbyXWkeCWi721D naCYihnMUx27
xGZ8yRauJFyvHBPFrqL5OOqVijRTjlAXlYbp+23qjkjcoFxlb/Xi8ZghzpsE vJrQrOFoQNgv
7cpW6AuzVsH4GwZe2gL/8IAMozXTmnOFaq9xfi3UKfZ4PQJyQ9T+zUBzC8ol 33vQZimhlmYI
cl4CX3EikTBnmUc0cfE23Xx6nOY6RblQ4FGd8GH0aTqAgPwTVpedLcz8Ngti 6lU4SFPn5qBn
JK9S1TnduLBj3EP7oYjJErTPX/hGl0W29Hn1+uRLh0GlQO2HzfjoqrI1Qrok vArZn4+/kHjv
WRMxbUPhxYttRzurRojKl4uBshbR6fNWpR4MzvqsOtA8dPdLPGsl6816TqJH f9uCekbuXgNN
p2S0MHJ+/5WymSxurimwdWh9tOX9x0FnR92ZrMmc2NeZ9anQKRsp73mh7Sk8 h1dAOa4ndElW
CxLzil55xduioTgt+J7hDfjntYixIBs8bxeC5obqS7XS93jF3w+2hBq01l6l qNX/6+r/aOsf
nFU/t5X6vt+uaKbY7bUd8PGhHwTe1rH9HtfU4AynUHU93R5O/z5UOjZeFuUM 4xmGIY3o7qME
pJqGyUSoorop3XQpw+NligHKFVY1tMPQlmMxjaWuELvp36CbbukdC0sEq9t0 P1dGHfE9YtJl
V1RWID+lgN8Ep+VROXqL2Yx1Jcdox7ZRumyxNL34XW5v6NqKc0F14YjO8SlT qnfkWDhpPHGb
nG4sOidAZmu3U99MO/z4i1ExsqMJRIKm/L4WaP5gxhwM6+noZiK4f80PPPgX Gnd4JalOePav
mi3TaQayOyaY9iRRFd4Oo+nN25vT8iiFk/ml2eWuhD69vGAFqca6aWn0ZiP9 ajaXCoyOWyCR
dQs9o6Q2QGMu2VjcVsSMdjnOCvVGrDL3S/K0D+/ockQXkph6Kl1RIgwsRw/f T6An9mWhoaG6
ix+Eua90vL65Hm+tEfuNk9V6AKQmCzuETN5fvpt+p5T+dFlL4i999cPjCX9H kIgdGe/OHB7Q
v38AUEsDBBQAAAAIAOpIZzeD90XMjAUAAOkPAAA5AAAAc3d0U3dpbmdQcm9i bGVtL3NyYy9z
d2luZ2ludGVncmF0aW9uL1N3dElucHV0QmxvY2tlci5qYXZhrVddb9s2FH0P kP9w04dCbhPZ
2cuABtngJlkRNKsDOEMfB1q6trjIpCZSVr0h/32HpGzJlpMUQ9kitqX7ee7l 4eXw3Y9dx0f0
jq50sS7lIrMUJQP6aTT6mabjKd0qY6WtLMdeapzn5KUMlWy4XHEa00MmDRWl XpRiSUKlZDMm
kSR6WQi1lmpBS2G5lCI33ogoGU9SyKyEzMUsZ6pUyqXXg+DSkJ77HzdJLgvD dF/NcpnQnUxY
4efqPB55S3Umk2zrSrKBFmJJpbGlnFVWanXqI8LD1pmwXjmztvgwHNZ1HXPw E+tyMcx5IfIh
F/nZ6nwUZ3aZO+kGIxXs6tJ88E/c2oGJzkgqaZErje9vg+9lkfOSlRUuHqf2 Y9fw+KgQyaNY
MJkaaEtlGaVwzi6Oj46P4F+XlpDbNk9T23j69eHi2Ze8Qrwm/k0nlRmnokBV vk/4xn1/XrSW
6YIhew2A9OJ75EyRi/XrgtOM89yn6/4luTCGprW9VUVlP+Y6eUR78TfLKjUU nNO/KAWWcXVJ
0L9yhS7tKUlUVqiE6ZJU5V0cUALkNHMKV7rC10saNXJbqy48Mtsgd97teoyC bIFdouxgE6V3
WhV4HV6cEuoXf5l8uRlcUBB5Ch+7xiezvzgBbAWraMcYAGLg2QAcA8SrqnSW IXbS5OoFh0Oa
KOeNfJ2xw0oWaWuo/TaXCm3fDR9IwPC9CHYvOql4IbjhOijspDW+v7+7vRo/ 3E6+/Pn75Hp8
11ONDdup/Iej0SmN+m9FmvpuvAMRsAJozk+3mXexcKsIFLPSMqW5k/wkpOI0 aruauKfkVsDH
6CUTkLRz7fgr4ngRg69U9W346eHz4NTT2ejbqMkcbIG/oihYlKAm/KdUWzpo XSuvbJKSGXRm
NMjzET1n0XYraaSjtNmalnrlqBaPZ5zrmjSUSgIhpLo2gaQPmgc1VkpxwsaI ct0w8deg5vkr
EZVhF+EcuyrzAWiVr0MULrJEIJc6Y0VbM/GBVOScovsGoViaT/YxGhxE1K1Q R+TEH102kevH
bp0366n/aFzbGwBTauVI13X2bbOHo2AVT5q2RwBxyX9XbCy0Ai/4gkf7vjp+ nvr9FrZX53H7
rfHkziT/edlsjZ0oOpo40lDP6CQYlsbJaING7GPlAD1p7MZuU45V6sSFTbJn oN1Im5y5eDHJ
9mvJtipVl/2e9inM75okR5wHSSb0/MkOg7q1D2Mact3GtfXT0K13UynPtAcd dTj4l5aEOwKv
0N1zXHcoZMhO16CXZawrGwMJZXMVvbnmnK3biM7KLFD6my7QrmrdswJx9koV IO8oPe3q7xk4
H9DbtxRtj6omoQMd00jETa0uDr+mXqU6/lvXZ2dtndxHv1b/p1KvInyFmryI cDiH+hvvUPH7
LbKRf70r+hG3Wb1//2LJz3ulaby3Jei6N5mucsDJpDTGGJxqLv8m9107u7+g i2zB3WELWr05
mB1ve31nKPXEt6vZmVgA3Quc2uA1cA/DUe5A7YVx6yd6TP5uFG/D8TGchg8k jzEIKdZxK+4u
C0jaK5jTfnrWnTtby5AMRjamYUk1hxQuDrhWdGzVG+u2ZxW3GYu5yYEjFsIV pQ06E5aW/qbk
oE1cN3JKubviNHchn2IJ2z27rHS1yEIwCNE8ygIXFEs5C7jAydhkH2KeV6AB hgDlzSBDyaYR
eqYx8yAMGE1waGJutftnMGQeJteTD74dfS6Xl54mnGrrYYNcA9Nugr/um+y5 +BgqadprD3Rr
aXFNo0wiRoVJJcX+DE0X0x/GoYx57ka521kazXFPxKjlQFRhiNFFuMnh5tXP SfeGL1+h2g1Y
i5LXHkk0qTcOcHCF07mJ95hvA8mWOw+dnl1+dIPr3uDuDRwaUra025sT3Oqf uv7cw5//AFBL
AQIUCxQAAAAIAMtraDf1M9tAjwAAAOgAAAAaAAAAAAAAAAEAIAAAAAAAAABz d3RTd2luZ1By
b2JsZW0vLmNsYXNzcGF0aFBLAQIUCxQAAAAIAMtraDfVzT0AxAAAAIcBAAAY AAAAAAAAAAEA
IAAAAMcAAABzd3RTd2luZ1Byb2JsZW0vLnByb2plY3RQSwECFAsKAAAAAADK a2g3AAAAAAAA
AAAAAAAAFAAAAAAAAAAAABAAAADBAQAAc3d0U3dpbmdQcm9ibGVtL2Jpbi9Q SwECFAsKAAAA
AAD6a2g3AAAAAAAAAAAAAAAAFAAAAAAAAAAAABAAAADzAQAAc3d0U3dpbmdQ cm9ibGVtL3Ny
Yy9QSwECFAsUAAAACAD0a2g3a7ovdjcDAABYCQAAJwAAAAAAAAABACAAAAAl AgAAc3d0U3dp
bmdQcm9ibGVtL3NyYy9waWNjb2xvV2l0aFNXVC5qYXZhUEsBAhQLCgAAAAAA 92toNwAAAAAA
AAAAAAAAACUAAAAAAAAAAAAQAAAAoQUAAHN3dFN3aW5nUHJvYmxlbS9zcmMv c3dpbmdpbnRl
Z3JhdGlvbi9QSwECFAsUAAAACADPSGc3CCmcjCcJAADiIQAAOwAAAAAAAAAB ACAAAADkBQAA
c3d0U3dpbmdQcm9ibGVtL3NyYy9zd2luZ2ludGVncmF0aW9uL0F3dERpYWxv Z0xpc3RlbmVy
LmphdmFQSwECFAsUAAAACADOSGc31dbazeoOAABbNQAAOAAAAAAAAAABACAA AABkDwAAc3d0
U3dpbmdQcm9ibGVtL3NyYy9zd2luZ2ludGVncmF0aW9uL0F3dEVudmlyb25t ZW50LmphdmFQ
SwECFAsUAAAACADNSGc3JsEomlkKAACFJQAAOQAAAAAAAAABACAAAACkHgAA c3d0U3dpbmdQ
cm9ibGVtL3NyYy9zd2luZ2ludGVncmF0aW9uL0F3dEZvY3VzSGFuZGxlci5q YXZhUEsBAhQL
FAAAAAgA1EhnN0iUS6nlAgAACwgAAD0AAAAAAAAAAQAgAAAAVCkAAHN3dFN3 aW5nUHJvYmxl
bS9zcmMvc3dpbmdpbnRlZ3JhdGlvbi9DbGVhblJlc2l6ZUxpc3RlbmVyLmph dmFQSwECFAsU
AAAACADXSGc3DDFDnF4EAAA0DwAASwAAAAAAAAABACAAAACULAAAc3d0U3dp bmdQcm9ibGVt
L3NyYy9zd2luZ2ludGVncmF0aW9uL0VtYmVkZGVkQ2hpbGRGb2N1c1RyYXZl cnNhbFBvbGlj
eS5qYXZhUEsBAhQLFAAAAAgA2khnN9+A3cWxFwAAtFIAAEAAAAAAAAAAAQAg AAAAWzEAAHN3
dFN3aW5nUHJvYmxlbS9zcmMvc3dpbmdpbnRlZ3JhdGlvbi9FbWJlZGRlZFN3 aW5nQ29tcG9z
aXRlLmphdmFQSwECFAsUAAAACADgSGc3keO5f6sBAADJAwAAMgAAAAAAAAAB ACAAAABqSQAA
c3d0U3dpbmdQcm9ibGVtL3NyYy9zd2luZ2ludGVncmF0aW9uL1BsYXRmb3Jt LmphdmFQSwEC
FAsUAAAACADjSGc3i/H+K0ADAABmDgAARAAAAAAAAAABACAAAABlSwAAc3d0 U3dpbmdQcm9i
bGVtL3NyYy9zd2luZ2ludGVncmF0aW9uL1JlY3Vyc2l2ZUNvbnRhaW5lckxp c3RlbmVyLmph
dmFQSwECFAsUAAAACADnSGc3ikpHgLUGAABJFgAAOQAAAAAAAAABACAAAAAH TwAAc3d0U3dp
bmdQcm9ibGVtL3NyYy9zd2luZ2ludGVncmF0aW9uL1N3dEZvY3VzSGFuZGxl ci5qYXZhUEsB
AhQLFAAAAAgA6khnN4P3RcyMBQAA6Q8AADkAAAAAAAAAAQAgAAAAE1YAAHN3 dFN3aW5nUHJv
YmxlbS9zcmMvc3dpbmdpbnRlZ3JhdGlvbi9Td3RJbnB1dEJsb2NrZXIuamF2 YVBLBQYAAAAA
EAAQAOIFAAD2WwAAAAA=
--------------040206060602040709030109--
Re: Will there be a fix for ... [message #573478 is a reply to message #4833] Sat, 10 November 2007 22:47 Go to previous message
Gordon Hirsch is currently offline Gordon HirschFriend
Messages: 100
Registered: July 2009
Senior Member
Hi Chris,

The problem you are seeing is because JOptionPane.showInputDialog is
being called from a thread other than the AWT event thread. In this
case, you are making the call instead from the SWT event thread. (Since
the main menu is an SWT menu, the listener is called by SWT from within
its event handling loop.)

To avoid deadlocks and other problems, it's important that most calls to
the AWT/Swing APIs be made from within the AWT event thread. This is
actually a general rule, not just for the case of mixing SWT and Swing.
It's called the single-thread rule. More info:
http://java.sun.com/products/jfc/tsc/articles/threads/thread s1.html

(SWT also has this rule and enforces it much more strictly.)

To solve the problem, you just need to transfer control to the AWT event
thread and show the dialog from there. Since you're using article code,
the easiest way to do this, is to change the tryme() method to:

public void tryMe(){
AwtEnvironment.getInstance(display).invokeAndBlockSwt(new Runnable() {
public void run() {
JOptionPane.showInputDialog("after");
}
});
}

You can also use AWT APIs directly:

public void tryMe(){
EventQueue.invokeLater(new Runnable() {
public void run() {
JOptionPane.showInputDialog("after");
}
});}

However, this code does not block SWT during the brief period between
the call to invokeLater and the eventual call to showInputDialog on the
AWT thread. So the first example is preferable.

Cklewis wrote:
> Here is the example (attached),
>
> click on 'file' -> 'try me' to get the 2nd JOptionPane to come up...
> this way the gui and embedded swing composite are already loaded when it
> comes up.
>
> You also need the piccolo library to get this project to work.
> downloadable at:
> http://www.cs.umd.edu/hcil/jazz/download/piccolo/piccolo-1.2 .zip
>
> you can add the piccolo jars or put the piccolo portion as a project and
> link via a buildpath.
>
> Gordon Hirsch wrote:
>> If you make your example available, I can take a look. There's no
>> specific problem that I know of with JOptionPane, and I have
>> successfully used JOptionPane dialogs in the past.
>>
>> Cklewis wrote:
>>> I just wrote a seperate program to test if the error was still
>>> happening and it is.
>>>
>>> Here is exactly what i'm doing.
>>>
>>> 1)Create a Shell, set layout etc
>>> 2)Try JOptionPane.showInputDialog (works fine)
>>> 3)Create swing component (a piccolo "canvas", which is an extended
>>> JComponent)
>>> 4)Add my EmbeddedSwingComposite
>>> 5)Let the GUI load
>>> 6)Click on "file" menu and click on an item I have preset with an
>>> action lisener to call a function that loads another
>>> JOptionPane.showInputDialog
>>>
>>> The result is the first JoptionPane is fine, but the second one
>>> freezes the entire program as soon as I click a button.
>>>
>>> If you would like, I could upload the project so you can try it. It's
>>> just one file along with the folder with all the swing integration
>>> stuff from Gordon's example.
>>>
>>> James Peltzer wrote:
>>>> You may need to provide a little more information. I know that I have
>>>> successfully used JOptionPane and JDialogs both before and after
>>>> creating
>>>> EmbeddedSwingComposites. The code I am working from is modified from
>>>> Gordon's original article code.
>>>>
>>>> Originally I was often having this problem when an invisible dialog was
>>>> added to the SwtInputBlocker... but I believe the fix for that one
>>>> has since
>>>> been applied to the sample code.
>>>>
>>>> I would also suspect that you are getting pop-under windows (your swing
>>>> window could be trapped behind your SWT Window) but it is hard to
>>>> say. You
>>>> could also try the changes Gordon and I discuss in the September
>>>> 19th post
>>>> to this group.
>>>>
>>>> In short, I would hazard a guess that compatibility issues such as
>>>> this are
>>>> vital to the project and will eventually be worked out.
>>>>
>>>> -James
>>>>
>>>> "Cklewis" <chriskwonlewis@msn.com> wrote in message
>>>> news:fgg8p4$5ko$1@build.eclipse.org...
>>>>> Will there be a fix for letting you use JOptionPane and
>>>>> JDialogs(etc) ?
>>>>>
>>>>> I noticed if I use JOptionPane BEFORE creating my
>>>>> EmbeddedSwingComposite
>>>>> it works just fine. But if I attempt to use JOptionPane or a JDialog
>>>>> after I've created the EmbeddedSwingComposite that it will display,
>>>>> but
>>>>> it tends to freeze the whole program.
>>>>>
>>>>> Not sure if you were aware of this problem, but it would be nice to be
>>>>> able to use JOptionPane, and in my case a JDialog since the person
>>>>> before me wrote a lot of code for that particular section which uses a
>>>>> JDialog and JTrees. Initially i thought the problem was setting the
>>>>> JDialog's frame owner to the awt frame in EmbeddedSwingComposite.
>>>>> But I
>>>>> experimented with a regular JOptionPane(doesn't ask for the parent
>>>>> component/frame) and noticed the same problem.
>>>>
>>>>
>
Re: Will there be a fix for ... [message #573504 is a reply to message #4904] Tue, 13 November 2007 18:39 Go to previous message
Chris Kwon Lewis is currently offline Chris Kwon LewisFriend
Messages: 24
Registered: July 2009
Junior Member
That worked perfectly. I was a bit confused because the JOptionPane
seemed to work if there wasn't an embedded swing composite in there. I
remember your tutorial mentioning things about using different threads
for different things, but I wasn't sure in which cases to exactly use them.

This also fixed a delay problem I had in my program when I was scaling
after I strictly used the AWT thread for that part. I'm a bit confused
though because I don't make the AWT thread draw on the swing canvas, but
the performance seems to still be good and no type of invalid thread
access or other errors.

Thanks again for your help and insight.

Gordon Hirsch wrote:
> Hi Chris,
>
> The problem you are seeing is because JOptionPane.showInputDialog is
> being called from a thread other than the AWT event thread. In this
> case, you are making the call instead from the SWT event thread. (Since
> the main menu is an SWT menu, the listener is called by SWT from within
> its event handling loop.)
>
> To avoid deadlocks and other problems, it's important that most calls to
> the AWT/Swing APIs be made from within the AWT event thread. This is
> actually a general rule, not just for the case of mixing SWT and Swing.
> It's called the single-thread rule. More info:
> http://java.sun.com/products/jfc/tsc/articles/threads/thread s1.html
>
> (SWT also has this rule and enforces it much more strictly.)
>
> To solve the problem, you just need to transfer control to the AWT event
> thread and show the dialog from there. Since you're using article code,
> the easiest way to do this, is to change the tryme() method to:
>
> public void tryMe(){
> AwtEnvironment.getInstance(display).invokeAndBlockSwt(new
> Runnable() {
> public void run() {
> JOptionPane.showInputDialog("after");
> }
> });
> }
>
> You can also use AWT APIs directly:
>
> public void tryMe(){
> EventQueue.invokeLater(new Runnable() {
> public void run() {
> JOptionPane.showInputDialog("after");
> }
> });}
>
> However, this code does not block SWT during the brief period between
> the call to invokeLater and the eventual call to showInputDialog on the
> AWT thread. So the first example is preferable.
>
> Cklewis wrote:
>> Here is the example (attached),
>>
>> click on 'file' -> 'try me' to get the 2nd JOptionPane to come up...
>> this way the gui and embedded swing composite are already loaded when
>> it comes up.
>>
>> You also need the piccolo library to get this project to work.
>> downloadable at:
>> http://www.cs.umd.edu/hcil/jazz/download/piccolo/piccolo-1.2 .zip
>>
>> you can add the piccolo jars or put the piccolo portion as a project
>> and link via a buildpath.
>>
>> Gordon Hirsch wrote:
>>> If you make your example available, I can take a look. There's no
>>> specific problem that I know of with JOptionPane, and I have
>>> successfully used JOptionPane dialogs in the past.
>>>
>>> Cklewis wrote:
>>>> I just wrote a seperate program to test if the error was still
>>>> happening and it is.
>>>>
>>>> Here is exactly what i'm doing.
>>>>
>>>> 1)Create a Shell, set layout etc
>>>> 2)Try JOptionPane.showInputDialog (works fine)
>>>> 3)Create swing component (a piccolo "canvas", which is an extended
>>>> JComponent)
>>>> 4)Add my EmbeddedSwingComposite
>>>> 5)Let the GUI load
>>>> 6)Click on "file" menu and click on an item I have preset with an
>>>> action lisener to call a function that loads another
>>>> JOptionPane.showInputDialog
>>>>
>>>> The result is the first JoptionPane is fine, but the second one
>>>> freezes the entire program as soon as I click a button.
>>>>
>>>> If you would like, I could upload the project so you can try it.
>>>> It's just one file along with the folder with all the swing
>>>> integration stuff from Gordon's example.
>>>>
>>>> James Peltzer wrote:
>>>>> You may need to provide a little more information. I know that I have
>>>>> successfully used JOptionPane and JDialogs both before and after
>>>>> creating
>>>>> EmbeddedSwingComposites. The code I am working from is modified from
>>>>> Gordon's original article code.
>>>>>
>>>>> Originally I was often having this problem when an invisible dialog
>>>>> was
>>>>> added to the SwtInputBlocker... but I believe the fix for that one
>>>>> has since
>>>>> been applied to the sample code.
>>>>>
>>>>> I would also suspect that you are getting pop-under windows (your
>>>>> swing
>>>>> window could be trapped behind your SWT Window) but it is hard to
>>>>> say. You
>>>>> could also try the changes Gordon and I discuss in the September
>>>>> 19th post
>>>>> to this group.
>>>>>
>>>>> In short, I would hazard a guess that compatibility issues such as
>>>>> this are
>>>>> vital to the project and will eventually be worked out.
>>>>>
>>>>> -James
>>>>>
>>>>> "Cklewis" <chriskwonlewis@msn.com> wrote in message
>>>>> news:fgg8p4$5ko$1@build.eclipse.org...
>>>>>> Will there be a fix for letting you use JOptionPane and
>>>>>> JDialogs(etc) ?
>>>>>>
>>>>>> I noticed if I use JOptionPane BEFORE creating my
>>>>>> EmbeddedSwingComposite
>>>>>> it works just fine. But if I attempt to use JOptionPane or a JDialog
>>>>>> after I've created the EmbeddedSwingComposite that it will
>>>>>> display, but
>>>>>> it tends to freeze the whole program.
>>>>>>
>>>>>> Not sure if you were aware of this problem, but it would be nice
>>>>>> to be
>>>>>> able to use JOptionPane, and in my case a JDialog since the person
>>>>>> before me wrote a lot of code for that particular section which
>>>>>> uses a
>>>>>> JDialog and JTrees. Initially i thought the problem was setting the
>>>>>> JDialog's frame owner to the awt frame in EmbeddedSwingComposite.
>>>>>> But I
>>>>>> experimented with a regular JOptionPane(doesn't ask for the parent
>>>>>> component/frame) and noticed the same problem.
>>>>>
>>>>>
>>
Previous Topic:Will there be a fix for ...
Next Topic:Timeline on Project Provisioning?
Goto Forum:
  


Current Time: Tue Apr 16 19:58:07 GMT 2024

Powered by FUDForum. Page generated in 0.14272 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top