From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32406 invoked by alias); 27 Jul 2007 16:55:13 -0000 Received: (qmail 32396 invoked by uid 22791); 27 Jul 2007 16:55:12 -0000 X-Spam-Check-By: sourceware.org Received: from wa-out-1112.google.com (HELO wa-out-1112.google.com) (209.85.146.177) by sourceware.org (qpsmtpd/0.31) with ESMTP; Fri, 27 Jul 2007 16:55:07 +0000 Received: by wa-out-1112.google.com with SMTP id m16so990543waf for ; Fri, 27 Jul 2007 09:55:05 -0700 (PDT) Received: by 10.114.136.1 with SMTP id j1mr3105583wad.1185555304883; Fri, 27 Jul 2007 09:55:04 -0700 (PDT) Received: by 10.115.15.17 with HTTP; Fri, 27 Jul 2007 09:55:04 -0700 (PDT) Message-ID: <24b520d20707270955u3e8aa8faw2eb52544ba7b3373@mail.gmail.com> Date: Fri, 27 Jul 2007 17:11:00 -0000 From: "Doug Gregor" To: "Nathan Sidwell" Subject: Re: PING: C++0x decltype patch Cc: "GCC Patches" In-Reply-To: <46A8EC73.80105@codesourcery.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_5572_16541918.1185555304785" References: <24b520d20707251228m32ccd1bcs6af46b72c0598238@mail.gmail.com> <46A8EC73.80105@codesourcery.com> X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2007-07/txt/msg01992.txt.bz2 ------=_Part_5572_16541918.1185555304785 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Content-length: 2648 Thanks, Nathan! On 7/26/07, Nathan Sidwell wrote: > Index: cp/semantics.c > + case BIT_FIELD_REF: > + sorry ("bit-field accesses in a decltype expression"); > + return error_mark_node; > > + default: > + if (TYPE_P (expr) || DECL_P (expr)) > + error ("argument to decltype must be an expression"); > + else > + sorry ("unhandled decltype expression kind: %s", > + tree_code_name[(int) TREE_CODE (expr)]); > > why sorry and not gcc_assert or gcc_unreachable? The first sorry(), for BIT_FIELD_REF, should be a gcc_unreachable; it just can't happen here. The second "sorry" I'd like to keep... if we get here, it means that I somehow missed a particular member-access expression node. So, apologize to the user and when they report the bug, we'll see what the expression code is to fix the bug. Perhaps internal_error would be better? > + if (TREE_CODE (expr) == CALL_EXPR > + && (fndecl = get_callee_fndecl (expr)) > + && (fndecl != error_mark_node)) > > + else if ((type = is_bitfield_expr_with_lowered_type (expr))) > > ow :) can we avoid assignments in conditionals here? Heh, sure. > Index: cp/parser.c > +static tree > +cp_parser_decltype (cp_parser *parser) > > here you parse tentatively, but don't appear to be committing to the tentative > parse when it succeeds. Ah, thanks. The fix is: if (id_expression_or_member_access_p) /* We have parsed the complete id-expression or member access. */ cp_parser_parse_definitely (parser); else { /* Abort our attempt to parse an id-expression or member access expression. */ cp_parser_abort_tentative_parse (parser); /* Parse a full expression. */ expr = cp_parser_expression (parser, /*cast_p=*/false); } Essentially, by the time we reach this spot, we've either parsed an id-expression or class member access expression, in which case there is nothing left to tentatively parse (so we commit); or, we need to abort the previous attempts and parse a full expression. > Also, I can't see where decltype is gated on using c++0x extensions In lex.c, if the keyword is only available when in C++0x mode, then the feature is only available in C++0x mode: { "decltype", RID_DECLTYPE, D_CXX0X }, That said, decltype can save us (and the compiler) a LOT of work in libstdc++, so I would suggest also: { "__decltype", RID_DECLTYPE, 0 }, Updated patch attached, with those changes/fixes mention above. Regtested powerpc-apple-darwin8.10.0, no regressions. Okay? - Doug ------=_Part_5572_16541918.1185555304785 Content-Type: application/octet-stream; name=decltype.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_2cr466 Content-Disposition: attachment; filename="decltype.patch" Content-length: 48162 SW5kZXg6IHRlc3RzdWl0ZS9nKysuZGcvY3BwMHgvZGVjbHR5cGUzLkMKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0gdGVzdHN1aXRlL2crKy5kZy9jcHAw eC9kZWNsdHlwZTMuQwkocmV2aXNpb24gMCkKKysrIHRlc3RzdWl0ZS9nKysu ZGcvY3BwMHgvZGVjbHR5cGUzLkMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs NzIgQEAKKy8vIHsgZGctZG8gImNvbXBpbGUiIH0KKy8vIHsgZGctb3B0aW9u cyAiLXN0ZD1nbnUrKzB4IiB9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5 cGVuYW1lIFU+IAorc3RydWN0IGlzX3NhbWUgCit7CisgIHN0YXRpYyBjb25z dCBib29sIHZhbHVlID0gZmFsc2U7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFt ZSBUPgorc3RydWN0IGlzX3NhbWU8VCwgVD4KK3sKKyAgc3RhdGljIGNvbnN0 IGJvb2wgdmFsdWUgPSB0cnVlOworfTsKKworI2RlZmluZSBDSEVDS19ERUNM VFlQRShERUNMVFlQRSxSRVNVTFQpIFwKKyAgc3RhdGljX2Fzc2VydChpc19z YW1lPCBERUNMVFlQRSAsIFJFU1VMVCA+Ojp2YWx1ZSwgI0RFQ0xUWVBFICIg c2hvdWxkIGJlICIgI1JFU1VMVCkKKworY2xhc3MgQSB7IAorcHVibGljOgor ICBpbnQgYTsgCisgIGludCYgYjsgCisgIHN0YXRpYyBpbnQgYzsgCisKKyAg QShpbnQmIGIpIDogYihiKSB7IH0KKworICB2b2lkIGZvbygpIHsgCisgICAg Q0hFQ0tfREVDTFRZUEUoZGVjbHR5cGUoYSksIGludCk7CisgICAgQ0hFQ0tf REVDTFRZUEUoZGVjbHR5cGUodGhpcy0+YSksIGludCk7CisgICAgQ0hFQ0tf REVDTFRZUEUoZGVjbHR5cGUoKCp0aGlzKS5hKSwgaW50KTsKKyAgICBDSEVD S19ERUNMVFlQRShkZWNsdHlwZShiKSwgaW50Jik7CisgICAgQ0hFQ0tfREVD TFRZUEUoZGVjbHR5cGUoYyksIGludCk7CisgIH0gCisgIHZvaWQgYmFyKCkg Y29uc3QgeworICAgIENIRUNLX0RFQ0xUWVBFKGRlY2x0eXBlKGEpLCBpbnQp OworICAgIENIRUNLX0RFQ0xUWVBFKGRlY2x0eXBlKGIpLCBpbnQmKTsKKyAg ICBDSEVDS19ERUNMVFlQRShkZWNsdHlwZShjKSwgaW50KTsKKyAgfSAKK307 IAorCitpbnQgYjsKK0EgYWEoYik7IAorY29uc3QgQSYgY2FhID0gYWE7IAor Q0hFQ0tfREVDTFRZUEUoZGVjbHR5cGUoYWEuYSksIGludCk7CitDSEVDS19E RUNMVFlQRShkZWNsdHlwZShhYS5iKSwgaW50Jik7CitDSEVDS19ERUNMVFlQ RShkZWNsdHlwZShjYWEuYSksIGludCk7CisKK2NsYXNzIEIgeyAKK3B1Ymxp YzoKKyAgaW50IGE7ICAvLyB7IGRnLWVycm9yICJpbnZhbGlkIHVzZSIgfQor ICBlbnVtIEJfZW51bSB7IGIgfTsgCisgIGRlY2x0eXBlKGEpIGM7IC8vIHsg ZGctZXJyb3IgImZyb20gdGhpcyBsb2NhdGlvbiIgfQorICBkZWNsdHlwZShh KSBmb28oKSB7IH0gLy8geyBkZy1lcnJvciAiZnJvbSB0aGlzIGxvY2F0aW9u IiB9CisgIGRlY2x0eXBlKGIpIGVudW1zX2FyZV9pbl9zY29wZSgpIHsgcmV0 dXJuIGI7IH0gLy8gb2sgCit9OyAKKworQ0hFQ0tfREVDTFRZUEUoZGVjbHR5 cGUoYWEuKiZBOjphKSwgaW50Jik7CitkZWNsdHlwZShhYS4qJkE6OmIpIHp6 OyAvLyB7IGRnLWVycm9yICJjYW5ub3QgY3JlYXRlIHBvaW50ZXIgdG8gcmVm ZXJlbmNlIG1lbWJlciIgfQorLy8geyBkZy1lcnJvciAiaW52YWxpZCB0eXBl IiAiIiB7IHRhcmdldCAqLSotKiB9IDU4IH0KK0NIRUNLX0RFQ0xUWVBFKGRl Y2x0eXBlKGNhYS4qJkE6OmEpLCBjb25zdCBpbnQmKTsKKworY2xhc3MgWCB7 IAorICB2b2lkIGZvbygpIHsgCisgICAgQ0hFQ0tfREVDTFRZUEUoZGVjbHR5 cGUodGhpcyksIFgqKTsKKyAgICBDSEVDS19ERUNMVFlQRShkZWNsdHlwZSgq dGhpcyksIFgmKTsKKyAgfSAKKyAgdm9pZCBiYXIoKSBjb25zdCB7IAorICAg IENIRUNLX0RFQ0xUWVBFKGRlY2x0eXBlKHRoaXMpLCBjb25zdCBYKik7Cisg ICAgQ0hFQ0tfREVDTFRZUEUoZGVjbHR5cGUoKnRoaXMpLCBjb25zdCBYJik7 CisgIH0gCit9OworCkluZGV4OiB0ZXN0c3VpdGUvZysrLmRnL2NwcDB4L2Rl Y2x0eXBlNC5DCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRlc3RzdWl0 ZS9nKysuZGcvY3BwMHgvZGVjbHR5cGU0LkMJKHJldmlzaW9uIDApCisrKyB0 ZXN0c3VpdGUvZysrLmRnL2NwcDB4L2RlY2x0eXBlNC5DCShyZXZpc2lvbiAw KQpAQCAtMCwwICsxLDgyIEBACisvLyB7IGRnLWRvICJjb21waWxlIiB9Cisv LyB7IGRnLW9wdGlvbnMgIi1zdGQ9Z251KysweCIgfQorCit0ZW1wbGF0ZTx0 eXBlbmFtZSBULCB0eXBlbmFtZSBVPiAKK3N0cnVjdCBpc19zYW1lIAorewor ICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IGZhbHNlOworfTsKKwordGVt cGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBpc19zYW1lPFQsIFQ+Cit7Cisg IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsKK307CisKKyNkZWZp bmUgQ0hFQ0tfREVDTFRZUEUoREVDTFRZUEUsUkVTVUxUKSBcCisgIHN0YXRp Y19hc3NlcnQoaXNfc2FtZTwgREVDTFRZUEUgLCBSRVNVTFQgPjo6dmFsdWUs ICNERUNMVFlQRSAiIHNob3VsZCBiZSAiICNSRVNVTFQpCisKK3N0cnVjdCBB IHsKKyAgaW50IHg7IAorICBpbnQmIHk7IAorICBpbnQgZm9vKGNoYXIpOyAK KyAgaW50JiBiYXIoKSBjb25zdDsgCit9OyAKKworQ0hFQ0tfREVDTFRZUEUo ZGVjbHR5cGUoJkE6OngpLCBpbnQgQTo6Kik7CitkZWNsdHlwZSgmQTo6eSkg QXk7IC8vIHsgZGctZXJyb3IgImNhbm5vdCBjcmVhdGUgcG9pbnRlciB0byBy ZWZlcmVuY2UgbWVtYmVyfGludmFsaWQgdHlwZSIgfQorQ0hFQ0tfREVDTFRZ UEUoZGVjbHR5cGUoJkE6OmZvbyksIGludCAoQTo6KikgKGNoYXIpKTsKK0NI RUNLX0RFQ0xUWVBFKGRlY2x0eXBlKCZBOjpiYXIpLCBpbnQmIChBOjoqKSAo KSBjb25zdCk7CisKK0NIRUNLX0RFQ0xUWVBFKGRlY2x0eXBlKCJkZWNsdHlw ZSIpLCBjb25zdCBjaGFyKCYpWzldKTsKK0NIRUNLX0RFQ0xUWVBFKGRlY2x0 eXBlKDEpLCBpbnQpOworCitpbnQgYW5faW50ID0gNTsKK2ludCYgaSA9IGFu X2ludDsgCitjb25zdCBpbnQgaiA9IGFuX2ludDsgCisKK0NIRUNLX0RFQ0xU WVBFKGRlY2x0eXBlKGkpJiwgaW50Jik7CitDSEVDS19ERUNMVFlQRShjb25z dCBkZWNsdHlwZShqKSwgY29uc3QgaW50KTsKKworaW50IGZvbygpOyAKK0NI RUNLX0RFQ0xUWVBFKGRlY2x0eXBlKGZvbygpKSwgaW50KTsKK2Zsb2F0JiBi YXIoaW50KTsgCitDSEVDS19ERUNMVFlQRShkZWNsdHlwZSAoYmFyKDEpKSwg ZmxvYXQmKTsKK2NvbnN0IEEgYmFyKCk7IAorQ0hFQ0tfREVDTFRZUEUoZGVj bHR5cGUgKGJhcigpKSwgY29uc3QgQSk7Citjb25zdCBBJiBiYXIyKCk7IAor Q0hFQ0tfREVDTFRZUEUoZGVjbHR5cGUgKGJhcjIoKSksIGNvbnN0IEEmKTsK Kwordm9pZCB3aWJibGUoKSB7CisgIENIRUNLX0RFQ0xUWVBFKGRlY2x0eXBl KDErMiksIGludCk7CisgIGludCogcDsgCisgIENIRUNLX0RFQ0xUWVBFKGRl Y2x0eXBlKCpwKSwgaW50Jik7CisgIGludCBhWzEwXTsgCisgIENIRUNLX0RF Q0xUWVBFKGRlY2x0eXBlKGFbM10pLCBpbnQmKTsKKyAgaW50IGk7IGludCYg aiA9IGk7IAorICBDSEVDS19ERUNMVFlQRShkZWNsdHlwZSAoaSA9IDUpLCBp bnQmKTsKKyAgQ0hFQ0tfREVDTFRZUEUoZGVjbHR5cGUgKGogPSA1KSwgaW50 Jik7CisKKyAgQ0hFQ0tfREVDTFRZUEUoZGVjbHR5cGUgKCsraSksIGludCYp OyAKKyAgQ0hFQ0tfREVDTFRZUEUoZGVjbHR5cGUgKGkrKyksIGludCk7Cit9 CisKK3N0cnVjdCBCIHsKKyAgaW50IGJpdCA6IDI7CisgIGNvbnN0IGludCBj Yml0IDogMzsKKworICB2b2lkIGZvbygpCisgIHsKKyAgICBDSEVDS19ERUNM VFlQRShkZWNsdHlwZShiaXQpLCBpbnQpOworICAgIENIRUNLX0RFQ0xUWVBF KGRlY2x0eXBlKChiaXQpKSwgaW50Jik7CisgICAgQ0hFQ0tfREVDTFRZUEUo ZGVjbHR5cGUoY2JpdCksIGNvbnN0IGludCk7CisgICAgQ0hFQ0tfREVDTFRZ UEUoZGVjbHR5cGUoKGNiaXQpKSwgY29uc3QgaW50Jik7IC8vIHsgZGctYm9n dXMgInN0YXRpYyBhc3NlcnRpb24gZmFpbGVkIiAiR0NDIGdldHMgdGhlIGFj dHVhbCB0eXBlIG9mIHRoaXMgZXhwcmVzc2lvbiB3cm9uZyIgeyB4ZmFpbCAq LSotKiB9IDczIH0KKyAgfQorfTsKKworQiBiOworY29uc3QgQiYgYmMgPSBi OworQ0hFQ0tfREVDTFRZUEUoZGVjbHR5cGUoYi5iaXQpLCBpbnQpOworQ0hF Q0tfREVDTFRZUEUoZGVjbHR5cGUoYmMuYml0KSwgaW50KTsKK0NIRUNLX0RF Q0xUWVBFKGRlY2x0eXBlKChiLmJpdCkpLCBpbnQmKTsKK0NIRUNLX0RFQ0xU WVBFKGRlY2x0eXBlKChiYy5iaXQpKSwgY29uc3QgaW50Jik7CkluZGV4OiB0 ZXN0c3VpdGUvZysrLmRnL2NwcDB4L2RlY2x0eXBlMS5DCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tIHRlc3RzdWl0ZS9nKysuZGcvY3BwMHgvZGVjbHR5 cGUxLkMJKHJldmlzaW9uIDApCisrKyB0ZXN0c3VpdGUvZysrLmRnL2NwcDB4 L2RlY2x0eXBlMS5DCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI4IEBACisv LyB7IGRnLWRvICJjb21waWxlIiB9CisvLyB7IGRnLW9wdGlvbnMgIi1zdGQ9 Z251KysweCIgfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV PiAKK3N0cnVjdCBpc19zYW1lIAoreworICBzdGF0aWMgY29uc3QgYm9vbCB2 YWx1ZSA9IGZhbHNlOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0 cnVjdCBpc19zYW1lPFQsIFQ+Cit7CisgIHN0YXRpYyBjb25zdCBib29sIHZh bHVlID0gdHJ1ZTsKK307CisKK2NvbnN0IGludCYgZm9vKCk7IAoraW50IGk7 IAorc3RydWN0IEEgeyBkb3VibGUgeDsgfTsKK2NvbnN0IEEqIGEgPSBuZXcg QSgpOyAKKworc3RhdGljX2Fzc2VydChpc19zYW1lPGRlY2x0eXBlKGZvbygp KSwgY29uc3QgaW50Jj46OnZhbHVlLAorICAgICAgICAgICAgICAidHlwZSBz aG91bGQgYmUgY29uc3QgaW50JiIpOworc3RhdGljX2Fzc2VydChpc19zYW1l PGRlY2x0eXBlKGkpLCBpbnQ+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgInR5 cGUgc2hvdWxkIGJlIGludCIpOworc3RhdGljX2Fzc2VydChpc19zYW1lPGRl Y2x0eXBlKGEtPngpLCBkb3VibGU+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAg InR5cGUgc2hvdWxkIGJlIGRvdWJsZSIpOworc3RhdGljX2Fzc2VydChpc19z YW1lPGRlY2x0eXBlKChhLT54KSksIGNvbnN0IGRvdWJsZSY+Ojp2YWx1ZSwK KyAgICAgICAgICAgICAgInR5cGUgc2hvdWxkIGJlIGNvbnN0IGRvdWJsZSYi KTsKSW5kZXg6IHRlc3RzdWl0ZS9nKysuZGcvY3BwMHgvZGVjbHR5cGU1LkMK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGVzdHN1aXRlL2crKy5kZy9j cHAweC9kZWNsdHlwZTUuQwkocmV2aXNpb24gMCkKKysrIHRlc3RzdWl0ZS9n KysuZGcvY3BwMHgvZGVjbHR5cGU1LkMJKHJldmlzaW9uIDApCkBAIC0wLDAg KzEsMzggQEAKKy8vIHsgZGctZG8gImNvbXBpbGUiIH0KKy8vIHsgZGctb3B0 aW9ucyAiLXN0ZD1nbnUrKzB4IiB9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQs IHR5cGVuYW1lIFU+IAorc3RydWN0IGlzX3NhbWUgCit7CisgIHN0YXRpYyBj b25zdCBib29sIHZhbHVlID0gZmFsc2U7Cit9OworCit0ZW1wbGF0ZTx0eXBl bmFtZSBUPgorc3RydWN0IGlzX3NhbWU8VCwgVD4KK3sKKyAgc3RhdGljIGNv bnN0IGJvb2wgdmFsdWUgPSB0cnVlOworfTsKKworI2RlZmluZSBDSEVDS19E RUNMVFlQRShERUNMVFlQRSxSRVNVTFQpIFwKKyAgc3RhdGljX2Fzc2VydChp c19zYW1lPCBERUNMVFlQRSAsIFJFU1VMVCA+Ojp2YWx1ZSwgI1JFU1VMVCkK KwordGVtcGxhdGU8dHlwZW5hbWUgRj4gRiBjcmVhdGVfYSgpOworCit0ZW1w bGF0ZTx0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMT4KK2RlY2x0eXBlKGNyZWF0 ZV9hPEYmPigpKGNyZWF0ZV9hPGNvbnN0IFQxJj4oKSkpIGZvcndhcmQoRiBm LCBjb25zdCBUMSYgYTEpCit7CisgIHJldHVybiBmKGExKTsKK30KKworc3Ry dWN0IGlkZW50aXR5IHsKKyAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgY29u c3QgVCYgb3BlcmF0b3IoKShjb25zdCBUJiB4KSB7IHJldHVybiB4OyB9Cit9 OworCisKK2lkZW50aXR5IGlkOworaW50IGk7CitmbG9hdCBmOworCitDSEVD S19ERUNMVFlQRShkZWNsdHlwZShmb3J3YXJkKGlkLCBpKSksIGNvbnN0IGlu dCYpOworQ0hFQ0tfREVDTFRZUEUoZGVjbHR5cGUoZm9yd2FyZChpZCwgZikp LCBjb25zdCBmbG9hdCYpOwpJbmRleDogdGVzdHN1aXRlL2crKy5kZy9jcHAw eC9kZWNsdHlwZTIuQwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0ZXN0 c3VpdGUvZysrLmRnL2NwcDB4L2RlY2x0eXBlMi5DCShyZXZpc2lvbiAwKQor KysgdGVzdHN1aXRlL2crKy5kZy9jcHAweC9kZWNsdHlwZTIuQwkocmV2aXNp b24gMCkKQEAgLTAsMCArMSw1OSBAQAorLy8geyBkZy1kbyAiY29tcGlsZSIg fQorLy8geyBkZy1vcHRpb25zICItc3RkPWdudSsrMHgiIH0KKwordGVtcGxh dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gCitzdHJ1Y3QgaXNfc2FtZSAK K3sKKyAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBmYWxzZTsKK307CisK K3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgaXNfc2FtZTxULCBUPgor eworICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7Cit9OworCisj ZGVmaW5lIENIRUNLX0RFQ0xUWVBFKERFQ0xUWVBFLFJFU1VMVCkgXAorICBz dGF0aWNfYXNzZXJ0KGlzX3NhbWU8IERFQ0xUWVBFICwgUkVTVUxUID46OnZh bHVlLCAjUkVTVUxUKQorCitzdHJ1Y3QgQSB7fTsKKworaW50IGE7IAoraW50 JiBiID0gYTsgCitjb25zdCBpbnQmIGMgPSBhOyAKK2NvbnN0IGludCBkID0g NTsgCitjb25zdCBBIGUgPSBBKCk7IAorQ0hFQ0tfREVDTFRZUEUoZGVjbHR5 cGUoYSksIGludCk7CitDSEVDS19ERUNMVFlQRShkZWNsdHlwZShiKSwgaW50 Jik7IAorQ0hFQ0tfREVDTFRZUEUoZGVjbHR5cGUoYyksIGNvbnN0IGludCYp OyAKK0NIRUNLX0RFQ0xUWVBFKGRlY2x0eXBlKGQpLCBjb25zdCBpbnQpOyAK K0NIRUNLX0RFQ0xUWVBFKGRlY2x0eXBlKGUpLCBjb25zdCBBKTsgCisKK0NI RUNLX0RFQ0xUWVBFKGRlY2x0eXBlKGEpLCBpbnQpOworQ0hFQ0tfREVDTFRZ UEUoZGVjbHR5cGUoKGEpKSwgaW50Jik7CisKK3ZvaWQgZm9vX2NoZWNrKGlu dCBhLCBpbnQmIGIsIGZsb2F0JiBjLCBpbnQqIGQpIAoreyAKKyAgQ0hFQ0tf REVDTFRZUEUoZGVjbHR5cGUoYSksIGludCk7CisgIENIRUNLX0RFQ0xUWVBF KGRlY2x0eXBlKGIpLCBpbnQmKTsgCisgIENIRUNLX0RFQ0xUWVBFKGRlY2x0 eXBlKGMpLCBmbG9hdCYpOworICBDSEVDS19ERUNMVFlQRShkZWNsdHlwZShk KSwgaW50Kik7Cit9IAorCitpbnQgZm9vKGNoYXIpOyAKK2ludCBiYXIoY2hh cik7IAoraW50IGJhcihpbnQpOyAKK0NIRUNLX0RFQ0xUWVBFKGRlY2x0eXBl KGZvbyksIGludChjaGFyKSk7CisKK2RlY2x0eXBlKGJhcikgejsgLy8geyBk Zy1lcnJvciAib3ZlcmxvYWQiIH0KKy8vIHsgZGctZXJyb3IgImludmFsaWQg dHlwZSIgIiIgeyB0YXJnZXQgKi0qLSogfSA0OCB9CisKK0NIRUNLX0RFQ0xU WVBFKGRlY2x0eXBlKCZmb28pLCBpbnQoKikoY2hhcikpOworQ0hFQ0tfREVD TFRZUEUoZGVjbHR5cGUoKiZmb28pLCBpbnQoJikoY2hhcikpOworCit2b2lk IGFycmF5X3R5cGVzKCkKK3sKKyAgaW50IGFbMTBdOyAKKyAgQ0hFQ0tfREVD TFRZUEUoZGVjbHR5cGUoYSksIGludFsxMF0pOworfQorCkluZGV4OiB0ZXN0 c3VpdGUvZysrLmRnL2NwcDB4L2RlY2x0eXBlNi5DCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIHRlc3RzdWl0ZS9nKysuZGcvY3BwMHgvZGVjbHR5cGU2 LkMJKHJldmlzaW9uIDApCisrKyB0ZXN0c3VpdGUvZysrLmRnL2NwcDB4L2Rl Y2x0eXBlNi5DCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACisvLyB7 IGRnLWRvICJjb21waWxlIiB9CisvLyB7IGRnLW9wdGlvbnMgIi1zdGQ9Z251 KysweCIgfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiAK K3N0cnVjdCBpc19zYW1lIAoreworICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1 ZSA9IGZhbHNlOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVj dCBpc19zYW1lPFQsIFQ+Cit7CisgIHN0YXRpYyBjb25zdCBib29sIHZhbHVl ID0gdHJ1ZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0IFQm IGZvbygpOyAKKworCitpbnQgaTsgCisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+ CitzdHJ1Y3QgQSAKK3sgCisgIGRvdWJsZSB4OyAKK307CisKK2NvbnN0IEE8 ZG91YmxlPiogYSA9IG5ldyBBPGRvdWJsZT4oKTsgCisKK3N0YXRpY19hc3Nl cnQoaXNfc2FtZTxkZWNsdHlwZShmb288aW50PigpKSwgY29uc3QgaW50Jj46 OnZhbHVlLAorICAgICAgICAgICAgICAidHlwZSBzaG91bGQgYmUgY29uc3Qg aW50JiIpOworc3RhdGljX2Fzc2VydChpc19zYW1lPGRlY2x0eXBlKGkpLCBp bnQ+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgInR5cGUgc2hvdWxkIGJlIGlu dCIpOworc3RhdGljX2Fzc2VydChpc19zYW1lPGRlY2x0eXBlKGEtPngpLCBk b3VibGU+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgInR5cGUgc2hvdWxkIGJl IGRvdWJsZSIpOworc3RhdGljX2Fzc2VydChpc19zYW1lPGRlY2x0eXBlKChh LT54KSksIGNvbnN0IGRvdWJsZSY+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAg InR5cGUgc2hvdWxkIGJlIGNvbnN0IGRvdWJsZSYiKTsKSW5kZXg6IGNwL3R5 cGVjay5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGNwL3R5cGVjay5j CShyZXZpc2lvbiAxMjY5NjEpCisrKyBjcC90eXBlY2suYwkod29ya2luZyBj b3B5KQpAQCAtMTA4MCw2ICsxMDgwLDE0IEBAIHN0cnVjdHVyYWxfY29tcHR5 cGVzICh0cmVlIHQxLCB0cmVlIHQyLCAKICAgICAgIHJldHVybiBzYW1lX3R5 cGVfcCAoUEFDS19FWFBBTlNJT05fUEFUVEVSTiAodDEpLCAKICAgICAgICAg ICAgICAgICAgICAgICAgICAgUEFDS19FWFBBTlNJT05fUEFUVEVSTiAodDIp KTsKIAorICAgIGNhc2UgREVDTFRZUEVfVFlQRToKKyAgICAgIGlmIChERUNM VFlQRV9UWVBFX0lEX0VYUFJfT1JfTUVNQkVSX0FDQ0VTU19QICh0MSkKKyAg ICAgICAgICAhPSBERUNMVFlQRV9UWVBFX0lEX0VYUFJfT1JfTUVNQkVSX0FD Q0VTU19QICh0MikKKyAgICAgICAgICB8fCAhY3BfdHJlZV9lcXVhbCAoREVD TFRZUEVfVFlQRV9FWFBSICh0MSksIAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBERUNMVFlQRV9UWVBFX0VYUFIgKHQyKSkpCisgICAgICAgIHJl dHVybiBmYWxzZTsKKyAgICAgIGJyZWFrOworCiAgICAgZGVmYXVsdDoKICAg ICAgIHJldHVybiBmYWxzZTsKICAgICB9CkluZGV4OiBjcC9jcC10cmVlLmRl Zgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjcC9jcC10cmVlLmRlZgko cmV2aXNpb24gMTI2OTYxKQorKysgY3AvY3AtdHJlZS5kZWYJKHdvcmtpbmcg Y29weSkKQEAgLTQyNyw2ICs0MjcsMTMgQEAgREVGVFJFRUNPREUgKEFSR1VN RU5UX1BBQ0tfU0VMRUNULCAiYXJndQogLyogUmVwcmVzZW50cyBhIHRyYWl0 IGV4cHJlc3Npb24gZHVyaW5nIHRlbXBsYXRlIGV4cGFuc2lvbi4gICovCiBE RUZUUkVFQ09ERSAoVFJBSVRfRVhQUiwgInRyYWl0X2V4cHIiLCB0Y2NfZXhj ZXB0aW9uYWwsIDApCiAKKy8qIFRoZSBkZWNsYXJlZCB0eXBlIG9mIGFuIGV4 cHJlc3Npb24uICBUaGlzIGlzIGEgQysrMHggZXh0ZW5zaW9uLgorICAgREVD TFRZUEVfVFlQRV9FWFBSIGlzIHRoZSBleHByZXNzaW9uIHdob3NlIHR5cGUg d2UgYXJlIGNvbXB1dGluZy4KKyAgIERFQ0xUWVBFX1RZUEVfSURfRVhQUl9P Ul9NRU1CRVJfQUNDRVNTX1Agc3RhdGVzIHdoZXRoZXIgdGhlCisgICBleHBy ZXNzaW9uIHdhcyBwYXJzZWQgYXMgYW4gaWQtZXhwcmVzc2lvbiBvciBhIG1l bWJlciBhY2Nlc3MKKyAgIGV4cHJlc3Npb24uIFdoZW4gZmFsc2UsIGl0IHdh cyBwYXJzZWQgYXMgYSBmdWxsIGV4cHJlc3Npb24uICAqLworREVGVFJFRUNP REUgKERFQ0xUWVBFX1RZUEUsICJkZWNsdHlwZV90eXBlIiwgdGNjX3R5cGUs IDApCisKIC8qCiBMb2NhbCB2YXJpYWJsZXM6CiBtb2RlOmMKSW5kZXg6IGNw L2Vycm9yLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gY3AvZXJyb3Iu YwkocmV2aXNpb24gMTI2OTYxKQorKysgY3AvZXJyb3IuYwkod29ya2luZyBj b3B5KQpAQCAtNDA4LDYgKzQwOCwxNCBAQCBkdW1wX3R5cGUgKHRyZWUgdCwg aW50IGZsYWdzKQogICAgICAgfQogICAgICAgYnJlYWs7CiAKKyAgICBjYXNl IERFQ0xUWVBFX1RZUEU6CisgICAgICBwcF9jeHhfaWRlbnRpZmllciAoY3h4 X3BwLCAiZGVjbHR5cGUiKTsKKyAgICAgIHBwX2N4eF93aGl0ZXNwYWNlIChj eHhfcHApOworICAgICAgcHBfY3h4X2xlZnRfcGFyZW4gKGN4eF9wcCk7Cisg ICAgICBkdW1wX2V4cHIgKERFQ0xUWVBFX1RZUEVfRVhQUiAodCksIGZsYWdz ICYgflRGRl9FWFBSX0lOX1BBUkVOUyk7CisgICAgICBwcF9jeHhfcmlnaHRf cGFyZW4gKGN4eF9wcCk7CisgICAgICBicmVhazsKKwogICAgIGRlZmF1bHQ6 CiAgICAgICBwcF91bnN1cHBvcnRlZF90cmVlIChjeHhfcHAsIHQpOwogICAg ICAgLyogRmFsbCB0aHJvdWdoIHRvIGVycm9yLiAgKi8KQEAgLTYxMSw2ICs2 MTksNyBAQCBkdW1wX3R5cGVfcHJlZml4ICh0cmVlIHQsIGludCBmbGFncykK ICAgICBjYXNlIENPTVBMRVhfVFlQRToKICAgICBjYXNlIFZFQ1RPUl9UWVBF OgogICAgIGNhc2UgVFlQRU9GX1RZUEU6CisgICAgY2FzZSBERUNMVFlQRV9U WVBFOgogICAgICAgZHVtcF90eXBlICh0LCBmbGFncyk7CiAgICAgICBwcF9i YXNlIChjeHhfcHApLT5wYWRkaW5nID0gcHBfYmVmb3JlOwogICAgICAgYnJl YWs7CkBAIC03MDcsNiArNzE2LDcgQEAgZHVtcF90eXBlX3N1ZmZpeCAodHJl ZSB0LCBpbnQgZmxhZ3MpCiAgICAgY2FzZSBDT01QTEVYX1RZUEU6CiAgICAg Y2FzZSBWRUNUT1JfVFlQRToKICAgICBjYXNlIFRZUEVPRl9UWVBFOgorICAg IGNhc2UgREVDTFRZUEVfVFlQRToKICAgICAgIGJyZWFrOwogCiAgICAgZGVm YXVsdDoKSW5kZXg6IGNwL3RyZWUuYwo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBjcC90cmVlLmMJKHJldmlzaW9uIDEyNjk2MSkKKysrIGNwL3RyZWUu Ywkod29ya2luZyBjb3B5KQpAQCAtMjM4MCw2ICsyMzgwLDEyIEBAIGNwX3dh bGtfc3VidHJlZXMgKHRyZWUgKnRwLCBpbnQgKndhbGtfc3UKICAgICAgICp3 YWxrX3N1YnRyZWVzX3AgPSAwOwogICAgICAgYnJlYWs7CiAKKyAgICBjYXNl IERFQ0xUWVBFX1RZUEU6CisgICAgICBXQUxLX1NVQlRSRUUgKERFQ0xUWVBF X1RZUEVfRVhQUiAoKnRwKSk7CisgICAgICAqd2Fsa19zdWJ0cmVlc19wID0g MDsKKyAgICAgIGJyZWFrOworIAorCiAgICAgZGVmYXVsdDoKICAgICAgIHJl dHVybiBOVUxMX1RSRUU7CiAgICAgfQpJbmRleDogY3AvbWFuZ2xlLmMKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0gY3AvbWFuZ2xlLmMJKHJldmlzaW9u IDEyNjk2MSkKKysrIGNwL21hbmdsZS5jCSh3b3JraW5nIGNvcHkpCkBAIC0x NTQ0LDYgKzE1NDQsOSBAQCB3cml0ZV9sb2NhbF9uYW1lIChjb25zdCB0cmVl IGZ1bmN0aW9uLCBjCiAgICBDKysweCBleHRlbnNpb25zCiAKICAgICAgPHR5 cGU+IDo6PSBSUiA8dHlwZT4gICAjIHJ2YWx1ZSByZWZlcmVuY2UtdG8KKyAg ICAgPHR5cGU+IDo6PSBEdCA8ZXhwcmVzc2lvbj4gIyBkZWNsdHlwZSBvZiBh biBpZC1leHByZXNzaW9uIG9yIAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAjIGNsYXNzIG1lbWJlciBhY2Nlc3MKKyAgICAgPHR5cGU+IDo6 PSBEVCA8ZXhwcmVzc2lvbj4gIyBkZWNsdHlwZSBvZiBhbiBleHByZXNzaW9u CiAKICAgIFRZUEUgaXMgYSB0eXBlIG5vZGUuICAqLwogCkBAIC0xNjc0LDYg KzE2NzcsMTYgQEAgd3JpdGVfdHlwZSAodHJlZSB0eXBlKQogICAgICAgICAg ICAgICB3cml0ZV90eXBlIChQQUNLX0VYUEFOU0lPTl9QQVRURVJOICh0eXBl KSk7CiAgICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAgICBjYXNl IERFQ0xUWVBFX1RZUEU6CisgICAgICAgICAgICAgIHdyaXRlX2NoYXIgKCdE Jyk7CisgICAgICAgICAgICAgIGlmIChERUNMVFlQRV9UWVBFX0lEX0VYUFJf T1JfTUVNQkVSX0FDQ0VTU19QICh0eXBlKSkKKyAgICAgICAgICAgICAgICB3 cml0ZV9jaGFyICgndCcpOworICAgICAgICAgICAgICBlbHNlCisgICAgICAg ICAgICAgICAgd3JpdGVfY2hhciAoJ1QnKTsKKyAgICAgICAgICAgICAgd3Jp dGVfZXhwcmVzc2lvbiAoREVDTFRZUEVfVFlQRV9FWFBSICh0eXBlKSk7Cisg ICAgICAgICAgICAgIHdyaXRlX2NoYXIgKCdFJyk7CisgICAgICAgICAgICAg IGJyZWFrOworCiAJICAgIGRlZmF1bHQ6CiAJICAgICAgZ2NjX3VucmVhY2hh YmxlICgpOwogCSAgICB9CkluZGV4OiBjcC9jcC10cmVlLmgKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0gY3AvY3AtdHJlZS5oCShyZXZpc2lvbiAxMjY5 NjEpCisrKyBjcC9jcC10cmVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk3Nyw2 ICs5NzcsNyBAQCBlbnVtIGxhbmd1YWdlcyB7IGxhbmdfYywgbGFuZ19jcGx1 c3BsdXMsCiAgICB8fCBUUkVFX0NPREUgKFQpID09IFRZUEVOQU1FX1RZUEUJ CQlcCiAgICB8fCBUUkVFX0NPREUgKFQpID09IFRZUEVPRl9UWVBFCQkJXAog ICAgfHwgVFJFRV9DT0RFIChUKSA9PSBCT1VORF9URU1QTEFURV9URU1QTEFU RV9QQVJNCVwKKyAgIHx8IFRSRUVfQ09ERSAoVCkgPT0gREVDTFRZUEVfVFlQ RQkJCVwKICAgIHx8IFRZUEVfTEFOR19GTEFHXzUgKFQpKQogCiAvKiBTZXQg SVNfQUdHUl9UWVBFIGZvciBUIHRvIFZBTC4gIFQgbXVzdCBiZSBhIGNsYXNz LCBzdHJ1Y3QsIG9yCkBAIC0yOTIxLDYgKzI5MjIsMTUgQEAgbW9yZV9hZ2dy X2luaXRfZXhwcl9hcmdzX3AgKGNvbnN0IGFnZ3JfaQogLyogVGhlIGV4cHJl c3Npb24gaW4gcXVlc3Rpb24gZm9yIGEgVFlQRU9GX1RZUEUuICAqLwogI2Rl ZmluZSBUWVBFT0ZfVFlQRV9FWFBSKE5PREUpIChUWVBFT0ZfVFlQRV9DSEVD SyAoTk9ERSkpLT50eXBlLnZhbHVlcwogCisvKiBUaGUgZXhwcmVzc2lvbiBp biBxdWVzdGlvbiBmb3IgYSBERUNMVFlQRV9UWVBFLiAgKi8KKyNkZWZpbmUg REVDTFRZUEVfVFlQRV9FWFBSKE5PREUpIChERUNMVFlQRV9UWVBFX0NIRUNL IChOT0RFKSktPnR5cGUudmFsdWVzCisKKy8qIFdoZXRoZXIgdGhlIERFQ0xU WVBFX1RZUEVfRVhQUiBvZiBOT0RFIHdhcyBvcmlnaW5hbGx5IHBhcnNlZCBh cyBhbgorICAgaWQtZXhwcmVzc2lvbiBvciBhIG1lbWJlci1hY2Nlc3MgZXhw cmVzc2lvbi4gV2hlbiBmYWxzZSwgaXQgd2FzCisgICBwYXJzZWQgYXMgYSBm dWxsIGV4cHJlc3Npb24uICAqLworI2RlZmluZSBERUNMVFlQRV9UWVBFX0lE X0VYUFJfT1JfTUVNQkVSX0FDQ0VTU19QKE5PREUpIFwKKyAgKERFQ0xUWVBF X1RZUEVfQ0hFQ0sgKE5PREUpKS0+dHlwZS5zdHJpbmdfZmxhZworCiAvKiBO b256ZXJvIGZvciBWQVJfREVDTCBhbmQgRlVOQ1RJT05fREVDTCBub2RlIG1l YW5zIHRoYXQgYGV4dGVybicgd2FzCiAgICBzcGVjaWZpZWQgaW4gaXRzIGRl Y2xhcmF0aW9uLiAgVGhpcyBjYW4gYWxzbyBiZSBzZXQgZm9yIGFuCiAgICBl cnJvbmVvdXNseSBkZWNsYXJlZCBQQVJNX0RFQ0wuICAqLwpAQCAtNDY1Nyw2 ICs0NjY3LDcgQEAgZXh0ZXJuIGJvb2wgY3h4X29tcF9wcml2YXRpemVfYnlf cmVmZXJlbgogZXh0ZXJuIHRyZWUgYmFzZWxpbmtfZm9yX2ZucyAgICAgICAg ICAgICAgICAgICAgKHRyZWUpOwogZXh0ZXJuIHZvaWQgZmluaXNoX3N0YXRp Y19hc3NlcnQgICAgICAgICAgICAgICAgKHRyZWUsIHRyZWUsIGxvY2F0aW9u X3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYm9vbCk7CitleHRlcm4gdHJlZSBmaW5pc2hfZGVjbHR5cGVf dHlwZSAgICAgICAgICAgICAgICAodHJlZSwgYm9vbCk7CiBleHRlcm4gdHJl ZSBmaW5pc2hfdHJhaXRfZXhwcgkJCShlbnVtIGNwX3RyYWl0X2tpbmQsIHRy ZWUsIHRyZWUpOwogCiAvKiBpbiB0cmVlLmMgKi8KSW5kZXg6IGNwL2N4eC1w cmV0dHktcHJpbnQuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjcC9j eHgtcHJldHR5LXByaW50LmMJKHJldmlzaW9uIDEyNjk2MSkKKysrIGNwL2N4 eC1wcmV0dHktcHJpbnQuYwkod29ya2luZyBjb3B5KQpAQCAtMTE5OCw2ICsx MTk4LDEzIEBAIHBwX2N4eF90eXBlX3NwZWNpZmllcl9zZXEgKGN4eF9wcmV0 dHlfcHIKICAgICAgIHBwX2N4eF9uZXN0ZWRfbmFtZV9zcGVjaWZpZXIgKHBw LCBUWVBFX01FVEhPRF9CQVNFVFlQRSAodCkpOwogICAgICAgYnJlYWs7CiAK KyAgICBjYXNlIERFQ0xUWVBFX1RZUEU6CisgICAgICBwcF9jeHhfaWRlbnRp ZmllciAocHAsICJkZWNsdHlwZSIpOworICAgICAgcHBfY3h4X2xlZnRfcGFy ZW4gKHBwKTsKKyAgICAgIHBwX2N4eF9leHByZXNzaW9uIChwcCwgREVDTFRZ UEVfVFlQRV9FWFBSICh0KSk7CisgICAgICBwcF9jeHhfcmlnaHRfcGFyZW4g KHBwKTsKKyAgICAgIGJyZWFrOworCiAgICAgZGVmYXVsdDoKICAgICAgIGlm ICghKFRSRUVfQ09ERSAodCkgPT0gRlVOQ1RJT05fREVDTCAmJiBERUNMX0NP TlNUUlVDVE9SX1AgKHQpKSkKIAlwcF9jX3NwZWNpZmllcl9xdWFsaWZpZXJf bGlzdCAocHBfY19iYXNlIChwcCksIHQpOwpAQCAtMTU4MSw2ICsxNTg4LDcg QEAgcHBfY3h4X3R5cGVfaWQgKGN4eF9wcmV0dHlfcHJpbnRlciAqcHAsIAog ICAgIGNhc2UgVEVNUExBVEVfUEFSTV9JTkRFWDoKICAgICBjYXNlIFRFTVBM QVRFX0RFQ0w6CiAgICAgY2FzZSBUWVBFT0ZfVFlQRToKKyAgICBjYXNlIERF Q0xUWVBFX1RZUEU6CiAgICAgY2FzZSBURU1QTEFURV9JRF9FWFBSOgogICAg ICAgcHBfY3h4X3R5cGVfc3BlY2lmaWVyX3NlcSAocHAsIHQpOwogICAgICAg YnJlYWs7CkluZGV4OiBjcC9wdC5jCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tIGNwL3B0LmMJKHJldmlzaW9uIDEyNjk2MSkKKysrIGNwL3B0LmMJKHdv cmtpbmcgY29weSkKQEAgLTkwNTgsNiArOTA1OCwyMiBAQCB0c3Vic3QgKHRy ZWUgdCwgdHJlZSBhcmdzLCB0c3Vic3RfZmxhZ3NfCiAJCQkJCSAgICAgY29t cGxhaW4pOwogICAgICAgfQogCisgICAgY2FzZSBERUNMVFlQRV9UWVBFOgor ICAgICAgeworCXRyZWUgdHlwZTsKKworCXR5cGUgPSAKKyAgICAgICAgICBm aW5pc2hfZGVjbHR5cGVfdHlwZSAodHN1YnN0X2V4cHIgCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChERUNMVFlQRV9UWVBFX0VYUFIgKHQp LCBhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29t cGxhaW4sIGluX2RlY2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAvKmludGVncmFsX2NvbnN0YW50X2V4cHJlc3Npb25fcD0qL2ZhbHNl KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVDTFRZUEVf VFlQRV9JRF9FWFBSX09SX01FTUJFUl9BQ0NFU1NfUCAodCkpOworCXJldHVy biBjcF9idWlsZF9xdWFsaWZpZWRfdHlwZV9yZWFsICh0eXBlLAorCQkJCQkg ICAgIGNwX3R5cGVfcXVhbHMgKHQpCisJCQkJCSAgICAgfCBjcF90eXBlX3F1 YWxzICh0eXBlKSwKKwkJCQkJICAgICBjb21wbGFpbik7CisgICAgICB9CisK ICAgICBjYXNlIFRZUEVfQVJHVU1FTlRfUEFDSzoKICAgICBjYXNlIE5PTlRZ UEVfQVJHVU1FTlRfUEFDSzoKICAgICAgIHsKQEAgLTk2MjEsNiArOTYzNyw3 IEBAIHRzdWJzdF9jb3B5ICh0cmVlIHQsIHRyZWUgYXJncywgdHN1YnN0X2YK ICAgICBjYXNlIFRZUEVOQU1FX1RZUEU6CiAgICAgY2FzZSBVTkJPVU5EX0NM QVNTX1RFTVBMQVRFOgogICAgIGNhc2UgVFlQRU9GX1RZUEU6CisgICAgY2Fz ZSBERUNMVFlQRV9UWVBFOgogICAgIGNhc2UgVFlQRV9ERUNMOgogICAgICAg cmV0dXJuIHRzdWJzdCAodCwgYXJncywgY29tcGxhaW4sIGluX2RlY2wpOwog CkBAIC0xMjgyNCw2ICsxMjg0MSwxMiBAQCB1bmlmeSAodHJlZSB0cGFybXMs IHRyZWUgdGFyZ3MsIHRyZWUgcGFyCiAKICAgICAgIGJyZWFrOwogCisgICAg Y2FzZSBUWVBFT0ZfVFlQRToKKyAgICBjYXNlIERFQ0xUWVBFX1RZUEU6Cisg ICAgICAvKiBDYW5ub3QgZGVkdWNlIGFueXRoaW5nIGZyb20gVFlQRU9GX1RZ UEUgb3IgREVDTFRZUEVfVFlQRQorICAgICAgICAgbm9kZXMuICAqLworICAg ICAgcmV0dXJuIDA7CisKICAgICBkZWZhdWx0OgogICAgICAgZ2NjX2Fzc2Vy dCAoRVhQUl9QIChwYXJtKSk7CiAKQEAgLTE0ODg4LDEwICsxNDkxMSwxMSBA QCBkZXBlbmRlbnRfdHlwZV9wX3IgKHRyZWUgdHlwZSkKIAkgICAgICAgKElO TkVSTU9TVF9URU1QTEFURV9BUkdTIChDTEFTU1RZUEVfVElfQVJHUyAodHlw ZSkpKSkpCiAgICAgcmV0dXJuIHRydWU7CiAKLSAgLyogQWxsIFRZUEVPRl9U WVBFcyBhcmUgZGVwZW5kZW50OyBpZiB0aGUgYXJndW1lbnQgb2YgdGhlIGB0 eXBlb2YnCi0gICAgIGV4cHJlc3Npb24gaXMgbm90IHR5cGUtZGVwZW5kZW50 LCB0aGVuIGl0IHNob3VsZCBhbHJlYWR5IGJlZW4KLSAgICAgaGF2ZSByZXNv bHZlZC4gICovCi0gIGlmIChUUkVFX0NPREUgKHR5cGUpID09IFRZUEVPRl9U WVBFKQorICAvKiBBbGwgVFlQRU9GX1RZUEVzIGFuZCBERUNMVFlQRV9UWVBF cyBhcmUgZGVwZW5kZW50OyBpZiB0aGUKKyAgICAgYXJndW1lbnQgb2YgdGhl IGB0eXBlb2YnIGV4cHJlc3Npb24gaXMgbm90IHR5cGUtZGVwZW5kZW50LCB0 aGVuCisgICAgIGl0IHNob3VsZCBhbHJlYWR5IGJlZW4gaGF2ZSByZXNvbHZl ZC4gICovCisgIGlmIChUUkVFX0NPREUgKHR5cGUpID09IFRZUEVPRl9UWVBF CisgICAgICB8fCBUUkVFX0NPREUgKHR5cGUpID09IERFQ0xUWVBFX1RZUEUp CiAgICAgcmV0dXJuIHRydWU7CiAKICAgLyogQSB0ZW1wbGF0ZSBhcmd1bWVu dCBwYWNrIGlzIGRlcGVuZGVudCBpZiBhbnkgb2YgaXRzIHBhY2tlZApJbmRl eDogY3Avc2VtYW50aWNzLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g Y3Avc2VtYW50aWNzLmMJKHJldmlzaW9uIDEyNjk2MSkKKysrIGNwL3NlbWFu dGljcy5jCSh3b3JraW5nIGNvcHkpCkBAIC0yOTM1LDYgKzI5MzUsNyBAQCBm aW5pc2hfdHlwZW9mICh0cmVlIGV4cHIpCiAgICAgewogICAgICAgdHlwZSA9 IG1ha2VfYWdncl90eXBlIChUWVBFT0ZfVFlQRSk7CiAgICAgICBUWVBFT0Zf VFlQRV9FWFBSICh0eXBlKSA9IGV4cHI7CisgICAgICBTRVRfVFlQRV9TVFJV Q1RVUkFMX0VRVUFMSVRZICh0eXBlKTsKIAogICAgICAgcmV0dXJuIHR5cGU7 CiAgICAgfQpAQCAtNDAzNiw2ICs0MDM3LDE3MiBAQCBmaW5pc2hfc3RhdGlj X2Fzc2VydCAodHJlZSBjb25kaXRpb24sIHRyCiAgICAgICBpbnB1dF9sb2Nh dGlvbiA9IHNhdmVkX2xvYzsKICAgICB9CiB9CisMCisvKiBJbXBsZW1lbnRz IHRoZSBDKysweCBkZWNsdHlwZSBrZXl3b3JkLiBSZXR1cm5zIHRoZSB0eXBl IG9mIEVYUFIsCisgICBzdWl0YWJsZSBmb3IgdXNlIGFzIGEgdHlwZS1zcGVj aWZpZXIuCisKKyAgIElEX0VYUFJFU1NJT05fT1JfTUVNQkVSX0FDQ0VTU19Q IGlzIHRydWUgd2hlbiBFWFBSIHdhcyBwYXJzZWQgYXMgYW4KKyAgIGlkLWV4 cHJlc3Npb24gb3IgYSBjbGFzcyBtZW1iZXIgYWNjZXNzLCBGQUxTRSB3aGVu IGl0IHdhcyBwYXJzZWQgYXMKKyAgIGEgZnVsbCBleHByZXNzaW9uLiAgKi8K K3RyZWUKK2ZpbmlzaF9kZWNsdHlwZV90eXBlICh0cmVlIGV4cHIsIGJvb2wg aWRfZXhwcmVzc2lvbl9vcl9tZW1iZXJfYWNjZXNzX3ApCit7CisgIHRyZWUg b3JpZ19leHByID0gZXhwcjsKKyAgdHJlZSB0eXBlOworCisgIGlmICh0eXBl X2RlcGVuZGVudF9leHByZXNzaW9uX3AgKGV4cHIpKQorICAgIHsKKyAgICAg IHR5cGUgPSBtYWtlX2FnZ3JfdHlwZSAoREVDTFRZUEVfVFlQRSk7CisgICAg ICBERUNMVFlQRV9UWVBFX0VYUFIgKHR5cGUpID0gZXhwcjsKKyAgICAgIERF Q0xUWVBFX1RZUEVfSURfRVhQUl9PUl9NRU1CRVJfQUNDRVNTX1AgKHR5cGUp CisgICAgICAgID0gaWRfZXhwcmVzc2lvbl9vcl9tZW1iZXJfYWNjZXNzX3A7 CisgICAgICBTRVRfVFlQRV9TVFJVQ1RVUkFMX0VRVUFMSVRZICh0eXBlKTsK KworICAgICAgcmV0dXJuIHR5cGU7CisgICAgfQorCisgIC8qIFRoZSB0eXBl IGRlbm90ZWQgYnkgZGVjbHR5cGUoZSkgaXMgZGVmaW5lZCBhcyBmb2xsb3dz OiAgKi8KKworICBpZiAoaWRfZXhwcmVzc2lvbl9vcl9tZW1iZXJfYWNjZXNz X3ApCisgICAgeworICAgICAgLyogSWYgZSBpcyBhbiBpZC1leHByZXNzaW9u IG9yIGEgY2xhc3MgbWVtYmVyIGFjY2VzcyAoNS4yLjUKKyAgICAgICAgIFtl eHByLnJlZl0pLCBkZWNsdHlwZShlKSBpcyBkZWZpbmVkIGFzIHRoZSB0eXBl IG9mIHRoZSBlbnRpdHkKKyAgICAgICAgIG5hbWVkIGJ5IGUuIElmIHRoZXJl IGlzIG5vIHN1Y2ggZW50aXR5LCBvciBlIG5hbWVzIGEgc2V0IG9mCisgICAg ICAgICBvdmVybG9hZGVkIGZ1bmN0aW9ucywgdGhlIHByb2dyYW0gaXMgaWxs LWZvcm1lZC4gICovCisgICAgICBpZiAoVFJFRV9DT0RFIChleHByKSA9PSBJ REVOVElGSUVSX05PREUpCisgICAgICAgIGV4cHIgPSBsb29rdXBfbmFtZSAo ZXhwcik7CisKKyAgICAgIGlmIChUUkVFX0NPREUgKGV4cHIpID09IElORElS RUNUX1JFRikKKyAgICAgICAgLyogVGhpcyBjYW4gaGFwcGVuIHdoZW4gdGhl IGV4cHJlc3Npb24gaXMsIGUuZy4sICJhLmIiLiBKdXN0CisgICAgICAgICAg IGxvb2sgYXQgdGhlIHVuZGVybHlpbmcgb3BlcmFuZC4gICovCisgICAgICAg IGV4cHIgPSBUUkVFX09QRVJBTkQgKGV4cHIsIDApOworCisgICAgICBpZiAo VFJFRV9DT0RFIChleHByKSA9PSBPRkZTRVRfUkVGCisgICAgICAgICAgfHwg VFJFRV9DT0RFIChleHByKSA9PSBNRU1CRVJfUkVGKQorICAgICAgICAvKiBX ZSdyZSBvbmx5IGludGVyZXN0ZWQgaW4gdGhlIGZpZWxkIGl0c2VsZi4gSWYg aXQgaXMgYQorICAgICAgICAgICBCQVNFTElOSywgd2Ugd2lsbCBuZWVkIHRv IHNlZSB0aHJvdWdoIGl0IGluIHRoZSBuZXh0CisgICAgICAgICAgIHN0ZXAu ICAqLworICAgICAgICBleHByID0gVFJFRV9PUEVSQU5EIChleHByLCAxKTsK KworICAgICAgaWYgKFRSRUVfQ09ERSAoZXhwcikgPT0gQkFTRUxJTkspCisg ICAgICAgIC8qIFNlZSB0aHJvdWdoIEJBU0VMSU5LIG5vZGVzIHRvIHRoZSB1 bmRlcmx5aW5nIGZ1bmN0aW9ucy4gICovCisgICAgICAgIGV4cHIgPSBCQVNF TElOS19GVU5DVElPTlMgKGV4cHIpOworCisgICAgICBpZiAoVFJFRV9DT0RF IChleHByKSA9PSBPVkVSTE9BRCkKKyAgICAgICAgeworICAgICAgICAgIGlm IChPVkxfQ0hBSU4gKGV4cHIpKQorICAgICAgICAgICAgeworICAgICAgICAg ICAgICBlcnJvciAoIiVxRSByZWZlcnMgdG8gYSBzZXQgb2Ygb3ZlcmxvYWRl ZCBmdW5jdGlvbnMiLCBvcmlnX2V4cHIpOworICAgICAgICAgICAgICByZXR1 cm4gZXJyb3JfbWFya19ub2RlOworICAgICAgICAgICAgfQorICAgICAgICAg IGVsc2UKKyAgICAgICAgICAgIC8qIEFuIG92ZXJsb2FkIHNldCBjb250YWlu aW5nIG9ubHkgb25lIGZ1bmN0aW9uOiBqdXN0IGxvb2sKKyAgICAgICAgICAg ICAgIGF0IHRoYXQgZnVuY3Rpb24uICAqLworICAgICAgICAgICAgZXhwciA9 IE9WTF9GVU5DVElPTiAoZXhwcik7CisgICAgICAgIH0KKworICAgICAgc3dp dGNoIChUUkVFX0NPREUgKGV4cHIpKQorICAgICAgICB7CisgICAgICAgIGNh c2UgRklFTERfREVDTDoKKyAgICAgICAgICBpZiAoREVDTF9DX0JJVF9GSUVM RCAoZXhwcikpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIHR5cGUg PSBERUNMX0JJVF9GSUVMRF9UWVBFIChleHByKTsKKyAgICAgICAgICAgICAg YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgLyogRmFsbCB0aHJv dWdoIGZvciBmaWVsZHMgdGhhdCBhcmVuJ3QgYml0ZmllbGRzLiAgKi8KKwor ICAgICAgICBjYXNlIEZVTkNUSU9OX0RFQ0w6CisgICAgICAgIGNhc2UgVkFS X0RFQ0w6CisgICAgICAgIGNhc2UgQ09OU1RfREVDTDoKKyAgICAgICAgY2Fz ZSBQQVJNX0RFQ0w6CisgICAgICAgIGNhc2UgUkVTVUxUX0RFQ0w6CisgICAg ICAgICAgdHlwZSA9IFRSRUVfVFlQRSAoZXhwcik7CisgICAgICAgICAgYnJl YWs7CisKKyAgICAgICAgY2FzZSBFUlJPUl9NQVJLOgorICAgICAgICAgIHR5 cGUgPSBlcnJvcl9tYXJrX25vZGU7CisgICAgICAgICAgYnJlYWs7CisKKyAg ICAgICAgY2FzZSBDT01QT05FTlRfUkVGOgorICAgICAgICAgIHR5cGUgPSBp c19iaXRmaWVsZF9leHByX3dpdGhfbG93ZXJlZF90eXBlIChleHByKTsKKyAg ICAgICAgICBpZiAoIXR5cGUpCisgICAgICAgICAgICB0eXBlID0gVFJFRV9U WVBFIChUUkVFX09QRVJBTkQgKGV4cHIsIDEpKTsKKyAgICAgICAgICBicmVh azsKKworICAgICAgICBjYXNlIEJJVF9GSUVMRF9SRUY6CisgICAgICAgICAg Z2NjX3VucmVhY2hhYmxlICgpOworCisgICAgICAgIGNhc2UgSU5URUdFUl9D U1Q6CisgICAgICAgICAgLyogV2UgY2FuIGdldCBoZXJlIHdoZW4gdGhlIGlk LWV4cHJlc3Npb24gcmVmZXJzIHRvIGFuCisgICAgICAgICAgICAgZW51bWVy YXRvci4gICovCisgICAgICAgICAgdHlwZSA9IFRSRUVfVFlQRSAoZXhwcik7 CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg ICAgICBpZiAoVFlQRV9QIChleHByKSB8fCBERUNMX1AgKGV4cHIpKQorICAg ICAgICAgICAgZXJyb3IgKCJhcmd1bWVudCB0byBkZWNsdHlwZSBtdXN0IGJl IGFuIGV4cHJlc3Npb24iKTsKKyAgICAgICAgICBlbHNlCisgICAgICAgICAg ICBzb3JyeSAoInVuaGFuZGxlZCBkZWNsdHlwZSBleHByZXNzaW9uIGtpbmQ6 ICVzIiwKKyAgICAgICAgICAgICAgICAgICB0cmVlX2NvZGVfbmFtZVsoaW50 KSBUUkVFX0NPREUgKGV4cHIpXSk7CisgICAgICAgICAgcmV0dXJuIGVycm9y X21hcmtfbm9kZTsKKyAgICAgICAgfQorICAgIH0KKyAgZWxzZQorICAgIHsK KyAgICAgIHRyZWUgZm5kZWNsOworCisgICAgICBpZiAoVFJFRV9DT0RFIChl eHByKSA9PSBDQUxMX0VYUFIKKyAgICAgICAgICAmJiAoZm5kZWNsID0gZ2V0 X2NhbGxlZV9mbmRlY2wgKGV4cHIpKQorICAgICAgICAgICYmIChmbmRlY2wg IT0gZXJyb3JfbWFya19ub2RlKSkKKyAgICAgICAgLyogSWYgZSBpcyBhIGZ1 bmN0aW9uIGNhbGwgKDUuMi4yIFtleHByLmNhbGxdKSBvciBhbgorICAgICAg ICAgICBpbnZvY2F0aW9uIG9mIGFuIG92ZXJsb2FkZWQgb3BlcmF0b3IgKHBh cmVudGhlc2VzIGFyb3VuZCBlCisgICAgICAgICAgIGFyZSBpZ25vcmVkKSwg ZGVjbHR5cGUoZSkgaXMgZGVmaW5lZCBhcyB0aGUgcmV0dXJuIHR5cGUgb2YK KyAgICAgICAgICAgdGhhdCBmdW5jdGlvbi4gICovCisgICAgICAgIHR5cGUg PSBUUkVFX1RZUEUgKFRSRUVfVFlQRSAoZm5kZWNsKSk7CisgICAgICBlbHNl IAorICAgICAgICB7CisgICAgICAgICAgdHlwZSA9IGlzX2JpdGZpZWxkX2V4 cHJfd2l0aF9sb3dlcmVkX3R5cGUgKGV4cHIpOworICAgICAgICAgIGlmICh0 eXBlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAvKiBCaXRmaWVs ZHMgYXJlIHNwZWNpYWwsIGJlY2F1c2UgdGhlaXIgdHlwZSBlbmNvZGVzIHRo ZQorICAgICAgICAgICAgICAgICBudW1iZXIgb2YgYml0cyB0aGV5IHN0b3Jl LiAgSWYgdGhlIGV4cHJlc3Npb24gcmVmZXJlbmNlZCBhCisgICAgICAgICAg ICAgICAgIGJpdGZpZWxkLCBUWVBFIG5vdyBoYXMgdGhlIGRlY2xhcmVkIHR5 cGUgb2YgdGhhdAorICAgICAgICAgICAgICAgICBiaXRmaWVsZC4gICovCisg ICAgICAgICAgICAgIHR5cGUgPSBjcF9idWlsZF9xdWFsaWZpZWRfdHlwZSAo dHlwZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY3BfdHlwZV9xdWFscyAoVFJFRV9UWVBFIChleHByKSkpOwor ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgaWYgKHJlYWxfbHZhbHVl X3AgKGV4cHIpKQorICAgICAgICAgICAgICAgIHR5cGUgPSBidWlsZF9yZWZl cmVuY2VfdHlwZSAodHlwZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAg ZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAvKiBPdGhlcndp c2UsIHdoZXJlIFQgaXMgdGhlIHR5cGUgb2YgZSwgaWYgZSBpcyBhbiBsdmFs dWUsCisgICAgICAgICAgICAgICAgIGRlY2x0eXBlKGUpIGlzIGRlZmluZWQg YXMgVCYsIG90aGVyd2lzZSBkZWNsdHlwZShlKSBpcworICAgICAgICAgICAg ICAgICBkZWZpbmVkIGFzIFQuICAqLworICAgICAgICAgICAgICB0eXBlID0g VFJFRV9UWVBFIChleHByKTsKKyAgICAgICAgICAgICAgaWYgKGV4cHIgPT0g Y3VycmVudF9jbGFzc19wdHIpCisgICAgICAgICAgICAgICAgLyogSWYgdGhl IGV4cHJlc3Npb24gaXMganVzdCAidGhpcyIsIHdlIHdhbnQgdGhlCisgICAg ICAgICAgICAgICAgICAgY3YtdW5xdWFsaWZpZWQgcG9pbnRlciBmb3IgdGhl ICJ0aGlzIiB0eXBlLiAgKi8KKyAgICAgICAgICAgICAgICB0eXBlID0gVFlQ RV9NQUlOX1ZBUklBTlQgKHR5cGUpOworICAgICAgICAgICAgICBlbHNlIGlm IChyZWFsX2x2YWx1ZV9wIChleHByKSkKKyAgICAgICAgICAgICAgICB7Cisg ICAgICAgICAgICAgICAgICBpZiAoVFJFRV9DT0RFICh0eXBlKSAhPSBSRUZF UkVOQ0VfVFlQRSkKKyAgICAgICAgICAgICAgICAgICAgdHlwZSA9IGJ1aWxk X3JlZmVyZW5jZV90eXBlICh0eXBlKTsKKyAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0eXBlID0gbm9u X3JlZmVyZW5jZSAodHlwZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K KyAgICB9CisKKyAgaWYgKCF0eXBlIHx8IHR5cGUgPT0gdW5rbm93bl90eXBl X25vZGUpCisgICAgeworICAgICAgZXJyb3IgKCJ0eXBlIG9mICVxRSBpcyB1 bmtub3duIiwgZXhwcik7CisgICAgICByZXR1cm4gZXJyb3JfbWFya19ub2Rl OworICAgIH0KKworICByZXR1cm4gdHlwZTsKK30KIAogLyogQ2FsbGVkIGZy b20gdHJhaXRfZXhwcl92YWx1ZSB0byBldmFsdWF0ZSBlaXRoZXIgX19oYXNf bm90aHJvd19hc3NpZ24gb3IgCiAgICBfX2hhc19ub3Rocm93X2NvcHksIGRl cGVuZGluZyBvbiBhc3NpZ25fcC4gICovCkluZGV4OiBjcC9sZXguYwo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLSBjcC9sZXguYwkocmV2aXNpb24gMTI2 OTYxKQorKysgY3AvbGV4LmMJKHdvcmtpbmcgY29weSkKQEAgLTE5Nyw2ICsx OTcsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJlc3dvcmQgcmVzd29yZHNb XSA9CiAgIHsgIl9fY29tcGxleF9fIiwJUklEX0NPTVBMRVgsCTAgfSwKICAg eyAiX19jb25zdCIsCQlSSURfQ09OU1QsCTAgfSwKICAgeyAiX19jb25zdF9f IiwJUklEX0NPTlNULAkwIH0sCisgIHsgIl9fZGVjbHR5cGUiLCAgICAgICBS SURfREVDTFRZUEUsICAgMCB9LAogICB7ICJfX2V4dGVuc2lvbl9fIiwJUklE X0VYVEVOU0lPTiwJMCB9LAogICB7ICJfX2Z1bmNfXyIsCQlSSURfQzk5X0ZV TkNUSU9OX05BTUUsCTAgfSwKICAgeyAiX19oYXNfbm90aHJvd19hc3NpZ24i LCBSSURfSEFTX05PVEhST1dfQVNTSUdOLCAwIH0sCkBAIC0yNDQsNiArMjQ1 LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCByZXN3b3JkIHJlc3dvcmRzW10g PQogICB7ICJjb25zdCIsCQlSSURfQ09OU1QsCTAgfSwKICAgeyAiY29uc3Rf Y2FzdCIsCVJJRF9DT05TVENBU1QsCTAgfSwKICAgeyAiY29udGludWUiLAkJ UklEX0NPTlRJTlVFLAkwIH0sCisgIHsgImRlY2x0eXBlIiwgICAgICAgICBS SURfREVDTFRZUEUsICAgRF9DWFgwWCB9LAogICB7ICJkZWZhdWx0IiwJCVJJ RF9ERUZBVUxULAkwIH0sCiAgIHsgImRlbGV0ZSIsCQlSSURfREVMRVRFLAkw IH0sCiAgIHsgImRvIiwJCVJJRF9ETywJCTAgfSwKSW5kZXg6IGNwL3BhcnNl ci5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGNwL3BhcnNlci5jCShy ZXZpc2lvbiAxMjY5NjEpCisrKyBjcC9wYXJzZXIuYwkod29ya2luZyBjb3B5 KQpAQCAtNTc3LDYgKzU3Nyw4IEBAIGNwX2xleGVyX25leHRfdG9rZW5faXNf ZGVjbF9zcGVjaWZpZXJfa2UKICAgICAgIC8qIEdOVSBleHRlbnNpb25zLiAg Ki8gCiAgICAgY2FzZSBSSURfQVRUUklCVVRFOgogICAgIGNhc2UgUklEX1RZ UEVPRjoKKyAgICAgIC8qIEMrKzB4IGV4dGVuc2lvbnMuICAqLworICAgIGNh c2UgUklEX0RFQ0xUWVBFOgogICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBk ZWZhdWx0OgpAQCAtMTU4Miw3ICsxNTg0LDcgQEAgc3RhdGljIHRyZWUgY3Bf cGFyc2VyX25lc3RlZF9uYW1lX3NwZWNpZgogc3RhdGljIHRyZWUgY3BfcGFy c2VyX2NsYXNzX29yX25hbWVzcGFjZV9uYW1lCiAgIChjcF9wYXJzZXIgKiwg Ym9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCk7CiBzdGF0aWMgdHJlZSBj cF9wYXJzZXJfcG9zdGZpeF9leHByZXNzaW9uCi0gIChjcF9wYXJzZXIgKiwg Ym9vbCwgYm9vbCk7CisgIChjcF9wYXJzZXIgKiwgYm9vbCwgYm9vbCwgYm9v bCk7CiBzdGF0aWMgdHJlZSBjcF9wYXJzZXJfcG9zdGZpeF9vcGVuX3NxdWFy ZV9leHByZXNzaW9uCiAgIChjcF9wYXJzZXIgKiwgdHJlZSwgYm9vbCk7CiBz dGF0aWMgdHJlZSBjcF9wYXJzZXJfcG9zdGZpeF9kb3RfZGVyZWZfZXhwcmVz c2lvbgpAQCAtMTcwNyw2ICsxNzA5LDggQEAgc3RhdGljIHZvaWQgY3BfcGFy c2VyX2xpbmthZ2Vfc3BlY2lmaWNhdAogICAoY3BfcGFyc2VyICopOwogc3Rh dGljIHZvaWQgY3BfcGFyc2VyX3N0YXRpY19hc3NlcnQKICAgKGNwX3BhcnNl ciAqLCBib29sKTsKK3N0YXRpYyB0cmVlIGNwX3BhcnNlcl9kZWNsdHlwZQor ICAoY3BfcGFyc2VyICopOwogCiAvKiBEZWNsYXJhdG9ycyBbZ3JhbS5kY2wu ZGVjbF0gKi8KIApAQCAtNDI1NCwxNSArNDI1OCwyMCBAQCBjcF9wYXJzZXJf Y2xhc3Nfb3JfbmFtZXNwYWNlX25hbWUgKGNwX3BhCiAgICBgJicgb3BlcmF0 b3IuICBDQVNUX1AgaXMgdHJ1ZSBpZiB0aGlzIGV4cHJlc3Npb24gaXMgdGhl IHRhcmdldCBvZiBhCiAgICBjYXN0LgogCisgICBJZiBNRU1CRVJfQUNDRVNT X09OTFlfUCwgd2Ugb25seSBhbGxvdyBwb3N0Zml4IGV4cHJlc3Npb25zIHRo YXQgYXJlCisgICBjbGFzcyBtZW1iZXIgYWNjZXNzIGV4cHJlc3Npb25zIFtl eHByLnJlZl0uCisKICAgIFJldHVybnMgYSByZXByZXNlbnRhdGlvbiBvZiB0 aGUgZXhwcmVzc2lvbi4gICovCiAKIHN0YXRpYyB0cmVlCi1jcF9wYXJzZXJf cG9zdGZpeF9leHByZXNzaW9uIChjcF9wYXJzZXIgKnBhcnNlciwgYm9vbCBh ZGRyZXNzX3AsIGJvb2wgY2FzdF9wKQorY3BfcGFyc2VyX3Bvc3RmaXhfZXhw cmVzc2lvbiAoY3BfcGFyc2VyICpwYXJzZXIsIGJvb2wgYWRkcmVzc19wLCBi b29sIGNhc3RfcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv b2wgbWVtYmVyX2FjY2Vzc19vbmx5X3ApCiB7CiAgIGNwX3Rva2VuICp0b2tl bjsKICAgZW51bSByaWQga2V5d29yZDsKICAgY3BfaWRfa2luZCBpZGsgPSBD UF9JRF9LSU5EX05PTkU7CiAgIHRyZWUgcG9zdGZpeF9leHByZXNzaW9uID0g TlVMTF9UUkVFOworICBib29sIGlzX21lbWJlcl9hY2Nlc3MgPSBmYWxzZTsK IAogICAvKiBQZWVrIGF0IHRoZSBuZXh0IHRva2VuLiAgKi8KICAgdG9rZW4g PSBjcF9sZXhlcl9wZWVrX3Rva2VuIChwYXJzZXItPmxleGVyKTsKQEAgLTQ1 MTMsNiArNDUyMiw3IEBAIGNwX3BhcnNlcl9wb3N0Zml4X2V4cHJlc3Npb24g KGNwX3BhcnNlciAKIAkJCQkJCQlwb3N0Zml4X2V4cHJlc3Npb24sCiAJCQkJ CQkJZmFsc2UpOwogCSAgaWRrID0gQ1BfSURfS0lORF9OT05FOworICAgICAg ICAgIGlzX21lbWJlcl9hY2Nlc3MgPSBmYWxzZTsKIAkgIGJyZWFrOwogCiAJ Y2FzZSBDUFBfT1BFTl9QQVJFTjoKQEAgLTQ1MjQsNiArNDUzNCw4IEBAIGNw X3BhcnNlcl9wb3N0Zml4X2V4cHJlc3Npb24gKGNwX3BhcnNlciAKIAkgICAg Ym9vbCBzYXZlZF9ub25faW50ZWdyYWxfY29uc3RhbnRfZXhwcmVzc2lvbl9w ID0gZmFsc2U7CiAJICAgIHRyZWUgYXJnczsKIAorICAgICAgICAgICAgaXNf bWVtYmVyX2FjY2VzcyA9IGZhbHNlOworCiAJICAgIGlzX2J1aWx0aW5fY29u c3RhbnRfcAogCSAgICAgID0gREVDTF9JU19CVUlMVElOX0NPTlNUQU5UX1Ag KHBvc3RmaXhfZXhwcmVzc2lvbik7CiAJICAgIGlmIChpc19idWlsdGluX2Nv bnN0YW50X3ApCkBAIC00NjY5LDYgKzQ2ODEsOCBAQCBjcF9wYXJzZXJfcG9z dGZpeF9leHByZXNzaW9uIChjcF9wYXJzZXIgCiAJICAgID0gY3BfcGFyc2Vy X3Bvc3RmaXhfZG90X2RlcmVmX2V4cHJlc3Npb24gKHBhcnNlciwgdG9rZW4t PnR5cGUsCiAJCQkJCQkgICAgICBwb3N0Zml4X2V4cHJlc3Npb24sCiAJCQkJ CQkgICAgICBmYWxzZSwgJmlkayk7CisKKyAgICAgICAgICBpc19tZW1iZXJf YWNjZXNzID0gdHJ1ZTsKIAkgIGJyZWFrOwogCiAJY2FzZSBDUFBfUExVU19Q TFVTOgpAQCAtNDY4NCw2ICs0Njk4LDcgQEAgY3BfcGFyc2VyX3Bvc3RmaXhf ZXhwcmVzc2lvbiAoY3BfcGFyc2VyIAogCQkJCQkJCSAgImFuIGluY3JlbWVu dCIpKQogCSAgICBwb3N0Zml4X2V4cHJlc3Npb24gPSBlcnJvcl9tYXJrX25v ZGU7CiAJICBpZGsgPSBDUF9JRF9LSU5EX05PTkU7CisgICAgICAgICAgaXNf bWVtYmVyX2FjY2VzcyA9IGZhbHNlOwogCSAgYnJlYWs7CiAKIAljYXNlIENQ UF9NSU5VU19NSU5VUzoKQEAgLTQ2OTksMTAgKzQ3MTQsMTQgQEAgY3BfcGFy c2VyX3Bvc3RmaXhfZXhwcmVzc2lvbiAoY3BfcGFyc2VyIAogCQkJCQkJCSAg ImEgZGVjcmVtZW50IikpCiAJICAgIHBvc3RmaXhfZXhwcmVzc2lvbiA9IGVy cm9yX21hcmtfbm9kZTsKIAkgIGlkayA9IENQX0lEX0tJTkRfTk9ORTsKKyAg ICAgICAgICBpc19tZW1iZXJfYWNjZXNzID0gZmFsc2U7CiAJICBicmVhazsK IAogCWRlZmF1bHQ6Ci0JICByZXR1cm4gcG9zdGZpeF9leHByZXNzaW9uOwor ICAgICAgICAgIGlmIChtZW1iZXJfYWNjZXNzX29ubHlfcCkKKyAgICAgICAg ICAgIHJldHVybiBpc19tZW1iZXJfYWNjZXNzPyBwb3N0Zml4X2V4cHJlc3Np b24gOiBlcnJvcl9tYXJrX25vZGU7CisgICAgICAgICAgZWxzZQorICAgICAg ICAgICAgcmV0dXJuIHBvc3RmaXhfZXhwcmVzc2lvbjsKIAl9CiAgICAgfQog CkBAIC01MzQxLDcgKzUzNjAsOCBAQCBjcF9wYXJzZXJfdW5hcnlfZXhwcmVz c2lvbiAoY3BfcGFyc2VyICpwCiAgICAgICByZXR1cm4gZXhwcmVzc2lvbjsK ICAgICB9CiAKLSAgcmV0dXJuIGNwX3BhcnNlcl9wb3N0Zml4X2V4cHJlc3Np b24gKHBhcnNlciwgYWRkcmVzc19wLCBjYXN0X3ApOworICByZXR1cm4gY3Bf cGFyc2VyX3Bvc3RmaXhfZXhwcmVzc2lvbiAocGFyc2VyLCBhZGRyZXNzX3As IGNhc3RfcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC8qbWVtYmVyX2FjY2Vzc19vbmx5X3A9Ki9mYWxzZSk7CiB9CiAKIC8q IFJldHVybnMgRVJST1JfTUFSSyBpZiBUT0tFTiBpcyBub3QgYSB1bmFyeS1v cGVyYXRvci4gIElmIFRPS0VOIGlzIGEKQEAgLTgzNzEsNiArODM5MSwxNjQg QEAgY3BfcGFyc2VyX3N0YXRpY19hc3NlcnQoY3BfcGFyc2VyICpwYXJzZQog ICBmaW5pc2hfc3RhdGljX2Fzc2VydCAoY29uZGl0aW9uLCBtZXNzYWdlLCBz YXZlZF9sb2MsIG1lbWJlcl9wKTsKIH0KIAorLyogUGFyc2UgYSBgZGVjbHR5 cGUnIHR5cGUuIFJldHVybnMgdGhlIHR5cGUuIAorCisgICBzaW1wbGUtdHlw ZS1zcGVjaWZpZXI6CisgICAgIGRlY2x0eXBlICggZXhwcmVzc2lvbiApICAq LworCitzdGF0aWMgdHJlZQorY3BfcGFyc2VyX2RlY2x0eXBlIChjcF9wYXJz ZXIgKnBhcnNlcikKK3sKKyAgdHJlZSBleHByOworICBib29sIGlkX2V4cHJl c3Npb25fb3JfbWVtYmVyX2FjY2Vzc19wID0gZmFsc2U7CisgIGNvbnN0IGNo YXIgKnNhdmVkX21lc3NhZ2U7CisgIGJvb2wgc2F2ZWRfaW50ZWdyYWxfY29u c3RhbnRfZXhwcmVzc2lvbl9wOworICBib29sIHNhdmVkX25vbl9pbnRlZ3Jh bF9jb25zdGFudF9leHByZXNzaW9uX3A7CisKKyAgLyogTG9vayBmb3IgdGhl IGBkZWNsdHlwZScgdG9rZW4uICAqLworICBpZiAoIWNwX3BhcnNlcl9yZXF1 aXJlX2tleXdvcmQgKHBhcnNlciwgUklEX0RFQ0xUWVBFLCAiYGRlY2x0eXBl JyIpKQorICAgIHJldHVybiBlcnJvcl9tYXJrX25vZGU7CisKKyAgLyogVHlw ZXMgY2Fubm90IGJlIGRlZmluZWQgaW4gYSBgZGVjbHR5cGUnIGV4cHJlc3Np b24uICBTYXZlIGF3YXkgdGhlCisgICAgIG9sZCBtZXNzYWdlLiAgKi8KKyAg c2F2ZWRfbWVzc2FnZSA9IHBhcnNlci0+dHlwZV9kZWZpbml0aW9uX2ZvcmJp ZGRlbl9tZXNzYWdlOworCisgIC8qIEFuZCBjcmVhdGUgdGhlIG5ldyBvbmUu ICAqLworICBwYXJzZXItPnR5cGVfZGVmaW5pdGlvbl9mb3JiaWRkZW5fbWVz c2FnZQorICAgID0gInR5cGVzIG1heSBub3QgYmUgZGVmaW5lZCBpbiBgZGVj bHR5cGUnIGV4cHJlc3Npb25zIjsKKworICAvKiBUaGUgcmVzdHJpY3Rpb25z IG9uIGNvbnN0YW50LWV4cHJlc3Npb25zIGRvIG5vdCBhcHBseSBpbnNpZGUK KyAgICAgZGVjbHR5cGUgZXhwcmVzc2lvbnMuICAqLworICBzYXZlZF9pbnRl Z3JhbF9jb25zdGFudF9leHByZXNzaW9uX3AKKyAgICA9IHBhcnNlci0+aW50 ZWdyYWxfY29uc3RhbnRfZXhwcmVzc2lvbl9wOworICBzYXZlZF9ub25faW50 ZWdyYWxfY29uc3RhbnRfZXhwcmVzc2lvbl9wCisgICAgPSBwYXJzZXItPm5v bl9pbnRlZ3JhbF9jb25zdGFudF9leHByZXNzaW9uX3A7CisgIHBhcnNlci0+ aW50ZWdyYWxfY29uc3RhbnRfZXhwcmVzc2lvbl9wID0gZmFsc2U7CisKKyAg LyogRG8gbm90IGFjdHVhbGx5IGV2YWx1YXRlIHRoZSBleHByZXNzaW9uLiAg Ki8KKyAgKytza2lwX2V2YWx1YXRpb247CisKKyAgLyogUGFyc2UgdGhlIG9w ZW5pbmcgYCgnLiAgKi8KKyAgY3BfcGFyc2VyX3JlcXVpcmUgKHBhcnNlciwg Q1BQX09QRU5fUEFSRU4sICJgKCciKTsKKyAgCisgIC8qIEZpcnN0LCB0cnkg cGFyc2luZyBhbiBpZC1leHByZXNzaW9uLiAgKi8KKyAgY3BfcGFyc2VyX3Bh cnNlX3RlbnRhdGl2ZWx5IChwYXJzZXIpOworICBleHByID0gY3BfcGFyc2Vy X2lkX2V4cHJlc3Npb24gKHBhcnNlciwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAvKnRlbXBsYXRlX2tleXdvcmRfcD0qL2ZhbHNlLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qY2hlY2tfZGVw ZW5kZW5jeV9wPSovdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAvKnRlbXBsYXRlX3A9Ki9OVUxMLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC8qZGVjbGFyYXRvcl9wPSovZmFsc2UsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypvcHRpb25hbF9w PSovZmFsc2UpOworCisgIGlmICghY3BfcGFyc2VyX2Vycm9yX29jY3VycmVk IChwYXJzZXIpICYmIGV4cHIgIT0gZXJyb3JfbWFya19ub2RlKQorICAgIHsK KyAgICAgIGJvb2wgbm9uX2ludGVncmFsX2NvbnN0YW50X2V4cHJlc3Npb25f cCA9IGZhbHNlOworICAgICAgdHJlZSBpZF9leHByZXNzaW9uID0gZXhwcjsK KyAgICAgIGNwX2lkX2tpbmQgaWRrOworICAgICAgY29uc3QgY2hhciAqZXJy b3JfbXNnOworCisgICAgICAvKiBMb29rdXAgdGhlIG5hbWUgd2UgZ290IGJh Y2sgZnJvbSB0aGUgaWQtZXhwcmVzc2lvbi4gICovCisgICAgICBleHByID0g Y3BfcGFyc2VyX2xvb2t1cF9uYW1lIChwYXJzZXIsIGV4cHIsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub25lX3R5cGUsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKmlzX3RlbXBsYXRl PSovZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAvKmlzX25hbWVzcGFjZT0qL2ZhbHNlLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLypjaGVja19kZXBlbmRlbmN5PSovdHJ1ZSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qYW1iaWd1 b3VzX2RlY2xzPSovTlVMTCk7CisgICAgICAKKyAgICAgIGlmIChleHByIAor ICAgICAgICAgICYmIGV4cHIgIT0gZXJyb3JfbWFya19ub2RlCisgICAgICAg ICAgJiYgVFJFRV9DT0RFIChleHByKSAhPSBURU1QTEFURV9JRF9FWFBSCisg ICAgICAgICAgJiYgVFJFRV9DT0RFIChleHByKSAhPSBUWVBFX0RFQ0wKKyAg ICAgICAgICAmJiBjcF9sZXhlcl9wZWVrX3Rva2VuIChwYXJzZXItPmxleGVy KS0+dHlwZSA9PSBDUFBfQ0xPU0VfUEFSRU4pCisgICAgICAgIHsKKyAgICAg ICAgICAvKiBDb21wbGV0ZSBsb29rdXAgb2YgdGhlIGlkLWV4cHJlc3Npb24u ICAqLworICAgICAgICAgIGV4cHIgPSAoZmluaXNoX2lkX2V4cHJlc3Npb24K KyAgICAgICAgICAgICAgICAgIChpZF9leHByZXNzaW9uLCBleHByLCBwYXJz ZXItPnNjb3BlLCAmaWRrLAorICAgICAgICAgICAgICAgICAgIC8qaW50ZWdy YWxfY29uc3RhbnRfZXhwcmVzc2lvbl9wPSovZmFsc2UsCisgICAgICAgICAg ICAgICAgICAgLyphbGxvd19ub25faW50ZWdyYWxfY29uc3RhbnRfZXhwcmVz c2lvbl9wPSovdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAmbm9uX2ludGVn cmFsX2NvbnN0YW50X2V4cHJlc3Npb25fcCwKKyAgICAgICAgICAgICAgICAg ICAvKnRlbXBsYXRlX3A9Ki9mYWxzZSwKKyAgICAgICAgICAgICAgICAgICAv KmRvbmU9Ki90cnVlLAorICAgICAgICAgICAgICAgICAgIC8qYWRkcmVzc19w PSovZmFsc2UsCisgICAgICAgICAgICAgICAgICAgLyp0ZW1wbGF0ZV9hcmdf cD0qL2ZhbHNlLAorICAgICAgICAgICAgICAgICAgICZlcnJvcl9tc2cpKTsK KworICAgICAgICAgIGlmIChleHByID09IGVycm9yX21hcmtfbm9kZSkKKyAg ICAgICAgICAgIC8qIFdlIGZvdW5kIGFuIGlkLWV4cHJlc3Npb24sIGJ1dCBp dCB3YXMgc29tZXRoaW5nIHRoYXQgd2UKKyAgICAgICAgICAgICAgIHNob3Vs ZCBub3QgaGF2ZSBmb3VuZC4gVGhpcyBpcyBhbiBlcnJvciwgbm90IHNvbWV0 aGluZworICAgICAgICAgICAgICAgd2UgY2FuIHJlY292ZXIgZnJvbSwgc28g bm90ZSB0aGF0IHdlIGZvdW5kIGFuCisgICAgICAgICAgICAgICBpZC1leHBy ZXNzaW9uIGFuZCB3ZSdsbCByZWNvdmVyIGFzIGdyYWNlZnVsbHkgYXMKKyAg ICAgICAgICAgICAgIHBvc3NpYmxlLiAgKi8KKyAgICAgICAgICAgIGlkX2V4 cHJlc3Npb25fb3JfbWVtYmVyX2FjY2Vzc19wID0gdHJ1ZTsKKyAgICAgICAg fQorCisgICAgICBpZiAoZXhwciAKKyAgICAgICAgICAmJiBleHByICE9IGVy cm9yX21hcmtfbm9kZQorICAgICAgICAgICYmIGNwX2xleGVyX3BlZWtfdG9r ZW4gKHBhcnNlci0+bGV4ZXIpLT50eXBlID09IENQUF9DTE9TRV9QQVJFTikK KyAgICAgICAgLyogV2UgaGF2ZSBhbiBpZC1leHByZXNzaW9uLiAgKi8KKyAg ICAgICAgaWRfZXhwcmVzc2lvbl9vcl9tZW1iZXJfYWNjZXNzX3AgPSB0cnVl OworICAgIH0KKworICBpZiAoIWlkX2V4cHJlc3Npb25fb3JfbWVtYmVyX2Fj Y2Vzc19wKQorICAgIHsKKyAgICAgIC8qIEFib3J0IHRoZSBpZC1leHByZXNz aW9uIHBhcnNlLiAgKi8KKyAgICAgIGNwX3BhcnNlcl9hYm9ydF90ZW50YXRp dmVfcGFyc2UgKHBhcnNlcik7CisKKyAgICAgIC8qIFBhcnNpbmcgdGVudGF0 aXZlbHksIGFnYWluLiAgKi8KKyAgICAgIGNwX3BhcnNlcl9wYXJzZV90ZW50 YXRpdmVseSAocGFyc2VyKTsKKworICAgICAgLyogUGFyc2UgYSBjbGFzcyBt ZW1iZXIgYWNjZXNzLiAgKi8KKyAgICAgIGV4cHIgPSBjcF9wYXJzZXJfcG9z dGZpeF9leHByZXNzaW9uIChwYXJzZXIsIC8qYWRkcmVzc19wPSovZmFsc2Us CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LypjYXN0X3A9Ki9mYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAvKm1lbWJlcl9hY2Nlc3Nfb25seV9wPSovdHJ1 ZSk7CisKKyAgICAgIGlmIChleHByIAorICAgICAgICAgICYmIGV4cHIgIT0g ZXJyb3JfbWFya19ub2RlCisgICAgICAgICAgJiYgY3BfbGV4ZXJfcGVla190 b2tlbiAocGFyc2VyLT5sZXhlciktPnR5cGUgPT0gQ1BQX0NMT1NFX1BBUkVO KQorICAgICAgICAvKiBXZSBoYXZlIGFuIGlkLWV4cHJlc3Npb24uICAqLwor ICAgICAgICBpZF9leHByZXNzaW9uX29yX21lbWJlcl9hY2Nlc3NfcCA9IHRy dWU7CisgICAgfQorCisgIGlmIChpZF9leHByZXNzaW9uX29yX21lbWJlcl9h Y2Nlc3NfcCkKKyAgICAvKiBXZSBoYXZlIHBhcnNlZCB0aGUgY29tcGxldGUg aWQtZXhwcmVzc2lvbiBvciBtZW1iZXIgYWNjZXNzLiAgKi8KKyAgICBjcF9w YXJzZXJfcGFyc2VfZGVmaW5pdGVseSAocGFyc2VyKTsKKyAgZWxzZQorICAg IHsKKyAgICAgIC8qIEFib3J0IG91ciBhdHRlbXB0IHRvIHBhcnNlIGFuIGlk LWV4cHJlc3Npb24gb3IgbWVtYmVyIGFjY2VzcworICAgICAgICAgZXhwcmVz c2lvbi4gICovCisgICAgICBjcF9wYXJzZXJfYWJvcnRfdGVudGF0aXZlX3Bh cnNlIChwYXJzZXIpOworCisgICAgICAvKiBQYXJzZSBhIGZ1bGwgZXhwcmVz c2lvbi4gICovCisgICAgICBleHByID0gY3BfcGFyc2VyX2V4cHJlc3Npb24g KHBhcnNlciwgLypjYXN0X3A9Ki9mYWxzZSk7CisgICAgfQorCisgIC8qIEdv IGJhY2sgdG8gZXZhbHVhdGluZyBleHByZXNzaW9ucy4gICovCisgIC0tc2tp cF9ldmFsdWF0aW9uOworCisgIC8qIFJlc3RvcmUgdGhlIG9sZCBtZXNzYWdl IGFuZCB0aGUgaW50ZWdyYWwgY29uc3RhbnQgZXhwcmVzc2lvbgorICAgICBm bGFncy4gICovCisgIHBhcnNlci0+dHlwZV9kZWZpbml0aW9uX2ZvcmJpZGRl bl9tZXNzYWdlID0gc2F2ZWRfbWVzc2FnZTsKKyAgcGFyc2VyLT5pbnRlZ3Jh bF9jb25zdGFudF9leHByZXNzaW9uX3AKKyAgICA9IHNhdmVkX2ludGVncmFs X2NvbnN0YW50X2V4cHJlc3Npb25fcDsKKyAgcGFyc2VyLT5ub25faW50ZWdy YWxfY29uc3RhbnRfZXhwcmVzc2lvbl9wCisgICAgPSBzYXZlZF9ub25faW50 ZWdyYWxfY29uc3RhbnRfZXhwcmVzc2lvbl9wOworCisgIGlmIChleHByID09 IGVycm9yX21hcmtfbm9kZSkKKyAgICB7CisgICAgICAvKiBTa2lwIGV2ZXJ5 dGhpbmcgdXAgdG8gdGhlIGNsb3NpbmcgYCknLiAgKi8KKyAgICAgIGNwX3Bh cnNlcl9za2lwX3RvX2Nsb3NpbmdfcGFyZW50aGVzaXMgKHBhcnNlciwgdHJ1 ZSwgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAvKmNvbnN1bWVfcGFyZW49Ki90cnVlKTsKKyAgICAgIHJl dHVybiBlcnJvcl9tYXJrX25vZGU7CisgICAgfQorICAKKyAgLyogUGFyc2Ug dG8gdGhlIGNsb3NpbmcgYCknLiAgKi8KKyAgaWYgKCFjcF9wYXJzZXJfcmVx dWlyZSAocGFyc2VyLCBDUFBfQ0xPU0VfUEFSRU4sICJgKSciKSkKKyAgICBj cF9wYXJzZXJfc2tpcF90b19jbG9zaW5nX3BhcmVudGhlc2lzIChwYXJzZXIs IHRydWUsIGZhbHNlLAorCQkJCQkgICAvKmNvbnN1bWVfcGFyZW49Ki90cnVl KTsKKworICByZXR1cm4gZmluaXNoX2RlY2x0eXBlX3R5cGUgKGV4cHIsIGlk X2V4cHJlc3Npb25fb3JfbWVtYmVyX2FjY2Vzc19wKTsKK30KKwogLyogU3Bl Y2lhbCBtZW1iZXIgZnVuY3Rpb25zIFtncmFtLnNwZWNpYWxdICovCiAKIC8q IFBhcnNlIGEgY29udmVyc2lvbi1mdW5jdGlvbi1pZC4KQEAgLTEwNDM4LDYg KzEwNjE2LDExIEBAIGNwX3BhcnNlcl90eXBlX3NwZWNpZmllciAoY3BfcGFy c2VyKiBwYXIKICAgICAgZG91YmxlCiAgICAgIHZvaWQKIAorICAgQysrMHgg RXh0ZW5zaW9uOgorCisgICBzaW1wbGUtdHlwZS1zcGVjaWZpZXI6CisgICAg IGRlY2x0eXBlICggZXhwcmVzc2lvbiApICAgCisKICAgIEdOVSBFeHRlbnNp b246CiAKICAgIHNpbXBsZS10eXBlLXNwZWNpZmllcjoKQEAgLTEwNTA3LDYg KzEwNjkwLDE2IEBAIGNwX3BhcnNlcl9zaW1wbGVfdHlwZV9zcGVjaWZpZXIg KGNwX3BhcnMKICAgICAgIHR5cGUgPSB2b2lkX3R5cGVfbm9kZTsKICAgICAg IGJyZWFrOwogCisgICAgY2FzZSBSSURfREVDTFRZUEU6CisgICAgICAvKiBQ YXJzZSB0aGUgYGRlY2x0eXBlJyB0eXBlLiAgKi8KKyAgICAgIHR5cGUgPSBj cF9wYXJzZXJfZGVjbHR5cGUgKHBhcnNlcik7CisKKyAgICAgIGlmIChkZWNs X3NwZWNzKQorCWNwX3BhcnNlcl9zZXRfZGVjbF9zcGVjX3R5cGUgKGRlY2xf c3BlY3MsIHR5cGUsCisJCQkJICAgICAgLyp1c2VyX2RlZmluZWRfcD0qL3Ry dWUpOworCisgICAgICByZXR1cm4gdHlwZTsKKwogICAgIGNhc2UgUklEX1RZ UEVPRjoKICAgICAgIC8qIENvbnN1bWUgdGhlIGB0eXBlb2YnIHRva2VuLiAg Ki8KICAgICAgIGNwX2xleGVyX2NvbnN1bWVfdG9rZW4gKHBhcnNlci0+bGV4 ZXIpOwpJbmRleDogYy1jb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBjLWNvbW1vbi5oCShyZXZpc2lvbiAxMjY5NjEpCisrKyBjLWNvbW1v bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNyArMTAxLDcgQEAgZW51bSBy aWQKICAgUklEX0lTX1VOSU9OLAogCiAgIC8qIEMrKzB4ICovCi0gIFJJRF9T VEFUSUNfQVNTRVJULAorICBSSURfU1RBVElDX0FTU0VSVCwgUklEX0RFQ0xU WVBFLAogCiAgIC8qIE9iamVjdGl2ZS1DICovCiAgIFJJRF9BVF9FTkNPREUs ICAgUklEX0FUX0VORCwKQEAgLTExOSw3ICsxMTksNyBAQCBlbnVtIHJpZAog ICBSSURfTEFTVF9NT0RJRklFUiA9IFJJRF9PTkVXQVksCiAKICAgUklEX0ZJ UlNUX0NYWDBYID0gUklEX1NUQVRJQ19BU1NFUlQsCi0gIFJJRF9MQVNUX0NY WDBYID0gUklEX1NUQVRJQ19BU1NFUlQsCisgIFJJRF9MQVNUX0NYWDBYID0g UklEX0RFQ0xUWVBFLAogICBSSURfRklSU1RfQVQgPSBSSURfQVRfRU5DT0RF LAogICBSSURfTEFTVF9BVCA9IFJJRF9BVF9JTVBMRU1FTlRBVElPTiwKICAg UklEX0ZJUlNUX1BRID0gUklEX0lOLAo= ------=_Part_5572_16541918.1185555304785--