LyoqDQogKiBUaGlzIGZpbGUgaGFzIG5vIGNvcHlyaWdodCBhc3NpZ25lZCBhbmQgaXMgcGxhY2VkIGluIHRoZSBQdWJsaWMgRG9tYWluLg0KICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHc2NCBtaW5ndy1ydW50aW1lIHBhY2thZ2UuDQogKiBObyB3YXJyYW50eSBpcyBnaXZlbjsgcmVmZXIgdG8gdGhlIGZpbGUgRElTQ0xBSU1FUiB3aXRoaW4gdGhpcyBwYWNrYWdlLg0KICovDQoJLmZpbGUJImxvZzFwLlMiDQoJLnRleHQNCgkuYWxpZ24gNA0KCS8qIFRoZSBmeWwyeHAxIGNhbiBvbmx5IGJlIHVzZWQgZm9yIHZhbHVlcyBpbg0KCSAgIC0xICsgc3FydCgyKSAvIDIgPD0geCA8PSAxIC0gc3FydCgyKSAvIDINCgkgICAwLjI5IGlzIGEgc2FmZSB2YWx1ZS4NCgkgKi8NCmxpbWl0OgkuZG91YmxlIDAuMjkNCm9uZToJLmRvdWJsZSAxLjANCi8qDQogKiBVc2UgdGhlIGZ5bDJ4cDEgZnVuY3Rpb24gd2hlbiB0aGUgYXJndW1lbnQgaXMgaW4gdGhlIHJhbmdlIC0wLjI5IHRvIDAuMjksDQogKiBvdGhlcndpc2UgZnlsMnggd2l0aCB0aGUgbmVlZGVkIGV4dHJhIGNvbXB1dGF0aW9uLg0KICovDQouZ2xvYmwgX2xvZzFwOyANCgkuZGVmCV9sb2cxcDsJLnNjbAkyOwkudHlwZQkzMjsJLmVuZGVmDQpfbG9nMXA6DQoJbW92c2QJJXhtbTAsLTE2KCVyc3ApDQoJZmxkbG4yDQoJZmxkbAktMTYoJXJzcCkNCglmeGFtDQoJZm5zdHN3DQoJZmxkCSVzdA0KCXNhaGYNCglqYwkzZgkvLyBpbiBjYXNlIHggaXMgTmFOIG9yILFJbmYNCg0KNDoJZmFicw0KCWZjb21wbAlsaW1pdA0KCWZuc3Rzdw0KCXNhaGYNCglqYwkyZg0KCWZhZGRsCW9uZQ0KCWZ5bDJ4DQoJZnN0cGwJLTE2KCVyc3ApDQoJbW92c2QJLTE2KCVyc3ApLCV4bW0wDQoJcmV0DQoNCjI6CWZ5bDJ4cDENCglmc3RwbAktMTYoJXJzcCkNCgltb3ZzZAktMTYoJXJzcCksJXhtbTANCglyZXQNCg0KMzoJanAJNGIJLy8gaW4gY2FzZSB4IGlzILFJbmYNCglmc3RwCSVzdCgxKQ0KCWZzdHAJJXN0KDEpDQoJZnN0cGwJLTE2KCVyc3ApDQoJbW92c2QJLTE2KCVyc3ApLCV4bW0wDQoJcmV0DQo=