PGh0bWw+CjxoZWFkPgoJPHRpdGxlPkJPT1NUX1BQX0xJU1RfVFJBTlNGT1JNPC90aXRsZT4KCTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3N0eWxlcy5jc3MiPgo8L2hlYWQ+Cjxib2R5PgoJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6ICAwcHg7Ij4KCQlUaGUgPGI+Qk9PU1RfUFBfTElTVF9UUkFOU0ZPUk08L2I+IG1hY3JvIHRyYW5zZm9ybXMgZWFjaCBlbGVtZW50IGluIGEgPGk+bGlzdDwvaT4gYWNjb3JkaW5nIHRvIGEgc3VwcGxpZWQgdHJhbnNmb3JtYXRpb24uCgk8L2Rpdj4KCTxoND5Vc2FnZTwvaDQ+CgkJPGRpdiBjbGFzcz0iY29kZSI+CgkJCTxiPkJPT1NUX1BQX0xJU1RfVFJBTlNGT1JNPC9iPig8aT5vcDwvaT4sIDxpPmRhdGE8L2k+LCA8aT5saXN0PC9pPikKCQk8L2Rpdj4KCTxoND5Bcmd1bWVudHM8L2g0PgoJCTxkbD4KCQkJPGR0Pm9wPC9kdD4KCQkJPGRkPgoJCQkJQSB0ZXJuYXJ5IHByZWRpY2F0ZSBvZiB0aGUgZm9ybSA8aT5vcDwvaT4oPGk+ZDwvaT4sIDxpPmRhdGE8L2k+LCA8aT5lbGVtPC9pPikuJm5ic3A7CgkJCQlUaGlzIHRyYW5zZm9ybWF0aW9uIGlzIGV4cGFuZGVkIGJ5IDxiPkJPT1NUX1BQX0xJU1RfVFJBTlNGT1JNPC9iPiBmb3IgZWFjaCBlbGVtZW50IGluIDxpPmxpc3Q8L2k+IHdpdGggdGhlIG5leHQgYXZhaWxhYmxlIDxiPkJPT1NUX1BQX1dISUxFPC9iPiBpdGVyYXRpb24sCgkJCQl0aGUgYXV4aWxpYXJ5IDxpPmRhdGE8L2k+LCBhbmQgdGhlIGN1cnJlbnQgZWxlbWVudCBpbiA8aT5saXN0PC9pPi4mbmJzcDsKCQkJPC9kZD4KCQkJPGR0PmRhdGE8L2R0PgoJCQk8ZGQ+CgkJCQlBdXhpbGlhcnkgZGF0YSBwYXNzZWQgdG8gPGk+cHJlZDwvaT4uCgkJCTwvZGQ+CgkJCTxkdD5saXN0PC9kdD4KCQkJPGRkPgoJCQkJVGhlIDxpPmxpc3Q8L2k+IHRvIGJlIHRyYW5zZm9ybWVkLgoJCQk8L2RkPgoJCTwvZGw+Cgk8aDQ+UmVtYXJrczwvaDQ+CgkJPGRpdj4KCQkJVGhpcyBtYWNybyBleHBhbmRzIDxpPm9wPC9pPiBmb3IgZWFjaCBlbGVtZW50IGluIDxpPmxpc3Q8L2k+LiZuYnNwOwoJCQlJdCBidWlsZHMgYSBuZXcgPGk+bGlzdDwvaT4gb3V0IG9mIHRoZSByZXN1bHRzIG9mIGVhY2ggY2FsbC4mbmJzcDsKCQkJSWYsIGZvciBleGFtcGxlLCA8aT5saXN0PC9pPiBpcyAoPGk+YTwvaT4sICg8aT5iPC9pPiwgKDxpPmM8L2k+LCA8Yj5CT09TVF9QUF9OSUw8L2I+KSkpLAoJCQl0aGlzIG1hY3JvIGV4cGFuZHMgdG8uLi4KCQkJPGRpdj4KCQkJCSg8aT5vcDwvaT4oPGk+ZDwvaT4sIDxpPmRhdGE8L2k+LCA8aT5hPC9pPiksICg8aT5vcDwvaT4oPGk+ZDwvaT4sIDxpPmRhdGE8L2k+LCA8aT5iPC9pPiksICg8aT5vcDwvaT4oPGk+ZDwvaT4sIDxpPmRhdGE8L2k+LCA8aT5jPC9pPiksIDxiPkJPT1NUX1BQX05JTDwvYj4pKSkKCQkJPC9kaXY+CgkJPC9kaXY+CgkJPGRpdj4KCQkJUHJldmlvdXNseSwgdGhpcyBtYWNybyBjb3VsZCBub3QgYmUgdXNlZCBpbnNpZGUgPGI+Qk9PU1RfUFBfV0hJTEU8L2I+LiZuYnNwOwoJCQlUaGVyZSBpcyBubyBsb25nZXIgYW55IHN1Y2ggcmVzdHJpY3Rpb24uJm5ic3A7CgkJCUl0IGlzIG1vcmUgZWZmaWNpZW50LCBob3dldmVyLCB0byB1c2UgPGI+Qk9PU1RfUFBfTElTVF9UUkFOU0ZPUk1fRDwvYj4gaW4gc3VjaCBhIHNpdHVhdGlvbi4KCQk8L2Rpdj4KCTxoND5TZWUgQWxzbzwvaDQ+CgkJPHVsPgoJCQk8bGk+PGEgaHJlZj0ibGlzdF90cmFuc2Zvcm1fZC5odG1sIj5CT09TVF9QUF9MSVNUX1RSQU5TRk9STV9EPC9hPjwvbGk+CgkJPC91bD4KCTxoND5SZXF1aXJlbWVudHM8L2g0PgoJCTxkaXY+CgkJCTxiPkhlYWRlcjo8L2I+ICZuYnNwOzxhIGhyZWY9Ii4uL2hlYWRlcnMvbGlzdC90cmFuc2Zvcm0uaHRtbCI+Jmx0O2Jvb3N0L3ByZXByb2Nlc3Nvci9saXN0L3RyYW5zZm9ybS5ocHAmZ3Q7PC9hPgoJCTwvZGl2PgoJPGg0PlNhbXBsZSBDb2RlPC9oND4KPGRpdj48cHJlPgojaW5jbHVkZSAmbHQ7PGEgaHJlZj0iLi4vaGVhZGVycy9hcml0aG1ldGljL2RlYy5odG1sIj5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9kZWMuaHBwPC9hPiZndDsKI2luY2x1ZGUgJmx0OzxhIGhyZWY9Ii4uL2hlYWRlcnMvbGlzdC90cmFuc2Zvcm0uaHRtbCI+Ym9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvdHJhbnNmb3JtLmhwcDwvYT4mZ3Q7CgojZGVmaW5lIExJU1QgKDEsICgzLCAoMiwgKDUsIDxhIGhyZWY9Im5pbC5odG1sIj5CT09TVF9QUF9OSUw8L2E+KSkpKQoKI2RlZmluZSBPUChkLCBkYXRhLCBlbGVtKSA8YSBocmVmPSJkZWMuaHRtbCI+Qk9PU1RfUFBfREVDPC9hPihlbGVtKQoKPGEgaHJlZj0ibGlzdF90cmFuc2Zvcm0uaHRtbCI+Qk9PU1RfUFBfTElTVF9UUkFOU0ZPUk08L2E+KE9QLCAzLCBMSVNUKQogICAvLyBleHBhbmRzIHRvICgwLCAoMiwgKDEsICg0LCA8YSBocmVmPSJuaWwuaHRtbCI+Qk9PU1RfUFBfTklMPC9hPikpKSkKPC9wcmU+PC9kaXY+Cgk8aHIgc2l6ZT0iMSI+Cgk8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDogMHB4OyI+CgkJPGk+qSBDb3B5cmlnaHQgPGEgaHJlZj0iaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20iIHRhcmdldD0iX3RvcCI+SG91c2VtYXJxdWUgT3k8L2E+IDIwMDI8L2k+CgkJPC9icj48aT6pIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMjwvaT4KCTwvZGl2PgoJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDBweDsiPgoJCTxwPjxzbWFsbD5EaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKCQlhY2NvbXBhbnlpbmcgZmlsZSA8YSBocmVmPSIuLi8uLi8uLi8uLi9MSUNFTlNFXzFfMC50eHQiPkxJQ0VOU0VfMV8wLnR4dDwvYT4gb3IKCQljb3B5IGF0IDxhIGhyZWY9CgkJImh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCI+d3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQ8L2E+KTwvc21hbGw+PC9wPgoJPC9kaXY+CjwvYm9keT4KPC9odG1sPgo=