PGh0bWw+CjxoZWFkPgoJPHRpdGxlPkJPT1NUX1BQX0VOVU1fVFJBSUxJTkc8L3RpdGxlPgoJPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vc3R5bGVzLmNzcyI+CjwvaGVhZD4KPGJvZHk+Cgk8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDogIDBweDsiPgoJCVRoZSA8Yj5CT09TVF9QUF9FTlVNX1RSQUlMSU5HPC9iPiBtYWNybyBnZW5lcmF0ZXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCB3aXRoIGEgbGVhZGluZyBjb21tYS4KCTwvZGl2PgoJPGg0PlVzYWdlPC9oND4KCQk8ZGl2IGNsYXNzPSJjb2RlIj4KCQkJPGI+Qk9PU1RfUFBfRU5VTV9UUkFJTElORzwvYj4oPGk+Y291bnQ8L2k+LCA8aT5tYWNybzwvaT4sIDxpPmRhdGE8L2k+KQoJCTwvZGl2PgoJPGg0PkFyZ3VtZW50czwvaDQ+CgkJPGRsPgoJCQk8ZHQ+Y291bnQ8L2R0PgoJCQk8ZGQ+CgkJCQlUaGUgbnVtYmVyIG9mIHJlcGV0aXRpb3VzIGNhbGxzIHRvIDxpPm1hY3JvPC9pPi4mbmJzcDsKCQkJCVZhbGlkIHZhbHVlcyByYW5nZSBmcm9tIDxpPjA8L2k+IHRvIDxiPkJPT1NUX1BQX0xJTUlUX1JFUEVBVDwvYj4uCgkJCTwvZGQ+CgkJCTxkdD5tYWNybzwvZHQ+CgkJCTxkZD4KCQkJCUEgdGVybmFyeSBvcGVyYXRpb24gb2YgdGhlIGZvcm0gPGk+bWFjcm88L2k+KDxpPno8L2k+LCA8aT5uPC9pPiwgPGk+ZGF0YTwvaT4pLiZuYnNwOwoJCQkJVGhpcyBtYWNybyBpcyBleHBhbmRlZCBieSA8Yj5CT09TVF9QUF9FTlVNPC9iPiB3aXRoIHRoZSBuZXh0IGF2YWlsYWJsZSByZXBldGl0aW9uIGRlcHRoLAoJCQkJdGhlIGN1cnJlbnQgcmVwZXRpdGlvbiBudW1iZXIsIGFuZCB0aGUgYXV4aWxpYXJ5IDxpPmRhdGE8L2k+IGFyZ3VtZW50LiZuYnNwOwoJCQk8L2RkPgoJCQk8ZHQ+ZGF0YTwvZHQ+CgkJCTxkZD4KCQkJCUF1eGlsaWFyeSBkYXRhIHBhc3NlZCB0byA8aT5tYWNybzwvaT4uCgkJCTwvZGQ+CgkJPC9kbD4KCTxoND5SZW1hcmtzPC9oND4KCQk8ZGl2PgoJCQlUaGlzIG1hY3JvIGV4cGFuZHMgdG8gdGhlIGNvbW1hLXNlcGFyYXRlZCBzZXF1ZW5jZToKCQkJPGRpdj4KCQkJCSwgPGk+bWFjcm88L2k+KDxpPno8L2k+LCA8aT4wPC9pPiwgPGk+ZGF0YTwvaT4pLCA8aT5tYWNybzwvaT4oPGk+ejwvaT4sIDxpPjE8L2k+LCA8aT5kYXRhPC9pPiksIC4uLiA8aT5tYWNybzwvaT4oPGk+ejwvaT4sIDxpPmNvdW50PC9pPiAtIDxpPjE8L2k+LCA8aT5kYXRhPC9pPikKCQkJPC9kaXY+CgkJPC9kaXY+CgkJPGRpdj4KCQkJVGhlIDxpPno8L2k+IHZhbHVlIHRoYXQgaXMgcGFzc2VkIHRvIDxpPm1hY3JvPC9pPiByZXByZXNlbnRzIHRoZSBuZXh0IGF2YWlsYWJsZSByZXBldGl0aW9uIGRpbWVuc2lvbi4mbmJzcDsKCQkJT3RoZXIgbWFjcm9zIHRoYXQgaGF2ZSA8Yj5fWjwvYj4gc3VmZml4IHZhcmlhbnRzIGludGVybmFsbHkgdXNlIDxiPkJPT1NUX1BQX1JFUEVBVDwvYj4tLWZvciBleGFtcGxlLCA8Yj5CT09TVF9QUF9FTlVNX1BBUkFNUzwvYj4gYW5kIDxiPkJPT1NUX1BQX0VOVU1fUEFSQU1TX1o8L2I+LiZuYnNwOwoJCQlVc2luZyB0aGVzZSA8Yj5fWjwvYj4gdmVyc2lvbnMgaXMgbm90IHN0cmljdGx5IG5lY2Vzc2FyeSwgYnV0IHBhc3NpbmcgdGhlIDxpPno8L2k+IHZhbHVlICh0aGF0IGlzIHBhc3NlZCB0byA8aT5tYWNybzwvaT4pIHRvIHRoZXNlIG1hY3JvcyBhbGxvd3MgdGhlbSB0byByZWVudGVyIDxiPkJPT1NUX1BQX1JFUEVBVDwvYj4gd2l0aCBtYXhpbXVtIGVmZmljaWVuY3kuCgkJPC9kaXY+CgkJPGRpdj4KCQkJVG8gZGlyZWN0bHkgdXNlIHRoaXMgPGk+ejwvaT4gdmFsdWUsIHJhdGhlciB0aGFuIHNpbXBseSBwYXNzaW5nIGl0IHRvIGFub3RoZXIgbWFjcm8sIHNlZSA8Yj5CT09TVF9QUF9FTlVNX1RSQUlMSU5HXzxpPno8L2k+PC9iPi4KCQk8L2Rpdj4KCTxoND5TZWUgQWxzbzwvaDQ+CgkJPHVsPgoJCQk8bGk+PGEgaHJlZj0iZW51bV90cmFpbGluZ196Lmh0bWwiPkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfPGk+ejwvaT48L2E+PC9saT4KCQkJPGxpPjxhIGhyZWY9ImxpbWl0X3JlcGVhdC5odG1sIj5CT09TVF9QUF9MSU1JVF9SRVBFQVQ8L2E+PC9saT4KCQk8L3VsPgoJPGg0PlJlcXVpcmVtZW50czwvaDQ+CgkJPGRpdj4KCQkJPGI+SGVhZGVyOjwvYj4gJm5ic3A7PGEgaHJlZj0iLi4vaGVhZGVycy9yZXBldGl0aW9uL2VudW1fdHJhaWxpbmcuaHRtbCI+Jmx0O2Jvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fdHJhaWxpbmcuaHBwJmd0OzwvYT4KCQk8L2Rpdj4KCTxoND5TYW1wbGUgQ29kZTwvaDQ+CjxkaXY+PHByZT4KI2luY2x1ZGUgJmx0OzxhIGhyZWY9Ii4uL2hlYWRlcnMvcmVwZXRpdGlvbi9lbnVtX3RyYWlsaW5nLmh0bWwiPmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fdHJhaWxpbmcuaHBwPC9hPiZndDsKCiNkZWZpbmUgVEVYVCh6LCBuLCB0ZXh0KSB0ZXh0Cgp0ZW1wbGF0ZSZsdDtjbGFzcyA8YSBocmVmPSJlbnVtX3RyYWlsaW5nLmh0bWwiPkJPT1NUX1BQX0VOVU1fVFJBSUxJTkc8L2E+KDMsIFRFWFQsIGNsYXNzKSZndDsKY2xhc3MgWCB7IH07Ci8qCiAgIGV4cGFuZHMgdG8uLi4KCnRlbXBsYXRlJmx0O2NsYXNzLCBjbGFzcywgY2xhc3MsIGNsYXNzJmd0OwpjbGFzcyBYIHsgfTsKKi8KPC9wcmU+PC9kaXY+Cgk8aHIgc2l6ZT0iMSI+Cgk8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDogMHB4OyI+CgkJPGk+qSBDb3B5cmlnaHQgPGEgaHJlZj0iaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20iIHRhcmdldD0iX3RvcCI+SG91c2VtYXJxdWUgT3k8L2E+IDIwMDI8L2k+CgkJPC9icj48aT6pIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMjwvaT4KCTwvZGl2PgoJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDBweDsiPgoJCTxwPjxzbWFsbD5EaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKCQlhY2NvbXBhbnlpbmcgZmlsZSA8YSBocmVmPSIuLi8uLi8uLi8uLi9MSUNFTlNFXzFfMC50eHQiPkxJQ0VOU0VfMV8wLnR4dDwvYT4gb3IKCQljb3B5IGF0IDxhIGhyZWY9CgkJImh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCI+d3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQ8L2E+KTwvc21hbGw+PC9wPgoJPC9kaXY+CjwvYm9keT4KPC9odG1sPgo=