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 40732495DA for ; Fri, 14 Jun 2024 02:33:46 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 407C868D4C9; Fri, 14 Jun 2024 05:33:44 +0300 (EEST) Received: from AUS01-SY4-obe.outbound.protection.outlook.com (mail-sy4aus01olkn2179.outbound.protection.outlook.com [40.92.62.179]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3BFAC68D3B8 for ; Fri, 14 Jun 2024 05:33:36 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Rn4mshZclQ2/wlrfznm/3E/T4d0wwZ7lX1XrpkNCGdbOou/TcgiNboyZ1Aw+dGaEWCSg7NUJA2sVH0I2ZVfUMprePn9y0i4RZPP6vwU9ldROf8b830GBfGTvIjj7Y9Om8vuHVXXZtT3x/JvJtaMr2dacKcu6vC9OCEMwXer2/bmo7ZqWOPoXOJBwIE5pQTLzZZ7ZCd20jAaL+yMYnO8Qu1E58eapvDPNcZi2uL8ZRavokquL/FOT47+9355Ol+Myy79Lr5p2Wy/CqbRDoSRESdhM9O9qm3NBIAk2PDJyWRAMFE9OmuHRLcWRQTSTXbMzXsRjKL4KONvC7kS+OB8IXw== 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=5qddK8rqx7FmoOo+9Yrx66g/fBiqfPjnMjeluwHoi50=; b=FkQOswhwmf+uNXAWvBhKwsMbgBZnK9i7mLuRQaPo+8MO7MeYToXYObCACroUcLKqC4cFVMSYDPnPEQD/N+/53E2PGK25HJt+uE/TLlnLYkGKlS44+MV6fhgQGI1XSStC5AYK4HEfAlwMXvtHoHZiMiKZbjjDnk0YE5QwmnaSyyX10LVociiWYN9BDRB71G6ASFwB+Of85PbuGFoNSxQ04ZwP8pefCcvFtTu/q0RS1xdeLB16k1/fRXenHjwm4wvjz3vxGVc2bZ2wVcCStStjlQPpadpNrgguUZ0XjuyXlipsrmXq+5vf7t41dOaWcLJ5eBu7ktanWefiL//PrKYSjQ== 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=5qddK8rqx7FmoOo+9Yrx66g/fBiqfPjnMjeluwHoi50=; b=NcIMAnQutruiw05AUJLreaIm4nyf78c/Xx9mPb5xz4wLeWjleBQrUFF0djGYxb9GCQ6OvGv3ovqpgMdWrdf6lNBgKdLFeVLXJT7hYiZKCdG/7SO0VVuklNm3Ef5jBY/6BW4EsyCd8CzoqHfswUiZQ9Fsg4RkqS0b/hUD/Qih0kv4LkR6s+UFmk7xyUWFIc3JpbPWxxS+byC1ATOx1/sOk4K2sXuuAaN7zprlzdABvbi0yk90wwSeuykCCOddMJOH1fMURjZfdZrGLtmTCEKdQNZxCYJFFzhFHwbhvBFdaNQk1btC/cvgkBn95lhkSxCUQuQfcE0f80zsYhatrNW3NA== Received: from MEYP282MB1592.AUSP282.PROD.OUTLOOK.COM (2603:10c6:220:bb::12) by SY5P282MB4805.AUSP282.PROD.OUTLOOK.COM (2603:10c6:10:26a::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7677.20; Fri, 14 Jun 2024 02:33:29 +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:33:29 +0000 From: Robin shi To: "ffmpeg-devel@ffmpeg.org" Thread-Topic: [FFmpeg-devel] [PATCH] rtp enc/dec update for vvc Thread-Index: AQHavgMnKPRZlrvFTUeRX/z5fedsZA== Date: Fri, 14 Jun 2024 02:33:29 +0000 Message-ID: Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: x-ms-exchange-messagesentrepresentingtype: 1 x-tmn: [QtWmBnTpIcMAUOZRIGn/5LVafHDvAygG] x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MEYP282MB1592:EE_|SY5P282MB4805:EE_ x-ms-office365-filtering-correlation-id: cd624642-944d-4f32-3e74-08dc8c1a6034 x-microsoft-antispam: BCL:0; ARA:14566002|9400799019|461199023|3412199020|4302099008|3430499029|102099029|440099023|1602099007|56899028|2406899034|2006899013|6106899010; x-microsoft-antispam-message-info: khz4zsg7BHRtl/6ioH5bcV+PeOP5DrxjhOKG2EbqnlN2rz7uvnOKW4L3zb83ONkGhxi2gvFrn92XeFy45+o23HnUhWgPILb30btTrrKrvhe8qMhcpiG7tOLz1vkHfkJG0tIPe2Dt+D5LRLNhaCwy7jFLPvpyk/yvcEWAQZAtXwpY3MIWpH47qCQv6QUv0DSb2quNfaANhfGrlzEJm8Y0f1ozsj4kBTpiOOXzKsbwN09FpoOmg/vwe8iebKG7ibWoDyiMR2+QooPfVJoQC/fo9rM949gfV3Vj4fQ+05pj5lsMnRt4Jg8XY9WJ11RE100C0lkhdC5NWKyH40c4YYFsq0gnlrtgKs5oZL2jN1xucji89Gsx8vn/krqaaveqnxCLp9lPgiAkR2gOd2KSx3S/KAQjEqGSSuFleOPoadgbB8nynY6xivlHpxQjTLqV4K9yXcB5ONteMnVMXlbV4SghQkBK2FWk4fEEpUQ/wFcqkOFjnaMq/VYdtLiU3y+1Q+0RUK/uZi9r1cFBKWbsa42I85G2czhbRKV31I7tHPu5y8CjVY6OHKg0aifuvLwKsxHdinJfP/KALAmOOuuXIF3zdPFEqy6vv75kKjPE0rBvTr7pl0aGnXorAj7aFvW4MgC3gVnJ7iimUJSeCBXaTvqvaCiNRoXeEokASQPr/K/FkgmOC+mhYkvREpTWWVUEuAS3ysKwifx9sTVCduoUvTY29qS2W7ugFvW0jyGR9Q4PNi7b7LHIwifHBybH+ln5vj2reJK+HePMkfFox/rZa3Y3ug== x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?gb2312?B?Ni9lODRuQVhLV3liVVNxdk0veGgrWStoVHF0L3R6b0p5QnZIQTE4SFpEWW1G?= =?gb2312?B?SzJwSGxlVEtOQUpCNnZWMXBTVUovWHBhc0ZDRENiSHEzR2wvTWhVRERMc3dR?= =?gb2312?B?Lzd0Rzc5NGpyNnFoMlVVSTJETVlIQkVRWC85OWxGYTFRUDZpNjhnVHlDZTRT?= =?gb2312?B?QUZsVkw1SmVaWFNPdkNMcktySDhzdzJvRFYvczB1VlBkcjBjajI0TkhsSTBz?= =?gb2312?B?VkJRVXBHYVFRTndYNUVvZzE4SnlVSW5xY2JORzhpYmt5clVBZ3VnR1paRlB5?= =?gb2312?B?bFo2bVF0N0JmZ1o0YkpEWVVKMVJ5U0NuaVJ3ei9NQXUyaklzeHhiYVF4UFI2?= =?gb2312?B?MHZoQWNlV3ZwZzBwbHU2V1FTYTBGZ3J3d3ZWMlk2QTVEeGlyT2lmNlVERzNJ?= =?gb2312?B?K3NGZFpJTThmRlVjdjZSUlh6TythSy9RNjZCT29rR1pwazJnZCtqbFF2SThk?= =?gb2312?B?ZVlIUkFCdjNzVnRncUdqTkhtU0g1ZHo1MGhOUW5GTURsOEJETjVYOFRpSFJQ?= =?gb2312?B?cFFvVWpVRHdqclUzYXJlLzk0Yk0zdnhQTlg0TWNvUFl3ZTAveWF3d1FqVXJP?= =?gb2312?B?MmNXMmM3akJwWFhERWhEb2lmVUkzQXFBcEMxaUhnN1J3eGFVb21NL1Brd281?= =?gb2312?B?eCtxYVgydldzamo1YnY2M3hxOTZkZzc5cXc3SHNMU3oybDBITzM2bkR4Skxa?= =?gb2312?B?VHR2ekxEOC9hNkM1bE1LR1RTYW5FRFJQYVBsaDBNaE9mdmRBR3VUWGtLQUtU?= =?gb2312?B?eks4SksrOGtDbmRQU3lUWHE4OElEc3F6RUxDT2RvT25yNXFxTFlQNk5xeXRs?= =?gb2312?B?V1MyT1d0WGFZZll4VWYyaDEvSFVZb1p1dzFMRUxoRVVDMDBiWTUxTCt1TU00?= =?gb2312?B?MytCTzlJSmJzVjVQTFBqTDB4UEhrRnRFZXRObjFIR1V3VG5PQ2NwOTJZZ0t1?= =?gb2312?B?aDJlODJObTA1U2kzbStneGFFNXZscWljT2hLaklYUjJ5c3VsV0RYOUNQQlAv?= =?gb2312?B?V2hxQUc1KzU0blgvYnB1V1pPS3RSVytZRUkwRDd5bml1bW1LYm9JS1BwT1Z0?= =?gb2312?B?VmlDc0VUemdXMGMwdlNJam9WUWFTL1FwNjhYVWhsbHdtZHliNi9BUWhsdHpX?= =?gb2312?B?K21HUkIwUzlPU3I4bHJ0MVJRUGhrWUFmSnhRMzZRRjE3R1hOY3ZQUHpCQVNR?= =?gb2312?B?RlBQQmhrMTVrVWxXZnNrNzJsWC9YdFNjbDllM0FEM1J4USs1Wml1MGU0WmtU?= =?gb2312?B?QnlmaDducEFyeFNGbWYvcDdrNlo1MHdFTGNTOGxmOXJvdUxOM29BMU4raVpa?= =?gb2312?B?VGtoYzllK1pQeFpUQStMazErUE1HdWtNbDRwU0ZWU3FYYjNWSVdZenZEMFpl?= =?gb2312?B?SCsrc2x6aXVicEh2UTB6ajhQNEc5YkVkZmlzOTBWcXpseDY2bzNoZ0lweHBu?= =?gb2312?B?UTZ3TW50amJweDEzRU5DY2VjRklxMXFVbkUxSldmTDYzMWNXcVhjbXpIMUdN?= =?gb2312?B?RlFLdnZyWXZld3h6WWVpRHczUjduSlhpcjF2UjFUWWhZbDN4OW5lQmlCVTJG?= =?gb2312?B?TGNacHkrS3l1OC9xOXFVWHRmT1lPYllWVmNsdjdCSnFTd2VhejI5RXFmVGZP?= =?gb2312?B?ZmdsMFN5YVVtcWRoN0pvbSt0SXV4OHc9PQ==?= MIME-Version: 1.0 X-OriginatorOrg: sct-15-20-4755-11-msonline-outlook-746f3.templateTenant X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MEYP282MB1592.AUSP282.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: cd624642-944d-4f32-3e74-08dc8c1a6034 X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Jun 2024 02:33:29.0258 (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: SY5P282MB4805 X-Content-Filtered-By: Mailman/MimeDel 2.1.29 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-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: U2lnbmVkLW9mZi1ieTogZnRhZnQyMDAwIDxmdGFmdDIwMDBAbXNuLmNvbT48bWFpbHRvOmZ0YWZ0 MjAwMEBtc24uY29tPg0KLS0tDQogLmdpdGlnbm9yZSAgICAgICAgICAgICAgICAgICAgIHwgICAx ICsNCiBjb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKw0KIGxpYmF2Y29kZWMv TWFrZWZpbGUgICAgICAgICAgICB8ICAgMSArDQogbGliYXZjb2RlYy9hbGxjb2RlY3MuYyAgICAg ICAgIHwgICAxICsNCiBsaWJhdmNvZGVjL2xpYnZ2ZW5jLmMgICAgICAgICAgfCA1NjYgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrDQogbGliYXZmb3JtYXQvTWFrZWZpbGUgICAgICAg ICAgIHwgICAxICsNCiBsaWJhdmZvcm1hdC9ydHBkZWMuYyAgICAgICAgICAgfCAgIDEgKw0KIGxp YmF2Zm9ybWF0L3J0cGRlY19mb3JtYXRzLmggICB8ICAgMSArDQogbGliYXZmb3JtYXQvcnRwZGVj X3Z2Yy5jICAgICAgIHwgMzQ5ICsrKysrKysrKysrKysrKysrKysrDQogbGliYXZmb3JtYXQvcnRw ZW5jLmMgICAgICAgICAgIHwgICAyICsNCiBsaWJhdmZvcm1hdC9ydHBlbmNfaDI2NF9oZXZjLmMg fCAgOTQgKysrKystDQogbGliYXZmb3JtYXQvc2RwLmMgICAgICAgICAgICAgIHwgMTgyICsrKysr KysrKysrDQogMTIgZmlsZXMgY2hhbmdlZCwgMTE5NyBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9u cygtKQ0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL2xpYnZ2ZW5jLmMNCiBjcmVhdGUg bW9kZSAxMDA2NDQgbGliYXZmb3JtYXQvcnRwZGVjX3Z2Yy5jDQoNCmRpZmYgLS1naXQgYS8uZ2l0 aWdub3JlIGIvLmdpdGlnbm9yZQ0KaW5kZXggZTgxMGQxMTEwNy4uZDc0NDFhNmNkYyAxMDA2NDQN Ci0tLSBhLy5naXRpZ25vcmUNCisrKyBiLy5naXRpZ25vcmUNCkBAIC00MSwzICs0MSw0IEBADQog L3NyYw0KIC9tYXBmaWxlDQogL3Rvb2xzL3B5dGhvbi9fX3B5Y2FjaGVfXy8NCisvYnVpbGQNClwg Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQ0KZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZp Z3VyZQ0KaW5kZXggODMyODQ0MjdkZi4uZDMzMTY4OGViNCAxMDA3NTUNCi0tLSBhL2NvbmZpZ3Vy ZQ0KKysrIGIvY29uZmlndXJlDQpAQCAtMjk2LDYgKzI5Niw3IEBAIEV4dGVybmFsIGxpYnJhcnkg c3VwcG9ydDoNCiAgIC0tZW5hYmxlLWxpYndlYnAgICAgICAgICBlbmFibGUgV2ViUCBlbmNvZGlu ZyB2aWEgbGlid2VicCBbbm9dDQogICAtLWVuYWJsZS1saWJ4MjY0ICAgICAgICAgZW5hYmxlIEgu MjY0IGVuY29kaW5nIHZpYSB4MjY0IFtub10NCiAgIC0tZW5hYmxlLWxpYngyNjUgICAgICAgICBl bmFibGUgSEVWQyBlbmNvZGluZyB2aWEgeDI2NSBbbm9dDQorICAtLWVuYWJsZS1saWJ2dmVuYyAg ICAgICAgZW5hYmxlIEguMjY2L1ZWQyBlbmNvZGluZyB2aWEgdnZlbmMgW25vXQ0KICAgLS1lbmFi bGUtbGlieGV2ZSAgICAgICAgIGVuYWJsZSBFVkMgZW5jb2RpbmcgdmlhIGxpYnhldmUgW25vXQ0K ICAgLS1lbmFibGUtbGlieGV2ZCAgICAgICAgIGVuYWJsZSBFVkMgZGVjb2RpbmcgdmlhIGxpYnhl dmQgW25vXQ0KICAgLS1lbmFibGUtbGlieGF2cyAgICAgICAgIGVuYWJsZSBBVlMgZW5jb2Rpbmcg dmlhIHhhdnMgW25vXQ0KQEAgLTE4NjcsNiArMTg2OCw3IEBAIEVYVEVSTkFMX0xJQlJBUllfR1BM X0xJU1Q9Ig0KICAgICBsaWJ2aWRzdGFiDQogICAgIGxpYngyNjQNCiAgICAgbGlieDI2NQ0KKyAg ICBsaWJ2dmVuYw0KICAgICBsaWJ4YXZzDQogICAgIGxpYnhhdnMyDQogICAgIGxpYnh2aWQNCkBA IC0zNTY5LDYgKzM1NzEsNyBAQCBsaWJ4MjY0cmdiX2VuY29kZXJfZGVwcz0ibGlieDI2NCINCiBs aWJ4MjY0cmdiX2VuY29kZXJfc2VsZWN0PSJsaWJ4MjY0X2VuY29kZXIiDQogbGlieDI2NV9lbmNv ZGVyX2RlcHM9ImxpYngyNjUiDQogbGlieDI2NV9lbmNvZGVyX3NlbGVjdD0iYXRzY19hNTMgZG92 aV9ycHVlbmMiDQorbGlidnZlbmNfZW5jb2Rlcl9kZXBzPSJsaWJ2dmVuYyINCiBsaWJ4YXZzX2Vu Y29kZXJfZGVwcz0ibGlieGF2cyINCiBsaWJ4YXZzMl9lbmNvZGVyX2RlcHM9ImxpYnhhdnMyIg0K IGxpYnhldmRfZGVjb2Rlcl9kZXBzPSJsaWJ4ZXZkIg0KQEAgLTcwNDEsNiArNzA0NCw3IEBAIGVu YWJsZWQgbGlieDI2NCAgICAgICAgICAgJiYgcmVxdWlyZV9wa2dfY29uZmlnIGxpYngyNjQgeDI2 NCAic3RkaW50LmggeDI2NC5oIiB4DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVj a19jcHBfY29uZGl0aW9uIGxpYngyNjIgeDI2NC5oICJYMjY0X01QRUcyIg0KIGVuYWJsZWQgbGli eDI2NSAgICAgICAgICAgJiYgcmVxdWlyZV9wa2dfY29uZmlnIGxpYngyNjUgeDI2NSB4MjY1Lmgg eDI2NV9hcGlfZ2V0ICYmDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlX2Nw cF9jb25kaXRpb24gbGlieDI2NSB4MjY1LmggIlgyNjVfQlVJTEQgPj0gODkiDQorZW5hYmxlZCBs aWJ2dmVuYyAgICAgICAgICAmJiByZXF1aXJlX3BrZ19jb25maWcgbGlidnZlbmMgImxpYnZ2ZW5j ID49IDEuNi4xIiAidnZlbmMvdnZlbmMuaCIgdnZlbmNfZ2V0X3ZlcnNpb24NCiBlbmFibGVkIGxp YnhhdnMgICAgICAgICAgICYmIHJlcXVpcmUgbGlieGF2cyAic3RkaW50LmggeGF2cy5oIiB4YXZz X2VuY29kZXJfZW5jb2RlICItbHhhdnMgJHB0aHJlYWRzX2V4dHJhbGlicyAkbGlibV9leHRyYWxp YnMiDQogZW5hYmxlZCBsaWJ4YXZzMiAgICAgICAgICAmJiByZXF1aXJlX3BrZ19jb25maWcgbGli eGF2czIgInhhdnMyID49IDEuMy4wIiAic3RkaW50LmggeGF2czIuaCIgeGF2czJfYXBpX2dldA0K IGVuYWJsZWQgbGlieGV2ZCAgICAgICAgICAgJiYgcmVxdWlyZV9wa2dfY29uZmlnIGxpYnhldmQg InhldmQgPj0gMC40LjEiICJ4ZXZkLmgiIHhldmRfZGVjb2RlDQpkaWZmIC0tZ2l0IGEvbGliYXZj b2RlYy9NYWtlZmlsZSBiL2xpYmF2Y29kZWMvTWFrZWZpbGUNCmluZGV4IDFhNDQzNTI5MDYuLjJl OThlMWM3MmYgMTAwNjQ0DQotLS0gYS9saWJhdmNvZGVjL01ha2VmaWxlDQorKysgYi9saWJhdmNv ZGVjL01ha2VmaWxlDQpAQCAtMTE1NSw2ICsxMTU1LDcgQEAgT0JKUy0kKENPTkZJR19MSUJXRUJQ X0FOSU1fRU5DT0RFUikgICAgICAgKz0gbGlid2VicGVuY19jb21tb24ubyBsaWJ3ZWJwZW5jX2Fu aW0NCiBPQkpTLSQoQ09ORklHX0xJQlgyNjJfRU5DT0RFUikgICAgICAgICAgICArPSBsaWJ4MjY0 Lm8NCiBPQkpTLSQoQ09ORklHX0xJQlgyNjRfRU5DT0RFUikgICAgICAgICAgICArPSBsaWJ4MjY0 Lm8NCiBPQkpTLSQoQ09ORklHX0xJQlgyNjVfRU5DT0RFUikgICAgICAgICAgICArPSBsaWJ4MjY1 Lm8NCitPQkpTLSQoQ09ORklHX0xJQlZWRU5DX0VOQ09ERVIpICAgICAgICAgICArPSBsaWJ2dmVu Yy5vDQogT0JKUy0kKENPTkZJR19MSUJYQVZTX0VOQ09ERVIpICAgICAgICAgICAgKz0gbGlieGF2 cy5vDQogT0JKUy0kKENPTkZJR19MSUJYQVZTMl9FTkNPREVSKSAgICAgICAgICAgKz0gbGlieGF2 czIubw0KIE9CSlMtJChDT05GSUdfTElCWEVWRF9ERUNPREVSKSAgICAgICAgICAgICs9IGxpYnhl dmQubw0KZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvYWxsY29kZWNzLmMgYi9saWJhdmNvZGVjL2Fs bGNvZGVjcy5jDQppbmRleCBiMTAyYTgwNjllLi43NjUwYWJlYmU0IDEwMDY0NA0KLS0tIGEvbGli YXZjb2RlYy9hbGxjb2RlY3MuYw0KKysrIGIvbGliYXZjb2RlYy9hbGxjb2RlY3MuYw0KQEAgLTgw Nyw2ICs4MDcsNyBAQCBleHRlcm4gY29uc3QgRkZDb2RlYyBmZl9saWJ4MjYyX2VuY29kZXI7DQog ZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZfbGlieDI2NF9lbmNvZGVyOw0KIGV4dGVybiBjb25zdCBG RkNvZGVjIGZmX2xpYngyNjRyZ2JfZW5jb2RlcjsNCiBleHRlcm4gRkZDb2RlYyBmZl9saWJ4MjY1 X2VuY29kZXI7DQorZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZfbGlidnZlbmNfZW5jb2RlcjsNCiBl eHRlcm4gY29uc3QgRkZDb2RlYyBmZl9saWJ4ZXZlX2VuY29kZXI7DQogZXh0ZXJuIGNvbnN0IEZG Q29kZWMgZmZfbGlieGV2ZF9kZWNvZGVyOw0KIGV4dGVybiBjb25zdCBGRkNvZGVjIGZmX2xpYnhh dnNfZW5jb2RlcjsNCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2xpYnZ2ZW5jLmMgYi9saWJhdmNv ZGVjL2xpYnZ2ZW5jLmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwLi43 OGQ0ZjU1YTJhDQotLS0gL2Rldi9udWxsDQorKysgYi9saWJhdmNvZGVjL2xpYnZ2ZW5jLmMNCkBA IC0wLDAgKzEsNTY2IEBADQorLyoNCisgKiBILjI2NiBlbmNvZGluZyB1c2luZyB0aGUgVlZlbkMg bGlicmFyeQ0KKyAqDQorICogQ29weXJpZ2h0IChDKSAyMDIyLCBUaG9tYXMgU2llZGVsDQorICoN CisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuDQorICoNCisgKiBGRm1wZWcgaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yDQorICogbW9kaWZ5IGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYw0KKyAqIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl cg0KKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLg0KKyAqDQorICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCisgKiBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQ0KKyAq IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQorICoNCisg KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy YWwgUHVibGljDQorICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0 byB0aGUgRnJlZSBTb2Z0d2FyZQ0KKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0 cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0ENCisgKi8NCisNCisj aW5jbHVkZSAiY29uZmlnX2NvbXBvbmVudHMuaCINCisNCisjaW5jbHVkZSA8dnZlbmMvdnZlbmMu aD4NCisjaW5jbHVkZSA8dnZlbmMvdnZlbmNDZmcuaD4NCisjaW5jbHVkZSA8dnZlbmMvdmVyc2lv bi5oPg0KKw0KKyNpbmNsdWRlICJhdmNvZGVjLmgiDQorI2luY2x1ZGUgImNvZGVjX2ludGVybmFs LmgiDQorI2luY2x1ZGUgImVuY29kZS5oIg0KKyNpbmNsdWRlICJpbnRlcm5hbC5oIg0KKyNpbmNs dWRlICJwYWNrZXRfaW50ZXJuYWwuaCINCisjaW5jbHVkZSAicHJvZmlsZXMuaCINCisNCisjaW5j bHVkZSAibGliYXZ1dGlsL2F2dXRpbC5oIg0KKyNpbmNsdWRlICJsaWJhdnV0aWwvbWVtLmgiDQor I2luY2x1ZGUgImxpYmF2dXRpbC9waXhkZXNjLmgiDQorI2luY2x1ZGUgImxpYmF2dXRpbC9vcHQu aCINCisjaW5jbHVkZSAibGliYXZ1dGlsL2NvbW1vbi5oIg0KKyNpbmNsdWRlICJsaWJhdnV0aWwv aW1ndXRpbHMuaCINCisjaW5jbHVkZSAibGliYXZ1dGlsL2ZyYW1lLmgiDQorI2luY2x1ZGUgImxp YmF2dXRpbC9sb2cuaCINCisNCit0eXBlZGVmIHN0cnVjdCBWVmVuQ09wdGlvbnMgew0KKyAgICBp bnQgcHJlc2V0OyAgICAgICAgICAgICAgICAgLy8gcHJlc2V0IDA6IGZhc3RlciAgNDogc2xvd2Vy DQorICAgIGludCBxcDsgICAgICAgICAgICAgICAgICAgICAvLyBxdWFudGl6YXRpb24gcGFyYW1l dGVyIDAtNjMNCisgICAgaW50IHN1YmplY3RpdmVPcHRpbWl6YXRpb247IC8vIHBlcmNlcHR1YWxs eSBtb3RpdmF0ZWQgUVAgYWRhcHRhdGlvbiwgWFBTTlIgYmFzZWQNCisgICAgaW50IGZsYWc4Yml0 Q29kaW5nOyAgICAgICAgIC8vIGVuY29kZSBpbiA4Yml0IGluc3RlYWQgb2YgMTBiaXQNCisgICAg aW50IGludHJhUmVmcmVzaFNlYzsgICAgICAgIC8vIGludHJhIHBlcmlvZC9yZWZyZXNoIGluIHNl Y29uZHMNCisgICAgaW50IGxldmVsSWRjOyAgICAgICAgICAgICAgIC8vIHZ2YyBsZXZlbF9pZGMN CisgICAgaW50IHRpZXI7ICAgICAgICAgICAgICAgICAgIC8vIHZ2YyB0aWVyDQorICAgIEFWRGlj dGlvbmFyeSAqdnZlbmNfb3B0czsNCit9IFZWZW5DT3B0aW9uczsNCisNCit0eXBlZGVmIHN0cnVj dCBWVmVuQ0NvbnRleHQgew0KKyAgICBBVkNsYXNzICAgICAgICAgKmF2X2NsYXNzOw0KKyAgICBW VmVuQ09wdGlvbnMgICAgb3B0aW9uczsgICAgICAvLyBlbmNvZGVyIG9wdGlvbnMNCisgICAgdnZl bmNFbmNvZGVyICAgICp2dmVuY0VuYzsNCisgICAgdnZlbmNBY2Nlc3NVbml0ICpwQVU7DQorICAg IGJvb2wgICAgICAgICAgICBlbmNvZGVEb25lOw0KK30gVlZlbkNDb250ZXh0Ow0KKw0KKw0KK3N0 YXRpYyBhdl9jb2xkIHZvaWQgZmZfdnZlbmNfbG9nX2NhbGxiYWNrKHZvaWQgKmN0eCwgaW50IGxl dmVsLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo YXIgKmZtdCwgdmFfbGlzdCBhcmdzKQ0KK3sNCisgICAgdnZlbmNfY29uZmlnIHBhcmFtczsNCisg ICAgdnZlbmNFbmNvZGVyICp2dmVuY0VuYyA9ICh2dmVuY0VuY29kZXIgKiljdHg7DQorICAgIGlm ICh2dmVuY0VuYyl7DQorICAgICAgICB2dmVuY19jb25maWdfZGVmYXVsdCgmcGFyYW1zKTsNCisg ICAgICAgIHZ2ZW5jX2dldF9jb25maWcodnZlbmNFbmMsICZwYXJhbXMpOw0KKyAgICAgICAgaWYg KChpbnQpcGFyYW1zLm1fdmVyYm9zaXR5ID49IGxldmVsKQ0KKyAgICAgICAgICAgIHZmcHJpbnRm KGxldmVsID09IDEgPyBzdGRlcnIgOiBzdGRvdXQsIGZtdCwgYXJncyk7DQorICAgIH0NCit9DQor DQorc3RhdGljIHZvaWQgZmZfdnZlbmNfc2V0X3ZlcmJvc2l0b3J5KHZ2ZW5jX2NvbmZpZyogcGFy YW1zICkNCit7DQorICAgIHBhcmFtcy0+bV92ZXJib3NpdHkgPSBWVkVOQ19WRVJCT1NFOw0KKyAg ICBpZiAoYXZfbG9nX2dldF9sZXZlbCgpID49IEFWX0xPR19ERUJVRykNCisgICAgICAgIHBhcmFt cy0+bV92ZXJib3NpdHkgPSBWVkVOQ19ERVRBSUxTOw0KKyAgICBlbHNlIGlmIChhdl9sb2dfZ2V0 X2xldmVsKCkgPj0gQVZfTE9HX1ZFUkJPU0UpDQorICAgICAgICBwYXJhbXMtPm1fdmVyYm9zaXR5 ID0gVlZFTkNfTk9USUNFOyAgICAgIC8vIG91dHB1dCBwZXIgcGljdHVyZSBpbmZvDQorICAgIGVs c2UgaWYgKGF2X2xvZ19nZXRfbGV2ZWwoKSA+PSBBVl9MT0dfSU5GTykNCisgICAgICAgIHBhcmFt cy0+bV92ZXJib3NpdHkgPSBWVkVOQ19XQVJOSU5HOyAgICAgLy8gZmZtcGVnIGRlZmF1bHQgZmZt cGVnIGxvZ2xldmVsDQorICAgIGVsc2UNCisgICAgICAgIHBhcmFtcy0+bV92ZXJib3NpdHkgPSBW VkVOQ19TSUxFTlQ7DQorfQ0KKw0KK3N0YXRpYyBpbnQgZmZfdnZlbmNfc2V0X3BpY19mb3JtYXQo QVZDb2RlY0NvbnRleHQgKmF2Y3R4LCB2dmVuY19jb25maWcqICBwYXJhbXMgKQ0KK3sNCisgICAg VlZlbkNDb250ZXh0ICpzID0oVlZlbkNDb250ZXh0ICopIGF2Y3R4LT5wcml2X2RhdGE7DQorDQor ICAgIHBhcmFtcy0+bV9pbnRlcm5DaHJvbWFGb3JtYXQgPSBWVkVOQ19DSFJPTUFfNDIwOw0KKyAg ICBwYXJhbXMtPm1faW5wdXRCaXREZXB0aFswXSAgID0gMTA7DQorDQorICAgIGlmIChhdmN0eC0+ cGl4X2ZtdCAhPSBBVl9QSVhfRk1UX1lVVjQyMFAxMExFKXsNCisgICAgICAgIGF2X2xvZyhhdmN0 eCwgQVZfTE9HX0VSUk9SLA0KKyAgICAgICAgICAgICAgICJ1bnN1cHBvcnRlZCBwaXhlbCBmb3Jt YXQgJXMsIGN1cnJlbnRseSBvbmx5IHN1cHBvcnQgZm9yIHl1djQyMHAxMGxlXG4iLA0KKyAgICAg ICAgICAgICAgICBhdl9nZXRfcGl4X2ZtdF9uYW1lKGF2Y3R4LT5waXhfZm10KSk7DQorICAgICAg ICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOw0KKyAgICB9DQorDQorICAgIGlmIChzLT5vcHRpb25z LmZsYWc4Yml0Q29kaW5nKSB7DQorI2lmIFZWRU5DX1ZFUlNJT05fTUFKT1IgPiAxIHx8IChWVkVO Q19WRVJTSU9OX01BSk9SID09IDEgJiYgVlZFTkNfVkVSU0lPTl9NSU5PUiA+IDkpIHx8IChWVkVO Q19WRVJTSU9OX01BSk9SID09IDEgJiYgVlZFTkNfVkVSU0lPTl9NSU5PUiA+PSA5ICYmIFZWRU5D X1ZFUlNJT05fUEFUQ0ggPj0gMSkNCisgICAgICAgICAgICBwYXJhbXMtPm1faW50ZXJuYWxCaXRE ZXB0aFswXSA9IDg7DQorI2Vsc2UNCisgICAgICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19F UlJPUiwNCisgICAgICAgICAgICAgICAgInVuc3VwcG9ydGVkIDhiaXQgY29kaW5nIG1vZGUuIDhi aXQgY29kaW5nIG5lZWRzIGF0IGxlYXN0IHZ2ZW5jIHZlcnNpb24gPj0gMS45LjEgIg0KKyAgICAg ICAgICAgICAgICAiKGN1cnJlbnQgdmVyc2lvbiAlcylcbiIsIHZ2ZW5jX2dldF92ZXJzaW9uKCkg KTsNCisgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOw0KKyNlbmRpZg0KKyAgICB9 DQorICAgIHJldHVybiAwOw0KK30NCisNCitzdGF0aWMgdm9pZCBmZl92dmVuY19zZXRfY29sb3Jf Zm9ybWF0KEFWQ29kZWNDb250ZXh0ICphdmN0eCwgdnZlbmNfY29uZmlnKiBwYXJhbXMgKQ0KK3sN CisgICAgaWYgKGF2Y3R4LT5jb2xvcl9wcmltYXJpZXMgIT0gQVZDT0xfUFJJX1VOU1BFQ0lGSUVE KQ0KKyAgICAgICAgcGFyYW1zLT5tX2NvbG91clByaW1hcmllcyA9IChpbnQpIGF2Y3R4LT5jb2xv cl9wcmltYXJpZXM7DQorICAgIGlmIChhdmN0eC0+Y29sb3JzcGFjZSAhPSBBVkNPTF9TUENfVU5T UEVDSUZJRUQpDQorICAgICAgICBwYXJhbXMtPm1fbWF0cml4Q29lZmZpY2llbnRzID0gKGludCkg YXZjdHgtPmNvbG9yc3BhY2U7DQorICAgIGlmIChhdmN0eC0+Y29sb3JfdHJjICE9IEFWQ09MX1RS Q19VTlNQRUNJRklFRCkgew0KKyAgICAgICAgcGFyYW1zLT5tX3RyYW5zZmVyQ2hhcmFjdGVyaXN0 aWNzID0gKGludCkgYXZjdHgtPmNvbG9yX3RyYzsNCisNCisgICAgICAgIGlmIChhdmN0eC0+Y29s b3JfdHJjID09IEFWQ09MX1RSQ19TTVBURTIwODQpDQorICAgICAgICAgICAgcGFyYW1zLT5tX0hk ck1vZGUgPSAoYXZjdHgtPmNvbG9yX3ByaW1hcmllcyA9PSBBVkNPTF9QUklfQlQyMDIwKSA/DQor ICAgICAgICAgICAgICAgIFZWRU5DX0hEUl9QUV9CVDIwMjAgOiBWVkVOQ19IRFJfUFE7DQorICAg ICAgICBlbHNlIGlmIChhdmN0eC0+Y29sb3JfdHJjID09IEFWQ09MX1RSQ19CVDIwMjBfMTANCisg ICAgICAgICAgICAgICAgIHx8IGF2Y3R4LT5jb2xvcl90cmMgPT0gQVZDT0xfVFJDX0FSSUJfU1RE X0I2NykNCisgICAgICAgICAgICBwYXJhbXMtPm1fSGRyTW9kZSA9IChhdmN0eC0+Y29sb3JfdHJj ID09IEFWQ09MX1RSQ19CVDIwMjBfMTAgfHwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGF2Y3R4LT5jb2xvcl9wcmltYXJpZXMgPT0gQVZDT0xfUFJJX0JUMjAyMCB8fA0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZjdHgtPmNvbG9yc3BhY2UgPT0gQVZDT0xfU1BD X0JUMjAyMF9OQ0wgfHwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2Y3R4LT5j b2xvcnNwYWNlID09IEFWQ09MX1NQQ19CVDIwMjBfQ0wpID8NCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgVlZFTkNfSERSX0hMR19CVDIwMjAgOiBWVkVOQ19IRFJfSExHOw0KKyAgICB9 DQorDQorICAgIGlmIChwYXJhbXMtPm1fSGRyTW9kZSA9PSBWVkVOQ19IRFJfT0ZGDQorICAgICAg ICAmJiAoYXZjdHgtPmNvbG9yX3ByaW1hcmllcyAhPSBBVkNPTF9QUklfVU5TUEVDSUZJRUQNCisg ICAgICAgICAgICB8fCBhdmN0eC0+Y29sb3JzcGFjZSAhPSBBVkNPTF9TUENfVU5TUEVDSUZJRUQp KSB7DQorICAgICAgICBwYXJhbXMtPm1fdnVpUGFyYW1ldGVyc1ByZXNlbnQgPSAxOw0KKyAgICAg ICAgcGFyYW1zLT5tX2NvbG91ckRlc2NyaXB0aW9uUHJlc2VudCA9IHRydWU7DQorICAgIH0NCit9 DQorDQorc3RhdGljIHZvaWQgZmZfdnZlbmNfc2V0X2ZyYW1lcmF0ZShBVkNvZGVjQ29udGV4dCAq YXZjdHgsIHZ2ZW5jX2NvbmZpZyogIHBhcmFtcyApDQorew0KKyAgICBwYXJhbXMtPm1fRnJhbWVS YXRlID0gYXZjdHgtPnRpbWVfYmFzZS5kZW47DQorICAgIHBhcmFtcy0+bV9GcmFtZVNjYWxlID0g YXZjdHgtPnRpbWVfYmFzZS5udW07DQorDQorRkZfRElTQUJMRV9ERVBSRUNBVElPTl9XQVJOSU5H Uw0KKw0KKyNpZiBGRl9BUElfVElDS1NfUEVSX0ZSQU1FDQorICAgIGlmIChhdmN0eC0+dGlja3Nf cGVyX2ZyYW1lID09IDEpIHsNCisjZW5kaWYNCisgICAgICAgIHBhcmFtcy0+bV9UaWNrc1BlclNl Y29uZCA9IC0xOyAgIC8vIGF1dG8gbW9kZSBmb3IgdGlja3MgcGVyIGZyYW1lID0gMQ0KKyNpZiBG Rl9BUElfVElDS1NfUEVSX0ZSQU1FDQorICAgIH0gZWxzZSB7DQorICAgICAgICBwYXJhbXMtPm1f VGlja3NQZXJTZWNvbmQgPQ0KKyAgICAgICAgICAgIGNlaWwoKGF2Y3R4LT50aW1lX2Jhc2UuZGVu IC8gKGRvdWJsZSkgYXZjdHgtPnRpbWVfYmFzZS5udW0pICoNCisgICAgICAgICAgICAgICAgIChk b3VibGUpIGF2Y3R4LT50aWNrc19wZXJfZnJhbWUpOw0KKyAgICB9DQorI2VuZGlmDQorRkZfRU5B QkxFX0RFUFJFQ0FUSU9OX1dBUk5JTkdTDQorfQ0KKw0KK3N0YXRpYyBpbnQgZmZfdnZlbmNfcGFy c2VfdnZlbmNfcGFyYW1zKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgdnZlbmNfY29uZmlnKiBwYXJh bXMsIGNoYXIqIHN0YXRzZmlsZSApDQorew0KKyAgICBpbnQgcGFyc2VfcmV0LCByZXQ7DQorICAg IFZWZW5DQ29udGV4dCAqczsNCisgICAgQVZEaWN0aW9uYXJ5RW50cnkgKmVuID0gTlVMTDsNCisg ICAgcyA9KFZWZW5DQ29udGV4dCAqKSBhdmN0eC0+cHJpdl9kYXRhOw0KKyAgICByZXQgPSAwOw0K Kw0KKyAgICB3aGlsZSAoKGVuID0gYXZfZGljdF9nZXQocy0+b3B0aW9ucy52dmVuY19vcHRzLCAi IiwgZW4sDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBVl9ESUNUX0lHTk9SRV9TVUZG SVgpKSkgew0KKyAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfREVCVUcsICJ2dmVuY19zZXRf cGFyYW06ICclczolcydcbiIsIGVuLT5rZXksDQorICAgICAgICAgICAgICAgZW4tPnZhbHVlKTsN CisgICAgICAgIHBhcnNlX3JldCA9IHZ2ZW5jX3NldF9wYXJhbShwYXJhbXMsIGVuLT5rZXksIGVu LT52YWx1ZSk7DQorICAgICAgICBzd2l0Y2ggKHBhcnNlX3JldCkgew0KKyAgICAgICAgY2FzZSBW VkVOQ19QQVJBTV9CQURfTkFNRToNCisgICAgICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19F UlJPUiwgIlVua25vd24gdnZlbmMgb3B0aW9uOiAlcy5cbiIsDQorICAgICAgICAgICAgICAgICAg IGVuLT5rZXkpOw0KKyAgICAgICAgICAgIHJldCA9IEFWRVJST1IoRUlOVkFMKTsNCisgICAgICAg ICAgICBicmVhazsNCisgICAgICAgIGNhc2UgVlZFTkNfUEFSQU1fQkFEX1ZBTFVFOg0KKyAgICAg ICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLA0KKyAgICAgICAgICAgICAgICAgICAi SW52YWxpZCB2dmVuYyB2YWx1ZSBmb3IgJXM6ICVzLlxuIiwgZW4tPmtleSwgZW4tPnZhbHVlKTsN CisgICAgICAgICAgICByZXQgPSBBVkVSUk9SKEVJTlZBTCk7DQorICAgICAgICAgICAgYnJlYWs7 DQorICAgICAgICBkZWZhdWx0Og0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKw0K KyAgICAgICAgaWYgKG1lbWNtcChlbi0+a2V5LCAicmNzdGF0c2ZpbGUiLCAxMSkgPT0gMCB8fA0K KyAgICAgICAgICAgIG1lbWNtcChlbi0+a2V5LCAiUkNTdGF0c0ZpbGUiLCAxMSkgPT0gMCkgew0K KyAgICAgICAgICAgIHN0cm5jcHkoc3RhdHNmaWxlLCBlbi0+dmFsdWUsIHN0cmxlbihzdGF0c2Zp bGUpKTsNCisgICAgICAgICAgICBzdGF0c2ZpbGVbc3RybGVuKHN0YXRzZmlsZSldID0gJ1wwJzsN CisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gcmV0Ow0KK30NCisNCitzdGF0aWMgaW50 IGZmX3Z2ZW5jX3NldF9yY19tb2RlKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgdnZlbmNfY29uZmln KiAgcGFyYW1zKQ0KK3sNCisgICAgaWYgKHBhcmFtcy0+bV9SQ1Bhc3MgIT0gLTEgJiYgcGFyYW1z LT5tX1JDTnVtUGFzc2VzID09IDEpDQorICAgICAgICBwYXJhbXMtPm1fUkNOdW1QYXNzZXMgPSAy OyAgICAgICAvKiBlbmFibGUgMnBhc3MgbW9kZSAqLw0KKw0KKyAgICBpZihhdmN0eC0+cmNfbWF4 X3JhdGUpIHsNCisjaWYgVlZFTkNfVkVSU0lPTl9NQUpPUiA+IDEgfHwgKFZWRU5DX1ZFUlNJT05f TUFKT1IgPT0gMSAmJiBWVkVOQ19WRVJTSU9OX01JTk9SID4gOCkNCisgICAgICAgIHBhcmFtcy0+ bV9SQ01heEJpdHJhdGUgPSBhdmN0eC0+cmNfbWF4X3JhdGU7DQorI2VuZGlmDQorDQorI2lmIFZW RU5DX1ZFUlNJT05fTUFKT1IgPT0gMSAmJiBWVkVOQ19WRVJTSU9OX01JTk9SIDwgMTENCisgICAg ICAgIC8qIHJjX21heF9yYXRlIHdpdGhvdXQgYSBiaXRfcmF0ZSBlbmFibGVzIGNhcHBlZCBDUUYg bW9kZS4NCisgICAgICAgIChRUCArIHN1YmouIG9wdGltaXphdGlvbiArIG1heC4gYml0cmF0ZSkg Ki8NCisgICAgICAgIGlmKCFhdmN0eC0+Yml0X3JhdGUpIHsNCisgICAgICAgICAgICBhdl9sb2co IGF2Y3R4LCBBVl9MT0dfRVJST1IsDQorICAgICAgICAgICAgICAgICJDYXBwZWQgQ29uc3RhbnQg UXVhbGl0eSBGYWN0b3IgbW9kZSAoY2FwcGVkIENRRikgbmVlZHMgYXQgIg0KKyAgICAgICAgICAg ICAgICAibGVhc3QgdnZlbmMgdmVyc2lvbiA+PSAxLjExLjAgKGN1cnJlbnQgdmVyc2lvbiAlcylc biIsDQorICAgICAgICAgICAgICAgIHZ2ZW5jX2dldF92ZXJzaW9uKCkpOw0KKyAgICAgICAgICAg IHJldHVybiBBVkVSUk9SKEVJTlZBTCk7DQorICAgICAgICB9DQorI2VuZGlmDQorICAgIH0NCisg ICAgcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgZmZfdnZlbmNfaW5pdF9leHRyYWRhdGEo QVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBWVmVuQ0NvbnRleHQgKnMpDQorew0KKyAgICBpbnQgcmV0 Ow0KKyAgICBpZiAoYXZjdHgtPmZsYWdzICYgQVZfQ09ERUNfRkxBR19HTE9CQUxfSEVBREVSKSB7 DQorICAgICAgICByZXQgPSB2dmVuY19nZXRfaGVhZGVycyhzLT52dmVuY0VuYywgcy0+cEFVKTsN CisgICAgICAgIGlmICgwICE9IHJldCkgew0KKyAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZf TE9HX0VSUk9SLA0KKyAgICAgICAgICAgICAgICAgICAiY2Fubm90IGdldCBoZWFkZXJzIChTUFMs UFBTKSBmcm9tIHZ2YyBlbmNvZGVyKHZ2ZW5jKTogJXNcbiIsDQorICAgICAgICAgICAgICAgICAg IHZ2ZW5jX2dldF9sYXN0X2Vycm9yKHMtPnZ2ZW5jRW5jKSk7DQorICAgICAgICAgICAgdnZlbmNf ZW5jb2Rlcl9jbG9zZShzLT52dmVuY0VuYyk7DQorICAgICAgICAgICAgcmV0dXJuIEFWRVJST1Io RUlOVkFMKTsNCisgICAgICAgIH0NCisNCisgICAgICAgIGlmIChzLT5wQVUtPnBheWxvYWRVc2Vk U2l6ZSA8PSAwKSB7DQorICAgICAgICAgICAgdnZlbmNfZW5jb2Rlcl9jbG9zZShzLT52dmVuY0Vu Yyk7DQorICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7DQorICAgICAgICB9 DQorDQorICAgICAgICBhdmN0eC0+ZXh0cmFkYXRhX3NpemUgPSBzLT5wQVUtPnBheWxvYWRVc2Vk U2l6ZTsNCisgICAgICAgIGF2Y3R4LT5leHRyYWRhdGEgPQ0KKyAgICAgICAgICAgIGF2X21hbGxv Y3ooYXZjdHgtPmV4dHJhZGF0YV9zaXplICsgQVZfSU5QVVRfQlVGRkVSX1BBRERJTkdfU0laRSk7 DQorICAgICAgICBpZiAoIWF2Y3R4LT5leHRyYWRhdGEpIHsNCisgICAgICAgICAgICBhdl9sb2co YXZjdHgsIEFWX0xPR19FUlJPUiwNCisgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBhbGxvY2F0 ZSBWVkMgaGVhZGVyIG9mIHNpemUgJWQuXG4iLA0KKyAgICAgICAgICAgICAgICAgICBhdmN0eC0+ ZXh0cmFkYXRhX3NpemUpOw0KKyAgICAgICAgICAgIHZ2ZW5jX2VuY29kZXJfY2xvc2Uocy0+dnZl bmNFbmMpOw0KKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7DQorICAgICAgICB9 DQorDQorICAgICAgICBtZW1jcHkoYXZjdHgtPmV4dHJhZGF0YSwgcy0+cEFVLT5wYXlsb2FkLCBh dmN0eC0+ZXh0cmFkYXRhX3NpemUpOw0KKyAgICAgICAgbWVtc2V0KGF2Y3R4LT5leHRyYWRhdGEg KyBhdmN0eC0+ZXh0cmFkYXRhX3NpemUsIDAsDQorICAgICAgICAgICAgICAgQVZfSU5QVVRfQlVG RkVSX1BBRERJTkdfU0laRSk7DQorICAgIH0NCisgICAgcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRp YyBhdl9jb2xkIGludCBmZl92dmVuY19lbmNvZGVfaW5pdChBVkNvZGVjQ29udGV4dCAqYXZjdHgp DQorew0KKyAgICBpbnQgcmV0Ow0KKyAgICBpbnQgZnJhbWVyYXRlLCBxcDsNCisgICAgVlZlbkND b250ZXh0ICpzOw0KKyAgICB2dmVuY19jb25maWcgcGFyYW1zOw0KKyAgICB2dmVuY1ByZXNldE1v ZGUgcHJlc2V0Ow0KKyAgICBjaGFyIHN0YXRzZmlsZVsxMDI0XSA9ICJ2dmVuYy1yY3N0YXRzLmpz b24iOw0KKw0KKyAgICBzID0gKFZWZW5DQ29udGV4dCAqKSBhdmN0eC0+cHJpdl9kYXRhOw0KKyAg ICBxcCA9IHMtPm9wdGlvbnMucXA7DQorICAgIHByZXNldCA9ICh2dmVuY1ByZXNldE1vZGUpIHMt Pm9wdGlvbnMucHJlc2V0Ow0KKw0KKyAgICBpZiAoYXZjdHgtPmZsYWdzICYgQVZfQ09ERUNfRkxB R19JTlRFUkxBQ0VEX0RDVCkgew0KKyAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1Is DQorICAgICAgICAgICAgICAgImZmX3Z2ZW5jX2VuY29kZV9pbml0Ojppbml0KCkgaW50ZXJsYWNl ZCBlbmNvZGluZyBub3Qgc3VwcG9ydGVkIHlldFxuIik7DQorICAgICAgICByZXR1cm4gQVZFUlJP Ul9JTlZBTElEREFUQTsNCisgICAgfQ0KKw0KKyAgICB2dmVuY19jb25maWdfZGVmYXVsdCgmcGFy YW1zKTsNCisNCisgICAgZnJhbWVyYXRlID0gYXZjdHgtPnRpbWVfYmFzZS5kZW4gLyBhdmN0eC0+ dGltZV9iYXNlLm51bTsNCisgICAgdnZlbmNfaW5pdF9kZWZhdWx0KCZwYXJhbXMsIGF2Y3R4LT53 aWR0aCwgYXZjdHgtPmhlaWdodCwgZnJhbWVyYXRlLA0KKyAgICAgICAgICAgICAgICAgICAgICAg KHFwID49IDApID8gMCA6IGF2Y3R4LT5iaXRfcmF0ZSwgKHFwIDwgMCkgPyAzMiA6IHFwLCBwcmVz ZXQpOw0KKw0KKyAgICBmZl92dmVuY19zZXRfdmVyYm9zaXRvcnkoJnBhcmFtcyk7DQorDQorICAg IGlmIChhdmN0eC0+dGhyZWFkX2NvdW50ID4gMCkNCisgICAgICAgIHBhcmFtcy5tX251bVRocmVh ZHMgPSBhdmN0eC0+dGhyZWFkX2NvdW50Ow0KKw0KKyAgICAvKiBHT1Agc2V0dGluZ3MgKElEUi9D UkEpICovDQorICAgIGlmIChhdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX0NMT1NFRF9HT1Ap DQorICAgICAgICBwYXJhbXMubV9EZWNvZGluZ1JlZnJlc2hUeXBlID0gVlZFTkNfRFJUX0lEUjsN CisNCisgICAgaWYgKGF2Y3R4LT5nb3Bfc2l6ZSA9PSAxKSB7DQorICAgICAgICBwYXJhbXMubV9H T1BTaXplID0gMTsNCisgICAgICAgIHBhcmFtcy5tX0ludHJhUGVyaW9kID0gMTsNCisgICAgfSBl bHNlIHsNCisgICAgICAgIHBhcmFtcy5tX0ludHJhUGVyaW9kU2VjID0gcy0+b3B0aW9ucy5pbnRy YVJlZnJlc2hTZWM7DQorICAgIH0NCisNCisgICAgcGFyYW1zLm1fQWNjZXNzVW5pdERlbGltaXRl ciA9IHRydWU7DQorICAgIHBhcmFtcy5tX1JDTnVtUGFzc2VzID0gMTsNCisNCisgICAgcGFyYW1z Lm1fdXNlUGVyY2VwdFFQQSA9IHMtPm9wdGlvbnMuc3ViamVjdGl2ZU9wdGltaXphdGlvbjsNCisg ICAgcGFyYW1zLm1fbGV2ZWwgICAgICAgICA9ICh2dmVuY0xldmVsKSBzLT5vcHRpb25zLmxldmVs SWRjOw0KKyAgICBwYXJhbXMubV9sZXZlbFRpZXIgICAgID0gKHZ2ZW5jVGllcikgcy0+b3B0aW9u cy50aWVyOw0KKw0KKyAgICBmZl92dmVuY19zZXRfZnJhbWVyYXRlKGF2Y3R4LCAmcGFyYW1zKTsN CisNCisgICAgcmV0ID0gZmZfdnZlbmNfc2V0X3BpY19mb3JtYXQoYXZjdHgsICZwYXJhbXMpOw0K KyAgICBpZiggcmV0ICE9IDAgKQ0KKyAgICAgICAgcmV0dXJuIHJldDsNCisNCisgICAgZmZfdnZl bmNfc2V0X2NvbG9yX2Zvcm1hdChhdmN0eCwgJnBhcmFtcyk7DQorDQorICAgIHJldCA9IGZmX3Z2 ZW5jX3BhcnNlX3Z2ZW5jX3BhcmFtcyhhdmN0eCwgJnBhcmFtcywgJnN0YXRzZmlsZVswXSk7DQor ICAgIGlmKCByZXQgIT0gMCApDQorICAgICAgICByZXR1cm4gcmV0Ow0KKw0KKw0KKyAgICByZXQg PSBmZl92dmVuY19zZXRfcmNfbW9kZShhdmN0eCwgJnBhcmFtcyk7DQorICAgIGlmKCByZXQgIT0g MCApDQorICAgICAgICByZXR1cm4gcmV0Ow0KKw0KKyAgICBzLT52dmVuY0VuYyA9IHZ2ZW5jX2Vu Y29kZXJfY3JlYXRlKCk7DQorICAgIGlmIChOVUxMID09IHMtPnZ2ZW5jRW5jKSB7DQorICAgICAg ICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgImNhbm5vdCBjcmVhdGUgdnZjIGVuY29kZXIg KHZ2ZW5jKVxuIik7DQorICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOw0KKyAgICB9DQor DQorICAgIHZ2ZW5jX3NldF9tc2dfY2FsbGJhY2soJnBhcmFtcywgcy0+dnZlbmNFbmMsIGZmX3Z2 ZW5jX2xvZ19jYWxsYmFjayk7DQorICAgIHJldCA9IHZ2ZW5jX2VuY29kZXJfb3BlbihzLT52dmVu Y0VuYywgJnBhcmFtcyk7DQorICAgIGlmICgwICE9IHJldCkgew0KKyAgICAgICAgYXZfbG9nKGF2 Y3R4LCBBVl9MT0dfRVJST1IsICJjYW5ub3Qgb3BlbiB2dmMgZW5jb2RlciAodnZlbmMpOiAlc1xu IiwNCisgICAgICAgICAgICAgICB2dmVuY19nZXRfbGFzdF9lcnJvcihzLT52dmVuY0VuYykpOw0K KyAgICAgICAgdnZlbmNfZW5jb2Rlcl9jbG9zZShzLT52dmVuY0VuYyk7DQorICAgICAgICByZXR1 cm4gQVZFUlJPUihFSU5WQUwpOw0KKyAgICB9DQorDQorICAgIHZ2ZW5jX2dldF9jb25maWcocy0+ dnZlbmNFbmMsICZwYXJhbXMpOyAgICAgLyogZ2V0IHRoZSBhZGFwdGVkIGNvbmZpZyAqLw0KKw0K KyAgICBhdl9sb2coYXZjdHgsIGF2X2xvZ19nZXRfbGV2ZWwoKSwgInZ2ZW5jIHZlcnNpb246ICVz XG4iLCB2dmVuY19nZXRfdmVyc2lvbigpKTsNCisgICAgYXZfbG9nKGF2Y3R4LCBhdl9sb2dfZ2V0 X2xldmVsKCksICIlc1xuIiwNCisgICAgICAgICAgICB2dmVuY19nZXRfY29uZmlnX2FzX3N0cmlu ZygmcGFyYW1zLCBwYXJhbXMubV92ZXJib3NpdHkpKTsNCisNCisgICAgaWYgKHBhcmFtcy5tX1JD TnVtUGFzc2VzID09IDIpIHsNCisgICAgICAgIHJldCA9IHZ2ZW5jX2luaXRfcGFzcyhzLT52dmVu Y0VuYywgcGFyYW1zLm1fUkNQYXNzIC0gMSwgJnN0YXRzZmlsZVswXSk7DQorICAgICAgICBpZiAo MCAhPSByZXQpIHsNCisgICAgICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwNCisg ICAgICAgICAgICAgICAgICAgImNhbm5vdCBpbml0IHBhc3MgJWQgZm9yIHZ2YyBlbmNvZGVyICh2 dmVuYyk6ICVzXG4iLA0KKyAgICAgICAgICAgICAgICAgICBwYXJhbXMubV9SQ1Bhc3MsIHZ2ZW5j X2dldF9sYXN0X2Vycm9yKHMtPnZ2ZW5jRW5jKSk7DQorICAgICAgICAgICAgdnZlbmNfZW5jb2Rl cl9jbG9zZShzLT52dmVuY0VuYyk7DQorICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFM KTsNCisgICAgICAgIH0NCisgICAgfQ0KKw0KKyAgICBzLT5wQVUgPSB2dmVuY19hY2Nlc3NVbml0 X2FsbG9jKCk7DQorICAgIGlmKCAhcy0+cEFVICl7DQorICAgICAgICBhdl9sb2coYXZjdHgsIEFW X0xPR19GQVRBTCwgImNhbm5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIEFVIHBheWxvYWRcbiIpOw0K KyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsNCisgICAgfQ0KKyAgICB2dmVuY19hY2Nl c3NVbml0X2FsbG9jX3BheWxvYWQocy0+cEFVLCBhdmN0eC0+d2lkdGggKiBhdmN0eC0+aGVpZ2h0 KTsNCisgICAgaWYoICFzLT5wQVUgKXsNCisgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0ZB VEFMLCAiY2Fubm90IGFsbG9jYXRlIHBheWxvYWQgbWVtb3J5IG9mIHNpemUgJWRcbiIsDQorICAg ICAgICAgICAgICAgIGF2Y3R4LT53aWR0aCAqIGF2Y3R4LT5oZWlnaHQgKTsNCisgICAgICAgIHJl dHVybiBBVkVSUk9SKEVOT01FTSk7DQorICAgIH0NCisNCisgICAgcmV0ID0gZmZfdnZlbmNfaW5p dF9leHRyYWRhdGEoYXZjdHgsIHMpOw0KKyAgICBpZiggcmV0ICE9IDAgKQ0KKyAgICAgICAgcmV0 dXJuIHJldDsNCisNCisgICAgcy0+ZW5jb2RlRG9uZSA9IGZhbHNlOw0KKyAgICByZXR1cm4gMDsN Cit9DQorDQorc3RhdGljIGF2X2NvbGQgaW50IGZmX3Z2ZW5jX2VuY29kZV9jbG9zZShBVkNvZGVj Q29udGV4dCAqIGF2Y3R4KQ0KK3sNCisgICAgVlZlbkNDb250ZXh0ICpzID0gKFZWZW5DQ29udGV4 dCAqKSBhdmN0eC0+cHJpdl9kYXRhOw0KKyAgICBpZiAocy0+dnZlbmNFbmMpIHsNCisgICAgICAg IGlmIChhdl9sb2dfZ2V0X2xldmVsKCkgPj0gQVZfTE9HX1ZFUkJPU0UpDQorICAgICAgICAgICAg dnZlbmNfcHJpbnRfc3VtbWFyeShzLT52dmVuY0VuYyk7DQorDQorICAgICAgICBpZiAoMCAhPSB2 dmVuY19lbmNvZGVyX2Nsb3NlKHMtPnZ2ZW5jRW5jKSkgew0KKyAgICAgICAgICAgIGF2X2xvZyhh dmN0eCwgQVZfTE9HX0VSUk9SLCAiY2Fubm90IGNsb3NlIHZ2ZW5jXG4iKTsNCisgICAgICAgICAg ICByZXR1cm4gLTE7DQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgdnZlbmNfYWNjZXNzVW5p dF9mcmVlKHMtPnBBVSwgdHJ1ZSk7DQorDQorICAgIHJldHVybiAwOw0KK30NCisNCitzdGF0aWMg YXZfY29sZCBpbnQgZmZfdnZlbmNfZW5jb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCwg QVZQYWNrZXQgKnBrdCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IEFWRnJhbWUgKmZyYW1lLCBpbnQgKmdvdF9wYWNrZXQpDQorew0KKyAgICBWVmVuQ0Nv bnRleHQgKnMgPSAoVlZlbkNDb250ZXh0ICopIGF2Y3R4LT5wcml2X2RhdGE7DQorICAgIHZ2ZW5j WVVWQnVmZmVyICpweXV2YnVmOw0KKyAgICB2dmVuY1lVVkJ1ZmZlciB5dXZidWY7DQorICAgIGlu dCBwaWN0X3R5cGU7DQorICAgIGludCByZXQ7DQorDQorICAgIHB5dXZidWYgPSBOVUxMOw0KKyAg ICBpZiAoZnJhbWUpIHsNCisgICAgICAgIGlmIChhdmN0eC0+cGl4X2ZtdCA9PSBBVl9QSVhfRk1U X1lVVjQyMFAxMExFKSB7DQorICAgICAgICAgICAgdnZlbmNfWVVWQnVmZmVyX2RlZmF1bHQoJnl1 dmJ1Zik7DQorICAgICAgICAgICAgeXV2YnVmLnBsYW5lc1swXS5wdHIgPSAoaW50MTZfdCAqKSBm cmFtZS0+ZGF0YVswXTsNCisgICAgICAgICAgICB5dXZidWYucGxhbmVzWzFdLnB0ciA9IChpbnQx Nl90ICopIGZyYW1lLT5kYXRhWzFdOw0KKyAgICAgICAgICAgIHl1dmJ1Zi5wbGFuZXNbMl0ucHRy ID0gKGludDE2X3QgKikgZnJhbWUtPmRhdGFbMl07DQorDQorICAgICAgICAgICAgeXV2YnVmLnBs YW5lc1swXS53aWR0aCA9IGZyYW1lLT53aWR0aDsNCisgICAgICAgICAgICB5dXZidWYucGxhbmVz WzBdLmhlaWdodCA9IGZyYW1lLT5oZWlnaHQ7DQorICAgICAgICAgICAgLyogc3RyaWRlIGlzIHVz ZWQgaW4gMTZiaXRzYW1wbGVzICgxNmJpdCkgaW4gdnZlbmMsIGZmbXBlZyB1c2VzIHN0cmlkZSBp biBieXRlcyAqLw0KKyAgICAgICAgICAgIHl1dmJ1Zi5wbGFuZXNbMF0uc3RyaWRlID0gZnJhbWUt PmxpbmVzaXplWzBdID4+IDE7DQorDQorICAgICAgICAgICAgeXV2YnVmLnBsYW5lc1sxXS53aWR0 aCA9IGZyYW1lLT53aWR0aCA+PiAxOw0KKyAgICAgICAgICAgIHl1dmJ1Zi5wbGFuZXNbMV0uaGVp Z2h0ID0gZnJhbWUtPmhlaWdodCA+PiAxOw0KKyAgICAgICAgICAgIHl1dmJ1Zi5wbGFuZXNbMV0u c3RyaWRlID0gZnJhbWUtPmxpbmVzaXplWzFdID4+IDE7DQorDQorICAgICAgICAgICAgeXV2YnVm LnBsYW5lc1syXS53aWR0aCA9IGZyYW1lLT53aWR0aCA+PiAxOw0KKyAgICAgICAgICAgIHl1dmJ1 Zi5wbGFuZXNbMl0uaGVpZ2h0ID0gZnJhbWUtPmhlaWdodCA+PiAxOw0KKyAgICAgICAgICAgIHl1 dmJ1Zi5wbGFuZXNbMl0uc3RyaWRlID0gZnJhbWUtPmxpbmVzaXplWzJdID4+IDE7DQorDQorICAg ICAgICAgICAgeXV2YnVmLmN0cyA9IGZyYW1lLT5wdHM7DQorICAgICAgICAgICAgeXV2YnVmLmN0 c1ZhbGlkID0gdHJ1ZTsNCisgICAgICAgICAgICBweXV2YnVmID0gJnl1dmJ1ZjsNCisgICAgICAg IH0gZWxzZSB7DQorICAgICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsDQorICAg ICAgICAgICAgICAgICAgICJ1bnN1cHBvcnRlZCBpbnB1dCBjb2xvcnNwYWNlISBpbnB1dCBtdXN0 IGJlIHl1djQyMHAxMGxlIik7DQorICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsN CisgICAgICAgIH0NCisgICAgfQ0KKw0KKyAgICBpZiAoIXMtPmVuY29kZURvbmUpIHsNCisgICAg ICAgIHJldCA9IHZ2ZW5jX2VuY29kZShzLT52dmVuY0VuYywgcHl1dmJ1Ziwgcy0+cEFVLCAmcy0+ ZW5jb2RlRG9uZSk7DQorICAgICAgICBpZiAocmV0ICE9IDApIHsNCisgICAgICAgICAgICBhdl9s b2coYXZjdHgsIEFWX0xPR19FUlJPUiwgImVycm9yIGluIHZ2ZW5jOjplbmNvZGUgLSByZXQ6JWRc biIsDQorICAgICAgICAgICAgICAgICAgIHJldCk7DQorICAgICAgICAgICAgcmV0dXJuIEFWRVJS T1IoRUlOVkFMKTsNCisgICAgICAgIH0NCisgICAgfSBlbHNlIHsNCisgICAgICAgICpnb3RfcGFj a2V0ID0gMDsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorDQorICAgIGlmIChzLT5wQVUt PnBheWxvYWRVc2VkU2l6ZSA+IDApIHsNCisgICAgICAgIHJldCA9IGZmX2dldF9lbmNvZGVfYnVm ZmVyKGF2Y3R4LCBwa3QsIHMtPnBBVS0+cGF5bG9hZFVzZWRTaXplLCAwKTsNCisgICAgICAgIGlm IChyZXQgPCAwKSB7DQorICAgICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJF cnJvciBnZXR0aW5nIG91dHB1dCBwYWNrZXQuXG4iKTsNCisgICAgICAgICAgICByZXR1cm4gcmV0 Ow0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgbWVtY3B5KHBrdC0+ZGF0YSwgcy0+cEFVLT5wYXls b2FkLCBzLT5wQVUtPnBheWxvYWRVc2VkU2l6ZSk7DQorDQorICAgICAgICBpZiAocy0+cEFVLT5j dHNWYWxpZCkNCisgICAgICAgICAgICBwa3QtPnB0cyA9IHMtPnBBVS0+Y3RzOw0KKyAgICAgICAg aWYgKHMtPnBBVS0+ZHRzVmFsaWQpDQorICAgICAgICAgICAgcGt0LT5kdHMgPSBzLT5wQVUtPmR0 czsNCisgICAgICAgIHBrdC0+ZmxhZ3MgfD0gQVZfUEtUX0ZMQUdfS0VZICogcy0+cEFVLT5yYXA7 DQorDQorICAgICAgICBzd2l0Y2ggKHMtPnBBVS0+c2xpY2VUeXBlKSB7DQorICAgICAgICBjYXNl IFZWRU5DX0lfU0xJQ0U6DQorICAgICAgICAgICAgcGljdF90eXBlID0gQVZfUElDVFVSRV9UWVBF X0k7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBjYXNlIFZWRU5DX1BfU0xJQ0U6DQor ICAgICAgICAgICAgcGljdF90eXBlID0gQVZfUElDVFVSRV9UWVBFX1A7DQorICAgICAgICAgICAg YnJlYWs7DQorICAgICAgICBjYXNlIFZWRU5DX0JfU0xJQ0U6DQorICAgICAgICAgICAgcGljdF90 eXBlID0gQVZfUElDVFVSRV9UWVBFX0I7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICBk ZWZhdWx0Og0KKyAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiVW5rbm93 biBwaWN0dXJlIHR5cGUgZW5jb3VudGVyZWQuXG4iKTsNCisgICAgICAgICAgICByZXR1cm4gQVZF UlJPUl9FWFRFUk5BTDsNCisgICAgICAgIH0NCisNCisgICAgICAgIGZmX3NpZGVfZGF0YV9zZXRf ZW5jb2Rlcl9zdGF0cyhwa3QsIDAsIE5VTEwsIDAsIHBpY3RfdHlwZSk7DQorDQorICAgICAgICAq Z290X3BhY2tldCA9IDE7DQorDQorICAgICAgICByZXR1cm4gMDsNCisgICAgfSBlbHNlIHsNCisg ICAgICAgICpnb3RfcGFja2V0ID0gMDsNCisgICAgICAgIHJldHVybiAwOw0KKyAgICB9DQorDQor ICAgIHJldHVybiAwOw0KK30NCisNCitzdGF0aWMgY29uc3QgZW51bSBBVlBpeGVsRm9ybWF0IHBp eF9mbXRzX3Z2ZW5jW10gPSB7DQorICAgIEFWX1BJWF9GTVRfWVVWNDIwUDEwTEUsDQorICAgIEFW X1BJWF9GTVRfTk9ORQ0KK307DQorDQorI2RlZmluZSBPRkZTRVQoeCkgb2Zmc2V0b2YoVlZlbkND b250ZXh0LCB4KQ0KKyNkZWZpbmUgVkUgQVZfT1BUX0ZMQUdfVklERU9fUEFSQU0gfCBBVl9PUFRf RkxBR19FTkNPRElOR19QQVJBTQ0KK3N0YXRpYyBjb25zdCBBVk9wdGlvbiBsaWJ2dmVuY19vcHRp b25zW10gPSB7DQorICAgIHsicHJlc2V0IiwgInNldCBlbmNvZGluZyBwcmVzZXQoMDogZmFzdGVy IC0gNDogc2xvd2VyIiwgT0ZGU0VUKCBvcHRpb25zLnByZXNldCksIEFWX09QVF9UWVBFX0lOVCwg ey5pNjQgPSAyfSAsIDAgLCA0ICwgVkUsICJwcmVzZXQifSwNCisgICAgICAgIHsgImZhc3RlciIs ICIwIiwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsuaTY0ID0gVlZFTkNfRkFTVEVSfSwgSU5UX01J TiwgSU5UX01BWCwgVkUsICJwcmVzZXQiIH0sDQorICAgICAgICB7ICJmYXN0IiwgICAiMSIsIDAs IEFWX09QVF9UWVBFX0NPTlNULCB7Lmk2NCA9IFZWRU5DX0ZBU1R9LCBJTlRfTUlOLCBJTlRfTUFY LCBWRSwgInByZXNldCIgfSwNCisgICAgICAgIHsgIm1lZGl1bSIsICIyIiwgMCwgQVZfT1BUX1RZ UEVfQ09OU1QsIHsuaTY0ID0gVlZFTkNfTUVESVVNfSwgSU5UX01JTiwgSU5UX01BWCwgVkUsICJw cmVzZXQiIH0sDQorICAgICAgICB7ICJzbG93IiwgICAiMyIsIDAsIEFWX09QVF9UWVBFX0NPTlNU LCB7Lmk2NCA9IFZWRU5DX1NMT1d9LCBJTlRfTUlOLCBJTlRfTUFYLCBWRSwgInByZXNldCIgfSwN CisgICAgICAgIHsgInNsb3dlciIsICI0IiwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsuaTY0ID0g VlZFTkNfU0xPV0VSfSwgSU5UX01JTiwgSU5UX01BWCwgVkUsICJwcmVzZXQiIH0sDQorICAgIHsg InFwIiAgICAgLCAic2V0IHF1YW50aXphdGlvbiIsIE9GRlNFVChvcHRpb25zLnFwKSwgQVZfT1BU X1RZUEVfSU5ULCAgey5pNjQgPSAtMX0sIC0xICwgNjMgLFZFLCAicXBfbW9kZSIgfSwNCisgICAg eyAicGVyaW9kIiAsICJzZXQgKGludHJhKSByZWZyZXNoIHBlcmlvZCBpbiBzZWNvbmRzIiwgT0ZG U0VUKG9wdGlvbnMuaW50cmFSZWZyZXNoU2VjKSwgQVZfT1BUX1RZUEVfSU5ULCAgey5pNjQgPSAx fSwgIDEgLCBJTlRfTUFYICxWRSwiaXJlZnJlc2hzZWMiIH0sDQorICAgIHsgInN1YmpvcHQiLCAi c2V0IHN1YmplY3RpdmUgKHBlcmNlcHR1YWxseSBtb3RpdmF0ZWQpIG9wdGltaXphdGlvbiIsIE9G RlNFVChvcHRpb25zLnN1YmplY3RpdmVPcHRpbWl6YXRpb24pLCBBVl9PUFRfVFlQRV9CT09MLCB7 Lmk2NCA9IDF9LCAgMCAsIDEsIFZFfSwNCisgICAgeyAiYml0ZGVwdGg4IiwgInNldCA4Yml0IGNv ZGluZyBtb2RlIiwgT0ZGU0VUKG9wdGlvbnMuZmxhZzhiaXRDb2RpbmcpLCBBVl9PUFRfVFlQRV9C T09MLCB7Lmk2NCA9IDB9LCAgMCAsIDEsIFZFfSwNCisgICAgeyAidnZlbmMtcGFyYW1zIiwgInNl dCB0aGUgdnZlbmMgY29uZmlndXJhdGlvbiB1c2luZyBhIDotc2VwYXJhdGVkIGxpc3Qgb2Yga2V5 PXZhbHVlIHBhcmFtZXRlcnMiLCBPRkZTRVQob3B0aW9ucy52dmVuY19vcHRzKSwgQVZfT1BUX1RZ UEVfRElDVCwgeyAwIH0sIDAsIDAsIFZFIH0sDQorICAgIHsgImxldmVsaWRjIiwgInZ2YyBsZXZl bF9pZGMiLCBPRkZTRVQoIG9wdGlvbnMubGV2ZWxJZGMpLCBBVl9PUFRfVFlQRV9JTlQsIHsuaTY0 ID0gMH0sIDAsIDEwNSwgVkUsICJsZXZlbGlkYyJ9LA0KKyAgICAgICAgeyAiMCIsICAgImF1dG8i LCAwLCBBVl9PUFRfVFlQRV9DT05TVCwgey5pNjQgPSAwfSwgIElOVF9NSU4sIElOVF9NQVgsIFZF LCAibGV2ZWxpZGMifSwNCisgICAgICAgIHsgIjEiLCAgICIxIiAgICwgMCwgQVZfT1BUX1RZUEVf Q09OU1QsIHsuaTY0ID0gMTZ9LCBJTlRfTUlOLCBJTlRfTUFYLCBWRSwgImxldmVsaWRjIn0sDQor ICAgICAgICB7ICIyIiwgICAiMiIgICAsIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7Lmk2NCA9IDMy fSwgSU5UX01JTiwgSU5UX01BWCwgVkUsICJsZXZlbGlkYyJ9LA0KKyAgICAgICAgeyAiMi4xIiwg IjIuMSIgLCAwLCBBVl9PUFRfVFlQRV9DT05TVCwgey5pNjQgPSAzNX0sIElOVF9NSU4sIElOVF9N QVgsIFZFLCAibGV2ZWxpZGMifSwNCisgICAgICAgIHsgIjMiLCAgICIzIiAgICwgMCwgQVZfT1BU X1RZUEVfQ09OU1QsIHsuaTY0ID0gNDh9LCBJTlRfTUlOLCBJTlRfTUFYLCBWRSwgImxldmVsaWRj In0sDQorICAgICAgICB7ICIzLjEiLCAiMy4xIiAsIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7Lmk2 NCA9IDUxfSwgSU5UX01JTiwgSU5UX01BWCwgVkUsICJsZXZlbGlkYyJ9LA0KKyAgICAgICAgeyAi NCIsICAgIjQiICAgLCAwLCBBVl9PUFRfVFlQRV9DT05TVCwgey5pNjQgPSA2NH0sIElOVF9NSU4s IElOVF9NQVgsIFZFLCAibGV2ZWxpZGMifSwNCisgICAgICAgIHsgIjQuMSIsICI0LjEiICwgMCwg QVZfT1BUX1RZUEVfQ09OU1QsIHsuaTY0ID0gNjd9LCBJTlRfTUlOLCBJTlRfTUFYLCBWRSwgImxl dmVsaWRjIn0sDQorICAgICAgICB7ICI1IiwgICAiNSIgICAsIDAsIEFWX09QVF9UWVBFX0NPTlNU LCB7Lmk2NCA9IDgwfSwgSU5UX01JTiwgSU5UX01BWCwgVkUsICJsZXZlbGlkYyJ9LA0KKyAgICAg ICAgeyAiNS4xIiwgIjUuMSIgLCAwLCBBVl9PUFRfVFlQRV9DT05TVCwgey5pNjQgPSA4M30sIElO VF9NSU4sIElOVF9NQVgsIFZFLCAibGV2ZWxpZGMifSwNCisgICAgICAgIHsgIjUuMiIsICI1LjIi ICwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsuaTY0ID0gODZ9LCBJTlRfTUlOLCBJTlRfTUFYLCBW RSwgImxldmVsaWRjIn0sDQorICAgICAgICB7ICI2IiwgICAiNiIgICAsIDAsIEFWX09QVF9UWVBF X0NPTlNULCB7Lmk2NCA9IDk2fSwgSU5UX01JTiwgSU5UX01BWCwgVkUsICJsZXZlbGlkYyJ9LA0K KyAgICAgICAgeyAiNi4xIiwgIjYuMSIgLCAwLCBBVl9PUFRfVFlQRV9DT05TVCwgey5pNjQgPSA5 OX0sIElOVF9NSU4sIElOVF9NQVgsIFZFLCAibGV2ZWxpZGMifSwNCisgICAgICAgIHsgIjYuMiIs ICI2LjIiICwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsuaTY0ID0gMTAyfSwgSU5UX01JTiwgSU5U X01BWCwgVkUsICJsZXZlbGlkYyJ9LA0KKyAgICAgICAgeyAiNi4zIiwgIjYuMyIgLCAwLCBBVl9P UFRfVFlQRV9DT05TVCwgey5pNjQgPSAxMDV9LCBJTlRfTUlOLCBJTlRfTUFYLCBWRSwgImxldmVs aWRjIn0sDQorICAgIHsgInRpZXIiLCAic2V0IHZ2YyB0aWVyIiwgT0ZGU0VUKCBvcHRpb25zLnRp ZXIpLCBBVl9PUFRfVFlQRV9JTlQsIHsuaTY0ID0gMH0sICAwICwgMSAsIFZFLCAidGllciJ9LA0K KyAgICAgICAgeyAibWFpbiIsICJtYWluIiwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsuaTY0ID0g MH0sIElOVF9NSU4sIElOVF9NQVgsIFZFLCAidGllciJ9LA0KKyAgICAgICAgeyAiaGlnaCIsICJo aWdoIiwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsuaTY0ID0gMX0sIElOVF9NSU4sIElOVF9NQVgs IFZFLCAidGllciJ9LA0KKyAgICB7TlVMTH0NCit9Ow0KKw0KK3N0YXRpYyBjb25zdCBBVkNsYXNz IGNsYXNzX2xpYnZ2ZW5jID0gew0KKyAgICAuY2xhc3NfbmFtZSA9ICJsaWJ2dmVuYy12dmMgZW5j b2RlciIsDQorICAgIC5pdGVtX25hbWUgID0gYXZfZGVmYXVsdF9pdGVtX25hbWUsDQorICAgIC5v cHRpb24gICAgID0gbGlidnZlbmNfb3B0aW9ucywNCisgICAgLnZlcnNpb24gICAgPSBMSUJBVlVU SUxfVkVSU0lPTl9JTlQsDQorfTsNCisNCitzdGF0aWMgY29uc3QgRkZDb2RlY0RlZmF1bHQgdnZl bmNfZGVmYXVsdHNbXSA9IHsNCisgICAgeyAiYiIsICIwIiB9LA0KKyAgICB7ICJnIiwgIi0xIiB9 LA0KKyAgICB7IE5VTEwgfSwNCit9Ow0KKw0KK0ZGQ29kZWMgZmZfbGlidnZlbmNfZW5jb2RlciA9 IHsNCisgICAgLnAubmFtZSAgICAgICAgID0gImxpYnZ2ZW5jIiwNCisgICAgQ09ERUNfTE9OR19O QU1FKCJILjI2NiAvIFZWQyBFbmNvZGVyIFZWZW5DIiksDQorICAgIC5wLnR5cGUgICAgICAgICA9 IEFWTUVESUFfVFlQRV9WSURFTywNCisgICAgLnAuaWQgICAgICAgICAgID0gQVZfQ09ERUNfSURf VlZDLA0KKyAgICAucC5jYXBhYmlsaXRpZXMgPSBBVl9DT0RFQ19DQVBfREVMQVkgfCBBVl9DT0RF Q19DQVBfT1RIRVJfVEhSRUFEUywNCisgICAgLnAucHJvZmlsZXMgICAgID0gTlVMTF9JRl9DT05G SUdfU01BTEwoZmZfdnZjX3Byb2ZpbGVzKSwNCisgICAgLnAucHJpdl9jbGFzcyAgID0gJmNsYXNz X2xpYnZ2ZW5jLA0KKyAgICAucC53cmFwcGVyX25hbWUgPSAibGlidnZlbmMiLA0KKyAgICAucHJp dl9kYXRhX3NpemUgPSBzaXplb2YoVlZlbkNDb250ZXh0KSwNCisgICAgLnAucGl4X2ZtdHMgICAg ID0gcGl4X2ZtdHNfdnZlbmMsDQorICAgIC5pbml0ICAgICAgICAgICA9IGZmX3Z2ZW5jX2VuY29k ZV9pbml0LA0KKyAgICBGRl9DT0RFQ19FTkNPREVfQ0IoZmZfdnZlbmNfZW5jb2RlX2ZyYW1lKSwN CisgICAgLmNsb3NlICAgICAgICAgID0gZmZfdnZlbmNfZW5jb2RlX2Nsb3NlLA0KKyAgICAuZGVm YXVsdHMgICAgICAgICA9IHZ2ZW5jX2RlZmF1bHRzLA0KKyAgICAuY2Fwc19pbnRlcm5hbCAgPSBG Rl9DT0RFQ19DQVBfQVVUT19USFJFQURTLA0KK307DQpkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQv TWFrZWZpbGUgYi9saWJhdmZvcm1hdC9NYWtlZmlsZQ0KaW5kZXggYWYzMWQ2Zjc5NS4uN2Y2ZGIz ZDZkNiAxMDA2NDQNCi0tLSBhL2xpYmF2Zm9ybWF0L01ha2VmaWxlDQorKysgYi9saWJhdmZvcm1h dC9NYWtlZmlsZQ0KQEAgLTU0LDYgKzU0LDcgQEAgT0JKUy0kKENPTkZJR19SVFBERUMpICAgICAg ICAgICAgICAgICAgICArPSByZHQubyAgICAgICAgICAgICAgICAgIFwNCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0cGRlY19oMjYzX3JmYzIxOTAubyAgICAg ICBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydHBkZWNf aDI2NC5vICAgICAgICAgICAgICAgXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcnRwZGVjX2hldmMubyAgICAgICAgICAgICAgIFwNCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0cGRlY192dmMubyAgICAgICAgICAgICAg ICBcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydHBkZWNf aWxiYy5vICAgICAgICAgICAgICAgXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcnRwZGVjX2pwZWcubyAgICAgICAgICAgICAgIFwNCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0cGRlY19sYXRtLm8gICAgICAgICAgICAg ICBcDQpkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvcnRwZGVjLmMgYi9saWJhdmZvcm1hdC9ydHBk ZWMuYw0KaW5kZXggNzI5YmY4MzY4NS4uMzRlZjkyYTJhMCAxMDA2NDQNCi0tLSBhL2xpYmF2Zm9y bWF0L3J0cGRlYy5jDQorKysgYi9saWJhdmZvcm1hdC9ydHBkZWMuYw0KQEAgLTk4LDYgKzk4LDcg QEAgc3RhdGljIGNvbnN0IFJUUER5bmFtaWNQcm90b2NvbEhhbmRsZXIgKmNvbnN0IHJ0cF9keW5h bWljX3Byb3RvY29sX2hhbmRsZXJfbGlzdFsNCiAgICAgJmZmX2gyNjNfcmZjMjE5MF9keW5hbWlj X2hhbmRsZXIsDQogICAgICZmZl9oMjY0X2R5bmFtaWNfaGFuZGxlciwNCiAgICAgJmZmX2hldmNf ZHluYW1pY19oYW5kbGVyLA0KKyAgICAmZmZfdnZjX2R5bmFtaWNfaGFuZGxlciwNCiAgICAgJmZm X2lsYmNfZHluYW1pY19oYW5kbGVyLA0KICAgICAmZmZfanBlZ19keW5hbWljX2hhbmRsZXIsDQog ICAgICZmZl9tcDRhX2xhdG1fZHluYW1pY19oYW5kbGVyLA0KZGlmZiAtLWdpdCBhL2xpYmF2Zm9y bWF0L3J0cGRlY19mb3JtYXRzLmggYi9saWJhdmZvcm1hdC9ydHBkZWNfZm9ybWF0cy5oDQppbmRl eCBkYWQyYjhhYzFiLi5hZjJlMTdmYjk5IDEwMDY0NA0KLS0tIGEvbGliYXZmb3JtYXQvcnRwZGVj X2Zvcm1hdHMuaA0KKysrIGIvbGliYXZmb3JtYXQvcnRwZGVjX2Zvcm1hdHMuaA0KQEAgLTY1LDYg KzY1LDcgQEAgZXh0ZXJuIGNvbnN0IFJUUER5bmFtaWNQcm90b2NvbEhhbmRsZXIgZmZfaDI2M18y MDAwX2R5bmFtaWNfaGFuZGxlcjsNCiBleHRlcm4gY29uc3QgUlRQRHluYW1pY1Byb3RvY29sSGFu ZGxlciBmZl9oMjYzX3JmYzIxOTBfZHluYW1pY19oYW5kbGVyOw0KIGV4dGVybiBjb25zdCBSVFBE eW5hbWljUHJvdG9jb2xIYW5kbGVyIGZmX2gyNjRfZHluYW1pY19oYW5kbGVyOw0KIGV4dGVybiBj b25zdCBSVFBEeW5hbWljUHJvdG9jb2xIYW5kbGVyIGZmX2hldmNfZHluYW1pY19oYW5kbGVyOw0K K2V4dGVybiBjb25zdCBSVFBEeW5hbWljUHJvdG9jb2xIYW5kbGVyIGZmX3Z2Y19keW5hbWljX2hh bmRsZXI7DQogZXh0ZXJuIGNvbnN0IFJUUER5bmFtaWNQcm90b2NvbEhhbmRsZXIgZmZfaWxiY19k eW5hbWljX2hhbmRsZXI7DQogZXh0ZXJuIGNvbnN0IFJUUER5bmFtaWNQcm90b2NvbEhhbmRsZXIg ZmZfanBlZ19keW5hbWljX2hhbmRsZXI7DQogZXh0ZXJuIGNvbnN0IFJUUER5bmFtaWNQcm90b2Nv bEhhbmRsZXIgZmZfbXA0YV9sYXRtX2R5bmFtaWNfaGFuZGxlcjsNCmRpZmYgLS1naXQgYS9saWJh dmZvcm1hdC9ydHBkZWNfdnZjLmMgYi9saWJhdmZvcm1hdC9ydHBkZWNfdnZjLmMNCm5ldyBmaWxl IG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwLi44NmYwMTgyYjAxDQotLS0gL2Rldi9udWxs DQorKysgYi9saWJhdmZvcm1hdC9ydHBkZWNfdnZjLmMNCkBAIC0wLDAgKzEsMzQ5IEBADQorLyoN CisgKiBSVFAgcGFyc2VyIGZvciBWVkMvSC4yNjYgcGF5bG9hZCBmb3JtYXQgKGRyYWZ0IHZlcnNp b24gMC4xKQ0KKyAqIENvcHlyaWdodCAoYykgMjAyNCBSb2JpblNoaSA8c2hpcWlmZW5nQGdtYWls LmNvbT48bWFpbHRvOnNoaXFpZmVuZ0BnbWFpbC5jb20+DQorICoNCisgKiBUaGlzIGZpbGUgaXMg cGFydCBvZiBGRm1wZWcuDQorICoNCisgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yDQorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYw0KKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcg0KKyAqIHZlcnNpb24gMi4x IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0K KyAqDQorICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsDQorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YNCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQ0KKyAqIExlc3NlciBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQorICoNCisgKiBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljDQorICogTGlj ZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy ZQ0KKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0ENCisgKi8NCisNCisjaW5jbHVkZSAibGliYXZ1dGls L2F2YXNzZXJ0LmgiDQorI2luY2x1ZGUgImxpYmF2dXRpbC9hdnN0cmluZy5oIg0KKyNpbmNsdWRl ICJsaWJhdnV0aWwvbWVtLmgiDQorDQorI2luY2x1ZGUgImF2Zm9ybWF0LmgiDQorI2luY2x1ZGUg ImludGVybmFsLmgiDQorI2luY2x1ZGUgInJ0cGRlYy5oIg0KKyNpbmNsdWRlICJydHBkZWNfZm9y bWF0cy5oIg0KKw0KKyNkZWZpbmUgUlRQX1ZWQ19QQVlMT0FEX0hFQURFUl9TSVpFICAgICAgIDIN CisjZGVmaW5lIFJUUF9WVkNfRlVfSEVBREVSX1NJWkUgICAgICAgICAgICAxDQorI2RlZmluZSBS VFBfVlZDX0RPTkxfRklFTERfU0laRSAgICAgICAgICAgMg0KKyNkZWZpbmUgUlRQX1ZWQ19ET05E X0ZJRUxEX1NJWkUgICAgICAgICAgIDENCisjZGVmaW5lIFJUUF9WVkNfQVBfTkFMVV9MRU5HVEhf RklFTERfU0laRSAyDQorI2RlZmluZSBWVkNfU1BFQ0lGSUVEX05BTF9VTklUX1RZUEVTICAgICAg MjgNCisNCisvKiBTRFAgb3V0LW9mLWJhbmQgc2lnbmFsaW5nIGRhdGEgKi8NCitzdHJ1Y3QgUGF5 bG9hZENvbnRleHQgew0KKyAgICBpbnQgdXNpbmdfZG9ubF9maWVsZDsNCisgICAgaW50IHByb2Zp bGVfaWQ7DQorICAgIHVpbnQ4X3QgKnNwcywgKnBwcywgKnZwcywgKnNlaTsNCisgICAgaW50IHNw c19zaXplLCBwcHNfc2l6ZSwgdnBzX3NpemUsIHNlaV9zaXplOw0KK307DQorDQorc3RhdGljIGNv bnN0IHVpbnQ4X3Qgc3RhcnRfc2VxdWVuY2VbXSA9IHsgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSB9 Ow0KKw0KK3N0YXRpYyBhdl9jb2xkIGludCB2dmNfc2RwX3BhcnNlX2ZtdHBfY29uZmlnKEFWRm9y bWF0Q29udGV4dCAqcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQVZTdHJlYW0gKnN0cmVhbSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUGF5bG9hZENvbnRleHQgKnZ2Y19kYXRhLA0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICphdHRyLCBjb25zdCBj aGFyICp2YWx1ZSkNCit7DQorICAgIC8qIHByb2ZpbGUtc3BhY2U6IDAtMyAqLw0KKyAgICAvKiBw cm9maWxlLWlkOiAwLTMxICovDQorICAgIGlmICghc3RyY21wKGF0dHIsICJwcm9maWxlLWlkIikp IHsNCisgICAgICAgIHZ2Y19kYXRhLT5wcm9maWxlX2lkID0gYXRvaSh2YWx1ZSk7DQorICAgICAg ICBhdl9sb2cocywgQVZfTE9HX1RSQUNFLCAiU0RQOiBmb3VuZCBwcm9maWxlLWlkOiAlZFxuIiwg dnZjX2RhdGEtPnByb2ZpbGVfaWQpOw0KKyAgICB9DQorDQorICAgIC8qIHRpZXItZmxhZzogMC0x ICovDQorICAgIC8qIGxldmVsLWlkOiAwLTI1NSAqLw0KKyAgICAvKiBpbnRlcm9wLWNvbnN0cmFp bnRzOiBbYmFzZTE2XSAqLw0KKyAgICAvKiBwcm9maWxlLWNvbXBhdGliaWxpdHktaW5kaWNhdG9y OiBbYmFzZTE2XSAqLw0KKyAgICAvKiBzcHJvcC1zdWItbGF5ZXItaWQ6IDAtNiwgZGVmaW5lcyBo aWdoZXN0IHBvc3NpYmxlIHZhbHVlIGZvciBUSUQsIGRlZmF1bHQ6IDYgKi8NCisgICAgLyogcmVj di1zdWItbGF5ZXItaWQ6IDAtNiAqLw0KKyAgICAvKiBtYXgtcmVjdi1sZXZlbC1pZDogMC0yNTUg Ki8NCisgICAgLyogdHgtbW9kZTogTVNNLFNTTSAqLw0KKyAgICAvKiBzcHJvcC12cHM6IFtiYXNl NjRdICovDQorICAgIC8qIHNwcm9wLXNwczogW2Jhc2U2NF0gKi8NCisgICAgLyogc3Byb3AtcHBz OiBbYmFzZTY0XSAqLw0KKyAgICAvKiBzcHJvcC1zZWk6IFtiYXNlNjRdICovDQorICAgIGlmICgh c3RyY21wKGF0dHIsICJzcHJvcC12cHMiKSB8fCAhc3RyY21wKGF0dHIsICJzcHJvcC1zcHMiKSB8 fA0KKyAgICAgICAgIXN0cmNtcChhdHRyLCAic3Byb3AtcHBzIikgfHwgIXN0cmNtcChhdHRyLCAi c3Byb3Atc2VpIikpIHsNCisgICAgICAgIHVpbnQ4X3QgKipkYXRhX3B0ciA9IE5VTEw7DQorICAg ICAgICBpbnQgKnNpemVfcHRyID0gTlVMTDsNCisgICAgICAgIGlmICghc3RyY21wKGF0dHIsICJz cHJvcC12cHMiKSkgew0KKyAgICAgICAgICAgIGRhdGFfcHRyID0gJnZ2Y19kYXRhLT52cHM7DQor ICAgICAgICAgICAgc2l6ZV9wdHIgPSAmdnZjX2RhdGEtPnZwc19zaXplOw0KKyAgICAgICAgfSBl bHNlIGlmICghc3RyY21wKGF0dHIsICJzcHJvcC1zcHMiKSkgew0KKyAgICAgICAgICAgIGRhdGFf cHRyID0gJnZ2Y19kYXRhLT5zcHM7DQorICAgICAgICAgICAgc2l6ZV9wdHIgPSAmdnZjX2RhdGEt PnNwc19zaXplOw0KKyAgICAgICAgfSBlbHNlIGlmICghc3RyY21wKGF0dHIsICJzcHJvcC1wcHMi KSkgew0KKyAgICAgICAgICAgIGRhdGFfcHRyID0gJnZ2Y19kYXRhLT5wcHM7DQorICAgICAgICAg ICAgc2l6ZV9wdHIgPSAmdnZjX2RhdGEtPnBwc19zaXplOw0KKyAgICAgICAgfSBlbHNlIGlmICgh c3RyY21wKGF0dHIsICJzcHJvcC1zZWkiKSkgew0KKyAgICAgICAgICAgIGRhdGFfcHRyID0gJnZ2 Y19kYXRhLT5zZWk7DQorICAgICAgICAgICAgc2l6ZV9wdHIgPSAmdnZjX2RhdGEtPnNlaV9zaXpl Ow0KKyAgICAgICAgfSBlbHNlDQorICAgICAgICAgICAgYXZfYXNzZXJ0MCgwKTsNCisNCisgICAg ICAgIGZmX2gyNjRfcGFyc2Vfc3Byb3BfcGFyYW1ldGVyX3NldHMocywgZGF0YV9wdHIsDQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfcHRyLCB2YWx1ZSk7 DQorICAgIH0NCisNCisgICAgLyogbWF4LWxzciwgbWF4LWxwcywgbWF4LWNwYiwgbWF4LWRwYiwg bWF4LWJyLCBtYXgtdHIsIG1heC10YyAqLw0KKyAgICAvKiBtYXgtZnBzICovDQorDQorICAgIC8q IHNwcm9wLW1heC1kb24tZGlmZjogMC0zMjc2Nw0KKw0KKyAgICAgICAgIFdoZW4gdGhlIFJUUCBz dHJlYW0gZGVwZW5kcyBvbiBvbmUgb3IgbW9yZSBvdGhlciBSVFANCisgICAgICAgICBzdHJlYW1z IChpbiB0aGlzIGNhc2UgdHgtbW9kZSBNVVNUIGJlIGVxdWFsIHRvICJNU00iIGFuZA0KKyAgICAg ICAgIE1TTSBpcyBpbiB1c2UpLCB0aGlzIHBhcmFtZXRlciBNVVNUIGJlIHByZXNlbnQgYW5kIHRo ZQ0KKyAgICAgICAgIHZhbHVlIE1VU1QgYmUgZ3JlYXRlciB0aGFuIDAuDQorICAgICovDQorICAg IGlmICghc3RyY21wKGF0dHIsICJzcHJvcC1tYXgtZG9uLWRpZmYiKSkgew0KKyAgICAgICAgaWYg KGF0b2kodmFsdWUpID4gMCkNCisgICAgICAgICAgICB2dmNfZGF0YS0+dXNpbmdfZG9ubF9maWVs ZCA9IDE7DQorICAgICAgICBhdl9sb2cocywgQVZfTE9HX1RSQUNFLCAiRm91bmQgc3Byb3AtbWF4 LWRvbi1kaWZmIGluIFNEUCwgRE9OIGZpZWxkIHVzYWdlIGlzOiAlZFxuIiwNCisgICAgICAgICAg ICAgICAgdnZjX2RhdGEtPnVzaW5nX2RvbmxfZmllbGQpOw0KKyAgICB9DQorICAgIC8vIFZWQyBk b250IGhhdmUgc3Byb3AtZGVwYWNrLWJ1Zi1uYWx1cyBzZXR0aW5nIGFjY29yZGluZyB0byByZmM5 MzI4ICsgICAgLyogc3Byb3AtZGVwYWNrLWJ1Zi1ieXRlczogMC00Mjk0OTY3Mjk1ICovDQorICAg IC8qIGRlcGFjay1idWYtY2FwICovDQorICAgIC8qIHNwcm9wLXNlZ21lbnRhdGlvbi1pZDogMC0z ICovDQorICAgIC8qIHNwcm9wLXNwYXRpYWwtc2VnbWVudGF0aW9uLWlkYzogW2Jhc2UxNl0gKi8N CisgICAgLyogZGVjLXBhcmFsbGVsLWNhOiAqLw0KKyAgICAvKiBpbmNsdWRlLWRwaCAqLw0KKw0K KyAgICByZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGF2X2NvbGQgaW50IHZ2Y19wYXJzZV9zZHBf bGluZShBVkZvcm1hdENvbnRleHQgKmN0eCwgaW50IHN0X2luZGV4LA0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFBheWxvYWRDb250ZXh0ICp2dmNfZGF0YSwgY29uc3Qg Y2hhciAqbGluZSkNCit7DQorICAgIEFWU3RyZWFtICpjdXJyZW50X3N0cmVhbTsNCisgICAgQVZD b2RlY1BhcmFtZXRlcnMgKnBhcjsNCisgICAgY29uc3QgY2hhciAqc2RwX2xpbmVfcHRyID0gbGlu ZTsNCisNCisgICAgaWYgKHN0X2luZGV4IDwgMCkNCisgICAgICAgIHJldHVybiAwOw0KKw0KKyAg ICBjdXJyZW50X3N0cmVhbSA9IGN0eC0+c3RyZWFtc1tzdF9pbmRleF07DQorICAgIHBhciAgPSBj dXJyZW50X3N0cmVhbS0+Y29kZWNwYXI7DQorDQorICAgIGlmIChhdl9zdHJzdGFydChzZHBfbGlu ZV9wdHIsICJmcmFtZXNpemU6IiwgJnNkcF9saW5lX3B0cikpIHsNCisgICAgICAgIGZmX2gyNjRf cGFyc2VfZnJhbWVzaXplKHBhciwgc2RwX2xpbmVfcHRyKTsNCisgICAgfSBlbHNlIGlmIChhdl9z dHJzdGFydChzZHBfbGluZV9wdHIsICJmbXRwOiIsICZzZHBfbGluZV9wdHIpKSB7DQorICAgICAg ICBpbnQgcmV0ID0gZmZfcGFyc2VfZm10cChjdHgsIGN1cnJlbnRfc3RyZWFtLCB2dmNfZGF0YSwg c2RwX2xpbmVfcHRyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnZjX3NkcF9w YXJzZV9mbXRwX2NvbmZpZyk7DQorICAgICAgICBpZiAodnZjX2RhdGEtPnZwc19zaXplIHx8IHZ2 Y19kYXRhLT5zcHNfc2l6ZSB8fA0KKyAgICAgICAgICAgIHZ2Y19kYXRhLT5wcHNfc2l6ZSB8fCB2 dmNfZGF0YS0+c2VpX3NpemUpIHsNCisgICAgICAgICAgICBwYXItPmV4dHJhZGF0YV9zaXplID0g dnZjX2RhdGEtPnZwc19zaXplICsgdnZjX2RhdGEtPnNwc19zaXplICsNCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdnZjX2RhdGEtPnBwc19zaXplICsgdnZjX2RhdGEtPnNlaV9z aXplOw0KKyAgICAgICAgICAgIGlmICgocmV0ID0gZmZfYWxsb2NfZXh0cmFkYXRhKHBhciwgcGFy LT5leHRyYWRhdGFfc2l6ZSkpID49IDApIHsNCisgICAgICAgICAgICAgICAgaW50IHBvcyA9IDA7 DQorICAgICAgICAgICAgICAgIG1lbWNweShwYXItPmV4dHJhZGF0YSArIHBvcywgdnZjX2RhdGEt PnZwcywgdnZjX2RhdGEtPnZwc19zaXplKTsNCisgICAgICAgICAgICAgICAgcG9zICs9IHZ2Y19k YXRhLT52cHNfc2l6ZTsNCisgICAgICAgICAgICAgICAgbWVtY3B5KHBhci0+ZXh0cmFkYXRhICsg cG9zLCB2dmNfZGF0YS0+c3BzLCB2dmNfZGF0YS0+c3BzX3NpemUpOw0KKyAgICAgICAgICAgICAg ICBwb3MgKz0gdnZjX2RhdGEtPnNwc19zaXplOw0KKyAgICAgICAgICAgICAgICBtZW1jcHkocGFy LT5leHRyYWRhdGEgKyBwb3MsIHZ2Y19kYXRhLT5wcHMsIHZ2Y19kYXRhLT5wcHNfc2l6ZSk7DQor ICAgICAgICAgICAgICAgIHBvcyArPSB2dmNfZGF0YS0+cHBzX3NpemU7DQorICAgICAgICAgICAg ICAgIG1lbWNweShwYXItPmV4dHJhZGF0YSArIHBvcywgdnZjX2RhdGEtPnNlaSwgdnZjX2RhdGEt PnNlaV9zaXplKTsNCisgICAgICAgICAgICB9DQorDQorICAgICAgICAgICAgYXZfZnJlZXAoJnZ2 Y19kYXRhLT52cHMpOw0KKyAgICAgICAgICAgIGF2X2ZyZWVwKCZ2dmNfZGF0YS0+c3BzKTsNCisg ICAgICAgICAgICBhdl9mcmVlcCgmdnZjX2RhdGEtPnBwcyk7DQorICAgICAgICAgICAgYXZfZnJl ZXAoJnZ2Y19kYXRhLT5zZWkpOw0KKyAgICAgICAgICAgIHZ2Y19kYXRhLT52cHNfc2l6ZSA9IDA7 DQorICAgICAgICAgICAgdnZjX2RhdGEtPnNwc19zaXplID0gMDsNCisgICAgICAgICAgICB2dmNf ZGF0YS0+cHBzX3NpemUgPSAwOw0KKyAgICAgICAgICAgIHZ2Y19kYXRhLT5zZWlfc2l6ZSA9IDA7 DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gcmV0Ow0KKyAgICB9DQorDQorICAgIHJldHVy biAwOw0KK30NCisNCitzdGF0aWMgaW50IHZ2Y19oYW5kbGVfcGFja2V0KEFWRm9ybWF0Q29udGV4 dCAqY3R4LCBQYXlsb2FkQ29udGV4dCAqcnRwX3Z2Y19jdHgsDQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgQVZTdHJlYW0gKnN0LCBBVlBhY2tldCAqcGt0LCB1aW50MzJfdCAqdGltZXN0 YW1wLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmJ1Ziwg aW50IGxlbiwgdWludDE2X3Qgc2VxLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCBmbGFncykNCit7DQorICAgIGNvbnN0IHVpbnQ4X3QgKnJ0cF9wbCA9IGJ1ZjsNCisgICAgaW50 IHRpZCwgbGlkLCBuYWxfdHlwZTsNCisgICAgaW50IGZpcnN0X2ZyYWdtZW50LCBsYXN0X2ZyYWdt ZW50LCBwaWNfZnJhZ21lbnQsIGZ1X3R5cGU7DQorICAgIHVpbnQ4X3QgbmV3X25hbF9oZWFkZXJb Ml07DQorICAgIGludCByZXMgPSAwOw0KKw0KKyAgICAvKiBzYW5pdHkgY2hlY2sgZm9yIHNpemUg b2YgaW5wdXQgcGFja2V0OiAxIGJ5dGUgcGF5bG9hZCBhdCBsZWFzdCAqLw0KKyAgICBpZiAobGVu IDwgUlRQX1ZWQ19QQVlMT0FEX0hFQURFUl9TSVpFICsgMSkgew0KKyAgICAgICAgYXZfbG9nKGN0 eCwgQVZfTE9HX0VSUk9SLCAiVG9vIHNob3J0IFJUUC9WVkMgcGFja2V0LCBnb3QgJWQgYnl0ZXNc biIsIGxlbik7DQorICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsNCisgICAgfQ0K Kw0KKyAgICAvKg0KKyAgICAgKiBkZWNvZGUgdGhlIFZWQyBwYXlsb2FkIGhlYWRlciBhY2NvcmRp bmcgdG8gc2VjdGlvbiA0IG9mIGRyYWZ0IHZlcnNpb24gNjoNCisgICAgICoNCisgICAgICogICAr LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSsNCisgICAgICogICB8MHwxfDJ8M3w0fDV8 Nnw3fDB8MXwyfDN8NHw1fDZ8N3wNCisgICAgICogICArLSstKy0rLSstKy0rLSstKy0rLSstKy0r LSstKy0rLSsNCisgICAgICogICB8RnxafCBMYXllcklEICAgfCBUeXBlICAgIHwgVElEIHwNCisg ICAgICogICArLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSsNCisgICAgICoNCisgICAg ICogICAgICBGb3JiaWRkZW4gemVybyAoRik6IDEgYml0DQorICAgICAqICAgICAgUmVzZXJ2ZWQg KFopOiAxIGJpdHMNCisgICAgICogICAgICBOVUggbGF5ZXIgSUQgKExheWVySWQpOiA2IGJpdHMN CisgICAgICogICAgICBOQUwgdW5pdCB0eXBlIChUeXBlKTogNSBiaXRzDQorICAgICAqICAgICAg TlVIIHRlbXBvcmFsIElEIHBsdXMgMSAoVElEKTogMyBiaXRzDQorICAgICAqLw0KKyAgICBuYWxf dHlwZSA9ICAoYnVmWzFdID4+IDMpICYgMHgxZjsNCisgICAgbGlkICA9IGJ1ZlswXSAmIDB4M2Y7 DQorICAgIHRpZCAgPSBidWZbMV0gJiAweDA3Ow0KKw0KKyAgICAvKiBzYW5pdHkgY2hlY2sgZm9y IGNvcnJlY3QgbGF5ZXIgSUQgKi8NCisgICAgaWYgKGxpZCkgew0KKyAgICAgICAgLyogZnV0dXJl IHNjYWxhYmxlIG9yIDNEIHZpZGVvIGNvZGluZyBleHRlbnNpb25zICovDQorICAgICAgICBhdnBy aXZfcmVwb3J0X21pc3NpbmdfZmVhdHVyZShjdHgsICJNdWx0aS1sYXllciBWVkMgY29kaW5nIik7 DQorICAgICAgICByZXR1cm4gQVZFUlJPUl9QQVRDSFdFTENPTUU7DQorICAgIH0NCisNCisgICAg Lyogc2FuaXR5IGNoZWNrIGZvciBjb3JyZWN0IHRlbXBvcmFsIElEICovDQorICAgIGlmICghdGlk KSB7DQorICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1IsICJJbGxlZ2FsIHRlbXBvcmFs IElEIGluIFJUUC9WVkMgcGFja2V0XG4iKTsNCisgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFM SUREQVRBOw0KKyAgICB9DQorDQorICAgIC8qIHNhbml0eSBjaGVjayBmb3IgY29ycmVjdCBOQUwg dW5pdCB0eXBlICovDQorICAgIGlmIChuYWxfdHlwZSA+IDMxKSB7DQorICAgICAgICBhdl9sb2co Y3R4LCBBVl9MT0dfRVJST1IsICJVbnN1cHBvcnRlZCAoVlZDKSBOQUwgdHlwZSAoJWQpXG4iLCBu YWxfdHlwZSk7DQorICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsNCisgICAgfQ0K Kw0KKyAgICBzd2l0Y2ggKG5hbF90eXBlKSB7DQorICAgIC8qIHZpZGVvIHBhcmFtZXRlciBzZXQg KFZQUykgKi8NCisgICAgY2FzZSAxNDoNCisgICAgLyogc2VxdWVuY2UgcGFyYW1ldGVyIHNldCAo U1BTKSAqLw0KKyAgICBjYXNlIDE1Og0KKyAgICAvKiBwaWN0dXJlIHBhcmFtZXRlciBzZXQgKFBQ UykgKi8NCisgICAgY2FzZSAxNjoNCisgICAgLyogIHN1cHBsZW1lbnRhbCBlbmhhbmNlbWVudCBp bmZvcm1hdGlvbiAoU0VJKSAqLw0KKyAgICBjYXNlIDIzOg0KKyAgICBjYXNlIDI0Og0KKyAgICAv KiBzaW5nbGUgTkFMIHVuaXQgcGFja2V0ICovDQorICAgIGRlZmF1bHQ6DQorICAgICAgICAvKiBj cmVhdGUgQS9WIHBhY2tldCAqLw0KKyAgICAgICAgaWYgKChyZXMgPSBhdl9uZXdfcGFja2V0KHBr dCwgc2l6ZW9mKHN0YXJ0X3NlcXVlbmNlKSArIGxlbikpIDwgMCkNCisgICAgICAgICAgICByZXR1 cm4gcmVzOw0KKyAgICAgICAgLyogQS9WIHBhY2tldDogY29weSBzdGFydCBzZXF1ZW5jZSAqLw0K KyAgICAgICAgbWVtY3B5KHBrdC0+ZGF0YSwgc3RhcnRfc2VxdWVuY2UsIHNpemVvZihzdGFydF9z ZXF1ZW5jZSkpOw0KKyAgICAgICAgLyogQS9WIHBhY2tldDogY29weSBOQUwgdW5pdCBkYXRhICov DQorICAgICAgICBtZW1jcHkocGt0LT5kYXRhICsgc2l6ZW9mKHN0YXJ0X3NlcXVlbmNlKSwgYnVm LCBsZW4pOw0KKw0KKyAgICAgICAgYnJlYWs7DQorICAgIC8qIGFnZ3JlZ2F0ZWQgcGFja2V0IChB UCkgLSB3aXRoIHR3byBvciBtb3JlIE5BTCB1bml0cyAqLw0KKyAgICBjYXNlIDI4Og0KKyAgICAg ICAgLyogcGFzcyB0aGUgVlZDIHBheWxvYWQgaGVhZGVyICovDQorICAgICAgICBidWYgKz0gUlRQ X1ZWQ19QQVlMT0FEX0hFQURFUl9TSVpFOw0KKyAgICAgICAgbGVuIC09IFJUUF9WVkNfUEFZTE9B RF9IRUFERVJfU0laRTsNCisNCisgICAgICAgIC8qIHBhc3MgdGhlIFZWQyBET05MIGZpZWxkICov DQorICAgICAgICBpZiAocnRwX3Z2Y19jdHgtPnVzaW5nX2RvbmxfZmllbGQpIHsNCisgICAgICAg ICAgICBidWYgKz0gUlRQX1ZWQ19ET05MX0ZJRUxEX1NJWkU7DQorICAgICAgICAgICAgbGVuIC09 IFJUUF9WVkNfRE9OTF9GSUVMRF9TSVpFOw0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgcmVzID0g ZmZfaDI2NF9oYW5kbGVfYWdncmVnYXRlZF9wYWNrZXQoY3R4LCBydHBfdnZjX2N0eCwgcGt0LCBi dWYsIGxlbiwNCisgcnRwX3Z2Y19jdHgtPnVzaW5nX2RvbmxfZmllbGQgPw0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlRQX1ZWQ19ET05EX0ZJRUxEX1NJ WkUgOiAwLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TlVMTCwgMCk7DQorICAgICAgICBpZiAocmVzIDwgMCkNCisgICAgICAgICAgICByZXR1cm4gcmVz Ow0KKyAgICAgICAgYnJlYWs7DQorICAgIC8qIGZyYWdtZW50YXRpb24gdW5pdCAoRlUpICovDQor ICAgIGNhc2UgMjk6DQorICAgICAgICAvKiBwYXNzIHRoZSBWVkMgcGF5bG9hZCBoZWFkZXIgKi8N CisgICAgICAgIGJ1ZiArPSBSVFBfVlZDX1BBWUxPQURfSEVBREVSX1NJWkU7DQorICAgICAgICBs ZW4gLT0gUlRQX1ZWQ19QQVlMT0FEX0hFQURFUl9TSVpFOw0KKw0KKyAgICAgICAgLyoNCisgICAg ICAgICogICAgIGNyZWF0ZSB0aGUgRlUgaGVhZGVyDQorICAgICAgICAqDQorICAgICAgICAqICAg ICAwIDEgMiAzIDQgNSA2IDcNCisgICAgICAgICogICAgICstLS0tLS0tLS0tLS0tLS0rDQorICAg ICAgICAqICAgICB8MHwxfDJ8M3w0fDV8Nnw3fA0KKyAgICAgICAgKiAgICAgKy0rLSstKy0rLSst Ky0rLSsNCisgICAgICAgICogICAgIHxTfEV8UHwgRnVUeXBlIHwNCisgICAgICAgICogICAgICst LS0tLS0tLS0tLS0tLS0rDQorICAgICAgICAqICAgICAgIFMgICAgICAgPSB2YXJpYWJsZQ0KKyAg ICAgICAgKiAgICAgICBFICAgICAgID0gdmFyaWFibGUNCisgICAgICAgICogICAgICAgUCAgICAg ICA9IHZhcmlhYmxlDQorICAgICAgICAqICAgICAgIEZ1VHlwZSAgPSBOQUwgdW5pdCB0eXBlDQor ICAgICAgICAqLw0KKyAgICAgICAgZmlyc3RfZnJhZ21lbnQgPSBidWZbMF0gJiAweDgwOw0KKyAg ICAgICAgbGFzdF9mcmFnbWVudCAgPSBidWZbMF0gJiAweDQwOw0KKyAgICAgICAgcGljX2ZyYWdt ZW50ICAgPSBidWZbMF0gJiAweDEwOw0KKyAgICAgICAgZnVfdHlwZSAgICAgICAgPSBidWZbMF0g JiAweDNmOw0KKw0KKyAgICAgICAgLyogcGFzcyB0aGUgVlZDIEZVIGhlYWRlciAqLw0KKyAgICAg ICAgYnVmICs9IFJUUF9WVkNfRlVfSEVBREVSX1NJWkU7DQorICAgICAgICBsZW4gLT0gUlRQX1ZW Q19GVV9IRUFERVJfU0laRTsNCisNCisgICAgICAgIC8qIHBhc3MgdGhlIFZWQyBET05MIGZpZWxk ICovDQorICAgICAgICBpZiAocnRwX3Z2Y19jdHgtPnVzaW5nX2RvbmxfZmllbGQpIHsNCisgICAg ICAgICAgICBidWYgKz0gUlRQX1ZWQ19ET05MX0ZJRUxEX1NJWkU7DQorICAgICAgICAgICAgbGVu IC09IFJUUF9WVkNfRE9OTF9GSUVMRF9TSVpFOw0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgYXZf bG9nKGN0eCwgQVZfTE9HX1RSQUNFLCAiIEZVIHR5cGUgJWQgd2l0aCAlZCBieXRlc1xuIiwgZnVf dHlwZSwgbGVuKTsNCisNCisgICAgICAgIC8qIHNhbml0eSBjaGVjayBmb3Igc2l6ZSBvZiBpbnB1 dCBwYWNrZXQ6IDEgYnl0ZSBwYXlsb2FkIGF0IGxlYXN0ICovDQorICAgICAgICBpZiAobGVuIDw9 IDApIHsNCisgICAgICAgICAgICBpZiAobGVuIDwgMCkgew0KKyAgICAgICAgICAgICAgICBhdl9s b2coY3R4LCBBVl9MT0dfRVJST1IsDQorICAgICAgICAgICAgICAgICAgICAgICAiVG9vIHNob3J0 IFJUUC9WVkMgcGFja2V0LCBnb3QgJWQgYnl0ZXMgb2YgTkFMIHVuaXQgdHlwZSAlZFxuIiwNCisg ICAgICAgICAgICAgICAgICAgICAgIGxlbiwgbmFsX3R5cGUpOw0KKyAgICAgICAgICAgICAgICBy ZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAg ICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFQUdBSU4pOw0KKyAgICAgICAgICAgIH0NCisgICAg ICAgIH0NCisNCisgICAgICAgIGlmIChmaXJzdF9mcmFnbWVudCAmJiBsYXN0X2ZyYWdtZW50KSB7 DQorICAgICAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9SLCAiSWxsZWdhbCBjb21iaW5h dGlvbiBvZiBTIGFuZCBFIGJpdCBpbiBSVFAvVlZDIHBhY2tldFxuIik7DQorICAgICAgICAgICAg cmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7DQorICAgICAgICB9DQorDQorICAgICAgICBuZXdf bmFsX2hlYWRlclswXSA9IHJ0cF9wbFswXTsNCisgICAgICAgIG5ld19uYWxfaGVhZGVyWzFdID0g cnRwX3BsWzFdOw0KKw0KKyAgICAgICAgbmV3X25hbF9oZWFkZXJbMV0gPSAobmV3X25hbF9oZWFk ZXJbMV0gJiAweDA3KSB8IChmdV90eXBlIDw8IDMpOw0KKw0KKyAgICAgICAgcmVzID0gZmZfaDI2 NF9oYW5kbGVfZnJhZ19wYWNrZXQocGt0LCBidWYsIGxlbiwgZmlyc3RfZnJhZ21lbnQsDQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfbmFsX2hlYWRlciwgc2l6 ZW9mKG5ld19uYWxfaGVhZGVyKSk7DQorDQorICAgICAgICBicmVhazsNCisgICAgLyogUEFDSSBw YWNrZXQgKi8NCisgICAgY2FzZSAzMDoNCisgICAgICAgIC8qIFRlbXBvcmFsIHNjYWxhYmlsaXR5 IGNvbnRyb2wgaW5mb3JtYXRpb24gKFRTQ0kpICovDQorICAgICAgICBhdnByaXZfcmVwb3J0X21p c3NpbmdfZmVhdHVyZShjdHgsICJQQUNJIHBhY2tldHMgZm9yIFJUUC9WVkMiKTsNCisgICAgICAg IHJlcyA9IEFWRVJST1JfUEFUQ0hXRUxDT01FOw0KKyAgICAgICAgYnJlYWs7DQorICAgIH0NCisN CisgICAgcGt0LT5zdHJlYW1faW5kZXggPSBzdC0+aW5kZXg7DQorDQorICAgIHJldHVybiByZXM7 DQorfQ0KKw0KK2NvbnN0IFJUUER5bmFtaWNQcm90b2NvbEhhbmRsZXIgZmZfdnZjX2R5bmFtaWNf aGFuZGxlciA9IHsNCisgICAgLmVuY19uYW1lICAgICAgICAgPSAiSDI2NiIsDQorICAgIC5jb2Rl Y190eXBlICAgICAgID0gQVZNRURJQV9UWVBFX1ZJREVPLA0KKyAgICAuY29kZWNfaWQgICAgICAg ICA9IEFWX0NPREVDX0lEX1ZWQywNCisgICAgLm5lZWRfcGFyc2luZyAgICAgPSBBVlNUUkVBTV9Q QVJTRV9GVUxMLA0KKyAgICAucHJpdl9kYXRhX3NpemUgICA9IHNpemVvZihQYXlsb2FkQ29udGV4 dCksDQorICAgIC5wYXJzZV9zZHBfYV9saW5lID0gdnZjX3BhcnNlX3NkcF9saW5lLA0KKyAgICAu cGFyc2VfcGFja2V0ICAgICA9IHZ2Y19oYW5kbGVfcGFja2V0LA0KK307DQpkaWZmIC0tZ2l0IGEv bGliYXZmb3JtYXQvcnRwZW5jLmMgYi9saWJhdmZvcm1hdC9ydHBlbmMuYw0KaW5kZXggN2I0YWUz N2QxMy4uODQ4YjI0NWFkNyAxMDA2NDQNCi0tLSBhL2xpYmF2Zm9ybWF0L3J0cGVuYy5jDQorKysg Yi9saWJhdmZvcm1hdC9ydHBlbmMuYw0KQEAgLTU3LDYgKzU3LDcgQEAgc3RhdGljIGludCBpc19z dXBwb3J0ZWQoZW51bSBBVkNvZGVjSUQgaWQpDQogICAgIGNhc2UgQVZfQ09ERUNfSURfSDI2M1A6 DQogICAgIGNhc2UgQVZfQ09ERUNfSURfSDI2NDoNCiAgICAgY2FzZSBBVl9DT0RFQ19JRF9IRVZD Og0KKyAgICBjYXNlIEFWX0NPREVDX0lEX1ZWQzoNCiAgICAgY2FzZSBBVl9DT0RFQ19JRF9NUEVH MVZJREVPOg0KICAgICBjYXNlIEFWX0NPREVDX0lEX01QRUcyVklERU86DQogICAgIGNhc2UgQVZf Q09ERUNfSURfTVBFRzQ6DQpAQCAtNjA1LDYgKzYwNiw3IEBAIHN0YXRpYyBpbnQgcnRwX3dyaXRl X3BhY2tldChBVkZvcm1hdENvbnRleHQgKnMxLCBBVlBhY2tldCAqcGt0KQ0KICAgICAgICAgZmZf cnRwX3NlbmRfaDI2MyhzMSwgcGt0LT5kYXRhLCBzaXplKTsNCiAgICAgICAgIGJyZWFrOw0KICAg ICBjYXNlIEFWX0NPREVDX0lEX0hFVkM6DQorICAgIGNhc2UgQVZfQ09ERUNfSURfVlZDOg0KICAg ICAgICAgZmZfcnRwX3NlbmRfaDI2NF9oZXZjKHMxLCBwa3QtPmRhdGEsIHNpemUpOw0KICAgICAg ICAgYnJlYWs7DQogICAgIGNhc2UgQVZfQ09ERUNfSURfVk9SQklTOg0KZGlmZiAtLWdpdCBhL2xp YmF2Zm9ybWF0L3J0cGVuY19oMjY0X2hldmMuYyBiL2xpYmF2Zm9ybWF0L3J0cGVuY19oMjY0X2hl dmMuYw0KaW5kZXggMGM4OGZjMmEyMy4uN2RiZDlmM2UxMSAxMDA2NDQNCi0tLSBhL2xpYmF2Zm9y bWF0L3J0cGVuY19oMjY0X2hldmMuYw0KKysrIGIvbGliYXZmb3JtYXQvcnRwZW5jX2gyNjRfaGV2 Yy5jDQpAQCAtODQsOSArODQsMzggQEAgc3RhdGljIHZvaWQgbmFsX3NlbmQoQVZGb3JtYXRDb250 ZXh0ICpzMSwgY29uc3QgdWludDhfdCAqYnVmLCBpbnQgc2l6ZSwgaW50IGxhc3QNCiAgICAgICAg ICAgICBpZiAoYnVmZmVyZWRfc2l6ZSA9PSAwKSB7DQogICAgICAgICAgICAgICAgIGlmIChjb2Rl YyA9PSBBVl9DT0RFQ19JRF9IMjY0KSB7DQogICAgICAgICAgICAgICAgICAgICAqcy0+YnVmX3B0 cisrID0gMjQ7DQotICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIH0g ZWxzZSBpZiAoY29kZWMgPT0gQVZfQ09ERUNfSURfSEVWQykgew0KICAgICAgICAgICAgICAgICAg ICAgKnMtPmJ1Zl9wdHIrKyA9IDQ4IDw8IDE7DQogICAgICAgICAgICAgICAgICAgICAqcy0+YnVm X3B0cisrID0gMTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAg ICAgIC8vIFZWQyBjYXNlLCByZmM5MzI4LCBwYWdlIDIwDQorICAgICAgICAgICAgICAgICAgICB1 aW50OF90IGZpcnN0X25hbF90eXBlID0gYnVmWzBdOw0KKyAgICAgICAgICAgICAgICAgICAgdWlu dDhfdCBsYXN0X25hbF90eXBlID0gYnVmWzFdOw0KKyAgICAgICAgICAgICAgICAgICAgZmlyc3Rf bmFsX3R5cGUgJj0gfigxPDw3KTsgLy8gY2xlYXIgdGhlIEYgYml0LCBpbml0aWFsbHkNCisgICAg ICAgICAgICAgICAgICAgIGxhc3RfbmFsX3R5cGUgPSAobGFzdF9uYWxfdHlwZSAmIDB4MDcpIHwg KDI4IDw8IDMpOw0KKyAgICAgICAgICAgICAgICAgICAgKnMtPmJ1Zl9wdHIrKyA9IGZpcnN0X25h bF90eXBlOw0KKyAgICAgICAgICAgICAgICAgICAgKnMtPmJ1Zl9wdHIrKyA9IGxhc3RfbmFsX3R5 cGU7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGVjID09 IEFWX0NPREVDX0lEX1ZWQykgew0KKyAgICAgICAgICAgICAgICAvLyBWVkMgY2FzZSwgcmZjOTMy OCwgcGFnZSAyMCwgdXNlIGxvd2VzdCBsYXllcmlkL3RpZA0KKyAgICAgICAgICAgICAgICB1aW50 OF90IGZpcnN0X25hbF90eXBlID0gcy0+YnVmWzBdOw0KKyAgICAgICAgICAgICAgICB1aW50OF90 IGxhc3RfbmFsX3R5cGUgPSBzLT5idWZbMV07DQorICAgICAgICAgICAgICAgIHVpbnQ4X3QgbmV3 X2ZpcnN0X25hbF90eXBlID0gYnVmWzBdOw0KKyAgICAgICAgICAgICAgICB1aW50OF90IG5ld19s YXN0X25hbF90eXBlID0gYnVmWzFdOw0KKyAgICAgICAgICAgICAgICBpbnQgY3VyX2YgPSBmaXJz dF9uYWxfdHlwZSA+PiA3Ow0KKyAgICAgICAgICAgICAgICBpbnQgbmV3X2YgPSBuZXdfZmlyc3Rf bmFsX3R5cGUgPj4gNzsNCisgICAgICAgICAgICAgICAgaWYgKCFjdXJfZiAmJiBuZXdfZikgew0K KyAgICAgICAgICAgICAgICAgICAgcy0+YnVmWzBdIHw9IDEgPDwgNzsNCisgICAgICAgICAgICAg ICAgfQ0KKyAgICAgICAgICAgICAgICBpbnQgY3VyX2xpZCA9IGZpcnN0X25hbF90eXBlICYgMHgz ZjsNCisgICAgICAgICAgICAgICAgaW50IG5ld19saWQgPSBuZXdfZmlyc3RfbmFsX3R5cGUgJiAw eDNmOw0KKyAgICAgICAgICAgICAgICBpZiAoY3VyX2xpZCA+IG5ld19saWQpIHsNCisgICAgICAg ICAgICAgICAgICAgIHMtPmJ1ZlswXSB8PSBuZXdfbGlkOw0KKyAgICAgICAgICAgICAgICB9DQor ICAgICAgICAgICAgICAgIGludCBjdXJfdGlkID0gbGFzdF9uYWxfdHlwZSAmIDB4MDc7DQorICAg ICAgICAgICAgICAgIGludCBuZXdfdGlkID0gbmV3X2xhc3RfbmFsX3R5cGUgJiAweDA3Ow0KKyAg ICAgICAgICAgICAgICBpZiAoY3VyX3RpZCA+IG5ld190aWQpIHsNCisgICAgICAgICAgICAgICAg ICAgIHMtPmJ1ZlsxXSB8PSBuZXdfdGlkOw0KICAgICAgICAgICAgICAgICB9DQogICAgICAgICAg ICAgfQ0KICAgICAgICAgICAgIEFWX1dCMTYocy0+YnVmX3B0ciwgc2l6ZSk7DQpAQCAtMTAwLDYg KzEyOSw3IEBAIHN0YXRpYyB2b2lkIG5hbF9zZW5kKEFWRm9ybWF0Q29udGV4dCAqczEsIGNvbnN0 IHVpbnQ4X3QgKmJ1ZiwgaW50IHNpemUsIGludCBsYXN0DQogICAgICAgICB9DQogICAgIH0gZWxz ZSB7DQogICAgICAgICBpbnQgZmxhZ19ieXRlLCBoZWFkZXJfc2l6ZTsNCisgICAgICAgIHVpbnQ4 X3QgbmFsX3R5cGU7DQogICAgICAgICBmbHVzaF9idWZmZXJlZChzMSwgMCk7DQogICAgICAgICBp ZiAoY29kZWMgPT0gQVZfQ09ERUNfSURfSDI2NCAmJiAocy0+ZmxhZ3MgJiBGRl9SVFBfRkxBR19I MjY0X01PREUwKSkgew0KICAgICAgICAgICAgIGF2X2xvZyhzMSwgQVZfTE9HX0VSUk9SLA0KQEAg LTEwOSwyMCArMTM5LDIwIEBAIHN0YXRpYyB2b2lkIG5hbF9zZW5kKEFWRm9ybWF0Q29udGV4dCAq czEsIGNvbnN0IHVpbnQ4X3QgKmJ1ZiwgaW50IHNpemUsIGludCBsYXN0DQogICAgICAgICB9DQog ICAgICAgICBhdl9sb2coczEsIEFWX0xPR19ERUJVRywgIk5BTCBzaXplICVkID4gJWRcbiIsIHNp emUsIHMtPm1heF9wYXlsb2FkX3NpemUpOw0KICAgICAgICAgaWYgKGNvZGVjID09IEFWX0NPREVD X0lEX0gyNjQpIHsNCi0gICAgICAgICAgICB1aW50OF90IHR5cGUgPSBidWZbMF0gJiAweDFGOw0K KyAgICAgICAgICAgIG5hbF90eXBlID0gYnVmWzBdICYgMHgxRjsNCiAgICAgICAgICAgICB1aW50 OF90IG5yaSA9IGJ1ZlswXSAmIDB4NjA7DQogICAgICAgICAgICAgIHMtPmJ1ZlswXSA9IDI4OyAg ICAgICAgLyogRlUgSW5kaWNhdG9yOyBUeXBlID0gMjggLS0tPiBGVS1BICovDQogICAgICAgICAg ICAgcy0+YnVmWzBdIHw9IG5yaTsNCi0gICAgICAgICAgICBzLT5idWZbMV0gPSB0eXBlOw0KKyAg ICAgICAgICAgIHMtPmJ1ZlsxXSA9IG5hbF90eXBlOw0KICAgICAgICAgICAgIHMtPmJ1ZlsxXSB8 PSAxIDw8IDc7DQogICAgICAgICAgICAgYnVmICArPSAxOw0KICAgICAgICAgICAgIHNpemUgLT0g MTsNCiAgICAgICAgICAgICAgZmxhZ19ieXRlICAgPSAxOw0KICAgICAgICAgICAgIGhlYWRlcl9z aXplID0gMjsNCi0gICAgICAgIH0gZWxzZSB7DQotICAgICAgICAgICAgdWludDhfdCBuYWxfdHlw ZSA9IChidWZbMF0gPj4gMSkgJiAweDNGOw0KKyAgICAgICAgfSBlbHNlIGlmIChjb2RlYyA9PSBB Vl9DT0RFQ19JRF9IRVZDKSB7DQorICAgICAgICAgICAgbmFsX3R5cGUgPSAoYnVmWzBdID4+IDEp ICYgMHgzRjsNCiAgICAgICAgICAgICAvKg0KICAgICAgICAgICAgICAqIGNyZWF0ZSB0aGUgSEVW QyBwYXlsb2FkIGhlYWRlciBhbmQgdHJhbnNtaXQgdGhlIGJ1ZmZlciBhcyBmcmFnbWVudGF0aW9u IHVuaXRzIChGVSkNCiAgICAgICAgICAgICAgKg0KQEAgLTE1NCw4ICsxODQsNTQgQEAgc3RhdGlj IHZvaWQgbmFsX3NlbmQoQVZGb3JtYXRDb250ZXh0ICpzMSwgY29uc3QgdWludDhfdCAqYnVmLCBp bnQgc2l6ZSwgaW50IGxhc3QNCiAgICAgICAgICAgICAgKi8NCiAgICAgICAgICAgICBzLT5idWZb Ml0gID0gbmFsX3R5cGU7DQogICAgICAgICAgICAgLyogc2V0IHRoZSBTIGJpdDogbWFyayBhcyBz dGFydCBmcmFnbWVudCAqLw0KLSAgICAgICAgICAgIHMtPmJ1ZlsyXSB8PSAxIDw8IDc7DQorICAg ICAgICAgICAgcy0+YnVmWzFdID0gKHMtPmJ1ZlsxXSAmIDB4MDcpIHwgKDI5IDw8IDMpOw0KKw0K KyAgICAgICAgICAgIC8qIHBhc3MgdGhlIG9yaWdpbmFsIE5BTCBoZWFkZXIgKi8NCisgICAgICAg ICAgICBidWYgICs9IDI7DQorICAgICAgICAgICAgc2l6ZSAtPSAyOw0KKw0KKyAgICAgICAgICAg IGZsYWdfYnl0ZSAgID0gMjsNCisgICAgICAgICAgICBoZWFkZXJfc2l6ZSA9IDM7DQorICAgICAg ICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHMtPmJ1ZlswXSA9IGJ1ZlswXTsNCisgICAgICAgICAg ICBzLT5idWZbMV0gPSBidWZbMV07DQorICAgICAgICAgICAgLyoNCisgICAgICAgICAgICAgKiBj cmVhdGUgdGhlIFZWQyBwYXlsb2FkIGhlYWRlciBhbmQgdHJhbnNtaXQgdGhlIGJ1ZmZlciBhcyBm cmFnbWVudGF0aW9uIHVuaXRzIChGVSkNCisgICAgICAgICAgICAgKg0KKyAgICAgICAgICAgICAq ICAgKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rDQorICAgICAgICAgICAgICogICB8 MHwxfDJ8M3w0fDV8Nnw3fDB8MXwyfDN8NHw1fDZ8N3wNCisgICAgICAgICAgICAgKiAgICstKy0r LSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKw0KKyAgICAgICAgICAgICAqICAgfEZ8WnwgTGF5 ZXJJRCAgIHwgVHlwZSAgICB8IFRJRCB8DQorICAgICAgICAgICAgICogICArLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLSsNCisgICAgICAgICAgICAgKiAgICAgIEYgICAgICAgPSAwDQor ICAgICAgICAgICAgICogICAgICBUeXBlICAgID0gMjkgKGZyYWdtZW50YXRpb24gdW5pdCAoRlUp KQ0KKyAgICAgICAgICAgICAqICAgICAgTGF5ZXJJZCA9IDANCisgICAgICAgICAgICAgKiAgICAg IFRJRCAgICAgPSAxDQorICAgICAgICAgICAgICovDQorICAgICAgICAgICAgbmFsX3R5cGUgPSAo YnVmWzFdID4+IDMpICYgMHgxRjsNCisgICAgICAgICAgICBzLT5idWZbMV0gPSAocy0+YnVmWzFd ICYgMHgwNykgfCAoMjkgPDwgMyk7DQogKyAgICAgICAgICAgIC8qDQorICAgICAgICAgICAgICog ICAgIGNyZWF0ZSB0aGUgRlUgaGVhZGVyDQorICAgICAgICAgICAgICoNCisgICAgICAgICAgICAg KiAgICAgMCAxIDIgMyA0IDUgNiA3DQorICAgICAgICAgICAgICogICAgICstLS0tLS0tLS0tLS0t LS0rDQorICAgICAgICAgICAgICogICAgIHwwfDF8MnwzfDR8NXw2fDd8DQorICAgICAgICAgICAg ICogICAgICstKy0rLSstKy0rLSstKy0rDQorICAgICAgICAgICAgICogICAgIHxTfEV8UHwgRnVU eXBlIHwNCisgICAgICAgICAgICAgKiAgICAgKy0tLS0tLS0tLS0tLS0tLSsNCisgICAgICAgICAg ICAgKiAgICAgICBTICAgICAgID0gdmFyaWFibGUNCisgICAgICAgICAgICAgKiAgICAgICBFICAg ICAgID0gdmFyaWFibGUNCisgICAgICAgICAgICAgKiAgICAgICBQICAgICAgID0gdmFyaWFibGUN CisgICAgICAgICAgICAgKiAgICAgICBGdVR5cGUgID0gTkFMIHVuaXQgdHlwZQ0KKyAgICAgICAg ICAgICAqLw0KKyAgICAgICAgICAgIHMtPmJ1ZlsyXSAgPSBuYWxfdHlwZTsNCisgICAgICAgICAg ICAvKiBzZXQgdGhlIFMgYml0OiBtYXJrIGFzIHN0YXJ0IGZyYWdtZW50ICovDQorICAgICAgICAg ICAgcy0+YnVmWzJdIHw9IDEgPDwgNzsNCisgICAgICAgICAgICAvLyBTZXQgdGhlIFAgYml0IGlm IGl0J3MgdGhlIGxhc3QgZnJhZ21lbnQgYW5kIGlmIGl0J3MgYSBWQ0wgTkFMIHVuaXQNCisgICAg ICAgICAgICBpZiAobmFsX3R5cGUgPD0gMTEpIHsNCisgICAgICAgICAgICAgICAgcy0+YnVmWzJd ICY9IH4oMSA8PCA1KTsgIC8vIENsZWFyIHRoZSBQIGJpdCBvdGhlcndpc2UNCisgICAgICAgICAg ICB9DQogICAgICAgICAgICAgLyogcGFzcyB0aGUgb3JpZ2luYWwgTkFMIGhlYWRlciAqLw0KICAg ICAgICAgICAgIGJ1ZiAgKz0gMjsNCiAgICAgICAgICAgICBzaXplIC09IDI7DQpAQCAtMTcwLDgg KzI0NiwxNCBAQCBzdGF0aWMgdm9pZCBuYWxfc2VuZChBVkZvcm1hdENvbnRleHQgKnMxLCBjb25z dCB1aW50OF90ICpidWYsIGludCBzaXplLCBpbnQgbGFzdA0KICAgICAgICAgICAgIGJ1ZiAgKz0g cy0+bWF4X3BheWxvYWRfc2l6ZSAtIGhlYWRlcl9zaXplOw0KICAgICAgICAgICAgIHNpemUgLT0g cy0+bWF4X3BheWxvYWRfc2l6ZSAtIGhlYWRlcl9zaXplOw0KICAgICAgICAgICAgIHMtPmJ1Zltm bGFnX2J5dGVdICY9IH4oMSA8PCA3KTsNCisgICAgICAgICAgICBpZiAoY29kZWMgPT0gQVZfQ09E RUNfSURfVlZDICYmIG5hbF90eXBlIDw9IDExKSB7DQorICAgICAgICAgICAgICAgIHMtPmJ1Zltm bGFnX2J5dGVdICY9IH4oMSA8PCA1KTsgIC8vIENsZWFyIHRoZSBQIGJpdCBvdGhlcndpc2UNCisg ICAgICAgICAgICB9DQogICAgICAgICB9DQogICAgICAgICBzLT5idWZbZmxhZ19ieXRlXSB8PSAx IDw8IDY7DQorICAgICAgICBpZiAoY29kZWMgPT0gQVZfQ09ERUNfSURfVlZDICYmIG5hbF90eXBl IDw9IDExKSB7DQorICAgICAgICAgICAgcy0+YnVmW2ZsYWdfYnl0ZV0gfD0gMSA8PCA1OyAgLy8g U2V0IHRoZSBQIGJpdA0KKyAgICAgICAgfQ0KICAgICAgICAgbWVtY3B5KCZzLT5idWZbaGVhZGVy X3NpemVdLCBidWYsIHNpemUpOw0KICAgICAgICAgZmZfcnRwX3NlbmRfZGF0YShzMSwgcy0+YnVm LCBzaXplICsgaGVhZGVyX3NpemUsIGxhc3QpOw0KICAgICB9DQpkaWZmIC0tZ2l0IGEvbGliYXZm b3JtYXQvc2RwLmMgYi9saWJhdmZvcm1hdC9zZHAuYw0KaW5kZXggY2NmYWE4YWZmNS4uMmZiZjE3 M2U0MSAxMDA2NDQNCi0tLSBhL2xpYmF2Zm9ybWF0L3NkcC5jDQorKysgYi9saWJhdmZvcm1hdC9z ZHAuYw0KQEAgLTMzLDYgKzMzLDcgQEANCiAjaW5jbHVkZSAiaW50ZXJuYWwuaCINCiAjaW5jbHVk ZSAiYXZjLmgiDQogI2luY2x1ZGUgImhldmMuaCINCisjaW5jbHVkZSAidnZjLmgiDQogI2luY2x1 ZGUgInJ0cC5oIg0KICNpbmNsdWRlICJ2ZXJzaW9uLmgiDQogI2lmIENPTkZJR19ORVRXT1JLDQpA QCAtMzQ3LDYgKzM0OCwxNzYgQEAgZXJyOg0KICAgICByZXR1cm4gcmV0Ow0KIH0NCiArDQorc3Rh dGljIGludCBjYWxjdWxhdGVfcHRsX3NpemUodWludDhfdCAqZXh0cmFkYXRhKSB7DQorICAgIGlu dCBvZmZzZXQgPSAwOw0KKyAgICAvKg0KKyAgICAgICAgKiB1bnNpZ25lZCBpbnQoOSkgb2xzX2lk eDsNCisgICAgICAgICogdW5zaWduZWQgaW50KDMpIG51bV9zdWJsYXllcnM7DQorICAgICAgICAq IHVuc2lnbmVkIGludCgyKSBjb25zdGFudF9mcmFtZV9yYXRlOw0KKyAgICAgICAgKiB1bnNpZ25l ZCBpbnQoMikgY2hyb21hX2Zvcm1hdF9pZGM7ICAgICAqLw0KKyAgICB1aW50OF90IG51bV9zdWJs YXllcnMgPSAoQVZfUkIxNigmZXh0cmFkYXRhW29mZnNldF0pID4+IDQpICYgMHgwNzsNCisgICAg b2Zmc2V0ICs9IDI7DQorICAgIC8qICB1bnNpZ25lZCBpbnQoMykgYml0X2RlcHRoX21pbnVzODsN CisgICAgICAgIGJpdCg1KSByZXNlcnZlZCA9IKGuMTExMTGhr2I7ICovDQorICAgIG9mZnNldCAr PSAxOw0KKyAgICAvKiAgYml0KDIpIHJlc2VydmVkID0goa4wMKGvYjsNCisgICAgICAgIHVuc2ln bmVkIGludCAoNikgbnVtX2J5dGVzX2NvbnN0cmFpbnRfaW5mbyAqLw0KKyAgICB1aW50OF90IG51 bV9ieXRlc19jb25zdHJhaW50X2luZm8gPSBBVl9SQjgoJmV4dHJhZGF0YVtvZmZzZXRdKSAmIDB4 M2Y7DQorICAgIG9mZnNldCArPSAxOw0KKyAgICAvKiAgdW5zaWduZWQgaW50ICg3KSBnZW5lcmFs X3Byb2ZpbGVfaWRjDQorICAgICAgICB1bnNpZ25lZCBpbnQgKDEpIGdlbmVyYWxfdGllcl9mbGFn ICovDQorICAgIG9mZnNldCArPSAxOw0KKyAgICAvKiAgdW5zaWduZWQgaW50ICg4KSBnZW5lcmFs X2xldmVsX2lkYyAqLw0KKyAgICBvZmZzZXQgKz0gMTsNCisgICAgLyoNCisgICAgKiAgIHVuc2ln bmVkIGludCAoMSkgcHRsX2ZyYW1lX29ubHlfY29uc3RyYWludF9mbGFnDQorICAgICogICB1bnNp Z25lZCBpbnQgKDEpIHB0bF9tdWx0aWxheWVyX2VuYWJsZWRfZmxhZw0KKyAgICAqICAgdW5zaWdu ZWQgaW50ICg4Km51bV9ieXRlc19jb25zdHJhaW50X2luZm8gLTIpIGdlbmVyYWxfY29uc3RyYWlu dF9pbmZvICovDQorICAgIG9mZnNldCArPSBudW1fYnl0ZXNfY29uc3RyYWludF9pbmZvOw0KKw0K KyAgICBpZiAobnVtX3N1YmxheWVycyA+IDEpIHsNCisgICAgICAgIC8vIHB0bF9zdWJsYXllcl9s ZXZlbF9wcmVzZW50X2ZsYWdzDQorICAgICAgICB1aW50OF90IHB0bF9zdWJsYXllcl9sZXZlbF9w cmVzZW50X2ZsYWdzID0gZXh0cmFkYXRhW29mZnNldF07DQorICAgICAgICBvZmZzZXQgKz0gMTsN CisgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgbnVtYmVyIG9mIHN1YmxheWVyX2xldmVsX2lkYyBi eXRlcw0KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fc3VibGF5ZXJzIC0gMTsgaSsr KSB7DQorICAgICAgICAgICAgaWYgKHB0bF9zdWJsYXllcl9sZXZlbF9wcmVzZW50X2ZsYWdzICYg KDEgPDwgaSkpIHsNCisgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDE7IC8vIEFkZCBhIGJ5dGUg Zm9yIGVhY2ggc3VibGF5ZXJfbGV2ZWxfaWRjDQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0K KyAgICB9DQorICAgIC8qICB1bnNpZ25lZCBpbnQoOCkgbnVtX3N1Yl9wcm9maWxlczsgKi8NCisg ICAgdWludDhfdCBwdGxfbnVtX3N1Yl9wcm9maWxlcyA9IGV4dHJhZGF0YVtvZmZzZXRdOw0KKyAg ICBvZmZzZXQgKz0gMTsNCisgICAgLyogIHVuc2lnbmVkIGludCgzMikgZ2VuZXJhbF9zdWJfcHJv ZmlsZV9pZGNbal07ICovDQorICAgIG9mZnNldCArPSA0ICogcHRsX251bV9zdWJfcHJvZmlsZXM7 DQorICAgIC8vRW5kIG9mIFZ2Y1BUTFJlY29yZA0KKyAgICAvKg0KKyAgICAqICAgdW5zaWduZWQg aW50KDE2KSBtYXhfcGljdHVyZV93aWR0aDsqLw0KKyAgICBvZmZzZXQgKz0gMjsNCisgICAgLyoN CisgICAgKiAgIHVuc2lnbmVkIGludCgxNikgbWF4X3BpY3R1cmVfaGVpZ2h0OyovDQorICAgIG9m ZnNldCArPSAyOw0KKyAgICAvKg0KKyAgICAqICAgdW5zaWduZWQgaW50KDE2KSBhdmdfZnJhbWVf cmF0ZTsgKi8NCisgICAgb2Zmc2V0ICs9IDI7DQorICAgIHJldHVybiBvZmZzZXQ7DQorfQ0KKw0K K3N0YXRpYyBpbnQgZXh0cmFkYXRhMnBzZXRzX3Z2Y2MoY29uc3QgQVZDb2RlY1BhcmFtZXRlcnMg KnBhciwgY2hhciAqKm91dCkNCit7DQorICAgIGNoYXIgKnBzZXRzOw0KKyAgICB1aW50OF90ICpl eHRyYWRhdGEgPSBwYXItPmV4dHJhZGF0YTsNCisgICAgaW50IGV4dHJhZGF0YV9zaXplID0gcGFy LT5leHRyYWRhdGFfc2l6ZTsNCisgICAgdWludDhfdCAqdG1wYnVmID0gTlVMTDsNCisgICAgaW50 IHBzX3Bvc1szXSA9IHsgMCB9Ow0KKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHBzX25h bWVzWzNdID0geyAidnBzIiwgInNwcyIsICJwcHMiIH07DQorICAgIGludCBudW1fYXJyYXlzLCBu dW1fbmFsdXM7DQorICAgIGludCBwb3MsIGksIGosIHJldCA9IDA7DQorDQorICAgICpvdXQgPSBO VUxMOw0KKw0KKyAgICBpZiAocGFyLT5leHRyYWRhdGFbMF0gIT0gMSkgew0KKyAgICAgICAgQVZJ T0NvbnRleHQgKnBiOw0KKw0KKyAgICAgICAgcmV0ID0gYXZpb19vcGVuX2R5bl9idWYoJnBiKTsN CisgICAgICAgIGlmIChyZXQgPCAwKQ0KKyAgICAgICAgICAgIHJldHVybiByZXQ7DQorDQorICAg ICAgICByZXQgPSBmZl9pc29tX3dyaXRlX3Z2Y2MocGIsIHBhci0+ZXh0cmFkYXRhLCBwYXItPmV4 dHJhZGF0YV9zaXplLCAwKTsNCisgICAgICAgIGlmIChyZXQgPCAwKSB7DQorICAgICAgICAgICAg YXZpb19jbG9zZV9keW5fYnVmKHBiLCAmdG1wYnVmKTsNCisgICAgICAgICAgICBnb3RvIGVycjsN CisgICAgICAgIH0NCisgICAgICAgIGV4dHJhZGF0YV9zaXplID0gYXZpb19jbG9zZV9keW5fYnVm KHBiLCAmZXh0cmFkYXRhKTsNCisgICAgICAgIHRtcGJ1ZiA9IGV4dHJhZGF0YTsNCisgICAgfQ0K Kw0KKyAgICBpbnQgcHRsX3ByZXNlbnRfZmxhZyA9IChleHRyYWRhdGFbMF0gJiAweDAxKTsNCisN CisgICAgcG9zID0gMTsgLy8gU3RhcnQgYWZ0ZXIgdGhlIGluaXRpYWwgY29uZmlndXJhdGlvbiBi eXRlDQorICAgIGlmIChwdGxfcHJlc2VudF9mbGFnKSB7DQorICAgICAgICAvLyBQVEwgaXMgcHJl c2VudCwgc28gcGFyc2UgUFRMIGZpZWxkcyAodGhlIG51bWJlciBvZiBieXRlcyBkZXBlbmRzIG9u IFBUTCBzdHJ1Y3R1cmUpDQorICAgICAgICBwb3MgKz0gY2FsY3VsYXRlX3B0bF9zaXplKGV4dHJh ZGF0YSArIDEpOw0KKyAgICB9DQorICAgIGlmIChwb3MgKyAxID4gZXh0cmFkYXRhX3NpemUpDQor ICAgICAgICBnb3RvIGVycjsNCisgICAgbnVtX2FycmF5cyA9IGV4dHJhZGF0YVtwb3MrK107DQor ICAgIGZvciAoaSA9IDA7IGkgPCBudW1fYXJyYXlzOyBpKyspIHsNCisgICAgICAgIGludCBudW1f bmFsdXMsIG5hbHVfdHlwZTsNCisgICAgICAgIGlmIChwb3MgKyAzID4gZXh0cmFkYXRhX3NpemUp DQorICAgICAgICAgICAgZ290byBlcnI7DQorICAgICAgICBuYWx1X3R5cGUgPSBleHRyYWRhdGFb cG9zXSAmIDB4MWY7DQorICAgICAgICBpZiAobmFsdV90eXBlID09IDE0KSAvLyBWUFMNCisgICAg ICAgICAgICBwc19wb3NbMF0gPSBwb3M7DQorICAgICAgICBlbHNlIGlmIChuYWx1X3R5cGUgPT0g MTUpIC8vIFNQUw0KKyAgICAgICAgICAgIHBzX3Bvc1sxXSA9IHBvczsNCisgICAgICAgIGVsc2Ug aWYgKG5hbHVfdHlwZSA9PSAxNikgLy8gUFBTDQorICAgICAgICAgICAgcHNfcG9zWzJdID0gcG9z Ow0KKyAgICAgICAgbnVtX25hbHVzID0gQVZfUkIxNigmZXh0cmFkYXRhW3BvcyArIDFdKTsNCisg ICAgICAgIHBvcyArPSAzOw0KKyAgICAgICAgZm9yIChqID0gMDsgaiA8IG51bV9uYWx1czsgaisr KSB7DQorICAgICAgICAgICAgaW50IGxlbjsNCisgICAgICAgICAgICBpZiAocG9zICsgMiA+IGV4 dHJhZGF0YV9zaXplKQ0KKyAgICAgICAgICAgICAgICBnb3RvIGVycjsNCisgICAgICAgICAgICBs ZW4gPSBBVl9SQjE2KCZleHRyYWRhdGFbcG9zXSk7DQorICAgICAgICAgICAgcG9zICs9IDI7DQor ICAgICAgICAgICAgaWYgKHBvcyArIGxlbiA+IGV4dHJhZGF0YV9zaXplKQ0KKyAgICAgICAgICAg ICAgICBnb3RvIGVycjsNCisgICAgICAgICAgICBwb3MgKz0gbGVuOw0KKyAgICAgICAgfQ0KKyAg ICB9DQorICAgIGlmICghcHNfcG9zWzFdIHx8ICFwc19wb3NbMl0pDQorICAgICAgICBnb3RvIGVy cjsNCisgICAgcHNldHMgPSBhdl9tYWxsb2N6KE1BWF9QU0VUX1NJWkUpOw0KKyAgICBpZiAoIXBz ZXRzKSB7DQorICAgICAgICByZXQgPSBBVkVSUk9SKEVOT01FTSk7DQorICAgICAgICBnb3RvIGVy cjsNCisgICAgfQ0KKw0KKyAgICBwc2V0c1swXSA9ICdcMCc7DQorDQorICAgIGZvciAoaSA9IDA7 IGkgPCAzOyBpKyspIHsNCisgICAgICAgIGlmICghcHNfcG9zW2ldKSB7DQorICAgICAgICAgICAg Y29udGludWU7DQorICAgICAgICB9DQorICAgICAgICBwb3MgPSBwc19wb3NbaV07DQorDQorICAg ICAgICBpZiAoaSA+IDAgJiYgcHNfcG9zW2ktMV0pDQorICAgICAgICAgICAgYXZfc3RybGNhdChw c2V0cywgIjsgIiwgTUFYX1BTRVRfU0laRSk7DQorICAgICAgICBhdl9zdHJsY2F0Zihwc2V0cywg TUFYX1BTRVRfU0laRSwgInNwcm9wLSVzPSIsIHBzX25hbWVzW2ldKTsNCisNCisgICAgICAgIC8v IFNraXBwaW5nIGJvdW5kYXJ5IGNoZWNrcyBpbiB0aGUgaW5wdXQgaGVyZTsgd2UndmUgYWxyZWFk eSB0cmF2ZXJzZWQNCisgICAgICAgIC8vIHRoZSB3aG9sZSBodmNjIHN0cnVjdHVyZSBhYm92ZSB3 aXRob3V0IGlzc3Vlcw0KKyAgICAgICAgbnVtX25hbHVzID0gQVZfUkIxNigmZXh0cmFkYXRhW3Bv cyArIDFdKTsNCisgICAgICAgIHBvcyArPSAzOw0KKyAgICAgICAgZm9yIChqID0gMDsgaiA8IG51 bV9uYWx1czsgaisrKSB7DQorICAgICAgICAgICAgaW50IGxlbiA9IEFWX1JCMTYoJmV4dHJhZGF0 YVtwb3NdKTsNCisgICAgICAgICAgICBpbnQgc3RycG9zOw0KKyAgICAgICAgICAgIHBvcyArPSAy Ow0KKyAgICAgICAgICAgIGlmIChqID4gMCkNCisgICAgICAgICAgICAgICAgYXZfc3RybGNhdChw c2V0cywgIiwiLCBNQVhfUFNFVF9TSVpFKTsNCisgICAgICAgICAgICBzdHJwb3MgPSBzdHJsZW4o cHNldHMpOw0KKyAgICAgICAgICAgIGlmICghYXZfYmFzZTY0X2VuY29kZShwc2V0cyArIHN0cnBv cywgTUFYX1BTRVRfU0laRSAtIHN0cnBvcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJmV4dHJhZGF0YVtwb3NdLCBsZW4pKSB7DQorICAgICAgICAgICAgICAgIGF2X2ZyZWUo cHNldHMpOw0KKyAgICAgICAgICAgICAgICBnb3RvIGVycjsNCisgICAgICAgICAgICB9DQorICAg ICAgICAgICAgcG9zICs9IGxlbjsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICBhdl9mcmVlKHRt cGJ1Zik7DQorDQorICAgICpvdXQgPSBwc2V0czsNCisgICAgcmV0dXJuIDA7DQorZXJyOg0KKyAg ICBpZiAocmV0ID49IDApDQorICAgICAgICByZXQgPSBBVkVSUk9SX0lOVkFMSUREQVRBOw0KKyAg ICBhdl9mcmVlKHRtcGJ1Zik7DQorICAgIHJldHVybiByZXQ7DQorfQ0KKw0KIHN0YXRpYyBpbnQg ZXh0cmFkYXRhMmNvbmZpZyhBVkZvcm1hdENvbnRleHQgKnMsIGNvbnN0IEFWQ29kZWNQYXJhbWV0 ZXJzICpwYXIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipvdXQpDQogew0K QEAgLTU3OSw2ICs3NTAsMTcgQEAgc3RhdGljIGludCBzZHBfd3JpdGVfbWVkaWFfYXR0cmlidXRl cyhjaGFyICpidWZmLCBpbnQgc2l6ZSwgY29uc3QgQVZTdHJlYW0gKnN0LA0KICAgICAgICAgICAg IGF2X3N0cmxjYXRmKGJ1ZmYsIHNpemUsICJhPWZtdHA6JWQgJXNcclxuIiwNCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZF90eXBlLCBjb25maWcpOw0KICAgICAg ICAgYnJlYWs7DQorICAgIGNhc2UgQVZfQ09ERUNfSURfVlZDOg0KKyAgICAgICAgaWYgKHAtPmV4 dHJhZGF0YV9zaXplKSB7DQorICAgICAgICAgICAgcmV0ID0gZXh0cmFkYXRhMnBzZXRzX3Z2Y2Mo cCwgJmNvbmZpZyk7DQorICAgICAgICAgICAgaWYgKHJldCA8IDApDQorICAgICAgICAgICAgICAg IHJldHVybiByZXQ7DQorICAgICAgICB9DQorICAgICAgICBhdl9zdHJsY2F0ZihidWZmLCBzaXpl LCAiYT1ydHBtYXA6JWQgSDI2Ni85MDAwMFxyXG4iLCBwYXlsb2FkX3R5cGUpOw0KKyAgICAgICAg aWYgKGNvbmZpZykNCisgICAgICAgICAgICBhdl9zdHJsY2F0ZihidWZmLCBzaXplLCAiYT1mbXRw OiVkICVzXHJcbiIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBheWxv YWRfdHlwZSwgY29uZmlnKTsNCisgICAgICAgIGJyZWFrOw0KICAgICBjYXNlIEFWX0NPREVDX0lE X01QRUc0Og0KICAgICAgICAgaWYgKHAtPmV4dHJhZGF0YV9zaXplKSB7DQogICAgICAgICAgICAg cmV0ID0gZXh0cmFkYXRhMmNvbmZpZyhmbXQsIHAsICZjb25maWcpOw0KLS0NCjIuMzQuMQ0KDQpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KZmZtcGVnLWRl dmVsIG1haWxpbmcgbGlzdA0KZmZtcGVnLWRldmVsQGZmbXBlZy5vcmc8bWFpbHRvOmZmbXBlZy1k ZXZlbEBmZm1wZWcub3JnPg0KaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZt cGVnLWRldmVsDQoNClRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbA0K ZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZzxtYWlsdG86ZmZtcGVnLWRldmVsLXJlcXVl c3RAZmZtcGVnLm9yZz4gd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuDQpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBs aXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9y IGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1 YnNjcmliZSIuCg==