From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7815 invoked by alias); 1 Nov 2010 08:16:49 -0000 Received: (qmail 7802 invoked by uid 22791); 1 Nov 2010 08:16:45 -0000 X-SWARE-Spam-Status: No, hits=-0.9 required=5.0 tests=AWL,BAYES_05,TW_TM,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mtagate2.de.ibm.com (HELO mtagate2.de.ibm.com) (195.212.17.162) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 01 Nov 2010 08:16:37 +0000 Received: from d12nrmr1707.megacenter.de.ibm.com (d12nrmr1707.megacenter.de.ibm.com [9.149.167.81]) by mtagate2.de.ibm.com (8.13.1/8.13.1) with ESMTP id oA18GYB0004611 for ; Mon, 1 Nov 2010 08:16:34 GMT Received: from d12av05.megacenter.de.ibm.com (d12av05.megacenter.de.ibm.com [9.149.165.216]) by d12nrmr1707.megacenter.de.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id oA18GYUc3166278 for ; Mon, 1 Nov 2010 09:16:34 +0100 Received: from d12av05.megacenter.de.ibm.com (loopback [127.0.0.1]) by d12av05.megacenter.de.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id oA18GXaC015969 for ; Mon, 1 Nov 2010 09:16:33 +0100 Received: from d12mc102.megacenter.de.ibm.com (d12nrml1506.megacenter.de.ibm.com [9.149.165.56] (may be forged)) by d12av05.megacenter.de.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id oA18GXeZ015966 for ; Mon, 1 Nov 2010 09:16:33 +0100 Subject: [patch] Fix PR tree-optimization/45902 on 4.5 X-KeepSent: 76F885DF:6A88C4F5-C22577CB:006A94FF; type=4; name=$KeepSent To: gcc-patches@gcc.gnu.org Message-ID: From: Ira Rosen Date: Mon, 01 Nov 2010 08:19:00 -0000 MIME-Version: 1.0 Content-type: multipart/mixed; Boundary="0__=4DBBFD58DFF9126F8f9e8a93df938690918c4DBBFD58DFF9126F" Content-Disposition: inline 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: 2010-11/txt/msg00018.txt.bz2 --0__=4DBBFD58DFF9126F8f9e8a93df938690918c4DBBFD58DFF9126F Content-type: text/plain; charset=US-ASCII Content-length: 1213 Hi, This patch fixes pr45902 on 4.5 similar to http://gcc.gnu.org/ml/gcc-patches/2010-10/msg01820.html. Bootstrapped and tested on powerpc64-suse-linux. OK for 4.5? Thanks, Ira ChangeLog: PR tree-optimization/45902 * tree-vectorizer.h (enum stmt_vec_info_type): Add new value for shift. (vect_get_slp_defs): Add arguments. * tree-vect-stmts.c (cost_for_stmt): Handle shifts. (vect_get_vec_def_for_operand): Use operand's type to determine number of units in the created vector. (vect_get_vec_defs): Pass scalar operands to vect_get_slp_defs. (vectorizable_shift): New function. (vectorizable_operation): Move code that handles shifts to vectorizable_shift. (vectorizable_type_demotion): Pass scalar operands to vect_get_slp_defs. (vectorizable_type_promotion, vectorizable_store): Likewise. (vect_analyze_stmt): Call vectorizable_shift. (vect_transform_stmt): Likewise. * tree-vect-slp.c (vect_get_constant_vectors): Add new argument. Use it as the operand to create vectors except for stores. (vect_get_slp_defs): Add new arguments. Pass them to vect_get_constant_vectors. testsuite/ChangeLog: PR tree-optimization/45902 * gcc.dg/vect/pr45902.c: New. (See attached file: patch.txt) --0__=4DBBFD58DFF9126F8f9e8a93df938690918c4DBBFD58DFF9126F Content-type: text/plain; name="patch.txt" Content-Disposition: attachment; filename="patch.txt" Content-transfer-encoding: base64 Content-length: 32379 SW5kZXg6IHRlc3RzdWl0ZS9nY2MuZGcvdmVjdC9wcjQ1OTAyLmMKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0gdGVzdHN1aXRlL2djYy5kZy92ZWN0L3By NDU5MDIuYwkocmV2aXNpb24gMCkKKysrIHRlc3RzdWl0ZS9nY2MuZGcvdmVj dC9wcjQ1OTAyLmMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDMgQEAKKy8q IHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IHZlY3RfaW50IH0gKi8K KworI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgor I2luY2x1ZGUgInRyZWUtdmVjdC5oIgorCisjZGVmaW5lIE4gMTI4CisKK3No b3J0IHJlc1tOXTsKK3Nob3J0IGFbTl07CisKK2ludAorbWFpbjEgKCkKK3sK KyAgaW50IGk7CisKKyAgZm9yIChpID0gMDsgaSA8IE4vNDsgaSs9NCkKKyAg ICB7CisgICAgICByZXNbaV0gPSBhW2ldID4+IDg7CisgICAgICByZXNbaSsx XSA9IGFbaSsxXSA+PiA4OworICAgICAgcmVzW2krMl0gPSBhW2krMl0gPj4g ODsKKyAgICAgIHJlc1tpKzNdID0gYVtpKzNdID4+IDg7CisgICAgfQorfQor CitpbnQKK21haW4gKCkKK3sKKyAgaW50IGk7CisKKyAgZm9yIChpID0gMDsg aSA8IE47IGkrKykKKyAgICBhW2ldID0gaTsKKworICBtYWluMSAoKTsKKwor ICBmb3IgKGkgPSAwOyBpIDwgTjsgaSsrKQorICAgIGlmIChyZXNbaV0gIT0g YVtpXSA+PiA4KQorICAgICAgYWJvcnQgKCk7CisKKyAgcmV0dXJuIDA7Cit9 CisKKy8qIHsgZGctZmluYWwgeyBjbGVhbnVwLXRyZWUtZHVtcCAidmVjdCIg fSB9ICovCkluZGV4OiB0cmVlLXZlY3Rvcml6ZXIuaAo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLSB0cmVlLXZlY3Rvcml6ZXIuaAkocmV2aXNpb24gMTY2 MDY1KQorKysgdHJlZS12ZWN0b3JpemVyLmgJKHdvcmtpbmcgY29weSkKQEAg LTMyOSw2ICszMjksNyBAQCBlbnVtIHN0bXRfdmVjX2luZm9fdHlwZSB7CiAg IHVuZGVmX3ZlY19pbmZvX3R5cGUgPSAwLAogICBsb2FkX3ZlY19pbmZvX3R5 cGUsCiAgIHN0b3JlX3ZlY19pbmZvX3R5cGUsCisgIHNoaWZ0X3ZlY19pbmZv X3R5cGUsCiAgIG9wX3ZlY19pbmZvX3R5cGUsCiAgIGNhbGxfdmVjX2luZm9f dHlwZSwKICAgYXNzaWdubWVudF92ZWNfaW5mb190eXBlLApAQCAtODU0LDcg Kzg1NSw3IEBAIGV4dGVybiB2b2lkIHZlY3RfdXBkYXRlX3NscF9jb3N0c19h Y2NvcmRpbmdfdG9fdmYKIGV4dGVybiBib29sIHZlY3RfYW5hbHl6ZV9zbHAg KGxvb3BfdmVjX2luZm8sIGJiX3ZlY19pbmZvKTsKIGV4dGVybiB2b2lkIHZl Y3RfbWFrZV9zbHBfZGVjaXNpb24gKGxvb3BfdmVjX2luZm8pOwogZXh0ZXJu IHZvaWQgdmVjdF9kZXRlY3RfaHlicmlkX3NscCAobG9vcF92ZWNfaW5mbyk7 Ci1leHRlcm4gdm9pZCB2ZWN0X2dldF9zbHBfZGVmcyAoc2xwX3RyZWUsIFZF QyAodHJlZSxoZWFwKSAqKiwKK2V4dGVybiB2b2lkIHZlY3RfZ2V0X3NscF9k ZWZzICh0cmVlLCB0cmVlLCBzbHBfdHJlZSwgVkVDICh0cmVlLGhlYXApICoq LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZFQyAodHJlZSxo ZWFwKSAqKik7CiBleHRlcm4gTE9DIGZpbmRfYmJfbG9jYXRpb24gKGJhc2lj X2Jsb2NrKTsKIGV4dGVybiBiYl92ZWNfaW5mbyB2ZWN0X3NscF9hbmFseXpl X2JiIChiYXNpY19ibG9jayk7CkluZGV4OiB0cmVlLXZlY3Qtc3RtdHMuYwo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0cmVlLXZlY3Qtc3RtdHMuYwko cmV2aXNpb24gMTY2MDY1KQorKysgdHJlZS12ZWN0LXN0bXRzLmMJKHdvcmtp bmcgY29weSkKQEAgLTU1NSw2ICs1NTUsNyBAQCBjb3N0X2Zvcl9zdG10IChn aW1wbGUgc3RtdCkKICAgICByZXR1cm4gVEFSR19TQ0FMQVJfTE9BRF9DT1NU OwogICBjYXNlIHN0b3JlX3ZlY19pbmZvX3R5cGU6CiAgICAgcmV0dXJuIFRB UkdfU0NBTEFSX1NUT1JFX0NPU1Q7CisgIGNhc2Ugc2hpZnRfdmVjX2luZm9f dHlwZToKICAgY2FzZSBvcF92ZWNfaW5mb190eXBlOgogICBjYXNlIGNvbmRp dGlvbl92ZWNfaW5mb190eXBlOgogICBjYXNlIGFzc2lnbm1lbnRfdmVjX2lu Zm9fdHlwZToKQEAgLTg4OSw4ICs4OTAsNyBAQCB2ZWN0X2dldF92ZWNfZGVm X2Zvcl9vcGVyYW5kICh0cmVlIG9wLCBnaW1wbGUgc3RtdAogICBnaW1wbGUg ZGVmX3N0bXQ7CiAgIHN0bXRfdmVjX2luZm8gZGVmX3N0bXRfaW5mbyA9IE5V TEw7CiAgIHN0bXRfdmVjX2luZm8gc3RtdF92aW5mbyA9IHZpbmZvX2Zvcl9z dG10IChzdG10KTsKLSAgdHJlZSB2ZWN0eXBlID0gU1RNVF9WSU5GT19WRUNU WVBFIChzdG10X3ZpbmZvKTsKLSAgdW5zaWduZWQgaW50IG51bml0cyA9IFRZ UEVfVkVDVE9SX1NVQlBBUlRTICh2ZWN0eXBlKTsKKyAgdW5zaWduZWQgaW50 IG51bml0czsKICAgbG9vcF92ZWNfaW5mbyBsb29wX3ZpbmZvID0gU1RNVF9W SU5GT19MT09QX1ZJTkZPIChzdG10X3ZpbmZvKTsKICAgdHJlZSB2ZWNfaW52 OwogICB0cmVlIHZlY19jc3Q7CkBAIC05MzEsNiArOTMxLDcgQEAgdmVjdF9n ZXRfdmVjX2RlZl9mb3Jfb3BlcmFuZCAodHJlZSBvcCwgZ2ltcGxlIHN0bXQK ICAgICAgIHsKIAl2ZWN0b3JfdHlwZSA9IGdldF92ZWN0eXBlX2Zvcl9zY2Fs YXJfdHlwZSAoVFJFRV9UWVBFIChvcCkpOwogCWdjY19hc3NlcnQgKHZlY3Rv cl90eXBlKTsKKwludW5pdHMgPSBUWVBFX1ZFQ1RPUl9TVUJQQVJUUyAodmVj dG9yX3R5cGUpOwogCiAJaWYgKHNjYWxhcl9kZWYpCiAJICAqc2NhbGFyX2Rl ZiA9IG9wOwpAQCAtMTEzNCw3ICsxMTM1LDcgQEAgdmVjdF9nZXRfdmVjX2Rl ZnMgKHRyZWUgb3AwLCB0cmVlIG9wMSwgZ2ltcGxlIHN0bXQKIAkJICAgc2xw X3RyZWUgc2xwX25vZGUpCiB7CiAgIGlmIChzbHBfbm9kZSkKLSAgICB2ZWN0 X2dldF9zbHBfZGVmcyAoc2xwX25vZGUsIHZlY19vcHJuZHMwLCB2ZWNfb3By bmRzMSk7CisgICAgdmVjdF9nZXRfc2xwX2RlZnMgKG9wMCwgb3AxLCBzbHBf bm9kZSwgdmVjX29wcm5kczAsIHZlY19vcHJuZHMxKTsKICAgZWxzZQogICAg IHsKICAgICAgIHRyZWUgdmVjX29wcm5kOwpAQCAtMTkyMiw2ICsxOTIzLDI5 NiBAQCB2ZWN0b3JpemFibGVfYXNzaWdubWVudCAoZ2ltcGxlIHN0bXQsIGdp bXBsZV9zdG10XwogICByZXR1cm4gdHJ1ZTsKIH0KIAorCisvKiBGdW5jdGlv biB2ZWN0b3JpemFibGVfc2hpZnQuCisKKyAgIENoZWNrIGlmIFNUTVQgcGVy Zm9ybXMgYSBzaGlmdCBvcGVyYXRpb24gdGhhdCBjYW4gYmUgdmVjdG9yaXpl ZC4KKyAgIElmIFZFQ19TVE1UIGlzIGFsc28gcGFzc2VkLCB2ZWN0b3JpemUg dGhlIFNUTVQ6IGNyZWF0ZSBhIHZlY3Rvcml6ZWQKKyAgIHN0bXQgdG8gcmVw bGFjZSBpdCwgcHV0IGl0IGluIFZFQ19TVE1ULCBhbmQgaW5zZXJ0IGl0IGF0 IEJTSS4KKyAgIFJldHVybiBGQUxTRSBpZiBub3QgYSB2ZWN0b3JpemFibGUg U1RNVCwgVFJVRSBvdGhlcndpc2UuICAqLworCitzdGF0aWMgYm9vbAordmVj dG9yaXphYmxlX3NoaWZ0IChnaW1wbGUgc3RtdCwgZ2ltcGxlX3N0bXRfaXRl cmF0b3IgKmdzaSwKKyAgICAgICAgICAgICAgICAgICAgZ2ltcGxlICp2ZWNf c3RtdCwgc2xwX3RyZWUgc2xwX25vZGUpCit7CisgIHRyZWUgdmVjX2Rlc3Q7 CisgIHRyZWUgc2NhbGFyX2Rlc3Q7CisgIHRyZWUgb3AwLCBvcDEgPSBOVUxM OworICB0cmVlIHZlY19vcHJuZDEgPSBOVUxMX1RSRUU7CisgIHN0bXRfdmVj X2luZm8gc3RtdF9pbmZvID0gdmluZm9fZm9yX3N0bXQgKHN0bXQpOworICB0 cmVlIHZlY3R5cGUgPSBTVE1UX1ZJTkZPX1ZFQ1RZUEUgKHN0bXRfaW5mbyk7 CisgIGxvb3BfdmVjX2luZm8gbG9vcF92aW5mbyA9IFNUTVRfVklORk9fTE9P UF9WSU5GTyAoc3RtdF9pbmZvKTsKKyAgZW51bSB0cmVlX2NvZGUgY29kZTsK KyAgZW51bSBtYWNoaW5lX21vZGUgdmVjX21vZGU7CisgIHRyZWUgbmV3X3Rl bXA7CisgIGludCBvcF90eXBlOworICBvcHRhYiBvcHRhYjsKKyAgaW50IGlj b2RlOworICBlbnVtIG1hY2hpbmVfbW9kZSBvcHRhYl9vcDJfbW9kZTsKKyAg dHJlZSBkZWY7CisgIGdpbXBsZSBkZWZfc3RtdDsKKyAgZW51bSB2ZWN0X2Rl Zl90eXBlIGR0WzJdID0ge3ZlY3RfdW5rbm93bl9kZWZfdHlwZSwgdmVjdF91 bmtub3duX2RlZl90eXBlfTsKKyAgZ2ltcGxlIG5ld19zdG10ID0gTlVMTDsK KyAgc3RtdF92ZWNfaW5mbyBwcmV2X3N0bXRfaW5mbzsKKyAgaW50IG51bml0 c19pbiA9IFRZUEVfVkVDVE9SX1NVQlBBUlRTICh2ZWN0eXBlKTsKKyAgaW50 IG51bml0c19vdXQ7CisgIHRyZWUgdmVjdHlwZV9vdXQ7CisgIGludCBuY29w aWVzOworICBpbnQgaiwgaTsKKyAgVkVDICh0cmVlLCBoZWFwKSAqdmVjX29w cm5kczAgPSBOVUxMLCAqdmVjX29wcm5kczEgPSBOVUxMOworICB0cmVlIHZv cDAsIHZvcDE7CisgIHVuc2lnbmVkIGludCBrOworICBib29sIHNjYWxhcl9z aGlmdF9hcmcgPSBmYWxzZTsKKyAgYmJfdmVjX2luZm8gYmJfdmluZm8gPSBT VE1UX1ZJTkZPX0JCX1ZJTkZPIChzdG10X2luZm8pOworICBpbnQgdmY7CisK KyAgaWYgKGxvb3BfdmluZm8pCisgICAgdmYgPSBMT09QX1ZJTkZPX1ZFQ1Rf RkFDVE9SIChsb29wX3ZpbmZvKTsKKyAgZWxzZQorICAgIHZmID0gMTsKKwor ICAvKiBNdWx0aXBsZSB0eXBlcyBpbiBTTFAgYXJlIGhhbmRsZWQgYnkgY3Jl YXRpbmcgdGhlIGFwcHJvcHJpYXRlIG51bWJlciBvZgorICAgICB2ZWN0b3Jp emVkIHN0bXRzIGZvciBlYWNoIFNMUCBub2RlLiAgSGVuY2UsIE5DT1BJRVMg aXMgYWx3YXlzIDEgaW4KKyAgICAgY2FzZSBvZiBTTFAuICAqLworICBpZiAo c2xwX25vZGUpCisgICAgbmNvcGllcyA9IDE7CisgIGVsc2UKKyAgICBuY29w aWVzID0gTE9PUF9WSU5GT19WRUNUX0ZBQ1RPUiAobG9vcF92aW5mbykgLyBu dW5pdHNfaW47CisKKyAgZ2NjX2Fzc2VydCAobmNvcGllcyA+PSAxKTsKKwor ICBpZiAoIVNUTVRfVklORk9fUkVMRVZBTlRfUCAoc3RtdF9pbmZvKSAmJiAh YmJfdmluZm8pCisgICAgcmV0dXJuIGZhbHNlOworCisgIGlmIChTVE1UX1ZJ TkZPX0RFRl9UWVBFIChzdG10X2luZm8pICE9IHZlY3RfaW50ZXJuYWxfZGVm KQorICAgIHJldHVybiBmYWxzZTsKKworICAvKiBJcyBTVE1UIGEgdmVjdG9y aXphYmxlIHNoaWZ0PyAgKi8KKyAgaWYgKCFpc19naW1wbGVfYXNzaWduIChz dG10KSkKKyAgICByZXR1cm4gZmFsc2U7CisKKyAgaWYgKFRSRUVfQ09ERSAo Z2ltcGxlX2Fzc2lnbl9saHMgKHN0bXQpKSAhPSBTU0FfTkFNRSkKKyAgICBy ZXR1cm4gZmFsc2U7CisKKyAgc2NhbGFyX2Rlc3QgPSBnaW1wbGVfYXNzaWdu X2xocyAoc3RtdCk7CisgIHZlY3R5cGVfb3V0ID0gZ2V0X3ZlY3R5cGVfZm9y X3NjYWxhcl90eXBlIChUUkVFX1RZUEUgKHNjYWxhcl9kZXN0KSk7CisgIGlm ICghdmVjdHlwZV9vdXQpCisgICAgcmV0dXJuIGZhbHNlOworICBudW5pdHNf b3V0ID0gVFlQRV9WRUNUT1JfU1VCUEFSVFMgKHZlY3R5cGVfb3V0KTsKKyAg aWYgKG51bml0c19vdXQgIT0gbnVuaXRzX2luKQorICAgIHJldHVybiBmYWxz ZTsKKworICBjb2RlID0gZ2ltcGxlX2Fzc2lnbl9yaHNfY29kZSAoc3RtdCk7 CisKKyAgaWYgKCEoY29kZSA9PSBMU0hJRlRfRVhQUiB8fCBjb2RlID09IFJT SElGVF9FWFBSIHx8IGNvZGUgPT0gTFJPVEFURV9FWFBSCisgICAgICAgIHx8 IGNvZGUgPT0gUlJPVEFURV9FWFBSKSkKKyAgICByZXR1cm4gZmFsc2U7CisK KyAgb3BfdHlwZSA9IFRSRUVfQ09ERV9MRU5HVEggKGNvZGUpOworICBvcDAg PSBnaW1wbGVfYXNzaWduX3JoczEgKHN0bXQpOworICBpZiAoIXZlY3RfaXNf c2ltcGxlX3VzZSAob3AwLCBsb29wX3ZpbmZvLCBiYl92aW5mbywgJmRlZl9z dG10LCAmZGVmLCAmZHRbMF0pKQorICAgIHsKKyAgICAgIGlmICh2ZWN0X3By aW50X2R1bXBfaW5mbyAoUkVQT1JUX0RFVEFJTFMpKQorICAgICAgICBmcHJp bnRmICh2ZWN0X2R1bXAsICJ1c2Ugbm90IHNpbXBsZS4iKTsKKyAgICAgIHJl dHVybiBmYWxzZTsKKyAgICB9CisKKyAgb3AxID0gZ2ltcGxlX2Fzc2lnbl9y aHMyIChzdG10KTsKKyAgaWYgKCF2ZWN0X2lzX3NpbXBsZV91c2UgKG9wMSwg bG9vcF92aW5mbywgYmJfdmluZm8sICZkZWZfc3RtdCwgJmRlZiwgJmR0WzFd KSkKKyAgICB7CisgICAgICBpZiAodmVjdF9wcmludF9kdW1wX2luZm8gKFJF UE9SVF9ERVRBSUxTKSkKKyAgICAgICAgZnByaW50ZiAodmVjdF9kdW1wLCAi dXNlIG5vdCBzaW1wbGUuIik7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAg fQorCisgIC8qIERldGVybWluZSB3aGV0aGVyIHRoZSBzaGlmdCBhbW91bnQg aXMgYSB2ZWN0b3IsIG9yIHNjYWxhci4gIElmIHRoZQorICAgICBzaGlmdC9y b3RhdGUgYW1vdW50IGlzIGEgdmVjdG9yLCB1c2UgdGhlIHZlY3Rvci92ZWN0 b3Igc2hpZnQgb3B0YWJzLiAgKi8KKyAgLyogVmVjdG9yIHNoaWZ0ZWQgYnkg dmVjdG9yLiAgKi8KKyAgaWYgKGR0WzFdID09IHZlY3RfaW50ZXJuYWxfZGVm KQorICAgIHsKKyAgICAgIG9wdGFiID0gb3B0YWJfZm9yX3RyZWVfY29kZSAo Y29kZSwgdmVjdHlwZSwgb3B0YWJfdmVjdG9yKTsKKyAgICAgIGlmICh2ZWN0 X3ByaW50X2R1bXBfaW5mbyAoUkVQT1JUX0RFVEFJTFMpKQorICAgICAgICBm cHJpbnRmICh2ZWN0X2R1bXAsICJ2ZWN0b3IvdmVjdG9yIHNoaWZ0L3JvdGF0 ZSBmb3VuZC4iKTsKKyAgICB9CisKKyAgLyogU2VlIGlmIHRoZSBtYWNoaW5l IGhhcyBhIHZlY3RvciBzaGlmdGVkIGJ5IHNjYWxhciBpbnNuIGFuZCBpZiBu b3QKKyAgICAgdGhlbiBzZWUgaWYgaXQgaGFzIGEgdmVjdG9yIHNoaWZ0ZWQg YnkgdmVjdG9yIGluc24uICAqLworICBlbHNlIGlmIChkdFsxXSA9PSB2ZWN0 X2NvbnN0YW50X2RlZiB8fCBkdFsxXSA9PSB2ZWN0X2V4dGVybmFsX2RlZikK KyAgICB7CisgICAgICBvcHRhYiA9IG9wdGFiX2Zvcl90cmVlX2NvZGUgKGNv ZGUsIHZlY3R5cGUsIG9wdGFiX3NjYWxhcik7CisgICAgICBpZiAob3B0YWIK KyAgICAgICAgICAmJiAob3B0YWJfaGFuZGxlciAob3B0YWIsIFRZUEVfTU9E RSAodmVjdHlwZSkpLT5pbnNuX2NvZGUKKyAgICAgICAgICAgICAgIT0gQ09E RV9GT1Jfbm90aGluZykpCisgICAgICAgIHsKKyAgICAgICAgICBzY2FsYXJf c2hpZnRfYXJnID0gdHJ1ZTsKKyAgICAgICAgICBpZiAodmVjdF9wcmludF9k dW1wX2luZm8gKFJFUE9SVF9ERVRBSUxTKSkKKyAgICAgICAgICAgIGZwcmlu dGYgKHZlY3RfZHVtcCwgInZlY3Rvci9zY2FsYXIgc2hpZnQvcm90YXRlIGZv dW5kLiIpOworICAgICAgICB9CisgICAgICBlbHNlCisgICAgICAgIHsKKyAg ICAgICAgICBvcHRhYiA9IG9wdGFiX2Zvcl90cmVlX2NvZGUgKGNvZGUsIHZl Y3R5cGUsIG9wdGFiX3ZlY3Rvcik7CisgICAgICAgICAgaWYgKG9wdGFiCisg ICAgICAgICAgICAgICYmIChvcHRhYl9oYW5kbGVyIChvcHRhYiwgVFlQRV9N T0RFICh2ZWN0eXBlKSktPmluc25fY29kZQorICAgICAgICAgICAgICAgICAg IT0gQ09ERV9GT1Jfbm90aGluZykpCisgICAgICAgICAgICB7CisgICAgICAg ICAgICAgIGlmICh2ZWN0X3ByaW50X2R1bXBfaW5mbyAoUkVQT1JUX0RFVEFJ TFMpKQorICAgICAgICAgICAgICAgIGZwcmludGYgKHZlY3RfZHVtcCwgInZl Y3Rvci92ZWN0b3Igc2hpZnQvcm90YXRlIGZvdW5kLiIpOworCisgICAgICAg ICAgICAgIC8qIFVubGlrZSB0aGUgb3RoZXIgYmluYXJ5IG9wZXJhdG9ycywg c2hpZnRzL3JvdGF0ZXMgaGF2ZQorICAgICAgICAgICAgICAgICB0aGUgcmhz IGJlaW5nIGludCwgaW5zdGVhZCBvZiB0aGUgc2FtZSB0eXBlIGFzIHRoZSBs aHMsCisgICAgICAgICAgICAgICAgIHNvIG1ha2Ugc3VyZSB0aGUgc2NhbGFy IGlzIHRoZSByaWdodCB0eXBlIGlmIHdlIGFyZQorICAgICAgICAgICAgICAg ICBkZWFsaW5nIHdpdGggdmVjdG9ycyBvZiBzaG9ydC9jaGFyLiAgKi8KKyAg ICAgICAgICAgICAgaWYgKGR0WzFdID09IHZlY3RfY29uc3RhbnRfZGVmKQor ICAgICAgICAgICAgICAgIG9wMSA9IGZvbGRfY29udmVydCAoVFJFRV9UWVBF ICh2ZWN0eXBlKSwgb3AxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor ICAgIH0KKworICBlbHNlCisgICAgeworICAgICAgaWYgKHZlY3RfcHJpbnRf ZHVtcF9pbmZvIChSRVBPUlRfREVUQUlMUykpCisgICAgICAgIGZwcmludGYg KHZlY3RfZHVtcCwgIm9wZXJhbmQgbW9kZSByZXF1aXJlcyBpbnZhcmlhbnQg YXJndW1lbnQuIik7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg IC8qIFN1cHBvcnRhYmxlIGJ5IHRhcmdldD8gICovCisgIGlmICghb3B0YWIp CisgICAgeworICAgICAgaWYgKHZlY3RfcHJpbnRfZHVtcF9pbmZvIChSRVBP UlRfREVUQUlMUykpCisgICAgICAgIGZwcmludGYgKHZlY3RfZHVtcCwgIm5v IG9wdGFiLiIpOworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgdmVj X21vZGUgPSBUWVBFX01PREUgKHZlY3R5cGUpOworICBpY29kZSA9IChpbnQp IG9wdGFiX2hhbmRsZXIgKG9wdGFiLCB2ZWNfbW9kZSktPmluc25fY29kZTsK KyAgaWYgKGljb2RlID09IENPREVfRk9SX25vdGhpbmcpCisgICAgeworICAg ICAgaWYgKHZlY3RfcHJpbnRfZHVtcF9pbmZvIChSRVBPUlRfREVUQUlMUykp CisgICAgICAgIGZwcmludGYgKHZlY3RfZHVtcCwgIm9wIG5vdCBzdXBwb3J0 ZWQgYnkgdGFyZ2V0LiIpOworICAgICAgLyogQ2hlY2sgb25seSBkdXJpbmcg YW5hbHlzaXMuICAqLworICAgICAgaWYgKEdFVF9NT0RFX1NJWkUgKHZlY19t b2RlKSAhPSBVTklUU19QRVJfV09SRAorICAgICAgICAgIHx8ICh2ZiA8IHZl Y3RfbWluX3dvcnRod2hpbGVfZmFjdG9yIChjb2RlKQorICAgICAgICAgICAg ICAmJiAhdmVjX3N0bXQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg ICBpZiAodmVjdF9wcmludF9kdW1wX2luZm8gKFJFUE9SVF9ERVRBSUxTKSkK KyAgICAgICAgZnByaW50ZiAodmVjdF9kdW1wLCAicHJvY2VlZGluZyB1c2lu ZyB3b3JkIG1vZGUuIik7CisgICAgfQorCisgIC8qIFdvcnRod2hpbGUgd2l0 aG91dCBTSU1EIHN1cHBvcnQ/IENoZWNrIG9ubHkgZHVyaW5nIGFuYWx5c2lz LiAgKi8KKyAgaWYgKCFWRUNUT1JfTU9ERV9QIChUWVBFX01PREUgKHZlY3R5 cGUpKQorICAgICAgJiYgdmYgPCB2ZWN0X21pbl93b3J0aHdoaWxlX2ZhY3Rv ciAoY29kZSkKKyAgICAgICYmICF2ZWNfc3RtdCkKKyAgICB7CisgICAgICBp ZiAodmVjdF9wcmludF9kdW1wX2luZm8gKFJFUE9SVF9ERVRBSUxTKSkKKyAg ICAgICAgZnByaW50ZiAodmVjdF9kdW1wLCAibm90IHdvcnRod2hpbGUgd2l0 aG91dCBTSU1EIHN1cHBvcnQuIik7CisgICAgICByZXR1cm4gZmFsc2U7Cisg ICAgfQorCisgIGlmICghdmVjX3N0bXQpIC8qIHRyYW5zZm9ybWF0aW9uIG5v dCByZXF1aXJlZC4gICovCisgICAgeworICAgICAgU1RNVF9WSU5GT19UWVBF IChzdG10X2luZm8pID0gc2hpZnRfdmVjX2luZm9fdHlwZTsKKyAgICAgIGlm ICh2ZWN0X3ByaW50X2R1bXBfaW5mbyAoUkVQT1JUX0RFVEFJTFMpKQorICAg ICAgICBmcHJpbnRmICh2ZWN0X2R1bXAsICI9PT0gdmVjdG9yaXphYmxlX3No aWZ0ID09PSIpOworICAgICAgdmVjdF9tb2RlbF9zaW1wbGVfY29zdCAoc3Rt dF9pbmZvLCBuY29waWVzLCBkdCwgTlVMTCk7CisgICAgICByZXR1cm4gdHJ1 ZTsKKyAgICB9CisKKyAgLyoqIFRyYW5zZm9ybS4gICoqLworCisgIGlmICh2 ZWN0X3ByaW50X2R1bXBfaW5mbyAoUkVQT1JUX0RFVEFJTFMpKQorICAgIGZw cmludGYgKHZlY3RfZHVtcCwgInRyYW5zZm9ybSBzaGlmdC4iKTsKKworICAv KiBIYW5kbGUgZGVmLiAgKi8KKyAgdmVjX2Rlc3QgPSB2ZWN0X2NyZWF0ZV9k ZXN0aW5hdGlvbl92YXIgKHNjYWxhcl9kZXN0LCB2ZWN0eXBlKTsKKworICAv KiBBbGxvY2F0ZSBWRUNzIGZvciB2ZWN0b3Igb3BlcmFuZHMuICBJbiBjYXNl IG9mIFNMUCwgdmVjdG9yIG9wZXJhbmRzIGFyZQorICAgICBjcmVhdGVkIGlu IHRoZSBwcmV2aW91cyBzdGFnZXMgb2YgdGhlIHJlY3Vyc2lvbiwgc28gbm8g YWxsb2NhdGlvbiBpcworICAgICBuZWVkZWQsIGV4Y2VwdCBmb3IgdGhlIGNh c2Ugb2Ygc2hpZnQgd2l0aCBzY2FsYXIgc2hpZnQgYXJndW1lbnQuICBJbiB0 aGF0CisgICAgIGNhc2Ugd2Ugc3RvcmUgdGhlIHNjYWxhciBvcGVyYW5kIGlu IFZFQ19PUFJORFMxIGZvciBldmVyeSB2ZWN0b3Igc3RtdCB0bworICAgICBi ZSBjcmVhdGVkIHRvIHZlY3Rvcml6ZSB0aGUgU0xQIGdyb3VwLCBpLmUuLCBT TFBfTk9ERS0+VkVDX1NUTVRTX1NJWkUuCisgICAgIEluIGNhc2Ugb2YgbG9v cC1iYXNlZCB2ZWN0b3JpemF0aW9uIHdlIGFsbG9jYXRlIFZFQ3Mgb2Ygc2l6 ZSAxLiAgV2UKKyAgICAgYWxsb2NhdGUgVkVDX09QUk5EUzEgb25seSBpbiBj YXNlIG9mIGJpbmFyeSBvcGVyYXRpb24uICAqLworICBpZiAoIXNscF9ub2Rl KQorICAgIHsKKyAgICAgIHZlY19vcHJuZHMwID0gVkVDX2FsbG9jICh0cmVl LCBoZWFwLCAxKTsKKyAgICAgIHZlY19vcHJuZHMxID0gVkVDX2FsbG9jICh0 cmVlLCBoZWFwLCAxKTsKKyAgICB9CisgIGVsc2UgaWYgKHNjYWxhcl9zaGlm dF9hcmcpCisgICAgdmVjX29wcm5kczEgPSBWRUNfYWxsb2MgKHRyZWUsIGhl YXAsIHNscF9ub2RlLT52ZWNfc3RtdHNfc2l6ZSk7CisKKyAgcHJldl9zdG10 X2luZm8gPSBOVUxMOworICBmb3IgKGogPSAwOyBqIDwgbmNvcGllczsgaisr KQorICAgIHsKKyAgICAgIC8qIEhhbmRsZSB1c2VzLiAgKi8KKyAgICAgIGlm IChqID09IDApCisgICAgICAgIHsKKyAgICAgICAgICBpZiAoc2NhbGFyX3No aWZ0X2FyZykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgLyogVmVj dG9yIHNobCBhbmQgc2hyIGluc24gcGF0dGVybnMgY2FuIGJlIGRlZmluZWQg d2l0aCBzY2FsYXIKKyAgICAgICAgICAgICAgICAgb3BlcmFuZCAyIChzaGlm dCBvcGVyYW5kKS4gIEluIHRoaXMgY2FzZSwgdXNlIGNvbnN0YW50IG9yIGxv b3AKKyAgICAgICAgICAgICAgICAgaW52YXJpYW50IG9wMSBkaXJlY3RseSwg d2l0aG91dCBleHRlbmRpbmcgaXQgdG8gdmVjdG9yIG1vZGUKKyAgICAgICAg ICAgICAgICAgZmlyc3QuICAqLworICAgICAgICAgICAgICBvcHRhYl9vcDJf bW9kZSA9IGluc25fZGF0YVtpY29kZV0ub3BlcmFuZFsyXS5tb2RlOworICAg ICAgICAgICAgICBpZiAoIVZFQ1RPUl9NT0RFX1AgKG9wdGFiX29wMl9tb2Rl KSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICBpZiAo dmVjdF9wcmludF9kdW1wX2luZm8gKFJFUE9SVF9ERVRBSUxTKSkKKyAgICAg ICAgICAgICAgICAgICAgZnByaW50ZiAodmVjdF9kdW1wLCAib3BlcmFuZCAx IHVzaW5nIHNjYWxhciBtb2RlLiIpOworICAgICAgICAgICAgICAgICAgdmVj X29wcm5kMSA9IG9wMTsKKyAgICAgICAgICAgICAgICAgIFZFQ19xdWlja19w dXNoICh0cmVlLCB2ZWNfb3BybmRzMSwgdmVjX29wcm5kMSk7CisgICAgICAg ICAgICAgICAgICBpZiAoc2xwX25vZGUpCisgICAgICAgICAgICAgICAgICAg IHsKKyAgICAgICAgICAgICAgICAgICAgICAvKiBTdG9yZSB2ZWNfb3BybmQx IGZvciBldmVyeSB2ZWN0b3Igc3RtdCB0byBiZSBjcmVhdGVkCisgICAgICAg ICAgICAgICAgICAgICAgICAgZm9yIFNMUF9OT0RFLiAgV2UgY2hlY2sgZHVy aW5nIHRoZSBhbmFseXNpcyB0aGF0IGFsbAorICAgICAgICAgICAgICAgICAg ICAgICAgIHRoZSBzaGlmdCBhcmd1bWVudHMgYXJlIHRoZSBzYW1lLgorICAg ICAgICAgICAgICAgICAgICAgICAgIFRPRE86IEFsbG93IGRpZmZlcmVudCBj b25zdGFudHMgZm9yIGRpZmZlcmVudCB2ZWN0b3IKKyAgICAgICAgICAgICAg ICAgICAgICAgICBzdG10cyBnZW5lcmF0ZWQgZm9yIGFuIFNMUCBpbnN0YW5j ZS4gICovCisgICAgICAgICAgICAgICAgICAgICAgZm9yIChrID0gMDsgayA8 IHNscF9ub2RlLT52ZWNfc3RtdHNfc2l6ZSAtIDE7IGsrKykKKyAgICAgICAg ICAgICAgICAgICAgICAgIFZFQ19xdWlja19wdXNoICh0cmVlLCB2ZWNfb3By bmRzMSwgdmVjX29wcm5kMSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAv KiB2ZWNfb3BybmQxIGlzIGF2YWlsYWJsZSBpZiBvcGVyYW5kIDEgc2hvdWxk IGJlIG9mIGEgc2NhbGFyLXR5cGUKKyAgICAgICAgICAgICAoYSBzcGVjaWFs IGNhc2UgZm9yIGNlcnRhaW4ga2luZCBvZiB2ZWN0b3Igc2hpZnRzKTsgb3Ro ZXJ3aXNlLAorICAgICAgICAgICAgIG9wZXJhbmQgMSBzaG91bGQgYmUgb2Yg YSB2ZWN0b3IgdHlwZSAodGhlIHVzdWFsIGNhc2UpLiAgKi8KKyAgICAgICAg ICBpZiAodmVjX29wcm5kMSkKKyAgICAgICAgICAgIHZlY3RfZ2V0X3ZlY19k ZWZzIChvcDAsIE5VTExfVFJFRSwgc3RtdCwgJnZlY19vcHJuZHMwLCBOVUxM LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNscF9ub2RlKTsK KyAgICAgICAgICBlbHNlCisgICAgICAgICAgICB2ZWN0X2dldF92ZWNfZGVm cyAob3AwLCBvcDEsIHN0bXQsICZ2ZWNfb3BybmRzMCwgJnZlY19vcHJuZHMx LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNscF9ub2RlKTsK KyAgICAgICAgfQorICAgICAgZWxzZQorICAgICAgICB2ZWN0X2dldF92ZWNf ZGVmc19mb3Jfc3RtdF9jb3B5IChkdCwgJnZlY19vcHJuZHMwLCAmdmVjX29w cm5kczEpOworCisgICAgICAvKiBBcmd1bWVudHMgYXJlIHJlYWR5LiAgQ3Jl YXRlIHRoZSBuZXcgdmVjdG9yIHN0bXQuICAqLworICAgICAgZm9yIChpID0g MDsgVkVDX2l0ZXJhdGUgKHRyZWUsIHZlY19vcHJuZHMwLCBpLCB2b3AwKTsg aSsrKQorICAgICAgICB7CisgICAgICAgICAgdm9wMSA9IFZFQ19pbmRleCAo dHJlZSwgdmVjX29wcm5kczEsIGkpOworICAgICAgICAgIG5ld19zdG10ID0g Z2ltcGxlX2J1aWxkX2Fzc2lnbl93aXRoX29wcyAoY29kZSwgdmVjX2Rlc3Qs IHZvcDAsIHZvcDEpOworICAgICAgICAgIG5ld190ZW1wID0gbWFrZV9zc2Ff bmFtZSAodmVjX2Rlc3QsIG5ld19zdG10KTsKKyAgICAgICAgICBnaW1wbGVf YXNzaWduX3NldF9saHMgKG5ld19zdG10LCBuZXdfdGVtcCk7CisgICAgICAg ICAgdmVjdF9maW5pc2hfc3RtdF9nZW5lcmF0aW9uIChzdG10LCBuZXdfc3Rt dCwgZ3NpKTsKKyAgICAgICAgICBpZiAoc2xwX25vZGUpCisgICAgICAgICAg ICBWRUNfcXVpY2tfcHVzaCAoZ2ltcGxlLCBTTFBfVFJFRV9WRUNfU1RNVFMg KHNscF9ub2RlKSwgbmV3X3N0bXQpOworICAgICAgICB9CisKKyAgICAgIGlm IChzbHBfbm9kZSkKKyAgICAgICAgY29udGludWU7CisKKyAgICAgIGlmIChq ID09IDApCisgICAgICAgIFNUTVRfVklORk9fVkVDX1NUTVQgKHN0bXRfaW5m bykgPSAqdmVjX3N0bXQgPSBuZXdfc3RtdDsKKyAgICAgIGVsc2UKKyAgICAg ICAgU1RNVF9WSU5GT19SRUxBVEVEX1NUTVQgKHByZXZfc3RtdF9pbmZvKSA9 IG5ld19zdG10OworICAgICAgcHJldl9zdG10X2luZm8gPSB2aW5mb19mb3Jf c3RtdCAobmV3X3N0bXQpOworICAgIH0KKworICBWRUNfZnJlZSAodHJlZSwg aGVhcCwgdmVjX29wcm5kczApOworICBWRUNfZnJlZSAodHJlZSwgaGVhcCwg dmVjX29wcm5kczEpOworCisgIHJldHVybiB0cnVlOworfQorCisKIC8qIEZ1 bmN0aW9uIHZlY3Rvcml6YWJsZV9vcGVyYXRpb24uCiAKICAgIENoZWNrIGlm IFNUTVQgcGVyZm9ybXMgYSBiaW5hcnkgb3IgdW5hcnkgb3BlcmF0aW9uIHRo YXQgY2FuIGJlIHZlY3Rvcml6ZWQuCkBAIC0xOTM2LDcgKzIyMjcsNiBAQCB2 ZWN0b3JpemFibGVfb3BlcmF0aW9uIChnaW1wbGUgc3RtdCwgZ2ltcGxlX3N0 bXRfaQogICB0cmVlIHZlY19kZXN0OwogICB0cmVlIHNjYWxhcl9kZXN0Owog ICB0cmVlIG9wMCwgb3AxID0gTlVMTDsKLSAgdHJlZSB2ZWNfb3BybmQxID0g TlVMTF9UUkVFOwogICBzdG10X3ZlY19pbmZvIHN0bXRfaW5mbyA9IHZpbmZv X2Zvcl9zdG10IChzdG10KTsKICAgdHJlZSB2ZWN0eXBlID0gU1RNVF9WSU5G T19WRUNUWVBFIChzdG10X2luZm8pOwogICBsb29wX3ZlY19pbmZvIGxvb3Bf dmluZm8gPSBTVE1UX1ZJTkZPX0xPT1BfVklORk8gKHN0bXRfaW5mbyk7CkBA IC0xOTQ2LDcgKzIyMzYsNiBAQCB2ZWN0b3JpemFibGVfb3BlcmF0aW9uIChn aW1wbGUgc3RtdCwgZ2ltcGxlX3N0bXRfaQogICBpbnQgb3BfdHlwZTsKICAg b3B0YWIgb3B0YWI7CiAgIGludCBpY29kZTsKLSAgZW51bSBtYWNoaW5lX21v ZGUgb3B0YWJfb3AyX21vZGU7CiAgIHRyZWUgZGVmOwogICBnaW1wbGUgZGVm X3N0bXQ7CiAgIGVudW0gdmVjdF9kZWZfdHlwZSBkdFsyXSA9IHt2ZWN0X3Vu a25vd25fZGVmX3R5cGUsIHZlY3RfdW5rbm93bl9kZWZfdHlwZX07CkBAIC0x OTU5LDggKzIyNDgsNiBAQCB2ZWN0b3JpemFibGVfb3BlcmF0aW9uIChnaW1w bGUgc3RtdCwgZ2ltcGxlX3N0bXRfaQogICBpbnQgaiwgaTsKICAgVkVDKHRy ZWUsaGVhcCkgKnZlY19vcHJuZHMwID0gTlVMTCwgKnZlY19vcHJuZHMxID0g TlVMTDsKICAgdHJlZSB2b3AwLCB2b3AxOwotICB1bnNpZ25lZCBpbnQgazsK LSAgYm9vbCBzY2FsYXJfc2hpZnRfYXJnID0gZmFsc2U7CiAgIGJiX3ZlY19p bmZvIGJiX3ZpbmZvID0gU1RNVF9WSU5GT19CQl9WSU5GTyAoc3RtdF9pbmZv KTsKICAgaW50IHZmOwogCkBAIC0yMDM2LDYzICsyMzIzLDEzIEBAIHZlY3Rv cml6YWJsZV9vcGVyYXRpb24gKGdpbXBsZSBzdG10LCBnaW1wbGVfc3RtdF9p CiAJfQogICAgIH0KIAotICAvKiBJZiB0aGlzIGlzIGEgc2hpZnQvcm90YXRl LCBkZXRlcm1pbmUgd2hldGhlciB0aGUgc2hpZnQgYW1vdW50IGlzIGEgdmVj dG9yLAotICAgICBvciBzY2FsYXIuICBJZiB0aGUgc2hpZnQvcm90YXRlIGFt b3VudCBpcyBhIHZlY3RvciwgdXNlIHRoZSB2ZWN0b3IvdmVjdG9yCi0gICAg IHNoaWZ0IG9wdGFicy4gICovCisgIC8qIFNoaWZ0cyBhcmUgaGFuZGxlZCBp biB2ZWN0b3JpemFibGVfc2hpZnQgKCkuICAqLwogICBpZiAoY29kZSA9PSBM U0hJRlRfRVhQUiB8fCBjb2RlID09IFJTSElGVF9FWFBSIHx8IGNvZGUgPT0g TFJPVEFURV9FWFBSCiAgICAgICB8fCBjb2RlID09IFJST1RBVEVfRVhQUikK LSAgICB7Ci0gICAgICAvKiB2ZWN0b3Igc2hpZnRlZCBieSB2ZWN0b3IgKi8K LSAgICAgIGlmIChkdFsxXSA9PSB2ZWN0X2ludGVybmFsX2RlZikKLQl7Ci0J ICBvcHRhYiA9IG9wdGFiX2Zvcl90cmVlX2NvZGUgKGNvZGUsIHZlY3R5cGUs IG9wdGFiX3ZlY3Rvcik7Ci0JICBpZiAodmVjdF9wcmludF9kdW1wX2luZm8g KFJFUE9SVF9ERVRBSUxTKSkKLQkgICAgZnByaW50ZiAodmVjdF9kdW1wLCAi dmVjdG9yL3ZlY3RvciBzaGlmdC9yb3RhdGUgZm91bmQuIik7Ci0JfQorICAg IHJldHVybiBmYWxzZTsKIAotICAgICAgLyogU2VlIGlmIHRoZSBtYWNoaW5l IGhhcyBhIHZlY3RvciBzaGlmdGVkIGJ5IHNjYWxhciBpbnNuIGFuZCBpZiBu b3QKLQkgdGhlbiBzZWUgaWYgaXQgaGFzIGEgdmVjdG9yIHNoaWZ0ZWQgYnkg dmVjdG9yIGluc24gKi8KLSAgICAgIGVsc2UgaWYgKGR0WzFdID09IHZlY3Rf Y29uc3RhbnRfZGVmIHx8IGR0WzFdID09IHZlY3RfZXh0ZXJuYWxfZGVmKQot CXsKLQkgIG9wdGFiID0gb3B0YWJfZm9yX3RyZWVfY29kZSAoY29kZSwgdmVj dHlwZSwgb3B0YWJfc2NhbGFyKTsKLQkgIGlmIChvcHRhYgotCSAgICAgICYm IChvcHRhYl9oYW5kbGVyIChvcHRhYiwgVFlQRV9NT0RFICh2ZWN0eXBlKSkt Pmluc25fY29kZQotCQkgICE9IENPREVfRk9SX25vdGhpbmcpKQotCSAgICB7 Ci0JICAgICAgc2NhbGFyX3NoaWZ0X2FyZyA9IHRydWU7Ci0JICAgICAgaWYg KHZlY3RfcHJpbnRfZHVtcF9pbmZvIChSRVBPUlRfREVUQUlMUykpCi0JCWZw cmludGYgKHZlY3RfZHVtcCwgInZlY3Rvci9zY2FsYXIgc2hpZnQvcm90YXRl IGZvdW5kLiIpOwotCSAgICB9Ci0JICBlbHNlCi0JICAgIHsKLQkgICAgICBv cHRhYiA9IG9wdGFiX2Zvcl90cmVlX2NvZGUgKGNvZGUsIHZlY3R5cGUsIG9w dGFiX3ZlY3Rvcik7Ci0JICAgICAgaWYgKG9wdGFiCi0JCSAgJiYgKG9wdGFi X2hhbmRsZXIgKG9wdGFiLCBUWVBFX01PREUgKHZlY3R5cGUpKS0+aW5zbl9j b2RlCi0JCSAgICAgICE9IENPREVfRk9SX25vdGhpbmcpKQotCQl7Ci0JCSAg aWYgKHZlY3RfcHJpbnRfZHVtcF9pbmZvIChSRVBPUlRfREVUQUlMUykpCi0J CSAgICBmcHJpbnRmICh2ZWN0X2R1bXAsICJ2ZWN0b3IvdmVjdG9yIHNoaWZ0 L3JvdGF0ZSBmb3VuZC4iKTsKKyAgb3B0YWIgPSBvcHRhYl9mb3JfdHJlZV9j b2RlIChjb2RlLCB2ZWN0eXBlLCBvcHRhYl9kZWZhdWx0KTsKIAotCQkgIC8q IFVubGlrZSB0aGUgb3RoZXIgYmluYXJ5IG9wZXJhdG9ycywgc2hpZnRzL3Jv dGF0ZXMgaGF2ZQotCQkgICAgIHRoZSByaHMgYmVpbmcgaW50LCBpbnN0ZWFk IG9mIHRoZSBzYW1lIHR5cGUgYXMgdGhlIGxocywKLQkJICAgICBzbyBtYWtl IHN1cmUgdGhlIHNjYWxhciBpcyB0aGUgcmlnaHQgdHlwZSBpZiB3ZSBhcmUK LQkJICAgICBkZWFsaW5nIHdpdGggdmVjdG9ycyBvZiBzaG9ydC9jaGFyLiAg Ki8KLQkJICBpZiAoZHRbMV0gPT0gdmVjdF9jb25zdGFudF9kZWYpCi0JCSAg ICBvcDEgPSBmb2xkX2NvbnZlcnQgKFRSRUVfVFlQRSAodmVjdHlwZSksIG9w MSk7Ci0JCX0KLQkgICAgfQotCX0KLQotICAgICAgZWxzZQotCXsKLQkgIGlm ICh2ZWN0X3ByaW50X2R1bXBfaW5mbyAoUkVQT1JUX0RFVEFJTFMpKQotCSAg ICBmcHJpbnRmICh2ZWN0X2R1bXAsICJvcGVyYW5kIG1vZGUgcmVxdWlyZXMg aW52YXJpYW50IGFyZ3VtZW50LiIpOwotCSAgcmV0dXJuIGZhbHNlOwotCX0K LSAgICB9Ci0gIGVsc2UKLSAgICBvcHRhYiA9IG9wdGFiX2Zvcl90cmVlX2Nv ZGUgKGNvZGUsIHZlY3R5cGUsIG9wdGFiX2RlZmF1bHQpOwotCiAgIC8qIFN1 cHBvcnRhYmxlIGJ5IHRhcmdldD8gICovCiAgIGlmICghb3B0YWIpCiAgICAg ewpAQCAtMjE1NSw4ICsyMzkyLDYgQEAgdmVjdG9yaXphYmxlX29wZXJhdGlv biAoZ2ltcGxlIHN0bXQsIGdpbXBsZV9zdG10X2kKICAgICAgIGlmIChvcF90 eXBlID09IGJpbmFyeV9vcCkKICAgICAgICAgdmVjX29wcm5kczEgPSBWRUNf YWxsb2MgKHRyZWUsIGhlYXAsIDEpOwogICAgIH0KLSAgZWxzZSBpZiAoc2Nh bGFyX3NoaWZ0X2FyZykKLSAgICB2ZWNfb3BybmRzMSA9IFZFQ19hbGxvYyAo dHJlZSwgaGVhcCwgc2xwX25vZGUtPnZlY19zdG10c19zaXplKTsKIAogICAv KiBJbiBjYXNlIHRoZSB2ZWN0b3JpemF0aW9uIGZhY3RvciAoVkYpIGlzIGJp Z2dlciB0aGFuIHRoZSBudW1iZXIKICAgICAgb2YgZWxlbWVudHMgdGhhdCB3 ZSBjYW4gZml0IGluIGEgdmVjdHlwZSAobnVuaXRzKSwgd2UgaGF2ZSB0byBn ZW5lcmF0ZQpAQCAtMjIxNywzNiArMjQ1Miw3IEBAIHZlY3Rvcml6YWJsZV9v cGVyYXRpb24gKGdpbXBsZSBzdG10LCBnaW1wbGVfc3RtdF9pCiAgICAgICAv KiBIYW5kbGUgdXNlcy4gICovCiAgICAgICBpZiAoaiA9PSAwKQogCXsKLQkg IGlmIChvcF90eXBlID09IGJpbmFyeV9vcCAmJiBzY2FsYXJfc2hpZnRfYXJn KQotCSAgICB7Ci0JICAgICAgLyogVmVjdG9yIHNobCBhbmQgc2hyIGluc24g cGF0dGVybnMgY2FuIGJlIGRlZmluZWQgd2l0aCBzY2FsYXIKLQkJIG9wZXJh bmQgMiAoc2hpZnQgb3BlcmFuZCkuIEluIHRoaXMgY2FzZSwgdXNlIGNvbnN0 YW50IG9yIGxvb3AKLQkJIGludmFyaWFudCBvcDEgZGlyZWN0bHksIHdpdGhv dXQgZXh0ZW5kaW5nIGl0IHRvIHZlY3RvciBtb2RlCi0JCSBmaXJzdC4gICov Ci0JICAgICAgb3B0YWJfb3AyX21vZGUgPSBpbnNuX2RhdGFbaWNvZGVdLm9w ZXJhbmRbMl0ubW9kZTsKLQkgICAgICBpZiAoIVZFQ1RPUl9NT0RFX1AgKG9w dGFiX29wMl9tb2RlKSkKLQkJewotCQkgIGlmICh2ZWN0X3ByaW50X2R1bXBf aW5mbyAoUkVQT1JUX0RFVEFJTFMpKQotCQkgICAgZnByaW50ZiAodmVjdF9k dW1wLCAib3BlcmFuZCAxIHVzaW5nIHNjYWxhciBtb2RlLiIpOwotCQkgIHZl Y19vcHJuZDEgPSBvcDE7Ci0JCSAgVkVDX3F1aWNrX3B1c2ggKHRyZWUsIHZl Y19vcHJuZHMxLCB2ZWNfb3BybmQxKTsKLQkgICAgICAgICAgaWYgKHNscF9u b2RlKQotCSAgICAgICAgICAgIHsKLQkgICAgICAgICAgICAgIC8qIFN0b3Jl IHZlY19vcHJuZDEgZm9yIGV2ZXJ5IHZlY3RvciBzdG10IHRvIGJlIGNyZWF0 ZWQKLQkgICAgICAgICAgICAgICAgIGZvciBTTFBfTk9ERS4gV2UgY2hlY2sg ZHVyaW5nIHRoZSBhbmFseXNpcyB0aGF0IGFsbCB0aGUKLSAgICAgICAgICAg ICAgICAgICAgICAgICBzaGlmdCBhcmd1bWVudHMgYXJlIHRoZSBzYW1lLgot CSAgICAgICAgICAgICAgICAgVE9ETzogQWxsb3cgZGlmZmVyZW50IGNvbnN0 YW50cyBmb3IgZGlmZmVyZW50IHZlY3RvcgotCSAgICAgICAgICAgICAgICAg c3RtdHMgZ2VuZXJhdGVkIGZvciBhbiBTTFAgaW5zdGFuY2UuICAqLwotCSAg ICAgICAgICAgICAgZm9yIChrID0gMDsgayA8IHNscF9ub2RlLT52ZWNfc3Rt dHNfc2l6ZSAtIDE7IGsrKykKLQkgICAgICAgICAgICAgICAgVkVDX3F1aWNr X3B1c2ggKHRyZWUsIHZlY19vcHJuZHMxLCB2ZWNfb3BybmQxKTsKLQkgICAg ICAgICAgICB9Ci0JCX0KLQkgICAgfQotCi0gICAgICAgICAgLyogdmVjX29w cm5kMSBpcyBhdmFpbGFibGUgaWYgb3BlcmFuZCAxIHNob3VsZCBiZSBvZiBh IHNjYWxhci10eXBlCi0gICAgICAgICAgICAgKGEgc3BlY2lhbCBjYXNlIGZv ciBjZXJ0YWluIGtpbmQgb2YgdmVjdG9yIHNoaWZ0cyk7IG90aGVyd2lzZSwK LSAgICAgICAgICAgICBvcGVyYW5kIDEgc2hvdWxkIGJlIG9mIGEgdmVjdG9y IHR5cGUgKHRoZSB1c3VhbCBjYXNlKS4gICovCi0JICBpZiAob3BfdHlwZSA9 PSBiaW5hcnlfb3AgJiYgIXZlY19vcHJuZDEpCisJICBpZiAob3BfdHlwZSA9 PSBiaW5hcnlfb3ApCiAJICAgIHZlY3RfZ2V0X3ZlY19kZWZzIChvcDAsIG9w MSwgc3RtdCwgJnZlY19vcHJuZHMwLCAmdmVjX29wcm5kczEsCiAJCQkgICAg ICAgc2xwX25vZGUpOwogCSAgZWxzZQpAQCAtMjUzNiw3ICsyNzQyLDcgQEAg dmVjdG9yaXphYmxlX3R5cGVfZGVtb3Rpb24gKGdpbXBsZSBzdG10LCBnaW1w bGVfc3QKICAgICB7CiAgICAgICAvKiBIYW5kbGUgdXNlcy4gICovCiAgICAg ICBpZiAoc2xwX25vZGUpCi0gICAgICAgIHZlY3RfZ2V0X3NscF9kZWZzIChz bHBfbm9kZSwgJnZlY19vcHJuZHMwLCBOVUxMKTsKKyAgICAgICAgdmVjdF9n ZXRfc2xwX2RlZnMgKG9wMCwgTlVMTF9UUkVFLCBzbHBfbm9kZSwgJnZlY19v cHJuZHMwLCBOVUxMKTsKICAgICAgIGVsc2UKICAgICAgICAgewogICAgICAg ICAgIFZFQ19mcmVlICh0cmVlLCBoZWFwLCB2ZWNfb3BybmRzMCk7CkBAIC0y ODM3LDcgKzMwNDMsOCBAQCB2ZWN0b3JpemFibGVfdHlwZV9wcm9tb3Rpb24g KGdpbXBsZSBzdG10LCBnaW1wbGVfcwogICAgICAgaWYgKGogPT0gMCkKICAg ICAgICAgewogICAgICAgICAgIGlmIChzbHBfbm9kZSkKLSAgICAgICAgICAg ICAgdmVjdF9nZXRfc2xwX2RlZnMgKHNscF9ub2RlLCAmdmVjX29wcm5kczAs ICZ2ZWNfb3BybmRzMSk7CisgICAgICAgICAgICAgIHZlY3RfZ2V0X3NscF9k ZWZzIChvcDAsIG9wMSwgc2xwX25vZGUsICZ2ZWNfb3BybmRzMCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2ZWNfb3BybmRzMSk7CiAg ICAgICAgICAgZWxzZQogICAgICAgICAgICAgewogICAgICAgICAgICAgICB2 ZWNfb3BybmQwID0gdmVjdF9nZXRfdmVjX2RlZl9mb3Jfb3BlcmFuZCAob3Aw LCBzdG10LCBOVUxMKTsKQEAgLTMxMjMsNyArMzMzMCw4IEBAIHZlY3Rvcml6 YWJsZV9zdG9yZSAoZ2ltcGxlIHN0bXQsIGdpbXBsZV9zdG10X2l0ZXJhCiAg ICAgICAgICAgaWYgKHNscCkKICAgICAgICAgICAgIHsKIAkgICAgICAvKiBH ZXQgdmVjdG9yaXplZCBhcmd1bWVudHMgZm9yIFNMUF9OT0RFLiAgKi8KLSAg ICAgICAgICAgICAgdmVjdF9nZXRfc2xwX2RlZnMgKHNscF9ub2RlLCAmdmVj X29wcm5kcywgTlVMTCk7CisgICAgICAgICAgICAgIHZlY3RfZ2V0X3NscF9k ZWZzIChOVUxMX1RSRUUsIE5VTExfVFJFRSwgc2xwX25vZGUsICZ2ZWNfb3By bmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7 CiAKICAgICAgICAgICAgICAgdmVjX29wcm5kID0gVkVDX2luZGV4ICh0cmVl LCB2ZWNfb3BybmRzLCAwKTsKICAgICAgICAgICAgIH0KQEAgLTQwNjMsNiAr NDI3MSw3IEBAIHZlY3RfYW5hbHl6ZV9zdG10IChnaW1wbGUgc3RtdCwgYm9v bCAqbmVlZF90b192ZWN0CiAgICAgICBvayA9ICh2ZWN0b3JpemFibGVfdHlw ZV9wcm9tb3Rpb24gKHN0bXQsIE5VTEwsIE5VTEwsIE5VTEwpCiAgICAgICAg ICAgICB8fCB2ZWN0b3JpemFibGVfdHlwZV9kZW1vdGlvbiAoc3RtdCwgTlVM TCwgTlVMTCwgTlVMTCkKICAgICAgICAgICAgIHx8IHZlY3Rvcml6YWJsZV9j b252ZXJzaW9uIChzdG10LCBOVUxMLCBOVUxMLCBOVUxMKQorICAgICAgICAg ICAgfHwgdmVjdG9yaXphYmxlX3NoaWZ0IChzdG10LCBOVUxMLCBOVUxMLCBO VUxMKQogICAgICAgICAgICAgfHwgdmVjdG9yaXphYmxlX29wZXJhdGlvbiAo c3RtdCwgTlVMTCwgTlVMTCwgTlVMTCkKICAgICAgICAgICAgIHx8IHZlY3Rv cml6YWJsZV9hc3NpZ25tZW50IChzdG10LCBOVUxMLCBOVUxMLCBOVUxMKQog ICAgICAgICAgICAgfHwgdmVjdG9yaXphYmxlX2xvYWQgKHN0bXQsIE5VTEws IE5VTEwsIE5VTEwsIE5VTEwpCkBAIC00MDczLDcgKzQyODIsOCBAQCB2ZWN0 X2FuYWx5emVfc3RtdCAoZ2ltcGxlIHN0bXQsIGJvb2wgKm5lZWRfdG9fdmVj dAogICAgIGVsc2UKICAgICAgIHsKICAgICAgICAgaWYgKGJiX3ZpbmZvKQot ICAgICAgICAgIG9rID0gKHZlY3Rvcml6YWJsZV9vcGVyYXRpb24gKHN0bXQs IE5VTEwsIE5VTEwsIG5vZGUpCisgICAgICAgICAgb2sgPSAodmVjdG9yaXph YmxlX3NoaWZ0IChzdG10LCBOVUxMLCBOVUxMLCBub2RlKQorICAgICAgICAg ICAgICAgIHx8IHZlY3Rvcml6YWJsZV9vcGVyYXRpb24gKHN0bXQsIE5VTEws IE5VTEwsIG5vZGUpCiAgICAgICAgICAgICAgICAgfHwgdmVjdG9yaXphYmxl X2Fzc2lnbm1lbnQgKHN0bXQsIE5VTEwsIE5VTEwsIG5vZGUpCiAgICAgICAg ICAgICAgICAgfHwgdmVjdG9yaXphYmxlX2xvYWQgKHN0bXQsIE5VTEwsIE5V TEwsIG5vZGUsIE5VTEwpCiAgICAgICAgICAgICAgICAgfHwgdmVjdG9yaXph YmxlX3N0b3JlIChzdG10LCBOVUxMLCBOVUxMLCBub2RlKSk7CkBAIC00MTc1 LDYgKzQzODUsMTEgQEAgdmVjdF90cmFuc2Zvcm1fc3RtdCAoZ2ltcGxlIHN0 bXQsIGdpbXBsZV9zdG10X2l0ZXIKICAgICAgIGdjY19hc3NlcnQgKGRvbmUp OwogICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIHNoaWZ0X3ZlY19pbmZvX3R5 cGU6CisgICAgICBkb25lID0gdmVjdG9yaXphYmxlX3NoaWZ0IChzdG10LCBn c2ksICZ2ZWNfc3RtdCwgc2xwX25vZGUpOworICAgICAgZ2NjX2Fzc2VydCAo ZG9uZSk7CisgICAgICBicmVhazsKKwogICAgIGNhc2Ugb3BfdmVjX2luZm9f dHlwZToKICAgICAgIGRvbmUgPSB2ZWN0b3JpemFibGVfb3BlcmF0aW9uIChz dG10LCBnc2ksICZ2ZWNfc3RtdCwgc2xwX25vZGUpOwogICAgICAgZ2NjX2Fz c2VydCAoZG9uZSk7CkluZGV4OiB0cmVlLXZlY3Qtc2xwLmMKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0gdHJlZS12ZWN0LXNscC5jCShyZXZpc2lvbiAx NjYwNjUpCisrKyB0cmVlLXZlY3Qtc2xwLmMJKHdvcmtpbmcgY29weSkKQEAg LTE0MjksNyArMTQyOSw4IEBAIHZlY3RfdXBkYXRlX3NscF9jb3N0c19hY2Nv cmRpbmdfdG9fdmYgKGxvb3BfdmVjX2luCiAgICBzdG10cy4gTlVNQkVSX09G X1ZFQ1RPUlMgaXMgdGhlIG51bWJlciBvZiB2ZWN0b3IgZGVmcyB0byBjcmVh dGUuICAqLwogCiBzdGF0aWMgdm9pZAotdmVjdF9nZXRfY29uc3RhbnRfdmVj dG9ycyAoc2xwX3RyZWUgc2xwX25vZGUsIFZFQyh0cmVlLGhlYXApICoqdmVj X29wcm5kcywKK3ZlY3RfZ2V0X2NvbnN0YW50X3ZlY3RvcnMgKHRyZWUgb3As IHNscF90cmVlIHNscF9ub2RlLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgVkVDICh0cmVlLCBoZWFwKSAqKnZlY19vcHJuZHMsCiAJCQkgICB1bnNp Z25lZCBpbnQgb3BfbnVtLCB1bnNpZ25lZCBpbnQgbnVtYmVyX29mX3ZlY3Rv cnMpCiB7CiAgIFZFQyAoZ2ltcGxlLCBoZWFwKSAqc3RtdHMgPSBTTFBfVFJF RV9TQ0FMQVJfU1RNVFMgKHNscF9ub2RlKTsKQEAgLTE0NDAsNyArMTQ0MSw3 IEBAIHN0YXRpYyB2b2lkCiAgIHRyZWUgdCA9IE5VTExfVFJFRTsKICAgaW50 IGosIG51bWJlcl9vZl9wbGFjZXNfbGVmdF9pbl92ZWN0b3I7CiAgIHRyZWUg dmVjdG9yX3R5cGU7Ci0gIHRyZWUgb3AsIHZvcDsKKyAgdHJlZSB2b3A7CiAg IGludCBncm91cF9zaXplID0gVkVDX2xlbmd0aCAoZ2ltcGxlLCBzdG10cyk7 CiAgIHVuc2lnbmVkIGludCB2ZWNfbnVtLCBpOwogICBpbnQgbnVtYmVyX29m X2NvcGllcyA9IDE7CkBAIC0xNDUzLDEwICsxNDU0LDcgQEAgc3RhdGljIHZv aWQKICAgICAgIG9wID0gZ2ltcGxlX2Fzc2lnbl9yaHMxIChzdG10KTsKICAg ICB9CiAgIGVsc2UKLSAgICB7Ci0gICAgICBpc19zdG9yZSA9IGZhbHNlOwot ICAgICAgb3AgPSBnaW1wbGVfb3AgKHN0bXQsIG9wX251bSArIDEpOwotICAg IH0KKyAgICBpc19zdG9yZSA9IGZhbHNlOwogCiAgIGlmIChDT05TVEFOVF9D TEFTU19QIChvcCkpCiAgICAgY29uc3RhbnRfcCA9IHRydWU7CkBAIC0xNTcy LDcgKzE1NzAsOCBAQCB2ZWN0X2dldF9zbHBfdmVjdF9kZWZzIChzbHBfdHJl ZSBzbHBfbm9kZSwgVkVDICh0cgogICAgdGhlIHJpZ2h0IG5vZGUuIFRoaXMg aXMgdXNlZCB3aGVuIHRoZSBzZWNvbmQgb3BlcmFuZCBtdXN0IHJlbWFpbiBz Y2FsYXIuICAqLwogCiB2b2lkCi12ZWN0X2dldF9zbHBfZGVmcyAoc2xwX3Ry ZWUgc2xwX25vZGUsIFZFQyAodHJlZSxoZWFwKSAqKnZlY19vcHJuZHMwLAor dmVjdF9nZXRfc2xwX2RlZnMgKHRyZWUgb3AwLCB0cmVlIG9wMSwgc2xwX3Ry ZWUgc2xwX25vZGUsCisgICAgICAgICAgICAgICAgICAgVkVDICh0cmVlLGhl YXApICoqdmVjX29wcm5kczAsCiAgICAgICAgICAgICAgICAgICAgVkVDICh0 cmVlLGhlYXApICoqdmVjX29wcm5kczEpCiB7CiAgIGdpbXBsZSBmaXJzdF9z dG10OwpAQCAtMTYxMCw3ICsxNjA5LDcgQEAgdm9pZAogICAgIHZlY3RfZ2V0 X3NscF92ZWN0X2RlZnMgKFNMUF9UUkVFX0xFRlQgKHNscF9ub2RlKSwgdmVj X29wcm5kczApOwogICBlbHNlCiAgICAgLyogQnVpbGQgdmVjdG9ycyBmcm9t IHNjYWxhciBkZWZzLiAgKi8KLSAgICB2ZWN0X2dldF9jb25zdGFudF92ZWN0 b3JzIChzbHBfbm9kZSwgdmVjX29wcm5kczAsIDAsIG51bWJlcl9vZl92ZWN0 cyk7CisgICAgdmVjdF9nZXRfY29uc3RhbnRfdmVjdG9ycyAob3AwLCBzbHBf bm9kZSwgdmVjX29wcm5kczAsIDAsIG51bWJlcl9vZl92ZWN0cyk7CiAKICAg aWYgKFNUTVRfVklORk9fREFUQV9SRUYgKHZpbmZvX2Zvcl9zdG10IChmaXJz dF9zdG10KSkpCiAgICAgLyogU2luY2Ugd2UgZG9uJ3QgY2FsbCB0aGlzIGZ1 bmN0aW9uIHdpdGggbG9hZHMsIHRoaXMgaXMgYSBncm91cCBvZgpAQCAtMTYz NSw3ICsxNjM0LDcgQEAgdm9pZAogICAgIHZlY3RfZ2V0X3NscF92ZWN0X2Rl ZnMgKFNMUF9UUkVFX1JJR0hUIChzbHBfbm9kZSksIHZlY19vcHJuZHMxKTsK ICAgZWxzZQogICAgIC8qIEJ1aWxkIHZlY3RvcnMgZnJvbSBzY2FsYXIgZGVm cy4gICovCi0gICAgdmVjdF9nZXRfY29uc3RhbnRfdmVjdG9ycyAoc2xwX25v ZGUsIHZlY19vcHJuZHMxLCAxLCBudW1iZXJfb2ZfdmVjdHMpOworICAgIHZl Y3RfZ2V0X2NvbnN0YW50X3ZlY3RvcnMgKG9wMSwgc2xwX25vZGUsIHZlY19v cHJuZHMxLCAxLCBudW1iZXJfb2ZfdmVjdHMpOwogfQogCiAK --0__=4DBBFD58DFF9126F8f9e8a93df938690918c4DBBFD58DFF9126F--