Ly89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQovLyBGaWxlICAgOiAgaW50ZWxfYmVuY2hfZml4ZWRfc2l6ZS5oaAovLyBBdXRob3IgOiAgTC4gUGxhZ25lIDxsYXVyZW50LnBsYWduZUBlZGYuZnIpPiAgICAgICAgCi8vIENvcHlyaWdodCAoQykgRURGIFImRCwgIG1hciBk6WMgMyAxODo1OTozNyBDRVQgMjAwMgovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci8vIAovLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi8vIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi8vIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyCi8vIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgovLyAKLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3LCBVU0EuCi8vIAojaWZuZGVmIF9CRU5DSF9GSVhFRF9TSVpFX0hIXwojZGVmaW5lIF9CRU5DSF9GSVhFRF9TSVpFX0hIXwoKI2luY2x1ZGUgInV0aWxpdGllcy5oIgojaW5jbHVkZSAiZnVuY3Rpb25fdGltZS5oaCIKCnRlbXBsYXRlIDxjbGFzcyBBY3Rpb24+CmRvdWJsZSBiZW5jaF9maXhlZF9zaXplKGludCBzaXplLCB1bnNpZ25lZCBsb25nIGxvbmcgICYgbmJfY2FsYyx1bnNpZ25lZCBsb25nIGxvbmcgJiBuYl9pbml0KQp7CiAgCiAgQWN0aW9uIGFjdGlvbihzaXplKTsKICAKICBkb3VibGUgdGltZV9iYXNlbGluZT10aW1lX2luaXQobmJfaW5pdCxhY3Rpb24pOwoKICB3aGlsZSAodGltZV9iYXNlbGluZSA8IE1JTl9USU1FKSB7CgogICAgLy9JTkZPUygibmJfaW5pdD0iPDxuYl9pbml0KTsKICAgIC8vSU5GT1MoInRpbWVfYmFzZWxpbmU9Ijw8dGltZV9iYXNlbGluZSk7CiAgICBuYl9pbml0Kj0yOwogICAgdGltZV9iYXNlbGluZT10aW1lX2luaXQobmJfaW5pdCxhY3Rpb24pOwogIH0KICAKICB0aW1lX2Jhc2VsaW5lPXRpbWVfYmFzZWxpbmUvKGRvdWJsZShuYl9pbml0KSk7CiAgCiAgZG91YmxlIHRpbWVfYWN0aW9uPXRpbWVfY2FsY3VsYXRlKG5iX2NhbGMsYWN0aW9uKTsKICAKICB3aGlsZSAodGltZV9hY3Rpb24gPCBNSU5fVElNRSkgewogICAgCiAgICBuYl9jYWxjKj0yOwogICAgdGltZV9hY3Rpb249dGltZV9jYWxjdWxhdGUobmJfY2FsYyxhY3Rpb24pOwogIH0KCiAgSU5GT1MoIm5iX2luaXQ9Ijw8bmJfaW5pdCk7CiAgSU5GT1MoIm5iX2NhbGM9Ijw8bmJfY2FsYyk7CiAgCiAgCiAgdGltZV9hY3Rpb249dGltZV9hY3Rpb24vKGRvdWJsZShuYl9jYWxjKSk7CiAgCiAgYWN0aW9uLmNoZWNrX3Jlc3VsdCgpOwogIAogIHRpbWVfYWN0aW9uPXRpbWVfYWN0aW9uLXRpbWVfYmFzZWxpbmU7CgogIHJldHVybiBhY3Rpb24ubmJfb3BfYmFzZSgpLyh0aW1lX2FjdGlvbioxMDAwMDAwLjApOwoKfQoKI2VuZGlmCg==