From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 9E6694EE5C for ; Thu, 19 Feb 2026 01:02:14 +0000 (UTC) Authentication-Results: ffbox; dkim=fail (body hash mismatch (got b'DhBHTzSGByIV+ErAjDbxfx9lrcTKq0gL+BtNSL5m5kc=', expected b'jUmNf5oZKIwabrVtRdFgEd52Y7oH8u9ScdJTBwqC8Ec=')) header.d=ffmpeg.org header.i=@ffmpeg.org header.a=rsa-sha256 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1771462905; h=content-type : mime-version : to : date : message-id : reply-to : subject : list-id : list-archive : list-archive : list-help : list-owner : list-post : list-subscribe : list-unsubscribe : from : cc : content-transfer-encoding : from; bh=DhBHTzSGByIV+ErAjDbxfx9lrcTKq0gL+BtNSL5m5kc=; b=BEjM73oqfLYROUakre/rhyhq1BQpD/kPVX2+ObcNt15YEPriPdU55uQ3sjPhpQCX3AzXZ gN0A0kebrSaa32LCSqE2QN6O49tZCZN7DWSfpyWW7nm+KGiiWHDiXtHMbPOAFAHFxel7SQl trFF0S60sBlY2dPhbSnIVTtAP3uBwkjSLD+YQpP4BhduiXW79PUrPsu47Mk5taWuX2aEEul zECkIRIUBK3EaDDx5CyOjnMg5T4229H+mRVP6rZ7NdNg0zMblS2VFuEfeUCSirU7uGuvgPo D2A16tyV5ZIKn5dBvEQq82HYAP8w76iQs7eT6Rg0S7palQXsKU3SH2w0HF4Q== Received: from [172.18.0.3] (unknown [172.18.0.3]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 6868A69127C; Thu, 19 Feb 2026 03:01:45 +0200 (EET) ARC-Seal: i=1; cv=none; a=rsa-sha256; d=ffmpeg.org; s=arc; t=1771462885; b=ELgZJbyhH6F6dSgk2dahxBwobVk6CVw9la2AtsTis4egcQSUXX/WttfB1SpmC+adj7r/d 2KLc8QOo7iKO9ObIJCWxHnI/Jwx9KiGHIbrrpW6rxVVJhrfwltnEiiDKHxhgskVyjwQLsMl vkBVpDCTqeVikYk+vkGslL4R2oQjiA0FjXf+A1nLJGS/9p2EjPmE3+6LowUztlB0A8KmYwd mxzuloA6AYdH6s6K6IxTvln4AY3yAO8jqftKxi9gjMurDHZ9FUELC0xrZrZjZ1lvYobpQ81 9xM7lYuxjv6PsdIa2fwsw3vOi1D0YagblY29kWjrkEFSupjQ29xmqInw4iwA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=ffmpeg.org; s=arc; t=1771462885; h=from : sender : reply-to : subject : date : message-id : to : cc : mime-version : content-type : content-transfer-encoding : content-id : content-description : resent-date : resent-from : resent-sender : resent-to : resent-cc : resent-message-id : in-reply-to : references : list-id : list-help : list-unsubscribe : list-subscribe : list-post : list-owner : list-archive; bh=DhBHTzSGByIV+ErAjDbxfx9lrcTKq0gL+BtNSL5m5kc=; b=EFmCY/OGsef0k+kWFDrg7xzqEf+2aV/B+6xMCIftzYDNFLkwitpQjOmI+AQUg55n/9dS/ 8vT02e+EqiUY39zJZ7qqTXE8nWHVroqHSLM6e7fm+lZdbsAfrYE/0/pOsvQfSf0YGcAYfvL TgiBvMdCOrVn8ASSBanBYCqFasb8HtChnR4AqgZW84aTr+C426bHgoOQDk/mPIZ0eo+KfQD q9kyHvLXh0afVlgJ5Vb6KXM1bqTEfpdrkUe7yIyiWU22l/omG9PfgbMQxrjC3PbebyCr+sG 3ahw9+5ofucU/jBOOqwqen5IX/W7TGcar5f2kdgz3iTsUrpcGljxliXua33w== ARC-Authentication-Results: i=1; ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none; dmarc=pass header.from=ffmpeg.org policy.dmarc=quarantine Authentication-Results: ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none (Message is not ARC signed); dmarc=pass (Used From Domain Record) header.from=ffmpeg.org policy.dmarc=quarantine DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1771462877; h=content-type : mime-version : content-transfer-encoding : from : to : reply-to : subject : date : from; bh=jUmNf5oZKIwabrVtRdFgEd52Y7oH8u9ScdJTBwqC8Ec=; b=d6xZpgfzNbPaT5jr+zFe9gkIwgrNycqmXkVusv8MBxI8CLzVsGQqOeX9FBPGsYt2BSlhO i8vcSxJTKM8Us57beekb6dAk0ctUyZ5rol03KDfJI4wcbfxlXdJtY5omViFeTefJSKYnbRb HGLjWBMTIcVBaNOjwoyAsk4lZPlCFqa9BSNPTweYU3nkh5XGVS0nQbCuEceF//jrfu3Ziwz uga+PMeRSoCJ9eUQTipowKEEmIJaM4Ik388X5SDLPqABknObtYCTBGWxFhdjottgLRrv5lg 5EQI5m9KLi4fh/LoD5JJHue77Itw3y6hfwIYS7uHOGvf0LfFw+ffeh1BiZ2Q== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 To: ffmpeg-devel@ffmpeg.org Date: Thu, 19 Feb 2026 01:01:17 -0000 Message-ID: <177146287775.25.119570817854103840@29965ddac10e> Message-ID-Hash: UOHSLNT34LDV5RXMZT4I2YAPRJRQ3RCM X-Message-ID-Hash: UOHSLNT34LDV5RXMZT4I2YAPRJRQ3RCM X-MailFrom: code@ffmpeg.org X-Mailman-Rule-Hits: nonmember-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-ffmpeg-devel.ffmpeg.org-0; header-match-ffmpeg-devel.ffmpeg.org-1; header-match-ffmpeg-devel.ffmpeg.org-2; header-match-ffmpeg-devel.ffmpeg.org-3; emergency; member-moderation X-Mailman-Version: 3.3.10 Precedence: list Reply-To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PR] avcodec/cbs: add support for LCEVC bitstreams (PR #21789) List-Id: FFmpeg development discussions and patches Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: James Almer via ffmpeg-devel Cc: James Almer Content-Transfer-Encoding: base64 Archived-At: List-Archive: List-Post: UFIgIzIxNzg5IG9wZW5lZCBieSBKYW1lcyBBbG1lciAoamFtcmlhbCkKVVJMOiBodHRwczovL2Nv ZGUuZmZtcGVnLm9yZy9GRm1wZWcvRkZtcGVnL3B1bGxzLzIxNzg5ClBhdGNoIFVSTDogaHR0cHM6 Ly9jb2RlLmZmbXBlZy5vcmcvRkZtcGVnL0ZGbXBlZy9wdWxscy8yMTc4OS5wYXRjaAoKCkZyb20g NDY0ZTlhNTA1ZTBiNTU4NjJmNzNmYzQ5OWM3NDI1MzBjZTIxMDNkOSBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogSmFtZXMgQWxtZXIgPGphbXJpYWxAZ21haWwuY29tPgpEYXRlOiBNb24s IDE2IEZlYiAyMDI2IDExOjU4OjQ2IC0wMzAwClN1YmplY3Q6IFtQQVRDSCAxLzNdIGF2Y29kZWMv YnNmL2V4dHJhY3RfZXh0cmFkYXRhOiBhZGQgc3VwcG9ydCBmb3IgTENFVkMKClNpZ25lZC1vZmYt Ynk6IEphbWVzIEFsbWVyIDxqYW1yaWFsQGdtYWlsLmNvbT4KLS0tCiBsaWJhdmNvZGVjL2JzZi9l eHRyYWN0X2V4dHJhZGF0YS5jIHwgMTIgKysrKysKIGxpYmF2Y29kZWMvbGNldmMuaCAgICAgICAg ICAgICAgICAgfCA4NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hh bmdlZCwgOTYgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2Y29kZWMvbGNl dmMuaAoKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvYnNmL2V4dHJhY3RfZXh0cmFkYXRhLmMgYi9s aWJhdmNvZGVjL2JzZi9leHRyYWN0X2V4dHJhZGF0YS5jCmluZGV4IDQzZjRkNjI4NTUuLmQwMDVh NTc3NjkgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvYnNmL2V4dHJhY3RfZXh0cmFkYXRhLmMKKysr IGIvbGliYXZjb2RlYy9ic2YvZXh0cmFjdF9leHRyYWRhdGEuYwpAQCAtMjksNiArMjksNyBAQAog I2luY2x1ZGUgImJ5dGVzdHJlYW0uaCIKICNpbmNsdWRlICJoMjY0NV9wYXJzZS5oIgogI2luY2x1 ZGUgImgyNjQuaCIKKyNpbmNsdWRlICJsY2V2Yy5oIgogI2luY2x1ZGUgInN0YXJ0Y29kZS5oIgog I2luY2x1ZGUgInZjMV9jb21tb24uaCIKICNpbmNsdWRlICJ2dmMuaCIKQEAgLTE2Nyw2ICsxNjgs OSBAQCBzdGF0aWMgaW50IGV4dHJhY3RfZXh0cmFkYXRhX2gyNjQ1KEFWQlNGQ29udGV4dCAqY3R4 LCBBVlBhY2tldCAqcGt0LAogICAgIHN0YXRpYyBjb25zdCBpbnQgZXh0cmFkYXRhX25hbF90eXBl c192dmNbXSA9IHsKICAgICAgICAgVlZDX1ZQU19OVVQsIFZWQ19TUFNfTlVULCBWVkNfUFBTX05V VCwKICAgICB9OworICAgIHN0YXRpYyBjb25zdCBpbnQgZXh0cmFkYXRhX25hbF90eXBlc19sY2V2 Y1tdID0geworICAgICAgICBMQ0VWQ19JRFJfTlVULCBMQ0VWQ19OT05fSURSX05VVCwKKyAgICB9 OwogICAgIHN0YXRpYyBjb25zdCBpbnQgZXh0cmFkYXRhX25hbF90eXBlc19oZXZjW10gPSB7CiAg ICAgICAgIEhFVkNfTkFMX1ZQUywgSEVWQ19OQUxfU1BTLCBIRVZDX05BTF9QUFMsCiAgICAgfTsK QEAgLTE4NCw2ICsxODgsOSBAQCBzdGF0aWMgaW50IGV4dHJhY3RfZXh0cmFkYXRhX2gyNjQ1KEFW QlNGQ29udGV4dCAqY3R4LCBBVlBhY2tldCAqcGt0LAogICAgIGlmIChjdHgtPnBhcl9pbi0+Y29k ZWNfaWQgPT0gQVZfQ09ERUNfSURfVlZDKSB7CiAgICAgICAgIGV4dHJhZGF0YV9uYWxfdHlwZXMg ICAgPSBleHRyYWRhdGFfbmFsX3R5cGVzX3Z2YzsKICAgICAgICAgbmJfZXh0cmFkYXRhX25hbF90 eXBlcyA9IEZGX0FSUkFZX0VMRU1TKGV4dHJhZGF0YV9uYWxfdHlwZXNfdnZjKTsKKyAgICB9IGVs c2UgaWYgKGN0eC0+cGFyX2luLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9MQ0VWQykgeworICAg ICAgICBleHRyYWRhdGFfbmFsX3R5cGVzICAgID0gZXh0cmFkYXRhX25hbF90eXBlc19sY2V2YzsK KyAgICAgICAgbmJfZXh0cmFkYXRhX25hbF90eXBlcyA9IEZGX0FSUkFZX0VMRU1TKGV4dHJhZGF0 YV9uYWxfdHlwZXNfbGNldmMpOwogICAgIH0gZWxzZSBpZiAoY3R4LT5wYXJfaW4tPmNvZGVjX2lk ID09IEFWX0NPREVDX0lEX0hFVkMpIHsKICAgICAgICAgZXh0cmFkYXRhX25hbF90eXBlcyAgICA9 IGV4dHJhZGF0YV9uYWxfdHlwZXNfaGV2YzsKICAgICAgICAgbmJfZXh0cmFkYXRhX25hbF90eXBl cyA9IEZGX0FSUkFZX0VMRU1TKGV4dHJhZGF0YV9uYWxfdHlwZXNfaGV2Yyk7CkBAIC0yMDcsNiAr MjE0LDggQEAgc3RhdGljIGludCBleHRyYWN0X2V4dHJhZGF0YV9oMjY0NShBVkJTRkNvbnRleHQg KmN0eCwgQVZQYWNrZXQgKnBrdCwKICAgICAgICAgICAgIH0gZWxzZSBpZiAoY3R4LT5wYXJfaW4t PmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0hFVkMpIHsKICAgICAgICAgICAgICAgICBpZiAobmFs LT50eXBlID09IEhFVkNfTkFMX1NQUykgaGFzX3NwcyA9IDE7CiAgICAgICAgICAgICAgICAgaWYg KG5hbC0+dHlwZSA9PSBIRVZDX05BTF9WUFMpIGhhc192cHMgPSAxOworICAgICAgICAgICAgfSBl bHNlIGlmIChjdHgtPnBhcl9pbi0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTENFVkMpIHsKKyAg ICAgICAgICAgICAgICBoYXNfc3BzID0gMTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg ICAgICAgICAgaWYgKG5hbC0+dHlwZSA9PSBIMjY0X05BTF9TUFMpIGhhc19zcHMgPSAxOwogICAg ICAgICAgICAgfQpAQCAtMjE3LDYgKzIyNiw3IEBAIHN0YXRpYyBpbnQgZXh0cmFjdF9leHRyYWRh dGFfaDI2NDUoQVZCU0ZDb250ZXh0ICpjdHgsIEFWUGFja2V0ICpwa3QsCiAKICAgICBpZiAoZXh0 cmFkYXRhX3NpemUgJiYKICAgICAgICAgKChjdHgtPnBhcl9pbi0+Y29kZWNfaWQgPT0gQVZfQ09E RUNfSURfVlZDICAmJiBoYXNfc3BzKSB8fAorICAgICAgICAgKGN0eC0+cGFyX2luLT5jb2RlY19p ZCA9PSBBVl9DT0RFQ19JRF9MQ0VWQyAmJiBoYXNfc3BzKSB8fAogICAgICAgICAgKGN0eC0+cGFy X2luLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9IRVZDICYmIGhhc19zcHMgJiYgaGFzX3Zwcykg fHwKICAgICAgICAgIChjdHgtPnBhcl9pbi0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSDI2NCAm JiBoYXNfc3BzKSkpIHsKICAgICAgICAgQVZCdWZmZXJSZWYgKmZpbHRlcmVkX2J1ZiA9IE5VTEw7 CkBAIC0zNzEsNiArMzgxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB7CiAgICAgeyBBVl9DT0RF Q19JRF9DQVZTLCAgICAgICBleHRyYWN0X2V4dHJhZGF0YV9tcGVnNCAgIH0sCiAgICAgeyBBVl9D T0RFQ19JRF9IMjY0LCAgICAgICBleHRyYWN0X2V4dHJhZGF0YV9oMjY0NSAgIH0sCiAgICAgeyBB Vl9DT0RFQ19JRF9IRVZDLCAgICAgICBleHRyYWN0X2V4dHJhZGF0YV9oMjY0NSAgIH0sCisgICAg eyBBVl9DT0RFQ19JRF9MQ0VWQywgICAgICBleHRyYWN0X2V4dHJhZGF0YV9oMjY0NSAgIH0sCiAg ICAgeyBBVl9DT0RFQ19JRF9NUEVHMVZJREVPLCBleHRyYWN0X2V4dHJhZGF0YV9tcGVnMTIgIH0s CiAgICAgeyBBVl9DT0RFQ19JRF9NUEVHMlZJREVPLCBleHRyYWN0X2V4dHJhZGF0YV9tcGVnMTIg IH0sCiAgICAgeyBBVl9DT0RFQ19JRF9NUEVHNCwgICAgICBleHRyYWN0X2V4dHJhZGF0YV9tcGVn NCAgIH0sCkBAIC00NDEsNiArNDUyLDcgQEAgc3RhdGljIGNvbnN0IGVudW0gQVZDb2RlY0lEIGNv ZGVjX2lkc1tdID0gewogICAgIEFWX0NPREVDX0lEX0NBVlMsCiAgICAgQVZfQ09ERUNfSURfSDI2 NCwKICAgICBBVl9DT0RFQ19JRF9IRVZDLAorICAgIEFWX0NPREVDX0lEX0xDRVZDLAogICAgIEFW X0NPREVDX0lEX01QRUcxVklERU8sCiAgICAgQVZfQ09ERUNfSURfTVBFRzJWSURFTywKICAgICBB Vl9DT0RFQ19JRF9NUEVHNCwKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvbGNldmMuaCBiL2xpYmF2 Y29kZWMvbGNldmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5jZmU0 YzFlNmUxCi0tLSAvZGV2L251bGwKKysrIGIvbGliYXZjb2RlYy9sY2V2Yy5oCkBAIC0wLDAgKzEs ODQgQEAKKy8qCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCisgKgorICogRkZtcGVn IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg UHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRo ZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs IEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgKi8KKworLyoqCisgKiBA ZmlsZQorICogTENFVkMgY29tbW9uIGRlZmluaXRpb25zCisgKi8KKworI2lmbmRlZiBBVkNPREVD X0xDRVZDX0gKKyNkZWZpbmUgQVZDT0RFQ19MQ0VWQ19ICisKKy8qCisgKiBUYWJsZSAxNyDigJQg TkFMIHVuaXQgdHlwZSBjb2RlcyBhbmQgTkFMIHVuaXQgdHlwZSBjbGFzc2VzIGluCisgKiBJU08v SUVDIDIzMDk0LTI6MjAyMQorICovCitlbnVtIHsKKyAgICBMQ0VWQ19VTlNQRUMwX05VVCAgPSAw LAorICAgIExDRVZDX1VOU1BFQzFfTlVUICA9IDEsCisgICAgTENFVkNfVU5TUEVDMl9OVVQgID0g MiwKKyAgICBMQ0VWQ19VTlNQRUMzX05VVCAgPSAzLAorICAgIExDRVZDX1VOU1BFQzRfTlVUICA9 IDQsCisgICAgTENFVkNfVU5TUEVDNV9OVVQgID0gNSwKKyAgICBMQ0VWQ19VTlNQRUM2X05VVCAg PSA2LAorICAgIExDRVZDX1VOU1BFQzdfTlVUICA9IDcsCisgICAgTENFVkNfVU5TUEVDOF9OVVQg ID0gOCwKKyAgICBMQ0VWQ19VTlNQRUM5X05VVCAgPSA5LAorICAgIExDRVZDX1VOU1BFQzEwX05V VCA9IDEwLAorICAgIExDRVZDX1VOU1BFQzExX05VVCA9IDExLAorICAgIExDRVZDX1VOU1BFQzEy X05VVCA9IDEyLAorICAgIExDRVZDX1VOU1BFQzEzX05VVCA9IDEzLAorICAgIExDRVZDX1VOU1BF QzE0X05VVCA9IDE0LAorICAgIExDRVZDX1VOU1BFQzE1X05VVCA9IDE1LAorICAgIExDRVZDX1VO U1BFQzE2X05VVCA9IDE2LAorICAgIExDRVZDX1VOU1BFQzE3X05VVCA9IDE3LAorICAgIExDRVZD X1VOU1BFQzE4X05VVCA9IDE4LAorICAgIExDRVZDX1VOU1BFQzE5X05VVCA9IDE5LAorICAgIExD RVZDX1VOU1BFQzIwX05VVCA9IDIwLAorICAgIExDRVZDX1VOU1BFQzIxX05VVCA9IDIxLAorICAg IExDRVZDX1VOU1BFQzIyX05VVCA9IDIyLAorICAgIExDRVZDX1VOU1BFQzIzX05VVCA9IDIzLAor ICAgIExDRVZDX1VOU1BFQzI0X05VVCA9IDI0LAorICAgIExDRVZDX1VOU1BFQzI1X05VVCA9IDI1 LAorICAgIExDRVZDX1VOU1BFQzI2X05VVCA9IDI2LAorICAgIExDRVZDX1VOU1BFQzI3X05VVCA9 IDI3LAorICAgIExDRVZDX05PTl9JRFJfTlVUICA9IDI4LAorICAgIExDRVZDX0lEUl9OVVQgICAg ICA9IDI5LAorICAgIExDRVZDX1JTVl9OVVQgICAgICA9IDMwLAorICAgIExDRVZDX1VOU1BFQzMx X05VVCA9IDMxLAorfTsKKworLyoKKyAqIFRhYmxlIDE5IOKAlCBDb250ZW50IG9mIHBheWxvYWQK KyAqLworZW51bSB7CisgICAgTENFVkNfUEFZTE9BRF9UWVBFX1NFUVVFTkNFX0NPTkZJRyAgICA9 IDAsCisgICAgTENFVkNfUEFZTE9BRF9UWVBFX0dMT0JBTF9DT05GSUcgICAgICA9IDEsCisgICAg TENFVkNfUEFZTE9BRF9UWVBFX1BJQ1RVUkVfQ09ORklHICAgICA9IDIsCisgICAgTENFVkNfUEFZ TE9BRF9UWVBFX0VOQ09ERURfREFUQSAgICAgICA9IDMsCisgICAgTENFVkNfUEFZTE9BRF9UWVBF X0VOQ09ERURfREFUQV9USUxFRCA9IDQsCisgICAgTENFVkNfUEFZTE9BRF9UWVBFX0FERElUSU9O QUxfSU5GTyAgICA9IDUsCisgICAgTENFVkNfUEFZTE9BRF9UWVBFX0ZJTExFUiAgICAgICAgICAg ICA9IDYsCit9OworCitlbnVtIHsKKyAgICBMQ0VWQ19BRERJVElPTkFMX0lORk9fVFlQRV9TRUkg ICAgICAgID0gMCwKKyAgICBMQ0VWQ19BRERJVElPTkFMX0lORk9fVFlQRV9WVUkgICAgICAgID0g MSwKK307CisKKyNlbmRpZiAvKiBBVkNPREVDX0xDRVZDX0ggKi8KLS0gCjIuNTIuMAoKCkZyb20g NTYwM2NkNjc4ZjkxZjhhYTY2YjcxODdiYjNkMjczODc2MWQ4M2ExZSBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogSmFtZXMgQWxtZXIgPGphbXJpYWxAZ21haWwuY29tPgpEYXRlOiBNb24s IDE2IEZlYiAyMDI2IDExOjU5OjE1IC0wMzAwClN1YmplY3Q6IFtQQVRDSCAyLzNdIGF2Y29kZWMv aDI2NDVfcGFyc2U6IGFkZCBzdXBwb3J0IGZvciBMQ0VWQwoKU2lnbmVkLW9mZi1ieTogSmFtZXMg QWxtZXIgPGphbXJpYWxAZ21haWwuY29tPgotLS0KIGxpYmF2Y29kZWMvaDI2NDVfcGFyc2UuYyB8 IDYzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFu Z2VkLCA2MyBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9oMjY0NV9wYXJz ZS5jIGIvbGliYXZjb2RlYy9oMjY0NV9wYXJzZS5jCmluZGV4IGZhNTc5MTFjMDguLjQ0OGY0MjRi MjYgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvaDI2NDVfcGFyc2UuYworKysgYi9saWJhdmNvZGVj L2gyNjQ1X3BhcnNlLmMKQEAgLTE0OSw2ICsxNDksNDcgQEAgbnNjOgogICAgIHJldHVybiBzaTsK IH0KIAorc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IGxjZXZjX25hbF90eXBlX25hbWVbMzJdID0g eworICAgICJVTlNQRUMwICIsIC8vIFVOU1BFQzAKKyAgICAiVU5TUEVDMSAiLCAvLyBVTlNQRUMx CisgICAgIlVOU1BFQzIgIiwgLy8gVU5TUEVDMgorICAgICJVTlNQRUMzICIsIC8vIFVOU1BFQzMK KyAgICAiVU5TUEVDNCAiLCAvLyBVTlNQRUM0CisgICAgIlVOU1BFQzUgIiwgLy8gVU5TUEVDNQor ICAgICJVTlNQRUM2ICIsIC8vIFVOU1BFQzYKKyAgICAiVU5TUEVDNyAiLCAvLyBVTlNQRUM3Cisg ICAgIlVOU1BFQzggIiwgLy8gVU5TUEVDOAorICAgICJVTlNQRUM5ICIsIC8vIFVOU1BFQzkKKyAg ICAiVU5TUEVDMTAiLCAvLyBVTlNQRUMxMAorICAgICJVTlNQRUMxMSIsIC8vIFVOU1BFQzExCisg ICAgIlVOU1BFQzEyIiwgLy8gVU5TUEVDMTIKKyAgICAiVU5TUEVDMTMiLCAvLyBVTlNQRUMxMwor ICAgICJVTlNQRUMxNCIsIC8vIFVOU1BFQzE0CisgICAgIlVOU1BFQzE1IiwgLy8gVU5TUEVDMTUK KyAgICAiVU5TUEVDMTYiLCAvLyBVTlNQRUMxNgorICAgICJVTlNQRUMxNyIsIC8vIFVOU1BFQzE3 CisgICAgIlVOU1BFQzE4IiwgLy8gVU5TUEVDMTgKKyAgICAiVU5TUEVDMTkiLCAvLyBVTlNQRUMx OQorICAgICJVTlNQRUMyMCIsIC8vIFVOU1BFQzIwCisgICAgIlVOU1BFQzIxIiwgLy8gVU5TUEVD MjEKKyAgICAiVU5TUEVDMjIiLCAvLyBVTlNQRUMyMgorICAgICJVTlNQRUMyMyIsIC8vIFVOU1BF QzIzCisgICAgIlVOU1BFQzI0IiwgLy8gVU5TUEVDMjQKKyAgICAiVU5TUEVDMjUiLCAvLyBVTlNQ RUMyNQorICAgICJVTlNQRUMyNiIsIC8vIFVOU1BFQzI2CisgICAgIlVOU1BFQzI3IiwgLy8gVU5T UEVDMjcKKyAgICAiTENFVkNfTk9OX0lEUiIsIC8vTENFVkNfTk9OX0lEUgorICAgICJMQ0VWQ19J RFIiLCAvLyBMQ0VWQ19JRFIKKyAgICAiTENFVkNfUlNWIiwgLy8gTENFVkNfUlNWCisgICAgIlVO U1BFQzMxIiwgLy8gVU5TUEVDMzEKK307CisKK3N0YXRpYyBjb25zdCBjaGFyICpsY2V2Y19uYWxf dW5pdF9uYW1lKGludCBuYWxfdHlwZSkKK3sKKyAgICBhdl9hc3NlcnQwKG5hbF90eXBlID49IDAg JiYgbmFsX3R5cGUgPCAzMik7CisgICAgcmV0dXJuIGxjZXZjX25hbF90eXBlX25hbWVbbmFsX3R5 cGVdOworfQorCiBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgdnZjX25hbF90eXBlX25hbWVbMzJd ID0gewogICAgICJUUkFJTF9OVVQiLCAvLyBWVkNfVFJBSUxfTlVUCiAgICAgIlNUU0FfTlVUIiwg Ly8gVlZDX1NUU0FfTlVUCkBAIC0zMzgsNiArMzc5LDI2IEBAIHN0YXRpYyBpbnQgZ2V0X2JpdF9s ZW5ndGgoSDI2NDVOQUwgKm5hbCwgaW50IG1pbl9zaXplLCBpbnQgc2tpcF90cmFpbGluZ196ZXJv cykKICAqIEByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQSBpZiB0aGUgcGFja2V0IGlzIG5vdCBh IHZhbGlkIE5BTCB1bml0LAogICogMCBvdGhlcndpc2UKICAqLworCitzdGF0aWMgaW50IGxjZXZj X3BhcnNlX25hbF9oZWFkZXIoSDI2NDVOQUwgKm5hbCwgdm9pZCAqbG9nY3R4KQoreworICAgIEdl dEJpdENvbnRleHQgKmdiID0gJm5hbC0+Z2I7CisKKyAgICBpZiAoZ2V0X2JpdHMxKGdiKSAhPSAw KSAgICAgLy9mb3JiaWRkZW5femVyb19iaXQKKyAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJ RERBVEE7CisKKyAgICBpZiAoZ2V0X2JpdHMxKGdiKSAhPSAxKSAgICAgLy9mb3JiaWRkZW5fb25l X2JpdAorICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKworICAgIG5hbC0+dHlw ZSA9IGdldF9iaXRzKGdiLCA1KTsKKworICAgIGF2X2xvZyhsb2djdHgsIEFWX0xPR19ERUJVRywK KyAgICAgICAgICAgIm5hbF91bml0X3R5cGU6ICVkKCVzKVxuIiwKKyAgICAgICAgICAgbmFsLT50 eXBlLCBsY2V2Y19uYWxfdW5pdF9uYW1lKG5hbC0+dHlwZSkpOworCisgICAgcmV0dXJuIDA7Cit9 CisKIHN0YXRpYyBpbnQgdnZjX3BhcnNlX25hbF9oZWFkZXIoSDI2NDVOQUwgKm5hbCwgdm9pZCAq bG9nY3R4KQogewogICAgIEdldEJpdENvbnRleHQgKmdiID0gJm5hbC0+Z2I7CkBAIC01ODIsNiAr NjQzLDggQEAgaW50IGZmX2gyNjQ1X3BhY2tldF9zcGxpdChIMjY0NVBhY2tldCAqcGt0LCBjb25z dCB1aW50OF90ICpidWYsIGludCBsZW5ndGgsCiAKICAgICAgICAgaWYgKGNvZGVjX2lkID09IEFW X0NPREVDX0lEX1ZWQykKICAgICAgICAgICAgIHJldCA9IHZ2Y19wYXJzZV9uYWxfaGVhZGVyKG5h bCwgbG9nY3R4KTsKKyAgICAgICAgZWxzZSBpZiAoY29kZWNfaWQgPT0gQVZfQ09ERUNfSURfTENF VkMpCisgICAgICAgICAgICByZXQgPSBsY2V2Y19wYXJzZV9uYWxfaGVhZGVyKG5hbCwgbG9nY3R4 KTsKICAgICAgICAgZWxzZSBpZiAoY29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVWQykgewogICAg ICAgICAgICAgcmV0ID0gaGV2Y19wYXJzZV9uYWxfaGVhZGVyKG5hbCwgbG9nY3R4KTsKICAgICAg ICAgICAgIGlmIChuYWwtPm51aF9sYXllcl9pZCA9PSA2MykKLS0gCjIuNTIuMAoKCkZyb20gZjhh ZjM0ODgwNDcwZGJkYWQ4ZjUyNjM2YjVmY2NiNTNkMGE1ZGU4YiBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogSmFtZXMgQWxtZXIgPGphbXJpYWxAZ21haWwuY29tPgpEYXRlOiBXZWQsIDE4 IEZlYiAyMDI2IDIxOjE1OjE3IC0wMzAwClN1YmplY3Q6IFtQQVRDSCAzLzNdIGF2Y29kZWMvY2Jz OiBhZGQgc3VwcG9ydCBmb3IgTENFVkMgYml0c3RyZWFtcwoKQXMgZGVmaW5lZCBvbiBJU08vSUVD IDIzMDk0LTI6MjAyMS9GREFNIDE6MjAyMwoKU2lnbmVkLW9mZi1ieTogSmFtZXMgQWxtZXIgPGph bXJpYWxAZ21haWwuY29tPgotLS0KIGNvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAyICsKIGxpYmF2Y29kZWMvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgIHwgICAx ICsKIGxpYmF2Y29kZWMvY2JzLmMgICAgICAgICAgICAgICAgICAgICAgIHwgICA2ICsKIGxpYmF2 Y29kZWMvY2JzX2gyNjQ1LmMgICAgICAgICAgICAgICAgIHwgMzMzICsrKysrKysrKysrKysrKwog bGliYXZjb2RlYy9jYnNfaW50ZXJuYWwuaCAgICAgICAgICAgICAgfCAgIDQgKwogbGliYXZjb2Rl Yy9jYnNfbGNldmMuYyAgICAgICAgICAgICAgICAgfCAxMTIgKysrKysKIGxpYmF2Y29kZWMvY2Jz X2xjZXZjLmggICAgICAgICAgICAgICAgIHwgMjYzICsrKysrKysrKysrKwogbGliYXZjb2RlYy9j YnNfbGNldmNfc3ludGF4X3RlbXBsYXRlLmMgfCA1NjkgKysrKysrKysrKysrKysrKysrKysrKysr KwogbGliYXZmb3JtYXQvY2JzLmggICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogOSBmaWxl cyBjaGFuZ2VkLCAxMjkxIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmNv ZGVjL2Nic19sY2V2Yy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9jYnNfbGNldmMu aAogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2Y29kZWMvY2JzX2xjZXZjX3N5bnRheF90ZW1wbGF0 ZS5jCgpkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCmluZGV4IGRhOTNhYWY2NjEu LmU5NTk0NDQ0NDkgMTAwNzU1Ci0tLSBhL2NvbmZpZ3VyZQorKysgYi9jb25maWd1cmUKQEAgLTI2 OTMsNiArMjY5Myw3IEBAIENPTkZJR19FWFRSQT0iCiAgICAgY2JzX2gyNjUKICAgICBjYnNfaDI2 NgogICAgIGNic19qcGVnCisgICAgY2JzX2xjZXZjCiAgICAgY2JzX21wZWcyCiAgICAgY2JzX3Zw OAogICAgIGNic192cDkKQEAgLTMwMDUsNiArMzAwNiw3IEBAIGNic19oMjY0X3NlbGVjdD0iY2Jz IgogY2JzX2gyNjVfc2VsZWN0PSJjYnMiCiBjYnNfaDI2Nl9zZWxlY3Q9ImNicyIKIGNic19qcGVn X3NlbGVjdD0iY2JzIgorY2JzX2xjZXZjX3NlbGVjdD0iY2JzIgogY2JzX21wZWcyX3NlbGVjdD0i Y2JzIgogY2JzX3ZwOF9zZWxlY3Q9ImNicyIKIGNic192cDlfc2VsZWN0PSJjYnMiCmRpZmYgLS1n aXQgYS9saWJhdmNvZGVjL01ha2VmaWxlIGIvbGliYXZjb2RlYy9NYWtlZmlsZQppbmRleCAzZDYw MzQ3YTE5Li40YzEwNDc1N2QxIDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL01ha2VmaWxlCisrKyBi L2xpYmF2Y29kZWMvTWFrZWZpbGUKQEAgLTkxLDYgKzkxLDcgQEAgT0JKUy0kKENPTkZJR19DQlNf QVYxKSAgICAgICAgICAgICAgICAgKz0gY2JzX2F2MS5vCiBPQkpTLSQoQ09ORklHX0NCU19IMjY0 KSAgICAgICAgICAgICAgICArPSBjYnNfaDI2NDUubyBjYnNfc2VpLm8gaDI2NDVfcGFyc2Uubwog T0JKUy0kKENPTkZJR19DQlNfSDI2NSkgICAgICAgICAgICAgICAgKz0gY2JzX2gyNjQ1Lm8gY2Jz X3NlaS5vIGgyNjQ1X3BhcnNlLm8KIE9CSlMtJChDT05GSUdfQ0JTX0gyNjYpICAgICAgICAgICAg ICAgICs9IGNic19oMjY0NS5vIGNic19zZWkubyBoMjY0NV9wYXJzZS5vCitPQkpTLSQoQ09ORklH X0NCU19MQ0VWQykgICAgICAgICAgICAgICArPSBjYnNfaDI2NDUubyBjYnNfc2VpLm8gaDI2NDVf cGFyc2UubyBjYnNfbGNldmMubwogT0JKUy0kKENPTkZJR19DQlNfSlBFRykgICAgICAgICAgICAg ICAgKz0gY2JzX2pwZWcubwogT0JKUy0kKENPTkZJR19DQlNfTVBFRzIpICAgICAgICAgICAgICAg Kz0gY2JzX21wZWcyLm8KIE9CSlMtJChDT05GSUdfQ0JTX1ZQOCkgICAgICAgICAgICAgICAgICs9 IGNic192cDgubyB2cDhkYXRhLm8KZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvY2JzLmMgYi9saWJh dmNvZGVjL2Nicy5jCmluZGV4IDQxYzgxODQ0MzQuLmIwNDViNzNiNjggMTAwNjQ0Ci0tLSBhL2xp YmF2Y29kZWMvY2JzLmMKKysrIGIvbGliYXZjb2RlYy9jYnMuYwpAQCAtNDYsNiArNDYsOSBAQCBz dGF0aWMgY29uc3QgQ29kZWRCaXRzdHJlYW1UeXBlICpjb25zdCBjYnNfdHlwZV90YWJsZVtdID0g ewogI2lmIENCU19IMjY2CiAgICAgJkNCU19GVU5DKHR5cGVfaDI2NiksCiAjZW5kaWYKKyNpZiBD QlNfTENFVkMKKyAgICAmQ0JTX0ZVTkModHlwZV9sY2V2YyksCisjZW5kaWYKICNpZiBDQlNfSlBF RwogICAgICZDQlNfRlVOQyh0eXBlX2pwZWcpLAogI2VuZGlmCkBAIC03Niw2ICs3OSw5IEBAIGNv bnN0IGVudW0gQVZDb2RlY0lEIENCU19GVU5DKGFsbF9jb2RlY19pZHMpW10gPSB7CiAjaWYgQ0JT X0gyNjYKICAgICBBVl9DT0RFQ19JRF9IMjY2LAogI2VuZGlmCisjaWYgQ0JTX0xDRVZDCisgICAg QVZfQ09ERUNfSURfTENFVkMsCisjZW5kaWYKICNpZiBDQlNfSlBFRwogICAgIEFWX0NPREVDX0lE X01KUEVHLAogI2VuZGlmCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2Nic19oMjY0NS5jIGIvbGli YXZjb2RlYy9jYnNfaDI2NDUuYwppbmRleCAwZGQyNTZhZGEwLi5jYzU1MzIxMWRjIDEwMDY0NAot LS0gYS9saWJhdmNvZGVjL2Nic19oMjY0NS5jCisrKyBiL2xpYmF2Y29kZWMvY2JzX2gyNjQ1LmMK QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjYnNfaDI2NC5oIgogI2luY2x1ZGUgImNic19o MjY1LmgiCiAjaW5jbHVkZSAiY2JzX2gyNjYuaCIKKyNpbmNsdWRlICJjYnNfbGNldmMuaCIKICNp bmNsdWRlICJoMjY0LmgiCiAjaW5jbHVkZSAiaDI2NDVfcGFyc2UuaCIKICNpbmNsdWRlICJsaWJh dnV0aWwvcmVmc3RydWN0LmgiCkBAIC0xMzcsNiArMTM4LDM3IEBAIHN0YXRpYyBpbnQgY2JzX3Jl YWRfc2VfZ29sb21iKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBHZXRCaXRDb250ZXh0ICpn YmMsCiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgY2JzX3JlYWRfbXVsdGlfYnl0ZShD b2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgR2V0Qml0Q29udGV4dCAqZ2JjLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIHVpbnQzMl90ICp3cml0ZV90 bykKK3sKKyAgICB1aW50NjRfdCB2YWx1ZTsKKyAgICB1aW50MzJfdCBieXRlOworICAgIGludCBp OworCisgICAgQ0JTX1RSQUNFX1JFQURfU1RBUlQoKTsKKworICAgIHZhbHVlID0gMDsKKyAgICBm b3IgKGkgPSAwOyBpIDwgMTA7IGkrKykgeworICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYmMp IDwgOCkgeworICAgICAgICAgICAgYXZfbG9nKGN0eC0+bG9nX2N0eCwgQVZfTE9HX0VSUk9SLCAi SW52YWxpZCBtdWx0aSBieXRlIGF0ICIKKyAgICAgICAgICAgICAgICAgICAiJXM6IGJpdHN0cmVh bSBlbmRlZC5cbiIsIG5hbWUpOworICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERB VEE7CisgICAgICAgIH0KKyAgICAgICAgYnl0ZSA9IGdldF9iaXRzKGdiYywgOCk7CisgICAgICAg IHZhbHVlID0gKHZhbHVlIDw8IDcpIHwgKGJ5dGUgJiAweDdmKTsKKyAgICAgICAgaWYgKCEoYnl0 ZSAmIDB4ODApKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKHZhbHVlID4g VUlOVDMyX01BWCkKKyAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisKKyAgICBD QlNfVFJBQ0VfUkVBRF9FTkRfTk9fU1VCU0NSSVBUUygpOworCisgICAgKndyaXRlX3RvID0gdmFs dWU7CisgICAgcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQgY2JzX3dyaXRlX3VlX2dvbG9tYihD b2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgUHV0Qml0Q29udGV4dCAqcGJjLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGludCAqc3Vic2Ny aXB0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB2YWx1ZSwKQEAg LTIwOSw2ICsyNDEsMzIgQEAgc3RhdGljIGludCBjYnNfd3JpdGVfc2VfZ29sb21iKENvZGVkQml0 c3RyZWFtQ29udGV4dCAqY3R4LCBQdXRCaXRDb250ZXh0ICpwYmMsCiAgICAgcmV0dXJuIDA7CiB9 CiAKK3N0YXRpYyBpbnQgY2JzX3dyaXRlX211bHRpX2J5dGUoQ29kZWRCaXRzdHJlYW1Db250ZXh0 ICpjdHgsIFB1dEJpdENvbnRleHQgKnBiYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBjaGFyICpuYW1lLCB1aW50MzJfdCB2YWx1ZSkKK3sKKyAgICBpbnQgbGVuLCBpOwor ICAgIHVpbnQ4X3QgYnl0ZTsKKworICAgIENCU19UUkFDRV9XUklURV9TVEFSVCgpOworCisgICAg bGVuID0gKGF2X2xvZzIodmFsdWUpICsgNykgLyA3OworCisgICAgZm9yIChpID0gbGVuIC0gMTsg aSA+PSAwOyBpLS0pIHsKKyAgICAgICAgaWYgKHB1dF9iaXRzX2xlZnQocGJjKSA8IDgpCisgICAg ICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9TUEMpOworCisgICAgICAgIGJ5dGUgPSB2YWx1ZSA+ PiAoNyAqIGkpICYgMHg3ZjsKKyAgICAgICAgaWYgKGkgPiAwKQorICAgICAgICAgICAgYnl0ZSB8 PSAweDgwOworCisgICAgICAgIHB1dF9iaXRzKHBiYywgOCwgYnl0ZSk7CisgICAgfQorCisgICAg Q0JTX1RSQUNFX1dSSVRFX0VORF9OT19TVUJTQ1JJUFRTKCk7CisKKyAgICByZXR1cm4gMDsKK30K KwogLy8gcGF5bG9hZF9leHRlbnNpb25fcHJlc2VudCgpIC0gdHJ1ZSBpZiB3ZSBhcmUgYmVmb3Jl IHRoZSBsYXN0IDEtYml0CiAvLyBpbiB0aGUgcGF5bG9hZCBzdHJ1Y3R1cmUsIHdoaWNoIG11c3Qg YmUgaW4gdGhlIGxhc3QgYnl0ZS4KIHN0YXRpYyBpbnQgY2JzX2gyNjVfcGF5bG9hZF9leHRlbnNp b25fcHJlc2VudChHZXRCaXRDb250ZXh0ICpnYmMsIHVpbnQzMl90IHBheWxvYWRfc2l6ZSwKQEAg LTIzNCw2ICsyOTIsNyBAQCBzdGF0aWMgaW50IGNic19oMjY1X3BheWxvYWRfZXh0ZW5zaW9uX3By ZXNlbnQoR2V0Qml0Q29udGV4dCAqZ2JjLCB1aW50MzJfdCBwYXlsbwogI2RlZmluZSBGVU5DX0gy NjQobmFtZSkgRlVOQ19OQU1FMShSRUFEV1JJVEUsIGgyNjQsIG5hbWUpCiAjZGVmaW5lIEZVTkNf SDI2NShuYW1lKSBGVU5DX05BTUUxKFJFQURXUklURSwgaDI2NSwgbmFtZSkKICNkZWZpbmUgRlVO Q19IMjY2KG5hbWUpIEZVTkNfTkFNRTEoUkVBRFdSSVRFLCBoMjY2LCBuYW1lKQorI2RlZmluZSBG VU5DX0xDRVZDKG5hbWUpIEZVTkNfTkFNRTEoUkVBRFdSSVRFLCBsY2V2YywgbmFtZSkKICNkZWZp bmUgRlVOQ19TRUkobmFtZSkgIEZVTkNfTkFNRTEoUkVBRFdSSVRFLCBzZWksICBuYW1lKQogCiAj ZGVmaW5lIFNFSV9GVU5DKG5hbWUsIGFyZ3MpIFwKQEAgLTI0Niw2ICszMDUsMTYgQEAgc3RhdGlj IGludCBGVU5DKG5hbWUgIyMgX2ludGVybmFsKShDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwg XAogfSBcCiBzdGF0aWMgaW50IEZVTkMobmFtZSkgYXJncwogCisjZGVmaW5lIExDRVZDX0JMT0NL X0ZVTkMobmFtZSwgYXJncykgXAorc3RhdGljIGludCBGVU5DKG5hbWUpIGFyZ3M7ICBcCitzdGF0 aWMgaW50IEZVTkMobmFtZSAjIyBfaW50ZXJuYWwpKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4 LCAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJXQ29udGV4dCAq cncsIHZvaWQgKmN1ciwgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIExDRVZDUHJvY2Vzc0Jsb2NrU3RhdGUgKnN0YXRlKSBcCit7IFwKKyAgICByZXR1cm4gRlVO QyhuYW1lKShjdHgsIHJ3LCBjdXIsIHN0YXRlKTsgXAorfSBcCitzdGF0aWMgaW50IEZVTkMobmFt ZSkgYXJncworCiAjZGVmaW5lIFNVQlNDUklQVFMoc3VicywgLi4uKSAoc3VicyA+IDAgPyAoKGlu dFtzdWJzICsgMV0peyBzdWJzLCBfX1ZBX0FSR1NfXyB9KSA6IE5VTEwpCiAKICNkZWZpbmUgdSh3 aWR0aCwgbmFtZSwgcmFuZ2VfbWluLCByYW5nZV9tYXgpIFwKQEAgLTI3NCw2ICszNDMsOCBAQCBz dGF0aWMgaW50IEZVTkMobmFtZSkgYXJncwogICAgICAgICB4aSh3aWR0aCwgbmFtZSwgY3VycmVu dC0+bmFtZSwgTUlOX0lOVF9CSVRTKHdpZHRoKSwgTUFYX0lOVF9CSVRTKHdpZHRoKSwgc3Vicywg X19WQV9BUkdTX18pCiAjZGVmaW5lIHNlcyhuYW1lLCByYW5nZV9taW4sIHJhbmdlX21heCwgc3Vi cywgLi4uKSBcCiAgICAgICAgIHhzZShuYW1lLCBjdXJyZW50LT5uYW1lLCByYW5nZV9taW4sIHJh bmdlX21heCwgc3VicywgX19WQV9BUkdTX18pCisjZGVmaW5lIG1iKG5hbWUpIFwKKyAgICAgICAg eG1iKG5hbWUsIGN1cnJlbnQtPm5hbWUpCiAKICNkZWZpbmUgZml4ZWQod2lkdGgsIG5hbWUsIHZh bHVlKSBkbyB7IFwKICAgICAgICAgYXZfdW51c2VkIHVpbnQzMl90IGZpeGVkX3ZhbHVlID0gdmFs dWU7IFwKQEAgLTMxOSw2ICszOTAsMTEgQEAgc3RhdGljIGludCBGVU5DKG5hbWUpIGFyZ3MKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2YWx1ZSwgcmFuZ2VfbWluLCByYW5nZV9t YXgpKTsgXAogICAgICAgICB2YXIgPSB2YWx1ZTsgXAogICAgIH0gd2hpbGUgKDApCisjZGVmaW5l IHhtYihuYW1lLCB2YXIpIGRvIHsgXAorICAgICAgICB1aW50MzJfdCB2YWx1ZTsgXAorICAgICAg ICBDSEVDSyhjYnNfcmVhZF9tdWx0aV9ieXRlKGN0eCwgcncsICNuYW1lLCAmdmFsdWUpKTsgXAor ICAgICAgICB2YXIgPSB2YWx1ZTsgXAorICAgIH0gd2hpbGUgKDApCiAKIAogI2RlZmluZSBpbmZl cihuYW1lLCB2YWx1ZSkgZG8geyBcCkBAIC0zMzcsNiArNDEzLDEwIEBAIHN0YXRpYyBpbnQgY2Jz X2gyNjQ1X3JlYWRfbW9yZV9yYnNwX2RhdGEoR2V0Qml0Q29udGV4dCAqZ2JjKQogICAgIHJldHVy biAwOwogfQogCitzdGF0aWMgaW50IGNic19oMjY0NV93cml0ZV9zbGljZV9kYXRhKENvZGVkQml0 c3RyZWFtQ29udGV4dCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQdXRCaXRDb250ZXh0ICpwYmMsIGNvbnN0IHVpbnQ4X3QgKmRhdGEsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkYXRhX3NpemUsIGludCBkYXRhX2JpdF9z dGFydCk7CisKICNkZWZpbmUgbW9yZV9yYnNwX2RhdGEodmFyKSAoKHZhcikgPSBjYnNfaDI2NDVf cmVhZF9tb3JlX3Jic3BfZGF0YShydykpCiAKICNkZWZpbmUgYml0X3Bvc2l0aW9uKHJ3KSAgIChn ZXRfYml0c19jb3VudChydykpCkBAIC0zNTUsNiArNDM1LDEwIEBAIHN0YXRpYyBpbnQgY2JzX2gy NjQ1X3JlYWRfbW9yZV9yYnNwX2RhdGEoR2V0Qml0Q29udGV4dCAqZ2JjKQogI2luY2x1ZGUgImNi c19zZWlfc3ludGF4X3RlbXBsYXRlLmMiCiAjdW5kZWYgRlVOQwogCisjZGVmaW5lIEZVTkMobmFt ZSkgRlVOQ19MQ0VWQyhuYW1lKQorI2luY2x1ZGUgImNic19sY2V2Y19zeW50YXhfdGVtcGxhdGUu YyIKKyN1bmRlZiBGVU5DCisKICN1bmRlZiBhbGxvY2F0ZQogCiAvKiBUaGUgb3RoZXIgY29kZSB1 c2VzIHRoZSByZWZzdHJ1Y3QgQVBJIGZvciB0aGUgYWxsb2NhdGlvbgpAQCAtMzg3LDExICs0NzEs MTMgQEAgc3RhdGljIGludCBjYnNfaDI2NDVfcmVhZF9tb3JlX3Jic3BfZGF0YShHZXRCaXRDb250 ZXh0ICpnYmMpCiAjdW5kZWYgeGkKICN1bmRlZiB4dWUKICN1bmRlZiB4c2UKKyN1bmRlZiB4bWIK ICN1bmRlZiBpbmZlcgogI3VuZGVmIG1vcmVfcmJzcF9kYXRhCiAjdW5kZWYgYml0X3Bvc2l0aW9u CiAjdW5kZWYgYnl0ZV9hbGlnbm1lbnQKICN1bmRlZiBhbGxvY2F0ZQorI3VuZGVmIGFsbG9jYXRl X3N0cnVjdAogCiAKICNkZWZpbmUgV1JJVEUKQEAgLTQyNyw2ICs1MTMsMTAgQEAgc3RhdGljIGlu dCBjYnNfaDI2NDVfcmVhZF9tb3JlX3Jic3BfZGF0YShHZXRCaXRDb250ZXh0ICpnYmMpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1VCU0NSSVBUUyhzdWJzLCBfX1ZBX0FSR1Nf XyksIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSwgcmFuZ2VfbWlu LCByYW5nZV9tYXgpKTsgXAogICAgIH0gd2hpbGUgKDApCisjZGVmaW5lIHhtYihuYW1lLCB2YXIp IGRvIHsgXAorICAgICAgICB1aW50MzJfdCB2YWx1ZSA9IHZhcjsgXAorICAgICAgICBDSEVDSyhj YnNfd3JpdGVfbXVsdGlfYnl0ZShjdHgsIHJ3LCAjbmFtZSwgdmFsdWUpKTsgXAorICAgIH0gd2hp bGUgKDApCiAKICNkZWZpbmUgaW5mZXIobmFtZSwgdmFsdWUpIGRvIHsgXAogICAgICAgICBpZiAo Y3VycmVudC0+bmFtZSAhPSAodmFsdWUpKSB7IFwKQEAgLTQ2Nyw2ICs1NTcsMTAgQEAgc3RhdGlj IGludCBjYnNfaDI2NDVfcmVhZF9tb3JlX3Jic3BfZGF0YShHZXRCaXRDb250ZXh0ICpnYmMpCiAj aW5jbHVkZSAiY2JzX2gyNjZfc3ludGF4X3RlbXBsYXRlLmMiCiAjdW5kZWYgRlVOQwogCisjZGVm aW5lIEZVTkMobmFtZSkgRlVOQ19MQ0VWQyhuYW1lKQorI2luY2x1ZGUgImNic19sY2V2Y19zeW50 YXhfdGVtcGxhdGUuYyIKKyN1bmRlZiBGVU5DCisKICN1bmRlZiBXUklURQogI3VuZGVmIFJFQURX UklURQogI3VuZGVmIFJXQ29udGV4dApAQCAtNDc1LDYgKzU2OSw3IEBAIHN0YXRpYyBpbnQgY2Jz X2gyNjQ1X3JlYWRfbW9yZV9yYnNwX2RhdGEoR2V0Qml0Q29udGV4dCAqZ2JjKQogI3VuZGVmIHhp CiAjdW5kZWYgeHVlCiAjdW5kZWYgeHNlCisjdW5kZWYgeG1iCiAjdW5kZWYgdQogI3VuZGVmIGkK ICN1bmRlZiBmbGFnCkBAIC03MzYsNiArODMxLDYwIEBAIHN0YXRpYyBpbnQgY2JzX2gyNjQ1X3Nw bGl0X2ZyYWdtZW50KENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LAogICAgICAgICAgICAgaWYg KGVyciA8IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKICAgICAgICAgfQorICAgIH0g ZWxzZSBpZiAoaGVhZGVyICYmIGZyYWctPmRhdGFbMF0gJiYgY29kZWNfaWQgPT0gQVZfQ09ERUNf SURfTENFVkMpIHsKKyAgICAgICAgLy8gTFZDQyBoZWFkZXIuCisgICAgICAgIHNpemVfdCBzaXpl LCBzdGFydCwgZW5kOworICAgICAgICBpbnQgaSwgaiwgbmJfYXJyYXlzLCBuYWxfdW5pdF90eXBl LCBuYl9uYWxzLCB2ZXJzaW9uOworCisgICAgICAgIHByaXYtPm1wNCA9IDE7CisKKyAgICAgICAg Ynl0ZXN0cmVhbTJfaW5pdCgmZ2JjLCBmcmFnLT5kYXRhLCBmcmFnLT5kYXRhX3NpemUpOworCisg ICAgICAgIGlmIChieXRlc3RyZWFtMl9nZXRfYnl0ZXNfbGVmdCgmZ2JjKSA8IDE0KQorICAgICAg ICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisKKyAgICAgICAgdmVyc2lvbiA9IGJ5 dGVzdHJlYW0yX2dldF9ieXRlKCZnYmMpOworICAgICAgICBpZiAodmVyc2lvbiAhPSAxKSB7Cisg ICAgICAgICAgICBhdl9sb2coY3R4LT5sb2dfY3R4LCBBVl9MT0dfRVJST1IsICJJbnZhbGlkIExW Q0MgaGVhZGVyOiAiCisgICAgICAgICAgICAgICAgICAgImZpcnN0IGJ5dGUgJXUuXG4iLCB2ZXJz aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworICAgICAgICB9 CisKKyAgICAgICAgYnl0ZXN0cmVhbTJfc2tpcCgmZ2JjLCAzKTsKKyAgICAgICAgcHJpdi0+bmFs X2xlbmd0aF9zaXplID0gKGJ5dGVzdHJlYW0yX2dldF9ieXRlKCZnYmMpID4+IDYpICsgMTsKKwor ICAgICAgICBieXRlc3RyZWFtMl9za2lwKCZnYmMsIDkpOworICAgICAgICBuYl9hcnJheXMgPSBi eXRlc3RyZWFtMl9nZXRfYnl0ZSgmZ2JjKTsKKworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbmJf YXJyYXlzOyBpKyspIHsKKyAgICAgICAgICAgIG5hbF91bml0X3R5cGUgPSBieXRlc3RyZWFtMl9n ZXRfYnl0ZSgmZ2JjKSAmIDB4M2Y7CisgICAgICAgICAgICBuYl9uYWxzID0gYnl0ZXN0cmVhbTJf Z2V0X2JlMTYoJmdiYyk7CisKKyAgICAgICAgICAgIHN0YXJ0ID0gYnl0ZXN0cmVhbTJfdGVsbCgm Z2JjKTsKKyAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBuYl9uYWxzOyBqKyspIHsKKyAgICAg ICAgICAgICAgICBpZiAoYnl0ZXN0cmVhbTJfZ2V0X2J5dGVzX2xlZnQoJmdiYykgPCAyKQorICAg ICAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICAgICAgICAg ICAgICBzaXplID0gYnl0ZXN0cmVhbTJfZ2V0X2JlMTYoJmdiYyk7CisgICAgICAgICAgICAgICAg aWYgKGJ5dGVzdHJlYW0yX2dldF9ieXRlc19sZWZ0KCZnYmMpIDwgc2l6ZSkKKyAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisgICAgICAgICAgICAgICAgYnl0 ZXN0cmVhbTJfc2tpcCgmZ2JjLCBzaXplKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVu ZCA9IGJ5dGVzdHJlYW0yX3RlbGwoJmdiYyk7CisKKyAgICAgICAgICAgIGVyciA9IGZmX2gyNjQ1 X3BhY2tldF9zcGxpdCgmcHJpdi0+cmVhZF9wYWNrZXQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZnJhZy0+ZGF0YSArIHN0YXJ0LCBlbmQgLSBzdGFydCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgtPmxvZ19jdHgsIDIsIEFWX0NP REVDX0lEX0xDRVZDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEgy NjQ1X0ZMQUdfSVNfTkFMRkYgfCBIMjY0NV9GTEFHX1NNQUxMX1BBRERJTkcgfCBIMjY0NV9GTEFH X1VTRV9SRUYpOworICAgICAgICAgICAgaWYgKGVyciA8IDApIHsKKyAgICAgICAgICAgICAgICBh dl9sb2coY3R4LT5sb2dfY3R4LCBBVl9MT0dfRVJST1IsICJGYWlsZWQgdG8gc3BsaXQgIgorICAg ICAgICAgICAgICAgICAgICAgICAiTFZDQyBhcnJheSAlZCAoJWQgTkFMIHVuaXRzIG9mIHR5cGUg JWQpLlxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgaSwgbmJfbmFscywgbmFsX3VuaXRfdHlw ZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg ICAgIGVyciA9IGNic19oMjY0NV9mcmFnbWVudF9hZGRfbmFscyhjdHgsIGZyYWcsICZwcml2LT5y ZWFkX3BhY2tldCk7CisgICAgICAgICAgICBpZiAoZXJyIDwgMCkKKyAgICAgICAgICAgICAgICBy ZXR1cm4gZXJyOworICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgaW50IGZsYWdzID0g KEgyNjQ1X0ZMQUdfSVNfTkFMRkYgKiAhIXByaXYtPm1wNCkgfCBIMjY0NV9GTEFHX1NNQUxMX1BB RERJTkcgfCBIMjY0NV9GTEFHX1VTRV9SRUY7CiAgICAgICAgIC8vIEFubmV4IEIsIG9yIGxhdGVy IE1QNCB3aXRoIGFscmVhZHkta25vd24gcGFyYW1ldGVycy4KQEAgLTEyNDUsNiArMTM5NCw1OSBA QCBzdGF0aWMgaW50IGNic19oMjY2X3JlYWRfbmFsX3VuaXQoQ29kZWRCaXRzdHJlYW1Db250ZXh0 ICpjdHgsCiAgICAgcmV0dXJuIDA7CiB9CiAKKworc3RhdGljIGludCBjYnNfbGNldmNfcmVhZF9u YWxfdW5pdChDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgQ29kZWRCaXRzdHJlYW1Vbml0ICp1bml0KQoreworICAgIEdldEJpdENv bnRleHQgZ2JjOworICAgIGludCBlcnI7CisKKyAgICBlcnIgPSBpbml0X2dldF9iaXRzOCgmZ2Jj LCB1bml0LT5kYXRhLCB1bml0LT5kYXRhX3NpemUpOworICAgIGlmIChlcnIgPCAwKQorICAgICAg ICByZXR1cm4gZXJyOworCisgICAgZXJyID0gZmZfY2JzX2FsbG9jX3VuaXRfY29udGVudChjdHgs IHVuaXQpOworICAgIGlmIChlcnIgPCAwKQorICAgICAgICByZXR1cm4gZXJyOworCisgICAgc3dp dGNoICh1bml0LT50eXBlKSB7CisgICAgY2FzZSBMQ0VWQ19OT05fSURSX05VVDoKKyAgICBjYXNl IExDRVZDX0lEUl9OVVQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIExDRVZDUmF3TkFMICpuYWwg PSB1bml0LT5jb250ZW50OworICAgICAgICAgICAgTENFVkNSYXdQcm9jZXNzQmxvY2tMaXN0ICpi bG9ja19saXN0OworCisgICAgICAgICAgICBlcnIgPSBjYnNfbGNldmNfcmVhZF9uYWwoY3R4LCAm Z2JjLCB1bml0LT5jb250ZW50LCB1bml0LT50eXBlKTsKKworICAgICAgICAgICAgaWYgKGVyciA8 IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKKworICAgICAgICAgICAgYmxvY2tfbGlz dCA9ICZuYWwtPnByb2Nlc3NfYmxvY2tfbGlzdDsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAw OyBpIDwgYmxvY2tfbGlzdC0+bmJfYmxvY2tzOyBpKyspIHsKKyAgICAgICAgICAgICAgICBMQ0VW Q1Jhd1Byb2Nlc3NCbG9jayAqYmxvY2sgPSAmYmxvY2tfbGlzdC0+YmxvY2tzW2ldOworICAgICAg ICAgICAgICAgIExDRVZDUmF3RW5jb2RlZERhdGEgKnNsaWNlOworCisgICAgICAgICAgICAgICAg aWYgKGJsb2NrLT5wYXlsb2FkX3R5cGUgIT0gTENFVkNfUEFZTE9BRF9UWVBFX0VOQ09ERURfREFU QSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBzbGlj ZSA9IGJsb2NrLT5wYXlsb2FkOworICAgICAgICAgICAgICAgIHNsaWNlLT5kYXRhX3JlZiA9IGF2 X2J1ZmZlcl9yZWYodW5pdC0+ZGF0YV9yZWYpOworICAgICAgICAgICAgICAgIGlmICghc2xpY2Ut PmRhdGFfcmVmKQorICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsK KyAgICAgICAgICAgICAgICBzbGljZS0+ZGF0YSA9IHVuaXQtPmRhdGEgKyBzbGljZS0+aGVhZGVy X3NpemU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChlcnIgPCAwKQorICAgICAg ICAgICAgICAgIHJldHVybiBlcnI7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgZGVm YXVsdDoKKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PU1lTKTsKKyAgICB9CisKKyAgICByZXR1 cm4gMDsKK30KKwogc3RhdGljIGludCBjYnNfaDI2NDVfd3JpdGVfc2xpY2VfZGF0YShDb2RlZEJp dHN0cmVhbUNvbnRleHQgKmN0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUHV0Qml0Q29udGV4dCAqcGJjLCBjb25zdCB1aW50OF90ICpkYXRhLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGF0YV9zaXplLCBpbnQgZGF0YV9iaXRf c3RhcnQpCkBAIC0xODE0LDYgKzIwMTYsMzEgQEAgc3RhdGljIGludCBjYnNfaDI2Nl93cml0ZV9u YWxfdW5pdChDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwKICAgICByZXR1cm4gMDsKIH0KIAor c3RhdGljIGludCBjYnNfbGNldmNfd3JpdGVfbmFsX3VuaXQoQ29kZWRCaXRzdHJlYW1Db250ZXh0 ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2RlZEJpdHN0cmVh bVVuaXQgKnVuaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdXRCaXRD b250ZXh0ICpwYmMpCit7CisgICAgaW50IGVycjsKKworICAgIHN3aXRjaCAodW5pdC0+dHlwZSkg eworICAgIGNhc2UgTENFVkNfTk9OX0lEUl9OVVQ6CisgICAgY2FzZSBMQ0VWQ19JRFJfTlVUOgor ICAgICAgICB7CisgICAgICAgICAgICBlcnIgPSBjYnNfbGNldmNfd3JpdGVfbmFsKGN0eCwgcGJj LCB1bml0LT5jb250ZW50LCB1bml0LT50eXBlKTsKKworICAgICAgICAgICAgaWYgKGVyciA8IDAp CisgICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKKyAgICAgICAgfQorICAgICAgICBicmVhazsK KyAgICBkZWZhdWx0OgorICAgICAgICBhdl9sb2coY3R4LT5sb2dfY3R4LCBBVl9MT0dfRVJST1Is ICJXcml0ZSB1bmltcGxlbWVudGVkIGZvciAiCisgICAgICAgICAgICAgICAiTkFMIHVuaXQgdHlw ZSAlIlBSSXUzMiIuXG4iLCB1bml0LT50eXBlKTsKKyAgICAgICAgcmV0dXJuIEFWRVJST1JfUEFU Q0hXRUxDT01FOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCiBzdGF0aWMgaW50IGNic19o MjY0NV91bml0X3JlcXVpcmVzX3plcm9fYnl0ZShlbnVtIEFWQ29kZWNJRCBjb2RlY19pZCwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvZGVkQml0c3RyZWFt VW5pdFR5cGUgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGludCBuYWxfdW5pdF9pbmRleCkKQEAgLTE5OTEsNiArMjIxOCwyMyBAQCBzdGF0aWMgYXZf Y29sZCB2b2lkIGNic19oMjY2X2Nsb3NlKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4KQogICAg IGZmX2gyNjQ1X3BhY2tldF91bmluaXQoJmgyNjYtPmNvbW1vbi5yZWFkX3BhY2tldCk7CiAgfQog CitzdGF0aWMgYXZfY29sZCB2b2lkIGNic19sY2V2Y19mbHVzaChDb2RlZEJpdHN0cmVhbUNvbnRl eHQgKmN0eCkKK3sKKyAgICBDb2RlZEJpdHN0cmVhbUxDRVZDQ29udGV4dCAqbGNldmMgPSBjdHgt PnByaXZfZGF0YTsKKworICAgIGF2X3JlZnN0cnVjdF91bnJlZigmbGNldmMtPnNjKTsKKyAgICBh dl9yZWZzdHJ1Y3RfdW5yZWYoJmxjZXZjLT5nYyk7CisgICAgYXZfcmVmc3RydWN0X3VucmVmKCZs Y2V2Yy0+cGMpOworfQorCitzdGF0aWMgYXZfY29sZCB2b2lkIGNic19sY2V2Y19jbG9zZShDb2Rl ZEJpdHN0cmVhbUNvbnRleHQgKmN0eCkKK3sKKyAgICBDb2RlZEJpdHN0cmVhbUxDRVZDQ29udGV4 dCAqbGNldmMgPSBjdHgtPnByaXZfZGF0YTsKKworICAgIGNic19sY2V2Y19mbHVzaChjdHgpOwor ICAgIGZmX2gyNjQ1X3BhY2tldF91bmluaXQoJmxjZXZjLT5jb21tb24ucmVhZF9wYWNrZXQpOwor fQorCiBzdGF0aWMgdm9pZCBjYnNfaDI2NF9mcmVlX3NlaShBVlJlZlN0cnVjdE9wYXF1ZSB1bnVz ZWQsIHZvaWQgKmNvbnRlbnQpCiB7CiAgICAgSDI2NFJhd1NFSSAqc2VpID0gY29udGVudDsKQEAg LTIwOTUsNiArMjMzOSwxOSBAQCBzdGF0aWMgQ29kZWRCaXRzdHJlYW1Vbml0VHlwZURlc2NyaXB0 b3IgY2JzX2gyNjZfdW5pdF90eXBlc1tdID0gewogICAgIENCU19VTklUX1RZUEVfRU5EX09GX0xJ U1QKIH07CiAKK3N0YXRpYyB2b2lkIGNic19sY2V2Y19mcmVlX25hbChBVlJlZlN0cnVjdE9wYXF1 ZSB1bnVzZWQsIHZvaWQgKmNvbnRlbnQpCit7CisgICAgTENFVkNSYXdOQUwgKm5hbCA9IGNvbnRl bnQ7CisgICAgZmZfY2JzX2xjZXZjX2ZyZWVfcHJvY2Vzc19ibG9ja19saXN0KCZuYWwtPnByb2Nl c3NfYmxvY2tfbGlzdCk7Cit9CisKK3N0YXRpYyBDb2RlZEJpdHN0cmVhbVVuaXRUeXBlRGVzY3Jp cHRvciBjYnNfbGNldmNfdW5pdF90eXBlc1tdID0geworICAgIENCU19VTklUX1RZUEVTX0NPTVBM RVgoKExDRVZDX05PTl9JRFJfTlVULCBMQ0VWQ19JRFJfTlVUKSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIExDRVZDUmF3TkFMLCBjYnNfbGNldmNfZnJlZV9uYWwpLAorCisgICAgQ0JTX1VO SVRfVFlQRV9FTkRfT0ZfTElTVAorfTsKKwogY29uc3QgQ29kZWRCaXRzdHJlYW1UeXBlIGZmX2Ni c190eXBlX2gyNjQgPSB7CiAgICAgLmNvZGVjX2lkICAgICAgICAgID0gQVZfQ09ERUNfSURfSDI2 NCwKIApAQCAtMjE0NSw2ICsyNDAyLDc1IEBAIGNvbnN0IENvZGVkQml0c3RyZWFtVHlwZSBmZl9j YnNfdHlwZV9oMjY2ID0gewogICAgIC5jbG9zZSAgICAgICAgICAgICA9ICZjYnNfaDI2Nl9jbG9z ZSwKIH07CiAKK2NvbnN0IENvZGVkQml0c3RyZWFtVHlwZSBmZl9jYnNfdHlwZV9sY2V2YyA9IHsK KyAgICAuY29kZWNfaWQgICAgICAgICAgPSBBVl9DT0RFQ19JRF9MQ0VWQywKKworICAgIC5wcml2 X2RhdGFfc2l6ZSAgICA9IHNpemVvZihDb2RlZEJpdHN0cmVhbUxDRVZDQ29udGV4dCksCisKKyAg ICAudW5pdF90eXBlcyAgICAgICAgPSBjYnNfbGNldmNfdW5pdF90eXBlcywKKworICAgIC5zcGxp dF9mcmFnbWVudCAgICA9ICZjYnNfaDI2NDVfc3BsaXRfZnJhZ21lbnQsCisgICAgLnJlYWRfdW5p dCAgICAgICAgID0gJmNic19sY2V2Y19yZWFkX25hbF91bml0LAorICAgIC53cml0ZV91bml0ICAg ICAgICA9ICZjYnNfbGNldmNfd3JpdGVfbmFsX3VuaXQsCisgICAgLmFzc2VtYmxlX2ZyYWdtZW50 ID0gJmNic19oMjY0NV9hc3NlbWJsZV9mcmFnbWVudCwKKworICAgIC5mbHVzaCAgICAgICAgICAg ICA9ICZjYnNfbGNldmNfZmx1c2gsCisgICAgLmNsb3NlICAgICAgICAgICAgID0gJmNic19sY2V2 Y19jbG9zZSwKK307CisKKy8vIE1hY3JvIGZvciB0aGUgcmVhZC93cml0ZSBwYWlyLgorI2RlZmlu ZSBMQ0VWQ19QUk9DRVNTX0JMT0NLX1JXKGNvZGVjLCBuYW1lKSBcCisgICAgLnJlYWQgID0gY2Jz XyAjIyBjb2RlYyAjIyBfcmVhZF8gICMjIG5hbWUgIyMgX2ludGVybmFsLCBcCisgICAgLndyaXRl ID0gY2JzXyAjIyBjb2RlYyAjIyBfd3JpdGVfICMjIG5hbWUgIyMgX2ludGVybmFsCisKK3N0YXRp YyBjb25zdCBMQ0VWQ1Byb2Nlc3NCbG9ja1R5cGVEZXNjcmlwdG9yIGNic19sY2V2Y19wcm9jZXNz X2Jsb2NrX3R5cGVzW10gPSB7CisgICAgeworICAgICAgICBMQ0VWQ19QQVlMT0FEX1RZUEVfU0VR VUVOQ0VfQ09ORklHLAorICAgICAgICBzaXplb2YoTENFVkNSYXdTZXF1ZW5jZUNvbmZpZyksCisg ICAgICAgIExDRVZDX1BST0NFU1NfQkxPQ0tfUlcobGNldmMsIHNlcXVlbmNlX2NvbmZpZyksCisg ICAgfSwKKyAgICB7CisgICAgICAgIExDRVZDX1BBWUxPQURfVFlQRV9HTE9CQUxfQ09ORklHLAor ICAgICAgICBzaXplb2YoTENFVkNSYXdHbG9iYWxDb25maWcpLAorICAgICAgICBMQ0VWQ19QUk9D RVNTX0JMT0NLX1JXKGxjZXZjLCBnbG9iYWxfY29uZmlnKSwKKyAgICB9LAorICAgIHsKKyAgICAg ICAgTENFVkNfUEFZTE9BRF9UWVBFX1BJQ1RVUkVfQ09ORklHLAorICAgICAgICBzaXplb2YoTENF VkNSYXdQaWN0dXJlQ29uZmlnKSwKKyAgICAgICAgTENFVkNfUFJPQ0VTU19CTE9DS19SVyhsY2V2 YywgcGljdHVyZV9jb25maWcpLAorICAgIH0sCisgICAgeworICAgICAgICBMQ0VWQ19QQVlMT0FE X1RZUEVfRU5DT0RFRF9EQVRBLAorICAgICAgICBzaXplb2YoTENFVkNSYXdFbmNvZGVkRGF0YSks CisgICAgICAgIExDRVZDX1BST0NFU1NfQkxPQ0tfUlcobGNldmMsIGVuY29kZWRfZGF0YSksCisg ICAgfSwKKyAgICB7CisgICAgICAgIExDRVZDX1BBWUxPQURfVFlQRV9BRERJVElPTkFMX0lORk8s CisgICAgICAgIHNpemVvZihMQ0VWQ1Jhd0FkZGl0aW9uYWxJbmZvKSwKKyAgICAgICAgTENFVkNf UFJPQ0VTU19CTE9DS19SVyhsY2V2YywgYWRkaXRpb25hbF9pbmZvKSwKKyAgICB9LAorICAgIHsK KyAgICAgICAgTENFVkNfUEFZTE9BRF9UWVBFX0ZJTExFUiwKKyAgICAgICAgc2l6ZW9mKExDRVZD UmF3RmlsbGVyKSwKKyAgICAgICAgTENFVkNfUFJPQ0VTU19CTE9DS19SVyhsY2V2YywgZmlsbGVy KSwKKyAgICB9LAorICAgIExDRVZDX1BST0NFU1NfQkxPQ0tfVFlQRV9FTkQsCit9OworCitjb25z dCBMQ0VWQ1Byb2Nlc3NCbG9ja1R5cGVEZXNjcmlwdG9yCisgICAgKmZmX2Nic19sY2V2Y19wcm9j ZXNzX2Jsb2NrX2ZpbmRfdHlwZShDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwYXlsb2FkX3R5cGUpCit7Cisg ICAgaW50IGk7CisKKyAgICBmb3IgKGkgPSAwOyBjYnNfbGNldmNfcHJvY2Vzc19ibG9ja190eXBl c1tpXS5wYXlsb2FkX3R5cGUgPj0gMDsgaSsrKSB7CisgICAgICAgIGlmIChjYnNfbGNldmNfcHJv Y2Vzc19ibG9ja190eXBlc1tpXS5wYXlsb2FkX3R5cGUgPT0gcGF5bG9hZF90eXBlKQorICAgICAg ICAgICAgcmV0dXJuICZjYnNfbGNldmNfcHJvY2Vzc19ibG9ja190eXBlc1tpXTsKKyAgICB9CisK KyAgICByZXR1cm4gTlVMTDsKK30KKwogLy8gTWFjcm8gZm9yIHRoZSByZWFkL3dyaXRlIHBhaXIu CiAjZGVmaW5lIFNFSV9NRVNTQUdFX1JXKGNvZGVjLCBuYW1lKSBcCiAgICAgLnJlYWQgID0gY2Jz XyAjIyBjb2RlYyAjIyBfcmVhZF8gICMjIG5hbWUgIyMgX2ludGVybmFsLCBcCkBAIC0yMzI4LDYg KzI2NTQsMTAgQEAgc3RhdGljIGNvbnN0IFNFSU1lc3NhZ2VUeXBlRGVzY3JpcHRvciBjYnNfc2Vp X2gyNjZfdHlwZXNbXSA9IHsKICAgICBTRUlfTUVTU0FHRV9UWVBFX0VORAogfTsKIAorc3RhdGlj IGNvbnN0IFNFSU1lc3NhZ2VUeXBlRGVzY3JpcHRvciBjYnNfc2VpX2xjZXZjX3R5cGVzW10gPSB7 CisgICAgU0VJX01FU1NBR0VfVFlQRV9FTkQKK307CisKIHN0YXRpYyBjb25zdCBTRUlNZXNzYWdl VHlwZURlc2NyaXB0b3IgY2JzX3NlaV9oMjc0X3R5cGVzW10gPSB7CiAgICAgewogICAgICAgICBT RUlfVFlQRV9GSUxNX0dSQUlOX0NIQVJBQ1RFUklTVElDUywKQEAgLTIzNjYsNiArMjY5Niw5IEBA IGNvbnN0IFNFSU1lc3NhZ2VUeXBlRGVzY3JpcHRvciAqZmZfY2JzX3NlaV9maW5kX3R5cGUoQ29k ZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsCiAgICAgY2FzZSBBVl9DT0RFQ19JRF9IMjY2OgogICAg ICAgICBjb2RlY19saXN0ID0gY2JzX3NlaV9oMjY2X3R5cGVzOwogICAgICAgICBicmVhazsKKyAg ICBjYXNlIEFWX0NPREVDX0lEX0xDRVZDOgorICAgICAgICBjb2RlY19saXN0ID0gY2JzX3NlaV9s Y2V2Y190eXBlczsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJu IE5VTEw7CiAgICAgfQpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9jYnNfaW50ZXJuYWwuaCBiL2xp YmF2Y29kZWMvY2JzX2ludGVybmFsLmgKaW5kZXggOGNhNTNmZjNjZS4uMmFmODA3NWY3OCAxMDA2 NDQKLS0tIGEvbGliYXZjb2RlYy9jYnNfaW50ZXJuYWwuaAorKysgYi9saWJhdmNvZGVjL2Nic19p bnRlcm5hbC5oCkBAIC01Nyw2ICs1Nyw5IEBACiAjaWZuZGVmIENCU19IMjY2CiAjZGVmaW5lIENC U19IMjY2IENPTkZJR19DQlNfSDI2NgogI2VuZGlmCisjaWZuZGVmIENCU19MQ0VWQworI2RlZmlu ZSBDQlNfTENFVkMgQ09ORklHX0NCU19MQ0VWQworI2VuZGlmCiAjaWZuZGVmIENCU19KUEVHCiAj ZGVmaW5lIENCU19KUEVHIENPTkZJR19DQlNfSlBFRwogI2VuZGlmCkBAIC0zOTEsNiArMzk0LDcg QEAgZXh0ZXJuIGNvbnN0IENvZGVkQml0c3RyZWFtVHlwZSBDQlNfRlVOQyh0eXBlX2F2MSk7CiBl eHRlcm4gY29uc3QgQ29kZWRCaXRzdHJlYW1UeXBlIENCU19GVU5DKHR5cGVfaDI2NCk7CiBleHRl cm4gY29uc3QgQ29kZWRCaXRzdHJlYW1UeXBlIENCU19GVU5DKHR5cGVfaDI2NSk7CiBleHRlcm4g Y29uc3QgQ29kZWRCaXRzdHJlYW1UeXBlIENCU19GVU5DKHR5cGVfaDI2Nik7CitleHRlcm4gY29u c3QgQ29kZWRCaXRzdHJlYW1UeXBlIENCU19GVU5DKHR5cGVfbGNldmMpOwogZXh0ZXJuIGNvbnN0 IENvZGVkQml0c3RyZWFtVHlwZSBDQlNfRlVOQyh0eXBlX2pwZWcpOwogZXh0ZXJuIGNvbnN0IENv ZGVkQml0c3RyZWFtVHlwZSBDQlNfRlVOQyh0eXBlX21wZWcyKTsKIGV4dGVybiBjb25zdCBDb2Rl ZEJpdHN0cmVhbVR5cGUgQ0JTX0ZVTkModHlwZV92cDgpOwpkaWZmIC0tZ2l0IGEvbGliYXZjb2Rl Yy9jYnNfbGNldmMuYyBiL2xpYmF2Y29kZWMvY2JzX2xjZXZjLmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMC4uN2RjZjcwOWM5NAotLS0gL2Rldi9udWxsCisrKyBiL2xpYmF2 Y29kZWMvY2JzX2xjZXZjLmMKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiBUaGlzIGZpbGUgaXMg cGFydCBvZiBGRm1wZWcuCisgKgorICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBvZiB0 aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg KiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdp dGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0 aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAy MTEwLTEzMDEgVVNBCisgKi8KKworI2luY2x1ZGUgImxpYmF2dXRpbC9tZW0uaCIKKyNpbmNsdWRl ICJjYnMuaCIKKyNpbmNsdWRlICJjYnNfaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJjYnNfbGNldmMu aCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvcmVmc3RydWN0LmgiCisKK3N0YXRpYyB2b2lkIGZyZWVf cGljdHVyZV9jb25maWcoQVZSZWZTdHJ1Y3RPcGFxdWUgdW51c2VkLCB2b2lkICpvYmopCit7Cisg ICAgTENFVkNSYXdQaWN0dXJlQ29uZmlnICpwaWN0dXJlX2NvbmZpZyA9IG9iajsKKworICAgIGF2 X3JlZnN0cnVjdF91bnJlZigmcGljdHVyZV9jb25maWctPmdjKTsKK30KKworc3RhdGljIHZvaWQg ZnJlZV9lbmNvZGVkX2RhdGEoQVZSZWZTdHJ1Y3RPcGFxdWUgdW51c2VkLCB2b2lkICpvYmopCit7 CisgICAgTENFVkNSYXdFbmNvZGVkRGF0YSAqc2xpY2UgPSBvYmo7CisKKyAgICBhdl9idWZmZXJf dW5yZWYoJnNsaWNlLT5kYXRhX3JlZik7CisKKyAgICBhdl9yZWZzdHJ1Y3RfdW5yZWYoJnNsaWNl LT5zYyk7CisgICAgYXZfcmVmc3RydWN0X3VucmVmKCZzbGljZS0+Z2MpOworICAgIGF2X3JlZnN0 cnVjdF91bnJlZigmc2xpY2UtPnBjKTsKK30KKworc3RhdGljIHZvaWQgZnJlZV9hZGRpdGlvbmFs X2luZm8oQVZSZWZTdHJ1Y3RPcGFxdWUgdW51c2VkLCB2b2lkICpvYmopCit7CisgICAgTENFVkNS YXdBZGRpdGlvbmFsSW5mbyAqYWRkaXRpb25hbF9pbmZvID0gb2JqOworICAgIFNFSVJhd01lc3Nh Z2UgKm1lc3NhZ2UgPSAmYWRkaXRpb25hbF9pbmZvLT5zZWk7CisKKyAgICBhdl9yZWZzdHJ1Y3Rf dW5yZWYoJmFkZGl0aW9uYWxfaW5mby0+cGF5bG9hZF9yZWYpOworICAgIGF2X3JlZnN0cnVjdF91 bnJlZigmbWVzc2FnZS0+cGF5bG9hZF9yZWYpOworICAgIGF2X3JlZnN0cnVjdF91bnJlZigmbWVz c2FnZS0+ZXh0ZW5zaW9uX2RhdGEpOworfQorCitpbnQgZmZfY2JzX2xjZXZjX2FsbG9jX3Byb2Nl c3NfYmxvY2tfcGF5bG9hZChMQ0VWQ1Jhd1Byb2Nlc3NCbG9jayAqYmxvY2ssCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMQ0VWQ1Byb2Nlc3NCbG9j a1R5cGVEZXNjcmlwdG9yICpkZXNjKQoreworICAgIHZvaWQgKCpmcmVlX2Z1bmMpKEFWUmVmU3Ry dWN0T3BhcXVlLCB2b2lkKik7CisKKyAgICBhdl9hc3NlcnQwKGJsb2NrLT5wYXlsb2FkICAgICA9 PSBOVUxMICYmCisgICAgICAgICAgICAgICBibG9jay0+cGF5bG9hZF9yZWYgPT0gTlVMTCk7Cisg ICAgYmxvY2stPnBheWxvYWRfdHlwZSA9IGRlc2MtPnBheWxvYWRfdHlwZTsKKworICAgIGlmIChk ZXNjLT5wYXlsb2FkX3R5cGUgPT0gTENFVkNfUEFZTE9BRF9UWVBFX1BJQ1RVUkVfQ09ORklHKQor ICAgICAgICBmcmVlX2Z1bmMgPSAmZnJlZV9waWN0dXJlX2NvbmZpZzsKKyAgICBlbHNlIGlmIChk ZXNjLT5wYXlsb2FkX3R5cGUgPT0gTENFVkNfUEFZTE9BRF9UWVBFX0VOQ09ERURfREFUQSkKKyAg ICAgICAgZnJlZV9mdW5jID0gJmZyZWVfZW5jb2RlZF9kYXRhOworICAgIGVsc2UgaWYgKGRlc2Mt PnBheWxvYWRfdHlwZSA9PSBMQ0VWQ19QQVlMT0FEX1RZUEVfQURESVRJT05BTF9JTkZPKQorICAg ICAgICBmcmVlX2Z1bmMgPSAmZnJlZV9hZGRpdGlvbmFsX2luZm87CisgICAgZWxzZQorICAgICAg ICBmcmVlX2Z1bmMgPSBOVUxMOworCisgICAgYmxvY2stPnBheWxvYWRfcmVmID0gYXZfcmVmc3Ry dWN0X2FsbG9jX2V4dChkZXNjLT5wYXlsb2FkX3NpemUsIDAsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBmcmVlX2Z1bmMpOworICAgIGlmICgh YmxvY2stPnBheWxvYWRfcmVmKQorICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOworICAg IGJsb2NrLT5wYXlsb2FkID0gYmxvY2stPnBheWxvYWRfcmVmOworCisgICAgcmV0dXJuIDA7Cit9 CisKK2ludCBmZl9jYnNfbGNldmNfbGlzdF9hZGQoTENFVkNSYXdQcm9jZXNzQmxvY2tMaXN0ICps aXN0KQoreworICAgIHZvaWQgKnB0cjsKKyAgICBpbnQgb2xkX2NvdW50ID0gbGlzdC0+bmJfYmxv Y2tzX2FsbG9jYXRlZDsKKworICAgIGF2X2Fzc2VydDAobGlzdC0+bmJfYmxvY2tzIDw9IG9sZF9j b3VudCk7CisgICAgaWYgKGxpc3QtPm5iX2Jsb2NrcyArIDEgPiBvbGRfY291bnQpIHsKKyAgICAg ICAgaW50IG5ld19jb3VudCA9IDIgKiBvbGRfY291bnQgKyAxOworCisgICAgICAgIHB0ciA9IGF2 X3JlYWxsb2NfYXJyYXkobGlzdC0+YmxvY2tzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG5ld19jb3VudCwgc2l6ZW9mKCpsaXN0LT5ibG9ja3MpKTsKKyAgICAgICAgaWYgKCFwdHIp CisgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOworCisgICAgICAgIGxpc3QtPmJs b2NrcyA9IHB0cjsKKyAgICAgICAgbGlzdC0+bmJfYmxvY2tzX2FsbG9jYXRlZCA9IG5ld19jb3Vu dDsKKworICAgICAgICAvLyBaZXJvIHRoZSBuZXdseS1hZGRlZCBlbnRyaWVzLgorICAgICAgICBt ZW1zZXQobGlzdC0+YmxvY2tzICsgb2xkX2NvdW50LCAwLAorICAgICAgICAgICAgICAgKG5ld19j b3VudCAtIG9sZF9jb3VudCkgKiBzaXplb2YoKmxpc3QtPmJsb2NrcykpOworICAgIH0KKyAgICAr K2xpc3QtPm5iX2Jsb2NrczsKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBmZl9jYnNfbGNldmNf ZnJlZV9wcm9jZXNzX2Jsb2NrX2xpc3QoTENFVkNSYXdQcm9jZXNzQmxvY2tMaXN0ICpsaXN0KQor eworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGlzdC0+bmJfYmxvY2tzOyBpKyspIHsKKyAgICAg ICAgTENFVkNSYXdQcm9jZXNzQmxvY2sgKmJsb2NrID0gJmxpc3QtPmJsb2Nrc1tpXTsKKyAgICAg ICAgYXZfcmVmc3RydWN0X3VucmVmKCZibG9jay0+cGF5bG9hZF9yZWYpOworICAgIH0KKyAgICBh dl9mcmVlKGxpc3QtPmJsb2Nrcyk7Cit9CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2Nic19sY2V2 Yy5oIGIvbGliYXZjb2RlYy9jYnNfbGNldmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwLi42NmI1Y2JkMDgxCi0tLSAvZGV2L251bGwKKysrIGIvbGliYXZjb2RlYy9jYnNf bGNldmMuaApAQCAtMCwwICsxLDI2MyBAQAorLyoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZG bXBlZy4KKyAqCisgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz c2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNl LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIEZGbXBlZyBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7 IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4s IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBV U0EKKyAqLworCisjaWZuZGVmIEFWQ09ERUNfQ0JTX0xDRVZDX0gKKyNkZWZpbmUgQVZDT0RFQ19D QlNfTENFVkNfSAorCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisK KyNpbmNsdWRlICJjYnNfaDI2NDUuaCIKKyNpbmNsdWRlICJjYnNfc2VpLmgiCisjaW5jbHVkZSAi bGNldmMuaCIKKwordHlwZWRlZiBzdHJ1Y3QgTENFVkNSYXdOQUxVbml0SGVhZGVyIHsKKyAgICB1 aW50OF90IG5hbF91bml0X3R5cGU7CisgICAgdWludDE2X3QgcmVzZXJ2ZWRfZmxhZzsKK30gTENF VkNSYXdOQUxVbml0SGVhZGVyOworCit0eXBlZGVmIHN0cnVjdCAgTENFVkNSYXdTZXF1ZW5jZUNv bmZpZyB7CisgICAgdWludDhfdCAgcHJvZmlsZV9pZGM7CisgICAgdWludDhfdCAgbGV2ZWxfaWRj OworICAgIHVpbnQ4X3QgIHN1YmxldmVsX2lkYzsKKyAgICB1aW50OF90ICBjb25mb3JtYW5jZV93 aW5kb3dfZmxhZzsKKyAgICB1aW50OF90ICByZXNlcnZlZF96ZXJvc181Yml0OworICAgIHVpbnQ4 X3QgIGV4dGVuZGVkX3Byb2ZpbGVfaWRjOworICAgIHVpbnQ4X3QgIGV4dGVuZGVkX2xldmVsX2lk YzsKKyAgICB1aW50OF90ICByZXNlcnZlZF96ZXJvc18xYml0OworICAgIHVpbnQzMl90ICBjb25m X3dpbl9sZWZ0X29mZnNldDsKKyAgICB1aW50MzJfdCAgY29uZl93aW5fcmlnaHRfb2Zmc2V0Owor ICAgIHVpbnQzMl90ICBjb25mX3dpbl90b3Bfb2Zmc2V0OworICAgIHVpbnQzMl90ICBjb25mX3dp bl9ib3R0b21fb2Zmc2V0OworfSBMQ0VWQ1Jhd1NlcXVlbmNlQ29uZmlnOworCit0eXBlZGVmIHN0 cnVjdCAgTENFVkNSYXdHbG9iYWxDb25maWcgeworICAgIHVpbnQ4X3QgIHByb2Nlc3NlZF9wbGFu ZXNfdHlwZV9mbGFnOworICAgIHVpbnQ4X3QgIHJlc29sdXRpb25fdHlwZTsKKyAgICB1aW50OF90 ICB0cmFuc2Zvcm1fdHlwZTsKKyAgICB1aW50OF90ICBjaHJvbWFfc2FtcGxpbmdfdHlwZTsKKyAg ICB1aW50OF90ICBiYXNlX2RlcHRoX3R5cGU7CisgICAgdWludDhfdCAgZW5oYW5jZW1lbnRfZGVw dGhfdHlwZTsKKyAgICB1aW50OF90ICB0ZW1wb3JhbF9zdGVwX3dpZHRoX21vZGlmaWVyX3NpZ25h bGxlZF9mbGFnOworICAgIHVpbnQ4X3QgIHByZWRpY3RlZF9yZXNpZHVhbF9tb2RlX2ZsYWc7Cisg ICAgdWludDhfdCAgdGVtcG9yYWxfdGlsZV9pbnRyYV9zaWduYWxsaW5nX2VuYWJsZWRfZmxhZzsK KyAgICB1aW50OF90ICB0ZW1wb3JhbF9lbmFibGVkX2ZsYWc7CisgICAgdWludDhfdCAgdXBzYW1w bGVfdHlwZTsKKyAgICB1aW50OF90ICBsZXZlbDFfZmlsdGVyaW5nX3NpZ25hbGxlZF9mbGFnOwor ICAgIHVpbnQ4X3QgIHNjYWxpbmdfbW9kZV9sZXZlbDE7CisgICAgdWludDhfdCAgc2NhbGluZ19t b2RlX2xldmVsMjsKKyAgICB1aW50OF90ICB0aWxlX2RpbWVuc2lvbnNfdHlwZTsKKyAgICB1aW50 OF90ICB1c2VyX2RhdGFfZW5hYmxlZDsKKyAgICB1aW50OF90ICBsZXZlbDFfZGVwdGhfZmxhZzsK KyAgICB1aW50OF90ICBjaHJvbWFfc3RlcF93aWR0aF9mbGFnOworICAgIHVpbnQ4X3QgIHBsYW5l c190eXBlOworICAgIHVpbnQ4X3QgIHJlc2VydmVkX3plcm9zXzRiaXQ7CisgICAgdWludDhfdCAg dGVtcG9yYWxfc3RlcF93aWR0aF9tb2RpZmllcjsKKyAgICB1aW50MTZfdCAgdXBzYW1wbGVyX2Nv ZWZmMTsKKyAgICB1aW50MTZfdCAgdXBzYW1wbGVyX2NvZWZmMjsKKyAgICB1aW50MTZfdCAgdXBz YW1wbGVyX2NvZWZmMzsKKyAgICB1aW50MTZfdCAgdXBzYW1wbGVyX2NvZWZmNDsKKyAgICB1aW50 OF90ICBsZXZlbDFfZmlsdGVyaW5nX2ZpcnN0X2NvZWZmaWNpZW50OworICAgIHVpbnQ4X3QgIGxl dmVsMV9maWx0ZXJpbmdfc2Vjb25kX2NvZWZmaWNpZW50OworICAgIHVpbnQxNl90ICBjdXN0b21f dGlsZV93aWR0aDsKKyAgICB1aW50MTZfdCAgY3VzdG9tX3RpbGVfaGVpZ2h0OworICAgIHVpbnQx Nl90ICByZXNlcnZlZF96ZXJvc181Yml0OworICAgIHVpbnQ4X3QgIGNvbXByZXNzaW9uX3R5cGVf ZW50cm9weV9lbmFibGVkX3Blcl90aWxlX2ZsYWc7CisgICAgdWludDhfdCAgY29tcHJlc3Npb25f dHlwZV9zaXplX3Blcl90aWxlOworICAgIHVpbnQxNl90ICBjdXN0b21fcmVzb2x1dGlvbl93aWR0 aDsKKyAgICB1aW50MTZfdCAgY3VzdG9tX3Jlc29sdXRpb25faGVpZ2h0OworICAgIHVpbnQ4X3Qg IGNocm9tYV9zdGVwX3dpZHRoX211bHRpcGxpZXI7Cit9IExDRVZDUmF3R2xvYmFsQ29uZmlnOwor Cit0eXBlZGVmIHN0cnVjdCAgTENFVkNSYXdQaWN0dXJlQ29uZmlnIHsKKyAgICB1aW50OF90ICBu b19lbmhhbmNlbWVudF9iaXRfZmxhZzsKKyAgICB1aW50OF90ICBxdWFudF9tYXRyaXhfbW9kZTsK KyAgICB1aW50OF90ICBkZXF1YW50X29mZnNldF9zaWduYWxsZWRfZmxhZzsKKyAgICB1aW50OF90 ICBwaWN0dXJlX3R5cGVfYml0X2ZsYWc7CisgICAgdWludDhfdCAgdGVtcG9yYWxfcmVmcmVzaF9i aXRfZmxhZzsKKyAgICB1aW50OF90ICBzdGVwX3dpZHRoX3N1YmxheWVyMV9lbmFibGVkX2ZsYWc7 CisgICAgdWludDE2X3QgIHN0ZXBfd2lkdGhfc3VibGF5ZXIyOworICAgIHVpbnQ4X3QgIGRpdGhl cmluZ19jb250cm9sX2ZsYWc7CisgICAgdWludDhfdCAgcmVzZXJ2ZWRfemVyb3NfNGJpdDsKKyAg ICB1aW50OF90ICB0ZW1wb3JhbF9zaWduYWxsaW5nX3ByZXNlbnRfZmxhZzsKKyAgICB1aW50OF90 ICBmaWVsZF90eXBlX2JpdF9mbGFnOworICAgIHVpbnQ4X3QgIHJlc2VydmVkX3plcm9zXzdiaXQ7 CisgICAgdWludDE2X3QgIHN0ZXBfd2lkdGhfc3VibGF5ZXIxOworICAgIHVpbnQ4X3QgIGxldmVs MV9maWx0ZXJpbmdfZW5hYmxlZF9mbGFnOworICAgIHVpbnQ4X3QgIHFtX2NvZWZmaWNpZW50XzBb MTZdOworICAgIHVpbnQ4X3QgIHFtX2NvZWZmaWNpZW50XzFbMTZdOworICAgIHVpbnQ4X3QgIGRl cXVhbnRfb2Zmc2V0X21vZGVfZmxhZzsKKyAgICB1aW50OF90ICBkZXF1YW50X29mZnNldDsKKyAg ICB1aW50OF90ICBkaXRoZXJpbmdfdHlwZTsKKyAgICB1aW50OF90ICByZXNlcnZlcmRfemVybzsK KyAgICB1aW50OF90ICBkaXRoZXJpbmdfc3RyZW5ndGg7CisgICAgdWludDhfdCAgcmVzZXJ2ZWRf emVyb3NfNWJpdDsKKworICAgIExDRVZDUmF3R2xvYmFsQ29uZmlnICAgKmdjOyAvLy88IFJlZlN0 cnVjdCByZWZlcmVuY2VzCit9IExDRVZDUmF3UGljdHVyZUNvbmZpZzsKKwordHlwZWRlZiBzdHJ1 Y3QgTENFVkNSYXdFbmNvZGVkRGF0YSB7CisgICAgTENFVkNSYXdOQUxVbml0SGVhZGVyIG5hbF91 bml0X2hlYWRlcjsKKworICAgIHVpbnQ4X3Qgc3VyZmFjZXNfZW50cm9weV9lbmFibGVkX2ZsYWdb M11bM11bMTZdOworICAgIHVpbnQ4X3Qgc3VyZmFjZXNfcmxlX29ubHlfZmxhZ1szXVszXVsxNl07 CisgICAgdWludDhfdCB0ZW1wb3JhbF9zdXJmYWNlc19lbnRyb3B5X2VuYWJsZWRfZmxhZ1szXTsK KyAgICB1aW50OF90IHRlbXBvcmFsX3N1cmZhY2VzX3JsZV9vbmx5X2ZsYWdbM107CisKKyAgICB1 aW50OF90ICAgICAqZGF0YTsKKyAgICBBVkJ1ZmZlclJlZiAqZGF0YV9yZWY7CisgICAgc2l6ZV90 ICAgICAgIGhlYWRlcl9zaXplOworICAgIHNpemVfdCAgICAgICBkYXRhX3NpemU7CisKKyAgICBM Q0VWQ1Jhd1NlcXVlbmNlQ29uZmlnICpzYzsgLy8vPCBSZWZTdHJ1Y3QgcmVmZXJlbmNlcworICAg IExDRVZDUmF3R2xvYmFsQ29uZmlnICAgKmdjOyAvLy88IFJlZlN0cnVjdCByZWZlcmVuY2VzCisg ICAgTENFVkNSYXdQaWN0dXJlQ29uZmlnICAqcGM7IC8vLzwgUmVmU3RydWN0IHJlZmVyZW5jZXMK K30gTENFVkNSYXdFbmNvZGVkRGF0YTsKKwordHlwZWRlZiBzdHJ1Y3QgTENFVkNSYXdWVUkgewor ICAgIHVpbnQ4X3QgIGFzcGVjdF9yYXRpb19pbmZvX3ByZXNlbnRfZmxhZzsKKyAgICB1aW50OF90 ICBhc3BlY3RfcmF0aW9faWRjOworICAgIHVpbnQxNl90ICBzYXJfd2lkdGg7CisgICAgdWludDhf dCAgc2FyX2hlaWdodDsKKyAgICB1aW50OF90ICBvdmVyc2Nhbl9pbmZvX3ByZXNlbnRfZmxhZzsK KyAgICB1aW50OF90ICBvdmVyc2Nhbl9hcHByb3ByaWF0ZV9mbGFnOworICAgIHVpbnQ4X3QgIHZp ZGVvX3NpZ25hbF90eXBlX3ByZXNlbnRfZmxhZzsKKyAgICB1aW50OF90ICB2aWRlb19mb3JtYXQ7 CisgICAgdWludDhfdCAgdmlkZW9fZnVsbF9yYW5nZV9mbGFnOworICAgIHVpbnQ4X3QgIGNvbG91 cl9kZXNjcmlwdGlvbl9wcmVzZW50X2ZsYWc7CisgICAgdWludDhfdCAgY29sb3VyX3ByaW1hcmll czsKKyAgICB1aW50OF90ICB0cmFuc2Zlcl9jaGFyYWN0ZXJpc3RpY3M7CisgICAgdWludDhfdCAg bWF0cml4X2NvZWZmaWNpZW50czsKKyAgICB1aW50OF90ICBjaHJvbWFfbG9jX2luZm9fcHJlc2Vu dF9mbGFnOworICAgIHVpbnQ4X3QgIGNocm9tYV9zYW1wbGVfbG9jX3R5cGVfdG9wX2ZpZWxkOwor ICAgIHVpbnQ4X3QgIGNocm9tYV9zYW1wbGVfbG9jX3R5cGVfYm90dG9tX2ZpZWxkOworfSBMQ0VW Q1Jhd1ZVSTsKKwordHlwZWRlZiBzdHJ1Y3QgTENFVkNSYXdTaGFycGVuRmlsdGVyIHsKKyAgICB1 aW50OF90ICBzaGFycGVuX3R5cGU7CisgICAgdWludDhfdCAgc2hhcnBlbl9zdHJlbmd0aDsKK30g TENFVkNSYXdTaGFycGVuRmlsdGVyOworCit0eXBlZGVmIHN0cnVjdCBMQ0VWQ1Jhd0FkZGl0aW9u YWxJbmZvIHsKKyAgICB1aW50OF90IGFkZGl0aW9uYWxfaW5mb190eXBlOworICAgIHVpbnQ4X3Qg cGF5bG9hZF90eXBlOworCisgICAgU0VJUmF3TWVzc2FnZSAgICAgICAgIHNlaTsKKyAgICBMQ0VW Q1Jhd1ZVSSAgICAgICAgICAgdnVpOworICAgIExDRVZDUmF3U2hhcnBlbkZpbHRlciBzZmlsdGVy OworCisgICAgdWludDMyX3QgICAgIHBheWxvYWRfc2l6ZTsKKyAgICB2b2lkICAgICAgICAqcGF5 bG9hZDsKKyAgICB2b2lkICAgICAgICAqcGF5bG9hZF9yZWY7ICAgIC8vLzwgUmVmU3RydWN0IHJl ZmVyZW5jZQorfSBMQ0VWQ1Jhd0FkZGl0aW9uYWxJbmZvOworCit0eXBlZGVmIHN0cnVjdCBMQ0VW Q1Jhd0ZpbGxlciB7CisgICAgdWludDMyX3QgZmlsbGVyX3NpemU7Cit9IExDRVZDUmF3RmlsbGVy OworCit0eXBlZGVmIHN0cnVjdCBMQ0VWQ1Jhd1Byb2Nlc3NCbG9jayB7CisgICAgdWludDMyX3Qg ICAgIHBheWxvYWRfdHlwZTsKKyAgICB1aW50MzJfdCAgICAgcGF5bG9hZF9zaXplOworICAgIHZv aWQgICAgICAgICpwYXlsb2FkOworICAgIHZvaWQgICAgICAgICpwYXlsb2FkX3JlZjsgICAgLy8v PCBSZWZTdHJ1Y3QgcmVmZXJlbmNlCit9IExDRVZDUmF3UHJvY2Vzc0Jsb2NrOworCit0eXBlZGVm IHN0cnVjdCBMQ0VWQ1Jhd1Byb2Nlc3NCbG9ja0xpc3QgeworICAgIExDRVZDUmF3UHJvY2Vzc0Js b2NrICpibG9ja3M7CisgICAgaW50ICAgICAgICAgbmJfYmxvY2tzOworICAgIGludCAgICAgICAg IG5iX2Jsb2Nrc19hbGxvY2F0ZWQ7Cit9IExDRVZDUmF3UHJvY2Vzc0Jsb2NrTGlzdDsKKwordHlw ZWRlZiBzdHJ1Y3QgTENFVkNSYXdOQUwgeworICAgIExDRVZDUmF3TkFMVW5pdEhlYWRlciBuYWxf dW5pdF9oZWFkZXI7CisKKyAgICBMQ0VWQ1Jhd1Byb2Nlc3NCbG9ja0xpc3QgcHJvY2Vzc19ibG9j a19saXN0OworfSBMQ0VWQ1Jhd05BTDsKKwordHlwZWRlZiBzdHJ1Y3QgTENFVkNQcm9jZXNzQmxv Y2tTdGF0ZSB7CisgICAgLy8gVGhlIHR5cGUgb2YgdGhlIHBheWxvYWQgYmVpbmcgd3JpdHRlbi4K KyAgICB1aW50MzJfdCBwYXlsb2FkX3R5cGU7CisgICAgLy8gV2hlbiByZWFkaW5nLCBjb250YWlu cyB0aGUgc2l6ZSBvZiB0aGUgcGF5bG9hZCB0byBhbGxvdyBmaW5kaW5nIHRoZQorICAgIC8vIGVu ZCBvZiB2YXJpYWJsZS1sZW5ndGggZmllbGRzIChzdWNoIGFzIHVzZXJfZGF0YV9wYXlsb2FkX2J5 dGVbXSkuCisgICAgLy8gKFdoZW4gd3JpdGluZywgdGhlIHNpemUgd2lsbCBiZSBkZXJpdmVkIGZy b20gdGhlIHRvdGFsIG51bWJlciBvZgorICAgIC8vIGJ5dGVzIGFjdHVhbGx5IHdyaXR0ZW4uKQor ICAgIHVpbnQzMl90IHBheWxvYWRfc2l6ZTsKK30gTENFVkNQcm9jZXNzQmxvY2tTdGF0ZTsKKwor dHlwZWRlZiBpbnQgKCpMQ0VWQ1Jhd1Byb2Nlc3NCbG9ja1JlYWRGdW5jdGlvbikoQ29kZWRCaXRz dHJlYW1Db250ZXh0ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBHZXRCaXRDb250ZXh0ICpydywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdm9pZCAqY3VycmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTENFVkNQcm9jZXNzQmxvY2tTdGF0ZSAqc2VpKTsKKwordHlwZWRlZiBpbnQgKCpMQ0VW Q1Jhd1Byb2Nlc3NCbG9ja1dyaXRlRnVuY3Rpb24pKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4 LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IFB1dEJpdENv bnRleHQgKnJ3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAq Y3VycmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExDRVZDUHJv Y2Vzc0Jsb2NrU3RhdGUgKnNlaSk7CisKK3R5cGVkZWYgc3RydWN0IExDRVZDUHJvY2Vzc0Jsb2Nr VHlwZURlc2NyaXB0b3IgeworICAgIC8vIFBheWxvYWQgdHlwZSBmb3IgdGhlIGJsb2NrLiAgKC0x IGluIHRoaXMgZmllbGQgZW5kcyBhIGxpc3QuKQorICAgIGludCAgICAgcGF5bG9hZF90eXBlOwor ICAgIC8vIFNpemUgb2YgdGhlIGRlY29tcG9zZWQgc3RydWN0dXJlLgorICAgIHNpemVfdCAgcGF5 bG9hZF9zaXplOworICAgIC8vIFJlYWQgYml0c3RyZWFtIGludG8gUHJvY2VzcyBCbG9jay4KKyAg ICBMQ0VWQ1Jhd1Byb2Nlc3NCbG9ja1JlYWRGdW5jdGlvbiAgcmVhZDsKKyAgICAvLyBXcml0ZSBi aXRzdHJlYW0gZnJvbSBQcm9jZXNzIEJsb2NrLgorICAgIExDRVZDUmF3UHJvY2Vzc0Jsb2NrV3Jp dGVGdW5jdGlvbiB3cml0ZTsKK30gTENFVkNQcm9jZXNzQmxvY2tUeXBlRGVzY3JpcHRvcjsKKwor Ly8gRW5kLW9mLWxpc3Qgc2VudGluZWwgZWxlbWVudC4KKyNkZWZpbmUgTENFVkNfUFJPQ0VTU19C TE9DS19UWVBFX0VORCB7IC5wYXlsb2FkX3R5cGUgPSAtMSB9CisKK3R5cGVkZWYgc3RydWN0IENv ZGVkQml0c3RyZWFtTENFVkNDb250ZXh0IHsKKyAgICAvLyBSZWFkZXIvd3JpdGVyIGNvbnRleHQg aW4gY29tbW9uIHdpdGggdGhlIEguMjY0IGltcGxlbWVudGF0aW9uLgorICAgIENvZGVkQml0c3Ry ZWFtSDI2NDVDb250ZXh0IGNvbW1vbjsKKworICAgIC8vIEFsbCBjdXJyZW50bHkgYXZhaWxhYmxl IHBhcmFtZXRlciBzZXRzLiAgVGhlc2UgYXJlIHVwZGF0ZWQgd2hlbgorICAgIC8vIGFueSBwYXJh bWV0ZXIgc2V0IE5BTCB1bml0IGlzIHJlYWQvd3JpdHRlbiB3aXRoIHRoaXMgY29udGV4dC4KKyAg ICBMQ0VWQ1Jhd1NlcXVlbmNlQ29uZmlnICpzYzsgLy8vPCBSZWZTdHJ1Y3QgcmVmZXJlbmNlcwor ICAgIExDRVZDUmF3R2xvYmFsQ29uZmlnICAgKmdjOyAvLy88IFJlZlN0cnVjdCByZWZlcmVuY2Vz CisgICAgTENFVkNSYXdQaWN0dXJlQ29uZmlnICAqcGM7IC8vLzwgUmVmU3RydWN0IHJlZmVyZW5j ZXMKK30gQ29kZWRCaXRzdHJlYW1MQ0VWQ0NvbnRleHQ7CisKKy8qKgorICogRmluZCB0aGUgdHlw ZSBkZXNjcmlwdG9yIGZvciB0aGUgZ2l2ZW4gcGF5bG9hZCB0eXBlLgorICoKKyAqIFJldHVybnMg TlVMTCBpZiB0aGUgcGF5bG9hZCB0eXBlIGlzIG5vdCBrbm93bi4KKyAqLworY29uc3QgTENFVkNQ cm9jZXNzQmxvY2tUeXBlRGVzY3JpcHRvciAqZmZfY2JzX2xjZXZjX3Byb2Nlc3NfYmxvY2tfZmlu ZF90eXBlKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGF5bG9hZF90eXBlKTsKKworLyoq CisgKiBBbGxvY2F0ZSBhIG5ldyBwYXlsb2FkIGZvciB0aGUgZ2l2ZW4gUHJvY2VzcyBCbG9jay4K KyAqLworaW50IGZmX2Nic19sY2V2Y19hbGxvY19wcm9jZXNzX2Jsb2NrX3BheWxvYWQoTENFVkNS YXdQcm9jZXNzQmxvY2sgKmJsb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IExDRVZDUHJvY2Vzc0Jsb2NrVHlwZURlc2NyaXB0b3IgKmRlc2MpOworCisvKioK KyAqIEFsbG9jYXRlIGEgbmV3IGVtcHR5IFByb2Nlc3MgQmxvY2sgaW4gYSBibG9jayBsaXN0Lgor ICoKKyAqIFRoZSBuZXcgYmxvY2sgaXMgaW4gcGxhY2UgbmJfYmxvY2tzIC0gMS4KKyAqLworaW50 IGZmX2Nic19sY2V2Y19saXN0X2FkZChMQ0VWQ1Jhd1Byb2Nlc3NCbG9ja0xpc3QgKmxpc3QpOwor CisvKioKKyAqIEZyZWUgYWxsIFByb2Nlc3MgQmxvY2sgaW4gYSBibG9jayBsaXN0LgorICovCit2 b2lkIGZmX2Nic19sY2V2Y19mcmVlX3Byb2Nlc3NfYmxvY2tfbGlzdChMQ0VWQ1Jhd1Byb2Nlc3NC bG9ja0xpc3QgKmxpc3QpOworCisjZW5kaWYgLyogQVZDT0RFQ19DQlNfTENFVkNfSCAqLwpkaWZm IC0tZ2l0IGEvbGliYXZjb2RlYy9jYnNfbGNldmNfc3ludGF4X3RlbXBsYXRlLmMgYi9saWJhdmNv ZGVjL2Nic19sY2V2Y19zeW50YXhfdGVtcGxhdGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwLi41NTJhOWUyNzFkCi0tLSAvZGV2L251bGwKKysrIGIvbGliYXZjb2RlYy9j YnNfbGNldmNfc3ludGF4X3RlbXBsYXRlLmMKQEAgLTAsMCArMSw1NjkgQEAKKy8qCisgKiBUaGlz IGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCisgKgorICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u IDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KKyAqCisgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl IGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisg KiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0 b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgKi8KKworc3RhdGljIGludCBGVU5DKGJ5dGVfYWxpZ25t ZW50KShDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgUldDb250ZXh0ICpydykKK3sKKyAgICBp bnQgZXJyOworCisgICAgLy8gSVNPL0lFQyAyMzA5NC0yOjIwMjEvRkRBTSAxOjIwMjMoRSkgNy4z LjEyCisgICAgd2hpbGUgKGJ5dGVfYWxpZ25tZW50KHJ3KSAhPSAwKQorICAgICAgICBmaXhlZCgx LCBhbGlnbm1lbnRfYml0X2VxdWFsX3RvX3plcm8sIDApOworCisgICAgcmV0dXJuIDA7Cit9CisK K3N0YXRpYyBpbnQgRlVOQyhyYnNwX3RyYWlsaW5nX2JpdHMpKENvZGVkQml0c3RyZWFtQ29udGV4 dCAqY3R4LCBSV0NvbnRleHQgKnJ3KQoreworICAgIGludCBlcnI7CisKKyAgICBmaXhlZCgxLCBy YnNwX3N0b3Bfb25lX2JpdCwgMSk7CisgICAgd2hpbGUgKGJ5dGVfYWxpZ25tZW50KHJ3KSAhPSAw KQorICAgICAgICBmaXhlZCgxLCByYnNwX2FsaWdubWVudF96ZXJvX2JpdCwgMCk7CisKKyAgICBy ZXR1cm4gMDsKK30KKworc3RhdGljIGludCBGVU5DKG5hbF91bml0X2hlYWRlcikoQ29kZWRCaXRz dHJlYW1Db250ZXh0ICpjdHgsIFJXQ29udGV4dCAqcncsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBMQ0VWQ1Jhd05BTFVuaXRIZWFkZXIgKmN1cnJlbnQsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB2YWxpZF90eXBlX21hc2spCit7CisgICAgaW50 IGVycjsKKworICAgIGZpeGVkKDEsIGZvcmJpZGRlbl96ZXJvX2JpdCwgMCk7CisgICAgZml4ZWQo MSwgZm9yYmlkZGVuX29uZV9iaXQsIDEpOworICAgIHViKDUsIG5hbF91bml0X3R5cGUpOworCisg ICAgaWYgKCEoMSA8PCBjdXJyZW50LT5uYWxfdW5pdF90eXBlICYgdmFsaWRfdHlwZV9tYXNrKSkg eworICAgICAgICBhdl9sb2coY3R4LT5sb2dfY3R4LCBBVl9MT0dfRVJST1IsICJJbnZhbGlkIE5B TCB1bml0IHR5cGUgJWQuXG4iLAorICAgICAgICAgICAgICAgY3VycmVudC0+bmFsX3VuaXRfdHlw ZSk7CisgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworICAgIH0KKworICAgIHVi KDksIHJlc2VydmVkX2ZsYWcpOworCisgICAgcmV0dXJuIDA7Cit9CisKK0xDRVZDX0JMT0NLX0ZV TkMoZ2xvYmFsX2NvbmZpZywgKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBSV0NvbnRleHQg KnJ3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTENFVkNSYXdHbG9iYWxDb25m aWcgKmN1cnJlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMQ0VWQ1Byb2Nl c3NCbG9ja1N0YXRlICpzdGF0ZSkpCit7CisgICAgQ29kZWRCaXRzdHJlYW1MQ0VWQ0NvbnRleHQg KnByaXYgPSBjdHgtPnByaXZfZGF0YTsKKyAgICBpbnQgZXJyOworCisgICAgSEVBREVSKCJHbG9i YWwgQ29uZmlnIik7CisKKyAgICBmbGFnKHByb2Nlc3NlZF9wbGFuZXNfdHlwZV9mbGFnKTsKKyAg ICB1Yig2LCByZXNvbHV0aW9uX3R5cGUpOworICAgIHViKDEsIHRyYW5zZm9ybV90eXBlKTsKKyAg ICB1YigyLCBjaHJvbWFfc2FtcGxpbmdfdHlwZSk7CisgICAgdWIoMiwgYmFzZV9kZXB0aF90eXBl KTsKKyAgICB1YigyLCBlbmhhbmNlbWVudF9kZXB0aF90eXBlKTsKKyAgICBmbGFnKHRlbXBvcmFs X3N0ZXBfd2lkdGhfbW9kaWZpZXJfc2lnbmFsbGVkX2ZsYWcpOworICAgIGZsYWcocHJlZGljdGVk X3Jlc2lkdWFsX21vZGVfZmxhZyk7CisgICAgZmxhZyh0ZW1wb3JhbF90aWxlX2ludHJhX3NpZ25h bGxpbmdfZW5hYmxlZF9mbGFnKTsKKyAgICBmbGFnKHRlbXBvcmFsX2VuYWJsZWRfZmxhZyk7Cisg ICAgdWIoMywgdXBzYW1wbGVfdHlwZSk7CisgICAgZmxhZyhsZXZlbDFfZmlsdGVyaW5nX3NpZ25h bGxlZF9mbGFnKTsKKyAgICB1YigyLCBzY2FsaW5nX21vZGVfbGV2ZWwxKTsKKyAgICB1YigyLCBz Y2FsaW5nX21vZGVfbGV2ZWwyKTsKKyAgICB1YigyLCB0aWxlX2RpbWVuc2lvbnNfdHlwZSk7Cisg ICAgdWIoMiwgdXNlcl9kYXRhX2VuYWJsZWQpOworICAgIGZsYWcobGV2ZWwxX2RlcHRoX2ZsYWcp OworICAgIGZsYWcoY2hyb21hX3N0ZXBfd2lkdGhfZmxhZyk7CisKKyAgICBpZiAoY3VycmVudC0+ cHJvY2Vzc2VkX3BsYW5lc190eXBlX2ZsYWcpIHsKKyAgICAgICAgdWIoNCwgcGxhbmVzX3R5cGUp OworICAgICAgICB1Yig0LCByZXNlcnZlZF96ZXJvc180Yml0KTsKKyAgICB9IGVsc2UKKyAgICAg ICAgaW5mZXIocGxhbmVzX3R5cGUsIDApOworCisgICAgaWYgKGN1cnJlbnQtPnRlbXBvcmFsX3N0 ZXBfd2lkdGhfbW9kaWZpZXJfc2lnbmFsbGVkX2ZsYWcpIHsKKyAgICAgICAgdWIoOCwgdGVtcG9y YWxfc3RlcF93aWR0aF9tb2RpZmllcik7CisgICAgfQorCisgICAgaWYgKGN1cnJlbnQtPnVwc2Ft cGxlX3R5cGUgPT0gNCkgeworICAgICAgICB1YigxNiwgdXBzYW1wbGVyX2NvZWZmMSk7CisgICAg ICAgIHViKDE2LCB1cHNhbXBsZXJfY29lZmYyKTsKKyAgICAgICAgdWIoMTYsIHVwc2FtcGxlcl9j b2VmZjMpOworICAgICAgICB1YigxNiwgdXBzYW1wbGVyX2NvZWZmNCk7CisgICAgfQorCisgICAg aWYgKGN1cnJlbnQtPmxldmVsMV9maWx0ZXJpbmdfc2lnbmFsbGVkX2ZsYWcpIHsKKyAgICAgICAg dWIoNCwgbGV2ZWwxX2ZpbHRlcmluZ19maXJzdF9jb2VmZmljaWVudCk7CisgICAgICAgIHViKDQs IGxldmVsMV9maWx0ZXJpbmdfc2Vjb25kX2NvZWZmaWNpZW50KTsKKyAgICB9CisKKyAgICBpZiAo Y3VycmVudC0+dGlsZV9kaW1lbnNpb25zX3R5cGUgPiAwKSB7CisgICAgICAgIGlmIChjdXJyZW50 LT50aWxlX2RpbWVuc2lvbnNfdHlwZSA9PSAzKSB7CisgICAgICAgICAgICB1YigxNiwgY3VzdG9t X3RpbGVfd2lkdGgpOworICAgICAgICAgICAgdWIoMTYsIGN1c3RvbV90aWxlX2hlaWdodCk7Cisg ICAgICAgIH0KKyAgICAgICAgdWIoNSwgcmVzZXJ2ZWRfemVyb3NfNWJpdCk7CisgICAgICAgIGZs YWcoY29tcHJlc3Npb25fdHlwZV9lbnRyb3B5X2VuYWJsZWRfcGVyX3RpbGVfZmxhZyk7CisgICAg ICAgIHViKDIsIGNvbXByZXNzaW9uX3R5cGVfc2l6ZV9wZXJfdGlsZSk7CisgICAgfQorCisgICAg aWYgKGN1cnJlbnQtPnJlc29sdXRpb25fdHlwZSA9PSA2MykgeworICAgICAgICB1YigxNiwgY3Vz dG9tX3Jlc29sdXRpb25fd2lkdGgpOworICAgICAgICB1YigxNiwgY3VzdG9tX3Jlc29sdXRpb25f aGVpZ2h0KTsKKyAgICB9CisgICAgaWYgKGN1cnJlbnQtPmNocm9tYV9zdGVwX3dpZHRoX2ZsYWcp IHsKKyAgICAgICAgdWIoOCwgY2hyb21hX3N0ZXBfd2lkdGhfbXVsdGlwbGllcik7CisgICAgfSBl bHNlIHsKKyAgICAgICAgaW5mZXIoY2hyb21hX3N0ZXBfd2lkdGhfbXVsdGlwbGllciwgNjQpOwor ICAgIH0KKworICAgIGF2X3JlZnN0cnVjdF9yZXBsYWNlKCZwcml2LT5nYywgY3VycmVudCk7CisK KyAgICByZXR1cm4gMDsKK30KKworTENFVkNfQkxPQ0tfRlVOQyhzZXF1ZW5jZV9jb25maWcsIChD b2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgUldDb250ZXh0ICpydywKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTENFVkNSYXdTZXF1ZW5jZUNvbmZpZyAqY3VycmVudCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTENFVkNQcm9jZXNzQmxvY2tTdGF0ZSAq c3RhdGUpKQoreworICAgIENvZGVkQml0c3RyZWFtTENFVkNDb250ZXh0ICpwcml2ID0gY3R4LT5w cml2X2RhdGE7CisgICAgaW50IGVycjsKKworICAgIEhFQURFUigiU2VxdWVuY2UgQ29uZmlnIik7 CisKKyAgICB1Yig0LCBwcm9maWxlX2lkYyk7CisgICAgdWIoNCwgbGV2ZWxfaWRjKTsKKyAgICB1 YigyLCBzdWJsZXZlbF9pZGMpOworICAgIGZsYWcoY29uZm9ybWFuY2Vfd2luZG93X2ZsYWcpOwor ICAgIHViKDUsIHJlc2VydmVkX3plcm9zXzViaXQpOworCisgICAgaWYgKGN1cnJlbnQtPnByb2Zp bGVfaWRjID09IDE1IHx8IGN1cnJlbnQtPmxldmVsX2lkYyA9PSAxNSkgeworICAgICAgICB1Yigz LCBwcm9maWxlX2lkYyk7CisgICAgICAgIHViKDQsIGxldmVsX2lkYyk7CisgICAgICAgIHViKDEs IHJlc2VydmVkX3plcm9zXzFiaXQpOworICAgIH0KKyAgICBpZiAoY3VycmVudC0+Y29uZm9ybWFu Y2Vfd2luZG93X2ZsYWcgPT0gMSkgeworICAgICAgICBtYihjb25mX3dpbl9sZWZ0X29mZnNldCk7 CisgICAgICAgIG1iKGNvbmZfd2luX3JpZ2h0X29mZnNldCk7CisgICAgICAgIG1iKGNvbmZfd2lu X3RvcF9vZmZzZXQpOworICAgICAgICBtYihjb25mX3dpbl9ib3R0b21fb2Zmc2V0KTsKKyAgICB9 CisKKyAgICBhdl9yZWZzdHJ1Y3RfcmVwbGFjZSgmcHJpdi0+c2MsIGN1cnJlbnQpOworCisgICAg cmV0dXJuIDA7Cit9CisKK0xDRVZDX0JMT0NLX0ZVTkMocGljdHVyZV9jb25maWcsIChDb2RlZEJp dHN0cmVhbUNvbnRleHQgKmN0eCwgUldDb250ZXh0ICpydywKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBMQ0VWQ1Jhd1BpY3R1cmVDb25maWcgKmN1cnJlbnQsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTENFVkNQcm9jZXNzQmxvY2tTdGF0ZSAqc3RhdGUpKQor eworICAgIENvZGVkQml0c3RyZWFtTENFVkNDb250ZXh0ICpwcml2ID0gY3R4LT5wcml2X2RhdGE7 CisgICAgaW50IG5sYXllcnMsIGVycjsKKworICAgIEhFQURFUigiUGljdHVyZSBDb25maWciKTsK KworICAgIGlmICghcHJpdi0+Z2MpCisgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRB OworCisgICAgZmxhZyhub19lbmhhbmNlbWVudF9iaXRfZmxhZyk7CisgICAgaWYgKGN1cnJlbnQt Pm5vX2VuaGFuY2VtZW50X2JpdF9mbGFnID09IDApIHsKKyAgICAgICAgdWIoMywgcXVhbnRfbWF0 cml4X21vZGUpOworICAgICAgICBmbGFnKGRlcXVhbnRfb2Zmc2V0X3NpZ25hbGxlZF9mbGFnKTsK KyAgICAgICAgZmxhZyhwaWN0dXJlX3R5cGVfYml0X2ZsYWcpOworICAgICAgICBmbGFnKHRlbXBv cmFsX3JlZnJlc2hfYml0X2ZsYWcpOworICAgICAgICBmbGFnKHN0ZXBfd2lkdGhfc3VibGF5ZXIx X2VuYWJsZWRfZmxhZyk7CisgICAgICAgIHViKDE1LCBzdGVwX3dpZHRoX3N1YmxheWVyMik7Cisg ICAgICAgIGZsYWcoZGl0aGVyaW5nX2NvbnRyb2xfZmxhZyk7CisgICAgICAgIGluZmVyKHRlbXBv cmFsX3NpZ25hbGxpbmdfcHJlc2VudF9mbGFnLCAwKTsKKyAgICB9IGVsc2UgeworICAgICAgICB1 Yig0LCByZXNlcnZlZF96ZXJvc180Yml0KTsKKyAgICAgICAgZmxhZyhwaWN0dXJlX3R5cGVfYml0 X2ZsYWcpOworICAgICAgICBmbGFnKHRlbXBvcmFsX3JlZnJlc2hfYml0X2ZsYWcpOworICAgICAg ICBmbGFnKHRlbXBvcmFsX3NpZ25hbGxpbmdfcHJlc2VudF9mbGFnKTsKKyAgICB9CisKKyAgICBp ZiAoY3VycmVudC0+cGljdHVyZV90eXBlX2JpdF9mbGFnID09IDEpIHsKKyAgICAgICAgZmxhZyhm aWVsZF90eXBlX2JpdF9mbGFnKTsKKyAgICAgICAgdWIoNywgcmVzZXJ2ZWRfemVyb3NfN2JpdCk7 CisgICAgfQorCisgICAgaWYgKGN1cnJlbnQtPnN0ZXBfd2lkdGhfc3VibGF5ZXIxX2VuYWJsZWRf ZmxhZyA9PSAxKSB7CisgICAgICAgIHViKDE1LCBzdGVwX3dpZHRoX3N1YmxheWVyMSk7CisgICAg ICAgIGZsYWcobGV2ZWwxX2ZpbHRlcmluZ19lbmFibGVkX2ZsYWcpOworICAgIH0KKworICAgIG5s YXllcnMgPSBwcml2LT5nYy0+dHJhbnNmb3JtX3R5cGUgPyAxNiA6IDQ7CisgICAgaWYgKGN1cnJl bnQtPnF1YW50X21hdHJpeF9tb2RlID09IDIgfHwKKyAgICAgICAgY3VycmVudC0+cXVhbnRfbWF0 cml4X21vZGUgPT0gMyB8fAorICAgICAgICBjdXJyZW50LT5xdWFudF9tYXRyaXhfbW9kZSA9PSA1 KSB7CisgICAgICAgIGZvciAoaW50IGxheWVyX2lkeCA9IDA7IGxheWVyX2lkeCA8IG5sYXllcnM7 IGxheWVyX2lkeCsrKQorICAgICAgICAgICAgdWJzKDgsIHFtX2NvZWZmaWNpZW50XzBbbGF5ZXJf aWR4XSwgMSwgbGF5ZXJfaWR4KTsKKyAgICB9CisKKyAgICBpZiAoY3VycmVudC0+cXVhbnRfbWF0 cml4X21vZGUgPT0gNCB8fCBjdXJyZW50LT5xdWFudF9tYXRyaXhfbW9kZSA9PSA1KSB7CisgICAg ICAgIGZvciAoaW50IGxheWVyX2lkeCA9IDA7IGxheWVyX2lkeCA8IG5sYXllcnM7IGxheWVyX2lk eCsrKQorICAgICAgICAgICAgdWJzKDgsIHFtX2NvZWZmaWNpZW50XzFbbGF5ZXJfaWR4XSwgMSwg bGF5ZXJfaWR4KTsKKyAgICB9CisKKyAgICBpZiAoY3VycmVudC0+ZGVxdWFudF9vZmZzZXRfc2ln bmFsbGVkX2ZsYWcpIHsKKyAgICAgICAgZmxhZyhkZXF1YW50X29mZnNldF9tb2RlX2ZsYWcpOwor ICAgICAgICB1Yig3LCBkZXF1YW50X29mZnNldCk7CisgICAgfQorCisgICAgaWYgKGN1cnJlbnQt PmRpdGhlcmluZ19jb250cm9sX2ZsYWcgPT0gMSkgeworICAgICAgICB1YigyLCBkaXRoZXJpbmdf dHlwZSk7CisgICAgICAgIHViKDEsIHJlc2VydmVyZF96ZXJvKTsKKyAgICAgICAgaWYgKGN1cnJl bnQtPmRpdGhlcmluZ190eXBlICE9IDApIHsKKyAgICAgICAgICAgIHViKDUsIGRpdGhlcmluZ19z dHJlbmd0aCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB1Yig1LCByZXNlcnZlZF96 ZXJvc181Yml0KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGF2X3JlZnN0cnVjdF9yZXBsYWNl KCZwcml2LT5wYywgY3VycmVudCk7CisgICAgYXZfcmVmc3RydWN0X3JlcGxhY2UoJmN1cnJlbnQt PmdjLCBwcml2LT5nYyk7CisKKyAgICByZXR1cm4gMDsKK30KKworTENFVkNfQkxPQ0tfRlVOQyhl bmNvZGVkX2RhdGEsIChDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgUldDb250ZXh0ICpydywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTENFVkNSYXdFbmNvZGVkRGF0YSAqY3Vy cmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTENFVkNQcm9jZXNzQmxvY2tT dGF0ZSAqc3RhdGUpKQoreworICAgIENvZGVkQml0c3RyZWFtTENFVkNDb250ZXh0ICpwcml2ID0g Y3R4LT5wcml2X2RhdGE7CisgICAgaW50IG5wbGFuZXMsIG5sYXllcnMsIGVycjsKKyNpZmRlZiBS RUFECisgICAgaW50IHN0YXJ0ID0gZ2V0X2JpdHNfY291bnQocncpOworI2VuZGlmCisKKyAgICBI RUFERVIoIkVuY29kZWQgRGF0YSIpOworCisgICAgaWYgKCFwcml2LT5nYyB8fCAhcHJpdi0+cGMp CisgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworCisgICAgbnBsYW5lcyA9IHBy aXYtPmdjLT5wbGFuZXNfdHlwZSA/IDMgOiAxOworICAgIG5sYXllcnMgPSBwcml2LT5nYy0+dHJh bnNmb3JtX3R5cGUgPyAxNiA6IDQ7CisgICAgZm9yIChpbnQgcGxhbmVfaWR4ID0gMDsgcGxhbmVf aWR4IDwgbnBsYW5lczsgcGxhbmVfaWR4KyspIHsKKyAgICAgICAgaWYgKHByaXYtPnBjLT5ub19l bmhhbmNlbWVudF9iaXRfZmxhZyA9PSAwKSB7CisgICAgICAgICAgICBmb3IgKGludCBsZXZlbF9p ZHggPSAxOyBsZXZlbF9pZHggPD0gMjsgbGV2ZWxfaWR4KyspIHsKKyAgICAgICAgICAgICAgICBm b3IgKGludCBsYXllcl9pZHggPSAwOyBsYXllcl9pZHggPCBubGF5ZXJzOyBsYXllcl9pZHgrKykg eworICAgICAgICAgICAgICAgICAgICB1YnMoMSwgc3VyZmFjZXNfZW50cm9weV9lbmFibGVkX2Zs YWdbcGxhbmVfaWR4XVtsZXZlbF9pZHhdW2xheWVyX2lkeF0sIDMsIHBsYW5lX2lkeCwgbGV2ZWxf aWR4LCBsYXllcl9pZHgpOworICAgICAgICAgICAgICAgICAgICB1YnMoMSwgc3VyZmFjZXNfcmxl X29ubHlfZmxhZ1twbGFuZV9pZHhdW2xldmVsX2lkeF1bbGF5ZXJfaWR4XSwgMywgcGxhbmVfaWR4 LCBsZXZlbF9pZHgsIGxheWVyX2lkeCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg fQorICAgICAgICB9CisgICAgICAgIGlmIChwcml2LT5wYy0+dGVtcG9yYWxfc2lnbmFsbGluZ19w cmVzZW50X2ZsYWcgPT0gMSkgeworICAgICAgICAgICAgdWJzKDEsIHRlbXBvcmFsX3N1cmZhY2Vz X2VudHJvcHlfZW5hYmxlZF9mbGFnW3BsYW5lX2lkeF0sIDEsIHBsYW5lX2lkeCk7CisgICAgICAg ICAgICB1YnMoMSwgdGVtcG9yYWxfc3VyZmFjZXNfcmxlX29ubHlfZmxhZ1twbGFuZV9pZHhdLCAx LCBwbGFuZV9pZHgpOworICAgICAgICB9CisgICAgfQorCisgICAgQ0hFQ0soRlVOQyhieXRlX2Fs aWdubWVudCkoY3R4LCBydykpOworCisjaWZkZWYgUkVBRAorICAgIGlmICghY2JzX2gyNjQ1X3Jl YWRfbW9yZV9yYnNwX2RhdGEocncpKQorICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFU QTsKKworICAgIGludCBwb3MgPSBnZXRfYml0c19jb3VudChydykgLSBzdGFydDsKKyAgICBpbnQg bGVuID0gc3RhdGUtPnBheWxvYWRfc2l6ZTsKKworICAgIGN1cnJlbnQtPmhlYWRlcl9zaXplID0g cG9zIC8gODsKKyAgICBjdXJyZW50LT5kYXRhX3NpemUgPSBsZW4gLSBwb3MgLyA4OworI2Vsc2UK KyAgICBlcnIgPSBjYnNfaDI2NDVfd3JpdGVfc2xpY2VfZGF0YShjdHgsIHJ3LCBjdXJyZW50LT5k YXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQtPmRhdGFf c2l6ZSwgMCk7CisgICAgaWYgKGVyciA8IDApCisgICAgICAgIHJldHVybiBlcnI7CisjZW5kaWYK KworICAgIGF2X3JlZnN0cnVjdF9yZXBsYWNlKCZjdXJyZW50LT5zYywgcHJpdi0+c2MpOworICAg IGF2X3JlZnN0cnVjdF9yZXBsYWNlKCZjdXJyZW50LT5nYywgcHJpdi0+Z2MpOworICAgIGF2X3Jl ZnN0cnVjdF9yZXBsYWNlKCZjdXJyZW50LT5wYywgcHJpdi0+cGMpOworCisgICAgcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyBpbnQgRlVOQyhzZWlfcGF5bG9hZCkoQ29kZWRCaXRzdHJlYW1Db250ZXh0 ICpjdHgsIFJXQ29udGV4dCAqcncsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFSVJh d01lc3NhZ2UgKmN1cnJlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwYXls b2FkX3R5cGUsIGludCBwYXlsb2FkX3NpemUpCit7CisgICAgaW50IHNlaV90eXBlOworICAgIGlu dCBlcnI7CisKKyAgICBpZiAocGF5bG9hZF90eXBlID09IDEpCisgICAgICAgIHNlaV90eXBlID0g U0VJX1RZUEVfTUFTVEVSSU5HX0RJU1BMQVlfQ09MT1VSX1ZPTFVNRTsKKyAgICBlbHNlIGlmIChw YXlsb2FkX3R5cGUgPT0gMikKKyAgICAgICAgc2VpX3R5cGUgPSBTRUlfVFlQRV9DT05URU5UX0xJ R0hUX0xFVkVMX0lORk87CisgICAgZWxzZSBpZiAocGF5bG9hZF90eXBlID09IDQpCisgICAgICAg IHNlaV90eXBlID0gU0VJX1RZUEVfVVNFUl9EQVRBX1JFR0lTVEVSRURfSVRVX1RfVDM1OworICAg IGVsc2UgaWYgKHBheWxvYWRfdHlwZSA9PSA1KQorICAgICAgICBzZWlfdHlwZSA9IFNFSV9UWVBF X1VTRVJfREFUQV9VTlJFR0lTVEVSRUQ7CisKKyAgICBjdXJyZW50LT5wYXlsb2FkX3R5cGUgPSBz ZWlfdHlwZTsKKyAgICBjdXJyZW50LT5wYXlsb2FkX3NpemUgPSBwYXlsb2FkX3NpemU7CisKKyAg ICBDSEVDSyhGVU5DX1NFSShtZXNzYWdlKShjdHgsIHJ3LCBjdXJyZW50KSk7CisKKyAgICByZXR1 cm4gMDsKK30KKworc3RhdGljIGludCBGVU5DKHZ1aV9wYXJhbWV0ZXJzKShDb2RlZEJpdHN0cmVh bUNvbnRleHQgKmN0eCwgUldDb250ZXh0ICpydywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTENFVkNSYXdWVUkgKmN1cnJlbnQpCit7CisgICAgaW50IGVycjsKKworICAgIEhFQURF UigiVlVJIFBhcmFtZXRlcnMiKTsKKworICAgIGZsYWcoYXNwZWN0X3JhdGlvX2luZm9fcHJlc2Vu dF9mbGFnKTsKKyAgICBpZiAoY3VycmVudC0+YXNwZWN0X3JhdGlvX2luZm9fcHJlc2VudF9mbGFn KSB7CisgICAgICAgIHViKDgsIGFzcGVjdF9yYXRpb19pZGMpOworCisgICAgICAgIGlmIChjdXJy ZW50LT5hc3BlY3RfcmF0aW9faWRjID09IDI1NSkgeworICAgICAgICAgICAgdWIoMTYsIHNhcl93 aWR0aCk7CisgICAgICAgICAgICB1YigxNiwgc2FyX2hlaWdodCk7CisgICAgICAgIH0KKyAgICB9 CisKKyAgICBmbGFnKG92ZXJzY2FuX2luZm9fcHJlc2VudF9mbGFnKTsKKyAgICBpZiAoY3VycmVu dC0+b3ZlcnNjYW5faW5mb19wcmVzZW50X2ZsYWcpCisgICAgICAgIGZsYWcob3ZlcnNjYW5fYXBw cm9wcmlhdGVfZmxhZyk7CisKKyAgICBmbGFnKHZpZGVvX3NpZ25hbF90eXBlX3ByZXNlbnRfZmxh Zyk7CisgICAgaWYgKGN1cnJlbnQtPnZpZGVvX3NpZ25hbF90eXBlX3ByZXNlbnRfZmxhZykgewor ICAgICAgICB1YigzLCB2aWRlb19mb3JtYXQpOworICAgICAgICBmbGFnKHZpZGVvX2Z1bGxfcmFu Z2VfZmxhZyk7CisgICAgICAgIGZsYWcoY29sb3VyX2Rlc2NyaXB0aW9uX3ByZXNlbnRfZmxhZyk7 CisgICAgICAgIGlmIChjdXJyZW50LT5jb2xvdXJfZGVzY3JpcHRpb25fcHJlc2VudF9mbGFnKSB7 CisgICAgICAgICAgICB1Yig4LCBjb2xvdXJfcHJpbWFyaWVzKTsKKyAgICAgICAgICAgIHViKDgs IHRyYW5zZmVyX2NoYXJhY3RlcmlzdGljcyk7CisgICAgICAgICAgICB1Yig4LCBtYXRyaXhfY29l ZmZpY2llbnRzKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBmbGFnKGNocm9tYV9sb2NfaW5mb19w cmVzZW50X2ZsYWcpOworICAgIGlmIChjdXJyZW50LT5jaHJvbWFfbG9jX2luZm9fcHJlc2VudF9m bGFnKSB7CisgICAgICAgIHVlKGNocm9tYV9zYW1wbGVfbG9jX3R5cGVfdG9wX2ZpZWxkLCAwLCA1 KTsKKyAgICAgICAgdWUoY2hyb21hX3NhbXBsZV9sb2NfdHlwZV9ib3R0b21fZmllbGQsIDAsIDUp OworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitMQ0VWQ19CTE9DS19GVU5DKGFkZGl0aW9u YWxfaW5mbywgKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBSV0NvbnRleHQgKnJ3LAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMQ0VWQ1Jhd0FkZGl0aW9uYWxJbmZvICpj dXJyZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMQ0VWQ1Byb2Nlc3NC bG9ja1N0YXRlICpzdGF0ZSkpCit7CisgICAgaW50IGVyciwgaTsKKworICAgIEhFQURFUigiQWRk aXRpb25hbCBJbmZvIik7CisKKyAgICB1Yig4LCBhZGRpdGlvbmFsX2luZm9fdHlwZSk7CisKKyAg ICBpZiAoY3VycmVudC0+YWRkaXRpb25hbF9pbmZvX3R5cGUgPT0gTENFVkNfQURESVRJT05BTF9J TkZPX1RZUEVfU0VJKSB7CisgICAgICAgIHViKDgsIHBheWxvYWRfdHlwZSk7CisgICAgICAgIENI RUNLKEZVTkMoc2VpX3BheWxvYWQpKGN0eCwgcncsICZjdXJyZW50LT5zZWksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQtPnBheWxvYWRfdHlwZSwgc3RhdGUtPnBheWxv YWRfc2l6ZSAtIDIpKTsKKyAgICB9IGVsc2UgaWYgKGN1cnJlbnQtPmFkZGl0aW9uYWxfaW5mb190 eXBlID09IExDRVZDX0FERElUSU9OQUxfSU5GT19UWVBFX1ZVSSkKKyAgICAgICAgQ0hFQ0soRlVO Qyh2dWlfcGFyYW1ldGVycykoY3R4LCBydywgJmN1cnJlbnQtPnZ1aSkpOworICAgIGVsc2Ugewor ICAgICAgICB1aW50OF90ICpkYXRhOworCisgICAgICAgIGFsbG9jYXRlKGN1cnJlbnQtPnBheWxv YWRfcmVmLCBzdGF0ZS0+cGF5bG9hZF9zaXplIC0gMSk7CisgICAgICAgIGN1cnJlbnQtPnBheWxv YWRfc2l6ZSA9IHN0YXRlLT5wYXlsb2FkX3NpemUgLSAxOworICAgICAgICBjdXJyZW50LT5wYXls b2FkID0gY3VycmVudC0+cGF5bG9hZF9yZWY7CisgICAgICAgIGRhdGEgPSBjdXJyZW50LT5wYXls b2FkOworCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjdXJyZW50LT5wYXlsb2FkX3NpemU7IGkr KykKKyAgICAgICAgICAgIHh1KDgsIGFkZGl0aW9uYWxfaW5mb19ieXRlW2ldLCBkYXRhW2ldLCAw LCAyNTUsIDEsIGkpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitMQ0VWQ19CTE9DS19G VU5DKGZpbGxlciwgKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LCBSV0NvbnRleHQgKnJ3LAor ICAgICAgICAgICAgICAgICAgICAgICAgICBMQ0VWQ1Jhd0ZpbGxlciAqY3VycmVudCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgTENFVkNQcm9jZXNzQmxvY2tTdGF0ZSAqc3RhdGUpKQorewor ICAgIGludCBlcnI7CisKKyAgICBIRUFERVIoIkZpbGxlciIpOworCisKKyNpZmRlZiBSRUFECisg ICAgd2hpbGUgKHNob3dfYml0cyhydywgOCkgPT0gMHhhYSkgeworICAgICAgICBmaXhlZCg4LCBm aWxsZXJfYnl0ZSwgMHhhYSk7CisgICAgICAgICsrY3VycmVudC0+ZmlsbGVyX3NpemU7CisgICAg fQorICAgIGlmIChzdGF0ZS0+cGF5bG9hZF9zaXplICE9IGN1cnJlbnQtPmZpbGxlcl9zaXplKQor ICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKworI2Vsc2UKKyAgICBmb3IgKGlu dCBpID0gMDsgaSA8IGN1cnJlbnQtPmZpbGxlcl9zaXplOyBpKyspCisgICAgICAgIGZpeGVkKDgs IGZpbGxlcl9ieXRlLCAweGFhKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRp YyBpbnQgRlVOQyhwcm9jZXNzX2Jsb2NrKShDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgUldD b250ZXh0ICpydywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMQ0VWQ1Jhd1Byb2Nl c3NCbG9jayAqY3VycmVudCkKK3sKKyAgICBjb25zdCBMQ0VWQ1Byb2Nlc3NCbG9ja1R5cGVEZXNj cmlwdG9yICpkZXNjOworICAgIGludCBlcnIsIGk7CisKKyAgICBkZXNjID0gZmZfY2JzX2xjZXZj X3Byb2Nlc3NfYmxvY2tfZmluZF90eXBlKGN0eCwgY3VycmVudC0+cGF5bG9hZF90eXBlKTsKKyAg ICBpZiAoZGVzYykgeworICAgICAgICBMQ0VWQ1Byb2Nlc3NCbG9ja1N0YXRlIHN0YXRlID0gewor ICAgICAgICAgICAgLnBheWxvYWRfdHlwZSAgICAgID0gY3VycmVudC0+cGF5bG9hZF90eXBlLAor ICAgICAgICAgICAgLnBheWxvYWRfc2l6ZSAgICAgID0gY3VycmVudC0+cGF5bG9hZF9zaXplLAor ICAgICAgICB9OworI2lmZGVmIFJFQUQKKyAgICAgICAgQ0hFQ0soZmZfY2JzX2xjZXZjX2FsbG9j X3Byb2Nlc3NfYmxvY2tfcGF5bG9hZChjdXJyZW50LCBkZXNjKSk7CisjZWxzZQorICAgICAgICBp bnQgc3RhcnRfcG9zaXRpb24gPSBiaXRfcG9zaXRpb24ocncpOworI2VuZGlmCisKKyAgICAgICAg Q0hFQ0soZGVzYy0+UkVBRFdSSVRFKGN0eCwgcncsIGN1cnJlbnQtPnBheWxvYWQsICZzdGF0ZSkp OworCisgICAgICAgIGF2X2Fzc2VydDAoIWJ5dGVfYWxpZ25tZW50KHJ3KSk7CisjaWZkZWYgV1JJ VEUKKyAgICAgICAgY3VycmVudC0+cGF5bG9hZF9zaXplID0gKGJpdF9wb3NpdGlvbihydykgLSBz dGFydF9wb3NpdGlvbikgLyA4OworI2VuZGlmCisgICAgfSBlbHNlIHsKKyAgICAgICAgdWludDhf dCAqZGF0YTsKKworI2lmZGVmIFJFQUQKKyAgICAgICAgYWxsb2NhdGUoY3VycmVudC0+cGF5bG9h ZF9yZWYsIGN1cnJlbnQtPnBheWxvYWRfc2l6ZSk7CisgICAgICAgIGN1cnJlbnQtPnBheWxvYWQg PSBjdXJyZW50LT5wYXlsb2FkX3JlZjsKKyNlbHNlCisgICAgICAgIGFsbG9jYXRlKGN1cnJlbnQt PnBheWxvYWQsIGN1cnJlbnQtPnBheWxvYWRfc2l6ZSk7CisjZW5kaWYKKyAgICAgICAgZGF0YSA9 IGN1cnJlbnQtPnBheWxvYWQ7CisKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGN1cnJlbnQtPnBh eWxvYWRfc2l6ZTsgaSsrKQorICAgICAgICAgICAgeHUoOCwgcGF5bG9hZF9ieXRlW2ldLCBkYXRh W2ldLCAwLCAyNTUsIDEsIGkpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMg aW50IEZVTkMocHJvY2Vzc19ibG9ja19saXN0KShDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwg UldDb250ZXh0ICpydywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExDRVZD UmF3UHJvY2Vzc0Jsb2NrTGlzdCAqY3VycmVudCkKK3sKKyAgICBMQ0VWQ1Jhd1Byb2Nlc3NCbG9j ayAqYmxvY2s7CisgICAgaW50IGVyciwgazsKKworI2lmZGVmIFJFQUQKKyAgICBmb3IgKGsgPSAw OzsgaysrKSB7CisgICAgICAgIGludCBwYXlsb2FkX3NpemVfdHlwZTsKKyAgICAgICAgaW50IHBh eWxvYWRfdHlwZTsKKyAgICAgICAgdWludDMyX3QgcGF5bG9hZF9zaXplOworICAgICAgICB1aW50 MzJfdCB0bXA7CisgICAgICAgIEdldEJpdENvbnRleHQgcGF5bG9hZF9nYmM7CisKKyAgICAgICAg SEVBREVSKCJQcm9jZXNzIEJsb2NrIik7CisKKyAgICAgICAgeHUoMywgcGF5bG9hZF9zaXplX3R5 cGUsIHRtcCwgMCwgTUFYX1VJTlRfQklUUygzKSwgMCk7CisgICAgICAgIHBheWxvYWRfc2l6ZV90 eXBlID0gdG1wOworICAgICAgICB4dSg1LCBwYXlsb2FkX3R5cGUsIHRtcCwgMCwgTUFYX1VJTlRf QklUUyg1KSwgMCk7CisgICAgICAgIHBheWxvYWRfdHlwZSA9IHRtcDsKKworICAgICAgICBpZiAo cGF5bG9hZF9zaXplX3R5cGUgPT0gNikgeworICAgICAgICAgICAgYXZfbG9nKGN0eC0+bG9nX2N0 eCwgQVZfTE9HX0VSUk9SLCAicGF5bG9hZF9zaXplX3R5cGUgPT0gNlxuIik7CisgICAgICAgICAg ICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICAgICAgfQorCisgICAgICAgIHBheWxv YWRfc2l6ZSA9IHBheWxvYWRfc2l6ZV90eXBlOworICAgICAgICBpZiAocGF5bG9hZF9zaXplX3R5 cGUgPT0gNykKKyAgICAgICAgICAgIHhtYihjdXN0b21fYnl0ZV9zaXplLCBwYXlsb2FkX3NpemUp OworCisgICAgICAgIC8vIFRoZXJlIG11c3QgYmUgc3BhY2UgcmVtYWluaW5nIGZvciB0aGUgcGF5 bG9hZAorICAgICAgICBpZiAocGF5bG9hZF9zaXplID4gZ2V0X2JpdHNfbGVmdChydykgLyA4KSB7 CisgICAgICAgICAgICBhdl9sb2coY3R4LT5sb2dfY3R4LCBBVl9MT0dfRVJST1IsCisgICAgICAg ICAgICAgICAgICAgIkludmFsaWQgcHJvY2VzcyBibG9jazogcGF5bG9hZF9zaXplIHRvbyBsYXJn ZSAiCisgICAgICAgICAgICAgICAgICAgIiglIlBSSXUzMiIgYnl0ZXMpLlxuIiwgcGF5bG9hZF9z aXplKTsKKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworICAgICAgICB9 CisgICAgICAgIENIRUNLKGluaXRfZ2V0X2JpdHMoJnBheWxvYWRfZ2JjLCBydy0+YnVmZmVyLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9iaXRzX2NvdW50KHJ3KSArIDggKiBwYXls b2FkX3NpemUpKTsKKyAgICAgICAgc2tpcF9iaXRzX2xvbmcoJnBheWxvYWRfZ2JjLCBnZXRfYml0 c19jb3VudChydykpOworCisgICAgICAgIENIRUNLKGZmX2Nic19sY2V2Y19saXN0X2FkZChjdXJy ZW50KSk7CisgICAgICAgIGJsb2NrID0gJmN1cnJlbnQtPmJsb2Nrc1trXTsKKworICAgICAgICBi bG9jay0+cGF5bG9hZF90eXBlID0gcGF5bG9hZF90eXBlOworICAgICAgICBibG9jay0+cGF5bG9h ZF9zaXplID0gcGF5bG9hZF9zaXplOworCisgICAgICAgIENIRUNLKEZVTkMocHJvY2Vzc19ibG9j aykoY3R4LCAmcGF5bG9hZF9nYmMsIGJsb2NrKSk7CisKKyAgICAgICAgc2tpcF9iaXRzX2xvbmco cncsIDggKiBwYXlsb2FkX3NpemUpOworCisgICAgICAgIGlmICghY2JzX2gyNjQ1X3JlYWRfbW9y ZV9yYnNwX2RhdGEocncpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorI2Vsc2UKKyAgICBm b3IgKGsgPSAwOyBrIDwgY3VycmVudC0+bmJfYmxvY2tzOyBrKyspIHsKKyAgICAgICAgUHV0Qml0 Q29udGV4dCBzdGFydF9zdGF0ZTsKKyAgICAgICAgdWludDMyX3QgdG1wOworICAgICAgICBpbnQg dHJhY2UsIGk7CisKKyAgICAgICAgYmxvY2sgPSAmY3VycmVudC0+YmxvY2tzW2tdOworCisgICAg ICAgIC8vIFdlIHdyaXRlIHRoZSBwYXlsb2FkIHR3aWNlIGluIG9yZGVyIHRvIGZpbmQgdGhlIHNp emUuIFRyYWNlCisgICAgICAgIC8vIG91dHB1dCBpcyBzd2l0Y2hlZCBvZmYgZm9yIHRoZSBmaXJz dCB3cml0ZS4KKyAgICAgICAgdHJhY2UgPSBjdHgtPnRyYWNlX2VuYWJsZTsKKyAgICAgICAgY3R4 LT50cmFjZV9lbmFibGUgPSAwOworCisgICAgICAgIHN0YXJ0X3N0YXRlID0gKnJ3OworICAgICAg ICBmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKSB7CisgICAgICAgICAgICAqcncgPSBzdGFydF9zdGF0 ZTsKKworICAgICAgICAgICAgdG1wID0gRkZNSU4oYmxvY2stPnBheWxvYWRfc2l6ZSwgNyk7Cisg ICAgICAgICAgICB4dSgzLCBwYXlsb2FkX3NpemVfdHlwZSwgdG1wLCAwLCA3LCAwKTsKKyAgICAg ICAgICAgIHh1KDUsIHBheWxvYWRfdHlwZSwgYmxvY2stPnBheWxvYWRfdHlwZSwgMCwgTUFYX1VJ TlRfQklUUyg1KSwgMCk7CisKKyAgICAgICAgICAgIGlmICh0bXAgPT0gNykKKyAgICAgICAgICAg ICAgICB4bWIoY3VzdG9tX2J5dGVfc2l6ZSwgYmxvY2stPnBheWxvYWRfc2l6ZSk7CisKKyAgICAg ICAgICAgIGVyciA9IEZVTkMocHJvY2Vzc19ibG9jaykoY3R4LCBydywgYmxvY2spOworICAgICAg ICAgICAgY3R4LT50cmFjZV9lbmFibGUgPSB0cmFjZTsKKyAgICAgICAgICAgIGlmIChlcnIgPCAw KQorICAgICAgICAgICAgICAgIHJldHVybiBlcnI7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYK KworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IEZVTkMobmFsKShDb2RlZEJpdHN0cmVh bUNvbnRleHQgKmN0eCwgUldDb250ZXh0ICpydywKKyAgICAgICAgICAgICAgICAgICAgIExDRVZD UmF3TkFMICpjdXJyZW50LCBpbnQgbmFsX3VuaXRfdHlwZSkKK3sKKyAgICBpbnQgZXJyOworCisg ICAgaWYgKG5hbF91bml0X3R5cGUgPT0gTENFVkNfTk9OX0lEUl9OVVQpCisgICAgICAgIEhFQURF UigiTm9uIElEUiIpOworICAgIGVsc2UKKyAgICAgICAgSEVBREVSKCJJRFIiKTsKKworICAgIENI RUNLKEZVTkMobmFsX3VuaXRfaGVhZGVyKShjdHgsIHJ3LCAmY3VycmVudC0+bmFsX3VuaXRfaGVh ZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMSA8PCBMQ0VWQ19JRFJfTlVU KSB8ICgxIDw8IExDRVZDX05PTl9JRFJfTlVUKSkpOworCisgICAgQ0hFQ0soRlVOQyhwcm9jZXNz X2Jsb2NrX2xpc3QpIChjdHgsIHJ3LCAmY3VycmVudC0+cHJvY2Vzc19ibG9ja19saXN0KSk7CisK KyAgICBDSEVDSyhGVU5DKHJic3BfdHJhaWxpbmdfYml0cykoY3R4LCBydykpOworCisgICAgcmV0 dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9jYnMuaCBiL2xpYmF2Zm9ybWF0L2Ni cy5oCmluZGV4IGU0ZGMyMzEwMDEuLjFkZTg2YTVmY2UgMTAwNjQ0Ci0tLSBhL2xpYmF2Zm9ybWF0 L2Nicy5oCisrKyBiL2xpYmF2Zm9ybWF0L2Nicy5oCkBAIC0yNSw2ICsyNSw3IEBACiAjZGVmaW5l IENCU19IMjY0IDAKICNkZWZpbmUgQ0JTX0gyNjUgMAogI2RlZmluZSBDQlNfSDI2NiAwCisjZGVm aW5lIENCU19MQ0VWQyAwCiAjZGVmaW5lIENCU19KUEVHIDAKICNkZWZpbmUgQ0JTX01QRUcyIDAK ICNkZWZpbmUgQ0JTX1ZQOCAwCi0tIAoyLjUyLjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QgLS0gZmZtcGVn LWRldmVsQGZmbXBlZy5vcmcKVG8gdW5zdWJzY3JpYmUgc2VuZCBhbiBlbWFpbCB0byBmZm1wZWct ZGV2ZWwtbGVhdmVAZmZtcGVnLm9yZwo=