RE: Struts 6.4, Ognl and getters without an underlying field

Nate Kerkhofs <[email protected]>
Newsgroups gmane.comp.jakarta.struts.user
Message-ID <AM0P191MB0804DC8BEAE1DE5C727CCB93EB782@AM0P191MB0804.EURP191.PROD.OUTLOOK.COM>
WWVzLCB0aGUgcHJvYmxlbSBpcyBnb25lLiBJdCB3YXMgYW4gZXJyb3Igb24gbXkgZW5kIHJlbGF0
ZWQgdG8gdGhlIG9yZGVyaW5nIG9mIHN0YXRpYyBmaWVsZHMgaW4gdGhlIHNpbmdsZXRvbiBjbGFz
cy4NCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IEx1a2FzeiBMZW5hcnQgPGx1
a2FzemxlbmFydEBhcGFjaGUub3JnPiANClNlbnQ6IFR1ZXNkYXksIDggT2N0b2JlciAyMDI0IDA5
OjA2DQpUbzogU3RydXRzIFVzZXJzIE1haWxpbmcgTGlzdCA8dXNlckBzdHJ1dHMuYXBhY2hlLm9y
Zz4NClN1YmplY3Q6IFJlOiBTdHJ1dHMgNi40LCBPZ25sIGFuZCBnZXR0ZXJzIHdpdGhvdXQgYW4g
dW5kZXJseWluZyBmaWVsZA0KDQpTbyB0aGUgcHJvYmxlbSBpcyBnb25lPw0KDQpwb24uLCA3IHBh
xbogMjAyNCBvIDExOjUwIE5hdGUgS2Vya2hvZnMgPE5hdGUuS2Vya2hvZnNAaWthbi5iZT4gbmFw
aXNhxYIoYSk6DQo+DQo+IEhlbGxvLA0KPg0KPiBJIGhhdmUgZG9uZSBzb21lIGludmVzdGlnYXRp
bmcgYW5kIGZvdW5kIHRoZSBmb2xsb3dpbmc6DQo+DQo+IDEuIFRoZXJlIHdhcyBhbm90aGVyIGV4
Y2VwdGlvbiBiZWZvcmUgdGhlIHByZXZpb3VzIGV4Y2VwdGlvbiB0aGF0IEkgDQo+IGRpZG4ndCBz
ZWUgbGFzdCB3ZWVrLCBhIE51bGxQb2ludGVyRXhjZXB0aW9uIGZvciBZRVNOT0FMTERFU0NSSVBU
SU9OUzsgMi4gQWZ0ZXIgbG9va2luZyBpbnRvIHN0YXRpYyBmaWVsZHMgYSBiaXQgbW9yZSwgSSBm
b3VuZCB0aGF0IHRob3NlIGFyZSBpbml0aWFsaXplZCBpbiB0aGUgb3JkZXIgb2YgZGVjbGFyYXRp
b24sIGFuZCBpZiB5b3UgbG9vayBhdCBCb290c3RyYXBTdXBwb3J0IG1vcmUgY2xvc2VseSwgeW91
J2xsIHNlZSB0aGF0IHRoZSBJTlNUQU5DRSBzaW5nbGV0b24gZmllbGQgaXMgZGVjbGFyZWQgYW5k
IGluaXRpYWxpemVkIGJlZm9yZSB0aGUgb3RoZXIgc3RhdGljIGZpbmFsIGZpZWxkcyBJIHRyaWVk
IHRvIHVzZSBpbiB0aGUgY29uc3RydWN0b3IgYXJlIGRlY2xhcmVkLiBUaGF0IGNhdXNlZCB0aGUg
TnVsbFBvaW50ZXJFeGNlcHRpb24sIGJlY2F1c2UgaXQgd2FzIHRyeWluZyB0byByZWFkIHRoYXQg
c3RhdGljIHZhcmlhYmxlIGJlZm9yZSBpdCB3YXMgaW5pdGlhbGl6ZWQuIE9uY2UgSSBtb3ZlZCB0
aGUgSU5TVEFOQ0UgZGVjbGFyYXRpb24gYWZ0ZXIgdGhlIG90aGVyIHN0YXRpYyBmaWVsZCBkZWNs
YXJhdGlvbnMgdGhlIGNvZGUgd29ya2VkIHdpdGhvdXQgcHJvYmxlbXMuDQo+IDMuIEluIHRoZSBl
bmQsIEkgbW92ZWQgdGhlIGNvZGUgZm9yIGNyZWF0aW5nIHRoaXMgbGlzdCB0byB0aGUgT3ZlcnZp
ZXdBY3Rpb25TdXBwb3J0LCBiZWNhdXNlIGFzIHlvdSBjYW4gc2VlIHdlIHVzZSBhIGN1c3RvbSBM
b2NhbGl6YXRpb24gZW5naW5lLCBhbmQgd2UgZm91bmQgaXQgYmV0dGVyIHRvIGtlZXAgdGhpcyBs
b2dpYyBjZW50cmFsaXplZCBpbiBvdXIgQmFzZUFjdGlvblN1cHBvcnQgY2xhc3MsIG1ha2luZyB0
aGUgZW50aXJlIEJvb3RzdHJhcFN1cHBvcnQgY2xhc3Mgb2Jzb2xldGUuDQo+DQo+IEtpbmQgcmVn
YXJkcywNCj4NCj4gTmF0ZQ0KPg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9t
OiBMdWthc3ogTGVuYXJ0IDxsdWthc3psZW5hcnRAYXBhY2hlLm9yZz4NCj4gU2VudDogU3VuZGF5
LCA2IE9jdG9iZXIgMjAyNCAwNzo1NQ0KPiBUbzogU3RydXRzIFVzZXJzIE1haWxpbmcgTGlzdCA8
dXNlckBzdHJ1dHMuYXBhY2hlLm9yZz4NCj4gU3ViamVjdDogUmU6IFN0cnV0cyA2LjQsIE9nbmwg
YW5kIGdldHRlcnMgd2l0aG91dCBhbiB1bmRlcmx5aW5nIGZpZWxkDQo+DQo+IFRoYXQgc2hvdWxk
IGp1c3Qgd29yaywgSSBkb24ndCByZWNhbGwgYW55IGNoYW5nZXMgYWZmZWN0aW5nIHByb2Nlc3Np
bmcgdGhpcy4gQ291bGQgeW91IGVuYWJsZSBERUJVRyBsZXZlbCBhbmQgaW5zcGVjdCBsb2dzIGJl
Zm9yZSB0aGUgZXJyb3IgeW91IGdldC4gTWF5YmUgdGhlcmUgaXMgYSBzZWN1cml0eSBXQVJOSU5H
IHlvdSBoYXZlIG1pc3NlZC4NCj4NCj4gY3p3LiwgMyBwYcW6IDIwMjQgbyAxMDoyNiBOYXRlIEtl
cmtob2ZzIDxOYXRlLktlcmtob2ZzQGlrYW4uYmU+IG5hcGlzYcWCKGEpOg0KPiA+DQo+ID4gSGVs
bG8sDQo+ID4NCj4gPiBPbmUgc21hbGwgY29ycmVjdGlvbjogaXQncyBhIFN0cnV0cyA2LjMgcHJv
amVjdCwgbm90IDYuNC4gV2Ugd2VyZSBwbGFubmluZyBvbiB1cGdyYWRpbmcgdG8gNi40IG9yIGEg
bGF0ZXIgNi5YIHZlcnNpb24sIGJ1dCBiZWNhdXNlIHdlIHN0aWxsIG5lZWQgdG8gdXBncmFkZSB0
byA3LjAgdGhpcyByZWxlYXNlIGFueXdheSB3ZSBkZWNpZGVkIHRvIHNraXAgYW55IHVwZ3JhZGVz
IGluIGJldHdlZW4uDQo+ID4NCj4gPiBLaW5kIHJlZ2FyZHMsDQo+ID4NCj4gPiBOYXRlIEtlcmto
b2ZzDQo+ID4NCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IE5hdGUg
S2Vya2hvZnMgPE5hdGUuS2Vya2hvZnNAaWthbi5iZT4NCj4gPiBTZW50OiBUaHVyc2RheSwgMyBP
Y3RvYmVyIDIwMjQgMTA6MDYNCj4gPiBUbzogU3RydXRzIFVzZXJzIE1haWxpbmcgTGlzdCA8dXNl
ckBzdHJ1dHMuYXBhY2hlLm9yZz4NCj4gPiBTdWJqZWN0OiBTdHJ1dHMgNi40LCBPZ25sIGFuZCBn
ZXR0ZXJzIHdpdGhvdXQgYW4gdW5kZXJseWluZyBmaWVsZA0KPiA+DQo+ID4gSGVsbG8sDQo+ID4N
Cj4gPiBJIGhhdmUgYSBTdHJ1dHMgNi40IHBhZ2Ugd2l0aCBhIHNlbGVjdCwgYW5kIEkgaGF2ZSBh
IHByb2JsZW0gcG9wdWxhdGluZyB0aGUgbGlzdCBhdHRyaWJ1dGUuDQo+ID4NCj4gPiA8czpzZWxl
Y3QgaWQ9InNlYXJjaFZpZXdfc2hvd1NlY3VyZWQiIGRhdGEtbWRiLXNlbGVjdC1pbml0PSIiDQo+
ID4gbmFtZT0ic2VhcmNoVmlldy5zaG93U2VjdXJlZCIgdGhlbWU9InNpbXBsZSIgbGlzdD0ieWVz
Tm9BbGxMaXN0Ig0KPiA+ICAgICAgICAgICAgICAgICBsaXN0S2V5PSJpZCIgbGlzdFZhbHVlPSJs
YWJlbCIgLz4NCj4gPg0KPiA+DQo+ID4gV2hhdCBJJ20gdHJ5aW5nIHRvIGRvIGlzIHJlbGF0aXZl
bHkgc2ltcGxlOiBJIGhhdmUgdGhlIGZvbGxvd2luZyBhY3Rpb24gY29kZToNCj4gPg0KPiA+IHB1
YmxpYyBjbGFzcyBNYWNoaW5lUGFyYW1ldGVyT3ZlcnZpZXdCb290c3RyYXBBY3Rpb24gZXh0ZW5k
cyBPdmVydmlld0FjdGlvblN1cHBvcnQgaW1wbGVtZW50cyBFeHBpcmFibGUgeyAuLi4NCj4gPiB9
DQo+ID4gQW5kIHRoaXMgaXMgdGhlIHN1cGVyIGFjdGlvbi4gTm90YWJseSwgdGhpcyBnZXR0ZXIg
ZG9lcyBOT1QgaGF2ZSBhbiB1bmRlcmx5aW5nIGZpZWxkIHByb3BlcnR5Lg0KPiA+IHB1YmxpYyBj
bGFzcyBPdmVydmlld0FjdGlvblN1cHBvcnQgZXh0ZW5kcyBCYXNlQWN0aW9uU3VwcG9ydCB7IC4u
Lg0KPiA+IHB1YmxpYyBMaXN0PFNlbGVjdE9wdGlvblZpZXc+IGdldFllc05vQWxsTGlzdCgpIHsN
Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb290c3RyYXBTdXBw
b3J0LmdldEluc3RhbmNlKCkuZ2V0WWVzTm9BbGxMaXN0KCk7DQo+ID4gICAgICAgICAgICAgICAg
IH0NCj4gPg0KPiA+IH0NCj4gPg0KPiA+IEluIHRoZSBUb21jYXQgbG9nLCBJIGdldCB0aGlzIGVy
cm9yOg0KPiA+DQo+ID4gQ2F1c2VkIGJ5OiB0YWcgJ3NlbGVjdCcsIGZpZWxkICdsaXN0JywgbmFt
ZSAnc2VhcmNoVmlldy5zaG93U2VjdXJlZCc6IFRoZSByZXF1ZXN0ZWQgbGlzdCBrZXkgJ3llc05v
QWxsTGlzdCcgY291bGQgbm90IGJlIHJlc29sdmVkIGFzIGEgY29sbGVjdGlvbi9hcnJheS9tYXAv
ZW51bWVyYXRpb24vaXRlcmF0b3IgdHlwZS4gRXhhbXBsZTogcGVvcGxlIG9yIHBlb3BsZS57bmFt
ZX0gLSBbdW5rbm93biBsb2NhdGlvbl0NCj4gPiAgICAgICAgIGF0IG9yZy5hcGFjaGUuc3RydXRz
Mi5jb21wb25lbnRzLkNvbXBvbmVudC5maWVsZEVycm9yKENvbXBvbmVudC5qYXZhOjI4NCkNCj4g
PiAgICAgICAgIGF0IG9yZy5hcGFjaGUuc3RydXRzMi5jb21wb25lbnRzLkNvbXBvbmVudC5maW5k
VmFsdWUoQ29tcG9uZW50LmphdmE6MzYzKQ0KPiA+ICAgICAgICAgYXQgb3JnLmFwYWNoZS5zdHJ1
dHMyLmNvbXBvbmVudHMuTGlzdFVJQmVhbi5ldmFsdWF0ZUV4dHJhUGFyYW1zKExpc3RVSUJlYW4u
amF2YTo3OCkNCj4gPiAgICAgICAgIGF0IG9yZy5hcGFjaGUuc3RydXRzMi5jb21wb25lbnRzLlNl
bGVjdC5ldmFsdWF0ZUV4dHJhUGFyYW1zKFNlbGVjdC5qYXZhOjEwMSkNCj4gPiAgICAgICAgIGF0
IG9yZy5hcGFjaGUuc3RydXRzMi5jb21wb25lbnRzLlVJQmVhbi5ldmFsdWF0ZVBhcmFtcyhVSUJl
YW4uamF2YTo4ODQpDQo+ID4gICAgICAgICBhdCBvcmcuYXBhY2hlLnN0cnV0czIuY29tcG9uZW50
cy5VSUJlYW4uZW5kKFVJQmVhbi5qYXZhOjU1MCkNCj4gPiAgICAgICAgIGF0IG9yZy5hcGFjaGUu
c3RydXRzMi52aWV3cy5qc3AuQ29tcG9uZW50VGFnU3VwcG9ydC5kb0VuZFRhZyhDb21wb25lbnRU
YWdTdXBwb3J0LmphdmE6NDApDQo+ID4gICAgICAgICBhdCBvcmcuYXBhY2hlLmpzcC5qc3AubWFj
aGluZXBhcmFtZXRlci5tYWNoaW5lUGFyYW1ldGVyT3ZlcnZpZXdCb290c3RyYXBfanNwLl9qc3B4
X21ldGhfc18wMDVmc2VsZWN0XzAwNWYxKG1hY2hpbmVQYXJhbWV0ZXJPdmVydmlld0Jvb3RzdHJh
cF9qc3AuamF2YToxMTk0OSkNCj4gPiAgICAgICAgIGF0IG9yZy5hcGFjaGUuanNwLmpzcC5tYWNo
aW5lcGFyYW1ldGVyLm1hY2hpbmVQYXJhbWV0ZXJPdmVydmlld0Jvb3RzdHJhcF9qc3AuX2pzcFNl
cnZpY2UobWFjaGluZVBhcmFtZXRlck92ZXJ2aWV3Qm9vdHN0cmFwX2pzcC5qYXZhOjEyMDkpDQo+
ID4gICAgICAgICBhdCBvcmcuYXBhY2hlLmphc3Blci5ydW50aW1lLkh0dHBKc3BCYXNlLnNlcnZp
Y2UoSHR0cEpzcEJhc2UuamF2YTo3MCkNCj4gPiAgICAgICAgIGF0IGphdmF4LnNlcnZsZXQuaHR0
cC5IdHRwU2VydmxldC5zZXJ2aWNlKEh0dHBTZXJ2bGV0LmphdmE6NjIzKQ0KPiA+ICAgICAgICAg
YXQgb3JnLmFwYWNoZS5qYXNwZXIuc2VydmxldC5Kc3BTZXJ2bGV0V3JhcHBlci5zZXJ2aWNlKEpz
cFNlcnZsZXRXcmFwcGVyLmphdmE6NDY2KQ0KPiA+ICAgICAgICAgLi4uIDExOCBtb3JlDQo+ID4N
Cj4gPiBJIGFzc3VtZWQgdGhhdCBTdHJ1dHMgNi40IHdvdWxkIHVzZSBnZXR0ZXJzIGFuZCBzZXR0
ZXJzIHRvIGludGVyYWN0IHdpdGggcHJvcGVydGllcyBvbiB0aGUgcGFnZSwgYmVjYXVzZSBBRkFJ
SyB0aGF0J3Mgd2hhdCBpdCBkaWQgaW4gU3RydXRzIDIuMyBhbmQgMi41LCBhbmQgaGVuY2UgSSBj
b3VsZCBqdXN0IHVzZSBhIGdldHRlciB3aXRob3V0IGhhdmluZyBhIGZpZWxkIHByb3BlcnR5IHdp
dGggdGhlIGNvcnJlc3BvbmRpbmcgbmFtZSBvbiB0aGUgYWN0aW9uLiBJcyB0aGF0IGFzc3VtcHRp
b24gaW5jb3JyZWN0Pw0KPiA+DQo+ID4gRm9yIGNvbXBsZXRlbmVzcywgdGhpcyBpcyBCb290c3Ry
YXBTdXBwb3J0LmphdmE6DQo+ID4NCj4gPiBwdWJsaWMgZmluYWwgY2xhc3MgQm9vdHN0cmFwU3Vw
cG9ydCBleHRlbmRzIEFjdGlvblN1cHBvcnQgew0KPiA+DQo+ID4gICAgICAgICAgICAgICAgIC8q
Kg0KPiA+ICAgICAgICAgICAgICAgICAqDQo+ID4gICAgICAgICAgICAgICAgICAqLw0KPiA+ICAg
ICAgICAgICAgICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQg
PSANCj4gPiAzMTU5NjYzMTA2NTMwMjE3MjkzTDsNCj4gPg0KPiA+ICAgICAgICAgICAgICAgICBw
cml2YXRlIEJvb3RzdHJhcFN1cHBvcnQoKSB7DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsb2FkWWVzTm9BbGxPcHRpb25zTWFwKCk7DQo+ID4gICAgICAgICAgICAgICAgIH0N
Cj4gPg0KPiA+ICAgICAgICAgICAgICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBCb290c3RyYXBT
dXBwb3J0IElOU1RBTkNFID0gbmV3IA0KPiA+IEJvb3RzdHJhcFN1cHBvcnQoKTsNCj4gPg0KPiA+
ICAgICAgICAgICAgICAgICAvKioNCj4gPiAgICAgICAgICAgICAgICAgKiBUaGUgdGV4dCBwcm92
aWRlciwgaW5pdGlhbGl6ZWQgd2l0aCBhbiBpbnN0YW5jZSBvZiB0aGUgQ3VzdG9tVGV4dFByb3Zp
ZGVyLg0KPiA+ICAgICAgICAgICAgICAgICAqLw0KPiA+ICAgICAgICAgICAgICAgICBwcml2YXRl
IGZpbmFsIHRyYW5zaWVudCBUZXh0UHJvdmlkZXIgdGV4dFByb3ZpZGVyID0gbmV3IEN1c3RvbU1l
c3NhZ2VSZXNvdXJjZXNGYWN0b3J5KCkuY3JlYXRlSW5zdGFuY2UoZ2V0Q2xhc3MoKSwNCj4gPiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzKTsNCj4g
Pg0KPiA+ICAgICAgICAgICAgICAgICBwcml2YXRlIExpc3Q8U2VsZWN0T3B0aW9uVmlldz4geWVz
Tm9BbGxMaXN0Ow0KPiA+DQo+ID4gICAgICAgICAgICAgICAgIHByaXZhdGUgTGlzdDxTZWxlY3RP
cHRpb25WaWV3PiB5ZXNOb0xpc3Q7DQo+ID4NCj4gPiAgICAgICAgICAgICAgICAgcHVibGljIHN0
YXRpYyBCb290c3RyYXBTdXBwb3J0IGdldEluc3RhbmNlKCkgew0KPiA+ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIElOU1RBTkNFOw0KPiA+ICAgICAgICAgICAgICAgICB9
DQo+ID4NCj4gPiAgICAgICAgICAgICAgICAgLyoqDQo+ID4gICAgICAgICAgICAgICAgICogVGhp
cyBpcyB1c2VkIHRvIGhlbHAgZ2VuZXJhdGUgdGhlIHllc25vYWxsIG9wdGlvbnMgZG9qbyBzdHJp
bmcNCj4gPiAgICAgICAgICAgICAgICAgKi8NCj4gPiAgICAgICAgICAgICAgICAgcHJpdmF0ZSBz
dGF0aWMgZmluYWwgaW50IFlOQV9OTyA9IENvbW1vblV0aWxzLkRPX05PVF9TSE9XX0VOVFJJRVM7
DQo+ID4gICAgICAgICAgICAgICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBZTkFfWUVTID0g
Q29tbW9uVXRpbHMuU0hPV19FTlRSSUVTOw0KPiA+ICAgICAgICAgICAgICAgICBwcml2YXRlIHN0
YXRpYyBmaW5hbCBpbnQgWU5BX0FMTCA9IA0KPiA+IENvbW1vblV0aWxzLlNIT1dfQUxMX0VOVFJJ
RVM7DQo+ID4NCj4gPiAgICAgICAgICAgICAgICAgLy8gT3BlcmF0aW5nIFN5c3RlbSBkZXNjcmlw
dGlvbg0KPiA+ICAgICAgICAgICAgICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmdbXVtd
IFlFU05PQUxMREVTQ1JJUFRJT05TID0gew0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHsgWU5BX1lFUyArICIiLCBNYXN0ZXJDb2RlRGVzY3JpcHRp
b25LZXlzLk1DX1lFU05PQUxMX1lFUyB9LA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHsgWU5BX05PICsgIiIsIE1hc3RlckNvZGVEZXNjcmlwdGlv
bktleXMuTUNfWUVTTk9BTExfTk8gfSwNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7IFlOQV9BTEwgKyAiIiwgTWFzdGVyQ29kZURlc2NyaXB0aW9u
S2V5cy5NQ19ZRVNOT0FMTF9BTEwgfSB9Ow0KPiA+ICAgICAgICAgICAgICAgICAvLyBPcGVyYXRp
bmcgU3lzdGVtIGRlc2NyaXB0aW9uDQo+ID4gICAgICAgICAgICAgICAgIHByaXZhdGUgc3RhdGlj
IGZpbmFsIFN0cmluZ1tdW10gWUVTTk9ERVNDUklQVElPTlMgPSB7IHsgWU5BX1lFUyArICIiLCBN
YXN0ZXJDb2RlRGVzY3JpcHRpb25LZXlzLk1DX1lFU05PQUxMX1lFUyB9LA0KPiA+ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgWU5BX05PICsgIiIsIA0K
PiA+IE1hc3RlckNvZGVEZXNjcmlwdGlvbktleXMuTUNfWUVTTk9BTExfTk8gfSB9Ow0KPiA+DQo+
ID4gICAgICAgICAgICAgICAgIC8qKg0KPiA+ICAgICAgICAgICAgICAgICAqIFRoaXMgbWV0aG9k
IGlzIGF1dG9tYXRpY2FsbHkgY2FsbGVkIGJ5IFN0cnV0cywgaXQgaW5qZWN0cyB0aGUgdmFsdWUg
b2YgdGhlDQo+ID4gICAgICAgICAgICAgICAgICogU3RydXRzQ29uc3RhbnRzLlNUUlVUU19DVVNU
T01fSTE4Tl9SRVNPVVJDRVMuIFRoZSB2YWx1ZXMgaXMgc2V0IGFzIHRoZSBzdGF0aWMNCj4gPiAg
ICAgICAgICAgICAgICAgKiBmaWVsZCBvZiB0aGUgQ3VzdG9tTG9jYWxpemVkVGV4dFV0aWwgY2xh
c3MsIHdoaWNoIGlzIG5lZWRlZCB3aGVuIGxvYWRpbmcNCj4gPiAgICAgICAgICAgICAgICAgKiBt
ZXNzYWdlcyBmcm9tIHRoZSByZXNvdXJjZSBidW5kbGVzLg0KPiA+ICAgICAgICAgICAgICAgICAq
DQo+ID4gICAgICAgICAgICAgICAgICAqIEBwYXJhbSBzdHJ1dHNDdXN0b21JMThuUmVzb3VyY2Vz
IFRoZSBwcm9wZXJ0eSB2YWx1ZQ0KPiA+ICAgICAgICAgICAgICAgICAqLw0KPiA+ICAgICAgICAg
ICAgICAgICBASW5qZWN0KFN0cnV0c0NvbnN0YW50cy5TVFJVVFNfQ1VTVE9NX0kxOE5fUkVTT1VS
Q0VTKQ0KPiA+ICAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBzZXRTdHJ1dHNDdXN0b21JMThu
UmVzb3VyY2VzKFN0cmluZyBzdHJ1dHNDdXN0b21JMThuUmVzb3VyY2VzKSB7DQo+ID4gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQ3VzdG9tTG9jYWxpemVkVGV4dFV0aWwuZ2V0
U3RydXRzQ3VzdG9tSTE4blJlc291cmNlcygpID09IG51bGwpIHsNCj4gPiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21Mb2NhbGl6ZWRUZXh0VXRp
bC5zZXRTdHJ1dHNDdXN0b21JMThuUmVzb3VyY2VzKHN0cnV0c0N1c3RvbUkxOG5SZXNvdXJjZXMp
Ow0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEN1
c3RvbUxvY2FsaXplZFRleHRVdGlsLmNsZWFyRGVmYXVsdFJlc291cmNlQnVuZGxlcygpOw0KPiA+
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KPiA+ICAgICAgICAgICAgICAgICB9
DQo+ID4NCj4gPiAgICAgICAgICAgICAgICAgLyoqDQo+ID4gICAgICAgICAgICAgICAgICogQHNl
ZSBjb20ub3BlbnN5bXBob255Lnh3b3JrMi5BY3Rpb25TdXBwb3J0I2dldFRleHQoU3RyaW5nKQ0K
PiA+ICAgICAgICAgICAgICAgICAqLw0KPiA+ICAgICAgICAgICAgICAgICBwdWJsaWMgU3RyaW5n
IGdldFRleHQoU3RyaW5nIGFUZXh0TmFtZSkgew0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRleHRQcm92aWRlci5nZXRUZXh0KGFUZXh0TmFtZSk7DQo+ID4gICAg
ICAgICAgICAgICAgIH0NCj4gPg0KPiA+ICAgICAgICAgICAgICAgICAvKioNCj4gPiAgICAgICAg
ICAgICAgICAgKiBUaGlzIGdlbmVyYXRlcyB0aGUgQm9vdHN0cmFwIFN0cmluZyBmb3IgdGhlIFll
c05vQWxsIE9wdGlvbnMuDQo+ID4gICAgICAgICAgICAgICAgICovDQo+ID4gICAgICAgICAgICAg
ICAgIHByaXZhdGUgdm9pZCBjcmVhdGVBdXRvY29tcGxldGVWaWV3TGlzdEZvclllc05vQWxsT3B0
aW9uc01hcCgpIHsNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHllc05vQWxs
TGlzdCA9IG5ldyBBcnJheUxpc3Q8U2VsZWN0T3B0aW9uVmlldz4oKTsNCj4gPiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZvciAoU3RyaW5nW10geWVzTm9BbGxPcHRpb24gOiBZRVNO
T0FMTERFU0NSSVBUSU9OUykgew0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNlbGVjdE9wdGlvblZpZXcgc2VsZWN0T3B0aW9uVmlldyA9IG5ldyBT
ZWxlY3RPcHRpb25WaWV3KCk7DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZWN0T3B0aW9uVmlldy5zZXRMYWJlbChnZXRUZXh0KHllc05vQWxs
T3B0aW9uWzFdKSk7DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZWN0T3B0aW9uVmlldy5zZXRJZCh5ZXNOb0FsbE9wdGlvblswXSk7DQo+ID4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVzTm9BbGxM
aXN0LmFkZChzZWxlY3RPcHRpb25WaWV3KTsNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0NCj4gPiAgICAgICAgICAgICAgICAgfQ0KPiA+DQo+ID4gICAgICAgICAgICAgICAg
IC8qKg0KPiA+ICAgICAgICAgICAgICAgICAqIFRoaXMgZ2VuZXJhdGVzIHRoZSBCb290c3RyYXAg
U3RyaW5nIGZvciB0aGUgWWVzTm9BbGwgT3B0aW9ucy4NCj4gPiAgICAgICAgICAgICAgICAgKi8N
Cj4gPiAgICAgICAgICAgICAgICAgcHJpdmF0ZSB2b2lkIGNyZWF0ZUF1dG9jb21wbGV0ZVZpZXdM
aXN0Rm9yWWVzTm9PcHRpb25zTWFwKCkgew0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgeWVzTm9MaXN0ID0gbmV3IEFycmF5TGlzdDxTZWxlY3RPcHRpb25WaWV3PigpOw0KPiA+
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChTdHJpbmdbXSB5ZXNOb09wdGlv
biA6IFlFU05PREVTQ1JJUFRJT05TKSB7DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU2VsZWN0T3B0aW9uVmlldyBzZWxlY3RPcHRpb25WaWV3ID0g
bmV3IFNlbGVjdE9wdGlvblZpZXcoKTsNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxlY3RPcHRpb25WaWV3LnNldExhYmVsKGdldFRleHQoeWVz
Tm9PcHRpb25bMV0pKTsNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZWxlY3RPcHRpb25WaWV3LnNldElkKHllc05vT3B0aW9uWzBdKTsNCj4gPiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ZXNOb0xpc3Qu
YWRkKHNlbGVjdE9wdGlvblZpZXcpOw0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQ0KPiA+ICAgICAgICAgICAgICAgICB9DQo+ID4NCj4gPiAgICAgICAgICAgICAgICAgLyoq
DQo+ID4gICAgICAgICAgICAgICAgICogTG9hZCB0aGUgWWVzL05vL0FsbCBvcHRpb25zZXQgbWFw
DQo+ID4gICAgICAgICAgICAgICAgICovDQo+ID4gICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lk
IGxvYWRZZXNOb0FsbE9wdGlvbnNNYXAoKSB7DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjcmVhdGVBdXRvY29tcGxldGVWaWV3TGlzdEZvclllc05vQWxsT3B0aW9uc01hcCgp
Ow0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlQXV0b2NvbXBsZXRl
Vmlld0xpc3RGb3JZZXNOb09wdGlvbnNNYXAoKTsNCj4gPiAgICAgICAgICAgICAgICAgfQ0KPiA+
DQo+ID4gICAgICAgICAgICAgICAgIHB1YmxpYyBMaXN0PFNlbGVjdE9wdGlvblZpZXc+IGdldFll
c05vQWxsTGlzdCgpIHsNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB5ZXNOb0FsbExpc3Q7DQo+ID4gICAgICAgICAgICAgICAgIH0NCj4gPg0KPiA+ICAgICAgICAg
ICAgICAgICBwdWJsaWMgTGlzdDxTZWxlY3RPcHRpb25WaWV3PiBnZXRZZXNOb0xpc3QoKSB7DQo+
ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geWVzTm9MaXN0Ow0KPiA+
ICAgICAgICAgICAgICAgICB9DQo+ID4NCj4gPiB9DQo+ID4NCj4gPiBLaW5kIHJlZ2FyZHMsDQo+
ID4NCj4gPiBOYXRlIEtlcmtob2ZzDQo+ID4NCj4gPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+IC0gVG8gdW5z
dWJzY3JpYmUsIGUtbWFpbDogdXNlci11bnN1YnNjcmliZUBzdHJ1dHMuYXBhY2hlLm9yZw0KPiA+
IEZvciBhZGRpdGlvbmFsIGNvbW1hbmRzLCBlLW1haWw6IHVzZXItaGVscEBzdHJ1dHMuYXBhY2hl
Lm9yZw0KPiA+DQo+DQo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiBUbyB1bnN1YnNjcmliZSwgZS1tYWlsOiB1
c2VyLXVuc3Vic2NyaWJlQHN0cnV0cy5hcGFjaGUub3JnDQo+IEZvciBhZGRpdGlvbmFsIGNvbW1h
bmRzLCBlLW1haWw6IHVzZXItaGVscEBzdHJ1dHMuYXBhY2hlLm9yZw0KPg0KDQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0NClRvIHVuc3Vic2NyaWJlLCBlLW1haWw6IHVzZXItdW5zdWJzY3JpYmVAc3RydXRzLmFwYWNo
ZS5vcmcNCkZvciBhZGRpdGlvbmFsIGNvbW1hbmRzLCBlLW1haWw6IHVzZXItaGVscEBzdHJ1dHMu
YXBhY2hlLm9yZw0KDQo=
DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0NClRvIHVuc3Vic2NyaWJlLCBlLW1haWw6IHVzZXItdW5zdWJz
Y3JpYmVAc3RydXRzLmFwYWNoZS5vcmcNCkZvciBhZGRpdGlvbmFsIGNvbW1hbmRzLCBlLW1h
aWw6IHVzZXItaGVscEBzdHJ1dHMuYXBhY2hlLm9yZw0K
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.