From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 284E7C433FE for ; Mon, 17 Oct 2022 01:09:56 +0000 (UTC) Received: from localhost ([::1]:55572 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1okEdf-0004zj-8t for qemu-devel@archiver.kernel.org; Sun, 16 Oct 2022 21:09:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:42134) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1okESc-0004Z2-WF; Sun, 16 Oct 2022 20:58:31 -0400 Received: from esa5.hgst.iphmx.com ([216.71.153.144]:44025) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1okESP-00052e-CK; Sun, 16 Oct 2022 20:58:30 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1665968297; x=1697504297; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=lxzXPjEpLmaGN62Br0vzdkRZl0DIvAaxfhYoPt4zJgQ=; b=f6l70VMaCi+4B3wTyrs2IwhpcMXF+yhcf2BOh/AESHbzAjmnO9iWavvf SoFNtwCg6QYNXs9ujZVH8IkrlsonrATjDZ1yq80eCRU35FOX0TlS8SSIv W4DTjrBnCi0QLRKqivIlDHDRCcqFIBvpBz8cld2lfNifcqibCutLCKMLN 3hmkJJNmN9uJoSl+TPX5L80h8gUtpfsTmwdMykUXxl4WNa9QZOYCkAxXa hevVW1zUVUi3L5U50rSm3v8x60zYcV/eNYbsyVDkeCcjumzuQONF8qm0H RgTkK3JnAHA4jd38V/b766As3LFdMpfThJ1IbadZlGDL+Ah3P7FRuoXcm Q==; X-IronPort-AV: E=Sophos;i="5.95,190,1661788800"; d="scan'208";a="213963338" Received: from mail-dm6nam04lp2040.outbound.protection.outlook.com (HELO NAM04-DM6-obe.outbound.protection.outlook.com) ([104.47.73.40]) by ob1.hgst.iphmx.com with ESMTP; 17 Oct 2022 08:58:14 +0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=M/W7+UyqxDmlvQDI1h5GJwMHVN/PzEAjL9iIN/nK9z1FesOFSA5bd67dJ5YdLhzrtIXrzKSCwXZldonG6Zk/slvnvf8eaOgpYqKqh4jn9dHhTLgjCuKLtLnLFn9ufc4pvUMhkrh2LEqiFnDPiua1pnt9dk2ND3I53vxV7KIhMb5Ch8BWOV17KRq1kw2TVsJqDMJ79ocLAGMl3/EXQENwUH+dAtSrXzDSB7e8ZEbPAkbuSpA/UO9aqsgUmj96lc6DGZthO9x3wLMwj/loBEgnrCE3Vs+TniGojjHYjUczuadEcp/nJHKkEnT8KN6ah9Xcp1Xjyaxbtpb+3RtS6xmbuA== 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=lxzXPjEpLmaGN62Br0vzdkRZl0DIvAaxfhYoPt4zJgQ=; b=hhnId2A+mdU88YqGsXdCKGkph+E5Q/0fSOPd/9WuH9GQYvO3DhFUjwhcVoZIE1O2RvaLazizACwcJK7y0REvTyRb0lbovN5sBfkMJr00obYwwL7DlcKdfjIuDhqhy29JcGUoB5cavGz6y7To9rOSTlRi7yn0TziKuFhwNIVztTNracOWs74gToZliMFEc8ktgKg483tYsZNONdyXU6Uf37kMYw0BS1gC8O89F9Qxa69OXhSC2B8myvIio3mjBioRlNsrq0DKrvYiZu/G0ZiVc5/37llua7CnHAJoJHyokLTwBykP+plKTlHirVc2mDO30SbkJc9Sxo+XfKoko0ClmQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=wdc.com; dmarc=pass action=none header.from=wdc.com; dkim=pass header.d=wdc.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector2-sharedspace-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lxzXPjEpLmaGN62Br0vzdkRZl0DIvAaxfhYoPt4zJgQ=; b=B7VUK8Ud8q8V/HNojCTP/OPXVAc5DSlm3eMJm4fpXyC7M4CCOnt1aQWDTyb+Sx0U1pkepPHxSpq3Gc03Bc6IUUVuuQMYIvuYeElOMxWSJbj+I3Q41uQ+Ou+Jj1rtGnaIjFQjbbM8JPKVJw/+7E7njzILiVpX5XOdHMtRroLX8ns= Received: from MN2PR04MB5951.namprd04.prod.outlook.com (2603:10b6:208:3f::13) by MWHPR04MB0512.namprd04.prod.outlook.com (2603:10b6:300:70::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.29; Mon, 17 Oct 2022 00:58:10 +0000 Received: from MN2PR04MB5951.namprd04.prod.outlook.com ([fe80::51df:fdd7:7c49:12ee]) by MN2PR04MB5951.namprd04.prod.outlook.com ([fe80::51df:fdd7:7c49:12ee%5]) with mapi id 15.20.5723.032; Mon, 17 Oct 2022 00:58:10 +0000 From: Dmitry Fomichev To: "faithilikerun@gmail.com" , "qemu-devel@nongnu.org" CC: "stefanha@redhat.com" , "hreitz@redhat.com" , "fam@euphon.net" , "kwolf@redhat.com" , "hare@suse.de" , "damien.lemoal@opensource.wdc.com" , "qemu-block@nongnu.org" Subject: Re: [PATCH v4 2/3] block: introduce zone append write for zoned devices Thread-Topic: [PATCH v4 2/3] block: introduce zone append write for zoned devices Thread-Index: AQHY4W+JJgqQm+Rp0k6/OdfTx2lsz64RxCyA Date: Mon, 17 Oct 2022 00:58:10 +0000 Message-ID: <0f46f1ad7510d18e8bd92ac9f1451db8f8f9bec4.camel@wdc.com> References: <20221016145626.171838-1-faithilikerun@gmail.com> <20221016145626.171838-3-faithilikerun@gmail.com> In-Reply-To: <20221016145626.171838-3-faithilikerun@gmail.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.44.1-0ubuntu1 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=wdc.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MN2PR04MB5951:EE_|MWHPR04MB0512:EE_ x-ms-office365-filtering-correlation-id: dd1ef816-366f-4ebe-9891-08daafdaa94c wdcipoutbound: EOP-TRUE x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: DDT4oot/9aO7dWxdYEqli9DXXBpev8KJzpRjmZV2YQFBlFms61ElSWN55hPsmdAhTgfEB1cHRRL08PVZ7253U5hAwax3PZH1wMh+3spf41WqH8i7NtZ+66VI4N10Q9RA8aEPj9yf1tqU02gR5Rl671AqfRLfwhk+zbMt3fZ9jmCFzKpKk9yaxtBZA5pgMdZbesrJEnhXHp62424Bh3u2li83qaiA7yvzGoubKYv3yx4I6IYzgB1pl0Kg9fYFiWUaryzUryAOVV8zKw0kANK1vIGLF2WKorABGxUn6a6DyVGrBDPNKkenEHeBEAZgva9kOJ5XHP8C8tlr+Svj0LzbesDKe+okcLZljaWP7ad+qJCpjptK7aKmAUabvf8eRTmWxOM4a44tN9CXmAN5YNl22jSs6Koqy6NfobATgot3CVBkhWAV1MwSJs0eLBx+F8TS09SbftNh6tb3gL8x6TqWEBrtaaBfGx3evj1BNTM5c3NvdxYXfimaTk2vM6chYrEO0LMX2q/Ss3CGqBm9QArqIFW12niTH1wYXOGfQYlY5/gh0Lz/pVr3KD6Ea+W/Vx65Bc4YwZ2uPcfcmzTKmR/GERWNGnes/3z81e9ai233oYxpufnQp3rUwo5riDRdlRUJZCH+m0FGqyCJ0xX3gpo/DBJohE+3F6i7BXXUzUWsLj92wa+ywf9JmD0uwI31z115DbKfwY0+fw+XAlgvpCZKHUbDRoj5zjlYgGkxVsQdnWRg8jXgyWpbbDjMI2rW65oIDtN0u193THDHL88MbkTu8Q== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR04MB5951.namprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230022)(4636009)(396003)(376002)(346002)(136003)(366004)(39860400002)(451199015)(6506007)(71200400001)(478600001)(110136005)(54906003)(6486002)(66446008)(30864003)(26005)(64756008)(8676002)(4326008)(91956017)(76116006)(66556008)(66946007)(41300700001)(6512007)(8936002)(5660300002)(66476007)(2616005)(316002)(83380400001)(82960400001)(38070700005)(186003)(2906002)(4001150100001)(122000001)(38100700002)(86362001)(36756003); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?K0wxRWdvV2lTRVByYkczUTB5NkpDVlNmdS9Gc3FvRnlJTy9CRXVPeld0a0M0?= =?utf-8?B?bGFtYjhqMzFKbmRVMXl5YVI4MnVrNVFuV25vN2MzWGZUL0RNYUdib3JHR0Qr?= =?utf-8?B?THVpYlJUWWpLdDRLdzdiTlFJWHFVTWZRcGZPZDAxTkxmSnFYc1prQ29UeEZS?= =?utf-8?B?bUp5Rnp6cCtITnNFN05UbkRKYW9vUDFOVXdRMlhWZWJvK0luMHpRc09WallI?= =?utf-8?B?ZkorTXV2bmFhcTBKTmVNbUozb1Mwa0ZVSXRLbm9EVVQ2STZlbEwyaDBhRTgy?= =?utf-8?B?N1B5aXZkaVNDUE1tSEdCWEpEbTFzblNhL29ZMCtPREZyWTFpNTZzRUJsbjRI?= =?utf-8?B?c200WWdERXNZWk5ocVlrV0pBT3krOGduL00rOUVFU1BFYTZJc3luMWpZbU5F?= =?utf-8?B?a0dHYndsekdkQk1ub3NpQkVPby85VXVja3JySXFNVGQ2N21neHpYMk1keDRK?= =?utf-8?B?ZVRPUmxHMGlUQ3cyV0hxMVMvaEYySEFHT2V1bmZZcjhuRzRBaXpNdkJsRHRG?= =?utf-8?B?QUpIbGdQeW1za2hOdnArR2ZkQjI1ZVF4N1MyMEVxaXpJb2d5VUVzNHdEemFN?= =?utf-8?B?cHUrT2E5Undaa3BmdXBVMHh4UzdLaXBMRkJFWGhJWVVlb05nWHRyRFlhcUli?= =?utf-8?B?OENFaDRZeDZhT21Id2xEUVBJcjc4RG9lQ3hqeDBNK3hCendic3JsS2JOcFlH?= =?utf-8?B?cy9RdW82WWN1ZW9HNmVqTnBVTEVoT0d3RVRsQVJGeXNlUE5VN0h1YkdSbmJ2?= =?utf-8?B?amM5elJIUFNrWkIwSVRrN2RMaldxdFZ0SjFGcGRhSWxzeHF5cWdHTUd3VFlQ?= =?utf-8?B?TDVxRzZzTzZkNzZ2d3U2YXgrTjNnTXJDNnhoaTlvRkFkSWtsazY3N2V3WDMz?= =?utf-8?B?d2dORVo3QS9YNTNkV3UrYlN5a2UzRFZOclQ4SmFNdlpYenp3UGNEQkpsa1Ry?= =?utf-8?B?SnMvSXVFaDl1SFR5Qk1nTTVuOS9oSEQxMTB3ZzVsQ2NqbWU2ZC9VU2RMS29R?= =?utf-8?B?eHMzdktONXdpYkVuRzdkRGRpcmtwL1hNU0M5ekd0bEk4bmdLNm1McGd0REdX?= =?utf-8?B?L25heHBTVnEvNS8xUTJBZHFrVmcxblNEcUh0dnZPcHI1ZHNtYlRxZnB0dVBW?= =?utf-8?B?RE1Fd3U0Sm03VC90Rnd4TkowVStsTklEUHNHaUt1YWpsVzJIalJBSVlNcFV4?= =?utf-8?B?dkUzaTJGWHNhSmx3dlI0Tm5rRnRVYWNDMHhMNldXaFVFWDBoT3lkVkl6Nkd6?= =?utf-8?B?cStMdjhhd2lvS09ubC9KaS85Z2x3SUthaWwzRStmbFJGWHBFOU9oM0wvbnFu?= =?utf-8?B?V3EwVkRLQkNBUDZMaWdtdEc0WG1LRExHT3RRYlFJTVFYQVFNRVA4UHJlbURT?= =?utf-8?B?WkEwNkNHWGp0QlVmVU1mY0I4b3AvZTYyOUJldEtiUVNHNnN5bkxMRnNFelpr?= =?utf-8?B?OHBBVDdwbk1HaEpEZUtIVGNOTER2K2FrTmZySjFCQzhZRENIRXViS2pqOTJM?= =?utf-8?B?cis2TFd4UjVpZXRMTUwxcjRyQzJNNlRoNk1HWmNKM1BaYUliMzViMkpwSTZ2?= =?utf-8?B?NzRUWDg5d1hWaWRaMmU2cWs4cXNqWmZzWmVjRE1kendvTk5OS3d5MzZBK1JJ?= =?utf-8?B?TFBhYzlkTUM3b2VGRGlkUlhBQXpyeldmQVdyWHp2SVVLYW85Yi9kMW93Ymox?= =?utf-8?B?d1BBNHp5aXZ3aVMrd004RzVOV1F3azZRekYxMXBCN2V0S2E0VlhBWXFxcDA1?= =?utf-8?B?SUgxaXZoamg0ZEQ1VjZhWFhIT2tTMGpEK0pGcHlHNHRmSzBkbzNKUG9XSklQ?= =?utf-8?B?ZlhrL1lLejhNRGlWVTdjREk0Wml4NWpkblNML0U1dS9JTXFlY0gxQlVxNkxS?= =?utf-8?B?Q0J0UmtUb2Z2MGFLVjM3aTVpaXBaWVpHcDlBRTZWckY1aVJBMllhTmxxSkRE?= =?utf-8?B?dlMvU3IxbjNENlg2eFVrbEoxcjBWQkcvVVBtSC93THlNMVg4MmVkWnVXM05B?= =?utf-8?B?YkQ3UXJMK2xyVHNBdEhOamowT1ZpOWNHR2xTYXYzaTlDNUVtZGtBUlJYYkxI?= =?utf-8?B?M3F6WHpGN24rTVNXWXZYNzhNTCs3Y2hHalRLdkdKMGxRS2ZLN094TFhEM2Fh?= =?utf-8?B?Q05SOUpMaUNNcFlQQjdTTFJ1cEN0MHlqMUJOZXIxZE9JdXV2d2hRLzNvQUZP?= =?utf-8?B?WVE9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: <5F0E06CD63A8784F90BEE043BBE6104A@namprd04.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MN2PR04MB5951.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: dd1ef816-366f-4ebe-9891-08daafdaa94c X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Oct 2022 00:58:10.4290 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: qqNw3asfI8W9dYc4xBXnoYjGuP7t4N9KnTBb1B2p1jKpnNTdQFWmM1faJ0SkQEpx1LCC6nwONhDGP3StdA12pg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR04MB0512 Received-SPF: pass client-ip=216.71.153.144; envelope-from=prvs=282f36034=Dmitry.Fomichev@wdc.com; helo=esa5.hgst.iphmx.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" T24gU3VuLCAyMDIyLTEwLTE2IGF0IDIyOjU2ICswODAwLCBTYW0gTGkgd3JvdGU6Cj4gQSB6b25l IGFwcGVuZCBjb21tYW5kIGlzIGEgd3JpdGUgb3BlcmF0aW9uIHRoYXQgc3BlY2lmaWVzIHRoZSBm aXJzdAo+IGxvZ2ljYWwgYmxvY2sgb2YgYSB6b25lIGFzIHRoZSB3cml0ZSBwb3NpdGlvbi4gV2hl biB3cml0aW5nIHRvIGEgem9uZWQKPiBibG9jayBkZXZpY2UgdXNpbmcgem9uZSBhcHBlbmQsIHRo ZSBieXRlIG9mZnNldCBvZiB3cml0ZXMgaXMgcG9pbnRpbmcKPiB0byB0aGUgd3JpdGUgcG9pbnRl ciBvZiB0aGF0IHpvbmUuIFVwb24gY29tcGxldGlvbiB0aGUgZGV2aWNlIHdpbGwKPiByZXNwb25k IHdpdGggdGhlIHBvc2l0aW9uIHRoZSBkYXRhIGhhcyBiZWVuIHdyaXR0ZW4gaW4gdGhlIHpvbmUu Cj4gCj4gU2lnbmVkLW9mZi1ieTogU2FtIExpIDxmYWl0aGlsaWtlcnVuQGdtYWlsLmNvbT4KPiAt LS0KPiDCoGJsb2NrL2Jsb2NrLWJhY2tlbmQuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDY1 ICsrKysrKysrKysrKysrKysrKysrKysKPiDCoGJsb2NrL2ZpbGUtcG9zaXguY8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB8IDg5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0K PiDCoGJsb2NrL2lvLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHwgMjEgKysrKysrKysKPiDCoGJsb2NrL3Jhdy1mb3JtYXQuY8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB8wqAgOCArKysKPiDCoGluY2x1ZGUvYmxvY2svYmxvY2staW8uaMKgwqDC oMKgwqDCoMKgwqDCoCB8wqAgMyArKwo+IMKgaW5jbHVkZS9ibG9jay9ibG9ja19pbnQtY29tbW9u LmjCoCB8wqAgNSArKwo+IMKgaW5jbHVkZS9ibG9jay9yYXctYWlvLmjCoMKgwqDCoMKgwqDCoMKg wqDCoCB8wqAgNCArLQo+IMKgaW5jbHVkZS9zeXNlbXUvYmxvY2stYmFja2VuZC1pby5oIHzCoCA5 ICsrKysKPiDCoDggZmlsZXMgY2hhbmdlZCwgMTk4IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25z KC0pCj4gCj4gZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsb2NrLWJhY2tlbmQuYyBiL2Jsb2NrL2Jsb2Nr LWJhY2tlbmQuYwo+IGluZGV4IDFjNjE4ZTljNjguLjA2OTMxZGRkMjQgMTAwNjQ0Cj4gLS0tIGEv YmxvY2svYmxvY2stYmFja2VuZC5jCj4gKysrIGIvYmxvY2svYmxvY2stYmFja2VuZC5jCj4gQEAg LTE0MzksNiArMTQzOSw5IEBAIHR5cGVkZWYgc3RydWN0IEJsa1J3Q28gewo+IMKgwqDCoMKgwqDC oMKgwqAgc3RydWN0IHsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgbG9uZyBv cDsKPiDCoMKgwqDCoMKgwqDCoMKgIH0gem9uZV9tZ210Owo+ICvCoMKgwqDCoMKgwqDCoCBzdHJ1 Y3Qgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludDY0X3QgKmFwcGVuZF9zZWN0b3I7Cj4g K8KgwqDCoMKgwqDCoMKgIH0gem9uZV9hcHBlbmQ7Cj4gwqDCoMKgwqAgfTsKPiDCoH0gQmxrUndD bzsKPiDCoAo+IEBAIC0xODcxLDYgKzE4NzQsNDcgQEAgQmxvY2tBSU9DQiAqYmxrX2Fpb196b25l X21nbXQoQmxvY2tCYWNrZW5kICpibGssCj4gQmxvY2tab25lT3Agb3AsCj4gwqDCoMKgwqAgcmV0 dXJuICZhY2ItPmNvbW1vbjsKPiDCoH0KPiDCoAo+ICtzdGF0aWMgdm9pZCBjb3JvdXRpbmVfZm4g YmxrX2Fpb196b25lX2FwcGVuZF9lbnRyeSh2b2lkICpvcGFxdWUpCj4gK3sKPiArwqDCoMKgIEJs a0Fpb0VtQUlPQ0IgKmFjYiA9IG9wYXF1ZTsKPiArwqDCoMKgIEJsa1J3Q28gKnJ3Y28gPSAmYWNi LT5yd2NvOwo+ICsKPiArwqDCoMKgIHJ3Y28tPnJldCA9IGJsa19jb196b25lX2FwcGVuZChyd2Nv LT5ibGssIHJ3Y28tPnpvbmVfYXBwZW5kLmFwcGVuZF9zZWN0b3IsCj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJ3 Y28tPmlvYnVmLCByd2NvLT5mbGFncyk7Cj4gK8KgwqDCoCBibGtfYWlvX2NvbXBsZXRlKGFjYik7 Cj4gK30KPiArCj4gK0Jsb2NrQUlPQ0IgKmJsa19haW9fem9uZV9hcHBlbmQoQmxvY2tCYWNrZW5k ICpibGssIGludDY0X3QgKm9mZnNldCwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgUUVNVUlPVmVjdG9yICpxaW92LCBCZHJ2 UmVxdWVzdEZsYWdzIGZsYWdzLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCbG9ja0NvbXBsZXRpb25GdW5jICpjYiwgdm9p ZCAqb3BhcXVlKSB7Cj4gK8KgwqDCoCBCbGtBaW9FbUFJT0NCICphY2I7Cj4gK8KgwqDCoCBDb3Jv dXRpbmUgKmNvOwo+ICvCoMKgwqAgSU9fQ09ERSgpOwo+ICsKPiArwqDCoMKgIGJsa19pbmNfaW5f ZmxpZ2h0KGJsayk7Cj4gK8KgwqDCoCBhY2IgPSBibGtfYWlvX2dldCgmYmxrX2Fpb19lbV9haW9j Yl9pbmZvLCBibGssIGNiLCBvcGFxdWUpOwo+ICvCoMKgwqAgYWNiLT5yd2NvID0gKEJsa1J3Q28p IHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAuYmxrwqDCoMKgID0gYmxrLAo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIC5yZXTCoMKgwqAgPSBOT1RfRE9ORSwKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAuZmxhZ3PCoCA9IGZsYWdzLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5pb2J1 ZsKgID0gcWlvdiwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAuem9uZV9hcHBlbmQgPSB7Cj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5hcHBlbmRfc2VjdG9yID0g b2Zmc2V0LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0sCj4gK8KgwqDCoCB9Owo+ICvCoMKg wqAgYWNiLT5oYXNfcmV0dXJuZWQgPSBmYWxzZTsKPiArCj4gK8KgwqDCoCBjbyA9IHFlbXVfY29y b3V0aW5lX2NyZWF0ZShibGtfYWlvX3pvbmVfYXBwZW5kX2VudHJ5LCBhY2IpOwo+ICvCoMKgwqAg YmRydl9jb3JvdXRpbmVfZW50ZXIoYmxrX2JzKGJsayksIGNvKTsKPiArwqDCoMKgIGFjYi0+aGFz X3JldHVybmVkID0gdHJ1ZTsKPiArwqDCoMKgIGlmIChhY2ItPnJ3Y28ucmV0ICE9IE5PVF9ET05F KSB7Cj4gK8KgwqDCoMKgwqDCoMKgIHJlcGxheV9iaF9zY2hlZHVsZV9vbmVzaG90X2V2ZW50KGJs a19nZXRfYWlvX2NvbnRleHQoYmxrKSwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYmxrX2Fp b19jb21wbGV0ZV9iaCwgYWNiKTsKPiArwqDCoMKgIH0KPiArCj4gK8KgwqDCoCByZXR1cm4gJmFj Yi0+Y29tbW9uOwo+ICt9Cj4gKwo+IMKgLyoKPiDCoCAqIFNlbmQgYSB6b25lX3JlcG9ydCBjb21t YW5kLgo+IMKgICogb2Zmc2V0IGlzIGEgYnl0ZSBvZmZzZXQgZnJvbSB0aGUgc3RhcnQgb2YgdGhl IGRldmljZS4gTm8gYWxpZ25tZW50Cj4gQEAgLTE5MjMsNiArMTk2NywyNyBAQCBpbnQgY29yb3V0 aW5lX2ZuIGJsa19jb196b25lX21nbXQoQmxvY2tCYWNrZW5kICpibGssCj4gQmxvY2tab25lT3Ag b3AsCj4gwqDCoMKgwqAgcmV0dXJuIHJldDsKPiDCoH0KPiDCoAo+ICsvKgo+ICsgKiBTZW5kIGEg em9uZV9hcHBlbmQgY29tbWFuZC4KPiArICovCj4gK2ludCBjb3JvdXRpbmVfZm4gYmxrX2NvX3pv bmVfYXBwZW5kKEJsb2NrQmFja2VuZCAqYmxrLCBpbnQ2NF90ICpvZmZzZXQsCj4gK8KgwqDCoMKg wqDCoMKgIFFFTVVJT1ZlY3RvciAqcWlvdiwgQmRydlJlcXVlc3RGbGFncyBmbGFncykKPiArewo+ ICvCoMKgwqAgaW50IHJldDsKPiArwqDCoMKgIElPX0NPREUoKTsKPiArCj4gK8KgwqDCoCBibGtf aW5jX2luX2ZsaWdodChibGspOwo+ICvCoMKgwqAgYmxrX3dhaXRfd2hpbGVfZHJhaW5lZChibGsp Owo+ICvCoMKgwqAgaWYgKCFibGtfaXNfYXZhaWxhYmxlKGJsaykpIHsKPiArwqDCoMKgwqDCoMKg wqAgYmxrX2RlY19pbl9mbGlnaHQoYmxrKTsKPiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FTk9N RURJVU07Cj4gK8KgwqDCoCB9Cj4gKwo+ICvCoMKgwqAgcmV0ID0gYmRydl9jb196b25lX2FwcGVu ZChibGtfYnMoYmxrKSwgb2Zmc2V0LCBxaW92LCBmbGFncyk7Cj4gK8KgwqDCoCBibGtfZGVjX2lu X2ZsaWdodChibGspOwo+ICvCoMKgwqAgcmV0dXJuIHJldDsKPiArfQo+ICsKPiDCoHZvaWQgYmxr X2RyYWluKEJsb2NrQmFja2VuZCAqYmxrKQo+IMKgewo+IMKgwqDCoMKgIEJsb2NrRHJpdmVyU3Rh dGUgKmJzID0gYmxrX2JzKGJsayk7Cj4gZGlmZiAtLWdpdCBhL2Jsb2NrL2ZpbGUtcG9zaXguYyBi L2Jsb2NrL2ZpbGUtcG9zaXguYwo+IGluZGV4IDVmZjU1MDAzMDEuLjNkMGNjMzNkMDIgMTAwNjQ0 Cj4gLS0tIGEvYmxvY2svZmlsZS1wb3NpeC5jCj4gKysrIGIvYmxvY2svZmlsZS1wb3NpeC5jCj4g QEAgLTIwNSw2ICsyMDUsNyBAQCB0eXBlZGVmIHN0cnVjdCBSYXdQb3NpeEFJT0RhdGEgewo+IMKg wqDCoMKgwqDCoMKgwqAgc3RydWN0IHsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0 IGlvdmVjICppb3Y7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludCBuaW92Owo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGludDY0X3QgKm9mZnNldDsKPiDCoMKgwqDCoMKgwqDCoMKgIH0g aW87Cj4gwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qgewo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB1aW50NjRfdCBjbWQ7Cj4gQEAgLTE0NzUsNiArMTQ3NiwxMSBAQCBzdGF0aWMgdm9pZCByYXdf cmVmcmVzaF9saW1pdHMoQmxvY2tEcml2ZXJTdGF0ZSAqYnMsCj4gRXJyb3IgKiplcnJwKQo+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicy0+YmwubWF4X2FjdGl2ZV96b25lcyA9IHJldDsKPiDC oMKgwqDCoMKgwqDCoMKgIH0KPiDCoAo+ICvCoMKgwqDCoMKgwqDCoCByZXQgPSBnZXRfc3lzZnNf bG9uZ192YWwoJnN0LCAicGh5c2ljYWxfYmxvY2tfc2l6ZSIpOwo+ICvCoMKgwqDCoMKgwqDCoCBp ZiAocmV0ID49IDApIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicy0+Ymwud3JpdGVfZ3Jh bnVsYXJpdHkgPSByZXQ7Cj4gK8KgwqDCoMKgwqDCoMKgIH0KPiArCj4gwqDCoMKgwqDCoMKgwqDC oCBicy0+Ymwud3BzID0gZ19tYWxsb2Moc2l6ZW9mKEJsb2NrWm9uZVdwcykgKyBzaXplb2YoaW50 NjRfdCkgKiByZXQpOwo+IMKgwqDCoMKgwqDCoMKgwqAgaWYgKGdldF96b25lc193cChzLT5mZCwg YnMtPmJsLndwcywgMCwgcmV0KSA8IDApIHsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZXJy b3JfcmVwb3J0KCJyZXBvcnQgd3BzIGZhaWxlZCIpOwo+IEBAIC0xNjQ3LDkgKzE2NTMsMTggQEAg cWVtdV9wd3JpdGV2KGludCBmZCwgY29uc3Qgc3RydWN0IGlvdmVjICppb3YsIGludAo+IG5yX2lv diwgb2ZmX3Qgb2Zmc2V0KQo+IMKgc3RhdGljIHNzaXplX3QgaGFuZGxlX2Fpb2NiX3J3X3ZlY3Rv cihSYXdQb3NpeEFJT0RhdGEgKmFpb2NiKQo+IMKgewo+IMKgwqDCoMKgIHNzaXplX3QgbGVuOwo+ ICvCoMKgwqAgQmxvY2tab25lV3BzICp3cHMgPSBhaW9jYi0+YnMtPmJsLndwczsKPiArwqDCoMKg IGludCBpbmRleCA9IGFpb2NiLT5haW9fb2Zmc2V0IC8gYWlvY2ItPmJzLT5ibC56b25lX3NpemU7 CgpDYW4gdGhpcyBjb2RlIGV2ZXIgYmUgY2FsbGVkIGZvciBhIG5vbi16b25lZCBkZXZpY2Ugd2l0 aCAwIHpvbmUgc2l6ZT8KSWYgeWVzLCB5b3UgbmVlZCB0byBhdm9pZCBkaXZpc2lvbiBieSB6ZXJv IGhlcmUuLi4KCj4gKwo+ICvCoMKgwqAgaWYgKHdwcykgewo+ICvCoMKgwqDCoMKgwqDCoCBxZW11 X211dGV4X2xvY2soJndwcy0+bG9jayk7Cj4gK8KgwqDCoMKgwqDCoMKgIGlmIChhaW9jYi0+YWlv X3R5cGUgJiBRRU1VX0FJT19aT05FX0FQUEVORCkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGFpb2NiLT5haW9fb2Zmc2V0ID0gd3BzLT53cFtpbmRleF07Cj4gK8KgwqDCoMKgwqDCoMKgIH0K PiArwqDCoMKgIH0KPiDCoAo+IMKgwqDCoMKgIGRvIHsKPiAtwqDCoMKgwqDCoMKgwqAgaWYgKGFp b2NiLT5haW9fdHlwZSAmIFFFTVVfQUlPX1dSSVRFKQo+ICvCoMKgwqDCoMKgwqDCoCBpZiAoYWlv Y2ItPmFpb190eXBlICYgKFFFTVVfQUlPX1dSSVRFIHwgUUVNVV9BSU9fWk9ORV9BUFBFTkQpKQo+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsZW4gPSBxZW11X3B3cml0ZXYoYWlvY2ItPmFpb19m aWxkZXMsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgYWlvY2ItPmlvLmlvdiwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhaW9jYi0+aW8ubmlvdiwKPiBA QCAtMTY2MCw2ICsxNjc1LDkgQEAgc3RhdGljIHNzaXplX3QgaGFuZGxlX2Fpb2NiX3J3X3ZlY3Rv cihSYXdQb3NpeEFJT0RhdGEKPiAqYWlvY2IpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFpb2NiLT5pby5uaW92LAo+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBh aW9jYi0+YWlvX29mZnNldCk7Cj4gwqDCoMKgwqAgfSB3aGlsZSAobGVuID09IC0xICYmIGVycm5v ID09IEVJTlRSKTsKPiArwqDCoMKgIGlmICh3cHMpIHsKPiArwqDCoMKgwqDCoMKgwqAgcWVtdV9t dXRleF91bmxvY2soJndwcy0+bG9jayk7Cj4gK8KgwqDCoCB9Cj4gwqAKPiDCoMKgwqDCoCBpZiAo bGVuID09IC0xKSB7Cj4gwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gLWVycm5vOwo+IEBAIC0xNjc3 LDkgKzE2OTUsMTcgQEAgc3RhdGljIHNzaXplX3QgaGFuZGxlX2Fpb2NiX3J3X2xpbmVhcihSYXdQ b3NpeEFJT0RhdGEKPiAqYWlvY2IsIGNoYXIgKmJ1ZikKPiDCoHsKPiDCoMKgwqDCoCBzc2l6ZV90 IG9mZnNldCA9IDA7Cj4gwqDCoMKgwqAgc3NpemVfdCBsZW47Cj4gK8KgwqDCoCBCbG9ja1pvbmVX cHMgKndwcyA9IGFpb2NiLT5icy0+Ymwud3BzOwo+ICvCoMKgwqAgaW50IGluZGV4ID0gYWlvY2It PmFpb19vZmZzZXQgLyBhaW9jYi0+YnMtPmJsLnpvbmVfc2l6ZTsKCnNhbWUgaGVyZQoKPiDCoAo+ ICvCoMKgwqAgaWYgKHdwcykgewo+ICvCoMKgwqDCoMKgwqDCoCBxZW11X211dGV4X2xvY2soJndw cy0+bG9jayk7Cj4gK8KgwqDCoMKgwqDCoMKgIGlmIChhaW9jYi0+YWlvX3R5cGUgJiBRRU1VX0FJ T19aT05FX0FQUEVORCkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFpb2NiLT5haW9fb2Zm c2V0ID0gd3BzLT53cFtpbmRleF07Cj4gK8KgwqDCoMKgwqDCoMKgIH0KPiArwqDCoMKgIH0KPiDC oMKgwqDCoCB3aGlsZSAob2Zmc2V0IDwgYWlvY2ItPmFpb19uYnl0ZXMpIHsKPiAtwqDCoMKgwqDC oMKgwqAgaWYgKGFpb2NiLT5haW9fdHlwZSAmIFFFTVVfQUlPX1dSSVRFKSB7Cj4gK8KgwqDCoMKg wqDCoMKgIGlmIChhaW9jYi0+YWlvX3R5cGUgJiAoUUVNVV9BSU9fV1JJVEUgfCBRRU1VX0FJT19a T05FX0FQUEVORCkpIHsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbGVuID0gcHdyaXRlKGFp b2NiLT5haW9fZmlsZGVzLAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIChjb25zdCBjaGFyICopYnVmICsgb2Zmc2V0LAo+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFpb2NiLT5haW9fbmJ5dGVzIC0g b2Zmc2V0LAo+IEBAIC0xNzA5LDYgKzE3MzUsOSBAQCBzdGF0aWMgc3NpemVfdCBoYW5kbGVfYWlv Y2JfcndfbGluZWFyKFJhd1Bvc2l4QUlPRGF0YQo+ICphaW9jYiwgY2hhciAqYnVmKQo+IMKgwqDC oMKgwqDCoMKgwqAgfQo+IMKgwqDCoMKgwqDCoMKgwqAgb2Zmc2V0ICs9IGxlbjsKPiDCoMKgwqDC oCB9Cj4gK8KgwqDCoCBpZiAod3BzKSB7Cj4gK8KgwqDCoMKgwqDCoMKgIHFlbXVfbXV0ZXhfdW5s b2NrKCZ3cHMtPmxvY2spOwo+ICvCoMKgwqAgfQo+IMKgCj4gwqDCoMKgwqAgcmV0dXJuIG9mZnNl dDsKPiDCoH0KPiBAQCAtMTc3Miw3ICsxODAxLDcgQEAgc3RhdGljIGludCBoYW5kbGVfYWlvY2Jf cncodm9pZCAqb3BhcXVlKQo+IMKgwqDCoMKgIH0KPiDCoAo+IMKgwqDCoMKgIG5ieXRlcyA9IGhh bmRsZV9haW9jYl9yd19saW5lYXIoYWlvY2IsIGJ1Zik7Cj4gLcKgwqDCoCBpZiAoIShhaW9jYi0+ YWlvX3R5cGUgJiBRRU1VX0FJT19XUklURSkpIHsKPiArwqDCoMKgIGlmICghKGFpb2NiLT5haW9f dHlwZSAmIChRRU1VX0FJT19XUklURSB8IFFFTVVfQUlPX1pPTkVfQVBQRU5EKSkpIHsKPiDCoMKg wqDCoMKgwqDCoMKgIGNoYXIgKnAgPSBidWY7Cj4gwqDCoMKgwqDCoMKgwqDCoCBzaXplX3QgY291 bnQgPSBhaW9jYi0+YWlvX25ieXRlcywgY29weTsKPiDCoMKgwqDCoMKgwqDCoMKgIGludCBpOwo+ IEBAIC0xNzk0LDcgKzE4MjMsNyBAQCBzdGF0aWMgaW50IGhhbmRsZV9haW9jYl9ydyh2b2lkICpv cGFxdWUpCj4gwqBvdXQ6Cj4gwqDCoMKgwqAgaWYgKG5ieXRlcyA9PSBhaW9jYi0+YWlvX25ieXRl cykgewo+IMKgI2lmIGRlZmluZWQoQ09ORklHX0JMS1pPTkVEKQo+IC3CoMKgwqDCoMKgwqDCoCBp ZiAoYWlvY2ItPmFpb190eXBlICYgUUVNVV9BSU9fV1JJVEUpIHsKPiArwqDCoMKgwqDCoMKgwqAg aWYgKGFpb2NiLT5haW9fdHlwZSAmIChRRU1VX0FJT19XUklURSB8IFFFTVVfQUlPX1pPTkVfQVBQ RU5EKSkgewo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCbG9ja1pvbmVXcHMgKndwcyA9IGFp b2NiLT5icy0+Ymwud3BzOwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQgaW5kZXggPSBh aW9jYi0+YWlvX29mZnNldCAvIGFpb2NiLT5icy0+Ymwuem9uZV9zaXplOwoKYW5kIGhlcmUKCj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICh3cHMpIHsKPiBAQCAtMTgwMiw2ICsxODMxLDkg QEAgb3V0Ogo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICghQkRSVl9aVF9J U19DT05WKHdwcy0+d3BbaW5kZXhdKSkgewo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgdWludDY0X3Qgd2VuZF9vZmZzZXQgPQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFpb2NiLT5haW9fb2Zmc2V0ICsg YWlvY2ItPmFpb19uYnl0ZXM7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGlmIChhaW9jYi0+YWlvX3R5cGUgJiBRRU1VX0FJT19aT05FX0FQUEVORCkgewo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICphaW9jYi0+aW8ub2Zm c2V0ID0gd3BzLT53cFtpbmRleF07Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIH0KPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg LyogQWR2YW5jZSB0aGUgd3AgaWYgbmVlZGVkICovCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBpZiAod2VuZF9vZmZzZXQgPiB3cHMtPndwW2luZGV4XSkgewo+IEBA IC0xODI0LDcgKzE4NTYsNyBAQCBvdXQ6Cj4gwqDCoMKgwqAgfSBlbHNlIHsKPiDCoMKgwqDCoMKg wqDCoMKgIGFzc2VydChuYnl0ZXMgPCAwKTsKPiDCoCNpZiBkZWZpbmVkKENPTkZJR19CTEtaT05F RCkKPiAtwqDCoMKgwqDCoMKgwqAgaWYgKGFpb2NiLT5haW9fdHlwZSAmIFFFTVVfQUlPX1dSSVRF KSB7Cj4gK8KgwqDCoMKgwqDCoMKgIGlmIChhaW9jYi0+YWlvX3R5cGUgJiAoUUVNVV9BSU9fV1JJ VEUgfCBRRU1VX0FJT19aT05FX0FQUEVORCkpIHsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg dXBkYXRlX3pvbmVzX3dwKGFpb2NiLT5haW9fZmlsZGVzLCBhaW9jYi0+YnMtPmJsLndwcywgMCwg MSk7Cj4gwqDCoMKgwqDCoMKgwqDCoCB9Cj4gwqAjZW5kaWYKPiBAQCAtMzQ3OCw2ICszNTEwLDUy IEBAIHN0YXRpYyBpbnQgY29yb3V0aW5lX2ZuCj4gcmF3X2NvX3pvbmVfbWdtdChCbG9ja0RyaXZl clN0YXRlICpicywgQmxvY2tab25lT3Agb3AsCj4gwqB9Cj4gwqAjZW5kaWYKPiDCoAo+ICsjaWYg ZGVmaW5lZChDT05GSUdfQkxLWk9ORUQpCj4gK3N0YXRpYyBpbnQgY29yb3V0aW5lX2ZuIHJhd19j b196b25lX2FwcGVuZChCbG9ja0RyaXZlclN0YXRlICpicywKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGludDY0X3QgKm9mZnNldCwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IFFFTVVJT1ZlY3RvciAqcWlvdiwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJkcnZS ZXF1ZXN0RmxhZ3MgZmxhZ3MpIHsKPiArwqDCoMKgIEJEUlZSYXdTdGF0ZSAqcyA9IGJzLT5vcGFx dWU7Cj4gK8KgwqDCoCBpbnQ2NF90IHpvbmVfc2l6ZV9tYXNrID0gYnMtPmJsLnpvbmVfc2l6ZSAt IDE7Cj4gK8KgwqDCoCBpbnQ2NF90IGlvdl9sZW4gPSAwOwo+ICvCoMKgwqAgaW50NjRfdCBsZW4g PSAwOwo+ICvCoMKgwqAgUmF3UG9zaXhBSU9EYXRhIGFjYjsKPiArCj4gK8KgwqDCoCBpZiAoKm9m ZnNldCAmIHpvbmVfc2l6ZV9tYXNrKSB7Cj4gK8KgwqDCoMKgwqDCoMKgIGVycm9yX3JlcG9ydCgi c2VjdG9yIG9mZnNldCAlIiBQUklkNjQgIiBpcyBub3QgYWxpZ25lZCB0byB6b25lIHNpemUgIgo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICIlIiBQUklkMzIgIiIs ICpvZmZzZXQgLyA1MTIsIGJzLT5ibC56b25lX3NpemUgLyA1MTIpOwo+ICvCoMKgwqDCoMKgwqDC oCByZXR1cm4gLUVJTlZBTDsKPiArwqDCoMKgIH0KPiArCj4gK8KgwqDCoCBpbnQ2NF90IHdnID0g YnMtPmJsLndyaXRlX2dyYW51bGFyaXR5Owo+ICvCoMKgwqAgaW50NjRfdCB3Z19tYXNrID0gd2cg LSAxOwo+ICvCoMKgwqAgZm9yIChpbnQgaSA9IDA7IGkgPCBxaW92LT5uaW92OyBpKyspIHsKPiAr wqDCoMKgwqDCoMKgwqAgaW92X2xlbiA9IHFpb3YtPmlvdltpXS5pb3ZfbGVuOwo+ICvCoMKgwqDC oMKgwqDCoCBpZiAoaW92X2xlbiAmIHdnX21hc2spIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBlcnJvcl9yZXBvcnQoImxlbiBvZiBJT1ZlY3RvclslZF0gJSIgUFJJZDY0ICIgaXMgbm90IGFs aWduZWQgdG8gIgo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgImJsb2NrIHNpemUgJSIgUFJJZDY0ICIiLCBpLCBpb3ZfbGVuLCB3Zyk7Cj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7Cj4gK8KgwqDCoMKgwqDCoMKgIH0KPiAr wqDCoMKgwqDCoMKgwqAgbGVuICs9IGlvdl9sZW47Cj4gK8KgwqDCoCB9Cj4gKwo+ICvCoMKgwqAg YWNiID0gKFJhd1Bvc2l4QUlPRGF0YSkgewo+ICvCoMKgwqDCoMKgwqDCoCAuYnMgPSBicywKPiAr wqDCoMKgwqDCoMKgwqAgLmFpb19maWxkZXMgPSBzLT5mZCwKPiArwqDCoMKgwqDCoMKgwqAgLmFp b190eXBlID0gUUVNVV9BSU9fWk9ORV9BUFBFTkQsCj4gK8KgwqDCoMKgwqDCoMKgIC5haW9fb2Zm c2V0ID0gKm9mZnNldCwKPiArwqDCoMKgwqDCoMKgwqAgLmFpb19uYnl0ZXMgPSBsZW4sCj4gK8Kg wqDCoMKgwqDCoMKgIC5pbyA9IHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5p b3YgPSBxaW92LT5pb3YsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAubmlvdiA9 IHFpb3YtPm5pb3YsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAub2Zmc2V0ID0g b2Zmc2V0LAo+ICvCoMKgwqDCoMKgwqDCoCB9LAo+ICvCoMKgwqAgfTsKPiArCj4gK8KgwqDCoCBy ZXR1cm4gcmF3X3RocmVhZF9wb29sX3N1Ym1pdChicywgaGFuZGxlX2Fpb2NiX3J3LCAmYWNiKTsK PiArfQo+ICsjZW5kaWYKPiArCj4gwqBzdGF0aWMgY29yb3V0aW5lX2ZuIGludAo+IMKgcmF3X2Rv X3BkaXNjYXJkKEJsb2NrRHJpdmVyU3RhdGUgKmJzLCBpbnQ2NF90IG9mZnNldCwgaW50NjRfdCBi eXRlcywKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBib29sIGJsa2RldikKPiBA QCAtNDI1Myw2ICs0MzMxLDcgQEAgc3RhdGljIEJsb2NrRHJpdmVyIGJkcnZfem9uZWRfaG9zdF9k ZXZpY2UgPSB7Cj4gwqDCoMKgwqAgLyogem9uZSBtYW5hZ2VtZW50IG9wZXJhdGlvbnMgKi8KPiDC oMKgwqDCoCAuYmRydl9jb196b25lX3JlcG9ydCA9IHJhd19jb196b25lX3JlcG9ydCwKPiDCoMKg wqDCoCAuYmRydl9jb196b25lX21nbXQgPSByYXdfY29fem9uZV9tZ210LAo+ICvCoMKgwqAgLmJk cnZfY29fem9uZV9hcHBlbmQgPSByYXdfY29fem9uZV9hcHBlbmQsCj4gwqB9Owo+IMKgI2VuZGlm Cj4gwqAKPiBkaWZmIC0tZ2l0IGEvYmxvY2svaW8uYyBiL2Jsb2NrL2lvLmMKPiBpbmRleCA4OGY3 MDdlYTRkLi4wM2UxMTA5MDU2IDEwMDY0NAo+IC0tLSBhL2Jsb2NrL2lvLmMKPiArKysgYi9ibG9j ay9pby5jCj4gQEAgLTMyMzAsNiArMzIzMCwyNyBAQCBvdXQ6Cj4gwqDCoMKgwqAgcmV0dXJuIGNv LnJldDsKPiDCoH0KPiDCoAo+ICtpbnQgY29yb3V0aW5lX2ZuIGJkcnZfY29fem9uZV9hcHBlbmQo QmxvY2tEcml2ZXJTdGF0ZSAqYnMsIGludDY0X3QgKm9mZnNldCwKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBRRU1VSU9WZWN0b3IgKnFpb3YsCj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQmRydlJlcXVlc3RG bGFncyBmbGFncykKPiArewo+ICvCoMKgwqAgQmxvY2tEcml2ZXIgKmRydiA9IGJzLT5kcnY7Cj4g K8KgwqDCoCBDb3JvdXRpbmVJT0NvbXBsZXRpb24gY28gPSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgLmNvcm91dGluZSA9IHFlbXVfY29yb3V0aW5lX3NlbGYoKSwKPiArwqDCoMKgIH07Cj4g K8KgwqDCoCBJT19DT0RFKCk7Cj4gKwo+ICvCoMKgwqAgYmRydl9pbmNfaW5fZmxpZ2h0KGJzKTsK PiArwqDCoMKgIGlmICghZHJ2IHx8ICFkcnYtPmJkcnZfY29fem9uZV9hcHBlbmQpIHsKPiArwqDC oMKgwqDCoMKgwqAgY28ucmV0ID0gLUVOT1RTVVA7Cj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gb3V0 Owo+ICvCoMKgwqAgfQo+ICvCoMKgwqAgY28ucmV0ID0gZHJ2LT5iZHJ2X2NvX3pvbmVfYXBwZW5k KGJzLCBvZmZzZXQsIHFpb3YsIGZsYWdzKTsKPiArb3V0Ogo+ICvCoMKgwqAgYmRydl9kZWNfaW5f ZmxpZ2h0KGJzKTsKPiArwqDCoMKgIHJldHVybiBjby5yZXQ7Cj4gK30KPiArCj4gwqB2b2lkICpx ZW11X2Jsb2NrYWxpZ24oQmxvY2tEcml2ZXJTdGF0ZSAqYnMsIHNpemVfdCBzaXplKQo+IMKgewo+ IMKgwqDCoMKgIElPX0NPREUoKTsKPiBkaWZmIC0tZ2l0IGEvYmxvY2svcmF3LWZvcm1hdC5jIGIv YmxvY2svcmF3LWZvcm1hdC5jCj4gaW5kZXggMThkYzUyYTE1MC4uMzNiZmY4NTE2ZSAxMDA2NDQK PiAtLS0gYS9ibG9jay9yYXctZm9ybWF0LmMKPiArKysgYi9ibG9jay9yYXctZm9ybWF0LmMKPiBA QCAtMzI1LDYgKzMyNSwxMyBAQCBzdGF0aWMgaW50IGNvcm91dGluZV9mbiByYXdfY29fem9uZV9t Z210KEJsb2NrRHJpdmVyU3RhdGUKPiAqYnMsIEJsb2NrWm9uZU9wIG9wLAo+IMKgwqDCoMKgIHJl dHVybiBiZHJ2X2NvX3pvbmVfbWdtdChicy0+ZmlsZS0+YnMsIG9wLCBvZmZzZXQsIGxlbik7Cj4g wqB9Cj4gwqAKPiArc3RhdGljIGludCBjb3JvdXRpbmVfZm4gcmF3X2NvX3pvbmVfYXBwZW5kKEJs b2NrRHJpdmVyU3RhdGUgKmJzLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50NjRf dCAqb2Zmc2V0LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgUUVNVUlPVmVjdG9yICpx aW92LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQmRydlJlcXVlc3RGbGFncyBmbGFn cykgewo+ICvCoMKgwqAgcmV0dXJuIGJkcnZfY29fem9uZV9hcHBlbmQoYnMtPmZpbGUtPmJzLCBv ZmZzZXQsIHFpb3YsIGZsYWdzKTsKPiArfQo+ICsKPiDCoHN0YXRpYyBpbnQ2NF90IHJhd19nZXRs ZW5ndGgoQmxvY2tEcml2ZXJTdGF0ZSAqYnMpCj4gwqB7Cj4gwqDCoMKgwqAgaW50NjRfdCBsZW47 Cj4gQEAgLTYyOSw2ICs2MzYsNyBAQCBCbG9ja0RyaXZlciBiZHJ2X3JhdyA9IHsKPiDCoMKgwqDC oCAuYmRydl9jb19wZGlzY2FyZMKgwqDCoMKgID0gJnJhd19jb19wZGlzY2FyZCwKPiDCoMKgwqDC oCAuYmRydl9jb196b25lX3JlcG9ydMKgID0gJnJhd19jb196b25lX3JlcG9ydCwKPiDCoMKgwqDC oCAuYmRydl9jb196b25lX21nbXTCoCA9ICZyYXdfY29fem9uZV9tZ210LAo+ICvCoMKgwqAgLmJk cnZfY29fem9uZV9hcHBlbmQgPSAmcmF3X2NvX3pvbmVfYXBwZW5kLAo+IMKgwqDCoMKgIC5iZHJ2 X2NvX2Jsb2NrX3N0YXR1cyA9ICZyYXdfY29fYmxvY2tfc3RhdHVzLAo+IMKgwqDCoMKgIC5iZHJ2 X2NvX2NvcHlfcmFuZ2VfZnJvbSA9ICZyYXdfY29fY29weV9yYW5nZV9mcm9tLAo+IMKgwqDCoMKg IC5iZHJ2X2NvX2NvcHlfcmFuZ2VfdG/CoCA9ICZyYXdfY29fY29weV9yYW5nZV90bywKPiBkaWZm IC0tZ2l0IGEvaW5jbHVkZS9ibG9jay9ibG9jay1pby5oIGIvaW5jbHVkZS9ibG9jay9ibG9jay1p by5oCj4gaW5kZXggZjBjZGY2N2QzMy4uNmE1NDQ1MzU3OCAxMDA2NDQKPiAtLS0gYS9pbmNsdWRl L2Jsb2NrL2Jsb2NrLWlvLmgKPiArKysgYi9pbmNsdWRlL2Jsb2NrL2Jsb2NrLWlvLmgKPiBAQCAt OTQsNiArOTQsOSBAQCBpbnQgY29yb3V0aW5lX2ZuIGJkcnZfY29fem9uZV9yZXBvcnQoQmxvY2tE cml2ZXJTdGF0ZSAqYnMsCj4gaW50NjRfdCBvZmZzZXQsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQmxv Y2tab25lRGVzY3JpcHRvciAqem9uZXMpOwo+IMKgaW50IGNvcm91dGluZV9mbiBiZHJ2X2NvX3pv bmVfbWdtdChCbG9ja0RyaXZlclN0YXRlICpicywgQmxvY2tab25lT3Agb3AsCj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBpbnQ2NF90IG9mZnNldCwgaW50NjRfdCBsZW4pOwo+ICtpbnQgY29yb3V0aW5lX2ZuIGJk cnZfY29fem9uZV9hcHBlbmQoQmxvY2tEcml2ZXJTdGF0ZSAqYnMsIGludDY0X3QgKm9mZnNldCwK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIFFFTVVJT1ZlY3RvciAqcWlvdiwKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IEJkcnZSZXF1ZXN0RmxhZ3MgZmxhZ3MpOwo+IMKgCj4gwqBpbnQgYmRydl9jb19wZGlzY2FyZChC ZHJ2Q2hpbGQgKmNoaWxkLCBpbnQ2NF90IG9mZnNldCwgaW50NjRfdCBieXRlcyk7Cj4gwqBib29s IGJkcnZfY2FuX3dyaXRlX3plcm9lc193aXRoX3VubWFwKEJsb2NrRHJpdmVyU3RhdGUgKmJzKTsK PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ibG9jay9ibG9ja19pbnQtY29tbW9uLmggYi9pbmNsdWRl L2Jsb2NrL2Jsb2NrX2ludC0KPiBjb21tb24uaAo+IGluZGV4IGUzMTM2MTQ2YWEuLmE3ZTdkYjU2 NDYgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9ibG9jay9ibG9ja19pbnQtY29tbW9uLmgKPiArKysg Yi9pbmNsdWRlL2Jsb2NrL2Jsb2NrX2ludC1jb21tb24uaAo+IEBAIC03MDEsNiArNzAxLDkgQEAg c3RydWN0IEJsb2NrRHJpdmVyIHsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQmxvY2tab25l RGVzY3JpcHRvciAqem9uZXMpOwo+IMKgwqDCoMKgIGludCBjb3JvdXRpbmVfZm4gKCpiZHJ2X2Nv X3pvbmVfbWdtdCkoQmxvY2tEcml2ZXJTdGF0ZSAqYnMsIEJsb2NrWm9uZU9wCj4gb3AsCj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludDY0X3Qgb2Zmc2V0LCBpbnQ2NF90IGxlbik7Cj4gK8Kg wqDCoCBpbnQgY29yb3V0aW5lX2ZuICgqYmRydl9jb196b25lX2FwcGVuZCkoQmxvY2tEcml2ZXJT dGF0ZSAqYnMsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50NjRfdCAqb2Zmc2V0LCBRRU1V SU9WZWN0b3IgKnFpb3YsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQmRydlJlcXVlc3RGbGFn cyBmbGFncyk7Cj4gwqAKPiDCoMKgwqDCoCAvKiByZW1vdmFibGUgZGV2aWNlIHNwZWNpZmljICov Cj4gwqDCoMKgwqAgYm9vbCAoKmJkcnZfaXNfaW5zZXJ0ZWQpKEJsb2NrRHJpdmVyU3RhdGUgKmJz KTsKPiBAQCAtODYwLDYgKzg2Myw4IEBAIHR5cGVkZWYgc3RydWN0IEJsb2NrTGltaXRzIHsKPiDC oAo+IMKgwqDCoMKgIC8qIGFycmF5IG9mIHdyaXRlIHBvaW50ZXJzJyBsb2NhdGlvbiBvZiBlYWNo IHpvbmUgaW4gdGhlIHpvbmVkIGRldmljZS4gKi8KPiDCoMKgwqDCoCBCbG9ja1pvbmVXcHMgKndw czsKPiArCj4gK8KgwqDCoCBpbnQ2NF90IHdyaXRlX2dyYW51bGFyaXR5Owo+IMKgfSBCbG9ja0xp bWl0czsKPiDCoAo+IMKgdHlwZWRlZiBzdHJ1Y3QgQmRydk9wQmxvY2tlciBCZHJ2T3BCbG9ja2Vy Owo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2Jsb2NrL3Jhdy1haW8uaCBiL2luY2x1ZGUvYmxvY2sv cmF3LWFpby5oCj4gaW5kZXggODc3YjIyNDBiMy4uNTMwMzNhNWNhNyAxMDA2NDQKPiAtLS0gYS9p bmNsdWRlL2Jsb2NrL3Jhdy1haW8uaAo+ICsrKyBiL2luY2x1ZGUvYmxvY2svcmF3LWFpby5oCj4g QEAgLTMxLDYgKzMxLDcgQEAKPiDCoCNkZWZpbmUgUUVNVV9BSU9fVFJVTkNBVEXCoMKgwqDCoCAw eDAwODAKPiDCoCNkZWZpbmUgUUVNVV9BSU9fWk9ORV9SRVBPUlTCoCAweDAxMDAKPiDCoCNkZWZp bmUgUUVNVV9BSU9fWk9ORV9NR01UwqDCoMKgIDB4MDIwMAo+ICsjZGVmaW5lIFFFTVVfQUlPX1pP TkVfQVBQRU5EwqAgMHgwNDAwCj4gwqAjZGVmaW5lIFFFTVVfQUlPX1RZUEVfTUFTSyBcCj4gwqDC oMKgwqDCoMKgwqDCoCAoUUVNVV9BSU9fUkVBRCB8IFwKPiDCoMKgwqDCoMKgwqDCoMKgwqAgUUVN VV9BSU9fV1JJVEUgfCBcCj4gQEAgLTQxLDcgKzQyLDggQEAKPiDCoMKgwqDCoMKgwqDCoMKgwqAg UUVNVV9BSU9fQ09QWV9SQU5HRSB8IFwKPiDCoMKgwqDCoMKgwqDCoMKgwqAgUUVNVV9BSU9fVFJV TkNBVEUgfCBcCj4gwqDCoMKgwqDCoMKgwqDCoMKgIFFFTVVfQUlPX1pPTkVfUkVQT1JUIHwgXAo+ IC3CoMKgwqDCoMKgwqDCoMKgIFFFTVVfQUlPX1pPTkVfTUdNVCkKPiArwqDCoMKgwqDCoMKgwqDC oCBRRU1VX0FJT19aT05FX01HTVQgfCBcCj4gK8KgwqDCoMKgwqDCoMKgwqAgUUVNVV9BSU9fWk9O RV9BUFBFTkQpCj4gwqAKPiDCoC8qIEFJTyBmbGFncyAqLwo+IMKgI2RlZmluZSBRRU1VX0FJT19N SVNBTElHTkVEwqDCoCAweDEwMDAKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zeXNlbXUvYmxvY2st YmFja2VuZC1pby5oIGIvaW5jbHVkZS9zeXNlbXUvYmxvY2stYmFja2VuZC0KPiBpby5oCj4gaW5k ZXggMWI1ZmM3ZGI2Yi4uZmY5Zjc3N2Y1MiAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL3N5c2VtdS9i bG9jay1iYWNrZW5kLWlvLmgKPiArKysgYi9pbmNsdWRlL3N5c2VtdS9ibG9jay1iYWNrZW5kLWlv LmgKPiBAQCAtNTIsNiArNTIsOSBAQCBCbG9ja0FJT0NCICpibGtfYWlvX3pvbmVfcmVwb3J0KEJs b2NrQmFja2VuZCAqYmxrLCBpbnQ2NF90Cj4gb2Zmc2V0LAo+IMKgQmxvY2tBSU9DQiAqYmxrX2Fp b196b25lX21nbXQoQmxvY2tCYWNrZW5kICpibGssIEJsb2NrWm9uZU9wIG9wLAo+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQ2 NF90IG9mZnNldCwgaW50NjRfdCBsZW4sCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJsb2NrQ29tcGxldGlvbkZ1bmMgKmNiLCB2 b2lkICpvcGFxdWUpOwo+ICtCbG9ja0FJT0NCICpibGtfYWlvX3pvbmVfYXBwZW5kKEJsb2NrQmFj a2VuZCAqYmxrLCBpbnQ2NF90ICpvZmZzZXQsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFFFTVVJT1ZlY3RvciAqcWlvdiwg QmRydlJlcXVlc3RGbGFncyBmbGFncywKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQmxvY2tDb21wbGV0aW9uRnVuYyAqY2Is IHZvaWQgKm9wYXF1ZSk7Cj4gwqBCbG9ja0FJT0NCICpibGtfYWlvX3BkaXNjYXJkKEJsb2NrQmFj a2VuZCAqYmxrLCBpbnQ2NF90IG9mZnNldCwgaW50NjRfdCBieXRlcywKPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJsb2NrQ29tcGxl dGlvbkZ1bmMgKmNiLCB2b2lkICpvcGFxdWUpOwo+IMKgdm9pZCBibGtfYWlvX2NhbmNlbF9hc3lu YyhCbG9ja0FJT0NCICphY2IpOwo+IEBAIC0xNzMsNiArMTc2LDEyIEBAIGludCBjb3JvdXRpbmVf Zm4gYmxrX2NvX3pvbmVfbWdtdChCbG9ja0JhY2tlbmQgKmJsaywKPiBCbG9ja1pvbmVPcCBvcCwK PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBpbnQ2NF90IG9mZnNldCwgaW50NjRfdCBsZW4pOwo+IMKgaW50IGdlbmVy YXRlZF9jb193cmFwcGVyIGJsa196b25lX21nbXQoQmxvY2tCYWNrZW5kICpibGssIEJsb2NrWm9u ZU9wIG9wLAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQ2NF90IG9mZnNldCwgaW50NjRfdCBs ZW4pOwo+ICtpbnQgY29yb3V0aW5lX2ZuIGJsa19jb196b25lX2FwcGVuZChCbG9ja0JhY2tlbmQg KmJsaywgaW50NjRfdCAqb2Zmc2V0LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFFFTVVJT1ZlY3RvciAqcWlv diwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBCZHJ2UmVxdWVzdEZsYWdzIGZsYWdzKTsKPiAraW50IGdlbmVy YXRlZF9jb193cmFwcGVyIGJsa196b25lX2FwcGVuZChCbG9ja0JhY2tlbmQgKmJsaywgaW50NjRf dCAqb2Zmc2V0LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBRRU1VSU9WZWN0b3IgKnFpb3Ys Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJkcnZSZXF1ZXN0RmxhZ3MgZmxhZ3MpOwo+IMKg Cj4gwqBpbnQgZ2VuZXJhdGVkX2NvX3dyYXBwZXIgYmxrX3BkaXNjYXJkKEJsb2NrQmFja2VuZCAq YmxrLCBpbnQ2NF90IG9mZnNldCwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludDY0X3QgYnl0ZXMp OwoK