From mboxrd@z Thu Jan 1 00:00:00 1970 From: bryce@albatross.co.nz To: java-gnats@sourceware.cygnus.com Subject: java/1212: Compiler permits uninitialized final variables Date: Wed, 20 Dec 2000 12:21:00 -0000 Message-id: <20000307003531.26891.qmail@sourceware.cygnus.com> X-SW-Source: 2000-q4/msg00990.html List-Id: >Number: 1212 >Category: java >Synopsis: Compiler permits uninitialized final variables >Confidential: no >Severity: serious >Priority: medium >Responsible: apbianco >State: feedback >Class: sw-bug >Submitter-Id: net >Arrival-Date: Wed Dec 20 12:17:43 PST 2000 >Closed-Date: >Last-Modified: Wed Dec 06 11:00:45 PST 2000 >Originator: Bryce McKinlay >Release: gcc version 2.96 20000305 (experimental) >Organization: >Environment: any >Description: Final variables must be initialized where they are declared. gcj does not check this. >How-To-Repeat: The following code should generate an error: class Final { final int foo; } >Fix: The fix is now in egcs. I needed it there: http://gcc.gnu.org/ml/gcc-patches/2000-12/msg00317.html >Release-Note: This patch has been tested with more test cases (attached,) a libgcj build, a JServ build, the XLM xp and sax packages build plus other 1.1 specific tests. >Audit-Trail: Formerly PR gcj/163 From: bryce@sourceware.cygnus.com To: java-gnats@sourceware.cygnus.com Cc: Subject: gcj/163 Date: 7 Mar 2000 22:54:12 -0000 CVSROOT: /cvs/java Module name: libgcj Changes by: bryce@sourceware.cygnus.com 00/03/07 14:54:12 Modified files: libjava/testsuite: ChangeLog Added files: libjava/testsuite/libjava.compile: PR163.java PR163.xfail Log message: 2000-03-07 Bryce McKinlay Test for PR gcj/163: * libjava.lang/PR163.java: New file. * libjava.lang/PR163.xfail: New file. Patches: http://gcc.gnu.org/cgi-bin/gcc/libjava/testsuite/ChangeLog.diff?cvsroot=java&r1=1.65&r2=1.66 http://gcc.gnu.org/cgi-bin/gcc/libjava/testsuite/libjava.compile/PR163.java.diff?cvsroot=java&r1=NONE&r2=1.1 http://gcc.gnu.org/cgi-bin/gcc/libjava/testsuite/libjava.compile/PR163.xfail.diff?cvsroot=java&r1=NONE&r2=1.1 State-Changed-From-To: open->feedback State-Changed-By: apbianco State-Changed-When: Fri Oct 13 11:50:52 2000 State-Changed-Why: I attached a patch. From: apbianco@cygnus.com To: apbianco@cygnus.com, bryce@albatross.co.nz, java-gnats@sourceware.cygnus.com Cc: Subject: Re: gcj/163 Date: 13 Oct 2000 18:50:52 -0000 Synopsis: Compiler permits uninitialized final variables State-Changed-From-To: open->feedback State-Changed-By: apbianco State-Changed-When: Fri Oct 13 11:50:52 2000 State-Changed-Why: I attached a patch. http://sources.redhat.com/cgi-bin/gnatsweb.pl?cmd=view&pr=163&database=java From: Alexandre Petit-Bianco To: java-gnats@sourceware.cygnus.com Cc: Subject: Re: gcj/163 Date: Sat, 28 Oct 2000 18:40:21 -0700 (PDT) apbianco@cygnus.com writes: > I attached a patch. Here's a revised patch that should also fix 323. ./A >Unformatted: ----gnatsweb-attachment---- Content-Type: application/x-tar; name="t.tar.gz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="t.tar.gz" H4sIAAdZ5zkAA+2ZTU/bQBCGc7V/xdwgamr8FVsh4kRLVRUJJCIVXPVgnCVZ5K6RvQkOKP+9s7s2 Tvgol8YEtO8BB+/MKhA/78xsjiiLU+s6nsedjcl2bDsI/I6NCh9dhZzQ7dihEzpB33edPsZ7jh12 wN7cW2o0K3icA3Tim0sasyR7Ke619XeqvT2AI/EMAC0gJ5/joqATRsZAGVzGuQXfORTTbJaO2Q43 zSTFAJVg3puAulLJjMNVlsEBDAaDoVyYZ3QstoDdLtybhlr11NrSXJpv/ZdrCR1vmH2hV/l3vYZ/ D187ruv3Nf9tCPkvrZSwCZ8KB5A0WzXnxyAZlyQLfncF5uWv3111H5rUmmwN9jvTaYaf6RvXf9f3 G/79QNb/vqf5b0PI/9c5yRd8StmkcgACU5KTBxeQj0hFvDSAHiyGD7/NCnKYzRhXd2TsbhUlLgv0 CsDNC6tEkyiH6BCGahnw/85pUu2e5XSCHccBMHJbbWL3wO4O0U+0oWxQoy2o/36//8C/Zwey/geB 5r8NKcRHiLfk9yan85iTla6+HL6wsHhp4a7p8+WPkZwAloaBXnMmRwlQUwaUELMxLJB+SOI0hRgS nuVrmWJDiuky++SHaZRqd2OBV7eeJlaDle9cixyVIjsV6UEY0X0+JZniQ5A0OYYK93rgdz/0yHK+ Bfy7TjP/e64r+e/r+b8Vqce9qvTnssqvTfRD4QvnT9BSo78c6emna0HIciWuDjhbFJz8sbIZt9Am GE9ZQ+DKecAScf+QcL0DXWwB/8j+Cv+h5D+0Nf9tCPkXJGKxYwTnAAScchqn9I6Ma1e4kMd366ag cf0giraAf+z2G/591f+Hvua/DSnEI3jmMF+UZnk3elr+jbXaX/fT0aN+ver2G08R25rGv9oC3Qu0 q6gFA3iVfy9s+A9swb/vav5bEVJ6qCwgMvH1N8JIjuP8GDIGP/FyknBwHHC8fS/Y9wZw+mUELn5m GFz3B1H0dGyoWnu8jati/K+/HRyCOgg4jNkOX3UGfksT0gNsQpj47lEeBGgj0NLS0tLS0tL67/oL C9Di0AAoAAA= ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="patch" MjAwMC0xMC0xMyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+ CgoJKiBjaGVjay1pbml0LmMgKGNoZWNrX2luaXQpOiBGaXhlZCBsZWFkaW5nIGNvbW1lbnQuIFVz ZQoJTE9DQUxfRklOQUxfUC4KCSogZGVjbC5jIChwdXNoX2p2bV9zbG90KTogVXNlIE1BWUJFX0NS RUFURV9WQVJfTEFOR19ERUNMX1NQRUNJRklDLgoJKGdpdmVfbmFtZV90b19sb2NhbHMpOiBMaWtl d2lzZS4KCShsYW5nX21hcmtfdHJlZSk6IEhhbmRsZSBGSUVMRF9ERUNMLiBSZWdpc3RlciBgYW0n IGFuZCBgd2ZsJwoJZmllbGRzIGluIGxhbmdfZGVjbF92YXIuCgkqIGphdmEtdHJlZS5oIChERUNM X0ZVTkNUSU9OX1NZTlRIRVRJQ19DVE9SLAoJREVDTF9GVU5DVElPTl9BTExfRklOQUxfSU5JVElB TElaRUQpOiBOZXcgbWFjcm9zLgoJKEZJRUxEX0lOTkVSX0FDQ0VTUyk6IFJlbW92ZWQgdWdseSBj YXN0LCBtYWNybyByZXdyaXR0ZW4uCgkoRklFTERfSU5ORVJfQUNDRVNTX1AsIERFQ0xfRklFTERf RklOQUxfSVVELCBERUNMX0ZJRUxEX0ZJTkFMX0xJSUMsCglERUNMX0ZJRUxEX0ZJTkFMX0lFUlIs IERFQ0xfRklFTERfRklOQUxfV0ZMKTogTmV3IG1hY3Jvcy4KCShMT0NBTF9GSU5BTCk6IFJld3Jp dHRlbi4KCShMT0NBTF9GSU5BTF9QLCBGSU5BTF9WQVJJQUJMRV9QLCBDTEFTU19GSU5BTF9WQVJJ QUJMRV9QCglNQVlCRV9DUkVBVEVfVkFSX0xBTkdfREVDTF9TUEVDSUZJQyk6IE5ldyBtYWNyb3Mu Cgkoc3RydWN0IGxhbmdfZGVjbCk6IEZpeGVkIGNvbW1lbnRzLiBBZGRlZCBgc3ludGhldGljX2N0 b3InIGFuZAoJYGluaXRfZmluYWwnIGZpZWxkcy4KCShzdHJ1Y3QgbGFuZ19kZWNsX3Zhcik6IEZp eGVkIGxlYWRpbmcgY29tbWVudC4gQWRkZWQgYGFtJywgYHdmbCcsCglgZmluYWxfdWlkJywgYGZp bmFsX2xpaWMnLCBgZmluYWxfaWVycicgYW5kIGBsb2NhbF9maW5hbCcgZmllbGRzLgoJKFRZUEVf SEFTX0ZJTkFMX1ZBUklBQkxFKTogTmV3IG1hY3JvLgoJKHN0cnVjdCBsYW5nX3R5cGUpOiBBZGRl ZCBgYWZ2JyBmaWVsZC4KCSogcGFyc2UueSAoY2hlY2tfc3RhdGljX2ZpbmFsX3ZhcmlhYmxlX2Fz c2lnbm1lbnRfZmxhZyk6IE5ldyBmdW5jdGlvbi4KCShyZXNldF9zdGF0aWNfZmluYWxfdmFyaWFi bGVfYXNzaWdubWVudF9mbGFnKTogTGlrZXdpc2UuCgkoY2hlY2tfZmluYWxfdmFyaWFibGVfbG9j YWxfYXNzaWdubWVudF9mbGFnKTogTGlrZXdpc2UuCgkocmVzZXRfZmluYWxfdmFyaWFibGVfbG9j YWxfYXNzaWdubWVudF9mbGFnKTogTGlrZXdpc2UuCgkoY2hlY2tfZmluYWxfdmFyaWFibGVfaW5k aXJlY3RfYXNzaWdubWVudCk6IExpa2V3aXNlLgoJKGNoZWNrX2ZpbmFsX3ZhcmlhYmxlX2dsb2Jh bF9hc3NpZ25tZW50X2ZsYWcpOiBMaWtld2lzZS4KCShhZGRfaW5uZXJfY2xhc3NfZmllbGRzKTog VXNlIExPQ0FMX0ZJTkFMX1AuCgkocmVnaXN0ZXJfZmllbGRzKTogSGFuZGxlIGxvY2FsIGZpbmFs cyBhbmQgZmluYWwgdmFyaWFibGVzLgoJKGNyYWZ0X2NvbnN0cnVjdG9yKTogU2V0IERFQ0xfRlVO Q1RJT05fU1lOVEhFVElDX0NUT1IuCgkoZGVjbGFyZV9sb2NhbF92YXJpYWJsZXMpOiBDYWxsIE1B WUJFX0NSRUFURV9WQVJfTEFOR19ERUNMX1NQRUNJRklDLgoJKHNvdXJjZV9zdGFydF9qYXZhX21l dGhvZCk6IENhbGwgTUFZQkVfQ1JFQVRFX1ZBUl9MQU5HX0RFQ0xfU1BFQ0lGSUMKCW9uIGxvY2Fs IGZpbmFscy4KCShqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2RzKTogTG9vcCB0byBzZXQKCVRZ UEVfSEFTX0ZJTkFMX1ZBUklBQkxFLiBDYWxsCglgcmVzZXRfZmluYWxfdmFyaWFibGVfbG9jYWxf YXNzaWdubWVudF9mbGFnJyBhbmQgCglgY2hlY2tfZmluYWxfdmFyaWFibGVfbG9jYWxfYXNzaWdu bWVudF9mbGFnJyBhY2NvcmRpbmdseSBiZWZvcmUKCWFuZCBhZnRlciBjb25zdHJ1Y3RvciBleHBh bnNpb24uIENhbGwKCWByZXNldF9zdGF0aWNfZmluYWxfdmFyaWFibGVfYXNzaWdubWVudF9mbGFn JwoJYmVmb3JlIGV4cGFuZGluZyA8Y2xpbml0PiBhbmQgYWZ0ZXIgY2FsbCAKCWBjaGVja19zdGF0 aWNfZmluYWxfdmFyaWFibGVfYXNzaWdubWVudF9mbGFnJyBpZiB0aGUKCWN1cnJlbnRfY2xhc3Mg aXNuJ3QgYW4gaW50ZXJmYWNlLiBBZnRlciBhbGwgbWV0aG9kcyBoYXZlIGJlZW4KCWV4cGFuZGVk LCBjYWxsIGBjaGVja19maW5hbF92YXJpYWJsZV9nbG9iYWxfYXNzaWdubWVudF9mbGFnJyBhbmQK CWBjaGVja19zdGF0aWNfZmluYWxfdmFyaWFibGVfYXNzaWdubWVudF9mbGFnJyBpZiB0aGUgY3Vy cmVudCBjbGFzcwoJaXMgYW4gaW50ZXJmYWNlLiAKCShtYXliZV95YW5rX2NsaW5pdCk6IEZpeGVk IHR5cG8gaW4gY29tbWVudC4KCShidWlsZF9vdXRlcl9maWVsZF9hY2Nlc3NfbWV0aG9kcyk6IFJl bW92ZWQgb2xkIHNhbml0eSBjaGVjay4gVXNlCglGSUVMRF9JTk5FUl9BQ0NFU1NfUC4gQ2FsbCBN QVlCRV9DUkVBVEVfVkFSX0xBTkdfREVDTF9TUEVDSUZJQy4KCURvbid0IGNyZWF0ZSBhY2Nlc3Mg bWV0aG9kcyBmb3IgZmluYWxzLgoJKHJlc29sdmVfZmllbGRfYWNjZXNzKTogVXNlIGBDTEFTU19G SU5BTF9WQVJJQUJMRV9QJy4KCShqYXZhX2NvbXBsZXRlX3RyZWUpOiBMaWtld2lzZS4gUmVzZXQg REVDTF9GSUVMRF9GSU5BTF9JVUQgaWYKCWV4aXN0aW5nIERFQ0xfSU5JVCBoYXMgYmVlbiBwcm9j ZXNzZWQuIAoJKGphdmFfY29tcGxldGVfbGhzKTogTGlrZXdpc2UuCgkoY2hlY2tfZmluYWxfYXNz aWdubWVudCk6IEZpbHRlciBpbnB1dCBvbiBgbHZhbHVlJydzIFRSRUVfQ09ERS4KCVRlc3QgZm9y IENPTVBPTkVOVF9SRUYgdG8gZ2V0IHRvIHRoZSBGSUVMRF9ERUNMLiBJbXBsZW1lbnRlZCBuZXcK CWxvZ2ljLgoJKHBhdGNoX2Fzc2lnbm1lbnQpOiBVc2UgTE9DQUxfRklOQUxfUC4KCShmb2xkX2Nv bnN0YW50X2Zvcl9pbml0KTogUmVzZXQgREVDTF9GSUVMRF9GSU5BTF9JVUQgaWYKCURFQ0xfSU5J VElBTCBpcyBudWxsaWZpZWQuCgpJbmRleDogY2hlY2staW5pdC5jCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp bGU6IC9jdnMvZ2NjL2VnY3MvZ2NjL2phdmEvY2hlY2staW5pdC5jLHYKcmV0cmlldmluZyByZXZp c2lvbiAxLjI0CmRpZmYgLXUgLXAgLXIxLjI0IGNoZWNrLWluaXQuYwotLS0gY2hlY2staW5pdC5j CTIwMDAvMDgvMTMgMTY6NDg6NTQJMS4yNAorKysgY2hlY2staW5pdC5jCTIwMDAvMTAvMjkgMDE6 MzE6MzgKQEAgLTM1Niw4ICszNTYsNyBAQCBkb25lX2FsdGVybmF0aXZlIChhZnRlciwgY3VycmVu dCkKICAgc3RhcnRfY3VycmVudF9sb2NhbHMgPSBjdXJyZW50LnNhdmVfc3RhcnRfY3VycmVudF9s b2NhbHM7IFwKIH0KIAotLyogQ2hlY2sgZm9yICh1bilpbml0aWFsaXplZCBsb2NhbCB2YXJpYWJs ZXMgaW4gRVhQLgotKi8KKy8qIENoZWNrIGZvciAodW4paW5pdGlhbGl6ZWQgbG9jYWwgdmFyaWFi bGVzIGluIEVYUC4gICovCiAKIHN0YXRpYyB2b2lkCiBjaGVja19pbml0IChleHAsIGJlZm9yZSkK QEAgLTM4NywxNCArMzg2LDE0IEBAIGNoZWNrX2luaXQgKGV4cCwgYmVmb3JlKQogICAgICAgLyog V2UncmUgaW50ZXJlc3RlZCBpbiB2YXJpYWJsZSBkZWNsYXJhdGlvbiBhbmQgcGFyYW1ldGVyCiAg ICAgICAgICBkZWNsYXJhdGlvbiB3aGVuIHRoZXkncmUgZGVjbGFyZWQgd2l0aCB0aGUgYGZpbmFs JyBtb2RpZmllci4gKi8KICAgICAgIGlmICgoVFJFRV9DT0RFICh0bXApID09IFZBUl9ERUNMICYm ICEgRklFTERfU1RBVElDICh0bXApKQotCSAgfHwgKFRSRUVfQ09ERSAodG1wKSA9PSBQQVJNX0RF Q0wgJiYgTE9DQUxfRklOQUwgKHRtcCkpKQorCSAgfHwgKFRSRUVfQ09ERSAodG1wKSA9PSBQQVJN X0RFQ0wgJiYgTE9DQUxfRklOQUxfUCAodG1wKSkpCiAJewogCSAgaW50IGluZGV4OwogCSAgY2hl Y2tfaW5pdCAoVFJFRV9PUEVSQU5EIChleHAsIDEpLCBiZWZvcmUpOwogCSAgaW5kZXggPSBERUNM X0JJVF9JTkRFWCAodG1wKTsKIAkgIC8qIEEgZmluYWwgbG9jYWwgYWxyZWFkeSBhc3NpZ25lZCBv ciBhIGZpbmFsIHBhcmFtZXRlcgogICAgICAgICAgICAgIGFzc2lnbmVkIG11c3QgYmUgcmVwb3J0 ZWQgYXMgZXJyb3JzICovCi0JICBpZiAoTE9DQUxfRklOQUwgKHRtcCkgCisJICBpZiAoTE9DQUxf RklOQUxfUCAodG1wKQogCSAgICAgICYmIChpbmRleCA9PSAtMSB8fCBUUkVFX0NPREUgKHRtcCkg PT0gUEFSTV9ERUNMKSkKIAkgICAgcGFyc2VfZXJyb3JfY29udGV4dCAod2ZsLCAiQ2FuJ3QgYXNz aWduIGhlcmUgYSB2YWx1ZSB0byB0aGUgYGZpbmFsJyB2YXJpYWJsZSBgJXMnIiwgSURFTlRJRklF Ul9QT0lOVEVSIChERUNMX05BTUUgKHRtcCkpKTsKIApJbmRleDogZGVjbC5jCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K UkNTIGZpbGU6IC9jdnMvZ2NjL2VnY3MvZ2NjL2phdmEvZGVjbC5jLHYKcmV0cmlldmluZyByZXZp c2lvbiAxLjc3CmRpZmYgLXUgLXAgLXIxLjc3IGRlY2wuYwotLS0gZGVjbC5jCTIwMDAvMTAvMTYg MjI6NDU6MDcJMS43NworKysgZGVjbC5jCTIwMDAvMTAvMjkgMDE6MzI6MDAKQEAgLTEyNyw4ICsx MjcsNyBAQCBwdXNoX2p2bV9zbG90IChpbmRleCwgZGVjbCkKICAgLyogTm93IGxpbmsgdGhlIGRl Y2wgaW50byB0aGUgZGVjbF9tYXAuICovCiAgIGlmIChERUNMX0xBTkdfU1BFQ0lGSUMgKGRlY2wp ID09IE5VTEwpCiAgICAgewotICAgICAgREVDTF9MQU5HX1NQRUNJRklDIChkZWNsKQotCT0gKHN0 cnVjdCBsYW5nX2RlY2wgKikgZ2djX2FsbG9jIChzaXplb2YgKHN0cnVjdCBsYW5nX2RlY2xfdmFy KSk7CisgICAgICBNQVlCRV9DUkVBVEVfVkFSX0xBTkdfREVDTF9TUEVDSUZJQyAoZGVjbCk7CiAg ICAgICBERUNMX0xPQ0FMX1NUQVJUX1BDIChkZWNsKSA9IDA7CiAgICAgICBERUNMX0xPQ0FMX0VO RF9QQyAoZGVjbCkgPSBERUNMX0NPREVfTEVOR1RIIChjdXJyZW50X2Z1bmN0aW9uX2RlY2wpOwog ICAgICAgREVDTF9MT0NBTF9TTE9UX05VTUJFUiAoZGVjbCkgPSBpbmRleDsKQEAgLTE2MjAsOCAr MTYxOSw3IEBAIGdpdmVfbmFtZV90b19sb2NhbHMgKGpjZikKIAkgICAgIGNvbW1lbnRzIGZvciBl eHByLmM6bWF5YmVfYWRqdXN0X3N0YXJ0X3BjLiAqLwogCSAgc3RhcnRfcGMgPSBtYXliZV9hZGp1 c3Rfc3RhcnRfcGMgKGpjZiwgY29kZV9vZmZzZXQsIHN0YXJ0X3BjLCBzbG90KTsKIAotCSAgREVD TF9MQU5HX1NQRUNJRklDIChkZWNsKQotCSAgICA9IChzdHJ1Y3QgbGFuZ19kZWNsICopIGdnY19h bGxvYyAoc2l6ZW9mIChzdHJ1Y3QgbGFuZ19kZWNsX3ZhcikpOworCSAgTUFZQkVfQ1JFQVRFX1ZB Ul9MQU5HX0RFQ0xfU1BFQ0lGSUMgKGRlY2wpOwogCSAgREVDTF9MT0NBTF9TTE9UX05VTUJFUiAo ZGVjbCkgPSBzbG90OwogCSAgREVDTF9MT0NBTF9TVEFSVF9QQyAoZGVjbCkgPSBzdGFydF9wYzsK ICNpZiAwCkBAIC0xOTAxLDcgKzE4OTksOCBAQCBsYW5nX21hcmtfdHJlZSAodCkKICAgICAgIGdn Y19tYXJrX3RyZWUgKGxpLT51dGY4X3JlZik7CiAgICAgfQogICBlbHNlIGlmIChUUkVFX0NPREUg KHQpID09IFZBUl9ERUNMCi0JICAgfHwgVFJFRV9DT0RFICh0KSA9PSBQQVJNX0RFQ0wpCisJICAg fHwgVFJFRV9DT0RFICh0KSA9PSBQQVJNX0RFQ0wKKwkgICB8fCBUUkVFX0NPREUgKHQpID09IEZJ RUxEX0RFQ0wpCiAgICAgewogICAgICAgc3RydWN0IGxhbmdfZGVjbF92YXIgKmxkdiA9IAogCSgo c3RydWN0IGxhbmdfZGVjbF92YXIgKikgREVDTF9MQU5HX1NQRUNJRklDICh0KSk7CkBAIC0xOTA5 LDYgKzE5MDgsOCBAQCBsYW5nX21hcmtfdHJlZSAodCkKIAl7CiAJICBnZ2NfbWFyayAobGR2KTsK IAkgIGdnY19tYXJrX3RyZWUgKGxkdi0+c2xvdF9jaGFpbik7CisJICBnZ2NfbWFya190cmVlIChs ZHYtPmFtKTsKKwkgIGdnY19tYXJrX3RyZWUgKGxkdi0+d2ZsKTsKIAl9CiAgICAgfQogICBlbHNl IGlmIChUUkVFX0NPREUgKHQpID09IEZVTkNUSU9OX0RFQ0wpCkluZGV4OiBqYXZhLXRyZWUuaAo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL2djYy9lZ2NzL2djYy9qYXZhL2phdmEtdHJlZS5oLHYK cmV0cmlldmluZyByZXZpc2lvbiAxLjg3CmRpZmYgLXUgLXAgLXIxLjg3IGphdmEtdHJlZS5oCi0t LSBqYXZhLXRyZWUuaAkyMDAwLzEwLzE5IDA0OjE5OjA5CTEuODcKKysrIGphdmEtdHJlZS5oCTIw MDAvMTAvMjkgMDE6MzI6NDMKQEAgLTg4LDcgKzg4LDYgQEAgc3RydWN0IEpDRjsKICAgIDM6IE1F VEhPRF9GSU5BTCAoaW4gRlVOQ1RJT05fREVDTCkKICAgICAgIEZJRUxEX0ZJTkFMIChpbiBGSUVM RF9ERUNMKQogICAgICAgQ0xBU1NfRklOQUwgKGluIFRZUEVfREVDTCkKLSAgICAgIExPQ0FMX0ZJ TkFMIChpbiBWQVJfREVDTCkKICAgIDQ6IE1FVEhPRF9TWU5DSFJPTklaRUQgKGluIEZVTkNUSU9O X0RFQ0wpLgogICAgICAgTEFCRUxfSU5fU1VCUiAoaW4gTEFCRUxfREVDTCkKICAgICAgIENMQVNT X0lOVEVSRkFDRSAoaW4gVFlQRV9ERUNMKQpAQCAtNjk3LDEyICs2OTYsMTMgQEAgc3RydWN0IGxh bmdfaWRlbnRpZmllcgogICAgaXMgZXhjbHVkZWQsIGJlY2F1c2Ugc29tZXRpbWVzIGNyZWF0ZWQg YXMgYSBwYXJhbWV0ZXIgYmVmb3JlIHRoZQogICAgZnVuY3Rpb24gZGVjbCBleGlzdHMuICovCiAj ZGVmaW5lIERFQ0xfRlVOQ1RJT05fTkFQKERFQ0wpIChERUNMX0xBTkdfU1BFQ0lGSUMoREVDTCkt Pm5hcCkKKy8qIFRydWUgaWYgREVDTCBpcyBhIHN5bnRoZXRpYyBjdG9yLiAgKi8KKyNkZWZpbmUg REVDTF9GVU5DVElPTl9TWU5USEVUSUNfQ1RPUihERUNMKSBcCisgIChERUNMX0xBTkdfU1BFQ0lG SUMoREVDTCktPnN5bnRoZXRpY19jdG9yKQorLyogVHJ1ZSBpZiBERUNMIGluaXRpYWxpemVzIGFs bCBpdHMgZmluYWxzICovCisjZGVmaW5lIERFQ0xfRlVOQ1RJT05fQUxMX0ZJTkFMX0lOSVRJQUxJ WkVEKERFQ0wpIFwKKyAgKERFQ0xfTEFOR19TUEVDSUZJQyhERUNMKS0+aW5pdF9maW5hbCkKIAot LyogRm9yIGEgRklFTERfREVDTCwgaG9sZHMgdGhlIG5hbWUgb2YgdGhlIGFjY2VzcyBtZXRob2Qg dXNlZCB0bwotICAgcmVhZC93cml0ZSB0aGUgY29udGVudCBvZiB0aGUgZmllbGQgZnJvbSBhbiBp bm5lciBjbGFzcy4gCi0gICBUaGUgY2FzdCBpcyB1Z2x5LiBGSVhNRSAgKi8KLSNkZWZpbmUgRklF TERfSU5ORVJfQUNDRVNTKERFQ0wpICAgICAgICgodHJlZSlERUNMX0xBTkdfU1BFQ0lGSUMgKERF Q0wpKQotCiAvKiBUcnVlIHdoZW4gREVDTCBhbGlhc2VzIGFuIG91dGVyIGNvbnRleHQgbG9jYWwg dmFyaWFibGUuICAqLwogI2RlZmluZSBGSUVMRF9MT0NBTF9BTElBUyhERUNMKSBERUNMX0xBTkdf RkxBR182IChERUNMKQogCkBAIC03NzUsNiArNzc1LDQ2IEBAIHN0cnVjdCBsYW5nX2lkZW50aWZp ZXIKICAgIHNsb3RfbnVtYmVyIGluIGRlY2xfbWFwLiAqLwogI2RlZmluZSBERUNMX0xPQ0FMX1NM T1RfQ0hBSU4oTk9ERSkgXAogICAoKChzdHJ1Y3QgbGFuZ19kZWNsX3ZhciopREVDTF9MQU5HX1NQ RUNJRklDKE5PREUpKS0+c2xvdF9jaGFpbikKKy8qIEZvciBhIEZJRUxEX0RFQ0wsIGhvbGRzIHRo ZSBuYW1lIG9mIHRoZSBhY2Nlc3MgbWV0aG9kLiBVc2VkIHRvCisgICByZWFkL3dyaXRlIHRoZSBj b250ZW50IG9mIHRoZSBmaWVsZCBmcm9tIGFuIGlubmVyIGNsYXNzLiAgKi8KKyNkZWZpbmUgRklF TERfSU5ORVJfQUNDRVNTKERFQ0wpIFwKKyAgKCgoc3RydWN0IGxhbmdfZGVjbF92YXIqKURFQ0xf TEFOR19TUEVDSUZJQyhERUNMKSktPmFtKQorLyogU2FmZWx5IHRlc3RzIHdoZXRoZXIgRklFTERf SU5ORVJfQUNDRVNTIGV4aXN0cyBvciBub3QuICovCisjZGVmaW5lIEZJRUxEX0lOTkVSX0FDQ0VT U19QKERFQ0wpIFwKKyAgREVDTF9MQU5HX1NQRUNJRklDIChERUNMKSAmJiBGSUVMRF9JTk5FUl9B Q0NFU1MgKERFQ0wpCisvKiBUcnVlIGlmIGEgZmluYWwgdmFyaWFibGUgd2FzIGluaXRpYWxpemVk IHVwb24gaXRzIGRlY2xhcmF0aW9uLiAqLworI2RlZmluZSBERUNMX0ZJRUxEX0ZJTkFMX0lVRChO T0RFKSBcCisgICgoKHN0cnVjdCBsYW5nX2RlY2xfdmFyKilERUNMX0xBTkdfU1BFQ0lGSUMoTk9E RSkpLT5maW5hbF9pdWQpCisvKiBTZXQgdG8gdHJ1ZSBpZiBhIGZpbmFsIHZhcmlhYmxlIGlzIHNl ZW4gbG9jYWxseSBpbml0aWFsaXplZCBvbiBhCisgICBjdG9yLiAqLworI2RlZmluZSBERUNMX0ZJ RUxEX0ZJTkFMX0xJSUMoTk9ERSkgXAorICAoKChzdHJ1Y3QgbGFuZ19kZWNsX3ZhciopREVDTF9M QU5HX1NQRUNJRklDKE5PREUpKS0+ZmluYWxfbGlpYykKKy8qIFNldCB0byB0cnVlIGlmIGFuIGlu aXRpYWxpemF0aW9uIGVycm9yIHdhcyBhbHJlYWR5IGZvdW5kIHdpdGggdGhpcworICAgZmluYWwg dmFyaWFibGUuICovCisjZGVmaW5lIERFQ0xfRklFTERfRklOQUxfSUVSUihOT0RFKSBcCisgICgo KHN0cnVjdCBsYW5nX2RlY2xfdmFyKilERUNMX0xBTkdfU1BFQ0lGSUMoTk9ERSkpLT5maW5hbF9p ZXJyKQorLyogVGhlIG9yaWdpbmFsIFdGTCBvZiBhIGZpbmFsIHZhcmlhYmxlLiAqLworI2RlZmlu ZSBERUNMX0ZJRUxEX0ZJTkFMX1dGTChOT0RFKSBcCisgICgoKHN0cnVjdCBsYW5nX2RlY2xfdmFy KilERUNMX0xBTkdfU1BFQ0lGSUMoTk9ERSkpLT53ZmwpCisvKiBUcnVlIGlmIE5PREUgaXMgYSBs b2NhbCBmaW5hbCAoYXMgb3Bwb3NlZCB0byBhIGZpbmFsIHZhcmlhYmxlLikKKyAgIFRoaXMgbWFj cm8gYWNjZXNzZXMgdGhlIGZsYWcgdG8gcmVhZCBvciBzZXQgaXQuICovCisjZGVmaW5lIExPQ0FM X0ZJTkFMKE5PREUpIFwKKyAgKCgoc3RydWN0IGxhbmdfZGVjbF92YXIqKURFQ0xfTEFOR19TUEVD SUZJQyhOT0RFKSktPmxvY2FsX2ZpbmFsKQorLyogVHJ1ZSBpZiBOT0RFIGlzIGEgbG9jYWwgZmlu YWwuICovCisjZGVmaW5lIExPQ0FMX0ZJTkFMX1AoTk9ERSkgKERFQ0xfTEFOR19TUEVDSUZJQyAo Tk9ERSkgJiYgTE9DQUxfRklOQUwgKE5PREUpKQorLyogVHJ1ZSBpZiBOT0RFIGlzIGEgZmluYWwg dmFyaWFibGUgKi8KKyNkZWZpbmUgRklOQUxfVkFSSUFCTEVfUChOT0RFKSAoRklFTERfRklOQUwg KE5PREUpICYmICFGSUVMRF9TVEFUSUMgKE5PREUpKQorLyogVHJ1ZSBpZiBOT0RFIGlzIGEgY2xh c3MgZmluYWwgdmFyaWFibGUgKi8KKyNkZWZpbmUgQ0xBU1NfRklOQUxfVkFSSUFCTEVfUChOT0RF KSBcCisgIChGSUVMRF9GSU5BTCAoTk9ERSkgJiYgRklFTERfU1RBVElDIChOT0RFKSkKKy8qIENy ZWF0ZSBhIERFQ0xfTEFOR19TUEVDSUZJQyBpZiBuZWNlc3NhcnkuICovCisjZGVmaW5lIE1BWUJF X0NSRUFURV9WQVJfTEFOR19ERUNMX1NQRUNJRklDKFQpCQkJXAorICBpZiAoREVDTF9MQU5HX1NQ RUNJRklDIChUKSA9PSBOVUxMKQkJCQlcCisgICAgewkJCQkJCQkJXAorICAgICAgREVDTF9MQU5H X1NQRUNJRklDICgoVCkpCQkJCQlcCisJPSAoKHN0cnVjdCBsYW5nX2RlY2wgKikJCQkJCVwKKwkg ICBnZ2NfYWxsb2NfY2xlYXJlZCAoc2l6ZW9mIChzdHJ1Y3QgbGFuZ19kZWNsX3ZhcikpKTsJXAor ICAgIH0KIAogLyogRm9yIGEgbG9jYWwgVkFSX0RFQ0wsIGhvbGRzIHRoZSBpbmRleCBpbnRvIGEg d29yZHMgYml0c3RyaW5nIHRoYXQKICAgIHNwZWNpZmllcyBpZiB0aGlzIGRlY2wgaXMgZGVmaW5p dGl2ZWx5IGFzc2lnbmVkLgpAQCAtNzk0LDE1ICs4MzQsMTUgQEAgc3RydWN0IGxhbmdfZGVjbAog ICB0cmVlIHRocm93c19saXN0OwkJLyogRXhjZXB0aW9uIHNwZWNpZmllZCBieSBgdGhyb3dzJyAq LwogICB0cmVlIGZ1bmN0aW9uX2RlY2xfYm9keTsJLyogSG9sZCBhbGwgZnVuY3Rpb24ncyBzdGF0 ZW1lbnRzICovCiAgIHRyZWUgY2FsbGVkX2NvbnN0cnVjdG9yOwkvKiBXaGVuIGRlY2wgaXMgYSBj b25zdHJ1Y3RvciwgdGhlCi0JCQkJICAgbGlzdCBvZiBvdGhlciBjb25zdHJ1Y3RvciBpdCBjYWxs cy4gKi8KKwkJCQkgICBsaXN0IG9mIG90aGVyIGNvbnN0cnVjdG9yIGl0IGNhbGxzICovCiAgIHN0 cnVjdCBoYXNoX3RhYmxlIGluaXRfdGVzdF90YWJsZTsKLQkJCQkvKiBDbGFzcyBpbml0aWFsaXph dGlvbiB0ZXN0IHZhcmlhYmxlcy4gICovCisJCQkJLyogQ2xhc3MgaW5pdGlhbGl6YXRpb24gdGVz dCB2YXJpYWJsZXMgICovCiAgIHRyZWUgaW5uZXJfYWNjZXNzOwkJLyogVGhlIGlkZW50aWZpZXIg b2YgdGhlIGFjY2VzcyBtZXRob2QKIAkJCQkgICB1c2VkIGZvciBpbnZvY2F0aW9uIGZyb20gaW5u ZXIgY2xhc3NlcyAqLwogICBpbnQgbmFwOwkJCS8qIE51bWJlciBvZiBhcnRpZmljaWFsIHBhcmFt ZXRlcnMgKi8KLQotICBpbnQgbmF0aXZlIDogMTsJCS8qIE5vbnplcm8gaWYgdGhpcyBpcyBhIG5h dGl2ZQotCQkJCSAgIG1ldGhvZC4gICovCisgIGludCBuYXRpdmUgOiAxOwkJLyogTm9uemVybyBp ZiB0aGlzIGlzIGEgbmF0aXZlIG1ldGhvZCAgKi8KKyAgaW50IHN5bnRoZXRpY19jdG9yIDogMTsJ LyogTm9uemVybyBpZiB0aGlzIGlzIGEgc3ludGhldGljIGN0b3IgKi8KKyAgaW50IGluaXRfZmlu YWwgOiAxOwkJLyogTm9uemVybyBhbGwgZmluYWxzIGFyZSBpbml0aWFsaXplZCAqLwogfTsKIAog LyogaW5pdF90ZXN0X3RhYmxlIGhhc2ggdGFibGUgZW50cnkgc3RydWN0dXJlLiAgKi8KQEAgLTgx MiwxMyArODUyLDIwIEBAIHN0cnVjdCBpbml0X3Rlc3RfaGFzaF9lbnRyeQogICB0cmVlIGluaXRf dGVzdF9kZWNsOwogfTsKIAotLyogREVDTF9MQU5HX1NQRUNJRklDIGZvciBWQVJfREVDTCBhbmQg UEFSTV9ERUNMLiAqLworLyogREVDTF9MQU5HX1NQRUNJRklDIGZvciBWQVJfREVDTCwgUEFSTV9E RUNMIGFuZCBzb21ldGltZXMgRklFTERfREVDTAorICAgKGFjY2VzcyBtZXRob2RzIG9uIG91dGVy IGNsYXNzIGZpZWxkcykgYW5kIGZpbmFsIGZpZWxkcy4gKi8KIHN0cnVjdCBsYW5nX2RlY2xfdmFy CiB7CiAgIGludCBzbG90X251bWJlcjsKICAgaW50IHN0YXJ0X3BjOwogICBpbnQgZW5kX3BjOwog ICB0cmVlIHNsb3RfY2hhaW47CisgIHRyZWUgYW07CQkJLyogQWNjZXNzIG1ldGhvZCBmb3IgdGhp cyBmaWVsZCAoMS4xKSAqLworICB0cmVlIHdmbDsJCQkvKiBPcmlnaW5hbCB3ZmwgKi8KKyAgaW50 IGZpbmFsX2l1ZCA6IDE7CQkvKiBGaW5hbCBpbml0aWFsaXplZCB1cG9uIGRlY2xhcmF0aW9uICov CisgIGludCBmaW5hbF9saWljIDogMTsJCS8qIEZpbmFsIGxvY2FsbHkgaW5pdGlhbGl6ZWQgaW4g Y3RvcnMgKi8KKyAgaW50IGZpbmFsX2llcnIgOiAxOwkJLyogSW5pdGlhbGl6YXRpb24gZXJyb3Ig YWxyZWFkeSBkZXRlY3RlZCAqLworICBpbnQgbG9jYWxfZmluYWwgOiAxOwkJLyogVHJ1ZSBpZiB0 aGUgZGVjbCBpcyBhIGxvY2FsIGZpbmFsICovCiB9OwogCiAvKiBNYWNybyB0byBhY2Nlc3MgZmll bGRzIGluIGBzdHJ1Y3QgbGFuZ190eXBlJy4gICovCkBAIC04NDMsNiArODkwLDcgQEAgc3RydWN0 IGxhbmdfZGVjbF92YXIKICNkZWZpbmUgVFlQRV9ET1RfQ0xBU1MoVCkgICAgICAgIChUWVBFX0xB TkdfU1BFQ0lGSUMoVCktPmRvdF9jbGFzcykKICNkZWZpbmUgVFlQRV9QUklWQVRFX0lOTkVSX0NM QVNTKFQpIChUWVBFX0xBTkdfU1BFQ0lGSUMoVCktPnBpYykKICNkZWZpbmUgVFlQRV9QUk9URUNU RURfSU5ORVJfQ0xBU1MoVCkgKFRZUEVfTEFOR19TUEVDSUZJQyhUKS0+cG9pYykKKyNkZWZpbmUg VFlQRV9IQVNfRklOQUxfVkFSSUFCTEUoVCkgKFRZUEVfTEFOR19TUEVDSUZJQyhUKS0+YWZ2KQog CiBzdHJ1Y3QgbGFuZ190eXBlCiB7CkBAIC04NTksNiArOTA3LDcgQEAgc3RydWN0IGxhbmdfdHlw ZQogCQkJCSAgIDxub25fcHJpbWl0aXZlX3R5cGU+LmNsYXNzICovCiAgIHVuc2lnbmVkIHBpYzox OwkJLyogUHJpdmF0ZSBJbm5lciBDbGFzcy4gKi8KICAgdW5zaWduZWQgcG9pYzoxOwkJLyogUHJv dGVjdGVkIElubmVyIENsYXNzLiAqLworICB1bnNpZ25lZCBhZnY6MTsJCS8qIEhhcyBmaW5hbCB2 YXJpYWJsZXMgKi8KIH07CiAKICNpZmRlZiBKQVZBX1VTRV9IQU5ETEVTCkBAIC0xMTA2LDcgKzEx NTUsNiBAQCBzdHJ1Y3QgcnR4X2RlZiAqIGphdmFfbGFuZ19leHBhbmRfZXhwciBQCiAjZGVmaW5l IEZJRUxEX0ZJTkFMKERFQ0wpIERFQ0xfTEFOR19GTEFHXzMgKERFQ0wpCiAjZGVmaW5lIEZJRUxE X1ZPTEFUSUxFKERFQ0wpIERFQ0xfTEFOR19GTEFHXzQgKERFQ0wpCiAjZGVmaW5lIEZJRUxEX1RS QU5TSUVOVChERUNMKSBERUNMX0xBTkdfRkxBR181IChERUNMKQotI2RlZmluZSBMT0NBTF9GSU5B TChERUNMKSBGSUVMRF9GSU5BTChERUNMKQogCiAvKiBBY2Nlc3MgZmxhZ3MgZXRjIGZvciBhIGNs YXNzIChhIFRZUEVfREVDTCk6ICovCiAKSW5kZXg6IHBhcnNlLnkKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmls ZTogL2N2cy9nY2MvZWdjcy9nY2MvamF2YS9wYXJzZS55LHYKcmV0cmlldmluZyByZXZpc2lvbiAx LjIyMQpkaWZmIC11IC1wIC1yMS4yMjEgcGFyc2UueQotLS0gcGFyc2UueQkyMDAwLzEwLzI1IDA1 OjQ3OjI4CTEuMjIxCisrKyBwYXJzZS55CTIwMDAvMTAvMjkgMDE6MzY6NTUKQEAgLTEwMSw2ICsx MDEsMTIgQEAgc3RhdGljIGludCBwcm9jZXNzX2ltcG9ydHMgUEFSQU1TICgodm9pZAogc3RhdGlj IHZvaWQgcmVhZF9pbXBvcnRfZGlyIFBBUkFNUyAoKHRyZWUpKTsKIHN0YXRpYyBpbnQgZmluZF9p bl9pbXBvcnRzX29uX2RlbWFuZCBQQVJBTVMgKCh0cmVlKSk7CiBzdGF0aWMgdm9pZCBmaW5kX2lu X2ltcG9ydHMgUEFSQU1TICgodHJlZSkpOworc3RhdGljIHZvaWQgY2hlY2tfc3RhdGljX2ZpbmFs X3ZhcmlhYmxlX2Fzc2lnbm1lbnRfZmxhZyBQQVJBTVMgKCh0cmVlKSk7CitzdGF0aWMgdm9pZCBy ZXNldF9zdGF0aWNfZmluYWxfdmFyaWFibGVfYXNzaWdubWVudF9mbGFnIFBBUkFNUyAoKHRyZWUp KTsKK3N0YXRpYyB2b2lkIGNoZWNrX2ZpbmFsX3ZhcmlhYmxlX2xvY2FsX2Fzc2lnbm1lbnRfZmxh ZyBQQVJBTVMgKCh0cmVlLCB0cmVlKSk7CitzdGF0aWMgdm9pZCByZXNldF9maW5hbF92YXJpYWJs ZV9sb2NhbF9hc3NpZ25tZW50X2ZsYWcgUEFSQU1TICgodHJlZSkpOworc3RhdGljIGludCAgY2hl Y2tfZmluYWxfdmFyaWFibGVfaW5kaXJlY3RfYXNzaWdubWVudCBQQVJBTVMgKCh0cmVlKSk7Citz dGF0aWMgdm9pZCBjaGVja19maW5hbF92YXJpYWJsZV9nbG9iYWxfYXNzaWdubWVudF9mbGFnIFBB UkFNUyAoKHRyZWUpKTsKIHN0YXRpYyB2b2lkIGNoZWNrX2lubmVyX2NsYXNzX2FjY2VzcyBQQVJB TVMgKCh0cmVlLCB0cmVlLCB0cmVlKSk7CiBzdGF0aWMgaW50IGNoZWNrX3BrZ19jbGFzc19hY2Nl c3MgUEFSQU1TICgodHJlZSwgdHJlZSkpOwogc3RhdGljIHZvaWQgcmVnaXN0ZXJfcGFja2FnZSBQ QVJBTVMgKCh0cmVlKSk7CkBAIC0zOTUxLDcgKzM5NTcsNyBAQCBhZGRfaW5uZXJfY2xhc3NfZmll bGRzIChjbGFzc19kZWNsLCBmY3RfCiAJICB0cmVlIHdmbCwgaW5pdCwgbGlzdDsKIAkgIAogCSAg LyogQXZvaWQgbm9uIGZpbmFsIGFyZ3VtZW50cy4gKi8KLQkgIGlmICghTE9DQUxfRklOQUwgKGRl Y2wpKQorCSAgaWYgKCFMT0NBTF9GSU5BTF9QIChkZWNsKSkKIAkgICAgY29udGludWU7CiAJICAK IAkgIE1BTkdMRV9PVVRFUl9MT0NBTF9WQVJJQUJMRV9OQU1FIChuYW1lLCBERUNMX05BTUUgKGRl Y2wpKTsKQEAgLTQxODQsMTEgKzQxOTAsMjkgQEAgcmVnaXN0ZXJfZmllbGRzIChmbGFncywgdHlw ZSwgdmFyaWFibGVfbAogICAgICAgZmllbGRfZGVjbCA9IGFkZF9maWVsZCAoY2xhc3NfdHlwZSwg Y3VycmVudF9uYW1lLCByZWFsX3R5cGUsIGZsYWdzKTsKICAgICAgIENIRUNLX0RFUFJFQ0FURUQg KGZpZWxkX2RlY2wpOwogCi0gICAgICAvKiBJZiB0aGUgY291cGxlIGluaXRpYWxpemVyL2luaXRp YWxpemVkIGlzIG1hcmtlZCBBUkdfRklOQUxfUCwgd2UKLQkgbWFyayB0aGUgY3JlYXRlZCBmaWVs ZCBGSUVMRF9MT0NBTF9BTElBUywgc28gdGhhdCB3ZSBjYW4gCi0JIGhpZGUgcGFyYW1ldGVycyB0 byB0aGlzIGlubmVyIGNsYXNzIGZpbml0JCBhbmQgY29uc3RydWN0b3JzLiAqLworICAgICAgLyog SWYgdGhlIGZpZWxkIGRlbm90ZXMgYSBmaW5hbCBpbnN0YW5jZSB2YXJpYWJsZSwgdGhlbiB3ZQor CSBhbGxvY2F0ZSBhIExBTkdfREVDTF9TUEVDSUZJQyBwYXJ0IHRvIGtlZXAgdHJhY2sgb2YgaXRz CisJIGluaXRpYWxpemF0aW9uLiBXZSBhbHNvIG1hcmsgd2hldGhlciB0aGUgZmllbGQgd2FzCisJ IGluaXRpYWxpemVkIHVwb24gaXQncyBkZWNsYXJhdGlvbi4gV2UgZG9uJ3QgZG8gdGhhdCBpZiB0 aGUKKwkgY3JlYXRlZCBmaWVsZCBpcyBhbiBhbGlhcyB0byBhIGZpbmFsIGxvY2FsLiAqLworICAg ICAgaWYgKCFBUkdfRklOQUxfUCAoY3VycmVudCkgJiYgKGZsYWdzICYgQUNDX0ZJTkFMKSkKKwl7 CisJICBNQVlCRV9DUkVBVEVfVkFSX0xBTkdfREVDTF9TUEVDSUZJQyAoZmllbGRfZGVjbCk7CisJ ICBERUNMX0ZJRUxEX0ZJTkFMX1dGTCAoZmllbGRfZGVjbCkgPSBjbDsKKwkgIGlmICgoZmxhZ3Mg JiBBQ0NfU1RBVElDKSAmJiBpbml0KQorCSAgICBERUNMX0ZJRUxEX0ZJTkFMX0lVRCAoZmllbGRf ZGVjbCkgPSAxOworCX0KKworICAgICAgLyogSWYgdGhlIGNvdXBsZSBpbml0aWFsaXplci9pbml0 aWFsaXplZCBpcyBtYXJrZWQgQVJHX0ZJTkFMX1AsCisJIHdlIG1hcmsgdGhlIGNyZWF0ZWQgZmll bGQgRklFTERfTE9DQUxfQUxJQVMsIHNvIHRoYXQgd2UgY2FuCisJIGhpZGUgcGFyYW1ldGVycyB0 byB0aGlzIGlubmVyIGNsYXNzIGZpbml0JCBhbmQKKwkgY29uc3RydWN0b3JzLiBJdCBhbHNvIG1l YW5zIHRoYXQgdGhlIGZpZWxkIGlzbid0IGZpbmFsIHBlcgorCSBzYXkuICovCiAgICAgICBpZiAo QVJHX0ZJTkFMX1AgKGN1cnJlbnQpKQotCUZJRUxEX0xPQ0FMX0FMSUFTIChmaWVsZF9kZWNsKSA9 IDE7CisJeworCSAgRklFTERfTE9DQUxfQUxJQVMgKGZpZWxkX2RlY2wpID0gMTsKKwkgIEZJRUxE X0ZJTkFMIChmaWVsZF9kZWNsKSA9IDA7CisJfQogICAgICAgCiAgICAgICAvKiBDaGVjayBpZiB3 ZSBtdXN0IGNoYWluLiAqLwogICAgICAgaWYgKG11c3RfY2hhaW4pCkBAIC01MTgxLDcgKzUyMDUs NyBAQCBjcmFmdF9jb25zdHJ1Y3RvciAoY2xhc3NfZGVjbCwgYXJncykKICAgZml4X21ldGhvZF9h cmd1bWVudF9uYW1lcyAocGFybSwgZGVjbCk7CiAgIC8qIE5vdywgbWFyayB0aGUgYXJ0aWZpY2lh bCBwYXJhbWV0ZXJzLiAqLwogICBERUNMX0ZVTkNUSU9OX05BUCAoZGVjbCkgPSBhcnRpZmljaWFs OwotICBERUNMX0NPTlNUUlVDVE9SX1AgKGRlY2wpID0gMTsKKyAgREVDTF9GVU5DVElPTl9TWU5U SEVUSUNfQ1RPUiAoZGVjbCkgPSBERUNMX0NPTlNUUlVDVE9SX1AgKGRlY2wpID0gMTsKIH0KIAog CkBAIC03MDM4LDYgKzcwNjIsNyBAQCBkZWNsYXJlX2xvY2FsX3ZhcmlhYmxlcyAobW9kaWZpZXIs IHR5cGUsCiAgICAgICAvKiBOZXZlciBsYXlvdXQgdGhpcyBkZWNsLiBUaGlzIHdpbGwgYmUgZG9u ZSB3aGVuIGl0cyBzY29wZQogCSB3aWxsIGJlIGVudGVyZWQgKi8KICAgICAgIGRlY2wgPSBidWls ZF9kZWNsIChWQVJfREVDTCwgbmFtZSwgcmVhbF90eXBlKTsKKyAgICAgIE1BWUJFX0NSRUFURV9W QVJfTEFOR19ERUNMX1NQRUNJRklDIChkZWNsKTsKICAgICAgIExPQ0FMX0ZJTkFMIChkZWNsKSA9 IGZpbmFsX3A7CiAgICAgICBCTE9DS19DSEFJTl9ERUNMIChkZWNsKTsKICAgICAgIApAQCAtNzEx NSw3ICs3MTQwLDEwIEBAIHNvdXJjZV9zdGFydF9qYXZhX21ldGhvZCAoZm5kZWNsKQogICAgICAg LyogUmVtZW1iZXIgaWYgYSBsb2NhbCB2YXJpYWJsZSB3YXMgZGVjbGFyZWQgZmluYWwgKHZpYSBp dHMKICAgICAgICAgIFRSRUVfTElTVCBvZiB0eXBlL25hbWUuKSBTZXQgTE9DQUxfRklOQUwgYWNj b3JkaW5nbHkuICovCiAgICAgICBpZiAoQVJHX0ZJTkFMX1AgKHRlbSkpCi0JTE9DQUxfRklOQUwg KHBhcm1fZGVjbCkgPSAxOworCXsKKwkgIE1BWUJFX0NSRUFURV9WQVJfTEFOR19ERUNMX1NQRUNJ RklDIChwYXJtX2RlY2wpOworCSAgTE9DQUxfRklOQUwgKHBhcm1fZGVjbCkgPSAxOworCX0KIAog ICAgICAgQkxPQ0tfQ0hBSU5fREVDTCAocGFybV9kZWNsKTsKICAgICB9CkBAIC03NDcxLDYgKzc0 OTksMTQgQEAgamF2YV9jb21wbGV0ZV9leHBhbmRfbWV0aG9kcyAoY2xhc3NfZGVjbAogCiAgIGN1 cnJlbnRfY2xhc3MgPSBUUkVFX1RZUEUgKGNsYXNzX2RlY2wpOwogCisgIC8qIEZpbmQgd2hldGhl ciB0aGUgY2xhc3MgaGFzIGZpbmFsIHZhcmlhYmxlcyAqLworICBmb3IgKGRlY2wgPSBUWVBFX0ZJ RUxEUyAoY3VycmVudF9jbGFzcyk7IGRlY2w7IGRlY2wgPSBUUkVFX0NIQUlOIChkZWNsKSkKKyAg ICBpZiAoRklFTERfRklOQUwgKGRlY2wpKQorICAgICAgeworCVRZUEVfSEFTX0ZJTkFMX1ZBUklB QkxFIChjdXJyZW50X2NsYXNzKSA9IDE7CisJYnJlYWs7CisgICAgICB9CisKICAgLyogSW5pdGlh bGl6ZSBhIG5ldyBjb25zdGFudCBwb29sICovCiAgIGluaXRfb3V0Z29pbmdfY3Bvb2wgKCk7CiAK QEAgLTc1MDMsNyArNzUzOSwxNSBAQCBqYXZhX2NvbXBsZXRlX2V4cGFuZF9tZXRob2RzIChjbGFz c19kZWNsCiAgICAgICBpZiAobm9fYm9keSkKIAlyZXN0b3JlX2xpbmVfbnVtYmVyX3N0YXR1cyAo MSk7CiAKKyAgICAgIC8qIFJlc2V0IHRoZSBmaW5hbCBsb2NhbCB2YXJpYWJsZSBhc3NpZ25tZW50 IGZsYWdzICovCisgICAgICBpZiAoVFlQRV9IQVNfRklOQUxfVkFSSUFCTEUgKGN1cnJlbnRfY2xh c3MpKQorCXJlc2V0X2ZpbmFsX3ZhcmlhYmxlX2xvY2FsX2Fzc2lnbm1lbnRfZmxhZyAoY3VycmVu dF9jbGFzcyk7CisKICAgICAgIGphdmFfY29tcGxldGVfZXhwYW5kX21ldGhvZCAoZGVjbCk7CisK KyAgICAgIC8qIENoZWNrIGZvciBtaXNzZWQgb3V0IGZpbmFsIHZhcmlhYmxlIGFzc2lnbm1lbnQg Ki8KKyAgICAgIGlmIChUWVBFX0hBU19GSU5BTF9WQVJJQUJMRSAoY3VycmVudF9jbGFzcykpCisJ Y2hlY2tfZmluYWxfdmFyaWFibGVfbG9jYWxfYXNzaWdubWVudF9mbGFnIChjdXJyZW50X2NsYXNz LCBkZWNsKTsKICAgICAgIAogICAgICAgaWYgKG5vX2JvZHkpCiAJcmVzdG9yZV9saW5lX251bWJl cl9zdGF0dXMgKDApOwpAQCAtNzUzMSwxMCArNzU3NSwxNyBAQCBqYXZhX2NvbXBsZXRlX2V4cGFu ZF9tZXRob2RzIChjbGFzc19kZWNsCiAgIC8qIElmIHRoZXJlIGlzIGluZGVlZCBhIDxjbGluaXQ+ LCBmdWxseSBleHBhbmQgaXQgbm93ICovCiAgIGlmIChjbGluaXQpCiAgICAgeworICAgICAgLyog UmVzZXQgdGhlIGZpbmFsIGxvY2FsIHZhcmlhYmxlIGFzc2lnbm1lbnQgZmxhZ3MgKi8KKyAgICAg IGlmIChUWVBFX0hBU19GSU5BTF9WQVJJQUJMRSAoY3VycmVudF9jbGFzcykpCisJcmVzZXRfc3Rh dGljX2ZpbmFsX3ZhcmlhYmxlX2Fzc2lnbm1lbnRfZmxhZyAoY3VycmVudF9jbGFzcyk7CiAgICAg ICAvKiBQcmV2ZW50IHRoZSB1c2Ugb2YgYHRoaXMnIGluc2lkZSA8Y2xpbml0PiAqLwogICAgICAg Y3R4cC0+ZXhwbGljaXRfY29uc3RydWN0b3JfcCA9IDE7CiAgICAgICBqYXZhX2NvbXBsZXRlX2V4 cGFuZF9tZXRob2QgKGNsaW5pdCk7CiAgICAgICBjdHhwLT5leHBsaWNpdF9jb25zdHJ1Y3Rvcl9w ID0gMDsKKyAgICAgIC8qIENoZWNrIGZvciBtaXNzZWQgb3V0IHN0YXRpYyBmaW5hbCB2YXJpYWJs ZSBhc3NpZ25tZW50ICovCisgICAgICBpZiAoVFlQRV9IQVNfRklOQUxfVkFSSUFCTEUgKGN1cnJl bnRfY2xhc3MpCisJICAmJiAhQ0xBU1NfSU5URVJGQUNFIChjbGFzc19kZWNsKSkKKwljaGVja19z dGF0aWNfZmluYWxfdmFyaWFibGVfYXNzaWdubWVudF9mbGFnIChjdXJyZW50X2NsYXNzKTsKICAg ICB9CiAgIAogICAvKiBXZSBtaWdodCBoYXZlIGdlbmVyYXRlZCBhIGNsYXNzJCB0aGF0IHdlIG5v dyB3YW50IHRvIGV4cGFuZCAqLwpAQCAtNzU0OSw2ICs3NjAwLDE1IEBAIGphdmFfY29tcGxldGVf ZXhwYW5kX21ldGhvZHMgKGNsYXNzX2RlY2wKIAkgICYmIHZlcmlmeV9jb25zdHJ1Y3Rvcl9jaXJj dWxhcml0eSAoZGVjbCwgZGVjbCkpCiAJYnJlYWs7CiAKKyAgLyogRmluYWwgY2hlY2sgb24gdGhl IGluaXRpYWxpemF0aW9uIG9mIGZpbmFsIHZhcmlhYmxlcy4gKi8KKyAgaWYgKFRZUEVfSEFTX0ZJ TkFMX1ZBUklBQkxFIChjdXJyZW50X2NsYXNzKSkKKyAgICB7CisgICAgICBjaGVja19maW5hbF92 YXJpYWJsZV9nbG9iYWxfYXNzaWdubWVudF9mbGFnIChjdXJyZW50X2NsYXNzKTsKKyAgICAgIC8q IElmIHdlIGhhdmUgYW4gaW50ZXJmYWNlLCBjaGVjayBmb3IgdW5pbml0aWFsaXplZCBmaWVsZHMu ICovCisgICAgICBpZiAoQ0xBU1NfSU5URVJGQUNFIChjbGFzc19kZWNsKSkKKwljaGVja19zdGF0 aWNfZmluYWxfdmFyaWFibGVfYXNzaWdubWVudF9mbGFnIChjdXJyZW50X2NsYXNzKTsKKyAgICB9 CisKICAgLyogU2F2ZSB0aGUgY29uc3RhbnQgcG9vbC4gV2UnbGwgbmVlZCB0byByZXN0b3JlIGl0 IGxhdGVyLiAqLwogICBUWVBFX0NQT09MIChjdXJyZW50X2NsYXNzKSA9IG91dGdvaW5nX2Nwb29s OwogfQpAQCAtNzY4OSw3ICs3NzQ5LDcgQEAgbWF5YmVfeWFua19jbGluaXQgKG1kZWNsKQogCWNv bnRpbnVlOwogCiAgICAgICAvKiBBbnl0aGluZyB0aGF0IGlzbid0IFN0cmluZyBvciBhIGJhc2lj IHR5cGUgaXMgcnVsZWQgb3V0IC0tIG9yCi0JIGlmIHdlIG5vdyBob3cgdG8gZGVhbCB3aXRoIGl0 ICh3aGVuIGRvaW5nIHRoaW5ncyBuYXRpdmVseSkgd2UKKwkgaWYgd2Uga25vdyBob3cgdG8gZGVh bCB3aXRoIGl0ICh3aGVuIGRvaW5nIHRoaW5ncyBuYXRpdmVseSkgd2UKIAkgc2hvdWxkIGdlbmVy YXRlZCBhbiBlbXB0eSA8Y2xpbml0PiBzbyB0aGF0IFNVSUQgYXJlIGNvbXB1dGVkCiAJIGNvcnJl Y3RseS4gKi8KICAgICAgIGlmICghIEpTVFJJTkdfVFlQRV9QIChUUkVFX1RZUEUgKGN1cnJlbnQp KQpAQCAtODAzMCwxNCArODA5MCwxMSBAQCBidWlsZF9vdXRlcl9maWVsZF9hY2Nlc3NfbWV0aG9k cyAoZGVjbCkKIHsKICAgdHJlZSBpZCwgYXJncywgc3RtdCwgbWRlY2w7CiAgIAotICAvKiBDaGVj ayBwb2ludCwgdG8gYmUgcmVtb3ZlZC4gRklYTUUgKi8KLSAgaWYgKEZJRUxEX0lOTkVSX0FDQ0VT UyAoZGVjbCkgCi0gICAgICAmJiBUUkVFX0NPREUgKEZJRUxEX0lOTkVSX0FDQ0VTUyAoZGVjbCkp ICE9IElERU5USUZJRVJfTk9ERSkKLSAgICBhYm9ydCAoKTsKLQotICBpZiAoRklFTERfSU5ORVJf QUNDRVNTIChkZWNsKSkKKyAgaWYgKEZJRUxEX0lOTkVSX0FDQ0VTU19QIChkZWNsKSkKICAgICBy ZXR1cm4gRklFTERfSU5ORVJfQUNDRVNTIChkZWNsKTsKIAorICBNQVlCRV9DUkVBVEVfVkFSX0xB TkdfREVDTF9TUEVDSUZJQyAoZGVjbCk7CisgCiAgIC8qIENyZWF0ZSB0aGUgaWRlbnRpZmllciBh bmQgYSBmdW5jdGlvbiBuYW1lZCBhZnRlciBpdC4gKi8KICAgaWQgPSBidWlsZF9uZXdfYWNjZXNz X2lkICgpOwogCkBAIC04MDU1LDE3ICs4MTEyLDIxIEBAIGJ1aWxkX291dGVyX2ZpZWxkX2FjY2Vz c19tZXRob2RzIChkZWNsKQogCQkJCQkgICBUUkVFX1RZUEUgKGRlY2wpLCBpZCwgYXJncywgc3Rt dCk7CiAgIERFQ0xfRlVOQ1RJT05fQUNDRVNTX0RFQ0wgKG1kZWNsKSA9IGRlY2w7CiAKLSAgLyog Q3JlYXRlIHRoZSB3cml0ZSBhY2Nlc3MgbWV0aG9kICovCi0gIGFyZ3MgPSBidWlsZF90cmVlX2xp c3QgKGluc3RfaWQsIGJ1aWxkX3BvaW50ZXJfdHlwZSAoREVDTF9DT05URVhUIChkZWNsKSkpOwot ICBUUkVFX0NIQUlOIChhcmdzKSA9IGJ1aWxkX3RyZWVfbGlzdCAod3B2X2lkLCBUUkVFX1RZUEUg KGRlY2wpKTsKLSAgVFJFRV9DSEFJTiAoVFJFRV9DSEFJTiAoYXJncykpID0gZW5kX3BhcmFtc19u b2RlOwotICBzdG10ID0gbWFrZV9xdWFsaWZpZWRfcHJpbWFyeSAoYnVpbGRfd2ZsX25vZGUgKGlu c3RfaWQpLAotCQkJCSBidWlsZF93Zmxfbm9kZSAoREVDTF9OQU1FIChkZWNsKSksIDApOwotICBz dG10ID0gYnVpbGRfcmV0dXJuICgwLCBidWlsZF9hc3NpZ25tZW50IChBU1NJR05fVEssIDAsIHN0 bXQsCi0JCQkJCSAgICBidWlsZF93Zmxfbm9kZSAod3B2X2lkKSkpOwotCi0gIG1kZWNsID0gYnVp bGRfb3V0ZXJfZmllbGRfYWNjZXNzX21ldGhvZCAoREVDTF9DT05URVhUIChkZWNsKSwgCi0JCQkJ CSAgIFRSRUVfVFlQRSAoZGVjbCksIGlkLCBhcmdzLCBzdG10KTsKKyAgLyogQ3JlYXRlIHRoZSB3 cml0ZSBhY2Nlc3MgbWV0aG9kLiBObyB3cml0ZSBhY2Nlc3MgZm9yIGZpbmFsIHZhcmlhYmxlICov CisgIGlmICghRklFTERfRklOQUwgKGRlY2wpKQorICAgIHsKKyAgICAgIGFyZ3MgPSBidWlsZF90 cmVlX2xpc3QgKGluc3RfaWQsIAorCQkJICAgICAgYnVpbGRfcG9pbnRlcl90eXBlIChERUNMX0NP TlRFWFQgKGRlY2wpKSk7CisgICAgICBUUkVFX0NIQUlOIChhcmdzKSA9IGJ1aWxkX3RyZWVfbGlz dCAod3B2X2lkLCBUUkVFX1RZUEUgKGRlY2wpKTsKKyAgICAgIFRSRUVfQ0hBSU4gKFRSRUVfQ0hB SU4gKGFyZ3MpKSA9IGVuZF9wYXJhbXNfbm9kZTsKKyAgICAgIHN0bXQgPSBtYWtlX3F1YWxpZmll ZF9wcmltYXJ5IChidWlsZF93Zmxfbm9kZSAoaW5zdF9pZCksCisJCQkJICAgICBidWlsZF93Zmxf bm9kZSAoREVDTF9OQU1FIChkZWNsKSksIDApOworICAgICAgc3RtdCA9IGJ1aWxkX3JldHVybiAo MCwgYnVpbGRfYXNzaWdubWVudCAoQVNTSUdOX1RLLCAwLCBzdG10LAorCQkJCQkJYnVpbGRfd2Zs X25vZGUgKHdwdl9pZCkpKTsKKyAgICAgIG1kZWNsID0gYnVpbGRfb3V0ZXJfZmllbGRfYWNjZXNz X21ldGhvZCAoREVDTF9DT05URVhUIChkZWNsKSwgCisJCQkJCSAgICAgICBUUkVFX1RZUEUgKGRl Y2wpLCBpZCwgCisJCQkJCSAgICAgICBhcmdzLCBzdG10KTsKKyAgICB9CiAgIERFQ0xfRlVOQ1RJ T05fQUNDRVNTX0RFQ0wgKG1kZWNsKSA9IGRlY2w7CiAKICAgLyogUmV0dXJuIHRoZSBhY2Nlc3Mg bmFtZSAqLwpAQCAtODk1OSw3ICs5MDIwLDcgQEAgcmVzb2x2ZV9maWVsZF9hY2Nlc3MgKHF1YWxf d2ZsLCBmaWVsZF9kZQogICAgICAgaWYgKCF0eXBlX2ZvdW5kKQogCXR5cGVfZm91bmQgPSBERUNM X0NPTlRFWFQgKGRlY2wpOwogICAgICAgaXNfc3RhdGljID0gSkRFQ0xfUCAoZGVjbCkgJiYgRklF TERfU1RBVElDIChkZWNsKTsKLSAgICAgIGlmIChGSUVMRF9GSU5BTCAoZGVjbCkgJiYgRklFTERf U1RBVElDIChkZWNsKQorICAgICAgaWYgKENMQVNTX0ZJTkFMX1ZBUklBQkxFX1AgKGRlY2wpCiAJ ICAmJiBKUFJJTUlUSVZFX1RZUEVfUCAoVFJFRV9UWVBFIChkZWNsKSkKIAkgICYmIERFQ0xfSU5J VElBTCAoZGVjbCkpCiAJewpAQCAtMTA5MzksNyArMTEwMDAsNyBAQCBqYXZhX2NvbXBsZXRlX3Ry ZWUgKG5vZGUpCiAgICAgIHRyZWUgbm9kZTsKIHsKICAgbm9kZSA9IGphdmFfY29tcGxldGVfbGhz IChub2RlKTsKLSAgaWYgKEpERUNMX1AgKG5vZGUpICYmIEZJRUxEX1NUQVRJQyAobm9kZSkgJiYg RklFTERfRklOQUwgKG5vZGUpIAorICBpZiAoSkRFQ0xfUCAobm9kZSkgJiYgQ0xBU1NfRklOQUxf VkFSSUFCTEVfUCAobm9kZSkKICAgICAgICYmIERFQ0xfSU5JVElBTCAobm9kZSkgIT0gTlVMTF9U UkVFCiAgICAgICAmJiAhZmxhZ19lbWl0X3hyZWYpCiAgICAgewpAQCAtMTA5NTgsNiArMTEwMTks OCBAQCBqYXZhX2NvbXBsZXRlX3RyZWUgKG5vZGUpCiAJICBlbHNlCiAJICAgIHJldHVybiB2YWx1 ZTsKIAl9CisgICAgICBlbHNlCisgICAgICAgIERFQ0xfRklFTERfRklOQUxfSVVEIChub2RlKSA9 IDA7CiAgICAgfQogICByZXR1cm4gbm9kZTsKIH0KQEAgLTExNDQ4LDYgKzExNTExLDggQEAgamF2 YV9jb21wbGV0ZV9saHMgKG5vZGUpCiAJICAgIH0KIAkgIGlmICghIGZsYWdfZW1pdF9jbGFzc19m aWxlcykKIAkgICAgREVDTF9JTklUSUFMIChubikgPSBOVUxMX1RSRUU7CisJICBpZiAoQ0xBU1Nf RklOQUxfVkFSSUFCTEVfUCAobm4pKQorCSAgICBERUNMX0ZJRUxEX0ZJTkFMX0lVRCAobm4pID0g MDsKIAl9CiAgICAgICB3Zmxfb3AyID0gVFJFRV9PUEVSQU5EIChub2RlLCAxKTsKIApAQCAtMTIw MDUsNiArMTIwNzAsMjE0IEBAIHByaW50X2ludF9ub2RlIChub2RlKQogICByZXR1cm4gYnVmZmVy OwogfQogCisMCisKKy8qIFRoaXMgc2VjdGlvbiBvZiB0aGUgY29kZSBoYW5kbGUgYXNzaWdubWVu dCBjaGVjayB3aXRoIEZJTkFMCisgICB2YXJpYWJsZXMuICAqLworCitzdGF0aWMgdm9pZAorcmVz ZXRfc3RhdGljX2ZpbmFsX3ZhcmlhYmxlX2Fzc2lnbm1lbnRfZmxhZyAoY2xhc3MpCisgICAgIHRy ZWUgY2xhc3M7Cit7CisgIHRyZWUgZmllbGQ7CisgIGZvciAoZmllbGQgPSBUWVBFX0ZJRUxEUyAo Y2xhc3MpOyBmaWVsZDsgZmllbGQgPSBUUkVFX0NIQUlOIChmaWVsZCkpCisgICAgaWYgKENMQVNT X0ZJTkFMX1ZBUklBQkxFX1AgKGZpZWxkKSkKKyAgICAgIERFQ0xfRklFTERfRklOQUxfTElJQyAo ZmllbGQpID0gMDsKK30KKworLyogRmlndXJlIHdoZXRoZXIgYWxsIGZpbmFsIHN0YXRpYyB2YXJp YWJsZSBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQuICAqLworCitzdGF0aWMgdm9pZAorY2hlY2tfc3Rh dGljX2ZpbmFsX3ZhcmlhYmxlX2Fzc2lnbm1lbnRfZmxhZyAoY2xhc3MpCisgICAgIHRyZWUgY2xh c3M7Cit7CisgIHRyZWUgZmllbGQ7CisKKyAgZm9yIChmaWVsZCA9IFRZUEVfRklFTERTIChjbGFz cyk7IGZpZWxkOyBmaWVsZCA9IFRSRUVfQ0hBSU4gKGZpZWxkKSkKKyAgICBpZiAoQ0xBU1NfRklO QUxfVkFSSUFCTEVfUCAoZmllbGQpCisJJiYgIURFQ0xfRklFTERfRklOQUxfSVVEIChmaWVsZCkg JiYgIURFQ0xfRklFTERfRklOQUxfTElJQyAoZmllbGQpKQorICAgICAgcGFyc2VfZXJyb3JfY29u dGV4dAorCShERUNMX0ZJRUxEX0ZJTkFMX1dGTCAoZmllbGQpLAorCSAiQmxhbmsgc3RhdGljIGZp bmFsIHZhcmlhYmxlIGAlcycgbWF5IG5vdCBoYXZlIGJlIGluaXRpYWxpemVkIiwKKwkgSURFTlRJ RklFUl9QT0lOVEVSIChERUNMX05BTUUgKGZpZWxkKSkpOworfQorCisvKiBUaGlzIGZ1bmN0aW9u IG1hcmtzIGFsbCBmaW5hbCB2YXJpYWJsZSBsb2NhbGx5IHVuYXNzaWduZWQuICAqLworCitzdGF0 aWMgdm9pZAorcmVzZXRfZmluYWxfdmFyaWFibGVfbG9jYWxfYXNzaWdubWVudF9mbGFnIChjbGFz cykKKyAgICAgdHJlZSBjbGFzczsKK3sKKyAgdHJlZSBmaWVsZDsKKyAgZm9yIChmaWVsZCA9IFRZ UEVfRklFTERTIChjbGFzcyk7IGZpZWxkOyBmaWVsZCA9IFRSRUVfQ0hBSU4gKGZpZWxkKSkKKyAg ICBpZiAoRklOQUxfVkFSSUFCTEVfUCAoZmllbGQpKQorICAgICAgREVDTF9GSUVMRF9GSU5BTF9M SUlDIChmaWVsZCkgPSAwOworfQorCisvKiBGaWd1cmUgd2hldGhlciBhbGwgZmluYWwgdmFyaWFi bGVzIGhhdmUgYmVlbSBpbml0aWFsaXplZCBpbiBNREVDTAorICAgYW5kIG1hcmsgTURFQ0wgYWNj b3JkaW5nbHkuICAqLworCitzdGF0aWMgdm9pZAorY2hlY2tfZmluYWxfdmFyaWFibGVfbG9jYWxf YXNzaWdubWVudF9mbGFnIChjbGFzcywgbWRlY2wpCisgICAgIHRyZWUgY2xhc3M7CisgICAgIHRy ZWUgbWRlY2w7Cit7CisgIHRyZWUgZmllbGQ7CisgIGludCBpbml0aWFsaXplZCA9IDA7CisgIGlu dCBub25faW5pdGlhbGl6ZWQgPSAwOyAKKworICBpZiAoREVDTF9GVU5DVElPTl9TWU5USEVUSUNf Q1RPUiAobWRlY2wpKQorICAgIHJldHVybjsKKworICAvKiBGaXJzdCBmaW5kIG91dCB3aGV0aGVy IGFsbCBmaW5hbCB2YXJpYWJsZXMgb3Igbm8gZmluYWwgdmFyaWFibGUKKyAgICAgYXJlIGluaXRp YWxpemVkIGluIHRoaXMgY3Rvci4gV2UgZG9uJ3QgdGFrZSBpbnRvIGFjY291bnQgZmluYWwKKyAg ICAgdmFyaWFibGUgdGhhdCBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQgdXBvbiBkZWNsYXJhdGlvbi4g ICovCisgIGZvciAoZmllbGQgPSBUWVBFX0ZJRUxEUyAoY2xhc3MpOyBmaWVsZDsgZmllbGQgPSBU UkVFX0NIQUlOIChmaWVsZCkpCisgICAgaWYgKEZJTkFMX1ZBUklBQkxFX1AgKGZpZWxkKSAmJiAh REVDTF9GSUVMRF9GSU5BTF9JVUQgKGZpZWxkKSkKKyAgICAgIHsKKwlpZiAoREVDTF9GSUVMRF9G SU5BTF9MSUlDIChmaWVsZCkpCisJICBpbml0aWFsaXplZCsrOworCWVsc2UKKwkgIG5vbl9pbml0 aWFsaXplZCsrOworICAgICAgfQorCisgIC8qIFRoZXJlIHdlcmUgbm8gbm9uIGluaXRpYWxpemVk IHZhcmlhYmxlIGFuZCBubyBpbml0aWFsaXplZCB2YXJpYWJsZS4KKyAgICAgVGhpcyBjdG9yIGlz IGZpbmUuICovCisgIGlmICghbm9uX2luaXRpYWxpemVkICYmICFpbml0aWFsaXplZCkKKyAgICBE RUNMX0ZVTkNUSU9OX0FMTF9GSU5BTF9JTklUSUFMSVpFRCAobWRlY2wpID0gMTsKKyAgLyogSWYg bm8gdmFyaWFibGVzIGhhdmUgYmVlbiBpbml0aWFsaXplZCwgdGhhdCBmaW5lLiBXZSdsbCBjaGVj aworICAgICBsYXRlciB3aGV0aGVyIHRoaXMgY3RvciBjYWxscyBhIGNvbnN0cnVjdG9yIHdoaWNo IGluaXRpYWxpemVzCisgICAgIHRoZW0uIFdlIG1hcmsgdGhlIGN0b3IgYXMgbm90IGluaXRpYWxp emluZyBhbGwgaXRzIGZpbmFscy4gKi8KKyAgZWxzZSBpZiAoaW5pdGlhbGl6ZWQgPT0gMCkKKyAg ICBERUNMX0ZVTkNUSU9OX0FMTF9GSU5BTF9JTklUSUFMSVpFRCAobWRlY2wpID0gMDsKKyAgLyog SWYgd2UgaGF2ZSBhIG1peGVkIGJhZywgdGhlbiB3ZSBoYXZlIGEgcHJvYmxlbS4gV2UgbmVlZCB0 byByZXBvcnQKKyAgICAgYWxsIHRoZSB2YXJpYWJsZXMgd2UncmUgbm90IGluaXRpYWxpemluZy4g ICovCisgIGVsc2UgaWYgKGluaXRpYWxpemVkICYmIG5vbl9pbml0aWFsaXplZCkKKyAgICB7Cisg ICAgICBERUNMX0ZVTkNUSU9OX0FMTF9GSU5BTF9JTklUSUFMSVpFRCAobWRlY2wpID0gMDsKKyAg ICAgIGZvciAoZmllbGQgPSBUWVBFX0ZJRUxEUyAoY2xhc3MpOyBmaWVsZDsgZmllbGQgPSBUUkVF X0NIQUlOIChmaWVsZCkpCisJaWYgKEZJRUxEX0ZJTkFMIChmaWVsZCkKKwkgICAgJiYgIURFQ0xf RklFTERfRklOQUxfSVVEIChmaWVsZCkgJiYgIURFQ0xfRklFTERfRklOQUxfTElJQyAoZmllbGQp KQorCSAgeworCSAgICBwYXJzZV9lcnJvcl9jb250ZXh0IAorCSAgICAgIChsb29rdXBfY2wgKG1k ZWNsKSwKKwkgICAgICAgIkJsYW5rIGZpbmFsIHZhcmlhYmxlIGAlcycgbWF5IG5vdCBoYXZlIGJl ZW4gaW5pdGlhbGl6ZWQgaW4gdGhpcyBjb25zdHJ1Y3RvciIsCisJICAgICAgIElERU5USUZJRVJf UE9JTlRFUiAoREVDTF9OQU1FIChmaWVsZCkpKTsKKwkgICAgREVDTF9GSUVMRF9GSU5BTF9JRVJS IChmaWVsZCkgPSAxOworCSAgfQorICAgIH0KKyAgLyogT3RoZXJ3aXNlIHdlIGtub3cgdGhpcyBj dG9yIGlzIGluaXRpYWxpemluZyBhbGwgaXRzIGZpbmFsCisgICAgIHZhcmlhYmxlLiBXZSBtYXJr IGl0IHNvLiAqLworICBlbHNlCisgICAgREVDTF9GVU5DVElPTl9BTExfRklOQUxfSU5JVElBTEla RUQgKG1kZWNsKSA9IDE7Cit9CisKKy8qIFRoaXMgZnVuY3Rpb24gcmVjdXJzZXMgaW4gYSBzaW1w bGUgd2hhdCB0aHJvdWdoIFNUTVQgYW5kIHN0b3BzIHdoZW4KKyAgIGl0IGZpbmRzIGEgY29uc3Ry dWN0b3IgY2FsbC4gSXQgdGhlbiB2ZXJpZmllcyB0aGF0IHRoZSBjYWxsZWQKKyAgIGNvbnN0cnVj dG9yIGluaXRpYWxpemVkIGl0cyBmaW5hbCBwcm9wZXJseS4gUmV0dXJuIDEgdXBvbiBzdWNjZXNz LAorICAgMCBvciAtMSBvdGhlcndpc2UuICAqLworCitzdGF0aWMgaW50CitjaGVja19maW5hbF92 YXJpYWJsZV9pbmRpcmVjdF9hc3NpZ25tZW50IChzdG10KQorICAgICB0cmVlIHN0bXQ7Cit7Cisg IGludCByZXM7CisgIHN3aXRjaCAoVFJFRV9DT0RFIChzdG10KSkKKyAgICB7CisgICAgY2FzZSBF WFBSX1dJVEhfRklMRV9MT0NBVElPTjoKKyAgICAgIHJldHVybiBjaGVja19maW5hbF92YXJpYWJs ZV9pbmRpcmVjdF9hc3NpZ25tZW50IChFWFBSX1dGTF9OT0RFIChzdG10KSk7CisgICAgY2FzZSBD T01QT1VORF9FWFBSOgorICAgICAgcmVzID0gY2hlY2tfZmluYWxfdmFyaWFibGVfaW5kaXJlY3Rf YXNzaWdubWVudCAoVFJFRV9PUEVSQU5EIChzdG10LCAwKSk7CisgICAgICBpZiAocmVzKQorCXJl dHVybiByZXM7CisgICAgICByZXR1cm4gY2hlY2tfZmluYWxfdmFyaWFibGVfaW5kaXJlY3RfYXNz aWdubWVudCAoVFJFRV9PUEVSQU5EIChzdG10LCAxKSk7CisgICAgY2FzZSBTQVZFX0VYUFI6Cisg ICAgICByZXR1cm4gY2hlY2tfZmluYWxfdmFyaWFibGVfaW5kaXJlY3RfYXNzaWdubWVudCAoVFJF RV9PUEVSQU5EIChzdG10LCAwKSk7CisgICAgY2FzZSBDQUxMX0VYUFI6CisgICAgICB7CisJdHJl ZSBkZWNsID0gVFJFRV9PUEVSQU5EIChzdG10LCAwKTsKKwl0cmVlIGZib2R5OworCisJaWYgKFRS RUVfQ09ERSAoZGVjbCkgIT0gRlVOQ1RJT05fREVDTCkKKwkgIGRlY2wgPSBUUkVFX09QRVJBTkQg KFRSRUVfT1BFUkFORCAoZGVjbCwgMCksIDApOworCWlmIChUUkVFX0NPREUgKGRlY2wpICE9IEZV TkNUSU9OX0RFQ0wpCisJICBmYXRhbCAoIkNhbid0IGZpbmQgRlVOQ1RJT05fREVDTCBpbiBDQUxM X0VYUFIgLSBjaGVja19maW5hbF92YXJpYWJsZV9pbmRpcmVjdF9hc3NpZ25tZW50Iik7CisJaWYg KERFQ0xfRlVOQ1RJT05fQUxMX0ZJTkFMX0lOSVRJQUxJWkVEIChkZWNsKSkKKwkgIHJldHVybiAx OworCWlmIChERUNMX0ZJTklUX1AgKGRlY2wpIHx8IERFQ0xfQ09OVEVYVCAoZGVjbCkgIT0gY3Vy cmVudF9jbGFzcykKKwkgIHJldHVybiAtMTsKKwlmYm9keSA9IEJMT0NLX0VYUFJfQk9EWSAoREVD TF9GVU5DVElPTl9CT0RZIChkZWNsKSk7CisJaWYgKGZib2R5ID09IGVycm9yX21hcmtfbm9kZSkK KwkgIHJldHVybiAtMTsKKwlmYm9keSA9IEJMT0NLX0VYUFJfQk9EWSAoZmJvZHkpOworCXJldHVy biBjaGVja19maW5hbF92YXJpYWJsZV9pbmRpcmVjdF9hc3NpZ25tZW50IChmYm9keSk7CisgICAg ICB9CisgICAgZGVmYXVsdDoKKyAgICAgIGJyZWFrOworICAgIH0KKyAgcmV0dXJuIDA7Cit9CisK Ky8qIFRoaXMgaXMgdGhlIGxhc3QgY2hhbmNlIHRvIGNhdGNoIGEgZmluYWwgdmFyaWFibGUgaW5p dGlhbGl6YXRpb24KKyAgIHByb2JsZW0uIFRoaXMgcm91dGluZSB3aWxsIHJlcG9ydCBhbiBlcnJv ciBpZiBhIGZpbmFsIHZhcmlhYmxlIHdhcworICAgbmV2ZXIgKGdsb2JhbGx5KSBpbml0aWFsaXpl ZCBhbmQgbmV2ZXIgcmVwb3J0ZWQgYXMgbm90IGhhdmluZyBiZWVuCisgICBpbml0aWFsaXplZCBw cm9wZXJseS4gKi8KKworc3RhdGljIHZvaWQKK2NoZWNrX2ZpbmFsX3ZhcmlhYmxlX2dsb2JhbF9h c3NpZ25tZW50X2ZsYWcgKGNsYXNzKQorICAgICB0cmVlIGNsYXNzOworeworICB0cmVlIGZpZWxk LCBtZGVjbDsKKyAgaW50IG5uY3RvciA9IDA7CisKKyAgLyogV2UgZ28gdGhyb3VnaCBhbGwgbmF0 dXJhbCBjdG9ycyBhbmQgc2VlIHdoZXRoZXIgdGhleSdyZQorICAgICBpbml0aWFsaXppbmcgYWxs IHRoZWlyIGZpbmFsIHZhcmlhYmxlcyBvciBub3QuICovCisgIGN1cnJlbnRfZnVuY3Rpb25fZGVj bCA9IE5VTExfVFJFRTsgLyogRm9yIHRoZSBlcnJvciByZXBvcnQuICovCisgIGZvciAobWRlY2wg PSBUWVBFX01FVEhPRFMgKGNsYXNzKTsgbWRlY2w7IG1kZWNsID0gVFJFRV9DSEFJTiAobWRlY2wp KQorICAgIGlmIChERUNMX0NPTlNUUlVDVE9SX1AgKG1kZWNsKSAmJiAhIERFQ0xfRlVOQ1RJT05f U1lOVEhFVElDX0NUT1IgKG1kZWNsKSkKKyAgICAgIHsKKwlpZiAoIURFQ0xfRlVOQ1RJT05fQUxM X0ZJTkFMX0lOSVRJQUxJWkVEIChtZGVjbCkpCisJICB7CisJICAgIC8qIEl0IGRvZXNuJ3QuIE1h eWJlIGl0IGNhbGxzIGEgY29uc3RydWN0b3IgdGhhdCBpbml0aWFsaXplcworCSAgICAgICB0aGVt LiAgZmluZCBvdXQuICovCisJICAgIHRyZWUgZmJvZHkgPSBCTE9DS19FWFBSX0JPRFkgKERFQ0xf RlVOQ1RJT05fQk9EWSAobWRlY2wpKTsKKwkgICAgaWYgKGZib2R5ID09IGVycm9yX21hcmtfbm9k ZSkKKwkgICAgICBjb250aW51ZTsKKwkgICAgZmJvZHkgPSBCTE9DS19FWFBSX0JPRFkgKGZib2R5 KTsKKwkgICAgaWYgKGNoZWNrX2ZpbmFsX3ZhcmlhYmxlX2luZGlyZWN0X2Fzc2lnbm1lbnQgKGZi b2R5KSA9PSAxKQorCSAgICAgIHsKKwkJREVDTF9GVU5DVElPTl9BTExfRklOQUxfSU5JVElBTEla RUQgKG1kZWNsKSA9IDE7CisJCW5uY3RvcisrOworCSAgICAgIH0KKwkgICAgZWxzZQorCSAgICAg IHBhcnNlX2Vycm9yX2NvbnRleHQKKwkJKGxvb2t1cF9jbCAobWRlY2wpLAorCQkgIkZpbmFsIHZh cmlhYmxlIGluaXRpYWxpemF0aW9uIGVycm9yIGluIHRoaXMgY29uc3RydWN0b3IiKTsKKwkgIH0K KwllbHNlCisJICBubmN0b3IrKzsKKyAgICAgIH0KKworICAvKiBGaW5hbGx5IHdlIGNhdGNoIGZp bmFsIHZhcmlhYmxlcyB0aGF0IG5ldmVyIHdlcmUgaW5pdGlhbGl6ZWQgKi8KKyAgZm9yIChmaWVs ZCA9IFRZUEVfRklFTERTIChjbGFzcyk7IGZpZWxkOyBmaWVsZCA9IFRSRUVfQ0hBSU4gKGZpZWxk KSkKKyAgICBpZiAoRklOQUxfVkFSSUFCTEVfUCAoZmllbGQpCisJLyogSWYgdGhlIGZpZWxkIHdh c24ndCBpbml0aWFsaXplZCB1cG9uIGRlY2xhcmF0aW9uICovCisJJiYgIURFQ0xfRklFTERfRklO QUxfSVVEIChmaWVsZCkKKwkvKiBUaGVyZSB3YXNuJ3QgbmF0dXJhbCBjdG9yIGluIHdoaWNoIHRo ZSBmaWVsZCBjb3VsZCBoYXZlIGJlZW4KKwkgICBpbml0aWFsaXplZCAqLworCSYmICFubmN0b3IK KwkvKiBJZiB3ZSBuZXZlciByZXBvcnRlZCBhIHByb2JsZW0gd2l0aCB0aGlzIGZpZWxkICovCisJ JiYgIURFQ0xfRklFTERfRklOQUxfSUVSUiAoZmllbGQpKQorICAgICAgeworCWN1cnJlbnRfZnVu Y3Rpb25fZGVjbCA9IE5VTEw7CisJcGFyc2VfZXJyb3JfY29udGV4dAorCSAgKERFQ0xfRklFTERf RklOQUxfV0ZMIChmaWVsZCksCisJICAgIkZpbmFsIHZhcmlhYmxlIGAlcycgaGFzbid0IGJlZW4g aW5pdGlhbGl6ZWQgdXBvbiBpdHMgZGVjbGFyYXRpb24iLAorCSAgIElERU5USUZJRVJfUE9JTlRF UiAoREVDTF9OQU1FIChmaWVsZCkpKTsKKyAgICAgIH0KKworfQorCiAvKiBSZXR1cm4gMSBpZiBh biBhc3NpZ25tZW50IHRvIGEgRklOQUwgaXMgYXR0ZW1wdGVkIGluIGEgbm9uIHN1aXRhYmxlCiAg ICBjb250ZXh0LiAgKi8KIApAQCAtMTIwMTIsMjcgKzEyMjg1LDUyIEBAIHN0YXRpYyBpbnQKIGNo ZWNrX2ZpbmFsX2Fzc2lnbm1lbnQgKGx2YWx1ZSwgd2ZsKQogICAgICB0cmVlIGx2YWx1ZSwgd2Zs OwogewotICBpZiAoVFJFRV9DT0RFIChsdmFsdWUpID09IENPTVBPVU5EX0VYUFIgCisgIGlmIChU UkVFX0NPREUgKGx2YWx1ZSkgIT0gQ09NUE9ORU5UX1JFRiAmJiAhSkRFQ0xfUCAobHZhbHVlKSkK KyAgICByZXR1cm4gMDsKKworICBpZiAoVFJFRV9DT0RFIChsdmFsdWUpID09IENPTVBPTkVOVF9S RUYKICAgICAgICYmIEpERUNMX1AgKFRSRUVfT1BFUkFORCAobHZhbHVlLCAxKSkpCiAgICAgbHZh bHVlID0gVFJFRV9PUEVSQU5EIChsdmFsdWUsIDEpOworCisgIGlmICghRklFTERfRklOQUwgKGx2 YWx1ZSkpCisgICAgcmV0dXJuIDA7CiAKLSAgLyogV2hlbiBnZW5lcmF0aW5nIGNsYXNzIGZpbGVz LCByZWZlcmVuY2VzIHRvIHRoZSBgbGVuZ3RoJyBmaWVsZAotICAgICBsb29rIGEgYml0IGRpZmZl cmVudC4gICovCi0gIGlmICgoZmxhZ19lbWl0X2NsYXNzX2ZpbGVzCi0gICAgICAgJiYgVFJFRV9D T0RFIChsdmFsdWUpID09IENPTVBPTkVOVF9SRUYKLSAgICAgICAmJiBUWVBFX0FSUkFZX1AgKFRS RUVfVFlQRSAoVFJFRV9PUEVSQU5EIChsdmFsdWUsIDApKSkKLSAgICAgICAmJiBGSUVMRF9GSU5B TCAoVFJFRV9PUEVSQU5EIChsdmFsdWUsIDEpKSkKLSAgICAgIHx8IChUUkVFX0NPREUgKGx2YWx1 ZSkgPT0gRklFTERfREVDTAotCSAgJiYgRklFTERfRklOQUwgKGx2YWx1ZSkKLQkgICYmICFERUNM X0NMSU5JVF9QIChjdXJyZW50X2Z1bmN0aW9uX2RlY2wpCi0JICAmJiAhREVDTF9GSU5JVF9QIChj dXJyZW50X2Z1bmN0aW9uX2RlY2wpKSkKKyAgLyogTm93IHRoZSBsb2dpYy4gV2UgY2FuIG1vZGlm eSBhIGZpbmFsIFZBUklBQkxFOgorICAgICAxKSBpbiBmaW5pdCQsIChpdHMgZGVjbGFyYXRpb24g d2FzIGZvbGxvd2VkIGJ5IGFuIGluaXRpYWxpemF0aW9uLCkKKyAgICAgMikgY29uc2lzdGVudGx5 IGluIGVhY2ggbmF0dXJhbCBjdG9yLCBpZiBpdCB3YXNuJ3QgaW5pdGlhbGl6ZWQgaW4KKyAgICAg ICAgZmluaXQkIG9yIG9uY2UgaW4gPGNsaW5pdD4uICBJbiBhbnkgb3RoZXIgY2FzZXMsIGFuIGVy cm9yIHNob3VsZCBiZQorCXJlcG9ydGVkLiAqLworICBpZiAoREVDTF9GSU5JVF9QIChjdXJyZW50 X2Z1bmN0aW9uX2RlY2wpKQogICAgIHsKLSAgICAgIHBhcnNlX2Vycm9yX2NvbnRleHQgCi0gICAg ICAgICh3ZmwsICJDYW4ndCBhc3NpZ24gYSB2YWx1ZSB0byB0aGUgZmluYWwgdmFyaWFibGUgYCVz JyIsCi0JIElERU5USUZJRVJfUE9JTlRFUiAoRVhQUl9XRkxfTk9ERSAod2ZsKSkpOwotICAgICAg cmV0dXJuIDE7CisgICAgICBERUNMX0ZJRUxEX0ZJTkFMX0lVRCAobHZhbHVlKSA9IDE7CisgICAg ICByZXR1cm4gMDsKICAgICB9Ci0gIHJldHVybiAwOworCisgIGlmICghREVDTF9GVU5DVElPTl9T WU5USEVUSUNfQ1RPUiAoY3VycmVudF9mdW5jdGlvbl9kZWNsKQorICAgICAgLyogT25seSBpZiBp dCB3YXNuJ3QgZ2l2ZW4gYSB2YWx1ZSB1cG9uIGluaXRpYWxpemF0aW9uICovCisgICAgICAmJiBE RUNMX0xBTkdfU1BFQ0lGSUMgKGx2YWx1ZSkgJiYgIURFQ0xfRklFTERfRklOQUxfSVVEIChsdmFs dWUpCisgICAgICAvKiBJZiBpdCB3YXMgbmV2ZXIgYXNzaWduZWQgYSB2YWx1ZSBpbiB0aGlzIGNv bnN0cnVjdG9yICovCisgICAgICAmJiAhREVDTF9GSUVMRF9GSU5BTF9MSUlDIChsdmFsdWUpKQor ICAgIHsKKyAgICAgIC8qIFR1cm4gdGhlIGxvY2FsbHkgYXNzaWduZWQgZmxhZyBvbiwgaXQgd2ls bCBiZSBjaGVja2VkIGxhdGVyCisJIG9uIHRvIHBvaW50IG91dCBhdCBkaXNjcmVwYW5jaWVzLiAq LworICAgICAgREVDTF9GSUVMRF9GSU5BTF9MSUlDIChsdmFsdWUpID0gMTsKKyAgICAgIGlmIChE RUNMX0NMSU5JVF9QIChjdXJyZW50X2Z1bmN0aW9uX2RlY2wpKQorCURFQ0xfRklFTERfRklOQUxf SVVEIChsdmFsdWUpID0gMTsKKyAgICAgIHJldHVybiAwOworICAgIH0KKworICAvKiBPdGhlciBw cm9ibGVtcyBzaG91bGQgYmUgcmVwb3J0ZWQgcmlnaHQgYXdheS4gKi8KKyAgcGFyc2VfZXJyb3Jf Y29udGV4dCAKKyAgICAod2ZsLCAiQ2FuJ3QgJXNhc3NpZ24gYSB2YWx1ZSB0byB0aGUgZmluYWwg dmFyaWFibGUgYCVzJyIsCisgICAgIChGSUVMRF9TVEFUSUMgKGx2YWx1ZSkgPyAicmUiIDogIiIp LAorICAgICBJREVOVElGSUVSX1BPSU5URVIgKEVYUFJfV0ZMX05PREUgKHdmbCkpKTsKKworICAv KiBOb3RlIHRoYXQgc3RhdGljIGZpZWxkIGNhbiBiZSBpbml0aWFsaXplZCBvbmNlIGFuZCBvbmx5 IG9uY2UuICovCisgIGlmIChGSUVMRF9TVEFUSUMgKGx2YWx1ZSkpCisgICAgREVDTF9GSUVMRF9G SU5BTF9JRVJSIChsdmFsdWUpID0gMTsKKworICByZXR1cm4gMTsKIH0KIAogLyogSW5saW5lIHJl ZmVyZW5jZXMgdG8gamF2YS5sYW5nLlBSSU1UWVBFLlRZUEUgd2hlbiBhY2Nlc3NlZCBpbgpAQCAt MTIyNDAsNyArMTI1MzgsNyBAQCBwYXRjaF9hc3NpZ25tZW50IChub2RlLCB3Zmxfb3AxLCB3Zmxf b3AyCiAgIC8qIEZpbmFsIGxvY2FscyBjYW4gYmUgdXNlZCBhcyBjYXNlIHZhbHVlcyBpbiBzd2l0 Y2gKICAgICAgc3RhdGVtZW50LiBQcmVwYXJlIHRoZW0gZm9yIHRoaXMgZXZlbnR1YWxpdHkuICov CiAgIGlmIChUUkVFX0NPREUgKGx2YWx1ZSkgPT0gVkFSX0RFQ0wgCi0gICAgICAmJiBMT0NBTF9G SU5BTCAobHZhbHVlKQorICAgICAgJiYgTE9DQUxfRklOQUxfUCAobHZhbHVlKQogICAgICAgJiYg VFJFRV9DT05TVEFOVCAobmV3X3JocykKICAgICAgICYmIElERU5USUZJRVJfTE9DQUxfVkFMVUUg KERFQ0xfTkFNRSAobHZhbHVlKSkKICAgICAgICYmIEpJTlRFR1JBTF9UWVBFX1AgKFRSRUVfVFlQ RSAobHZhbHVlKSkKQEAgLTE1MjEyLDYgKzE1NTEwLDggQEAgZm9sZF9jb25zdGFudF9mb3JfaW5p dCAobm9kZSwgY29udGV4dCkKICAgICAgIERFQ0xfSU5JVElBTCAobm9kZSkgPSBOVUxMX1RSRUU7 CiAgICAgICB2YWwgPSBmb2xkX2NvbnN0YW50X2Zvcl9pbml0ICh2YWwsIG5vZGUpOwogICAgICAg REVDTF9JTklUSUFMIChub2RlKSA9IHZhbDsKKyAgICAgIGlmICghdmFsICYmIENMQVNTX0ZJTkFM X1ZBUklBQkxFX1AgKG5vZGUpKQorCURFQ0xfRklFTERfRklOQUxfSVVEIChub2RlKSA9IDA7CiAg ICAgICByZXR1cm4gdmFsOwogCiAgICAgY2FzZSBFWFBSX1dJVEhfRklMRV9MT0NBVElPTjoK