LyogIENvcHlyaWdodCAxOTk2LDE5OTcsMTk5OSwyMDAxLDIwMDIsMjAwOCwyMDA5IEFsYWluIEtuYWZmLgogKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgbXRvb2xzLgogKgogKiAgTXRvb2xzIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogIE10b29scyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogKiAgYWxvbmcgd2l0aCBNdG9vbHMuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiAqCiAqLwojaW5jbHVkZSAiY29uZmlnLmgiCgojaWZuZGVmIEhBVkVfSUNPTlZfSAojaW5jbHVkZSAiY29kZXBhZ2UuaCIKCkNvZGVwYWdlX3QgY29kZXBhZ2VzW109IHsKCXsgNDM3LAoJICAix/zp4uTg5efq6+jv7uzExSIKCSAgIsnmxvT28vv5/9bcoqOlUGYiCgkgICLh7fP68dGqur9yrL28oau7IgoJICAiX19fX19fX19fX19fX19frCIKCSAgIl9fX19fX19fX19fX19fX18iCgkgICJfX19fX19fX19fX19fX19fIgoJICAiYWJncFNztXRmdG9k+NhfTiIKCSAgIj2xPD58fPd+sLe3Vm6yX18iCgl9LAoKCXsgODE5LAoJICAiX19fX19fX19fX19fX19fXyIKCSAgIl9fX19fX19fX19fX19fX18iCgkgICKgoaKjpKWmp6ipqqusra6vIgoJICAisLGys7S1tre4ubq7vL2+vyIKCSAgIsDBwsPExcbHyMnKy8zNzs8iCgkgICLQ0dLT1NXW19jZ2tvc3d7fIgoJICAi4OHi4+Tl5ufo6err7O3u7yIKCSAgIvDx8vP09fb3+Pn6+/z9/v8iCgl9LAoKCXsgODUwLAoJICAix/zp4uTg5efq6+jv7uzExSIKCSAgIsnmxvT28vv5/9bc+KPY118iCgkgICLh7fP68dGqur+urL28oau7IgoJICAiX19fX1/BwsCpX19fX6KlrCIKCSAgIl9fX19fX+PDX19fX19fX6QiCgkgICLw0MnLyGnNzs9fX19ffElfIgoJICAi09/U0vXVtf7e2tn93d6vtCIKCSAgIq2xX762p/e4sKi3ubOyX18iCgl9LAoJCgl7IDg1MiwKCSAgIsf86eLkdWPnbOvV9e5axEMiCgkgICLJTGz09kxsU3PW3FR0TNdjIgoJICAi4e3z+kFhWnpFZSB6Q3OruyIKCSAgIl9fX19fwcJFU19fX19aeqwiCgkgICJfX19fX19BYV9fX19fX1+kIgoJICAi8NBEy2TRzc5lX3JfX1RVXyIKCSAgItPf1E5u8VNzUtpyVf3ddLQiCgkgICKtfi5+fqf3uLCot7l1UnJfIgoJfSwKCQoJeyA4NjAsCgkgICLH/Oni4+Dl5+rr6M317MPCIgoJICAiycDI9PXy2vnM1dyio9lQ0yIKCSAgIuHt8/rx0aq6v9Ksvbyhq7siCgkgICJfX19fX19fX19fX19fX1+sIgoJICAiX19fX19fX19fX19fX19fXyIKCSAgIl9fX19fX19fX19fX19fX18iCgkgICJhYmdwU3O1dGZ0b2T42F9OIgoJICAiPbE8Pnx8936wt7dWbrJfXyIKCX0sCgkKCXsgODYzLAoJICAix/zp4sLgtufq6+jv7l/ApyIKCSAgIsnIyvTLz/v5pNTcoqPZ22YiCgkgICJ8tPP6qCCzr85yrL28vqu7IgoJICAiX19fX19fX19fX19fX19frCIKCSAgIl9fX19fX19fX19fX19fX18iCgkgICJfX19fX19fX19fX19fX19fIgoJICAiYWJncFNztXRmdG9k+NhfTiIKCSAgIj2xPD58fPd+sLe3Vm6yX18iCgl9LAoJCgl7IDg2NSwKCSAgIsf86eLk4OXn6uvo7+7sxMUiCgkgICLJ5sb09vL7+f/W3Pij2FBmIgoJICAi4e3z+vHRqrq/cqy9vKGrpCIKCSAgIl9fX19fX19fX19fX19fX6wiCgkgICJfX19fX19fX19fX19fX19fIgoJICAiX19fX19fX19fX19fX19fXyIKCSAgImFiZ3BTc7V0ZnRvZPjYX04iCgkgICI9sTw+fHz3frC3t1Zusl9fIiwKCX0sCgoJLyogVGFpd2FuZXNlIChDaGluZXNlIENvbXBsZXggQ2hhcmFjdGVyKSBzdXBwb3J0ICovCgl7IDk1MCwKCSAigIGCg4SFhoeIiYqLjI2OjyIKCSAikJGSk5SVlpeYmZqbnJ2enyIKCSAioKGio6SlpqeoqaqrrK2uryIKCSAisLGys7S1tre4ubq7vL2+vyIKCSAiwMHCw8TFxsfIycrLzM3OzyIKCSAi0NHS09TV1tfY2drb3N3e3yIKCSAi4OHi4+Tl5ufo6err7O3u7yIKCSAi8PHy8/T19vf4+fr7/P3+/yIsCgl9LAoKCgl7IDAgfQp9OwojZWxzZQovKiBTaG91bGQgZG93biAgSVNPIEMgZm9yYmlkcyBhbiBlbXB0eSB0cmFuc2xhdGlvbiB1bml0IHdhcm5pbmcgWy1XcGVkYW50aWNdOiAqLwp0eXBlZGVmIGludCBtYWtlX2lzb19jb21waWxlcnNfaGFwcHk7CiNlbmRpZgo=