PGh0bWw+CjxoZWFkPgoJPHRpdGxlPkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUPC90aXRsZT4KCTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3N0eWxlcy5jc3MiPgo8L2hlYWQ+Cjxib2R5PgoJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6ICAwcHg7Ij4KCQlUaGUgPGI+Qk9PU1RfUFBfTElTVF9GT0xEX0xFRlQ8L2I+IG1hY3JvIGZvbGRzIChvciBhY2N1bXVsYXRlcykgdGhlIGVsZW1lbnRzIG9mIGEgPGk+bGlzdDwvaT4gbGVmdC10by1yaWdodC4KCTwvZGl2PgoJPGg0PlVzYWdlPC9oND4KCQk8ZGl2IGNsYXNzPSJjb2RlIj4KCQkJPGI+Qk9PU1RfUFBfTElTVF9GT0xEX0xFRlQ8L2I+KDxpPm9wPC9pPiwgPGk+c3RhdGU8L2k+LCA8aT5saXN0PC9pPikKCQk8L2Rpdj4KCTxoND5Bcmd1bWVudHM8L2g0PgoJCTxkbD4KCQkJPGR0Pm9wPC9kdD4KCQkJPGRkPgoJCQkJQSB0ZXJuYXJ5IG9wZXJhdGlvbiBvZiB0aGUgZm9ybSA8aT5vcDwvaT4oPGk+ZDwvaT4sIDxpPnN0YXRlPC9pPiwgPGk+ZWxlbTwvaT4pLiZuYnNwOwoJCQkJVGhpcyBtYWNybyBpcyBjYWxsZWQgZm9yIGVhY2ggZWxlbWVudCBpbiA8aT5saXN0PC9pPi0tZWFjaCB0aW1lIHJldHVybmluZyBhIG5ldyA8aT5zdGF0ZTwvaT4uJm5ic3A7CgkJCQlUaGlzIG9wZXJhdGlvbiBpcyBleHBhbmRlZCBieSA8Yj5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVDwvYj4gd2l0aCB0aGUgbmV4dCBhdmFpbGFibGUgPGI+Qk9PU1RfUFBfV0hJTEU8L2I+IGl0ZXJhdGlvbiwKCQkJCXRoZSBjdXJyZW50IDxpPnN0YXRlPC9pPiwgYW5kIHRoZSBjdXJyZW50IGVsZW1lbnQuCgkJCTwvZGQ+CgkJCTxkdD5zdGF0ZTwvZHQ+CgkJCTxkZD4KCQkJCVRoZSBpbml0aWFsIHN0YXRlIG9mIHRoZSBmb2xkLgoJCQk8L2RkPgoJCQk8ZHQ+bGlzdDwvZHQ+CgkJCTxkZD4KCQkJCVRoZSA8aT5saXN0PC9pPiB0byBiZSBmb2xkZWQuCgkJCTwvZGQ+CgkJPC9kbD4KCTxoND5SZW1hcmtzPC9oND4KCQk8ZGl2PgoJCQlGb3IgdGhlIDxpPmxpc3Q8L2k+LCAoPGk+MDwvaT4sICg8aT4xPC9pPiwgKDxpPjI8L2k+LCA8Yj5CT09TVF9QUF9OSUw8L2I+KSkpLCB0aGlzIG1hY3JvIGV4cGFuZHMgdG86CgkJCTxkaXY+CgkJCQk8aT5vcDwvaT4oPGk+ZDwvaT4sIDxpPm9wPC9pPig8aT5kPC9pPiwgPGk+b3A8L2k+KDxpPmQ8L2k+LCA8aT5zdGF0ZTwvaT4sIDxpPjA8L2k+KSwgPGk+MTwvaT4pLCA8aT4yPC9pPikKCQkJPC9kaXY+CgkJPC9kaXY+CgkJPGRpdj4KCQkJUHJldmlvdXNseSwgdGhpcyBtYWNybyBjb3VsZCBub3QgYmUgdXNlZCBpbnNpZGUgPGI+Qk9PU1RfUFBfV0hJTEU8L2I+LiZuYnNwOwoJCQlUaGVyZSBpcyBubyBsb25nZXIgYW55IHN1Y2ggcmVzdHJpY3Rpb24uJm5ic3A7CgkJCUl0IGlzIG1vcmUgZWZmaWNpZW50LCBob3dldmVyLCB0byB1c2UgPGI+Qk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfPGk+ZDwvaT48L2I+IGluIHN1Y2ggYSBzaXR1YXRpb24uCgkJPC9kaXY+Cgk8aDQ+U2VlIEFsc288L2g0PgoJCTx1bD4KCQkJPGxpPjxhIGhyZWY9Imxpc3RfZm9sZF9sZWZ0X2QuaHRtbCI+Qk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfPGk+ZDwvaT48L2E+PC9saT4KCQk8L3VsPgoJPGg0PlJlcXVpcmVtZW50czwvaDQ+CgkJPGRpdj4KCQkJPGI+SGVhZGVyOjwvYj4gJm5ic3A7PGEgaHJlZj0iLi4vaGVhZGVycy9saXN0L2ZvbGRfbGVmdC5odG1sIj4mbHQ7Ym9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZm9sZF9sZWZ0LmhwcCZndDs8L2E+CgkJPC9kaXY+Cgk8aDQ+U2FtcGxlIENvZGU8L2g0Pgo8ZGl2PjxwcmU+CiNpbmNsdWRlICZsdDs8YSBocmVmPSIuLi9oZWFkZXJzL2NhdC5odG1sIj5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcDwvYT4mZ3Q7CiNpbmNsdWRlICZsdDs8YSBocmVmPSIuLi9oZWFkZXJzL2xpc3QvZm9sZF9sZWZ0Lmh0bWwiPmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2ZvbGRfbGVmdC5ocHA8L2E+Jmd0OwoKI2RlZmluZSBMSVNUIChhLCAoYiwgKGMsIDxhIGhyZWY9Im5pbC5odG1sIj5CT09TVF9QUF9OSUw8L2E+KSkpCgojZGVmaW5lIE9QKGQsIHN0YXRlLCB4KSA8YSBocmVmPSJjYXQuaHRtbCI+Qk9PU1RfUFBfQ0FUPC9hPihzdGF0ZSwgeCkKCjxhIGhyZWY9Imxpc3RfZm9sZF9sZWZ0Lmh0bWwiPkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUPC9hPihPUCwgXywgTElTVCkgLy8gZXhwYW5kcyB0byBfYWJjCjwvcHJlPjwvZGl2PgoJPGhyIHNpemU9IjEiPgoJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDBweDsiPgoJCTxpPqkgQ29weXJpZ2h0IDxhIGhyZWY9Imh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tIiB0YXJnZXQ9Il90b3AiPkhvdXNlbWFycXVlIE95PC9hPiAyMDAyPC9pPgoJCTwvYnI+PGk+qSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDI8L2k+Cgk8L2Rpdj4KCTxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwcHg7Ij4KCQk8cD48c21hbGw+RGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCgkJYWNjb21wYW55aW5nIGZpbGUgPGEgaHJlZj0iLi4vLi4vLi4vLi4vTElDRU5TRV8xXzAudHh0Ij5MSUNFTlNFXzFfMC50eHQ8L2E+IG9yCgkJY29weSBhdCA8YSBocmVmPQoJCSJodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQiPnd3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0PC9hPik8L3NtYWxsPjwvcD4KCTwvZGl2Pgo8L2JvZHk+CjwvaHRtbD4K