From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2057.outbound.protection.outlook.com [40.107.22.57]) by sourceware.org (Postfix) with ESMTPS id 23A5F3846400 for ; Fri, 21 May 2021 15:13:02 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 23A5F3846400 Received: from AM6PR0502CA0064.eurprd05.prod.outlook.com (2603:10a6:20b:56::41) by VE1PR08MB4909.eurprd08.prod.outlook.com (2603:10a6:802:a8::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.23; Fri, 21 May 2021 15:12:59 +0000 Received: from AM5EUR03FT004.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:56:cafe::dd) by AM6PR0502CA0064.outlook.office365.com (2603:10a6:20b:56::41) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.26 via Frontend Transport; Fri, 21 May 2021 15:12:59 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; sourceware.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;sourceware.org; dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM5EUR03FT004.mail.protection.outlook.com (10.152.16.163) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4129.25 via Frontend Transport; Fri, 21 May 2021 15:12:58 +0000 Received: ("Tessian outbound 0f1e4509c199:v92"); Fri, 21 May 2021 15:12:58 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 2d4270ef7b509bb8 X-CR-MTA-TID: 64aa7808 Received: from 9740edfcb739.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 8DEA0B02-8121-4E0B-B9F4-0A34E5440431.1; Fri, 21 May 2021 15:12:52 +0000 Received: from EUR05-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 9740edfcb739.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 21 May 2021 15:12:52 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PpyuBTP+60/792+gx282/dIsmGR+oZmtKXXR4E1QYCP5CQpNfhmKiLX8iHvYOX7Z561RfhXWQCQAmrgy8YBRN6fE5296mLf3IzDI+9aHwSas89SOHCaEvqvmXwVB175aBWFGYJxISk0tg3FDY8cMvWMXEz/GvG4XGtHJzDTPb02YIxk3t0EUIUUeKZIQf1kiXBNb9RUkAEzRRSfxfm4iX3NDLAkYMOelUxmYJL9sPW0EGuB1tRtCmoAa/sOEvPqWlxo4UoaeSmAIm7sR96Fs7VY5LvMYG8JW1r8iLy9CW0uEL9UDgT4ct/fxMZjQYLcHP7tO6RqprYFifus67QpOoA== 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-SenderADCheck; bh=VITubT2J5Ccx6FEyshtmFzoAyXOuhx+JyB7TwbD7yOM=; b=FaGSH2GIf07lrL9TwB346F+KJiYYezE2fvZ0Tjrd61MVrT57rnYEEquFvB4vCktKB8oRGqV4JesUrj0L+6IgHUdTfD9jiHrbxMXIto8ANiFklUgWfFrySnVthScwyYI0uigMc/XhuzP6IVfRIhXDTEbvDgh5A1pcJz/2KHueSZHtnIiyrHhd8OKuRwrFP1VpQUsLhfke8tHq87cxxP7/vK943y4GyEYwbpO9wfJkCFC9QTWGKRFqwMPvgSOyaWniiHt8x/sUgGQX7+kBSEEtDsPA2Sk9858RONMquJEddP1kGIEnXz1Lqnur1pFS6kmCh0EWB4ssnooZo01BgdOLIA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none Received: from AM6PR08MB3957.eurprd08.prod.outlook.com (2603:10a6:20b:a2::14) by AM6PR08MB3717.eurprd08.prod.outlook.com (2603:10a6:20b:8e::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4129.28; Fri, 21 May 2021 15:12:49 +0000 Received: from AM6PR08MB3957.eurprd08.prod.outlook.com ([fe80::50f9:fd86:ade3:c4aa]) by AM6PR08MB3957.eurprd08.prod.outlook.com ([fe80::50f9:fd86:ade3:c4aa%4]) with mapi id 15.20.4129.031; Fri, 21 May 2021 15:12:49 +0000 From: Alan Hayward To: Luis Machado CC: "gdb-patches\\@sourceware.org" , "jhb@freebsd.org" , "david.spickett@linaro.org" , Catalin Marinas , nd Subject: Re: [PATCH] [AArch64] MTE corefile support Thread-Topic: [PATCH] [AArch64] MTE corefile support Thread-Index: AQHXTCNRQpQ8UorZG02DWJufm5So06ruDz+A Date: Fri, 21 May 2021 15:12:49 +0000 Message-ID: <8214C923-1DC2-4996-B070-FF248FE1669C@arm.com> References: <20210518202047.3492211-1-luis.machado@linaro.org> In-Reply-To: <20210518202047.3492211-1-luis.machado@linaro.org> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Apple Mail (2.3654.80.0.2.43) Authentication-Results-Original: linaro.org; dkim=none (message not signed) header.d=none;linaro.org; dmarc=none action=none header.from=arm.com; x-originating-ip: [82.24.190.200] x-ms-publictraffictype: Email X-MS-Office365-Filtering-Correlation-Id: d339709a-52f3-4da8-58d4-08d91c6aeb40 x-ms-traffictypediagnostic: AM6PR08MB3717:|VE1PR08MB4909: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:236;OLM:236; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: aZBCX2tdIT+rQcaXA8rjLpFBpQpL9GkwP410/6T3wngHFyAEFOiY8NwDewUfqXnX4FHNVDeCQJPzBFvqd1PS4z3f2+ddr2Gc+oAgBzi+nvlzslNJbs0BfmTpjnuG0/CZNcobXz7Lsn0pYURkjLQpMHq7vjXS67sNALkTwmwPuEYBC6kefEsMXwPhE0gCCV8OqDnEz3v15Fcsq083/QdFGY7hfmYonmIBohJw38Qs63uCztJ7zJenKy77snBcm5/aQ0zACKwwPFcxVX9jEvroAbs9srsKx1jwXPMfC+0LyIICOgMSlhcrEEeITJDu590x5CkgIsFKh1IoW7S6waipzt6j0/wH+JGmdbELAJtssiJljymbaW0K0hnsPrWl1PVF2+FB7i79ptIMtseObjnQyoxFPdIp84gQZcCGNbP3Bnbn4q9widIRj/XneulymmwmRL4k4njXTukiSnD77UBqlxqICjFSh5YuTnWvxzEAMVR6I+Fe6UE+QonHA4J7OlqXrEFVK9EqTlvvg6QfwZG+9oy1SQyqAcg0T983TiMARm5LIvZkLN8PynrZ3nevn3lHOKIG+/F6XxRFT6+0ehR5UoJJ9UKsnobngSbj/uuWwDRxr45DAn8b3d8GxV15cS2XRMI1X0QQiIaIwesmKPAzPdtAlF8L7DXHWYqCAUyPDQ+hhfsBXJ6XorVT4r44BaqETfu9sCOzGPOhP8Cgj5QGjKuBVX5j2zsu8xZMDK48zj4SJeC+8LcYTptllDXOCKkofQEMjuPbZ/csGFLsr4w5NQ== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM6PR08MB3957.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(346002)(39840400004)(396003)(136003)(376002)(366004)(83380400001)(66446008)(71200400001)(4326008)(76116006)(478600001)(66946007)(6916009)(66556008)(186003)(6506007)(36756003)(33656002)(8936002)(66476007)(122000001)(53546011)(91956017)(26005)(64756008)(38100700002)(316002)(2616005)(86362001)(5660300002)(6486002)(54906003)(8676002)(2906002)(30864003)(6512007)(45980500001)(559001)(579004); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: =?utf-8?B?ZXFySzlCMHBtK0xVMXdrSjBDZHcra01LVFJzUzQ4SURsWlhlcWVBRi9wMkdJ?= =?utf-8?B?amx5Uk9NcjJSRG5mRVU2cmc4aEdONzlabHZqM1BOMEkyWUJPeEhNUG9rVWFG?= =?utf-8?B?RWRTVzRRS1A1ejNZejJYS0c0eUFMdlRES2RWOFBmQitaL205UFA0amVBVkI0?= =?utf-8?B?Ly80OU10WTl5VFJqVlZvTGMwMjl5blpvcis3eWh0eEhSa3FpaVJsVVlaRU9n?= =?utf-8?B?R2xCZldSTkgyckhQcEhVYTFSYU1HU3pMMVFXV0pvaFZud2trb2JkOTQyQUZC?= =?utf-8?B?Wm5IM2o2N2dtYkhOUnZrUVBGVUYxK2FKdEtnakdMNC90ODk1c0EzVVJKblN6?= =?utf-8?B?dzQvejJNTkVaYlYrZm1CU3RrR25OZnJUdDRYN3UrM3l5cDBUbkl0TnFibVUy?= =?utf-8?B?bFVkbFNJNThXRDdvajFzdEplVmNnZ0RyOXUyNEdWSzZOSCtYZk4wcnh0QWNR?= =?utf-8?B?Z21GandMbGk0OGc0c2JWWGRzQUh1M0tkWVpza292M1BPQWtCZGFvZVZUYjMw?= =?utf-8?B?VTY0UUZNWVMrZUc3SjNGQlVYS21jT01WT2FLNi9ZdFloK1JjK1M2SkZyV0sz?= =?utf-8?B?V0NNaVVxbjY0a3oxY04yMnc0Vkg5dWJ6Z0FMT3I0VnNVc2FXMUdSRlRTWnFE?= =?utf-8?B?bU1tYXNLTjlZSDEvNGhaVEVKQVZHQ2lZekd3Zm1NLzBzcFY5YmExb3FIaS9C?= =?utf-8?B?MGZmYmx6cWg2aDVNdW1Rek9hVmJxUGlNOEN1Qk9SLzc0aEtrT2Jjd1psY1Qx?= =?utf-8?B?WUdHcWhSbHVyTy9waU9xellEVlZNMHA0d21PTG03c1d5ZnhGTjdHRUNma1Vw?= =?utf-8?B?K2dTNjlXT0Ewb3Y2QVhmUVFpZ1VrR2FZZFpFbmxadGR5Z0g1ME9wUEFuY1dy?= =?utf-8?B?eXAzcmM4bHRvNzBnb1l3SnVMTUsrM0RTTlJ6aHFvM00wd2J0NUNSallOS29T?= =?utf-8?B?OEFqRVowKys2T2gzdEluWEM5bWM5eHBnQVpHZWZkYkppTS96ekFXa3hsbHpP?= =?utf-8?B?M1MzWTFiSkJ6dE5DQ3d2THFjdk5BUDZ0aE1wT1VTY1ZXSXdkdXliSDlpdmtM?= =?utf-8?B?OWNiUjBBTmN6elY4ejN6RU8yU3o3Y2prSFNEa2hyem9VUDhWRFFsOC9yVkVU?= =?utf-8?B?YnV2M2RsQmxzMVZIaUtISEV1UysvVG92UEkvWXRFRW1xQkU0aE96Z2t4SGhU?= =?utf-8?B?cUFjbXlnQ3BRdS9ud1FiWlZHbEhhaHZxUGFaUENXb1FiQ2Q5aTl3YzJlYjRu?= =?utf-8?B?T2VZMUoxTlg4TEE3SHZhSlBScHRLbm5YU3RhQjcrb2pzZG16bDg3TG0zeCtz?= =?utf-8?B?WU5CTllqdFhBb1lIcytPNGowMVYwcEhWbWhhUEg0aGZ2NkQyS0orSmwwSTRi?= =?utf-8?B?K0lXYTJ2Z2JJc1I3dmQvWUxSTEFPeXpoamk2cWFaa3NoaDR2b09WQ0w3TTdu?= =?utf-8?B?Y2E3dEpMbHhHNlhFLzhuRnJxWWlMMUpHN0ZobzBOYnluUVZzQWE4WFM4c21h?= =?utf-8?B?azREeUhSNUltSytnMXp6clJyZkpIY3RnQ3orR0RqbTVrSVdTUmhSMXR1a0RN?= =?utf-8?B?dTErUWd0eUpIbUoxMldvTXE0aCthMVRoRUhoT1NLTXA5OEFDbUtTSzRBeU5z?= =?utf-8?B?VDR4dlJTaHdqUndFdUVIRkRvVUlRV3B1UVdBQlRxYSswM3lydnRKeEFnb3B2?= =?utf-8?B?QVVwNTdPanQ2Q04raVVQSW1xb1MzOEhSMkRQa0FnNFVVSU9PcVZKeS9Zb3BQ?= =?utf-8?Q?mQTI+9ebpDAcLPIFgIS2DekjwmduLvR2GPsxXbf?= Content-Type: text/plain; charset="utf-8" Content-ID: <3101D574D37C704CB302A780C2429031@eurprd08.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB3717 Original-Authentication-Results: linaro.org; dkim=none (message not signed) header.d=none;linaro.org; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM5EUR03FT004.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: aa75befd-db8c-4cac-6bb8-08d91c6ae5cc X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: LjAzNt9zt0D7NwSe8Ilw8naVS49UlHweCx2N7Z4XURq3R5ie5kk0U7D18fQug8+P2AUu+9G47euR0AbgJWum/fSWhRxrvqcE5BGg/QNW6BL7T9Gur/XfQ+SfIPzmDVGtLb1atL3JK0o3adAQXAGfqYYU97OzRwDf+EDBySRzvc4MVYWJk1O/pFM8AEdVOCkmU4Q4KLrDX16Doj1JaH6YgQ0hBhHpPa9HbtVhi6Fpxbbg5GhgHXCtzrBOode/hjdpmPlo4aE8a5F7opK465Sun8pjo3NUEmNJEUKM3EtaVSigUZCsvmIuDiHHYKJEsgz2/YX7lbNbhlNFihuKtw/OzEjtoMr3fwCl55wC5z83z+Iqcrxb/78VO5SOqj7IuoqNdBru+QQdteqPNAfFBSn7G7a3zez2gnB/M72Hbj6USEk2iMXvL3m3dHkqPgybDPh68yWTuDULx7nNBbF9TMtPm/VxCKu4VZve1GcPkdQs3CfQtov6mvm7bDFZj0pnoSyWh+NWrs0ESIWZX8jmJ/bEcd4k0/WQk2/X2Jrigw0jpn88n09u0lg0DvIRWAXzWAeW6DYnVPOzBsdZ7hRl1fu0T/po9xRGSQXPFP5Golou+icAVcUTUIte9kY+DaQQi0dSI4ECwvPgBrYgVbdHG9mhWJ2rhJpDz0kbVrsJres1Aa3627l0oBZTMmYzytqG2+eqVeQ9TyuXmTny40C4RE5BKUcnzVvEvL5wJ1UPXql594LFKL+jmaouZ5jvqBMFI1tjj6Vrq7gtusFQhH4ZIuH+XzGQnHesSwW/f1mT1ZSLHwU= X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(4636009)(39840400004)(376002)(346002)(136003)(396003)(46966006)(36840700001)(86362001)(356005)(2616005)(36756003)(83380400001)(336012)(186003)(2906002)(82310400003)(316002)(81166007)(54906003)(8676002)(26005)(8936002)(6486002)(6506007)(53546011)(478600001)(30864003)(47076005)(4326008)(6512007)(6862004)(5660300002)(36860700001)(70586007)(70206006)(33656002)(2004002); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 May 2021 15:12:58.7280 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d339709a-52f3-4da8-58d4-08d91c6aeb40 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: AM5EUR03FT004.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR08MB4909 X-Spam-Status: No, score=-14.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 May 2021 15:13:07 -0000 DQoNCj4gT24gMTggTWF5IDIwMjEsIGF0IDIxOjIwLCBMdWlzIE1hY2hhZG8gPGx1aXMubWFjaGFk b0BsaW5hcm8ub3JnPiB3cm90ZToNCj4gDQo+IFRlYWNoIEdEQiBob3cgdG8gZHVtcCBtZW1vcnkg dGFncyB3aGVuIHVzaW5nIHRoZSBnY29yZSBjb21tYW5kIGFuZCBob3cNCj4gdG8gcmVhZCB0aGVt IGJhY2sgZnJvbSBhIGNvcmUgZmlsZSBnZW5lcmF0ZWQgdmlhIGdjb3JlIG9yIHRoZSBrZXJuZWwu DQo+IA0KPiBFYWNoIHRhZ2dlZCBtZW1vcnkgcmFuZ2UgKGxpc3RlZCBpbiAvcHJvYy88cGlkPi9z bWFwcykgZ2V0cyBkdW1wZWQgdG8gaXRzDQo+IG93biBOVF9NRU1UQUcgbm90ZS4gQSBzZWN0aW9u IG5hbWVkICIubWVtdGFnIiBpcyBjcmVhdGVkIGZvciBlYWNoIG9mIHRob3NlDQo+IHdoZW4gcmVh ZGluZyB0aGUgY29yZSBmaWxlIGJhY2suDQo+IA0KPiBEdW1waW5nIG1lbW9yeSB0YWdzDQo+IC0N Cj4gDQo+IFdoZW4gdXNpbmcgdGhlIGdjb3JlIGNvbW1hbmQgdG8gZHVtcCBhIGNvcmUgZmlsZSwg R0RCIHdpbGwgZ28gdGhyb3VnaCB0aGUgbWFwcw0KPiBpbiAvcHJvYy88cGlkPi9zbWFwcyBsb29r aW5nIGZvciB0YWdnZWQgcmFuZ2VzLiBFYWNoIG9mIHRob3NlIGVudHJpZXMgZ2V0cw0KPiBwYXNz ZWQgdG8gYW4gYXJjaC1zcGVjaWZpYyBnZGJhcmNoIGhvb2sgdGhhdCBnZW5lcmF0ZXMgYSB2ZWN0 b3Igb2YgYmxvYnMgb2YNCj4gbWVtb3J5IHRhZyBkYXRhIHRoYXQgYXJlIGJsaW5kbHkgcHV0IGlu dG8gYSBOVF9NRU1UQUcgbm90ZS4NCj4gDQo+IFRoZSB2ZWN0b3IgaXMgdXNlZCBiZWNhdXNlIHdl IG1heSBoYXZlLCBpbiB0aGUgZnV0dXJlLCAgbXVsdGlwbGUgdGFnIHR5cGVzIGZvcg0KPiBhIHBh cnRpY3VsYXIgbWVtb3J5IHJhbmdlLg0KPiANCj4gRWFjaCBvZiB0aGUgTlRfTUVNVEFHIG5vdGVz IGhhdmUgYSBnZW5lcmljIGhlYWRlciBhbmQgYSBhcmNoLXNwZWNpZmljIGhlYWRlciwNCj4gbGlr ZSBzbzoNCj4gDQo+IHN0cnVjdCB0YWdfZHVtcF9oZWFkZXINCj4gew0KPiAgdWludDE2X3QgZm9y bWF0OyAvLyBPbmx5IE5UX01FTVRBR19UWVBFX0FBUkNIX01URSBhdCBwcmVzZW50DQo+ICB1aW50 NjRfdCBzdGFydF92bWE7DQo+ICB1aW50NjRfdCBlbmRfdm1hOw0KPiB9Ow0KPiANCj4gc3RydWN0 IHRhZ19kdW1wX210ZQ0KPiB7DQo+ICB1aW50MTZfdCBncmFudWxlX2J5dGVfc2l6ZTsNCj4gIHVp bnQxNl90IHRhZ19iaXRfc2l6ZTsNCj4gIHVpbnQxNl90IF9fdW51c2VkOw0KPiB9Ow0KPiANCj4g VGhlIG9ubHkgYml0cyBtZWFudCB0byBiZSBnZW5lcmljIGFyZSB0aGUgdGFnX2R1bXBfZm9ybWF0 LCBzdGFydF92bWEgYW5kDQo+IGVuZF92bWEgZmllbGRzLg0KPiANCj4gVGhlIGZvcm1hdC1zcGVj aWZpYyBkYXRhIGlzIHN1cHBvc2VkIHRvIGJlIG9wYXF1ZSBhbmQgb25seSB1c2VmdWwgZm9yIHRo ZQ0KPiBhcmNoLXNwZWNpZmljIGNvZGUuDQo+IA0KPiBXZSBjYW4gZXh0ZW5kIHRoZSBmb3JtYXQg aW4gdGhlIGZ1dHVyZSB0byBtYWtlIHJvb20gZm9yIG90aGVyIG1lbW9yeSB0YWcNCj4gbGF5b3V0 cy4NCj4gDQoNClRoaXMgaXMgYSB3aWRlciBxdWVzdGlvbiB0aGFuIHRoaXMgcGF0Y2ggLSBidXQg aXMgdGhlcmUgc29tZXBsYWNlIHRoaXMgZm9ybWF0IHdpbGwNCmJlIGRvY3VtZW50ZWQ/IElkZWFs bHkgZWl0aGVyIExpbnV4IG9yIEdEQiBuZWVkcyBzb21ldGhpbmcgd3JpdHRlbiBkb3duIGluDQp0 ZXh0IGZvcm1hdC4NCg0KQSBmZXcgbml0cyBiZWxvdyB0b28sIGJ1dCBtb3N0bHkgbG9va3MgZmlu ZS4NCg0KDQo+IFJlYWRpbmcgbWVtb3J5IHRhZ3MNCj4gLQ0KPiANCj4gV2hlbiByZWFkaW5nIGEg Y29yZSBmaWxlIHRoYXQgY29udGFpbnMgTlRfTUVNVEFHIGVudHJpZXMsIEdEQiB3aWxsIHVzZQ0K PiBhIGRpZmZlcmVudCBhcHByb2FjaCB0byBjaGVjayBmb3IgdGFnZ2VkIG1lbW9yeSByYW5nZS4g UmF0aGVyIHRoYW4gbG9va2luZw0KPiBhdCAvcHJvYy88cGlkPi9zbWFwcywgaXQgd2lsbCBub3cg bG9vayBmb3IgIi5tZW10YWciIHNlY3Rpb25zIHdpdGggdGhlIHJpZ2h0DQo+IG1lbW9yeSByYW5n ZS4NCj4gDQo+IFdoZW4gcmVhZGluZyB0YWdzLCBHREIgd2lsbCBub3cgdXNlIHRoZSBjb3JlIHRh cmdldCdzIGltcGxlbWVudGF0aW9uIG9mDQo+IGZldGNoX21lbXRhZ3MgKHN0b3JlX21lbXRhZ3Mg ZG9lc24ndCBleGlzdCBmb3IgY29yZSB0YXJnZXRzKS4gVGhlbiB0aGUgZGF0YQ0KPiBpcyBmZWQg aW50byBhbiBhcmNoLXNwZWNpZmljIGhvb2sgdGhhdCB3aWxsIGRlY29kZSB0aGUgbWVtb3J5IHRh ZyBmb3JtYXQgYW5kDQo+IHJldHVybiBhIHZlY3RvciBvZiB0YWdzLg0KPiANCj4gSSd2ZSBhZGRl ZCBhIHRlc3QgdG8gZXhlcmNpc2Ugd3JpdGluZyBhbmQgcmVhZGluZyBvZiBtZW1vcnkgdGFncyBp biBjb3JlDQo+IGZpbGVzLg0KPiANCj4gZ2RiL0NoYW5nZUxvZzoNCj4gDQo+IFlZWVktTU0tREQg IEx1aXMgTWFjaGFkbyAgPGx1aXMubWFjaGFkb0BsaW5hcm8ub3JnPg0KPiANCj4gCSogYWFyY2g2 NC1saW51eC10ZGVwLmM6IEluY2x1ZGUgZWxmL2NvbW1vbi5oLg0KPiAJKE1BWF9UQUdTX1RPX1RS QU5TRkVSKTogTmV3IGNvbnN0YW50Lg0KPiAJKGFhcmNoNjRfbGludXhfY3JlYXRlX21lbXRhZ19u b3Rlc19mcm9tX3JhbmdlKTogTmV3IGZ1bmN0aW9uLg0KPiAJKGFhcmNoNjRfbGludXhfZGVjb2Rl X21lbXRhZ19ub3RlKTogTGlrZXdpc2UuDQo+IAkoYWFyY2g2NF9saW51eF9pbml0X2FiaSk6IFJl Z2lzdGVyIG5ldyBjb3JlIGZpbGUgaG9va3MuDQo+IAkqIGFyY2gvYWFyY2g2NC1tdGUtbGludXgu aCAoQUFSQ0g2NF9NVEVfVEFHX0JJVF9TSVpFKTogTmV3IGNvbnN0YW50Lg0KPiAJKHN0cnVjdCB0 YWdfZHVtcF9oZWFkZXIpOiBOZXcgc3RydWN0Lg0KPiAJKHN0cnVjdCB0YWdfZHVtcF9tdGUpOiBO ZXcgc3RydWN0Lg0KPiAJKE1FTVRBR19OT1RFX0hFQURFUl9TSVpFKTogTmV3IGNvbnN0YW50Lg0K PiAJKiBjb3JlbG93LmMgKGNvcmVfdGFyZ2V0KSA8c3VwcG9ydHNfbWVtb3J5X3RhZ2dpbmcsIGZl dGNoX21lbXRhZ3M+OiBOZXcNCj4gCW1ldGhvZCBvdmVycmlkZXMuDQo+IAkqIGdkYmFyY2guYzog UmVnZW5lcmF0ZS4NCj4gCSogZ2RiYXJjaC5oOiBMaWtld2lzZS4NCj4gCSogZ2RiYXJjaC5zaCAo Y3JlYXRlX21lbXRhZ19ub3Rlc19mcm9tX3JhbmdlKTogTmV3IGhvb2suDQo+IAkoZGVjb2RlX21l bXRhZ19ub3RlKTogTGlrZXdpc2UuDQo+IAkqIGxpbnV4LXRkZXAuYyAobGludXhfYWRkcmVzc19p bl9tZW10YWdfcGFnZSk6IFJlbmFtZWQgdG8uLi4NCj4gCShsaW51eF9wcm9jZXNzX2FkZHJlc3Nf aW5fbWVtdGFnX3BhZ2UpOiAuLi4gdGhpcy4NCj4gCShsaW51eF9jb3JlX2ZpbGVfYWRkcmVzc19p bl9tZW10YWdfcGFnZSk6IE5ldyBmdW5jdGlvbi4NCj4gCShsaW51eF9hZGRyZXNzX2luX21lbXRh Z19wYWdlKTogTGlrZXdpc2UuDQo+IAkobGludXhfbWFrZV9tZW10YWdfY29yZWZpbGVfbm90ZXMp OiBMaWtld2lzZS4NCj4gCShsaW51eF9tYWtlX2NvcmVmaWxlX25vdGVzKTogSGFuZGxlIG1lbW9y eSB0YWcgbm90ZXMuDQo+IAkqIE5FV1M6IE1lbnRpb24gY29yZSBmaWxlIHN1cHBvcnQgZm9yIG1l bW9yeSB0YWdnaW5nLg0KPiANCj4gZ2RiL2RvYy9DaGFuZ2VMb2c6DQo+IA0KPiBZWVlZLU1NLURE ICBMdWlzIE1hY2hhZG8gIDxsdWlzLm1hY2hhZG9AbGluYXJvLm9yZz4NCj4gDQo+IAkqIGdkYi50 ZXhpbmZvIChBQXJjaDY0IE1lbW9yeSBUYWdnaW5nIEV4dGVuc2lvbik6IE1lbnRpb24gc3VwcG9y dA0KPiAJZm9yIG1lbW9yeSB0YWdnaW5nIGluIGNvcmUgZmlsZXMuDQo+IA0KPiBnZGIvdGVzdHN1 aXRlL0NoYW5nZUxvZzoNCj4gDQo+IFlZWVktTU0tREQgIEx1aXMgTWFjaGFkbyAgPGx1aXMubWFj aGFkb0BsaW5hcm8ub3JnPg0KPiANCj4gCSogZ2RiLmFyY2gvYWFyY2g2NC1tdGUtZ2NvcmUuYzog TmV3IGZpbGUuDQo+IAkqIGdkYi5hcmNoL2FhcmNoNjQtbXRlLWdjb3JlLmV4cDogTmV3IGZpbGUu DQo+IC0tLQ0KPiBnZGIvTkVXUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgNCArDQo+IGdkYi9hYXJjaDY0LWxpbnV4LXRkZXAuYyAgICAgICAgICAgICAgICAgICAgIHwg MTc5ICsrKysrKysrKysrKysrKysrKysNCj4gZ2RiL2FyY2gvYWFyY2g2NC1tdGUtbGludXguaCAg ICAgICAgICAgICAgICAgfCAgMjkgKysrDQo+IGdkYi9jb3JlbG93LmMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgIDg4ICsrKysrKysrKw0KPiBnZGIvZG9jL2dkYi50ZXhpbmZvICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgNCArDQo+IGdkYi9nZGJhcmNoLmMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDY0ICsrKysrKysNCj4gZ2RiL2dkYmFyY2guaCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTYgKysNCj4gZ2RiL2dkYmFyY2guc2ggICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKw0KPiBnZGIvbGludXgtdGRlcC5jICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE0MSArKysrKysrKysrKysrKy0NCj4gZ2RiL3Rl c3RzdWl0ZS9nZGIuYXJjaC9hYXJjaDY0LW10ZS1nY29yZS5jICAgfCAgOTMgKysrKysrKysrKw0K PiBnZGIvdGVzdHN1aXRlL2dkYi5hcmNoL2FhcmNoNjQtbXRlLWdjb3JlLmV4cCB8IDExNSArKysr KysrKysrKysNCj4gMTEgZmlsZXMgY2hhbmdlZCwgNzM2IGluc2VydGlvbnMoKyksIDMgZGVsZXRp b25zKC0pDQo+IGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIvdGVzdHN1aXRlL2dkYi5hcmNoL2FhcmNo NjQtbXRlLWdjb3JlLmMNCj4gY3JlYXRlIG1vZGUgMTAwNjQ0IGdkYi90ZXN0c3VpdGUvZ2RiLmFy Y2gvYWFyY2g2NC1tdGUtZ2NvcmUuZXhwDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZ2RiL05FV1MgYi9n ZGIvTkVXUw0KPiBpbmRleCBhYjY3OGFjZWM4Yi4uNThiOWY3MzlkNGYgMTAwNjQ0DQo+IC0tLSBh L2dkYi9ORVdTDQo+ICsrKyBiL2dkYi9ORVdTDQo+IEBAIC0zLDYgKzMsMTAgQEANCj4gDQo+ICoq KiBDaGFuZ2VzIHNpbmNlIEdEQiAxMA0KPiANCj4gKyogR0RCIG5vdyBzdXBwb3J0cyBkdW1waW5n IG1lbW9yeSB0YWcgZGF0YSBmb3IgQUFyY2g2NCBNVEUuICBJdCBhbHNvIHN1cHBvcnRzDQo+ICsg IHJlYWRpbmcgbWVtb3J5IHRhZyBkYXRhIGZvciBBQXJjaDY0IE1URSBmcm9tIGNvcmUgZmlsZXMg Z2VuZXJhdGVkIGJ5DQo+ICsgIHRoZSBnY29yZSBjb21tYW5kIG9yIHRoZSBMaW51eCBrZXJuZWwu DQo+ICsNCj4gKiBHREIgbm93IHN1cHBvcnRzIGdlbmVyYWwgbWVtb3J5IHRhZ2dpbmcgZnVuY3Rp b25hbGl0eSBpZiB0aGUgdW5kZXJseWluZw0KPiAgIGFyY2hpdGVjdHVyZSBzdXBwb3J0cyB0aGUg cHJvcGVyIHByaW1pdGl2ZXMgYW5kIGhvb2tzLiAgQ3VycmVudGx5IHRoaXMgaXMNCj4gICBlbmFi bGVkIG9ubHkgZm9yIEFBcmNoNjQgTVRFLg0KPiBkaWZmIC0tZ2l0IGEvZ2RiL2FhcmNoNjQtbGlu dXgtdGRlcC5jIGIvZ2RiL2FhcmNoNjQtbGludXgtdGRlcC5jDQo+IGluZGV4IGU5NzYxZWQyMTg5 Li42NjNkMGUxYTIxNSAxMDA2NDQNCj4gLS0tIGEvZ2RiL2FhcmNoNjQtbGludXgtdGRlcC5jDQo+ ICsrKyBiL2dkYi9hYXJjaDY0LWxpbnV4LXRkZXAuYw0KPiBAQCAtNTMsNiArNTMsOCBAQA0KPiAN Cj4gI2luY2x1ZGUgImdkYnN1cHBvcnQvc2VsZnRlc3QuaCINCj4gDQo+ICsjaW5jbHVkZSAiZWxm L2NvbW1vbi5oIg0KPiArDQo+IC8qIFNpZ25hbCBmcmFtZSBoYW5kbGluZy4NCj4gDQo+ICAgICAg ICstLS0tLS0tLS0tLS0rICBeDQo+IEBAIC0xNzc5LDYgKzE3ODEsMTcyIEBAIGFhcmNoNjRfbGlu dXhfcmVwb3J0X3NpZ25hbF9pbmZvIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwNCj4gICAgIH0N Cj4gfQ0KPiANCj4gKy8qIE1heGltdW0gbnVtYmVyIG9mIHRhZ3MgdG8gcmVxdWVzdC4gICovDQo+ ICsjZGVmaW5lIE1BWF9UQUdTX1RPX1RSQU5TRkVSIDEwMjQNCj4gKw0KPiArLyogQUFyY2g2NCBM aW51eCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYWFyY2g2NF9jcmVhdGVfbWVtdGFnX25vdGVzX2Zy b21fcmFuZ2UNCj4gKyAgIGdkYmFyY2ggaG9vay4gIENyZWF0ZSBjb3JlIGZpbGUgbm90ZXMgZm9y IG1lbW9yeSB0YWdzLiAgKi8NCj4gKw0KPiArc3RhdGljIHN0ZDo6dmVjdG9yPGdkYjo6Ynl0ZV92 ZWN0b3I+DQo+ICthYXJjaDY0X2xpbnV4X2NyZWF0ZV9tZW10YWdfbm90ZXNfZnJvbV9yYW5nZSAo c3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsDQo+ICsJCQkJCSAgICAgIENPUkVfQUREUiBzdGFydF9h ZGRyZXNzLA0KPiArCQkJCQkgICAgICBDT1JFX0FERFIgZW5kX2FkZHJlc3MpDQo+ICt7DQo+ICsg IC8qIFdlIG9ubHkgaGFuZGxlIE1URSB0YWdzIGZvciBub3cuICAqLw0KPiArDQo+ICsgIC8qIEZp Z3VyZSBvdXQgaG93IG1hbnkgdGFncyB3ZSBuZWVkIHRvIHN0b3JlIGluIHRoaXMgbWVtb3J5IHJh bmdlLiAgKi8NCj4gKyAgaW50IGdyYW51bGVzID0gYWFyY2g2NF9tdGVfZ2V0X3RhZ19ncmFudWxl cyAoc3RhcnRfYWRkcmVzcywNCj4gKwkJCQkJICAgICAgIGVuZF9hZGRyZXNzIC0gc3RhcnRfYWRk cmVzcywNCj4gKwkJCQkJICAgICAgIEFBUkNINjRfTVRFX0dSQU5VTEVfU0laRSk7DQo+ICsNCj4g KyAgLyogVmVjdG9yIG9mIG1lbW9yeSB0YWcgbm90ZXMuIEFkZCB0aGUgTVRFIG5vdGUgKHdlIG9u bHkgaGF2ZSBNVEUgdGFncw0KPiArICAgICBhdCB0aGUgbW9tZW50KS4gICovDQo+ICsgIHN0ZDo6 dmVjdG9yPGdkYjo6Ynl0ZV92ZWN0b3I+IG5vdGVzICgxKTsNCj4gKw0KPiArICAvKiBJZiB0aGVy ZSBhcmUgbm8gdGFnIGdyYW51bGVzIHRvIGZldGNoLCBqdXN0IHJldHVybi4gICovDQo+ICsgIGlm IChncmFudWxlcyA9PSAwKQ0KPiArICAgIHJldHVybiBub3RlczsNCj4gKw0KPiArICAvKiBBZGp1 c3QgdGhlIE1URSBub3RlIHNpemUgdG8gaG9sZCB0aGUgaGVhZGVyICsgdGFncy4gICovDQo+ICsg IG5vdGVzWzBdLnJlc2l6ZSAoTUVNVEFHX05PVEVfSEVBREVSX1NJWkUgKyBncmFudWxlcyk7DQo+ ICsNCj4gKyAgQ09SRV9BRERSIGFkZHJlc3MgPSBzdGFydF9hZGRyZXNzOw0KPiArICAvKiBWZWN0 b3Igb2YgdGFncy4gICovDQo+ICsgIGdkYjo6Ynl0ZV92ZWN0b3IgdGFnczsNCj4gKw0KPiArICB3 aGlsZSAoZ3JhbnVsZXMgPiAwKQ0KPiArICAgIHsNCj4gKyAgICAgIC8qIFRyYW5zZmVyIHRhZ3Mg aW4gY2h1bmtzLiAgKi8NCj4gKyAgICAgIGdkYjo6Ynl0ZV92ZWN0b3IgdGFnc19yZWFkOw0KPiAr ICAgICAgc2l6ZV90IHhmZXJfbGVuDQo+ICsJPSAoZ3JhbnVsZXMgPj0gTUFYX1RBR1NfVE9fVFJB TlNGRVIpPw0KPiArCSAgTUFYX1RBR1NfVE9fVFJBTlNGRVIgKiBBQVJDSDY0X01URV9HUkFOVUxF X1NJWkUgOg0KPiArCSAgZ3JhbnVsZXMgKiBBQVJDSDY0X01URV9HUkFOVUxFX1NJWkU7DQo+ICsN Cj4gKyAgICAgIGlmICghdGFyZ2V0X2ZldGNoX21lbXRhZ3MgKGFkZHJlc3MsIHhmZXJfbGVuLCB0 YWdzX3JlYWQsDQo+ICsJCQkJIHN0YXRpY19jYXN0PGludD4gKG1lbXRhZ190eXBlOjphbGxvY2F0 aW9uKSkpDQo+ICsJew0KPiArCSAgd2FybmluZyAoXygiRmFpbGVkIHRvIHJlYWQgTVRFIHRhZ3Mg ZnJvbSBtZW1vcnkgcmFuZ2UgWyVzLCVzXS4iKSwNCj4gKwkJICAgICBwaGV4X256IChzdGFydF9h ZGRyZXNzLCBzaXplb2YgKHN0YXJ0X2FkZHJlc3MpKSwNCj4gKwkJICAgICBwaGV4X256IChlbmRf YWRkcmVzcywgc2l6ZW9mIChlbmRfYWRkcmVzcykpKTsNCj4gKwkgIG5vdGVzLnJlc2l6ZSAoMCk7 DQo+ICsJICByZXR1cm4gbm90ZXM7DQo+ICsJfQ0KPiArDQo+ICsgICAgICAvKiBUcmFuc2ZlciBv dmVyIHRoZSB0YWdzIHRoYXQgaGF2ZSBiZWVuIHJlYWQuICAqLw0KPiArICAgICAgdGFncy5pbnNl cnQgKHRhZ3MuZW5kICgpLCB0YWdzX3JlYWQuYmVnaW4gKCksIHRhZ3NfcmVhZC5lbmQgKCkpOw0K PiArDQo+ICsgICAgICAvKiBBZGp1c3QgdGhlIHJlbWFpbmluZyBncmFudWxlcyBhbmQgc3RhcnRp bmcgYWRkcmVzcy4gICovDQo+ICsgICAgICBncmFudWxlcyAtPSB0YWdzX3JlYWQuc2l6ZSAoKTsN Cj4gKyAgICAgIGFkZHJlc3MgKz0gdGFnc19yZWFkLnNpemUgKCkgKiBBQVJDSDY0X01URV9HUkFO VUxFX1NJWkU7DQo+ICsgICAgfQ0KPiArDQo+ICsgIC8qIENyZWF0ZSB0aGUgaGVhZGVyLiAgKi8N Cj4gKyAgZW51bSBiZmRfZW5kaWFuIGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdk YmFyY2gpOw0KPiArICBnZGJfYnl0ZSAqYnVmID0gbm90ZXNbMF0uZGF0YSAoKTsNCj4gKw0KPiAr ICAvKiBHZW5lcmljIGhlYWRlci4gICovDQo+ICsgIC8qIFRhZyBkdW1wIGZvcm1hdCAqLw0KPiAr ICBzdG9yZV91bnNpZ25lZF9pbnRlZ2VyIChidWYsIHNpemVvZiAodWludDE2X3QpLCBieXRlX29y ZGVyLA0KPiArCQkJICBOVF9NRU1UQUdfVFlQRV9BQVJDSF9NVEUpOw0KPiArICBidWYgKz0gc2l6 ZW9mICh1aW50MTZfdCk7DQo+ICsNCj4gKyAgLyogU3RhcnQgYWRkcmVzcyAqLw0KPiArICBzdG9y ZV91bnNpZ25lZF9pbnRlZ2VyIChidWYsIHNpemVvZiAodWludDY0X3QpLCBieXRlX29yZGVyLCBz dGFydF9hZGRyZXNzKTsNCj4gKyAgYnVmICs9IHNpemVvZiAodWludDY0X3QpOw0KPiArDQo+ICsg IC8qIEVuZCBhZGRyZXNzICovDQo+ICsgIHN0b3JlX3Vuc2lnbmVkX2ludGVnZXIgKGJ1Ziwgc2l6 ZW9mICh1aW50NjRfdCksIGJ5dGVfb3JkZXIsIGVuZF9hZGRyZXNzKTsNCj4gKyAgYnVmICs9IHNp emVvZiAodWludDY0X3QpOw0KPiArDQo+ICsgIC8qIE1URS1zcGVjaWZpYyBoZWFkZXIuICAqLw0K PiArICAvKiBHcmFudWxlIGJ5dGUgc2l6ZSAqLw0KPiArICBzdG9yZV91bnNpZ25lZF9pbnRlZ2Vy IChidWYsIHNpemVvZiAodWludDE2X3QpLCBieXRlX29yZGVyLA0KPiArCQkJICBBQVJDSDY0X01U RV9HUkFOVUxFX1NJWkUpOw0KPiArICBidWYgKz0gc2l6ZW9mICh1aW50MTZfdCk7DQo+ICsNCj4g KyAgLyogVGFnIGJpdCBzaXplICovDQo+ICsgIHN0b3JlX3Vuc2lnbmVkX2ludGVnZXIgKGJ1Ziwg c2l6ZW9mICh1aW50MTZfdCksIGJ5dGVfb3JkZXIsDQo+ICsJCQkgIEFBUkNINjRfTVRFX1RBR19C SVRfU0laRSk7DQo+ICsgIGJ1ZiArPSBzaXplb2YgKHVpbnQxNl90KTsNCj4gKw0KPiArICAvKiBV bnVzZWQgdmFsdWUgKi8NCj4gKyAgc3RvcmVfdW5zaWduZWRfaW50ZWdlciAoYnVmLCBzaXplb2Yg KHVpbnQxNl90KSwgYnl0ZV9vcmRlciwgMCk7DQo+ICsNCj4gKyAgLyogU3RvcmUgdGhlIHRhZ3Mu ICAqLw0KPiArICBtZW1jcHkgKG5vdGVzWzBdLmRhdGEgKCkgKyBNRU1UQUdfTk9URV9IRUFERVJf U0laRSwgdGFncy5kYXRhICgpLA0KPiArCSAgdGFncy5zaXplICgpKTsNCj4gKw0KPiArICByZXR1 cm4gbm90ZXM7DQo+ICt9DQo+ICsNCj4gKy8qIEFBcmNoNjQgTGludXggaW1wbGVtZW50YXRpb24g b2YgdGhlIGRlY29kZV9tZW10YWdfbm90ZSBnZGJhcmNoDQo+ICsgICBob29rLiAgRGVjb2RlIGEg bWVtb3J5IHRhZyBub3RlIGFuZCByZXR1cm4gdGhlIHJlcXVlc3QgdGFncy4gICovDQo+ICsNCj4g K3N0YXRpYyBnZGI6OmJ5dGVfdmVjdG9yDQo+ICthYXJjaDY0X2xpbnV4X2RlY29kZV9tZW10YWdf bm90ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsDQo+ICsJCQkJICBnZGI6OmFycmF5X3ZpZXcg PGNvbnN0IGdkYl9ieXRlPiBub3RlLA0KPiArCQkJCSAgQ09SRV9BRERSIGFkZHJlc3MsIHNpemVf dCBsZW5ndGgpDQo+ICt7DQo+ICsgIGdkYjo6Ynl0ZV92ZWN0b3IgdGFnczsNCj4gKw0KPiArICAv KiBSZWFkIHRoZSBnZW5lcmljIGhlYWRlci4gICovDQo+ICsgIGVudW0gYmZkX2VuZGlhbiBieXRl X29yZGVyID0gZ2RiYXJjaF9ieXRlX29yZGVyIChnZGJhcmNoKTsNCj4gKyAgc3RydWN0IHRhZ19k dW1wX2hlYWRlciBoZWFkZXI7DQo+ICsgIGNvbnN0IGdkYl9ieXRlICpidWYgPSBub3RlLmRhdGEg KCk7DQo+ICsNCj4gKyAgaGVhZGVyLmZvcm1hdA0KPiArICAgID0gZXh0cmFjdF91bnNpZ25lZF9p bnRlZ2VyIChidWYsIHNpemVvZiAodWludDE2X3QpLCBieXRlX29yZGVyKTsNCj4gKyAgYnVmICs9 IHNpemVvZiAodWludDE2X3QpOw0KPiArDQo+ICsgIGhlYWRlci5zdGFydF92bWENCj4gKyAgICA9 IGV4dHJhY3RfdW5zaWduZWRfaW50ZWdlciAoYnVmLCBzaXplb2YgKHVpbnQ2NF90KSwgYnl0ZV9v cmRlcik7DQo+ICsgIGJ1ZiArPSBzaXplb2YgKHVpbnQ2NF90KTsNCj4gKw0KPiArICBoZWFkZXIu ZW5kX3ZtYQ0KPiArICAgID0gZXh0cmFjdF91bnNpZ25lZF9pbnRlZ2VyIChidWYsIHNpemVvZiAo dWludDY0X3QpLCBieXRlX29yZGVyKTsNCj4gKyAgYnVmICs9IHNpemVvZiAodWludDY0X3QpOw0K PiArDQo+ICsgIC8qIFNhbml0eSBjaGVjayAgKi8NCj4gKyAgaWYgKGhlYWRlci5mb3JtYXQgIT0g TlRfTUVNVEFHX1RZUEVfQUFSQ0hfTVRFKQ0KPiArICAgIHsNCj4gKyAgICAgIHdhcm5pbmcgKF8o IlVuZXhwZWN0ZWQgbWVtb3J5IHRhZyBub3RlIGZvcm1hdCAoJXgpLlxuIiksIGhlYWRlci5mb3Jt YXQpOw0KPiArICAgICAgcmV0dXJuIHRhZ3M7DQo+ICsgICAgfQ0KPiArDQo+ICsgIC8qIENhbGN1 bGF0ZSBob3cgbWFueSBncmFudWxlcyB3ZSBuZWVkIHRvIHNraXAgdG8gZ2V0IHRvIHRoZSBncmFu dWxlIG9mDQo+ICsgICAgIEFERFJFU1MuICBBbGlnbiBib3RoIHRoZSBzdGFydCBhZGRyZXNzIGFu ZCB0aGUgcmVxdWVzdGVkIGFkZHJlc3MNCj4gKyAgICAgc28gaXQgaXMgZWFzaWVyIHRvIGdldCB0 aGUgbnVtYmVyIG9mIGdyYW51bGVzIHRvIHNraXAuICBUaGlzIHdheSB3ZQ0KPiArICAgICBkb24n dCBuZWVkIHRvIGNvbnNpZGVyIGNhc2VzIHdoZXJlIEFERFJFU1MgZmFsbHMgaW4gdGhlIG1pZGRs ZSBvZiBhDQo+ICsgICAgIHRhZyBncmFudWxlIHJhbmdlLiAgKi8NCj4gKyAgQ09SRV9BRERSIGFs aWduZWRfc3RhcnRfYWRkcmVzcw0KPiArICAgID0gYWxpZ25fZG93biAoaGVhZGVyLnN0YXJ0X3Zt YSwgQUFSQ0g2NF9NVEVfR1JBTlVMRV9TSVpFKTsNCj4gKyAgQ09SRV9BRERSIGFsaWduZWRfYWRk cmVzcyA9IGFsaWduX2Rvd24gKGFkZHJlc3MsIEFBUkNINjRfTVRFX0dSQU5VTEVfU0laRSk7DQo+ ICsNCj4gKyAgaW50IHNraXBwZWRfZ3JhbnVsZXMNCj4gKyAgICA9IGFhcmNoNjRfbXRlX2dldF90 YWdfZ3JhbnVsZXMgKGFsaWduZWRfc3RhcnRfYWRkcmVzcywNCj4gKwkJCQkgICAgYWxpZ25lZF9h ZGRyZXNzIC0gYWxpZ25lZF9zdGFydF9hZGRyZXNzLA0KPiArCQkJCSAgICBBQVJDSDY0X01URV9H UkFOVUxFX1NJWkUpOw0KPiArDQo+ICsgIC8qIFRoZSBhbW91bnQgb2YgbWVtb3J5IHRhZyBncmFu dWxlcyB3ZSBuZWVkIHRvIGZldGNoLiAgKi8NCj4gKyAgaW50IGdyYW51bGVzDQo+ICsgICAgPSBh YXJjaDY0X210ZV9nZXRfdGFnX2dyYW51bGVzIChhZGRyZXNzLCBsZW5ndGgsIEFBUkNINjRfTVRF X0dSQU5VTEVfU0laRSk7DQo+ICsNCj4gKyAgLyogSWYgdGhlcmUgYXJlIG5vIHRhZyBncmFudWxl cyB0byBkZWNvZGUsIGp1c3QgcmV0dXJuLiAgKi8NCj4gKyAgaWYgKGdyYW51bGVzID09IDApDQo+ ICsgICAgcmV0dXJuIHRhZ3M7DQo+ICsNCj4gKyAgLyogUG9pbnQgdG8gdGhlIGJsb2NrIG9mIGRh dGEgdGhhdCBjb250YWlucyB0aGUgZmlyc3QgZ3JhbnVsZSB3ZSBhcmUNCj4gKyAgICAgaW50ZXJl c3RlZCBpbi4gICovDQo+ICsgIGNvbnN0IGdkYl9ieXRlICp0YWdzX2RhdGEgPSBub3RlLmRhdGEg KCkgKyBzaXplb2YgKGhlYWRlcikgKyBza2lwcGVkX2dyYW51bGVzOw0KPiArDQo+ICsgIC8qIFJl YWQgdGhlIHRhZyBncmFudWxlcy4gICovDQo+ICsgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBp IDwgZ3JhbnVsZXM7IGkrKykNCj4gKyAgICAgIHRhZ3MucHVzaF9iYWNrICh0YWdzX2RhdGFbaV0p Ow0KPiArDQo+ICsgIHJldHVybiB0YWdzOw0KPiArfQ0KPiArDQo+IHN0YXRpYyB2b2lkDQo+IGFh cmNoNjRfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gpDQo+IHsNCj4gQEAgLTE4NjIsNiArMjAzMCwxNyBAQCBhYXJjaDY0X2xp bnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoKQ0KPiANCj4gICAgICAgc2V0X2dkYmFyY2hfcmVwb3J0X3NpZ25hbF9pbmZvIChnZGJh cmNoLA0KPiAJCQkJICAgICAgYWFyY2g2NF9saW51eF9yZXBvcnRfc2lnbmFsX2luZm8pOw0KPiAr DQo+ICsgICAgICAvKiBDb3JlIGZpbGUgaGVscGVycy4gICovDQo+ICsNCj4gKyAgICAgIC8qIENv cmUgZmlsZSBoZWxwZXIgdG8gY3JlYXRlIG1lbW9yeSB0YWcgbm90ZXMgZm9yIGEgcGFydGljdWxh ciByYW5nZSBvZg0KPiArCSBhZGRyZXNzZXMuICAqLw0KPiArICAgICAgc2V0X2dkYmFyY2hfY3Jl YXRlX21lbXRhZ19ub3Rlc19mcm9tX3JhbmdlIChnZGJhcmNoLA0KPiArCQkJCSAgYWFyY2g2NF9s aW51eF9jcmVhdGVfbWVtdGFnX25vdGVzX2Zyb21fcmFuZ2UpOw0KPiArDQo+ICsgICAgICAvKiBD b3JlIGZpbGUgaGVscGVyIHRvIGRlY29kZSBhIG1lbW9yeSB0YWcgbm90ZS4gICovDQo+ICsgICAg ICBzZXRfZ2RiYXJjaF9kZWNvZGVfbWVtdGFnX25vdGUgKGdkYmFyY2gsDQo+ICsJCQkJICAgICAg YWFyY2g2NF9saW51eF9kZWNvZGVfbWVtdGFnX25vdGUpOw0KPiAgICAgfQ0KPiANCj4gICAvKiBJ bml0aWFsaXplIHRoZSBhYXJjaDY0X2xpbnV4X3JlY29yZF90ZGVwLiAgKi8NCj4gZGlmZiAtLWdp dCBhL2dkYi9hcmNoL2FhcmNoNjQtbXRlLWxpbnV4LmggYi9nZGIvYXJjaC9hYXJjaDY0LW10ZS1s aW51eC5oDQo+IGluZGV4IDJhYTk3ZWI4NjFhLi5hNGEyNjYyODg0NyAxMDA2NDQNCj4gLS0tIGEv Z2RiL2FyY2gvYWFyY2g2NC1tdGUtbGludXguaA0KPiArKysgYi9nZGIvYXJjaC9hYXJjaDY0LW10 ZS1saW51eC5oDQo+IEBAIC0zMiw2ICszMiw3IEBADQo+IA0KPiAvKiBXZSBoYXZlIG9uZSB0YWcg cGVyIDE2IGJ5dGVzIG9mIG1lbW9yeS4gICovDQo+ICNkZWZpbmUgQUFSQ0g2NF9NVEVfR1JBTlVM RV9TSVpFIDE2DQo+ICsjZGVmaW5lIEFBUkNINjRfTVRFX1RBR19CSVRfU0laRSA0DQo+ICNkZWZp bmUgQUFSQ0g2NF9NVEVfTE9HSUNBTF9UQUdfU1RBUlRfQklUIDU2DQo+ICNkZWZpbmUgQUFSQ0g2 NF9NVEVfTE9HSUNBTF9NQVhfVkFMVUUgMHhmDQo+IA0KPiBAQCAtNzEsNCArNzIsMzIgQEAgZXh0 ZXJuIENPUkVfQUREUiBhYXJjaDY0X210ZV9zZXRfbHRhZyAoQ09SRV9BRERSIGFkZHJlc3MsIENP UkVfQUREUiB0YWcpOw0KPiAgICBJdCBpcyBhbHdheXMgcG9zc2libGUgdG8gZ2V0IHRoZSBsb2dp Y2FsIHRhZy4gICovDQo+IGV4dGVybiBDT1JFX0FERFIgYWFyY2g2NF9tdGVfZ2V0X2x0YWcgKENP UkVfQUREUiBhZGRyZXNzKTsNCj4gDQo+ICsvKiBIZWFkZXJzIGZvciB0aGUgTlRfTUVNVEFHIG5v dGVzLiAgKi8NCj4gKw0KPiArLyogR2VuZXJpYyBOVF9NRU1UQUcgaGVhZGVyLiAgKi8NCj4gK3N0 cnVjdCB0YWdfZHVtcF9oZWFkZXINCj4gK3sNCj4gKyAgLyogVGFnIGZvcm1hdC4gICovDQo+ICsg IHVpbnQxNl90IGZvcm1hdDsNCj4gKyAgLyogU3RhcnQgYWRkcmVzcyBvZiB0aGUgdGFnZ2VkIHJh bmdlLiAgKi8NCj4gKyAgdWludDY0X3Qgc3RhcnRfdm1hOw0KPiArICAvKiBFbmQgYWRkcmVzcyBv ZiB0aGUgdGFnZ2VkIHJhbmdlLiAgKi8NCj4gKyAgdWludDY0X3QgZW5kX3ZtYTsNCj4gK307DQo+ ICsNCj4gKy8qIE1URS1zcGVjaWZpYyBOVF9NRU1UQUcgaGVhZGVyLiAgKi8NCj4gK3N0cnVjdCB0 YWdfZHVtcF9tdGUNCj4gK3sNCj4gKyAgLyogU2l6ZSBvZiB0aGUgdGFnIGdyYW51bGUgaW4gYnl0 ZXMuICAqLw0KPiArICB1aW50MTZfdCBncmFudWxlX2J5dGVfc2l6ZTsNCj4gKyAgLyogU2l6ZSBv ZiB0aGUgdGFnIGluIGJpdHMuICAqLw0KPiArICB1aW50MTZfdCB0YWdfYml0X3NpemU7DQo+ICsg IC8qIFJlc2VydmVkIGZpZWxkIGZvciB0aGUgZnV0dXJlLiAgKi8NCj4gKyAgdWludDE2X3QgX191 bnVzZWQ7DQo+ICt9Ow0KPiArDQo+ICsvKiBNZW1vcnkgdGFnIG5vdGUgaGVhZGVyIHNpemUuICBJ bmNsdWRlcyBib3RoIHRoZSBnZW5lcmljIGFuZCB0aGUNCj4gKyAgIGFyY2gtc3BlY2lmaWMgcGFy dHMuICAqLw0KPiArI2RlZmluZSBNRU1UQUdfTk9URV9IRUFERVJfU0laRSAoMiArIDggKyA4ICsg MiArIDIgKyAyKQ0KDQpUaGlzIHNob3VsZCBjb21waWxlIGRvd24gdG8gYSBjb25zdGFudCB2YWx1 ZTogPw0KDQojZGVmaW5lIE1FTVRBR19OT1RFX0hFQURFUl9TSVpFIChzaXplb2YodGFnX2R1bXBf aGVhZGVyKStzaXplb2YodGFnX2R1bXBfbXRlKSkNCg0KDQo+ICsNCj4gI2VuZGlmIC8qIEFSQ0hf QUFSQ0g2NF9MSU5VWF9IICovDQo+IGRpZmYgLS1naXQgYS9nZGIvY29yZWxvdy5jIGIvZ2RiL2Nv cmVsb3cuYw0KPiBpbmRleCA0NTJiNGRkNGY5YS4uMzNkMTZiNzIyMGEgMTAwNjQ0DQo+IC0tLSBh L2dkYi9jb3JlbG93LmMNCj4gKysrIGIvZ2RiL2NvcmVsb3cuYw0KPiBAQCAtMTAwLDYgKzEwMCwx MyBAQCBjbGFzcyBjb3JlX3RhcmdldCBmaW5hbCA6IHB1YmxpYyBwcm9jZXNzX3N0cmF0dW1fdGFy Z2V0DQo+IA0KPiAgIGJvb2wgaW5mb19wcm9jIChjb25zdCBjaGFyICosIGVudW0gaW5mb19wcm9j X3doYXQpIG92ZXJyaWRlOw0KPiANCj4gKyAgYm9vbCBzdXBwb3J0c19tZW1vcnlfdGFnZ2luZyAo KSBvdmVycmlkZTsNCj4gKw0KPiArICAvKiBDb3JlIGZpbGUgaW1wbGVtZW50YXRpb24gb2YgZmV0 Y2hfbWVtdGFncy4gIEZldGNoIHRoZSBtZW1vcnkgdGFncyBmcm9tDQo+ICsgICAgIGNvcmUgZmls ZSBub3Rlcy4gICovDQo+ICsgIGJvb2wgZmV0Y2hfbWVtdGFncyAoQ09SRV9BRERSIGFkZHJlc3Ms IHNpemVfdCBsZW4sDQo+ICsJCSAgICAgIGdkYjo6Ynl0ZV92ZWN0b3IgJnRhZ3MsIGludCB0eXBl KSBvdmVycmlkZTsNCj4gKw0KPiAgIC8qIEEgZmV3IGhlbHBlcnMuICAqLw0KPiANCj4gICAvKiBH ZXR0ZXIsIHNlZSB2YXJpYWJsZSBkZWZpbml0aW9uLiAgKi8NCj4gQEAgLTExMTUsNiArMTEyMiw4 NyBAQCBjb3JlX3RhcmdldDo6aW5mb19wcm9jIChjb25zdCBjaGFyICphcmdzLCBlbnVtIGluZm9f cHJvY193aGF0IHJlcXVlc3QpDQo+ICAgcmV0dXJuIHRydWU7DQo+IH0NCj4gDQo+ICsvKiBJbXBs ZW1lbnRhdGlvbiBvZiB0aGUgInN1cHBvcnRzX21lbW9yeV90YWdnaW5nIiB0YXJnZXRfb3BzIG1l dGhvZC4gICovDQo+ICsNCj4gK2Jvb2wNCj4gK2NvcmVfdGFyZ2V0OjpzdXBwb3J0c19tZW1vcnlf dGFnZ2luZyAoKQ0KPiArew0KPiArICAvKiBMb29rIGZvciBtZW1vcnkgdGFnIG5vdGVzLiAgSWYg dGhleSBleGlzdCwgdGhhdCBtZWFucyB0aGlzIGNvcmUgZmlsZQ0KPiArICAgICBzdXBwb3J0cyBt ZW1vcnkgdGFnZ2luZy4gICovDQo+ICsgIGlmIChiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAoY29y ZV9iZmQsICIubWVtdGFnIikgPT0gbnVsbHB0cikNCj4gKyAgICByZXR1cm4gZmFsc2U7DQo+ICsN Cj4gKyAgcmV0dXJuIHRydWU7DQo+ICt9DQo+ICsNCj4gKy8qIEltcGxlbWVudGF0aW9uIG9mIHRo ZSAiZmV0Y2hfbWVtdGFncyIgdGFyZ2V0X29wcyBtZXRob2QuICAqLw0KPiArDQo+ICtib29sDQo+ ICtjb3JlX3RhcmdldDo6ZmV0Y2hfbWVtdGFncyAoQ09SRV9BRERSIGFkZHJlc3MsIHNpemVfdCBs ZW4sDQo+ICsJCQkgICAgZ2RiOjpieXRlX3ZlY3RvciAmdGFncywgaW50IHR5cGUpDQo+ICt7DQo+ ICsgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gdGFyZ2V0X2dkYmFyY2ggKCk7DQo+ICsNCj4g KyAgLyogTWFrZSBzdXJlIHdlIGhhdmUgYSB3YXkgdG8gZGVjb2RlIHRoZSBtZW1vcnkgdGFnIG5v dGVzLiAgKi8NCj4gKyAgaWYgKCFnZGJhcmNoX2RlY29kZV9tZW10YWdfbm90ZV9wIChnZGJhcmNo KSkNCj4gKyAgICB3YXJuaW5nIChfKCJnZGJhcmNoX2RlY29kZV9tZW10YWdfbm90ZSBub3QgaW1w bGVtZW50ZWQgZm9yIHRoaXMgIg0KPiArCSAgICAgICAiYXJjaGl0ZWN0dXJlLiIpKTsNCj4gKw0K PiArICBhc2VjdGlvbiAqc2VjdGlvbg0KPiArICAgID0gYmZkX2dldF9zZWN0aW9uX2J5X25hbWUg KGNvcmVfYmZkLCAiLm1lbXRhZyIpOw0KPiArDQo+ICsgIC8qIFJlbW92ZSB0aGUgdG9wIGJ5dGUg Zm9yIHRoZSBtZW1vcnkgcmFuZ2UgY2hlY2suICAqLw0KPiArICBhZGRyZXNzID0gYWRkcmVzc19z aWduaWZpY2FudCAoZ2RiYXJjaCwgYWRkcmVzcyk7DQo+ICsNCj4gKyAgLyogR28gdGhyb3VnaCBh bGwgdGhlIG1lbXRhZyBzZWN0aW9ucyBhbmQgZmlndXJlIG91dCBpZiBBRERSRVNTDQo+ICsgICAg IGZhbGxzIHdpdGhpbiBvbmUgb2YgdGhlIG1lbW9yeSByYW5nZXMgdGhhdCBjb250YWluIHRhZ3Mu ICAqLw0KPiArICB3aGlsZSAoc2VjdGlvbiAhPSBudWxscHRyKQ0KPiArICAgIHsNCj4gKyAgICAg IHNpemVfdCBub3RlX3NpemUgPSBiZmRfc2VjdGlvbl9zaXplIChzZWN0aW9uKTsNCj4gKw0KPiAr ICAgICAgLyogSWYgdGhlIG5vdGUgaXMgc21hbGxlciB0aGFuIHRoZSBzaXplIG9mIHRoZSBoZWFk ZXIsIHRoaXMgY29yZSBub3RlDQo+ICsJIGlzIG1hbGZvcm1lZC4gICovDQo+ICsgICAgICBpZiAo bm90ZV9zaXplIDwgMiAqIHNpemVvZiAodWludDY0X3QpICsgc2l6ZW9mICh1aW50MTZfdCkpDQoN CknigJltIG5vdCBzdXJlIHdoeSA2NCsxNiA/DQoNCj4gKwl7DQo+ICsJICB3YXJuaW5nIChfKCJt YWxmb3JtZWQgY29yZSBub3RlIC0gdG9vIHNob3J0IGZvciBoZWFkZXIiKSk7DQo+ICsJICByZXR1 cm4gZmFsc2U7DQo+ICsJfQ0KPiArDQo+ICsgICAgICBnZGI6OmJ5dGVfdmVjdG9yIG5vdGUgKG5v dGVfc2l6ZSk7DQo+ICsNCj4gKyAgICAgIC8qIEZldGNoIHRoZSBjb250ZW50cyBvZiB0aGlzIHBh cnRpY3VsYXIgbWVtdGFnIG5vdGUuICAqLw0KPiArICAgICAgaWYgKCFiZmRfZ2V0X3NlY3Rpb25f Y29udGVudHMgKGNvcmVfYmZkLCBzZWN0aW9uLA0KPiArCQkJCSAgICAgbm90ZS5kYXRhICgpLCAw LCBub3RlX3NpemUpKQ0KPiArCXsNCj4gKwkgIHdhcm5pbmcgKF8oImNvdWxkIG5vdCBnZXQgY29y ZSBub3RlIGNvbnRlbnRzLiIpKTsNCj4gKwkgIHJldHVybiBmYWxzZTsNCj4gKwl9DQo+ICsNCj4g KyAgICAgIC8qIFJlYWQgdGhlIGdlbmVyaWMgaGVhZGVyIG9mIHRoZSBub3RlLiAgVGhvcyBjb250 YWlucyB0aGUgZm9ybWF0LA0KPiArCSBzdGFydCBhZGRyZXNzIGFuZCBlbmQgYWRkcmVzcy4gICov DQo+ICsgICAgICB1aW50NjRfdCBzdGFydF9hZGRyZXNzDQo+ICsJPSBiZmRfZ2V0XzY0IChjb3Jl X2JmZCwgbm90ZS5kYXRhICgpICsgc2l6ZW9mICh1aW50MTZfdCkpOw0KPiArICAgICAgdWludDY0 X3QgZW5kX2FkZHJlc3MNCj4gKwk9IGJmZF9nZXRfNjQgKGNvcmVfYmZkLCBub3RlLmRhdGEgKCkg KyBzaXplb2YgKHVpbnQxNl90KQ0KPiArCQkJCSsgc2l6ZW9mICh1aW50NjRfdCkpOw0KPiArDQo+ ICsgICAgICAvKiBJcyB0aGUgYWRkcmVzcyB3aXRoaW4gW3N0YXJ0X2FkZHJlc3MsIGVuZF9hZGRy ZXNzKT8gICovDQo+ICsgICAgICBpZiAoYWRkcmVzcyA+PSBzdGFydF9hZGRyZXNzDQo+ICsJICAm JiBhZGRyZXNzIDwgZW5kX2FkZHJlc3MpDQo+ICsJew0KPiArCSAgLyogRGVjb2RlIHRoZSBtZW1v cnkgdGFnIG5vdGUgYW5kIHJldHVybiB0aGUgdGFncy4gICovDQo+ICsJICB0YWdzID0gZ2RiYXJj aF9kZWNvZGVfbWVtdGFnX25vdGUgKGdkYmFyY2gsIG5vdGUsIGFkZHJlc3MsIGxlbik7DQo+ICsJ ICByZXR1cm4gdHJ1ZTsNCj4gKwl9DQo+ICsNCj4gKyAgICAgIC8qIFRoZSByZXF1ZXN0ZWQgYWRk cmVzcyBsaWVzIG91dHNpZGUgdGhpcyBwYXJ0aWN1bGFyIG1lbXRhZyBub3RlLiAgS2VlcA0KPiAr CSBsb29raW5nIGFuZCBnZXQgdGhlIG5leHQgc2VjdGlvbi4gICovDQo+ICsgICAgICBzZWN0aW9u ID0gYmZkX2dldF9uZXh0X3NlY3Rpb25fYnlfbmFtZSAoY29yZV9iZmQsIHNlY3Rpb24pOw0KPiAr ICAgIH0NCj4gKw0KPiArICByZXR1cm4gZmFsc2U7DQo+ICt9DQo+ICsNCj4gLyogR2V0IGEgcG9p bnRlciB0byB0aGUgY3VycmVudCBjb3JlIHRhcmdldC4gIElmIG5vdCBjb25uZWN0ZWQgdG8gYQ0K PiAgICBjb3JlIHRhcmdldCwgcmV0dXJuIE5VTEwuICAqLw0KPiANCj4gZGlmZiAtLWdpdCBhL2dk Yi9kb2MvZ2RiLnRleGluZm8gYi9nZGIvZG9jL2dkYi50ZXhpbmZvDQo+IGluZGV4IDU2ZjM3ZWIy Mjg4Li43MzhjYjNiNTZlYiAxMDA2NDQNCj4gLS0tIGEvZ2RiL2RvYy9nZGIudGV4aW5mbw0KPiAr KysgYi9nZGIvZG9jL2dkYi50ZXhpbmZvDQo+IEBAIC0yNTI1Nyw2ICsyNTI1NywxMCBAQCBvcHRp b25zIHRoYXQgY2FuIGJlIGNvbnRyb2xsZWQgYXQgcnVudGltZSBhbmQgZW11bGF0ZXMgdGhlIEBj b2Rle3ByY3RsfQ0KPiBvcHRpb24gQGNvZGV7UFJfU0VUX1RBR0dFRF9BRERSX0NUUkx9LiAgRm9y IGZ1cnRoZXIgaW5mb3JtYXRpb24sIHNlZSB0aGUNCj4gZG9jdW1lbnRhdGlvbiBpbiB0aGUgTGlu dXgga2VybmVsLg0KPiANCj4gK0B2YWx1ZXtHREJOfSBzdXBwb3J0cyBkdW1waW5nIG1lbW9yeSB0 YWcgZGF0YSB0byBjb3JlIGZpbGVzIHRocm91Z2ggdGhlDQo+ICtAY29tbWFuZHtnY29yZX0gY29t bWFuZCBhbmQgcmVhZGluZyBtZW1vcnkgdGFnIGRhdGEgZnJvbSBjb3JlIGZpbGVzIGdlbmVyYXRl ZA0KPiArYnkgdGhlIEBjb21tYW5ke2djb3JlfSBjb21tYW5kIG9yIHRoZSBMaW51eCBrZXJuZWwu DQo+ICsNCj4gQG5vZGUgaTM4Ng0KPiBAc3Vic2VjdGlvbiB4ODYgQXJjaGl0ZWN0dXJlLXNwZWNp ZmljIElzc3Vlcw0KPiANCj4gZGlmZiAtLWdpdCBhL2dkYi9nZGJhcmNoLmMgYi9nZGIvZ2RiYXJj aC5jDQo+IGluZGV4IDIwOGNmNGI1YWFhLi5kZTM4NGRhMmU5YSAxMDA2NDQNCj4gLS0tIGEvZ2Ri L2dkYmFyY2guYw0KPiArKysgYi9nZGIvZ2RiYXJjaC5jDQo+IEBAIC0yODMsNiArMjgzLDggQEAg c3RydWN0IGdkYmFyY2gNCj4gICBnZGJhcmNoX2l0ZXJhdGVfb3Zlcl9yZWdzZXRfc2VjdGlvbnNf ZnR5cGUgKml0ZXJhdGVfb3Zlcl9yZWdzZXRfc2VjdGlvbnM7DQo+ICAgZ2RiYXJjaF9tYWtlX2Nv cmVmaWxlX25vdGVzX2Z0eXBlICptYWtlX2NvcmVmaWxlX25vdGVzOw0KPiAgIGdkYmFyY2hfZmlu ZF9tZW1vcnlfcmVnaW9uc19mdHlwZSAqZmluZF9tZW1vcnlfcmVnaW9uczsNCj4gKyAgZ2RiYXJj aF9jcmVhdGVfbWVtdGFnX25vdGVzX2Zyb21fcmFuZ2VfZnR5cGUgKmNyZWF0ZV9tZW10YWdfbm90 ZXNfZnJvbV9yYW5nZTsNCj4gKyAgZ2RiYXJjaF9kZWNvZGVfbWVtdGFnX25vdGVfZnR5cGUgKmRl Y29kZV9tZW10YWdfbm90ZTsNCj4gICBnZGJhcmNoX2NvcmVfeGZlcl9zaGFyZWRfbGlicmFyaWVz X2Z0eXBlICpjb3JlX3hmZXJfc2hhcmVkX2xpYnJhcmllczsNCj4gICBnZGJhcmNoX2NvcmVfeGZl cl9zaGFyZWRfbGlicmFyaWVzX2FpeF9mdHlwZSAqY29yZV94ZmVyX3NoYXJlZF9saWJyYXJpZXNf YWl4Ow0KPiAgIGdkYmFyY2hfY29yZV9waWRfdG9fc3RyX2Z0eXBlICpjb3JlX3BpZF90b19zdHI7 DQo+IEBAIC02NjcsNiArNjY5LDggQEAgdmVyaWZ5X2dkYmFyY2ggKHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoKQ0KPiAgIC8qIFNraXAgdmVyaWZ5IG9mIGl0ZXJhdGVfb3Zlcl9yZWdzZXRfc2VjdGlv bnMsIGhhcyBwcmVkaWNhdGUuICAqLw0KPiAgIC8qIFNraXAgdmVyaWZ5IG9mIG1ha2VfY29yZWZp bGVfbm90ZXMsIGhhcyBwcmVkaWNhdGUuICAqLw0KPiAgIC8qIFNraXAgdmVyaWZ5IG9mIGZpbmRf bWVtb3J5X3JlZ2lvbnMsIGhhcyBwcmVkaWNhdGUuICAqLw0KPiArICAvKiBTa2lwIHZlcmlmeSBv ZiBjcmVhdGVfbWVtdGFnX25vdGVzX2Zyb21fcmFuZ2UsIGhhcyBwcmVkaWNhdGUuICAqLw0KPiAr ICAvKiBTa2lwIHZlcmlmeSBvZiBkZWNvZGVfbWVtdGFnX25vdGUsIGhhcyBwcmVkaWNhdGUuICAq Lw0KPiAgIC8qIFNraXAgdmVyaWZ5IG9mIGNvcmVfeGZlcl9zaGFyZWRfbGlicmFyaWVzLCBoYXMg cHJlZGljYXRlLiAgKi8NCj4gICAvKiBTa2lwIHZlcmlmeSBvZiBjb3JlX3hmZXJfc2hhcmVkX2xp YnJhcmllc19haXgsIGhhcyBwcmVkaWNhdGUuICAqLw0KPiAgIC8qIFNraXAgdmVyaWZ5IG9mIGNv cmVfcGlkX3RvX3N0ciwgaGFzIHByZWRpY2F0ZS4gICovDQo+IEBAIC05MjUsNiArOTI5LDE4IEBA IGdkYmFyY2hfZHVtcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCB1aV9maWxlICpm aWxlKQ0KPiAgIGZwcmludGZfdW5maWx0ZXJlZCAoZmlsZSwNCj4gICAgICAgICAgICAgICAgICAg ICAgICJnZGJhcmNoX2R1bXA6IGNvcmVfeGZlcl9zaWdpbmZvID0gPCVzPlxuIiwNCj4gICAgICAg ICAgICAgICAgICAgICAgIGhvc3RfYWRkcmVzc190b19zdHJpbmcgKGdkYmFyY2gtPmNvcmVfeGZl cl9zaWdpbmZvKSk7DQo+ICsgIGZwcmludGZfdW5maWx0ZXJlZCAoZmlsZSwNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAiZ2RiYXJjaF9kdW1wOiBnZGJhcmNoX2NyZWF0ZV9tZW10YWdfbm90ZXNf ZnJvbV9yYW5nZV9wKCkgPSAlZFxuIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICBnZGJhcmNo X2NyZWF0ZV9tZW10YWdfbm90ZXNfZnJvbV9yYW5nZV9wIChnZGJhcmNoKSk7DQo+ICsgIGZwcmlu dGZfdW5maWx0ZXJlZCAoZmlsZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAiZ2RiYXJjaF9k dW1wOiBjcmVhdGVfbWVtdGFnX25vdGVzX2Zyb21fcmFuZ2UgPSA8JXM+XG4iLA0KPiArICAgICAg ICAgICAgICAgICAgICAgIGhvc3RfYWRkcmVzc190b19zdHJpbmcgKGdkYmFyY2gtPmNyZWF0ZV9t ZW10YWdfbm90ZXNfZnJvbV9yYW5nZSkpOw0KPiArICBmcHJpbnRmX3VuZmlsdGVyZWQgKGZpbGUs DQo+ICsgICAgICAgICAgICAgICAgICAgICAgImdkYmFyY2hfZHVtcDogZ2RiYXJjaF9kZWNvZGVf bWVtdGFnX25vdGVfcCgpID0gJWRcbiIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgZ2RiYXJj aF9kZWNvZGVfbWVtdGFnX25vdGVfcCAoZ2RiYXJjaCkpOw0KPiArICBmcHJpbnRmX3VuZmlsdGVy ZWQgKGZpbGUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgImdkYmFyY2hfZHVtcDogZGVjb2Rl X21lbXRhZ19ub3RlID0gPCVzPlxuIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICBob3N0X2Fk ZHJlc3NfdG9fc3RyaW5nIChnZGJhcmNoLT5kZWNvZGVfbWVtdGFnX25vdGUpKTsNCj4gICBmcHJp bnRmX3VuZmlsdGVyZWQgKGZpbGUsDQo+ICAgICAgICAgICAgICAgICAgICAgICAiZ2RiYXJjaF9k dW1wOiBkZWNyX3BjX2FmdGVyX2JyZWFrID0gJXNcbiIsDQo+ICAgICAgICAgICAgICAgICAgICAg ICBjb3JlX2FkZHJfdG9fc3RyaW5nX256IChnZGJhcmNoLT5kZWNyX3BjX2FmdGVyX2JyZWFrKSk7 DQo+IEBAIC0zODk4LDYgKzM5MTQsNTQgQEAgc2V0X2dkYmFyY2hfZmluZF9tZW1vcnlfcmVnaW9u cyAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsDQo+ICAgZ2RiYXJjaC0+ZmluZF9tZW1vcnlfcmVn aW9ucyA9IGZpbmRfbWVtb3J5X3JlZ2lvbnM7DQo+IH0NCj4gDQo+ICtib29sDQo+ICtnZGJhcmNo X2NyZWF0ZV9tZW10YWdfbm90ZXNfZnJvbV9yYW5nZV9wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJj aCkNCj4gK3sNCj4gKyAgZ2RiX2Fzc2VydCAoZ2RiYXJjaCAhPSBOVUxMKTsNCj4gKyAgcmV0dXJu IGdkYmFyY2gtPmNyZWF0ZV9tZW10YWdfbm90ZXNfZnJvbV9yYW5nZSAhPSBOVUxMOw0KPiArfQ0K PiArDQo+ICtzdGQ6OnZlY3RvcjxnZGI6OmJ5dGVfdmVjdG9yPg0KPiArZ2RiYXJjaF9jcmVhdGVf bWVtdGFnX25vdGVzX2Zyb21fcmFuZ2UgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FE RFIgc3RhcnRfYWRkcmVzcywgQ09SRV9BRERSIGVuZF9hZGRyZXNzKQ0KPiArew0KPiArICBnZGJf YXNzZXJ0IChnZGJhcmNoICE9IE5VTEwpOw0KPiArICBnZGJfYXNzZXJ0IChnZGJhcmNoLT5jcmVh dGVfbWVtdGFnX25vdGVzX2Zyb21fcmFuZ2UgIT0gTlVMTCk7DQo+ICsgIGlmIChnZGJhcmNoX2Rl YnVnID49IDIpDQo+ICsgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiZ2RiYXJj aF9jcmVhdGVfbWVtdGFnX25vdGVzX2Zyb21fcmFuZ2UgY2FsbGVkXG4iKTsNCj4gKyAgcmV0dXJu IGdkYmFyY2gtPmNyZWF0ZV9tZW10YWdfbm90ZXNfZnJvbV9yYW5nZSAoZ2RiYXJjaCwgc3RhcnRf YWRkcmVzcywgZW5kX2FkZHJlc3MpOw0KPiArfQ0KPiArDQo+ICt2b2lkDQo+ICtzZXRfZ2RiYXJj aF9jcmVhdGVfbWVtdGFnX25vdGVzX2Zyb21fcmFuZ2UgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNo LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGJhcmNo X2NyZWF0ZV9tZW10YWdfbm90ZXNfZnJvbV9yYW5nZV9mdHlwZSBjcmVhdGVfbWVtdGFnX25vdGVz X2Zyb21fcmFuZ2UpDQo+ICt7DQo+ICsgIGdkYmFyY2gtPmNyZWF0ZV9tZW10YWdfbm90ZXNfZnJv bV9yYW5nZSA9IGNyZWF0ZV9tZW10YWdfbm90ZXNfZnJvbV9yYW5nZTsNCj4gK30NCj4gKw0KPiAr Ym9vbA0KPiArZ2RiYXJjaF9kZWNvZGVfbWVtdGFnX25vdGVfcCAoc3RydWN0IGdkYmFyY2ggKmdk YmFyY2gpDQo+ICt7DQo+ICsgIGdkYl9hc3NlcnQgKGdkYmFyY2ggIT0gTlVMTCk7DQo+ICsgIHJl dHVybiBnZGJhcmNoLT5kZWNvZGVfbWVtdGFnX25vdGUgIT0gTlVMTDsNCj4gK30NCj4gKw0KPiAr Z2RiOjpieXRlX3ZlY3Rvcg0KPiArZ2RiYXJjaF9kZWNvZGVfbWVtdGFnX25vdGUgKHN0cnVjdCBn ZGJhcmNoICpnZGJhcmNoLCBnZGI6OmFycmF5X3ZpZXc8Y29uc3QgZ2RiX2J5dGU+IG5vdGUsIENP UkVfQUREUiBhZGRyZXNzLCBzaXplX3QgbGVuZ3RoKQ0KPiArew0KPiArICBnZGJfYXNzZXJ0IChn ZGJhcmNoICE9IE5VTEwpOw0KPiArICBnZGJfYXNzZXJ0IChnZGJhcmNoLT5kZWNvZGVfbWVtdGFn X25vdGUgIT0gTlVMTCk7DQo+ICsgIGlmIChnZGJhcmNoX2RlYnVnID49IDIpDQo+ICsgICAgZnBy aW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiZ2RiYXJjaF9kZWNvZGVfbWVtdGFnX25vdGUg Y2FsbGVkXG4iKTsNCj4gKyAgcmV0dXJuIGdkYmFyY2gtPmRlY29kZV9tZW10YWdfbm90ZSAoZ2Ri YXJjaCwgbm90ZSwgYWRkcmVzcywgbGVuZ3RoKTsNCj4gK30NCj4gKw0KPiArdm9pZA0KPiArc2V0 X2dkYmFyY2hfZGVjb2RlX21lbXRhZ19ub3RlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiYXJjaF9kZWNvZGVfbWVtdGFnX25v dGVfZnR5cGUgZGVjb2RlX21lbXRhZ19ub3RlKQ0KPiArew0KPiArICBnZGJhcmNoLT5kZWNvZGVf bWVtdGFnX25vdGUgPSBkZWNvZGVfbWVtdGFnX25vdGU7DQo+ICt9DQo+ICsNCj4gYm9vbA0KPiBn ZGJhcmNoX2NvcmVfeGZlcl9zaGFyZWRfbGlicmFyaWVzX3AgKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoKQ0KPiB7DQo+IGRpZmYgLS1naXQgYS9nZGIvZ2RiYXJjaC5oIGIvZ2RiL2dkYmFyY2guaA0K PiBpbmRleCA3MTU3ZTU1OTZmZC4uODBlMjQ0NjI0ZGUgMTAwNjQ0DQo+IC0tLSBhL2dkYi9nZGJh cmNoLmgNCj4gKysrIGIvZ2RiL2dkYmFyY2guaA0KPiBAQCAtOTgwLDYgKzk4MCwyMiBAQCB0eXBl ZGVmIGludCAoZ2RiYXJjaF9maW5kX21lbW9yeV9yZWdpb25zX2Z0eXBlKSAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gsIGZpbmRfbQ0KPiBleHRlcm4gaW50IGdkYmFyY2hfZmluZF9tZW1vcnlfcmVn aW9ucyAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGZpbmRfbWVtb3J5X3JlZ2lvbl9mdHlwZSBm dW5jLCB2b2lkICpkYXRhKTsNCj4gZXh0ZXJuIHZvaWQgc2V0X2dkYmFyY2hfZmluZF9tZW1vcnlf cmVnaW9ucyAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGdkYmFyY2hfZmluZF9tZW1vcnlfcmVn aW9uc19mdHlwZSAqZmluZF9tZW1vcnlfcmVnaW9ucyk7DQo+IA0KPiArLyogQ3JlYXRlIG1lbW9y eSB0YWcgY29yZSBmaWxlIG5vdGVzIGdpdmVuIGEgcmFuZ2Ugb2YgYWRkcmVzc2VzLiAqLw0KPiAr DQo+ICtleHRlcm4gYm9vbCBnZGJhcmNoX2NyZWF0ZV9tZW10YWdfbm90ZXNfZnJvbV9yYW5nZV9w IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCk7DQo+ICsNCj4gK3R5cGVkZWYgc3RkOjp2ZWN0b3I8 Z2RiOjpieXRlX3ZlY3Rvcj4gKGdkYmFyY2hfY3JlYXRlX21lbXRhZ19ub3Rlc19mcm9tX3Jhbmdl X2Z0eXBlKSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBzdGFydF9hZGRyZXNz LCBDT1JFX0FERFIgZW5kX2FkZHJlc3MpOw0KPiArZXh0ZXJuIHN0ZDo6dmVjdG9yPGdkYjo6Ynl0 ZV92ZWN0b3I+IGdkYmFyY2hfY3JlYXRlX21lbXRhZ19ub3Rlc19mcm9tX3JhbmdlIChzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSIHN0YXJ0X2FkZHJlc3MsIENPUkVfQUREUiBlbmRf YWRkcmVzcyk7DQo+ICtleHRlcm4gdm9pZCBzZXRfZ2RiYXJjaF9jcmVhdGVfbWVtdGFnX25vdGVz X2Zyb21fcmFuZ2UgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBnZGJhcmNoX2NyZWF0ZV9tZW10 YWdfbm90ZXNfZnJvbV9yYW5nZV9mdHlwZSAqY3JlYXRlX21lbXRhZ19ub3Rlc19mcm9tX3Jhbmdl KTsNCj4gKw0KPiArLyogRGVjb2RlIGEgbWVtb3J5IHRhZyBub3RlIGFuZCByZXR1cm4gdGhlIHRh Z3MgdGhhdCBpdCBjb250YWlucy4gKi8NCj4gKw0KPiArZXh0ZXJuIGJvb2wgZ2RiYXJjaF9kZWNv ZGVfbWVtdGFnX25vdGVfcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpOw0KPiArDQo+ICt0eXBl ZGVmIGdkYjo6Ynl0ZV92ZWN0b3IgKGdkYmFyY2hfZGVjb2RlX21lbXRhZ19ub3RlX2Z0eXBlKSAo c3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGdkYjo6YXJyYXlfdmlldzxjb25zdCBnZGJfYnl0ZT4g bm90ZSwgQ09SRV9BRERSIGFkZHJlc3MsIHNpemVfdCBsZW5ndGgpOw0KPiArZXh0ZXJuIGdkYjo6 Ynl0ZV92ZWN0b3IgZ2RiYXJjaF9kZWNvZGVfbWVtdGFnX25vdGUgKHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoLCBnZGI6OmFycmF5X3ZpZXc8Y29uc3QgZ2RiX2J5dGU+IG5vdGUsIENPUkVfQUREUiBh ZGRyZXNzLCBzaXplX3QgbGVuZ3RoKTsNCj4gK2V4dGVybiB2b2lkIHNldF9nZGJhcmNoX2RlY29k ZV9tZW10YWdfbm90ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGdkYmFyY2hfZGVjb2RlX21l bXRhZ19ub3RlX2Z0eXBlICpkZWNvZGVfbWVtdGFnX25vdGUpOw0KPiArDQo+IC8qIFJlYWQgb2Zm c2V0IE9GRlNFVCBvZiBUQVJHRVRfT0JKRUNUX0xJQlJBUklFUyBmb3JtYXR0ZWQgc2hhcmVkIGxp YnJhcmllcyBsaXN0IGZyb20NCj4gICAgY29yZSBmaWxlIGludG8gYnVmZmVyIFJFQURCVUYgd2l0 aCBsZW5ndGggTEVOLiAgUmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVhZA0KPiAgICAoemVy byBpbmRpY2F0ZXMgZmFpbHVyZSkuDQo+IGRpZmYgLS1naXQgYS9nZGIvZ2RiYXJjaC5zaCBiL2dk Yi9nZGJhcmNoLnNoDQo+IGluZGV4IDQzZTUxMzQxZjk3Li43YzVlZWQwNzgwYyAxMDA3NTUNCj4g LS0tIGEvZ2RiL2dkYmFyY2guc2gNCj4gKysrIGIvZ2RiL2dkYmFyY2guc2gNCj4gQEAgLTc0NSw2 ICs3NDUsMTIgQEAgTTtnZGI6OnVuaXF1ZV94bWFsbG9jX3B0cjxjaGFyPjttYWtlX2NvcmVmaWxl X25vdGVzO2JmZCAqb2JmZCwgaW50ICpub3RlX3NpemU7b2INCj4gIyBGaW5kIGNvcmUgZmlsZSBt ZW1vcnkgcmVnaW9ucw0KPiBNO2ludDtmaW5kX21lbW9yeV9yZWdpb25zO2ZpbmRfbWVtb3J5X3Jl Z2lvbl9mdHlwZSBmdW5jLCB2b2lkICpkYXRhO2Z1bmMsIGRhdGENCj4gDQo+ICsjIENyZWF0ZSBt ZW1vcnkgdGFnIGNvcmUgZmlsZSBub3RlcyBnaXZlbiBhIHJhbmdlIG9mIGFkZHJlc3Nlcy4NCj4g K007c3RkOjp2ZWN0b3I8Z2RiOjpieXRlX3ZlY3Rvcj47Y3JlYXRlX21lbXRhZ19ub3Rlc19mcm9t X3JhbmdlO0NPUkVfQUREUiBzdGFydF9hZGRyZXNzLCBDT1JFX0FERFIgZW5kX2FkZHJlc3M7c3Rh cnRfYWRkcmVzcywgZW5kX2FkZHJlc3MNCj4gKw0KPiArIyBEZWNvZGUgYSBtZW1vcnkgdGFnIG5v dGUgYW5kIHJldHVybiB0aGUgdGFncyB0aGF0IGl0IGNvbnRhaW5zLg0KPiArTTtnZGI6OmJ5dGVf dmVjdG9yO2RlY29kZV9tZW10YWdfbm90ZTtnZGI6OmFycmF5X3ZpZXc8Y29uc3QgZ2RiX2J5dGU+ IG5vdGUsIENPUkVfQUREUiBhZGRyZXNzLCBzaXplX3QgbGVuZ3RoO25vdGUsIGFkZHJlc3MsIGxl bmd0aA0KPiArDQo+ICMgUmVhZCBvZmZzZXQgT0ZGU0VUIG9mIFRBUkdFVF9PQkpFQ1RfTElCUkFS SUVTIGZvcm1hdHRlZCBzaGFyZWQgbGlicmFyaWVzIGxpc3QgZnJvbQ0KPiAjIGNvcmUgZmlsZSBp bnRvIGJ1ZmZlciBSRUFEQlVGIHdpdGggbGVuZ3RoIExFTi4gIFJldHVybiB0aGUgbnVtYmVyIG9m IGJ5dGVzIHJlYWQNCj4gIyAoemVybyBpbmRpY2F0ZXMgZmFpbHVyZSkuDQo+IGRpZmYgLS1naXQg YS9nZGIvbGludXgtdGRlcC5jIGIvZ2RiL2xpbnV4LXRkZXAuYw0KPiBpbmRleCA5MjdlNjliZjFl MS4uZjRmZjU3ZGVjODcgMTAwNjQ0DQo+IC0tLSBhL2dkYi9saW51eC10ZGVwLmMNCj4gKysrIGIv Z2RiL2xpbnV4LXRkZXAuYw0KPiBAQCAtMTQzOCwxMCArMTQzOCwxMSBAQCBwYXJzZV9zbWFwc19k YXRhIChjb25zdCBjaGFyICpkYXRhLA0KPiAgIHJldHVybiBzbWFwczsNCj4gfQ0KPiANCj4gLS8q IFNlZSBsaW51eC10ZGVwLmguICAqLw0KPiArLyogSGVscGVyIHRoYXQgY2hlY2tzIGlmIGFuIGFk ZHJlc3MgaXMgaW4gYSBtZW1vcnkgdGFnIHBhZ2UgZm9yIGEgbGl2ZQ0KPiArICAgcHJvY2Vzcy4g ICovDQo+IA0KPiAtYm9vbA0KPiAtbGludXhfYWRkcmVzc19pbl9tZW10YWdfcGFnZSAoQ09SRV9B RERSIGFkZHJlc3MpDQo+ICtzdGF0aWMgYm9vbA0KPiArbGludXhfcHJvY2Vzc19hZGRyZXNzX2lu X21lbXRhZ19wYWdlIChDT1JFX0FERFIgYWRkcmVzcykNCj4gew0KPiAgIGlmIChjdXJyZW50X2lu ZmVyaW9yICgpLT5mYWtlX3BpZF9wKQ0KPiAgICAgcmV0dXJuIGZhbHNlOw0KPiBAQCAtMTQ3Myw2 ICsxNDc0LDEzNyBAQCBsaW51eF9hZGRyZXNzX2luX21lbXRhZ19wYWdlIChDT1JFX0FERFIgYWRk cmVzcykNCj4gICByZXR1cm4gZmFsc2U7DQo+IH0NCj4gDQo+ICsvKiBIZWxwZXIgdGhhdCBjaGVj a3MgaWYgYW4gYWRkcmVzcyBpcyBpbiBhIG1lbW9yeSB0YWcgcGFnZSBmb3IgYSBjb3JlIGZpbGUN Cj4gKyAgIHByb2Nlc3MuICAqLw0KPiArDQo+ICtzdGF0aWMgYm9vbA0KPiArbGludXhfY29yZV9m aWxlX2FkZHJlc3NfaW5fbWVtdGFnX3BhZ2UgKENPUkVfQUREUiBhZGRyZXNzKQ0KPiArew0KPiAr ICBpZiAoY29yZV9iZmQgPT0gbnVsbHB0cikNCj4gKyAgICByZXR1cm4gZmFsc2U7DQo+ICsNCj4g KyAgYXNlY3Rpb24gKnNlY3Rpb24NCj4gKyAgICA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChj b3JlX2JmZCwgIi5tZW10YWciKTsNCj4gKw0KPiArICAvKiBHbyB0aHJvdWdoIGFsbCB0aGUgbWVt dGFnIHNlY3Rpb25zIGFuZCBmaWd1cmUgb3V0IGlmIEFERFJFU1MNCj4gKyAgICAgZmFsbHMgd2l0 aGluIG9uZSBvZiB0aGUgbWVtb3J5IHJhbmdlcyB0aGF0IGNvbnRhaW4gdGFncy4gICovDQo+ICsg IHdoaWxlIChzZWN0aW9uICE9IG51bGxwdHIpDQo+ICsgICAgew0KPiArICAgICAgc2l6ZV90IG5v dGVfc2l6ZSA9IGJmZF9zZWN0aW9uX3NpemUgKHNlY3Rpb24pOw0KPiArDQo+ICsgICAgICAvKiBJ ZiB0aGUgbm90ZSBpcyBzbWFsbGVyIHRoYW4gdGhlIHNpemUgb2YgdGhlIGhlYWRlciwgdGhpcyBj b3JlIG5vdGUNCj4gKwkgaXMgbWFsZm9ybWVkLiAgKi8NCj4gKyAgICAgIGlmIChub3RlX3NpemUg PCAyICogc2l6ZW9mICh1aW50NjRfdCkgKyBzaXplb2YgKHVpbnQxNl90KSkNCj4gKwl7DQo+ICsJ ICB3YXJuaW5nIChfKCJtYWxmb3JtZWQgY29yZSBub3RlIC0gdG9vIHNob3J0IGZvciBoZWFkZXIi KSk7DQo+ICsJICByZXR1cm4gZmFsc2U7DQo+ICsJfQ0KPiArDQo+ICsgICAgICBnZGI6OmJ5dGVf dmVjdG9yIG5vdGUgKG5vdGVfc2l6ZSk7DQo+ICsNCj4gKyAgICAgIC8qIEZldGNoIHRoZSBjb250 ZW50cyBvZiB0aGlzIHBhcnRpY3VsYXIgbWVtdGFnIG5vdGUuICAqLw0KPiArICAgICAgaWYgKCFi ZmRfZ2V0X3NlY3Rpb25fY29udGVudHMgKGNvcmVfYmZkLCBzZWN0aW9uLA0KPiArCQkJCSAgICAg bm90ZS5kYXRhICgpLCAwLCBub3RlX3NpemUpKQ0KPiArCXsNCj4gKwkgIHdhcm5pbmcgKF8oImNv dWxkIG5vdCBnZXQgY29yZSBub3RlIGNvbnRlbnRzLiIpKTsNCj4gKwkgIHJldHVybiBmYWxzZTsN Cj4gKwl9DQo+ICsNCj4gKyAgICAgIC8qIFJlYWQgdGhlIGdlbmVyaWMgaGVhZGVyIG9mIHRoZSBu b3RlLiAgVGhvc2UgY29udGFpbiB0aGUgZm9ybWF0LA0KPiArCSBzdGFydCBhZGRyZXNzIGFuZCBl bmQgYWRkcmVzcy4gICovDQo+ICsgICAgICB1aW50NjRfdCBzdGFydF9hZGRyZXNzDQo+ICsJPSBi ZmRfZ2V0XzY0IChjb3JlX2JmZCwgbm90ZS5kYXRhICgpICsgc2l6ZW9mICh1aW50MTZfdCkpOw0K PiArICAgICAgdWludDY0X3QgZW5kX2FkZHJlc3MNCj4gKwk9IGJmZF9nZXRfNjQgKGNvcmVfYmZk LCBub3RlLmRhdGEgKCkgKyBzaXplb2YgKHVpbnQxNl90KQ0KPiArCQkJCSsgc2l6ZW9mICh1aW50 NjRfdCkpOw0KPiArDQo+ICsgICAgICAvKiBJcyB0aGUgYWRkcmVzcyB3aXRoaW4gW3N0YXJ0X2Fk ZHJlc3MsIGVuZF9hZGRyZXNzKT8gICovDQo+ICsgICAgICBpZiAoYWRkcmVzcyA+PSBzdGFydF9h ZGRyZXNzDQo+ICsJICAmJiBhZGRyZXNzIDwgZW5kX2FkZHJlc3MpDQo+ICsJcmV0dXJuIHRydWU7 DQo+ICsNCj4gKyAgICAgIC8qIFRoZSByZXF1ZXN0ZWQgYWRkcmVzcyBsaWVzIG91dHNpZGUgdGhp cyBwYXJ0aWN1bGFyIG1lbXRhZyBub3RlLiAgS2VlcA0KPiArCSBsb29raW5nIGFuZCBnZXQgdGhl IG5leHQgc2VjdGlvbi4gICovDQo+ICsgICAgICBzZWN0aW9uID0gYmZkX2dldF9uZXh0X3NlY3Rp b25fYnlfbmFtZSAoY29yZV9iZmQsIHNlY3Rpb24pOw0KPiArICAgIH0NCj4gKw0KPiArICByZXR1 cm4gZmFsc2U7DQo+ICt9DQo+ICsNCj4gKy8qIFNlZSBsaW51eC10ZGVwLmguICAqLw0KPiArDQo+ ICtib29sDQo+ICtsaW51eF9hZGRyZXNzX2luX21lbXRhZ19wYWdlIChDT1JFX0FERFIgYWRkcmVz cykNCj4gK3sNCj4gKyAgaWYgKCF0YXJnZXRfaGFzX2V4ZWN1dGlvbiAoKSkNCj4gKyAgICByZXR1 cm4gbGludXhfY29yZV9maWxlX2FkZHJlc3NfaW5fbWVtdGFnX3BhZ2UgKGFkZHJlc3MpOw0KPiAr DQo+ICsgIHJldHVybiBsaW51eF9wcm9jZXNzX2FkZHJlc3NfaW5fbWVtdGFnX3BhZ2UgKGFkZHJl c3MpOw0KPiArfQ0KPiArDQo+ICsvKiBGb3IgZWFjaCBtZW1vcnkgbWFwIGVudHJ5IHRoYXQgaGFz IG1lbW9yeSB0YWdnaW5nIGVuYWJsZWQsIGNyZWF0ZSBhIG5ldw0KPiArICAgY29yZSBmaWxlIG5v dGUgdGhhdCBjb250YWlucyBhbGwgb2YgaXRzIG1lbW9yeSB0YWdzLiAgU2F2ZSB0aGUgZGF0YSB0 bw0KPiArICAgTk9URV9EQVRBIGFuZCB1cGRhdGUgTk9URV9TSVpFIGFjY29yZGluZ2x5LiAgKi8N Cj4gKw0KPiArc3RhdGljIHZvaWQNCj4gK2xpbnV4X21ha2VfbWVtdGFnX2NvcmVmaWxlX25vdGVz IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgYmZkICpvYmZkLA0KPiArCQkJCSAgZ2RiOjp1bmlx dWVfeG1hbGxvY19wdHI8Y2hhcj4gJm5vdGVfZGF0YSwNCj4gKwkJCQkgIGludCAqbm90ZV9zaXpl KQ0KPiArew0KPiArICBpZiAoY3VycmVudF9pbmZlcmlvciAoKS0+ZmFrZV9waWRfcCkNCj4gKyAg ICByZXR1cm47DQo+ICsNCj4gKyAgLyogSWYgdGhlIGFyY2hpdGVjdHVyZSBkb2Vzbid0IGhhdmUg YSBob29rIHRvIHJldHVybiBtZW1vcnkgdGFnIG5vdGVzLA0KPiArICAgICB0aGVyZSBpcyBub3Ro aW5nIGxlZnQgdG8gZG8uICAqLw0KPiArICBpZiAoIWdkYmFyY2hfY3JlYXRlX21lbXRhZ19ub3Rl c19mcm9tX3JhbmdlX3AgKGdkYmFyY2gpKQ0KPiArICAgIHJldHVybjsNCj4gKw0KPiArICBwaWRf dCBwaWQgPSBjdXJyZW50X2luZmVyaW9yICgpLT5waWQ7DQo+ICsNCj4gKyAgc3RkOjpzdHJpbmcg c21hcHNfZmlsZSA9IHN0cmluZ19wcmludGYgKCIvcHJvYy8lZC9zbWFwcyIsIHBpZCk7DQo+ICsN Cj4gKyAgZ2RiOjp1bmlxdWVfeG1hbGxvY19wdHI8Y2hhcj4gZGF0YQ0KPiArICAgID0gdGFyZ2V0 X2ZpbGVpb19yZWFkX3N0cmFsbG9jIChOVUxMLCBzbWFwc19maWxlLmNfc3RyICgpKTsNCj4gKw0K PiArICBpZiAoZGF0YSA9PSBudWxscHRyKQ0KPiArICAgIHJldHVybjsNCj4gKw0KPiArICBzdGQ6 OnZlY3RvcjxzdHJ1Y3Qgc21hcHNfZGF0YT4gc21hcHM7DQo+ICsNCj4gKyAgLyogUGFyc2UgdGhl IGNvbnRlbnRzIG9mIHNtYXBzIGludG8gYSB2ZWN0b3IuICAqLw0KPiArICBzbWFwcyA9IHBhcnNl X3NtYXBzX2RhdGEgKGRhdGEuZ2V0ICgpLCBzbWFwc19maWxlKTsNCj4gKw0KPiArICBmb3IgKGNv bnN0IHNtYXBzX2RhdGEgJm1hcCA6IHNtYXBzKQ0KPiArICAgIHsNCj4gKyAgICAgIC8qIERvZXMg dGhpcyBtYXBwaW5nIGhhdmUgbWVtb3J5IHRhZ2dpbmcgZW5hYmxlZD8gSWYgc28sIHNhdmUgdGhl DQo+ICsJIG1lbW9yeSB0YWdzIHRvIHRoZSBjb3JlIGZpbGUgbm90ZS4gICovDQo+ICsgICAgICBp ZiAobWFwLnZtZmxhZ3MubWVtb3J5X3RhZ2dpbmcgPT0gMCkNCj4gKwljb250aW51ZTsNCj4gKw0K PiArICAgICAgLyogQXNrIHRoZSBhcmNoaXRlY3R1cmUgdG8gY3JlYXRlIChvbmUgb3IgbW9yZSkg TlRfTUVNVEFHIG5vdGVzIGZvcg0KPiArCSB0aGlzIHBhcnRpY3VsYXIgbWVtb3J5IHJhbmdlLCBp bmNsdWRpbmcgdGhlIGhlYWRlci4NCj4gKw0KPiArCSBJZiB0aGUgbm90ZXMgYXJlIHRvbyBiaWcs IHdlIG1heSBuZWVkIHRvIGJyZWFrIHVwIHRoZSB0cmFuc2Zlcg0KPiArCSBpbnRvIHNtYWxsZXIg Y2h1bmtzLg0KPiArDQo+ICsJIElmIHRoZSBhcmNoaXRlY3R1cmUgcmV0dXJucyBhbiBlbXB0eSB2 ZWN0b3IsIHRoYXQgbWVhbnMgdGhlcmUgYXJlDQo+ICsJIG5vIG1lbW9yeSB0YWcgbm90ZXMgdG8g d3JpdGUuICAqLw0KPiArICAgICAgc3RkOjp2ZWN0b3I8Z2RiOjpieXRlX3ZlY3Rvcj4gbWVtb3J5 X3RhZ19ub3RlczsNCj4gKyAgICAgIG1lbW9yeV90YWdfbm90ZXMNCj4gKwk9IGdkYmFyY2hfY3Jl YXRlX21lbXRhZ19ub3Rlc19mcm9tX3JhbmdlIChnZGJhcmNoLA0KPiArCQkJCQkJICBtYXAuc3Rh cnRfYWRkcmVzcywNCj4gKwkJCQkJCSAgbWFwLmVuZF9hZGRyZXNzKTsNCj4gKyAgICAgIC8qIFdy aXRlIG5vdGVzIHRvIHRoZSBjb3JlIGZpbGUuICAqLw0KPiArICAgICAgZm9yIChnZGI6OmJ5dGVf dmVjdG9yIG5vdGUgOiBtZW1vcnlfdGFnX25vdGVzKQ0KPiArCXsNCj4gKwkgIG5vdGVfZGF0YS5y ZXNldCAoZWxmY29yZV93cml0ZV9ub3RlIChvYmZkLCBub3RlX2RhdGEucmVsZWFzZSAoKSwNCj4g KwkJCQkJICAgICAgIG5vdGVfc2l6ZSwgIkNPUkUiLA0KPiArCQkJCQkgICAgICAgTlRfTUVNVEFH LCBub3RlLmRhdGEgKCksDQo+ICsJCQkJCSAgICAgICBub3RlLnNpemUgKCkpKTsNCj4gKwl9DQo+ ICsgICAgfQ0KPiArfQ0KPiArDQo+IC8qIExpc3QgbWVtb3J5IHJlZ2lvbnMgaW4gdGhlIGluZmVy aW9yIGZvciBhIGNvcmVmaWxlLiAgKi8NCj4gDQo+IHN0YXRpYyBpbnQNCj4gQEAgLTIwNTEsNiAr MjE4Myw5IEBAIGxpbnV4X21ha2VfY29yZWZpbGVfbm90ZXMgKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoLCBiZmQgKm9iZmQsIGludCAqbm90ZV9zaXplKQ0KPiAJcmV0dXJuIE5VTEw7DQo+ICAgICB9 DQo+IA0KPiArICAvKiBEdW1wIHRoZSBtZW1vcnkgdGFncywgaWYgYW55LiAgKi8NCj4gKyAgbGlu dXhfbWFrZV9tZW10YWdfY29yZWZpbGVfbm90ZXMgKGdkYmFyY2gsIG9iZmQsIG5vdGVfZGF0YSwg bm90ZV9zaXplKTsNCj4gKw0KPiAgIC8qIEZpbGUgbWFwcGluZ3MuICAqLw0KPiAgIGxpbnV4X21h a2VfbWFwcGluZ3NfY29yZWZpbGVfbm90ZXMgKGdkYmFyY2gsIG9iZmQsIG5vdGVfZGF0YSwgbm90 ZV9zaXplKTsNCj4gDQo+IGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL2FhcmNo NjQtbXRlLWdjb3JlLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL2FhcmNoNjQtbXRlLWdjb3Jl LmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAuLmIyMGViY2Zm NDI0DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC9hYXJj aDY0LW10ZS1nY29yZS5jDQo+IEBAIC0wLDAgKzEsOTMgQEANCj4gKy8qIFRoaXMgdGVzdCBwcm9n cmFtIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLg0KPiArDQo+ICsgICBDb3B5cmln aHQgMjAyMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4NCj4gKw0KPiArICAgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkNCj4gKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQo+ICsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcg0KPiArICAgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCj4gKw0KPiArICAgVGhpcyBwcm9ncmFtIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQo+ICsgICBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv Zg0KPiArICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQ0KPiArICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4NCj4gKw0KPiArICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCj4gKyAgIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8NCj4g Kw0KPiArLyogRXhlcmNpc2UgQUFyY2g2NCdzIE1lbW9yeSBUYWdnaW5nIEV4dGVuc2lvbiB3aXRo IHRhZ2dlZCBwb2ludGVycy4gICovDQo+ICsNCj4gKy8qIFRoaXMgdGVzdCB3YXMgYmFzZWQgb24g dGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBBQXJjaDY0IE1lbW9yeSBUYWdnaW5nDQo+ICsgICBF eHRlbnNpb24gZnJvbSB0aGUgTGludXggS2VybmVsLCBmb3VuZCBpbiB0aGUgc291cmNlcyBpbg0K PiArICAgRG9jdW1lbnRhdGlvbi9hcm02NC9tZW1vcnktdGFnZ2luZy1leHRlbnNpb24ucnN0LiAg Ki8NCj4gKw0KPiArI2luY2x1ZGUgPGVycm5vLmg+DQo+ICsjaW5jbHVkZSA8c3RkaW8uaD4NCj4g KyNpbmNsdWRlIDxzdGRsaWIuaD4NCj4gKyNpbmNsdWRlIDx1bmlzdGQuaD4NCj4gKyNpbmNsdWRl IDxzeXMvYXV4di5oPg0KPiArI2luY2x1ZGUgPHN5cy9tbWFuLmg+DQo+ICsjaW5jbHVkZSA8c3lz L3ByY3RsLmg+DQo+ICsNCj4gKy8qIEZyb20gYXJjaC9hcm02NC9pbmNsdWRlL3VhcGkvYXNtL2h3 Y2FwLmggKi8NCj4gKyNkZWZpbmUgSFdDQVAyX01URSAgICAgICAgICAgICAgKDEgPDwgMTgpDQo+ ICsNCj4gKy8qIEZyb20gYXJjaC9hcm02NC9pbmNsdWRlL3VhcGkvYXNtL21tYW4uaCAqLw0KPiAr I2RlZmluZSBQUk9UX01URSAgMHgyMA0KPiArDQo+ICsvKiBGcm9tIGluY2x1ZGUvdWFwaS9saW51 eC9wcmN0bC5oICovDQo+ICsjZGVmaW5lIFBSX1NFVF9UQUdHRURfQUREUl9DVFJMIDU1DQo+ICsj ZGVmaW5lIFBSX0dFVF9UQUdHRURfQUREUl9DVFJMIDU2DQo+ICsjZGVmaW5lIFBSX1RBR0dFRF9B RERSX0VOQUJMRQkoMVVMIDw8IDApDQo+ICsjZGVmaW5lIFBSX01URV9UQ0ZfU0hJRlQJMQ0KPiAr I2RlZmluZSBQUl9NVEVfVENGX1NZTkMJCSgxVUwgPDwgUFJfTVRFX1RDRl9TSElGVCkNCj4gKyNk ZWZpbmUgUFJfTVRFX1RBR19TSElGVAkzDQo+ICsNCj4gK3ZvaWQNCj4gK2FjY2Vzc19tZW1vcnkg KHVuc2lnbmVkIGNoYXIgKnRhZ2dlZF9wdHIpDQo+ICt7DQo+ICsgIHRhZ2dlZF9wdHJbMF0gPSAn YSc7DQo+ICt9DQo+ICsNCj4gK2ludA0KPiArbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQ0K PiArew0KPiArICB1bnNpZ25lZCBjaGFyICp0YWdnZWRfcHRyOw0KPiArICB1bnNpZ25lZCBsb25n IHBhZ2Vfc3ogPSBzeXNjb25mIChfU0NfUEFHRVNJWkUpOw0KPiArICB1bnNpZ25lZCBsb25nIGh3 Y2FwMiA9IGdldGF1eHZhbChBVF9IV0NBUDIpOw0KPiArDQo+ICsgIC8qIEJhaWwgb3V0IGlmIE1U RSBpcyBub3Qgc3VwcG9ydGVkLiAgKi8NCj4gKyAgaWYgKCEoaHdjYXAyICYgSFdDQVAyX01URSkp DQo+ICsgICAgcmV0dXJuIDE7DQo+ICsNCj4gKyAgLyogRW5hYmxlIHRoZSB0YWdnZWQgYWRkcmVz cyBBQkksIHN5bmNocm9ub3VzIE1URSB0YWcgY2hlY2sgZmF1bHRzIGFuZA0KPiArICAgICBhbGxv dyBhbGwgbm9uLXplcm8gdGFncyBpbiB0aGUgcmFuZG9tbHkgZ2VuZXJhdGVkIHNldC4gICovDQo+ ICsgIGlmIChwcmN0bCAoUFJfU0VUX1RBR0dFRF9BRERSX0NUUkwsDQo+ICsJICAgICBQUl9UQUdH RURfQUREUl9FTkFCTEUgfCBQUl9NVEVfVENGX1NZTkMNCj4gKwkgICAgIHwgKDB4ZmZmZSA8PCBQ Ul9NVEVfVEFHX1NISUZUKSwNCj4gKwkgICAgIDAsIDAsIDApKQ0KPiArICAgIHsNCj4gKyAgICAg IHBlcnJvciAoInByY3RsICgpIGZhaWxlZCIpOw0KPiArICAgICAgcmV0dXJuIDE7DQo+ICsgICAg fQ0KPiArDQo+ICsgIC8qIENyZWF0ZSBhIG1hcHBpbmcgdGhhdCB3aWxsIGhhdmUgUFJPVF9NVEUg c2V0LiAgKi8NCj4gKyAgdGFnZ2VkX3B0ciA9IG1tYXAgKDAsIHBhZ2Vfc3osIFBST1RfUkVBRCB8 IFBST1RfV1JJVEUsDQo+ICsJCSAgICAgTUFQX1BSSVZBVEUgfCBNQVBfQU5PTllNT1VTLCAtMSwg MCk7DQo+ICsgIGlmICh0YWdnZWRfcHRyID09IE1BUF9GQUlMRUQpDQo+ICsgICAgew0KPiArICAg ICAgcGVycm9yICgibW1hcCAoKSBmYWlsZWQiKTsNCj4gKyAgICAgIHJldHVybiAxOw0KPiArICAg IH0NCj4gKw0KPiArICAvKiBFbmFibGUgTVRFIG9uIHRoZSBhYm92ZSBhbm9ueW1vdXMgbW1hcC4g ICovDQo+ICsgIGlmIChtcHJvdGVjdCAodGFnZ2VkX3B0ciwgcGFnZV9zeiwgUFJPVF9SRUFEIHwg UFJPVF9XUklURSB8IFBST1RfTVRFKSkNCj4gKyAgICB7DQo+ICsgICAgICBwZXJyb3IgKCJtcHJv dGVjdCAoKSBmYWlsZWQiKTsNCj4gKyAgICAgIHJldHVybiAxOw0KPiArICAgIH0NCj4gKw0KPiAr ICBhY2Nlc3NfbWVtb3J5ICh0YWdnZWRfcHRyKTsNCj4gKw0KPiArICByZXR1cm4gMDsNCj4gK30N Cj4gZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvYWFyY2g2NC1tdGUtZ2NvcmUu ZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC9hYXJjaDY0LW10ZS1nY29yZS5leHANCj4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAuLmJiNTI5YThiMzY5DQo+IC0t LSAvZGV2L251bGwNCj4gKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC9hYXJjaDY0LW10ZS1n Y29yZS5leHANCj4gQEAgLTAsMCArMSwxMTUgQEANCj4gKyMgQ29weXJpZ2h0IChDKSAyMDE4LTIw MjEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQoNCjIwMTg/DQoNCj4gKyMNCj4gKyMg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkNCj4gKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCj4gKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3INCj4gKyMgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCj4gKyMNCj4gKyMgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQo+ICsjIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mDQo+ICsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUNCj4gKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4NCj4gKyMNCj4gKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCj4gKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uDQo+ICsNCj4g KyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIGdkYiB0ZXN0c3VpdGUuDQo+ICsNCj4gKyMgVGVz dCBnZW5lcmF0aW5nIGFuZCByZWFkaW5nIGEgY29yZSBmaWxlIHdpdGggTVRFIG1lbW9yeSB0YWdz Lg0KPiArDQo+ICtpZiB7IVtpc19hYXJjaDY0X3RhcmdldF19IHsNCj4gKyAgICB2ZXJib3NlICJT a2lwcGluZyAke2dkYl90ZXN0X2ZpbGVfbmFtZX0uIg0KPiArICAgIHJldHVybg0KPiArfQ0KPiAr DQo+ICtzdGFuZGFyZF90ZXN0ZmlsZQ0KPiAraWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAiZmFp bGVkIHRvIHByZXBhcmUiICR7dGVzdGZpbGV9ICR7c3JjZmlsZX1dIH0gew0KPiArICAgIHJldHVy biAtMQ0KPiArfQ0KPiArDQo+ICtpZiAhW3J1bnRvX21haW5dIHsNCj4gKyAgICB1bnRlc3RlZCAi Y291bGQgbm90IHJ1biB0byBtYWluIg0KPiArICAgIHJldHVybiAtMQ0KPiArfQ0KPiArDQo+ICsj IFRhcmdldHMgdGhhdCBkb24ndCBzdXBwb3J0IG1lbW9yeSB0YWdnaW5nIHNob3VsZCBub3QgZXhl Y3V0ZSB0aGUNCj4gKyMgcnVudGltZSBtZW1vcnkgdGFnZ2luZyB0ZXN0cy4NCj4gK2lmIHshW3N1 cHBvcnRzX21lbXRhZ119IHsNCj4gKyAgICB1bnN1cHBvcnRlZCAibWVtb3J5IHRhZ2dpbmcgdW5z dXBwb3J0ZWQiDQo+ICsgICAgcmV0dXJuIC0xDQo+ICt9DQo+ICsNCj4gK2dkYl9icmVha3BvaW50 ICJhY2Nlc3NfbWVtb3J5Ig0KPiArDQo+ICtpZiBbZ2RiX2NvbnRpbnVlICJhY2Nlc3NfbWVtb3J5 Il0gew0KPiArICAgIHJldHVybiAtMQ0KPiArfQ0KPiArDQo+ICsjIFNldCBlYWNoIHRhZyBncmFu dWxlIHRvIGEgZGlmZmVyZW50IHRhZyB2YWx1ZSwgZnJvbSAweDAgdG8gMHhmLg0KPiArc2V0IGF0 YWdfbXNnICJBbGxvY2F0aW9uIHRhZ1xcKHNcXCkgdXBkYXRlZCBzdWNjZXNzZnVsbHlcLiINCj4g K2ZvciB7c2V0IGkgMTV9IHskaSA+PSAwfSB7aW5jciBpIC0xfSB7DQo+ICsgICAgc2V0IGluZGV4 IFtleHByIFtleHByIDE1IC0gJGldICogMTZdDQo+ICsgICAgc2V0IHRhZyBbZm9ybWF0ICIlMDJ4 IiAkaV0NCj4gKyAgICBnZGJfdGVzdCAibWVtb3J5LXRhZyBzZXQtYWxsb2NhdGlvbi10YWcgJnRh Z2dlZF9wdHJcWyRpbmRleFxdIDEgJHRhZyIgXA0KPiArCSAgICAgJGF0YWdfbXNnIFwNCj4gKwkg ICAgICJzZXQgbWVtb3J5IHRhZyBvZiAmdGFnZ2VkX3B0clxbJGluZGV4XF0gdG8gJHRhZyINCj4g K30NCj4gKw0KPiArIyBSdW4gdW50aWwgYSBjcmFzaCBhbmQgY29uZmlybSBHREIgZGlzcGxheXMg bWVtb3J5IHRhZyB2aW9sYXRpb24NCj4gKyMgaW5mb3JtYXRpb24uDQo+ICtnZGJfdGVzdCAiY29u dGludWUiIFwNCj4gKyAgICBbbXVsdGlfbGluZSBcDQo+ICsJIlByb2dyYW0gcmVjZWl2ZWQgc2ln bmFsIFNJR1NFR1YsIFNlZ21lbnRhdGlvbiBmYXVsdCIgXA0KPiArCSJNZW1vcnkgdGFnIHZpb2xh dGlvbiB3aGlsZSBhY2Nlc3NpbmcgYWRkcmVzcyAkaGV4IiBcDQo+ICsJIkFsbG9jYXRpb24gdGFn ICRoZXgiIFwNCj4gKwkiTG9naWNhbCB0YWcgJGhleFwuIiBcDQo+ICsJIiRoZXggaW4gYWNjZXNz X21lbW9yeSBcXCguKlxcKSBhdCAuKiIgXA0KPiArCSIuKnRhZ2dlZF9wdHJcXFxbMFxcXF0gPSAn YSc7Il0gXA0KPiArCSAiZGlzcGxheSB0YWcgdmlvbGF0aW9uIGluZm9ybWF0aW9uIGZvciBsaXZl IHByb2Nlc3MiDQo+ICsNCj4gKyMgR2VuZXJhdGUgdGhlIGNvcmUgZmlsZS4NCj4gK3NldCBjb3Jl X2ZpbGVuYW1lIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSAiJHRlc3RmaWxlLmNvcmUiXQ0KPiArc2V0 IGNvcmVfZ2VuZXJhdGVkIFtnZGJfZ2NvcmVfY21kICIkY29yZV9maWxlbmFtZSIgImdlbmVyYXRl IGNvcmUgZmlsZSJdDQo+ICsNCj4gK2lmIHsgISRjb3JlX2dlbmVyYXRlZCB9IHsNCj4gKyAgICBy ZXR1cm4gLTENCj4gK30NCj4gKw0KPiArY2xlYW5fcmVzdGFydA0KPiArDQo+ICsjIExvYWQgdGhl IHByb2dyYW0gZmlsZS4NCj4gK3NldCBwcm9ncmFtX2ZpbGVuYW1lIFtzdGFuZGFyZF9vdXRwdXRf ZmlsZSAkdGVzdGZpbGVdDQo+ICtzZXQgcHJvZ3JhbV9sb2FkZWQgW2dkYl9maWxlX2NtZCAkcHJv Z3JhbV9maWxlbmFtZV0NCj4gKw0KPiAraWYgeyAkcHJvZ3JhbV9sb2FkZWQgfSB7DQo+ICsgICAg cmV0dXJuIC0xDQo+ICt9DQo+ICsNCj4gKyMgTG9hZCB0aGUgY29yZSBmaWxlIGFuZCBtYWtlIHN1 cmUgd2Ugc2VlIHRoZSB0YWcgdmlvbGF0aW9uIGZhdWx0DQo+ICsjIGluZm9ybWF0aW9uLg0KPiAr Z2RiX3Rlc3QgImNvcmUgJGNvcmVfZmlsZW5hbWUiIFwNCj4gKyAgICBbbXVsdGlfbGluZSBcDQo+ ICsJIkNvcmUgd2FzIGdlbmVyYXRlZCBieS4qXC4iIFwNCj4gKwkiUHJvZ3JhbSB0ZXJtaW5hdGVk IHdpdGggc2lnbmFsIFNJR1NFR1YsIFNlZ21lbnRhdGlvbiBmYXVsdCIgXA0KPiArCSJNZW1vcnkg dGFnIHZpb2xhdGlvbiB3aGlsZSBhY2Nlc3NpbmcgYWRkcmVzcyAkaGV4IiBcDQo+ICsJIkFsbG9j YXRpb24gdGFnIDB4ZiIgXA0KPiArCSJMb2dpY2FsIHRhZyAweDBcLiIgXA0KPiArCSIjMC4qJGhl eCBpbiBhY2Nlc3NfbWVtb3J5IFxcKC4qXFwpIGF0IC4qIiBcDQo+ICsJIi4qdGFnZ2VkX3B0clxc XFswXFxcXSA9ICdhJzsiXSBcDQo+ICsJICJjb3JlIGZpbGUgc2hvd3MgdGFnIHZpb2xhdGlvbiBp bmZvcm1hdGlvbiINCj4gKw0KPiArIyBNYWtlIHN1cmUgd2UgaGF2ZSB0aGUgdGFnX2N0bCByZWdp c3Rlci4NCj4gK2dkYl90ZXN0ICJpbmZvIHJlZ2lzdGVyIHRhZ19jdGwiIFwNCj4gKwkgInRhZ19j dGwuKiRoZXguKiR7OjpkZWNpbWFsfSIgXA0KPiArCSAidGFnX2N0bCBpcyBhdmFpbGFibGUiDQo+ ICsNCj4gKyMgQ2hlY2sgaWYgdGhlIHRhZyBncmFudWxlcyBoYXZlIHRoZSBleHBlY3RlZCB2YWx1 ZXMuICBJZiB0aGV5IGRvLCB0aGF0DQo+ICsjIG1lYW5zIHRoZSBjb3JlIGZpbGUgc2F2ZWQgdGhl IHRhZ3MgcHJvcGVybHkgYW5kIEdEQiBoYXMgcmVhZCB0aGVtDQo+ICsjIGNvcnJlY3RseS4NCj4g K2ZvciB7c2V0IGkgMTV9IHskaSA+PSAwfSB7aW5jciBpIC0xfSB7DQo+ICsgICAgc2V0IGluZGV4 IFtleHByIFtleHByIDE1IC0gJGldICogMTZdDQo+ICsgICAgc2V0IHRhZyBbZm9ybWF0ICIleCIg JGldDQo+ICsgICAgZ2RiX3Rlc3QgIm1lbW9yeS10YWcgcHJpbnQtYWxsb2NhdGlvbi10YWcgJnRh Z2dlZF9wdHJcWyRpbmRleFxdIiBcDQo+ICsJICAgICAiPSAweCR0YWciIFwNCj4gKwkgICAgICJt ZW1vcnkgdGFnIG9mICZ0YWdnZWRfcHRyXFskaW5kZXhcXSBpcyBjb3JyZWN0Ig0KPiArfQ0KPiAt LSANCj4gMi4yNS4xDQo+IA0KDQo=