LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi8qIExQQzQzWFgtRkxBU0gtREVCVUcuSU5JOiBFeHRlcm5hbCBNZW1vcnkgSW50ZXJmYWNlIGluaXRpYWxpemF0aW9uIGZvciAgICAgICovDQovKiAgICAgICAgICAgICAgICAgICAgICAgICAgTFBDNDN4eCBmaXJzdCByZXZpc2lvbiAoU2VwdCAyMDExKS4gICAgICAgICAgICAgICAqLw0KLyogICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBwdXJwb3NlIGlzIHRvIGJlIGFibGUgdG8gZGVidWcgYSBwcm9ncmFtICAgICAgKi8NCi8qICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGVkIGluIHRoZSBleHRlcm5hbCBmbGFzaC4gICAgICAgICAgICAgICAgICAgICovDQovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KRlVOQyB2b2lkIFByZV9TZXR1cCAodm9pZCkgew0KDQoJLyogY29uZmlndXJlIE0wIGZvciBpbmZpbml0ZSBsb29wICovDQoJX1dEV09SRCgweDEwMDgwMDAwLDB4MDAwMDFGMDApOwkvKiBkdW1teSBzdGFjayBwb2ludGVyICovDQoJX1dEV09SRCgweDEwMDgwMDA0LDB4MDAwMDAwRDUpOwkvKiByZXNldCBoYW5kbGVyICovDQoJX1dEV09SRCgweDEwMDgwMEQ0LDB4RTdGRUU3RkUpOwkvKiBqdW1wIHRvIGl0c2VsZiBpbnN0cnVjdGlvbiBmb3IgTTBhICovDQoJX1dEV09SRCgweDQwMDQzNDA0LDB4MTAwODAwMDApOwkvKiBNMCBzaGFkb3cgcG9pbnRlci4gKi8NCgkNCgkvKiByZWxlYXNlIE0wIGZyb20gcmVzZXQgdG8gYWxsb3cgSnRhZyBhY2Nlc3MgKi8NCglfV0RXT1JEKDB4NDAwNTMxMDQsKH4oX1JEV09SRCgweDQwMDUzMTU0KSkpICYgKH4oMTw8MjQpKSk7DQoNCgkvLwl1MzJWYWwgPSAofih1MzJSRUcpICYgKH4oMSA8PCAyNCkpKTsgLy8gY2xlYXIgdGhlIGNvbnRyb2wgYml0CQkJDQoJLy8gTFBDX1JHVS0+UkVTRVRfQ1RSTDEgPSAofiggTFBDX1JHVS0+UkVTRVRfQUNUSVZFX1NUQVRVUzEgKSkgJiAoMCA8PCAyNCk7IC8vUmVsZWFzZSBNMA0KDQp9DQogDQogDQpGVU5DIHZvaWQgU2V0dXAgKHZvaWQpIA0Kew0KICAvLyBXaXRoIHRoZSB2YWx1ZXMgdXNlZCBoZXJlLCB0aGUgcHJvZ3JhbSBoYWQgdG8gYmUgbGlua2VkIHRvIENTMCBtZW1vcnkNCiAgLy8gbG9jYXRlZCBhdCAweDFDMDAwMDAwIGluIHRoZSBMUEM0M3h4Lg0KDQovKiBUaGlzIHdvdWxkIGJlIHVzZWQgaW4gY2FzZSB0aGVyZSBpcyBhIDE2LWJ5dGUgaGVhZGVyIGluIHRoZSBpbWFnZSAqLw0KDQovKg0KDQogIFNQID0gX1JEV09SRCgweDFjMDAwMTAwKTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNldHVwIFN0YWNrIFBvaW50ZXINCiAgUEMgPSBfUkRXT1JEKDB4MUMwMDAxMDQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2V0dXAgUHJvZ3JhbSBDb3VudGVyDQoNCiAgX1dEV09SRCgweEUwMDBFRDA4LCAweDFDMDAwMTAwKTsgICAgICAgICAgICAgICAgICAgLy8gU2V0dXAgVmVjdG9yIFRhYmxlIE9mZnNldCBSZWdpc3RlcgkNCg0KKi8NCg0KDQovKiBUaGlzIGlzIHVzZWQgZm9yIHBsYWluIGltYWdlcywgd2l0aG91dCBhIDE2LWJ5dGUgaGVhZGVyICovDQoNCiAgU1AgPSBfUkRXT1JEKDB4MUMwMDAwMDApOyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2V0dXAgU3RhY2sgUG9pbnRlcg0KICBQQyA9IF9SRFdPUkQoMHgxQzAwMDAwNCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTZXR1cCBQcm9ncmFtIENvdW50ZXINCg0KICBfV0RXT1JEKDB4RTAwMEVEMDgsIDB4MUMwMDAwMDApOyAgICAgICAgICAgICAgICAgICAvLyBTZXR1cCBWZWN0b3IgVGFibGUgT2Zmc2V0IFJlZ2lzdGVyCQ0KDQp9IA0KIA0KIA0KRlVOQyB2b2lkIGVtY19zZXR1cCAodm9pZCkgDQp7DQogIC8vIGJ1cyBzaWduYWxzIGZvciBleHRlcm5hbCBtZW1vcnkNCiAgX1dEV09SRCgweDQwMDg2MDlDLCAweDAwMDAwMEYzKTsgIC8qIFAxXzc6IEQwIChmdW5jdGlvbiAzKSAqLw0KICBfV0RXT1JEKDB4NDAwODYwQTAsIDB4MDAwMDAwRjMpOyAgLyogUDFfODogRDEgKGZ1bmN0aW9uIDMpICovDQogIF9XRFdPUkQoMHg0MDA4NjBBNCwgMHgwMDAwMDBGMyk7ICAvKiBQMV85OiBEMiAoZnVuY3Rpb24gMykgKi8NCiAgX1dEV09SRCgweDQwMDg2MEE4LCAweDAwMDAwMEYzKTsgIC8qIFAxXzEwOiBEMyAoZnVuY3Rpb24gMykgKi8NCiAgX1dEV09SRCgweDQwMDg2MEFDLCAweDAwMDAwMEYzKTsgIC8qIFAxXzExOiBENCAoZnVuY3Rpb24gMykgKi8NCiAgX1dEV09SRCgweDQwMDg2MEIwLCAweDAwMDAwMEYzKTsgIC8qIFAxXzEyOiBENSAoZnVuY3Rpb24gMykgKi8NCiAgX1dEV09SRCgweDQwMDg2MEI0LCAweDAwMDAwMEYzKTsgIC8qIFAxXzEzOiBENiAoZnVuY3Rpb24gMykgKi8NCiAgX1dEV09SRCgweDQwMDg2MEI4LCAweDAwMDAwMEYzKTsgIC8qIFAxXzE0OiBENyAoZnVuY3Rpb24gMykgKi8NCiAgX1dEV09SRCgweDQwMDg2MjgwLCAweDAwMDAwMEYyKTsgIC8qIFA1XzA6IEQxMiAoZnVuY3Rpb24gMikgKi8NCiAgX1dEV09SRCgweDQwMDg2Mjg0LCAweDAwMDAwMEYyKTsgIC8qIFA1XzE6IEQxMyAoZnVuY3Rpb24gMikgKi8NCiAgX1dEV09SRCgweDQwMDg2Mjg4LCAweDAwMDAwMEYyKTsgIC8qIFA1XzI6IEQxNCAoZnVuY3Rpb24gMikgKi8NCiAgX1dEV09SRCgweDQwMDg2MjhDLCAweDAwMDAwMEYyKTsgIC8qIFA1XzM6IEQxNSAoZnVuY3Rpb24gMikgKi8NCiAgX1dEV09SRCgweDQwMDg2MjkwLCAweDAwMDAwMEYyKTsgIC8qIFA1XzQ6IEQ4IChmdW5jdGlvbiAyKSAqLw0KICBfV0RXT1JEKDB4NDAwODYyOTQsIDB4MDAwMDAwRjIpOyAgLyogUDVfNTogRDkgKGZ1bmN0aW9uIDIpICovDQogIF9XRFdPUkQoMHg0MDA4NjI5OCwgMHgwMDAwMDBGMik7ICAvKiBQNV82OiBEMTAgKGZ1bmN0aW9uIDIpICovDQogIF9XRFdPUkQoMHg0MDA4NjI5QywgMHgwMDAwMDBGMik7ICAvKiBQNV83OiBEMTEgKGZ1bmN0aW9uIDIpICovDQogIF9XRFdPUkQoMHg0MDA4NjY4OCwgMHgwMDAwMDBGMik7ICAvKiBQRF8yOiBEMTYgKGZ1bmN0aW9uIDIpICovDQogIF9XRFdPUkQoMHg0MDA4NjY4QywgMHgwMDAwMDBGMik7ICAvKiBQRF8zOiBEMTcgKGZ1bmN0aW9uIDIpICovDQogIF9XRFdPUkQoMHg0MDA4NjY5MCwgMHgwMDAwMDBGMik7ICAvKiBQRF80OiBEMTggKGZ1bmN0aW9uIDIpICovDQogIF9XRFdPUkQoMHg0MDA4NjY5NCwgMHgwMDAwMDBGMik7ICAvKiBQRF81OiBEMTkgKGZ1bmN0aW9uIDIpICovDQogIF9XRFdPUkQoMHg0MDA4NjY5OCwgMHgwMDAwMDBGMik7ICAvKiBQRF82OiBEMjAgKGZ1bmN0aW9uIDIpICovDQogIF9XRFdPUkQoMHg0MDA4NjY5QywgMHgwMDAwMDBGMik7ICAvKiBQRF83OiBEMjEgKGZ1bmN0aW9uIDIpICovDQogIF9XRFdPUkQoMHg0MDA4NjZBMCwgMHgwMDAwMDBGMik7ICAvKiBQRF84OiBEMjIgKGZ1bmN0aW9uIDIpICovDQogIF9XRFdPUkQoMHg0MDA4NjZBNCwgMHgwMDAwMDBGMik7ICAvKiBQRF85OiBEMjMgKGZ1bmN0aW9uIDIpICovDQogIF9XRFdPUkQoMHg0MDA4NjcxNCwgMHgwMDAwMDBGMyk7ICAvKiBQRV81OiBEMjQgKGZ1bmN0aW9uIDMpICovDQogIF9XRFdPUkQoMHg0MDA4NjcxOCwgMHgwMDAwMDBGMyk7ICAvKiBQRV82OiBEMjUgKGZ1bmN0aW9uIDMpICovDQogIF9XRFdPUkQoMHg0MDA4NjcxQywgMHgwMDAwMDBGMyk7ICAvKiBQRV83OiBEMjYgKGZ1bmN0aW9uIDMpICovDQogIF9XRFdPUkQoMHg0MDA4NjcyMCwgMHgwMDAwMDBGMyk7ICAvKiBQRV84OiBEMjcgKGZ1bmN0aW9uIDMpICovDQogIF9XRFdPUkQoMHg0MDA4NjcyNCwgMHgwMDAwMDBGMyk7ICAvKiBQRV85OiBEMjggKGZ1bmN0aW9uIDMpICovDQogIF9XRFdPUkQoMHg0MDA4NjcyOCwgMHgwMDAwMDBGMyk7ICAvKiBQRV8xMDogRDI5IChmdW5jdGlvbiAzKSAqLw0KICBfV0RXT1JEKDB4NDAwODY3MkMsIDB4MDAwMDAwRjMpOyAgLyogUEVfMTE6IEQzMCAoZnVuY3Rpb24gMykgKi8NCiAgX1dEV09SRCgweDQwMDg2NzMwLCAweDAwMDAwMEYzKTsgIC8qIFBFXzEyOiBEMzEgKGZ1bmN0aW9uIDMpICovDQogIA0KICBfV0RXT1JEKDB4NDAwODYxMjQsIDB4MDAwMDAwRjMpOyAgLyogUDJfOTogQTAgKGZ1bmN0aW9uIDMpICovDQogIF9XRFdPUkQoMHg0MDA4NjEyOCwgMHgwMDAwMDBGMyk7ICAvKiBQMl8xMDogQTEgKGZ1bmN0aW9uIDMpICovDQogIF9XRFdPUkQoMHg0MDA4NjEyQywgMHgwMDAwMDBGMyk7ICAvKiBQMl8xMTogQTIgKGZ1bmN0aW9uIDMpICovDQogIF9XRFdPUkQoMHg0MDA4NjEzMCwgMHgwMDAwMDBGMyk7ICAvKiBQMl8xMjogQTMgKGZ1bmN0aW9uIDMpICovDQogIF9XRFdPUkQoMHg0MDA4NjEzNCwgMHgwMDAwMDBGMyk7ICAvKiBQMl8xMzogQTQgKGZ1bmN0aW9uIDMpICovDQogIF9XRFdPUkQoMHg0MDA4NjA4MCwgMHgwMDAwMDBGMik7ICAvKiBQMV8wOiBBNSAoZnVuY3Rpb24gMikgKi8NCiAgX1dEV09SRCgweDQwMDg2MDg0LCAweDAwMDAwMEYyKTsgIC8qIFAxXzE6IEE2IChmdW5jdGlvbiAyKSAqLw0KICBfV0RXT1JEKDB4NDAwODYwODgsIDB4MDAwMDAwRjIpOyAgLyogUDFfMjogQTcgKGZ1bmN0aW9uIDIpICovICAgIA0KICBfV0RXT1JEKDB4NDAwODYxMjAsIDB4MDAwMDAwRjMpOyAgLyogUDJfODogQTggKGZ1bmN0aW9uIDMpICovDQogIF9XRFdPUkQoMHg0MDA4NjExQywgMHgwMDAwMDBGMyk7ICAvKiBQMl83OiBBOSAoZnVuY3Rpb24gMykgKi8NCiAgX1dEV09SRCgweDQwMDg2MTE4LCAweDAwMDAwMEYyKTsgIC8qIFAyXzY6IEExMCAoZnVuY3Rpb24gMikgKi8NCiAgX1dEV09SRCgweDQwMDg2MTA4LCAweDAwMDAwMEYyKTsgIC8qIFAyXzI6IEExMSAoZnVuY3Rpb24gMikgKi8NCiAgX1dEV09SRCgweDQwMDg2MTA0LCAweDAwMDAwMEYyKTsgIC8qIFAyXzE6IEExMiAoZnVuY3Rpb24gMikgKi8NCiAgX1dEV09SRCgweDQwMDg2MTAwLCAweDAwMDAwMEYyKTsgIC8qIFAyXzA6IEExMyAoZnVuY3Rpb24gMikgKi8NCiAgX1dEV09SRCgweDQwMDg2MzIwLCAweDAwMDAwMEYxKTsgIC8qIFA2Xzg6IEExNCAoZnVuY3Rpb24gMSkgKi8NCiAgX1dEV09SRCgweDQwMDg2MzFDLCAweDAwMDAwMEYxKTsgIC8qIFA2Xzc6IEExNSAoZnVuY3Rpb24gMSkgKi8NCiAgX1dEV09SRCgweDQwMDg2NkMwLCAweDAwMDAwMEYyKTsgIC8qIFBEXzE2OiBBMTYgKGZ1bmN0aW9uIDIpICovDQogIF9XRFdPUkQoMHg0MDA4NjZCQywgMHgwMDAwMDBGMik7ICAvKiBQRF8xNTogQTE3IChmdW5jdGlvbiAyKSAqLw0KICBfV0RXT1JEKDB4NDAwODY3MDAsIDB4MDAwMDAwRjMpOyAgLyogUEVfMDogQTE4IChmdW5jdGlvbiAzKSAqLw0KICBfV0RXT1JEKDB4NDAwODY3MDQsIDB4MDAwMDAwRjMpOyAgLyogUEVfMTogQTE5IChmdW5jdGlvbiAzKSAqLw0KICBfV0RXT1JEKDB4NDAwODY3MDgsIDB4MDAwMDAwRjMpOyAgLyogUEVfMjogQTIwIChmdW5jdGlvbiAzKSAqLw0KICBfV0RXT1JEKDB4NDAwODY3MEMsIDB4MDAwMDAwRjMpOyAgLyogUEVfMzogQTIxIChmdW5jdGlvbiAzKSAqLw0KICBfV0RXT1JEKDB4NDAwODY3MTAsIDB4MDAwMDAwRjMpOyAgLyogUEVfNDogQTIyIChmdW5jdGlvbiAzKSAqLw0KDQogIC8vIGNvbnRyb2wgc2lnbmFscyBmb3Igc3RhdGljIG1lbW9yeQ0KICBfV0RXT1JEKDB4NDAwODYwOTQsIDB4MDAwMDAwRjMpOyAgLyogUDFfNTogQ1MwIChmdW5jdGlvbiAzKSAqLw0KICBfV0RXT1JEKDB4NDAwODY2QjAsIDB4MDAwMDAwRjIpOyAgLyogUERfMTI6IENTMiAoZnVuY3Rpb24gMikgKi8NCiAgX1dEV09SRCgweDQwMDg2MDk4LCAweDAwMDAwMEYzKTsgIC8qIFAxXzY6IFdFIChmdW5jdGlvbiAzKSAqLw0KICBfV0RXT1JEKDB4NDAwODYwOEMsIDB4MDAwMDAwRjMpOyAgLyogUDFfMzogT0UgKGZ1bmN0aW9uIDMpICovDQogIF9XRFdPUkQoMHg0MDA4NjA5MCwgMHgwMDAwMDBGMyk7ICAvKiBQMV80OiBCTFMwIChmdW5jdGlvbiAzKSAqLw0KICBfV0RXT1JEKDB4NDAwODYzMTgsIDB4MDAwMDAwRjEpOyAgLyogUDZfNjogQkxTMSAoZnVuY3Rpb24gMSkgKi8NCg0KICAvLyBjb25maWd1cmUgRU1DIHN0YXRpYyBtZW1vcnkgcmVnaXN0ZXJzDQogIF9XRFdPUkQoMHg0MDAwNTAwMCwgMHgwMDAwMDAwMSk7ICAgICAgLyogRW5hYmxlIHRoZSBFTUMgYmxvY2sgKi8NCg0KICBfV0RXT1JEKDB4NDAwMDUyMDAsIDB4MDAwMDAwODEpOyAgICAgIC8qIENTMDogMTYgYml0LCBXRSAqLw0KICBfV0RXT1JEKDB4NDAwMDUyMDgsIDB4MDAwMDAwMDApOyAgICAgIC8qIENTMDogV0FJVE9FTiA9IDAgKi8NCiAgX1dEV09SRCgweDQwMDA1MjBDLCAweDAwMDAwMDA4KTsgICAgICAvKiBDUzA6IFdBSVRSRCA9IDggQDEyME1IeiBmb3IgNzBucyBmbGFzaCAqLw0KDQogIF9XRFdPUkQoMHg0MDAwNTI0MCwgMHgwMDAwMDA4MSk7ICAgICAgLyogQ1MyOiAxNiBiaXQsIFdFICovDQogIF9XRFdPUkQoMHg0MDAwNTI0OCwgMHgwMDAwMDAwMCk7ICAgICAgLyogQ1MyOiBXQUlUT0VOID0gMCAqLw0KICBfV0RXT1JEKDB4NDAwMDUyNEMsIDB4MDAwMDAwMDcpOyAgICAgIC8qIENTMjogV0FJVFJEID0gNyAqLw0KfQ0KDQoNCg0KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQovKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovICAgCQ0KDQpfc2xlZXBfKDEwMCk7DQoNCi8vUHJlX3NldHVwKCk7DQoNCi8vIEp1c3Qgc2V0IHVwIHRoZSBtZW1vcnkgaW50ZXJmYWNlIHRvIGVuYWJsZSB0aGUgY29ycmVjdCBhY2Nlc3MgdG8gdGhlIGV4dGVybmFsDQovLyBmbGFzaCBtZW1vcnkgb24gQ1MwLg0KZW1jX3NldHVwKCk7DQoNCg0KLy8gRG93bmxvYWQgdGhlIGltYWdlLiBUaGlzIGlzIG5vdCBhIHBoeXNpY2FsIGRvd25sb2FkIGFzIHRoZSBpbWFnZSBpcyANCi8vIChhbHJlYWR5KSBpbiB0aGUgZmxhc2guDQovLyBJZiB3b3JraW5nIHdpdGggVUxJTksgZGV2aWNlcyBhbiBhbHRlcm5hdGl2ZSBpcyB0byBjaGVjayB0aGUgY2hlY2tib3ggIkxvYWQgQXBwbGljYXRpb24gYXQgU3RhcnR1cCIgaW4gdGhlIA0KLy8gZGVidWcgc2V0dGluZ3Mgb2YgtVZpc2lvbiAoY29tbWVudCB0aGUgTE9BRCBpbnN0cnVjdGlvbiBvdXQpLg0KLy8gVGhpcyBtZWNoYW5pc20gaXMgbm90IHVzZWQgaGVyZSwgYmVjYXVzZSBzb21laG93IGl0IGRvZXMgbm90IHdvcmsgd2l0aCB0aGUgSkxJTksgZGV2aWNlcy4NCkxPQUQgRmxhc2hcTFBDNDN4eF9NNF9GTEFTSC5heGYgSU5DUkVNRU5UQUwNCg0KDQoNCg0KDQovLyBTZXR1cCBmb3IgcnVubmluZyBmcm9tIGEgc3BlY2lmaWMgbWVtb3J5IGxvY2F0aW9uDQpTZXR1cCgpOw0KDQoNCg0KDQoNCg0K