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 937FD4ABB5 for ; Fri, 14 Jun 2024 02:36:16 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9B3C268D4F4; Fri, 14 Jun 2024 05:36:13 +0300 (EEST) Received: from AUS01-SY4-obe.outbound.protection.outlook.com (mail-sy4aus01olkn2173.outbound.protection.outlook.com [40.92.62.173]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D9A4E68D409 for ; Fri, 14 Jun 2024 05:36:05 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EBlE9XovcNKS58ZnV6PjtO5Zh5PxUj65gnbWxbWypsxlwwIqYL965Cx/CKcW9zc8pZrPuEo3oV09zpRwE4nxdOdwwHVYHW69B4Adlkgpu/pmpM3Eq26550glizWHTOKGe/exxGZSOEQoJNhtjOP0Pv1KwB74Dj6ukcE+1xloPQMpUaH+9Qd6IdsT1JDchYQMb31fskDfkVpXA2XqItfb/XiU7WUdJf7Ie6P3TjdzN+s7NjK+eTnwWHROx2MnVtbbfXUbHJ/E+5yBdc2YDOMPOTviass9K7Havu8yIPjZCYqUAxrFQ7MN6Ro5vdvQhnaFhnqJiqG8Hyltf/HfR3Y2Xw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=34lRcmjHD1uEWsZv3JjNKbS66Wgc0vElkk3NmNS7TsQ=; b=lTiRLzliSc3r4jC+BY5C6nAvkA86QLYPg2tCaKnGiVhdU5I8Q3fCTfCPWwlpxLyOxZqCsvKXJiTLiEsLC9eVxE2MbKQbAlWOz1UaFu4WeK5GCFBZF8yfUl14pi3liH3wC79lRFgnOWhpZZ/H4F3KHT3TsuoQ1SiKabIP3qIkqcmRdyNWIH097wYNgrod7dd0y3aP1E7v1a8LpkfonFdicUAJe/LKtTfXXFJa3LHpgu9Kj7NVJZk8Qi1n0xXGD7P+SDO71+y/C2qEYzY8Fy8KUNtC8MUbdXXV9po9sqyCzqlmN0oey7hQP3NfQGTw2N0SnQxLAJACkp9zXe5/Umkmww== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=msn.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=34lRcmjHD1uEWsZv3JjNKbS66Wgc0vElkk3NmNS7TsQ=; b=Qxu4N9hS59DpdDEPm9D5AArWgXwhDVebKlEONY0K2M1oshlJUqagGIw7c+xIfuWvu8gW+I2D0vuqZx9WQcSi4WfsHXrQ0Sb79/ZSYQrey/EJV+3QyKunCRQeOdNIxIKNy7nxrSqstfuBmgdSV6VWMcZfUWZtvZC+DnMbJnfe9QGGB3p1LCeOpgO7XzQCMIEMzW36ZgE5Sn/nzGBJ2HI6hW6SVCFQ75LSA/tU2dQVmOHsh+pLgxOTuF9fteoN1KWVa+M4BAeP5Yr232/9WDUwwiN1IQsNkibUWME4+EVyevULS+UKojNplr/7Sxn5LeX0lTDJrTrRTHdYrHC6WRBenA== Received: from MEYP282MB1592.AUSP282.PROD.OUTLOOK.COM (2603:10c6:220:bb::12) by ME3P282MB0946.AUSP282.PROD.OUTLOOK.COM (2603:10c6:220:87::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.38; Fri, 14 Jun 2024 02:36:00 +0000 Received: from MEYP282MB1592.AUSP282.PROD.OUTLOOK.COM ([fe80::2611:f10b:4168:af8a]) by MEYP282MB1592.AUSP282.PROD.OUTLOOK.COM ([fe80::2611:f10b:4168:af8a%2]) with mapi id 15.20.7677.024; Fri, 14 Jun 2024 02:36:00 +0000 Message-ID: Date: Fri, 14 Jun 2024 10:35:54 +0800 User-Agent: Mozilla Thunderbird From: ftaft2000 To: ffmpeg-devel@ffmpeg.org Content-Language: en-US X-TMN: [Ol1/HVYGY27J0hoYqLxm0J7+G35wGERz] X-ClientProxiedBy: TYAPR01CA0197.jpnprd01.prod.outlook.com (2603:1096:404:29::17) To MEYP282MB1592.AUSP282.PROD.OUTLOOK.COM (2603:10c6:220:bb::12) X-Microsoft-Original-Message-ID: <7f9c12bb-784c-4866-9160-6a2c67eef5de@msn.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MEYP282MB1592:EE_|ME3P282MB0946:EE_ X-MS-Office365-Filtering-Correlation-Id: a322f88d-7293-4933-2a57-08dc8c1aba18 X-Microsoft-Antispam: BCL:0; ARA:14566002|461199023|3412199020|3430499029|440099023|56899028; X-Microsoft-Antispam-Message-Info: OwzurcgTFIL4kjURO1SUe+UUbJBvr+d5o5Gewiz2TJeh8ld5YAVv1jN/8yOccpyMC0Hs7DayLznbn6oPJ5vXN2jCUuSqLErZAYwq51+U61mwzEvFp621lWXpZGV+OAFoyOtmdbfPVbxQVPiUPnmQwZZpVgv3I2aRiQz1pJEl7zsbzK5AdS9QZJOeijVoOwp2Fs2NVku208uASBCzFRXDAOMHpkhtVheaQhtzN+blTTMZawsHxYnyEJNbLTF7ly3Hfk/IGFNZYm2Bnbe5kPoWni89hKAkXM/67o+hXPxtYK5/rtkHbL2spOSoGZ3Dwm1MrQllyQFr482PuvfQEgSTEyheustP3Vtx03Ad98h0wqELi1cYVIKAP7QQIjqjwCvcFnH1ye146V9fI7aOVBwL2BiGOqeIaOshaAF3E67TPBIaCBIvGEGktiZ2T00Al5Ky9d8iKFQWoY9yDv7mtjTa8lbsLVzn3w1jbTZ0rHN4Zozm/G+xc9yDHV78h1/6oP0pK2hVLoGr5smKY8TmYDUba0hQlLcG66E5yio6RRQ21IlMPVr7O/cIiSaWezLYbenX X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?N1hZeDMxcWs5amlMYnpaZlNQZTViSXRuUnlRL0FnNkpVaVdpdmExeUhTYU5h?= =?utf-8?B?R2RoUW5IMnFxcWZhNkEwbC90R0lhWTRTMG15Q1RaSmFHVmJDU1dTcVpIVzZM?= =?utf-8?B?dFI2OXQwcXo5bjhEdEhoeXpHNkgxbkNVc2RFQ3VyOWlzcVVITUNBbXV1N2FK?= =?utf-8?B?L3BLRE16UkZNM2VnR01kSzFDZ1Z6VUpHWXZWc3k5Q3hsNDFLY1UySU5mOWZJ?= =?utf-8?B?aTM0M0RqNHNMSExKNXBWTFNBSGhOS0MwcmlIQUM0dXFzdlIxMTg3VlNPcmVT?= =?utf-8?B?R2pPWWk4Q0wxVGtzYUY3a0NXSGxoZTJQUlhlTHJ6M0ovc3ZQY2hwQTQ4Vzk2?= =?utf-8?B?bTJXNFJ0c3FNeFYrTnJ0NlZpZ2E4aG5SYmllWTNOYVFHajhXV0ZLR1lNODdr?= =?utf-8?B?eFNucEc1OXBrdzVVTC9MajJQY25BSjVXcDVJWUx2TmtmcEZSSC9jQUQ0WlhL?= =?utf-8?B?RkxtVXliVXRET3ptK0VHeTFSZ3dOMmMzb3phM1JoL0NmVzBZK0NWZEZNdTlm?= =?utf-8?B?MkxUKzVrUEp0eWxqYk9xeXBwU1A0Z09Ba3F5cDUxZGZJT3hsOHFackJBc2Ix?= =?utf-8?B?cTZDY3JQZFJHcXI3NVpDNWxoOTJ2RVBPbDVUYWF2Q0VWVXRNUnlsNWVIamli?= =?utf-8?B?d2F1aDk4V3h0QlMwTEpLc1IrK0xidWVYdC9PSk5ZakJrNmhxVit2bEc1VVBG?= =?utf-8?B?VWJEL3BDNjBRb3ZXeGM4Qkhmb0lGcUVBcG1td1A5Tm5HVmNpMGpmZUtoa0tC?= =?utf-8?B?aTJGb3pQVlN1WHdQTGtYWHRMKzNYaXFlTmxMc1ZTWUVaUWdNNWo5SUUrWlgr?= =?utf-8?B?d0ZDbjliMXE5Zmp2b3A2RUJ2UXpYQWltSGFUNUNDazhtcGdCdURzaDZEcXp6?= =?utf-8?B?MXlXbENmenZEdFViY0lsRHNjZDYvU0dWaXBENHhtcmhTVWRmQzFsM1BtTzJB?= =?utf-8?B?cEVjV2plOGRUUWhGZ1dNMng0bUtVME5JNWpzZXdaOVBVNWticFdEaC83YjRk?= =?utf-8?B?QU5NS3hoK3oxUndXWDFPcUZYT25DZ0NrY2txZkJqREF0cFpnY2RFVEV6WThk?= =?utf-8?B?c3VNQUZCbzlpOSt0VEFycmh2R0ZNNXZMTTBoMW9KK0tHeUY1MjBFbGp5M08x?= =?utf-8?B?N1ZTY2JBMUxnQXhtSVBaWmlESFA3ODhRUkNpWlY2U2lxQzI4K2w0aERDRU5X?= =?utf-8?B?U256TWZ6ZVNBZEs1QnA3em5UdTNEM01oeUUyZjdRTDVBMmhVZEFqVXFDUDBm?= =?utf-8?B?OGFmS29aVjJIM2lCeGtKdGptd2ZscDRMYXFDNkhFM1JwcW5BQ04ra0I2Z3Rz?= =?utf-8?B?L3dQY2RqZCs4TTlxSGZ5bmVGZmNkZmJOcnk4aUtBdzBuZ3VJeUFhRzIwOC9X?= =?utf-8?B?Tnh1ZlcxQVNwM1pxcGtQN2thdTlaVkI2YTZXRUNwMnZrYnh2eUdndnFUb0VM?= =?utf-8?B?cCtZSStJTUpWOHpDSmUwQldadlBHbVprQWNkbER2UHpkb09TTElNR0YyVFZN?= =?utf-8?B?RGJ1a3E5cyszTGxabkFWTE5ZUFRsc3B5LzhZa3NDVlBMMzkwb29TME9kMWZ1?= =?utf-8?B?cW55OFd4cWVjVDdqVVQ2ZTA0cHlJOW45Y2tiK2prYTFVZUp2RnVEMXMvQ2Yw?= =?utf-8?Q?Zxp7yHfG0Ll9HE7RGq9hfSaL8H4sjTwkCazVOKcFLclk=3D?= X-OriginatorOrg: sct-15-20-4755-11-msonline-outlook-746f3.templateTenant X-MS-Exchange-CrossTenant-Network-Message-Id: a322f88d-7293-4933-2a57-08dc8c1aba18 X-MS-Exchange-CrossTenant-AuthSource: MEYP282MB1592.AUSP282.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Jun 2024 02:36:00.4140 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: ME3P282MB0946 Subject: [FFmpeg-devel] [PATCH] rtp enc/dec update for vvc 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: U2lnbmVkLW9mZi1ieTogZnRhZnQyMDAwIDxmdGFmdDIwMDBAbXNuLmNvbT4KLS0tCiAgLmdpdGln bm9yZSAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKICBjb25maWd1cmUgICAgICAgICAgICAg ICAgICAgICAgfCAgIDQgKwogIGxpYmF2Y29kZWMvTWFrZWZpbGUgICAgICAgICAgICB8ICAgMSAr CiAgbGliYXZjb2RlYy9hbGxjb2RlY3MuYyAgICAgICAgIHwgICAxICsKICBsaWJhdmNvZGVjL2xp YnZ2ZW5jLmMgICAgICAgICAgfCA1NjYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr CiAgbGliYXZmb3JtYXQvTWFrZWZpbGUgICAgICAgICAgIHwgICAxICsKICBsaWJhdmZvcm1hdC9y dHBkZWMuYyAgICAgICAgICAgfCAgIDEgKwogIGxpYmF2Zm9ybWF0L3J0cGRlY19mb3JtYXRzLmgg ICB8ICAgMSArCiAgbGliYXZmb3JtYXQvcnRwZGVjX3Z2Yy5jICAgICAgIHwgMzQ5ICsrKysrKysr KysrKysrKysrKysrCiAgbGliYXZmb3JtYXQvcnRwZW5jLmMgICAgICAgICAgIHwgICAyICsKICBs aWJhdmZvcm1hdC9ydHBlbmNfaDI2NF9oZXZjLmMgfCAgOTQgKysrKystCiAgbGliYXZmb3JtYXQv c2RwLmMgICAgICAgICAgICAgIHwgMTgyICsrKysrKysrKysrCiAgMTIgZmlsZXMgY2hhbmdlZCwg MTE5NyBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQogIGNyZWF0ZSBtb2RlIDEwMDY0NCBs aWJhdmNvZGVjL2xpYnZ2ZW5jLmMKICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZmb3JtYXQvcnRw ZGVjX3Z2Yy5jCgpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25vcmUKaW5kZXggZTgx MGQxMTEwNy4uZDc0NDFhNmNkYyAxMDA2NDQKLS0tIGEvLmdpdGlnbm9yZQorKysgYi8uZ2l0aWdu b3JlCkBAIC00MSwzICs0MSw0IEBACiAgL3NyYwogIC9tYXBmaWxlCiAgL3Rvb2xzL3B5dGhvbi9f X3B5Y2FjaGVfXy8KKy9idWlsZApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp dCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQppbmRleCA4MzI4NDQyN2RmLi5kMzMxNjg4ZWI0IDEw MDc1NQotLS0gYS9jb25maWd1cmUKKysrIGIvY29uZmlndXJlCkBAIC0yOTYsNiArMjk2LDcgQEAg RXh0ZXJuYWwgbGlicmFyeSBzdXBwb3J0OgogICAgLS1lbmFibGUtbGlid2VicCAgICAgICAgIGVu YWJsZSBXZWJQIGVuY29kaW5nIHZpYSBsaWJ3ZWJwIFtub10KICAgIC0tZW5hYmxlLWxpYngyNjQg ICAgICAgICBlbmFibGUgSC4yNjQgZW5jb2RpbmcgdmlhIHgyNjQgW25vXQogICAgLS1lbmFibGUt bGlieDI2NSAgICAgICAgIGVuYWJsZSBIRVZDIGVuY29kaW5nIHZpYSB4MjY1IFtub10KKyAgLS1l bmFibGUtbGlidnZlbmMgICAgICAgIGVuYWJsZSBILjI2Ni9WVkMgZW5jb2RpbmcgdmlhIHZ2ZW5j IFtub10KICAgIC0tZW5hYmxlLWxpYnhldmUgICAgICAgICBlbmFibGUgRVZDIGVuY29kaW5nIHZp YSBsaWJ4ZXZlIFtub10KICAgIC0tZW5hYmxlLWxpYnhldmQgICAgICAgICBlbmFibGUgRVZDIGRl Y29kaW5nIHZpYSBsaWJ4ZXZkIFtub10KICAgIC0tZW5hYmxlLWxpYnhhdnMgICAgICAgICBlbmFi bGUgQVZTIGVuY29kaW5nIHZpYSB4YXZzIFtub10KQEAgLTE4NjcsNiArMTg2OCw3IEBAIEVYVEVS TkFMX0xJQlJBUllfR1BMX0xJU1Q9IgogICAgICBsaWJ2aWRzdGFiCiAgICAgIGxpYngyNjQKICAg ICAgbGlieDI2NQorICAgIGxpYnZ2ZW5jCiAgICAgIGxpYnhhdnMKICAgICAgbGlieGF2czIKICAg ICAgbGlieHZpZApAQCAtMzU2OSw2ICszNTcxLDcgQEAgbGlieDI2NHJnYl9lbmNvZGVyX2RlcHM9 ImxpYngyNjQiCiAgbGlieDI2NHJnYl9lbmNvZGVyX3NlbGVjdD0ibGlieDI2NF9lbmNvZGVyIgog IGxpYngyNjVfZW5jb2Rlcl9kZXBzPSJsaWJ4MjY1IgogIGxpYngyNjVfZW5jb2Rlcl9zZWxlY3Q9 ImF0c2NfYTUzIGRvdmlfcnB1ZW5jIgorbGlidnZlbmNfZW5jb2Rlcl9kZXBzPSJsaWJ2dmVuYyIK ICBsaWJ4YXZzX2VuY29kZXJfZGVwcz0ibGlieGF2cyIKICBsaWJ4YXZzMl9lbmNvZGVyX2RlcHM9 ImxpYnhhdnMyIgogIGxpYnhldmRfZGVjb2Rlcl9kZXBzPSJsaWJ4ZXZkIgpAQCAtNzA0MSw2ICs3 MDQ0LDcgQEAgZW5hYmxlZCBsaWJ4MjY0ICAgICAgICAgICAmJiByZXF1aXJlX3BrZ19jb25maWcg CmxpYngyNjQgeDI2NCAic3RkaW50LmggeDI2NC5oIiB4CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjaGVja19jcHBfY29uZGl0aW9uIGxpYngyNjIgeDI2NC5oIAoiWDI2NF9NUEVHMiIK ICBlbmFibGVkIGxpYngyNjUgICAgICAgICAgICYmIHJlcXVpcmVfcGtnX2NvbmZpZyBsaWJ4MjY1 IHgyNjUgeDI2NS5oIAp4MjY1X2FwaV9nZXQgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJlcXVpcmVfY3BwX2NvbmRpdGlvbiBsaWJ4MjY1IHgyNjUuaCAKIlgyNjVfQlVJTEQgPj0g ODkiCitlbmFibGVkIGxpYnZ2ZW5jICAgICAgICAgICYmIHJlcXVpcmVfcGtnX2NvbmZpZyBsaWJ2 dmVuYyAibGlidnZlbmMgPj0gCjEuNi4xIiAidnZlbmMvdnZlbmMuaCIgdnZlbmNfZ2V0X3ZlcnNp b24KICBlbmFibGVkIGxpYnhhdnMgICAgICAgICAgICYmIHJlcXVpcmUgbGlieGF2cyAic3RkaW50 LmggeGF2cy5oIiAKeGF2c19lbmNvZGVyX2VuY29kZSAiLWx4YXZzICRwdGhyZWFkc19leHRyYWxp YnMgJGxpYm1fZXh0cmFsaWJzIgogIGVuYWJsZWQgbGlieGF2czIgICAgICAgICAgJiYgcmVxdWly ZV9wa2dfY29uZmlnIGxpYnhhdnMyICJ4YXZzMiA+PSAKMS4zLjAiICJzdGRpbnQuaCB4YXZzMi5o IiB4YXZzMl9hcGlfZ2V0CiAgZW5hYmxlZCBsaWJ4ZXZkICAgICAgICAgICAmJiByZXF1aXJlX3Br Z19jb25maWcgbGlieGV2ZCAieGV2ZCA+PSAKMC40LjEiICJ4ZXZkLmgiIHhldmRfZGVjb2RlCmRp ZmYgLS1naXQgYS9saWJhdmNvZGVjL01ha2VmaWxlIGIvbGliYXZjb2RlYy9NYWtlZmlsZQppbmRl eCAxYTQ0MzUyOTA2Li4yZTk4ZTFjNzJmIDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL01ha2VmaWxl CisrKyBiL2xpYmF2Y29kZWMvTWFrZWZpbGUKQEAgLTExNTUsNiArMTE1NSw3IEBAIE9CSlMtJChD T05GSUdfTElCV0VCUF9BTklNX0VOQ09ERVIpICAgICAgICs9IApsaWJ3ZWJwZW5jX2NvbW1vbi5v IGxpYndlYnBlbmNfYW5pbQogIE9CSlMtJChDT05GSUdfTElCWDI2Ml9FTkNPREVSKSAgICAgICAg ICAgICs9IGxpYngyNjQubwogIE9CSlMtJChDT05GSUdfTElCWDI2NF9FTkNPREVSKSAgICAgICAg ICAgICs9IGxpYngyNjQubwogIE9CSlMtJChDT05GSUdfTElCWDI2NV9FTkNPREVSKSAgICAgICAg ICAgICs9IGxpYngyNjUubworT0JKUy0kKENPTkZJR19MSUJWVkVOQ19FTkNPREVSKSAgICAgICAg ICAgKz0gbGlidnZlbmMubwogIE9CSlMtJChDT05GSUdfTElCWEFWU19FTkNPREVSKSAgICAgICAg ICAgICs9IGxpYnhhdnMubwogIE9CSlMtJChDT05GSUdfTElCWEFWUzJfRU5DT0RFUikgICAgICAg ICAgICs9IGxpYnhhdnMyLm8KICBPQkpTLSQoQ09ORklHX0xJQlhFVkRfREVDT0RFUikgICAgICAg ICAgICArPSBsaWJ4ZXZkLm8KZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvYWxsY29kZWNzLmMgYi9s aWJhdmNvZGVjL2FsbGNvZGVjcy5jCmluZGV4IGIxMDJhODA2OWUuLjc2NTBhYmViZTQgMTAwNjQ0 Ci0tLSBhL2xpYmF2Y29kZWMvYWxsY29kZWNzLmMKKysrIGIvbGliYXZjb2RlYy9hbGxjb2RlY3Mu YwpAQCAtODA3LDYgKzgwNyw3IEBAIGV4dGVybiBjb25zdCBGRkNvZGVjIGZmX2xpYngyNjJfZW5j b2RlcjsKICBleHRlcm4gY29uc3QgRkZDb2RlYyBmZl9saWJ4MjY0X2VuY29kZXI7CiAgZXh0ZXJu IGNvbnN0IEZGQ29kZWMgZmZfbGlieDI2NHJnYl9lbmNvZGVyOwogIGV4dGVybiBGRkNvZGVjIGZm X2xpYngyNjVfZW5jb2RlcjsKK2V4dGVybiBjb25zdCBGRkNvZGVjIGZmX2xpYnZ2ZW5jX2VuY29k ZXI7CiAgZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZfbGlieGV2ZV9lbmNvZGVyOwogIGV4dGVybiBj b25zdCBGRkNvZGVjIGZmX2xpYnhldmRfZGVjb2RlcjsKICBleHRlcm4gY29uc3QgRkZDb2RlYyBm Zl9saWJ4YXZzX2VuY29kZXI7CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2xpYnZ2ZW5jLmMgYi9s aWJhdmNvZGVjL2xpYnZ2ZW5jLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MC4uNzhkNGY1NWEyYQotLS0gL2Rldi9udWxsCisrKyBiL2xpYmF2Y29kZWMvbGlidnZlbmMuYwpA QCAtMCwwICsxLDU2NiBAQAorLyoKKyAqIEguMjY2IGVuY29kaW5nIHVzaW5nIHRoZSBWVmVuQyBs aWJyYXJ5CisgKgorICogQ29weXJpZ2h0IChDKSAyMDIyLCBUaG9tYXMgU2llZGVsCisgKgorICog VGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgorICoKKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVy c2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCisgKgorICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGlj ZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy ZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwg Qm9zdG9uLCBNQSAKMDIxMTAtMTMwMSBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmlnX2NvbXBv bmVudHMuaCIKKworI2luY2x1ZGUgPHZ2ZW5jL3Z2ZW5jLmg+CisjaW5jbHVkZSA8dnZlbmMvdnZl bmNDZmcuaD4KKyNpbmNsdWRlIDx2dmVuYy92ZXJzaW9uLmg+CisKKyNpbmNsdWRlICJhdmNvZGVj LmgiCisjaW5jbHVkZSAiY29kZWNfaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJlbmNvZGUuaCIKKyNp bmNsdWRlICJpbnRlcm5hbC5oIgorI2luY2x1ZGUgInBhY2tldF9pbnRlcm5hbC5oIgorI2luY2x1 ZGUgInByb2ZpbGVzLmgiCisKKyNpbmNsdWRlICJsaWJhdnV0aWwvYXZ1dGlsLmgiCisjaW5jbHVk ZSAibGliYXZ1dGlsL21lbS5oIgorI2luY2x1ZGUgImxpYmF2dXRpbC9waXhkZXNjLmgiCisjaW5j bHVkZSAibGliYXZ1dGlsL29wdC5oIgorI2luY2x1ZGUgImxpYmF2dXRpbC9jb21tb24uaCIKKyNp bmNsdWRlICJsaWJhdnV0aWwvaW1ndXRpbHMuaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvZnJhbWUu aCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvbG9nLmgiCisKK3R5cGVkZWYgc3RydWN0IFZWZW5DT3B0 aW9ucyB7CisgICAgaW50IHByZXNldDsgICAgICAgICAgICAgICAgIC8vIHByZXNldCAwOiBmYXN0 ZXIgIDQ6IHNsb3dlcgorICAgIGludCBxcDsgICAgICAgICAgICAgICAgICAgICAvLyBxdWFudGl6 YXRpb24gcGFyYW1ldGVyIDAtNjMKKyAgICBpbnQgc3ViamVjdGl2ZU9wdGltaXphdGlvbjsgLy8g cGVyY2VwdHVhbGx5IG1vdGl2YXRlZCBRUCAKYWRhcHRhdGlvbiwgWFBTTlIgYmFzZWQKKyAgICBp bnQgZmxhZzhiaXRDb2Rpbmc7ICAgICAgICAgLy8gZW5jb2RlIGluIDhiaXQgaW5zdGVhZCBvZiAx MGJpdAorICAgIGludCBpbnRyYVJlZnJlc2hTZWM7ICAgICAgICAvLyBpbnRyYSBwZXJpb2QvcmVm cmVzaCBpbiBzZWNvbmRzCisgICAgaW50IGxldmVsSWRjOyAgICAgICAgICAgICAgIC8vIHZ2YyBs ZXZlbF9pZGMKKyAgICBpbnQgdGllcjsgICAgICAgICAgICAgICAgICAgLy8gdnZjIHRpZXIKKyAg ICBBVkRpY3Rpb25hcnkgKnZ2ZW5jX29wdHM7Cit9IFZWZW5DT3B0aW9uczsKKwordHlwZWRlZiBz dHJ1Y3QgVlZlbkNDb250ZXh0IHsKKyAgICBBVkNsYXNzICAgICAgICAgKmF2X2NsYXNzOworICAg IFZWZW5DT3B0aW9ucyAgICBvcHRpb25zOyAgICAgIC8vIGVuY29kZXIgb3B0aW9ucworICAgIHZ2 ZW5jRW5jb2RlciAgICAqdnZlbmNFbmM7CisgICAgdnZlbmNBY2Nlc3NVbml0ICpwQVU7CisgICAg Ym9vbCAgICAgICAgICAgIGVuY29kZURvbmU7Cit9IFZWZW5DQ29udGV4dDsKKworCitzdGF0aWMg YXZfY29sZCB2b2lkIGZmX3Z2ZW5jX2xvZ19jYWxsYmFjayh2b2lkICpjdHgsIGludCBsZXZlbCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZt dCwgdmFfbGlzdCBhcmdzKQoreworICAgIHZ2ZW5jX2NvbmZpZyBwYXJhbXM7CisgICAgdnZlbmNF bmNvZGVyICp2dmVuY0VuYyA9ICh2dmVuY0VuY29kZXIgKiljdHg7CisgICAgaWYgKHZ2ZW5jRW5j KXsKKyAgICAgICAgdnZlbmNfY29uZmlnX2RlZmF1bHQoJnBhcmFtcyk7CisgICAgICAgIHZ2ZW5j X2dldF9jb25maWcodnZlbmNFbmMsICZwYXJhbXMpOworICAgICAgICBpZiAoKGludClwYXJhbXMu bV92ZXJib3NpdHkgPj0gbGV2ZWwpCisgICAgICAgICAgICB2ZnByaW50ZihsZXZlbCA9PSAxID8g c3RkZXJyIDogc3Rkb3V0LCBmbXQsIGFyZ3MpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgZmZf dnZlbmNfc2V0X3ZlcmJvc2l0b3J5KHZ2ZW5jX2NvbmZpZyogcGFyYW1zICkKK3sKKyAgICBwYXJh bXMtPm1fdmVyYm9zaXR5ID0gVlZFTkNfVkVSQk9TRTsKKyAgICBpZiAoYXZfbG9nX2dldF9sZXZl bCgpID49IEFWX0xPR19ERUJVRykKKyAgICAgICAgcGFyYW1zLT5tX3ZlcmJvc2l0eSA9IFZWRU5D X0RFVEFJTFM7CisgICAgZWxzZSBpZiAoYXZfbG9nX2dldF9sZXZlbCgpID49IEFWX0xPR19WRVJC T1NFKQorICAgICAgICBwYXJhbXMtPm1fdmVyYm9zaXR5ID0gVlZFTkNfTk9USUNFOyAgICAgIC8v IG91dHB1dCBwZXIgcGljdHVyZSBpbmZvCisgICAgZWxzZSBpZiAoYXZfbG9nX2dldF9sZXZlbCgp ID49IEFWX0xPR19JTkZPKQorICAgICAgICBwYXJhbXMtPm1fdmVyYm9zaXR5ID0gVlZFTkNfV0FS TklORzsgICAgIC8vIGZmbXBlZyBkZWZhdWx0IApmZm1wZWcgbG9nbGV2ZWwKKyAgICBlbHNlCisg ICAgICAgIHBhcmFtcy0+bV92ZXJib3NpdHkgPSBWVkVOQ19TSUxFTlQ7Cit9CisKK3N0YXRpYyBp bnQgZmZfdnZlbmNfc2V0X3BpY19mb3JtYXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCB2dmVuY19j b25maWcqIApwYXJhbXMgKQoreworICAgIFZWZW5DQ29udGV4dCAqcyA9KFZWZW5DQ29udGV4dCAq KSBhdmN0eC0+cHJpdl9kYXRhOworCisgICAgcGFyYW1zLT5tX2ludGVybkNocm9tYUZvcm1hdCA9 IFZWRU5DX0NIUk9NQV80MjA7CisgICAgcGFyYW1zLT5tX2lucHV0Qml0RGVwdGhbMF0gICA9IDEw OworCisgICAgaWYgKGF2Y3R4LT5waXhfZm10ICE9IEFWX1BJWF9GTVRfWVVWNDIwUDEwTEUpewor ICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwKKyAgICAgICAgICAgICAgICJ1bnN1 cHBvcnRlZCBwaXhlbCBmb3JtYXQgJXMsIGN1cnJlbnRseSBvbmx5IHN1cHBvcnQgZm9yIAp5dXY0 MjBwMTBsZVxuIiwKKyAgICAgICAgICAgICAgICBhdl9nZXRfcGl4X2ZtdF9uYW1lKGF2Y3R4LT5w aXhfZm10KSk7CisgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7CisgICAgfQorCisgICAg aWYgKHMtPm9wdGlvbnMuZmxhZzhiaXRDb2RpbmcpIHsKKyNpZiBWVkVOQ19WRVJTSU9OX01BSk9S ID4gMSB8fCAoVlZFTkNfVkVSU0lPTl9NQUpPUiA9PSAxICYmIApWVkVOQ19WRVJTSU9OX01JTk9S ID4gOSkgfHwgKFZWRU5DX1ZFUlNJT05fTUFKT1IgPT0gMSAmJiAKVlZFTkNfVkVSU0lPTl9NSU5P UiA+PSA5ICYmIFZWRU5DX1ZFUlNJT05fUEFUQ0ggPj0gMSkKKyAgICAgICAgICAgIHBhcmFtcy0+ bV9pbnRlcm5hbEJpdERlcHRoWzBdID0gODsKKyNlbHNlCisgICAgICAgICAgICBhdl9sb2coYXZj dHgsIEFWX0xPR19FUlJPUiwKKyAgICAgICAgICAgICAgICAidW5zdXBwb3J0ZWQgOGJpdCBjb2Rp bmcgbW9kZS4gOGJpdCBjb2RpbmcgbmVlZHMgYXQgCmxlYXN0IHZ2ZW5jIHZlcnNpb24gPj0gMS45 LjEgIgorICAgICAgICAgICAgICAgICIoY3VycmVudCB2ZXJzaW9uICVzKVxuIiwgdnZlbmNfZ2V0 X3ZlcnNpb24oKSApOworICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKKyNlbmRp ZgorICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgZmZfdnZlbmNfc2V0X2Nv bG9yX2Zvcm1hdChBVkNvZGVjQ29udGV4dCAqYXZjdHgsIAp2dmVuY19jb25maWcqIHBhcmFtcyAp Cit7CisgICAgaWYgKGF2Y3R4LT5jb2xvcl9wcmltYXJpZXMgIT0gQVZDT0xfUFJJX1VOU1BFQ0lG SUVEKQorICAgICAgICBwYXJhbXMtPm1fY29sb3VyUHJpbWFyaWVzID0gKGludCkgYXZjdHgtPmNv bG9yX3ByaW1hcmllczsKKyAgICBpZiAoYXZjdHgtPmNvbG9yc3BhY2UgIT0gQVZDT0xfU1BDX1VO U1BFQ0lGSUVEKQorICAgICAgICBwYXJhbXMtPm1fbWF0cml4Q29lZmZpY2llbnRzID0gKGludCkg YXZjdHgtPmNvbG9yc3BhY2U7CisgICAgaWYgKGF2Y3R4LT5jb2xvcl90cmMgIT0gQVZDT0xfVFJD X1VOU1BFQ0lGSUVEKSB7CisgICAgICAgIHBhcmFtcy0+bV90cmFuc2ZlckNoYXJhY3RlcmlzdGlj cyA9IChpbnQpIGF2Y3R4LT5jb2xvcl90cmM7CisKKyAgICAgICAgaWYgKGF2Y3R4LT5jb2xvcl90 cmMgPT0gQVZDT0xfVFJDX1NNUFRFMjA4NCkKKyAgICAgICAgICAgIHBhcmFtcy0+bV9IZHJNb2Rl ID0gKGF2Y3R4LT5jb2xvcl9wcmltYXJpZXMgPT0gCkFWQ09MX1BSSV9CVDIwMjApID8KKyAgICAg ICAgICAgICAgICBWVkVOQ19IRFJfUFFfQlQyMDIwIDogVlZFTkNfSERSX1BROworICAgICAgICBl bHNlIGlmIChhdmN0eC0+Y29sb3JfdHJjID09IEFWQ09MX1RSQ19CVDIwMjBfMTAKKyAgICAgICAg ICAgICAgICAgfHwgYXZjdHgtPmNvbG9yX3RyYyA9PSBBVkNPTF9UUkNfQVJJQl9TVERfQjY3KQor ICAgICAgICAgICAgcGFyYW1zLT5tX0hkck1vZGUgPSAoYXZjdHgtPmNvbG9yX3RyYyA9PSBBVkNP TF9UUkNfQlQyMDIwXzEwIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2Y3R4 LT5jb2xvcl9wcmltYXJpZXMgPT0gCkFWQ09MX1BSSV9CVDIwMjAgfHwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYXZjdHgtPmNvbG9yc3BhY2UgPT0gCkFWQ09MX1NQQ19CVDIwMjBf TkNMIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2Y3R4LT5jb2xvcnNwYWNl ID09IEFWQ09MX1NQQ19CVDIwMjBfQ0wpID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBWVkVOQ19IRFJfSExHX0JUMjAyMCA6IFZWRU5DX0hEUl9ITEc7CisgICAgfQorCisgICAgaWYg KHBhcmFtcy0+bV9IZHJNb2RlID09IFZWRU5DX0hEUl9PRkYKKyAgICAgICAgJiYgKGF2Y3R4LT5j b2xvcl9wcmltYXJpZXMgIT0gQVZDT0xfUFJJX1VOU1BFQ0lGSUVECisgICAgICAgICAgICB8fCBh dmN0eC0+Y29sb3JzcGFjZSAhPSBBVkNPTF9TUENfVU5TUEVDSUZJRUQpKSB7CisgICAgICAgIHBh cmFtcy0+bV92dWlQYXJhbWV0ZXJzUHJlc2VudCA9IDE7CisgICAgICAgIHBhcmFtcy0+bV9jb2xv dXJEZXNjcmlwdGlvblByZXNlbnQgPSB0cnVlOworICAgIH0KK30KKworc3RhdGljIHZvaWQgZmZf dnZlbmNfc2V0X2ZyYW1lcmF0ZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIHZ2ZW5jX2NvbmZpZyog CnBhcmFtcyApCit7CisgICAgcGFyYW1zLT5tX0ZyYW1lUmF0ZSA9IGF2Y3R4LT50aW1lX2Jhc2Uu ZGVuOworICAgIHBhcmFtcy0+bV9GcmFtZVNjYWxlID0gYXZjdHgtPnRpbWVfYmFzZS5udW07CisK K0ZGX0RJU0FCTEVfREVQUkVDQVRJT05fV0FSTklOR1MKKworI2lmIEZGX0FQSV9USUNLU19QRVJf RlJBTUUKKyAgICBpZiAoYXZjdHgtPnRpY2tzX3Blcl9mcmFtZSA9PSAxKSB7CisjZW5kaWYKKyAg ICAgICAgcGFyYW1zLT5tX1RpY2tzUGVyU2Vjb25kID0gLTE7ICAgLy8gYXV0byBtb2RlIGZvciB0 aWNrcyBwZXIgCmZyYW1lID0gMQorI2lmIEZGX0FQSV9USUNLU19QRVJfRlJBTUUKKyAgICB9IGVs c2UgeworICAgICAgICBwYXJhbXMtPm1fVGlja3NQZXJTZWNvbmQgPQorICAgICAgICAgICAgY2Vp bCgoYXZjdHgtPnRpbWVfYmFzZS5kZW4gLyAoZG91YmxlKSBhdmN0eC0+dGltZV9iYXNlLm51bSkg KgorICAgICAgICAgICAgICAgICAoZG91YmxlKSBhdmN0eC0+dGlja3NfcGVyX2ZyYW1lKTsKKyAg ICB9CisjZW5kaWYKK0ZGX0VOQUJMRV9ERVBSRUNBVElPTl9XQVJOSU5HUworfQorCitzdGF0aWMg aW50IGZmX3Z2ZW5jX3BhcnNlX3Z2ZW5jX3BhcmFtcyhBVkNvZGVjQ29udGV4dCAqYXZjdHgsIAp2 dmVuY19jb25maWcqIHBhcmFtcywgY2hhciogc3RhdHNmaWxlICkKK3sKKyAgICBpbnQgcGFyc2Vf cmV0LCByZXQ7CisgICAgVlZlbkNDb250ZXh0ICpzOworICAgIEFWRGljdGlvbmFyeUVudHJ5ICpl biA9IE5VTEw7CisgICAgcyA9KFZWZW5DQ29udGV4dCAqKSBhdmN0eC0+cHJpdl9kYXRhOworICAg IHJldCA9IDA7CisKKyAgICB3aGlsZSAoKGVuID0gYXZfZGljdF9nZXQocy0+b3B0aW9ucy52dmVu Y19vcHRzLCAiIiwgZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFWX0RJQ1RfSUdO T1JFX1NVRkZJWCkpKSB7CisgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0RFQlVHLCAidnZl bmNfc2V0X3BhcmFtOiAnJXM6JXMnXG4iLCBlbi0+a2V5LAorICAgICAgICAgICAgICAgZW4tPnZh bHVlKTsKKyAgICAgICAgcGFyc2VfcmV0ID0gdnZlbmNfc2V0X3BhcmFtKHBhcmFtcywgZW4tPmtl eSwgZW4tPnZhbHVlKTsKKyAgICAgICAgc3dpdGNoIChwYXJzZV9yZXQpIHsKKyAgICAgICAgY2Fz ZSBWVkVOQ19QQVJBTV9CQURfTkFNRToKKyAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9H X0VSUk9SLCAiVW5rbm93biB2dmVuYyBvcHRpb246ICVzLlxuIiwKKyAgICAgICAgICAgICAgICAg ICBlbi0+a2V5KTsKKyAgICAgICAgICAgIHJldCA9IEFWRVJST1IoRUlOVkFMKTsKKyAgICAgICAg ICAgIGJyZWFrOworICAgICAgICBjYXNlIFZWRU5DX1BBUkFNX0JBRF9WQUxVRToKKyAgICAgICAg ICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICJJbnZh bGlkIHZ2ZW5jIHZhbHVlIGZvciAlczogJXMuXG4iLCBlbi0+a2V5LCAKZW4tPnZhbHVlKTsKKyAg ICAgICAgICAgIHJldCA9IEFWRVJST1IoRUlOVkFMKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBp ZiAobWVtY21wKGVuLT5rZXksICJyY3N0YXRzZmlsZSIsIDExKSA9PSAwIHx8CisgICAgICAgICAg ICBtZW1jbXAoZW4tPmtleSwgIlJDU3RhdHNGaWxlIiwgMTEpID09IDApIHsKKyAgICAgICAgICAg IHN0cm5jcHkoc3RhdHNmaWxlLCBlbi0+dmFsdWUsIHN0cmxlbihzdGF0c2ZpbGUpKTsKKyAgICAg ICAgICAgIHN0YXRzZmlsZVtzdHJsZW4oc3RhdHNmaWxlKV0gPSAnXDAnOworICAgICAgICB9Cisg ICAgfQorICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgZmZfdnZlbmNfc2V0X3JjX21v ZGUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCB2dmVuY19jb25maWcqIApwYXJhbXMpCit7CisgICAg aWYgKHBhcmFtcy0+bV9SQ1Bhc3MgIT0gLTEgJiYgcGFyYW1zLT5tX1JDTnVtUGFzc2VzID09IDEp CisgICAgICAgIHBhcmFtcy0+bV9SQ051bVBhc3NlcyA9IDI7ICAgICAgIC8qIGVuYWJsZSAycGFz cyBtb2RlICovCisKKyAgICBpZihhdmN0eC0+cmNfbWF4X3JhdGUpIHsKKyNpZiBWVkVOQ19WRVJT SU9OX01BSk9SID4gMSB8fCAoVlZFTkNfVkVSU0lPTl9NQUpPUiA9PSAxICYmIApWVkVOQ19WRVJT SU9OX01JTk9SID4gOCkKKyAgICAgICAgcGFyYW1zLT5tX1JDTWF4Qml0cmF0ZSA9IGF2Y3R4LT5y Y19tYXhfcmF0ZTsKKyNlbmRpZgorCisjaWYgVlZFTkNfVkVSU0lPTl9NQUpPUiA9PSAxICYmIFZW RU5DX1ZFUlNJT05fTUlOT1IgPCAxMQorICAgICAgICAvKiByY19tYXhfcmF0ZSB3aXRob3V0IGEg Yml0X3JhdGUgZW5hYmxlcyBjYXBwZWQgQ1FGIG1vZGUuCisgICAgICAgIChRUCArIHN1YmouIG9w dGltaXphdGlvbiArIG1heC4gYml0cmF0ZSkgKi8KKyAgICAgICAgaWYoIWF2Y3R4LT5iaXRfcmF0 ZSkgeworICAgICAgICAgICAgYXZfbG9nKCBhdmN0eCwgQVZfTE9HX0VSUk9SLAorICAgICAgICAg ICAgICAgICJDYXBwZWQgQ29uc3RhbnQgUXVhbGl0eSBGYWN0b3IgbW9kZSAoY2FwcGVkIENRRikg bmVlZHMgCmF0ICIKKyAgICAgICAgICAgICAgICAibGVhc3QgdnZlbmMgdmVyc2lvbiA+PSAxLjEx LjAgKGN1cnJlbnQgdmVyc2lvbiAlcylcbiIsCisgICAgICAgICAgICAgICAgdnZlbmNfZ2V0X3Zl cnNpb24oKSk7CisgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOworICAgICAgICB9 CisjZW5kaWYKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZmZfdnZlbmNf aW5pdF9leHRyYWRhdGEoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBWVmVuQ0NvbnRleHQgKnMpCit7 CisgICAgaW50IHJldDsKKyAgICBpZiAoYXZjdHgtPmZsYWdzICYgQVZfQ09ERUNfRkxBR19HTE9C QUxfSEVBREVSKSB7CisgICAgICAgIHJldCA9IHZ2ZW5jX2dldF9oZWFkZXJzKHMtPnZ2ZW5jRW5j LCBzLT5wQVUpOworICAgICAgICBpZiAoMCAhPSByZXQpIHsKKyAgICAgICAgICAgIGF2X2xvZyhh dmN0eCwgQVZfTE9HX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICJjYW5ub3QgZ2V0IGhlYWRl cnMgKFNQUyxQUFMpIGZyb20gdnZjIAplbmNvZGVyKHZ2ZW5jKTogJXNcbiIsCisgICAgICAgICAg ICAgICAgICAgdnZlbmNfZ2V0X2xhc3RfZXJyb3Iocy0+dnZlbmNFbmMpKTsKKyAgICAgICAgICAg IHZ2ZW5jX2VuY29kZXJfY2xvc2Uocy0+dnZlbmNFbmMpOworICAgICAgICAgICAgcmV0dXJuIEFW RVJST1IoRUlOVkFMKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzLT5wQVUtPnBheWxvYWRV c2VkU2l6ZSA8PSAwKSB7CisgICAgICAgICAgICB2dmVuY19lbmNvZGVyX2Nsb3NlKHMtPnZ2ZW5j RW5jKTsKKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworICAgICAgICB9 CisKKyAgICAgICAgYXZjdHgtPmV4dHJhZGF0YV9zaXplID0gcy0+cEFVLT5wYXlsb2FkVXNlZFNp emU7CisgICAgICAgIGF2Y3R4LT5leHRyYWRhdGEgPQorICAgICAgICAgICAgYXZfbWFsbG9jeihh dmN0eC0+ZXh0cmFkYXRhX3NpemUgKyAKQVZfSU5QVVRfQlVGRkVSX1BBRERJTkdfU0laRSk7Cisg ICAgICAgIGlmICghYXZjdHgtPmV4dHJhZGF0YSkgeworICAgICAgICAgICAgYXZfbG9nKGF2Y3R4 LCBBVl9MT0dfRVJST1IsCisgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBhbGxvY2F0ZSBWVkMg aGVhZGVyIG9mIHNpemUgJWQuXG4iLAorICAgICAgICAgICAgICAgICAgIGF2Y3R4LT5leHRyYWRh dGFfc2l6ZSk7CisgICAgICAgICAgICB2dmVuY19lbmNvZGVyX2Nsb3NlKHMtPnZ2ZW5jRW5jKTsK KyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CisgICAgICAgIH0KKworICAgICAg ICBtZW1jcHkoYXZjdHgtPmV4dHJhZGF0YSwgcy0+cEFVLT5wYXlsb2FkLCBhdmN0eC0+ZXh0cmFk YXRhX3NpemUpOworICAgICAgICBtZW1zZXQoYXZjdHgtPmV4dHJhZGF0YSArIGF2Y3R4LT5leHRy YWRhdGFfc2l6ZSwgMCwKKyAgICAgICAgICAgICAgIEFWX0lOUFVUX0JVRkZFUl9QQURESU5HX1NJ WkUpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGF2X2NvbGQgaW50IGZmX3Z2 ZW5jX2VuY29kZV9pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0eCkKK3sKKyAgICBpbnQgcmV0Owor ICAgIGludCBmcmFtZXJhdGUsIHFwOworICAgIFZWZW5DQ29udGV4dCAqczsKKyAgICB2dmVuY19j b25maWcgcGFyYW1zOworICAgIHZ2ZW5jUHJlc2V0TW9kZSBwcmVzZXQ7CisgICAgY2hhciBzdGF0 c2ZpbGVbMTAyNF0gPSAidnZlbmMtcmNzdGF0cy5qc29uIjsKKworICAgIHMgPSAoVlZlbkNDb250 ZXh0ICopIGF2Y3R4LT5wcml2X2RhdGE7CisgICAgcXAgPSBzLT5vcHRpb25zLnFwOworICAgIHBy ZXNldCA9ICh2dmVuY1ByZXNldE1vZGUpIHMtPm9wdGlvbnMucHJlc2V0OworCisgICAgaWYgKGF2 Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfSU5URVJMQUNFRF9EQ1QpIHsKKyAgICAgICAgYXZf bG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsCisgICAgICAgICAgICAgICAiZmZfdnZlbmNfZW5jb2Rl X2luaXQ6OmluaXQoKSBpbnRlcmxhY2VkIGVuY29kaW5nIG5vdCAKc3VwcG9ydGVkIHlldFxuIik7 CisgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworICAgIH0KKworICAgIHZ2ZW5j X2NvbmZpZ19kZWZhdWx0KCZwYXJhbXMpOworCisgICAgZnJhbWVyYXRlID0gYXZjdHgtPnRpbWVf YmFzZS5kZW4gLyBhdmN0eC0+dGltZV9iYXNlLm51bTsKKyAgICB2dmVuY19pbml0X2RlZmF1bHQo JnBhcmFtcywgYXZjdHgtPndpZHRoLCBhdmN0eC0+aGVpZ2h0LCBmcmFtZXJhdGUsCisgICAgICAg ICAgICAgICAgICAgICAgIChxcCA+PSAwKSA/IDAgOiBhdmN0eC0+Yml0X3JhdGUsIChxcCA8IDAp ID8gMzIgOiAKcXAsIHByZXNldCk7CisKKyAgICBmZl92dmVuY19zZXRfdmVyYm9zaXRvcnkoJnBh cmFtcyk7CisKKyAgICBpZiAoYXZjdHgtPnRocmVhZF9jb3VudCA+IDApCisgICAgICAgIHBhcmFt cy5tX251bVRocmVhZHMgPSBhdmN0eC0+dGhyZWFkX2NvdW50OworCisgICAgLyogR09QIHNldHRp bmdzIChJRFIvQ1JBKSAqLworICAgIGlmIChhdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX0NM T1NFRF9HT1ApCisgICAgICAgIHBhcmFtcy5tX0RlY29kaW5nUmVmcmVzaFR5cGUgPSBWVkVOQ19E UlRfSURSOworCisgICAgaWYgKGF2Y3R4LT5nb3Bfc2l6ZSA9PSAxKSB7CisgICAgICAgIHBhcmFt cy5tX0dPUFNpemUgPSAxOworICAgICAgICBwYXJhbXMubV9JbnRyYVBlcmlvZCA9IDE7CisgICAg fSBlbHNlIHsKKyAgICAgICAgcGFyYW1zLm1fSW50cmFQZXJpb2RTZWMgPSBzLT5vcHRpb25zLmlu dHJhUmVmcmVzaFNlYzsKKyAgICB9CisKKyAgICBwYXJhbXMubV9BY2Nlc3NVbml0RGVsaW1pdGVy ID0gdHJ1ZTsKKyAgICBwYXJhbXMubV9SQ051bVBhc3NlcyA9IDE7CisKKyAgICBwYXJhbXMubV91 c2VQZXJjZXB0UVBBID0gcy0+b3B0aW9ucy5zdWJqZWN0aXZlT3B0aW1pemF0aW9uOworICAgIHBh cmFtcy5tX2xldmVsICAgICAgICAgPSAodnZlbmNMZXZlbCkgcy0+b3B0aW9ucy5sZXZlbElkYzsK KyAgICBwYXJhbXMubV9sZXZlbFRpZXIgICAgID0gKHZ2ZW5jVGllcikgcy0+b3B0aW9ucy50aWVy OworCisgICAgZmZfdnZlbmNfc2V0X2ZyYW1lcmF0ZShhdmN0eCwgJnBhcmFtcyk7CisKKyAgICBy ZXQgPSBmZl92dmVuY19zZXRfcGljX2Zvcm1hdChhdmN0eCwgJnBhcmFtcyk7CisgICAgaWYoIHJl dCAhPSAwICkKKyAgICAgICAgcmV0dXJuIHJldDsKKworICAgIGZmX3Z2ZW5jX3NldF9jb2xvcl9m b3JtYXQoYXZjdHgsICZwYXJhbXMpOworCisgICAgcmV0ID0gZmZfdnZlbmNfcGFyc2VfdnZlbmNf cGFyYW1zKGF2Y3R4LCAmcGFyYW1zLCAmc3RhdHNmaWxlWzBdKTsKKyAgICBpZiggcmV0ICE9IDAg KQorICAgICAgICByZXR1cm4gcmV0OworCisKKyAgICByZXQgPSBmZl92dmVuY19zZXRfcmNfbW9k ZShhdmN0eCwgJnBhcmFtcyk7CisgICAgaWYoIHJldCAhPSAwICkKKyAgICAgICAgcmV0dXJuIHJl dDsKKworICAgIHMtPnZ2ZW5jRW5jID0gdnZlbmNfZW5jb2Rlcl9jcmVhdGUoKTsKKyAgICBpZiAo TlVMTCA9PSBzLT52dmVuY0VuYykgeworICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJP UiwgImNhbm5vdCBjcmVhdGUgdnZjIGVuY29kZXIgKHZ2ZW5jKVxuIik7CisgICAgICAgIHJldHVy biBBVkVSUk9SKEVOT01FTSk7CisgICAgfQorCisgICAgdnZlbmNfc2V0X21zZ19jYWxsYmFjaygm cGFyYW1zLCBzLT52dmVuY0VuYywgZmZfdnZlbmNfbG9nX2NhbGxiYWNrKTsKKyAgICByZXQgPSB2 dmVuY19lbmNvZGVyX29wZW4ocy0+dnZlbmNFbmMsICZwYXJhbXMpOworICAgIGlmICgwICE9IHJl dCkgeworICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgImNhbm5vdCBvcGVuIHZ2 YyBlbmNvZGVyICh2dmVuYyk6IAolc1xuIiwKKyAgICAgICAgICAgICAgIHZ2ZW5jX2dldF9sYXN0 X2Vycm9yKHMtPnZ2ZW5jRW5jKSk7CisgICAgICAgIHZ2ZW5jX2VuY29kZXJfY2xvc2Uocy0+dnZl bmNFbmMpOworICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOworICAgIH0KKworICAgIHZ2 ZW5jX2dldF9jb25maWcocy0+dnZlbmNFbmMsICZwYXJhbXMpOyAgICAgLyogZ2V0IHRoZSBhZGFw dGVkIApjb25maWcgKi8KKworICAgIGF2X2xvZyhhdmN0eCwgYXZfbG9nX2dldF9sZXZlbCgpLCAi dnZlbmMgdmVyc2lvbjogJXNcbiIsIAp2dmVuY19nZXRfdmVyc2lvbigpKTsKKyAgICBhdl9sb2co YXZjdHgsIGF2X2xvZ19nZXRfbGV2ZWwoKSwgIiVzXG4iLAorICAgICAgICAgICAgdnZlbmNfZ2V0 X2NvbmZpZ19hc19zdHJpbmcoJnBhcmFtcywgcGFyYW1zLm1fdmVyYm9zaXR5KSk7CisKKyAgICBp ZiAocGFyYW1zLm1fUkNOdW1QYXNzZXMgPT0gMikgeworICAgICAgICByZXQgPSB2dmVuY19pbml0 X3Bhc3Mocy0+dnZlbmNFbmMsIHBhcmFtcy5tX1JDUGFzcyAtIDEsIAomc3RhdHNmaWxlWzBdKTsK KyAgICAgICAgaWYgKDAgIT0gcmV0KSB7CisgICAgICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xP R19FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAiY2Fubm90IGluaXQgcGFzcyAlZCBmb3IgdnZj IGVuY29kZXIgKHZ2ZW5jKTogJXNcbiIsCisgICAgICAgICAgICAgICAgICAgcGFyYW1zLm1fUkNQ YXNzLCB2dmVuY19nZXRfbGFzdF9lcnJvcihzLT52dmVuY0VuYykpOworICAgICAgICAgICAgdnZl bmNfZW5jb2Rlcl9jbG9zZShzLT52dmVuY0VuYyk7CisgICAgICAgICAgICByZXR1cm4gQVZFUlJP UihFSU5WQUwpOworICAgICAgICB9CisgICAgfQorCisgICAgcy0+cEFVID0gdnZlbmNfYWNjZXNz VW5pdF9hbGxvYygpOworICAgIGlmKCAhcy0+cEFVICl7CisgICAgICAgIGF2X2xvZyhhdmN0eCwg QVZfTE9HX0ZBVEFMLCAiY2Fubm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgQVUgCnBheWxvYWRcbiIp OworICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOworICAgIH0KKyAgICB2dmVuY19hY2Nl c3NVbml0X2FsbG9jX3BheWxvYWQocy0+cEFVLCBhdmN0eC0+d2lkdGggKiBhdmN0eC0+aGVpZ2h0 KTsKKyAgICBpZiggIXMtPnBBVSApeworICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19GQVRB TCwgImNhbm5vdCBhbGxvY2F0ZSBwYXlsb2FkIG1lbW9yeSBvZiAKc2l6ZSAlZFxuIiwKKyAgICAg ICAgICAgICAgICBhdmN0eC0+d2lkdGggKiBhdmN0eC0+aGVpZ2h0ICk7CisgICAgICAgIHJldHVy biBBVkVSUk9SKEVOT01FTSk7CisgICAgfQorCisgICAgcmV0ID0gZmZfdnZlbmNfaW5pdF9leHRy YWRhdGEoYXZjdHgsIHMpOworICAgIGlmKCByZXQgIT0gMCApCisgICAgICAgIHJldHVybiByZXQ7 CisKKyAgICBzLT5lbmNvZGVEb25lID0gZmFsc2U7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRp YyBhdl9jb2xkIGludCBmZl92dmVuY19lbmNvZGVfY2xvc2UoQVZDb2RlY0NvbnRleHQgKiBhdmN0 eCkKK3sKKyAgICBWVmVuQ0NvbnRleHQgKnMgPSAoVlZlbkNDb250ZXh0ICopIGF2Y3R4LT5wcml2 X2RhdGE7CisgICAgaWYgKHMtPnZ2ZW5jRW5jKSB7CisgICAgICAgIGlmIChhdl9sb2dfZ2V0X2xl dmVsKCkgPj0gQVZfTE9HX1ZFUkJPU0UpCisgICAgICAgICAgICB2dmVuY19wcmludF9zdW1tYXJ5 KHMtPnZ2ZW5jRW5jKTsKKworICAgICAgICBpZiAoMCAhPSB2dmVuY19lbmNvZGVyX2Nsb3NlKHMt PnZ2ZW5jRW5jKSkgeworICAgICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJj YW5ub3QgY2xvc2UgdnZlbmNcbiIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9 CisgICAgfQorCisgICAgdnZlbmNfYWNjZXNzVW5pdF9mcmVlKHMtPnBBVSwgdHJ1ZSk7CisKKyAg ICByZXR1cm4gMDsKK30KKworc3RhdGljIGF2X2NvbGQgaW50IGZmX3Z2ZW5jX2VuY29kZV9mcmFt ZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIApBVlBhY2tldCAqcGt0LAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBVkZyYW1lICpmcmFtZSwgaW50IAoqZ290 X3BhY2tldCkKK3sKKyAgICBWVmVuQ0NvbnRleHQgKnMgPSAoVlZlbkNDb250ZXh0ICopIGF2Y3R4 LT5wcml2X2RhdGE7CisgICAgdnZlbmNZVVZCdWZmZXIgKnB5dXZidWY7CisgICAgdnZlbmNZVVZC dWZmZXIgeXV2YnVmOworICAgIGludCBwaWN0X3R5cGU7CisgICAgaW50IHJldDsKKworICAgIHB5 dXZidWYgPSBOVUxMOworICAgIGlmIChmcmFtZSkgeworICAgICAgICBpZiAoYXZjdHgtPnBpeF9m bXQgPT0gQVZfUElYX0ZNVF9ZVVY0MjBQMTBMRSkgeworICAgICAgICAgICAgdnZlbmNfWVVWQnVm ZmVyX2RlZmF1bHQoJnl1dmJ1Zik7CisgICAgICAgICAgICB5dXZidWYucGxhbmVzWzBdLnB0ciA9 IChpbnQxNl90ICopIGZyYW1lLT5kYXRhWzBdOworICAgICAgICAgICAgeXV2YnVmLnBsYW5lc1sx XS5wdHIgPSAoaW50MTZfdCAqKSBmcmFtZS0+ZGF0YVsxXTsKKyAgICAgICAgICAgIHl1dmJ1Zi5w bGFuZXNbMl0ucHRyID0gKGludDE2X3QgKikgZnJhbWUtPmRhdGFbMl07CisKKyAgICAgICAgICAg IHl1dmJ1Zi5wbGFuZXNbMF0ud2lkdGggPSBmcmFtZS0+d2lkdGg7CisgICAgICAgICAgICB5dXZi dWYucGxhbmVzWzBdLmhlaWdodCA9IGZyYW1lLT5oZWlnaHQ7CisgICAgICAgICAgICAvKiBzdHJp ZGUgaXMgdXNlZCBpbiAxNmJpdHNhbXBsZXMgKDE2Yml0KSBpbiB2dmVuYywgZmZtcGVnIAp1c2Vz IHN0cmlkZSBpbiBieXRlcyAqLworICAgICAgICAgICAgeXV2YnVmLnBsYW5lc1swXS5zdHJpZGUg PSBmcmFtZS0+bGluZXNpemVbMF0gPj4gMTsKKworICAgICAgICAgICAgeXV2YnVmLnBsYW5lc1sx XS53aWR0aCA9IGZyYW1lLT53aWR0aCA+PiAxOworICAgICAgICAgICAgeXV2YnVmLnBsYW5lc1sx XS5oZWlnaHQgPSBmcmFtZS0+aGVpZ2h0ID4+IDE7CisgICAgICAgICAgICB5dXZidWYucGxhbmVz WzFdLnN0cmlkZSA9IGZyYW1lLT5saW5lc2l6ZVsxXSA+PiAxOworCisgICAgICAgICAgICB5dXZi dWYucGxhbmVzWzJdLndpZHRoID0gZnJhbWUtPndpZHRoID4+IDE7CisgICAgICAgICAgICB5dXZi dWYucGxhbmVzWzJdLmhlaWdodCA9IGZyYW1lLT5oZWlnaHQgPj4gMTsKKyAgICAgICAgICAgIHl1 dmJ1Zi5wbGFuZXNbMl0uc3RyaWRlID0gZnJhbWUtPmxpbmVzaXplWzJdID4+IDE7CisKKyAgICAg ICAgICAgIHl1dmJ1Zi5jdHMgPSBmcmFtZS0+cHRzOworICAgICAgICAgICAgeXV2YnVmLmN0c1Zh bGlkID0gdHJ1ZTsKKyAgICAgICAgICAgIHB5dXZidWYgPSAmeXV2YnVmOworICAgICAgICB9IGVs c2UgeworICAgICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsCisgICAgICAgICAg ICAgICAgICAgInVuc3VwcG9ydGVkIGlucHV0IGNvbG9yc3BhY2UhIGlucHV0IG11c3QgYmUgCnl1 djQyMHAxMGxlIik7CisgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOworICAgICAg ICB9CisgICAgfQorCisgICAgaWYgKCFzLT5lbmNvZGVEb25lKSB7CisgICAgICAgIHJldCA9IHZ2 ZW5jX2VuY29kZShzLT52dmVuY0VuYywgcHl1dmJ1Ziwgcy0+cEFVLCAmcy0+ZW5jb2RlRG9uZSk7 CisgICAgICAgIGlmIChyZXQgIT0gMCkgeworICAgICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9M T0dfRVJST1IsICJlcnJvciBpbiB2dmVuYzo6ZW5jb2RlIC0gCnJldDolZFxuIiwKKyAgICAgICAg ICAgICAgICAgICByZXQpOworICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKKyAg ICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgICpnb3RfcGFja2V0ID0gMDsKKyAgICAgICAg cmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKHMtPnBBVS0+cGF5bG9hZFVzZWRTaXplID4gMCkg eworICAgICAgICByZXQgPSBmZl9nZXRfZW5jb2RlX2J1ZmZlcihhdmN0eCwgcGt0LCBzLT5wQVUt PnBheWxvYWRVc2VkU2l6ZSwgMCk7CisgICAgICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAgICAg ICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIkVycm9yIGdldHRpbmcgb3V0cHV0IHBhY2tl dC5cbiIpOworICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgfQorCisgICAgICAgIG1l bWNweShwa3QtPmRhdGEsIHMtPnBBVS0+cGF5bG9hZCwgcy0+cEFVLT5wYXlsb2FkVXNlZFNpemUp OworCisgICAgICAgIGlmIChzLT5wQVUtPmN0c1ZhbGlkKQorICAgICAgICAgICAgcGt0LT5wdHMg PSBzLT5wQVUtPmN0czsKKyAgICAgICAgaWYgKHMtPnBBVS0+ZHRzVmFsaWQpCisgICAgICAgICAg ICBwa3QtPmR0cyA9IHMtPnBBVS0+ZHRzOworICAgICAgICBwa3QtPmZsYWdzIHw9IEFWX1BLVF9G TEFHX0tFWSAqIHMtPnBBVS0+cmFwOworCisgICAgICAgIHN3aXRjaCAocy0+cEFVLT5zbGljZVR5 cGUpIHsKKyAgICAgICAgY2FzZSBWVkVOQ19JX1NMSUNFOgorICAgICAgICAgICAgcGljdF90eXBl ID0gQVZfUElDVFVSRV9UWVBFX0k7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBW VkVOQ19QX1NMSUNFOgorICAgICAgICAgICAgcGljdF90eXBlID0gQVZfUElDVFVSRV9UWVBFX1A7 CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBWVkVOQ19CX1NMSUNFOgorICAgICAg ICAgICAgcGljdF90eXBlID0gQVZfUElDVFVSRV9UWVBFX0I7CisgICAgICAgICAgICBicmVhazsK KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9S LCAiVW5rbm93biBwaWN0dXJlIHR5cGUgCmVuY291bnRlcmVkLlxuIik7CisgICAgICAgICAgICBy ZXR1cm4gQVZFUlJPUl9FWFRFUk5BTDsKKyAgICAgICAgfQorCisgICAgICAgIGZmX3NpZGVfZGF0 YV9zZXRfZW5jb2Rlcl9zdGF0cyhwa3QsIDAsIE5VTEwsIDAsIHBpY3RfdHlwZSk7CisKKyAgICAg ICAgKmdvdF9wYWNrZXQgPSAxOworCisgICAgICAgIHJldHVybiAwOworICAgIH0gZWxzZSB7Cisg ICAgICAgICpnb3RfcGFja2V0ID0gMDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAg cmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBlbnVtIEFWUGl4ZWxGb3JtYXQgcGl4X2ZtdHNf dnZlbmNbXSA9IHsKKyAgICBBVl9QSVhfRk1UX1lVVjQyMFAxMExFLAorICAgIEFWX1BJWF9GTVRf Tk9ORQorfTsKKworI2RlZmluZSBPRkZTRVQoeCkgb2Zmc2V0b2YoVlZlbkNDb250ZXh0LCB4KQor I2RlZmluZSBWRSBBVl9PUFRfRkxBR19WSURFT19QQVJBTSB8IEFWX09QVF9GTEFHX0VOQ09ESU5H X1BBUkFNCitzdGF0aWMgY29uc3QgQVZPcHRpb24gbGlidnZlbmNfb3B0aW9uc1tdID0geworICAg IHsicHJlc2V0IiwgInNldCBlbmNvZGluZyBwcmVzZXQoMDogZmFzdGVyIC0gNDogc2xvd2VyIiwg T0ZGU0VUKCAKb3B0aW9ucy5wcmVzZXQpLCBBVl9PUFRfVFlQRV9JTlQsIHsuaTY0ID0gMn0gLCAw ICwgNCAsIFZFLCAicHJlc2V0In0sCisgICAgICAgIHsgImZhc3RlciIsICIwIiwgMCwgQVZfT1BU X1RZUEVfQ09OU1QsIHsuaTY0ID0gVlZFTkNfRkFTVEVSfSwgCklOVF9NSU4sIElOVF9NQVgsIFZF LCAicHJlc2V0IiB9LAorICAgICAgICB7ICJmYXN0IiwgICAiMSIsIDAsIEFWX09QVF9UWVBFX0NP TlNULCB7Lmk2NCA9IFZWRU5DX0ZBU1R9LCAKSU5UX01JTiwgSU5UX01BWCwgVkUsICJwcmVzZXQi IH0sCisgICAgICAgIHsgIm1lZGl1bSIsICIyIiwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsuaTY0 ID0gVlZFTkNfTUVESVVNfSwgCklOVF9NSU4sIElOVF9NQVgsIFZFLCAicHJlc2V0IiB9LAorICAg ICAgICB7ICJzbG93IiwgICAiMyIsIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7Lmk2NCA9IFZWRU5D X1NMT1d9LCAKSU5UX01JTiwgSU5UX01BWCwgVkUsICJwcmVzZXQiIH0sCisgICAgICAgIHsgInNs b3dlciIsICI0IiwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsuaTY0ID0gVlZFTkNfU0xPV0VSfSwg CklOVF9NSU4sIElOVF9NQVgsIFZFLCAicHJlc2V0IiB9LAorICAgIHsgInFwIiAgICAgLCAic2V0 IHF1YW50aXphdGlvbiIsIE9GRlNFVChvcHRpb25zLnFwKSwgCkFWX09QVF9UWVBFX0lOVCwgIHsu aTY0ID0gLTF9LCAtMSAsIDYzICxWRSwgInFwX21vZGUiIH0sCisgICAgeyAicGVyaW9kIiAsICJz ZXQgKGludHJhKSByZWZyZXNoIHBlcmlvZCBpbiBzZWNvbmRzIiwgCk9GRlNFVChvcHRpb25zLmlu dHJhUmVmcmVzaFNlYyksIEFWX09QVF9UWVBFX0lOVCwgIHsuaTY0ID0gMX0sICAxICwgCklOVF9N QVggLFZFLCJpcmVmcmVzaHNlYyIgfSwKKyAgICB7ICJzdWJqb3B0IiwgInNldCBzdWJqZWN0aXZl IChwZXJjZXB0dWFsbHkgbW90aXZhdGVkKSAKb3B0aW1pemF0aW9uIiwgT0ZGU0VUKG9wdGlvbnMu c3ViamVjdGl2ZU9wdGltaXphdGlvbiksIEFWX09QVF9UWVBFX0JPT0wsIAp7Lmk2NCA9IDF9LCAg MCAsIDEsIFZFfSwKKyAgICB7ICJiaXRkZXB0aDgiLCAic2V0IDhiaXQgY29kaW5nIG1vZGUiLCAK T0ZGU0VUKG9wdGlvbnMuZmxhZzhiaXRDb2RpbmcpLCBBVl9PUFRfVFlQRV9CT09MLCB7Lmk2NCA9 IDB9LCAgMCAsIDEsIFZFfSwKKyAgICB7ICJ2dmVuYy1wYXJhbXMiLCAic2V0IHRoZSB2dmVuYyBj b25maWd1cmF0aW9uIHVzaW5nIGEgOi1zZXBhcmF0ZWQgCmxpc3Qgb2Yga2V5PXZhbHVlIHBhcmFt ZXRlcnMiLCBPRkZTRVQob3B0aW9ucy52dmVuY19vcHRzKSwgCkFWX09QVF9UWVBFX0RJQ1QsIHsg MCB9LCAwLCAwLCBWRSB9LAorICAgIHsgImxldmVsaWRjIiwgInZ2YyBsZXZlbF9pZGMiLCBPRkZT RVQoIG9wdGlvbnMubGV2ZWxJZGMpLCAKQVZfT1BUX1RZUEVfSU5ULCB7Lmk2NCA9IDB9LCAwLCAx MDUsIFZFLCAibGV2ZWxpZGMifSwKKyAgICAgICAgeyAiMCIsICAgImF1dG8iLCAwLCBBVl9PUFRf VFlQRV9DT05TVCwgey5pNjQgPSAwfSwgIElOVF9NSU4sIApJTlRfTUFYLCBWRSwgImxldmVsaWRj In0sCisgICAgICAgIHsgIjEiLCAgICIxIiAgICwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsuaTY0 ID0gMTZ9LCBJTlRfTUlOLCAKSU5UX01BWCwgVkUsICJsZXZlbGlkYyJ9LAorICAgICAgICB7ICIy IiwgICAiMiIgICAsIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7Lmk2NCA9IDMyfSwgSU5UX01JTiwg CklOVF9NQVgsIFZFLCAibGV2ZWxpZGMifSwKKyAgICAgICAgeyAiMi4xIiwgIjIuMSIgLCAwLCBB Vl9PUFRfVFlQRV9DT05TVCwgey5pNjQgPSAzNX0sIElOVF9NSU4sIApJTlRfTUFYLCBWRSwgImxl dmVsaWRjIn0sCisgICAgICAgIHsgIjMiLCAgICIzIiAgICwgMCwgQVZfT1BUX1RZUEVfQ09OU1Qs IHsuaTY0ID0gNDh9LCBJTlRfTUlOLCAKSU5UX01BWCwgVkUsICJsZXZlbGlkYyJ9LAorICAgICAg ICB7ICIzLjEiLCAiMy4xIiAsIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7Lmk2NCA9IDUxfSwgSU5U X01JTiwgCklOVF9NQVgsIFZFLCAibGV2ZWxpZGMifSwKKyAgICAgICAgeyAiNCIsICAgIjQiICAg LCAwLCBBVl9PUFRfVFlQRV9DT05TVCwgey5pNjQgPSA2NH0sIElOVF9NSU4sIApJTlRfTUFYLCBW RSwgImxldmVsaWRjIn0sCisgICAgICAgIHsgIjQuMSIsICI0LjEiICwgMCwgQVZfT1BUX1RZUEVf Q09OU1QsIHsuaTY0ID0gNjd9LCBJTlRfTUlOLCAKSU5UX01BWCwgVkUsICJsZXZlbGlkYyJ9LAor ICAgICAgICB7ICI1IiwgICAiNSIgICAsIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7Lmk2NCA9IDgw fSwgSU5UX01JTiwgCklOVF9NQVgsIFZFLCAibGV2ZWxpZGMifSwKKyAgICAgICAgeyAiNS4xIiwg IjUuMSIgLCAwLCBBVl9PUFRfVFlQRV9DT05TVCwgey5pNjQgPSA4M30sIElOVF9NSU4sIApJTlRf TUFYLCBWRSwgImxldmVsaWRjIn0sCisgICAgICAgIHsgIjUuMiIsICI1LjIiICwgMCwgQVZfT1BU X1RZUEVfQ09OU1QsIHsuaTY0ID0gODZ9LCBJTlRfTUlOLCAKSU5UX01BWCwgVkUsICJsZXZlbGlk YyJ9LAorICAgICAgICB7ICI2IiwgICAiNiIgICAsIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7Lmk2 NCA9IDk2fSwgSU5UX01JTiwgCklOVF9NQVgsIFZFLCAibGV2ZWxpZGMifSwKKyAgICAgICAgeyAi Ni4xIiwgIjYuMSIgLCAwLCBBVl9PUFRfVFlQRV9DT05TVCwgey5pNjQgPSA5OX0sIElOVF9NSU4s IApJTlRfTUFYLCBWRSwgImxldmVsaWRjIn0sCisgICAgICAgIHsgIjYuMiIsICI2LjIiICwgMCwg QVZfT1BUX1RZUEVfQ09OU1QsIHsuaTY0ID0gMTAyfSwgSU5UX01JTiwgCklOVF9NQVgsIFZFLCAi bGV2ZWxpZGMifSwKKyAgICAgICAgeyAiNi4zIiwgIjYuMyIgLCAwLCBBVl9PUFRfVFlQRV9DT05T VCwgey5pNjQgPSAxMDV9LCBJTlRfTUlOLCAKSU5UX01BWCwgVkUsICJsZXZlbGlkYyJ9LAorICAg IHsgInRpZXIiLCAic2V0IHZ2YyB0aWVyIiwgT0ZGU0VUKCBvcHRpb25zLnRpZXIpLCBBVl9PUFRf VFlQRV9JTlQsIAp7Lmk2NCA9IDB9LCAgMCAsIDEgLCBWRSwgInRpZXIifSwKKyAgICAgICAgeyAi bWFpbiIsICJtYWluIiwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsuaTY0ID0gMH0sIElOVF9NSU4s IApJTlRfTUFYLCBWRSwgInRpZXIifSwKKyAgICAgICAgeyAiaGlnaCIsICJoaWdoIiwgMCwgQVZf T1BUX1RZUEVfQ09OU1QsIHsuaTY0ID0gMX0sIElOVF9NSU4sIApJTlRfTUFYLCBWRSwgInRpZXIi fSwKKyAgICB7TlVMTH0KK307CisKK3N0YXRpYyBjb25zdCBBVkNsYXNzIGNsYXNzX2xpYnZ2ZW5j ID0geworICAgIC5jbGFzc19uYW1lID0gImxpYnZ2ZW5jLXZ2YyBlbmNvZGVyIiwKKyAgICAuaXRl bV9uYW1lICA9IGF2X2RlZmF1bHRfaXRlbV9uYW1lLAorICAgIC5vcHRpb24gICAgID0gbGlidnZl bmNfb3B0aW9ucywKKyAgICAudmVyc2lvbiAgICA9IExJQkFWVVRJTF9WRVJTSU9OX0lOVCwKK307 CisKK3N0YXRpYyBjb25zdCBGRkNvZGVjRGVmYXVsdCB2dmVuY19kZWZhdWx0c1tdID0geworICAg IHsgImIiLCAiMCIgfSwKKyAgICB7ICJnIiwgIi0xIiB9LAorICAgIHsgTlVMTCB9LAorfTsKKwor RkZDb2RlYyBmZl9saWJ2dmVuY19lbmNvZGVyID0geworICAgIC5wLm5hbWUgICAgICAgICA9ICJs aWJ2dmVuYyIsCisgICAgQ09ERUNfTE9OR19OQU1FKCJILjI2NiAvIFZWQyBFbmNvZGVyIFZWZW5D IiksCisgICAgLnAudHlwZSAgICAgICAgID0gQVZNRURJQV9UWVBFX1ZJREVPLAorICAgIC5wLmlk ICAgICAgICAgICA9IEFWX0NPREVDX0lEX1ZWQywKKyAgICAucC5jYXBhYmlsaXRpZXMgPSBBVl9D T0RFQ19DQVBfREVMQVkgfCBBVl9DT0RFQ19DQVBfT1RIRVJfVEhSRUFEUywKKyAgICAucC5wcm9m aWxlcyAgICAgPSBOVUxMX0lGX0NPTkZJR19TTUFMTChmZl92dmNfcHJvZmlsZXMpLAorICAgIC5w LnByaXZfY2xhc3MgICA9ICZjbGFzc19saWJ2dmVuYywKKyAgICAucC53cmFwcGVyX25hbWUgPSAi bGlidnZlbmMiLAorICAgIC5wcml2X2RhdGFfc2l6ZSA9IHNpemVvZihWVmVuQ0NvbnRleHQpLAor ICAgIC5wLnBpeF9mbXRzICAgICA9IHBpeF9mbXRzX3Z2ZW5jLAorICAgIC5pbml0ICAgICAgICAg ICA9IGZmX3Z2ZW5jX2VuY29kZV9pbml0LAorICAgIEZGX0NPREVDX0VOQ09ERV9DQihmZl92dmVu Y19lbmNvZGVfZnJhbWUpLAorICAgIC5jbG9zZSAgICAgICAgICA9IGZmX3Z2ZW5jX2VuY29kZV9j bG9zZSwKKyAgICAuZGVmYXVsdHMgICAgICAgICA9IHZ2ZW5jX2RlZmF1bHRzLAorICAgIC5jYXBz X2ludGVybmFsICA9IEZGX0NPREVDX0NBUF9BVVRPX1RIUkVBRFMsCit9OwpkaWZmIC0tZ2l0IGEv bGliYXZmb3JtYXQvTWFrZWZpbGUgYi9saWJhdmZvcm1hdC9NYWtlZmlsZQppbmRleCBhZjMxZDZm Nzk1Li43ZjZkYjNkNmQ2IDEwMDY0NAotLS0gYS9saWJhdmZvcm1hdC9NYWtlZmlsZQorKysgYi9s aWJhdmZvcm1hdC9NYWtlZmlsZQpAQCAtNTQsNiArNTQsNyBAQCBPQkpTLSQoQ09ORklHX1JUUERF QykgICAgICAgICAgICAgICAgICAgICs9IHJkdC5vIAogICAgICAgICAgICAgICAgICBcCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydHBkZWNfaDI2M19yZmMy MTkwLm8gICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcnRwZGVjX2gyNjQubyAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJ0cGRlY19oZXZjLm8gICAgICAgICAgICAgICBcCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0cGRlY192dmMubyAgICAg ICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBydHBkZWNfaWxiYy5vICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcnRwZGVjX2pwZWcubyAgICAgICAgICAgICAgIFwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0cGRlY19sYXRtLm8gICAg ICAgICAgICAgICBcCmRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9ydHBkZWMuYyBiL2xpYmF2Zm9y bWF0L3J0cGRlYy5jCmluZGV4IDcyOWJmODM2ODUuLjM0ZWY5MmEyYTAgMTAwNjQ0Ci0tLSBhL2xp YmF2Zm9ybWF0L3J0cGRlYy5jCisrKyBiL2xpYmF2Zm9ybWF0L3J0cGRlYy5jCkBAIC05OCw2ICs5 OCw3IEBAIHN0YXRpYyBjb25zdCBSVFBEeW5hbWljUHJvdG9jb2xIYW5kbGVyICpjb25zdCAKcnRw X2R5bmFtaWNfcHJvdG9jb2xfaGFuZGxlcl9saXN0WwogICAgICAmZmZfaDI2M19yZmMyMTkwX2R5 bmFtaWNfaGFuZGxlciwKICAgICAgJmZmX2gyNjRfZHluYW1pY19oYW5kbGVyLAogICAgICAmZmZf aGV2Y19keW5hbWljX2hhbmRsZXIsCisgICAgJmZmX3Z2Y19keW5hbWljX2hhbmRsZXIsCiAgICAg ICZmZl9pbGJjX2R5bmFtaWNfaGFuZGxlciwKICAgICAgJmZmX2pwZWdfZHluYW1pY19oYW5kbGVy LAogICAgICAmZmZfbXA0YV9sYXRtX2R5bmFtaWNfaGFuZGxlciwKZGlmZiAtLWdpdCBhL2xpYmF2 Zm9ybWF0L3J0cGRlY19mb3JtYXRzLmggYi9saWJhdmZvcm1hdC9ydHBkZWNfZm9ybWF0cy5oCmlu ZGV4IGRhZDJiOGFjMWIuLmFmMmUxN2ZiOTkgMTAwNjQ0Ci0tLSBhL2xpYmF2Zm9ybWF0L3J0cGRl Y19mb3JtYXRzLmgKKysrIGIvbGliYXZmb3JtYXQvcnRwZGVjX2Zvcm1hdHMuaApAQCAtNjUsNiAr NjUsNyBAQCBleHRlcm4gY29uc3QgUlRQRHluYW1pY1Byb3RvY29sSGFuZGxlciAKZmZfaDI2M18y MDAwX2R5bmFtaWNfaGFuZGxlcjsKICBleHRlcm4gY29uc3QgUlRQRHluYW1pY1Byb3RvY29sSGFu ZGxlciBmZl9oMjYzX3JmYzIxOTBfZHluYW1pY19oYW5kbGVyOwogIGV4dGVybiBjb25zdCBSVFBE eW5hbWljUHJvdG9jb2xIYW5kbGVyIGZmX2gyNjRfZHluYW1pY19oYW5kbGVyOwogIGV4dGVybiBj b25zdCBSVFBEeW5hbWljUHJvdG9jb2xIYW5kbGVyIGZmX2hldmNfZHluYW1pY19oYW5kbGVyOwor ZXh0ZXJuIGNvbnN0IFJUUER5bmFtaWNQcm90b2NvbEhhbmRsZXIgZmZfdnZjX2R5bmFtaWNfaGFu ZGxlcjsKICBleHRlcm4gY29uc3QgUlRQRHluYW1pY1Byb3RvY29sSGFuZGxlciBmZl9pbGJjX2R5 bmFtaWNfaGFuZGxlcjsKICBleHRlcm4gY29uc3QgUlRQRHluYW1pY1Byb3RvY29sSGFuZGxlciBm Zl9qcGVnX2R5bmFtaWNfaGFuZGxlcjsKICBleHRlcm4gY29uc3QgUlRQRHluYW1pY1Byb3RvY29s SGFuZGxlciBmZl9tcDRhX2xhdG1fZHluYW1pY19oYW5kbGVyOwpkaWZmIC0tZ2l0IGEvbGliYXZm b3JtYXQvcnRwZGVjX3Z2Yy5jIGIvbGliYXZmb3JtYXQvcnRwZGVjX3Z2Yy5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjg2ZjAxODJiMDEKLS0tIC9kZXYvbnVsbAorKysg Yi9saWJhdmZvcm1hdC9ydHBkZWNfdnZjLmMKQEAgLTAsMCArMSwzNDkgQEAKKy8qCisgKiBSVFAg cGFyc2VyIGZvciBWVkMvSC4yNjYgcGF5bG9hZCBmb3JtYXQgKGRyYWZ0IHZlcnNpb24gMC4xKQor ICogQ29weXJpZ2h0IChjKSAyMDI0IFJvYmluU2hpIDxzaGlxaWZlbmdAZ21haWwuY29tPgorICoK KyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KKyAqCisgKiBGRm1wZWcgaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq IHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgorICoKKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAq IExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m dHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv b3IsIEJvc3RvbiwgTUEgCjAyMTEwLTEzMDEgVVNBCisgKi8KKworI2luY2x1ZGUgImxpYmF2dXRp bC9hdmFzc2VydC5oIgorI2luY2x1ZGUgImxpYmF2dXRpbC9hdnN0cmluZy5oIgorI2luY2x1ZGUg ImxpYmF2dXRpbC9tZW0uaCIKKworI2luY2x1ZGUgImF2Zm9ybWF0LmgiCisjaW5jbHVkZSAiaW50 ZXJuYWwuaCIKKyNpbmNsdWRlICJydHBkZWMuaCIKKyNpbmNsdWRlICJydHBkZWNfZm9ybWF0cy5o IgorCisjZGVmaW5lIFJUUF9WVkNfUEFZTE9BRF9IRUFERVJfU0laRSAgICAgICAyCisjZGVmaW5l IFJUUF9WVkNfRlVfSEVBREVSX1NJWkUgICAgICAgICAgICAxCisjZGVmaW5lIFJUUF9WVkNfRE9O TF9GSUVMRF9TSVpFICAgICAgICAgICAyCisjZGVmaW5lIFJUUF9WVkNfRE9ORF9GSUVMRF9TSVpF ICAgICAgICAgICAxCisjZGVmaW5lIFJUUF9WVkNfQVBfTkFMVV9MRU5HVEhfRklFTERfU0laRSAy CisjZGVmaW5lIFZWQ19TUEVDSUZJRURfTkFMX1VOSVRfVFlQRVMgICAgICAyOAorCisvKiBTRFAg b3V0LW9mLWJhbmQgc2lnbmFsaW5nIGRhdGEgKi8KK3N0cnVjdCBQYXlsb2FkQ29udGV4dCB7Cisg ICAgaW50IHVzaW5nX2RvbmxfZmllbGQ7CisgICAgaW50IHByb2ZpbGVfaWQ7CisgICAgdWludDhf dCAqc3BzLCAqcHBzLCAqdnBzLCAqc2VpOworICAgIGludCBzcHNfc2l6ZSwgcHBzX3NpemUsIHZw c19zaXplLCBzZWlfc2l6ZTsKK307CisKK3N0YXRpYyBjb25zdCB1aW50OF90IHN0YXJ0X3NlcXVl bmNlW10gPSB7IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEgfTsKKworc3RhdGljIGF2X2NvbGQgaW50 IHZ2Y19zZHBfcGFyc2VfZm10cF9jb25maWcoQVZGb3JtYXRDb250ZXh0ICpzLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFWU3RyZWFtICpzdHJlYW0sCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF5bG9hZENvbnRl eHQgKnZ2Y19kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IGNoYXIgKmF0dHIsIGNvbnN0IApjaGFyICp2YWx1ZSkKK3sKKyAgICAvKiBwcm9m aWxlLXNwYWNlOiAwLTMgKi8KKyAgICAvKiBwcm9maWxlLWlkOiAwLTMxICovCisgICAgaWYgKCFz dHJjbXAoYXR0ciwgInByb2ZpbGUtaWQiKSkgeworICAgICAgICB2dmNfZGF0YS0+cHJvZmlsZV9p ZCA9IGF0b2kodmFsdWUpOworICAgICAgICBhdl9sb2cocywgQVZfTE9HX1RSQUNFLCAiU0RQOiBm b3VuZCBwcm9maWxlLWlkOiAlZFxuIiwgCnZ2Y19kYXRhLT5wcm9maWxlX2lkKTsKKyAgICB9CisK KyAgICAvKiB0aWVyLWZsYWc6IDAtMSAqLworICAgIC8qIGxldmVsLWlkOiAwLTI1NSAqLworICAg IC8qIGludGVyb3AtY29uc3RyYWludHM6IFtiYXNlMTZdICovCisgICAgLyogcHJvZmlsZS1jb21w YXRpYmlsaXR5LWluZGljYXRvcjogW2Jhc2UxNl0gKi8KKyAgICAvKiBzcHJvcC1zdWItbGF5ZXIt aWQ6IDAtNiwgZGVmaW5lcyBoaWdoZXN0IHBvc3NpYmxlIHZhbHVlIGZvciBUSUQsIApkZWZhdWx0 OiA2ICovCisgICAgLyogcmVjdi1zdWItbGF5ZXItaWQ6IDAtNiAqLworICAgIC8qIG1heC1yZWN2 LWxldmVsLWlkOiAwLTI1NSAqLworICAgIC8qIHR4LW1vZGU6IE1TTSxTU00gKi8KKyAgICAvKiBz cHJvcC12cHM6IFtiYXNlNjRdICovCisgICAgLyogc3Byb3Atc3BzOiBbYmFzZTY0XSAqLworICAg IC8qIHNwcm9wLXBwczogW2Jhc2U2NF0gKi8KKyAgICAvKiBzcHJvcC1zZWk6IFtiYXNlNjRdICov CisgICAgaWYgKCFzdHJjbXAoYXR0ciwgInNwcm9wLXZwcyIpIHx8ICFzdHJjbXAoYXR0ciwgInNw cm9wLXNwcyIpIHx8CisgICAgICAgICFzdHJjbXAoYXR0ciwgInNwcm9wLXBwcyIpIHx8ICFzdHJj bXAoYXR0ciwgInNwcm9wLXNlaSIpKSB7CisgICAgICAgIHVpbnQ4X3QgKipkYXRhX3B0ciA9IE5V TEw7CisgICAgICAgIGludCAqc2l6ZV9wdHIgPSBOVUxMOworICAgICAgICBpZiAoIXN0cmNtcChh dHRyLCAic3Byb3AtdnBzIikpIHsKKyAgICAgICAgICAgIGRhdGFfcHRyID0gJnZ2Y19kYXRhLT52 cHM7CisgICAgICAgICAgICBzaXplX3B0ciA9ICZ2dmNfZGF0YS0+dnBzX3NpemU7CisgICAgICAg IH0gZWxzZSBpZiAoIXN0cmNtcChhdHRyLCAic3Byb3Atc3BzIikpIHsKKyAgICAgICAgICAgIGRh dGFfcHRyID0gJnZ2Y19kYXRhLT5zcHM7CisgICAgICAgICAgICBzaXplX3B0ciA9ICZ2dmNfZGF0 YS0+c3BzX3NpemU7CisgICAgICAgIH0gZWxzZSBpZiAoIXN0cmNtcChhdHRyLCAic3Byb3AtcHBz IikpIHsKKyAgICAgICAgICAgIGRhdGFfcHRyID0gJnZ2Y19kYXRhLT5wcHM7CisgICAgICAgICAg ICBzaXplX3B0ciA9ICZ2dmNfZGF0YS0+cHBzX3NpemU7CisgICAgICAgIH0gZWxzZSBpZiAoIXN0 cmNtcChhdHRyLCAic3Byb3Atc2VpIikpIHsKKyAgICAgICAgICAgIGRhdGFfcHRyID0gJnZ2Y19k YXRhLT5zZWk7CisgICAgICAgICAgICBzaXplX3B0ciA9ICZ2dmNfZGF0YS0+c2VpX3NpemU7Cisg ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYXZfYXNzZXJ0MCgwKTsKKworICAgICAgICBmZl9o MjY0X3BhcnNlX3Nwcm9wX3BhcmFtZXRlcl9zZXRzKHMsIGRhdGFfcHRyLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfcHRyLCB2YWx1ZSk7CisgICAgfQor CisgICAgLyogbWF4LWxzciwgbWF4LWxwcywgbWF4LWNwYiwgbWF4LWRwYiwgbWF4LWJyLCBtYXgt dHIsIG1heC10YyAqLworICAgIC8qIG1heC1mcHMgKi8KKworICAgIC8qIHNwcm9wLW1heC1kb24t ZGlmZjogMC0zMjc2NworCisgICAgICAgICBXaGVuIHRoZSBSVFAgc3RyZWFtIGRlcGVuZHMgb24g b25lIG9yIG1vcmUgb3RoZXIgUlRQCisgICAgICAgICBzdHJlYW1zIChpbiB0aGlzIGNhc2UgdHgt bW9kZSBNVVNUIGJlIGVxdWFsIHRvICJNU00iIGFuZAorICAgICAgICAgTVNNIGlzIGluIHVzZSks IHRoaXMgcGFyYW1ldGVyIE1VU1QgYmUgcHJlc2VudCBhbmQgdGhlCisgICAgICAgICB2YWx1ZSBN VVNUIGJlIGdyZWF0ZXIgdGhhbiAwLgorICAgICovCisgICAgaWYgKCFzdHJjbXAoYXR0ciwgInNw cm9wLW1heC1kb24tZGlmZiIpKSB7CisgICAgICAgIGlmIChhdG9pKHZhbHVlKSA+IDApCisgICAg ICAgICAgICB2dmNfZGF0YS0+dXNpbmdfZG9ubF9maWVsZCA9IDE7CisgICAgICAgIGF2X2xvZyhz LCBBVl9MT0dfVFJBQ0UsICJGb3VuZCBzcHJvcC1tYXgtZG9uLWRpZmYgaW4gU0RQLCBET04gCmZp ZWxkIHVzYWdlIGlzOiAlZFxuIiwKKyAgICAgICAgICAgICAgICB2dmNfZGF0YS0+dXNpbmdfZG9u bF9maWVsZCk7CisgICAgfQorICAgIC8vIFZWQyBkb250IGhhdmUgc3Byb3AtZGVwYWNrLWJ1Zi1u YWx1cyBzZXR0aW5nIGFjY29yZGluZyB0byAKcmZjOTMyOCArICAgIC8qIHNwcm9wLWRlcGFjay1i dWYtYnl0ZXM6IDAtNDI5NDk2NzI5NSAqLworICAgIC8qIGRlcGFjay1idWYtY2FwICovCisgICAg Lyogc3Byb3Atc2VnbWVudGF0aW9uLWlkOiAwLTMgKi8KKyAgICAvKiBzcHJvcC1zcGF0aWFsLXNl Z21lbnRhdGlvbi1pZGM6IFtiYXNlMTZdICovCisgICAgLyogZGVjLXBhcmFsbGVsLWNhOiAqLwor ICAgIC8qIGluY2x1ZGUtZHBoICovCisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGF2X2Nv bGQgaW50IHZ2Y19wYXJzZV9zZHBfbGluZShBVkZvcm1hdENvbnRleHQgKmN0eCwgaW50IHN0X2lu ZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF5bG9hZENvbnRl eHQgKnZ2Y19kYXRhLCBjb25zdCAKY2hhciAqbGluZSkKK3sKKyAgICBBVlN0cmVhbSAqY3VycmVu dF9zdHJlYW07CisgICAgQVZDb2RlY1BhcmFtZXRlcnMgKnBhcjsKKyAgICBjb25zdCBjaGFyICpz ZHBfbGluZV9wdHIgPSBsaW5lOworCisgICAgaWYgKHN0X2luZGV4IDwgMCkKKyAgICAgICAgcmV0 dXJuIDA7CisKKyAgICBjdXJyZW50X3N0cmVhbSA9IGN0eC0+c3RyZWFtc1tzdF9pbmRleF07Cisg ICAgcGFyICA9IGN1cnJlbnRfc3RyZWFtLT5jb2RlY3BhcjsKKworICAgIGlmIChhdl9zdHJzdGFy dChzZHBfbGluZV9wdHIsICJmcmFtZXNpemU6IiwgJnNkcF9saW5lX3B0cikpIHsKKyAgICAgICAg ZmZfaDI2NF9wYXJzZV9mcmFtZXNpemUocGFyLCBzZHBfbGluZV9wdHIpOworICAgIH0gZWxzZSBp ZiAoYXZfc3Ryc3RhcnQoc2RwX2xpbmVfcHRyLCAiZm10cDoiLCAmc2RwX2xpbmVfcHRyKSkgewor ICAgICAgICBpbnQgcmV0ID0gZmZfcGFyc2VfZm10cChjdHgsIGN1cnJlbnRfc3RyZWFtLCB2dmNf ZGF0YSwgCnNkcF9saW5lX3B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnZj X3NkcF9wYXJzZV9mbXRwX2NvbmZpZyk7CisgICAgICAgIGlmICh2dmNfZGF0YS0+dnBzX3NpemUg fHwgdnZjX2RhdGEtPnNwc19zaXplIHx8CisgICAgICAgICAgICB2dmNfZGF0YS0+cHBzX3NpemUg fHwgdnZjX2RhdGEtPnNlaV9zaXplKSB7CisgICAgICAgICAgICBwYXItPmV4dHJhZGF0YV9zaXpl ID0gdnZjX2RhdGEtPnZwc19zaXplICsgdnZjX2RhdGEtPnNwc19zaXplICsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB2dmNfZGF0YS0+cHBzX3NpemUgKyB2dmNfZGF0YS0+c2Vp X3NpemU7CisgICAgICAgICAgICBpZiAoKHJldCA9IGZmX2FsbG9jX2V4dHJhZGF0YShwYXIsIHBh ci0+ZXh0cmFkYXRhX3NpemUpKSA+PSAKMCkgeworICAgICAgICAgICAgICAgIGludCBwb3MgPSAw OworICAgICAgICAgICAgICAgIG1lbWNweShwYXItPmV4dHJhZGF0YSArIHBvcywgdnZjX2RhdGEt PnZwcywgCnZ2Y19kYXRhLT52cHNfc2l6ZSk7CisgICAgICAgICAgICAgICAgcG9zICs9IHZ2Y19k YXRhLT52cHNfc2l6ZTsKKyAgICAgICAgICAgICAgICBtZW1jcHkocGFyLT5leHRyYWRhdGEgKyBw b3MsIHZ2Y19kYXRhLT5zcHMsIAp2dmNfZGF0YS0+c3BzX3NpemUpOworICAgICAgICAgICAgICAg IHBvcyArPSB2dmNfZGF0YS0+c3BzX3NpemU7CisgICAgICAgICAgICAgICAgbWVtY3B5KHBhci0+ ZXh0cmFkYXRhICsgcG9zLCB2dmNfZGF0YS0+cHBzLCAKdnZjX2RhdGEtPnBwc19zaXplKTsKKyAg ICAgICAgICAgICAgICBwb3MgKz0gdnZjX2RhdGEtPnBwc19zaXplOworICAgICAgICAgICAgICAg IG1lbWNweShwYXItPmV4dHJhZGF0YSArIHBvcywgdnZjX2RhdGEtPnNlaSwgCnZ2Y19kYXRhLT5z ZWlfc2l6ZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGF2X2ZyZWVwKCZ2dmNfZGF0 YS0+dnBzKTsKKyAgICAgICAgICAgIGF2X2ZyZWVwKCZ2dmNfZGF0YS0+c3BzKTsKKyAgICAgICAg ICAgIGF2X2ZyZWVwKCZ2dmNfZGF0YS0+cHBzKTsKKyAgICAgICAgICAgIGF2X2ZyZWVwKCZ2dmNf ZGF0YS0+c2VpKTsKKyAgICAgICAgICAgIHZ2Y19kYXRhLT52cHNfc2l6ZSA9IDA7CisgICAgICAg ICAgICB2dmNfZGF0YS0+c3BzX3NpemUgPSAwOworICAgICAgICAgICAgdnZjX2RhdGEtPnBwc19z aXplID0gMDsKKyAgICAgICAgICAgIHZ2Y19kYXRhLT5zZWlfc2l6ZSA9IDA7CisgICAgICAgIH0K KyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGlj IGludCB2dmNfaGFuZGxlX3BhY2tldChBVkZvcm1hdENvbnRleHQgKmN0eCwgUGF5bG9hZENvbnRl eHQgCipydHBfdnZjX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFWU3RyZWFt ICpzdCwgQVZQYWNrZXQgKnBrdCwgdWludDMyX3QgCip0aW1lc3RhbXAsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpidWYsIGludCBsZW4sIHVpbnQxNl90IHNl cSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncykKK3sKKyAgICBjb25z dCB1aW50OF90ICpydHBfcGwgPSBidWY7CisgICAgaW50IHRpZCwgbGlkLCBuYWxfdHlwZTsKKyAg ICBpbnQgZmlyc3RfZnJhZ21lbnQsIGxhc3RfZnJhZ21lbnQsIHBpY19mcmFnbWVudCwgZnVfdHlw ZTsKKyAgICB1aW50OF90IG5ld19uYWxfaGVhZGVyWzJdOworICAgIGludCByZXMgPSAwOworCisg ICAgLyogc2FuaXR5IGNoZWNrIGZvciBzaXplIG9mIGlucHV0IHBhY2tldDogMSBieXRlIHBheWxv YWQgYXQgbGVhc3QgKi8KKyAgICBpZiAobGVuIDwgUlRQX1ZWQ19QQVlMT0FEX0hFQURFUl9TSVpF ICsgMSkgeworICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1IsICJUb28gc2hvcnQgUlRQ L1ZWQyBwYWNrZXQsIGdvdCAlZCAKYnl0ZXNcbiIsIGxlbik7CisgICAgICAgIHJldHVybiBBVkVS Uk9SX0lOVkFMSUREQVRBOworICAgIH0KKworICAgIC8qCisgICAgICogZGVjb2RlIHRoZSBWVkMg cGF5bG9hZCBoZWFkZXIgYWNjb3JkaW5nIHRvIHNlY3Rpb24gNCBvZiBkcmFmdCAKdmVyc2lvbiA2 OgorICAgICAqCisgICAgICogICArLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSsKKyAg ICAgKiAgIHwwfDF8MnwzfDR8NXw2fDd8MHwxfDJ8M3w0fDV8Nnw3fAorICAgICAqICAgKy0rLSst Ky0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rCisgICAgICogICB8RnxafCBMYXllcklEICAgfCBU eXBlICAgIHwgVElEIHwKKyAgICAgKiAgICstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t KworICAgICAqCisgICAgICogICAgICBGb3JiaWRkZW4gemVybyAoRik6IDEgYml0CisgICAgICog ICAgICBSZXNlcnZlZCAoWik6IDEgYml0cworICAgICAqICAgICAgTlVIIGxheWVyIElEIChMYXll cklkKTogNiBiaXRzCisgICAgICogICAgICBOQUwgdW5pdCB0eXBlIChUeXBlKTogNSBiaXRzCisg ICAgICogICAgICBOVUggdGVtcG9yYWwgSUQgcGx1cyAxIChUSUQpOiAzIGJpdHMKKyAgICAgKi8K KyAgICBuYWxfdHlwZSA9ICAoYnVmWzFdID4+IDMpICYgMHgxZjsKKyAgICBsaWQgID0gYnVmWzBd ICYgMHgzZjsKKyAgICB0aWQgID0gYnVmWzFdICYgMHgwNzsKKworICAgIC8qIHNhbml0eSBjaGVj ayBmb3IgY29ycmVjdCBsYXllciBJRCAqLworICAgIGlmIChsaWQpIHsKKyAgICAgICAgLyogZnV0 dXJlIHNjYWxhYmxlIG9yIDNEIHZpZGVvIGNvZGluZyBleHRlbnNpb25zICovCisgICAgICAgIGF2 cHJpdl9yZXBvcnRfbWlzc2luZ19mZWF0dXJlKGN0eCwgIk11bHRpLWxheWVyIFZWQyBjb2Rpbmci KTsKKyAgICAgICAgcmV0dXJuIEFWRVJST1JfUEFUQ0hXRUxDT01FOworICAgIH0KKworICAgIC8q IHNhbml0eSBjaGVjayBmb3IgY29ycmVjdCB0ZW1wb3JhbCBJRCAqLworICAgIGlmICghdGlkKSB7 CisgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwgIklsbGVnYWwgdGVtcG9yYWwgSUQg aW4gUlRQL1ZWQyAKcGFja2V0XG4iKTsKKyAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERB VEE7CisgICAgfQorCisgICAgLyogc2FuaXR5IGNoZWNrIGZvciBjb3JyZWN0IE5BTCB1bml0IHR5 cGUgKi8KKyAgICBpZiAobmFsX3R5cGUgPiAzMSkgeworICAgICAgICBhdl9sb2coY3R4LCBBVl9M T0dfRVJST1IsICJVbnN1cHBvcnRlZCAoVlZDKSBOQUwgdHlwZSAoJWQpXG4iLCAKbmFsX3R5cGUp OworICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICB9CisKKyAgICBzd2l0 Y2ggKG5hbF90eXBlKSB7CisgICAgLyogdmlkZW8gcGFyYW1ldGVyIHNldCAoVlBTKSAqLworICAg IGNhc2UgMTQ6CisgICAgLyogc2VxdWVuY2UgcGFyYW1ldGVyIHNldCAoU1BTKSAqLworICAgIGNh c2UgMTU6CisgICAgLyogcGljdHVyZSBwYXJhbWV0ZXIgc2V0IChQUFMpICovCisgICAgY2FzZSAx NjoKKyAgICAvKiAgc3VwcGxlbWVudGFsIGVuaGFuY2VtZW50IGluZm9ybWF0aW9uIChTRUkpICov CisgICAgY2FzZSAyMzoKKyAgICBjYXNlIDI0OgorICAgIC8qIHNpbmdsZSBOQUwgdW5pdCBwYWNr ZXQgKi8KKyAgICBkZWZhdWx0OgorICAgICAgICAvKiBjcmVhdGUgQS9WIHBhY2tldCAqLworICAg ICAgICBpZiAoKHJlcyA9IGF2X25ld19wYWNrZXQocGt0LCBzaXplb2Yoc3RhcnRfc2VxdWVuY2Up ICsgbGVuKSkgPCAwKQorICAgICAgICAgICAgcmV0dXJuIHJlczsKKyAgICAgICAgLyogQS9WIHBh Y2tldDogY29weSBzdGFydCBzZXF1ZW5jZSAqLworICAgICAgICBtZW1jcHkocGt0LT5kYXRhLCBz dGFydF9zZXF1ZW5jZSwgc2l6ZW9mKHN0YXJ0X3NlcXVlbmNlKSk7CisgICAgICAgIC8qIEEvViBw YWNrZXQ6IGNvcHkgTkFMIHVuaXQgZGF0YSAqLworICAgICAgICBtZW1jcHkocGt0LT5kYXRhICsg c2l6ZW9mKHN0YXJ0X3NlcXVlbmNlKSwgYnVmLCBsZW4pOworCisgICAgICAgIGJyZWFrOworICAg IC8qIGFnZ3JlZ2F0ZWQgcGFja2V0IChBUCkgLSB3aXRoIHR3byBvciBtb3JlIE5BTCB1bml0cyAq LworICAgIGNhc2UgMjg6CisgICAgICAgIC8qIHBhc3MgdGhlIFZWQyBwYXlsb2FkIGhlYWRlciAq LworICAgICAgICBidWYgKz0gUlRQX1ZWQ19QQVlMT0FEX0hFQURFUl9TSVpFOworICAgICAgICBs ZW4gLT0gUlRQX1ZWQ19QQVlMT0FEX0hFQURFUl9TSVpFOworCisgICAgICAgIC8qIHBhc3MgdGhl IFZWQyBET05MIGZpZWxkICovCisgICAgICAgIGlmIChydHBfdnZjX2N0eC0+dXNpbmdfZG9ubF9m aWVsZCkgeworICAgICAgICAgICAgYnVmICs9IFJUUF9WVkNfRE9OTF9GSUVMRF9TSVpFOworICAg ICAgICAgICAgbGVuIC09IFJUUF9WVkNfRE9OTF9GSUVMRF9TSVpFOworICAgICAgICB9CisKKyAg ICAgICAgcmVzID0gZmZfaDI2NF9oYW5kbGVfYWdncmVnYXRlZF9wYWNrZXQoY3R4LCBydHBfdnZj X2N0eCwgcGt0LCAKYnVmLCBsZW4sCisgCnJ0cF92dmNfY3R4LT51c2luZ19kb25sX2ZpZWxkID8K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlRQX1ZWQ19E T05EX0ZJRUxEX1NJWkUgOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBOVUxMLCAwKTsKKyAgICAgICAgaWYgKHJlcyA8IDApCisgICAgICAgICAgICBy ZXR1cm4gcmVzOworICAgICAgICBicmVhazsKKyAgICAvKiBmcmFnbWVudGF0aW9uIHVuaXQgKEZV KSAqLworICAgIGNhc2UgMjk6CisgICAgICAgIC8qIHBhc3MgdGhlIFZWQyBwYXlsb2FkIGhlYWRl ciAqLworICAgICAgICBidWYgKz0gUlRQX1ZWQ19QQVlMT0FEX0hFQURFUl9TSVpFOworICAgICAg ICBsZW4gLT0gUlRQX1ZWQ19QQVlMT0FEX0hFQURFUl9TSVpFOworCisgICAgICAgIC8qCisgICAg ICAgICogICAgIGNyZWF0ZSB0aGUgRlUgaGVhZGVyCisgICAgICAgICoKKyAgICAgICAgKiAgICAg MCAxIDIgMyA0IDUgNiA3CisgICAgICAgICogICAgICstLS0tLS0tLS0tLS0tLS0rCisgICAgICAg ICogICAgIHwwfDF8MnwzfDR8NXw2fDd8CisgICAgICAgICogICAgICstKy0rLSstKy0rLSstKy0r CisgICAgICAgICogICAgIHxTfEV8UHwgRnVUeXBlIHwKKyAgICAgICAgKiAgICAgKy0tLS0tLS0t LS0tLS0tLSsKKyAgICAgICAgKiAgICAgICBTICAgICAgID0gdmFyaWFibGUKKyAgICAgICAgKiAg ICAgICBFICAgICAgID0gdmFyaWFibGUKKyAgICAgICAgKiAgICAgICBQICAgICAgID0gdmFyaWFi bGUKKyAgICAgICAgKiAgICAgICBGdVR5cGUgID0gTkFMIHVuaXQgdHlwZQorICAgICAgICAqLwor ICAgICAgICBmaXJzdF9mcmFnbWVudCA9IGJ1ZlswXSAmIDB4ODA7CisgICAgICAgIGxhc3RfZnJh Z21lbnQgID0gYnVmWzBdICYgMHg0MDsKKyAgICAgICAgcGljX2ZyYWdtZW50ICAgPSBidWZbMF0g JiAweDEwOworICAgICAgICBmdV90eXBlICAgICAgICA9IGJ1ZlswXSAmIDB4M2Y7CisKKyAgICAg ICAgLyogcGFzcyB0aGUgVlZDIEZVIGhlYWRlciAqLworICAgICAgICBidWYgKz0gUlRQX1ZWQ19G VV9IRUFERVJfU0laRTsKKyAgICAgICAgbGVuIC09IFJUUF9WVkNfRlVfSEVBREVSX1NJWkU7CisK KyAgICAgICAgLyogcGFzcyB0aGUgVlZDIERPTkwgZmllbGQgKi8KKyAgICAgICAgaWYgKHJ0cF92 dmNfY3R4LT51c2luZ19kb25sX2ZpZWxkKSB7CisgICAgICAgICAgICBidWYgKz0gUlRQX1ZWQ19E T05MX0ZJRUxEX1NJWkU7CisgICAgICAgICAgICBsZW4gLT0gUlRQX1ZWQ19ET05MX0ZJRUxEX1NJ WkU7CisgICAgICAgIH0KKworICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfVFJBQ0UsICIgRlUg dHlwZSAlZCB3aXRoICVkIGJ5dGVzXG4iLCAKZnVfdHlwZSwgbGVuKTsKKworICAgICAgICAvKiBz YW5pdHkgY2hlY2sgZm9yIHNpemUgb2YgaW5wdXQgcGFja2V0OiAxIGJ5dGUgcGF5bG9hZCBhdCAK bGVhc3QgKi8KKyAgICAgICAgaWYgKGxlbiA8PSAwKSB7CisgICAgICAgICAgICBpZiAobGVuIDwg MCkgeworICAgICAgICAgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwKKyAgICAgICAg ICAgICAgICAgICAgICAgIlRvbyBzaG9ydCBSVFAvVlZDIHBhY2tldCwgZ290ICVkIGJ5dGVzIG9m IE5BTCAKdW5pdCB0eXBlICVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICBsZW4sIG5hbF90 eXBlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICAg ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUFHQUlOKTsK KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChmaXJzdF9mcmFnbWVudCAm JiBsYXN0X2ZyYWdtZW50KSB7CisgICAgICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1Is ICJJbGxlZ2FsIGNvbWJpbmF0aW9uIG9mIFMgYW5kIEUgCmJpdCBpbiBSVFAvVlZDIHBhY2tldFxu Iik7CisgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICAgICAgfQor CisgICAgICAgIG5ld19uYWxfaGVhZGVyWzBdID0gcnRwX3BsWzBdOworICAgICAgICBuZXdfbmFs X2hlYWRlclsxXSA9IHJ0cF9wbFsxXTsKKworICAgICAgICBuZXdfbmFsX2hlYWRlclsxXSA9IChu ZXdfbmFsX2hlYWRlclsxXSAmIDB4MDcpIHwgKGZ1X3R5cGUgPDwgMyk7CisKKyAgICAgICAgcmVz ID0gZmZfaDI2NF9oYW5kbGVfZnJhZ19wYWNrZXQocGt0LCBidWYsIGxlbiwgZmlyc3RfZnJhZ21l bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19uYWxfaGVh ZGVyLCAKc2l6ZW9mKG5ld19uYWxfaGVhZGVyKSk7CisKKyAgICAgICAgYnJlYWs7CisgICAgLyog UEFDSSBwYWNrZXQgKi8KKyAgICBjYXNlIDMwOgorICAgICAgICAvKiBUZW1wb3JhbCBzY2FsYWJp bGl0eSBjb250cm9sIGluZm9ybWF0aW9uIChUU0NJKSAqLworICAgICAgICBhdnByaXZfcmVwb3J0 X21pc3NpbmdfZmVhdHVyZShjdHgsICJQQUNJIHBhY2tldHMgZm9yIFJUUC9WVkMiKTsKKyAgICAg ICAgcmVzID0gQVZFUlJPUl9QQVRDSFdFTENPTUU7CisgICAgICAgIGJyZWFrOworICAgIH0KKwor ICAgIHBrdC0+c3RyZWFtX2luZGV4ID0gc3QtPmluZGV4OworCisgICAgcmV0dXJuIHJlczsKK30K KworY29uc3QgUlRQRHluYW1pY1Byb3RvY29sSGFuZGxlciBmZl92dmNfZHluYW1pY19oYW5kbGVy ID0geworICAgIC5lbmNfbmFtZSAgICAgICAgID0gIkgyNjYiLAorICAgIC5jb2RlY190eXBlICAg ICAgID0gQVZNRURJQV9UWVBFX1ZJREVPLAorICAgIC5jb2RlY19pZCAgICAgICAgID0gQVZfQ09E RUNfSURfVlZDLAorICAgIC5uZWVkX3BhcnNpbmcgICAgID0gQVZTVFJFQU1fUEFSU0VfRlVMTCwK KyAgICAucHJpdl9kYXRhX3NpemUgICA9IHNpemVvZihQYXlsb2FkQ29udGV4dCksCisgICAgLnBh cnNlX3NkcF9hX2xpbmUgPSB2dmNfcGFyc2Vfc2RwX2xpbmUsCisgICAgLnBhcnNlX3BhY2tldCAg ICAgPSB2dmNfaGFuZGxlX3BhY2tldCwKK307CmRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9ydHBl bmMuYyBiL2xpYmF2Zm9ybWF0L3J0cGVuYy5jCmluZGV4IDdiNGFlMzdkMTMuLjg0OGIyNDVhZDcg MTAwNjQ0Ci0tLSBhL2xpYmF2Zm9ybWF0L3J0cGVuYy5jCisrKyBiL2xpYmF2Zm9ybWF0L3J0cGVu Yy5jCkBAIC01Nyw2ICs1Nyw3IEBAIHN0YXRpYyBpbnQgaXNfc3VwcG9ydGVkKGVudW0gQVZDb2Rl Y0lEIGlkKQogICAgICBjYXNlIEFWX0NPREVDX0lEX0gyNjNQOgogICAgICBjYXNlIEFWX0NPREVD X0lEX0gyNjQ6CiAgICAgIGNhc2UgQVZfQ09ERUNfSURfSEVWQzoKKyAgICBjYXNlIEFWX0NPREVD X0lEX1ZWQzoKICAgICAgY2FzZSBBVl9DT0RFQ19JRF9NUEVHMVZJREVPOgogICAgICBjYXNlIEFW X0NPREVDX0lEX01QRUcyVklERU86CiAgICAgIGNhc2UgQVZfQ09ERUNfSURfTVBFRzQ6CkBAIC02 MDUsNiArNjA2LDcgQEAgc3RhdGljIGludCBydHBfd3JpdGVfcGFja2V0KEFWRm9ybWF0Q29udGV4 dCAqczEsIApBVlBhY2tldCAqcGt0KQogICAgICAgICAgZmZfcnRwX3NlbmRfaDI2MyhzMSwgcGt0 LT5kYXRhLCBzaXplKTsKICAgICAgICAgIGJyZWFrOwogICAgICBjYXNlIEFWX0NPREVDX0lEX0hF VkM6CisgICAgY2FzZSBBVl9DT0RFQ19JRF9WVkM6CiAgICAgICAgICBmZl9ydHBfc2VuZF9oMjY0 X2hldmMoczEsIHBrdC0+ZGF0YSwgc2l6ZSk7CiAgICAgICAgICBicmVhazsKICAgICAgY2FzZSBB Vl9DT0RFQ19JRF9WT1JCSVM6CmRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9ydHBlbmNfaDI2NF9o ZXZjLmMgYi9saWJhdmZvcm1hdC9ydHBlbmNfaDI2NF9oZXZjLmMKaW5kZXggMGM4OGZjMmEyMy4u N2RiZDlmM2UxMSAxMDA2NDQKLS0tIGEvbGliYXZmb3JtYXQvcnRwZW5jX2gyNjRfaGV2Yy5jCisr KyBiL2xpYmF2Zm9ybWF0L3J0cGVuY19oMjY0X2hldmMuYwpAQCAtODQsOSArODQsMzggQEAgc3Rh dGljIHZvaWQgbmFsX3NlbmQoQVZGb3JtYXRDb250ZXh0ICpzMSwgY29uc3QgCnVpbnQ4X3QgKmJ1 ZiwgaW50IHNpemUsIGludCBsYXN0CiAgICAgICAgICAgICAgaWYgKGJ1ZmZlcmVkX3NpemUgPT0g MCkgewogICAgICAgICAgICAgICAgICBpZiAoY29kZWMgPT0gQVZfQ09ERUNfSURfSDI2NCkgewog ICAgICAgICAgICAgICAgICAgICAgKnMtPmJ1Zl9wdHIrKyA9IDI0OwotICAgICAgICAgICAgICAg IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb2RlYyA9PSBBVl9DT0RFQ19J RF9IRVZDKSB7CiAgICAgICAgICAgICAgICAgICAgICAqcy0+YnVmX3B0cisrID0gNDggPDwgMTsK ICAgICAgICAgICAgICAgICAgICAgICpzLT5idWZfcHRyKysgPSAxOworICAgICAgICAgICAgICAg IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFZWQyBjYXNlLCByZmM5MzI4LCBwYWdl IDIwCisgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgZmlyc3RfbmFsX3R5cGUgPSBidWZbMF07 CisgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgbGFzdF9uYWxfdHlwZSA9IGJ1ZlsxXTsKKyAg ICAgICAgICAgICAgICAgICAgZmlyc3RfbmFsX3R5cGUgJj0gfigxPDw3KTsgLy8gY2xlYXIgdGhl IEYgYml0LCAKaW5pdGlhbGx5CisgICAgICAgICAgICAgICAgICAgIGxhc3RfbmFsX3R5cGUgPSAo bGFzdF9uYWxfdHlwZSAmIDB4MDcpIHwgKDI4IDw8IDMpOworICAgICAgICAgICAgICAgICAgICAq cy0+YnVmX3B0cisrID0gZmlyc3RfbmFsX3R5cGU7CisgICAgICAgICAgICAgICAgICAgICpzLT5i dWZfcHRyKysgPSBsYXN0X25hbF90eXBlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg IH0gZWxzZSBpZiAoY29kZWMgPT0gQVZfQ09ERUNfSURfVlZDKSB7CisgICAgICAgICAgICAgICAg Ly8gVlZDIGNhc2UsIHJmYzkzMjgsIHBhZ2UgMjAsIHVzZSBsb3dlc3QgbGF5ZXJpZC90aWQKKyAg ICAgICAgICAgICAgICB1aW50OF90IGZpcnN0X25hbF90eXBlID0gcy0+YnVmWzBdOworICAgICAg ICAgICAgICAgIHVpbnQ4X3QgbGFzdF9uYWxfdHlwZSA9IHMtPmJ1ZlsxXTsKKyAgICAgICAgICAg ICAgICB1aW50OF90IG5ld19maXJzdF9uYWxfdHlwZSA9IGJ1ZlswXTsKKyAgICAgICAgICAgICAg ICB1aW50OF90IG5ld19sYXN0X25hbF90eXBlID0gYnVmWzFdOworICAgICAgICAgICAgICAgIGlu dCBjdXJfZiA9IGZpcnN0X25hbF90eXBlID4+IDc7CisgICAgICAgICAgICAgICAgaW50IG5ld19m ID0gbmV3X2ZpcnN0X25hbF90eXBlID4+IDc7CisgICAgICAgICAgICAgICAgaWYgKCFjdXJfZiAm JiBuZXdfZikgeworICAgICAgICAgICAgICAgICAgICBzLT5idWZbMF0gfD0gMSA8PCA3OworICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpbnQgY3VyX2xpZCA9IGZpcnN0X25hbF90 eXBlICYgMHgzZjsKKyAgICAgICAgICAgICAgICBpbnQgbmV3X2xpZCA9IG5ld19maXJzdF9uYWxf dHlwZSAmIDB4M2Y7CisgICAgICAgICAgICAgICAgaWYgKGN1cl9saWQgPiBuZXdfbGlkKSB7Cisg ICAgICAgICAgICAgICAgICAgIHMtPmJ1ZlswXSB8PSBuZXdfbGlkOworICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICAgICBpbnQgY3VyX3RpZCA9IGxhc3RfbmFsX3R5cGUgJiAweDA3Owor ICAgICAgICAgICAgICAgIGludCBuZXdfdGlkID0gbmV3X2xhc3RfbmFsX3R5cGUgJiAweDA3Owor ICAgICAgICAgICAgICAgIGlmIChjdXJfdGlkID4gbmV3X3RpZCkgeworICAgICAgICAgICAgICAg ICAgICBzLT5idWZbMV0gfD0gbmV3X3RpZDsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg ICAgIH0KICAgICAgICAgICAgICBBVl9XQjE2KHMtPmJ1Zl9wdHIsIHNpemUpOwpAQCAtMTAwLDYg KzEyOSw3IEBAIHN0YXRpYyB2b2lkIG5hbF9zZW5kKEFWRm9ybWF0Q29udGV4dCAqczEsIGNvbnN0 IAp1aW50OF90ICpidWYsIGludCBzaXplLCBpbnQgbGFzdAogICAgICAgICAgfQogICAgICB9IGVs c2UgewogICAgICAgICAgaW50IGZsYWdfYnl0ZSwgaGVhZGVyX3NpemU7CisgICAgICAgIHVpbnQ4 X3QgbmFsX3R5cGU7CiAgICAgICAgICBmbHVzaF9idWZmZXJlZChzMSwgMCk7CiAgICAgICAgICBp ZiAoY29kZWMgPT0gQVZfQ09ERUNfSURfSDI2NCAmJiAocy0+ZmxhZ3MgJiAKRkZfUlRQX0ZMQUdf SDI2NF9NT0RFMCkpIHsKICAgICAgICAgICAgICBhdl9sb2coczEsIEFWX0xPR19FUlJPUiwKQEAg LTEwOSwyMCArMTM5LDIwIEBAIHN0YXRpYyB2b2lkIG5hbF9zZW5kKEFWRm9ybWF0Q29udGV4dCAq czEsIGNvbnN0IAp1aW50OF90ICpidWYsIGludCBzaXplLCBpbnQgbGFzdAogICAgICAgICAgfQog ICAgICAgICAgYXZfbG9nKHMxLCBBVl9MT0dfREVCVUcsICJOQUwgc2l6ZSAlZCA+ICVkXG4iLCBz aXplLCAKcy0+bWF4X3BheWxvYWRfc2l6ZSk7CiAgICAgICAgICBpZiAoY29kZWMgPT0gQVZfQ09E RUNfSURfSDI2NCkgewotICAgICAgICAgICAgdWludDhfdCB0eXBlID0gYnVmWzBdICYgMHgxRjsK KyAgICAgICAgICAgIG5hbF90eXBlID0gYnVmWzBdICYgMHgxRjsKICAgICAgICAgICAgICB1aW50 OF90IG5yaSA9IGJ1ZlswXSAmIDB4NjA7CiAgICAgICAgICAgICAgIHMtPmJ1ZlswXSA9IDI4OyAg ICAgICAgLyogRlUgSW5kaWNhdG9yOyBUeXBlID0gMjggLS0tPiAKRlUtQSAqLwogICAgICAgICAg ICAgIHMtPmJ1ZlswXSB8PSBucmk7Ci0gICAgICAgICAgICBzLT5idWZbMV0gPSB0eXBlOworICAg ICAgICAgICAgcy0+YnVmWzFdID0gbmFsX3R5cGU7CiAgICAgICAgICAgICAgcy0+YnVmWzFdIHw9 IDEgPDwgNzsKICAgICAgICAgICAgICBidWYgICs9IDE7CiAgICAgICAgICAgICAgc2l6ZSAtPSAx OwogICAgICAgICAgICAgICBmbGFnX2J5dGUgICA9IDE7CiAgICAgICAgICAgICAgaGVhZGVyX3Np emUgPSAyOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdWludDhfdCBuYWxfdHlwZSA9 IChidWZbMF0gPj4gMSkgJiAweDNGOworICAgICAgICB9IGVsc2UgaWYgKGNvZGVjID09IEFWX0NP REVDX0lEX0hFVkMpIHsKKyAgICAgICAgICAgIG5hbF90eXBlID0gKGJ1ZlswXSA+PiAxKSAmIDB4 M0Y7CiAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgKiBjcmVhdGUgdGhlIEhFVkMgcGF5 bG9hZCBoZWFkZXIgYW5kIHRyYW5zbWl0IHRoZSBidWZmZXIgCmFzIGZyYWdtZW50YXRpb24gdW5p dHMgKEZVKQogICAgICAgICAgICAgICAqCkBAIC0xNTQsOCArMTg0LDU0IEBAIHN0YXRpYyB2b2lk IG5hbF9zZW5kKEFWRm9ybWF0Q29udGV4dCAqczEsIGNvbnN0IAp1aW50OF90ICpidWYsIGludCBz aXplLCBpbnQgbGFzdAogICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgIHMtPmJ1ZlsyXSAg PSBuYWxfdHlwZTsKICAgICAgICAgICAgICAvKiBzZXQgdGhlIFMgYml0OiBtYXJrIGFzIHN0YXJ0 IGZyYWdtZW50ICovCi0gICAgICAgICAgICBzLT5idWZbMl0gfD0gMSA8PCA3OworICAgICAgICAg ICAgcy0+YnVmWzFdID0gKHMtPmJ1ZlsxXSAmIDB4MDcpIHwgKDI5IDw8IDMpOworCisgICAgICAg ICAgICAvKiBwYXNzIHRoZSBvcmlnaW5hbCBOQUwgaGVhZGVyICovCisgICAgICAgICAgICBidWYg ICs9IDI7CisgICAgICAgICAgICBzaXplIC09IDI7CisKKyAgICAgICAgICAgIGZsYWdfYnl0ZSAg ID0gMjsKKyAgICAgICAgICAgIGhlYWRlcl9zaXplID0gMzsKKyAgICAgICAgfSBlbHNlIHsKKyAg ICAgICAgICAgIHMtPmJ1ZlswXSA9IGJ1ZlswXTsKKyAgICAgICAgICAgIHMtPmJ1ZlsxXSA9IGJ1 ZlsxXTsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBjcmVhdGUgdGhlIFZWQyBwYXls b2FkIGhlYWRlciBhbmQgdHJhbnNtaXQgdGhlIGJ1ZmZlciBhcyAKZnJhZ21lbnRhdGlvbiB1bml0 cyAoRlUpCisgICAgICAgICAgICAgKgorICAgICAgICAgICAgICogICArLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAgICAqICAgfDB8MXwyfDN8NHw1fDZ8N3wwfDF8 MnwzfDR8NXw2fDd8CisgICAgICAgICAgICAgKiAgICstKy0rLSstKy0rLSstKy0rLSstKy0rLSst Ky0rLSstKworICAgICAgICAgICAgICogICB8RnxafCBMYXllcklEICAgfCBUeXBlICAgIHwgVElE IHwKKyAgICAgICAgICAgICAqICAgKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rCisg ICAgICAgICAgICAgKiAgICAgIEYgICAgICAgPSAwCisgICAgICAgICAgICAgKiAgICAgIFR5cGUg ICAgPSAyOSAoZnJhZ21lbnRhdGlvbiB1bml0IChGVSkpCisgICAgICAgICAgICAgKiAgICAgIExh eWVySWQgPSAwCisgICAgICAgICAgICAgKiAgICAgIFRJRCAgICAgPSAxCisgICAgICAgICAgICAg Ki8KKyAgICAgICAgICAgIG5hbF90eXBlID0gKGJ1ZlsxXSA+PiAzKSAmIDB4MUY7CisgICAgICAg ICAgICBzLT5idWZbMV0gPSAocy0+YnVmWzFdICYgMHgwNykgfCAoMjkgPDwgMyk7CiAgKyAgICAg ICAgICAgIC8qCisgICAgICAgICAgICAgKiAgICAgY3JlYXRlIHRoZSBGVSBoZWFkZXIKKyAgICAg ICAgICAgICAqCisgICAgICAgICAgICAgKiAgICAgMCAxIDIgMyA0IDUgNiA3CisgICAgICAgICAg ICAgKiAgICAgKy0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAgICAqICAgICB8MHwxfDJ8M3w0 fDV8Nnw3fAorICAgICAgICAgICAgICogICAgICstKy0rLSstKy0rLSstKy0rCisgICAgICAgICAg ICAgKiAgICAgfFN8RXxQfCBGdVR5cGUgfAorICAgICAgICAgICAgICogICAgICstLS0tLS0tLS0t LS0tLS0rCisgICAgICAgICAgICAgKiAgICAgICBTICAgICAgID0gdmFyaWFibGUKKyAgICAgICAg ICAgICAqICAgICAgIEUgICAgICAgPSB2YXJpYWJsZQorICAgICAgICAgICAgICogICAgICAgUCAg ICAgICA9IHZhcmlhYmxlCisgICAgICAgICAgICAgKiAgICAgICBGdVR5cGUgID0gTkFMIHVuaXQg dHlwZQorICAgICAgICAgICAgICovCisgICAgICAgICAgICBzLT5idWZbMl0gID0gbmFsX3R5cGU7 CisgICAgICAgICAgICAvKiBzZXQgdGhlIFMgYml0OiBtYXJrIGFzIHN0YXJ0IGZyYWdtZW50ICov CisgICAgICAgICAgICBzLT5idWZbMl0gfD0gMSA8PCA3OworICAgICAgICAgICAgLy8gU2V0IHRo ZSBQIGJpdCBpZiBpdCdzIHRoZSBsYXN0IGZyYWdtZW50IGFuZCBpZiBpdCdzIGEgClZDTCBOQUwg dW5pdAorICAgICAgICAgICAgaWYgKG5hbF90eXBlIDw9IDExKSB7CisgICAgICAgICAgICAgICAg cy0+YnVmWzJdICY9IH4oMSA8PCA1KTsgIC8vIENsZWFyIHRoZSBQIGJpdCBvdGhlcndpc2UKKyAg ICAgICAgICAgIH0KICAgICAgICAgICAgICAvKiBwYXNzIHRoZSBvcmlnaW5hbCBOQUwgaGVhZGVy ICovCiAgICAgICAgICAgICAgYnVmICArPSAyOwogICAgICAgICAgICAgIHNpemUgLT0gMjsKQEAg LTE3MCw4ICsyNDYsMTQgQEAgc3RhdGljIHZvaWQgbmFsX3NlbmQoQVZGb3JtYXRDb250ZXh0ICpz MSwgY29uc3QgCnVpbnQ4X3QgKmJ1ZiwgaW50IHNpemUsIGludCBsYXN0CiAgICAgICAgICAgICAg YnVmICArPSBzLT5tYXhfcGF5bG9hZF9zaXplIC0gaGVhZGVyX3NpemU7CiAgICAgICAgICAgICAg c2l6ZSAtPSBzLT5tYXhfcGF5bG9hZF9zaXplIC0gaGVhZGVyX3NpemU7CiAgICAgICAgICAgICAg cy0+YnVmW2ZsYWdfYnl0ZV0gJj0gfigxIDw8IDcpOworICAgICAgICAgICAgaWYgKGNvZGVjID09 IEFWX0NPREVDX0lEX1ZWQyAmJiBuYWxfdHlwZSA8PSAxMSkgeworICAgICAgICAgICAgICAgIHMt PmJ1ZltmbGFnX2J5dGVdICY9IH4oMSA8PCA1KTsgIC8vIENsZWFyIHRoZSBQIGJpdCAKb3RoZXJ3 aXNlCisgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBzLT5idWZbZmxhZ19ieXRl XSB8PSAxIDw8IDY7CisgICAgICAgIGlmIChjb2RlYyA9PSBBVl9DT0RFQ19JRF9WVkMgJiYgbmFs X3R5cGUgPD0gMTEpIHsKKyAgICAgICAgICAgIHMtPmJ1ZltmbGFnX2J5dGVdIHw9IDEgPDwgNTsg IC8vIFNldCB0aGUgUCBiaXQKKyAgICAgICAgfQogICAgICAgICAgbWVtY3B5KCZzLT5idWZbaGVh ZGVyX3NpemVdLCBidWYsIHNpemUpOwogICAgICAgICAgZmZfcnRwX3NlbmRfZGF0YShzMSwgcy0+ YnVmLCBzaXplICsgaGVhZGVyX3NpemUsIGxhc3QpOwogICAgICB9CmRpZmYgLS1naXQgYS9saWJh dmZvcm1hdC9zZHAuYyBiL2xpYmF2Zm9ybWF0L3NkcC5jCmluZGV4IGNjZmFhOGFmZjUuLjJmYmYx NzNlNDEgMTAwNjQ0Ci0tLSBhL2xpYmF2Zm9ybWF0L3NkcC5jCisrKyBiL2xpYmF2Zm9ybWF0L3Nk cC5jCkBAIC0zMyw2ICszMyw3IEBACiAgI2luY2x1ZGUgImludGVybmFsLmgiCiAgI2luY2x1ZGUg ImF2Yy5oIgogICNpbmNsdWRlICJoZXZjLmgiCisjaW5jbHVkZSAidnZjLmgiCiAgI2luY2x1ZGUg InJ0cC5oIgogICNpbmNsdWRlICJ2ZXJzaW9uLmgiCiAgI2lmIENPTkZJR19ORVRXT1JLCkBAIC0z NDcsNiArMzQ4LDE3NiBAQCBlcnI6CiAgICAgIHJldHVybiByZXQ7CiAgfQogICsKK3N0YXRpYyBp bnQgY2FsY3VsYXRlX3B0bF9zaXplKHVpbnQ4X3QgKmV4dHJhZGF0YSkgeworICAgIGludCBvZmZz ZXQgPSAwOworICAgIC8qCisgICAgICAgICogdW5zaWduZWQgaW50KDkpIG9sc19pZHg7CisgICAg ICAgICogdW5zaWduZWQgaW50KDMpIG51bV9zdWJsYXllcnM7CisgICAgICAgICogdW5zaWduZWQg aW50KDIpIGNvbnN0YW50X2ZyYW1lX3JhdGU7CisgICAgICAgICogdW5zaWduZWQgaW50KDIpIGNo cm9tYV9mb3JtYXRfaWRjOyAgICAgKi8KKyAgICB1aW50OF90IG51bV9zdWJsYXllcnMgPSAoQVZf UkIxNigmZXh0cmFkYXRhW29mZnNldF0pID4+IDQpICYgMHgwNzsKKyAgICBvZmZzZXQgKz0gMjsK KyAgICAvKiAgdW5zaWduZWQgaW50KDMpIGJpdF9kZXB0aF9taW51czg7CisgICAgICAgIGJpdCg1 KSByZXNlcnZlZCA9IOKAmDExMTEx4oCZYjsgKi8KKyAgICBvZmZzZXQgKz0gMTsKKyAgICAvKiAg Yml0KDIpIHJlc2VydmVkID0g4oCYMDDigJliOworICAgICAgICB1bnNpZ25lZCBpbnQgKDYpIG51 bV9ieXRlc19jb25zdHJhaW50X2luZm8gKi8KKyAgICB1aW50OF90IG51bV9ieXRlc19jb25zdHJh aW50X2luZm8gPSBBVl9SQjgoJmV4dHJhZGF0YVtvZmZzZXRdKSAmIDB4M2Y7CisgICAgb2Zmc2V0 ICs9IDE7CisgICAgLyogIHVuc2lnbmVkIGludCAoNykgZ2VuZXJhbF9wcm9maWxlX2lkYworICAg ICAgICB1bnNpZ25lZCBpbnQgKDEpIGdlbmVyYWxfdGllcl9mbGFnICovCisgICAgb2Zmc2V0ICs9 IDE7CisgICAgLyogIHVuc2lnbmVkIGludCAoOCkgZ2VuZXJhbF9sZXZlbF9pZGMgKi8KKyAgICBv ZmZzZXQgKz0gMTsKKyAgICAvKgorICAgICogICB1bnNpZ25lZCBpbnQgKDEpIHB0bF9mcmFtZV9v bmx5X2NvbnN0cmFpbnRfZmxhZworICAgICogICB1bnNpZ25lZCBpbnQgKDEpIHB0bF9tdWx0aWxh eWVyX2VuYWJsZWRfZmxhZworICAgICogICB1bnNpZ25lZCBpbnQgKDgqbnVtX2J5dGVzX2NvbnN0 cmFpbnRfaW5mbyAtMikgCmdlbmVyYWxfY29uc3RyYWludF9pbmZvICovCisgICAgb2Zmc2V0ICs9 IG51bV9ieXRlc19jb25zdHJhaW50X2luZm87CisKKyAgICBpZiAobnVtX3N1YmxheWVycyA+IDEp IHsKKyAgICAgICAgLy8gcHRsX3N1YmxheWVyX2xldmVsX3ByZXNlbnRfZmxhZ3MKKyAgICAgICAg dWludDhfdCBwdGxfc3VibGF5ZXJfbGV2ZWxfcHJlc2VudF9mbGFncyA9IGV4dHJhZGF0YVtvZmZz ZXRdOworICAgICAgICBvZmZzZXQgKz0gMTsKKyAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBudW1i ZXIgb2Ygc3VibGF5ZXJfbGV2ZWxfaWRjIGJ5dGVzCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBp IDwgbnVtX3N1YmxheWVycyAtIDE7IGkrKykgeworICAgICAgICAgICAgaWYgKHB0bF9zdWJsYXll cl9sZXZlbF9wcmVzZW50X2ZsYWdzICYgKDEgPDwgaSkpIHsKKyAgICAgICAgICAgICAgICBvZmZz ZXQgKz0gMTsgLy8gQWRkIGEgYnl0ZSBmb3IgZWFjaCBzdWJsYXllcl9sZXZlbF9pZGMKKyAgICAg ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAvKiAgdW5zaWduZWQgaW50KDgpIG51bV9z dWJfcHJvZmlsZXM7ICovCisgICAgdWludDhfdCBwdGxfbnVtX3N1Yl9wcm9maWxlcyA9IGV4dHJh ZGF0YVtvZmZzZXRdOworICAgIG9mZnNldCArPSAxOworICAgIC8qICB1bnNpZ25lZCBpbnQoMzIp IGdlbmVyYWxfc3ViX3Byb2ZpbGVfaWRjW2pdOyAqLworICAgIG9mZnNldCArPSA0ICogcHRsX251 bV9zdWJfcHJvZmlsZXM7CisgICAgLy9FbmQgb2YgVnZjUFRMUmVjb3JkCisgICAgLyoKKyAgICAq ICAgdW5zaWduZWQgaW50KDE2KSBtYXhfcGljdHVyZV93aWR0aDsqLworICAgIG9mZnNldCArPSAy OworICAgIC8qCisgICAgKiAgIHVuc2lnbmVkIGludCgxNikgbWF4X3BpY3R1cmVfaGVpZ2h0Oyov CisgICAgb2Zmc2V0ICs9IDI7CisgICAgLyoKKyAgICAqICAgdW5zaWduZWQgaW50KDE2KSBhdmdf ZnJhbWVfcmF0ZTsgKi8KKyAgICBvZmZzZXQgKz0gMjsKKyAgICByZXR1cm4gb2Zmc2V0OworfQor CitzdGF0aWMgaW50IGV4dHJhZGF0YTJwc2V0c192dmNjKGNvbnN0IEFWQ29kZWNQYXJhbWV0ZXJz ICpwYXIsIGNoYXIgKipvdXQpCit7CisgICAgY2hhciAqcHNldHM7CisgICAgdWludDhfdCAqZXh0 cmFkYXRhID0gcGFyLT5leHRyYWRhdGE7CisgICAgaW50IGV4dHJhZGF0YV9zaXplID0gcGFyLT5l eHRyYWRhdGFfc2l6ZTsKKyAgICB1aW50OF90ICp0bXBidWYgPSBOVUxMOworICAgIGludCBwc19w b3NbM10gPSB7IDAgfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHBzX25hbWVzWzNd ID0geyAidnBzIiwgInNwcyIsICJwcHMiIH07CisgICAgaW50IG51bV9hcnJheXMsIG51bV9uYWx1 czsKKyAgICBpbnQgcG9zLCBpLCBqLCByZXQgPSAwOworCisgICAgKm91dCA9IE5VTEw7CisKKyAg ICBpZiAocGFyLT5leHRyYWRhdGFbMF0gIT0gMSkgeworICAgICAgICBBVklPQ29udGV4dCAqcGI7 CisKKyAgICAgICAgcmV0ID0gYXZpb19vcGVuX2R5bl9idWYoJnBiKTsKKyAgICAgICAgaWYgKHJl dCA8IDApCisgICAgICAgICAgICByZXR1cm4gcmV0OworCisgICAgICAgIHJldCA9IGZmX2lzb21f d3JpdGVfdnZjYyhwYiwgcGFyLT5leHRyYWRhdGEsIApwYXItPmV4dHJhZGF0YV9zaXplLCAwKTsK KyAgICAgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgICAgIGF2aW9fY2xvc2VfZHluX2J1Zihw YiwgJnRtcGJ1Zik7CisgICAgICAgICAgICBnb3RvIGVycjsKKyAgICAgICAgfQorICAgICAgICBl eHRyYWRhdGFfc2l6ZSA9IGF2aW9fY2xvc2VfZHluX2J1ZihwYiwgJmV4dHJhZGF0YSk7CisgICAg ICAgIHRtcGJ1ZiA9IGV4dHJhZGF0YTsKKyAgICB9CisKKyAgICBpbnQgcHRsX3ByZXNlbnRfZmxh ZyA9IChleHRyYWRhdGFbMF0gJiAweDAxKTsKKworICAgIHBvcyA9IDE7IC8vIFN0YXJ0IGFmdGVy IHRoZSBpbml0aWFsIGNvbmZpZ3VyYXRpb24gYnl0ZQorICAgIGlmIChwdGxfcHJlc2VudF9mbGFn KSB7CisgICAgICAgIC8vIFBUTCBpcyBwcmVzZW50LCBzbyBwYXJzZSBQVEwgZmllbGRzICh0aGUg bnVtYmVyIG9mIGJ5dGVzIApkZXBlbmRzIG9uIFBUTCBzdHJ1Y3R1cmUpCisgICAgICAgIHBvcyAr PSBjYWxjdWxhdGVfcHRsX3NpemUoZXh0cmFkYXRhICsgMSk7CisgICAgfQorICAgIGlmIChwb3Mg KyAxID4gZXh0cmFkYXRhX3NpemUpCisgICAgICAgIGdvdG8gZXJyOworICAgIG51bV9hcnJheXMg PSBleHRyYWRhdGFbcG9zKytdOworICAgIGZvciAoaSA9IDA7IGkgPCBudW1fYXJyYXlzOyBpKysp IHsKKyAgICAgICAgaW50IG51bV9uYWx1cywgbmFsdV90eXBlOworICAgICAgICBpZiAocG9zICsg MyA+IGV4dHJhZGF0YV9zaXplKQorICAgICAgICAgICAgZ290byBlcnI7CisgICAgICAgIG5hbHVf dHlwZSA9IGV4dHJhZGF0YVtwb3NdICYgMHgxZjsKKyAgICAgICAgaWYgKG5hbHVfdHlwZSA9PSAx NCkgLy8gVlBTCisgICAgICAgICAgICBwc19wb3NbMF0gPSBwb3M7CisgICAgICAgIGVsc2UgaWYg KG5hbHVfdHlwZSA9PSAxNSkgLy8gU1BTCisgICAgICAgICAgICBwc19wb3NbMV0gPSBwb3M7Cisg ICAgICAgIGVsc2UgaWYgKG5hbHVfdHlwZSA9PSAxNikgLy8gUFBTCisgICAgICAgICAgICBwc19w b3NbMl0gPSBwb3M7CisgICAgICAgIG51bV9uYWx1cyA9IEFWX1JCMTYoJmV4dHJhZGF0YVtwb3Mg KyAxXSk7CisgICAgICAgIHBvcyArPSAzOworICAgICAgICBmb3IgKGogPSAwOyBqIDwgbnVtX25h bHVzOyBqKyspIHsKKyAgICAgICAgICAgIGludCBsZW47CisgICAgICAgICAgICBpZiAocG9zICsg MiA+IGV4dHJhZGF0YV9zaXplKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyOworICAgICAgICAg ICAgbGVuID0gQVZfUkIxNigmZXh0cmFkYXRhW3Bvc10pOworICAgICAgICAgICAgcG9zICs9IDI7 CisgICAgICAgICAgICBpZiAocG9zICsgbGVuID4gZXh0cmFkYXRhX3NpemUpCisgICAgICAgICAg ICAgICAgZ290byBlcnI7CisgICAgICAgICAgICBwb3MgKz0gbGVuOworICAgICAgICB9CisgICAg fQorICAgIGlmICghcHNfcG9zWzFdIHx8ICFwc19wb3NbMl0pCisgICAgICAgIGdvdG8gZXJyOwor ICAgIHBzZXRzID0gYXZfbWFsbG9jeihNQVhfUFNFVF9TSVpFKTsKKyAgICBpZiAoIXBzZXRzKSB7 CisgICAgICAgIHJldCA9IEFWRVJST1IoRU5PTUVNKTsKKyAgICAgICAgZ290byBlcnI7CisgICAg fQorCisgICAgcHNldHNbMF0gPSAnXDAnOworCisgICAgZm9yIChpID0gMDsgaSA8IDM7IGkrKykg eworICAgICAgICBpZiAoIXBzX3Bvc1tpXSkgeworICAgICAgICAgICAgY29udGludWU7CisgICAg ICAgIH0KKyAgICAgICAgcG9zID0gcHNfcG9zW2ldOworCisgICAgICAgIGlmIChpID4gMCAmJiBw c19wb3NbaS0xXSkKKyAgICAgICAgICAgIGF2X3N0cmxjYXQocHNldHMsICI7ICIsIE1BWF9QU0VU X1NJWkUpOworICAgICAgICBhdl9zdHJsY2F0Zihwc2V0cywgTUFYX1BTRVRfU0laRSwgInNwcm9w LSVzPSIsIHBzX25hbWVzW2ldKTsKKworICAgICAgICAvLyBTa2lwcGluZyBib3VuZGFyeSBjaGVj a3MgaW4gdGhlIGlucHV0IGhlcmU7IHdlJ3ZlIGFscmVhZHkgCnRyYXZlcnNlZAorICAgICAgICAv LyB0aGUgd2hvbGUgaHZjYyBzdHJ1Y3R1cmUgYWJvdmUgd2l0aG91dCBpc3N1ZXMKKyAgICAgICAg bnVtX25hbHVzID0gQVZfUkIxNigmZXh0cmFkYXRhW3BvcyArIDFdKTsKKyAgICAgICAgcG9zICs9 IDM7CisgICAgICAgIGZvciAoaiA9IDA7IGogPCBudW1fbmFsdXM7IGorKykgeworICAgICAgICAg ICAgaW50IGxlbiA9IEFWX1JCMTYoJmV4dHJhZGF0YVtwb3NdKTsKKyAgICAgICAgICAgIGludCBz dHJwb3M7CisgICAgICAgICAgICBwb3MgKz0gMjsKKyAgICAgICAgICAgIGlmIChqID4gMCkKKyAg ICAgICAgICAgICAgICBhdl9zdHJsY2F0KHBzZXRzLCAiLCIsIE1BWF9QU0VUX1NJWkUpOworICAg ICAgICAgICAgc3RycG9zID0gc3RybGVuKHBzZXRzKTsKKyAgICAgICAgICAgIGlmICghYXZfYmFz ZTY0X2VuY29kZShwc2V0cyArIHN0cnBvcywgTUFYX1BTRVRfU0laRSAtIHN0cnBvcywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXh0cmFkYXRhW3Bvc10sIGxlbikpIHsKKyAg ICAgICAgICAgICAgICBhdl9mcmVlKHBzZXRzKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycjsK KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHBvcyArPSBsZW47CisgICAgICAgIH0KKyAgICB9 CisgICAgYXZfZnJlZSh0bXBidWYpOworCisgICAgKm91dCA9IHBzZXRzOworICAgIHJldHVybiAw OworZXJyOgorICAgIGlmIChyZXQgPj0gMCkKKyAgICAgICAgcmV0ID0gQVZFUlJPUl9JTlZBTElE REFUQTsKKyAgICBhdl9mcmVlKHRtcGJ1Zik7CisgICAgcmV0dXJuIHJldDsKK30KKwogIHN0YXRp YyBpbnQgZXh0cmFkYXRhMmNvbmZpZyhBVkZvcm1hdENvbnRleHQgKnMsIGNvbnN0IApBVkNvZGVj UGFyYW1ldGVycyAqcGFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqb3V0 KQogIHsKQEAgLTU3OSw2ICs3NTAsMTcgQEAgc3RhdGljIGludCBzZHBfd3JpdGVfbWVkaWFfYXR0 cmlidXRlcyhjaGFyICpidWZmLCAKaW50IHNpemUsIGNvbnN0IEFWU3RyZWFtICpzdCwKICAgICAg ICAgICAgICBhdl9zdHJsY2F0ZihidWZmLCBzaXplLCAiYT1mbXRwOiVkICVzXHJcbiIsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWRfdHlwZSwgY29uZmlnKTsK ICAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQVZfQ09ERUNfSURfVlZDOgorICAgICAgICBpZiAo cC0+ZXh0cmFkYXRhX3NpemUpIHsKKyAgICAgICAgICAgIHJldCA9IGV4dHJhZGF0YTJwc2V0c192 dmNjKHAsICZjb25maWcpOworICAgICAgICAgICAgaWYgKHJldCA8IDApCisgICAgICAgICAgICAg ICAgcmV0dXJuIHJldDsKKyAgICAgICAgfQorICAgICAgICBhdl9zdHJsY2F0ZihidWZmLCBzaXpl LCAiYT1ydHBtYXA6JWQgSDI2Ni85MDAwMFxyXG4iLCAKcGF5bG9hZF90eXBlKTsKKyAgICAgICAg aWYgKGNvbmZpZykKKyAgICAgICAgICAgIGF2X3N0cmxjYXRmKGJ1ZmYsIHNpemUsICJhPWZtdHA6 JWQgJXNcclxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2Fk X3R5cGUsIGNvbmZpZyk7CisgICAgICAgIGJyZWFrOwogICAgICBjYXNlIEFWX0NPREVDX0lEX01Q RUc0OgogICAgICAgICAgaWYgKHAtPmV4dHJhZGF0YV9zaXplKSB7CiAgICAgICAgICAgICAgcmV0 ID0gZXh0cmFkYXRhMmNvbmZpZyhmbXQsIHAsICZjb25maWcpOwotLSAKMi4zNC4xCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFp bGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJv dmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0 ICJ1bnN1YnNjcmliZSIuCg==