From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from fmr04.intel.com ([143.183.121.6]:21676 "EHLO caduceus.sc.intel.com") by vger.kernel.org with ESMTP id S264857AbUGBSV4 (ORCPT ); Fri, 2 Jul 2004 14:21:56 -0400 Message-ID: <40E5A7B6.6030207@intel.com> Date: Fri, 02 Jul 2004 11:21:42 -0700 From: Arun Sharma MIME-Version: 1.0 Subject: Re: compat_sys_adjtimex References: <40E30E8F.3000601@intel.com> <16611.20590.297525.314297@cargo.ozlabs.ibm.com> <40E362D6.7010908@intel.com> <200407011502.14131.arnd@arndb.de> In-Reply-To: <200407011502.14131.arnd@arndb.de> Content-Type: multipart/mixed; boundary="------------010101060803080208020600" To: Arnd Bergmann Cc: Paul Mackerras , "David S. Miller" , linux-arch@vger.kernel.org List-ID: This is a multi-part message in MIME format. --------------010101060803080208020600 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit On 7/1/2004 6:02 AM, Arnd Bergmann wrote: > > I'd personally prefer to use type names like compat_ulong_t > in the place of u32 when the a member in the original struct > is unsigned long. > >> +asmlinkage long compat_sys_adjtimex(struct compat_timex *utp) >> + > This is missing a semicolon. > Updated patch to address these two issues. -Arun --------------010101060803080208020600 Content-Type: text/plain; name="compat_sys_adjtimex.3.patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="compat_sys_adjtimex.3.patch" VGhpcyBwYXRjaCBtb3ZlcyBzeXMzMl9hZGp0aW1leCBpbiA3IGFyY2hzIHVwIHRvIGtlcm5l bC9jb21wYXQuYy4KClNpZ25lZC1vZmYtYnk6IEdvcmRvbiBKaW4gPGdvcmRvbi5qaW5AaW50 ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBBcnVuIFNoYXJtYSA8YXJ1bi5zaGFybWFAaW50ZWwu Y29tPgoKLS0tCiBhcmNoL2lhNjQvaWEzMi9pYTMyX2VudHJ5LlMgICAgICAgIHwgICAgMiAK IGFyY2gvaWE2NC9pYTMyL3N5c19pYTMyLmMgICAgICAgICAgfCAgIDc0IC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBhcmNoL21pcHMva2VybmVsL2xpbnV4MzIuYyAg ICAgICAgIHwgICA3MyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogYXJj aC9taXBzL2tlcm5lbC9zY2FsbDY0LW4zMi5TICAgICB8ICAgIDIgCiBhcmNoL21pcHMva2Vy bmVsL3NjYWxsNjQtbzMyLlMgICAgIHwgICAgMiAKIGFyY2gvcGFyaXNjL2tlcm5lbC9zeXNf cGFyaXNjMzIuYyAgfCAgIDU4IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogYXJjaC9w YXJpc2Mva2VybmVsL3N5c2NhbGxfdGFibGUuUyB8ICAgIDIgCiBhcmNoL3BwYzY0L2tlcm5l bC9taXNjLlMgICAgICAgICAgIHwgICAgMiAKIGFyY2gvcHBjNjQva2VybmVsL3N5c19wcGMz Mi5jICAgICAgfCAgIDc3IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K IGFyY2gvczM5MC9rZXJuZWwvY29tcGF0X2xpbnV4LmMgICAgfCAgIDczIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBhcmNoL3MzOTAva2VybmVsL2NvbXBhdF93cmFw cGVyLlMgIHwgICAgOCArLS0KIGFyY2gvczM5MC9rZXJuZWwvc3lzY2FsbHMuUyAgICAgICAg fCAgICAyIAogYXJjaC9zcGFyYzY0L2tlcm5lbC9zeXNfc3BhcmMzMi5jICB8ICAgNzMgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGFyY2gvc3BhcmM2NC9rZXJuZWwv c3lzdGJscy5TICAgICAgfCAgICAyIAogYXJjaC94ODZfNjQvaWEzMi9pYTMyZW50cnkuUyAg ICAgICB8ICAgIDIgCiBhcmNoL3g4Nl82NC9pYTMyL3N5c19pYTMyLmMgICAgICAgIHwgICA3 NiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGluY2x1ZGUvbGludXgv Y29tcGF0LmggICAgICAgICAgICAgfCAgIDE1ICsrKysrKysKIGtlcm5lbC9jb21wYXQuYyAg ICAgICAgICAgICAgICAgICAgfCAgIDU4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKwog MTggZmlsZXMgY2hhbmdlZCwgODUgaW5zZXJ0aW9ucygrKSwgNTE2IGRlbGV0aW9ucygtKQoK ZGlmZiAtcHVyTiBsaW51eC0yLjYuNy9hcmNoL2lhNjQvaWEzMi9pYTMyX2VudHJ5LlMgbGlu dXgtMi42LjctYWRqdGltZXgvYXJjaC9pYTY0L2lhMzIvaWEzMl9lbnRyeS5TCi0tLSBsaW51 eC0yLjYuNy9hcmNoL2lhNjQvaWEzMi9pYTMyX2VudHJ5LlMJMjAwNC0wNi0yMyAxNzoyOTox NS4wMDAwMDAwMDAgKzA4MDAKKysrIGxpbnV4LTIuNi43LWFkanRpbWV4L2FyY2gvaWE2NC9p YTMyL2lhMzJfZW50cnkuUwkyMDA0LTA2LTMwIDA5OjI2OjI0LjAwMDAwMDAwMCArMDgwMApA QCAtMzMyLDcgKzMzMiw3IEBAIGlhMzJfc3lzY2FsbF90YWJsZToKIAlkYXRhOCBzeXNfc2V0 ZG9tYWlubmFtZQogCWRhdGE4IHN5czMyX25ld3VuYW1lCiAJZGF0YTggc3lzMzJfbW9kaWZ5 X2xkdAotCWRhdGE4IHN5c19uaV9zeXNjYWxsCS8qIGFkanRpbWV4ICovCisJZGF0YTggY29t cGF0X3N5c19hZGp0aW1leAogCWRhdGE4IHN5czMyX21wcm90ZWN0CSAgLyogMTI1ICovCiAJ ZGF0YTggY29tcGF0X3N5c19zaWdwcm9jbWFzawogCWRhdGE4IHN5c19uaV9zeXNjYWxsCS8q IGNyZWF0ZV9tb2R1bGUgKi8KZGlmZiAtcHVyTiBsaW51eC0yLjYuNy9hcmNoL2lhNjQvaWEz Mi9zeXNfaWEzMi5jIGxpbnV4LTIuNi43LWFkanRpbWV4L2FyY2gvaWE2NC9pYTMyL3N5c19p YTMyLmMKLS0tIGxpbnV4LTIuNi43L2FyY2gvaWE2NC9pYTMyL3N5c19pYTMyLmMJMjAwNC0w Ni0yMyAxNzoyOToxNS4wMDAwMDAwMDAgKzA4MDAKKysrIGxpbnV4LTIuNi43LWFkanRpbWV4 L2FyY2gvaWE2NC9pYTMyL3N5c19pYTMyLmMJMjAwNC0wNi0zMCAwOTo1NjowOS4wMDAwMDAw MDAgKzA4MDAKQEAgLTIxOTksNzggKzIxOTksNCBAQCBzeXMzMl9zZXRyZXNnaWQoY29tcGF0 X2dpZF90IHJnaWQsIGNvbXBhCiAJc3NnaWQgPSAoc2dpZCA9PSAoY29tcGF0X2dpZF90KS0x KSA/ICgoZ2lkX3QpLTEpIDogKChnaWRfdClzZ2lkKTsKIAlyZXR1cm4gc3lzX3NldHJlc2dp ZChzcmdpZCwgc2VnaWQsIHNzZ2lkKTsKIH0KLQotLyogSGFuZGxlIGFkanRpbWV4IGNvbXBh dGliaWxpdHkuICovCi0KLXN0cnVjdCB0aW1leDMyIHsKLQl1MzIgbW9kZXM7Ci0JczMyIG9m ZnNldCwgZnJlcSwgbWF4ZXJyb3IsIGVzdGVycm9yOwotCXMzMiBzdGF0dXMsIGNvbnN0YW50 LCBwcmVjaXNpb24sIHRvbGVyYW5jZTsKLQlzdHJ1Y3QgY29tcGF0X3RpbWV2YWwgdGltZTsK LQlzMzIgdGljazsKLQlzMzIgcHBzZnJlcSwgaml0dGVyLCBzaGlmdCwgc3RhYmlsOwotCXMz MiBqaXRjbnQsIGNhbGNudCwgZXJyY250LCBzdGJjbnQ7Ci0JczMyICA6MzI7IHMzMiAgOjMy OyBzMzIgIDozMjsgczMyICA6MzI7Ci0JczMyICA6MzI7IHMzMiAgOjMyOyBzMzIgIDozMjsg czMyICA6MzI7Ci0JczMyICA6MzI7IHMzMiAgOjMyOyBzMzIgIDozMjsgczMyICA6MzI7Ci19 OwotCi1leHRlcm4gaW50IGRvX2FkanRpbWV4KHN0cnVjdCB0aW1leCAqKTsKLQotYXNtbGlu a2FnZSBsb25nCi1zeXMzMl9hZGp0aW1leChzdHJ1Y3QgdGltZXgzMiAqdXRwKQotewotCXN0 cnVjdCB0aW1leCB0eGM7Ci0JaW50IHJldDsKLQotCW1lbXNldCgmdHhjLCAwLCBzaXplb2Yo c3RydWN0IHRpbWV4KSk7Ci0KLQlpZihnZXRfdXNlcih0eGMubW9kZXMsICZ1dHAtPm1vZGVz KSB8fAotCSAgIF9fZ2V0X3VzZXIodHhjLm9mZnNldCwgJnV0cC0+b2Zmc2V0KSB8fAotCSAg IF9fZ2V0X3VzZXIodHhjLmZyZXEsICZ1dHAtPmZyZXEpIHx8Ci0JICAgX19nZXRfdXNlcih0 eGMubWF4ZXJyb3IsICZ1dHAtPm1heGVycm9yKSB8fAotCSAgIF9fZ2V0X3VzZXIodHhjLmVz dGVycm9yLCAmdXRwLT5lc3RlcnJvcikgfHwKLQkgICBfX2dldF91c2VyKHR4Yy5zdGF0dXMs ICZ1dHAtPnN0YXR1cykgfHwKLQkgICBfX2dldF91c2VyKHR4Yy5jb25zdGFudCwgJnV0cC0+ Y29uc3RhbnQpIHx8Ci0JICAgX19nZXRfdXNlcih0eGMucHJlY2lzaW9uLCAmdXRwLT5wcmVj aXNpb24pIHx8Ci0JICAgX19nZXRfdXNlcih0eGMudG9sZXJhbmNlLCAmdXRwLT50b2xlcmFu Y2UpIHx8Ci0JICAgX19nZXRfdXNlcih0eGMudGltZS50dl9zZWMsICZ1dHAtPnRpbWUudHZf c2VjKSB8fAotCSAgIF9fZ2V0X3VzZXIodHhjLnRpbWUudHZfdXNlYywgJnV0cC0+dGltZS50 dl91c2VjKSB8fAotCSAgIF9fZ2V0X3VzZXIodHhjLnRpY2ssICZ1dHAtPnRpY2spIHx8Ci0J ICAgX19nZXRfdXNlcih0eGMucHBzZnJlcSwgJnV0cC0+cHBzZnJlcSkgfHwKLQkgICBfX2dl dF91c2VyKHR4Yy5qaXR0ZXIsICZ1dHAtPmppdHRlcikgfHwKLQkgICBfX2dldF91c2VyKHR4 Yy5zaGlmdCwgJnV0cC0+c2hpZnQpIHx8Ci0JICAgX19nZXRfdXNlcih0eGMuc3RhYmlsLCAm dXRwLT5zdGFiaWwpIHx8Ci0JICAgX19nZXRfdXNlcih0eGMuaml0Y250LCAmdXRwLT5qaXRj bnQpIHx8Ci0JICAgX19nZXRfdXNlcih0eGMuY2FsY250LCAmdXRwLT5jYWxjbnQpIHx8Ci0J ICAgX19nZXRfdXNlcih0eGMuZXJyY250LCAmdXRwLT5lcnJjbnQpIHx8Ci0JICAgX19nZXRf dXNlcih0eGMuc3RiY250LCAmdXRwLT5zdGJjbnQpKQotCQlyZXR1cm4gLUVGQVVMVDsKLQot CXJldCA9IGRvX2FkanRpbWV4KCZ0eGMpOwotCi0JaWYocHV0X3VzZXIodHhjLm1vZGVzLCAm dXRwLT5tb2RlcykgfHwKLQkgICBfX3B1dF91c2VyKHR4Yy5vZmZzZXQsICZ1dHAtPm9mZnNl dCkgfHwKLQkgICBfX3B1dF91c2VyKHR4Yy5mcmVxLCAmdXRwLT5mcmVxKSB8fAotCSAgIF9f cHV0X3VzZXIodHhjLm1heGVycm9yLCAmdXRwLT5tYXhlcnJvcikgfHwKLQkgICBfX3B1dF91 c2VyKHR4Yy5lc3RlcnJvciwgJnV0cC0+ZXN0ZXJyb3IpIHx8Ci0JICAgX19wdXRfdXNlcih0 eGMuc3RhdHVzLCAmdXRwLT5zdGF0dXMpIHx8Ci0JICAgX19wdXRfdXNlcih0eGMuY29uc3Rh bnQsICZ1dHAtPmNvbnN0YW50KSB8fAotCSAgIF9fcHV0X3VzZXIodHhjLnByZWNpc2lvbiwg JnV0cC0+cHJlY2lzaW9uKSB8fAotCSAgIF9fcHV0X3VzZXIodHhjLnRvbGVyYW5jZSwgJnV0 cC0+dG9sZXJhbmNlKSB8fAotCSAgIF9fcHV0X3VzZXIodHhjLnRpbWUudHZfc2VjLCAmdXRw LT50aW1lLnR2X3NlYykgfHwKLQkgICBfX3B1dF91c2VyKHR4Yy50aW1lLnR2X3VzZWMsICZ1 dHAtPnRpbWUudHZfdXNlYykgfHwKLQkgICBfX3B1dF91c2VyKHR4Yy50aWNrLCAmdXRwLT50 aWNrKSB8fAotCSAgIF9fcHV0X3VzZXIodHhjLnBwc2ZyZXEsICZ1dHAtPnBwc2ZyZXEpIHx8 Ci0JICAgX19wdXRfdXNlcih0eGMuaml0dGVyLCAmdXRwLT5qaXR0ZXIpIHx8Ci0JICAgX19w dXRfdXNlcih0eGMuc2hpZnQsICZ1dHAtPnNoaWZ0KSB8fAotCSAgIF9fcHV0X3VzZXIodHhj LnN0YWJpbCwgJnV0cC0+c3RhYmlsKSB8fAotCSAgIF9fcHV0X3VzZXIodHhjLmppdGNudCwg JnV0cC0+aml0Y250KSB8fAotCSAgIF9fcHV0X3VzZXIodHhjLmNhbGNudCwgJnV0cC0+Y2Fs Y250KSB8fAotCSAgIF9fcHV0X3VzZXIodHhjLmVycmNudCwgJnV0cC0+ZXJyY250KSB8fAot CSAgIF9fcHV0X3VzZXIodHhjLnN0YmNudCwgJnV0cC0+c3RiY250KSkKLQkJcmV0ID0gLUVG QVVMVDsKLQotCXJldHVybiByZXQ7Ci19CiAjZW5kaWYgLyogTk9UWUVUICovCmRpZmYgLXB1 ck4gbGludXgtMi42LjcvYXJjaC9taXBzL2tlcm5lbC9saW51eDMyLmMgbGludXgtMi42Ljct YWRqdGltZXgvYXJjaC9taXBzL2tlcm5lbC9saW51eDMyLmMKLS0tIGxpbnV4LTIuNi43L2Fy Y2gvbWlwcy9rZXJuZWwvbGludXgzMi5jCTIwMDQtMDYtMTcgMTU6NTU6MjguMDAwMDAwMDAw ICswODAwCisrKyBsaW51eC0yLjYuNy1hZGp0aW1leC9hcmNoL21pcHMva2VybmVsL2xpbnV4 MzIuYwkyMDA0LTA2LTMwIDEwOjQ5OjUxLjAwMDAwMDAwMCArMDgwMApAQCAtMTI1Nyw3OSAr MTI1Nyw2IEBAIG91dDoKIAlyZXR1cm4gZXJyOwogfQogCi0vKiBIYW5kbGUgYWRqdGltZXgg Y29tcGF0aWJpbGl0eS4gKi8KLQotc3RydWN0IHRpbWV4MzIgewotCXUzMiBtb2RlczsKLQlz MzIgb2Zmc2V0LCBmcmVxLCBtYXhlcnJvciwgZXN0ZXJyb3I7Ci0JczMyIHN0YXR1cywgY29u c3RhbnQsIHByZWNpc2lvbiwgdG9sZXJhbmNlOwotCXN0cnVjdCBjb21wYXRfdGltZXZhbCB0 aW1lOwotCXMzMiB0aWNrOwotCXMzMiBwcHNmcmVxLCBqaXR0ZXIsIHNoaWZ0LCBzdGFiaWw7 Ci0JczMyIGppdGNudCwgY2FsY250LCBlcnJjbnQsIHN0YmNudDsKLQlzMzIgIDozMjsgczMy ICA6MzI7IHMzMiAgOjMyOyBzMzIgIDozMjsKLQlzMzIgIDozMjsgczMyICA6MzI7IHMzMiAg OjMyOyBzMzIgIDozMjsKLQlzMzIgIDozMjsgczMyICA6MzI7IHMzMiAgOjMyOyBzMzIgIDoz MjsKLX07Ci0KLWV4dGVybiBpbnQgZG9fYWRqdGltZXgoc3RydWN0IHRpbWV4ICopOwotCi1h c21saW5rYWdlIGludCBzeXMzMl9hZGp0aW1leChzdHJ1Y3QgdGltZXgzMiAqdXRwKQotewot CXN0cnVjdCB0aW1leCB0eGM7Ci0JaW50IHJldDsKLQotCW1lbXNldCgmdHhjLCAwLCBzaXpl b2Yoc3RydWN0IHRpbWV4KSk7Ci0KLQlpZiAoZ2V0X3VzZXIodHhjLm1vZGVzLCAmdXRwLT5t b2RlcykgfHwKLQkgICBfX2dldF91c2VyKHR4Yy5vZmZzZXQsICZ1dHAtPm9mZnNldCkgfHwK LQkgICBfX2dldF91c2VyKHR4Yy5mcmVxLCAmdXRwLT5mcmVxKSB8fAotCSAgIF9fZ2V0X3Vz ZXIodHhjLm1heGVycm9yLCAmdXRwLT5tYXhlcnJvcikgfHwKLQkgICBfX2dldF91c2VyKHR4 Yy5lc3RlcnJvciwgJnV0cC0+ZXN0ZXJyb3IpIHx8Ci0JICAgX19nZXRfdXNlcih0eGMuc3Rh dHVzLCAmdXRwLT5zdGF0dXMpIHx8Ci0JICAgX19nZXRfdXNlcih0eGMuY29uc3RhbnQsICZ1 dHAtPmNvbnN0YW50KSB8fAotCSAgIF9fZ2V0X3VzZXIodHhjLnByZWNpc2lvbiwgJnV0cC0+ cHJlY2lzaW9uKSB8fAotCSAgIF9fZ2V0X3VzZXIodHhjLnRvbGVyYW5jZSwgJnV0cC0+dG9s ZXJhbmNlKSB8fAotCSAgIF9fZ2V0X3VzZXIodHhjLnRpbWUudHZfc2VjLCAmdXRwLT50aW1l LnR2X3NlYykgfHwKLQkgICBfX2dldF91c2VyKHR4Yy50aW1lLnR2X3VzZWMsICZ1dHAtPnRp bWUudHZfdXNlYykgfHwKLQkgICBfX2dldF91c2VyKHR4Yy50aWNrLCAmdXRwLT50aWNrKSB8 fAotCSAgIF9fZ2V0X3VzZXIodHhjLnBwc2ZyZXEsICZ1dHAtPnBwc2ZyZXEpIHx8Ci0JICAg X19nZXRfdXNlcih0eGMuaml0dGVyLCAmdXRwLT5qaXR0ZXIpIHx8Ci0JICAgX19nZXRfdXNl cih0eGMuc2hpZnQsICZ1dHAtPnNoaWZ0KSB8fAotCSAgIF9fZ2V0X3VzZXIodHhjLnN0YWJp bCwgJnV0cC0+c3RhYmlsKSB8fAotCSAgIF9fZ2V0X3VzZXIodHhjLmppdGNudCwgJnV0cC0+ aml0Y250KSB8fAotCSAgIF9fZ2V0X3VzZXIodHhjLmNhbGNudCwgJnV0cC0+Y2FsY250KSB8 fAotCSAgIF9fZ2V0X3VzZXIodHhjLmVycmNudCwgJnV0cC0+ZXJyY250KSB8fAotCSAgIF9f Z2V0X3VzZXIodHhjLnN0YmNudCwgJnV0cC0+c3RiY250KSkKLQkJcmV0dXJuIC1FRkFVTFQ7 Ci0KLQlyZXQgPSBkb19hZGp0aW1leCgmdHhjKTsKLQotCWlmIChwdXRfdXNlcih0eGMubW9k ZXMsICZ1dHAtPm1vZGVzKSB8fAotCSAgIF9fcHV0X3VzZXIodHhjLm9mZnNldCwgJnV0cC0+ b2Zmc2V0KSB8fAotCSAgIF9fcHV0X3VzZXIodHhjLmZyZXEsICZ1dHAtPmZyZXEpIHx8Ci0J ICAgX19wdXRfdXNlcih0eGMubWF4ZXJyb3IsICZ1dHAtPm1heGVycm9yKSB8fAotCSAgIF9f cHV0X3VzZXIodHhjLmVzdGVycm9yLCAmdXRwLT5lc3RlcnJvcikgfHwKLQkgICBfX3B1dF91 c2VyKHR4Yy5zdGF0dXMsICZ1dHAtPnN0YXR1cykgfHwKLQkgICBfX3B1dF91c2VyKHR4Yy5j b25zdGFudCwgJnV0cC0+Y29uc3RhbnQpIHx8Ci0JICAgX19wdXRfdXNlcih0eGMucHJlY2lz aW9uLCAmdXRwLT5wcmVjaXNpb24pIHx8Ci0JICAgX19wdXRfdXNlcih0eGMudG9sZXJhbmNl LCAmdXRwLT50b2xlcmFuY2UpIHx8Ci0JICAgX19wdXRfdXNlcih0eGMudGltZS50dl9zZWMs ICZ1dHAtPnRpbWUudHZfc2VjKSB8fAotCSAgIF9fcHV0X3VzZXIodHhjLnRpbWUudHZfdXNl YywgJnV0cC0+dGltZS50dl91c2VjKSB8fAotCSAgIF9fcHV0X3VzZXIodHhjLnRpY2ssICZ1 dHAtPnRpY2spIHx8Ci0JICAgX19wdXRfdXNlcih0eGMucHBzZnJlcSwgJnV0cC0+cHBzZnJl cSkgfHwKLQkgICBfX3B1dF91c2VyKHR4Yy5qaXR0ZXIsICZ1dHAtPmppdHRlcikgfHwKLQkg ICBfX3B1dF91c2VyKHR4Yy5zaGlmdCwgJnV0cC0+c2hpZnQpIHx8Ci0JICAgX19wdXRfdXNl cih0eGMuc3RhYmlsLCAmdXRwLT5zdGFiaWwpIHx8Ci0JICAgX19wdXRfdXNlcih0eGMuaml0 Y250LCAmdXRwLT5qaXRjbnQpIHx8Ci0JICAgX19wdXRfdXNlcih0eGMuY2FsY250LCAmdXRw LT5jYWxjbnQpIHx8Ci0JICAgX19wdXRfdXNlcih0eGMuZXJyY250LCAmdXRwLT5lcnJjbnQp IHx8Ci0JICAgX19wdXRfdXNlcih0eGMuc3RiY250LCAmdXRwLT5zdGJjbnQpKQotCQlyZXQg PSAtRUZBVUxUOwotCi0JcmV0dXJuIHJldDsKLX0KLQogYXNtbGlua2FnZSBpbnQgc3lzMzJf c2VuZGZpbGUoaW50IG91dF9mZCwgaW50IGluX2ZkLCBjb21wYXRfb2ZmX3QgKm9mZnNldCwK IAlzMzIgY291bnQpCiB7CmRpZmYgLXB1ck4gbGludXgtMi42LjcvYXJjaC9taXBzL2tlcm5l bC9zY2FsbDY0LW4zMi5TIGxpbnV4LTIuNi43LWFkanRpbWV4L2FyY2gvbWlwcy9rZXJuZWwv c2NhbGw2NC1uMzIuUwotLS0gbGludXgtMi42LjcvYXJjaC9taXBzL2tlcm5lbC9zY2FsbDY0 LW4zMi5TCTIwMDQtMDYtMTcgMTU6NTU6MjguMDAwMDAwMDAwICswODAwCisrKyBsaW51eC0y LjYuNy1hZGp0aW1leC9hcmNoL21pcHMva2VybmVsL3NjYWxsNjQtbjMyLlMJMjAwNC0wNi0z MCAxMDo1MDo1OS4wMDAwMDAwMDAgKzA4MDAKQEAgLTI3MSw3ICsyNzEsNyBAQCBFWFBPUlQo c3lzbjMyX2NhbGxfdGFibGUpCiAJUFRSCXN5c19waXZvdF9yb290CiAJUFRSCXN5czMyX3N5 c2N0bAogCVBUUglzeXNfcHJjdGwKLQlQVFIJc3lzMzJfYWRqdGltZXgKKwlQVFIJY29tcGF0 X3N5c19hZGp0aW1leAogCVBUUgljb21wYXRfc3lzX3NldHJsaW1pdAkJLyogNjE1NSAqLwog CVBUUglzeXNfY2hyb290CiAJUFRSCXN5c19zeW5jCmRpZmYgLXB1ck4gbGludXgtMi42Ljcv YXJjaC9taXBzL2tlcm5lbC9zY2FsbDY0LW8zMi5TIGxpbnV4LTIuNi43LWFkanRpbWV4L2Fy Y2gvbWlwcy9rZXJuZWwvc2NhbGw2NC1vMzIuUwotLS0gbGludXgtMi42LjcvYXJjaC9taXBz L2tlcm5lbC9zY2FsbDY0LW8zMi5TCTIwMDQtMDYtMTcgMTU6NTU6MjguMDAwMDAwMDAwICsw ODAwCisrKyBsaW51eC0yLjYuNy1hZGp0aW1leC9hcmNoL21pcHMva2VybmVsL3NjYWxsNjQt bzMyLlMJMjAwNC0wNi0zMCAxMDo1MTo1MS4wMDAwMDAwMDAgKzA4MDAKQEAgLTM4Miw3ICsz ODIsNyBAQCBvdXQ6CWpyCXJhCiAJc3lzCXN5c19zZXRkb21haW5uYW1lIDIKIAlzeXMJc3lz MzJfbmV3dW5hbWUJMQogCXN5cwlzeXNfbmlfc3lzY2FsbAkwCS8qIHN5c19tb2RpZnlfbGR0 ICovCi0Jc3lzCXN5czMyX2FkanRpbWV4CTEKKwlzeXMJY29tcGF0X3N5c19hZGp0aW1leAkx CiAJc3lzCXN5c19tcHJvdGVjdAkzCQkJLyogNDEyNSAqLwogCXN5cwljb21wYXRfc3lzX3Np Z3Byb2NtYXNrCTMKIAlzeXMJc3lzX25pX3N5c2NhbGwJMAkJCS8qIHdhcyBjcmVhdF9tb2R1 bGUgKi8KZGlmZiAtcHVyTiBsaW51eC0yLjYuNy9hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2Fs bF90YWJsZS5TIGxpbnV4LTIuNi43LWFkanRpbWV4L2FyY2gvcGFyaXNjL2tlcm5lbC9zeXNj YWxsX3RhYmxlLlMKLS0tIGxpbnV4LTIuNi43L2FyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxs X3RhYmxlLlMJMjAwNC0wNi0xNyAxNTo1NTozNy4wMDAwMDAwMDAgKzA4MDAKKysrIGxpbnV4 LTIuNi43LWFkanRpbWV4L2FyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxsX3RhYmxlLlMJMjAw NC0wNi0zMCAxMDo1OToxMC4wMDAwMDAwMDAgKzA4MDAKQEAgLTIwNyw3ICsyMDcsNyBAQAog CS8qIHN0cnVjdCBzb2NrYWRkci4uLiAqLwogCUVOVFJZX1NBTUUocmVjdmZyb20pCiAJLyog c3RydWN0IHRpbWV4IGNvbnRhaW5zIGxvbmdzICovCi0JRU5UUllfRElGRihhZGp0aW1leCkK KwlFTlRSWV9DT01QKGFkanRpbWV4KQogCUVOVFJZX1NBTUUobXByb3RlY3QpCQkvKiAxMjUg Ki8KIAkvKiBvbGRfc2lnc2V0X3QgZm9yY2VkIHRvIDMyIGJpdHMuICBCZXdhcmUgZ2xpYmMg c2lnc2V0X3QgKi8KIAlFTlRSWV9DT01QKHNpZ3Byb2NtYXNrKQpkaWZmIC1wdXJOIGxpbnV4 LTIuNi43L2FyY2gvcGFyaXNjL2tlcm5lbC9zeXNfcGFyaXNjMzIuYyBsaW51eC0yLjYuNy1h ZGp0aW1leC9hcmNoL3BhcmlzYy9rZXJuZWwvc3lzX3BhcmlzYzMyLmMKLS0tIGxpbnV4LTIu Ni43L2FyY2gvcGFyaXNjL2tlcm5lbC9zeXNfcGFyaXNjMzIuYwkyMDA0LTA2LTE3IDE1OjU1 OjM3LjAwMDAwMDAwMCArMDgwMAorKysgbGludXgtMi42LjctYWRqdGltZXgvYXJjaC9wYXJp c2Mva2VybmVsL3N5c19wYXJpc2MzMi5jCTIwMDQtMDYtMzAgMTA6NTg6MTQuMDAwMDAwMDAw ICswODAwCkBAIC01ODUsNjQgKzU4NSw2IEBAIGFzbWxpbmthZ2UgaW50IHN5czMyX3NlbmRm aWxlNjQoaW50IG91dF8KIAlyZXR1cm4gcmV0OwogfQogCi0KLXN0cnVjdCB0aW1leDMyIHsK LQl1bnNpZ25lZCBpbnQgbW9kZXM7CS8qIG1vZGUgc2VsZWN0b3IgKi8KLQlpbnQgb2Zmc2V0 OwkJLyogdGltZSBvZmZzZXQgKHVzZWMpICovCi0JaW50IGZyZXE7CQkvKiBmcmVxdWVuY3kg b2Zmc2V0IChzY2FsZWQgcHBtKSAqLwotCWludCBtYXhlcnJvcjsJCS8qIG1heGltdW0gZXJy b3IgKHVzZWMpICovCi0JaW50IGVzdGVycm9yOwkJLyogZXN0aW1hdGVkIGVycm9yICh1c2Vj KSAqLwotCWludCBzdGF0dXM7CQkvKiBjbG9jayBjb21tYW5kL3N0YXR1cyAqLwotCWludCBj b25zdGFudDsJCS8qIHBsbCB0aW1lIGNvbnN0YW50ICovCi0JaW50IHByZWNpc2lvbjsJCS8q IGNsb2NrIHByZWNpc2lvbiAodXNlYykgKHJlYWQgb25seSkgKi8KLQlpbnQgdG9sZXJhbmNl OwkJLyogY2xvY2sgZnJlcXVlbmN5IHRvbGVyYW5jZSAocHBtKQotCQkJCSAqIChyZWFkIG9u bHkpCi0JCQkJICovCi0Jc3RydWN0IGNvbXBhdF90aW1ldmFsIHRpbWU7CS8qIChyZWFkIG9u bHkpICovCi0JaW50IHRpY2s7CQkvKiAobW9kaWZpZWQpIHVzZWNzIGJldHdlZW4gY2xvY2sg dGlja3MgKi8KLQotCWludCBwcHNmcmVxOyAgICAgICAgICAgLyogcHBzIGZyZXF1ZW5jeSAo c2NhbGVkIHBwbSkgKHJvKSAqLwotCWludCBqaXR0ZXI7ICAgICAgICAgICAgLyogcHBzIGpp dHRlciAodXMpIChybykgKi8KLQlpbnQgc2hpZnQ7ICAgICAgICAgICAgICAvKiBpbnRlcnZh bCBkdXJhdGlvbiAocykgKHNoaWZ0KSAocm8pICovCi0JaW50IHN0YWJpbDsgICAgICAgICAg ICAvKiBwcHMgc3RhYmlsaXR5IChzY2FsZWQgcHBtKSAocm8pICovCi0JaW50IGppdGNudDsg ICAgICAgICAgICAvKiBqaXR0ZXIgbGltaXQgZXhjZWVkZWQgKHJvKSAqLwotCWludCBjYWxj bnQ7ICAgICAgICAgICAgLyogY2FsaWJyYXRpb24gaW50ZXJ2YWxzIChybykgKi8KLQlpbnQg ZXJyY250OyAgICAgICAgICAgIC8qIGNhbGlicmF0aW9uIGVycm9ycyAocm8pICovCi0JaW50 IHN0YmNudDsgICAgICAgICAgICAvKiBzdGFiaWxpdHkgbGltaXQgZXhjZWVkZWQgKHJvKSAq LwotCi0JaW50ICA6MzI7IGludCAgOjMyOyBpbnQgIDozMjsgaW50ICA6MzI7Ci0JaW50ICA6 MzI7IGludCAgOjMyOyBpbnQgIDozMjsgaW50ICA6MzI7Ci0JaW50ICA6MzI7IGludCAgOjMy OyBpbnQgIDozMjsgaW50ICA6MzI7Ci19OwotCi1hc21saW5rYWdlIGxvbmcgc3lzMzJfYWRq dGltZXgoc3RydWN0IHRpbWV4MzIgKnR4Y19wMzIpCi17Ci0Jc3RydWN0IHRpbWV4IHR4YzsK LQlzdHJ1Y3QgdGltZXgzMiB0MzI7Ci0JaW50IHJldDsKLQlleHRlcm4gaW50IGRvX2FkanRp bWV4KHN0cnVjdCB0aW1leCAqdHhjKTsKLQotCWlmKGNvcHlfZnJvbV91c2VyKCZ0MzIsIHR4 Y19wMzIsIHNpemVvZihzdHJ1Y3QgdGltZXgzMikpKQotCQlyZXR1cm4gLUVGQVVMVDsKLSN1 bmRlZiBDUAotI2RlZmluZSBDUCh4KSB0eGMueCA9IHQzMi54Ci0JQ1AobW9kZXMpOyBDUChv ZmZzZXQpOyBDUChmcmVxKTsgQ1AobWF4ZXJyb3IpOyBDUChlc3RlcnJvcik7Ci0JQ1Aoc3Rh dHVzKTsgQ1AoY29uc3RhbnQpOyBDUChwcmVjaXNpb24pOyBDUCh0b2xlcmFuY2UpOwotCUNQ KHRpbWUudHZfc2VjKTsgQ1AodGltZS50dl91c2VjKTsgQ1AodGljayk7IENQKHBwc2ZyZXEp OyBDUChqaXR0ZXIpOwotCUNQKHNoaWZ0KTsgQ1Aoc3RhYmlsKTsgQ1Aoaml0Y250KTsgQ1Ao Y2FsY250KTsgQ1AoZXJyY250KTsKLQlDUChzdGJjbnQpOwotCXJldCA9IGRvX2FkanRpbWV4 KCZ0eGMpOwotI3VuZGVmIENQCi0jZGVmaW5lIENQKHgpIHQzMi54ID0gdHhjLngKLQlDUCht b2Rlcyk7IENQKG9mZnNldCk7IENQKGZyZXEpOyBDUChtYXhlcnJvcik7IENQKGVzdGVycm9y KTsKLQlDUChzdGF0dXMpOyBDUChjb25zdGFudCk7IENQKHByZWNpc2lvbik7IENQKHRvbGVy YW5jZSk7Ci0JQ1AodGltZS50dl9zZWMpOyBDUCh0aW1lLnR2X3VzZWMpOyBDUCh0aWNrKTsg Q1AocHBzZnJlcSk7IENQKGppdHRlcik7Ci0JQ1Aoc2hpZnQpOyBDUChzdGFiaWwpOyBDUChq aXRjbnQpOyBDUChjYWxjbnQpOyBDUChlcnJjbnQpOwotCUNQKHN0YmNudCk7Ci0JcmV0dXJu IGNvcHlfdG9fdXNlcih0eGNfcDMyLCAmdDMyLCBzaXplb2Yoc3RydWN0IHRpbWV4MzIpKSA/ IC1FRkFVTFQgOiByZXQ7Ci19Ci0KLQogc3RydWN0IHN5c2luZm8zMiB7CiAJczMyIHVwdGlt ZTsKIAl1MzIgbG9hZHNbM107CmRpZmYgLXB1ck4gbGludXgtMi42LjcvYXJjaC9wcGM2NC9r ZXJuZWwvbWlzYy5TIGxpbnV4LTIuNi43LWFkanRpbWV4L2FyY2gvcHBjNjQva2VybmVsL21p c2MuUwotLS0gbGludXgtMi42LjcvYXJjaC9wcGM2NC9rZXJuZWwvbWlzYy5TCTIwMDQtMDYt MTcgMTU6NTU6MzMuMDAwMDAwMDAwICswODAwCisrKyBsaW51eC0yLjYuNy1hZGp0aW1leC9h cmNoL3BwYzY0L2tlcm5lbC9taXNjLlMJMjAwNC0wNy0wMSAwODozODo1My4wMDAwMDAwMDAg KzA4MDAKQEAgLTczMCw3ICs3MzAsNyBAQCBfR0xPQkFMKHN5c19jYWxsX3RhYmxlMzIpCiAJ Lmxsb25nIC5zeXMzMl9zZXRkb21haW5uYW1lCiAJLmxsb25nIC5wcGM2NF9uZXd1bmFtZQog CS5sbG9uZyAuc3lzX25pX3N5c2NhbGwJCS8qIG9sZCBtb2RpZnlfbGR0IHN5c2NhbGwgKi8K LQkubGxvbmcgLnN5czMyX2FkanRpbWV4CisJLmxsb25nIC5jb21wYXRfc3lzX2FkanRpbWV4 CiAJLmxsb25nIC5zeXNfbXByb3RlY3QJCS8qIDEyNSAqLwogCS5sbG9uZyAuY29tcGF0X3N5 c19zaWdwcm9jbWFzawogCS5sbG9uZyAuc3lzX25pX3N5c2NhbGwJCS8qIG9sZCBjcmVhdGVf bW9kdWxlIHN5c2NhbGwgKi8KZGlmZiAtcHVyTiBsaW51eC0yLjYuNy9hcmNoL3BwYzY0L2tl cm5lbC9zeXNfcHBjMzIuYyBsaW51eC0yLjYuNy1hZGp0aW1leC9hcmNoL3BwYzY0L2tlcm5l bC9zeXNfcHBjMzIuYwotLS0gbGludXgtMi42LjcvYXJjaC9wcGM2NC9rZXJuZWwvc3lzX3Bw YzMyLmMJMjAwNC0wNi0xNyAxNTo1NTozMy4wMDAwMDAwMDAgKzA4MDAKKysrIGxpbnV4LTIu Ni43LWFkanRpbWV4L2FyY2gvcHBjNjQva2VybmVsL3N5c19wcGMzMi5jCTIwMDQtMDctMDEg MDg6Mzc6MjMuMDAwMDAwMDAwICswODAwCkBAIC0yNzQsODMgKzI3NCw2IEBAIGFzbWxpbmth Z2UgbG9uZyBzeXMzMl9zeXNmcyh1MzIgb3B0aW9uLCAKIAlyZXR1cm4gc3lzX3N5c2ZzKChp bnQpb3B0aW9uLCBhcmcxLCBhcmcyKTsKIH0KIAotLyogSGFuZGxlIGFkanRpbWV4IGNvbXBh dGliaWxpdHkuICovCi1zdHJ1Y3QgdGltZXgzMiB7Ci0JdTMyIG1vZGVzOwotCXMzMiBvZmZz ZXQsIGZyZXEsIG1heGVycm9yLCBlc3RlcnJvcjsKLQlzMzIgc3RhdHVzLCBjb25zdGFudCwg cHJlY2lzaW9uLCB0b2xlcmFuY2U7Ci0Jc3RydWN0IGNvbXBhdF90aW1ldmFsIHRpbWU7Ci0J czMyIHRpY2s7Ci0JczMyIHBwc2ZyZXEsIGppdHRlciwgc2hpZnQsIHN0YWJpbDsKLQlzMzIg aml0Y250LCBjYWxjbnQsIGVycmNudCwgc3RiY250OwotCXMzMiAgOjMyOyBzMzIgIDozMjsg czMyICA6MzI7IHMzMiAgOjMyOwotCXMzMiAgOjMyOyBzMzIgIDozMjsgczMyICA6MzI7IHMz MiAgOjMyOwotCXMzMiAgOjMyOyBzMzIgIDozMjsgczMyICA6MzI7IHMzMiAgOjMyOwotfTsK LQotZXh0ZXJuIGludCBkb19hZGp0aW1leChzdHJ1Y3QgdGltZXggKik7Ci1leHRlcm4gdm9p ZCBwcGNfYWRqdGltZXgodm9pZCk7Ci0KLWFzbWxpbmthZ2UgbG9uZyBzeXMzMl9hZGp0aW1l eChzdHJ1Y3QgdGltZXgzMiBfX3VzZXIgKnV0cCkKLXsKLQlzdHJ1Y3QgdGltZXggdHhjOwot CWludCByZXQ7Ci0JCi0JbWVtc2V0KCZ0eGMsIDAsIHNpemVvZihzdHJ1Y3QgdGltZXgpKTsK LQotCWlmKGdldF91c2VyKHR4Yy5tb2RlcywgJnV0cC0+bW9kZXMpIHx8Ci0JICAgX19nZXRf dXNlcih0eGMub2Zmc2V0LCAmdXRwLT5vZmZzZXQpIHx8Ci0JICAgX19nZXRfdXNlcih0eGMu ZnJlcSwgJnV0cC0+ZnJlcSkgfHwKLQkgICBfX2dldF91c2VyKHR4Yy5tYXhlcnJvciwgJnV0 cC0+bWF4ZXJyb3IpIHx8Ci0JICAgX19nZXRfdXNlcih0eGMuZXN0ZXJyb3IsICZ1dHAtPmVz dGVycm9yKSB8fAotCSAgIF9fZ2V0X3VzZXIodHhjLnN0YXR1cywgJnV0cC0+c3RhdHVzKSB8 fAotCSAgIF9fZ2V0X3VzZXIodHhjLmNvbnN0YW50LCAmdXRwLT5jb25zdGFudCkgfHwKLQkg ICBfX2dldF91c2VyKHR4Yy5wcmVjaXNpb24sICZ1dHAtPnByZWNpc2lvbikgfHwKLQkgICBf X2dldF91c2VyKHR4Yy50b2xlcmFuY2UsICZ1dHAtPnRvbGVyYW5jZSkgfHwKLQkgICBfX2dl dF91c2VyKHR4Yy50aW1lLnR2X3NlYywgJnV0cC0+dGltZS50dl9zZWMpIHx8Ci0JICAgX19n ZXRfdXNlcih0eGMudGltZS50dl91c2VjLCAmdXRwLT50aW1lLnR2X3VzZWMpIHx8Ci0JICAg X19nZXRfdXNlcih0eGMudGljaywgJnV0cC0+dGljaykgfHwKLQkgICBfX2dldF91c2VyKHR4 Yy5wcHNmcmVxLCAmdXRwLT5wcHNmcmVxKSB8fAotCSAgIF9fZ2V0X3VzZXIodHhjLmppdHRl ciwgJnV0cC0+aml0dGVyKSB8fAotCSAgIF9fZ2V0X3VzZXIodHhjLnNoaWZ0LCAmdXRwLT5z aGlmdCkgfHwKLQkgICBfX2dldF91c2VyKHR4Yy5zdGFiaWwsICZ1dHAtPnN0YWJpbCkgfHwK LQkgICBfX2dldF91c2VyKHR4Yy5qaXRjbnQsICZ1dHAtPmppdGNudCkgfHwKLQkgICBfX2dl dF91c2VyKHR4Yy5jYWxjbnQsICZ1dHAtPmNhbGNudCkgfHwKLQkgICBfX2dldF91c2VyKHR4 Yy5lcnJjbnQsICZ1dHAtPmVycmNudCkgfHwKLQkgICBfX2dldF91c2VyKHR4Yy5zdGJjbnQs ICZ1dHAtPnN0YmNudCkpCi0JCXJldHVybiAtRUZBVUxUOwotCi0JcmV0ID0gZG9fYWRqdGlt ZXgoJnR4Yyk7Ci0KLQkvKiBhZGp1c3QgdGhlIGNvbnZlcnNpb24gb2YgVEIgdG8gdGltZSBv ZiBkYXkgdG8gdHJhY2sgYWRqdGltZXggKi8KLQlwcGNfYWRqdGltZXgoKTsKLQotCWlmKHB1 dF91c2VyKHR4Yy5tb2RlcywgJnV0cC0+bW9kZXMpIHx8Ci0JICAgX19wdXRfdXNlcih0eGMu b2Zmc2V0LCAmdXRwLT5vZmZzZXQpIHx8Ci0JICAgX19wdXRfdXNlcih0eGMuZnJlcSwgJnV0 cC0+ZnJlcSkgfHwKLQkgICBfX3B1dF91c2VyKHR4Yy5tYXhlcnJvciwgJnV0cC0+bWF4ZXJy b3IpIHx8Ci0JICAgX19wdXRfdXNlcih0eGMuZXN0ZXJyb3IsICZ1dHAtPmVzdGVycm9yKSB8 fAotCSAgIF9fcHV0X3VzZXIodHhjLnN0YXR1cywgJnV0cC0+c3RhdHVzKSB8fAotCSAgIF9f cHV0X3VzZXIodHhjLmNvbnN0YW50LCAmdXRwLT5jb25zdGFudCkgfHwKLQkgICBfX3B1dF91 c2VyKHR4Yy5wcmVjaXNpb24sICZ1dHAtPnByZWNpc2lvbikgfHwKLQkgICBfX3B1dF91c2Vy KHR4Yy50b2xlcmFuY2UsICZ1dHAtPnRvbGVyYW5jZSkgfHwKLQkgICBfX3B1dF91c2VyKHR4 Yy50aW1lLnR2X3NlYywgJnV0cC0+dGltZS50dl9zZWMpIHx8Ci0JICAgX19wdXRfdXNlcih0 eGMudGltZS50dl91c2VjLCAmdXRwLT50aW1lLnR2X3VzZWMpIHx8Ci0JICAgX19wdXRfdXNl cih0eGMudGljaywgJnV0cC0+dGljaykgfHwKLQkgICBfX3B1dF91c2VyKHR4Yy5wcHNmcmVx LCAmdXRwLT5wcHNmcmVxKSB8fAotCSAgIF9fcHV0X3VzZXIodHhjLmppdHRlciwgJnV0cC0+ aml0dGVyKSB8fAotCSAgIF9fcHV0X3VzZXIodHhjLnNoaWZ0LCAmdXRwLT5zaGlmdCkgfHwK LQkgICBfX3B1dF91c2VyKHR4Yy5zdGFiaWwsICZ1dHAtPnN0YWJpbCkgfHwKLQkgICBfX3B1 dF91c2VyKHR4Yy5qaXRjbnQsICZ1dHAtPmppdGNudCkgfHwKLQkgICBfX3B1dF91c2VyKHR4 Yy5jYWxjbnQsICZ1dHAtPmNhbGNudCkgfHwKLQkgICBfX3B1dF91c2VyKHR4Yy5lcnJjbnQs ICZ1dHAtPmVycmNudCkgfHwKLQkgICBfX3B1dF91c2VyKHR4Yy5zdGJjbnQsICZ1dHAtPnN0 YmNudCkpCi0JCXJldCA9IC1FRkFVTFQ7Ci0KLQlyZXR1cm4gcmV0OwotfQotCi0KIC8qIFRo ZXNlIGFyZSBoZXJlIGp1c3QgaW4gY2FzZSBzb21lIG9sZCBzcGFyYzMyIGJpbmFyeSBjYWxs cyBpdC4gKi8KIGFzbWxpbmthZ2UgbG9uZyBzeXMzMl9wYXVzZSh2b2lkKQogewpkaWZmIC1w dXJOIGxpbnV4LTIuNi43L2FyY2gvczM5MC9rZXJuZWwvY29tcGF0X2xpbnV4LmMgbGludXgt Mi42LjctYWRqdGltZXgvYXJjaC9zMzkwL2tlcm5lbC9jb21wYXRfbGludXguYwotLS0gbGlu dXgtMi42LjcvYXJjaC9zMzkwL2tlcm5lbC9jb21wYXRfbGludXguYwkyMDA0LTA2LTE3IDE1 OjU1OjM3LjAwMDAwMDAwMCArMDgwMAorKysgbGludXgtMi42LjctYWRqdGltZXgvYXJjaC9z MzkwL2tlcm5lbC9jb21wYXRfbGludXguYwkyMDA0LTA2LTMwIDExOjA1OjQ3LjAwMDAwMDAw MCArMDgwMApAQCAtOTE2LDc5ICs5MTYsNiBAQCBhc21saW5rYWdlIGxvbmcgc3lzMzJfc2Vu ZGZpbGU2NChpbnQgb3V0CiAJcmV0dXJuIHJldDsKIH0KIAotLyogSGFuZGxlIGFkanRpbWV4 IGNvbXBhdGliaWxpdHkuICovCi0KLXN0cnVjdCB0aW1leDMyIHsKLQl1MzIgbW9kZXM7Ci0J czMyIG9mZnNldCwgZnJlcSwgbWF4ZXJyb3IsIGVzdGVycm9yOwotCXMzMiBzdGF0dXMsIGNv bnN0YW50LCBwcmVjaXNpb24sIHRvbGVyYW5jZTsKLQlzdHJ1Y3QgY29tcGF0X3RpbWV2YWwg dGltZTsKLQlzMzIgdGljazsKLQlzMzIgcHBzZnJlcSwgaml0dGVyLCBzaGlmdCwgc3RhYmls OwotCXMzMiBqaXRjbnQsIGNhbGNudCwgZXJyY250LCBzdGJjbnQ7Ci0JczMyICA6MzI7IHMz MiAgOjMyOyBzMzIgIDozMjsgczMyICA6MzI7Ci0JczMyICA6MzI7IHMzMiAgOjMyOyBzMzIg IDozMjsgczMyICA6MzI7Ci0JczMyICA6MzI7IHMzMiAgOjMyOyBzMzIgIDozMjsgczMyICA6 MzI7Ci19OwotCi1leHRlcm4gaW50IGRvX2FkanRpbWV4KHN0cnVjdCB0aW1leCAqKTsKLQot YXNtbGlua2FnZSBsb25nIHN5czMyX2FkanRpbWV4KHN0cnVjdCB0aW1leDMyICp1dHApCi17 Ci0Jc3RydWN0IHRpbWV4IHR4YzsKLQlpbnQgcmV0OwotCi0JbWVtc2V0KCZ0eGMsIDAsIHNp emVvZihzdHJ1Y3QgdGltZXgpKTsKLQotCWlmKGdldF91c2VyKHR4Yy5tb2RlcywgJnV0cC0+ bW9kZXMpIHx8Ci0JICAgX19nZXRfdXNlcih0eGMub2Zmc2V0LCAmdXRwLT5vZmZzZXQpIHx8 Ci0JICAgX19nZXRfdXNlcih0eGMuZnJlcSwgJnV0cC0+ZnJlcSkgfHwKLQkgICBfX2dldF91 c2VyKHR4Yy5tYXhlcnJvciwgJnV0cC0+bWF4ZXJyb3IpIHx8Ci0JICAgX19nZXRfdXNlcih0 eGMuZXN0ZXJyb3IsICZ1dHAtPmVzdGVycm9yKSB8fAotCSAgIF9fZ2V0X3VzZXIodHhjLnN0 YXR1cywgJnV0cC0+c3RhdHVzKSB8fAotCSAgIF9fZ2V0X3VzZXIodHhjLmNvbnN0YW50LCAm dXRwLT5jb25zdGFudCkgfHwKLQkgICBfX2dldF91c2VyKHR4Yy5wcmVjaXNpb24sICZ1dHAt PnByZWNpc2lvbikgfHwKLQkgICBfX2dldF91c2VyKHR4Yy50b2xlcmFuY2UsICZ1dHAtPnRv bGVyYW5jZSkgfHwKLQkgICBfX2dldF91c2VyKHR4Yy50aW1lLnR2X3NlYywgJnV0cC0+dGlt ZS50dl9zZWMpIHx8Ci0JICAgX19nZXRfdXNlcih0eGMudGltZS50dl91c2VjLCAmdXRwLT50 aW1lLnR2X3VzZWMpIHx8Ci0JICAgX19nZXRfdXNlcih0eGMudGljaywgJnV0cC0+dGljaykg fHwKLQkgICBfX2dldF91c2VyKHR4Yy5wcHNmcmVxLCAmdXRwLT5wcHNmcmVxKSB8fAotCSAg IF9fZ2V0X3VzZXIodHhjLmppdHRlciwgJnV0cC0+aml0dGVyKSB8fAotCSAgIF9fZ2V0X3Vz ZXIodHhjLnNoaWZ0LCAmdXRwLT5zaGlmdCkgfHwKLQkgICBfX2dldF91c2VyKHR4Yy5zdGFi aWwsICZ1dHAtPnN0YWJpbCkgfHwKLQkgICBfX2dldF91c2VyKHR4Yy5qaXRjbnQsICZ1dHAt PmppdGNudCkgfHwKLQkgICBfX2dldF91c2VyKHR4Yy5jYWxjbnQsICZ1dHAtPmNhbGNudCkg fHwKLQkgICBfX2dldF91c2VyKHR4Yy5lcnJjbnQsICZ1dHAtPmVycmNudCkgfHwKLQkgICBf X2dldF91c2VyKHR4Yy5zdGJjbnQsICZ1dHAtPnN0YmNudCkpCi0JCXJldHVybiAtRUZBVUxU OwotCi0JcmV0ID0gZG9fYWRqdGltZXgoJnR4Yyk7Ci0KLQlpZihwdXRfdXNlcih0eGMubW9k ZXMsICZ1dHAtPm1vZGVzKSB8fAotCSAgIF9fcHV0X3VzZXIodHhjLm9mZnNldCwgJnV0cC0+ b2Zmc2V0KSB8fAotCSAgIF9fcHV0X3VzZXIodHhjLmZyZXEsICZ1dHAtPmZyZXEpIHx8Ci0J ICAgX19wdXRfdXNlcih0eGMubWF4ZXJyb3IsICZ1dHAtPm1heGVycm9yKSB8fAotCSAgIF9f cHV0X3VzZXIodHhjLmVzdGVycm9yLCAmdXRwLT5lc3RlcnJvcikgfHwKLQkgICBfX3B1dF91 c2VyKHR4Yy5zdGF0dXMsICZ1dHAtPnN0YXR1cykgfHwKLQkgICBfX3B1dF91c2VyKHR4Yy5j b25zdGFudCwgJnV0cC0+Y29uc3RhbnQpIHx8Ci0JICAgX19wdXRfdXNlcih0eGMucHJlY2lz aW9uLCAmdXRwLT5wcmVjaXNpb24pIHx8Ci0JICAgX19wdXRfdXNlcih0eGMudG9sZXJhbmNl LCAmdXRwLT50b2xlcmFuY2UpIHx8Ci0JICAgX19wdXRfdXNlcih0eGMudGltZS50dl9zZWMs ICZ1dHAtPnRpbWUudHZfc2VjKSB8fAotCSAgIF9fcHV0X3VzZXIodHhjLnRpbWUudHZfdXNl YywgJnV0cC0+dGltZS50dl91c2VjKSB8fAotCSAgIF9fcHV0X3VzZXIodHhjLnRpY2ssICZ1 dHAtPnRpY2spIHx8Ci0JICAgX19wdXRfdXNlcih0eGMucHBzZnJlcSwgJnV0cC0+cHBzZnJl cSkgfHwKLQkgICBfX3B1dF91c2VyKHR4Yy5qaXR0ZXIsICZ1dHAtPmppdHRlcikgfHwKLQkg ICBfX3B1dF91c2VyKHR4Yy5zaGlmdCwgJnV0cC0+c2hpZnQpIHx8Ci0JICAgX19wdXRfdXNl cih0eGMuc3RhYmlsLCAmdXRwLT5zdGFiaWwpIHx8Ci0JICAgX19wdXRfdXNlcih0eGMuaml0 Y250LCAmdXRwLT5qaXRjbnQpIHx8Ci0JICAgX19wdXRfdXNlcih0eGMuY2FsY250LCAmdXRw LT5jYWxjbnQpIHx8Ci0JICAgX19wdXRfdXNlcih0eGMuZXJyY250LCAmdXRwLT5lcnJjbnQp IHx8Ci0JICAgX19wdXRfdXNlcih0eGMuc3RiY250LCAmdXRwLT5zdGJjbnQpKQotCQlyZXQg PSAtRUZBVUxUOwotCi0JcmV0dXJuIHJldDsKLX0KLQogc3RydWN0IF9fc3lzY3RsX2FyZ3Mz MiB7CiAJdTMyIG5hbWU7CiAJaW50IG5sZW47CmRpZmYgLXB1ck4gbGludXgtMi42LjcvYXJj aC9zMzkwL2tlcm5lbC9jb21wYXRfd3JhcHBlci5TIGxpbnV4LTIuNi43LWFkanRpbWV4L2Fy Y2gvczM5MC9rZXJuZWwvY29tcGF0X3dyYXBwZXIuUwotLS0gbGludXgtMi42LjcvYXJjaC9z MzkwL2tlcm5lbC9jb21wYXRfd3JhcHBlci5TCTIwMDQtMDYtMTcgMTU6NTU6MzcuMDAwMDAw MDAwICswODAwCisrKyBsaW51eC0yLjYuNy1hZGp0aW1leC9hcmNoL3MzOTAva2VybmVsL2Nv bXBhdF93cmFwcGVyLlMJMjAwNC0wNi0zMCAxMToxMTowMC4wMDAwMDAwMDAgKzA4MDAKQEAg LTU0NywxMCArNTQ3LDEwIEBAIHN5czMyX25ld3VuYW1lX3dyYXBwZXI6CiAJbGxndHIJJXIy LCVyMgkJCSMgc3RydWN0IG5ld191dHNuYW1lICoKIAlqZwlzMzkweF9uZXd1bmFtZQkJIyBi cmFuY2ggdG8gc3lzdGVtIGNhbGwKIAotCS5nbG9ibCAgc3lzMzJfYWRqdGltZXhfd3JhcHBl ciAKLXN5czMyX2FkanRpbWV4X3dyYXBwZXI6Ci0JbGxndHIJJXIyLCVyMgkJCSMgc3RydWN0 IHRpbWV4X2VtdTMxICoKLQlqZwlzeXMzMl9hZGp0aW1leAkJIyBicmFuY2ggdG8gc3lzdGVt IGNhbGwKKwkuZ2xvYmwgIGNvbXBhdF9zeXNfYWRqdGltZXhfd3JhcHBlcgorY29tcGF0X3N5 c19hZGp0aW1leF93cmFwcGVyOgorCWxsZ3RyCSVyMiwlcjIJCQkjIHN0cnVjdCBjb21wYXRf dGltZXggKgorCWpnCWNvbXBhdF9zeXNfYWRqdGltZXgJIyBicmFuY2ggdG8gc3lzdGVtIGNh bGwKIAogCS5nbG9ibCAgc3lzMzJfbXByb3RlY3Rfd3JhcHBlciAKIHN5czMyX21wcm90ZWN0 X3dyYXBwZXI6CmRpZmYgLXB1ck4gbGludXgtMi42LjcvYXJjaC9zMzkwL2tlcm5lbC9zeXNj YWxscy5TIGxpbnV4LTIuNi43LWFkanRpbWV4L2FyY2gvczM5MC9rZXJuZWwvc3lzY2FsbHMu UwotLS0gbGludXgtMi42LjcvYXJjaC9zMzkwL2tlcm5lbC9zeXNjYWxscy5TCTIwMDQtMDYt MTcgMTU6NTU6MzcuMDAwMDAwMDAwICswODAwCisrKyBsaW51eC0yLjYuNy1hZGp0aW1leC9h cmNoL3MzOTAva2VybmVsL3N5c2NhbGxzLlMJMjAwNC0wNi0zMCAxMToxMTo1NC4wMDAwMDAw MDAgKzA4MDAKQEAgLTEzMiw3ICsxMzIsNyBAQCBTWVNDQUxMKHN5c19jbG9uZV9nbHVlLHN5 c19jbG9uZV9nbHVlLHN5CiBTWVNDQUxMKHN5c19zZXRkb21haW5uYW1lLHN5c19zZXRkb21h aW5uYW1lLHN5czMyX3NldGRvbWFpbm5hbWVfd3JhcHBlcikKIFNZU0NBTEwoc3lzX25ld3Vu YW1lLHMzOTB4X25ld3VuYW1lLHN5czMyX25ld3VuYW1lX3dyYXBwZXIpCiBOSV9TWVNDQUxM CQkJCQkJCS8qIG1vZGlmeV9sZHQgZm9yIGkzODYgKi8KLVNZU0NBTEwoc3lzX2FkanRpbWV4 LHN5c19hZGp0aW1leCxzeXMzMl9hZGp0aW1leF93cmFwcGVyKQorU1lTQ0FMTChzeXNfYWRq dGltZXgsc3lzX2FkanRpbWV4LGNvbXBhdF9zeXNfYWRqdGltZXhfd3JhcHBlcikKIFNZU0NB TEwoc3lzX21wcm90ZWN0LHN5c19tcHJvdGVjdCxzeXMzMl9tcHJvdGVjdF93cmFwcGVyKQkv KiAxMjUgKi8KIFNZU0NBTEwoc3lzX3NpZ3Byb2NtYXNrLHN5c19zaWdwcm9jbWFzayxjb21w YXRfc3lzX3NpZ3Byb2NtYXNrX3dyYXBwZXIpCiBOSV9TWVNDQUxMCQkJCQkJCS8qIG9sZCAi Y3JlYXRlIG1vZHVsZSIgKi8KZGlmZiAtcHVyTiBsaW51eC0yLjYuNy9hcmNoL3NwYXJjNjQv a2VybmVsL3N5c19zcGFyYzMyLmMgbGludXgtMi42LjctYWRqdGltZXgvYXJjaC9zcGFyYzY0 L2tlcm5lbC9zeXNfc3BhcmMzMi5jCi0tLSBsaW51eC0yLjYuNy9hcmNoL3NwYXJjNjQva2Vy bmVsL3N5c19zcGFyYzMyLmMJMjAwNC0wNi0xNyAxNTo1NToyOS4wMDAwMDAwMDAgKzA4MDAK KysrIGxpbnV4LTIuNi43LWFkanRpbWV4L2FyY2gvc3BhcmM2NC9rZXJuZWwvc3lzX3NwYXJj MzIuYwkyMDA0LTA2LTMwIDExOjEzOjMwLjAwMDAwMDAwMCArMDgwMApAQCAtMTYwNyw3OSAr MTYwNyw2IEBAIGFzbWxpbmthZ2UgbG9uZyBjb21wYXRfc3lzX3NlbmRmaWxlNjQoaW4KIAly ZXR1cm4gcmV0OwogfQogCi0vKiBIYW5kbGUgYWRqdGltZXggY29tcGF0aWJpbGl0eS4gKi8K LQotc3RydWN0IHRpbWV4MzIgewotCXUzMiBtb2RlczsKLQlzMzIgb2Zmc2V0LCBmcmVxLCBt YXhlcnJvciwgZXN0ZXJyb3I7Ci0JczMyIHN0YXR1cywgY29uc3RhbnQsIHByZWNpc2lvbiwg dG9sZXJhbmNlOwotCXN0cnVjdCBjb21wYXRfdGltZXZhbCB0aW1lOwotCXMzMiB0aWNrOwot CXMzMiBwcHNmcmVxLCBqaXR0ZXIsIHNoaWZ0LCBzdGFiaWw7Ci0JczMyIGppdGNudCwgY2Fs Y250LCBlcnJjbnQsIHN0YmNudDsKLQlzMzIgIDozMjsgczMyICA6MzI7IHMzMiAgOjMyOyBz MzIgIDozMjsKLQlzMzIgIDozMjsgczMyICA6MzI7IHMzMiAgOjMyOyBzMzIgIDozMjsKLQlz MzIgIDozMjsgczMyICA6MzI7IHMzMiAgOjMyOyBzMzIgIDozMjsKLX07Ci0KLWV4dGVybiBp bnQgZG9fYWRqdGltZXgoc3RydWN0IHRpbWV4ICopOwotCi1hc21saW5rYWdlIGxvbmcgc3lz MzJfYWRqdGltZXgoc3RydWN0IHRpbWV4MzIgX191c2VyICp1dHApCi17Ci0Jc3RydWN0IHRp bWV4IHR4YzsKLQlpbnQgcmV0OwotCi0JbWVtc2V0KCZ0eGMsIDAsIHNpemVvZihzdHJ1Y3Qg dGltZXgpKTsKLQotCWlmIChnZXRfdXNlcih0eGMubW9kZXMsICZ1dHAtPm1vZGVzKSB8fAot CSAgICBfX2dldF91c2VyKHR4Yy5vZmZzZXQsICZ1dHAtPm9mZnNldCkgfHwKLQkgICAgX19n ZXRfdXNlcih0eGMuZnJlcSwgJnV0cC0+ZnJlcSkgfHwKLQkgICAgX19nZXRfdXNlcih0eGMu bWF4ZXJyb3IsICZ1dHAtPm1heGVycm9yKSB8fAotCSAgICBfX2dldF91c2VyKHR4Yy5lc3Rl cnJvciwgJnV0cC0+ZXN0ZXJyb3IpIHx8Ci0JICAgIF9fZ2V0X3VzZXIodHhjLnN0YXR1cywg JnV0cC0+c3RhdHVzKSB8fAotCSAgICBfX2dldF91c2VyKHR4Yy5jb25zdGFudCwgJnV0cC0+ Y29uc3RhbnQpIHx8Ci0JICAgIF9fZ2V0X3VzZXIodHhjLnByZWNpc2lvbiwgJnV0cC0+cHJl Y2lzaW9uKSB8fAotCSAgICBfX2dldF91c2VyKHR4Yy50b2xlcmFuY2UsICZ1dHAtPnRvbGVy YW5jZSkgfHwKLQkgICAgX19nZXRfdXNlcih0eGMudGltZS50dl9zZWMsICZ1dHAtPnRpbWUu dHZfc2VjKSB8fAotCSAgICBfX2dldF91c2VyKHR4Yy50aW1lLnR2X3VzZWMsICZ1dHAtPnRp bWUudHZfdXNlYykgfHwKLQkgICAgX19nZXRfdXNlcih0eGMudGljaywgJnV0cC0+dGljaykg fHwKLQkgICAgX19nZXRfdXNlcih0eGMucHBzZnJlcSwgJnV0cC0+cHBzZnJlcSkgfHwKLQkg ICAgX19nZXRfdXNlcih0eGMuaml0dGVyLCAmdXRwLT5qaXR0ZXIpIHx8Ci0JICAgIF9fZ2V0 X3VzZXIodHhjLnNoaWZ0LCAmdXRwLT5zaGlmdCkgfHwKLQkgICAgX19nZXRfdXNlcih0eGMu c3RhYmlsLCAmdXRwLT5zdGFiaWwpIHx8Ci0JICAgIF9fZ2V0X3VzZXIodHhjLmppdGNudCwg JnV0cC0+aml0Y250KSB8fAotCSAgICBfX2dldF91c2VyKHR4Yy5jYWxjbnQsICZ1dHAtPmNh bGNudCkgfHwKLQkgICAgX19nZXRfdXNlcih0eGMuZXJyY250LCAmdXRwLT5lcnJjbnQpIHx8 Ci0JICAgIF9fZ2V0X3VzZXIodHhjLnN0YmNudCwgJnV0cC0+c3RiY250KSkKLQkJcmV0dXJu IC1FRkFVTFQ7Ci0KLQlyZXQgPSBkb19hZGp0aW1leCgmdHhjKTsKLQotCWlmIChwdXRfdXNl cih0eGMubW9kZXMsICZ1dHAtPm1vZGVzKSB8fAotCSAgICBfX3B1dF91c2VyKHR4Yy5vZmZz ZXQsICZ1dHAtPm9mZnNldCkgfHwKLQkgICAgX19wdXRfdXNlcih0eGMuZnJlcSwgJnV0cC0+ ZnJlcSkgfHwKLQkgICAgX19wdXRfdXNlcih0eGMubWF4ZXJyb3IsICZ1dHAtPm1heGVycm9y KSB8fAotCSAgICBfX3B1dF91c2VyKHR4Yy5lc3RlcnJvciwgJnV0cC0+ZXN0ZXJyb3IpIHx8 Ci0JICAgIF9fcHV0X3VzZXIodHhjLnN0YXR1cywgJnV0cC0+c3RhdHVzKSB8fAotCSAgICBf X3B1dF91c2VyKHR4Yy5jb25zdGFudCwgJnV0cC0+Y29uc3RhbnQpIHx8Ci0JICAgIF9fcHV0 X3VzZXIodHhjLnByZWNpc2lvbiwgJnV0cC0+cHJlY2lzaW9uKSB8fAotCSAgICBfX3B1dF91 c2VyKHR4Yy50b2xlcmFuY2UsICZ1dHAtPnRvbGVyYW5jZSkgfHwKLQkgICAgX19wdXRfdXNl cih0eGMudGltZS50dl9zZWMsICZ1dHAtPnRpbWUudHZfc2VjKSB8fAotCSAgICBfX3B1dF91 c2VyKHR4Yy50aW1lLnR2X3VzZWMsICZ1dHAtPnRpbWUudHZfdXNlYykgfHwKLQkgICAgX19w dXRfdXNlcih0eGMudGljaywgJnV0cC0+dGljaykgfHwKLQkgICAgX19wdXRfdXNlcih0eGMu cHBzZnJlcSwgJnV0cC0+cHBzZnJlcSkgfHwKLQkgICAgX19wdXRfdXNlcih0eGMuaml0dGVy LCAmdXRwLT5qaXR0ZXIpIHx8Ci0JICAgIF9fcHV0X3VzZXIodHhjLnNoaWZ0LCAmdXRwLT5z aGlmdCkgfHwKLQkgICAgX19wdXRfdXNlcih0eGMuc3RhYmlsLCAmdXRwLT5zdGFiaWwpIHx8 Ci0JICAgIF9fcHV0X3VzZXIodHhjLmppdGNudCwgJnV0cC0+aml0Y250KSB8fAotCSAgICBf X3B1dF91c2VyKHR4Yy5jYWxjbnQsICZ1dHAtPmNhbGNudCkgfHwKLQkgICAgX19wdXRfdXNl cih0eGMuZXJyY250LCAmdXRwLT5lcnJjbnQpIHx8Ci0JICAgIF9fcHV0X3VzZXIodHhjLnN0 YmNudCwgJnV0cC0+c3RiY250KSkKLQkJcmV0ID0gLUVGQVVMVDsKLQotCXJldHVybiByZXQ7 Ci19Ci0KIC8qIFRoaXMgaXMganVzdCBhIHZlcnNpb24gZm9yIDMyLWJpdCBhcHBsaWNhdGlv bnMgd2hpY2ggZG9lcwogICogbm90IGZvcmNlIE9fTEFSR0VGSUxFIG9uLgogICovCmRpZmYg LXB1ck4gbGludXgtMi42LjcvYXJjaC9zcGFyYzY0L2tlcm5lbC9zeXN0YmxzLlMgbGludXgt Mi42LjctYWRqdGltZXgvYXJjaC9zcGFyYzY0L2tlcm5lbC9zeXN0YmxzLlMKLS0tIGxpbnV4 LTIuNi43L2FyY2gvc3BhcmM2NC9rZXJuZWwvc3lzdGJscy5TCTIwMDQtMDYtMTcgMTU6NTU6 MjkuMDAwMDAwMDAwICswODAwCisrKyBsaW51eC0yLjYuNy1hZGp0aW1leC9hcmNoL3NwYXJj NjQva2VybmVsL3N5c3RibHMuUwkyMDA0LTA2LTMwIDExOjE2OjQxLjAwMDAwMDAwMCArMDgw MApAQCAtNjIsNyArNjIsNyBAQCBzeXNfY2FsbF90YWJsZTMyOgogLyoyMDAqLwkud29yZCBz eXMzMl9zc2V0bWFzaywgc3lzX3NpZ3N1c3BlbmQsIGNvbXBhdF9zeXNfbmV3bHN0YXQsIHN5 c191c2VsaWIsIG9sZDMyX3JlYWRkaXIKIAkud29yZCBzeXMzMl9yZWFkYWhlYWQsIHN5czMy X3NvY2tldGNhbGwsIHN5czMyX3N5c2xvZywgc3lzMzJfbG9va3VwX2Rjb29raWUsIHN5czMy X2ZhZHZpc2U2NAogLyoyMTAqLwkud29yZCBzeXMzMl9mYWR2aXNlNjRfNjQsIHN5czMyX3Rn a2lsbCwgc3lzMzJfd2FpdHBpZCwgc3lzX3N3YXBvZmYsIHN5czMyX3N5c2luZm8KLQkud29y ZCBzeXMzMl9pcGMsIHN5czMyX3NpZ3JldHVybiwgc3lzX2Nsb25lLCBzeXNfbmlzX3N5c2Nh bGwsIHN5czMyX2FkanRpbWV4CisJLndvcmQgc3lzMzJfaXBjLCBzeXMzMl9zaWdyZXR1cm4s IHN5c19jbG9uZSwgc3lzX25pc19zeXNjYWxsLCBjb21wYXRfc3lzX2FkanRpbWV4CiAvKjIy MCovCS53b3JkIHN5czMyX3NpZ3Byb2NtYXNrLCBzeXNfbmlfc3lzY2FsbCwgc3lzMzJfZGVs ZXRlX21vZHVsZSwgc3lzX25pX3N5c2NhbGwsIHN5czMyX2dldHBnaWQKIAkud29yZCBzeXMz Ml9iZGZsdXNoLCBzeXMzMl9zeXNmcywgc3lzX25pc19zeXNjYWxsLCBzeXMzMl9zZXRmc3Vp ZDE2LCBzeXMzMl9zZXRmc2dpZDE2CiAvKjIzMCovCS53b3JkIHN5czMyX3NlbGVjdCwgc3lz X3RpbWUsIHN5c19uaXNfc3lzY2FsbCwgc3lzX3N0aW1lLCBjb21wYXRfc3RhdGZzNjQKZGlm ZiAtcHVyTiBsaW51eC0yLjYuNy9hcmNoL3g4Nl82NC9pYTMyL2lhMzJlbnRyeS5TIGxpbnV4 LTIuNi43LWFkanRpbWV4L2FyY2gveDg2XzY0L2lhMzIvaWEzMmVudHJ5LlMKLS0tIGxpbnV4 LTIuNi43L2FyY2gveDg2XzY0L2lhMzIvaWEzMmVudHJ5LlMJMjAwNC0wNi0xNyAxNTo1NToz Ny4wMDAwMDAwMDAgKzA4MDAKKysrIGxpbnV4LTIuNi43LWFkanRpbWV4L2FyY2gveDg2XzY0 L2lhMzIvaWEzMmVudHJ5LlMJMjAwNC0wNi0zMCAxMToyMToxNi4wMDAwMDAwMDAgKzA4MDAK QEAgLTQyOSw3ICs0MjksNyBAQCBpYTMyX3N5c19jYWxsX3RhYmxlOgogCS5xdWFkIHN5c19z ZXRkb21haW5uYW1lCiAJLnF1YWQgc3lzX3VuYW1lCiAJLnF1YWQgc3lzX21vZGlmeV9sZHQK LQkucXVhZCBzeXMzMl9hZGp0aW1leAorCS5xdWFkIGNvbXBhdF9zeXNfYWRqdGltZXgKIAku cXVhZCBzeXMzMl9tcHJvdGVjdAkJLyogMTI1ICovCiAJLnF1YWQgY29tcGF0X3N5c19zaWdw cm9jbWFzawogCS5xdWFkIHF1aWV0X25pX3N5c2NhbGwJCS8qIGNyZWF0ZV9tb2R1bGUgKi8K ZGlmZiAtcHVyTiBsaW51eC0yLjYuNy9hcmNoL3g4Nl82NC9pYTMyL3N5c19pYTMyLmMgbGlu dXgtMi42LjctYWRqdGltZXgvYXJjaC94ODZfNjQvaWEzMi9zeXNfaWEzMi5jCi0tLSBsaW51 eC0yLjYuNy9hcmNoL3g4Nl82NC9pYTMyL3N5c19pYTMyLmMJMjAwNC0wNi0xNyAxNTo1NToz Ny4wMDAwMDAwMDAgKzA4MDAKKysrIGxpbnV4LTIuNi43LWFkanRpbWV4L2FyY2gveDg2XzY0 L2lhMzIvc3lzX2lhMzIuYwkyMDA0LTA2LTMwIDExOjIxOjQwLjAwMDAwMDAwMCArMDgwMApA QCAtOTUzLDgyICs5NTMsNiBAQCBzeXMzMl9zZW5kZmlsZShpbnQgb3V0X2ZkLCBpbnQgaW5f ZmQsIGNvCiAJcmV0dXJuIHJldDsKIH0KIAotLyogSGFuZGxlIGFkanRpbWV4IGNvbXBhdGli aWxpdHkuICovCi0KLXN0cnVjdCB0aW1leDMyIHsKLQl1MzIgbW9kZXM7Ci0JczMyIG9mZnNl dCwgZnJlcSwgbWF4ZXJyb3IsIGVzdGVycm9yOwotCXMzMiBzdGF0dXMsIGNvbnN0YW50LCBw cmVjaXNpb24sIHRvbGVyYW5jZTsKLQlzdHJ1Y3QgY29tcGF0X3RpbWV2YWwgdGltZTsKLQlz MzIgdGljazsKLQlzMzIgcHBzZnJlcSwgaml0dGVyLCBzaGlmdCwgc3RhYmlsOwotCXMzMiBq aXRjbnQsIGNhbGNudCwgZXJyY250LCBzdGJjbnQ7Ci0JczMyICA6MzI7IHMzMiAgOjMyOyBz MzIgIDozMjsgczMyICA6MzI7Ci0JczMyICA6MzI7IHMzMiAgOjMyOyBzMzIgIDozMjsgczMy ICA6MzI7Ci0JczMyICA6MzI7IHMzMiAgOjMyOyBzMzIgIDozMjsgczMyICA6MzI7Ci19Owot Ci1leHRlcm4gaW50IGRvX2FkanRpbWV4KHN0cnVjdCB0aW1leCAqKTsKLQotYXNtbGlua2Fn ZSBsb25nCi1zeXMzMl9hZGp0aW1leChzdHJ1Y3QgdGltZXgzMiBfX3VzZXIgKnV0cCkKLXsK LQlzdHJ1Y3QgdGltZXggdHhjOwotCWludCByZXQ7Ci0KLQltZW1zZXQoJnR4YywgMCwgc2l6 ZW9mKHN0cnVjdCB0aW1leCkpOwotCi0JaWYodmVyaWZ5X2FyZWEoVkVSSUZZX1JFQUQsIHV0 cCwgc2l6ZW9mKHN0cnVjdCB0aW1leDMyKSkgfHwKLQkgICBfX2dldF91c2VyKHR4Yy5tb2Rl cywgJnV0cC0+bW9kZXMpIHx8Ci0JICAgX19nZXRfdXNlcih0eGMub2Zmc2V0LCAmdXRwLT5v ZmZzZXQpIHx8Ci0JICAgX19nZXRfdXNlcih0eGMuZnJlcSwgJnV0cC0+ZnJlcSkgfHwKLQkg ICBfX2dldF91c2VyKHR4Yy5tYXhlcnJvciwgJnV0cC0+bWF4ZXJyb3IpIHx8Ci0JICAgX19n ZXRfdXNlcih0eGMuZXN0ZXJyb3IsICZ1dHAtPmVzdGVycm9yKSB8fAotCSAgIF9fZ2V0X3Vz ZXIodHhjLnN0YXR1cywgJnV0cC0+c3RhdHVzKSB8fAotCSAgIF9fZ2V0X3VzZXIodHhjLmNv bnN0YW50LCAmdXRwLT5jb25zdGFudCkgfHwKLQkgICBfX2dldF91c2VyKHR4Yy5wcmVjaXNp b24sICZ1dHAtPnByZWNpc2lvbikgfHwKLQkgICBfX2dldF91c2VyKHR4Yy50b2xlcmFuY2Us ICZ1dHAtPnRvbGVyYW5jZSkgfHwKLQkgICBfX2dldF91c2VyKHR4Yy50aW1lLnR2X3NlYywg JnV0cC0+dGltZS50dl9zZWMpIHx8Ci0JICAgX19nZXRfdXNlcih0eGMudGltZS50dl91c2Vj LCAmdXRwLT50aW1lLnR2X3VzZWMpIHx8Ci0JICAgX19nZXRfdXNlcih0eGMudGljaywgJnV0 cC0+dGljaykgfHwKLQkgICBfX2dldF91c2VyKHR4Yy5wcHNmcmVxLCAmdXRwLT5wcHNmcmVx KSB8fAotCSAgIF9fZ2V0X3VzZXIodHhjLmppdHRlciwgJnV0cC0+aml0dGVyKSB8fAotCSAg IF9fZ2V0X3VzZXIodHhjLnNoaWZ0LCAmdXRwLT5zaGlmdCkgfHwKLQkgICBfX2dldF91c2Vy KHR4Yy5zdGFiaWwsICZ1dHAtPnN0YWJpbCkgfHwKLQkgICBfX2dldF91c2VyKHR4Yy5qaXRj bnQsICZ1dHAtPmppdGNudCkgfHwKLQkgICBfX2dldF91c2VyKHR4Yy5jYWxjbnQsICZ1dHAt PmNhbGNudCkgfHwKLQkgICBfX2dldF91c2VyKHR4Yy5lcnJjbnQsICZ1dHAtPmVycmNudCkg fHwKLQkgICBfX2dldF91c2VyKHR4Yy5zdGJjbnQsICZ1dHAtPnN0YmNudCkpCi0JCXJldHVy biAtRUZBVUxUOwotCi0JcmV0ID0gZG9fYWRqdGltZXgoJnR4Yyk7Ci0KLQlpZih2ZXJpZnlf YXJlYShWRVJJRllfV1JJVEUsIHV0cCwgc2l6ZW9mKHN0cnVjdCB0aW1leDMyKSkgfHwKLQkg ICBfX3B1dF91c2VyKHR4Yy5tb2RlcywgJnV0cC0+bW9kZXMpIHx8Ci0JICAgX19wdXRfdXNl cih0eGMub2Zmc2V0LCAmdXRwLT5vZmZzZXQpIHx8Ci0JICAgX19wdXRfdXNlcih0eGMuZnJl cSwgJnV0cC0+ZnJlcSkgfHwKLQkgICBfX3B1dF91c2VyKHR4Yy5tYXhlcnJvciwgJnV0cC0+ bWF4ZXJyb3IpIHx8Ci0JICAgX19wdXRfdXNlcih0eGMuZXN0ZXJyb3IsICZ1dHAtPmVzdGVy cm9yKSB8fAotCSAgIF9fcHV0X3VzZXIodHhjLnN0YXR1cywgJnV0cC0+c3RhdHVzKSB8fAot CSAgIF9fcHV0X3VzZXIodHhjLmNvbnN0YW50LCAmdXRwLT5jb25zdGFudCkgfHwKLQkgICBf X3B1dF91c2VyKHR4Yy5wcmVjaXNpb24sICZ1dHAtPnByZWNpc2lvbikgfHwKLQkgICBfX3B1 dF91c2VyKHR4Yy50b2xlcmFuY2UsICZ1dHAtPnRvbGVyYW5jZSkgfHwKLQkgICBfX3B1dF91 c2VyKHR4Yy50aW1lLnR2X3NlYywgJnV0cC0+dGltZS50dl9zZWMpIHx8Ci0JICAgX19wdXRf dXNlcih0eGMudGltZS50dl91c2VjLCAmdXRwLT50aW1lLnR2X3VzZWMpIHx8Ci0JICAgX19w dXRfdXNlcih0eGMudGljaywgJnV0cC0+dGljaykgfHwKLQkgICBfX3B1dF91c2VyKHR4Yy5w cHNmcmVxLCAmdXRwLT5wcHNmcmVxKSB8fAotCSAgIF9fcHV0X3VzZXIodHhjLmppdHRlciwg JnV0cC0+aml0dGVyKSB8fAotCSAgIF9fcHV0X3VzZXIodHhjLnNoaWZ0LCAmdXRwLT5zaGlm dCkgfHwKLQkgICBfX3B1dF91c2VyKHR4Yy5zdGFiaWwsICZ1dHAtPnN0YWJpbCkgfHwKLQkg ICBfX3B1dF91c2VyKHR4Yy5qaXRjbnQsICZ1dHAtPmppdGNudCkgfHwKLQkgICBfX3B1dF91 c2VyKHR4Yy5jYWxjbnQsICZ1dHAtPmNhbGNudCkgfHwKLQkgICBfX3B1dF91c2VyKHR4Yy5l cnJjbnQsICZ1dHAtPmVycmNudCkgfHwKLQkgICBfX3B1dF91c2VyKHR4Yy5zdGJjbnQsICZ1 dHAtPnN0YmNudCkpCi0JCXJldCA9IC1FRkFVTFQ7Ci0KLQlyZXR1cm4gcmV0OwotfQotCiBh c21saW5rYWdlIGxvbmcgc3lzMzJfbW1hcDIodW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25l ZCBsb25nIGxlbiwKIAl1bnNpZ25lZCBsb25nIHByb3QsIHVuc2lnbmVkIGxvbmcgZmxhZ3Ms CiAJdW5zaWduZWQgbG9uZyBmZCwgdW5zaWduZWQgbG9uZyBwZ29mZikKZGlmZiAtcHVyTiBs aW51eC0yLjYuNy9pbmNsdWRlL2xpbnV4L2NvbXBhdC5oIGxpbnV4LTIuNi43LWFkanRpbWV4 L2luY2x1ZGUvbGludXgvY29tcGF0LmgKLS0tIGxpbnV4LTIuNi43L2luY2x1ZGUvbGludXgv Y29tcGF0LmgJMjAwNC0wNi0xNyAxNTo1NTo1My4wMDAwMDAwMDAgKzA4MDAKKysrIGxpbnV4 LTIuNi43LWFkanRpbWV4L2luY2x1ZGUvbGludXgvY29tcGF0LmgJMjAwNC0wNy0wMiAwODo1 OTo0Ny43OTM2MTYzMzcgKzA4MDAKQEAgLTQwLDYgKzQwLDIxIEBAIHN0cnVjdCBjb21wYXRf dG1zIHsKIAljb21wYXRfY2xvY2tfdAkJdG1zX2NzdGltZTsKIH07CiAKK3N0cnVjdCBjb21w YXRfdGltZXggeworCWNvbXBhdF91aW50X3QgbW9kZXM7CisJY29tcGF0X2xvbmdfdCBvZmZz ZXQsIGZyZXEsIG1heGVycm9yLCBlc3RlcnJvcjsKKwljb21wYXRfaW50X3Qgc3RhdHVzOwor CWNvbXBhdF9sb25nX3QgY29uc3RhbnQsIHByZWNpc2lvbiwgdG9sZXJhbmNlOworCXN0cnVj dCBjb21wYXRfdGltZXZhbCB0aW1lOworCWNvbXBhdF9sb25nX3QgdGljaywgcHBzZnJlcSwg aml0dGVyOworCWNvbXBhdF9pbnRfdCBzaGlmdDsKKwljb21wYXRfbG9uZ190IHN0YWJpbDsK Kwljb21wYXRfbG9uZ190IGppdGNudCwgY2FsY250LCBlcnJjbnQsIHN0YmNudDsKKwljb21w YXRfaW50X3QgIDozMjsgY29tcGF0X2ludF90ICA6MzI7IGNvbXBhdF9pbnRfdCAgOjMyOyBj b21wYXRfaW50X3QgIDozMjsKKwljb21wYXRfaW50X3QgIDozMjsgY29tcGF0X2ludF90ICA6 MzI7IGNvbXBhdF9pbnRfdCAgOjMyOyBjb21wYXRfaW50X3QgIDozMjsKKwljb21wYXRfaW50 X3QgIDozMjsgY29tcGF0X2ludF90ICA6MzI7IGNvbXBhdF9pbnRfdCAgOjMyOyBjb21wYXRf aW50X3QgIDozMjsKK307CisKICNkZWZpbmUgX0NPTVBBVF9OU0lHX1dPUkRTCShfQ09NUEFU X05TSUcgLyBfQ09NUEFUX05TSUdfQlBXKQogCiB0eXBlZGVmIHN0cnVjdCB7CkBAIC0xMzAs NSArMTQ1LDcgQEAgYXNtbGlua2FnZSBsb25nIGNvbXBhdF9zeXNfc2VsZWN0KGludCBuLAog CQljb21wYXRfdWxvbmdfdCBfX3VzZXIgKm91dHAsIGNvbXBhdF91bG9uZ190IF9fdXNlciAq ZXhwLAogCQlzdHJ1Y3QgY29tcGF0X3RpbWV2YWwgX191c2VyICp0dnApOwogCithc21saW5r YWdlIGxvbmcgY29tcGF0X3N5c19hZGp0aW1leChzdHJ1Y3QgY29tcGF0X3RpbWV4ICp1dHAp OworCiAjZW5kaWYgLyogQ09ORklHX0NPTVBBVCAqLwogI2VuZGlmIC8qIF9MSU5VWF9DT01Q QVRfSCAqLwpkaWZmIC1wdXJOIGxpbnV4LTIuNi43L2tlcm5lbC9jb21wYXQuYyBsaW51eC0y LjYuNy1hZGp0aW1leC9rZXJuZWwvY29tcGF0LmMKLS0tIGxpbnV4LTIuNi43L2tlcm5lbC9j b21wYXQuYwkyMDA0LTA2LTE3IDE1OjU2OjA1LjAwMDAwMDAwMCArMDgwMAorKysgbGludXgt Mi42LjctYWRqdGltZXgva2VybmVsL2NvbXBhdC5jCTIwMDQtMDYtMzAgMTU6MTM6MzguMDAw MDAwMDAwICswODAwCkBAIC0xNzAsNiArMTcwLDY0IEBAIGFzbWxpbmthZ2UgbG9uZyBjb21w YXRfc3lzX3RpbWVzKHN0cnVjdCAKIAlyZXR1cm4gY29tcGF0X2ppZmZpZXNfdG9fY2xvY2tf dChqaWZmaWVzKTsKIH0KIAorZXh0ZXJuIGludCBkb19hZGp0aW1leChzdHJ1Y3QgdGltZXgg Kik7CisKK2FzbWxpbmthZ2UgbG9uZyBjb21wYXRfc3lzX2FkanRpbWV4KHN0cnVjdCBjb21w YXRfdGltZXggKnV0cCkKK3sKKwlzdHJ1Y3QgdGltZXggdHhjOworCWludCByZXQ7CisKKwlt ZW1zZXQoJnR4YywgMCwgc2l6ZW9mKHN0cnVjdCB0aW1leCkpOworCisJaWYoZ2V0X3VzZXIo dHhjLm1vZGVzLCAmdXRwLT5tb2RlcykgfHwKKwkgICBfX2dldF91c2VyKHR4Yy5vZmZzZXQs ICZ1dHAtPm9mZnNldCkgfHwKKwkgICBfX2dldF91c2VyKHR4Yy5mcmVxLCAmdXRwLT5mcmVx KSB8fAorCSAgIF9fZ2V0X3VzZXIodHhjLm1heGVycm9yLCAmdXRwLT5tYXhlcnJvcikgfHwK KwkgICBfX2dldF91c2VyKHR4Yy5lc3RlcnJvciwgJnV0cC0+ZXN0ZXJyb3IpIHx8CisJICAg X19nZXRfdXNlcih0eGMuc3RhdHVzLCAmdXRwLT5zdGF0dXMpIHx8CisJICAgX19nZXRfdXNl cih0eGMuY29uc3RhbnQsICZ1dHAtPmNvbnN0YW50KSB8fAorCSAgIF9fZ2V0X3VzZXIodHhj LnByZWNpc2lvbiwgJnV0cC0+cHJlY2lzaW9uKSB8fAorCSAgIF9fZ2V0X3VzZXIodHhjLnRv bGVyYW5jZSwgJnV0cC0+dG9sZXJhbmNlKSB8fAorCSAgIF9fZ2V0X3VzZXIodHhjLnRpbWUu dHZfc2VjLCAmdXRwLT50aW1lLnR2X3NlYykgfHwKKwkgICBfX2dldF91c2VyKHR4Yy50aW1l LnR2X3VzZWMsICZ1dHAtPnRpbWUudHZfdXNlYykgfHwKKwkgICBfX2dldF91c2VyKHR4Yy50 aWNrLCAmdXRwLT50aWNrKSB8fAorCSAgIF9fZ2V0X3VzZXIodHhjLnBwc2ZyZXEsICZ1dHAt PnBwc2ZyZXEpIHx8CisJICAgX19nZXRfdXNlcih0eGMuaml0dGVyLCAmdXRwLT5qaXR0ZXIp IHx8CisJICAgX19nZXRfdXNlcih0eGMuc2hpZnQsICZ1dHAtPnNoaWZ0KSB8fAorCSAgIF9f Z2V0X3VzZXIodHhjLnN0YWJpbCwgJnV0cC0+c3RhYmlsKSB8fAorCSAgIF9fZ2V0X3VzZXIo dHhjLmppdGNudCwgJnV0cC0+aml0Y250KSB8fAorCSAgIF9fZ2V0X3VzZXIodHhjLmNhbGNu dCwgJnV0cC0+Y2FsY250KSB8fAorCSAgIF9fZ2V0X3VzZXIodHhjLmVycmNudCwgJnV0cC0+ ZXJyY250KSB8fAorCSAgIF9fZ2V0X3VzZXIodHhjLnN0YmNudCwgJnV0cC0+c3RiY250KSkK KwkJcmV0dXJuIC1FRkFVTFQ7CisKKwlyZXQgPSBkb19hZGp0aW1leCgmdHhjKTsKKworCWlm KHB1dF91c2VyKHR4Yy5tb2RlcywgJnV0cC0+bW9kZXMpIHx8CisJICAgX19wdXRfdXNlcih0 eGMub2Zmc2V0LCAmdXRwLT5vZmZzZXQpIHx8CisJICAgX19wdXRfdXNlcih0eGMuZnJlcSwg JnV0cC0+ZnJlcSkgfHwKKwkgICBfX3B1dF91c2VyKHR4Yy5tYXhlcnJvciwgJnV0cC0+bWF4 ZXJyb3IpIHx8CisJICAgX19wdXRfdXNlcih0eGMuZXN0ZXJyb3IsICZ1dHAtPmVzdGVycm9y KSB8fAorCSAgIF9fcHV0X3VzZXIodHhjLnN0YXR1cywgJnV0cC0+c3RhdHVzKSB8fAorCSAg IF9fcHV0X3VzZXIodHhjLmNvbnN0YW50LCAmdXRwLT5jb25zdGFudCkgfHwKKwkgICBfX3B1 dF91c2VyKHR4Yy5wcmVjaXNpb24sICZ1dHAtPnByZWNpc2lvbikgfHwKKwkgICBfX3B1dF91 c2VyKHR4Yy50b2xlcmFuY2UsICZ1dHAtPnRvbGVyYW5jZSkgfHwKKwkgICBfX3B1dF91c2Vy KHR4Yy50aW1lLnR2X3NlYywgJnV0cC0+dGltZS50dl9zZWMpIHx8CisJICAgX19wdXRfdXNl cih0eGMudGltZS50dl91c2VjLCAmdXRwLT50aW1lLnR2X3VzZWMpIHx8CisJICAgX19wdXRf dXNlcih0eGMudGljaywgJnV0cC0+dGljaykgfHwKKwkgICBfX3B1dF91c2VyKHR4Yy5wcHNm cmVxLCAmdXRwLT5wcHNmcmVxKSB8fAorCSAgIF9fcHV0X3VzZXIodHhjLmppdHRlciwgJnV0 cC0+aml0dGVyKSB8fAorCSAgIF9fcHV0X3VzZXIodHhjLnNoaWZ0LCAmdXRwLT5zaGlmdCkg fHwKKwkgICBfX3B1dF91c2VyKHR4Yy5zdGFiaWwsICZ1dHAtPnN0YWJpbCkgfHwKKwkgICBf X3B1dF91c2VyKHR4Yy5qaXRjbnQsICZ1dHAtPmppdGNudCkgfHwKKwkgICBfX3B1dF91c2Vy KHR4Yy5jYWxjbnQsICZ1dHAtPmNhbGNudCkgfHwKKwkgICBfX3B1dF91c2VyKHR4Yy5lcnJj bnQsICZ1dHAtPmVycmNudCkgfHwKKwkgICBfX3B1dF91c2VyKHR4Yy5zdGJjbnQsICZ1dHAt PnN0YmNudCkpCisJCXJldCA9IC1FRkFVTFQ7CisKKwlyZXR1cm4gcmV0OworfQorCiAvKgog ICogQXNzdW1wdGlvbjogb2xkX3NpZ3NldF90IGFuZCBjb21wYXRfb2xkX3NpZ3NldF90IGFy ZSBib3RoCiAgKiB0eXBlcyB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gcHV0X3VzZXIoKS9nZXRf dXNlcigpLgo= --------------010101060803080208020600--