PGh0bWw+Cgk8aGVhZD4KCQk8dGl0bGU+Qk9PU1RfUFBfU0VRX0VMRU08L3RpdGxlPgoJCTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3N0eWxlcy5jc3MiPgoJPC9oZWFkPgoJPGJvZHk+CgkJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6ICAwcHg7Ij4KCQkJVGhlIDxiPkJPT1NUX1BQX1NFUV9FTEVNPC9iPiBtYWNybyBleHRyYWN0cyBhbiBlbGVtZW50IGZyb20gYSA8aT5zZXE8L2k+LgoJCTwvZGl2PgoJCTxoND4KCQkJVXNhZ2UKCQk8L2g0PgoJCTxkaXYgY2xhc3M9ImNvZGUiPgoJCQk8Yj5CT09TVF9QUF9TRVFfRUxFTTwvYj4oPGk+aTwvaT4sIDxpPmxpc3Q8L2k+KQoJCTwvZGl2PgoJCTxoND4KCQkJQXJndW1lbnRzCgkJPC9oND4KCQk8ZGw+CgkJCTxkdD5pPC9kdD4KCQkJPGRkPgoJCQkJVGhlIHplcm8tYmFzZWQgaW5kZXggb2YgdGhlIGVsZW1lbnQgdG8gYmUgZXh0cmFjdGVkLgoJCQk8L2RkPgoJCQk8ZHQ+c2VxPC9kdD4KCQkJPGRkPgoJCQkJVGhlIDxpPnNlcTwvaT4gZnJvbSB3aGljaCBhbiBlbGVtZW50IGlzIHRvIGJlIGV4dHJhY3RlZC4KCQkJPC9kZD4KCQk8L2RsPgoJCTxoND4KCQkJUmVtYXJrcwoJCTwvaDQ+CgkJPGRpdj4KCQkJVGhlIGluZGV4IDxpPmk8L2k+IG11c3QgYmUgaW4gdGhlIHJhbmdlIG9mIDxpPjA8L2k+IHRvIDxiPkJPT1NUX1BQX1NFUV9TSVpFPC9iPig8aT5zZXE8L2k+KSAKCQkJLSA8aT4xPC9pPi4KCQk8L2Rpdj4KCQk8aDQ+CgkJCVJlcXVpcmVtZW50cwoJCTwvaDQ+CgkJPGRpdj4KCQkJPGI+SGVhZGVyOjwvYj4gJm5ic3A7PGEgaHJlZj0iLi4vaGVhZGVycy9zZXEvZWxlbS5odG1sIj4mbHQ7Ym9vc3QvcHJlcHJvY2Vzc29yL3NlcS9lbGVtLmhwcCZndDs8L2E+CgkJPC9kaXY+CgkJPGg0PgoJCQlTYW1wbGUgQ29kZQoJCTwvaDQ+CgkJPGRpdj4KCQkJPHByZT4KI2luY2x1ZGUgJmx0OzxhIGhyZWY9Ii4uL2hlYWRlcnMvc2VxL2VsZW0uaHRtbCI+Ym9vc3QvcHJlcHJvY2Vzc29yL3NlcS9lbGVtLmhwcDwvYT4mZ3Q7Cgo8YSBocmVmPSJzZXFfZWxlbS5odG1sIj5CT09TVF9QUF9TRVFfRUxFTTwvYT4oMSwgKGEpKGIpKGMpKSAvLyBleHBhbmRzIHRvIGIKCiNkZWZpbmUgU0VRIFwKICAgKDApKDEpKDIpKDMpKDQpKDUpKDYpKDcpKDgpKDkpIFwKICAgKDEwKSgxMSkoMTIpKDEzKSgxNCkoMTUpKDE2KSgxNykoMTgpKDE5KSBcCiAgICgyMCkoMjEpKDIyKSgyMykoMjQpKDI1KSgyNikoMjcpKDI4KSgyOSkgXAogICAoMzApKDMxKSgzMikoMzMpKDM0KSgzNSkoMzYpKDM3KSgzOCkoMzkpIFwKICAgKDQwKSg0MSkoNDIpKDQzKSg0NCkoNDUpKDQ2KSg0NykoNDgpKDQ5KSBcCiAgICg1MCkoNTEpKDUyKSg1MykoNTQpKDU1KSg1NikoNTcpKDU4KSg1OSkgXAogICAoNjApKDYxKSg2MikoNjMpKDY0KSg2NSkoNjYpKDY3KSg2OCkoNjkpIFwKICAgKDcwKSg3MSkoNzIpKDczKSg3NCkoNzUpKDc2KSg3NykoNzgpKDc5KSBcCiAgICg4MCkoODEpKDgyKSg4MykoODQpKDg1KSg4NikoODcpKDg4KSg4OSkgXAogICAoOTApKDkxKSg5MikoOTMpKDk0KSg5NSkoOTYpKDk3KSg5OCkoOTkpIFwKICAgLyoqLwoKPGEgaHJlZj0ic2VxX2VsZW0uaHRtbCI+Qk9PU1RfUFBfU0VRX0VMRU08L2E+KDg4LCBTRVEpIC8vIGV4cGFuZHMgdG8gODgKPC9wcmU+CgkJPC9kaXY+Cgk8aHIgc2l6ZT0iMSI+Cgk8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDogMHB4OyI+CgkJPGk+qSBDb3B5cmlnaHQgPGEgaHJlZj0iaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20iIHRhcmdldD0iX3RvcCI+SG91c2VtYXJxdWUgT3k8L2E+IDIwMDI8L2k+CgkJPC9icj48aT6pIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMjwvaT4KCTwvZGl2PgoJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDBweDsiPgoJCTxwPjxzbWFsbD5EaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKCQlhY2NvbXBhbnlpbmcgZmlsZSA8YSBocmVmPSIuLi8uLi8uLi8uLi9MSUNFTlNFXzFfMC50eHQiPkxJQ0VOU0VfMV8wLnR4dDwvYT4gb3IKCQljb3B5IGF0IDxhIGhyZWY9CgkJImh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCI+d3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQ8L2E+KTwvc21hbGw+PC9wPgoJPC9kaXY+Cgk8L2JvZHk+CjwvaHRtbD4K