PGh0bWw+CjxoZWFkPgoJPHRpdGxlPkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfUFJPRFVDVF9SPC90aXRsZT4KCTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL3N0eWxlcy5jc3MiPgo8L2hlYWQ+Cjxib2R5PgoJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6ICAwcHg7Ij4KCQlUaGUgPGI+Qk9PU1RfUFBfTElTVF9GT1JfRUFDSF9QUk9EVUNUX1I8L2I+IG1hY3JvIHJlcGVhdHMgYSBtYWNybyBmb3IgZWFjaCBjYXJ0ZXNpYW4gcHJvZHVjdCBvZiBzZXZlcmFsIDxpPmxpc3RzPC9pPi4mbmJzcDsKCQlJdCByZWVudGVycyA8Yj5CT09TVF9QUF9GT1I8L2I+IHdpdGggbWF4aW11bSBlZmZpY2llbmN5LgoJPC9kaXY+Cgk8aDQ+VXNhZ2U8L2g0PgoJCTxkaXYgY2xhc3M9ImNvZGUiPgoJCQk8Yj5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX1BST0RVQ1RfUjwvYj4oPGk+cjwvaT4sIDxpPm1hY3JvPC9pPiwgPGk+c2l6ZTwvaT4sIDxpPnR1cGxlPC9pPikKCQk8L2Rpdj4KCTxoND5Bcmd1bWVudHM8L2g0PgoJCTxkbD4KCQkJPGR0PnI8L2R0PgoJCQk8ZGQ+CgkJCQlUaGUgbmV4dCBhdmFpbGFibGUgPGI+Qk9PU1RfUFBfRk9SPC9iPiByZXBldGl0aW9uLgoJCQk8L2RkPgoJCQk8ZHQ+bWFjcm88L2R0PgoJCQk8ZGQ+CgkJCQlUaGUgYmluYXJ5IG1hY3JvIG9mIHRoZSBmb3JtIDxpPm1hY3JvPC9pPig8aT5yPC9pPiwgPGk+cHJvZHVjdDwvaT4pLiZuYnNwOwoJCQkJVGhpcyBtYWNybyBpcyBleHBhbmRlZCBieSA8Yj5CT09TVF9QUF9GT1JfRUFDSF9QUk9EVUNUPC9iPiB3aXRoIGVhY2ggY2FydGVzaWFuIHByb2R1Y3QgaW4gPGk+dHVwbGU8L2k+LiZuYnNwOwoJCQkJSXQgaXMgZXhwYW5kZWQgd2l0aCB0aGUgbmV4dCBhdmFpbGFibGUgPGI+Qk9PU1RfUFBfRk9SPC9iPiByZXBldGl0aW9uIGFuZCBhIDxpPnR1cGxlPC9pPiBjb250YWluaW5nIGEgY2FydGVzaWFuIHByb2R1Y3QuJm5ic3A7CgkJCQlUaGlzIDxpPnR1cGxlPC9pPiB3aWxsIGhhdmUgPGk+c2l6ZTwvaT4gZWxlbWVudHMuCgkJCTwvZGQ+CgkJCTxkdD5zaXplPC9kdD4KCQkJPGRkPgoJCQkJVGhlIHNpemUgb2YgPGk+dHVwbGU8L2k+LgoJCQk8L2RkPgoJCQk8ZHQ+dHVwbGU8L2R0PgoJCQk8ZGQ+CgkJCQlBIDxpPnR1cGxlPC9pPiBvZiA8aT5saXN0czwvaT4gZnJvbSB3aGljaCBjYXJ0ZXNpYW4gcHJvZHVjdHMgYXJlIG9idGFpbmVkLgoJCQk8L2RkPgoJCTwvZGw+Cgk8aDQ+UmVtYXJrczwvaDQ+CgkJPGRpdj4KCQkJVGhpcyBtYWNybyBpcyBhIHJlcGV0aXRpb24gY29uc3RydWN0LiZuYnNwOwoJCQlJZiB0d28gPGk+bGlzdHM8L2k+IGFyZSAoPGk+YTwvaT4sICg8aT5iPC9pPiwgKDxpPmM8L2k+LCA8Yj5CT09TVF9QUF9OSUw8L2I+KSkpIGFuZCAoPGk+eDwvaT4sICg8aT55PC9pPiwgKDxpPno8L2k+LCA8Yj5CT09TVF9QUF9OSUw8L2I+KSkpLAoJCQl0aGlzIG1hY3JvIHdpbGwgcHJvZHVjZSB0aGUgZm9sbG93aW5nIHNlcXVlbmNlOgoJCQk8ZGl2PgoJCQkJPGk+bWFjcm88L2k+KDxpPnI8L2k+LCAoPGk+YTwvaT4sIDxpPng8L2k+KSkKCQkJCTxpPm1hY3JvPC9pPig8aT5yPC9pPiwgKDxpPmE8L2k+LCA8aT55PC9pPikpCgkJCQk8aT5tYWNybzwvaT4oPGk+cjwvaT4sICg8aT5hPC9pPiwgPGk+ejwvaT4pKTxicj4KCQkJCTxpPm1hY3JvPC9pPig8aT5yPC9pPiwgKDxpPmI8L2k+LCA8aT54PC9pPikpCgkJCQk8aT5tYWNybzwvaT4oPGk+cjwvaT4sICg8aT5iPC9pPiwgPGk+eTwvaT4pKQoJCQkJPGk+bWFjcm88L2k+KDxpPnI8L2k+LCAoPGk+YjwvaT4sIDxpPno8L2k+KSk8YnI+CgkJCQk8aT5tYWNybzwvaT4oPGk+cjwvaT4sICg8aT5jPC9pPiwgPGk+eDwvaT4pKQoJCQkJPGk+bWFjcm88L2k+KDxpPnI8L2k+LCAoPGk+YzwvaT4sIDxpPnk8L2k+KSkKCQkJCTxpPm1hY3JvPC9pPig8aT5yPC9pPiwgKDxpPmM8L2k+LCA8aT56PC9pPikpCgkJCTwvZGl2PgoJCTwvZGl2PgoJPGg0PlNlZSBBbHNvPC9oND4KCQk8dWw+CgkJCTxsaT48YSBocmVmPSJsaXN0X2Zvcl9lYWNoX3Byb2R1Y3QuaHRtbCI+Qk9PU1RfUFBfTElTVF9GT1JfRUFDSF9QUk9EVUNUPC9hPjwvbGk+CgkJPC91bD4KCTxoND5SZXF1aXJlbWVudHM8L2g0PgoJCTxkaXY+CgkJCTxiPkhlYWRlcjo8L2I+ICZuYnNwOzxhIGhyZWY9Ii4uL2hlYWRlcnMvbGlzdC9mb3JfZWFjaF9wcm9kdWN0Lmh0bWwiPiZsdDtib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9mb3JfZWFjaF9wcm9kdWN0LmhwcCZndDs8L2E+CgkJPC9kaXY+Cgk8aDQ+U2FtcGxlIENvZGU8L2g0Pgo8ZGl2PjxwcmU+CiNpbmNsdWRlICZsdDs8YSBocmVmPSIuLi9oZWFkZXJzL2FyaXRobWV0aWMvZGVjLmh0bWwiPmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2RlYy5ocHA8L2E+Jmd0OwojaW5jbHVkZSAmbHQ7PGEgaHJlZj0iLi4vaGVhZGVycy9saXN0L2Zvcl9lYWNoX3Byb2R1Y3QuaHRtbCI+Ym9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZm9yX2VhY2hfcHJvZHVjdC5ocHA8L2E+Jmd0OwojaW5jbHVkZSAmbHQ7PGEgaHJlZj0iLi4vaGVhZGVycy9yZXBldGl0aW9uL2Zvci5odG1sIj5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9mb3IuaHBwPC9hPiZndDsKI2luY2x1ZGUgJmx0OzxhIGhyZWY9Ii4uL2hlYWRlcnMvdHVwbGUvZWxlbS5odG1sIj5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWxlbS5ocHA8L2E+Jmd0OwoKI2RlZmluZSBMMSAoYSwgKGIsIDxhIGhyZWY9Im5pbC5odG1sIj5CT09TVF9QUF9OSUw8L2E+KSkKI2RlZmluZSBMMiAoeCwgKHksIDxhIGhyZWY9Im5pbC5odG1sIj5CT09TVF9QUF9OSUw8L2E+KSkKCiNkZWZpbmUgUFJFRChyLCBzdGF0ZSkgPGEgaHJlZj0idHVwbGVfZWxlbS5odG1sIj5CT09TVF9QUF9UVVBMRV9FTEVNPC9hPigyLCAwLCBzdGF0ZSkKCiNkZWZpbmUgT1Aociwgc3RhdGUpIFwKICAgKCBcCiAgICAgIDxhIGhyZWY9ImRlYy5odG1sIj5CT09TVF9QUF9ERUM8L2E+KCBcCiAgICAgICAgIDxhIGhyZWY9InR1cGxlX2VsZW0uaHRtbCI+Qk9PU1RfUFBfVFVQTEVfRUxFTTwvYT4oMiwgMCwgc3RhdGUpIFwKICAgICAgKSwgXAogICAgICA8YSBocmVmPSJ0dXBsZV9lbGVtLmh0bWwiPkJPT1NUX1BQX1RVUExFX0VMRU08L2E+KDIsIDEsIHN0YXRlKSBcCiAgICkgXAogICAvKiovCgojZGVmaW5lIE1BQ1JPKHIsIHN0YXRlKSBcCiAgIE1BQ1JPX0koIFwKICAgICAgciwgXAogICAgICA8YSBocmVmPSJ0dXBsZV9lbGVtLmh0bWwiPkJPT1NUX1BQX1RVUExFX0VMRU08L2E+KDIsIDAsIHN0YXRlKSwgXAogICAgICA8YSBocmVmPSJ0dXBsZV9lbGVtLmh0bWwiPkJPT1NUX1BQX1RVUExFX0VMRU08L2E+KDIsIDEsIHN0YXRlKSBcCiAgICkgXAogICAvKiovCgojZGVmaW5lIE1BQ1JPX0kociwgYywgdCkgXAogICA8YSBocmVmPSJsaXN0X2Zvcl9lYWNoX3Byb2R1Y3Rfci5odG1sIj5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX1BST0RVQ1RfUjwvYT4oIFwKICAgICAgciwgTUFDUk9fUCwgMiwgXAogICAgICAoIFwKICAgICAgICAgPGEgaHJlZj0idHVwbGVfZWxlbS5odG1sIj5CT09TVF9QUF9UVVBMRV9FTEVNPC9hPigyLCA8YSBocmVmPSJkZWMuaHRtbCI+Qk9PU1RfUFBfREVDPC9hPihjKSwgdCksIFwKICAgICAgICAgPGEgaHJlZj0idHVwbGVfZWxlbS5odG1sIj5CT09TVF9QUF9UVVBMRV9FTEVNPC9hPigyLCA8YSBocmVmPSJkZWMuaHRtbCI+Qk9PU1RfUFBfREVDPC9hPihjKSwgdCkgXAogICAgICApIFwKICAgKSBcCiAgIC8qKi8KCiNkZWZpbmUgTUFDUk9fUChyLCBwcm9kdWN0KSBwcm9kdWN0Cgo8YSBocmVmPSJmb3IuaHRtbCI+Qk9PU1RfUFBfRk9SPC9hPigoMiwgKEwxLCBMMikpLCBQUkVELCBPUCwgTUFDUk8pCiAgIC8vIGV4cGFuZHMgdG8gKHgsIHgpICh4LCB5KSAoeSwgeCkgKHksIHkpIChhLCBhKSAoYSwgYikgKGIsIGEpIChiLCBiKQo8L3ByZT48L2Rpdj4KCTxociBzaXplPSIxIj4KCTxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwcHg7Ij4KCQk8aT6pIENvcHlyaWdodCA8YSBocmVmPSJodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbSIgdGFyZ2V0PSJfdG9wIj5Ib3VzZW1hcnF1ZSBPeTwvYT4gMjAwMjwvaT4KCQk8L2JyPjxpPqkgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyPC9pPgoJPC9kaXY+Cgk8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDogMHB4OyI+CgkJPHA+PHNtYWxsPkRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQoJCWFjY29tcGFueWluZyBmaWxlIDxhIGhyZWY9Ii4uLy4uLy4uLy4uL0xJQ0VOU0VfMV8wLnR4dCI+TElDRU5TRV8xXzAudHh0PC9hPiBvcgoJCWNvcHkgYXQgPGEgaHJlZj0KCQkiaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ij53d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dDwvYT4pPC9zbWFsbD48L3A+Cgk8L2Rpdj4KPC9ib2R5Pgo8L2h0bWw+Cg==