LyoqDQogKiBUaGlzIGZpbGUgaGFzIG5vIGNvcHlyaWdodCBhc3NpZ25lZCBhbmQgaXMgcGxhY2VkIGluIHRoZSBQdWJsaWMgRG9tYWluLg0KICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHc2NCBtaW5ndy1ydW50aW1lIHBhY2thZ2UuDQogKiBObyB3YXJyYW50eSBpcyBnaXZlbjsgcmVmZXIgdG8gdGhlIGZpbGUgRElTQ0xBSU1FUiB3aXRoaW4gdGhpcyBwYWNrYWdlLg0KICovDQoJLmZpbGUJImxvZzEwbC5TIg0KCS50ZXh0DQoJLmFsaWduIDQNCm9uZToJLmRvdWJsZSAxLjANCgkvKiBJdCBpcyBub3QgaW1wb3J0YW50IHRoYXQgdGhpcyBjb25zdGFudCBpcyBwcmVjaXNlLiAgSXQgaXMgb25seQ0KCSAgIGEgdmFsdWUgd2hpY2ggaXMga25vd24gdG8gYmUgb24gdGhlIHNhZmUgc2lkZSBmb3IgdXNpbmcgdGhlDQoJICAgZnlsMnhwMSBpbnN0cnVjdGlvbi4gICovDQpsaW1pdDoJLmRvdWJsZSAwLjI5DQoNCgkudGV4dA0KCS5hbGlnbiA4DQouZ2xvYmwgX2xvZzEwbA0KCS5kZWYJX2xvZzEwbDsJLnNjbAkyOwkudHlwZQkzMjsJLmVuZGVmDQpfbG9nMTBsOg0KCWZsZGxnMgkJCS8vIGxvZzEwKDIpDQoJZmxkdAkoJXJkeCkJCS8vIHggOiBsb2cxMCgyKQ0KCWZ4YW0NCglmbnN0c3cNCglmbGQJJXN0CQkvLyB4IDogeCA6IGxvZzEwKDIpDQoJc2FoZg0KCWpjCTNmCQkvLyBpbiBjYXNlIHggaXMgTmFOIG9yILFJbmYNCjQ6CWZzdWJsCW9uZQkJLy8geC0xIDogeCA6IGxvZzEwKDIpDQoJZmxkCSVzdAkJLy8geC0xIDogeC0xIDogeCA6IGxvZzEwKDIpDQoJZmFicwkJCS8vIHx4LTF8IDogeC0xIDogeCA6IGxvZzEwKDIpDQoJZmNvbXBsCWxpbWl0CQkvLyB4LTEgOiB4IDogbG9nMTAoMikNCglmbnN0c3cJCQkvLyB4LTEgOiB4IDogbG9nMTAoMikNCglhbmRiCSQweDQ1LCAlYWgNCglqegkyZg0KCWZzdHAJJXN0KDEpCQkvLyB4LTEgOiBsb2cxMCgyKQ0KCWZ5bDJ4cDEJCQkvLyBsb2cxMCh4KQ0KCW1vdnEJJXJjeCwlcmF4DQoJZnN0cHQJKCVyY3gpDQoJcmV0DQoNCjI6CWZzdHAJJXN0KDApCQkvLyB4IDogbG9nMTAoMikNCglmeWwyeAkJCS8vIGxvZzEwKHgpDQoJbW92cQklcmN4LCVyYXgNCglmc3RwdAkoJXJjeCkNCglyZXQNCg0KMzoJanAJNGIJCS8vIGluIGNhc2UgeCBpcyCxSW5mDQoJZnN0cAklc3QoMSkNCglmc3RwCSVzdCgxKQ0KCW1vdnEJJXJjeCwlcmF4DQoJZnN0cHQJKCVyY3gpDQoJcmV0DQo=