From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60088.outbound.protection.outlook.com [40.107.6.88]) by sourceware.org (Postfix) with ESMTPS id 697D33857C72 for ; Thu, 28 Oct 2021 11:41:32 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 697D33857C72 Received: from AS9PR0301CA0039.eurprd03.prod.outlook.com (2603:10a6:20b:469::8) by HE1PR0801MB2076.eurprd08.prod.outlook.com (2603:10a6:3:4c::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4628.18; Thu, 28 Oct 2021 11:41:29 +0000 Received: from VE1EUR03FT036.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:469:cafe::50) by AS9PR0301CA0039.outlook.office365.com (2603:10a6:20b:469::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4628.18 via Frontend Transport; Thu, 28 Oct 2021 11:41:29 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;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 VE1EUR03FT036.mail.protection.outlook.com (10.152.19.204) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.14 via Frontend Transport; Thu, 28 Oct 2021 11:41:29 +0000 Received: ("Tessian outbound d49ee2bec50d:v108"); Thu, 28 Oct 2021 11:41:28 +0000 X-CR-MTA-TID: 64aa7808 Received: from 022f8c404fb1.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id F1CD4B07-BEDB-4FA0-8791-F0538CB0D906.1; Thu, 28 Oct 2021 11:41:22 +0000 Received: from EUR01-DB5-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 022f8c404fb1.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 28 Oct 2021 11:41:22 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HdycCkkgKm8mLlFeDUqjlaE61wTgAGDHGJE4ppyOc8vpN3a+ZHYMQxVypg4zgtr0sYZLQd3Ku5VXk36lYc75SrGkig0Qo2b5XQwGvle9nNpoonqCQznxxpxZVE6EvBNUuflv2mwO0asF3ks8QLOC2Fldn/U/V3AQRVRPqD63TUKCNDEumIEmGdEBHXmosf0Lj7oXk7aFwuYw3h/ZXcWwzY430SWrNv6jUQH+6eXyqWq4rdesmAeszQ7pBRYQ84DRHkPbP24xU1KDm3ZutL49ZgvjcfDNu8fGiyDiHDm40iXF8GOuKa03mOXxGI9hRl44g/Cy1d1yhWXTnBaxl153mQ== 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=18p0O29owTiaf1zOYObuEmNE7P53xoUjh9P67Mf0NN0=; b=jX3jy3C3zUv5bU3/e3+2hMd73kUuSHSnyqJD7BfqS6uRpvY2msZNluBdICR8P8jdHKxC/8pVQRBlMBcW3mXLbozgr828eMPrs0zcf+8UBi/SvVczx3oNr7q+JCSUK9yn+j71+d7+v+qWk74eLeNN3ArV3vsYNqkX+AF8JAvZZXrfgjyMDb9+jmUBe1k1fzGX9OpUFiEKl+KIJ/lmg8WXVmsE+awZkfU4XL8Vi/0HexCyeWOcVozH0Jlt5Dw5pAZZt9zUgSxBvgqixCkRegZu7UBpC1VVyfId2pEUYL0fCVRJloEf5c14Bi9pZbcqQhl1UaGPCrGFR1z+xPEuH3QCbw== 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 PAXPR08MB7075.eurprd08.prod.outlook.com (2603:10a6:102:201::15) by PAXPR08MB7261.eurprd08.prod.outlook.com (2603:10a6:102:210::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.15; Thu, 28 Oct 2021 11:41:21 +0000 Received: from PAXPR08MB7075.eurprd08.prod.outlook.com ([fe80::9c7f:ad76:ac66:26f2]) by PAXPR08MB7075.eurprd08.prod.outlook.com ([fe80::9c7f:ad76:ac66:26f2%9]) with mapi id 15.20.4628.020; Thu, 28 Oct 2021 11:41:21 +0000 From: Tejas Belagod To: Richard Earnshaw , "gcc-patches@gcc.gnu.org" Subject: [Patch 1/8, Arm, AArch64, GCC] Refactor mbranch-protection option parsing and make it common to AArch32 and AArch64 backends. [Was RE: [Patch 2/7, Arm, GCC] Add option -mbranch-protection.] Thread-Topic: [Patch 1/8, Arm, AArch64, GCC] Refactor mbranch-protection option parsing and make it common to AArch32 and AArch64 backends. [Was RE: [Patch 2/7, Arm, GCC] Add option -mbranch-protection.] Thread-Index: AdfL8JcvuDyOwd6+SjWpR5X5uwhAlQ== Date: Thu, 28 Oct 2021 11:41:21 +0000 Message-ID: Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ts-tracking-id: B21AA4EF4D9DD54B8CDB47CAC94CF512.0 x-checkrecipientchecked: true Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-publictraffictype: Email X-MS-Office365-Filtering-Correlation-Id: d517c707-431e-4bcd-b355-08d99a07e1b4 x-ms-traffictypediagnostic: PAXPR08MB7261:|HE1PR0801MB2076: X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:6430;OLM:6430; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: g/kfL8JQI/5pKF7HDc/Q5OwHH0sW6Wnu3KFlqng1cavYXjmxNK5QJDp93elftIyMb/Gb6nFfe4uknp5H5Hbav5uvafKdHIeXy3CEqUpdZcp5JpyM8PP4ZnwZkw3H2qcvvygYdVlkiR/87O7klCmRbV1ozr5eiKYAAau8+jeOC555MnC0VUTozGB7dGdfYR/mLtszSH8CDyyVgKuYoQlfSnTFZcO9nylSmJRDT8d9ERgL7pFSyiGPn3buNTxOGHdXgBUc+z0l2336sLOhyvILXh4bTnpRXS0mpMWJ5lG+l5jznRIidWhcs+frHzxhmCjGt5X7o8VtdCt33BOzfjcBlmNFwD5ABBEu3ICJgnquv4pVjhXda9v8IzlJhYBZxdiMUNrOu8ybDEWxUBc3Y23FV6VmPyGBu1VJvbVmeuCXNJA/79ZoPaq7zWSKJjK80+QtSHMiupQcF7fSQn6gcDepomu2agSFz9D4B9yDSnljtrdO3r82lAX+m/8oBc1xh/2OkErnaweBpFgd68pWC9fp7CEY+k6HngeExipjqUcsoQBq9TRo4SZ752ZnhWeHKoiwiWtgh6is3hP+rZHuQlXvWVDW+NVPlBwWxrxo57wyJmi4d1dGijXoH94yo2nbhbJBKORqzGHb1sV6orZQYiODfM9O91SWjli50oxXeqi9cv0VsvyroGQ1LV8UYM3kNwecv1So4FsRjvHq7I+ERjgcEw== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR08MB7075.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(316002)(8676002)(110136005)(55016002)(9686003)(64756008)(66446008)(86362001)(38070700005)(66476007)(83380400001)(66556008)(8936002)(71200400001)(76116006)(66946007)(4001150100001)(7696005)(26005)(33656002)(52536014)(5660300002)(122000001)(2906002)(38100700002)(6506007)(53546011)(186003)(508600001)(99936003); DIR:OUT; SFP:1101; Content-Type: multipart/mixed; boundary="_002_PAXPR08MB7075CE7A66B899400B18CE47EA869PAXPR08MB7075eurp_" MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR08MB7261 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: VE1EUR03FT036.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 0eed663d-03c4-4a86-cc46-08d99a07dd2f X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 1cHX/dmK/ljKtjpRwsh7E7qrAfraX7xLumPEs4+lNTdi93Z/2XGofgrpjUXRVbHNeQkoxq30bgr/MT6aHZDk+q++e7CmvRhRN2QnJ0uz+ui3ih7mxkqzjCQOzX94KmmQu4uGMttA7NnzvTkHW00qnbC2cpHWX0qjK8IXr+yeaNx0usr9MlRQdGH+Z5P8icZXqcpmDhGmuP5ZOCRaAoMeH1bs7CV4rSh/PnEjvYjgfQOkXiSdfEQSIU8OhcC9V3+IXvIk1zWkU6CvdUxcGbgsf0fjOroUDPRZ2kFu9ZHaS70W+DmeYM0TukaEwSaM8UI98NHgAFbk0NVfoR/KPsL0VzXel8fs3VcN2dUgdZebS04PnHvtq8cmhNrM4DFuK6dXk98S8lqZ/FO2zz0XGL0WwVDhKeqKZSX3QtANLF1WGTvAmV+GkI/9wgWQ7ujbWWMzdFTAuClLG+097EFnIlTFrdYcE6co5VpDlgTIj9h94PSD0wOV9EYKwlNPpOXYb3AOoOLGgKkVAULCHwkAplURhzn57fsbFAebTpqmLQ97ZKtHQXbnndhPwsv/jUDwziVS7xxRXEsThSmYSKyKeBr/4cET0Hy2j+iohKd6eHZ33OVVdkNKWcwDRYXSaUOFobNSJwh3m4gJEubHMn7uu++keSVWqAXpIC2XQAtmWfnmqQH0VccY0S2qAT9NbXWudyFtQ/WwMX/0aL0Ar+MSKgwY8w== 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)(36840700001)(46966006)(26005)(21480400003)(9686003)(81166007)(70586007)(52536014)(356005)(36860700001)(55016002)(6506007)(33656002)(82310400003)(4001150100001)(33964004)(8676002)(83380400001)(53546011)(86362001)(316002)(336012)(8936002)(99936003)(70206006)(5660300002)(110136005)(2906002)(47076005)(186003)(235185007)(7696005)(508600001); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Oct 2021 11:41:29.0411 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d517c707-431e-4bcd-b355-08d99a07e1b4 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: VE1EUR03FT036.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB2076 X-Spam-Status: No, score=-13.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, KAM_LOTSOFHASH, KAM_SHORT, KAM_STOCKGEN, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 Oct 2021 11:41:38 -0000 --_002_PAXPR08MB7075CE7A66B899400B18CE47EA869PAXPR08MB7075eurp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogUmljaGFyZCBFYXJuc2hh dyA8UmljaGFyZC5FYXJuc2hhd0Bhcm0uY29tPg0KPiBTZW50OiBNb25kYXksIE9jdG9iZXIgMTEs IDIwMjEgMTo1OCBQTQ0KPiBUbzogVGVqYXMgQmVsYWdvZCA8VGVqYXMuQmVsYWdvZEBhcm0uY29t PjsgZ2NjLXBhdGNoZXNAZ2NjLmdudS5vcmcNCj4gU3ViamVjdDogUmU6IFtQYXRjaCAyLzcsIEFy bSwgR0NDXSBBZGQgb3B0aW9uIC1tYnJhbmNoLXByb3RlY3Rpb24uDQo+IA0KPiBPbiAwOC8xMC8y MDIxIDEzOjE3LCBUZWphcyBCZWxhZ29kIHZpYSBHY2MtcGF0Y2hlcyB3cm90ZToNCj4gPiBIaSwN Cj4gPg0KPiA+IEFkZCAtbWJyYW5jaC1wcm90ZWN0aW9uIG9wdGlvbiBhbmQgaXRzIGFzc29jaWF0 ZWQgcGFyc2luZyByb3V0aW5lcy4NCj4gPiBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBjb2RlLWdl bmVyYXRpb24gb2YgcG9pbnRlciBzaWduaW5nIGFuZA0KPiA+IGF1dGhlbnRpY2F0aW9uIGluc3Ry dWN0aW9ucyBpbiBmdW5jdGlvbiBwcm9sb2d1ZXMgYW5kIGVwaWxvZ3Vlcy4NCj4gPg0KPiA+IFRl c3RlZCBvbiBhcm0tbm9uZS1lYWJpLiBPSyBmb3IgdHJ1bms/DQo+ID4NCj4gPiAyMDIxLTEwLTA0 ICBUZWphcyBCZWxhZ29kICA8dGJlbGFnb2RAYXJtLmNvbT4NCj4gPg0KPiA+IGdjYy9DaGFuZ2VM b2c6DQo+ID4NCj4gPiAJKiBjb21tb24vY29uZmlnL2FybS9hcm0tY29tbW9uLmMNCj4gPiAJIChh cm1fcHJpbnRfaGl0X2Zvcl9wYWNidGlfb3B0aW9uKTogTmV3Lg0KPiA+IAkgKGFybV9wcm9ncmVz c19uZXh0X3Rva2VuKTogTmV3Lg0KPiA+IAkgKGFybV9wYXJzZV9wYWNfcmV0X2NsYXVzZSk6IE5l dyByb3V0aW5lIGZvciBwYXJzaW5nIHRoZQ0KPiA+IAlwYWMtcmV0IGNsYXVzZSBmb3IgLW1icmFu Y2gtcHJvdGVjdGlvbi4NCj4gPiAJKGFybV9wYXJzZV9wYWNidGlfb3B0aW9uKTogTmV3IHJvdXRp bmUgdG8gcGFyc2UgYWxsIHRoZSBvcHRpb25zDQo+ID4gCXRvIC1tYnJhbmNoLXByb3RlY3Rpb24u DQo+ID4gCSogY29uZmlnL2FybS9hcm0tcHJvdG9zLmggKGFybV9wYXJzZV9wYWNidGlfb3B0aW9u KTogRXhwb3J0Lg0KPiA+IAkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9jb25maWd1cmUpYnVpbGRf dGFyZ2V0KTogSGFuZGxlIG9wdGlvbg0KPiA+IAl0byAtbWJyYW5jaC1wcm90ZWN0aW9uLg0KPiA+ IAkqIGNvbmZpZy9hcm0vYXJtLm9wdCAobWJyYW5jaC1wcm90ZWN0aW9uKS4gTmV3Lg0KPiA+IAko YXJtX2VuYWJsZV9wYWNidGkpOiBOZXcuDQo+ID4NCj4gDQo+IFlvdSdyZSBtaXNzaW5nIGRvY3Vt ZW50YXRpb24gZm9yIGludm9rZS50ZXhpLg0KPiANCj4gQWxzbywgaG93IGRvZXMgdGhpcyBkaWZm ZXIgZnJvbSB0aGUgZXhpc2luZyBvcHRpb24gaW4gYWFyY2g2ND8gIENhbiB0aGUgY29kZQ0KPiBm cm9tIHRoYXQgYmUgYWRhcHRlZCB0byBiZSBtYWRlIGNvbW1vbiB0byBib3RoIHRhcmdldHMgcmF0 aGVyIHRoYW4gZG9pbmcNCj4gYSBuZXcgaW1wbGVtZW50YXRpb24/DQo+IA0KPiBGaW5hbGx5LCB0 aGVyZSBhcmUgZmFyIHRvIG1hbnkgbWFuaWZlc3QgY29uc3RhbnRzIGluIHRoaXMgcGF0Y2gsIHRo ZXkgbmVlZA0KPiByZXBsYWNpbmcgd2l0aCBlbnVtcyBvciAjZGVmaW5lcyBhcyBhcHByb3ByaWF0 ZSBpZiB3ZSBjYW5ub3Qgc2hhcmUgdGhlDQo+IGFhcmNoNjQgY29kZS4NCj4gDQoNClRoYW5rcyBm b3IgdGhlIHJldmlld3MuDQoNClRoaXMgY2hhbmdlIHJlZmFjdG9ycyBhbGwgdGhlIG1icmFuY2gt cHJvdGVjdGlvbiBvcHRpb24gcGFyc2luZyBjb2RlIGFuZCB0eXBlcw0KdG8gbWFrZSBpdCBjb21t b24gdG8gYm90aCBBQXJjaDMyIGFuZCBBQXJjaDY0IGJhY2tlbmRzLiAgVGhpcyBjaGFuZ2UgYWxz byBwdWxscw0KaW4gc29tZSBzdXBwb3J0aW5nIHR5cGVzIGZyb20gQUFyY2g2NCB0byBtYWtlIGl0 IGNvbW1vbg0KKGFhcmNoX3BhcnNlX29wdF9yZXN1bHQpLiAgVGhlIHNpZ25pZmljYW50IGNoYW5n ZXMgaW4gdGhpcyBwYXRjaCBhcmUgdGhlDQptb3ZlbWVudCBvZiBhbGwgYnJhbmNoIHByb3RlY3Rp b24gcGFyc2luZyByb3V0aW5lcyBmcm9tIGFhcmNoNjQuYyB0bw0KYWFyY2gtY29tbW9uLmMgYW5k IHN1cHBvcnRpbmcgZGF0YSB0eXBlcyBhbmQgc3RhdGljIGRhdGEgc3RydWN0dXJlcy4gIFRoaXMN CnBhdGNoIGFsc28gcHJlLWRlY2xhcmVzIHZhcmlhYmxlcyBhbmQgdHlwZXMgcmVxdWlyZWQgaW4g dGhlIGFhcmNoMzIgYmFjayBmb3INCm1vdmVkIHZhcmlhYmxlcyBmb3IgZnVuY3Rpb24gc2lnbiBz Y29wZSBhbmQga2V5IHRvIHByZXBhcmUgZm9yIHRoZSBpbXBlbmRpbmcNCnNlcmllcyBvZiBwYXRj aGVzIHRoYXQgc3VwcG9ydCBwYXJzaW5nIHRoZSBmZWF0dXJlIG1icmFuY2gtcHJvdGVjdGlvbiBp biB0aGUNCmFhcmNoMzIgYmFjayBlbmQuDQoNCjIwMjEtMTAtMjUgIFRlamFzIEJlbGFnb2QgIDx0 YmVsYWdvZEBhcm0uY29tPg0KDQpnY2MvQ2hhbmdlTG9nOg0KDQoJKiBjb21tb24vY29uZmlnL2Fh cmNoNjQvYWFyY2g2NC1jb21tb24uYzogSW5jbHVkZSBhYXJjaC1jb21tb24uaC4NCgkoYWxsX2Fy Y2hpdGVjdHVyZXMpOiBGaXggY29tbWVudC4NCgkoYWFyY2g2NF9wYXJzZV9leHRlbnNpb24pOiBS ZW5hbWUgcmV0dXJuIHR5cGUsIGVudW0gdmFsdWUgbmFtZXMuDQoJKiBjb25maWcvYWFyY2g2NC9h YXJjaDY0LWMuYyAoYWFyY2g2NF91cGRhdGVfY3BwX2J1aWx0aW5zKTogUmVuYW1lDQoJZmFjdG9y ZWQgb3V0IGFhcmNoX3JhX3NpZ25fc2NvcGUgYW5kIGFhcmNoX3JhX3NpZ25fa2V5IHZhcmlhYmxl cy4NCglBbHNvIHJlbmFtZSBjb3JyZXNwb25kaW5nIGVudW0gdmFsdWVzLg0KCSogY29uZmlnL2Fh cmNoNjQvYWFyY2g2NC1vcHRzLmggKGFhcmNoNjRfZnVuY3Rpb25fdHlwZSk6IEZhY3RvciBvdXQN CglhYXJjaDY0X2Z1bmN0aW9uX3R5cGUgYW5kIG1vdmUgaXQgdG8gY29tbW9uIGNvZGUgYXMgYWFy Y2hfZnVuY3Rpb25fdHlwZQ0KCWluIGFhcmNoLWNvbW1vbi5oLg0KCSogY29uZmlnL2FhcmNoNjQv YWFyY2g2NC1wcm90b3MuaDogSW5jbHVkZSBjb21tb24gdHlwZXMgaGVhZGVyLCBtb3ZlIG91dA0K CXR5cGVzIGFhcmNoNjRfcGFyc2Vfb3B0X3Jlc3VsdCBhbmQgYWFyY2g2NF9rZXlfdHlwZSB0byBh YXJjaC1jb21tb24uaA0KCSogY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5jOiBNb3ZlIG1icmFuY2gt cHJvdGVjdGlvbiBwYXJzaW5nIHR5cGVzIGFuZA0KCWZ1bmN0aW9ucyBvdXQgaW50byBhYXJjaC1j b21tb24uaCBhbmQgYWFyY2gtY29tbW9uLmMuICBGaXggdXAgYWxsIHRoZSBuYW1lDQoJY2hhbmdl cyByZXN1bHRpbmcgZnJvbSB0aGUgbW92ZS4NCgkqIGNvbmZpZy9hYXJjaDY0L2FhcmNoNjQubWQ6 IEZpeCB1cCBhYXJjaDY0X3JhX3NpZ25fa2V5IHR5cGUgbmFtZSBjaGFuZ2UNCglhbmQgZW51bSB2 YWx1ZS4NCgkqIGNvbmZpZy9hYXJjaDY0L2FhcmNoNjQub3B0OiBJbmNsdWRlIGFhcmNoLWNvbW1v bi5oIHRvIGltcG9ydCB0eXBlIG1vdmUuDQoJRml4IHVwIG5hbWUgY2hhbmdlcyBmcm9tIGZhY3Rv cmluZyBvdXQgY29tbW9uIGNvZGUgYW5kIGRhdGEuDQoJKiBjb25maWcvYXJtL2FhcmNoLWNvbW1v bi1wcm90b3MuaDogRXhwb3J0IGZhY3RvcmVkIG91dCByb3V0aW5lcyB0byBib3RoDQoJYmFja2Vu ZHMuDQoJKiBjb25maWcvYXJtL2FhcmNoLWNvbW1vbi5jOiBJbmNsdWRlIG5ld2x5IGZhY3RvcmVk IG91dCB0eXBlcy4gIE1vdmUgYWxsDQoJbWJyYW5jaC1wcm90ZWN0aW9uIGNvZGUgYW5kIGRhdGEg c3RydWN0dXJlcyBmcm9tIGFhcmNoNjQuYy4NCgkqIGNvbmZpZy9hcm0vYWFyY2gtY29tbW9uLmg6 IE5ldyBoZWFkZXIgdGhhdCBkZWNsYXJlcyB0eXBlcyBzaGFyZWQgYmV0d2Vlbg0KCWFhcmNoMzIg YW5kIGFhcmNoNjQgYmFja2VuZHMuDQoJKiBjb25maWcvYXJtL2FybS1wcm90b3MuaDogRGVjbGFy ZSB0eXBlcyBhbmQgdmFyaWFibGVzIHRoYXQgYXJlIG1hZGUgY29tbW9uDQoJdG8gYWFyY2g2NCBh bmQgYWFyY2gzMiBiYWNrZW5kcyAtIGFhcmNoX3JhX3NpZ25fa2V5LCBhYXJjaF9yYV9zaWduX3Nj b3BlIGFuZA0KCWFhcmNoX2VuYWJsZV9idGkuDQoNCg0KVGVzdGVkIHRoZSBmb2xsb3dpbmcgY29u ZmlndXJhdGlvbnMuIE9LIGZvciB0cnVuaz8NCg0KLW10aHVtYi8tbWFyY2g9YXJtdjguMS1tLm1h aW4rcGFjYnRpLy1tZmxvYXQtYWJpPXNvZnQNCi1tYXJtLy1tYXJjaD1hcm12Ny1hLy1tZnB1PXZm cHYzLWQxNi8tbWZsb2F0LWFiaT1zb2Z0ZnANCm1jbW9kZWw9c21hbGwgYW5kIHRpbnkNCmFhcmNo NjQtbm9uZS1saW51eC1nbnUgbmF0aXZlIHRlc3QgYW5kIGJvb3RzdHJhcA0KDQpUaGFua3MsDQpU ZWphcy4NCg0KPiBSLg0K --_002_PAXPR08MB7075CE7A66B899400B18CE47EA869PAXPR08MB7075eurp_ Content-Type: text/plain; name="refactor.txt" Content-Description: refactor.txt Content-Disposition: attachment; filename="refactor.txt"; size=45369; creation-date="Thu, 28 Oct 2021 11:00:39 GMT"; modification-date="Thu, 28 Oct 2021 10:59:14 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy9jb21tb24vY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1jb21tb24uYyBi L2djYy9jb21tb24vY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1jb21tb24uYwppbmRleCA2ZDIwMGEx ODY2MDRiZTIwMjhiMTllZTk2OTFlN2JiZjRhN2JlOWMyLi45MmM4ZjE0YTE3NDY2YjlkNmM0NGJk ZjRlZGU2NzNhNjVmMWI0MjZmIDEwMDY0NAotLS0gYS9nY2MvY29tbW9uL2NvbmZpZy9hYXJjaDY0 L2FhcmNoNjQtY29tbW9uLmMKKysrIGIvZ2NjL2NvbW1vbi9jb25maWcvYWFyY2g2NC9hYXJjaDY0 LWNvbW1vbi5jCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAib3B0cy5oIgogI2luY2x1ZGUg ImZsYWdzLmgiCiAjaW5jbHVkZSAiZGlhZ25vc3RpYy5oIgorI2luY2x1ZGUgImNvbmZpZy9hcm0v YWFyY2gtY29tbW9uLmgiCiAKICNpZmRlZiAgVEFSR0VUX0JJR19FTkRJQU5fREVGQVVMVAogI3Vu ZGVmICBUQVJHRVRfREVGQVVMVF9UQVJHRVRfRkxBR1MKQEAgLTE5MiwxMSArMTkzLDExIEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgYXJjaF90b19hcmNoX25hbWUgYWxsX2FyY2hpdGVjdHVyZXNbXSA9 CiAKIC8qIFBhcnNlIHRoZSBhcmNoaXRlY3R1cmUgZXh0ZW5zaW9uIHN0cmluZyBTVFIgYW5kIHVw ZGF0ZSBJU0FfRkxBR1MKICAgIHdpdGggdGhlIGFyY2hpdGVjdHVyZSBmZWF0dXJlcyB0dXJuZWQg b24gb3Igb2ZmLiAgUmV0dXJuIGEKLSAgIGFhcmNoNjRfcGFyc2Vfb3B0X3Jlc3VsdCBkZXNjcmli aW5nIHRoZSByZXN1bHQuCisgICBhYXJjaF9wYXJzZV9vcHRfcmVzdWx0IGRlc2NyaWJpbmcgdGhl IHJlc3VsdC4KICAgIFdoZW4gdGhlIFNUUiBzdHJpbmcgY29udGFpbnMgYW4gaW52YWxpZCBleHRl bnNpb24sCiAgICBhIGNvcHkgb2YgdGhlIHN0cmluZyBpcyBjcmVhdGVkIGFuZCBzdG9yZWQgdG8g SU5WQUxJRF9FWFRFTlNJT04uICAqLwogCi1lbnVtIGFhcmNoNjRfcGFyc2Vfb3B0X3Jlc3VsdAor ZW51bSBhYXJjaF9wYXJzZV9vcHRfcmVzdWx0CiBhYXJjaDY0X3BhcnNlX2V4dGVuc2lvbiAoY29u c3QgY2hhciAqc3RyLCB1aW50NjRfdCAqaXNhX2ZsYWdzLAogCQkJIHN0ZDo6c3RyaW5nICppbnZh bGlkX2V4dGVuc2lvbikKIHsKQEAgLTIyOSw3ICsyMzAsNyBAQCBhYXJjaDY0X3BhcnNlX2V4dGVu c2lvbiAoY29uc3QgY2hhciAqc3RyLCB1aW50NjRfdCAqaXNhX2ZsYWdzLAogCWFkZGluZ19leHQg PSAxOwogCiAgICAgICBpZiAobGVuID09IDApCi0JcmV0dXJuIEFBUkNINjRfUEFSU0VfTUlTU0lO R19BUkc7CisJcmV0dXJuIEFBUkNIX1BBUlNFX01JU1NJTkdfQVJHOwogCiAKICAgICAgIC8qIFNj YW4gb3ZlciB0aGUgZXh0ZW5zaW9ucyB0YWJsZSB0cnlpbmcgdG8gZmluZCBhbiBleGFjdCBtYXRj aC4gICovCkBAIC0yNTEsMTMgKzI1MiwxMyBAQCBhYXJjaDY0X3BhcnNlX2V4dGVuc2lvbiAoY29u c3QgY2hhciAqc3RyLCB1aW50NjRfdCAqaXNhX2ZsYWdzLAogCSAgLyogRXh0ZW5zaW9uIG5vdCBm b3VuZCBpbiBsaXN0LiAgKi8KIAkgIGlmIChpbnZhbGlkX2V4dGVuc2lvbikKIAkgICAgKmludmFs aWRfZXh0ZW5zaW9uID0gc3RkOjpzdHJpbmcgKHN0ciwgbGVuKTsKLQkgIHJldHVybiBBQVJDSDY0 X1BBUlNFX0lOVkFMSURfRkVBVFVSRTsKKwkgIHJldHVybiBBQVJDSF9QQVJTRV9JTlZBTElEX0ZF QVRVUkU7CiAJfQogCiAgICAgICBzdHIgPSBleHQ7CiAgICAgfTsKIAotICByZXR1cm4gQUFSQ0g2 NF9QQVJTRV9PSzsKKyAgcmV0dXJuIEFBUkNIX1BBUlNFX09LOwogfQogCiAvKiBBcHBlbmQgYWxs IGFyY2hpdGVjdHVyZSBleHRlbnNpb24gY2FuZGlkYXRlcyB0byB0aGUgQ0FORElEQVRFUyB2ZWN0 b3IuICAqLwpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtYy5jIGIvZ2Nj L2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtYy5jCmluZGV4IGY5ZGRmZmEwMDc4MThhNDI3MTBjZmMw ZDYwYWY1ODBkZDZjNzZmOTUuLjM1MThlOWFiNmNhYzY5MTVlMWI4OGVhYjQ1MGJiMzE4NzlmYmJh YmQgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWMuYworKysgYi9nY2Mv Y29uZmlnL2FhcmNoNjQvYWFyY2g2NC1jLmMKQEAgLTE4MywxNCArMTgzLDE0IEBAIGFhcmNoNjRf dXBkYXRlX2NwcF9idWlsdGlucyAoY3BwX3JlYWRlciAqcGZpbGUpCiAJCQkiX19BUk1fRkVBVFVS RV9CVElfREVGQVVMVCIsIHBmaWxlKTsKIAogICBjcHBfdW5kZWYgKHBmaWxlLCAiX19BUk1fRkVB VFVSRV9QQUNfREVGQVVMVCIpOwotICBpZiAoYWFyY2g2NF9yYV9zaWduX3Njb3BlICE9IEFBUkNI NjRfRlVOQ1RJT05fTk9ORSkKKyAgaWYgKGFhcmNoX3JhX3NpZ25fc2NvcGUgIT0gQUFSQ0hfRlVO Q1RJT05fTk9ORSkKICAgICB7CiAgICAgICBpbnQgdiA9IDA7Ci0gICAgICBpZiAoYWFyY2g2NF9y YV9zaWduX2tleSA9PSBBQVJDSDY0X0tFWV9BKQorICAgICAgaWYgKGFhcmNoX3JhX3NpZ25fa2V5 ID09IEFBUkNIX0tFWV9BKQogCXYgfD0gMTsKLSAgICAgIGlmIChhYXJjaDY0X3JhX3NpZ25fa2V5 ID09IEFBUkNINjRfS0VZX0IpCisgICAgICBpZiAoYWFyY2hfcmFfc2lnbl9rZXkgPT0gQUFSQ0hf S0VZX0IpCiAJdiB8PSAyOwotICAgICAgaWYgKGFhcmNoNjRfcmFfc2lnbl9zY29wZSA9PSBBQVJD SDY0X0ZVTkNUSU9OX0FMTCkKKyAgICAgIGlmIChhYXJjaF9yYV9zaWduX3Njb3BlID09IEFBUkNI X0ZVTkNUSU9OX0FMTCkKIAl2IHw9IDQ7CiAgICAgICBidWlsdGluX2RlZmluZV93aXRoX2ludF92 YWx1ZSAoIl9fQVJNX0ZFQVRVUkVfUEFDX0RFRkFVTFQiLCB2KTsKICAgICB9CmRpZmYgLS1naXQg YS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1vcHRzLmggYi9nY2MvY29uZmlnL2FhcmNoNjQv YWFyY2g2NC1vcHRzLmgKaW5kZXggYWYzYjczNjRhNzQ4ZjdiOTVjZGJiNWMxNTA4YTFlOTU2NjI0 NDE3NS4uZDQ3ZTFlNzRmNmMyZjQ0OGVkMzY0YmY4Nzg3ZjExNDg0ZTJmMzU5NSAxMDA2NDQKLS0t IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtb3B0cy5oCisrKyBiL2djYy9jb25maWcvYWFy Y2g2NC9hYXJjaDY0LW9wdHMuaApAQCAtNzEsMTYgKzcxLDYgQEAgZW51bSBhYXJjaDY0X2NvZGVf bW9kZWwgewogICBBQVJDSDY0X0NNT0RFTF9MQVJHRQogfTsKIAotLyogRnVuY3Rpb24gdHlwZXMg LW1zaWduLXJldHVybi1hZGRyZXNzIHNob3VsZCBzaWduLiAgKi8KLWVudW0gYWFyY2g2NF9mdW5j dGlvbl90eXBlIHsKLSAgLyogRG9uJ3Qgc2lnbiBhbnkgZnVuY3Rpb24uICAqLwotICBBQVJDSDY0 X0ZVTkNUSU9OX05PTkUsCi0gIC8qIE5vbi1sZWFmIGZ1bmN0aW9ucy4gICovCi0gIEFBUkNINjRf RlVOQ1RJT05fTk9OX0xFQUYsCi0gIC8qIEFsbCBmdW5jdGlvbnMuICAqLwotICBBQVJDSDY0X0ZV TkNUSU9OX0FMTAotfTsKLQogLyogU1ZFIHZlY3RvciByZWdpc3RlciBzaXplcy4gICovCiBlbnVt IGFhcmNoNjRfc3ZlX3ZlY3Rvcl9iaXRzX2VudW0gewogICBTVkVfU0NBTEFCTEUsCmRpZmYgLS1n aXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1wcm90b3MuaCBiL2djYy9jb25maWcvYWFy Y2g2NC9hYXJjaDY0LXByb3Rvcy5oCmluZGV4IDc2OGU4ZmFlMTM2ZGFhODY2ZmU1ODlkNzJmMzA1 MTRlMTIyOTE4MGYuLmIxZGM4N2JjYmRjODg4OTY3YTMyYTk2NmFkMGZkOGE4OTZlNDU0YmUgMTAw NjQ0Ci0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LXByb3Rvcy5oCisrKyBiL2djYy9j b25maWcvYWFyY2g2NC9hYXJjaDY0LXByb3Rvcy5oCkBAIC0yMyw2ICsyMyw3IEBACiAjZGVmaW5l IEdDQ19BQVJDSDY0X1BST1RPU19ICiAKICNpbmNsdWRlICJpbnB1dC5oIgorI2luY2x1ZGUgImNv bmZpZy9hcm0vYWFyY2gtY29tbW9uLmgiCiAKIC8qIFNZTUJPTF9TTUFMTF9BQlNPTFVURTogR2Vu ZXJhdGUgc3ltYm9sIGFjY2Vzc2VzIHRocm91Z2gKICAgIGhpZ2ggYW5kIGxvIHJlbG9jcyB0aGF0 IGNhbGN1bGF0ZSB0aGUgYmFzZSBhZGRyZXNzIHVzaW5nIGEgUEMKQEAgLTYzNywxOCArNjM4LDYg QEAgZW51bSBhYXJjaDY0X2V4dHJhX3R1bmluZ19mbGFncwogICBBQVJDSDY0X0VYVFJBX1RVTkVf QUxMID0gKDF1IDw8IEFBUkNINjRfRVhUUkFfVFVORV9pbmRleF9FTkQpIC0gMQogfTsKIAotLyog RW51bSBkZXNjcmliaW5nIHRoZSB2YXJpb3VzIHdheXMgdGhhdCB0aGUKLSAgIGFhcmNoNjRfcGFy c2Vfe2FyY2gsdHVuZSxjcHUsZXh0ZW5zaW9ufSBmdW5jdGlvbnMgY2FuIGZhaWwuCi0gICBUaGlz IHdheSB0aGVpciBjYWxsZXJzIGNhbiBjaG9vc2Ugd2hhdCBraW5kIG9mIGVycm9yIHRvIGdpdmUu ICAqLwotCi1lbnVtIGFhcmNoNjRfcGFyc2Vfb3B0X3Jlc3VsdAotewotICBBQVJDSDY0X1BBUlNF X09LLAkJCS8qIFBhcnNpbmcgd2FzIHN1Y2Nlc3NmdWwuICAqLwotICBBQVJDSDY0X1BBUlNFX01J U1NJTkdfQVJHLAkJLyogTWlzc2luZyBhcmd1bWVudC4gICovCi0gIEFBUkNINjRfUEFSU0VfSU5W QUxJRF9GRUFUVVJFLAkvKiBJbnZhbGlkIGZlYXR1cmUgbW9kaWZpZXIuICAqLwotICBBQVJDSDY0 X1BBUlNFX0lOVkFMSURfQVJHCQkvKiBJbnZhbGlkIGFyY2gsIHR1bmUsIGNwdSBhcmcuICAqLwot fTsKLQogLyogRW51bSB0byBkaXN0aW5ndWlzaCB3aGljaCB0eXBlIG9mIGNoZWNrIGlzIHRvIGJl IGRvbmUgaW4KICAgIGFhcmNoNjRfc2ltZF92YWxpZF9pbW1lZGlhdGUuICBUaGlzIGlzIHVzZWQg YXMgYSBiaXRtYXNrIHdoZXJlCiAgICBBQVJDSDY0X0NIRUNLX01PViBoYXMgYm90aCBiaXRzIHNl dC4gIFRodXMgQUFSQ0g2NF9DSEVDS19NT1Ygd2lsbApAQCAtNjU5LDEzICs2NDgsNyBAQCBlbnVt IHNpbWRfaW1tZWRpYXRlX2NoZWNrIHsKICAgQUFSQ0g2NF9DSEVDS19NT1YgID0gQUFSQ0g2NF9D SEVDS19PUlIgfCBBQVJDSDY0X0NIRUNLX0JJQwogfTsKIAotLyogVGhlIGtleSB0eXBlIHRoYXQg LW1zaWduLXJldHVybi1hZGRyZXNzIHNob3VsZCB1c2UuICAqLwotZW51bSBhYXJjaDY0X2tleV90 eXBlIHsKLSAgQUFSQ0g2NF9LRVlfQSwKLSAgQUFSQ0g2NF9LRVlfQgotfTsKLQotZXh0ZXJuIGVu dW0gYWFyY2g2NF9rZXlfdHlwZSBhYXJjaDY0X3JhX3NpZ25fa2V5OworZXh0ZXJuIGVudW0gYWFy Y2hfa2V5X3R5cGUgYWFyY2hfcmFfc2lnbl9rZXk7CiAKIGV4dGVybiBzdHJ1Y3QgdHVuZV9wYXJh bXMgYWFyY2g2NF90dW5lX3BhcmFtczsKIApAQCAtMTAxMyw5ICs5OTYsOSBAQCBleHRlcm4gYm9v bCBhYXJjaDY0X2NsYXNzaWZ5X2FkZHJlc3MgKHN0cnVjdCBhYXJjaDY0X2FkZHJlc3NfaW5mbyAq LCBydHgsCiBib29sIGFhcmNoNjRfaGFuZGxlX29wdGlvbiAoc3RydWN0IGdjY19vcHRpb25zICos IHN0cnVjdCBnY2Nfb3B0aW9ucyAqLAogCQkJICAgICBjb25zdCBzdHJ1Y3QgY2xfZGVjb2RlZF9v cHRpb24gKiwgbG9jYXRpb25fdCk7CiBjb25zdCBjaGFyICphYXJjaDY0X3Jld3JpdGVfc2VsZWN0 ZWRfY3B1IChjb25zdCBjaGFyICpuYW1lKTsKLWVudW0gYWFyY2g2NF9wYXJzZV9vcHRfcmVzdWx0 IGFhcmNoNjRfcGFyc2VfZXh0ZW5zaW9uIChjb25zdCBjaGFyICosCi0JCQkJCQkgICAgICAgdWlu dDY0X3QgKiwKLQkJCQkJCSAgICAgICBzdGQ6OnN0cmluZyAqKTsKK2VudW0gYWFyY2hfcGFyc2Vf b3B0X3Jlc3VsdCBhYXJjaDY0X3BhcnNlX2V4dGVuc2lvbiAoY29uc3QgY2hhciAqLAorCQkJCQkJ ICAgICB1aW50NjRfdCAqLAorCQkJCQkJICAgICBzdGQ6OnN0cmluZyAqKTsKIHZvaWQgYWFyY2g2 NF9nZXRfYWxsX2V4dGVuc2lvbl9jYW5kaWRhdGVzIChhdXRvX3ZlYzxjb25zdCBjaGFyICo+ICpj YW5kaWRhdGVzKTsKIHN0ZDo6c3RyaW5nIGFhcmNoNjRfZ2V0X2V4dGVuc2lvbl9zdHJpbmdfZm9y X2lzYV9mbGFncyAodWludDY0X3QsIHVpbnQ2NF90KTsKIApkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZp Zy9hYXJjaDY0L2FhcmNoNjQuYyBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LmMKaW5kZXgg Njk5YzEwNWE0MmE2MTNjMDZjNDYyZTJkZTY4Njc5NTI3OWQ4NWJjOS4uZDJlMTMyNDUyMGY4MjYw YTZhYmNlNmMxNjJlMmViMTMzZTQ0ZTdjMSAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0 L2FhcmNoNjQuYworKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5jCkBAIC03OSw2ICs3 OSw4IEBACiAjaW5jbHVkZSAidHJlZS1zc2EtbG9vcC1uaXRlci5oIgogI2luY2x1ZGUgImZyYWN0 aW9uYWwtY29zdC5oIgogI2luY2x1ZGUgInJ0bGFuYWwuaCIKKyNpbmNsdWRlICJjb25maWcvYXJt L2FhcmNoLWNvbW1vbi5oIgorI2luY2x1ZGUgImNvbmZpZy9hcm0vYWFyY2gtY29tbW9uLXByb3Rv cy5oIgogCiAvKiBUaGlzIGZpbGUgc2hvdWxkIGJlIGluY2x1ZGVkIGxhc3QuICAqLwogI2luY2x1 ZGUgInRhcmdldC1kZWYuaCIKQEAgLTMxOSwxMiArMzIxLDggQEAgYm9vbCBhYXJjaDY0X3BjcmVs YXRpdmVfbGl0ZXJhbF9sb2FkczsKIC8qIEdsb2JhbCBmbGFnIGZvciB3aGV0aGVyIGZyYW1lIHBv aW50ZXIgaXMgZW5hYmxlZC4gICovCiBib29sIGFhcmNoNjRfdXNlX2ZyYW1lX3BvaW50ZXI7CiAK LSNkZWZpbmUgQlJBTkNIX1BST1RFQ1RfU1RSX01BWCAyNTUKIGNoYXIgKmFjY2VwdGVkX2JyYW5j aF9wcm90ZWN0aW9uX3N0cmluZyA9IE5VTEw7CiAKLXN0YXRpYyBlbnVtIGFhcmNoNjRfcGFyc2Vf b3B0X3Jlc3VsdAotYWFyY2g2NF9wYXJzZV9icmFuY2hfcHJvdGVjdGlvbiAoY29uc3QgY2hhcios IGNoYXIqKik7Ci0KIC8qIFN1cHBvcnQgZm9yIGNvbW1hbmQgbGluZSBwYXJzaW5nIG9mIGJvb2xl YW4gZmxhZ3MgaW4gdGhlIHR1bmluZwogICAgc3RydWN0dXJlcy4gICovCiBzdHJ1Y3QgYWFyY2g2 NF9mbGFnX2Rlc2MKQEAgLTIwODcsNyArMjA4NSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJv Y2Vzc29yICpzZWxlY3RlZF9hcmNoOwogc3RhdGljIGNvbnN0IHN0cnVjdCBwcm9jZXNzb3IgKnNl bGVjdGVkX2NwdTsKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvY2Vzc29yICpzZWxlY3RlZF90dW5l OwogCi1lbnVtIGFhcmNoNjRfa2V5X3R5cGUgYWFyY2g2NF9yYV9zaWduX2tleSA9IEFBUkNINjRf S0VZX0E7CitlbnVtIGFhcmNoX2tleV90eXBlIGFhcmNoX3JhX3NpZ25fa2V5ID0gQUFSQ0hfS0VZ X0E7CiAKIC8qIFRoZSBjdXJyZW50IHR1bmluZyBzZXQuICAqLwogc3RydWN0IHR1bmVfcGFyYW1z IGFhcmNoNjRfdHVuZV9wYXJhbXMgPSBnZW5lcmljX3R1bmluZ3M7CkBAIC0yMTU2LDEwMCArMjE1 NCw2IEBAIGFhcmNoNjRfY2M7CiAKICNkZWZpbmUgQUFSQ0g2NF9JTlZFUlNFX0NPTkRJVElPTl9D T0RFKFgpICgoYWFyY2g2NF9jYykgKCgoaW50KSBYKSBeIDEpKQogCi1zdHJ1Y3QgYWFyY2g2NF9i cmFuY2hfcHJvdGVjdF90eXBlCi17Ci0gIC8qIFRoZSB0eXBlJ3MgbmFtZSB0aGF0IHRoZSB1c2Vy IHBhc3NlcyB0byB0aGUgYnJhbmNoLXByb3RlY3Rpb24gb3B0aW9uCi0gICAgc3RyaW5nLiAgKi8K LSAgY29uc3QgY2hhciogbmFtZTsKLSAgLyogRnVuY3Rpb24gdG8gaGFuZGxlIHRoZSBwcm90ZWN0 aW9uIHR5cGUgYW5kIHNldCBnbG9iYWwgdmFyaWFibGVzLgotICAgIEZpcnN0IGFyZ3VtZW50IGlz IHRoZSBzdHJpbmcgdG9rZW4gY29ycmVzcG9uZGluZyB3aXRoIHRoaXMgdHlwZSBhbmQgdGhlCi0g ICAgc2Vjb25kIGFyZ3VtZW50IGlzIHRoZSBuZXh0IHRva2VuIGluIHRoZSBvcHRpb24gc3RyaW5n LgotICAgIFJldHVybiB2YWx1ZXM6Ci0gICAgKiBBQVJDSDY0X1BBUlNFX09LOiBIYW5kbGluZyB3 YXMgc3VjZXNzZnVsLgotICAgICogQUFSQ0g2NF9JTlZBTElEX0FSRzogVGhlIHR5cGUgaXMgaW52 YWxpZCBpbiB0aGlzIGNvbnRleHQgYW5kIHRoZSBjYWxsZXIKLSAgICAgIHNob3VsZCBwcmludCBh biBlcnJvci4KLSAgICAqIEFBUkNINjRfSU5WQUxJRF9GRUFUVVJFOiBUaGUgdHlwZSBpcyBpbnZh bGlkIGFuZCB0aGUgaGFuZGxlciBwcmludHMgaXRzCi0gICAgICBvd24gZXJyb3IuICAqLwotICBl bnVtIGFhcmNoNjRfcGFyc2Vfb3B0X3Jlc3VsdCAoKmhhbmRsZXIpKGNoYXIqLCBjaGFyKik7Ci0g IC8qIEEgbGlzdCBvZiB0eXBlcyB0aGF0IGNhbiBmb2xsb3cgdGhpcyB0eXBlIGluIHRoZSBvcHRp b24gc3RyaW5nLiAgKi8KLSAgY29uc3QgYWFyY2g2NF9icmFuY2hfcHJvdGVjdF90eXBlKiBzdWJ0 eXBlczsKLSAgdW5zaWduZWQgaW50IG51bV9zdWJ0eXBlczsKLX07Ci0KLXN0YXRpYyBlbnVtIGFh cmNoNjRfcGFyc2Vfb3B0X3Jlc3VsdAotYWFyY2g2NF9oYW5kbGVfbm9fYnJhbmNoX3Byb3RlY3Rp b24gKGNoYXIqIHN0ciwgY2hhciogcmVzdCkKLXsKLSAgYWFyY2g2NF9yYV9zaWduX3Njb3BlID0g QUFSQ0g2NF9GVU5DVElPTl9OT05FOwotICBhYXJjaDY0X2VuYWJsZV9idGkgPSAwOwotICBpZiAo cmVzdCkKLSAgICB7Ci0gICAgICBlcnJvciAoInVuZXhwZWN0ZWQgJTwlcyU+IGFmdGVyICU8JXMl PiIsIHJlc3QsIHN0cik7Ci0gICAgICByZXR1cm4gQUFSQ0g2NF9QQVJTRV9JTlZBTElEX0ZFQVRV UkU7Ci0gICAgfQotICByZXR1cm4gQUFSQ0g2NF9QQVJTRV9PSzsKLX0KLQotc3RhdGljIGVudW0g YWFyY2g2NF9wYXJzZV9vcHRfcmVzdWx0Ci1hYXJjaDY0X2hhbmRsZV9zdGFuZGFyZF9icmFuY2hf cHJvdGVjdGlvbiAoY2hhciogc3RyLCBjaGFyKiByZXN0KQotewotICBhYXJjaDY0X3JhX3NpZ25f c2NvcGUgPSBBQVJDSDY0X0ZVTkNUSU9OX05PTl9MRUFGOwotICBhYXJjaDY0X3JhX3NpZ25fa2V5 ID0gQUFSQ0g2NF9LRVlfQTsKLSAgYWFyY2g2NF9lbmFibGVfYnRpID0gMTsKLSAgaWYgKHJlc3Qp Ci0gICAgewotICAgICAgZXJyb3IgKCJ1bmV4cGVjdGVkICU8JXMlPiBhZnRlciAlPCVzJT4iLCBy ZXN0LCBzdHIpOwotICAgICAgcmV0dXJuIEFBUkNINjRfUEFSU0VfSU5WQUxJRF9GRUFUVVJFOwot ICAgIH0KLSAgcmV0dXJuIEFBUkNINjRfUEFSU0VfT0s7Ci19Ci0KLXN0YXRpYyBlbnVtIGFhcmNo NjRfcGFyc2Vfb3B0X3Jlc3VsdAotYWFyY2g2NF9oYW5kbGVfcGFjX3JldF9wcm90ZWN0aW9uIChj aGFyKiBzdHIgQVRUUklCVVRFX1VOVVNFRCwKLQkJCQkgICAgY2hhciogcmVzdCBBVFRSSUJVVEVf VU5VU0VEKQotewotICBhYXJjaDY0X3JhX3NpZ25fc2NvcGUgPSBBQVJDSDY0X0ZVTkNUSU9OX05P Tl9MRUFGOwotICBhYXJjaDY0X3JhX3NpZ25fa2V5ID0gQUFSQ0g2NF9LRVlfQTsKLSAgcmV0dXJu IEFBUkNINjRfUEFSU0VfT0s7Ci19Ci0KLXN0YXRpYyBlbnVtIGFhcmNoNjRfcGFyc2Vfb3B0X3Jl c3VsdAotYWFyY2g2NF9oYW5kbGVfcGFjX3JldF9sZWFmIChjaGFyKiBzdHIgQVRUUklCVVRFX1VO VVNFRCwKLQkJCSAgICAgIGNoYXIqIHJlc3QgQVRUUklCVVRFX1VOVVNFRCkKLXsKLSAgYWFyY2g2 NF9yYV9zaWduX3Njb3BlID0gQUFSQ0g2NF9GVU5DVElPTl9BTEw7Ci0gIHJldHVybiBBQVJDSDY0 X1BBUlNFX09LOwotfQotCi1zdGF0aWMgZW51bSBhYXJjaDY0X3BhcnNlX29wdF9yZXN1bHQKLWFh cmNoNjRfaGFuZGxlX3BhY19yZXRfYl9rZXkgKGNoYXIqIHN0ciBBVFRSSUJVVEVfVU5VU0VELAot CQkJICAgICAgY2hhciogcmVzdCBBVFRSSUJVVEVfVU5VU0VEKQotewotICBhYXJjaDY0X3JhX3Np Z25fa2V5ID0gQUFSQ0g2NF9LRVlfQjsKLSAgcmV0dXJuIEFBUkNINjRfUEFSU0VfT0s7Ci19Ci0K LXN0YXRpYyBlbnVtIGFhcmNoNjRfcGFyc2Vfb3B0X3Jlc3VsdAotYWFyY2g2NF9oYW5kbGVfYnRp X3Byb3RlY3Rpb24gKGNoYXIqIHN0ciBBVFRSSUJVVEVfVU5VU0VELAotCQkJCSAgICBjaGFyKiBy ZXN0IEFUVFJJQlVURV9VTlVTRUQpCi17Ci0gIGFhcmNoNjRfZW5hYmxlX2J0aSA9IDE7Ci0gIHJl dHVybiBBQVJDSDY0X1BBUlNFX09LOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGFhcmNoNjRf YnJhbmNoX3Byb3RlY3RfdHlwZSBhYXJjaDY0X3BhY19yZXRfc3VidHlwZXNbXSA9IHsKLSAgeyAi bGVhZiIsIGFhcmNoNjRfaGFuZGxlX3BhY19yZXRfbGVhZiwgTlVMTCwgMCB9LAotICB7ICJiLWtl eSIsIGFhcmNoNjRfaGFuZGxlX3BhY19yZXRfYl9rZXksIE5VTEwsIDAgfSwKLSAgeyBOVUxMLCBO VUxMLCBOVUxMLCAwIH0KLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWFyY2g2NF9icmFuY2hf cHJvdGVjdF90eXBlIGFhcmNoNjRfYnJhbmNoX3Byb3RlY3RfdHlwZXNbXSA9IHsKLSAgeyAibm9u ZSIsIGFhcmNoNjRfaGFuZGxlX25vX2JyYW5jaF9wcm90ZWN0aW9uLCBOVUxMLCAwIH0sCi0gIHsg InN0YW5kYXJkIiwgYWFyY2g2NF9oYW5kbGVfc3RhbmRhcmRfYnJhbmNoX3Byb3RlY3Rpb24sIE5V TEwsIDAgfSwKLSAgeyAicGFjLXJldCIsIGFhcmNoNjRfaGFuZGxlX3BhY19yZXRfcHJvdGVjdGlv biwgYWFyY2g2NF9wYWNfcmV0X3N1YnR5cGVzLAotICAgIEFSUkFZX1NJWkUgKGFhcmNoNjRfcGFj X3JldF9zdWJ0eXBlcykgfSwKLSAgeyAiYnRpIiwgYWFyY2g2NF9oYW5kbGVfYnRpX3Byb3RlY3Rp b24sIE5VTEwsIDAgfSwKLSAgeyBOVUxMLCBOVUxMLCBOVUxMLCAwIH0KLX07CiAKIC8qIFRoZSBj b25kaXRpb24gY29kZXMgb2YgdGhlIHByb2Nlc3NvciwgYW5kIHRoZSBpbnZlcnNlIGZ1bmN0aW9u LiAgKi8KIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgYWFyY2g2NF9jb25kaXRpb25fY29kZXNb XSA9CkBAIC03NzkyLDEwICs3Njk2LDEwIEBAIGFhcmNoNjRfcmV0dXJuX2FkZHJlc3Nfc2lnbmlu Z19lbmFibGVkICh2b2lkKQogICBpZiAoY3J0bC0+Y2FsbHNfZWhfcmV0dXJuKQogICAgIHJldHVy biBmYWxzZTsKIAotICAvKiBJZiBzaWduaW5nIHNjb3BlIGlzIEFBUkNINjRfRlVOQ1RJT05fTk9O X0xFQUYsIHdlIG9ubHkgc2lnbiBhIGxlYWYgZnVuY3Rpb24KKyAgLyogSWYgc2lnbmluZyBzY29w ZSBpcyBBQVJDSF9GVU5DVElPTl9OT05fTEVBRiwgd2Ugb25seSBzaWduIGEgbGVhZiBmdW5jdGlv bgogICAgICBpZiBpdHMgTFIgaXMgcHVzaGVkIG9udG8gc3RhY2suICAqLwotICByZXR1cm4gKGFh cmNoNjRfcmFfc2lnbl9zY29wZSA9PSBBQVJDSDY0X0ZVTkNUSU9OX0FMTAotCSAgfHwgKGFhcmNo NjRfcmFfc2lnbl9zY29wZSA9PSBBQVJDSDY0X0ZVTkNUSU9OX05PTl9MRUFGCisgIHJldHVybiAo YWFyY2hfcmFfc2lnbl9zY29wZSA9PSBBQVJDSF9GVU5DVElPTl9BTEwKKwkgIHx8IChhYXJjaF9y YV9zaWduX3Njb3BlID09IEFBUkNIX0ZVTkNUSU9OX05PTl9MRUFGCiAJICAgICAgJiYga25vd25f Z2UgKGNmdW4tPm1hY2hpbmUtPmZyYW1lLnJlZ19vZmZzZXRbTFJfUkVHTlVNXSwgMCkpKTsKIH0K IApAQCAtNzgwMyw3ICs3NzA3LDcgQEAgYWFyY2g2NF9yZXR1cm5fYWRkcmVzc19zaWduaW5nX2Vu YWJsZWQgKHZvaWQpCiBib29sCiBhYXJjaDY0X2J0aV9lbmFibGVkICh2b2lkKQogewotICByZXR1 cm4gKGFhcmNoNjRfZW5hYmxlX2J0aSA9PSAxKTsKKyAgcmV0dXJuIChhYXJjaF9lbmFibGVfYnRp ID09IDEpOwogfQogCiAvKiBUaGUgY2FsbGVyIGlzIGdvaW5nIHRvIHVzZSBTVDFEIG9yIExEMUQg dG8gc2F2ZSBvciByZXN0b3JlIGFuIFNWRQpAQCAtODc5NSwxMiArODY5OSwxMiBAQCBhYXJjaDY0 X2V4cGFuZF9wcm9sb2d1ZSAodm9pZCkKICAgLyogU2lnbiByZXR1cm4gYWRkcmVzcyBmb3IgZnVu Y3Rpb25zLiAgKi8KICAgaWYgKGFhcmNoNjRfcmV0dXJuX2FkZHJlc3Nfc2lnbmluZ19lbmFibGVk ICgpKQogICAgIHsKLSAgICAgIHN3aXRjaCAoYWFyY2g2NF9yYV9zaWduX2tleSkKKyAgICAgIHN3 aXRjaCAoYWFyY2hfcmFfc2lnbl9rZXkpCiAJewotCSAgY2FzZSBBQVJDSDY0X0tFWV9BOgorCSAg Y2FzZSBBQVJDSF9LRVlfQToKIAkgICAgaW5zbiA9IGVtaXRfaW5zbiAoZ2VuX3BhY2lhc3AgKCkp OwogCSAgICBicmVhazsKLQkgIGNhc2UgQUFSQ0g2NF9LRVlfQjoKKwkgIGNhc2UgQUFSQ0hfS0VZ X0I6CiAJICAgIGluc24gPSBlbWl0X2luc24gKGdlbl9wYWNpYnNwICgpKTsKIAkgICAgYnJlYWs7 CiAJICBkZWZhdWx0OgpAQCAtOTA4NCwxMiArODk4OCwxMiBAQCBhYXJjaDY0X2V4cGFuZF9lcGls b2d1ZSAoYm9vbCBmb3Jfc2liY2FsbCkKICAgaWYgKGFhcmNoNjRfcmV0dXJuX2FkZHJlc3Nfc2ln bmluZ19lbmFibGVkICgpCiAgICAgICAmJiAoZm9yX3NpYmNhbGwgfHwgIVRBUkdFVF9BUk1WOF8z IHx8IGNydGwtPmNhbGxzX2VoX3JldHVybikpCiAgICAgewotICAgICAgc3dpdGNoIChhYXJjaDY0 X3JhX3NpZ25fa2V5KQorICAgICAgc3dpdGNoIChhYXJjaF9yYV9zaWduX2tleSkKIAl7Ci0JICBj YXNlIEFBUkNINjRfS0VZX0E6CisJICBjYXNlIEFBUkNIX0tFWV9BOgogCSAgICBpbnNuID0gZW1p dF9pbnNuIChnZW5fYXV0aWFzcCAoKSk7CiAJICAgIGJyZWFrOwotCSAgY2FzZSBBQVJDSDY0X0tF WV9COgorCSAgY2FzZSBBQVJDSF9LRVlfQjoKIAkgICAgaW5zbiA9IGVtaXRfaW5zbiAoZ2VuX2F1 dGlic3AgKCkpOwogCSAgICBicmVhazsKIAkgIGRlZmF1bHQ6CkBAIC0xNTk5NCwxMiArMTU4OTgs MTIgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZV9hYXJjaDY0X2NvZGVfbW9kZWwgKHN0cnVjdCBn Y2Nfb3B0aW9ucyAqKTsKIAogLyogUGFyc2UgdGhlIFRPX1BBUlNFIHN0cmluZyBhbmQgcHV0IHRo ZSBhcmNoaXRlY3R1cmUgc3RydWN0IHRoYXQgaXQKICAgIHNlbGVjdHMgaW50byBSRVMgYW5kIHRo ZSBhcmNoaXRlY3R1cmFsIGZlYXR1cmVzIGludG8gSVNBX0ZMQUdTLgotICAgUmV0dXJuIGFuIGFh cmNoNjRfcGFyc2Vfb3B0X3Jlc3VsdCBkZXNjcmliaW5nIHRoZSBwYXJzZSByZXN1bHQuCisgICBS ZXR1cm4gYW4gYWFyY2hfcGFyc2Vfb3B0X3Jlc3VsdCBkZXNjcmliaW5nIHRoZSBwYXJzZSByZXN1 bHQuCiAgICBJZiB0aGVyZSBpcyBhbiBlcnJvciBwYXJzaW5nLCBSRVMgYW5kIElTQV9GTEFHUyBh cmUgbGVmdCB1bmNoYW5nZWQuCiAgICBXaGVuIHRoZSBUT19QQVJTRSBzdHJpbmcgY29udGFpbnMg YW4gaW52YWxpZCBleHRlbnNpb24sCiAgICBhIGNvcHkgb2YgdGhlIHN0cmluZyBpcyBjcmVhdGVk IGFuZCBzdG9yZWQgdG8gSU5WQUxJRF9FWFRFTlNJT04uICAqLwogCi1zdGF0aWMgZW51bSBhYXJj aDY0X3BhcnNlX29wdF9yZXN1bHQKK3N0YXRpYyBlbnVtIGFhcmNoX3BhcnNlX29wdF9yZXN1bHQK IGFhcmNoNjRfcGFyc2VfYXJjaCAoY29uc3QgY2hhciAqdG9fcGFyc2UsIGNvbnN0IHN0cnVjdCBw cm9jZXNzb3IgKipyZXMsCiAJCSAgICB1aW50NjRfdCAqaXNhX2ZsYWdzLCBzdGQ6OnN0cmluZyAq aW52YWxpZF9leHRlbnNpb24pCiB7CkBAIC0xNjAxNSw3ICsxNTkxOSw3IEBAIGFhcmNoNjRfcGFy c2VfYXJjaCAoY29uc3QgY2hhciAqdG9fcGFyc2UsIGNvbnN0IHN0cnVjdCBwcm9jZXNzb3IgKipy ZXMsCiAgICAgbGVuID0gc3RybGVuICh0b19wYXJzZSk7CiAKICAgaWYgKGxlbiA9PSAwKQotICAg IHJldHVybiBBQVJDSDY0X1BBUlNFX01JU1NJTkdfQVJHOworICAgIHJldHVybiBBQVJDSF9QQVJT RV9NSVNTSU5HX0FSRzsKIAogCiAgIC8qIExvb3AgdGhyb3VnaCB0aGUgbGlzdCBvZiBzdXBwb3J0 ZWQgQVJDSGVzIHRvIGZpbmQgYSBtYXRjaC4gICovCkBAIC0xNjAyOSwzMiArMTU5MzMsMzIgQEAg YWFyY2g2NF9wYXJzZV9hcmNoIChjb25zdCBjaGFyICp0b19wYXJzZSwgY29uc3Qgc3RydWN0IHBy b2Nlc3NvciAqKnJlcywKIAkgIGlmIChleHQgIT0gTlVMTCkKIAkgICAgewogCSAgICAgIC8qIFRP X1BBUlNFIHN0cmluZyBjb250YWlucyBhdCBsZWFzdCBvbmUgZXh0ZW5zaW9uLiAgKi8KLQkgICAg ICBlbnVtIGFhcmNoNjRfcGFyc2Vfb3B0X3Jlc3VsdCBleHRfcmVzCisJICAgICAgZW51bSBhYXJj aF9wYXJzZV9vcHRfcmVzdWx0IGV4dF9yZXMKIAkJPSBhYXJjaDY0X3BhcnNlX2V4dGVuc2lvbiAo ZXh0LCAmaXNhX3RlbXAsIGludmFsaWRfZXh0ZW5zaW9uKTsKIAotCSAgICAgIGlmIChleHRfcmVz ICE9IEFBUkNINjRfUEFSU0VfT0spCisJICAgICAgaWYgKGV4dF9yZXMgIT0gQUFSQ0hfUEFSU0Vf T0spCiAJCXJldHVybiBleHRfcmVzOwogCSAgICB9CiAJICAvKiBFeHRlbnNpb24gcGFyc2luZyB3 YXMgc3VjY2Vzc2Z1bC4gIENvbmZpcm0gdGhlIHJlc3VsdAogCSAgICAgYXJjaCBhbmQgSVNBIGZs YWdzLiAgKi8KIAkgICpyZXMgPSBhcmNoOwogCSAgKmlzYV9mbGFncyA9IGlzYV90ZW1wOwotCSAg cmV0dXJuIEFBUkNINjRfUEFSU0VfT0s7CisJICByZXR1cm4gQUFSQ0hfUEFSU0VfT0s7CiAJfQog ICAgIH0KIAogICAvKiBBUkNIIG5hbWUgbm90IGZvdW5kIGluIGxpc3QuICAqLwotICByZXR1cm4g QUFSQ0g2NF9QQVJTRV9JTlZBTElEX0FSRzsKKyAgcmV0dXJuIEFBUkNIX1BBUlNFX0lOVkFMSURf QVJHOwogfQogCiAvKiBQYXJzZSB0aGUgVE9fUEFSU0Ugc3RyaW5nIGFuZCBwdXQgdGhlIHJlc3Vs dCB0dW5pbmcgaW4gUkVTIGFuZCB0aGUKLSAgIGFyY2hpdGVjdHVyZSBmbGFncyBpbiBJU0FfRkxB R1MuICBSZXR1cm4gYW4gYWFyY2g2NF9wYXJzZV9vcHRfcmVzdWx0CisgICBhcmNoaXRlY3R1cmUg ZmxhZ3MgaW4gSVNBX0ZMQUdTLiAgUmV0dXJuIGFuIGFhcmNoX3BhcnNlX29wdF9yZXN1bHQKICAg IGRlc2NyaWJpbmcgdGhlIHBhcnNlIHJlc3VsdC4gIElmIHRoZXJlIGlzIGFuIGVycm9yIHBhcnNp bmcsIFJFUyBhbmQKICAgIElTQV9GTEFHUyBhcmUgbGVmdCB1bmNoYW5nZWQuCiAgICBXaGVuIHRo ZSBUT19QQVJTRSBzdHJpbmcgY29udGFpbnMgYW4gaW52YWxpZCBleHRlbnNpb24sCiAgICBhIGNv cHkgb2YgdGhlIHN0cmluZyBpcyBjcmVhdGVkIGFuZCBzdG9yZWQgdG8gSU5WQUxJRF9FWFRFTlNJ T04uICAqLwogCi1zdGF0aWMgZW51bSBhYXJjaDY0X3BhcnNlX29wdF9yZXN1bHQKK3N0YXRpYyBl bnVtIGFhcmNoX3BhcnNlX29wdF9yZXN1bHQKIGFhcmNoNjRfcGFyc2VfY3B1IChjb25zdCBjaGFy ICp0b19wYXJzZSwgY29uc3Qgc3RydWN0IHByb2Nlc3NvciAqKnJlcywKIAkJICAgdWludDY0X3Qg KmlzYV9mbGFncywgc3RkOjpzdHJpbmcgKmludmFsaWRfZXh0ZW5zaW9uKQogewpAQCAtMTYwNzAs NyArMTU5NzQsNyBAQCBhYXJjaDY0X3BhcnNlX2NwdSAoY29uc3QgY2hhciAqdG9fcGFyc2UsIGNv bnN0IHN0cnVjdCBwcm9jZXNzb3IgKipyZXMsCiAgICAgbGVuID0gc3RybGVuICh0b19wYXJzZSk7 CiAKICAgaWYgKGxlbiA9PSAwKQotICAgIHJldHVybiBBQVJDSDY0X1BBUlNFX01JU1NJTkdfQVJH OworICAgIHJldHVybiBBQVJDSF9QQVJTRV9NSVNTSU5HX0FSRzsKIAogCiAgIC8qIExvb3AgdGhy b3VnaCB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgQ1BVcyB0byBmaW5kIGEgbWF0Y2guICAqLwpAQCAt MTYwODQsMjkgKzE1OTg4LDI5IEBAIGFhcmNoNjRfcGFyc2VfY3B1IChjb25zdCBjaGFyICp0b19w YXJzZSwgY29uc3Qgc3RydWN0IHByb2Nlc3NvciAqKnJlcywKIAkgIGlmIChleHQgIT0gTlVMTCkK IAkgICAgewogCSAgICAgIC8qIFRPX1BBUlNFIHN0cmluZyBjb250YWlucyBhdCBsZWFzdCBvbmUg ZXh0ZW5zaW9uLiAgKi8KLQkgICAgICBlbnVtIGFhcmNoNjRfcGFyc2Vfb3B0X3Jlc3VsdCBleHRf cmVzCisJICAgICAgZW51bSBhYXJjaF9wYXJzZV9vcHRfcmVzdWx0IGV4dF9yZXMKIAkJPSBhYXJj aDY0X3BhcnNlX2V4dGVuc2lvbiAoZXh0LCAmaXNhX3RlbXAsIGludmFsaWRfZXh0ZW5zaW9uKTsK IAotCSAgICAgIGlmIChleHRfcmVzICE9IEFBUkNINjRfUEFSU0VfT0spCisJICAgICAgaWYgKGV4 dF9yZXMgIT0gQUFSQ0hfUEFSU0VfT0spCiAJCXJldHVybiBleHRfcmVzOwogCSAgICB9CiAJICAv KiBFeHRlbnNpb24gcGFyc2luZyB3YXMgc3VjY2Vzc2Z1bGwuICBDb25maXJtIHRoZSByZXN1bHQK IAkgICAgIGNwdSBhbmQgSVNBIGZsYWdzLiAgKi8KIAkgICpyZXMgPSBjcHU7CiAJICAqaXNhX2Zs YWdzID0gaXNhX3RlbXA7Ci0JICByZXR1cm4gQUFSQ0g2NF9QQVJTRV9PSzsKKwkgIHJldHVybiBB QVJDSF9QQVJTRV9PSzsKIAl9CiAgICAgfQogCiAgIC8qIENQVSBuYW1lIG5vdCBmb3VuZCBpbiBs aXN0LiAgKi8KLSAgcmV0dXJuIEFBUkNINjRfUEFSU0VfSU5WQUxJRF9BUkc7CisgIHJldHVybiBB QVJDSF9QQVJTRV9JTlZBTElEX0FSRzsKIH0KIAogLyogUGFyc2UgdGhlIFRPX1BBUlNFIHN0cmlu ZyBhbmQgcHV0IHRoZSBjcHUgaXQgc2VsZWN0cyBpbnRvIFJFUy4KLSAgIFJldHVybiBhbiBhYXJj aDY0X3BhcnNlX29wdF9yZXN1bHQgZGVzY3JpYmluZyB0aGUgcGFyc2UgcmVzdWx0LgorICAgUmV0 dXJuIGFuIGFhcmNoX3BhcnNlX29wdF9yZXN1bHQgZGVzY3JpYmluZyB0aGUgcGFyc2UgcmVzdWx0 LgogICAgSWYgdGhlIHBhcnNpbmcgZmFpbHMgdGhlIFJFUyBkb2VzIG5vdCBjaGFuZ2UuICAqLwog Ci1zdGF0aWMgZW51bSBhYXJjaDY0X3BhcnNlX29wdF9yZXN1bHQKK3N0YXRpYyBlbnVtIGFhcmNo X3BhcnNlX29wdF9yZXN1bHQKIGFhcmNoNjRfcGFyc2VfdHVuZSAoY29uc3QgY2hhciAqdG9fcGFy c2UsIGNvbnN0IHN0cnVjdCBwcm9jZXNzb3IgKipyZXMpCiB7CiAgIGNvbnN0IHN0cnVjdCBwcm9j ZXNzb3IgKmNwdTsKQEAgLTE2MTE3LDEyICsxNjAyMSwxMiBAQCBhYXJjaDY0X3BhcnNlX3R1bmUg KGNvbnN0IGNoYXIgKnRvX3BhcnNlLCBjb25zdCBzdHJ1Y3QgcHJvY2Vzc29yICoqcmVzKQogICAg ICAgaWYgKHN0cmNtcCAoY3B1LT5uYW1lLCB0b19wYXJzZSkgPT0gMCkKIAl7CiAJICAqcmVzID0g Y3B1OwotCSAgcmV0dXJuIEFBUkNINjRfUEFSU0VfT0s7CisJICByZXR1cm4gQUFSQ0hfUEFSU0Vf T0s7CiAJfQogICAgIH0KIAogICAvKiBDUFUgbmFtZSBub3QgZm91bmQgaW4gbGlzdC4gICovCi0g IHJldHVybiBBQVJDSDY0X1BBUlNFX0lOVkFMSURfQVJHOworICByZXR1cm4gQUFSQ0hfUEFSU0Vf SU5WQUxJRF9BUkc7CiB9CiAKIC8qIFBhcnNlIFRPS0VOLCB3aGljaCBoYXMgbGVuZ3RoIExFTkdU SCB0byBzZWUgaWYgaXQgaXMgYW4gb3B0aW9uCkBAIC0xNjY5NiwyMiArMTY2MDAsMjIgQEAgYWFy Y2g2NF92YWxpZGF0ZV9tY3B1IChjb25zdCBjaGFyICpzdHIsIGNvbnN0IHN0cnVjdCBwcm9jZXNz b3IgKipyZXMsCiAJCSAgICAgICB1aW50NjRfdCAqaXNhX2ZsYWdzKQogewogICBzdGQ6OnN0cmlu ZyBpbnZhbGlkX2V4dGVuc2lvbjsKLSAgZW51bSBhYXJjaDY0X3BhcnNlX29wdF9yZXN1bHQgcGFy c2VfcmVzCisgIGVudW0gYWFyY2hfcGFyc2Vfb3B0X3Jlc3VsdCBwYXJzZV9yZXMKICAgICA9IGFh cmNoNjRfcGFyc2VfY3B1IChzdHIsIHJlcywgaXNhX2ZsYWdzLCAmaW52YWxpZF9leHRlbnNpb24p OwogCi0gIGlmIChwYXJzZV9yZXMgPT0gQUFSQ0g2NF9QQVJTRV9PSykKKyAgaWYgKHBhcnNlX3Jl cyA9PSBBQVJDSF9QQVJTRV9PSykKICAgICByZXR1cm4gdHJ1ZTsKIAogICBzd2l0Y2ggKHBhcnNl X3JlcykKICAgICB7Ci0gICAgICBjYXNlIEFBUkNINjRfUEFSU0VfTUlTU0lOR19BUkc6CisgICAg ICBjYXNlIEFBUkNIX1BBUlNFX01JU1NJTkdfQVJHOgogCWVycm9yICgibWlzc2luZyBjcHUgbmFt ZSBpbiAlPC1tY3B1PSVzJT4iLCBzdHIpOwogCWJyZWFrOwotICAgICAgY2FzZSBBQVJDSDY0X1BB UlNFX0lOVkFMSURfQVJHOgorICAgICAgY2FzZSBBQVJDSF9QQVJTRV9JTlZBTElEX0FSRzoKIAll cnJvciAoInVua25vd24gdmFsdWUgJXFzIGZvciAlPC1tY3B1JT4iLCBzdHIpOwogCWFhcmNoNjRf cHJpbnRfaGludF9mb3JfY29yZSAoc3RyKTsKIAlicmVhazsKLSAgICAgIGNhc2UgQUFSQ0g2NF9Q QVJTRV9JTlZBTElEX0ZFQVRVUkU6CisgICAgICBjYXNlIEFBUkNIX1BBUlNFX0lOVkFMSURfRkVB VFVSRToKIAllcnJvciAoImludmFsaWQgZmVhdHVyZSBtb2RpZmllciAlcXMgaW4gJTwtbWNwdT0l cyU+IiwKIAkgICAgICAgaW52YWxpZF9leHRlbnNpb24uY19zdHIgKCksIHN0cik7CiAJYWFyY2g2 NF9wcmludF9oaW50X2Zvcl9leHRlbnNpb25zIChpbnZhbGlkX2V4dGVuc2lvbik7CkBAIC0xNjc5 NiwxMTAgKzE2NzAwLDYgQEAgYWFyY2g2NF92YWxpZGF0ZV9zbHNfbWl0aWdhdGlvbiAoY29uc3Qg Y2hhciAqY29uc3Rfc3RyKQogICBmcmVlIChzdHJfcm9vdCk7CiB9CiAKLS8qIFBhcnNlcyBDT05T VF9TVFIgZm9yIGJyYW5jaCBwcm90ZWN0aW9uIGZlYXR1cmVzIHNwZWNpZmllZCBpbgotICAgYWFy Y2g2NF9icmFuY2hfcHJvdGVjdF90eXBlcywgYW5kIHNldCBhbnkgZ2xvYmFsIHZhcmlhYmxlcyBy ZXF1aXJlZC4gIFJldHVybnMKLSAgIHRoZSBwYXJzaW5nIHJlc3VsdCBhbmQgYXNzaWducyBMQVNU X1NUUiB0byB0aGUgbGFzdCBwcm9jZXNzZWQgdG9rZW4gZnJvbQotICAgQ09OU1RfU1RSIHNvIHRo YXQgaXQgY2FuIGJlIHVzZWQgZm9yIGVycm9yIHJlcG9ydGluZy4gICovCi0KLXN0YXRpYyBlbnVt Ci1hYXJjaDY0X3BhcnNlX29wdF9yZXN1bHQgYWFyY2g2NF9wYXJzZV9icmFuY2hfcHJvdGVjdGlv biAoY29uc3QgY2hhciAqY29uc3Rfc3RyLAotCQkJCQkJCSAgY2hhcioqIGxhc3Rfc3RyKQotewot ICBjaGFyICpzdHJfcm9vdCA9IHhzdHJkdXAgKGNvbnN0X3N0cik7Ci0gIGNoYXIqIHRva2VuX3Nh dmUgPSBOVUxMOwotICBjaGFyICpzdHIgPSBzdHJ0b2tfciAoc3RyX3Jvb3QsICIrIiwgJnRva2Vu X3NhdmUpOwotICBlbnVtIGFhcmNoNjRfcGFyc2Vfb3B0X3Jlc3VsdCByZXMgPSBBQVJDSDY0X1BB UlNFX09LOwotICBpZiAoIXN0cikKLSAgICByZXMgPSBBQVJDSDY0X1BBUlNFX01JU1NJTkdfQVJH OwotICBlbHNlCi0gICAgewotICAgICAgY2hhciAqbmV4dF9zdHIgPSBzdHJ0b2tfciAoTlVMTCwg IisiLCAmdG9rZW5fc2F2ZSk7Ci0gICAgICAvKiBSZXNldCB0aGUgYnJhbmNoIHByb3RlY3Rpb24g ZmVhdHVyZXMgdG8gdGhlaXIgZGVmYXVsdHMuICAqLwotICAgICAgYWFyY2g2NF9oYW5kbGVfbm9f YnJhbmNoX3Byb3RlY3Rpb24gKE5VTEwsIE5VTEwpOwotCi0gICAgICB3aGlsZSAoc3RyICYmIHJl cyA9PSBBQVJDSDY0X1BBUlNFX09LKQotCXsKLQkgIGNvbnN0IGFhcmNoNjRfYnJhbmNoX3Byb3Rl Y3RfdHlwZSogdHlwZSA9IGFhcmNoNjRfYnJhbmNoX3Byb3RlY3RfdHlwZXM7Ci0JICBib29sIGZv dW5kID0gZmFsc2U7Ci0JICAvKiBTZWFyY2ggZm9yIHRoaXMgdHlwZS4gICovCi0JICB3aGlsZSAo dHlwZSAmJiB0eXBlLT5uYW1lICYmICFmb3VuZCAmJiByZXMgPT0gQUFSQ0g2NF9QQVJTRV9PSykK LQkgICAgewotCSAgICAgIGlmIChzdHJjbXAgKHN0ciwgdHlwZS0+bmFtZSkgPT0gMCkKLQkJewot CQkgIGZvdW5kID0gdHJ1ZTsKLQkJICByZXMgPSB0eXBlLT5oYW5kbGVyIChzdHIsIG5leHRfc3Ry KTsKLQkJICBzdHIgPSBuZXh0X3N0cjsKLQkJICBuZXh0X3N0ciA9IHN0cnRva19yIChOVUxMLCAi KyIsICZ0b2tlbl9zYXZlKTsKLQkJfQotCSAgICAgIGVsc2UKLQkJdHlwZSsrOwotCSAgICB9Ci0J ICBpZiAoZm91bmQgJiYgcmVzID09IEFBUkNINjRfUEFSU0VfT0spCi0JICAgIHsKLQkgICAgICBi b29sIGZvdW5kX3N1YnR5cGUgPSB0cnVlOwotCSAgICAgIC8qIExvb3AgdGhyb3VnaCBlYWNoIHRv a2VuIHVudGlsIHdlIGZpbmQgb25lIHRoYXQgaXNuJ3QgYQotCQkgc3VidHlwZS4gICovCi0JICAg ICAgd2hpbGUgKGZvdW5kX3N1YnR5cGUpCi0JCXsKLQkJICBmb3VuZF9zdWJ0eXBlID0gZmFsc2U7 Ci0JCSAgY29uc3QgYWFyY2g2NF9icmFuY2hfcHJvdGVjdF90eXBlICpzdWJ0eXBlID0gdHlwZS0+ c3VidHlwZXM7Ci0JCSAgLyogU2VhcmNoIGZvciB0aGUgc3VidHlwZS4gICovCi0JCSAgd2hpbGUg KHN0ciAmJiBzdWJ0eXBlICYmIHN1YnR5cGUtPm5hbWUgJiYgIWZvdW5kX3N1YnR5cGUKLQkJCSAg JiYgcmVzID09IEFBUkNINjRfUEFSU0VfT0spCi0JCSAgICB7Ci0JCSAgICAgIGlmIChzdHJjbXAg KHN0ciwgc3VidHlwZS0+bmFtZSkgPT0gMCkKLQkJCXsKLQkJCSAgZm91bmRfc3VidHlwZSA9IHRy dWU7Ci0JCQkgIHJlcyA9IHN1YnR5cGUtPmhhbmRsZXIgKHN0ciwgbmV4dF9zdHIpOwotCQkJICBz dHIgPSBuZXh0X3N0cjsKLQkJCSAgbmV4dF9zdHIgPSBzdHJ0b2tfciAoTlVMTCwgIisiLCAmdG9r ZW5fc2F2ZSk7Ci0JCQl9Ci0JCSAgICAgIGVsc2UKLQkJCXN1YnR5cGUrKzsKLQkJICAgIH0KLQkJ fQotCSAgICB9Ci0JICBlbHNlIGlmICghZm91bmQpCi0JICAgIHJlcyA9IEFBUkNINjRfUEFSU0Vf SU5WQUxJRF9BUkc7Ci0JfQotICAgIH0KLSAgLyogQ29weSB0aGUgbGFzdCBwcm9jZXNzZWQgdG9r ZW4gaW50byB0aGUgYXJndW1lbnQgdG8gcGFzcyBpdCBiYWNrLgotICAgIFVzZWQgYnkgb3B0aW9u IGFuZCBhdHRyaWJ1dGUgdmFsaWRhdGlvbiB0byBwcmludCB0aGUgb2ZmZW5kaW5nIHRva2VuLiAg Ki8KLSAgaWYgKGxhc3Rfc3RyKQotICAgIHsKLSAgICAgIGlmIChzdHIpIHN0cmNweSAoKmxhc3Rf c3RyLCBzdHIpOwotICAgICAgZWxzZSAqbGFzdF9zdHIgPSBOVUxMOwotICAgIH0KLSAgaWYgKHJl cyA9PSBBQVJDSDY0X1BBUlNFX09LKQotICAgIHsKLSAgICAgIC8qIElmIG5lZWRlZCwgYWxsb2Mg dGhlIGFjY2VwdGVkIHN0cmluZyB0aGVuIGNvcHkgaW4gY29uc3Rfc3RyLgotCVVzZWQgYnkgb3Zl cnJpZGVfb3B0aW9uX2FmdGVyX2NoYW5nZV8xLiAgKi8KLSAgICAgIGlmICghYWNjZXB0ZWRfYnJh bmNoX3Byb3RlY3Rpb25fc3RyaW5nKQotCWFjY2VwdGVkX2JyYW5jaF9wcm90ZWN0aW9uX3N0cmlu ZyA9IChjaGFyICopIHhtYWxsb2MgKAotCQkJCQkJICAgICAgQlJBTkNIX1BST1RFQ1RfU1RSX01B WAotCQkJCQkJCSsgMSk7Ci0gICAgICBzdHJuY3B5IChhY2NlcHRlZF9icmFuY2hfcHJvdGVjdGlv bl9zdHJpbmcsIGNvbnN0X3N0ciwKLQkJQlJBTkNIX1BST1RFQ1RfU1RSX01BWCArIDEpOwotICAg ICAgLyogRm9yY2libHkgbnVsbC10ZXJtaW5hdGUuICAqLwotICAgICAgYWNjZXB0ZWRfYnJhbmNo X3Byb3RlY3Rpb25fc3RyaW5nW0JSQU5DSF9QUk9URUNUX1NUUl9NQVhdID0gJ1wwJzsKLSAgICB9 Ci0gIHJldHVybiByZXM7Ci19Ci0KLXN0YXRpYyBib29sCi1hYXJjaDY0X3ZhbGlkYXRlX21icmFu Y2hfcHJvdGVjdGlvbiAoY29uc3QgY2hhciAqY29uc3Rfc3RyKQotewotICBjaGFyICpzdHIgPSAo Y2hhciAqKSB4bWFsbG9jIChzdHJsZW4gKGNvbnN0X3N0cikpOwotICBlbnVtIGFhcmNoNjRfcGFy c2Vfb3B0X3Jlc3VsdCByZXMgPQotICAgIGFhcmNoNjRfcGFyc2VfYnJhbmNoX3Byb3RlY3Rpb24g KGNvbnN0X3N0ciwgJnN0cik7Ci0gIGlmIChyZXMgPT0gQUFSQ0g2NF9QQVJTRV9JTlZBTElEX0FS RykKLSAgICBlcnJvciAoImludmFsaWQgYXJndW1lbnQgJTwlcyU+IGZvciAlPC1tYnJhbmNoLXBy b3RlY3Rpb249JT4iLCBzdHIpOwotICBlbHNlIGlmIChyZXMgPT0gQUFSQ0g2NF9QQVJTRV9NSVNT SU5HX0FSRykKLSAgICBlcnJvciAoIm1pc3NpbmcgYXJndW1lbnQgZm9yICU8LW1icmFuY2gtcHJv dGVjdGlvbj0lPiIpOwotICBmcmVlIChzdHIpOwotICByZXR1cm4gcmVzID09IEFBUkNINjRfUEFS U0VfT0s7Ci19Ci0KIC8qIFZhbGlkYXRlIGEgY29tbWFuZC1saW5lIC1tYXJjaCBvcHRpb24uICBQ YXJzZSB0aGUgYXJjaCBhbmQgZXh0ZW5zaW9ucwogICAgKGlmIGFueSkgc3BlY2lmaWVkIGluIFNU UiBhbmQgdGhyb3cgZXJyb3JzIGlmIGFwcHJvcHJpYXRlLiAgUHV0IHRoZQogICAgcmVzdWx0cywg aWYgdGhleSBhcmUgdmFsaWQsIGluIFJFUyBhbmQgSVNBX0ZMQUdTLiAgUmV0dXJuIHdoZXRoZXIg dGhlCkBAIC0xNjkxMCwyMiArMTY3MTAsMjIgQEAgYWFyY2g2NF92YWxpZGF0ZV9tYXJjaCAoY29u c3QgY2hhciAqc3RyLCBjb25zdCBzdHJ1Y3QgcHJvY2Vzc29yICoqcmVzLAogCQkJIHVpbnQ2NF90 ICppc2FfZmxhZ3MpCiB7CiAgIHN0ZDo6c3RyaW5nIGludmFsaWRfZXh0ZW5zaW9uOwotICBlbnVt IGFhcmNoNjRfcGFyc2Vfb3B0X3Jlc3VsdCBwYXJzZV9yZXMKKyAgZW51bSBhYXJjaF9wYXJzZV9v cHRfcmVzdWx0IHBhcnNlX3JlcwogICAgID0gYWFyY2g2NF9wYXJzZV9hcmNoIChzdHIsIHJlcywg aXNhX2ZsYWdzLCAmaW52YWxpZF9leHRlbnNpb24pOwogCi0gIGlmIChwYXJzZV9yZXMgPT0gQUFS Q0g2NF9QQVJTRV9PSykKKyAgaWYgKHBhcnNlX3JlcyA9PSBBQVJDSF9QQVJTRV9PSykKICAgICBy ZXR1cm4gdHJ1ZTsKIAogICBzd2l0Y2ggKHBhcnNlX3JlcykKICAgICB7Ci0gICAgICBjYXNlIEFB UkNINjRfUEFSU0VfTUlTU0lOR19BUkc6CisgICAgICBjYXNlIEFBUkNIX1BBUlNFX01JU1NJTkdf QVJHOgogCWVycm9yICgibWlzc2luZyBhcmNoIG5hbWUgaW4gJTwtbWFyY2g9JXMlPiIsIHN0cik7 CiAJYnJlYWs7Ci0gICAgICBjYXNlIEFBUkNINjRfUEFSU0VfSU5WQUxJRF9BUkc6CisgICAgICBj YXNlIEFBUkNIX1BBUlNFX0lOVkFMSURfQVJHOgogCWVycm9yICgidW5rbm93biB2YWx1ZSAlcXMg Zm9yICU8LW1hcmNoJT4iLCBzdHIpOwogCWFhcmNoNjRfcHJpbnRfaGludF9mb3JfYXJjaCAoc3Ry KTsKIAlicmVhazsKLSAgICAgIGNhc2UgQUFSQ0g2NF9QQVJTRV9JTlZBTElEX0ZFQVRVUkU6Cisg ICAgICBjYXNlIEFBUkNIX1BBUlNFX0lOVkFMSURfRkVBVFVSRToKIAllcnJvciAoImludmFsaWQg ZmVhdHVyZSBtb2RpZmllciAlcXMgaW4gJTwtbWFyY2g9JXMlPiIsCiAJICAgICAgIGludmFsaWRf ZXh0ZW5zaW9uLmNfc3RyICgpLCBzdHIpOwogCWFhcmNoNjRfcHJpbnRfaGludF9mb3JfZXh0ZW5z aW9ucyAoaW52YWxpZF9leHRlbnNpb24pOwpAQCAtMTY5NDUsMTggKzE2NzQ1LDE4IEBAIGFhcmNo NjRfdmFsaWRhdGVfbWFyY2ggKGNvbnN0IGNoYXIgKnN0ciwgY29uc3Qgc3RydWN0IHByb2Nlc3Nv ciAqKnJlcywKIHN0YXRpYyBib29sCiBhYXJjaDY0X3ZhbGlkYXRlX210dW5lIChjb25zdCBjaGFy ICpzdHIsIGNvbnN0IHN0cnVjdCBwcm9jZXNzb3IgKipyZXMpCiB7Ci0gIGVudW0gYWFyY2g2NF9w YXJzZV9vcHRfcmVzdWx0IHBhcnNlX3JlcworICBlbnVtIGFhcmNoX3BhcnNlX29wdF9yZXN1bHQg cGFyc2VfcmVzCiAgICAgPSBhYXJjaDY0X3BhcnNlX3R1bmUgKHN0ciwgcmVzKTsKIAotICBpZiAo cGFyc2VfcmVzID09IEFBUkNINjRfUEFSU0VfT0spCisgIGlmIChwYXJzZV9yZXMgPT0gQUFSQ0hf UEFSU0VfT0spCiAgICAgcmV0dXJuIHRydWU7CiAKICAgc3dpdGNoIChwYXJzZV9yZXMpCiAgICAg ewotICAgICAgY2FzZSBBQVJDSDY0X1BBUlNFX01JU1NJTkdfQVJHOgorICAgICAgY2FzZSBBQVJD SF9QQVJTRV9NSVNTSU5HX0FSRzoKIAllcnJvciAoIm1pc3NpbmcgY3B1IG5hbWUgaW4gJTwtbXR1 bmU9JXMlPiIsIHN0cik7CiAJYnJlYWs7Ci0gICAgICBjYXNlIEFBUkNINjRfUEFSU0VfSU5WQUxJ RF9BUkc6CisgICAgICBjYXNlIEFBUkNIX1BBUlNFX0lOVkFMSURfQVJHOgogCWVycm9yICgidW5r bm93biB2YWx1ZSAlcXMgZm9yICU8LW10dW5lJT4iLCBzdHIpOwogCWFhcmNoNjRfcHJpbnRfaGlu dF9mb3JfY29yZSAoc3RyKTsKIAlicmVhazsKQEAgLTE3MDQ0LDcgKzE2ODQ0LDcgQEAgYWFyY2g2 NF9vdmVycmlkZV9vcHRpb25zICh2b2lkKQogICAgIGFhcmNoNjRfdmFsaWRhdGVfc2xzX21pdGln YXRpb24gKGFhcmNoNjRfaGFyZGVuX3Nsc19zdHJpbmcpOwogCiAgIGlmIChhYXJjaDY0X2JyYW5j aF9wcm90ZWN0aW9uX3N0cmluZykKLSAgICBhYXJjaDY0X3ZhbGlkYXRlX21icmFuY2hfcHJvdGVj dGlvbiAoYWFyY2g2NF9icmFuY2hfcHJvdGVjdGlvbl9zdHJpbmcpOworICAgIGFhcmNoX3ZhbGlk YXRlX21icmFuY2hfcHJvdGVjdGlvbiAoYWFyY2g2NF9icmFuY2hfcHJvdGVjdGlvbl9zdHJpbmcp OwogCiAgIC8qIC1tY3B1PUNQVSBpcyBzaG9ydGhhbmQgZm9yIC1tYXJjaD1BUkNIX0ZPUl9DUFUs IC1tdHVuZT1DUFUuCiAgICAgIElmIGVpdGhlciBvZiAtbWFyY2ggb3IgLW10dW5lIGlzIGdpdmVu LCB0aGV5IG92ZXJyaWRlIHRoZWlyCkBAIC0xNzEyMiwxMiArMTY5MjIsMTIgQEAgYWFyY2g2NF9v dmVycmlkZV9vcHRpb25zICh2b2lkKQogICBpZiAoIXNlbGVjdGVkX3R1bmUpCiAgICAgc2VsZWN0 ZWRfdHVuZSA9IHNlbGVjdGVkX2NwdTsKIAotICBpZiAoYWFyY2g2NF9lbmFibGVfYnRpID09IDIp CisgIGlmIChhYXJjaF9lbmFibGVfYnRpID09IDIpCiAgICAgewogI2lmZGVmIFRBUkdFVF9FTkFC TEVfQlRJCi0gICAgICBhYXJjaDY0X2VuYWJsZV9idGkgPSAxOworICAgICAgYWFyY2hfZW5hYmxl X2J0aSA9IDE7CiAjZWxzZQotICAgICAgYWFyY2g2NF9lbmFibGVfYnRpID0gMDsKKyAgICAgIGFh cmNoX2VuYWJsZV9idGkgPSAwOwogI2VuZGlmCiAgICAgfQogCkBAIC0xNzEzNyw5ICsxNjkzNyw5 IEBAIGFhcmNoNjRfb3ZlcnJpZGVfb3B0aW9ucyAodm9pZCkKICAgaWYgKCFUQVJHRVRfSUxQMzIg JiYgYWNjZXB0ZWRfYnJhbmNoX3Byb3RlY3Rpb25fc3RyaW5nID09IE5VTEwpCiAgICAgewogI2lm ZGVmIFRBUkdFVF9FTkFCTEVfUEFDX1JFVAotICAgICAgYWFyY2g2NF9yYV9zaWduX3Njb3BlID0g QUFSQ0g2NF9GVU5DVElPTl9OT05fTEVBRjsKKyAgICAgIGFhcmNoX3JhX3NpZ25fc2NvcGUgPSBB QVJDSF9GVU5DVElPTl9OT05fTEVBRjsKICNlbHNlCi0gICAgICBhYXJjaDY0X3JhX3NpZ25fc2Nv cGUgPSBBQVJDSDY0X0ZVTkNUSU9OX05PTkU7CisgICAgICBhYXJjaF9yYV9zaWduX3Njb3BlID0g QUFSQ0hfRlVOQ1RJT05fTk9ORTsKICNlbmRpZgogICAgIH0KIApAQCAtMTcxNTMsNyArMTY5NTMs NyBAQCBhYXJjaDY0X292ZXJyaWRlX29wdGlvbnMgKHZvaWQpCiAgIC8qIENvbnZlcnQgLW1zdmUt dmVjdG9yLWJpdHMgdG8gYSBWRyBjb3VudC4gICovCiAgIGFhcmNoNjRfc3ZlX3ZnID0gYWFyY2g2 NF9jb252ZXJ0X3N2ZV92ZWN0b3JfYml0cyAoYWFyY2g2NF9zdmVfdmVjdG9yX2JpdHMpOwogCi0g IGlmIChhYXJjaDY0X3JhX3NpZ25fc2NvcGUgIT0gQUFSQ0g2NF9GVU5DVElPTl9OT05FICYmIFRB UkdFVF9JTFAzMikKKyAgaWYgKGFhcmNoX3JhX3NpZ25fc2NvcGUgIT0gQUFSQ0hfRlVOQ1RJT05f Tk9ORSAmJiBUQVJHRVRfSUxQMzIpCiAgICAgc29ycnkgKCJyZXR1cm4gYWRkcmVzcyBzaWduaW5n IGlzIG9ubHkgc3VwcG9ydGVkIGZvciAlPC1tYWJpPWxwNjQlPiIpOwogCiAgIC8qIE1ha2Ugc3Vy ZSB3ZSBwcm9wZXJseSBzZXQgdXAgdGhlIGV4cGxpY2l0IG9wdGlvbnMuICAqLwpAQCAtMTcyODAs NyArMTcwODAsNyBAQCBhYXJjaDY0X29wdGlvbl9yZXN0b3JlIChzdHJ1Y3QgZ2NjX29wdGlvbnMg Km9wdHMsCiAgICAgPSBwdHItPnhfYWFyY2g2NF9icmFuY2hfcHJvdGVjdGlvbl9zdHJpbmc7CiAg IGlmIChvcHRzLT54X2FhcmNoNjRfYnJhbmNoX3Byb3RlY3Rpb25fc3RyaW5nKQogICAgIHsKLSAg ICAgIGFhcmNoNjRfcGFyc2VfYnJhbmNoX3Byb3RlY3Rpb24gKG9wdHMtPnhfYWFyY2g2NF9icmFu Y2hfcHJvdGVjdGlvbl9zdHJpbmcsCisgICAgICBhYXJjaF9wYXJzZV9icmFuY2hfcHJvdGVjdGlv biAob3B0cy0+eF9hYXJjaDY0X2JyYW5jaF9wcm90ZWN0aW9uX3N0cmluZywKIAkJCQkJTlVMTCk7 CiAgICAgfQogCkBAIC0xNzQwNCwxMCArMTcyMDQsMTAgQEAgYWFyY2g2NF9oYW5kbGVfYXR0cl9h cmNoIChjb25zdCBjaGFyICpzdHIpCiB7CiAgIGNvbnN0IHN0cnVjdCBwcm9jZXNzb3IgKnRtcF9h cmNoID0gTlVMTDsKICAgc3RkOjpzdHJpbmcgaW52YWxpZF9leHRlbnNpb247Ci0gIGVudW0gYWFy Y2g2NF9wYXJzZV9vcHRfcmVzdWx0IHBhcnNlX3JlcworICBlbnVtIGFhcmNoX3BhcnNlX29wdF9y ZXN1bHQgcGFyc2VfcmVzCiAgICAgPSBhYXJjaDY0X3BhcnNlX2FyY2ggKHN0ciwgJnRtcF9hcmNo LCAmYWFyY2g2NF9pc2FfZmxhZ3MsICZpbnZhbGlkX2V4dGVuc2lvbik7CiAKLSAgaWYgKHBhcnNl X3JlcyA9PSBBQVJDSDY0X1BBUlNFX09LKQorICBpZiAocGFyc2VfcmVzID09IEFBUkNIX1BBUlNF X09LKQogICAgIHsKICAgICAgIGdjY19hc3NlcnQgKHRtcF9hcmNoKTsKICAgICAgIHNlbGVjdGVk X2FyY2ggPSB0bXBfYXJjaDsKQEAgLTE3NDE3LDE0ICsxNzIxNywxNCBAQCBhYXJjaDY0X2hhbmRs ZV9hdHRyX2FyY2ggKGNvbnN0IGNoYXIgKnN0cikKIAogICBzd2l0Y2ggKHBhcnNlX3JlcykKICAg ICB7Ci0gICAgICBjYXNlIEFBUkNINjRfUEFSU0VfTUlTU0lOR19BUkc6CisgICAgICBjYXNlIEFB UkNIX1BBUlNFX01JU1NJTkdfQVJHOgogCWVycm9yICgibWlzc2luZyBuYW1lIGluICU8dGFyZ2V0 KFwiYXJjaD1cIiklPiBwcmFnbWEgb3IgYXR0cmlidXRlIik7CiAJYnJlYWs7Ci0gICAgICBjYXNl IEFBUkNINjRfUEFSU0VfSU5WQUxJRF9BUkc6CisgICAgICBjYXNlIEFBUkNIX1BBUlNFX0lOVkFM SURfQVJHOgogCWVycm9yICgiaW52YWxpZCBuYW1lIChcIiVzXCIpIGluICU8dGFyZ2V0KFwiYXJj aD1cIiklPiBwcmFnbWEgb3IgYXR0cmlidXRlIiwgc3RyKTsKIAlhYXJjaDY0X3ByaW50X2hpbnRf Zm9yX2FyY2ggKHN0cik7CiAJYnJlYWs7Ci0gICAgICBjYXNlIEFBUkNINjRfUEFSU0VfSU5WQUxJ RF9GRUFUVVJFOgorICAgICAgY2FzZSBBQVJDSF9QQVJTRV9JTlZBTElEX0ZFQVRVUkU6CiAJZXJy b3IgKCJpbnZhbGlkIGZlYXR1cmUgbW9kaWZpZXIgJXMgb2YgdmFsdWUgKFwiJXNcIikgaW4gIgog CSAgICAgICAiJTx0YXJnZXQoKSU+IHByYWdtYSBvciBhdHRyaWJ1dGUiLCBpbnZhbGlkX2V4dGVu c2lvbi5jX3N0ciAoKSwgc3RyKTsKIAlhYXJjaDY0X3ByaW50X2hpbnRfZm9yX2V4dGVuc2lvbnMg KGludmFsaWRfZXh0ZW5zaW9uKTsKQEAgLTE3NDQzLDEwICsxNzI0MywxMCBAQCBhYXJjaDY0X2hh bmRsZV9hdHRyX2NwdSAoY29uc3QgY2hhciAqc3RyKQogewogICBjb25zdCBzdHJ1Y3QgcHJvY2Vz c29yICp0bXBfY3B1ID0gTlVMTDsKICAgc3RkOjpzdHJpbmcgaW52YWxpZF9leHRlbnNpb247Ci0g IGVudW0gYWFyY2g2NF9wYXJzZV9vcHRfcmVzdWx0IHBhcnNlX3JlcworICBlbnVtIGFhcmNoX3Bh cnNlX29wdF9yZXN1bHQgcGFyc2VfcmVzCiAgICAgPSBhYXJjaDY0X3BhcnNlX2NwdSAoc3RyLCAm dG1wX2NwdSwgJmFhcmNoNjRfaXNhX2ZsYWdzLCAmaW52YWxpZF9leHRlbnNpb24pOwogCi0gIGlm IChwYXJzZV9yZXMgPT0gQUFSQ0g2NF9QQVJTRV9PSykKKyAgaWYgKHBhcnNlX3JlcyA9PSBBQVJD SF9QQVJTRV9PSykKICAgICB7CiAgICAgICBnY2NfYXNzZXJ0ICh0bXBfY3B1KTsKICAgICAgIHNl bGVjdGVkX3R1bmUgPSB0bXBfY3B1OwpAQCAtMTc0NTksMTQgKzE3MjU5LDE0IEBAIGFhcmNoNjRf aGFuZGxlX2F0dHJfY3B1IChjb25zdCBjaGFyICpzdHIpCiAKICAgc3dpdGNoIChwYXJzZV9yZXMp CiAgICAgewotICAgICAgY2FzZSBBQVJDSDY0X1BBUlNFX01JU1NJTkdfQVJHOgorICAgICAgY2Fz ZSBBQVJDSF9QQVJTRV9NSVNTSU5HX0FSRzoKIAllcnJvciAoIm1pc3NpbmcgbmFtZSBpbiAlPHRh cmdldChcImNwdT1cIiklPiBwcmFnbWEgb3IgYXR0cmlidXRlIik7CiAJYnJlYWs7Ci0gICAgICBj YXNlIEFBUkNINjRfUEFSU0VfSU5WQUxJRF9BUkc6CisgICAgICBjYXNlIEFBUkNIX1BBUlNFX0lO VkFMSURfQVJHOgogCWVycm9yICgiaW52YWxpZCBuYW1lIChcIiVzXCIpIGluICU8dGFyZ2V0KFwi Y3B1PVwiKSU+IHByYWdtYSBvciBhdHRyaWJ1dGUiLCBzdHIpOwogCWFhcmNoNjRfcHJpbnRfaGlu dF9mb3JfY29yZSAoc3RyKTsKIAlicmVhazsKLSAgICAgIGNhc2UgQUFSQ0g2NF9QQVJTRV9JTlZB TElEX0ZFQVRVUkU6CisgICAgICBjYXNlIEFBUkNIX1BBUlNFX0lOVkFMSURfRkVBVFVSRToKIAll cnJvciAoImludmFsaWQgZmVhdHVyZSBtb2RpZmllciAlcyBvZiB2YWx1ZSAoXCIlc1wiKSBpbiAi CiAJICAgICAgICIlPHRhcmdldCgpJT4gcHJhZ21hIG9yIGF0dHJpYnV0ZSIsIGludmFsaWRfZXh0 ZW5zaW9uLmNfc3RyICgpLCBzdHIpOwogCWFhcmNoNjRfcHJpbnRfaGludF9mb3JfZXh0ZW5zaW9u cyAoaW52YWxpZF9leHRlbnNpb24pOwpAQCAtMTc0ODQsMjMgKzE3Mjg0LDIzIEBAIGFhcmNoNjRf aGFuZGxlX2F0dHJfY3B1IChjb25zdCBjaGFyICpzdHIpCiAgYWFyY2g2NF9oYW5kbGVfYXR0cl9i cmFuY2hfcHJvdGVjdGlvbiAoY29uc3QgY2hhciogc3RyKQogIHsKICAgY2hhciAqZXJyX3N0ciA9 IChjaGFyICopIHhtYWxsb2MgKHN0cmxlbiAoc3RyKSArIDEpOwotICBlbnVtIGFhcmNoNjRfcGFy c2Vfb3B0X3Jlc3VsdCByZXMgPSBhYXJjaDY0X3BhcnNlX2JyYW5jaF9wcm90ZWN0aW9uIChzdHIs Ci0JCQkJCQkJCSAgICAgICZlcnJfc3RyKTsKKyAgZW51bSBhYXJjaF9wYXJzZV9vcHRfcmVzdWx0 IHJlcyA9IGFhcmNoX3BhcnNlX2JyYW5jaF9wcm90ZWN0aW9uIChzdHIsCisJCQkJCQkJCSAgICZl cnJfc3RyKTsKICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CiAgIHN3aXRjaCAocmVzKQogICAgIHsK LSAgICAgY2FzZSBBQVJDSDY0X1BBUlNFX01JU1NJTkdfQVJHOgorICAgICBjYXNlIEFBUkNIX1BB UlNFX01JU1NJTkdfQVJHOgogICAgICAgIGVycm9yICgibWlzc2luZyBhcmd1bWVudCB0byAlPHRh cmdldChcImJyYW5jaC1wcm90ZWN0aW9uPVwiKSU+IHByYWdtYSBvciIKIAkgICAgICAiIGF0dHJp YnV0ZSIpOwogICAgICAgIGJyZWFrOwotICAgICBjYXNlIEFBUkNINjRfUEFSU0VfSU5WQUxJRF9B Ukc6CisgICAgIGNhc2UgQUFSQ0hfUEFSU0VfSU5WQUxJRF9BUkc6CiAgICAgICAgZXJyb3IgKCJp bnZhbGlkIHByb3RlY3Rpb24gdHlwZSAoXCIlc1wiKSBpbiAlPHRhcmdldChcImJyYW5jaC1wcm90 ZWN0aW9uIgogCSAgICAgICI9XCIpJT4gcHJhZ21hIG9yIGF0dHJpYnV0ZSIsIGVycl9zdHIpOwog ICAgICAgIGJyZWFrOwotICAgICBjYXNlIEFBUkNINjRfUEFSU0VfT0s6CisgICAgIGNhc2UgQUFS Q0hfUEFSU0VfT0s6CiAgICAgICAgc3VjY2VzcyA9IHRydWU7CiAgICAgICAvKiBGYWxsIHRocm91 Z2guICAqLwotICAgICBjYXNlIEFBUkNINjRfUEFSU0VfSU5WQUxJRF9GRUFUVVJFOgorICAgICBj YXNlIEFBUkNIX1BBUlNFX0lOVkFMSURfRkVBVFVSRToKICAgICAgICBicmVhazsKICAgICAgZGVm YXVsdDoKICAgICAgICBnY2NfdW5yZWFjaGFibGUgKCk7CkBAIC0xNzUxNSwxMCArMTczMTUsMTAg QEAgc3RhdGljIGJvb2wKIGFhcmNoNjRfaGFuZGxlX2F0dHJfdHVuZSAoY29uc3QgY2hhciAqc3Ry KQogewogICBjb25zdCBzdHJ1Y3QgcHJvY2Vzc29yICp0bXBfdHVuZSA9IE5VTEw7Ci0gIGVudW0g YWFyY2g2NF9wYXJzZV9vcHRfcmVzdWx0IHBhcnNlX3JlcworICBlbnVtIGFhcmNoX3BhcnNlX29w dF9yZXN1bHQgcGFyc2VfcmVzCiAgICAgPSBhYXJjaDY0X3BhcnNlX3R1bmUgKHN0ciwgJnRtcF90 dW5lKTsKIAotICBpZiAocGFyc2VfcmVzID09IEFBUkNINjRfUEFSU0VfT0spCisgIGlmIChwYXJz ZV9yZXMgPT0gQUFSQ0hfUEFSU0VfT0spCiAgICAgewogICAgICAgZ2NjX2Fzc2VydCAodG1wX3R1 bmUpOwogICAgICAgc2VsZWN0ZWRfdHVuZSA9IHRtcF90dW5lOwpAQCAtMTc1MjgsNyArMTczMjgs NyBAQCBhYXJjaDY0X2hhbmRsZV9hdHRyX3R1bmUgKGNvbnN0IGNoYXIgKnN0cikKIAogICBzd2l0 Y2ggKHBhcnNlX3JlcykKICAgICB7Ci0gICAgICBjYXNlIEFBUkNINjRfUEFSU0VfSU5WQUxJRF9B Ukc6CisgICAgICBjYXNlIEFBUkNIX1BBUlNFX0lOVkFMSURfQVJHOgogCWVycm9yICgiaW52YWxp ZCBuYW1lIChcIiVzXCIpIGluICU8dGFyZ2V0KFwidHVuZT1cIiklPiBwcmFnbWEgb3IgYXR0cmli dXRlIiwgc3RyKTsKIAlhYXJjaDY0X3ByaW50X2hpbnRfZm9yX2NvcmUgKHN0cik7CiAJYnJlYWs7 CkBAIC0xNzU0Nyw3ICsxNzM0Nyw3IEBAIGFhcmNoNjRfaGFuZGxlX2F0dHJfdHVuZSAoY29uc3Qg Y2hhciAqc3RyKQogc3RhdGljIGJvb2wKIGFhcmNoNjRfaGFuZGxlX2F0dHJfaXNhX2ZsYWdzIChj aGFyICpzdHIpCiB7Ci0gIGVudW0gYWFyY2g2NF9wYXJzZV9vcHRfcmVzdWx0IHBhcnNlX3JlczsK KyAgZW51bSBhYXJjaF9wYXJzZV9vcHRfcmVzdWx0IHBhcnNlX3JlczsKICAgdWludDY0X3QgaXNh X2ZsYWdzID0gYWFyY2g2NF9pc2FfZmxhZ3M7CiAKICAgLyogV2UgYWxsb3cgIitub3RoaW5nIiBp biB0aGUgYmVnaW5uaW5nIHRvIGNsZWFyIG91dCBhbGwgYXJjaGl0ZWN0dXJhbApAQCAtMTc1NjEs NyArMTczNjEsNyBAQCBhYXJjaDY0X2hhbmRsZV9hdHRyX2lzYV9mbGFncyAoY2hhciAqc3RyKQog ICBzdGQ6OnN0cmluZyBpbnZhbGlkX2V4dGVuc2lvbjsKICAgcGFyc2VfcmVzID0gYWFyY2g2NF9w YXJzZV9leHRlbnNpb24gKHN0ciwgJmlzYV9mbGFncywgJmludmFsaWRfZXh0ZW5zaW9uKTsKIAot ICBpZiAocGFyc2VfcmVzID09IEFBUkNINjRfUEFSU0VfT0spCisgIGlmIChwYXJzZV9yZXMgPT0g QUFSQ0hfUEFSU0VfT0spCiAgICAgewogICAgICAgYWFyY2g2NF9pc2FfZmxhZ3MgPSBpc2FfZmxh Z3M7CiAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE3NTY5LDExICsxNzM2OSwxMSBAQCBhYXJjaDY0 X2hhbmRsZV9hdHRyX2lzYV9mbGFncyAoY2hhciAqc3RyKQogCiAgIHN3aXRjaCAocGFyc2VfcmVz KQogICAgIHsKLSAgICAgIGNhc2UgQUFSQ0g2NF9QQVJTRV9NSVNTSU5HX0FSRzoKKyAgICAgIGNh c2UgQUFSQ0hfUEFSU0VfTUlTU0lOR19BUkc6CiAJZXJyb3IgKCJtaXNzaW5nIHZhbHVlIGluICU8 dGFyZ2V0KCklPiBwcmFnbWEgb3IgYXR0cmlidXRlIik7CiAJYnJlYWs7CiAKLSAgICAgIGNhc2Ug QUFSQ0g2NF9QQVJTRV9JTlZBTElEX0ZFQVRVUkU6CisgICAgICBjYXNlIEFBUkNIX1BBUlNFX0lO VkFMSURfRkVBVFVSRToKIAllcnJvciAoImludmFsaWQgZmVhdHVyZSBtb2RpZmllciAlcyBvZiB2 YWx1ZSAoXCIlc1wiKSBpbiAiCiAJICAgICAgICIlPHRhcmdldCgpJT4gcHJhZ21hIG9yIGF0dHJp YnV0ZSIsIGludmFsaWRfZXh0ZW5zaW9uLmNfc3RyICgpLCBzdHIpOwogCWJyZWFrOwpAQCAtMjE0 NzMsNyArMjEyNzMsNyBAQCB2b2lkCiBhYXJjaDY0X3Bvc3RfY2ZpX3N0YXJ0cHJvYyAoRklMRSAq ZiwgdHJlZSBpZ25vcmVkIEFUVFJJQlVURV9VTlVTRUQpCiB7CiAgIGlmIChjZnVuLT5tYWNoaW5l LT5mcmFtZS5sYWlkX291dCAmJiBhYXJjaDY0X3JldHVybl9hZGRyZXNzX3NpZ25pbmdfZW5hYmxl ZCAoKQotICAgICAgJiYgYWFyY2g2NF9yYV9zaWduX2tleSA9PSBBQVJDSDY0X0tFWV9CKQorICAg ICAgJiYgYWFyY2hfcmFfc2lnbl9rZXkgPT0gQUFSQ0hfS0VZX0IpCiAJYXNtX2ZwcmludGYgKGYs ICJcdC5jZmlfYl9rZXlfZnJhbWVcbiIpOwogfQogCkBAIC0yNTU3NCw3ICsyNTM3NCw3IEBAIGFh cmNoNjRfZmlsZV9lbmRfaW5kaWNhdGVfZXhlY19zdGFjayAoKQogICBpZiAoYWFyY2g2NF9idGlf ZW5hYmxlZCAoKSkKICAgICBmZWF0dXJlXzFfYW5kIHw9IEdOVV9QUk9QRVJUWV9BQVJDSDY0X0ZF QVRVUkVfMV9CVEk7CiAKLSAgaWYgKGFhcmNoNjRfcmFfc2lnbl9zY29wZSAhPSBBQVJDSDY0X0ZV TkNUSU9OX05PTkUpCisgIGlmIChhYXJjaF9yYV9zaWduX3Njb3BlICE9IEFBUkNIX0ZVTkNUSU9O X05PTkUpCiAgICAgZmVhdHVyZV8xX2FuZCB8PSBHTlVfUFJPUEVSVFlfQUFSQ0g2NF9GRUFUVVJF XzFfUEFDOwogCiAgIGlmIChmZWF0dXJlXzFfYW5kKQpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9h YXJjaDY0L2FhcmNoNjQubWQgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5tZAppbmRleCAx YTM5NDcwYTFmZWViOGQyM2EzZDBkNGY4YTliNTQ1MzVmNzY5ZmQ5Li5kZTYwNTJiNTg4YWM2ZTg1 MzdlYzBjOGM0MGNjMTQ3NmQzZGZhOGY1IDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQv YWFyY2g2NC5tZAorKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5tZApAQCAtODgyLDcg Kzg4Miw3IEBACiAJJiYgKFRBUkdFVF9QQVVUSCkKIAkmJiAhY3J0bC0+Y2FsbHNfZWhfcmV0dXJu KQogICAgICAgewotCWlmIChhYXJjaDY0X3JhX3NpZ25fa2V5ID09IEFBUkNINjRfS0VZX0IpCisJ aWYgKGFhcmNoX3JhX3NpZ25fa2V5ID09IEFBUkNIX0tFWV9CKQogCSAgcmV0ID0gInJldGFiIjsK IAllbHNlCiAJICByZXQgPSAicmV0YWEiOwpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0 L2FhcmNoNjQub3B0IGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQub3B0CmluZGV4IDMyMTkx Y2YxYWNmNDMzMDJjNGE1NDRiODVkYjYwYjdiNmUxNGRhNDguLjA3MzlhNGZlMDA2NGMwMzU5MTA3 Y2RlM2MxYzM0ZGFlNDMwNzVmYTYgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJj aDY0Lm9wdAorKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5vcHQKQEAgLTIxLDYgKzIx LDkgQEAKIEhlYWRlckluY2x1ZGUKIGNvbmZpZy9hYXJjaDY0L2FhcmNoNjQtb3B0cy5oCiAKK0hl YWRlckluY2x1ZGUKK2NvbmZpZy9hcm0vYWFyY2gtY29tbW9uLmgKKwogVGFyZ2V0VmFyaWFibGUK IGVudW0gYWFyY2g2NF9wcm9jZXNzb3IgZXhwbGljaXRfdHVuZV9jb3JlID0gYWFyY2g2NF9ub25l CiAKQEAgLTM0LDcgKzM3LDcgQEAgVGFyZ2V0VmFyaWFibGUKIHVpbnQ2NF90IGFhcmNoNjRfaXNh X2ZsYWdzID0gMAogCiBUYXJnZXRWYXJpYWJsZQotdW5zaWduZWQgYWFyY2g2NF9lbmFibGVfYnRp ID0gMgordW5zaWduZWQgYWFyY2hfZW5hYmxlX2J0aSA9IDIKIAogOyBUaGUgVExTIGRpYWxlY3Qg bmFtZXMgdG8gdXNlIHdpdGggLW10bHMtZGlhbGVjdC4KIApAQCAtMTYxLDIxICsxNjQsMjEgQEAg VGFyZ2V0IFJlamVjdE5lZ2F0aXZlIEpvaW5lZCBWYXIoYWFyY2g2NF9icmFuY2hfcHJvdGVjdGlv bl9zdHJpbmcpIFNhdmUKIFVzZSBicmFuY2gtcHJvdGVjdGlvbiBmZWF0dXJlcy4KIAogbXNpZ24t cmV0dXJuLWFkZHJlc3M9Ci1UYXJnZXQgV2FyblJlbW92ZWQgUmVqZWN0TmVnYXRpdmUgSm9pbmVk IEVudW0oYWFyY2g2NF9yYV9zaWduX3Njb3BlX3QpIFZhcihhYXJjaDY0X3JhX3NpZ25fc2NvcGUp IEluaXQoQUFSQ0g2NF9GVU5DVElPTl9OT05FKSBTYXZlCitUYXJnZXQgV2FyblJlbW92ZWQgUmVq ZWN0TmVnYXRpdmUgSm9pbmVkIEVudW0oYWFyY2hfcmFfc2lnbl9zY29wZV90KSBWYXIoYWFyY2hf cmFfc2lnbl9zY29wZSkgSW5pdChBQVJDSF9GVU5DVElPTl9OT05FKSBTYXZlCiBTZWxlY3QgcmV0 dXJuIGFkZHJlc3Mgc2lnbmluZyBzY29wZS4KIAogRW51bQotTmFtZShhYXJjaDY0X3JhX3NpZ25f c2NvcGVfdCkgVHlwZShlbnVtIGFhcmNoNjRfZnVuY3Rpb25fdHlwZSkKK05hbWUoYWFyY2hfcmFf c2lnbl9zY29wZV90KSBUeXBlKGVudW0gYWFyY2hfZnVuY3Rpb25fdHlwZSkKIFN1cHBvcnRlZCBB QXJjaDY0IHJldHVybiBhZGRyZXNzIHNpZ25pbmcgc2NvcGUgKGZvciB1c2Ugd2l0aCAtbXNpZ24t cmV0dXJuLWFkZHJlc3M9IG9wdGlvbik6CiAKIEVudW1WYWx1ZQotRW51bShhYXJjaDY0X3JhX3Np Z25fc2NvcGVfdCkgU3RyaW5nKG5vbmUpIFZhbHVlKEFBUkNINjRfRlVOQ1RJT05fTk9ORSkKK0Vu dW0oYWFyY2hfcmFfc2lnbl9zY29wZV90KSBTdHJpbmcobm9uZSkgVmFsdWUoQUFSQ0hfRlVOQ1RJ T05fTk9ORSkKIAogRW51bVZhbHVlCi1FbnVtKGFhcmNoNjRfcmFfc2lnbl9zY29wZV90KSBTdHJp bmcobm9uLWxlYWYpIFZhbHVlKEFBUkNINjRfRlVOQ1RJT05fTk9OX0xFQUYpCitFbnVtKGFhcmNo X3JhX3NpZ25fc2NvcGVfdCkgU3RyaW5nKG5vbi1sZWFmKSBWYWx1ZShBQVJDSF9GVU5DVElPTl9O T05fTEVBRikKIAogRW51bVZhbHVlCi1FbnVtKGFhcmNoNjRfcmFfc2lnbl9zY29wZV90KSBTdHJp bmcoYWxsKSBWYWx1ZShBQVJDSDY0X0ZVTkNUSU9OX0FMTCkKK0VudW0oYWFyY2hfcmFfc2lnbl9z Y29wZV90KSBTdHJpbmcoYWxsKSBWYWx1ZShBQVJDSF9GVU5DVElPTl9BTEwpCiAKIG1sb3ctcHJl Y2lzaW9uLXJlY2lwLXNxcnQKIFRhcmdldCBWYXIoZmxhZ19tcmVjaXBfbG93X3ByZWNpc2lvbl9z cXJ0KSBPcHRpbWl6YXRpb24KZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYXJtL2FhcmNoLWNvbW1v bi1wcm90b3MuaCBiL2djYy9jb25maWcvYXJtL2FhcmNoLWNvbW1vbi1wcm90b3MuaAppbmRleCA2 YmU1ZmIxZTA4M2Q3ZmYxMzAzODZkZmExODFiOWEwYzhmZDU0MzdjLi5iZWEwZjMwNmVjZjY0MTQy OWQwM2RmM2Y2YjE0NDBlNWRkODBmOTA3IDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2FybS9hYXJj aC1jb21tb24tcHJvdG9zLmgKKysrIGIvZ2NjL2NvbmZpZy9hcm0vYWFyY2gtY29tbW9uLXByb3Rv cy5oCkBAIC0xNTAsNCArMTUwLDEwIEBAIHJ0eF9pbnNuICphcm1fbWRfYXNtX2FkanVzdCAodmVj PHJ0eD4gJm91dHB1dHMsIHZlYzxydHg+ICYgLyppbnB1dHMqLywKIAkJCSAgICAgdmVjPHJ0eD4g JmNsb2JiZXJzLCBIQVJEX1JFR19TRVQgJmNsb2JiZXJlZF9yZWdzLAogCQkJICAgICBsb2NhdGlv bl90IGxvYyk7CiAKKy8qIFBhcnNpbmcgcm91dGluZSBmb3IgYnJhbmNoLXByb3RlY3Rpb24gY29t bW9uIHRvIEFBcmNoNjQgYW5kIEFybS4gICovCitlbnVtIGFhcmNoX3BhcnNlX29wdF9yZXN1bHQg YWFyY2hfcGFyc2VfYnJhbmNoX3Byb3RlY3Rpb24gKGNvbnN0IGNoYXIqLCBjaGFyKiopOworCisv KiBWYWxpZGF0aW9uIHJvdXRpbmUgZm9yIGJyYW5jaC1wcm90ZWN0aW9uIGNvbW1vbiB0byBBQXJj aDY0IGFuZCBBcm0uICAqLworYm9vbCBhYXJjaF92YWxpZGF0ZV9tYnJhbmNoX3Byb3RlY3Rpb24g KGNvbnN0IGNoYXIgKik7CisKICNlbmRpZiAvKiBHQ0NfQUFSQ0hfQ09NTU9OX1BST1RPU19IICov CmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS9hYXJjaC1jb21tb24uaCBiL2djYy9jb25maWcv YXJtL2FhcmNoLWNvbW1vbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4NjcyNmE2MWZkYWFhNTQ0NTdhZDA2ZjY2 MzQ0NjQ4N2EyMGU3MDEKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvY29uZmlnL2FybS9hYXJjaC1j b21tb24uaApAQCAtMCwwICsxLDczIEBACisvKiBUeXBlcyBzaGFyZWQgYmV0d2VlbiBhcm0gYW5k IGFhcmNoNjQuCisKKyAgIENvcHlyaWdodCAoQykgMTk5MS0yMDIxIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgorICAgQ29udHJpYnV0ZWQgYnkgQVJNIEx0ZC4KKworICAgVGhpcyBmaWxl IGlzIHBhcnQgb2YgR0NDLgorCisgICBHQ0MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKKyAgIGJ5IHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMsIG9yIChhdCB5b3VyCisgICBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBHQ0MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKKyAgIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQorICAg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYworICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAg YWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKyAgIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisKKyNpZm5kZWYgR0NDX0FBUkNIX0NP TU1PTl9ICisjZGVmaW5lIEdDQ19BQVJDSF9DT01NT05fSAorCisvKiBFbnVtIGRlc2NyaWJpbmcg dGhlIHZhcmlvdXMgd2F5cyB0aGF0IHRoZQorICAgYWFyY2gqX3BhcnNlX3thcmNoLHR1bmUsY3B1 LGV4dGVuc2lvbn0gZnVuY3Rpb25zIGNhbiBmYWlsLgorICAgVGhpcyB3YXkgdGhlaXIgY2FsbGVy cyBjYW4gY2hvb3NlIHdoYXQga2luZCBvZiBlcnJvciB0byBnaXZlLiAgKi8KKworZW51bSBhYXJj aF9wYXJzZV9vcHRfcmVzdWx0Cit7CisgIEFBUkNIX1BBUlNFX09LLAkJCS8qIFBhcnNpbmcgd2Fz IHN1Y2Nlc3NmdWwuICAqLworICBBQVJDSF9QQVJTRV9NSVNTSU5HX0FSRywJCS8qIE1pc3Npbmcg YXJndW1lbnQuICAqLworICBBQVJDSF9QQVJTRV9JTlZBTElEX0ZFQVRVUkUsCS8qIEludmFsaWQg ZmVhdHVyZSBtb2RpZmllci4gICovCisgIEFBUkNIX1BBUlNFX0lOVkFMSURfQVJHCQkvKiBJbnZh bGlkIGFyY2gsIHR1bmUsIGNwdSBhcmcuICAqLworfTsKKworLyogRnVuY3Rpb24gdHlwZXMgLW1z aWduLXJldHVybi1hZGRyZXNzIHNob3VsZCBzaWduLiAgKi8KK2VudW0gYWFyY2hfZnVuY3Rpb25f dHlwZSB7CisgIC8qIERvbid0IHNpZ24gYW55IGZ1bmN0aW9uLiAgKi8KKyAgQUFSQ0hfRlVOQ1RJ T05fTk9ORSwKKyAgLyogTm9uLWxlYWYgZnVuY3Rpb25zLiAgKi8KKyAgQUFSQ0hfRlVOQ1RJT05f Tk9OX0xFQUYsCisgIC8qIEFsbCBmdW5jdGlvbnMuICAqLworICBBQVJDSF9GVU5DVElPTl9BTEwK K307CisKKy8qIFRoZSBrZXkgdHlwZSB0aGF0IC1tc2lnbi1yZXR1cm4tYWRkcmVzcyBzaG91bGQg dXNlLiAgKi8KK2VudW0gYWFyY2hfa2V5X3R5cGUgeworICBBQVJDSF9LRVlfQSwKKyAgQUFSQ0hf S0VZX0IKK307CisKK3N0cnVjdCBhYXJjaF9icmFuY2hfcHJvdGVjdF90eXBlCit7CisgIC8qIFRo ZSB0eXBlJ3MgbmFtZSB0aGF0IHRoZSB1c2VyIHBhc3NlcyB0byB0aGUgYnJhbmNoLXByb3RlY3Rp b24gb3B0aW9uCisgICAgc3RyaW5nLiAgKi8KKyAgY29uc3QgY2hhciogbmFtZTsKKyAgLyogRnVu Y3Rpb24gdG8gaGFuZGxlIHRoZSBwcm90ZWN0aW9uIHR5cGUgYW5kIHNldCBnbG9iYWwgdmFyaWFi bGVzLgorICAgIEZpcnN0IGFyZ3VtZW50IGlzIHRoZSBzdHJpbmcgdG9rZW4gY29ycmVzcG9uZGlu ZyB3aXRoIHRoaXMgdHlwZSBhbmQgdGhlCisgICAgc2Vjb25kIGFyZ3VtZW50IGlzIHRoZSBuZXh0 IHRva2VuIGluIHRoZSBvcHRpb24gc3RyaW5nLgorICAgIFJldHVybiB2YWx1ZXM6CisgICAgKiBB QVJDSF9QQVJTRV9PSzogSGFuZGxpbmcgd2FzIHN1Y2Vzc2Z1bC4KKyAgICAqIEFBUkNIX0lOVkFM SURfQVJHOiBUaGUgdHlwZSBpcyBpbnZhbGlkIGluIHRoaXMgY29udGV4dCBhbmQgdGhlIGNhbGxl cgorICAgICAgc2hvdWxkIHByaW50IGFuIGVycm9yLgorICAgICogQUFSQ0hfSU5WQUxJRF9GRUFU VVJFOiBUaGUgdHlwZSBpcyBpbnZhbGlkIGFuZCB0aGUgaGFuZGxlciBwcmludHMgaXRzCisgICAg ICBvd24gZXJyb3IuICAqLworICBlbnVtIGFhcmNoX3BhcnNlX29wdF9yZXN1bHQgKCpoYW5kbGVy KShjaGFyKiwgY2hhciopOworICAvKiBBIGxpc3Qgb2YgdHlwZXMgdGhhdCBjYW4gZm9sbG93IHRo aXMgdHlwZSBpbiB0aGUgb3B0aW9uIHN0cmluZy4gICovCisgIGNvbnN0IHN0cnVjdCBhYXJjaF9i cmFuY2hfcHJvdGVjdF90eXBlKiBzdWJ0eXBlczsKKyAgdW5zaWduZWQgaW50IG51bV9zdWJ0eXBl czsKK307CisKKyNlbmRpZiAvKiBHQ0NfQUFSQ0hfQ09NTU9OX0ggKi8KZGlmZiAtLWdpdCBhL2dj Yy9jb25maWcvYXJtL2FhcmNoLWNvbW1vbi5jIGIvZ2NjL2NvbmZpZy9hcm0vYWFyY2gtY29tbW9u LmMKaW5kZXggNjczNDNmZTQwMjUwMjIxYzhiNzkxZjc3NzZjMzlhMmQyMjg3Y2MzNS4uMjY2MzE1 NzJhMzljNTQzZDYxNWY1ZjdjNzZlYmEwMzg3OTkwMzAwZiAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZp Zy9hcm0vYWFyY2gtY29tbW9uLmMKKysrIGIvZ2NjL2NvbmZpZy9hcm0vYWFyY2gtY29tbW9uLmMK QEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJleHByLmgiCiAjaW5jbHVkZSAiZnVuY3Rpb24u aCIKICNpbmNsdWRlICJlbWl0LXJ0bC5oIgorI2luY2x1ZGUgImFhcmNoLWNvbW1vbi5oIgogCiAv KiBSZXR1cm4gVFJVRSBpZiBYIGlzIGVpdGhlciBhbiBhcml0aG1ldGljIHNoaWZ0IGxlZnQsIG9y CiAgICBpcyBhIG11bHRpcGxpY2F0aW9uIGJ5IGEgcG93ZXIgb2YgdHdvLiAgKi8KQEAgLTY1Nywz ICs2NTgsMTg3IEBAIGFybV9tZF9hc21fYWRqdXN0ICh2ZWM8cnR4PiAmb3V0cHV0cywgdmVjPHJ0 eD4gJiAvKmlucHV0cyovLAogCiAgIHJldHVybiBzYXdfYXNtX2ZsYWcgPyBzZXEgOiBOVUxMOwog fQorCisjaW5jbHVkZSAiYWFyY2gtY29tbW9uLmgiCisKKyNkZWZpbmUgQlJBTkNIX1BST1RFQ1Rf U1RSX01BWCAyNTUKK2V4dGVybiBjaGFyICphY2NlcHRlZF9icmFuY2hfcHJvdGVjdGlvbl9zdHJp bmc7CitleHRlcm4gZW51bSBhYXJjaF9rZXlfdHlwZSBhYXJjaF9yYV9zaWduX2tleTsKKworc3Rh dGljIGVudW0gYWFyY2hfcGFyc2Vfb3B0X3Jlc3VsdAorYWFyY2hfaGFuZGxlX25vX2JyYW5jaF9w cm90ZWN0aW9uIChjaGFyKiBzdHIsIGNoYXIqIHJlc3QpCit7CisgIGFhcmNoX3JhX3NpZ25fc2Nv cGUgPSBBQVJDSF9GVU5DVElPTl9OT05FOworICBhYXJjaF9lbmFibGVfYnRpID0gMDsKKyAgaWYg KHJlc3QpCisgICAgeworICAgICAgZXJyb3IgKCJ1bmV4cGVjdGVkICU8JXMlPiBhZnRlciAlPCVz JT4iLCByZXN0LCBzdHIpOworICAgICAgcmV0dXJuIEFBUkNIX1BBUlNFX0lOVkFMSURfRkVBVFVS RTsKKyAgICB9CisgIHJldHVybiBBQVJDSF9QQVJTRV9PSzsKK30KKworc3RhdGljIGVudW0gYWFy Y2hfcGFyc2Vfb3B0X3Jlc3VsdAorYWFyY2hfaGFuZGxlX3N0YW5kYXJkX2JyYW5jaF9wcm90ZWN0 aW9uIChjaGFyKiBzdHIsIGNoYXIqIHJlc3QpCit7CisgIGFhcmNoX3JhX3NpZ25fc2NvcGUgPSBB QVJDSF9GVU5DVElPTl9OT05fTEVBRjsKKyAgYWFyY2hfcmFfc2lnbl9rZXkgPSBBQVJDSF9LRVlf QTsKKyAgYWFyY2hfZW5hYmxlX2J0aSA9IDE7CisgIGlmIChyZXN0KQorICAgIHsKKyAgICAgIGVy cm9yICgidW5leHBlY3RlZCAlPCVzJT4gYWZ0ZXIgJTwlcyU+IiwgcmVzdCwgc3RyKTsKKyAgICAg IHJldHVybiBBQVJDSF9QQVJTRV9JTlZBTElEX0ZFQVRVUkU7CisgICAgfQorICByZXR1cm4gQUFS Q0hfUEFSU0VfT0s7Cit9CisKK3N0YXRpYyBlbnVtIGFhcmNoX3BhcnNlX29wdF9yZXN1bHQKK2Fh cmNoX2hhbmRsZV9wYWNfcmV0X3Byb3RlY3Rpb24gKGNoYXIqIHN0ciBBVFRSSUJVVEVfVU5VU0VE LAorCQkJCSAgICBjaGFyKiByZXN0IEFUVFJJQlVURV9VTlVTRUQpCit7CisgIGFhcmNoX3JhX3Np Z25fc2NvcGUgPSBBQVJDSF9GVU5DVElPTl9OT05fTEVBRjsKKyAgYWFyY2hfcmFfc2lnbl9rZXkg PSBBQVJDSF9LRVlfQTsKKyAgcmV0dXJuIEFBUkNIX1BBUlNFX09LOworfQorCitzdGF0aWMgZW51 bSBhYXJjaF9wYXJzZV9vcHRfcmVzdWx0CithYXJjaF9oYW5kbGVfcGFjX3JldF9sZWFmIChjaGFy KiBzdHIgQVRUUklCVVRFX1VOVVNFRCwKKwkJCSAgICAgIGNoYXIqIHJlc3QgQVRUUklCVVRFX1VO VVNFRCkKK3sKKyAgYWFyY2hfcmFfc2lnbl9zY29wZSA9IEFBUkNIX0ZVTkNUSU9OX0FMTDsKKyAg cmV0dXJuIEFBUkNIX1BBUlNFX09LOworfQorCitzdGF0aWMgZW51bSBhYXJjaF9wYXJzZV9vcHRf cmVzdWx0CithYXJjaF9oYW5kbGVfcGFjX3JldF9iX2tleSAoY2hhciogc3RyIEFUVFJJQlVURV9V TlVTRUQsCisJCQkgICAgICBjaGFyKiByZXN0IEFUVFJJQlVURV9VTlVTRUQpCit7CisgIGFhcmNo X3JhX3NpZ25fa2V5ID0gQUFSQ0hfS0VZX0I7CisgIHJldHVybiBBQVJDSF9QQVJTRV9PSzsKK30K Kworc3RhdGljIGVudW0gYWFyY2hfcGFyc2Vfb3B0X3Jlc3VsdAorYWFyY2hfaGFuZGxlX2J0aV9w cm90ZWN0aW9uIChjaGFyKiBzdHIgQVRUUklCVVRFX1VOVVNFRCwKKwkJCQkgICAgY2hhciogcmVz dCBBVFRSSUJVVEVfVU5VU0VEKQoreworICBhYXJjaF9lbmFibGVfYnRpID0gMTsKKyAgcmV0dXJu IEFBUkNIX1BBUlNFX09LOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGFhcmNoX2JyYW5jaF9w cm90ZWN0X3R5cGUgYWFyY2hfcGFjX3JldF9zdWJ0eXBlc1tdID0geworICB7ICJsZWFmIiwgYWFy Y2hfaGFuZGxlX3BhY19yZXRfbGVhZiwgTlVMTCwgMCB9LAorICB7ICJiLWtleSIsIGFhcmNoX2hh bmRsZV9wYWNfcmV0X2Jfa2V5LCBOVUxMLCAwIH0sCisgIHsgTlVMTCwgTlVMTCwgTlVMTCwgMCB9 Cit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGFhcmNoX2JyYW5jaF9wcm90ZWN0X3R5cGUgYWFy Y2hfYnJhbmNoX3Byb3RlY3RfdHlwZXNbXSA9IHsKKyAgeyAibm9uZSIsIGFhcmNoX2hhbmRsZV9u b19icmFuY2hfcHJvdGVjdGlvbiwgTlVMTCwgMCB9LAorICB7ICJzdGFuZGFyZCIsIGFhcmNoX2hh bmRsZV9zdGFuZGFyZF9icmFuY2hfcHJvdGVjdGlvbiwgTlVMTCwgMCB9LAorICB7ICJwYWMtcmV0 IiwgYWFyY2hfaGFuZGxlX3BhY19yZXRfcHJvdGVjdGlvbiwgYWFyY2hfcGFjX3JldF9zdWJ0eXBl cywKKyAgICBBUlJBWV9TSVpFIChhYXJjaF9wYWNfcmV0X3N1YnR5cGVzKSB9LAorICB7ICJidGki LCBhYXJjaF9oYW5kbGVfYnRpX3Byb3RlY3Rpb24sIE5VTEwsIDAgfSwKKyAgeyBOVUxMLCBOVUxM LCBOVUxMLCAwIH0KK307CisKKy8qIFBhcnNlcyBDT05TVF9TVFIgZm9yIGJyYW5jaCBwcm90ZWN0 aW9uIGZlYXR1cmVzIHNwZWNpZmllZCBpbgorICAgYWFyY2g2NF9icmFuY2hfcHJvdGVjdF90eXBl cywgYW5kIHNldCBhbnkgZ2xvYmFsIHZhcmlhYmxlcyByZXF1aXJlZC4gIFJldHVybnMKKyAgIHRo ZSBwYXJzaW5nIHJlc3VsdCBhbmQgYXNzaWducyBMQVNUX1NUUiB0byB0aGUgbGFzdCBwcm9jZXNz ZWQgdG9rZW4gZnJvbQorICAgQ09OU1RfU1RSIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgZm9yIGVy cm9yIHJlcG9ydGluZy4gICovCisKK2VudW0gYWFyY2hfcGFyc2Vfb3B0X3Jlc3VsdAorYWFyY2hf cGFyc2VfYnJhbmNoX3Byb3RlY3Rpb24gKGNvbnN0IGNoYXIgKmNvbnN0X3N0ciwgY2hhcioqIGxh c3Rfc3RyKQoreworICBjaGFyICpzdHJfcm9vdCA9IHhzdHJkdXAgKGNvbnN0X3N0cik7CisgIGNo YXIqIHRva2VuX3NhdmUgPSBOVUxMOworICBjaGFyICpzdHIgPSBzdHJ0b2tfciAoc3RyX3Jvb3Qs ICIrIiwgJnRva2VuX3NhdmUpOworICBlbnVtIGFhcmNoX3BhcnNlX29wdF9yZXN1bHQgcmVzID0g QUFSQ0hfUEFSU0VfT0s7CisgIGlmICghc3RyKQorICAgIHJlcyA9IEFBUkNIX1BBUlNFX01JU1NJ TkdfQVJHOworICBlbHNlCisgICAgeworICAgICAgY2hhciAqbmV4dF9zdHIgPSBzdHJ0b2tfciAo TlVMTCwgIisiLCAmdG9rZW5fc2F2ZSk7CisgICAgICAvKiBSZXNldCB0aGUgYnJhbmNoIHByb3Rl Y3Rpb24gZmVhdHVyZXMgdG8gdGhlaXIgZGVmYXVsdHMuICAqLworICAgICAgYWFyY2hfaGFuZGxl X25vX2JyYW5jaF9wcm90ZWN0aW9uIChOVUxMLCBOVUxMKTsKKworICAgICAgd2hpbGUgKHN0ciAm JiByZXMgPT0gQUFSQ0hfUEFSU0VfT0spCisJeworCSAgY29uc3QgYWFyY2hfYnJhbmNoX3Byb3Rl Y3RfdHlwZSogdHlwZSA9IGFhcmNoX2JyYW5jaF9wcm90ZWN0X3R5cGVzOworCSAgYm9vbCBmb3Vu ZCA9IGZhbHNlOworCSAgLyogU2VhcmNoIGZvciB0aGlzIHR5cGUuICAqLworCSAgd2hpbGUgKHR5 cGUgJiYgdHlwZS0+bmFtZSAmJiAhZm91bmQgJiYgcmVzID09IEFBUkNIX1BBUlNFX09LKQorCSAg ICB7CisJICAgICAgaWYgKHN0cmNtcCAoc3RyLCB0eXBlLT5uYW1lKSA9PSAwKQorCQl7CisJCSAg Zm91bmQgPSB0cnVlOworCQkgIHJlcyA9IHR5cGUtPmhhbmRsZXIgKHN0ciwgbmV4dF9zdHIpOwor CQkgIHN0ciA9IG5leHRfc3RyOworCQkgIG5leHRfc3RyID0gc3RydG9rX3IgKE5VTEwsICIrIiwg JnRva2VuX3NhdmUpOworCQl9CisJICAgICAgZWxzZQorCQl0eXBlKys7CisJICAgIH0KKwkgIGlm IChmb3VuZCAmJiByZXMgPT0gQUFSQ0hfUEFSU0VfT0spCisJICAgIHsKKwkgICAgICBib29sIGZv dW5kX3N1YnR5cGUgPSB0cnVlOworCSAgICAgIC8qIExvb3AgdGhyb3VnaCBlYWNoIHRva2VuIHVu dGlsIHdlIGZpbmQgb25lIHRoYXQgaXNuJ3QgYQorCQkgc3VidHlwZS4gICovCisJICAgICAgd2hp bGUgKGZvdW5kX3N1YnR5cGUpCisJCXsKKwkJICBmb3VuZF9zdWJ0eXBlID0gZmFsc2U7CisJCSAg Y29uc3QgYWFyY2hfYnJhbmNoX3Byb3RlY3RfdHlwZSAqc3VidHlwZSA9IHR5cGUtPnN1YnR5cGVz OworCQkgIC8qIFNlYXJjaCBmb3IgdGhlIHN1YnR5cGUuICAqLworCQkgIHdoaWxlIChzdHIgJiYg c3VidHlwZSAmJiBzdWJ0eXBlLT5uYW1lICYmICFmb3VuZF9zdWJ0eXBlCisJCQkgICYmIHJlcyA9 PSBBQVJDSF9QQVJTRV9PSykKKwkJICAgIHsKKwkJICAgICAgaWYgKHN0cmNtcCAoc3RyLCBzdWJ0 eXBlLT5uYW1lKSA9PSAwKQorCQkJeworCQkJICBmb3VuZF9zdWJ0eXBlID0gdHJ1ZTsKKwkJCSAg cmVzID0gc3VidHlwZS0+aGFuZGxlciAoc3RyLCBuZXh0X3N0cik7CisJCQkgIHN0ciA9IG5leHRf c3RyOworCQkJICBuZXh0X3N0ciA9IHN0cnRva19yIChOVUxMLCAiKyIsICZ0b2tlbl9zYXZlKTsK KwkJCX0KKwkJICAgICAgZWxzZQorCQkJc3VidHlwZSsrOworCQkgICAgfQorCQl9CisJICAgIH0K KwkgIGVsc2UgaWYgKCFmb3VuZCkKKwkgICAgcmVzID0gQUFSQ0hfUEFSU0VfSU5WQUxJRF9BUkc7 CisJfQorICAgIH0KKyAgLyogQ29weSB0aGUgbGFzdCBwcm9jZXNzZWQgdG9rZW4gaW50byB0aGUg YXJndW1lbnQgdG8gcGFzcyBpdCBiYWNrLgorICAgIFVzZWQgYnkgb3B0aW9uIGFuZCBhdHRyaWJ1 dGUgdmFsaWRhdGlvbiB0byBwcmludCB0aGUgb2ZmZW5kaW5nIHRva2VuLiAgKi8KKyAgaWYgKGxh c3Rfc3RyKQorICAgIHsKKyAgICAgIGlmIChzdHIpIHN0cmNweSAoKmxhc3Rfc3RyLCBzdHIpOwor ICAgICAgZWxzZSAqbGFzdF9zdHIgPSBOVUxMOworICAgIH0KKyAgaWYgKHJlcyA9PSBBQVJDSF9Q QVJTRV9PSykKKyAgICB7CisgICAgICAvKiBJZiBuZWVkZWQsIGFsbG9jIHRoZSBhY2NlcHRlZCBz dHJpbmcgdGhlbiBjb3B5IGluIGNvbnN0X3N0ci4KKwlVc2VkIGJ5IG92ZXJyaWRlX29wdGlvbl9h ZnRlcl9jaGFuZ2VfMS4gICovCisgICAgICBpZiAoIWFjY2VwdGVkX2JyYW5jaF9wcm90ZWN0aW9u X3N0cmluZykKKwlhY2NlcHRlZF9icmFuY2hfcHJvdGVjdGlvbl9zdHJpbmcgPSAoY2hhciAqKSB4 bWFsbG9jICgKKwkJCQkJCSAgICAgIEJSQU5DSF9QUk9URUNUX1NUUl9NQVgKKwkJCQkJCQkrIDEp OworICAgICAgc3RybmNweSAoYWNjZXB0ZWRfYnJhbmNoX3Byb3RlY3Rpb25fc3RyaW5nLCBjb25z dF9zdHIsCisJCUJSQU5DSF9QUk9URUNUX1NUUl9NQVggKyAxKTsKKyAgICAgIC8qIEZvcmNpYmx5 IG51bGwtdGVybWluYXRlLiAgKi8KKyAgICAgIGFjY2VwdGVkX2JyYW5jaF9wcm90ZWN0aW9uX3N0 cmluZ1tCUkFOQ0hfUFJPVEVDVF9TVFJfTUFYXSA9ICdcMCc7CisgICAgfQorICByZXR1cm4gcmVz OworfQorCitib29sCithYXJjaF92YWxpZGF0ZV9tYnJhbmNoX3Byb3RlY3Rpb24gKGNvbnN0IGNo YXIgKmNvbnN0X3N0cikKK3sKKyAgY2hhciAqc3RyID0gKGNoYXIgKikgeG1hbGxvYyAoc3RybGVu IChjb25zdF9zdHIpKTsKKyAgZW51bSBhYXJjaF9wYXJzZV9vcHRfcmVzdWx0IHJlcyA9CisgICAg YWFyY2hfcGFyc2VfYnJhbmNoX3Byb3RlY3Rpb24gKGNvbnN0X3N0ciwgJnN0cik7CisgIGlmIChy ZXMgPT0gQUFSQ0hfUEFSU0VfSU5WQUxJRF9BUkcpCisgICAgZXJyb3IgKCJpbnZhbGlkIGFyZ3Vt ZW50ICU8JXMlPiBmb3IgJTwtbWJyYW5jaC1wcm90ZWN0aW9uPSU+Iiwgc3RyKTsKKyAgZWxzZSBp ZiAocmVzID09IEFBUkNIX1BBUlNFX01JU1NJTkdfQVJHKQorICAgIGVycm9yICgibWlzc2luZyBh cmd1bWVudCBmb3IgJTwtbWJyYW5jaC1wcm90ZWN0aW9uPSU+Iik7CisgIGZyZWUgKHN0cik7Cisg IHJldHVybiByZXMgPT0gQUFSQ0hfUEFSU0VfT0s7Cit9CmRpZmYgLS1naXQgYS9nY2MvY29uZmln L2FybS9hcm0tcHJvdG9zLmggYi9nY2MvY29uZmlnL2FybS9hcm0tcHJvdG9zLmgKaW5kZXggOWIx ZjYxMzk0YWQ3ZDc3OGE2YzBiODRiYzZjODA1ZjE0NzA5ZjU5OC4uNDYzZWNkYzRmMzYzNjA0YTcz NDlhYWQ1NTdjZDIwN2ZlMjkxNDU4ZSAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9hcm0vYXJtLXBy b3Rvcy5oCisrKyBiL2djYy9jb25maWcvYXJtL2FybS1wcm90b3MuaApAQCAtNTc3LDYgKzU3Nyw4 IEBAIHN0cnVjdCBjcHVfb3B0aW9uCiBleHRlcm4gY29uc3QgYXJjaF9vcHRpb24gYWxsX2FyY2hp dGVjdHVyZXNbXTsKIGV4dGVybiBjb25zdCBjcHVfb3B0aW9uIGFsbF9jb3Jlc1tdOwogCitleHRl cm4gZW51bSBhYXJjaF9rZXlfdHlwZSBhYXJjaF9yYV9zaWduX2tleTsKKwogY29uc3QgY3B1X29w dGlvbiAqYXJtX3BhcnNlX2NwdV9vcHRpb25fbmFtZSAoY29uc3QgY3B1X29wdGlvbiAqLCBjb25z dCBjaGFyICosCiAJCQkJCSAgICAgY29uc3QgY2hhciAqLCBib29sID0gdHJ1ZSk7CiBjb25zdCBh cmNoX29wdGlvbiAqYXJtX3BhcnNlX2FyY2hfb3B0aW9uX25hbWUgKGNvbnN0IGFyY2hfb3B0aW9u ICosCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS9hcm0uYyBiL2djYy9jb25maWcvYXJtL2Fy bS5jCmluZGV4IGM0ZmYwNmIwODdlYmVjYzkxYzQxOWNiNGVjZjAwOWMzNTM1OTU1ZGYuLmE5NTI2 NTVkYjgwNjYzZjI4ZjVhNWQxMjAwNWYyYWRiNDcwMjg5NGYgMTAwNjQ0Ci0tLSBhL2djYy9jb25m aWcvYXJtL2FybS5jCisrKyBiL2djYy9jb25maWcvYXJtL2FybS5jCkBAIC03Miw2ICs3Miw4IEBA CiAjaW5jbHVkZSAic2VsZnRlc3QuaCIKICNpbmNsdWRlICJ0cmVlLXZlY3Rvcml6ZXIuaCIKICNp bmNsdWRlICJvcHRzLmgiCisjaW5jbHVkZSAiYWFyY2gtY29tbW9uLmgiCisjaW5jbHVkZSAiYWFy Y2gtY29tbW9uLXByb3Rvcy5oIgogCiAvKiBUaGlzIGZpbGUgc2hvdWxkIGJlIGluY2x1ZGVkIGxh c3QuICAqLwogI2luY2x1ZGUgInRhcmdldC1kZWYuaCIKQEAgLTIzOTAsNiArMjM5MiwxMSBAQCBj b25zdCBzdHJ1Y3QgdHVuZV9wYXJhbXMgYXJtX2ZhNzI2dGVfdHVuZSA9CiAgIHR1bmVfcGFyYW1z OjpTQ0hFRF9BVVRPUFJFRl9PRkYKIH07CiAKKy8qIEtleSB0eXBlIGZvciBQb2ludGVyIEF1dGhl bnRpY2F0aW9uIGV4dGVuc2lvbi4gICovCitlbnVtIGFhcmNoX2tleV90eXBlIGFhcmNoX3JhX3Np Z25fa2V5ID0gQUFSQ0hfS0VZX0E7CisKK2NoYXIgKmFjY2VwdGVkX2JyYW5jaF9wcm90ZWN0aW9u X3N0cmluZyA9IE5VTEw7CisKIC8qIEF1dG8tZ2VuZXJhdGVkIENQVSwgRlBVIGFuZCBhcmNoaXRl Y3R1cmUgdGFibGVzLiAgKi8KICNpbmNsdWRlICJhcm0tY3B1LWRhdGEuaCIKIApkaWZmIC0tZ2l0 IGEvZ2NjL2NvbmZpZy9hcm0vYXJtLm9wdCBiL2djYy9jb25maWcvYXJtL2FybS5vcHQKaW5kZXgg YTc2NzdlZWI0NWM4MDVkNmEzMTRmNGQxZDJkNjA2M2Q4YzBiNjg3Yy4uNWM1YjRmM2FlMDY5OWEz YTlkNzhkZjQwYTVhYjY1MzI0ZGNiYTdiOSAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9hcm0vYXJt Lm9wdAorKysgYi9nY2MvY29uZmlnL2FybS9hcm0ub3B0CkBAIC0yMSw2ICsyMSwxNSBAQAogSGVh ZGVySW5jbHVkZQogY29uZmlnL2FybS9hcm0tb3B0cy5oCiAKK0hlYWRlckluY2x1ZGUKK2NvbmZp Zy9hcm0vYWFyY2gtY29tbW9uLmgKKworVGFyZ2V0VmFyaWFibGUKK2VudW0gYWFyY2hfZnVuY3Rp b25fdHlwZSBhYXJjaF9yYV9zaWduX3Njb3BlID0gQUFSQ0hfRlVOQ1RJT05fTk9ORQorCitUYXJn ZXRWYXJpYWJsZQordW5zaWduZWQgYWFyY2hfZW5hYmxlX2J0aSA9IDIKKwogRW51bQogTmFtZSh0 bHNfdHlwZSkgVHlwZShlbnVtIGFybV90bHNfdHlwZSkKIFRMUyBkaWFsZWN0IHRvIHVzZToK --_002_PAXPR08MB7075CE7A66B899400B18CE47EA869PAXPR08MB7075eurp_--