Re: Re: Problem with grant and revoke user roles in turbine-4
"Georg Kallidis" <[email protected]> Fri, 17 Nov 2017 23:17:38 +0100
| Newsgroups | gmane.comp.jakarta.turbine.user |
|---|---|
| Message-ID | <OFE0C2C427.A86EED25-ONC12581DB.0078293A-C12581DB.007A76CC@cedis.fu-berlin.de> |
SGkgSmVmZiwgDQoNCmFzIGZhciBhcyBJIGNhbiBzZWUsIEkgYXNzdW1lIHRoZSBpbXBsZW1lbnRh dGlvbiBjbGFzcyBtaWdodCBiZSBUb3JxdWVUdXJiaW5lTW9kZWxNYW5hZ2VySW1wbD8gQ291bGQg eW91IGNoZWNrIHRoaXM/IFlvdXIgc2Vjb25kIGF0dGVtcHQgbWF5IGJlIGluZGVlZCBjbG9zZSwg YnV0IHRoZSByZWFzb24gaXMgbWlzc2luZy4gQ291bGQgeW91IHByb3ZpZGUgdGhlIHN0YWNrL2Nh dXNlIG9mIHRoZSBleGNlcHRpb24/DQoNClByb2JhYmx5LCBpZiB0aGlzIGlzIHRoZSBjYXNlLCBh dCB0aGlzIHBvaW50IG9mIHRoZSBjb2RlIG9mIHRoZSBtb2RlbCBtYW5hZ2VyIHRoZSByb2xlLCBn cm91cCBhbmQgdXNlciBhcmUgYWxyZWFkeSBjaGVja2VkLCBidXQgd2hhdCBtaWdodCBoYXZlIGNh dXNlZCB0aGUgZXhjZXB0aW9uIGlzIGEgZmFpbGluZyBjYXN0IHRvIA0KDQotIG9yZy5hcGFjaGUu ZnVsY3J1bS5zZWN1cml0eS5tb2RlbC50dXJiaW5lLmVudGl0eS5UdXJiaW5lVXNlciBvZiB0aGUg dXNlciBvYmplY3Qgb3IgDQotIG9yZy5hcGFjaGUuZnVsY3J1bS5zZWN1cml0eS50b3JxdWUuc2Vj dXJpdHkuVG9ycXVlQWJzdHJhY3RTZWN1cml0eUVudGl0eSBvZiBhbnkgb2YgdGhlIG9iamVjdHMs IHdoaWNoIG1heSBiZSB0aGUgcmVhc29uLCBpZiBpbiB5b3VyIHNjaGVtYSB0aGUgYmFzZWNsYXNz IGF0dHJpYnV0ZSBpcyBub3Qgc2V0IHRvIG9yZy5hcGFjaGUuZnVsY3J1bS5zZWN1cml0eS50b3Jx dWUudHVyYmluZS5EZWZhdWx0QWJzdHJhY3RUdXJiaW5lWFhYIChYWFggPSBVc2VyfFJvbGV8R3Jv dXApIGNsYXNzIChvciBhbm90aGVyIGNsYXNzIGltcGxlbWVudGluZyB0aGUgcmVxdWlyZWQgaW50 ZXJmYWNlLCBjZnQuIHRoZSBleGFtcGxlIHRvcnF1ZS1zZWN1cml0eS1zY2hlbS54bWwgaW4gdGhl IFR1cmJpbmUgd2ViYXBwIGFyY2hldHlwZSkuLi4NCg0KQW5kIHRoYW5rcyBmb3IgeW91ciBlZmZv cnRzIHRvIG1pZ3JhdGUgLyB1c2UgdGhlIGZsdXggbGlicmFyeSENCg0KQmVzdCByZWdhcmRzLCBH ZW9yZw0KDQotLS0tLUplZmZlcnkgUGFpbnRlciA8amVmZkBqaXZlY2FzdC5jb20+IHNjaHJpZWI6 IC0tLS0tDQpBbjogdXNlckB0dXJiaW5lLmFwYWNoZS5vcmcNClZvbjogSmVmZmVyeSBQYWludGVy IDxqZWZmQGppdmVjYXN0LmNvbT4NCkRhdHVtOiAxNi4xMS4yMDE3IDIzOjI5DQpCZXRyZWZmOiBS ZTogUHJvYmxlbSB3aXRoIGdyYW50IGFuZCByZXZva2UgdXNlciByb2xlcyBpbiB0dXJiaW5lLTQN Cg0KSSBsb29rZWQgYSBsaXR0bGUgbW9yZSBhdCB0aGUgdGVzdCBjYXNlcywgYW5kIGdvdCBteSBj b2RlIHNldHVwIGVub3VnaCANCnRvIHRyeSBhbmQgY2FsbCB0aGUgZnVsY3J1bSBzZWN1cml0eSBz ZXJ2aWNlIGRpcmVjdGx5Li4uDQoNCqCgoKAgoKCgIKCgoCCgoKAgoKCgIKCgoCCgoKAgoKCgIKCg oCAvLyB0cnkgdXNpbmcgZnVsY3J1bSBzZXJ2aWNlDQooKFR1cmJpbmVNb2RlbE1hbmFnZXIpZnVs Y3J1bVNlY3VyaXR5U2VydmljZS5nZXRNb2RlbE1hbmFnZXIoKSkuZ3JhbnQoZnVsY3J1bVVzZXIs IA0KZ3JvdXAsIHJvbGUpOw0KDQpUaGUgZXJyb3IgbG9ncyBhcmUgc3RpbGwgcmVwb3J0aW5nIHBy b2JsZW1zOg0KDQpJIHZlcmlmaWVkIHRoYXQgdGhpcyBsb2FkZWQgdGhlIHVzZXIgImRlYW4iIGZy b20gdGhlIGRhdGFiYXNlIGFzIGEgDQpmdWxjcnVtVXNlciBhbmQgaXQgY2FtZSB0aHJvdWdoIHdp dGggYSBjbGFzcyB0eXBlIG9mIA0KY29tLmppdmVjYXN0LnNtYXJ0b3JkZXIub20uVHVyYmluZVVz ZXIgcmF0aGVyIHRoYW4gdGhlIHdyYXBwZXIgdGhhdCB0aGUgDQp0dXJiaW5lIHNlY3VyaXR5IHNl cnZpY2UgcHJvdmlkZWQuIGFuZCBub3cgSSBnZXQgYSBEYXRhQmFja2VuZEV4Y2VwdGlvbiANCmVy cm9yIG9uIHRoZSBncmFudCBjYWxsLi4uDQoNCjIwMTctMTEtMTYgMTc6MjQ6NDMsNzIyIFtodHRw LW5pby04MDgwLWV4ZWMtM10gREVCVUcgYXZhbG9uIC0gTG9jYXRlZCANCnRoZSBzZXJ2aWNlICdv cmcuYXBhY2hlLmZ1bGNydW0uc2VjdXJpdHkuVXNlck1hbmFnZXInIGluIHRoZSBsb2NhbCBjb250 YWluZXINCjIwMTctMTEtMTYgMTc6MjQ6NDcsODk1IFtodHRwLW5pby04MDgwLWV4ZWMtM10gREVC VUcgDQpjb20uaml2ZWNhc3Quc21hcnRvcmRlci5tb2R1bGVzLmFjdGlvbnMuYWRtaW4uVXNlckFj dGlvbiAtIGZ1bGNydW1Vc2VyOiANCmNvbS5qaXZlY2FzdC5zbWFydG9yZGVyLm9tLlR1cmJpbmVV c2VyDQoyMDE3LTExLTE2IDE3OjI0OjU0LDE0NyBbaHR0cC1uaW8tODA4MC1leGVjLTNdIERFQlVH IGF2YWxvbi5wZWVyTWFuYWdlciANCi2gIGdldCBjYWNoZWQgDQpQZWVySW5zdGFuY2UoKTpjb20u aml2ZWNhc3Quc21hcnRvcmRlci5vbS5UdXJiaW5lR3JvdXBQZWVySW1wbEAzY2NjMzJjDQoyMDE3 LTExLTE2IDE3OjI0OjU1LDc1MCBbaHR0cC1uaW8tODA4MC1leGVjLTNdIERFQlVHIGF2YWxvbi5w ZWVyTWFuYWdlciANCi2gIGdldCBjYWNoZWQgDQpQZWVySW5zdGFuY2UoKTpjb20uaml2ZWNhc3Qu c21hcnRvcmRlci5vbS5UdXJiaW5lUm9sZVBlZXJJbXBsQDFmN2Y4MDcNCjIwMTctMTEtMTYgMTc6 MjQ6NTYsMDMxIFtodHRwLW5pby04MDgwLWV4ZWMtM10gREVCVUcgYXZhbG9uLnBlZXJNYW5hZ2Vy IA0KLaAgZ2V0IGNhY2hlZCANClBlZXJJbnN0YW5jZSgpOmNvbS5qaXZlY2FzdC5zbWFydG9yZGVy Lm9tLlR1cmJpbmVSb2xlUGVlckltcGxAMWY3ZjgwNw0KMjAxNy0xMS0xNiAxNzoyNDo1NiwzMTUg W2h0dHAtbmlvLTgwODAtZXhlYy0zXSBERUJVRyBhdmFsb24ucGVlck1hbmFnZXIgDQotoCBnZXQg Y2FjaGVkIA0KUGVlckluc3RhbmNlKCk6Y29tLmppdmVjYXN0LnNtYXJ0b3JkZXIub20uVHVyYmlu ZVJvbGVQZWVySW1wbEAxZjdmODA3DQoyMDE3LTExLTE2IDE3OjI0OjU2LDU5OSBbaHR0cC1uaW8t ODA4MC1leGVjLTNdIERFQlVHIGF2YWxvbi5wZWVyTWFuYWdlciANCi2gIGdldCBjYWNoZWQgDQpQ ZWVySW5zdGFuY2UoKTpjb20uaml2ZWNhc3Quc21hcnRvcmRlci5vbS5UdXJiaW5lR3JvdXBQZWVy SW1wbEAzY2NjMzJjDQoyMDE3LTExLTE2IDE3OjI1OjAzLDEyOSBbaHR0cC1uaW8tODA4MC1leGVj LTNdIERFQlVHIGF2YWxvbi5wZWVyTWFuYWdlciANCi2gIGdldCBjYWNoZWQgDQpQZWVySW5zdGFu Y2UoKTpjb20uaml2ZWNhc3Quc21hcnRvcmRlci5vbS5UdXJiaW5lR3JvdXBQZWVySW1wbEAzY2Nj MzJjDQoyMDE3LTExLTE2IDE3OjI1OjAzLDE0MyBbaHR0cC1uaW8tODA4MC1leGVjLTNdIERFQlVH IGF2YWxvbi5wZWVyTWFuYWdlciANCi2gIGdldCBjYWNoZWQgDQpQZWVySW5zdGFuY2UoKTpjb20u aml2ZWNhc3Quc21hcnRvcmRlci5vbS5UdXJiaW5lUm9sZVBlZXJJbXBsQDFmN2Y4MDcNCjIwMTct MTEtMTYgMTc6MjU6MDksMDk3IFtodHRwLW5pby04MDgwLWV4ZWMtM10gREVCVUcgDQpjb20uaml2 ZWNhc3Quc21hcnRvcmRlci5tb2R1bGVzLmFjdGlvbnMuYWRtaW4uVXNlckFjdGlvbiAtIEFkZGlu ZyBuZXcgDQpyb2xlIHRvIHVzZXI6IGludmVudG9yeQ0KMjAxNy0xMS0xNiAxNzoyNToxMCw1MzUg W2h0dHAtbmlvLTgwODAtZXhlYy0zXSBERUJVRyBhdmFsb24gLSBMb2NhdGVkIA0KdGhlIHNlcnZp Y2UgJ29yZy5hcGFjaGUuZnVsY3J1bS5zZWN1cml0eS5Nb2RlbE1hbmFnZXInIGluIHRoZSBsb2Nh bCANCmNvbnRhaW5lcg0KMjAxNy0xMS0xNiAxNzoyNToxMCw1NDUgW2h0dHAtbmlvLTgwODAtZXhl Yy0zXSBERUJVRyBhdmFsb24gLSBMb2NhdGVkIA0KdGhlIHNlcnZpY2UgJ29yZy5hcGFjaGUuZnVs Y3J1bS5zZWN1cml0eS5Sb2xlTWFuYWdlcicgaW4gdGhlIGxvY2FsIGNvbnRhaW5lcg0KMjAxNy0x MS0xNiAxNzoyNToxMCw1NDcgW2h0dHAtbmlvLTgwODAtZXhlYy0zXSBERUJVRyBhdmFsb24ucGVl ck1hbmFnZXIgDQotoCBnZXQgY2FjaGVkIA0KUGVlckluc3RhbmNlKCk6Y29tLmppdmVjYXN0LnNt YXJ0b3JkZXIub20uVHVyYmluZVJvbGVQZWVySW1wbEAxZjdmODA3DQoyMDE3LTExLTE2IDE3OjI1 OjEwLDU2MCBbaHR0cC1uaW8tODA4MC1leGVjLTNdIERFQlVHIGF2YWxvbiAtIExvY2F0ZWQgDQp0 aGUgc2VydmljZSAnb3JnLmFwYWNoZS5mdWxjcnVtLnNlY3VyaXR5LlVzZXJNYW5hZ2VyJyBpbiB0 aGUgbG9jYWwgY29udGFpbmVyDQoyMDE3LTExLTE2IDE3OjI1OjEwLDU2MSBbaHR0cC1uaW8tODA4 MC1leGVjLTNdIERFQlVHIGF2YWxvbi5wZWVyTWFuYWdlciANCi2gIGdldCBjYWNoZWQgDQpQZWVy SW5zdGFuY2UoKTpjb20uaml2ZWNhc3Quc21hcnRvcmRlci5vbS5UdXJiaW5lVXNlclBlZXJJbXBs QDg2Y2VkYjQNCjIwMTctMTEtMTYgMTc6MjU6MTAsNTk4IFtodHRwLW5pby04MDgwLWV4ZWMtM10g REVCVUcgYXZhbG9uIC0gTG9jYXRlZCANCnRoZSBzZXJ2aWNlICdvcmcuYXBhY2hlLmZ1bGNydW0u c2VjdXJpdHkuR3JvdXBNYW5hZ2VyJyBpbiB0aGUgbG9jYWwgDQpjb250YWluZXINCjIwMTctMTEt MTYgMTc6MjU6MTAsNTk5IFtodHRwLW5pby04MDgwLWV4ZWMtM10gREVCVUcgYXZhbG9uLnBlZXJN YW5hZ2VyIA0KLaAgZ2V0IGNhY2hlZCANClBlZXJJbnN0YW5jZSgpOmNvbS5qaXZlY2FzdC5zbWFy dG9yZGVyLm9tLlR1cmJpbmVHcm91cFBlZXJJbXBsQDNjY2MzMmMNCjIwMTctMTEtMTYgMTc6MjU6 MjUsMjAyIFtodHRwLW5pby04MDgwLWV4ZWMtM10gRVJST1IgDQpjb20uaml2ZWNhc3Quc21hcnRv cmRlci5tb2R1bGVzLmFjdGlvbnMuYWRtaW4uVXNlckFjdGlvbiAtIEVycm9yIHNldHRpbmcgDQpy b2xlczogb3JnLmFwYWNoZS5mdWxjcnVtLnNlY3VyaXR5LnV0aWwuRGF0YUJhY2tlbmRFeGNlcHRp b246IA0KZ3JhbnQoJ2RlYW4nLCAnZ2xvYmFsJywgJ2ludmVudG9yeScpIGZhaWxlZA0KDQoNCmFu eSBpZGVhcz8NCg0KLS0NCkplZmYNCg0KDQoNCk9uIDExLzE2LzIwMTcgMDU6MDAgUE0sIEplZmZl cnkgUGFpbnRlciB3cm90ZToNCj4NCj4gSGkgR2VvcmcsDQo+DQo+IEkgYW0gbWFraW5nIHNvbWUg Z29vZCBwcm9ncmVzcy6gIEkgZG9uJ3Qga25vdyBpZiB5b3UgcmVtZW1iZXIgdGhlIG9sZCANCj4g Zmx1eCBsaWJyYXJ5IGZvciB1c2VyIG1hbmFnZW1lbnQsIGJ1dCBJIGhhdmUgc3RhcnRlZCB0byBy ZS13cml0ZSB0aGF0IA0KPiB0byB3b3JrIHdpdGggVHVyYmluZSA0LjAuoCBJIGFtIGhhdmluZyBz b21lIHRyb3VibGVzIGhvd2V2ZXIgd2l0aCB0aGUgDQo+IGdyYW50L3Jldm9rZSByb2xlcyB3aXRo IGNhc3RpbmcgdGhlIHVzZXIgb2JqZWN0IGluY29ycmVjdGx5IGZyb20gdGhlIA0KPiBUdXJiaW5l V3JhcHBlciBjbGFzcy6gIENhbiB5b3UgaGVscCBtZSB3aXRoIHRoZSBpc3N1ZSBJIGFtIGhhdmlu ZyANCj4gYmVsb3c/oCBJIGxvb2tlZCBhdCB0aGUgdW5pdCB0ZXN0cyBpbiB0aGUgVHVyYmluZSBz b3VyY2UgZm9yIA0KPiBpbnNwaXJhdGlvbiBvbiBtaWdyYXRpbmcsIGJ1dCBpdCBpc24ndCByZWNv Z25pemluZyB0aGUgdXNlciBjbGFzcyANCj4gcHJvcGVybHkuoCBJIGV2ZW4gdHJpZWQgdG8gbWFu dWFsbHkgZG93bmNhc3QgKHNlZSBteSBjb2RlIGJlbG93KSwgYW5kIA0KPiBzdGlsbCBjYW5ub3Qg bWFrZSBpdCB3b3JrLg0KPg0KPiBJZiBJIGNhbiBnZXQgdGhpcyBhbGwgd29ya2luZywgSSB0aG91 Z2h0IGl0IG1pZ2h0IGJlIHVzZWZ1bCB0byBwdWJsaXNoIA0KPiBhIG5ldyBmbHV4IGxpYnJhcnkg Y29tcGF0aWJsZSB3aXRoIFR1cmJpbmUtNC4wIGZvciB1c2VyIG1hbmFnZW1lbnQgYXMgDQo+IGEg Z3VpZGUgdG8gb3RoZXJzIG9uIGhvdyB0byBnZXQgc3RhcnRlZC4NCj4NCj4NCj4gTXkgbG9ncyBz aG93IHRoZSBmb2xsb3dpbmcgZXJyb3Igd2hlbiBjYWxsaW5nIHRoZSBncmFudC9yZXZva2UgbWV0 aG9kIA0KPiBvbiB0aGUgc2VjdXJpdHkgc2VydmljZSB3aGVuIHRyeWluZyB0byBhZGQgdGhlICJp bnZlbnRvcnkiIHJvbGUgdG8gYSANCj4gdXNlcjoNCj4NCj4gMjAxNy0xMS0xNiAxNjo0OToyNiw5 MTggW2h0dHAtbmlvLTgwODAtZXhlYy0xM10gREVCVUcgDQo+IGNvbS5qaXZlY2FzdC5zbWFydG9y ZGVyLm1vZHVsZXMuYWN0aW9ucy5hZG1pbi5Vc2VyQWN0aW9uIC0gQWRkaW5nIG5ldyANCj4gcm9s ZSB0byB1c2VyOiBpbnZlbnRvcnkNCj4NCj4gMjAxNy0xMS0xNiAxNjo0OToyNiw5MTggW2h0dHAt bmlvLTgwODAtZXhlYy0xM10gREVCVUcgYXZhbG9uIC0gTG9jYXRlZCANCj4gdGhlIHNlcnZpY2Ug J29yZy5hcGFjaGUuZnVsY3J1bS5zZWN1cml0eS5Sb2xlTWFuYWdlcicgaW4gdGhlIGxvY2FsIA0K PiBjb250YWluZXINCj4gMjAxNy0xMS0xNiAxNjo0OToyNiw5MTggW2h0dHAtbmlvLTgwODAtZXhl Yy0xM10gREVCVUcgDQo+IGF2YWxvbi5wZWVyTWFuYWdlciAtoCBnZXQgY2FjaGVkIA0KPiBQZWVy SW5zdGFuY2UoKTpjb20uaml2ZWNhc3Quc21hcnRvcmRlci5vbS5UdXJiaW5lUm9sZVBlZXJJbXBs QDcxODk3YTJiDQo+DQo+IDIwMTctMTEtMTYgMTY6NDk6MjYsOTE4IFtodHRwLW5pby04MDgwLWV4 ZWMtMTNdIERFQlVHIGF2YWxvbiAtIExvY2F0ZWQgDQo+IHRoZSBzZXJ2aWNlICdvcmcuYXBhY2hl LmZ1bGNydW0uc2VjdXJpdHkuVXNlck1hbmFnZXInIGluIHRoZSBsb2NhbCANCj4gY29udGFpbmVy DQo+IDIwMTctMTEtMTYgMTY6NDk6MjYsOTE4IFtodHRwLW5pby04MDgwLWV4ZWMtMTNdIERFQlVH IA0KPiBhdmFsb24ucGVlck1hbmFnZXIgLaAgZ2V0IGNhY2hlZCANCj4gUGVlckluc3RhbmNlKCk6 Y29tLmppdmVjYXN0LnNtYXJ0b3JkZXIub20uVHVyYmluZVVzZXJQZWVySW1wbEA0NDhlNjYyNA0K Pg0KPiAyMDE3LTExLTE2IDE2OjQ5OjI2LDkxOCBbaHR0cC1uaW8tODA4MC1leGVjLTEzXSBERUJV RyBhdmFsb24gLSBMb2NhdGVkIA0KPiB0aGUgc2VydmljZSAnb3JnLmFwYWNoZS5mdWxjcnVtLnNl Y3VyaXR5Lkdyb3VwTWFuYWdlcicgaW4gdGhlIGxvY2FsIA0KPiBjb250YWluZXINCj4gMjAxNy0x MS0xNiAxNjo0OToyNiw5MTggW2h0dHAtbmlvLTgwODAtZXhlYy0xM10gREVCVUcgDQo+IGF2YWxv bi5wZWVyTWFuYWdlciAtoCBnZXQgY2FjaGVkIA0KPiBQZWVySW5zdGFuY2UoKTpjb20uaml2ZWNh c3Quc21hcnRvcmRlci5vbS5UdXJiaW5lR3JvdXBQZWVySW1wbEAxNTFkNDcwZA0KPg0KPiAyMDE3 LTExLTE2IDE2OjQ5OjI2LDkxOSBbaHR0cC1uaW8tODA4MC1leGVjLTEzXSBFUlJPUiANCj4gY29t LmppdmVjYXN0LnNtYXJ0b3JkZXIubW9kdWxlcy5hY3Rpb25zLmFkbWluLlVzZXJBY3Rpb24gLSBF cnJvciANCj4gc2V0dGluZyByb2xlczogamF2YS5sYW5nLkNsYXNzQ2FzdEV4Y2VwdGlvbjogDQo+ IGNvbS5qaXZlY2FzdC5zbWFydG9yZGVyLndyYXBwZXIuVHVyYmluZVVzZXJXcmFwcGVyIGNhbm5v dCBiZSBjYXN0IHRvIA0KPiBvcmcuYXBhY2hlLmZ1bGNydW0uc2VjdXJpdHkudG9ycXVlLnNlY3Vy aXR5LlRvcnF1ZUFic3RyYWN0U2VjdXJpdHlFbnRpdHkNCj4NCj4NCj4gSGVyZSBpcyB0aGUgcmVs ZXZhbnQgY29kZSBpbiBteSBkb1JvbGVzKCkgbWV0aG9kIHRvIG1ha2UgdGhlIG5ldyANCj4gYXNz aWdubWVudC4uLiBpdCBpcyBtb2RlbGVkIGFmdGVyIHRoZSBvbGQgZmx1eCBtZXRob2RzOg0KPg0K PiBJIGhhdmUgdGhlIGZvbGxvd2luZyBpbXBvcnQ6DQo+DQo+IGltcG9ydCBvcmcuYXBhY2hlLnR1 cmJpbmUuc2VydmljZXMuc2VjdXJpdHkuU2VjdXJpdHlTZXJ2aWNlOw0KPg0KPiBhbmQgaW4gdGhl IGJvZHkgb2YgdGhlIGNsYXNzLCBJIHVzZSB0aGUgaW5qZWN0aW9uIHRvIGdldCB0aGUgaW5zdGFu Y2UgDQo+IG1hcHBlZA0KPg0KPiCgoKAgLyoqIEluamVjdGVkIHNlcnZpY2UgaW5zdGFuY2UgKi8N Cj4goKCgIEBUdXJiaW5lU2VydmljZQ0KPiCgoKAgcHJpdmF0ZSBTZWN1cml0eVNlcnZpY2Ugc2Vj dXJpdHk7DQo+DQo+IC4uLi4gdGhlbiBteSBhY3Rpb24gY2xhc3MgbWV0aG9kIGlzIGNhbGxlZCBk b1JvbGVzKCkgd2hpY2ggZG9lcyB0aGUgDQo+IHJvbGUgYXNzaWdubWVudCBhbmQgZmFpbHMNCj4N Cj4goKCgIC8qKg0KPiCgoKAgoCogVXBkYXRlIHRoZSByb2xlcyB0aGF0IGFyZSB0byBhc3NpZ25l ZCB0byBhIHVzZXIgZm9yIGEgcHJvamVjdC4NCj4goKCgIKAqLw0KPiCgoKAgcHVibGljIHZvaWQg ZG9Sb2xlcyhQaXBlbGluZURhdGEgcGlwZWxpbmVEYXRhLCBDb250ZXh0IGNvbnRleHQpIA0KPiB0 aHJvd3MgRXhjZXB0aW9uIHsNCj4NCj4goKCgIKCgoCB0cnkgew0KPg0KPiCgIKCgIKCgIKCgoCBS dW5EYXRhIGRhdGEgPSBnZXRSdW5EYXRhKHBpcGVsaW5lRGF0YSk7DQo+DQo+IKCgoCCgoKAgoKCg IC8vIEdldCB0aGUgVHVyYmluZSBBQ0wgaW1wbGVtZW50YXRpb24gZm9yIG91ciBjdXJyZW50IA0K PiB1c2VyLCBvbmx5IGFkbWluIGNhbiB1cGRhdGUgdXNlciByb2xlcw0KPiCgoKAgoKCgIKCgoCBU dXJiaW5lQWNjZXNzQ29udHJvbExpc3QgYWRtaW5BY2wgPSANCj4gZ2V0UnVuRGF0YShkYXRhKS5n ZXRBQ0woKTsNCj4goKCgIKCgoCCgoKAgaWYgKGFkbWluQWNsLmhhc1JvbGUoImFkbWluaXN0cmF0 b3IiKSkgew0KPg0KPiCgoKAgoKCgIKCgoCCgoKAgLy8gVXNlcm5hbWUgb2YgdGhlIGFjY291bnQg d2UgYXJlIHVwZGF0aW5nDQo+IKCgoCCgoKAgoKCgIKCgoCBTdHJpbmcgdXNlcm5hbWUgPSANCj4g ZGF0YS5nZXRQYXJhbWV0ZXJzKCkuZ2V0U3RyaW5nKCJ1c2VybmFtZSIpOw0KPiCgoKAgoKCgIKCg oCCgoKAgaWYgKHNlY3VyaXR5LmFjY291bnRFeGlzdHModXNlcm5hbWUpKSB7DQo+DQo+IKCgoCCg oKAgoKCgIKCgoCCgoKAgLy8gVHJ5IHRvIGRvd25jYXN0IGZvciB0aGUgc2VjdXJpdHkgZ3JhbnQg ZnVuY3Rpb24NCj4goKCgIKCgoCCgoKAgoKCgIKCgoCBvcmcuYXBhY2hlLnR1cmJpbmUub20uc2Vj dXJpdHkuVXNlciB1c2VyID0gDQo+IChvcmcuYXBhY2hlLnR1cmJpbmUub20uc2VjdXJpdHkuVXNl cikgc2VjdXJpdHkuZ2V0VXNlcih1c2VybmFtZSk7DQo+DQo+IKCgoCCgoKAgoKCgIKCgoCCgoKAg Ly8gR2V0IHRoZSBUdXJiaW5lIEFDTCBpbXBsZW1lbnRhdGlvbg0KPiCgoKAgoKCgIKCgoCCgoKAg oKCgIFR1cmJpbmVBY2Nlc3NDb250cm9sTGlzdCBhY2wgPSBzZWN1cml0eS5nZXRBQ0wodXNlcik7 DQo+DQo+IKCgoCCgoKAgoKCgIKCgoCCgoKAgLyoNCj4goKCgIKCgoCCgoKAgoKCgIKCgoCCgKiBH cmFiIGFsbCB0aGUgR3JvdXBzIGFuZCBSb2xlcyBpbiB0aGUgc3lzdGVtLg0KPiCgoKAgoKCgIKCg oCCgoKAgoKCgIKAqLw0KPiCgoKAgoKCgIKCgoCCgoKAgoKCgIEdyb3VwU2V0IGdyb3VwcyA9IHNl Y3VyaXR5LmdldEFsbEdyb3VwcygpOw0KPiCgoKAgoKCgIKCgoCCgoKAgoKCgIFJvbGVTZXQgcm9s ZXMgPSBzZWN1cml0eS5nZXRBbGxSb2xlcygpOw0KPg0KPiCgoKAgoKCgIKCgoCCgoKAgoKCgIGZv ciAoR3JvdXAgZ3JvdXAgOiBncm91cHMpIHsNCj4goKCgIKCgoCCgoKAgoKCgIKCgoCCgoKAgU3Ry aW5nIGdyb3VwTmFtZSA9IGdyb3VwLmdldE5hbWUoKTsNCj4goKCgIKCgoCCgoKAgoKCgIKCgoCCg oKAgZm9yIChSb2xlIHJvbGUgOiByb2xlcykgew0KPiCgoKAgoKCgIKCgoCCgoKAgoKCgIKCgoCCg oKAgU3RyaW5nIHJvbGVOYW1lID0gcm9sZS5nZXROYW1lKCk7DQo+DQo+IKCgoCCgoKAgoKCgIKCg oCCgoKAgoKCgIKCgoCAvKg0KPiCgoKAgoKCgIKCgoCCgoKAgoKCgIKCgoCCgoKAgoCogSW4gdGhl IFVzZXJSb2xlRm9ybS52bSB3ZSBtYWRlIGEgDQo+IGNoZWNrYm94IGZvciBldmVyeSBwb3NzaWJs ZSBHcm91cC9Sb2xlDQo+IKCgoCCgoKAgoKCgIKCgoCCgoKAgoKCgIKCgoCCgKiBjb21iaW5hdGlv biBzbyB3ZSB3aWxsIGNvbXBhcmUgZXZlcnkgDQo+IHBvc3NpYmxlIGNvbWJpbmF0aW9uIHdpdGgg dGhlIHZhbHVlcw0KPiCgoKAgoKCgIKCgoCCgoKAgoKCgIKCgoCCgoKAgoCogdGhhdCB3ZXJlIGNo ZWNrZWQgb2ZmIGluIHRoZSBmb3JtLiBJZiANCj4gd2UgaGF2ZSBhIG1hdGNoIHRoZW4gd2Ugd2ls bCBncmFudCB0aGUNCj4goKCgIKCgoCCgoKAgoKCgIKCgoCCgoKAgoKCgIKAqIHVzZXIgdGhlIHJv bGUgaW4gdGhlIGdyb3VwLg0KPiCgoKAgoKCgIKCgoCCgoKAgoKCgIKCgoCCgoKAgoCovDQo+IKCg oCCgoKAgoKCgIKCgoCCgoKAgoKCgIKCgoCBTdHJpbmcgZ3JvdXBSb2xlID0gZ3JvdXBOYW1lICsg cm9sZU5hbWU7DQo+IKCgoCCgoKAgoKCgIKCgoCCgoKAgoKCgIKCgoCBTdHJpbmcgZm9ybUdyb3Vw Um9sZSA9IA0KPiBkYXRhLmdldFBhcmFtZXRlcnMoKS5nZXRTdHJpbmcoZ3JvdXBSb2xlKTsNCj4N Cj4goKCgIKCgoCCgoKAgoKCgIKCgoCCgoKAgoKCgIGlmIChmb3JtR3JvdXBSb2xlICE9IG51bGwg JiYgDQo+ICFhY2wuaGFzUm9sZShyb2xlLCBncm91cCkpIHsNCj4goKCgIKCgoCCgoKAgoKCgIKCg oCCgoKAgoKCgIKCgoCAvLyBhZGQgdGhlIHJvbGUgZm9yIHRoaXMgdXNlcg0KPiCgoKAgoKCgIKCg oCCgoKAgoKCgIKCgoCCgoKAgoKCgIGlmIChhY2wuaGFzUm9sZShyb2xlKSA9PSBmYWxzZSkgew0K PiCgoKAgoKCgIKCgoCCgoKAgoKCgIKCgoCCgoKAgoKCgIKCgoCBsb2cuZGVidWcoIkFkZGluZyBu ZXcgcm9sZSB0byANCj4gdXNlcjogIiArIHJvbGUuZ2V0TmFtZSgpKTsNCj4goKCgIKCgoCCgoKAg oKCgIKCgoCCgoKAgoKCgIKCgoCCgoKAgc2VjdXJpdHkuZ3JhbnQodXNlciwgZ3JvdXAsIHJvbGUp Ow0KPiCgoKAgoKCgIKCgoCCgoKAgoKCgIKCgoCCgoKAgoKCgIH0NCj4goKCgIKCgoCCgoKAgoKCg IKCgoCCgoKAgoKCgIH0gZWxzZSBpZiAoZm9ybUdyb3VwUm9sZSA9PSBudWxsICYmIA0KPiBhY2wu aGFzUm9sZShyb2xlLCBncm91cCkpIHsNCj4goKCgIKCgoCCgoKAgoKCgIKCgoCCgoKAgoKCgIKCg oCAvLyByZXZva2UgdGhlIHJvbGUgZm9yIHRoaXMgdXNlcg0KPiCgoKAgoKCgIKCgoCCgoKAgoKCg IKCgoCCgoKAgoKCgIGxvZy5kZWJ1ZygiUmV2b2tlIHJvbGU6ICIgKyANCj4gcm9sZS5nZXROYW1l KCkpOw0KPiCgoKAgoKCgIKCgoCCgoKAgoKCgIKCgoCCgoKAgoKCgIHNlY3VyaXR5LnJldm9rZSh1 c2VyLCBncm91cCwgcm9sZSk7DQo+IKCgoCCgoKAgoKCgIKCgoCCgoKAgoKCgIKCgoCB9DQo+IKCg oCCgoKAgoKCgIKCgoCCgoKAgoKCgIH0NCj4goKCgIKCgoCCgoKAgoKCgIKCgoCB9DQo+DQo+IKCg oCCgoKAgoKCgIKCgoCB9IGVsc2Ugew0KPiCgoKAgoKCgIKCgoCCgoKAgoKCgIGxvZy5lcnJvcigi VXNlciBkb2VzIG5vdCBleGlzdCEiKTsNCj4goKCgIKCgoCCgoKAgoKCgIH0NCj4goKCgIKCgoCCg oKAgfSBlbHNlIHsNCj4goKCgIKCgoCCgoKAgoKCgIGRhdGEuc2V0TWVzc2FnZSgiWW91IGRvIG5v dCBoYXZlIGFjY2VzcyB0byBwZXJmb3JtIA0KPiB0aGlzIGFjdGlvbi4iKTsNCj4goKCgIKCgoCCg oKAgfQ0KPiCgoKAgoKCgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7DQo+IKCgoCCgoKAgoKCgIGxv Zy5lcnJvcigiRXJyb3Igc2V0dGluZyByb2xlczogIiArIGUudG9TdHJpbmcoKSk7DQo+IKCgoCCg oKAgfQ0KPg0KPiCgoKAgfQ0KPg0KPg0KDQotLSANCkplZmYgUGFpbnRlcg0KDQpDRU8gYW5kIEZv dW5kZXIgb2YgSml2ZUNhc3QNClNvZnR3YXJlIGFuZCBhbmFseXRpY3MsIG1hZGUgdG9nZXRoZXIN Cmh0dHA6Ly9qaXZlY2FzdC5jb20NCg0KMzAxIEZheWV0dGV2aWxsZSBTdC4gVW5pdCAyMzAxLCBS YWxlaWdoLCBOQyAyNzYwMQ0KKDkxOSkgNTMzLTkwMjQNCg0KDQotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NClRvIHVu c3Vic2NyaWJlLCBlLW1haWw6IHVzZXItdW5zdWJzY3JpYmVAdHVyYmluZS5hcGFjaGUub3JnDQpG b3IgYWRkaXRpb25hbCBjb21tYW5kcywgZS1tYWlsOiB1c2VyLWhlbHBAdHVyYmluZS5hcGFjaGUu b3JnDQoNCg== DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NClRvIHVuc3Vic2NyaWJlLCBlLW1haWw6IHVzZXItdW5zdWJz Y3JpYmVAdHVyYmluZS5hcGFjaGUub3JnDQpGb3IgYWRkaXRpb25hbCBjb21tYW5kcywgZS1t YWlsOiB1c2VyLWhlbHBAdHVyYmluZS5hcGFjaGUub3JnDQoN