PGh0bWw+CjxoZWFkPgoJPHRpdGxlPkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9EPC90aXRsZT4KCTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3N0eWxlcy5jc3MiPgo8L2hlYWQ+Cjxib2R5PgoJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6ICAwcHg7Ij4KCQlUaGUgPGI+Qk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0Q8L2I+IG1hY3JvIGZvbGRzIChvciBhY2N1bXVsYXRlcykgdGhlIGVsZW1lbnRzIG9mIGEgPGk+bGlzdDwvaT4gcmlnaHQtdG8tbGVmdC4mbmJzcDsKCQlJdCByZWVudGVycyA8Yj5CT09TVF9QUF9XSElMRTwvYj4gd2l0aCBtYXhpbXVtIGVmZmljaWVuY3kuCgk8L2Rpdj4KCTxoND5Vc2FnZTwvaDQ+CgkJPGRpdiBjbGFzcz0iY29kZSI+CgkJCTxiPkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9EPC9iPig8aT5kPC9pPiwgPGk+b3A8L2k+LCA8aT5zdGF0ZTwvaT4sIDxpPmxpc3Q8L2k+KQoJCTwvZGl2PgoJPGg0PkFyZ3VtZW50czwvaDQ+CgkJPGRsPgoJCQk8ZHQ+ZDwvZHQ+CgkJCTxkZD4KCQkJCVRoZSBuZXh0IGF2YWlsYWJsZSA8Yj5CT09TVF9QUF9XSElMRTwvYj4gaXRlcmF0aW9uLgoJCQk8L2RkPgoJCQk8ZHQ+b3A8L2R0PgoJCQk8ZGQ+CgkJCQlBIHRlcm5hcnkgb3BlcmF0aW9uIG9mIHRoZSBmb3JtIDxpPm9wPC9pPig8aT5kPC9pPiwgPGk+c3RhdGU8L2k+LCA8aT5lbGVtPC9pPikuJm5ic3A7CgkJCQlUaGlzIG1hY3JvIGlzIGNhbGxlZCBmb3IgZWFjaCBlbGVtZW50IGluIDxpPmxpc3Q8L2k+LS1lYWNoIHRpbWUgcmV0dXJuaW5nIGEgbmV3IDxpPnN0YXRlPC9pPi4mbmJzcDsKCQkJCVRoaXMgb3BlcmF0aW9uIGlzIGV4cGFuZGVkIGJ5IDxiPkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVDwvYj4gd2l0aCB0aGUgbmV4dCBhdmFpbGFibGUgPGI+Qk9PU1RfUFBfV0hJTEU8L2I+IGl0ZXJhdGlvbiwKCQkJCXRoZSBjdXJyZW50IDxpPnN0YXRlPC9pPiwgYW5kIHRoZSBjdXJyZW50IGVsZW1lbnQuCgkJCTwvZGQ+CgkJCTxkdD5zdGF0ZTwvZHQ+CgkJCTxkZD4KCQkJCVRoZSBpbml0aWFsIHN0YXRlIG9mIHRoZSBmb2xkLgoJCQk8L2RkPgoJCQk8ZHQ+bGlzdDwvZHQ+CgkJCTxkZD4KCQkJCVRoZSA8aT5saXN0PC9pPiB0byBiZSBmb2xkZWQuCgkJCTwvZGQ+CgkJPC9kbD4KCTxoND5SZW1hcmtzPC9oND4KCQk8ZGl2PgoJCQlUaGlzIG1hY3JvIGRvZXMgbm90IGhhdmUgdGhlIHNhbWUgc2lnbmF0dXJlIGFzIGl0IHByZXZpb3VzbHkgZGlkLiZuYnNwOwoJCQlUaGUgYXJndW1lbnRzIGhhdmUgYmVlbiBzd2FwcGVkIHRvIHByb3ZpZGUgYSB1bmlmb3JtIGludGVyZmFjZSB3aXRoIDxiPkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUPC9iPi4KCQk8L2Rpdj4KCQk8ZGl2PgoJCQlGb3IgdGhlIDxpPmxpc3Q8L2k+LCAoPGk+MDwvaT4sICg8aT4xPC9pPiwgKDxpPjI8L2k+LCA8Yj5CT09TVF9QUF9OSUw8L2I+KSkpLCB0aGlzIG1hY3JvIGV4cGFuZHMgdG86CgkJCTxkaXY+CgkJCQk8aT5vcDwvaT4oPGk+ZDwvaT4sIDxpPm9wPC9pPig8aT5kPC9pPiwgPGk+b3A8L2k+KDxpPmQ8L2k+LCA8aT5zdGF0ZTwvaT4sIDxpPjI8L2k+KSwgPGk+MTwvaT4pLCA8aT4wPC9pPikKCQkJPC9kaXY+CgkJPC9kaXY+CgkJPGRpdj4KCQkJVGhpcyBtYWNybyBoYXMgYmVlbiBzdXBlcmNlZGVkIGJ5IDxiPkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF88aT5kPC9pPjwvYj4gYW5kIGlzIGRlcHJlY2F0ZWQuJm5ic3A7CgkJCUl0IG9ubHkgYWxsb3dzIGEgc2luZ2xlIHJlZW50cnkgaW50byA8Yj5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFQ8L2I+LgoJCTwvZGl2PgoJPGg0PlNlZSBBbHNvPC9oND4KCQk8dWw+CgkJCTxsaT48YSBocmVmPSJsaXN0X2ZvbGRfcmlnaHQuaHRtbCI+Qk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUPC9hPjwvbGk+CgkJCTxsaT48YSBocmVmPSJsaXN0X2ZvbGRfcmlnaHRfZC5odG1sIj5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfPGk+ZDwvaT48L2E+PC9saT4KCQk8L3VsPgoJPGg0PlJlcXVpcmVtZW50czwvaDQ+CgkJPGRpdj4KCQkJPGI+SGVhZGVyOjwvYj4gJm5ic3A7PGEgaHJlZj0iLi4vaGVhZGVycy9saXN0L2ZvbGRfcmlnaHQuaHRtbCI+Jmx0O2Jvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2ZvbGRfcmlnaHQuaHBwJmd0OzwvYT4KCQk8L2Rpdj4KCTxoND5TYW1wbGUgQ29kZTwvaDQ+CjxkaXY+PHByZT4KI2luY2x1ZGUgJmx0OzxhIGhyZWY9Ii4uL2hlYWRlcnMvY2F0Lmh0bWwiPmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPC9hPiZndDsKI2luY2x1ZGUgJmx0OzxhIGhyZWY9Ii4uL2hlYWRlcnMvbGlzdC9mb2xkX3JpZ2h0Lmh0bWwiPmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2ZvbGRfcmlnaHQuaHBwPC9hPiZndDsKCiNkZWZpbmUgTDEgKGEsIChiLCAoYywgPGEgaHJlZj0ibmlsLmh0bWwiPkJPT1NUX1BQX05JTDwvYT4pKSkKI2RlZmluZSBMMiAoTDEsIChMMSwgKEwxLCA8YSBocmVmPSJuaWwuaHRtbCI+Qk9PU1RfUFBfTklMPC9hPikpKQoKI2RlZmluZSBPUChkLCBzdGF0ZSwgeCkgKDxhIGhyZWY9Imxpc3RfZm9sZF9yaWdodF9kX29sZC5odG1sIj5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfRDwvYT4oZCwgT1BfMiwgXywgeCksIHN0YXRlKQojZGVmaW5lIE9QXzIoZCwgc3RhdGUsIHgpIDxhIGhyZWY9ImNhdC5odG1sIj5CT09TVF9QUF9DQVQ8L2E+KHN0YXRlLCB4KQoKPGEgaHJlZj0ibGlzdF9mb2xkX3JpZ2h0Lmh0bWwiPkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVDwvYT4oT1AsIDxhIGhyZWY9Im5pbC5odG1sIj5CT09TVF9QUF9OSUw8L2E+LCBMMikKLyoKICAgZXhwYW5kcyB0bzoKICAgKF9jYmEsIChfY2JhLCAoX2NiYSwgPGEgaHJlZj0ibmlsLmh0bWwiPkJPT1NUX1BQX05JTDwvYT4pKSkKKi8KPC9wcmU+PC9kaXY+Cgk8aHIgc2l6ZT0iMSI+Cgk8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDogMHB4OyI+CgkJPGk+qSBDb3B5cmlnaHQgPGEgaHJlZj0iaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20iIHRhcmdldD0iX3RvcCI+SG91c2VtYXJxdWUgT3k8L2E+IDIwMDI8L2k+CgkJPC9icj48aT6pIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMjwvaT4KCTwvZGl2PgoJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDBweDsiPgoJCTxwPjxzbWFsbD5EaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKCQlhY2NvbXBhbnlpbmcgZmlsZSA8YSBocmVmPSIuLi8uLi8uLi8uLi9MSUNFTlNFXzFfMC50eHQiPkxJQ0VOU0VfMV8wLnR4dDwvYT4gb3IKCQljb3B5IGF0IDxhIGhyZWY9CgkJImh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCI+d3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQ8L2E+KTwvc21hbGw+PC9wPgoJPC9kaXY+CjwvYm9keT4KPC9odG1sPgo=