PGh0bWw+Cgk8aGVhZD4KCQk8dGl0bGU+c2VxdWVuY2VzLmh0bWw8L3RpdGxlPgoJCTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3N0eWxlcy5jc3MiPgoJPC9oZWFkPgoJPGJvZHk+CgkJPGg0PgoJCQlTZXF1ZW5jZXMKCQk8L2g0PgoJCTxkaXY+CgkJCUEgPGk+c2VxdWVuY2U8L2k+IChhYmJyZXZpYXRlZCB0byA8aT5zZXE8L2k+KSBpcyBhIGdyb3VwIG9mIGFkamFjZW50IHBhcmVudGhlc2l6ZWQgZWxlbWVudHMuIEZvciBleGFtcGxlLAoJCTwvZGl2PgoJCTxkaXYgY2xhc3M9ImNvZGUiPgoJCQkoPGk+YTwvaT4pKDxpPmI8L2k+KSg8aT5jPC9pPikKCQk8L2Rpdj4KCQk8ZGl2PgoJCQkuLi5pcyBhIDxpPnNlcTwvaT4gb2YgPGk+MzwvaT4gZWxlbWVudHMtLTxpPmE8L2k+LCA8aT5iPC9pPiwgYW5kIDxpPmM8L2k+LgoJCTwvZGl2PgoJCTxkaXY+CgkJCTxpPlNlcXVlbmNlczwvaT4gYXJlIGRhdGEgc3RydWN0dXJlcyB0aGF0IG1lcmdlIHRoZSBwcm9wZXJ0aWVzIG9mIGJvdGggPGk+bGlzdHM8L2k+IGFuZAoJCQk8aT50dXBsZXM8L2k+IHdpdGggdGhlIGV4Y2VwdGlvbiB0aGF0IGEgPGk+c2VxPC9pPiBjYW5ub3QgYmUgZW1wdHkuJm5ic3A7IAoJCQlUaGVyZWZvcmUsIGFuICJlbXB0eSIgPGk+c2VxPC9pPiBpcyBjb25zaWRlcmVkIGEgc3BlY2lhbCBjYXNlIHNjZW5hcmlvIHRoYXQgCgkJCW11c3QgYmUgaGFuZGxlZCBzZXBhcmF0ZWx5IGluIEMrKy4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJjb2RlIj4KCQkJPHByZT4KI2RlZmluZSBTRVEgKHgpKHkpKHopCiNkZWZpbmUgUkVWRVJTRShzLCBzdGF0ZSwgZWxlbSkgKGVsZW0pIHN0YXRlCiAgIC8vIGFwcGVuZCB0byBoZWFkICAgICAgICAgICAgICAgICAgXgoKQk9PU1RfUFBfU0VRX0ZPTERfTEVGVChSRVZFUlNFLCBCT09TVF9QUF9FTVBUWSwgU0VRKSgpCiAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIzEgICAgICAgICAgICAgICAgICAjMgogICAvLyAxKSBwbGFjZWhvbGRlciBmb3IgImVtcHR5IiBzZXEKICAgLy8gMikgcmVtb3ZlIHBsYWNlaG9sZGVyCgojZGVmaW5lIFNFUV9CICgxKSgyKSgzKQojZGVmaW5lIElOQyhzLCBzdGF0ZSwgZWxlbSkgc3RhdGUgKEJPT1NUX1BQX0lOQyhlbGVtKSkKICAgLy8gYXBwZW5kIHRvIHRhaWwgICAgICAgICAgICAgXgoKQk9PU1RfUFBfU0VRX0ZPTERfUklHSFQoSU5DLCBCT09TVF9QUF9TRVFfTklMLCBTRVEpCiAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgXgogICAvLyBzcGVjaWFsIHBsYWNlaG9sZGVyIHRoYXQgd2lsbCBiZSAiZWF0ZW4iCiAgIC8vIGJ5IGFwcGVuZGluZyB0byB0aGUgdGFpbAo8L3ByZT4KCQk8L2Rpdj4KCQk8ZGl2PgoJCQk8aT5TZXF1ZW5jZXM8L2k+IGFyZSBleHRyZW1lbHkgZWZmaWNpZW50LiZuYnNwOyBFbGVtZW50IGFjY2VzcyBzcGVlZCBhcHByb2FjaGVzIAoJCQlyYW5kb20gYWNjZXNzLS1ldmVuIHdpdGggPGk+c2VxczwvaT4gb2YgdXAgdG8gPGk+MjU2PC9pPiBlbGVtZW50cy4mbmJzcDsgVGhpcyAKCQkJaXMgYmVjYXVzZSBlbGVtZW50IGFjY2VzcyAoYW1vbmcgb3RoZXIgdGhpbmdzKSBpcyBpbXBsZW1lbnRlZCBpdGVyYXRpdmVseSAKCQkJcmF0aGVyIHRoYW4gcmVjdXJzaXZlbHkuJm5ic3A7IFRoZXJlZm9yZSwgZWxlbWVudHMgY2FuIGJlIGFjY2Vzc2VkIGF0IGV4dHJlbWVseSAKCQkJaGlnaCBpbmRpY2VzIGV2ZW4gb24gcHJlcHJvY2Vzc29ycyB3aXRoIGxvdyBtYXhpbXVtIGV4cGFuc2lvbiBkZXB0aHMuCgkJPC9kaXY+CgkJPGRpdj4KCQkJRWxlbWVudHMgb2YgYSA8aT5zZXE8L2k+IGNhbiBiZSBleHRyYWN0ZWQgd2l0aCA8Yj5CT09TVF9QUF9TRVFfRUxFTTwvYj4uCgkJPC9kaXY+CgkJPGg0PgoJCQlQcmltaXRpdmVzCgkJPC9oND4KCQk8dWw+CgkJCTxsaT4KCQkJCTxhIGhyZWY9Ii4uL3JlZi9zZXFfZWxlbS5odG1sIj5CT09TVF9QUF9TRVFfRUxFTTwvYT48L2xpPgoJCTwvdWw+Cgk8aHIgc2l6ZT0iMSI+Cgk8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDogMHB4OyI+CgkJPGk+qSBDb3B5cmlnaHQgPGEgaHJlZj0iaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20iIHRhcmdldD0iX3RvcCI+SG91c2VtYXJxdWUgT3k8L2E+IDIwMDI8L2k+CgkJPC9icj48aT6pIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMjwvaT4KCTwvZGl2PgoJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDBweDsiPgoJCTxwPjxzbWFsbD5EaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKCQlhY2NvbXBhbnlpbmcgZmlsZSA8YSBocmVmPSIuLi8uLi8uLi8uLi9MSUNFTlNFXzFfMC50eHQiPkxJQ0VOU0VfMV8wLnR4dDwvYT4gb3IKCQljb3B5IGF0IDxhIGhyZWY9CgkJImh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCI+d3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQ8L2E+KTwvc21hbGw+PC9wPgoJPC9kaXY+Cgk8L2JvZHk+CjwvaHRtbD4K