PGh0bWw+CjxoZWFkPgoJPHRpdGxlPkJPT1NUX1BQX1NVQl9EPC90aXRsZT4KCTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3N0eWxlcy5jc3MiPgo8L2hlYWQ+Cjxib2R5PgoJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6ICAwcHg7Ij4KCQlUaGUgPGI+Qk9PU1RfUFBfU1VCX0Q8L2I+IG1hY3JvIGV4cGFuZHMgdG8gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBpdHMgc2Vjb25kIGFuZCB0aGlyZCBhcmd1bWVudHMuJm5ic3A7CgkJSXQgcmVlbnRlcnMgPGI+Qk9PU1RfUFBfV0hJTEU8L2I+IHdpdGggbWF4aW11bSBlZmZpY2llbmN5LgoJPC9kaXY+Cgk8aDQ+VXNhZ2U8L2g0PgoJCTxkaXYgY2xhc3M9ImNvZGUiPgoJCQk8Yj5CT09TVF9QUF9TVUJfRDwvYj4oPGk+ZDwvaT4sIDxpPng8L2k+LCA8aT55PC9pPikKCQk8L2Rpdj4KCTxoND5Bcmd1bWVudHM8L2g0PgoJCTxkbD4KCQkJPGR0PmQ8L2R0PgoJCQk8ZGQ+CgkJCQlUaGUgbmV4dCBhdmFpbGFibGUgPGI+Qk9PU1RfUFBfV0hJTEU8L2I+IGl0ZXJhdGlvbi4mbmJzcDsKCQkJPC9kZD4KCQkJPGR0Png8L2R0PgoJCQk8ZGQ+CgkJCQlUaGUgbWludWVuZCBvZiB0aGUgb3BlcmF0aW9uLiZuYnNwOwoJCQkJVmFsaWQgdmFsdWVzIHJhbmdlIGZyb20gPGk+MDwvaT4gdG8gPGI+Qk9PU1RfUFBfTElNSVRfTUFHPC9iPi4KCQkJPC9kZD4KCQkJPGR0Pnk8L2R0PgoJCQk8ZGQ+CgkJCQlUaGUgc3VidHJhaGVuZCBvZiB0aGUgb3BlcmF0aW9uLiZuYnNwOwoJCQkJVmFsaWQgdmFsdWVzIHJhbmdlIGZyb20gPGk+MDwvaT4gdG8gPGI+Qk9PU1RfUFBfTElNSVRfTUFHPC9iPi4KCQkJPC9kZD4KCQk8L2RsPgoJPGg0PlJlbWFya3M8L2g0PgoJCTxkaXY+CgkJCUlmIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gPGk+eDwvaT4gYW5kIDxpPnk8L2k+IGlzIGxlc3MgdGhhbiA8aT4wPC9pPiwgdGhlIHJlc3VsdCBpcyBzYXR1cmF0ZWQgdG8gPGk+MDwvaT4uCgkJPC9kaXY+Cgk8aDQ+U2VlIEFsc288L2g0PgoJCTx1bD4KCQkJPGxpPjxhIGhyZWY9ImxpbWl0X21hZy5odG1sIj5CT09TVF9QUF9MSU1JVF9NQUc8L2E+PC9saT4KCQkJPGxpPjxhIGhyZWY9InN1Yi5odG1sIj5CT09TVF9QUF9TVUI8L2E+PC9saT4KCQk8L3VsPgoJPGg0PlJlcXVpcmVtZW50czwvaDQ+CgkJPGRpdj4KCQkJPGI+SGVhZGVyOjwvYj4gJm5ic3A7PGEgaHJlZj0iLi4vaGVhZGVycy9hcml0aG1ldGljL3N1Yi5odG1sIj4mbHQ7Ym9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvc3ViLmhwcCZndDs8L2E+CgkJPC9kaXY+Cgk8aDQ+U2FtcGxlIENvZGU8L2g0Pgo8ZGl2PjxwcmU+CiNpbmNsdWRlICZsdDs8YSBocmVmPSIuLi9oZWFkZXJzL2FyaXRobWV0aWMvZGVjLmh0bWwiPmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2RlYy5ocHA8L2E+Jmd0OwojaW5jbHVkZSAmbHQ7PGEgaHJlZj0iLi4vaGVhZGVycy9hcml0aG1ldGljL3N1Yi5odG1sIj5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9zdWIuaHBwPC9hPiZndDsKI2luY2x1ZGUgJmx0OzxhIGhyZWY9Ii4uL2hlYWRlcnMvY29udHJvbC93aGlsZS5odG1sIj5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC93aGlsZS5ocHA8L2E+Jmd0OwojaW5jbHVkZSAmbHQ7PGEgaHJlZj0iLi4vaGVhZGVycy90dXBsZS9lbGVtLmh0bWwiPmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcDwvYT4mZ3Q7CgojZGVmaW5lIFBSRUQoZCwgZGF0YSkgPGEgaHJlZj0idHVwbGVfZWxlbS5odG1sIj5CT09TVF9QUF9UVVBMRV9FTEVNPC9hPigyLCAwLCBkYXRhKQoKI2RlZmluZSBPUChkLCBkYXRhKSBcCiAgICggXAogICAgICA8YSBocmVmPSJkZWMuaHRtbCI+Qk9PU1RfUFBfREVDPC9hPiggXAogICAgICAgICA8YSBocmVmPSJ0dXBsZV9lbGVtLmh0bWwiPkJPT1NUX1BQX1RVUExFX0VMRU08L2E+KDIsIDAsIGRhdGEpIFwKICAgICAgKSwgXAogICAgICA8YSBocmVmPSJzdWJfZC5odG1sIj5CT09TVF9QUF9TVUJfRDwvYT4oIFwKICAgICAgICAgZCwgXAogICAgICAgICA8YSBocmVmPSJ0dXBsZV9lbGVtLmh0bWwiPkJPT1NUX1BQX1RVUExFX0VMRU08L2E+KDIsIDEsIGRhdGEpLCBcCiAgICAgICAgIDIgXAogICAgICApIFwKICAgKSBcCiAgIC8qKi8KCi8vIGRlY3JlbWVudCAneCcgYnkgMiAnbicgdGltZXMKI2RlZmluZSBTVFJJREUoeCwgbikgPGEgaHJlZj0idHVwbGVfZWxlbS5odG1sIj5CT09TVF9QUF9UVVBMRV9FTEVNPC9hPigyLCAxLCA8YSBocmVmPSJ3aGlsZS5odG1sIj5CT09TVF9QUF9XSElMRTwvYT4oUFJFRCwgT1AsIChuLCB4KSkpCgpTVFJJREUoMTAsIDIpIC8vIGV4cGFuZHMgdG8gNgpTVFJJREUoMTQsIDYpIC8vIGV4cGFuZHMgdG8gMgo8L3ByZT48L2Rpdj4KCTxociBzaXplPSIxIj4KCTxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwcHg7Ij4KCQk8aT6pIENvcHlyaWdodCA8YSBocmVmPSJodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbSIgdGFyZ2V0PSJfdG9wIj5Ib3VzZW1hcnF1ZSBPeTwvYT4gMjAwMjwvaT4KCQk8L2JyPjxpPqkgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyPC9pPgoJPC9kaXY+Cgk8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDogMHB4OyI+CgkJPHA+PHNtYWxsPkRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQoJCWFjY29tcGFueWluZyBmaWxlIDxhIGhyZWY9Ii4uLy4uLy4uLy4uL0xJQ0VOU0VfMV8wLnR4dCI+TElDRU5TRV8xXzAudHh0PC9hPiBvcgoJCWNvcHkgYXQgPGEgaHJlZj0KCQkiaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ij53d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dDwvYT4pPC9zbWFsbD48L3A+Cgk8L2Rpdj4KPC9ib2R5Pgo8L2h0bWw+Cg==