Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » EMF » Resource reload problem when using save option OPTION_SAVE_ XML="1.1"
Resource reload problem when using save option OPTION_SAVE_ XML="1.1" [message #640603] Mon, 22 November 2010 15:13 Go to next message
Jan Mauersberger is currently offline Jan MauersbergerFriend
Messages: 120
Registered: July 2009
Senior Member
Hi,

we have EMF model elements that may have control characters between 0x1
and 0xff other than typical white space characters i their string values
so we switched to XML 1.1 using the XMLResource.OPTION_SAVE_ XML option.
We are using EMF 2.6.1.

Everything is fine in most cases and works as expected but there is one
strange thing with specific resources when doing a reload (so unload();
load() in sequence). I found out that It only happens if the resource
contains the "<xmi:XMI>" as top level element - I suppose this is done
during serialization in case the resource contains multiple top level
elements, correct?

However, in case there are control characters in the file - even normal
XML 1.0 encoded like - a strange exception is thrown like
"org.eclipse.emf.ecore.resource.Resource$IOWrappedException: Value
'#xA;&#x' is not legal." The parser seems to mix things up. Note that if
the XML version is slipped back to 1.0 everything is fine.

Any idea why the 1.1 works for most model files but not for those
mentioned?

PS: I recognized some code in the XMIHandler.processElement method which
behaves different in case the top element is the mentioned "XMI" element
- for example in that case the super method is not called and
"processHeaderInformation" is never triggered. Is this a bug? What's the
intention?

Thanks Jan
Re: Resource reload problem when using save option OPTION_SAVE_ XML="1.1" [message #640604 is a reply to message #640603] Mon, 22 November 2010 15:21 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 33218
Registered: July 2009
Senior Member
Jan,

Comments below.

Jan Mauersberger wrote:
> Hi,
>
> we have EMF model elements that may have control characters between
> 0x1 and 0xff other than typical white space characters i their string
> values so we switched to XML 1.1 using the XMLResource.OPTION_SAVE_
> XML option. We are using EMF 2.6.1.
>
> Everything is fine in most cases and works as expected but there is
> one strange thing with specific resources when doing a reload (so
> unload(); load() in sequence). I found out that It only happens if the
> resource contains the "<xmi:XMI>" as top level element - I suppose
> this is done during serialization in case the resource contains
> multiple top level elements, correct?
Yes.
>
> However, in case there are control characters in the file - even
> normal XML 1.0 encoded like - a strange exception is thrown like
> "org.eclipse.emf.ecore.resource.Resource$IOWrappedException: Value
> '#xA;&#x' is not legal." The parser seems to mix things up. Note that
> if the XML version is slipped back to 1.0 everything is fine.
Who's throwing that? SAX?
>
> Any idea why the 1.1 works for most model files but not for those
> mentioned?
I'm not sure I understand the message. It looks like it's joining two
separate entities...
>
> PS: I recognized some code in the XMIHandler.processElement method
> which behaves different in case the top element is the mentioned "XMI"
> element - for example in that case the super method is not called and
> "processHeaderInformation" is never triggered. Is this a bug? What's
> the intention?
Probably a bug for some untested path. A bugzilla with a self-contained
test case will be a good thing.
>
> Thanks Jan


Ed Merks
Professional Support: https://www.macromodeling.com/
Re: Resource reload problem when using save option OPTION_SAVE_ XML="1.1" [message #640628 is a reply to message #640604] Mon, 22 November 2010 15:44 Go to previous messageGo to next message
Jan Mauersberger is currently offline Jan MauersbergerFriend
Messages: 120
Registered: July 2009
Senior Member
Ed,

8 minutes to answer? That's probably world record...

>> However, in case there are control characters in the file - even
>> normal XML 1.0 encoded like - a strange exception is thrown like
>> "org.eclipse.emf.ecore.resource.Resource$IOWrappedException: Value
>> '#xA;&#x' is not legal." The parser seems to mix things up. Note that
>> if the XML version is slipped back to 1.0 everything is fine.
> Who's throwing that? SAX?

Well, it's deeply nested. I try to illustrate:

(my code)
....
Caused by: org.eclipse.emf.ecore.resource.Resource$IOWrappedException:
Value '#xA;&#x' is not legal. (platform:/resource/...
at
org.eclipse.emf.ecore.xmi.impl.XMLLoadImpl.handleErrors(XMLL oadImpl.java:83)
at org.eclipse.emf.ecore.xmi.impl.XMLLoadImpl.load(XMLLoadImpl. java:191)
....
Caused by: org.eclipse.emf.ecore.xmi.IllegalValueException: Value
'#xA;&#x' is not legal. (platform:/resource/...
at
org.eclipse.emf.ecore.xmi.impl.XMLHandler.setFeatureValue(XM LHandler.java:2663)
at
org.eclipse.emf.ecore.xmi.impl.XMLHandler.setAttribValue(XML Handler.java:2717)
....
Caused by: java.lang.IllegalArgumentException: The value '#xA;&#x' is
not a valid enumerator of 'MyEnum'
at Foo.impl.BarImpl.createMyEnumFromString(...)
at Foo.impl.BarImpl.createFromString(...)
at
org.eclipse.emf.ecore.xmi.impl.XMLHelperImpl.createFromStrin g(XMLHelperImpl.java:1621)


>> Any idea why the 1.1 works for most model files but not for those
>> mentioned?
> I'm not sure I understand the message. It looks like it's joining two
> separate entities...

Yes, somehow the XML code is interpreted the wrong way.

>> PS: I recognized some code in the XMIHandler.processElement method
>> which behaves different in case the top element is the mentioned "XMI"
>> element - for example in that case the super method is not called and
>> "processHeaderInformation" is never triggered. Is this a bug? What's
>> the intention?
> Probably a bug for some untested path. A bugzilla with a self-contained
> test case will be a good thing.

OK. I will try to come up with a test case.

Even if this is a bug we may do some "best guessing". One thing I wonder
is why this works if loaded the first time using getResource(..., true),
i.e. loading on demand, but fails in case of unload(), reload(). Any idea?

Jan
Re: Resource reload problem when using save option OPTION_SAVE_ XML="1.1" [message #640658 is a reply to message #640628] Mon, 22 November 2010 17:47 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 33218
Registered: July 2009
Senior Member
Jan,

Comments below.

Jan Mauersberger wrote:
> Ed,
>
> 8 minutes to answer? That's probably world record...
>
>>> However, in case there are control characters in the file - even
>>> normal XML 1.0 encoded like - a strange exception is thrown like
>>> "org.eclipse.emf.ecore.resource.Resource$IOWrappedException: Value
>>> '#xA;&#x' is not legal." The parser seems to mix things up. Note that
>>> if the XML version is slipped back to 1.0 everything is fine.
>> Who's throwing that? SAX?
>
> Well, it's deeply nested. I try to illustrate:
>
> (my code)
> ...
> Caused by: org.eclipse.emf.ecore.resource.Resource$IOWrappedException:
> Value '#xA;&#x' is not legal. (platform:/resource/...
> at
> org.eclipse.emf.ecore.xmi.impl.XMLLoadImpl.handleErrors(XMLL oadImpl.java:83)
>
> at
> org.eclipse.emf.ecore.xmi.impl.XMLLoadImpl.load(XMLLoadImpl. java:191)
> ...
> Caused by: org.eclipse.emf.ecore.xmi.IllegalValueException: Value
> '#xA;&#x' is not legal. (platform:/resource/...
> at
> org.eclipse.emf.ecore.xmi.impl.XMLHandler.setFeatureValue(XM LHandler.java:2663)
>
> at
> org.eclipse.emf.ecore.xmi.impl.XMLHandler.setAttribValue(XML Handler.java:2717)
>
> ...
> Caused by: java.lang.IllegalArgumentException: The value '#xA;&#x' is
> not a valid enumerator of 'MyEnum'
> at Foo.impl.BarImpl.createMyEnumFromString(...)
> at Foo.impl.BarImpl.createFromString(...)
> at
> org.eclipse.emf.ecore.xmi.impl.XMLHelperImpl.createFromStrin g(XMLHelperImpl.java:1621)
>
I wonder what the actual input being scanned looks like?
>
>
>>> Any idea why the 1.1 works for most model files but not for those
>>> mentioned?
>> I'm not sure I understand the message. It looks like it's joining two
>> separate entities...
>
> Yes, somehow the XML code is interpreted the wrong way.
Decoding entities is done directly by SAX
>
>>> PS: I recognized some code in the XMIHandler.processElement method
>>> which behaves different in case the top element is the mentioned "XMI"
>>> element - for example in that case the super method is not called and
>>> "processHeaderInformation" is never triggered. Is this a bug? What's
>>> the intention?
>> Probably a bug for some untested path. A bugzilla with a self-contained
>> test case will be a good thing.
>
> OK. I will try to come up with a test case.
>
> Even if this is a bug we may do some "best guessing". One thing I
> wonder is why this works if loaded the first time using
> getResource(..., true), i.e. loading on demand, but fails in case of
> unload(), reload(). Any idea?
No. I'd be really curious what the XML look like. It must be different
in some way... Either that or the options being applied are different...
>
> Jan


Ed Merks
Professional Support: https://www.macromodeling.com/
Re: Resource reload problem when using save option OPTION_SAVE_ XML="1.1" [message #640735 is a reply to message #640658] Mon, 22 November 2010 22:46 Go to previous messageGo to next message
Jan Mauersberger is currently offline Jan MauersbergerFriend
Messages: 120
Registered: July 2009
Senior Member
Ed,

> I wonder what the actual input being scanned looks like?

Well, after a lot of painful testing I realized that it is rather a
problem of "size" that actually character encoding. After reducing my
specific file below 32655 characters, the file could be loaded. I can't
be loaded if it is one character bigger. It does not matter whether that
character is a control character or not, it seems to be actually really
XML source characters so removing &#xD; allowed me to add 5 "normal"
characters somewhere else before the problem occurs.

If the XML header states version="1.0", everything is fine. So there
aren't even 1.1 control characters in this example.

I wrote some small test cases which are periodically increasing the
model, saving and reloading it. After a certain amount of iterations, a
similar problem occurs, totally different meta model. Strange that it
occurs at different file size ;-(

Still have to check whether it depends on model style, i.e. root vs.
root-less but I doubt.

Is that somehow ringing a bell?

Jan
Re: Resource reload problem when using save option OPTION_SAVE_ XML="1.1" [message #640736 is a reply to message #640735] Mon, 22 November 2010 23:11 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 33218
Registered: July 2009
Senior Member
Jan,

No, that's totally bizarre. It sounds likely to be a bug in the JDK's
SAX implementation...


Jan Mauersberger wrote:
> Ed,
>
>> I wonder what the actual input being scanned looks like?
>
> Well, after a lot of painful testing I realized that it is rather a
> problem of "size" that actually character encoding. After reducing my
> specific file below 32655 characters, the file could be loaded. I
> can't be loaded if it is one character bigger. It does not matter
> whether that character is a control character or not, it seems to be
> actually really XML source characters so removing &#xD; allowed me to
> add 5 "normal" characters somewhere else before the problem occurs.
>
> If the XML header states version="1.0", everything is fine. So there
> aren't even 1.1 control characters in this example.
>
> I wrote some small test cases which are periodically increasing the
> model, saving and reloading it. After a certain amount of iterations,
> a similar problem occurs, totally different meta model. Strange that
> it occurs at different file size ;-(
>
> Still have to check whether it depends on model style, i.e. root vs.
> root-less but I doubt.
>
> Is that somehow ringing a bell?
>
> Jan


Ed Merks
Professional Support: https://www.macromodeling.com/
Re: Resource reload problem when using save option OPTION_SAVE_ XML="1.1" [message #640848 is a reply to message #640736] Tue, 23 November 2010 10:41 Go to previous messageGo to next message
Jan Mauersberger is currently offline Jan MauersbergerFriend
Messages: 120
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------020404060303050003010804
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 7bit

Ed,

after some more testing and reducing I think I have a self contained
test. I'm not anymore sure whether it's related to control characters,
however, it is still only reproducible with XML 1.1.

The key aspect I found out is that we have an own resource
implementation that extends XMIResourceImpl and overwrites useUUIDs,
returning true. I created a simple meta model (single class, single
attribute) and store instances in the resource until the reload crashes.
Note that if I create EClass instances, there seems to be no problem.

Attached the self-contained eclipse sample project.

I still do not see the overall relation between XML 1.1 and the noticed
behavior, but maybe you do...

Jan

> Jan,
>
> No, that's totally bizarre. It sounds likely to be a bug in the JDK's
> SAX implementation...

--------------020404060303050003010804
Content-Type: application/x-zip-compressed;
name="BugTester.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="BugTester.zip"

UEsDBBQACAAIAOtcdz0AAAAAAAAAAAAAAAAUAAAAVGhlWE1MQnVnLy5jbGFz c3BhdGidkE9L
AzEQxc8Kfocl987ai3jYtRRZwUKrtKtXSZMhHU0ncZIU++2tf4rioUhv84bf ezxeM3pb+2qD
kihwq4ZwripkEyyxa9VDfzO4VKOrs9PGeJ1S1Hm1Eyc/CjnLtnohtq1KYlT1 8fw8HbKq/wsf
Ik3gPRnEARpPMSE82wxeFzarXVWYzLun67tZP76ddfP6L0ecUVh7sLgsDgp9 O1FgkTVbLfZx
2m8j1hO90YtuMISLIypFi2CCIAi+FhK097444nQoKpQcS96nLelrtKb+vfc7 UEsHCJs/RaHT
AAAApQEAAFBLAwQUAAgACADcXHc9AAAAAAAAAAAAAAAAEgAAAFRoZVhNTEJ1 Zy8ucHJvamVj
dL2STWsCMRCGzxb8D7L3JvbWQ1xhW3rSUlCh15hMY2TzQT6kP98kZlsWETyU 3uZ9Z948wxCy
/Fb97ATOS6MXzROaNzPQzHCpxaLZbd8en5tlO30g1pkjsPAKnjlpQ5pO7oRo qqDdHuBzveqi
ILjo3GBGKdChJXiosltf8UXgkdpH2fONBZZVlS8pSjUvTmUZJxCwXloP6MgD Ysalgp5oCYD7
XSElqBMxs33VeGwQfEW5i2s5oDXV8gt86P4Xu2EHUPRPoNUZTp54ITqo0xdx +9qXfl6gzN3K
5JU/+iikfr8KDHUm/vyF8f86A1BLBwge7kJO6gAAAJ4CAABQSwMEFAAIAAgA EkZ3PQAAAAAA
AAAAAAAAAC4AAABUaGVYTUxCdWcvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpk dC5jb3JlLnBy
ZWZzlZDLasMwEEX3gfyDIHthJ6UNAW9aGmgpoYvQvSxdmyl6MZIM/fvKpF3H 3ohBzJn72F0L
xCVMYn8QzfH0cDwdnsTL61Xsm7bZbqAtxQQZGQMYXiPJCZwo+K7dbgKP8n/l 22SpA6M+LpIF
18FghJfkLXm8J37+yZg/O3jVW5ilB7LiEfnTqjwEdl0rH5eSxZcE8xG0sl3N kMAT7rMuWlI1
6xIlg76Mcg54Ka4Hd1UWrPJdmT9wtvalmOZCVrIpFNY40wowcqg6TqpUq8hv Bj7TQNU1mAMv
peGLW8vezN4a/QVQSwcIkH8++uAAAAB1AgAAUEsDBBQACAAIAPxcdz0AAAAA AAAAAAAAAAAe
AAAAVGhlWE1MQnVnL01FVEEtSU5GL01BTklGRVNULk1GdZA7T8MwFIX3SPkP XtiIRRkYXHWg
VRbUoIgixOo6t+kVfgQ/oqS/HuehEAYW6159R+fc44JrvIDz2QdYh0YzsqEP abIPupKQFTNd
4OOCXrkCRu4aGWrUw7KQU6/ORqKYFO9X+CyO+1BvHepago82O2/Dr36dvMo+ SO5cyf2VEbrS
6srYIdeaFiuwf5KPRnCJN+5Hu+m0Bb7Bd0ALVd6BCIMi1y1aoxVoz8gLb/kp zzb0KU3yrjHW
ZyUXX7yOFRxXjYT7NJknivFdrdFNpsnsn01xjBhbUxASGwdUGAvUBu1RjT5r BuoS5yjYtujw
jBJ9z3YWYLziXzXtFC7dnoXHdqxdDj/fMyL5rU+TH1BLBwjylQkODAEAAN4B AABQSwMEFAAI
AAgA+lx3PQAAAAAAAAAAAAAAACEAAABUaGVYTUxCdWcvYmluL2J1Z3MvTWFp biQxJDEuY2xh
c3ONkstO20AUhv8hbkwSAyGlN3qjkhfhogzulqqbtEiWnC5og6ruJmYaprJn kMeu4J3YsEBI
LHiAPlTVYztU0C7Akn3+c/F3js/41+/LKwBvseZijmFhUkwtHwml/cAPXDgM A5NNuYwTdWQl
l+l30iaT/DhVXKVHCf86CvekNUUWy5B8hmZ+qKwfECy6QduhxDulVf6eIejf ykT/dohNmhrN
i1wlfLwX7qzvMzhDcyBbYOh4eIBmGw0seHCxyOD370VYipSWn4p0IrMvYpJI hl5kYpHsi0yV
/izolOOX1bdWQeN3fKGNPklNYbcZ3tzZk2G+sHI8Dj8QrtFf/8bQ/lztaVeV jVole/BD/BTU
7aOOE2OVno5kfmgOXDynhjcm8PASrxgW40yKXF4vnCG6x7f/V1GfYDaD8Gsa TeyFWstsmAhr
pcUarbtBfwfrdsudk5qj28U8xVukhuSX+c7G5jnaG1sX8M6qoiV6tqtiRi8O 0CX1uPI7WEYP
qNRDrFDMwSPK1cAtsqwkOKd/Oc0qElQMr87OGA08qbyneEbWwSpe4DWpHsVW UV+sNn8AUEsH
CERp1YarAQAA5wIAAFBLAwQUAAgACAD6XHc9AAAAAAAAAAAAAAAAHwAAAFRo ZVhNTEJ1Zy9i
aW4vYnVncy9NYWluJDEuY2xhc3OFUdFO2zAUPYasgVDWUjZgDAZIfQggYXUT T0W8oCFVSnmA
DTHtyQ2mNUps5CSI/dX2hLRJfMA+atp1UhBjD1hK7vH1uece+/7+8/MOwHus +5hgmBkUw4z3
hdLtjg+PYdfYIZdxoq4yyWV6QdhYyW9SxVV6lfCzfu9YZqawsTwUcW7stx6l GWp7Sqt8n2Ey
3Dxl8A7MuQwwiek6XqDG0IiUlkdFOpD2kxgkkqEVmVgkp8Iqtx8nvXykMobZ 6JGvLsPL2EqR
y/vODFEYPTUamzQ1mhe5Svjn41538z9GdRU7FuH3al0fc9TyUcd2J0AT8876 K4ZO+I+b5xu7
+xdWdRg2niUzBCfVayp3/2nXZOdSXAt6so86Tkym9LAv85E59/GWCA9W6ljF O+qUEmZYCL9G
rownQg/5SW6prHRS72kt7UEiskxmWAdNCG5N0EeTob1P6ANF5jJbt5j6UR4H 9A9KWgiPDmcI
1SsSxVmKNBc0xgL7xHHc4BeaX7a2b9H6/qBSK6t2SoWFijVWcOg15ZypxZK/ hDcUPSxjBWuE
WpRjqFazCn8BUEsHCIpHTPulAQAAwwIAAFBLAwQUAAgACAD6XHc9AAAAAAAA AAAAAAAAHQAA
AFRoZVhNTEJ1Zy9iaW4vYnVncy9NYWluLmNsYXNznVd5eFRXFf/dJDNvlpc0 HRpgiLUDpHZC
IUPYCkmohGQCiZMJnQxL01Z8mTySBzPz0nlvEHAXqri0VK1LQau0Km6ohBqY ol30s7V1X+uO
WrXW5V+/Tz8/4+++SSYJCV9i883k3nvuOeee/Zx57r+PPQ5gDf6moEzA258f tCLdmpFVUCFQ
vV87qEXSWnYw0tO/X0/ZAoGsltF3G/ZQ4+o2M2vnzLRFYGwSsdfOGdnB5qmY jZOYC+o0y9Jz
tmFmrXbD0vrT+oCA6BPwtKTSRtawbxUoD9fvEqhoMwd0H6pQreAagWsmn2hL k4mKaxEQWDig
W0ZOH2idYNtra3becpj0eSFwnQoPvB4sFGhODhlWyHIEDA1pVihr5jJaOrSn OxZqbFgd8nlD
4SEzZxyhuATbWn99yMj6fF6vYUtWi1W44PZgiUDDlaz2dKfJozEUDIUPSkFS kwxCRepXqFDg
piIxI6vH85l+PZeU+kvzmUTfpeUMeR4HVlKR1IFubXj87G5xrONDOZapCMFP C9kUQsAfK3mN
Zq/IcKVdwnfMdIo0qy96KKUPOw5QUE+PTGKVbjy4WXLXLduDVdw17DNNHyJo VLBaQHUoDDPS
YaR1lbGzVqAqldM1W0/qmWEJFVgXnvn8LALFpvJqlm+sV7FBKqcO6Gnd1nuy 0UPSfhvRpGDT
tJDsPWzZekZFM1robjPP6Kwp8dtB/jZf0bUM2d6KLQpePaHs9GsVrdgqoAxL UJqmq5kqejHu
aTkpW7uKKDrowkHdbu23zHTe1ndo9hCjLFw/UzsftqNLQafADWZuMKIzwIct PaJn9kVSZiZj
ZiN520hHdiY6VbwGMfq8aEVpCwIF1s9ixPrYHLyaFcQF1l6JpafMnB7J6ZaZ z6X0iJEZTkcS
46de3e7k2YduLFNwG0OqFFF1jT7swDI/ktilYKfAijkYT+GpYjf2CCyhtSag HVrKNnOHE/qg
weQ5LNASnqnQVTjWjRPXTVA3+9GHOxXcIbDx5fJQcRdey9SmjNFDtp61GP5J cxyL2Sdw7YRr
HQMT1OzB6xhwzAk/+jGgIEXPTcNQoWMfUYZlTG6cJZxmCbCZIGnzIRUG9pfy a0INgVh4zjiY
t2EZMWmaYFKAUjGN5nJmzocDMixMmmJSy+2aNURNfchimQc5hgyr6N5d0URv Z0/cA+pdznIo
rwc8eD3LezTe1tPeGd/mAb3u2pnsWLXRgzewULVHO6KJvZ3tiWjH3kS0tye2 M0kWXrwJb1Hw
5olHHbm2mmZa17Iq3oq3sSwlEzujzOnYDAR66ChLRZFzazLZ2ra9OxpPenEP 3qngHUxXS2O8
65FeZxn3torjeBd7oN4Z7022xtvIe2FsNkR65h68R8V7cS/rVNEzRYRitEyj IfIJvE/B/QyS
aRcq3o8PsO5Yuh1np7yi7pQqth8fxIcVfEjgpnm6U8VH8CAdwpCWjVfP2mwS N86SZ1MDJhpj
OlDWU/iYgo8KLJ0TWcVD+DjdrA0MXKVm9nlwmr5uXLN23XqpxiMqPolP0XGW dlC2vfAVeVVU
9oyKz8gG4M5n06Y2IEGfU/F5h7AIOIWzKr6IL/Fx6igf75w1fU7gnIoRWbCV waKRfXgUowq+
Mr2POKZWcUGq49bvzmtpSz5SUPEYLklxjSO6M1B0yibwNRWP4wlipvXsoKz9 vOiSLeYp2Um+
TvxwV/0uF5y/f7PxV2i5QTn6zNKQebnPaZdV0xshmeZzBr0wZ5IT05I2WDnf ZGddJtGC3PSC
LMu/wC1XYXIoYxQbxp7uzsRMQvLz5EqVaf5lhzEqI6GnOI2UMnlqfZE40ukl HMZOplEOUdOT
rHixhkvWySXBminYQd3m+NzqSZVSYfk8EoHUhkz/aYPZ4eGJ4WzTTElb5lPl byXj9rmfb7mK
CaMlNgqeVvACJ4SX5TBOgb1FmBN8XtnoG6SwLGed2ayecyZsnQPiXwQi/2dr ZbaVdp6JNoul
TIRyJkQ5fHKI5s4nx2GgerGcz50bD2F+4qk8xbnKv9qAGEXlSSgVZ1BRfh4L AjXnsSgQPI/a
cw7R9fxf5bBehGoEUYNavJKnMn5v4NeFMnUL3SlH5nHeEQiHu2vFBSw95+BK Lm4HuMihVosI
WI46rl7ciFcR6ybuK3gTlmzK7+W+ChD3B1YEVl5EQ+zmUawbwS1cNvPbdhHb ui+h+/YL6Ilf
wg6uiaaKVQX0ChRwO+vf3mBFAVo5dq9aWcBgGZpcI1hwEtVB1zPwX8IBUmSe uIQs1+Emd9Ad
uDtgjSK/m7uDgUNyN3GpBJXAkRG80blVAm8f347gWAHvFmjyBD0jWFTAfWUo wbxB7whqHVjQ
VcADAkFPASfLsHvi6C0eA59o8p3B6fIN/jMIl8jVoBr0TaNWi+jH/KLGX+07 PfZ80BV0F/Bw
EePTxHAFlQI+W6Jo8rs2qGfQGPTXkPYLZXgSJ5oqHRssCVYW8GWS+EZx/uSk NY6pokYN+gu4
KHB67Nmitb86iiflch2+8cCpsb5zjpekRx9yPLaMgbWcHqvDAnqxlrDl9OBK /sxo5c+KLmzi
CNiCfdiMYVbxI9iCo7y5D1vxIMf9R7ANZznIXyDmUxzTf4AYLjM8X0AP/ozb 8Hck8E9OamMc
jqs4Oy/myLuU7g2jTzTiTtGEu8QWjphxDo0HuD/CcfEYesQJzogy0h5m1DKG 8E08zZNHHMcz
+BZjrFbk8SyeY9QtFxl8G99hjK8UA/guvkftukQHvk9ZXJwzV+CH+BGj96io xI+5UyjzP/AT
/JR6X8Av8DPuvJT3LJ4nlg8vMQF+Trifci/GL3mrUsou/Aq/Zt/dTDv8hrcq Jb7eua3EbylZ
iO8X37pceusylHHK35GbzLbD8IzRnG4Fv1cQUbBdQVLBHxQ2cVroOPwzLxRk nc8J5/Mo8B+4
RN0YGlA5J7KCU8zTFWX/YtqX4Y9OKv+JbgGWUNwdxR6MF/n6S24vfyy8iL+6 vf8DUEsHCM8z
voW4CAAA9BAAAFBLAwQUAAgACAD6XHc9AAAAAAAAAAAAAAAAIQAAAFRoZVhN TEJ1Zy9iaW4v
c2FtcGxlL1NhbXBsZS5jbGFzc2WOuwrCQBBF78bHajRgoV9gkzQu2FrHykcR sF/juCRsHiTR
j7PwA/wocaKIhcUww72H4TyetzuAJTwJR8CrdVZaUtF7SXQFJqm+amV1btT+ mFLcSPQF5kVl
FMU2KWtSlJ35LipS4bY4kQ0tZZQ3AtJQs9MZCUz9YPN7FDVVkpsVA/UXmPn/ fXAQcKPiUsW0
TixDo4/XoiVZQqDD02N/h0UlBmiFh3A5YbjNMX4BUEsHCCcInQetAAAA4gAA AFBLAwQUAAgA
CAD6XHc9AAAAAAAAAAAAAAAAKAAAAFRoZVhNTEJ1Zy9iaW4vc2FtcGxlL1Nh bXBsZUZhY3Rv
cnkuY2xhc3NtUVtLAlEQ/kbN1W3La2Z2eVaCFnotghAFQSxQfD9u07K268px DfpZ0Uv00A/o
R0Wz674YHpj7+b4ZZn5+v74BXOPMQIZQX6lg6bM9TkxfOVGo3wzkCOW5elW2 rxau/TCbsxMZ
yBMuQu3a7PjecsU2B8/ih5rtXookFHkwGk/uR90eoTHcxX5DKNwKw8KL7gjZ dmdKyHXDJzZx
gJKBQ8J5ivNEb4MH4lsooyKYmIHQbHd2tymCULNgoEAoDb0Fj9bBjPVEzXwm VIeho/yp0l4c
p0nL0awi3vAQKv+pZfSyy9EmeFTOi3J5xwRpRX6b43CtHe57Scut+a7i/cpG ZQUieyIn8axy
m6zoIkzJ7Et0KTZ+xiesD1Tfxc2gLtoUC7SQRw1HSTY+WwPHiW0KHQTaSiqn f1BLBwiXcG8M
NAEAAPcBAABQSwMEFAAIAAgA+lx3PQAAAAAAAAAAAAAAADEAAABUaGVYTUxC dWcvYmluL3Nh
bXBsZS9TYW1wbGVQYWNrYWdlJExpdGVyYWxzLmNsYXNzfVHLTsJAFD0jClQr 4gtFxQeygI1N
3GI0hGhiUqsJhi0Z6rUplpa0xc9w69JvUFe68AP8KOOd4iMm6iQz587cM+e+ Xt+eXwDsopLB
mEApkv2BR0YrgTNpX0mHKqYbUyi9KINxgXxPXkvDk75jnHZ7ZMcC6Vbj5Mw8 FFg3g9AxyPbc
QUQG9S/ZDkIyDpuejKK6gD5idjpW44T55b/4jTgO3e4wJv6T3WO/78b7Aqlq rS0w3gwuSMM0
ZjLICSz8lrOOPGYFNDq2WucNq8nBCuZvxPoUC83rWMAi0x2KR16BzWrt/2o0 CCzpmEBaSRR1
rGBVIPcl0bFkn3Uqf+t8V6m0SjoyyArMmK5P1rDfpfBcdlUqc2ZgS68tQ1fd Px4nW8EwtOnI
TRg/atpRI+JmH/s+hUmyFHEfP8eYFhwtxVMfQ1Glz1ZRhWZkFjRMMk7x7YBR raUH6E+YE3hE
ITGXlbl2n0is85lL5G750x0KuMFG4lF7Mzm3UGZUsoJbtZ3W3gFQSwcIQemx qn8BAAB3AgAA
UEsDBBQACAAIAPpcdz0AAAAAAAAAAAAAAAAoAAAAVGhlWE1MQnVnL2Jpbi9z YW1wbGUvU2Ft
cGxlUGFja2FnZS5jbGFzc3VTbW/SUBR+rmMUkG2Icw6VbSoqOKXb/KaLSUMg acIKoYX4jVy6
K3aWlrRF4s8yfjF+8Af4o4ynpeNlYU3uPfc59zn3nvOc27//fv8BcIZ3Eu4w 7Pp8NLaFrEem
zc2vfCgkJBhyV/wbl23uDOXW4EqYgYQkw4HrDWVh2tbYF7IYfaa16wm5Hkcy bApNuagz5JuL
eD3wLGf4gWGr5jp+wJ2gx+2JSOEuQ3KWAIMkNL3f7agpbDMcfgmC8XtZnk6n 1RmheinkONfT
6glDJqS3O/WG+okhLVRNNxStRhfvNdeVRJcndeWi3SQGUzdIAVDxM0+/X1c0 rWUohtrSdIbs
tTusJKSyBbVRV4xup96vtbqaEe6Rhqlz0sOxgo8MG+VKjyFRcy9FBgc4knDI UIwTsmhezUql
dRZP8YxiwhMY9suV9fmnKd9SFjncY9hpWo7QJqOB8Aw+CMXLN12T2z3uWSGO nemhCPRY3SM6
95bW1Wzu+6TP9pze1/iIYkq3xygBtXQwCUJdc/O4BjcD1/u+pop4h9gZ3Z14 pmhYUdorNVbD
F0Pyq44jvCgr4Us4XQi4wi41rUB43PapAddLeqDUAxqbSKEAiWaSIewSMoSz S3iL8M6NfRKX
1gXkcX/u3yX84AbeW8IPCe8v4QISdOojPCbPE/Ickw0/6ReKP/H8R0R6QXOG LHCOJIp4GXnD
v+4VypGt4HVkj/Em2nsbzVXIUSTDCY2zZPo/UEsHCJ1zK0MnAgAAzgMAAFBL AwQUAAgACAD6
XHc9AAAAAAAAAAAAAAAAMQAAAFRoZVhNTEJ1Zy9iaW4vc2FtcGxlL2ltcGwv U2FtcGxlRmFj
dG9yeUltcGwuY2xhc3ONVVlT21YU/q4ByxaCELOEJCRxgdYLDcpCtzgJBWJa F4dQ7LilWyLk
ixCRJY8kh+axD/0zfaI8wCTMtHnqQ39Up+fKAhNj03pG1l3O+c53Vv39z5s/ ANyBIyHCcM3T
anWLqyb9q6VgvazpvuO+KtBaQi9DynENleuWWfe4ymtbtHbcUCP/jnCUYSTE eweKode0TZ9h
PJ0pdhLIkcSSU+Vx9GNAgtLVaH5N019oBp9e54bp+e4rBYO4wBArrJbKC6tL eYZM8X+q5mK4
yHBj2/fr91R1d3d3tklttsrVkOTt2Vv9RGlYwQhGGfoN7udPfJpLF3e0l5pq abahlnzXtI1c
V+PHjsZxCZcljDOkO0vWrYZh2mpebNaCtXDxCkO2C/RZhZxMRiYUXMN1hh7L MRhGT3N9srnD
dT+XqchgSCp4D5MM0fsiRQ9JIZ2pSJhmGG5p5H/Wed03HZvhQtG0+Wqjtsnd srZpcYZE0dE1
q6K5ptiHh0P+Nm+rgbFuqY/zFvxosYNVkhko+ZS+x1o9wJfRgyTVjL9tepTC 4rlFTNpR3eWa
T7Tm090StGRpntc9f2HM+qlx5iTcZZg4D0fBR/iYYkX1EuzNLZO7hUdBcAsi 6p8q+Az3GJQm
sSZnhovt/ZGTcJ9hshWTgmVxQ7MWXKNR47Z/EiIJlLpL7fW42DCtKndj+JyK t7zNk7pgk0zJ
eIBFkfilttI4LuOKcDSvYBlfMEjkxqpWI34jxO+MsAArKPgKKxRorV7ndpXh Zsfm6MKPOvEx
w9VU0vSStuMnteRLzTKrTbZB7ISNJwrWBJ2Y7zS1ZeSwSDZ5EGOG6+fnVsJT KsKzpSJqREZZ
FFTUCxMx3qGkwloaomg0D8KB0mGshTc5keofFPyIn8LhcaIymf6vOUV8n7fP 0xN1mcBam0e8
7nKd6ogCf3m9YftmjVdMz6ROWbApoJqoEE90YCsBLR2aSc+wpcDAtujF1iQd 6+wUGSw5DVfn
y6YI1diZhpsVVqi2C7bN3SD23JNQowSd7zGl9ng2U2lSs9DTR9+qKOKQEKNd nHa/IEIrYHof
cmLoNRIRvEXfSvYvDGT3VvYxlj3A1SOwjUPc2Askh2l6TxHa+7S+QmjAJI3U KSQwTTcpjCKN
CWTxAd2MEfogyaToDHQjIUM3wAw99MEsS5iSCJRGZkjnLr2Fkb7sIT78nRaR wI5Mb2AOvTQJ
BK7SFMJNzNKbQcWtEOBXOhWy8zOvcZvhN1rS+G79EuTPJ3tHyG0c4cFGYv4Q CyRJs+QAXyaK
9HeA1UN8/SeJNl0cpDfwEOOYp0/AwolbZCI0L1brKBEB4VYvIuO9tKaBFFJa JGkhLx+hTGGs
FGf22hxboXQUTyHLIXKMdt/g2yAmG/guxLsTxihGrnz/Fs9aaNHg/OmpEMVC pDg00u/BZsBX
D2WrwQ0lP5Al7vvg7WjPA7RI8JjB/w5eBBypCWHBjsb/BVBLBwi2dz0yTAQA AAUJAABQSwME
FAAIAAgA+lx3PQAAAAAAAAAAAAAAACoAAABUaGVYTUxCdWcvYmluL3NhbXBs ZS9pbXBsL1Nh
bXBsZUltcGwuY2xhc3OFVdtzE2UU/22z7bZhC6WUUmgLDQRN00pU6o0g0paA 0bRU0gsNKm7T
L2Vhsxs2Gy6jL4y3Rx3HF14cbzPMODwU1HZGZhyfdMa/yXH8fbvbkKYFM5Pd L+fyO79zvnNO
/v73t98BvIjrGloU9FaNcsUSKZPPVN4/Z/nQoCoYddyVlChaZqUqUqJc4tlx Q9PMlLMsrIwl
ysL2Ao82BZ0hWgDE39PjU5nLmTOZs+NzuVkF3bmrxg0jZRn2Sirvuaa9klag 2kaZtu0nGck2
vVMKIonheconGaIDCnbq0NCuYFfOtMV0rbwk3FljSeJ355yiYc0bril/h8K2 kz5MFBHs0bEb
OyTGXh0dEkP1rphVBX257fMmHV3kPcMzi5OWUaXlUGI4t30dMr5FugP9GNQw oGBwU/YzRvGa
sSLiOdMTrmFVdRzEIbLLj0/N5DIKDj4dVoG2IrxpvzQ95LBN4bTqhsHexFb9 8HyUeR/V8Qye
pYWYdjyzZBaZmmNfENdrpiuW/VIXNAz/z2U3+soyRZHAiKztqIKZxBMSydpM 3DaszPmlq6Lo
pbPZBpKhbKskoH1MRwrPM8WA9m0Fqa1hik657Ngp27dINXJMy/7RbHEzKI/m WMvBqZN3W7w2
ZVT8XtHwkoKu5sqxScQ54SnYl8gWCsNbKUqCr+kYQkz2WFrHy3hFQUdJGF7N FdkzCpQsg7qi
6lg3GFQpsLtlSWZvV4REz0v03sQ29QiyP6PjMI5I8LM6xjFBd+Yyb1g1sXmG Qi92lZizqxJV
TWQlRgQ5HVm8JTXZan5DU4hiDDM63sEFqbleY182dc8GkYIEmdUxhWmG95yg NpLdgo6LsqXa
iTzjOrduS8uCjjnENLzLxJoLOlErlYQbxSW8L3vmSDs+oPdQQs79iSEpX9JR BLuxzahUhM3D
6HYNvUUUAKclQkki8Or6E5NPteNVtPFiapYnl8ATDBVE807NLYqzplwoux7v h2PSgzsia9vC
9QdVVDU4HNHtZp9Zbkw/YqxchN9WtGBA7jMuYVXuJL6jfEaxg1qdv4b5lp9W 5Wd0PuChBbt8
oxZfqbLxunypBNhddztFiXTUk+voTj5E56/oeey9k8GBND2O0+Okj6AH9ujF Ph+rD/tDrGN8
S536EAdW6xhtvizT4KuGvoochtA3Ffq2Jn9BT7PzdINza92ZzR4632ElJNGj 0nkqOcIckmuI
30Vv8hESi0lVHZWadVD6nMwu4oP3EgxY4PMi67TIqhQQ523LYEMBYBhMnl5g EHkRQ/wXbCe9
45RS8g/iGsdDkeMc0vmQGap8x/p/8n37fLrBdw8pvLqa7B8YXMeJ1TqVoNDL 6EGJ5bziU0gG
IHUKMV7A6z5IjNf2hn+VMZzmKeKTUdHSo1LP0Q+JfESNxI2HRAY2ERn9A2Nr mHyQ7B9dR6a5
LC65ePSoYRA3WelbDWWJ1znF65ziOIc3w7JIJrJYXCUhkwo1ku/hkEn/JiZs u4DIOt5u5nGH
PD6m/Sfk8hnz/dzn0Rug1XkcDnlsRNd45g4Ko38RRp8Io6cbozP4X2x99sef 0NR72B+5h70U
Sskazt+FRoGq3pfs8vebbuxLsvuKsb9uYDVRZzXRwGoHtJ6u00oLvzLwXL3z PyWQdBtjZ8zf
RTsHcXH1ES4tysM63suNdF9eg7EwEhDioWt4DWJhZA1XHjfQAY4K8A0Rv2W/ fYdD+J7/tj9w
rn5soDYWUutjMU1cDalxwehUX/OnzkLZXxtcirBRaev4D1BLBwjkVl3qJAUA APsJAABQSwME
FAAIAAgA+lx3PQAAAAAAAAAAAAAAADEAAABUaGVYTUxCdWcvYmluL3NhbXBs ZS9pbXBsL1Nh
bXBsZVBhY2thZ2VJbXBsLmNsYXNzlVf5VxNXFP5eEkgCT0RAqlYFKSrEShC1 tQZbFUNNDagE
odJWO4QBRrPgZCJKd7tbbdWudF9s1XP6g0vFg57TY3/t/9B/paf3vkxChAQs MDNvu8v33Xvf
e/z9790/AbThmhsOgVUpLT4W0/0Gvf0R1T6gRY9rI3qI2m64BNYnzRG/Ho0Z Yyndr8eHqZ00
bYngA4tLBWpsfQ+oEpCZ4WBHTEulBFaHC+vMzAcEPEYqlDAsfUhADAh4jVSH qWuqvygzZWgx
Y4L7nnZSQwNPCzibmvsEXB3JId0LgSUSXpQJLA4bCb07HR/UzV5tMEbuVIWT US3Wp5kG9+3B
0nalxoNagbpRyxrb7vePj4+3ZFxvGdL9NrZNLa1eLMMKN5bPBtypRa2keVri Uawkt/VQd6R3
V3dHUKA2XGhhoAxOrJaoQZ3A1qbwMe2k5o9piRF/xDKNxEigGFFZ+eY+RrpG wg0Ptx6TKEcZ
t9ZKSEbvskYNorwuPG+kiXMXwxdY1tQcLhTEgBcbsNGNx4tmRDYZGnv0ESNl MQ0t8FOEZlho
LoZntmignKxtkpSnmwXKR3QrmMulLQVoWkivUrdV4gk8SWlC6gTW5avZP3hM j1qkZs5QGVH5
FAeowosAdrjRLtBQxBi/bYOcAZSRjcX8yltKvgWwU2IXdlMS6naJ1DcVxZQp EnZsj0QQFQJL
o6o6bIUdyYSlJ6wUr3hWYi+vWG7kaqbAquck9vGq0mFT1yd0JqtLohv7iayx NJG1rQBZD0Wf
QKU1qs/aDRZFLGp2aWOq8tyI0KrZklQ9FKaMoEBFrn20W4vTQGNxenZZlBOD aYuJfR4DbhwW
WDkflRIv4EWqUM4yyqd01EqbWqyTGE2bOoVibQFb0WQ8nkz405ZBm2CYUpaM HcHLbhylalxw
MSeiRmFrChWgzI0ohX8hcERZjhN7MyhQuzPbjMCIxCgMgWrGaU+EEilLS0RJ W0NxQvOVHJeI
IU4beibjshv6GkayYLomJcZwgjy3hfPANDTNLx5q7vOADJVm4LG2tMRJjAu4 U7qVSYqlhXaG
Pl5LW9EEry3ntakDpj5snOLxVyVe43GPGj/UE/LgDQp43u5ve9SivCOv2lpb 2zLly9n1lsQZ
zp0KlTvpMTphTo/pKa7odyTe5YrmMAW76EiKBWN6nCqOE+V9iQ/wIVWXNjQ0 y+9sLVHifkSl
8kA4PThPFERyFHwicQEXBcq4urOxGFqAyjxbcwZs0gYGBh4inJ9KHEIfY/1c 4gt8SX7YJUQ6
6CgqnlF7NEtjogIeTNLBk6DoscJvJL7Fd8SmgpOXHVeLQpop9nn9NYYN3SwA dO5IKDSHnwH7
5yF2HEbxg8SP+IlQZLK8R08l0yaX2I7/cXCZtpQ/K0476WLaSfMPDuI7ouY6 Dd4ja+cc6i1s
jmo1lEjopsKip9y4Qvev+U9LqofsOYw1hMhJTwlccPAtgy6PZXyvoq+D7xrq K9XXQ7+LUEGr
F1Ovmb78U+K8hcobalmVEnbQezupW4FqNcpPTU4soswBy31VS2/ikTtY5RO3 Ue9z3kYDvxpn
VNWSV3yV9aKexM+Qukm6l21WamVGCdZhPX29aFL+sIF7toHoTVROYslNkKFp tDpwHyXX7d4W
B/6CmETlTP8Kyu5BHL6Dbfch9rlu8dz2aTwj0O+bQgc9nfSElIBvGmEnjV8n M07l6jpyAQgR
zjDa6WTdiYPU60UX+qk1QIV0BBqO5lxvJ7cPKNcPKmKdNSs73eihmV7stoH4 6ctASnx/oP56
jpVSNTiax0KJzYLgerWFd9Bqnqtm4Wn0U5Sn8RKTMDhb1Yk8VdU5VUPQbVVt th8ewj98H8tm
y0/kyXty8sFcxKN2QOrJlYZJuG74XBxrn3MKxzjy7KFrCokbOTYzgT9H2s5T wl2g/kXU4VKe
nXrbzkElIzw0uDdn8B9UqrQ7RZobswYbfVXmFCz1PkUxnMIrHMvX7dQIhDNE vSmwYRpvC0zj
PQeFmEerzladczrJxY+pP4VLtOAz+ifjK+FyVZ2lCf6j2a/7ldrv+2eAtFAF Ab8QkMsE5AoB
uEo5e43A/I6NuEWhnqKg36Fj8y7GKXOrFXjluw1wI93cfsbThCwH1UEKOQKX 8auqN/IYv+Fq
qfc/UEsHCAsOGn9CBgAA/A0AAFBLAwQUAAgACAD6XHc9AAAAAAAAAAAAAAAA NgAAAFRoZVhN
TEJ1Zy9iaW4vc2FtcGxlL3V0aWwvU2FtcGxlQWRhcHRlckZhY3RvcnkkMS5j bGFzc5VVf0/T
UBQ9l80NZpWfIqAIsoHbUAriD8wICVkgaAbGTPn/0T1GSdeSttPwrTRRTPzD D+CHMt731iwZ
69zo0vb2vnPOO/e+1+7P31+/ATzHVhpDhKVANC4caTZD2zGrOt6tiYtQ+vvC Cj3/MreRRpIw
042rfrFD64yQCs/sILfOWpV+YiVGb9uuHe4QlvP94YVjQrLs1eQICLcN3EIq gwTuGEjjLiGR
V4DRiu3Ko2bjRPofxYkjCRMVzxLOsfBt9Rwlk8omIdd31twG28xYIpCtUcJW 22orUypUPL9u
SsuxLwJpysapaXmNhuearhfap5dmJFjKYBozadwnLPab1cAs5giTli9FKDsQ hEJ+0Bm5wd7J
ubRC1ZdO04RxVdTeIffT2XNkQ7qMOsp3KUvL86XZgbtRxYsGHqta5lq1dAi1 S1oeaFpe9Zo8
FU0nLLN1wkFPt+911TfyuWLgifI5FflsSbQdLvSZipDt3hfn4rMwHeHWzQiV 4Z27amASU4Q3
g/Y6VmXNwDweETb79yCWv2Egixxv7arX9C25b6utPRu3F9cUnzBSteuuCJs+ 48oxr03rA7A9
YMd3uGGje67leIHt1g9leObVCMZb15V+2RFBIAMsss0Ef51obEy96xyl9TnM +RGOtjDEPyBT
XP3Bl58wvvHTEEZVTo8Q895hjCODY5Udx4TO8wpEKtt8V9jh4ndkrnDva1sj pTmHmj/dwkR8
FT3AQx4ntQrxSgvXlT70VFrSSrwe8UrL15U+9VTKc7d2ubpCpLQS9ShVXL1C 8boOaR0eZ848
nsZxnv2Pk4UZx1nvyUGS/2tUtIkX+v4Sr3R2mq+v9QqRZvDxD1BLBwjjVi2G fAIAAJwGAABQ
SwMEFAAIAAgA+lx3PQAAAAAAAAAAAAAAADQAAABUaGVYTUxCdWcvYmluL3Nh bXBsZS91dGls
L1NhbXBsZUFkYXB0ZXJGYWN0b3J5LmNsYXNzjVXbThNRFF2nLR1aBlu5FIGi iKC9ICMiXiii
WNukpqCmhETfhuFQBqczzXTQ9M0P8Af8AZ98ULwFTYw+mfhR6p4LFWiBpsmZ M/uy9tpr9jn9
/efrdwBXkRfgYxityZWqxqVtS9WkkrNfXJerFjfzsmIZZl1AgGHWMMsSVzS1 WuMSr2xIilGp
GLqkG5a6UZdUSpMOphXIxCBWjHWuPZKVZ3KZM8SKXjW3kGfPMHQ5caUXqqVs MgwVm0m5PgoN
ldSyLlvbJuFljwycLx7P2CObWSDE4Lyqq9YCgz+RXGUIZIlLGH5ERHRBFHCa Yewklcanw4ii
187oY5hItCB2MCGTXA2BFBEhoNPenRHRgWAIQ4gLGGboayWViBEESQNeWC6t LC5ncwyRoqrz
5e3KGjdX5DWNVOkpGoqsrcqmar97xoC1qdaokZOJMXSXLCq3JFe93Kha85x5 w1ypV8nUnyhu
yc9lSZP1svRwbYsrVib5VMBFhpHDynPFMLmUc6O6MIGEiCRSJDzPanKNWI0m kk3fy8tyIjJd
mMSUgMsM8ePiREi4QtNU5lauMXRjR4P/H8Cg4bCzxWvqiwRRTC5be0IxPE6c MF7L9kOl+Wou
3XoOw7iOmwJu0BwcNdIibmGOoXPd2DsnM800DmhN1ZuaETBP89kWKVLFkk3S kqHtfhl6Xa0O
jBZDssVHaK0EHX8XIbdk3wk5jVe4bjWA+jyn207DHC4Z26bC86o9r4Ot5nrK loJupIKuc9OZ
Fl7DeTp4froNfXBOH+0C9nkka8ixhsnG7FuA1m6yVMjP6DmS+oJTqW+IPqFN zyf072DgF0I7
GPyAgfcU4MdZWoccyBQlFQj+Ad0QacRolOOYwjnyiC4YRokIMOZa/pKbCY6H 4QLGvdJ1ouOz
0dJU6w06Am/TPzHxGsPpH5jYxSWGXaQZ9px++jV4xKg6MEetZaix28RjAQnc dTjEXFSPg72b
pj8H5rDpgD8UZ/Qyg2sejaxHI5L6iH679GfM/kDmnSOXXSvoMFf2YUca2BGq vQAb8A5VdwEn
nXfKZocxzH0a+TwMhsU2Ml+2zLzXRuarFpk+atpe7yNHzzD5ok43+AdQSwcI N6e5YDgDAABL
BwAAUEsDBBQACAAIAPpcdz0AAAAAAAAAAAAAAAAsAAAAVGhlWE1MQnVnL2Jp bi9zYW1wbGUv
dXRpbC9TYW1wbGVTd2l0Y2guY2xhc3OlVVtTW1UU/naScppwKJdSLqUtYIuG cAm1qC2JSJqm
bWxIL4motLYewgZOm9skQaeP/gNf/QM64xOtMzj44PStM774C/whznj79j6H lEACVfNw9sra
e33r+9Zee+9f/vrpZwBvY82AR2CgahXKeRnerNn5cEbbmS/tWm7DgE+g67H1 hRXOW8X18O2V
xzJXEzALpVWZv2PlnljrUqAv5QI4sa4/ItAWtYt2bV7AGxxfEvDFGRaAF+0m DBz3Q6DDxDG0
+dGJbgNdAr3NkEz0oE3AL5PpTDaWjicEOlN2UaY3CyuykrVW8iTRkyrlrPyS VbHVf9fpq23Y
VYHTqVYKI4p9Q+DT8m7wcMuoaDYbmWdoR6ZGhotW2Y04vlpyFghcCqZKlfWw zOXtclWGZWGN
dqkiwwmniJHx1P66EtCfsdeLVm2zQrALRyKQRTuGMWpgRODsoYtNvIHz3BAZ z1tVVmQkON4K
Xa+IBLg5YyZO402Buy2ZOGv/i9JAbUMmdvtp+AgEgav/k4Iu1QSmDEwKnDkM ysQ0wuQn46Vi
zWKXVQRGW1fLTaDAL5o8UZfYm+uypqHsNVtWktd0+ydVQd9RBX1XYDaY/Pc1 Uykum7iCOYET
TJHIbJbZ/exX7udYE4a5UqFQKjrdm0jZVQURxbyB9wmg4fWUmjHxARYEDLua KJRrTzXjZcX4
qok4hgTaV+WatZmvxa2qVCgJE9dxg+tIROBUMNm8ndUmux137vANZAq5V1BX qpEhF8zsc0UP
R1QHdOzoQrMzDNzmWW64eZT2uybuIcNWyFG04xY4H2y87JrtlAr+yMQSPhbo VsGJRXVfJvKy
IIss15WWzbx3XfNzY+YaOkskeairLrfOfdQ4VZFV7pq6HZtgeamdV+4BRdrd VnIPZ+g12eqo
sdday5pmSpuVnLxuK97de+/WaUVUIBjNzh3kPH/QhVFW28vXjLVRbwktgzbf F379/PeEo+DY
HfoRgecwX8L/HCd+gPmMTh9O8tvDEZjidxoBhNGFi+ilx3QCcQp9HPsbPAMc Bx3P3wwQhp7h
W4MheHCGtgdnNYF7pOdRK0MTOzgnMLGNC1v879W523RcROfrc9a5+ZT1FoKc f5XZdDP71M1c
zzOu8/xKRKVjgWlCApT6LTpVzhmByW3MbtF8TyA9tQPuwDdoD9Eb+w49oSnv Dq558AITky43
py7nWEbwoJu4wawf8q1Jkc8iZpDmhXFLcw45OeucF3ATSc11QbP3qBeKsbfI rr+uccHV4cyl
OKdq2QHvwB/oNxBNG1oMb8u6yEUt8jdaxzjGhr7X6ebw6ndy8gXS6dDUNu7M +QZ9LxFQdnbX
VmqVvaWt/SqXqeYBWXyGETzEJB7hMj7nvqxolbNO0rrKGD7Bp1plzFU5yBd2 GfdJe4Qd8IA4
vj16Y65eZ+4h55TeLvh6/1R6ldz237lSqCunLvmRlnyTXoXhEfu7prKnazx1 bh7yvt/QNR43
u1B3Uh3dOgL9q5boKy3Q4wd6vzX61y3Rg03RPcjp76qLL/8BUEsHCKe/nDZ7 BAAAxQoAAFBL
AwQUAAgACAAJXXc9AAAAAAAAAAAAAAAAGgAAAFRoZVhNTEJ1Zy9idWlsZC5w cm9wZXJ0aWVz
dY89DsIwDEZ3S75DJDpCegFAYgCpQ5kYWSCxSlAaR04iwe1J2YqKt/c+yz8I K7U1HN/ihkfe
44TtjCfVdLZBQLi7oF0wvlhKaqf0+oqg5jWyJd8uBP3xcth059NSFn0Z6ujX 6P+HUTiSZEcJ
4XmTpA2P0XnSLJZkugYhcRFDWldKYgYKv8uqbRG45Fjyt61+VMUHUEsHCDI8 U0CTAAAABgEA
AFBLAwQUAAgACAASVXc9AAAAAAAAAAAAAAAAHAAAAFRoZVhNTEJ1Zy9tb2Rl bC9TYW1wbGUu
ZWNvcmWlUstqwzAQvAfyD0I9x0rSSzFxQh8OBBoIdQK9qvbaEdXDSHKd/n1X dmNi6K0+2GJ3
ZjQ73tXmoiT5AuuE0QldRHNKQOemELpK6Om4nT3QzXo6WUFuLMTpgeefvAJy USIeWEtkTScE
HxTTLsZmQs/e1zFjbdtGRlWRsRV73+/oFeLGkPa+Qyzn8wXCXrP8DIrPhHae 6xxG6p2TERly
KWoHnQKoMqgsWRpglGiuEOy4quVVRrvT224k0LejAlh/Yl0O2h0slOIy0NeB v4JnyZ0TpcDx
Cc4R++8ar/gNqGter816HoGsqcEeEecSWkvuS2NVzGrZVEIztD2MgPajTokp U4Dsp+grd4yl
+1BMJSjQvrcTDGXeNrlvLJdb4PiFP3w9em/FR+OHSMKbEmlasE+m0QX+fDR6 vOW8cM9DgfzH
MprDXaKsD4/dphf2io0XC0s/UEsHCA9CvLhRAQAAkwIAAFBLAwQUAAgACABL VXc9AAAAAAAA
AAAAAAAAHwAAAFRoZVhNTEJ1Zy9tb2RlbC9TYW1wbGUuZ2VubW9kZWxlUltr wjAUfhf8DyU+
r8f5MEZpFTbnEHQIc+Br1p7GsNxIWi//fmna6nR5Ss75bueQdHaSIjqgdVyr jDzGYxKhynXB
FcvI13bx8Exm0+EgZaikLlAk76jWzSU6SZ5ciBNPHA4if7yecolvZmRfVSYB OB6PsZYs1pbB
br0kHaRXvMFhLrhxGLAoS5iMxxPoLUkUCHNuMa+0PWcEtnvcrVcvNQNnc6/Y hQi4jagZV8t5
Ri6oTuGDSszIJ5VGIIm4NNpWaBuk971k8P5x3/NFbbFTz7UncqpyXOGhGeCp WVuuzdlytq8W
HEXhMlJS4bx87bDwE2xo/kMZ+roRtCq1lQmYkBDuTYMXhKTw1tzjflcjgDbI tEmSehXkrF3O
tB2nJadw0wpgds0QGYslP11XUHBntKPfAjdWH3iBdkG7FVe29oCg2tF7Wms1 gjZM6/AqqHPe
ILTC4x4NnSe0qeBPrOafwb+P5qu/UEsHCPNBh71mAQAApgIAAFBLAwQUAAgA CADcXHc9AAAA
AAAAAAAAAAAAGwAAAFRoZVhNTEJ1Zy9wbHVnaW4ucHJvcGVydGllc+PlUlaw Sc4vqCzKTM8o
seMFcfVR+CAhFc8UFV4uXq6CnNL0zDy/xNxUBVuF4MTcgpxUBd/8lNQcoFRR fllmSmoRVLK8
vFwvtQKsQi+/KJ2XCwBQSwcInWZt0VIAAABpAAAAUEsDBBQACAAIANxcdz0A AAAAAAAAAAAA
AAAUAAAAVGhlWE1MQnVnL3BsdWdpbi54bWxVT8FOxCAQvTfpP7BkrwWNF2Og vZnswcREPRsC
I0ukQIC1698Lpa7uXGbezHsz89h0ni36gpiMdxzfkhuMwEmvjNMcv70+Dvd4 GvuOTSCtCQn+
uHeFW0dluBuGvkNM+vAdjT7msSL6H5bG/qD2fTcMTRLsSRvXJggxOGdwdS8K 3rjMsY+abCcJ
zB+l9hGIBgdRZFDvQchPoQGPq76u2Dq/uMUpGo6POYcHSpdlIUnMwQJRQFtF q+NribQiJY43
5suanrdr18zyzZNXYDmea6KNW59cMabtOUYv7pp3ejH/A1BLBwhWe3Yh4AAA AH8BAABQSwME
FAAIAAgAelx3PQAAAAAAAAAAAAAAABwAAABUaGVYTUxCdWcvc3JjL2J1Z3Mv TWFpbi5qYXZh
pVZbb9s2FH5WgPwHTnuR0oy2vG7Y4GRI6sirgdgufFkDLENAy4zNVBI1knKS Dv3vO7xIcVw7
dTbkQunwXL9zU0GST2RB0axcyPbhweEBywouFLojK4IZx12W0vZzaqlYit8T ueyTYl2EiwWm
ScoKSTHNbnHCs4znlj2+ZFK192Kdjnq7GWnCBcXxcHZHkxf0WTZBJS9FQvHI PbxaYEz3NwJc
6bpgD96/JfyQMXzVv9zXP81uzFz1e5VMlySKi8d9rW2KO7laUhIgUDw2R3s7 2Zk0Yo2jo8MD
dITelQukqFRUoFsukFSC5FBWEByKcIQKwWcpzbDmbRwenI3LogDk5EcicpYv ZODnqfTDw4Oi
nKUsQUlKpER9wnL0jzbjFYKtiKKgmCi4HysBYignGf3I1DJqdniuBE8lOkX+ ZMmk9kBzLIlE
ORcZSZ0vTXSdXysULLlgn0EILhSZhYjl1/pHXSum/PY+NqOXbF71UxP4ddls Rr+iYEUF6Hgy
hmorBkEPIDwriCAZImIhHUEtBb+XKH5IaKEYzw25oT2zKDnHVpzNUQZYBdbF P/8ySkK0Ka+x
9Dzd0uhW/ztF+hkngkKYE5oV+jXwdR79Y+TjW879sK1lNDue05QqOszjB6YC Sx8/QsozzEuF
Aa1cpXmgWUMbmge9jErBwBA8OTvaBrwZPryg6nwmeVoq+oGoZRBatWtthCT8 naKc3qON5nIu
bO8FJLbQrJrtAkFo0XH58EwCJKX/rRW/t7FWN8E3Bl7oLDbMeTaEahFsTs2b y3WlCm1odhBH
lfueoKoU+WakJsRnfBtmwJDgCqYqnaMZ5yklOSolnU57FzJ4EqrUK1HStqN9 secX+27e7DOk
Tmd4A58RXcAyEI9BqC/jB0VzCcU54e4e1gpcFaUKfF2Ax9tSWRVYjUrFAznW VjdAgsBtscBU
gUZ84v4OSqJMU6et0UBjsoKUm27RXei5PXdiN84xsudvMBBXdGjZXFnt4HRV usZvQlub+nj4
YdIbDm6AdPNHPBrDMzQfDA9/b9F40Ble9Aa/g9x00v3hF7/CZ5f7KSfz17i/ xr/Lh4u4G49u
ehejuHszisfDy+nERPLOFhOejKbxK5WdTybnnff9eDD5Wo3Nl5lBZinpFRVB LM9WFKa9wXhy
PujEriLsrQsK0h13zKJxsrFu7V2ilrVOZxZhKLQBLINAryn89SpyE7L2rvU/ vGu91rvWDu+i
597VXy/QifqG5gqUYDKfBzrEfZhaVTbW9qPeiFHrx7c/+UbB/VJvGzvxU5ov 9KBHJ+jnt81m
sx67DdQxkSDJQQE35Wda0NMfFAEsF3QHepttOE5QpM83b+rB5GC2Yq8Deh3q Wn5/sD3PCtWA
awCqqxegs1JhPTTNWfPrpg/WOt/x1fdlrrso2CQb4lp/VbnxzAf4SVz1f+J8 gUi3u9h+jrxe
4a02HCe1KJbss4YQsRfSEFhC+CQFVgL2AvCBJeyScAPcQb5wkIeY/l2SVK5j X0G64xOlLkTL
rrcW/MHvv1BLBwiaeWUidQQAABINAABQSwMEFAAIAAgAw1V3PQAAAAAAAAAA AAAAACMAAABU
aGVYTUxCdWcvc3JjZ2VuL3NhbXBsZS9TYW1wbGUuamF2YZ1Ty27bMBA8W4D+ YZsE8AOVeG9V
wT3kkEOLou69oKSVzIYiWT6SBkH+vXxIsY3GAdLbirs7OzuzIptNnsEGqlaq B82Gva3TNzl9
iI9XN91VCEieKdre0gHB0FFx/JhnecZGJbUFqYcSW86UwRLH3sdSY3n9RXbI rzmOKGwsJ/Pk
d0UBDQ5MFM6gLjrZQlEkFp9Bo9JofA+1TAqQPdg9whjAQDa/sLWwrHCsq6be RSoVaeqK+Jdl
eYBH0f0DnrIqDfrhQXvJubxnYoAeqXV+LFDtN3Qq7IXdh9TheGoBqDirH7ec idtJhjJRuBzQ
fqUjQiAWgsjnqSK+fhJ3BqmIOpDZGsRTpG9J5QCYHlbrVBkFSOGAAjX1/GZn XMNZC0xY1D1t
EVIn4B/rZTBw4gQ85tkiOrHwWN/Rry1MlPiOcoez3rPEaZlZYKDWatY4i2Xq P2vlYpY6BDeT
h0hFEPt4xLNYR9jAjFhaaDlS/T4h+HpvjEbK+QOYvXS882P9VejImEKHptVM xZMJtWU5MyQz
izN3EVJbHXU4I8NLHCf0aOClSe6vdj4phvVR6nVvf8auuT6duMbfjmnsPl1Y 7fBiyh1Zvoie
L9IsmA5vtY5/2MHYHdqXXH3D8b7V7FfUVVTTcWISaAi8/x+Zn3c9K8qdZB2c upEGJXmegJDp
58izv1BLBwi5onZ8/gEAAAgFAABQSwMEFAAIAAgAw1V3PQAAAAAAAAAAAAAA ACoAAABUaGVY
TUxCdWcvc3JjZ2VuL3NhbXBsZS9TYW1wbGVGYWN0b3J5LmphdmGtk8FOhDAQ hs+Q8A5jssnq
JsADiERj1oTLxrj7AqUMUIWWtEXdGN/d0oKGNRw2eqKdTmf+758SbzaBDxtI qOiOklW1Tt0+
ngdscJUVq2ERB35H6AupEBRpuwavAz/wWdsJqUHIKkLasE5hhG1p1kJitH0g VAt5tJnx1PQi
DCHHivGwVyjDQlAIQyfgUCMkeTpeS+I8hVJI0CbcigKbyGZlGjopXlmBCghQ iUSbc9S1KGw6
EloDFzwkudLS1ALaEKVAlKeVrBbkxW8ltwonzmhvP48O3p1WyFGatsXkTJ83 jALjGmVJKIK7
M4IAvmvTRcFkCHwEvmcN8UZqxXjVoBbc1FCacFNilFu6K5HLXXTPW8bxThR7 VrJ3IjHb7Q93
u/st3EzcZrZNNMvKhgjjTF9e2Zn+MDyh7iUf5sHxDUT+jMZ2Q+CcXyfYpq5S Epvl+q800rY7
s9uiB+MbcptFtGEY339A3w3vHgvIj+aAqf8a0wh2Tq9FrPHFQoV6FhgJPyGO Z9MN/C9QSwcI
cLwXHYYBAAAZBAAAUEsDBBQACAAIAMNVdz0AAAAAAAAAAAAAAAAqAAAAVGhl WE1MQnVnL3Ny
Y2dlbi9zYW1wbGUvU2FtcGxlUGFja2FnZS5qYXZhvVZdb9owFH0OEv/hrpvU rRvJ9roxVNSl
ElKbVoVKe0MmuVCvwY5so66q+t9nxwkJIQllo3uBxL6x7zn363gnJ90OnEA/ 5MmjoIs7NbDv
3uZCuvhuFL0zD163k5DwniwQJFkmMX7rdroduky4UMDFwsUwpolEF5dz/cwF uv5QKUFnK2Vs
2y3PYiLlTqtr68BOO/Nb2HY7Xg74Ta8HM1xQ1ltJFL2Ih9DrWfCTO4T+bJB9 1vdmA5hzAUov
L3mEsZtajRSEnClCmQQShiglF7IwREWAz35hqCQoDgITgRKZsrevYnsVQD+m AyThHYQG96e+
p9+rW3MkaiUQ+Bx2mSJbLbd2CIvshxHRXqnHBAuLvpf7klKCLNom5FRiHmp3 nP6dk1Bx8Wh3
U1LgnrLo+1GWGEd2Z4EMBVEY5WmzmsU0BMoUijkJEexpGdOAv5W+X0IeXXjq dpw0Yk4Wljzv
GFmia5cbI+k0Y3Iqzjmpd85Y5yhbAAbDSx++w5GFfJQmTrMfMjFIbm9Gr+jQ eKrPNy7dKZV8
9byHhwc3C0iEnn3yvrifX+brK7M3nl7f+Oejn+0USm0co+JMp4NUhIVpfqvC 4VfwcDPbRsF4
MgzOTKgzLnUvid0Nq5FZoYyq9x9qMJSqHGi0Lv7jp9OYsvuaU81x0MflwL72 Pf34fGwL+l/x
loq0cmOrQQno2wUqu/j+QyOJunhhPLy8vjC8fa4hJe9WZUIMZN1S/SFjXBFF OZOmr6b4j/M+
utTtUTfKOQo02RBTqQ6bA3DKRaRPrwMznfrDILiaDCejq2CsoZVHh+tfXv3w L6b+hX/pB5NN
2/0oCHTtlaCTfC7+T6RZf2tDeO4PJ7c3/vTs6jaYwMfaQOtRM0NhqlYqsQo1 YhLn0GVezMeV
bD9Qsu8BdxPKfrC/pLDLwG9Qw9MjvzLk0zinyKrVb7FvF/2/MiBSR9r8qDLv bvcBu91Y61aM
QaktfHs5G2Ztnd71rJiGYwoiZcdWxmtzU/Fq4+JmhnJH133RWLyoXRbKt6Bx ao9q4XJu9ZV+
JlpmCl1TaDfyWbmur1yRHoqvv7u5cdhmQrHAni1soW/1/QfOKdM3x1QLRxI3 yWzjckloO2ul
7bRI7cpeq9au2JbFdrHVqLadQm7vr10KzXyRk2DUcUZgnSDJyDqAKmmPTxuW 3cLkr5TJFkcZ
SXnDWuuTtcZzt3rYPsztmN150hyAq1pQRQupTPAaeBu95dn8PoPnbRDa7fwB UEsHCF27dael
AwAA9w8AAFBLAwQUAAgACADDVXc9AAAAAAAAAAAAAAAAMwAAAFRoZVhNTEJ1 Zy9zcmNnZW4v
c2FtcGxlL2ltcGwvU2FtcGxlRmFjdG9yeUltcGwuamF2YbVUbW/aMBD+bCT+ wxVVamDC2b5C
WxW1TELaaLX2DxjnCN5MEjlOaTX1v8/xCyFAxT60X5LL5Xz3PHePLx4Muh0Y wCXPi1cl0pW+
dt9x22Gd57PkvDbibqdg/A9LEUq2LiRSYZ7jbqfbMUauNOQqpcilKEqkuF4a O1dIp7eSleX4
VNT94jdyfTLswUE4XbYGR6ffGde5ep39F9JCVqnI6LT+eLD27hlPemB9cejg 2XAICzShw6pE
NUxyDsOh6+YkgxoErjHTTIs8g3wJeoWwzhOUcLm49ugu48U1bdJhlhwmu0kx Q8U0JmEW1UIK
DrxuLjxabDtkAV+0yVPCbgcaOHsn4G+3QywlYkrdKjR1Sgs1wSWrpIalD2wT ou7Au00g71Mi
e5yIJUU8q7LOz/dAikzoqG+xEu1BE9KOMZjbjiuIWo5+UBD9ZQCXJg+dzR+f JvPbKU1Rh3ZF
vZXWxSiON5sN9ZNPMHZW/I1+7fXHYOuLJUQHVc+uIKuk9GAJUagrlR2gG9u/ b/XTPjjTfAXR
9IVjYQWDwQqZdrTZ4JZ5GjWR4206XzXDzaFAIhv3Vmv5cPLMKDczM8g4Bs16 AXzaxI8AdJTL
qkB1FO0Hgri5f0alRIINIL+QgNueRG6LAdpXgLYRdl7OWcvHGmIpUM3uon4Y GmcleoJBfI+T
nw8/piPwI3JFXIjjSoi/eiOnIL1S+caOciYlpkxOVFrVF3Erlqj3ZObk9sFF D75AA2vO1iat
cfUuQJSQ5RoYPDMpEhdvEfca5Xxeo1vT3qPtuuW+7Lpyt81c4UbBjXSDul3Q 58qjhdqPEExf
W45AwOOKWj/79W7ZBn4k2gQLhXwL96i673Zjjq3YHU7H2bTVi2H1bIm8QRwf XOFu5x9QSwcI
XJ5sm5gCAABpCAAAUEsDBBQACAAIAMNVdz0AAAAAAAAAAAAAAAAsAAAAVGhl WE1MQnVnL3Ny
Y2dlbi9zYW1wbGUvaW1wbC9TYW1wbGVJbXBsLmphdmHVVt9v0zAQfk6l/g83 QGo6tcn7FsoG
FFRpGxMdvE5ucmkNrh0cZ6NC+9/xrzRJywChMcRLG5999nfffb5zfHjY78Eh JKkoNpIuV2ri
xnHXYI3PZtkz8xH3ewVJP5MlQknWBcOI6t/jfq/f0x9CKhByGWHKaFFihOs8 SsV6LXjEhaL5
JrowfzQligr+My9MhcRo+oqRsvz1OoMhmp6LDNmU4Rq5mjlUv+HVRjTbicWH OLd/xz82Xzo6
rFtcU3owHsMCl5SPqxLlOBMpjMeO3lMO5mCL0h4KIge1Qlgb+CAWnzBVMEhw PUkWE3dGEi8m
Sawtg6jZH3m2v3tSuP8rvWEuGBO3lC8hR6IqiSUQic3pmB05n4o5J4CE0cm3 E0b553Z6faSG
nadLVBdkjWDwmQ8L6y6JtaNXT71bEheNfk6WyFESfWatomrBaAqpSTA0+wN+ VTqwEvay2eCu
18O3fi+wlAc+4gxzUjEFN4RVWPM68AHV0MPhDvgBEKUkXVQKI7fXvfkL7iff TJ2UiK1zvLEV
uh0LmaH0I81EUEihdM4xg9IoIoWccsJgrjHp3F2cnk+vp6+nb04/nF3Bc+AV cxrthp6SdKV3
+F8j98FyI63n3Zh3gv1jhF0wO8dvBag5MrIKyqpAGQ714cHdXwNw8u4GpaQZ dsC4qgc4t2qw
gxqVRH2POXQqT3RGld6XldH89PzybPp3Ift76/PVCKsNz2TxUVDcCKovjcdQ SwhvzdAj8kbB
sgsnrRpb4KXml1sTzSHEdj94j18qqgUbDo2ig8BNbkLtBHuNI1QrWo6gbY7m 06vRTrZckq6v
jcZHNbCRxTV8TLk5Bt+5doNvUYWUq7pTzF6PYCEEQ8JB9w3BbrAxmOZ5tSlq istbqtIVhFtX
bw9SUuJPgj+yi2rNbJVkM3HXUpO9iZFF2EK3RbVF8+jcWfXhfJ85T6pWyUdT jh+Gp1rmXufD
7e7HbR4b9jxt8y5tHa9/wNYHXu7y9bD0dFrHL7hxYJoDH52T+kbhrNyT0YPe rp1HhHtFwAvX
bw/88AgOOusiXf10WwltabrvWjrk/5BDX+GVcB91K7K1fFZeSvF1o8s3dFA3 i93jwreJl1We
ozSlxTwibW+A9ky46+1YcesjUhQ6jvAJWMKO4MmPZhsuu/bBcFCbLU4/2wHq eL2DOG6eK/3e
d1BLBwikcV29dwMAAMcNAABQSwMEFAAIAAgAw1V3PQAAAAAAAAAAAAAAADMA AABUaGVYTUxC
dWcvc3JjZ2VuL3NhbXBsZS9pbXBsL1NhbXBsZVBhY2thZ2VJbXBsLmphdmHN WNtu2zgQfVaA
/MP0Aqxd2PLua9Nm6zpKKyBxs7ZT7JtBS2ObG1kySCqpW+Tfd3iRdfElBbot FggckRwNZ4bn
zAzVe/Xq9ARewZsoW28EXyzVuR336hNm8mUYv9QPvdOTNYvu2AJBstU6QZ/T 79npyekJPWRC
QSYWPkYJX0v0cTWn50ygH/SVEnyWKzx7SnKQMCmflLqxVjwpp39L2SektS9b 1WHDMefv2Pw7
2z99ySKVic2B1aodvSL6z7pdmOGCp91coujGWQTdrj2JfgraIlxhqpjiWQrZ HNQSYZXFmMCb
2bnT+KY3O/dLdZjGu8reLTBFwRTGxTnms4RHEOlwQ81A7TngF0V6JFTDUZrT eAO+nZ54xiXv
mE/eYQu9homesdFbC35PE2BR4cLpBm8hzRN7ROXeA4EkL4FR7FKpWBrhsah1 QJCdUqHAGB64
Wlot394lPL17Anv+yLwqNrAz8wizjdnTkcVqLZhzOwrhniU5+i4k6/NhpvC1 eYO2EBgpeGCk
IYPI+FPVBVzCPWdmSmpcRFbL3GIPVqiWWVy48IKnXIH+abUfO/Cw5NESWCIz WKOYZ2Il7dta
grOEf60BzW3ZoUhQoFQuUmnmK0ErRJyaOWQp0gZkdrwhEJGY9H8QFhLxe4+i 8sY+6r3A4XhK
4a+IvbCxeRKBOwxptQ3qPZlTJFtOcQdqicDHcDie9IeDoE049R7rWP0JPLGA gFmWJagpIEPy
jk7pLcEjkbifLCUJ6JGlcQkGtMdd5wwQbGiaYGgYZV/RcyzdQEbyQkK+JhBZ sBH8YlzrXOJw
sAX9xOiwcKUncjTWkC93L0DcOMMipo+0A6ZkClMw55gYLSyKUJImt9kg4SZd yWWWk0CaaTLc
Z3do7OKaasnGh5ByBSG2o93dFMJSp7uN01jdhozMZorxtEqS/wLl+/BpM4Bz fpClSvuzBewW
wjZih8T2IMamfweYeja3lLDwJka3Chi1XRKAVk2+vUNDvzgif4GqWK2/5DtX 2xaTXq8Hn2xM
CUku62lgFdCspFJvt1rROdRdeNuwUUu1W8cNLUjc3pYOSoO7e/25m+8PqHkN KT7syxyF0xV+
KpFjGYqw5IBBIToOYRpx1Cnbq3Y2ZZrx0dTGViWqluTb6kF8Y92YKUYQ/ofQ b5Q1w+cfAN1e
A61sXGreq/EIRkut10zcVSw0ySDmkbaf6Bqx9DdF3IJoydKFwfLuPnOB+BWd UgCn+HYdF2VU
FFXbosvguV6qvSPnu87Vfhx3djBoUr5X7tBsAn9mObDkdo0SYdLuXXDa2VTt pn6NPdtbQGnT
dMhWTcNapWC7aqTJJmNiSkRiLLkk3OUCCUGGdr//7BprnagV+NIPN9H0pLbY 1va759ClmNYv
6gzKlmDg+Hq0J7Ads2aibZtdsnC1vyx6APUqbpUsciZiW82X7B6p7AKbz3Vb S22BbhN0DY5s
q0mnTOQmzVxI9aNF9OCp3Wc8hgNZrVroXHCKSndms3QZsnqadrnV3KHMpSPW weEC5g6apkGs
X1qsEXbYGvevb65sc+i5hS30W9UXqbE0otPpsH/9q7rJehtps/dB3GTaWJdj j94mbIupZAVe
DkZWU9kR/k9hdKSUNXsmF7MGnOrRPFj5KxVJojJ5Erenb6bkjcA5/2I6jptR cBn+XVmjotQ6
3GTpPn3bVKhir53WQh9cbUyNVXX8vb1fvV3ZscoRSW3W2m1BrurbyHZ5jFT3 s1x/jzAJ6IBY
P6amXV/HtIA012fLzCYNbSHRkhMtSQWExXGr4aoRutbwDOxHj7JvazRAFfoX xD8D0gjZWsOI
4GkXqyYTDkiDSwMNptuba2RHz+3weQeeheNp//14MuoPJnYUDifB6LI/CDpA ow/BMBj1J8HF
tDiC6eCqPx5bTJjtyuTSLMCd5kkXxZanC736PCUxMkJ/c+nAH+avbqg2iGwb jsNg6Oz7/Omq
PwmvrHmDj/3hh6D/Xg/14u1wHEwm5Ti8MGK3w/CvWzd1EYzCz4Gd/zSiUXCx CxqKdpaLCMsc
OnIzVfjbdPkIvd5OP3568i9QSwcIq1YD5QMGAAAMFQAAUEsDBBQACAAIAMNV dz0AAAAAAAAA
AAAAAAA2AAAAVGhlWE1MQnVnL3NyY2dlbi9zYW1wbGUvdXRpbC9TYW1wbGVB ZGFwdGVyRmFj
dG9yeS5qYXZh7VZNb9swDD07QP4DBwyoWyDOD2gadChaoIe1w9pDr4pNJ1pl y5CUZcGQ/z7q
K7HTpPXW7bZLYssU+fgeSWl8djYcwBlMctmsFZ8vzNS/j7sLbvHjbfHRPoyH g4blz2yOoFnV
CMyWhovz4WA44FUjlQGp5hnmgjcaM6zKLJdVJeusloaX6+xTwRqD6ryn+Z39 486+5w4yEjHK
DcuNVOtbWnrNAeZSYXb9WRYorgVWWJvj+ILx/ewb5qbtNdBx5tbGkdsPoxHM cM7r0VKjGhUy
h9HI8/y4QJjMpgErBLCT8WwKpVRg6HNlIWXO+tZAo+R3XqAGVgMLu0i8Aqe5 Qmbw6enJakfv
UKFZyML5QZYvIBdMa5DlvleHD+viJbpLjVuJH9zfF6+7/zrHGhXFLGJRLGeC 5yGOt++KAPjD
UCANL7WBn8NB4hhLAi05YcbCA4VQb5n/fJTR5Hg6yR7ixEFOiE9DIlIgbZgh 9J08ffTw4kTd
YbxyfDsheE2b6xwjuVGY0uf3D1B7pg9xnJ46KhNeQtpGDxcXUC+FCJ+T7rdu 2hne3j08frq7
uj63thv62XST/4pmqWoNqwUVGdpC5TqmC/TImoYAspnAbR2bdbMlSLrO6cPL o3Vs+9m1JCkk
a1AhuK97o5YYS5633VscyAO8IOWJjqVETe2AttXz2/Y65C11PJq/wsQBpS/v v6NS1PE71WdS
CrS4dZD8RqpHcpneB/zur1UGIS8qgLbosRACfkvjVu32tkgPAQ4Tb29nmsb1 EDnDKzsC0tNs
juY6hKO63AOwixYclUxot7pXbHYa6BU3NMPMghkgFzh3vWekI/HVAaj/5dDw bfPgwE1CI059
ln4RLmyCNa4Om8Zu7eicRKXjsZAzjX576v+6Gm8J9Ax0pkJ66mj2PL8dpXMA pp23V2N2LH8/
dIElWwpzRQhiMb0eztscCrQ5Pqa3Yzn0YZgfTFGZhpp5b600TLEKvMv2KKJC ddFjo8emax8W
b6LqNx62crrEI0XxEhWwBVoDjFa9ZoX0D7uuDju2jXmQXbAl3k6F+N7NU38l OPl5KXj93L1R
wASrqX+cjOlxc9L7WAhVc+x4sKcdaOlnxspeKGq6CGkuaC7Pa7rBuYrX594j N3Q2UKByKaxa
wYI5Gzvc7TlB8537o2LFyXfObIMzejKL4IzSXq/Yuv+xYXe2qItKv7h4vXUV 6Kq+NwI6Ylta
DgzZP1Kyxy3a6etXICz917mjcw8Sf0/9w8P4fUVg8UcdLAN/U7x3s9iXl71T 4zgjGxiPD12u
h4NfUEsHCI19prvGAwAAMQ8AAFBLAwQUAAgACADDVXc9AAAAAAAAAAAAAAAA LgAAAFRoZVhN
TEJ1Zy9zcmNnZW4vc2FtcGxlL3V0aWwvU2FtcGxlU3dpdGNoLmphdmHtV0tv 2zgQPsuA/8Ms
tkDkIJb3HDtui6wPAdpusfYhV1oaW2wkUiCpBkbR/77Dh2wpfqXdtughhyAU Oc9vviHHo8vL
fg8uYZLKaqP4OjdT/z3qbrjNV3fZK7sY9XsVSx/YGkGzsiowqQ0vxv1ev8fL SioDn9hn5jaT
d1yb9olU6wTTglcaEyxXtJYKk9ltwbQen5N6LzMsZgWWKMxZ4X+WnzDt+A7B Xrq9UZP5H8Mh
LHHNxbDWqIaZTGE49CgscoTJcjp/5CbNJ6PlFFZSgaHd0kZyoYGLHBU3TKQI OUfFVJpvEqd8
Rw7ryjrWTiVlRQFf3hRcPMCfmfRG4xDmALY70m98dUaMJBef5QM6E1SlDKcp 03h/f29LRF9Q
osll5iJDluaQWihBrnZxXjlT2jBluFgDucndIUtNzYqugvfuFJjIoFIyRcys Wl05gYMZO/la
UMGBgZBiKGpKVqGuCwNc08rUSmDmI3nMOcXJPSxBKLjXDoNkVxkU2X5d3mjc Um/u/n30fPSn
axQUl8GsIWu9LHga8vTyoaSLKXzp9yLHhSgUPCUQMfPIQdXYjU5RJToebfQk oMhFFBGuhnAm
P1QWQ8F10vDOw4dj6y7EW4VkSVN1qBTa1+EpeD86WI9fG7l44ICL+AridrBw cwO29uE46p51
s0zw7sN88fbD7WxsZYnw9q+TK7WMPsz6E3QPRJQCA++0JyW0SDkGbmDDscgs C5kJ2/8XO+/P
hbLiSpu9XmgaAZYbCupgZvaeSM7VYgFPbxDrdHuZOPBDMFvBnUCC7r6NB1dt rfFLAZ5TgG3n
tmvg8HRgutUVHK2K7ZitHBVCCsM4OaGOot5p90vTQ4fq6LXXaNyCr+givvv7 QD1dV0VYaAzG
7Hs88epTwHldoVpsKrpPbqBjd7Y7ir2lEIdbRi3NhOtZWZkNJfDaH0YZrhiB fUu4xm0Arpvz
JpW2GXIa/3UkgxdafhctuTAeh0CQE7T0bwfEbfGGgDaQJ1f3/O37j+9m10Eg 8ofhSSYqxX5j
sHPjKRQtmoRvwFr1YrHXCzRzHdJINa9JR6szB36L8hFeBtVQpEAEt+e6p6Hz NTSdeMLMAbb+
G8jWnXaoNqgqsmhnq93kBWzvab+YYDn1SE1GtLx4DhsXOc1X3OpYkGjEkGLL eovK2Iv5LRvC
/tz2yGlNQZZcENWOTBhHCF8xxcomJatJwyc1+MFJpd0dPxIfNyXuJu2TPxMG e+/p4PwT3GJw
aAB54P1t0P4ZrPCdAKEVXtjxHTj9EpZ0b6zO16/njI/89yDLFSxrSwHrwedF 749xmFHwm0e2
+S3pdADCb+LRM8b71hvTPNpnmfIVRqP2r7R+7z9QSwcIFuMtKfYDAADgEQAA UEsBAhQAFAAI
AAgA61x3PZs/RaHTAAAApQEAABQAAAAAAAAAAAAAAAAAAAAAAFRoZVhNTEJ1 Zy8uY2xhc3Nw
YXRoUEsBAhQAFAAIAAgA3Fx3PR7uQk7qAAAAngIAABIAAAAAAAAAAAAAAAAA FQEAAFRoZVhN
TEJ1Zy8ucHJvamVjdFBLAQIUABQACAAIABJGdz2Qfz764AAAAHUCAAAuAAAA AAAAAAAAAAAA
AD8CAABUaGVYTUxCdWcvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3Jl LnByZWZzUEsB
AhQAFAAIAAgA/Fx3PfKVCQ4MAQAA3gEAAB4AAAAAAAAAAAAAAAAAewMAAFRo ZVhNTEJ1Zy9N
RVRBLUlORi9NQU5JRkVTVC5NRlBLAQIUABQACAAIAPpcdz1EadWGqwEAAOcC AAAhAAAAAAAA
AAAAAAAAANMEAABUaGVYTUxCdWcvYmluL2J1Z3MvTWFpbiQxJDEuY2xhc3NQ SwECFAAUAAgA
CAD6XHc9ikdM+6UBAADDAgAAHwAAAAAAAAAAAAAAAADNBgAAVGhlWE1MQnVn L2Jpbi9idWdz
L01haW4kMS5jbGFzc1BLAQIUABQACAAIAPpcdz3PM76FuAgAAPQQAAAdAAAA AAAAAAAAAAAA
AL8IAABUaGVYTUxCdWcvYmluL2J1Z3MvTWFpbi5jbGFzc1BLAQIUABQACAAI APpcdz0nCJ0H
rQAAAOIAAAAhAAAAAAAAAAAAAAAAAMIRAABUaGVYTUxCdWcvYmluL3NhbXBs ZS9TYW1wbGUu
Y2xhc3NQSwECFAAUAAgACAD6XHc9l3BvDDQBAAD3AQAAKAAAAAAAAAAAAAAA AAC+EgAAVGhl
WE1MQnVnL2Jpbi9zYW1wbGUvU2FtcGxlRmFjdG9yeS5jbGFzc1BLAQIUABQA CAAIAPpcdz1B
6bGqfwEAAHcCAAAxAAAAAAAAAAAAAAAAAEgUAABUaGVYTUxCdWcvYmluL3Nh bXBsZS9TYW1w
bGVQYWNrYWdlJExpdGVyYWxzLmNsYXNzUEsBAhQAFAAIAAgA+lx3PZ1zK0Mn AgAAzgMAACgA
AAAAAAAAAAAAAAAAJhYAAFRoZVhNTEJ1Zy9iaW4vc2FtcGxlL1NhbXBsZVBh Y2thZ2UuY2xh
c3NQSwECFAAUAAgACAD6XHc9tnc9MkwEAAAFCQAAMQAAAAAAAAAAAAAAAACj GAAAVGhlWE1M
QnVnL2Jpbi9zYW1wbGUvaW1wbC9TYW1wbGVGYWN0b3J5SW1wbC5jbGFzc1BL AQIUABQACAAI
APpcdz3kVl3qJAUAAPsJAAAqAAAAAAAAAAAAAAAAAE4dAABUaGVYTUxCdWcv YmluL3NhbXBs
ZS9pbXBsL1NhbXBsZUltcGwuY2xhc3NQSwECFAAUAAgACAD6XHc9Cw4af0IG AAD8DQAAMQAA
AAAAAAAAAAAAAADKIgAAVGhlWE1MQnVnL2Jpbi9zYW1wbGUvaW1wbC9TYW1w bGVQYWNrYWdl
SW1wbC5jbGFzc1BLAQIUABQACAAIAPpcdz3jVi2GfAIAAJwGAAA2AAAAAAAA AAAAAAAAAGsp
AABUaGVYTUxCdWcvYmluL3NhbXBsZS91dGlsL1NhbXBsZUFkYXB0ZXJGYWN0 b3J5JDEuY2xh
c3NQSwECFAAUAAgACAD6XHc9N6e5YDgDAABLBwAANAAAAAAAAAAAAAAAAABL LAAAVGhlWE1M
QnVnL2Jpbi9zYW1wbGUvdXRpbC9TYW1wbGVBZGFwdGVyRmFjdG9yeS5jbGFz c1BLAQIUABQA
CAAIAPpcdz2nv5w2ewQAAMUKAAAsAAAAAAAAAAAAAAAAAOUvAABUaGVYTUxC dWcvYmluL3Nh
bXBsZS91dGlsL1NhbXBsZVN3aXRjaC5jbGFzc1BLAQIUABQACAAIAAlddz0y PFNAkwAAAAYB
AAAaAAAAAAAAAAAAAAAAALo0AABUaGVYTUxCdWcvYnVpbGQucHJvcGVydGll c1BLAQIUABQA
CAAIABJVdz0PQry4UQEAAJMCAAAcAAAAAAAAAAAAAAAAAJU1AABUaGVYTUxC dWcvbW9kZWwv
U2FtcGxlLmVjb3JlUEsBAhQAFAAIAAgAS1V3PfNBh71mAQAApgIAAB8AAAAA AAAAAAAAAAAA
MDcAAFRoZVhNTEJ1Zy9tb2RlbC9TYW1wbGUuZ2VubW9kZWxQSwECFAAUAAgA CADcXHc9nWZt
0VIAAABpAAAAGwAAAAAAAAAAAAAAAADjOAAAVGhlWE1MQnVnL3BsdWdpbi5w cm9wZXJ0aWVz
UEsBAhQAFAAIAAgA3Fx3PVZ7diHgAAAAfwEAABQAAAAAAAAAAAAAAAAAfjkA AFRoZVhNTEJ1
Zy9wbHVnaW4ueG1sUEsBAhQAFAAIAAgAelx3PZp5ZSJ1BAAAEg0AABwAAAAA AAAAAAAAAAAA
oDoAAFRoZVhNTEJ1Zy9zcmMvYnVncy9NYWluLmphdmFQSwECFAAUAAgACADD VXc9uaJ2fP4B
AAAIBQAAIwAAAAAAAAAAAAAAAABfPwAAVGhlWE1MQnVnL3NyY2dlbi9zYW1w bGUvU2FtcGxl
LmphdmFQSwECFAAUAAgACADDVXc9cLwXHYYBAAAZBAAAKgAAAAAAAAAAAAAA AACuQQAAVGhl
WE1MQnVnL3NyY2dlbi9zYW1wbGUvU2FtcGxlRmFjdG9yeS5qYXZhUEsBAhQA FAAIAAgAw1V3
PV27daelAwAA9w8AACoAAAAAAAAAAAAAAAAAjEMAAFRoZVhNTEJ1Zy9zcmNn ZW4vc2FtcGxl
L1NhbXBsZVBhY2thZ2UuamF2YVBLAQIUABQACAAIAMNVdz1cnmybmAIAAGkI AAAzAAAAAAAA
AAAAAAAAAIlHAABUaGVYTUxCdWcvc3JjZ2VuL3NhbXBsZS9pbXBsL1NhbXBs ZUZhY3RvcnlJ
bXBsLmphdmFQSwECFAAUAAgACADDVXc9pHFdvXcDAADHDQAALAAAAAAAAAAA AAAAAACCSgAA
VGhlWE1MQnVnL3NyY2dlbi9zYW1wbGUvaW1wbC9TYW1wbGVJbXBsLmphdmFQ SwECFAAUAAgA
CADDVXc9q1YD5QMGAAAMFQAAMwAAAAAAAAAAAAAAAABTTgAAVGhlWE1MQnVn L3NyY2dlbi9z
YW1wbGUvaW1wbC9TYW1wbGVQYWNrYWdlSW1wbC5qYXZhUEsBAhQAFAAIAAgA w1V3PY19prvG
AwAAMQ8AADYAAAAAAAAAAAAAAAAAt1QAAFRoZVhNTEJ1Zy9zcmNnZW4vc2Ft cGxlL3V0aWwv
U2FtcGxlQWRhcHRlckZhY3RvcnkuamF2YVBLAQIUABQACAAIAMNVdz0W4y0p 9gMAAOARAAAu
AAAAAAAAAAAAAAAAAOFYAABUaGVYTUxCdWcvc3JjZ2VuL3NhbXBsZS91dGls L1NhbXBsZVN3
aXRjaC5qYXZhUEsFBgAAAAAfAB8AMgoAADNdAAAAAA==
--------------020404060303050003010804--
Re: Resource reload problem when using save option OPTION_SAVE_ XML="1.1" [message #640989 is a reply to message #640848] Tue, 23 November 2010 18:46 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 33218
Registered: July 2009
Senior Member
Jan,

It looks like a corrupted file is being produced. There's a line like this:

<sample:Sample xmi:id="cqEd-dstCePBRNeA" name=" name="12345"/>

Please open a bugzilla with this test case and I'll try to figure out
why EMF is producing a corrupted result...



Jan Mauersberger wrote:
> Ed,
>
> after some more testing and reducing I think I have a self contained
> test. I'm not anymore sure whether it's related to control characters,
> however, it is still only reproducible with XML 1.1.
>
> The key aspect I found out is that we have an own resource
> implementation that extends XMIResourceImpl and overwrites useUUIDs,
> returning true. I created a simple meta model (single class, single
> attribute) and store instances in the resource until the reload
> crashes. Note that if I create EClass instances, there seems to be no
> problem.
>
> Attached the self-contained eclipse sample project.
>
> I still do not see the overall relation between XML 1.1 and the
> noticed behavior, but maybe you do...
>
> Jan
>
>> Jan,
>>
>> No, that's totally bizarre. It sounds likely to be a bug in the JDK's
>> SAX implementation...


Ed Merks
Professional Support: https://www.macromodeling.com/
Re: Resource reload problem when using save option OPTION_SAVE_ XML="1.1" [message #641016 is a reply to message #640989] Tue, 23 November 2010 21:51 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 33218
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------070404000103050709030406
Content-Type: multipart/alternative;
boundary="------------050400050104070604030805"


--------------050400050104070604030805
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 7bit

Jan,

It's actually more of a case of garbage in garbage out. At some point
in the growth phase, SAX is returning a bogus attribute value. Run the
attached example to see what's going wrong. There are two versions of
sample*.xml. They're the same except for XML version being "1.0" verses
"1.1" and the character "&x20;" verses "&x19;". So the first (1.0)
works fine whereas the second prints out

bad attribute value: xmi:id -> dGEd-TL8o5cOTJmQ" name=

because at some point the value of the xmi:id is suddenly shifted right
by 7 characters.

The older IBM JRE I have works fine but the Sun JRE has this problem; I
assume that's what you're using too.

Someone needs to open a bug against the JRE with this nice simple test case.

Regards,
Ed


Ed Merks wrote:
> Jan,
>
> It looks like a corrupted file is being produced. There's a line like
> this:
>
> <sample:Sample xmi:id="cqEd-dstCePBRNeA" name=" name="12345"/>
>
> Please open a bugzilla with this test case and I'll try to figure out
> why EMF is producing a corrupted result...
>
>
>
> Jan Mauersberger wrote:
>> Ed,
>>
>> after some more testing and reducing I think I have a self contained
>> test. I'm not anymore sure whether it's related to control
>> characters, however, it is still only reproducible with XML 1.1.
>>
>> The key aspect I found out is that we have an own resource
>> implementation that extends XMIResourceImpl and overwrites useUUIDs,
>> returning true. I created a simple meta model (single class, single
>> attribute) and store instances in the resource until the reload
>> crashes. Note that if I create EClass instances, there seems to be no
>> problem.
>>
>> Attached the self-contained eclipse sample project.
>>
>> I still do not see the overall relation between XML 1.1 and the
>> noticed behavior, but maybe you do...
>>
>> Jan
>>
>>> Jan,
>>>
>>> No, that's totally bizarre. It sounds likely to be a bug in the JDK's
>>> SAX implementation...

--------------050400050104070604030805
Content-Type: text/html; charset=ISO-8859-15
Content-Transfer-Encoding: 8bit

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-15"
http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Jan,<br>
<br>
It's actually more of a case of garbage in garbage out.


Ed Merks
Professional Support: https://www.macromodeling.com/
Re: Resource reload problem when using save option OPTION_SAVE_ XML="1.1" [message #641081 is a reply to message #641016] Wed, 24 November 2010 08:35 Go to previous messageGo to next message
Jan Mauersberger is currently offline Jan MauersbergerFriend
Messages: 120
Registered: July 2009
Senior Member
Ed,

thanks for all the work. So basically the Xerces that comes with the
latest Sun JDK/JRE (com.sun.org.apache.xerces) is broken. The Xerces
that can be officially downloaded from Apache does not show this problem.

I remember that we always used our own Xerces library in our eclipse
Galileo based product for another bug in the JDK's parser but the bug
was fixed and we dropped that because we could not run that with Helios.

Now we have another similar issue - frustrating ;-(

There are many similar looking bugs reported against the JDK Xerces in
the past but they probably only fixed that in the 1.0 related parts, not
the 1.1.

Anyway, I wonder how the relation between the two Xerces packages is...
I though the JDK uses another parser (wasn't it Crimson?).

Jan

> Jan,
>
> It's actually more of a case of garbage in garbage out. At some point
> in the growth phase, SAX is returning a bogus attribute value. Run the
> attached example to see what's going wrong. There are two versions of
> sample*.xml. They're the same except for XML version being "1.0" verses
> "1.1" and the character "&x20;" verses "&x19;". So the first (1.0)
> works fine whereas the second prints out
>
> bad attribute value: xmi:id -> dGEd-TL8o5cOTJmQ" name=
>
> because at some point the value of the xmi:id is suddenly shifted right
> by 7 characters.
>
> The older IBM JRE I have works fine but the Sun JRE has this problem; I
> assume that's what you're using too.
>
> Someone needs to open a bug against the JRE with this nice simple test case.
>
> Regards,
> Ed
>
>
> Ed Merks wrote:
>> Jan,
>>
>> It looks like a corrupted file is being produced. There's a line like
>> this:
>>
>> <sample:Sample xmi:id="cqEd-dstCePBRNeA" name=" name="12345"/>
>>
>> Please open a bugzilla with this test case and I'll try to figure out
>> why EMF is producing a corrupted result...
>>
>>
>>
>> Jan Mauersberger wrote:
>>> Ed,
>>>
>>> after some more testing and reducing I think I have a self contained
>>> test. I'm not anymore sure whether it's related to control
>>> characters, however, it is still only reproducible with XML 1.1.
>>>
>>> The key aspect I found out is that we have an own resource
>>> implementation that extends XMIResourceImpl and overwrites useUUIDs,
>>> returning true. I created a simple meta model (single class, single
>>> attribute) and store instances in the resource until the reload
>>> crashes. Note that if I create EClass instances, there seems to be no
>>> problem.
>>>
>>> Attached the self-contained eclipse sample project.
>>>
>>> I still do not see the overall relation between XML 1.1 and the
>>> noticed behavior, but maybe you do...
>>>
>>> Jan
>>>
>>>> Jan,
>>>>
>>>> No, that's totally bizarre. It sounds likely to be a bug in the JDK's
>>>> SAX implementation...
Re: Resource reload problem when using save option OPTION_SAVE_ XML="1.1" [message #641208 is a reply to message #641081] Wed, 24 November 2010 14:46 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 33218
Registered: July 2009
Senior Member
Jan,

No, I think they stopped using Crimson. I remember that causing me no
end of grief in the XSD Model...

The Sun JDK used to use a renamed copy of Xerces while the IBM JDK used
a direct version of Xerces which generally seemed better because it
didn't have old copied bugs in it.

Will you open a bug report?


Jan Mauersberger wrote:
> Ed,
>
> thanks for all the work. So basically the Xerces that comes with the
> latest Sun JDK/JRE (com.sun.org.apache.xerces) is broken. The Xerces
> that can be officially downloaded from Apache does not show this problem.
>
> I remember that we always used our own Xerces library in our eclipse
> Galileo based product for another bug in the JDK's parser but the bug
> was fixed and we dropped that because we could not run that with Helios.
>
> Now we have another similar issue - frustrating ;-(
>
> There are many similar looking bugs reported against the JDK Xerces in
> the past but they probably only fixed that in the 1.0 related parts,
> not the 1.1.
>
> Anyway, I wonder how the relation between the two Xerces packages is...
> I though the JDK uses another parser (wasn't it Crimson?).
>
> Jan
>
>> Jan,
>>
>> It's actually more of a case of garbage in garbage out. At some point
>> in the growth phase, SAX is returning a bogus attribute value. Run the
>> attached example to see what's going wrong. There are two versions of
>> sample*.xml. They're the same except for XML version being "1.0" verses
>> "1.1" and the character "&x20;" verses "&x19;". So the first (1.0)
>> works fine whereas the second prints out
>>
>> bad attribute value: xmi:id -> dGEd-TL8o5cOTJmQ" name=
>>
>> because at some point the value of the xmi:id is suddenly shifted right
>> by 7 characters.
>>
>> The older IBM JRE I have works fine but the Sun JRE has this problem; I
>> assume that's what you're using too.
>>
>> Someone needs to open a bug against the JRE with this nice simple
>> test case.
>>
>> Regards,
>> Ed
>>
>>
>> Ed Merks wrote:
>>> Jan,
>>>
>>> It looks like a corrupted file is being produced. There's a line like
>>> this:
>>>
>>> <sample:Sample xmi:id="cqEd-dstCePBRNeA" name=" name="12345"/>
>>>
>>> Please open a bugzilla with this test case and I'll try to figure out
>>> why EMF is producing a corrupted result...
>>>
>>>
>>>
>>> Jan Mauersberger wrote:
>>>> Ed,
>>>>
>>>> after some more testing and reducing I think I have a self contained
>>>> test. I'm not anymore sure whether it's related to control
>>>> characters, however, it is still only reproducible with XML 1.1.
>>>>
>>>> The key aspect I found out is that we have an own resource
>>>> implementation that extends XMIResourceImpl and overwrites useUUIDs,
>>>> returning true. I created a simple meta model (single class, single
>>>> attribute) and store instances in the resource until the reload
>>>> crashes. Note that if I create EClass instances, there seems to be no
>>>> problem.
>>>>
>>>> Attached the self-contained eclipse sample project.
>>>>
>>>> I still do not see the overall relation between XML 1.1 and the
>>>> noticed behavior, but maybe you do...
>>>>
>>>> Jan
>>>>
>>>>> Jan,
>>>>>
>>>>> No, that's totally bizarre. It sounds likely to be a bug in the JDK's
>>>>> SAX implementation...
>


Ed Merks
Professional Support: https://www.macromodeling.com/
Re: Resource reload problem when using save option OPTION_SAVE_ XML="1.1" [message #641412 is a reply to message #641208] Thu, 25 November 2010 11:22 Go to previous messageGo to next message
Jan Mauersberger is currently offline Jan MauersbergerFriend
Messages: 120
Registered: July 2009
Senior Member
Ed,

> No, I think they stopped using Crimson. I remember that causing me no
> end of grief in the XSD Model...

I see...

> The Sun JDK used to use a renamed copy of Xerces while the IBM JDK used
> a direct version of Xerces which generally seemed better because it
> didn't have old copied bugs in it.

I see...

> Will you open a bug report?

I did the very moment, bug ID 1920050, probably not yet visible in the
BUG database.

Let's see...

Jan
Re: Resource reload problem when using save option OPTION_SAVE_ XML="1.1" [message #642349 is a reply to message #641412] Tue, 30 November 2010 22:08 Go to previous messageGo to next message
Jan Mauersberger is currently offline Jan MauersbergerFriend
Messages: 120
Registered: July 2009
Senior Member
Ed,

any good idea how to best get the Xerces into the eclipse runtime? I
have tried but I get problem with the equinox runtime because it cannot
create the parser instance. Definitely a classloader issue but there are
tons of OSGI/eclipse options, none of them I got to work yet ;-(

Jan
Re: Resource reload problem when using save option OPTION_SAVE_ XML="1.1" [message #642354 is a reply to message #642349] Tue, 30 November 2010 22:58 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 33218
Registered: July 2009
Senior Member
Jan,

Such things are a bit of a nightmare. Maybe it's best to avoid the
problem entirely. You might define your own EDataType to wrap
java.lang.String and do encoding/decoding of control characters (in the
generated XyzFactoryImpl) using some scheme (not based on entities) of
your own...

I do recall some type of "endorsed library" option to force it in, but
that's so many years ago...


Jan Mauersberger wrote:
> Ed,
>
> any good idea how to best get the Xerces into the eclipse runtime? I
> have tried but I get problem with the equinox runtime because it
> cannot create the parser instance. Definitely a classloader issue but
> there are tons of OSGI/eclipse options, none of them I got to work yet
> ;-(
>
> Jan


Ed Merks
Professional Support: https://www.macromodeling.com/
Re: Resource reload problem when using save option OPTION_SAVE_ XML="1.1" [message #642453 is a reply to message #642354] Wed, 01 December 2010 12:44 Go to previous messageGo to next message
Jan Mauersberger is currently offline Jan MauersbergerFriend
Messages: 120
Registered: July 2009
Senior Member
Ed,

thanks for the comments. The custom type is unfortunately no option in
the short term.

For those who are interested: I found two solutions to tweak Equinox in
the end:

Option 1: put the xerces libraries in the ext folder of the JRE and set
the osgi.parentClassloader=fwk, otherwise the JAXP is able to know about
the Xerces but not to load it (*argl*, that took some time) Make sure
you test it with -clean as well, otherwise Equinox has all the work done
already and you will not notice whether it works or not.

Option 2: put some Xerces plugins for example the org.apache.* plugins
coming with eclipse into the framework classpath using
osgi.framework.extensions=javax.xml_1.3.4.v201005080400.jar, ...(all
required). Than use osgi.parentClassloader=fwk to configure equinox.

The version using "extension bundles" as described in another article
does not work with Equinox.

Jan

> Jan,
>
> Such things are a bit of a nightmare. Maybe it's best to avoid the
> problem entirely. You might define your own EDataType to wrap
> java.lang.String and do encoding/decoding of control characters (in the
> generated XyzFactoryImpl) using some scheme (not based on entities) of
> your own...
>
> I do recall some type of "endorsed library" option to force it in, but
> that's so many years ago...
Re: Resource reload problem when using save option OPTION_SAVE_ XML="1.1" [message #642454 is a reply to message #642453] Wed, 01 December 2010 12:45 Go to previous message
Jan Mauersberger is currently offline Jan MauersbergerFriend
Messages: 120
Registered: July 2009
Senior Member
Correction:

> Option 1: put the xerces libraries in the ext folder of the JRE and set
> the osgi.parentClassloader=fwk, otherwise the JAXP is able to know about
> the Xerces but not to load it (*argl*, that took some time) Make sure
> you test it with -clean as well, otherwise Equinox has all the work done
> already and you will not notice whether it works or not.

osgi.parentClassloader=ext of course
Previous Topic:Update of derived reference
Next Topic:[EMF Databinding] Problem binding map entries
Goto Forum:
  


Current Time: Wed Sep 25 17:51:30 GMT 2024

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

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

Back to the top