PGh0bWw+CjxoZWFkPgoJPHRpdGxlPkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfejwvdGl0bGU+Cgk8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi9zdHlsZXMuY3NzIj4KPC9oZWFkPgo8Ym9keT4KCTxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OiAgMHB4OyI+CgkJVGhlIDxiPkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfPGk+ejwvaT48L2I+IG1hY3JvIHJlcHJlc2VudHMgYSByZWVudHJ5IGludG8gdGhlIDxiPkJPT1NUX1BQX0VOVU1fVFJBSUxJTkc8L2I+IHJlcGV0aXRpb24gY29uc3RydWN0LgoJPC9kaXY+Cgk8aDQ+VXNhZ2U8L2g0PgoJCTxkaXYgY2xhc3M9ImNvZGUiPgoJCQk8Yj5CT09TVF9QUF9FTlVNX1RSQUlMSU5HXzwvYj4gIyMgPGk+ejwvaT4oPGk+Y291bnQ8L2k+LCA8aT5tYWNybzwvaT4sIDxpPmRhdGE8L2k+KQoJCTwvZGl2PgoJPGg0PkFyZ3VtZW50czwvaDQ+CgkJPGRsPgoJCQk8ZHQ+ejwvZHQ+CgkJCTxkZD4KCQkJCVRoZSBuZXh0IGF2YWlsYWJsZSA8Yj5CT09TVF9QUF9SRVBFQVQ8L2I+IGRpbWVuc2lvbi4KCQkJPC9kZD4KCQkJPGR0PmNvdW50PC9kdD4KCQkJPGRkPgoJCQkJVGhlIG51bWJlciBvZiByZXBldGl0aW91cyBjYWxscyB0byA8aT5tYWNybzwvaT4uJm5ic3A7CgkJCQlWYWxpZCB2YWx1ZXMgcmFuZ2UgZnJvbSA8aT4wPC9pPiB0byA8Yj5CT09TVF9QUF9MSU1JVF9SRVBFQVQ8L2I+LgoJCQk8L2RkPgoJCQk8ZHQ+bWFjcm88L2R0PgoJCQk8ZGQ+CgkJCQlBIHRlcm5hcnkgb3BlcmF0aW9uIG9mIHRoZSBmb3JtIDxpPm1hY3JvPC9pPig8aT56PC9pPiwgPGk+bjwvaT4sIDxpPmRhdGE8L2k+KS4mbmJzcDsKCQkJCVRoaXMgbWFjcm8gaXMgZXhwYW5kZWQgYnkgPGI+Qk9PU1RfUFBfRU5VTTwvYj4gd2l0aCB0aGUgbmV4dCBhdmFpbGFibGUgcmVwZXRpdGlvbiBkZXB0aCwKCQkJCXRoZSBjdXJyZW50IHJlcGV0aXRpb24gbnVtYmVyLCBhbmQgdGhlIGF1eGlsaWFyeSA8aT5kYXRhPC9pPiBhcmd1bWVudC4mbmJzcDsKCQkJPC9kZD4KCQkJPGR0PmRhdGE8L2R0PgoJCQk8ZGQ+CgkJCQlBdXhpbGlhcnkgZGF0YSBwYXNzZWQgdG8gPGk+bWFjcm88L2k+LgoJCQk8L2RkPgoJCTwvZGw+Cgk8aDQ+UmVtYXJrczwvaDQ+CgkJPGRpdj4KCQkJVGhpcyBtYWNybyBleHBhbmRzIHRvIHRoZSBzZXF1ZW5jZToKCQkJPGRpdj4KCQkJCSwgPGk+bWFjcm88L2k+KDxpPno8L2k+LCA8aT4wPC9pPiwgPGk+ZGF0YTwvaT4pLCA8aT5tYWNybzwvaT4oPGk+ejwvaT4sIDxpPjE8L2k+LCA8aT5kYXRhPC9pPiksIC4uLiA8aT5tYWNybzwvaT4oPGk+ejwvaT4sIDxpPmNvdW50PC9pPiAtIDxpPjE8L2k+LCA8aT5kYXRhPC9pPikKCQkJPC9kaXY+CgkJPC9kaXY+CgkJPGRpdj4KCQkJQXQgY2VydGFpbiB0aW1lcywgaXQgbWF5IGJlIG5lY2Vzc2FyeSB0byBwZXJmb3JtIHRoZSBjb25jYXRlbmF0aW9uIHdpdGggPGI+Qk9PU1RfUFBfQ0FUPC9iPiByYXRoZXIgdGhhbiB0aGUgcHJlcHJvY2Vzc29yIHRva2VuLXBhc3Rpbmcgb3BlcmF0b3IuJm5ic3A7CgkJCVRoaXMgaGFwcGVucyB3aGVuIHRoZSA8aT56PC9pPiB2YWx1ZSBpcyBhIG1hY3JvIGludm9jYXRpb24gaXRzZWxmLiZuYnNwOwoJCQlJdCBuZWVkcyBhIGRlbGF5IHRvIGFsbG93IGl0IHRvIGV4cGFuZC4mbmJzcDsKCQkJVGhlIHN5bnRheCBpbiBzdWNoIGEgc2NlbmFyaW8gYmVjb21lczoKCQkJPGRpdj4KCQkJCTxiPkJPT1NUX1BQX0NBVDwvYj4oPGI+Qk9PU1RfUFBfRU5VTV9UUkFJTElOR188L2I+LCA8aT56PC9pPikoPGk+Y291bnQ8L2k+LCA8aT5tYWNybzwvaT4sIDxpPmRhdGE8L2k+KQoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTxoND5TZWUgQWxzbzwvaDQ+CgkJPHVsPgoJCQk8bGk+PGEgaHJlZj0iY2F0Lmh0bWwiPkJPT1NUX1BQX0NBVDwvYT48L2xpPgoJCQk8bGk+PGEgaHJlZj0iZW51bV90cmFpbGluZy5odG1sIj5CT09TVF9QUF9FTlVNX1RSQUlMSU5HPC9hPjwvbGk+CgkJCTxsaT48YSBocmVmPSJsaW1pdF9yZXBlYXQuaHRtbCI+Qk9PU1RfUFBfTElNSVRfUkVQRUFUPC9hPjwvbGk+CgkJPC91bD4KCTxoND5SZXF1aXJlbWVudHM8L2g0PgoJCTxkaXY+CgkJCTxiPkhlYWRlcjo8L2I+ICZuYnNwOzxhIGhyZWY9Ii4uL2hlYWRlcnMvcmVwZXRpdGlvbi9lbnVtX3RyYWlsaW5nLmh0bWwiPiZsdDtib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3RyYWlsaW5nLmhwcCZndDs8L2E+CgkJPC9kaXY+Cgk8aDQ+U2FtcGxlIENvZGU8L2g0Pgo8ZGl2PjxwcmU+CiNpbmNsdWRlICZsdDs8YSBocmVmPSIuLi9oZWFkZXJzL3JlcGV0aXRpb24vZW51bS5odG1sIj5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtLmhwcDwvYT4mZ3Q7CiNpbmNsdWRlICZsdDs8YSBocmVmPSIuLi9oZWFkZXJzL3JlcGV0aXRpb24vZW51bV90cmFpbGluZy5odG1sIj5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3RyYWlsaW5nLmhwcDwvYT4mZ3Q7CgojZGVmaW5lIFRFWFQoeiwgbiwgdGV4dCkgdGV4dAoKI2RlZmluZSBUVFAoeiwgbiwgXykgXAogICB0ZW1wbGF0ZSZsdDsgXAogICAgICBjbGFzcyA8YSBocmVmPSJlbnVtX3ouaHRtbCI+Qk9PU1RfUFBfRU5VTV9UUkFJTElOR188L2E+ICMjIHoobiwgVEVYVCwgY2xhc3MpIFwKICAgJmd0OyBcCiAgIGNsYXNzIFQgIyMgbiBcCiAgIC8qKi8KCjxhIGhyZWY9ImVudW0uaHRtbCI+Qk9PU1RfUFBfRU5VTTwvYT4oMywgVFRQLCBuaWwpCiAgIC8qCiAgICAgIGV4cGFuZHMgdG8uLi4KICAgICAgdGVtcGxhdGUmbHQ7Y2xhc3MmZ3Q7IGNsYXNzIFQwLAogICAgICB0ZW1wbGF0ZSZsdDtjbGFzcywgY2xhc3MmZ3Q7IGNsYXNzIFQxLAogICAgICB0ZW1wbGF0ZSZsdDtjbGFzcywgY2xhc3MsIGNsYXNzJmd0OyBjbGFzcyBUMgogICAqLwo8L3ByZT48L2Rpdj4KCTxociBzaXplPSIxIj4KCTxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwcHg7Ij4KCQk8aT6pIENvcHlyaWdodCA8YSBocmVmPSJodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbSIgdGFyZ2V0PSJfdG9wIj5Ib3VzZW1hcnF1ZSBPeTwvYT4gMjAwMjwvaT4KCQk8L2JyPjxpPqkgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyPC9pPgoJPC9kaXY+Cgk8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDogMHB4OyI+CgkJPHA+PHNtYWxsPkRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQoJCWFjY29tcGFueWluZyBmaWxlIDxhIGhyZWY9Ii4uLy4uLy4uLy4uL0xJQ0VOU0VfMV8wLnR4dCI+TElDRU5TRV8xXzAudHh0PC9hPiBvcgoJCWNvcHkgYXQgPGEgaHJlZj0KCQkiaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ij53d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dDwvYT4pPC9zbWFsbD48L3A+Cgk8L2Rpdj4KPC9ib2R5Pgo8L2h0bWw+Cg==