PGh0bWw+CjxoZWFkPgoJPHRpdGxlPkJPT1NUX1BQX0FQUExZPC90aXRsZT4KCTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3N0eWxlcy5jc3MiPgo8L2hlYWQ+Cjxib2R5PgoJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6ICAwcHg7Ij4KCQlUaGUgPGI+Qk9PU1RfUFBfQVBQTFk8L2I+IG1hY3JvIGFic3RyYWN0cyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGFuIGFyZ3VtZW50IGFuZCBub3RoaW5nLgoJPC9kaXY+Cgk8aDQ+VXNhZ2U8L2g0PgoJCTxkaXYgY2xhc3M9ImNvZGUiPgoJCQk8Yj5CT09TVF9QUF9BUFBMWTwvYj4oPGk+eDwvaT4pCgkJPC9kaXY+Cgk8aDQ+QXJndW1lbnRzPC9oND4KCQk8ZGw+CgkJCTxkdD54PC9kdD4KCQkJPGRkPgoJCQkJVGhlIGFic3RyYWN0ZWQgYXJndW1lbnQuJm5ic3A7CgkJCQlUaGlzIGFyZ3VtZW50IG11c3QgYmUgZWl0aGVyIDxiPkJPT1NUX1BQX05JTDwvYj4gb3IgYSA8aT50dXBsZTwvaT4gd2l0aCBvbmUgZWxlbWVudC0tc3VjaCBhcyA8aT4oYXJnKTwvaT4gb3IgPGk+KChhLCBiKSk8L2k+LgoJCQk8L2RkPgoJCTwvZGw+Cgk8aDQ+UmVtYXJrczwvaDQ+CgkJPGRpdj4KCQkJSWYgPGk+eDwvaT4gaXMgPGI+Qk9PU1RfUFBfTklMPC9iPiwgdGhpcyBtYWNybyBleHBhbmRzIHRvIG5vdGhpbmcuJm5ic3A7CgkJCUlmIDxpPng8L2k+IGlzIGEgb25lIGVsZW1lbnQgPGk+dHVwbGU8L2k+LCBpdCBleHBhbmRzIHRvIHRoZSBjb250ZW50cyBvZiB0aGF0IDxpPnR1cGxlPC9pPi4KCQk8L2Rpdj4KCTxoND5TZWUgQWxzbzwvaDQ+CgkJPHVsPgoJCQk8bGk+PGEgaHJlZj0ibmlsLmh0bWwiPkJPT1NUX1BQX05JTDwvYT48L2xpPgoJCTwvdWw+Cgk8aDQ+UmVxdWlyZW1lbnRzPC9oND4KCQk8ZGl2PgoJCQk8Yj5IZWFkZXI6PC9iPiAmbmJzcDs8YSBocmVmPSIuLi9oZWFkZXJzL2ZhY2lsaXRpZXMvYXBwbHkuaHRtbCI+Jmx0O2Jvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL2FwcGx5LmhwcCZndDs8L2E+CgkJPC9kaXY+Cgk8aDQ+U2FtcGxlIENvZGU8L2g0Pgo8ZGl2PjxwcmU+CiNpbmNsdWRlICZsdDs8YSBocmVmPSIuLi9oZWFkZXJzL2ZhY2lsaXRpZXMvYXBwbHkuaHRtbCI+Ym9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvYXBwbHkuaHBwPC9hPiZndDsKI2luY2x1ZGUgJmx0OzxhIGhyZWY9Ii4uL2hlYWRlcnMvdHVwbGUvZWxlbS5odG1sIj5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWxlbS5ocHA8L2E+Jmd0OwoKI2RlZmluZSBDVihpKSBcCiAgIDxhIGhyZWY9ImFwcGx5Lmh0bWwiPkJPT1NUX1BQX0FQUExZPC9hPiggXAogICAgICA8YSBocmVmPSJ0dXBsZV9lbGVtLmh0bWwiPkJPT1NUX1BQX1RVUExFX0VMRU08L2E+KCBcCiAgICAgICAgIDQsIGksIFwKICAgICAgICAgKDxhIGhyZWY9Im5pbC5odG1sIj5CT09TVF9QUF9OSUw8L2E+LCAoY29uc3QpLCAodm9sYXRpbGUpLCAoY29uc3Qgdm9sYXRpbGUpKSBcCiAgICAgICkgXAogICApIFwKICAgLyoqLwoKQ1YoMCkgLy8gZXhwYW5kcyB0byBub3RoaW5nCkNWKDEpIC8vIGV4cGFuZHMgdG8gY29uc3QKPC9wcmU+PC9kaXY+Cgk8aHIgc2l6ZT0iMSI+Cgk8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDogMHB4OyI+CgkJPGk+qSBDb3B5cmlnaHQgPGEgaHJlZj0iaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20iIHRhcmdldD0iX3RvcCI+SG91c2VtYXJxdWUgT3k8L2E+IDIwMDI8L2k+CgkJPC9icj48aT6pIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMjwvaT4KCTwvZGl2PgoJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDBweDsiPgoJCTxwPjxzbWFsbD5EaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKCQlhY2NvbXBhbnlpbmcgZmlsZSA8YSBocmVmPSIuLi8uLi8uLi8uLi9MSUNFTlNFXzFfMC50eHQiPkxJQ0VOU0VfMV8wLnR4dDwvYT4gb3IKCQljb3B5IGF0IDxhIGhyZWY9CgkJImh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCI+d3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQ8L2E+KTwvc21hbGw+PC9wPgoJPC9kaXY+CjwvYm9keT4KPC9odG1sPgo=