Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » EMF » CDO: Reflective Feature Delegation required - but how to invoke not generated code?
CDO: Reflective Feature Delegation required - but how to invoke not generated code? [message #423314] Sat, 27 September 2008 12:02 Go to next message
Ralf Buschermoehle is currently offline Ralf BuschermoehleFriend
Messages: 27
Registered: July 2009
Junior Member
Hello,

we previously did not use the Feature Delegation ('none') and
implemented directly the code into the corresponding implementation
classes - if required.

I now played a little bit around with CDO (simply great) and would like
to use it to "distribute" our models. But when I change the feature
delegation our implementation is not longer working ... since it's no
longer called.

How can I use CDO (or Feature Delegation 'Reflective') and use our
implementation?


Greetings,

Ralf
Re: CDO: Reflective Feature Delegation required - but how to invoke not generated code? [message #423315 is a reply to message #423314] Sat, 27 September 2008 12:10 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 30804
Registered: July 2009
Senior Member
Ralf,

It sounds like you specialized some of the getters and setters and using
reflective delegation bypasses that. In EMF 2.5 we added a new pattern
called "Dynamic". With this pattern, the reflective methods like eGet
still call your generated method like getX() and then that calls the
dymamic reflective method like eDynamicGet. It effectively produces the
same behavior as "Refective" delegating but does so by delegating
through your generated accessors allowing you to specialize those as you
could when you used "None"...


Ralf Buschermoehle wrote:
> Hello,
>
> we previously did not use the Feature Delegation ('none') and
> implemented directly the code into the corresponding implementation
> classes - if required.
>
> I now played a little bit around with CDO (simply great) and would
> like to use it to "distribute" our models. But when I change the
> feature delegation our implementation is not longer working ... since
> it's no longer called.
>
> How can I use CDO (or Feature Delegation 'Reflective') and use our
> implementation?
>
>
> Greetings,
>
> Ralf
Re: CDO: Reflective Feature Delegation required - but how to invoke not generated code? [message #423316 is a reply to message #423314] Sat, 27 September 2008 13:28 Go to previous messageGo to next message
Eike Stepper is currently offline Eike StepperFriend
Messages: 6464
Registered: July 2009
Senior Member
Hi Ralf,

I even didn't know about "dynamic" feature delegation. I'm curious
whether this solves your problem.

Just in case that not, I'd need some more info about problem you're
experiencing. What exactly does not work with your models?
Have you followed the docs:
http://wiki.eclipse.org/Preparing_EMF_Models_for_CDO ?

Cheers
/Eike



Ralf Buschermoehle schrieb:
> Hello,
>
> we previously did not use the Feature Delegation ('none') and
> implemented directly the code into the corresponding implementation
> classes - if required.
>
> I now played a little bit around with CDO (simply great) and would
> like to use it to "distribute" our models. But when I change the
> feature delegation our implementation is not longer working ... since
> it's no longer called.
>
> How can I use CDO (or Feature Delegation 'Reflective') and use our
> implementation?
>
>
> Greetings,
>
> Ralf


Re: CDO: Reflective Feature Delegation required - but how to invoke not generated code? [message #423319 is a reply to message #423315] Sat, 27 September 2008 13:59 Go to previous messageGo to next message
Ralf Buschermoehle is currently offline Ralf BuschermoehleFriend
Messages: 27
Registered: July 2009
Junior Member
Hi Ed,

thanks for your (fast!) feedback, please find my reply inline:

Ed Merks wrote:

> It sounds like you specialized some of the getters and setters and using
> reflective delegation bypasses that.

Exactly.

> In EMF 2.5 we added a new pattern
> called "Dynamic". With this pattern, the reflective methods like eGet
> still call your generated method like getX() and then that calls the
> dymamic reflective method like eDynamicGet. It effectively produces the
> same behavior as "Refective" delegating but does so by delegating
> through your generated accessors allowing you to specialize those as you
> could when you used "None"...

That should solve the problem. :) But since 2.5 will be available with
the next Eclipse Release 3.5 I assume it will take some more time and I
don't want to run into other problems right now (the editors work fine
now ;).

Any suggestions for a good starting point for a "workaround"?

Greetings,

Ralf

> Ralf Buschermoehle wrote:
>> Hello,
>>
>> we previously did not use the Feature Delegation ('none') and
>> implemented directly the code into the corresponding implementation
>> classes - if required.
>>
>> I now played a little bit around with CDO (simply great) and would
>> like to use it to "distribute" our models. But when I change the
>> feature delegation our implementation is not longer working ... since
>> it's no longer called.
>>
>> How can I use CDO (or Feature Delegation 'Reflective') and use our
>> implementation?
>>
>>
>> Greetings,
>>
>> Ralf
Re: CDO: Reflective Feature Delegation required - but how to invoke not generated code? [message #423320 is a reply to message #423316] Sat, 27 September 2008 14:29 Go to previous messageGo to next message
Ralf Buschermoehle is currently offline Ralf BuschermoehleFriend
Messages: 27
Registered: July 2009
Junior Member
Hi Eike,

thanks for your answer!

I followed the doc: http://wiki.eclipse.org/Preparing_EMF_Models_for_CDO
and section "Migrate your GenModel Manually" advised me to
"The Feature Delegation property must be set to Reflective". When I do
this our implementation (specialized setters) are not called any more.

Greetings,

Ralf

Eike Stepper wrote:
> Hi Ralf,
>
> I even didn't know about "dynamic" feature delegation. I'm curious
> whether this solves your problem.
>
> Just in case that not, I'd need some more info about problem you're
> experiencing. What exactly does not work with your models?
> Have you followed the docs:
> http://wiki.eclipse.org/Preparing_EMF_Models_for_CDO ?
>
> Cheers
> /Eike
>
>
>
> Ralf Buschermoehle schrieb:
>> Hello,
>>
>> we previously did not use the Feature Delegation ('none') and
>> implemented directly the code into the corresponding implementation
>> classes - if required.
>>
>> I now played a little bit around with CDO (simply great) and would
>> like to use it to "distribute" our models. But when I change the
>> feature delegation our implementation is not longer working ... since
>> it's no longer called.
>>
>> How can I use CDO (or Feature Delegation 'Reflective') and use our
>> implementation?
>>
>>
>> Greetings,
>>
>> Ralf
Re: CDO: Reflective Feature Delegation required - but how to invoke not generated code? [message #423322 is a reply to message #423319] Sat, 27 September 2008 14:58 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 30804
Registered: July 2009
Senior Member
Ralf,

The code produced by EMF 2.5 should work fine with EMF 2.4. So you
might want to set up a little development environment with the M2 builds
of Eclipse and EMF, use that for doing code generation (just link in the
project from your main development workspace), and then doing the rest
of your development with 2.4...

The alternatives aren't so pretty. I would involve specializing
eGet/eSet directly, which would get pretty messy hence the reason for
adding the new pattern. It was done at the request of Sandro for the
JCRM component of EMFT but it applies very nicely for SDO as well (I think).



Ralf Buschermoehle wrote:
> Hi Ed,
>
> thanks for your (fast!) feedback, please find my reply inline:
>
> Ed Merks wrote:
>
>> It sounds like you specialized some of the getters and setters and
>> using reflective delegation bypasses that.
>
> Exactly.
>
>> In EMF 2.5 we added a new pattern called "Dynamic". With this
>> pattern, the reflective methods like eGet still call your generated
>> method like getX() and then that calls the dymamic reflective method
>> like eDynamicGet. It effectively produces the same behavior as
>> "Refective" delegating but does so by delegating through your
>> generated accessors allowing you to specialize those as you could
>> when you used "None"...
>
> That should solve the problem. :) But since 2.5 will be available with
> the next Eclipse Release 3.5 I assume it will take some more time and
> I don't want to run into other problems right now (the editors work
> fine now ;).
>
> Any suggestions for a good starting point for a "workaround"?
>
> Greetings,
>
> Ralf
>
>> Ralf Buschermoehle wrote:
>>> Hello,
>>>
>>> we previously did not use the Feature Delegation ('none') and
>>> implemented directly the code into the corresponding implementation
>>> classes - if required.
>>>
>>> I now played a little bit around with CDO (simply great) and would
>>> like to use it to "distribute" our models. But when I change the
>>> feature delegation our implementation is not longer working ...
>>> since it's no longer called.
>>>
>>> How can I use CDO (or Feature Delegation 'Reflective') and use our
>>> implementation?
>>>
>>>
>>> Greetings,
>>>
>>> Ralf
Re: CDO: Reflective Feature Delegation required - but how to invoke not generated code? [message #423323 is a reply to message #423316] Sat, 27 September 2008 14:59 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 30804
Registered: July 2009
Senior Member
Eike,

EMF is just full of surprises. That's because I do such an excellent
job marketing all the cool new things. NOT! :-P


Eike Stepper wrote:
> Hi Ralf,
>
> I even didn't know about "dynamic" feature delegation. I'm curious
> whether this solves your problem.
>
> Just in case that not, I'd need some more info about problem you're
> experiencing. What exactly does not work with your models?
> Have you followed the docs:
> http://wiki.eclipse.org/Preparing_EMF_Models_for_CDO ?
>
> Cheers
> /Eike
>
>
>
> Ralf Buschermoehle schrieb:
>> Hello,
>>
>> we previously did not use the Feature Delegation ('none') and
>> implemented directly the code into the corresponding implementation
>> classes - if required.
>>
>> I now played a little bit around with CDO (simply great) and would
>> like to use it to "distribute" our models. But when I change the
>> feature delegation our implementation is not longer working ... since
>> it's no longer called.
>>
>> How can I use CDO (or Feature Delegation 'Reflective') and use our
>> implementation?
>>
>>
>> Greetings,
>>
>> Ralf
Re: CDO: Reflective Feature Delegation required - but how to invoke not generated code? [message #423343 is a reply to message #423322] Mon, 29 September 2008 10:27 Go to previous messageGo to next message
Ralf Buschermoehle is currently offline Ralf BuschermoehleFriend
Messages: 27
Registered: July 2009
Junior Member
Hi Ed,

Ed Merks wrote:
> The code produced by EMF 2.5 should work fine with EMF 2.4. So you
> might want to set up a little development environment with the M2 builds
> of Eclipse and EMF, use that for doing code generation (just link in the
> project from your main development workspace), and then doing the rest
> of your development with 2.4...

Ok, the current EMF 2.5M2 points to integration build

http://www.eclipse.org/modeling/download.php?file=/eclipse/d ownloads/drops/I20080903-1200/eclipse-SDK-I20080903-1200-lin ux-gtk.tar.gz

where the link is invalid(?) I tried to 'dropin'

http://www.eclipse.org/modeling/download.php?file=/modeling/ emf/emf/downloads/drops/2.5.0/S200809231800/emf-sdo-xsd-SDK- 2.5.0M2.zip

in

http://download.eclipse.org/eclipse/downloads/drops/S-3.5M2- 200809180100/index.php

But it does not show up under plugins ... ? (All Windows Platform).

Do I need exactly this integration build or is the milestone ok but I am
too stupid to get it running?

Greetings,

Ralf
Re: CDO: Reflective Feature Delegation required - but how to invoke not generated code? [message #423349 is a reply to message #423343] Mon, 29 September 2008 11:49 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 30804
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------090101040207090400010205
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Ralf,

Comments below.

Ralf Buschermoehle wrote:
> Hi Ed,
>
> Ed Merks wrote:
>> The code produced by EMF 2.5 should work fine with EMF 2.4. So you
>> might want to set up a little development environment with the M2
>> builds of Eclipse and EMF, use that for doing code generation (just
>> link in the project from your main development workspace), and then
>> doing the rest of your development with 2.4...
>
> Ok, the current EMF 2.5M2 points to integration build
>
> http://www.eclipse.org/modeling/download.php?file=/eclipse/d ownloads/drops/I20080903-1200/eclipse-SDK-I20080903-1200-lin ux-gtk.tar.gz
>
>
> where the link is invalid(?) I tried to 'dropin'
>
> http://www.eclipse.org/modeling/download.php?file=/modeling/ emf/emf/downloads/drops/2.5.0/S200809231800/emf-sdo-xsd-SDK- 2.5.0M2.zip
>
>
> in
>
> http://download.eclipse.org/eclipse/downloads/drops/S-3.5M2- 200809180100/index.php
>
>
> But it does not show up under plugins ... ? (All Windows Platform).
>
> Do I need exactly this integration build or is the milestone ok but I
> am too stupid to get it running?
Unfortunately the builds we use are sometimes renamed. EMF requires
only the platform, and you can get their builds here:

http://download.eclipse.org/eclipse/downloads/

The 3.5M2 build should work well.
>
> Greetings,
>
> Ralf

--------------090101040207090400010205
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Ralf,<br>
<br>
Comments below.<br>
<br>
Ralf Buschermoehle wrote:
<blockquote cite="mid:gbqaj1$9e1$1@build.eclipse.org" type="cite">Hi
Ed,
<br>
<br>
Ed Merks wrote:
<br>
<blockquote type="cite">The code produced by EMF 2.5 should work fine
with EMF 2.4.&nbsp; So you might want to set up a little development
environment with the M2 builds of Eclipse and EMF, use that for doing
code generation (just link in the project from your main development
workspace), and then doing the rest of your development with 2.4...
<br>
</blockquote>
<br>
Ok, the current EMF 2.5M2 points to integration build
<br>
<br>
<a class="moz-txt-link-freetext" href=" http://www.eclipse.org/modeling/download.php?file=/eclipse/d ownloads/drops/I20080903-1200/eclipse-SDK-I20080903-1200-lin ux-gtk.tar.gz"> http://www.eclipse.org/modeling/download.php?file=/eclipse/d ownloads/drops/I20080903-1200/eclipse-SDK-I20080903-1200-lin ux-gtk.tar.gz</a>
<br>
<br>
where the link is invalid(?) I tried to 'dropin'
<br>
<br>
<a class="moz-txt-link-freetext" href=" http://www.eclipse.org/modeling/download.php?file=/modeling/ emf/emf/downloads/drops/2.5.0/S200809231800/emf-sdo-xsd-SDK- 2.5.0M2.zip"> http://www.eclipse.org/modeling/download.php?file=/modeling/ emf/emf/downloads/drops/2.5.0/S200809231800/emf-sdo-xsd-SDK- 2.5.0M2.zip</a>
<br>
<br>
in
<br>
<br>
<a class="moz-txt-link-freetext" href=" http://download.eclipse.org/eclipse/downloads/drops/S-3.5M2- 200809180100/index.php"> http://download.eclipse.org/eclipse/downloads/drops/S-3.5M2- 200809180100/index.php</a>
<br>
<br>
But it does not show up under plugins ... ? (All Windows Platform).
<br>
<br>
Do I need exactly this integration build or is the milestone ok but I
am too stupid to get it running?
<br>
</blockquote>
Unfortunately the builds we use are sometimes renamed.&nbsp; EMF requires
only the platform, and you can get their builds here:<br>
<blockquote><a href="http://download.eclipse.org/eclipse/downloads/">http://download.eclipse.org/eclipse/downloads/</a><br>
</blockquote>
The 3.5M2 build should work well.<br>
<blockquote cite="mid:gbqaj1$9e1$1@build.eclipse.org" type="cite"><br>
Greetings,
<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Ralf
<br>
</blockquote>
</body>
</html>

--------------090101040207090400010205--
Re: CDO: Reflective Feature Delegation required - but how to invoke not generated code? [message #423352 is a reply to message #423320] Mon, 29 September 2008 12:10 Go to previous messageGo to next message
Eike Stepper is currently offline Eike StepperFriend
Messages: 6464
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------020404090303060006090907
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Ralf Buschermoehle schrieb:
> Hi Eike,
>
> thanks for your answer!
>
> I followed the doc:
> http://wiki.eclipse.org/Preparing_EMF_Models_for_CDO and section
> "Migrate your GenModel Manually" advised me to
> "The Feature Delegation property must be set to Reflective". When I do
> this our implementation (specialized setters) are not called any more.
I have added this to the end of the wiki page:

*Important note:* If you want to modify the behaviour of generated
getters and setters (or have already done so in existing models) you
might want to try /dynamic feature delegation/ (introduced in EMF 2.5).
With this pattern, the reflective methods like eGet still call your
generated method like getX() and then that calls the dymamic reflective
method like eDynamicGet. It effectively produces the same behavior as
"Refective" delegating but does so by delegating through your generated
accessors allowing you to specialize those as you could when you used
"None"...

(Although I have not tested it yet)

Cheers
/Eike

>
> Greetings,
>
> Ralf
>
> Eike Stepper wrote:
>> Hi Ralf,
>>
>> I even didn't know about "dynamic" feature delegation. I'm curious
>> whether this solves your problem.
>>
>> Just in case that not, I'd need some more info about problem you're
>> experiencing. What exactly does not work with your models?
>> Have you followed the docs:
>> http://wiki.eclipse.org/Preparing_EMF_Models_for_CDO ?
>>
>> Cheers
>> /Eike
>>
>>
>>
>> Ralf Buschermoehle schrieb:
>>> Hello,
>>>
>>> we previously did not use the Feature Delegation ('none') and
>>> implemented directly the code into the corresponding implementation
>>> classes - if required.
>>>
>>> I now played a little bit around with CDO (simply great) and would
>>> like to use it to "distribute" our models. But when I change the
>>> feature delegation our implementation is not longer working ...
>>> since it's no longer called.
>>>
>>> How can I use CDO (or Feature Delegation 'Reflective') and use our
>>> implementation?
>>>
>>>
>>> Greetings,
>>>
>>> Ralf

--------------020404090303060006090907
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Ralf Buschermoehle schrieb:
<blockquote cite="mid:gblg18$h3o$1@build.eclipse.org" type="cite">Hi
Eike,
<br>
<br>
thanks for your answer!
<br>
<br>
I followed the doc:
<a class="moz-txt-link-freetext" href="http://wiki.eclipse.org/Preparing_EMF_Models_for_CDO">http://wiki.eclipse.org/Preparing_EMF_Models_for_CDO</a> and section
"Migrate your GenModel Manually" advised me to
<br>
"The Feature Delegation property must be set to Reflective". When I do
this our implementation (specialized setters) are not called any more.
<br>
</blockquote>
I have added this to the end of the wiki page:<br>
<br>
<b>Important note:</b> If you want to modify the behaviour of generated
getters and setters (or have already done so in existing models) you
might want to try <i>dynamic feature delegation</i> (introduced in EMF
2.5). With this pattern, the reflective methods like eGet still call
your generated method like getX() and then that calls the dymamic
reflective method like eDynamicGet. It effectively produces the same
behavior as "Refective" delegating but does so by delegating through
your generated accessors allowing you to specialize those as you could
when you used "None"...
<br>
<br>
(Although I have not tested it yet)<br>
<br>
Cheers<br>
/Eike<br>
<br>
<blockquote cite="mid:gblg18$h3o$1@build.eclipse.org" type="cite"><br>
Greetings,
<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Ralf
<br>
<br>
Eike Stepper wrote:
<br>
<blockquote type="cite">Hi Ralf,
<br>
<br>
I even didn't know about "dynamic" feature delegation. I'm curious
whether this solves your problem.
<br>
<br>
Just in case that not, I'd need some more info about problem you're
experiencing. What exactly does not work with your models?
<br>
Have you followed the docs:
<a class="moz-txt-link-freetext" href="http://wiki.eclipse.org/Preparing_EMF_Models_for_CDO">http://wiki.eclipse.org/Preparing_EMF_Models_for_CDO</a> ?
<br>
<br>
Cheers
<br>
/Eike
<br>
<br>
<br>
<br>
Ralf Buschermoehle schrieb:
<br>
<blockquote type="cite">Hello,
<br>
<br>
we previously did not use the Feature Delegation ('none') and
implemented directly the code into the corresponding implementation
classes - if required.
<br>
<br>
I now played a little bit around with CDO (simply great) and would like
to use it to "distribute" our models. But when I change the feature
delegation our implementation is not longer working ... since it's no
longer called.
<br>
<br>
How can I use CDO (or Feature Delegation 'Reflective') and use our
implementation?
<br>
<br>
<br>
Greetings,
<br>
<br>
&nbsp;&nbsp;&nbsp; Ralf
<br>
</blockquote>
</blockquote>
</blockquote>
</body>
</html>

--------------020404090303060006090907--


Re: CDO: Reflective Feature Delegation required - but how to invoke not generated code? [message #423359 is a reply to message #423349] Mon, 29 September 2008 13:50 Go to previous messageGo to next message
Ralf Buschermoehle is currently offline Ralf BuschermoehleFriend
Messages: 27
Registered: July 2009
Junior Member
Hi Ed,

Thanks for the fast reply :) ... please see my comments below ...

Ed Merks wrote:

>>> The code produced by EMF 2.5 should work fine with EMF 2.4. So you
>>> might want to set up a little development environment with the M2
>>> builds of Eclipse and EMF, use that for doing code generation (just
>>> link in the project from your main development workspace), and then
>>> doing the rest of your development with 2.4...
>>
>> Ok, the current EMF 2.5M2 points to integration build
>> http://www.eclipse.org/modeling/download.php?file=/eclipse/d ownloads/drops/I20080903-1200/eclipse-SDK-I20080903-1200-lin ux-gtk.tar.gz
>> where the link is invalid(?) I tried to 'dropin'
>> http://www.eclipse.org/modeling/download.php?file=/modeling/ emf/emf/downloads/drops/2.5.0/S200809231800/emf-sdo-xsd-SDK- 2.5.0M2.zip
>> in http://download.eclipse.org/eclipse/downloads/drops/S-3.5M2- 200809180100/index.php
>>
>> But it does not show up under plugins ... ? (All Windows Platform).
>>
>> Do I need exactly this integration build or is the milestone ok but I
>> am too stupid to get it running?
> Unfortunately the builds we use are sometimes renamed. EMF requires
> only the platform, and you can get their builds here:
>
> http://download.eclipse.org/eclipse/downloads/
>
> The 3.5M2 build should work well.

Seems that the dropin mechanism gets confused when also zips are part of
the folder (but it does not complain in the log - well - now it works :)).

After changing the 'Delegation Feature' to 'Dynamic' I got several
"org.eclipse.emf.ecore.xmi.IllegalValueException: Value 'Boolean' is not
legal. (platform:/resource/rmofReflective/reflectiveRMOF.rmof, 3, 25)"
Pointing to e.g., "java.lang.ArrayIndexOutOfBoundsException: 3".

The classes range from really simple <clazz name="Boolean"/>
to really complex ones - thus I wasn't able to determine an error pattern.

The corresponding ecore file says something like

<eClassifiers xsi:type="ecore:EClass" name="Class"
eSuperTypes="#//Classifier">
<eStructuralFeatures .../>
...
</eClassifiers>

Inheriting from something defining the name attribute

<eClassifiers xsi:type="ecore:EClass" name="NamedElement"
abstract="true" eSuperTypes="#//Element">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="name"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
...
</eClassifiers>

Nevertheless it was fine in EMF 2.4?

Greetings,

Ralf
Re: CDO: Reflective Feature Delegation required - but how to invoke not generated code? [message #423377 is a reply to message #423359] Mon, 29 September 2008 16:13 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 30804
Registered: July 2009
Senior Member
Ralf ,

Comments below.

Ralf Buschermoehle wrote:
> Hi Ed,
>
> Thanks for the fast reply :) ... please see my comments below ...
>
> Ed Merks wrote:
>
>>>> The code produced by EMF 2.5 should work fine with EMF 2.4. So you
>>>> might want to set up a little development environment with the M2
>>>> builds of Eclipse and EMF, use that for doing code generation (just
>>>> link in the project from your main development workspace), and then
>>>> doing the rest of your development with 2.4...
>>>
>>> Ok, the current EMF 2.5M2 points to integration build
>>> http://www.eclipse.org/modeling/download.php?file=/eclipse/d ownloads/drops/I20080903-1200/eclipse-SDK-I20080903-1200-lin ux-gtk.tar.gz
>>> where the link is invalid(?) I tried to 'dropin'
>>> http://www.eclipse.org/modeling/download.php?file=/modeling/ emf/emf/downloads/drops/2.5.0/S200809231800/emf-sdo-xsd-SDK- 2.5.0M2.zip
>>> in
>>> http://download.eclipse.org/eclipse/downloads/drops/S-3.5M2- 200809180100/index.php
>>>
>>> But it does not show up under plugins ... ? (All Windows Platform).
>>>
>>> Do I need exactly this integration build or is the milestone ok but
>>> I am too stupid to get it running?
>> Unfortunately the builds we use are sometimes renamed. EMF requires
>> only the platform, and you can get their builds here:
>>
>> http://download.eclipse.org/eclipse/downloads/
>>
>> The 3.5M2 build should work well.
>
> Seems that the dropin mechanism gets confused when also zips are part
> of the folder (but it does not complain in the log - well - now it
> works :)).
>
> After changing the 'Delegation Feature' to 'Dynamic' I got several
> "org.eclipse.emf.ecore.xmi.IllegalValueException: Value 'Boolean' is
> not legal. (platform:/resource/rmofReflective/reflectiveRMOF.rmof, 3,
> 25)"
> Pointing to e.g., "java.lang.ArrayIndexOutOfBoundsException: 3".
It's possible there's a bug. It's not like lots of people have tried
using it.
>
> The classes range from really simple <clazz name="Boolean"/>
> to really complex ones - thus I wasn't able to determine an error
> pattern.
>
> The corresponding ecore file says something like
>
> <eClassifiers xsi:type="ecore:EClass" name="Class"
> eSuperTypes="#//Classifier">
> <eStructuralFeatures .../>
> ...
> </eClassifiers>
You're extending Ecore? You know you're advised not to do that, right?
>
> Inheriting from something defining the name attribute
>
> <eClassifiers xsi:type="ecore:EClass" name="NamedElement"
> abstract="true" eSuperTypes="#//Element">
> <eStructuralFeatures xsi:type="ecore:EAttribute" name="name"
> eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
> ...
> </eClassifiers>
>
> Nevertheless it was fine in EMF 2.4?
I never tried it when extending a base model that already contained
features. The generated eStaticFeatureCount method is generated to
return 0 which wouldn't be right if you extend a generated base
class... You didn't have this problem with just the reflective
delegating? (I would have guessed it would have the same problem.)
>
> Greetings,
>
> Ralf
Re: CDO: Reflective Feature Delegation required - but how to invoke not generated code? [message #423382 is a reply to message #423377] Mon, 29 September 2008 16:39 Go to previous messageGo to next message
Ralf Buschermoehle is currently offline Ralf BuschermoehleFriend
Messages: 27
Registered: July 2009
Junior Member
Hi Ed,

see my comments below.

Ed Merks wrote:

>> After changing the 'Delegation Feature' to 'Dynamic' I got several
>> "org.eclipse.emf.ecore.xmi.IllegalValueException: Value 'Boolean' is
>> not legal. (platform:/resource/rmofReflective/reflectiveRMOF.rmof, 3,
>> 25)"
>> Pointing to e.g., "java.lang.ArrayIndexOutOfBoundsException: 3".
> It's possible there's a bug. It's not like lots of people have tried
> using it.
>>
>> The classes range from really simple <clazz name="Boolean"/>
>> to really complex ones - thus I wasn't able to determine an error
>> pattern.
>>
>> The corresponding ecore file says something like
>>
>> <eClassifiers xsi:type="ecore:EClass" name="Class"
>> eSuperTypes="#//Classifier">
>> <eStructuralFeatures .../>
>> ...
>> </eClassifiers>
> You're extending Ecore? You know you're advised not to do that, right?

No, we are not extending Ecore. Why do you assume this? Because we have
an eClassifier "Class"? Think of something similar like the UML2 Project.

>> Inheriting from something defining the name attribute
>>
>> <eClassifiers xsi:type="ecore:EClass" name="NamedElement"
>> abstract="true" eSuperTypes="#//Element">
>> <eStructuralFeatures xsi:type="ecore:EAttribute" name="name"
>> eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
>> ...
>> </eClassifiers>
>>
>> Nevertheless it was fine in EMF 2.4?
> I never tried it when extending a base model that already contained
> features. The generated eStaticFeatureCount method is generated to
> return 0 which wouldn't be right if you extend a generated base
> class...

We did not extend any generators ...

> You didn't have this problem with just the reflective
> delegating? (I would have guessed it would have the same problem.)

No. In 2.4 this works fine. Again: Everything is "just" plain EMF ...
but I admit we have several modeling languages with dependencies (which
should/does not bother EMF). But regarding EMF these are different
modeling languages (with no relation/dependency at all).

Greetings,

Ralf
Re: CDO: Reflective Feature Delegation required - but how to invoke not generated code? [message #423385 is a reply to message #423382] Mon, 29 September 2008 17:06 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 30804
Registered: July 2009
Senior Member
Ralf,

Comments below.

Ralf Buschermoehle wrote:
> Hi Ed,
>
> see my comments below.
>
> Ed Merks wrote:
>
>>> After changing the 'Delegation Feature' to 'Dynamic' I got several
>>> "org.eclipse.emf.ecore.xmi.IllegalValueException: Value 'Boolean' is
>>> not legal. (platform:/resource/rmofReflective/reflectiveRMOF.rmof,
>>> 3, 25)"
>>> Pointing to e.g., "java.lang.ArrayIndexOutOfBoundsException: 3".
>> It's possible there's a bug. It's not like lots of people have tried
>> using it.
>>>
>>> The classes range from really simple <clazz name="Boolean"/>
>>> to really complex ones - thus I wasn't able to determine an error
>>> pattern.
>>>
>>> The corresponding ecore file says something like
>>>
>>> <eClassifiers xsi:type="ecore:EClass" name="Class"
>>> eSuperTypes="#//Classifier">
>>> <eStructuralFeatures .../>
>>> ...
>>> </eClassifiers>
>> You're extending Ecore? You know you're advised not to do that, right?
>
> No, we are not extending Ecore. Why do you assume this? Because we
> have an eClassifier "Class"? Think of something similar like the UML2
> Project.
Oh, sorry. Just very similar names. :-P
>
>>> Inheriting from something defining the name attribute
>>>
>>> <eClassifiers xsi:type="ecore:EClass" name="NamedElement"
>>> abstract="true" eSuperTypes="#//Element">
>>> <eStructuralFeatures xsi:type="ecore:EAttribute" name="name"
>>> eType="ecore:EDataType
>>> http://www.eclipse.org/emf/2002/Ecore#//EString"/>
>>> ...
>>> </eClassifiers>
>>>
>>> Nevertheless it was fine in EMF 2.4?
>> I never tried it when extending a base model that already contained
>> features. The generated eStaticFeatureCount method is generated to
>> return 0 which wouldn't be right if you extend a generated base class...
>
> We did not extend any generators ...
So you're not extending a model that's fully generated...
>
>> You didn't have this problem with just the reflective delegating? (I
>> would have guessed it would have the same problem.)
>
> No. In 2.4 this works fine. Again: Everything is "just" plain EMF ...
> but I admit we have several modeling languages with dependencies
> (which should/does not bother EMF). But regarding EMF these are
> different modeling languages (with no relation/dependency at all).
If I could reproduce the problem, I'd be happy to have a look at how to
fix it. You can send me exported projects along with instructions
privately. I'll delete it all when I'm done...
>
> Greetings,
>
> Ralf
Re: CDO: Reflective Feature Delegation required - but how to invoke not generated code? [message #423418 is a reply to message #423385] Tue, 30 September 2008 09:30 Go to previous messageGo to next message
Ralf Buschermoehle is currently offline Ralf BuschermoehleFriend
Messages: 27
Registered: July 2009
Junior Member
This is a multi-part message in MIME format.
--------------090706090003070405080004
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Hi Ed,

see my comments below.

Ed Merks wrote:

>>> You didn't have this problem with just the reflective delegating? (I
>>> would have guessed it would have the same problem.)
>>
>> No. In 2.4 this works fine. Again: Everything is "just" plain EMF ...
>> but I admit we have several modeling languages with dependencies
>> (which should/does not bother EMF). But regarding EMF these are
>> different modeling languages (with no relation/dependency at all).
> If I could reproduce the problem, I'd be happy to have a look at how to
> fix it.

Thanks for the offer :)

> You can send me exported projects along with instructions
> privately. I'll delete it all when I'm done...

No problem. I stripped the problem model down to a simple error (see
attached .zip - simply generate 'everything'). The editor kann create
packages with Feature Delegation 'none' but not with 'Dynamic'. It seems
to be a problem if a class inherits from an abstract class with at least
an attribute.

I also attached a simple extension of the library model, where i can't
set the price in the generated editor of the new abstract class
'literature'.

Greetings,

Ralf

--------------090706090003070405080004
Content-Type: application/octet-stream;
name="EMF2-5M2Test.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="EMF2-5M2Test.zip"

UEsDBBQACAAIAERUPjkAAAAAAAAAAAAAAAAXAAAARU1GMi01TTJUZXN0Ly5j bGFzc3BhdGid
kE9PAjEQxc+a+B02vTMrF+NhV2LMmkAiGFi9ktJOlpE6LdOWwLcH/xCNCRy8 zZv85r2XqQbb
d1dsUCJ5rlUfrlWBbLwl7mr10j72btXg7uqyMk7HGHRaHsTFj0JOsitWxLZW UYwqPpZfY3ma
NJ6PpJcO0DgKEeHNJnA6s1ke0mE0beYPk3F7Pxw30/IvR5xQWDuwuMgdZPq+ RIFZ0my12Nen
dhewHOmNnjW9Ptz8o1KwCMYLguA6k6B9drkjjuesfE4hp6PbgvgTrsrfL9wD UEsHCPSlsdLQ
AAAAeAEAAFBLAwQUAAgACABEVD45AAAAAAAAAAAAAAAAFQAAAEVNRjItNU0y VGVzdC8ucHJv
amVjdL2SzWoCMRSF1xZ8B5m9iRUKXcQZ0NbdSEH7AGlyHSOTH5KM+PhNYqZl EMGFuLvn3Hvy
3YSQ6izbyQmsE1otilc0KyagmOZCNYvie7eevhdVOX4hxuojMP8BjllhfJgO 7ogoKqH8rNfz
6Vs934HzBCcr9piWEpQvCe6r6OaDXBJ4oH460fKtARZVlqsQpYonJ+O0bRCw VhgH6Mg9YtqG
gp5oCoD9XyEkqG26yHZZ46FB8BXlLq7hgGqqxD5ceflc7JYdQNKHQLPTP3ng +c5Cnr6I2699
6ccF0tytTFz5q+0aoTZXgb6OxL+/MPxiv1BLBwg8J1T27QAAAKECAABQSwME FAAIAAgARFQ+
OQAAAAAAAAAAAAAAACEAAABFTUYyLTVNMlRlc3QvTUVUQS1JTkYvTUFOSUZF U1QuTUZVkMtO
wzAQRfeR8g/ZsCMWjQQLV10ACgtEUEURW+Q6kzDCjzC2o6ZfTx6VCSt7dO7c OzOVMNiA8/kH
kENreLZhN2nyEEytIK8uNMIiolehgWdXnQotmqmI5DDoo1UoF0VZPRWft1Xx PtpsHZpWgR+d
dp7CX8s6fBX/qIRze+G/eMZWWlNbmqLJ9lgD/Qt/sVIoPAs/2y3TRfgGPwEJ 6vIEMkyK0vRI
1mgwnmfPoheHMt+wuzQpT50ln++F/BbtuAVp21ynyfwy1J2Kxeij0uTinC9B PLPUMpAKOwdM
WgJGwXjUMLWtGehm/I+CbY8Oj6jQD3xHAHN+HPxeeuznnfbTZQeeKXEe0uQX UEsHCDbkwnEJ
AQAAvgEAAFBLAwQUAAgACABEVD45AAAAAAAAAAAAAAAAHQAAAEVNRjItNU0y VGVzdC9idWls
ZC5wcm9wZXJ0aWVzdY6xCsIwFEX3QP7hgR1rklYELSo4VOigk6OLTUKNpE1I Gql/b+oihfq2
ew48DkYL2HFj3041j/6Ax0kne0RJJQqog9KCWGesdL2SPn1BRjLIGdtQtqUr BmxT5HmxzkCb
WkI5WEgwwqhWHVEd10FID3sg6Q0jmF5rhNR0RpzL63FZXU5zzurQxNdDq//L Xy5Gz7vzhJvW
Ki2JcUK6sQYjb4LjkpC4vOMUIxN6G/oviO0RfABQSwcIrL5we7MAAAAmAQAA UEsDBBQACAAI
AERUPjkAAAAAAAAAAAAAAAAdAAAARU1GMi01TTJUZXN0L21vZGVsL3Jtb2Yu ZWNvcmWtVF1L
wzAUfRf2H0J83rLNFyntxI8JAyfiNvA1prc12CY1Se389950XVl1ghXzkEJy zsnJuTcNL7Z5
Rt7BWKlVRCejMSWghI6lSiO6Wd8Oz+nFbHASgtAGgvkDF688BbLNZdCypsga nBAcKKZsgJsR
fXGuCBirqmqk83SkTcqelgu6h9gupDqrEdPxeIKwu5V4gZwPpbKOKwEd9dpJ hwwik4WFWgHy
xKtM2dzDKFE8R7DJddKIKLt5XLR05nfqaQQNwT4YSOS2Ic08K4TrjFsrE4lX Jug9cB8Fyjah
1Jv7o+YZ5KAcJfzZOsOFi6gzJVDWW+ke5/gnOQKrsgCzRraN6Clje+Bsd80Q VogTrjQ8uwWO
Xzhy3qVzRj6Xrg3Kz5RkugJzpUsVY0vgUetDzg133C+QX1XAO0Mn2E5NAn+2 9lbyzOcW3x/x
uFP241/NhuywXr0r2LyW78XqlLZ/Zyx1DFm/Sj9CAgb8W2o0ip031CyLok1y eCRK9NteRGjl
uFTed7evvwaFC50/Bi59AlBLBwjsMuZ1jgEAAGwEAABQSwMEFAAIAAgARFQ+ OQAAAAAAAAAA
AAAAACAAAABFTUYyLTVNMlRlc3QvbW9kZWwvcm1vZi5nZW5tb2RlbLVUXWvb MBR9L/Q/GI09
1soMG8PEKSOOR2EJoe1gb0ORrx1RfU2S8/HvJ/kjjbuEwWB+MI51zrn3nHvj 6f1B8GgHxjIl
M/QhnqAIJFUlk3WGvj8Xd5/R/ez2ZlqDFKoEnn4FuQwP0UGw9ERMPPH2JvKX 15M29YcZ2jqn
U4z3+32sRB0rU+MfywfUQ4AqAyMQUM60hRYIosLJZJLgRYCNtIdW/s4dekVR S8iZAeqUOWYI
L5ZFcvdxmTyDddga2ldocWve1Ew+5BkKqJ89qhdZEeG7fhSqQhETWhkHJkB9 4VMTvoF4OIvh
zEAFxDUGcuBQE9cmlx8lEYyiiCqhOSOSwjfYBXefwjCo0kfD6q0rGPDSZqgi 3AKaBb1p5ZVZ
3XmcVYxDiucpzhVtBEhn3ycTIkt/fwLn/EAt5moDOAf74pTGxnvoupvikVKr 7VNeE/pCarCR
NlCxw+C6ZFYrSzYc1kbtWAmmIH2szjTgFyho9uQMvZZ5h7u+O/U5J9Z6cSZa WOer47ZHYyZe
cAimEP53iTC6ctDpZTqhopuLjajxTzDfMl6O9XpEhtpf6eKLc4ZtGgfR1RLY DxZO/f7PQr8a
wlnFoFydV5zi14guhHY1pn5yF5O+Sur+Z5e9aqM0GOf3Y6Wk90mDawNy2JdR Fmcr9DaKR6jA
0+ibKNrSWPfLet1++2LY6fBNw3981Pzb31BLBwg45oz+DQIAABIFAABQSwME FAAIAAgARFQ+
OQAAAAAAAAAAAAAAAB4AAABFTUYyLTVNMlRlc3QvcGx1Z2luLnByb3BlcnRp ZXNVizsKAjEU
APtA7vDALSU/EdagdhYWWniD1TxjIPGFuG7W2+uijeXMMJzNYH2h/CrB3/ot n1D+8aSavbOQ
49OHu8iFMpY+4GM+gBYajFKtVCu5UKBaa4xdaoh0RtiNGRrOOPuexy4hbOCU 6AoHchg/odAQ
HJZfqrUKHLuUIwoqnrM3UEsHCLCYtSCCAAAAngAAAFBLAwQUAAgACABEVD45 AAAAAAAAAAAA
AAAAFwAAAEVNRjItNU0yVGVzdC9wbHVnaW4ueG1sVU/BToQwEL2T8A9js0dp CxsTJBROmngw
MUbPBmGWbSxtU9gN/r2F4ur2MJ038+bNm7KeBwVndKM0WpCUcgKoW9NJ3Qvy /vaY5KSu4qis
sVXSjvjH3Xvu0vLNmySJIyhbY7+d7I9TtSD2H/rC7qkrwKpTLzX1S2/PkNIU Ms5zxu/ZngPP
iywr7lJQ5hPhYbawi6MkCSvCYFACKHGeUC8+wBqpJ0GM6+lmkeJw8LlxSHvU 6JoJuw/btF9N
j6Ra5xeJrfKLwzs5KchxmmzBGHODOawhqJFraquacRRk7b/68LJtuGZ5B8+m QyXIsHxBzhdX
RFiwU7LLPeFadjn3B1BLBwiblUE0/QAAAKEBAABQSwECFAAUAAgACABEVD45 9KWx0tAAAAB4
AQAAFwAAAAAAAAAAAAAAAAAAAAAARU1GMi01TTJUZXN0Ly5jbGFzc3BhdGhQ SwECFAAUAAgA
CABEVD45PCdU9u0AAAChAgAAFQAAAAAAAAAAAAAAAAAVAQAARU1GMi01TTJU ZXN0Ly5wcm9q
ZWN0UEsBAhQAFAAIAAgARFQ+OTbkwnEJAQAAvgEAACEAAAAAAAAAAAAAAAAA RQIAAEVNRjIt
NU0yVGVzdC9NRVRBLUlORi9NQU5JRkVTVC5NRlBLAQIUABQACAAIAERUPjms vnB7swAAACYB
AAAdAAAAAAAAAAAAAAAAAJ0DAABFTUYyLTVNMlRlc3QvYnVpbGQucHJvcGVy dGllc1BLAQIU
ABQACAAIAERUPjnsMuZ1jgEAAGwEAAAdAAAAAAAAAAAAAAAAAJsEAABFTUYy LTVNMlRlc3Qv
bW9kZWwvcm1vZi5lY29yZVBLAQIUABQACAAIAERUPjk45oz+DQIAABIFAAAg AAAAAAAAAAAA
AAAAAHQGAABFTUYyLTVNMlRlc3QvbW9kZWwvcm1vZi5nZW5tb2RlbFBLAQIU ABQACAAIAERU
PjmwmLUgggAAAJ4AAAAeAAAAAAAAAAAAAAAAAM8IAABFTUYyLTVNMlRlc3Qv cGx1Z2luLnBy
b3BlcnRpZXNQSwECFAAUAAgACABEVD45m5VBNP0AAAChAQAAFwAAAAAAAAAA AAAAAACdCQAA
RU1GMi01TTJUZXN0L3BsdWdpbi54bWxQSwUGAAAAAAgACABMAgAA3woAAAAA
--------------090706090003070405080004
Content-Type: application/octet-stream;
name="EMF2-5M2TestLibrary.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="EMF2-5M2TestLibrary.zip"

UEsDBBQACAAIAGFbPjkAAAAAAAAAAAAAAAASAAAAbGlicmFyeS8uY2xhc3Nw YXRonZBPTwIx
EMXPmvgdNr0zKxfjYVdizJpAIhhYvZLSTpaROi3TlsC3B/8QjQkcvM2b/Oa9 l6kG23dXbFAi
ea5VH65VgWy8Je5q9dI+9m7V4O7qsjJOxxh0Wh7ExY9CTrIrVsS2VlGMKj6W X2N5mjSej6SX
DtA4ChHhzSZwOrNZHtJhNG3mD5Nxez8cN9PyL0ecUFg7sLjIHWT6vkSBWdJs tdjXp3YXsBzp
jZ41vT7c/KNSsAjGC4LgOpOgfXa5I47nrHxOIaej24L4E67K3y/cA1BLBwj0 pbHS0AAAAHgB
AABQSwMEFAAIAAgAYVs+OQAAAAAAAAAAAAAAABAAAABsaWJyYXJ5Ly5wcm9q ZWN0vZLPagIx
EMbPLfQdZO9N9NZDXKGKN0XQPkBMpttI/jHJSvv2JjHbsojQQ+ltvi/z5TcM wxafRk/OgEE5
O29mZNpMwAonle3mzdth/fzSLNqnR+bRnUDEFQSBysfUndwHZrmBVqsjcvxi tKhsC2cM2Ngy
OlTZrX+EIuhIHXul5d6DyKrKZYpyK4tTSQ47AkIrH4CcZCTCYSr4mZcA4M8I KcGx6zM7VE3H
BqM3lF9xvQSy4Va9Q4iv/4vdiw8w/E+g1RlWnnixR6jdV3F/29f3PEDpu5fJ I+903ym7vQkM
dSZ+38L4ui5QSwcINtSDcOYAAACcAgAAUEsDBBQACAAIAGFbPjkAAAAAAAAA AAAAAAAcAAAA
bGlicmFyeS9NRVRBLUlORi9NQU5JRkVTVC5NRnWRPU/DQAyG90j5D1nYyIky MKTqQFEWRFFE
JXbn4gaL+wi+uyjprycfJQ0SbLbe13783h3A0AmdT9+RHVmTJRtxF0f7YCqF 6eGiLuL9Ir2C
xiy5aVSoyYzNohx7XVpFcnYoKhm43zoytUI/LNl5Dlf3mrsiPylwrgD/kSVi 5TWV5ZHKtqUK
+Rf3xUpQdAY/rZsPW8Q3/ArEWOUdyjA6ctMSW6PR+Cx5hhaOeboRD3GUd41l nxYgP6G+BriN
o59SkG7Uuh8Wqji6INKZmCWWa4FSUeNQSMsoOBhPGsfJtYb6NNSDYduSo5IU +T7bMeJ0yL9u
0Wn6c2LJ/Cg9tdNzFON/9EMWOPdx9A1QSwcI/fxDbQkBAAD0AQAAUEsDBBQA CAAIAGFbPjkA
AAAAAAAAAAAAAAAeAAAAbGlicmFyeS9iaW4vbGlicmFyeS9Cb29rLmNsYXNz bZHLSsNAFIb/
qdU0TaK1F229dZtsDLh1pYJQKChEFNxNyxBTQwOTidBXc+ED+FDimWlqgrpI /uScb+Y/l8+v
9w8AFxhbaDC4aTKTXK7C6yx7tdBk6Cz4Gw9TvozDu9lCzJWFHYbuhpsmSkiu CikYWrFQD4lK
6bPvB9PqYKRksowvich/iIH/Fwge15fc81jkDFt+MFmfKQNNf6KRdrHM65AO JXlUDz0zOHTR
DVcizuSKYUgF1XvbZKgoJ6+DI/9/Trt4xrhiPeNa/dtkeVWol0zShGqGT1JP iazsvAJ6/u+8
aSTKCjkXt4meka0rONdjopFTX/Rs07JcWouFFvR6bLSNOnCNetg1uoeO0X10 jfbQNzrAgdHD
Mj8s8yMcGT3GCTkwnNK7gbNvUEsHCCQ+m7kpAQAAHwIAAFBLAwQUAAgACABh Wz45AAAAAAAA
AAAAAAAAJgAAAGxpYnJhcnkvYmluL2xpYnJhcnkvQm9va0NhdGVnb3J5LmNs YXNzjVXbcxNV
GP9tN/cutwiFXpA7pGkhUAEvrUgbA0TSFpu2GlDrNmzTpZvdstmAecPrM+qM M76JjuOM40Mt
AlVHxhlvM7746qsPvvknOOrvnIQ2pOnYzOyePd/5Lr/v933fya//fHMfQB9e C6JFwVbLnHZ1
t5IYcpy5pO4ZBcetBOFTsPGKfk1PWLpdSKTscjGIgIKDjltIGHnLnC8ZCaM4 k8g7xaJjJ8qe
aUktw9U9x1UQHM5lx1NjOQVtmWYR+hVsyibTqZFkaupMOjmeHh1REB5Kj54d G7xwjmYbag6m
JgczEykFSpqypGOXPN32JnWrbKjMAgq2NbipGohDhTGWPa6ImbQmN9mpwbGx QcbafmktjIGq
ooLNGcmGzDNjljyehbNmwda9smsoiDUcDzR3eIpm/msCvAKfrRe5RDMrNGc9 17QL1Alapkcm
LQWtqZGJ4f0PUIQGSL1teqcUqLHuSTpJOpeNEIIh7BOcV0o0q0TIygENB3GI CQzU9PtjqwOl
06tlqyXdk2E67NYQRCiEcAi97I1s3jTsvHHGzHumYwuFIxrCQiESwjFRStMp uPr8bEWcPaYh
gpD4OqFhJ7aKr8c1PIKtETyJ/iCeIsMrDA66rl4paRjA08xALwlGmVLsUh24 0ekrRt7r726s
SwTPYDCI02yMlZOkY1mGREqvQ0gyWtkuOpfNGVOftoyq/72NRVztXOBOadiG NrZWxrSNkXJx
2nDHhRNRSievW5O6K53WhGrBoO94E/a7m/eIqN55DRkMs96eU1XmnMa6V7uI YBTPB3HhAXt1
ZxrGwI4JGFfLulUiG7Em5F3kXJlUco1S2SLMDVlPz88N6/M18GGCH6qMsFEF qpyGiwJVkNIR
2bztsfSaWah4WfTgK7wBmrVetate1dAOTXxNa+hAp/i6rKELnextb9Yk8BCj TVZHhj3PWyBC
QebBfATkNJUElO41pjgCC3YQxYdJEqNS1OBgnmnqouHyznyloVI1ntJNRGkx fkEZfXRGZMvO
ugpyeKLeQdLSS6VmM5V5+HLlzEeyTtkVEyWI31KfwRGhq+BCg82ad0xmfZd0 /+ljZFvl44d2
ul2MN8A1XFsjYmV5WqFRZ4O4ObGR+011+83cb6nbR1lETrW045RQvl3Kd/CE hea30OiUa5dY
N3eI+4D7VkZ7FLtosZu7r4lG/MrfQslF96hqdG907z3sv42YlMR9vmhPtEdK DktJwu+PHo0e
lZK+wHcUqYuIZXO+RRzO5vyL6MvexvG1Dk4u4uQSnljCqdt49ksJ+QzfcZIA 7CHYHuzHCU7b
HCbYTpdQhA4bBq5gFtfhMcGz0gqk7xzStTTepkT85RxQBz5DO2N09g333sVz 8bsY+RD+3oW3
FKWT4vu3/v1TWaCiKsN2IMD3DdbldfLyBnl8kwFuYB/ekWF2V51WGWSIPRiX NWhlFSbIYwsm
KQ9B/Rt+JdpCSC/8H6QX1wXpJiG9yzDvEdL7hHSTkD54CFLHuiGdI4tVSPNc FcF2x+ey6IdQ
/Qk2hbddfPaxZgusGJ++hTpcbUQEfEQqbtHXx6zSJ4jhU4lJq3qtNZ6IH4Cv S1VVeuaf43J0
Vea2I97TdQ8vxXfewVS83XcHerzdfwf5lW6oxvqB2j8yr5/Y+D+zvX+RseLw CR/siJDEvkNG
VeWX4KR6KgrmZ9wZFGrRE7Xc/fGvMPXFcqiAFP5Wl4a/5loRd3ATY32hwfj3 psazTY3zjcZ/
NDXOrM/4rybGYZiclarxSUoFM22LOJ47r8bv5wbEWA6rnUuY6230ptRN1tXl No5TIk4jUSW+
BPd7KGvbtaAs39dql9H1/wBQSwcI4d8yEF0FAAADCwAAUEsDBBQACAAIAGFb PjkAAAAAAAAA
AAAAAAAhAAAAbGlicmFyeS9iaW4vbGlicmFyeS9MaWJyYXJ5LmNsYXNzlZDB SgMxEIb/tNW0
a7W16tGj0F4MCOKhxYPQnhY9LOg5XWJIzW4kmxV8NQ8+gA8lnd1tUfSihzAz zMz3Z/6Pz7d3
ABc44mgxDKxZeulfRdxEjg7DcCVfpLAy1+JuuVJp4NhlOHVeC5Va81woobJH yp1XYt6MMHCt
wq3MFMPxeBJ/IZLgTa6nNFBsB07Gv/uTe4aIEA/eBOULhjOi/JRMXZa5XJTB WDGPTREI20uM
zmUoPYGv/rIzi7dHN1rTa6J0SfrGuScSvvwfpNqqEVHiSp+qhbH0k/7G0PPq UHKPoU1vh6zv
kMMcXVRO9xDVcQ996u5Tt4UDqgff6iFlh3U2WgNQSwcIAiNLpwEBAAC9AQAA UEsDBBQACAAI
AGFbPjkAAAAAAAAAAAAAAAAoAAAAbGlicmFyeS9iaW4vbGlicmFyeS9MaWJy YXJ5RmFjdG9y
eS5jbGFzc3VSXU/CMBQ9RWAwh3wpIn7gI8TEJb5qTJRAQrKgCQSfu1nJYDBS hwk/y/hifPAH
+KOMt9tMULFJe9rTc+5te/vx+fYO4AzHGhIMFc+1JZdL04qww53Al0sNSYbC mD9x0+OzkXlj
j4UTaEgzHPlyZArHc+ePwhTTB5r7Upjt2MmQFd1ef3DVa7UZqtb6+OcMmQuK MXODS4aNRnPI
kGz590JHDnkNWwz1b6c7nXu/7F2iDBRQJJeKwVBrNP9LlQVD2YCGDEPecmei t5jaQg647QmG
kuU73Bty6ap1TOqOFDwQ174/oWdYCa0YOnsu2o8TUfi/2UllRKo76QZCUqYV UcSRpjgSQey4
5c6Ej8Tau8R7ZND7/kI6ouOqc5Z/XvVUFYxKRC9KPUV9T12byp2iMQudmE1a nRCqpr3CeEHp
maYJbNOoEwI1pFHGTsiqf1DBbohVCqewhv0QD3BIGvoRobL+BVBLBwgJeJy3 YgEAAFoCAABQ
SwMEFAAIAAgAYVs+OQAAAAAAAAAAAAAAADEAAABsaWJyYXJ5L2Jpbi9saWJy YXJ5L0xpYnJh
cnlQYWNrYWdlJExpdGVyYWxzLmNsYXNzfVQ7dBtFFL2zCZYlj2z5SxyIEzsG 7AARhEAAm8BK
kR0la0ms13bCT6w2Y2VtadesVgHxq9LT09OTpIKCjiZFSkpKSupUOcybXUkx J7LO0b47b+7c
d+f78MnvfwC4gB8T0BhON9xaYAedrBHFiu3s23WxaLihCOxGK4HjDJk9+46d bdhePVuu7Qkn
ZDieK5evM8wZflDPCqfhHrREVjR3JfYDkS3kG3artcIwQrxq1SpaRoFhYRBd D8PArbVD0R9S
0dcLmwyjUSuvW4X1snmTgUcJfcu6WjaPkDTFrgiE55BkwijmTJ1Gp2NUrZb0 Deko02vvmEWr
YFLFXooqycRQ1CVLR6A7Nt1txryUQU3d2jJl53i/IediFvM0QFnvT+XUIO8F r92UtqcO8avl
3LVC3mKYHzTsih3aVueAZjy8Krs9N7zMcGxpeVtuWN6/JZKYw5kETjPMPHvf OeaxwJAUxdKm
pZfI9Anj2dSVESm2yPESXpYLXBdhzvf3Gc4sLR99JpJgWOJ4DkMkcI7jVbwm lyYWqFpu2BAM
i4Nl+meFpM5zJDBMUm9wvHlIqiJdtojzFkcy4rzN8Q5xMl1O3g5F3Q86RHuX IxXR3udYwao8
Cl2a3g5v+8GRtvrnjbQuc4yAk9ZHHDotUUpqxStIhDxHOlqCAscaeRrrE6ol uymIdZVjNLJ0
jeM6WZp4irUT0C1VU9zgGIvqlTkqRMw8RaQ5KJrJkYloFscW2UpKWqRD/Tsc 45GrmxyfkKvR
Xn/P1GccE5GpLziqVGusT+qVsjkmo1IOxy0qlVaO6F0J24FS2uWYisrd5nCp 3OQhTrUSuI5i
7nNMRzWbHB78qCYV6+6gfMsGb466UKTzFccMniedFkeINsP0/3S6L9zZwWq9 e0aKX3OcwKz0
Y7ieKLWbNRFYdo3O8IThO3Zj2w5casfJ1KbfDhyx5lJj8vCVOk/vrHxmip4n AnVbREte5e5b
PMRkuWPy8c5glu6PRLN0+FVMxjEVR3n6VEzHvNE4PxbnM3Ecj/sn4v7JOD8V 56fjvFw1FeVc
ZZSucBIvyPiibIzLSL9793HqN5xleIBXFFwm+LqCWYIXFLxI8JKC7xH8QMEP CeYUvEJwXcEi
QUPBEsGPFdwkuK3gDYKfKvg5wS8VrBEUCtYJ7inYIHigYEDwzj1pWsM38rsm FwLsEUbYX5hh
f2Oe/SOP47+4xB4jpwEb2jBuaBk42kl42gI62jnc1S7iJ20VP2tr+EWr4Ff2 JzpKkf7fqu93
+F7GFGjr5vDDUPI/UEsHCFIqAlfAAwAAgAcAAFBLAwQUAAgACABhWz45AAAA AAAAAAAAAAAA
KAAAAGxpYnJhcnkvYmluL2xpYnJhcnkvTGlicmFyeVBhY2thZ2UuY2xhc3N9 VFtz00YUPtuQ
yDZx7qFAW8IlQAJt1Av0QiitLOQgMLaR5QSePGt3MQJZysjrZvhZnb50+tAf 0B/V6dnVypK3
uPZIZ7/vXHfP0f79z59/AcDX8NKAjwhcCIN+QpP3ZiOVbTp4R4fMgHME1t7S X6kZ0mhotvpv
2YAbsETgSpwMTTYIg9MxM9noNa7jhJmO8iSwyJrWc4fARiP37/AkiIaHBKp2 HI05jfgxDSes
BOcJGKoEXLFmp9f13BKsEDh8w/npA9M8Ozs7UOkOZGpMyVnEYnNMR6chG0sm XWe7IFARodqe
U3dfEigzt9nxraaNVV1sfHjHWFul4fqOZ/ldD+2Iu4DHtEBgPWd7GNG1HaEA ESlX1J1U2q1u
0xd6QuBcrdV6RuC8EMpzinzXb+SobR05HeGFDVlJKdvynaOW94rAckpYXf9J yxNG2JkNyf0n
6SIeYcOteZbwq6pVr5e2Y22KTzxReAdzTSkRD4ntjJgJTWApdcFi0kUWs5pB 5b+lsOZeleXm
W9qawb1W7aljo1npIbY5CvgjAgt7+8d4gnb8C6vgrN4z4BsCO1nnAuy11j4X qWW4D9+il4hB
4PLe/rxWl7F73y/DGqwTWG0EEWtORn2W+LQfMjG38YCGxzQJBFakMWS8Fsfv CFzFuHM+ATuk
47EYcmXc8wMunHfnu1gcv4z+hLOiWxuLHGPHMmxTzoaxGOuVjLIm/E2c/G9o j71mCYsGcrTR
b/ptrOag16QjseUCc5IEnCUqfUaKnEiVkUr1aSnpWgVZzQllXpURkKB8kqDF 5gzutZNgoPyE
Q77LnfmbcqLJCPezrfmk9xOBG/M9H1NO/fen4jTW853V6YDLnB8YF6UTx9eJ J8mA1QPRzc3Z
aToQtxx+GW4UsUROABsbcFwY11n73fQEQjyfUrbEaxVnHp9FuIR/A0q4LosL ASqIlwu4inhV
0+Mg4/oSbMDmlN9CvF3AFxB/XMAXZaZZ/WUNf6LZf1rAnyG+ouXbKeCriK8V 8HXEN7R4u1q+
m5r+lpbvtpZvT9Pva/HuaPHuavafa/V+MVPvBp7yAZjIfInMXZTiZ/wBX/0O 3/0mjX7AdwUl
wCNYwu0/kKy4oQ/hoZQ/okbIn5T8WUkLalLayu6x4h3F15U8UvonSu8q/qni nym+Ac+lbEJL
yja8kLV48t0BX1ZKoIvPyVL5X1BLBwiPLPogfQMAAAYIAABQSwMEFAAIAAgA YVs+OQAAAAAA
AAAAAAAAACQAAABsaWJyYXJ5L2Jpbi9saWJyYXJ5L0xpdGVyYXR1cmUuY2xh c3NFjkEKwjAQ
RX9qNbUqinv37caAZ6iuBAXBfVrGkhKtpKng1Vx4AA8lThF0MTA8Znjv9X48 AawwkQgE5tbk
Tru72hpPTvvWkUQoMKv0TSurL6Xa5RUVXmIgsKhdqaiw5tqQovOJ99qRWn9P BKKS/N6ZggR6
SZoxaH4gTLL0KBAf6tYVtDGW2fRvXXZCVvAnT58TA86QiNDlDBEzERh1HOMP UEsHCP6qiTag
AAAAxQAAAFBLAwQUAAgACABhWz45AAAAAAAAAAAAAAAAIAAAAGxpYnJhcnkv YmluL2xpYnJh
cnkvV3JpdGVyLmNsYXNzjZDNSgMxFIVPWjX90VpBly6FdmNAcNXiQqirQRcD uk6Ha0jNTORO
RvDVXPQBfCjxTksRdOMi5MA5+W7u+fz6WAO4wolGR2EU/JItv5sn9olYY09h vLJv1gRbOfOw
XFGRNA4UziM7Q0XwrzUZKp9FRyaz2EYUtKN0b0tSOJ1Msx9EnthXbiaBehc4 m/z1p48KPUHc
xvhSK1wI4/fAIpZlrEyTfDCLzNdJoP3cu8qmhgV7/Z8382y3cTtpdiOMQR4b LujOB4EMt0Vc
th+UrRW6cvalsa40o9FD21Afg809xKG4R+J2MBJ1vFHjb1BLBwjsTrqy6wAA AGQBAABQSwME
FAAIAAgAYVs+OQAAAAAAAAAAAAAAACcAAABsaWJyYXJ5L2Jpbi9saWJyYXJ5 L2ltcGwvQm9v
a0ltcGwuY2xhc3O9V1t0G1cV3dcaW7I9dhzHzstO7ObRKLJjNWmapHHiRFFs R0S2U1txsWlJ
x8rYViKPktEoxYG2QHkUSHkXCNDyJqEYsB2QSQol5SOsBb/wC78sHotvnotz 7ozGY0kuDYuF
1pJ0Z+befffe59xz7/zyX3deB7APb/hRIdCcTk2YmjkbTs1cSodPZDIXY9Tw QxFoWfEonrJ0
U7Nypm53qBJQCx14mEB9IpaI957rPdnbFzkbTwg0xi9oV7RwWjOmwiOWmTKm uqnXmUh/74in
l4gJ1EUzRtbSDGtUS+d0H/GDwNpoJNHbPzQ85um8Pu6dM6pZ+lTGnCXYwJFk OmWkrB4BX3D3
qIASzZzXqwlmnQo/AtVoxgY/1gs0lUNQsRH1Av6BsZFE7/AYj9usoo7vrYmn DH0wNzOhmwlt
Iq2zrkxSS49qZoqvnZtVR+T0NfChTcUWNBAFazqVFdgQL+sxkVb1EUuzUslo WstSx/bg7njG
nArrJOVSVg/rM5PUzph6uFf26K7GTuzy40GBtgJk3P4/oyUvalP6DjtK6ayK IHYTgxNDQ6cF
tr45LHnkEOnTZYSjmZxhSSMpNoEp3UqkLNbYRARLQsqkwioewl6BWp7v3DmZ CALbVps2YtHQ
iZyld9eQ0Q+r2I9HaLB+ctbQZlLJfp0mjwRjqw2niXNJ4qmlHb7d4+NeYkMT F/Sk1e3HQYGG
Yr4kKOsKag6W6tk9yqS6VRzBUQ+pESZ1/H5IlTLivAwY+tPO7OzsGYpali2M qDjhsVCuEj9O
0jJYhokZlK26WYMo+lT0o4MwUs6isXVJOIp7MMYyojjNqRizZ3We1eSMQkcW OqTiDB6jJVgQ
epYfC3Tdj1QWVpPKjrgEKHXGGf2silE87kGPZUfuH32cbCGvCotVYCMlYtlC wE6+Q8UT7GS9
7WShihBG1ouxKVgegrXUkl3LPeukY55rqXT5upq4RXLWdMak2uBh9rjJq1Fy 0lVMgnJPtTlF
ziZODQ2/yQoZ1id1UzeSOmVxiqSshKQbE1pWLpTCvPaNkeUbVrCYR8lcyczM TMYIGxkrNTkb
HuS/VJLKQMaITmspo7u0Gv2nEX4YAjvLa+LkNQ0t3WsvBs6OSyoug7g2u9lh XNHNrD6sz2Su
UEZfC67iTxFWd2ky/e+1UZwpKwr2NhS7S4tuJjtFqb/3v0HOLgduXUngZEbq jjeR8+fZuner
uIBkLWbwjIpn8RxlgF7k3stv3b3lEmPvCP8HO1nE+1RcRJq3zOdVzHImBDLW tG72GucFdr1F
9uTepF0oYlQtqzTHxjra0ZIXB7RLcn/mOT7KRtETRZcbzIZgrOy2wcQ+rqIT e7j1SRXH0MGt
T6t4O8a49VkVE0gy5OdUfAzX6Nxg6tlMmk0XVKsCzDMxe0nnuWS5Wx+MldsN GOxlFYfwKLe+
ouIUYtz6moon8U5ufUPF03gXT/UtFV/El+xK7hT8xlJMMkCXBZwHv6piAA3c mlPxFLd8+L6K
m7whVOlOJeatgkr1ASyquIUf8pPLOTpBFG2OBc6yqudVDGOEWz9WoXHLhzsq foB52gZGMjkz
qfeleIerKxx2uhiJyl/MMHRT5pie9eNn5Ez5gwzpLBxl8ADN46NvJf228lmO ToetqAbPX0vt
Cqh0TWc1am+kp2vQwKdHunqY/vlTK26hcRFNt7BpQQ5ood968DkzDIW2yRo8 SBD8BHS9ZQUA
Q1SGlrB1eWiN7HiausblMNXuhHbiygDbsN0B6HIAlEXsmHfHV8l7Zz1jFXds CB3O2E5nbIUy
VzTynGdkhTNScMY6Iw8RF35WH6J5uxQlj313caB4/mkPSr2LQsnooJwgNqyz RqJ05HG42IHL
FAVToqy3ezoo3OqhSDD/Y66ebofV2lDlIo47rKJ59BbLu+ohttYlRmvDAYpR vwoX6DVEx1qW
8LYy/J6nQH7Aw2+ty28tRa5G8htwg31QZhlQLWHzGCyGu0aSXvRwq3a50Wpw M2YlSKJY3Etl
AaiylMSuahHjjkvNxbF7pWzsqGiUxI5RysXuBs1+c5XYnSNM9uapMt4wXhlv 5smbhbLStDLe
2CAl3twuC0C1tsQb/yLOO95MF3vz87LeXFgFxbcKyq/KotB25aAMkcNcQOpC HXcx4+/MIzPQ
OV/kyq+pQP1GArXbnV2T65CFJcHrkMMV6i240peEjymWC99vyaDfrRI+G1nw jurg3SbJlfQf
aX1V9jkELjX2d10oj6uHlU3KPazbpJCWkNI4vec23lOJQdY2vSeP986HOlr3 LOH9LNAnaWwm
n4Dfowl/oPYf0YY/UTH9M1WPv0ha++0JXVoRWokflIIj+JAjIiKl+2h8Gz5M pBW8ID33Nf0D
m/2Y/hv4RfxZV8Yz1IMpb3dkbF4hQ3iIfmSZqF3n/0pE/07X/5TkQjaMS267 S267S267Q+4F
OUFFE6cFbfYOlTsOlXiLTSUq08Om0kbfHfR9iL6PkLsvznONosYnqEzN0/+n 5luvI0CNz/DV
1flQS+uWJby0zHkrbXMQfrQLenkQtfQ2U4cDYg2OiQZ6JWz0aIi7GuKSuZCt z+MLUkMc16ll
awigql2pVQIK9aGThKPjDXrK/gw6OvqKdARlKIGjoU7aQvL48gI3uGrn8Yps N+fxVdmYzuPr
C6GWziV8c8FV0sVbtGglJVsRFG3YLR7AfrGN3vd30Ov1TvSIXegTQfSLEAZE h2etDLrKBl1l
g/g2Fa4KqcePyvZAbYB3mZvu1sAPWXiPI+dgkZxd4H0V2BtaRKNUk8d3+Oe7 CyFh81/C94rp
7yf6B7BLHCQJj6JTHMYecYSCchT7xDEcFMdxSJwgOVHPguxx6fc49Auk/YrC BYhOSw7puw7p
pEP6iSLS/TKSwGPE+Rdo5Iy6B79yA5t8N9C8aN/JY+E6/HRDUebo+kf8s8Q/ V++hUpnzzbGy
23Mr16+g9BGDOCXOkPnDGBYJPClGPSqSroqkR8Ua1LY3HBcV9KXpAoK6vibr 00/wU1mB6CUQ
r+NuVfW/AVBLBwh+JG3E2AgAAG4UAABQSwMEFAAIAAgAYVs+OQAAAAAAAAAA AAAAADEAAABs
aWJyYXJ5L2Jpbi9saWJyYXJ5L2ltcGwvTGlicmFyeUZhY3RvcnlJbXBsLmNs YXNznVj5dxvV
Ff6e7WgkZWyIkzgkOERJ3HqNVSB1W0QbbEdJjRU7iY2Du8FYfpYnGY+U0djG 0EIp0JZCgZal
+0aXdK/rUhuacwo/lXP6N/X09HtvRostKS7kHM3Me3Pvd7+7vDvX+fd///FP APfgbQNNAscc
e86zvLWkvVRwkplgcc7K+nlvbYxbBloEuvNeLimzjl0oyqRcWuBz3pOBSnqb cESgo4S4HUyg
xXZtX+BIT2+mvkiKMqP5eRnDXrQaMBsaTl+0stesnOy6LHN20ffWTLThNoHo 2MTU9PDEaFqg
N/N/qqai2CeQWvT9wn3J5Orq6mCoNKgBqOhLV+aTRYsOyqLeCZ5L7PeS7n4T B3BQYG9O+umy
x6d7MletFSvpWG4uOeV7tptLNSRWCkIMh3DYwB0CPfUlC85yznaTabW4qJ+V +0cE+hpA1yqk
4jTSaeIo7hJodvI5gYPVXCfnrsqsn+qdiUMgYeI4TghE7lcJ/AwVenpnDHQJ 7K9opB/LyoJv
512B2zK2KyeWl+akN23NOVKgPZPPWs6M5dlqHW7u8xflzhK5o3FlxGTFwsFM HcOUaZ3ymd0L
VkGbiKMZCZaUv2gXBY5ndql06keynrR8cjvT0yhLo45VLDZOYhi4vTxfpw3c K9B5KxwTH8cQ
A8ai0Wt7wZbe2Fkd4TEV+k+a+BTuE4gHxEby+WsCt1cdILWTUpL3m/g0mJvW QDJ0jymqPW1a
/gETwxgRMAP5K57tS4+ZqhIP9lIGSOhEJeBjjiNzljPs5ZaXpOuX42/gnMCh nfU+smw789KL
4rM8HNOLMpFVjia640jjQVVY4ztKr3RMZlQML5iYwKSAwQhNWEvMzAESrBFW YJdMXMYUc2gV
CtKdFzhV9/A14Mcu8JDAnd0Ju5hw837CSqxYjj0fsNVpUTaumHhY0Yn6+UA7 jlE8SJtSp0/g
rluXDXMXhPucl18KEATON6y1s5ZvTa8VZOrWjpRr7hFVc4+yp++Cp/I/ZyIL RqmzUlmjvOd4
GKrJjX84ctXlWYLVZbdgIqfMnqg1G7hRMR6FLdCmSmaepnyaSnQrHy+oXlCy rs71bgRZ5Kpx
2aoDOcu6HdVQ5iHM5t0V6fnT+Q+XmFLLrFedAp6JIgqssNBKtePT5WISWDax ouSO15ELLFT4
tdpu0bfcrKzjVsjGwOM8Xtsan0JU7S6ONd0d53RPOZSpK0SAp9iV63XOAONJ hWE4pW5zpG6T
DZGepZltr4MGEwA9o4Aiq2EbOpxpIMhgPo8XDHyLnaBekZl4Ed9m/2S/4Pew bgeoW5tRvBz2
pxUVzER3FN/hl6+mH0iXTc+z+M1I5BeU1KsCopvMPVlcdmizo1Htfw9XDHyf HWBnkgz8cNtu
QDSGH+OnBn5SNaGF0SwNMBkVE8vhR+Rn+DmrYWRycvyR0eHp9PnJy7MCRxsV b5ousN73MUTb
EeuOZuE7XcS/MvFr/CYccspKJ3p2m7WY+9/WzoVlgDjhKouzsuDJLOPGLnH4 8rLr20tyxi7a
/KAPu0yFpb41RRXoSsgqOpyebuDPJv6CddUmKvNgzWRR4kaTU/llLyvP2Woq OVQ7GAwqQ2wi
Y64rPd3IJe1HS/E3sMnGf+sIULw0b/KTx/rkbw+n8DbEYCDKVYyrp9HEJ6Br A/H2299BexPe
w57xvn+htW99fAMdfZu48ybE7BaOrWvJ/Zw6TxLtI3w+ggivJ4nZhXbuHEAP DqIXnejHR/mm
g+htlOnmPvjG4Ls+PvXzxz8Fpg2cNAjKUS+kcy/vysievi0M/JUPTdpOnHdw cGnBkMY1AyGc
wiDvAkl8LAT4BXeV7KX+d3C3wO/5SJvBvybNGDim/KVfn1jnJaUuZ9ZvYnT2 JtKz7ee3MEbd
jMAmLrZP87KJmS3MvkulwOkOHcYzSOABrofp0AgJnC07TOMhMfX0OXye1JTD EbQkWlpauPoC
vlhFt5n3DE1+KaTbxV+Ldk/hAUf7+gc2Ya3rm6wwXQyYXm3MtF3jTDIdl5ik KTJ9SLNMBDbL
LDO4BkeHNIMluPShX9tv7oxEuJ1H4QPTvR7Q9T843UdJd45050l3YVe6q3hs J11OryHdEb5S
+YjfxBoL+IlM//qOkirwIFyvylw8NBLl6sv4iq5Gzri1eE8S76u1eI9T84kG eE/jaxqPM3At
3jPEe64W71lqPtcA7+v4hsbjTBXivcYgqBAODbyNb06ceh+D5ei/xOgPqMC/ wkslDd+tpOHU
ejkRbTrgLxHtZZzGK9p+X4BcTsJQOQlDYc3swd1k8Dp1+zVD8R81Gz5PmWK5 gB7WjQhoHXgf
hrgBg5zeqBiOaMAfVGW9tWywtWywtSrr7CLRUYMqQg15oZXzVFXKsb4N/Eif nXJYAwtvVlmI
lS3EyhZioUtCTUYNQK/vBP3DrqABbcFj9GYIek/Y76JsQr98Dzd2Yr5V1e6i IWYMv6N+c3D6
aDWQ/aN+o46j0PstG/jTTrR3NVqT/gXNdQN/0weviZ/+G3grov4b5O/YisT+ B1BLBwgpDVm9
YAcAALMRAABQSwMEFAAIAAgAYVs+OQAAAAAAAAAAAAAAACoAAABsaWJyYXJ5 L2Jpbi9saWJy
YXJ5L2ltcGwvTGlicmFyeUltcGwuY2xhc3O9l/1PHEUYx7/LLVyhW4p9oxW0 rbb0OEpPxVr1
kJaXQ0+uUIFSi9W6HANsu7eLe3sovr/HH/zJGN8S/c3U1EZbmkBqTK1GrdHE xBhj/GeM35nd
u54HqP1FkmFnZ+d55vN95pln4Mc/v7gM4A68HkWVhq22NeGZ3nzCys3aiUzw kmY/Cl1Di+tN
J0TWtmbzIiFyU+y7ngjmpoYmTomsH8yt0bC+6Cl0omHdYPfh1MlUX6q/+2hm VMOGzClzzkzY
pjOdGPE9y5lOaljTSfeO5XdpiMRaxzTove6kqAXNDUSxho4zliMGC7kJ4Y2a E7aQjtysaY+Z
niXfw8GaTuWmDhFsMNCAOrryZ6y8hhszq4nk+oYY8U3fyvbaZp5zd8RaMyuL TqkZyVpsxY1R
bNOwvULwETN72pwWuzKWLzzTzhtoQrOGaCbdM9w9fFzDzf/sWcPGkKVfmH7B E71uwfFVWNJ0
My38QTNHoZuIuCyQEusWA7diFwMXrnjypNwADbestm63T+OJgi+SdYx3i4E9 iGlYK/rmHTNn
Ze8XXL07ll7NnEsXsgQ17RA4OT5ejhYkSDKKuIaGSmIqyhcVbY4tF9Q6Jpn2 GUjgtjKmEcl0
6HqYlgPJLIs64slg8ToG9pgn94zbv3uF7c+6uZzrJAq+xaTPWHmfO1U7Yk07 yr+GA//FprOU
g8FayS61ZQcM3I17GJ7Slh0bTo+mhkf+YdeGxZTwhJMVjCxRdv7r2jxk1Njj uqepcP/10Uqr
kPWggUOStb7E2jM0NEDSepF25hg+MSxy7hwj8mZsFfa0Q+mOaYe1I7l8G0MU x/WtqfnEoHxY
WZ4J1+mdMS0nuSr8qhYyjfoMFryOKPo1xFYmU9pLeDIGa5HCAwbSeJDpN2Hm rWxR3lxseU79
T0IyBjrRIWvcoIFu9HBrXX9GeClnUsOe/xh1pu9UcDjSfRo0Fhc9l59mbtx+ 3UwsNixZ2dOH
zdmwDOtClY3GWHrFYiBFHDewHTukiEcMjOEYT6Mn8q4tY6uNU5KkHp2fVd7U gd/CA7/CMZbO
Jgy0Ye9a3ItJA0JW/eqsLUwvCpaYTcpI7W2va9u0Irmcaxk4hdO8NMzJyW7b 1rAt3NOKucnW
ccmZM3ASj5OMVWPMtAvi75dZKa414qiTl8B6LC3xIuAtMIsn5Jd0fqT4hT5b 8aSBpzAvvzxR
4G1RUQWLGscl7TMGnsVzDJOVT+Vm/Xl1JyiwFwz4KLCIjbgFLyv6LbkFDWU3 3D7pkrdc2nGE
p+4ZkY/iVYZ05duLGov3F3YyvBG2arZmeRfz74Z1/F0LGfi1fGvlU/5Uaxdh XGCnCvX8Xccn
cBd0tGO9GgX7DSWzDj6lYXV8CTdUmnVx6kFlZgSTsBGblIPN2BI62Bc60BfQ eL5kX6PGHiiz
1Uu2N+Hm0HZvaFsVOVdhOVxmWRVaajJVQ8u7VSSA+nhkATt1fRG7r6C1cv1H yrzUl7y0qXWl
lx7SSJ11ykvbItorIzDJCAvlZUswM/Qie7cz/pKf5Yzf7lSW+yvoGJW7Qrp7 K+mcFek6y7zd
V+GtegFdq3l7akVvrEuh1g+pVZd72nxW8e9X34OEaGRriS+i9wpSbe2XcH8E 5/k6UP7a1ty+
hMNy1YhadYPy9jIvo1f5t8rrTLE3FEE8WKUUpy4M4YhaqQsPcV+DvBrBKP0c VTkV2Vpfzwms
PiHquyFqR1OAGkfwI02b2Haw7SbfwxKyV5Gejzc137SE8Wt8W+gZeIun5W2e nnfQgve48x+U
MXaUGDsUmaZ6J/CoWqgDj7EXMNZAb9Z1nTNYekLIn/ktwueJEHK0AnIXW2d8 L7NyEeYFCXoJ
WQ2yw8GpS5ipwjE5PlAcHygfb9q7BPtCSc0+tebHVHOGnj/Bbpzl2KfMlnPM ks/Qj89JcJ60
C8z6i0rljoCvpPJESeUJ5p5L0qK2NY2NHGdxDLV9xG9qn0JtByq03crWHl+A 8Tdp18QQfwne
NfoWniLgS9Jfpu1XVPA1y9E3VPAtfX/HDL9KFT+UnbPy/Amoi6zRWvkPCStt yPpTyOqErNMV
rL1sR4l6FRtkynyPqH4G2yJnsJmDcmQRc+8jygFdPxdoeVpD+chAxQi1PX+u Is9+obZf0Yff
mMa/YwZ/lGlxSlqcMi0bsa654ZBWxYb1YeP0FxX6SzxYUDV6K17BazW1fwFQ SwcIq4IWoWYG
AAArDgAAUEsDBBQACAAIAGFbPjkAAAAAAAAAAAAAAAAxAAAAbGlicmFyeS9i aW4vbGlicmFy
eS9pbXBsL0xpYnJhcnlQYWNrYWdlSW1wbC5jbGFzc6VYB3yTZRr/PxnNl/KW kbI3CNKkljDE
QUEppYVI2mJbwOJpL20/2mCb1CQVcOM+t+c6t57euZUh0TpwngvnOXB7Dtye e596z/uNJk2/
pNzv4Pfle7/nffZ83z75293bAMyiehdshAnt4aZYKLbeH+7obPcH9Y9loebD Qq1qgEEuOAjT
orFWv9rcHu6Mq361YzWvozFVJ6nohZxHGG5y7M2MkN8UjR5WUd4eiscJ44PW PPX9UkKBwcYk
EGtj4YQaMz8Ht8uvUKIrppqgIZJ/eSihtkaZrCLS1UEYl02M3GYpY9JpaprW qM2JikWhRKh+
fSdrPCkbtYnCHJRwPBBhXVoItIrgDsfLY2pI+y7Qt8Kh9vCR8luZx5wYsB/B XuRdQXCUR1tU
NwgjBQZjCGFQMBxRq7s6mtRYfaipnVXwBKPNofYVoVhYfhvAvHkaGwXjCKVt iUTnXL9/7dq1
0w1Np2tas7YJNaJG/fEQh0aNaxB9bYbGjQmY5MLEvkGrDDUn2CMCk7EbG6UG quvqy6rLK1jV
oDVqaT7smCowBrsT5hQF14SOCPnbQ5FWf10iFo60lmbzpUnvXSE9USTggiJX PgG3vtpDIF9f
TRcYoK9mCAgUyNUsgYEYJFd7CngwRK72EiiU/nQk2sJxGcd+spzj6JAuJYwu 8mYaaOCVujEP
+7kwP2s9mKUwpVZtDccT0n37YwHHPeU9bzYvZJKWDmBpCwXKsYgwoFVNVPTU 0Z4Wzu2PL0eH
UCmjM8yNJTjAhQChxJpmXUe7P8HJ7T+oKiiT3GAhc2EpwZ9FUhYqtmMJqgSq UcN5qxqlOrEo
q8J6/Ut1DxSoxTDCsGatoAyG5dEIp3UiLjHqBZZLjFHhnjKzwFopcJDEylsd U9Uj2YFDEm1q
ZnMqqEvwsirUqZWYC3/gFpXbpQQXh2Uh9w+mNlaN9eGELNAp2e0rS3DEmroS 0jMhNLvQRBib
yxcCLWCWw2UOcLS7mrnnhdorVa33sS+nWshqjnZ0RCP+rkSYG3SQE4qFtSLs QhsXQ7/IAmvA
RtlZInu/KOBNyze9R5a6wM11Yn8mpjlmGXtMtm3z2+y5hIEmqKwr0RaN5XRe rbpajamRZpUV
iGdXoAeNhw5zN2LN7TX10Vgd6pDtNQ2yUhswhpImUGrGIDeD9H1dYX1tMBmU AhjoBRoHc0AR
Cnt9Ny6LhZsNuoVp84encXbTjYE1LINGjwdht+yUacNqSMoyo+1adrxUSyec JHAyTtFNMHt1
IBJPhDT3Ts4uNp3JaQJ/wuk8xPVSNif2JJlb/faBMwXOwtkcFoM4Lb0mF+Um D3hXSA7nCpyX
zqEnP+Tm+QIX4EJussamfnCYmEM1LRSS9GKBv+ASDqRBmjo5TMlB3hMPBZdx EzF8L/ldIXAl
rmJYXE3oqTXMqtdrNl0j8FeJO0DixpfF1NXhdRJ+ncDfJFzR4MtrAwqu54mV 45Qwa8aM2WbX
lj3pRoGbZMcZqHWcrk4+i/CO1kpvETgKNbKX3CZwOzZykwi1tGSoabQI7yoX NnPIzdySWavg
Dp60ciW5JQXuxF1co7J9mznR0k9I0wT1ARgOWrVq1S6k1d0Ch6JRjqd7Be7D 8XqR6ywU3E9w
JmQzl6gPCjyEh9kjmqJp+XdDVmVTbT6nJuHVYTVmYUJfSCDQx/JVxr9dmDXS in8IRHSDHxN4
XBqcxwYHIgkFT7K1nbJDS7ynBKJolKtnBI7BsQqe43RqNhqOgn9yglatj3M3 05L2RYFOHC5X
LwusQ41cvSJwJA5X8BrLCGltXULfEHgTb5luTGvS27O6MdXwd8WN/TP5/xyd 3dPpg+lf3BAy
GqqCd9lpwVSlvy/QhUYFH3A5RLjSJewjgSOk0z5hVP2yo4XjM4G1un//LXAI ahR8ydGS95a4
C1+zN01Z+ghS8C07XV9Lou8F1qPRhR952KW0MkeRgp+5/lLfkuI/AkejUR6j fxP4na81EJqV
PeeeKdm8kIZVOoBs5HCRnZt0/9iCnDIf5bCuWBTt4hOYQi6Zk3JQushNGJre Rszhp9AAVi4d
wvpTgaCBNEhexWSa6e28MWuGac18F5pK7mngJoWGCPJQoSyOhrr6itoGPrMF rbSWxUjDBA2n
EZwp3D81FnoM2glL+lE15/GNMWQkozF5nWKdRgkaLXUaVFceqOAbSGNloLw+ UFMt98YKGif3
3AsDNYtry5YtaVBoAmdJ3+OFVHiSoMm0m7zUSq+mJl04q7o9c26XWnb/41Jq MVXQ7jSNk16f
uLVqPNoVky1k/v9wKYoZVH6TXGPtFeST14RJxjBfxxeIFrWlSk2EpAplkUg0 EUqEoxFZlbSH
oBKJPVzHrpc37QwUv6AZEmVkGkrjzDQk/SbS+76k0GzCbGNa+63110OdoZ+L 5vABJ9MHCu3N
HeawcKRFoX35sKC2qx18L6qJtGulUipoHvGFtoCzMKUYoSprUOWxpKVC52IR x4OtjisK7c9V
YYhWqIwPk+k5NldPMoXKecw0heKqnlh5Zmg9fXkqtJjzVvvzxvQ1nSGF+Dbr CnV2hiOrowrx
LXXoArMU1JaimtpFgeqyoFehKq4Enaot3KTGIrytEF9MZyyoVBPNbUV1yxfW VQQryuu9+Qsq
2d5wa2Spur5Iduj5k+PNbbHwmiO4LU/2cq+q09SrDMv73oi+f1KYLpXm7hSI RNSYlvby/qOY
93tM4r5q58cJN2zybx4Av93GO994DzDeAgXaeyAG8Ttf/rVI+/YY70LtPYqx h2IYcx3OX15+
y39O+xaM2KShjdKIbfyrwsH3+dEaVD5jesiO19QCZvk8Yzdj/J2Y4qOtmCZ/ vPKnWP6UyB+/
/Jnps2/FbPkzJyXDx1LAw8qNIlbZz+rthZGYj3FYJP+KgGk0C3vQoZjJRzCp g9AlYm/sw283
9sVcQ5ubmaPcW7kZIy7BkM0o9YztRpkND8C5MfX1IOgSDE59X4/8e0ANd6Li AdBSBztgMxZ3
I0hY6UtiGT91/KzwbWTWdk3lyZqnj2X/bcA8nIgFOAUBvrVU4UwciHOwnK8Q pqrz2F0Nmqqr
+FFgHzq20oWDeYfns6G4H6Qp7vTdgWkbezyTpwEvTbPaaVhN8jhqEM83rC6U xN34I6dKN1ZL
o9szWV2bxqqwh1UkBytHNla3WLKK5mDlzMZqqyUrPidmZZVnsIplstpmySph 6WhvJvFjlo7u
sjTJm9vRz1nqcYSlSd5eju5j0quWrNbmYOXMxupdS1brLL1TnEn8qaV31lt6 pzi3d7611ONI
S5OKc3vnV0tWR1maVJJBTHmWJh1taVJJTpNokKUefCGy0MOfSTzSUo/juLv2 JZ6ZSTzJkngD
TjCIZxnECvewEx/AhEx6Xxq90kNfa7Z4GmW0+CtZ+OxL4Njkc8ge7rMncaps 9bIoHUmcoS2c
5iLPXLiSOMfnc2jIXgnx2o0tr0Pb4oVTWzg1nGIJKTZxinWcPG2rREJK9C1m +2c5VHxKEhfx
YJHjRO/N1ex/0DwoNB8FtADDqQwTaCGKqBwzaRHmUiXKaTG39yVYTgEcSkvR SkF0UhXWUw1O
oGU4g+pwAa3AFbQyzTtXGt5ZpckihYHLTTfZ7ufxytPRls86zjHdNMfnuTSJ y7Xfq3lEJnGt
HDt/N4bSkqDe0W4gcHBu7satNh45EubZ5Nlit7PxW/k7iW6ugnv4cLONHA7P Jt6w27XdB7Td
R3j3Ud59wtx1pO9u5+dpz7Oe5602X+DnJX52eF7tYa39T+J1TROv523PO2ma vGdoslOiv52p
yYeSHXk+JrtN23TYU7yS+JSfz8nzhdUuh9rzleebNEnfpUv6KlPSDslLGqCz +6qP4iWeHzw/
OVLsfmHYr91EfJ6kPMnyB42lw2TJZVlISiHlJ0non5tpcJKGGsuRqeUYYzlT wx/vcCRp4koZ
XJrC5wUq4qeYn+mplDwWEzgl2zglw5yS7axBB0ZRhNPycJTQOiygo7CMjkaE jsGZdCxupOPw
JG3Aa3QCX8VP5MvfSbQnnUKL6FRqotMYcjqdT2fQVjqbHqFz6Fk6l16j82gn XUDf08X0K11m
I7rC5qSrbG66Wkvh4Xp2GilcQm/STD5bUSqZHfJGoyez/Ro+YzI67SykWUEt IYtd99GeDXbP
zroGh2dLXYOzkPaqa8grpH3qkjRXz1EdRdtwFNJ+jCTR8zzbTJRHsqI8YaJs z4ryrInyQlaU
V3UUjlKxM6Uux9SEz0w3o5AWaHYs1OzowfH2MvUdK1Pfy6rBThPlw6woH5so n2ZF+cLUpbiX
Lt9Y6fJd/7rsyC2o5yROZ6OZf2/kVLgJTroZbroF+XQrBtNtGE23YwrDp9Em bqWb+US+hbOI
RwIf6/enJBYz/AC6C0upGzV0N+fzPVhB96KJ7sMahnfQ/ZzfPMHpQcTpIW61 D+NkegRnMfxc
ehTn0WO4kB7HRfQELqcnuSdux0aGb6GncQc9g7voWXTTc7ifnsfjDNtOL+Ap ehHP0Ut4nl7G
DtqBd+kVfMbwL+g1fEmv41t6A9/Rm/iF3iInvU2DuEo89A4V0rs0gt6jkfQ+ jeeq8dEHNIvh
c+gj2os+prn0CZXSp3z5/IxvgZ/TcoYfRF9QA31Jh9BXdCh9TS30DXXSt7SO 4Udx1R1NP9Dx
9CNtoJ+4Sn/mavyFLmP4lVyNV9FvdC39TtfxceImrsykzUbbGP6gzUEPcZU+ asujx2wuetqm
0Ktcse8w/H3bgFTd0k6jbh2s5SKq4DJ1yD8pGCM+opcrxhdSZVCvIqcR8SVa xA/oFWf9+mIb
CodtGJy24XDbRiDfNhKDbaMwmmHjbGNSsjHelM05YMqeYSU7GNQzv7fsaivZ U1j2VJa9O8ue
xrKLWLaXZU9l2cU5Zdt4PDMDOpBqIe+n8oJ1MNXluf8LUEsHCGecFfVaDgAA rCIAAFBLAwQU
AAgACABhWz45AAAAAAAAAAAAAAAALQAAAGxpYnJhcnkvYmluL2xpYnJhcnkv aW1wbC9MaXRl
cmF0dXJlSW1wbC5jbGFzc5WVW28bRRTH/+Pd2Im7SXMjpXXSOKXEaxNiaLkU XEqD7ZSlbhti
x9A8ENbuNGy7WYfddVGEuD4i1FfEV0CRaPrgSCAhnvlQiDOz67XjpJWwZM/u zDn/8zuXkf/5
94+/AFzC3QRiDCnbarimu5e3dnbtfMXyuWv6bZcb9JqAyrDYcrfzvGlbux7P 85379NxyeWBe
vtN4wJt+YBtnmOyK9XQYxtbWjWJ5q1wqr65sVGoMrMQwWmw5nm86ft202zyO 8MMQv2o5ln+N
QdGzdQa12LrHk1AwrkHDKMPpiuXw2+2dBndrZsMm/clKq2naddO1xHu4qfpf WB7DXOU56RUY
NF71Td9qFm3TI/O0nq2cnG5ZWhRG8CLOJXCWYb6XqlzXzOZDc5tfDELYnoYU ZhmSFaNWXl+p
bayXGc4/X5xhKsRZ5RKy2Go7vqyEwTC8zf0112pyuVESJBc0vISLDBO9IFtb stoMF54Va8X3
XavR9nkhSeVe1JCBznCKl/Ycc8dq3uAUcUU3nuVe9d12k+BMO4QsbG5mKw/M R2beNp3tfDAR
hQRyDOO97VKrTX1JIoslDa8iTRHvyS3Zf8rOi7JT9VK2LixfFy3PC8rLGt7A m32UVUF5/f9Q
HkcU4zXs8K+6YblM/YxunJiQwHhXwzzSYhqvangbVxhG7gfyBo00oyYlXO61 7EckxzZJXcDU
9nbpdZQa23x4y9ztzieXKcxQCieAiWCrGpZF9go+1FBEKYANyzV53IuuDt9w PKGq6obQUHBb
w01UxInhVbsnm+JkXcMdrNF8Vlttt8lXLQE1dfR+LIsYdEcMx+GuHFHuJfAJ UZ88+0TYnX51
gTJQ6DtE31kkMEzrCF3wGJK0quIu084Y7VymldE6lDvE6QNpMkG/SVpBFVCR xyQ9aYERpjBN
q4oXMBMKLIcC6lOceRL5x+XelT5fNfKdw/nQdyn0jSn7A54f9HnGQk8m2h96 FmRqwEROeYoF
Ve3g5b+R7eCV3weEbvYJTURC1NpQyKDqKJHQn8jezRzitQ4uDdaihnFsSLEZ +d4VE09vyQIz
MZSh7I+Up0qrnvpN2syj95kSUXIdvEOBnuRSs3OHKIjKKTLamMT5jLQ/p2wb MmIu0Ioi6ngP
12RKOt7HdcmjY4WeFKqcqHFs+hSd09yGPN/RidDNnMSTWwpq10H5IJdaOsSN gwhnhgoN2BTY
IacWIX2JRbgSKx1IRliZCCtDdf2IsPph6CqEMA75CeR0CHP2CMxYgHGIW4MU X1Ocb8j6W5zD
90TzQ1870hFFOqToxhaDQpctiq1K+24h0kdiU1PGfvkVQ+q+si8QPt4f6MtP FORnLOBxX+jj
BRChh6BMJxkZVOUg1Wh4xCgx+uOo49P4yH9QSwcIZ2Y+KQwEAAAJCAAAUEsD BBQACAAIAGFb
PjkAAAAAAAAAAAAAAAApAAAAbGlicmFyeS9iaW4vbGlicmFyeS9pbXBsL1dy aXRlckltcGwu
Y2xhc3O9l/tPFFcUx7/DDiyPESiiYEEF6mMf6GLVVl2qvBa7dQVlEZA+7Oxw WUZmZ3B2Fkvt
uzXGpL81TePvbU2tNmATCKYPf2rTNk3/o6bn3pld1gWspkk3mZ3Lvfec8zmP e+7y+98PfgLw
PK77USahydBTtmovRPTMnBEZt3WH2XEa+iFL2GfZ6QjTDH0uyyIsM01jy2bu 1thw6jLTHHdv
hYTavCJXh4QtQ71nY5diA7HB3guJUQkNicvqvBoxVDMdSTq2bqajEiq7Sbup Oycl+ALBMQly
vzXFqkDiCvyolFCX0E02lMukmD2qpgzGFVmaaoypts7/9iYruoWaavjQoKAe 1aTKmdGzEnYk
NnGRzCss6aiOrvUbapa2tgWCiY1djokd0So041k/dkjYnVeacN/nVG1WTbM9 Ca5dNbIKWtBK
WOMj8dHYiIRdj1csYauHMshUJ2ezfitnOiIocQn+NHOG1Ay52UiE68LIqToU PIc95JFr8NIl
Hn0JHZuZ7XVINpVzWLSagr1PwX4EJNSwgQVTzejaaUbGewPxzcTJck4jTtXw eKOTk8VkbnFE
/QhJqC8FJoeyeYe2Bdb7ExzjTAcVRNBVxJTkTD1Pw7QeiJeY32RXXeOVFNc+ y5ql1O/dIPWa
lclYZiTn6FTuCT3rUJqqknraFNolHH0Sme5C+XFL0ZMiWy8qOIbjVOT5bPUN D59JPiZdI2ya
2czUGIWUKNr/1SyPW9ycZ3aW9U5NSfg0sInquEkFa6qGd56j68Pr6TYtR59e iAzxl65RqVpm
/4yqm9FNg7CpBE/vKYV60GE/eiUENiYTzhTwuFM16EG/ggFQZVem1KyuCd/m A+sT/b944cNp
Bd14iWgsZ4bZMZNo9j9hoKmWpt06jQ9IkOiYy5lsmkrx0FOTUCFR89Bmz6pz XjuszSd/hGWs
ecYDd17BCA9cjQicO89dGFUwzF2QmTj0TYH4hkeZ52xCwW60caFJBRfAz5LN spYxTxalSYoC
d3R0YY5xbeK4bqfjusEh5MpUBWF01uAENAVTvGGXawZTbT+mqc8JIVEB/ZZh kBQ5y/fOKNBx
mRqrOjXVaxjU3r3kl+yNBic5p6HgDVwiMjrzY6qRY4/eQ4VUVLALZpYDy4E4 x/PBVmBhjq/E
s8n8CukMYl7BVbzFV67kqNOX9LC8j5Oc9m0F1/AOhUnPxjJzzoJo6ALsPQVZ kNbqpJWzNTao
86zVrV1OB7lGaudx02S2uCNY1o+PKaIbXzzkYv7qQTtF10dPOT2t/Bal+34L fVeBx72G/grS
m3/Kpe+hLNGgDLX0XU1v4AhkykydmAWN6wtih+nNBctDK3imVKybtr4kxBR3 E7aiUSjYhu2e
goOeAvk+mhYL8hVibrBIVi7I7sQuT7bTky3z3S2RPFckWeZJSrxSPcljIhJA bch3H+2yvIy9
DxEstX+xSEttQUtY2OVa+oiG+1kttISXcaA0AimKsCa0bHd3elr46BDFn/NT z6O1I0LyaAkd
ReUFj+5EKZ2xIR31Ho/uOtHJ9A633hEWO8S6+2wNLePkQ/SED6yiz4fFULj1 wAoGuQmfMFFL
b1BRN2KBfkVcE6ZCrrqCC2G8jLhQF8YrOCMcDCOBsyQ7JFJV1lhL68NPjXSu gJQsRbpOxm8Q
0s3/hESdykO66SGFWlykdrgfrqOJnlbCGl/kbIuhltadK7i4RtQgJD+j2/tz qsovyJ1bRVSh
AlVIsEhi9CpeE1QhvE4jl6ocvmZZpg3UmDysr2iJu9vjYR0rwWoLdVLBLuPN JY62ipQEPqBJ
top0GcaXQi2dK5hdKsB2iEP/JcF+TcfgNjn6DUHcIc3f4jju4RS+E/Btrt0C fE8BvgcZmASf
R65somnqiB7yDVrinnV5yMES5N2h+1AeISbGFVxZQ9xFnQlYIcRVOqsPCOUH 0vIjYf5MP/we
Fp2jrgJel4eXh/Lz/xSoj3pQ9zyoCQ/qfAnUKWL6FQ08yb/AL9/GDt9tbKNJ PrOM3C34aUKW
77rQ1K7XZgj+3bslxfAbwf9BkfqTbta/ioAnCsATRcB1qG6u75HK6EEdPbT1 ffDvD/AhIJps
Mz7CJxVV/wBQSwcIMStBhyEGAACkDQAAUEsDBBQACAAIAGFbPjkAAAAAAAAA AAAAAAA2AAAA
bGlicmFyeS9iaW4vbGlicmFyeS91dGlsL0xpYnJhcnlBZGFwdGVyRmFjdG9y eSQxLmNsYXNz
lVRdU9NAFD0LtYUSpXwIiiIIBdqiREBFaEGhFsGpHzMw6IMvabqUYJowaarD v9IZxRkf/AH+
KMe7SShQtrRtpsnu3XvOPXfv3f377/cfAAt4HUEHQ9w0Co7mHKtV1zDVvD9Z L2pHLnc2Nd21
neP4fAQhhhGZ585Xw9UPGMLugVGJPyK+fHPCNPlnDMtw1xhmEq0AknsMoaxd 5N1g6FFwDeEo
OnFdQQQ3GDoTwqE3b1j8bbVc4M6uVjA5Q3/e1jVzT3MMMQ+MISGVYbqFuPF5 ktqlaxW+Yduf
GZbOxApDOpm3nZLKddM4qnCVl/dV3S6XbUu1bNfYP1YDtnQUQ7gVwTDDRPOg Cm5jhKFPd7jm
eoGDdYZkotWItMN24ZDrLsONi5pp/0RCQWiGlbOcAltbaY0ruC/kDvpyL2ZE WVwiZ4iK+B8c
w3NYPgvvm9qKPq1gRkQf8KP7DLXgsXpq2gw/d5pobtWhblg9n/6puS0NDxQ8 FBqGT3fglKWm
Y1AWgupQ5Pta1XSzJIlhK3EpJtdth6u5d14h29K0oGDxXFUCipqgsSahGBIN tuVQ+6KppmaV
1MA1SgdySUESKTr7klpKASsKJhFnWGyesxS/qkAFXTYTl86j1P2FggEMMkzJ Wl2KyCoYxT1q
1R276uh80xAXx4j0uM4JAobuHaNkBT2Vk14t/lWZabGKa1SE3pylm3bFsEpv uHtgFxmUbcvi
TtbUKhVewTgp7aS7nMVi4kakUQ/9I+giezeNnqGDHiCamv1Jr19QvtOsA73C 5q0wwm0jRiOF
xsLah37PThsWsGToK3y7Uj8QPcHNbzWOsIfJe/gh3yfAi9Ed3KV1JjZSzjRW z/S+IdOEx0Q9
I2eaqmfabciU8JioXeVMs/VMHxsyzXlM1Idypvl6pk8NmR5TBddJ05OAaTqo Wzg1e4Kn9TzM
46F1wkxSjSWY5aswKtIyTOYqzADWZJjnV2FGsS7DbDTEIISX3iiHTe/7Clue dYje2153Mg9B
v/9QSwcI3zhpIfYCAADGCAAAUEsDBBQACAAIAGFbPjkAAAAAAAAAAAAAAAA0 AAAAbGlicmFy
eS9iaW4vbGlicmFyeS91dGlsL0xpYnJhcnlBZGFwdGVyRmFjdG9yeS5jbGFz c41VW08TQRT+
pi1dWxZbL1ws4AVBe1FXRLxQBLEWaVJRU4LRt2UZ6+K222wXTX+Bv8AHn018 MlHxFjUx+mTi
j1LPzm4r0AWbJjsz55zvnG++OTP99fvLNwDnsCAhwDBi6CuWajWUdVs3lKK7 mFtVaza35lXN
Nq2GhBDDpGmVFa4Zeq3OFV55oGhmpWJWlapp6w8ail6pGcpWWIFMDHLFXOXG bVV7pJY5w0Cx
Wc8r5XmyDN0isvREt7WHDENFP2Kul4IjJb1cVe11i3LmdwmdLu7O26OcnaGc 4Wm9qtszDMFk
apkhlCM+UQQRk9ENWcI+htH/qzU6HkUcBxzMQYaTSV9yWyHZ1HIEDH0yJOxx ZgMyuhCOIIEh
CYPk8RdNxjDCpAUvLJaW5hZzeYZYUa/yxfXKCreW1BWD1NlfNDXVWFYt3Vl7 xpD9UK/Tdjoh
x9BTsqngTbXmoeN63XPOm9ZSo0am3mRxTX2sKoZaLSu3Vta4ZmdT9yWcYBje fgJcMy2u5N2o
bowhKSOFNB0AzxlqnXgdTabazs1DiYhsN07hjITT1Ce7xclQcJY6q8ztfKsF R3ZO/q8Zw6Zg
58jXti8SRLO4anNPKIY7yf+02aIz6NRn7aX9+zGKC7gk4SJDYufmlnEZUwx7 Vs3mrZloJ7JF
barfth0J0wxjHdEiXWzVIjUZOt4xwz5XrWum+aiVJ+VzCP5KMBx08Vu7k+GA a75r6bRsWfub
wbQS70PL46XxlGiZoyVz3dL4vO50dsL3CpxxNKOnrFCtcks0Fq/jGN3TID2k AYjLSrOQc33J
GhHWqJjTw0HfHrJUyM9oHE5/wt70V8Tv0WT/B/RuoP8nIhs49A79bykgiMP0 TYiUKQItUPoC
PSlp9CGDIZzGEfLIbjIcJSLAiGv5Q24mCQ/DcYx6pRtEJ0BjOkO1XqIr9Crz A2PPMZj5jrHP
OMnwGRmGpjNIvxaPPqoO6jMJU7SxaeJxBUnMCg59blaPgzMbp/8VJth0IRgZ YrSYwHmPRs6j
EUu/R69T+iMmvyP7Rsjl1AoL5mubcsdauWNUdwZOwllc9RKeEmtCs+05Gps0 Cng5GOY6QD71
RV7rAPnMF5nrAPnCF3m9A+RrH2QAefGdxw0ao+SLCwXxF1BLBwiGGJCmVAMA APoHAABQSwME
FAAIAAgAYVs+OQAAAAAAAAAAAAAAADkAAABsaWJyYXJ5L2Jpbi9saWJyYXJ5 L3V0aWwvTGli
cmFyeVJlc291cmNlRmFjdG9yeUltcGwuY2xhc3ONVGtPE0EUPSOFbUuRl/gA lYIgLa8VFCEp
MVnaNTSZtkm7RfhiM10GWLLt1mVL5F+pXwia+AP0PxnvtsXHFpR+mHvn7rl3 zrlzp99+fP4K
YBUbCm4xzNlW1RXumdr0LFvl7U1RnjhN15Svhek57lm21rAVhBjWHfdQlaZt NU6kKmsH5Duu
VN0OXLUIqF6RzNC3adUt7xVDTyK5wxBKO/syih5EYuhFH8Mgt+oy36xVpWuI qi0ZRrhjCntH
uJa/7wRD3pF1wpDkN2SdYrhtulJ48vIjA0/woAzTqdWcertYuZhNJbsQAaGX 1VIKhhni/2Lj
04hiCKO+0jsMMzc4fqcfd3FfwT2G2auZvK9Z6m6OXx4SwwOMM4wdSi8jD0TT 9kriVBYanuXU
qV/DiSQ/FqeifURONFJhPKQW67uGns/omUpON7RKRjO0CB4jrmCScloJtqgf qluOY0tRj2EK
03QHRrGsM4zyLkCqHzN4qmCWYeCv42KYQ4LuvtH0GDYSf2QWqsfS9FLdkWR3 yG/KfAwLAaXc
EfsdpWEs0SiV0tt6TqvwQlozsoV8GCrDRLmkV/R8uuCr1QyjmN0qG3qlZOxx PYwVkuMDuL6b
TWu8sq3lM1wvEuOmazFM/ffGaMBpNogMPahrZidwY5QSLbXH1fIne/L6IV72 O0G9Jzrwf7fI
o0dDq0K752QZ2d75c4Q/tj5HaY2SBeIIUWI/ebE2iOwAWXoWGOwU+E5l/cLv vmBob+EcI7nF
C4zRdEx8wqMLPOnBGwokgwEfsRhELAcRy0HEs9+BD7/ITiNM6wIiWMQ4lshT sYkV5Ohv6i1e
wMFaS0S8TbQjwvdWW/ojOCLUWqszL1tV138CUEsHCOLYv4WGAgAA5wQAAFBL AwQUAAgACABh
Wz45AAAAAAAAAAAAAAAAMgAAAGxpYnJhcnkvYmluL2xpYnJhcnkvdXRpbC9M aWJyYXJ5UmVz
b3VyY2VJbXBsLmNsYXNzhU9NS8NAFJxNY6KxWu1BvChWPPgBXfBa6UUQCquH qsXrJq66stst
m0T0Z3kSPPgD/FHiS+JBROg+eMw8Zua9/fx6/wBwjG6MgGHH6NRL/8LLQhsu GjJWuSt9pkZ2
ZmKEDH3n77nKjJ7liit7R9h5xZ+t5po0/OZc/PYwRCd6qoshw96++OvNnLVu 2iy8Ho8GBxOG
8NTdqgQtLLWxgIihI/RUXZQ2Vf5KpkYxdIXLpJlIryv+MwyLB50z7Ip53xgw tEqvGXpz72FI
Lmvfma5WbP6T1n+UTxI9UCiqx6jobOoxsSECKiA6PHrD4iuhAAn1pJ5ukXIb y4Q2GhXaWKlT
IqyiU2et1Z71b1BLBwhjdyrnCQEAAKwBAABQSwMEFAAIAAgAYVs+OQAAAAAA AAAAAAAAACwA
AABsaWJyYXJ5L2Jpbi9saWJyYXJ5L3V0aWwvTGlicmFyeVN3aXRjaC5jbGFz c6VW3XMTVRT/
3SR0abpAKVBaykdBqmnaEhRUbGsthACRJXyk8ingNt22S5NsSDZgUV/giVdn HPWFGV90xqeK
Mzj4oLwx44v/hv+CM3797t1NSNNNO2pnunv23HN/55zfOffc/PLXjz8BeA0f aQgJ7Mjb02Wz
vJiounY+YXgf2bu2m5vXEBHovGXeMRN5sziXODt9y8q5AnrBmbHy58zcgjln CfQYNQh/t78y
JtA2bhdtd0IgHBu8KBBJcmMUYXTo0LC+HQIbdKxDWzs2YbOGToHuYCwdXWgT aLfSmezU0Uwy
JbDJsItWplqYtspT5nSegXQZTs7MXzTLtvz2lRF33q4I7DRa58lAu5dvXSzV tu9dZd/41NTY
BDdvyLqM8oxZ8vesn3E8A4FDMcMpzyWsXN4uVayEVZil7JStRMojc2zQaOaX gO1Ze65outUy
wfavicAoOrAHezX0C+xa1VjHPrzEsljJvFkhK/2xwVboymIsyhIN6NiBlwXO t4zEs/0vmUbd
eStV66s9ayAIHPufISiqhjCiYZgtsRqUjgNIMD4r6RRdk51WZi+0Zst3IMFf 1Xm2DrE/5yxX
QdmztlVOH1eHIC0JfV0S+obA4Vj633MmXRzR8RZGBTbSRSpbLfEEsGNZz4GA CHNOoeAUvfZN
GXZFQoxjQsPbBFDwfmdX2B7vYFJAsyupQsldVBFflREf05FEn0DHjDVrVvNu 0qxYEiWl4wRO
0o6BCGyLpYPbWRbZ77jdqxeQLqzGhDqN5RHS4GCTanx1RHlAB9Ymmp2h4Sxn W+24H3OcBZn6
eR0XkOWhzjFnqRTYFzMarYKqJHe+p+MiLpFkudOwXavsH+lYrGFi1tRBKBqu sI+aJqKEvqbj
fVwnWR600ss0mydxMOhNxlQzvFSWEUhMU8c0cmx5iemp1fRZbhmMKIfvypTI Zm7ZARBpzuNp
xeHG5RRyJpWtCjtLTvGAFtLytSQ3r8iRe+/64XY2R8t08g3xbA0inu3L6gts aS6r0rY5/nTq
DmBXWWxbyZHS9waXWa1Fs061nLNO2N691XirHJDps0nGp0ZXMjGxUoW9LF6Y NzrplncpJXmx
8n7ls51fC3wLvjfHf0D0MfTnaH+Mjd9D/47KCLbw2cU3MMznCKKcfJ04iK3U 6N5GbEM339uX
aXr47vU0f3OD0NQKf1CgDyHspBzCLhXABYYXkpbxoafYLTD0BPuX+B1WvtvU vlHlr9uz8/1J
6RXEuP7Cs+57jsg7qe5nUPn5lYgyj0m6iQsw1a+xSfo8KDD8BIeXKL4pkBl5 CpbgS3TEqT36
DbriI+GnOB7CMwwN+7F5vOwmjUAKcsz1IM1b9jTjMcjOGY7Kd1XMcc9nPeZJ nKKlUJKMPiTv
ZtqeZnTb6zlO+nl4awbXJJcbEO75A9s1jGc0lQzviXqSZ2SS4jdK6/j9qO9b 5e5zeH9hBQYG
Cpj8/3j4GTKZ+MgTnBuN9EaeIyrlqZosM5fyEs0uK7OrQUs31NIHQUszmWBA Jb2gMKOeV9CP
axjg1BrGdRzBDRzHTZzkxDGQQxYz/LL4NY852CjiFu6xbz+hdB8OHqKEz3Ab X6CiKC+hQzJQ
p/wRZrlPKMmjfIA/dOaJFKa/PqItMBqD1nkUqMvy56anm6OuSA9hPmu6+9SV 6C1MvzWdLNxh
j3e/cB5umWsempSKdelhXepVO6P9f8qyyqp2/I6Q+rjMj5p8o0Ge8WTmw4un Xv2KavFT1Mr2
CYnmA/Sg4QCF6syE4JKFxgMU8uMX8gapo1fXQP+0JXqhBTrvkjr6nTXQv2qJ 7rRA58VaR7+7
BvpSS/TbLdCTK0ZYa/SfW6LHAtFD+FA9F338e/8AUEsHCICyH3dsBQAAkA0A AFBLAwQUAAgA
CABhWz45AAAAAAAAAAAAAAAAMgAAAGxpYnJhcnkvYmluL2xpYnJhcnkvdXRp bC9MaWJyYXJ5
WE1MUHJvY2Vzc29yLmNsYXNzjVRrT9NgFH5eNuk6ylVFvCGXKdvAlYsKWiQx CyYkBQkjQz++
q6+12LXL286Av0qJCUETv5r4o4ynFyKXofRD+57T8zznOZf21+9vPwDMY0VB F8OY6zQkl/t6
O3Rc3UyM1+vmpvQtEQS+VJBlmPalrQvLdVqB0EXzHZ19KfS9ppPgTgIYupcd zwlXGDLFUp0h
W/XfChUqehTkGaY6c61ucusDt0VhS9hOEMp9DRp6GXJrG7XtFxvVVYaSeUmo kUcG/RquYIBh
pnhpWKmuYgjXFFxlGD5uTNqTNFjDdQwzqOKvrBGzc6jRQ2QjGm7iFvVEVF0e BNTw4oVlxBEG
Q7/peGKj3WwIuc0brmAYMn2Lu3UunchOndnwvUOEE+b/RkiUA7YI0zJ56Pge 4QZJyC7/yBPY
Om9RmFpzbI+HbUn09bPvlxPT5Z6t10LpeLZxQSVSBH5bWkLfSg+Fl9wKferw iqGCoaDhPh4w
9MrTkvrPCIrGWNRwD2M5lGmd9pqughlaoU4VH+dKU601W24e06hEa9Ddg1nM K5ijnKdSaFjA
I2JutUOGpeKJCl81doUVGuc9pfOuHJ4wMFLYWwtp9sSbjihfSyQ5kTHSYTSV iItBW/M8IeP5
i0DBMsPov3eWvovjrcU4dTSD6OqiExVLd4WsamwDg+UD5A7Rd4DBI9xg2PkS h96me18MnKDw
SQyggDtkaQkIdzFKz2zUfYoejzETMfEn8kYxi+WvmPyJSvkQUzvReaj0HdNv DvHwCHoGievx
Oddngmbi9MOkFqgQqU5pZynVHP2YFk7IWExlLMYYNk8almIlT/GMnnkKUmHg ebf6B1BLBwiq
hB3zcQIAANgEAABQSwMEFAAIAAgAYVs+OQAAAAAAAAAAAAAAABgAAABsaWJy YXJ5L2J1aWxk
LnByb3BlcnRpZXN1jjEKAjEQRfuBuUPALTW5gAoWCltoZWmjybBGsjthkoDe 3sRuYZ3uvQfD
R1ipreX4ET888x4bmhk31fWuQ0B4+En7yYbiKKmd0usbgprfyI6CWQjn4/Ww 6S+npRZDGerr
9xj+xygcSbKnhPC6S9KWx+gDaRZH0tYgJC5iSetKSaxB4JJjyT9Rt1fxBVBL BwjDuZSkjAAA
APAAAABQSwMEFAAIAAgAYVs+OQAAAAAAAAAAAAAAABsAAABsaWJyYXJ5L21v ZGVsL2xpYnJh
cnkuZWNvcmXtWEtPGzEQvlfiP6y2UkUPxEAvVUigPBIJNRREoO3V60wSg9fe 2l6S/PuO98Uu
JIHQkhCJnLLe8Xjm++a1bhyMQ+HdgTZcyaa/U9v2PZBM9bgcNP3rq/bWV/9g f+NDA5jSUG9d
UHZLB+CNQ14vdu3iro0PHv5QmTR1fNn0h9ZGdUJGo1FNhYOa0gPy++zUz0VM VWT0JZHY3d7e
QbFOlw0hpFtcGkslg4r2xJLKZmCCRwYSDRD2nZZd0nJividpiMKCB5rqSaZH muvL07kaLEhQ
xNAwEmCSlfQ/6WSKUMeFhj4f3+ved8obcCyoMbzPERwPvazbSYQGZPAlL3Oj jpS6RbS7cQT6
CqVM0/9I8AQLmtoYjd9PzW3AoZTKUotgG8+oWLN7/0licmp+YmhyEoktF6Q1 Rj960DsDS0+o
pblCVNnDJS6MdwuTpu/M8b07KuLcKjJD8pbLXiEJAkKQ9lyKSbGhQcrGFg50 rY4Z+kRFGxLf
pmBzaK3mQWwL0iy3Ah9iyf+44/pUGHwUagT6SMWyh+Hq52Z6HlyVlTl33YI3 P0y+uGBzcgg8
2ohBX8Lo/8P+HDhL2M/lKUWnRNRU5MkU6P+NlQjT3yyPlVNEBA8zYC0NhPNb x7A2JKVgLZ8k
Ri0MlKtTVZ7uja4SlvOEgLv8Py6296BPY2F/OnfSyiSa/tnE4L/J4rwkZbV2 E81Bm0YRl31V
IPitJePQFUTobZ5fnpz+OOx8fgrQNx8WBT2vHhmX0AcNroVmkUFjO1T6yYTF QPilHd8YGudR
pAz+L62SAKPErE0aZk6/GG18U2rrz2n0LmrLfb7IqJX19OOHMTejVWdZbjLj 81wnswS6jLv4
anPm9BRH7szeccTVQNNoOCmEdzPhxXHOO8o0rM+DG2DYPfIpMlH0IxFDgIvG gwDXmApDJWsO
4VpecDBgVk5WPfNh1jwWUAOp+wsyvTjSldG1U555lw1QfvibGFJTy95n1KlM JQ/L73GjpEe5
ITWKCh625nc5piR6IZ13azZj5t6+cChKZ7IhD0BLLBwLTGZtsGy42b0+6rY6 reOrz58+jg/3
vrXRfT6Q32GymbDx6U+s7J5hQ81v3I1B+vzkDPcKYZHOLM8JivTLfH1DIvV0 ieNOpTlkKbWS
3pCd/d4a3nqIrqg1LFoDqh8/bo1kHxPrAvRqa0HpNtOjgbGasgfF9KXXUJqz R+n0sizK7oqR
39aJioPiVu2R6w1SvQXHpb9QSwcIGcBBe58DAABAFwAAUEsDBBQACAAIAGFb PjkAAAAAAAAA
AAAAAAAeAAAAbGlicmFyeS9tb2RlbC9saWJyYXJ5Lmdlbm1vZGVsvVbRbtow FH2v1H+IPO1x
mPEwTYi0WqFMlaBDo9P6asxN8OrYke2U5u93ncRAWmDqRMsDiu3rc47PvdfJ 4PIpk9EjGCu0
isnnTpdEoLheCpXG5Nfd+NNXcnlxfjZIQWV6CbL/HdTUP0RPmehvNvZw4/lZ hD/EU7aPizFZ
OZf3KV2v1x2dpR1tUno/vSFNCHBtoBUEXIrcQhUIWUJ73W6PXvuwFnaQ8u+9 QSuJqg0jYYA7
bcqYUCkWhpmSWsMb8CpkJotUqJtRTJqAZusty1DrJMyJLNfGgfGByLhhR+ZO WOvAjvIEmCsM
jEBCylxl2ahULBOcRFxnuRRMcZjAoz/WF58FrvPSiHTlxgLk0sYkYdICUivE ThgHL2nGHI4Q
jFx4nkGCjCKtD32RCAl9OuzTkeZFBsrZj70uU0v8n4NzmGFLpV4AHYF9cDoP ntTCB7QFVsGj
8zPGH1gKNsoNJOJpxxMDVheGo0330wmJlsLm2rKFhJnRj2IJZswa850p8CAV SwO3sbvm/kDr
89SU16rIbOTKHOYsAT8aomPoImJvbKn2+bUXUPRK64chc5AiecDdIk8EOogY W4Rm5jgQnZYW
w0pCT4Y45wJbD8aC+wI5IfCV0Klh+WordkCDrzs+j5hjd+hygx+Gx8F/LP5g T22BEWcombUB
pRrsh2jnYlx3iI24wScYroRctrPbRMSkGvWvvzlnxKJwEO1Dp044Cc9cPDlJ 7nvhrUl4KN4D
PEo7kZQbin20udE5GFfO8WoarrTgYFt9+FzRT0jA+Grcr4gVbqVNu5yatL+y EML18WYONgQU
L9uD1RDcicmtVt5BT4jHDxa1ZPyXa0HF2viOPVgx7ydkgWm0p0jg7+pEb5e/ Gv9o+t61/hs9
r/JPZNU7bteAg+3gL3QvpcGukMNL13+I0RdfYjj7F1BLBwivLP/5tgIAAMcJ AABQSwMEFAAI
AAgAYVs+OQAAAAAAAAAAAAAAABkAAABsaWJyYXJ5L3BsdWdpbi5wcm9wZXJ0 aWVz4+VSVrBJ
zi+oLMpMzyix4wVx9VH4ICEVzxQVXi5eroKc0vTMPL/E3FQFWwWfzKSixKJK Bd/8lNQcoFxR
fllmSmoRVLa8vFwvtSIxtyAnVS+/KJ2XCwBQSwcIF68w+1YAAABqAAAAUEsD BBQACAAIAGFb
PjkAAAAAAAAAAAAAAAASAAAAbGlicmFyeS9wbHVnaW4ueG1slVHBTsQgEL1v 0n+oZK8tGi/G
QHvbZBNNjNGzQTp2iRQIULv9e6G01R40WS4wb968eTOQ+tzJ/AusE1pRdFNe oxwU141QLUWv
L4fiDtVVtiM1cCmMgx/ubeDGVEheFUW2ywnXZrSiPfkqRvh3GID9sdlnu6JI JUb2rVApk+cE
zh5U1M2NFspTpG1bzi1L6D7CW1soW1BgmYfmzTD+yVpA1VQfJWZkidPpraDo 5L25x3gYhlUy
yOMgi0NX0NixzkhwE5Le+EG8W2ZHtJXjkjlHkUzJciY9zV623OD1UTcgKeri hZeigE8Awsk7
wevwl65jpYV1WAd2s40IbB350cBq/v/Jei/kMt4zON1bDgfGvbbjMeznL+8E r//6DVBLBwjf
c12qGwEAAFoCAABQSwMEFAAIAAgAYVs+OQAAAAAAAAAAAAAAAB0AAABsaWJy YXJ5L3NyYy9s
aWJyYXJ5L0Jvb2suamF2Yc1Y32/bNhB+tgH/D5xSQE4wS++bbSRb92AgXYsm wx4HSjrJbGhS
paimRpH/vfwh2rItyVHiZIkfQom64/G77+4TFV5cjIboAk1jnq8FyZZybq/D 3Rvm5rtF8k4P
wtEwx/EdzgBREgks1r+PhvoXOm+/TCYogoywSVmAmCQ8RpOJ9XyFBOQCCmAS S8IZ4imSS0Ar
ngBFPPoCsUT+FFbzaTT/g/O7aRjNp6G69oOtc2DJgWs7m9tlbpXLlFPK7wnL UApYlmpRhAWg
osxzLiQkv1mLkloThKaUzH9cUsLu3MYCHcFZBvKWSApIh2VGJqCHaagMjtt+ UkgVxtaMetn+
iSVkXKyNubvo5eGqlEsujL0d7ltPQ4fANMy3SF4WsMlvcG3/f7Jp1261+/G5 fdLmDr5LlRZI
PoDE77HEM4/hFcx8/aSP7ghLZj5QWKnMf2R07XvWOAMGQm0scdQqI0piRJgE keIYkLavnBfo
mkj9tEom+jEaDgzjBsrNZ1D3WGGo9A3TEhyvHJWqtDkuISylIFEpIbAOWjk7 cKzSg0VFVsBM
86q+xpYXNeeIFMyXKKaAxa/WhTJQwQvAlK5RseQlTdS6iv/CxIxRAkUsSG6K Qz8bBC7E0IXR
UgN66lIYJFqAaAyycm8SflZUXB/fqFmWndfmusnwnzVzBpYTJSNfS5h5KaYF eChRtLhd5+oG
F1kAMSV5AQGsUjVW+w++r2gg1XxgF/cUTF9LIiCZeVKU4Fnf1d8h33Y45iNL P6nD8ivTOtsG
hm4DuxRyNT4+N81sy6wbkE206tMn+rKtI7s5FnhVhaLjYHD/pDRvt9sKzDdO ErRHB7vWPkRH
i6/qey9XfNvG+oaLrzHInayQ4qaSi3G98M5KVjTe39xV3bJHpe56aqxUs6LE EYWq9B5fuwsm
T1K4uY6yo3DVnlG2geVZVduo0K9etafnR7Z/t73KNzxqLvF/9ApvCNFOOA62 3VosLXjU8Wzp
dfdL0M3kdIiobqXz8Fxgqg7UHl5Xu6wF0JNYPRCOOFcdmaF69voKyvZNuFVT 9AkggRSXtKK0
3p865yQw9z6sC/Uaufb0MUdd1yyoeb+k9qSQCr4yywIrV3oXWhUa0uuieTiV nO286L9hRWuL
s86hJqAOithNNLS15qn6RN1zDxU8cGyFsOLMbEOS49LYJXaYMW5PumpW1QIP vuQY4TwnLOUz
//KvilqQjD9+fr/4++r63H+SXMbVdjoUsw4UyurQPks9O86or66h/x8js4aJ drltJO9ppPd1
0nEMqSY4HlW5XZLcStgnq/LjwHpNbe7o/c3y/OL47wj20RS0arb7+rRRbAGp 0iMWOy4upN5j
RBLVS2PdMTFV7TNBRLGf5zkviEVhP5f/Ci3arq/bdywzqvJ4KlWufT6rBf/W NLk5yv1vPPap
sYWuh2hWdk0We2nYEVWXvpkX6bmTnA+xCaVD7mxAaPMN9Jky1/Ih9RDkF5a4 RyS4tuWjSrTD
hLoCPaAwNB9fR8OfUEsHCORl5PlqBAAAJxgAAFBLAwQUAAgACABhWz45AAAA AAAAAAAAAAAA
JQAAAGxpYnJhcnkvc3JjL2xpYnJhcnkvQm9va0NhdGVnb3J5LmphdmHNWG1v GjkQ/gwS/8FH
K7GksLT9eJCoJJfeIeWlSnKVoqqKzO4AbnZtanuTQ6f89xt7vcvuhiTkEpJ+ gbXXYz/zPDPj
gd7WVqNOtsggEPOFZNOZ3knHvfKEnXw7Ct+ah16jPqfBJZ0CidhYUrnoN+qN OovnQmryg15R
P9Es8odS0oXqr3izJ6IIAs0EX/n6gCld3FLIqQ9BxOYKfIgnfiDiWPB07T5P YpBUC2kteplD
v3W7ZAxTxruJAtkNRUC63dS5IZEwl6CAa2owEDEhemac0bhTpLIxuK3NktYA 4p3BeGdXiEuy
RzVMhVwMeuOdQQ9ftDp2Y8pDYkAxvSAx6JkIFZkISa6FvGR8Sq6ZnpmdY3+J EXh4G+EnBTm3
yIb9/pJS/mYK2oDIMHjt1CIWIUQE/tG4IYSHoOkfVNPtJqcxbLeKFq1majEF bryDMNM0GUcs
sF6T4nqCKkQQI1uKLNkm/zbqNct2DTc7Q7oyig4XCnkskJMRS8T4B6rupyZ3 KlS7m5paxs2b
w/PTs/2T84uvw4O/992LgkN2LGQI0o3Qv5qz8d53SNOBbBYe2x0TQKt9Og0Y 8ADIZ2ajdrO+
ne6N9o/29i8+j/bORsdHj/KxYut9QAcdeIe9eXvmPs93mZhKOp9tWM/d0fGf J8Mvfz1O0dzK
+4he5VCbpUG7f7d3d8fqFY0SWMu1uXsYpVUjBspNsmMRWTcjCFO8pUkQAZWd dDPcSQLWKRpF
C6JmIolCREBigbO4MyUhqECyuS1OZq3vZ2B780cmkZtKK4itF3lOrKmDKx3K 1NOATBhH1xjX
pJSlZJu8v0eKh1PsOSVZN6FfS5pKHq+QqJLDT1RqZc1BxT7co9h9peE5tXq4 BL2WSnn9WaHP
sgA9UZpKaURRPlZEGXJCTa9lHYsiy+MDDUve3AipnlrAy45ZVyS7womyL8We 4tt3Yp05vRie
nAzPyTYa1ThcVxeZJqOWXdwdO6hEajqZc2SHN1V+iOMWwyHsCo4REWGL+evQ tUJ50wMPimzs
OMZQ/0L77Cccg45NGB1HYGy8tOv2qbKjIsvt6k14AjqRXK1FQJZwWQ9L1BwC PBfC/5HzT2Cn
1JliL+ydamnqhQPRTkPGdN2eSR5mbx38GpQCzo+AT/WsT969Y86kVtoZfx4k kUbjotU39r1v
l7IJ8dIVvhYpAK/tw88Efz14GZJs35q0NLst0w1ubJiaD/eSJ1FkXt1sRCFT kV5amN3FEZ6a
yWMQvLg2iMJiyKWxKH4hXZAFmIJ8pcwxGtiTHSMKEQYz4hXnagFVUO7jfieO GzfbX65b2UXk
6ytvC3aVKy63yOf7a+qygTtseRFbXvovdGAhb174SBevlVOPza2pZ0xhl0UV flJOAryAtExM
/4UPFLvRDfYSpT89cjk6RaI6ZOVlYFD7djXWjExEN23McNbR7CazjN0ucLHJ SEvT1PiEafnV
APRS6CRLhBz1xlE4BvPSWcaR8fSCMA5SCapI7lamWJtLrUn1fz0hO+R6xrDk YVQzrbBQ2kPL
/w4+f0R/Or4CKVkIt9xdNhNp5K70tdao35Ber5gPjfp/UEsHCHOn9GucBAAA yRUAAFBLAwQU
AAgACABhWz45AAAAAAAAAAAAAAAAIAAAAGxpYnJhcnkvc3JjL2xpYnJhcnkv TGlicmFyeS5q
YXZh1ZZtT9swEMdft1K/wy0gpUVr8n5Lq44NJDQ2psG0N0iTk1xTg2MHxwEq xHefn0JLeewG
0tYXlWP7/ne++52TeGur14UtSDJRzSUtZmrsnuPbE3Zycy/fNIO4161IdkoK BEZTSeT8fa/b
69KyElKBkEWEGaNVjRGW0ygTZSl41CjKop19WqvHNmMmJEY7B+kJZm5j3Eb4 ZjiEFAvKh02N
cpiLDIZDF+0HkFhJrJEroqjgIKagZgilyJGBsGIQJliOk3S870JO4nScxHoq jBb6yPM76m61
cp6OtOpUMCYuKC9gikQ12i8QiVA3lTkS5u+cRcOcCUDC6Phqwig/bfMV+SA2 ClRfSYlgYjMD
G9F1EmuLZxn/lFShrK29H68rsS3EqROwo1XzJG4PksTVIiGTGnFV7ZuDwoj6 mf7AbXaFwEul
E4z5F1TkE1FkFHB95FHoN4dwSnk+CpFhqSt5wNk8DJx9gRwl0blt8WtSRjOg XB94SjIEL+Fd
1OAJgqtet2MJ6miZ76irxWuLxjlhDbactGi4CrRcAFFK0rRRGDn7BxHstISY wZ5nDwk3jCy7
uKnwkjbQmocKMoZEvnUKer/mSSJhbA71TDQs1241zdJGTCDHOpO0sqibvVHU Rhi3UTyAs1ma
SJuHB9JwX4xe3dZ8o3bI9g/1Ii8GS0tP4vDLGrYmDoqG07MGR8GUsBoDyDUX R/NKT9x/NVyW
LFJ6PXLuA52ms4ZKzEeBkg0GTtv/7gJ3i7AQHH/mP/SWy6h1LGsd5wl8q/YH 9lpaUHWI6j6k
1mr4dVl7pLgVkaT0sZhAOF78SZVvTvtgWs4FzeE2DM7RaoKebLubi+um8zKh b3LKTZF0gaca
cZ4ZvmrlgzT3sHm0O/UudwUbXc0GrOTe6V+/VBcv37OPhfqvdfZz447Wammv utLVS+p/0ZgX
Tju8bUw4F+49r6U1liKa0RQl13QCqSrKp2IUTnZRZbP+4Y/tw539nY9Hg2M+ 2dVppgX/jPO+
1T8O6mwm6cm59nEcDB65Aux3S+KOOobFe/fOZfAk6/4d+0qkG/UX43zxOfA/ Uf68qNdj3Gq+
CuGpUX4SPOPfYucDsdBdQxy33z297m9QSwcIhJ2eSz4DAADJCwAAUEsDBBQA CAAIAGFbPjkA
AAAAAAAAAAAAAAAnAAAAbGlicmFyeS9zcmMvbGlicmFyeS9MaWJyYXJ5RmFj dG9yeS5qYXZh
vZTfS8MwEMefW+j/cMJgOmj7B1iHP5gwkCE68DlNr11cm5QkU4f4v5s22aRz fdiUPfVyudzd
53tN4tEo8GEECRX1WrJiocd2HXcdrXMwzQaNEQd+TeiSFAglSyWR68vAD3xW 1UJqELKIkJas
VhhhlRtbSIwm94Rq4SLjTdWzMIQUC8bDlUIZZoJCGNoO5guEJB27Y0mcjiEX ErRxVyLDMmqj
phpqKd5YhgoIUIlEm33UC5G14UjoArjgIUmVliYX0JIoBSLfzdT2gjz73cm1 wi1o9GC/j5bf
7hfIUZrC2UacVVoyCoxrlDmhCO6QYwH80KaQgo0m8Bn4XquJ58AV40WJWnCT RGnCTQ7XcW6P
RDa2V0Cvn8jbadlre/Z2e5zOnuc3s7sJXG3ZzYDLqBs3bVyMM31+0U72B+MJ 9UryZioc30Gk
r2jENxBW/2GC1fhWiGUSG2P4VxzZFjuo1h4Jmhj3DzXmMUhOnVNR7SvXP1vH 5lbH4L1IZv7p
U9HtqbYHzkY5NrvoRWtu0ObpUqu6ea8wg3RtNpj6r7vlwA6p1T8z99BAgbrr cYxfEMfdKxn4
31BLBwjji34rsQEAANUFAABQSwMEFAAIAAgAYVs+OQAAAAAAAAAAAAAAACcA AABsaWJyYXJ5
L3NyYy9saWJyYXJ5L0xpYnJhcnlQYWNrYWdlLmphdmHVW1tv2zYUfk6A/AfO K+A2W6xdX1on
qJO6nbc0LhwH3Z4MWaYdLbJkSDS6oMh/H6+SSFEXyrKc9qGxJYo838dzDsmj z9bp6ckxOAV9
J9g8hu7qHl2w75Z8gV58MVq8IB+sk+ON7TzYKwg8dx7a4eObk+OTY3e9CUIE gnDVg47nbiLY
g+sl/hyEsDccIBS68y2Cb8paXnl2FJW2emcje/q4Ke9u6G/XpY0+MTyl7SZw CUPoO5AitgR7
352dgTlcuf7ZNoLh2SJwwNkZY3J6D0F/fsEH6FvzC7AMQoDw5XWwgF6Pthoh 4AQ+sl0/Arbj
wCgKwihpCJENgvm/0EERQAEI4SaEEfQRG33rsaEA6HvuBbSde+AQDn/sW/i7 emsJbbQNIQiW
oKwpxNRl7tj+gj24wDMAEJ6CpEXfErZQSqC/yBLyNoKx3/Su2d/3toOC8JHd p7SAB9dfnHe4
n3XYnRX0YWgjuBBeuJ17rgNcH8FwaTsQ8O442QD+h7AJERDTC76eHB/RSTvi MyP82LfXsMcu
507mUT6sI8W6I2re0S12eX8F4M3g4xCcgw5H3aHOk29ItCFY7iajPVp0O8P9 E5vuEdq8tqwv
X77E/o5938I+b2HyYGBF9nrjwYheYZ+taxMce6b2dvZpMnw/+ruE3wi39iAK fOwtEbJxBJMA
QInFzZuoOuPo5nY6uLkiniDcHycbrye3G5FLru+il680MFKZALiLOEF0v771 XP9B7RcRi3Cs
kz5BH64vkkt9PJ8XT10W/btiT0e0Zuj8Virw71cQJc++fJXLLQ55cD2aDieD 6d2EMPqrhiyR
6dJEERZIOg5dhyZjykMX2GJ1atYNwNsgXOAFI8/wGXbeEfWInzT24+w7hyHx 0wiFWwdjsT0B
KhLu29XMa0PTaojl/ZD9vRrf3UwxpJ939N/LIHiIPZd82a/PiuHMvJU8VeKn l+PxXzkz/Fw9
lJic+GbGX82QTF3kHRjJdDS9VpDI3vqD8fRgH4gOPD2DD8PbYlC6ECwAdYXH XeF92GFxXQ2m
ww/jyT/F0H4xgzbYovsgTAELxU6+PWCDu+kf40kxLN06Vn0diLNkiysAxabm /gKEv+28raFf
Unsa+n3fG5p4UNPdDL1aupW5nAyoxxtG7A3eXB9uG0ONns348cYwg34OyaYl nUP5CXiND7ZJ
eGKSI9QqnM8T4ry35pNBou8Z4iEBStDoMqbJFjMJs1b3lwyFmmB0edIkizDv i5MI+7rfHJIM
aZZC2HMlGYQ5bc4sP9MEwmyumz/UaGs/woT9IsB06aJ6gKVcsMX44hjU8NJ5 UcXwIvMiNpLx
0Q0kW0sWYqS02GSEpUc1C6/0kxVOcuntqclWJsMEGNNGfMLjYurzI4XZaULN bHz55/CK+NHv
lKE0RxOIXd+P1Lo2JYp6vdah1BrAriyF1IoiI+TtdC+H3VxO2FsMEFcI3lRn gVyL87CWDTJD
9FRNaeHn633zopglj5xLUGxq7D+kRYXKSfLCSJA44/00TiU9y1Mq+an+AFQm IxdSSZs1QCXv
p3EqpcSv5Px2CZUGL+Q0k/zr05p0ZchssnnJY5YVMCivopbRBqspw5ShCzll 7YwZjV+vxoyK
jgz41K8ifJ3TlAzaWUuk85OOOt6gwooS1xQaC1/eI5kiciCgJLGTwQEiNx64 iCZhasbFygsu
ctzy9jPWmSGj+Sf8Iop55SN18GxpzSkyVzWmjHzetg7/UpQL/uP+WpkCeniM N5XPhP7ElDLy
acvGqOe97Zxi2RRm6yntJNj0+VlHH7tfIb2Kektj2ZV1+C0kV9nSjIOVVqLk 1Mqa18usJaGc
GHqQSK4RvYrFNbiVYpdz21ToJgICvU6krT2SLGPQZ0HRptJOKdGSNLhZEp3S Exl5T88Oj+yN
/SEOj/HIJZTFBmvWjgqqG3XnJB6Z8T4NKCb1v3qlwz1Sy4zSD5x73FEKbBrW iAJVHGhqnRDj
4qAhY+kS416JSxlYXOesSCKTgAqlHg3n846ufYc9wP8xvSdcfMTmEX3weYeI D8+76SdeM3O6
YG5HkAiI5dvdTv48CsmxOpeiQFowo0smcMWfbQScEOIn2Q2BMX4XIETBTU1V vZHz5Yxcqpva
P/IrGfyF1r+DS9fHY3s0iXh5WmdidErtTLulEmM263q9s3KvUPCstE0rnpNb uZJnao8VG2Sm
D03LljkJRJ/MCSQPqe8TOFm7yuaKJ6cISCZ2VeWcvkGJdC7DDydILORcQBcL aHtKVd2EsTJN
mvCWBnjSIkpWUFmZlgEnV7trQMxVqLUNUejUshClKnQNiEV6tbZRpl4LZoGq q34NrPkCtn0j
Tc4diowti1Ou1u6ayaoqvZrOZ7LYyySlpSswZVkt0XxJPCrF3RqekifpaC8i VGWYDqBUFqiB
0kQ+1l6EaERkWvBKtbMG/upiswOgF4oYLXapZrFrjqim42o6Q0hSLpMEkary lOWHWNElkSgX
J7/J7KDIvjTwds0NxdKw9uJBFYjpoDYaDWY/+Wp+3VR+9WW2dEoFqPLVM/Xj LyXNqDW/Opvn
vF/ftLmIZn8llgNUrr/t4ERm2r0G/UepAZkeIyUJRz65tBCnivgyu9hdN+tV VX7Pj76U0i+f
xLgKliP5y+VTLpM9kf+fgGXJZp0c/w9QSwcIlD3gecUHAACTQAAAUEsDBBQA CAAIAGFbPjkA
AAAAAAAAAAAAAAAjAAAAbGlicmFyeS9zcmMvbGlicmFyeS9MaXRlcmF0dXJl LmphdmGdk8tu
2zAQRdcy4H+YJgH8QCXuG9VwF10EKNCg7T6gpLHMhibVIZXUCPLv5UOslDQu mq5Mk5w7l/eM
2Ho9n8Eaylp3RxLt3m7if/Z0I2xeXDUXfsHms47Xt7xFkKIiTsfL+Ww+E4dO kwVNbYG1FJ3B
Ag87t9aExcfP1XesbbjIUtM3eQ4VtkLlvUHKG11DnkcDH4CwIzSoLLdCK9A7 sHuEg25Qgg5i
sCjxsCmrzSdhkbjtCUtWbUrmdhfF2AJV80eDeNrFZt+c8E5Lqe+FamGHQcoA JwTTd/5V2LyL
Fb2MJQClFJuHrRTqNqVQjD7OW7TXJGoEbzGsgq3HkrmyIeKkVbJu9LQ1iBPB 8Hsd0/aiY4vl
Kt6PifDKWOK1fX9mqcezeNSi8pexSdT6SooahHIaO+7MjWqAP63LycAACh48 qSygypzWF3S3
lAkM7rjsMQFJDIY3pviBW0ui6i0WUeAk7CyB8IurgTJy5VFMe4whTsRBGLWw UEvk9DZKuAL3
HEIu5RHMXveycX3d4FDwzKFBU5PowlT5u0WRLLJk48TY+KMthSROBPGiyUE+ kD03w2AsG+1o
4Gpy9i/Ub2JxKovwCX/0grD5DT97Rj8L+LPYEtJsLleXTyF/RfsS4ddP+Wvx /yXujhM/DIa8
G4X3/5X7+OiT8dxp0cAzPrGXD+oRGJt8MPPZL1BLBwiEAALkBgIAADwFAABQ SwMEFAAIAAgA
YVs+OQAAAAAAAAAAAAAAAB8AAABsaWJyYXJ5L3NyYy9saWJyYXJ5L1dyaXRl ci5qYXZhzVZN
T9tAED0nUv7D1CA5oGZ9b50IqnJAoqUqSD1Wa3vibLPeNbtrIEL8d/bDzhcJ FNRDc0jW3p03
z/PejJMcHw/6cAxpLuuFYuXMTMJ1snnD3zw8Lw7dIhn0a5rPaYnAWaaoWnwe 9Ad9VtVSGZCq
JJhzVmskWE1JLqtKCtIYxsnZBdPmpcOYS4Xk7DL7g3k4mHQMP4xGkGHJxKjR qEaFzGE0CmxP
QWGtUKMw1DApQE7BzBAqWSAH6cEgTrGapNnkl2IGVZpkkzSxd2KygkdRPAMP u3VIdG1Bp5Jz
ecdECVOkprFpgSoE3dTuibD4FCIaHkIAUs4mDyeciXlXLhI4HJRovtMKwTFz C0/oMU1swN/E
fpFyrn2wX21Hp0nHIU3q1bOcaFzqRi7C748gpwMN8MOjcDZUEO+NLQ0W39DQ r9TQcSQs23Ec
zsYwZ6IYx8ixsgpcCr6IoxBeokBFbVE62zQZZzkwYcOmNEcICG0CDa3w8DDo 97zwPYvyE22V
hfaK3lLeYCdvp2goXacnUGMUyxqDJMTvdU6vU9YtzlvLIBVO2/UUS2nWsIFp ERvIOVL1MSDY
89YHCinnC9Az2fDCprUmVJ4xhQJ1rljtHerOEtIxTDoWe2zotk6Ur8OeMuzi 2KJ7wQ908Nrw
ym6K8mht6zUv/PZxXURwRCPYTYPjaEq5xggKa4rrRW1v7G7o+4oTY/dJyB7Z Kt00TGExjoxq
MArY7ee52zb8FUMwn/uO28h1o/W803ohE7QtNjzyw2Rlqis0uxz1lj59q9Ne kLamilYtFcdD
4N17NF4+7N6q3EpWwKYVQqLt+rzadO3IWXadwqm1tMidn7Rpabl56S4hl7bl hQmj0iFZM8BW
sR3iYxt4bmyDQcYKa5LcNQzlQEUBzEJIO2g18y34TDCH4cpw2piZVF6wsGwl +1cjYTVwt5/8
fxsM+5mSt8wADzPcNTY2S74xJTqlxhH1m+/q88xlfqHR/X+K1LGYQPdSbNv9 EZKkfcUM+k9Q
SwcImMW55vYCAADrCAAAUEsDBBQACAAIAGFbPjkAAAAAAAAAAAAAAAAmAAAA bGlicmFyeS9z
cmMvbGlicmFyeS9pbXBsL0Jvb2tJbXBsLmphdmHNWW1z4jYQ/gwz+Q/K9GYC mWDar4FLwyXc
lWlaMkB6k08ZYy/gxlicLCdlbvLfq1dbMu8kOPkClizt7rP77OrF9dPTozI6 RU0Pz+YkGE/o
hWzX7Q7R+anjf+IP9aPyzPUe3TGgMBgSl8ydYDoLG0flozJ7wISm/V8wfmws 7b1yKYwxmS++
vZH/t1LF4vvvJKBATG2YjB3wwmAWgwPTkePh6RRHToRpMJo7f/O/wHNpgKPG HnOuJm4QrVMH
HibgtK9CN45XK5CjOhGzPXLDdnf4L3h0s1juWadt2tPRvq7r4B3XamgI4yCq JTGQmo89VKvJ
QLYixCXAFCIqZiM8QnQCaIp9CBEWVqCTJkwvmsMLHphmfXjRrLP2iZNJh8hf lN2cyf8BEzfC
YYifg2iMRuDShECMXAKZbvDP5ZwklJMQaobBxc/LMIgeLRoJdnCMv4yBDgIa AuLWiSdh10uz
zmbuIOSW0SgWQsTTfkI0X4Uc3dhPVCuhE0yEIPmYF9Osay8167Ms/y7HEAFh qn2dhckwDDzk
ceIhrQHBf5SFK0Y3PE1ELER3Ggo5FP08KpcEg0oqhD6M3CSk6MkNE9A0OVFg 0mBUqvlwnCCX
UhIMEwqOlLaSkKXVfOKvLmMAU5PqNWCLNiY+ENViXijNCKaMxeCjmHPcQ6OA ZRjqM6MYHwed
wU37oX3d/tq6uxmgzyhKQpk/O8IX5FHwDSIdAL7S9Dr4QUTRbetbu29i/3Uf 4JrtCrtN/gPA
z/S9zgPmMoOuWoP2t27v3vSGOcD5674/aPfucw7aG4xts22lTlXmUJ6FpTiZ AalUmerSy8HU
X3afgJDAB8sUuWoh6AvHiYa2igCrHRGyl2NHVpUwdr50u3++h8Wc18rcr3Kp ucJJRHNW/3ZY
01TlVSXGqI2mDRX5ugrX88idBt43oJWcN7kTHx5EiTpb6+l0ECUJyN8D80VB fMIBSysNUAGO
4Fm0FV4NsP8WAFPZhcDjbDJquxW+Ct+sjYFsDqCos5vwqUFGAKsOU/8PL7uH Tv5cMCVcjp15
WzS2jeQuSJlspFxYSfUUCDSJ4lxkNbw7/ua1AItBMsQ4BJft4uP+cppqTJ34 DYJWDCZrYbY3
GFYCmuM2J6Fe4TcBzca9Vy1N8VqOYCmSgt0yG3eHbCopOBPzUd4iGXfF9w4p uYK7W2TlxwQn
b1dQekzN56R8vzkbW3eDP7q9Tdj0qKIzUaEcurGAUCTUEesqFOvCXZaE3U9h K2ew0iA7zpZM
mcZjvUfgj+zwlDI8Yrv0GHowxU8g90zGBVfVkLrWeUJBw3A/7yi0Kq/wxra1 eDcWZOILPEOt
4gOoGLZ8Px8/hOkESDvyz8RWWV3uda43cCR+Dqg3QZV0vOoveW4M64hwLkaV VBBceVP2eSFR
G3JYMEIVNeZYXuxU5QtN0kU+yuFVB2ze0kkQL8Tue68zaPceHriBbP8kjXLE dZtJ2JSyubzS
BSRzYTbnxWC6OP47ZhCyGYbD08kfhC3Kcx+DMMsjwBmxndcVmA/keOVO4MtO zpN6A0IgxuET
ZB38i8FgPoP9nSoO4bZPs9uNxobJ4ghhTzbPgNk5e6MkvedZsCTbbm0SYdGD FwrlrSrKpOXK
iUmifLFZQh0eGSMqaTTSKBTOGbGUQX+RMYpMLBriuuFt+JHeCumLrlS85c9d WJMe2LPLl1So
cVmym4IcmcyjiH3E3M9+i2jxQvVfI1RwSpGpb5PJmvUOHJKHMotFb0wa+7vM /pQxb3leQ4vc
GfVNKcA3JuvDL/2d+bTwsOslBOSJ9QCRV8Uz/z1O7tvQ7+YtutrMoXN0bA93 4EfCNtOVbOw+
i5J5l7bfSpQ7+u/EjxWrjAa9cqMS95cz5AXV6/qL0lH5f1BLBwguotyVgQUA ANIhAABQSwME
FAAIAAgAYVs+OQAAAAAAAAAAAAAAADAAAABsaWJyYXJ5L3NyYy9saWJyYXJ5 L2ltcGwvTGli
cmFyeUZhY3RvcnlJbXBsLmphdmHdWN+P2jgQfg4S/4OLKjVsj+R92d2WZemJ u2qpKLrqniqT
DMHXEEeOWbo67f9+/hnikAW27dLqXogzHs98M/N57BCenbVb6AxdRDS/ZyRZ 8iv9HroCJXw5
jl/KQdhu5Tj6ghNAKZkzzO4DssrTfrvVbokBZbyUn1WFlCUBRCnJCwhgtRBj yiAYDVNcFP1D
WjeY49l9DgcVJ/N/IOIH1T7oCA7jk6EFo3c44pTdj2txNi/J03VCsmAkXz6o sVoT2mS/6PXQ
HIS4ty6A9WIaoV5PJ36QIekQVpBxzAnNEF0gvgS0ojGk6GJ+ZZBchPOrYGsO snjX2NsEMmCY
Q2zLtp6nJEKRzDh6r2tUiQzBVy4MFaga7hZPfQn6t93yVFCecDZkIDwVCmwM C7xOOVoYRTek
QC94NA3e40F5tag8FZZn4iqk/aiOkmSE+10F1uMGtefVlATqmuQS+a6kazkT TAXoQpgKxrcf
Z4Pb4ShIgNuc+Z0l5/l5GG42m5Ibgieh4Eco0gs0LLDMR6EkehwaV51uHyl4 ZIH8XUwvLlG2
TlMTjOcx4GuW7YLvq+kH+at+IsyjJfJHXyPIFanAjqypCle3UaU08bea/dKc cZvBpoFEvlJ8
kITfJQcW9M5EmbIILLENR56NFE0IddDFOgfWCPcHong7uQPGSAxbRKZFoUgl xdcNEIF6WGgb
oiqmhZJeakAWBNj4xu/askW4ABuhZef1ZPLnOTI10j6uKf2iA21e8n58PR1M /66tMkr7Fn6a
jmejaW3dJ0a4TaznmV5wrhnLl4xuFHPGaQoJTgcsWcvOUHLT78wEK3SLetVB r9E2B7d4BaJ4
r1HnFSIFyihHGN3hlMRaX6WnsyXqSavqFPUdo6uPnJEs8cuTC4Ed/Yb0nGpN BKd/4XQN9cpb
5acX//NwMBv9PhH1dLrElgpD8UzEZqigrGBzQD1eesfT58n1H6Ph7JBDnaOj 3X4bdWJhkst8
a/ZU8/hLE8hwIqKZmOIzuo8/hmy2l56IQBpZtaAlSqeQVVDfRaBdhzrwY93+ jwlkSCNz4zR5
XVo5Vpe3uZy/VEFbmWnMJsdS4XlPQPccrp8tGq95VZDNt4NBXZlxgRu1k2DX J1rteNPI9ZsC
vtFaGvdW7sLWSidBXd03+7v/E88oxzCDQl71Lx13cq/4ux1d3mqtvr3KHrsr 76QZvSWrhhv3
ImTCgsgJZfKWuXcbd5zqaHAnqY7b7hub6lNbvwnCmbKJRm/049ydDrh19sz3 4OM4uXNBeCIz
j7nq1O++cj/itHDPo4b7yE9kRO3U+0Ze7KPa0UmpH7KnOjcMMiR2ryvx3SBr kXTll3mp+SMB
x5AziErEjZe8m6pO458UlbCa46kVBuzHeRnKAwrD3W/cdus/UEsHCAHICLgS BAAA2xMAAFBL
AwQUAAgACABhWz45AAAAAAAAAAAAAAAAKQAAAGxpYnJhcnkvc3JjL2xpYnJh cnkvaW1wbC9M
aWJyYXJ5SW1wbC5qYXZhxVhbU+M2FH5OZvIflO3O4DDE7jO44ZrtZJZCh7Bl +sQo9knQYkuu
JIdmdvjvlSVfZCeBkBL2hdi6nMv3fTpHxtvf77TRPvIDliw4mT3IgXn36gN6 8PMo/Jw9eJ12
goNHPAMUkQnHfOGSOImOOu1OWz0wLtF3PMduKknknrMogkASRu35Yt8ZY49H S6OX5nftxJ/G
+/L8HScSuO2I8ZkLQUQSAS7EUzdgccyoS5kk04V7lf2QAOfhvXnP+QMmdAN3 GonhJRHypcUQ
MA7u8DzCQqyPxqwaUZUoxdHwevJdwfu62Ywhd2gHPzKcbbDL+Bg1OF69w6Rq dpwzKhVAMVBZ
JP/63jKzEi6vEGm330cTmBHaTwXwfsgC1O8bwZ5SlMUKmS+dHWJTJB8AxSyE CDEdD9rzIR74
k0GuI9+bDHxPDe25lQOg4bJ5PzG/t8riVCmaPRE6Q1PAMuUgEOZQuYfw0OxJ I7MJIT8igx8n
EaGPtRNT6DlD9pcZyCscA8pCzB50YM++p7a+zYo5BEIbyp+3tpWdT2NJPzXt +F6Ro+8lVaE4
mQEFjhUSRblIJxEJUJApG1kuEPwrFd4CWRKrgCyXoh+ddkuroJVzEMIUp5FE cxylUFC9lydU
QOn0GmDuISwlJ5NUgmtsrZVUa70csqkTAWD5yQettPU74yHw/E2h0Eo4kypL CJHIRBqgKVFC
R2MVk1LT1ekfw/vhxfDL6bfLW/QbomlkzluV+tbh1iOrx2LxoRDLoG6JNAHu 9JT31vPOIji5
ngPnJIRaNKb8IRhrhPRLERUHddooqjcBpVilcBwJ93J0dnN68/fPCJpQWUT8 xdSEc5ZS2Qj8
192Glh+yXE3VGbBDcMxsDy4WFMck+B2k08TTwHh/n+nx4DW0i2WSp2D+7lg1 eZZzRtQpynPM
U6bwlL3mGRcpjt8rxcL8jgU2TpNE9RRxhzlVWQnnU0qDBwgeIfzUqwDQ7dE3 9X2AqrLfJLy2
biPe725Gt8Ob8Qa4lCs/jP23oZP1LI2Nbl6rkdFrNsLl7Pr66yao5Os+DhO7 JJn0l+6oCEZU
rRJwAzGbg9O4PiKm+icf0vBAl7L8XjO6OFhhKRYzUbSJJyKDB+SU6/PxVoAF LAHVUM2hXlmy
4dTuff7xoGdruudOsCBBHn0VrQ7m6HWfmpNNPOZKed3fsyUl3S7dBsTVJgvO cv+HyiEnGTJ1
N/idMBYBpkidKRbNoRrILuS3iwT+F9VZ4ayjXralDUhbKRRbFdsRX7G8jsgM JwujEpsSk59c
5FZQrPshjJcJzrlXzeuv7K78XnQWrbe4UJT2j2ys30yyza4bKCHyguX6FA7D 0yhynOq/C/5x
+TFRNLutY7JFU6llOZ5i4sVoTIN5IZbn8sbtagIt8mq7PrRkGD19o6KpqPcW UO2rZ3fqeV/u
17Bn4Kog+XDWiuINI7FUCt65kDe+Vs3nKjq2vju6+dgh6tYWu/BPqi5MTrly 617QrRFOxDBO
5GLbttC12K6bWtXqxXg108/I86wP6k77P1BLBwiqQdXoeAQAAGIVAABQSwME FAAIAAgAYVs+
OQAAAAAAAAAAAAAAADAAAABsaWJyYXJ5L3NyYy9saWJyYXJ5L2ltcGwvTGli cmFyeVBhY2th
Z2VJbXBsLmphdmHVW21z2kgS/oyr/B8mZKsWUhg2d9/ydpGxnOgWgw/hbHKX K0pIAygWEiUJ
O+xW/vv1vEkzIwmwjXFuK7WRRjM9T/c83TPdQzovXhwfoRfojRst17E/m6fv 2HtHbaCNv1je
L+Shc3y0dNxrZ4ZR4E9iJ163/cUyeH18dHwED1GcZu2nUXT9urS166R4FsXr 4tce+7vyw7nj
ppsGXjJsZd9THDvpKi759kdMPsoqRPGsjd3AXya4jRdTeI5i3DaNNI39ySqV ZFT07AZOkmzt
deakzmi93C7ODFeLrZ0Kulf0G+IpjnHo4u0ak6XNBFvaOpcP+b4I2ino1P58 0SO65aiOjzqC
cc9OTtAEz/zwZJXg+MSLXHRywthnhIjMihc4TJ3Uj0IUTVE6x2gReThAbybv uMQ3ncm7di4O
h15R2PsZDsmyY09wdzUJfBe5ZHmQyhmiHsLfUxCUIFnnHI8+BP11fFSjStU2 aVWrxljTQNYo
ytoy9m+gATEeoQn4DH98i8JVwJbhEDNzF3mayW+pXz6V4iJeHHp+4ut0xUWU ZC0Hm18EJQXD
YPINu2n+rRRNN8bQPUEOuHCYpA6EmE3O20IxIE/AzthDt346Z1L+eh/44fWW INce0qHxGhVa
fqDJms7J9ykmVWxaV0ML3TjBCre5kZbv+lGKX9ERMEUMaqJbByREyKX6yLKQ n6Ab36FNCQlP
LpMyZdsSWuB0HnlChed+6KeI/K/R/NFCt3PfnSMnSCK0xPE0ihcJG016+E7g /6nEOz5lCywB
hgImhgltl4wmunAxUxSFGCYA2N4aQhl0S9oPJEqC8a5LIY0o35Wf4749hgWQ Oj5n1tnKymKo
Re: CDO: Reflective Feature Delegation required - but how to invoke not generated code? [message #423422 is a reply to message #423418] Tue, 30 September 2008 10:13 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 30804
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------030403070401060802080300
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Ralf,

Yep, it's a bug in the template guard for generating the
eStaticFeatureCount method:

### Eclipse Workspace Patch 1.0
#P org.eclipse.emf.codegen.ecore
Index: templates/model/Class.javajet
============================================================ =======
RCS file:
/cvsroot/modeling/org.eclipse.emf/org.eclipse.emf/plugins/or g.eclipse.emf.codegen.ecore/templates/model/Class.javajet,v
retrieving revision 1.77
diff -u -r1.77 Class.javajet
--- templates/model/Class.javajet 7 Aug 2008 11:10:35 -0000 1.77
+++ templates/model/Class.javajet 30 Sep 2008 10:10:19 -0000
@@ -363,7 +363,7 @@
<%}%>
<%@ include file="Class/reflectiveDelegation.override.javajetinc"
fail="alternative" %>
<%@ start %>
-<%if (isImplementation && (genModel.getFeatureDelegation() ==
GenDelegationKind.REFLECTIVE_LITERAL || genModel.isDynamicDelegation())
&& (genClass.getClassExtendsGenClass() == null ||
(genClass.getClassExtendsGenClass().getGenModel().getFeature Delegation()
!= GenDelegationKind.REFLECTIVE_LITERAL &&
genClass.getClassExtendsGenClass().getGenModel().isDynamicDe legation())))
{%>
+<%if (isImplementation && (genModel.getFeatureDelegation() ==
GenDelegationKind.REFLECTIVE_LITERAL || genModel.isDynamicDelegation())
&& (genClass.getClassExtendsGenClass() == null ||
(genClass.getClassExtendsGenClass().getGenModel().getFeature Delegation()
!= GenDelegationKind.REFLECTIVE_LITERAL &&
*!*genClass.getClassExtendsGenClass().getGenModel().isDynami cDelegation())))
{%>
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->


(Note the missing ! on the guard.) Please open a bugzilla and I'll
commit the fix for it today which so it should be in today's I-build...

As a workaround, delete the eStaticFeatureCount method from non-root
model Impl classes.


Ralf Buschermoehle wrote:
> Hi Ed,
>
> see my comments below.
>
> Ed Merks wrote:
>
>>>> You didn't have this problem with just the reflective delegating?
>>>> (I would have guessed it would have the same problem.)
>>>
>>> No. In 2.4 this works fine. Again: Everything is "just" plain EMF
>>> ... but I admit we have several modeling languages with dependencies
>>> (which should/does not bother EMF). But regarding EMF these are
>>> different modeling languages (with no relation/dependency at all).
>> If I could reproduce the problem, I'd be happy to have a look at how
>> to fix it.
>
> Thanks for the offer :)
>
>> You can send me exported projects along with instructions privately.
>> I'll delete it all when I'm done...
>
> No problem. I stripped the problem model down to a simple error (see
> attached .zip - simply generate 'everything'). The editor kann create
> packages with Feature Delegation 'none' but not with 'Dynamic'. It
> seems to be a problem if a class inherits from an abstract class with
> at least an attribute.
>
> I also attached a simple extension of the library model, where i can't
> set the price in the generated editor of the new abstract class
> 'literature'.
>
> Greetings,
>
> Ralf

--------------030403070401060802080300
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Ralf,<br>
<br>
Yep, it's a bug in the template guard for generating the
eStaticFeatureCount method:<br>
<br>
### Eclipse Workspace Patch 1.0<br>
#P org.eclipse.emf.codegen.ecore<br>
Index: templates/model/Class.javajet<br>
============================================================ ======= <br>
RCS file:
/cvsroot/modeling/org.eclipse.emf/org.eclipse.emf/plugins/or g.eclipse.emf.codegen.ecore/templates/model/Class.javajet,v <br>
retrieving revision 1.77<br>
diff -u -r1.77 Class.javajet<br>
--- templates/model/Class.javajet&nbsp;&nbsp;&nbsp; 7 Aug 2008 11:10:35 -0000&nbsp;&nbsp;&nbsp; 1.77<br>
+++ templates/model/Class.javajet&nbsp;&nbsp;&nbsp; 30 Sep 2008 10:10:19 -0000<br>
@@ -363,7 +363,7 @@<br>
&nbsp;&lt;%}%&gt;<br>
&nbsp;&lt;%@ include file="Class/reflectiveDelegation.override.javajetinc"
fail="alternative" %&gt;<br>
&nbsp;&lt;%@ start %&gt;<br>
-&lt;%if (isImplementation &amp;&amp; (genModel.getFeatureDelegation()
== GenDelegationKind.REFLECTIVE_LITERAL ||
genModel.isDynamicDelegation()) &amp;&amp;
(genClass.getClassExtendsGenClass() == null ||
(genClass.getClassExtendsGenClass().getGenModel().getFeature Delegation()
!= GenDelegationKind.REFLECTIVE_LITERAL &amp;&amp;
genClass.getClassExtendsGenClass().getGenModel().isDynamicDe legation())))
{%&gt;<br>
+&lt;%if (isImplementation &amp;&amp; (genModel.getFeatureDelegation()
== GenDelegationKind.REFLECTIVE_LITERAL ||
genModel.isDynamicDelegation()) &amp;&amp;
(genClass.getClassExtendsGenClass() == null ||
(genClass.getClassExtendsGenClass().getGenModel().getFeature Delegation()
!= GenDelegationKind.REFLECTIVE_LITERAL &amp;&amp; <font
color="#ff0000"><b>!</b></font> genClass.getClassExtendsGenClass().getGenModel().isDynamicDe legation())))
{%&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp; /**<br>
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;* &lt;!-- begin-user-doc --&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;* &lt;!-- end-user-doc --&gt;<br>
<br>
<br>
(Note the missing ! on the guard.)&nbsp; Please open a bugzilla and I'll
commit the fix for it today which so it should be in today's I-build...<br>
<br>
As a workaround, delete the eStaticFeatureCount method from non-root
model Impl classes.<br>
<br>
<br>
Ralf Buschermoehle wrote:
<blockquote cite="mid:gbsrj4$828$1@build.eclipse.org" type="cite">Hi
Ed,
<br>
<br>
see my comments below.
<br>
<br>
Ed Merks wrote:
<br>
<br>
<blockquote type="cite">
<blockquote type="cite">
<blockquote type="cite">You didn't have this problem with just
the reflective delegating?&nbsp; (I would have guessed it would have the
same problem.)
<br>
</blockquote>
<br>
No. In 2.4 this works fine. Again: Everything is "just" plain EMF ...
but I admit we have several modeling languages with dependencies (which
should/does not bother EMF). But regarding EMF these are different
modeling languages (with no relation/dependency at all).
<br>
</blockquote>
If I could reproduce the problem, I'd be happy to have a look at how to
fix it.&nbsp; </blockquote>
<br>
Thanks for the offer :)
<br>
<br>
<blockquote type="cite">You can send me exported projects along with
instructions privately.&nbsp; I'll delete it all when I'm done...
<br>
</blockquote>
<br>
No problem. I stripped the problem model down to a simple error (see
attached .zip - simply generate 'everything'). The editor kann create
packages with Feature Delegation 'none' but not with 'Dynamic'. It
seems to be a problem if a class inherits from an abstract class with
at least an attribute.
<br>
<br>
I also attached a simple extension of the library model, where i can't
set the price in the generated editor of the new abstract class
'literature'.
<br>
<br>
Greetings,
<br>
&nbsp;&nbsp;&nbsp;&nbsp;
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Ralf
<br>
</blockquote>
</body>
</html>

--------------030403070401060802080300--
Previously "Re: CDO: Reflective Feature Delegation required - but how to invoke not generated c [message #423423 is a reply to message #423422] Tue, 30 September 2008 12:13 Go to previous messageGo to next message
Ralf Buschermoehle is currently offline Ralf BuschermoehleFriend
Messages: 27
Registered: July 2009
Junior Member
This is a multi-part message in MIME format.
--------------070402060800000709000402
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Ed,

see comments below.

Ed Merks wrote:

> Yep, it's a bug in the template guard for generating the
> eStaticFeatureCount method:

[...]

> (Note the missing ! on the guard.) Please open a bugzilla and I'll
> commit the fix for it today which so it should be in today's I-build...

Done.

> As a workaround, delete the eStaticFeatureCount method from non-root
> model Impl classes.

Hm, just tried but still get errors (see modified, attached file). The
log says ...

!SESSION 2008-09-30 14:03:24.281
-----------------------------------------------
eclipse.buildId=I20080918-0100
java.version=1.6.0_07
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=de_DE
Framework arguments: -product org.eclipse.sdk.ide
Command-line arguments: -product org.eclipse.sdk.ide -data
C:\Users\lobe\workspaceM2/../runtime-EclipseApplication -dev
file:C:/Users/lobe/workspaceM2/.metadata/.plugins/org.eclips e.pde.core/Eclipse
Application/dev.properties -os win32 -ws win32 -arch x86

!ENTRY org.eclipse.emf.ecore 2 0 2008-09-30 14:03:30.000
!MESSAGE Both 'testEMF2_5M2' and 'library' register a package for
'http://www.eclipse.org/emf/teneo/samples/emf/sample/Library'

!ENTRY org.eclipse.emf.ecore 2 0 2008-09-30 14:03:30.000
!MESSAGE Both 'testEMF2_5M2' and 'library' register an extension parser
for 'library'

!ENTRY org.eclipse.jface 4 2 2008-09-30 14:03:55.171
!MESSAGE Problems occurred when invoking code from plug-in:
"org.eclipse.jface".
!STACK 0
java.lang.ArrayIndexOutOfBoundsException: 0
at
org.eclipse.emf.ecore.impl.BasicEObjectImpl$EPropertiesHolde rBaseImpl.dynamicGet(BasicEObjectImpl.java:155)
at
org.eclipse.emf.ecore.impl.EStructuralFeatureImpl$InternalSe ttingDelegateSingleData.dynamicGet(EStructuralFeatureImpl.ja va:1953)
at
org.eclipse.emf.ecore.impl.BasicEObjectImpl.eDynamicGet(Basi cEObjectImpl.java:1045)
at rmof.impl.NamedElementImpl.getName(NamedElementImpl.java:67)
at rmof.provider.PackageItemProvider.getText(PackageItemProvide r.java:81)
at
org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider .getText(AdapterFactoryLabelProvider.java:374)
at
org.eclipse.jface.viewers.WrappedViewerLabelProvider.getText (WrappedViewerLabelProvider.java:108)
at
org.eclipse.jface.viewers.WrappedViewerLabelProvider.update( WrappedViewerLabelProvider.java:164)
at org.eclipse.jface.viewers.ViewerColumn.refresh(ViewerColumn. java:145)
at
org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(Ab stractTreeViewer.java:932)
at
org.eclipse.jface.viewers.AbstractTreeViewer$UpdateItemSafeR unnable.run(AbstractTreeViewer.java:102)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at org.eclipse.core.runtime.Platform.run(Platform.java:880)
at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:17 5)
at
org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(Ab stractTreeViewer.java:1012)
at
org.eclipse.jface.viewers.StructuredViewer$UpdateItemSafeRun nable.run(StructuredViewer.java:466)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at org.eclipse.core.runtime.Platform.run(Platform.java:880)
at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:17 5)
at
org.eclipse.jface.viewers.StructuredViewer.updateItem(Struct uredViewer.java:2041)
at
org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem( AbstractTreeViewer.java:827)
at
org.eclipse.jface.viewers.AbstractTreeViewer$1.run(AbstractT reeViewer.java:802)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator .java:70)
at
org.eclipse.jface.viewers.AbstractTreeViewer.createChildren( AbstractTreeViewer.java:776)
at org.eclipse.jface.viewers.TreeViewer.createChildren(TreeView er.java:634)
at
org.eclipse.jface.viewers.AbstractTreeViewer.internalExpand( AbstractTreeViewer.java:1578)
at
org.eclipse.jface.viewers.AbstractTreeViewer.setSelectionToW idget(AbstractTreeViewer.java:2456)
at
org.eclipse.jface.viewers.StructuredViewer.setSelectionToWid get(StructuredViewer.java:1680)
at
org.eclipse.jface.viewers.AbstractTreeViewer.setSelectionToW idget(AbstractTreeViewer.java:2864)
at
org.eclipse.jface.viewers.StructuredViewer.setSelection(Stru cturedViewer.java:1636)
at org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer .java:1104)
at rmof.presentation.RmofEditor$5.run(RmofEditor.java:766)
at rmof.presentation.RmofEditor.setSelectionToViewer(RmofEditor .java:770)
at rmof.presentation.RmofEditor$4$1.run(RmofEditor.java:718)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:3 5)
at
org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchr onizer.java:133)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.jav a:3825)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java :3449)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.jav a:2382)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:21 98)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
at
org.eclipse.core.databinding.observable.Realm.runWithDefault (Realm.java:288)
at
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:488)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
at
org.eclipse.ui.internal.ide.application.IDEApplication.start (IDEApplication.java:113)
at
org.eclipse.equinox.internal.app.EclipseAppHandle.run(Eclips eAppHandle.java:193)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:110)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:79)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:370)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java: 549)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
at org.eclipse.equinox.launcher.Main.main(Main.java:1212)

!ENTRY org.eclipse.jface 4 2 2008-09-30 14:03:55.703
!MESSAGE Problems occurred when invoking code from plug-in:
"org.eclipse.jface".
!STACK 0
java.lang.ArrayIndexOutOfBoundsException: 0
at
org.eclipse.emf.ecore.impl.BasicEObjectImpl$EPropertiesHolde rBaseImpl.dynamicGet(BasicEObjectImpl.java:155)
at
org.eclipse.emf.ecore.impl.EStructuralFeatureImpl$InternalSe ttingDelegateSingleData.dynamicGet(EStructuralFeatureImpl.ja va:1953)
at
org.eclipse.emf.ecore.impl.BasicEObjectImpl.eDynamicGet(Basi cEObjectImpl.java:1045)
at rmof.impl.NamedElementImpl.getName(NamedElementImpl.java:67)
at rmof.provider.PackageItemProvider.getText(PackageItemProvide r.java:81)
at
org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator.ge tText(AdapterFactoryItemDelegator.java:90)
at rmof.presentation.RmofEditor.setStatusLineManager(RmofEditor .java:1709)
at rmof.presentation.RmofEditor.setSelection(RmofEditor.java:16 88)
at rmof.presentation.RmofEditor$6.selectionChanged(RmofEditor.j ava:879)
at org.eclipse.jface.viewers.Viewer$2.run(Viewer.java:162)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at org.eclipse.core.runtime.Platform.run(Platform.java:880)
at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:17 5)
at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer .java:160)
at
org.eclipse.jface.viewers.StructuredViewer.updateSelection(S tructuredViewer.java:2062)
at
org.eclipse.jface.viewers.StructuredViewer.setSelection(Stru cturedViewer.java:1638)
at org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer .java:1104)
at rmof.presentation.RmofEditor$5.run(RmofEditor.java:766)
at rmof.presentation.RmofEditor.setSelectionToViewer(RmofEditor .java:770)
at rmof.presentation.RmofEditor$4$1.run(RmofEditor.java:718)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:3 5)
at
org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchr onizer.java:133)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.jav a:3825)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java :3449)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.jav a:2382)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:21 98)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
at
org.eclipse.core.databinding.observable.Realm.runWithDefault (Realm.java:288)
at
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:488)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
at
org.eclipse.ui.internal.ide.application.IDEApplication.start (IDEApplication.java:113)
at
org.eclipse.equinox.internal.app.EclipseAppHandle.run(Eclips eAppHandle.java:193)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:110)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:79)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:370)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java: 549)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
at org.eclipse.equinox.launcher.Main.main(Main.java:1212)


If this is fixed with the Guard Negotiation in the Integration build
today I would not need a workaround ... ?

Greetings,

Ralf

--------------070402060800000709000402
Content-Type: application/octet-stream;
name="EMF2-5M2TestLibraryModified.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="EMF2-5M2TestLibraryModified.zip"

UEsDBBQACAAIAJdwPjkAAAAAAAAAAAAAAAAXAAAARU1GMi01TTJUZXN0Ly5j bGFzc3BhdGid
kE9PAjEQxc+a+B02vTMrF+NhV2LMmkAiGFi9ktJOlpE6LdOWwLcH/xCNCRy8 zZv85r2XqQbb
d1dsUCJ5rlUfrlWBbLwl7mr10j72btXg7uqyMk7HGHRaHsTFj0JOsitWxLZW UYwqPpZfY3ma
NJ6PpJcO0DgKEeHNJnA6s1ke0mE0beYPk3F7Pxw30/IvR5xQWDuwuMgdZPq+ RIFZ0my12Nen
dhewHOmNnjW9Ptz8o1KwCMYLguA6k6B9drkjjuesfE4hp6PbgvgTrsrfL9wD UEsHCPSlsdLQ
AAAAeAEAAFBLAwQUAAgACACXcD45AAAAAAAAAAAAAAAAFQAAAEVNRjItNU0y VGVzdC8ucHJv
amVjdL2SzWoCMRSF1xZ8B5m9iRUKXcQZ0NbdSEH7AGlyHSOTH5KM+PhNYqZl EMGFuLvn3Hvy
3YSQ6izbyQmsE1otilc0KyagmOZCNYvie7eevhdVOX4hxuojMP8BjllhfJgO 7ogoKqH8rNfz
6Vs934HzBCcr9piWEpQvCe6r6OaDXBJ4oH460fKtARZVlqsQpYonJ+O0bRCw VhgH6Mg9YtqG
gp5oCoD9XyEkqG26yHZZ46FB8BXlLq7hgGqqxD5ceflc7JYdQNKHQLPTP3ng +c5Cnr6I2699
6ccF0tytTFz5q+0aoTZXgb6OxL+/MPxiv1BLBwg8J1T27QAAAKECAABQSwME FAAIAAgAl3A+
OQAAAAAAAAAAAAAAACEAAABFTUYyLTVNMlRlc3QvTUVUQS1JTkYvTUFOSUZF U1QuTUZVkMtO
wzAQRfeR8g/ZsCMWjQQLV10ACgtEUEURW+Q6kzDCjzC2o6ZfTx6VCSt7dO7c OzOVMNiA8/kH
kENreLZhN2nyEEytIK8uNMIiolehgWdXnQotmqmI5DDoo1UoF0VZPRWft1Xx PtpsHZpWgR+d
dp7CX8s6fBX/qIRze+G/eMZWWlNbmqLJ9lgD/Qt/sVIoPAs/2y3TRfgGPwEJ 6vIEMkyK0vRI
1mgwnmfPoheHMt+wuzQpT50ln++F/BbtuAVp21ynyfwy1J2Kxeij0uTinC9B PLPUMpAKOwdM
WgJGwXjUMLWtGehm/I+CbY8Oj6jQD3xHAHN+HPxeeuznnfbTZQeeKXEe0uQX UEsHCDbkwnEJ
AQAAvgEAAFBLAwQUAAgACACXcD45AAAAAAAAAAAAAAAAIQAAAEVNRjItNU0y VGVzdC9iaW4v
cm1vZi9Nb2RlbC5jbGFzc42PQWoCQRBFf6nJ6BjBC2Qp6MYGwZWSnVlNSMAT tG3ZtPZMS09P
DufCA+RQIeUkK1dZFPyC+r/++/q+XAEsMMrQIeSxDAf1FvbsM/QI46P+1Mrr yqr33ZFNyvBI
eA7RKjbenWtWXB5Eh8hq83tCGFpOH9qctOWaMJnOinuDCWUZKtUk59WmcHVa EQZbZyudmsiE
5X8866Jt+/dp9SIZ+TY00fCr8xKStxzzG4KUJnRlHgSWBCxDX7aBbB3kooat evoBUEsHCNEs
eg/CAAAADwEAAFBLAwQUAAgACACXcD45AAAAAAAAAAAAAAAAKAAAAEVNRjIt NU0yVGVzdC9i
aW4vcm1vZi9OYW1lZEVsZW1lbnQuY2xhc3Nlj7sKwkAQRe/GRzQqGNDSPmlc sLWOlWgRsF/j
JCTsJrKJfpyFH+BHiRNEFCwGhjuHy5nH83YHsMLEhSPgW1OlcqcMnSJNhsrG RVdgWqirklqV
mdwfC0o47QssKptJSnR+rkmSSXmvLMnojQi4GTVtlcAsCLffirixeZmtGag/ wDz4v4cHAS+u
LjahTa4Z8n+9li3PEgIdnh7/4LCoiwFa4SE8TgRGbY7xC1BLBwiwaRcmqgAA AOYAAABQSwME
FAAIAAgAl3A+OQAAAAAAAAAAAAAAACMAAABFTUYyLTVNMlRlc3QvYmluL3Jt b2YvUGFja2Fn
ZS5jbGFzczv1b9c+BgYGIwZOdgYmRgaeotz8NP2AxOTsxPRUdgYWRgaBrMSy RP2cxLx0ff+k
rNTkEnYGNkYGQbA6v8Tc1BTXnNTc1LwSRgau4PzSouRUt8ycVKBBUDP0QNqB GhgZmIGYlQEE
GBnYgSQTAwcAUEsHCBiljvZuAAAAfQAAAFBLAwQUAAgACACXcD45AAAAAAAA AAAAAAAAJwAA
AEVNRjItNU0yVGVzdC9iaW4vcm1vZi9SbW9mRmFjdG9yeS5jbGFzc2VRXUsC QRQ9Y+bq+rWp
fWjlsxK00GsRhCgIZpHi+ziNy9quI9Ma9LOil+ihH9CPiu5sWlYLc++cM/ee OXvn/eP1DcAJ
6hYSDI4O1cS9odDhIlL60UKS2Cl/4G7AZ557NZ5KEVlIMdSV9lwpAn9+L10Z TmivtHTby06G
jOz2B8OLfqvNUOr9VT5lSJ9R98yPzhk2Gs0RQ7KlbqWNPIoWCgzVuMcP58F6 Y5dwDg62qN50
M1Qazf/yGTCUc7CQZij2/JnsL8Kx1EM+DqTxowQPRlz7Bi/JvNCSR/Kaizvu EXZWukuGLGe/
Si7JZ8BQWBXEmI4LnoyMiW+JX9Z+ZOyBWmghO7651lmzfWxGTcOlidDapFU1 v0BPlKSYgU1M
ltARZfNZL8g9o/RE2wQqFG3KQA0plLEds+YFd7Ab5z2SM7mGfTpjOIgrDj8B UEsHCI0PcHFJ
AQAABgIAAFBLAwQUAAgACACXcD45AAAAAAAAAAAAAAAAMAAAAEVNRjItNU0y VGVzdC9iaW4v
cm1vZi9SbW9mUGFja2FnZSRMaXRlcmFscy5jbGFzc31TXU/TYBR+XmDrOl5k A0SHioBTNz+o
35BgTJZRDbErhC3cNl15txS71nSd/0u90gt/gL/BWy+99s54TilBl7Am7XlO zznPefrk7fc/
X78BeIJtDVMClXgQ9YxDehy43ju3r6qWn6jYDYYaZgRKJ+4H1wjcsG/sd0+U lwjM2Y2WueuY
ltky7Y7AqhXFfUN5gf9+qAw16BGOYmWYzcAdDncEFv8bcBxOBTYuGmskSex3 R4miUe2g0Xzb
eEPtudb+rmkJzKfRcbJCewLRoeqpWIUeExVeUj30k1cC07X6kcBMMzpWOspY 1LBA3zlug8QS
Lgvoas9udxp2kyQsWONNO7NEcEXiKiqkrK8S2x2oYzNQAxWSU2u1+mRvdAhc k8ghz0Q3JFZx
U2BpjMjhRKB6Mdu5Zcy4LqGhwIy3JKosrUiMmWRuuCOhn66sSdS5oUANLTIk 4PJ9ieJp+aHE
JgyB8lnZyViGE+WcG890jyVmIckfyw+VPRp0Vdxxu4FiQyPPDY7c2Oc8e1ls R6PYU699Tkr/
mL3JR1FA7oWhilP/WEbh7LjmBe2appOdQ4UdJVRhH9KoZ3kxiySIIk1jDpco zlMWUORr+xNK
X7As8BkrKbzOcC2FGwxvp/Auw3spfMDw0UeanaL/ClhJt/ykLb+wjN9YF4J6 dGzhB56mXXw/
S5/P8YJiEay+jK28/hdQSwcIzMDMkQsCAACgAwAAUEsDBBQACAAIAJdwPjkA AAAAAAAAAAAA
AAAnAAAARU1GMi01TTJUZXN0L2Jpbi9ybW9mL1Jtb2ZQYWNrYWdlLmNsYXNz fVTbbtNAED1L
L05Cem8poVwKFGgp1FDubYUUpQ6KSNwqSSverI07DS6OXTkOEp+FeEE88AF8 FGJ265TEqETK
zpzZObMzZzf59fvHTwCb2DFwSWA66oTHZp2Xfel+km0yMMrRE/lZmr4M2uZe 64Tc2MC4wM0w
apvk+t5pl0zqHLMfRmRaCVNgjOxizRKYrf7lN+LIC9rbAhOlMOjGMogPpd+j DC4LjKrDBQyy
G85BvZLBpMDixzg+3TJNUzemlg19jEBOpe3XrXLlg0CWKnajWbRL+rj0EOo4 1cquY1WtmmU3
BURlhMeGwNzQhuOctbw0HC1bxeZB3XJKewd2UxEFt7lfLL0vvuPkicTrkxf6 eIjGetT2dq2q
orPSUxo4TpLb4E7OIilSZocVDrz4rcDI6tohq1QKjyiHu7hnYEWgoIf1Oqf+ 4MQVxnncxwPO
V2yB+dW1f3XJsgBreUxjhhuqegHZvU6LoqZs+aSEDF3pH8rIUzgJTrUptmWH jiyfOhRw5WWu
fMFTKPmy22X151MkRwGBlYuZxZgfSqsXq7vLMfv8UWUY1FgBX2Cm7zrJbve/ Jet0TBEFrio5
yVQlRFm6cRh9ScmTRNXRjbAXuVT21OjTA9JtqCctkK8EAUV6TOoa2Orfx0Dm StWLKZI+N5fp
u/zr4evk7xgmUICBDPtZ9TCQY5wfwGp/KrXP98V+AbOYO4/PM15I4SsDeJHx 1RQupPKvpfaX
BvB1xjdS+TeH8tUUt7DMkdscWWerPsZ33PmG1a866SGvObbADsa53LqOqr+Y R3is7QZMbZ8k
+GliN/FM2+d4oTkv9foKr3VFgTf83R7P/gFQSwcIQA0a/HUCAADPBAAAUEsD BBQACAAIAJdw
PjkAAAAAAAAAAAAAAAAqAAAARU1GMi01TTJUZXN0L2Jpbi9ybW9mL2ltcGwv TW9kZWxJbXBs
LmNsYXNzvZbfUxtVFMe/N1lIE7ZpbSm0hSKhtM0viC1Wq8EKpinGhh8SCoo/ cFku6babXWZ3
gzK+OXb0oTOO4/jgX+CMw0PbhzL44PTZP8rx3JtLmglB64uZSe7de+8553N+ 3JP986/f/wBw
DWYEIYbTXs3dzFm1LTs3625wu0SzCDSGy65XzXHTtrZ8nuO1TZq7Hm+cLM6v 3+dm0DjbzRCT
SqQ8Q/ek5VjBTYZwMrXMoBVoOYYwenREcIzhRNly+Fy9ts69JWPd5gynyq5p 2MuGZ4lntagF
9yyf4Uy5A2CeQeeVwAgss2AbPh0bTqbKnYGL8kQ+itM4E0EvwzmpcJF+Fgzz gVHlo2Ur4J5h
+zr60M/QNTt/q1hmGPpnjRQ7xXCbG0Hd4wW37gTS7RJDT5UHSj/hXeqAZ7q1 muvk6oFFAS1b
fkAaoxWr6khlDNdfRmayER5lKX9T+vmqjmEkKNLSkbW1henCnemZYoVh5CiX Fvkm97hj8nwM
DBd1jOISOcFv7ThGzTJnODk2nSwdJV4JvLpJ2IatYpFfXU2V7xvbRs42nGqu US/5CK4wJP7V
KYY4Lznb3PP5Iq+52xSMR8kjTJccyp1j2Kok84cRlXrHDazNndycGCyT0uY6 hXuG5eSPjPKR
EiJEGR3nMRDBGEOyM5n0p4kn/OpBFjkdr+EqhXbd8C3zwL3t5OFg/S+OhDGh I4kUwzE3uMe9
orPBcOUlY031utlId+kWA6Oq12p+lcr96n8mYThOd8l8MGtsHdx/LouuP1nq WEoC/aaOPCYZ
Ih73XVvEka2SI4J1aWdL6qgIHX1UuIcUpJZ7cBlFHbdFU+oybW54EbzP0CuP yuwVXNums0Qp
zn6g4w6oL3QbGxvTNnW6cyprbWfzqVVBN6fjPRSIx+FfLht2XTa6Qxikjt91 fIGpJUupZSG5
pONDLIqdkl852FkVCB/p+BjkY8Tyi7WtYEd2G2ntUx13Qe02VnHrnslvWyKG 8WbHHBeGqWuW
HId7sn9xPwJaOdneDQn4oB8iQYUepm8X/WFEoYn+TU9RepqgkdHYld5D7AlN QtDpN0YjMEZH
x3GcZnrjEOI4QaOGk3hFKRhXCrSnOPW4Kd8t195skdWasmdxTslmlWwovNsm Od0iGVKSTFxU
ehqUaxekhhvEJM7E0+GnGNK0Zxh5jsvtHHdatMWb2ui2KI6HRKXRmBn8DeIz ghef0+lnSD9H
NjO2j/EwHqczg2N7uCZMhKWJOI2gnPViBRcpq8JUuqFOmRKz13Fdms/gDQpL SM5u4C2SfVsG
JdQbp326BQrpa4WUGGggnW1HepweGLywh3faQUwC4RThagtIogmSkOaZnL2L KQmSoGhPtYBo
tE8Fr0B+oB2hd0KBZNpB9kE9Q0yyzzGzj1IIK0/SA9k9zD5pop2nRAAeoQWU uDop2abkf0Uv
LzsSc7hhook50cScwDwWCPMArp9W6U4pOI92hAujCu5CRzjC2UPlBU2fvAff EM23JPEQQ/iO
Mve9JOlr6GuSjCqSA/tRmtP9VPbryn5W2b902P4Kwy+IhH+Fpu0Kjk922xL2 I3H8RC3h5xb7
2ab9bIt9ep3rPTHFRG1/Jiv8c6xB3FV6g8EXWO+O/g1QSwcIwpRHRL4EAAAU CgAAUEsDBBQA
CAAIAJdwPjkAAAAAAAAAAAAAAAAxAAAARU1GMi01TTJUZXN0L2Jpbi9ybW9m L2ltcGwvTmFt
ZWRFbGVtZW50SW1wbC5jbGFzc5WU208bRxTGv8ELG5sNIdwSYpJiQolxKG6T XtKaptyW1K0h
aQxW5Re0mMFd4lvtNS1qn6qqr33uXxCpykOgkpH6UPUpkfpHVf1mvHaNgUq1 tDuzM+d853fO
nPFff//+B4B7yJjoEbhRLZb34m6xUohvOEW5axdkUZa8JBdMGAIz5Wo+LnMF t1KTcVnc47xc
lU0H+/HOvsz5tn0CV7VWp4zA5Y2ldXvbXrXXlrZSmwJDqX3nwIkXnFI+nvaq bimfELi0wAAl
13soEIjOZgSMlfKuDILuFkxcEriScktyo17ckdVNZ6cglVA55xQyTtVV3/5i 34KWCSGAIQuD
CFHK+8qtCUykLk6UBJZMe47n5lYKTo3Wk9HZ1PmJ29oiEcR13DAxLjCudZ/y 9cTJPXPycjrl
erLqFGoWwpjwK7C6bafsdXuDFbj138oCZl56ClFghBhnyqVCT1qIYEpg+JT2 9rb6FJi6KMKS
R4mduicTIdZ22sKbmBHol6uHJafo5h5JHthSNHmROwHqOa/O3Nakw1EmstlO wGY7JExEBQa7
uZlXrZXXaPRsWrMZxTRn4S3MdzClFdPi/2E6C6Q6yizJb5rBDanzvBZNnkuv KO5buIlbqove
s/A23hEI7jXVk6sCIkm5qqyVCweUE1n2r2LZPKzw8zL7KPds3an4HWlIncEY MziHSwX7xMIs
YirYkoUFfEw5smacQl2evi6+F7tcbpVqStWIJpVGAI8srMJWO8laurWTDeEO PreQwrra+brO
nuyqfQskq0QeW/gUzC2ULterObnmKv7R7ssyr7x5YZKlkqzqlpU1E+zrwe6L wERaV8GIMNEA
n14+E+pK8y8oyHcQqgT9/JrlqH694jdYR5z0YIDvEEdgBgZP5IpeBeeDbbf7 HJVjb+wEV7vd
5mka125W0wjDGNECoxjzBeZ9AeMY1162/fv02oMOX8P3Fao1fN8HOh9gIBY4 xhuG0cDtP3Gn
W2WlQ2WgrcIz91WWqa1oQ1rlbgN3u/NIsU7rWmWsaemrqFmcVVQZsE19ve+o Z3CMhH/VNtfx
72841sC9l7HwxM0TvKtAAzrMAEcgQ9EvMY6sDhVrirRDRfA+PtBJRJj4hxok go84CyChC9Qz
YnCfLeyDfM8dpTvtg0ycApljqRp4eBQLz51g8ajNMsaiAruMukePPMvt4jb2 NdNkU6/NNN1m
mmYZV8jUIlFF4ZXwSSrcUbxTPkn4FMkxrCbICda6OWqMVKf9AVm+Zb6HHccw 1eaY8jla0U3O
eZf86D/70Zf96InO6Az+GkPqWF7BNJ5jPPAco1xUKw189gtMLhjGC0W38aLr xH5g/B9Z8Z86
qJbbVMsdVP0wRwYXRQ8f1VtPdId9gae6hwR7JI2tvuA/UEsHCEoKZNQQBAAA HQgAAFBLAwQU
AAgACACXcD45AAAAAAAAAAAAAAAALAAAAEVNRjItNU0yVGVzdC9iaW4vcm1v Zi9pbXBsL1Bh
Y2thZ2VJbXBsLmNsYXNzfVHLTsJAFD0DhQJWQRQRVNTEBbigiS4xJoSgITaE iGE/lAFH+yBt
8bvUjYkLP8CPMl5KVWKMi7nPc869ufP+8foG4AQVFTGGgme7Y13aU0vvcfOe T0SHYhUKQ/mn
1eW2GLUtYQsnWPSTDFrYj1gMyTPpyOCcIV6tDRiUljsSGcSxokFFiiFrSEd0 Z/ZQeDd8aBEj
b7gmtwbck/M8KirBrfQZisafizVorOgHPJBmy+I+AQ+qNcP1JrowLTn1hS7s McWuJ/R2iGik
sYGCik2GUih5TSZSPDJkIDxu+Rq2UGRQe83WVfOyzVD5X5Mh03dnniku5Hzn 3NKG9Tv+wGnL
juMIL0QLX8UugX5PZ0h9zcch6G70EvQ1MSjzi1GWpuyUPCOfOH5B5ilsa2Qz 5IEKQfexSpG2
AGENWfIKcliPBOqRgPKM/OM3PxnWqktcJeLGsB3aEsrhHEb328FeMv0JUEsH CMVKYPxfAQAA
OgIAAFBLAwQUAAgACACXcD45AAAAAAAAAAAAAAAAMAAAAEVNRjItNU0yVGVz dC9iaW4vcm1v
Zi9pbXBsL1Jtb2ZGYWN0b3J5SW1wbC5jbGFzc41VXVsbVRB+TwjZfCy0BkKl YI2UShJaom1t
tanSAMFGQkDACGqtSzgkSze7cbPB9tLf4L/wCrmAp/I82isv/FE+zjnZfBAS 9GI3Z87OvPPx
zkz+/uf3PwDcxUsFHoZxu2LtJ/VK1Uhu0GlZKzqW/SpLsgIvw4xll5K8aOjV Gk/yyj6dLZs3
9DPnlH0MVyVWBwyDVzd1h2E0Fs91f0zR10VrjwcQwpACta+zzLpWfKGV+PQG L+k1x36lYhhX
GPzZ/OZWOr+YYYjn/qdpyo+3GK6VHaf6KJlMypjEa07qhyiUERWjiDCEStzJ tPK4H8sdaIda
0tDMUnLTsXWzlOrrtJlgANcwruBthlhvzapRL+lmMiOEdXkWqV1nSPSBvmiQ CpKTSRXv4AbD
gGGVGCKdsa7tHvCik4oXgmCIqngPUwy+x4KWz8ggFi8omGYYaVtkXhZ51dEt k+FKTjd5vl7Z
5faWtmtwhnDOKmpGQbN1IbuXw06Zn2M93IvsAG8DR3I9/JHO0KZDhK1qVYkc xACi1CVOWa8x
TOT6tipZ+oo21xwKZj7Wj5ZFQ6vV+rPmVipEo3FfwT2GyctwVHyEB1Qh6hIp 6/s6t7NLsqRZ
UeuPVXyCR5RSIzC3EWlImqPg3qSE8mMVn4L4CDWUV2ksDKprU1XKKQVPGKba hcsaBi9pRtou
1SvcdFp1VLBALd7drgt13djjth8UY2irzKNFEXZ0Jog0lkVffN7VOc0uL4iK ZFV8gRUGhfLN
axXeGOkLygJsVUUea8SIVq1yc4/hTs/Z6RMfDeiXxPVMVK9FTcuJatFDzdD3 GtHKIgsfmyq2
RDh+x2pYBzGPZfLJJRkMNy5vAgU7lG27n1wuRC8FsS2azl9tXD2nUuZ6KhLI 9zQ47W+SpQbE
MwExWGnQGMn10KGWHaZaikZutca5LdnZHlzFPkruTmqpT8X+a+1RiHrnWm6Z BgmoLSzxqs2L
1HdE1vhG3XT0Ci/oNZ1GMG0SCZroKirqWAdpbRtac2VYKqr4UQx5eymHLyZD zjatul3ky7pY
HKNdczwn8BnUrGlyWzLFawoOic7L8yS6mgueGplmkJ5B+pNTEKDHT1KApJ/h oRMwfYxg+Opr
hD14g8GVxF8YShytHGMscYKJM7CdU7x7JDVH6K/gJqHdovN1+IQt7edbCON9 +hJHBAlM4jZJ
wBihD5PODGIkRchvnL4CszIOz5aCmwqB0v51w7lHv8LJYOIUt3+jg0f6CdIv 8ABePJS4akMJ
dzBHvwxJfOAC/EK3Qvfp7Gt8yPArHRGVOpD3Y/RMUE4Pj+iVOjrD/M4Z0jvh xVNkyOQpwwly
4XV6nWDjFF/9SfqNXMPkHXhCuaUp4AWKY6mVI/lzYxGnAr4mf7MywoFJr5cE 2npugAukLgyC
Z9imon6Tmz3qSjNP5Kx1QAddaD9J3+I7WSFajBfxnhHe84t422S50wfvB2gS bxdFF++uy4Cf
6rP3BuU2mk/e73YQ4HeRAjgg+wG8kAUwXN2K/CLag8l77zHMbrSKRPPIx5bv GhwZIw026vjJ
F/gXUEsHCDbpmheLBAAAnAkAAFBLAwQUAAgACACXcD45AAAAAAAAAAAAAAAA MAAAAEVNRjIt
NU0yVGVzdC9iaW4vcm1vZi9pbXBsL1Jtb2ZQYWNrYWdlSW1wbC5jbGFzc6VX +XNUVRb+brqT
fkluYmgiiCBCDLG7Vdph3IYOKIZEW5qICQaNC750bsLD3nz92lHcV9zXGZRZ cFeYcQkowUCV
Yqm/qD9rlc5vVjk1pVX6F0x5zu3X3Y+mO8EylffeXc4595zvfOfk5ov/H/4I wCocCaBBYJGd
zk5ErXQuFR2i0SYzebM5qeI0D8AvcGbWnoyqZMrK5VVUpSdonLVVUb7/GOEm gQ5ty2NGIJgx
02q8P6XSKuP096XMfF5gaaK21eJ+TKAtV9QvKbSms+MqVZoZVj6esRw1LiBG BZqtfJ+tTD1v
K25ZZsrawXOjlw6hhbUCvlB4RMDfR5aaITBfohVS4KSElVGDhfSYsjebYyl2 OZFNmqkR07Z4
7i429WozBk4RWLjNcXKro9GoDpdfK7X/zTgVSwJY7AViwEw6Wft2idOwlFxV 8cHhzesG+/r5
mGqhWAt8WCaxAMsFzg8ltpu3mtGUmZmMDju2lZmM1YOtpB8e4cjOkAjA4NEK iebi6EyJluIo
LNEGyaOzJNoZAb+zzSJUFyfqMoEy4ufwBTpD4UR1kmPN+AP+GMCqumwpEaV7 SE1aeYfhOA/n
U3YqaITrxVatGmul0y6UuAh/Il5MKqe/zLXzakA2l13CXCDGmHfwaI3EWnQI nJzUjHKF+rIZ
h+ibZ4lLJNaxxCKrzLMaUn0S61mqacJWagf51u5sU8cURtuwQ8ONZk4TLIDL qSxmd5W4SuEO
eupJYFmoboClWuqsUtrKE4Hu+prrHMJurOAownoQmwK4UmDJbKdIXIUhgQWc DcK9kHQKtpka
IAQLtiJqrahxVjKbTmcz0YJjUSNJUGrpsM0YCeBqgeVzCktswTVU03QiJSsU D3syf+XYdpV0
YgFQb1g2V4gCLWSjjLBBk43cawTmlYZb3d38rKANqQllq0xS0cE31T+4LEaU oAM81V9VXJWe
IDAuoTBBPYsBdjfimbxjajtd9Z3yGtkmYWG7gCxSu9RMlzN4s1KIlVMSaWSo sbnKHvy6QrOr
x8MjbCEncYvXQhkIA+SFn+NmsYLErfizQCBfZC1nt0ZVa5PURnawbCvL5jfZ asK6jdfvlLiL
1w29fvVQnGl8j8S9TNJ2TdJCjtr97Tmli/V+iTiuYPo9KPEQHiZemePjVSe7 rAqPBvAIkUPn
yVtWBh4jbL0rbPoJiSfxFJGMu0UJ8vE5EPOcetyCC8Do6OgJZO0ZiQ1IcK9/ TuJ5/IUc1DJl
unfXs+GRorrchRcDeIFSPbe0xG78rVhU/UVf6Q9SfYKuNx2T8xAz8A9iAV8W 2PE9Ei/hZUqW
hs1Dtr11oas0rVlxsSYsZdcA9PiVePy4PIy6PyfQOQN4ldDWLHGRMfA60dqd BPAmgaS3dY8x
sFegUQ85/n9J3IAbefS2xHW4wsC7RGf3UqQ5OyWxHwdKCHm6ypd1Eap0qBNB aG4jvw/D+iBW
juBAP5A4iGkKtNg3hlQ+W7A50DW/4a+97WpFS+r0d7FlWI8GLL7edVbdeFay aUpgPJNRtnac
279RuoRgOXnmo6cRTWjg6xbdqBv4sqW/LfrbwhdMPW9zv+3620q7J6GDtOfR LExf/mn0vY/g
fi3WqZUb6B2HH4txsl7lZ0FZTenjgTMiwYUHsOgQTo+Ig+jiVze/eiK+gwjx K1IxupQ8BV1f
msn/doQwH1Gcgim6m36FLlyqD5JFszgb59C3GStJpnjkHrLCe4MHENyNeQdw bnDhDC5owFE0
TlVmn0DsRkdl/hZajkBcewirj0Js8FOUkWn00nMxPZdGpsiiz+PdGI0VejGJ S7CdLlFpXI4c
ErDL3vUiiH7t3QA9BnydSwYCuIx2qIu7vrLP7Gtj5AN0TZUBaNKLd3gCbXQD FdwpXeU1bqDz
WXkGGynVMxjmOK+tNvWgx9T8sqnravrRXa38ZE0/rq+p3FOtvKumMnWNGkH0 HBPE1mpTL9UM
wqRUFE2tcv0wKGHJozi1Wn+vR98o668tc/Uxl6sxciW0G/79ET9zM+KbxiRz lmGm8c2RiF+v
dEcijXrQw1s9tJXdX2ZJl66tw/Q+QnX1EZXExzidSBfCp/SPwWdYjc897sRc dwa0vjBocV3J
LyGJSCy0j06JlPyKRIL2NBz9vo2Kaxp3cO5mcLcAxX/fDB5owBbtc3Bn8FG/ j3x+nObTeJrW
np3BX+lfu78Lvz+40+fz8y8J/FMrdAdfCb7mKylQZME3gm/5Kgb20fNvEXxH +BqCb9B6Sfu9
LdqP97dUULiAYge+JhS+odG3lLbvsAj/ISS+p3T9QLX8XyTxP+TxIx7AT3gF P1OafvEgs68a
mQYc0nn9EDO6/wiC8zIcbmr+FVBLBwh2+JFO3gYAADEQAABQSwMEFAAIAAgA l3A+OQAAAAAA
AAAAAAAAADUAAABFTUYyLTVNMlRlc3QvYmluL3Jtb2YvdXRpbC9SbW9mQWRh cHRlckZhY3Rv
cnkkMS5jbGFzc5VVXU8TQRQ9A7WFukoFBFG+qdAWZUFE1FaQEIjGggYMD74N 22lZ3A+yu9Xw
rzRRTHzwB/ijjHeGSQNlW6BNd+/cueecO3fuTP/++/0HwBOspdDBMBq4ftWs R7Zj7pC1VuFH
kQg2uRX5wXF2IYUEQ//5mN2vdmQdMCSjAzvMzhNHuR1JkSJLtmdHKwwTufah +T2GxLpfEd1g
uGngBpJpdOKWgRRuM3TmZEBP2fbEdt3dF8FHvu8Iht6yb3Fnjwe2HGtnQqbH MN5WMbtA6WUs
Hopt7orKhiNc4UUMJZ3oWW8xX/aDmiksxz4KhSncqmn5rut7pudHdvXY1NTF NAZwL4VBhuF2
2gaGcJ9hyAoEj87p6ziGfO6qmlRkf/9QWJR7X0zqVE25yA/c+sxrVJxlvT7t uNbSxg1MyMT7
TxPXFI2cb59nZuiWylu0qQ7DktZVw2upThuYkaq9p6qKoKFpnGWltVZElded aJ2EGd7kLsgI
yw+EufFeVexaaTwy8PjM4jVFI5GxS6QYFi/P5pB/4abDvZqpXWk6DQsG8igw zMR3ZizmqYE+
9DNMXtjt2PBlAyMYpSPTtEmxwS8NTCHLkN7164ElNm155gYvdvmcRFMT7No1 j0f1gKJWy3EX
SumKu7BCRezZ8CzHD22vtiWiA79CHfDW80Sw7vAwFCHGKcFOuuVYJiPvELK6 6ZdCF/ml9Rwd
9AXShdmf9PgF4zuNOtAjfWqGEe4dMmQZZEvvHfQqP1VUs5ToLWO7Cj+QPsHd bw2OpMJsK/zA
aYzGS+sBhmmeyWLHM401M+20ZJpUTLQT8UwPm5n2WjLlFBP1WDzTbDPTp5ZM c1T3NWIyNdO0
rnayMHuC+WYepnhonjB99L8Ug1lshxnBUhzmWTvMFHVADOZFSwwSKCqrhFfq vYJV5R2g52vV
H0wh6PMfUEsHCDjIPy+6AgAAYgcAAFBLAwQUAAgACACXcD45AAAAAAAAAAAA AAAAMwAAAEVN
RjItNU0yVGVzdC9iaW4vcm1vZi91dGlsL1Jtb2ZBZGFwdGVyRmFjdG9yeS5j bGFzc41VWW8S
URT+LlBGYBSsttUu2mqrLNVx38DWimCqiAtNE32bTm/p6CxkGGz6A/wFPvnk m08+uBs1MfXJ
xB+lnrmM2BZEQnKXc8/5zne+Offy4+fnrwBO4bqEAMOoY9orSsPVDeUereaW 1ZrLnaKqubaz
LiHEcNZ2qgrXDL1W5wo3VxTNNk3bUizb1VfWFd2sGcrWsHkyMcimvcyNO6r2 SK1yhv6SyOQl
8W1ZhpjwqazprrbKMFjaSqZpJ7dIRa9aqttwCGe2o1Ou1J2lTzA7Q2jhnG7p 7gxDMJlaZAjl
iUMUQcRlxCBL2M1woJsqkyejSGCP572XYSJZ6uacTS1GQKXJkLDDW+2T0Ydw BMMYlTDCkNgu
i4wxhKlmPl+uLMyV8wWGeEm3eLlhLnFnQV0yhJq2phqLqqN7e98Yclf1OpHv TohhZ8WlVLfU
mh+X0Ov+YdF2FtZrZBpIlh6qj1XFUK2qcnvpIdfcbOqBhCMMY9uV5prtcKXQ 9IphCkkZKaRJ
aJ431DoxGk+m2r6PHyU8sjFM47iEY9SP3fxkKDhBXVPlbqHVWIf+Df630cK2 YOcJ11YXCaI5
XHW5LxTD3eR/2qnsTTr1U3vqzn0XxTlckHCeYW+n9pVxEZcYdizbf+7C6XYK W3SmzG2FSMgx
TPVEiBRxVYd0ZOi5Vob9TZ3KqsmXCwY3ueW28FIdPkNnLUiDJo7/eVoQ/U3z Le9NaBl9X7/s
ljlasRuOxou618BD7W1+3FOHHqF5y+KOaB5exwTdvyA9fgGIS0irkHctyRoR 1ijtmPcI0LiT
LCadM5rH0h+xK/0Fifu06H+PgTcY+o7IG+x/i6HX5BDEARqHBWSGgm4Q/E16 JKYxiGMYpbY9
SCdyEwzjRAQ41LT8omMmiROGw5j0U68TnQDN6QzleoG+0MvMN0w9w0hmA1Of cJThEzIMfw6D
9GvxGKTsQJaKyVFhM8RjFknMCQ6DTVSfg7c6Sf8FTLDpQzAyymhzGmd8Gnmf Rjz9DgNe6g84
u4HsKyGXlyssmK9uwo63sOO4TNk9wFlc8QGnxZ6i2XaMtU0aBXwMRqz/H/mk Y+TVHiKfdozM
9xD5vENkANfEWECR5iidJYQO+A1QSwcIdv6S/0MDAAB0BwAAUEsDBBQACAAI AJdwPjkAAAAA
AAAAAAAAAAArAAAARU1GMi01TTJUZXN0L2Jpbi9ybW9mL3V0aWwvUm1vZlN3 aXRjaC5jbGFz
c6VWW1MbZRh+viSwJGzLoS0FoQdqa0OAplpsFSLSpmkbDekhsWpbWpfwJSzk ZLJUe8U/0Gsv
vNUZxwusM3XqhdO7znjj73HG0/N9uwQCCYzKDLvfvofnfd7Dvptf//r5FwBv oGbAJ3C4Vqrk
o2uOXYze4Snzme3klg0EBHpXrMdWtGiVC9Gbiysy5wiYpcqSLN6ycqtWQQr0 p7Sz8vNkMwKd
MbtsO7MC/vDYXYFAnC4h+NFtwkBXEAIHTHSgM4ge9BnoZaCdKCb60SkQlMl0 Jns5HU8I9KTs
skyvlRZlLWstFnXwSs4q3rVqtnr2hAFn2a4LDKRaZTWjFE1OT6qbjsMtPWLZ 7Mws3Q5kHDKb
t6qedddSxTUQuBBOVWqFqMwV7WpdRmUpz3OlJqMJt2gzY6mddSRgMGMXypaz ViPY6X0RyKIb
JzBq4KTAsT2NTZzCq2yCjBetOitxMjzWDl1bzITYkDMmXsFrArfbMnFt/0um IWdZJjbn58Q+
CAJX/icFXapxTBqYEBjZC8rEOUTJT8YrZcfidNUERttXywugwF83+fZc4EwW pKOh7Lwta8mr
euSTqqBvqoJeFJgKJ/99zVSIt0y8jWmBgwyRyKxVOfWcVfbzTAuGuUqpVCm7 s5tI2XUFEcOs
gXcIoOG1SmlMvIs5AcOuJ0pV54lmfE8xvmIijmGB7iWZt9aKTtyqS4WSMHEN 12lHIgJHwsnW
46ya7E3c8b0byBBye0K9qWaGNDi/QxTbG1G9oGf2LzQnw8BNgT79oqetklxK FGVJlh2V/20T
d5AhnRwT364UOBtO7XJp1TcDH3BDalNvjyngD018hI+ZtQJubM5THubm2mwJ d5/Tqa3m1dZV
YAsmHuIR663AtFS94akto9bvoJlrmlKRpKjclOOhFilyi9RknbOgdm0L1K6q S558DjZnI9BR
csmZ27lxitgEgcGWBdWqzoq3KQ7tLJBW9zXnqmWhTGWtlpPXbLWYe7Z29zlF WSAcy07vZj+7
W4RRFtjPLyNZq+8TT108G/oa5NMq74L3vshPCD2F+RLBpzj4I8wfKAzgEK/9 vIN7JYAoQjiP
Xi6Kw5SYriOOYID3o02SQd6HXMnfdBCG1ggukGH4MMKzD8c0gTuk51OWkfHn OC4w/gynN/js
17E7tV9Mxxtw7bx46nQWYeq3Ipte5IDa/I04YzrOb0RUecwxTESAqX6DHhXz vMDEM0xt8HhJ
ID35HKz/V+iOUHr5W/RHJv3PcdWHFxif8Li5dTnOMgLXGfUGo77Pb9k8+aRZ oZtcSCnNOeLG
bHCeo21Sc53T7H3qC4j36O3Xebg5znl5uLoUdaqWB+Af/ANHDcTShk6G27iR 5LxKUnzJUwef
14e/0+E+h/unQIf5f5H/CxMvkE5HJp/h1nRgKPASIZ2pOm9QldWqu5uqdmb3 tNmDXSp92qrR
LH8PAfdJcoG5PGTGjzCFT3AJOXZ1ietZslp5WhSoXaF0ldciHqOEJ6joGj7Q /Vtv1HCd/pau
4bpXw1FqFunr51MPUSWjx/ibIU9Uv/oEeLIc7ZZhU7bSsDva6NK6V3UXY4Uy 11OdVhqyIW3R
NfKn6oRqxO/w6XOW5+7Nh3uugiy5gBtNWtWZ3KBUNcQnds75+rY59zXy9bEe uaY593lMhdrC
DfTSPuhftEUvtEHnWm6gl/dB/7otut0GPb5rF7RH/74tergluo+zo65VD//T fwBQSwcIVhuj
GwgFAAAhDAAAUEsDBBQACAAIAJdwPjkAAAAAAAAAAAAAAAAdAAAARU1GMi01 TTJUZXN0L2J1
aWxkLnByb3BlcnRpZXN1jrEKwjAURfdA/uGBHWuSVgQtKjhU6KCTo4tNQo2k TUgaqX9v6iKF
+rZ7DjwORgvYcWPfTjWP/oDHSSd7REklCqiD0oJYZ6x0vZI+fUFGMsgZ21C2 pSsGbFPkebHO
QJtaQjlYSDDCqFYdUR3XQUgPeyDpDSOYXmuE1HRGnMvrcVldTnPO6tDE10Or /8tfLkbPu/OE
m9YqLYlxQrqxBiNvguOSkLi84xQjE3ob+i+I7RF8AFBLBwisvnB7swAAACYB AABQSwMEFAAI
AAgAl3A+OQAAAAAAAAAAAAAAAB0AAABFTUYyLTVNMlRlc3QvbW9kZWwvcm1v Zi5lY29yZZVT
XWvCMBR9F/wPIXvWqHsZxSr7qCDMIVNhrzHe1rA2KUm6un+/mxqLhQ1mHlKa e8/JuefeTOen
IidfYKzUKqbj4YgSUEIfpMpiutsuBg90Puv3piC0gShZc/HJMyCnQkYtaoKo fo/gQjJlIwzG
9OhcGTFW1/VQF9lQm4x9rJb0kmK7KfV9kzEZjcaY9roRRyj4QCrruBLQYW+U dMAgcllaaBig
SD3LhCU+jRLFC0w2hU4DibK792ULZz7SbEMIALs2kMpTAM08agrPObdWphJL Jqg9ct8l0gZT
muDlqjfcD0kOBShHCd9bZ7hwMXWmgjOb59vgr3CV4fkCOH7hF9pH54zcV66t wu+U5LoG86Qr
dcB+Ybe215gX7rg/IP+y546xBJVgryk7F8quK7259jAdKGpTlWC8EBtTvKVj CruZd6UPkN9m
3jukYMDPTuAoz9qQsyrL1sDBOIyFX8FK1NsWIrRyXCqvO7TwD6PwoPNC8OgH UEsHCG53y1hz
AQAAXAMAAFBLAwQUAAgACACXcD45AAAAAAAAAAAAAAAAIAAAAEVNRjItNU0y VGVzdC9tb2Rl
bC9ybW9mLmdlbm1vZGVstVRda9swFH0v9D8YjT3Wygwbw8QpI45HYQmh7WBv Q5GvHVF9TZLz
8e8n+SONu4TBYH4wjnXOufece+Pp/UHwaAfGMiUz9CGeoAgkVSWTdYa+Pxd3 n9H97PZmWoMU
qgSefgW5DA/RQbD0REw88fYm8pfXkzb1hxnaOqdTjPf7faxEHStT4x/LB9RD gCoDIxBQzrSF
FgiiwslkkuBFgI20h1b+zh16RVFLyJkB6pQ5ZggvlkVy93GZPIN12BraV2hx a97UTD7kGQqo
nz2qF1kR4bt+FKpCERNaGQcmQH3hUxO+gXg4i+HMQAXENQZy4FAT1yaXHyUR jKKIKqE5I5LC
N9gFd5/CMKjSR8PqrSsY8NJmqCLcApoFvWnllVndeZxVjEOK5ynOFW0ESGff JxMiS39/Auf8
QC3magM4B/vilMbGe+i6m+KRUqvtU14T+kJqsJE2ULHD4LpkVitLNhzWRu1Y CaYgfazONOAX
KGj25Ay9lnmHu7479Tkn1npxJlpY56vjtkdjJl5wCKYQ/neJMLpy0OllOqGi m4uNqPFPMN8y
Xo71ekSG2l/p4otzhm0aB9HVEtgPFk79/s9CvxrCWcWgXJ1XnOLXiC6EdjWm fnIXk75K6v5n
l71qozQY5/djpaT3SYNrA3LYl1EWZyv0NopHqMDT6Jso2tJY98t63X77Ytjp 8E3Df3zU/Nvf
UEsHCDjmjP4NAgAAEgUAAFBLAwQUAAgACACXcD45AAAAAAAAAAAAAAAAHgAA AEVNRjItNU0y
VGVzdC9wbHVnaW4ucHJvcGVydGllc1WLOwoCMRQA+0Du8MAtJT8R1qB2FhZa eIPVPGMg8YW4
btbb66KN5cwwnM1gfaH8KsHf+i2fUP7xpJq9s5Dj04e7yIUylj7gYz6AFhqM Uq1UK7lQoFpr
jF1qiHRG2I0ZGs44+57HLiFs4JToCgdyGD+h0BAcll+qtQocu5QjCiqeszdQ SwcIsJi1IIIA
AACeAAAAUEsDBBQACAAIAJdwPjkAAAAAAAAAAAAAAAAXAAAARU1GMi01TTJU ZXN0L3BsdWdp
bi54bWxVT8FOhDAQvZPwD2OzR2kLGxMkFE6aeDAxRs8GYZZtLG1T2A3+vYXi 6vYwnTfz5s2b
sp4HBWd0ozRakJRyAqhb00ndC/L+9pjkpK7iqKyxVdKO+Mfde+7S8s2bJIkj KFtjv53sj1O1
IPYf+sLuqSvAqlMvNfVLb8+Q0hQyznPG79meA8+LLCvuUlDmE+FhtrCLoyQJ K8JgUAIocZ5Q
Lz7AGqknQYzr6WaR4nDwuXFIe9Tomgm7D9u0X02PpFrnF4mt8ovDOzkpyHGa bMEYc4M5rCGo
kWtqq5pxFGTtv/rwsm24ZnkHz6ZDJciwfEHOF1dEWLBTsss94Vp2OfcHUEsH CJuVQTT9AAAA
oQEAAFBLAwQUAAgACACXcD45AAAAAAAAAAAAAAAAIAAAAEVNRjItNU0yVGVz dC9zcmMvcm1v
Zi9Nb2RlbC5qYXZhjVNNb9QwFDwnUv7Do1TadkXsO4RoOfRQCQSquFde5yVr 6tiR7QCrqv8d
f8RsKrQrLpE/3ps3npnQ7bYqYQsN19PRiOHg2rSnrw/i4fV9dx0WtConxp/Y gGBG3X+oyqoU
46SNA20GglyKySLBsSdcj6NWZHZCkrvPwrpLxci1QXL3df8DeSqkmd6buoY9 DkLVs0VTd5pD
XSeqn8DgZNCicswJrUD34A4Io+5Qgo5gsGlwbJt9+yUcNnTfNtQfbMgJHVX3 D3a6ndKc7x6z
11LqX0IN0CNzs58KzCDYeQoPwu596phlagFopGifd1KopygVifPfDui+JQEt BGJ5E0m9NNQ3
LS5kpIZOJ0Y7i0l58uA/S3MAjeg3t6kovj8tB1RomOeX3Zv3UnAQyqHpGUeI jYC/nVfBwuIA
PFdlER0oPMgD+vcqG6X9yeSMWecs7ekRWV3g2nsi1Oit8Sb1aFD5YdLHgCTQ oGnYxkpfleQM
wMcJYS3cgv6yNJ4NRJEdC4v7JQnIVPBsTfiV5JeYgrBq4wlKZOZdgvUgnqVB JuUR7EHPsvNc
fOASdwYdWm7EFNMYagnJtGmmdiZz4WpnotRnlP5v4svIy2F5zHAhNcXf2Kxh P145M+PVcr2K
UhGzVMTfulmb1MIq4De38U9+AUpTzKryD1BLBwi8guzM8wEAAHUEAABQSwME FAAIAAgAl3A+
OQAAAAAAAAAAAAAAACcAAABFTUYyLTVNMlRlc3Qvc3JjL3Jtb2YvTmFtZWRF bGVtZW50Lmph
dmGdk09vnDAQxc8g8R2mSaT9o4LvDV1tDznk0lZJ75WBgXVjbDo2SaMo373G hl22zaZKL8h4
PG8e72fYep3EsIa81N0jiWZnN+GdHW/4zYvr6mJYsCTueHnHGwRqdX2ZxEks 2k6TBU1NhqUU
ncEM29qtNWF29aX4gaX1B9k08V2aQoGNUGlvkNJKl5CmYfonIOwIDSrLrdAK dA12h9DqCiVo
LwaLHNtNXmw+8xYruJLYuuM5KzY5c4VFdpiCqvprRqh2Yd43p11rKfWDUA3U yG3vpgMnBNN3
w4dh9SF09DK0AORSbJ62Uqg7n0LmfYw2zhu0wzsMHoeF9/ScM9cz5jsJ5aw7 GNoaDJlmN+7x
NYQ8iU3iy1U4G9LghbHES/vxzFKPZ6HUoELizvWEqy+kKEEoi1TzEmGuB/jL uogMjJjgKYkj
jylyWjfowlDG53/PZY8TjHn+h9iBW0ui6C1mof8k52gCMCyuR8DI1YBgPmIf 30wbhFELC6VE
Tu+DgjvvcBFyKR/B7HQvKzfWXRnyjjlUaEoSnb9Pw9ksmxyyycWJ2zKUtuRz OBHDSx5HdY/0
3ASEy1tXVM1qVvoX7e++b+oIzAl/9oKw2jOP/oAeeepRmAaj4nLlf8AD2lu0 L3F946V+K/JX
Mu448XZ0M1hR+PA/Ye+/92Qw91pUcMwkDAoRPQNjR79IEv8GUEsHCCEXXWII AgAAKQUAAFBL
AwQUAAgACACXcD45AAAAAAAAAAAAAAAAIgAAAEVNRjItNU0yVGVzdC9zcmMv cm1vZi9QYWNr
YWdlLmphdmFlUMFKxDAUvAfyD29xYbWQ5gMsRQ972IuKf5Am02y0SUqaBUX8 d2vTKuIlTIZ5
M2+erCrOqKJGx/E9OXvObfnLv8RC7k9m/w0kZ6PSr8qCko/9LWecOT/GlCkm W0MPbpxQw/cz
jgn18bF7gc6LkDO5Ze6EoA7WBXGZkISJmoQo+feUMCZMCFllFwPFnvIZ5KPB QHGxo0MD3zZd
+1SWaWTXNnKmDvWvP4L55/5T6G5CqVA/z89qc2WRV3h9U2RLaoEWAUllmO0Q l25wmlzISL3S
oHWU8Jbn7IkelIc5DvBzFfrg7JOk3EScfQFQSwcIWEVmQeoAAACAAQAAUEsD BBQACAAIAJdw
PjkAAAAAAAAAAAAAAAAmAAAARU1GMi01TTJUZXN0L3NyYy9ybW9mL1Jtb2ZG YWN0b3J5Lmph
dmG9k11OwzAMx59bqXcw0iRgUtsDUCYQGlIfmNDYBdLU7QJtUiUZMCHuTpqk Yp8PA8RLZSeO
/f/ZbjoeRyGMIaOiW0tWL/XE+en2gT0c5eWoN9Io7Ah9ITWCbEV1FYVRyNpO SA1C1gnShnUK
E2wrYwuJyfSeUC3k2kamQ8mzOIYCa8bjlUIZl4JCHLvyiyVCVkz8sywtJlAJ Cdoct6LEJrFR
uYZOildWogICVCLR5h71UpQ2HAldAhc8JoXS0uQC2hClQFS7mawW5OW+khuF jjKZm8+jw3Y3
NXKUpmQ59GRVNIwC4xplRShC/8IjAL5rk1/B0Ar4iMLAtiLwvIrxukEtuMmg NOEmgRdauSeJ
iz3at+A4SLCjN7CCgy2B+expcTu7m8K14zUTbZKNiLz3GWf64tLO8Vv9HPVK 8n4GHN9AFM9o
Wm20u26fZ9hOfOOy1NjnvwWRtt6p5Q7wW04f6/fHez9hfOj36b8I94sd4LNB HszaR7H6NRv+
abXq+n8ZSyjW5oKpv1pAT3VKrSNLO8ysRr3herpPSNONvY3CL1BLBwiSBvr8 nQEAAOUEAABQ
SwMEFAAIAAgAl3A+OQAAAAAAAAAAAAAAACYAAABFTUYyLTVNMlRlc3Qvc3Jj L3Jtb2YvUm1v
ZlBhY2thZ2UuamF2Yc1Y227jNhB9tgH/wzRdILtpbbV9bLxBjERZGE28gZ0A fRNkaeyokSWD
pIEGi/x7SUqUqLsUX9AXQyJpzcyZMxeOcXEx6MMFjJ1w+0a89Qu7it6N7IJc /DR1P4kHY9Df
2s6rvUYgm3B1OegP+t5mGxIGIVmP0PG9LcURblb8OSQ4MieMEW+5Y3jZdPLG tyltPPUYiW88
N8cVEgwclDoaytifhkNY4toLhjuKZOiGDgyHkeFPLwjj5VUsYGwsr2AVEmB8 eRO66I/kqSkD
JwyY7QUUbMdBSkNC04PIbAiX/6DDKLAQCG4JUgxYJH3nR6IAxr53hbbzAo6w +texwd/zWyu0
2Y4ghCtoOorBblPYsQM3+qNrc63Y2xbTE2ND6SIhwcAtAnJNMXLzaM5/7myH heQt2pGAwKsX
uF/PYkKcRTtrDJDYDF1Fl93S9xzwAoZkZTsI4lsxxoD/Mi6ZgvIq/Bj0e9JX vdghim2BvcFR
tFzpw161Nb2caj2pW2/BuRmsAWeTBxO+wpkw9kwSploLuhVWPM+nR1RnYfHv C4VeGNv+aRiG
UEz+RPRup+ORMVtYj3Pzbvp3HXCUH/WRhQEnAGU2D0fBZpaqe3j9MvyazhZP k9mNcK5Ej+cM
f6SdmIp3L/DY5y8l2mvRDJ6bBPn5j2vfC161L8440q7p44ZHuvgkjHFzJRch Xh0bfOX9PIrh
fY1O4rJUeOmhnM0/r5Hp//v8pRJPHrkg4uPWMu/NB3P2xLH8rQQsla10oAQM PKUKSSKfShDO
wVYl4bDOh+uQuDzn16huWXGklxnAU+gSieAnZWTncGNsX1lFFW3Pyz17IMd2 N+jOnDw9z03r
5vuz9Mzv+9BYI4hkcFIKj8ZdTWJb2savDYx9nNz8NflmViDyP+VqrHTC0hLu 7sVb3Z8nZKwy
K8/VOib/UhqirZn8IPqThMfy7YgsTqS15bD8QwODH77fmvccpT+68TeWRDUO x/2qSFa8IY3b
YvA9yk7hfWmHZcUkWOydfFNnnpDCkRHlyVY3ZY5cYX4zyN0FpJekslmu6iW4 smfY1z4idapT
qaKmjfJ01tWt5G50j4NCg3HZHimxliTeasRUE5Mgd3zAcpplBNfjpZRNol6c 6tCGpRfpPLRW
9NkO+JYwUXXMxbJ/GvplSlMByHi3BeeS7mA/OGSSKdSO00ChJbgCEHKvBQxx gekYc9WFogQd
rRejOm3oaaKwTteCNhVA6iYU4rKpRqcTpgRwK/1YDfKraJDCn20GDuE1DqMN dUVO6p0aOx0K
x49Jrrhjx/MgYbz2WrC8Vu9bXHkBl+p7jEvwq+ZoQl1tktZLRmm9mllabq92 mJY7q0/T0q3K
cVovnad1H1ekg7F7BYIYgsUAljW+MViHHUfUu6rOrHYTiQ+OJAqgxaipVJcf TCQDn1FF/9EF
14YboaLUAeArtTAt+OUzjEpbMw3BXkRqOxA4KHuyM4HuQ4EmzqSjgQyCuc5h L9zaXD8Pipl+
A+16BW3CS11EM2hlGowPBFWna+qxIy2t5MXLatHqQpV/F7/vYBgazIP+f1BL BwgQ/eE3jAQA
AGAbAABQSwMEFAAIAAgAl3A+OQAAAAAAAAAAAAAAACkAAABFTUYyLTVNMlRl c3Qvc3JjL3Jt
b2YvaW1wbC9Nb2RlbEltcGwuamF2YcVWXU/bMBR9TqX+B29DIkU02TNEhap0 UzU2ELDtEbnO
bevh2JHtlFUT/322k+arLeyBlZckdu71PT7nXCfh0VG3g45QRES6knS+0IN8 HDYn3OTBJD6w
D2G3k2LygOeAZCJmAU1SdtrtdDvmQUiNfuElDjJNWTASjAHRVPD6eyHnARBG UwUBJLOAiCQR
POBC09kq+GZvlGCbNVpg+i+prtj4kir9XDAQISEYjxhW6vSFqAnXIDlm46vp L7ODl5e1JARF
9KRFyPYMB7qs0wbvmP0qYmCnzbkbc7nO6Xfx4VrCd/0+msKc8n6mQPZjQVC/ n8s55MjigwS4
dsQiMUN6ASixBZBwqNFhBMkgmg5c1SicDqLQTBwG1fLA483FozS/35n1ZkZw 8Uj5HM0A60yC
QlhCVRzikzwnY3kSQhGjgz/njPKHyk35xi2NH+agi90qZPGtBw7bUxSa7MKx 6yWjMK08ez4H
DhKbwmvnZlNGCSLWBKgsg+C3NptTqKZghboIRH+6Hc/R7T3Ht7ebLa+FyHOQ vFQKbYpCXAHy
e66ap7IUpN8zSntPVu3/Uv/8aglS0hgaWPJGQXBrLUPcYI1KgtGWo5oVg0tq jIyZCr5eXYwv
3wIv5XoN9lNuvpHIuG5h/vifod1maWpsr35iyU0fKP99xskCyAPE73sWb+4/ 1++RM3zB4ADV
rN4C7W8J78HFiuOEks+g/boSToD7++vh6Mvw8/j2+BmZ6lFaZpBf9+m2nI2N Mx/BhJsoBTeQ
iCX4reMYCXN4yTGPj53qxVkzuTjeslKi5mrdTI9UkwXyy/hi3iNYAXqGwxMX VarhN07t6GzQ
a0jXC6ZYUVJAr6A6JJZbS265muvwoLXfKqm2tzJ/r9oUjIO1WYvsqRAMMEfG 74ItoZqw37e7
VQqvy3uD5F08Wpg1iCW0EtIb9/8WhpeCxubk2uS3oJ7D4w/Mstdis0FjQIxg xQdm4x2O4yFj
vl/9xkVn5ZeyeRiVGE/rklUiFercNtVpZO3V1Tnn37lqs74Hkndwk4OpCu6d k3X3wkRtmPF1
O/ldkx6qxkmqV7ubOge0hZonFIblP1O38xdQSwcI1fEUOi4DAADPDAAAUEsD BBQACAAIAJdw
PjkAAAAAAAAAAAAAAAAwAAAARU1GMi01TTJUZXN0L3NyYy9ybW9mL2ltcGwv TmFtZWRFbGVt
ZW50SW1wbC5qYXZhxZVdT9swFIavW6n/4aAhtSCa3EPWFa3ZVInBtJbdVk5y WjycOHOcMoT4
7/NXvsoQ00TZTRt/nvd9zrHtHx8P+nAMQczze0E3N3Ji2363w3QezpND/eEP +jmJb8kGQaR8
7dE0Z2eD/qCvPriQwMXGw5jRvEAP07X65gK98CMjRfHyPL2bF15FPzCW852d TbhLkmISMkwx
k2fdoW/q56uVZpb5lb2D8Rgi3NBsXBYoxgmPYTy2Vs8z0CHNdkRSngFfg7xB SHmCDLgRAsMA
00kQTUxwcNEDP5oEvhoYek0YzJKnQYLc/i/VvmvOGL+j2QbWSGQpsAAisBGB yaldUzK7CCBg
dPIwZTS7bYh3OGhQ7zYodR9oqfrDSHsMfLXYJbXaMfDzJq3TDWYoiIpbJbeM GI2BRIUURHmP
deJgNxzgL6m8FtDKVWOiOx8eBv2eSUbPQUhwTUomYUtYiRXxofNYORkd7XgZ ApFS0KiU6Nm9
ns1s7/l86KFpgdiK4zpbJEybiwSFaykwvVxwqayqCih0rcSwphlhsFCaVDov z7+Eq3AWfjq/
vljCe8hKZqu3sf7PcrvKulp2M6Owad69osxRjI6UhN7j3mRMr7YoBE2wI8ke dsCFwWQalSqB
quYzaB1V74JKtSsrPE1wtgovwi/h5bLRvT+GttJd/pqqawsd2dEjnN1nJKXx Z5SjtviO5tVK
N0/+wl01U4oS7e+eE+W8bjlV1eucOuMZ3umm810ZXbyu0SrIG5ajdWyvJ0Cd OKruInfrzmcn
EHHOkGSg7mDOtth06JdoeZ9XSIo7KuMbGNVLXX8vJgXCC5BOzcyqnOoi0xw0 iHrEHFfPyGxJ
rKXVkt4coCkZXDzF58iqzH7X1/grwqoKtDp8dYizNswGoWO36LLrrPoPyK6z YhfaHhh1np0X
AFlFTdQ3B1MdMJwXTwrq9Q/bzotsn2T40LrpD1zfKRx0Jnv4s1RX2aie+ex5 tUb+gPQRfH/3
aR70fwNQSwcI+WM1VO0CAAByCwAAUEsDBBQACAAIAJdwPjkAAAAAAAAAAAAA AAArAAAARU1G
Mi01TTJUZXN0L3NyYy9ybW9mL2ltcGwvUGFja2FnZUltcGwuamF2YbWS72qD MBTFPyv4DndQ
6B8weYCJtBQZZWMt2xNocmuzqQlJHBuj774YtWs3tn3aF0mu8ZzfOYYuFlEI C0iYVG9alAeb
9nt6OfDDyYZPugWNQpWz57xE0LXcE1Gr6joKo9AtpLYgdUmQVUIZJFjv3Vpq JNm6yo35+1yn
RrJt8YTMbnrl4bw3e3CPXe/uteiY4CqOocBSNHFrUMdcMojjPs2qgU4Va2xs boVsQO7BHhBq
ybEC6b1gmmCdJkU6qCe0SBPqRlPyaYAN/y6fqLE09VnWssQGdW6Rj5W1RSUY sK4FGDy6fICv
1skauM9r5FlP6V+cmE0fffgI3qMw8LGD33IHPzMHX/gCDxgoLa0rAvk53mzu /QLTKtSzues8
OHa9/wvBcvuCWguOFzT9zQF87H4e85uRSqNtdQNnl4LcCetUK0N2q/Xt6iY7 EUfhESg9ixaF
H1BLBwiyoa7rUwEAAP8CAABQSwMEFAAIAAgAl3A+OQAAAAAAAAAAAAAAAC8A AABFTUYyLTVN
MlRlc3Qvc3JjL3Jtb2YvaW1wbC9SbW9mRmFjdG9yeUltcGwuamF2YbVVyW7b MBA9y4D/YWIE
iJzC0j1OghiOWhhtFqS5FzQ1ktlqA0VlQZF/LzdZlOwgPcQXistw5s28x1F4 ejoewSmc07J6
5SzdiEuzDvsbevN4FR+rSTgeVYT+ISkCz8skYHmVzcej8UhOSi6g5GmANGNV jQHmiZyXHINo
mZG6nn9kdbf+jVR8aHZvAHwcVoELoq+EipK/rv4LaZU1KSuCSC3u9dy9o1O+ KWPM5v29BznY
OHtOXMBhW/Wj2QzWKAPMmhr5LC4pzGaGgUUBCjrmWAgiWFlAmYDYIOQqNJyv L22s83B9GXTu
sIh3nV2lWCAnAuOWv2adMQpUUQIOcFUgwBchvdTgVq0D07OHv+ORp9PxZJgl Rxmj1jBjTEiT
CUisYT+ZwFx4twDe++l4g3w8nZBnM6qVf9qDyAom/KlG6gkL2fNcC4nXXV6A 7yynrdaCBwm0
lh6C1e3Px8XtMgpSFG2R/MlGiOosDENFuR6MnCbTOeiILAF/EOnoAoomyyw4 z+MoGl4M8Mz1
2Zsa9UCJoBvwoxeKlRYGtrPWj6PcDmtWpn5nOd+6szELfB4KwddWb0qxuxwT qc9CVrug2CrT
Un0wbnfgmXTrpkK+F+snQri6e0LOWYwdHNuqgOqK+Ka/AepPC+2Zaa7MppKL nrCEIV9d+9OW
MEpqBKdLBPeL5ffFt+gMLDsmhj01ue65dXN3Hf0Y3NGdqr1hH+WZUZvY8PJZ E7/KMkxJtuBp
o57oVlr+5FHyarrEyQS+QJfILcklELk1OQFWQ1EKIPBEMhYbe53jpNPZ4aix dOgXZysxrJcp
s13qdmZ/YL/kY1cFcI5srWwRW7vDqsumoLnq82aQ64XGbbq/Ab3d7UPO7b/p 8Hgd7YGUhLNs
gVtIvnM0VU2zp+TPwhljxZFuge59xteuze4/w8lmfybuc8O2t26TeIMwHHSp 8egfUEsHCJ0J
8pjGAgAAZAkAAFBLAwQUAAgACACXcD45AAAAAAAAAAAAAAAALwAAAEVNRjIt NU0yVGVzdC9z
cmMvcm1vZi9pbXBsL1Jtb2ZQYWNrYWdlSW1wbC5qYXZhzVhtb9s2EP5sA/kP 17RA7UKW269N
m1V1lE5YYme2U/SbQUu0zVWWDJFO6hb57zu+SKJkOenWNSsQBCZ1PD48Pvfw yP6LF0dteAFv
wnSzy9hyJU51u1/tUJ3PguiZ/NE/am9I+JksKWTrdOGy9SY+OWoftfFHmglI s6VLw5htOHXp
eoG/04y6vidExuZbQU8eshzEhPMHra40hgftxnRBM5qE9GGMciWF46C2LLXW yzSi8Um1b0jW
NPJjuqaJqH0a479zEoo02zV8KVdw1O7nO/Gk14M5XbKkt+U060VpCL2e3hUv AYlQTUQESxNI
FyBWFNYSFbyZnxqPb/rzU7d0R5No39m7JU1oRgSN8j3dzmMWQiiDDxY8GQeg XwR64WAHpwRT
sYdvR+2WWk7rvvW0DqNr1eC1FL7WJmM32AGaH5BYYTddbyHZxnrTHgOByYL/ Z3K15/dNPcgo
mnMgyJqEC4IZcB9fHMgQJheYKxHcMrHSXr69i1ny+YEcdMdqaLaDvZ47mO/U nCZY2muuH9fj
AG5IvKWuicjmdJgK+lqNwCkyGgq4JeghhVCtx/YFjMMNI6qLy4wItZeFzjhY U7FKo3wJT1nC
BMh/ne6dA7crFq6AxDyFDc0WabbmerS0YCRmXyspZqZ0MBIYKLHNEq76raDl JsbNAtKE4gQI
O9phAqEZd3+QFZzS790Ka0RdcJ7S4WSGobdMnuq4PEi+mi50uirbW3yLMewY tw5YsufSYDiZ
esOB30V+tu5+enpoIsA8TWMqqc8DXBnuzlukRcxpc5KU5MefJIlKElC9zdVc AaQLdjPDGJVO
epz8QJIdpDgo47DdIIM005B7Ed1IEXUBJko69WjdiwcUk8ma4QpwAXzBEDOm TkhiZO9SzZYT
Gn1ib3W0yOnHMZ6IgkKUynEIBofiD4qLx5mnlp8IQ0abWS/XwRKMR4P/iMm0 jHcOWmBvhlio
QSN1Q0Mt8oUJTuNFmd+jRcVARxtPkMpsMhaOXGQ5q4qi9rIiNxSSVMCOClwt Tews1HLDslJb
dFQXLOPCiIhmjZq6HKmCQ8sJ5SD0lFhckLwAcZsiyeiGvza7TwXpaUVN539h ZLhmAYKvaod2
aRDku4T7Y8Bgw5rJAc6UYifF+Oe8aa41qmMmSxzUSO0J95YrqSeJomEZ+yC5 SUNL1koq3DKE
K0NKFgupuZLDBWyxIkIF3SA1kqYib0H+L8StSZp0xEz6DVLkCVYchVYV6qVR HDJrEAxd7xi9
sAsYrYVa2VDGO7mGdI3yQ8ey7u4pr5srnrukIv9qD3HNIrtajFr9PozmgiC3 kDfmmLO5aZ2d
rXphhhtsQ39bwSYtup3vBJiDKqoFpEh9tt/2D/gHnL2GhN7uHxv50i15FtmW lgHRwlyohCJ+
RATJeS/Nqmt3D/Ck9BkULCmysPDb4O8eUpU+L0n22UKHdQpLIhZK7Kj4IUme S4mCcEWSpSJf
fZZFRulXWrg0DKsa/eSTUyeCqSVxF+0LTZ4HBtd+0f042IrLYx3fTDZqIDul eXcfsOLpBNkW
ojGJz5EI24zipsoPnZc/u0ypBzvPmOoSKleLR0ak7rg1PNZt43HQFLf2AtHM RIrv7XZh27Vg
/hLbbBXCch1Ws74I61NXIje/A6PFnUeqnsuyeWAU8t66Wd8mmwsgq/Kp1Z15 3bzcEqz4Iima
pqTLyw9Z4WIFwsp6BZNZlYmqjPvRSuPgft2kLIID54hdD5jg5AXBiT7KypA1 nmXqZUVdyCNT
oi4MKaVd43OGhqKbnaF36Z/N/Av/0h9OFR9a5nshd519Lw5Uxs1mspmfNvUX jMp8V97gD+9D
YVt9cKhYXo7O/IsKoiIlO9YwB5ThbGY8Tx6d1IFVyh8gdipvZuad4d6ngOLm UvLf8Ly4F2iy
/6o8v6e+qde+JmY1vlejWeW8VWtZ1SvXhzeWh4aEuotf4Q2GfVFV49XYPw8+ Wd+wjOzsF8wm
p8RuQ9UdFKONF+7i80TeDNOtfLJUWnTAzIsiUG8X0oCrVyadpHvJoY8TaTqV pniMkCjqyCuU
u1cxHSg5rfTPE/8E0AukG7lLuPv6o40Tw4weTJo1JrfV54a679juPHYgmMy8 95Pp2BtMHXiC
rWA49cfn3sBX3z74Q3/sTVEj8lJ+NrjwJjo79fylwDSXXw6oV6i8pjVHL0uW 8tOxxI0w5Bul
A6/UXxNsiQxBDicB6pRufhxdeNPgQuMc/O4NP/jee9mUH6+HE386LdvBmTK7 HgZ/XpuuM38c
fPR1/2iMLf+suHmUca1stKOfy4pLhQmpaR9rv/82nLWJq9qoFCSfT7V+cDYz V6nFDaWUAzmH
i0I036nj/AGg2LuXDvRe1ZD+k12TzdHl1WgSTM0Gjf3J6OKjj1k/+hT4k/2N /f4NLUUBEyvd
ZiEtz6Ox6bGFRB88d9Dv126nR+2/AVBLBwhePJb1IQcAABcbAABQSwMEFAAI AAgAl3A+OQAA
AAAAAAAAAAAAADIAAABFTUYyLTVNMlRlc3Qvc3JjL3Jtb2YvdXRpbC9SbW9m QWRhcHRlckZh
Y3RvcnkuamF2Ye1Xy07jMBRdp1L/wSMhEZCafkBLxQgxEouBEbBg6yY3rYck jmx3OhXqv8/1
K3XSBwWGHZs2dex7zz3nPtzh+Xm/R87JOOX1SrDZXE3s72F7wSye3GQn+mHY 79U0faYzIKLk
ebJQrBj1e/0eK2suFOFilkBasFpCAmWepLwseZVUXLF8lXzPaK1AjI7cfqu/ mNl/5AncVHgv
P2iquFjd4NIhA5ByAcn13fQ3pCrcaOL7yTMoRu21W1pCdl1ACZXqvLrHj1+W H2Nq6Dn+NhiQ
KcxYNVhIEIOMp2QwsHw/zoGMpxOHmjjY4+F0QnIuiMLXpUaRmN03itSC/2EZ SEIrQt0pFDGD
SSqAKnh6etIa4m9SgprzzNgBms5JWlApCc+7Vg0+qLJtdJcSYCs2+2YGFQj0 l/nEWEwLljof
endbCAJ/FbqQZFsf8tLvRYaryBGSIlrILETiMi6xr/dyGe0PJOrgjQzgCJlU qDo6kooqxB7E
aH2HYm4QXhmejQCswqNVCp5UL0huo/sEzJblbX7jM0NjxHISh9jJxQWpFkXh Xkftd2HICdzc
Pjx+v726Humda/xYtwO/B7UQlSTLOSYW6ORk0odK8JHWNYKj0wKa3FWruiGH myI7hpNHbVhX
s6ky1IZXRDjnNteVWIBPcxaa1ziAOXhOxlPpkwjr3wANlbPHOlXxmjIWzX9h YofKl3d/QAis
8o3iU84L0LilE/wHF49oMr5z+M1XkAQuLpQ/lNyngcOvaWzUDo95ehCwa46d k3Hs153nBK50
6cdnyQzUtXOHWdkBsPHmDOW0kGa1k2y6D8glU9i31JwqgiZgZupOcUPiwaYn P7Nd6KJ5MNDG
rggnNka7SC50eBUsd230ddrSOPIq+zGQUgnhoInDH22tGyItE+FGZy0+M6Rb 1l/366Uzbd93
ikMu3Z73eTMjNjafB52YHW93kUFOF4W6Qk8+YQ+6cXt2OVrvHwNN23e17noU FVgKLi8/mo81
FbQk1mTY7rAYjHffTHxhh8PoVVTHtaBGNhO4p8hf0xw2R6uDEVRFknH7sOkc 7kRT/DvZJbqQ
wlCQ703PtteN05fLglXP2xc0MoZyYhaIWxkPcWV9evQUcgm0bxrp0Uokty1q qW8uFd61JCtw
DMwqvFuaJJcja5EpHEXoKF8UWji3g5o9epbosYTjhNnJtGRoO6W6o1B8UnNn DBlYLenq+Cml
TwYsetGbu13I2Gs3j3YS7Ow2rQzQBO3o7u+X13ckrax7/tJ0W9Pmrv4WObud /HOVtE1f62ie
vlTcVtEQ8zYN24PyYwpqeJ5mHeD/1ObDJB3JR3ei72dkTYbD7T9W/d4/UEsH CMSIyR3sAwAA
KxEAAFBLAwQUAAgACACXcD45AAAAAAAAAAAAAAAAKgAAAEVNRjItNU0yVGVz dC9zcmMvcm1v
Zi91dGlsL1Jtb2ZTd2l0Y2guamF2Ye1YS0/jSBA+O1L+Q612JBxEnD2TkB0E 1gotMKMhB26j
jl2Je/BL7vagaMR/n+qHkzZ5sjugOXAA2d31/Orr6nIGx8fdDhzDKCrKRcXn iRyb90F7QS9+
uIo/qIdBt1Oy6IHNEaqsmAW15Omw2+l2eFYWlYRv7DvTi8E1F9LdKap5gFHK S4EBZjN6LioM
wouUCTHcJ/Vp+g2jljnt/aaIMR22125ZhnGYYoa5fLb1hf59NtFrU4MGgT/6 fZjinOf9WmDV
j4sI+n2DxiRBGE3Hd49cRsloMB3DrKhA0mqmnB8J4HmCFZcsjxASjhWromQR aOUrCaIuVQBC
q0QsTeHHx5TnD/BnXBijvs2uB8uVwiw8aSOyIBffiwfUJqhaMY4jJvD+/l6V it4gQ5kUsY4M
WZRApECFYraK80SbEpJVkudzIDeJ3mSRrFnaVjDetQLLYyirIkKMlVpdaoGN GWv5OqfSA4O8
yPt5TclWKOpUAhf0JOsqx9hE8phwipMbWKyQdS80BsGqMpjH63X5KBDXqmp2 5phTTBLjhrD1
NOWRzVFJ22JOxvCj2/E0Czxb6ojgw9hgBmVj1dtFEm97nN6zcDwdj0eISkKY /FBBJIXmpGBc
uyxdBXhRIdkRVBUqgTD4PwftV4dqsFuh5vc0aB6fge+GCmdnoCput732npth gFe3d5Pz24tw
qCSJ5OqvlScdE7GZ6TsobslX5Gi5JgwRwSHiELiEBcc0Vsxj0i7/X9yMPx3K jFdCrvG/IT9M
FxTUxsxUbwj21WECz7uGcrpsIBp6G8xScCUQoO62fu/E1Rq+F+CQAizPrFsD jacGUz+dwNaq
qPOylKNCFLlknJzQeaKT456W5gRtqqPRnqPUD3xGzffqckM99anyMBVojanb eGTUx4B3dYnV
ZFFSLzmDlt1wteUbSzYO/eg5mgEXYVbKBSXwt9n0YpwxAvuCcPVdAE6b/SYV 1ww59f/aksE7
Lf8TLXkuDQ6WIDtoae4N8F3xhoAqkFbjvj2/CS+/htfhTXg7ObVSnjtwQe6+ nIHvbvZW3g2z
vEmDwxkoZ66w71qyTNSHqNForpulhS3ss6q2FLbceu1pc5afzy/+Pf8nXOan h4zmJrMjwVeV
m7uxNzcr5zcGDkppDZQXaf8qQG4+XYbXSzj0zG1PFoGgX/dmr6XMvPCaoVu1 U2h65w4zG/rL
F9se2jMpnSasSrKoJuDVfAxsbRA7GmE21vUCW7DRgFaODmkjk4SGYfpYMXo0 FRb5sl0pcIZG
zCypSNaH7EdOzxRrxnPqEVvGwi2dqmQVy5rMlCZ9KVBn3jheum3tFWDSk/3q 62jnF2FvbR7q
7R+h1k5Vq4MVG2appgCvwRd7yt6Z8hKA3oQjTctuXQBvTQ/dOd/JcTg8b0IN c5+Zq/CtGWEj
/T04cQLTWlVaeTB50SApNUYU/OKRLX5H1myC8EW8OeA73Rk9mul7L1OeYDBY /dTS7fwEUEsH
CDQi6PRVBAAAoxUAAFBLAQIUABQACAAIAJdwPjn0pbHS0AAAAHgBAAAXAAAA AAAAAAAAAAAA
AAAAAABFTUYyLTVNMlRlc3QvLmNsYXNzcGF0aFBLAQIUABQACAAIAJdwPjk8 J1T27QAAAKEC
AAAVAAAAAAAAAAAAAAAAABUBAABFTUYyLTVNMlRlc3QvLnByb2plY3RQSwEC FAAUAAgACACX
cD45NuTCcQkBAAC+AQAAIQAAAAAAAAAAAAAAAABFAgAARU1GMi01TTJUZXN0 L01FVEEtSU5G
L01BTklGRVNULk1GUEsBAhQAFAAIAAgAl3A+OdEseg/CAAAADwEAACEAAAAA AAAAAAAAAAAA
nQMAAEVNRjItNU0yVGVzdC9iaW4vcm1vZi9Nb2RlbC5jbGFzc1BLAQIUABQA CAAIAJdwPjmw
aRcmqgAAAOYAAAAoAAAAAAAAAAAAAAAAAK4EAABFTUYyLTVNMlRlc3QvYmlu L3Jtb2YvTmFt
ZWRFbGVtZW50LmNsYXNzUEsBAhQAFAAIAAgAl3A+ORiljvZuAAAAfQAAACMA AAAAAAAAAAAA
AAAArgUAAEVNRjItNU0yVGVzdC9iaW4vcm1vZi9QYWNrYWdlLmNsYXNzUEsB AhQAFAAIAAgA
l3A+OY0PcHFJAQAABgIAACcAAAAAAAAAAAAAAAAAbQYAAEVNRjItNU0yVGVz dC9iaW4vcm1v
Zi9SbW9mRmFjdG9yeS5jbGFzc1BLAQIUABQACAAIAJdwPjnMwMyRCwIAAKAD AAAwAAAAAAAA
AAAAAAAAAAsIAABFTUYyLTVNMlRlc3QvYmluL3Jtb2YvUm1vZlBhY2thZ2Uk TGl0ZXJhbHMu
Y2xhc3NQSwECFAAUAAgACACXcD45QA0a/HUCAADPBAAAJwAAAAAAAAAAAAAA AAB0CgAARU1G
Mi01TTJUZXN0L2Jpbi9ybW9mL1Jtb2ZQYWNrYWdlLmNsYXNzUEsBAhQAFAAI AAgAl3A+OcKU
R0S+BAAAFAoAACoAAAAAAAAAAAAAAAAAPg0AAEVNRjItNU0yVGVzdC9iaW4v cm1vZi9pbXBs
L01vZGVsSW1wbC5jbGFzc1BLAQIUABQACAAIAJdwPjlKCmTUEAQAAB0IAAAx AAAAAAAAAAAA
AAAAAFQSAABFTUYyLTVNMlRlc3QvYmluL3Jtb2YvaW1wbC9OYW1lZEVsZW1l bnRJbXBsLmNs
YXNzUEsBAhQAFAAIAAgAl3A+OcVKYPxfAQAAOgIAACwAAAAAAAAAAAAAAAAA wxYAAEVNRjIt
NU0yVGVzdC9iaW4vcm1vZi9pbXBsL1BhY2thZ2VJbXBsLmNsYXNzUEsBAhQA FAAIAAgAl3A+
OTbpmheLBAAAnAkAADAAAAAAAAAAAAAAAAAAfBgAAEVNRjItNU0yVGVzdC9i aW4vcm1vZi9p
bXBsL1Jtb2ZGYWN0b3J5SW1wbC5jbGFzc1BLAQIUABQACAAIAJdwPjl2+JFO 3gYAADEQAAAw
AAAAAAAAAAAAAAAAAGUdAABFTUYyLTVNMlRlc3QvYmluL3Jtb2YvaW1wbC9S bW9mUGFja2Fn
ZUltcGwuY2xhc3NQSwECFAAUAAgACACXcD45OMg/L7oCAABiBwAANQAAAAAA AAAAAAAAAACh
JAAARU1GMi01TTJUZXN0L2Jpbi9ybW9mL3V0aWwvUm1vZkFkYXB0ZXJGYWN0 b3J5JDEuY2xh
c3NQSwECFAAUAAgACACXcD45dv6S/0MDAAB0BwAAMwAAAAAAAAAAAAAAAAC+ JwAARU1GMi01
TTJUZXN0L2Jpbi9ybW9mL3V0aWwvUm1vZkFkYXB0ZXJGYWN0b3J5LmNsYXNz UEsBAhQAFAAI
AAgAl3A+OVYboxsIBQAAIQwAACsAAAAAAAAAAAAAAAAAYisAAEVNRjItNU0y VGVzdC9iaW4v
cm1vZi91dGlsL1Jtb2ZTd2l0Y2guY2xhc3NQSwECFAAUAAgACACXcD45rL5w e7MAAAAmAQAA
HQAAAAAAAAAAAAAAAADDMAAARU1GMi01TTJUZXN0L2J1aWxkLnByb3BlcnRp ZXNQSwECFAAU
AAgACACXcD45bnfLWHMBAABcAwAAHQAAAAAAAAAAAAAAAADBMQAARU1GMi01 TTJUZXN0L21v
ZGVsL3Jtb2YuZWNvcmVQSwECFAAUAAgACACXcD45OOaM/g0CAAASBQAAIAAA AAAAAAAAAAAA
AAB/MwAARU1GMi01TTJUZXN0L21vZGVsL3Jtb2YuZ2VubW9kZWxQSwECFAAU AAgACACXcD45
sJi1IIIAAACeAAAAHgAAAAAAAAAAAAAAAADaNQAARU1GMi01TTJUZXN0L3Bs dWdpbi5wcm9w
ZXJ0aWVzUEsBAhQAFAAIAAgAl3A+OZuVQTT9AAAAoQEAABcAAAAAAAAAAAAA AAAAqDYAAEVN
RjItNU0yVGVzdC9wbHVnaW4ueG1sUEsBAhQAFAAIAAgAl3A+ObyC7MzzAQAA dQQAACAAAAAA
AAAAAAAAAAAA6jcAAEVNRjItNU0yVGVzdC9zcmMvcm1vZi9Nb2RlbC5qYXZh UEsBAhQAFAAI
AAgAl3A+OSEXXWIIAgAAKQUAACcAAAAAAAAAAAAAAAAAKzoAAEVNRjItNU0y VGVzdC9zcmMv
cm1vZi9OYW1lZEVsZW1lbnQuamF2YVBLAQIUABQACAAIAJdwPjlYRWZB6gAA AIABAAAiAAAA
AAAAAAAAAAAAAIg8AABFTUYyLTVNMlRlc3Qvc3JjL3Jtb2YvUGFja2FnZS5q YXZhUEsBAhQA
FAAIAAgAl3A+OZIG+vydAQAA5QQAACYAAAAAAAAAAAAAAAAAwj0AAEVNRjIt NU0yVGVzdC9z
cmMvcm1vZi9SbW9mRmFjdG9yeS5qYXZhUEsBAhQAFAAIAAgAl3A+ORD94TeM BAAAYBsAACYA
AAAAAAAAAAAAAAAAsz8AAEVNRjItNU0yVGVzdC9zcmMvcm1vZi9SbW9mUGFj a2FnZS5qYXZh
UEsBAhQAFAAIAAgAl3A+OdXxFDouAwAAzwwAACkAAAAAAAAAAAAAAAAAk0QA AEVNRjItNU0y
VGVzdC9zcmMvcm1vZi9pbXBsL01vZGVsSW1wbC5qYXZhUEsBAhQAFAAIAAgA l3A+OfljNVTt
AgAAcgsAADAAAAAAAAAAAAAAAAAAGEgAAEVNRjItNU0yVGVzdC9zcmMvcm1v Zi9pbXBsL05h
bWVkRWxlbWVudEltcGwuamF2YVBLAQIUABQACAAIAJdwPjmyoa7rUwEAAP8C AAArAAAAAAAA
AAAAAAAAAGNLAABFTUYyLTVNMlRlc3Qvc3JjL3Jtb2YvaW1wbC9QYWNrYWdl SW1wbC5qYXZh
UEsBAhQAFAAIAAgAl3A+OZ0J8pjGAgAAZAkAAC8AAAAAAAAAAAAAAAAAD00A AEVNRjItNU0y
VGVzdC9zcmMvcm1vZi9pbXBsL1Jtb2ZGYWN0b3J5SW1wbC5qYXZhUEsBAhQA FAAIAAgAl3A+
OV48lvUhBwAAFxsAAC8AAAAAAAAAAAAAAAAAMlAAAEVNRjItNU0yVGVzdC9z cmMvcm1vZi9p
bXBsL1Jtb2ZQYWNrYWdlSW1wbC5qYXZhUEsBAhQAFAAIAAgAl3A+OcSIyR3s AwAAKxEAADIA
AAAAAAAAAAAAAAAAsFcAAEVNRjItNU0yVGVzdC9zcmMvcm1vZi91dGlsL1Jt b2ZBZGFwdGVy
RmFjdG9yeS5qYXZhUEsBAhQAFAAIAAgAl3A+OTQi6PRVBAAAoxUAACoAAAAA AAAAAAAAAAAA
/FsAAEVNRjItNU0yVGVzdC9zcmMvcm1vZi91dGlsL1Jtb2ZTd2l0Y2guamF2 YVBLBQYAAAAA
IgAiAE8LAACpYAAAAAA=
--------------070402060800000709000402--
Re: Previously "Re: CDO: Reflective Feature Delegation required - but how to invoke not generat [message #423424 is a reply to message #423423] Tue, 30 September 2008 12:52 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 30804
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------030706040904050707040707
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Ralf,

I was able to get the following to work in the generated RmofExample

Resource resource =
resourceSet.createResource(URI.createURI("http:///My.rmof"));
rmof.Package root = RmofFactory.eINSTANCE.createPackage();
root.setName("foo");
root.setQualifiedName("a.b.foo");
resource.getContents().add(root);
resource.save(System.out, null)

I've attached the generated result.


Ralf Buschermoehle wrote:
> Ed,
>
> see comments below.
>
> Ed Merks wrote:
>
>> Yep, it's a bug in the template guard for generating the
>> eStaticFeatureCount method:
>
> [...]
>
>> (Note the missing ! on the guard.) Please open a bugzilla and I'll
>> commit the fix for it today which so it should be in today's I-build...
>
> Done.
>
>> As a workaround, delete the eStaticFeatureCount method from non-root
>> model Impl classes.
>
> Hm, just tried but still get errors (see modified, attached file). The
> log says ...
>
> !SESSION 2008-09-30 14:03:24.281
> -----------------------------------------------
> eclipse.buildId=I20080918-0100
> java.version=1.6.0_07
> java.vendor=Sun Microsystems Inc.
> BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=de_DE
> Framework arguments: -product org.eclipse.sdk.ide
> Command-line arguments: -product org.eclipse.sdk.ide -data
> C:\Users\lobe\workspaceM2/../runtime-EclipseApplication -dev
> file:C:/Users/lobe/workspaceM2/.metadata/.plugins/org.eclips e.pde.core/Eclipse
> Application/dev.properties -os win32 -ws win32 -arch x86
>
> !ENTRY org.eclipse.emf.ecore 2 0 2008-09-30 14:03:30.000
> !MESSAGE Both 'testEMF2_5M2' and 'library' register a package for
> 'http://www.eclipse.org/emf/teneo/samples/emf/sample/Library'
>
> !ENTRY org.eclipse.emf.ecore 2 0 2008-09-30 14:03:30.000
> !MESSAGE Both 'testEMF2_5M2' and 'library' register an extension
> parser for 'library'
>
> !ENTRY org.eclipse.jface 4 2 2008-09-30 14:03:55.171
> !MESSAGE Problems occurred when invoking code from plug-in:
> "org.eclipse.jface".
> !STACK 0
> java.lang.ArrayIndexOutOfBoundsException: 0
> at
> org.eclipse.emf.ecore.impl.BasicEObjectImpl$EPropertiesHolde rBaseImpl.dynamicGet(BasicEObjectImpl.java:155)
>
> at
> org.eclipse.emf.ecore.impl.EStructuralFeatureImpl$InternalSe ttingDelegateSingleData.dynamicGet(EStructuralFeatureImpl.ja va:1953)
>
> at
> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eDynamicGet(Basi cEObjectImpl.java:1045)
>
> at rmof.impl.NamedElementImpl.getName(NamedElementImpl.java:67)
> at
> rmof.provider.PackageItemProvider.getText(PackageItemProvide r.java:81)
> at
> org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider .getText(AdapterFactoryLabelProvider.java:374)
>
> at
> org.eclipse.jface.viewers.WrappedViewerLabelProvider.getText (WrappedViewerLabelProvider.java:108)
>
> at
> org.eclipse.jface.viewers.WrappedViewerLabelProvider.update( WrappedViewerLabelProvider.java:164)
>
> at
> org.eclipse.jface.viewers.ViewerColumn.refresh(ViewerColumn. java:145)
> at
> org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(Ab stractTreeViewer.java:932)
>
> at
> org.eclipse.jface.viewers.AbstractTreeViewer$UpdateItemSafeR unnable.run(AbstractTreeViewer.java:102)
>
> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
> at org.eclipse.core.runtime.Platform.run(Platform.java:880)
> at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
> at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:17 5)
> at
> org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(Ab stractTreeViewer.java:1012)
>
> at
> org.eclipse.jface.viewers.StructuredViewer$UpdateItemSafeRun nable.run(StructuredViewer.java:466)
>
> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
> at org.eclipse.core.runtime.Platform.run(Platform.java:880)
> at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
> at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:17 5)
> at
> org.eclipse.jface.viewers.StructuredViewer.updateItem(Struct uredViewer.java:2041)
>
> at
> org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem( AbstractTreeViewer.java:827)
>
> at
> org.eclipse.jface.viewers.AbstractTreeViewer$1.run(AbstractT reeViewer.java:802)
>
> at
> org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator .java:70)
> at
> org.eclipse.jface.viewers.AbstractTreeViewer.createChildren( AbstractTreeViewer.java:776)
>
> at
> org.eclipse.jface.viewers.TreeViewer.createChildren(TreeView er.java:634)
> at
> org.eclipse.jface.viewers.AbstractTreeViewer.internalExpand( AbstractTreeViewer.java:1578)
>
> at
> org.eclipse.jface.viewers.AbstractTreeViewer.setSelectionToW idget(AbstractTreeViewer.java:2456)
>
> at
> org.eclipse.jface.viewers.StructuredViewer.setSelectionToWid get(StructuredViewer.java:1680)
>
> at
> org.eclipse.jface.viewers.AbstractTreeViewer.setSelectionToW idget(AbstractTreeViewer.java:2864)
>
> at
> org.eclipse.jface.viewers.StructuredViewer.setSelection(Stru cturedViewer.java:1636)
>
> at
> org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer .java:1104)
> at rmof.presentation.RmofEditor$5.run(RmofEditor.java:766)
> at
> rmof.presentation.RmofEditor.setSelectionToViewer(RmofEditor .java:770)
> at rmof.presentation.RmofEditor$4$1.run(RmofEditor.java:718)
> at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:3 5)
> at
> org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchr onizer.java:133)
>
> at
> org.eclipse.swt.widgets.Display.runAsyncMessages(Display.jav a:3825)
> at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java :3449)
> at
> org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.jav a:2382)
> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346)
> at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:21 98)
> at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
> at
> org.eclipse.core.databinding.observable.Realm.runWithDefault (Realm.java:288)
>
> at
> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:488)
>
> at
> org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
> at
> org.eclipse.ui.internal.ide.application.IDEApplication.start (IDEApplication.java:113)
>
> at
> org.eclipse.equinox.internal.app.EclipseAppHandle.run(Eclips eAppHandle.java:193)
>
> at
> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:110)
>
> at
> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:79)
>
> at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:370)
>
> at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:179)
>
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> at java.lang.reflect.Method.invoke(Unknown Source)
> at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java: 549)
> at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
> at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
> at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
>
> !ENTRY org.eclipse.jface 4 2 2008-09-30 14:03:55.703
> !MESSAGE Problems occurred when invoking code from plug-in:
> "org.eclipse.jface".
> !STACK 0
> java.lang.ArrayIndexOutOfBoundsException: 0
> at
> org.eclipse.emf.ecore.impl.BasicEObjectImpl$EPropertiesHolde rBaseImpl.dynamicGet(BasicEObjectImpl.java:155)
>
> at
> org.eclipse.emf.ecore.impl.EStructuralFeatureImpl$InternalSe ttingDelegateSingleData.dynamicGet(EStructuralFeatureImpl.ja va:1953)
>
> at
> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eDynamicGet(Basi cEObjectImpl.java:1045)
>
> at rmof.impl.NamedElementImpl.getName(NamedElementImpl.java:67)
> at
> rmof.provider.PackageItemProvider.getText(PackageItemProvide r.java:81)
> at
> org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator.ge tText(AdapterFactoryItemDelegator.java:90)
>
> at
> rmof.presentation.RmofEditor.setStatusLineManager(RmofEditor .java:1709)
> at rmof.presentation.RmofEditor.setSelection(RmofEditor.java:16 88)
> at
> rmof.presentation.RmofEditor$6.selectionChanged(RmofEditor.j ava:879)
> at org.eclipse.jface.viewers.Viewer$2.run(Viewer.java:162)
> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
> at org.eclipse.core.runtime.Platform.run(Platform.java:880)
> at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
> at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:17 5)
> at
> org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer .java:160)
> at
> org.eclipse.jface.viewers.StructuredViewer.updateSelection(S tructuredViewer.java:2062)
>
> at
> org.eclipse.jface.viewers.StructuredViewer.setSelection(Stru cturedViewer.java:1638)
>
> at
> org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer .java:1104)
> at rmof.presentation.RmofEditor$5.run(RmofEditor.java:766)
> at
> rmof.presentation.RmofEditor.setSelectionToViewer(RmofEditor .java:770)
> at rmof.presentation.RmofEditor$4$1.run(RmofEditor.java:718)
> at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:3 5)
> at
> org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchr onizer.java:133)
>
> at
> org.eclipse.swt.widgets.Display.runAsyncMessages(Display.jav a:3825)
> at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java :3449)
> at
> org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.jav a:2382)
> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346)
> at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:21 98)
> at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
> at
> org.eclipse.core.databinding.observable.Realm.runWithDefault (Realm.java:288)
>
> at
> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:488)
>
> at
> org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
> at
> org.eclipse.ui.internal.ide.application.IDEApplication.start (IDEApplication.java:113)
>
> at
> org.eclipse.equinox.internal.app.EclipseAppHandle.run(Eclips eAppHandle.java:193)
>
> at
> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:110)
>
> at
> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:79)
>
> at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:370)
>
> at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:179)
>
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> at java.lang.reflect.Method.invoke(Unknown Source)
> at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java: 549)
> at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
> at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
> at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
>
>
> If this is fixed with the Guard Negotiation in the Integration build
> today I would not need a workaround ... ?
>
> Greetings,
>
> Ralf

--------------030706040904050707040707
Content-Type: application/zip;
name="rmof.zip"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="rmof.zip"

UEsDBBQACAAIAHFGPjkAAAAAAAAAAAAAAAAXAAAARU1GMi01TTJUZXN0Ly5j bGFzc3BhdGid
jz0LwjAURWcF/0PIbqqbQ2sRqaBDlVJnqcmjjcaXmA/Rf29Vii46uL17OZzL i9PrSZELWCc1
JnTMRpQAci0k1gndlovhhKbTQT/mqnLOVL5pQ++dAL29kaNEkVBnOSWP8nVG 30musSO1rRlw
JY0DdhCeqSogb9p1tiqy3Xydl7NlnhV/2IwAxrUFZuEcpAWxUaGW6H6pdPAm +M62l/iE4+jz
+ztQSwcI1Ryc0qUAAAAzAQAAUEsDBBQACAAIAHFGPjkAAAAAAAAAAAAAAAAV AAAARU1GMi01
TTJUZXN0Ly5wcm9qZWN0vZLNagIxFIXXFnwHmb2JFQpdxBnQ1t1IQfsAaXId I5Mfkoz4+E1i
pmUQwYW4u+fce/LdhJDqLNvJCawTWi2KVzQrJqCY5kI1i+J7t56+F1U5fiHG 6iMw/wGOWWF8
mA7uiCgqofys1/PpWz3fgfMEJyv2mJYSlC8J7qvo5oNcEnigfjrR8q0BFlWW qxCliicn47Rt
ELBWGAfoyD1i2oaCnmgKgP1fISSobbrIdlnjoUHwFeUuruGAaqrEPlx5+Vzs lh1A0odAs9M/
eeD5zkKevojbr33pxwXS3K1MXPmr7RqhNleBvo7Ev78w/GK/UEsHCDwnVPbt AAAAoQIAAFBL
AwQUAAgACABxRj45AAAAAAAAAAAAAAAAIQAAAEVNRjItNU0yVGVzdC9NRVRB LUlORi9NQU5J
RkVTVC5NRlWQvU7EMBCE+0h5hzR0xIJIND5dAeiuIigCRIt8ziasbm2HtR2R e3ryg0Ko7NXM
zjfaUllswIf8HdijszK7FTdp8hBtTZCXv+oqFqv0rAzI7Kqj2KKdhlV5HczJ EerFcSiPxcdd
WbyNMTuPtiUIY9I+cPxb2cI3+EdS3lcqfMpMbLy2djyh2fVYA/+DPzmtCC8q zHFLuzQ5fHeO
Q14pfVbtWIqNa67TZH4Fmo7WIQakNHmBr4gM+RIqM8etAE3YeRDaMQiONqCB aW2rgWnG/2jY
9ejxhIRhkHsGmPlryXsdsJ8rVtOhBpmRugxp8gNQSwcICmbQoO4AAACNAQAA UEsDBBQACAAI
AHFGPjkAAAAAAAAAAAAAAAAjAAAARU1GMi01TTJUZXN0L2Jpbi9ybW9mL0Vs ZW1lbnQuY2xh
c3M79W/XPgYGBkMGTnYGJkYGnqLc/DR915zU3NS8EnYGFkYGgazEskT9nMS8 dH3/pKzUZKAo
GyODbH5Run5qck5mQXGqfmpuGpCdX5Sq7wpRwsjAFZxfWpSc6paZkwo0FGqe HsgooGZGBmYg
ZmUAAUYGdiDJxMABAFBLBwgnY3+AdwAAAIkAAABQSwMEFAAIAAgAcUY+OQAA AAAAAAAAAAAA
ACEAAABFTUYyLTVNMlRlc3QvYmluL3Jtb2YvTW9kZWwuY2xhc3ONjzFuAjEQ Rf8AycISJC6Q
EgkaLAoqUDpSbZRInMCYwTJ418jrzeEoOEAOFWXYpKJKMdIfaf6f/76+L1cA C4wydAh5LMNB
vYU9+ww9wvioP7XyurLqfXdkkzI8Ep5DtIqNd+eaFZcH0SGy2vyeEIaW04c2 J225Jkyms+Le
YEJZhko1yXm1KVydVoTB1tlKpyYyYfkfz7po2/59Wr1IRr4NTTT86ryE5C3H /IYgpQldmQeB
JQHL0JdtIFsHuahhq55+AFBLBwhZzyIfwgAAAA8BAABQSwMEFAAIAAgAcUY+ OQAAAAAAAAAA
AAAAACgAAABFTUYyLTVNMlRlc3QvYmluL3Jtb2YvTmFtZWRFbGVtZW50LmNs YXNzO/Vv1z4G
BgZDBn52BiZGBsGi3Pw0fb/E3NQU15zU3NS8EnYGFkYGgazEskT9nMS8dH3/ pKzUZKAoGyMD
D1gxVB0jA3t6aglIJyODiIamD0JHcElRZl66NVBBMUyBqAamvGYY0B6gEYGl iTmZaZmpKRCl
AsUYQlzB+aVFyalumTlAjiCyY/VApgJdxsjADMSsQI+xAF3PzsDBAPIFJwMX mOaG8nlAfKA6
XiDJxMAHAFBLBwhQSYL7rwAAAAsBAABQSwMEFAAIAAgAcUY+OQAAAAAAAAAA AAAAACMAAABF
TUYyLTVNMlRlc3QvYmluL3Jtb2YvUGFja2FnZS5jbGFzczv1b9c+BgYGQwZO dgYmRgaeotz8
NP2AxOTsxPRUdgYWRgaBrMSyRP2cxLx0ff+krNTkEnYGNkYGQbA6v8Tc1BTX nNTc1LwSRgau
4PzSouRUt8ycVKBBUDP0QNqBGhgZmIGYlQEEGBnYgSQTAwcAUEsHCCthFaBu AAAAfQAAAFBL
AwQUAAgACABxRj45AAAAAAAAAAAAAAAAJwAAAEVNRjItNU0yVGVzdC9iaW4v cm1vZi9SbW9m
RmFjdG9yeS5jbGFzc2VRXU/CMBQ9RWQwvibgB6g8Q0xcfNaYGAIJCaIRwnup ZRlulNRh4s8y
vhgf/AH+KOPtBEVd0nt7Tu89Pbt9/3h9A3CCuoUEg6NDNXFvKHS4iJR+tJAk dsofuBvwmede
jadSRBZSDHWlPVeKwJ/fS1eGE9orLd32spMhI7v9wfCi32ozlHp/lU8Z0mfU PfOjc4aNRnPE
kGypW2kjj6KFAkM17vHDebDe2CWcg4MtqjfdDJVG8798BgzlHCykGYo9fyb7 i3As9ZCPA2n8
KMGDEde+wUsyL7Tkkbzm4o57hJ2V7pIhy9mvkkvyGTAUVgUxpuOCJyNj4lvi l7UfGXugFlrI
jm+uddZsH5tR03BpIrQ2aVXNL9ATJSlmYBOTJXRE2XzWC3LPKD3RNoEKRZsy UEMKZWzHrHnB
HezGeY/kTK5hn84YDuKKw09QSwcIYp7iU0gBAAAGAgAAUEsDBBQACAAIAHFG PjkAAAAAAAAA
AAAAAAAwAAAARU1GMi01TTJUZXN0L2Jpbi9ybW9mL1Jtb2ZQYWNrYWdlJExp dGVyYWxzLmNs
YXNzfVPbbtNAED3bm3PZkt4oBOiVAg2UmnArpaXFTV0U4bj3vlpOuolcHAc5 Dh/B3wBP8MAH
8FGIGcelEKm15D1ndmbO7M5of/3+8RNAEdsa+gTyYbNV1w9o2XNrH9yGWrC8 SIWu39YwIDBy
5n5ydd8NGvpu9UzVIgHNtMyKaR8JTFutsKGrmu99bCtdNevEW6HSzZLvtttr AsO2UTG3nb8J
4//ZjsOmwPxlMkYUhV61EymSmupJ3T82rPJOmba6ItqeUXpvvCM2WNndNi2B XIyOkzgOryh0
oOoqVEGNC6XWyR940YZA/2LhRGCg1DpVaYzjuoYJ6khvwyQmcUMgrcr24ZFh l+gIY1Zv0FqW
BPISt3BbINNQkemrpgqonbOLhavbmAbdXmIQQ6wxIzHLGjnSsN2mOk2EOGpe QutGLUjcw32B
iZ4ohw2BhctrXvScFRclUkiz4kOJR6w41au433F9r+6pU97lnMcSmW6OLvHk /L5JHzjgqUS2
e8znEi84IEUBFeqyz+4VCdl1r0q8Bo1k9NztJCrtK69wMU2WeyMxjGvUMMsL lN1pVlV45FZ9
xVNq1Vz/xA09tpPNzGGrE9bUjsfGyD8TXOaXICDLQaDCeDJ8jNT5axkSVKuf HpaGPM+KWJ6n
ESP1MMZMgtlkXyZIByQkNeQwQjhK1mdC/uyvGPuOmwLfcCem00znYnqX6YOY FpguxXSZaTGm
z5i+jOkrputfSLEPG7TOUzWIGWRFAZOiiDmxiiVRwoqoYEscoyImsRlH8/82 Xg1sEWbAdx1H
aSj9B1BLBwgNUhbKUwIAAE0EAABQSwMEFAAIAAgAcUY+OQAAAAAAAAAAAAAA ACcAAABFTUYy
LTVNMlRlc3QvYmluL3Jtb2YvUm1vZlBhY2thZ2UuY2xhc3N9VFtT00AU/lYu aWvLHbEiiIoK
okS8C3iJJXUytgV6YXzLbMu2BtOESVNn/FmOL44P/gB/lOPZNMV2HcxM9uz3 neues8mv3z9+
AthCTsMFhqmg7Tf1Mi0HvPGJt4SGUWJP+Geuu9xr6fv1E9EINYwzLPtBSxcN 1zntCF20m7T3
A6GbsSfDmCgZRZNhpvDXvxIGjtfaYcjkfK8Tci884m5XJHCRYVQmZ9BEqWLX ylYCEwwLH8Pw
dFvX9agwuWxGaRhS0uygbOatDwxJYZUqVaOUi9Kph6B0mlkwi2apysCsETow GOZjys6bRrVW
Nu3cfk0aZGTVe3aslcaMYXaItO3eyZYU9rBmFKy8RVRPvzisH0okA1PHtQMj 9954R8aZeNcP
vnCG1bDzfY1S+Vhxf88syMAjDJMRsO3YtkJn6DGKU2KXRug54SuGkbX1IxpD zj8WKazhroZ1
hmzUTad96g621CKcxgbukb30ZphbW/+38Unq82YaU5imggqOJ0rddl0EVV53 hZyU3+DuEQ8c
iWMy1RKh6Yq28CjoCgU955rlXN7p0GQnyb7E2+L4zGlOYWwJGFbPj2WEdC3r 3VDelCXV+7DL
XafpiONeGFnf2RVPEChSu1yG6f7WjrWd/6Ysi6YIhNeQKSfIVXYtzxuhH3xR ehmzZJeq+N2g
IfKO7NPUQJ835QfGkLY8TwRRY0RHg9Ef3oDlasEJRcBdKi7R39K3TLOndwzT yEJDgvZJeT2R
IpwewBnCk4qehkv7LGYwe8bPEZ5X8KUBvED4sqLPKvorA3iR8FUFLyn+y4r/ NcV+ZQBfJ3xD
8b855J+kU67iFjG3idkgKR/tO+58w/2vkZFOa4oksItxKudBxMof5hYeRvJR LB/jSSSfxvJZ
zD+P5QtsR3KHIskYL6P1FV5HGRje0Pt2PPkHUEsHCAfWiju2AgAArQUAAFBL AwQUAAgACABx
Rj45AAAAAAAAAAAAAAAALAAAAEVNRjItNU0yVGVzdC9iaW4vcm1vZi9pbXBs L0VsZW1lbnRJ
bXBsLmNsYXNzfVHLSsNAFD2Txqat0db3WyuIqIhFdKe4KREK8YGK+2m86mge Mkn9KhfqRnDh
B/hR4m0cpYi4mPsYzjlz7p33j9c3AJuoO7AExnSUXDZUdBc2vJAiirMW1w5s geVEXzUoCNVd
Sg2KLrlONBnsUfuGAoMtCri5jFEQKO6qWGV7AoWV1XMBu5lcUAUF9LtwUBKo +iqmw07UJn0m
2yEJDPtJIMNzqVW3N5d2dq1SgQn/T5M7/CydZjJTQTOUKQPrK6v+36a9HLFT xgjGHIwKTOWS
JxyOZXArr2jJVxlpGaYuxjEh4Hi+d+AdngnM/68pMGJc7JPMOpqaSae7Ax69 JVA5TTo6oH3V
nafW437jRt5LnqAVx6RzJUodzDPotzOB0rc3exEszKePv7AAu7tN7srcbXEW nPvWXlB54sKC
y7HCGagzdBEDXLlfIAyiytlGDUNGYMMI2M8YfvzhF/O7tR6u/cOdxJThrhuu VXj4xdzuYVqG
aWE6jzOYzR3yBjGHhWL5E1BLBwgatsetgQEAAJwCAABQSwMEFAAIAAgAcUY+ OQAAAAAAAAAA
AAAAACoAAABFTUYyLTVNMlRlc3QvYmluL3Jtb2YvaW1wbC9Nb2RlbEltcGwu Y2xhc3O9Vl1T
G1UYfk6ykAJrWgulpXxIKNB8QaRYrQarMQSMhA8JHzZ+4LIcwtbNLu5uUMY7 x4698MZxvPAX
OOP0gvaiDF44XPujHN9zsgQmBK03ZiY552ze93me9+O8yZ9//f4HgAlshhBg 6HQq9nbKqOya
qXl7i5t52oWgMIzaTjnFddPYdXmKV7Zpbzu8Zplb3HzIda9m28rQLkGkP0Pr lGEZ3n2GYDS2
xqBk6XE7guhQEcIlhssFw+IL1comd1a0TZMzXC3YumauaY4hzv5DxdsxXIZr hSYC0wwqL3qa
Z+hZU3PJbDAaKzQXnJMW6TZ04loIXQw9EnCZPpY0/QutzIcLhscdzXRVdOM6 Q8v84nSuwDDw
z4iUO1/DDNe8qsOzdtXyZNh5ho4y93x8kjfSRJ5uVyq2lap6BiW0YLgeIbYV jbIlwRjuvojP
VC09PlP6vozzFRWDiFCmZSAbG0uZ7FxmNldkGLoopGW+zR1u6TzdDoZbKoYx QkHw6X1Lqxj6
LKfAMtH8Re5Fz6nqJFsz/VykS6VY4aG2p6VMzSqnav2SDuE2Q+Rfg2II87y1 xx2XL/OKvUfJ
+CF6AXXeotpZmum3ZPq8RB/esj1jez+1IBZDp7LZVnZHM6z0hVm+0EOkKKHi JnpDGGOINlcm
46nLE3F1IImUilcxQand1FxDPwlvL3o+Wf9LIEFMqogixnDJ9na4k7O2GG6/ YK6pX7dr5c5P
MzDqeqXilqndJ/6zEnLlssmuR/NNW0dIfVvFWyDTkMNd2xR5YyUSLrSt7O+K mcGLAqObGvUc
QGytA6OYVpETQ6hFN7nmhDDL0CVNZbWytmmSLakStnkVH2COBpq2tZUxabL1 +FVqsE3HSkLd
vIoM3iM9Fv9qTTOrcrCdk0FwfNVyhUwlmo+tCc+iiiV8KL7Ju8WTb0pCwrqK j/CAIjbcXGXX
25fTRbJ9rGIFqzR6i3bV0fmMIWZmuD4hxwUxTcm8ZXFHzivuhvA5w5XG6UeC T+YfItTYQXq3
0A9EGxQxr+nURqdJWhmtLfFDtD+lTQAqfbbTCoyR6Theop1aM0IYl2lVcAUv +wDjPoDyDFcP
6v6t8tkbZ3yVuu8N9Pi+Sd83EHzS4Jk54xnwPZm4mHTqk8/6JcI90iRswvHg MwwoynMMHWO0
UcfcGbRwHY1uh6/jG1Kl0Jro+w3iNYTTV2f8OeLHSCbGjjAexEE80Td2iDun FGHKLLCKLqzj
Fh5IqngNzqcSu9dwV9In8DqlJSB39/CmrAr1vi/kS19IpLcm5EajkIN4b1// IaYa6XWi55TX
8hn6SJ0+IkmZ3N3HO5I+gndpJ+ipuX36R3QWaJM+faKR/ghZBrFJHmPmCO8H sP403ps8ROG0
dW5S0gGHBHlUpCqB7FGhv8Yd7EtxgzWKurjJurhJLGCRUJi4Nb6kHToLucO+ pP6mkkjEIZZP
NXTLTv+WNHxHHo8wgO+pNo8lf3cNr84/7PMzce8aWJM+68h5VvoH9AtCwV+h KE8Ee+m0hWsl
+ZHYf6Kr/vMZ1mSdNemzBvCJ9PsUn0FcO/rzgQ1orW1/A1BLBwiZtsljlAQA AM8JAABQSwME
FAAIAAgAcUY+OQAAAAAAAAAAAAAAADEAAABFTUYyLTVNMlRlc3QvYmluL3Jt b2YvaW1wbC9O
YW1lZEVsZW1lbnRJbXBsLmNsYXNzlZXvT1tVGMe/h95RWi6wwQAZZfxwc+UO WxEVtGyjo2V2
FjZWQK0/8FIO3Z3tLeuPmflCo3GZb41GM98aQzSLAUwg8YXxlSb+UcbnOb2U cikmNum958fz
fM/nec55zv37n99+BzCONS+aBM4V84WNsJXfzIUXzLxcj+dkXtrlBA14oQl0 H84fmWoWOKOm
6r0E2hai8/HVeCw+F11OLgl0Ju+ZD8xwzrSz4VS5aNnZiEDv4nI0mZhLxGOr LvOW6UzOsq3y
VQFPcHRFQJstrEsfBNp1eNHCrdM6fGgR6Ehatlyo5Ndkcclcy0lerJAxcytm 0eK+M9g8rQT9
8KBbRxdaSbR81yoJBJInx06UukyVzbKVmc2ZJbIeCo4mC8VsWBLhZkmGZX6D 2oWiDMeVRcSH
fgx4ERDoU7p36HHbzHxoZuWFpFWWRTNX0nEeg06WYqvxZHw+vkBhn/9vZQFv VpYZUeAsYRxL
KS/9rI4LuCjQdUR7VWVYYOSkFaJlklirlGXET7m9pCOIUYFWGXtom3krc0PS pkaDiZPcCaCS
KVcotjlp0ltG0ul6wFtr92SmHPHiMm2cm5viKh3E1R08HtboCjOFdbyA8Tqm FDPN/B+m40B8
try2/Ki6+GlK72LFzFkbllznIU7oyzpe4YQOuBJ69PCSc8nlTEOk7BrSpEpl bzDRMEEc6LSO
IQxz66qOCW55MKPjVbwm4NuohpKICYgEsRdlqZB7QMIiTWXDgS893FTrqPT0 UHoaBM3iCR1j
eJ5bb+iY5JYH8zrmcIOECHzFzFXk0cp1/KmY5LJdYn0tmGA1D1I6bmORZxKl 1MFM2g8Db+p4
C2/zzH1KRcm1xQdIaRZ5R8cSlgX8qUKlmJFzFhdut7smQ+xNdZmwbVlUlSFL XnxA6XbXGwVy
UHHaMAXqof8pNCHAdwhdfgG+QejdSk8/PUlUXYkC/POJX9FG/44d6jThDD3b SQK4CA1hcgmg
U82A+l019wl6s8ApYx9nD139ynCSTKeUm141Qg96lcAz6HMEQo6Atotz2zX/ ZjUWrfPVHF/B
x8XxnSJFnms3PLsY0bQ9PPcHDLfKzTqV9poKnQZH5TppM61fqVzeQ8gdR4oy t6RUeqqWjgq3
XqTUcAQTDagoppdOonq3IdVkAypWaUQliWrjBKoph4rKyNH7hPQ0ehv9Pyub YVR/vD57BYw9
RLbpcWXb6A8M7OPaIXGn8izQrt3HAEoYQUWta1QVa+satGPXlaKBWcQUlYE4 tfgsUq05LI+p
z0dr3GEZdbEMGWOUsT28vuM0bu4Y/WP7SB6m4DwdauBTQvqMDsTnFM4XJPOI lntMF+eXCm+o
ukgNb7yGN44F3CIlwWXsQH1MfQYOOVCXXFCDxi7aFNMuOqpI+7jjJvqKiL7G IL6h1b8lje/o
0/KENvX7uo0K1YhCDpHgm8Dh+MXhsB2OrIvjGmH8hU7erj/h1bbQ59lCNw3y yB5WnsBLA5r2
lDCrdleO2HXwSL0dx5F+6trsHyiOHzGDLdzFT3Xsdo3ddtib6Ciz73t4Xx09 QV+RVZjNvn8B
UEsHCJipMMuPBAAAdAkAAFBLAwQUAAgACABxRj45AAAAAAAAAAAAAAAALAAA AEVNRjItNU0y
VGVzdC9iaW4vcm1vZi9pbXBsL1BhY2thZ2VJbXBsLmNsYXNzfVFdSwJBFD2j q6u2pVlmWkpB
kPbgEj0agYiFtIhk+D5uo03th+yu/a7qJeihH9CPiq7rVhLRw9zPc8693Hn/ eH0DcIyqihhD
wbPdsS7tqaX3uXnPJ6JLsQqFofzT6nFb3HQsYQsnWPSTDFrYj1gMyVPpyOCM IV6rDxmUtnsj
MohjRYOKFEPWkI7ozeyR8K75yCJG3nBNbg25J+d5VFSCW+kzFI0/F2vSWDEI eCDNtsV9Au7V
6obrTXRhWnLqC13YY4pdT+idENFMYwMFFZsMpVDyikykeGDIQHjc8jVsocig 9lvty9ZFh6H6
vyZDZuDOPFOcy/nOuaUNG3f8gdOWXccRXogWvopdAv2ezpD6mo990N3oJehr YlDmF6MsTdkJ
eUY+cfSCzFPY1shmyAMVglaxSpG2AGENWfIKcliPBBqRgPKM/OM3PxnWDpe4 SsSNYTu0JZTD
OYzut4NKMv0JUEsHCOZWYTVfAQAAOgIAAFBLAwQUAAgACABxRj45AAAAAAAA AAAAAAAAMAAA
AEVNRjItNU0yVGVzdC9iaW4vcm1vZi9pbXBsL1Jtb2ZGYWN0b3J5SW1wbC5j bGFzc41VW1cb
VRT+DpdMEgZaA6FSsEakkgTLaFtbbSotl2AjaUDAtGi1DsNhGDqZiZMJ2n/g b/EJ+wCrspb2
yQd/lMt9zgxJCAn6MJOzz+z97du3d/7+5/c/AHyMnxT0MIx5FXdXsypVW1un 07Ju+K73skCy
gj6GadczNW7YVrXGNV7ZpbPr8UA/f0Y5wnBZYrXAMPRZjuUzjKQzxfaPOfq6 6O7wGAYwqEDt
6iy/phsvdJNPrXPTqvneSxVDuMQQLZQ2NudLi3mGTPF/muaieIvhyp7vV+9p miZjEq9ZqT9A
oQyrGEGSYcDkfr6Rx+10cV8/0DVbd0xtw/csx8x1dXqaYAxXMKbgbYZ0Z82q XTctR8sLYU2e
RWpXGbJdoM8b5OLkZELFO7jG0Gu7JkOyNdbV7X1u+LlMOQ6GlIr3MMkQuS/a MkcG6UxZwRTD
cNMi/7PBq77lOgyXipbDS/XKNvc29W2bMySKrqHbZd2zhBxeDvl7/EzXE52a HeNN4GSxgz9K
pRcpYoW/Z9UYxotdqUloEcPjuk/OH6S7tWHR1mu17l0KKzNAo3BLwU2GiYtw VNzGJ1QRYoWU
rV2Le4UlWcKCqO1dFZ/iM4bBILCQeDQUp9QPb3JCOafiPj4nkgXKj2kMbKrj qaqUcwoeMEw2
C1WwbW7q9rxn1ivc8Rt1UzBPlG6n50Ldsne4F8Uiudnc4ylDhJ2ajuMh8oIH y21MOWV1WVTk
kYoCvmRQKN+SXuHBCJ9TFmBFFY9Roo7o1Sp3dhhudJyVLvHRQK5Rr6dTVi3l uH5KTx3otrUT
RCuLLHysq9gQ4UR9N7COYw409xEum8Fw7WISKHhK2Tb5FPZCcCmOJ4J00Wpw 9ZxKWeyoSCDf
0aA0v8kuBRDPBER/JWhjsthBhyg7RLUURG5Q48xWbKXHjgqO3XAHNdQn0/+1 5ijEvdY13DCN
E1BTWOJVjxvEO2rW2Hrd8a0KL1s1i4Z53qEm6IJVVNTRlqY1bWitmaBF5aIq hrq5hBPnkyFn
G27dM/iyJRbFSNsczwp8BrXgONyTneI1BXVq58V5UrtOFzoRmWaQnn76U1MQ oydKUowkHz10
AqZeIZ64/BqJHrxB/0r2LwxmD1deYTR7hPETsK1jvHsoNYdp9b9PVtfpfBUR YUv7+DoS+IC+
ZJBEFhP4kCRglPSGSGcaaZKS5DdDX0E4tGLDCG7Rr8Dtzx5j5jc6BNBx+gXu oA93JZQaKBHw
DQkwCy0E+IVuhe6jmdf4iOFXOiIlcUBJiyCAcUrjziG97h2eYG7rBA+3EgvH WCKTLxiOsJJY
pdcRvjrG5p+NGBLkHTRZE5ingBcojqVGWuQvjEWcvkZZpkHbLYxqgXSEVvwE T6h4W8WZw7bc
StSE1Ra8eIgXJekbfCvxaAGex3tGeN+fx3tKlltd8J7jB4mnYzvEuxmWPUpF Md7AbKJF5P12
S9WjIVIMFt33Yl9m/SLUteUXQQMm7/teodKOVpFoPfL5Ub491GSMNMBEwoNI 7F9QSwcIw+ph
L2wEAAB0CQAAUEsDBBQACAAIAHFGPjkAAAAAAAAAAAAAAAAwAAAARU1GMi01 TTJUZXN0L2Jp
bi9ybW9mL2ltcGwvUm1vZlBhY2thZ2VJbXBsLmNsYXNzpVdpcBPXHf89S7bW 9jPgNQQoR8Dg
2hIBJTTpgU0KMSYIZAM2R3AOspafzRIdzmqVEnqH3CEJuUNIydlCmwtIMHFO kh5p06/NTKbN
ZNrO9ENnmk/tTNsvnf7/TytpEZJNpx7v23f8z9//2KeP//PWewAuw29CqBGY 66QyI1E7NZaM
9tNsi5W4yRpVMVqHEBRozzijUZVI2mNZFVWpEZpnHJWn7zmHuE5ghpblEyPQ pJIqpdJuT3fS
ymYFFsYrC8yfdwqYaSulhnvO5Woay8srrBtTmWGVLKwMOxtL264aFhCDAvV2 tttRll435Y9s
K2nv57XRRZpp40qBQEd4h0CwmyTVQ2CmhESTwPS4nVZ9udSQcrZZQ0lywYxn ElZyh+XYvPY2
67q0GANzBWbvcd2xVdFoVLvPwwrtVD3mYUEI8/3ArLcSbsa5VWIhLiZTVaxv YNvavu4eVlNO
1NmAABZLzEarwBUd8b3WLVY0aaVHowOuY6dHO6thWeAP72DPlkqEYPDsyxL1 +VmHREN+FpFo
zM8ukZiGJp6tkJjOWATdPTbhOy9eNUcoYEEGgvDrCMfLw99Zj8vx1RCuqJpH hRRa2q9G7azL
wHwNX6c4lXAJV/OynLWzkbStkuhEF2XIqHJ7ill4eQXwppJL6Atcyeg382yN xFo0C8xK6Nzy
iLozaZfyNMsU3RLrmGKuXcy4ClTrJa5mqroRR6n9ZNs0d486p2Qa2PR8/gss 6qhqZ6FiphN9
n69oKBZlO7t5QYlQXdZal0AZyrmKQNyMrSFsEZg/mV6JfgwIXMS2EqC5hJtz rOR6gibnKMqZ
tgq6EplUKpOO5lybekecYkbKtmNnCFSHi6cklrgGu6hsSSNFoSMW9oV089Be lXA7Q7iWEJvK
RYEF5fhszVG4Rmw1nAeKI1AMh0GLXm43As2F6W7vNDspqP1qRDkqnVBk2FB1 w4pklAukwNcA
yqqq1BYERiRGsUeghQPgHcTSWdfSclqrG+UXslfiJpBfMp/ThX66mMGdNOmY OS2RwRj1No/Z
h29rx+TssfAOluBIZP0SikAYyFFfYb+Z7FsS+0BYhLL5qHH0K5SzFvltie8w bSPTZrc4asTe
x/vfk/g+7xt6f3t/jNP8hxK3cRJP00mcG6OOf+uY0lV6u0QMGzk975S4C3dT 3lnDw2WavawL
DzLHvRKbsDGEgwSnjpiXWwYeINO9BRMekngID1OScZsoQD48BWI+redteAAM Dg5OEbUQHqUc
1sb5s9/A42Szf4fNfFIijl7+GjwlcQRPE4kWVqyLpdWU+aiowI/i2RCeoZyY mlriOTzv9b+8
UwJLqmfyOsu1OGCdBl6kdOF7Axv+E4ljOE5R1fj6svJ4VYxL3W9SALlDOBWQ P38nFjsvYIPe
3wW0YPbiZxLXodfAy3SHudnfnUJ4tZBhHmwGTlCGeYsQThGC+lh3KgNvCNTq KYsdl9iNG3n2
psT12GjgLSoK73alM/8diXfxXgE+X2/6bVX4Sn3uQuCbWsj/B3B1hEsq2NGz Eh/gQ3I03336
VTaTc9jR1f/DZcHxuKIFdvoeNwzo2Xqb74kzyy5MK1g0BTCWTitHG66yIXxE F+PJbyMUpcI9
B4vJ+gA9tXSvq+G7HV3na/hmp98N3rtRvxv4VqvX07z3dP1uotMZaCYpJq3C 9Oa/2sDraDmp
yWZp5hoatyKI+bhI7/Izu8iW1mYAHRFzzil86QwWRcRpLOGhjYd2HsKRwGks 42F5SXKrNi5G
RreSYWG04FLMoavfAnxMO39FOzZqjTIvH1E6B1FfhpWe7kMkic/6TqHlMJpP 4SvmnAl8owZn
UXuitPoA4jBmlNbH0PA2xK4zWH0WYlOQ3I2M45v0XEVPT+RE0cKFBCywFzOR Qhd96dbAoetd
DhvoYxTH/qJ1XWTNBm2d4E+GZ12U3mxdbeQNLCkJrdObB3yu1XquCf56VGBu K2c+WJGZWrXH
vNrDpYWZJ9BHqTKBbQzLYLmox3yiWoqirptEVLCaqKMVRV1f0aX2cuZjFV26 oSJzuJz5REVm
anIVnAifg4dVLmqiohMJDHuiVnp2GJQq6izmlfN/6OM3ivxri+VyxCuXXjJl 2WEET0aCXBmR
wDhsLptIUE/aIow3bab0JKgntfqoPRKp05MwH4WJ5uZSTUWoXoHfkepPqLw/ JWN+j4vxB6qe
z6huPscq/BHd+BPlyp99hvYWDV1XMFQM0MhnX5CS5QVDl0dMdxy36HE/Ffw4 vpvPix/Qj8hx
HJjAHTXYyfEtbN3jbXENmPeZ9wcD5MuDet1mPmI+VlyP4wnaOzyBH5H+F0Qw aD4SCAT5nwh+
rAl+WiJ4qQIBaTVfMV8LlDSEzZPm64GShtP0nBHmhAjUmCdpv8D99k7ty/s7 S0BeRZ0R+DsB
+Q8C8p+UC//CXPybf7BjpRDoEUFsF3VQIoQ7hYFjooFES+riTfiLmIG/iWYf wF94ANfg53r8
BX6pWyv9KsWv8Ou6+v8CUEsHCEQfxE1QBwAAkREAAFBLAwQUAAgACABxRj45 AAAAAAAAAAAA
AAAANQAAAEVNRjItNU0yVGVzdC9iaW4vcm1vZi91dGlsL1Jtb2ZBZGFwdGVy RmFjdG9yeSQx
LmNsYXNzlVRtUxJRFH6uEihuSmqapflGClhuZGYFaUaYNqhNNPahD811ueDa sussS43/qmbK
ZvrQD+hHNZ29bIi4oMCw3D17npd7ztn75++v3wCSeB1CF8Ntu2wV1aqjG+pb Wq0X+JEj7A2u
OZZ9HE2GEGAYPpuT/6I72gFD0DnQK9H7xJFrR5KizLRu6s4qw3SsfWp8jyGQ sQqiFwx9Cq4g
GEY3rioIoZ+hO+YmDOR0U+xUy/vCfsf3DcEwmLM0buxxW3fvvWDAtccw1VYx miR7fRqviKwh
ysJ0GFY8j14gFc9ZdkkVmqEfVYQqykVVs8ply1RNy9GLx6pHmApjBDdCGGUY b6eoYAw3qaaa
LbjzX9VLYYjHLitHVbX2D4VGjvvPGmaIuBva4WVRqO8q7e2qMdrR1qYUTLvG x2rGG3nq7od8
NLzyvuHaJ14Sp+X1Ah15mFMw31A8j6Iu33+WmaHXVd6mcTIYlj1deduR6l0F 91zVwZqqJKhr
Ko2stNeCKPKq4WRImGEzdk5GaJYt1OyubF1HNh4oWGqcnBpF3cjkBVIMM+cG +5B/5qrBzZLq
JYXptVtRMIRhhqWLzfvinypQQafCvP/E+WKeKZjA7VOLp8Phm/5cwSyi9G43 9dQ3OaMgjgRD
OG9VbU1s6O7hMHr+xVx00TQzeb1kcqdqU9Zazu/kS1+yaatU84GsqRlWRTdL 28I5sAo0MFum
KeyMwSsVUcEUGeym45hFIu5hR6s++oXQQ/FeWj1GF32BcGLhB11+QvlGd10Y cGPyCSNcDhFa
KbR2o9cwKOPURY8lTf9ubk/iO8InuP61zhGUmF2JH6nleHh3dQvj9Jy5vfFn mmxmyrdkmpFM
1DZ/pjvNTO9bMsUkE/XUn2mhmelDS6ZFyUTT6s+UbGb62JLpIXVwnSq+7DHN eX0LJhZO8KiZ
h0keek4YlXrsg3nSDjOBlB8m3Q4zi1U/zFo7TBzrfpgXLTEI4KVcZbEh/19h U0ZH6Lolp5NJ
BH3+AVBLBwhkV3/e8gIAAIkIAABQSwMEFAAIAAgAcUY+OQAAAAAAAAAAAAAA ADMAAABFTUYy
LTVNMlRlc3QvYmluL3Jtb2YvdXRpbC9SbW9mQWRhcHRlckZhY3RvcnkuY2xh c3ONVdtOE1EU
XafUji2jrQjFCyggalsug/dLkVttDbHWC4REfRqGQxmcSzMdNCR+gV+gP+CT D4q3qInBJxM/
yrjndKjQjrVpMmfPPnuvtfeafU5//f76HcA53JIQYuhzTHtV2XB1Q3lA1uyK WnG5U1A113Y2
JYQZLtlOWeGaoVeqXOHmqqLZpmlbimW7+uqmopsVQ9mbNk8uBtm0V7hxT9We qGXO0FUUTB6J
78sydIqYhWe6q60xJIt7i6n5KSy6oJct1d1wCGc6MGiy2LpKv8DsFKFFJnVL d6cYOlLpJYZw
jmqIoQNxGZ2QJRxiONFKleFzMSRw2IvuZhhMFVsFZ9NLUVBrMiTs96wjMvYh EsUx9Ek4zpBo
lEVGPyLUM58vLSzOlnJ5hnhRt3hpw1zmzqK6bAg1bU01llRH9959Z9hd06tU fOuCiFKv+i8F
21ncrFBqT6q4rj5VFUO1ysrd5XWuudn0IwmnGfobleWa7XAlX4vqxDDOykgh TcLynKFWqYKB
VLrpe/hZIiLbiRGMSRil+WsVJ2McCk1Jmbv5+iAN/Rv872BFbFGdJ1RTXwwH NIerLveFYbif
+s/4lLxFp/lppg6esxgu4YqEywzdQeMq4yquMexfsXdm/0JzCXt0JuamRiRQ L6fbKogUcVWH
dGRou1eqvaZT3uAmt9w6VDrgCwTLwHC0BlFSTb7SiOPD+1+t7u6que94V0Nj rK9G3R1bsDcc
jRd0b/57m6d93BON7qJ5y+KOmClexSAdww66A0MQZ5GssHc6yRsV3piw6S6g 5wHyPKZ9Rmt/
5jMOZr4h8ZCMro/o2ULvT0S3cPQ9et+J1BP0PCYgRynpNsEX6a4YQ5ImuQ8T OEk7cg0MA1QI
yB7CKZ/IIoQQrZkRQn6NfeE3Iz8w/ArHR7Yx/AVnGL4gw7Cz2UG/OmuSuIBJ auQGtTFNrDN0
KucEY7KG6jN61gT9ATD6nccFnzvnc8czH9Dj8X3CxW1cf1sniIiyzV2A8Tpg nIhvCMApoq4B
jop3ymaNGM93yRCqyzDTRuaLwMzZNjJfBmbOtZH5OjAz10bmVkBmCDfFM48C rTHaSwgF8QdQ
SwcIKTnHPzADAACYBwAAUEsDBBQACAAIAHFGPjkAAAAAAAAAAAAAAAArAAAA RU1GMi01TTJU
ZXN0L2Jpbi9ybW9mL3V0aWwvUm1vZlN3aXRjaC5jbGFzc6VVa3MTVRh+ThIa mq70wv1aQGrT
0DYoeGtLKZSA0RAKqVUQgW16mi4k2ZhsuP0Ax8+OjCPf+IIzzjhWHOvUcRw+ OMOMH/xJjs85
u9kmbdKMmpnsnn0vz3s97/vn37/+DuB1PAojILCjXLAX41XHysev8pS5bznZ pTBCAj13zHtm
PG8Wc/HL83dk1hEwCvaCzM+Y2btmTgr0pbSy0vNo4wIdE1bRciYFgtGhOYHQ NFUiCKLLQBhb
OyHwioEt6OhEN3rD6KGh9SgG+tAh0CmT6czs2fR0QqA7ZRVlulqYl+VZcz6v jdtZMz9nli31
7RFDzpJVEdiVahbVuGI0KD0s1RT3N9WYmJ0dn6Ta1gXbJQicjKbsci4us3mr VJFxWVjk2S7L
eMJN0vhQan3eCNCZsXJF06mWaepYWwRa7cIhHA6jX+DgpsIGjuAoky6n82aF kR+ODrVC1xLj
ERbgmIG9GBC40tITV/a/RBpxlmSi1i/9bRAEzv1PF3SqYhgO47jAgc2gDIxg lP7JabvomOym
ssCR1tnyDCjwEwZvyxvswZx0NJS1aMly8rxu8aRK6CmV0Df5jib/fc6UibcN vIN3BbbRRCJT
LbHL2Zus50ATD7N2oWAX3V5NpKyKghjH6TAmCKDhNUtxDEzijEDYqiQKJeeh 9vi68visgXPY
J9C1IBfNat6ZNitSoZw3kMAFytERgZ3RZPN2VkX2Ou7Q5gWkCVkfUE+q0UMK nFhHmtgcUV3I
gfaJZmeEkebM0hc7kZcFWXRU6DMGruAq/coyZo8ucDSaqhdsVqgwZgV6tVTa LMiFOsw5Ax/h
Y0anMOuZAoMecD21Ofr1mrPeGFTANwx8ipues/7grTlbm7pN4W6z2bXUJTW0 Fdi8gSwWWD4F
pqlqYKTWhJpfaSPb0PQiyYaStfC2NaaNo6gsK2woNaCbYRUbkrO9SW44bktu XLd8+LX1sqXg
+m3Uu81+ZbkJt76Imtphe+NoT9NSNGj6GdXU3sbkaFokY1fLWXnBUmuje21X jKpoBaITs2Mb
A5/cSOLgptvcxIxF7UOe1HLkjuSzk1/X+BZ898Z+QeQ5jJfofI5tP8H4kcQg tvPZhxCfcT5P
IMIh1YOT2EGK4SpiJ3bxvbuBskeb3It9CGA/zwEc0OauEjOgJGPHV3FQ4PgK Xl32LXVo/dMa
fZcr56Gr02sYJH/NjuHZCak949uJaju/EVF5PUUzQwIM7Bm6lc24wPAKTi7z +JZAemQVYwLf
oCtG6tS36IuNBFcxHcALKEqdb4eYNOA9Wk3Sagr9SNPWZeZkBmdwSfscc236 Pk/hIjWEPinv
A9Q6Qv33ibnbj3HKi8PlfaA956D3I0qpiMRfPG3h98r+7zT2D3B/Qa0JjPFv 8v/V8AtcSsdG
VnB5LLQ39BIRHZo6L5OV0awPa6xWYte02Cd1Ym1VbmkVcwNLn9byOMdogRs4 jJus2i0M4za3
ksmtsMBMSGZsERnkyFnCPO7ylEcRBTzi83PY+BIlPEYFT+DgKar4HvewjAc6 /yV0qQz5+V8h
3qLO/4qX/wFyckQO0m43LNxhrqdwlHbypF1kxl1aDqO0WSStSD2X9oS6Nm0E abemq6p4yq2L
V0UX9zPyXDR1cjHU6anPFWo/+DUu665VvaI6IiDW34kv6u5EwI8vwDwsNdyJ gH/3uCl8dKcN
+tct0fMt0LkufPRqG/RnLdGLLdC5P3z0e23Qf26JXmqBfm7DVGqN/kdL9MGm 6AHc188HHv7D
fwBQSwcI3BEfAiYFAAAJDQAAUEsDBBQACAAIAHFGPjkAAAAAAAAAAAAAAAAd AAAARU1GMi01
TTJUZXN0L2J1aWxkLnByb3BlcnRpZXN1jrEKwjAURfdA/uGBHWuSVgQtKjhU 6KCTo4tNQo2k
TUgaqX9v6iKF+rZ7DjwORgvYcWPfTjWP/oDHSSd7REklCqiD0oJYZ6x0vZI+ fUFGMsgZ21C2
pSsGbFPkebHOQJtaQjlYSDDCqFYdUR3XQUgPeyDpDSOYXmuE1HRGnMvrcVld TnPO6tDE10Or
/8tfLkbPu/OEm9YqLYlxQrqxBiNvguOSkLi84xQjE3ob+i+I7RF8AFBLBwis vnB7swAAACYB
AABQSwMEFAAIAAgAcUY+OQAAAAAAAAAAAAAAAB0AAABFTUYyLTVNMlRlc3Qv bW9kZWwvcm1v
Zi5lY29yZa1UXUvDMBR9F/YfQnzess0XKe3EjwkDJ+I28DWmtzXYJjVJ7fz3 3nRdWXWCFfOQ
QnLOycm5Nw0vtnlG3sFYqVVEJ6MxJaCEjqVKI7pZ3w7P6cVscBKC0AaC+QMX rzwFss1l0LKm
yBqcEBwopmyAmxF9ca4IGKuqaqTzdKRNyp6WC7qH2C6kOqsR0/F4grC7lXiB nA+lso4rAR31
2kmHDCKThYVaAfLEq0zZ3MMoUTxHsMl10ogou3lctHTmd+ppBA3BPhhI5LYh zTwrhOuMWysT
iVcm6D1wHwXKNqHUm/uj5hnkoBwl/Nk6w4WLqDMlUNZb6R7n+Cc5AquyALNG to3oKWN74Gx3
zRBWiBOuNDy7BY5fOHLepXNGPpeuDcrPlGS6AnOlSxVjS+BR60PODXfcL5Bf VcA7QyfYTk0C
f7b2VvLM5xbfH/G4U/bjX82G7LBevSvYvJbvxeqUtn9nLHUMWb9KP0ICBvxb ajSKnTfULIui
TXJ4JEr0215EaOW4VN53t6+/BoULnT8GLn0CUEsHCOwy5nWOAQAAbAQAAFBL AwQUAAgACABx
Rj45AAAAAAAAAAAAAAAAIAAAAEVNRjItNU0yVGVzdC9tb2RlbC9ybW9mLmdl bm1vZGVstVRd
a9swFH0v9D8YjT3Wygwbw8QpI45HYQmh7WBvQ5GvHVF9TZLz8e8n+SONu4TB YH4wjnXOufec
e+Pp/UHwaAfGMiUz9CGeoAgkVSWTdYa+Pxd3n9H97PZmWoMUqgSefgW5DA/R QbD0REw88fYm
8pfXkzb1hxnaOqdTjPf7faxEHStT4x/LB9RDgCoDIxBQzrSFFgiiwslkkuBF gI20h1b+zh16
RVFLyJkB6pQ5ZggvlkVy93GZPIN12BraV2hxa97UTD7kGQqonz2qF1kR4bt+ FKpCERNaGQcm
QH3hUxO+gXg4i+HMQAXENQZy4FAT1yaXHyURjKKIKqE5I5LCN9gFd5/CMKjS R8PqrSsY8NJm
qCLcApoFvWnllVndeZxVjEOK5ynOFW0ESGffJxMiS39/Auf8QC3magM4B/vi lMbGe+i6m+KR
UqvtU14T+kJqsJE2ULHD4LpkVitLNhzWRu1YCaYgfazONOAXKGj25Ay9lnmH u7479Tkn1npx
JlpY56vjtkdjJl5wCKYQ/neJMLpy0OllOqGim4uNqPFPMN8yXo71ekSG2l/p 4otzhm0aB9HV
EtgPFk79/s9CvxrCWcWgXJ1XnOLXiC6EdjWmfnIXk75K6v5nl71qozQY5/dj paT3SYNrA3LY
l1EWZyv0NopHqMDT6Jso2tJY98t63X77Ytjp8E3Df3zU/NvfUEsHCDjmjP4N AgAAEgUAAFBL
AwQUAAgACABxRj45AAAAAAAAAAAAAAAAHgAAAEVNRjItNU0yVGVzdC9wbHVn aW4ucHJvcGVy
dGllc1WLOwoCMRQA+0Du8MAtJT8R1qB2FhZaeIPVPGMg8YW4btbb66KN5cww nM1gfaH8KsHf
+i2fUP7xpJq9s5Dj04e7yIUylj7gYz6AFhqMUq1UK7lQoFprjF1qiHRG2I0Z Gs44+57HLiFs
4JToCgdyGD+h0BAcll+qtQocu5QjCiqeszdQSwcIsJi1IIIAAACeAAAAUEsD BBQACAAIAHFG
PjkAAAAAAAAAAAAAAAAXAAAARU1GMi01TTJUZXN0L3BsdWdpbi54bWxVT8FO hDAQvZPwD2Oz
R2kLGxMkFE6aeDAxRs8GYZZtLG1T2A3+vYXi6vYwnTfz5s2bsp4HBWd0ozRa kJRyAqhb00nd
C/L+9pjkpK7iqKyxVdKO+Mfde+7S8s2bJIkjKFtjv53sj1O1IPYf+sLuqSvA qlMvNfVLb8+Q
0hQyznPG79meA8+LLCvuUlDmE+FhtrCLoyQJK8JgUAIocZ5QLz7AGqknQYzr 6WaR4nDwuXFI
e9Tomgm7D9u0X02PpFrnF4mt8ovDOzkpyHGabMEYc4M5rCGokWtqq5pxFGTt v/rwsm24ZnkH
z6ZDJciwfEHOF1dEWLBTsss94Vp2OfcHUEsHCJuVQTT9AAAAoQEAAFBLAwQU AAgACABxRj45
AAAAAAAAAAAAAAAAIgAAAEVNRjItNU0yVGVzdC9zcmMvcm1vZi9FbGVtZW50 LmphdmFlUEFO
xDAMvFfqH8yy0kKlNA+gVHDYAycQP0jTaTbQJpXrSiDE3ylNF4S4WPZ4NOOx Loo8o4IqG8d3
9u4kdZr1X2AF9w/t/rvReTYa+2ociIfY3eRZnvlhjCwU2ZWwvR8nlBi6pY+M 8vjYvMDKStRn
xwulqIHzQc0TWLXRklLJ/Z4YI2NCECM+BoodyQk0xBY9xVWMDhWGumrqY49h IVa6qSu9QIfy
Vx+h/af+E+duQgpQPi/lKSW6dJBN8eo60ZKraSZhY+V2Jzxjl1YOAWwE7fkt c9N7Sz4IuDMW
tEkR3mS5ZaLtE/SRZ5+k9XmfZ19QSwcIisZUkvAAAACJAQAAUEsDBBQACAAI AHFGPjkAAAAA
AAAAAAAAAAAgAAAARU1GMi01TTJUZXN0L3NyYy9ybW9mL01vZGVsLmphdmGN U01v1DAUPCdS
/sOjVNp2Rew7hGg59FAJBKq4V17nJWvq2JHtAKuq/x1/xGwqtCsukT/emzee mdDttiphCw3X
09GI4eDatKevD+Lh9X13HRa0KifGn9iAYEbdf6jKqhTjpI0DbQaCXIrJIsGx J1yPo1ZkdkKS
u8/CukvFyLVBcvd1/wN5KqSZ3pu6hj0OQtWzRVN3mkNdJ6qfwOBk0KJyzAmt QPfgDgij7lCC
jmCwaXBsm337JRw2dN821B9syAkdVfcPdrqd0pzvHrPXUupfQg3QI3OznwrM INh5Cg/C7n3q
mGVqAWikaJ93UqinKBWJ898O6L4lAS0EYnkTSb001DctLmSkhk4nRjuLSXny 4D9LcwCN6De3
qSi+Py0HVGiY55fdm/dScBDKoekZR4iNgL+dV8HC4gA8V2URHSg8yAP69yob pf3J5IxZ5yzt
6RFZXeDaeyLU6K3xJvVoUPlh0seAJNCgadjGSl+V5AzAxwlhLdyC/rI0ng1E kR0Li/slCchU
8GxN+JXkl5iCsGrjCUpk5l2C9SCepUEm5RHsQc+y81x84BJ3Bh1absQU0xhq Ccm0aaZ2JnPh
amei1GeU/m/iy8jLYXnMcCE1xd/YrGE/Xjkz49VyvYpSEbNUxN+6WZvUwirg N7fxT34BSlPM
qvIPUEsHCLyC7MzzAQAAdQQAAFBLAwQUAAgACABxRj45AAAAAAAAAAAAAAAA JwAAAEVNRjIt
NU0yVGVzdC9zcmMvcm1vZi9OYW1lZEVsZW1lbnQuamF2Yc1Vy27bMBA8y4D/ YZsE8AOVeG9V
wz30kEvRJr0HlLSS2VCkykfSIMi/lyItW3bsOE6QIjBgUFzu7HBmVyLT6XAA U0hz2dwpVi3M
LDyTzQ2/eXZenLULMhw0NL+mFYKqZfl5OGh/pIP6EMeQYcVEbDWquJA5xHGA /QoKG4UahaGG
SQGyBLNAqGWBHGT2G3MDoxTrWZrNvtMaC/jGsXbHU5LNUuICo2RdBUXxqEaI NqHeL4ddSs7l
LRMVlEiNddWBKgRtm0Yqg8WnkGF5SAFIOZvdzzkT1/56ieexpHFaoWmfoeXY Ljynh5S4nGem
/7SUs5JhscJZ7cAuxJR01FLSrK841xjkTy7c34/gR0evqzeehLNBX5ppo2hu vpwYZfEkhCoU
qKjToXPWZpzlwIRBVdIcoY8H+Nc40XXnCtwPB5E3PnJYF+jkFdo7ekO5xc7e vqNrI4Eao1hm
DSYhf2/nRJ2l7eJ82TJIRWtqv8RKvh42MC1GBnKOVH0MCO68awCFlPM70Atp eeHKuiZUnjGF
AnWuWOM7tD2bJB1D0rHY039taK68Dntk2MVxie4tPdXBwvGlC4pq0gsdcvvK 53UZwXOFfyxT
WKw8j7ZMj7zrUagGS8TxxA/12tpLNLt8PXJMjrX8CY0bqmi9ZNNSEXj7ErFX 990rzI1kBWx6
EgptS3Sw+7fH/O3mYMcL5R1PxNNst2dj4/X5kiHZBHjttGyhvX5snvd5+O+T dIRJj1U5OFy7
TO1P2QMQsvEhGg7+AVBLBwhM0snYPQIAALoIAABQSwMEFAAIAAgAcUY+OQAA AAAAAAAAAAAA
ACIAAABFTUYyLTVNMlRlc3Qvc3JjL3Jtb2YvUGFja2FnZS5qYXZhZY/dSsQw EIXvA3mHERfW
LWTzAIaiF3vhjYhvkJ/TbNcmKWkWFPHd7W5aRWQgnBxmvjMjm4YzakjZNH7k 3h9LW//yr3E1
N09ucxGSs1HbN+1BOaTunrNLyRV1IwQZ+D6K84QsXLIkRMU+UsaYMSEWXfoU KXVUjqCQHAZK
5gRbaKsQWmXal5qhpGmVnK3t/peP6P7Rf/Z8mFA327/Oz4K59SiLvNvVtmtq lR4RWRe49b6z
GXpLfSzInbagZZTwXubsiZ51gDsMCPMp9MnZF0m5NnH2DVBLBwg50T3V0wAA AFcBAABQSwME
FAAIAAgAcUY+OQAAAAAAAAAAAAAAACYAAABFTUYyLTVNMlRlc3Qvc3JjL3Jt b2YvUm1vZkZh
Y3RvcnkuamF2Yb2TXU7DMAzHn1updzDSJGBS2wNQJhAaUh+Y0NgF0tTtAm1S JRkwIe5OmqRi
nw8DxEtlJ479/9luOh5HIYwho6JbS1Yv9cT56faBPRzl5ag30ijsCH0hNYJs RXUVhVHI2k5I
DULWCdKGdQoTbCtjC4nJ9J5QLeTaRqZDybM4hgJrxuOVQhmXgkIcu/KLJUJW TPyzLC0mUAkJ
2hy3osQmsVG5hk6KV1aiAgJUItHmHvVSlDYcCV0CFzwmhdLS5ALaEKVAVLuZ rBbk5b6SG4WO
Mpmbz6PDdjc1cpSmZDn0ZFU0jALjGmVFKEL/wiMAvmuTX8HQCviIwsC2IvC8 ivG6QS24yaA0
4SaBF1q5J4mLPdq34DhIsKM3sIKDLYH57GlxO7ubwrXjNRNtko2IvPcZZ/ri 0s7xW/0c9Ury
fgYc30AUz2habbS7bp9n2E5847LU2Oe/BZG23qnlDvBbTh/r98d7P2F86Pfp vwj3ix3gs0Ee
zNpHsfo1G/5pter6fxlLKNbmgqm/WkBPdUqtI0s7zKxGveF6uk9I0429jcIv UEsHCJIG+vyd
AQAA5QQAAFBLAwQUAAgACABxRj45AAAAAAAAAAAAAAAAJgAAAEVNRjItNU0y VGVzdC9zcmMv
cm1vZi9SbW9mUGFja2FnZS5qYXZh1Vldb9s2FH22Af8HLiuQNputdntb3CBG ogzGEje1E2Bv
gixdOVpkySBpYEGR/z6SoiRKoj4c2W73YkgiTZ577j3k5aVxdjboozM0dqLN C/ZXT/Qifjfy
H8THd1P3HX8wBv2N7TzbK0B4HXnng/6g7683EaYowqsROIG/ITCCtceeIwwj c0Ip9pdbCudN
Pa8Cm5DGXvfx9I395uABhtABgdFIjP1pOERLWPnhcEsAD93IQcNhbPjDE6Dx 8kJOMDaWF8iL
MKLs8zpyIRiJXlOKnCikth8SZDsOEBJhknUEaqNo+Q84lCAaIQwbDARCGs++ DeKpEBoH/gXY
zhNyuNW/jg32XmzywKZbDCjyUFNXCLfrUosduvEfXZuhoi8byHqMjQSLoARC t0zIJYHYzaM5
+7mxHRrhl7hFEIKe/dD9fCID4iRuWUEI2KbgJuGyXQa+g/yQAvZsBxAfS3KM 4F/KZiYo8Sr6
Nuj3hK960iFJtIX2Gkbx50of9qqt6RWg9QS23oLFZrhCMJvcmegzOuHGnoiA qUZBNtyKx/n0
gHAWFhufA3qidPOHYRgcmPiJw7sdxgNztrDu5+bN9O864gjrGgCNQhYAhNpM jjyaaQZ3//hy
8TWdLR4msyvuXMEeWzOCkdJjyt/90KfvP2jQK2pGvpuK/PTbZeCHz8qIZgBr JnI+GhrD+kK+
jw32/HoaC7erpakYizNq2ws2/rwCKv/y/kMldUykyLw178zZAyPso4YRtsws AXMfEoq3Dlue
7CBZp0ji2tMiBXtiIA8YXUbYZUu8Fr51Y04eHuemdfXlsdKY1u6dMSG5RR+L j+jwni5O3tbd
6v8afM6Xv2sr8/wnDVnJZqQSxWlgOyafiW+X0td2suMfw9856JYlF3J9FPyi jYIaw75u7cD3
fObmH8jEr4+T2+nNlH1qMFbnxfb6LYf3EVWcN7mo5SqDf+uicUU9Qt5pGngw YSszttW0fG2Q
8/3k6q/Jnzw0dIz8oEKWoFMJa4T9fxRvalZJtrWy7iRdNXSPKNrE1KJc68Ss X5Jbi/aOH0NS
yYq3Awo2na2tXMUfGsR69+XavGUs/b5bdMuZiBLX8ljK12t27pSnXxT4hB7D +8IOy5JBsOic
P2bOPGIIx0YUAzjeSFVT5sAAh6R45BdeEmDzsSp3Uc3RoKtRWACpw1HKxUfF 6JWtlVEaF2aQ
eoI470SHmplWptLHYUaT5ZT4UeG2ICmfd+/AFP+W7k3VjCW5fcrc4QkrIMtN XM9XAjZdBHmv
HU4nWfmwSK0VD3sYftPcISW6mE18B8o1EJrJz1lyAC8Uxu+2MCRlm3L+fZzV IJc4laiVrS2W
gDRN70aH2AJLmc1xqFC23xIRoq0FDTL92VGi1WmMhh3lUETUsCHHUWgd1hKa CiJVE0oCbcog
s2uOlHArG6yGeS+u5rNnmyIHswwM4oakTptmY8ndx754fNvMFYVeeSnBjVde S5bX4r4Gzw/Z
rIFP2QxB1WUOh6tc54hhxR0Kf6q60Cm01d7oFPqqVzpZU+WdjsBjpIB2q5ln tzO3CQn8JkYS
qDuWSbL2UBOv90+dLZpDWL5O2u6Upu5/JX4kQcmqltVI06uFUTkx7sTbG4rN e6VQU29ux2Mp
mWgis1h2zlGqS6N34bWhpJVIcQ/0aS3MMiZ9hbrS1lxe+waDm8te3830Ugms mgRtWtlJVm3r
u3vVUr7E205Gao23SUFZpTdHZSH/7MRbmxLbXjlTq2y7ltma+EqKbTm2cmnq GxS3Uynu0OLL
8sFyQa5sdSlXfOW/r8gwFJoH/f8AUEsHCOvExFNGBQAAKyQAAFBLAwQUAAgA CABxRj45AAAA
AAAAAAAAAAAAKwAAAEVNRjItNU0yVGVzdC9zcmMvcm1vZi9pbXBsL0VsZW1l bnRJbXBsLmph
dmHFkl1LwzAUhq9T6H84wmAf0MR7S5mMCoPpRP0DaXrWRdsmpKkosv9umn10 m6hX4k04OSTv
+5w3YZNJGMAEYqH0u5HF2ibbPTtt+OZgng+6goWB5uKFFwimUisqK11ehUEY uEIZC8oUFEUp
dYMUq5WrlUGazkreNL+f69RousyeUdj5mbK3S0ussLZXp90Ht9xvqfwNtp/s Ioogw0LWUdug
iXIlIIq2U17X0Ll5OW6lqkGtwK4RKpVjCcozwDDGKomzZOcbsyyJmWsNaW+A df5VPtb7MHUf
4rTAGg23mO+jbLNSCuBZYw13dqKLCXZmXQCAb9bpu14fSs99OAofYUD81OSn scn3yOQMj3g+
oo2yzhbzY6jR2PuRptVoRmMXOdl0sf8JwXT5isbIHE9p/IcCfOzeTvjNnsqg bU0NR3+CLqR1
qmVD00V6m949/QexdK+0w71B7hBxptranlFfHtA2wNhR5mHwCVBLBwgTxPRg ZwEAAK8DAABQ
SwMEFAAIAAgAcUY+OQAAAAAAAAAAAAAAACkAAABFTUYyLTVNMlRlc3Qvc3Jj L3Jtb2YvaW1w
bC9Nb2RlbEltcGwuamF2YcVWXU/bMBR9TqX+B29DIkU02TNEhap0UzU2ELDt EbnObevh2JHt
lFUT/322k+arLeyBlZckdu71PT7nXCfh0VG3g45QRES6knS+0IN8HDYn3OTB JD6wD2G3k2Ly
gOeAZCJmAU1SdtrtdDvmQUiNfuElDjJNWTASjAHRVPD6eyHnARBGUwUBJLOA iCQRPOBC09kq
+GZvlGCbNVpg+i+prtj4kir9XDAQISEYjxhW6vSFqAnXIDlm46vpL7ODl5e1 JARF9KRFyPYM
B7qs0wbvmP0qYmCnzbkbc7nO6Xfx4VrCd/0+msKc8n6mQPZjQVC/n8s55Mji gwS4dsQiMUN6
ASixBZBwqNFhBMkgmg5c1SicDqLQTBwG1fLA483FozS/35n1ZkZw8Uj5HM0A 60yCQlhCVRzi
kzwnY3kSQhGjgz/njPKHyk35xi2NH+agi90qZPGtBw7bUxSa7MKx6yWjMK08 ez4HDhKbwmvn
ZlNGCSLWBKgsg+C3NptTqKZghboIRH+6Hc/R7T3Ht7ebLa+FyHOQvFQKbYpC XAHye66ap7IU
pN8zSntPVu3/Uv/8aglS0hgaWPJGQXBrLUPcYI1KgtGWo5oVg0tqjIyZCr5e XYwv3wIv5XoN
9lNuvpHIuG5h/vifod1maWpsr35iyU0fKP99xskCyAPE73sWb+4/1++RM3zB 4ADVrN4C7W8J
78HFiuOEks+g/boSToD7++vh6Mvw8/j2+BmZ6lFaZpBf9+m2nI2NMx/BhJso BTeQiCX4reMY
CXN4yTGPj53qxVkzuTjeslKi5mrdTI9UkwXyy/hi3iNYAXqGwxMXVarhN07t 6GzQa0jXC6ZY
UVJAr6A6JJZbS265muvwoLXfKqm2tzJ/r9oUjIO1WYvsqRAMMEfG74ItoZqw 37e7VQqvy3uD
5F08Wpg1iCW0EtIb9/8WhpeCxubk2uS3oJ7D4w/Mstdis0FjQIxgxQdm4x2O 4yFjvl/9xkVn
5ZeyeRiVGE/rklUiFercNtVpZO3V1Tnn37lqs74Hkndwk4OpCu6dk3X3wkRt mPF1O/ldkx6q
xkmqV7ubOge0hZonFIblP1O38xdQSwcI1fEUOi4DAADPDAAAUEsDBBQACAAI AHFGPjkAAAAA
AAAAAAAAAAAwAAAARU1GMi01TTJUZXN0L3NyYy9ybW9mL2ltcGwvTmFtZWRF bGVtZW50SW1w
bC5qYXZhxVbfb9owEH4Gif/hqlWCViV5LxkDjXRCYu066F6RkxzUq4kzx6Gr Kv73Oc4PklBU
ugJ9gfjiO3/3fefLmefnjTqcg+Xy4EnQ+b3sJmuzbNDG06F3Gj+YjXpA3Acy RxALPjPoImCd
Rr1RVw9cSOBibqDLaBCigYuZeuYCDfsrI2FY3Kedr8kCPZvhAn3ZKb/6qX5+ JAdpNzMDe9Ju
g4Nz6rejEEXb4y602wnwvg8xHB2OSMp94DOQ9wgL7iED7vxGV0LTwkXXcrr6 cEhPt0yna5nq
RdNYH4O+t3mIFST/ExV3xhnjj9SfwwyJjASGQASuQaB3mfhELHECsBjtPvcY 9R/W/JV4GCrD
pznK2AYx1PhBQ1tZpnJ+a5zbiDA6o+jlAXMLvBTaMjOwlhms9e/N0UdBVEpZ FUQOoy4QJ5SC
KFrdWGGoIgD8KxWNIRRtOT/l/fDcqNe0zrWUXw9nJGISloRFmInZTNPOSGqd VWhqApFSUCeS
aCSxthZNbbvU8ateiFg4JzUWmNBrLjwU6UoRUwsEl6rQFL9hXIYuzKhPGIwV JlUp1/3v9tQe
2Ff9u9EEPoMfseQCvTH1kq4pBy8pewA2KkfvhZbbu/5oeDW0B9MdCPrvDMoY y6iqpas4jQuy
FkYBitaZglBbHQxG72aJQlAPS5CStgk41oTpRYZKoOo3PhTapDGiUkVloREz OJjaI/u7fT05
LO60C6Qirm9kEWMreXuGgyefLKj7DWWriLsEd6r1v9ghsWynFBEmvwfWKM11 yakq4TTTNHEf
H+NlmneW6Hi/iWaHHFnRaqN5h7TlS75b7lWfj5K7TMNa95L9bQWwDzo2EByx TyUE3SRjFcba
U/UVT0eh4eACHM4ZEh/UYMTZEteGeCicPAUZX+Ejle49tHLX1F5zSYjwyhW6 1DuzisxbUGen
AGU6N0JVal/HXBXqX38bDJ16Ie083TzNo4uiqxbHm5Kkaqmy+RVPFnsUIGuJ WU/Ij+gUWX2H
LBuXcIeTVvkX3NBsFJgoeX2AOHd+WJXnAGqUpqnDSbFlfHtFkYSCdZpHVyLr RzgMN+7K/ntT
ZbJNRlv4UhibTlLbJZyUNhv4R9EdtvKde2hvWyfuIq7qx78AcIt/AWrFeWv7 TMh/oQxWYJrV
sbxR/wdQSwcILXCSR18DAAC4EAAAUEsDBBQACAAIAHFGPjkAAAAAAAAAAAAA AAArAAAARU1G
Mi01TTJUZXN0L3NyYy9ybW9mL2ltcGwvUGFja2FnZUltcGwuamF2YbWS30rD MBTGr1PoOxxh
sD/Q5gEsZWMMGYoOfYI2OeuiTROSVBTZu5um6+wUvfOmnJw03/l9X0IXiziC BWRM6XcjqoPL
+zW9bITmZMsnXUHjSBfspagQjFT7VEhdX8dRHPlCGQfKVCmyWmiLKcq9r5XB dLOuC2vH/4XD
j/6z69XCHh2IrpIESqxEk7QWTcIVgyTp6VYNdDNRYuMKJ1QDag/ugCAVxxpU +YzMwTRDmWdl
flLPaJln1Lem6dcAbPhP+UwPIegv88sKGzSFQz5E0Ja1YMA6V3CasfVUgG/O y1q4LyTyTU8Z
Ns7Mtrd+OgQfcUSCbfKXb/I7M/nGRwIg0UY5HwTyMd5sHuYR22o0s7nPnBy7 3P+FYPnwisYI
jhc0/UsAfOouj4XFQGXQtaaB0aNI74TzqrVNd6v17epmcyY+AqUjY3H0CVBL BwjYrUXORwEA
AM0CAABQSwMEFAAIAAgAcUY+OQAAAAAAAAAAAAAAAC8AAABFTUYyLTVNMlRl c3Qvc3JjL3Jt
b2YvaW1wbC9SbW9mRmFjdG9yeUltcGwuamF2YbVVyW7bMBA9y4D/YWIEiJzC 0j1OghiOWhht
FqS5FzQ1ktlqA0VlQZF/LzdZlOwgPcQXistw5s28x1F4ejoewSmc07J65Szd iEuzDvsbevN4
FR+rSTgeVYT+ISkCz8skYHmVzcej8UhOSi6g5GmANGNVjQHmiZyXHINomZG6 nn9kdbf+jVR8
aHZvAHwcVoELoq+EipK/rv4LaZU1KSuCSC3u9dy9o1O+KWPM5v29BznYOHtO XMBhW/Wj2QzW
KAPMmhr5LC4pzGaGgUUBCjrmWAgiWFlAmYDYIOQqNJyvL22s83B9GXTusIh3 nV2lWCAnAuOW
v2adMQpUUQIOcFUgwBchvdTgVq0D07OHv+ORp9PxZJglRxmj1jBjTEiTCUis YT+ZwFx4twDe
++l4g3w8nZBnM6qVf9qDyAom/KlG6gkL2fNcC4nXXV6A7yynrdaCBwm0lh6C 1e3Px8XtMgpS
FG2R/MlGiOosDENFuR6MnCbTOeiILAF/EOnoAoomyyw4z+MoGl4M8Mz12Zsa 9UCJoBvwoxeK
lRYGtrPWj6PcDmtWpn5nOd+6szELfB4KwddWb0qxuxwTqc9CVrug2CrTUn0w bnfgmXTrpkK+
F+snQri6e0LOWYwdHNuqgOqK+Ka/AepPC+2Zaa7MppKLnrCEIV9d+9OWMEpq BKdLBPeL5ffF
t+gMLDsmhj01ue65dXN3Hf0Y3NGdqr1hH+WZUZvY8PJZE7/KMkxJtuBpo57o Vlr+5FHyarrE
yQS+QJfILcklELk1OQFWQ1EKIPBEMhYbe53jpNPZ4aixdOgXZysxrJcps13q dmZ/YL/kY1cF
cI5srWwRW7vDqsumoLnq82aQ64XGbbq/Ab3d7UPO7b/p8Hgd7YGUhLNsgVtI vnM0VU2zp+TP
whljxZFuge59xteuze4/w8lmfybuc8O2t26TeIMwHHSp8egfUEsHCJ0J8pjG AgAAZAkAAFBL
AwQUAAgACABxRj45AAAAAAAAAAAAAAAALwAAAEVNRjItNU0yVGVzdC9zcmMv cm1vZi9pbXBs
L1Jtb2ZQYWNrYWdlSW1wbC5qYXZhzVhtc9o4EP5MZvIftmlnCh1j2q9Nm6tL nJ7nEkiBdPqN
MbYAXY3NWSIp7eS/3+rFtmwM5C4t7Uwmg+TV6tnV7qNddV68OD6CF/AmSJbr lM7m/EyNO+UJ
OfnMC5+JH53jo6UffPFnBNJFMrXpYhmdHh8dH+GPJOWQpDObBBFdMmKTxRR/ JymxXYfzlE5W
nJzuk+xGPmN7pa4Vhr1yAzIlKYkDsh+jsCRX7FXMkra6EVmQmJ+WZ6+SkESV uZ6/IGG9+AD/
XfgBT9J1zZfCruOjTnY+T9ptmJAZjdsrRtJ2mATQbquzcmIQuOVGPqdJDMkU +JzAQqCCN5Mz
rfFNZ3JmF+pIHG4qezcjMUl9TsLspFeTiAYQiCMBA57wDpCvHLUwMF1WgCnJ w/fjo4Y0p7HL
nsZ2dI0KvIbE11im9BYnQEUNELW3Hr2FeBWpUzzE5rFx5r8GgU7MX7O5DLhd W3dTguIMfAzZ
mHEfk3JXsFqQIkzGMX1DuKN8rrR8fxfR+MseWrAHcmm6ho2Ze5is5Z7aWUpr Rmk3Aw9u/WhF
bO2R5Vkv4eS1XIFbpCTgcOejhgQCaY+pCyiDW+rLKSbSMVBapirdYUH4PAkz E57SmHIQ/5qt
ewvu5jSYgx+xBJYknSbpgqnVQoL6Ef1Wym+9pYWeQEfxVRozOW84LRPRaqaQ xAQ3QNjhGrMX
xZj9yKhghDz0KIwVVbZ7SnrDMbreEHmq/LI3+Cqk1GxJqmmwFfqwqdVaYHCu TbzecOT0um4L
47Nx/9PTQwUCTJIkIiL0mYeW4em8xbCIGKlPkiL48acfh0UQEHXM5VwBDBec pjpiZDqpdeKD
H68hwUUpg9USI0hFGsZeSJaCwW2AoeRttVrN4p1JRbKmaAEawKYUMWPqBH6E 0TuTu2UBjTpx
tryaZ+HH0J+IgkCYiHUIBpfiD4LG484jQ0+ILiP1US/soDH6o0Z/SEVaRmsL JXA2RSxEoxG8
oaDm+UI5I9G0yO/+tCSgvI3XV2k34QtLGFnsKr2otMz9WwJxwmFNOFpLYjML Fd3QtOAW5dUp
TRnXJKKiRm5drJTOIcWGYhFqio1YEHEB/C7BICNL9lqfPuF+WzFqMvkbPcNU FCD4MncolRpB
dkp4PhoMDoydLGBUMnacr3/O6vZaIDumoupCjlSa8GyZpHo/lmFY+N6Lb5PA oLUiFO4owhUu
9adTwbkihnPYfO5z6XSNVFOa9LwB+UeQWx01KY/p9OsmGCdY7uRclbOXQrFN rIYwVLGl+cKs
nhQXKmZDGm9mHNLSzA9NQ7q1wbx2xnj2jPDsq7nE1ka2FBk1Oh3oT7iPsYVx o685MzaNu7NR
rQrxgE3ob0vYhESr+UCAGai8WsAQqe72x+YFv0fZa4jJ3ea1kZlu0DNPV6Rw iCLmnCVk4Ic+
97O4F2Jl2+0tcVLo9PIoybMw11ujb0dQFTqv/PSLgQ7rFBqHNBDYkfEDP34u KAqCuR/PZPBV
d5mmhHwjuUodYWWhn3xzqkTQtaQ4RVVUZymgIZWK/QMjMvu7CqzNNuAw2PIO u4pvLAYVkM1C
vLUJWGbOEOM/QGE/usDQXKUEw0x8aL782YXTXoM+rjALREHygy17dSDL8jDK 2KlsQqmNOzAi
+ZhRwWN0dodBkz/a5IjG2lNs47Rz2ZYB87cIYKPpEHYYw6oRxqeWQK5/e/re ax6oUylalK6+
jXb2KKpzry82jSqzUuNnPcps5WN1HYoLSpfPWaknugms9mhRG2Iyy5JclsyP req2ntdtQkPY
cmebtZd2TlZ8naqyoXBZbd0gn9Dk40eo24GpDkohV323UijUsOleuldub5Rd yLXPTKUFPefK
PR8byxoN/T2nxuamFgtK68ZjMfz/qz/eOJfehYdTmR6hqfpCVcJ97XT/cj7k suUHpZLkVf/c
vSxhy2mgaSyzQAqOx1rz8OCJ5Bmt2pZkSkTnrd+Rdj715J1pkXM6t/K+TyXY 75pbO+rXam+j
fVbJsbI3y3lm1NJGd8JU5YDlfx7MYopdY4dKv8qu4HrgXnifjW/YJjQ3GyKd x3y9JPKNAb1N
UpZ/HorOP1mJ93DJf1vEnDAE+TYlBJh8RVTEUJ/Z6h4T8iMhj/eXH4ZN0Sfb ZlmswJdya/fK
cvm6pSMxGCvjqlNALZAsxSFj8KiPppl4SqhBZykpE4Tezw7U8ESPTyzwhmPn /XA0cLojC57g
yOuN3MGF03Xltw9uzx04I6SSrLUbdy+d4TDv2Yota4nJmMs3Nycfh0DvX5Bj ffltgXwXzbos
XaDQeCY+nQjcCEO8mlvwSv7VwRbIEGRv6CHHquGn/qUz8i4Vzu6fTu+D67wX Q/Hxpjd0R6Ni
7J1LsZue9/FGT527A++Tq+b7Axy55w+yqlKD7zbvH1P4t7KzEj+lHLLUQ3Xe zuvQ0eMTpfcH
BW751pLcnu0nR4/cTe9V3JI1hbUFGT3kbUl2UifZ01t+di8taL+qIP0vpyaG /avr/tAb6QMa
uMP+5ScX+bj/2XOHmwf78AMt6Bo5K1mlASkqhYGeMSlelQT30OlU3oWOj/4F UEsHCInmlmZ6
BwAAJB8AAFBLAwQUAAgACABxRj45AAAAAAAAAAAAAAAAMgAAAEVNRjItNU0y VGVzdC9zcmMv
cm1vZi91dGlsL1Jtb2ZBZGFwdGVyRmFjdG9yeS5qYXZh7VdLb9s4ED7bgP8D FygQJYDlH2DH
SBGkQA6bLNoccqWlkc2tJAokXa9R+L/vkBzalPyIkzS3XCyKGs7j++ZBj66u Bn12xSaZbNZK
zBdm6t9H7Q23+eU+/2IXo0G/4dlPPgemKlmkSyPK8aA/6IuqkcowqeYpZKVo NKRQFWkmq0rW
aS2NKNbp15w3BtT4TPEH+xBO/swTKFQGK994ZqRa3+PWKQWQSQXp3ePsX8hM LOjiuyuhgtqM
27t/yxzKzt4DryA/LP4df/7xqDkDo4D8X8Mhm8Fc1MOlBjXMZcaGQ8/C0wLY ZDalWBgFMxnN
pqyQihn8XFkvUid9b1ij5C+Rg2a8ZpxOIbU5TDMF3MDz87NlFt9ZBWYhc6cH eLZgWcm1ZrLo
anX+QZ3ve3ejAfZi81/mUINCe3lIl+WsFBnZsNJtehj8Z9CEZvussd+Dfs9h 1SNAMvQWcu8i
ozxM/eejWPaOB9Lr+NtzDvcQSYO5gIa04QZ9j2L0tmMydx7eOpwdAaLGo3UG AdRASOGj+wCf
Pcr7+CaXDsaeKFgS+86ur1m9LEv63Gt/i0NO4f7hx9PXh9u7sZXc4M+mHfh3 MEtVa7ZaYGKB
TU6hQ6gMl7xp0Dk+K2Gbu2bdbMGRrvTOweTJKrY17qoMuZE1U2Tc57pRSwhp LmL11g8Q5B7R
eKFDEmFXcI7GzPljnap4iRnvzR9B4gDLN4+/QCms8h3jMylLsH5rIvybVE+o Mnkk/90jSgKK
C+mPKQ9pQP5bGLdsx8cCPOgwtczOySQJ+2Q5hVtb+sllOgdzR+YwKzsO7KyR ooKX2u12ks32
Ab0SBvuWWXDDUAXMXd0Z6UA82fT0R7YLWzQ/nGsTKsKpj9FvsmsbXg2rQ4Kh Tlsc9wLLYQxk
XAPNmISebYa38Pn4SYaOJ5cOZQ/zy4biiZbELydNxoJvsxtyxM2X0JJOmSSZ t1lzszxxvyeN
OInXm8ih4MvS3KKlUBmnGfMyhwxtjs+b7XyhpkLNkCusOSqA9yZ+wxWvmFcZ 91WsOmc9dK3Q
QeKp96JX5/W6LW0u8ABRuCWSbwQruRGVX5pLv9i1KDqx7TIH0WW2YuNQEO/d cPD3movfN6Wo
f7bujGwC1ZTWkxGuNxdnzzjKmmOzzg5upqVvgCt7L6rxJqdFiUNmXuN91mW2 HnuNwuCgQ0PF
srRskQR3MnZS2aGHw0r4ubcSqDvjtl9xXJkFKcOw1yu+Pn8G2pMRdIHp7c2R oHnpStMmvdtY
WmRbWA5MjLcz2Wp6lk63wT5JPUpqjNjrmD04Nz6W3jBbLLO0/uR0n9Pt37vX 0NmdyR/LpB/f
lke3+mRxn0UHzOs4bF953segdS/AbAP8k9y8G6Rzh0/nbnYckQ0bjfb/iw/6 /wNQSwcIrD+p
khAEAAB0EwAAUEsDBBQACAAIAHFGPjkAAAAAAAAAAAAAAAAqAAAARU1GMi01 TTJUZXN0L3Ny
Yy9ybW9mL3V0aWwvUm1vZlN3aXRjaC5qYXZh7VhbT9tKEH52pPyHOTqVcBBx zjMJaRFYR+hA
WpU88FZt7Em8xTfZ66Ko4r+f2YuTNXFIoDTqAw/Aendmduabb2dnGRwfdztw DKMgy5cFX0Ri
rL8HzQk1+eEq/CAHg24nZ8E9WyAUSTb3KsHjYbfT7fAkzwoB39kPpia9a14K eyUrFh4GMc9L
9DCZ0zgr0PMvYlaWw11Sn2ffMWiYU7v7MSaYimFz9iYLMX4yN2EJhu3iX+nX Fx2T2mBQ4/JX
vw8zXPC0X5VY9MMsgH5fYzSNEEaz8e0DF0E0GszGMM8KEDSbyM2PSuBphAUX LA0QIo4FK4Jo
6SnlKwFllUsHSqUSsDiGn59int7D32Gmjbom5h6sZjI98aiMiIy2+JHdozJB OQxxHLAS7+7u
ZALpCxIUURYqz5AFEQQSasjmaz9PlKlSsELwdAG0TaQWWSAqFjcV9O5KgaUh 5EUWIIZSrcqV
QGvESr5KiRDAIM3SflpRsAWWVSyAlzQSVZFiqD15iDj5yTUsRshsXyoMvHVm MA038/KpRNzI
ql5ZYEo+CQxrGlezmAcmRiltkjkdw89ux1EscEyqA4IPQ40Z5LVV5zmSONv9 dJ644yh/HEJU
EMK0DyVEkGtWCHprm6VrBy8KJDslZYVSUGr8n4L21q5q7NaouT0FmsPn4Nqu wtkZyIybZae5
Zkfo4dXkdno+ufCHUpJILn8acdIxKduZ/gzFDfmyFA3XSk1EsIg4BC5gyTEO JfOYMNO/ipve
T7ky50UpNvhfkx9mS3KqNTJZG7xdeZjC06ohN10VEAW9cWYluBbwUNVgt3di aw3fE7BPAlZn
1s6BwlOBqUYnsDUr8rys5CgRWSoYp03oPNHJsU9LfYLa8qi1FyjUgM+p+F5d tuRTnSoH4xKN
MXlHj7T6GPC2yrGYLnOqJWfQsOuvl1xtyfihho6l6fHST3KxpAA+6kUnxDkj sC8IV9cG4LRe
r0OxzdCm7j9bInin5atoyVOhcTAEeYaW+t4A1xavCSgdaRRu/9q/8SfTU7Pu mC4L0Pw9A9dM
9dYbaRI50zrkM5B2jZxrVA3V1Cmp5er7ZKW3hV5G1WBt8qnmHtvDmJzf+Jff ngZj942Q2h8U
lr24MzZb2LUt7RWljc6Lld8Koi/nF/+d/+uvwFGNVn2bm7bomwTGXtgJjJFz awN749FA9MXa
r1J8KyRvPl/61ysc1YPFlCVCT33uhE1J6Wbrd7pu1E6hvnieMdNSnL+a2tps 6KkUYZGTRfl8
WD8ugG10sUcjTMYmVaMBjY/2qb7TiN4Q9MbTetRMZ+mqyktYhlpMT0kfNt8m D5zG5GXCUyqt
W7rpLQU+ZwVL6pikJj2w6EJr7crt2+BNAVJPofVz8tmHdW+jgezt7jntQ1QX xayl5awB/x3M
UCUA3vnxapgOwpJGoW7cqIfmi6m/70x5CUAH4UjdBTR6ikPTQ92p7+TYH56D UEN3OrpJOjQj
jKd/BidOYFbJTMsddFz0PhMKI3J++cCWfyJr2iB8EW/2+PeX1ZTWj9qdTHmE wWD9H8xu539Q
SwcITpTC9ogEAAAQGQAAUEsDBBQACAAIAHFGPjkAAAAAAAAAAAAAAAAdAAAA RU1GMi01TTJU
ZXN0LnRlc3RzLy5jbGFzc3BhdGidkEFLAzEQhc8V+h+W3DtrBcHDrkVkhRZa pV17lTQZtqPp
JJ0kYv+91VoUoR68zRu+ee8x1eht44pXlEieazWEc1UgG2+Ju1o9tneDKzW6 7p9VxukYg07r
veh9K+Qku+KF2NYqilHFx/IwlqdJ4/lIeukAjaMQEZ5tAqczm/U+HSbz5un2 ftbejGfNvPzN
EScU1g4srnIHmb4uUWCRNFstdjltdwHLycWiGQzh8h+FgkUwXhAEt5kE7YPL HXH8y8rnFHI6
uq2IP+Gq/PnAd1BLBwhjc8zAzgAAAHYBAABQSwMEFAAIAAgAcUY+OQAAAAAA AAAAAAAAABsA
AABFTUYyLTVNMlRlc3QudGVzdHMvLnByb2plY3S9Uk1rAjEUPFvwP8jeTaxQ 6CHugrbeVgra
H5AmzzWy+SDJij+/Scy2LCJ4EC/hzbyZzMsjpDrLdnIC64RWi+IVzYoJKKa5 UM2i+N6tp+9F
VY5fiLH6CMx/gGNWGB/UgR0RRSWUn/V6Pn2r5ztwHvlwOIJTIyqYlhKULwnu q8jm61wCeIB+
OtHyrQEWUYarYKWKJyaHatsgYK0wDtCRe8S0DQU90WQA+z9CcFDbdDHbZYyH BMFXKXflGg6o
pkrsw5uXz43dsgNI+pDQzPQrD3m+s5DVF3B725d+HCDpbnniyF9t1wi1uTL0 dUz8+wvDj/YL
UEsHCC6xpvjxAAAApwIAAFBLAwQUAAgACABxRj45AAAAAAAAAAAAAAAAJwAA AEVNRjItNU0y
VGVzdC50ZXN0cy9NRVRBLUlORi9NQU5JRkVTVC5NRn2RP0/DMBDF90j5DlnY iEUrweCqA6Aw
IIIqiliR61zCgf+Usx01/fTESRVSCbFYtt673707l8JgDc7nb0AOreHZgl2l yV0wlYK8PKmT
uJykZ6GBZxd7FRo08TEp207vrEI5OoryYfl+XS5fewzz/eFWDk2jwPe8tafw WziPMAtxr4Rz
G+E/eMZmXlNZigHItlgBnUV4slIoPAo/4MaMk/gC3wEJquIAMkRHYVokazQY z7NH0YptkS/Y
TZoUh70ln2+E/BJNPwtpW48zpMmJko9QnllqGEiFewdMWgJGwXjUcJkmZztY tehwhwp9x9cE
MLSIpjkAdN3fI+Wg8d+Kz2Dwb+Y076302A6r2MRv6XimxLFLkx9QSwcIxfyE uxUBAAD7AQAA
UEsDBBQACAAIAHFGPjkAAAAAAAAAAAAAAAAzAAAARU1GMi01TTJUZXN0LnRl c3RzL2Jpbi9y
bW9mL3Rlc3RzL0VsZW1lbnRUZXN0LmNsYXNzbZHLTsJAFIb/gdJKqdwUvK1M NIGS0LgzwbAh
4qZxA2E/4IBF2ia9qI+licbEhQ/gQxlPh0pATZOZc6bnfPOd9vPr/QPAGQ41 ZBjqgetPrUiE
UWhdLoQrvGhIiQaFYX8ee05kTQPuigc/uLOSNz0eCgZt6jxGcUBR0ZaEtLfD oF441NVlqDXs
Ob/n1oJ7M2sQBY436zRHDErPvxE6sigY0LCVB8O2gRxUhpLteOI6dsciGPLx gvBV25/wxYgH
TpKnh0p064TkZ/8vTxKKR85J9x8DBj0UUf9Hv9LY9E8E9dlaQbnR/D2hPvDj YCL6TuJSXru4
ndymHNNAWfrEZJFMRVGWYpqU1jxlV8jQAxTM1ht0k73CeKY0gyKtRdl6Qo1H 0HGKEmX1ZTnK
qAAyqmJH4ndRS6HdFKqarQ2eLk/bxLPWWOqKpUrFhFXHXsqyaGe058wXGE8r lCoPzyXGWBak
GPoVsurgG1BLBwixDeCLZgEAAF0CAABQSwMEFAAIAAgAcUY+OQAAAAAAAAAA AAAAADEAAABF
TUYyLTVNMlRlc3QudGVzdHMvYmluL3Jtb2YvdGVzdHMvTW9kZWxUZXN0LmNs YXNzbZJdU9NA
FIbfhTahaWgRSsEvFD8gTZWA4o11mHHKxzhTq0ORC7la6lKDbcJsUsF/pY7f F/4Af5Tj2W0s
LdOb5OzZc57znjf58/fXbwBreGRijKEgO+GRF4sojrzn4RvR3qPQRIph/rgb +LF3JHlHnIby
naduqjwSDOaRfxZ3JUV2TffrzgpDqsP9gKHoHNSO+XvutXnQ8hqx9INWpbRP 91UqtJDFpAmb
Ya43IhZE8zV/txsEQtrIIc8wLrsEKzgDrGqbR5FG5Wt+IOrdzqGQe/ywTVqm a2GTt/e59NU5
Saa4bEUMMyMEMRhPfJq/wTDrjNJrYRxzNgqYzYDhso00DCLGb30iFmujnFMe BGSYUjNioBWJ
ePu/d3ln0Dy1k9UauM45pWFz09T86oRscXTt1llTnMR+GEQmlmjD83H9mwwc uCZKDFOatEuP
bd6MQ/nBRhn3GDLiWb2x97Re3VKKLxZVsgRYseFhkSHblILHQquxyI81Gwu4 wTARCy43w1P6
VFYj7Mqm2PaV87m+KStKGhapZ5z+PHJIGUmRgQxMTFAmQ6d1ejOVnWY/YH2i aAxT9LToDSxR
zzIuUWT3qjCNGU2jz5MQdqhS1Wbd8ncUXfYV8+eYnB6+SpgFQq5pVLFXjiu4 CujoGq5rgbRZ
At1IoIZbHuL1ZD0mXmWAZfRZhl5SsW7q1RXLS1ZMu18w/7GPMnRyc2C7dIJJ 4RZuU9UdHTPc
1ZgKZVTVpPsZyz9xn+EbVi8qe0GolwPIyT7ywQjkeoI0XDaC9ZoEHQyZ32Mx PNSV6/8AUEsH
CAPejqxVAgAAVQQAAFBLAwQUAAgACABxRj45AAAAAAAAAAAAAAAAOAAAAEVN RjItNU0yVGVz
dC50ZXN0cy9iaW4vcm1vZi90ZXN0cy9OYW1lZEVsZW1lbnRUZXN0LmNsYXNz fZBLT8JAFIXP
lNJCrfJQUEEWLkgEExvdYtiorBo2EPYFBhxD26QMxp+lidHEhXHtjzLevgyB xE4yc+fMOd/c
6ffPxyeASzR0KAz1wPVnluRLubT6jsundwvuck8OSdGhMlTXDGtnDNq18ITs MlTO7Afn0bEW
jje3BjIQ3rzTGjGoN/6UG8ggbyILjaFgC4/3V+6YB0NnvOAMZdufOIuRE4hw n4iqvBdLhob9
T2sdsnmkhYityxmMOZc98SRXAQ/7a8WodUgnD4Z9EweoMOiz1LsXO1OTjkOG 0laYoZgyU6dB
uJqJIkp0+8BfBRPeE+FrKputX4T9qqfkzyD8MlTR76FZp10XCg1Aa5+/I/dC lQKDZiNSa+Ss
Y4eqauyCid2IomEPBWKoYQsJ64pWRmuu/YryF6rPfzQt0psRyYw9Mal4S/mj JN9M8tn2G443
wywKK1FVj6qTX1BLBwgiQphxVwEAAFsCAABQSwMEFAAIAAgAcUY+OQAAAAAA AAAAAAAAADMA
AABFTUYyLTVNMlRlc3QudGVzdHMvYmluL3Jtb2YvdGVzdHMvUGFja2FnZVRl c3QuY2xhc3Nt
kttPE0EYxc9A222XLZRy1aKICi5FKWC9LiExhRqTpjFQefFpKENdbHfJ7lTx v1Jj8PJgfPaP
Mn6zHevSdB/meuY353w7v//8+AlgE08NjDDMBh3/pCRFKMPSS958y1uiQRMD CYZCbK/OO+J4
ry06wpNKwJDocNcjgP26dsrf8VKbe63SgQxcr+WsHtJ+xT8WJjIYM2AyzJ12 PVcS7Vx23ZJC
7Hc9TwQWLGQZRoMuwabtGKvS5mEYoSZqrifq3c6RCBr8qC0Y8jW/yduHPHDV XC8meNAKGaaG
GGJIbbt0/w7DjD3Mr4lRzFjIY4o48o1LnPna8NoQLOFROZSLIReZLSGrLqUM SJGzV3sUfd7J
gOGahetYZDBO/snGeyJdX8fAEoMVP8eQDIV8dUaFslVFzL3zpjiTru+FBlYo 838j/Z0MbBQN
rJKLCLVPTZU3pR98sLCGuwwZ8aJ+0HhWr+ypLIMiZ4wA6xZKKDBkm4HgUmg7 JqXYtLCF+2Ql
jOWdtC8nUV7TUvBg13/vqdrrcsSfk6NojyxcVfeYB343aIqqq35oLlb1dZUQ SyQdhfpS9LKS
1FIZaVamnqnVPPuG9CcajWCcWpN6oEDKBUzQyOqpkMMk9Uz9b03YIaXSpopr XzE9SFgmwkpE
mO2pqJ/TPuZxhRgJ5V+ztrSbdPELFn7hxsc+LRWtb8S8pDUpgZu4Rarb0ZjR jYrk0IpSZYuf
cec77jFcYGPQnEOo7Rgy20eWhyDLGpkqsiGsKgV9fqlUESu3S/Ee6HjLOl6y eIGHg9lYdHgk
Gj2ORk/+AlBLBwhbju3nWgIAAHMEAABQSwMEFAAIAAgAcUY+OQAAAAAAAAAA AAAAADQAAABF
TUYyLTVNMlRlc3QudGVzdHMvYmluL3Jtb2YvdGVzdHMvUm1vZkFsbFRlc3Rz LmNsYXNzdVFd
LwNBFD2j1epaHy1KfdZnisSSiAcViUi82HhohYinwaip7W4yO4ufxRMh8QP8 KHFn24iwNpO9
986999xz7nx8vr4D2MBCFl0Mo6oVXDtahDp0auTued6xCbJIM5SakS+1c614 S9wH6tYxqXok
tWBIt7j0GYqVc7fJ77jjcb/h1LWSfqO6fEL5/eBKWGDI2bDQy9AdthvHKstu Em7VQh8Gsugn
Uu28Fg86knGyFvm+UDYGkWdIqYgmb1aSYZLRayKMPF1lGHClL46i1oVQx/zC I0IFN7jk3glX
0sSdyzRXjZBhKEFdD0YZLLOscrwqI7JkYxwTDJkdSbN3GUYqyWuZSGQX75QW kEKJRusbSaNL
7j9PQyLSPnUb5n9mELN6EKlLcSCNjPzPxjVTjVmim4L5UsihGxmKsxRtkWVk e17MsU+fyO9C
gf4WWWCSqqYwRJ7drsMwRsjmzPN2MLYJ0+TsN7CzQvEZY4crj79wFskufeOY O4uwQT5tsIOz
S7emNrOy+oyp30wcYr0eIxTbVZjGTKwog3Ksj2Eu7pn/AlBLBwglamRAnwEA AO4CAABQSwME
FAAIAAgAcUY+OQAAAAAAAAAAAAAAADMAAABFTUYyLTVNMlRlc3QudGVzdHMv YmluL3Jtb2Yv
dGVzdHMvUm1vZkV4YW1wbGUuY2xhc3OdVwl8FFcZ/79swmw2A4UApaG0LJS2 yebYCmIh4SgN
iV3dJJAEKNDaTnZfkoHdnXV2libYWtRWba1aTwSttV6xXgVqE5Yoar2rVsWz 3vet9VY8iv83
u2E3m00TJT923rz3ve997//9v2Mee+rUaQDPwDkNZQIX2nGrP+jIlJMKdnPY NmTEkzGpoVxg
/j7jgBGMGYmBYFffPhlxBOZsMBOms0nAU1u3U6C81YpKHzyo1FGBOQIXhM2E 7EzH+6Tda/TF
pEB12IoYsZ2Gbar33GS5M2imBC4Klz69hRJxw0zQvNq94bwVPY5tJgZa6nZq WCCwxrIHgjIS
M5MpGZTxfo4tWwZtmbLSdkQGTaoKdufeeqQT4rsP81FZhUW4UMNigcAMKgp2 61iCiwSWDkhn
YrbdiDiWPdwtB8yUYw8LbKitC89S46rc5lUTu1uqsBTLNFwssO7/1aHjElxK WGlj25AjEynT
SvRaOakOIymwgBa6eKYdMxbkVIsXfgER0LBSYG3pg4fiZhbM6ztCRXfPYrpC YXo5rtRwhcDc
Sfp11KKOdEmmyZ51teFiSrVMnambOqU8Vq+jAY0kFG+3zYjsNwZkHvn6aZFv y8nmgfYiKLBk
0HGSzcFg0GWg+mly5SsZGWs0rCb73RXFypwGHc/EWoFKGers6d3S2dqmyF0s RFOvVkCsE7hy
lgZVohkbNLRMCrie4ZQj4zo2QgWbpdBbnMXFtILbGAYOg0Eacd7mGoHNbQlH 2n7DH6NGv9Xv
7zdj0p80nMGU37L9O7pDKb8zaDj+QeOA9EcsSiccCu+XfhWJzT5ci60aWgUW ljhDRxvaBbSk
mooxKhfXlgpKL65jApjAtWO4SWHjw3MQ1vBcgeXFcESseNxKZJlCC3V0oJPw RnikIzlBPpY6
Z4qfi/S4ZNmmYzu6BeZltU2wViBcO+P+WcdwSyV6wVy0o5AsucBQZNk1iSC5 BZrXi9069mAv
YyVrXo4RVEMauxsm2OTFjXR/v2VV4SYYGm4W0AsFdPS5rklJp9OISy+ifDGa +ppyW/p1DCiB
+RTYnjZiZr8po0qyCib2a9g3LU2n3FZHDHGBKoZfa5ZAzOCXl4i7QjzbwiQk r2zh+RqYf1bM
KKzDBhV7jGi0iGgT6WGPsj2t4wBuYZ1IkdECtbXng6Mr7TDZ5KKjKNnV7fRh GC/QcLCA6aGu
tqGITDpMljpudatYMkt+YtxrGxFWwxcS9wn5dsaWD7fhkKp57Wr0Yh0vwR2s jmZKLbrVcY9a
eKmOl+HlVEjQtvSlrFhaOdsZFFhUWzeV2ypY7tbxChUHOWoofSSl4vQrdbwK r856IE/ojpkJ
vWf2jNbwGubGYsOuTZuxqLS9eB3ZFbaMqIz6fbgXh9TPG3Ucxpt4eSOZlAk6 rbGU06ZcNqez
Rak4quPNCiavY2UXFWHu0/FW3M9Jk6nNYOiobqCweoVy86TXA3iHhrcz3Kau 6ngn3kWeJOSQ
Uwx7zjgNIwKXTJOtszKVeBDv0/BeMq20nHvmVtMYSFgpx4yYBrn0fnyA5uer RWAaN0zdS1Qe
xEM6juE4NRxg3EbJBYHQVGdPMnOG7Jg/g5g9jEc0fEjgitnt0DGKsSz5euQB aZvOsMvzkBcZ
AfggMK7jw/jIRPjktwpsfHqSFthVqrAo/35Ux8dUiGmDRqqTrvTiUWa1bbbF fjLuj5GTlCUp
P6mi+1Ps0/J6utMJx4zL80FOMhj2AHPMwhK9JW9o55s+gYbZhg6ludlrnw/M 2QcdDbIti4fN
m5z8Va+RNzpf/gsSFmWEyf8sluX9buqZFy7MU1z3pG1KrJgxSxBbOdHmL5+B ZgK+aIF7Z+1d
gWXh6R3TotqQ7+r4nqpYFS6JFE1/oOOHKjv4SL0OmUoRGjX9Yx0/wU9zBWmQ ycSWRKl6UorI
VZ+f4z4NvyA2k1d8+BV+o+HXkxsvlwc6fovfERGGXlp29TNKZpXUWK+fFCjz u9nxjyox/qko
H57vYqbLh6qKJKKsrqp5KEHPioi6K9HoyfbhrtPnF3w8NalNLFehRELarTEj lZIpDf8UuPTp
+1GSd6Ij1fAfgeD/+BVCtHIjfg+QdlD/PBzxw5C/Gt+CfDJXoCIwBu9xDsqY N+AuA5ehir96
VoDPuXxWYh4uyG4u249yvkNsHsf83WMEpz6DhQIZ1BCp5eNYwcnLMljlwS6u BDjZdAJXZfAs
TgROH0X3Cayv3jyKLfXVzz6JUAZdZeg4gZ4MrhfobKy+IYPnlaGxOpKBLEND BqzSjRkkyrCr
gVtFBo4HI3i0o2EUQyM45dk4gofGcdvuwLLVY7i9s3EULzqCuXzceRJ3jaAy 4FnNc5rL62vK
yzO4x4PmCuoZx727q187htfXlI/iDaM4QotqKtzTMniLQLM2gkCNlsHbBDPe u5vnnMB7auaM
4oPN3hpvBicEjsBX460+eRKnlNhpgaPnzoxgRV77x4u1j+ITd5SJZYHTD5zb fpygX8M253Y2
QsfEIrGEKTPrhruxkr9N8GI1FmINFrOFXcbxSqzjR9x6BPid0sjxGmzi72Zq 2YIwI3YHWnEj
tkLyM8FGOzVfh0MIsfPpwj1sdg9T4hj73XHsxRn2pE/iZpyFITzoEz7cRAv6 RQ0GxFXEYC26
xCY2mooKB0kCuhufxmf45hVX47P4HMkQpgWP4fO0egdt+gK+SJYdIjkex5c4 dxcewZfxFY4O
s384g69y9RjuxNfwdcqM4wZ3bwWtuBjfwDdJvrNYgG/hCZ5Qw/s+jm+79GMl y7H2fu4r55Nk
WV8/iu/wEcjg+4IFcQsHP1KO+xkpNIJVjTm3PdzRoDxRfxK/pC+qfz+KP9AX 9FhjzmFP5Nm/
lCYAt/CoIcI+zI/cgwR0mNe81YXB74ZSh2si3NGf8Rea1oAl+Cvnyvj3N1fb 3/EPV5+Hn6Bn
8a85lfg3O+Wn+FzKEd//C1BLBwj38W5YnwgAAPwRAABQSwMEFAAIAAgAcUY+ OQ
Re: Previously "Re: CDO: Reflective Feature Delegation required - but how to invoke not generat [message #423425 is a reply to message #423424] Tue, 30 September 2008 13:12 Go to previous messageGo to next message
Ralf Buschermoehle is currently offline Ralf BuschermoehleFriend
Messages: 27
Registered: July 2009
Junior Member
Ed,

you generated the code with the fixed generator template guard?

Greetings,

Ralf

Ed Merks wrote:
> Ralf,
>
> I was able to get the following to work in the generated RmofExample
>
> Resource resource =
> resourceSet.createResource(URI.createURI("http:///My.rmof"));
> rmof.Package root = RmofFactory.eINSTANCE.createPackage();
> root.setName("foo");
> root.setQualifiedName("a.b.foo");
> resource.getContents().add(root);
> resource.save(System.out, null)
>
> I've attached the generated result.
>
>
> Ralf Buschermoehle wrote:
>> Ed,
>>
>> see comments below.
>>
>> Ed Merks wrote:
>>
>>> Yep, it's a bug in the template guard for generating the
>>> eStaticFeatureCount method:
>>
>> [...]
>>
>>> (Note the missing ! on the guard.) Please open a bugzilla and I'll
>>> commit the fix for it today which so it should be in today's I-build...
>>
>> Done.
>>
>>> As a workaround, delete the eStaticFeatureCount method from non-root
>>> model Impl classes.
>>
>> Hm, just tried but still get errors (see modified, attached file). The
>> log says ...
>>
>> !SESSION 2008-09-30 14:03:24.281
>> -----------------------------------------------
>> eclipse.buildId=I20080918-0100
>> java.version=1.6.0_07
>> java.vendor=Sun Microsystems Inc.
>> BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=de_DE
>> Framework arguments: -product org.eclipse.sdk.ide
>> Command-line arguments: -product org.eclipse.sdk.ide -data
>> C:\Users\lobe\workspaceM2/../runtime-EclipseApplication -dev
>> file:C:/Users/lobe/workspaceM2/.metadata/.plugins/org.eclips e.pde.core/Eclipse
>> Application/dev.properties -os win32 -ws win32 -arch x86
>>
>> !ENTRY org.eclipse.emf.ecore 2 0 2008-09-30 14:03:30.000
>> !MESSAGE Both 'testEMF2_5M2' and 'library' register a package for
>> 'http://www.eclipse.org/emf/teneo/samples/emf/sample/Library'
>>
>> !ENTRY org.eclipse.emf.ecore 2 0 2008-09-30 14:03:30.000
>> !MESSAGE Both 'testEMF2_5M2' and 'library' register an extension
>> parser for 'library'
>>
>> !ENTRY org.eclipse.jface 4 2 2008-09-30 14:03:55.171
>> !MESSAGE Problems occurred when invoking code from plug-in:
>> "org.eclipse.jface".
>> !STACK 0
>> java.lang.ArrayIndexOutOfBoundsException: 0
>> at
>> org.eclipse.emf.ecore.impl.BasicEObjectImpl$EPropertiesHolde rBaseImpl.dynamicGet(BasicEObjectImpl.java:155)
>>
>> at
>> org.eclipse.emf.ecore.impl.EStructuralFeatureImpl$InternalSe ttingDelegateSingleData.dynamicGet(EStructuralFeatureImpl.ja va:1953)
>>
>> at
>> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eDynamicGet(Basi cEObjectImpl.java:1045)
>>
>> at rmof.impl.NamedElementImpl.getName(NamedElementImpl.java:67)
>> at
>> rmof.provider.PackageItemProvider.getText(PackageItemProvide r.java:81)
>> at
>> org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider .getText(AdapterFactoryLabelProvider.java:374)
>>
>> at
>> org.eclipse.jface.viewers.WrappedViewerLabelProvider.getText (WrappedViewerLabelProvider.java:108)
>>
>> at
>> org.eclipse.jface.viewers.WrappedViewerLabelProvider.update( WrappedViewerLabelProvider.java:164)
>>
>> at
>> org.eclipse.jface.viewers.ViewerColumn.refresh(ViewerColumn. java:145)
>> at
>> org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(Ab stractTreeViewer.java:932)
>>
>> at
>> org.eclipse.jface.viewers.AbstractTreeViewer$UpdateItemSafeR unnable.run(AbstractTreeViewer.java:102)
>>
>> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
>> at org.eclipse.core.runtime.Platform.run(Platform.java:880)
>> at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
>> at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:17 5)
>> at
>> org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(Ab stractTreeViewer.java:1012)
>>
>> at
>> org.eclipse.jface.viewers.StructuredViewer$UpdateItemSafeRun nable.run(StructuredViewer.java:466)
>>
>> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
>> at org.eclipse.core.runtime.Platform.run(Platform.java:880)
>> at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
>> at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:17 5)
>> at
>> org.eclipse.jface.viewers.StructuredViewer.updateItem(Struct uredViewer.java:2041)
>>
>> at
>> org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem( AbstractTreeViewer.java:827)
>>
>> at
>> org.eclipse.jface.viewers.AbstractTreeViewer$1.run(AbstractT reeViewer.java:802)
>>
>> at
>> org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator .java:70)
>> at
>> org.eclipse.jface.viewers.AbstractTreeViewer.createChildren( AbstractTreeViewer.java:776)
>>
>> at
>> org.eclipse.jface.viewers.TreeViewer.createChildren(TreeView er.java:634)
>> at
>> org.eclipse.jface.viewers.AbstractTreeViewer.internalExpand( AbstractTreeViewer.java:1578)
>>
>> at
>> org.eclipse.jface.viewers.AbstractTreeViewer.setSelectionToW idget(AbstractTreeViewer.java:2456)
>>
>> at
>> org.eclipse.jface.viewers.StructuredViewer.setSelectionToWid get(StructuredViewer.java:1680)
>>
>> at
>> org.eclipse.jface.viewers.AbstractTreeViewer.setSelectionToW idget(AbstractTreeViewer.java:2864)
>>
>> at
>> org.eclipse.jface.viewers.StructuredViewer.setSelection(Stru cturedViewer.java:1636)
>>
>> at
>> org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer .java:1104)
>> at rmof.presentation.RmofEditor$5.run(RmofEditor.java:766)
>> at
>> rmof.presentation.RmofEditor.setSelectionToViewer(RmofEditor .java:770)
>> at rmof.presentation.RmofEditor$4$1.run(RmofEditor.java:718)
>> at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:3 5)
>> at
>> org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchr onizer.java:133)
>>
>> at
>> org.eclipse.swt.widgets.Display.runAsyncMessages(Display.jav a:3825)
>> at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java :3449)
>> at
>> org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.jav a:2382)
>> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346)
>> at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:21 98)
>> at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
>> at
>> org.eclipse.core.databinding.observable.Realm.runWithDefault (Realm.java:288)
>>
>> at
>> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:488)
>>
>> at
>> org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
>> at
>> org.eclipse.ui.internal.ide.application.IDEApplication.start (IDEApplication.java:113)
>>
>> at
>> org.eclipse.equinox.internal.app.EclipseAppHandle.run(Eclips eAppHandle.java:193)
>>
>> at
>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:110)
>>
>> at
>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:79)
>>
>> at
>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:370)
>>
>> at
>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:179)
>>
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>> at java.lang.reflect.Method.invoke(Unknown Source)
>> at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java: 549)
>> at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
>> at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
>> at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
>>
>> !ENTRY org.eclipse.jface 4 2 2008-09-30 14:03:55.703
>> !MESSAGE Problems occurred when invoking code from plug-in:
>> "org.eclipse.jface".
>> !STACK 0
>> java.lang.ArrayIndexOutOfBoundsException: 0
>> at
>> org.eclipse.emf.ecore.impl.BasicEObjectImpl$EPropertiesHolde rBaseImpl.dynamicGet(BasicEObjectImpl.java:155)
>>
>> at
>> org.eclipse.emf.ecore.impl.EStructuralFeatureImpl$InternalSe ttingDelegateSingleData.dynamicGet(EStructuralFeatureImpl.ja va:1953)
>>
>> at
>> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eDynamicGet(Basi cEObjectImpl.java:1045)
>>
>> at rmof.impl.NamedElementImpl.getName(NamedElementImpl.java:67)
>> at
>> rmof.provider.PackageItemProvider.getText(PackageItemProvide r.java:81)
>> at
>> org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator.ge tText(AdapterFactoryItemDelegator.java:90)
>>
>> at
>> rmof.presentation.RmofEditor.setStatusLineManager(RmofEditor .java:1709)
>> at rmof.presentation.RmofEditor.setSelection(RmofEditor.java:16 88)
>> at
>> rmof.presentation.RmofEditor$6.selectionChanged(RmofEditor.j ava:879)
>> at org.eclipse.jface.viewers.Viewer$2.run(Viewer.java:162)
>> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
>> at org.eclipse.core.runtime.Platform.run(Platform.java:880)
>> at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
>> at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:17 5)
>> at
>> org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer .java:160)
>> at
>> org.eclipse.jface.viewers.StructuredViewer.updateSelection(S tructuredViewer.java:2062)
>>
>> at
>> org.eclipse.jface.viewers.StructuredViewer.setSelection(Stru cturedViewer.java:1638)
>>
>> at
>> org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer .java:1104)
>> at rmof.presentation.RmofEditor$5.run(RmofEditor.java:766)
>> at
>> rmof.presentation.RmofEditor.setSelectionToViewer(RmofEditor .java:770)
>> at rmof.presentation.RmofEditor$4$1.run(RmofEditor.java:718)
>> at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:3 5)
>> at
>> org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchr onizer.java:133)
>>
>> at
>> org.eclipse.swt.widgets.Display.runAsyncMessages(Display.jav a:3825)
>> at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java :3449)
>> at
>> org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.jav a:2382)
>> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346)
>> at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:21 98)
>> at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
>> at
>> org.eclipse.core.databinding.observable.Realm.runWithDefault (Realm.java:288)
>>
>> at
>> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:488)
>>
>> at
>> org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
>> at
>> org.eclipse.ui.internal.ide.application.IDEApplication.start (IDEApplication.java:113)
>>
>> at
>> org.eclipse.equinox.internal.app.EclipseAppHandle.run(Eclips eAppHandle.java:193)
>>
>> at
>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:110)
>>
>> at
>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:79)
>>
>> at
>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:370)
>>
>> at
>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:179)
>>
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>> at java.lang.reflect.Method.invoke(Unknown Source)
>> at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java: 549)
>> at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
>> at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
>> at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
>>
>>
>> If this is fixed with the Guard Negotiation in the Integration build
>> today I would not need a workaround ... ?
>>
>> Greetings,
>>
>> Ralf
Re: Previously "Re: CDO: Reflective Feature Delegation required - but how to invoke not generat [message #423428 is a reply to message #423425] Tue, 30 September 2008 13:53 Go to previous message
Ed Merks is currently offline Ed MerksFriend
Messages: 30804
Registered: July 2009
Senior Member
Ralf,

Yes.


Ralf Buschermoehle wrote:
> Ed,
>
> you generated the code with the fixed generator template guard?
>
> Greetings,
>
> Ralf
>
> Ed Merks wrote:
>> Ralf,
>>
>> I was able to get the following to work in the generated RmofExample
>>
>> Resource resource =
>> resourceSet.createResource(URI.createURI("http:///My.rmof"));
>> rmof.Package root =
>> RmofFactory.eINSTANCE.createPackage();
>> root.setName("foo");
>> root.setQualifiedName("a.b.foo");
>> resource.getContents().add(root);
>> resource.save(System.out, null)
>>
>> I've attached the generated result.
>>
>>
>> Ralf Buschermoehle wrote:
>>> Ed,
>>>
>>> see comments below.
>>>
>>> Ed Merks wrote:
>>>
>>>> Yep, it's a bug in the template guard for generating the
>>>> eStaticFeatureCount method:
>>>
>>> [...]
>>>
>>>> (Note the missing ! on the guard.) Please open a bugzilla and I'll
>>>> commit the fix for it today which so it should be in today's
>>>> I-build...
>>>
>>> Done.
>>>
>>>> As a workaround, delete the eStaticFeatureCount method from
>>>> non-root model Impl classes.
>>>
>>> Hm, just tried but still get errors (see modified, attached file).
>>> The log says ...
>>>
>>> !SESSION 2008-09-30 14:03:24.281
>>> -----------------------------------------------
>>> eclipse.buildId=I20080918-0100
>>> java.version=1.6.0_07
>>> java.vendor=Sun Microsystems Inc.
>>> BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=de_DE
>>> Framework arguments: -product org.eclipse.sdk.ide
>>> Command-line arguments: -product org.eclipse.sdk.ide -data
>>> C:\Users\lobe\workspaceM2/../runtime-EclipseApplication -dev
>>> file:C:/Users/lobe/workspaceM2/.metadata/.plugins/org.eclips e.pde.core/Eclipse
>>> Application/dev.properties -os win32 -ws win32 -arch x86
>>>
>>> !ENTRY org.eclipse.emf.ecore 2 0 2008-09-30 14:03:30.000
>>> !MESSAGE Both 'testEMF2_5M2' and 'library' register a package for
>>> 'http://www.eclipse.org/emf/teneo/samples/emf/sample/Library'
>>>
>>> !ENTRY org.eclipse.emf.ecore 2 0 2008-09-30 14:03:30.000
>>> !MESSAGE Both 'testEMF2_5M2' and 'library' register an extension
>>> parser for 'library'
>>>
>>> !ENTRY org.eclipse.jface 4 2 2008-09-30 14:03:55.171
>>> !MESSAGE Problems occurred when invoking code from plug-in:
>>> "org.eclipse.jface".
>>> !STACK 0
>>> java.lang.ArrayIndexOutOfBoundsException: 0
>>> at
>>> org.eclipse.emf.ecore.impl.BasicEObjectImpl$EPropertiesHolde rBaseImpl.dynamicGet(BasicEObjectImpl.java:155)
>>>
>>> at
>>> org.eclipse.emf.ecore.impl.EStructuralFeatureImpl$InternalSe ttingDelegateSingleData.dynamicGet(EStructuralFeatureImpl.ja va:1953)
>>>
>>> at
>>> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eDynamicGet(Basi cEObjectImpl.java:1045)
>>>
>>> at rmof.impl.NamedElementImpl.getName(NamedElementImpl.java:67)
>>> at
>>> rmof.provider.PackageItemProvider.getText(PackageItemProvide r.java:81)
>>> at
>>> org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider .getText(AdapterFactoryLabelProvider.java:374)
>>>
>>> at
>>> org.eclipse.jface.viewers.WrappedViewerLabelProvider.getText (WrappedViewerLabelProvider.java:108)
>>>
>>> at
>>> org.eclipse.jface.viewers.WrappedViewerLabelProvider.update( WrappedViewerLabelProvider.java:164)
>>>
>>> at
>>> org.eclipse.jface.viewers.ViewerColumn.refresh(ViewerColumn. java:145)
>>> at
>>> org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(Ab stractTreeViewer.java:932)
>>>
>>> at
>>> org.eclipse.jface.viewers.AbstractTreeViewer$UpdateItemSafeR unnable.run(AbstractTreeViewer.java:102)
>>>
>>> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
>>> at org.eclipse.core.runtime.Platform.run(Platform.java:880)
>>> at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
>>> at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:17 5)
>>> at
>>> org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(Ab stractTreeViewer.java:1012)
>>>
>>> at
>>> org.eclipse.jface.viewers.StructuredViewer$UpdateItemSafeRun nable.run(StructuredViewer.java:466)
>>>
>>> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
>>> at org.eclipse.core.runtime.Platform.run(Platform.java:880)
>>> at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
>>> at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:17 5)
>>> at
>>> org.eclipse.jface.viewers.StructuredViewer.updateItem(Struct uredViewer.java:2041)
>>>
>>> at
>>> org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem( AbstractTreeViewer.java:827)
>>>
>>> at
>>> org.eclipse.jface.viewers.AbstractTreeViewer$1.run(AbstractT reeViewer.java:802)
>>>
>>> at
>>> org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator .java:70)
>>> at
>>> org.eclipse.jface.viewers.AbstractTreeViewer.createChildren( AbstractTreeViewer.java:776)
>>>
>>> at
>>> org.eclipse.jface.viewers.TreeViewer.createChildren(TreeView er.java:634)
>>>
>>> at
>>> org.eclipse.jface.viewers.AbstractTreeViewer.internalExpand( AbstractTreeViewer.java:1578)
>>>
>>> at
>>> org.eclipse.jface.viewers.AbstractTreeViewer.setSelectionToW idget(AbstractTreeViewer.java:2456)
>>>
>>> at
>>> org.eclipse.jface.viewers.StructuredViewer.setSelectionToWid get(StructuredViewer.java:1680)
>>>
>>> at
>>> org.eclipse.jface.viewers.AbstractTreeViewer.setSelectionToW idget(AbstractTreeViewer.java:2864)
>>>
>>> at
>>> org.eclipse.jface.viewers.StructuredViewer.setSelection(Stru cturedViewer.java:1636)
>>>
>>> at
>>> org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer .java:1104)
>>> at rmof.presentation.RmofEditor$5.run(RmofEditor.java:766)
>>> at
>>> rmof.presentation.RmofEditor.setSelectionToViewer(RmofEditor .java:770)
>>> at rmof.presentation.RmofEditor$4$1.run(RmofEditor.java:718)
>>> at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:3 5)
>>> at
>>> org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchr onizer.java:133)
>>>
>>> at
>>> org.eclipse.swt.widgets.Display.runAsyncMessages(Display.jav a:3825)
>>> at
>>> org.eclipse.swt.widgets.Display.readAndDispatch(Display.java :3449)
>>> at
>>> org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.jav a:2382)
>>> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346)
>>> at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:21 98)
>>> at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
>>> at
>>> org.eclipse.core.databinding.observable.Realm.runWithDefault (Realm.java:288)
>>>
>>> at
>>> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:488)
>>>
>>> at
>>> org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
>>> at
>>> org.eclipse.ui.internal.ide.application.IDEApplication.start (IDEApplication.java:113)
>>>
>>> at
>>> org.eclipse.equinox.internal.app.EclipseAppHandle.run(Eclips eAppHandle.java:193)
>>>
>>> at
>>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:110)
>>>
>>> at
>>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:79)
>>>
>>> at
>>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:370)
>>>
>>> at
>>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:179)
>>>
>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>>> at java.lang.reflect.Method.invoke(Unknown Source)
>>> at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java: 549)
>>> at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
>>> at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
>>> at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
>>>
>>> !ENTRY org.eclipse.jface 4 2 2008-09-30 14:03:55.703
>>> !MESSAGE Problems occurred when invoking code from plug-in:
>>> "org.eclipse.jface".
>>> !STACK 0
>>> java.lang.ArrayIndexOutOfBoundsException: 0
>>> at
>>> org.eclipse.emf.ecore.impl.BasicEObjectImpl$EPropertiesHolde rBaseImpl.dynamicGet(BasicEObjectImpl.java:155)
>>>
>>> at
>>> org.eclipse.emf.ecore.impl.EStructuralFeatureImpl$InternalSe ttingDelegateSingleData.dynamicGet(EStructuralFeatureImpl.ja va:1953)
>>>
>>> at
>>> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eDynamicGet(Basi cEObjectImpl.java:1045)
>>>
>>> at rmof.impl.NamedElementImpl.getName(NamedElementImpl.java:67)
>>> at
>>> rmof.provider.PackageItemProvider.getText(PackageItemProvide r.java:81)
>>> at
>>> org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator.ge tText(AdapterFactoryItemDelegator.java:90)
>>>
>>> at
>>> rmof.presentation.RmofEditor.setStatusLineManager(RmofEditor .java:1709)
>>> at rmof.presentation.RmofEditor.setSelection(RmofEditor.java:16 88)
>>> at
>>> rmof.presentation.RmofEditor$6.selectionChanged(RmofEditor.j ava:879)
>>> at org.eclipse.jface.viewers.Viewer$2.run(Viewer.java:162)
>>> at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
>>> at org.eclipse.core.runtime.Platform.run(Platform.java:880)
>>> at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
>>> at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:17 5)
>>> at
>>> org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer .java:160)
>>> at
>>> org.eclipse.jface.viewers.StructuredViewer.updateSelection(S tructuredViewer.java:2062)
>>>
>>> at
>>> org.eclipse.jface.viewers.StructuredViewer.setSelection(Stru cturedViewer.java:1638)
>>>
>>> at
>>> org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer .java:1104)
>>> at rmof.presentation.RmofEditor$5.run(RmofEditor.java:766)
>>> at
>>> rmof.presentation.RmofEditor.setSelectionToViewer(RmofEditor .java:770)
>>> at rmof.presentation.RmofEditor$4$1.run(RmofEditor.java:718)
>>> at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:3 5)
>>> at
>>> org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchr onizer.java:133)
>>>
>>> at
>>> org.eclipse.swt.widgets.Display.runAsyncMessages(Display.jav a:3825)
>>> at
>>> org.eclipse.swt.widgets.Display.readAndDispatch(Display.java :3449)
>>> at
>>> org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.jav a:2382)
>>> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346)
>>> at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:21 98)
>>> at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
>>> at
>>> org.eclipse.core.databinding.observable.Realm.runWithDefault (Realm.java:288)
>>>
>>> at
>>> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Work bench.java:488)
>>>
>>> at
>>> org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.j ava:149)
>>> at
>>> org.eclipse.ui.internal.ide.application.IDEApplication.start (IDEApplication.java:113)
>>>
>>> at
>>> org.eclipse.equinox.internal.app.EclipseAppHandle.run(Eclips eAppHandle.java:193)
>>>
>>> at
>>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .runApplication(EclipseAppLauncher.java:110)
>>>
>>> at
>>> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher .start(EclipseAppLauncher.java:79)
>>>
>>> at
>>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:370)
>>>
>>> at
>>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseS tarter.java:179)
>>>
>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>>> at java.lang.reflect.Method.invoke(Unknown Source)
>>> at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java: 549)
>>> at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
>>> at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
>>> at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
>>>
>>>
>>> If this is fixed with the Guard Negotiation in the Integration build
>>> today I would not need a workaround ... ?
>>>
>>> Greetings,
>>>
>>> Ralf
Previous Topic:[Teneo] Exception using ManyToMany annotation
Next Topic:Mapping EObjects to DOM objects already in memory
Goto Forum:
  


Current Time: Sun Jan 19 08:02:39 GMT 2020

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

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

Back to the top