Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » Remote Application Platform (RAP) » Use TableViewer with Virtual and DeferredContentProvider problem
Use TableViewer with Virtual and DeferredContentProvider problem [message #91519] Tue, 03 June 2008 14:11 Go to next message
Eclipse UserFriend
Originally posted by: cheney_chen.i-len.com

--nextPart8088314.ZHqqYvzzjN
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8Bit

Hi,
I want to show a large number of records in TableViewer, and consider
the efficiency,I use the SWT.virtual style and the
DefferredContentProvider. Ok, It is very useful in my application,because I
can browser the records very quickly in tableViewer. Also, I add the
function for order the record in different columns, when user selected on
of the table column header, the table ascending the record by the selected
column's value, if clicked again, then reverse the order.But problem is
that when I click one of the column header, the DefferredContentProvider is
already order the records,but the result is not show in client unless I
select the tableviewer's content.I runned the same code in rcp, the problem
is not exist.I think I need to update the result in server side, maybe I
can use the UICallBack.active() method to achieve it, But I don't where to
call the method is effective.
But the way, which is the best way to set the Comparator for different
column herader with using DefferredContentProvider.You can see in my
UserTableViewer.class, the method is so ugly.
My simple test code is in attach.
any ideas?

Regard,
Cheney



--nextPart8088314.ZHqqYvzzjN
Content-Type: application/x-tar; name="DeferredContentProviderTest.tar"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="DeferredContentProviderTest.tar"

RGVmZXJyZWRDb250ZW50UHJvdmlkZXJUZXN0L3NyYy9kZWZlcnJlZGNvbnRl bnRwcm92aWRlcnRl
c3QvVXNlci5qYXZhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAw MDA2NDQAMDAwMTc1
MQAwMDAwMTQ0ADAwMDAwMDAyMDQ0ADExMDIxMjQxMTU0ADAyNjA2NAAgMAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGNoZW5leQAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAdXNlcnMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAABw
YWNrYWdlIGRlZmVycmVkY29udGVudHByb3ZpZGVydGVzdDsKCmltcG9ydCBq YXZhLnNxbC5UaW1l
c3RhbXA7CmltcG9ydCBqYXZhLnRleHQuU2ltcGxlRGF0ZUZvcm1hdDsKCnB1 YmxpYyBjbGFzcyBV
c2VyIHsKCWludCBpZDsKCXByaXZhdGUgU3RyaW5nIG5hbWU7Cglwcml2YXRl IFN0cmluZyBwYXNz
d29yZDsKCXByaXZhdGUgVGltZXN0YW1wIGNyZWF0ZURhdGU7Cglwcml2YXRl IFN0cmluZyByb2xl
OwoKCXB1YmxpYyBVc2VyKGludCBpZCwgU3RyaW5nIG5hbWUsIFN0cmluZyBw YXNzd29yZCwgVGlt
ZXN0YW1wIGNyZWF0ZURhdGUpIHsKCQl0aGlzLmlkID0gaWQ7CgkJdGhpcy5u YW1lID0gbmFtZTsK
CQl0aGlzLnBhc3N3b3JkID0gcGFzc3dvcmQ7CgkJdGhpcy5jcmVhdGVEYXRl ID0gY3JlYXRlRGF0
ZTsKCX0KCglwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7CgkJcmV0dXJuIG5h bWU7Cgl9CgoJcHVi
bGljIHZvaWQgc2V0TmFtZShTdHJpbmcgbmFtZSkgewoJCXRoaXMubmFtZSA9 IG5hbWU7Cgl9CgoJ
cHVibGljIFN0cmluZyBnZXRQYXNzd29yZCgpIHsKCQlyZXR1cm4gcGFzc3dv cmQ7Cgl9CgoJcHVi
bGljIHZvaWQgc2V0UGFzc3dvcmQoU3RyaW5nIHBhc3N3b3JkKSB7CgkJdGhp cy5wYXNzd29yZCA9
IHBhc3N3b3JkOwoJfQoKCXB1YmxpYyBUaW1lc3RhbXAgZ2V0Q3JlYXRlRGF0 ZSgpIHsKCQlyZXR1
cm4gY3JlYXRlRGF0ZTsKCX0KCglwdWJsaWMgdm9pZCBzZXRDcmVhdGVEYXRl KFRpbWVzdGFtcCBj
cmVhdGVEYXRlKSB7CgkJdGhpcy5jcmVhdGVEYXRlID0gY3JlYXRlRGF0ZTsK CX0KCglwdWJsaWMg
U3RyaW5nIGdldFJvbGUoKSB7CgkJcmV0dXJuIHJvbGU7Cgl9CgoJcHVibGlj IHZvaWQgc2V0Um9s
ZShTdHJpbmcgcm9sZSkgewoJCXRoaXMucm9sZSA9IHJvbGU7Cgl9CgoJcHVi bGljIFN0cmluZyBn
ZXRDcmVhdGVEYXRlVG9TaG93KCkgewoJCVNpbXBsZURhdGVGb3JtYXQgZm9y bWF0dGVyID0gbmV3
IFNpbXBsZURhdGVGb3JtYXQoInl5eXktTU0tZGQgSEg6bW06c3MiKTsKCQly ZXR1cm4gZm9ybWF0
dGVyLmZvcm1hdChnZXRDcmVhdGVEYXRlKCkpOwoJfQp9AAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAABEZWZl
cnJlZENvbnRlbnRQcm92aWRlclRlc3Qvc3JjL2RlZmVycmVkY29udGVudHBy b3ZpZGVydGVzdC9V
c2VyVGFibGVWaWV3ZXIuamF2YQAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0 NAAwMDAxNzUxADAw
MDAxNDQAMDAwMDAwMTYzMDAAMTEwMjEyNDEzNTEAMDMwMjE1ACAwAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAY2hlbmV5AAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAB1c2VycwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAHBhY2th
Z2UgZGVmZXJyZWRjb250ZW50cHJvdmlkZXJ0ZXN0OwoKaW1wb3J0IGphdmEu c3FsLlRpbWVzdGFt
cDsKaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CmltcG9ydCBqYXZhLnV0 aWwuQ29tcGFyYXRv
cjsKaW1wb3J0IGphdmEudXRpbC5MaXN0OwoKaW1wb3J0IG9yZy5lY2xpcHNl LmNvcmUucnVudGlt
ZS5JUHJvZ3Jlc3NNb25pdG9yOwppbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5y dW50aW1lLklTdGF0
dXM7CmltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuU3RhdHVzOwpp bXBvcnQgb3JnLmVj
bGlwc2UuY29yZS5ydW50aW1lLmpvYnMuSm9iOwppbXBvcnQgb3JnLmVjbGlw c2UuamZhY2Uudmll
d2Vycy5JQ29udGVudFByb3ZpZGVyOwppbXBvcnQgb3JnLmVjbGlwc2UuamZh Y2Uudmlld2Vycy5U
YWJsZVZpZXdlcjsKaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMu ZGVmZXJyZWQuRGVm
ZXJyZWRDb250ZW50UHJvdmlkZXI7CmltcG9ydCBvcmcuZWNsaXBzZS5qZmFj ZS52aWV3ZXJzLmRl
ZmVycmVkLlNldE1vZGVsOwppbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LlNXVDsK aW1wb3J0IG9yZy5l
Y2xpcHNlLnN3dC5ldmVudHMuU2VsZWN0aW9uQWRhcHRlcjsKaW1wb3J0IG9y Zy5lY2xpcHNlLnN3
dC5ldmVudHMuU2VsZWN0aW9uRXZlbnQ7CmltcG9ydCBvcmcuZWNsaXBzZS5z d3Qud2lkZ2V0cy5D
b21wb3NpdGU7CmltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5FdmVu dDsKaW1wb3J0IG9y
Zy5lY2xpcHNlLnN3dC53aWRnZXRzLkxpc3RlbmVyOwppbXBvcnQgb3JnLmVj bGlwc2Uuc3d0Lndp
ZGdldHMuVGFibGU7CmltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5U YWJsZUNvbHVtbjsK
CnB1YmxpYyBjbGFzcyBVc2VyVGFibGVWaWV3ZXIgZXh0ZW5kcyBUYWJsZVZp ZXdlciB7Cglwcml2
YXRlIFRhYmxlQ29sdW1uIG5hbWU7Cglwcml2YXRlIFRhYmxlQ29sdW1uIGNy ZWF0ZWRhdGU7Cglw
cml2YXRlIFRhYmxlQ29sdW1uIHJvbGU7Cglwcml2YXRlIFNldE1vZGVsIGRh dGFNb2RlbDsKCXBy
aXZhdGUgQ29tcGFyYXRvcjxVc2VyPiBuYW1lQXNjZW5kU29ydGVyOwoJcHJp dmF0ZSBDb21wYXJh
dG9yPFVzZXI+IG5hbWVEZXNjZW5kU29ydGVyOwoJcHJpdmF0ZSBDb21wYXJh dG9yPFVzZXI+IHRp
bWVBc2NlbmRTb3J0ZXI7Cglwcml2YXRlIENvbXBhcmF0b3I8VXNlcj4gdGlt ZURlc2NlbmRTb3J0
ZXI7Cglwcml2YXRlIENvbXBhcmF0b3I8VXNlcj4gcm9sZUFzY2VuZFNvcnRl cjsKCXByaXZhdGUg
Q29tcGFyYXRvcjxVc2VyPiByb2xlRGVzY2VuZFNvcnRlcjsKCXByaXZhdGUg Sm9iIGZpbmRGaWxl
c0pvYjsKCglwdWJsaWMgVXNlclRhYmxlVmlld2VyKENvbXBvc2l0ZSBwYXJl bnQsIGludCBzdHls
ZSkgewoJCXN1cGVyKHBhcmVudCwgc3R5bGUpOwoJCWluaXRDb2x1bW5zKHRo aXMuZ2V0VGFibGUo
KSk7CgkJaW5pdCgpOwoJfQoKCXByaXZhdGUgdm9pZCBpbml0KCkgewoJCXRo aXMuc2V0Q29udGVu
dFByb3ZpZGVyKG5ldyBEZWZlcnJlZENvbnRlbnRQcm92aWRlcigKCQkJCW5l dyBDb21wYXJhdG9y
PFVzZXI+KCkgewoJCQkJCXB1YmxpYyBpbnQgY29tcGFyZShVc2VyIHVzZXIx LCBVc2VyIHVzZXIy
KSB7CgkJCQkJCXJldHVybiB1c2VyMS5nZXROYW1lKCkuY29tcGFyZVRvKHVz ZXIyLmdldE5hbWUo
KSk7CgkJCQkJfQoJCQkJfSkpOwoJCXRoaXMuc2V0TGFiZWxQcm92aWRlcihu ZXcgVXNlckxhYmVs
UHJvdmlkZXIoKSk7CgkJZGF0YU1vZGVsID0gbmV3IFNldE1vZGVsKCk7CgkJ dGhpcy5zZXRJbnB1
dChkYXRhTW9kZWwpOwoJCXN0YXJ0RmluZEZpbGVzSm9iKCk7CgkJaW5pdGlh bGl6ZVNvcnRlcigp
OwoJfQoKCXByaXZhdGUgdm9pZCBzdGFydEZpbmRGaWxlc0pvYigpIHsKCQlm aW5kRmlsZXNKb2Ig
PSBuZXcgSm9iKCJGaW5kIEZpbGVzIikgewoJCQlAT3ZlcnJpZGUKCQkJcHJv dGVjdGVkIElTdGF0
dXMgcnVuKElQcm9ncmVzc01vbml0b3IgbW9uaXRvcikgewoJCQkJbW9uaXRv ci5iZWdpblRhc2so
IkZpbmQgZmlsZXMiLCBJUHJvZ3Jlc3NNb25pdG9yLlVOS05PV04pOwoJCQkJ aW5pdGlhbGl6ZVVz
ZXJMaXN0KCk7CgkJCQlpZiAobW9uaXRvci5pc0NhbmNlbGVkKCkpCgkJCQkJ cmV0dXJuIFN0YXR1
cy5DQU5DRUxfU1RBVFVTOwoJCQkJcmV0dXJuIFN0YXR1cy5PS19TVEFUVVM7 CgkJCX0KCQl9OwoJ
CWZpbmRGaWxlc0pvYi5zZXRQcmlvcml0eShKb2IuREVDT1JBVEUpOwoJCWZp bmRGaWxlc0pvYi5z
Y2hlZHVsZSgpOwoJfQoKCXByaXZhdGUgdm9pZCBpbml0aWFsaXplVXNlckxp c3QoKSB7CgkJTGlz
dDxVc2VyPiByZXN1bHQgPSBuZXcgQXJyYXlMaXN0PFVzZXI+KCk7CgkJaW50 IGNvdW50ID0gNTAw
OwoJCXdoaWxlIChjb3VudCA+IDApIHsKCQkJVXNlciB1c2VyID0gbmV3IFVz ZXIoY291bnQsIFN0
cmluZy52YWx1ZU9mKGNvdW50KSwgU3RyaW5nCgkJCQkJLnZhbHVlT2YoY291 bnQpLCBuZXcgVGlt
ZXN0YW1wKFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpKSk7CgkJCWlmIChj b3VudCAlIDIgPT0g
MCkgewoJCQkJdXNlci5zZXRSb2xlKCJhZG1pbiIpOwoJCQl9IGVsc2UgewoJ CQkJdXNlci5zZXRS
b2xlKCJzYWxlIik7CgkJCX0KCQkJcmVzdWx0LmFkZCh1c2VyKTsKCQkJaWYg KHJlc3VsdC5zaXpl
KCkgJSAxMDAgPT0gMCkgewoJCQkJZGF0YU1vZGVsLmFkZEFsbChyZXN1bHQu dG9BcnJheSgpKTsK
CQkJCXJlc3VsdC5jbGVhcigpOwoJCQl9CgkJCWNvdW50LS07CgkJfQoJfQoK CXByaXZhdGUgdm9p
ZCBpbml0aWFsaXplU29ydGVyKCkgewoJCW5hbWVBc2NlbmRTb3J0ZXIgPSBu ZXcgQ29tcGFyYXRv
cjxVc2VyPigpIHsKCQkJcHVibGljIGludCBjb21wYXJlKFVzZXIgbzEsIFVz ZXIgbzIpIHsKCQkJ
CXJldHVybiBvMS5nZXROYW1lKCkuY29tcGFyZVRvKG8yLmdldE5hbWUoKSk7 CgkJCX0KCQl9OwoJ
CW5hbWVEZXNjZW5kU29ydGVyID0gbmV3IENvbXBhcmF0b3I8VXNlcj4oKSB7 CgkJCXB1YmxpYyBp
bnQgY29tcGFyZShVc2VyIG8xLCBVc2VyIG8yKSB7CgkJCQlpbnQgcmVzdWx0 ID0gbzEuZ2V0TmFt
ZSgpLmNvbXBhcmVUbyhvMi5nZXROYW1lKCkpOwoJCQkJaWYgKHJlc3VsdCAh PSAwKSB7CgkJCQkJ
cmVzdWx0ID0gLXJlc3VsdDsKCQkJCX0KCQkJCXJldHVybiByZXN1bHQ7CgkJ CX0KCQl9OwoJCXRp
bWVBc2NlbmRTb3J0ZXIgPSBuZXcgQ29tcGFyYXRvcjxVc2VyPigpIHsKCQkJ cHVibGljIGludCBj
b21wYXJlKFVzZXIgbzEsIFVzZXIgbzIpIHsKCQkJCXJldHVybiBvMS5nZXRD cmVhdGVEYXRlVG9T
aG93KCkuY29tcGFyZVRvKAoJCQkJCQlvMi5nZXRDcmVhdGVEYXRlVG9TaG93 KCkpOwoJCQl9CgkJ
fTsKCQl0aW1lRGVzY2VuZFNvcnRlciA9IG5ldyBDb21wYXJhdG9yPFVzZXI+ KCkgewoJCQlwdWJs
aWMgaW50IGNvbXBhcmUoVXNlciBvMSwgVXNlciBvMikgewoJCQkJaW50IHJl c3VsdCA9IG8xLmdl
dENyZWF0ZURhdGVUb1Nob3coKS5jb21wYXJlVG8oCgkJCQkJCW8yLmdldENy ZWF0ZURhdGVUb1No
b3coKSk7CgkJCQlpZiAocmVzdWx0ICE9IDApIHsKCQkJCQlyZXN1bHQgPSAt cmVzdWx0OwoJCQkJ
fQoJCQkJcmV0dXJuIHJlc3VsdDsKCQkJfQoJCX07CgkJcm9sZUFzY2VuZFNv cnRlciA9IG5ldyBD
b21wYXJhdG9yPFVzZXI+KCkgewoJCQlwdWJsaWMgaW50IGNvbXBhcmUoVXNl ciBvMSwgVXNlciBv
MikgewoJCQkJcmV0dXJuIG8xLmdldFJvbGUoKS5jb21wYXJlVG8obzIuZ2V0 Um9sZSgpKTsKCQkJ
fQoJCX07CgkJcm9sZURlc2NlbmRTb3J0ZXIgPSBuZXcgQ29tcGFyYXRvcjxV c2VyPigpIHsKCgkJ
CXB1YmxpYyBpbnQgY29tcGFyZShVc2VyIG8xLCBVc2VyIG8yKSB7CgkJCQlp bnQgcmVzdWx0ID0g
bzEuZ2V0Um9sZSgpLmNvbXBhcmVUbyhvMi5nZXRSb2xlKCkpOwoJCQkJaWYg KHJlc3VsdCAhPSAw
KSB7CgkJCQkJcmVzdWx0ID0gLXJlc3VsdDsKCQkJCX0KCQkJCXJldHVybiBy ZXN1bHQ7CgkJCX0K
CQl9OwoJCW5hbWUuYWRkU2VsZWN0aW9uTGlzdGVuZXIobmV3IFNlbGVjdGlv bkFkYXB0ZXIoKSB7
CgkJCXB1YmxpYyB2b2lkIHdpZGdldFNlbGVjdGVkKFNlbGVjdGlvbkV2ZW50 IGUpIHsKCQkJCUlD
b250ZW50UHJvdmlkZXIgcHJvdmlkZXIgPSBVc2VyVGFibGVWaWV3ZXIudGhp cwoJCQkJCQkuZ2V0
Q29udGVudFByb3ZpZGVyKCk7CgkJCQlpZiAocHJvdmlkZXIgaW5zdGFuY2Vv ZiBEZWZlcnJlZENv
bnRlbnRQcm92aWRlcikgewoJCQkJCURlZmVycmVkQ29udGVudFByb3ZpZGVy IGRlZmVycmVkUHJv
dmlkZXIgPSAoRGVmZXJyZWRDb250ZW50UHJvdmlkZXIpIHByb3ZpZGVyOwoJ CQkJCVN0cmluZyBj
dXJyZW50U29ydGVyID0gKFN0cmluZykgZS53aWRnZXQKCQkJCQkJCS5nZXRE YXRhKCJjdXJyZW50
c29ydGVyIik7CgkJCQkJaWYgKGN1cnJlbnRTb3J0ZXIgPT0gbnVsbCkgewoJ CQkJCQllLndpZGdl
dC5zZXREYXRhKCJjdXJyZW50c29ydGVyIiwgImFzY2VuZHNvcnRlciIpOwoJ CQkJCQlkZWZlcnJl
ZFByb3ZpZGVyLnNldFNvcnRPcmRlcihuYW1lQXNjZW5kU29ydGVyKTsKCQkJ CQl9IGVsc2UgewoJ
CQkJCQlpZiAoY3VycmVudFNvcnRlci5lcXVhbHMoImFzY2VuZHNvcnRlciIp KSB7CgkJCQkJCQlk
ZWZlcnJlZFByb3ZpZGVyLnNldFNvcnRPcmRlcihuYW1lRGVzY2VuZFNvcnRl cik7CgkJCQkJCQll
LndpZGdldC5zZXREYXRhKCJjdXJyZW50c29ydGVyIiwgImRlc2NlbmRzb3J0 ZXIiKTsKCQkJCQkJ
fSBlbHNlIHsKCQkJCQkJCWRlZmVycmVkUHJvdmlkZXIuc2V0U29ydE9yZGVy KG5hbWVBc2NlbmRT
b3J0ZXIpOwoJCQkJCQkJZS53aWRnZXQuc2V0RGF0YSgiY3VycmVudHNvcnRl ciIsICJhc2NlbmRz
b3J0ZXIiKTsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJfQoJCX0pOwoKCQlj cmVhdGVkYXRlLmFk
ZFNlbGVjdGlvbkxpc3RlbmVyKG5ldyBTZWxlY3Rpb25BZGFwdGVyKCkgewoJ CQlwdWJsaWMgdm9p
ZCB3aWRnZXRTZWxlY3RlZChTZWxlY3Rpb25FdmVudCBlKSB7CgkJCQlJQ29u dGVudFByb3ZpZGVy
IHByb3ZpZGVyID0gVXNlclRhYmxlVmlld2VyLnRoaXMKCQkJCQkJLmdldENv bnRlbnRQcm92aWRl
cigpOwoJCQkJaWYgKHByb3ZpZGVyIGluc3RhbmNlb2YgRGVmZXJyZWRDb250 ZW50UHJvdmlkZXIp
IHsKCQkJCQlEZWZlcnJlZENvbnRlbnRQcm92aWRlciBkZWZlcnJlZFByb3Zp ZGVyID0gKERlZmVy
cmVkQ29udGVudFByb3ZpZGVyKSBwcm92aWRlcjsKCQkJCQlTdHJpbmcgY3Vy cmVudFNvcnRlciA9
IChTdHJpbmcpIGUud2lkZ2V0CgkJCQkJCQkuZ2V0RGF0YSgiY3VycmVudHNv cnRlciIpOwoJCQkJ
CWlmIChjdXJyZW50U29ydGVyID09IG51bGwpIHsKCQkJCQkJZS53aWRnZXQu c2V0RGF0YSgiY3Vy
cmVudHNvcnRlciIsICJhc2NlbmRzb3J0ZXIiKTsKCQkJCQkJZGVmZXJyZWRQ cm92aWRlci5zZXRT
b3J0T3JkZXIodGltZUFzY2VuZFNvcnRlcik7CgkJCQkJfSBlbHNlIHsKCQkJ CQkJaWYgKGN1cnJl
bnRTb3J0ZXIuZXF1YWxzKCJhc2NlbmRzb3J0ZXIiKSkgewoJCQkJCQkJZGVm ZXJyZWRQcm92aWRl
ci5zZXRTb3J0T3JkZXIodGltZURlc2NlbmRTb3J0ZXIpOwoJCQkJCQkJZS53 aWRnZXQuc2V0RGF0
YSgiY3VycmVudHNvcnRlciIsICJkZXNjZW5kc29ydGVyIik7CgkJCQkJCX0g ZWxzZSB7CgkJCQkJ
CQlkZWZlcnJlZFByb3ZpZGVyLnNldFNvcnRPcmRlcih0aW1lQXNjZW5kU29y dGVyKTsKCQkJCQkJ
CWUud2lkZ2V0LnNldERhdGEoImN1cnJlbnRzb3J0ZXIiLCAiYXNjZW5kc29y dGVyIik7CgkJCQkJ
CX0KCQkJCQl9CgkJCQl9CgkJCX0KCQl9KTsKCgkJcm9sZS5hZGRTZWxlY3Rp b25MaXN0ZW5lcihu
ZXcgU2VsZWN0aW9uQWRhcHRlcigpIHsKCQkJcHVibGljIHZvaWQgd2lkZ2V0 U2VsZWN0ZWQoU2Vs
ZWN0aW9uRXZlbnQgZSkgewoJCQkJSUNvbnRlbnRQcm92aWRlciBwcm92aWRl ciA9IFVzZXJUYWJs
ZVZpZXdlci50aGlzCgkJCQkJCS5nZXRDb250ZW50UHJvdmlkZXIoKTsKCQkJ CWlmIChwcm92aWRl
ciBpbnN0YW5jZW9mIERlZmVycmVkQ29udGVudFByb3ZpZGVyKSB7CgkJCQkJ RGVmZXJyZWRDb250
ZW50UHJvdmlkZXIgZGVmZXJyZWRQcm92aWRlciA9IChEZWZlcnJlZENvbnRl bnRQcm92aWRlcikg
cHJvdmlkZXI7CgkJCQkJU3RyaW5nIGN1cnJlbnRTb3J0ZXIgPSAoU3RyaW5n KSBlLndpZGdldAoJ
CQkJCQkJLmdldERhdGEoImN1cnJlbnRzb3J0ZXIiKTsKCQkJCQlpZiAoY3Vy cmVudFNvcnRlciA9
PSBudWxsKSB7CgkJCQkJCWUud2lkZ2V0LnNldERhdGEoImN1cnJlbnRzb3J0 ZXIiLCAiYXNjZW5k
c29ydGVyIik7CgkJCQkJCWRlZmVycmVkUHJvdmlkZXIuc2V0U29ydE9yZGVy KHJvbGVBc2NlbmRT
b3J0ZXIpOwoJCQkJCX0gZWxzZSB7CgkJCQkJCWlmIChjdXJyZW50U29ydGVy LmVxdWFscygiYXNj
ZW5kc29ydGVyIikpIHsKCQkJCQkJCWRlZmVycmVkUHJvdmlkZXIuc2V0U29y dE9yZGVyKHJvbGVE
ZXNjZW5kU29ydGVyKTsKCQkJCQkJCWUud2lkZ2V0LnNldERhdGEoImN1cnJl bnRzb3J0ZXIiLCAi
ZGVzY2VuZHNvcnRlciIpOwoJCQkJCQl9IGVsc2UgewoJCQkJCQkJZGVmZXJy ZWRQcm92aWRlci5z
ZXRTb3J0T3JkZXIocm9sZUFzY2VuZFNvcnRlcik7CgkJCQkJCQllLndpZGdl dC5zZXREYXRhKCJj
dXJyZW50c29ydGVyIiwgImFzY2VuZHNvcnRlciIpOwoJCQkJCQl9CgkJCQkJ fQoJCQkJfQoJCQl9
CgkJfSk7Cgl9CgoJcHJpdmF0ZSB2b2lkIGluaXRDb2x1bW5zKGZpbmFsIFRh YmxlIHRhYmxlKSB7
CgkJdGFibGUuc2V0SGVhZGVyVmlzaWJsZSh0cnVlKTsKCQl0YWJsZS5zZXRM aW5lc1Zpc2libGUo
dHJ1ZSk7CgoJCW5hbWUgPSBuZXcgVGFibGVDb2x1bW4odGFibGUsIFNXVC5O T05FKTsKCQluYW1l
LnNldFRleHQoIlVzZXIgTmFtZSIpOwoKCQljcmVhdGVkYXRlID0gbmV3IFRh YmxlQ29sdW1uKHRh
YmxlLCBTV1QuTk9ORSk7CgkJY3JlYXRlZGF0ZS5zZXRUZXh0KCJDcmVhdGUg RGF0ZSIpOwoKCQly
b2xlID0gbmV3IFRhYmxlQ29sdW1uKHRhYmxlLCBTV1QuTk9ORSk7CgkJcm9s ZS5zZXRUZXh0KCJS
b2xlIik7CgoJCXRhYmxlLmFkZExpc3RlbmVyKFNXVC5SZXNpemUsIG5ldyBM aXN0ZW5lcigpIHsK
CQkJcHVibGljIHZvaWQgaGFuZGxlRXZlbnQoRXZlbnQgZXZlbnQpIHsKCQkJ CXNldFRhYmxlU2l6
ZSh0YWJsZSk7CgkJCX0KCQl9KTsKCX0KCglwcml2YXRlIHZvaWQgc2V0VGFi bGVTaXplKFRhYmxl
IHRhYmxlKSB7CgkJaW50IHggPSB0YWJsZS5nZXRDbGllbnRBcmVhKCkud2lk dGggLSAxMzsKCQlu
YW1lLnNldFdpZHRoKHggKiAzMCAvIDEwMCk7CgkJY3JlYXRlZGF0ZS5zZXRX aWR0aCh4ICogMzAg
LyAxMDApOwoJCWNyZWF0ZWRhdGUuc2V0QWxpZ25tZW50KFNXVC5DRU5URVIp OwoJCXJvbGUuc2V0
V2lkdGgoeCAqIDQwIC8gMTAwKTsKCQlyb2xlLnNldEFsaWdubWVudChTV1Qu Q0VOVEVSKTsKCX0K
Cn0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAERlZmVycmVk Q29udGVudFByb3Zp
ZGVyVGVzdC9zcmMvZGVmZXJyZWRjb250ZW50cHJvdmlkZXJ0ZXN0L1VzZXJM YWJlbFByb3ZpZGVy
LmphdmEAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDE3NTEAMDAwMDE0 NAAwMDAwMDAwMTIy
MwAxMTAyMTI0MTE3MAAwMzA1MzMAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAdXN0YXIgIABjaGVuZXkAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAHVzZXJzAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcGFja2FnZSBk ZWZlcnJlZGNvbnRl
bnRwcm92aWRlcnRlc3Q7CgppbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmll d2Vycy5JVGFibGVM
YWJlbFByb3ZpZGVyOwppbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vy cy5MYWJlbFByb3Zp
ZGVyOwppbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmdyYXBoaWNzLkltYWdlOwoK cHVibGljIGNsYXNz
IFVzZXJMYWJlbFByb3ZpZGVyIGV4dGVuZHMgTGFiZWxQcm92aWRlciBpbXBs ZW1lbnRzCgkJSVRh
YmxlTGFiZWxQcm92aWRlciB7CgoJcHVibGljIEltYWdlIGdldENvbHVtbklt YWdlKE9iamVjdCBl
bGVtZW50LCBpbnQgY29sdW1uSW5kZXgpIHsKCQlyZXR1cm4gbnVsbDsKCX0K CglwdWJsaWMgU3Ry
aW5nIGdldENvbHVtblRleHQoT2JqZWN0IGVsZW1lbnQsIGludCBjb2x1bW5J bmRleCkgewoJCWlm
IChlbGVtZW50IGluc3RhbmNlb2YgVXNlcikgewoJCQlVc2VyIHVzZXIgPSAo VXNlcikgZWxlbWVu
dDsKCQkJc3dpdGNoIChjb2x1bW5JbmRleCkgewoJCQljYXNlIDA6CgkJCQly ZXR1cm4gdXNlci5n
ZXROYW1lKCk7CgkJCWNhc2UgMToKCQkJCXJldHVybiB1c2VyLmdldENyZWF0 ZURhdGVUb1Nob3co
KTsKCQkJY2FzZSAyOgoJCQkJcmV0dXJuIHVzZXIuZ2V0Um9sZSgpOwoJCQl9 CgkJfQoJCXJldHVy
biAiIjsKCX0KfQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAERlZmVycmVkQ29u dGVudFByb3ZpZGVy
VGVzdC9zcmMvZGVmZXJyZWRjb250ZW50cHJvdmlkZXJ0ZXN0L0FwcGxpY2F0 aW9uLmphdmEAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDE3NTEAMDAwMDE0NAAw MDAwMDAwMzAyMwAx
MTAyMTI0MzAzMgAwMjc0MDQAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAdXN0YXIgIABjaGVuZXkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AHVzZXJzAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcGFja2FnZSBkZWZl cnJlZGNvbnRlbnRw
cm92aWRlcnRlc3Q7CgoKaW1wb3J0IG9yZy5lY2xpcHNlLmVxdWlub3guYXBw LklBcHBsaWNhdGlv
bjsKaW1wb3J0IG9yZy5lY2xpcHNlLmVxdWlub3guYXBwLklBcHBsaWNhdGlv bkNvbnRleHQ7Cmlt
cG9ydCBvcmcuZWNsaXBzZS5yd3QubGlmZWN5Y2xlLklFbnRyeVBvaW50Owpp bXBvcnQgb3JnLmVj
bGlwc2Uuc3d0LndpZGdldHMuRGlzcGxheTsKaW1wb3J0IG9yZy5lY2xpcHNl LnVpLklXb3JrYmVu
Y2g7CmltcG9ydCBvcmcuZWNsaXBzZS51aS5QbGF0Zm9ybVVJOwppbXBvcnQg b3JnLmVjbGlwc2Uu
dWkuYXBwbGljYXRpb24uV29ya2JlbmNoQWR2aXNvcjsKCi8qKgogKiBUaGlz IGNsYXNzIGNvbnRy
b2xzIGFsbCBhc3BlY3RzIG9mIHRoZSBhcHBsaWNhdGlvbidzIGV4ZWN1dGlv bgogKi8KcHVibGlj
IGNsYXNzIEFwcGxpY2F0aW9uIGltcGxlbWVudHMgSUVudHJ5UG9pbnQgewoK CS8qCgkgKiAobm9u
LUphdmFkb2MpCgkgKiAKCSAqIEBzZWUgb3JnLmVjbGlwc2UuZXF1aW5veC5h cHAuSUFwcGxpY2F0
aW9uI3N0YXJ0KG9yZy5lY2xpcHNlLmVxdWlub3guYXBwLklBcHBsaWNhdGlv bkNvbnRleHQpCgkg
Ki8KCXB1YmxpYyBPYmplY3Qgc3RhcnQoSUFwcGxpY2F0aW9uQ29udGV4dCBj b250ZXh0KSB7CgkJ
RGlzcGxheSBkaXNwbGF5ID0gUGxhdGZvcm1VSS5jcmVhdGVEaXNwbGF5KCk7 CgkJdHJ5IHsKCQkJ
aW50IHJldHVybkNvZGUgPSBQbGF0Zm9ybVVJLmNyZWF0ZUFuZFJ1bldvcmti ZW5jaChkaXNwbGF5
LCBuZXcgQXBwbGljYXRpb25Xb3JrYmVuY2hBZHZpc29yKCkpOwoJCQlpZiAo cmV0dXJuQ29kZSA9
PSBQbGF0Zm9ybVVJLlJFVFVSTl9SRVNUQVJUKSB7CgkJCQlyZXR1cm4gSUFw cGxpY2F0aW9uLkVY
SVRfUkVTVEFSVDsKCQkJfQoJCQlyZXR1cm4gSUFwcGxpY2F0aW9uLkVYSVRf T0s7CgkJfSBmaW5h
bGx5IHsKCQkJZGlzcGxheS5kaXNwb3NlKCk7CgkJfQoJfQoKCS8qCgkgKiAo bm9uLUphdmFkb2Mp
CgkgKiAKCSAqIEBzZWUgb3JnLmVjbGlwc2UuZXF1aW5veC5hcHAuSUFwcGxp Y2F0aW9uI3N0b3Ao
KQoJICovCglwdWJsaWMgdm9pZCBzdG9wKCkgewoJCWZpbmFsIElXb3JrYmVu Y2ggd29ya2JlbmNo
ID0gUGxhdGZvcm1VSS5nZXRXb3JrYmVuY2goKTsKCQlpZiAod29ya2JlbmNo ID09IG51bGwpCgkJ
CXJldHVybjsKCQlmaW5hbCBEaXNwbGF5IGRpc3BsYXkgPSB3b3JrYmVuY2gu Z2V0RGlzcGxheSgp
OwoJCWRpc3BsYXkuc3luY0V4ZWMobmV3IFJ1bm5hYmxlKCkgewoJCQlwdWJs aWMgdm9pZCBydW4o
KSB7CgkJCQlpZiAoIWRpc3BsYXkuaXNEaXNwb3NlZCgpKQoJCQkJCXdvcmti ZW5jaC5jbG9zZSgp
OwoJCQl9CgkJfSk7Cgl9CgoJcHVibGljIGludCBjcmVhdGVVSSgpIHsKCQlE aXNwbGF5IGRpc3Bs
YXkgPSBQbGF0Zm9ybVVJLmNyZWF0ZURpc3BsYXkoKTsKCQlXb3JrYmVuY2hB ZHZpc29yIGFkdmlz
b3IgPSBuZXcgQXBwbGljYXRpb25Xb3JrYmVuY2hBZHZpc29yKCk7CgkJcmV0 dXJuIFBsYXRmb3Jt
VUkuY3JlYXRlQW5kUnVuV29ya2JlbmNoKGRpc3BsYXksIGFkdmlzb3IpOwoJ fQp9CgAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEZWZlcnJlZENvbnRlbnRQ cm92aWRlclRlc3Qv
c3JjL2RlZmVycmVkY29udGVudHByb3ZpZGVydGVzdC9BcHBsaWNhdGlvbldv cmtiZW5jaEFkdmlz
b3IuamF2YQAAAAAAAAAAMDAwMDY0NAAwMDAxNzUxADAwMDAxNDQAMDAwMDAw MDExNTMAMTEwMjEy
Mjc0NjUAMDMyNjE1ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AHVzdGFyICAAY2hlbmV5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c2Vy cwAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBhY2thZ2UgZGVmZXJyZWRj b250ZW50cHJvdmlk
ZXJ0ZXN0OwoKaW1wb3J0IG9yZy5lY2xpcHNlLnVpLmFwcGxpY2F0aW9uLklX b3JrYmVuY2hXaW5k
b3dDb25maWd1cmVyOwppbXBvcnQgb3JnLmVjbGlwc2UudWkuYXBwbGljYXRp b24uV29ya2JlbmNo
QWR2aXNvcjsKaW1wb3J0IG9yZy5lY2xpcHNlLnVpLmFwcGxpY2F0aW9uLldv cmtiZW5jaFdpbmRv
d0Fkdmlzb3I7CgpwdWJsaWMgY2xhc3MgQXBwbGljYXRpb25Xb3JrYmVuY2hB ZHZpc29yIGV4dGVu
ZHMgV29ya2JlbmNoQWR2aXNvciB7CgoJcHJpdmF0ZSBzdGF0aWMgZmluYWwg U3RyaW5nIFBFUlNQ
RUNUSVZFX0lEID0gIkRlZmVycmVkQ29udGVudFByb3ZpZGVyVGVzdC5wZXJz cGVjdGl2ZSI7CgoJ
cHVibGljIFdvcmtiZW5jaFdpbmRvd0Fkdmlzb3IgY3JlYXRlV29ya2JlbmNo V2luZG93QWR2aXNv
cigKCQkJSVdvcmtiZW5jaFdpbmRvd0NvbmZpZ3VyZXIgY29uZmlndXJlcikg ewoJCXJldHVybiBu
ZXcgQXBwbGljYXRpb25Xb3JrYmVuY2hXaW5kb3dBZHZpc29yKGNvbmZpZ3Vy ZXIpOwoJfQoKCXB1
YmxpYyBTdHJpbmcgZ2V0SW5pdGlhbFdpbmRvd1BlcnNwZWN0aXZlSWQoKSB7 CgkJcmV0dXJuIFBF
UlNQRUNUSVZFX0lEOwoJfQoKfQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEZWZlcnJlZENvbnRlbnRQcm92 aWRlclRlc3Qvc3Jj
L2RlZmVycmVkY29udGVudHByb3ZpZGVydGVzdC9BcHBsaWNhdGlvbkFjdGlv bkJhckFkdmlzb3Iu
amF2YQAAAAAAAAAAMDAwMDY0NAAwMDAxNzUxADAwMDAxNDQAMDAwMDAwMDMx NzAAMTEwMjEyMjc0
NjUAMDMyNTM2ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAHVz
dGFyICAAY2hlbmV5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c2VycwAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBhY2thZ2UgZGVmZXJyZWRjb250 ZW50cHJvdmlkZXJ0
ZXN0OwoKaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLmFjdGlvbi5JTWVudU1h bmFnZXI7CmltcG9y
dCBvcmcuZWNsaXBzZS5qZmFjZS5hY3Rpb24uTWVudU1hbmFnZXI7CmltcG9y dCBvcmcuZWNsaXBz
ZS51aS5JV29ya2JlbmNoQWN0aW9uQ29uc3RhbnRzOwppbXBvcnQgb3JnLmVj bGlwc2UudWkuSVdv
cmtiZW5jaFdpbmRvdzsKaW1wb3J0IG9yZy5lY2xpcHNlLnVpLmFjdGlvbnMu QWN0aW9uRmFjdG9y
eTsKaW1wb3J0IG9yZy5lY2xpcHNlLnVpLmFjdGlvbnMuQWN0aW9uRmFjdG9y eS5JV29ya2JlbmNo
QWN0aW9uOwppbXBvcnQgb3JnLmVjbGlwc2UudWkuYXBwbGljYXRpb24uQWN0 aW9uQmFyQWR2aXNv
cjsKaW1wb3J0IG9yZy5lY2xpcHNlLnVpLmFwcGxpY2F0aW9uLklBY3Rpb25C YXJDb25maWd1cmVy
OwoKLyoqCiAqIEFuIGFjdGlvbiBiYXIgYWR2aXNvciBpcyByZXNwb25zaWJs ZSBmb3IgY3JlYXRp
bmcsIGFkZGluZywgYW5kIGRpc3Bvc2luZyBvZgogKiB0aGUgYWN0aW9ucyBh ZGRlZCB0byBhIHdv
cmtiZW5jaCB3aW5kb3cuIEVhY2ggd2luZG93IHdpbGwgYmUgcG9wdWxhdGVk IHdpdGgKICogbmV3
IGFjdGlvbnMuCiAqLwpwdWJsaWMgY2xhc3MgQXBwbGljYXRpb25BY3Rpb25C YXJBZHZpc29yIGV4
dGVuZHMgQWN0aW9uQmFyQWR2aXNvciB7CgoJLy8gQWN0aW9ucyAtIGltcG9y dGFudCB0byBhbGxv
Y2F0ZSB0aGVzZSBvbmx5IGluIG1ha2VBY3Rpb25zLCBhbmQgdGhlbiB1c2UK CS8vIHRoZW0KCS8v
IGluIHRoZSBmaWxsIG1ldGhvZHMuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBh Y3Rpb25zIGFyZW4n
dCByZWNyZWF0ZWQKCS8vIHdoZW4gZmlsbEFjdGlvbkJhcnMgaXMgY2FsbGVk IHdpdGggRklMTF9Q
Uk9YWS4KCXByaXZhdGUgSVdvcmtiZW5jaEFjdGlvbiBleGl0QWN0aW9uOwoK CXB1YmxpYyBBcHBs
aWNhdGlvbkFjdGlvbkJhckFkdmlzb3IoSUFjdGlvbkJhckNvbmZpZ3VyZXIg Y29uZmlndXJlcikg
ewoJCXN1cGVyKGNvbmZpZ3VyZXIpOwoJfQoKCXByb3RlY3RlZCB2b2lkIG1h a2VBY3Rpb25zKGZp
bmFsIElXb3JrYmVuY2hXaW5kb3cgd2luZG93KSB7CgkJLy8gQ3JlYXRlcyB0 aGUgYWN0aW9ucyBh
bmQgcmVnaXN0ZXJzIHRoZW0uCgkJLy8gUmVnaXN0ZXJpbmcgaXMgbmVlZGVk IHRvIGVuc3VyZSB0
aGF0IGtleSBiaW5kaW5ncyB3b3JrLgoJCS8vIFRoZSBjb3JyZXNwb25kaW5n IGNvbW1hbmRzIGtl
eWJpbmRpbmdzIGFyZSBkZWZpbmVkIGluIHRoZSBwbHVnaW4ueG1sCgkJLy8g ZmlsZS4KCQkvLyBS
ZWdpc3RlcmluZyBhbHNvIHByb3ZpZGVzIGF1dG9tYXRpYyBkaXNwb3NhbCBv ZiB0aGUgYWN0aW9u
cyB3aGVuCgkJLy8gdGhlIHdpbmRvdyBpcyBjbG9zZWQuCgoJCWV4aXRBY3Rp b24gPSBBY3Rpb25G
YWN0b3J5LlFVSVQuY3JlYXRlKHdpbmRvdyk7CgkJcmVnaXN0ZXIoZXhpdEFj dGlvbik7Cgl9CgoJ
cHJvdGVjdGVkIHZvaWQgZmlsbE1lbnVCYXIoSU1lbnVNYW5hZ2VyIG1lbnVC YXIpIHsKCQlNZW51
TWFuYWdlciBmaWxlTWVudSA9IG5ldyBNZW51TWFuYWdlcigiJkZpbGUiLAoJ CQkJSVdvcmtiZW5j
aEFjdGlvbkNvbnN0YW50cy5NX0ZJTEUpOwoJCW1lbnVCYXIuYWRkKGZpbGVN ZW51KTsKCQlmaWxl
TWVudS5hZGQoZXhpdEFjdGlvbik7Cgl9Cgp9CgAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAARGVmZXJyZWRDb250ZW50UHJvdmlkZXJU ZXN0L3NyYy9kZWZl
cnJlZGNvbnRlbnRwcm92aWRlcnRlc3QvQXBwbGljYXRpb25Xb3JrYmVuY2hX aW5kb3dBZHZpc29y
LmphdmEAADAwMDA2NDQAMDAwMTc1MQAwMDAwMTQ0ADAwMDAwMDAxNjE0ADEx MDIxMjI3NDY1ADAz
NDAwNwAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAB1c3RhciAg
AGNoZW5leQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXNlcnMAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAABwYWNrYWdlIGRlZmVycmVkY29udGVudHBy b3ZpZGVydGVzdDsK
CmltcG9ydCBvcmcuZWNsaXBzZS5zd3QuZ3JhcGhpY3MuUG9pbnQ7CmltcG9y dCBvcmcuZWNsaXBz
ZS51aS5hcHBsaWNhdGlvbi5BY3Rpb25CYXJBZHZpc29yOwppbXBvcnQgb3Jn LmVjbGlwc2UudWku
YXBwbGljYXRpb24uSUFjdGlvbkJhckNvbmZpZ3VyZXI7CmltcG9ydCBvcmcu ZWNsaXBzZS51aS5h
cHBsaWNhdGlvbi5JV29ya2JlbmNoV2luZG93Q29uZmlndXJlcjsKaW1wb3J0 IG9yZy5lY2xpcHNl
LnVpLmFwcGxpY2F0aW9uLldvcmtiZW5jaFdpbmRvd0Fkdmlzb3I7CgpwdWJs aWMgY2xhc3MgQXBw
bGljYXRpb25Xb3JrYmVuY2hXaW5kb3dBZHZpc29yIGV4dGVuZHMgV29ya2Jl bmNoV2luZG93QWR2
aXNvciB7CgoJcHVibGljIEFwcGxpY2F0aW9uV29ya2JlbmNoV2luZG93QWR2 aXNvcihJV29ya2Jl
bmNoV2luZG93Q29uZmlndXJlciBjb25maWd1cmVyKSB7CgkJc3VwZXIoY29u ZmlndXJlcik7Cgl9
CgoJcHVibGljIEFjdGlvbkJhckFkdmlzb3IgY3JlYXRlQWN0aW9uQmFyQWR2 aXNvcigKCQkJSUFj
dGlvbkJhckNvbmZpZ3VyZXIgY29uZmlndXJlcikgewoJCXJldHVybiBuZXcg QXBwbGljYXRpb25B
Y3Rpb25CYXJBZHZpc29yKGNvbmZpZ3VyZXIpOwoJfQoKCXB1YmxpYyB2b2lk IHByZVdpbmRvd09w
ZW4oKSB7CgkJSVdvcmtiZW5jaFdpbmRvd0NvbmZpZ3VyZXIgY29uZmlndXJl ciA9IGdldFdpbmRv
d0NvbmZpZ3VyZXIoKTsKCQljb25maWd1cmVyLnNldEluaXRpYWxTaXplKG5l dyBQb2ludCg0MDAs
IDMwMCkpOwoJCWNvbmZpZ3VyZXIuc2V0U2hvd0Nvb2xCYXIoZmFsc2UpOwoJ CWNvbmZpZ3VyZXIu
c2V0U2hvd1N0YXR1c0xpbmUoZmFsc2UpOwoJCWNvbmZpZ3VyZXIuc2V0VGl0 bGUoIlJDUCBBcHBs
aWNhdGlvbiIpOwoJfQp9CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAARGVmZXJyZWRDb250ZW50UHJvdmlkZXJUZXN0 L3NyYy9kZWZlcnJl
ZGNvbnRlbnRwcm92aWRlcnRlc3QvUGVyc3BlY3RpdmUuamF2YQAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAADAwMDA2NDQAMDAwMTc1MQAwMDAwMTQ0ADAwMDAwMDAwNjU2ADExMDIx MjI3NDY1ADAyNzQ1
NwAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAB1c3RhciAgAGNo
ZW5leQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXNlcnMAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAABwYWNrYWdlIGRlZmVycmVkY29udGVudHByb3Zp ZGVydGVzdDsKCmlt
cG9ydCBvcmcuZWNsaXBzZS51aS5JUGFnZUxheW91dDsKaW1wb3J0IG9yZy5l Y2xpcHNlLnVpLklQ
ZXJzcGVjdGl2ZUZhY3Rvcnk7CgpwdWJsaWMgY2xhc3MgUGVyc3BlY3RpdmUg aW1wbGVtZW50cyBJ
UGVyc3BlY3RpdmVGYWN0b3J5IHsKCglwdWJsaWMgdm9pZCBjcmVhdGVJbml0 aWFsTGF5b3V0KElQ
YWdlTGF5b3V0IGxheW91dCkgewoJCVN0cmluZyBlZGl0b3JBcmVhID0gbGF5 b3V0LmdldEVkaXRv
ckFyZWEoKTsKCQlsYXlvdXQuc2V0RWRpdG9yQXJlYVZpc2libGUoZmFsc2Up OwoJCWxheW91dC5z
ZXRGaXhlZCh0cnVlKTsKCQkKCQlsYXlvdXQuYWRkU3RhbmRhbG9uZVZpZXco Vmlldy5JRCwgIGZh
bHNlLCBJUGFnZUxheW91dC5MRUZULCAxLjBmLCBlZGl0b3JBcmVhKTsKCX0K Cn0KAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAERlZmVycmVkQ29udGVudFByb3ZpZGVyVGVzdC9z cmMvZGVmZXJyZWRj
b250ZW50cHJvdmlkZXJ0ZXN0L1ZpZXcuamF2YQAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAwMDAwNjQ0ADAwMDE3NTEAMDAwMDE0NAAwMDAwMDAwMTMwNAAxMTAyMTI0 MTM1NwAwMjYwNjMA
IDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA dXN0YXIgIABjaGVu
ZXkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzZXJzAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAcGFja2FnZSBkZWZlcnJlZGNvbnRlbnRwcm92aWRl cnRlc3Q7CgppbXBv
cnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5UYWJsZVZpZXdlcjsKaW1w b3J0IG9yZy5lY2xp
cHNlLnN3dC5TV1Q7CmltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5D b21wb3NpdGU7Cmlt
cG9ydCBvcmcuZWNsaXBzZS51aS5wYXJ0LlZpZXdQYXJ0OwoKcHVibGljIGNs YXNzIFZpZXcgZXh0
ZW5kcyBWaWV3UGFydCB7CglwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBJ RCA9ICJEZWZlcnJl
ZENvbnRlbnRQcm92aWRlclRlc3QudmlldyI7CgoJcHJpdmF0ZSBUYWJsZVZp ZXdlciB2aWV3ZXI7
CgoJLyoqCgkgKiBUaGlzIGlzIGEgY2FsbGJhY2sgdGhhdCB3aWxsIGFsbG93 IHVzIHRvIGNyZWF0
ZSB0aGUgdmlld2VyIGFuZCBpbml0aWFsaXplCgkgKiBpdC4KCSAqLwoJcHVi bGljIHZvaWQgY3Jl
YXRlUGFydENvbnRyb2woQ29tcG9zaXRlIHBhcmVudCkgewoJCXZpZXdlciA9 IG5ldyBVc2VyVGFi
bGVWaWV3ZXIocGFyZW50LCBTV1QuTVVMVEkgfCBTV1QuSF9TQ1JPTEwKCQkJ CXwgU1dULlZfU0NS
T0xMIHwgU1dULlZJUlRVQUwpOwoJfQoKCS8qKgoJICogUGFzc2luZyB0aGUg Zm9jdXMgcmVxdWVz
dCB0byB0aGUgdmlld2VyJ3MgY29udHJvbC4KCSAqLwoJcHVibGljIHZvaWQg c2V0Rm9jdXMoKSB7
CgkJdmlld2VyLmdldENvbnRyb2woKS5zZXRGb2N1cygpOwoJfQp9AAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAERlZmVycmVkQ29udGVudFByb3ZpZGVyVGVzdC9zcmMv ZGVmZXJyZWRjb250
ZW50cHJvdmlkZXJ0ZXN0L0FjdGl2YXRvci5qYXZhAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAw
MDAwNjQ0ADAwMDE3NTEAMDAwMDE0NAAwMDAwMDAwMjUyMgAxMTAyMTIyNzQ2 NQAwMjcxMTQAIDAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0 YXIgIABjaGVuZXkA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzZXJzAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAcGFja2FnZSBkZWZlcnJlZGNvbnRlbnRwcm92aWRlcnRl c3Q7CgppbXBvcnQg
b3JnLmVjbGlwc2UuamZhY2UucmVzb3VyY2UuSW1hZ2VEZXNjcmlwdG9yOwpp bXBvcnQgb3JnLmVj
bGlwc2UudWkucGx1Z2luLkFic3RyYWN0VUlQbHVnaW47CmltcG9ydCBvcmcu b3NnaS5mcmFtZXdv
cmsuQnVuZGxlQ29udGV4dDsKCi8qKgogKiBUaGUgYWN0aXZhdG9yIGNsYXNz IGNvbnRyb2xzIHRo
ZSBwbHVnLWluIGxpZmUgY3ljbGUKICovCnB1YmxpYyBjbGFzcyBBY3RpdmF0 b3IgZXh0ZW5kcyBB
YnN0cmFjdFVJUGx1Z2luIHsKCgkvLyBUaGUgcGx1Zy1pbiBJRAoJcHVibGlj IHN0YXRpYyBmaW5h
bCBTdHJpbmcgUExVR0lOX0lEID0gIkRlZmVycmVkQ29udGVudFByb3ZpZGVy VGVzdCI7CgoJLy8g
VGhlIHNoYXJlZCBpbnN0YW5jZQoJcHJpdmF0ZSBzdGF0aWMgQWN0aXZhdG9y IHBsdWdpbjsKCQoJ
LyoqCgkgKiBUaGUgY29uc3RydWN0b3IKCSAqLwoJcHVibGljIEFjdGl2YXRv cigpIHsKCX0KCgkv
KgoJICogKG5vbi1KYXZhZG9jKQoJICogQHNlZSBvcmcuZWNsaXBzZS51aS5w bHVnaW4uQWJzdHJh
Y3RVSVBsdWdpbiNzdGFydChvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlQ29u dGV4dCkKCSAqLwoJ
cHVibGljIHZvaWQgc3RhcnQoQnVuZGxlQ29udGV4dCBjb250ZXh0KSB0aHJv d3MgRXhjZXB0aW9u
IHsKCQlzdXBlci5zdGFydChjb250ZXh0KTsKCQlwbHVnaW4gPSB0aGlzOwoJ fQoKCS8qCgkgKiAo
bm9uLUphdmFkb2MpCgkgKiBAc2VlIG9yZy5lY2xpcHNlLnVpLnBsdWdpbi5B YnN0cmFjdFVJUGx1
Z2luI3N0b3Aob3JnLm9zZ2kuZnJhbWV3b3JrLkJ1bmRsZUNvbnRleHQpCgkg Ki8KCXB1YmxpYyB2
b2lkIHN0b3AoQnVuZGxlQ29udGV4dCBjb250ZXh0KSB0aHJvd3MgRXhjZXB0 aW9uIHsKCQlwbHVn
aW4gPSBudWxsOwoJCXN1cGVyLnN0b3AoY29udGV4dCk7Cgl9CgoJLyoqCgkg KiBSZXR1cm5zIHRo
ZSBzaGFyZWQgaW5zdGFuY2UKCSAqCgkgKiBAcmV0dXJuIHRoZSBzaGFyZWQg aW5zdGFuY2UKCSAq
LwoJcHVibGljIHN0YXRpYyBBY3RpdmF0b3IgZ2V0RGVmYXVsdCgpIHsKCQly ZXR1cm4gcGx1Z2lu
OwoJfQoKCS8qKgoJICogUmV0dXJucyBhbiBpbWFnZSBkZXNjcmlwdG9yIGZv ciB0aGUgaW1hZ2Ug
ZmlsZSBhdCB0aGUgZ2l2ZW4KCSAqIHBsdWctaW4gcmVsYXRpdmUgcGF0aAoJ ICoKCSAqIEBwYXJh
bSBwYXRoIHRoZSBwYXRoCgkgKiBAcmV0dXJuIHRoZSBpbWFnZSBkZXNjcmlw dG9yCgkgKi8KCXB1
YmxpYyBzdGF0aWMgSW1hZ2VEZXNjcmlwdG9yIGdldEltYWdlRGVzY3JpcHRv cihTdHJpbmcgcGF0
aCkgewoJCXJldHVybiBpbWFnZURlc2NyaXB0b3JGcm9tUGx1Z2luKFBMVUdJ Tl9JRCwgcGF0aCk7
Cgl9Cn0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAARGVmZXJyZWRDb250ZW50UHJvdmlkZXJUZXN0L3NyYy9kZWZl cnJlZGNvbnRlbnRw
cm92aWRlcnRlc3QvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAADAwMDA3
NTUAMDAwMTc1MQAwMDAwMTQ0ADAwMDAwMDAwMDAwADExMDIxMjQyMTc3ADAy NDMxMQAgNQAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAg AGNoZW5leQAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAdXNlcnMAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAABEZWZlcnJlZENvbnRlbnRQcm92aWRlclRlc3QvaWNvbnMvYWx0 X3dpbmRvd18xNi5n
aWYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAMDAwMDY0
NAAwMDAxNzUxADAwMDAxNDQAMDAwMDAwMDExNzUAMTEwMjEyMjc0NjUAMDIy MTYyACAwAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAA Y2hlbmV5AAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAB1c2VycwAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAEdJRjg5YRAAEADmAACLgRrW15h+lU3K6KcxVwpUlzHj7bnZ86vN 6Jrz87nl76rm4ZXh
66ano1bNxoaZnViIfBXt+rvV4aOltHOizGeco1ONgiWhq2To/Ifz88ust3UE DACls3yksm2run2u
uJqepl2ShyTC3aDf5I2ntIa6zJuFdwuDcwbG5o69xKa3xXmqsWj19dBbWgmm r3exvZyYkEK2rWeb
oUyuwIlKcztJaRii8IV3ZgLQ7p3f4ZXC5ofL5Yy0w4i6zYOjr2jH15qHeQ/n /3/K07X//+Oerm7k
8q+uyX222njS5qjR7aXW6KrZ4qfc5qnY6qTb6qu66XGRhz2fmj2vwJKonWOy uobE34OmuHzcxYGO
ila+0oiQjkOVwGeGpGHb5rKfvmRnWQJFZDK3v65GfCRWZy/AwHbU3X/L0qjR 3aegtWPGw5SuvG+4
s126w4P//8nT55uJjWRffjHV54PY4YS2rHPL4oDg9LW1woPi3a3Hzaj+/5G6 xIi/tHm6wb6prWXB
2pO0xG8h+QQAAAAAACwAAAAAEAAQAAAH2oB/goOEhYIBOSNyZXF0VTsIbk1O Z4ILIxhBTxQURzoo
OAcHSpYYaGBiNQJqKj1+CAdIgld5NBsbDTF9Kxp2fkkDgmReBRtYUw8gFx0a PCLBfwk2BFoOD8kX
PhMeJSKCJyc3JkAm40AQ6BYhgltwLWsNMhXzyi5UeoIhAF8Q+gD/FixAgRHl kAcCAupM6DCBA4kP
fIRIEDTnThICREpYcfghDB4Jlf5kGMJmDBwuM6S8SGGGSZGJf1g4eNMmiwAj P84sURAhQhdBafZk
SMCAgYKjCgwoDWmoqaBAADsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAABEZWZlcnJlZENvbnRlbnRQcm92aWRlclRlc3QvaWNvbnMvYWx0X3dp bmRvd18zMi5naWYA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAMDAwMDY0NAAw
MDAxNzUxADAwMDAxNDQAMDAwMDAwMDIyNTAAMTEwMjEyMjc0NjUAMDIyMTUz ACAwAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAY2hl bmV5AAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAB1c2VycwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAEdJRjg5YSAAIADmAADW9KnH1qfK0rnG1Jjs+rVgXRO0ynbT5orT2smt sXXk7ZezunzDyYfm
8bHb9rNvk0zr+Lrw/Lylp24UGha7xoq1wITc6I/K6JeNhSKnqVaQiCnz/sS8 yZS2w4rCy6qXkjve
66y2/JPL24v6/LuUjTPj7qy+u3y5woGprXGyunfX3Yu0vn++yaG3xJKbl0Wh nU/N5aTj+rTX85y5
xZa45X/y/cvj+q2Mghi9yY7BzJVkfEOTtmHE5YXo9bPr76G9y52r1HTB4o3M 6Y7p9LmjuWa423m7
xpvI44Khn2zh9arc4aXa3532+7bc5p3T3LrR66vj7LK31oXh9KPs/bDR75OB ik7J1n/w8KmZslh+
exzGzrDV3aZ/oFPU6aaZl2X+/cXm97fi97fO8KE9OA2uwW2vtHGvtnjP5rDu +8P//8mWnljW7ZiA
lk7T5Kacx2TE6Yrg3JKg3GzK/5bQ+I2MlTiTkCy8znqiv3Szum6xrW6uyYOw wWj29Lf4877j6Jq0
xG8h+QQAAAAAACwAAAAAIAAgAAAH/4B/goOEhYaHhVdXPj4KjhYWB5KTB1Rr MlKZSTYEnREQEIKL
jQqQkkeoPKo8QlRUMrAAmzExBBBggoyPp0dFRTTAwDxvF8VrAAAOtDFguH+N kQdWdgYGQEC+10BR
Qd1BF2LIDuNhYbmlB3ZkRDs7bm47XDsGdgwMA/jF4eIO5n9+kUSQ4aJDx4MH OtjgMWGv4b0BAS7A
gJGsnyA4kYoQ0TGhYwE1JkwsWLDixAkGFBjkgDiAIrmLKkQY2MGxYxUJKBIk MDOy5AkKOFYGgPFk
nANBKlRY+ROvow4vSHDq5LmiZAegQl0e/WOlmgEaD8ZUgRpVKk+SFSpc5ZAj QIAnyf8EHYhyh0ic
MVlQSNi7N6cZqivUYoX4FoCgNUJ4gB1DxIRevn4Bq137wy2MLoeFvJFTIIsB E2VQiBa9MwXJwII5
cLCM+c+N1xg6Y5hNG4OG27dJ6CbxobcLFy9eZMg8J8QYLAxSlFm+/K/pqqjX rhYQoI2g23ViY/iw
e3fv7x9+/w4uPEOe4X9EiBBC4ziDEyniyz9dNW2HDi2MsAggYIt117B1psFs uBXYHW++ARccelLA
MsUYdIhAgUnQ1ZfWZC3MwIIHWgiAwBYgCJKJDEw8UEAQKJl0oX334achhx46 sUSIf0yxxglI3DHG
HgHgQAEFLQaZoX4eeCCAhyDSKMH/TRekwUUBFwyAg48ttpDhDEQaGaMSINBo ghRTAGDDgxk8MYBq
HFg5A5ZZHokAAktAUUIJgoxAwBRJADCCDYydMUAOaHLwAwsbdughAlw20ACd fzDRyRQ2ALBAFB+d
EcAAP2S6oZZvwgnFED0oWqejBDTgxQBfxMBGFR044ZZbbr7pRBOfgjJEA3WO MEIPVQwQgQ02RKAH
F1icEIATyCLghBJKlDAEBBFEC8EQuTIhwQAbdEJAEl3EAAAMBzQhrh8lNNAD tNFusAEaofzxBR95
LPEFE6SWAEIPnYDRw77nEhBtBOpuUEMNaAjSxwlKpKHrCPSWgK+2/v4LcMAD V4zIBcUYGxIIADsA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AERlZmVycmVkQ29udGVudFByb3ZpZGVyVGVzdC9NRVRBLUlORi9NQU5JRkVT VC5NRgAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAw MDAwNjQ0ADAwMDE3
NTEAMDAwMDE0NAAwMDAwMDAwMDUwNwAxMTAyMTI0MjY0NQAwMjA0NzAAIDAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABjaGVuZXkA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAHVzZXJzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
TWFuaWZlc3QtVmVyc2lvbjogMS4wCkJ1bmRsZS1NYW5pZmVzdFZlcnNpb246 IDIKQnVuZGxlLU5h
bWU6IERlZmVycmVkQ29udGVudFByb3ZpZGVyVGVzdCBQbHVnLWluCkJ1bmRs ZS1TeW1ib2xpY05h
bWU6IERlZmVycmVkQ29udGVudFByb3ZpZGVyVGVzdDsgc2luZ2xldG9uOj10 cnVlCkJ1bmRsZS1W
ZXJzaW9uOiAxLjAuMApCdW5kbGUtQWN0aXZhdG9yOiBkZWZlcnJlZGNvbnRl bnRwcm92aWRlcnRl
c3QuQWN0aXZhdG9yClJlcXVpcmUtQnVuZGxlOiBvcmcuZWNsaXBzZS5jb3Jl LnJ1bnRpbWUsCiBv
cmcuZWNsaXBzZS5yYXAudWkKRWNsaXBzZS1MYXp5U3RhcnQ6IHRydWUKAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAABE
ZWZlcnJlZENvbnRlbnRQcm92aWRlclRlc3QvYmluL2RlZmVycmVkY29udGVu dHByb3ZpZGVydGVz
dC9BY3RpdmF0b3IuY2xhc3MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAw MDY0NAAwMDAxNzUx
ADAwMDAxNDQAMDAwMDAwMDMxMzEAMTEwMjEyNDMzNjcAMDI3MjU1ACAwAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAY2hlbmV5AAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAB1c2VycwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAMr+
ur4AAAAxACwHAAIBACVkZWZlcnJlZGNvbnRlbnRwcm92aWRlcnRlc3QvQWN0 aXZhdG9yBwAEAQAQ
amF2YS9sYW5nL09iamVjdAEACVBMVUdJTl9JRAEAEkxqYXZhL2xhbmcvU3Ry aW5nOwEADUNvbnN0
YW50VmFsdWUIAAkBABtEZWZlcnJlZENvbnRlbnRQcm92aWRlclRlc3QBAAZw bHVnaW4BACdMZGVm
ZXJyZWRjb250ZW50cHJvdmlkZXJ0ZXN0L0FjdGl2YXRvcjsBAAY8aW5pdD4B AAMoKVYBAARDb2Rl
BwAQAQAPamF2YS9sYW5nL0Vycm9yCAASAQG7VW5yZXNvbHZlZCBjb21waWxh dGlvbiBwcm9ibGVt
czogCglUaGUgaW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlIGNhbm5vdCBiZSBy ZXNvbHZlZAoJVGhl
IGltcG9ydCBvcmcuZWNsaXBzZS51aSBjYW5ub3QgYmUgcmVzb2x2ZWQKCUFi c3RyYWN0VUlQbHVn
aW4gY2Fubm90IGJlIHJlc29sdmVkIHRvIGEgdHlwZQoJVGhlIG1ldGhvZCBz dGFydChCdW5kbGVD
b250ZXh0KSBpcyB1bmRlZmluZWQgZm9yIHRoZSB0eXBlIE9iamVjdAoJVGhl IG1ldGhvZCBzdG9w
KEJ1bmRsZUNvbnRleHQpIGlzIHVuZGVmaW5lZCBmb3IgdGhlIHR5cGUgT2Jq ZWN0CglJbWFnZURl
c2NyaXB0b3IgY2Fubm90IGJlIHJlc29sdmVkIHRvIGEgdHlwZQoJVGhlIG1l dGhvZCBpbWFnZURl
c2NyaXB0b3JGcm9tUGx1Z2luKFN0cmluZywgU3RyaW5nKSBpcyB1bmRlZmlu ZWQgZm9yIHRoZSB0
eXBlIEFjdGl2YXRvcgoKAA8AFAwADAAVAQAVKExqYXZhL2xhbmcvU3RyaW5n OylWAQAPTGluZU51
bWJlclRhYmxlAQASTG9jYWxWYXJpYWJsZVRhYmxlAQAEdGhpcwEABXN0YXJ0 AQAlKExvcmcvb3Nn
aS9mcmFtZXdvcmsvQnVuZGxlQ29udGV4dDspVgEACkV4Y2VwdGlvbnMHAB0B ABNqYXZhL2xhbmcv
RXhjZXB0aW9uCAAfAQBjVW5yZXNvbHZlZCBjb21waWxhdGlvbiBwcm9ibGVt OiAKCVRoZSBtZXRo
b2Qgc3RhcnQoQnVuZGxlQ29udGV4dCkgaXMgdW5kZWZpbmVkIGZvciB0aGUg dHlwZSBPYmplY3QK
AQAHY29udGV4dAEAIkxvcmcvb3NnaS9mcmFtZXdvcmsvQnVuZGxlQ29udGV4 dDsBAARzdG9wCAAk
AQBiVW5yZXNvbHZlZCBjb21waWxhdGlvbiBwcm9ibGVtOiAKCVRoZSBtZXRo b2Qgc3RvcChCdW5k
bGVDb250ZXh0KSBpcyB1bmRlZmluZWQgZm9yIHRoZSB0eXBlIE9iamVjdAoB AApnZXREZWZhdWx0
AQApKClMZGVmZXJyZWRjb250ZW50cHJvdmlkZXJ0ZXN0L0FjdGl2YXRvcjsI ACgBACFVbnJlc29s
dmVkIGNvbXBpbGF0aW9uIHByb2JsZW06IAoBAApTb3VyY2VGaWxlAQAOQWN0 aXZhdG9yLmphdmEB
ABVJbmNvbnNpc3RlbnRIaWVyYXJjaHkAIQABAAMAAAACABkABQAGAAEABwAA AAIACAAKAAoACwAA
AAQAAQAMAA0AAQAOAAAANAADAAEAAAAKuwAPWRIRtwATvwAAAAIAFgAAAAYA AQAAAAMAFwAAAAwA
AQAAAAoAGAALAAAAAQAZABoAAgAbAAAABAABABwADgAAAD4AAwACAAAACrsA D1kSHrcAE78AAAAC
ABYAAAAGAAEAAAAdABcAAAAWAAIAAAAKABgACwAAAAAACgAgACEAAQABACIA GgACABsAAAAEAAEA
HAAOAAAAPgADAAIAAAAKuwAPWRIjtwATvwAAAAIAFgAAAAYAAQAAACcAFwAA ABYAAgAAAAoAGAAL
AAAAAAAKACAAIQABAAkAJQAmAAEADgAAACoAAwAAAAAACrsAD1kSJ7cAE78A AAACABYAAAAGAAEA
AAAvABcAAAACAAAAAgApAAAAAgAqACsAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAARGVmZXJy
ZWRDb250ZW50UHJvdmlkZXJUZXN0L2Jpbi9kZWZlcnJlZGNvbnRlbnRwcm92 aWRlcnRlc3QvQXBw
bGljYXRpb24uY2xhc3MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA2NDQA MDAwMTc1MQAwMDAw
MTQ0ADAwMDAwMDAzNjYyADExMDIxMjQzMzY3ADAyNzU3NQAgMAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGNoZW5leQAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAdXNlcnMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAADK/rq+AAAA
MQAjBwACAQAnZGVmZXJyZWRjb250ZW50cHJvdmlkZXJ0ZXN0L0FwcGxpY2F0 aW9uBwAEAQAQamF2
YS9sYW5nL09iamVjdAEABjxpbml0PgEAAygpVgEABENvZGUHAAkBAA9qYXZh L2xhbmcvRXJyb3II
AAsBArhVbnJlc29sdmVkIGNvbXBpbGF0aW9uIHByb2JsZW1zOiAKCVRoZSBp bXBvcnQgb3JnLmVj
bGlwc2Uucnd0IGNhbm5vdCBiZSByZXNvbHZlZAoJVGhlIGltcG9ydCBvcmcu ZWNsaXBzZS5zd3Qg
Y2Fubm90IGJlIHJlc29sdmVkCglUaGUgaW1wb3J0IG9yZy5lY2xpcHNlLnVp IGNhbm5vdCBiZSBy
ZXNvbHZlZAoJVGhlIGltcG9ydCBvcmcuZWNsaXBzZS51aSBjYW5ub3QgYmUg cmVzb2x2ZWQKCVRo
ZSBpbXBvcnQgb3JnLmVjbGlwc2UudWkgY2Fubm90IGJlIHJlc29sdmVkCglJ RW50cnlQb2ludCBj
YW5ub3QgYmUgcmVzb2x2ZWQgdG8gYSB0eXBlCglEaXNwbGF5IGNhbm5vdCBi ZSByZXNvbHZlZCB0
byBhIHR5cGUKCVBsYXRmb3JtVUkgY2Fubm90IGJlIHJlc29sdmVkCglQbGF0 Zm9ybVVJIGNhbm5v
dCBiZSByZXNvbHZlZAoJUGxhdGZvcm1VSSBjYW5ub3QgYmUgcmVzb2x2ZWQK CUlXb3JrYmVuY2gg
Y2Fubm90IGJlIHJlc29sdmVkIHRvIGEgdHlwZQoJUGxhdGZvcm1VSSBjYW5u b3QgYmUgcmVzb2x2
ZWQKCURpc3BsYXkgY2Fubm90IGJlIHJlc29sdmVkIHRvIGEgdHlwZQoJRGlz cGxheSBjYW5ub3Qg
YmUgcmVzb2x2ZWQgdG8gYSB0eXBlCglQbGF0Zm9ybVVJIGNhbm5vdCBiZSBy ZXNvbHZlZAoJV29y
a2JlbmNoQWR2aXNvciBjYW5ub3QgYmUgcmVzb2x2ZWQgdG8gYSB0eXBlCglQ bGF0Zm9ybVVJIGNh
bm5vdCBiZSByZXNvbHZlZAoKAAgADQwABQAOAQAVKExqYXZhL2xhbmcvU3Ry aW5nOylWAQAPTGlu
ZU51bWJlclRhYmxlAQASTG9jYWxWYXJpYWJsZVRhYmxlAQAEdGhpcwEAKUxk ZWZlcnJlZGNvbnRl
bnRwcm92aWRlcnRlc3QvQXBwbGljYXRpb247AQAFc3RhcnQBAEEoTG9yZy9l Y2xpcHNlL2VxdWlu
b3gvYXBwL0lBcHBsaWNhdGlvbkNvbnRleHQ7KUxqYXZhL2xhbmcvT2JqZWN0 OwgAFgEApVVucmVz
b2x2ZWQgY29tcGlsYXRpb24gcHJvYmxlbXM6IAoJRGlzcGxheSBjYW5ub3Qg YmUgcmVzb2x2ZWQg
dG8gYSB0eXBlCglQbGF0Zm9ybVVJIGNhbm5vdCBiZSByZXNvbHZlZAoJUGxh dGZvcm1VSSBjYW5u
b3QgYmUgcmVzb2x2ZWQKCVBsYXRmb3JtVUkgY2Fubm90IGJlIHJlc29sdmVk CgEAB2NvbnRleHQB
AC1Mb3JnL2VjbGlwc2UvZXF1aW5veC9hcHAvSUFwcGxpY2F0aW9uQ29udGV4 dDsBAARzdG9wCAAb
AQCQVW5yZXNvbHZlZCBjb21waWxhdGlvbiBwcm9ibGVtczogCglJV29ya2Jl bmNoIGNhbm5vdCBi
ZSByZXNvbHZlZCB0byBhIHR5cGUKCVBsYXRmb3JtVUkgY2Fubm90IGJlIHJl c29sdmVkCglEaXNw
bGF5IGNhbm5vdCBiZSByZXNvbHZlZCB0byBhIHR5cGUKAQAIY3JlYXRlVUkB AAMoKUkIAB8BALVV
bnJlc29sdmVkIGNvbXBpbGF0aW9uIHByb2JsZW1zOiAKCURpc3BsYXkgY2Fu bm90IGJlIHJlc29s
dmVkIHRvIGEgdHlwZQoJUGxhdGZvcm1VSSBjYW5ub3QgYmUgcmVzb2x2ZWQK CVdvcmtiZW5jaEFk
dmlzb3IgY2Fubm90IGJlIHJlc29sdmVkIHRvIGEgdHlwZQoJUGxhdGZvcm1V SSBjYW5ub3QgYmUg
cmVzb2x2ZWQKAQAKU291cmNlRmlsZQEAEEFwcGxpY2F0aW9uLmphdmEBABVJ bmNvbnNpc3RlbnRI
aWVyYXJjaHkAIQABAAMAAAAAAAQAAQAFAAYAAQAHAAAANAADAAEAAAAKuwAI WRIKtwAMvwAAAAIA
DwAAAAYAAQAAAAYAEAAAAAwAAQAAAAoAEQASAAAAAQATABQAAQAHAAAAPgAD AAIAAAAKuwAIWRIV
twAMvwAAAAIADwAAAAYAAQAAABcAEAAAABYAAgAAAAoAEQASAAAAAAAKABcA GAABAAEAGQAGAAEA
BwAAADQAAwABAAAACrsACFkSGrcADL8AAAACAA8AAAAGAAEAAAApABAAAAAM AAEAAAAKABEAEgAA
AAEAHAAdAAEABwAAADQAAwABAAAACrsACFkSHrcADL8AAAACAA8AAAAGAAEA AAA2ABAAAAAMAAEA
AAAKABEAEgAAAAIAIAAAAAIAIQAiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AERlZmVycmVkQ29u
dGVudFByb3ZpZGVyVGVzdC9iaW4vZGVmZXJyZWRjb250ZW50cHJvdmlkZXJ0 ZXN0L0FwcGxpY2F0
aW9uQWN0aW9uQmFyQWR2aXNvci5jbGFzcwAAAAAAAAAwMDAwNjQ0ADAwMDE3 NTEAMDAwMDE0NAAw
MDAwMDAwMDMwMQAxMTAyMTI0MzM2NwAwMzI2NzMAIDAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIABjaGVuZXkAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AHVzZXJzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA yv66vgAAADEACAcA
AgEAN2RlZmVycmVkY29udGVudHByb3ZpZGVydGVzdC9BcHBsaWNhdGlvbkFj dGlvbkJhckFkdmlz
b3IHAAQBABBqYXZhL2xhbmcvT2JqZWN0AQAKU291cmNlRmlsZQEAIEFwcGxp Y2F0aW9uQWN0aW9u
QmFyQWR2aXNvci5qYXZhAQAVSW5jb25zaXN0ZW50SGllcmFyY2h5ACEAAQAD AAAAAAAAAAIABQAA
AAIABgAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABE ZWZlcnJlZENvbnRl
bnRQcm92aWRlclRlc3QvYmluL2RlZmVycmVkY29udGVudHByb3ZpZGVydGVz dC9BcHBsaWNhdGlv
bldvcmtiZW5jaEFkdmlzb3IuY2xhc3MAAAAAAAAAMDAwMDY0NAAwMDAxNzUx ADAwMDAxNDQAMDAw
MDAwMDIwMzQAMTEwMjEyNDMzNjcAMDMyNzYwACAwAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAY2hlbmV5AAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAB1
c2VycwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMr+ ur4AAAAxAB8HAAIB
ADdkZWZlcnJlZGNvbnRlbnRwcm92aWRlcnRlc3QvQXBwbGljYXRpb25Xb3Jr YmVuY2hBZHZpc29y
BwAEAQAQamF2YS9sYW5nL09iamVjdAEADlBFUlNQRUNUSVZFX0lEAQASTGph dmEvbGFuZy9TdHJp
bmc7AQANQ29uc3RhbnRWYWx1ZQgACQEAJ0RlZmVycmVkQ29udGVudFByb3Zp ZGVyVGVzdC5wZXJz
cGVjdGl2ZQEABjxpbml0PgEAAygpVgEABENvZGUHAA4BAA9qYXZhL2xhbmcv RXJyb3IIABABAUlV
bnJlc29sdmVkIGNvbXBpbGF0aW9uIHByb2JsZW1zOiAKCVRoZSBpbXBvcnQg b3JnLmVjbGlwc2Uu
dWkgY2Fubm90IGJlIHJlc29sdmVkCglUaGUgaW1wb3J0IG9yZy5lY2xpcHNl LnVpIGNhbm5vdCBi
ZSByZXNvbHZlZAoJVGhlIGltcG9ydCBvcmcuZWNsaXBzZS51aSBjYW5ub3Qg YmUgcmVzb2x2ZWQK
CVdvcmtiZW5jaEFkdmlzb3IgY2Fubm90IGJlIHJlc29sdmVkIHRvIGEgdHlw ZQoJV29ya2JlbmNo
V2luZG93QWR2aXNvciBjYW5ub3QgYmUgcmVzb2x2ZWQgdG8gYSB0eXBlCglJ V29ya2JlbmNoV2lu
ZG93Q29uZmlndXJlciBjYW5ub3QgYmUgcmVzb2x2ZWQgdG8gYSB0eXBlCgoA DQASDAAKABMBABUo
TGphdmEvbGFuZy9TdHJpbmc7KVYBAA9MaW5lTnVtYmVyVGFibGUBABJMb2Nh bFZhcmlhYmxlVGFi
bGUBAAR0aGlzAQA5TGRlZmVycmVkY29udGVudHByb3ZpZGVydGVzdC9BcHBs aWNhdGlvbldvcmti
ZW5jaEFkdmlzb3I7AQAdZ2V0SW5pdGlhbFdpbmRvd1BlcnNwZWN0aXZlSWQB ABQoKUxqYXZhL2xh
bmcvU3RyaW5nOwgAGwEAIVVucmVzb2x2ZWQgY29tcGlsYXRpb24gcHJvYmxl bTogCgEAClNvdXJj
ZUZpbGUBACBBcHBsaWNhdGlvbldvcmtiZW5jaEFkdmlzb3IuamF2YQEAFUlu Y29uc2lzdGVudEhp
ZXJhcmNoeQAhAAEAAwAAAAEAGgAFAAYAAQAHAAAAAgAIAAIAAQAKAAsAAQAM AAAANAADAAEAAAAK
uwANWRIPtwARvwAAAAIAFAAAAAYAAQAAAAMAFQAAAAwAAQAAAAoAFgAXAAAA AQAYABkAAQAMAAAA
NAADAAEAAAAKuwANWRIatwARvwAAAAIAFAAAAAYAAQAAABAAFQAAAAwAAQAA AAoAFgAXAAAAAgAc
AAAAAgAdAB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAERlZmVy cmVkQ29udGVudFBy
b3ZpZGVyVGVzdC9iaW4vZGVmZXJyZWRjb250ZW50cHJvdmlkZXJ0ZXN0L0Fw cGxpY2F0aW9uV29y
a2JlbmNoV2luZG93QWR2aXNvci5jbGFzcwAwMDAwNjQ0ADAwMDE3NTEAMDAw MDE0NAAwMDAwMDAw
MTI3NwAxMTAyMTI0MzM2NwAwMzQxNjAAIDAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAdXN0YXIgIABjaGVuZXkAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAHVzZXJz
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyv66vgAA ADEAFwcAAgEAPWRl
ZmVycmVkY29udGVudHByb3ZpZGVydGVzdC9BcHBsaWNhdGlvbldvcmtiZW5j aFdpbmRvd0Fkdmlz
b3IHAAQBABBqYXZhL2xhbmcvT2JqZWN0AQANcHJlV2luZG93T3BlbgEAAygp VgEABENvZGUHAAkB
AA9qYXZhL2xhbmcvRXJyb3IIAAsBAN1VbnJlc29sdmVkIGNvbXBpbGF0aW9u IHByb2JsZW1zOiAK
CUlXb3JrYmVuY2hXaW5kb3dDb25maWd1cmVyIGNhbm5vdCBiZSByZXNvbHZl ZCB0byBhIHR5cGUK
CVRoZSBtZXRob2QgZ2V0V2luZG93Q29uZmlndXJlcigpIGlzIHVuZGVmaW5l ZCBmb3IgdGhlIHR5
cGUgQXBwbGljYXRpb25Xb3JrYmVuY2hXaW5kb3dBZHZpc29yCglQb2ludCBj YW5ub3QgYmUgcmVz
b2x2ZWQgdG8gYSB0eXBlCgoACAANDAAOAA8BAAY8aW5pdD4BABUoTGphdmEv bGFuZy9TdHJpbmc7
KVYBAA9MaW5lTnVtYmVyVGFibGUBABJMb2NhbFZhcmlhYmxlVGFibGUBAAR0 aGlzAQA/TGRlZmVy
cmVkY29udGVudHByb3ZpZGVydGVzdC9BcHBsaWNhdGlvbldvcmtiZW5jaFdp bmRvd0Fkdmlzb3I7
AQAKU291cmNlRmlsZQEAJkFwcGxpY2F0aW9uV29ya2JlbmNoV2luZG93QWR2 aXNvci5qYXZhAQAV
SW5jb25zaXN0ZW50SGllcmFyY2h5ACEAAQADAAAAAAABAAEABQAGAAEABwAA ADQAAwABAAAACrsA
CFkSCrcADL8AAAACABAAAAAGAAEAAAAVABEAAAAMAAEAAAAKABIAEwAAAAIA FAAAAAIAFQAWAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAERlZmVycmVk Q29udGVudFByb3Zp
ZGVyVGVzdC9iaW4vZGVmZXJyZWRjb250ZW50cHJvdmlkZXJ0ZXN0L1BlcnNw ZWN0aXZlLmNsYXNz
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDE3NTEAMDAwMDE0 NAAwMDAwMDAwMTIx
MgAxMTAyMTI0MzM2NwAwMjc2MTAAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAdXN0YXIgIABjaGVuZXkAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAHVzZXJzAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyv66vgAAADEA FgcAAgEAJ2RlZmVy
cmVkY29udGVudHByb3ZpZGVydGVzdC9QZXJzcGVjdGl2ZQcABAEAEGphdmEv bGFuZy9PYmplY3QB
AAY8aW5pdD4BAAMoKVYBAARDb2RlBwAJAQAPamF2YS9sYW5nL0Vycm9yCAAL AQD6VW5yZXNvbHZl
ZCBjb21waWxhdGlvbiBwcm9ibGVtczogCglUaGUgaW1wb3J0IG9yZy5lY2xp cHNlLnVpIGNhbm5v
dCBiZSByZXNvbHZlZAoJVGhlIGltcG9ydCBvcmcuZWNsaXBzZS51aSBjYW5u b3QgYmUgcmVzb2x2
ZWQKCUlQZXJzcGVjdGl2ZUZhY3RvcnkgY2Fubm90IGJlIHJlc29sdmVkIHRv IGEgdHlwZQoJSVBh
Z2VMYXlvdXQgY2Fubm90IGJlIHJlc29sdmVkIHRvIGEgdHlwZQoJSVBhZ2VM YXlvdXQgY2Fubm90
IGJlIHJlc29sdmVkCgoACAANDAAFAA4BABUoTGphdmEvbGFuZy9TdHJpbmc7 KVYBAA9MaW5lTnVt
YmVyVGFibGUBABJMb2NhbFZhcmlhYmxlVGFibGUBAAR0aGlzAQApTGRlZmVy cmVkY29udGVudHBy
b3ZpZGVydGVzdC9QZXJzcGVjdGl2ZTsBAApTb3VyY2VGaWxlAQAQUGVyc3Bl Y3RpdmUuamF2YQEA
FUluY29uc2lzdGVudEhpZXJhcmNoeQAhAAEAAwAAAAAAAQABAAUABgABAAcA AAA0AAMAAQAAAAq7
AAhZEgq3AAy/AAAAAgAPAAAABgABAAAAAwAQAAAADAABAAAACgARABIAAAAC ABMAAAACABQAFQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAERlZmVycmVkQ29u dGVudFByb3ZpZGVy
VGVzdC9iaW4vZGVmZXJyZWRjb250ZW50cHJvdmlkZXJ0ZXN0L1VzZXIuY2xh c3MAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNjQ0ADAwMDE3NTEAMDAwMDE0NAAw MDAwMDAwMzE2NQAx
MTAyMTI0MzM2NwAwMjYyNDYAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAdXN0YXIgIABjaGVuZXkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AHVzZXJzAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyv66vgAAADEAPgcA AgEAIGRlZmVycmVk
Y29udGVudHByb3ZpZGVydGVzdC9Vc2VyBwAEAQAQamF2YS9sYW5nL09iamVj dAEAAmlkAQABSQEA
BG5hbWUBABJMamF2YS9sYW5nL1N0cmluZzsBAAhwYXNzd29yZAEACmNyZWF0 ZURhdGUBABRMamF2
YS9zcWwvVGltZXN0YW1wOwEABHJvbGUBAAY8aW5pdD4BADwoSUxqYXZhL2xh bmcvU3RyaW5nO0xq
YXZhL2xhbmcvU3RyaW5nO0xqYXZhL3NxbC9UaW1lc3RhbXA7KVYBAARDb2Rl CgADABEMAA0AEgEA
AygpVgkAAQAUDAAFAAYJAAEAFgwABwAICQABABgMAAkACAkAAQAaDAAKAAsB AA9MaW5lTnVtYmVy
VGFibGUBABJMb2NhbFZhcmlhYmxlVGFibGUBAAR0aGlzAQAiTGRlZmVycmVk Y29udGVudHByb3Zp
ZGVydGVzdC9Vc2VyOwEAB2dldE5hbWUBABQoKUxqYXZhL2xhbmcvU3RyaW5n OwEAB3NldE5hbWUB
ABUoTGphdmEvbGFuZy9TdHJpbmc7KVYBAAtnZXRQYXNzd29yZAEAC3NldFBh c3N3b3JkAQANZ2V0
Q3JlYXRlRGF0ZQEAFigpTGphdmEvc3FsL1RpbWVzdGFtcDsBAA1zZXRDcmVh dGVEYXRlAQAXKExq
YXZhL3NxbC9UaW1lc3RhbXA7KVYBAAdnZXRSb2xlCQABACsMAAwACAEAB3Nl dFJvbGUBABNnZXRD
cmVhdGVEYXRlVG9TaG93BwAvAQAaamF2YS90ZXh0L1NpbXBsZURhdGVGb3Jt YXQIADEBABN5eXl5
LU1NLWRkIEhIOm1tOnNzCgAuADMMAA0AIgoAAQA1DAAlACYKAC4ANwwAOAA5 AQAGZm9ybWF0AQAk
KExqYXZhL3V0aWwvRGF0ZTspTGphdmEvbGFuZy9TdHJpbmc7AQAJZm9ybWF0 dGVyAQAcTGphdmEv
dGV4dC9Ta
Re: Use TableViewer with Virtual and DeferredContentProvider problem [message #91756 is a reply to message #91519] Wed, 04 June 2008 10:07 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: fappel.innoopract.com

Hi,

we think that this is indeed a problem, regarding the UICallBack
mechanism. Activation and Deactivation should be done under the hood.
Could you please verify this by activating the UICallBack mechanism in
general in your application for testing purpose? Simply add the
following line at the beginning of your IEntryPoint#createUI method:

UICallBack.activate( String.valueOf( this.hashCode() );


Ciao
Frank & Rüdiger

-----Ursprüngliche Nachricht-----
Von: Cheney [mailto:cheney_chen@i-len.com]
Bereitgestellt: Dienstag, 3. Juni 2008 16:11
Bereitgestellt in: eclipse.technology.rap
Unterhaltung: Use TableViewer with Virtual and DeferredContentProvider
problem
Betreff: Use TableViewer with Virtual and DeferredContentProvider
problem


Hi,
I want to show a large number of records in TableViewer, and
consider the efficiency,I use the SWT.virtual style and the
DefferredContentProvider. Ok, It is very useful in my
application,because I can browser the records very quickly in
tableViewer. Also, I add the function for order the record in different
columns, when user selected on of the table column header, the table
ascending the record by the selected column's value, if clicked again,
then reverse the order.But problem is that when I click one of the
column header, the DefferredContentProvider is already order the
records,but the result is not show in client unless I select the
tableviewer's content.I runned the same code in rcp, the problem is not
exist.I think I need to update the result in server side, maybe I can
use the UICallBack.active() method to achieve it, But I don't where to
call the method is effective.
But the way, which is the best way to set the Comparator for
different column herader with using DefferredContentProvider.You can see
in my UserTableViewer.class, the method is so ugly.
My simple test code is in attach.
any ideas?

Regard,
Cheney
Re: Use TableViewer with Virtual and DeferredContentProvider problem [message #92046 is a reply to message #91756] Fri, 06 June 2008 06:03 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: cheney_chen.i-len.com

Hi,

Thanks for your reply, add the UICallBack.activate( String.valueOf(
this.hashCode() ); statement can fix the delay update problem, now the
behavior in my application is as the same in RCP.
According to the API, there is a deactive method in UICallBack class, which
we can deactive the UICallback at the end of update. In my case, I should
not deactive the UICallbakc in session scope, because I want the table
update immediately when its content is changed. I just want to know is that
OK and occur other problems?

On more question, In my use case, I need to share some data model in
different users( different session scope ), use the DeferredContentProvider
class in TableViewer, it require a data mode called SetModel class for
storing the data. So this is the easy way to resume the same data model for
different users. But one thing I worried about is the potential concurrent
problem, is the classes in deferred package of JFace already deal with the
concurrent problem? Beacause I don't know much about the class in deferred
package. if not, which is the best way can I avoid the concurrent problem
in share the same data model between different threads.
Any help would be greatly appreciated.

Best Regards,
Cheney

Frank Appel wrote:

> Hi,
>
> we think that this is indeed a problem, regarding the UICallBack
> mechanism. Activation and Deactivation should be done under the hood.
> Could you please verify this by activating the UICallBack mechanism in
> general in your application for testing purpose? Simply add the
> following line at the beginning of your IEntryPoint#createUI method:
>
> UICallBack.activate( String.valueOf( this.hashCode() );
>
>
> Ciao
> Frank & Rüdiger
>
> -----Ursprüngliche Nachricht-----
> Von: Cheney [mailto:cheney_chen@i-len.com]
> Bereitgestellt: Dienstag, 3. Juni 2008 16:11
> Bereitgestellt in: eclipse.technology.rap
> Unterhaltung: Use TableViewer with Virtual and DeferredContentProvider
> problem
> Betreff: Use TableViewer with Virtual and DeferredContentProvider
> problem
>
>
> Hi,
> I want to show a large number of records in TableViewer, and
> consider the efficiency,I use the SWT.virtual style and the
> DefferredContentProvider. Ok, It is very useful in my
> application,because I can browser the records very quickly in
> tableViewer. Also, I add the function for order the record in different
> columns, when user selected on of the table column header, the table
> ascending the record by the selected column's value, if clicked again,
> then reverse the order.But problem is that when I click one of the
> column header, the DefferredContentProvider is already order the
> records,but the result is not show in client unless I select the
> tableviewer's content.I runned the same code in rcp, the problem is not
> exist.I think I need to update the result in server side, maybe I can
> use the UICallBack.active() method to achieve it, But I don't where to
> call the method is effective.
> But the way, which is the best way to set the Comparator for
> different column herader with using DefferredContentProvider.You can see
> in my UserTableViewer.class, the method is so ugly.
> My simple test code is in attach.
> any ideas?
>
> Regard,
> Cheney
Re: Use TableViewer with Virtual and DeferredContentProvider problem [message #92202 is a reply to message #92046] Sat, 07 June 2008 06:12 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: fappel.innoopract.com

Hi,

in Principle you need not to deactivate the UICallBack mechanism per
session. The drawback is that this keeps an additional thread blocked
for each session. So it depends on your application if this is something
to worry about. I still think that this should be solved under the hood
if possible, so the mechanismus would only be activated as long as the
update thread is running.

To your second question: I don't think that JFace already handles
concurrency problems and you have to create a solution of your own. But
this actually depends a lot on your model and isn't that easy to answer
in general.


Ciao
Frank

-----Ursprüngliche Nachricht-----
Von: Cheney [mailto:cheney_chen@i-len.com]
Bereitgestellt: Freitag, 6. Juni 2008 08:03
Bereitgestellt in: eclipse.technology.rap
Unterhaltung: Use TableViewer with Virtual and DeferredContentProvider
problem
Betreff: Re: Use TableViewer with Virtual and DeferredContentProvider
problem


Hi,

Thanks for your reply, add the UICallBack.activate( String.valueOf(
this.hashCode() ); statement can fix the delay update problem, now the
behavior in my application is as the same in RCP.
According to the API, there is a deactive method in UICallBack class,
which we can deactive the UICallback at the end of update. In my case, I
should not deactive the UICallbakc in session scope, because I want the
table update immediately when its content is changed. I just want to
know is that OK and occur other problems?

On more question, In my use case, I need to share some data model in
different users( different session scope ), use the
DeferredContentProvider class in TableViewer, it require a data mode
called SetModel class for storing the data. So this is the easy way to
resume the same data model for different users. But one thing I worried
about is the potential concurrent problem, is the classes in deferred
package of JFace already deal with the concurrent problem? Beacause I
don't know much about the class in deferred package. if not, which is
the best way can I avoid the concurrent problem in share the same data
model between different threads.
Any help would be greatly appreciated.

Best Regards,
Cheney

Frank Appel wrote:

> Hi,
>
> we think that this is indeed a problem, regarding the UICallBack
> mechanism. Activation and Deactivation should be done under the hood.
> Could you please verify this by activating the UICallBack mechanism in

> general in your application for testing purpose? Simply add the
> following line at the beginning of your IEntryPoint#createUI method:
>
> UICallBack.activate( String.valueOf( this.hashCode() );
>
>
> Ciao
> Frank & Rüdiger
>
> -----Ursprüngliche Nachricht-----
> Von: Cheney [mailto:cheney_chen@i-len.com]
> Bereitgestellt: Dienstag, 3. Juni 2008 16:11 Bereitgestellt in:
> eclipse.technology.rap
> Unterhaltung: Use TableViewer with Virtual and DeferredContentProvider

> problem
> Betreff: Use TableViewer with Virtual and DeferredContentProvider
> problem
>
>
> Hi,
> I want to show a large number of records in TableViewer, and
> consider the efficiency,I use the SWT.virtual style and the
> DefferredContentProvider. Ok, It is very useful in my
> application,because I can browser the records very quickly in
> tableViewer. Also, I add the function for order the record in
> different columns, when user selected on of the table column header,
> the table ascending the record by the selected column's value, if
> clicked again, then reverse the order.But problem is that when I click

> one of the column header, the DefferredContentProvider is already
> order the records,but the result is not show in client unless I select

> the tableviewer's content.I runned the same code in rcp, the problem
> is not exist.I think I need to update the result in server side, maybe

> I can use the UICallBack.active() method to achieve it, But I don't
> where to call the method is effective.
> But the way, which is the best way to set the Comparator for
> different column herader with using DefferredContentProvider.You can
> see in my UserTableViewer.class, the method is so ugly.
> My simple test code is in attach.
> any ideas?
>
> Regard,
> Cheney
Re: Use TableViewer with Virtual and DeferredContentProvider problem [message #92456 is a reply to message #92202] Tue, 10 June 2008 01:50 Go to previous message
Eclipse UserFriend
Originally posted by: cheney_chen.i-len.com

Hi Frank,

Thanks for your reply.

Best Regards,
Cheney

Frank Appel wrote:

> Hi,
>
> in Principle you need not to deactivate the UICallBack mechanism per
> session. The drawback is that this keeps an additional thread blocked
> for each session. So it depends on your application if this is something
> to worry about. I still think that this should be solved under the hood
> if possible, so the mechanismus would only be activated as long as the
> update thread is running.
>
> To your second question: I don't think that JFace already handles
> concurrency problems and you have to create a solution of your own. But
> this actually depends a lot on your model and isn't that easy to answer
> in general.
>
>
> Ciao
> Frank
>
> -----Ursprüngliche Nachricht-----
> Von: Cheney [mailto:cheney_chen@i-len.com]
> Bereitgestellt: Freitag, 6. Juni 2008 08:03
> Bereitgestellt in: eclipse.technology.rap
> Unterhaltung: Use TableViewer with Virtual and DeferredContentProvider
> problem
> Betreff: Re: Use TableViewer with Virtual and DeferredContentProvider
> problem
>
>
> Hi,
>
> Thanks for your reply, add the UICallBack.activate( String.valueOf(
> this.hashCode() ); statement can fix the delay update problem, now the
> behavior in my application is as the same in RCP.
> According to the API, there is a deactive method in UICallBack class,
> which we can deactive the UICallback at the end of update. In my case, I
> should not deactive the UICallbakc in session scope, because I want the
> table update immediately when its content is changed. I just want to
> know is that OK and occur other problems?
>
> On more question, In my use case, I need to share some data model in
> different users( different session scope ), use the
> DeferredContentProvider class in TableViewer, it require a data mode
> called SetModel class for storing the data. So this is the easy way to
> resume the same data model for different users. But one thing I worried
> about is the potential concurrent problem, is the classes in deferred
> package of JFace already deal with the concurrent problem? Beacause I
> don't know much about the class in deferred package. if not, which is
> the best way can I avoid the concurrent problem in share the same data
> model between different threads.
> Any help would be greatly appreciated.
>
> Best Regards,
> Cheney
>
> Frank Appel wrote:
>
>> Hi,
>>
>> we think that this is indeed a problem, regarding the UICallBack
>> mechanism. Activation and Deactivation should be done under the hood.
>> Could you please verify this by activating the UICallBack mechanism in
>
>> general in your application for testing purpose? Simply add the
>> following line at the beginning of your IEntryPoint#createUI method:
>>
>> UICallBack.activate( String.valueOf( this.hashCode() );
>>
>>
>> Ciao
>> Frank & Rüdiger
>>
>> -----Ursprüngliche Nachricht-----
>> Von: Cheney [mailto:cheney_chen@i-len.com]
>> Bereitgestellt: Dienstag, 3. Juni 2008 16:11 Bereitgestellt in:
>> eclipse.technology.rap
>> Unterhaltung: Use TableViewer with Virtual and DeferredContentProvider
>
>> problem
>> Betreff: Use TableViewer with Virtual and DeferredContentProvider
>> problem
>>
>>
>> Hi,
>> I want to show a large number of records in TableViewer, and
>> consider the efficiency,I use the SWT.virtual style and the
>> DefferredContentProvider. Ok, It is very useful in my
>> application,because I can browser the records very quickly in
>> tableViewer. Also, I add the function for order the record in
>> different columns, when user selected on of the table column header,
>> the table ascending the record by the selected column's value, if
>> clicked again, then reverse the order.But problem is that when I click
>
>> one of the column header, the DefferredContentProvider is already
>> order the records,but the result is not show in client unless I select
>
>> the tableviewer's content.I runned the same code in rcp, the problem
>> is not exist.I think I need to update the result in server side, maybe
>
>> I can use the UICallBack.active() method to achieve it, But I don't
>> where to call the method is effective.
>> But the way, which is the best way to set the Comparator for
>> different column herader with using DefferredContentProvider.You can
>> see in my UserTableViewer.class, the method is so ugly.
>> My simple test code is in attach.
>> any ideas?
>>
>> Regard,
>> Cheney
Previous Topic:Using RAP with EJB3 on JBoss 4.2 (Version 2)
Next Topic:Problems using Target Platform
Goto Forum:
  


Current Time: Sat Apr 27 01:30:35 GMT 2024

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

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

Back to the top