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 F227F42AAC for ; Thu, 11 Aug 2022 12:37:08 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1B90668B937; Thu, 11 Aug 2022 15:36:56 +0300 (EEST) Received: from mailout1.w1.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0E6C968B926 for ; Thu, 11 Aug 2022 15:36:50 +0300 (EEST) Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout1.w1.samsung.com (KnoxPortal) with ESMTP id 20220811123648euoutp01f9437187fc3c14e32bc3bf7d64f50c46~KSpMy0VPZ2740327403euoutp01g for ; Thu, 11 Aug 2022 12:36:48 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.w1.samsung.com 20220811123648euoutp01f9437187fc3c14e32bc3bf7d64f50c46~KSpMy0VPZ2740327403euoutp01g DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1660221408; bh=5IWcM4DgRo3ixgJlwGNrtVWHNFVwkmLrfhdSM+thFes=; h=From:To:Subject:Date:References:From; b=AHQimgteKOlkhjjIPWPhi8QdlH7Q1VxE2xjaPNZi/F7UN/hvnF65n05O9nG4PZr68 m0MRtWubluTFaijgdQsdmrinVpgl6RMsdc6gKcmSUdHfpQZP7sAbP+cowzyRbRv8hg xq8IPwLblgwLqDY4CQDWKg7IKvTnBDqgDwzD6/X8= Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20220811123648eucas1p285c87b51dcabfa57c71e5f60ce24a082~KSpMq50NP2127321273eucas1p2i for ; Thu, 11 Aug 2022 12:36:48 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges3new.samsung.com (EUCPMTA) with SMTP id AE.95.09580.0E7F4F26; Thu, 11 Aug 2022 13:36:48 +0100 (BST) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p1.samsung.com (KnoxPortal) with ESMTPA id 20220811123648eucas1p1336fd2c107be031a4a274057bf20084f~KSpMXpoZ01459614596eucas1p19 for ; Thu, 11 Aug 2022 12:36:48 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20220811123648eusmtrp153bfff7fd9efeb796d6df27cb252e8eb~KSpMXGAdD1618816188eusmtrp1K for ; Thu, 11 Aug 2022 12:36:48 +0000 (GMT) X-AuditID: cbfec7f5-9c3ff7000000256c-75-62f4f7e054e4 Received: from eusmtip1.samsung.com ( [203.254.199.221]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id C1.6E.09038.0E7F4F26; Thu, 11 Aug 2022 13:36:48 +0100 (BST) Received: from AMDN3260 (unknown [106.210.132.171]) by eusmtip1.samsung.com (KnoxPortal) with ESMTPA id 20220811123647eusmtip1e49b17c611a45bd46f45bafa4ed6bee3~KSpMDlcMD2469924699eusmtip1Y for ; Thu, 11 Aug 2022 12:36:47 +0000 (GMT) From: "Dawid Kozinski" To: Date: Thu, 11 Aug 2022 14:36:47 +0200 Message-ID: <006a01d8ad7f$05f788f0$11e69ad0$@samsung.com> MIME-Version: 1.0 X-Mailer: Microsoft Outlook 16.0 Thread-Index: Aditfo7ChTWvHrYNSWeR75mqCNLGwQ== Content-Language: pl X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrBIsWRmVeSWpSXmKPExsWy7djP87oPvn9JMjg3XcHi26czzA6MHn8W bWYJYIzisklJzcksSy3St0vgylj8/i9bwYkbTBXn1i9hbWA8eZKpi5GTQ0LARGLjuglANheH kMAKRolZv7qhnElMEgumHGeFcCYySezevpQFpuV15242iMRyRol5zcsZIZw2JolNrVMYQarY BPQlZi76xAZiiwjISqz+NwXMFhYIlZj8+CeYzSKgKjF90RmgfRwcvAKWEj1H4kDCvAKCEidn PgFbxiygLbFs4WtmiMUKEj+fLmMFKRcR0JOYuT8cokRE4sajFkaIkp/sEp2N1hC2i8TGq31Q cWGJV8e3sEPYMhKnJ/ewgIyRECiWONTvAGHWSBz6kQ5RYS3xtvE4I0iYWUBTYv0ufYiwo8SO rhNsENV8EjfeCkLs55OYtG06M0SYV6KjTQjCVJHo6xSDaJSSeLpsDtQTHhI3vp9lnMCoOAvJ r7OQ/DoLyVOzEE5YwMiyilE8tbQ4Nz212DgvtVyvODG3uDQvXS85P3cTIzAxnP53/OsOxhWv PuodYmTiYDzEKMHBrCTCW7boc5IQb0piZVVqUX58UWlOavEhRmkOFiVx3uTMDYlCAumJJanZ qakFqUUwWSYOTqkGJjVWtvCIsjjOdcLczkFLGb9vbTY4stF71jnuPZKuT9rZ1tm+P8+6Q3Df 1TONJ5x+TtSV6Fr7Ib/tZMcZwT+iGcd+XKl45z5LbqX6xrbV2qdZuHfV/vm5fltncsGK/kmF wv/0ue1KdaaErsi6e3ibUIL6jsB/N94xnfl2lKH0+4TrVy2jz7FoZF2sWPBnbtGLmcUhNc0P NXcG9XAwlU5/qXH+a/P9aR2Kb/IMbm6elVasaOHHUf7r8D6nz5+z5zb1OXh4rP4s0L+Ei5GT 9eOEmksVydGHjynF895/ceFp+553E1fNX6csJHnQZovEn7v7Db/0yW520Ltz5m6u67SHYWu8 dqwMXXrv8fQju0s957oqsRRnJBpqMRcVJwIAItBR3XsDAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrGLMWRmVeSWpSXmKPExsVy+t/xu7oPvn9JMtg/kd3i26czzA6MHn8W bWYJYIzSsynKLy1JVcjILy6xVYo2tDDSM7S00DMysdQzNDaPtTIyVdK3s0lJzcksSy3St0vQ yzh/9ytjwfRbjBWTlss3MB6ZzdjFyMkhIWAi8bpzN1sXIxeHkMBSRon/ax6wQSSkJJYuXQRV JCzx51oXVFELk0TzoudMIAk2AX2JmYs+gTWICMhKrP43BcwWFgiWeHzmC1gzi4CqxPRFZ4Dq OTh4BSwleo7EgYR5BQQlTs58wgJiMwtoSzy9+RTOXrbwNTPEXgWJn0+XsYK0igjoSczcHw5R IiJx41EL4wRGgVlIJs1CMmkWkkmzkLQsYGRZxSiSWlqcm55bbKRXnJhbXJqXrpecn7uJERjg 24793LKDceWrj3qHGJk4GA8xSnAwK4nwli36nCTEm5JYWZValB9fVJqTWnyI0RTos4nMUqLJ +cAYyyuJNzQzMDU0MbM0MLU0M1YS5/Us6EgUEkhPLEnNTk0tSC2C6WPi4JRqYJoZ+YS17Ppv pj9qsQ1FzZuP5u1rY8zf5ODxSuqbr0RwYr/TxcU5Bknftzw17vonNOswexLLi3s9ebI/W81m HHP8eHy7zlO9LVt96tOjCpc9m95vE+X/Wsl/WlSfIKuo1/tq2XqOJ0kMhz4r3L6gHZbv8GWG 0sbOD6pOLBK9fsefn3PaP+3dZF+bZVoXtp0LVbJcmftk6z7x1k0qIe9zN2WION5x6FiRtWpl wxo+M1HpM4dEo1XjL+yO/ffD0PDtvrs571e4H2SJmz9x84N526+8maowa1Pjjz92YlMXbLLb 7zNfcJ+duOnOL1ZvHr5R53g2d0PL9rtf5h9udEmu2lBX7n3zjeT1jaGmLhqShd5KLMUZiYZa zEXFiQD8hRc1+QIAAA== X-CMS-MailID: 20220811123648eucas1p1336fd2c107be031a4a274057bf20084f X-Msg-Generator: CA X-RootMTR: 20220811123648eucas1p1336fd2c107be031a4a274057bf20084f X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20220811123648eucas1p1336fd2c107be031a4a274057bf20084f 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 Y29tPgotLS0KIGxpYmF2Zm9ybWF0L2V2Yy5jICAgIHwgNDYxICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKIGxpYmF2Zm9ybWF0L2V2Yy5oICAgIHwgMTQ3ICsrKysr KysrKysrKysrCiBsaWJhdmZvcm1hdC9ldmNkZWMuYyB8IDE0MiArKysrKysrKysrKysrCiAzIGZp bGVzIGNoYW5nZWQsIDc1MCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZm b3JtYXQvZXZjLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmZvcm1hdC9ldmMuaAogY3JlYXRl IG1vZGUgMTAwNjQ0IGxpYmF2Zm9ybWF0L2V2Y2RlYy5jCgpkaWZmIC0tZ2l0IGEvbGliYXZmb3Jt YXQvZXZjLmMgYi9saWJhdmZvcm1hdC9ldmMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwLi45Mjk3ZmE1ZDVjCi0tLSAvZGV2L251bGwKKysrIGIvbGliYXZmb3JtYXQvZXZj LmMKQEAgLTAsMCArMSw0NjEgQEAKKy8qCisgKiBFVkMgaGVscGVyIGZ1bmN0aW9ucyBmb3IgbXV4 ZXJzCisgKiBDb3B5cmlnaHQgKGMpIDIwMjIgRGF3aWQgS296aW5za2kgPGQua296aW5za2lAc2Ft c3VuZy5jb20+CisgKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgorICoKKyAqIEZG bXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlcgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK KyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5l cmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0 byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry ZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorICovCisKKyNpbmNs dWRlICJsaWJhdnV0aWwvaW50cmVhZHdyaXRlLmgiCisjaW5jbHVkZSAibGliYXZjb2RlYy9nZXRf Yml0cy5oIgorI2luY2x1ZGUgImxpYmF2Y29kZWMvZ29sb21iLmgiCisjaW5jbHVkZSAiYXZmb3Jt YXQuaCIKKyNpbmNsdWRlICJhdmlvLmgiCisjaW5jbHVkZSAiZXZjLmgiCisjaW5jbHVkZSAiYXZp b19pbnRlcm5hbC5oIgorCisvLyBUaGUgbGVuZ3RoIGZpZWxkIHRoYXQgaW5kaWNhdGVzIHRoZSBs ZW5ndGggaW4gYnl0ZXMgb2YgdGhlIGZvbGxvd2luZyBOQUwgdW5pdCBpcyBjb25maWd1cmVkIHRv IGJlIG9mIDQgYnl0ZXMKKyNkZWZpbmUgRVZDX05BTF9VTklUX0xFTkdUSF9CWVRFICAgICAgICAo NCkgIC8qIGJ5dGUgKi8KKyNkZWZpbmUgRVZDX05BTF9IRUFERVJfU0laRSAgICAgICAgICAgICAo MikgIC8qIGJ5dGUgKi8KKworLy8gcnBsIHN0cnVjdHVyZQordHlwZWRlZiBzdHJ1Y3QgUmVmUGlj TGlzdFN0cnVjdCB7CisgICAgaW50IHBvYzsKKyAgICBpbnQgdGlkOworICAgIGludCByZWZfcGlj X251bTsKKyAgICBpbnQgcmVmX3BpY19hY3RpdmVfbnVtOworICAgIGludCByZWZfcGljc1tFVkNf TUFYX05VTV9SRUZfUElDU107CisgICAgY2hhciBwaWNfdHlwZTsKKworfSBSZWZQaWNMaXN0U3Ry dWN0OworCisvLyBUaGUgc3R1cmN0dXJlIHJlZmxlY3RzIFNQUyBSQlNQKHJhdyBieXRlIHNlcXVl bmNlIHBheWxvYWQpIGxheW91dAorLy8gQHNlZSBJU09fSUVDXzIzMDk0LTEgc2VjdGlvbiA3LjMu Mi4xCisvLworLy8gVGhlIGZvbGxvd2luZyBkZXNjcmlwdG9ycyBzcGVjaWZ5IHRoZSBwYXJzaW5n IHByb2Nlc3Mgb2YgZWFjaCBlbGVtZW50CisvLyB1KG4pIC0gdW5zaWduZWQgaW50ZWdlciB1c2lu ZyBuIGJpdHMKKy8vIHVlKHYpIC0gdW5zaWduZWQgaW50ZWdlciAwLXRoIG9yZGVyIEV4cF9Hb2xv bWItY29kZWQgc3ludGF4IGVsZW1lbnQgd2l0aCB0aGUgbGVmdCBiaXQgZmlyc3QKK3R5cGVkZWYg c3RydWN0IEVWQ1NQUyB7CisgICAgaW50IHNwc19zZXFfcGFyYW1ldGVyX3NldF9pZDsgICAvLyB1 ZSh2KQorICAgIGludCBwcm9maWxlX2lkYzsgICAgICAgICAgICAgICAgLy8gdSg4KQorICAgIGlu dCBsZXZlbF9pZGM7ICAgICAgICAgICAgICAgICAgLy8gdSg4KQorICAgIGludCB0b29sc2V0X2lk Y19oOyAgICAgICAgICAgICAgLy8gdSgzMikKKyAgICBpbnQgdG9vbHNldF9pZGNfbDsgICAgICAg ICAgICAgIC8vIHUoMzIpCisgICAgaW50IGNocm9tYV9mb3JtYXRfaWRjOyAgICAgICAgICAvLyB1 ZSh2KQorICAgIGludCBwaWNfd2lkdGhfaW5fbHVtYV9zYW1wbGVzOyAgLy8gdWUodikKKyAgICBp bnQgcGljX2hlaWdodF9pbl9sdW1hX3NhbXBsZXM7IC8vIHVlKHYpCisgICAgaW50IGJpdF9kZXB0 aF9sdW1hX21pbnVzODsgICAgICAvLyB1ZSh2KQorICAgIGludCBiaXRfZGVwdGhfY2hyb21hX21p bnVzODsgICAgLy8gdWUodikKKworICAgIC8vIEBub3RlCisgICAgLy8gQ3VycmVudGx5IHRoZSBz dHJ1Y3R1cmUgZG9lcyBub3QgcmVmbGVjdCB0aGUgZW50aXJlIFNQUyBSQlNQIGxheW91dC4KKyAg ICAvLyBJdCBjb250YWlucyBvbmx5IHRoZSBmaWVsZHMgdGhhdCBhcmUgbmVjZXNzYXJ5IHRvIHJl YWQgZnJvbSB0aGUgTkFMIHVuaXQgYWxsIHRoZSB2YWx1ZXMKKyAgICAvLyBuZWNlc3NhcnkgZm9y IHRoZSBjb3JyZWN0IGluaXRpYWxpemF0aW9uIG9mIEVWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVj b3JkCisKKyAgICAvLyBAbm90ZQorICAgIC8vIElmIG5lY2Vzc2FyeSwgYWRkIHRoZSBtaXNzaW5n IGZpZWxkcyB0byB0aGUgc3RydWN0dXJlIHRvIHJlZmxlY3QKKyAgICAvLyB0aGUgY29udGVudHMg b2YgdGhlIGVudGlyZSBOQUwgdW5pdCBvZiB0aGUgU1BTIHR5cGUKKworfSBFVkNTUFM7CisKK3R5 cGVkZWYgc3RydWN0IEVWQ05BTFVuaXRBcnJheSB7CisgICAgdWludDhfdCAgYXJyYXlfY29tcGxl dGVuZXNzOworICAgIHVpbnQ4X3QgIE5BTF91bml0X3R5cGU7CisgICAgdWludDE2X3QgbnVtTmFs dXM7CisgICAgdWludDE2X3QgKm5hbFVuaXRMZW5ndGg7CisgICAgdWludDhfdCAgKipuYWxVbml0 OworfSBFVkNOQUxVbml0QXJyYXk7CisKKy8qKgorICogQGJyaWVmIFNwZWNpZmllcyB0aGUgZGVj b2RlciBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciBJU08vSUVDIDIzMDk0LTEgdmlkZW8g Y29udGVudC4KKyAqIEBzZWUgSVNPL0lFQyAxNDQ5Ni0xNToyMDIxIENvZGluZyBvZiBhdWRpby12 aXN1YWwgb2JqZWN0cyDDouKCrOKAnSBQYXJ0IDE1Og0KKyAqICAgICAgQ2FycmlhZ2Ugb2YgbmV0 d29yayBhYnN0cmFjdGlvbiBsYXllciAoTkFMKSB1bml0IHN0cnVjdHVyZWQgdmlkZW8gaW4gdGhl IElTTyBiYXNlIG1lZGlhIGZpbGUgZm9ybWF0DQorICovDQordHlwZWRlZiBzdHJ1Y3QgRVZDRGVj b2RlckNvbmZpZ3VyYXRpb25SZWNvcmQgew0KKyAgICB1aW50OF90ICBjb25maWd1cmF0aW9uVmVy c2lvbjsgICAgICAgICAgLy8gOCBiaXRzDQorICAgIHVpbnQ4X3QgIHByb2ZpbGVfaWRjOyAgICAg ICAgICAgICAgICAgICAvLyA4IGJpdHMNCisgICAgdWludDhfdCAgbGV2ZWxfaWRjOyAgICAgICAg ICAgICAgICAgICAgIC8vIDggYml0cw0KKyAgICB1aW50MzJfdCB0b29sc2V0X2lkY19oOyAgICAg ICAgICAgICAgICAgLy8gMzIgYml0cw0KKyAgICB1aW50MzJfdCB0b29sc2V0X2lkY19sOyAgICAg ICAgICAgICAgICAgLy8gMzIgYml0cw0KKyAgICB1aW50OF90ICBjaHJvbWFfZm9ybWF0X2lkYzsg ICAgICAgICAgICAgLy8gMiBiaXRzDQorICAgIHVpbnQ4X3QgIGJpdF9kZXB0aF9sdW1hX21pbnVz ODsgICAgICAgICAvLyAzIGJpdHMNCisgICAgdWludDhfdCAgYml0X2RlcHRoX2Nocm9tYV9taW51 czg7ICAgICAgIC8vIDMgYml0cw0KKyAgICB1aW50MTZfdCBwaWNfd2lkdGhfaW5fbHVtYV9zYW1w bGVzOyAgICAgLy8gMTYgYml0cw0KKyAgICB1aW50MTZfdCBwaWNfaGVpZ2h0X2luX2x1bWFfc2Ft cGxlczsgICAgLy8gMTYgYml0cw0KKyAgICB1aW50OF90ICByZXNlcnZlZDsgICAgICAgICAgICAg ICAgICAgICAgLy8gNiBiaXRzICcwMDAwMDAnYg0KKyAgICB1aW50OF90ICBsZW5ndGhTaXplTWlu dXNPbmU7ICAgICAgICAgICAgLy8gMiBiaXRzDQorICAgIHVpbnQ4X3QgIG51bV9vZl9hcnJheXM7 ICAgICAgICAgICAgICAgICAvLyA4IGJpdHMNCisgICAgRVZDTkFMVW5pdEFycmF5ICphcnJheTsN Cit9IEVWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkOw0KKw0KK3R5cGVkZWYgc3RydWN0IE5B TFUgew0KKyAgICBpbnQgb2Zmc2V0Ow0KKyAgICB1aW50MzJfdCBzaXplOw0KK30gTkFMVTsNCisN Cit0eXBlZGVmIHN0cnVjdCBOQUxVTGlzdCB7DQorICAgIE5BTFUgKm5hbHVzOw0KKyAgICB1bnNp Z25lZCBuYWx1c19hcnJheV9zaXplOw0KKyAgICB1bnNpZ25lZCBuYl9uYWx1czsgICAgICAgICAg Ly8vPCB2YWxpZCBlbnRyaWVzIGluIG5hbHVzDQorfSBOQUxVTGlzdDsNCisNCitzdGF0aWMgaW50 IGdldF9uYWx1X3R5cGUoY29uc3QgdWludDhfdCAqYml0cywgaW50IGJpdHNfc2l6ZSkNCit7DQor ICAgIGludCB1bml0X3R5cGVfcGx1czEgPSAwOw0KKw0KKyAgICBpZiAoYml0c19zaXplID49IEVW Q19OQUxfSEVBREVSX1NJWkUpIHsNCisgICAgICAgIHVuc2lnbmVkIGNoYXIgKnAgPSAodW5zaWdu ZWQgY2hhciAqKWJpdHM7DQorICAgICAgICAvLyBmb3JiaWRkZW5femVyb19iaXQNCisgICAgICAg IGlmICgocFswXSAmIDB4ODApICE9IDApDQorICAgICAgICAgICAgcmV0dXJuIC0xOw0KKw0KKyAg ICAgICAgLy8gbmFsX3VuaXRfdHlwZQ0KKyAgICAgICAgdW5pdF90eXBlX3BsdXMxID0gKHBbMF0g Pj4gMSkgJiAweDNGOw0KKyAgICB9DQorDQorICAgIHJldHVybiB1bml0X3R5cGVfcGx1czEgLSAx Ow0KK30NCisNCitzdGF0aWMgdWludDMyX3QgcmVhZF9uYWxfdW5pdF9sZW5ndGgoY29uc3QgdWlu dDhfdCAqYml0cywgaW50IGJpdHNfc2l6ZSkNCit7DQorICAgIHVpbnQzMl90IG5hbHVfbGVuID0g MDsNCisNCisgICAgaWYgKGJpdHNfc2l6ZSA+PSBFVkNfTkFMX1VOSVRfTEVOR1RIX0JZVEUpIHsN CisNCisgICAgICAgIGludCB0ID0gMDsNCisgICAgICAgIHVuc2lnbmVkIGNoYXIgKnAgPSAodW5z aWduZWQgY2hhciAqKWJpdHM7DQorDQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IEVWQ19O QUxfVU5JVF9MRU5HVEhfQllURTsgaSsrKQ0KKyAgICAgICAgICAgIHQgPSAodCA8PCA4KSB8IHBb aV07DQorDQorICAgICAgICBuYWx1X2xlbiA9IHQ7DQorICAgICAgICBpZiAobmFsdV9sZW4gPT0g MCkNCisgICAgICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKw0KKyAgICByZXR1cm4gbmFsdV9s ZW47DQorfQ0KKw0KKy8vIEBzZWUgSVNPX0lFQ18yMzA5NC0xICg3LjMuMi4xIFNQUyBSQlNQIHN5 bnRheCkNCitzdGF0aWMgaW50IGV2Y2NfcGFyc2Vfc3BzKGNvbnN0IHVpbnQ4X3QgKmJzLCBpbnQg YnNfc2l6ZSwgRVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQgKmV2Y2MpDQorew0KKyAgICBH ZXRCaXRDb250ZXh0IGdiOw0KKyAgICBpbnQgc3BzX3NlcV9wYXJhbWV0ZXJfc2V0X2lkOw0KKyAg ICBFVkNTUFMgc3BzOw0KKw0KKyAgICBpZiAoaW5pdF9nZXRfYml0czgoJmdiLCBicywgYnNfc2l6 ZSkgPCAwKQ0KKyAgICAgICAgcmV0dXJuIDA7DQorDQorICAgIHNwcy5zcHNfc2VxX3BhcmFtZXRl cl9zZXRfaWQgPSBnZXRfdWVfZ29sb21iKCZnYik7DQorDQorICAgIGlmIChzcHNfc2VxX3BhcmFt ZXRlcl9zZXRfaWQgPj0gRVZDX01BWF9TUFNfQ09VTlQpDQorICAgICAgICByZXR1cm4gMDsNCisN CisgICAgLy8gdGhlIEJhc2VsaW5lIHByb2ZpbGUgaXMgaW5kaWNhdGVkIGJ5IHByb2ZpbGVfaWRj IGVxYWwgdG8gMA0KKyAgICAvLyB0aGUgTWFpbiBwcm9maWxlIGlzIGluZGljYXRlZCBieSBwcm9m aWxlX2lkYyBlcWFsIHRvIDENCisgICAgc3BzLnByb2ZpbGVfaWRjID0gZ2V0X2JpdHMoJmdiLCA4 KTsNCisNCisgICAgc3BzLmxldmVsX2lkYyA9IGdldF9iaXRzKCZnYiwgOCk7DQorDQorICAgIHNw cy50b29sc2V0X2lkY19oID0gZ2V0X2JpdHMoJmdiLCAzMik7DQorICAgIHNwcy50b29sc2V0X2lk Y19sID0gZ2V0X2JpdHMoJmdiLCAzMik7DQorDQorICAgIC8vIDAgLSBtb25vY2hyb21lDQorICAg IC8vIDEgLSA0OjI6MA0KKyAgICAvLyAyIC0gNDoyOjINCisgICAgLy8gMyAtIDQ6NDo0DQorICAg IHNwcy5jaHJvbWFfZm9ybWF0X2lkYyA9IGdldF91ZV9nb2xvbWIoJmdiKTsNCisNCisgICAgc3Bz LnBpY193aWR0aF9pbl9sdW1hX3NhbXBsZXMgPSBnZXRfdWVfZ29sb21iKCZnYik7DQorICAgIHNw cy5waWNfaGVpZ2h0X2luX2x1bWFfc2FtcGxlcyA9IGdldF91ZV9nb2xvbWIoJmdiKTsNCisNCisg ICAgc3BzLmJpdF9kZXB0aF9sdW1hX21pbnVzOCA9IGdldF91ZV9nb2xvbWIoJmdiKTsNCisgICAg c3BzLmJpdF9kZXB0aF9jaHJvbWFfbWludXM4ID0gZ2V0X3VlX2dvbG9tYigmZ2IpOw0KKw0KKyAg ICBldmNjLT5wcm9maWxlX2lkYyA9IHNwcy5wcm9maWxlX2lkYzsNCisgICAgZXZjYy0+bGV2ZWxf aWRjID0gc3BzLmxldmVsX2lkYzsNCisgICAgZXZjYy0+dG9vbHNldF9pZGNfaCA9IHNwcy50b29s c2V0X2lkY19oOw0KKyAgICBldmNjLT50b29sc2V0X2lkY19sID0gc3BzLnRvb2xzZXRfaWRjX2w7 DQorICAgIGV2Y2MtPmNocm9tYV9mb3JtYXRfaWRjID0gc3BzLmNocm9tYV9mb3JtYXRfaWRjOw0K KyAgICBldmNjLT5iaXRfZGVwdGhfbHVtYV9taW51czggPSBzcHMuYml0X2RlcHRoX2x1bWFfbWlu dXM4Ow0KKyAgICBldmNjLT5iaXRfZGVwdGhfY2hyb21hX21pbnVzOCA9IHNwcy5iaXRfZGVwdGhf Y2hyb21hX21pbnVzODsNCisgICAgZXZjYy0+cGljX3dpZHRoX2luX2x1bWFfc2FtcGxlcyA9IHNw cy5waWNfd2lkdGhfaW5fbHVtYV9zYW1wbGVzOw0KKyAgICBldmNjLT5waWNfaGVpZ2h0X2luX2x1 bWFfc2FtcGxlcyA9IHNwcy5waWNfaGVpZ2h0X2luX2x1bWFfc2FtcGxlczsNCisNCisgICAgcmV0 dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgZXZjY19hcnJheV9hZGRfbmFsX3VuaXQodWludDhf dCAqbmFsX2J1ZiwgdWludDMyX3QgbmFsX3NpemUsDQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1aW50OF90IG5hbF90eXBlLCBpbnQgcHNfYXJyYXlfY29tcGxldGVuZXNzLA0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVZDRGVjb2RlckNvbmZpZ3VyYXRp b25SZWNvcmQgKmV2Y2MpDQorew0KKyAgICBpbnQgcmV0Ow0KKyAgICB1aW50OF90IGluZGV4Ow0K KyAgICB1aW50MTZfdCBudW1OYWx1czsNCisgICAgRVZDTkFMVW5pdEFycmF5ICphcnJheTsNCisN CisgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgZXZjYy0+bnVtX29mX2FycmF5czsgaW5kZXgr KykNCisgICAgICAgIGlmIChldmNjLT5hcnJheVtpbmRleF0uTkFMX3VuaXRfdHlwZSA9PSBuYWxf dHlwZSkNCisgICAgICAgICAgICBicmVhazsNCisNCisgICAgaWYgKGluZGV4ID49IGV2Y2MtPm51 bV9vZl9hcnJheXMpIHsNCisgICAgICAgIHVpbnQ4X3QgaTsNCisNCisgICAgICAgIHJldCA9IGF2 X3JlYWxsb2NwX2FycmF5KCZldmNjLT5hcnJheSwgaW5kZXggKyAxLCBzaXplb2YoRVZDTkFMVW5p dEFycmF5KSk7DQorICAgICAgICBpZiAocmV0IDwgMCkNCisgICAgICAgICAgICByZXR1cm4gcmV0 Ow0KKw0KKyAgICAgICAgZm9yIChpID0gZXZjYy0+bnVtX29mX2FycmF5czsgaSA8PSBpbmRleDsg aSsrKQ0KKyAgICAgICAgICAgIG1lbXNldCgmZXZjYy0+YXJyYXlbaV0sIDAsIHNpemVvZihFVkNO QUxVbml0QXJyYXkpKTsNCisgICAgICAgIGV2Y2MtPm51bV9vZl9hcnJheXMgPSBpbmRleCArIDE7 DQorICAgIH0NCisNCisgICAgYXJyYXkgICAgPSAmZXZjYy0+YXJyYXlbaW5kZXhdOw0KKyAgICBu dW1OYWx1cyA9IGFycmF5LT5udW1OYWx1czsNCisNCisgICAgcmV0ID0gYXZfcmVhbGxvY3BfYXJy YXkoJmFycmF5LT5uYWxVbml0LCBudW1OYWx1cyArIDEsIHNpemVvZih1aW50OF90ICopKTsNCisg ICAgaWYgKHJldCA8IDApDQorICAgICAgICByZXR1cm4gcmV0Ow0KKw0KKyAgICByZXQgPSBhdl9y ZWFsbG9jcF9hcnJheSgmYXJyYXktPm5hbFVuaXRMZW5ndGgsIG51bU5hbHVzICsgMSwgc2l6ZW9m KHVpbnQxNl90KSk7DQorICAgIGlmIChyZXQgPCAwKQ0KKyAgICAgICAgcmV0dXJuIHJldDsNCisN CisgICAgYXJyYXktPm5hbFVuaXQgICAgICBbbnVtTmFsdXNdID0gbmFsX2J1ZjsNCisgICAgYXJy YXktPm5hbFVuaXRMZW5ndGhbbnVtTmFsdXNdID0gbmFsX3NpemU7DQorICAgIGFycmF5LT5OQUxf dW5pdF90eXBlICAgICAgICAgICA9IG5hbF90eXBlOw0KKyAgICBhcnJheS0+bnVtTmFsdXMrKzsN CisNCisgICAgLyoNCisgICAgICogV2hlbiB0aGUgc2FtcGxlIGVudHJ5IG5hbWUgaXMgJ2V2YzEn LCB0aGUgZGVmYXVsdCBhbmQgbWFuZGF0b3J5IHZhbHVlIG9mDQorICAgICAqIGFycmF5X2NvbXBs ZXRlbmVzcyBpcyAxIGZvciBhcnJheXMgb2YgYWxsIHR5cGVzIG9mIHBhcmFtZXRlciBzZXRzLCBh bmQgMA0KKyAgICAgKiBmb3IgYWxsIG90aGVyIGFycmF5cy4NCisgICAgICovDQorICAgIGlmIChu YWxfdHlwZSA9PSBFVkNfU1BTX05VVCB8fCBuYWxfdHlwZSA9PSBFVkNfUFBTX05VVCkNCisgICAg ICAgIGFycmF5LT5hcnJheV9jb21wbGV0ZW5lc3MgPSBwc19hcnJheV9jb21wbGV0ZW5lc3M7DQor DQorICAgIHJldHVybiAwOw0KK30NCisNCitzdGF0aWMgdm9pZCBldmNjX2luaXQoRVZDRGVjb2Rl ckNvbmZpZ3VyYXRpb25SZWNvcmQgKmV2Y2MpDQorew0KKyAgICBtZW1zZXQoZXZjYywgMCwgc2l6 ZW9mKEVWQ0RlY29kZXJDb25maWd1cmF0aW9uUmVjb3JkKSk7DQorICAgIGV2Y2MtPmNvbmZpZ3Vy YXRpb25WZXJzaW9uID0gMTsNCisgICAgZXZjYy0+bGVuZ3RoU2l6ZU1pbnVzT25lICAgPSAzOyAv LyA0IGJ5dGVzDQorfQ0KKw0KK3N0YXRpYyB2b2lkIGV2Y2NfY2xvc2UoRVZDRGVjb2RlckNvbmZp Z3VyYXRpb25SZWNvcmQgKmV2Y2MpDQorew0KKyAgICB1aW50OF90IGk7DQorDQorICAgIGZvciAo aSA9IDA7IGkgPCBldmNjLT5udW1fb2ZfYXJyYXlzOyBpKyspIHsNCisgICAgICAgIGV2Y2MtPmFy cmF5W2ldLm51bU5hbHVzID0gMDsNCisgICAgICAgIGF2X2ZyZWVwKCZldmNjLT5hcnJheVtpXS5u YWxVbml0KTsNCisgICAgICAgIGF2X2ZyZWVwKCZldmNjLT5hcnJheVtpXS5uYWxVbml0TGVuZ3Ro KTsNCisgICAgfQ0KKw0KKyAgICBldmNjLT5udW1fb2ZfYXJyYXlzID0gMDsNCisgICAgYXZfZnJl ZXAoJmV2Y2MtPmFycmF5KTsNCit9DQorDQorc3RhdGljIGludCBldmNjX3dyaXRlKEFWSU9Db250 ZXh0ICpwYiwgRVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQgKmV2Y2MpDQorew0KKyAgICB1 aW50OF90IGk7DQorICAgIHVpbnQxNl90IGosIGFwc19jb3VudCA9IDAsIHNwc19jb3VudCA9IDAs IHBwc19jb3VudCA9IDA7DQorDQorICAgIGF2X2xvZyhOVUxMLCBBVl9MT0dfVFJBQ0UsICAiY29u ZmlndXJhdGlvblZlcnNpb246ICAgICAgICAgICAgICAgICUiUFJJdTgiXG4iLA0KKyAgICAgICAg ICAgZXZjYy0+Y29uZmlndXJhdGlvblZlcnNpb24pOw0KKyAgICBhdl9sb2coTlVMTCwgQVZfTE9H X1RSQUNFLCAgInByb2ZpbGVfaWRjOiAgICAgICAgICAgICAgICAgICAgICAgICAlIlBSSXU4Ilxu IiwNCisgICAgICAgICAgIGV2Y2MtPnByb2ZpbGVfaWRjKTsNCisgICAgYXZfbG9nKE5VTEwsIEFW X0xPR19UUkFDRSwgICJsZXZlbF9pZGM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJSJQUkl1 OCJcbiIsDQorICAgICAgICAgICBldmNjLT5sZXZlbF9pZGMpOw0KKyAgICBhdl9sb2coTlVMTCwg QVZfTE9HX1RSQUNFLCAgInRvb2xzZXRfaWRjX2g6ICAgICAgICAgICAgICAgICAgICAgICAlIlBS SXUzMiJcbiIsDQorICAgICAgICAgICBldmNjLT50b29sc2V0X2lkY19oKTsNCisgICAgYXZfbG9n KE5VTEwsIEFWX0xPR19UUkFDRSwgInRvb2xzZXRfaWRjX2w6ICAgICAgICAgICAgICAgICAgICAg ICAgJSJQUkl1MzIiXG4iLA0KKyAgICAgICAgICAgZXZjYy0+dG9vbHNldF9pZGNfbCk7DQorICAg IGF2X2xvZyhOVUxMLCBBVl9MT0dfVFJBQ0UsICJjaHJvbWFfZm9ybWF0X2lkYzogICAgICAgICAg ICAgICAgICAgICUiUFJJdTgiXG4iLA0KKyAgICAgICAgICAgZXZjYy0+Y2hyb21hX2Zvcm1hdF9p ZGMpOw0KKyAgICBhdl9sb2coTlVMTCwgQVZfTE9HX1RSQUNFLCAgImJpdF9kZXB0aF9sdW1hX21p bnVzODogICAgICAgICAgICAgICAlIlBSSXU4IlxuIiwNCisgICAgICAgICAgIGV2Y2MtPmJpdF9k ZXB0aF9sdW1hX21pbnVzOCk7DQorICAgIGF2X2xvZyhOVUxMLCBBVl9MT0dfVFJBQ0UsICAiYml0 X2RlcHRoX2Nocm9tYV9taW51czg6ICAgICAgICAgICAgICUiUFJJdTgiXG4iLA0KKyAgICAgICAg ICAgZXZjYy0+Yml0X2RlcHRoX2Nocm9tYV9taW51czgpOw0KKyAgICBhdl9sb2coTlVMTCwgQVZf TE9HX1RSQUNFLCAgInBpY193aWR0aF9pbl9sdW1hX3NhbXBsZXM6ICAgICAgICAgICAlIlBSSXUx NiJcbiIsDQorICAgICAgICAgICBldmNjLT5waWNfd2lkdGhfaW5fbHVtYV9zYW1wbGVzKTsNCisg ICAgYXZfbG9nKE5VTEwsIEFWX0xPR19UUkFDRSwgICJwaWNfaGVpZ2h0X2luX2x1bWFfc2FtcGxl czogICAgICAgICAgJSJQUkl1MTYiXG4iLA0KKyAgICAgICAgICAgZXZjYy0+cGljX2hlaWdodF9p bl9sdW1hX3NhbXBsZXMpOw0KKyAgICBhdl9sb2coTlVMTCwgQVZfTE9HX1RSQUNFLCAgImxlbmd0 aFNpemVNaW51c09uZTogICAgICAgICAgICAgICAgICAlIlBSSXU4IlxuIiwNCisgICAgICAgICAg IGV2Y2MtPmxlbmd0aFNpemVNaW51c09uZSk7DQorICAgIGF2X2xvZyhOVUxMLCBBVl9MT0dfVFJB Q0UsICAibnVtX29mX2FycmF5czogICAgICAgICAgICAgICAgICAgICAgICUiUFJJdTgiXG4iLA0K KyAgICAgICAgICAgZXZjYy0+bnVtX29mX2FycmF5cyk7DQorICAgIGZvciAoaSA9IDA7IGkgPCBl dmNjLT5udW1fb2ZfYXJyYXlzOyBpKyspIHsNCisgICAgICAgIGF2X2xvZyhOVUxMLCBBVl9MT0df VFJBQ0UsICJhcnJheV9jb21wbGV0ZW5lc3NbJSJQUkl1OCJdOiAgICAgICAgICAgICAgICUiUFJJ dTgiXG4iLA0KKyAgICAgICAgICAgICAgIGksIGV2Y2MtPmFycmF5W2ldLmFycmF5X2NvbXBsZXRl bmVzcyk7DQorICAgICAgICBhdl9sb2coTlVMTCwgQVZfTE9HX1RSQUNFLCAiTkFMX3VuaXRfdHlw ZVslIlBSSXU4Il06ICAgICAgICAgICAgICAgICAgICAlIlBSSXU4IlxuIiwNCisgICAgICAgICAg ICAgICBpLCBldmNjLT5hcnJheVtpXS5OQUxfdW5pdF90eXBlKTsNCisgICAgICAgIGF2X2xvZyhO VUxMLCBBVl9MT0dfVFJBQ0UsICJudW1OYWx1c1slIlBSSXU4Il06ICAgICAgICAgICAgICAgICAg ICAgICAgICUiUFJJdTE2IlxuIiwNCisgICAgICAgICAgICAgICBpLCBldmNjLT5hcnJheVtpXS5u dW1OYWx1cyk7DQorICAgICAgICBmb3IgKGogPSAwOyBqIDwgZXZjYy0+YXJyYXlbaV0ubnVtTmFs dXM7IGorKykNCisgICAgICAgICAgICBhdl9sb2coTlVMTCwgQVZfTE9HX1RSQUNFLA0KKyAgICAg ICAgICAgICAgICAgICAibmFsVW5pdExlbmd0aFslIlBSSXU4Il1bJSJQUkl1MTYiXTogICAgICAg ICAgICAgICAgICUiUFJJdTE2IlxuIiwNCisgICAgICAgICAgICAgICAgICAgaSwgaiwgZXZjYy0+ YXJyYXlbaV0ubmFsVW5pdExlbmd0aFtqXSk7DQorICAgIH0NCisNCisgICAgLyoNCisgICAgICog V2UgbmVlZCBhdCBsZWFzdCBvbmUgU1BTLg0KKyAgICAgKi8NCisgICAgZm9yIChpID0gMDsgaSA8 IGV2Y2MtPm51bV9vZl9hcnJheXM7IGkrKykNCisgICAgICAgIHN3aXRjaCAoZXZjYy0+YXJyYXlb aV0uTkFMX3VuaXRfdHlwZSkgew0KKyAgICAgICAgY2FzZSBFVkNfQVBTX05VVDoNCisgICAgICAg ICAgICBhcHNfY291bnQgKz0gZXZjYy0+YXJyYXlbaV0ubnVtTmFsdXM7DQorICAgICAgICAgICAg YnJlYWs7DQorICAgICAgICBjYXNlIEVWQ19TUFNfTlVUOg0KKyAgICAgICAgICAgIHNwc19jb3Vu dCArPSBldmNjLT5hcnJheVtpXS5udW1OYWx1czsNCisgICAgICAgICAgICBicmVhazsNCisgICAg ICAgIGNhc2UgRVZDX1BQU19OVVQ6DQorICAgICAgICAgICAgcHBzX2NvdW50ICs9IGV2Y2MtPmFy cmF5W2ldLm51bU5hbHVzOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgZGVmYXVsdDoN CisgICAgICAgICAgICBicmVhazsNCisgICAgICAgIH0NCisgICAgaWYgKCFzcHNfY291bnQgfHwg c3BzX2NvdW50ID4gRVZDX01BWF9TUFNfQ09VTlQpDQorICAgICAgICByZXR1cm4gQVZFUlJPUl9J TlZBTElEREFUQTsNCisNCisgICAgLyogdW5zaWduZWQgaW50KDgpIGNvbmZpZ3VyYXRpb25WZXJz aW9uID0gMTsgKi8NCisgICAgYXZpb193OChwYiwgZXZjYy0+Y29uZmlndXJhdGlvblZlcnNpb24p Ow0KKw0KKyAgICAvKiB1bnNpZ25lZCBpbnQoOCkgcHJvZmlsZV9pZGMgKi8NCisgICAgYXZpb193 OChwYiwgZXZjYy0+cHJvZmlsZV9pZGMpOw0KKw0KKyAgICAvKiB1bnNpZ25lZCBpbnQoOCkgcHJv ZmlsZV9pZGMgKi8NCisgICAgYXZpb193OChwYiwgZXZjYy0+bGV2ZWxfaWRjKTsNCisNCisgICAg LyogdW5zaWduZWQgaW50KDMyKSB0b29sc2V0X2lkY19oICovDQorICAgIGF2aW9fd2IzMihwYiwg ZXZjYy0+dG9vbHNldF9pZGNfaCk7DQorDQorICAgIC8qIHVuc2lnbmVkIGludCgzMikgdG9vbHNl dF9pZGNfbCAqLw0KKyAgICBhdmlvX3diMzIocGIsIGV2Y2MtPnRvb2xzZXRfaWRjX2wpOw0KKw0K KyAgICAvKg0KKyAgICAgKiB1bnNpZ25lZCBpbnQoMikgY2hyb21hX2Zvcm1hdF9pZGM7DQorICAg ICAqIHVuc2lnbmVkIGludCgzKSBiaXRfZGVwdGhfbHVtYV9taW51czg7DQorICAgICAqIHVuc2ln bmVkIGludCgzKSBiaXRfZGVwdGhfY2hyb21hX21pbnVzODsNCisgICAgICovDQorICAgIGF2aW9f dzgocGIsIGV2Y2MtPmNocm9tYV9mb3JtYXRfaWRjIDw8IDYgfA0KKyAgICAgICAgICAgIGV2Y2Mt PmJpdF9kZXB0aF9sdW1hX21pbnVzOCAgPDwgMyB8DQorICAgICAgICAgICAgZXZjYy0+Yml0X2Rl cHRoX2Nocm9tYV9taW51czgpOw0KKw0KKyAgICAvKiB1bnNpZ25lZCBpbnQoMTYpIHBpY193aWR0 aF9pbl9sdW1hX3NhbXBsZXM7ICovDQorICAgIGF2aW9fd2IxNihwYiwgZXZjYy0+cGljX3dpZHRo X2luX2x1bWFfc2FtcGxlcyk7DQorDQorICAgIC8qIHVuc2lnbmVkIGludCgxNikgcGljX3dpZHRo X2luX2x1bWFfc2FtcGxlczsgKi8NCisgICAgYXZpb193YjE2KHBiLCBldmNjLT5waWNfaGVpZ2h0 X2luX2x1bWFfc2FtcGxlcyk7DQorDQorICAgIC8qDQorICAgICAqIGJpdCg2KSByZXNlcnZlZCA9 ICcxMTExMTEnYjsNCisgICAgICogdW5zaWduZWQgaW50KDIpIGNocm9tYUZvcm1hdDsNCisgICAg ICovDQorICAgIGF2aW9fdzgocGIsIGV2Y2MtPmxlbmd0aFNpemVNaW51c09uZSB8IDB4ZmMpOw0K Kw0KKyAgICAvKiB1bnNpZ25lZCBpbnQoOCkgbnVtT2ZBcnJheXM7ICovDQorICAgIGF2aW9fdzgo cGIsIGV2Y2MtPm51bV9vZl9hcnJheXMpOw0KKw0KKyAgICBmb3IgKGkgPSAwOyBpIDwgZXZjYy0+ bnVtX29mX2FycmF5czsgaSsrKSB7DQorICAgICAgICAvKg0KKyAgICAgICAgICogYml0KDEpIGFy cmF5X2NvbXBsZXRlbmVzczsNCisgICAgICAgICAqIHVuc2lnbmVkIGludCgxKSByZXNlcnZlZCA9 IDA7DQorICAgICAgICAgKiB1bnNpZ25lZCBpbnQoNikgTkFMX3VuaXRfdHlwZTsNCisgICAgICAg ICAqLw0KKyAgICAgICAgYXZpb193OChwYiwgZXZjYy0+YXJyYXlbaV0uYXJyYXlfY29tcGxldGVu ZXNzIDw8IDcgfA0KKyAgICAgICAgICAgICAgICBldmNjLT5hcnJheVtpXS5OQUxfdW5pdF90eXBl ICYgMHgzZik7DQorDQorICAgICAgICAvKiB1bnNpZ25lZCBpbnQoMTYpIG51bU5hbHVzOyAqLw0K KyAgICAgICAgYXZpb193YjE2KHBiLCBldmNjLT5hcnJheVtpXS5udW1OYWx1cyk7DQorDQorICAg ICAgICBmb3IgKGogPSAwOyBqIDwgZXZjYy0+YXJyYXlbaV0ubnVtTmFsdXM7IGorKykgew0KKyAg ICAgICAgICAgIC8qIHVuc2lnbmVkIGludCgxNikgbmFsVW5pdExlbmd0aDsgKi8NCisgICAgICAg ICAgICBhdmlvX3diMTYocGIsIGV2Y2MtPmFycmF5W2ldLm5hbFVuaXRMZW5ndGhbal0pOw0KKw0K KyAgICAgICAgICAgIC8qIGJpdCg4Km5hbFVuaXRMZW5ndGgpIG5hbFVuaXQ7ICovDQorICAgICAg ICAgICAgYXZpb193cml0ZShwYiwgZXZjYy0+YXJyYXlbaV0ubmFsVW5pdFtqXSwNCisgICAgICAg ICAgICAgICAgICAgICAgIGV2Y2MtPmFycmF5W2ldLm5hbFVuaXRMZW5ndGhbal0pOw0KKyAgICAg ICAgfQ0KKyAgICB9DQorDQorICAgIHJldHVybiAwOw0KK30NCisNCitpbnQgZmZfaXNvbV93cml0 ZV9ldmNjKEFWSU9Db250ZXh0ICpwYiwgY29uc3QgdWludDhfdCAqZGF0YSwNCisgICAgICAgICAg ICAgICAgICAgICAgIGludCBzaXplLCBpbnQgcHNfYXJyYXlfY29tcGxldGVuZXNzKQ0KK3sNCisg ICAgRVZDRGVjb2RlckNvbmZpZ3VyYXRpb25SZWNvcmQgZXZjYzsNCisgICAgaW50IHJldCA9IDA7 DQorDQorICAgIGlmIChzaXplIDwgOCkgew0KKyAgICAgICAgLyogV2UgY2FuJ3Qgd3JpdGUgYSB2 YWxpZCBldmNDIGZyb20gdGhlIHByb3ZpZGVkIGRhdGEgKi8NCisgICAgICAgIHJldHVybiBBVkVS Uk9SX0lOVkFMSUREQVRBOw0KKyAgICB9IGVsc2UgaWYgKCpkYXRhID09IDEpIHsNCisgICAgICAg IC8qIERhdGEgaXMgYWxyZWFkeSBldmNDLWZvcm1hdHRlZCAqLw0KKyAgICAgICAgYXZpb193cml0 ZShwYiwgZGF0YSwgc2l6ZSk7DQorICAgICAgICByZXR1cm4gMDsNCisgICAgfQ0KKw0KKyAgICBl dmNjX2luaXQoJmV2Y2MpOw0KKw0KKyAgICBpbnQgbmFsdV90eXBlOw0KKyAgICBzaXplX3QgbmFs dV9zaXplOw0KKyAgICB1bnNpZ25lZCBjaGFyICpiaXRzID0gKHVuc2lnbmVkIGNoYXIgKilkYXRh Ow0KKyAgICBpbnQgYnl0ZXNfdG9fcmVhZCA9IHNpemU7DQorDQorICAgIHdoaWxlIChieXRlc190 b19yZWFkID4gRVZDX05BTF9VTklUX0xFTkdUSF9CWVRFKSB7DQorDQorICAgICAgICBuYWx1X3Np emUgPSByZWFkX25hbF91bml0X2xlbmd0aChiaXRzLCBFVkNfTkFMX1VOSVRfTEVOR1RIX0JZVEUp Ow0KKyAgICAgICAgaWYgKG5hbHVfc2l6ZSA9PSAwKSBicmVhazsNCisNCisgICAgICAgIGJpdHMg Kz0gRVZDX05BTF9VTklUX0xFTkdUSF9CWVRFOw0KKyAgICAgICAgYnl0ZXNfdG9fcmVhZCAtPSBF VkNfTkFMX1VOSVRfTEVOR1RIX0JZVEU7DQorDQorICAgICAgICBpZiAoYnl0ZXNfdG9fcmVhZCA8 IG5hbHVfc2l6ZSkgYnJlYWs7DQorDQorICAgICAgICBuYWx1X3R5cGUgPSBnZXRfbmFsdV90eXBl KGJpdHMsIGJ5dGVzX3RvX3JlYWQpOw0KKyAgICAgICAgdWludDhfdCAqbmFsdV9idWYgPSBiaXRz Ow0KKw0KKyAgICAgICAgc3dpdGNoIChuYWx1X3R5cGUpIHsNCisgICAgICAgIGNhc2UgRVZDX0FQ U19OVVQ6DQorICAgICAgICBjYXNlIEVWQ19TUFNfTlVUOg0KKyAgICAgICAgY2FzZSBFVkNfUFBT X05VVDoNCisgICAgICAgICAgICByZXQgPSBldmNjX2FycmF5X2FkZF9uYWxfdW5pdChuYWx1X2J1 ZiwgbmFsdV9zaXplLCBuYWx1X3R5cGUsIHBzX2FycmF5X2NvbXBsZXRlbmVzcywgJmV2Y2MpOw0K KyAgICAgICAgICAgIGlmIChyZXQgPCAwKQ0KKyAgICAgICAgICAgICAgICBnb3RvIGVuZDsNCisg ICAgICAgICAgICBlbHNlIGlmIChuYWx1X3R5cGUgPT0gRVZDX1NQU19OVVQpDQorICAgICAgICAg ICAgICAgIHJldCA9IGV2Y2NfcGFyc2Vfc3BzKG5hbHVfYnVmLCBuYWx1X3NpemUsICZldmNjKTsN CisgICAgICAgICAgICBpZiAocmV0IDwgMCkNCisgICAgICAgICAgICAgICAgZ290byBlbmQ7DQor ICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBkZWZhdWx0Og0KKyAgICAgICAgICAgIGJyZWFr Ow0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgYml0cyArPSBuYWx1X3NpemU7DQorICAgICAgICBi eXRlc190b19yZWFkIC09IG5hbHVfc2l6ZTsNCisgICAgfQ0KKw0KKyAgICByZXQgPSBldmNjX3dy aXRlKHBiLCAmZXZjYyk7DQorDQorZW5kOg0KKyAgICBldmNjX2Nsb3NlKCZldmNjKTsNCisgICAg cmV0dXJuIHJldDsNCit9DQorDQpkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvZXZjLmggYi9saWJh dmZvcm1hdC9ldmMuaA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAuLmQ3 YjkzZDUyMWQNCi0tLSAvZGV2L251bGwNCisrKyBiL2xpYmF2Zm9ybWF0L2V2Yy5oDQpAQCAtMCww ICsxLDE0NyBAQA0KKy8qDQorICogRVZDIGhlbHBlciBmdW5jdGlvbnMgZm9yIG11eGVycw0KKyAq IENvcHlyaWdodCAoYykgMjAyMiBEYXdpZCBLb3ppbnNraSA8ZC5rb3ppbnNraUBzYW1zdW5nLmNv bT4NCisgKg0KKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4NCisgKg0KKyAqIEZGbXBl ZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3INCisgKiBt b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj DQorICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyDQorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQorICoNCisgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCisgKiBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KKyAqIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg R05VDQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4N CisgKg0KKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNz ZXIgR2VuZXJhbCBQdWJsaWMNCisgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3Qs IHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlDQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQ0KKyAq Lw0KKw0KKyNpZm5kZWYgQVZGT1JNQVRfRVZDX0gNCisjZGVmaW5lIEFWRk9STUFUX0VWQ19IDQor DQorI2luY2x1ZGUgPHN0ZGludC5oPg0KKyNpbmNsdWRlICJsaWJhdnV0aWwvcmF0aW9uYWwuaCIN CisjaW5jbHVkZSAiYXZpby5oIg0KKw0KKy8qKg0KKyAqIEBzZWUgSVNPX0lFQ18yMzA5NC0xXzIw MjAsIDcuNC4yLjIgTkFMIHVuaXQgaGVhZGVyIHNlbWFudGljDQorICogICAgICBUYWJsZSA0IMOi 4oKs4oCcIE5BTCB1bml0IHR5cGUgY29kZXMgYW5kIE5BTCB1bml0IHR5cGUgY2xhc3Nlcw0KKyAq Lw0KK2VudW0gRVZDTkFMVW5pdFR5cGUgew0KKyAgICBFVkNfTk9JRFJfTlVUICAgICAgICAgICAg PSAwLA0KKyAgICBFVkNfSURSX05VVCAgICAgICAgICAgICAgPSAxLA0KKyAgICBFVkNfUlNWX1ZD TF9OVVQwMiAgICAgICAgPSAyLA0KKyAgICBFVkNfUlNWX1ZDTF9OVVQwMyAgICAgICAgPSAzLA0K KyAgICBFVkNfUlNWX1ZDTF9OVVQwNCAgICAgICAgPSA0LA0KKyAgICBFVkNfUlNWX1ZDTF9OVVQw NSAgICAgICAgPSA1LA0KKyAgICBFVkNfUlNWX1ZDTF9OVVQwNiAgICAgICAgPSA2LA0KKyAgICBF VkNfUlNWX1ZDTF9OVVQwNyAgICAgICAgPSA3LA0KKyAgICBFVkNfUlNWX1ZDTF9OVVQwOCAgICAg ICAgPSA4LA0KKyAgICBFVkNfUlNWX1ZDTF9OVVQwOSAgICAgICAgPSA5LA0KKyAgICBFVkNfUlNW X1ZDTF9OVVQxMCAgICAgICAgPSAxMCwNCisgICAgRVZDX1JTVl9WQ0xfTlVUMTEgICAgICAgID0g MTEsDQorICAgIEVWQ19SU1ZfVkNMX05VVDEyICAgICAgICA9IDEyLA0KKyAgICBFVkNfUlNWX1ZD TF9OVVQxMyAgICAgICAgPSAxMywNCisgICAgRVZDX1JTVl9WQ0xfTlVUMTQgICAgICAgID0gMTQs DQorICAgIEVWQ19SU1ZfVkNMX05VVDE1ICAgICAgICA9IDE1LA0KKyAgICBFVkNfUlNWX1ZDTF9O VVQxNiAgICAgICAgPSAxNiwNCisgICAgRVZDX1JTVl9WQ0xfTlVUMTcgICAgICAgID0gMTcsDQor ICAgIEVWQ19SU1ZfVkNMX05VVDE4ICAgICAgICA9IDE4LA0KKyAgICBFVkNfUlNWX1ZDTF9OVVQx OSAgICAgICAgPSAxOSwNCisgICAgRVZDX1JTVl9WQ0xfTlVUMjAgICAgICAgID0gMjAsDQorICAg IEVWQ19SU1ZfVkNMX05VVDIxICAgICAgICA9IDIxLA0KKyAgICBFVkNfUlNWX1ZDTF9OVVQyMiAg ICAgICAgPSAyMiwNCisgICAgRVZDX1JTVl9WQ0xfTlVUMjMgICAgICAgID0gMjMsDQorICAgIEVW Q19TUFNfTlVUICAgICAgICAgICAgICA9IDI0LA0KKyAgICBFVkNfUFBTX05VVCAgICAgICAgICAg ICAgPSAyNSwNCisgICAgRVZDX0FQU19OVVQgICAgICAgICAgICAgID0gMjYsDQorICAgIEVWQ19G RF9OVVQgICAgICAgICAgICAgICA9IDI3LA0KKyAgICBFVkNfU0VJX05VVCAgICAgICAgICAgICAg PSAyOCwNCisgICAgRVZDX1JTVl9OT05WQ0wyOSAgICAgICAgID0gMjksDQorICAgIEVWQ19SU1Zf Tk9OVkNMMzAgICAgICAgICA9IDMwLA0KKyAgICBFVkNfUlNWX05PTlZDTDMxICAgICAgICAgPSAz MSwNCisgICAgRVZDX1JTVl9OT05WQ0wzMiAgICAgICAgID0gMzIsDQorICAgIEVWQ19SU1ZfTk9O VkNMMzMgICAgICAgICA9IDMzLA0KKyAgICBFVkNfUlNWX05PTlZDTDM0ICAgICAgICAgPSAzNCwN CisgICAgRVZDX1JTVl9OT05WQ0wzNSAgICAgICAgID0gMzUsDQorICAgIEVWQ19SU1ZfTk9OVkNM MzYgICAgICAgICA9IDM2LA0KKyAgICBFVkNfUlNWX05PTlZDTDM3ICAgICAgICAgPSAzNywNCisg ICAgRVZDX1JTVl9OT05WQ0wzOCAgICAgICAgID0gMzgsDQorICAgIEVWQ19SU1ZfTk9OVkNMMzkg ICAgICAgICA9IDM5LA0KKyAgICBFVkNfUlNWX05PTlZDTDQwICAgICAgICAgPSA0MCwNCisgICAg RVZDX1JTVl9OT05WQ0w0MSAgICAgICAgID0gNDEsDQorICAgIEVWQ19SU1ZfTk9OVkNMNDIgICAg ICAgICA9IDQyLA0KKyAgICBFVkNfUlNWX05PTlZDTDQzICAgICAgICAgPSA0MywNCisgICAgRVZD X1JTVl9OT05WQ0w0NCAgICAgICAgID0gNDQsDQorICAgIEVWQ19SU1ZfTk9OVkNMNDUgICAgICAg ICA9IDQ1LA0KKyAgICBFVkNfUlNWX05PTlZDTDQ2ICAgICAgICAgPSA0NiwNCisgICAgRVZDX1JT Vl9OT05WQ0w0NyAgICAgICAgID0gNDcsDQorICAgIEVWQ19SU1ZfTk9OVkNMNDggICAgICAgICA9 IDQ4LA0KKyAgICBFVkNfUlNWX05PTlZDTDQ5ICAgICAgICAgPSA0OSwNCisgICAgRVZDX1JTVl9O T05WQ0w1MCAgICAgICAgID0gNTAsDQorICAgIEVWQ19SU1ZfTk9OVkNMNTEgICAgICAgICA9IDUx LA0KKyAgICBFVkNfUlNWX05PTlZDTDUyICAgICAgICAgPSA1MiwNCisgICAgRVZDX1JTVl9OT05W Q0w1MyAgICAgICAgID0gNTMsDQorICAgIEVWQ19SU1ZfTk9OVkNMNTQgICAgICAgICA9IDU0LA0K KyAgICBFVkNfUlNWX05PTlZDTDU1ICAgICAgICAgPSA1NSwNCisgICAgRVZDX1VOU1BFQ19OVVQ1 NiAgICAgICAgID0gNTYsDQorICAgIEVWQ19VTlNQRUNfTlVUNTcgICAgICAgICA9IDU3LA0KKyAg ICBFVkNfVU5TUEVDX05VVDU4ICAgICAgICAgPSA1OCwNCisgICAgRVZDX1VOU1BFQ19OVVQ1OSAg ICAgICAgID0gNTksDQorICAgIEVWQ19VTlNQRUNfTlVUNjAgICAgICAgICA9IDYwLA0KKyAgICBF VkNfVU5TUEVDX05VVDYxICAgICAgICAgPSA2MSwNCisgICAgRVZDX1VOU1BFQ19OVVQ2MiAgICAg ICAgID0gNjINCit9Ow0KKw0KK2VudW0gew0KKyAgICAvLyA3LjQuMy4yOiBhcHNfdmlkZW9fcGFy YW1ldGVyX3NldF9pZCBpcyB1KDQpLg0KKyAgICBFVkNfTUFYX0FQU19DT1VOVCA9IDMyLA0KKw0K KyAgICAvLyA3LjQuMy4xOiBzcHNfc2VxX3BhcmFtZXRlcl9zZXRfaWQgaXMgaW4gWzAsIDE1XS4N CisgICAgRVZDX01BWF9TUFNfQ09VTlQgPSAxNiwNCisNCisgICAgLy8gNy40LjMuMjogcHBzX3Bp Y19wYXJhbWV0ZXJfc2V0X2lkIGlzIGluIFswLCA2M10uDQorICAgIEVWQ19NQVhfUFBTX0NPVU5U ID0gNjQsDQorDQorICAgIC8vIDcuNC41OiBzbGljZSBoZWFkZXIgc2xpY2VfcGljX3BhcmFtZXRl cl9zZXRfaWQgaW4gWzAsIDYzXQ0KKyAgICBFVkNfTUFYX1NIX0NPVU5UID0gNjQsDQorDQorICAg IC8vIEUuMy4yOiBjcGJfY250X21pbnVzMVtpXSBpcyBpbiBbMCwgMzFdLg0KKyAgICBFVkNfTUFY X0NQQl9DTlQgPSAzMiwNCisNCisgICAgLy8gQS40LjE6IGluIHRhYmxlIEEuMSB0aGUgaGlnaGVz dCBsZXZlbCBhbGxvd3MgYSBNYXhMdW1hUHMgb2YgMzUgNjUxIDU4NC4NCisgICAgRVZDX01BWF9M VU1BX1BTID0gMzU2NTE1ODQsDQorDQorICAgIEVWQ19NQVhfTlVNX1JFRl9QSUNTID0gMjEsDQor DQorICAgIC8vIEEuNC4xOiBwaWNfd2lkdGhfaW5fbHVtYV9zYW1wbGVzIGFuZCBwaWNfaGVpZ2h0 X2luX2x1bWFfc2FtcGxlcyBhcmUNCisgICAgLy8gY29uc3RyYWluZWQgdG8gYmUgbm90IGdyZWF0 ZXIgdGhhbiBzcXJ0KE1heEx1bWFQcyAqIDgpLiAgSGVuY2UgaGVpZ2h0Lw0KKyAgICAvLyB3aWR0 aCBhcmUgYm91bmRlZCBhYm92ZSBieSBzcXJ0KDggKiAzNTY1MTU4NCkgPSAxNjg4OC4yIHNhbXBs ZXMuDQorICAgIEVWQ19NQVhfV0lEVEggID0gMTY4ODgsDQorICAgIEVWQ19NQVhfSEVJR0hUID0g MTY4ODgsDQorDQorICAgIC8vIEEuNC4xOiB0YWJsZSBBLjEgYWxsb3dzIGF0IG1vc3QgMjIgdGls ZSByb3dzIGZvciBhbnkgbGV2ZWwuDQorICAgIEVWQ19NQVhfVElMRV9ST1dTICAgID0gMjIsDQor ICAgIC8vIEEuNC4xOiB0YWJsZSBBLjEgYWxsb3dzIGF0IG1vc3QgMjAgdGlsZSBjb2x1bW5zIGZv ciBhbnkgbGV2ZWwuDQorICAgIEVWQ19NQVhfVElMRV9DT0xVTU5TID0gMjAsDQorDQorICAgIC8v IEEuNC4xOiB0YWJsZSBBLjEgYWxsb3dzIGF0IG1vc3QgNjAwIHNsaWNlIHNlZ21lbnRzIGZvciBh bnkgbGV2ZWwuDQorICAgIEVWQ19NQVhfU0xJQ0VfU0VHTUVOVFMgPSA2MDAsDQorDQorICAgIC8v IDcuNC43LjE6IGluIHRoZSB3b3JzdCBjYXNlICh0aWxlc19lbmFibGVkX2ZsYWcgYW5kDQorICAg IC8vIGVudHJvcHlfY29kaW5nX3N5bmNfZW5hYmxlZF9mbGFnIGFyZSBib3RoIHNldCksIGVudHJ5 IHBvaW50cyBjYW4gYmUNCisgICAgLy8gcGxhY2VkIGF0IHRoZSBiZWdpbm5pbmcgb2YgZXZlcnkg Q3RiIHJvdyBpbiBldmVyeSB0aWxlLCBnaXZpbmcgYW4NCisgICAgLy8gdXBwZXIgYm91bmQgb2Yg KG51bV90aWxlX2NvbHVtbnNfbWludXMxICsgMSkgKiBQaWNIZWlnaHRJbkN0YnNZIC0gMS4NCisg ICAgLy8gT25seSBhIHN0cmVhbSB3aXRoIHZlcnkgaGlnaCByZXNvbHV0aW9uIGFuZCBwZXJ2ZXJz ZSBwYXJhbWV0ZXJzIGNvdWxkDQorICAgIC8vIGdldCBuZWFyIHRoYXQsIHRob3VnaCwgc28gc2V0 IGEgbG93ZXIgbGltaXQgaGVyZSB3aXRoIHRoZSBtYXhpbXVtDQorICAgIC8vIHBvc3NpYmxlIHZh bHVlIGZvciA0SyB2aWRlbyAoYXQgbW9zdCAxMzUgMTZ4MTYgQ3RiIHJvd3MpLg0KKyAgICBIRVZD X01BWF9FTlRSWV9QT0lOVF9PRkZTRVRTID0gRVZDX01BWF9USUxFX0NPTFVNTlMgKiAxMzUsDQor fTsNCisNCitpbnQgZmZfaXNvbV93cml0ZV9ldmNjKEFWSU9Db250ZXh0ICpwYiwgY29uc3QgdWlu dDhfdCAqZGF0YSwNCisgICAgICAgICAgICAgICAgICAgICAgIGludCBzaXplLCBpbnQgcHNfYXJy YXlfY29tcGxldGVuZXNzKTsNCisNCisjZW5kaWYgLy8gQVZGT1JNQVRfRVZDX0gNClwgTm8gbmV3 bGluZSBhdCBlbmQgb2YgZmlsZQ0KZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L2V2Y2RlYy5jIGIv bGliYXZmb3JtYXQvZXZjZGVjLmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAw MDAwLi41OGRjNjcxZDI0DQotLS0gL2Rldi9udWxsDQorKysgYi9saWJhdmZvcm1hdC9ldmNkZWMu Yw0KQEAgLTAsMCArMSwxNDIgQEANCisvKg0KKyAqIFJBVyBFVkMgdmlkZW8gZGVtdXhlcg0KKyAq DQorICogQ29weXJpZ2h0IChjKSAyMDIxIERhd2lkIEtvemluc2tpIDxkLmtvemluc2tpQHNhbXN1 bmcuY29tPg0KKyAqDQorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLg0KKyAqDQorICog RkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcg0K KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ dWJsaWMNCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXINCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCisgKg0KKyAqIEZGbXBlZyBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KKyAqIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQorICog TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZSBHTlUNCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLg0KKyAqDQorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IExlc3NlciBHZW5lcmFsIFB1YmxpYw0KKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlm IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1 MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNB DQorICovDQorDQorI2luY2x1ZGUgImxpYmF2Y29kZWMvZ2V0X2JpdHMuaCINCisjaW5jbHVkZSAi bGliYXZjb2RlYy9nb2xvbWIuaCINCisjaW5jbHVkZSAibGliYXZjb2RlYy9pbnRlcm5hbC5oIg0K Kw0KKyNpbmNsdWRlICJyYXdkZWMuaCINCisjaW5jbHVkZSAiYXZmb3JtYXQuaCINCisNCisvLyBU aGUgbGVuZ3RoIGZpZWxkIHRoYXQgaW5kaWNhdGVzIHRoZSBsZW5ndGggaW4gYnl0ZXMgb2YgdGhl IGZvbGxvd2luZyBOQUwgdW5pdCBpcyBjb25maWd1cmVkIHRvIGJlIG9mIDQgYnl0ZXMNCisjZGVm aW5lIEVWQ19OQUxfVU5JVF9MRU5HVEhfQllURSAgICAgICAgKDQpICAvKiBieXRlICovDQorDQor I2RlZmluZSBFVkNfTkFMX0hFQURFUl9TSVpFICAgICAgICAgICAgICgyKSAgLyogYnl0ZSAqLw0K KyNkZWZpbmUgTUFYX1NQU19DTlQgICAgICAgICAgICAgICAgICAgICAoMTYpIC8qIGRlZmluZWQg dmFsdWUgaW4gRVZDIHN0YW5kYXJkICovDQorDQorLy8gTkFMVSB0eXBlcw0KKy8vIEBzZWUgSVNP X0lFQ18yMzA5NC0xXzIwMjAgNy40LjIuMiBOQUwgdW5pdCBoZWFkZXIgc2VtYW50aWNzDQorLy8N CisjZGVmaW5lIEVWQ19OVVRfTk9OSURSICAgICAgICAgICAgICAgICAgKDApICAvKiBDb2RlZCBz bGljZSBvZiBhIG5vbi1JRFIgcGljdHVyZSAqLw0KKyNkZWZpbmUgRVZDX05VVF9JRFIgICAgICAg ICAgICAgICAgICAgICAoMSkgIC8qIENvZGVkIHNsaWNlIG9mIGFuIElEUiBwaWN0dXJlICovDQor I2RlZmluZSBFVkNfTlVUX1NQUyAgICAgICAgICAgICAgICAgICAgICgyNCkgLyogU2VxdWVuY2Ug cGFyYW1ldGVyIHNldCAqLw0KKyNkZWZpbmUgRVZDX05VVF9QUFMgICAgICAgICAgICAgICAgICAg ICAoMjUpIC8qIFBpY3R1cmUgcGFyZW1ldGVyIHNldCAqLw0KKyNkZWZpbmUgRVZDX05VVF9BUFMg ICAgICAgICAgICAgICAgICAgICAoMjYpIC8qIEFkYXB0YXRpb24gcGFyYW1ldGVyIHNldCAqLw0K KyNkZWZpbmUgRVZDX05VVF9GRCAgICAgICAgICAgICAgICAgICAgICAoMjcpIC8qIEZpbGxlciBk YXRhICovDQorI2RlZmluZSBFVkNfTlVUX1NFSSAgICAgICAgICAgICAgICAgICAgICgyOCkgLyog U3VwcGxlbWVudGFsIGVuaGFuY2VtZW50IGluZm9ybWF0aW9uICovDQorDQordHlwZWRlZiBzdHJ1 Y3QgRVZDUGFyc2VyQ29udGV4dCB7DQorICAgIGludCBnb3Rfc3BzOw0KKyAgICBpbnQgZ290X3Bw czsNCisgICAgaW50IGdvdF9pZHI7DQorICAgIGludCBnb3Rfbm9uaWRyOw0KK30gRVZDUGFyc2Vy Q29udGV4dDsNCisNCitzdGF0aWMgaW50IGdldF9uYWx1X3R5cGUoY29uc3QgdWludDhfdCAqYml0 cywgaW50IGJpdHNfc2l6ZSkNCit7DQorICAgIGludCB1bml0X3R5cGVfcGx1czEgPSAwOw0KKw0K KyAgICBpZihiaXRzX3NpemUgPj0gRVZDX05BTF9IRUFERVJfU0laRSkgew0KKyAgICAgICAgdW5z aWduZWQgY2hhciAqcCA9ICh1bnNpZ25lZCBjaGFyICopYml0czsNCisgICAgICAgIC8vIGZvcmJp ZGRlbl96ZXJvX2JpdA0KKyAgICAgICAgaWYgKChwWzBdICYgMHg4MCkgIT0gMCkgew0KKyAgICAg ICAgICAgIGF2X2xvZyhOVUxMLCBBVl9MT0dfRVJST1IsICJDYW5ub3QgZ2V0IGJpdHN0cmVhbSBp bmZvcm1hdGlvbi4gTWFsZm9ybWVkIGJpdHN0cmVhbS5cbiIpOw0KKyAgICAgICAgICAgIHJldHVy biAtMTsNCisgICAgICAgIH0NCisNCisgICAgICAgIC8vIG5hbF91bml0X3R5cGUNCisgICAgICAg IHVuaXRfdHlwZV9wbHVzMSA9IChwWzBdID4+IDEpICYgMHgzRjsNCisgICAgfQ0KKw0KKyAgICBy ZXR1cm4gdW5pdF90eXBlX3BsdXMxIC0gMTsNCit9DQorDQorc3RhdGljIHVpbnQzMl90IHJlYWRf bmFsX3VuaXRfbGVuZ3RoKGNvbnN0IHVpbnQ4X3QgKmJpdHMsIGludCBiaXRzX3NpemUpDQorew0K KyAgICB1aW50MzJfdCBuYWx1X2xlbiA9IDA7DQorDQorICAgIGlmKGJpdHNfc2l6ZSA+PSBFVkNf TkFMX1VOSVRfTEVOR1RIX0JZVEUpIHsNCisNCisgICAgICAgIGludCB0ID0gMDsNCisgICAgICAg IHVuc2lnbmVkIGNoYXIgKnAgPSAodW5zaWduZWQgY2hhciAqKWJpdHM7DQorDQorICAgICAgICBm b3IoaW50IGk9MDsgaTxFVkNfTkFMX1VOSVRfTEVOR1RIX0JZVEU7IGkrKykgew0KKyAgICAgICAg ICAgIHQgPSAodCA8PCA4KSB8IHBbaV07DQorICAgICAgICB9DQorDQorICAgICAgICBuYWx1X2xl biA9IHQ7DQorICAgICAgICBpZihuYWx1X2xlbiA9PSAwKSB7DQorICAgICAgICAgICAgYXZfbG9n KE5VTEwsIEFWX0xPR19FUlJPUiwgIkludmFsaWQgYml0c3RyZWFtIHNpemUhXG4iKTsNCisgICAg ICAgICAgICByZXR1cm4gMDsNCisgICAgICAgIH0NCisgICAgfQ0KKw0KKyAgICByZXR1cm4gbmFs dV9sZW47DQorfQ0KKw0KK3N0YXRpYyBpbnQgcGFyc2VfbmFsX3VuaXRzKGNvbnN0IEFWUHJvYmVE YXRhICpwLCBFVkNQYXJzZXJDb250ZXh0ICpldikNCit7DQorICAgIGludCBuYWx1X3R5cGU7DQor ICAgIHNpemVfdCBuYWx1X3NpemU7DQorICAgIHVuc2lnbmVkIGNoYXIgKmJpdHMgPSAodW5zaWdu ZWQgY2hhciAqKXAtPmJ1ZjsNCisgICAgaW50IGJ5dGVzX3RvX3JlYWQgPSBwLT5idWZfc2l6ZTsN CisNCisgICAgd2hpbGUoYnl0ZXNfdG9fcmVhZCA+IEVWQ19OQUxfVU5JVF9MRU5HVEhfQllURSkg ew0KKw0KKyAgICAgICAgbmFsdV9zaXplID0gcmVhZF9uYWxfdW5pdF9sZW5ndGgoYml0cywgRVZD X05BTF9VTklUX0xFTkdUSF9CWVRFKTsNCisgICAgICAgIGlmKG5hbHVfc2l6ZSA9PSAwKSBicmVh azsNCisNCisgICAgICAgIGJpdHMgKz0gRVZDX05BTF9VTklUX0xFTkdUSF9CWVRFOw0KKyAgICAg ICAgYnl0ZXNfdG9fcmVhZCAtPSBFVkNfTkFMX1VOSVRfTEVOR1RIX0JZVEU7DQorDQorICAgICAg ICBpZihieXRlc190b19yZWFkIDwgbmFsdV9zaXplKSBicmVhazsNCisNCisgICAgICAgIG5hbHVf dHlwZSA9IGdldF9uYWx1X3R5cGUoYml0cywgYnl0ZXNfdG9fcmVhZCk7DQorDQorICAgICAgICBi aXRzICs9IG5hbHVfc2l6ZTsNCisgICAgICAgIGJ5dGVzX3RvX3JlYWQgLT0gbmFsdV9zaXplOw0K Kw0KKyAgICAgICAgaWYgKG5hbHVfdHlwZSA9PSBFVkNfTlVUX1NQUykNCisgICAgICAgICAgICBl di0+Z290X3NwcysrOw0KKyAgICAgICAgZWxzZSBpZiAobmFsdV90eXBlID09IEVWQ19OVVRfUFBT KQ0KKyAgICAgICAgICAgIGV2LT5nb3RfcHBzKys7DQorICAgICAgICBlbHNlIGlmIChuYWx1X3R5 cGUgPT0gRVZDX05VVF9JRFIgKQ0KKyAgICAgICAgICAgIGV2LT5nb3RfaWRyKys7DQorICAgICAg ICBlbHNlIGlmIChuYWx1X3R5cGUgPT0gRVZDX05VVF9OT05JRFIpDQorICAgICAgICAgICAgZXYt PmdvdF9ub25pZHIrKzsNCisgICAgfQ0KKw0KKyAgICByZXR1cm4gMDsNCit9DQorDQorc3RhdGlj IGludCBldmNfcHJvYmUoY29uc3QgQVZQcm9iZURhdGEgKnApDQorew0KKyAgICBFVkNQYXJzZXJD b250ZXh0IGV2ID0gezB9Ow0KKyAgICBpbnQgcmV0ID0gcGFyc2VfbmFsX3VuaXRzKHAsICZldik7 DQorDQorICAgIGlmIChyZXQgPT0gMCAmJiBldi5nb3Rfc3BzICYmIGV2LmdvdF9wcHMgJiYgKGV2 LmdvdF9pZHIgfHwgZXYuZ290X25vbmlkciA+IDMpKQ0KKyAgICAgICAgcmV0dXJuIEFWUFJPQkVf U0NPUkVfRVhURU5TSU9OICsgMTsgIC8vIDEgbW9yZSB0aGFuIC5tcGcNCisNCisgICAgcmV0dXJu IDA7DQorfQ0KKw0KK0ZGX0RFRl9SQVdWSURFT19ERU1VWEVSKGV2YywgInJhdyBFVkMgdmlkZW8i LCBldmNfcHJvYmUsICJldmMiLCBBVl9DT0RFQ19JRF9FVkMpDQotLSANCjIuMTcuMQ0KDQoNCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1wZWctZGV2 ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxp bmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBz dWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==