Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » EMF » [Data Binding] Table viewer and EMF Data Binding.
[Data Binding] Table viewer and EMF Data Binding. [message #422842] Wed, 17 September 2008 07:03 Go to next message
Suresh Subramanian is currently offline Suresh SubramanianFriend
Messages: 61
Registered: July 2009
Member
Hi,

I am trying to write Table Viewer which shows my model element and trying
to use emf databinding for editing the model.

I have 2different types of objects to display. For example

Class A {
name,
description
}
Class B {
text,
description
}

First column should display the name if the object is instance of A and text
if the object is B. In second column i need to
display a description of the object.

As a first step i want to populate the 1st and second column if the
tableviewer input is set with the same object type list. For example if i
have 10 object of type A it works fine. But i am not able add both type of
objects as
input to the viewer.if i do i am getting NPE.

following the the code which i add the viewer code...

Table Viewer tableViewer = new TableViewer(composite,
SWT.BORDER|SWT.H_SCROLL | SWT.V_SCROLL|SWT.FULL_SELECTION);
table = tableViewer.getTable();
table.setLinesVisible(true);
table.setHeaderVisible(true);

TableViewerColumn firstColumn = new
TableViewerColumn(tableViewer,SWT.LEAD);
firstColumn .getColumn().setText("First");
firstColumn .getColumn().setWidth(100);
firstColumn .getColumn().setMoveable(true);

TableViewerColumn secondColumn = new TableViewerColumn(tableViewer,
SWT.LEAD);
secondColumn.getColumn().setText("Second");
secondColumn.getColumn().setWidth(100);
secondColumn.getColumn().setMoveable(true);

DataBindingContext bindingContext = new DataBindingContext();

ObservableListContentProvider tableViewerContentProvider = new
ObservableListContentProvider();
tableViewer.setContentProvider(tableViewerContentProvider);

IObservableMap[] attributeMaps = EMFObservables.observeMaps(
tableViewerContentProvider.getKnownElements(),
new EStructuralFeature[]
{First_Column_CLASS_A_NAME_EStructuralFeature_ID}); //here i tried to add
estructural feature id of text of type class B if added the object type b in
tableViewer Input.
firstColumn.setLabelProvider(new
GenericObservableMapCellLabelProvider(attributeMaps,"{0}"));/** TOms generic
Label Provider*/

IObservableMap[] descriptionsMap = EMFObservables.observeMaps(
tableViewerContentProvider.getKnownElements(),
new EStructuralFeature[] {second_Column_EStructuralFeature_ID});
desColumn.setLabelProvider(new
GenericObservableMapCellLabelProvider(descriptionsMap, "{0}"));

tableViewer.setInput(list);/* list is the Collection of Class Type A object
for now */

Any help is appricated.

Regards,
Suresh Subramanian
Re: [Data Binding] Table viewer and EMF Data Binding. [message #422846 is a reply to message #422842] Wed, 17 September 2008 08:05 Go to previous messageGo to next message
Thomas Schindl is currently offline Thomas SchindlFriend
Messages: 6651
Registered: July 2009
Senior Member
Suresh Subramanian schrieb:
> Hi,
>
> I am trying to write Table Viewer which shows my model element and trying
> to use emf databinding for editing the model.
>
> I have 2different types of objects to display. For example
>
> Class A {
> name,
> description
> }
> Class B {
> text,
> description
> }
>
> First column should display the name if the object is instance of A and text
> if the object is B. In second column i need to
> display a description of the object.

1. It would help to see the NPE and where it happens, it's possible that
my LabelProvider has a bug.

2. I haven't looked at the implementation of EMObservales.observeMap and
if it can deal with 2 completely unrelated object types at least the
Bean implementation can't so if it works is an undocumented feature.

Tom

--
B e s t S o l u t i o n . at
------------------------------------------------------------ --------
Tom Schindl JFace-Committer
------------------------------------------------------------ --------
Re: [Data Binding] Table viewer and EMF Data Binding. [message #422849 is a reply to message #422846] Wed, 17 September 2008 08:22 Go to previous messageGo to next message
Suresh Subramanian is currently offline Suresh SubramanianFriend
Messages: 61
Registered: July 2009
Member
Tom,

Thanks for your input. It is not working if i have 2 unrealted object
types.It is only working for one single Type. So i guess it is not possible
then.

Regards,
Suresh Subramanian
"Tom Schindl" <tom.schindl@bestsolution.at> wrote in message
news:gaqdnp$fs9$1@build.eclipse.org...
> Suresh Subramanian schrieb:
>> Hi,
>>
>> I am trying to write Table Viewer which shows my model element and
>> trying
>> to use emf databinding for editing the model.
>>
>> I have 2different types of objects to display. For example
>>
>> Class A {
>> name,
>> description
>> }
>> Class B {
>> text,
>> description
>> }
>>
>> First column should display the name if the object is instance of A and
>> text
>> if the object is B. In second column i need to
>> display a description of the object.
>
> 1. It would help to see the NPE and where it happens, it's possible that
> my LabelProvider has a bug.
>
> 2. I haven't looked at the implementation of EMObservales.observeMap and
> if it can deal with 2 completely unrelated object types at least the
> Bean implementation can't so if it works is an undocumented feature.
>
> Tom
>
> --
> B e s t S o l u t i o n . at
> ------------------------------------------------------------ --------
> Tom Schindl JFace-Committer
> ------------------------------------------------------------ --------
Re: [Data Binding] Table viewer and EMF Data Binding. [message #422852 is a reply to message #422849] Wed, 17 September 2008 09:28 Go to previous messageGo to next message
Thomas Schindl is currently offline Thomas SchindlFriend
Messages: 6651
Registered: July 2009
Senior Member
Could you simple

Base {
label: String
}

A extend Base {

}

B extend Base {

}

Then observe the base attribute label? If you depend on name and text
somewhere else you could mark them as volatile and transient and
delegate calls to them to Base#get/setLabel().

I think I can remember having looked at this Observable-Map problem
already and try to find a solution by make the observing somehow
conditional.

Something like this:

EMFObservables#observeConditionalMap(
tableViewerContentProvider.getKnownElements(),
new Condition[] {
new ConditionStrategy(
MyPack.Literal.CLASS_A,
MyPack.Literal.CLASS_A_ATTR_A),
new ConditionStrategy(
MyPack.Literal.CLASS_B,
MyPack.Literal.CLASS_B_ATTR_B)
}
)

But it haven't had time to really think about it, maybe it is complete
nonesense anyways :-)

Tom

Suresh Subramanian schrieb:
> Tom,
>
> Thanks for your input. It is not working if i have 2 unrealted object
> types.It is only working for one single Type. So i guess it is not possible
> then.
>
> Regards,
> Suresh Subramanian
> "Tom Schindl" <tom.schindl@bestsolution.at> wrote in message
> news:gaqdnp$fs9$1@build.eclipse.org...
>> Suresh Subramanian schrieb:
>>> Hi,
>>>
>>> I am trying to write Table Viewer which shows my model element and
>>> trying
>>> to use emf databinding for editing the model.
>>>
>>> I have 2different types of objects to display. For example
>>>
>>> Class A {
>>> name,
>>> description
>>> }
>>> Class B {
>>> text,
>>> description
>>> }
>>>
>>> First column should display the name if the object is instance of A and
>>> text
>>> if the object is B. In second column i need to
>>> display a description of the object.
>> 1. It would help to see the NPE and where it happens, it's possible that
>> my LabelProvider has a bug.
>>
>> 2. I haven't looked at the implementation of EMObservales.observeMap and
>> if it can deal with 2 completely unrelated object types at least the
>> Bean implementation can't so if it works is an undocumented feature.
>>
>> Tom
>>
>> --
>> B e s t S o l u t i o n . at
>> ------------------------------------------------------------ --------
>> Tom Schindl JFace-Committer
>> ------------------------------------------------------------ --------
>
>


--
B e s t S o l u t i o n . at
------------------------------------------------------------ --------
Tom Schindl JFace-Committer
------------------------------------------------------------ --------
Re: [Data Binding] Table viewer and EMF Data Binding. [message #422856 is a reply to message #422852] Wed, 17 September 2008 13:18 Go to previous messageGo to next message
Suresh Subramanian is currently offline Suresh SubramanianFriend
Messages: 61
Registered: July 2009
Member
Thanks Tom. I will try it.

Regards,
Suresh Subramanian
"Tom Schindl" <tom.schindl@bestsolution.at> wrote in message
news:gaqikq$a1d$1@build.eclipse.org...
> Could you simple
>
> Base {
> label: String
> }
>
> A extend Base {
>
> }
>
> B extend Base {
>
> }
>
> Then observe the base attribute label? If you depend on name and text
> somewhere else you could mark them as volatile and transient and
> delegate calls to them to Base#get/setLabel().
>
> I think I can remember having looked at this Observable-Map problem
> already and try to find a solution by make the observing somehow
> conditional.
>
> Something like this:
>
> EMFObservables#observeConditionalMap(
> tableViewerContentProvider.getKnownElements(),
> new Condition[] {
> new ConditionStrategy(
> MyPack.Literal.CLASS_A,
> MyPack.Literal.CLASS_A_ATTR_A),
> new ConditionStrategy(
> MyPack.Literal.CLASS_B,
> MyPack.Literal.CLASS_B_ATTR_B)
> }
> )
>
> But it haven't had time to really think about it, maybe it is complete
> nonesense anyways :-)
>
> Tom
>
> Suresh Subramanian schrieb:
>> Tom,
>>
>> Thanks for your input. It is not working if i have 2 unrealted object
>> types.It is only working for one single Type. So i guess it is not
>> possible
>> then.
>>
>> Regards,
>> Suresh Subramanian
>> "Tom Schindl" <tom.schindl@bestsolution.at> wrote in message
>> news:gaqdnp$fs9$1@build.eclipse.org...
>>> Suresh Subramanian schrieb:
>>>> Hi,
>>>>
>>>> I am trying to write Table Viewer which shows my model element and
>>>> trying
>>>> to use emf databinding for editing the model.
>>>>
>>>> I have 2different types of objects to display. For example
>>>>
>>>> Class A {
>>>> name,
>>>> description
>>>> }
>>>> Class B {
>>>> text,
>>>> description
>>>> }
>>>>
>>>> First column should display the name if the object is instance of A and
>>>> text
>>>> if the object is B. In second column i need to
>>>> display a description of the object.
>>> 1. It would help to see the NPE and where it happens, it's possible that
>>> my LabelProvider has a bug.
>>>
>>> 2. I haven't looked at the implementation of EMObservales.observeMap and
>>> if it can deal with 2 completely unrelated object types at least the
>>> Bean implementation can't so if it works is an undocumented feature.
>>>
>>> Tom
>>>
>>> --
>>> B e s t S o l u t i o n . at
>>> ------------------------------------------------------------ --------
>>> Tom Schindl JFace-Committer
>>> ------------------------------------------------------------ --------
>>
>>
>
>
> --
> B e s t S o l u t i o n . at
> ------------------------------------------------------------ --------
> Tom Schindl JFace-Committer
> ------------------------------------------------------------ --------
Re: [Data Binding] Table viewer and EMF Data Binding. [message #422866 is a reply to message #422856] Wed, 17 September 2008 16:40 Go to previous messageGo to next message
Thomas Schindl is currently offline Thomas SchindlFriend
Messages: 6651
Registered: July 2009
Senior Member
Hi,

by the way you are using an old implementation of my LabelProvider an
even better one is the one I use in the CDO/Databinding-Example-Project.
It allows you to access nested attributes of observed attributes :-)

The LabelProvider:
http://publicsvn.bestsolution.at/repos/java/examples/EMF-Dat abinding/at.bestsolution.soccer.ui.common/src/at/bestsolutio n/soccer/ui/common/viewers/ObservableColumnLabelProvider.jav a

How it is used:
http://publicsvn.bestsolution.at/repos/java/examples/EMF-Dat abinding/at.bestsolution.soccer.ui.associationadmin/src/at/b estsolution/soccer/ui/associationadmin/AssociationAdministra tionViewPart.java

Tom

Suresh Subramanian schrieb:
> Thanks Tom. I will try it.
>
> Regards,
> Suresh Subramanian
> "Tom Schindl" <tom.schindl@bestsolution.at> wrote in message
> news:gaqikq$a1d$1@build.eclipse.org...
>> Could you simple
>>
>> Base {
>> label: String
>> }
>>
>> A extend Base {
>>
>> }
>>
>> B extend Base {
>>
>> }
>>
>> Then observe the base attribute label? If you depend on name and text
>> somewhere else you could mark them as volatile and transient and
>> delegate calls to them to Base#get/setLabel().
>>
>> I think I can remember having looked at this Observable-Map problem
>> already and try to find a solution by make the observing somehow
>> conditional.
>>
>> Something like this:
>>
>> EMFObservables#observeConditionalMap(
>> tableViewerContentProvider.getKnownElements(),
>> new Condition[] {
>> new ConditionStrategy(
>> MyPack.Literal.CLASS_A,
>> MyPack.Literal.CLASS_A_ATTR_A),
>> new ConditionStrategy(
>> MyPack.Literal.CLASS_B,
>> MyPack.Literal.CLASS_B_ATTR_B)
>> }
>> )
>>
>> But it haven't had time to really think about it, maybe it is complete
>> nonesense anyways :-)
>>
>> Tom
>>
>> Suresh Subramanian schrieb:
>>> Tom,
>>>
>>> Thanks for your input. It is not working if i have 2 unrealted object
>>> types.It is only working for one single Type. So i guess it is not
>>> possible
>>> then.
>>>
>>> Regards,
>>> Suresh Subramanian
>>> "Tom Schindl" <tom.schindl@bestsolution.at> wrote in message
>>> news:gaqdnp$fs9$1@build.eclipse.org...
>>>> Suresh Subramanian schrieb:
>>>>> Hi,
>>>>>
>>>>> I am trying to write Table Viewer which shows my model element and
>>>>> trying
>>>>> to use emf databinding for editing the model.
>>>>>
>>>>> I have 2different types of objects to display. For example
>>>>>
>>>>> Class A {
>>>>> name,
>>>>> description
>>>>> }
>>>>> Class B {
>>>>> text,
>>>>> description
>>>>> }
>>>>>
>>>>> First column should display the name if the object is instance of A and
>>>>> text
>>>>> if the object is B. In second column i need to
>>>>> display a description of the object.
>>>> 1. It would help to see the NPE and where it happens, it's possible that
>>>> my LabelProvider has a bug.
>>>>
>>>> 2. I haven't looked at the implementation of EMObservales.observeMap and
>>>> if it can deal with 2 completely unrelated object types at least the
>>>> Bean implementation can't so if it works is an undocumented feature.
>>>>
>>>> Tom
>>>>
>>>> --
>>>> B e s t S o l u t i o n . at
>>>> ------------------------------------------------------------ --------
>>>> Tom Schindl JFace-Committer
>>>> ------------------------------------------------------------ --------
>>>
>>
>> --
>> B e s t S o l u t i o n . at
>> ------------------------------------------------------------ --------
>> Tom Schindl JFace-Committer
>> ------------------------------------------------------------ --------
>
>


--
B e s t S o l u t i o n . at
------------------------------------------------------------ --------
Tom Schindl JFace-Committer
------------------------------------------------------------ --------
Re: [Data Binding] Table viewer and EMF Data Binding. [message #422891 is a reply to message #422852] Thu, 18 September 2008 06:40 Go to previous messageGo to next message
Suresh Subramanian is currently offline Suresh SubramanianFriend
Messages: 61
Registered: July 2009
Member
Tom,

Is it possible for you help me writing
EMFObservables#observeConditionalMap(
new Condition[] {
> new ConditionStrategy(
> MyPack.Literal.CLASS_A,
> MyPack.Literal.CLASS_A_ATTR_A),
> new ConditionStrategy(
> MyPack.Literal.CLASS_B,
> MyPack.Literal.CLASS_B_ATTR_B)
I don't see that in 3.4

Regards,
Suresh Subramanian
"Tom Schindl" <tom.schindl@bestsolution.at> wrote in message
news:gaqikq$a1d$1@build.eclipse.org...
> Could you simple
>
> Base {
> label: String
> }
>
> A extend Base {
>
> }
>
> B extend Base {
>
> }
>
> Then observe the base attribute label? If you depend on name and text
> somewhere else you could mark them as volatile and transient and
> delegate calls to them to Base#get/setLabel().
>
> I think I can remember having looked at this Observable-Map problem
> already and try to find a solution by make the observing somehow
> conditional.
>
> Something like this:
>
> EMFObservables#observeConditionalMap(
> tableViewerContentProvider.getKnownElements(),
> new Condition[] {
> new ConditionStrategy(
> MyPack.Literal.CLASS_A,
> MyPack.Literal.CLASS_A_ATTR_A),
> new ConditionStrategy(
> MyPack.Literal.CLASS_B,
> MyPack.Literal.CLASS_B_ATTR_B)
> }
> )
>
> But it haven't had time to really think about it, maybe it is complete
> nonesense anyways :-)
>
> Tom
>
> Suresh Subramanian schrieb:
>> Tom,
>>
>> Thanks for your input. It is not working if i have 2 unrealted object
>> types.It is only working for one single Type. So i guess it is not
>> possible
>> then.
>>
>> Regards,
>> Suresh Subramanian
>> "Tom Schindl" <tom.schindl@bestsolution.at> wrote in message
>> news:gaqdnp$fs9$1@build.eclipse.org...
>>> Suresh Subramanian schrieb:
>>>> Hi,
>>>>
>>>> I am trying to write Table Viewer which shows my model element and
>>>> trying
>>>> to use emf databinding for editing the model.
>>>>
>>>> I have 2different types of objects to display. For example
>>>>
>>>> Class A {
>>>> name,
>>>> description
>>>> }
>>>> Class B {
>>>> text,
>>>> description
>>>> }
>>>>
>>>> First column should display the name if the object is instance of A and
>>>> text
>>>> if the object is B. In second column i need to
>>>> display a description of the object.
>>> 1. It would help to see the NPE and where it happens, it's possible that
>>> my LabelProvider has a bug.
>>>
>>> 2. I haven't looked at the implementation of EMObservales.observeMap and
>>> if it can deal with 2 completely unrelated object types at least the
>>> Bean implementation can't so if it works is an undocumented feature.
>>>
>>> Tom
>>>
>>> --
>>> B e s t S o l u t i o n . at
>>> ------------------------------------------------------------ --------
>>> Tom Schindl JFace-Committer
>>> ------------------------------------------------------------ --------
>>
>>
>
>
> --
> B e s t S o l u t i o n . at
> ------------------------------------------------------------ --------
> Tom Schindl JFace-Committer
> ------------------------------------------------------------ --------
Re: [Data Binding] Table viewer and EMF Data Binding. [message #422892 is a reply to message #422891] Thu, 18 September 2008 07:14 Go to previous messageGo to next message
Thomas Schindl is currently offline Thomas SchindlFriend
Messages: 6651
Registered: July 2009
Senior Member
Hi,

I know its not there :-) Let me check and see how this could be done.

Tom

Suresh Subramanian schrieb:
> Tom,
>
> Is it possible for you help me writing
> EMFObservables#observeConditionalMap(
> new Condition[] {
>> new ConditionStrategy(
>> MyPack.Literal.CLASS_A,
>> MyPack.Literal.CLASS_A_ATTR_A),
>> new ConditionStrategy(
>> MyPack.Literal.CLASS_B,
>> MyPack.Literal.CLASS_B_ATTR_B)
> I don't see that in 3.4
>
> Regards,
> Suresh Subramanian
> "Tom Schindl" <tom.schindl@bestsolution.at> wrote in message
> news:gaqikq$a1d$1@build.eclipse.org...
>> Could you simple
>>
>> Base {
>> label: String
>> }
>>
>> A extend Base {
>>
>> }
>>
>> B extend Base {
>>
>> }
>>
>> Then observe the base attribute label? If you depend on name and text
>> somewhere else you could mark them as volatile and transient and
>> delegate calls to them to Base#get/setLabel().
>>
>> I think I can remember having looked at this Observable-Map problem
>> already and try to find a solution by make the observing somehow
>> conditional.
>>
>> Something like this:
>>
>> EMFObservables#observeConditionalMap(
>> tableViewerContentProvider.getKnownElements(),
>> new Condition[] {
>> new ConditionStrategy(
>> MyPack.Literal.CLASS_A,
>> MyPack.Literal.CLASS_A_ATTR_A),
>> new ConditionStrategy(
>> MyPack.Literal.CLASS_B,
>> MyPack.Literal.CLASS_B_ATTR_B)
>> }
>> )
>>
>> But it haven't had time to really think about it, maybe it is complete
>> nonesense anyways :-)
>>
>> Tom
>>
>> Suresh Subramanian schrieb:
>>> Tom,
>>>
>>> Thanks for your input. It is not working if i have 2 unrealted object
>>> types.It is only working for one single Type. So i guess it is not
>>> possible
>>> then.
>>>
>>> Regards,
>>> Suresh Subramanian
>>> "Tom Schindl" <tom.schindl@bestsolution.at> wrote in message
>>> news:gaqdnp$fs9$1@build.eclipse.org...
>>>> Suresh Subramanian schrieb:
>>>>> Hi,
>>>>>
>>>>> I am trying to write Table Viewer which shows my model element and
>>>>> trying
>>>>> to use emf databinding for editing the model.
>>>>>
>>>>> I have 2different types of objects to display. For example
>>>>>
>>>>> Class A {
>>>>> name,
>>>>> description
>>>>> }
>>>>> Class B {
>>>>> text,
>>>>> description
>>>>> }
>>>>>
>>>>> First column should display the name if the object is instance of A and
>>>>> text
>>>>> if the object is B. In second column i need to
>>>>> display a description of the object.
>>>> 1. It would help to see the NPE and where it happens, it's possible that
>>>> my LabelProvider has a bug.
>>>>
>>>> 2. I haven't looked at the implementation of EMObservales.observeMap and
>>>> if it can deal with 2 completely unrelated object types at least the
>>>> Bean implementation can't so if it works is an undocumented feature.
>>>>
>>>> Tom
>>>>
>>>> --
>>>> B e s t S o l u t i o n . at
>>>> ------------------------------------------------------------ --------
>>>> Tom Schindl JFace-Committer
>>>> ------------------------------------------------------------ --------
>>>
>>
>> --
>> B e s t S o l u t i o n . at
>> ------------------------------------------------------------ --------
>> Tom Schindl JFace-Committer
>> ------------------------------------------------------------ --------
>
>


--
B e s t S o l u t i o n . at
------------------------------------------------------------ --------
Tom Schindl JFace-Committer
------------------------------------------------------------ --------
Re: [Data Binding] Table viewer and EMF Data Binding. [message #422893 is a reply to message #422892] Thu, 18 September 2008 07:57 Go to previous messageGo to next message
Thomas Schindl is currently offline Thomas SchindlFriend
Messages: 6651
Registered: July 2009
Senior Member
Hi,

With standard ObservableMapLabelProvider this already works in
EMF-Databinding because of the way EMF works :-)

I guess the problem is may LabelProvider then.

Tom

Tom Schindl schrieb:
> Hi,
>
> I know its not there :-) Let me check and see how this could be done.
>
> Tom
>
> Suresh Subramanian schrieb:
>> Tom,
>>
>> Is it possible for you help me writing
>> EMFObservables#observeConditionalMap(
>> new Condition[] {
>>> new ConditionStrategy(
>>> MyPack.Literal.CLASS_A,
>>> MyPack.Literal.CLASS_A_ATTR_A),
>>> new ConditionStrategy(
>>> MyPack.Literal.CLASS_B,
>>> MyPack.Literal.CLASS_B_ATTR_B)
>> I don't see that in 3.4
>>
>> Regards,
>> Suresh Subramanian
>> "Tom Schindl" <tom.schindl@bestsolution.at> wrote in message
>> news:gaqikq$a1d$1@build.eclipse.org...
>>> Could you simple
>>>
>>> Base {
>>> label: String
>>> }
>>>
>>> A extend Base {
>>>
>>> }
>>>
>>> B extend Base {
>>>
>>> }
>>>
>>> Then observe the base attribute label? If you depend on name and text
>>> somewhere else you could mark them as volatile and transient and
>>> delegate calls to them to Base#get/setLabel().
>>>
>>> I think I can remember having looked at this Observable-Map problem
>>> already and try to find a solution by make the observing somehow
>>> conditional.
>>>
>>> Something like this:
>>>
>>> EMFObservables#observeConditionalMap(
>>> tableViewerContentProvider.getKnownElements(),
>>> new Condition[] {
>>> new ConditionStrategy(
>>> MyPack.Literal.CLASS_A,
>>> MyPack.Literal.CLASS_A_ATTR_A),
>>> new ConditionStrategy(
>>> MyPack.Literal.CLASS_B,
>>> MyPack.Literal.CLASS_B_ATTR_B)
>>> }
>>> )
>>>
>>> But it haven't had time to really think about it, maybe it is complete
>>> nonesense anyways :-)
>>>
>>> Tom
>>>
>>> Suresh Subramanian schrieb:
>>>> Tom,
>>>>
>>>> Thanks for your input. It is not working if i have 2 unrealted object
>>>> types.It is only working for one single Type. So i guess it is not
>>>> possible
>>>> then.
>>>>
>>>> Regards,
>>>> Suresh Subramanian
>>>> "Tom Schindl" <tom.schindl@bestsolution.at> wrote in message
>>>> news:gaqdnp$fs9$1@build.eclipse.org...
>>>>> Suresh Subramanian schrieb:
>>>>>> Hi,
>>>>>>
>>>>>> I am trying to write Table Viewer which shows my model element and
>>>>>> trying
>>>>>> to use emf databinding for editing the model.
>>>>>>
>>>>>> I have 2different types of objects to display. For example
>>>>>>
>>>>>> Class A {
>>>>>> name,
>>>>>> description
>>>>>> }
>>>>>> Class B {
>>>>>> text,
>>>>>> description
>>>>>> }
>>>>>>
>>>>>> First column should display the name if the object is instance of A and
>>>>>> text
>>>>>> if the object is B. In second column i need to
>>>>>> display a description of the object.
>>>>> 1. It would help to see the NPE and where it happens, it's possible that
>>>>> my LabelProvider has a bug.
>>>>>
>>>>> 2. I haven't looked at the implementation of EMObservales.observeMap and
>>>>> if it can deal with 2 completely unrelated object types at least the
>>>>> Bean implementation can't so if it works is an undocumented feature.
>>>>>
>>>>> Tom
>>>>>
>>>>> --
>>>>> B e s t S o l u t i o n . at
>>>>> ------------------------------------------------------------ --------
>>>>> Tom Schindl JFace-Committer
>>>>> ------------------------------------------------------------ --------
>>> --
>>> B e s t S o l u t i o n . at
>>> ------------------------------------------------------------ --------
>>> Tom Schindl JFace-Committer
>>> ------------------------------------------------------------ --------
>>
>
>


--
B e s t S o l u t i o n . at
------------------------------------------------------------ --------
Tom Schindl JFace-Committer
------------------------------------------------------------ --------
Re: [Data Binding] Table viewer and EMF Data Binding. [message #422894 is a reply to message #422893] Thu, 18 September 2008 08:01 Go to previous messageGo to next message
Thomas Schindl is currently offline Thomas SchindlFriend
Messages: 6651
Registered: July 2009
Senior Member
And the label provider I referenced yesterday also works.

Tom

Tom Schindl schrieb:
> Hi,
>
> With standard ObservableMapLabelProvider this already works in
> EMF-Databinding because of the way EMF works :-)
>
> I guess the problem is may LabelProvider then.
>
> Tom
>
> Tom Schindl schrieb:
>> Hi,
>>
>> I know its not there :-) Let me check and see how this could be done.
>>
>> Tom
>>
>> Suresh Subramanian schrieb:
>>> Tom,
>>>
>>> Is it possible for you help me writing
>>> EMFObservables#observeConditionalMap(
>>> new Condition[] {
>>>> new ConditionStrategy(
>>>> MyPack.Literal.CLASS_A,
>>>> MyPack.Literal.CLASS_A_ATTR_A),
>>>> new ConditionStrategy(
>>>> MyPack.Literal.CLASS_B,
>>>> MyPack.Literal.CLASS_B_ATTR_B)
>>> I don't see that in 3.4
>>>
>>> Regards,
>>> Suresh Subramanian
>>> "Tom Schindl" <tom.schindl@bestsolution.at> wrote in message
>>> news:gaqikq$a1d$1@build.eclipse.org...
>>>> Could you simple
>>>>
>>>> Base {
>>>> label: String
>>>> }
>>>>
>>>> A extend Base {
>>>>
>>>> }
>>>>
>>>> B extend Base {
>>>>
>>>> }
>>>>
>>>> Then observe the base attribute label? If you depend on name and text
>>>> somewhere else you could mark them as volatile and transient and
>>>> delegate calls to them to Base#get/setLabel().
>>>>
>>>> I think I can remember having looked at this Observable-Map problem
>>>> already and try to find a solution by make the observing somehow
>>>> conditional.
>>>>
>>>> Something like this:
>>>>
>>>> EMFObservables#observeConditionalMap(
>>>> tableViewerContentProvider.getKnownElements(),
>>>> new Condition[] {
>>>> new ConditionStrategy(
>>>> MyPack.Literal.CLASS_A,
>>>> MyPack.Literal.CLASS_A_ATTR_A),
>>>> new ConditionStrategy(
>>>> MyPack.Literal.CLASS_B,
>>>> MyPack.Literal.CLASS_B_ATTR_B)
>>>> }
>>>> )
>>>>
>>>> But it haven't had time to really think about it, maybe it is complete
>>>> nonesense anyways :-)
>>>>
>>>> Tom
>>>>
>>>> Suresh Subramanian schrieb:
>>>>> Tom,
>>>>>
>>>>> Thanks for your input. It is not working if i have 2 unrealted object
>>>>> types.It is only working for one single Type. So i guess it is not
>>>>> possible
>>>>> then.
>>>>>
>>>>> Regards,
>>>>> Suresh Subramanian
>>>>> "Tom Schindl" <tom.schindl@bestsolution.at> wrote in message
>>>>> news:gaqdnp$fs9$1@build.eclipse.org...
>>>>>> Suresh Subramanian schrieb:
>>>>>>> Hi,
>>>>>>>
>>>>>>> I am trying to write Table Viewer which shows my model element and
>>>>>>> trying
>>>>>>> to use emf databinding for editing the model.
>>>>>>>
>>>>>>> I have 2different types of objects to display. For example
>>>>>>>
>>>>>>> Class A {
>>>>>>> name,
>>>>>>> description
>>>>>>> }
>>>>>>> Class B {
>>>>>>> text,
>>>>>>> description
>>>>>>> }
>>>>>>>
>>>>>>> First column should display the name if the object is instance of A and
>>>>>>> text
>>>>>>> if the object is B. In second column i need to
>>>>>>> display a description of the object.
>>>>>> 1. It would help to see the NPE and where it happens, it's possible that
>>>>>> my LabelProvider has a bug.
>>>>>>
>>>>>> 2. I haven't looked at the implementation of EMObservales.observeMap and
>>>>>> if it can deal with 2 completely unrelated object types at least the
>>>>>> Bean implementation can't so if it works is an undocumented feature.
>>>>>>
>>>>>> Tom
>>>>>>
>>>>>> --
>>>>>> B e s t S o l u t i o n . at
>>>>>> ------------------------------------------------------------ --------
>>>>>> Tom Schindl JFace-Committer
>>>>>> ------------------------------------------------------------ --------
>>>> --
>>>> B e s t S o l u t i o n . at
>>>> ------------------------------------------------------------ --------
>>>> Tom Schindl JFace-Committer
>>>> ------------------------------------------------------------ --------
>>
>
>


--
B e s t S o l u t i o n . at
------------------------------------------------------------ --------
Tom Schindl JFace-Committer
------------------------------------------------------------ --------
Re: [Data Binding] Table viewer and EMF Data Binding. [message #422926 is a reply to message #422894] Fri, 19 September 2008 00:17 Go to previous messageGo to next message
Suresh Subramanian is currently offline Suresh SubramanianFriend
Messages: 61
Registered: July 2009
Member
Tom,
I am trying to find org.apache.commons.lang.text plugin. do you know where
can i find it.

Regards,
Suresh Subramanian
"Tom Schindl" <tom.schindl@bestsolution.at> wrote in message
news:gat1so$9f8$1@build.eclipse.org...
> And the label provider I referenced yesterday also works.
>
> Tom
>
> Tom Schindl schrieb:
>> Hi,
>>
>> With standard ObservableMapLabelProvider this already works in
>> EMF-Databinding because of the way EMF works :-)
>>
>> I guess the problem is may LabelProvider then.
>>
>> Tom
>>
>> Tom Schindl schrieb:
>>> Hi,
>>>
>>> I know its not there :-) Let me check and see how this could be done.
>>>
>>> Tom
>>>
>>> Suresh Subramanian schrieb:
>>>> Tom,
>>>>
>>>> Is it possible for you help me writing
>>>> EMFObservables#observeConditionalMap(
>>>> new Condition[] {
>>>>> new ConditionStrategy(
>>>>> MyPack.Literal.CLASS_A,
>>>>> MyPack.Literal.CLASS_A_ATTR_A),
>>>>> new ConditionStrategy(
>>>>> MyPack.Literal.CLASS_B,
>>>>> MyPack.Literal.CLASS_B_ATTR_B)
>>>> I don't see that in 3.4
>>>>
>>>> Regards,
>>>> Suresh Subramanian
>>>> "Tom Schindl" <tom.schindl@bestsolution.at> wrote in message
>>>> news:gaqikq$a1d$1@build.eclipse.org...
>>>>> Could you simple
>>>>>
>>>>> Base {
>>>>> label: String
>>>>> }
>>>>>
>>>>> A extend Base {
>>>>>
>>>>> }
>>>>>
>>>>> B extend Base {
>>>>>
>>>>> }
>>>>>
>>>>> Then observe the base attribute label? If you depend on name and text
>>>>> somewhere else you could mark them as volatile and transient and
>>>>> delegate calls to them to Base#get/setLabel().
>>>>>
>>>>> I think I can remember having looked at this Observable-Map problem
>>>>> already and try to find a solution by make the observing somehow
>>>>> conditional.
>>>>>
>>>>> Something like this:
>>>>>
>>>>> EMFObservables#observeConditionalMap(
>>>>> tableViewerContentProvider.getKnownElements(),
>>>>> new Condition[] {
>>>>> new ConditionStrategy(
>>>>> MyPack.Literal.CLASS_A,
>>>>> MyPack.Literal.CLASS_A_ATTR_A),
>>>>> new ConditionStrategy(
>>>>> MyPack.Literal.CLASS_B,
>>>>> MyPack.Literal.CLASS_B_ATTR_B)
>>>>> }
>>>>> )
>>>>>
>>>>> But it haven't had time to really think about it, maybe it is complete
>>>>> nonesense anyways :-)
>>>>>
>>>>> Tom
>>>>>
>>>>> Suresh Subramanian schrieb:
>>>>>> Tom,
>>>>>>
>>>>>> Thanks for your input. It is not working if i have 2 unrealted object
>>>>>> types.It is only working for one single Type. So i guess it is not
>>>>>> possible
>>>>>> then.
>>>>>>
>>>>>> Regards,
>>>>>> Suresh Subramanian
>>>>>> "Tom Schindl" <tom.schindl@bestsolution.at> wrote in message
>>>>>> news:gaqdnp$fs9$1@build.eclipse.org...
>>>>>>> Suresh Subramanian schrieb:
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> I am trying to write Table Viewer which shows my model element and
>>>>>>>> trying
>>>>>>>> to use emf databinding for editing the model.
>>>>>>>>
>>>>>>>> I have 2different types of objects to display. For example
>>>>>>>>
>>>>>>>> Class A {
>>>>>>>> name,
>>>>>>>> description
>>>>>>>> }
>>>>>>>> Class B {
>>>>>>>> text,
>>>>>>>> description
>>>>>>>> }
>>>>>>>>
>>>>>>>> First column should display the name if the object is instance of A
>>>>>>>> and
>>>>>>>> text
>>>>>>>> if the object is B. In second column i need to
>>>>>>>> display a description of the object.
>>>>>>> 1. It would help to see the NPE and where it happens, it's possible
>>>>>>> that
>>>>>>> my LabelProvider has a bug.
>>>>>>>
>>>>>>> 2. I haven't looked at the implementation of EMObservales.observeMap
>>>>>>> and
>>>>>>> if it can deal with 2 completely unrelated object types at least
>>>>>>> the
>>>>>>> Bean implementation can't so if it works is an undocumented
>>>>>>> feature.
>>>>>>>
>>>>>>> Tom
>>>>>>>
>>>>>>> --
>>>>>>> B e s t S o l u t i o n . at
>>>>>>> ------------------------------------------------------------ --------
>>>>>>> Tom Schindl JFace-Committer
>>>>>>> ------------------------------------------------------------ --------
>>>>> --
>>>>> B e s t S o l u t i o n . at
>>>>> ------------------------------------------------------------ --------
>>>>> Tom Schindl JFace-Committer
>>>>> ------------------------------------------------------------ --------
>>>
>>
>>
>
>
> --
> B e s t S o l u t i o n . at
> ------------------------------------------------------------ --------
> Tom Schindl JFace-Committer
> ------------------------------------------------------------ --------
Re: [Data Binding] Table viewer and EMF Data Binding. [message #422927 is a reply to message #422926] Fri, 19 September 2008 00:19 Go to previous messageGo to next message
Thomas Schindl is currently offline Thomas SchindlFriend
Messages: 6651
Registered: July 2009
Senior Member
http://download.eclipse.org/tools/orbit/downloads/drops/R200 80807152315/

Tom

Suresh Subramanian schrieb:
> Tom,
> I am trying to find org.apache.commons.lang.text plugin. do you know where
> can i find it.
>
> Regards,
> Suresh Subramanian
> "Tom Schindl" <tom.schindl@bestsolution.at> wrote in message
> news:gat1so$9f8$1@build.eclipse.org...
>> And the label provider I referenced yesterday also works.
>>
>> Tom
>>
>> Tom Schindl schrieb:
>>> Hi,
>>>
>>> With standard ObservableMapLabelProvider this already works in
>>> EMF-Databinding because of the way EMF works :-)
>>>
>>> I guess the problem is may LabelProvider then.
>>>
>>> Tom
>>>
>>> Tom Schindl schrieb:
>>>> Hi,
>>>>
>>>> I know its not there :-) Let me check and see how this could be done.
>>>>
>>>> Tom
>>>>
>>>> Suresh Subramanian schrieb:
>>>>> Tom,
>>>>>
>>>>> Is it possible for you help me writing
>>>>> EMFObservables#observeConditionalMap(
>>>>> new Condition[] {
>>>>>> new ConditionStrategy(
>>>>>> MyPack.Literal.CLASS_A,
>>>>>> MyPack.Literal.CLASS_A_ATTR_A),
>>>>>> new ConditionStrategy(
>>>>>> MyPack.Literal.CLASS_B,
>>>>>> MyPack.Literal.CLASS_B_ATTR_B)
>>>>> I don't see that in 3.4
>>>>>
>>>>> Regards,
>>>>> Suresh Subramanian
>>>>> "Tom Schindl" <tom.schindl@bestsolution.at> wrote in message
>>>>> news:gaqikq$a1d$1@build.eclipse.org...
>>>>>> Could you simple
>>>>>>
>>>>>> Base {
>>>>>> label: String
>>>>>> }
>>>>>>
>>>>>> A extend Base {
>>>>>>
>>>>>> }
>>>>>>
>>>>>> B extend Base {
>>>>>>
>>>>>> }
>>>>>>
>>>>>> Then observe the base attribute label? If you depend on name and text
>>>>>> somewhere else you could mark them as volatile and transient and
>>>>>> delegate calls to them to Base#get/setLabel().
>>>>>>
>>>>>> I think I can remember having looked at this Observable-Map problem
>>>>>> already and try to find a solution by make the observing somehow
>>>>>> conditional.
>>>>>>
>>>>>> Something like this:
>>>>>>
>>>>>> EMFObservables#observeConditionalMap(
>>>>>> tableViewerContentProvider.getKnownElements(),
>>>>>> new Condition[] {
>>>>>> new ConditionStrategy(
>>>>>> MyPack.Literal.CLASS_A,
>>>>>> MyPack.Literal.CLASS_A_ATTR_A),
>>>>>> new ConditionStrategy(
>>>>>> MyPack.Literal.CLASS_B,
>>>>>> MyPack.Literal.CLASS_B_ATTR_B)
>>>>>> }
>>>>>> )
>>>>>>
>>>>>> But it haven't had time to really think about it, maybe it is complete
>>>>>> nonesense anyways :-)
>>>>>>
>>>>>> Tom
>>>>>>
>>>>>> Suresh Subramanian schrieb:
>>>>>>> Tom,
>>>>>>>
>>>>>>> Thanks for your input. It is not working if i have 2 unrealted object
>>>>>>> types.It is only working for one single Type. So i guess it is not
>>>>>>> possible
>>>>>>> then.
>>>>>>>
>>>>>>> Regards,
>>>>>>> Suresh Subramanian
>>>>>>> "Tom Schindl" <tom.schindl@bestsolution.at> wrote in message
>>>>>>> news:gaqdnp$fs9$1@build.eclipse.org...
>>>>>>>> Suresh Subramanian schrieb:
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>> I am trying to write Table Viewer which shows my model element and
>>>>>>>>> trying
>>>>>>>>> to use emf databinding for editing the model.
>>>>>>>>>
>>>>>>>>> I have 2different types of objects to display. For example
>>>>>>>>>
>>>>>>>>> Class A {
>>>>>>>>> name,
>>>>>>>>> description
>>>>>>>>> }
>>>>>>>>> Class B {
>>>>>>>>> text,
>>>>>>>>> description
>>>>>>>>> }
>>>>>>>>>
>>>>>>>>> First column should display the name if the object is instance of A
>>>>>>>>> and
>>>>>>>>> text
>>>>>>>>> if the object is B. In second column i need to
>>>>>>>>> display a description of the object.
>>>>>>>> 1. It would help to see the NPE and where it happens, it's possible
>>>>>>>> that
>>>>>>>> my LabelProvider has a bug.
>>>>>>>>
>>>>>>>> 2. I haven't looked at the implementation of EMObservales.observeMap
>>>>>>>> and
>>>>>>>> if it can deal with 2 completely unrelated object types at least
>>>>>>>> the
>>>>>>>> Bean implementation can't so if it works is an undocumented
>>>>>>>> feature.
>>>>>>>>
>>>>>>>> Tom
>>>>>>>>
>>>>>>>> --
>>>>>>>> B e s t S o l u t i o n . at
>>>>>>>> ------------------------------------------------------------ --------
>>>>>>>> Tom Schindl JFace-Committer
>>>>>>>> ------------------------------------------------------------ --------
>>>>>> --
>>>>>> B e s t S o l u t i o n . at
>>>>>> ------------------------------------------------------------ --------
>>>>>> Tom Schindl JFace-Committer
>>>>>> ------------------------------------------------------------ --------
>>>
>>
>> --
>> B e s t S o l u t i o n . at
>> ------------------------------------------------------------ --------
>> Tom Schindl JFace-Committer
>> ------------------------------------------------------------ --------
>
>


--
B e s t S o l u t i o n . at
------------------------------------------------------------ --------
Tom Schindl JFace-Committer
------------------------------------------------------------ --------
Re: [Data Binding] Table viewer and EMF Data Binding. [message #422928 is a reply to message #422927] Fri, 19 September 2008 00:31 Go to previous messageGo to next message
Suresh Subramanian is currently offline Suresh SubramanianFriend
Messages: 61
Registered: July 2009
Member
Thanks Tom
"Tom Schindl" <tom.schindl@bestsolution.at> wrote in message
news:gaur63$5vn$1@build.eclipse.org...
> http://download.eclipse.org/tools/orbit/downloads/drops/R200 80807152315/
>
> Tom
>
> Suresh Subramanian schrieb:
>> Tom,
>> I am trying to find org.apache.commons.lang.text plugin. do you know
>> where
>> can i find it.
>>
>> Regards,
>> Suresh Subramanian
>> "Tom Schindl" <tom.schindl@bestsolution.at> wrote in message
>> news:gat1so$9f8$1@build.eclipse.org...
>>> And the label provider I referenced yesterday also works.
>>>
>>> Tom
>>>
>>> Tom Schindl schrieb:
>>>> Hi,
>>>>
>>>> With standard ObservableMapLabelProvider this already works in
>>>> EMF-Databinding because of the way EMF works :-)
>>>>
>>>> I guess the problem is may LabelProvider then.
>>>>
>>>> Tom
>>>>
>>>> Tom Schindl schrieb:
>>>>> Hi,
>>>>>
>>>>> I know its not there :-) Let me check and see how this could be done.
>>>>>
>>>>> Tom
>>>>>
>>>>> Suresh Subramanian schrieb:
>>>>>> Tom,
>>>>>>
>>>>>> Is it possible for you help me writing
>>>>>> EMFObservables#observeConditionalMap(
>>>>>> new Condition[] {
>>>>>>> new ConditionStrategy(
>>>>>>> MyPack.Literal.CLASS_A,
>>>>>>> MyPack.Literal.CLASS_A_ATTR_A),
>>>>>>> new ConditionStrategy(
>>>>>>> MyPack.Literal.CLASS_B,
>>>>>>> MyPack.Literal.CLASS_B_ATTR_B)
>>>>>> I don't see that in 3.4
>>>>>>
>>>>>> Regards,
>>>>>> Suresh Subramanian
>>>>>> "Tom Schindl" <tom.schindl@bestsolution.at> wrote in message
>>>>>> news:gaqikq$a1d$1@build.eclipse.org...
>>>>>>> Could you simple
>>>>>>>
>>>>>>> Base {
>>>>>>> label: String
>>>>>>> }
>>>>>>>
>>>>>>> A extend Base {
>>>>>>>
>>>>>>> }
>>>>>>>
>>>>>>> B extend Base {
>>>>>>>
>>>>>>> }
>>>>>>>
>>>>>>> Then observe the base attribute label? If you depend on name and
>>>>>>> text
>>>>>>> somewhere else you could mark them as volatile and transient and
>>>>>>> delegate calls to them to Base#get/setLabel().
>>>>>>>
>>>>>>> I think I can remember having looked at this Observable-Map problem
>>>>>>> already and try to find a solution by make the observing somehow
>>>>>>> conditional.
>>>>>>>
>>>>>>> Something like this:
>>>>>>>
>>>>>>> EMFObservables#observeConditionalMap(
>>>>>>> tableViewerContentProvider.getKnownElements(),
>>>>>>> new Condition[] {
>>>>>>> new ConditionStrategy(
>>>>>>> MyPack.Literal.CLASS_A,
>>>>>>> MyPack.Literal.CLASS_A_ATTR_A),
>>>>>>> new ConditionStrategy(
>>>>>>> MyPack.Literal.CLASS_B,
>>>>>>> MyPack.Literal.CLASS_B_ATTR_B)
>>>>>>> }
>>>>>>> )
>>>>>>>
>>>>>>> But it haven't had time to really think about it, maybe it is
>>>>>>> complete
>>>>>>> nonesense anyways :-)
>>>>>>>
>>>>>>> Tom
>>>>>>>
>>>>>>> Suresh Subramanian schrieb:
>>>>>>>> Tom,
>>>>>>>>
>>>>>>>> Thanks for your input. It is not working if i have 2 unrealted
>>>>>>>> object
>>>>>>>> types.It is only working for one single Type. So i guess it is not
>>>>>>>> possible
>>>>>>>> then.
>>>>>>>>
>>>>>>>> Regards,
>>>>>>>> Suresh Subramanian
>>>>>>>> "Tom Schindl" <tom.schindl@bestsolution.at> wrote in message
>>>>>>>> news:gaqdnp$fs9$1@build.eclipse.org...
>>>>>>>>> Suresh Subramanian schrieb:
>>>>>>>>>> Hi,
>>>>>>>>>>
>>>>>>>>>> I am trying to write Table Viewer which shows my model element
>>>>>>>>>> and
>>>>>>>>>> trying
>>>>>>>>>> to use emf databinding for editing the model.
>>>>>>>>>>
>>>>>>>>>> I have 2different types of objects to display. For example
>>>>>>>>>>
>>>>>>>>>> Class A {
>>>>>>>>>> name,
>>>>>>>>>> description
>>>>>>>>>> }
>>>>>>>>>> Class B {
>>>>>>>>>> text,
>>>>>>>>>> description
>>>>>>>>>> }
>>>>>>>>>>
>>>>>>>>>> First column should display the name if the object is instance of
>>>>>>>>>> A
>>>>>>>>>> and
>>>>>>>>>> text
>>>>>>>>>> if the object is B. In second column i need to
>>>>>>>>>> display a description of the object.
>>>>>>>>> 1. It would help to see the NPE and where it happens, it's
>>>>>>>>> possible
>>>>>>>>> that
>>>>>>>>> my LabelProvider has a bug.
>>>>>>>>>
>>>>>>>>> 2. I haven't looked at the implementation of
>>>>>>>>> EMObservales.observeMap
>>>>>>>>> and
>>>>>>>>> if it can deal with 2 completely unrelated object types at least
>>>>>>>>> the
>>>>>>>>> Bean implementation can't so if it works is an undocumented
>>>>>>>>> feature.
>>>>>>>>>
>>>>>>>>> Tom
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> B e s t S o l u t i o n . at
>>>>>>>>> ------------------------------------------------------------ --------
>>>>>>>>> Tom Schindl
>>>>>>>>> JFace-Committer
>>>>>>>>> ------------------------------------------------------------ --------
>>>>>>> --
>>>>>>> B e s t S o l u t i o n . at
>>>>>>> ------------------------------------------------------------ --------
>>>>>>> Tom Schindl JFace-Committer
>>>>>>> ------------------------------------------------------------ --------
>>>>
>>>
>>> --
>>> B e s t S o l u t i o n . at
>>> ------------------------------------------------------------ --------
>>> Tom Schindl JFace-Committer
>>> ------------------------------------------------------------ --------
>>
>>
>
>
> --
> B e s t S o l u t i o n . at
> ------------------------------------------------------------ --------
> Tom Schindl JFace-Committer
> ------------------------------------------------------------ --------
Re: [Data Binding] Table viewer and EMF Data Binding. [message #422997 is a reply to message #422894] Sat, 20 September 2008 15:54 Go to previous messageGo to next message
Suresh Subramanian is currently offline Suresh SubramanianFriend
Messages: 61
Registered: July 2009
Member
This is a multi-part message in MIME format.

------=_NextPart_000_001A_01C91AFE.785AED10
Content-Type: text/plain;
charset="ISO-8859-15"
Content-Transfer-Encoding: quoted-printable

Tom

I am not sure how to make this work. Here is my mode Structure

Class X {
String text;
String description
}

Class A extends X {
}
Class B extends X {
String name;
}

I am setting the viewer input with a list which contains instance of =
both A and B.

if the list element is instance of A i need to display text in the =
column 0 and if it is instance of B i need to display Name.

I am trying use the ObservableMapLabelProvider but i gives me =
compilation error

Description Resource Path Location Type
The method setLabelProvider(CellLabelProvider) in the type ViewerColumn =
is not applicable for the arguments (ObservableMapLabelProvider) =
myPage.java myPlugin/src/myEditorPage.java line 277 Java Problem

if i want to try the condition approach i don't find ConditionStrategy =
and Condition. I am still kind of struck. Is there a sample code i can =
look for.Please let me know

Regards,
Suresh Subramanian


"Tom Schindl" <tom.schindl@bestsolution.at> wrote in message =
news:gat1so$9f8$1@build.eclipse.org...
> And the label provider I referenced yesterday also works.
>=20
> Tom
>=20
> Tom Schindl schrieb:
>> Hi,
>>=20
>> With standard ObservableMapLabelProvider this already works in
>> EMF-Databinding because of the way EMF works :-)
>>=20
>> I guess the problem is may LabelProvider then.
>>=20
>> Tom
>>=20
>> Tom Schindl schrieb:
>>> Hi,
>>>
>>> I know its not there :-) Let me check and see how this could be =
done.
>>>
>>> Tom
>>>
>>> Suresh Subramanian schrieb:
>>>> Tom,
>>>>
>>>> Is it possible for you help me writing
>>>> EMFObservables#observeConditionalMap(
>>>> new Condition[] {
>>>>> new ConditionStrategy(
>>>>> MyPack.Literal.CLASS_A,
>>>>> MyPack.Literal.CLASS_A_ATTR_A),
>>>>> new ConditionStrategy(
>>>>> MyPack.Literal.CLASS_B,
>>>>> MyPack.Literal.CLASS_B_ATTR_B)
>>>> I don't see that in 3.4
>>>>
>>>> Regards,
>>>> Suresh Subramanian
>>>> "Tom Schindl" <tom.schindl@bestsolution.at> wrote in message=20
>>>> news:gaqikq$a1d$1@build.eclipse.org...
>>>>> Could you simple
>>>>>
>>>>> Base {
>>>>> label: String
>>>>> }
>>>>>
>>>>> A extend Base {
>>>>>
>>>>> }
>>>>>
>>>>> B extend Base {
>>>>>
>>>>> }
>>>>>
>>>>> Then observe the base attribute label? If you depend on name and =
text
>>>>> somewhere else you could mark them as volatile and transient and
>>>>> delegate calls to them to Base#get/setLabel().
>>>>>
>>>>> I think I can remember having looked at this Observable-Map =
problem
>>>>> already and try to find a solution by make the observing somehow
>>>>> conditional.
>>>>>
>>>>> Something like this:
>>>>>
>>>>> EMFObservables#observeConditionalMap(
>>>>> tableViewerContentProvider.getKnownElements(),
>>>>> new Condition[] {
>>>>> new ConditionStrategy(
>>>>> MyPack.Literal.CLASS_A,
>>>>> MyPack.Literal.CLASS_A_ATTR_A),
>>>>> new ConditionStrategy(
>>>>> MyPack.Literal.CLASS_B,
>>>>> MyPack.Literal.CLASS_B_ATTR_B)
>>>>> }
>>>>> )
>>>>>
>>>>> But it haven't had time to really think about it, maybe it is =
complete
>>>>> nonesense anyways :-)
>>>>>
>>>>> Tom
>>>>>
>>>>> Suresh Subramanian schrieb:
>>>>>> Tom,
>>>>>>
>>>>>> Thanks for your input. It is not working if i have 2 unrealted =
object
>>>>>> types.It is only working for one single Type. So i guess it is =
not=20
>>>>>> possible
>>>>>> then.
>>>>>>
>>>>>> Regards,
>>>>>> Suresh Subramanian
>>>>>> "Tom Schindl" <tom.schindl@bestsolution.at> wrote in message
>>>>>> news:gaqdnp$fs9$1@build.eclipse.org...
>>>>>>> Suresh Subramanian schrieb:
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> I am trying to write Table Viewer which shows my model element =
and
>>>>>>>> trying
>>>>>>>> to use emf databinding for editing the model.
>>>>>>>>
>>>>>>>> I have 2different types of objects to display. For example
>>>>>>>>
>>>>>>>> Class A {
>>>>>>>> name,
>>>>>>>> description
>>>>>>>> }
>>>>>>>> Class B {
>>>>>>>> text,
>>>>>>>> description
>>>>>>>> }
>>>>>>>>
>>>>>>>> First column should display the name if the object is instance =
of A and
>>>>>>>> text
>>>>>>>> if the object is B. In second column i need to
>>>>>>>> display a description of the object.
>>>>>>> 1. It would help to see the NPE and where it happens, it's =
possible that
>>>>>>> my LabelProvider has a bug.
>>>>>>>
>>>>>>> 2. I haven't looked at the implementation of =
EMObservales.observeMap and
>>>>>>> if it can deal with 2 completely unrelated object types at =
least the
>>>>>>> Bean implementation can't so if it works is an undocumented =
feature.
>>>>>>>
>>>>>>> Tom
>>>>>>>
>>>>>>> --=20
>>>>>>> B e s t S o l u t i o n . at
>>>>>>> =
------------------------------------------------------------ --------
>>>>>>> Tom Schindl =
JFace-Committer
>>>>>>> =
------------------------------------------------------------ --------=20
>>>>> --=20
>>>>> B e s t S o l u t i o n . at
>>>>> =
------------------------------------------------------------ --------
>>>>> Tom Schindl =
JFace-Committer
>>>>> =
------------------------------------------------------------ --------=20
>>>
>>=20
>>=20
>=20
>=20
> --=20
> B e s t S o l u t i o n . at
> ------------------------------------------------------------ --------
> Tom Schindl JFace-Committer
> ------------------------------------------------------------ --------
------=_NextPart_000_001A_01C91AFE.785AED10
Content-Type: text/html;
charset="ISO-8859-15"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-15">
<META content=3D"MSHTML 6.00.2900.3354" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY>
<DIV><FONT face=3DArial size=3D2>Tom</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>I am not sure how to make this =
work.&nbsp; Here is=20
my mode Structure</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Class X {</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>String text;</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>String description</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>}</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Class A extends&nbsp; X {</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>}</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>Class B extends X {</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>String name;</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>}</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>I am setting the viewer input with a =
list which=20
contains instance of both A and B.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>if the list element is instance of A i =
need to=20
display text in the column 0 and if it is instance of B i need to =
display=20
Name.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>I am trying use the =
ObservableMapLabelProvider but=20
i gives me compilation error</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial color=3D#ff0000=20
size=3D2><STRONG> Description&nbsp;Resource&nbsp;Path&nbsp;Locatio n&nbsp;T=
ype<BR>The=20
method setLabelProvider(CellLabelProvider) in the type ViewerColumn is =
not=20
applicable for the arguments =
(ObservableMapLabelProvider)&nbsp;myPage.java=20
myPlugin/src/myEditorPage.java&nbsp;line 277&nbsp;Java=20
Problem<BR></STRONG></FONT><FONT face=3DArial color=3D#ff0000=20
size=3D2><STRONG></STRONG></FONT></DIV>
<DIV><FONT face=3DArial color=3D#ff0000 size=3D2><FONT =
color=3D#000000>if i want to try=20
the condition approach i don't find ConditionStrategy and Condition. I =
am still=20
kind of struck. Is there a sample code i can look for.Please let me=20
know</FONT></FONT></DIV>
<DIV><FONT face=3DArial color=3D#ff0000 size=3D2><FONT=20
color=3D#000000></FONT></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial color=3D#ff0000 size=3D2><FONT=20
color=3D#000000>Regards,</FONT></FONT></DIV>
<DIV><FONT face=3DArial color=3D#ff0000 size=3D2><FONT =
color=3D#000000>Suresh=20
Subramanian</FONT></DIV></FONT>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>"Tom Schindl" &lt;</FONT><A=20
href=3D"mailto:tom.schindl@bestsolution.at"><FONT face=3DArial=20
size=3D2>tom.schindl@bestsolution.at</FONT></A><FONT face=3DArial =
size=3D2>&gt; wrote=20
in message </FONT><A href=3D"news:gat1so$9f8$1@build.eclipse.org"><FONT =
face=3DArial=20
size=3D2>news:gat1so$9f8$1@build.eclipse.org</FONT></A><FONT =
face=3DArial=20
size=3D2>...</FONT></DIV><FONT face=3DArial size=3D2>&gt; And the label =
provider I=20
referenced yesterday also works.<BR>&gt; <BR>&gt; Tom<BR>&gt; <BR>&gt; =
Tom=20
Schindl schrieb:<BR>&gt;&gt; Hi,<BR>&gt;&gt; <BR>&gt;&gt; With standard=20
ObservableMapLabelProvider this already works in<BR>&gt;&gt; =
EMF-Databinding=20
because of the way EMF works :-)<BR>&gt;&gt; <BR>&gt;&gt; I guess the =
problem is=20
may LabelProvider then.<BR>&gt;&gt; <BR>&gt;&gt; Tom<BR>&gt;&gt; =
<BR>&gt;&gt;=20
Tom Schindl schrieb:<BR>&gt;&gt;&gt; Hi,<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt; =
I know=20
its not there :-) Let me check and see how this could be=20
done.<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt; =
Tom<BR>&gt;&gt;&gt;<BR>&gt;&gt;&gt; Suresh=20
Subramanian schrieb:<BR>&gt;&gt;&gt;&gt;=20
Tom,<BR>&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt; Is it possible for you help =
me=20
writing<BR>&gt;&gt;&gt;&gt;=20
EMFObservables#observeConditionalMap(<BR>&gt;&gt;&gt;&gt; new =
Condition[]=20
{<BR> &gt;&gt;&gt;&gt;&gt;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;=20
new=20
ConditionStrategy(<BR> &gt;&gt;&gt;&gt;&gt;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& nbsp;&nbsp;&nbsp;&nbsp;=20
MyPack.Literal.CLASS_A,<BR> &gt;&gt;&gt;&gt;&gt;&nbsp;&nbsp; &nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n bsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
MyPack.Literal.CLASS_A_ATTR_A),<BR> &gt;&gt;&gt;&gt;&gt;&nbsp;&nbsp; &nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;=20
new=20
ConditionStrategy(<BR> &gt;&gt;&gt;&gt;&gt;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& nbsp;&nbsp;&nbsp;&nbsp;=20
MyPack.Literal.CLASS_B,<BR> &gt;&gt;&gt;&gt;&gt;&nbsp;&nbsp; &nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n bsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
MyPack.Literal.CLASS_B_ATTR_B)<BR>&gt;&gt;&gt;&gt; I don't see that in=20
3.4<BR>&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt; Regards,<BR>&gt;&gt;&gt;&gt; =
Suresh=20
Subramanian<BR>&gt;&gt;&gt;&gt; "Tom Schindl" &lt;</FONT><A=20
href=3D"mailto:tom.schindl@bestsolution.at"><FONT face=3DArial=20
size=3D2>tom.schindl@bestsolution.at</FONT></A><FONT face=3DArial =
size=3D2>&gt; wrote=20
in message <BR>&gt;&gt;&gt;&gt; </FONT><A=20
href=3D"news:gaqikq$a1d$1@build.eclipse.org"><FONT face=3DArial=20
size=3D2>news:gaqikq$a1d$1@build.eclipse.org</FONT></A><FONT =
face=3DArial=20
size=3D2>...<BR>&gt;&gt;&gt;&gt;&gt; Could you=20
simple<BR>&gt;&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt;&gt; Base=20
{<BR>&gt;&gt;&gt;&gt;&gt;&nbsp; label: String<BR>&gt;&gt;&gt;&gt;&gt;=20
}<BR>&gt;&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt;&gt; A extend Base=20
{<BR>&gt;&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt;&gt;=20
}<BR>&gt;&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt;&gt; B extend Base=20
{<BR>&gt;&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt;&gt;=20
}<BR>&gt;&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt;&gt; Then observe the base=20
attribute label? If you depend on name and text<BR>&gt;&gt;&gt;&gt;&gt;=20
somewhere else you could mark them as volatile and transient=20
and<BR>&gt;&gt;&gt;&gt;&gt; delegate calls to them to=20
Base#get/setLabel().<BR>&gt;&gt;&gt;&gt;&gt; <BR>&gt;&gt;&gt;&gt;&gt; I =
think I=20
can remember having looked at this Observable-Map=20
problem<BR>&gt;&gt;&gt;&gt;&gt; already and try to find a solution by =
make the=20
observing somehow<BR>&gt;&gt;&gt;&gt;&gt;=20
conditional.<BR>&gt;&gt;&gt;&gt;&gt;<BR >&gt;&gt;&gt;&gt;&gt; Something =
like=20
this:<BR>&gt;&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt;&gt;=20
EMFObservables#observeConditionalMap(<BR>&gt;&gt;&gt;&gt;&gt;=20
tableViewerContentProvider.getKnownElements(),<BR>&gt;&gt;&gt;&gt;&gt; =
new=20
Condition[]=20
{<BR> &gt;&gt;&gt;&gt;&gt;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;=20
new=20
ConditionStrategy(<BR> &gt;&gt;&gt;&gt;&gt;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& nbsp;&nbsp;&nbsp;&nbsp;=20
MyPack.Literal.CLASS_A,<BR> &gt;&gt;&gt;&gt;&gt;&nbsp;&nbsp; &nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n bsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
MyPack.Literal.CLASS_A_ATTR_A),<BR> &gt;&gt;&gt;&gt;&gt;&nbsp;&nbsp; &nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;=20
new=20
ConditionStrategy(<BR> &gt;&gt;&gt;&gt;&gt;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& nbsp;&nbsp;&nbsp;&nbsp;=20
MyPack.Literal.CLASS_B,<BR> &gt;&gt;&gt;&gt;&gt;&nbsp;&nbsp; &nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n bsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
MyPack.Literal.CLASS_B_ATTR_B)<BR>&gt;&gt;&gt;&gt;&gt;&nbsp;=20
}<BR>&gt;&gt;&gt;&gt;&gt; =
)<BR>&gt;&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt;&gt; But=20
it haven't had time to really think about it, maybe it is=20
complete<BR>&gt;&gt;&gt;&gt;&gt; nonesense anyways=20
:-)<BR>&gt;&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt;&gt;=20
Tom<BR>&gt;&gt;&gt;&gt;&gt;<BR>&gt;&gt;&gt;&gt;&gt; Suresh Subramanian=20
schrieb:<BR>&gt;&gt;&gt;&gt;&gt;&gt;=20
Tom,<BR>&gt;&gt;&gt;&gt;&gt;&gt;<BR >&gt;&gt;&gt;&gt;&gt;&gt; Thanks for =
your=20
input. It is not working if i have 2 unrealted=20
object<BR>&gt;&gt;&gt;&gt;&gt;&gt; types.It is only working for one =
single Type.=20
So i guess it is not <BR>&gt;&gt;&gt;&gt;&gt;&gt;=20
possible<BR>&gt;&gt;&gt;&gt;&gt;&gt;=20
then.<BR>&gt;&gt;&gt;&gt;&gt;&gt;<BR >&gt;&gt;&gt;&gt;&gt;&gt;=20
Regards,<BR>&gt;&gt;&gt;&gt;&gt;&gt; Suresh=20
Subramanian<BR>&gt;&gt;&gt;&gt;&gt;&gt; "Tom Schindl" &lt;</FONT><A=20
href=3D"mailto:tom.schindl@bestsolution.at"><FONT face=3DArial=20
size=3D2>tom.schindl@bestsolution.at</FONT></A><FONT face=3DArial =
size=3D2>&gt; wrote=20
in message<BR>&gt;&gt;&gt;&gt;&gt;&gt; </FONT><A=20
href=3D"news:gaqdnp$fs9$1@build.eclipse.org"><FONT face=3DArial=20
size=3D2>news:gaqdnp$fs9$1@build.eclipse.org</FONT></A><FONT =
face=3DArial=20
size=3D2>...<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; Suresh Subramanian=20
schrieb:<BR> &gt;&gt;&gt;&gt;&gt;&gt;&gt;& ;gt;=20
Hi,<BR> &gt;&gt;&gt;&gt;&gt;&gt;&gt;& ;gt; <BR> &gt;&gt;&gt;&gt;&gt;&gt;&gt;& ;g=
t; I am=20
trying to write&nbsp; Table Viewer which shows my model element=20
and<BR> &gt;&gt;&gt;&gt;&gt;&gt;&gt;& ;gt;=20
trying<BR> &gt;&gt;&gt;&gt;&gt;&gt;&gt;& ;gt; to use emf databinding for =
editing=20
the=20
model.<BR> &gt;&gt;&gt;&gt;&gt;&gt;&gt;& ;gt; <BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt=
;&gt; I=20
have 2different types of objects to display. For=20
example<BR> &gt;&gt;&gt;&gt;&gt;&gt;&gt;& ;gt; <BR>&gt;&gt;&gt;&gt;&gt;&gt;&g=
t;&gt;=20
Class A {<BR> &gt;&gt;&gt;&gt;&gt;&gt;&gt;& ;gt;=20
name,<BR> &gt;&gt;&gt;&gt;&gt;&gt;&gt;& ;gt;=20
description<BR> &gt;&gt;&gt;&gt;&gt;&gt;&gt;& ;gt;=20
}<BR> &gt;&gt;&gt;&gt;&gt;&gt;&gt;& ;gt; Class B=20
{<BR> &gt;&gt;&gt;&gt;&gt;&gt;&gt;& ;gt; =
text,<BR> &gt;&gt;&gt;&gt;&gt;&gt;&gt;& ;gt;=20
description<BR> &gt;&gt;&gt;&gt;&gt;&gt;&gt;& ;gt;=20
}<BR> &gt;&gt;&gt;&gt;&gt;&gt;&gt;& ;gt; <BR> &gt;&gt;&gt;&gt;&gt;&gt;&gt;& ;gt;=
First=20
column should display the name if the object is instance of A=20
and<BR> &gt;&gt;&gt;&gt;&gt;&gt;&gt;& ;gt; =
text<BR> &gt;&gt;&gt;&gt;&gt;&gt;&gt;& ;gt;=20
if the object is B. In second column i need=20
to<BR> &gt;&gt;&gt;&gt;&gt;&gt;&gt;& ;gt; display a description of the=20
object.<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; 1. It would help to see the NPE =
and=20
where it happens, it's possible =
that<BR> &gt;&gt;&gt;&gt;&gt;&gt;&gt;& ;nbsp;&nbsp;=20
my LabelProvider has a=20
bug.<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; <BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; 2. =
I=20
haven't looked at the implementation of EMObservales.observeMap=20
and<BR> &gt;&gt;&gt;&gt;&gt;&gt;&gt;& ;nbsp;&nbsp; if it can deal with 2 =
completely=20
unrelated object types at least =
the<BR> &gt;&gt;&gt;&gt;&gt;&gt;&gt;& ;nbsp;&nbsp;=20
Bean implementation can't so if it works is an undocumented=20
feature.<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; <BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; =

Tom<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; <BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; --=20
<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt; B e s t S o l u t i o n .=20
at<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt;=20
------------------------------------------------------------ -------- <BR>&=
gt;&gt;&gt;&gt;&gt;&gt;&gt;=20
Tom=20
Schindl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&am p;nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
JFace-Committer<BR>&gt;&gt;&gt;&gt;&gt;&gt;&gt;=20
------------------------------------------------------------ --------=20
<BR>&gt;&gt;&gt;&gt;&gt; -- <BR>&gt;&gt;&gt;&gt;&gt; B e s t S o l u t i =
o n .=20
at<BR>&gt;&gt;&gt;&gt;&gt;=20
------------------------------------------------------------ -------- <BR>&=
gt;&gt;&gt;&gt;&gt;=20
Tom=20
Schindl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&am p;nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
JFace-Committer<BR>&gt;&gt;&gt;&gt;&gt;=20
------------------------------------------------------------ --------=20
<BR>&gt;&gt;&gt;<BR>&gt;&gt; <BR>&gt;&gt; <BR>&gt; <BR>&gt; <BR>&gt; -- =
<BR>&gt;=20
B e s t S o l u t i o n . at<BR>&gt;=20
------------------------------------------------------------ -------- <BR>&=
gt; Tom=20
Schindl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&am p;nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
JFace-Committer<BR>&gt;=20
------------------------------------------------------------ -------- </FON=
T></BODY></HTML>

------=_NextPart_000_001A_01C91AFE.785AED10--
Re: [Data Binding] Table viewer and EMF Data Binding. [message #423000 is a reply to message #422997] Sat, 20 September 2008 18:38 Go to previous messageGo to next message
Thomas Schindl is currently offline Thomas SchindlFriend
Messages: 6651
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------040207060504060909090905
Content-Type: text/plain; charset=ISO-8859-15
Content-Transfer-Encoding: 7bit

The ObservableMapLabelProvider is not assigned to a column but to a
viewer and it won't work for you!

The ConditionStrategy, ... is only something I thought about. We are
currently looking into this problem area in bug [1] but as stated before
EMF doesn't has issues with it. It's only the LabelProvider which
doesn't work.

Please take a look at the attached project and use the LabelProvider
from there.

Tom

[1] https://bugs.eclipse.org/bugs/show_bug.cgi?id=247997

Suresh Subramanian schrieb:
> Tom
>
> I am not sure how to make this work. Here is my mode Structure
>
> Class X {
> String text;
> String description
> }
>
> Class A extends X {
> }
> Class B extends X {
> String name;
> }
>
> I am setting the viewer input with a list which contains instance of
> both A and B.
>
> if the list element is instance of A i need to display text in the
> column 0 and if it is instance of B i need to display Name.
>
> I am trying use the ObservableMapLabelProvider but i gives me
> compilation error
>
> *Description Resource Path Location Type
> The method setLabelProvider(CellLabelProvider) in the type ViewerColumn
> is not applicable for the arguments
> (ObservableMapLabelProvider) myPage.java
> myPlugin/src/myEditorPage.java line 277 Java Problem
> ***
> if i want to try the condition approach i don't find ConditionStrategy
> and Condition. I am still kind of struck. Is there a sample code i can
> look for.Please let me know
>
> Regards,
> Suresh Subramanian
>
>
> "Tom Schindl" <tom.schindl@bestsolution.at
> <mailto:tom.schindl@bestsolution.at>> wrote in message
> news:gat1so$9f8$1@build.eclipse.org...
>> And the label provider I referenced yesterday also works.
>>
>> Tom
>>
>> Tom Schindl schrieb:
>>> Hi,
>>>
>>> With standard ObservableMapLabelProvider this already works in
>>> EMF-Databinding because of the way EMF works :-)
>>>
>>> I guess the problem is may LabelProvider then.
>>>
>>> Tom
>>>
>>> Tom Schindl schrieb:
>>>> Hi,
>>>>
>>>> I know its not there :-) Let me check and see how this could be done.
>>>>
>>>> Tom
>>>>
>>>> Suresh Subramanian schrieb:
>>>>> Tom,
>>>>>
>>>>> Is it possible for you help me writing
>>>>> EMFObservables#observeConditionalMap(
>>>>> new Condition[] {
>>>>>> new ConditionStrategy(
>>>>>> MyPack.Literal.CLASS_A,
>>>>>> MyPack.Literal.CLASS_A_ATTR_A),
>>>>>> new ConditionStrategy(
>>>>>> MyPack.Literal.CLASS_B,
>>>>>> MyPack.Literal.CLASS_B_ATTR_B)
>>>>> I don't see that in 3.4
>>>>>
>>>>> Regards,
>>>>> Suresh Subramanian
>>>>> "Tom Schindl" <tom.schindl@bestsolution.at
> <mailto:tom.schindl@bestsolution.at>> wrote in message
>>>>> news:gaqikq$a1d$1@build.eclipse.org...
>>>>>> Could you simple
>>>>>>
>>>>>> Base {
>>>>>> label: String
>>>>>> }
>>>>>>
>>>>>> A extend Base {
>>>>>>
>>>>>> }
>>>>>>
>>>>>> B extend Base {
>>>>>>
>>>>>> }
>>>>>>
>>>>>> Then observe the base attribute label? If you depend on name and text
>>>>>> somewhere else you could mark them as volatile and transient and
>>>>>> delegate calls to them to Base#get/setLabel().
>>>>>>
>>>>>> I think I can remember having looked at this Observable-Map problem
>>>>>> already and try to find a solution by make the observing somehow
>>>>>> conditional.
>>>>>>
>>>>>> Something like this:
>>>>>>
>>>>>> EMFObservables#observeConditionalMap(
>>>>>> tableViewerContentProvider.getKnownElements(),
>>>>>> new Condition[] {
>>>>>> new ConditionStrategy(
>>>>>> MyPack.Literal.CLASS_A,
>>>>>> MyPack.Literal.CLASS_A_ATTR_A),
>>>>>> new ConditionStrategy(
>>>>>> MyPack.Literal.CLASS_B,
>>>>>> MyPack.Literal.CLASS_B_ATTR_B)
>>>>>> }
>>>>>> )
>>>>>>
>>>>>> But it haven't had time to really think about it, maybe it is complete
>>>>>> nonesense anyways :-)
>>>>>>
>>>>>> Tom
>>>>>>
>>>>>> Suresh Subramanian schrieb:
>>>>>>> Tom,
>>>>>>>
>>>>>>> Thanks for your input. It is not working if i have 2 unrealted object
>>>>>>> types.It is only working for one single Type. So i guess it is not
>>>>>>> possible
>>>>>>> then.
>>>>>>>
>>>>>>> Regards,
>>>>>>> Suresh Subramanian
>>>>>>> "Tom Schindl" <tom.schindl@bestsolution.at
> <mailto:tom.schindl@bestsolution.at>> wrote in message
>>>>>>> news:gaqdnp$fs9$1@build.eclipse.org...
>>>>>>>> Suresh Subramanian schrieb:
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>> I am trying to write Table Viewer which shows my model element and
>>>>>>>>> trying
>>>>>>>>> to use emf databinding for editing the model.
>>>>>>>>>
>>>>>>>>> I have 2different types of objects to display. For example
>>>>>>>>>
>>>>>>>>> Class A {
>>>>>>>>> name,
>>>>>>>>> description
>>>>>>>>> }
>>>>>>>>> Class B {
>>>>>>>>> text,
>>>>>>>>> description
>>>>>>>>> }
>>>>>>>>>
>>>>>>>>> First column should display the name if the object is instance
> of A and
>>>>>>>>> text
>>>>>>>>> if the object is B. In second column i need to
>>>>>>>>> display a description of the object.
>>>>>>>> 1. It would help to see the NPE and where it happens, it's
> possible that
>>>>>>>> my LabelProvider has a bug.
>>>>>>>>
>>>>>>>> 2. I haven't looked at the implementation of
> EMObservales.observeMap and
>>>>>>>> if it can deal with 2 completely unrelated object types at
> least the
>>>>>>>> Bean implementation can't so if it works is an undocumented
> feature.
>>>>>>>>
>>>>>>>> Tom
>>>>>>>>
>>>>>>>> --
>>>>>>>> B e s t S o l u t i o n . at
>>>>>>>> ------------------------------------------------------------ --------
>>>>>>>> Tom Schindl JFace-Committer
>>>>>>>>
> ------------------------------------------------------------ --------
>>>>>> --
>>>>>> B e s t S o l u t i o n . at
>>>>>> ------------------------------------------------------------ --------
>>>>>> Tom Schindl JFace-Committer
>>>>>> ------------------------------------------------------------ --------
>>>>
>>>
>>>
>>
>>
>> --
>> B e s t S o l u t i o n . at
>> ------------------------------------------------------------ --------
>> Tom Schindl JFace-Committer
>> ------------------------------------------------------------ --------


--
B e s t S o l u t i o n . at
------------------------------------------------------------ --------
Tom Schindl JFace-Committer
------------------------------------------------------------ --------

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

UEsDBBQACAAIAEGkNDkAAAAAAAAAAAAAAAAbAAAAdGVzdC5jb25kb2JzLm1h cC8uY2xhc3Nw
YXRolZBBawIxEIXP+iuW3J2tQqGHXaWULSjUFt16lZgM67TpJJ0kpf77VlpR ChW8zRu+92Z4
1eTzzRUfKJE812oIV6pANt4Sd7V6bu8HN2oy7lfG6RiDTttxv3cUyEl2xSux rVUUo4r98mcs
/wWN5wPopQM0jkJEeLEJnM5stt+nYbZo1neP8/Z2Om8W5V+OOKGwdmBxkzvI 9OtEgWXSbLXY
1UO7C1jORstmMITry/8JFsF4QRB8zyRon1zuiOOZJJ9TyOkQtiHes1V50t0X UEsHCJS4/mLM
AAAAbwEAAFBLAwQUAAgACABBpDQ5AAAAAAAAAAAAAAAAGQAAAHRlc3QuY29u ZG9icy5tYXAv
LnByb2plY3S9ks9qAjEQxs/6FLJ3k/bWQ1xBS28tBe0DxGRcI5tJSLLSx+9k NytVEATB2/fN
fJNf/onlr21nJwjROFxUr+ylmgEqpw02i+pn+zF/q5b1VPjgjqDSO0QVjE8U rqcTgdJCnSAm
phxqt4vMSi94X6a2ctYCplrwUVGxrBSz5v/NrjOt3nhQZIpb05hEnQsF5kLD QLXGR2BHnbmB
hDzJPg/hDKcBGZouU+Ng+YUX/JpwD9JrYJ8SzZ7OvHoacaMOYOXDvFIoV0yo 1AUYooO+fbtD
P6P73I2RvNfvtmsMfl3nR0m486tffKY/UEsHCPXpFFjoAAAAiQIAAFBLAwQU AAgACABBpDQ5
AAAAAAAAAAAAAAAAJQAAAHRlc3QuY29uZG9icy5tYXAvTUVUQS1JTkYvTUFO SUZFU1QuTUaF
Us1vgjAUv/NXEJPdRiMYLxgP28JlmYuZye6P8sS39YO1hYh//YqIkrnorc3v 8712BYq2aF30
icaSVmkYs2nwXKtCYLQ6gWcsGZB3kJiGD5WoS1LdZQA2rcy1IN4TnBczrlWh c8skVAtLqhTo
vNfSmfqsGodf4l8EWLsGt0tDdmF6M9NFG91QgWYc/qY5CDqAO3r15QbsA39q Mlhke+R1R8hU
Q0Yricql4WuyyaKYzYNsX2njojXwbyj9BF15X/wxGE6MZCVGV+8lgpN51Gel oTYlQy6osujH
N8hMrRxJ9LoxhHLrzx5fNGQpJ0GuTZcG8VjiD7mmRd6P0vTbWk5mbM6mkz+8 Y14BDnJShV/3
lSpmybWqq3JbNL0WfW2B38+K7zVkOYKyt3tCBXzXSaXUyjIB/4QlbOYFw4M/ cUfN8Susuw/Z
pqGAQxv8AlBLBwiiAPXnTAEAAPECAABQSwMEFAAIAAgAQaQ0OQAAAAAAAAAA AAAAACcAAAB0
ZXN0LmNvbmRvYnMubWFwL2Jpbi9IZWxsb1dvcmxkJDEuY2xhc3OFUttu00AQ PdukdessTQg0
5VZC0rTNBeqGayUQEiogKgWQCLQCnhx7lWy1XUe204pHPgN+gGckaBFIfACf wkcAs06k8FLF
0sqzZ2bnnLn8+vP9J4AmNi1MMfAnQqlgNwiVX2laSDPk9twD11Gu7jrPO3vC iy3MMOTH6IuB
1m5HCYbMgasqvoz6yn3HUGoFYdcRnpL9SDjRYewcSr8r4sh5OAy5yzBzT2oZ 32eoVCdG13YY
0luBL+bAcIrDwqyNFLIcc8gxpKomINuSWjwb7HdE+HIoKt8KPFftuKE09xGY jnsyYphv/V8u
6UmFA21hkWHpJDXtHr2wUcB5w2vbuIglC5cY7HEqjssoMsx6oXBj8WqboXxy eUlCKs7kLHGU
TS3poC+0jQpWLawwFCe0hmMNVaqd6PwH2jeoG3u9pCdvTJo6R8NETEdKiL5h usaxbhBbRiY8
iIRv3EYL8U0QS8/awSD0xGNpmpkdV75u1oKQR9pTQSR196mIewE15BZuU1n7 rtQMherb1nh9
2nFIccl0+bbWItxSbhSJCBs05hSdabBc3kyb1nSKDnWd0AxZm3Q3iF1vfAWv H2P+cxJz2mCJ
x7wuIk8WJ9ugZ3A2wReQG2V5TywmtvkDhdf1L+DHONdqfMOFxhGufMKCgY6w /BGZoVXbJcfV
D39/j8nKibgSkvFhmShWsIhVQtZQI3sD9UREYUg0EsHJ44zKbCa5ruMG/dO0 UzdxJ5HLEtn0
/QNQSwcIj8SV/S4CAACoAwAAUEsDBBQACAAIAEGkNDkAAAAAAAAAAAAAAAAn AAAAdGVzdC5j
b25kb2JzLm1hcC9iaW4vSGVsbG9Xb3JsZCQyLmNsYXNzjVNpU9NQFD2vLaRL 2Iog7oAsbVmC
dUOKS1uKVNMClmVGP6XJs4RJEyZJYfxZOjpO/eD42f/gX3G8SWspwgwmk7z7 7jvv3nPPu+/n
72/fAdzDroAAg7jBDcPat2xDm0oLCDHMWnZN4qqhHzlcck5ciR9z03WkCje4 6uqWmdWUI5fb
DD3HijGlMgzLqmVqdeVIylumq+gmtzMMvau6qbvPGEYTF6wn9xhCeUvjETDE RPSgN4og+kQI
6GcIJjzAgEzYcqNe5faOUjU4Q1y2VMXYU2zdm7edIfdAdxj65e5aiEH/ia7V uNsizjWGVEK+
rLiCNyd2EYxiTMBVot9F3hvXFdW17A8iruE6Q4QXy5WdbDlfYBiTL4ZmYhTs pohbuM0gqDZX
XJ5l6EskOxuymTDGGQLZdAyTmBJwl0J3FkVMY4bqdLhL+0YS8qFyrEiGYtak imvrZo0Ix5BA
SkCSYeic2iLmME8ykxgFg9e9ihmmKX23Grz+XlKtet0ypYarG1JB1h2XqC9i SYDEMHEpWKSu
StPZKZr2D8vN6iHJm0m+9ZR4IOIhHnWUyJ1VIkdKLJMSOVJiBasCMl1K5EQ8 /atEzqP2XMQL
kCZBKs3LWUyezxpGnnq1zE/Gs2EU2iZlZdQ6s//ZEIRWSMCu8yJPtduTI0+0 YjVsla/rXlcO
nHbjoseJPAVTNSyHzqvE3QNLE7BFe05hIt6gwhBu6bJbZJg837CtniaCB7TP v0Zi0aQzzhuK
43AHS3SfgnTB2WDcu1RkBegTECZ/hKxlmnueaGruC/2+QvzoYwY8n79CCmEN g2SJZHveIcR9
/zCutKP8ImSIxsYnjDRxg6E0H7/TxEQAqc+INjHLMN/EQgD7PuA+Q3kh/riJ J12AhRagMw82
8SyAH5iM585GCrUXVuJrfoRTwjM+mdf0l4lkCRPYRApbSGMbOVTwDjtwsesX k2oRbhfjWet4
6ZdjYANFipiiSK/oC9Ir+zlKKNMYoqjbFMmTgvmS0PMHUEsHCFuqCIn0AgAA SAUAAFBLAwQU
AAgACABBpDQ5AAAAAAAAAAAAAAAAJQAAAHRlc3QuY29uZG9icy5tYXAvYmlu L0hlbGxvV29y
bGQuY2xhc3O1VwlXG9cV/h7bgBjHmDiucRNjOyQWYCIwce2A40QSwqYW2EEY ShyXjKQHjDOa
UUcjiJu6cdMlTvc1XdM2bbpviduyRE26b+ne/p+efm8ESKzGJ6dwjt5I7869 9/vu9t4b/331
dQBd+I+GCoHAGWlZzpjjWmkNVQINl40ZI2QZ9lToXPKyTHkCNSdN2/ROCVQG W0cFqqJOWgZQ
iTod1agR2Bk3bTmUzySlO2IkLSnQGHdShjVquKb6vvRjlTdt5gT0eMliL3/N GKYtsCd4MV6y
nPBc057qbR3VsEug2XGnQjJlmdmcDOVmvdCsmZ6SXi7UZ+aylnElgAbUBbAb ezTcIdBZLn55
0kjJUNrwjKRpp6nUV5AYGzmXzEl3RnmW0/EW7BWopc5haVgZgeFg/CY2e1tX SaQcd7UVZ0V9
yNfZq2EfsZegt3QF0IQ7FYV3CbRsw+BoAM04qOGAQMct2dZxCHcL3Obm7THT m+6Tk0beYlz7
g7eIoSxCw3nbVju9fkYY7hQje/sGIRTQ0kUAAgdvipFBSLnS8OSFAYFDm3OS mCaPfnq0U+1a
KWpy8l7otGum4/5jAG0qQe5Dp4aQwF1bqtVZGkcF6nLSK74tcPfmnhRFfFfu ZxjXp96MKWel
S0Ez5436zwF0420q7scF7t1cc9TJZJ2c6Uk/8t14QEcPyFCAu1HH9lzHUp61 bqHAF2LmPbhB
DZWR1MeYB3ASDymnHmY4gwPKZAR9GqJblN+SAR0x9AvsWCFM6RO4Ixhf20p8 ms4IRLeu0GXK
SiWqyFPWpO2dd50ZM61YPK1i2o2zOuIYZM/JybUyAqHV/K4OycAacd+9cwI9 262KjJENDZS8
HDSyyqtHdAwjwU5Kks7azqwds2SGZlghp4LbbxuEU648Ib3eOlzAmAZWXHPK sdPKfLS4njdS
TxhTsiXOfHENiy3tHRhnJMMTE2FW0iqjMjPJZ2U5FvZYpck8cyyAi7ik4TGB trWy5f7FBvtX
Nc53YoIZWfRa4Rd4aftNZQOEmznKbpJPeXlC62d7yLvyFvrv+ij5RBo6kj5H kYmJiIY0+0JJ
KOpY+YwdN5LSWs6OWkxSuOWpzqsBpDCtasVUk+Lim3Fko5mnkvoJHRY4iBr8 oirzQqBry5SO
GDm56gVfoYCjI4t3CdQX++sgR7ilarQ1XpZJHkcx31DsMLYe8uzp0XNDI+GB odjwxEQsHhuM
DY0ktkioYTkpXWmnigk1q+NJsPHXLyWIKmOB54Kbvb3UJf4fSWDRdDn5ypVe xfRTOt6j2lct
mR6ws3lPw3sF9m/W8yJ5z3PsAK7imsqA9wkc3k4LZ0Otxft5lCLx5uQV9f4H dXwIz3I+0vCI
fNJb0zHLjkDPrT44HA3gOj6irH9UnZs2CKAK+VV8XMcn8EmB3UY6nZAWmTUd W+GWtsqjjvV+
yxnVpkLrhP0hL9i/mm8ykSk1w6G2RYKWxiCFK7KUjm0gfcvToHiQzNLFB99U PdInK6twbtkK
FM4Ua2MD6rmTFDiwKU/F/GGJfR3f0PAiA7imk/cbKc9xr+j4Jl7iKUQODCVG wkPRmMDe+Mai
vfVU9m0d31H1vbNY3ysOqb3v6fg+fsBMK+5xIOwoq/twby1+RNzhrnr8BK9o eJlmVzZ13FBJ
WsUkDdfjZ5jT8HOBXeuA65jHAiudIEvj7p41407VcsrJZBw7lPdMKxTzq7Ae r+IXGgprTnIb
Cut4Da/zIsKU3uSE8ahC/Csdv8ZvVhBHViOOEPHviDhCxH/AnzT8sQxxRMef lxHzPcGTTH0Z
V+XfIuo0lnDybkr2m+qGs7NUpfcpz1i3AzbJiVpGLidzGv61Pt5Lk5sNaHl2 4yD7dSXUXxWf
eMXip8ZvIa6Ca3XbPGpf4UMFAvys8X/ch3p+6kUBrju41uE27Fx6+TEqq+C6 t4CG8Xne0NoX
cHsBTePt83jrAvaX9O3h+8CdqMV+6mnmvWo/L0hHfP17ijrQgnu41vLidS8O 00IdgmgtWhIn
aElZfL6tgDaaOjKHjgK6x+n1sXj7HE4UcHJ8l9Ywj1NzCBdwmjIDg+0Ue3v1 axga6qjk4/kb
GFnAo4mOquKXx9WXAlLjHY1yHlM9Ve1NVXO4vAC7p7q9qfoG3AXMzOHdBVwd b2uoncfTPTVN
NY3PzOEDTTUFXB9vqp7Hh+fwsRLOCL1XpNajkxi7iKgbHbgfR3EMx/nfhxN4 BKdwCQ9x4D+M
aYQ5EyO4hiie5e7neMZSnJwposWn8Gmuu/EMPoPPkosOmJR5ntaOYwKfxxcY 1Et4AF/El8jQ
NK8jX8ZXyPU1svoCvso41qkZvRSvF/meSoLTN/C1RXxL4Kz/8F2BeHvjDxfx 4wq0LeKnAu2L
WKzAmL/7S4HBI42/XcTvl3ePFHfbXl6BfYhhA4dzHVOikQ7t4yHuMB4nCQYB J3mYT/uwDqgb
PuErJ0HJY3gDf6FznUyGF/BXaqvA33ytf8c//ASs5IW2+Hd9ab2Af+LfNXX/ A1BLBwjJKtZZ
UgcAAHMQAABQSwMEFAAIAAgAQaQ0OQAAAAAAAAAAAAAAADoAAAB0ZXN0LmNv bmRvYnMubWFw
L2Jpbi9PYnNlcnZhYmxlQ29sdW1uTGFiZWxQcm92aWRlciQxLmNsYXNzpVRr TxNRED2XFpaW
FQqKDxSQUrQPYEFEkSJGCybEBUwwGOOn2+0Ulmx3ye62hM/+IhMUH4k/wB9l nLs0mBItAXez
6dzp3DPn3DszP399+wFgFssaOgRGN8sB+Q1ZdqjkOfWaa8oyOa99r2FXyM/M aogLpPZkQxqO
dHeMzfIeWaGGLoFlz98xyHLs/YAMy/PJqMhQlm23YnOgd4pr1OS+sbYu90u7 jECmHYTkki/Q
Fe7aQWaGSZhtWRQ5dMl27XBZIJ09Jza3LRAveRVKQOCKDg3dScTQpyOBlEAs qwL6TNuljXqt
TP4bBSQwYHqWdLalb6t10xlXBAXG2qfMzDLBPtZWcehUpcCzrHmRAzrdudog N2QZCdzEkIZb
AouXx9FxG3dYSMWuVgXmL8pohbcVkxjBXQ2jAnOX2K5jDGmB3h0KT3hVXtEh H2p/NmdGZVUP
bcfYorCoIXMmxV5VWmQ0bDogPzBaDr2JFYnswT1kNdzn+25B1JFDXkALvee+ Lw8FBrO59+bZ
WmZ945hU5TElsNJ6aa0E1l7IgFqr7S9wue0kDHDjcGEPty0cHQ8wJ9AtLYuC qBHenlfdbdj9
83iilugkZQos/U9R8iSQ1SqLZGSHauwKVC+1XiMLculg9STd/KUICyS3vLpv 0UtbtWG67ZlM
q/RMY9W1HC9gEesU7noVAX3N5TFTcmQQUIAZHgcx/johUik1FXgIdvCXQJK9 PWwt8Fp5kvnC
J+j5Y/R+jGL6lS/6R+2ewABbOtvKexXXIv8grjdRPiDOLzBeOMKNzxhe/47x d/kj6JNfMSFw
jMKGWk19wfQf+BEmBGSZVI6h80ihwIA5DGESaUxFKfMnsM2UynqIeU7azS3+ CI8ZaYjFLOAJ
y4xhMcIuYol/41yPwNOIsIiI8/MbUEsHCCYoaeqpAgAACAYAAFBLAwQUAAgA CABBpDQ5AAAA
AAAAAAAAAAAAQgAAAHRlc3QuY29uZG9icy5tYXAvYmluL09ic2VydmFibGVD b2x1bW5MYWJl
bFByb3ZpZGVyJEVNRkxvb2tVcC5jbGFzc41VXVMcRRQ9zc4wyzIxQIA4MSQQ CdklwAaiiVlI
NEGI6PKhJCgfRmeXZhmYnVlmZjExicZU/HiwfE/KF6uoosoHK1ZZBLSk4osP 8cUfYpX/wHh7
ZsHALsjLTHff0/ecvvf27Sf//LwOoBN3FJQxnBhOudxZ1FMm77XNfNZK6ilu jjj2ojHNnea+
wf6kbc9fzSmQGFpsJxPXc3p6lsfTdjZrW27c1K1M3OPXvfio5whsPscQ5ibP cstzGQ5MJuf0
RT3ADafmeNrrZijvMSzDu8AQisbGGKRee5pHEEKlCgVhhv1Jw+JD+WyKO1eE NoaapJ3WzTHd
McS8sCh5swZxxJJ7PIVgNgsaW6LPCCPthpXpjhUvhXGAgbVFUIeDCuoZqrZD VDwPjUF2c6bh
UURL+Z0s5fgFhrKpjgowNKiQUR7BUTQpaGSo/g89YHk8wx0Vx/AiBTanOy6n NYa6UjwDCo6T
O5EnnjaNnMvjPDtDY9vh8b4g/JVoxgkVUcQoGrzX1F0KYWM0ltxhl4/orsRJ tCtoYzi8G05F
B+IMWoZ7fRdNk3Tl017e0c1+rtOfE9XxElRBNcXznmHG+5KG6xFfJ04r6GJo +l+wipfwMgXH
8Lije7bDUB8tpNIHDRTWyelZnFPwCpVTsVVFAlQgkkXFzFAbjRUXroLzDNEd zl901kr04FUV
r+Eig0IBGdKzfLvjQuJEefWqeB19IicLed10t2W4oCA2IdJ3WcUbGCCt/DIn rReiO+WuSFN3
iVOJqLylIolB0jmru0N+AOhmToQxTDV685SCtxkObld9KW+YdL2E9lEVV3CV ti/qZp4Pz2y7
XhviSx18BO+KS//eDhU9JhATKiYxRaHRczluTTO07+nyFgT6JNdUfCASEfbs wBiGThf7toL0
ljsdSI2AI6NgZuPUfoMb5K6rZ3i/7WR1qrlZGKRoxp8xnCuhqETrKxmCFK6F YTJQJwjN8xui
2RWhGCoDqhHdKeqrmxg5F1hlPw9bHW023yO733SKCh2MUXkpM0HRMLTuvcAY 1EBoIIohMmrn
nTTvN0THPrZrp+4QasnBgGVxx1fDXQWfUEfbdRtDxWaLR6OIIkQsmWiqNCqj Eb0q9K2g2Wnf
AsitjxD50Ter9I3QH5QJCdPYRyM1AOE57PedVaE6cMD+plXxbzpZU7OC2sG2 UFfNIRoMtf6E
w+2hrlUc6UpImvQbmu/jbvu6tIRbmvQYzWtoYUjI0pnyZaQ1eQ2tDGs4RWvh ZXRq4TWcYXiM
noSiKWugx7G9rrxrBZfuo9bfL1b7y5CQlrFPoN9kePD0jwKR9izFvXJWV96+ /t3Tb9sE/VzN
UEL+BSPjmryKdx5hTAgfb5PI+fgK3k/IbevyEo4WI+RNxBbbhxurmiz9itR4 SJNGVzH9UJN+
R6UmrWBuGXLN/MPN4E6gnr4GZWGOAmmiARY9Jzb1nRzOY4HsDubh4gY83KL5 F7iOb2j2gOxL
uIPv8Rl+wF08wT38ic/xF75kZfiKVeNrP1lTQUIKyRKjLDFQ1tkhYsmRiirC LtAohAYmEZtL
iT5LqCgxytT455DHIlXLBL2zHxG7QnxpUmCRtQwf+ye5SdpEoYj6uY1PEfkX UEsHCKmALpO4
BAAATAkAAFBLAwQUAAgACABBpDQ5AAAAAAAAAAAAAAAAOAAAAHRlc3QuY29u ZG9icy5tYXAv
YmluL09ic2VydmFibGVDb2x1bW5MYWJlbFByb3ZpZGVyLmNsYXNzpVXbUhtH ED2zwgjkNQZx
DYSAMWBdgAViwDEXGwuICeIqwFHIbSUNYomkVe2u5HxAfiIvqcqTX20nQDmU XXnKQ74kVanK
JyTp2V2LmwLBqEo7s7PTp0+f7un5/e9f3gAYwq4XEkP7csLkRlFNZHhEzxSy uaia4JkVQy9q
KW54UcHQrxtphSczWt7kyu62muRKUeNPuWEqZUwYZItn8xnV4uv8W4vBH91V i6qSUXNpJWYZ
Wi49znBDtWiaKFh8Uc2bDJNb0eNekrrBlZRqqQktlyILRS+xVLJqXpk/Yk32 hFdpFhKmRc77
bRw1ryZ3BEw2q+dMx7dFbASBmNipWQVLN8iwjuAiO/SdRzXT4jkRwMPLcVk8 jUCwVRNkndOs
KQZPILjJUBHRU9yLOobwJQh6Uc9w59wUdc8uzkV1/ZuNvA9+NMpoQg3pMWF7 96EWLWLpPfIb
uFAagVPIjwc3q8HQJqMaPoabUS3HlwrZBDfWBQeRUT2pZjZVQxPv7uJq4CoZ PFsjwU0vOhnu
vzuoj4LoEsHfZlgLXKnAytGjnFo7GtVuR/TcBFE1yMernWHiKlR88KDRixD5 Pb8uhnwIok/E
3086BC4g6eRckXEdspgNyfCi6jo68KGMuxhhaFBTqTOlzhC5ZN7PnhbH9ZiM a6hkYBr95xm8
Kc3M6yYXFCZkTAoKzQbP6kV+BkJo8kDGfVH5VWluzWfVNJXk3cCxvC0ndnnS Gg+eYGs+tZS0
oeZ3tKSp2FaULS/P8CzPnWpdrj19JgdOZ+sti3+mVHz4GPNePGaoPf1NxidY oNOa4bm0tWP3
Ctq5eGKnAyxkWJaxglXaRQwu9u4uiRYQk7GODYZ6Mnx7bNe4qWeKIoOhQPD/ doZqajFPZHyK
OAntykQnoH6rvN8tGZ/jC5LM4HQhJPkp0m+PUrkLokpNJrlpdg8yPLmodqP/ fUGd2OgUTWq2
SKyp6nxQkfQi4bbk8gCPVJOfAJGRAgXSsq0ZvBw6w73AOxJi8MX0gpHkc5ro qF3nRj0gRKPW
Mp+jAxDJqKbJKRPVpdsAt+hQeeimr4AkThbN/OJI0+gTjZ1GSRx2GsXqDdTQ /pv0NkoW4uc/
RG38EP74ARoO0PwTWl/YNu/bCBI9O1GHRrTbqyDrJnzgYqyQR+G7JlTxGh1x TzjWd4Bbp+1H
yeuYbd/p7EY3emzfNejFHcISM8FdstFvu+jfE0PBcSR0gEDoEME4TcJ7GAjR Y9Az9Qz+cPtw
6GcMvMKwhO88rD385sd//gr17WH0iESXLcYkQfVQrT6gUB6iFdPk+iEURKjr zdjkQo6zErkR
WzBmzxxyzWjBPXxEQTDRhFyaGn0RYfZ4Jp6hkegMtrmkxokUY21iiXj9Qeyn jmg1ESioZVzD
YzTQ2Ek9ohsLNpUmB9ClIpHewi01TKI8Xcofs3dJ7HkJs9Kmu3QMQyqFI+ER BSswZjDrYuy5
Cq8SxdHfsCCGfcz9gGmb82tEF4XMjX3t4r19OPwKSxJiQuk+iujPl2jdx9qv 8JPim/Ti2H/2
/BglR/01KqEYqb5O7W0DAzSOUXeZQRzL1DqO1F8t0V116baS+tSHbLQ2R/3a KnyJr9wQel31
K0PhfXz94pQUrFS2ErbtZxo79hGR6NZ0fn7apcH3L1BLBwhKxsUQ0gQAADEL AABQSwMEFAAI
AAgAQaQ0OQAAAAAAAAAAAAAAACQAAAB0ZXN0LmNvbmRvYnMubWFwL2Jpbi9j b25kbWFwL0Eu
Y2xhc3N1UE1Lw1AQnK1pYz+0PehBsNfSXvro2VMQPRUUCt5fkzVNSd4LL68F /1oP/QH+KOkm
Fjyoh91ZmNmBmc+vwxHAAqMQLUI3tiYpdKmiEAFhtNV7rXJtUvWy3nLsQ3QI Y+tSxXGelRUr
Lt7lto7V07eEEKTsI8LNdLb8+V95l5n0QdiqYW+nv8nZG+FOJ8mrsyU7//G4 EZKXWeXZsCNM
zj9r1qZSf6sak3vHhd3zfz69ld25mJ+znAmdaF6bSi7ChUxb6ggke4hL1B10 0Wuwj0GDVzWK
7lp2C8MTUEsHCD6kNrPZAAAAQQEAAFBLAwQUAAgACABBpDQ5AAAAAAAAAAAA AAAAJAAAAHRl
c3QuY29uZG9icy5tYXAvYmluL2NvbmRtYXAvQi5jbGFzc3VQTU/CUBCcxULl Q+GgBxO5Erjw
wtlbjZ5INCHx/mjXUtK+17w+SPxrHPgB/ijDtpJ4UA+7s8nMTjLz+XU4Alhg FKJF6MbWJIUu
VRQiIIy2eq9Vrk2qXtZbjn2IDmFsXao4zrOyYsXFu9zWsXr6lhCClH1EuJnO lj//K+8ykz4I
WzXs7fQ3OXsj3OkkeXW2ZOc/HjdC8jKrPBt2hMn5Z83aVOpvVWNy77iwe/7P p7eyOxfzc5Yz
oRPNa1PJRbiQaUsdgWQPcYm6gy56DfYxaPCqRtFdy25heAJQSwcIYSDdAdkA AABBAQAAUEsD
BBQACAAIAEGkNDkAAAAAAAAAAAAAAAAxAAAAdGVzdC5jb25kb2JzLm1hcC9i aW4vY29uZG1h
cC9Db25kbWFwRmFjdG9yeS5jbGFzc3VSXUsCQRQ9Y+rqpvmVZvZhj0rQ0nMR qCgEYoHi+zhO
srYfMq1BPyt6iR76Af2o6M66UYYtzJyZc+85e+/e/fh8ewdwjhMDMYaK8L2p yxdWZ4U9LgJf
PRmIM+Tn/JFbDvdm1s1kLkVgIMlw7KuZJYVjLx6kJd07OvtKWt1IyZCW14Ph qDXodBmq/c3+
FwypS/Lw7OCKYavRHDPEO/5UmsgiZ2CHof6ttN2F80d+TVQGeRRIpT0Yao3m f69Kg6GUgYEU
Q65ve3KwdCdSjfjEkQzFvi+4M+bK1veIzAkleSDJKOAkUAzldf8VTV0Yq8wW Q/ZXRusn0l6P
tClSmMkgqvGWi3s+kxvrj2IkMIf+UgnZs3VtpfX2zvSQaCz0FWklaO3rVmnE CdrTMInZptsp
oX6MV2ReUHymYwy7tJuEQA1JlFAOWT37CvZCrJKdxhoOQjzEEeXQXxBm1r8A UEsHCOU5qIhb
AQAATgIAAFBLAwQUAAgACABBpDQ5AAAAAAAAAAAAAAAAOgAAAHRlc3QuY29u ZG9icy5tYXAv
YmluL2NvbmRtYXAvQ29uZG1hcFBhY2thZ2UkTGl0ZXJhbHMuY2xhc3N9k+1S 01AQht8D2FI4
CPIlxQ8ooIIgFVFR+dA0BO1MCJ02w4y/Mmk41GCadNLgDLfg3ai/9IcX4EUx 7jktoDO0nUn2
3e7m6fbdnD/nv34DWMNeGj0MM14UHtXdRl5vxZLrfXZrYsH0ExG7QTONPoaR E/eLmw/csJY/
qJ4IL2HI6AeWrRUto8xw34ziWl54gd9oiryoH5OOYpE39MBtNjcZxi6bHccw jX3DsisMc50e
K4tjEYvQE/Qo0xj6NMfRuvRrSRL71dNE9Reov+A4FLJGqXxQMsr2R0f/oFnv DccsVmxDjZzr
xNp1E9c+a0hU/xaVQz/ZYehdXDokrh4diQzGMZnGBMPk9dZx3MYUGSSKVsXW LN1gmDKvb90c
JNg0xx3cZeA1kVA5cf1QxAyzi0vdbc2AnOe4gZSkzHLkMMcw8S/FMQJRF2HS ZFjojLuyWyIX
ONLol8iHHI/kYH2E1GRpiSPT+rVljhU8YUjJktxNF/zVdiQjzzGAQclY43h2 gS/I0nMO3sK/
5Ni4wBccVXzNMdR6bpNjC9sM01Q0SnHUEHFypn+il1OYfjMRyr35zvNcblhi 33LcxDDDsEl+
Waf1qohttxoIhlEz8tzg0I19mbe/HKhEp7En9nyZjP2/zFV5SGiNxZAmUCsS 5Hv/xUFK0buJ
Xjp5aWTl0khlpdMqZto5WaMib+dD7ZxmpEg0jOAWxVHKvlKUH+s7xn4iy/AD 95SckXJeyQdS
Lir5WMpVJZ9Kua7kCylfKflGyp1vROzBO7rPydlYGoNsGJMsixzLYYUtY4Ot o8C2sY9zaKpb
XgV117FLcQDyv47DSGX+AlBLBwifC5cxbwIAAG4EAABQSwMEFAAIAAgAQaQ0 OQAAAAAAAAAA
AAAAADEAAAB0ZXN0LmNvbmRvYnMubWFwL2Jpbi9jb25kbWFwL0NvbmRtYXBQ YWNrYWdlLmNs
YXNzfVRrU9NAFL0rpWlrkZc8igooqCDa+H4AomncamZK2mkDo58y27CUYJp0 kq0MP8vxi+MH
f4A/yvFuKFAy1Mwk956759zNnt3kz99fvwHgCWgKXCEw7QT+Xpt1VP0k1pjz lbW4AikCY4fs
G1M95rfUavOQO0KBNIH5IGyp3PHcTsRV3t7HPAi5SntKAsPc1LYpgYnKub4h QtdvbRAYwXki
wXyxy7wuz8BVAkrvFTDjZsPeqRsZuEZg7kCIzrqqHh0dFZs8ElHgdYUb+EUm COQks1anZeMz
gSw3zIalmTpOOlu5fEE4dVavmpZmmLROgBhDaAIQmDwr2jat0G1qWg0CM+fV MtWsnTq19eqO
aUkRQbVGIKXZNoZR7SIDB0uShdamSrZdQkYpySjQWr1ao3Xri61/0syP1K4Y DYvibFI5RCCz
ifb6rtgiMLSyuout9GCP5+Au3FfgHoGF0zW67Y6XWKiBpTyswCqqZA80cmV1 kClZdGAtD2Mw
ju9ZcX1udttNHlqs6XG5gYHDvF0WuhL3ivkWF9hFMGSHBBax+YADoXssitD3 qX6FTT3e5r6I
CCwPltb5Pg+578htS6EcjU7LIB3/j0wTeMyaXXEqK53ISnIb5jChtTDo8FAc 6wd4KHnFjQSP
V7E0uOcHJph13JEtx08WIg0sM0cE4fGl5vbGUJBrBN3Q4WVXGjd50fui/DjQ TsPHN4it4pEC
7/o29yJ/ueIKHjIPjcucpvg14gnBexiuQQEUyGCelacPcojzfXgE8WhiHLcd 8wJMwORZ/Tri
qQSe7sMziGcTuJDgzyXGb/Thm4hvJfjzCf5CH17EmIHbcAcrS1hZwygv5Scs /4AH32PSQ3zm
MAK8hTS2exRX5S+sCGocH+MPT8anPfwMnsfxRQ+/7OFX8DqOb2A97rERPzex r5yBwBbe79PZ
f1BLBwjFXsqyvAIAAEUFAABQSwMEFAAIAAgAQaQ0OQAAAAAAAAAAAAAAACwA AAB0ZXN0LmNv
bmRvYnMubWFwL2Jpbi9jb25kbWFwL0NvbnRhaW5lci5jbGFzc42QTUoDQRCF X02Mk5mo6AGy
FJKNTdYRNzKzCmSRE7SdcujQP6GnJ4dz4QE8VLBUENSNi4JX8N6jvno7vbwC WOKyREG4MTHs
vD6oxxiytoFTiTPC9V4ftXI6dGrztGeTS5wTZjF1io2zh54V+2fRMbFqviyE ace5cew55J5w
O1+sfwdM9D4GNWTrVLO2fV4Rqq3tgs5DYkL7n8z9H8uPO1YPUlpv45AMt9ZJ 69U33N0Hl5AQ
RjJjeQQJbYmJbJVsBWpR00918Q5QSwcIxou448cAAAArAQAAUEsDBBQACAAI AEGkNDkAAAAA
AAAAAAAAAAAtAAAAdGVzdC5jb25kb2JzLm1hcC9iaW4vY29uZG1hcC9pbXBs L0FJbXBsLmNs
YXNzjVVtUxNXGD1LAglxfSlCBEEFpDYJKdHWWjX0BRBtbEQqCJVadQk3uJjs hs0GpbXa2reZ
TjvtV6ad9qMdxw9qa2i10+mndqY/qtNzN0sIIajMsPfu3ec557nnecm//z36 E8ABfOlDnYKm
lGnMZLVcTM/mMrGBBJ8+eBXsM63ZmEhl9FxexEQ2zb1piZLV8OnpOZGyS7YN ChpXMAYU+PKF
XM60bAXdyTltQYtNC83Ix0YtMycse3HosmbMirGSTVxBYODi8LHh4wNnk+OM peSRoUlszLZ0
Y5YWiqbA389ADN1+XYEnFJ5Q4B0yZ0QjFGxT0YiAgq1J3RAjhey0sMa16YyQ YGZKy0xoli7f
3cOGfgcmAA9aVGzHZh92KOh8WqABBNEm7XcqaAlVRFkSIh6ekLF0qPDBL3e7 VWySUXnty3pe
QXNyvci8mSrGbM3WU0MZLU+rzlA4WVv0Ycci3oge7PPheQV7VvCGSuuolrqi zYqepG4LS8vk
VbyAEKVjPnY/GZMxzgqbds1kr6G+N+98XXNp92N4wo9NUpmYiv04QMXTuiXW 6qfgSA3P9QLW
kjRAIV9WcRCvkF+MmLae1lPUyzTOiPkCqWacapjy4VUF0SeVa6Wv1D6AQzgi 03lUwWhoA4ES
BrU0tIxb7PFE4tnD7lfxGlisvlLYiwpi62lSZjZrGjHDsYhVxhh3StwQV6m8 18zMcGnTZmbW
SpvU87YwhMVWDW3caStWTmBBHFMxgEE2VKbsvfcZnFnblsiaC6L2d4mcUHFC InvFCcHm3xFK
TE2F1+sj1TmlIoyI7MHTKk7ibQ6QtNDsgiUSx1i0CepmibyZWWD5KFMMVuZj fDEnJPqYRA+G
aiQjPOHDu5wI1eUmKadU9CIqKc+rOAvK66e8E1qmINaOHReLk0KcNfKSyxtK SO08mFZxEZfk
l0R+bOXLVACTSKuYxWX5Zb7A7ttgRkxJkDkVKbBw/ba5Gl1WhSGr3E9kKnxt UVrmVFxBxAem
KFh9pcFCOi1ln4ctyzjqx4KC+s6QdrRTHl5TsYgPGI+WywmDbNFa7bvuqIQa lwjXJcJHCtpD
Q0+0y5GEuSpkKEfrRoac8mNmwUqJ47qcwQFn/vVJY87AhMECcmaRyPvwOS9b e7ZRnZXphi5q
5uF/PZ91cuby96xD/g5w9crJy1XlqYrNtNrCtzBX+Vev/IKt97mpw3N8BrgC fXTaiybnVAJs
L7uN8E06tkaW0Rx5jOA5blofoj3yAFsfYtcqUhMtgTf57ME2HMYO9lmTE4bj jz3odLC70O1i
93GV37wPsPdeGafBOTtZ4et1fRXZNK5vzPWtj/yKXdXOYxXO9WVnlr/rfIvK eLjul86nIr28
B3ftTS9Ge4voixTx0hKCvOyhcxGvJyqNlnG4iPjqZXeSCThP9Pcp4QW0sDE6 cIlhaQ53Zwnf
5Za7NxBw8tVLiaToihxDbjwDfJfCN8ooGMJQdX50BjznAAdLhmXgRgzjuKPF iQ3h3qqGswiX
fwocp5ILN88EyNR2td9xbFqx+redYiXvRdo7qNDIahq2ONe/jmbcQBs+dqgi JZAyVRdG8Y6T
oi6cYcrqnN04d7KwOaFceovvEq3Hpe9YQx/9C5NFnLsfaY8u473ViwYpNfAV I/iaHt9gF75l
hX9XkZyeciQ95Uh6mM4LTnI451z+tKtmt8vfvoafXVCiX4ZWzb5E9u9p/wMj +JF3+6lC8u4y
e7fLrsix6HLecDkHXc54JScp/0GTrMq/4fPeRpvnNlp4KE+KEEvw8cDrvStj 0u9W5eRnxnQH
/bhbEctgOZbBcixXyp123RkxwEGmOrMEP/vfvPcY83IQmMvIJ3ubCkVcnewt 8XOzLVzEh5Ms
vBurFVFqmCKb8jcW0O9kfIQQHrNh/qiI5KAbSSsVu8m6UXj6iYNxC5865asw R5/hi4bG/wFQ
SwcI2dBP564FAADFCwAAUEsDBBQACAAIAEGkNDkAAAAAAAAAAAAAAAAtAAAA dGVzdC5jb25k
b2JzLm1hcC9iaW4vY29uZG1hcC9pbXBsL0JJbXBsLmNsYXNzjVVtcxNVGD3b ps0Li2BpQ0sK
tKViksYGFBFIfaGlYDCUSksrFYFtelO2JLvpZlOoIiq+zTg6+rWjox9xGD4A SqrgOH7SGX+U
47mbbZK2KdCZ7r1793nOee55XvLvfw//BLAfX3rRoKAlbRozOS0f13P5bHww yacXHgV7TWs2
LtJZPV8QcZHLcG9aomw1fHp6TqTtsm2zAv8KxqACb6GYz5uWraAnNactaPFp oRmF+Khl5oVl
Lw5d1oxZMVa2SSgIDF4cPjZ8/OjZ1DhjKXtkaRIfsy3dmKWFMq3AN8BADN1+ TUFjODKhwDNk
zgg/FGxV4UdAwZaUboiRYm5aWOPadFZIMDOtZSc0S5fv7mHzgAMTQCPaVGzD Zi+2K+h6UqAB
BNEh7XcoaAvXRFkWIhGZkLF0qvDCJ3e7VGySUXnsy3pBQWtqvci8mSrGbM3W 00NZrUCrrnAk
VV/0Ycci4Ucv9nrxnILdK3hD5XVUS1/RZkVvSreFpWULKp5HmNIxH7sej8kY Z4VNu1ay11Hf
U3C+rrq0+zEy4cMmqUxcxT7sp+IZ3RKr9VNwuI7negHrSRqgkC+pOICXyS9G TFvP6GnqZRpn
xHyRVDNONUx58YqC2OPKtdZXah/AQRyW6TyiYDS8gUBJg1oaWtYt9kQy+fRh D6h4FSxWbzns
RQXx9TRpM5czjbjhWMRrY0w4JW6Iq1TeY2ZnuHRoMzOrpU3pBVsYwmKrhjfu tBUrJ7Agjqk4
CsL5shXvPU/hzNq2RM5cEPW/S+SkihMS2SNOCDb/9nByaiqyXh+pzikVEURl D55WcRJvcYBk
hGYXLZE8xqJNUjdLFMzsAstHmWKwMh/ji3kh0cckejBcJxmRCS/e4URYW26S ckpFH2KS8ryK
s6C8Pso7oWWLYvXYcbE4KcRZoyC5POGk1K4R0you4pL8kiyMrXyZCmASGRWz uCy/zBfZfRvM
iCkJMqciDRauzzar0eVUGLLKfUSmwtcWpWVexRVEvWCKgmuvNFjMZKTs87Bl Gcd8WFDQ1BWe
PtIlD6+pWMT7jEfL54VBtli99l13VEZNSITrEuFDBaHw0GPt8iRhropZytG+ kSGn/JhZtNLi
uC5ncMCZf/3SmDMwabCAnFkkCl58zsvWn21UZ2W6oZuaNfK/ic8GOXP5e9Yp fwe4euTk5ary
VMVmWj3DtwhX+dek/IIt97hpwLN8BrgC/XTagxbnVAJsq7iN8E06tkeX0Rp9 hOA5btofIBS9
jy0PsLOK1EJL4A0+e7EVh7CdfdbihOH4Yze6HOxu9LjY/VzlN8997LlbwWl2 zk7W+HpcX0U2
jesbd32bor9i51rnsRrnpoozy991vkllGrnuk86non28B3ehlhdifSX0R0t4 cQlBXvbguain
MSaNlnGohET1sjvIBJwn+nuU8ALa2BiduMSwNIe7q4zvcsvd6wg4+eqjRFJ0 RY4hN56jfJfC
+2UUDGFobX50BjznAAfLhhVgP4Zx3NHixIZwb66FswhXeAIcp5ILN88EyNR2 h247Nu2o/m2j
WKm70VAnFRqppuEZ5/rX0Yob6MDHDlW0DFKh6sYo3nZS1I0zTFmDsxvnThY2 J5RLb/FdovW6
9J2r6GN/YbKEc/eiodgy3q1eNEipga8Ywdf0+AY78S0r/Lua5PRWIumtRNLL dF5wksM55/Jn
XDV7XP7QKn52QZl+Gdpa9iWyf0/7HxjBj7zbTzWS91TYe1x2RY5Fl/OGyzno ciZqOUn5D1pk
Vf4Nr+cWOhpvoY2H8qQEsQQvDzyeOzIm/c6anPzMmG5jAHdqYhmsxDJYieVK pdOuOyMGOMBU
Z5fgY/+bdx9hXg4CcxmFVF9LsYSrk31lfm62Rkr4YJKFd6NaEeWGKbEpf2MB /U7GhwjjERvm
j5pIDriRtFOxj1g3Ck8/cTBu4lOnfBXm6DN80ez/H1BLBwiT60b6rQUAAMUL AABQSwMEFAAI
AAgAQaQ0OQAAAAAAAAAAAAAAADoAAAB0ZXN0LmNvbmRvYnMubWFwL2Jpbi9j b25kbWFwL2lt
cGwvQ29uZG1hcEZhY3RvcnlJbXBsLmNsYXNzpVZbdxNVFP5OWzpJOi1QaIFS ISDQGzQKCEpQ
SNoUIrGUtlbqDafpIR2YzMTJpKWKF/CCingF77y7fKo8tAu7lvLkgz/K5T5n ppM0aVrRrDWT
OTN7f/vb13P++vu33wE8jrsKahh2pi1zMqvlIno2Z0T63MWAlnYsezZJrxTU MXRYdibC04ae
y/MIz16kZ8vmrkpimXA9Q+sS4nIwhjrd1B2Gts6u1MoiUZLpsyZ5EA1oVKBW NZwY0tKXtQzf
M8wzet6xZ1U0YT1DIDk4Mhob7EswdKX+pWo0gI1EaspxcscikZmZmd4Jnnfy llFwdMvs1ZwG
YrNJxWa0MDRkuJPwHTrcmbqkTWsRQzMzkRHH1s1MtKrdJR+D2IJtCrYydK4s mTMKGd2MJMRi
SD4L79oYuqtAVypEQ2SkXcUj2MFQa1gZhpZSrmcnLvG0E+0aC4EhrGIXdjPU Hxf5eYYUOrvG
FOxh2FTUSFxJ85wICMP6lG7ywUJ2gtuj2oTBGZpTVlozxjRbF2vv5UZnipdX wNbqiQ/yooWW
1AqGyadahKlCnCk9z7ArtUbhEmZ92uaaQ1xOdFbLSp+h5fPVk+YFqoHa5ZCC gwztq+GoOIwn
KEBUJHKtX9S5neyXEU2KUB9V8SSeIgmXGJF2NAqmLdKzrCnc11GhE1VxHE8z KK5OjKGxRDYm
ZU6oOImYLxNfLhOPKuhj2F0MatIweEYzYnamkOWm48dYAXXOlvKajhd0Y5Lb AZyiBhid4uG0
cC7cEUI/kqJ4ni0rr6VWGBNxS6l4DoPEjaIyqGUpG5uJW4WwABtScQ7DlDct l+PmJMOBFRus
Cj9q5FGG7R1hPR82LSeshac1Q5902cpUCBtjKl4QdAKO5WqHEEeSbHKZMoYd q5cKwwY3yAO2
lXURGE5Vra9+zdFGZ3M8urojfp29KursAo3lNfBE1jUVE0jTkHQJJYZsK8dt Z7ZviiB5iqYb
pyIq5Xn+f/Cc4JqZj6xsg0JPeW0StTFJQA4BhTuEMynR2EvYomnXMs+giimk i3FiFORsqSAk
+scyp4nGqPXfMrA0/1YqQwaatxYMhn2elSqBLRpv1M28o5lpvgJnz5QCKq22 8pHltrmYViHY
YrgF08WR0F4x4YrihHeF7CwTiLk4MwKHadRmqcrPpPdWuV7c1bsq9SYq9ORn OXyvq3gJLyt4
nxK5ZkkIhQ9VXBaB3CgGoovp7b4rngK8bzIHn6i4iU+9DddX2t251rZODn5W eQTxAUIEV1z0
85zN09Q6NGq2DRdMR8/yMT2v0/4VM2mEaGImUt5aS/JZ1KGd/BZuq7iDb0SV F48eFbvcEjcy
OWIV7DQf0MUOuaVy0+oVhqgHkiaFUA4cnlfwI02l1d2mebZ0nqF5TBsOXevo lKciCAUBWgVp
5aCGnoA99xBq3nAfzTV4gHVnuv9EY/fcmXto7Z7H9kWw8QXsnJOSm+jY8yhp 7aXnNtQLXTqL
7EUz9tGXLrSgG+3YTyugleSaSKYDnbRqIbtd9BWEQ8cLj8Eh+he467oX0PMr PbjQIfoHjqAO
RyWU6goR8AEJ0IuIB3CH3grZcz338RjDL/RIZtxfjSQJ7BQ0yZUjc3Q7Jm7P zC0iPr6I/vHm
gQWcJt0zDPM42zxCt3k8v4Dzf/hkWmXkTiKMGK3j5EMfmU/4PpJxj5h4GseL 0ifqDI/iDdKv
pf8YmXnFo7iNrlrvau7u2T+P14qUJl1KF6tTapKKQ9iKYfJuVFIJu0Z8KjFk MCXjFoOOSzLV
1H0PRSr78KQuECmNSKXXJJXD65IUnYA8UnFai3iGFmFTzTmpnrmykshS7Zol kQ95yAFaFTAt
I0+no0q8GcKbrcSbIc0rVfDewJsSj05SlXhXCe/tSrxrpHm9Ct47eFfi0R7t 4Z2m6Ij4hCjY
C7j2AO8V8epllG6WRDHkRzHkRzHkp9byU5vwUBWJ+kE55O0SSMWHVHxIxU/M DXzkQR702jRA
vfPxA9wqx7xb0qUBDzOIz0m/Fl9I/C892a/kFzE2mHxfdw9fl6P9LNFq5PWt vH+H76WzNP/x
A36qD/4DUEsHCFzo2ywJBgAAtQ4AAFBLAwQUAAgACABBpDQ5AAAAAAAAAAAA AAAAOgAAAHRl
c3QuY29uZG9icy5tYXAvYmluL2NvbmRtYXAvaW1wbC9Db25kbWFwUGFja2Fn ZUltcGwuY2xh
c3OtV3t0FFcZ/93sJrtJLpBMKC95NJCGzbRmbQWtJNQmS9BtQoiBEhu1OLu5 SQb25cwEGlBb
+9JWq9VqW6yKWrX4BlpCQxWp+Cy+sWp79Og5+p//queo53j87jx2h83sbnwk Z2fu43v8vue9
88K/zp0HcD1ejqCOYUM6n5vIaoW4ni1k4glnMqKlD2pTIklLEYQZNueNqbhI Z/SCKeIiO0nj
vCEcloEriBsYVngSrxTGsIw2LE3PCWMgkdFMk2H9ULBgZ7+HIaJ5pJGUN7pa jBj5gjCs2cS0
lpsSQ7ppCSl0h2Zpe2cLpKm9klyPhERHdTOZ0y0xwcDGGRp1M2EIzZ4vcbZ0 LaMfkfNoL0mi
hZsYQrGufQzhRH5CNILhKo4lWEqmDZFZwzPZlDD2aqkMQVCG8mkts08zdDl3 Fxt6bTFRrGFY
M21ZhW3x+OHDh7tTwrTMfGbG0vO5bs1qxFqsj2DdQl/u1NJW3pjl2ICrCbNI Du/Z2zecGGBY
NRRM2tOEEDZyrMImhq2xoQPaIS2eIb/F91iGnpvqqeQqj79rnzT0Go4IonK0 maPRGXVxNDmj
azmaweXolRzLsFSO4hwt0jVha1o3ZUhqJBqFJCy9Q56JdZUb49L1NGIrXhvB ayqmpJeNHaNi
ivJCuupGvI5CWPJUVyWLy1l7mklbD0cvtjM0TwlroJjKWwIcWUsuRYLh9TIS ihz1cfRDoRRK
22nnEpG9lMyWKSl2cAxIitV6MRkDqN7A8UZJ1TBpCHGEsLVa06K89DihT3jV RyUUqwjWq7yr
/Bz7BzIiKxUydFRmHRWTwhC5tCDH7cabIhhhWFtNDcco9lCSS9eSE2fS1oyh ZXaSO2YMQbqu
CdCVzmez+VycSoVajyx9UnYrxiKgsmyvSczxZtxGVUwaycRYsssXxt2pAyJt 9UTwFnJQLRMp
WUlGH7ldvvb3VXVMn0UZkpqxBAl/e2XhRTJHeL8jvH8/DdbY2RfY9hg2Vdbs 63etTkB9rSGw
0kptg2GaQ8cBhjap3d1I5kxLsx2wsbJav5AMRxY5SkEnz70u3i6dXzUHJXOB 4x0gE1tcZp//
N8aqsye79kkJFPIZv4Sik+XmYY47MCtPJmezdIJ0VIFXdGoUR+lgch0o5b2L 4924k9ZMYQ1r
WSFzLKBR2MDew3G3pG2WtOaIISb1O+T6vRz3yfWovX7raDKC91L0fGFyajKK B+gEKE4l6/s5
PoCHGJpkw/AcPVHDTz58CxZcwOPj44uI1Yc4hrBLtv4Pc3wEj1DIbZpiE+qo JMNHRdX8MTwW
waMU4NrUHI9jkOyV+emUbxQfJ9cJt11JWJ/g+CQ+xbDUdoovgS5VdEypkVW1 Wp/UhVGRxCdk
4Zm7YCWZXBCHce9vEQ03gk9TMng50hfFZ+lW0yfN/xzH23C79OoXOJ7ChOst R20UXyQ6TdJ9
meMr+KrnJl8rOlHRTaW2thg3/W9OWERvjeLrdFZqExPBfVIaeYrjNJ6mCx5R DewmIk3euBiO
1qqR/8a+ZLIK7KJyu3TOcKQxEcVZyt2MD+88xzk85+Id0QxqKZbs+HdWxFuS +//HXARArv4m
He2GyOYPVbiMR/AtX0L2R/E8JVq/tOkiRwq3R/FdWkhF8H06CmwYKaHlzHiw tCh+yLCywgEo
hV7i+BF+LG/uMntLbVyv6KhiE19U/6t9FkgUP+X4GX5ONeQcJ6PCzM8YstVs /w+ui4bLFffY
6eyuyxeoH9aOORX3Hptnpy4/N1YuvGV3SxzUmZM58pxtrzAj+A19ilW/vFJi etditJOpIfrV
0ydBnfwsoM/JOvlRYL+b3Dd9ENC7SX4f2fNl7rvFfi8hqlYoJKWNZl30ln/1 oaex/JRNtsJm
rqPnKMJYh5X2qvytKrLlbBhATFVWn8YrzqJdZWfQIR+d8hGTD1UNncF18tFd krzRBnkLgd5E
cFSSdj3JvZH0XKK9P2MzBm2N3JGPV9E+iPoGvNrV/TBJknvDp7H8GFpPY4uy eh7b6nAB9SdL
s+fBjqGlNH8KTc+B3XYWN10AGwyTueocbqZfgn471ZNFhOvJscBBLCcre1HA zTCxA4forj9L
x+zRIrpe8kbSRsfInkEXXZzeEl29+gw6SkIb7MV7fabVu6YxeXa7zNtd09ok 8zyGKdrz2Cst
Gy8X9ZBPVFtR1FsDcXSWMz8aiINOqwAcnVfg2F8u6nggDi0QR6yc+UQgjlQg jlh1HKcCcVBv
D8ChljOfC8QhMOky3+AyRylVpi5gbTn/RR9/tMjfXyyXJ9xy2UXKrzuG8Ck1 LCtDDc3hoCwb
GW4a51U1bK90ypVOWjFVtd5eicmVmLPSMIdDVF2lmlKpXoEXSfWvqLxforWX sQG/per5HUH5
PbbhD0jgj5Rof/IB3VUEOuABZZdpRLXOBklbtwe0W1WOzOGd9vMuKvg53GMj Vu5X3hcKEeIH
x1RyzAdp7eF5fJRcpRxjoTrlftp0/ufwxJhtknJc+YyP5UmH5fMMygkWCivH JYfD8CWHgSlf
C4XDND85pF5LHM8oc878WW//G9X2Y8p55YJP4bdLCr8jFZ4vVxiroTBWQ6Gq fE/5QZji9MKY
7amfjJXCNG4//0ph+huF6e/k8H9gNf6JDSyMOKvHKIsgxaK4hzXRHb4ZT7Il dGVaiousBZdZ
K/7C2liYLaf/FayDrWRb2BqWYOvYLWy9HdYVTujcsD6CZ/ELXKbA1uGXNoYX KT1ka2fYil/j
pYbGfwNQSwcIF+yn2wcIAACRFAAAUEsDBBQACAAIAEGkNDkAAAAAAAAAAAAA AAA1AAAAdGVz
dC5jb25kb2JzLm1hcC9iaW4vY29uZG1hcC9pbXBsL0NvbnRhaW5lckltcGwu Y2xhc3ONVW1T
G1UYPTcsbBPWVmhNC4HSCK3JFkkxtr6AVAyhrk2hEkin+bYkl7B0sxuzGzr4 1en4H/wJDh9a
R82gM46fdMYf5fjcu0tIQyjuzOa+5LnnnHue50n++fe3PwDMo6QiwjBecZ1q 3WxkrHrDzuRc
xzcthzcNWqlQGG65zVqGV2yr4fEMr+/Q3G3yIDq/vr3HK34QO8QwcozVgWG4 wG1e547vMUwX
erEqbr3uOpmWbxFYwfL8BYZo0ao5pt9qcoaV808sngoJBIbaFpYIcmjRcix/ iWEglS4xKDm3
ymMYwCUNw9AYLhVI61qrvs2bm+a2TcSjBbdi2iWzaYl1uKn4uxZdY6JwtmVE pvGib/pWJWeb
HkXfSKXPUigjFqK4ijEV1ximuuwT42Oz8sys8ZmC5fOmaXsaxpEgg3Lra5vL xlp+g+H6m7EZ
hmvcz3cycLOPmH45WP0/cec7HwXdX4OKCyreZbjTPz5ADA5tcM+19y2nJhlU zDBMvpElhiRu
iTS+x7CYKuyZ+2bGNp1aJjDgDImGQ446pn0s1ZBlwR9wn+FqyiiX011IYUyM LnNbwwQmRem8
ryGFNCVjh8taNVYYmMGgNuUNqFpYmYpfsG0eNETx8KJAj6eM09Dp0jDu4WMV HzEkz/Vdwyei
aAcrNjebKihdVySijMi5tk2QlusIyM80LOE+NYBZrS7bNsNYaFFP7EK6LC61 rCGLD0m2w5+X
TLslG+GUWoLjW44nbqOkyDlx8oGGFeTFN4ZXPP6mLCQ81FDAIzLG8vL1hn8g m1CyrWv4EmRZ
rOi2mhW+asnGe62d5gQ5tZTh0IbMKPdUbJKN/VuFpB83C9UFUdE7SK8iapDG KP3wRRCjlSI6
n3beop0sjYzGQb2Ni69kyNv0GaMRuEuh9zBCMy0Iwigu06jgCt4JAeZCAOUn xF92zg/Jvftd
Z5XwLBNVRFGBnOsS41EYn9B/xtTfGNV/R/Lp6LQ+0MbNXzAldk+gL9LNQO6p MBDHwy6KRIeC
yjOU9w0RKzQmEz9CPNdw8lzWf4X+Uk9MTLYx20uwRXd8gjE8lQR6ABISiNkc MpI0iTv0fxKR
sw9oJmynQgrpX9BaoGVD+tu99Ee4yyAms3/i0yMsRvDklZ6YbePzk2SMkz1A lQTtkHU1AtnF
LPaI7pkUdyOg6IjLdsRl8QVyhMJEhYaSdmkt5M6Ekib7SiIRbayeaIhT8gGf NOzTieeUuANM
41vJHw/wOvwzIT8TNR6y1kPW+ZBVf42VEvwXRsRwhK8YfsCgcjhwKCSsHfbk 5TuS8IIs+L6L
er5DPR9SR/BYnvsaG7Ka6acNRWwNRf8DUEsHCBWlPc3oAwAAAggAAFBLAwQU AAgACABBpDQ5
AAAAAAAAAAAAAAAAPwAAAHRlc3QuY29uZG9icy5tYXAvYmluL2NvbmRtYXAv dXRpbC9Db25k
bWFwQWRhcHRlckZhY3RvcnkkMS5jbGFzc5VUfU/TQBj/HYwNtgMm4FQUUZiw DaVM8HUT3RaI
JPMlgRD/PbpjlHQtaTsN30oTxcQ//AB+KONzXTPY7NhYs/buuef3cnfP3Z+/ v34DyKMUwxBD
WretWkOcaE3PMLVKq1OqiRNPOttC92znNJ2PIcIwG5a5+8Xw9COGqHdkuOk1 4qv2JyxQftGw
DG+TYTkzCCC7zxCp2DU5BoYExwiicQxjnCOGCYbhjEqYrBqWfN9sHEhnTxyY kmGqauvC3BeO
ofpBMKKsMiwNoJvOk9VxXbiShj1B9A5D8dxxO1rIVm2nrkndNE5cqcnGoabb jYZtaZbtGYen
WsBbiCOFmzHcYFjoL89xC7MMKd2Rwju3ECQxZDODytKC2wfHUvcYpkPcM4yo SZYYNs4nV7rS
pO5x3FdmJ1pmS22TiQuEgU65Q6d8JZ0ljuULOuUQnTLpJGryUDRNr0JyDG8z /ylI3XaktvXB
X5UrOXjI8Ug5mGk5CCjaPub7SDGs93dzLD4LzRRWXQtCcar7PEcWOVLo3KPQ 3A2OOdztyC33
yn3GsYh0x1G8WNihmJcc05hhiO/aTUeX24Y6WbOhVbyqCBjGdo26JbymQ4lb oWevdZcUB9yK
TVrJyS1LN23XsOrvpHdk1xj4jkWuK6ZwXelijZwO02XHkkl1ZVBrjP4xjFJc tZ5jiB4gnlv5
Qa+f4N+oN4RJFfNHqGKxgyS1OLVV9Bqm/DhNP2Ap0lfljua+I36G61/bHFEf U/XxqVZOgFet
27hD40xtVDjTfDfTx55MCz4TbWM404Nupr2eTBmfiQotnGmlm+lTT6ZVWvcS MWkB01Kw2tHc
yhnWunmYz0PjhJnD4zDM+mWYRTwJwzy9DDNNFRCCedETgwgKfquIV/53E6/9 aIreb/z6YD6C
fv8AUEsHCJQcHY2oAgAAaQcAAFBLAwQUAAgACABBpDQ5AAAAAAAAAAAAAAAA PQAAAHRlc3Qu
Y29uZG9icy5tYXAvYmluL2NvbmRtYXAvdXRpbC9Db25kbWFwQWRhcHRlckZh Y3RvcnkuY2xh
c3ONVV1PE0EUPVNKl7aLrQgF+VDEIv0AVkRUKKBQS2zSoAZCoj4ty1AW291m u9Xw7C/w0Qdf
ffJB8StoYvDJxB9lvLtdVqALNJvszNyZe86Zs3dm//z9/hPABJYE+BiGFF3b KMsVqWaqJSlb
HyxsyBWTG0uyYurGjgA/w5RuFCWulNRKlUu8vCkpermsa5Kmm+rmjqSWKyXp aFqeQgxiWd/g
pUey8lwucoaewgGfQ+XMZBjC9sqVl6qpbDH0F7yE1WdpcXBFLWqyWTMIM3fK 0tnC6bodyZl5
wgzMqppqzjO0JJJrDP4s6QmhBRERYYgCzjPEz3YrPhFCFBesnE6GkYSnuKMp meRaEAwxEQLa
rF6PiFYEguhFv4A+mvE2TcQAAuQFzy+vrC4sZ3MMkYKq8eVaeZ0bq/J6idzp KOiKXFqTDdUa
O0G/uaVWaTvNiGOIqlVnsKQbqzsVAuhKFLblF7JUkrWi9HB9mytmJvlUwDDD wHHHuaIbXMrV
V4URx4iIBJJkOM+W5CrpGEwkG76Tk2WvyISRxpiAUaqL09aJGIdElVTkZs4t uaGTwf8XX0C3
1Vl2NeyLoV0xuGxyxxiGx4kzymrZalSqq0Zq7/oLYQq3Bdxi6D25mEXcwTRD 24Z+cEomG4Uc
cZv4G7YjgHY03JQs8sWUDXKToekdW9Vqu0XSTZmq0XDBkh5fwtsOhnOO5W6y E1h0A531gLNT
Nxxa0WuGwpdUq857PUt63PKErqa8RurswuFVXKFz10IXow/24aOe3zqOFA3a 0RCNmHUR0Lud
Is9onlE7kPqGc6kfiD6hTscXdO2i+zeCu7j4Cd0f7dRL9O61IZOU9IDg83RF pBCjqu7HGC7T
jFgHwyAJAfWHcNUh0gjBR20qTcjv0Op/n/6F+Bv0pfcR38M1hj2kGA4mW+hx WWPEBUyT9Bna
xiyxztHRu2szxuqoDqPVu05/BUbPDUw63FmHO5L6jC6L7ytu7mPmg0sQsGVv HgKMuIARIpyz
AeeJsg44ao8pmx3HqB2ywefacK+JzFeemQtNZL72zFxsIvOtR6aP7LLe95Gj NkRzUdsH/ANQ
SwcIluFB8ScDAABzBwAAUEsDBBQACAAIAEGkNDkAAAAAAAAAAAAAAAA1AAAA dGVzdC5jb25k
b2JzLm1hcC9iaW4vY29uZG1hcC91dGlsL0NvbmRtYXBTd2l0Y2guY2xhc3Ol VW1TG1UUfm4S
CAkrb7VQKIWiRUJ4CdraKkQKSYOmTUMpSG1L0SVZwtK8mQ06nfEf+Av0B+jo J6wzODiO02+d
8Uc5PvfusiSQwKhk2L17zr3Pec5zzp796+/f/wTwLr70wyMwkCkVswW9HNmr mvlI3H5Y/dqs
Znb88Al07epf6ZG8XsxFlrd2jUxVQCuUskb+gZ55rucMgUupIwjntOOZE2iN mkWzOi/gDY2v
C/jiPBiEF+0a/GgLQOANDS1oDaAT3X50CfQ2xtLQg1aBgJFMr64tpuMJgc6U WTTSe4Uto7Km
b+VJpCdVyuj5db1iymfH6KvumJbAYKp5niTaW3/0Rfno+MgZ56Jra3PzPNyW LdkGgeuhVKmS
ixiZvFm2jIhR2Oa6VDEiCVu8ufHUST0JEFg1c0W9uldhwGvnIjBqO4Zw1Y9h gStnbtYwgrdY
BiOe1y2qcDU03gxd7ZgLsiTXNPRjVGClKRN773/JNFjdMRJHfTR8DoJA7H9S UFKFMenHBFvg
LCgNU5gmP4MVrursrApr31wtJ4AEn9H4Lr3HfswZVQVlbptGJXlHNX1SCnpD Cvo+76Hkv9dM
hril4QN8KNDBEInVvTI7nh3Keo42YJgpFQqlot2uiZRpSYg5fORHlAAKXrmk R8M8bgv4TStR
KFdfKMZPJONFDTEMCLRnjW19L1+N65YhUe5oSGCJ+0hE4GIo2bidZZGdjhs6 u4AMYdQm1JWq
Z8gNMydM0bMR5Qs5er7Q7Aw/0gLdNfPGrrvM/4GGFTzkdMow8ZqOGAulTu1v VDQ/1ijD0dZF
Cbmu4RE+E2iRkIts/mOoxcYQT2ogYhJiQ8MzbDoQsTqIWOPXTcvUNaRI2pBH 6VxokA2nRcWw
WHM5TxtACp01q6FOy1atJUaLl+ryu9BQLOVqLTkjoKtOBeXrqstKmYKrpb1K xlgy1ZSvm8HT
kqJAKLo2e5rt/GkTByL58ftHceSXh6s2rv3qGuDTY94F793h3xB8Ce01Ai/R 8Su0X2j04gKv
PfDxOsnrFIKYRhdm8CYtmn0QF9HLe1+d5ZIK2Y8BeHCZaw8GVbiHxPTIneGJ Q1wRmDjA2/tu
pFZ1flah99r7HHS5egdj9B/H0Zw4Pjm/3TghFecPIkrWCwwzLsDEfkCnjBkR mDzA9X0ubwqk
pw4xK/Ad2sO0LvyInvCU9xBxD15BWmq4DVE0cBxoWGLUJIZxj7FS1OI+buOu 4hy2Y7qcF/Ax
PlFcFxR7D0+N8OxdYva5OS44edi+e4o5B6ibUUpmJFa4auGzdflnhZ2H/ScR 5L6b/F+ZfIX7
6fDUAZZnff2+1wiqtOR6n65V5fq0keuxcj095VKrYxFm0aF6ZhBPSXaDAjzD DWziFnREsYU4
MlhGlmXO8fXfocfELn8F0pUCbajiWK5AFj7HF0ogyxFohB6dSF5idxItSzGi tBnYpi3u2h7R
lmMEL2Mc2frcEliOpDaGSVvcXW26KyGnnivzruImyyUl9YiTbflNTVt63Aw8 eE62tW3pcduf
A9BFz5+D/m1T9O0m6JyNLnrhHPTvm6LvNEGPnXp1m6P/1BR9rCG6B0V1LTn4 5X8AUEsHCLOH
BdWoBAAApAsAAFBLAwQUAAgACABBpDQ5AAAAAAAAAAAAAAAAIQAAAHRlc3Qu Y29uZG9icy5t
YXAvYnVpbGQucHJvcGVydGllc3WOsQoCMRBE+/2KgFfq5gdUsFC44qwsbTRZ zkhyu2wS0L83
WinqdG8eDAMzs3Qsdw3jpayhkX3HVnS97wDOYcIwuVg9ZbMyOD+C+UxiT9F+ 98P2sFn0+90P
JbGObfeW4l8nykJaAmW4njSj4yQhErJ60ucRyFzVEWKDrM4C1yK1vLidtvAA UEsHCBBBqLyG
AAAA4gAAAFBLAwQUAAgACABBpDQ5AAAAAAAAAAAAAAAAHwAAAHRlc3QuY29u ZG9icy5tYXAv
bW9kZWwvTXkuZWNvcmXtVV1v2jAUfedXRN4zMbCXKQKqllGpUreifkh7vTiX 4C62I/sG6L/f
dSAUtiFRqVNf5pdI9jnnnnOvkwwvNqZMVuiDdnYk+mlPJGiVy7UtRuLp8br7 RVyMO0NUzmM2
nYH6CQUmG6OzPWnApE7Ci6VsyPhsJJZEVSbler1OnSlS5wv549uNaCHhGLL+ 3CAGvV6fYbcP
aokGutoGAqvwULzxccRFVeoqYCOAZhFFBnIaYSKxYBisnM0NVFsZG57ub44E 5hgouLImDpMC
MSvMPC705pU5ZuoQJyWEoBeacyecIKOXitV3nWkO24oTZwm0Rd8wI/eBfK2o 9lBeI/AT/yJx
jwv0GAPvZLBEg5ZYtq4q9FeutvlIdPvbJHHh4x8ekrN680nK6d38GRUJ2aST h/Hemvdyn/OO
fULsZNgdQZ7PvONdepkswRZ4qwPha2siaQaesRTrbElli2kDRrsnZOSutDyo fdKNR+NW+HGG
zrkGl0Rez2vaXwMQv835KxDEjfNHzXX5hX6PUV/9H/U/HPX8g0fdlmv9nAqe tN/mRu17g32G
FfDHFGxIT7eLHR39ScadX1BLBwjAXubvsgEAAIIGAABQSwMEFAAIAAgAQaQ0 OQAAAAAAAAAA
AAAAACIAAAB0ZXN0LmNvbmRvYnMubWFwL21vZGVsL015Lmdlbm1vZGVstZRb i9swEIXf8yuE
+lwrDRSKibNks5uy0JTQC/RVkcfOUN0YKRf/+8q37KZNaaHUT5bmnJnvyMLz u7PR7AgU0NmC
v8mmnIFVrkRbF/zrl/Xrd/xuMZnXYI0rQefvwW7aF3Y2mF98s+SbsPSkbjbk qVbwfYw+F+J0
OmXO1JmjWnzbPPFBAsoRXIlAafQBOiGYSsym05l4bGUvW48gf7aOpJx1hgck UNFRU3ARIcRM
OVu6XciM9CKQ6od00q0+1GifHgr+s3Do9VGaxL5pOEPjHUWgVpymX0gSRTbW MngOoZzxGqVV
8AGObYq37Ykr5xvCeh/XCLoMBa+kDsAXyTKvkhfrPspi0/TN5uJqu9Wlg9lK 9V3WEJgnqPBc
8FUi76hLDN4FudOwJXfEEmgth8OIdID0zduug79N1o95JTqGvvtKyxBS867S LV4KRZoVJVqg
wdKb1iDjgZLLuohVMyZjilIBVnvU5WXPk/NAsfmcTm21d6ggXOENvQrerfLH T1ABpcsK7BaG
AA0GbAxcDBnEc4i/TrW8neYW/k3GZYyEu0O8YlwK+U9Q9/8D6l7sfgfVrcfL lX4G4pe/wWLy
A1BLBwjvAxs2vQEAAEkEAABQSwMEFAAIAAgAQaQ0OQAAAAAAAAAAAAAAACIA AAB0ZXN0LmNv
bmRvYnMubWFwL3BsdWdpbi5wcm9wZXJ0aWVz41JWsEnOL6gsykzPKLHjAvL0 kblAARXPFBUu
roKc0vTMPL/E3FQFWwXfSgXf/JTUHK6CovyyzJTUIqh4eXm5XmpFYm5BTqpe flE6FwBQSwcI
z8rLmE0AAABdAAAAUEsDBBQACAAIAEGkNDkAAAAAAAAAAAAAAAAbAAAAdGVz dC5jb25kb2Jz
Lm1hcC9wbHVnaW4ueG1sVU9NTwMhEL3vr8BJr0CNF2Ng92DSxEMTD3o2yI6U yAIB1m3/vdCu
H+Uy84Y3894Tw3Fy5AtTtsFLuGVbIOh1GK03El5fdvQehr4TA2pnY8Y/6l2l 1p9O3FDaEaFD
PCVrDqWvgP9DHdk8jZuO0saNbjbWtyEhAo8FfTtGYrC+SAjJsFWH4fRR+5CQ GfSYVMHxLSr9
qQxC39bbhXWwwsubk5VwKCU+cL4sC3vHXHJwc6lCTBW4Imuncpaggx8nFdnj pT6vOlfUamMf
RnQSplb4/tScnXvgZ0eC/yZqWflP2G9QSwcIPW4dT+AAAABkAQAAUEsDBBQA CAAIAEGkNDkA
AAAAAAAAAAAAAAAkAAAAdGVzdC5jb25kb2JzLm1hcC9zcmMvSGVsbG9Xb3Js ZC5qYXZhrVZL
b+M2ED7bv4J1e6AWKb3Za1BgpcRp3DpOEHubwyIwKGmccEuTgkjbGyzy38uX pMjxK8XmYIrk
N98M5xm2KGSpkSwfCWScFQpIJksgOdU0ZSJn4pGkQIUiif29SRWUK5pyUGdd doSsrAXIHVC+
eLfUghZk2Ki9psVWCljMWwyD68tDtloRcKoHE10uM70sKb8EalbYKvBtTrO2 nWqtyeR+ekjT
W8EVgzWUijSSI6b0uRQahL4t5YrlUP5vLuOkEU2BH0FUCVv1/7jvreDw0J13 sDJ2KzIBDplm
UsQ5LfQerk38wO53ojl9lktN/ixZfmEefgxu5D53ItcsfwRjQLLUWoqDsAum CkN+EDd5As7P
uhUskyK3+RufbZ4kb07O/XpJMy3L513XtzT7lz7CtmtNmbAe73aLZcpZhjJO lUJXxiJ5L0ue
ox/dTrhSmmqzrCTL0cLIYVMAJpW+PiBaPqrIIjtzJihH4eUoD+sfSMC6OsWR UdfpuMIm5VLc
M/10AXO65Bq3y4IY9zgYDkTRiRHsdCzZ3VIIC8Jer/kLVjrzDG1zEYxybkbK /XqD3EnNfRbQ
WWmqGb4MsYPWx25HZAEC12f9Ppo+ATJWI5ebiEtZhLv1E+OA8C9ejin7eqkg x1FjWIfNDSIY
QIzePBa5BVKdPbWAnQqkOEDRWNB56bZWv7zY+5fu1sjVzwv+8EoUUaB9+mPr mqYajBlWWVPq
aBXc1xxh5TArGzCbVKXkOGoYbfnVrG5TfZDL4Wg0S26mV5HPir2tDRWV6r0w HIxR8OamWLm7
9mgwCWyqQQXqjbtPD84uC/j68cFg2jMiDB0LNeT2/X8LuRYDDgvbq3B0gtpF aHqmaXGUKxLP
ZjFy5jjy059KnsxmiSXv9vuvjd8cx0douEm/mW5LXF84QT3as7Q16+nPYU0d azsBziVfLkRr
JCFevEmALTBsTTvp/fbj40uvyYU2hBfuxreGuhGizPD7CrmWOfBXqTQUhSmG 7QGySYiz3dE4
vxlP4+F4cDebDUaD68F4OvFV5ScJSsOr/BarE9NRyO2XyZUDpVb9FL5r3DNG sflzLxzTPK9n
oTUBzAtcnW1OVNcLbWfof0BYSPH7X3RFc5lF9gx9QJ8VwLHT+Vc/tvyxaWdH DemgqG+Xzzcr
KE39Q3ejaW8QtxkQVN0wRtS4qz35CAzHk2k8Ph8QH724apHUOi/GvfhTL5xk NiGbXLRexNR3
HxMQF4sD5ElF7iKT4F6ylzytyDGOo02A2eGPURSsHJvgxRUXxslW+KmHJx6e BLht97sa/6v8
fp3bzqHt3D/w8hrsPfCeUNSBOPUG7wnDe4JQh2APbQhACeafdIEy56KX7n9Q SwcI2+CVPPsD
AADFDAAAUEsDBBQACAAIAEGkNDkAAAAAAAAAAAAAAAA3AAAAdGVzdC5jb25k b2JzLm1hcC9z
cmMvT2JzZXJ2YWJsZUNvbHVtbkxhYmVsUHJvdmlkZXIuamF2Ya1X21IbORB9 Hn+F1g+pMbgE
5DEsu1AUbFELIRWS3QfiB3mmxxZoLitpzFKU/31bl7nIHkM2FSowM1L3Uffp 05IyGvG8KqUm
D2zFqIZ/Nb0BpdgCLkuZM30czNeaC3oHONoMl3JBWcWSJdCkzPOyUFSwYuGQ 7rS8LsvHujr+
XvO7eq4017UuZeADieCVMk4SaMo0m/Mi5ehYzhXIFZsLoDmr6NUNq86XiAjX XGko4Adhbttv
BPwhiDaQixUUehAC8gzfDc7FuWBKvWV0O3+A5E0oZLFOdC2ZuASGTxh0eMhY AnTF4Qmkouel
qPPims1BfJLliqc7eAu9AnuXbLo7W/Wk6UKyaskTRa9yVBiq6GBvb0T2yBlZ mFrxhAiDSSoP
SrJSEr8cqRXSTFhBOqZJUhZYZd06INjBqKrnAqESwynpKjmQJEHZQZEqMjT3 MopMeBHG9wXy
SjANxOjUjByMokrylRlCvk1c2pt8QQtMrHNdAmEabeY1GqMy1IZ/xgsmSKi4 +1nng5+ojKhz
UJppTC/sFqLMuyQnpICnjbnYDF3cXJpe/FrFk4mFawJ0hSPC9wvRJdGSJY8k sROb4W53mElq
Y8RFsW0aTwyr0eldXVUSt5m/mSyQPBWP6wL3hOQR0vEEDXwFVyVPCQKklhQH FYeNRcD8dbAR
7kyEZRk2CQpRQI4zCmOxJjTlWUYXoL1Q/4RnFRsmominjk0W7sUltNMwNjBR 9KrWqF5yNd2K
z3lGEdXlmZTs2ZUnijIuYWi9uInJmq1H0bqvttOKSZYH4umP90Xa1NVR/Wro cajOAH5qid/u
AVcSk7OV35a+XwIUsp6G3pjc+vW81M9PbLPt3s6NBvYok822jcwOFnOUEMfZ w2N8/BoaUQHF
Qi9xZn/f6ziYv+czytJ0u5e22q5RhIusHzAuHe5Pltx+l6VcVaUC36A/JWgJ ebmC/xO3qivs
kzaUMEx7ZOA5oe1L7A5DAq6NXAwS8LwrSFELEfr6GqKzSX/Ql2ckDij75cQC kXfvAu585kjU
b+TQp+7wUD3QbTpG9H58iLmZa/IBnhuMAYqjZg7p3dSaYRzzi5ukLL4hNTK/ cdzu/xN3Uhjj
v5jkRvqfQZViZbbnCe2l0LxaKM+td5aAhCQQhz1LbB0HCrF9ernDuQ2qPYjb K6PNuO3hDX5N
RN1072hzPHk5uX+nt5iZxG7vHLwchF0o9l+P8NwcI3YAl8vsFfgTk5YONKCq ElzH4+nY8dta
Vt6m53F/OGvMv32j3qFTC1kxUUOP5fsrvMosUP+IpQA/4srDTGatL89i78gL ZLJIoMyIvxga
pVoXrxwU6BFplONumATc44SgIJzXxMJh3e2MPxGNMGPSCPPICbOPbVXZgjvz 7Zsnydzzg1/X
aO7iTIgtQ1y3A7NJek/j8ZHluBlQ+KdmQnlS+KzvEDVcbmf1B7aEx/Kp4c9c Antsvtaj/mPU
RrCT5m7d72UzWmOVFbR+/fXduuugWy0BnZKG6ulF66z8xwkZvxyO2wJ2E/s4 Mx3v98V55DTl
8t253vugxK8CvveA6+Hl1z4uvzME/8ekzjruO00d/8021jDj3V1tmh36d/eN Nyjni2L6QMbj
5lQxG9B69B9QSwcIfPeocr0EAADpDgAAUEsDBBQACAAIAEGkNDkAAAAAAAAA AAAAAAAjAAAA
dGVzdC5jb25kb2JzLm1hcC9zcmMvY29uZG1hcC9BLmphdmHNlMFO3DAQhs/J U0wBaWHVOPeS
rjaiHJAqFRXulRNPsgbHtmxn6Qrx7rWd7MLSLBWcenJiz/wz8/2W8/k8hTkU tdIbw9uVW8Tf
fO8/bJ1csRO/5qmm9T1tEWolWUf1eZryTivj4I6uKamQSkuujdJo3OZiRWWL 37l1KNGcbyOV
aQnWgmuLBLvGfyuD5PJHdYe184L52NSnLIMKWy6z3qLJmKohy2KDJRjUBi1K Rx1XElQDboXQ
KYYCVBSCWYHdoqgWZZFXiyL3PzOy00XJXqvGMx31b71Wo4RQD1y20CB1va8G 1CDYXochkH2J
8b2ICQCF4IvHpeDyfouGlMctuhJCG2Ws/1TkPmogPCYWud7WXlrcYSUXw3o9 0I5Cp2cxKs4Y
v9pAlfpWBmP6SvAauHRoGlqjh4S/PXhmYUQLj2kS2CY++Sf6kaSN1NZU9LhF OEENqHOGV71D
EnMPGZOMAMN6NRri70NA+FK8fK0K3MqZg1ogNZ9jto/1qA1SITZgV6oXzBf0 9prYJwWGtjZc
R+9DLCFja/lYf9rkcLI0cfQDk//V3KAbvTm2wYUbfyDbs+ftNyz7FUxLnl1L 9m1Lgm/JIAiD
xf767zy6QTdl0D9v2fsMOwxKU0O7sXioLPHhvcTGezs591pxBi+QDtp7BD7Y +PAMiPHd+UYd
vd1o/Hq0RXY5/UAdvdEnZWw66XR6e1f9P53HYKfW+PGRniDPoUz/AFBLBwhD cDe0IQIAAEAG
AABQSwMEFAAIAAgAQaQ0OQAAAAAAAAAAAAAAACMAAAB0ZXN0LmNvbmRvYnMu bWFwL3NyYy9j
b25kbWFwL0IuamF2Yc2UTU/cMBCGz8mvGD6khVXj3CFdbUM5IFUqKtwrJ57N Ghzbsp2lK8R/
r+1kF5ZmqeDEyYk9887M81rOp9MUplDUSq8Nb5ZuFn/znf+wdXzFjv2ap5rW 97RBqJVkLdXn
acpbrYyDO7qipEIqLbk2SqNx64sllQ3+4NahRHO+iVSmIVgLri0SbBf+Wxkk lz+rO6ydF8yH
pg6yDCpsuMw6iyZjqoYsiw1+A4PaoEXpqONKglqAWyK0iqEAFYVgUmA7K6pZ WeTVrMj9z4Rs
dVGy16rxTEf9W6+1UEKoBy4bWCB1na8G1CDYTochkJ3F+E7EBIBC8NnjXHB5 v0FDyqMGXQmh
jTLWfypyH9UTHhKLXG9qzy1usZKLfr3uaUehk9MYFWeMX02gSn0rvTFdJXgN XDo0C1ojlIB/
PHhmYUALj2kS2CY++Rf6kaSN1FZUdLhBOEINqHOGV51DEnP3GZMMAMN6NRji 70NA+FK8fK0K
3MqJg1ogNV9ito/1qA1SIdZgl6oTzBf09prYJwWGtjZcR+9DLCFDa/lQf9zk cDI3cfQ9k//T
XK8bvTmywYUbfyCb0+ftNyz7HUxLnl1Ldm1Lgm9JLwi9xf76bz26QTdm0H9v 2fsM2w9KU0Pb
oXioLPHhvcSGezs690pxBi+Q9to7BD7YeP8MiOHd+U4dvV1r/Hq4QXY5/kAd vtEnZWw86WR8
e1v9k85jsFUr/PhIT5DnUKZ/AVBLBwhMh5JvIgIAAEAGAABQSwMEFAAIAAgA QaQ0OQAAAAAA
AAAAAAAAADAAAAB0ZXN0LmNvbmRvYnMubWFwL3NyYy9jb25kbWFwL0NvbmRt YXBGYWN0b3J5
LmphdmG9VO9KwzAQ/9w+xQmD6aDtA1iLnSjsyxDdC6TJtYu2SUkydYjv7rWN g85NGIqf0rtc
7vcnvSSzWQgzSLlut0ZWa5f1YTKKu9RkISa0JmHL+DOrELhWomHtZRjKptXG gTZVjLyWrcUY
m5K+tcH49o5xp82W6hKPdRZFUGAlVbSxaCKhOURRj7taI6RF5o+kSZFBqQ04 SjdaYB13RQsH
rdEvUqAFBtwgc7SNbq1FX42Mr0FpFbHCOkOtgNfMWtDlXqOeCCrxjca1xZ2+ +GZY7wfZ/XaF
Cg2hisGQTVFLDlI5NCXjCP6EVwH45gjEwpcT8B4GnRWBF2ylqmp0WlEL65ii Dp5qORyI+9Jj
tgVHlQRjrkFHNtgnt1g+rvLlzS1c7RTTfdbxuG7RpaSS7vyCLnJH/wHdxqju GhS+gi6ekNwm
8oPh0xSbjPo4JolDmlA0/ZUW08OdjHbIg6HK/z27+GR1+b+oyn9Uk3sV+cns 5//Cfv4j+7ln
Pz/MvhuDrxfHbtruoUEBxZY2pP2TAfECTgA6NlP+iYAK3TjTS/uAJBkPVfgJ UEsHCK6ukL6i
AQAAfQUAAFBLAwQUAAgACABBpDQ5AAAAAAAAAAAAAAAAMAAAAHRlc3QuY29u ZG9icy5tYXAv
c3JjL2NvbmRtYXAvQ29uZG1hcFBhY2thZ2UuamF2Yb1YW2/iOBh9hl/hZUfq TLUke3nb0qoO
k84idSgCKu0+RSb5oJmGBNlmu1XV/762cw+5kHJ5IrGN/X3nO7ZPjn552UWX aGAHm1fqrp74
jXrVc++y6dPI+SR+9e6G2M9kBcgOfGdNNlfdrrveBJSjgK40sD13w0CD9VI8 BxQ0E3NO3cWW
w1XDwKFHGGsa9JVwMn/dNE42CaNsGjaFJVDwbTGwq0dQ/NTvowWsXL+/ZUD7 TmCjfl/BMn8C
NFjcRHMP9MUNWgYUcdG8DhzwNDloxCU0nLg+Q8S2gbGAsnQccIKCxQ+wOUM8 QBQ2FBj4XC29
9dQ6CA089waI/YRsCcovA128F3qWQPiWAgqWqGEk+Nt1sYP4Tvg3RwCKuEA0 GTDQozAUEuA7
OzjcMkjqrw3D3zti84C+qm4FBnp2fee6F9GlpzpW4AMlHJyQSduF59rI9TnQ JbEBRVNF+CL4
j4vVGYqLid66HVmkTlSKmIk+WYOmWqtq16nMppMPqyPj6swEY/0VgjH+bqJr 1ItS7QmSVAbA
NjKDx+noNJHMLDG1jOWJ882fuv7y8qItgHEWeFvuBr5G+B7hnQ6pmTWZmnej v+vgYmKoBzzw
RckZJ2LXSfLyNNKjhlYk02g8m+PxUBY0pq44GzwtP24km1zf5Z+/FMPPbF3k OsmOvni79Vz/
eWdSeQIAlfOhAaxvkpaBLt7eL8L9elDG2V24u2r1mEK6P6+AJ//8/KUcTbFJ 0fBhPMejsTkV
EP5aRCc+jrLIyLzFeWl6sBYnHJMHpsr+Qhx70bmLPJfx49Ud3QbUETOXhm1Z 5r353RzPZ2UJ
iENyAVQyknG6tUUyxIuzYjFRL3ZLeYxKtsjhzsTzx6lpDR8ex3ORx2+H0BQn 9MQnpCVuTUdc
R0NclnUN/XCGdyQWI6ctF7YsfBjH8Pm4hY/LKSPhlHFCThmtOWXUccoQWf/e glPG+TllWJZx
GKeM83HKKOXUfqSSoZoTGmyA8lc0fCK+uL7vxTUB6ZGbqNaDWfWD/EuEkiI+ 0+I1wyXjFVuR
zCyfo4565mT6MDGn83+s4V94/M207kezuRnesn/kQJuCqKn4qih8RyjkVE13 NmRyU5VKkIOw
oyqYulhKrkptF8xkRDlC4VchykuUqz1BkW15pVGNkKpeJFQUWqlqOSlYZTHu LF8LXDbymGhy
4F66Lv0CzmFspRPuC3Y5A3FOXZyBcbgSMNzEMNyOWcm5v5u00jBnybwQSAMC OW0Vc6RSbKXW
jULHaoFPORmMnCw4AxmMSiiMJjIYxyKDocTHWTIvIUMNAjlRFJOhUiXlyWBY LfBJLusEm8ZL
FzWLgNPBmIl3Dy2SgXZPLRHaY7EHohh33Wv8b6+iLrEjiurkR1WplqFrJ54J RzYVqhHCjji6
REFGBudxEP/QslUOT+Q8RvdXpiWfdl3UX2Epbj0mrl8uVvCq7FoZbWrYqkml VSofKizbQled
Z1sYmjFt054q11aFosextDDJUu/1Pk79rdsJMSvT6RFARzO/agtTk0ulJs/6 X22Ee04oFaEK
sYovh6wNlriK2q5CbYHivkZZTKBDkSvJLdWB5X5ZeaYFnXggcWrsqOMSBbcn CG4mBi7ChD9K
hFLL6oTFT+/2yLnKp2G1T6SlM3Tc8hrty2s0l9co4mJ8tLyl7tFZyhuZSPk0 rI8l0sajObi+
e0irI/k0VSAmOqvOsMkBW6vG3rvdd6Tr+fC6/wNQSwcIN+IW0A4FAACPHwAA UEsDBBQACAAI
AEGkNDkAAAAAAAAAAAAAAAArAAAAdGVzdC5jb25kb2JzLm1hcC9zcmMvY29u ZG1hcC9Db250
YWluZXIuamF2YY1TXY/TMBB8Tn7FIk7qXUXsd4iiItSHk5BAiHfkOpvUnGNb tgNUp/531k7S
jxM98eTYXs/Ozkz4el3CGmpp3cGrfh+bvOVX+3R099je0cpLJ+ST6BGkNe0g 3IeyVIOzPoL1
PUOplQvIcOiYtMNgDRuj0mz7WYV4uxSl9ci2X3Y/UaYyPrN6U1Www16Zagzo q9ZKqKrM8CN4
dB4DmiiisgZsB3GPMNgWNdgMBKsah6beNZ8sVSmDvua7puZ0uGInfDTtS/R8 53Kf74TZWa3t
b2V66FDEkbqC8AhhdGkYbN/n+lHnBwC1Vs3zRivztGjETgTe9hi3GgeiHSCx WzaZ1bHm9HYy
YIaruVsYbQLiJWJav05mJNhTj/uHXJ2VyF890qkgopN/404rCcpE9J2QCKeH gH8iqRFgNgKe
yyI5URDIN6TBTcga/xJ6xEXwRePzIIvE5FCHHg210OQ+yzhJz7RLg8SsQpIy YR0cwizbq/E4
TkC3slHM3qX1cc4ECpPcu2R8pftLqqCCWRFFjcK/y0j0jmh6FFofIOztqFtq TmmbyAtoMUiv
XI5iqmVspslnLv/OWrrZ+KztDWlfJTr1+N9g/FiwKCHFOSLFdUaKFJIi/7D1 LHkDF7G9f6Af
9Aicn4NT/gVQSwcIB+xh0+QBAABGBAAAUEsDBBQACAAIAEGkNDkAAAAAAAAA AAAAAAAsAAAA
dGVzdC5jb25kb2JzLm1hcC9zcmMvY29uZG1hcC9pbXBsL0FJbXBsLmphdmHV Vltv2kgUfja/
4iRbCRPB+D2hbNyUVkhRUy10X6PBPoZpB493PCZFVf575wY2xLTVNkHq09hn zvU7t4kuLjpw
AcNEFBvJFks1sr/R3r8hvZqkr/QZdQqafKELhETk6YoWhK0KftXp6ENItaPG V4eUG3d+dOK1
xGe6pmSONC/JRykKlGpzs6T5Am9ZqTBHefVTzmlVGIZap5ALgglnRYkEVxlJ xGolcpILxbIN
+WAOllDFRH5cBhMhkYxvOC3Ln3EZDMi4qXdiUfkFobv5Z0yUY+9EPhtngwHM ccHyQVWiHKQi
gcHAZibOwcjhCnNlDYHIQC0RViJFDsJqg+4QV6PhfBQPo/loGOmfLtkpxjx9 onZY2GOmFWWC
c/HA8gVkSFUlsQQqsbaK6aWVqLgVARhyNvp2zVn+Za8mSGyC+muBKgbjTmz9 eBxGmt3VmNcw
jIptkV0vTMKptuFKrZpzlkBiUgBWHeBXXRNpCQ3catc0E3zrBIVka60DWosE Sn++hhwf2nlC
tWRlT+cjMAkJPDApZrTiCtaUV7iFvesjt3GGvWakXaBKSTavFBKr5Fhag6OZ MTfXJeJWvSPU
INlfIVOU7icywQulgcEUSlMgCWQspxym2hOd0vh+/Hb8Lv50OzPxV5wfBpnQ ZKll/5QYfVhU
R1OH1ozpf/qzZ37Poi1DDYKus0CXEspQF0rw+Pwmr+/WKCVLsWndjSPAqc2t /fG+SNS9msP+
lCW3TGmlvDTz+CWc9B3q0+Dro+EOfVGza8F0mRuj3gHd0bGz7wmCp7GuDeNG QF3LGyQCPwRI
xiTuj4DwnJ73rVzfqTPsLIMQm+P9H/yv0qJp2NP1GgTubhOaifJkDdhp0ocm mUzHs/5hruL7
+3hrmfaeu6rgw92sBT2apu1bN2wnA/cfuw6wOB5Xs+M/TTwSV2KNzxHSDzW9 VFQtve+Cc+sO
8D2qkOVqu5snb/swF4LrR5EOvRR8jTXBvDJmmwJ9XA9MJUsId5KOHCS0xLZS vDSX2z52nW1a
4bFubjv+iHWp4c7OjZ35U2FkCwCnTxHy4Onu/Nfstd/Bw04bP256O4VXDay2 IHl0pvvoNEVO
CMqnvDyE5bdRqBfuj+J3lmv1p4p72wQ4KZ9UxDM0RPMh5V5S8Ld+hpz570s4 qzmIXhZ6B4f0
SAM5D08Pkd+RSrgPv7ntrpuUevB93ej1Bnu+1rzmkeW37Jsqy/QY1Y1vnsfu Xd28CQ9lLQ6O
ndCi0P6H5xDSSzhvuaEttG6v66nWN3/ZdM4g+AhRZJ9rne9QSwcIwVGojcMD AADmDgAAUEsD
BBQACAAIAEGkNDkAAAAAAAAAAAAAAAAsAAAAdGVzdC5jb25kb2JzLm1hcC9z cmMvY29uZG1h
cC9pbXBsL0JJbXBsLmphdmHVVltv2zYUfpZ/xUlWwHIQU++J56VKvcFA0BSz u9eAko5stpSo
UZRTo8h/H2+2ZMduizYxsCdKh+f6nRuji4seXMAoFdVassVSje1vtPNvSG+m 2Rt9Rr2Kpp/p
AiEVZVbQirCi4te9nj6EVFtqfL1PuXXnByfeSnyiK0oSpGVNPkhRoVTr2yUt F3jHaoUlyuvv
cs6ayjC0OoVcEEw5q2okWOQkFUUhSlIKxfI1eW8OllLFRHlcBlMhkUxuOa3r 73EZDMikq3dq
UfkBofvkE6bKsfcin42z4RASXLBy2NQoh5lIYTi0mXlbgpHDAktlDYHIQS0R CpEhB2G1QX+E
xXiUjONRlIxHkf7pk61iLLNnakeVPeZaUS44F4+sXECOVDUSa6ASW6uYXVmJ hlsRgBFn4683
nJWfd2qCxCao3xaoYjDuxNaPp1Gk2V2NeQ2jqNoU2c3CJJxqG67UmoSzFFKT ArDqAL/omshq
6ODWuqaZ4GsvqCRbaR1wsEig9ufvUOLjYZ5QLVk90PkITEICD0yGOW24ghXl DW5g7/vIbZzh
oBtpH6hSkiWNQmKVHEtrcDQz5uamRtyod4QWJPsrZIbS/UQmeKE0MJhBbQok hZyVlMNMe6JT
Gj9M3k3+fPvxbm7ibzjfDzKl6VLL/l9i9GElOpo2tG5MP+nPjvkdi7YMNQi6 zgJdSihDXSjB
08ubvLlfoZQsw651N44AZza39sf7IlH3agm7U5bcMaWV8trM49dw0neoT4Ov j447yauaXQmm
y9wY9Q7ojo6dfU8QPIt1bRg3gsS1vEEi8EOA5Ezi7ggIz5PzSyt36dQZdpZD iN3x/jf+22jR
LBzoeg0Cd7cOzUR5tgbsNLmELpnMJvPL/VzFDw/xxnIyeOmqgvf38wPo0Sw7 vHXDw2Tg/mPb
ARbH42q2/KeJR2IhVvgSIX1T02tFdaD3XXBu3QH+hSpkpdrs5uk7XStCcP0o 0qHXgq+wJZhX
xnxdoY/rkal0CeFW0pGDlNZ4qBSvzOWmj11nm1Z4apvbjj9iXeq4s3Vja/5U GNkCwNlzhDx4
ujv/MXvtV/Cw08aPm8FW4XUHqw1IHp3ZLjpdkROC8rGs92H5ZRTahfut+J3l Vv2p4t40AU7r
ZxXxAg3RfUi5lxT8oZ8hZ/77Cs5aDqKXhd7BYXKkgZyHp4fI70gl3Iff3HbX TWs9+L6s9XqD
HV9bXvPI8ls2bvJcj1Hd+OZ57N7V3ZtwX9bi4NgJrSrtf3gOYXIF5wdukgO0 /qDvqdY3f9l1
ziD4BFFkn2u9/wBQSwcI9ASxGMYDAADmDgAAUEsDBBQACAAIAEGkNDkAAAAA AAAAAAAAAAA5
AAAAdGVzdC5jb25kb2JzLm1hcC9zcmMvY29uZG1hcC9pbXBsL0NvbmRtYXBG YWN0b3J5SW1w
bC5qYXZh3VfLbts4FF3LX8EaBSqntbSPk6Cyo84YKBwjMQaYVUFT1zJbmRIo Km4wyL8PX3or
yWRQF0UXhijykjznnqtD2j87G6EzdEHS7IHTeC+u9Kvfelddb5fRW/n0Rxkm 33AMiKQsOuDM
o4csmY1G8pFyUfWe1V1f8T32toBZ7q15mgEXD4s9ZjF8prkABnxWRqY89oAk NMvBg8NOtlMO
XrhIcJ6/FHSNBd48ZPBS3M32KxDxUtTakKxJDMcp7l74CROR8odlKxHDE7Kk iCnzQvWy1m05
w7cavJlO0RZk37TIgU+jlKDpVOsRMKS2ggMwgQVNGUp3SOwBHdIIEnSxvbIY LvztlVctBizq
LfUxVinHAiKjZrFNKEFEpRgtjHgNPgi+S4miHDVJ1li6U9A/I0exceRGCw5y l1zDjGCHi0Sg
nQ1rk/F0/FP0nSfZOG06juLjWEK5Wpp04VFGhTtRKB1h0DpOJ0TC7fRcIrfd MynLw7uVcHO5
krdc3W2C1SL0YhBlqtzxXojs3PePx6Os/1zkaVJovliMJzOkNqc75PZ3fHOJ WJEkBqjjcBAF
Z31kMzX6ODI/ggXZIzf8TiDTFQJlyy7TqLkabpLGbh04s2vZDRkcB0rCVWGP o77QWBYpk3ln
BMrytHqfQuAhYJpoXkiL6YH8QZt/vLkHzmkEFQ5rKIjoLLjGrBDohwV0pFoa 06cqRDfojgJf
XrsTqw/BOZSsyvpa3Kw2wXIV3p4jq4nZRoYJTJnlOTw36MwJnomdd2LnNtZ+ t+e6DMWep0dd
FMskgRgnAY8L9RFXNeeON1J04yXvxug9qimv8AGkQO/R+B2iOWKpQBjd44RG Jl5nY1xW4E9R
riXcJ54e7gSnLHarowRB2fqAzJg2EIqTv3BSQEfdMvZVAofr25t1eLv5+8vi z2D1R/jl8/Ju
EyrBm1++gRgOn54N5A28LaD/X8tILihUKoycTY6/oKJWJHkHkSNikz4nqFW/ dKyfraiB+ISk
FfKWoE2gv6eitbUbd+u7nc579a4vI6SKvixPrHrU+FiddDNymrPBog9qv9Vo A40SW3RBDxU+
KZp57egazVyj2Vo08x6a7UnRDJf7f/a31zmzZeQOLzvR9wSv5/7PeOjp8tI2 rpdc4ZV+ZvNg
+Xa88TmHOekX3vBMpPy11eO2FWwPTtQduwr8MTgjyDiQEujAWXPdCBj8i9Hg Mkiic0xAeQU3
+B+R7/dvtKN/AVBLBwhpClpPmgMAAJ4PAABQSwMEFAAIAAgAQaQ0OQAAAAAA AAAAAAAAADkA
AAB0ZXN0LmNvbmRvYnMubWFwL3NyYy9jb25kbWFwL2ltcGwvQ29uZG1hcFBh Y2thZ2VJbXBs
LmphdmHVWV1z2jgUfSa/Qk13ptAhpn1t2mwNcbqeSSCLaae7L4xsC1BrLEYW pLST/75XX/7C
kOy0yWZfGixdXV0dnXt1pPZevjxCL9HbiK22nM4X4kx99irfsuk3P/4N/vaO Vjj6iucERSyN
l3jl0OUqOT06gj+Mi7x1oP9e4Egwvj3d032tfTV1C0xTwgvHX/AGOyHBaeZc c7YiXGwHC5zO
ySXNBFGmxpLxuUOihK4y4pDlDH4zThzPFYLTcC3IXYaDBGfZXUbnWODJdnWn sxFEigVl6V2G
dSj2mI3JjHCSRqRAptlSbkvu1dd71DOb/ezkBIVkTtOTdUb4ScwidHKiNt5N kRxIlgQ2QIaN
2AyJBUFLFpMEvQ3PjMe3vfDMyZ2RNN5x9X4udwULEmvarMOERiiS4KLq9svo EPkGuxhnqBxy
EUt9CPpx1JKraR1YTmtvdK1qeC0ZX2vF6QY+kd5/SUVNQfP9DqXrRIL4wPPi R54vfLT5bMog
0pzAhcFuLANOwAegA/xMM4EhAQ4xs4s4xA1uOYnRDRUL5eTH+4SmX+9IQGes RvIt2mm5ReFW
TWlKoHJqy+HHsY82OFkTRwO0OhsyQd4oe5iAk0igGwzjGYrUYsqeEM3QhmLV lMnEi5STma6e
aEnEgsU2/uc0pQLJf9qd2y66WdBogXCSMQSgzhhfZmqwNKA4od8reWwm7AIK gJFY8zRT7SW8
rIn2MkMsJeAeYo63kKVglTk/w4+MkPtuQTGg+dx4TobBFIAv7J5rWA4zcbf6 tDuyoLSyNSDY
Nk67qHqGOcQfBhN3OPA6p0et24dLFE0AFDKWEMn3zIc1wb68Az4kGWlIi4Lu 8BOncbH3RO9u
NTsQkASaqeaJyh89TLbjdIsYjOEZWq+AN5peQLiYrGSBdhAKVFlWg3UjnEdU JieH4CH2bEYh
XMiVCCfA2Lmay5IYXEJrZbCwlINqRCAGgmImh0EoMBJ+EFg2zDspuYkBLNJI dLkImgIWDe5j
KvMw2XbBAlo5REJ0LLJI6DjzDKEiI8ksT+fRrNKvcYaDqTKXxKErF1jMqQBU ThZ4Q1DKBNoS
ASslaTnrdGmhvCgkGtAZ5ZkwJUMxRU1cDFS4kGI6OQYcpSUOSD4gccOAWWSV vdG7TgQ+0aWT
hV8AlEzvPkRerRTao5nf7g/sjA4Ffpfm6aKMqsqc5sNfZE1TLaEQcqlkoBwq R7CnmaroOFXk
y1H30w2LShWsYMANhVglmng2k8VVEjePWSywUHjrME31UpiX4v3pOtZQgDRS JtukjpXqxVak
vETpAPZY7RQGLZ1MXagJIV3wVPmCWt221aJjqjtqV+07O0XWsWXNmRNhe2uj HLPOjiw+rV4P
jUIpjuQhYg6zMimL87HVIPRge2tLeFcPUtp12veM1IaWCwPgScO0v++e53f4 e4NSctN4WGgY
SoVZ8DWx0OianJcJxf4YlI0lP1jtQODsYY316eeUyTMx99vo7wDHrM8rzL+W ogNdQtOYRjJ2
qPYRTl/IIoUipdHixllmnJDvxLg0fNuxeqDDUueEEa+wf/mV0SSDCacm4x82 mPxyVglo6pk7
TDWydmHeqUWp+BgAqSKwxMkF7PiaExgvO9qvHkp/1CF1qwHjx4Awv6WrAKZu HbO8v4OfFFb9
aqDho2PVn/b3YxU+Bazy652qto1XwOoK7ronPmi4VfFvErrUUgO72tmRSzS/ fXMstR/42lDc
FwbmiNh/YdAX52YJWNJ+Nc1tLgzzNQa9G8sTwyhaK8GktgcVRgvNBuxTIlmp 2J+SW3u2acNo
jPacniVRZCCxquhUHd8FTg3nt3qoUi8OsRHmM5MuYLb7OKRD0J/twWg4cf2h N5Zb3jJdebVv
10bDRdPaT6fepXflDSeBPlNxs3+37DfP8ja2/tzp1NUOwmYH/WYHoXXQn077 nRogWiVA2kkA
7vGEY7zbFpBz49G1N578NR384Q4/eNNLP5h4BqRHyQu/dCNqyg0mr7XmYebg 60l+9ytSyKSK
vVvpdHmCqXJAGNbuEAapaspUISynTUmiFvI/I2KIl1JTu1fq2US1ZNdw96Pf lNK+HnsX/uei
C5R3u37ZMASU3FOXdsCX8Mx0BvIuzdby6VhVr0YjN46RetxR/FVvcDq9G/R1 Ke9txp8iDA6Y
fcrXnaVJABlwYHJrN7ttgxPphuO85biLnvnB1O0Hk7E7mOgvfzjxxhfuwOsi +PogU8SdeOdT
e1uZDi7dIFCQqWmLwrJHdXaRel+zql2eTSNV8GWXfGmFkIixPrYtr7ro5HVD 8DJCCHYY+FCm
9Oen0aU78S91vDq53b78lJ2D0dX1KPAnunfsBaPLTx5s++iz7wXa5OMw8CYT PUR9+n9+NKPP
vbH/yTtX7aMxfHnn5vJVAJ6XPftI6OZAu78E4KJAWk3agCjIKprOZdcxLoP4 uiGuf4thGSC1
gPP7A1X8DxQQGHIWmFw0FdgZGkBvc2U/tospzVuZCg4r8Hxtk6LNVl31XOMc UnswY3LfCWCG
eyyAkyXb7DmdnsQaSsQN68Tt58Tt/3riqgvCYeKGe4jb/y+I27DZ4f+drfUF PHm2Vs/GigRU
DMvV3V2CsIuaDXLG74n4WMUUAEncS//vgkkHyF8RDXB6szWPSC53x6ahpDKk +rxFvd7uU9/R
P1BLBwho3dZEygcAAB8hAABQSwMEFAAIAAgAQaQ0OQAAAAAAAAAAAAAAADQA AAB0ZXN0LmNv
bmRvYnMubWFwL3NyYy9jb25kbWFwL2ltcGwvQ29udGFpbmVySW1wbC5qYXZh vVVdT9swFH1u
fsWFTTRFNHmnoSti1VSJwUS77RG5zm1rcOzITsoQ4r/PsfPRtEVME/BCsH19 77nnHN+Gx8ce
HENEZfqo2HKVDe0ybK2Lrc+T+LP5hl5K6D1ZIlAp4oSkAUtSPvA885Eqq3cv 3PeHCx7sOc4I
E6iam3dkTYI8Y9wcco40Y1I0p1ItA6ScpRoDTBYBlUkihYsfXzKdvRyKVCoM xhecaD14Jeh6
fmcqv5araLmKnbTa3x/vULr4G9SSr5lYVqjDUoGDfh/muGSin2tU/VhS6Pet GucCioqYoCGt
oAXkArIVQiJj5CBtXuhGmAyj+bCmNgrnwyg0m92gLoAi3kkfpfYzMwkXhnn5 YMDBAkmWK9RA
FDbVMT61N3JurwBEnA2fRpyJ+5YfGn0Lej4tMRu7BBoKlNXConuOQpPEua7M G4VpZbvREk0W
Yio78+VzzijQQktoFQH8k5nuNGzo0gDfCIYnr1Nw3il7poSuMIY14TlWxHbL njaR+7092Lug
cIEKBUXgRs/Apn1Jy86LMhQnI424
Re: [Data Binding] Table viewer and EMF Data Binding. [message #423003 is a reply to message #423000] Sun, 21 September 2008 00:19 Go to previous messageGo to next message
Suresh Subramanian is currently offline Suresh SubramanianFriend
Messages: 61
Registered: July 2009
Member
Thanks Tom, I am using the the same labelProvider, and setting the viewer
input with the list containing object instance of both A and B. In your
Example A and B having their own attributes so it is ok. But in my case
since A and B having the superclass attribute "name" If i observe A's Text
it is giving null pointer exception. If i observer B name it is ok because
it will be observer only object instances of B. I guess I must use
ConditionStrategy only. But i am not able to find out the ConditionStrategy
code any where in CVS. Can you provide me some pointer on it.

Regards,
Suresh Subramanian
"Tom Schindl" <tom.schindl@bestsolution.at> wrote in message
news:gb3fuj$vu2$1@build.eclipse.org...
> The ObservableMapLabelProvider is not assigned to a column but to a
> viewer and it won't work for you!
>
> The ConditionStrategy, ... is only something I thought about. We are
> currently looking into this problem area in bug [1] but as stated before
> EMF doesn't has issues with it. It's only the LabelProvider which
> doesn't work.
>
> Please take a look at the attached project and use the LabelProvider
> from there.
>
> Tom
>
> [1] https://bugs.eclipse.org/bugs/show_bug.cgi?id=247997
>
> Suresh Subramanian schrieb:
>> Tom
>>
>> I am not sure how to make this work. Here is my mode Structure
>>
>> Class X {
>> String text;
>> String description
>> }
>>
>> Class A extends X {
>> }
>> Class B extends X {
>> String name;
>> }
>>
>> I am setting the viewer input with a list which contains instance of
>> both A and B.
>>
>> if the list element is instance of A i need to display text in the
>> column 0 and if it is instance of B i need to display Name.
>>
>> I am trying use the ObservableMapLabelProvider but i gives me
>> compilation error
>>
>> *Description Resource Path Location Type
>> The method setLabelProvider(CellLabelProvider) in the type ViewerColumn
>> is not applicable for the arguments
>> (ObservableMapLabelProvider) myPage.java
>> myPlugin/src/myEditorPage.java line 277 Java Problem
>> ***
>> if i want to try the condition approach i don't find ConditionStrategy
>> and Condition. I am still kind of struck. Is there a sample code i can
>> look for.Please let me know
>>
>> Regards,
>> Suresh Subramanian
>>
>>
>> "Tom Schindl" <tom.schindl@bestsolution.at
>> <mailto:tom.schindl@bestsolution.at>> wrote in message
>> news:gat1so$9f8$1@build.eclipse.org...
>>> And the label provider I referenced yesterday also works.
>>>
>>> Tom
>>>
>>> Tom Schindl schrieb:
>>>> Hi,
>>>>
>>>> With standard ObservableMapLabelProvider this already works in
>>>> EMF-Databinding because of the way EMF works :-)
>>>>
>>>> I guess the problem is may LabelProvider then.
>>>>
>>>> Tom
>>>>
>>>> Tom Schindl schrieb:
>>>>> Hi,
>>>>>
>>>>> I know its not there :-) Let me check and see how this could be done.
>>>>>
>>>>> Tom
>>>>>
>>>>> Suresh Subramanian schrieb:
>>>>>> Tom,
>>>>>>
>>>>>> Is it possible for you help me writing
>>>>>> EMFObservables#observeConditionalMap(
>>>>>> new Condition[] {
>>>>>>> new ConditionStrategy(
>>>>>>> MyPack.Literal.CLASS_A,
>>>>>>> MyPack.Literal.CLASS_A_ATTR_A),
>>>>>>> new ConditionStrategy(
>>>>>>> MyPack.Literal.CLASS_B,
>>>>>>> MyPack.Literal.CLASS_B_ATTR_B)
>>>>>> I don't see that in 3.4
>>>>>>
>>>>>> Regards,
>>>>>> Suresh Subramanian
>>>>>> "Tom Schindl" <tom.schindl@bestsolution.at
>> <mailto:tom.schindl@bestsolution.at>> wrote in message
>>>>>> news:gaqikq$a1d$1@build.eclipse.org...
>>>>>>> Could you simple
>>>>>>>
>>>>>>> Base {
>>>>>>> label: String
>>>>>>> }
>>>>>>>
>>>>>>> A extend Base {
>>>>>>>
>>>>>>> }
>>>>>>>
>>>>>>> B extend Base {
>>>>>>>
>>>>>>> }
>>>>>>>
>>>>>>> Then observe the base attribute label? If you depend on name and
>>>>>>> text
>>>>>>> somewhere else you could mark them as volatile and transient and
>>>>>>> delegate calls to them to Base#get/setLabel().
>>>>>>>
>>>>>>> I think I can remember having looked at this Observable-Map problem
>>>>>>> already and try to find a solution by make the observing somehow
>>>>>>> conditional.
>>>>>>>
>>>>>>> Something like this:
>>>>>>>
>>>>>>> EMFObservables#observeConditionalMap(
>>>>>>> tableViewerContentProvider.getKnownElements(),
>>>>>>> new Condition[] {
>>>>>>> new ConditionStrategy(
>>>>>>> MyPack.Literal.CLASS_A,
>>>>>>> MyPack.Literal.CLASS_A_ATTR_A),
>>>>>>> new ConditionStrategy(
>>>>>>> MyPack.Literal.CLASS_B,
>>>>>>> MyPack.Literal.CLASS_B_ATTR_B)
>>>>>>> }
>>>>>>> )
>>>>>>>
>>>>>>> But it haven't had time to really think about it, maybe it is
>>>>>>> complete
>>>>>>> nonesense anyways :-)
>>>>>>>
>>>>>>> Tom
>>>>>>>
>>>>>>> Suresh Subramanian schrieb:
>>>>>>>> Tom,
>>>>>>>>
>>>>>>>> Thanks for your input. It is not working if i have 2 unrealted
>>>>>>>> object
>>>>>>>> types.It is only working for one single Type. So i guess it is not
>>>>>>>> possible
>>>>>>>> then.
>>>>>>>>
>>>>>>>> Regards,
>>>>>>>> Suresh Subramanian
>>>>>>>> "Tom Schindl" <tom.schindl@bestsolution.at
>> <mailto:tom.schindl@bestsolution.at>> wrote in message
>>>>>>>> news:gaqdnp$fs9$1@build.eclipse.org...
>>>>>>>>> Suresh Subramanian schrieb:
>>>>>>>>>> Hi,
>>>>>>>>>>
>>>>>>>>>> I am trying to write Table Viewer which shows my model element
>>>>>>>>>> and
>>>>>>>>>> trying
>>>>>>>>>> to use emf databinding for editing the model.
>>>>>>>>>>
>>>>>>>>>> I have 2different types of objects to display. For example
>>>>>>>>>>
>>>>>>>>>> Class A {
>>>>>>>>>> name,
>>>>>>>>>> description
>>>>>>>>>> }
>>>>>>>>>> Class B {
>>>>>>>>>> text,
>>>>>>>>>> description
>>>>>>>>>> }
>>>>>>>>>>
>>>>>>>>>> First column should display the name if the object is instance
>> of A and
>>>>>>>>>> text
>>>>>>>>>> if the object is B. In second column i need to
>>>>>>>>>> display a description of the object.
>>>>>>>>> 1. It would help to see the NPE and where it happens, it's
>> possible that
>>>>>>>>> my LabelProvider has a bug.
>>>>>>>>>
>>>>>>>>> 2. I haven't looked at the implementation of
>> EMObservales.observeMap and
>>>>>>>>> if it can deal with 2 completely unrelated object types at
>> least the
>>>>>>>>> Bean implementation can't so if it works is an undocumented
>> feature.
>>>>>>>>>
>>>>>>>>> Tom
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> B e s t S o l u t i o n . at
>>>>>>>>> ------------------------------------------------------------ --------
>>>>>>>>> Tom Schindl
>>>>>>>>> JFace-Committer
>>>>>>>>>
>> ------------------------------------------------------------ --------
>>>>>>> --
>>>>>>> B e s t S o l u t i o n . at
>>>>>>> ------------------------------------------------------------ --------
>>>>>>> Tom Schindl JFace-Committer
>>>>>>> ------------------------------------------------------------ --------
>>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>> B e s t S o l u t i o n . at
>>> ------------------------------------------------------------ --------
>>> Tom Schindl JFace-Committer
>>> ------------------------------------------------------------ --------
>
>
> --
> B e s t S o l u t i o n . at
> ------------------------------------------------------------ --------
> Tom Schindl JFace-Committer
> ------------------------------------------------------------ --------
>
Re: [Data Binding] Table viewer and EMF Data Binding. [message #423004 is a reply to message #423003] Sun, 21 September 2008 01:16 Go to previous messageGo to next message
Thomas Schindl is currently offline Thomas SchindlFriend
Messages: 6651
Registered: July 2009
Senior Member
Suresh Subramanian schrieb:
> Thanks Tom, I am using the the same labelProvider, and setting the viewer
> input with the list containing object instance of both A and B. In your
> Example A and B having their own attributes so it is ok. But in my case
> since A and B having the superclass attribute "name" If i observe A's Text
> it is giving null pointer exception. If i observer B name it is ok because
> it will be observer only object instances of B. I guess I must use
> ConditionStrategy only. But i am not able to find out the ConditionStrategy
> code any where in CVS. Can you provide me some pointer on it.

*It only exists in my mind.* Still I think this is a LabelProvider
problem and not one of EMFObservableMap. Can you by chance modify my
example so that you get the NPE and attach the project to a reply.

Tom

--
B e s t S o l u t i o n . at
------------------------------------------------------------ --------
Tom Schindl JFace-Committer
------------------------------------------------------------ --------
Re: [Data Binding] Table viewer and EMF Data Binding. [message #423005 is a reply to message #423004] Sun, 21 September 2008 07:42 Go to previous messageGo to next message
Suresh Subramanian is currently offline Suresh SubramanianFriend
Messages: 61
Registered: July 2009
Member
Tom,
Please find the modified project .
Regards
Suresh Subramanian
"Tom Schindl" <tom.schindl@bestsolution.at> wrote in message
news:gb4794$hh2$1@build.eclipse.org...
> Suresh Subramanian schrieb:
>> Thanks Tom, I am using the the same labelProvider, and setting the viewer
>> input with the list containing object instance of both A and B. In your
>> Example A and B having their own attributes so it is ok. But in my case
>> since A and B having the superclass attribute "name" If i observe A's
>> Text
>> it is giving null pointer exception. If i observer B name it is ok
>> because
>> it will be observer only object instances of B. I guess I must use
>> ConditionStrategy only. But i am not able to find out the
>> ConditionStrategy
>> code any where in CVS. Can you provide me some pointer on it.
>
> *It only exists in my mind.* Still I think this is a LabelProvider
> problem and not one of EMFObservableMap. Can you by chance modify my
> example so that you get the NPE and attach the project to a reply.
>
> Tom
>
> --
> B e s t S o l u t i o n . at
> ------------------------------------------------------------ --------
> Tom Schindl JFace-Committer
> ------------------------------------------------------------ --------


Re: [Data Binding] Table viewer and EMF Data Binding. [message #423035 is a reply to message #423005] Sun, 21 September 2008 20:21 Go to previous messageGo to next message
Thomas Schindl is currently offline Thomas SchindlFriend
Messages: 6651
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------020801050605060000090009
Content-Type: text/plain; charset=ISO-8859-15
Content-Transfer-Encoding: 7bit

Hi,

I tracked it down by modifying my original sources (your zip didn't has
the sources attached!).

In fact there are 2 problems:
- EObjectObservableMap which is tracked in 248069
The fix is so easy that you can until one is available from CVS (a
release of it) to copy the EObjectObservableMap and use this one until
then
- The ObservableColumnLabelProvider it must provide the possibility to
switch between different templates like this.

-----------8<--------------
> List<ObservableColumnLabelProvider.CondiditionalTemplate> templates = new ArrayList<ObservableColumnLabelProvider.CondiditionalTemplate >();
> templates.add(new ObservableColumnLabelProvider.CondiditionalTemplate("${0}") {
>
> @Override
> public boolean isTemplate(EObject element) {
> return !(element instanceof B);
> }
>
> });
>
> templates.add(new ObservableColumnLabelProvider.CondiditionalTemplate("${1}") {
>
> @Override
> public boolean isTemplate(EObject element) {
> return element instanceof B;
> }
>
> });
>
> ObservableColumnLabelProvider lp = new ObservableColumnLabelProvider(maps,templates);
-----------8<--------------

I've attached a version which provides this and the sample project is
used to test.

Tom


Suresh Subramanian schrieb:
> Tom,
> Please find the modified project .
> Regards
> Suresh Subramanian
> "Tom Schindl" <tom.schindl@bestsolution.at> wrote in message
> news:gb4794$hh2$1@build.eclipse.org...
>> Suresh Subramanian schrieb:
>>> Thanks Tom, I am using the the same labelProvider, and setting the viewer
>>> input with the list containing object instance of both A and B. In your
>>> Example A and B having their own attributes so it is ok. But in my case
>>> since A and B having the superclass attribute "name" If i observe A's
>>> Text
>>> it is giving null pointer exception. If i observer B name it is ok
>>> because
>>> it will be observer only object instances of B. I guess I must use
>>> ConditionStrategy only. But i am not able to find out the
>>> ConditionStrategy
>>> code any where in CVS. Can you provide me some pointer on it.
>> *It only exists in my mind.* Still I think this is a LabelProvider
>> problem and not one of EMFObservableMap. Can you by chance modify my
>> example so that you get the NPE and attach the project to a reply.
>>
>> Tom
>>
>> --
>> B e s t S o l u t i o n . at
>> ------------------------------------------------------------ --------
>> Tom Schindl JFace-Committer
>> ------------------------------------------------------------ --------
>
>


--
B e s t S o l u t i o n . at
------------------------------------------------------------ --------
Tom Schindl JFace-Committer
------------------------------------------------------------ --------

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

UEsDBBQACAAIAPmxNTkAAAAAAAAAAAAAAAAbAAAAdGVzdC5jb25kb2JzLm1h cC8uY2xhc3Nw
YXRolZBBawIxEIXP+iuW3J2tQqGHXaWULSjUFt16lZgM67TpJJ0kpf77VlpR ChW8zRu+92Z4
1eTzzRUfKJE812oIV6pANt4Sd7V6bu8HN2oy7lfG6RiDTttxv3cUyEl2xSux rVUUo4r98mcs
/wWN5wPopQM0jkJEeLEJnM5stt+nYbZo1neP8/Z2Om8W5V+OOKGwdmBxkzvI 9OtEgWXSbLXY
1UO7C1jORstmMITry/8JFsF4QRB8zyRon1zuiOOZJJ9TyOkQtiHes1V50t0X UEsHCJS4/mLM
AAAAbwEAAFBLAwQUAAgACAD5sTU5AAAAAAAAAAAAAAAAGQAAAHRlc3QuY29u ZG9icy5tYXAv
LnByb2plY3S9ks9qAjEQxs/6FLJ3k/bWQ1xBS28tBe0DxGRcI5tJSLLSx+9k NytVEATB2/fN
fJNf/onlr21nJwjROFxUr+ylmgEqpw02i+pn+zF/q5b1VPjgjqDSO0QVjE8U rqcTgdJCnSAm
phxqt4vMSi94X6a2ctYCplrwUVGxrBSz5v/NrjOt3nhQZIpb05hEnQsF5kLD QLXGR2BHnbmB
hDzJPg/hDKcBGZouU+Ng+YUX/JpwD9JrYJ8SzZ7OvHoacaMOYOXDvFIoV0yo 1AUYooO+fbtD
P6P73I2RvNfvtmsMfl3nR0m486tffKY/UEsHCPXpFFjoAAAAiQIAAFBLAwQU AAgACAD5sTU5
AAAAAAAAAAAAAAAAJQAAAHRlc3QuY29uZG9icy5tYXAvTUVUQS1JTkYvTUFO SUZFU1QuTUaF
Us1vgjAUv/NXEJPdRiMYLxgP28JlmYuZye6P8sS39YO1hYh//YqIkrnorc3v 8712BYq2aF30
icaSVmkYs2nwXKtCYLQ6gWcsGZB3kJiGD5WoS1LdZQA2rcy1IN4TnBczrlWh c8skVAtLqhTo
vNfSmfqsGodf4l8EWLsGt0tDdmF6M9NFG91QgWYc/qY5CDqAO3r15QbsA39q Mlhke+R1R8hU
Q0Yricql4WuyyaKYzYNsX2njojXwbyj9BF15X/wxGE6MZCVGV+8lgpN51Gel oTYlQy6osujH
N8hMrRxJ9LoxhHLrzx5fNGQpJ0GuTZcG8VjiD7mmRd6P0vTbWk5mbM6mkz+8 Y14BDnJShV/3
lSpmybWqq3JbNL0WfW2B38+K7zVkOYKyt3tCBXzXSaXUyjIB/4QlbOYFw4M/ cUfN8Susuw/Z
pqGAQxv8AlBLBwiiAPXnTAEAAPECAABQSwMEFAAIAAgA+bE1OQAAAAAAAAAA AAAAACcAAAB0
ZXN0LmNvbmRvYnMubWFwL2Jpbi9IZWxsb1dvcmxkJDEuY2xhc3OFUttu00AQ PdukdessTQg0
5VZK0rTNBeqGayUQEiogKhmQCLQCnjb2KnG1XUe204pHPgN+gGckaBFIfACf wkcAs06k8FLV
luXZs2fmnJndX3++/wTQwoaFCQb+RCoV7oSR8qstC1mGwq7YF44Suus87+xK L7EwxVAcoy8G
WouOkgy5faGqfhD3lXjHUHbDqOtITwX9WDrxQeIcBH5XJrHzcEi5yzB1L9BB cp+hWjuRXd9m
yG6GvpwBwykOC9M2MshzzKDAkKkZQt4NtHw22OvI6OXQVNENPaG2RRSY9QjM Jr0gZph1/2+X
/GSigbYwz7BwnJt2jzJslHDe6No2LmLBwiUGe1yK4zIWGaa9SIpEvtpiqBzf XlqQmjM1yxwV
00s27Etto4oVC8sMiyeMhmMVNeqd5PwH2jeoSLxeOpM3pkyDo2kYk7GSsm+U rnGsGcQOYkMP
Y+mbbeOF9E4wS2ntcBB58nFghpkfd75mrgUhj7SnwjjQ3acy6YU0kFu4TW3t iUAzlGpv3fH1
aScR8dLT5Vtay2hTiTiWMdbpmDP0TYIViua06ZpO0EdTJzRH0QatDWI3ml/B G0eY/ZxyThss
3THZSyhSxCk26BmcTfE5FEZV3pOK4bZ+oPS68QX8COfc5jdcaB7iyifMGegQ Sx+RG0b1Hdq4
+uHv77FYJTW3TCIrVHaVJOqYRwNlGnud3nUatjFRGgqNTHDKcEZtttJa13GD /lm6UzdxJ7XL
Utv0/ANQSwcI7rNXIjECAACoAwAAUEsDBBQACAAIAPmxNTkAAAAAAAAAAAAA AAAnAAAAdGVz
dC5jb25kb2JzLm1hcC9iaW4vSGVsbG9Xb3JsZCQyLmNsYXNzhVFNbxMxEH1u lmwTkgYCLZ+l
UOXQUoktcAyqRKNWVFooUtoicXN2h8SV147sTSp+Cr+ACxdOSByQuPKjELPb qqlUBJbWnnl+
M/PW79fv7z8APMVqiDmBxivS2r6zTqedZyECgef7A09uKgeaelZPMhPLAem3 zk5VSq7TsyZV
qcqVNVIfUDbWMieB6gtlVL4lsLgWH8upjLQ0w6ifO2WG3fUjgaBnU6qjgloD V1AVaMXK0JtJ
NiB3UAwTaMc2kfpIOlXkZ2CQj5QXWIgvCu0KXO1IY83HzE78ZlF6aahAXfmZ wNW12LphRIlW
Y08RZR84to6inf3BMSV5d/19iBsCtYR/MJPjaFsgJE0ZmVxg5T/FPKxvJy6h XVWIbs3EPimE
MbJjEm09C3tN+cimIe5yzYzWwH0sC8wnjlju4d4lwf4kj05UOqTcR/0R15Wv 2tgzhlxPS+/J
h3gosPxP+9ifvxqITQj2plhz/LFBnIccbXFeINXHG98w/7W8r/NeL9FtZrIV HC2dstBAs+xS
xQJafCdwDdfPer3ks2A1N36i/Qlh5TOC4Mt5y2IksHuhXfO8XRM3sVhKXCr5 t3CbzwB3cA8P
OGozJnC6KljBo6D2B1BLBwh8onqqzwEAAOkCAABQSwMEFAAIAAgA+bE1OQAA AAAAAAAAAAAA
ACcAAAB0ZXN0LmNvbmRvYnMubWFwL2Jpbi9IZWxsb1dvcmxkJDMuY2xhc3OF UU1v00AQfds6
cRNCA4GWz1KocmiphIt6QkE9EBVRYQhSSpG4re0h2Wq9G+06qfhPXDghcUDi yo9CjN2qqVQE
K3l35u3Mm+d9v35//wHgKTZCLAi0XpHW9oN1OuvuhggEdgeJJzeTiaa+1dPc xDIh/c7ZmcrI
dfvWZCpThbJG6kPKJ1oWJFB/rowq9gRWNuNjOZORlmYUDQunzKi3dSQQ9G1G TSyi0UINdYF2
rAy9neYJucNymEAntqnUR9KpMj8Dg2KsvMByfFFoT+BKVxprPud26nfK1ktD BZrKzwVubMbW
jSJKtZp4iij/xLF1FO0PkmNKi97WxxA3BBop/2AuJ9ELgZA05WQKgfX/NPOw oZ26lF6qUnR7
LvZJKYyRfZNq61nYGyrGNgtxl3vmZS3cx5rAUuqI5b4/uCTYnxTRicpGVPho OOa+6lVbB8aQ
62vpPfkQDwXW/mkf+/NXA7EDwd6Ua4E/NojzkKM9zkuk/nj7G5a+VvdN3psV +por2QqOVk+r
0MLViqWOZbT5TuAarp9xPeOzYt/+ic6Xc6pyFDC4QFM7p6nhJlYqaatV/S3c 5jPAHdzDA446
jAmcrkWs41HQ+ANQSwcIyjGsHMUBAADhAgAAUEsDBBQACAAIAPmxNTkAAAAA AAAAAAAAAAAn
AAAAdGVzdC5jb25kb2JzLm1hcC9iaW4vSGVsbG9Xb3JsZCQ0LmNsYXNzjVNr U9NAFD3bFtLS
8CqC+Abk0ZZHEFGR4qOtRaqhqOUxg5+2yVKCacIkAcafpaPj1A+On/0P/hXH m7RTijCD7SS5
e/bs3XPP3v315/sPAPewJSHEIK8J07R3bMfUxxclRBimbKeqCM00Dl2huCee Io6F5blKWZhC
8wzbyur80BMOQ8cxN8c1hgFVsy29xg+VvG153LCEk2HoXDEsw3vKMJS8YD61 zRDJ27qIgSEu
owOdXQijW4aEHoZw0if0qsQtHdUqwtnkFVMwJFRb4+Y2dwx/3AQj3r7hMvSo 7bWQgp4TQ68K
ryFc6AzppHpZcQV/TOpiGMKwhKskv028/13lmmc7H2Vcw3WGmCiWypvZUr7A MKxeTM3EKdlN
Gbdwm0HSHME9kWXoTqZaC7KZKEYYQtmFOMYwLuEupW5NypjAJC11hVfiNap4 MKke8GOumNyq
KmXPMawqaY4jibSEFEP/OcNlTGOGnCY/Cqao+UUzTJCCdkNEbU/R7FrNtpQj zzCVgmq4Hqmf
w7wEhWH0UrJMjbVAx8d1/R+VG5UDcjiT2vXNWJTxAA9bZuTOmpEjM5bIjByZ sYwVCZk2M3Iy
nvhmRMiMnC/tmYznIDvDVJq/ZzF1ftco8tSuJXEyko2i0AxpV0ZeTv1nTxCb k4FtR0ZIpR3J
EdJVto8cTawafmP2njbknK+JkIKlmbZL57UuvH1bl/CG1pzSZLxDmSHa8GWr yDB2vmcbbU0C
92ldcJPkokVnnDe56woX83SlwnTHWV/Cv1cUheiRECU8RtESjX2kKz39lV7f IH8KOL0+FsyQ
Q9hFH0UyxT7aj0SAD+BKM8tvYkboe/QZg3XcYFifSdypYzSE9Bd01THFMFPH bAg7AeE+Q2k2
8aiOx22E2QahNQ7X8TSEnxhL5M5mijQnlhMvggyngicDMZzeFRKpYRQCaexh AVXkYOA9DuDh
Q1BMuiG4WYwfreJlUI6JNRQpYxqv8YqeMP3VYI91lOgbwQbeYjOwggWW0O8v UEsHCD83yBv3
AgAASwUAAFBLAwQUAAgACAD5sTU5AAAAAAAAAAAAAAAAJQAAAHRlc3QuY29u ZG9icy5tYXAv
YmluL0hlbGxvV29ybGQuY2xhc3O1WPl/G0cV/44te2V52zhOaqJCbjf1EVd2 nJDWSg2SLLsm
spJajo3SgllJY2eT1a66WtlxD8rRQtpCCaRc4SiFcpZCE8CyK1pabsp93/fx Z/Dhza5sHT7i
fPpBP+zM7rx5x/cd80Yv/ffZ5wH04D8Sahg8t3FNMyYMU0tJcDE0nVZmFJ+m 6NO+Y4nTPGkx
1B9RddXqZ6htax9ncIWMFPegFg0y6lDPsCmi6jyaSye4OaYkNM7QHDGSijau mKp4L350WafU
LIMcKUn009e0ouoMLW13REqSY5ap6tP+9nEJmxl2Gua0jyc1NZPlvuys5ZtV U9PcyvoG1GxG
U+Y8aEKDB1vRIuE6hu5y8tNTSpL7UoqlJFQ9RUxtBrGJsWOJLDdnhGZZGa/A NgY38RzlipZm
GG2LXEGmv72CImmYlVKMZfY+m6dfwvVke8n01h4PvHiVgHA7Q+sGBI57sBO7 Jexi6Loq2TL2
YC/DtWZOn1CtUwN8Sslp5NfBtqu0ocxDozldFyt+OyIUc5o8u2UVFzJIKccA ht1XtJGckDS5
YvETwwx71sYkdopwtMOjk9hWUxEnI2f5hkw1FbGnHnSIALkJ3RJ8DNvXZStT ahxgaMhyy9nN
sHdtTRwSW5WD5MaVoTej8lluEqGatcbtuQe9eLXw+2GGfWtzDhnpjJFVLW57 vhe3yOgDIeSh
1ZChW6ahCc3a12FgE1Hk3bpKDpWBNEA+9+AIXiOUei25s21YiAxiQEJonfQr CpARxiDDNcuA
CX4M17VFqkuJDdNtDKH1M3QJslKKCvCENK5bx01jRk0JFIeET3txVEYEI1Rz sryahsFXiW+l
S4aryG31jjH0bTQr0krGN1zSckTJCK1ulzGKGFVSAumobszqYY2nSQxlSH/b xssGmVPOPMYt
fwNOYEICZdzOpKGnhPiQMx5XkmeUad4aoXgxFY1K2usRp1gJBmLhycloYCRM +VQhmqenaC7k
hwMW5WoiR5HmwR14g4Q7GTqqacu1DI8MVpTPN2KSZDm6CxQYntx4aVnFzrUU pZqSS1o5MnCQ
ikTO5FdRhVf6yoZTkZEQSLmCk5NBCSmqYnbU5ixV8wVMU5kTsedBEg0Spisr +AE3VNrZek/3
fR5M4YxIH60q8JdPskboyEgwqA6XBAjeMu4CRWqtkkqtkTQnJViVknvdmLEl 95DkLM5IoPK6
vWRdyNByaT2iJLhWypezuEdoeC/DcTpsXwZukUoDivXpzTLux1so7O06UCaZ oWfdLAwqWV6x
wWbI8DYZb8cDDI3OkTBCXYeNbnukLPgt6h5oh3DlO2S8E+fIgaFj0bHAcDQ8 OjkZjoRHwtGx
2DrRP8qnuMn1pBP9D8t4BO8iocVoFgYyPNS21u6ij/4fEauR6HLobawF0o/K eI+ouG5CeljP
5CwJ72XYsVaZDuYsy9A9OI8Lwv+PMdy4kVOHzgA3PkDdHwGvTs2J/R+S8WER 4RIJHuNnSe5H
KuPyoAcX8TEh5eOipVvFUcK15/EJGU/gkwxbKehjXCMEVUMX9nFdxEvXSv34 jKigvhXEdv/B
qLTuvEKzQFSUMvvWCcTSCU3ENRmiDq9CfdUHldPjZkjFW19W1lFLYvE0tUkW J15N1UlIKmsZ
AcO6VUDAkKQUWcUztJJg2LUmjE4YEVlLZXM/l1lq8IeqdDqyvi6t4uxSU6pw p6KNFW3z91My
z2NBQp5EVR1zg0rSMsw5GYt4lvDgw9HYWCAaosNtW2R1Un8jMfu6jOdEJdnk VJJlm8XaN2S8
gBcppp21ADUyZRUm4HfjWwRtoKcR38H3JHyXxC4vyvj+UjpElTRvxEv4kYQf MmxeAa+MH+Mn
VFYIylI7cENVOyAKR9JIpw3dATFse7YRPxMnx8+rOt1ViYVFv5TxK/x62aJg pUVBsui3ZFGQ
LPo9/ijhD2UWBWX8SVjkIotoH6M2rrEMi/K3oGhFY0bOTPJBVXh/U6kO3CTi gCrDsE6WhzQl
m+VZCf9a6c9i20KlbKlxwW6q/LUQPxfN6H5JT4nefDQyGus68nBfokkNPPSs tz/uQCM9ZYeA
xmtobMC12FTcfCcxq6FxWwFN8TxdTzsXsKUAb7wzj1cuYEeJXwvtB3bBTXcm GXvpUrmHbofd
Nv8WhwdacQONbrp17sONJKEBbWh3JLFHSJKbVl/sKKCDRO2fR1cBvXHS+lCk cx43F3Akvllq
yqN/HoEChohmeKSTyF5X9xyi0a5amh6/jLEFnIx1uZyXN4mXApJEy/tcXlcB U/HmU3mcXkS6
BhPiQzbenMtj1vlQwNl4l9eVx919dZ3eunnct4C39tV3eusv48EFPDSPdxdw Pt7R5M7jfX2S
V2p+/zw+6JUKuBj31ufx0Xk8LiCptSGJYgs9ewmCgwTHITL+MLpwMw7gFpr5 MUBXh9sRwEm6
MZzBUdyLMZyj8/hRjOMCJvA49aJPIY7LRPECdUECylEHJHwKT9K4FU/j0/gM QdiFx/BZfI6A
PoyH8Xl8gXQ4iWna/0UC9hxJfBpfIhddoMvcl/EMuf8pcssl4i3hK8UQcOi/ SvQNooEohsAT
xFPE1dBlfG0RBYaj9uR5hkhn8zcX8e0adCziBwydi/gpYWiv/oJhZH/zbxbx u6XV/c5qxzPL
EbPHNuUuEmaimZqx62FRVMxQzMwSSGfpcnS3bfIu8Y8J+m21QZSH8Gf8hZTr pvi6hL8Stxr8
zeb6d/yDxg4y0wvnN1Ucs8XxYnE8gX/i3/UN/wNQSwcICiflnQ0IAADTEQAA UEsDBBQACAAI
APmxNTkAAAAAAAAAAAAAAAA6AAAAdGVzdC5jb25kb2JzLm1hcC9iaW4vT2Jz ZXJ2YWJsZUNv
bHVtbkxhYmVsUHJvdmlkZXIkMS5jbGFzc6VUa08TURA9lxaWlhUKig8UkFK1 LY8FeagUMVow
IS5ggsEYP93uTmHJdpfsbkv47C8yQfGR+AP8Uca5C8GUaAm4m03vnc49c87c mfn569sPANNY
0tAmMLxRCSloyIpLZd+t1zxTVsh9HfgNx6YgN60hKZDZlQ1puNLbNjYqu2RF GjoElvxg2yDL
dfZCMiw/IMOWkaw4nu2wo3+Ka9TknrG6JvfKO4xAphNG5FEg0BHtOGFuikmY LVmU2HXR8Zxo
SSCbP8e3sCWQLPs2pSBwRYeGzjQS6NGRQkYgkVcOPabj0Xq9VqHgjQIS6DN9 S7pbMnDU/sSY
VAQFRlqHzE0zwR7WZrt0qlLgWd68SIJOT640yItYRgo3MaDhlsDC5XF03MYd FmI71arA3EUZ
LfOxUhpDuKthWGDmEsd1jCAr0L1N0TEv+xUdcFJ78wUzLqt65LjGJkUlDbkz IXar0iKj4dA+
BaHRlPQTrFhkF+4jr+EB33cToo4CigJa5D8PAnkg0J8vvDfP1jLrG8W4Ko8J geXmS2smsPpC
htRcbX+BK2ylYYAbhwt7sGXh6HiIGYFOaVkUxo3w9rzqbsHun+mJW6Kd1FJg 8X+KkieBrFZZ
JCO7VGNTqHqp+RpZkEf7K8fh5i5FWCC96dcDi146qg2zLXMyqcIzjRXPcv2Q RaxRtOPbAvqq
x2Om7MowpBBTPA4S/LVDZDJqKvAQbOMvhTRbu3j1mPfKki6OfYJePEL3x9in V9nif9TpKfTx
Sue1sl7Ftdjej+snKB+Q5BcYHTvEjc8YXPuO0XfFQ+jjX3FP4Ahj62o38QWT f+CHmBAww6Rm
GXoOGcwz4CwG8AhZJqZCFo9hT0Kq1Sx7cra5xefZr429U+z7hGUmsBBjl7DI v0muR+BpTFjE
xPn5DVBLBwjIQBZuqQIAAAgGAABQSwMEFAAIAAgA+bE1OQAAAAAAAAAAAAAA ADoAAAB0ZXN0
LmNvbmRvYnMubWFwL2Jpbi9PYnNlcnZhYmxlQ29sdW1uTGFiZWxQcm92aWRl ciQyLmNsYXNz
hVFNb9QwEH1Ow6ZdFgoLy3epqPbQgtQUkLgs6mVVJKRAK3XVAzcnGbauHLuy k5X4T1w4VeqB
H8CPQoyzVUGi2lpyPPP8/OZl5tfv858AXuN5gkhgfT/35GYy1zS2uqlMJnPS B87OVElu+CZB
LPB2MWlsTalKVStrpJ5QdaplTQKd98qoeldgsJmdyJlMtTTT9LB2ykxHW0cC 8diW1MUSVnq4
gY7AaqYMfW6qnNwkFBPoZ7aQ+kg6FfILMK6PlRd4kV3jfSRwcyiNNd8q2/id oPafD4Gu8n89
b2xm1k1TKrQ69ZRS9ZVj6yjd289PqKhHW18EEtJUkam5e9ewWf3QNq6gDyoY 31hoeDuY4ybs
mUJbz+Y+UX1sywSPBNYWvuzhCZ5yrcIR/0WmPFsbXtX0OdTUSqeBxf56H40h N9bSe+KeDq6c
JXYgeExhRbx5VpwnHO1yHpDOy1dnWP7R3nf5223RA2byCDh6MGehh1utSge3 scp3Andw90Lr
HZ+BFcXfL3VCHWDyj0Z0qRGhj3utr/ttNmAGEOMhHuMZR33GBOZridG1eOUP UEsHCLS+WBan
AQAA/AIAAFBLAwQUAAgACAD5sTU5AAAAAAAAAAAAAAAATgAAAHRlc3QuY29u ZG9icy5tYXAv
YmluL09ic2VydmFibGVDb2x1bW5MYWJlbFByb3ZpZGVyJENvbmRpZGl0aW9u YWxUZW1wbGF0
ZS5jbGFzc51S30sbQRD+9nLmkjRq1Gp/2FQqFhIFr6X4pPQlVBCOWjDkoW97 l2m6stmV3Uvw
z1JQhD70D+gfVZy72Pah4oMPOzPf7My3M7Pz6/ePnwDeox0hEPhwnHpyU5lq 6lk9GZtEpqS/
ODtVQ3JbPWuGaqhyZY3UfRqfaZlThFCgdSqnMtbSjOLj9JSyXKCZ3wX06Zzh cvIv5CR3yoz2
BaoHyqj8o8Bq5//r7kAg7NkhNVDBkyYiNAUqne6gDoGFJuZQFVhMlKHPk3FK rl+UXTxkM6kH
0qkC3znD/LvyAnvJIxrkOhvK/0ECm53EulFMmVZnnmIaf2PbOoo/zVrf734V qMksI++33gkc
dR71ave+gTVO7MRldKiKpjYfpN0t0vkbjowh19PSe/IR1gXaD6bxX9xbT/iG p17hXREIitGz
VWE7Qo1lndEh+wPWje0bPjvXmL9kFGCR5UKZ2UaI1xy7gRajtVk0lrAMlFbB KniZVvAUaNWw
yjEz7resBeu57SvMX/ylrZbO9ZIuKM+zUj7Hi5KwSHqJV2H9FlBLBwjhRLbK mAEAAOcCAABQ
SwMEFAAIAAgA+bE1OQAAAAAAAAAAAAAAAEIAAAB0ZXN0LmNvbmRvYnMubWFw L2Jpbi9PYnNl
cnZhYmxlQ29sdW1uTGFiZWxQcm92aWRlciRFTUZMb29rVXAuY2xhc3ONVV1v FFUYfk53prNs
B2lLWxzko2CB3bLtQlGQLaBQW6xuP7RQ7Yfo7PZ0O+3szDIzW0FAjDHGeKHG KAoxGpPGGo0E
jSmtxgZvvMAbf4iJ/0B8z8y20u62cjNzznue877P+3nu/vPzIoCDeFNBBcO+ vrTLnWk9bfIO
2yzkrJSe5ma/Y08bY9xp6uzpStn21Nm8Aolhr+1kE3pez0zwRMbO5WzLTZi6 lU14/IKXGPAc
gS3kGcLc5DlueS7D5pHUpD6tB7i+9CTPeO0MlccMy/BOMISisUEGqcMe4xGE UKVCQZhhU8qw
eG8hl+bOGcGNoTZlZ3RzUHcMsS8KJW/CIBux1AN6ISybRY57o/cRI+6GlW2P lYrC2MzA4hHU
Y4uCBobq1RAVD0NjkN28aXgU0XJ6R8opfoShYrR1Axi2q5BRGcFO7FLQyFDz H7rb8niWOyp2
41EKbF53XE4yhvpydroV7CF1Ik88Yxp5lyd4bpzWtsMTnUH4q9CEfSqiiFE0 eIepuxTCxmgs
tcYtH9Fehf1oURBn2LYeTkUrEgxalnudJ02TeBUyXsHRzS6u05+TqT1lTAXV lCh4hpnoTBmu
R/YO4pCCNoZd/wtW8Rgep+AYHnd0z3YYGqLFVPqg7qKclB7BUQVPUDmVnqpI ggpEsqiYGeqi
sdLCVXCcIbqG/yW+VuEYnlTxFE4yKBSQXj3HVysuJk6UV4eKp9EpcnK+oJvu qgwXGcSGRfpO
q3gG3cSVn+bE9UR0rdyVcGov45WIynMqUughnhO62+sHgDpzOIw+qtFLBxQ8 z7BlNetTBcOk
9hLcB1ScwVm6Pq2bBd43vqq9lsiXc7wfL4qmf2mNih4UiGEVIxil0Oj5PLfG GFoeqHmLBH0j
51S8IhIR9uzgMAydGvuKgsyKng6oRsCRVTC+5LU/4Hq46+pZ3mU7OZ1qbgIG MRr3dwxHyzAq
M/rKhiCNc2GYDDQJQlP8ohh2JSiGqsBUv+6UzNVljJwPTmU/DysVLQ/fHet3 OkWFHGNUXsp4
UDQMzQ9eYAxqQDQgxRAZsAtOhncZYmLvXndStwq2pKDbsrjjs+Gugjdooq17 jWHD8ohHo4gi
RCyZGKq0qqAVvSr03UC7Q/4JIDffRuQH/1ilb4T+wLuQ8B420koNQHgIm3xl 1agJFLC/SSr+
u/bX1s6hriceaqvdSove5p+wrSXUNo8dbUlJk35D03W81bIozeCyJt1B0wL2 MiRl6XDlLDKa
vIBmhgUcIFl4Fge18AIOM9zBsaSiKQugx7GlvrJtDqeuo86/L6RdFUhKs9go 0M8y3Lj3R9GQ
dr+JtytZfWXL4lf3Po8L85O1vUn5F/QPafI8XriNQUF8KC6R8qE5vJyU44vy DHaWIuRlxIqz
V5ekmiz9ivRQSJMG5jF2S5N+R5UmzWFyFnLt1K3l4A6jgb4fUBY+pEB+hO34 mJ6TT2juXMNx
fErnn2EK13ERN3CZ9u/gC7yPL2l3DTP4Gt9iFjfxDe7S6k98h7/wPavATVaD H/1kjQYJKSZL
rHKwRNbZVtjIE4tqwp6nVQjbmQQHLiX6CKGi8CidSUyigGmqlmF6Z1/DBWJ6 ExniY9FpBV73
PblE3EShiPq5gquI/AtQSwcIIuQqgr8EAABMCQAAUEsDBBQACAAIAPmxNTkA AAAAAAAAAAAA
AAA4AAAAdGVzdC5jb25kb2JzLm1hcC9iaW4vT2JzZXJ2YWJsZUNvbHVtbkxh YmVsUHJvdmlk
ZXIuY2xhc3OtV2t7E8cVfkdWWXtZHDA2hjokwQEiS3YEDgEKDjG4EJzKl2Bi 4jgkWUmDvCBp
xe7KXJp7IOn9lt6StmmStg9foS0Qhyd5+NQP/Qv9A/2Un5DkndFatmXFDibW Y+3szJxz3vOe
y4z++8UnnwHYiX8YiAhsHkn70pu203k54ObLhWLKTsv8qOdOO1npGYgK9Lhe Likzeafky+Tp
U3ZGJqcdeU56frKOiMAaOwg8J10O5JBd8gUem0zN15BxPZnM2oGddopZp5hL ulUEyYJdSg7O
IaL8foGmQBZKeTuQ1LU2ddqetpPlwMknU44fqOUxJ1e0g7InBZ6oWe5LLene 1gGXELJO4LhF
O388NLP/ALWu8stpP6A3PRq8XbIzUwp7oeAW/WTeJu5Ang+SY4E3pnY6QTlw PQquow8DU1yX
CoAsKkb674yAoVoNVNvYR+miExwQaIh1jQtEB9ysNLBeIHEHAA20CTy0NCmH h46kXPfM0yUT
rWi3sBFryUeftm6iBd9VUx20G1uWGqWnXNrfNd4EppqF1bAE7kk5RTlcLqSl d1xhEGhJuRk7
P257jnoPJ5+K3U3aVBJBgyEO7icIA50C+1au1KQTW5Xz2wSOxe4qq+vBY0yD KYdJfv/SWcts
sOaXmEDf3RWYNVtgxxk2FY1F4JTnPRYeRlLAzHiSe1Vuko5YHU9qa1RJ71S8 9QqMfhu8zalW
rE1+AwwrbQQGHhVYP6froOfZF5RCE7vQbmAvo7W05l4Te7BPeU+m2+pBHV+N x/C4AZZ280LU
FvpxkAVvZ7M1siPp0zJD958VEHmBDQsL6EJptoje/lbpXimLXeMmGtCumsAT Fgw0Ghhclrid
Jo7iB4q4lEBnbJmaqLSYYQtr0KxGoxa+g1WrsQXHLIzhuEArWVzUWQUG7rDN LG7OKgeFw3/6
ZGQdv+T6UhmesPCsMtzuyYI7LRcJKk6es3BCtdfGnAwGC3aOIdtVL84LMPrn gmTOs0tTTsZP
aimmliHzsiCLNfUbynOZBirlvb2u/kVpqZIya0HiFNE5gfRsHh/MtNj80hoM 57l7CqcNkIWW
xasWzoBJGi1q+62xrsUADBQFHllBdhlg/9s8nx1ZOMWxCuPhinITBRCDDxo3 HX9WUifVkoIs
LyU7beEczpMFO5ORvr91h8DgMun4NZVQl+YpXLTwQ7zEGE3Z/rDmiEc8Tb+C 1wy8yktPrZSF
1/EGz+S8LOaCKb190MClBTsrLqg8fMvC2/gRdzEFlg9/OKUO+p9Y+Cl+xv5H wdneckz6bn5a
FU481vVNz/8mXiR+YeGX+BVZDPOU59z6yfp2f2PhHfyWfHiSvGVkDeiFLX7+ VCN+L8Dij2To
6KMrCpHAieVaTerr78MLNlaqPXt4mt7qFvgn/MXAn8MLW30Fh2xfLlBi4X38 VWDjKceT9bQL
7I2tEBCrYcwtexl5xFFHReeSXj+syOZVYbDIzjWQt31fXcfb6pLIO3n1Dsn8 Y+bxB0eUgWVH
5iiiTgDONumxyQ+vhXrM3s1nE1fvwVruWMe33ZRUfy230DJxC60TN7HhJjb9 C/de0zL38dvk
E0hw/ybcr2dVFmzEA6GOUVpWGJrj0U+xZaIhMdZ9Ew/Wyh+k/UNa/oHKbmzH Q9p2M2Looi41
itNORGvfFmpPcbfab8YT3R+DmnfUan6SPqXmaTarmk3NidCjimZT3bL4rLDz iLaQIwdKz6Zb
2EX/d6cSt7BnIn4T35tBXwQnEle52KANNmsDI6RwFO14RhvdUBHWBsCVdXRT BWCAbxaflRl1
S1Nu9VaNf18b/4TGVQj6ae9wPERwHUc4PKowPHkdQ/HEdYw0HLiClsTm3vi/ MTSDpyK41CA2
Jz778MvP493cf62KcbvWP0mtXQz0DnTgORJzkoQ+z9+lJ7EPL+Jx2Bp7vGK7 Slh/lbB+nUYR
dBLz0xin7ll/KmumDtOJaiI5fFc8bGvou4I2ghzpCKE+Q6hCdKgpov0/fZqc i+AGGgSy/Jbs
YlkCzWErm/YcsdtCcGq/AqJoPElXZvNX6F0RcbWqs+LAmXk6IlUHI3iB7isd NtIVHaKNJCgU
l8UQQR6ZQYa/Y6JXsGVTdAY5gdsoDPckbsO9gbPvYnXPxygPXcEatXpB4L0v /9f9Hwx238DL
7+OQ9vJTvDncsJsa2nvaomqmLdqbmMHlCMYuRUVbtEfx8E/cewM/vo3Wnuv4 OV+o4NdXW343
58Y+Xa4u384yhh5d8JlhARP4LPbiPONxgWl/Ecd4vGX4LPBEu4hX8QY/yvUD uh1crrp+OXQ9
gjfDYujAevwBf2RsUySS5wdHIyHN0bWNPJffDWneHkZ3VTxxA+9dq6FaVNtC BB/o7w/xEZ+d
JPYoKn97wmeBu/8WVUeWwN9hfgVQSwcID2PIQQIHAAAwEQAAUEsDBBQACAAI APmxNTkAAAAA
AAAAAAAAAAAkAAAAdGVzdC5jb25kb2JzLm1hcC9iaW4vY29uZG1hcC9BLmNs YXNzO/Vv1z4G
BgZDBh52BiZGBs7k/LyU3MQCfUd2BhZGBoGsxLJE/ZzEvHR9/6Ss1OQSdgY2 RgYemCKnxOJU
RgbJxJSUgKL8gtSikkrnDKDaVJ/M4pLUvNQiRgY1DR+wEUmpiXnF+thVWWuG MTLIFKXm5pel
4jKHKzi/tCg51S0zB2ghm6MeyFCgSxgZmIGYFegBJqBr2Rk4GECu5gTRQHEu kDgDNwBQSwcI
LP3CNaQAAADjAAAAUEsDBBQACAAIAPmxNTkAAAAAAAAAAAAAAAAkAAAAdGVz dC5jb25kb2Jz
Lm1hcC9iaW4vY29uZG1hcC9CLmNsYXNzdY8/D8FQFMXPo5T6OzBIzMKiMdsq MUlIJPanvalK
vcrrI/HVDD6ADyVuG2HAcO8Zfuee3HN/XG8AJmjbKAhU/UQFB3l0PRuWQHsv z9KNpQrd5XZP
vrFRFqi/TTIlASsk4wl0hqPFx742OlLhlGma0+7wG442Aj0ZBCudHEmby2zH kBZRakiRFhi8
brYkVer+duUhfU2H5Ez/cpx1ctI+zaOYvy174yyUawgUeUrc3uKqNirIKlfh 5FpDPddGpuxr
8i6g9QRQSwcIltaZBMUAAAAwAQAAUEsDBBQACAAIAPmxNTkAAAAAAAAAAAAA AAAnAAAAdGVz
dC5jb25kb2JzLm1hcC9iaW4vY29uZG1hcC9CYXNlLmNsYXNzZY69CsIwFIVP /IutFRx0dG8X
g7OboJPoUHCP8Rpa2qak1Ydz8AF8KDFBxMHhwuWcj3u/5+v+ALDEmKPDEClT nUtZi7VsiKPH
MMnlTYpCVlocTjmplmPAMDdWC1JFVjckqLy43VgSmw/CwDW1e1kSwzROdr8T aWuzSq8c0HyB
WfzfJ0eGMDVXq2ibFQ4KvM/Cc+45Q9dN32l3nCDHEF40QOgShpHPEb0BUEsH CNt0ME6oAAAA
2QAAAFBLAwQUAAgACAD5sTU5AAAAAAAAAAAAAAAAMQAAAHRlc3QuY29uZG9i cy5tYXAvYmlu
L2NvbmRtYXAvQ29uZG1hcEZhY3RvcnkuY2xhc3N1Ul1LAkEUPWPmqml+pZmV Vk9K0NJzEago
CGKB4vs4Tsvafsi6Bv2s6CV66Af0o6I760YaNTBzZs6598zcmfn4fHsHcIkz DRGGknCdqc3n
enuFXS5813vSEGXIzvgj1y3uGPrtZCaFryHGUHU9Q5fCMucLqUv7nuauJ/VO mMmQkL3BcNQc
tDsM5f7f/lcM8WvycEz/hmGr3hgzRNvuVCaRRkbDLkPtO9O059av9B5RKWSR oyzlwVCpN/7b
KgGGQgoa4gyZvunIwdKeSG/EJ5ZkyPddwa0x90y1DsmM8CT3JRn5nBI8huKm /4qmKrRVZJMh
vRbR/FFam0qLlGSo8AVtlV0XiSE9Z0g/rOGOiwduyD/rCzVlOHSXnpBdU529 sFn+hXpEeja6
Zerb1A/UVdAXiNGYQJKYHVqdE6qmvSL1gvwzTSPYozFJCFQovIBiwKq/UcJ+ gGWyU1jBYYBH
OA6wihrFMpwEGadfUEsHCOhXQ+RpAQAAdgIAAFBLAwQUAAgACAD5sTU5AAAA AAAAAAAAAAAA
OgAAAHRlc3QuY29uZG9icy5tYXAvYmluL2NvbmRtYXAvQ29uZG1hcFBhY2th Z2UkTGl0ZXJh
bHMuY2xhc3N9U9tSE0EQPQMxNwZBECSoyE0EBSJeQAXRzbJAdFlSSYoSX7Y2 YYiLm0ttFqr4
FD9DfdIHP8CPsuzeBNAqwlbNnNPb06e7umd+//n5C8ASzBi6BO6V67WDqtNI 6y3MOeXPTkVN
m26gfMdrxhAR6D9yTpy059Qq6d3SkSoHAgl91ypqWcvIC4yZdb+SVmXPbTRV WlUPidd9lTZ0
z2k2VwUGzw/btmEaO4ZVLAhMdgrLq0Plq1pZUajQaGUEIhnbzlwRowWB75aO A46JZLSCIZBk
sG1L2yEjZeTyuzkjX9y39W3N2jJsM1soGmH9E51EN5zAKZ42WDO+Ru6aG6wL dM/O7VESvX6g
EhjCrRiGBYYv76PECFLULZW1CkXN0qmSEfPyo6s9JHZb4g7uCsiKCsgdOG5N +QLjs3NX9zgB
GqXENURZZUJiElMCQ/+q2IanqqoWNAWmO8td9J4l70vEEGfJBxKzXFiEJDV2 PZRItLLNSyyc
uTLsSkskW64liSd4KhBlF8/viswXE2SN5xI9kKyxIvGC5WOs4TQVe19J9LYy rEm85gyy7bUt
pxoeeSNxvSWgSWSgC4zSESPn1xvKD071T3Sblek2AxV2eKpzYee3gGUNiT70 C/SZ1FPruFpS
ftEpeUpgwKyXHW/P8V222z+ThfqxX1abLhuD/w98kV8VVZ6tUQXhGBXNJn72 8qJ08dFNTzWO
FA+WWIqnEWKibSfbSL0KsbdtX2/bVCshqeIGBggHyfpCyN/+N9z8gVGB7xgL 6TjT6ZDOMJ0L
6SOmiyF9zPRZSJeZvgzpKtP1kL5luvGVxLuwSfsMFQqxjB6xTo9kGxMij3nx ESviABnhYUec
4INYwFYYwWs73LN4R5gEt2AI76OJv1BLBwi/exLLlgIAALYEAABQSwMEFAAI AAgA+bE1OQAA
AAAAAAAAAAAAADEAAAB0ZXN0LmNvbmRvYnMubWFwL2Jpbi9jb25kbWFwL0Nv bmRtYXBQYWNr
YWdlLmNsYXNzfVNbU9NAFD4rpWkryE0uxQsoqCDaiHe5aRq22JmSdtrA6FNm W5YSTJNOspXh
Zzm+OD74A/xRjmdDCiVS20nO+c5+5+y55fefn78AYBV2FLhGYKrhuQct1lb1 M1lhjS+syRVI
EBg9Zl+Z6jC3qZbrx7whFEgSuOv5TZU3HLsdcJW3DlH3fK7SyJPAIDe0XUpg vHThXxO+7TbX
CQzjPYFgrthnToen4DoBJUoBNW7UrL1qMQU3CMweCdFeU9WTk5NcnQci8JyO sD03xwSBjGRW
qrRQ/EQgzYtGzdQMHS+dKV1dEF6d1suGqRUNWiVAigPYBCAwcW60LFqiu9Qw awSmL6wFqpl7
VWrp5T3DlE6EQCKv1ajUBzATqVtWVHIILrngXRpWpnUpI9o/53kZCmeh5Luk BGp55Obj3Cyt
VMsVWjU/W/pHzdihVqlYMykmKmPgzFIbOBnXFlsEBpaW9zGU7h3wDDyGJwqs EJjrtsdutZ1Y
j4poGoKnkEMvGQNnsLTcr59pbN6zIRiFMcyzZLvc6LTq3DdZ3eFy9l6DOfvM tyWOjENNLjCK
YMj2Ccxj8D67pDssCHBkk70eFnV4i7siILDY37XKD7nP3YaceALdtTOB3UxK Idv6H29N4KLW
O0J6K5LPgihxqVkGayGcRUgrvtfmvjjVj3C/eckOBA+rWugffJsJZp62Zeyx s8JkQwusITz/
9MpmR2fokKl5Hb/BC7Zs5MTlWeTkd4ZZFl3MIGwdDxSgPcO+zF8s2YL7zMFG proqfti4MfgM
wjhkQYEU6mm5l5BBPNSDhxGPxM5xDVDPou/Euf0m4skYnurB04hnenAW/7Mx /q0Y/3YM34nx
78bO53rwPOJ7Mf79GH8hxl/swQ+w0hQ8hEdoWULLCkr5U37A8ndQv4WkVXxn UAJsQhLTeR5a
5Zf5Al6G8hW8DuWbCL+N5DtYC+V6hDcivAlboXwPH8JYWvjOgx7eRGAbn0Iy /RdQSwcIQEie
HeQCAADYBQAAUEsDBBQACAAIAPmxNTkAAAAAAAAAAAAAAAAsAAAAdGVzdC5j b25kb2JzLm1h
cC9iaW4vY29uZG1hcC9Db250YWluZXIuY2xhc3ONj81OAkEQhKsRWQEl+gAc SfDihAMnjAfN
ctrEwz7BMDSbIfNDZmd5OA8+gA9lbDFy8OShk6qkq1Lfx+fbO4AFbgr0CHcm hq3XB/USQ9Y2
cCrQJ9zu9VErp0OjXjd7NrnAgDCNqVFsnD20rNjvRMfEqvx5IYwbzqVjzyG3 hNn8vvobMNH7
GFSXrVNlZdu8Igxr2wSdu8SE5X8yj9Xv6Gfd8upJOkZ17JLhtXVSMjmzPHxj yHDChdylcJPA
FbgSNxTXw0jU+KSuvwBQSwcIzPvu9MkAAAAaAQAAUEsDBBQACAAIAPmxNTkA AAAAAAAAAAAA
AAAtAAAAdGVzdC5jb25kb2JzLm1hcC9iaW4vY29uZG1hcC9pbXBsL0FJbXBs LmNsYXNzjVLt
btMwFD3uQrOEsE9WGIytbGNLO2iAv52QShnSpAgmFVXip5uaziNNIiedxFsB 4kMCiQfgoRDX
STsYbANFjn3vPef4+tjff3z5BuAB7psoMSwEcdQf8sSTwyT0Wvv0N2EwLJ3K P+apKEplBmtS
ajGY6ShJYpUxrPtH/Jh7PcGj1DtQcSJU9qZ9yKOB6BSYJkN5V0Yye8Qw5da6 DEY77gsbU7ji
wIJtYpah+i8ZGzOY1/gF6tItdg2p7j3vHYkga9a6FhiuOjAxzTDry0g8Gw17 Qr3gvVDQif04
4GGXK6njcdLIDmVKLP9vO6htR3QynsmgHfKUUFW35sdq4IkglEkqPDF8RetY CW8vRzQtrGDV
xC2GtYleu5gPePCaD8SmLzOheJg6WEOVgZGVqxdrMizzfv+0I75MMxEJxbDl nm//BEXOaO82
HdzGOsN0eMLe+A8yw4oSw/hYnF3XyjUH21rZ7sQjFYinUjtr5yY29AZk5H5E 2PxAIjXRYKic
bRC1N7GIuqX3QuMSjZK+VXq+Bn30YihzmaI2RYzm+fpnOPWvmHlJi7mPWHxH yRKW6D9DEoBL
wCrmUEOFIqcg4Rqu55LLuDEWbNCsa8Z73Hx7olHOcw9/4xpjLtOWjrktQpdo tuofsLjzCRu/
mrDzQpNOsJuLVArgWESv7mAr33r7XDn3T7knJLd3oVwJ9Zyzg7s5i64S9+CV rZ9QSwcIxB6l
LRgCAAAMBAAAUEsDBBQACAAIAPmxNTkAAAAAAAAAAAAAAAAtAAAAdGVzdC5j b25kb2JzLm1h
cC9iaW4vY29uZG1hcC9pbXBsL0JJbXBsLmNsYXNzjVXfUxNXFP4WFgLpKhYR QVABo00CJbW1
v8TaEkQbG5UaxEr9tYQbWNzshs0GpdX+euu0077WdtpXp60Paiu0OtPpUzvT P6rT794sIQTQ
MpO9u/ee833nfPecwz//PvoDwEF8FkKdhtas60znzULCyhfsRDLFZwi6hh1r 982iKB81amhe
OUpqCBVLhYLr+Rr60nPmgpmYEqZTTIx5bkF4/uLIrOnMiEzZZkhDOHll9Njo 8eFz6XFSlz1s
miQyvmc5M7TQpjQ0HcnalmP5RzXUR2MTGvQRd1o0Q8M2A80Ia2hJW444XcpP CW/cnLKFBHOz
pj1hepb8DjYbjyiYMOqxw8B2bAlhp4aepwUaRjs6pf0u6hCtivLM1JzI+kOx CRlLt4EQmuTb
HgPPyKh0f9YqamhLr9eUmRki45u+lR2xzSKteqKxtOvNJARzLRRFQuRzfHc9 kRhVFkPNiOBA
CPs17F3BGymvY2b2mjkjImnLF55pFw08hyil433seTImY5wRPu3ayL6B+npR na5JOjiMTYSZ
6qCBBF6ghTjt+lbOyjIj1zkr5kuWJ6bVfU2G8KKGgY3jUIqMVvtKdcIsx0NS 8Jc1jEU3SSHl
MFvHtEeDW0il1t/MRnclw37VwGt4neVaDntRQ2I9TdbN510n4SiLRHWMQ6oI HXGd2uiuPc2l
05yeXls8aavoC0d4Gg5EN++FFSsVWDveNHAEb7Dk7Yr3vv/hzOrzRN5dEBuf S+RjBpISWRcn
BNtzZzQ1ORlbr49U520DMcRll5w0MIrjbPGcMP2SJ1LHWFYp6uaJomsvsKW0 SQYr72N8sSAk
ekait0c3uIzYRAgZ9mxtKUnKcwb6MSApzxsYw7sEpbwTpl0SawdDgMVeFuec ouTSoympXT0u
GZjE+/IkVcysnEyGcRamgSlk5cl8if2xSRdPShBh4DKukN53V6ObNWDJKm8i MhW+sSgtrxnI
IR5CnunWppQs5XJSdhuuLOOBJsxraOiJTh3ukZvsUB8lxmMWCsJhmwxs1GDr tsqoQxLhukS4
oaErOvJEu2sk4V2VbMrRsZkh53DGLXlZcdySUzKsJtSgNOaUSjksIDUtRDGE T5jsxtOH6qzM
H/RSs3r+Gvisk1OR/2C65aTmqsvZyNXgroEttNrKrxhX+deg/YKW+3ypw7N8 hrkCg3Tah1a1
KwG2V9xO80s6dsSX0RZ/jPYLfOl4iK74A7Q8xO5VpFZaAm/xGcE2Nv9ODCtE o+yPvehR2L3o
C7AHucoz/QH23avgNKq9k1W+euCryaYJfBOBb0P8V+yudc5UOTdUnFn+gXOR ytRz3S+dT8X7
mUd8Cc/fRjszPHghrusD8mQZLy3hldUM2wkGXOTzEnW7zL0rzPWqIuspAwZk 8u0wwuqCejCk
VNbk3AkCGOa3VLqZNF39SzhaeyGzjNBSwO1lwwpwMyUeVsknN4UbqYWbJ5z3 FDiOoQBunorL
u+zt+knZdCj5yr/tFOrEvXhXN9VJreq+VaX/IdpwC534WFHFyyAVql68g7QC 6cUpFladejvD
N1nJHEkBvcdviRYJ6LvX0A/8ibNLGL8f7xpYxkTt5XzOCL6gx5fYja9Y0l9X XU6kEkmkEkkE
7+GCuhwOtoA/F6jZF/B3reFn2Zfpl3Gxlv0bsn9L++8YwffM7Ycqyfsq7H0B uybnYMD5UcCZ
DDiHqjlJ+TdaZUX+hZB+B531d7CDm3JnCVdvI8QNXb8rY5q+W3MndxjTjyy9 n6tiSVZiSVZi
yVVa66aaKcAhXvXMbTSx4efuPYYtO39uGU66v7WwBO98f5mfL9tiS1g4z8Jb XK2IXexF4CG7
kPMCv5Hxd0TxiI37uCqSQ0EkHVTsA9aPxt2bCuMWNYFqoQjr6dPG5v8AUEsH CLKEA6mIBQAA
RwsAAFBLAwQUAAgACAD5sTU5AAAAAAAAAAAAAAAAMAAAAHRlc3QuY29uZG9i cy5tYXAvYmlu
L2NvbmRtYXAvaW1wbC9CYXNlSW1wbC5jbGFzc31VXW8TVxA9N9lkE7OBAEkI JCFxMNR2UlwK
/cJpSpwY6taEFAeHmLZ041yHhfWuWa/5kKpKVSv6WlV9yUvVLwmp4gFom0hF qvrUSv1RVWd2
145xQizZe3fuzDln5s5c//vfH38COIWKijaB/qJtrZb1SsIoV8xESq/KDC1U KAInbGctIYum
UanKhCyXaG070ndMX1q5KYuu79spoNVhGEGgZ37mYvp6ei59fuZKdlHgQPam fkdPmLq1lsi5
jmGtJQUUSy+Tb9cUUViGOy3QHo3lyT5rr8puCOzVoKJLYF/WsOR8rbwinUV9 xZSMZxd1M687
Br8Hxs4pDyaEdhzUsB97GKNfQzdjKO4NoypwKLtjvqRGkzlXd43irKlXyXEs GsvunH/a80h2
YwgjKoYFRuuQs/5zQS/e0tdkJGu40tHNqoajGCUFqZlcWuDo7rAC6pp0573K 9JGGHeqmVusO
/dHt+7F8iNI+ruEEXiIPOW+7RskoUmq2dVnerhmOXPUqXVARE5jc7ZCbY7lM IUQxwaWdFFiI
viCRjEVpW7oZtEgyk2kSGdi2W3zZJzUk8Aql6Mu+L5DYTlO0y2XbSlieR6JZ Y5LbR7XkXb88
qm2u+itFXpAunX40UyjEtpMz9esaxhDm5nlTw2mcEeguSd2tOTIzJyAyBOfI qm3eIThRoLbl
ZBfvVzz0HKMPRHfINJZXMSPQ23pOTDmrYRzHmDKtYRrvEChpz+tmTT4/MgEW tbi8YlWZS4lm
uGLteF/Du8jwTqaaq+8UQjiHSxoW8AHv3K5RF7Z0S11egUFyGrK4SPSuvaUu r2GJW6iLkBcc
+9599lzWsIiwimuUbmtKqVqpJJ0QCviIe+RYF65T9FiUx/zsGNt1DSsokiS9 UpEWteHkTg28
zeQDJxlBMkJJYCg6u6vfMpHQcdVMqsjgixwFQjm75hTleYPvj576bXCS/elG yFiWdLyxlFUV
FqW886RTlvVZR5gq107fDrRhmK8vumsVvoLoGaLfEPbQrkZvMXryp0P8ip4n tGjDPs+pzdtU
qB17PSsD7G+ETZOFA7X4Jg7En6Lnd/RtRe8lciBJEacpYspD0Hx/DOCQhzWI wwHWSXrynvIU
Rx43MDo9W7opVgliBY9IEJsIYjviv6GvNXi+KbijEUzNHgRXqRIs9DgHX4xP UA7xDUTWMRB/
huhyXGmf5J1NkPXlrewGCAzUlR24SnVapqoUEME1j2zMBwzIeHWKSPggxvAq rbhqNNaBgNuU
k0LP8NAvnvcgtj4HifS1x/Gh4ZFNvLGVmV/aVfShRAW84ZHGfZAGaRhv4ayX dZgOYco7vDDe
phX3BI14QO/QO6NFAvrh5+gn/8K5DaSexIcmNzHXmr5DClyKqGEEd6mi95rS jzSURBpKIjiP
C176dFEE/CV6Z23jAf/Qc/zUVD79Jt5rZf+c2L8g/y9JwQPK7SuPfcBHa7CP B+yC75WA87OA
MxVwJps5ifIfamc687+hKg9xuP0h+snIlg3Mr0Mlg6I8Yk2XH7Wcydek6Ruq 8bdNWlINLamG
lsVG835Kcex1ho76yjq6aJauPn6GwjIvNvFhduLAxxv4ZGnC56dFb2wDq0sT G1jb6ogj1O3A
d4T4PTXQDxjFj/QH+RONxs9NSs4ESgapYjdgkII23PQwbsEEDzxdZyjD7uz+ H1BLBwgYoPNL
7AQAAJwJAABQSwMEFAAIAAgA+bE1OQAAAAAAAAAAAAAAADoAAAB0ZXN0LmNv bmRvYnMubWFw
L2Jpbi9jb25kbWFwL2ltcGwvQ29uZG1hcEZhY3RvcnlJbXBsLmNsYXNzpVbp dxNVFP+9tnSS
dMpSaMtSIazdoFFAUIJC0qZQCaXQWgE3JskjHUhm4mTSUnFBEHEBd3EX9+Px U8Vz2oM9R/nk
B/8oj/e9mSZpllY058xk3sy9v/u763t//f3b7wAewI8Kahg2xE0jkdYyAT2d SQV6nUW/FrdN
a3KAXimoY2g3rWSAx1N6JssDPH2Wnk2LOyqRecL1DC1ziPPBGOp0Q7cZ1nZ0 RiuLBEmm10xw
LxrQqECtajgypMXPa0m+5QRP6lnbmlSxFMsYPAODwyOhwd4IQ2f0X6oGPVhB pMZsO7MvEJiY
mOiJ8aydNVM5WzeNHs1uIDYrVaxCM0NDktuRvEO7O6LntHEtkNKMZGDYtnQj Gaxqd85HL1qx
RsFqho7KkplULqkbgYhYDMln4d1ahq4q0OUKQR8ZaVNxH9Yz1KbMJENzMddj sXM8bgc7R31g
8KvYiE0M9ftFfh4lhY7OUQVbGFYWNCIX4jwjAsKwLKobfDCXjnFrRIulOENT 1IxrqVHN0sXa
fbnCHuOlFbC6euK9vGChOVrBMPlUCz9ViD2mZxk2RhcpXMKsj1tcs4nLgY5q WelNadls9aS5
gWqgdtmlYCdD20I4KnbjQQoQFYlc62d1bg30yYgOiFDvVfEQHiYJhxiRtjUK piXSM68pnNdB
oRNUsR+PMCiOToihsUg2JGUOqDiIUF4mPF8mLGV6VfSBGsPnymhZCszyYjF6 E1RwiGFTIfwD
qRRPaqmQlcyluWHns6FggKG1tPrDOT2V4JYHR6hVRsa4Py7C4G/34TCOijIb LCnEuaYZFREe
UnEcJ8gLit+gliZ6q4hembAAG1HxOEYpw1omw40Ew46KrViFH7X8SYZ17X49 6zdM26/5x7WU
nnDYyqQJG6dVPCnoeGzT0fahH0fJJpfJZVi/cFFRdJ1Q91tm2kFgOFS1Evs0 WxuZzPDgwo7k
KzImKjJOA3wRPJF7ruIsyHq7QygyZJkZbtmTvWMEyaM0BzmVWzHPk/+DZ4xr RjZQ2QaFXmdY
KmojQUA2AfnbhTNDYgTMYYv2Xsw8gyrmlS4GTyonp1AZIdFppjFONEbM/5aB uUlZqQwZLBVZ
ZBi2uVaqBLZgvFE3srZmxHkFzq4pBRO0HZUON2cgiLnmw7gYg954YXi0lc3C gjjhvUB25gmE
HJyLAodp1GbR8s+k90qpXtjRuyT1YmV6YVfvNWry+R9osjiqV+UEj8nZ0xqt KCTn/FsqnsUZ
BTeoEhatKaHwjgpTZGKFmL0OrLvRVzxwuN9kEj9Q8SE+cvf2vNKmjsVOEOTp x+WnnTyAj+AK
iz6esXiceo9m1ZoTOcPW03xUz+q0VYYMmkGaGKo0U1qKCqKgQ4eGm/hSxVe4 JdqkcMop21Dn
uJHJYTNnxXm/Ljbj1vL9sUcYoiYaMCiEcmLxrILvaawt7DYNxLmjEw102tvo WkIHykZ4ocBD
Ky+tbNTQE7DlNnxNy++gqQZ3seRI159o7Jo6chstXdNYNwt2agYbpqTkSjph bSatrfS8FvVC
l449W9GEbfSlE83oQhu20wpoIbmlJNOODlo1k91O+grCoZOMy2AX/QvcJV0z 6P6FHhxoH/0D
e1CHvRJKdYQIeIcE6EHABfiW3grZ0913cD/Dz/SInXB+tXStp2szXYLCDnJn zxTd9onbo+IW
nppF/6lZHD7V9NgMogRyjGEaw01P0G0a5PhTf+RZOQ4fJJdD5EqYWPSSA310 WujPO0xMXJbi
6Wk8Ix2kNnH5XiO+gleITGku3zV01blXU1f39mkkCrTGHFrnqtNaKgGPYzWG sYF2XEHF7xjJ
UwnhPFIyiCGkYci8UyveE6nn7p3UGSIVI1KJRUnZyElSdPJySYVpLeLpm8U4 YV+Idk+V1IdB
hWwWRd7nIntoNYnnZeTpVFaOd5HwXizHu0Cak1XwXsLLEo9OcOV4lwjvcjne ZdK8UgXvCl6V
eHTaK8e7SnjXyvGuk+aNKniv4w2JRycIF+8wRVvE20fJm8Gbd3G9gFcvo36z KCu+fFZ8+az4
8qWSzZdKxEVVJOrbpZC3iiCVPKSSh1TyiX4X77mQO90Z4KF+fP8ubpZi/lQ0 AjwuphefkH4t
PpX4n7myn8svYiYx+b7uNr4oRftVotXI62t5/4aGiHCWNhd8hx/qvf8AUEsH CL/Y5HFUBgAA
fQ8AAFBLAwQUAAgACAD5sTU5AAAAAAAAAAAAAAAAOgAAAHRlc3QuY29uZG9i cy5tYXAvYmlu
L2NvbmRtYXAvaW1wbC9Db25kbWFwUGFja2FnZUltcGwuY2xhc3OtV3lUXFcZ /11mYAa4SeBR
SME0FEoKMxRGYqJtILVAiB2LBCEhFpf4ZrjApLPgzCNkqa21tm5Vq7FqXOpS NXHP0hBptaZ1
b+pe97pr63I8etSj//X4fe+9mXkZ3jDUI5x5d3n3+77ft7/76NMPPASgB3/0 oUygOZpKTiX0
uVAsMRcPDVqLUT16kz6jwrTlg1egPZWeCaloPDaXUSGVmKZ5Kq0skqGLDlcI NGQ5XsxMYB29
MPRYUqWHBuN6JiOwcdidsfW+V8CnZ4/6ItlZVUTPqOzicjWaTs2ptHFocFZP zqjhWMZQLGGH
bui7D82R2JZiQrJHSI4/lgknY4aaEhCTApWxzGBa6eZ6jfUqpsdjh3nt7yNO tHGtgKcjMCHg
HUxNqUqQ4hJrsY70HCYdR+YTEZXerUfiBEEbTkX1+ISejvHa3qzoM9n48SyB plnDmNsWCi0s
LHRHVMbIpOLzRiyV7NaNSlyGZh82LjfsTj1qpNKHJC5HC2FW4ZHx3f0jg0MC lw67H+2tggdX
SDSiTWBrx/B+/YAeipPdQuNGOpac6S1mqix9YIIVvVLCBz/POiQqrVlQosqa XSVRbc26JSTW
8OzZEjVYx7PNErVsJK8xG8uwc0rEHznHy3YiG3UECtWyz/VW4mps8+GaopGa DdK2MTVDEcJG
60UfOTNvs0Ax3QtJe6tJ2rUSz8d1AtUzyhjKRfgWF5OW4ks+ERhgn9TxbIfE EOoE6qNmANqH
SF8KayPDJ14gcT2faIzlwtLl1AslbuBTFdNppQ4TtlpjVhVmpCT0g9mkpGTq KAo2m5D1Top9
Q3GVYIECbcVJx9S0SqtkVJHhxrDbh3GBDSuJkdgDyqsGNi0ZcT5qzKf1+E4y x3xakaxNLrKi
qUQilQxR0lBF4iJAwl6CSR9upBgreVjipXgZ5TNJJBU7wgGHG3dF9quo0evD K8hApVSkYCUe
/dYwQNbnYd/AivbpNyhQIvOGIhlTxWXkjlEtZK5UBC0H8mzfiJ6gZZMZja4F UeCK4hAclbDW
crCjaLhmXr6gCMQlEkgK1LF0+0U4mTF00yCtxcU6mcxJvAqEUlpxn63vLeyM FWOSicmB8zgg
UGMTO/zR2rEyeTgwwRwOShxycshZm18ekbgZr+YGZr3M95a2FeDljOrHreQz 24DM7zaJ1+J2
2ssow3JcvVvhMIHdIXEnn63ms5nRtJqOHeT9N0i8kff95v6esTAn15sl7uLU WWumzjyFAQMw
68FbJRRGOCnulng73kHRrk9NFUi2Yz1AefNOCgWHz62E9+Nd1GhyS+b7Holj eC91Za5GWa9N
lTC6Q+SyDVv7ycnJVTj+/RK7MOrHvWQIZRcj3v+QxIfxETKEicoRDheKIsuX qRXFxqZjKl30
iIPJ8t66bCccXmaIyezfKsqpDx8lb2Sd1O/Hx+nrhYYT1BvIt+51gK3zSYlP 4dP0aUOnhnbR
IZ2/NSjOS7ltFYZxUXIFZXLCTW9+VmIGs36cJG/GHXhPS5zB/TbeUT1NKWNw Rbu1KN483/8/
5hwASuxFamVplUgdKPIZ6sPnHS4a8OMBctEA6/QFCR0R/iJ6SOJLOE+Vz+Sf 681txeQ7TlGT
ewRf8eHLVOdKn5b4KmYpU+2+Sor68XXCE2E835R4FBeyGeNoNieKGjnfuP4n Iz+jfFhV9/wW
t4+srakr+vEd6sQ8Yw2/JzGNiB8/oL0kedCHH1J/MQVGlJ7MhNxd6MePBdYX 6arM96cSP8PP
+aLAlsv3hlhRw+U6w6rqYOkGwyh+IfFL/Ir8Z/WoMZVJzae54m1/Bt+kaZsq lCWnD4Ky1BxF
V+lEo8AaN2l2xvh2s375p3w34yAXhZNkOVNflfHhSboGrvyFTNUg++2NFlLV Q79y+FHGtxC6
ypbxHcQcq+yx2h7p9kFjFV/LzHWNPdaa41o6paGOuF1CqwCN/FfuOYP6U+ax 9SZxGT0n4cVG
XGru8q8xR7ZgwgG6glrTaWw4h9agOItN/GjnR4AfnfzoCnrOIsSPnjz7Kwk7 qHNXoo3wdBLb
zSTmGrrzXYdWPIF2PI2rMG6KlpYgPAdbaKzEVjzXBnE3ceN3I6dRfwy1p/E8 rWkJ28twHuUn
86uHIY6hJr8+jqoHIW48h/7zEDd4Se/gIgbpt5N+4eDJHMqNZGkgQ7IOoA8H CdsR7MAtdA+5
DcO4PYeuj+w5bKITeBFGbHQhGhldefB+bMozrTA373KoVm6rJrip28TbbdXq mHgJLyb3L2Ev
a/byQlb3OFjV5Vjtc8XRXkh8ryuOV7oSBwqJj7sSU313USJwkRLRQlYnXZVQ rjg6C4mXXHFM
u+LoXBnHI644qD274OgqJL7giiOG/TbxZpvYT3F203lcVkj/uIPen6MfyiXd CTvpJkh46Bi8
p4JeTq2gZxEpTj6OFZpngkGvudMeDJabkwC/CtDmQjBYYe508k6nx9zxLeIw 5Wk+O7upkgBP
EoanqJL8GQ34C5rxV3Tgb+jB37EN/8Ag/kkx/2+6s/7HgXoih/r6LOqyGsoO Kh/iZpLYk0Xd
E9RuWcRrzOfrqIYs4vUcnkt4kwBZ5y1LeFsZ9lpxc/EWK6kd1e7xeEifd9N6 Ee/j10L7gPCU
aUdp3/pfxAfN0+3afdrHcqdpLbTjHq+X1p8YDnYS6We0z1nrU9n3Z1d6H9DO aUsO6Q/S3heX
8LCA9jXh8WrnGIEF4BsWQQmBgRICO7XHtG87BH43L/D7LPCxQoFd2uPaj7zk 3J/sNU37xN68
b6epiEP44ReVWCMk6sQaNIq1aBb12CwaMCQasUc0ISM20D1rI46KZtwnWnBG tNL3Vht9RmzC
v0S78IoOcYkIijbRKbaILrFDdAsleoRBqyNiqxkTDZbf7Zg4ij/h1/gNRUUZ fmvi+R1+b7Ya
gavxBzxVUflfUEsHCKt6qReJCAAApRUAAFBLAwQUAAgACAD5sTU5AAAAAAAA AAAAAAAANQAA
AHRlc3QuY29uZG9icy5tYXAvYmluL2NvbmRtYXAvaW1wbC9Db250YWluZXJJ bXBsLmNsYXNz
jVXvcxNVFD0v3XZJuoItGGjTUmILJqE21IiCqdUSAkaWFJsSNeOXbfoIW/ZH 3N3A1NGPOo5/
gn+C0w/gqJnCjOMnnfGPcrzv7TYNaRB3ZnPfe7nvnPPOvS/5+5+nvwNYRl1F jGG66TrbttHO
m3bbypdcJzBMh3sVmqlQGC64XivPm5bZ9nme2/do7Ho8zC6vb+3wZhDmjjFM HGD1YBiOcYvb
3Al8hnl9EKvp2rbr5DuBSWC66QdFhnjNbDlG0PE4Q+HlO1b0A9Jrhs+Lq4Qw tmI6ZrDKMJLJ
1hmUkrvNExjBCQ3j0BhO6CSt2rG3uLdpbFnEM6m7TcOqG54p5tGiEtw3SfWM /mKHiEzjtcAI
zGbJMnzKPpfJHtEcOlaWGcU4TmNKxRmGuT63RLxjNB8YLb6gmwH3DMvXMI0U +VFar26uVarl
DYaz/43NMN7iQbln+PkhYoZZfvn/5B0xOg46rgYVx1S8znBpuLQQIGyUDe67 1kPTaUlAFQtk
Xz9oAmlcEEV6g2Elo+8YD428ZTitfHi8Fxy+4pBfjmFFJMWKLDq/yQOG05lK o5HtQ4pyEqT9
ooYZzIrGeFNDBlmy+h6XjVe5zsAqDKonBVMvsAZ1smDb3G2L1uA1gZ7MVI5C Z+vjeAdXVLzL
kH6pqxquipYcbVrc8FRQMU5JRJlRci2LIE3XEZDva1jFB9Texvb2mmUxTEUW DeQWsw1xqDUN
BbxNsh3+qG5YHdnmR9QSHL/r+OI0SoacEztvariOsvim4tcOvmkICbc06LhN xph+2W4Hu/KK
SbZ1DR+BLEvU3I7X5DdMea2euyxLgpwqXnFoQVaU+yo2ycbhF4GkH1wF6gui oneUXkW0HMU4
/YrFkKCZIu41rbxCKwWKjOJorovjT2TKq/SZoAhcodSrmKCRFiZhEicpKjiF 1yKApQhA+RnJ
x739Y3LtWt9eJdrLRBdRVijnrMS4HeWncr9g7i9M5p4h/fnkfG6ki/O/Yk6s HkIfp5MBt+gc
OpKo9lGkehTUnpG8L4lYoZhO/QTxnMHhczL3G3KPc6mZ2S4WBwk+ozM2MIUv JEEuBIkIxGgJ
eUmaxiX6c4jJ0Vs0ErZTI0X039JcoBUi+ouD9Pu4zCAGi3/gvX2sxPDpk1xq sYsPD4sxTfYA
LRJkknU7BPIAi7CJzpHizoUUPXGFnrgClaBEKEx0aCTpPs2F3IVI0uxQSSSi ixuHGpJUfOAR
adilHV9R4b7GPL6R/MkQr8e/EPEz0eMRqx2xLkesuedYqcB/YkKEfXzM8CNG lb2RPSGhujdQ
l+9IwvdkwQ991Ms96uWIOoY7ct8n2JDdTD9tqOHuWPxfUEsHCAmyndftAwAA zwcAAFBLAwQU
AAgACAD5sTU5AAAAAAAAAAAAAAAAPwAAAHRlc3QuY29uZG9icy5tYXAvYmlu L2NvbmRtYXAv
dXRpbC9Db25kbWFwQWRhcHRlckZhY3RvcnkkMS5jbGFzc5VU7VMSQRj/rSIo nu9GZS+WkgKW
J2lZSRYQpg29zOg4fejLeax4Dtw5x1Hjf1UzZTN96A/oj2p6drkQcBGAubvd Z5/fy+6zu3/+
/voNIIk3IfQxRE3HLpSNE73qWSU9W+ukC8aJx90tw/Qc9zSaDCHAMKPK3P1i eeYRQ9A7sirR
FeLLdybcoPyUZVveJsNirBtAfJ8hkHUKfAgMwxoGEAyjHyMaQhhl6I+JhLG8 ZfN31fIBd/eM
gxJnmMw7plHaN1xL9P1gQFhlWOhCN5okqyOmUeE07BlE7zKkzh3XoxvxvOMW dW6WrJMK13n5
UDedctmxddvxrMNT3efdCCOCayFcZZjrLK/hOmYYIqbLDe/cgp/EEI91K0sL 7hwcc9NjmFK4
ZxgQk0wzrJ1PLt3TpO5ouCvMjtbMpusmhxsIfZ1Mk06mJ50FDYsNOhmFToZ0 BqUOPQzrDVIU
6EntvoYHQm3CVxOL9F9wtJmWHBT4oVEteVkpux27oMNNx+V67r2sRE8+HmpY FT6maz58irqV
2Q5StNsuLMKx8dnQS4Zd1P2kMB2tdQ1xJBhWO5tX4p9p0EG3wGzzNlLmPtdw C7ebcjPtcl9q
mEe06bZoPHtKTFbDFKYZwrtO1TX5liUO/4zyoC0LAoahXatoG17VpcSc8nqo XXepLiu3SQs/
lrPNklOx7OJb7h05BQZtxybX2ZJRqfAKVshpP93HbHxc3GrUGqYnhEGKD1Hr CfroD4QTSz/o
9RPaN+r1YUzE5AgdKuxgnFoatUV0ApMyTtP3WVL0FbmDie8In+HK1zpHUGLy Eh+p5fh40bqB
mzTORKHUTLOtTB/aMs1JJiqjmuleK9NeW6aYZKKNqmZaamX62JZpWTLpsgoK pmQr06e2TGtU
wTR5euQzLfh1CyaWzvC4lYdJHhonjE41VmCeXoa5hQ0VJnUZZh6bKsyLyzBT SKswmbYYBPBK
tnLYkt/X2JbRCL135O5kEkG/f1BLBwi3KYNK5QIAAIoIAABQSwMEFAAIAAgA +bE1OQAAAAAA
AAAAAAAAAD0AAAB0ZXN0LmNvbmRvYnMubWFwL2Jpbi9jb25kbWFwL3V0aWwv Q29uZG1hcEFk
YXB0ZXJGYWN0b3J5LmNsYXNzjVVbTxNBGD1TSpeWxQJyk4siFmnLZUVEhQIK tShJgxoIifo0
LENZbHeb7aLhF/gLfPDZxCcTFW9BE4NPJv4o47fbZbl0gabJ7sw3c875vrPf TP/++/ELwCju
Swgw9KmGvlbgRWXL0vJKujyZXeNFS5jzXLUMc1tCkGHcMHOKUPNasSQUUVhX VKNQMHRFNyxt
fVvRCsW8chS2QCEGuWCsifwjrj7nOcHQkd3Xc6XclRRDvbNz6aVmqRsM3Vm/ xMqrtDm8pOV0
bm2ZxJk5ZetU9vS83ZRTM8QZmtJ0zZphqIknVhiCaconghpEZdRDltDEEDvb rdhoBI04b2Na
GAbivskdhaQSK2EwtMmQUGePOmTUIhRGJ7oldNGKv2kyehAiL8TC4tLy7GI6 wxDNarpY3Cqs
CnOZr+bJneasofL8Cjc1e+4Gg9aGVqJyqkmOoVEruZN5w1zeLhJBazy7yV9w Jc/1nPJwdVOo
VirxVEI/Q89xx4VqmELJlHfVI4YBGXEkyHCRzvMS5dEbT1R8Jxfl7EjVYxDD EoaoL07bJ2ME
CnVSTlgZr+X6TiY/aL6Q4WRn21VRF0ODagpuCdcYhsfxM9pq0X5p1FeV0v79 F8E4bkm4ydB5
cjPLuI0Jhro1Y/+UjFUmcsRt0q8oRwJV1F9VWuSLxU1yk6Hqiu1uddyi1C1O 3Wh6ZAmfL+Fv
B8M513IP7AbmvECTG+Clgw/TUo651XvhyJKxZapiXrN7v9O3zUdsn+i6WtAp Y6eZRAmX6SzW
0GUZgHMgaRS0jyhFw0404ozpcqBnA0We0Tqjd0/yO84lf6LxCQ2av6J1B+1/ EN7Bhc9o/+RA
L9Kz06FMEOgB0S/QtZFEG3V6N4ZxiVbkMhl6KRHQuA9XXCGdGAL0Tg4S8zvU Bt8P/kbsDboG
9xDbxVWGXSQZ9hdr6OeptpEWMEGFTFIZU6Q6TcfxjqPYVmZ1Fe3RNfqnYPS7 jjFXO+1qR5Nf
0GrrfcONPUx+9ARCTtqbhwijHmGUBKcdwhmSLBMOOXNCs+Mc24dsCHg23K0C +coXOVsF8rUv
cq4K5FtfZLoK5AcfZAD3nGcG8/SO0Fqj4yD+A1BLBwh0f3xwNAMAAMEHAABQ SwMEFAAIAAgA
+bE1OQAAAAAAAAAAAAAAADUAAAB0ZXN0LmNvbmRvYnMubWFwL2Jpbi9jb25k bWFwL3V0aWwv
Q29uZG1hcFN3aXRjaC5jbGFzc6VV21MTVxj/nSQSCVtBqCjeQCs1BDC22htQ hGC00RgvobRa
L92EJSzmZrLR6nOn07744vjQx16mneFJ7QwdOx2HN2f6R3X6O2c3SwIbMm0z k92z33e+3++7
ne/89fcfrwC8g0dB+AT2Z0vFxYJejtYsMx+dsz/SD0wruxxEQKBnRb+vR/N6 MRe9nFkxspaA
VigtGvkrevaunjME9iXrEI61o5kU6Jgyi6Y1LeAPjywIBOZoGIIfXRqC2NkJ gTc07EBHJ7qx
O4gegX5vLA296BDoNBKp9Pxsai4u0J00i0aqVsgYlXk9k6cjvclSVs8v6BVT fjvCgLVsVgUO
JlvHSUf7m00fluvmR7axm5qfn5ym8c7Fki0QOBVOliq5qJHNm+WqETUKS1yX KkY0bidvciS5
OZ8E6EybuaJu1SokPNYWgaxdOIyhIAYFDm27WcMRHGUZjLm8XmUWhsIjrdDV jskQS3JMwwCG
Ba629MTe+18iDVnLRrzeR4NtEARi/9MFlaoIxoIYZQtsB6VhHCfon8EKWzo7 q8Lat86WQyDB
T2o8S++yH3OGpaDMJdOoJM6qpk/IhJ6WCX2P73Di3+dMUnyg4UN8JLCLFPF0 rcyOZ4eynsMe
HmZLhUKpaLdrPGlWJcQkPg5iigAKXqmkRsM0zggEzWq8ULYeKo9vSI9nNcSw X6Br0VjSa3lr
Tq8aEuWshjjOcR8dEdgTTni3syyy03GHty8gKYzGgHqSzR5yw8lNoqntEeWB HG6faHZGECmB
3Q3zxq67jP+Khqu4xumUZeANHXE8nNyy36toQcwzDfWtsxJyQcNn+Fxgh4Sc ZfNvQM16QUib
Gxq+wE0OGGkT41/g6IaZFHiT324gj0mgLzXoyDjksSbymDfEIsd8I5H8bGpu kbBJ6qnp88gM
J0/FqLJ/5Gz2aBShs/4NaaAk0yiJURLIKPZdzWGzBVlB3j2eBVGqjpIzZnqa Mq10PU3xK1Hf
5sQqaShdqlWyxjlT3S9N0/+EDEggPDU/sTW26a0ijmJ6zZuXqZR3HlfyAuQ9 yGcnv67zLfje
HfkdoRfQXqPzBXb9Bu05hX708dmLAJ9jfI4jhBPowUm8SYlmG2IP+vne2yTZ pygHsB8+HODa
h4OK7hoxfXJnZPQlDgmMruGtZy5Th7KfUOj99j4HXa7exnHqN3g0hycgbw6X J6x4/iSi9HqG
NCMCDOwXdEvOqMDYGk494/J9gdT4S0wIfI+uCKUzv6I3Mu5/iTkf1iElDb4d ZtLAQaThHFkT
GMRFciWZi0s4gwvK54jN6fo8g/P4RPk6o7z30eoIbS8Qc68b44wTh627qDzn 6HYjSsqIxCuu
dvB79cCqwv4J9s+vLGXWwOMGfDu2jkupyPgaLk8EBgKvEVKhyfUzqtJK9Wld xfV1r2231LY7
7bZlU94qtdrI3TWVnesY4mQZxk320i3eLbc523VGn2GWskhjEXdg8GsZOZgo YgWPcBffII/v
UMJjlPEU9/ADKvgZlkIso0tmxM33Ku2XVL5XnXwPU5Mjop+c3URdYW5ncJS4 ecrOM8O2LEdZ
gZx+/uuyx7QtkcNP3rqtrNppuw5O1Wzce9TZaHJVdFdPXa2Qw92taUV1qewN 2QE+sfkMfN1w
BnxufD5UGUvjGfC5Z41z3kW32qA/aYmeb4HOQe6i19qg/9gSvdgCnfeNi36/ DfrzlujlFuix
LVOoNfp6S/Tjnug+PFDPrxz8h/8AUEsHCCD+5TcSBQAA6QwAAFBLAwQUAAgA CAD5sTU5AAAA
AAAAAAAAAAAAIQAAAHRlc3QuY29uZG9icy5tYXAvYnVpbGQucHJvcGVydGll c3WOsQoCMRBE
+/2KgFfq5gdUsFC44qwsbTRZzkhyu2wS0L83WinqdG8eDAMzs3Qsdw3jpayh kX3HVnS97wDO
YcIwuVg9ZbMyOD+C+UxiT9F+98P2sFn0+90PJbGObfeW4l8nykJaAmW4njSj 4yQhErJ60ucR
yFzVEWKDrM4C1yK1vLidtvAAUEsHCBBBqLyGAAAA4gAAAFBLAwQUAAgACAD5 sTU5AAAAAAAA
AAAAAAAAHwAAAHRlc3QuY29uZG9icy5tYXAvbW9kZWwvTXkuZWNvcmXtVU1v 4jAUvPMrIu+Z
GOilioCqsFSq1N1FpZX2+kgewW1sR7YD9N/vs0kgSMuqH1r10hwSxZ6ZN/Ni O8OrnSyiDRor
tBqxftxjEapUZ0LlI/b4cNO9ZFfjzhBTbTCZzSF9hhyjnRTJgTQgUieii6SU TWhuxNbOlQnn
2+021jKPtcn57x+3rIHYU8j2IiAGvV6fYHeLdI0SukJZByrFtnjwccLFtBCl xSCAcuVFBnzm
YSxSIAmcapVJKPcyyj7e354ILNE6q4vKUZgYHLHs3OBK7I7MMVGHOC3AWrES lDuiBIl7KUm9
7kyYbCpOtXIgFJrA9NyFM1XqKgPFDQI98S8S97hCgz5wLYMFSlSOZKuyRDPR lcpGrNvfJ/EX
PgSBb5xPwCLjwShvO32r9Wv6/ouKqnlle5RugvyiKfCtsjUBsmxuNI26l+ka VI53wjo8Zvek
ORjCOl99TyoaTCvB7IwMr0vzVu2zbgxKvcHPMfSxxk++Gv8RQ6/ZYNfOGbGs 3GGDLQ9Va8R3
cOAHolcdMN4q1aWj8p07rynX+DkXPGqOwqD2M2CfYAN0doGy8b/a9aYl2F5v 72qov//fntL7
ya9o3PkDUEsHCLsMcQHDAQAAwwYAAFBLAwQUAAgACAD5sTU5AAAAAAAAAAAA AAAAIgAAAHRl
c3QuY29uZG9icy5tYXAvbW9kZWwvTXkuZ2VubW9kZWy1Vclu2zAUvAfIPwjs uaJroEAhWA7i
rQgQtz4kQK809SwT5SKQ9KK/75NE2VbaOkYS66RHzgznLRIHd3sloy1YJ4xO yZe4RyLQ3GRC
5yl5fpp9/kbuhrc3gxy0MhnI5DvoefUS7ZVIDsQ+Em9vInxQT7sEN1Oy9r5I KN3tdrFReWxs
Tn/NH0iAADcWOiDgUhQOaiCoFe33en06rWAd7dbK69zWK4lqwkRY4N7YMiXU g/MxNzozSxcr
VlBneTilxi7kJhf6YZKSl8gg9oMpdD8vSSRUYawHW4Hx+IMVtBG3ezGcpMGN KqRgmsMjbKs8
vlZl56YorcjXfiZAZi4lKyYdkGHFGayQLfImm+G8bOQGtLNcA7E4C8Z/sxxc VFhYiX1Kxmi+
Np4JVxjHlhIW1mxFBnbGQkG83QC2vpIN/Cq55pxPtHHRyE+YZ09lgfr1Zhue wukU9Quwvhyv
mc7hUTgPGiyhJzpjyZxrVeqgI4GmPRMVKXAa1gyY31ikcYtvMF4LmbWlaqQC IiV1lEzvvbdi
ufEQ/Uudauzj0Rc9Grvc6n3X4k/MnHn8LALhEHdJlGXZf8p0kGsbatEkTpFr GxTiSwWpfNmA
kOrR6psysKDMFj42iXOal+fxtkaOrjJrI7o89XtxfUcfPSFnBK8zIaMrTMh5 zXdMSL3Q/jur
K4/+defh6h9QSwcIKD7CUgQCAAAxBwAAUEsDBBQACAAIAPmxNTkAAAAAAAAA AAAAAAAiAAAA
dGVzdC5jb25kb2JzLm1hcC9wbHVnaW4ucHJvcGVydGllc+NSVrBJzi+oLMpM zyix4wLy9JG5
QAEVzxQVLq6CnNL0zDy/xNxUBVsF30oF3/yU1ByugqL8ssyU1CKoeHl5uV5q RWJuQU6qXn5R
OhcAUEsHCM/Ky5hNAAAAXQAAAFBLAwQUAAgACAD5sTU5AAAAAAAAAAAAAAAA GwAAAHRlc3Qu
Y29uZG9icy5tYXAvcGx1Z2luLnhtbFVPTU8DIRC976/ASa9AjRdjYPdg0sRD Ew96NsiOlMgC
AdZt/73Qrh/lMvOGN/PeE8NxcuQLU7bBS7hlWyDodRitNxJeX3b0Hoa+EwNq Z2PGP+pdpdaf
TtxQ2hGhQzwlaw6lr4D/Qx3ZPI2bjtLGjW421rchIQKPBX07RmKwvkgIybBV h+H0UfuQkBn0
mFTB8S0q/akMQt/W24V1sMLLm5OVcCglPnC+LAt7x1xycHOpQkwVuCJrp3KW oIMfJxXZ46U+
rzpX1GpjH0Z0EqZW+P7UnJ174GdHgv8maln5T9hvUEsHCD1uHU/gAAAAZAEA AFBLAwQUAAgA
CAD5sTU5AAAAAAAAAAAAAAAAJAAAAHRlc3QuY29uZG9icy5tYXAvc3JjL0hl bGxvV29ybGQu
amF2Ya1XW1PjNhR+Tn6FNu2DskOVZV9pO2tDKNmGwJBsedhhMrJ9AqKK5LGU pMwO/7262cYh
N3bgIbaPvvOdo3OTYPNcFho90iUlC804iYqCPg2Z0idttr7mxaVcFvcEUs5y BSSVBZCMapow
kTFxTxKgQpHY/l4lCoolTTiok4N0ZaVAboDy+Zu15jQng9rsJc03UsB81mDo X57v89WqgDPd
v0oeIdX7UGNdLFK9KCg/B2qesFHhcUbT5m7USpPx7WSfP68VlwxWUChSa9qs nUqhQejrQi5Z
BsVPc5lQDmkC/ACiUtma/8e9bwSHjW5dg6XxW5ExcBNtJkWU0Vzv4FrH9+33 VjSnT3KhyV8F
y87Mxg/BDd3rVuSKZfdgHIgXWkuxF3bGVG7I9+LGD8B53XupFJmt8uhkXRK/ kpz65zlNtSye
ti1f0/Rfeg+bljVlwka83c4XCWcpSjlVCl0Yj+StLHiGfrRbYUlpqs1jKVmG 5kYPmwYwpfT9
DtHiXnUtsjVjgnIUdo6y8PwDCViVUtw15lot1/6kWIhbph/OYEYXXONmWxAT HgfDgah7ZBRb
LUt2sxDCgrC3a/6Cl849Q1svBKdcmJFyv94hJ6m4TwI6LUw3w7cBdtBK7L6I zEHgStbrockD
IOM1crWJuJR5WFs9MA4If/B6TNndSwUZ7taOtdjMIIIDxNjNIpFZINXpQwPY KkGKA+S1B63n
duPpH892/bm9MXPV9kI8vBFFFGhf/tiGpu4G44Y1Vrc6Wobw1SKsHGZpE2aL qpAcd2tG234V
q/soX8j5YDicxleTi66vip2jDeWl6Z0wHJxR8GolX7q15gFiCth0gwrUa2uf 75xfFvD9053B
NE+ScDRZqCG3+/9byJXoc5jbWYW7R6jZhGZmmhFHuZki0bg/nY6iyz5yTjkT x+9rYjqNLXm7
13u5hfWj+wAL/kQkbjocoQ7tWNqK9fh9WBPHGort95rqVPLFXDQOJzfaWMbs MUD5BOamOTT8
iXR4K7NZXXl+is5XUsVJaJbhZvkdzIU7v/749Nyx3WZb9MvVEgrTBNCuJ1ci JTcxRExVSuEm
gsAHrRwIBZjrhkAfcJAjJkyLixTkDMV+Ntjud3PgPTdw/M4b2OT+K+93+op4 /mokbIBhW6ZH
VRzqAdFE8dyt+POiOh1Rakz4sXkpM+Av5stA5GZCbu5XW3U43d6cp1ejSTQY 9W+m0/6wf9kf
TcZ+1PrrBUrCxvwnVkfmmCHX38YXDpRY8xP4T+OOcYrNnjpBbFJcXZCsC2B2 4HK+fs3CZSp7
HxEWUvz21fwzkMm0a2XoI/qiAA69sv3i7zJebM64g25uwVBvWzm542qNuMmA oCyoCFETruZ1
iMBgNJ5Eo9M+8dmLynOT2uCN6NwUdfS5E4SpHVH1dHK9Qn0Jmpy4dOzhj0t+ l5wYd+Kd5ElJ
jnHUXQeYL/yp260dHdlpVtJhHG/UOPYasYfHnbVZsOFO8KLKX1a4C2uzA/Zs vgL7ILwlIS/T
cex93pGMt6SiSsQO2pCGMJJSF6Xn9v9QSwcIhnREDoEEAAA9DwAAUEsDBBQA CAAIAPmxNTkA
AAAAAAAAAAAAAAA3AAAAdGVzdC5jb25kb2JzLm1hcC9zcmMvT2JzZXJ2YWJs ZUNvbHVtbkxh
YmVsUHJvdmlkZXIuamF2Ya1YS1PkNhA+e36FMoctD1AC9gjLBoqCFBUIW4Ek B3YOGk97EMiP
SPIQipr/ntbDD3k8wG5xYWyr+1M/vv4sMxrxrCykJg9syaiG/zS9AqXYAs4L mTF9GKxXmgt6
IiV7vuRqaO20EAISzYv81UU1sLoB8Qbwaf24kAvKSpbcA02KLEMgKli+cHHf aHlZFI9Vefhe
85tqpjTXlS5k4AOJ4KUyThLonGk24/mco2MxUyCXbCaAZqykF1esPL1HRDDB Qw4/CXPd3CPg
T0E0gZwtIdeDEJCleG1wzk4FU+oto+vZAzbrLSusYpXoSjJxDgx/YdDhIWUJ 0CWHJ5DK8KDK
8ks2A/FNFks+31C30Cuwd8nON2ernjRdSFbe80TRiwz5jCza3doakS1yQham VzwhwmCS0oOS
tJDEb0cqhWUmLCdtpUlS5Nhl3Tgg2O6orGYCoRJTU9J2ciBJgrSDfK7I0NrL KPJIDEkpWaKJ
0kw3yKcFNn7OzfQwcQtZKZgG4xWVki/NNbbChKz92i3uhjlHNewgQDzgNLGo kb7ninafk6Me
dhStOvhN2LOiEICF46rZxZOJgIAMCzhBX+Nq+hFhQ27vgTCNkcwqzAP5rMzj 3VGTWsoxZhLO
yd209cFbZXKt7c04fhlM+GuTg8J8cngijZxtcIgnXWTfk1A8iDLX0gOGa7F5 dHZ1bqTprzKe
WLQ6cUdjIrx6EF0QU8NHktiFfhnW9cYUq/fEBbFuGru+Ht9UZSlR4v9hMsfW q3hc5aiQySPM
x5O2ncuCzwkCzG2xHVQcygwB89fTBXWasDTFLuNYujabClsTOudpSheg/dj+ Ds/KlBXdNk61
ycJduIQ2GsYGJopenTxqyLyzFp/zjCKqC8sC2x28T7mEof3iOqaJI3+06jbz uGSSZQEpu8+7
s1P31ZX61dDjkPUB/I4t/KYJNjlb9q3NzUuAQlY7oXdvOgfyUh+fWH+c35Fb z4EkEl9Blu9x
4GFHbrU+xK+pRAdrYxCv+YsfUJcoEpTNLbs2qHR/b1Ob4+slSImVNDe+4O+Q XjetkQR8Weeo
NhVYylslX9lg/JLwNPiIXr5PkNvW0sAdS9lTehxRVN2YozpwXN07xJ8voREV kC/0Pa5sb/uk
g/U7PjVFX5fJNUWthz18I6rO61CFpbLSOeeqLBR41f2QcCVkxRJ+JGJVlSh+ TShhmPZUhEch
bS/iIZ54KuSV6LHBzwQ6G0oO+g6MjZkJC+UqEm841CT6oPOW9tXgaYwLtMPs mtqTdt+a3b1N
0a9/comiGU74o+e+5z9PSTBq5BcXMPn0KcjDNwt7+5Xs+T1dLMh8aF9+ZqD9 86FmT93LZoAa
NcYAK6J6DRnRHwxDEmxJ3Dlm+cwirFZ9Bpm404qx/JtJbmb2T1CFWJozwoR2 4q8vLY7ngneW
gNVIesrUHAm97Xh8OCi87kTbBNSci5svOHeurYWnV9juobZzsHKyiLuNQm0M GSssfq3pj/Bc
H1/sA9wltZ+935i0FUADqkrBdTzeGbt6Npalt+l43O1Na/Pv3+nYvnhqapAl ExV0qnp3gV8T
C5xPBFKAN3HpMSZT52g477x4jqXLEyhSUgs6ctLae44gFfcb/rsvPALu54i0 s2LhsMl2xZ/B
3CzWFNx3FOxiW/414M58/cuPpO73wO9rCHZ2IsSaIe7bgtkkvafx+INlqFQU /q2YUL4ifNp1
iOpCrmf1G5LfY/nUgkH3s94MxRsVbrd8byGjFXZXQePX3drtvGpH0ibecmeo j56mzsrfHJHx
y964aVy7sI0rO+PtLh33PZE27/U5aOurYJ+dXvlE1qxXPiY/+8F/kaizjrtO O67wjUh1NMZ1
pBbfX909HtKdI7LnwEmLLeRqtBr9D1BLBwgykU6lggUAAMYSAABQSwMEFAAI AAgA+bE1OQAA
AAAAAAAAAAAAACMAAAB0ZXN0LmNvbmRvYnMubWFwL3NyYy9jb25kbWFwL0Eu amF2Yc2RTU7D
MBCF18kphlKpP1LiAzREhNIFEhJdcAHHfk1dEtty3IoKcXfy0waBCgtWrDwz mnnzvjGbz0Oa
UyKMPTpVbH3apexL3pbGD3LcvCy0XLzwAiSMlhW3izBUlTXO044feJyD6zpe O2Ph/HG55brA
o6o9NNzi3GlcEUOUytaIUW2a2DjEq6d8B+EbQXYydRVFlKNQOtrXcJE0gqKo M5iRg3WooT33
ymgyG/JbUGUkSjKdEE0SVGmSp1nC8jRhTTKJB11o+V31RHpbY6CLl/277qGv C/hsOuu6ulVd
VLRw3EP299nnpRKktIfbcIHGK14bflnTHa9Bb2HQ8gW/AAY/mgyGzVSernrP PX8+WtyMzp5X
l88/6qc/3Qat3eBglCQu5eWh6eXysH3WfNc/5HGozAF/R3onxigLPwBQSwcI /cYBVTwBAAAe
AwAAUEsDBBQACAAIAPmxNTkAAAAAAAAAAAAAAAAjAAAAdGVzdC5jb25kb2Jz Lm1hcC9zcmMv
Y29uZG1hcC9CLmphdmHNVE1P3DAQPSe/YgpIC6tucod0tQ3lgFSpqHCvJvFs 1uDYlu0sXSH+
e20nu3w0SwWnnvw18+bNeyPn02kKUyhqpTeGNys3j8f8xTlcHV2yI7/mqcb6 DhuCWknWoj5L
U95qZRzc4hqzilDa7MooTcZtzlcoG/rOrSNJ5mwbqUyTUS24tpRRu/R7ZSi7 +FHdUu08YD6Q
+jSbQUUNl7POkpkxVcNsFgl+BUPakCXp0HElQS3BrQhaxUiAikAwKaidF9W8 LPJqXuT+MMl2
uCTZa9T4piP+jcdaKiHUPZcNLAld56sBGgLb6dAEsdMY34mYAFAIPn9YCC7v ttJk5WFDroRA
o4z1H4vcR/UKD4lFrre1F5Z2smbn/XrVqx2Bjk9iVOwx7pqgKnoqvTFdJXgN XDoyS6wJSqDf
XnhmoURL8JAmQdjEZ/4k34+0UbI1io62+o1IBuic4VXnKIu5+1xJBvXCejm4 4Ych6PccvHyN
CtzKiYNaEJrPMdvHep0NoRAbsCvVCeYLem9N5InAyNaG62h8iM2ygVo+1B93 OLwsTGx9T+d/
ketxozGHNlhw7R9kc/J0/YZfv4JjyZNlyUvPkmBa0gNC76+f/Z1H1+TGDPrn iL3PsP1CaTTY
DsVDZUn371VsGNrRvteKM3gmaY/9QoEPEu//ADF8Ot/Q4c1G05eDrWQX47/T wRs8kbHxpOPx
6131/7QfQ61a08dbeoQ8hzL9A1BLBwjMRTstIQIAAD0GAABQSwMEFAAIAAgA +bE1OQAAAAAA
AAAAAAAAACYAAAB0ZXN0LmNvbmRvYnMubWFwL3NyYy9jb25kbWFwL0Jhc2Uu amF2YZ2TS2/U
MBSF18mvuFUrzUMk3kMUDSAW3QCi7JHj3GRMHduynZaq6n/Hr0k7aAZBV7HH 1+ee+x0P2W5L
2ELDlH4wfNy7Nm7J0T78dHXdX/kvKTVlt3REYEr2E9XvypJPWhkHyow1MsG1 xRqnwa+VwfrT
l+4nMufLSG51UVXQ4chlNVs0Va8YVFVs+x4MaoMWpaOOKwlqALdHmFSPAlQU glWDU9t07Qdq
sSFd2xC/X9WLNMr+T+F4pmOL715uUEKoey5HGJC62TcEahDsrMMc2L+N9bOI FwAawdvHneDy
9jBzHXpfjug+0wkh+AmLaOSpIb48McwKDdEHEzuLC7j6Y/p+TTyDXJBdb2Jh HDmuRpRoqLeV
6M+d4Ay4dGgGyhDCHcBfzo9tIcOGx7IItAt//xv6CaWNHO+omPEA9cAxWT9w BOqc4d3ssI7X
z6VVZKThe51TQioD1Jf6C5cXwsCtXDlgAql5EwV8uedvkArxAHavZtH7nj52 E91S6NEyw3V8
E6G2rrM7ki2cTj6c7EwEcGb+U/6SdIzq0qaM1zf+TI6b55O/h/gjXsrlKcri OMsihFkkWcgv
ab3x/5IluBt0p1L795f4f1meB6ipoVN2ESxIvH8FyWXG0yTuFO/hmHZqEpg8 ASHxoZe/AVBL
BwhwDgAd6QEAAK8EAABQSwMEFAAIAAgA+bE1OQAAAAAAAAAAAAAAADAAAAB0 ZXN0LmNvbmRv
YnMubWFwL3NyYy9jb25kbWFwL0NvbmRtYXBGYWN0b3J5LmphdmG9lP9KwzAQ x/9un+IEQR20
fQDrsBOF/SOivkCaXLtom5QkU4f47l7bbND9gqLsr+Yul7vv59JcMpmEMIGU 62ZlZLlw085M
BnbrOp+Lc/omYcP4OysRuFaiZs11GMq60caBNmWMvJKNxRjrgtbaYHz/wLjT ZkVxia91FkWQ
YylVtLRoIqE5RFFX93WBkOZTfyRN8ikU2oAjd60FVnEbNHfQGP0hBVpgwA0y R9voFlp00cj4
ApRWEcutM5QKeMWsBV1sJeqEoBI7Mm4tbvjiu/771GN32yUqNFRV9A1Z5pXk IJVDUzCO4E94
CsAvR0UsrDsB32HQtiLwwFaqskKnFaWwjinK4KUW/YG4Cz3UtuAgSTDUGrRi g21x88eX1+zx
7h5uNsR0n1U8jJu3Lqmku7yii9zIf0a3NKq9BoWfoPM3pG6T+L7hFynWU8rj mCQNaULWxZ9Y
TFdudLV9Peij/N+zsUfTZSehyo7SZJ4iG61+dhL1s6PqZ179bLx6ZvE0AFuF dhkoYI1By/0k
7YNez067bNqRiQLyFW1I+y9P3ZOMKHRoOvhhByW6oadD+4EkGY6H8BdQSwcI JhcznLMBAABH
BgAAUEsDBBQACAAIAPmxNTkAAAAAAAAAAAAAAAAwAAAAdGVzdC5jb25kb2Jz Lm1hcC9zcmMv
Y29uZG1hcC9Db25kbWFwUGFja2FnZS5qYXZhzVnbbuM2EH22v4J1F8huWku9 PTVOEMmrtAay
TmA7QPsk0PLY0UaWDJJuGgT595LU/S7FsrtPtiSKnDlzODqcUc/P++gcjSxv 90LszSO7kpdq
6lrc+jBZfeC/an+HrSe8AWR57mqLdxf9vr3deYQhj2wUsBx7R0GB7Zr/9wgo hsYYsZd7Bhc1
A8cOprRu0GfM8OJlVzvZvW9l3bAZrIGAa/GBfTWA4rvhEC1hY7vDPQUyXHkW Gg4lLItHQKPl
VTD3SF1eobVHEOO3t94KHEUMmjABDcO2SxG2LKDUIzQeBwwjb/kVLEYR8xCB HQEKLpNL7x25
DkIjx74CbD0iS4Dy40jl15kna8BsTwB5a1QzEtz9NvsAuyv/tRUHFDGOaDRg pAZmSCTAXeVw
uKYQxV8Z+7832GIeeZGPJRjoyXZXl4OALgP5YAMuEMxg5TNpv3RsC9kuA7LG FqBgqgBfBP8y
vjpFYTDRa78ngtQLQhEy0cVbUOTdstj1Sr3ppc3qCbt6c85Yd4Ngqn0x0CUa BK4OOElKDaA7
4cHDbHIcS+Ymn1rY8sjY7ndVfX5+VpZAGfWcPbM9V8GsgXnHQ2pu3s+Mm8lf VXBRPtQB5rk8
5JRhvusEeVlsaaemZck0mc4X2nQsAhpSl+cGR0mPm4hbtmuzj5+y5ie2LrJX 0Y4+e712bPcp
N6nIAEDEfGgE26vozkjlV29n/n49yOPkLsyvWj4m4+73G2DRmx8/FaPJNyka 300X2mRqzDiE
P2XRCdNREhnhN8+XhgNbnuGoSJjS+zOe9oK8ixybsu7ijq49suIzF5ptmsat 8cWYLuZFDvAk
uQQiGEkZ2VvcGeyEXtGQqGf5UHYRyRY+3Bja4mFmmOO7h+mC+/HzITTVMYWI oeLiiOQM12rF
S/FSFSV1bS429K8t2DjlOTDBRBzKk+MGUBhqmsEH5QDuRUE6Ce2k1Z0yTovo ph2Ra1promlV
LNOKvP7mKKZF/IrJ9n6iaadjmZajWAHvfsjvmlaZLk5zx8xx7RNcZXbjUPzy zfNOb8C7CqP1
/8VivTHLWuTmEybmZltGJK1me0bYb9wTbweEvaDxI3a5Zr7l2gxinRMdFQ/e NF/xP5gfX7BL
lXBNf8lwxVZ7yCieo2pnGfezu3tjtvjbHP+pTf8wzNvJfGH40va3FGgz4IHm R/nM4V0iJwOd
yzeRPCzU/QdhR6QxVbYU6FMlD2Y0ohghvxSD0ueCi4agiHtpeV+OkIxecDqQ aMVHhaOCVWRj
bvlK4JKWh0QTAxsdpuKyUwpjM56wKdjFDNRSAusEjNNKAdPqGKYd6qye+qqf wFm91Fm9zlm9
3TaKPod5p6V2OInnGUNqEEhpmnBDlIqcuDgs0TFb4FNCBn48yh5mT0GJ6FRW hAl/WEsMec7t
iBt8LoG6UIMSC18Wnpok0aplmIQ25thScebPEIaPNP0pmkIXaZgItlotguq1 0fGATdjbQKIl
kG4osfxSfViPlXy8HNS+OyiJTtidQVWqrCxUa7+DwP9jhizCFTb4D0LrIrUd NFu6Qfxdy5ZV
m4MuSPBZT9xJu11l9WdYczFAuSphfAWnrHUkrI2bR3JS0bYRf0raR5lHVf2j zNBEAyl+UtZB
kqaooS0tCvZxH+g2dP213/MxKzq+BAB1VoivDEyFL6VHlWQtvs15JqUfs1D5 WIWfjmRJPupw
KHnh3gLFpkX7kECHIlfgWyyPi2v3xZ5m5POBxKkoVHZLFK09QbR6YmhZmLRO UKkoo3WLit4e
Fb0eFT2Liv7e7VFYtTriloh1T1C8SrthtnfkXf2gjoMctYRaxTnQhzWh9jtD aZgild0+4GW1
1dPEPNk9yrmUkMAt/WpT8Ts49A0UaUdVvzJAI3laVf5LwVspYt/6/Tekqmnz +v8BUEsHCNw6
sJ+RBQAAUiUAAFBLAwQUAAgACAD5sTU5AAAAAAAAAAAAAAAAKwAAAHRlc3Qu Y29uZG9icy5t
YXAvc3JjL2NvbmRtYXAvQ29udGFpbmVyLmphdmGNU12P0zAQfE5+xSJOuruK 2O8QRQXUh5OQ
QIh35Dqb1JxjW7YDVKf+d9ZO0i9RxJNje3d2PDPhq1UJK6ildXuv+l1s8pZf 7NPR3VN7Rysv
nZDPokeQ1rSDcO/KUg3O+gjW9wylVi4gw6Fj0g6DNWyMSrPNJxXi7VKU1iPb fN7+QJnK+Mzq
VVXBFntlqjGgr1oroaoyw/fg0XkMaKKIyhqwHcQdwmBb1GAzENzXODT1tvlo qUoZ9DXfNjWn
w3t2xEfTXqPnO5fnfCPMzmptfynTQ4cijjQVhEcIo0uPwfZtrh91bgCotWpe 1lqZ50UjdiTw
use40TgQ7QCJ3bLJrA41p97JgBmu5m5htA6I54hp/TKZkWCPMx4ec3VWIn/1 SKeCiE7+jVut
JCgT0XdCIhwbAX9HUiPAbAS8lEVyoiCQr0gPNyFr/FPoERfBF41PD1kkJoc6 9GhohCb3WcZJ
eqZdekjMKiQpE9beIVzJ9kEEPEx9t6JQzFal9WmOAAqTzDoneCHzNTNQwdwT I43Cv8lI1Ees
PAqt9xB2dtQtDadwTVwFtBikVy4nL9UyNtPkM5e/RyvdrH2W8oaS/yQ6zfjf HHxfsCgQxSkR
xWUkipSJIv+fddK7gbOIPjzSz3gAzk8hKf8AUEsHCD39vIDkAQAAMgQAAFBL AwQUAAgACAD5
sTU5AAAAAAAAAAAAAAAALAAAAHRlc3QuY29uZG9icy5tYXAvc3JjL2NvbmRt YXAvaW1wbC9B
SW1wbC5qYXZhvVPbTsMwDH1uv8JISIxJTT9gZWJMPCAhhgQ/kCZeF2guSrLC hPh3krYUBhvw
MPHk2rKPj89p8vE4hTEUTJuNFdXKT9s038pj6fiKH4eYp4ayR1ohMK24pIYI aepJmoagrR+q
s8nXyryLt934x8QDbSgpkSpHbq02aP1mvqKqwmvhPCq0k18779YmNnxgalsR ZLUwDgnKJWFa
Sq2I0l4sN+QmBsGoF1rtn0GmLZLLeU2d+60rakAuP+Netar8YWhRPiDzXXua 924cZRmUWAmV
rR3ajGsGWdY6M1MQ51Ci8u0i0EvwKwSpOdagWzQ4KVBOi3I6K/JyWuQhOSED MCr+DbYwve/m
3e/zKmpPPfLO9XVZCwYsqgGzSBfwOdjDHVxQh21hIBY64CVNjBVNAICdZoHr 4xkofNrdM/Ir
4U6DLkkUJvlBmWTvccn2LUk8JjDTPuiEvDtldBrpJoER2lHYl7wefuX5okFr BcfP27u/C/Au
esnapOdi0a+tgu1HQ66FD6C1i8/roCThZnH/rk3ndKMFB8r57jc52l2Guv8Y BI02kv0wQ///
3GNR6gYPcdKPSF+ueoU8b/+z9A1QSwcIzWQU4bsBAABuBQAAUEsDBBQACAAI APmxNTkAAAAA
AAAAAAAAAAAsAAAAdGVzdC5jb25kb2JzLm1hcC9zcmMvY29uZG1hcC9pbXBs L0JJbXBsLmph
dmHVVm1v2zYQ/iz/iktXwHIQS98Tz0uVeoOBoClmd18DSjrZbGlRoyinRpH/ vuOLLdmx22FN
AuyTxCN5L889d8f4/LwH5zDKZLVRfLHUY7uM99ZG9Haav6Vv3KtY9oUtEDJZ 5itWRXxViate
jz5S6Z00uTqU3LjvR3e9vfGZrVmUIivr6KOSFSq9uVmycoG3vNZYorr64clZ U5kDrU6pFhFm
glc1RrgqokyuVrKMSql5sYk+mA/PmOayPH0HM6kwmtwIVtc/OmUwiCZdvVOL yr+4dJd+xky7
473YZ+NsOIQUF7wcNjWqYS4zGA5tZt6VYO7hCkttDYEsQC8RVjJHAdJqg/4I V+NROk5GcToe
xbToRzvFWOZP1I4q+5mTokIKIR94uYACmW4U1sAUtlYxv7Q3GmGvAIwEH3+7 Frz8sseJKDFB
/bJAnYBxJ7F+PI5iOu445jWM4mpLsuuFSTgjG45qTSp4BplJAVh1gF+JEzmt WI1WsPOLZPCt
F1SKr0kBHGUI1P77K5T4cPxMqJe8HlAyApONwKOSY8EaoWHNRINbzPs+bBtk OOiG2QemteJp
ozGySk7lNDiZFrNzXSNu1TtBi5BdSpWjcovYBC815R9zqA07Mih4yQTMyBPK Z3I/eT/5/d2n
27mJvxHiMMiMZUu6+3+J0YeVUjRtaN2Y/qM/e+b3LFoOEgjEs4CohCokogSP z2/y+m6NSvEc
u9ZdLwKc2dzahfdFIRVqCfstNrrlmpSK2jTjl3DSl6dPg+dHx530Rc2uJSea G6PeAaroxNn3
AinyhLhh3AhSV/IGiYAXEGK3Wf+JfzecGBYOiIBB4PY2oWkRT5q6bQ8X0BVH s8n84hD85P4+
ubAuXEA6eG6awIe7+RE4WJ4fn6HhcTEI/7OjtOmA0Wk1u/OvE4/ClVzjc4T0 XU0vFdWRYnbB
uaEP+AfqkJd6O2mn74krUgp64lDotRRrbAXmzTDfVOjjeuA6W0K4u+nEQUZz 8RgVL83mtjBd
qZpSeGyr1fazyLrUcWfnxs78a2FkCYCzpwh58Kg6/zKD6mfwsO3D94/BTuFV B6stSB6d2T46
3SuvCMqnsj6E5adRaCfo9+J3llv1rxX3tghwWj9hxDMURPdl5J5G8Bu9K878 /yWctSciGhY0
VMP0RAE5D18fIj/0tHQ/fhTbWTetqfF93dB4gz1f27Pm1eTHZtIUBbVRKnzz 3nUP5e5OeHjX
4uCOR6yqyP/wDYTpJbw5spMekfUHfS+1vvnNrnMGwUeIY/v+6v0DUEsHCJi9 2wS7AwAAtA4A
AFBLAwQUAAgACAD5sTU5AAAAAAAAAAAAAAAALwAAAHRlc3QuY29uZG9icy5t YXAvc3JjL2Nv
bmRtYXAvaW1wbC9CYXNlSW1wbC5qYXZh1VZdc9M6EH22f8UWmInTSez31oS2 EJjMQGFuyn3t
KPY6EciSkeWWDNP/jr4c2ym9l4GSGZ5krbSrs2ePVk6Oj0M4hjQT1VbS9UbN 7DQZzI3p2SJ/
psckrEj2mawRMsHzklQxLSt2GoZ6EFLtrBekxtN940s3fnAROich1zFmjFY1 xlgWcSbKUvCY
C0WLbXxpBpoRRQV/2AczITGev2Skrv9vl4Ecz/txFzaJn3B6v/qEmXLbw8ST dzSdwgrXlE+b
GuU0FxlMp5bIcw7GD0vkyh4EogC1QShFjgyEjQajFMtZupoZ0tJkNUsTPR/F u9jI83uR08oO
VzpWIRgTt5SvoUCiGok1EIndwZifWI+GWReAlNHZtzNG+edBFW3RTGpP16gu SYlgcJkPC+gu
TbSfk4cPlSZVq4+zNXKURB/mVNKsGM0gM+WANi7gV6VzqaFHYwfT7YNvYWB4 DXxyORakYQpu
CGuwZW/k0bdAo/Ee1BEQpSRdNQpjG+qhGgUPcmxWzmrE3iHO1iVqp0LmKN0k CYNKCqUzwxxq
U/AMCsoJg6UGo+tzef5ufj1/NX99/vHtFTwH3jCjo0HCGck22v2vy9enyI1u ng8z7af4i8AG
IAbntuLSnGjpBHVToYzGp2Fw9/innr2/QSlpjn0ArucALm3B7cRjkahvI4dh 24vfUqWDsjq+
OF/O/wxOf/t8STrR9ECZOv3Rw28E1ZfAH92KA2/N1AHxNsHyS6cZDynwEvKb jYUWEGG/X/+D
XxqqVRiNtUiDwK1tI+0C9/p6pDa0nkDfHC/nV5P9uphyXF8b4U5aUBOLaXwA NTnOXFsEfIMq
oly1/XzxagIrIRgSDrq7C3aDncE8TlfbypNa31KVbSDaeTpzkJnW+mDCJ2ZL q4ydXAzzd51i
7M2KLbYerh2eHY5DkWUFhsv7VHkWtRj+NU3094lpVexlPN5FPu3x1rLlaVoO aeq7HJCdj7ze
5+fx6Bj0+P/iwqHojjoUB+0VwUV9TyaPdl323nT3qMML9xAe+ekJHA32xbp/ 6Scgsu3lx/fM
YT48ab4tK+E+/KthO/Ci/iDF161uujDA2u01L71v7BdNUaA0/cH8vtl2Dv2V aN/X8uC2x6Sq
NP7oCViGTuDJDxZ33A3No/HIWy1Cv9iHaHi8gyRp/xzC71BLBwjgY118agMA AAUNAABQSwME
FAAIAAgA+bE1OQAAAAAAAAAAAAAAADkAAAB0ZXN0LmNvbmRvYnMubWFwL3Ny Yy9jb25kbWFw
L2ltcGwvQ29uZG1hcEZhY3RvcnlJbXBsLmphdmHdV11v2zYUfZZ/BWsUqJzN 0nucBJUddTNQ
OEZiDNhTQVPXMjuZEigqblDkv49f+lacZaiLYQ+CqMtD8tx7ru6V/IuLEbpA VyTNnjiN9+JG
P/qtZ2V6v4zey7s/yjD5C8eASMqiA848esiS2WgkbykXlfWiNn3Fj9jbAma5 t+ZpBlw8LfaY
xfCZ5gIY8FmJTHnsAUloloMHh50cpxy8cJHgPH8NdIsF3jxl8BrubvsViHgN tTZO1k4M45Tv
XvgJE5Hyp2UrEMMLsqSIKfNC9bDWY7nCtxq8m07RFqRtWuTAp1FK0HSq9QgY UkfBAZjAgqYM
pTsk9oAOaQQJutreWA5X/vbGqzYDFvW2+hirkGMBkVGz2CaUIKJCjBZGvIY/ CL5JiaIcNZ2s
uXSXoO8jR3njyIMWHOQpuaYZwQ4XiUA7C2s742n8S+47L3rjtN1xlD+OdShX W5MuPcqocCeK
pSMMW8fpQCTdjuUauW3LpEwP717SzeVO3nL1sAlWi9CLQZShcsd7IbJL3z8e jzL/c5GnSaH9
xWI8mSF1ON0ht3/iu2vEiiQxRB2Hgyg46zObqdnnkbkIFmSP3PAbgUxnCJQj u00j52q6SRq7
NXBm97IHMjgOpISrYM+jvtBYJimTcWcEyvS0ep9D4CFi2tG8kCWmR/IHHf7x 7hE4pxFUPGxB
QURHwTXFCoG+WUJHqqUxNpUhekB3FPjy1p1YfQjOofSqzK/F3WoTLFfh/SWy mphjJExgyqyf
w2uDzprgBHbewc5PYYOHsAuXMLvCvumXOnHFnqdHnUbLJIEYJwGPC/XaV1nq jjcyTUz1+TBG
v6A6SCt8kJtK0/gDojliqUAYPeKERgav4zcuc/anaN2S+hNPDw+CUxa7VfNB UI5+RWZOlxyK
kz9wUkAnH0rsm1IiXN/frcP7zZ9fFr8Hq9/CL5+XD5tQpUizVhiK4XC/bTBv 8G0R/fdaRnJD
oUJh5Gz6+B9U1Iokv1rkjNikpwS16pc17mcraii+IGnFvCVok+j/U9G6GZh6 2K+POu7Vs/58
IRX6uuxx9aypY3XQzcx5uollH9QVWrMNNEts2QU9VvisbOZ1D9Bs5prN1rKZ 99hsz8tGvTDN
LmM4yaGhpaYtM2trk5PGs/Ibfh3/cf19W+ewTrnD2070l4/X604navz54tIu rK9VrTfWWxsH
62+ndp+qgGetQI2ajlT9b1nctoLtyYn6a6iAP4ZnBBkHUhId6IW3DcDgT1PD l0EnOm0Myp8K
w/8Z+X7/G330N1BLBwgB5zEbuQMAAHAQAABQSwMEFAAIAAgA+bE1OQAAAAAA AAAAAAAAADkA
AAB0ZXN0LmNvbmRvYnMubWFwL3NyYy9jb25kbWFwL2ltcGwvQ29uZG1hcFBh Y2thZ2VJbXBs
LmphdmHVWd1z0zgQf07/ClGYIWFSB14p9HBSw3mmTXpxYLh7ycj2JhE4dsZ2 UgLT//1WH5Zs
x0nL9NqDFxpLq93Vfvx2V/RevDgiL8ibIFltUzZf5Gfis1f55kvP3PAZ/u0d rWjwlc6BBEkc
LunKYstVdHp0hH+SNNerfZrBaX1xIP++p0GepNt921dSQNN2TlkMqZH2hW6o 5QONM+sqTVaQ
5tvBgsZzuGBZDoJUUSbp3IIgYqsMLFjO8HeSguXYeZ4yf53DbYSDiGbZbUTn NKeT7epWZiPU
lOYsiW8jrJtiD9kYZpBCHICxTDMl95Xm6krH9VQEPDk5IT7MWXyyziA9CZOA nJyIaLBjwg/C
EtABXG2SzEi+ALJMQojIG/9McXzT888szQzicIfVuzn3Cs0hlLG09iMWkIAb l1Tdz7Uj8A29
GGakrLLRpX6E/Dhq8du0DlyntVe7VlW9FtevtUrZBj+J9D8PRRmC6vstidcR N+IDy6WPLM9/
bHmIFo8msshSAs2YYQh2dRmkgDzQIZgScZZTzLlDydAlKeqNbFMIyTXLF4LJ j3cRi7/ekvPW
WJxMt2Rn5Yb4WyFSQbFgWsDyx7FLNjRagyUNtDobJjm8FvQoIIUgJ9cUzyck EJcpcyIsIxtG
xVLGcz0QTGYSsMkS8kUSFvo/ZTHLCf+n3bnpkusFCxaERllC0KizJF1m4jAn YDRi3yvQoQR2
0Qpoo3ydxplYL9mrIJFcZiSJAdmjzuEWgQGpMus+8ZEB3NUF5kBzqXoKQ2+K hjd0T6VZDkfi
LuC1OxzDWtkaLdhWTLukWjYtcIfexB4OnM7pUevm4RJFBgDxkyQCHu+Zi3dC v7zFeIh4dd9J
CxPu+JPGofE9SO9Ws4NgkOAyk3Ei8kce4+s03pIEz6QZWa8wbmR4YcCFsOI1 wSLEE5VAHJaL
WAIZT84UlUfdsxlDdTFXAhphxM6FrCKIkSWuVg7nRcghIAHqACRM+DFUBU/i D8Bro9xJiU2I
xoLGQOeXYDHaooF9yHgeRtsuUuBqipqA1IWDhNRTZwjLM4hmOp1Hs8q+tDPW woosbocuv6CR
KQwomCzoBkic5GQLOd4U4nLWSWhhqQESadAZS7NcQYaIFCHYHBR2ASOOn0FG cSkGeDyQ/DrB
yIJV9lp6HXJ6IqEz8b+gUTLpfdS8ihSSo5Jf+Ac9I1XB3yU5XZIxgcyxPv48 axK1RCBMefOE
cCgYoU8zgeg0FsGnre7GmyQoIZiJgGuGunJr0tmMgysPXK1zvqC5sLdUU6GX sHlJ33vjWAMA
SUupbOOtM2+YCkTSECUV2EO1AwyyW1O4UOu9JOAJ+EKsbhdo0VHoTtpV+s4O yFoFrFlzyIvd
2ilL3bPDwafV65GRz/sxXkRUMSsHpamPrYbeEt1bu8LbupKcrtO+o6aFarox wDhpEPvHbj2/
hd9rEsN1Y7GQZigBc56uoTCNxGQNEyL6Q+xsiuBHqh0TWHuipuDp6pDRmaj5 NvI7EGMFz0ua
fi1ph30Ji0MWcN0R7QMaP+cgRQLRo4WNUmYpwHdQLFW87VA9ULGUOaGaV/Sf nlJVMih1apPD
wyqj58GKQlNHjU1VzdqGvFPTUsSjh0EVICWN3qPH1yngeb7RfvlQ/UfdpHZV YfoYJtTC+1Xh
/mMI168SQoFpv+4wvd/xfylH8Uefmrn0YPeYFkOh0yFdwgG7ab3+X9PpUVMg f+M4Wr3EbTPr
g6pbHUQUuJRWavaubnb4FdVvV5XI9gOPMGZ2GahytX94kUN8czta6kNr/b8a XuZrir13yKuX
6q6LdpDPGdgRMtM/YgCKhl101Pdq/fa4aZOwkOyp5KUGTZmk6NBORSth7NTQ S4h3OvH6Eaoh
YabSBcl238akCvKzPRgNJ7Y7dMbc5S21pStPu3Yah96Cfjp1LpxLZzjxZH2n zfxtues37/bL
UjUMtP1CWn867SsG5aeoKg/bc/aw0WeQE1JNp0P70unUrCfbG8xRbq07vD0p McUK9qHj0ZUz
nvw9HfxpDz840wvXmzjKoo+SRG5plGtKpITP4+pF6eCzjx5aTb6pvCqGQplb v2BeHehoa8OP
slQ1v6omLOdYqbc2c0sGuShkoAJKrmRXOLSyb2JEuBo7793PZgtHhnZ9SlIB yGNPvDagfSHN
1KbHHwGSNX9mF1DXSGSHIRGvUiJ+xeOhxAKTkLKQchoerbyA0jBs80nZ0q2B UNP/KfrdwaME
QgX8nBI8S5Liv1XkZukSaHlkoPJ4F2qKBSuQC8d65bhLnrje1O57k7E9mMgv dzhxxu/tgdMl
+PWBp6A9cc6nxRg3HVzYnifuKsQalNvTjndJ9dpd8e6MeoAiOS5WXnbJyasG jblaqOHQcxEo
5een0YU9cS+kkhIx7D7/5JuD0eXVyHMncnfseKOLTw7G0uiz63iS5OPQcyYT eUR8un99VKfP
nbH7yTkX66MxfjnnahQ1VqaFdYsnU1tb176fVVGO+R80dDrmEXrfLBnRyoq4 24y2x8Kgryr3
q1wJgxs5XxWB1E5WxlV72zWUGN1VAEq4wwVSWCabPRXjl7hDye9+3e997ff+ f5JNpuwWw1GX
iHf74jVANfQsnot7+OXkedWg18/mTjkxxAXO754gDc72f/dorV/gt4rWcueG v02s4scDhKuZ
TA8HbYw0tbgtq/eYIVutvpUmVlxQ96e3tbRd0kygbb7Hv8dCJw/1sy/cf8wl DpcI0/Zgf5Cs
0wB05z5WC6U+iffPN6TX231lPfoXUEsHCOxEp1oUCAAAIiMAAFBLAwQUAAgA CAD5sTU5AAAA
AAAAAAAAAAAANAAAAHRlc3QuY29uZG9icy5tYXAvc3JjL2NvbmRtYXAvaW1w bC9Db250YWlu
ZXJJbXBsLmphdmG9VttuEzEQf
Re: [Data Binding] Table viewer and EMF Data Binding. [message #423038 is a reply to message #423035] Sun, 21 September 2008 23:38 Go to previous messageGo to next message
Suresh Subramanian is currently offline Suresh SubramanianFriend
Messages: 61
Registered: July 2009
Member
Thanks Tom for your great help. I will use that, test it and let you know.

Regards,
Suresh Subramanian
"Tom Schindl" <tom.schindl@bestsolution.at> wrote in message
news:gb6ac8$3tf$1@build.eclipse.org...
> Hi,
>
> I tracked it down by modifying my original sources (your zip didn't has
> the sources attached!).
>
> In fact there are 2 problems:
> - EObjectObservableMap which is tracked in 248069
> The fix is so easy that you can until one is available from CVS (a
> release of it) to copy the EObjectObservableMap and use this one until
> then
> - The ObservableColumnLabelProvider it must provide the possibility to
> switch between different templates like this.
>
> -----------8<--------------
>> List<ObservableColumnLabelProvider.CondiditionalTemplate> templates = new
>> ArrayList<ObservableColumnLabelProvider.CondiditionalTemplate >();
>> templates.add(new
>> ObservableColumnLabelProvider.CondiditionalTemplate("${0}") {
>>
>> @Override
>> public boolean isTemplate(EObject element) {
>> return !(element instanceof B);
>> }
>>
>> });
>>
>> templates.add(new
>> ObservableColumnLabelProvider.CondiditionalTemplate("${1}") {
>>
>> @Override
>> public boolean isTemplate(EObject element) {
>> return element instanceof B;
>> }
>>
>> });
>>
>> ObservableColumnLabelProvider lp = new
>> ObservableColumnLabelProvider(maps,templates);
> -----------8<--------------
>
> I've attached a version which provides this and the sample project is
> used to test.
>
> Tom
>
>
> Suresh Subramanian schrieb:
>> Tom,
>> Please find the modified project .
>> Regards
>> Suresh Subramanian
>> "Tom Schindl" <tom.schindl@bestsolution.at> wrote in message
>> news:gb4794$hh2$1@build.eclipse.org...
>>> Suresh Subramanian schrieb:
>>>> Thanks Tom, I am using the the same labelProvider, and setting the
>>>> viewer
>>>> input with the list containing object instance of both A and B. In your
>>>> Example A and B having their own attributes so it is ok. But in my
>>>> case
>>>> since A and B having the superclass attribute "name" If i observe A's
>>>> Text
>>>> it is giving null pointer exception. If i observer B name it is ok
>>>> because
>>>> it will be observer only object instances of B. I guess I must use
>>>> ConditionStrategy only. But i am not able to find out the
>>>> ConditionStrategy
>>>> code any where in CVS. Can you provide me some pointer on it.
>>> *It only exists in my mind.* Still I think this is a LabelProvider
>>> problem and not one of EMFObservableMap. Can you by chance modify my
>>> example so that you get the NPE and attach the project to a reply.
>>>
>>> Tom
>>>
>>> --
>>> B e s t S o l u t i o n . at
>>> ------------------------------------------------------------ --------
>>> Tom Schindl JFace-Committer
>>> ------------------------------------------------------------ --------
>>
>>
>
>
> --
> B e s t S o l u t i o n . at
> ------------------------------------------------------------ --------
> Tom Schindl JFace-Committer
> ------------------------------------------------------------ --------
>
Re: [Data Binding] Table viewer and EMF Data Binding. [message #423043 is a reply to message #423038] Mon, 22 September 2008 05:39 Go to previous messageGo to next message
Suresh Subramanian is currently offline Suresh SubramanianFriend
Messages: 61
Registered: July 2009
Member
Tom,
Sorry my orginal zip file didn't have the source code with it. I ran your
latest updated file still i see the error i saw earlier i guess. For your
reference i am attaching the stack trace. I will send the orginal one i send
with the source code in the next mail.
------------------------------------------------------------ ------------------------------------------------------------ --------------------------

Exception in thread "main" java.lang.NullPointerException

at
org.eclipse.emf.ecore.impl.BasicEObjectImpl.eSettingDelegate (BasicEObjectImpl.java:1532)

at
org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjec tImpl.java:1027)

at condmap.impl.BaseImpl.eGet(BaseImpl.java:104)

at
org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjec tImpl.java:1012)

at
org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjec tImpl.java:1004)

at
org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjec tImpl.java:999)

at
org.eclipse.emf.databinding.EObjectObservableMap.doGet(EObje ctObservableMap.java:83)

at
org.eclipse.core.databinding.observable.map.ComputedObservab leMap$1.handleSetChange(ComputedObservableMap.java:53)

at
org.eclipse.core.databinding.observable.set.SetChangeEvent.d ispatch(SetChangeEvent.java:61)

at
org.eclipse.core.databinding.observable.ChangeManager.fireEv ent(ChangeManager.java:129)

at
org.eclipse.core.databinding.observable.set.DecoratingObserv ableSet.fireSetChange(DecoratingObservableSet.java:59)

at
org.eclipse.core.databinding.observable.set.DecoratingObserv ableSet.handleSetChange(DecoratingObservableSet.java:97)

at
org.eclipse.core.databinding.observable.set.DecoratingObserv ableSet$1.handleSetChange(DecoratingObservableSet.java:71)

at
org.eclipse.core.databinding.observable.set.SetChangeEvent.d ispatch(SetChangeEvent.java:61)

at
org.eclipse.core.databinding.observable.ChangeManager.fireEv ent(ChangeManager.java:129)

at
org.eclipse.core.databinding.observable.set.ObservableSet.fi reSetChange(ObservableSet.java:67)

at
org.eclipse.core.internal.databinding.observable.masterdetai l.DetailObservableSet.access$1(DetailObservableSet.java:1)

at
org.eclipse.core.internal.databinding.observable.masterdetai l.DetailObservableSet$1.handleSetChange(DetailObservableSet. java:43)

at
org.eclipse.core.databinding.observable.set.SetChangeEvent.d ispatch(SetChangeEvent.java:61)

at
org.eclipse.core.databinding.observable.ChangeManager.fireEv ent(ChangeManager.java:129)

at
org.eclipse.core.databinding.observable.set.ObservableSet.fi reSetChange(ObservableSet.java:67)

at
org.eclipse.core.databinding.observable.set.WritableSet.addA ll(WritableSet.java:106)

at
org.eclipse.core.internal.databinding.observable.masterdetai l.DetailObservableSet.addAll(DetailObservableSet.java:117)

at
org.eclipse.jface.internal.databinding.viewers.ObservableCol lectionContentProvider.setInput(ObservableCollectionContentP rovider.java:182)

at
org.eclipse.jface.internal.databinding.viewers.ObservableCol lectionContentProvider.inputChanged(ObservableCollectionCont entProvider.java:146)

at
org.eclipse.jface.databinding.viewers.ObservableListContentP rovider.inputChanged(ObservableListContentProvider.java:127)

at org.eclipse.jface.viewers.ContentViewer.setInput(ContentView er.java:247)

at
org.eclipse.jface.viewers.StructuredViewer.setInput(Structur edViewer.java:1603)

at HelloWorld.createUI(HelloWorld.java:87)

at HelloWorld$1.run(HelloWorld.java:38)

at
org.eclipse.core.databinding.observable.Realm.runWithDefault (Realm.java:288)

at HelloWorld.main(HelloWorld.java:34)

------------------------------------------------------------ ------------------------------------------------------------ ------------------------------------------------------------ --------------------------------

All i did while running your latest code was checked out following plugins
from CVS
org.eclipse.ui;bundle-version="3.5.0",

org.eclipse.core.databinding;bundle-version="1.2.0",

org.eclipse.jface.databinding;bundle-version="1.2.1",

org.eclipse.core.databinding.beans;bundle-version="1.2.0",

Regards,

Suresh Subramanian


"Suresh Subramanian" <sursubra@cisco.com> wrote in message
news:gb6luk$m53$1@build.eclipse.org...
> Thanks Tom for your great help. I will use that, test it and let you know.
>
> Regards,
> Suresh Subramanian
> "Tom Schindl" <tom.schindl@bestsolution.at> wrote in message
> news:gb6ac8$3tf$1@build.eclipse.org...
>> Hi,
>>
>> I tracked it down by modifying my original sources (your zip didn't has
>> the sources attached!).
>>
>> In fact there are 2 problems:
>> - EObjectObservableMap which is tracked in 248069
>> The fix is so easy that you can until one is available from CVS (a
>> release of it) to copy the EObjectObservableMap and use this one until
>> then
>> - The ObservableColumnLabelProvider it must provide the possibility to
>> switch between different templates like this.
>>
>> -----------8<--------------
>>> List<ObservableColumnLabelProvider.CondiditionalTemplate> templates =
>>> new ArrayList<ObservableColumnLabelProvider.CondiditionalTemplate >();
>>> templates.add(new
>>> ObservableColumnLabelProvider.CondiditionalTemplate("${0}") {
>>>
>>> @Override
>>> public boolean isTemplate(EObject element) {
>>> return !(element instanceof B);
>>> }
>>>
>>> });
>>>
>>> templates.add(new
>>> ObservableColumnLabelProvider.CondiditionalTemplate("${1}") {
>>>
>>> @Override
>>> public boolean isTemplate(EObject element) {
>>> return element instanceof B;
>>> }
>>>
>>> });
>>>
>>> ObservableColumnLabelProvider lp = new
>>> ObservableColumnLabelProvider(maps,templates);
>> -----------8<--------------
>>
>> I've attached a version which provides this and the sample project is
>> used to test.
>>
>> Tom
>>
>>
>> Suresh Subramanian schrieb:
>>> Tom,
>>> Please find the modified project .
>>> Regards
>>> Suresh Subramanian
>>> "Tom Schindl" <tom.schindl@bestsolution.at> wrote in message
>>> news:gb4794$hh2$1@build.eclipse.org...
>>>> Suresh Subramanian schrieb:
>>>>> Thanks Tom, I am using the the same labelProvider, and setting the
>>>>> viewer
>>>>> input with the list containing object instance of both A and B. In
>>>>> your
>>>>> Example A and B having their own attributes so it is ok. But in my
>>>>> case
>>>>> since A and B having the superclass attribute "name" If i observe A's
>>>>> Text
>>>>> it is giving null pointer exception. If i observer B name it is ok
>>>>> because
>>>>> it will be observer only object instances of B. I guess I must use
>>>>> ConditionStrategy only. But i am not able to find out the
>>>>> ConditionStrategy
>>>>> code any where in CVS. Can you provide me some pointer on it.
>>>> *It only exists in my mind.* Still I think this is a LabelProvider
>>>> problem and not one of EMFObservableMap. Can you by chance modify my
>>>> example so that you get the NPE and attach the project to a reply.
>>>>
>>>> Tom
>>>>
>>>> --
>>>> B e s t S o l u t i o n . at
>>>> ------------------------------------------------------------ --------
>>>> Tom Schindl JFace-Committer
>>>> ------------------------------------------------------------ --------
>>>
>>>
>>
>>
>> --
>> B e s t S o l u t i o n . at
>> ------------------------------------------------------------ --------
>> Tom Schindl JFace-Committer
>> ------------------------------------------------------------ --------
>>
>
>
Re: [Data Binding] Table viewer and EMF Data Binding. [message #423047 is a reply to message #423043] Mon, 22 September 2008 08:53 Go to previous messageGo to next message
Suresh Subramanian is currently offline Suresh SubramanianFriend
Messages: 61
Registered: July 2009
Member
Tom,

Please find the latest modified code from yours to show my issue in the
attached zip file.

Regards,
Suresh Subramanian
"Suresh Subramanian" <sursubra@cisco.com> wrote in message
news:gb7b1v$pfg$1@build.eclipse.org...
> Tom,
> Sorry my orginal zip file didn't have the source code with it. I ran your
> latest updated file still i see the error i saw earlier i guess. For your
> reference i am attaching the stack trace. I will send the orginal one i
> send
> with the source code in the next mail.
> ------------------------------------------------------------ ------------------------------------------------------------ --------------------------
>
> Exception in thread "main" java.lang.NullPointerException
>
> at
> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eSettingDelegate (BasicEObjectImpl.java:1532)
>
> at
> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjec tImpl.java:1027)
>
> at condmap.impl.BaseImpl.eGet(BaseImpl.java:104)
>
> at
> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjec tImpl.java:1012)
>
> at
> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjec tImpl.java:1004)
>
> at
> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjec tImpl.java:999)
>
> at
> org.eclipse.emf.databinding.EObjectObservableMap.doGet(EObje ctObservableMap.java:83)
>
> at
> org.eclipse.core.databinding.observable.map.ComputedObservab leMap$1.handleSetChange(ComputedObservableMap.java:53)
>
> at
> org.eclipse.core.databinding.observable.set.SetChangeEvent.d ispatch(SetChangeEvent.java:61)
>
> at
> org.eclipse.core.databinding.observable.ChangeManager.fireEv ent(ChangeManager.java:129)
>
> at
> org.eclipse.core.databinding.observable.set.DecoratingObserv ableSet.fireSetChange(DecoratingObservableSet.java:59)
>
> at
> org.eclipse.core.databinding.observable.set.DecoratingObserv ableSet.handleSetChange(DecoratingObservableSet.java:97)
>
> at
> org.eclipse.core.databinding.observable.set.DecoratingObserv ableSet$1.handleSetChange(DecoratingObservableSet.java:71)
>
> at
> org.eclipse.core.databinding.observable.set.SetChangeEvent.d ispatch(SetChangeEvent.java:61)
>
> at
> org.eclipse.core.databinding.observable.ChangeManager.fireEv ent(ChangeManager.java:129)
>
> at
> org.eclipse.core.databinding.observable.set.ObservableSet.fi reSetChange(ObservableSet.java:67)
>
> at
> org.eclipse.core.internal.databinding.observable.masterdetai l.DetailObservableSet.access$1(DetailObservableSet.java:1)
>
> at
> org.eclipse.core.internal.databinding.observable.masterdetai l.DetailObservableSet$1.handleSetChange(DetailObservableSet. java:43)
>
> at
> org.eclipse.core.databinding.observable.set.SetChangeEvent.d ispatch(SetChangeEvent.java:61)
>
> at
> org.eclipse.core.databinding.observable.ChangeManager.fireEv ent(ChangeManager.java:129)
>
> at
> org.eclipse.core.databinding.observable.set.ObservableSet.fi reSetChange(ObservableSet.java:67)
>
> at
> org.eclipse.core.databinding.observable.set.WritableSet.addA ll(WritableSet.java:106)
>
> at
> org.eclipse.core.internal.databinding.observable.masterdetai l.DetailObservableSet.addAll(DetailObservableSet.java:117)
>
> at
> org.eclipse.jface.internal.databinding.viewers.ObservableCol lectionContentProvider.setInput(ObservableCollectionContentP rovider.java:182)
>
> at
> org.eclipse.jface.internal.databinding.viewers.ObservableCol lectionContentProvider.inputChanged(ObservableCollectionCont entProvider.java:146)
>
> at
> org.eclipse.jface.databinding.viewers.ObservableListContentP rovider.inputChanged(ObservableListContentProvider.java:127)
>
> at
> org.eclipse.jface.viewers.ContentViewer.setInput(ContentView er.java:247)
>
> at
> org.eclipse.jface.viewers.StructuredViewer.setInput(Structur edViewer.java:1603)
>
> at HelloWorld.createUI(HelloWorld.java:87)
>
> at HelloWorld$1.run(HelloWorld.java:38)
>
> at
> org.eclipse.core.databinding.observable.Realm.runWithDefault (Realm.java:288)
>
> at HelloWorld.main(HelloWorld.java:34)
>
> ------------------------------------------------------------ ------------------------------------------------------------ ------------------------------------------------------------ --------------------------------
>
> All i did while running your latest code was checked out following
> plugins
> from CVS
> org.eclipse.ui;bundle-version="3.5.0",
>
> org.eclipse.core.databinding;bundle-version="1.2.0",
>
> org.eclipse.jface.databinding;bundle-version="1.2.1",
>
> org.eclipse.core.databinding.beans;bundle-version="1.2.0",
>
> Regards,
>
> Suresh Subramanian
>
>
> "Suresh Subramanian" <sursubra@cisco.com> wrote in message
> news:gb6luk$m53$1@build.eclipse.org...
>> Thanks Tom for your great help. I will use that, test it and let you
>> know.
>>
>> Regards,
>> Suresh Subramanian
>> "Tom Schindl" <tom.schindl@bestsolution.at> wrote in message
>> news:gb6ac8$3tf$1@build.eclipse.org...
>>> Hi,
>>>
>>> I tracked it down by modifying my original sources (your zip didn't has
>>> the sources attached!).
>>>
>>> In fact there are 2 problems:
>>> - EObjectObservableMap which is tracked in 248069
>>> The fix is so easy that you can until one is available from CVS (a
>>> release of it) to copy the EObjectObservableMap and use this one until
>>> then
>>> - The ObservableColumnLabelProvider it must provide the possibility to
>>> switch between different templates like this.
>>>
>>> -----------8<--------------
>>>> List<ObservableColumnLabelProvider.CondiditionalTemplate> templates =
>>>> new ArrayList<ObservableColumnLabelProvider.CondiditionalTemplate >();
>>>> templates.add(new
>>>> ObservableColumnLabelProvider.CondiditionalTemplate("${0}") {
>>>>
>>>> @Override
>>>> public boolean isTemplate(EObject element) {
>>>> return !(element instanceof B);
>>>> }
>>>>
>>>> });
>>>>
>>>> templates.add(new
>>>> ObservableColumnLabelProvider.CondiditionalTemplate("${1}") {
>>>>
>>>> @Override
>>>> public boolean isTemplate(EObject element) {
>>>> return element instanceof B;
>>>> }
>>>>
>>>> });
>>>>
>>>> ObservableColumnLabelProvider lp = new
>>>> ObservableColumnLabelProvider(maps,templates);
>>> -----------8<--------------
>>>
>>> I've attached a version which provides this and the sample project is
>>> used to test.
>>>
>>> Tom
>>>
>>>
>>> Suresh Subramanian schrieb:
>>>> Tom,
>>>> Please find the modified project .
>>>> Regards
>>>> Suresh Subramanian
>>>> "Tom Schindl" <tom.schindl@bestsolution.at> wrote in message
>>>> news:gb4794$hh2$1@build.eclipse.org...
>>>>> Suresh Subramanian schrieb:
>>>>>> Thanks Tom, I am using the the same labelProvider, and setting the
>>>>>> viewer
>>>>>> input with the list containing object instance of both A and B. In
>>>>>> your
>>>>>> Example A and B having their own attributes so it is ok. But in my
>>>>>> case
>>>>>> since A and B having the superclass attribute "name" If i observe A's
>>>>>> Text
>>>>>> it is giving null pointer exception. If i observer B name it is ok
>>>>>> because
>>>>>> it will be observer only object instances of B. I guess I must use
>>>>>> ConditionStrategy only. But i am not able to find out the
>>>>>> ConditionStrategy
>>>>>> code any where in CVS. Can you provide me some pointer on it.
>>>>> *It only exists in my mind.* Still I think this is a LabelProvider
>>>>> problem and not one of EMFObservableMap. Can you by chance modify my
>>>>> example so that you get the NPE and attach the project to a reply.
>>>>>
>>>>> Tom
>>>>>
>>>>> --
>>>>> B e s t S o l u t i o n . at
>>>>> ------------------------------------------------------------ --------
>>>>> Tom Schindl JFace-Committer
>>>>> ------------------------------------------------------------ --------
>>>>
>>>>
>>>
>>>
>>> --
>>> B e s t S o l u t i o n . at
>>> ------------------------------------------------------------ --------
>>> Tom Schindl JFace-Committer
>>> ------------------------------------------------------------ --------
>>>
>>
>>
>
>


Re: [Data Binding] Table viewer and EMF Data Binding. [message #423077 is a reply to message #423047] Mon, 22 September 2008 16:24 Go to previous messageGo to next message
Thomas Schindl is currently offline Thomas SchindlFriend
Messages: 6651
Registered: July 2009
Senior Member
Looks like you didn't read my mail completely. Looks like you didn't
applied the patch from the bug [1] i mentionned to the current code
base. It won't work without this fix!

Tom

[1]https://bugs.eclipse.org/bugs/show_bug.cgi?id=248069

Suresh Subramanian schrieb:
> Tom,
>
> Please find the latest modified code from yours to show my issue in the
> attached zip file.
>
> Regards,
> Suresh Subramanian
> "Suresh Subramanian" <sursubra@cisco.com> wrote in message
> news:gb7b1v$pfg$1@build.eclipse.org...
>> Tom,
>> Sorry my orginal zip file didn't have the source code with it. I ran your
>> latest updated file still i see the error i saw earlier i guess. For your
>> reference i am attaching the stack trace. I will send the orginal one i
>> send
>> with the source code in the next mail.
>> ------------------------------------------------------------ ------------------------------------------------------------ --------------------------
>>
>> Exception in thread "main" java.lang.NullPointerException
>>
>> at
>> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eSettingDelegate (BasicEObjectImpl.java:1532)
>>
>> at
>> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjec tImpl.java:1027)
>>
>> at condmap.impl.BaseImpl.eGet(BaseImpl.java:104)
>>
>> at
>> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjec tImpl.java:1012)
>>
>> at
>> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjec tImpl.java:1004)
>>
>> at
>> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjec tImpl.java:999)
>>
>> at
>> org.eclipse.emf.databinding.EObjectObservableMap.doGet(EObje ctObservableMap.java:83)
>>
>> at
>> org.eclipse.core.databinding.observable.map.ComputedObservab leMap$1.handleSetChange(ComputedObservableMap.java:53)
>>
>> at
>> org.eclipse.core.databinding.observable.set.SetChangeEvent.d ispatch(SetChangeEvent.java:61)
>>
>> at
>> org.eclipse.core.databinding.observable.ChangeManager.fireEv ent(ChangeManager.java:129)
>>
>> at
>> org.eclipse.core.databinding.observable.set.DecoratingObserv ableSet.fireSetChange(DecoratingObservableSet.java:59)
>>
>> at
>> org.eclipse.core.databinding.observable.set.DecoratingObserv ableSet.handleSetChange(DecoratingObservableSet.java:97)
>>
>> at
>> org.eclipse.core.databinding.observable.set.DecoratingObserv ableSet$1.handleSetChange(DecoratingObservableSet.java:71)
>>
>> at
>> org.eclipse.core.databinding.observable.set.SetChangeEvent.d ispatch(SetChangeEvent.java:61)
>>
>> at
>> org.eclipse.core.databinding.observable.ChangeManager.fireEv ent(ChangeManager.java:129)
>>
>> at
>> org.eclipse.core.databinding.observable.set.ObservableSet.fi reSetChange(ObservableSet.java:67)
>>
>> at
>> org.eclipse.core.internal.databinding.observable.masterdetai l.DetailObservableSet.access$1(DetailObservableSet.java:1)
>>
>> at
>> org.eclipse.core.internal.databinding.observable.masterdetai l.DetailObservableSet$1.handleSetChange(DetailObservableSet. java:43)
>>
>> at
>> org.eclipse.core.databinding.observable.set.SetChangeEvent.d ispatch(SetChangeEvent.java:61)
>>
>> at
>> org.eclipse.core.databinding.observable.ChangeManager.fireEv ent(ChangeManager.java:129)
>>
>> at
>> org.eclipse.core.databinding.observable.set.ObservableSet.fi reSetChange(ObservableSet.java:67)
>>
>> at
>> org.eclipse.core.databinding.observable.set.WritableSet.addA ll(WritableSet.java:106)
>>
>> at
>> org.eclipse.core.internal.databinding.observable.masterdetai l.DetailObservableSet.addAll(DetailObservableSet.java:117)
>>
>> at
>> org.eclipse.jface.internal.databinding.viewers.ObservableCol lectionContentProvider.setInput(ObservableCollectionContentP rovider.java:182)
>>
>> at
>> org.eclipse.jface.internal.databinding.viewers.ObservableCol lectionContentProvider.inputChanged(ObservableCollectionCont entProvider.java:146)
>>
>> at
>> org.eclipse.jface.databinding.viewers.ObservableListContentP rovider.inputChanged(ObservableListContentProvider.java:127)
>>
>> at
>> org.eclipse.jface.viewers.ContentViewer.setInput(ContentView er.java:247)
>>
>> at
>> org.eclipse.jface.viewers.StructuredViewer.setInput(Structur edViewer.java:1603)
>>
>> at HelloWorld.createUI(HelloWorld.java:87)
>>
>> at HelloWorld$1.run(HelloWorld.java:38)
>>
>> at
>> org.eclipse.core.databinding.observable.Realm.runWithDefault (Realm.java:288)
>>
>> at HelloWorld.main(HelloWorld.java:34)
>>
>> ------------------------------------------------------------ ------------------------------------------------------------ ------------------------------------------------------------ --------------------------------
>>
>> All i did while running your latest code was checked out following
>> plugins
>> from CVS
>> org.eclipse.ui;bundle-version="3.5.0",
>>
>> org.eclipse.core.databinding;bundle-version="1.2.0",
>>
>> org.eclipse.jface.databinding;bundle-version="1.2.1",
>>
>> org.eclipse.core.databinding.beans;bundle-version="1.2.0",
>>
>> Regards,
>>
>> Suresh Subramanian
>>
>>
>> "Suresh Subramanian" <sursubra@cisco.com> wrote in message
>> news:gb6luk$m53$1@build.eclipse.org...
>>> Thanks Tom for your great help. I will use that, test it and let you
>>> know.
>>>
>>> Regards,
>>> Suresh Subramanian
>>> "Tom Schindl" <tom.schindl@bestsolution.at> wrote in message
>>> news:gb6ac8$3tf$1@build.eclipse.org...
>>>> Hi,
>>>>
>>>> I tracked it down by modifying my original sources (your zip didn't has
>>>> the sources attached!).
>>>>
>>>> In fact there are 2 problems:
>>>> - EObjectObservableMap which is tracked in 248069
>>>> The fix is so easy that you can until one is available from CVS (a
>>>> release of it) to copy the EObjectObservableMap and use this one until
>>>> then
>>>> - The ObservableColumnLabelProvider it must provide the possibility to
>>>> switch between different templates like this.
>>>>
>>>> -----------8<--------------
>>>>> List<ObservableColumnLabelProvider.CondiditionalTemplate> templates =
>>>>> new ArrayList<ObservableColumnLabelProvider.CondiditionalTemplate >();
>>>>> templates.add(new
>>>>> ObservableColumnLabelProvider.CondiditionalTemplate("${0}") {
>>>>>
>>>>> @Override
>>>>> public boolean isTemplate(EObject element) {
>>>>> return !(element instanceof B);
>>>>> }
>>>>>
>>>>> });
>>>>>
>>>>> templates.add(new
>>>>> ObservableColumnLabelProvider.CondiditionalTemplate("${1}") {
>>>>>
>>>>> @Override
>>>>> public boolean isTemplate(EObject element) {
>>>>> return element instanceof B;
>>>>> }
>>>>>
>>>>> });
>>>>>
>>>>> ObservableColumnLabelProvider lp = new
>>>>> ObservableColumnLabelProvider(maps,templates);
>>>> -----------8<--------------
>>>>
>>>> I've attached a version which provides this and the sample project is
>>>> used to test.
>>>>
>>>> Tom
>>>>
>>>>
>>>> Suresh Subramanian schrieb:
>>>>> Tom,
>>>>> Please find the modified project .
>>>>> Regards
>>>>> Suresh Subramanian
>>>>> "Tom Schindl" <tom.schindl@bestsolution.at> wrote in message
>>>>> news:gb4794$hh2$1@build.eclipse.org...
>>>>>> Suresh Subramanian schrieb:
>>>>>>> Thanks Tom, I am using the the same labelProvider, and setting the
>>>>>>> viewer
>>>>>>> input with the list containing object instance of both A and B. In
>>>>>>> your
>>>>>>> Example A and B having their own attributes so it is ok. But in my
>>>>>>> case
>>>>>>> since A and B having the superclass attribute "name" If i observe A's
>>>>>>> Text
>>>>>>> it is giving null pointer exception. If i observer B name it is ok
>>>>>>> because
>>>>>>> it will be observer only object instances of B. I guess I must use
>>>>>>> ConditionStrategy only. But i am not able to find out the
>>>>>>> ConditionStrategy
>>>>>>> code any where in CVS. Can you provide me some pointer on it.
>>>>>> *It only exists in my mind.* Still I think this is a LabelProvider
>>>>>> problem and not one of EMFObservableMap. Can you by chance modify my
>>>>>> example so that you get the NPE and attach the project to a reply.
>>>>>>
>>>>>> Tom
>>>>>>
>>>>>> --
>>>>>> B e s t S o l u t i o n . at
>>>>>> ------------------------------------------------------------ --------
>>>>>> Tom Schindl JFace-Committer
>>>>>> ------------------------------------------------------------ --------
>>>>>
>>>>
>>>> --
>>>> B e s t S o l u t i o n . at
>>>> ------------------------------------------------------------ --------
>>>> Tom Schindl JFace-Committer
>>>> ------------------------------------------------------------ --------
>>>>
>>>
>>
>
>


--
B e s t S o l u t i o n . at
------------------------------------------------------------ --------
Tom Schindl JFace-Committer
------------------------------------------------------------ --------
Re: [Data Binding] Table viewer and EMF Data Binding. [message #423082 is a reply to message #423077] Mon, 22 September 2008 17:28 Go to previous messageGo to next message
Suresh Subramanian is currently offline Suresh SubramanianFriend
Messages: 61
Registered: July 2009
Member
Thanks Tom. I didn't read your mail properly. After applying the patch it
works fine. Thanks for your extenden help on this.

Regards,
Suresh Subramanian
"Tom Schindl" <tom.schindl@bestsolution.at> wrote in message
news:gb8gsb$mpj$1@build.eclipse.org...
> Looks like you didn't read my mail completely. Looks like you didn't
> applied the patch from the bug [1] i mentionned to the current code
> base. It won't work without this fix!
>
> Tom
>
> [1]https://bugs.eclipse.org/bugs/show_bug.cgi?id=248069
>
> Suresh Subramanian schrieb:
>> Tom,
>>
>> Please find the latest modified code from yours to show my issue in the
>> attached zip file.
>>
>> Regards,
>> Suresh Subramanian
>> "Suresh Subramanian" <sursubra@cisco.com> wrote in message
>> news:gb7b1v$pfg$1@build.eclipse.org...
>>> Tom,
>>> Sorry my orginal zip file didn't have the source code with it. I ran
>>> your
>>> latest updated file still i see the error i saw earlier i guess. For
>>> your
>>> reference i am attaching the stack trace. I will send the orginal one i
>>> send
>>> with the source code in the next mail.
>>> ------------------------------------------------------------ ------------------------------------------------------------ --------------------------
>>>
>>> Exception in thread "main" java.lang.NullPointerException
>>>
>>> at
>>> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eSettingDelegate (BasicEObjectImpl.java:1532)
>>>
>>> at
>>> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjec tImpl.java:1027)
>>>
>>> at condmap.impl.BaseImpl.eGet(BaseImpl.java:104)
>>>
>>> at
>>> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjec tImpl.java:1012)
>>>
>>> at
>>> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjec tImpl.java:1004)
>>>
>>> at
>>> org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjec tImpl.java:999)
>>>
>>> at
>>> org.eclipse.emf.databinding.EObjectObservableMap.doGet(EObje ctObservableMap.java:83)
>>>
>>> at
>>> org.eclipse.core.databinding.observable.map.ComputedObservab leMap$1.handleSetChange(ComputedObservableMap.java:53)
>>>
>>> at
>>> org.eclipse.core.databinding.observable.set.SetChangeEvent.d ispatch(SetChangeEvent.java:61)
>>>
>>> at
>>> org.eclipse.core.databinding.observable.ChangeManager.fireEv ent(ChangeManager.java:129)
>>>
>>> at
>>> org.eclipse.core.databinding.observable.set.DecoratingObserv ableSet.fireSetChange(DecoratingObservableSet.java:59)
>>>
>>> at
>>> org.eclipse.core.databinding.observable.set.DecoratingObserv ableSet.handleSetChange(DecoratingObservableSet.java:97)
>>>
>>> at
>>> org.eclipse.core.databinding.observable.set.DecoratingObserv ableSet$1.handleSetChange(DecoratingObservableSet.java:71)
>>>
>>> at
>>> org.eclipse.core.databinding.observable.set.SetChangeEvent.d ispatch(SetChangeEvent.java:61)
>>>
>>> at
>>> org.eclipse.core.databinding.observable.ChangeManager.fireEv ent(ChangeManager.java:129)
>>>
>>> at
>>> org.eclipse.core.databinding.observable.set.ObservableSet.fi reSetChange(ObservableSet.java:67)
>>>
>>> at
>>> org.eclipse.core.internal.databinding.observable.masterdetai l.DetailObservableSet.access$1(DetailObservableSet.java:1)
>>>
>>> at
>>> org.eclipse.core.internal.databinding.observable.masterdetai l.DetailObservableSet$1.handleSetChange(DetailObservableSet. java:43)
>>>
>>> at
>>> org.eclipse.core.databinding.observable.set.SetChangeEvent.d ispatch(SetChangeEvent.java:61)
>>>
>>> at
>>> org.eclipse.core.databinding.observable.ChangeManager.fireEv ent(ChangeManager.java:129)
>>>
>>> at
>>> org.eclipse.core.databinding.observable.set.ObservableSet.fi reSetChange(ObservableSet.java:67)
>>>
>>> at
>>> org.eclipse.core.databinding.observable.set.WritableSet.addA ll(WritableSet.java:106)
>>>
>>> at
>>> org.eclipse.core.internal.databinding.observable.masterdetai l.DetailObservableSet.addAll(DetailObservableSet.java:117)
>>>
>>> at
>>> org.eclipse.jface.internal.databinding.viewers.ObservableCol lectionContentProvider.setInput(ObservableCollectionContentP rovider.java:182)
>>>
>>> at
>>> org.eclipse.jface.internal.databinding.viewers.ObservableCol lectionContentProvider.inputChanged(ObservableCollectionCont entProvider.java:146)
>>>
>>> at
>>> org.eclipse.jface.databinding.viewers.ObservableListContentP rovider.inputChanged(ObservableListContentProvider.java:127)
>>>
>>> at
>>> org.eclipse.jface.viewers.ContentViewer.setInput(ContentView er.java:247)
>>>
>>> at
>>> org.eclipse.jface.viewers.StructuredViewer.setInput(Structur edViewer.java:1603)
>>>
>>> at HelloWorld.createUI(HelloWorld.java:87)
>>>
>>> at HelloWorld$1.run(HelloWorld.java:38)
>>>
>>> at
>>> org.eclipse.core.databinding.observable.Realm.runWithDefault (Realm.java:288)
>>>
>>> at HelloWorld.main(HelloWorld.java:34)
>>>
>>> ------------------------------------------------------------ ------------------------------------------------------------ ------------------------------------------------------------ --------------------------------
>>>
>>> All i did while running your latest code was checked out following
>>> plugins
>>> from CVS
>>> org.eclipse.ui;bundle-version="3.5.0",
>>>
>>> org.eclipse.core.databinding;bundle-version="1.2.0",
>>>
>>> org.eclipse.jface.databinding;bundle-version="1.2.1",
>>>
>>> org.eclipse.core.databinding.beans;bundle-version="1.2.0",
>>>
>>> Regards,
>>>
>>> Suresh Subramanian
>>>
>>>
>>> "Suresh Subramanian" <sursubra@cisco.com> wrote in message
>>> news:gb6luk$m53$1@build.eclipse.org...
>>>> Thanks Tom for your great help. I will use that, test it and let you
>>>> know.
>>>>
>>>> Regards,
>>>> Suresh Subramanian
>>>> "Tom Schindl" <tom.schindl@bestsolution.at> wrote in message
>>>> news:gb6ac8$3tf$1@build.eclipse.org...
>>>>> Hi,
>>>>>
>>>>> I tracked it down by modifying my original sources (your zip didn't
>>>>> has
>>>>> the sources attached!).
>>>>>
>>>>> In fact there are 2 problems:
>>>>> - EObjectObservableMap which is tracked in 248069
>>>>> The fix is so easy that you can until one is available from CVS (a
>>>>> release of it) to copy the EObjectObservableMap and use this one
>>>>> until
>>>>> then
>>>>> - The ObservableColumnLabelProvider it must provide the possibility to
>>>>> switch between different templates like this.
>>>>>
>>>>> -----------8<--------------
>>>>>> List<ObservableColumnLabelProvider.CondiditionalTemplate> templates =
>>>>>> new ArrayList<ObservableColumnLabelProvider.CondiditionalTemplate >();
>>>>>> templates.add(new
>>>>>> ObservableColumnLabelProvider.CondiditionalTemplate("${0}") {
>>>>>>
>>>>>> @Override
>>>>>> public boolean isTemplate(EObject element) {
>>>>>> return !(element instanceof B);
>>>>>> }
>>>>>>
>>>>>> });
>>>>>>
>>>>>> templates.add(new
>>>>>> ObservableColumnLabelProvider.CondiditionalTemplate("${1}") {
>>>>>>
>>>>>> @Override
>>>>>> public boolean isTemplate(EObject element) {
>>>>>> return element instanceof B;
>>>>>> }
>>>>>>
>>>>>> });
>>>>>>
>>>>>> ObservableColumnLabelProvider lp = new
>>>>>> ObservableColumnLabelProvider(maps,templates);
>>>>> -----------8<--------------
>>>>>
>>>>> I've attached a version which provides this and the sample project is
>>>>> used to test.
>>>>>
>>>>> Tom
>>>>>
>>>>>
>>>>> Suresh Subramanian schrieb:
>>>>>> Tom,
>>>>>> Please find the modified project .
>>>>>> Regards
>>>>>> Suresh Subramanian
>>>>>> "Tom Schindl" <tom.schindl@bestsolution.at> wrote in message
>>>>>> news:gb4794$hh2$1@build.eclipse.org...
>>>>>>> Suresh Subramanian schrieb:
>>>>>>>> Thanks Tom, I am using the the same labelProvider, and setting the
>>>>>>>> viewer
>>>>>>>> input with the list containing object instance of both A and B. In
>>>>>>>> your
>>>>>>>> Example A and B having their own attributes so it is ok. But in my
>>>>>>>> case
>>>>>>>> since A and B having the superclass attribute "name" If i observe
>>>>>>>> A's
>>>>>>>> Text
>>>>>>>> it is giving null pointer exception. If i observer B name it is ok
>>>>>>>> because
>>>>>>>> it will be observer only object instances of B. I guess I must use
>>>>>>>> ConditionStrategy only. But i am not able to find out the
>>>>>>>> ConditionStrategy
>>>>>>>> code any where in CVS. Can you provide me some pointer on it.
>>>>>>> *It only exists in my mind.* Still I think this is a LabelProvider
>>>>>>> problem and not one of EMFObservableMap. Can you by chance modify my
>>>>>>> example so that you get the NPE and attach the project to a reply.
>>>>>>>
>>>>>>> Tom
>>>>>>>
>>>>>>> --
>>>>>>> B e s t S o l u t i o n . at
>>>>>>> ------------------------------------------------------------ --------
>>>>>>> Tom Schindl JFace-Committer
>>>>>>> ------------------------------------------------------------ --------
>>>>>>
>>>>>
>>>>> --
>>>>> B e s t S o l u t i o n . at
>>>>> ------------------------------------------------------------ --------
>>>>> Tom Schindl JFace-Committer
>>>>> ------------------------------------------------------------ --------
>>>>>
>>>>
>>>
>>
>>
>
>
> --
> B e s t S o l u t i o n . at
> ------------------------------------------------------------ --------
> Tom Schindl JFace-Committer
> ------------------------------------------------------------ --------
Re: [Data Binding] Table viewer and EMF Data Binding. [message #423084 is a reply to message #423082] Mon, 22 September 2008 17:34 Go to previous message
Thomas Schindl is currently offline Thomas SchindlFriend
Messages: 6651
Registered: July 2009
Senior Member
No problem. Great we could solve the problem and starting to add this
IMHO important feature to Databinding (EMF and JavaBeans) because
without it TreeDatabindingSupport is not really useable ;-)

Tom

--
B e s t S o l u t i o n . at
------------------------------------------------------------ --------
Tom Schindl JFace-Committer
------------------------------------------------------------ --------
Previous Topic:Re: Does a datatype describing the name of a EStructuralFeature exist?
Next Topic:To EMF or Not to EMF
Goto Forum:
  


Current Time: Thu Apr 18 23:57:36 GMT 2024

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

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

Back to the top