PD9waHAgIAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCXJlcXVpcmVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9lY2xpcHNlLm9yZy1jb21tb24vc3lzdGVtL2FwcC5jbGFzcy5waHAiKTsJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbmF2LmNsYXNzLnBocCIpOyAJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbWVudS5jbGFzcy5waHAiKTsgCSRBcHAgCT0gbmV3IEFwcCgpOwkkTmF2CT0gbmV3IE5hdigpOwkkTWVudSAJPSBuZXcgTWVudSgpOwkJaW5jbHVkZSgkQXBwLT5nZXRQcm9qZWN0Q29tbW9uKCkpOyAgICAjIEFsbCBvbiB0aGUgc2FtZSBsaW5lIHRvIHVuY2x1dHRlciB0aGUgdXNlcidzIGRlc2t0b3AnCgoJIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgkjCgkjIHRlbXBsYXRlLnBocAoJIwoJIyBBdXRob3I6IAkJRnJlZGR5IEFsbGlsYWlyZQoJIyBEYXRlOgkJCTIwMDUtMTItMDcKCSMKCSMgRGVzY3JpcHRpb246IFR5cGUgeW91ciBwYWdlIGNvbW1lbnRzIGhlcmUgLSB0aGVzZSBhcmUgbm90IHNlbnQgdG8gdGhlIGJyb3dzZXIKCSMKCSMKCSMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgkKCSMKCSMgQmVnaW46IHBhZ2Utc3BlY2lmaWMgc2V0dGluZ3MuICBDaGFuZ2UgdGhlc2UuIAoJJHBhZ2VUaXRsZSAJCT0gIlZlcmlmeWluZyBVTUwgcHJvZmlsZWQgbW9kZWxzIC0gVXNlciBHdWlkZSI7CgkkcGFnZUtleXdvcmRzCT0gIiI7CgkkcGFnZUF1dGhvcgkJPSAiRnJlZGR5IEFsbGlsYWlyZSI7CgkKCSMgRW5kOiBwYWdlLXNwZWNpZmljIHNldHRpbmdzCgkjCgkJCgkjIFBhc3RlIHlvdXIgSFRNTCBjb250ZW50IGJldHdlZW4gdGhlIEVPSFRNTCBtYXJrZXJzIQoJJGh0bWwgPSA8PDxFT0hUTUwKCgk8IS0tIE1haW4gcGFydCAtLT4KCTxkaXYgaWQ9Im1pZGNvbHVtbiI+CgkJPGgxPiRwYWdlVGl0bGU8L2gxPgoKCQk8aW1nIGFsaWduPSJyaWdodCIgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYXRsTG9nb1NtYWxsLnBuZyIgdmFsaWduPSJ0b3AiIHN0eWxlPSJwYWRkaW5nLWxlZnQ6IDEwcHg7IiBhbHQ9IkFUTCBMb2dvIiAvPgoJCTxhIGhyZWY9Imh0dHA6Ly93d3cucGFweXJ1c3VtbC5vcmcvIj48aW1nIGFsaWduPSJyaWdodCIgc3JjPSIuLi8uLi9yZXNvdXJjZXMvUGFweXJ1c180OHg0OC5naWYiIHZhbGlnbj0idG9wIiBzdHlsZT0icGFkZGluZy1sZWZ0OiAxMHB4OyIgYWx0PSJQYXB5cnVzIiAvPjwvYT4KCQkJICAgCQoJCTxociBjbGFzcz0iY2xlYXJlciIgLz4KCgkJPGRpdiBpZD0iY29udGFpbmVyPgoJCQk8cCBhbGlnbj0ianVzdGlmeSI+CgkJCQk8dGFibGUgYm9yZGVyPSIzIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIyMCI+CgkJCQkJPHRyPjx0ZCBhbGlnbj0ianVzdGlmeSIgYmdjb2xvcj0iI2IwYzhmNCI+CgkJCQkJCVRoaXMgdXNlciBndWlkZSBleHBsYWlucyBob3cgdG8gY29uZmlndXJlIGFuZCBsYXVuY2ggdGhlIDxhIGhyZWY9ImluZGV4LnBocCI+VmVyaWZ5aW5nIFVNTCBwcm9maWxlZCBtb2RlbHM8L2E+IEFUTCBzZXJ2aWNlIGluIFBhcHlydXMuCgkJCQkJPC90ZD48L3RyPgoJCQkJPC90YWJsZT4KCQkJPC9wPgoKCQkJPHAgYWxpZ249Imp1c3RpZnkiPgoJCQkJVGhlIGZvbGxvd2luZyBwcm9jZWR1cmUgd2lsbCBjb25maWd1cmUgYW5kIGxhdW5jaCB0aGUgdHJhbnNmb3JtYXRpb24gdGhhdCB2YWxpZGF0ZXMgdGhlIG1vZGVsIGFnYWluc3QgcHJldmlvdXNseSBkZWZpbmVkIHJ1bGVzLgoJCQk8L3A+CgkJCTxwIGFsaWduPSJjZW50ZXIiPgoJCQkJPGltZyBzcmM9ImltZy9ydW4uUE5HIiAvPgoJCQk8L3A+CgkJCTxwIGFsaWduPSJqdXN0aWZ5Ij4KCQkJCUZpcnN0IHN0ZXAgaXMgdG8gY3JlYXRlIGEgbmV3IHRyYW5zZm9ybWF0aW9uIGNvbmZpZ3VyYXRpb24sIHVzaW5nIHRoZSA8Yj5SdW4gQXM8L2I+IGJ1dHRvbi4KCQkJPC9wPgoJCQk8cCBhbGlnbj0iY2VudGVyIj4KCQkJCTxpbWcgc3JjPSJpbWcvY29uZmlndXJhdGlvbk1hbmFnZXIuUE5HIiAvPgoJCQk8L3A+CgkJCTxwIGFsaWduPSJqdXN0aWZ5Ij4KCQkJCVRoYW5rcyB0byB0aGUgcG9wLXVwIG1lbnUgYXZhaWxhYmxlIG9uIFBhcHlydXMgdHJhbnNmb3JtYXRpb24sIHlvdSBjYW4gY3JlYXRlIGEgbmV3IHRyYW5zZm9ybWF0aW9uIGNvbmZpZ3VyYXRpb24uIFRoaXMgdHJhbnNmb3JtYXRpb24gY29uZmlndXJhdGlvbiB3aWxsIGNvbnRhaW4gYWxsIAoJCQkJbmVjZXNzYXJ5IHBhcmFtZXRlcnMgZm9yIHlvdXIgdHJhbnNmb3JtYXRpb24uCgkJCTwvcD4KCQkJPHAgYWxpZ249ImNlbnRlciI+CgkJCQk8aW1nIHNyYz0iaW1nL25ld0NvbmZpZ3VyYXRpb24uUE5HIiAvPgoJCQk8L3A+CgkJCTxwIGFsaWduPSJqdXN0aWZ5Ij4KCQkJCVRoYW5rcyB0byB0aGUgPGI+QnJvd3NlLi4uPC9iPiBidXR0b24gaW4gdGhlIE1vZHVsZSBncm91cCwgdGhlIHRyYW5zZm9ybWF0aW9uIG1vZHVsZSBjYW4gYmUgc2VsZWN0ZWQgYWdhaW5zdCBhbGwgdHJhbnNmb3JtYXRpb24gbW9kdWxlcyBhdmFpbGFibGUgZm9yIFBhcHlydXMuIEluIHRoaXMgdXNlIGNhc2UsIAoJCQkJcGxlYXNlIHNlbGVjdCB0aGUgVU1MIG1lYXN1cmVzIG1vZHVsZS4KCQkJPC9wPgoJCQk8cCBhbGlnbj0iY2VudGVyIj4KCQkJCTxpbWcgc3JjPSJpbWcvbW9kdWxlU2VsZWN0aW9uLlBORyIgLz4KCQkJPC9wPgoJCQk8cCBhbGlnbj0ianVzdGlmeSI+CgkJCQlUaGUgbmV4dCBzdGVwIGlzIHRvIGNob29zZSB0aGUgdW1sIGZpbGUgb24gd2hpY2ggdGhlIHRyYW5zZm9ybWF0aW9uIHdpbGwgcnVuLiBUaGUgZm9sbG93aW5nIHdpbmRvdyBmaWx0ZXJzIHRoZSBwcm9wb3NlZCBmaWxlcyB1c2luZyB0aGVpciBleHRlbnNpb25zOyB5b3UgY2FuIG9ubHkgc2VsZWN0IAoJCQkJdW1sIGZpbGVzLgoJCQk8L3A+CgkJCTxwIGFsaWduPSJjZW50ZXIiPgoJCQkJPGltZyBzcmM9ImltZy9zb3VyY2VNb2RlbFNlbGVjdGlvbi5QTkciIC8+CgkJCTwvcD4KCQkJPHAgYWxpZ249Imp1c3RpZnkiPgoJCQkJVGhlIG5leHQgc3RlcCBpcyB0aGUgc2VsZWN0aW9uIG9mIHRoZSB0YXJnZXQgZm9sZGVyLiBJdCBpcyBub3QgcG9zc2libGUgdG8gc2VsZWN0IGEgcHJvamVjdCB5ZXQuIEluIGZhY3QsIFBhcHlydXMgdHJhbnNmb3JtYXRpb25zIG11c3QgYmUgcnVuIGludG8gYSBmb2xkZXIgKHllbGxvdyBmb2xkZXIgCgkJCQlpY29ucykuIFRoaXMgc2hvdWxkIGJlIGZpeGVkIGluIG5leHQgdmVyc2lvbnMgb2YgUGFweXJ1cyB0b29sLiBUaGUgc2VsZWN0ZWQgZm9sZGVyIHdpbGwgY29udGFpbiB0aGUgcmVzdWx0cyBvZiB0aGUgdHJhbnNmb3JtYXRpb24uIEluIHRoaXMgY2FzZSwgbm8gcmVzdWx0IGlzIGV4cGVjdGVkLCBhcyAKCQkJCXRoZSBtYXJrZXJzIGFyZSBkaXJlY3RseSBhZGRlZCB0byB0aGUgdW1sIGZpbGUuIFdoYXRldmVyLCB5b3UgaGF2ZSB0byBjaG9vc2UgYSB2YWxpZCBmb2xkZXIuCgkJCTwvcD4KCQkJPHAgYWxpZ249ImNlbnRlciI+CgkJCQk8aW1nIHNyYz0iaW1nL3RhcmdldEZvbGRlclNlbGVjdGlvbi5QTkciIC8+CgkJCTwvcD4KCQkJPHAgYWxpZ249Imp1c3RpZnkiPgoJCQkJVGhlIGZvbGxvd2luZyBzbmFwc2hvdCBnaXZlcyBhbiBleGFtcGxlIG9mIHdoYXQgeW91IHNob3VsZCBoYXZlIGp1c3QgYmVmb3JlIGxhdW5jaGluZyB0aGUgdHJhbnNmb3JtYXRpb24uIFRoZSB0cmFuc2Zvcm1hdGlvbiBpcyBsYXVuY2hlZCB1c2luZyB0aGUgPGI+UnVuPC9iPiBidXR0b24uCgkJCTwvcD4KCQkJPHAgYWxpZ249ImNlbnRlciI+CgkJCQk8aW1nIHNyYz0iaW1nL2NvbXBsZXRlQ29uZmlndXJhdGlvbi5QTkciIC8+CgkJCTwvcD4KCQkJPHAgYWxpZ249Imp1c3RpZnkiPgoJCQkJVGhpcyByZXN1bHRpbmcgbW9kZWwgY29udGFpbnMgYWxsIHRoZSBwcm9ibGVtcyBvZiB0aGUgVU1MIG1vZGVsLgoJCQkJU28sIGlmIHRoaXMgbW9kZWwgaXMgbm90IGVtcHR5IChpLmUuIHRoZXJlIGFyZSBwcm9ibGVtcyBpbiB0aGUgVU1MIG1vZGVsKSB0aGUgcHJvYmxlbXMgd2lsbCBiZSBkaXNwbGF5ZWQgaW4gdGhlIEVjbGlwc2UgUHJvYmxlbXMgdmlldy4KCQkJPC9wPgoJCQk8cCBhbGlnbj0iY2VudGVyIj4KCQkJCTxhIGhyZWY9ImltZy9lcnJvcnNSZXBvcnRpbmcuUE5HIiA+PGltZyBzcmM9ImltZy9lcnJvcnNSZXBvcnRpbmdfc21hbGwuUE5HIiAvPjwvYT4KCQkJPC9wPgoJCQkKCQkJPGg0IFNUWUxFPSJmb250LXNpemU6IDEwcHQ7IHBhZGRpbmc6IDA7IGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjNDk0NTdDOyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiB0b3AgbGVmdDsgYmFja2dyb3VuZC1yZXBlYXQ7IHJlcGVhdC14OyI+CgkJCQk8YSBuYW1lPSJhY2tub3dsZWRnZW1lbnQiPjwvYT5BY2tub3dsZWRnZW1lbnQKCQkJPC9oND4KCgkJCTx0YWJsZSB3aWR0aD0iMTAwJSI+CgkJCQk8Q09MR1JPVVA+CgkJCQkJPENPTCB3aWR0aD0iMiUiPgoJCQkJCTxDT0wgd2lkdGg9Ijk4JSI+CgkJCQk8L0NPTEdST1VQPgoJCQkJPHRyPgoJCQkJCTx0ZD48L3RkPgoJCQkJCTx0ZD4KCQkJCQkJVGhlIHByZXNlbnQgd29yayBpcyBiZWluZyBzdXBwb3J0ZWQgYnkgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cudXNpbmUtbG9naWNpZWxsZS5vcmciPlVzaW5lIExvZ2ljaWVsbGUgcHJvamVjdCBvZiB0aGUgU3lzdGVtQHRpYyBQYXJpcyBSZWdpb24gQ2x1c3RlcjwvYT4uCgkJCQkJPC90ZD4KCQkJCTwvdHI+CgkJCTwvdGFibGU+CgkJCQoJCTwvZGl2PgoJPC9kaXY+CgoJPGRpdiBpZD0icmlnaHRjb2x1bW4iPgoJCTxkaXYgY2xhc3M9InNpZGVpdGVtIj4KCQkJPGg2PkdlbmVyYWwgSW5mb3JtYXRpb248L2g2PgoJCQk8dWw+CgkJCQk8bGkgc3R5bGU9Imxpc3Qtc3R5bGU6bm9uZSI+TWF5IDIwMDc8L2xpPgoJCQkJPGxpIHN0eWxlPSJsaXN0LXN0eWxlOm5vbmUiPkJ5IDxhIGhyZWY9Imh0dHA6Ly93d3cuc2NpZW5jZXMudW5pdi1uYW50ZXMuZnIvbGluYS9hdGwvY29udHJpYi9hbGxpbGFpcmUiPkZyZWRkeSBBbGxpbGFpcmU8L2E+IChJTlJJQSksIFLpbWkgU2NobmVrZW5idXJnZXIgKENFQSBMSVNUKTwvbGk+CgkJCQk8bGkgc3R5bGU9Imxpc3Qtc3R5bGU6bm9uZSI+PGJyIC8+UGxlYXNlLCBhc2sgeW91ciBxdWVzdGlvbnMgb24gdGhlIDxhIGhyZWY9Im5ld3M6Ly9uZXdzLmVjbGlwc2Uub3JnL2VjbGlwc2UubW9kZWxpbmcubTJtIj5NMk0gbmV3c2dyb3VwPC9hPjwvbGk+CgkJCTwvdWw+CgkJPC9kaXY+Cgk8L2Rpdj4KCQpFT0hUTUw7CgoKCSMgR2VuZXJhdGUgdGhlIHdlYiBwYWdlCgkkQXBwLT5nZW5lcmF0ZVBhZ2UoJHRoZW1lLCAkTWVudSwgJE5hdiwgJHBhZ2VBdXRob3IsICRwYWdlS2V5d29yZHMsICRwYWdlVGl0bGUsICRodG1sKTsKPz4=