From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by sourceware.org (Postfix) with ESMTP id DF91D385772A for ; Thu, 20 Apr 2023 13:23:17 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org DF91D385772A Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 5568E1480; Thu, 20 Apr 2023 06:24:01 -0700 (PDT) Received: from [10.57.68.178] (unknown [10.57.68.178]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 76C033F587; Thu, 20 Apr 2023 06:23:16 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------0DqhWVXXPvMN5YVzFFAaipI6" Message-ID: Date: Thu, 20 Apr 2023 14:23:03 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.9.0 Subject: Re: [ping][vect-patterns] Refactor widen_plus/widen_minus as internal_fns Content-Language: en-US To: Richard Biener Cc: Richard Sandiford , "gcc-patches@gcc.gnu.org" References: <51ce8969-3130-452e-092e-f9d91eff2dad@arm.com> From: "Andre Vieira (lists)" In-Reply-To: X-Spam-Status: No, score=-16.0 required=5.0 tests=BAYES_00,GIT_PATCH_0,KAM_DMARC_NONE,KAM_DMARC_STATUS,KAM_LAZY_DOMAIN_SECURITY,KAM_LOTSOFHASH,KAM_SHORT,NICE_REPLY_A,SPF_HELO_NONE,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------0DqhWVXXPvMN5YVzFFAaipI6 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Rebased all three patches and made some small changes to the second one: - removed sub and abd optabs from commutative_optab_p, I suspect this was a copy paste mistake, - removed what I believe to be a superfluous switch case in vectorizable conversion, the one that was here: + if (code.is_fn_code ()) + { + internal_fn ifn = as_internal_fn (code.as_fn_code ()); + int ecf_flags = internal_fn_flags (ifn); + gcc_assert (ecf_flags & ECF_MULTI); + + switch (code.as_fn_code ()) + { + case CFN_VEC_WIDEN_PLUS: + break; + case CFN_VEC_WIDEN_MINUS: + break; + case CFN_LAST: + default: + return false; + } + + internal_fn lo, hi; + lookup_multi_internal_fn (ifn, &lo, &hi); + *code1 = as_combined_fn (lo); + *code2 = as_combined_fn (hi); + optab1 = lookup_multi_ifn_optab (lo, !TYPE_UNSIGNED (vectype)); + optab2 = lookup_multi_ifn_optab (hi, !TYPE_UNSIGNED (vectype)); } I don't think we need to check they are a specfic fn code, as we look-up optabs and if they succeed then surely we can vectorize? OK for trunk? Kind regards, Andre --------------0DqhWVXXPvMN5YVzFFAaipI6 Content-Type: text/plain; charset=UTF-8; name="ifn0.patch" Content-Disposition: attachment; filename="ifn0.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3QtcGF0dGVybnMuY2MgYi9nY2MvdHJlZS12ZWN0 LXBhdHRlcm5zLmNjCmluZGV4IDg4MDIxNDFjZDZlZGIyOTg4NjYwMjViOGE1NTg0M2VhZTFm MGViMTcuLjY4ZGZiYTI2NmQ2NzljOTczOGEzZDVkNzA1NTFhOTFjYmRhZmNmNjYgMTAwNjQ0 Ci0tLSBhL2djYy90cmVlLXZlY3QtcGF0dGVybnMuY2MKKysrIGIvZ2NjL3RyZWUtdmVjdC1w YXR0ZXJucy5jYwpAQCAtMjUsNiArMjUsOCBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBm aWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQogI2luY2x1ZGUgInJ0bC5oIgogI2luY2x1ZGUg InRyZWUuaCIKICNpbmNsdWRlICJnaW1wbGUuaCIKKyNpbmNsdWRlICJnaW1wbGUtaXRlcmF0 b3IuaCIKKyNpbmNsdWRlICJnaW1wbGUtZm9sZC5oIgogI2luY2x1ZGUgInNzYS5oIgogI2lu Y2x1ZGUgImV4cG1lZC5oIgogI2luY2x1ZGUgIm9wdGFicy10cmVlLmgiCkBAIC0xMzkxLDcg KzEzOTMsNyBAQCB2ZWN0X3JlY29nX3NhZF9wYXR0ZXJuICh2ZWNfaW5mbyAqdmluZm8sCiBz dGF0aWMgZ2ltcGxlICoKIHZlY3RfcmVjb2dfd2lkZW5fb3BfcGF0dGVybiAodmVjX2luZm8g KnZpbmZvLAogCQkJICAgICBzdG10X3ZlY19pbmZvIGxhc3Rfc3RtdF9pbmZvLCB0cmVlICp0 eXBlX291dCwKLQkJCSAgICAgdHJlZV9jb2RlIG9yaWdfY29kZSwgdHJlZV9jb2RlIHdpZGVf Y29kZSwKKwkJCSAgICAgdHJlZV9jb2RlIG9yaWdfY29kZSwgY29kZV9oZWxwZXIgd2lkZV9j b2RlLAogCQkJICAgICBib29sIHNoaWZ0X3AsIGNvbnN0IGNoYXIgKm5hbWUpCiB7CiAgIGdp bXBsZSAqbGFzdF9zdG10ID0gbGFzdF9zdG10X2luZm8tPnN0bXQ7CkBAIC0xNDM0LDcgKzE0 MzYsNyBAQCB2ZWN0X3JlY29nX3dpZGVuX29wX3BhdHRlcm4gKHZlY19pbmZvICp2aW5mbywK ICAgICAgIHZlY2N0eXBlID0gZ2V0X3ZlY3R5cGVfZm9yX3NjYWxhcl90eXBlICh2aW5mbywg Y3R5cGUpOwogICAgIH0KIAotICBlbnVtIHRyZWVfY29kZSBkdW1teV9jb2RlOworICBjb2Rl X2hlbHBlciBkdW1teV9jb2RlOwogICBpbnQgZHVtbXlfaW50OwogICBhdXRvX3ZlYzx0cmVl PiBkdW1teV92ZWM7CiAgIGlmICghdmVjdHlwZQpAQCAtMTQ1NSw4ICsxNDU3LDcgQEAgdmVj dF9yZWNvZ193aWRlbl9vcF9wYXR0ZXJuICh2ZWNfaW5mbyAqdmluZm8sCiAJCSAgICAgICAy LCBvcHJuZCwgaGFsZl90eXBlLCB1bnByb20sIHZlY3R5cGUpOwogCiAgIHRyZWUgdmFyID0g dmVjdF9yZWNvZ190ZW1wX3NzYV92YXIgKGl0eXBlLCBOVUxMKTsKLSAgZ2ltcGxlICpwYXR0 ZXJuX3N0bXQgPSBnaW1wbGVfYnVpbGRfYXNzaWduICh2YXIsIHdpZGVfY29kZSwKLQkJCQkJ ICAgICAgb3BybmRbMF0sIG9wcm5kWzFdKTsKKyAgZ2ltcGxlICpwYXR0ZXJuX3N0bXQgPSB2 ZWN0X2dpbXBsZV9idWlsZCAodmFyLCB3aWRlX2NvZGUsIG9wcm5kWzBdLCBvcHJuZFsxXSk7 CiAKICAgaWYgKHZlY2N0eXBlICE9IHZlY2l0eXBlKQogICAgIHBhdHRlcm5fc3RtdCA9IHZl Y3RfY29udmVydF9vdXRwdXQgKHZpbmZvLCBsYXN0X3N0bXRfaW5mbywgY3R5cGUsCkBAIC02 NDA2LDMgKzY0MDcsMjggQEAgdmVjdF9wYXR0ZXJuX3JlY29nICh2ZWNfaW5mbyAqdmluZm8p CiAgIC8qIEFmdGVyIHRoaXMgbm8gbW9yZSBhZGRfc3RtdCBjYWxscyBhcmUgYWxsb3dlZC4g ICovCiAgIHZpbmZvLT5zdG10X3ZlY19pbmZvX3JvID0gdHJ1ZTsKIH0KKworLyogQnVpbGQg YSBHSU1QTEVfQVNTSUdOIG9yIEdJTVBMRV9DQUxMIHdpdGggdGhlIHRyZWVfY29kZSwKKyAg IG9yIGludGVybmFsX2ZuIGNvbnRhaW5lZCBpbiBjaCwgcmVzcGVjdGl2ZWx5LiAgKi8KK2dp bXBsZSAqCit2ZWN0X2dpbXBsZV9idWlsZCAodHJlZSBsaHMsIGNvZGVfaGVscGVyIGNoLCB0 cmVlIG9wMCwgdHJlZSBvcDEpCit7CisgIGlmIChvcDAgPT0gTlVMTF9UUkVFKQorICAgIHJl dHVybiBOVUxMOworICBpZiAoY2guaXNfdHJlZV9jb2RlICgpKQorICAgIHJldHVybiBvcDEg PT0gTlVMTF9UUkVFID8gZ2ltcGxlX2J1aWxkX2Fzc2lnbiAobGhzLCBjaC5zYWZlX2FzX3Ry ZWVfY29kZSAoKSwKKwkJCQkJCSAgIG9wMCkgOgorCQkJICAgICAgZ2ltcGxlX2J1aWxkX2Fz c2lnbiAobGhzLCBjaC5zYWZlX2FzX3RyZWVfY29kZSAoKSwKKwkJCQkJCSAgIG9wMCwgb3Ax KTsKKyAgZWxzZQorICB7CisgICAgaW50ZXJuYWxfZm4gZm4gPSBhc19pbnRlcm5hbF9mbiAo Y2guc2FmZV9hc19mbl9jb2RlICgpKTsKKyAgICBnaW1wbGUqIHN0bXQ7CisgICAgaWYgKG9w MSA9PSBOVUxMX1RSRUUpCisgICAgICBzdG10ID0gZ2ltcGxlX2J1aWxkX2NhbGxfaW50ZXJu YWwgKGZuLCAxLCBvcDApOworICAgIGVsc2UKKyAgICAgIHN0bXQgPSBnaW1wbGVfYnVpbGRf Y2FsbF9pbnRlcm5hbCAoZm4sIDIsIG9wMCwgb3AxKTsKKyAgICBnaW1wbGVfY2FsbF9zZXRf bGhzIChzdG10LCBsaHMpOworICAgIHJldHVybiBzdG10OworICB9Cit9CmRpZmYgLS1naXQg YS9nY2MvdHJlZS12ZWN0LXN0bXRzLmNjIGIvZ2NjL3RyZWUtdmVjdC1zdG10cy5jYwppbmRl eCA2YjdkYmZkNGEyMzFiYWVjMjRlNzQwZmZlMGNlMGIwYmY3YTFkZTZiLi43MTVlYzJlMzBh NGRlNjIwYjhhNTA3NmMwZTdmMmY3ZmQxYjA2NTRlIDEwMDY0NAotLS0gYS9nY2MvdHJlZS12 ZWN0LXN0bXRzLmNjCisrKyBiL2djYy90cmVlLXZlY3Qtc3RtdHMuY2MKQEAgLTQ3NjgsNyAr NDc2OCw3IEBAIHZlY3Rvcml6YWJsZV9zaW1kX2Nsb25lX2NhbGwgKHZlY19pbmZvICp2aW5m bywgc3RtdF92ZWNfaW5mbyBzdG10X2luZm8sCiAgICBTVE1UX0lORk8gaXMgdGhlIG9yaWdp bmFsIHNjYWxhciBzdG10IHRoYXQgd2UgYXJlIHZlY3Rvcml6aW5nLiAgKi8KIAogc3RhdGlj IGdpbXBsZSAqCi12ZWN0X2dlbl93aWRlbmVkX3Jlc3VsdHNfaGFsZiAodmVjX2luZm8gKnZp bmZvLCBlbnVtIHRyZWVfY29kZSBjb2RlLAordmVjdF9nZW5fd2lkZW5lZF9yZXN1bHRzX2hh bGYgKHZlY19pbmZvICp2aW5mbywgY29kZV9oZWxwZXIgY2gsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdHJlZSB2ZWNfb3BybmQwLCB0cmVlIHZlY19vcHJuZDEsIGludCBv cF90eXBlLAogCQkJICAgICAgIHRyZWUgdmVjX2Rlc3QsIGdpbXBsZV9zdG10X2l0ZXJhdG9y ICpnc2ksCiAJCQkgICAgICAgc3RtdF92ZWNfaW5mbyBzdG10X2luZm8pCkBAIC00Nzc3LDEy ICs0Nzc3LDExIEBAIHZlY3RfZ2VuX3dpZGVuZWRfcmVzdWx0c19oYWxmICh2ZWNfaW5mbyAq dmluZm8sIGVudW0gdHJlZV9jb2RlIGNvZGUsCiAgIHRyZWUgbmV3X3RlbXA7CiAKICAgLyog R2VuZXJhdGUgaGFsZiBvZiB0aGUgd2lkZW5lZCByZXN1bHQ6ICAqLwotICBnY2NfYXNzZXJ0 IChvcF90eXBlID09IFRSRUVfQ09ERV9MRU5HVEggKGNvZGUpKTsKICAgaWYgKG9wX3R5cGUg IT0gYmluYXJ5X29wKQogICAgIHZlY19vcHJuZDEgPSBOVUxMOwotICBuZXdfc3RtdCA9IGdp bXBsZV9idWlsZF9hc3NpZ24gKHZlY19kZXN0LCBjb2RlLCB2ZWNfb3BybmQwLCB2ZWNfb3By bmQxKTsKKyAgbmV3X3N0bXQgPSB2ZWN0X2dpbXBsZV9idWlsZCAodmVjX2Rlc3QsIGNoLCB2 ZWNfb3BybmQwLCB2ZWNfb3BybmQxKTsKICAgbmV3X3RlbXAgPSBtYWtlX3NzYV9uYW1lICh2 ZWNfZGVzdCwgbmV3X3N0bXQpOwotICBnaW1wbGVfYXNzaWduX3NldF9saHMgKG5ld19zdG10 LCBuZXdfdGVtcCk7CisgIGdpbXBsZV9zZXRfbGhzIChuZXdfc3RtdCwgbmV3X3RlbXApOwog ICB2ZWN0X2ZpbmlzaF9zdG10X2dlbmVyYXRpb24gKHZpbmZvLCBzdG10X2luZm8sIG5ld19z dG10LCBnc2kpOwogCiAgIHJldHVybiBuZXdfc3RtdDsKQEAgLTQ4NjEsOCArNDg2MCw4IEBA IHZlY3RfY3JlYXRlX3ZlY3Rvcml6ZWRfcHJvbW90aW9uX3N0bXRzICh2ZWNfaW5mbyAqdmlu Zm8sCiAJCQkJCXZlYzx0cmVlPiAqdmVjX29wcm5kczEsCiAJCQkJCXN0bXRfdmVjX2luZm8g c3RtdF9pbmZvLCB0cmVlIHZlY19kZXN0LAogCQkJCQlnaW1wbGVfc3RtdF9pdGVyYXRvciAq Z3NpLAotCQkJCQllbnVtIHRyZWVfY29kZSBjb2RlMSwKLQkJCQkJZW51bSB0cmVlX2NvZGUg Y29kZTIsIGludCBvcF90eXBlKQorCQkJCQljb2RlX2hlbHBlciBjaDEsCisJCQkJCWNvZGVf aGVscGVyIGNoMiwgaW50IG9wX3R5cGUpCiB7CiAgIGludCBpOwogICB0cmVlIHZvcDAsIHZv cDEsIG5ld190bXAxLCBuZXdfdG1wMjsKQEAgLTQ4NzgsMTAgKzQ4NzcsMTAgQEAgdmVjdF9j cmVhdGVfdmVjdG9yaXplZF9wcm9tb3Rpb25fc3RtdHMgKHZlY19pbmZvICp2aW5mbywKIAl2 b3AxID0gTlVMTF9UUkVFOwogCiAgICAgICAvKiBHZW5lcmF0ZSB0aGUgdHdvIGhhbHZlcyBv ZiBwcm9tb3Rpb24gb3BlcmF0aW9uLiAgKi8KLSAgICAgIG5ld19zdG10MSA9IHZlY3RfZ2Vu X3dpZGVuZWRfcmVzdWx0c19oYWxmICh2aW5mbywgY29kZTEsIHZvcDAsIHZvcDEsCisgICAg ICBuZXdfc3RtdDEgPSB2ZWN0X2dlbl93aWRlbmVkX3Jlc3VsdHNfaGFsZiAodmluZm8sIGNo MSwgdm9wMCwgdm9wMSwKIAkJCQkJCSBvcF90eXBlLCB2ZWNfZGVzdCwgZ3NpLAogCQkJCQkJ IHN0bXRfaW5mbyk7Ci0gICAgICBuZXdfc3RtdDIgPSB2ZWN0X2dlbl93aWRlbmVkX3Jlc3Vs dHNfaGFsZiAodmluZm8sIGNvZGUyLCB2b3AwLCB2b3AxLAorICAgICAgbmV3X3N0bXQyID0g dmVjdF9nZW5fd2lkZW5lZF9yZXN1bHRzX2hhbGYgKHZpbmZvLCBjaDIsIHZvcDAsIHZvcDEs CiAJCQkJCQkgb3BfdHlwZSwgdmVjX2Rlc3QsIGdzaSwKIAkJCQkJCSBzdG10X2luZm8pOwog ICAgICAgaWYgKGlzX2dpbXBsZV9jYWxsIChuZXdfc3RtdDEpKQpAQCAtNDk3OCw4ICs0OTc3 LDkgQEAgdmVjdG9yaXphYmxlX2NvbnZlcnNpb24gKHZlY19pbmZvICp2aW5mbywKICAgdHJl ZSBzY2FsYXJfZGVzdDsKICAgdHJlZSBvcDAsIG9wMSA9IE5VTExfVFJFRTsKICAgbG9vcF92 ZWNfaW5mbyBsb29wX3ZpbmZvID0gZHluX2Nhc3QgPGxvb3BfdmVjX2luZm8+ICh2aW5mbyk7 Ci0gIGVudW0gdHJlZV9jb2RlIGNvZGUsIGNvZGUxID0gRVJST1JfTUFSSywgY29kZTIgPSBF UlJPUl9NQVJLOwotICBlbnVtIHRyZWVfY29kZSBjb2RlY3Z0MSA9IEVSUk9SX01BUkssIGNv ZGVjdnQyID0gRVJST1JfTUFSSzsKKyAgdHJlZV9jb2RlIHRjMTsKKyAgY29kZV9oZWxwZXIg Y29kZSwgY29kZTEsIGNvZGUyOworICBjb2RlX2hlbHBlciBjb2RlY3Z0MSA9IEVSUk9SX01B UkssIGNvZGVjdnQyID0gRVJST1JfTUFSSzsKICAgdHJlZSBuZXdfdGVtcDsKICAgZW51bSB2 ZWN0X2RlZl90eXBlIGR0WzJdID0ge3ZlY3RfdW5rbm93bl9kZWZfdHlwZSwgdmVjdF91bmtu b3duX2RlZl90eXBlfTsKICAgaW50IG5kdHMgPSAyOwpAQCAtNTAwOCwzMSArNTAwOCw0MyBA QCB2ZWN0b3JpemFibGVfY29udmVyc2lvbiAodmVjX2luZm8gKnZpbmZvLAogICAgICAgJiYg ISB2ZWNfc3RtdCkKICAgICByZXR1cm4gZmFsc2U7CiAKLSAgZ2Fzc2lnbiAqc3RtdCA9IGR5 bl9jYXN0IDxnYXNzaWduICo+IChzdG10X2luZm8tPnN0bXQpOwotICBpZiAoIXN0bXQpCisg IGdpbXBsZSogc3RtdCA9IHN0bXRfaW5mby0+c3RtdDsKKyAgaWYgKCEoaXNfZ2ltcGxlX2Fz c2lnbiAoc3RtdCkgfHwgaXNfZ2ltcGxlX2NhbGwgKHN0bXQpKSkKICAgICByZXR1cm4gZmFs c2U7CiAKLSAgaWYgKFRSRUVfQ09ERSAoZ2ltcGxlX2Fzc2lnbl9saHMgKHN0bXQpKSAhPSBT U0FfTkFNRSkKKyAgaWYgKGdpbXBsZV9nZXRfbGhzIChzdG10KSA9PSBOVUxMX1RSRUUKKyAg ICAgIHx8IFRSRUVfQ09ERSAoZ2ltcGxlX2dldF9saHMgKHN0bXQpKSAhPSBTU0FfTkFNRSkK ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgY29kZSA9IGdpbXBsZV9hc3NpZ25fcmhzX2NvZGUg KHN0bXQpOwotICBpZiAoIUNPTlZFUlRfRVhQUl9DT0RFX1AgKGNvZGUpCi0gICAgICAmJiBj b2RlICE9IEZJWF9UUlVOQ19FWFBSCi0gICAgICAmJiBjb2RlICE9IEZMT0FUX0VYUFIKLSAg ICAgICYmIGNvZGUgIT0gV0lERU5fUExVU19FWFBSCi0gICAgICAmJiBjb2RlICE9IFdJREVO X01JTlVTX0VYUFIKLSAgICAgICYmIGNvZGUgIT0gV0lERU5fTVVMVF9FWFBSCi0gICAgICAm JiBjb2RlICE9IFdJREVOX0xTSElGVF9FWFBSKQorICBpZiAoVFJFRV9DT0RFIChnaW1wbGVf Z2V0X2xocyAoc3RtdCkpICE9IFNTQV9OQU1FKQorICAgIHJldHVybiBmYWxzZTsKKworICBp ZiAoaXNfZ2ltcGxlX2Fzc2lnbiAoc3RtdCkpCisgICAgeworICAgICAgY29kZSA9IGdpbXBs ZV9hc3NpZ25fcmhzX2NvZGUgKHN0bXQpOworICAgICAgb3BfdHlwZSA9IFRSRUVfQ09ERV9M RU5HVEggKGNvZGUuc2FmZV9hc190cmVlX2NvZGUgKCkpOworICAgIH0KKyAgZWxzZSBpZiAo Z2ltcGxlX2NhbGxfaW50ZXJuYWxfcCAoc3RtdCkpCisgICAgeworICAgICAgY29kZSA9IGdp bXBsZV9jYWxsX2ludGVybmFsX2ZuIChzdG10KTsKKyAgICAgIG9wX3R5cGUgPSBnaW1wbGVf Y2FsbF9udW1fYXJncyAoc3RtdCk7CisgICAgfQorICBlbHNlCiAgICAgcmV0dXJuIGZhbHNl OwogCiAgIGJvb2wgd2lkZW5fYXJpdGggPSAoY29kZSA9PSBXSURFTl9QTFVTX0VYUFIKLQkJ ICAgICAgfHwgY29kZSA9PSBXSURFTl9NSU5VU19FWFBSCi0JCSAgICAgIHx8IGNvZGUgPT0g V0lERU5fTVVMVF9FWFBSCi0JCSAgICAgIHx8IGNvZGUgPT0gV0lERU5fTFNISUZUX0VYUFIp OwotICBvcF90eXBlID0gVFJFRV9DT0RFX0xFTkdUSCAoY29kZSk7CisJCSB8fCBjb2RlID09 IFdJREVOX01JTlVTX0VYUFIKKwkJIHx8IGNvZGUgPT0gV0lERU5fTVVMVF9FWFBSCisJCSB8 fCBjb2RlID09IFdJREVOX0xTSElGVF9FWFBSKTsKKworICBpZiAoIXdpZGVuX2FyaXRoCisg ICAgICAmJiAhQ09OVkVSVF9FWFBSX0NPREVfUCAoY29kZSkKKyAgICAgICYmIGNvZGUgIT0g RklYX1RSVU5DX0VYUFIKKyAgICAgICYmIGNvZGUgIT0gRkxPQVRfRVhQUikKKyAgICByZXR1 cm4gZmFsc2U7CiAKICAgLyogQ2hlY2sgdHlwZXMgb2YgbGhzIGFuZCByaHMuICAqLwotICBz Y2FsYXJfZGVzdCA9IGdpbXBsZV9hc3NpZ25fbGhzIChzdG10KTsKKyAgc2NhbGFyX2Rlc3Qg PSBnaW1wbGVfZ2V0X2xocyAoc3RtdCk7CiAgIGxoc190eXBlID0gVFJFRV9UWVBFIChzY2Fs YXJfZGVzdCk7CiAgIHZlY3R5cGVfb3V0ID0gU1RNVF9WSU5GT19WRUNUWVBFIChzdG10X2lu Zm8pOwogCkBAIC01MDcwLDEwICs1MDgyLDE0IEBAIHZlY3Rvcml6YWJsZV9jb252ZXJzaW9u ICh2ZWNfaW5mbyAqdmluZm8sCiAKICAgaWYgKG9wX3R5cGUgPT0gYmluYXJ5X29wKQogICAg IHsKLSAgICAgIGdjY19hc3NlcnQgKGNvZGUgPT0gV0lERU5fTVVMVF9FWFBSIHx8IGNvZGUg PT0gV0lERU5fTFNISUZUX0VYUFIKLQkJICB8fCBjb2RlID09IFdJREVOX1BMVVNfRVhQUiB8 fCBjb2RlID09IFdJREVOX01JTlVTX0VYUFIpOworICAgICAgZ2NjX2Fzc2VydCAoY29kZSA9 PSBXSURFTl9NVUxUX0VYUFIKKwkJICB8fCBjb2RlID09IFdJREVOX0xTSElGVF9FWFBSCisJ CSAgfHwgY29kZSA9PSBXSURFTl9QTFVTX0VYUFIKKwkJICB8fCBjb2RlID09IFdJREVOX01J TlVTX0VYUFIpOworCiAKLSAgICAgIG9wMSA9IGdpbXBsZV9hc3NpZ25fcmhzMiAoc3RtdCk7 CisgICAgICBvcDEgPSBpc19naW1wbGVfYXNzaWduIChzdG10KSA/IGdpbXBsZV9hc3NpZ25f cmhzMiAoc3RtdCkgOgorCQkJCSAgICAgZ2ltcGxlX2NhbGxfYXJnIChzdG10LCAwKTsKICAg ICAgIHRyZWUgdmVjdHlwZTFfaW47CiAgICAgICBpZiAoIXZlY3RfaXNfc2ltcGxlX3VzZSAo dmluZm8sIHN0bXRfaW5mbywgc2xwX25vZGUsIDEsCiAJCQkgICAgICAgJm9wMSwgJnNscF9v cDEsICZkdFsxXSwgJnZlY3R5cGUxX2luKSkKQEAgLTUxNTcsOCArNTE3MywxMiBAQCB2ZWN0 b3JpemFibGVfY29udmVyc2lvbiAodmVjX2luZm8gKnZpbmZvLAogCSAgJiYgY29kZSAhPSBG TE9BVF9FWFBSCiAJICAmJiAhQ09OVkVSVF9FWFBSX0NPREVfUCAoY29kZSkpCiAJcmV0dXJu IGZhbHNlOwotICAgICAgaWYgKHN1cHBvcnRhYmxlX2NvbnZlcnRfb3BlcmF0aW9uIChjb2Rl LCB2ZWN0eXBlX291dCwgdmVjdHlwZV9pbiwgJmNvZGUxKSkKKyAgICAgIGlmIChzdXBwb3J0 YWJsZV9jb252ZXJ0X29wZXJhdGlvbiAoY29kZS5zYWZlX2FzX3RyZWVfY29kZSAoKSwgdmVj dHlwZV9vdXQsCisJCQkJCSB2ZWN0eXBlX2luLCAmdGMxKSkKKyAgICAgIHsKKwljb2RlMSA9 IHRjMTsKIAlicmVhazsKKyAgICAgIH0KICAgICAgIC8qIEZBTExUSFJVICovCiAgICAgdW5z dXBwb3J0ZWQ6CiAgICAgICBpZiAoZHVtcF9lbmFibGVkX3AgKCkpCkBAIC01MTY5LDkgKzUx ODksMTEgQEAgdmVjdG9yaXphYmxlX2NvbnZlcnNpb24gKHZlY19pbmZvICp2aW5mbywKICAg ICBjYXNlIFdJREVOOgogICAgICAgaWYgKGtub3duX2VxIChudW5pdHNfaW4sIG51bml0c19v dXQpKQogCXsKLQkgIGlmICghc3VwcG9ydGFibGVfaGFsZl93aWRlbmluZ19vcGVyYXRpb24g KGNvZGUsIHZlY3R5cGVfb3V0LAotCQkJCQkJICAgdmVjdHlwZV9pbiwgJmNvZGUxKSkKKwkg IGlmICghc3VwcG9ydGFibGVfaGFsZl93aWRlbmluZ19vcGVyYXRpb24gKGNvZGUuc2FmZV9h c190cmVlX2NvZGUgKCksCisJCQkJCQkgICAgdmVjdHlwZV9vdXQsIHZlY3R5cGVfaW4sCisJ CQkJCQkgICAgJnRjMSkpCiAJICAgIGdvdG8gdW5zdXBwb3J0ZWQ7CisJICBjb2RlMSA9IHRj MTsKIAkgIGdjY19hc3NlcnQgKCEobXVsdGlfc3RlcF9jdnQgJiYgb3BfdHlwZSA9PSBiaW5h cnlfb3ApKTsKIAkgIGJyZWFrOwogCX0KQEAgLTUyMDUsMTQgKzUyMjcsMTcgQEAgdmVjdG9y aXphYmxlX2NvbnZlcnNpb24gKHZlY19pbmZvICp2aW5mbywKIAogCSAgaWYgKEdFVF9NT0RF X1NJWkUgKHJoc19tb2RlKSA9PSBmbHRzeikKIAkgICAgewotCSAgICAgIGlmICghc3VwcG9y dGFibGVfY29udmVydF9vcGVyYXRpb24gKGNvZGUsIHZlY3R5cGVfb3V0LAotCQkJCQkJICBj dnRfdHlwZSwgJmNvZGVjdnQxKSkKKwkgICAgICB0YzEgPSBFUlJPUl9NQVJLOworCSAgICAg IGlmICghc3VwcG9ydGFibGVfY29udmVydF9vcGVyYXRpb24gKGNvZGUuc2FmZV9hc190cmVl X2NvZGUgKCksCisJCQkJCQkgIHZlY3R5cGVfb3V0LAorCQkJCQkJICBjdnRfdHlwZSwgJnRj MSkpCiAJCWdvdG8gdW5zdXBwb3J0ZWQ7CisJICAgICAgY29kZWN2dDEgPSB0YzE7CiAJICAg IH0KLQkgIGVsc2UgaWYgKCFzdXBwb3J0YWJsZV93aWRlbmluZ19vcGVyYXRpb24gKHZpbmZv LCBjb2RlLCBzdG10X2luZm8sCi0JCQkJCQkgICAgdmVjdHlwZV9vdXQsIGN2dF90eXBlLAot CQkJCQkJICAgICZjb2RlY3Z0MSwgJmNvZGVjdnQyLAotCQkJCQkJICAgICZtdWx0aV9zdGVw X2N2dCwKKwkgIGVsc2UgaWYgKCFzdXBwb3J0YWJsZV93aWRlbmluZ19vcGVyYXRpb24gKHZp bmZvLCBjb2RlLAorCQkJCQkJICAgIHN0bXRfaW5mbywgdmVjdHlwZV9vdXQsCisJCQkJCQkg ICAgY3Z0X3R5cGUsICZjb2RlY3Z0MSwKKwkJCQkJCSAgICAmY29kZWN2dDIsICZtdWx0aV9z dGVwX2N2dCwKIAkJCQkJCSAgICAmaW50ZXJtX3R5cGVzKSkKIAkgICAgY29udGludWU7CiAJ ICBlbHNlCkBAIC01MjIwLDggKzUyNDUsOSBAQCB2ZWN0b3JpemFibGVfY29udmVyc2lvbiAo dmVjX2luZm8gKnZpbmZvLAogCiAJICBpZiAoc3VwcG9ydGFibGVfd2lkZW5pbmdfb3BlcmF0 aW9uICh2aW5mbywgTk9QX0VYUFIsIHN0bXRfaW5mbywKIAkJCQkJICAgICAgY3Z0X3R5cGUs Ci0JCQkJCSAgICAgIHZlY3R5cGVfaW4sICZjb2RlMSwgJmNvZGUyLAotCQkJCQkgICAgICAm bXVsdGlfc3RlcF9jdnQsICZpbnRlcm1fdHlwZXMpKQorCQkJCQkgICAgICB2ZWN0eXBlX2lu LCAmY29kZTEsCisJCQkJCSAgICAgICZjb2RlMiwgJm11bHRpX3N0ZXBfY3Z0LAorCQkJCQkg ICAgICAmaW50ZXJtX3R5cGVzKSkKIAkgICAgewogCSAgICAgIGZvdW5kX21vZGUgPSB0cnVl OwogCSAgICAgIGJyZWFrOwpAQCAtNTI0MywxMCArNTI2OSwxNSBAQCB2ZWN0b3JpemFibGVf Y29udmVyc2lvbiAodmVjX2luZm8gKnZpbmZvLAogCiAgICAgY2FzZSBOQVJST1c6CiAgICAg ICBnY2NfYXNzZXJ0IChvcF90eXBlID09IHVuYXJ5X29wKTsKLSAgICAgIGlmIChzdXBwb3J0 YWJsZV9uYXJyb3dpbmdfb3BlcmF0aW9uIChjb2RlLCB2ZWN0eXBlX291dCwgdmVjdHlwZV9p biwKLQkJCQkJICAgJmNvZGUxLCAmbXVsdGlfc3RlcF9jdnQsCisgICAgICBpZiAoc3VwcG9y dGFibGVfbmFycm93aW5nX29wZXJhdGlvbiAoY29kZS5zYWZlX2FzX3RyZWVfY29kZSAoKSwK KwkJCQkJICAgdmVjdHlwZV9vdXQsCisJCQkJCSAgIHZlY3R5cGVfaW4sCisJCQkJCSAgICZ0 YzEsICZtdWx0aV9zdGVwX2N2dCwKIAkJCQkJICAgJmludGVybV90eXBlcykpCi0JYnJlYWs7 CisJeworCSAgY29kZTEgPSB0YzE7CisJICBicmVhazsKKwl9CiAKICAgICAgIGlmIChjb2Rl ICE9IEZJWF9UUlVOQ19FWFBSCiAJICB8fCBHRVRfTU9ERV9TSVpFIChsaHNfbW9kZSkgPj0g R0VUX01PREVfU0laRSAocmhzX21vZGUpKQpAQCAtNTI1NywxMyArNTI4OCwxOCBAQCB2ZWN0 b3JpemFibGVfY29udmVyc2lvbiAodmVjX2luZm8gKnZpbmZvLAogICAgICAgY3Z0X3R5cGUg PSBnZXRfc2FtZV9zaXplZF92ZWN0eXBlIChjdnRfdHlwZSwgdmVjdHlwZV9pbik7CiAgICAg ICBpZiAoY3Z0X3R5cGUgPT0gTlVMTF9UUkVFKQogCWdvdG8gdW5zdXBwb3J0ZWQ7Ci0gICAg ICBpZiAoIXN1cHBvcnRhYmxlX2NvbnZlcnRfb3BlcmF0aW9uIChjb2RlLCBjdnRfdHlwZSwg dmVjdHlwZV9pbiwKLQkJCQkJICAmY29kZWN2dDEpKQorICAgICAgaWYgKCFzdXBwb3J0YWJs ZV9jb252ZXJ0X29wZXJhdGlvbiAoY29kZS5zYWZlX2FzX3RyZWVfY29kZSAoKSwgY3Z0X3R5 cGUsCisJCQkJCSAgdmVjdHlwZV9pbiwKKwkJCQkJICAmdGMxKSkKIAlnb3RvIHVuc3VwcG9y dGVkOworICAgICAgY29kZWN2dDEgPSB0YzE7CiAgICAgICBpZiAoc3VwcG9ydGFibGVfbmFy cm93aW5nX29wZXJhdGlvbiAoTk9QX0VYUFIsIHZlY3R5cGVfb3V0LCBjdnRfdHlwZSwKLQkJ CQkJICAgJmNvZGUxLCAmbXVsdGlfc3RlcF9jdnQsCisJCQkJCSAgICZ0YzEsICZtdWx0aV9z dGVwX2N2dCwKIAkJCQkJICAgJmludGVybV90eXBlcykpCi0JYnJlYWs7CisJeworCSAgY29k ZTEgPSB0YzE7CisJICBicmVhazsKKwl9CiAgICAgICBnb3RvIHVuc3VwcG9ydGVkOwogCiAg ICAgZGVmYXVsdDoKQEAgLTUzNzcsOCArNTQxMywxMCBAQCB2ZWN0b3JpemFibGVfY29udmVy c2lvbiAodmVjX2luZm8gKnZpbmZvLAogICAgICAgRk9SX0VBQ0hfVkVDX0VMVCAodmVjX29w cm5kczAsIGksIHZvcDApCiAJewogCSAgLyogQXJndW1lbnRzIGFyZSByZWFkeSwgY3JlYXRl IHRoZSBuZXcgdmVjdG9yIHN0bXQuICAqLwotCSAgZ2NjX2Fzc2VydCAoVFJFRV9DT0RFX0xF TkdUSCAoY29kZTEpID09IHVuYXJ5X29wKTsKLQkgIGdhc3NpZ24gKm5ld19zdG10ID0gZ2lt cGxlX2J1aWxkX2Fzc2lnbiAodmVjX2Rlc3QsIGNvZGUxLCB2b3AwKTsKKwkgIGdjY19hc3Nl cnQgKFRSRUVfQ09ERV9MRU5HVEggKCh0cmVlX2NvZGUpIGNvZGUxKSA9PSB1bmFyeV9vcCk7 CisJICBnYXNzaWduICpuZXdfc3RtdCA9IGdpbXBsZV9idWlsZF9hc3NpZ24gKHZlY19kZXN0 LAorCQkJCQkJICAgY29kZTEuc2FmZV9hc190cmVlX2NvZGUgKCksCisJCQkJCQkgICB2b3Aw KTsKIAkgIG5ld190ZW1wID0gbWFrZV9zc2FfbmFtZSAodmVjX2Rlc3QsIG5ld19zdG10KTsK IAkgIGdpbXBsZV9hc3NpZ25fc2V0X2xocyAobmV3X3N0bXQsIG5ld190ZW1wKTsKIAkgIHZl Y3RfZmluaXNoX3N0bXRfZ2VuZXJhdGlvbiAodmluZm8sIHN0bXRfaW5mbywgbmV3X3N0bXQs IGdzaSk7CkBAIC01NDEwLDcgKzU0NDgsNyBAQCB2ZWN0b3JpemFibGVfY29udmVyc2lvbiAo dmVjX2luZm8gKnZpbmZvLAogICAgICAgZm9yIChpID0gbXVsdGlfc3RlcF9jdnQ7IGkgPj0g MDsgaS0tKQogCXsKIAkgIHRyZWUgdGhpc19kZXN0ID0gdmVjX2RzdHNbaV07Ci0JICBlbnVt IHRyZWVfY29kZSBjMSA9IGNvZGUxLCBjMiA9IGNvZGUyOworCSAgY29kZV9oZWxwZXIgYzEg PSBjb2RlMSwgYzIgPSBjb2RlMjsKIAkgIGlmIChpID09IDAgJiYgY29kZWN2dDIgIT0gRVJS T1JfTUFSSykKIAkgICAgewogCSAgICAgIGMxID0gY29kZWN2dDE7CkBAIC01NDIwLDcgKzU0 NTgsOCBAQCB2ZWN0b3JpemFibGVfY29udmVyc2lvbiAodmVjX2luZm8gKnZpbmZvLAogCSAg ICB2ZWN0X2NyZWF0ZV9oYWxmX3dpZGVuaW5nX3N0bXRzICh2aW5mbywgJnZlY19vcHJuZHMw LAogCQkJCQkJICAgICZ2ZWNfb3BybmRzMSwgc3RtdF9pbmZvLAogCQkJCQkJICAgIHRoaXNf ZGVzdCwgZ3NpLAotCQkJCQkJICAgIGMxLCBvcF90eXBlKTsKKwkJCQkJCSAgICBjMS5zYWZl X2FzX3RyZWVfY29kZSAoKSwKKwkJCQkJCSAgICBvcF90eXBlKTsKIAkgIGVsc2UKIAkgICAg dmVjdF9jcmVhdGVfdmVjdG9yaXplZF9wcm9tb3Rpb25fc3RtdHMgKHZpbmZvLCAmdmVjX29w cm5kczAsCiAJCQkJCQkgICAgJnZlY19vcHJuZHMxLCBzdG10X2luZm8sCkBAIC01NDMzLDkg KzU0NzIsMTEgQEAgdmVjdG9yaXphYmxlX2NvbnZlcnNpb24gKHZlY19pbmZvICp2aW5mbywK IAkgIGdpbXBsZSAqbmV3X3N0bXQ7CiAJICBpZiAoY3Z0X3R5cGUpCiAJICAgIHsKLQkgICAg ICBnY2NfYXNzZXJ0IChUUkVFX0NPREVfTEVOR1RIIChjb2RlY3Z0MSkgPT0gdW5hcnlfb3Ap OworCSAgICAgIGdjY19hc3NlcnQgKFRSRUVfQ09ERV9MRU5HVEggKCh0cmVlX2NvZGUpIGNv ZGVjdnQxKSA9PSB1bmFyeV9vcCk7CiAJICAgICAgbmV3X3RlbXAgPSBtYWtlX3NzYV9uYW1l ICh2ZWNfZGVzdCk7Ci0JICAgICAgbmV3X3N0bXQgPSBnaW1wbGVfYnVpbGRfYXNzaWduIChu ZXdfdGVtcCwgY29kZWN2dDEsIHZvcDApOworCSAgICAgIG5ld19zdG10ID0gZ2ltcGxlX2J1 aWxkX2Fzc2lnbiAobmV3X3RlbXAsCisJCQkJCSAgICAgIGNvZGVjdnQxLnNhZmVfYXNfdHJl ZV9jb2RlICgpLAorCQkJCQkgICAgICB2b3AwKTsKIAkgICAgICB2ZWN0X2ZpbmlzaF9zdG10 X2dlbmVyYXRpb24gKHZpbmZvLCBzdG10X2luZm8sIG5ld19zdG10LCBnc2kpOwogCSAgICB9 CiAJICBlbHNlCkBAIC01NDU5LDEwICs1NTAwLDEyIEBAIHZlY3Rvcml6YWJsZV9jb252ZXJz aW9uICh2ZWNfaW5mbyAqdmluZm8sCiAgICAgICBpZiAoY3Z0X3R5cGUpCiAJRk9SX0VBQ0hf VkVDX0VMVCAodmVjX29wcm5kczAsIGksIHZvcDApCiAJICB7Ci0JICAgIGdjY19hc3NlcnQg KFRSRUVfQ09ERV9MRU5HVEggKGNvZGVjdnQxKSA9PSB1bmFyeV9vcCk7CisJICAgIGdjY19h c3NlcnQgKFRSRUVfQ09ERV9MRU5HVEggKCgodHJlZV9jb2RlKSBjb2RlY3Z0MSkpID09IHVu YXJ5X29wKTsKIAkgICAgbmV3X3RlbXAgPSBtYWtlX3NzYV9uYW1lICh2ZWNfZGVzdCk7CiAJ ICAgIGdhc3NpZ24gKm5ld19zdG10Ci0JICAgICAgPSBnaW1wbGVfYnVpbGRfYXNzaWduIChu ZXdfdGVtcCwgY29kZWN2dDEsIHZvcDApOworCSAgICAgID0gZ2ltcGxlX2J1aWxkX2Fzc2ln biAobmV3X3RlbXAsCisJCQkJICAgICBjb2RlY3Z0MS5zYWZlX2FzX3RyZWVfY29kZSAoKSwK KwkJCQkgICAgIHZvcDApOwogCSAgICB2ZWN0X2ZpbmlzaF9zdG10X2dlbmVyYXRpb24gKHZp bmZvLCBzdG10X2luZm8sIG5ld19zdG10LCBnc2kpOwogCSAgICB2ZWNfb3BybmRzMFtpXSA9 IG5ld190ZW1wOwogCSAgfQpAQCAtNTQ3MCw3ICs1NTEzLDggQEAgdmVjdG9yaXphYmxlX2Nv bnZlcnNpb24gKHZlY19pbmZvICp2aW5mbywKICAgICAgIHZlY3RfY3JlYXRlX3ZlY3Rvcml6 ZWRfZGVtb3Rpb25fc3RtdHMgKHZpbmZvLCAmdmVjX29wcm5kczAsCiAJCQkJCSAgICAgbXVs dGlfc3RlcF9jdnQsCiAJCQkJCSAgICAgc3RtdF9pbmZvLCB2ZWNfZHN0cywgZ3NpLAotCQkJ CQkgICAgIHNscF9ub2RlLCBjb2RlMSk7CisJCQkJCSAgICAgc2xwX25vZGUsCisJCQkJCSAg ICAgY29kZTEuc2FmZV9hc190cmVlX2NvZGUgKCkpOwogICAgICAgYnJlYWs7CiAgICAgfQog ICBpZiAoIXNscF9ub2RlKQpAQCAtMTIxNTEsOSArMTIxOTUsMTEgQEAgdmVjdF9tYXliZV91 cGRhdGVfc2xwX29wX3ZlY3R5cGUgKHNscF90cmVlIG9wLCB0cmVlIHZlY3R5cGUpCiAKIGJv b2wKIHN1cHBvcnRhYmxlX3dpZGVuaW5nX29wZXJhdGlvbiAodmVjX2luZm8gKnZpbmZvLAot CQkJCWVudW0gdHJlZV9jb2RlIGNvZGUsIHN0bXRfdmVjX2luZm8gc3RtdF9pbmZvLAorCQkJ CWNvZGVfaGVscGVyIGNvZGUsCisJCQkJc3RtdF92ZWNfaW5mbyBzdG10X2luZm8sCiAJCQkJ dHJlZSB2ZWN0eXBlX291dCwgdHJlZSB2ZWN0eXBlX2luLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBlbnVtIHRyZWVfY29kZSAqY29kZTEsIGVudW0gdHJlZV9jb2RlICpj b2RlMiwKKwkJCQljb2RlX2hlbHBlciAqY29kZTEsCisJCQkJY29kZV9oZWxwZXIgKmNvZGUy LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKm11bHRpX3N0ZXBfY3Z0 LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWM8dHJlZT4gKmludGVybV90 eXBlcykKIHsKQEAgLTEyMTY0LDcgKzEyMjEwLDcgQEAgc3VwcG9ydGFibGVfd2lkZW5pbmdf b3BlcmF0aW9uICh2ZWNfaW5mbyAqdmluZm8sCiAgIG9wdGFiIG9wdGFiMSwgb3B0YWIyOwog ICB0cmVlIHZlY3R5cGUgPSB2ZWN0eXBlX2luOwogICB0cmVlIHdpZGVfdmVjdHlwZSA9IHZl Y3R5cGVfb3V0OwotICBlbnVtIHRyZWVfY29kZSBjMSwgYzI7CisgIGNvZGVfaGVscGVyIGMx ID0gTUFYX1RSRUVfQ09ERVMsIGMyID0gTUFYX1RSRUVfQ09ERVM7CiAgIGludCBpOwogICB0 cmVlIHByZXZfdHlwZSwgaW50ZXJtZWRpYXRlX3R5cGU7CiAgIG1hY2hpbmVfbW9kZSBpbnRl cm1lZGlhdGVfbW9kZSwgcHJldl9tb2RlOwpAQCAtMTIxNzQsNyArMTIyMjAsNyBAQCBzdXBw b3J0YWJsZV93aWRlbmluZ19vcGVyYXRpb24gKHZlY19pbmZvICp2aW5mbywKICAgaWYgKGxv b3BfaW5mbykKICAgICB2ZWN0X2xvb3AgPSBMT09QX1ZJTkZPX0xPT1AgKGxvb3BfaW5mbyk7 CiAKLSAgc3dpdGNoIChjb2RlKQorICBzd2l0Y2ggKGNvZGUuc2FmZV9hc190cmVlX2NvZGUg KCkpCiAgICAgewogICAgIGNhc2UgV0lERU5fTVVMVF9FWFBSOgogICAgICAgLyogVGhlIHJl c3VsdCBvZiBhIHZlY3Rvcml6ZWQgd2lkZW5pbmcgb3BlcmF0aW9uIHVzdWFsbHkgcmVxdWly ZXMKQEAgLTEyMjE1LDggKzEyMjYxLDkgQEAgc3VwcG9ydGFibGVfd2lkZW5pbmdfb3BlcmF0 aW9uICh2ZWNfaW5mbyAqdmluZm8sCiAJICAmJiAhbmVzdGVkX2luX3ZlY3RfbG9vcF9wICh2 ZWN0X2xvb3AsIHN0bXRfaW5mbykKIAkgICYmIHN1cHBvcnRhYmxlX3dpZGVuaW5nX29wZXJh dGlvbiAodmluZm8sIFZFQ19XSURFTl9NVUxUX0VWRU5fRVhQUiwKIAkJCQkJICAgICBzdG10 X2luZm8sIHZlY3R5cGVfb3V0LAotCQkJCQkgICAgIHZlY3R5cGVfaW4sIGNvZGUxLCBjb2Rl MiwKLQkJCQkJICAgICBtdWx0aV9zdGVwX2N2dCwgaW50ZXJtX3R5cGVzKSkKKwkJCQkJICAg ICB2ZWN0eXBlX2luLCBjb2RlMSwKKwkJCQkJICAgICBjb2RlMiwgbXVsdGlfc3RlcF9jdnQs CisJCQkJCSAgICAgaW50ZXJtX3R5cGVzKSkKICAgICAgICAgewogICAgICAgICAgIC8qIEVs ZW1lbnRzIGluIGEgdmVjdG9yIHdpdGggdmVjdF91c2VkX2J5X3JlZHVjdGlvbiBwcm9wZXJ0 eSBjYW5ub3QKICAgICAgICAgICAgICBiZSByZW9yZGVyZWQgaWYgdGhlIHVzZSBjaGFpbiB3 aXRoIHRoaXMgcHJvcGVydHkgZG9lcyBub3QgaGF2ZSB0aGUKQEAgLTEyMjc5LDYgKzEyMzI2 LDkgQEAgc3VwcG9ydGFibGVfd2lkZW5pbmdfb3BlcmF0aW9uICh2ZWNfaW5mbyAqdmluZm8s CiAgICAgICBjMiA9IFZFQ19VTlBBQ0tfRklYX1RSVU5DX0hJX0VYUFI7CiAgICAgICBicmVh azsKIAorICAgIGNhc2UgTUFYX1RSRUVfQ09ERVM6CisgICAgICBicmVhazsKKwogICAgIGRl ZmF1bHQ6CiAgICAgICBnY2NfdW5yZWFjaGFibGUgKCk7CiAgICAgfQpAQCAtMTIyODksMTAg KzEyMzM5LDEyIEBAIHN1cHBvcnRhYmxlX3dpZGVuaW5nX29wZXJhdGlvbiAodmVjX2luZm8g KnZpbmZvLAogICBpZiAoY29kZSA9PSBGSVhfVFJVTkNfRVhQUikKICAgICB7CiAgICAgICAv KiBUaGUgc2lnbmVkbmVzcyBpcyBkZXRlcm1pbmVkIGZyb20gb3V0cHV0IG9wZXJhbmQuICAq LwotICAgICAgb3B0YWIxID0gb3B0YWJfZm9yX3RyZWVfY29kZSAoYzEsIHZlY3R5cGVfb3V0 LCBvcHRhYl9kZWZhdWx0KTsKLSAgICAgIG9wdGFiMiA9IG9wdGFiX2Zvcl90cmVlX2NvZGUg KGMyLCB2ZWN0eXBlX291dCwgb3B0YWJfZGVmYXVsdCk7CisgICAgICBvcHRhYjEgPSBvcHRh Yl9mb3JfdHJlZV9jb2RlIChjMS5zYWZlX2FzX3RyZWVfY29kZSAoKSwgdmVjdHlwZV9vdXQs CisJCQkJICAgIG9wdGFiX2RlZmF1bHQpOworICAgICAgb3B0YWIyID0gb3B0YWJfZm9yX3Ry ZWVfY29kZSAoYzIuc2FmZV9hc190cmVlX2NvZGUgKCksIHZlY3R5cGVfb3V0LAorCQkJCSAg ICBvcHRhYl9kZWZhdWx0KTsKICAgICB9Ci0gIGVsc2UgaWYgKENPTlZFUlRfRVhQUl9DT0RF X1AgKGNvZGUpCisgIGVsc2UgaWYgKENPTlZFUlRfRVhQUl9DT0RFX1AgKGNvZGUuc2FmZV9h c190cmVlX2NvZGUgKCkpCiAJICAgJiYgVkVDVE9SX0JPT0xFQU5fVFlQRV9QICh3aWRlX3Zl Y3R5cGUpCiAJICAgJiYgVkVDVE9SX0JPT0xFQU5fVFlQRV9QICh2ZWN0eXBlKQogCSAgICYm IFRZUEVfTU9ERSAod2lkZV92ZWN0eXBlKSA9PSBUWVBFX01PREUgKHZlY3R5cGUpCkBAIC0x MjMwNSw4ICsxMjM1NywxMCBAQCBzdXBwb3J0YWJsZV93aWRlbmluZ19vcGVyYXRpb24gKHZl Y19pbmZvICp2aW5mbywKICAgICB9CiAgIGVsc2UKICAgICB7Ci0gICAgICBvcHRhYjEgPSBv cHRhYl9mb3JfdHJlZV9jb2RlIChjMSwgdmVjdHlwZSwgb3B0YWJfZGVmYXVsdCk7Ci0gICAg ICBvcHRhYjIgPSBvcHRhYl9mb3JfdHJlZV9jb2RlIChjMiwgdmVjdHlwZSwgb3B0YWJfZGVm YXVsdCk7CisgICAgICBvcHRhYjEgPSBvcHRhYl9mb3JfdHJlZV9jb2RlIChjMS5zYWZlX2Fz X3RyZWVfY29kZSAoKSwgdmVjdHlwZSwKKwkJCQkgICAgb3B0YWJfZGVmYXVsdCk7CisgICAg ICBvcHRhYjIgPSBvcHRhYl9mb3JfdHJlZV9jb2RlIChjMi5zYWZlX2FzX3RyZWVfY29kZSAo KSwgdmVjdHlwZSwKKwkJCQkgICAgb3B0YWJfZGVmYXVsdCk7CiAgICAgfQogCiAgIGlmICgh b3B0YWIxIHx8ICFvcHRhYjIpCkBAIC0xMjMxNyw4ICsxMjM3MSwxMiBAQCBzdXBwb3J0YWJs ZV93aWRlbmluZ19vcGVyYXRpb24gKHZlY19pbmZvICp2aW5mbywKICAgICAgICB8fCAoaWNv ZGUyID0gb3B0YWJfaGFuZGxlciAob3B0YWIyLCB2ZWNfbW9kZSkpID09IENPREVfRk9SX25v dGhpbmcpCiAgICAgcmV0dXJuIGZhbHNlOwogCi0gICpjb2RlMSA9IGMxOwotICAqY29kZTIg PSBjMjsKKyAgaWYgKGNvZGUuaXNfdHJlZV9jb2RlICgpKQorICB7CisgICAgKmNvZGUxID0g YzE7CisgICAgKmNvZGUyID0gYzI7CisgIH0KKwogCiAgIGlmIChpbnNuX2RhdGFbaWNvZGUx XS5vcGVyYW5kWzBdLm1vZGUgPT0gVFlQRV9NT0RFICh3aWRlX3ZlY3R5cGUpCiAgICAgICAm JiBpbnNuX2RhdGFbaWNvZGUyXS5vcGVyYW5kWzBdLm1vZGUgPT0gVFlQRV9NT0RFICh3aWRl X3ZlY3R5cGUpKQpAQCAtMTIzMzksNyArMTIzOTcsNyBAQCBzdXBwb3J0YWJsZV93aWRlbmlu Z19vcGVyYXRpb24gKHZlY19pbmZvICp2aW5mbywKICAgcHJldl90eXBlID0gdmVjdHlwZTsK ICAgcHJldl9tb2RlID0gdmVjX21vZGU7CiAKLSAgaWYgKCFDT05WRVJUX0VYUFJfQ09ERV9Q IChjb2RlKSkKKyAgaWYgKCFDT05WRVJUX0VYUFJfQ09ERV9QICgodHJlZV9jb2RlKSBjb2Rl KSkKICAgICByZXR1cm4gZmFsc2U7CiAKICAgLyogV2UgYXNzdW1lIGhlcmUgdGhhdCB0aGVy ZSB3aWxsIG5vdCBiZSBtb3JlIHRoYW4gTUFYX0lOVEVSTV9DVlRfU1RFUFMKQEAgLTEyMzc5 LDggKzEyNDM3LDEyIEBAIHN1cHBvcnRhYmxlX3dpZGVuaW5nX29wZXJhdGlvbiAodmVjX2lu Zm8gKnZpbmZvLAogCX0KICAgICAgIGVsc2UKIAl7Ci0JICBvcHRhYjMgPSBvcHRhYl9mb3Jf dHJlZV9jb2RlIChjMSwgaW50ZXJtZWRpYXRlX3R5cGUsIG9wdGFiX2RlZmF1bHQpOwotCSAg b3B0YWI0ID0gb3B0YWJfZm9yX3RyZWVfY29kZSAoYzIsIGludGVybWVkaWF0ZV90eXBlLCBv cHRhYl9kZWZhdWx0KTsKKwkgIG9wdGFiMyA9IG9wdGFiX2Zvcl90cmVlX2NvZGUgKGMxLnNh ZmVfYXNfdHJlZV9jb2RlICgpLAorCQkJCQlpbnRlcm1lZGlhdGVfdHlwZSwKKwkJCQkJb3B0 YWJfZGVmYXVsdCk7CisJICBvcHRhYjQgPSBvcHRhYl9mb3JfdHJlZV9jb2RlIChjMi5zYWZl X2FzX3RyZWVfY29kZSAoKSwKKwkJCQkJaW50ZXJtZWRpYXRlX3R5cGUsCisJCQkJCW9wdGFi X2RlZmF1bHQpOwogCX0KIAogICAgICAgaWYgKCFvcHRhYjMgfHwgIW9wdGFiNApAQCAtMTI0 MzksNyArMTI1MDEsNyBAQCBzdXBwb3J0YWJsZV93aWRlbmluZ19vcGVyYXRpb24gKHZlY19p bmZvICp2aW5mbywKIGJvb2wKIHN1cHBvcnRhYmxlX25hcnJvd2luZ19vcGVyYXRpb24gKGVu dW0gdHJlZV9jb2RlIGNvZGUsCiAJCQkJIHRyZWUgdmVjdHlwZV9vdXQsIHRyZWUgdmVjdHlw ZV9pbiwKLQkJCQkgZW51bSB0cmVlX2NvZGUgKmNvZGUxLCBpbnQgKm11bHRpX3N0ZXBfY3Z0 LAorCQkJCSB0cmVlX2NvZGUgKmNvZGUxLCBpbnQgKm11bHRpX3N0ZXBfY3Z0LAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjPHRyZWU+ICppbnRlcm1fdHlwZXMpCiB7 CiAgIG1hY2hpbmVfbW9kZSB2ZWNfbW9kZTsKZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3Rv cml6ZXIuaCBiL2djYy90cmVlLXZlY3Rvcml6ZXIuaAppbmRleCA5Y2YyZmIyM2ZlMzk3YjQ2 N2Q4OWFhN2NjNWViZWFhMjkzZWQ0Y2NlLi5kMjQxZWJhNmVmMzMwMjIyNWJiZTM3YjM3NGJh YTExZTY0NzJjMjgwIDEwMDY0NAotLS0gYS9nY2MvdHJlZS12ZWN0b3JpemVyLmgKKysrIGIv Z2NjL3RyZWUtdmVjdG9yaXplci5oCkBAIC0yMTM5LDEzICsyMTM5LDEyIEBAIGV4dGVybiBi b29sIHZlY3RfaXNfc2ltcGxlX3VzZSAodmVjX2luZm8gKiwgc3RtdF92ZWNfaW5mbywgc2xw X3RyZWUsCiAJCQkJZW51bSB2ZWN0X2RlZl90eXBlICosCiAJCQkJdHJlZSAqLCBzdG10X3Zl Y19pbmZvICogPSBOVUxMKTsKIGV4dGVybiBib29sIHZlY3RfbWF5YmVfdXBkYXRlX3NscF9v cF92ZWN0eXBlIChzbHBfdHJlZSwgdHJlZSk7Ci1leHRlcm4gYm9vbCBzdXBwb3J0YWJsZV93 aWRlbmluZ19vcGVyYXRpb24gKHZlY19pbmZvICosCi0JCQkJCSAgICBlbnVtIHRyZWVfY29k ZSwgc3RtdF92ZWNfaW5mbywKLQkJCQkJICAgIHRyZWUsIHRyZWUsIGVudW0gdHJlZV9jb2Rl ICosCi0JCQkJCSAgICBlbnVtIHRyZWVfY29kZSAqLCBpbnQgKiwKLQkJCQkJICAgIHZlYzx0 cmVlPiAqKTsKK2V4dGVybiBib29sIHN1cHBvcnRhYmxlX3dpZGVuaW5nX29wZXJhdGlvbiAo dmVjX2luZm8qLCBjb2RlX2hlbHBlciwKKwkJCQkJICAgIHN0bXRfdmVjX2luZm8sIHRyZWUs IHRyZWUsCisJCQkJCSAgICBjb2RlX2hlbHBlciosIGNvZGVfaGVscGVyKiwKKwkJCQkJICAg IGludCosIHZlYzx0cmVlPiAqKTsKIGV4dGVybiBib29sIHN1cHBvcnRhYmxlX25hcnJvd2lu Z19vcGVyYXRpb24gKGVudW0gdHJlZV9jb2RlLCB0cmVlLCB0cmVlLAotCQkJCQkgICAgIGVu dW0gdHJlZV9jb2RlICosIGludCAqLAorCQkJCQkgICAgIHRyZWVfY29kZSAqLCBpbnQgKiwK IAkJCQkJICAgICB2ZWM8dHJlZT4gKik7CiAKIGV4dGVybiB1bnNpZ25lZCByZWNvcmRfc3Rt dF9jb3N0IChzdG10X3ZlY3Rvcl9mb3JfY29zdCAqLCBpbnQsCkBAIC0yNTgzLDQgKzI1ODIs NyBAQCB2ZWN0X2lzX2ludGVnZXJfdHJ1bmNhdGlvbiAoc3RtdF92ZWNfaW5mbyBzdG10X2lu Zm8pCiAJICAmJiBUWVBFX1BSRUNJU0lPTiAobGhzX3R5cGUpIDwgVFlQRV9QUkVDSVNJT04g KHJoc190eXBlKSk7CiB9CiAKKy8qIEJ1aWxkIGEgR0lNUExFX0FTU0lHTiBvciBHSU1QTEVf Q0FMTCB3aXRoIHRoZSB0cmVlX2NvZGUsCisgICBvciBpbnRlcm5hbF9mbiBjb250YWluZWQg aW4gY2gsIHJlc3BlY3RpdmVseS4gICovCitnaW1wbGUgKiB2ZWN0X2dpbXBsZV9idWlsZCAo dHJlZSwgY29kZV9oZWxwZXIsIHRyZWUsIHRyZWUpOwogI2VuZGlmICAvKiBHQ0NfVFJFRV9W RUNUT1JJWkVSX0ggICovCmRpZmYgLS1naXQgYS9nY2MvdHJlZS5oIGIvZ2NjL3RyZWUuaApp bmRleCBhYmNkYjU2MzhkNDlhZWE0Y2NjNDZlZmE4ZTU0MGIxZmE3OGFhMjdhLi5hMjUwYTgw ZTAzMjEyNDFlMTE1ODA4NmFjYjJkZDgzN2Q1ODI3ZTEwIDEwMDY0NAotLS0gYS9nY2MvdHJl ZS5oCisrKyBiL2djYy90cmVlLmgKQEAgLTkzLDYgKzkzLDggQEAgcHVibGljOgogICBib29s IGlzX2ludGVybmFsX2ZuICgpIGNvbnN0OwogICBib29sIGlzX2J1aWx0aW5fZm4gKCkgY29u c3Q7CiAgIGludCBnZXRfcmVwICgpIGNvbnN0IHsgcmV0dXJuIHJlcDsgfQorICBlbnVtIHRy ZWVfY29kZSBzYWZlX2FzX3RyZWVfY29kZSAoKSBjb25zdDsKKyAgY29tYmluZWRfZm4gc2Fm ZV9hc19mbl9jb2RlICgpIGNvbnN0OwogICBib29sIG9wZXJhdG9yPT0gKGNvbnN0IGNvZGVf aGVscGVyICZvdGhlcikgeyByZXR1cm4gcmVwID09IG90aGVyLnJlcDsgfQogICBib29sIG9w ZXJhdG9yIT0gKGNvbnN0IGNvZGVfaGVscGVyICZvdGhlcikgeyByZXR1cm4gcmVwICE9IG90 aGVyLnJlcDsgfQogICBib29sIG9wZXJhdG9yPT0gKHRyZWVfY29kZSBjKSB7IHJldHVybiBy ZXAgPT0gY29kZV9oZWxwZXIgKGMpLnJlcDsgfQpAQCAtMTAyLDYgKzEwNCwxNyBAQCBwcml2 YXRlOgogICBpbnQgcmVwOwogfTsKIAoraW5saW5lIGVudW0gdHJlZV9jb2RlCitjb2RlX2hl bHBlcjo6c2FmZV9hc190cmVlX2NvZGUgKCkgY29uc3QKK3sKKyAgcmV0dXJuIGlzX3RyZWVf Y29kZSAoKSA/ICh0cmVlX2NvZGUpKiB0aGlzIDogTUFYX1RSRUVfQ09ERVM7Cit9CisKK2lu bGluZSBjb21iaW5lZF9mbgorY29kZV9oZWxwZXI6OnNhZmVfYXNfZm5fY29kZSAoKSBjb25z dCB7CisgIHJldHVybiBpc19mbl9jb2RlICgpID8gKGNvbWJpbmVkX2ZuKSAqdGhpcyA6IENG Tl9MQVNUOworfQorCiBpbmxpbmUgY29kZV9oZWxwZXI6Om9wZXJhdG9yIGludGVybmFsX2Zu ICgpIGNvbnN0CiB7CiAgIHJldHVybiBhc19pbnRlcm5hbF9mbiAoY29tYmluZWRfZm4gKCp0 aGlzKSk7Cg== --------------0DqhWVXXPvMN5YVzFFAaipI6 Content-Type: text/plain; charset=UTF-8; name="ifn1.patch" Content-Disposition: attachment; filename="ifn1.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy9pbnRlcm5hbC1mbi5jYyBiL2djYy9pbnRlcm5hbC1mbi5jYwpp bmRleCA2ZTgxZGMwNWUwZTA3MTQyNTY3NTliMDU5NDgxNmRmNDUxNDE1YTJkLi5lNGQ4MTVj ZDU3N2QyNjZkMmJjY2Y2ZmI2OGQ2MmFhYzkxYThiNGNmIDEwMDY0NAotLS0gYS9nY2MvaW50 ZXJuYWwtZm4uY2MKKysrIGIvZ2NjL2ludGVybmFsLWZuLmNjCkBAIC0xNyw2ICsxNyw3IEBA IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCiBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAg SWYgbm90IHNlZQogPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KIAorI2Rl ZmluZSBJTkNMVURFX01BUAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgInN5c3Rl bS5oIgogI2luY2x1ZGUgImNvcmV0eXBlcy5oIgpAQCAtNzAsNiArNzEsMjYgQEAgY29uc3Qg aW50IGludGVybmFsX2ZuX2ZsYWdzX2FycmF5W10gPSB7CiAgIDAKIH07CiAKK2NvbnN0IGVu dW0gaW50ZXJuYWxfZm4gaW50ZXJuYWxfZm5faGlsb19rZXlzX2FycmF5W10gPSB7CisjdW5k ZWYgREVGX0lOVEVSTkFMX09QVEFCX0hJTE9fRk4KKyNkZWZpbmUgREVGX0lOVEVSTkFMX09Q VEFCX0hJTE9fRk4oTkFNRSwgRkxBR1MsIE9QVEFCLCBTT1BUQUIsIFVPUFRBQiwgVFlQRSkg XAorICBJRk5fIyNOQU1FIyNfTE8sIFwKKyAgSUZOXyMjTkFNRSMjX0hJLAorI2luY2x1ZGUg ImludGVybmFsLWZuLmRlZiIKKyAgSUZOX0xBU1QKKyN1bmRlZiBERUZfSU5URVJOQUxfT1BU QUJfSElMT19GTgorfTsKKworY29uc3Qgb3B0YWIgaW50ZXJuYWxfZm5faGlsb192YWx1ZXNf YXJyYXlbXSA9IHsKKyN1bmRlZiBERUZfSU5URVJOQUxfT1BUQUJfSElMT19GTgorI2RlZmlu ZSBERUZfSU5URVJOQUxfT1BUQUJfSElMT19GTihOQU1FLCBGTEFHUywgT1BUQUIsIFNPUFRB QiwgVU9QVEFCLCBUWVBFKSBcCisgIFNPUFRBQiMjX2xvX29wdGFiLCBVT1BUQUIjI19sb19v cHRhYiwgXAorICBTT1BUQUIjI19oaV9vcHRhYiwgVU9QVEFCIyNfaGlfb3B0YWIsCisjaW5j bHVkZSAiaW50ZXJuYWwtZm4uZGVmIgorICB1bmtub3duX29wdGFiLCB1bmtub3duX29wdGFi CisjdW5kZWYgREVGX0lOVEVSTkFMX09QVEFCX0hJTE9fRk4KK307CisKIC8qIFJldHVybiB0 aGUgaW50ZXJuYWwgZnVuY3Rpb24gY2FsbGVkIE5BTUUsIG9yIElGTl9MQVNUIGlmIHRoZXJl J3MKICAgIG5vIHN1Y2ggZnVuY3Rpb24uICAqLwogCkBAIC05MCw2ICsxMTEsNjEgQEAgbG9v a3VwX2ludGVybmFsX2ZuIChjb25zdCBjaGFyICpuYW1lKQogICByZXR1cm4gZW50cnkgPyAq ZW50cnkgOiBJRk5fTEFTVDsKIH0KIAorc3RhdGljIGludAoraWZuX2NtcCAoY29uc3Qgdm9p ZCAqYV8sIGNvbnN0IHZvaWQgKmJfKQoreworICB0eXBlZGVmIHN0ZDo6cGFpcjxlbnVtIGlu dGVybmFsX2ZuLCB1bnNpZ25lZD4gaWZuX3BhaXI7CisgIGF1dG8gKmEgPSAoY29uc3Qgc3Rk OjpwYWlyPGlmbl9wYWlyLCBvcHRhYj4gKilhXzsKKyAgYXV0byAqYiA9IChjb25zdCBzdGQ6 OnBhaXI8aWZuX3BhaXIsIG9wdGFiPiAqKWJfOworICByZXR1cm4gKGludCkgKGEtPmZpcnN0 LmZpcnN0KSAtIChiLT5maXJzdC5maXJzdCk7Cit9CisKKy8qIFJldHVybiB0aGUgb3B0YWIg YmVsb25naW5nIHRvIHRoZSBnaXZlbiBpbnRlcm5hbCBmdW5jdGlvbiBOQU1FIGZvciB0aGUg Z2l2ZW4KKyAgIFNJR04gb3IgdW5rbm93bl9vcHRhYi4gICovCisKK29wdGFiCitsb29rdXBf aGlsb19pZm5fb3B0YWIgKGVudW0gaW50ZXJuYWxfZm4gZm4sIHVuc2lnbmVkIHNpZ24pCit7 CisgIHR5cGVkZWYgc3RkOjpwYWlyPGVudW0gaW50ZXJuYWxfZm4sIHVuc2lnbmVkPiBpZm5f cGFpcjsKKyAgdHlwZWRlZiBhdXRvX3ZlYyA8c3RkOjpwYWlyPGlmbl9wYWlyLCBvcHRhYj4+ Zm5fdG9fb3B0YWJfbWFwX3R5cGU7CisgIHN0YXRpYyBmbl90b19vcHRhYl9tYXBfdHlwZSAq Zm5fdG9fb3B0YWJfbWFwOworCisgIGlmICghZm5fdG9fb3B0YWJfbWFwKQorICAgIHsKKyAg ICAgIHVuc2lnbmVkIG51bQorCT0gc2l6ZW9mIChpbnRlcm5hbF9mbl9oaWxvX2tleXNfYXJy YXkpIC8gc2l6ZW9mIChlbnVtIGludGVybmFsX2ZuKTsKKyAgICAgIGZuX3RvX29wdGFiX21h cCA9IG5ldyBmbl90b19vcHRhYl9tYXBfdHlwZSAoKTsKKyAgICAgIGZvciAodW5zaWduZWQg aW50IGkgPSAwOyBpIDwgbnVtIC0gMTsgKytpKQorCXsKKwkgIGVudW0gaW50ZXJuYWxfZm4g Zm4gPSBpbnRlcm5hbF9mbl9oaWxvX2tleXNfYXJyYXlbaV07CisJICBvcHRhYiB2MSA9IGlu dGVybmFsX2ZuX2hpbG9fdmFsdWVzX2FycmF5WzIqaV07CisJICBvcHRhYiB2MiA9IGludGVy bmFsX2ZuX2hpbG9fdmFsdWVzX2FycmF5WzIqaSArIDFdOworCSAgaWZuX3BhaXIga2V5MSAo Zm4sIDApOworCSAgZm5fdG9fb3B0YWJfbWFwLT5zYWZlX3B1c2ggKHtrZXkxLCB2MX0pOwor CSAgaWZuX3BhaXIga2V5MiAoZm4sIDEpOworCSAgZm5fdG9fb3B0YWJfbWFwLT5zYWZlX3B1 c2ggKHtrZXkyLCB2Mn0pOworCX0KKwlmbl90b19vcHRhYl9tYXAtPnFzb3J0IChpZm5fY21w KTsKKyAgICB9CisKKyAgaWZuX3BhaXIgbmV3X3BhaXIgKGZuLCBzaWduID8gMSA6IDApOwor ICBvcHRhYiB0bXA7CisgIHN0ZDo6cGFpcjxpZm5fcGFpcixvcHRhYj4gcGFpcl93cmFwIChu ZXdfcGFpciwgdG1wKTsKKyAgYXV0byBlbnRyeSA9IGZuX3RvX29wdGFiX21hcC0+YnNlYXJj aCAoJnBhaXJfd3JhcCwgaWZuX2NtcCk7CisgIHJldHVybiBlbnRyeSAhPSBmbl90b19vcHRh Yl9tYXAtPmVuZCAoKSA/IGVudHJ5LT5zZWNvbmQgOiB1bmtub3duX29wdGFiOworfQorCitl eHRlcm4gdm9pZAorbG9va3VwX2hpbG9faW50ZXJuYWxfZm4gKGVudW0gaW50ZXJuYWxfZm4g aWZuLCBlbnVtIGludGVybmFsX2ZuICpsbywKKwkJCSAgZW51bSBpbnRlcm5hbF9mbiAqaGkp Cit7CisgIGdjY19hc3NlcnQgKGRlY29tcG9zZXNfdG9faGlsb19mbl9wIChpZm4pKTsKKwor ICAqbG8gPSBpbnRlcm5hbF9mbiAoaWZuICsgMSk7CisgICpoaSA9IGludGVybmFsX2ZuIChp Zm4gKyAyKTsKK30KKworCiAvKiBGbnNwZWMgb2YgZWFjaCBpbnRlcm5hbCBmdW5jdGlvbiwg aW5kZXhlZCBieSBmdW5jdGlvbiBudW1iZXIuICAqLwogY29uc3RfdHJlZSBpbnRlcm5hbF9m bl9mbnNwZWNfYXJyYXlbSUZOX0xBU1QgKyAxXTsKIApAQCAtMzk3MCw2ICs0MDQ2LDkgQEAg Y29tbXV0YXRpdmVfYmluYXJ5X2ZuX3AgKGludGVybmFsX2ZuIGZuKQogICAgIGNhc2UgSUZO X1VCU0FOX0NIRUNLX01VTDoKICAgICBjYXNlIElGTl9BRERfT1ZFUkZMT1c6CiAgICAgY2Fz ZSBJRk5fTVVMX09WRVJGTE9XOgorICAgIGNhc2UgSUZOX1ZFQ19XSURFTl9QTFVTOgorICAg IGNhc2UgSUZOX1ZFQ19XSURFTl9QTFVTX0xPOgorICAgIGNhc2UgSUZOX1ZFQ19XSURFTl9Q TFVTX0hJOgogICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBkZWZhdWx0OgpAQCAtNDA0Myw2 ICs0MTIyLDQyIEBAIGZpcnN0X2NvbW11dGF0aXZlX2FyZ3VtZW50IChpbnRlcm5hbF9mbiBm bikKICAgICB9CiB9CiAKKy8qIFJldHVybiB0cnVlIGlmIEZOIGhhcyBhIHdpZGVyIG91dHB1 dCB0eXBlIHRoYW4gaXRzIGFyZ3VtZW50IHR5cGVzLiAgKi8KKworYm9vbAord2lkZW5pbmdf Zm5fcCAoaW50ZXJuYWxfZm4gZm4pCit7CisgIHN3aXRjaCAoZm4pCisgICAgeworICAgIGNh c2UgSUZOX1ZFQ19XSURFTl9QTFVTOgorICAgIGNhc2UgSUZOX1ZFQ19XSURFTl9NSU5VUzoK KyAgICAgIHJldHVybiB0cnVlOworCisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVybiBmYWxz ZTsKKyAgICB9Cit9CisKKy8qIFJldHVybiB0cnVlIGlmIEZOIGRlY29tcG9zZXMgdG8gX2hp IGFuZCBfbG8gSUZOLiAgSWYgdHJ1ZSB0aGlzIHNob3VsZCBhbHNvCisgICBiZSBhIHdpZGVu aW5nIGZ1bmN0aW9uLiAgKi8KKworYm9vbAorZGVjb21wb3Nlc190b19oaWxvX2ZuX3AgKGlu dGVybmFsX2ZuIGZuKQoreworICBpZiAoIXdpZGVuaW5nX2ZuX3AgKGZuKSkKKyAgICByZXR1 cm4gZmFsc2U7CisKKyAgc3dpdGNoIChmbikKKyAgICB7CisgICAgY2FzZSBJRk5fVkVDX1dJ REVOX1BMVVM6CisgICAgY2FzZSBJRk5fVkVDX1dJREVOX01JTlVTOgorICAgICAgcmV0dXJu IHRydWU7CisKKyAgICBkZWZhdWx0OgorICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30K KwogLyogUmV0dXJuIHRydWUgaWYgSUZOX1NFVF9FRE9NIGlzIHN1cHBvcnRlZC4gICovCiAK IGJvb2wKQEAgLTQwNTUsNiArNDE3MCwzMiBAQCBzZXRfZWRvbV9zdXBwb3J0ZWRfcCAodm9p ZCkKICNlbmRpZgogfQogCisjdW5kZWYgREVGX0lOVEVSTkFMX09QVEFCX0hJTE9fRk4KKyNk ZWZpbmUgREVGX0lOVEVSTkFMX09QVEFCX0hJTE9fRk4oQ09ERSwgRkxBR1MsIE9QVEFCLCBT T1BUQUIsIFVPUFRBQiwgVFlQRSkgXAorICBzdGF0aWMgdm9pZAkJCQkJCQlcCisgIGV4cGFu ZF8jI0NPREUgKGludGVybmFsX2ZuLCBnY2FsbCAqKQkJCQlcCisgIHsJCQkJCQkJCVwKKyAg ICBnY2NfdW5yZWFjaGFibGUgKCk7CQkJCQkJXAorICB9CQkJCQkJCQlcCisgIHN0YXRpYyB2 b2lkCQkJCQkJCVwKKyAgZXhwYW5kXyMjQ09ERSMjX0xPIChpbnRlcm5hbF9mbiBmbiwgZ2Nh bGwgKnN0bXQpCQlcCisgIHsJCQkJCQkJCVwKKyAgICB0cmVlIHR5ID0gVFJFRV9UWVBFIChn aW1wbGVfZ2V0X2xocyAoc3RtdCkpOwkJXAorICAgIGlmICghVFlQRV9VTlNJR05FRCAodHkp KQkJCQkJXAorICAgICAgZXhwYW5kXyMjVFlQRSMjX29wdGFiX2ZuIChmbiwgc3RtdCwgU09Q VEFCIyNfbG8jI19vcHRhYik7CVwKKyAgICBlbHNlCQkJCQkJCVwKKyAgICAgIGV4cGFuZF8j I1RZUEUjI19vcHRhYl9mbiAoZm4sIHN0bXQsIFVPUFRBQiMjX2xvIyNfb3B0YWIpOwlcCisg IH0JCQkJCQkJCVwKKyAgc3RhdGljIHZvaWQJCQkJCQkJXAorICBleHBhbmRfIyNDT0RFIyNf SEkgKGludGVybmFsX2ZuIGZuLCBnY2FsbCAqc3RtdCkJCVwKKyAgewkJCQkJCQkJXAorICAg IHRyZWUgdHkgPSBUUkVFX1RZUEUgKGdpbXBsZV9nZXRfbGhzIChzdG10KSk7CQlcCisgICAg aWYgKCFUWVBFX1VOU0lHTkVEICh0eSkpCQkJCQlcCisgICAgICBleHBhbmRfIyNUWVBFIyNf b3B0YWJfZm4gKGZuLCBzdG10LCBTT1BUQUIjI19oaSMjX29wdGFiKTsJXAorICAgIGVsc2UJ CQkJCQkJXAorICAgICAgZXhwYW5kXyMjVFlQRSMjX29wdGFiX2ZuIChmbiwgc3RtdCwgVU9Q VEFCIyNfaGkjI19vcHRhYik7CVwKKyAgfQorCiAjZGVmaW5lIERFRl9JTlRFUk5BTF9PUFRB Ql9GTihDT0RFLCBGTEFHUywgT1BUQUIsIFRZUEUpIFwKICAgc3RhdGljIHZvaWQJCQkJCQlc CiAgIGV4cGFuZF8jI0NPREUgKGludGVybmFsX2ZuIGZuLCBnY2FsbCAqc3RtdCkJCVwKQEAg LTQwNzEsNiArNDIxMiw3IEBAIHNldF9lZG9tX3N1cHBvcnRlZF9wICh2b2lkKQogICAgIGV4 cGFuZF8jI1RZUEUjI19vcHRhYl9mbiAoZm4sIHN0bXQsIHdoaWNoX29wdGFiKTsJCQlcCiAg IH0KICNpbmNsdWRlICJpbnRlcm5hbC1mbi5kZWYiCisjdW5kZWYgREVGX0lOVEVSTkFMX09Q VEFCX0hJTE9fRk4KIAogLyogUm91dGluZXMgdG8gZXhwYW5kIGVhY2ggaW50ZXJuYWwgZnVu Y3Rpb24sIGluZGV4ZWQgYnkgZnVuY3Rpb24gbnVtYmVyLgogICAgRWFjaCByb3V0aW5lIGhh cyB0aGUgcHJvdG90eXBlOgpkaWZmIC0tZ2l0IGEvZ2NjL2ludGVybmFsLWZuLmRlZiBiL2dj Yy9pbnRlcm5hbC1mbi5kZWYKaW5kZXggN2ZlNzQyYzJhZTcxM2U3MTUyYWIwNWNmZGZiYTg2 ZTRlMGFhMzQ1Ni4uMzQ3ZWQ2NjdkOTI2MjBlMGVlM2VhMTVjNThlY2FjNmMyNDJlYmU3MyAx MDA2NDQKLS0tIGEvZ2NjL2ludGVybmFsLWZuLmRlZgorKysgYi9nY2MvaW50ZXJuYWwtZm4u ZGVmCkBAIC04NSw2ICs4NSwxMyBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENP UFlJTkczLiAgSWYgbm90IHNlZQogICAgc2F5cyB0aGF0IHRoZSBmdW5jdGlvbiBleHRlbmRz IHRoZSBDLWxldmVsIEJVSUxUX0lOXzxOQU1FPnssTCxMTCxJTUFYfQogICAgZ3JvdXAgb2Yg ZnVuY3Rpb25zIHRvIGFueSBpbnRlZ3JhbCBtb2RlIChpbmNsdWRpbmcgdmVjdG9yIG1vZGVz KS4KIAorICAgREVGX0lOVEVSTkFMX09QVEFCX0hJTE9fRk4gaXMgbGlrZSBERUZfSU5URVJO QUxfT1BUQUJfRk4gZXhjZXB0IGl0CisgICBwcm92aWRlcyBjb252ZW5pZW5jZSB3cmFwcGVy cyBmb3IgZGVmaW5pbmcgY29udmVyc2lvbnMgdGhhdCByZXF1aXJlIGEKKyAgIGhpL2xvIHNw bGl0LCBsaWtlIHdpZGVuaW5nIGFuZCBuYXJyb3dpbmcgb3BlcmF0aW9ucy4gIEVhY2ggZGVm aW5pdGlvbgorICAgZm9yIDxOQU1FPiB3aWxsIHJlcXVpcmUgYW4gb3B0YWIgbmFtZWQgPE9Q VEFCPiBhbmQgdHdvIG90aGVyIG9wdGFicyB0aGF0CisgICB5b3Ugc3BlY2lmeSBmb3Igc2ln bmVkIGFuZCB1bnNpZ25lZC4KKworCiAgICBFYWNoIGVudHJ5IG11c3QgaGF2ZSBhIGNvcnJl c3BvbmRpbmcgZXhwYW5kZXIgb2YgdGhlIGZvcm06CiAKICAgICAgdm9pZCBleHBhbmRfTkFN RSAoZ2ltcGxlX2NhbGwgc3RtdCkKQEAgLTEyMyw2ICsxMzAsMTQgQEAgYWxvbmcgd2l0aCBH Q0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKICAgREVGX0lOVEVSTkFM X09QVEFCX0ZOIChOQU1FLCBGTEFHUywgT1BUQUIsIFRZUEUpCiAjZW5kaWYKIAorI2lmbmRl ZiBERUZfSU5URVJOQUxfT1BUQUJfSElMT19GTgorI2RlZmluZSBERUZfSU5URVJOQUxfT1BU QUJfSElMT19GTihOQU1FLCBGTEFHUywgT1BUQUIsIFNPUFRBQiwgVU9QVEFCLCBUWVBFKSBc CisgIERFRl9JTlRFUk5BTF9PUFRBQl9GTiAoTkFNRSwgRkxBR1MsIE9QVEFCLCBUWVBFKSBc CisgIERFRl9JTlRFUk5BTF9PUFRBQl9GTiAoTkFNRSAjIyBfTE8sIEZMQUdTLCB1bmtub3du LCBUWVBFKSBcCisgIERFRl9JTlRFUk5BTF9PUFRBQl9GTiAoTkFNRSAjIyBfSEksIEZMQUdT LCB1bmtub3duLCBUWVBFKQorI2VuZGlmCisKKwogREVGX0lOVEVSTkFMX09QVEFCX0ZOIChN QVNLX0xPQUQsIEVDRl9QVVJFLCBtYXNrbG9hZCwgbWFza19sb2FkKQogREVGX0lOVEVSTkFM X09QVEFCX0ZOIChMT0FEX0xBTkVTLCBFQ0ZfQ09OU1QsIHZlY19sb2FkX2xhbmVzLCBsb2Fk X2xhbmVzKQogREVGX0lOVEVSTkFMX09QVEFCX0ZOIChNQVNLX0xPQURfTEFORVMsIEVDRl9Q VVJFLApAQCAtMzE1LDYgKzMzMCwxNCBAQCBERUZfSU5URVJOQUxfT1BUQUJfRk4gKENPTVBM RVhfQUREX1JPVDI3MCwgRUNGX0NPTlNULCBjYWRkMjcwLCBiaW5hcnkpCiBERUZfSU5URVJO QUxfT1BUQUJfRk4gKENPTVBMRVhfTVVMLCBFQ0ZfQ09OU1QsIGNtdWwsIGJpbmFyeSkKIERF Rl9JTlRFUk5BTF9PUFRBQl9GTiAoQ09NUExFWF9NVUxfQ09OSiwgRUNGX0NPTlNULCBjbXVs X2NvbmosIGJpbmFyeSkKIERFRl9JTlRFUk5BTF9PUFRBQl9GTiAoVkVDX0FERFNVQiwgRUNG X0NPTlNULCB2ZWNfYWRkc3ViLCBiaW5hcnkpCitERUZfSU5URVJOQUxfT1BUQUJfSElMT19G TiAoVkVDX1dJREVOX1BMVVMsCisJCQkgICAgRUNGX0NPTlNUIHwgRUNGX05PVEhST1csCisJ CQkgICAgdmVjX3dpZGVuX2FkZCwgdmVjX3dpZGVuX3NhZGRsLCB2ZWNfd2lkZW5fdWFkZGws CisJCQkgICAgIGJpbmFyeSkKK0RFRl9JTlRFUk5BTF9PUFRBQl9ISUxPX0ZOIChWRUNfV0lE RU5fTUlOVVMsCisJCQkgICAgRUNGX0NPTlNUIHwgRUNGX05PVEhST1csCisJCQkgICAgdmVj X3dpZGVuX3N1YiwgdmVjX3dpZGVuX3NzdWJsLCB2ZWNfd2lkZW5fdXN1YmwsCisJCQkgICAg IGJpbmFyeSkKIERFRl9JTlRFUk5BTF9PUFRBQl9GTiAoVkVDX0ZNQUREU1VCLCBFQ0ZfQ09O U1QsIHZlY19mbWFkZHN1YiwgdGVybmFyeSkKIERFRl9JTlRFUk5BTF9PUFRBQl9GTiAoVkVD X0ZNU1VCQURELCBFQ0ZfQ09OU1QsIHZlY19mbXN1YmFkZCwgdGVybmFyeSkKIApkaWZmIC0t Z2l0IGEvZ2NjL2ludGVybmFsLWZuLmggYi9nY2MvaW50ZXJuYWwtZm4uaAppbmRleCAwODky MmVkNDI1NDg5OGY1ZmZmY2EzZjMzOTczZTk2ZWQ5Y2U3NzJmLi42YTVmODc2MmU4NzJhZDJl ZjY0Y2UyOTg2YTY3OGUzYjQwNjIyZDgxIDEwMDY0NAotLS0gYS9nY2MvaW50ZXJuYWwtZm4u aAorKysgYi9nY2MvaW50ZXJuYWwtZm4uaApAQCAtMjAsNiArMjAsMTAgQEAgYWxvbmcgd2l0 aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKICNpZm5kZWYgR0ND X0lOVEVSTkFMX0ZOX0gKICNkZWZpbmUgR0NDX0lOVEVSTkFMX0ZOX0gKIAorI2luY2x1ZGUg Imluc24tY29kZXMuaCIKKyNpbmNsdWRlICJpbnNuLW9waW5pdC5oIgorCisKIC8qIElOVEVH RVJfQ1NUIHZhbHVlcyBmb3IgSUZOX1VOSVFVRSBmdW5jdGlvbiBhcmctMC4KIAogICAgVU5T UEVDOiBVbmRpZmZlcmVudGlhdGVkIFVOSVFVRS4KQEAgLTExMiw2ICsxMTYsOSBAQCBpbnRl cm5hbF9mbl9uYW1lIChlbnVtIGludGVybmFsX2ZuIGZuKQogfQogCiBleHRlcm4gaW50ZXJu YWxfZm4gbG9va3VwX2ludGVybmFsX2ZuIChjb25zdCBjaGFyICopOworZXh0ZXJuIG9wdGFi IGxvb2t1cF9oaWxvX2lmbl9vcHRhYiAoZW51bSBpbnRlcm5hbF9mbiwgdW5zaWduZWQpOwor ZXh0ZXJuIHZvaWQgbG9va3VwX2hpbG9faW50ZXJuYWxfZm4gKGVudW0gaW50ZXJuYWxfZm4s IGVudW0gaW50ZXJuYWxfZm4gKiwKKwkJCQkgICAgICBlbnVtIGludGVybmFsX2ZuICopOwog CiAvKiBSZXR1cm4gdGhlIEVDRl8qIGZsYWdzIGZvciBmdW5jdGlvbiBGTi4gICovCiAKQEAg LTIxMCw2ICsyMTcsOCBAQCBleHRlcm4gYm9vbCBjb21tdXRhdGl2ZV9iaW5hcnlfZm5fcCAo aW50ZXJuYWxfZm4pOwogZXh0ZXJuIGJvb2wgY29tbXV0YXRpdmVfdGVybmFyeV9mbl9wIChp bnRlcm5hbF9mbik7CiBleHRlcm4gaW50IGZpcnN0X2NvbW11dGF0aXZlX2FyZ3VtZW50IChp bnRlcm5hbF9mbik7CiBleHRlcm4gYm9vbCBhc3NvY2lhdGl2ZV9iaW5hcnlfZm5fcCAoaW50 ZXJuYWxfZm4pOworZXh0ZXJuIGJvb2wgd2lkZW5pbmdfZm5fcCAoaW50ZXJuYWxfZm4pOwor ZXh0ZXJuIGJvb2wgZGVjb21wb3Nlc190b19oaWxvX2ZuX3AgKGludGVybmFsX2ZuKTsKIAog ZXh0ZXJuIGJvb2wgc2V0X2Vkb21fc3VwcG9ydGVkX3AgKHZvaWQpOwogCmRpZmYgLS1naXQg YS9nY2Mvb3B0YWJzLmNjIGIvZ2NjL29wdGFicy5jYwppbmRleCBjOGUzOWM4MmQ1N2E3ZDcy NmU3ZGEzM2QyNDdiODBmMzJlYzkyMzZjLi5kNGRkN2VlM2QzNGQwMWMzMmFiNDMyYWU0ZTRj ZTllNGI1MjJiMmY3IDEwMDY0NAotLS0gYS9nY2Mvb3B0YWJzLmNjCisrKyBiL2djYy9vcHRh YnMuY2MKQEAgLTEzMTQsNyArMTMxNCwxMiBAQCBjb21tdXRhdGl2ZV9vcHRhYl9wIChvcHRh YiBiaW5vcHRhYikKIAkgIHx8IGJpbm9wdGFiID09IHNtdWxfd2lkZW5fb3B0YWIKIAkgIHx8 IGJpbm9wdGFiID09IHVtdWxfd2lkZW5fb3B0YWIKIAkgIHx8IGJpbm9wdGFiID09IHNtdWxf aGlnaHBhcnRfb3B0YWIKLQkgIHx8IGJpbm9wdGFiID09IHVtdWxfaGlnaHBhcnRfb3B0YWIp OworCSAgfHwgYmlub3B0YWIgPT0gdW11bF9oaWdocGFydF9vcHRhYgorCSAgfHwgYmlub3B0 YWIgPT0gdmVjX3dpZGVuX2FkZF9vcHRhYgorCSAgfHwgYmlub3B0YWIgPT0gdmVjX3dpZGVu X3NhZGRsX2hpX29wdGFiCisJICB8fCBiaW5vcHRhYiA9PSB2ZWNfd2lkZW5fc2FkZGxfbG9f b3B0YWIKKwkgIHx8IGJpbm9wdGFiID09IHZlY193aWRlbl91YWRkbF9oaV9vcHRhYgorCSAg fHwgYmlub3B0YWIgPT0gdmVjX3dpZGVuX3VhZGRsX2xvX29wdGFiKTsKIH0KIAogLyogWCBp cyB0byBiZSB1c2VkIGluIG1vZGUgTU9ERSBhcyBvcGVyYW5kIE9QTiB0byBCSU5PUFRBQi4g IElmIHdlJ3JlCmRpZmYgLS1naXQgYS9nY2Mvb3B0YWJzLmRlZiBiL2djYy9vcHRhYnMuZGVm CmluZGV4IDY5NWY1OTExYjMwMGM5Y2E1NzM3ZGU5YmU4MDlmYTAxYWFiZTVlMDEuLmUwNjQx ODkxMDNiM2JlNzA2NDQ0NjhkMTFmM2M5MWFjNDVmZmUwZDAgMTAwNjQ0Ci0tLSBhL2djYy9v cHRhYnMuZGVmCisrKyBiL2djYy9vcHRhYnMuZGVmCkBAIC03OCw2ICs3OCw4IEBAIE9QVEFC X0NEKHNtc3ViX3dpZGVuX29wdGFiLCAibXN1YiRiJGE0IikKIE9QVEFCX0NEKHVtc3ViX3dp ZGVuX29wdGFiLCAidW1zdWIkYiRhNCIpCiBPUFRBQl9DRChzc21zdWJfd2lkZW5fb3B0YWIs ICJzc21zdWIkYiRhNCIpCiBPUFRBQl9DRCh1c21zdWJfd2lkZW5fb3B0YWIsICJ1c21zdWIk YSRiNCIpCitPUFRBQl9DRCh2ZWNfd2lkZW5fYWRkX29wdGFiLCAiYWRkJGEkYjMiKQorT1BU QUJfQ0QodmVjX3dpZGVuX3N1Yl9vcHRhYiwgInN1YiRhJGIzIikKIE9QVEFCX0NEKHZlY19s b2FkX2xhbmVzX29wdGFiLCAidmVjX2xvYWRfbGFuZXMkYSRiIikKIE9QVEFCX0NEKHZlY19z dG9yZV9sYW5lc19vcHRhYiwgInZlY19zdG9yZV9sYW5lcyRhJGIiKQogT1BUQUJfQ0QodmVj X21hc2tfbG9hZF9sYW5lc19vcHRhYiwgInZlY19tYXNrX2xvYWRfbGFuZXMkYSRiIikKZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3ZlY3Qtd2lkZW4t YWRkLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2NC92ZWN0LXdpZGVuLWFk ZC5jCmluZGV4IDIyMGJkOTM1MmE0YzdhY2QyZTM3MTNlNDQxZDc0ODk4ZDNlOTJiMzAuLjcw Mzc2NzNkMzJiZDc4MGUxYzliNThhNTFlNThlMmJhYzNiMzBiN2UgMTAwNjQ0Ci0tLSBhL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3ZlY3Qtd2lkZW4tYWRkLmMKKysrIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvdmVjdC13aWRlbi1hZGQuYwpAQCAt MSw1ICsxLDUgQEAKIC8qIHsgZGctZG8gcnVuIH0gKi8KLS8qIHsgZGctb3B0aW9ucyAiLU8z IC1zYXZlLXRlbXBzIiB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMyAtc2F2ZS10ZW1wcyAt ZmR1bXAtdHJlZS12ZWN0LWFsbCIgfSAqLwogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1 ZGUgPHN0cmluZy5oPgogCkBAIC04Niw2ICs4Niw4IEBAIG1haW4oKQogICAgIHJldHVybiAw OwogfQogCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgImFkZCBuZXcgc3RtdC4q VkVDX1dJREVOX1BMVVNfTE8iICJ2ZWN0IiAgIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNj YW4tdHJlZS1kdW1wICJhZGQgbmV3IHN0bXQuKlZFQ19XSURFTl9QTFVTX0hJIiAidmVjdCIg ICB9IH0gKi8KIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHR1YWRk bFx0fSAxfSB9ICovCiAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0 dWFkZGwyXHR9IDF9IH0gKi8KIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1l cyB7XHRzYWRkbFx0fSAxfSB9ICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvYWFyY2g2NC92ZWN0LXdpZGVuLXN1Yi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2FhcmNoNjQvdmVjdC13aWRlbi1zdWIuYwppbmRleCBhMmJlZDYzYWZmYmQwOTE5Nzdk Zjk1YTEyNmRhMWY1YjhjMWQ0MWQyLi44M2JjMWVkYjYxMDVmNDcxMTRiNjY1ZTI0YTEzZTYx OTRiMjE3OWEyIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvYWFyY2g2 NC92ZWN0LXdpZGVuLXN1Yi5jCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJj aDY0L3ZlY3Qtd2lkZW4tc3ViLmMKQEAgLTEsNSArMSw1IEBACiAvKiB7IGRnLWRvIHJ1biB9 ICovCi0vKiB7IGRnLW9wdGlvbnMgIi1PMyAtc2F2ZS10ZW1wcyIgfSAqLworLyogeyBkZy1v cHRpb25zICItTzMgLXNhdmUtdGVtcHMgLWZkdW1wLXRyZWUtdmVjdC1hbGwiIH0gKi8KICNp bmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KIApAQCAtODYsNiArODYs OCBAQCBtYWluKCkKICAgICByZXR1cm4gMDsKIH0KIAorLyogeyBkZy1maW5hbCB7IHNjYW4t dHJlZS1kdW1wICJhZGQgbmV3IHN0bXQuKlZFQ19XSURFTl9NSU5VU19MTyIgInZlY3QiICAg fSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgImFkZCBuZXcgc3RtdC4q VkVDX1dJREVOX01JTlVTX0hJIiAidmVjdCIgICB9IH0gKi8KIC8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlci10aW1lcyB7XHR1c3VibFx0fSAxfSB9ICovCiAvKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge1x0dXN1YmwyXHR9IDF9IH0gKi8KIC8qIHsgZGct ZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7XHRzc3VibFx0fSAxfSB9ICovCmRpZmYg LS1naXQgYS9nY2MvdHJlZS12ZWN0LXBhdHRlcm5zLmNjIGIvZ2NjL3RyZWUtdmVjdC1wYXR0 ZXJucy5jYwppbmRleCA2OGRmYmEyNjZkNjc5Yzk3MzhhM2Q1ZDcwNTUxYTkxY2JkYWZjZjY2 Li4xYTUxNDQ2MWIyY2E0MTZmNDVhNWZhOWFiZTQxNzk4MGQzM2VmNGRmIDEwMDY0NAotLS0g YS9nY2MvdHJlZS12ZWN0LXBhdHRlcm5zLmNjCisrKyBiL2djYy90cmVlLXZlY3QtcGF0dGVy bnMuY2MKQEAgLTEzOTQsMTQgKzEzOTQsMTYgQEAgc3RhdGljIGdpbXBsZSAqCiB2ZWN0X3Jl Y29nX3dpZGVuX29wX3BhdHRlcm4gKHZlY19pbmZvICp2aW5mbywKIAkJCSAgICAgc3RtdF92 ZWNfaW5mbyBsYXN0X3N0bXRfaW5mbywgdHJlZSAqdHlwZV9vdXQsCiAJCQkgICAgIHRyZWVf Y29kZSBvcmlnX2NvZGUsIGNvZGVfaGVscGVyIHdpZGVfY29kZSwKLQkJCSAgICAgYm9vbCBz aGlmdF9wLCBjb25zdCBjaGFyICpuYW1lKQorCQkJICAgICBib29sIHNoaWZ0X3AsIGNvbnN0 IGNoYXIgKm5hbWUsCisJCQkgICAgIGVudW0gb3B0YWJfc3VidHlwZSAqc3VidHlwZSA9IE5V TEwpCiB7CiAgIGdpbXBsZSAqbGFzdF9zdG10ID0gbGFzdF9zdG10X2luZm8tPnN0bXQ7CiAK ICAgdmVjdF91bnByb21vdGVkX3ZhbHVlIHVucHJvbVsyXTsKICAgdHJlZSBoYWxmX3R5cGU7 CiAgIGlmICghdmVjdF93aWRlbmVkX29wX3RyZWUgKHZpbmZvLCBsYXN0X3N0bXRfaW5mbywg b3JpZ19jb2RlLCBvcmlnX2NvZGUsCi0JCQkgICAgIHNoaWZ0X3AsIDIsIHVucHJvbSwgJmhh bGZfdHlwZSkpCisJCQkgICAgIHNoaWZ0X3AsIDIsIHVucHJvbSwgJmhhbGZfdHlwZSwgc3Vi dHlwZSkpCisKICAgICByZXR1cm4gTlVMTDsKIAogICAvKiBQYXR0ZXJuIGRldGVjdGVkLiAg Ki8KQEAgLTE0NjcsNiArMTQ2OSwyMCBAQCB2ZWN0X3JlY29nX3dpZGVuX29wX3BhdHRlcm4g KHZlY19pbmZvICp2aW5mbywKIAkJCSAgICAgIHR5cGUsIHBhdHRlcm5fc3RtdCwgdmVjY3R5 cGUpOwogfQogCitzdGF0aWMgZ2ltcGxlICoKK3ZlY3RfcmVjb2dfd2lkZW5fb3BfcGF0dGVy biAodmVjX2luZm8gKnZpbmZvLAorCQkJICAgICBzdG10X3ZlY19pbmZvIGxhc3Rfc3RtdF9p bmZvLCB0cmVlICp0eXBlX291dCwKKwkJCSAgICAgdHJlZV9jb2RlIG9yaWdfY29kZSwgaW50 ZXJuYWxfZm4gd2lkZV9pZm4sCisJCQkgICAgIGJvb2wgc2hpZnRfcCwgY29uc3QgY2hhciAq bmFtZSwKKwkJCSAgICAgZW51bSBvcHRhYl9zdWJ0eXBlICpzdWJ0eXBlID0gTlVMTCkKK3sK KyAgY29tYmluZWRfZm4gaWZuID0gYXNfY29tYmluZWRfZm4gKHdpZGVfaWZuKTsKKyAgcmV0 dXJuIHZlY3RfcmVjb2dfd2lkZW5fb3BfcGF0dGVybiAodmluZm8sIGxhc3Rfc3RtdF9pbmZv LCB0eXBlX291dCwKKwkJCQkgICAgICBvcmlnX2NvZGUsIGlmbiwgc2hpZnRfcCwgbmFtZSwK KwkJCQkgICAgICBzdWJ0eXBlKTsKK30KKworCiAvKiBUcnkgdG8gZGV0ZWN0IG11bHRpcGxp Y2F0aW9uIG9uIHdpZGVuZWQgaW5wdXRzLCBjb252ZXJ0aW5nIE1VTFRfRVhQUgogICAgdG8g V0lERU5fTVVMVF9FWFBSLiAgU2VlIHZlY3RfcmVjb2dfd2lkZW5fb3BfcGF0dGVybiBmb3Ig ZGV0YWlscy4gICovCiAKQEAgLTE0ODAsMjYgKzE0OTYsMzAgQEAgdmVjdF9yZWNvZ193aWRl bl9tdWx0X3BhdHRlcm4gKHZlY19pbmZvICp2aW5mbywgc3RtdF92ZWNfaW5mbyBsYXN0X3N0 bXRfaW5mbywKIH0KIAogLyogVHJ5IHRvIGRldGVjdCBhZGRpdGlvbiBvbiB3aWRlbmVkIGlu cHV0cywgY29udmVydGluZyBQTFVTX0VYUFIKLSAgIHRvIFdJREVOX1BMVVNfRVhQUi4gIFNl ZSB2ZWN0X3JlY29nX3dpZGVuX29wX3BhdHRlcm4gZm9yIGRldGFpbHMuICAqLworICAgdG8g SUZOX1ZFQ19XSURFTl9QTFVTLiAgU2VlIHZlY3RfcmVjb2dfd2lkZW5fb3BfcGF0dGVybiBm b3IgZGV0YWlscy4gICovCiAKIHN0YXRpYyBnaW1wbGUgKgogdmVjdF9yZWNvZ193aWRlbl9w bHVzX3BhdHRlcm4gKHZlY19pbmZvICp2aW5mbywgc3RtdF92ZWNfaW5mbyBsYXN0X3N0bXRf aW5mbywKIAkJCSAgICAgICB0cmVlICp0eXBlX291dCkKIHsKKyAgZW51bSBvcHRhYl9zdWJ0 eXBlIHN1YnR5cGU7CiAgIHJldHVybiB2ZWN0X3JlY29nX3dpZGVuX29wX3BhdHRlcm4gKHZp bmZvLCBsYXN0X3N0bXRfaW5mbywgdHlwZV9vdXQsCi0JCQkJICAgICAgUExVU19FWFBSLCBX SURFTl9QTFVTX0VYUFIsIGZhbHNlLAotCQkJCSAgICAgICJ2ZWN0X3JlY29nX3dpZGVuX3Bs dXNfcGF0dGVybiIpOworCQkJCSAgICAgIFBMVVNfRVhQUiwgSUZOX1ZFQ19XSURFTl9QTFVT LAorCQkJCSAgICAgIGZhbHNlLCAidmVjdF9yZWNvZ193aWRlbl9wbHVzX3BhdHRlcm4iLAor CQkJCSAgICAgICZzdWJ0eXBlKTsKIH0KIAogLyogVHJ5IHRvIGRldGVjdCBzdWJ0cmFjdGlv biBvbiB3aWRlbmVkIGlucHV0cywgY29udmVydGluZyBNSU5VU19FWFBSCi0gICB0byBXSURF Tl9NSU5VU19FWFBSLiAgU2VlIHZlY3RfcmVjb2dfd2lkZW5fb3BfcGF0dGVybiBmb3IgZGV0 YWlscy4gICovCisgICB0byBJRk5fVkVDX1dJREVOX01JTlVTLiAgU2VlIHZlY3RfcmVjb2df d2lkZW5fb3BfcGF0dGVybiBmb3IgZGV0YWlscy4gICovCiBzdGF0aWMgZ2ltcGxlICoKIHZl Y3RfcmVjb2dfd2lkZW5fbWludXNfcGF0dGVybiAodmVjX2luZm8gKnZpbmZvLCBzdG10X3Zl Y19pbmZvIGxhc3Rfc3RtdF9pbmZvLAogCQkJICAgICAgIHRyZWUgKnR5cGVfb3V0KQogewor ICBlbnVtIG9wdGFiX3N1YnR5cGUgc3VidHlwZTsKICAgcmV0dXJuIHZlY3RfcmVjb2dfd2lk ZW5fb3BfcGF0dGVybiAodmluZm8sIGxhc3Rfc3RtdF9pbmZvLCB0eXBlX291dCwKLQkJCQkg ICAgICBNSU5VU19FWFBSLCBXSURFTl9NSU5VU19FWFBSLCBmYWxzZSwKLQkJCQkgICAgICAi dmVjdF9yZWNvZ193aWRlbl9taW51c19wYXR0ZXJuIik7CisJCQkJICAgICAgTUlOVVNfRVhQ UiwgSUZOX1ZFQ19XSURFTl9NSU5VUywKKwkJCQkgICAgICBmYWxzZSwgInZlY3RfcmVjb2df d2lkZW5fbWludXNfcGF0dGVybiIsCisJCQkJICAgICAgJnN1YnR5cGUpOwogfQogCiAvKiBG dW5jdGlvbiB2ZWN0X3JlY29nX3BvcGNvdW50X3BhdHRlcm4KQEAgLTYwNjcsNiArNjA4Nyw3 IEBAIHN0YXRpYyB2ZWN0X3JlY29nX2Z1bmMgdmVjdF92ZWN0X3JlY29nX2Z1bmNfcHRyc1td ID0gewogICB7IHZlY3RfcmVjb2dfbWFza19jb252ZXJzaW9uX3BhdHRlcm4sICJtYXNrX2Nv bnZlcnNpb24iIH0sCiAgIHsgdmVjdF9yZWNvZ193aWRlbl9wbHVzX3BhdHRlcm4sICJ3aWRl bl9wbHVzIiB9LAogICB7IHZlY3RfcmVjb2dfd2lkZW5fbWludXNfcGF0dGVybiwgIndpZGVu X21pbnVzIiB9LAorICAvKiBUaGVzZSBtdXN0IGNvbWUgYWZ0ZXIgdGhlIGRvdWJsZSB3aWRl bmluZyBvbmVzLiAgKi8KIH07CiAKIGNvbnN0IHVuc2lnbmVkIGludCBOVU1fUEFUVEVSTlMg PSBBUlJBWV9TSVpFICh2ZWN0X3ZlY3RfcmVjb2dfZnVuY19wdHJzKTsKZGlmZiAtLWdpdCBh L2djYy90cmVlLXZlY3Qtc3RtdHMuY2MgYi9nY2MvdHJlZS12ZWN0LXN0bXRzLmNjCmluZGV4 IDcxNWVjMmUzMGE0ZGU2MjBiOGE1MDc2YzBlN2YyZjdmZDFiMDY1NGUuLmY0ODA2MDczZjQ4 ZDRkZWRlYTNhYzliZDg1NTc5MmIxNTJkNzg5MTkgMTAwNjQ0Ci0tLSBhL2djYy90cmVlLXZl Y3Qtc3RtdHMuY2MKKysrIGIvZ2NjL3RyZWUtdmVjdC1zdG10cy5jYwpAQCAtNTAzNSw3ICs1 MDM1LDkgQEAgdmVjdG9yaXphYmxlX2NvbnZlcnNpb24gKHZlY19pbmZvICp2aW5mbywKICAg Ym9vbCB3aWRlbl9hcml0aCA9IChjb2RlID09IFdJREVOX1BMVVNfRVhQUgogCQkgfHwgY29k ZSA9PSBXSURFTl9NSU5VU19FWFBSCiAJCSB8fCBjb2RlID09IFdJREVOX01VTFRfRVhQUgot CQkgfHwgY29kZSA9PSBXSURFTl9MU0hJRlRfRVhQUik7CisJCSB8fCBjb2RlID09IFdJREVO X0xTSElGVF9FWFBSCisJCSB8fCBjb2RlID09IElGTl9WRUNfV0lERU5fUExVUworCQkgfHwg Y29kZSA9PSBJRk5fVkVDX1dJREVOX01JTlVTKTsKIAogICBpZiAoIXdpZGVuX2FyaXRoCiAg ICAgICAmJiAhQ09OVkVSVF9FWFBSX0NPREVfUCAoY29kZSkKQEAgLTUwODUsNyArNTA4Nyw5 IEBAIHZlY3Rvcml6YWJsZV9jb252ZXJzaW9uICh2ZWNfaW5mbyAqdmluZm8sCiAgICAgICBn Y2NfYXNzZXJ0IChjb2RlID09IFdJREVOX01VTFRfRVhQUgogCQkgIHx8IGNvZGUgPT0gV0lE RU5fTFNISUZUX0VYUFIKIAkJICB8fCBjb2RlID09IFdJREVOX1BMVVNfRVhQUgotCQkgIHx8 IGNvZGUgPT0gV0lERU5fTUlOVVNfRVhQUik7CisJCSAgfHwgY29kZSA9PSBXSURFTl9NSU5V U19FWFBSCisJCSAgfHwgY29kZSA9PSBJRk5fVkVDX1dJREVOX1BMVVMKKwkJICB8fCBjb2Rl ID09IElGTl9WRUNfV0lERU5fTUlOVVMpOwogCiAKICAgICAgIG9wMSA9IGlzX2dpbXBsZV9h c3NpZ24gKHN0bXQpID8gZ2ltcGxlX2Fzc2lnbl9yaHMyIChzdG10KSA6CkBAIC0xMjM1NSwx NCArMTIzNTksNTAgQEAgc3VwcG9ydGFibGVfd2lkZW5pbmdfb3BlcmF0aW9uICh2ZWNfaW5m byAqdmluZm8sCiAgICAgICBvcHRhYjEgPSB2ZWNfdW5wYWNrc19zYm9vbF9sb19vcHRhYjsK ICAgICAgIG9wdGFiMiA9IHZlY191bnBhY2tzX3Nib29sX2hpX29wdGFiOwogICAgIH0KLSAg ZWxzZQotICAgIHsKLSAgICAgIG9wdGFiMSA9IG9wdGFiX2Zvcl90cmVlX2NvZGUgKGMxLnNh ZmVfYXNfdHJlZV9jb2RlICgpLCB2ZWN0eXBlLAotCQkJCSAgICBvcHRhYl9kZWZhdWx0KTsK LSAgICAgIG9wdGFiMiA9IG9wdGFiX2Zvcl90cmVlX2NvZGUgKGMyLnNhZmVfYXNfdHJlZV9j b2RlICgpLCB2ZWN0eXBlLAotCQkJCSAgICBvcHRhYl9kZWZhdWx0KTsKKworICBpZiAoY29k ZS5pc19mbl9jb2RlICgpKQorICAgICB7CisgICAgICBpbnRlcm5hbF9mbiBpZm4gPSBhc19p bnRlcm5hbF9mbiAoY29kZS5zYWZlX2FzX2ZuX2NvZGUgKCkpOworICAgICAgZ2NjX2Fzc2Vy dCAoZGVjb21wb3Nlc190b19oaWxvX2ZuX3AgKGlmbikpOworCisgICAgICBpbnRlcm5hbF9m biBsbywgaGk7CisgICAgICBsb29rdXBfaGlsb19pbnRlcm5hbF9mbiAoaWZuLCAmbG8sICZo aSk7CisgICAgICAqY29kZTEgPSBhc19jb21iaW5lZF9mbiAobG8pOworICAgICAgKmNvZGUy ID0gYXNfY29tYmluZWRfZm4gKGhpKTsKKyAgICAgIG9wdGFiMSA9IGxvb2t1cF9oaWxvX2lm bl9vcHRhYiAobG8sICFUWVBFX1VOU0lHTkVEICh2ZWN0eXBlKSk7CisgICAgICBvcHRhYjIg PSBsb29rdXBfaGlsb19pZm5fb3B0YWIgKGhpLCAhVFlQRV9VTlNJR05FRCAodmVjdHlwZSkp OwogICAgIH0KIAorICBpZiAoY29kZS5pc190cmVlX2NvZGUgKCkpCisgIHsKKyAgICBpZiAo Y29kZSA9PSBGSVhfVFJVTkNfRVhQUikKKyAgICAgIHsKKwkvKiBUaGUgc2lnbmVkbmVzcyBp cyBkZXRlcm1pbmVkIGZyb20gb3V0cHV0IG9wZXJhbmQuICAqLworCW9wdGFiMSA9IG9wdGFi X2Zvcl90cmVlX2NvZGUgKGMxLnNhZmVfYXNfdHJlZV9jb2RlICgpLCB2ZWN0eXBlX291dCwK KwkJCQkgICAgICBvcHRhYl9kZWZhdWx0KTsKKwlvcHRhYjIgPSBvcHRhYl9mb3JfdHJlZV9j b2RlIChjMi5zYWZlX2FzX3RyZWVfY29kZSAoKSwgdmVjdHlwZV9vdXQsCisJCQkJICAgICAg b3B0YWJfZGVmYXVsdCk7CisgICAgICB9CisgICAgZWxzZSBpZiAoQ09OVkVSVF9FWFBSX0NP REVfUCAoY29kZS5zYWZlX2FzX3RyZWVfY29kZSAoKSkKKwkgICAgICYmIFZFQ1RPUl9CT09M RUFOX1RZUEVfUCAod2lkZV92ZWN0eXBlKQorCSAgICAgJiYgVkVDVE9SX0JPT0xFQU5fVFlQ RV9QICh2ZWN0eXBlKQorCSAgICAgJiYgVFlQRV9NT0RFICh3aWRlX3ZlY3R5cGUpID09IFRZ UEVfTU9ERSAodmVjdHlwZSkKKwkgICAgICYmIFNDQUxBUl9JTlRfTU9ERV9QIChUWVBFX01P REUgKHZlY3R5cGUpKSkKKyAgICAgIHsKKwkvKiBJZiB0aGUgaW5wdXQgYW5kIHJlc3VsdCBt b2RlcyBhcmUgdGhlIHNhbWUsIGEgZGlmZmVyZW50IG9wdGFiCisJICAgaXMgbmVlZGVkIHdo ZXJlIHdlIHBhc3MgaW4gdGhlIG51bWJlciBvZiB1bml0cyBpbiB2ZWN0eXBlLiAgKi8KKwlv cHRhYjEgPSB2ZWNfdW5wYWNrc19zYm9vbF9sb19vcHRhYjsKKwlvcHRhYjIgPSB2ZWNfdW5w YWNrc19zYm9vbF9oaV9vcHRhYjsKKyAgICAgIH0KKyAgICBlbHNlCisgICAgICB7CisJb3B0 YWIxID0gb3B0YWJfZm9yX3RyZWVfY29kZSAoYzEuc2FmZV9hc190cmVlX2NvZGUgKCksIHZl Y3R5cGUsCisJCQkJICAgICAgb3B0YWJfZGVmYXVsdCk7CisJb3B0YWIyID0gb3B0YWJfZm9y X3RyZWVfY29kZSAoYzIuc2FmZV9hc190cmVlX2NvZGUgKCksIHZlY3R5cGUsCisJCQkJICAg ICAgb3B0YWJfZGVmYXVsdCk7CisgICAgICB9CisgIH0KKwogICBpZiAoIW9wdGFiMSB8fCAh b3B0YWIyKQogICAgIHJldHVybiBmYWxzZTsKIAo= --------------0DqhWVXXPvMN5YVzFFAaipI6 Content-Type: text/plain; charset=UTF-8; name="ifn2.patch" Content-Disposition: attachment; filename="ifn2.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy9jZmdleHBhbmQuY2MgYi9nY2MvY2ZnZXhwYW5kLmNjCmluZGV4 IDFhMWIyNmIxYzZjMjNjZTI3M2JjZDA4ZGM5YTk3M2Y3NzcxNzQwMDcuLjI1YjE1NThkY2I5 NDFlYTQ5MWExOWFlZWIyY2Q4ZjRkMmRiZGY3YzYgMTAwNjQ0Ci0tLSBhL2djYy9jZmdleHBh bmQuY2MKKysrIGIvZ2NjL2NmZ2V4cGFuZC5jYwpAQCAtNTM2NSwxMCArNTM2NSw2IEBAIGV4 cGFuZF9kZWJ1Z19leHByICh0cmVlIGV4cCkKICAgICBjYXNlIFZFQ19XSURFTl9NVUxUX09E RF9FWFBSOgogICAgIGNhc2UgVkVDX1dJREVOX0xTSElGVF9ISV9FWFBSOgogICAgIGNhc2Ug VkVDX1dJREVOX0xTSElGVF9MT19FWFBSOgotICAgIGNhc2UgVkVDX1dJREVOX1BMVVNfSElf RVhQUjoKLSAgICBjYXNlIFZFQ19XSURFTl9QTFVTX0xPX0VYUFI6Ci0gICAgY2FzZSBWRUNf V0lERU5fTUlOVVNfSElfRVhQUjoKLSAgICBjYXNlIFZFQ19XSURFTl9NSU5VU19MT19FWFBS OgogICAgIGNhc2UgVkVDX1BFUk1fRVhQUjoKICAgICBjYXNlIFZFQ19EVVBMSUNBVEVfRVhQ UjoKICAgICBjYXNlIFZFQ19TRVJJRVNfRVhQUjoKQEAgLTU0MDUsOCArNTQwMSw2IEBAIGV4 cGFuZF9kZWJ1Z19leHByICh0cmVlIGV4cCkKICAgICBjYXNlIFdJREVOX01VTFRfRVhQUjoK ICAgICBjYXNlIFdJREVOX01VTFRfUExVU19FWFBSOgogICAgIGNhc2UgV0lERU5fTVVMVF9N SU5VU19FWFBSOgotICAgIGNhc2UgV0lERU5fUExVU19FWFBSOgotICAgIGNhc2UgV0lERU5f TUlOVVNfRVhQUjoKICAgICAgIGlmIChTQ0FMQVJfSU5UX01PREVfUCAoR0VUX01PREUgKG9w MCkpCiAJICAmJiBTQ0FMQVJfSU5UX01PREVfUCAobW9kZSkpCiAJewpAQCAtNTQxOSwxMCAr NTQxMyw2IEBAIGV4cGFuZF9kZWJ1Z19leHByICh0cmVlIGV4cCkKIAkgICAgb3AxID0gc2lt cGxpZnlfZ2VuX3VuYXJ5IChaRVJPX0VYVEVORCwgbW9kZSwgb3AxLCBpbm5lcl9tb2RlKTsK IAkgIGVsc2UKIAkgICAgb3AxID0gc2ltcGxpZnlfZ2VuX3VuYXJ5IChTSUdOX0VYVEVORCwg bW9kZSwgb3AxLCBpbm5lcl9tb2RlKTsKLQkgIGlmIChUUkVFX0NPREUgKGV4cCkgPT0gV0lE RU5fUExVU19FWFBSKQotCSAgICByZXR1cm4gc2ltcGxpZnlfZ2VuX2JpbmFyeSAoUExVUywg bW9kZSwgb3AwLCBvcDEpOwotCSAgZWxzZSBpZiAoVFJFRV9DT0RFIChleHApID09IFdJREVO X01JTlVTX0VYUFIpCi0JICAgIHJldHVybiBzaW1wbGlmeV9nZW5fYmluYXJ5IChNSU5VUywg bW9kZSwgb3AwLCBvcDEpOwogCSAgb3AwID0gc2ltcGxpZnlfZ2VuX2JpbmFyeSAoTVVMVCwg bW9kZSwgb3AwLCBvcDEpOwogCSAgaWYgKFRSRUVfQ09ERSAoZXhwKSA9PSBXSURFTl9NVUxU X0VYUFIpCiAJICAgIHJldHVybiBvcDA7CmRpZmYgLS1naXQgYS9nY2MvZG9jL2dlbmVyaWMu dGV4aSBiL2djYy9kb2MvZ2VuZXJpYy50ZXhpCmluZGV4IDJjMTRiN2FiY2UyZGIwYTNkYTBh MjFlOTE2OTA3OTQ3Y2I1NmEyNjUuLjM4MTZhYmFhZjRkMzY0ZDYwNGE0NDk0MjMxN2Y5NmYz ZjMwM2U1YjYgMTAwNjQ0Ci0tLSBhL2djYy9kb2MvZ2VuZXJpYy50ZXhpCisrKyBiL2djYy9k b2MvZ2VuZXJpYy50ZXhpCkBAIC0xODExLDEwICsxODExLDYgQEAgYSB2YWx1ZSBmcm9tIEBj b2Rle2VudW0gYW5ub3RfZXhwcl9raW5kfSwgdGhlIHRoaXJkIGlzIGFuIEBjb2Rle0lOVEVH RVJfQ1NUfS4KIEB0aW5kZXggVkVDX1JTSElGVF9FWFBSCiBAdGluZGV4IFZFQ19XSURFTl9N VUxUX0hJX0VYUFIKIEB0aW5kZXggVkVDX1dJREVOX01VTFRfTE9fRVhQUgotQHRpbmRleCBW RUNfV0lERU5fUExVU19ISV9FWFBSCi1AdGluZGV4IFZFQ19XSURFTl9QTFVTX0xPX0VYUFIK LUB0aW5kZXggVkVDX1dJREVOX01JTlVTX0hJX0VYUFIKLUB0aW5kZXggVkVDX1dJREVOX01J TlVTX0xPX0VYUFIKIEB0aW5kZXggVkVDX1VOUEFDS19ISV9FWFBSCiBAdGluZGV4IFZFQ19V TlBBQ0tfTE9fRVhQUgogQHRpbmRleCBWRUNfVU5QQUNLX0ZMT0FUX0hJX0VYUFIKQEAgLTE4 NjEsMzMgKzE4NTcsNiBAQCB2ZWN0b3Igb2YgQGNvZGV7Ti8yfSBwcm9kdWN0cy4gSW4gdGhl IGNhc2Ugb2YgQGNvZGV7VkVDX1dJREVOX01VTFRfTE9fRVhQUn0gdGhlCiBsb3cgQGNvZGV7 Ti8yfSBlbGVtZW50cyBvZiB0aGUgdHdvIHZlY3RvciBhcmUgbXVsdGlwbGllZCB0byBwcm9k dWNlIHRoZQogdmVjdG9yIG9mIEBjb2Rle04vMn0gcHJvZHVjdHMuCiAKLUBpdGVtIFZFQ19X SURFTl9QTFVTX0hJX0VYUFIKLUBpdGVteCBWRUNfV0lERU5fUExVU19MT19FWFBSCi1UaGVz ZSBub2RlcyByZXByZXNlbnQgd2lkZW5pbmcgdmVjdG9yIGFkZGl0aW9uIG9mIHRoZSBoaWdo IGFuZCBsb3cgcGFydHMgb2YKLXRoZSB0d28gaW5wdXQgdmVjdG9ycywgcmVzcGVjdGl2ZWx5 LiAgVGhlaXIgb3BlcmFuZHMgYXJlIHZlY3RvcnMgdGhhdCBjb250YWluCi10aGUgc2FtZSBu dW1iZXIgb2YgZWxlbWVudHMgKEBjb2Rle059KSBvZiB0aGUgc2FtZSBpbnRlZ3JhbCB0eXBl LiBUaGUgcmVzdWx0Ci1pcyBhIHZlY3RvciB0aGF0IGNvbnRhaW5zIGhhbGYgYXMgbWFueSBl bGVtZW50cywgb2YgYW4gaW50ZWdyYWwgdHlwZSB3aG9zZSBzaXplCi1pcyB0d2ljZSBhcyB3 aWRlLiAgSW4gdGhlIGNhc2Ugb2YgQGNvZGV7VkVDX1dJREVOX1BMVVNfSElfRVhQUn0gdGhl IGhpZ2gKLUBjb2Rle04vMn0gZWxlbWVudHMgb2YgdGhlIHR3byB2ZWN0b3JzIGFyZSBhZGRl ZCB0byBwcm9kdWNlIHRoZSB2ZWN0b3Igb2YKLUBjb2Rle04vMn0gcHJvZHVjdHMuICBJbiB0 aGUgY2FzZSBvZiBAY29kZXtWRUNfV0lERU5fUExVU19MT19FWFBSfSB0aGUgbG93Ci1AY29k ZXtOLzJ9IGVsZW1lbnRzIG9mIHRoZSB0d28gdmVjdG9ycyBhcmUgYWRkZWQgdG8gcHJvZHVj ZSB0aGUgdmVjdG9yIG9mCi1AY29kZXtOLzJ9IHByb2R1Y3RzLgotCi1AaXRlbSBWRUNfV0lE RU5fTUlOVVNfSElfRVhQUgotQGl0ZW14IFZFQ19XSURFTl9NSU5VU19MT19FWFBSCi1UaGVz ZSBub2RlcyByZXByZXNlbnQgd2lkZW5pbmcgdmVjdG9yIHN1YnRyYWN0aW9uIG9mIHRoZSBo aWdoIGFuZCBsb3cgcGFydHMgb2YKLXRoZSB0d28gaW5wdXQgdmVjdG9ycywgcmVzcGVjdGl2 ZWx5LiAgVGhlaXIgb3BlcmFuZHMgYXJlIHZlY3RvcnMgdGhhdCBjb250YWluCi10aGUgc2Ft ZSBudW1iZXIgb2YgZWxlbWVudHMgKEBjb2Rle059KSBvZiB0aGUgc2FtZSBpbnRlZ3JhbCB0 eXBlLiBUaGUgaGlnaC9sb3cKLWVsZW1lbnRzIG9mIHRoZSBzZWNvbmQgdmVjdG9yIGFyZSBz dWJ0cmFjdGVkIGZyb20gdGhlIGhpZ2gvbG93IGVsZW1lbnRzIG9mIHRoZQotZmlyc3QuIFRo ZSByZXN1bHQgaXMgYSB2ZWN0b3IgdGhhdCBjb250YWlucyBoYWxmIGFzIG1hbnkgZWxlbWVu dHMsIG9mIGFuCi1pbnRlZ3JhbCB0eXBlIHdob3NlIHNpemUgaXMgdHdpY2UgYXMgd2lkZS4g IEluIHRoZSBjYXNlIG9mCi1AY29kZXtWRUNfV0lERU5fTUlOVVNfSElfRVhQUn0gdGhlIGhp Z2ggQGNvZGV7Ti8yfSBlbGVtZW50cyBvZiB0aGUgc2Vjb25kCi12ZWN0b3IgYXJlIHN1YnRy YWN0ZWQgZnJvbSB0aGUgaGlnaCBAY29kZXtOLzJ9IG9mIHRoZSBmaXJzdCB0byBwcm9kdWNl IHRoZQotdmVjdG9yIG9mIEBjb2Rle04vMn0gcHJvZHVjdHMuICBJbiB0aGUgY2FzZSBvZgot QGNvZGV7VkVDX1dJREVOX01JTlVTX0xPX0VYUFJ9IHRoZSBsb3cgQGNvZGV7Ti8yfSBlbGVt ZW50cyBvZiB0aGUgc2Vjb25kCi12ZWN0b3IgYXJlIHN1YnRyYWN0ZWQgZnJvbSB0aGUgbG93 IEBjb2Rle04vMn0gb2YgdGhlIGZpcnN0IHRvIHByb2R1Y2UgdGhlCi12ZWN0b3Igb2YgQGNv ZGV7Ti8yfSBwcm9kdWN0cy4KLQogQGl0ZW0gVkVDX1VOUEFDS19ISV9FWFBSCiBAaXRlbXgg VkVDX1VOUEFDS19MT19FWFBSCiBUaGVzZSBub2RlcyByZXByZXNlbnQgdW5wYWNraW5nIG9m IHRoZSBoaWdoIGFuZCBsb3cgcGFydHMgb2YgdGhlIGlucHV0IHZlY3RvciwKZGlmZiAtLWdp dCBhL2djYy9leHByLmNjIGIvZ2NjL2V4cHIuY2MKaW5kZXggZjhmNWNjNWE2Y2E2N2YyOTFi M2M4YjcyNDZkNTkzYzBiZTgwMjcyZi4uNDU0ZDEzOTFiMTlhN2QyYWE1M2YwYTg4ODc2ZDFl YWYwNDk0ZGU1MSAxMDA2NDQKLS0tIGEvZ2NjL2V4cHIuY2MKKysrIGIvZ2NjL2V4cHIuY2MK QEAgLTk2MDEsOCArOTYwMSw2IEBAIGV4cGFuZF9leHByX3JlYWxfMiAoc2Vwb3BzIG9wcywg cnR4IHRhcmdldCwgbWFjaGluZV9tb2RlIHRtb2RlLAogCQkJCQkgIHRhcmdldCwgdW5zaWdu ZWRwKTsKICAgICAgIHJldHVybiB0YXJnZXQ7CiAKLSAgICBjYXNlIFdJREVOX1BMVVNfRVhQ UjoKLSAgICBjYXNlIFdJREVOX01JTlVTX0VYUFI6CiAgICAgY2FzZSBXSURFTl9NVUxUX0VY UFI6CiAgICAgICAvKiBJZiBmaXJzdCBvcGVyYW5kIGlzIGNvbnN0YW50LCBzd2FwIHRoZW0u CiAJIFRodXMgdGhlIGZvbGxvd2luZyBzcGVjaWFsIGNhc2UgY2hlY2tzIG5lZWQgb25seQpA QCAtMTAzODAsMTAgKzEwMzc4LDYgQEAgZXhwYW5kX2V4cHJfcmVhbF8yIChzZXBvcHMgb3Bz LCBydHggdGFyZ2V0LCBtYWNoaW5lX21vZGUgdG1vZGUsCiAJcmV0dXJuIHRlbXA7CiAgICAg ICB9CiAKLSAgICBjYXNlIFZFQ19XSURFTl9QTFVTX0hJX0VYUFI6Ci0gICAgY2FzZSBWRUNf V0lERU5fUExVU19MT19FWFBSOgotICAgIGNhc2UgVkVDX1dJREVOX01JTlVTX0hJX0VYUFI6 Ci0gICAgY2FzZSBWRUNfV0lERU5fTUlOVVNfTE9fRVhQUjoKICAgICBjYXNlIFZFQ19XSURF Tl9NVUxUX0hJX0VYUFI6CiAgICAgY2FzZSBWRUNfV0lERU5fTVVMVF9MT19FWFBSOgogICAg IGNhc2UgVkVDX1dJREVOX01VTFRfRVZFTl9FWFBSOgpkaWZmIC0tZ2l0IGEvZ2NjL2dpbXBs ZS1wcmV0dHktcHJpbnQuY2MgYi9nY2MvZ2ltcGxlLXByZXR0eS1wcmludC5jYwppbmRleCAz MDBlOWQ3ZWQxZTdiZTczZjMwODc1ZTA4YzQ2MWE4ODgwYzMxMzRlLi5kOTAzODI2ODk0ZTdm MGRmZDM0ZGMwY2FhZDkyZWVhM2NhYTQ1ZTA1IDEwMDY0NAotLS0gYS9nY2MvZ2ltcGxlLXBy ZXR0eS1wcmludC5jYworKysgYi9nY2MvZ2ltcGxlLXByZXR0eS1wcmludC5jYwpAQCAtNDU5 LDEwICs0NTksNiBAQCBkdW1wX2JpbmFyeV9yaHMgKHByZXR0eV9wcmludGVyICpidWZmZXIs IGNvbnN0IGdhc3NpZ24gKmdzLCBpbnQgc3BjLAogICAgIGNhc2UgVkVDX1BBQ0tfRkxPQVRf RVhQUjoKICAgICBjYXNlIFZFQ19XSURFTl9MU0hJRlRfSElfRVhQUjoKICAgICBjYXNlIFZF Q19XSURFTl9MU0hJRlRfTE9fRVhQUjoKLSAgICBjYXNlIFZFQ19XSURFTl9QTFVTX0hJX0VY UFI6Ci0gICAgY2FzZSBWRUNfV0lERU5fUExVU19MT19FWFBSOgotICAgIGNhc2UgVkVDX1dJ REVOX01JTlVTX0hJX0VYUFI6Ci0gICAgY2FzZSBWRUNfV0lERU5fTUlOVVNfTE9fRVhQUjoK ICAgICBjYXNlIFZFQ19TRVJJRVNfRVhQUjoKICAgICAgIGZvciAocCA9IGdldF90cmVlX2Nv ZGVfbmFtZSAoY29kZSk7ICpwOyBwKyspCiAJcHBfY2hhcmFjdGVyIChidWZmZXIsIFRPVVBQ RVIgKCpwKSk7CmRpZmYgLS1naXQgYS9nY2MvZ2ltcGxlLXJhbmdlLW9wLmNjIGIvZ2NjL2dp bXBsZS1yYW5nZS1vcC5jYwppbmRleCA0Y2EzMmE3YjVkNTJmODQyNmIwOWQxNDQ2YTMzNjY1 MGUxNDNiNDFmLi41YWU3Zjc1OTZjNmZjNmY5MDFlNGU0N2FlNDRmMDAxODVmNDYwMmIyIDEw MDY0NAotLS0gYS9nY2MvZ2ltcGxlLXJhbmdlLW9wLmNjCisrKyBiL2djYy9naW1wbGUtcmFu Z2Utb3AuY2MKQEAgLTc5NywxMiArNzk3LDYgQEAgZ2ltcGxlX3JhbmdlX29wX2hhbmRsZXI6 Om1heWJlX25vbl9zdGFuZGFyZCAoKQogICBpZiAoZ2ltcGxlX2NvZGUgKG1fc3RtdCkgPT0g R0lNUExFX0FTU0lHTikKICAgICBzd2l0Y2ggKGdpbXBsZV9hc3NpZ25fcmhzX2NvZGUgKG1f c3RtdCkpCiAgICAgICB7Ci0JY2FzZSBXSURFTl9QTFVTX0VYUFI6Ci0JewotCSAgc2lnbmVk X29wID0gcHRyX29wX3dpZGVuX3BsdXNfc2lnbmVkOwotCSAgdW5zaWduZWRfb3AgPSBwdHJf b3Bfd2lkZW5fcGx1c191bnNpZ25lZDsKLQl9Ci0JZ2NjX2ZhbGx0aHJvdWdoICgpOwogCWNh c2UgV0lERU5fTVVMVF9FWFBSOgogCXsKIAkgIG1fdmFsaWQgPSBmYWxzZTsKZGlmZiAtLWdp dCBhL2djYy9vcHRhYnMtdHJlZS5jYyBiL2djYy9vcHRhYnMtdHJlZS5jYwppbmRleCA4MDEw MDQ2YzZhOGIzZTgwOWM5ODlkZGVmN2EwNmRkYWE2OGFlMzJhLi5lZTFhYThjOTY3NmVlOWM2 N2VkYmY0MDNlNjI5NWRhMzkxODI2YTYyIDEwMDY0NAotLS0gYS9nY2Mvb3B0YWJzLXRyZWUu Y2MKKysrIGIvZ2NjL29wdGFicy10cmVlLmNjCkBAIC0xOTAsMjIgKzE5MCw2IEBAIG9wdGFi X2Zvcl90cmVlX2NvZGUgKGVudW0gdHJlZV9jb2RlIGNvZGUsIGNvbnN0X3RyZWUgdHlwZSwK ICAgICAgIHJldHVybiAoVFlQRV9VTlNJR05FRCAodHlwZSkKIAkgICAgICA/IHZlY193aWRl bl91c2hpZnRsX2xvX29wdGFiIDogdmVjX3dpZGVuX3NzaGlmdGxfbG9fb3B0YWIpOwogCi0g ICAgY2FzZSBWRUNfV0lERU5fUExVU19MT19FWFBSOgotICAgICAgcmV0dXJuIChUWVBFX1VO U0lHTkVEICh0eXBlKQotCSAgICAgID8gdmVjX3dpZGVuX3VhZGRsX2xvX29wdGFiIDogdmVj X3dpZGVuX3NhZGRsX2xvX29wdGFiKTsKLQotICAgIGNhc2UgVkVDX1dJREVOX1BMVVNfSElf RVhQUjoKLSAgICAgIHJldHVybiAoVFlQRV9VTlNJR05FRCAodHlwZSkKLQkgICAgICA/IHZl Y193aWRlbl91YWRkbF9oaV9vcHRhYiA6IHZlY193aWRlbl9zYWRkbF9oaV9vcHRhYik7Ci0K LSAgICBjYXNlIFZFQ19XSURFTl9NSU5VU19MT19FWFBSOgotICAgICAgcmV0dXJuIChUWVBF X1VOU0lHTkVEICh0eXBlKQotCSAgICAgID8gdmVjX3dpZGVuX3VzdWJsX2xvX29wdGFiIDog dmVjX3dpZGVuX3NzdWJsX2xvX29wdGFiKTsKLQotICAgIGNhc2UgVkVDX1dJREVOX01JTlVT X0hJX0VYUFI6Ci0gICAgICByZXR1cm4gKFRZUEVfVU5TSUdORUQgKHR5cGUpCi0JICAgICAg PyB2ZWNfd2lkZW5fdXN1YmxfaGlfb3B0YWIgOiB2ZWNfd2lkZW5fc3N1YmxfaGlfb3B0YWIp OwotCiAgICAgY2FzZSBWRUNfVU5QQUNLX0hJX0VYUFI6CiAgICAgICByZXR1cm4gKFRZUEVf VU5TSUdORUQgKHR5cGUpCiAJICAgICAgPyB2ZWNfdW5wYWNrdV9oaV9vcHRhYiA6IHZlY191 bnBhY2tzX2hpX29wdGFiKTsKQEAgLTMxMiw4ICsyOTYsNiBAQCBvcHRhYl9mb3JfdHJlZV9j b2RlIChlbnVtIHRyZWVfY29kZSBjb2RlLCBjb25zdF90cmVlIHR5cGUsCiAgICAnaGknLyds bycgcGFpciB1c2luZyBjb2RlcyBzdWNoIGFzIFZFQ19XSURFTl9NSU5VU19ISS9MTy4KIAog ICAgU3VwcG9ydGVkIHdpZGVuaW5nIG9wZXJhdGlvbnM6Ci0gICAgV0lERU5fTUlOVVNfRVhQ UgotICAgIFdJREVOX1BMVVNfRVhQUgogICAgIFdJREVOX01VTFRfRVhQUgogICAgIFdJREVO X0xTSElGVF9FWFBSCiAKQEAgLTM0NSwxMiArMzI3LDYgQEAgc3VwcG9ydGFibGVfaGFsZl93 aWRlbmluZ19vcGVyYXRpb24gKGVudW0gdHJlZV9jb2RlIGNvZGUsIHRyZWUgdmVjdHlwZV9v dXQsCiAgICAgY2FzZSBXSURFTl9MU0hJRlRfRVhQUjoKICAgICAgICpjb2RlMSA9IExTSElG VF9FWFBSOwogICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXSURFTl9NSU5VU19FWFBSOgotICAg ICAgKmNvZGUxID0gTUlOVVNfRVhQUjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgV0lERU5f UExVU19FWFBSOgotICAgICAgKmNvZGUxID0gUExVU19FWFBSOwotICAgICAgYnJlYWs7CiAg ICAgY2FzZSBXSURFTl9NVUxUX0VYUFI6CiAgICAgICAqY29kZTEgPSBNVUxUX0VYUFI7CiAg ICAgICBicmVhazsKZGlmZiAtLWdpdCBhL2djYy90cmVlLWNmZy5jYyBiL2djYy90cmVlLWNm Zy5jYwppbmRleCBhOWZjYzdmZDA1MGY4NzE0MzdlZjMzNmVjZmI4ZDZjYzgxMjgwZWUwLi5m ODBjZDE0NjVkZjgzYjU1NDA0OTJlNjE5ZTU2YjlhZjI0OWU5ZjMxIDEwMDY0NAotLS0gYS9n Y2MvdHJlZS1jZmcuY2MKKysrIGIvZ2NjL3RyZWUtY2ZnLmNjCkBAIC00MDE3LDggKzQwMTcs NiBAQCB2ZXJpZnlfZ2ltcGxlX2Fzc2lnbl9iaW5hcnkgKGdhc3NpZ24gKnN0bXQpCiAgICAg ICAgIHJldHVybiBmYWxzZTsKICAgICAgIH0KIAotICAgIGNhc2UgV0lERU5fUExVU19FWFBS OgotICAgIGNhc2UgV0lERU5fTUlOVVNfRVhQUjoKICAgICBjYXNlIFBMVVNfRVhQUjoKICAg ICBjYXNlIE1JTlVTX0VYUFI6CiAgICAgICB7CkBAIC00MTM5LDEwICs0MTM3LDYgQEAgdmVy aWZ5X2dpbXBsZV9hc3NpZ25fYmluYXJ5IChnYXNzaWduICpzdG10KQogICAgICAgICByZXR1 cm4gZmFsc2U7CiAgICAgICB9CiAKLSAgICBjYXNlIFZFQ19XSURFTl9NSU5VU19ISV9FWFBS OgotICAgIGNhc2UgVkVDX1dJREVOX01JTlVTX0xPX0VYUFI6Ci0gICAgY2FzZSBWRUNfV0lE RU5fUExVU19ISV9FWFBSOgotICAgIGNhc2UgVkVDX1dJREVOX1BMVVNfTE9fRVhQUjoKICAg ICBjYXNlIFZFQ19XSURFTl9NVUxUX0hJX0VYUFI6CiAgICAgY2FzZSBWRUNfV0lERU5fTVVM VF9MT19FWFBSOgogICAgIGNhc2UgVkVDX1dJREVOX01VTFRfRVZFTl9FWFBSOgpkaWZmIC0t Z2l0IGEvZ2NjL3RyZWUtaW5saW5lLmNjIGIvZ2NjL3RyZWUtaW5saW5lLmNjCmluZGV4IGM3 MDJmMDAzMmExOTIwM2E3YzUzNmEwMWMxZTdmNDdmYzdiNzdhZGQuLjZlNWZkNDVhMGMyNDM1 MTA5ZGQzZDUwZThmYzhlMWQ0OTY5YTFmZDAgMTAwNjQ0Ci0tLSBhL2djYy90cmVlLWlubGlu ZS5jYworKysgYi9nY2MvdHJlZS1pbmxpbmUuY2MKQEAgLTQyNzMsOCArNDI3Myw2IEBAIGVz dGltYXRlX29wZXJhdG9yX2Nvc3QgKGVudW0gdHJlZV9jb2RlIGNvZGUsIGVuaV93ZWlnaHRz ICp3ZWlnaHRzLAogCiAgICAgY2FzZSBSRUFMSUdOX0xPQURfRVhQUjoKIAotICAgIGNhc2Ug V0lERU5fUExVU19FWFBSOgotICAgIGNhc2UgV0lERU5fTUlOVVNfRVhQUjoKICAgICBjYXNl IFdJREVOX1NVTV9FWFBSOgogICAgIGNhc2UgV0lERU5fTVVMVF9FWFBSOgogICAgIGNhc2Ug RE9UX1BST0RfRVhQUjoKQEAgLTQyODMsMTAgKzQyODEsNiBAQCBlc3RpbWF0ZV9vcGVyYXRv cl9jb3N0IChlbnVtIHRyZWVfY29kZSBjb2RlLCBlbmlfd2VpZ2h0cyAqd2VpZ2h0cywKICAg ICBjYXNlIFdJREVOX01VTFRfTUlOVVNfRVhQUjoKICAgICBjYXNlIFdJREVOX0xTSElGVF9F WFBSOgogCi0gICAgY2FzZSBWRUNfV0lERU5fUExVU19ISV9FWFBSOgotICAgIGNhc2UgVkVD X1dJREVOX1BMVVNfTE9fRVhQUjoKLSAgICBjYXNlIFZFQ19XSURFTl9NSU5VU19ISV9FWFBS OgotICAgIGNhc2UgVkVDX1dJREVOX01JTlVTX0xPX0VYUFI6CiAgICAgY2FzZSBWRUNfV0lE RU5fTVVMVF9ISV9FWFBSOgogICAgIGNhc2UgVkVDX1dJREVOX01VTFRfTE9fRVhQUjoKICAg ICBjYXNlIFZFQ19XSURFTl9NVUxUX0VWRU5fRVhQUjoKZGlmZiAtLWdpdCBhL2djYy90cmVl LXByZXR0eS1wcmludC5jYyBiL2djYy90cmVlLXByZXR0eS1wcmludC5jYwppbmRleCA3OTQ3 Zjk2NDdhMTUxMTBiNTJkMTk1NjQzYWQ3ZDI4ZWUzMmQ0MjM2Li45OTQxZDhiZjgwNTM1YTk4 ZTY0N2I4OTI4NjE5YTZiZjA4YmM0MzRjIDEwMDY0NAotLS0gYS9nY2MvdHJlZS1wcmV0dHkt cHJpbnQuY2MKKysrIGIvZ2NjL3RyZWUtcHJldHR5LXByaW50LmNjCkBAIC0yODc0LDggKzI4 NzQsNiBAQCBkdW1wX2dlbmVyaWNfbm9kZSAocHJldHR5X3ByaW50ZXIgKnBwLCB0cmVlIG5v ZGUsIGludCBzcGMsIGR1bXBfZmxhZ3NfdCBmbGFncywKICAgICAgIGJyZWFrOwogCiAgICAg ICAvKiBCaW5hcnkgYXJpdGhtZXRpYyBhbmQgbG9naWMgZXhwcmVzc2lvbnMuICAqLwotICAg IGNhc2UgV0lERU5fUExVU19FWFBSOgotICAgIGNhc2UgV0lERU5fTUlOVVNfRVhQUjoKICAg ICBjYXNlIFdJREVOX1NVTV9FWFBSOgogICAgIGNhc2UgV0lERU5fTVVMVF9FWFBSOgogICAg IGNhc2UgTVVMVF9FWFBSOgpAQCAtMzgzMSwxMCArMzgyOSw2IEBAIGR1bXBfZ2VuZXJpY19u b2RlIChwcmV0dHlfcHJpbnRlciAqcHAsIHRyZWUgbm9kZSwgaW50IHNwYywgZHVtcF9mbGFn c190IGZsYWdzLAogICAgIGNhc2UgVkVDX1NFUklFU19FWFBSOgogICAgIGNhc2UgVkVDX1dJ REVOX01VTFRfSElfRVhQUjoKICAgICBjYXNlIFZFQ19XSURFTl9NVUxUX0xPX0VYUFI6Ci0g ICAgY2FzZSBWRUNfV0lERU5fUExVU19ISV9FWFBSOgotICAgIGNhc2UgVkVDX1dJREVOX1BM VVNfTE9fRVhQUjoKLSAgICBjYXNlIFZFQ19XSURFTl9NSU5VU19ISV9FWFBSOgotICAgIGNh c2UgVkVDX1dJREVOX01JTlVTX0xPX0VYUFI6CiAgICAgY2FzZSBWRUNfV0lERU5fTVVMVF9F VkVOX0VYUFI6CiAgICAgY2FzZSBWRUNfV0lERU5fTVVMVF9PRERfRVhQUjoKICAgICBjYXNl IFZFQ19XSURFTl9MU0hJRlRfSElfRVhQUjoKQEAgLTQzNTIsMTIgKzQzNDYsNiBAQCBvcF9z eW1ib2xfY29kZSAoZW51bSB0cmVlX2NvZGUgY29kZSkKICAgICBjYXNlIFdJREVOX0xTSElG VF9FWFBSOgogICAgICAgcmV0dXJuICJ3PDwiOwogCi0gICAgY2FzZSBXSURFTl9QTFVTX0VY UFI6Ci0gICAgICByZXR1cm4gIncrIjsKLQotICAgIGNhc2UgV0lERU5fTUlOVVNfRVhQUjoK LSAgICAgIHJldHVybiAidy0iOwotCiAgICAgY2FzZSBQT0lOVEVSX1BMVVNfRVhQUjoKICAg ICAgIHJldHVybiAiKyI7CiAKZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3QtZGF0YS1yZWZz LmNjIGIvZ2NjL3RyZWUtdmVjdC1kYXRhLXJlZnMuY2MKaW5kZXggOGRhZjdiZDdkZDM0ZDA0 M2IxZDdiNGNiYTE3NzlmMGVjZjlmNTIwYS4uMjEzYTM4OTlhNmMxNDViYjA1N2NkMTE4YmVj MWRmN2EwNTcyOGFlZiAxMDA2NDQKLS0tIGEvZ2NjL3RyZWUtdmVjdC1kYXRhLXJlZnMuY2MK KysrIGIvZ2NjL3RyZWUtdmVjdC1kYXRhLXJlZnMuY2MKQEAgLTEzNiw4ICsxMzYsNiBAQCB2 ZWN0X2dldF9zbWFsbGVzdF9zY2FsYXJfdHlwZSAoc3RtdF92ZWNfaW5mbyBzdG10X2luZm8s IHRyZWUgc2NhbGFyX3R5cGUpCiAJICB8fCBnaW1wbGVfYXNzaWduX3Joc19jb2RlIChhc3Np Z24pID09IFdJREVOX1NVTV9FWFBSCiAJICB8fCBnaW1wbGVfYXNzaWduX3Joc19jb2RlIChh c3NpZ24pID09IFdJREVOX01VTFRfRVhQUgogCSAgfHwgZ2ltcGxlX2Fzc2lnbl9yaHNfY29k ZSAoYXNzaWduKSA9PSBXSURFTl9MU0hJRlRfRVhQUgotCSAgfHwgZ2ltcGxlX2Fzc2lnbl9y aHNfY29kZSAoYXNzaWduKSA9PSBXSURFTl9QTFVTX0VYUFIKLQkgIHx8IGdpbXBsZV9hc3Np Z25fcmhzX2NvZGUgKGFzc2lnbikgPT0gV0lERU5fTUlOVVNfRVhQUgogCSAgfHwgZ2ltcGxl X2Fzc2lnbl9yaHNfY29kZSAoYXNzaWduKSA9PSBGTE9BVF9FWFBSKQogCXsKIAkgIHRyZWUg cmhzX3R5cGUgPSBUUkVFX1RZUEUgKGdpbXBsZV9hc3NpZ25fcmhzMSAoYXNzaWduKSk7CmRp ZmYgLS1naXQgYS9nY2MvdHJlZS12ZWN0LWdlbmVyaWMuY2MgYi9nY2MvdHJlZS12ZWN0LWdl bmVyaWMuY2MKaW5kZXggNDQ1ZGE1MzI5MmU5ZDFkMmRiNjJjYTk2MmZjMDE3YmIwZTZjOWJi ZS4uMzQyZmZjNWZhN2YzYjhmMzdlNmJkNDY1OGQyZjFmY2NmMWQyYzdmYSAxMDA2NDQKLS0t IGEvZ2NjL3RyZWUtdmVjdC1nZW5lcmljLmNjCisrKyBiL2djYy90cmVlLXZlY3QtZ2VuZXJp Yy5jYwpAQCAtMjIyNywxMCArMjIyNyw2IEBAIGV4cGFuZF92ZWN0b3Jfb3BlcmF0aW9uc18x IChnaW1wbGVfc3RtdF9pdGVyYXRvciAqZ3NpLAogICAgICBhcmd1bWVudHMsIG5vdCB0aGUg d2lkZW5lZCByZXN1bHQuICBWRUNfVU5QQUNLX0ZMT0FUXypfRVhQUiBpcwogICAgICBjYWxj dWxhdGVkIGluIHRoZSBzYW1lIHdheSBhYm92ZS4gICovCiAgIGlmIChjb2RlID09IFdJREVO X1NVTV9FWFBSCi0gICAgICB8fCBjb2RlID09IFZFQ19XSURFTl9QTFVTX0hJX0VYUFIKLSAg ICAgIHx8IGNvZGUgPT0gVkVDX1dJREVOX1BMVVNfTE9fRVhQUgotICAgICAgfHwgY29kZSA9 PSBWRUNfV0lERU5fTUlOVVNfSElfRVhQUgotICAgICAgfHwgY29kZSA9PSBWRUNfV0lERU5f TUlOVVNfTE9fRVhQUgogICAgICAgfHwgY29kZSA9PSBWRUNfV0lERU5fTVVMVF9ISV9FWFBS CiAgICAgICB8fCBjb2RlID09IFZFQ19XSURFTl9NVUxUX0xPX0VYUFIKICAgICAgIHx8IGNv ZGUgPT0gVkVDX1dJREVOX01VTFRfRVZFTl9FWFBSCmRpZmYgLS1naXQgYS9nY2MvdHJlZS12 ZWN0LXBhdHRlcm5zLmNjIGIvZ2NjL3RyZWUtdmVjdC1wYXR0ZXJucy5jYwppbmRleCAxYTUx NDQ2MWIyY2E0MTZmNDVhNWZhOWFiZTQxNzk4MGQzM2VmNGRmLi4xM2M2OTEzM2Q3YWU1NjVj ZjAzMzQzOTBjYjBjMzAzYzg5Zjk4YWM4IDEwMDY0NAotLS0gYS9nY2MvdHJlZS12ZWN0LXBh dHRlcm5zLmNjCisrKyBiL2djYy90cmVlLXZlY3QtcGF0dGVybnMuY2MKQEAgLTU2MSwyMSAr NTYxLDM1IEBAIHZlY3Rfam91c3Rfd2lkZW5lZF90eXBlICh0cmVlIHR5cGUsIHRyZWUgbmV3 X3R5cGUsIHRyZWUgKmNvbW1vbl90eXBlKQogCiBzdGF0aWMgdW5zaWduZWQgaW50CiB2ZWN0 X3dpZGVuZWRfb3BfdHJlZSAodmVjX2luZm8gKnZpbmZvLCBzdG10X3ZlY19pbmZvIHN0bXRf aW5mbywgdHJlZV9jb2RlIGNvZGUsCi0JCSAgICAgIHRyZWVfY29kZSB3aWRlbmVkX2NvZGUs IGJvb2wgc2hpZnRfcCwKKwkJICAgICAgY29kZV9oZWxwZXIgd2lkZW5lZF9jb2RlLCBib29s IHNoaWZ0X3AsCiAJCSAgICAgIHVuc2lnbmVkIGludCBtYXhfbm9wcywKIAkJICAgICAgdmVj dF91bnByb21vdGVkX3ZhbHVlICp1bnByb20sIHRyZWUgKmNvbW1vbl90eXBlLAogCQkgICAg ICBlbnVtIG9wdGFiX3N1YnR5cGUgKnN1YnR5cGUgPSBOVUxMKQogewogICAvKiBDaGVjayBm b3IgYW4gaW50ZWdlciBvcGVyYXRpb24gd2l0aCB0aGUgcmlnaHQgY29kZS4gICovCi0gIGdh c3NpZ24gKmFzc2lnbiA9IGR5bl9jYXN0IDxnYXNzaWduICo+IChzdG10X2luZm8tPnN0bXQp OwotICBpZiAoIWFzc2lnbikKKyAgZ2ltcGxlKiBzdG10ID0gc3RtdF9pbmZvLT5zdG10Owor ICBpZiAoIShpc19naW1wbGVfYXNzaWduIChzdG10KSB8fCBpc19naW1wbGVfY2FsbCAoc3Rt dCkpKQogICAgIHJldHVybiAwOwogCi0gIHRyZWVfY29kZSByaHNfY29kZSA9IGdpbXBsZV9h c3NpZ25fcmhzX2NvZGUgKGFzc2lnbik7Ci0gIGlmIChyaHNfY29kZSAhPSBjb2RlICYmIHJo c19jb2RlICE9IHdpZGVuZWRfY29kZSkKKyAgY29kZV9oZWxwZXIgcmhzX2NvZGU7CisgIGlm IChpc19naW1wbGVfYXNzaWduIChzdG10KSkKKyAgICB7CisgICAgICByaHNfY29kZSA9IGdp bXBsZV9hc3NpZ25fcmhzX2NvZGUgKHN0bXQpOworICAgICAgaWYgKHJoc19jb2RlLnNhZmVf YXNfdHJlZV9jb2RlICgpICE9IGNvZGUKKwkgICYmIHJoc19jb2RlLmdldF9yZXAgKCkgIT0g d2lkZW5lZF9jb2RlLmdldF9yZXAgKCkpCisJcmV0dXJuIDA7CisgICAgfQorICBlbHNlIGlm IChpc19naW1wbGVfY2FsbCAoc3RtdCkpCisgICAgeworICAgICAgcmhzX2NvZGUgPSBnaW1w bGVfY2FsbF9jb21iaW5lZF9mbiAoc3RtdCk7CisgICAgICBpZiAocmhzX2NvZGUuZ2V0X3Jl cCAoKSAhPSB3aWRlbmVkX2NvZGUuZ2V0X3JlcCAoKSkKKwlyZXR1cm4gMDsKKyAgICB9Cisg IGVsc2UKICAgICByZXR1cm4gMDsKIAotICB0cmVlIHR5cGUgPSBUUkVFX1RZUEUgKGdpbXBs ZV9hc3NpZ25fbGhzIChhc3NpZ24pKTsKKyAgdHJlZSBsaHMgPSBnaW1wbGVfZ2V0X2xocyAo c3RtdCk7CisgIHRyZWUgdHlwZSA9IFRSRUVfVFlQRSAobGhzKTsKICAgaWYgKCFJTlRFR1JB TF9UWVBFX1AgKHR5cGUpKQogICAgIHJldHVybiAwOwogCkBAIC01ODgsNyArNjAyLDcgQEAg dmVjdF93aWRlbmVkX29wX3RyZWUgKHZlY19pbmZvICp2aW5mbywgc3RtdF92ZWNfaW5mbyBz dG10X2luZm8sIHRyZWVfY29kZSBjb2RlLAogICAgIHsKICAgICAgIHZlY3RfdW5wcm9tb3Rl ZF92YWx1ZSAqdGhpc191bnByb20gPSAmdW5wcm9tW25leHRfb3BdOwogICAgICAgdW5zaWdu ZWQgaW50IG5vcHMgPSAxOwotICAgICAgdHJlZSBvcCA9IGdpbXBsZV9vcCAoYXNzaWduLCBp ICsgMSk7CisgICAgICB0cmVlIG9wID0gZ2ltcGxlX2FyZyAoc3RtdCwgaSk7CiAgICAgICBp ZiAoaSA9PSAxICYmIFRSRUVfQ09ERSAob3ApID09IElOVEVHRVJfQ1NUKQogCXsKIAkgIC8q IFdlIGFscmVhZHkgaGF2ZSBhIGNvbW1vbiB0eXBlIGZyb20gZWFybGllciBvcGVyYW5kcy4K QEAgLTEzNDIsOCArMTM1Niw5IEBAIHZlY3RfcmVjb2dfc2FkX3BhdHRlcm4gKHZlY19pbmZv ICp2aW5mbywKICAgLyogRk9STk9XLiAgQ2FuIGNvbnRpbnVlIGFuYWx5emluZyB0aGUgZGVm LXVzZSBjaGFpbiB3aGVuIHRoaXMgc3RtdCBpbiBhIHBoaQogICAgICBpbnNpZGUgdGhlIGxv b3AgKGluIGNhc2Ugd2UgYXJlIGFuYWx5emluZyBhbiBvdXRlci1sb29wKS4gICovCiAgIHZl Y3RfdW5wcm9tb3RlZF92YWx1ZSB1bnByb21bMl07Ci0gIGlmICghdmVjdF93aWRlbmVkX29w X3RyZWUgKHZpbmZvLCBkaWZmX3N0bXRfdmluZm8sIE1JTlVTX0VYUFIsIFdJREVOX01JTlVT X0VYUFIsCi0JCQkgICAgIGZhbHNlLCAyLCB1bnByb20sICZoYWxmX3R5cGUpKQorICBpZiAo IXZlY3Rfd2lkZW5lZF9vcF90cmVlICh2aW5mbywgZGlmZl9zdG10X3ZpbmZvLCBNSU5VU19F WFBSLAorCQkJICAgICBDRk5fVkVDX1dJREVOX01JTlVTLCBmYWxzZSwgMiwgdW5wcm9tLAor CQkJICAgICAmaGFsZl90eXBlKSkKICAgICByZXR1cm4gTlVMTDsKIAogICB2ZWN0X3BhdHRl cm5fZGV0ZWN0ZWQgKCJ2ZWN0X3JlY29nX3NhZF9wYXR0ZXJuIiwgbGFzdF9zdG10KTsKQEAg LTI2OTYsOSArMjcxMSwxMCBAQCB2ZWN0X3JlY29nX2F2ZXJhZ2VfcGF0dGVybiAodmVjX2lu Zm8gKnZpbmZvLAogICBpbnRlcm5hbF9mbiBpZm4gPSBJRk5fQVZHX0ZMT09SOwogICB2ZWN0 X3VucHJvbW90ZWRfdmFsdWUgdW5wcm9tWzNdOwogICB0cmVlIG5ld190eXBlOworICBlbnVt IG9wdGFiX3N1YnR5cGUgc3VidHlwZTsKICAgdW5zaWduZWQgaW50IG5vcHMgPSB2ZWN0X3dp ZGVuZWRfb3BfdHJlZSAodmluZm8sIHBsdXNfc3RtdF9pbmZvLCBQTFVTX0VYUFIsCi0JCQkJ CSAgICBXSURFTl9QTFVTX0VYUFIsIGZhbHNlLCAzLAotCQkJCQkgICAgdW5wcm9tLCAmbmV3 X3R5cGUpOworCQkJCQkgICAgQ0ZOX1ZFQ19XSURFTl9QTFVTLCBmYWxzZSwgMywKKwkJCQkJ ICAgIHVucHJvbSwgJm5ld190eXBlLCAmc3VidHlwZSk7CiAgIGlmIChub3BzID09IDApCiAg ICAgcmV0dXJuIE5VTEw7CiAgIGlmIChub3BzID09IDMpCmRpZmYgLS1naXQgYS9nY2MvdHJl ZS12ZWN0LXN0bXRzLmNjIGIvZ2NjL3RyZWUtdmVjdC1zdG10cy5jYwppbmRleCBmNDgwNjA3 M2Y0OGQ0ZGVkZWEzYWM5YmQ4NTU3OTJiMTUyZDc4OTE5Li4zOGY0NjgwZDQ1YWI4MGU4Zjg2 MzI3MzI3YzEzNjY3ZDk2YmM1YmVhIDEwMDY0NAotLS0gYS9nY2MvdHJlZS12ZWN0LXN0bXRz LmNjCisrKyBiL2djYy90cmVlLXZlY3Qtc3RtdHMuY2MKQEAgLTUwMzIsOSArNTAzMiw3IEBA IHZlY3Rvcml6YWJsZV9jb252ZXJzaW9uICh2ZWNfaW5mbyAqdmluZm8sCiAgIGVsc2UKICAg ICByZXR1cm4gZmFsc2U7CiAKLSAgYm9vbCB3aWRlbl9hcml0aCA9IChjb2RlID09IFdJREVO X1BMVVNfRVhQUgotCQkgfHwgY29kZSA9PSBXSURFTl9NSU5VU19FWFBSCi0JCSB8fCBjb2Rl ID09IFdJREVOX01VTFRfRVhQUgorICBib29sIHdpZGVuX2FyaXRoID0gKGNvZGUgPT0gV0lE RU5fTVVMVF9FWFBSCiAJCSB8fCBjb2RlID09IFdJREVOX0xTSElGVF9FWFBSCiAJCSB8fCBj b2RlID09IElGTl9WRUNfV0lERU5fUExVUwogCQkgfHwgY29kZSA9PSBJRk5fVkVDX1dJREVO X01JTlVTKTsKQEAgLTUwODYsOCArNTA4NCw2IEBAIHZlY3Rvcml6YWJsZV9jb252ZXJzaW9u ICh2ZWNfaW5mbyAqdmluZm8sCiAgICAgewogICAgICAgZ2NjX2Fzc2VydCAoY29kZSA9PSBX SURFTl9NVUxUX0VYUFIKIAkJICB8fCBjb2RlID09IFdJREVOX0xTSElGVF9FWFBSCi0JCSAg fHwgY29kZSA9PSBXSURFTl9QTFVTX0VYUFIKLQkJICB8fCBjb2RlID09IFdJREVOX01JTlVT X0VYUFIKIAkJICB8fCBjb2RlID09IElGTl9WRUNfV0lERU5fUExVUwogCQkgIHx8IGNvZGUg PT0gSUZOX1ZFQ19XSURFTl9NSU5VUyk7CiAKQEAgLTEyMjExLDcgKzEyMjA3LDcgQEAgc3Vw cG9ydGFibGVfd2lkZW5pbmdfb3BlcmF0aW9uICh2ZWNfaW5mbyAqdmluZm8sCiAgIGNsYXNz IGxvb3AgKnZlY3RfbG9vcCA9IE5VTEw7CiAgIG1hY2hpbmVfbW9kZSB2ZWNfbW9kZTsKICAg ZW51bSBpbnNuX2NvZGUgaWNvZGUxLCBpY29kZTI7Ci0gIG9wdGFiIG9wdGFiMSwgb3B0YWIy OworICBvcHRhYiBvcHRhYjEgPSB1bmtub3duX29wdGFiLCBvcHRhYjIgPSB1bmtub3duX29w dGFiOwogICB0cmVlIHZlY3R5cGUgPSB2ZWN0eXBlX2luOwogICB0cmVlIHdpZGVfdmVjdHlw ZSA9IHZlY3R5cGVfb3V0OwogICBjb2RlX2hlbHBlciBjMSA9IE1BWF9UUkVFX0NPREVTLCBj MiA9IE1BWF9UUkVFX0NPREVTOwpAQCAtMTIzMDUsMTYgKzEyMzAxLDYgQEAgc3VwcG9ydGFi bGVfd2lkZW5pbmdfb3BlcmF0aW9uICh2ZWNfaW5mbyAqdmluZm8sCiAgICAgICBjMiA9IFZF Q19XSURFTl9MU0hJRlRfSElfRVhQUjsKICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBXSURF Tl9QTFVTX0VYUFI6Ci0gICAgICBjMSA9IFZFQ19XSURFTl9QTFVTX0xPX0VYUFI7Ci0gICAg ICBjMiA9IFZFQ19XSURFTl9QTFVTX0hJX0VYUFI7Ci0gICAgICBicmVhazsKLQotICAgIGNh c2UgV0lERU5fTUlOVVNfRVhQUjoKLSAgICAgIGMxID0gVkVDX1dJREVOX01JTlVTX0xPX0VY UFI7Ci0gICAgICBjMiA9IFZFQ19XSURFTl9NSU5VU19ISV9FWFBSOwotICAgICAgYnJlYWs7 Ci0KICAgICBDQVNFX0NPTlZFUlQ6CiAgICAgICBjMSA9IFZFQ19VTlBBQ0tfTE9fRVhQUjsK ICAgICAgIGMyID0gVkVDX1VOUEFDS19ISV9FWFBSOwpkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUu ZGVmIGIvZ2NjL3RyZWUuZGVmCmluZGV4IGVlMDI3NTQzNTRmMDE1YTE2NzM3YzdlODc5ZDg5 YzNlM2JlMGQ1YWEuLmE1OGU2MDhhOTAwNzg4MThhN2FkZTlkMTE3M2FjN2VjODRjNDhjN2Eg MTAwNjQ0Ci0tLSBhL2djYy90cmVlLmRlZgorKysgYi9nY2MvdHJlZS5kZWYKQEAgLTEzNzQs MTUgKzEzNzQsMTYgQEAgREVGVFJFRUNPREUgKERPVF9QUk9EX0VYUFIsICJkb3RfcHJvZF9l eHByIiwgdGNjX2V4cHJlc3Npb24sIDMpCiBERUZUUkVFQ09ERSAoV0lERU5fU1VNX0VYUFIs ICJ3aWRlbl9zdW1fZXhwciIsIHRjY19iaW5hcnksIDIpCiAKIC8qIFdpZGVuaW5nIHNhZCAo c3VtIG9mIGFic29sdXRlIGRpZmZlcmVuY2VzKS4KLSAgIFRoZSBmaXJzdCB0d28gYXJndW1l bnRzIGFyZSBvZiB0eXBlIHQxIHdoaWNoIHNob3VsZCBiZSBpbnRlZ2VyLgotICAgVGhlIHRo aXJkIGFyZ3VtZW50IGFuZCB0aGUgcmVzdWx0IGFyZSBvZiB0eXBlIHQyLCBzdWNoIHRoYXQg dDIgaXMgYXQgbGVhc3QKLSAgIHR3aWNlIHRoZSBzaXplIG9mIHQxLiAgTGlrZSBET1RfUFJP RF9FWFBSLCBTQURfRVhQUiAoYXJnMSxhcmcyLGFyZzMpIGlzCisgICBUaGUgZmlyc3QgdHdv IGFyZ3VtZW50cyBhcmUgb2YgdHlwZSB0MSB3aGljaCBzaG91bGQgYmUgYSB2ZWN0b3Igb2Yg aW50ZWdlcnMuCisgICBUaGUgdGhpcmQgYXJndW1lbnQgYW5kIHRoZSByZXN1bHQgYXJlIG9m IHR5cGUgdDIsIHN1Y2ggdGhhdCB0aGUgc2l6ZSBvZgorICAgdGhlIGVsZW1lbnRzIG9mIHQy IGlzIGF0IGxlYXN0IHR3aWNlIHRoZSBzaXplIG9mIHRoZSBlbGVtZW50cyBvZiB0MS4KKyAg IExpa2UgRE9UX1BST0RfRVhQUiwgU0FEX0VYUFIgKGFyZzEsYXJnMixhcmczKSBpcwogICAg ZXF1aXZhbGVudCB0bzoKLSAgICAgICB0bXAgPSBXSURFTl9NSU5VU19FWFBSIChhcmcxLCBh cmcyKQorICAgICAgIHRtcCA9IElGTl9WRUNfV0lERU5fTUlOVVNfRVhQUiAoYXJnMSwgYXJn MikKICAgICAgICB0bXAyID0gQUJTX0VYUFIgKHRtcCkKICAgICAgICBhcmczID0gUExVU19F WFBSICh0bXAyLCBhcmczKQogICBvcjoKLSAgICAgICB0bXAgPSBXSURFTl9NSU5VU19FWFBS IChhcmcxLCBhcmcyKQorICAgICAgIHRtcCA9IElGTl9WRUNfV0lERU5fTUlOVVNfRVhQUiAo YXJnMSwgYXJnMikKICAgICAgICB0bXAyID0gQUJTX0VYUFIgKHRtcCkKICAgICAgICBhcmcz ID0gV0lERU5fU1VNX0VYUFIgKHRtcDIsIGFyZzMpCiAgKi8KQEAgLTE0MjEsOCArMTQyMiw2 IEBAIERFRlRSRUVDT0RFIChXSURFTl9NVUxUX01JTlVTX0VYUFIsICJ3aWRlbl9tdWx0X21p bnVzX2V4cHIiLCB0Y2NfZXhwcmVzc2lvbiwgMykKICAgIHRoZSBmaXJzdCBhcmd1bWVudCBm cm9tIHR5cGUgdDEgdG8gdHlwZSB0MiwgYW5kIHRoZW4gc2hpZnRpbmcgaXQKICAgIGJ5IHRo ZSBzZWNvbmQgYXJndW1lbnQuICAqLwogREVGVFJFRUNPREUgKFdJREVOX0xTSElGVF9FWFBS LCAid2lkZW5fbHNoaWZ0X2V4cHIiLCB0Y2NfYmluYXJ5LCAyKQotREVGVFJFRUNPREUgKFdJ REVOX1BMVVNfRVhQUiwgIndpZGVuX3BsdXNfZXhwciIsIHRjY19iaW5hcnksIDIpCi1ERUZU UkVFQ09ERSAoV0lERU5fTUlOVVNfRVhQUiwgIndpZGVuX21pbnVzX2V4cHIiLCB0Y2NfYmlu YXJ5LCAyKQogCiAvKiBXaWRlbmluZyB2ZWN0b3IgbXVsdGlwbGljYXRpb24uCiAgICBUaGUg dHdvIG9wZXJhbmRzIGFyZSB2ZWN0b3JzIHdpdGggTiBlbGVtZW50cyBvZiBzaXplIFMuIE11 bHRpcGx5aW5nIHRoZQpAQCAtMTQ4NywxMCArMTQ4Niw2IEBAIERFRlRSRUVDT0RFIChWRUNf UEFDS19GTE9BVF9FWFBSLCAidmVjX3BhY2tfZmxvYXRfZXhwciIsIHRjY19iaW5hcnksIDIp CiAgKi8KIERFRlRSRUVDT0RFIChWRUNfV0lERU5fTFNISUZUX0hJX0VYUFIsICJ3aWRlbl9s c2hpZnRfaGlfZXhwciIsIHRjY19iaW5hcnksIDIpCiBERUZUUkVFQ09ERSAoVkVDX1dJREVO X0xTSElGVF9MT19FWFBSLCAid2lkZW5fbHNoaWZ0X2xvX2V4cHIiLCB0Y2NfYmluYXJ5LCAy KQotREVGVFJFRUNPREUgKFZFQ19XSURFTl9QTFVTX0hJX0VYUFIsICJ3aWRlbl9wbHVzX2hp X2V4cHIiLCB0Y2NfYmluYXJ5LCAyKQotREVGVFJFRUNPREUgKFZFQ19XSURFTl9QTFVTX0xP X0VYUFIsICJ3aWRlbl9wbHVzX2xvX2V4cHIiLCB0Y2NfYmluYXJ5LCAyKQotREVGVFJFRUNP REUgKFZFQ19XSURFTl9NSU5VU19ISV9FWFBSLCAid2lkZW5fbWludXNfaGlfZXhwciIsIHRj Y19iaW5hcnksIDIpCi1ERUZUUkVFQ09ERSAoVkVDX1dJREVOX01JTlVTX0xPX0VYUFIsICJ3 aWRlbl9taW51c19sb19leHByIiwgdGNjX2JpbmFyeSwgMikKIAogLyogUFJFRElDVF9FWFBS LiAgU3BlY2lmeSBoaW50IGZvciBicmFuY2ggcHJlZGljdGlvbi4gIFRoZQogICAgUFJFRElD VF9FWFBSX1BSRURJQ1RPUiBzcGVjaWZ5IHByZWRpY3RvciBhbmQgUFJFRElDVF9FWFBSX09V VENPTUUgdGhlCg== --------------0DqhWVXXPvMN5YVzFFAaipI6--