From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id E527543390 for ; Mon, 8 Aug 2022 12:30:56 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E3B3968B765; Mon, 8 Aug 2022 15:30:53 +0300 (EEST) Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com [210.118.77.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E8A3268B734 for ; Mon, 8 Aug 2022 15:30:47 +0300 (EEST) Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20220808123046euoutp0271d62a90b32fb0ffaa28f3ab7f376757~JXoE3XTT90903709037euoutp02T for ; Mon, 8 Aug 2022 12:30:46 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20220808123046euoutp0271d62a90b32fb0ffaa28f3ab7f376757~JXoE3XTT90903709037euoutp02T DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1659961846; bh=zK/bBHysrFL2nm8uJyQzie0qrpt8amQfjAu9KA1JxrE=; h=From:To:Subject:Date:References:From; b=lncT8Mq7/eduw9Vp4qTrpzZqt4dJyxq+l5a6G+kHRQNqSquY32N68MweKqVghSXeD TPadi+1nxDNNOpHUTEK2Zep2GNfnIojTUT9braRaaOd+GBG8RTLfHI+1yA6oRIya92 rtQSjSp8hHzEXFVmBt3CPuc8ALb8thl6uFepUb+M= Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20220808123046eucas1p29f799e83f5c0d1e9786a0a424668a4a9~JXoEvn9-F2308023080eucas1p26 for ; Mon, 8 Aug 2022 12:30:46 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges3new.samsung.com (EUCPMTA) with SMTP id DE.F7.09580.6F101F26; Mon, 8 Aug 2022 13:30:46 +0100 (BST) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20220808123046eucas1p29b765ce70a123ffc01f34fca460bfc7a~JXoEX2cu-2308023080eucas1p25 for ; Mon, 8 Aug 2022 12:30:46 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20220808123046eusmtrp2f2a4c9075b0d5ca8975ac2258b11c372~JXoEXDNsy2085320853eusmtrp2K for ; Mon, 8 Aug 2022 12:30:46 +0000 (GMT) X-AuditID: cbfec7f5-9c3ff7000000256c-27-62f101f6d1cd Received: from eusmtip1.samsung.com ( [203.254.199.221]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 49.55.09095.6F101F26; Mon, 8 Aug 2022 13:30:46 +0100 (BST) Received: from AMDN3260 (unknown [106.210.132.171]) by eusmtip1.samsung.com (KnoxPortal) with ESMTPA id 20220808123045eusmtip1b3c0a40cf3fa24914e265b9c665571e1~JXoED9gcW1170411704eusmtip1d for ; Mon, 8 Aug 2022 12:30:45 +0000 (GMT) From: "Dawid Kozinski" To: Date: Mon, 8 Aug 2022 14:30:38 +0200 Message-ID: <011501d8ab22$aeed3a90$0cc7afb0$@samsung.com> MIME-Version: 1.0 X-Mailer: Microsoft Outlook 16.0 Thread-Index: AdirIcG7De0Aylw3Q66J0nWlT7xe8Q== Content-Language: pl X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrGIsWRmVeSWpSXmKPExsWy7djPc7rfGD8mGTR8lrX49ukMswOjx59F m1kCGKO4bFJSczLLUov07RK4MtZPnM1U8G8rc8Wp5YeZGhgnzGfuYuTgkBAwkVj4I7+LkYtD SGAFo8Sn2atYIJxJTBLH5v5i62LkBHImMkm8uCAF03DscTFEeDmjxMtvlhD1bUwSy/v+soAk 2AT0JWYu+gTWKyIgK7H63xQwW1ggVGLy459gNouAisSixbOZQGbyClhKrH9QAhLmFRCUODnz CdgYZgFtiWULXzOD2BICChI/ny5jhRipJ7Fx+SwmiBoRiRuPWhhBbpAQ+Mku8excOxtEg4vE 2s0PGSFsYYlXx7ewQ9gyEv93zmeC+KVY4lC/A4RZI3HoRzpEhbXE28bjjCBhZgFNifW79CHC jhKHPu5kg6jmk7jxVhDiAD6JSdumQwOTV6KjTQjCVJHo6xSDaJSSeLpsDtQbHhJf9x9jmcCo OAvJt7OQfDsLyVezEE5YwMiyilE8tbQ4Nz212DgvtVyvODG3uDQvXS85P3cTIzApnP53/OsO xhWvPuodYmTiYDzEKMHBrCTCe2Tt+yQh3pTEyqrUovz4otKc1OJDjNIcLErivMmZGxKFBNIT S1KzU1MLUotgskwcnFINTBofcvZN4Ep65ZQeN/OIr4KPy/z1M/bnHGOa8ErDu+6N25MV+5od F1hZVlrcn6NhXlSvsy8kf9el3eoKeX+7RR54vtq+5wnzlR+ePGvOZ2xear75TOyS19sll17U Mjar8HvCXpO2YW+T0++YXaV7Z/wMeCMwx7mbK/jhwWV5UhUO6iyBwc/+PPvlZjF9bvdsDoM8 9hNVmnJ5154nrtq4uG/7Jos841n2b3ka/mVMiTgf82H3DJdJewRTYjxNOvV339504dXhcyKf jYImn1jI2bDuQYL1lMS2ZxvnMr1/f0X+5qFJ0ta8Hp8e9qe57/FpC56fMff5VY/G15x+5X9C FvN/XrUi7PRyNndJgz2qVe+UWIozEg21mIuKEwGBGeLteQMAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrGLMWRmVeSWpSXmKPExsVy+t/xu7rfGD8mGWxcxGrx7dMZZgdGjz+L NrMEMEbp2RTll5akKmTkF5fYKkUbWhjpGVpa6BmZWOoZGpvHWhmZKunb2aSk5mSWpRbp2yXo ZZxa2M5esHouU8XNTZOZGhgnnGPsYuTgkBAwkTj2uLiLkYtDSGApo8SK+weA4pxAcSmJpUsX QdnCEn+udbGB2EICLUwS91a7g9hsAvoSMxd9AouLCMhKrP43BcwWFgiWeHzmC1gvi4CKxKLF s5lAdvEKWEqsf1ACEuYVEJQ4OfMJC4jNLKAt8fTmUzh72cLXzBBrFSR+Pl3GCjFeT2Lj8llM EDUiEjcetTBOYBSYhWTULCSjZiEZNQtJywJGllWMIqmlxbnpucWGesWJucWleel6yfm5mxiB Ab7t2M/NOxjnvfqod4iRiYPxEKMEB7OSCO+Rte+ThHhTEiurUovy44tKc1KLDzGaAr02kVlK NDkfGGN5JfGGZgamhiZmlgamlmbGSuK8ngUdiUIC6YklqdmpqQWpRTB9TBycUg1Mlmz8/2Yz 3fVzuJTspnnh1a765gk25VES5kV/NF/uWrd+8bR+J80i8zd99xSl5oef3XTON/PxnV6Zw+oL A2T1jiqy1buzT12qwt/6PLSX/eK8n++rpiaWH7y+4z1rvPlm5qA5ryWZD1ts97zHJ3BmyQex n8bTCrbffDiz1PDH3w15G+M54/erXF/hy3g1kTG29nhC7j+2cy0Sd7YlhyQnWWrfufrhve5O 5zK9b4tuxNrl/NuqyTPJRtj9wdMpl6OPWiwrS6ud2M6wZ9vsjmcrTRcd/H3hVeCp0xq7DNMu 701JLJG9Jhyc/OPIvvuP8jtXSSjff6i/U+Pae7nrFX3Li67ztsSoyB0ukfhxVtNKXomlOCPR UIu5qDgRAF6fSs75AgAA X-CMS-MailID: 20220808123046eucas1p29b765ce70a123ffc01f34fca460bfc7a X-Msg-Generator: CA X-RootMTR: 20220808123046eucas1p29b765ce70a123ffc01f34fca460bfc7a X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20220808123046eucas1p29b765ce70a123ffc01f34fca460bfc7a References: Subject: [FFmpeg-devel] [PATCH 2/2] Provided support for MPEG-5 EVC (Essential Video Coding) codec X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: LSBBZGRlZCBtdXhlciBmb3IgRVZDIGZvcm1hdCAoTVA0LCByYXcpCi0gQWRkZWQgZGVtdXhlciBm b3IgRVZDIGZvcm1hdCAoTVA0KQotIEFkZGVkIGV2YyBleHRlbnNpb24gdG8gdGhlIGxpc3Qgb2Yg ZXh0ZW5zaW9ucyBmb3IgZmZfbW92X2RlbXV4ZXIKLSBBZGRlZCBpbmZvcm1hdGlvbiB0byBtb292 IGF0b20KClNpZ25lZC1vZmYtYnk6IERhd2lkIEtvemluc2tpIDxkLmtvemluc2tpQHNhbXN1bmcu Y29tPgotLS0KIGRvYy9tdXhlcnMudGV4aSAgICAgICAgICB8ICAgNiArCiBsaWJhdmZvcm1hdC9N YWtlZmlsZSAgICAgfCAgIDQgKy0KIGxpYmF2Zm9ybWF0L2FsbGZvcm1hdHMuYyB8ICAgMiArCiBs aWJhdmZvcm1hdC9ldmMuYyAgICAgICAgfCA0NjEgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrCiBsaWJhdmZvcm1hdC9ldmMuaCAgICAgICAgfCAxNDcgKysrKysrKysrKysr KwogbGliYXZmb3JtYXQvZXZjZGVjLmMgICAgIHwgMTQyICsrKysrKysrKysrKwogbGliYXZmb3Jt YXQvaXNvbV90YWdzLmMgIHwgICAyICsKIGxpYmF2Zm9ybWF0L21vdi5jICAgICAgICB8ICAgMiAr LQogbGliYXZmb3JtYXQvbW92ZW5jLmMgICAgIHwgIDM1ICsrLQogbGliYXZmb3JtYXQvcmF3ZW5j LmMgICAgIHwgIDEzICsrCiAxMCBmaWxlcyBjaGFuZ2VkLCA4MTEgaW5zZXJ0aW9ucygrKSwgMyBk ZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmZvcm1hdC9ldmMuYwogY3JlYXRl IG1vZGUgMTAwNjQ0IGxpYmF2Zm9ybWF0L2V2Yy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZm b3JtYXQvZXZjZGVjLmMKCmRpZmYgLS1naXQgYS9kb2MvbXV4ZXJzLnRleGkgYi9kb2MvbXV4ZXJz LnRleGkKaW5kZXggYjJmNDMyNmFhZS4uMDhhYjIwYzA5ZSAxMDA2NDQKLS0tIGEvZG9jL211eGVy cy50ZXhpCisrKyBiL2RvYy9tdXhlcnMudGV4aQpAQCAtMjEyNCw2ICsyMTI0LDEyIEBAIERUUyBD b2hlcmVudCBBY291c3RpY3MgKERDQSkgYXVkaW8uCiAKIERvbGJ5IERpZ2l0YWwgUGx1cywgYWxz byBrbm93biBhcyBFbmhhbmNlZCBBQy0zLCBhdWRpby4KIAorQHN1YnNlY3Rpb24gZXZjCisKK01Q RUctNSBFc3NlbnRpYWwgVmlkZW8gQ29kaW5nIChFVkMpIC8gRVZDIC8gTVBFRy01IFBhcnQgMSBF VkMgdmlkZW8uCisKK0V4dGVuc2lvbnM6IGV2YworCiBAc3Vic2VjdGlvbiBnNzIyCiAKIElUVS1U IEcuNzIyIGF1ZGlvLgpkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvTWFrZWZpbGUgYi9saWJhdmZv cm1hdC9NYWtlZmlsZQppbmRleCBlNDIwMzg0MzU1Li5mNTMyNmFlYTc5IDEwMDY0NAotLS0gYS9s aWJhdmZvcm1hdC9NYWtlZmlsZQorKysgYi9saWJhdmZvcm1hdC9NYWtlZmlsZQpAQCAtMjQ5LDYg KzI0OSw4IEBAIE9CSlMtJChDT05GSUdfSENPTV9ERU1VWEVSKSAgICAgICAgICAgICAgKz0gaGNv bS5vIHBjbS5vCiBPQkpTLSQoQ09ORklHX0hEU19NVVhFUikgICAgICAgICAgICAgICAgICs9IGhk c2VuYy5vCiBPQkpTLSQoQ09ORklHX0hFVkNfREVNVVhFUikgICAgICAgICAgICAgICs9IGhldmNk ZWMubyByYXdkZWMubwogT0JKUy0kKENPTkZJR19IRVZDX01VWEVSKSAgICAgICAgICAgICAgICAr PSByYXdlbmMubworT0JKUy0kKENPTkZJR19FVkNfREVNVVhFUikgICAgICAgICAgICAgICArPSBl dmNkZWMubyByYXdkZWMubworT0JKUy0kKENPTkZJR19FVkNfTVVYRVIpICAgICAgICAgICAgICAg ICArPSByYXdlbmMubwogT0JKUy0kKENPTkZJR19ITFNfREVNVVhFUikgICAgICAgICAgICAgICAr PSBobHMubyBobHNfc2FtcGxlX2VuY3J5cHRpb24ubwogT0JKUy0kKENPTkZJR19ITFNfTVVYRVIp ICAgICAgICAgICAgICAgICArPSBobHNlbmMubyBobHNwbGF5bGlzdC5vIGF2Yy5vCiBPQkpTLSQo Q09ORklHX0hOTV9ERU1VWEVSKSAgICAgICAgICAgICAgICs9IGhubS5vCkBAIC0zNTgsNyArMzYw LDcgQEAgT0JKUy0kKENPTkZJR19NT1ZfREVNVVhFUikgICAgICAgICAgICAgICArPSBtb3YubyBt b3ZfY2hhbi5vIG1vdl9lc2RzLm8gXAogT0JKUy0kKENPTkZJR19NT1ZfTVVYRVIpICAgICAgICAg ICAgICAgICArPSBtb3ZlbmMubyBhdjEubyBhdmMubyBoZXZjLm8gdnBjYy5vIFwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZW5jaGludC5vIG1vdl9jaGFu Lm8gcnRwLm8gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt b3ZlbmNjZW5jLm8gbW92ZW5jX3R0bWwubyByYXd1dGlscy5vIFwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG92aV9pc29tLm8KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG92aV9pc29tLm8gZXZjLm8KIE9CSlMtJChDT05G SUdfTVAyX01VWEVSKSAgICAgICAgICAgICAgICAgKz0gcmF3ZW5jLm8KIE9CSlMtJChDT05GSUdf TVAzX0RFTVVYRVIpICAgICAgICAgICAgICAgKz0gbXAzZGVjLm8gcmVwbGF5Z2Fpbi5vCiBPQkpT LSQoQ09ORklHX01QM19NVVhFUikgICAgICAgICAgICAgICAgICs9IG1wM2VuYy5vIHJhd2VuYy5v IGlkM3YyZW5jLm8KZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L2FsbGZvcm1hdHMuYyBiL2xpYmF2 Zm9ybWF0L2FsbGZvcm1hdHMuYwppbmRleCBhZTQ0NzlmYjdhLi5kZmNlNDlkMTQ5IDEwMDY0NAot LS0gYS9saWJhdmZvcm1hdC9hbGxmb3JtYXRzLmMKKysrIGIvbGliYXZmb3JtYXQvYWxsZm9ybWF0 cy5jCkBAIC0xNDgsNiArMTQ4LDggQEAgZXh0ZXJuIGNvbnN0IEFWSW5wdXRGb3JtYXQgIGZmX2Vh X2NkYXRhX2RlbXV4ZXI7CiBleHRlcm4gY29uc3QgQVZJbnB1dEZvcm1hdCAgZmZfZWFjM19kZW11 eGVyOwogZXh0ZXJuIGNvbnN0IEFWT3V0cHV0Rm9ybWF0IGZmX2VhYzNfbXV4ZXI7CiBleHRlcm4g Y29uc3QgQVZJbnB1dEZvcm1hdCAgZmZfZXBhZl9kZW11eGVyOworZXh0ZXJuIGNvbnN0IEFWSW5w dXRGb3JtYXQgIGZmX2V2Y19kZW11eGVyOworZXh0ZXJuIGNvbnN0IEFWT3V0cHV0Rm9ybWF0IGZm X2V2Y19tdXhlcjsKIGV4dGVybiBjb25zdCBBVk91dHB1dEZvcm1hdCBmZl9mNHZfbXV4ZXI7CiBl eHRlcm4gY29uc3QgQVZJbnB1dEZvcm1hdCAgZmZfZmZtZXRhZGF0YV9kZW11eGVyOwogZXh0ZXJu IGNvbnN0IEFWT3V0cHV0Rm9ybWF0IGZmX2ZmbWV0YWRhdGFfbXV4ZXI7CmRpZmYgLS1naXQgYS9s aWJhdmZvcm1hdC9ldmMuYyBiL2xpYmF2Zm9ybWF0L2V2Yy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAuLjkyOTdmYTVkNWMKLS0tIC9kZXYvbnVsbAorKysgYi9saWJhdmZv cm1hdC9ldmMuYwpAQCAtMCwwICsxLDQ2MSBAQAorLyoKKyAqIEVWQyBoZWxwZXIgZnVuY3Rpb25z IGZvciBtdXhlcnMKKyAqIENvcHlyaWdodCAoYykgMjAyMiBEYXdpZCBLb3ppbnNraSA8ZC5rb3pp bnNraUBzYW1zdW5nLmNvbT4KKyAqCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCisg KgorICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBGRm1wZWcgaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVz c2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3Qs IHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgKi8K KworI2luY2x1ZGUgImxpYmF2dXRpbC9pbnRyZWFkd3JpdGUuaCIKKyNpbmNsdWRlICJsaWJhdmNv ZGVjL2dldF9iaXRzLmgiCisjaW5jbHVkZSAibGliYXZjb2RlYy9nb2xvbWIuaCIKKyNpbmNsdWRl ICJhdmZvcm1hdC5oIgorI2luY2x1ZGUgImF2aW8uaCIKKyNpbmNsdWRlICJldmMuaCIKKyNpbmNs dWRlICJhdmlvX2ludGVybmFsLmgiCisKKy8vIFRoZSBsZW5ndGggZmllbGQgdGhhdCBpbmRpY2F0 ZXMgdGhlIGxlbmd0aCBpbiBieXRlcyBvZiB0aGUgZm9sbG93aW5nIE5BTCB1bml0IGlzIGNvbmZp Z3VyZWQgdG8gYmUgb2YgNCBieXRlcworI2RlZmluZSBFVkNfTkFMX1VOSVRfTEVOR1RIX0JZVEUg ICAgICAgICg0KSAgLyogYnl0ZSAqLworI2RlZmluZSBFVkNfTkFMX0hFQURFUl9TSVpFICAgICAg ICAgICAgICgyKSAgLyogYnl0ZSAqLworCisvLyBycGwgc3RydWN0dXJlCit0eXBlZGVmIHN0cnVj dCBSZWZQaWNMaXN0U3RydWN0IHsKKyAgICBpbnQgcG9jOworICAgIGludCB0aWQ7CisgICAgaW50 IHJlZl9waWNfbnVtOworICAgIGludCByZWZfcGljX2FjdGl2ZV9udW07CisgICAgaW50IHJlZl9w aWNzW0VWQ19NQVhfTlVNX1JFRl9QSUNTXTsKKyAgICBjaGFyIHBpY190eXBlOworCit9IFJlZlBp Y0xpc3RTdHJ1Y3Q7CisKKy8vIFRoZSBzdHVyY3R1cmUgcmVmbGVjdHMgU1BTIFJCU1AocmF3IGJ5 dGUgc2VxdWVuY2UgcGF5bG9hZCkgbGF5b3V0CisvLyBAc2VlIElTT19JRUNfMjMwOTQtMSBzZWN0 aW9uIDcuMy4yLjEKKy8vCisvLyBUaGUgZm9sbG93aW5nIGRlc2NyaXB0b3JzIHNwZWNpZnkgdGhl IHBhcnNpbmcgcHJvY2VzcyBvZiBlYWNoIGVsZW1lbnQKKy8vIHUobikgLSB1bnNpZ25lZCBpbnRl Z2VyIHVzaW5nIG4gYml0cworLy8gdWUodikgLSB1bnNpZ25lZCBpbnRlZ2VyIDAtdGggb3JkZXIg RXhwX0dvbG9tYi1jb2RlZCBzeW50YXggZWxlbWVudCB3aXRoIHRoZSBsZWZ0IGJpdCBmaXJzdAor dHlwZWRlZiBzdHJ1Y3QgRVZDU1BTIHsKKyAgICBpbnQgc3BzX3NlcV9wYXJhbWV0ZXJfc2V0X2lk OyAgIC8vIHVlKHYpCisgICAgaW50IHByb2ZpbGVfaWRjOyAgICAgICAgICAgICAgICAvLyB1KDgp CisgICAgaW50IGxldmVsX2lkYzsgICAgICAgICAgICAgICAgICAvLyB1KDgpCisgICAgaW50IHRv b2xzZXRfaWRjX2g7ICAgICAgICAgICAgICAvLyB1KDMyKQorICAgIGludCB0b29sc2V0X2lkY19s OyAgICAgICAgICAgICAgLy8gdSgzMikKKyAgICBpbnQgY2hyb21hX2Zvcm1hdF9pZGM7ICAgICAg ICAgIC8vIHVlKHYpCisgICAgaW50IHBpY193aWR0aF9pbl9sdW1hX3NhbXBsZXM7ICAvLyB1ZSh2 KQorICAgIGludCBwaWNfaGVpZ2h0X2luX2x1bWFfc2FtcGxlczsgLy8gdWUodikKKyAgICBpbnQg Yml0X2RlcHRoX2x1bWFfbWludXM4OyAgICAgIC8vIHVlKHYpCisgICAgaW50IGJpdF9kZXB0aF9j aHJvbWFfbWludXM4OyAgICAvLyB1ZSh2KQorCisgICAgLy8gQG5vdGUKKyAgICAvLyBDdXJyZW50 bHkgdGhlIHN0cnVjdHVyZSBkb2VzIG5vdCByZWZsZWN0IHRoZSBlbnRpcmUgU1BTIFJCU1AgbGF5 b3V0LgorICAgIC8vIEl0IGNvbnRhaW5zIG9ubHkgdGhlIGZpZWxkcyB0aGF0IGFyZSBuZWNlc3Nh cnkgdG8gcmVhZCBmcm9tIHRoZSBOQUwgdW5pdCBhbGwgdGhlIHZhbHVlcworICAgIC8vIG5lY2Vz c2FyeSBmb3IgdGhlIGNvcnJlY3QgaW5pdGlhbGl6YXRpb24gb2YgRVZDRGVjb2RlckNvbmZpZ3Vy YXRpb25SZWNvcmQKKworICAgIC8vIEBub3RlCisgICAgLy8gSWYgbmVjZXNzYXJ5LCBhZGQgdGhl IG1pc3NpbmcgZmllbGRzIHRvIHRoZSBzdHJ1Y3R1cmUgdG8gcmVmbGVjdAorICAgIC8vIHRoZSBj b250ZW50cyBvZiB0aGUgZW50aXJlIE5BTCB1bml0IG9mIHRoZSBTUFMgdHlwZQorCit9IEVWQ1NQ UzsKKwordHlwZWRlZiBzdHJ1Y3QgRVZDTkFMVW5pdEFycmF5IHsKKyAgICB1aW50OF90ICBhcnJh eV9jb21wbGV0ZW5lc3M7CisgICAgdWludDhfdCAgTkFMX3VuaXRfdHlwZTsKKyAgICB1aW50MTZf dCBudW1OYWx1czsKKyAgICB1aW50MTZfdCAqbmFsVW5pdExlbmd0aDsKKyAgICB1aW50OF90ICAq Km5hbFVuaXQ7Cit9IEVWQ05BTFVuaXRBcnJheTsKKworLyoqCisgKiBAYnJpZWYgU3BlY2lmaWVz IHRoZSBkZWNvZGVyIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIElTTy9JRUMgMjMwOTQt MSB2aWRlbyBjb250ZW50LgorICogQHNlZSBJU08vSUVDIDE0NDk2LTE1OjIwMjEgQ29kaW5nIG9m IGF1ZGlvLXZpc3VhbCBvYmplY3RzIMOi4oKs4oCdIFBhcnQgMTU6DQorICogICAgICBDYXJyaWFn ZSBvZiBuZXR3b3JrIGFic3RyYWN0aW9uIGxheWVyIChOQUwpIHVuaXQgc3RydWN0dXJlZCB2aWRl byBpbiB0aGUgSVNPIGJhc2UgbWVkaWEgZmlsZSBmb3JtYXQNCisgKi8NCit0eXBlZGVmIHN0cnVj dCBFVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZCB7DQorICAgIHVpbnQ4X3QgIGNvbmZpZ3Vy YXRpb25WZXJzaW9uOyAgICAgICAgICAvLyA4IGJpdHMNCisgICAgdWludDhfdCAgcHJvZmlsZV9p ZGM7ICAgICAgICAgICAgICAgICAgIC8vIDggYml0cw0KKyAgICB1aW50OF90ICBsZXZlbF9pZGM7 ICAgICAgICAgICAgICAgICAgICAgLy8gOCBiaXRzDQorICAgIHVpbnQzMl90IHRvb2xzZXRfaWRj X2g7ICAgICAgICAgICAgICAgICAvLyAzMiBiaXRzDQorICAgIHVpbnQzMl90IHRvb2xzZXRfaWRj X2w7ICAgICAgICAgICAgICAgICAvLyAzMiBiaXRzDQorICAgIHVpbnQ4X3QgIGNocm9tYV9mb3Jt YXRfaWRjOyAgICAgICAgICAgICAvLyAyIGJpdHMNCisgICAgdWludDhfdCAgYml0X2RlcHRoX2x1 bWFfbWludXM4OyAgICAgICAgIC8vIDMgYml0cw0KKyAgICB1aW50OF90ICBiaXRfZGVwdGhfY2hy b21hX21pbnVzODsgICAgICAgLy8gMyBiaXRzDQorICAgIHVpbnQxNl90IHBpY193aWR0aF9pbl9s dW1hX3NhbXBsZXM7ICAgICAvLyAxNiBiaXRzDQorICAgIHVpbnQxNl90IHBpY19oZWlnaHRfaW5f bHVtYV9zYW1wbGVzOyAgICAvLyAxNiBiaXRzDQorICAgIHVpbnQ4X3QgIHJlc2VydmVkOyAgICAg ICAgICAgICAgICAgICAgICAvLyA2IGJpdHMgJzAwMDAwMCdiDQorICAgIHVpbnQ4X3QgIGxlbmd0 aFNpemVNaW51c09uZTsgICAgICAgICAgICAvLyAyIGJpdHMNCisgICAgdWludDhfdCAgbnVtX29m X2FycmF5czsgICAgICAgICAgICAgICAgIC8vIDggYml0cw0KKyAgICBFVkNOQUxVbml0QXJyYXkg KmFycmF5Ow0KK30gRVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQ7DQorDQordHlwZWRlZiBz dHJ1Y3QgTkFMVSB7DQorICAgIGludCBvZmZzZXQ7DQorICAgIHVpbnQzMl90IHNpemU7DQorfSBO QUxVOw0KKw0KK3R5cGVkZWYgc3RydWN0IE5BTFVMaXN0IHsNCisgICAgTkFMVSAqbmFsdXM7DQor ICAgIHVuc2lnbmVkIG5hbHVzX2FycmF5X3NpemU7DQorICAgIHVuc2lnbmVkIG5iX25hbHVzOyAg ICAgICAgICAvLy88IHZhbGlkIGVudHJpZXMgaW4gbmFsdXMNCit9IE5BTFVMaXN0Ow0KKw0KK3N0 YXRpYyBpbnQgZ2V0X25hbHVfdHlwZShjb25zdCB1aW50OF90ICpiaXRzLCBpbnQgYml0c19zaXpl KQ0KK3sNCisgICAgaW50IHVuaXRfdHlwZV9wbHVzMSA9IDA7DQorDQorICAgIGlmIChiaXRzX3Np emUgPj0gRVZDX05BTF9IRUFERVJfU0laRSkgew0KKyAgICAgICAgdW5zaWduZWQgY2hhciAqcCA9 ICh1bnNpZ25lZCBjaGFyICopYml0czsNCisgICAgICAgIC8vIGZvcmJpZGRlbl96ZXJvX2JpdA0K KyAgICAgICAgaWYgKChwWzBdICYgMHg4MCkgIT0gMCkNCisgICAgICAgICAgICByZXR1cm4gLTE7 DQorDQorICAgICAgICAvLyBuYWxfdW5pdF90eXBlDQorICAgICAgICB1bml0X3R5cGVfcGx1czEg PSAocFswXSA+PiAxKSAmIDB4M0Y7DQorICAgIH0NCisNCisgICAgcmV0dXJuIHVuaXRfdHlwZV9w bHVzMSAtIDE7DQorfQ0KKw0KK3N0YXRpYyB1aW50MzJfdCByZWFkX25hbF91bml0X2xlbmd0aChj b25zdCB1aW50OF90ICpiaXRzLCBpbnQgYml0c19zaXplKQ0KK3sNCisgICAgdWludDMyX3QgbmFs dV9sZW4gPSAwOw0KKw0KKyAgICBpZiAoYml0c19zaXplID49IEVWQ19OQUxfVU5JVF9MRU5HVEhf QllURSkgew0KKw0KKyAgICAgICAgaW50IHQgPSAwOw0KKyAgICAgICAgdW5zaWduZWQgY2hhciAq cCA9ICh1bnNpZ25lZCBjaGFyICopYml0czsNCisNCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBp IDwgRVZDX05BTF9VTklUX0xFTkdUSF9CWVRFOyBpKyspDQorICAgICAgICAgICAgdCA9ICh0IDw8 IDgpIHwgcFtpXTsNCisNCisgICAgICAgIG5hbHVfbGVuID0gdDsNCisgICAgICAgIGlmIChuYWx1 X2xlbiA9PSAwKQ0KKyAgICAgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorDQorICAgIHJldHVy biBuYWx1X2xlbjsNCit9DQorDQorLy8gQHNlZSBJU09fSUVDXzIzMDk0LTEgKDcuMy4yLjEgU1BT IFJCU1Agc3ludGF4KQ0KK3N0YXRpYyBpbnQgZXZjY19wYXJzZV9zcHMoY29uc3QgdWludDhfdCAq YnMsIGludCBic19zaXplLCBFVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZCAqZXZjYykNCit7 DQorICAgIEdldEJpdENvbnRleHQgZ2I7DQorICAgIGludCBzcHNfc2VxX3BhcmFtZXRlcl9zZXRf aWQ7DQorICAgIEVWQ1NQUyBzcHM7DQorDQorICAgIGlmIChpbml0X2dldF9iaXRzOCgmZ2IsIGJz LCBic19zaXplKSA8IDApDQorICAgICAgICByZXR1cm4gMDsNCisNCisgICAgc3BzLnNwc19zZXFf cGFyYW1ldGVyX3NldF9pZCA9IGdldF91ZV9nb2xvbWIoJmdiKTsNCisNCisgICAgaWYgKHNwc19z ZXFfcGFyYW1ldGVyX3NldF9pZCA+PSBFVkNfTUFYX1NQU19DT1VOVCkNCisgICAgICAgIHJldHVy biAwOw0KKw0KKyAgICAvLyB0aGUgQmFzZWxpbmUgcHJvZmlsZSBpcyBpbmRpY2F0ZWQgYnkgcHJv ZmlsZV9pZGMgZXFhbCB0byAwDQorICAgIC8vIHRoZSBNYWluIHByb2ZpbGUgaXMgaW5kaWNhdGVk IGJ5IHByb2ZpbGVfaWRjIGVxYWwgdG8gMQ0KKyAgICBzcHMucHJvZmlsZV9pZGMgPSBnZXRfYml0 cygmZ2IsIDgpOw0KKw0KKyAgICBzcHMubGV2ZWxfaWRjID0gZ2V0X2JpdHMoJmdiLCA4KTsNCisN CisgICAgc3BzLnRvb2xzZXRfaWRjX2ggPSBnZXRfYml0cygmZ2IsIDMyKTsNCisgICAgc3BzLnRv b2xzZXRfaWRjX2wgPSBnZXRfYml0cygmZ2IsIDMyKTsNCisNCisgICAgLy8gMCAtIG1vbm9jaHJv bWUNCisgICAgLy8gMSAtIDQ6MjowDQorICAgIC8vIDIgLSA0OjI6Mg0KKyAgICAvLyAzIC0gNDo0 OjQNCisgICAgc3BzLmNocm9tYV9mb3JtYXRfaWRjID0gZ2V0X3VlX2dvbG9tYigmZ2IpOw0KKw0K KyAgICBzcHMucGljX3dpZHRoX2luX2x1bWFfc2FtcGxlcyA9IGdldF91ZV9nb2xvbWIoJmdiKTsN CisgICAgc3BzLnBpY19oZWlnaHRfaW5fbHVtYV9zYW1wbGVzID0gZ2V0X3VlX2dvbG9tYigmZ2Ip Ow0KKw0KKyAgICBzcHMuYml0X2RlcHRoX2x1bWFfbWludXM4ID0gZ2V0X3VlX2dvbG9tYigmZ2Ip Ow0KKyAgICBzcHMuYml0X2RlcHRoX2Nocm9tYV9taW51czggPSBnZXRfdWVfZ29sb21iKCZnYik7 DQorDQorICAgIGV2Y2MtPnByb2ZpbGVfaWRjID0gc3BzLnByb2ZpbGVfaWRjOw0KKyAgICBldmNj LT5sZXZlbF9pZGMgPSBzcHMubGV2ZWxfaWRjOw0KKyAgICBldmNjLT50b29sc2V0X2lkY19oID0g c3BzLnRvb2xzZXRfaWRjX2g7DQorICAgIGV2Y2MtPnRvb2xzZXRfaWRjX2wgPSBzcHMudG9vbHNl dF9pZGNfbDsNCisgICAgZXZjYy0+Y2hyb21hX2Zvcm1hdF9pZGMgPSBzcHMuY2hyb21hX2Zvcm1h dF9pZGM7DQorICAgIGV2Y2MtPmJpdF9kZXB0aF9sdW1hX21pbnVzOCA9IHNwcy5iaXRfZGVwdGhf bHVtYV9taW51czg7DQorICAgIGV2Y2MtPmJpdF9kZXB0aF9jaHJvbWFfbWludXM4ID0gc3BzLmJp dF9kZXB0aF9jaHJvbWFfbWludXM4Ow0KKyAgICBldmNjLT5waWNfd2lkdGhfaW5fbHVtYV9zYW1w bGVzID0gc3BzLnBpY193aWR0aF9pbl9sdW1hX3NhbXBsZXM7DQorICAgIGV2Y2MtPnBpY19oZWln aHRfaW5fbHVtYV9zYW1wbGVzID0gc3BzLnBpY19oZWlnaHRfaW5fbHVtYV9zYW1wbGVzOw0KKw0K KyAgICByZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGludCBldmNjX2FycmF5X2FkZF9uYWxfdW5p dCh1aW50OF90ICpuYWxfYnVmLCB1aW50MzJfdCBuYWxfc2l6ZSwNCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgbmFsX3R5cGUsIGludCBwc19hcnJheV9jb21wbGV0 ZW5lc3MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFVkNEZWNvZGVyQ29u ZmlndXJhdGlvblJlY29yZCAqZXZjYykNCit7DQorICAgIGludCByZXQ7DQorICAgIHVpbnQ4X3Qg aW5kZXg7DQorICAgIHVpbnQxNl90IG51bU5hbHVzOw0KKyAgICBFVkNOQUxVbml0QXJyYXkgKmFy cmF5Ow0KKw0KKyAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBldmNjLT5udW1fb2ZfYXJyYXlz OyBpbmRleCsrKQ0KKyAgICAgICAgaWYgKGV2Y2MtPmFycmF5W2luZGV4XS5OQUxfdW5pdF90eXBl ID09IG5hbF90eXBlKQ0KKyAgICAgICAgICAgIGJyZWFrOw0KKw0KKyAgICBpZiAoaW5kZXggPj0g ZXZjYy0+bnVtX29mX2FycmF5cykgew0KKyAgICAgICAgdWludDhfdCBpOw0KKw0KKyAgICAgICAg cmV0ID0gYXZfcmVhbGxvY3BfYXJyYXkoJmV2Y2MtPmFycmF5LCBpbmRleCArIDEsIHNpemVvZihF VkNOQUxVbml0QXJyYXkpKTsNCisgICAgICAgIGlmIChyZXQgPCAwKQ0KKyAgICAgICAgICAgIHJl dHVybiByZXQ7DQorDQorICAgICAgICBmb3IgKGkgPSBldmNjLT5udW1fb2ZfYXJyYXlzOyBpIDw9 IGluZGV4OyBpKyspDQorICAgICAgICAgICAgbWVtc2V0KCZldmNjLT5hcnJheVtpXSwgMCwgc2l6 ZW9mKEVWQ05BTFVuaXRBcnJheSkpOw0KKyAgICAgICAgZXZjYy0+bnVtX29mX2FycmF5cyA9IGlu ZGV4ICsgMTsNCisgICAgfQ0KKw0KKyAgICBhcnJheSAgICA9ICZldmNjLT5hcnJheVtpbmRleF07 DQorICAgIG51bU5hbHVzID0gYXJyYXktPm51bU5hbHVzOw0KKw0KKyAgICByZXQgPSBhdl9yZWFs bG9jcF9hcnJheSgmYXJyYXktPm5hbFVuaXQsIG51bU5hbHVzICsgMSwgc2l6ZW9mKHVpbnQ4X3Qg KikpOw0KKyAgICBpZiAocmV0IDwgMCkNCisgICAgICAgIHJldHVybiByZXQ7DQorDQorICAgIHJl dCA9IGF2X3JlYWxsb2NwX2FycmF5KCZhcnJheS0+bmFsVW5pdExlbmd0aCwgbnVtTmFsdXMgKyAx LCBzaXplb2YodWludDE2X3QpKTsNCisgICAgaWYgKHJldCA8IDApDQorICAgICAgICByZXR1cm4g cmV0Ow0KKw0KKyAgICBhcnJheS0+bmFsVW5pdCAgICAgIFtudW1OYWx1c10gPSBuYWxfYnVmOw0K KyAgICBhcnJheS0+bmFsVW5pdExlbmd0aFtudW1OYWx1c10gPSBuYWxfc2l6ZTsNCisgICAgYXJy YXktPk5BTF91bml0X3R5cGUgICAgICAgICAgID0gbmFsX3R5cGU7DQorICAgIGFycmF5LT5udW1O YWx1cysrOw0KKw0KKyAgICAvKg0KKyAgICAgKiBXaGVuIHRoZSBzYW1wbGUgZW50cnkgbmFtZSBp cyAnZXZjMScsIHRoZSBkZWZhdWx0IGFuZCBtYW5kYXRvcnkgdmFsdWUgb2YNCisgICAgICogYXJy YXlfY29tcGxldGVuZXNzIGlzIDEgZm9yIGFycmF5cyBvZiBhbGwgdHlwZXMgb2YgcGFyYW1ldGVy IHNldHMsIGFuZCAwDQorICAgICAqIGZvciBhbGwgb3RoZXIgYXJyYXlzLg0KKyAgICAgKi8NCisg ICAgaWYgKG5hbF90eXBlID09IEVWQ19TUFNfTlVUIHx8IG5hbF90eXBlID09IEVWQ19QUFNfTlVU KQ0KKyAgICAgICAgYXJyYXktPmFycmF5X2NvbXBsZXRlbmVzcyA9IHBzX2FycmF5X2NvbXBsZXRl bmVzczsNCisNCisgICAgcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIGV2Y2NfaW5pdChF VkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZCAqZXZjYykNCit7DQorICAgIG1lbXNldChldmNj LCAwLCBzaXplb2YoRVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQpKTsNCisgICAgZXZjYy0+ Y29uZmlndXJhdGlvblZlcnNpb24gPSAxOw0KKyAgICBldmNjLT5sZW5ndGhTaXplTWludXNPbmUg ICA9IDM7IC8vIDQgYnl0ZXMNCit9DQorDQorc3RhdGljIHZvaWQgZXZjY19jbG9zZShFVkNEZWNv ZGVyQ29uZmlndXJhdGlvblJlY29yZCAqZXZjYykNCit7DQorICAgIHVpbnQ4X3QgaTsNCisNCisg ICAgZm9yIChpID0gMDsgaSA8IGV2Y2MtPm51bV9vZl9hcnJheXM7IGkrKykgew0KKyAgICAgICAg ZXZjYy0+YXJyYXlbaV0ubnVtTmFsdXMgPSAwOw0KKyAgICAgICAgYXZfZnJlZXAoJmV2Y2MtPmFy cmF5W2ldLm5hbFVuaXQpOw0KKyAgICAgICAgYXZfZnJlZXAoJmV2Y2MtPmFycmF5W2ldLm5hbFVu aXRMZW5ndGgpOw0KKyAgICB9DQorDQorICAgIGV2Y2MtPm51bV9vZl9hcnJheXMgPSAwOw0KKyAg ICBhdl9mcmVlcCgmZXZjYy0+YXJyYXkpOw0KK30NCisNCitzdGF0aWMgaW50IGV2Y2Nfd3JpdGUo QVZJT0NvbnRleHQgKnBiLCBFVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZCAqZXZjYykNCit7 DQorICAgIHVpbnQ4X3QgaTsNCisgICAgdWludDE2X3QgaiwgYXBzX2NvdW50ID0gMCwgc3BzX2Nv dW50ID0gMCwgcHBzX2NvdW50ID0gMDsNCisNCisgICAgYXZfbG9nKE5VTEwsIEFWX0xPR19UUkFD RSwgICJjb25maWd1cmF0aW9uVmVyc2lvbjogICAgICAgICAgICAgICAgJSJQUkl1OCJcbiIsDQor ICAgICAgICAgICBldmNjLT5jb25maWd1cmF0aW9uVmVyc2lvbik7DQorICAgIGF2X2xvZyhOVUxM LCBBVl9MT0dfVFJBQ0UsICAicHJvZmlsZV9pZGM6ICAgICAgICAgICAgICAgICAgICAgICAgICUi UFJJdTgiXG4iLA0KKyAgICAgICAgICAgZXZjYy0+cHJvZmlsZV9pZGMpOw0KKyAgICBhdl9sb2co TlVMTCwgQVZfTE9HX1RSQUNFLCAgImxldmVsX2lkYzogICAgICAgICAgICAgICAgICAgICAgICAg ICAlIlBSSXU4IlxuIiwNCisgICAgICAgICAgIGV2Y2MtPmxldmVsX2lkYyk7DQorICAgIGF2X2xv ZyhOVUxMLCBBVl9MT0dfVFJBQ0UsICAidG9vbHNldF9pZGNfaDogICAgICAgICAgICAgICAgICAg ICAgICUiUFJJdTMyIlxuIiwNCisgICAgICAgICAgIGV2Y2MtPnRvb2xzZXRfaWRjX2gpOw0KKyAg ICBhdl9sb2coTlVMTCwgQVZfTE9HX1RSQUNFLCAidG9vbHNldF9pZGNfbDogICAgICAgICAgICAg ICAgICAgICAgICAlIlBSSXUzMiJcbiIsDQorICAgICAgICAgICBldmNjLT50b29sc2V0X2lkY19s KTsNCisgICAgYXZfbG9nKE5VTEwsIEFWX0xPR19UUkFDRSwgImNocm9tYV9mb3JtYXRfaWRjOiAg ICAgICAgICAgICAgICAgICAgJSJQUkl1OCJcbiIsDQorICAgICAgICAgICBldmNjLT5jaHJvbWFf Zm9ybWF0X2lkYyk7DQorICAgIGF2X2xvZyhOVUxMLCBBVl9MT0dfVFJBQ0UsICAiYml0X2RlcHRo X2x1bWFfbWludXM4OiAgICAgICAgICAgICAgICUiUFJJdTgiXG4iLA0KKyAgICAgICAgICAgZXZj Yy0+Yml0X2RlcHRoX2x1bWFfbWludXM4KTsNCisgICAgYXZfbG9nKE5VTEwsIEFWX0xPR19UUkFD RSwgICJiaXRfZGVwdGhfY2hyb21hX21pbnVzODogICAgICAgICAgICAgJSJQUkl1OCJcbiIsDQor ICAgICAgICAgICBldmNjLT5iaXRfZGVwdGhfY2hyb21hX21pbnVzOCk7DQorICAgIGF2X2xvZyhO VUxMLCBBVl9MT0dfVFJBQ0UsICAicGljX3dpZHRoX2luX2x1bWFfc2FtcGxlczogICAgICAgICAg ICUiUFJJdTE2IlxuIiwNCisgICAgICAgICAgIGV2Y2MtPnBpY193aWR0aF9pbl9sdW1hX3NhbXBs ZXMpOw0KKyAgICBhdl9sb2coTlVMTCwgQVZfTE9HX1RSQUNFLCAgInBpY19oZWlnaHRfaW5fbHVt YV9zYW1wbGVzOiAgICAgICAgICAlIlBSSXUxNiJcbiIsDQorICAgICAgICAgICBldmNjLT5waWNf aGVpZ2h0X2luX2x1bWFfc2FtcGxlcyk7DQorICAgIGF2X2xvZyhOVUxMLCBBVl9MT0dfVFJBQ0Us ICAibGVuZ3RoU2l6ZU1pbnVzT25lOiAgICAgICAgICAgICAgICAgICUiUFJJdTgiXG4iLA0KKyAg ICAgICAgICAgZXZjYy0+bGVuZ3RoU2l6ZU1pbnVzT25lKTsNCisgICAgYXZfbG9nKE5VTEwsIEFW X0xPR19UUkFDRSwgICJudW1fb2ZfYXJyYXlzOiAgICAgICAgICAgICAgICAgICAgICAgJSJQUkl1 OCJcbiIsDQorICAgICAgICAgICBldmNjLT5udW1fb2ZfYXJyYXlzKTsNCisgICAgZm9yIChpID0g MDsgaSA8IGV2Y2MtPm51bV9vZl9hcnJheXM7IGkrKykgew0KKyAgICAgICAgYXZfbG9nKE5VTEws IEFWX0xPR19UUkFDRSwgImFycmF5X2NvbXBsZXRlbmVzc1slIlBSSXU4Il06ICAgICAgICAgICAg ICAgJSJQUkl1OCJcbiIsDQorICAgICAgICAgICAgICAgaSwgZXZjYy0+YXJyYXlbaV0uYXJyYXlf Y29tcGxldGVuZXNzKTsNCisgICAgICAgIGF2X2xvZyhOVUxMLCBBVl9MT0dfVFJBQ0UsICJOQUxf dW5pdF90eXBlWyUiUFJJdTgiXTogICAgICAgICAgICAgICAgICAgICUiUFJJdTgiXG4iLA0KKyAg ICAgICAgICAgICAgIGksIGV2Y2MtPmFycmF5W2ldLk5BTF91bml0X3R5cGUpOw0KKyAgICAgICAg YXZfbG9nKE5VTEwsIEFWX0xPR19UUkFDRSwgIm51bU5hbHVzWyUiUFJJdTgiXTogICAgICAgICAg ICAgICAgICAgICAgICAgJSJQUkl1MTYiXG4iLA0KKyAgICAgICAgICAgICAgIGksIGV2Y2MtPmFy cmF5W2ldLm51bU5hbHVzKTsNCisgICAgICAgIGZvciAoaiA9IDA7IGogPCBldmNjLT5hcnJheVtp XS5udW1OYWx1czsgaisrKQ0KKyAgICAgICAgICAgIGF2X2xvZyhOVUxMLCBBVl9MT0dfVFJBQ0Us DQorICAgICAgICAgICAgICAgICAgICJuYWxVbml0TGVuZ3RoWyUiUFJJdTgiXVslIlBSSXUxNiJd OiAgICAgICAgICAgICAgICAgJSJQUkl1MTYiXG4iLA0KKyAgICAgICAgICAgICAgICAgICBpLCBq LCBldmNjLT5hcnJheVtpXS5uYWxVbml0TGVuZ3RoW2pdKTsNCisgICAgfQ0KKw0KKyAgICAvKg0K KyAgICAgKiBXZSBuZWVkIGF0IGxlYXN0IG9uZSBTUFMuDQorICAgICAqLw0KKyAgICBmb3IgKGkg PSAwOyBpIDwgZXZjYy0+bnVtX29mX2FycmF5czsgaSsrKQ0KKyAgICAgICAgc3dpdGNoIChldmNj LT5hcnJheVtpXS5OQUxfdW5pdF90eXBlKSB7DQorICAgICAgICBjYXNlIEVWQ19BUFNfTlVUOg0K KyAgICAgICAgICAgIGFwc19jb3VudCArPSBldmNjLT5hcnJheVtpXS5udW1OYWx1czsNCisgICAg ICAgICAgICBicmVhazsNCisgICAgICAgIGNhc2UgRVZDX1NQU19OVVQ6DQorICAgICAgICAgICAg c3BzX2NvdW50ICs9IGV2Y2MtPmFycmF5W2ldLm51bU5hbHVzOw0KKyAgICAgICAgICAgIGJyZWFr Ow0KKyAgICAgICAgY2FzZSBFVkNfUFBTX05VVDoNCisgICAgICAgICAgICBwcHNfY291bnQgKz0g ZXZjYy0+YXJyYXlbaV0ubnVtTmFsdXM7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBk ZWZhdWx0Og0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKyAgICBpZiAoIXNwc19j b3VudCB8fCBzcHNfY291bnQgPiBFVkNfTUFYX1NQU19DT1VOVCkNCisgICAgICAgIHJldHVybiBB VkVSUk9SX0lOVkFMSUREQVRBOw0KKw0KKyAgICAvKiB1bnNpZ25lZCBpbnQoOCkgY29uZmlndXJh dGlvblZlcnNpb24gPSAxOyAqLw0KKyAgICBhdmlvX3c4KHBiLCBldmNjLT5jb25maWd1cmF0aW9u VmVyc2lvbik7DQorDQorICAgIC8qIHVuc2lnbmVkIGludCg4KSBwcm9maWxlX2lkYyAqLw0KKyAg ICBhdmlvX3c4KHBiLCBldmNjLT5wcm9maWxlX2lkYyk7DQorDQorICAgIC8qIHVuc2lnbmVkIGlu dCg4KSBwcm9maWxlX2lkYyAqLw0KKyAgICBhdmlvX3c4KHBiLCBldmNjLT5sZXZlbF9pZGMpOw0K Kw0KKyAgICAvKiB1bnNpZ25lZCBpbnQoMzIpIHRvb2xzZXRfaWRjX2ggKi8NCisgICAgYXZpb193 YjMyKHBiLCBldmNjLT50b29sc2V0X2lkY19oKTsNCisNCisgICAgLyogdW5zaWduZWQgaW50KDMy KSB0b29sc2V0X2lkY19sICovDQorICAgIGF2aW9fd2IzMihwYiwgZXZjYy0+dG9vbHNldF9pZGNf bCk7DQorDQorICAgIC8qDQorICAgICAqIHVuc2lnbmVkIGludCgyKSBjaHJvbWFfZm9ybWF0X2lk YzsNCisgICAgICogdW5zaWduZWQgaW50KDMpIGJpdF9kZXB0aF9sdW1hX21pbnVzODsNCisgICAg ICogdW5zaWduZWQgaW50KDMpIGJpdF9kZXB0aF9jaHJvbWFfbWludXM4Ow0KKyAgICAgKi8NCisg ICAgYXZpb193OChwYiwgZXZjYy0+Y2hyb21hX2Zvcm1hdF9pZGMgPDwgNiB8DQorICAgICAgICAg ICAgZXZjYy0+Yml0X2RlcHRoX2x1bWFfbWludXM4ICA8PCAzIHwNCisgICAgICAgICAgICBldmNj LT5iaXRfZGVwdGhfY2hyb21hX21pbnVzOCk7DQorDQorICAgIC8qIHVuc2lnbmVkIGludCgxNikg cGljX3dpZHRoX2luX2x1bWFfc2FtcGxlczsgKi8NCisgICAgYXZpb193YjE2KHBiLCBldmNjLT5w aWNfd2lkdGhfaW5fbHVtYV9zYW1wbGVzKTsNCisNCisgICAgLyogdW5zaWduZWQgaW50KDE2KSBw aWNfd2lkdGhfaW5fbHVtYV9zYW1wbGVzOyAqLw0KKyAgICBhdmlvX3diMTYocGIsIGV2Y2MtPnBp Y19oZWlnaHRfaW5fbHVtYV9zYW1wbGVzKTsNCisNCisgICAgLyoNCisgICAgICogYml0KDYpIHJl c2VydmVkID0gJzExMTExMSdiOw0KKyAgICAgKiB1bnNpZ25lZCBpbnQoMikgY2hyb21hRm9ybWF0 Ow0KKyAgICAgKi8NCisgICAgYXZpb193OChwYiwgZXZjYy0+bGVuZ3RoU2l6ZU1pbnVzT25lIHwg MHhmYyk7DQorDQorICAgIC8qIHVuc2lnbmVkIGludCg4KSBudW1PZkFycmF5czsgKi8NCisgICAg YXZpb193OChwYiwgZXZjYy0+bnVtX29mX2FycmF5cyk7DQorDQorICAgIGZvciAoaSA9IDA7IGkg PCBldmNjLT5udW1fb2ZfYXJyYXlzOyBpKyspIHsNCisgICAgICAgIC8qDQorICAgICAgICAgKiBi aXQoMSkgYXJyYXlfY29tcGxldGVuZXNzOw0KKyAgICAgICAgICogdW5zaWduZWQgaW50KDEpIHJl c2VydmVkID0gMDsNCisgICAgICAgICAqIHVuc2lnbmVkIGludCg2KSBOQUxfdW5pdF90eXBlOw0K KyAgICAgICAgICovDQorICAgICAgICBhdmlvX3c4KHBiLCBldmNjLT5hcnJheVtpXS5hcnJheV9j b21wbGV0ZW5lc3MgPDwgNyB8DQorICAgICAgICAgICAgICAgIGV2Y2MtPmFycmF5W2ldLk5BTF91 bml0X3R5cGUgJiAweDNmKTsNCisNCisgICAgICAgIC8qIHVuc2lnbmVkIGludCgxNikgbnVtTmFs dXM7ICovDQorICAgICAgICBhdmlvX3diMTYocGIsIGV2Y2MtPmFycmF5W2ldLm51bU5hbHVzKTsN CisNCisgICAgICAgIGZvciAoaiA9IDA7IGogPCBldmNjLT5hcnJheVtpXS5udW1OYWx1czsgaisr KSB7DQorICAgICAgICAgICAgLyogdW5zaWduZWQgaW50KDE2KSBuYWxVbml0TGVuZ3RoOyAqLw0K KyAgICAgICAgICAgIGF2aW9fd2IxNihwYiwgZXZjYy0+YXJyYXlbaV0ubmFsVW5pdExlbmd0aFtq XSk7DQorDQorICAgICAgICAgICAgLyogYml0KDgqbmFsVW5pdExlbmd0aCkgbmFsVW5pdDsgKi8N CisgICAgICAgICAgICBhdmlvX3dyaXRlKHBiLCBldmNjLT5hcnJheVtpXS5uYWxVbml0W2pdLA0K KyAgICAgICAgICAgICAgICAgICAgICAgZXZjYy0+YXJyYXlbaV0ubmFsVW5pdExlbmd0aFtqXSk7 DQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgcmV0dXJuIDA7DQorfQ0KKw0KK2ludCBmZl9p c29tX3dyaXRlX2V2Y2MoQVZJT0NvbnRleHQgKnBiLCBjb25zdCB1aW50OF90ICpkYXRhLA0KKyAg ICAgICAgICAgICAgICAgICAgICAgaW50IHNpemUsIGludCBwc19hcnJheV9jb21wbGV0ZW5lc3Mp DQorew0KKyAgICBFVkNEZWNvZGVyQ29uZmlndXJhdGlvblJlY29yZCBldmNjOw0KKyAgICBpbnQg cmV0ID0gMDsNCisNCisgICAgaWYgKHNpemUgPCA4KSB7DQorICAgICAgICAvKiBXZSBjYW4ndCB3 cml0ZSBhIHZhbGlkIGV2Y0MgZnJvbSB0aGUgcHJvdmlkZWQgZGF0YSAqLw0KKyAgICAgICAgcmV0 dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7DQorICAgIH0gZWxzZSBpZiAoKmRhdGEgPT0gMSkgew0K KyAgICAgICAgLyogRGF0YSBpcyBhbHJlYWR5IGV2Y0MtZm9ybWF0dGVkICovDQorICAgICAgICBh dmlvX3dyaXRlKHBiLCBkYXRhLCBzaXplKTsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQor DQorICAgIGV2Y2NfaW5pdCgmZXZjYyk7DQorDQorICAgIGludCBuYWx1X3R5cGU7DQorICAgIHNp emVfdCBuYWx1X3NpemU7DQorICAgIHVuc2lnbmVkIGNoYXIgKmJpdHMgPSAodW5zaWduZWQgY2hh ciAqKWRhdGE7DQorICAgIGludCBieXRlc190b19yZWFkID0gc2l6ZTsNCisNCisgICAgd2hpbGUg KGJ5dGVzX3RvX3JlYWQgPiBFVkNfTkFMX1VOSVRfTEVOR1RIX0JZVEUpIHsNCisNCisgICAgICAg IG5hbHVfc2l6ZSA9IHJlYWRfbmFsX3VuaXRfbGVuZ3RoKGJpdHMsIEVWQ19OQUxfVU5JVF9MRU5H VEhfQllURSk7DQorICAgICAgICBpZiAobmFsdV9zaXplID09IDApIGJyZWFrOw0KKw0KKyAgICAg ICAgYml0cyArPSBFVkNfTkFMX1VOSVRfTEVOR1RIX0JZVEU7DQorICAgICAgICBieXRlc190b19y ZWFkIC09IEVWQ19OQUxfVU5JVF9MRU5HVEhfQllURTsNCisNCisgICAgICAgIGlmIChieXRlc190 b19yZWFkIDwgbmFsdV9zaXplKSBicmVhazsNCisNCisgICAgICAgIG5hbHVfdHlwZSA9IGdldF9u YWx1X3R5cGUoYml0cywgYnl0ZXNfdG9fcmVhZCk7DQorICAgICAgICB1aW50OF90ICpuYWx1X2J1 ZiA9IGJpdHM7DQorDQorICAgICAgICBzd2l0Y2ggKG5hbHVfdHlwZSkgew0KKyAgICAgICAgY2Fz ZSBFVkNfQVBTX05VVDoNCisgICAgICAgIGNhc2UgRVZDX1NQU19OVVQ6DQorICAgICAgICBjYXNl IEVWQ19QUFNfTlVUOg0KKyAgICAgICAgICAgIHJldCA9IGV2Y2NfYXJyYXlfYWRkX25hbF91bml0 KG5hbHVfYnVmLCBuYWx1X3NpemUsIG5hbHVfdHlwZSwgcHNfYXJyYXlfY29tcGxldGVuZXNzLCAm ZXZjYyk7DQorICAgICAgICAgICAgaWYgKHJldCA8IDApDQorICAgICAgICAgICAgICAgIGdvdG8g ZW5kOw0KKyAgICAgICAgICAgIGVsc2UgaWYgKG5hbHVfdHlwZSA9PSBFVkNfU1BTX05VVCkNCisg ICAgICAgICAgICAgICAgcmV0ID0gZXZjY19wYXJzZV9zcHMobmFsdV9idWYsIG5hbHVfc2l6ZSwg JmV2Y2MpOw0KKyAgICAgICAgICAgIGlmIChyZXQgPCAwKQ0KKyAgICAgICAgICAgICAgICBnb3Rv IGVuZDsNCisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIGRlZmF1bHQ6DQorICAgICAgICAg ICAgYnJlYWs7DQorICAgICAgICB9DQorDQorICAgICAgICBiaXRzICs9IG5hbHVfc2l6ZTsNCisg ICAgICAgIGJ5dGVzX3RvX3JlYWQgLT0gbmFsdV9zaXplOw0KKyAgICB9DQorDQorICAgIHJldCA9 IGV2Y2Nfd3JpdGUocGIsICZldmNjKTsNCisNCitlbmQ6DQorICAgIGV2Y2NfY2xvc2UoJmV2Y2Mp Ow0KKyAgICByZXR1cm4gcmV0Ow0KK30NCisNCmRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9ldmMu aCBiL2xpYmF2Zm9ybWF0L2V2Yy5oDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAw MDAwMC4uZDdiOTNkNTIxZA0KLS0tIC9kZXYvbnVsbA0KKysrIGIvbGliYXZmb3JtYXQvZXZjLmgN CkBAIC0wLDAgKzEsMTQ3IEBADQorLyoNCisgKiBFVkMgaGVscGVyIGZ1bmN0aW9ucyBmb3IgbXV4 ZXJzDQorICogQ29weXJpZ2h0IChjKSAyMDIyIERhd2lkIEtvemluc2tpIDxkLmtvemluc2tpQHNh bXN1bmcuY29tPg0KKyAqDQorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLg0KKyAqDQor ICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v cg0KKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh bCBQdWJsaWMNCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXINCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCisgKg0KKyAqIEZGbXBlZyBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KKyAqIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQor ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZSBHTlUNCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLg0KKyAqDQorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYw0KKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7 IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCisgKiBGb3VuZGF0aW9uLCBJbmMu LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEg VVNBDQorICovDQorDQorI2lmbmRlZiBBVkZPUk1BVF9FVkNfSA0KKyNkZWZpbmUgQVZGT1JNQVRf RVZDX0gNCisNCisjaW5jbHVkZSA8c3RkaW50Lmg+DQorI2luY2x1ZGUgImxpYmF2dXRpbC9yYXRp b25hbC5oIg0KKyNpbmNsdWRlICJhdmlvLmgiDQorDQorLyoqDQorICogQHNlZSBJU09fSUVDXzIz MDk0LTFfMjAyMCwgNy40LjIuMiBOQUwgdW5pdCBoZWFkZXIgc2VtYW50aWMNCisgKiAgICAgIFRh YmxlIDQgw6LigqzigJwgTkFMIHVuaXQgdHlwZSBjb2RlcyBhbmQgTkFMIHVuaXQgdHlwZSBjbGFz c2VzDQorICovDQorZW51bSBFVkNOQUxVbml0VHlwZSB7DQorICAgIEVWQ19OT0lEUl9OVVQgICAg ICAgICAgICA9IDAsDQorICAgIEVWQ19JRFJfTlVUICAgICAgICAgICAgICA9IDEsDQorICAgIEVW Q19SU1ZfVkNMX05VVDAyICAgICAgICA9IDIsDQorICAgIEVWQ19SU1ZfVkNMX05VVDAzICAgICAg ICA9IDMsDQorICAgIEVWQ19SU1ZfVkNMX05VVDA0ICAgICAgICA9IDQsDQorICAgIEVWQ19SU1Zf VkNMX05VVDA1ICAgICAgICA9IDUsDQorICAgIEVWQ19SU1ZfVkNMX05VVDA2ICAgICAgICA9IDYs DQorICAgIEVWQ19SU1ZfVkNMX05VVDA3ICAgICAgICA9IDcsDQorICAgIEVWQ19SU1ZfVkNMX05V VDA4ICAgICAgICA9IDgsDQorICAgIEVWQ19SU1ZfVkNMX05VVDA5ICAgICAgICA9IDksDQorICAg IEVWQ19SU1ZfVkNMX05VVDEwICAgICAgICA9IDEwLA0KKyAgICBFVkNfUlNWX1ZDTF9OVVQxMSAg ICAgICAgPSAxMSwNCisgICAgRVZDX1JTVl9WQ0xfTlVUMTIgICAgICAgID0gMTIsDQorICAgIEVW Q19SU1ZfVkNMX05VVDEzICAgICAgICA9IDEzLA0KKyAgICBFVkNfUlNWX1ZDTF9OVVQxNCAgICAg ICAgPSAxNCwNCisgICAgRVZDX1JTVl9WQ0xfTlVUMTUgICAgICAgID0gMTUsDQorICAgIEVWQ19S U1ZfVkNMX05VVDE2ICAgICAgICA9IDE2LA0KKyAgICBFVkNfUlNWX1ZDTF9OVVQxNyAgICAgICAg PSAxNywNCisgICAgRVZDX1JTVl9WQ0xfTlVUMTggICAgICAgID0gMTgsDQorICAgIEVWQ19SU1Zf VkNMX05VVDE5ICAgICAgICA9IDE5LA0KKyAgICBFVkNfUlNWX1ZDTF9OVVQyMCAgICAgICAgPSAy MCwNCisgICAgRVZDX1JTVl9WQ0xfTlVUMjEgICAgICAgID0gMjEsDQorICAgIEVWQ19SU1ZfVkNM X05VVDIyICAgICAgICA9IDIyLA0KKyAgICBFVkNfUlNWX1ZDTF9OVVQyMyAgICAgICAgPSAyMywN CisgICAgRVZDX1NQU19OVVQgICAgICAgICAgICAgID0gMjQsDQorICAgIEVWQ19QUFNfTlVUICAg ICAgICAgICAgICA9IDI1LA0KKyAgICBFVkNfQVBTX05VVCAgICAgICAgICAgICAgPSAyNiwNCisg ICAgRVZDX0ZEX05VVCAgICAgICAgICAgICAgID0gMjcsDQorICAgIEVWQ19TRUlfTlVUICAgICAg ICAgICAgICA9IDI4LA0KKyAgICBFVkNfUlNWX05PTlZDTDI5ICAgICAgICAgPSAyOSwNCisgICAg RVZDX1JTVl9OT05WQ0wzMCAgICAgICAgID0gMzAsDQorICAgIEVWQ19SU1ZfTk9OVkNMMzEgICAg ICAgICA9IDMxLA0KKyAgICBFVkNfUlNWX05PTlZDTDMyICAgICAgICAgPSAzMiwNCisgICAgRVZD X1JTVl9OT05WQ0wzMyAgICAgICAgID0gMzMsDQorICAgIEVWQ19SU1ZfTk9OVkNMMzQgICAgICAg ICA9IDM0LA0KKyAgICBFVkNfUlNWX05PTlZDTDM1ICAgICAgICAgPSAzNSwNCisgICAgRVZDX1JT Vl9OT05WQ0wzNiAgICAgICAgID0gMzYsDQorICAgIEVWQ19SU1ZfTk9OVkNMMzcgICAgICAgICA9 IDM3LA0KKyAgICBFVkNfUlNWX05PTlZDTDM4ICAgICAgICAgPSAzOCwNCisgICAgRVZDX1JTVl9O T05WQ0wzOSAgICAgICAgID0gMzksDQorICAgIEVWQ19SU1ZfTk9OVkNMNDAgICAgICAgICA9IDQw LA0KKyAgICBFVkNfUlNWX05PTlZDTDQxICAgICAgICAgPSA0MSwNCisgICAgRVZDX1JTVl9OT05W Q0w0MiAgICAgICAgID0gNDIsDQorICAgIEVWQ19SU1ZfTk9OVkNMNDMgICAgICAgICA9IDQzLA0K KyAgICBFVkNfUlNWX05PTlZDTDQ0ICAgICAgICAgPSA0NCwNCisgICAgRVZDX1JTVl9OT05WQ0w0 NSAgICAgICAgID0gNDUsDQorICAgIEVWQ19SU1ZfTk9OVkNMNDYgICAgICAgICA9IDQ2LA0KKyAg ICBFVkNfUlNWX05PTlZDTDQ3ICAgICAgICAgPSA0NywNCisgICAgRVZDX1JTVl9OT05WQ0w0OCAg ICAgICAgID0gNDgsDQorICAgIEVWQ19SU1ZfTk9OVkNMNDkgICAgICAgICA9IDQ5LA0KKyAgICBF VkNfUlNWX05PTlZDTDUwICAgICAgICAgPSA1MCwNCisgICAgRVZDX1JTVl9OT05WQ0w1MSAgICAg ICAgID0gNTEsDQorICAgIEVWQ19SU1ZfTk9OVkNMNTIgICAgICAgICA9IDUyLA0KKyAgICBFVkNf UlNWX05PTlZDTDUzICAgICAgICAgPSA1MywNCisgICAgRVZDX1JTVl9OT05WQ0w1NCAgICAgICAg ID0gNTQsDQorICAgIEVWQ19SU1ZfTk9OVkNMNTUgICAgICAgICA9IDU1LA0KKyAgICBFVkNfVU5T UEVDX05VVDU2ICAgICAgICAgPSA1NiwNCisgICAgRVZDX1VOU1BFQ19OVVQ1NyAgICAgICAgID0g NTcsDQorICAgIEVWQ19VTlNQRUNfTlVUNTggICAgICAgICA9IDU4LA0KKyAgICBFVkNfVU5TUEVD X05VVDU5ICAgICAgICAgPSA1OSwNCisgICAgRVZDX1VOU1BFQ19OVVQ2MCAgICAgICAgID0gNjAs DQorICAgIEVWQ19VTlNQRUNfTlVUNjEgICAgICAgICA9IDYxLA0KKyAgICBFVkNfVU5TUEVDX05V VDYyICAgICAgICAgPSA2Mg0KK307DQorDQorZW51bSB7DQorICAgIC8vIDcuNC4zLjI6IGFwc192 aWRlb19wYXJhbWV0ZXJfc2V0X2lkIGlzIHUoNCkuDQorICAgIEVWQ19NQVhfQVBTX0NPVU5UID0g MzIsDQorDQorICAgIC8vIDcuNC4zLjE6IHNwc19zZXFfcGFyYW1ldGVyX3NldF9pZCBpcyBpbiBb MCwgMTVdLg0KKyAgICBFVkNfTUFYX1NQU19DT1VOVCA9IDE2LA0KKw0KKyAgICAvLyA3LjQuMy4y OiBwcHNfcGljX3BhcmFtZXRlcl9zZXRfaWQgaXMgaW4gWzAsIDYzXS4NCisgICAgRVZDX01BWF9Q UFNfQ09VTlQgPSA2NCwNCisNCisgICAgLy8gNy40LjU6IHNsaWNlIGhlYWRlciBzbGljZV9waWNf cGFyYW1ldGVyX3NldF9pZCBpbiBbMCwgNjNdDQorICAgIEVWQ19NQVhfU0hfQ09VTlQgPSA2NCwN CisNCisgICAgLy8gRS4zLjI6IGNwYl9jbnRfbWludXMxW2ldIGlzIGluIFswLCAzMV0uDQorICAg IEVWQ19NQVhfQ1BCX0NOVCA9IDMyLA0KKw0KKyAgICAvLyBBLjQuMTogaW4gdGFibGUgQS4xIHRo ZSBoaWdoZXN0IGxldmVsIGFsbG93cyBhIE1heEx1bWFQcyBvZiAzNSA2NTEgNTg0Lg0KKyAgICBF VkNfTUFYX0xVTUFfUFMgPSAzNTY1MTU4NCwNCisNCisgICAgRVZDX01BWF9OVU1fUkVGX1BJQ1Mg PSAyMSwNCisNCisgICAgLy8gQS40LjE6IHBpY193aWR0aF9pbl9sdW1hX3NhbXBsZXMgYW5kIHBp Y19oZWlnaHRfaW5fbHVtYV9zYW1wbGVzIGFyZQ0KKyAgICAvLyBjb25zdHJhaW5lZCB0byBiZSBu b3QgZ3JlYXRlciB0aGFuIHNxcnQoTWF4THVtYVBzICogOCkuICBIZW5jZSBoZWlnaHQvDQorICAg IC8vIHdpZHRoIGFyZSBib3VuZGVkIGFib3ZlIGJ5IHNxcnQoOCAqIDM1NjUxNTg0KSA9IDE2ODg4 LjIgc2FtcGxlcy4NCisgICAgRVZDX01BWF9XSURUSCAgPSAxNjg4OCwNCisgICAgRVZDX01BWF9I RUlHSFQgPSAxNjg4OCwNCisNCisgICAgLy8gQS40LjE6IHRhYmxlIEEuMSBhbGxvd3MgYXQgbW9z dCAyMiB0aWxlIHJvd3MgZm9yIGFueSBsZXZlbC4NCisgICAgRVZDX01BWF9USUxFX1JPV1MgICAg PSAyMiwNCisgICAgLy8gQS40LjE6IHRhYmxlIEEuMSBhbGxvd3MgYXQgbW9zdCAyMCB0aWxlIGNv bHVtbnMgZm9yIGFueSBsZXZlbC4NCisgICAgRVZDX01BWF9USUxFX0NPTFVNTlMgPSAyMCwNCisN CisgICAgLy8gQS40LjE6IHRhYmxlIEEuMSBhbGxvd3MgYXQgbW9zdCA2MDAgc2xpY2Ugc2VnbWVu dHMgZm9yIGFueSBsZXZlbC4NCisgICAgRVZDX01BWF9TTElDRV9TRUdNRU5UUyA9IDYwMCwNCisN CisgICAgLy8gNy40LjcuMTogaW4gdGhlIHdvcnN0IGNhc2UgKHRpbGVzX2VuYWJsZWRfZmxhZyBh bmQNCisgICAgLy8gZW50cm9weV9jb2Rpbmdfc3luY19lbmFibGVkX2ZsYWcgYXJlIGJvdGggc2V0 KSwgZW50cnkgcG9pbnRzIGNhbiBiZQ0KKyAgICAvLyBwbGFjZWQgYXQgdGhlIGJlZ2lubmluZyBv ZiBldmVyeSBDdGIgcm93IGluIGV2ZXJ5IHRpbGUsIGdpdmluZyBhbg0KKyAgICAvLyB1cHBlciBi b3VuZCBvZiAobnVtX3RpbGVfY29sdW1uc19taW51czEgKyAxKSAqIFBpY0hlaWdodEluQ3Ric1kg LSAxLg0KKyAgICAvLyBPbmx5IGEgc3RyZWFtIHdpdGggdmVyeSBoaWdoIHJlc29sdXRpb24gYW5k IHBlcnZlcnNlIHBhcmFtZXRlcnMgY291bGQNCisgICAgLy8gZ2V0IG5lYXIgdGhhdCwgdGhvdWdo LCBzbyBzZXQgYSBsb3dlciBsaW1pdCBoZXJlIHdpdGggdGhlIG1heGltdW0NCisgICAgLy8gcG9z c2libGUgdmFsdWUgZm9yIDRLIHZpZGVvIChhdCBtb3N0IDEzNSAxNngxNiBDdGIgcm93cykuDQor ICAgIEhFVkNfTUFYX0VOVFJZX1BPSU5UX09GRlNFVFMgPSBFVkNfTUFYX1RJTEVfQ09MVU1OUyAq IDEzNSwNCit9Ow0KKw0KK2ludCBmZl9pc29tX3dyaXRlX2V2Y2MoQVZJT0NvbnRleHQgKnBiLCBj b25zdCB1aW50OF90ICpkYXRhLA0KKyAgICAgICAgICAgICAgICAgICAgICAgaW50IHNpemUsIGlu dCBwc19hcnJheV9jb21wbGV0ZW5lc3MpOw0KKw0KKyNlbmRpZiAvLyBBVkZPUk1BVF9FVkNfSA0K XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlDQpkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvZXZj ZGVjLmMgYi9saWJhdmZvcm1hdC9ldmNkZWMuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4 IDAwMDAwMDAwMDAuLjU4ZGM2NzFkMjQNCi0tLSAvZGV2L251bGwNCisrKyBiL2xpYmF2Zm9ybWF0 L2V2Y2RlYy5jDQpAQCAtMCwwICsxLDE0MiBAQA0KKy8qDQorICogUkFXIEVWQyB2aWRlbyBkZW11 eGVyDQorICoNCisgKiBDb3B5cmlnaHQgKGMpIDIwMjEgRGF3aWQgS296aW5za2kgPGQua296aW5z a2lAc2Ftc3VuZy5jb20+DQorICoNCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuDQor ICoNCisgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yDQorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH ZW5lcmFsIFB1YmxpYw0KKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlcg0KKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBv ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KKyAqDQorICogRkZtcGVnIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQorICogYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YNCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlIEdOVQ0KKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuDQorICoNCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljDQorICogTGljZW5zZSBhbG9uZyB3aXRoIEZG bXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KKyAqIEZvdW5kYXRpb24s IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAt MTMwMSBVU0ENCisgKi8NCisNCisjaW5jbHVkZSAibGliYXZjb2RlYy9nZXRfYml0cy5oIg0KKyNp bmNsdWRlICJsaWJhdmNvZGVjL2dvbG9tYi5oIg0KKyNpbmNsdWRlICJsaWJhdmNvZGVjL2ludGVy bmFsLmgiDQorDQorI2luY2x1ZGUgInJhd2RlYy5oIg0KKyNpbmNsdWRlICJhdmZvcm1hdC5oIg0K Kw0KKy8vIFRoZSBsZW5ndGggZmllbGQgdGhhdCBpbmRpY2F0ZXMgdGhlIGxlbmd0aCBpbiBieXRl cyBvZiB0aGUgZm9sbG93aW5nIE5BTCB1bml0IGlzIGNvbmZpZ3VyZWQgdG8gYmUgb2YgNCBieXRl cw0KKyNkZWZpbmUgRVZDX05BTF9VTklUX0xFTkdUSF9CWVRFICAgICAgICAoNCkgIC8qIGJ5dGUg Ki8NCisNCisjZGVmaW5lIEVWQ19OQUxfSEVBREVSX1NJWkUgICAgICAgICAgICAgKDIpICAvKiBi eXRlICovDQorI2RlZmluZSBNQVhfU1BTX0NOVCAgICAgICAgICAgICAgICAgICAgICgxNikgLyog ZGVmaW5lZCB2YWx1ZSBpbiBFVkMgc3RhbmRhcmQgKi8NCisNCisvLyBOQUxVIHR5cGVzDQorLy8g QHNlZSBJU09fSUVDXzIzMDk0LTFfMjAyMCA3LjQuMi4yIE5BTCB1bml0IGhlYWRlciBzZW1hbnRp Y3MNCisvLw0KKyNkZWZpbmUgRVZDX05VVF9OT05JRFIgICAgICAgICAgICAgICAgICAoMCkgIC8q IENvZGVkIHNsaWNlIG9mIGEgbm9uLUlEUiBwaWN0dXJlICovDQorI2RlZmluZSBFVkNfTlVUX0lE UiAgICAgICAgICAgICAgICAgICAgICgxKSAgLyogQ29kZWQgc2xpY2Ugb2YgYW4gSURSIHBpY3R1 cmUgKi8NCisjZGVmaW5lIEVWQ19OVVRfU1BTICAgICAgICAgICAgICAgICAgICAgKDI0KSAvKiBT ZXF1ZW5jZSBwYXJhbWV0ZXIgc2V0ICovDQorI2RlZmluZSBFVkNfTlVUX1BQUyAgICAgICAgICAg ICAgICAgICAgICgyNSkgLyogUGljdHVyZSBwYXJlbWV0ZXIgc2V0ICovDQorI2RlZmluZSBFVkNf TlVUX0FQUyAgICAgICAgICAgICAgICAgICAgICgyNikgLyogQWRhcHRhdGlvbiBwYXJhbWV0ZXIg c2V0ICovDQorI2RlZmluZSBFVkNfTlVUX0ZEICAgICAgICAgICAgICAgICAgICAgICgyNykgLyog RmlsbGVyIGRhdGEgKi8NCisjZGVmaW5lIEVWQ19OVVRfU0VJICAgICAgICAgICAgICAgICAgICAg KDI4KSAvKiBTdXBwbGVtZW50YWwgZW5oYW5jZW1lbnQgaW5mb3JtYXRpb24gKi8NCisNCit0eXBl ZGVmIHN0cnVjdCBFVkNQYXJzZXJDb250ZXh0IHsNCisgICAgaW50IGdvdF9zcHM7DQorICAgIGlu dCBnb3RfcHBzOw0KKyAgICBpbnQgZ290X2lkcjsNCisgICAgaW50IGdvdF9ub25pZHI7DQorfSBF VkNQYXJzZXJDb250ZXh0Ow0KKw0KK3N0YXRpYyBpbnQgZ2V0X25hbHVfdHlwZShjb25zdCB1aW50 OF90ICpiaXRzLCBpbnQgYml0c19zaXplKQ0KK3sNCisgICAgaW50IHVuaXRfdHlwZV9wbHVzMSA9 IDA7DQorDQorICAgIGlmKGJpdHNfc2l6ZSA+PSBFVkNfTkFMX0hFQURFUl9TSVpFKSB7DQorICAg ICAgICB1bnNpZ25lZCBjaGFyICpwID0gKHVuc2lnbmVkIGNoYXIgKiliaXRzOw0KKyAgICAgICAg Ly8gZm9yYmlkZGVuX3plcm9fYml0DQorICAgICAgICBpZiAoKHBbMF0gJiAweDgwKSAhPSAwKSB7 DQorICAgICAgICAgICAgYXZfbG9nKE5VTEwsIEFWX0xPR19FUlJPUiwgIkNhbm5vdCBnZXQgYml0 c3RyZWFtIGluZm9ybWF0aW9uLiBNYWxmb3JtZWQgYml0c3RyZWFtLlxuIik7DQorICAgICAgICAg ICAgcmV0dXJuIC0xOw0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgLy8gbmFsX3VuaXRfdHlwZQ0K KyAgICAgICAgdW5pdF90eXBlX3BsdXMxID0gKHBbMF0gPj4gMSkgJiAweDNGOw0KKyAgICB9DQor DQorICAgIHJldHVybiB1bml0X3R5cGVfcGx1czEgLSAxOw0KK30NCisNCitzdGF0aWMgdWludDMy X3QgcmVhZF9uYWxfdW5pdF9sZW5ndGgoY29uc3QgdWludDhfdCAqYml0cywgaW50IGJpdHNfc2l6 ZSkNCit7DQorICAgIHVpbnQzMl90IG5hbHVfbGVuID0gMDsNCisNCisgICAgaWYoYml0c19zaXpl ID49IEVWQ19OQUxfVU5JVF9MRU5HVEhfQllURSkgew0KKw0KKyAgICAgICAgaW50IHQgPSAwOw0K KyAgICAgICAgdW5zaWduZWQgY2hhciAqcCA9ICh1bnNpZ25lZCBjaGFyICopYml0czsNCisNCisg ICAgICAgIGZvcihpbnQgaT0wOyBpPEVWQ19OQUxfVU5JVF9MRU5HVEhfQllURTsgaSsrKSB7DQor ICAgICAgICAgICAgdCA9ICh0IDw8IDgpIHwgcFtpXTsNCisgICAgICAgIH0NCisNCisgICAgICAg IG5hbHVfbGVuID0gdDsNCisgICAgICAgIGlmKG5hbHVfbGVuID09IDApIHsNCisgICAgICAgICAg ICBhdl9sb2coTlVMTCwgQVZfTE9HX0VSUk9SLCAiSW52YWxpZCBiaXRzdHJlYW0gc2l6ZSFcbiIp Ow0KKyAgICAgICAgICAgIHJldHVybiAwOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIHJl dHVybiBuYWx1X2xlbjsNCit9DQorDQorc3RhdGljIGludCBwYXJzZV9uYWxfdW5pdHMoY29uc3Qg QVZQcm9iZURhdGEgKnAsIEVWQ1BhcnNlckNvbnRleHQgKmV2KQ0KK3sNCisgICAgaW50IG5hbHVf dHlwZTsNCisgICAgc2l6ZV90IG5hbHVfc2l6ZTsNCisgICAgdW5zaWduZWQgY2hhciAqYml0cyA9 ICh1bnNpZ25lZCBjaGFyICopcC0+YnVmOw0KKyAgICBpbnQgYnl0ZXNfdG9fcmVhZCA9IHAtPmJ1 Zl9zaXplOw0KKw0KKyAgICB3aGlsZShieXRlc190b19yZWFkID4gRVZDX05BTF9VTklUX0xFTkdU SF9CWVRFKSB7DQorDQorICAgICAgICBuYWx1X3NpemUgPSByZWFkX25hbF91bml0X2xlbmd0aChi aXRzLCBFVkNfTkFMX1VOSVRfTEVOR1RIX0JZVEUpOw0KKyAgICAgICAgaWYobmFsdV9zaXplID09 IDApIGJyZWFrOw0KKw0KKyAgICAgICAgYml0cyArPSBFVkNfTkFMX1VOSVRfTEVOR1RIX0JZVEU7 DQorICAgICAgICBieXRlc190b19yZWFkIC09IEVWQ19OQUxfVU5JVF9MRU5HVEhfQllURTsNCisN CisgICAgICAgIGlmKGJ5dGVzX3RvX3JlYWQgPCBuYWx1X3NpemUpIGJyZWFrOw0KKw0KKyAgICAg ICAgbmFsdV90eXBlID0gZ2V0X25hbHVfdHlwZShiaXRzLCBieXRlc190b19yZWFkKTsNCisNCisg ICAgICAgIGJpdHMgKz0gbmFsdV9zaXplOw0KKyAgICAgICAgYnl0ZXNfdG9fcmVhZCAtPSBuYWx1 X3NpemU7DQorDQorICAgICAgICBpZiAobmFsdV90eXBlID09IEVWQ19OVVRfU1BTKQ0KKyAgICAg ICAgICAgIGV2LT5nb3Rfc3BzKys7DQorICAgICAgICBlbHNlIGlmIChuYWx1X3R5cGUgPT0gRVZD X05VVF9QUFMpDQorICAgICAgICAgICAgZXYtPmdvdF9wcHMrKzsNCisgICAgICAgIGVsc2UgaWYg KG5hbHVfdHlwZSA9PSBFVkNfTlVUX0lEUiApDQorICAgICAgICAgICAgZXYtPmdvdF9pZHIrKzsN CisgICAgICAgIGVsc2UgaWYgKG5hbHVfdHlwZSA9PSBFVkNfTlVUX05PTklEUikNCisgICAgICAg ICAgICBldi0+Z290X25vbmlkcisrOw0KKyAgICB9DQorDQorICAgIHJldHVybiAwOw0KK30NCisN CitzdGF0aWMgaW50IGV2Y19wcm9iZShjb25zdCBBVlByb2JlRGF0YSAqcCkNCit7DQorICAgIEVW Q1BhcnNlckNvbnRleHQgZXYgPSB7MH07DQorICAgIGludCByZXQgPSBwYXJzZV9uYWxfdW5pdHMo cCwgJmV2KTsNCisNCisgICAgaWYgKHJldCA9PSAwICYmIGV2LmdvdF9zcHMgJiYgZXYuZ290X3Bw cyAmJiAoZXYuZ290X2lkciB8fCBldi5nb3Rfbm9uaWRyID4gMykpDQorICAgICAgICByZXR1cm4g QVZQUk9CRV9TQ09SRV9FWFRFTlNJT04gKyAxOyAgLy8gMSBtb3JlIHRoYW4gLm1wZw0KKw0KKyAg ICByZXR1cm4gMDsNCit9DQorDQorRkZfREVGX1JBV1ZJREVPX0RFTVVYRVIoZXZjLCAicmF3IEVW QyB2aWRlbyIsIGV2Y19wcm9iZSwgImV2YyIsIEFWX0NPREVDX0lEX0VWQykNCmRpZmYgLS1naXQg YS9saWJhdmZvcm1hdC9pc29tX3RhZ3MuYyBiL2xpYmF2Zm9ybWF0L2lzb21fdGFncy5jDQppbmRl eCBjNWZkNzk4N2Y2Li5jZDdlYzc5MDNhIDEwMDY0NA0KLS0tIGEvbGliYXZmb3JtYXQvaXNvbV90 YWdzLmMNCisrKyBiL2xpYmF2Zm9ybWF0L2lzb21fdGFncy5jDQpAQCAtMTQ3LDYgKzE0Nyw4IEBA IGNvbnN0IEFWQ29kZWNUYWcgZmZfY29kZWNfbW92dmlkZW9fdGFnc1tdID0gew0KICAgICB7IEFW X0NPREVDX0lEX0gyNjQsIE1LVEFHKCdkJywgJ3YnLCAnYScsICcxJykgfSwgLyogQVZDLWJhc2Vk IERvbGJ5IFZpc2lvbiBkZXJpdmVkIGZyb20gYXZjMSAqLw0KICAgICB7IEFWX0NPREVDX0lEX0gy NjQsIE1LVEFHKCdkJywgJ3YnLCAnYScsICd2JykgfSwgLyogQVZDLWJhc2VkIERvbGJ5IFZpc2lv biBkZXJpdmVkIGZyb20gYXZjMyAqLw0KIA0KKyAgICB7IEFWX0NPREVDX0lEX0VWQywgIE1LVEFH KCdlJywgJ3YnLCAnYycsICcxJykgfSwgLyogRVZDL01QRUctNSAqLw0KKw0KICAgICB7IEFWX0NP REVDX0lEX1ZQOCwgIE1LVEFHKCd2JywgJ3AnLCAnMCcsICc4JykgfSwgLyogVlA4ICovDQogICAg IHsgQVZfQ09ERUNfSURfVlA5LCAgTUtUQUcoJ3YnLCAncCcsICcwJywgJzknKSB9LCAvKiBWUDkg Ki8NCiAgICAgeyBBVl9DT0RFQ19JRF9BVjEsICBNS1RBRygnYScsICd2JywgJzAnLCAnMScpIH0s IC8qIEFWMSAqLw0KZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L21vdi5jIGIvbGliYXZmb3JtYXQv bW92LmMNCmluZGV4IGEwOWE3NjJkOTEuLjVlZmZlNDUyODkgMTAwNjQ0DQotLS0gYS9saWJhdmZv cm1hdC9tb3YuYw0KKysrIGIvbGliYXZmb3JtYXQvbW92LmMNCkBAIC05MDYxLDcgKzkwNjEsNyBA QCBjb25zdCBBVklucHV0Rm9ybWF0IGZmX21vdl9kZW11eGVyID0gew0KICAgICAubG9uZ19uYW1l ICAgICAgPSBOVUxMX0lGX0NPTkZJR19TTUFMTCgiUXVpY2tUaW1lIC8gTU9WIiksDQogICAgIC5w cml2X2NsYXNzICAgICA9ICZtb3ZfY2xhc3MsDQogICAgIC5wcml2X2RhdGFfc2l6ZSA9IHNpemVv ZihNT1ZDb250ZXh0KSwNCi0gICAgLmV4dGVuc2lvbnMgICAgID0gIm1vdixtcDQsbTRhLDNncCwz ZzIsbWoyLHBzcCxtNGIsaXNtLGlzbXYsaXNtYSxmNHYsYXZpZiIsDQorICAgIC5leHRlbnNpb25z ICAgICA9ICJtb3YsbXA0LG00YSwzZ3AsM2cyLG1qMixwc3AsbTRiLGlzbSxpc212LGlzbWEsZjR2 LGF2aWYsZXZjIiwNCiAgICAgLmZsYWdzX2ludGVybmFsID0gRkZfRk1UX0lOSVRfQ0xFQU5VUCwN CiAgICAgLnJlYWRfcHJvYmUgICAgID0gbW92X3Byb2JlLA0KICAgICAucmVhZF9oZWFkZXIgICAg PSBtb3ZfcmVhZF9oZWFkZXIsDQpkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvbW92ZW5jLmMgYi9s aWJhdmZvcm1hdC9tb3ZlbmMuYw0KaW5kZXggNTYwOGFmZGU0Mi4uZDA1ZDQ2ODAwMiAxMDA2NDQN Ci0tLSBhL2xpYmF2Zm9ybWF0L21vdmVuYy5jDQorKysgYi9saWJhdmZvcm1hdC9tb3ZlbmMuYw0K QEAgLTM1LDYgKzM1LDcgQEANCiAjaW5jbHVkZSAiaXNvbS5oIg0KICNpbmNsdWRlICJhdjEuaCIN CiAjaW5jbHVkZSAiYXZjLmgiDQorI2luY2x1ZGUgImV2Yy5oIg0KICNpbmNsdWRlICJsaWJhdmNv ZGVjL2FjM19wYXJzZXJfaW50ZXJuYWwuaCINCiAjaW5jbHVkZSAibGliYXZjb2RlYy9kbnhoZGRh dGEuaCINCiAjaW5jbHVkZSAibGliYXZjb2RlYy9mbGFjLmgiDQpAQCAtMTM5Miw2ICsxMzkzLDIx IEBAIHN0YXRpYyBpbnQgbW92X3dyaXRlX2h2Y2NfdGFnKEFWSU9Db250ZXh0ICpwYiwgTU9WVHJh Y2sgKnRyYWNrKQ0KICAgICByZXR1cm4gdXBkYXRlX3NpemUocGIsIHBvcyk7DQogfQ0KIA0KK3N0 YXRpYyBpbnQgbW92X3dyaXRlX2V2Y2NfdGFnKEFWSU9Db250ZXh0ICpwYiwgTU9WVHJhY2sgKnRy YWNrKQ0KK3sNCisgICAgaW50NjRfdCBwb3MgPSBhdmlvX3RlbGwocGIpOw0KKw0KKyAgICBhdmlv X3diMzIocGIsIDApOw0KKyAgICBmZmlvX3dmb3VyY2MocGIsICJldmNDIik7DQorDQorICAgIGlm ICh0cmFjay0+dGFnID09IE1LVEFHKCdlJywndicsJ2MnLCcxJykpDQorICAgICAgICBmZl9pc29t X3dyaXRlX2V2Y2MocGIsIHRyYWNrLT52b3NfZGF0YSwgdHJhY2stPnZvc19sZW4sIDEpOw0KKyAg ICBlbHNlDQorICAgICAgICBmZl9pc29tX3dyaXRlX2V2Y2MocGIsIHRyYWNrLT52b3NfZGF0YSwg dHJhY2stPnZvc19sZW4sIDApOw0KKw0KKyAgICByZXR1cm4gdXBkYXRlX3NpemUocGIsIHBvcyk7 DQorfQ0KKw0KIC8qIGFsc28gdXNlZCBieSBhbGwgYXZpZCBjb2RlY3MgKGR2LCBpbXgsIG1lcmlk aWVuKSBhbmQgdGhlaXIgdmFyaWFudHMgKi8NCiBzdGF0aWMgaW50IG1vdl93cml0ZV9hdmlkX3Rh ZyhBVklPQ29udGV4dCAqcGIsIE1PVlRyYWNrICp0cmFjaykNCiB7DQpAQCAtMTY0MSw2ICsxNjU3 LDE2IEBAIHN0YXRpYyBpbnQgbW92X2dldF9oMjY0X2NvZGVjX3RhZyhBVkZvcm1hdENvbnRleHQg KnMsIE1PVlRyYWNrICp0cmFjaykNCiAgICAgcmV0dXJuIHRhZzsNCiB9DQogDQorc3RhdGljIGlu dCBtb3ZfZ2V0X2V2Y19jb2RlY190YWcoQVZGb3JtYXRDb250ZXh0ICpzLCBNT1ZUcmFjayAqdHJh Y2spDQorew0KKyAgICBpbnQgdGFnID0gdHJhY2stPnBhci0+Y29kZWNfdGFnOw0KKw0KKyAgICBp ZiAoIXRhZykNCisgICAgICAgIHRhZyA9IE1LVEFHKCdlJywgJ3YnLCAnYycsICdpJyk7DQorDQor ICAgIHJldHVybiB0YWc7DQorfQ0KKw0KIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgew0KICAgICBlbnVt IEFWUGl4ZWxGb3JtYXQgcGl4X2ZtdDsNCiAgICAgdWludDMyX3QgdGFnOw0KQEAgLTE3MjIsNiAr MTc0OCw4IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgbW92X2dldF9jb2RlY190YWcoQVZGb3JtYXRD b250ZXh0ICpzLCBNT1ZUcmFjayAqdHJhY2spDQogICAgICAgICAgICAgdGFnID0gbW92X2dldF9t cGVnMl94ZGNhbV9jb2RlY190YWcocywgdHJhY2spOw0KICAgICAgICAgZWxzZSBpZiAodHJhY2st PnBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSDI2NCkNCiAgICAgICAgICAgICB0YWcgPSBt b3ZfZ2V0X2gyNjRfY29kZWNfdGFnKHMsIHRyYWNrKTsNCisgICAgICAgIGVsc2UgaWYgKHRyYWNr LT5wYXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX0VWQykNCisgICAgICAgICAgICB0YWcgPSBt b3ZfZ2V0X2V2Y19jb2RlY190YWcocywgdHJhY2spOw0KICAgICAgICAgZWxzZSBpZiAodHJhY2st PnBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfRE5YSEQpDQogICAgICAgICAgICAgdGFnID0g bW92X2dldF9kbnhoZF9jb2RlY190YWcocywgdHJhY2spOw0KICAgICAgICAgZWxzZSBpZiAodHJh Y2stPnBhci0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVfVklERU8pIHsNCkBAIC0yMjgwLDYg KzIzMDgsOSBAQCBzdGF0aWMgaW50IG1vdl93cml0ZV92aWRlb190YWcoQVZGb3JtYXRDb250ZXh0 ICpzLCBBVklPQ29udGV4dCAqcGIsIE1PVk11eENvbnRleA0KICAgICAgICAgbW92X3dyaXRlX2F2 Y2NfdGFnKHBiLCB0cmFjayk7DQogICAgICAgICBpZiAodHJhY2stPm1vZGUgPT0gTU9ERV9JUE9E KQ0KICAgICAgICAgICAgIG1vdl93cml0ZV91dWlkX3RhZ19pcG9kKHBiKTsNCisgICAgfQ0KKyAg ICBlbHNlIGlmICh0cmFjay0+cGFyLT5jb2RlY19pZCA9PUFWX0NPREVDX0lEX0VWQykgew0KKyAg ICAgICAgbW92X3dyaXRlX2V2Y2NfdGFnKHBiLCB0cmFjayk7DQogICAgIH0gZWxzZSBpZiAodHJh Y2stPnBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfVlA5KSB7DQogICAgICAgICBtb3Zfd3Jp dGVfdnBjY190YWcobW92LT5mYywgcGIsIHRyYWNrKTsNCiAgICAgfSBlbHNlIGlmICh0cmFjay0+ cGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9BVjEpIHsNCkBAIC02MDMwLDcgKzYwNjEsOCBA QCBpbnQgZmZfbW92X3dyaXRlX3BhY2tldChBVkZvcm1hdENvbnRleHQgKnMsIEFWUGFja2V0ICpw a3QpDQogICAgIGlmICgocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9ETlhIRCB8fA0KICAg ICAgICAgIHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSDI2NCB8fA0KICAgICAgICAgIHBh ci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfSEVWQyB8fA0KLSAgICAgICAgIHBhci0+Y29kZWNf aWQgPT0gQVZfQ09ERUNfSURfVFJVRUhEKSAmJiAhdHJrLT52b3NfbGVuICYmDQorICAgICAgICAg cGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9UUlVFSEQgfHwNCisgICAgICAgICBwYXItPmNv ZGVjX2lkID09IEFWX0NPREVDX0lEX0VWQykgJiYgIXRyay0+dm9zX2xlbiAmJg0KICAgICAgICAg ICFUQUdfSVNfQVZDSSh0cmstPnRhZykpIHsNCiAgICAgICAgIC8qIGNvcHkgZnJhbWUgdG8gY3Jl YXRlIG5lZWRlZCBhdG9tcyAqLw0KICAgICAgICAgdHJrLT52b3NfbGVuICA9IHNpemU7DQpAQCAt NzY4OSw2ICs3NzIxLDcgQEAgc3RhdGljIGNvbnN0IEFWQ29kZWNUYWcgY29kZWNfbXA0X3RhZ3Nb XSA9IHsNCiAgICAgeyBBVl9DT0RFQ19JRF9IMjY0LCAgICAgICAgICAgIE1LVEFHKCdhJywgJ3Yn LCAnYycsICczJykgfSwNCiAgICAgeyBBVl9DT0RFQ19JRF9IRVZDLCAgICAgICAgICAgIE1LVEFH KCdoJywgJ2UnLCAndicsICcxJykgfSwNCiAgICAgeyBBVl9DT0RFQ19JRF9IRVZDLCAgICAgICAg ICAgIE1LVEFHKCdoJywgJ3YnLCAnYycsICcxJykgfSwNCisgICAgeyBBVl9DT0RFQ19JRF9FVkMs ICAgICAgICAgICAgIE1LVEFHKCdlJywgJ3YnLCAnYycsICcxJykgfSwNCiAgICAgeyBBVl9DT0RF Q19JRF9NUEVHMlZJREVPLCAgICAgIE1LVEFHKCdtJywgJ3AnLCAnNCcsICd2JykgfSwNCiAgICAg eyBBVl9DT0RFQ19JRF9NUEVHMVZJREVPLCAgICAgIE1LVEFHKCdtJywgJ3AnLCAnNCcsICd2Jykg fSwNCiAgICAgeyBBVl9DT0RFQ19JRF9NSlBFRywgICAgICAgICAgIE1LVEFHKCdtJywgJ3AnLCAn NCcsICd2JykgfSwNCmRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9yYXdlbmMuYyBiL2xpYmF2Zm9y bWF0L3Jhd2VuYy5jDQppbmRleCAyNjA5OWNiMWMxLi40OGRlZGZhMzc1IDEwMDY0NA0KLS0tIGEv bGliYXZmb3JtYXQvcmF3ZW5jLmMNCisrKyBiL2xpYmF2Zm9ybWF0L3Jhd2VuYy5jDQpAQCAtNDAx LDYgKzQwMSwxOSBAQCBjb25zdCBBVk91dHB1dEZvcm1hdCBmZl9oZXZjX211eGVyID0gew0KIH07 DQogI2VuZGlmDQogDQorI2lmIENPTkZJR19FVkNfTVVYRVINCitBVk91dHB1dEZvcm1hdCBmZl9l dmNfbXV4ZXIgPSB7DQorICAgIC5uYW1lICAgICAgICAgICAgICA9ICJldmMiLA0KKyAgICAubG9u Z19uYW1lICAgICAgICAgPSBOVUxMX0lGX0NPTkZJR19TTUFMTCgicmF3IEVWQyB2aWRlbyIpLA0K KyAgICAuZXh0ZW5zaW9ucyAgICAgICAgPSAiZXZjIiwNCisgICAgLmF1ZGlvX2NvZGVjICAgICAg ID0gQVZfQ09ERUNfSURfTk9ORSwNCisgICAgLnZpZGVvX2NvZGVjICAgICAgID0gQVZfQ09ERUNf SURfRVZDLA0KKyAgICAud3JpdGVfaGVhZGVyICAgICAgPSBmb3JjZV9vbmVfc3RyZWFtLA0KKyAg ICAud3JpdGVfcGFja2V0ICAgICAgPSBmZl9yYXdfd3JpdGVfcGFja2V0LA0KKyAgICAuZmxhZ3Mg ICAgICAgICAgICAgPSBBVkZNVF9OT1RJTUVTVEFNUFMsDQorfTsNCisjZW5kaWYNCisNCiAjaWYg Q09ORklHX000Vl9NVVhFUg0KIGNvbnN0IEFWT3V0cHV0Rm9ybWF0IGZmX200dl9tdXhlciA9IHsN CiAgICAgLm5hbWUgICAgICAgICAgICAgID0gIm00diIsDQotLSANCjIuMTcuMQ0KDQoNCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwg bWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsg YWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJq ZWN0ICJ1bnN1YnNjcmliZSIuCg==