RE: Suggestion needed for a case of Lucene Migration with TokenStream
"Saha, Rajib" <[email protected]> Fri, 30 May 2025 03:02:55 +0000
| Newsgroups | gmane.comp.jakarta.lucene.user |
|---|---|
| Message-ID | <DB9PR02MB8371880A473BF0B16DDBB3159061A@DB9PR02MB8371.eurprd02.prod.outlook.com> |
RGVhciBFeHBlcnRzLA0KDQpDYW4gc29tZWJvZHkgcGxlYXNlIGhlbHAgYW5kIGd1aWRlIG1lIGZv ciB0aGUgYmVsb3cgcXVlcmllcz8NCkkgaGF2ZSBiZWNvbWUgYml0IGNsdWVsZXNzIG5vdywgYWZ0 ZXIgZ2l2aW5nIGEgZ29vZCBudW1iZXIgb2YgZGlmZmVyZW50IHRyaWVzLg0KDQpSZWdhcmRzDQpS YWppYg0KDQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTogU2FoYSwgUmFqaWINClNl bnQ6IDI3IE1heSAyMDI1IDExOjUyDQpUbzogamF2YS11c2VyQGx1Y2VuZS5hcGFjaGUub3JnDQpT dWJqZWN0OiBSRTogU3VnZ2VzdGlvbiBuZWVkZWQgZm9yIGEgY2FzZSBvZiBMdWNlbmUgTWlncmF0 aW9uIHdpdGggVG9rZW5TdHJlYW0NCg0KSGkgVXdlLA0KDQpUaGFua3MgZm9yIHlvdXIgc3VnZ2Vz dGlvbnMgdGlsbCBub3cuIFdlIGhhdmUgYmVlbiBhYmxlIHRvIHByb2NlZWQgZ29vZC4NCldlIGFy ZSBub3cgc3R1Y2sgdG8gYSBwb2ludCwgd2hlcmUgd2UgbmVlZCBzb21lIHlvdXIgZXhwZXJ0IHN1 Z2dlc3Rpb24uDQoNCkFzIHBlciBvdXIgZGVzaWduLCBvbiBmdWxsIGNvbnRlbnQgaW5kZXhpbmcs DQotIGluIGZpcnN0IHN0ZXAsIHRoZXJlIHdpbGwgc21hbGwgTHVjZW5lIGluZGV4IGZpbGVzIGdl dHMgY3JlYXRlZCB3aXRoIDUtNiBkb2N1bWVudHMuIFdlIGNhbGxlZCBpdCBkZWx0YSBpbmRleCBm aWxlcy4NCi0gaW4gc2Vjb25kIHN0ZXBzLCB3ZSB0cnkgdG8gbWVyZ2UgdGhlIGRlbHRhIGluZGV4 IGZpbGVzIHRvIG1hc3RlciBJbmRleCBGaWxlLg0KQmVsb3cgaXMgc25pcHBldCBvZiB0aGUgY29k ZToNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCkluZGV4V3JpdGVyIG1hc3RlckluZGV4 V3JpdGVyID0gbmV3IEluZGV4V3JpdGVyKGluZGV4RGlyLCBjb25maWcpOw0KRlNEaXJlY3Rvcnlb XSBkZWx0YUluZGV4RGlycyA9IG5ldyBGU0RpcmVjdG9yeVtkZWx0YUluZGV4RGlyTGlzdC5zaXpl KCldOw0KaW50IGogPSAwOw0KZm9yIChJdGVyYXRvcjxGU0RpcmVjdG9yeT4gaSA9IGRlbHRhSW5k ZXhEaXJMaXN0Lml0ZXJhdG9yKCk7IGkuaGFzTmV4dCgpOyBqKyspIHsNCiAgICAgICAgZGVsdGFJ bmRleERpcnNbal0gPSBpLm5leHQoKTsNCn0NCm1hc3RlckluZGV4V3JpdGVyLmFkZEluZGV4ZXMo ZGVsdGFJbmRleERpcnMpOw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09DQoNCkJ1dCBvbiBk b2luZyBpdCwgd2UgYXJlIGdldHRpbmcgdGhlIGJlbG93IGV4Y2VwdGlvbi4NCkkgdHJpZWQgc2V2 ZXJhbCB0aGluZ3MuIEJ1dCwgY291bGQgbm90IGNvbWUgb3V0IG9mIHRoZSBwcm9ibGVtLg0KRG8g eW91IHN1c3BlY3QgYW55dGhpbmcgaGVyZT8gQ2FuIHlvdSBwbGVhc2Ugc3VnZ2VzdCBzb21ldGhp bmcgdG8gY29tZSBvdXQgb2YgdGhlIHByb2JsZW0/DQoNCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQ0KQ2F1Z2h0RXhjZXB0aW9uIHdoaWxlIE1lcmdpbmcgaW4g THVjZW5lSW5kZXhFbmdpbmUgY2Fubm90IGNoYW5nZSBmaWVsZCAiYm9lLnNlYXJjaC53aWxkX2Rl c2NyaXB0aW9uIiBmcm9tIGluZGV4IG9wdGlvbnM9RE9DU19BTkRfRlJFUVNfQU5EX1BPU0lUSU9O U19BTkRfT0ZGU0VUUyB0byBpbmNvbnNpc3RlbnQgaW5kZXggb3B0aW9ucz1ET0NTX0FORF9GUkVR U19BTkRfUE9TSVRJT05TDQpqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uOiBjYW5u b3QgY2hhbmdlIGZpZWxkICJib2Uuc2VhcmNoLndpbGRfZGVzY3JpcHRpb24iIGZyb20gaW5kZXgg b3B0aW9ucz1ET0NTX0FORF9GUkVRU19BTkRfUE9TSVRJT05TX0FORF9PRkZTRVRTIHRvIGluY29u c2lzdGVudCBpbmRleCBvcHRpb25zPURPQ1NfQU5EX0ZSRVFTX0FORF9QT1NJVElPTlMNCiAgICAg ICAgYXQgb3JnLmFwYWNoZS5sdWNlbmUuaW5kZXguRmllbGRJbmZvcyRGaWVsZE51bWJlcnMuYWRk T3JHZXQoRmllbGRJbmZvcy5qYXZhOjMwOCkNCiAgICAgICAgYXQgb3JnLmFwYWNoZS5sdWNlbmUu aW5kZXguSW5kZXhXcml0ZXIuYWRkSW5kZXhlcyhJbmRleFdyaXRlci5qYXZhOjI5ODQpDQogICAg ICAgIGF0IGNvbS5zYXAuYnVzaW5lc3NvYmplY3RzLnBsYXRmb3JtLnNlYXJjaC5sdWNlbmUuaW5k ZXguZW5naW5lLkx1Y2VuZUluZGV4RW5naW5lLm1lcmdlKEx1Y2VuZUluZGV4RW5naW5lLmphdmE6 OTgxKQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQoNClJl Z2FyZHMNClJhamliDQoNCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IFV3ZSBT Y2hpbmRsZXIgPHV3ZUB0aGV0YXBoaS5kZT4NClNlbnQ6IDMwIEFwcmlsIDIwMjUgMDI6MDMNClRv OiBqYXZhLXVzZXJAbHVjZW5lLmFwYWNoZS5vcmcNClN1YmplY3Q6IFJlOiBTdWdnZXN0aW9uIG5l ZWRlZCBmb3IgYSBjYXNlIG9mIEx1Y2VuZSBNaWdyYXRpb24gd2l0aCBUb2tlblN0cmVhbQ0KDQpJ ZiB0aGlzIGlzIFdpbmRvd3MsIHRoZSBkZWxldGlvbiBtYXkgbm90IHdvcmsgaWYgdGhlcmUgYXJl IHN0aWxsDQpJbmRleFJlYWRlcnMgb3IgV3JpdGVycyBvcGVuIGJ5IHNhbWUgb3Igb3RoZXIgcHJv Y2Vzc2VzLg0KDQpPbiBMaW51eCBJIGhhdmUgbm8gaWRlYSwgbmVlZCBhbiBleGNlcHRpb24gbWVz c2FnZS4gSXQgc2hvdWxkIGNsZWFybHkNCnNheSB3aHkgaXQgZmFpbHMuDQoNClV3ZQ0KDQpBbSAy OS4wNC4yMDI1IHVtIDEzOjQ0IHNjaHJpZWIgU2FoYSwgUmFqaWI6DQo+IEhpIFV3ZSwNCj4NCj4g SW4gb3VyIHByb2R1Y3Qgd2UgaGF2ZSBkaWZmZXJlbnQgbGV2ZWwgb2YgaW5kZXhpbmcgbGlrZSBN ZXRhRGF0YS9GdWxsQ29udGVudCBpbmZvcm1hdGlvbiBvZiB0aGUgUmVwb3J0cy4NCj4gU28sIFJl YnVpbGQgaW5kZXhpbmcgZGVsZXRlcyB0aGUgZXhpc3RpbmcgTHVjZW5lIGluZGV4IGZpbGVzIGFu ZCBkbyBhIGZyZXNoIGluZGV4aW5nIG9mIGFsbCB0aGUgZG9jdW1lbnRzLg0KPg0KPiBXaGVuIHdl IGRvIHBoeXNpY2FsbHkgZ29pbmcgdG8gZGlyZWN0b3J5IGFuZCBkZWxldGUgdGhlIEx1Y2VuZSBJ bmRleCBmaWxlcy4gVGhlIFJlYnVpbGQgaW5kZXhpbmcgaXMgd29ya2luZyBmaW5lLg0KPiBCdXQs IGZyb20gVUkgb2YgcHJvZHVjdCB3aGVuIHdlIGFyZSBzZWxlY3RpbmcgZm9yIFJlYnVpbGQgaW5k ZXhpbmcsIEluZGV4aW5nIGlzIG5vdCBoYXBwZW5pbmcuDQo+DQo+IEkgYW0gZGVidWdnaW5nIG1v cmUgZm9yIGl0LiBJIHdpbGwgdXBkYXRlIHlvdSBmdXJ0aGVyIG9uIGdldHRpbmcgYmV0dGVyIHBp Y3R1cmUuIEFzIG91ciBjb2RlIGZvciB0aGUgQXJlYSBnb2VzIHdpdGggbXVsdGlwbGUgdGFza3Mg YW5kIHRocmVhZC4gSXQgaXMgdGFraW5nIHRpbWUgdG8gZGVidWcuDQo+DQo+IEkgYW0gc3VzcGVj dGluZywgdGhlcmUgbWF5IGJlIHNvbWUgbG9jayBpcyB0aGVyZSBpbiBMdWNlbmUgSW5kZXggZmls ZXMsIGR1ZSB0byBvZiBpdCwgZGVsZXRlIG9mIEx1Y2VuZSBpbmRleCBmaWxlcyBhcmUgbm90IHdv cmtpbmcgd2l0aCBzdG9wcGluZyB0aGUgc2VydmljZS4gQnV0LCB0aGlzIGlzIGEgZ3Vlc3MuIElu dmVzdGlnYXRpb24gaXMgb24gZm9yIGl0Lg0KPiBEbyB5b3UgaGF2ZSBhbnkgc3VzcGVjdD8NCj4N Cj4gUmVnYXJkcw0KPiBSYWppYg0KPg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBG cm9tOiBVd2UgU2NoaW5kbGVyIDx1d2VAdGhldGFwaGkuZGU+DQo+IFNlbnQ6IDI4IEFwcmlsIDIw MjUgMTc6NTkNCj4gVG86IGphdmEtdXNlckBsdWNlbmUuYXBhY2hlLm9yZw0KPiBTdWJqZWN0OiBS ZTogU3VnZ2VzdGlvbiBuZWVkZWQgZm9yIGEgY2FzZSBvZiBMdWNlbmUgTWlncmF0aW9uIHdpdGgg VG9rZW5TdHJlYW0NCj4NCj4gSGksDQo+DQo+IHdoYXQgZG8geW91IG1lYW4gd2l0aDogIkJ1dCBz YW1lIGNvbnRlbnQgb24gcmVidWlsZGluZyB0aGUgaW5kZXggaXMgbm90DQo+IHdvcmtpbmciPw0K Pg0KPiBIb3cgZG8geW91IHJlYnVpbGQgdGhlIGluZGV4PyBJdCBpcyBub3QgZW5vdWdoIHRvIGp1 c3QgcmVhZCBhbGwNCj4gZG9jdW1lbnRzIGFzIHN0b3JlZCBmaWVsZHMgYW5kIHJlaW5kZXggdGhl bS4gWW91IG5lZWQgdGhlIG9yaWdpbmFsDQo+IGRvY3VtZW50IGRhdGEgYW5kIGJhc2ljYWxseSBy dW4gdGhlbSB0aG9ydWdoIHRoZSBzYW1lIHBpcGVsaW5lIHRoYXQgeW91DQo+IGFscmVhZHkgaGF2 ZSAoc28gdGhlIGluZGV4aW5nIHNob3VsZCBiZSBkb25lIGJ5IHRoZSBzYW1lIGNvZGUgdGhhdA0K PiBpbmRleGVzIG5ldyBkb2N1bWVudHMpLiBTbyBJJ2Qgd3JpdGUgc29tZSBjb2RlIHRoYXQgcmVh ZHMgdGhlIG9sZCBkYXRhDQo+IChpZiBwb3NzaWJsZSBmcm9tIHNvdXJjZSkgb3IgcmVhZHMgdGhl IG9sZCBpbmRleCAoaWYgYWxsIGluZm9ybWF0aW9uDQo+IHRoYXQgd2FzIGluZGV4ZWQgaXMgYXZh aWxhYmxlIGFzIHN0b3JlZCBmaWVsZHMsIHN5bnRoZXRpY2FsbHkgYnVpbGRzDQo+IGlucHV0IGRh dGEgZm9yIHRoZSBuZXcgaW5kZXhlciBhbmQgc2VuZHMgaXQgdG8gdGhlIEFQSSAob3Igd2hhdGV2 ZXIgeW91DQo+IGhhdmUgZm9yIGluZGV4aW5nIGluIHlvdXIgbmV3IHN5c3RlbSkuDQo+DQo+IElm IHlvdSBqdXN0IGhhdmUgaW5jb21wbGV0ZSBMdWNlbmUgRG9jdW1lbnQgaW5zdGFuY2VzIGZyb20g dGhlIG9sZGVyDQo+IEx1Y2VuZSBpbmRleCwgSSB0aGluayB5b3UncmUgbG9zdC4gV2hlbiB5b3Ug Y2Fubg0KPiBJbmRleFJlYWRlci9JbmRleFNlYXJjaGVyLmRvY3VtZW50KCksIHlvdSBvbmx5IGdl dCBzdG9yZWQgZmllbGRzLCAtLSBidXQNCj4gdGhhdCdzIG5vdCBhbGwgaW5mb3JtYXRpb24gdGhh dCB3YXMgb3JpZ2luYmFsbHkgdXNlZCBmb3IgaW5kZXhpbmcuDQo+IFJlYWRpbmcgZG9jdW1lbnRz IGZyb20gSW5kZXhSZWFkZXIgYW5kIHBhc3NpbmcgaXQgdG8gSW5kZXhXcml0ZXIgZG9lcw0KPiBu b3Qgd29yay4gSXQgd29ya3MgZnJvbSB0aGUgQVBJIHBvaW50IG9mIHZpZXcsIGJ1dCB0aGUgZGF0 YSBpcyBkaWZmZXJlbnQuDQo+DQo+IFV3ZQ0KPg0KPiBBbSAyOC4wNC4yMDI1IHVtIDEyOjQzIHNj aHJpZWIgU2FoYSwgUmFqaWI6DQo+PiBIaSBVd2UsDQo+Pg0KPj4gVGhhbmsgeW91IGZvciB5b3Vy IGRldGFpbGVkIGlucHV0IGFuZCB2YWx1YWJsZSBhZHZpY2UuIEkgZnVsbHkgdW5kZXJzdGFuZCBh bmQgYWdyZWUgdGhhdCB1cGdyYWRpbmcgZnJvbSBzdWNoIGFuIG9sZCB2ZXJzaW9uIG9mIEx1Y2Vu ZSBpbnZvbHZlcyBtdWNoIG1vcmUgdGhhbiBqdXN0IHJlc29sdmluZyBjb21waWxhdGlvbiBpc3N1 ZXMuDQo+PiBCYXNlZCBvbiB0aGUgbGF0ZXN0IEx1Y2VuZSB2ZXJzaW9uLCB3ZSBoYXZlIHJlZGVz aWduZWQgb3VyIHBsYXRmb3JtIGFjY29yZGluZ2x5IGdvaW5nIHRocm91Z2ggdGhlIEx1Y2VuZSBB UElzIHVzZWQgYW5kIHJlcGxhY2luZyBhY2NvcmRpbmdseSB0byBsYXRlc3QuDQo+Pg0KPj4gV2l0 aCB0aGVzZSBjaGFuZ2VzLCBGcmVzaCBjb250ZW50IGluZGV4aW5nIGlzIHdvcmtpbmcgZmluZS4g U2VhcmNoIHJlc3VsdHMgYXJlIGFsc28gY29taW5nIGFzIGV4cGVjdGVkLg0KPj4gR3JlYXRseSBh cHByZWNpYXRlIHlvdXIgZXhwZXJ0IGd1aWRhbmNlLCB0byBoZWxwIHRvIGJyaW5naW5nIHRpbGwg dGhpcyBwb2ludC4NCj4+DQo+PiBCdXQgc2FtZSBjb250ZW50IG9uIHJlYnVpbGRpbmcgdGhlIGlu ZGV4IGlzIG5vdCB3b3JraW5nLg0KPj4gSSBhbSBkZWJ1Z2dpbmcgdGhpcyBwYXJ0IG5vdy4NCj4+ DQo+PiBEbyB5b3UgaGF2ZSBhbnkgc3VnZ2VzdGlvbiBvbiB0aGUgcHJvYmxlbSA/DQo+Pg0KPj4g UmVnYXJkcw0KPj4gUmFqaWINCj4+DQo+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPj4g RnJvbTogVXdlIFNjaGluZGxlciA8dXdlQHRoZXRhcGhpLmRlPg0KPj4gU2VudDogMjUgQXByaWwg MjAyNSAxODoxOQ0KPj4gVG86IGphdmEtdXNlckBsdWNlbmUuYXBhY2hlLm9yZw0KPj4gU3ViamVj dDogUmU6IFN1Z2dlc3Rpb24gbmVlZGVkIGZvciBhIGNhc2Ugb2YgTHVjZW5lIE1pZ3JhdGlvbiB3 aXRoIFRva2VuU3RyZWFtDQo+Pg0KPj4gSGksDQo+Pg0KPj4gSSdkIGxpa2UgdG8gbWVudGlvbiB0 aGUgZm9sbG93aW5nOiBZb3UgYXJlIHRyeWluZyB0byB1cGdyYWRlIEx1Y2VuZSBmcm9tDQo+PiBh IHJlYWxseSBhbmNpZW50IHZlcnNpb24uIE9mIGNvdXJzZSwgYmFzaWMgY29uY2VwdHMgYXJlIHN0 aWxsIHRoZSBzYW1lLA0KPj4gYnV0IHRoZSBzZXJhY2ggZW5naW5lIGFuZCBpdHMgQVBJcyBoYXZl IGNoYW5nZWQgZHJhbWF0aWNhbGx5LCBzbyBqdXN0DQo+PiB0cnlpbmcgdG8gImNvbXBpbGUgY29k ZSBhbmQgZml4IHJhbmRvbSBzdHVmZiB1bnRpbCBpdCBjb21waWxlcyIgd2lsbCBub3QNCj4+IGJy aW5nIHlvdSB0byBhIHdvcmtpbmcgcHJvZHVjdC4gT24gdG9wLCBpdCBtYXkgbWFrZSB0aGUgcHJv ZHVjdCB3b3JzZQ0KPj4gdGhhbiBiZWZvcmUgdGhlIHVwZGF0ZS4NCj4+DQo+PiBUbyBkbyB0aGUg dXBncmFkZSBjb3JyZWN0bHksIGl0IGlzIHJlY29tbWVuZGVkIHRvIGhhdmUgc29tZWJvZHkNCj4+ IGF2YWlsYWJsZSAoaWRlYWxseSB0aGUgcGVyc29uIHdobyB3cm90ZSB0aGUgY29kZSBvcmlnaW5h bGx5KSBhbmQgdGhlbiBnbw0KPj4gdGhvdWdoIGl0IGxpbmUtYnkgbGluZSBhbmQgcmV3cml0ZSBp dC4gSSBhbSBleHBsaWNpdGVseSBtZW50aW9uaW5nDQo+PiAicmV3cml0ZSIgYmVjYXVzZSB0aGF0 J3Mgd2hhdCB5b3Ugc2hvdWxkIGRvISBJZiB5b3UgZG9uJ3QgaGF2ZSBhIHBlcnNvbg0KPj4gdGhh dCB1bmRlcnRzdGFuZHMgTHVjZW5lIGVub3VnaCwgSSdkIHN1Z2dlc3QgdG8gZ2V0IGhlbHAgZnJv bSBvdXRzaWRlLg0KPj4gWW91IG5lZWQgdG8gdW5kZXJzdGFuZCBldmVyeSBsaW5lIG9mIGNvZGUg d2hlbiByZXdyaXRpbmcgaXQuIEluIGFkZGl0aW9uDQo+PiB0aGVyZSBhcmUgbWFueSBuZXcgZmVh dHVyZXMgdGhhdCBtYWtlIGFsbCB0aGF0IHNlcGNpYWwgY2FzZXMgbGlrZQ0KPj4gUGF5TG9hZHMg b24gVG9rZW5zdHJlYW1zIG9ic29sZXRlLiBJJ2Qgbm90IHJlY29tbWVuZCB0byB1c2Ugc29tZXRo aW5nDQo+PiBwYXlsb2FkcyBvbiB0ZXJtcyBub3dhZGF5cy4NCj4+DQo+PiBVd2UNCj4+DQo+PiBB bSAyNC4wNC4yMDI1IHVtIDEyOjI5IHNjaHJpZWIgTWlraGFpbCBLaGx1ZG5ldjoNCj4+PiBSaWdo dC4gVGV4dEZpZWxkLlRZUEVfTk9UX1NUT1JFRCBzaG91bGQgYmUgdXNlZCB0aGVuLg0KPj4+DQo+ Pj4gT24gVGh1LCBBcHIgMjQsIDIwMjUgYXQgMTA6MzfigK9BTSBTYWhhLCBSYWppYiA8cmFqaWIu c2FoYUBzYXAuY29tLmludmFsaWQ+DQo+Pj4gd3JvdGU6DQo+Pj4NCj4+Pj4gVGhhbmtzIE1pa2hh aWwgZm9yIHRoZSBzdWdnZXN0aW9uLg0KPj4+PiBOb3cgdGhlIHByZXZpb3VzIGV4Y2VwdGlvbiBo YXMgZ29uZS4gQnV0IGEgbmV3IGV4Y2VwdGlvbiBoYXMgY29tZSBmcm9tDQo+Pj4+IEZpZWxkLmph dmEuDQo+Pj4+IEhlcmUgYmVsb3cgYXJlIHRoZSBleGNlcHRpb24gZGV0YWlscy4NCj4+Pj4gPT09 PT09PT0NCj4+Pj4gamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbjogVG9rZW5TdHJl YW0gZmllbGRzIGNhbm5vdCBiZSBzdG9yZWQNCj4+Pj4gICAgICAgICAgICBhdCBvcmcuYXBhY2hl Lmx1Y2VuZS5kb2N1bWVudC5GaWVsZC48aW5pdD4oRmllbGQuamF2YToxNTUpDQo+Pj4+ID09PT09 PT09PQ0KPj4+Pg0KPj4+PiBDYW4geW91IHBsZWFzZSBzdWdnZXN0IGhlcmUgdG9vPw0KPj4+Pg0K Pj4+PiBSZWdhcmRzDQo+Pj4+IFJhamliDQo+Pj4+DQo+Pj4+DQo+Pj4+IC0tLS0tT3JpZ2luYWwg TWVzc2FnZS0tLS0tDQo+Pj4+IEZyb206IE1pa2hhaWwgS2hsdWRuZXYgPG1raGxAYXBhY2hlLm9y Zz4NCj4+Pj4gU2VudDogMjQgQXByaWwgMjAyNSAxMjoxMA0KPj4+PiBUbzogamF2YS11c2VyQGx1 Y2VuZS5hcGFjaGUub3JnDQo+Pj4+IFN1YmplY3Q6IFJlOiBTdWdnZXN0aW9uIG5lZWRlZCBmb3Ig YSBjYXNlIG9mIEx1Y2VuZSBNaWdyYXRpb24gd2l0aA0KPj4+PiBUb2tlblN0cmVhbQ0KPj4+Pg0K Pj4+PiBIaQ0KPj4+PiBVc2UgVGV4dEZpZWxkLlRZUEVfU1RPUkVEIGFzIHRoZSB0aGlyZCBhcmd1 bWVudCBpbiBuZXcgRmllbGQoKQ0KPj4+PiBzZWUNCj4+Pj4NCj4+Pj4gaHR0cHM6Ly9naXRodWIu Y29tL2FwYWNoZS9sdWNlbmUtc29sci9ibG9iL2UyN2Y0NGUzZDc4ZGZjZWMyMzBjOTdlMGExMjQw ZTM3NTFkYWVmZjkvbHVjZW5lL2NvcmUvc3JjL2phdmEvb3JnL2FwYWNoZS9sdWNlbmUvZG9jdW1l bnQvVGV4dEZpZWxkLmphdmEjTDM1QzMzLUwzNUM0NA0KPj4+Pg0KPj4+Pg0KPj4+PiBPbiBUaHUs IEFwciAyNCwgMjAyNSBhdCA4OjM34oCvQU0gU2FoYSwgUmFqaWIgPHJhamliLnNhaGFAc2FwLmNv bS5pbnZhbGlkPg0KPj4+PiB3cm90ZToNCj4+Pj4NCj4+Pj4+IEhpIEV4cGVydHMsDQo+Pj4+Pg0K Pj4+Pj4gV2UgYXJlIG1pZ3JhdGluZyBMdWNlbmUgZnJvbSAyLjQuMSB0byA4LjExLjIuDQo+Pj4+ Pg0KPj4+Pj4gRHVyaW5nIE1pZ3JhdGlvbiBmb3IgYSBwYXJ0IG9mIGNvZGUsIHdlIGFyZSBnZXR0 aW5nIGJlbG93IGV4Y2VwdGlvbiBpbg0KPj4+Pj4gOC4xMS4yIGJhc2VkIGNoYW5nZXMgZnJvbSBS ZWQgbGluZSBjb2xvcmVkLg0KPj4+Pj4gPT09PT09PT09PT09PQ0KPj4+Pj4gamF2YS5sYW5nLkls bGVnYWxBcmd1bWVudEV4Y2VwdGlvbjogVG9rZW5TdHJlYW0gZmllbGRzIG11c3QgYmUgaW5kZXhl ZA0KPj4+PiBhbmQNCj4+Pj4+IHRva2VuaXplZA0KPj4+Pj4gYXQgb3JnLmFwYWNoZS5sdWNlbmUu ZG9jdW1lbnQuRmllbGQuPGluaXQ+KEZpZWxkLmphdmE6MTUyKQ0KPj4+Pj4NCj4+Pj4+IEkgdGll ZCBmZXcgb3B0aW9ucy4gQnV0LCBjb3VsZCBub3QgYWJsZSB0byByZXNvbHZlIHRoZSBlcnJvci4g QmVpaXcNCj4+Pj4+IENhbiBzb21lYm9keSBvZiB5b3UgcGxlYXNlIGhlbHAgbWUgdG8gaWRlbnRp ZnksIHdoZXJlIGl0IGlzIGdvaW5nIGFzDQo+Pj4+IHdyb25nPw0KPj4+Pj4gV2UgaGFkIGNvZGUg YmFzZWQgb24gMi40LjEgYXMgbGlrZSBiZWxvdzoNCj4+Pj4+ID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09DQo+Pj4+PiBJbnQgY3VycmVudFZhbDwNCj4+Pj4+IGh0dHA6Ly8xMC4y MzguMjM2LjEwMTo4MDgwL3NvdXJjZS9zP2RlZnM9Y3VycmVudFZhbCZwcm9qZWN0PTIwMjVfUlRN PiA9DQo+Pj4+PiAvL3NvbWUgdmFsdWUNCj4+Pj4+IFBheWxvYWRUb2tlblN0cmVhbTwNCj4+Pj4+ DQo+Pj4+IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS9zP2RlZnM9UGF5bG9hZFRv a2VuU3RyZWFtJnByb2plY3Q9MjAyNV9SVE0NCj4+Pj4+IHRva2VuU3RyZWFtPA0KPj4+Pj4gaHR0 cDovLzEwLjIzOC4yMzYuMTAxOjgwODAvc291cmNlL3M/cmVmcz10b2tlblN0cmVhbSZwcm9qZWN0 PTIwMjVfUlRNPiA9DQo+Pj4+PiBuZXcgUGF5bG9hZFRva2VuU3RyZWFtPA0KPj4+Pj4NCj4+Pj4g aHR0cDovLzEwLjIzOC4yMzYuMTAxOjgwODAvc291cmNlL3M/ZGVmcz1QYXlsb2FkVG9rZW5TdHJl YW0mcHJvamVjdD0yMDI1X1JUTQ0KPj4+Pj4+ICgpOw0KPj4+Pj4gdG9rZW5TdHJlYW08DQo+Pj4+ Pg0KPj4+PiBodHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9zb3VyY2UveHJlZi8yMDI1X1JUTS9w bGF0Zm9ybS5zZXJ2aWNlcy5zZWFyY2guamF2YS9mcmFtZXdvcmsvamF2YS9zZXJ2aWNlcGx1Z2lu cy9zcmMvY29tL3NhcC9idXNpbmVzc29iamVjdHMvcGxhdGZvcm0vc2VhcmNoL2x1Y2VuZS9pbmRl eC9lbmdpbmUvTHVjZW5lSW5kZXhFbmdpbmUuamF2YSN0b2tlblN0cmVhbQ0KPj4+Pj4+IC5zZXRQ YXlsb2FkPA0KPj4+Pj4gaHR0cDovLzEwLjIzOC4yMzYuMTAxOjgwODAvc291cmNlL3M/ZGVmcz1z ZXRQYXlsb2FkJnByb2plY3Q9MjAyNV9SVE0NCj4+Pj4+PiAoY3VycmVudFZhbDwNCj4+Pj4+IGh0 dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS9zP2RlZnM9Y3VycmVudFZhbCZwcm9qZWN0 PTIwMjVfUlRNPik7DQo+Pj4+PiBsdWNGaWVsZDwNCj4+Pj4+DQo+Pj4+IGh0dHA6Ly8xMC4yMzgu MjM2LjEwMTo4MDgwL3NvdXJjZS94cmVmLzIwMjVfUlRNL3BsYXRmb3JtLnNlcnZpY2VzLnNlYXJj aC5qYXZhL2ZyYW1ld29yay9qYXZhL3NlcnZpY2VwbHVnaW5zL3NyYy9jb20vc2FwL2J1c2luZXNz b2JqZWN0cy9wbGF0Zm9ybS9zZWFyY2gvbHVjZW5lL2luZGV4L2VuZ2luZS9MdWNlbmVJbmRleEVu Z2luZS5qYXZhI2x1Y0ZpZWxkDQo+Pj4+PiA9IG5ldyBGaWVsZDwNCj4+Pj4+IGh0dHA6Ly8xMC4y MzguMjM2LjEwMTo4MDgwL3NvdXJjZS9zP2RlZnM9RmllbGQmcHJvamVjdD0yMDI1X1JUTT4oY29u ZmlnPA0KPj4+Pj4gaHR0cDovLzEwLjIzOC4yMzYuMTAxOjgwODAvc291cmNlL3M/ZGVmcz1jb25m aWcmcHJvamVjdD0yMDI1X1JUTQ0KPj4+Pj4+IC5wYXlsb2FkVWlkPA0KPj4+Pj4gaHR0cDovLzEw LjIzOC4yMzYuMTAxOjgwODAvc291cmNlL3M/ZGVmcz1wYXlsb2FkVWlkJnByb2plY3Q9MjAyNV9S VE0NCj4+Pj4+PiAoKS5uYW1lPGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS9zP2Rl ZnM9bmFtZSZwcm9qZWN0PTIwMjVfUlRNDQo+Pj4+PiAsDQo+Pj4+PiB0b2tlblN0cmVhbTwNCj4+ Pj4+DQo+Pj4+IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS94cmVmLzIwMjVfUlRN L3BsYXRmb3JtLnNlcnZpY2VzLnNlYXJjaC5qYXZhL2ZyYW1ld29yay9qYXZhL3NlcnZpY2VwbHVn aW5zL3NyYy9jb20vc2FwL2J1c2luZXNzb2JqZWN0cy9wbGF0Zm9ybS9zZWFyY2gvbHVjZW5lL2lu ZGV4L2VuZ2luZS9MdWNlbmVJbmRleEVuZ2luZS5qYXZhI3Rva2VuU3RyZWFtDQo+Pj4+Pj4gKTsN Cj4+Pj4+IGRvYzxodHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9zb3VyY2Uvcz9kZWZzPWRvYyZw cm9qZWN0PTIwMjVfUlRNPi5hZGQ8DQo+Pj4+PiBodHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9z b3VyY2Uvcz9kZWZzPWFkZCZwcm9qZWN0PTIwMjVfUlRNPihsdWNGaWVsZDwNCj4+Pj4+DQo+Pj4+ IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS94cmVmLzIwMjVfUlRNL3BsYXRmb3Jt LnNlcnZpY2VzLnNlYXJjaC5qYXZhL2ZyYW1ld29yay9qYXZhL3NlcnZpY2VwbHVnaW5zL3NyYy9j b20vc2FwL2J1c2luZXNzb2JqZWN0cy9wbGF0Zm9ybS9zZWFyY2gvbHVjZW5lL2luZGV4L2VuZ2lu ZS9MdWNlbmVJbmRleEVuZ2luZS5qYXZhI2x1Y0ZpZWxkDQo+Pj4+Pj4gKTsNCj4+Pj4+IC4uLi4u Lg0KPj4+Pj4gcHVibGljIGNsYXNzIFBheWxvYWRUb2tlblN0cmVhbTwNCj4+Pj4+DQo+Pj4+IGh0 dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS9zP3JlZnM9UGF5bG9hZFRva2VuU3RyZWFt JnByb2plY3Q9MjAyNV9SVE0NCj4+Pj4+IGV4dGVuZHMgVG9rZW5TdHJlYW08DQo+Pj4+PiBodHRw Oi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9zb3VyY2Uvcz9kZWZzPVRva2VuU3RyZWFtJnByb2plY3Q9 MjAyNV9SVE0+ew0KPj4+Pj4gcHVibGljIHN0YXRpYyBTdHJpbmc8DQo+Pj4+PiBodHRwOi8vMTAu MjM4LjIzNi4xMDE6ODA4MC9zb3VyY2Uvcz9kZWZzPVN0cmluZyZwcm9qZWN0PTIwMjVfUlRNPg0K Pj4+Pj4gVUlEX1BBWUxPQURfU1RBUlRfVkFMPA0KPj4+Pj4NCj4+Pj4gaHR0cDovLzEwLjIzOC4y MzYuMTAxOjgwODAvc291cmNlL3M/cmVmcz1VSURfUEFZTE9BRF9TVEFSVF9WQUwmcHJvamVjdD0y MDI1X1JUTQ0KPj4+Pj4gPSAiX1VJRF8iOw0KPj4+Pj4gICAgICAgICAgICAgICAgICBwcml2YXRl IFRva2VuPA0KPj4+Pj4gaHR0cDovLzEwLjIzOC4yMzYuMTAxOjgwODAvc291cmNlL3M/ZGVmcz1U b2tlbiZwcm9qZWN0PTIwMjVfUlRNPiB0b2tlbjwNCj4+Pj4+IGh0dHA6Ly8xMC4yMzguMjM2LjEw MTo4MDgwL3NvdXJjZS9zP3JlZnM9dG9rZW4mcHJvamVjdD0yMDI1X1JUTT4gPSBuZXcNCj4+Pj4+ IFRva2VuPGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS9zP2RlZnM9VG9rZW4mcHJv amVjdD0yMDI1X1JUTQ0KPj4+Pj4+IChVSURfUEFZTE9BRF9TVEFSVF9WQUw8DQo+Pj4+IGh0dHA6 Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS94cmVmLzIwMjVfUlRNL3BsYXRmb3JtLnNlcnZp Y2VzLnNlYXJjaC5qYXZhL2ZyYW1ld29yay9qYXZhL3Nkay9zcmMvY29tL3NhcC9idXNpbmVzc29i amVjdHMvcGxhdGZvcm0vc2VhcmNoL3Nkay9pbmRleC9QYXlsb2FkVG9rZW5TdHJlYW0uamF2YSNV SURfUEFZTE9BRF9TVEFSVF9WQUwNCj4+Pj4+PiAsMCwwKTsNCj4+Pj4+ICAgICAgICAgICAgICAg ICAgcHJpdmF0ZSBieXRlW10gYnVmZmVyPA0KPj4+Pj4gaHR0cDovLzEwLjIzOC4yMzYuMTAxOjgw ODAvc291cmNlL3M/cmVmcz1idWZmZXImcHJvamVjdD0yMDI1X1JUTT4gPSBuZXcNCj4+Pj4+IGJ5 dGVbNF07DQo+Pj4+PiAgICAgICAgICAgICAgICAgIHByaXZhdGUgYm9vbGVhbiByZXR1cm5Ub2tl bjwNCj4+Pj4+IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS9zP3JlZnM9cmV0dXJu VG9rZW4mcHJvamVjdD0yMDI1X1JUTT4gPQ0KPj4+Pj4gZmFsc2U7DQo+Pj4+Pg0KPj4+Pj4gICAg ICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBzZXRQYXlsb2FkPA0KPj4+Pj4gaHR0cDovLzEwLjIz OC4yMzYuMTAxOjgwODAvc291cmNlL3M/cmVmcz1zZXRQYXlsb2FkJnByb2plY3Q9MjAyNV9SVE0N Cj4+Pj4+IChpbnQNCj4+Pj4+IHVpZDxodHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9zb3VyY2Uv cz9yZWZzPXVpZCZwcm9qZWN0PTIwMjVfUlRNPil7DQo+Pj4+PiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGJ1ZmZlcjwNCj4+Pj4+DQo+Pj4+IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4 MDgwL3NvdXJjZS94cmVmLzIwMjVfUlRNL3BsYXRmb3JtLnNlcnZpY2VzLnNlYXJjaC5qYXZhL2Zy YW1ld29yay9qYXZhL3Nkay9zcmMvY29tL3NhcC9idXNpbmVzc29iamVjdHMvcGxhdGZvcm0vc2Vh cmNoL3Nkay9pbmRleC9QYXlsb2FkVG9rZW5TdHJlYW0uamF2YSNidWZmZXINCj4+Pj4+IFswXQ0K Pj4+Pj4gPSAoYnl0ZSl1aWQ8DQo+Pj4+Pg0KPj4+PiBodHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4 MC9zb3VyY2UveHJlZi8yMDI1X1JUTS9wbGF0Zm9ybS5zZXJ2aWNlcy5zZWFyY2guamF2YS9mcmFt ZXdvcmsvamF2YS9zZGsvc3JjL2NvbS9zYXAvYnVzaW5lc3NvYmplY3RzL3BsYXRmb3JtL3NlYXJj aC9zZGsvaW5kZXgvUGF5bG9hZFRva2VuU3RyZWFtLmphdmEjdWlkDQo+Pj4+Pj4gOw0KPj4+Pj4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXI8DQo+Pj4+Pg0KPj4+PiBodHRw Oi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9zb3VyY2UveHJlZi8yMDI1X1JUTS9wbGF0Zm9ybS5zZXJ2 aWNlcy5zZWFyY2guamF2YS9mcmFtZXdvcmsvamF2YS9zZGsvc3JjL2NvbS9zYXAvYnVzaW5lc3Nv YmplY3RzL3BsYXRmb3JtL3NlYXJjaC9zZGsvaW5kZXgvUGF5bG9hZFRva2VuU3RyZWFtLmphdmEj YnVmZmVyDQo+Pj4+PiBbMV0NCj4+Pj4+ID0gKGJ5dGUpKHVpZDwNCj4+Pj4+DQo+Pj4+IGh0dHA6 Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS94cmVmLzIwMjVfUlRNL3BsYXRmb3JtLnNlcnZp Y2VzLnNlYXJjaC5qYXZhL2ZyYW1ld29yay9qYXZhL3Nkay9zcmMvY29tL3NhcC9idXNpbmVzc29i amVjdHMvcGxhdGZvcm0vc2VhcmNoL3Nkay9pbmRleC9QYXlsb2FkVG9rZW5TdHJlYW0uamF2YSN1 aWQNCj4+Pj4+Pj4+IDgpOw0KPj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi dWZmZXI8DQo+Pj4+Pg0KPj4+PiBodHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9zb3VyY2UveHJl Zi8yMDI1X1JUTS9wbGF0Zm9ybS5zZXJ2aWNlcy5zZWFyY2guamF2YS9mcmFtZXdvcmsvamF2YS9z ZGsvc3JjL2NvbS9zYXAvYnVzaW5lc3NvYmplY3RzL3BsYXRmb3JtL3NlYXJjaC9zZGsvaW5kZXgv UGF5bG9hZFRva2VuU3RyZWFtLmphdmEjYnVmZmVyDQo+Pj4+PiBbMl0NCj4+Pj4+ID0gKGJ5dGUp KHVpZDwNCj4+Pj4+DQo+Pj4+IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS94cmVm LzIwMjVfUlRNL3BsYXRmb3JtLnNlcnZpY2VzLnNlYXJjaC5qYXZhL2ZyYW1ld29yay9qYXZhL3Nk ay9zcmMvY29tL3NhcC9idXNpbmVzc29iamVjdHMvcGxhdGZvcm0vc2VhcmNoL3Nkay9pbmRleC9Q YXlsb2FkVG9rZW5TdHJlYW0uamF2YSN1aWQNCj4+Pj4+Pj4+IDE2KTsNCj4+Pj4+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyPA0KPj4+Pj4NCj4+Pj4gaHR0cDovLzEwLjIz OC4yMzYuMTAxOjgwODAvc291cmNlL3hyZWYvMjAyNV9SVE0vcGxhdGZvcm0uc2VydmljZXMuc2Vh cmNoLmphdmEvZnJhbWV3b3JrL2phdmEvc2RrL3NyYy9jb20vc2FwL2J1c2luZXNzb2JqZWN0cy9w bGF0Zm9ybS9zZWFyY2gvc2RrL2luZGV4L1BheWxvYWRUb2tlblN0cmVhbS5qYXZhI2J1ZmZlcg0K Pj4+Pj4gWzNdDQo+Pj4+PiA9IChieXRlKSh1aWQ8DQo+Pj4+Pg0KPj4+PiBodHRwOi8vMTAuMjM4 LjIzNi4xMDE6ODA4MC9zb3VyY2UveHJlZi8yMDI1X1JUTS9wbGF0Zm9ybS5zZXJ2aWNlcy5zZWFy Y2guamF2YS9mcmFtZXdvcmsvamF2YS9zZGsvc3JjL2NvbS9zYXAvYnVzaW5lc3NvYmplY3RzL3Bs YXRmb3JtL3NlYXJjaC9zZGsvaW5kZXgvUGF5bG9hZFRva2VuU3RyZWFtLmphdmEjdWlkDQo+Pj4+ Pj4+PiAyNCk7DQo+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuPA0K Pj4+Pj4NCj4+Pj4gaHR0cDovLzEwLjIzOC4yMzYuMTAxOjgwODAvc291cmNlL3hyZWYvMjAyNV9S VE0vcGxhdGZvcm0uc2VydmljZXMuc2VhcmNoLmphdmEvZnJhbWV3b3JrL2phdmEvc2RrL3NyYy9j b20vc2FwL2J1c2luZXNzb2JqZWN0cy9wbGF0Zm9ybS9zZWFyY2gvc2RrL2luZGV4L1BheWxvYWRU b2tlblN0cmVhbS5qYXZhI3Rva2VuDQo+Pj4+Pj4gLnNldFBheWxvYWQ8DQo+Pj4+IGh0dHA6Ly8x MC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS94cmVmLzIwMjVfUlRNL3BsYXRmb3JtLnNlcnZpY2Vz LnNlYXJjaC5qYXZhL2ZyYW1ld29yay9qYXZhL3Nkay9zcmMvY29tL3NhcC9idXNpbmVzc29iamVj dHMvcGxhdGZvcm0vc2VhcmNoL3Nkay9pbmRleC9QYXlsb2FkVG9rZW5TdHJlYW0uamF2YSNzZXRQ YXlsb2FkDQo+Pj4+PiAobmV3DQo+Pj4+PiBQYXlsb2FkPA0KPj4+PiBodHRwOi8vMTAuMjM4LjIz Ni4xMDE6ODA4MC9zb3VyY2Uvcz9kZWZzPVBheWxvYWQmcHJvamVjdD0yMDI1X1JUTQ0KPj4+Pj4+ IChidWZmZXI8DQo+Pj4+IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS94cmVmLzIw MjVfUlRNL3BsYXRmb3JtLnNlcnZpY2VzLnNlYXJjaC5qYXZhL2ZyYW1ld29yay9qYXZhL3Nkay9z cmMvY29tL3NhcC9idXNpbmVzc29iamVjdHMvcGxhdGZvcm0vc2VhcmNoL3Nkay9pbmRleC9QYXls b2FkVG9rZW5TdHJlYW0uamF2YSNidWZmZXINCj4+Pj4+PiApKTsNCj4+Pj4+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuVG9rZW4gPSB0cnVlOw0KPj4+Pj4gICAgICAgICAg ICAgICAgICB9DQo+Pj4+PiAgICAgICAgICAgICAgICAgIHB1YmxpYyBUb2tlbjwNCj4+Pj4+IGh0 dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS9zP2RlZnM9VG9rZW4mcHJvamVjdD0yMDI1 X1JUTT4gbmV4dDwNCj4+Pj4+IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS9zP3Jl ZnM9bmV4dCZwcm9qZWN0PTIwMjVfUlRNPigpIHRocm93cw0KPj4+Pj4gSU9FeGNlcHRpb248DQo+ Pj4+PiBodHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9zb3VyY2Uvcz9kZWZzPUlPRXhjZXB0aW9u JnByb2plY3Q9MjAyNV9SVE0+ew0KPj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpZiAocmV0dXJuVG9rZW48DQo+Pj4+Pg0KPj4+PiBodHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4 MC9zb3VyY2UveHJlZi8yMDI1X1JUTS9wbGF0Zm9ybS5zZXJ2aWNlcy5zZWFyY2guamF2YS9mcmFt ZXdvcmsvamF2YS9zZGsvc3JjL2NvbS9zYXAvYnVzaW5lc3NvYmplY3RzL3BsYXRmb3JtL3NlYXJj aC9zZGsvaW5kZXgvUGF5bG9hZFRva2VuU3RyZWFtLmphdmEjcmV0dXJuVG9rZW4NCj4+Pj4+ICl7 DQo+Pj4+PiByZXR1cm5Ub2tlbjwNCj4+Pj4+DQo+Pj4+IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4 MDgwL3NvdXJjZS94cmVmLzIwMjVfUlRNL3BsYXRmb3JtLnNlcnZpY2VzLnNlYXJjaC5qYXZhL2Zy YW1ld29yay9qYXZhL3Nkay9zcmMvY29tL3NhcC9idXNpbmVzc29iamVjdHMvcGxhdGZvcm0vc2Vh cmNoL3Nkay9pbmRleC9QYXlsb2FkVG9rZW5TdHJlYW0uamF2YSNyZXR1cm5Ub2tlbg0KPj4+Pj4g PSBmYWxzZTsgcmV0dXJuIHRva2VuPA0KPj4+Pj4NCj4+Pj4gaHR0cDovLzEwLjIzOC4yMzYuMTAx OjgwODAvc291cmNlL3hyZWYvMjAyNV9SVE0vcGxhdGZvcm0uc2VydmljZXMuc2VhcmNoLmphdmEv ZnJhbWV3b3JrL2phdmEvc2RrL3NyYy9jb20vc2FwL2J1c2luZXNzb2JqZWN0cy9wbGF0Zm9ybS9z ZWFyY2gvc2RrL2luZGV4L1BheWxvYWRUb2tlblN0cmVhbS5qYXZhI3Rva2VuDQo+Pj4+PiA7DQo+ Pj4+PiB9DQo+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeyByZXR1 cm4gbnVsbDwNCj4+Pj4+IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS9zP2RlZnM9 bnVsbCZwcm9qZWN0PTIwMjVfUlRNPjsgfQ0KPj4+Pj4NCj4+Pj4+ICAgICAgICAgICAgICAgICAg fQ0KPj4+Pj4gfQ0KPj4+Pj4NCj4+Pj4+DQo+Pj4+PiBXZSBoYXZlIG1hZGUgY29kZSBiYXNlZCBv biA4LjExLjIgYXMgbGlrZSBiZWxvdzoNCj4+Pj4+ID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQ0KPj4+Pj4gUGF5bG9hZFRva2VuU3RyZWFtIHRva2VuU3RyZWFtID0g bmV3IFBheWxvYWRUb2tlblN0cmVhbSgpOw0KPj4+Pj4gdG9rZW5TdHJlYW0uc2V0UGF5bG9hZChj dXJyZW50VmFsKTsNCj4+Pj4+IEZpZWxkVHlwZSBmaWVsZFR5cGUgPSBuZXcgRmllbGRUeXBlKCk7 DQo+Pj4+PiBsdWNGaWVsZCA9IG5ldyBGaWVsZChjb25maWcucGF5bG9hZFVpZCgpLm5hbWUsIHRv a2VuU3RyZWFtLCBmaWVsZFR5cGUpOw0KPj4+Pj4gZG9jLmFkZChsdWNGaWVsZCk7DQo+Pj4+PiAt LS0tDQo+Pj4+PiBwdWJsaWMgY2xhc3MgUGF5bG9hZFRva2VuU3RyZWFtPA0KPj4+Pj4NCj4+Pj4g aHR0cDovLzEwLjIzOC4yMzYuMTAxOjgwODAvc291cmNlL3M/cmVmcz1QYXlsb2FkVG9rZW5TdHJl YW0mcHJvamVjdD0yMDI1X1JUTQ0KPj4+Pj4gZXh0ZW5kcyBUb2tlblN0cmVhbTwNCj4+Pj4+IGh0 dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS9zP2RlZnM9VG9rZW5TdHJlYW0mcHJvamVj dD0yMDI1X1JUTT57DQo+Pj4+PiBwdWJsaWMgc3RhdGljIFN0cmluZzwNCj4+Pj4+IGh0dHA6Ly8x MC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS9zP2RlZnM9U3RyaW5nJnByb2plY3Q9MjAyNV9SVE0+ DQo+Pj4+PiBVSURfUEFZTE9BRF9TVEFSVF9WQUw8DQo+Pj4+Pg0KPj4+PiBodHRwOi8vMTAuMjM4 LjIzNi4xMDE6ODA4MC9zb3VyY2Uvcz9yZWZzPVVJRF9QQVlMT0FEX1NUQVJUX1ZBTCZwcm9qZWN0 PTIwMjVfUlRNDQo+Pj4+PiA9ICJfVUlEXyI7DQo+Pj4+PiBwcml2YXRlIGJ5dGVbXSBidWZmZXI8 DQo+Pj4+PiBodHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9zb3VyY2Uvcz9yZWZzPWJ1ZmZlciZw cm9qZWN0PTIwMjVfUlRNPiA9IG5ldw0KPj4+Pj4gYnl0ZVs0XTsNCj4+Pj4+ICAgICAgICAgICAg ICAgICAgcHJpdmF0ZSBib29sZWFuIHJldHVyblRva2VuPA0KPj4+Pj4gaHR0cDovLzEwLjIzOC4y MzYuMTAxOjgwODAvc291cmNlL3M/cmVmcz1yZXR1cm5Ub2tlbiZwcm9qZWN0PTIwMjVfUlRNPiA9 DQo+Pj4+PiBmYWxzZTsNCj4+Pj4+DQo+Pj4+PiAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lk IHNldFBheWxvYWQ8DQo+Pj4+PiBodHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9zb3VyY2Uvcz9y ZWZzPXNldFBheWxvYWQmcHJvamVjdD0yMDI1X1JUTQ0KPj4+Pj4gKGludA0KPj4+Pj4gdWlkPGh0 dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS9zP3JlZnM9dWlkJnByb2plY3Q9MjAyNV9S VE0+KXsNCj4+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyPA0KPj4+ Pj4NCj4+Pj4gaHR0cDovLzEwLjIzOC4yMzYuMTAxOjgwODAvc291cmNlL3hyZWYvMjAyNV9SVE0v cGxhdGZvcm0uc2VydmljZXMuc2VhcmNoLmphdmEvZnJhbWV3b3JrL2phdmEvc2RrL3NyYy9jb20v c2FwL2J1c2luZXNzb2JqZWN0cy9wbGF0Zm9ybS9zZWFyY2gvc2RrL2luZGV4L1BheWxvYWRUb2tl blN0cmVhbS5qYXZhI2J1ZmZlcg0KPj4+Pj4gWzBdDQo+Pj4+PiA9IChieXRlKXVpZDwNCj4+Pj4+ DQo+Pj4+IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS94cmVmLzIwMjVfUlRNL3Bs YXRmb3JtLnNlcnZpY2VzLnNlYXJjaC5qYXZhL2ZyYW1ld29yay9qYXZhL3Nkay9zcmMvY29tL3Nh cC9idXNpbmVzc29iamVjdHMvcGxhdGZvcm0vc2VhcmNoL3Nkay9pbmRleC9QYXlsb2FkVG9rZW5T dHJlYW0uamF2YSN1aWQNCj4+Pj4+PiA7DQo+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGJ1ZmZlcjwNCj4+Pj4+DQo+Pj4+IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3Nv dXJjZS94cmVmLzIwMjVfUlRNL3BsYXRmb3JtLnNlcnZpY2VzLnNlYXJjaC5qYXZhL2ZyYW1ld29y ay9qYXZhL3Nkay9zcmMvY29tL3NhcC9idXNpbmVzc29iamVjdHMvcGxhdGZvcm0vc2VhcmNoL3Nk ay9pbmRleC9QYXlsb2FkVG9rZW5TdHJlYW0uamF2YSNidWZmZXINCj4+Pj4+IFsxXQ0KPj4+Pj4g PSAoYnl0ZSkodWlkPA0KPj4+Pj4NCj4+Pj4gaHR0cDovLzEwLjIzOC4yMzYuMTAxOjgwODAvc291 cmNlL3hyZWYvMjAyNV9SVE0vcGxhdGZvcm0uc2VydmljZXMuc2VhcmNoLmphdmEvZnJhbWV3b3Jr L2phdmEvc2RrL3NyYy9jb20vc2FwL2J1c2luZXNzb2JqZWN0cy9wbGF0Zm9ybS9zZWFyY2gvc2Rr L2luZGV4L1BheWxvYWRUb2tlblN0cmVhbS5qYXZhI3VpZA0KPj4+Pj4+Pj4gOCk7DQo+Pj4+PiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcjwNCj4+Pj4+DQo+Pj4+IGh0dHA6 Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS94cmVmLzIwMjVfUlRNL3BsYXRmb3JtLnNlcnZp Y2VzLnNlYXJjaC5qYXZhL2ZyYW1ld29yay9qYXZhL3Nkay9zcmMvY29tL3NhcC9idXNpbmVzc29i amVjdHMvcGxhdGZvcm0vc2VhcmNoL3Nkay9pbmRleC9QYXlsb2FkVG9rZW5TdHJlYW0uamF2YSNi dWZmZXINCj4+Pj4+IFsyXQ0KPj4+Pj4gPSAoYnl0ZSkodWlkPA0KPj4+Pj4NCj4+Pj4gaHR0cDov LzEwLjIzOC4yMzYuMTAxOjgwODAvc291cmNlL3hyZWYvMjAyNV9SVE0vcGxhdGZvcm0uc2Vydmlj ZXMuc2VhcmNoLmphdmEvZnJhbWV3b3JrL2phdmEvc2RrL3NyYy9jb20vc2FwL2J1c2luZXNzb2Jq ZWN0cy9wbGF0Zm9ybS9zZWFyY2gvc2RrL2luZGV4L1BheWxvYWRUb2tlblN0cmVhbS5qYXZhI3Vp ZA0KPj4+Pj4+Pj4gMTYpOw0KPj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi dWZmZXI8DQo+Pj4+Pg0KPj4+PiBodHRwOi8vMTAuMjM4LjIzNi4xMDE6ODA4MC9zb3VyY2UveHJl Zi8yMDI1X1JUTS9wbGF0Zm9ybS5zZXJ2aWNlcy5zZWFyY2guamF2YS9mcmFtZXdvcmsvamF2YS9z ZGsvc3JjL2NvbS9zYXAvYnVzaW5lc3NvYmplY3RzL3BsYXRmb3JtL3NlYXJjaC9zZGsvaW5kZXgv UGF5bG9hZFRva2VuU3RyZWFtLmphdmEjYnVmZmVyDQo+Pj4+PiBbM10NCj4+Pj4+ID0gKGJ5dGUp KHVpZDwNCj4+Pj4+DQo+Pj4+IGh0dHA6Ly8xMC4yMzguMjM2LjEwMTo4MDgwL3NvdXJjZS94cmVm LzIwMjVfUlRNL3BsYXRmb3JtLnNlcnZpY2VzLnNlYXJjaC5qYXZhL2ZyYW1ld29yay9qYXZhL3Nk ay9zcmMvY29tL3NhcC9idXNpbmVzc29iamVjdHMvcGxhdGZvcm0vc2VhcmNoL3Nkay9pbmRleC9Q YXlsb2FkVG9rZW5TdHJlYW0uamF2YSN1aWQNCj4+Pj4+Pj4+IDI0KTsNCj4+Pj4+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUGF5bG9hZEF0dHJpYnV0ZUltcGwgYXR0cmlidXRlSW1w bCA9IG5ldw0KPj4+Pj4gUGF5bG9hZEF0dHJpYnV0ZUltcGwobmV3IEJ5dGVzUmVmKGJ1ZmZlcikp Ow0KPj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEF0dHJpYnV0ZUltcGwo YXR0cmlidXRlSW1wbCk7DQo+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl dHVyblRva2VuID0gdHJ1ZTsNCj4+Pj4+ICAgICAgICAgICAgICAgICAgfQ0KPj4+Pj4gICAgICAg ICAgICAgICAgICBwdWJsaWMgYm9vbGVhbiBpbmNyZW1lbnRUb2tlbigpIHRocm93cyBJT0V4Y2Vw dGlvbiB7DQo+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXR1cm5U b2tlbil7DQo+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuVG9rZW4gPSBmYWxzZTsNCj4+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCj4+Pj4+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfQ0KPj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl bHNlIHsNCj4+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICByZXR1cm4gZmFsc2U7DQo+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0N Cj4+Pj4+ICAgICAgICAgICAgICAgICAgfQ0KPj4+Pj4gfQ0KPj4+Pj4NCj4+Pj4+IFJlZ2FyZHMN Cj4+Pj4+IFJhamliDQo+Pj4+Pg0KPj4+Pj4NCj4+Pj4gLS0NCj4+Pj4gU2luY2VyZWx5IHlvdXJz DQo+Pj4+IE1pa2hhaWwgS2hsdWRuZXYNCj4+Pj4NCj4+IC0tDQo+PiBVd2UgU2NoaW5kbGVyDQo+ PiBBY2h0ZXJkaWVrIDE5LCBELTI4MzU3IEJyZW1lbg0KPj4gaHR0cHM6Ly93d3cudGhldGFwaGku ZGUvDQo+PiBlTWFpbDogdXdlQHRoZXRhcGhpLmRlDQo+Pg0KPj4NCj4+IC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K Pj4gVG8gdW5zdWJzY3JpYmUsIGUtbWFpbDogamF2YS11c2VyLXVuc3Vic2NyaWJlQGx1Y2VuZS5h cGFjaGUub3JnDQo+PiBGb3IgYWRkaXRpb25hbCBjb21tYW5kcywgZS1tYWlsOiBqYXZhLXVzZXIt aGVscEBsdWNlbmUuYXBhY2hlLm9yZw0KPj4NCj4+DQo+PiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4+IFRvIHVu c3Vic2NyaWJlLCBlLW1haWw6IGphdmEtdXNlci11bnN1YnNjcmliZUBsdWNlbmUuYXBhY2hlLm9y Zw0KPj4gRm9yIGFkZGl0aW9uYWwgY29tbWFuZHMsIGUtbWFpbDogamF2YS11c2VyLWhlbHBAbHVj ZW5lLmFwYWNoZS5vcmcNCj4+DQo+IC0tDQo+IFV3ZSBTY2hpbmRsZXINCj4gQWNodGVyZGllayAx OSwgRC0yODM1NyBCcmVtZW4NCj4gaHR0cHM6Ly93d3cudGhldGFwaGkuZGUvDQo+IGVNYWlsOiB1 d2VAdGhldGFwaGkuZGUNCj4NCj4NCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+IFRvIHVuc3Vic2NyaWJlLCBl LW1haWw6IGphdmEtdXNlci11bnN1YnNjcmliZUBsdWNlbmUuYXBhY2hlLm9yZw0KPiBGb3IgYWRk aXRpb25hbCBjb21tYW5kcywgZS1tYWlsOiBqYXZhLXVzZXItaGVscEBsdWNlbmUuYXBhY2hlLm9y Zw0KPg0KPg0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gVG8gdW5zdWJzY3JpYmUsIGUtbWFpbDogamF2YS11 c2VyLXVuc3Vic2NyaWJlQGx1Y2VuZS5hcGFjaGUub3JnDQo+IEZvciBhZGRpdGlvbmFsIGNvbW1h bmRzLCBlLW1haWw6IGphdmEtdXNlci1oZWxwQGx1Y2VuZS5hcGFjaGUub3JnDQo+DQotLQ0KVXdl IFNjaGluZGxlcg0KQWNodGVyZGllayAxOSwgRC0yODM1NyBCcmVtZW4NCmh0dHBzOi8vd3d3LnRo ZXRhcGhpLmRlLw0KZU1haWw6IHV3ZUB0aGV0YXBoaS5kZQ0KDQoNCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KVG8g dW5zdWJzY3JpYmUsIGUtbWFpbDogamF2YS11c2VyLXVuc3Vic2NyaWJlQGx1Y2VuZS5hcGFjaGUu b3JnDQpGb3IgYWRkaXRpb25hbCBjb21tYW5kcywgZS1tYWlsOiBqYXZhLXVzZXItaGVscEBsdWNl bmUuYXBhY2hlLm9yZw0KDQo= DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NClRvIHVuc3Vic2NyaWJlLCBlLW1haWw6IGphdmEtdXNlci11 bnN1YnNjcmliZUBsdWNlbmUuYXBhY2hlLm9yZw0KRm9yIGFkZGl0aW9uYWwgY29tbWFuZHMs IGUtbWFpbDogamF2YS11c2VyLWhlbHBAbHVjZW5lLmFwYWNoZS5vcmcNCg0K