Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1l2Gx6-0007We-4X for pgsql-hackers@arkaria.postgresql.org; Wed, 20 Jan 2021 17:07:29 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1l2Gx3-0005OP-Fr for pgsql-hackers@arkaria.postgresql.org; Wed, 20 Jan 2021 17:07:25 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1l2Gx2-0005OH-47 for pgsql-hackers@lists.postgresql.org; Wed, 20 Jan 2021 17:07:25 +0000 Received: from mail-bn8nam12on2085.outbound.protection.outlook.com ([40.107.237.85] helo=NAM12-BN8-obe.outbound.protection.outlook.com) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1l2Gwr-0006uD-8F for pgsql-hackers@lists.postgresql.org; Wed, 20 Jan 2021 17:07:22 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QhTHzBzIZ8qRxspaspQ0IGTvhdfXNDy1Oyw16BnezVkpinjGZigu1l2m6cpJvh5ymQyJt6NP18TrKLwAhO/HS5o8aVHEgGag8D2I6IPEIVgD6UO9A/NeRftG47o7w2/QL+uQKMy/vl5wsjo1aqNwiXXEtmZPqgDmo7jb3tvMScjCJo82mXe6pZ6bmrbu6UeypMC1zua55M91KPTxSuXMQKyWKuqRND1PiyWCMO7fKzdKIV3U3h+1EQk+UPiwrc5MNyDB8ZT3ztUu244OxMTMywXhZxVE09jZIjUvfPT4k3c3qh0PjlVcZ1PAnRmX8Z9HrYw5hoPzwBSqt8OdWH5upA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pGwhfTA+1QvO8NHy93wiZWmkaOMLyIy85zwgyw+0OWE=; b=nqKra0kK9uf02I5krDS8WHbR9LQ15sgYsr1f7xQuNzSfQonE8YAzZyWPH0u6bqSLjTNX51u1GxsMjPscmZWt+189SDLP5EokA/RciFReA/S93QG+y79mvqT09U53i9V13wawv30GzbxyxUCDo2jg6rbRoUKoYe/VaimGGhWu4M8SlMNQFb74r02sT+woqtv5wjXf3+UCTkNiGK7pCSM4bTtBSXMXOVQoIGifEhbKzTB6tz2YNd3P4C9MjnNStSWnVWnk1w+IuUrK/uvlM8ZLdqDCVkPLpiqqBpp1IjgGZSq8cZ5vq2NlTe4TkxSbpf9d/HLFn7MWVsXKqbmS0TN8Jw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=vmware.com; dmarc=pass action=none header.from=vmware.com; dkim=pass header.d=vmware.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vmware.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pGwhfTA+1QvO8NHy93wiZWmkaOMLyIy85zwgyw+0OWE=; b=dTPppVEjW3mZswSKvPnrQYdTRt1rcIbK+7O+MFV+acUF1+zyHFt8rSbm1icsoD7ARu+IWJ5Dy6nRrK5diE02TutvReoMSIVZ4pQfrNNjbfO4YM0L+JRD3U0Q9Mw0F4/odcTBBnYb2VIYMWFKtkAAQ5zU0nASO/dxRepjNvMg6Sc= Received: from (2603:10b6:300:65::20) by MWHPR05MB2976.namprd05.prod.outlook.com (2603:10b6:300:68::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3784.10; Wed, 20 Jan 2021 17:07:08 +0000 Received: from MWHPR05MB2896.namprd05.prod.outlook.com ([fe80::408b:a41e:e514:6620]) by MWHPR05MB2896.namprd05.prod.outlook.com ([fe80::408b:a41e:e514:6620%9]) with mapi id 15.20.3784.010; Wed, 20 Jan 2021 17:07:08 +0000 From: Jacob Champion To: "daniel@yesql.se" CC: "hlinnaka@iki.fi" , "pgsql-hackers@lists.postgresql.org" , "andrew.dunstan@2ndquadrant.com" , "sfrost@snowman.net" , "thomas.munro@gmail.com" , "michael@paquier.xyz" , "andres@anarazel.de" Subject: Re: Support for NSS as a libpq TLS backend Thread-Topic: Support for NSS as a libpq TLS backend Thread-Index: AQHWM1w61GrKUIsl6UCBcYrYNRBt46kJRsIAgAA+PQCAGQsiAIAEdGUAgAAqk4CAAbpsAIABgI0AgCnqVACAA5UBgIAAY+MAgBTX7ACAACGAAIASngCAgAAfeICABYLFgIAbyjgAgABy24CACw63gIAAAzWAgAwa5QCAA6HPgIAAKuGAgAYXDoCAACZBAIABTCSAgAALLgCAAcj/gIAA61UAgAU5IwCAAT6LgIBg7KEAgAJv4YCAAEgzAIAAvXeAgABWToA= Date: Wed, 20 Jan 2021 17:07:08 +0000 Message-ID: References: <0E64F3CB-4731-4FA8-82D8-D8590086654C@vmware.com> <1B0B31E4-AD37-475C-9374-7E24AA808479@vmware.com> <5C27CF6F-5BD3-4639-AAA6-73465595B6DF@vmware.com> <7B5A88DF-863A-4B00-B841-0285C1FF70DF@yesql.se> <5F24348B-10BA-4AA1-999B-1E2AB22B4997@vmware.com> <94E22878-6289-43D5-A674-804F6CB23782@yesql.se> <8D7F95DB-8F8A-4300-BFDA-656FBAB30FE2@yesql.se> In-Reply-To: <8D7F95DB-8F8A-4300-BFDA-656FBAB30FE2@yesql.se> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: user-agent: Evolution 3.36.4-0ubuntu1 authentication-results: yesql.se; dkim=none (message not signed) header.d=none;yesql.se; dmarc=none action=none header.from=vmware.com; x-originating-ip: [50.39.198.229] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 82c943cd-7408-4257-31ef-08d8bd65d1f3 x-ms-traffictypediagnostic: MWHPR05MB2976: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: iM/9nz6oPfenjyDsT1UAMusrqx2mHATRGn5H0jNzU9SnujsWreB473f4ZmM1ULmYmHyq7FChlkg5QNXQM+tE/CkqcpRl44DmezXMGPjb9RzQQ4qz3ew93k/0UZuFMJx3PakgUhJ5NscmBTSkGHon8fSFpz5QflQ2Ymy1y2p9d/3Mx7hbURpjHNio07N1OipmK/Owby4oD+2zywhgukwW/HTgmMPiHvzwsL06KoUXGkj0X75kPLy+8AN0pCurTDOybt3o1H5QZ1ZOwJoohyo3U/IyU0mnw3fF6u5WOS6LpqyUtO3uucelFX50upxySDcUtCFVIyY13tdmib/cLrmVO0/tCa05722WZ+vSlBn+ibGFPgii4YTkXmRAeyiS5VE0rbZb3wt9woLYVQEFiiEv7dvuNT0UG4qicL4T8RCWadtVMXQ72uGP/qabX5Rl5nf3be1TuKB6bI0TLTRD7A/67X5y0t6WkaHPCuNDMuspPV7wTChZpaURgGdmvKNKD/CU3WTnC1HMjkTmLCl4b8nTrkrtcViPbZRkQCFX3Z6s2uWJPIPqjO3CH4DlWWrLU8pkVdyG9+wV0a9sbauJUQD17tttQ3IWFuNNxzD1UJvVyQQ= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MWHPR05MB2896.namprd05.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(346002)(396003)(136003)(366004)(39860400002)(376002)(64756008)(66576008)(316002)(66476007)(66446008)(26005)(6916009)(66946007)(66556008)(86362001)(2616005)(2906002)(966005)(83380400001)(76116006)(478600001)(71200400001)(6506007)(8936002)(54906003)(6512007)(6486002)(186003)(99936003)(5660300002)(36756003)(8676002)(4326008);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: =?utf-8?B?QjZlb1B6OHhuTUNBVEVzaUkra1J1R3ovWG83b1dBWGJqUWpvVWVWRG1Ma1Fv?= =?utf-8?B?dHRzd05xT1lXMG5zZWlLZVBCZjBvRUttVzZhMklhTXlMN0YzTHJOVGdYUlNr?= =?utf-8?B?YThnRGd4N0RoaEdjY3JpRFhHSUdrWDdFeVpKbndwU2s1MjQyOTBxdWNwRkE1?= =?utf-8?B?WWc0N0pKNFJzK3ZSNXZOTjRjWmpQU0NZazZWb2JFeDVEaHlxR0c1OXhTWUhT?= =?utf-8?B?MTBZUTFOM3F4aVlmOUNIeC9vU3o3VW85bU9Ua2tVSzFRWVB5aWMxUEJ6YzBi?= =?utf-8?B?aHA5SUtrMGtkRU9iWmJPWUNiV2gzWldPTUFJNUZqZ1NOY3NiTmYzS3FMS29L?= =?utf-8?B?OERFQllwN2h4bGtpZ0tKT1lHRHYrUjJQZlE0dXprdW5wTDk4blBxWisyc2NY?= =?utf-8?B?QUtxUnIzeDdzL0lqcGhGVzJMdncvMHFPZkxZcXRTWU5qNzNjVExLblRmUVpS?= =?utf-8?B?Y09NS2Ziajh6aXlkam9zR1cvcXdWeksyZ24wZHpEcTdaMkU3bmw0ckxGZkVN?= =?utf-8?B?ejJmdUJERHFsbXNQcy80MFZqZVQzZkpkYjVOQ2lEUXhoSS8zNEFWNCtha0dN?= =?utf-8?B?VndCaURpT2JOUjNlSmVkLzM2cUJvVHpvaHZaSkZFUW5USnM1dENhVWM1OWwz?= =?utf-8?B?OTZDRSs1ZmxpWVA3QjdxUzZWem9EdE5NeXZXcS9uT1BrSHJEbWU1VjZXb2Zq?= =?utf-8?B?MVdDWUw2ZE8yYmprUGxkTDlKb01Lb3NGb21Zbk9Fb1phR205RzNiMEFNQlV5?= =?utf-8?B?eWhXN2VBVUtKV01xNjVBNE5BdnNFdHFtUVZsM0ZSUGMvRWZFYXFVRURUZDBR?= =?utf-8?B?c0IzaWppK0d0TWpVcnZXUWRjT2dYOUlTRTBRZWFYdm5sMGpJQk1ySWE0YUpH?= =?utf-8?B?YUJzRHRpV3ZLbDZibERMSTFMcWgyNEp4bnQ3aGNQM0tIQ043V2VTZ0tsRVFp?= =?utf-8?B?VXg0MkVGV3ViN1pQY2lrNiszSFVQdFNJQmpZRzZ3UmlNMHNKRlR4NWljQzhB?= =?utf-8?B?eWtIdSt0SldIMGNpS0VzTjc1UVlJQVlxNFgvcHRnZTNlY3I0NWg1ZEFZRVhP?= =?utf-8?B?VHdPMk5jWnBjdEtBeXlvaXY2KzdyUjRhU3dSNFZ0bnhuaUEzQkNGV3RBQkhR?= =?utf-8?B?KzI2WnVpUUsxWWVTSHQ4MUo5YTc2SmcvRGNQK0J4R0MrRndZTHoxdTRvTFlU?= =?utf-8?B?K0NUUTZlWi9FUE14K1pLTXdCSjZSeDRsME9kSTIxbjhJNHIvT0lxV1oxQVFt?= =?utf-8?B?RHl0cUxoSmtkRU4xdHpMVmVRS2FxR0tTN3JSU1N2OFZzQ2htQ2tVTm5mcTNL?= =?utf-8?Q?ktfMNNloQOSAvJA754f8Mv081BSio8J6ow?= x-ms-exchange-transport-forked: True Content-Type: multipart/mixed; boundary="_008_a9b663ae4a4b71525e88b75463c865a6693cb4cecamelvmwarecom_" MIME-Version: 1.0 X-OriginatorOrg: vmware.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MWHPR05MB2896.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 82c943cd-7408-4257-31ef-08d8bd65d1f3 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Jan 2021 17:07:08.3598 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b39138ca-3cee-4b4a-a4d6-cd83d9dd62f0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: RIGfWs0XqhJIFnLL/OKRqlSxynZuBcs9Pk86PkViUTIplpBZYZQphdNx0IOcE7rYwVJ5pxFjwmqJjXrAgNO7+g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR05MB2976 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --_008_a9b663ae4a4b71525e88b75463c865a6693cb4cecamelvmwarecom_ Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 T24gV2VkLCAyMDIxLTAxLTIwIGF0IDEyOjU4ICswMTAwLCBEYW5pZWwgR3VzdGFmc3NvbiB3cm90 ZToNCj4gQWhhLCB0aGF0IHdhcyBhIGdvb2QgY2x1ZSwgSSBoYWQgb3Zlcmxvb2tlZCB0aGUgcmVx dWlyZWQgZXh0ZW5zaW9ucyBpbiB0aGUgQ1NSLg0KPiBSZS1yZWFkaW5nIFJGQyA1MjgwIGl0IHNl ZW1zIHdlIG5lZWQga2V5RW5jaXBoZXJtZW50LCBkYXRhRW5jaXBoZXJtZW50IGFuZA0KPiBkaWdp dGFsU2lnbmF0dXJlIHRvIGNyZWF0ZSBhIHZhbGlkIFNTTCBTZXJ2ZXIgY2VydGlmaWNhdGUuICBB ZGRpbmcgdGhvc2UgaW5kZWVkDQo+IG1ha2UgdGhlIHRlc3QgcGFzcy4gIFNraW1taW5nIHRoZSBj ZXJ0dXRpbCBjb2RlICpJIHRoaW5rKiByZW1vdmluZyBpdCBhcyB5b3UNCj4gZGlkIGNhdXNlIGEg c2V0IG9mIGRlZmF1bHRzIHRvIGtpY2sgaW4gdGhhdCBtYWRlIGl0IHdvcmsgYmFzZWQgb24gdGhl IHBhcmFtZXRlcg0KPiAiLS1uc0NlcnRUeXBlIHNzbFNlcnZlciIsIGJ1dCBpdCdzIG5vdCBlbnRp cmVseSBlYXN5IHRvIG1ha2Ugb3V0Lg0KDQpMb3ZlbHkuIEkgZGlkbid0IGV4cGVjdCAqcmVtb3Zp bmcqIGFuIGV4dGVuc2lvbiB0byBlZmZlY3RpdmVseSAqYWRkKg0KbW9yZSwgYnV0IEknbSBnbGFk IGl0IHdvcmtzIG5vdy4NCg0KPT0NCg0KVG8gY29udGludWUgdGhlIFN1YmplY3QgQ29tbW9uIE5h bWUgZGlzY3Vzc2lvbiBbMV0gZnJvbSBhIGRpZmZlcmVudA0KcGFydCBvZiB0aGUgdGhyZWFkOg0K DQpBdHRhY2hlZCBpcyBhIHYyMyB2ZXJzaW9uIG9mIHRoZSBwYXRjaHNldCB0aGF0IHBlZWxzIHRo ZSByYXcgQ29tbW9uDQpOYW1lIG91dCBmcm9tIGEgY2xpZW50IGNlcnQncyBTdWJqZWN0LiBUaGlz IGFsbG93cyB0aGUgZm9sbG93aW5nIGNhc2VzDQp0aGF0IHRoZSBPcGVuU1NMIGltcGxlbWVudGF0 aW9uIGN1cnJlbnRseSBoYW5kbGVzOg0KDQotIHN1YmplY3RzIHRoYXQgZG9uJ3QgYmVnaW4gd2l0 aCBhIENODQotIHN1YmplY3RzIHdpdGggcXVvdGFibGUgY2hhcmFjdGVycw0KLSBzdWJqZWN0cyB0 aGF0IGhhdmUgbm8gQ04gYXQgYWxsDQpFbWJlZGRlZCBOVUxMcyBhcmUgbm93IGhhbmRsZWQgaW4g YSBzaW1pbGFyIG1hbm5lciB0byB0aGUgT3BlblNTTCBzaWRlLA0KdGhvdWdoIGJlY2F1c2UgdGhp cyBmYWlsdXJlIGhhcHBlbnMgZHVyaW5nIHRoZSBjZXJ0aWZpY2F0ZQ0KYXV0aGVudGljYXRpb24g Y2FsbGJhY2ssIGl0IHJlc3VsdHMgaW4gYSBUTFMgYWxlcnQgcmF0aGVyIHRoYW4gc2ltcGx5DQpj bG9zaW5nIHRoZSBjb25uZWN0aW9uLg0KDQpGb3IgZWFzaWVyIHJldmlldyBvZiBqdXN0IHRoZSBw YXJ0cyBJJ3ZlIGNoYW5nZWQsIEkndmUgYWxzbyBhdHRhY2hlZCBhDQpzaW5jZS12MjIuZGlmZiwg d2hpY2ggaXMgcGFydCBvZiB0aGUgMDAwMSBwYXRjaC4NCg0KLS1KYWNvYg0KDQpbMV0gDQpodHRw czovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkLzdkNmEyM2E3ZTMwNTQwYjQ4NmFiYzgy M2Y3Y2VkN2E5M2UxZGExZTguY2FtZWwlNDB2bXdhcmUuY29tDQo= --_008_a9b663ae4a4b71525e88b75463c865a6693cb4cecamelvmwarecom_ Content-Type: text/x-patch; name="since-v22.diff" Content-Description: since-v22.diff Content-Disposition: attachment; filename="since-v22.diff"; size=5028; creation-date="Wed, 20 Jan 2021 17:07:08 GMT"; modification-date="Wed, 20 Jan 2021 17:07:08 GMT" Content-ID: <058946F0275B404A8C520974D7EDF11A@namprd05.prod.outlook.com> Content-Transfer-Encoding: base64 Y29tbWl0IGNmNmEzZTQ5NDg4YjllNzk1ZTI4NzEzZjgxZjZhNGQzMjcwMmRlNWQKQXV0aG9yOiBK YWNvYiBDaGFtcGlvbiA8cGNoYW1waW9uQHZtd2FyZS5jb20+CkRhdGU6ICAgVHVlIEphbiAxOSAx MDozMjoyNyAyMDIxIC0wODAwCgogICAgTlNTOiBoYW5kbGUgY2xpZW50IGNlcnQgQ29tbW9uIE5h bWVzIGxpa2UgYmUtc2VjdXJlLW9wZW5zc2wKICAgIAogICAgU3RvcmUgYW4gdW5xdW90ZWQgQ29t bW9uIE5hbWUgaW50byBwb3J0LT5wZWVyX2NuLiBUaGlzIGlzIHRoZSBidWxrIG9mCiAgICB0aGUg cGF0Y2gsIGJlY2F1c2UgQ0VSVF9HZXRDb21tb25OYW1lKCkgYWx3YXlzIHBlcmZvcm1zIFJGQyA0 NTE0CiAgICBxdW90aW5nLCBhbmQgdGhlIGF1dGhlbnRpY2F0aW9uIGNvZGUgaW4gdGhlIGNvcmUg ZXhwZWN0cyByYXcgZGF0YSBmb3IKICAgIGRpcmVjdCBzdHJpbmcgY29tcGFyaXNvbi4KICAgIAog ICAgVGhlc2UgY2hhbmdlcyBhbGxvdyB1cyB0byBoYW5kbGUKICAgIC0gdXNlcm5hbWVzIHdpdGgg cXVvdGFibGUgY2hhcmFjdGVycywgc3VjaCBhcyBiYWNrc2xhc2hlcwogICAgLSBjZXJ0aWZpY2F0 ZXMgd2l0aCBvdGhlciBuYW1lIGF0dHJpYnV0ZXMgYmVzaWRlcyBDb21tb24gTmFtZSAoY291bnRy eQogICAgICBjb2RlLCBvcmdhbml6YXRpb25hbCB1bml0LCBldGMuKQogICAgLSBjZXJ0aWZpY2F0 ZXMgd2l0aG91dCBhIENvbW1vbiBOYW1lCiAgICAKICAgIENlcnRpZmljYXRlcyB3aXRoIGVtYmVk ZGVkIE5VTEwgYnl0ZXMgaW4gdGhlIENvbW1vbiBOYW1lIHdpbGwgYmUKICAgIHJlamVjdGVkIGlu IHRoZSBzYW1lIG1hbm5lciBhcyB0aGUgT3BlblNTTCBpbXBsZW1lbnRhdGlvbi4KCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUtbnNzLmMgYi9zcmMvYmFja2VuZC9saWJw cS9iZS1zZWN1cmUtbnNzLmMKaW5kZXggMTExYjQ2ZGVhOC4uODBkNzU5ODY2MiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvbGlicHEvYmUtc2VjdXJlLW5zcy5jCisrKyBiL3NyYy9iYWNrZW5kL2xp YnBxL2JlLXNlY3VyZS1uc3MuYwpAQCAtMTA1MSw2ICsxMDUxLDY5IEBAIHBnX2JhZF9jZXJ0X2hh bmRsZXIodm9pZCAqYXJnLCBQUkZpbGVEZXNjICogZmQpCiAJcmV0dXJuIFNFQ0ZhaWx1cmU7CiB9 CiAKKy8qCisgKiBSZXR1cm5zIHRoZSBTdWJqZWN0IENvbW1vbiBOYW1lIGZvciB0aGUgZ2l2ZW4g Y2VydGlmaWNhdGUgYXMgYSByYXcgY2hhcgorICogYnVmZmVyICh0aGF0IGlzLCB3aXRob3V0IGFu eSBmb3JtIG9mIGVzY2FwaW5nIGZvciB1bnByaW50YWJsZSBjaGFyYWN0ZXJzIG9yCisgKiBlbWJl ZGRlZCBudWxscyksIHdpdGggdGhlIGxlbmd0aCBvZiB0aGUgYnVmZmVyIHJldHVybmVkIGluIHRo ZSBsZW4gcGFyYW1ldGVyLgorICogVGhlIGJ1ZmZlciBpcyBhbGxvY2F0ZWQgaW4gdGhlIFRvcE1l bW9yeUNvbnRleHQgYW5kIGlzIGdpdmVuIGEgTlVMTAorICogdGVybWluYXRvciBzbyB0aGF0IGNh bGxlcnMgYXJlIHNhZmUgdG8gY2FsbCBzdHJsZW4oKSBvbiBpdC4KKyAqCisgKiBUaGlzIGlzIHVz ZWQgaW5zdGVhZCBvZiBDRVJUX0dldENvbW1vbk5hbWUoKSwgd2hpY2ggYWx3YXlzIHBlcmZvcm1z IHF1b3RpbmcKKyAqIGFuZC9vciBlc2NhcGluZy4gTlNTIGRvZXNuJ3QgYXBwZWFyIHRvIGdpdmUg dXMgYSB3YXkgdG8gZWFzaWx5IHVuZXNjYXBlIHRoZQorICogcmVzdWx0LCBhbmQgd2UgbmVlZCB0 byBzdG9yZSB0aGUgcmF3IENOIGludG8gcG9ydC0+cGVlcl9jbiBmb3IgY29tcGF0aWJpbGl0eQor ICogd2l0aCB0aGUgT3BlblNTTCBpbXBsZW1lbnRhdGlvbi4KKyAqLworc3RhdGljIGNoYXIgKgor cmF3X3N1YmplY3RfY29tbW9uX25hbWUoQ0VSVENlcnRpZmljYXRlICpjZXJ0LCB1bnNpZ25lZCBp bnQgKmxlbikKK3sKKwlDRVJUTmFtZQlzdWJqZWN0ID0gY2VydC0+c3ViamVjdDsKKwlDRVJUUkRO CSAgKipyZG47CisKKwlmb3IgKHJkbiA9IHN1YmplY3QucmRuczsgKnJkbjsgcmRuKyspCisJewor CQlDRVJUQVZBCSAgKiphdmE7CisKKwkJZm9yIChhdmEgPSAoKnJkbiktPmF2YXM7ICphdmE7IGF2 YSsrKQorCQl7CisJCQlTRUNJdGVtCSAgICpidWY7CisJCQljaGFyCSAgICpjbjsKKworCQkJaWYg KENFUlRfR2V0QVZBVGFnKCphdmEpICE9IFNFQ19PSURfQVZBX0NPTU1PTl9OQU1FKQorCQkJCWNv bnRpbnVlOworCisJCQkvKiBGb3VuZCBhIENOLiBEZWNvZGUgYW5kIGNvcHkgaXQgaW50byBhIG5l d2x5IGFsbG9jYXRlZCBidWZmZXIuICovCisJCQlidWYgPSBDRVJUX0RlY29kZUFWQVZhbHVlKCYo KmF2YSktPnZhbHVlKTsKKwkJCWlmICghYnVmKQorCQkJeworCQkJCS8qCisJCQkJICogVGhpcyBm YWlsdXJlIGNhc2UgaXMgZGlmZmljdWx0IHRvIHRlc3QuIChTaW5jZSB0aGlzIGNvZGUgcnVucwor CQkJCSAqIGFmdGVyIGNlcnRpZmljYXRlIGF1dGhlbnRpY2F0aW9uIGhhcyBvdGhlcndpc2Ugc3Vj Y2VlZGVkLAorCQkJCSAqIHlvdSdkIG5lZWQgdG8gY29udmluY2UgYSBDQSBpbXBsZW1lbnRhdGlv biB0byBzaWduIGEKKwkJCQkgKiBjb3JydXB0ZWQgY2VydGlmaWNhdGUgaW4gb3JkZXIgdG8gZ2V0 IGhlcmUuKQorCQkJCSAqCisJCQkJICogRm9sbG93IHRoZSBiZWhhdmlvciBvZiBDRVJUX0dldENv bW1vbk5hbWUoKSBpbiB0aGlzIGNhc2UgYW5kCisJCQkJICogc2ltcGx5IHJldHVybiBOVUxMLCBh cyBpZiBhIENvbW1vbiBOYW1lIGhhZCBub3QgYmVlbiBmb3VuZC4KKwkJCQkgKi8KKwkJCQlnb3Rv IGZhaWw7CisJCQl9CisKKwkJCWNuID0gTWVtb3J5Q29udGV4dEFsbG9jKFRvcE1lbW9yeUNvbnRl eHQsIGJ1Zi0+bGVuICsgMSk7CisJCQltZW1jcHkoY24sIGJ1Zi0+ZGF0YSwgYnVmLT5sZW4pOwor CQkJY25bYnVmLT5sZW5dID0gJ1wwJzsKKworCQkJKmxlbiA9IGJ1Zi0+bGVuOworCisJCQlTRUNJ VEVNX0ZyZWVJdGVtKGJ1ZiwgUFJfVFJVRSk7CisJCQlyZXR1cm4gY247CisJCX0KKwl9CisKK2Zh aWw6CisJLyogTm90IGZvdW5kLiAqLworCSpsZW4gPSAwOworCXJldHVybiBOVUxMOworfQorCiBz dGF0aWMgU0VDU3RhdHVzCiBwZ19jZXJ0X2F1dGhfaGFuZGxlcih2b2lkICphcmcsIFBSRmlsZURl c2MgKiBmZCwgUFJCb29sIGNoZWNrc2lnLCBQUkJvb2wgaXNTZXJ2ZXIpCiB7CkBAIC0xMDU4LDI4 ICsxMTIxLDU5IEBAIHBnX2NlcnRfYXV0aF9oYW5kbGVyKHZvaWQgKmFyZywgUFJGaWxlRGVzYyAq IGZkLCBQUkJvb2wgY2hlY2tzaWcsIFBSQm9vbCBpc1NlcnZlCiAJUG9ydAkgICAqcG9ydCA9IChQ b3J0ICopIGFyZzsKIAlDRVJUQ2VydGlmaWNhdGUgKmNlcnQ7CiAJY2hhcgkgICAqcGVlcl9jbjsK LQlpbnQJCQlsZW47CisJdW5zaWduZWQgaW50IGxlbjsKIAogCXN0YXR1cyA9IFNTTF9BdXRoQ2Vy dGlmaWNhdGUoQ0VSVF9HZXREZWZhdWx0Q2VydERCKCksIHBvcnQtPnByX2ZkLCBjaGVja3NpZywg UFJfVFJVRSk7Ci0JaWYgKHN0YXR1cyA9PSBTRUNTdWNjZXNzKQorCWlmIChzdGF0dXMgIT0gU0VD U3VjY2VzcykKKwkJcmV0dXJuIHN0YXR1czsKKworCXBvcnQtPnBlZXJfY24gPSBOVUxMOworCXBv cnQtPnBlZXJfY2VydF92YWxpZCA9IGZhbHNlOworCisJY2VydCA9IFNTTF9QZWVyQ2VydGlmaWNh dGUocG9ydC0+cHJfZmQpOworCWlmICghY2VydCkKIAl7Ci0JCWNlcnQgPSBTU0xfUGVlckNlcnRp ZmljYXRlKHBvcnQtPnByX2ZkKTsKLQkJbGVuID0gc3RybGVuKGNlcnQtPnN1YmplY3ROYW1lKTsK LQkJcGVlcl9jbiA9IE1lbW9yeUNvbnRleHRBbGxvY1plcm8oVG9wTWVtb3J5Q29udGV4dCwgbGVu ICsgMSk7CisJCS8qIFNob3VsZG4ndCBiZSBwb3NzaWJsZTsgd2h5IGRpZCB3ZSBnZXQgYSBjbGll bnQgY2VydCBjYWxsYmFjaz8gKi8KKwkJQXNzZXJ0KGNlcnQgIT0gTlVMTCk7CiAKLQkJLyoKLQkJ ICogU2tpcCBvdmVyIHRoZSBrZXk9IHBvcnRpb24gb2YgdGhlIGtleT12YWx1ZSBjb250YWluaW5n IHRoZSBwZWVyIENOLgotCQkgKi8KLQkJaWYgKHN0cm5jbXAoY2VydC0+c3ViamVjdE5hbWUsICJD Tj0iLCAzKSA9PSAwKQotCQkJc3RybGNweShwZWVyX2NuLCBjZXJ0LT5zdWJqZWN0TmFtZSArIHN0 cmxlbigiQ049IiksIGxlbiArIDEpOwotCQllbHNlCi0JCQlzdHJsY3B5KHBlZXJfY24sIGNlcnQt PnN1YmplY3ROYW1lLCBsZW4gKyAxKTsKLQkJQ0VSVF9EZXN0cm95Q2VydGlmaWNhdGUoY2VydCk7 CisJCVBSX1NldEVycm9yKFNFQ19FUlJPUl9MSUJSQVJZX0ZBSUxVUkUsIDApOworCQlyZXR1cm4g U0VDRmFpbHVyZTsKKwl9CiAKLQkJcG9ydC0+cGVlcl9jbiA9IHBlZXJfY247CisJcGVlcl9jbiA9 IHJhd19zdWJqZWN0X2NvbW1vbl9uYW1lKGNlcnQsICZsZW4pOworCWlmICghcGVlcl9jbikKKwl7 CisJCS8qIE5vIENvbW1vbiBOYW1lLCBidXQgdGhlIGNlcnRpZmljYXRlIG90aGVyd2lzZSBjaGVj a3Mgb3V0LiAqLwogCQlwb3J0LT5wZWVyX2NlcnRfdmFsaWQgPSB0cnVlOworCisJCXN0YXR1cyA9 IFNFQ1N1Y2Nlc3M7CisJCWdvdG8gY2xlYW51cDsKIAl9CiAKKwkvKgorCSAqIFJlamVjdCBlbWJl ZGRlZCBOVUxMcyBpbiBjZXJ0aWZpY2F0ZSBjb21tb24gbmFtZSB0byBwcmV2ZW50IGF0dGFja3Mg bGlrZQorCSAqIENWRS0yMDA5LTQwMzQuCisJICovCisJaWYgKGxlbiAhPSBzdHJsZW4ocGVlcl9j bikpCisJeworCQllcmVwb3J0KENPTU1FUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RP Q09MX1ZJT0xBVElPTiksCisJCQkJIGVycm1zZygiU1NMIGNlcnRpZmljYXRlJ3MgY29tbW9uIG5h bWUgY29udGFpbnMgZW1iZWRkZWQgbnVsbCIpKSk7CisKKwkJcGZyZWUocGVlcl9jbik7CisJCVBS X1NldEVycm9yKFNFQ19FUlJPUl9DRVJUX05PVF9WQUxJRCwgMCk7CisKKwkJc3RhdHVzID0gU0VD RmFpbHVyZTsKKwkJZ290byBjbGVhbnVwOworCX0KKworCXBvcnQtPnBlZXJfY24gPSBwZWVyX2Nu OworCXBvcnQtPnBlZXJfY2VydF92YWxpZCA9IHRydWU7CisKKwlzdGF0dXMgPSBTRUNTdWNjZXNz OworCitjbGVhbnVwOgorCUNFUlRfRGVzdHJveUNlcnRpZmljYXRlKGNlcnQpOwogCXJldHVybiBz dGF0dXM7CiB9CiAK --_008_a9b663ae4a4b71525e88b75463c865a6693cb4cecamelvmwarecom_ Content-Type: text/x-patch; name="v23-0001-NSS-Frontend-Backend-and-build-infrastructure.patch" Content-Description: v23-0001-NSS-Frontend-Backend-and-build-infrastructure.patch Content-Disposition: attachment; filename="v23-0001-NSS-Frontend-Backend-and-build-infrastructure.patch"; size=118996; creation-date="Wed, 20 Jan 2021 17:07:08 GMT"; modification-date="Wed, 20 Jan 2021 17:07:08 GMT" Content-ID: <67198FD1E02CC943B068D8E34BE2F83E@namprd05.prod.outlook.com> Content-Transfer-Encoding: base64 RnJvbSAyOWQ2MzkwZGIzZGQ4ZDQxOGMyYWJkYTI0YzI4NWY2MjFmMWE1OTE3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgR3VzdGFmc3NvbiA8ZGFuaWVsQHllc3FsLnNlPgpE YXRlOiBXZWQsIDI4IE9jdCAyMDIwIDExOjE4OjQyICswMTAwClN1YmplY3Q6IFtQQVRDSCB2MjMg MS82XSBOU1MgRnJvbnRlbmQsIEJhY2tlbmQgYW5kIGJ1aWxkIGluZnJhc3RydWN0dXJlCgpUT0RP OgoJKiBTQ1JBTSBjaGFubmVsIGJpbmRpbmcgaXMgaW1wbGVtZW50ZWQgYnV0IGRvZXNuJ3Qgd29y awoJKiBGcm9udGVuZCBDUkwgY29uZmlndXJhdGlvbiBoYW5kbGluZwoJKiBTZXR0bGUgb24gYSBy ZXF1aXJlZCB2ZXJzaW9uIGluIGF1dG9jb25mCgkqIE1vdmUgcGdfbnNzLmggdG8gYSAuYyBmaWxl IGZvciBib3RoIGZyb250ZW5kIGFuZCBiYWNrZW5kCgpEYW5pZWwgR3VzdGFmc3NvbiwgQW5kcmV3 IER1bnN0YW4sIEphY29iIENoYW1waW9uCi0tLQogY29uZmlndXJlICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDQyMiArKysrLQogY29uZmlndXJlLmFjICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICA1NiArLQogLi4uL3Bvc3RncmVzX2Zkdy9leHBlY3Rl ZC9wb3N0Z3Jlc19mZHcub3V0ICAgIHwgICAgMiArLQogc3JjL01ha2VmaWxlLmdsb2JhbC5pbiAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogc3JjL2JhY2tlbmQvbGlicHEvTWFrZWZp bGUgICAgICAgICAgICAgICAgICAgIHwgICAgNiArLQogc3JjL2JhY2tlbmQvbGlicHEvYXV0aC5j ICAgICAgICAgICAgICAgICAgICAgIHwgICAgNyArCiBzcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1 cmUtbnNzLmMgICAgICAgICAgICAgfCAxMzU5ICsrKysrKysrKysrKysrKysrCiBzcmMvYmFja2Vu ZC9saWJwcS9iZS1zZWN1cmUuYyAgICAgICAgICAgICAgICAgfCAgICAzICsKIHNyYy9iYWNrZW5k L2xpYnBxL2hiYS5jICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIHNyYy9iYWNrZW5k L3V0aWxzL21pc2MvZ3VjLmMgICAgICAgICAgICAgICAgICB8ICAgMjAgKy0KIHNyYy9jb21tb24v TWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIHNyYy9pbmNsdWRl L2NvbW1vbi9wZ19uc3MuaCAgICAgICAgICAgICAgICAgICB8ICAxNzUgKysrCiBzcmMvaW5jbHVk ZS9saWJwcS9saWJwcS1iZS5oICAgICAgICAgICAgICAgICAgfCAgIDE1ICstCiBzcmMvaW5jbHVk ZS9saWJwcS9saWJwcS5oICAgICAgICAgICAgICAgICAgICAgfCAgICAzICsKIHNyYy9pbmNsdWRl L3BnX2NvbmZpZy5oLmluICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKwogc3JjL2luY2x1ZGUv cGdfY29uZmlnX21hbnVhbC5oICAgICAgICAgICAgICAgIHwgICAgNSArLQogc3JjL2ludGVyZmFj ZXMvbGlicHEvTWFrZWZpbGUgICAgICAgICAgICAgICAgIHwgICAxMyArLQogc3JjL2ludGVyZmFj ZXMvbGlicHEvZmUtY29ubmVjdC5jICAgICAgICAgICAgIHwgICAgNCArCiBzcmMvaW50ZXJmYWNl cy9saWJwcS9mZS1zZWN1cmUtbnNzLmMgICAgICAgICAgfCAxMTEyICsrKysrKysrKysrKysrCiBz cmMvaW50ZXJmYWNlcy9saWJwcS9mZS1zZWN1cmUuYyAgICAgICAgICAgICAgfCAgICA1ICstCiBz cmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1mZS5oICAgICAgICAgICAgICAgfCAgIDEzICstCiBz cmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1pbnQuaCAgICAgICAgICAgICAgfCAgIDIwICstCiBz cmMvdG9vbHMvbXN2Yy9Na3ZjYnVpbGQucG0gICAgICAgICAgICAgICAgICAgfCAgIDIyICstCiBz cmMvdG9vbHMvbXN2Yy9Tb2x1dGlvbi5wbSAgICAgICAgICAgICAgICAgICAgfCAgIDIwICsKIHNy Yy90b29scy9tc3ZjL2NvbmZpZ19kZWZhdWx0LnBsICAgICAgICAgICAgICB8ICAgIDEgKwogMjUg ZmlsZXMgY2hhbmdlZCwgMzIxNiBpbnNlcnRpb25zKCspLCA3NiBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUtbnNzLmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvaW5jbHVkZS9jb21tb24vcGdfbnNzLmgKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1zZWN1cmUtbnNzLmMKCmRpZmYgLS1naXQgYS9jb25m aWd1cmUgYi9jb25maWd1cmUKaW5kZXggOGFmNGI5OTAyMS4uY2M2MDg4YjU0NSAxMDA3NTUKLS0t IGEvY29uZmlndXJlCisrKyBiL2NvbmZpZ3VyZQpAQCAtNjUzLDYgKzY1Myw5IEBAIExJQk9CSlMK IFVVSURfTElCUwogTERBUF9MSUJTX0JFCiBMREFQX0xJQlNfRkUKK3dpdGhfc3NsCitOU1BSX0NP TkZJRworTlNTX0NPTkZJRwogUFRIUkVBRF9DRkxBR1MKIFBUSFJFQURfTElCUwogUFRIUkVBRF9D QwpAQCAtNzEwLDcgKzcxMyw2IEBAIHdpdGhfdXVpZAogd2l0aF9yZWFkbGluZQogd2l0aF9zeXN0 ZW1kCiB3aXRoX3NlbGludXgKLXdpdGhfb3BlbnNzbAogd2l0aF9sZGFwCiB3aXRoX2tyYl9zcnZu YW0KIGtyYl9zcnZ0YWIKQEAgLTc5OCw2ICs4MDAsNyBAQCBpbmZvZGlyCiBkb2NkaXIKIG9sZGlu Y2x1ZGVkaXIKIGluY2x1ZGVkaXIKK3J1bnN0YXRlZGlyCiBsb2NhbHN0YXRlZGlyCiBzaGFyZWRz dGF0ZWRpcgogc3lzY29uZmRpcgpAQCAtODU1LDcgKzg1OCw2IEBAIHdpdGhfcGFtCiB3aXRoX2Jz ZF9hdXRoCiB3aXRoX2xkYXAKIHdpdGhfYm9uam91cgotd2l0aF9vcGVuc3NsCiB3aXRoX3NlbGlu dXgKIHdpdGhfc3lzdGVtZAogd2l0aF9yZWFkbGluZQpAQCAtODY3LDYgKzg2OSw4IEBAIHdpdGhf bGlieHNsdAogd2l0aF9zeXN0ZW1fdHpkYXRhCiB3aXRoX3psaWIKIHdpdGhfZ251X2xkCit3aXRo X3NzbAord2l0aF9vcGVuc3NsCiBlbmFibGVfbGFyZ2VmaWxlCiAnCiAgICAgICBhY19wcmVjaW91 c192YXJzPSdidWlsZF9hbGlhcwpAQCAtOTM1LDYgKzkzOSw3IEBAIGRhdGFkaXI9JyR7ZGF0YXJv b3RkaXJ9Jwogc3lzY29uZmRpcj0nJHtwcmVmaXh9L2V0YycKIHNoYXJlZHN0YXRlZGlyPScke3By ZWZpeH0vY29tJwogbG9jYWxzdGF0ZWRpcj0nJHtwcmVmaXh9L3ZhcicKK3J1bnN0YXRlZGlyPSck e2xvY2Fsc3RhdGVkaXJ9L3J1bicKIGluY2x1ZGVkaXI9JyR7cHJlZml4fS9pbmNsdWRlJwogb2xk aW5jbHVkZWRpcj0nL3Vzci9pbmNsdWRlJwogZG9jZGlyPScke2RhdGFyb290ZGlyfS9kb2MvJHtQ QUNLQUdFX1RBUk5BTUV9JwpAQCAtMTE4Nyw2ICsxMTkyLDE1IEBAIGRvCiAgIHwgLXNpbGVudCB8 IC0tc2lsZW50IHwgLS1zaWxlbiB8IC0tc2lsZSB8IC0tc2lsKQogICAgIHNpbGVudD15ZXMgOzsK IAorICAtcnVuc3RhdGVkaXIgfCAtLXJ1bnN0YXRlZGlyIHwgLS1ydW5zdGF0ZWRpIHwgLS1ydW5z dGF0ZWQgXAorICB8IC0tcnVuc3RhdGUgfCAtLXJ1bnN0YXQgfCAtLXJ1bnN0YSB8IC0tcnVuc3Qg fCAtLXJ1bnMgXAorICB8IC0tcnVuIHwgLS1ydSB8IC0tcikKKyAgICBhY19wcmV2PXJ1bnN0YXRl ZGlyIDs7CisgIC1ydW5zdGF0ZWRpcj0qIHwgLS1ydW5zdGF0ZWRpcj0qIHwgLS1ydW5zdGF0ZWRp PSogfCAtLXJ1bnN0YXRlZD0qIFwKKyAgfCAtLXJ1bnN0YXRlPSogfCAtLXJ1bnN0YXQ9KiB8IC0t cnVuc3RhPSogfCAtLXJ1bnN0PSogfCAtLXJ1bnM9KiBcCisgIHwgLS1ydW49KiB8IC0tcnU9KiB8 IC0tcj0qKQorICAgIHJ1bnN0YXRlZGlyPSRhY19vcHRhcmcgOzsKKwogICAtc2JpbmRpciB8IC0t c2JpbmRpciB8IC0tc2JpbmRpIHwgLS1zYmluZCB8IC0tc2JpbiB8IC0tc2JpIHwgLS1zYikKICAg ICBhY19wcmV2PXNiaW5kaXIgOzsKICAgLXNiaW5kaXI9KiB8IC0tc2JpbmRpcj0qIHwgLS1zYmlu ZGk9KiB8IC0tc2JpbmQ9KiB8IC0tc2Jpbj0qIFwKQEAgLTEzMjQsNyArMTMzOCw3IEBAIGZpCiBm b3IgYWNfdmFyIGluCWV4ZWNfcHJlZml4IHByZWZpeCBiaW5kaXIgc2JpbmRpciBsaWJleGVjZGly IGRhdGFyb290ZGlyIFwKIAkJZGF0YWRpciBzeXNjb25mZGlyIHNoYXJlZHN0YXRlZGlyIGxvY2Fs c3RhdGVkaXIgaW5jbHVkZWRpciBcCiAJCW9sZGluY2x1ZGVkaXIgZG9jZGlyIGluZm9kaXIgaHRt bGRpciBkdmlkaXIgcGRmZGlyIHBzZGlyIFwKLQkJbGliZGlyIGxvY2FsZWRpciBtYW5kaXIKKwkJ bGliZGlyIGxvY2FsZWRpciBtYW5kaXIgcnVuc3RhdGVkaXIKIGRvCiAgIGV2YWwgYWNfdmFsPVwk JGFjX3ZhcgogICAjIFJlbW92ZSB0cmFpbGluZyBzbGFzaGVzLgpAQCAtMTQ3Nyw2ICsxNDkxLDcg QEAgRmluZSB0dW5pbmcgb2YgdGhlIGluc3RhbGxhdGlvbiBkaXJlY3RvcmllczoKICAgLS1zeXNj b25mZGlyPURJUiAgICAgICAgcmVhZC1vbmx5IHNpbmdsZS1tYWNoaW5lIGRhdGEgW1BSRUZJWC9l dGNdCiAgIC0tc2hhcmVkc3RhdGVkaXI9RElSICAgIG1vZGlmaWFibGUgYXJjaGl0ZWN0dXJlLWlu ZGVwZW5kZW50IGRhdGEgW1BSRUZJWC9jb21dCiAgIC0tbG9jYWxzdGF0ZWRpcj1ESVIgICAgIG1v ZGlmaWFibGUgc2luZ2xlLW1hY2hpbmUgZGF0YSBbUFJFRklYL3Zhcl0KKyAgLS1ydW5zdGF0ZWRp cj1ESVIgICAgICAgbW9kaWZpYWJsZSBwZXItcHJvY2VzcyBkYXRhIFtMT0NBTFNUQVRFRElSL3J1 bl0KICAgLS1saWJkaXI9RElSICAgICAgICAgICAgb2JqZWN0IGNvZGUgbGlicmFyaWVzIFtFUFJF RklYL2xpYl0KICAgLS1pbmNsdWRlZGlyPURJUiAgICAgICAgQyBoZWFkZXIgZmlsZXMgW1BSRUZJ WC9pbmNsdWRlXQogICAtLW9sZGluY2x1ZGVkaXI9RElSICAgICBDIGhlYWRlciBmaWxlcyBmb3Ig bm9uLWdjYyBbL3Vzci9pbmNsdWRlXQpAQCAtMTU1Nyw3ICsxNTcyLDYgQEAgT3B0aW9uYWwgUGFj a2FnZXM6CiAgIC0td2l0aC1ic2QtYXV0aCAgICAgICAgIGJ1aWxkIHdpdGggQlNEIEF1dGhlbnRp Y2F0aW9uIHN1cHBvcnQKICAgLS13aXRoLWxkYXAgICAgICAgICAgICAgYnVpbGQgd2l0aCBMREFQ IHN1cHBvcnQKICAgLS13aXRoLWJvbmpvdXIgICAgICAgICAgYnVpbGQgd2l0aCBCb25qb3VyIHN1 cHBvcnQKLSAgLS13aXRoLW9wZW5zc2wgICAgICAgICAgYnVpbGQgd2l0aCBPcGVuU1NMIHN1cHBv cnQKICAgLS13aXRoLXNlbGludXggICAgICAgICAgYnVpbGQgd2l0aCBTRUxpbnV4IHN1cHBvcnQK ICAgLS13aXRoLXN5c3RlbWQgICAgICAgICAgYnVpbGQgd2l0aCBzeXN0ZW1kIHN1cHBvcnQKICAg LS13aXRob3V0LXJlYWRsaW5lICAgICAgZG8gbm90IHVzZSBHTlUgUmVhZGxpbmUgbm9yIEJTRCBM aWJlZGl0IGZvciBlZGl0aW5nCkBAIC0xNTcxLDYgKzE1ODUsOCBAQCBPcHRpb25hbCBQYWNrYWdl czoKICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlIHN5c3RlbSB0aW1lIHpvbmUgZGF0YSBp biBESVIKICAgLS13aXRob3V0LXpsaWIgICAgICAgICAgZG8gbm90IHVzZSBabGliCiAgIC0td2l0 aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVm YXVsdD1ub10KKyAgLS13aXRoLXNzbD1MSUIgICAgICAgICAgdXNlIExJQiBmb3IgU1NML1RMUyBz dXBwb3J0IChvcGVuc3NsLCBuc3MpCisgIC0td2l0aC1vcGVuc3NsICAgICAgICAgIG9ic29sZXRl IHNwZWxsaW5nIG9mIC0td2l0aC1zc2w9b3BlbnNzbAogCiBTb21lIGluZmx1ZW50aWFsIGVudmly b25tZW50IHZhcmlhYmxlczoKICAgQ0MgICAgICAgICAgQyBjb21waWxlciBjb21tYW5kCkBAIC04 MDcxLDQxICs4MDg3LDYgQEAgZmkKICRhc19lY2hvICIkd2l0aF9ib25qb3VyIiA+JjY7IH0KIAog Ci0jCi0jIE9wZW5TU0wKLSMKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogY2hlY2tpbmcgd2hldGhlciB0byBidWlsZCB3aXRoIE9wZW5TU0wgc3VwcG9ydCIgPiY1Ci0k YXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRvIGJ1aWxkIHdpdGggT3BlblNTTCBzdXBwb3J0 Li4uICIgPiY2OyB9Ci0KLQotCi0jIENoZWNrIHdoZXRoZXIgLS13aXRoLW9wZW5zc2wgd2FzIGdp dmVuLgotaWYgdGVzdCAiJHt3aXRoX29wZW5zc2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotICB3aXRo dmFsPSR3aXRoX29wZW5zc2w7Ci0gIGNhc2UgJHdpdGh2YWwgaW4KLSAgICB5ZXMpCi0KLSRhc19l Y2hvICIjZGVmaW5lIFVTRV9PUEVOU1NMIDEiID4+Y29uZmRlZnMuaAotCi0gICAgICA7OwotICAg IG5vKQotICAgICAgOgotICAgICAgOzsKLSAgICAqKQotICAgICAgYXNfZm5fZXJyb3IgJD8gIm5v IGFyZ3VtZW50IGV4cGVjdGVkIGZvciAtLXdpdGgtb3BlbnNzbCBvcHRpb24iICIkTElORU5PIiA1 Ci0gICAgICA7OwotICBlc2FjCi0KLWVsc2UKLSAgd2l0aF9vcGVuc3NsPW5vCi0KLWZpCi0KLQot eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR3aXRoX29w ZW5zc2wiID4mNQotJGFzX2VjaG8gIiR3aXRoX29wZW5zc2wiID4mNjsgfQotCi0KICMKICMgU0VM aW51eAogIwpAQCAtMTIxNzksNyArMTIxNjAsNjQgQEAgZmkKICAgZmkKIGZpCiAKKyMKKyMgU1NM IExpYnJhcnkKKyMKKyMgVGhlcmUgYXJlIGN1cnJlbnRseSB0d28gc3VwcG9ydGVkIFNTTC9UTFMg bGlicmFyaWVzLCBPcGVuU1NMIGFuZCBOU1MuCisjCisKKworCisjIENoZWNrIHdoZXRoZXIgLS13 aXRoLXNzbCB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfc3NsK3NldH0iID0gc2V0OyB0aGVu IDoKKyAgd2l0aHZhbD0kd2l0aF9zc2w7CisgIGNhc2UgJHdpdGh2YWwgaW4KKyAgICB5ZXMpCisg ICAgICBhc19mbl9lcnJvciAkPyAiYXJndW1lbnQgcmVxdWlyZWQgZm9yIC0td2l0aC1zc2wgb3B0 aW9uIiAiJExJTkVOTyIgNQorICAgICAgOzsKKyAgICBubykKKyAgICAgIGFzX2ZuX2Vycm9yICQ/ ICJhcmd1bWVudCByZXF1aXJlZCBmb3IgLS13aXRoLXNzbCBvcHRpb24iICIkTElORU5PIiA1Cisg ICAgICA7OworICAgICopCisKKyAgICAgIDs7CisgIGVzYWMKKworZmkKKworCitpZiB0ZXN0IHgi JHdpdGhfc3NsIiA9IHgiIiA7IHRoZW4KKyAgd2l0aF9zc2w9bm8KK2ZpCisKKworCisjIENoZWNr IHdoZXRoZXIgLS13aXRoLW9wZW5zc2wgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX29wZW5z c2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICB3aXRodmFsPSR3aXRoX29wZW5zc2w7CisgIGNhc2Ug JHdpdGh2YWwgaW4KKyAgICB5ZXMpCisgICAgICA6CisgICAgICA7OworICAgIG5vKQorICAgICAg OgorICAgICAgOzsKKyAgICAqKQorICAgICAgYXNfZm5fZXJyb3IgJD8gIm5vIGFyZ3VtZW50IGV4 cGVjdGVkIGZvciAtLXdpdGgtb3BlbnNzbCBvcHRpb24iICIkTElORU5PIiA1CisgICAgICA7Owor ICBlc2FjCisKK2Vsc2UKKyAgd2l0aF9vcGVuc3NsPW5vCisKK2ZpCisKKwogaWYgdGVzdCAiJHdp dGhfb3BlbnNzbCIgPSB5ZXMgOyB0aGVuCisgIHdpdGhfc3NsPW9wZW5zc2wKK2ZpCisKK2lmIHRl c3QgIiR3aXRoX3NzbCIgPSBvcGVuc3NsIDsgdGhlbgogICAgICMgTWluaW11bSByZXF1aXJlZCBP cGVuU1NMIHZlcnNpb24gaXMgMS4wLjEKIAogJGFzX2VjaG8gIiNkZWZpbmUgT1BFTlNTTF9BUElf Q09NUEFUIDB4MTAwMDEwMDBMIiA+PmNvbmZkZWZzLmgKQEAgLTEyNDQwLDggKzEyNDc4LDI4MCBA QCBfQUNFT0YKIGZpCiBkb25lCiAKKworJGFzX2VjaG8gIiNkZWZpbmUgVVNFX09QRU5TU0wgMSIg Pj5jb25mZGVmcy5oCisKK2VsaWYgdGVzdCAiJHdpdGhfc3NsIiA9IG5zcyA7IHRoZW4KKyAgIyBU T0RPOiBmYWxsYmFjayBpbiBjYXNlIG5zcy1jb25maWcvbnNwci1jb25maWcgYXJlbid0IGZvdW5k LgorICBpZiB0ZXN0IC16ICIkTlNTX0NPTkZJRyI7IHRoZW4KKyAgZm9yIGFjX3Byb2cgaW4gbnNz LWNvbmZpZworZG8KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNv IGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Byb2c7 IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hl Y2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29y ZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wYXRoX05TU19DT05GSUcrOn0gZmFsc2U7IHRoZW4g OgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICROU1NfQ09ORklH IGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX05TU19DT05GSUc9IiROU1Nf Q09ORklHIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAg OzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFz X2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGly IiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9l eHRlbnNpb25zOyBkbworICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQk YWNfZXhlY19leHQiOyB0aGVuCisgICAgYWNfY3ZfcGF0aF9OU1NfQ09ORklHPSIkYXNfZGlyLyRh Y193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFr IDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgIDs7Citlc2FjCitm aQorTlNTX0NPTkZJRz0kYWNfY3ZfcGF0aF9OU1NfQ09ORklHCitpZiB0ZXN0IC1uICIkTlNTX0NP TkZJRyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy ZXN1bHQ6ICROU1NfQ09ORklHIiA+JjUKKyRhc19lY2hvICIkTlNTX0NPTkZJRyIgPiY2OyB9Citl bHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBu byIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCisgIHRlc3QgLW4gIiROU1NfQ09O RklHIiAmJiBicmVhaworZG9uZQorCitlbHNlCisgICMgUmVwb3J0IHRoZSB2YWx1ZSBvZiBOU1Nf Q09ORklHIGluIGNvbmZpZ3VyZSdzIG91dHB1dCBpbiBhbGwgY2FzZXMuCisgIHsgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIE5TU19DT05GSUciID4m NQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIE5TU19DT05GSUcuLi4gIiA+JjY7IH0KKyAgeyAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICROU1NfQ09ORklH IiA+JjUKKyRhc19lY2hvICIkTlNTX0NPTkZJRyIgPiY2OyB9CitmaQorCisgIGlmIHRlc3QgLXog IiROU1BSX0NPTkZJRyI7IHRoZW4KKyAgZm9yIGFjX3Byb2cgaW4gbnNwci1jb25maWcKK2RvCisg ICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBw cm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCit7 ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNf d29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0K K2lmICR7YWNfY3ZfcGF0aF9OU1BSX0NPTkZJRys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hv X24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhc2UgJE5TUFJfQ09ORklHIGluCisgIFtcXC9d KiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX05TUFJfQ09ORklHPSIkTlNQUl9DT05GSUciICMg TGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorICA7OworICAqKQor ICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQ QVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rp cj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7 IGRvCisgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4 dCI7IHRoZW4KKyAgICBhY19jdl9wYXRoX05TUFJfQ09ORklHPSIkYXNfZGlyLyRhY193b3JkJGFj X2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZv dW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkK K2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgIDs7Citlc2FjCitmaQorTlNQUl9D T05GSUc9JGFjX2N2X3BhdGhfTlNQUl9DT05GSUcKK2lmIHRlc3QgLW4gIiROU1BSX0NPTkZJRyI7 IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6 ICROU1BSX0NPTkZJRyIgPiY1CiskYXNfZWNobyAiJE5TUFJfQ09ORklHIiA+JjY7IH0KK2Vsc2UK KyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+ JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKKyAgdGVzdCAtbiAiJE5TUFJfQ09ORklH IiAmJiBicmVhaworZG9uZQorCitlbHNlCisgICMgUmVwb3J0IHRoZSB2YWx1ZSBvZiBOU1BSX0NP TkZJRyBpbiBjb25maWd1cmUncyBvdXRwdXQgaW4gYWxsIGNhc2VzLgorICB7ICRhc19lY2hvICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBOU1BSX0NPTkZJRyIgPiY1 CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgTlNQUl9DT05GSUcuLi4gIiA+JjY7IH0KKyAgeyAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICROU1BSX0NPTkZJ RyIgPiY1CiskYXNfZWNobyAiJE5TUFJfQ09ORklHIiA+JjY7IH0KK2ZpCisKKyAgaWYgdGVzdCAt biAiJE5TU19DT05GSUciOyB0aGVuCisgICAgTlNTX0xJQlM9YCROU1NfQ09ORklHIC0tbGlic2AK KwlOU1NfQ0ZMQUdTPWAkTlNTX0NPTkZJRyAtLWNmbGFnc2AKKyAgZmkKKyAgaWYgdGVzdCAtbiAi JE5TUFJfQ09ORklHIjsgdGhlbgorCU5TUFJfTElCUz1gJE5TUFJfQ09ORklHIC0tbGlic2AKKwlO U1BSX0NGTEFHUz1gJE5TUFJfQ09ORklHIC0tY2ZsYWdzYAorICBmaQorCisgIExERkxBR1M9IiRM REZMQUdTICROU1NfTElCUyAkTlNQUl9MSUJTIgorICBDRkxBR1M9IiRDRkxBR1MgJE5TU19DRkxB R1MgJE5TUFJfQ0ZMQUdTIgorCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogY2hlY2tpbmcgZm9yIE5TU19Jbml0Q29udGV4dCBpbiAtbG5zczMiID4mNQorJGFzX2Vj aG9fbiAiY2hlY2tpbmcgZm9yIE5TU19Jbml0Q29udGV4dCBpbiAtbG5zczMuLi4gIiA+JjY7IH0K K2lmICR7YWNfY3ZfbGliX25zczNfTlNTX0luaXRDb250ZXh0Kzp9IGZhbHNlOyB0aGVuIDoKKyAg JGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElC Uz0kTElCUworTElCUz0iLWxuc3MzICAkTElCUyIKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0Yg PmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworLyogT3ZlcnJpZGUg YW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCisgICBVc2UgY2hh ciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKKyAgIGJ1 aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4g ICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorY2hhciBOU1NfSW5p dENvbnRleHQgKCk7CitpbnQKK21haW4gKCkKK3sKK3JldHVybiBOU1NfSW5pdENvbnRleHQgKCk7 CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5F Tk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGliX25zczNfTlNTX0luaXRDb250ZXh0PXllcworZWxzZQor ICBhY19jdl9saWJfbnNzM19OU1NfSW5pdENvbnRleHQ9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0 ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29u ZnRlc3QuJGFjX2V4dAorTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworZmkKK3sgJGFzX2Vj aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX25zczNf TlNTX0luaXRDb250ZXh0IiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX25zczNfTlNTX0luaXRD b250ZXh0IiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfbGliX25zczNfTlNTX0luaXRDb250ZXh0 IiA9IHh5ZXM7IHRoZW4gOgorICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEhB VkVfTElCTlNTMyAxCitfQUNFT0YKKworICBMSUJTPSItbG5zczMgJExJQlMiCisKK2Vsc2UKKyAg YXNfZm5fZXJyb3IgJD8gImxpYnJhcnkgJ25zczMnIGlzIHJlcXVpcmVkIGZvciBOU1MiICIkTElO RU5PIiA1CiBmaQogCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog Y2hlY2tpbmcgZm9yIFBSX0dldERlZmF1bHRJT01ldGhvZHMgaW4gLWxuc3ByNCIgPiY1CiskYXNf ZWNob19uICJjaGVja2luZyBmb3IgUFJfR2V0RGVmYXVsdElPTWV0aG9kcyBpbiAtbG5zcHI0Li4u ICIgPiY2OyB9CitpZiAke2FjX2N2X2xpYl9uc3ByNF9QUl9HZXREZWZhdWx0SU9NZXRob2RzKzp9 IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNf Y2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWxuc3ByNCAgJExJQlMiCitjYXQgY29u ZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4g ICovCisKKy8qIE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFu IGVycm9yLgorICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0 eXBlIG9mIGEgR0NDCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUg d291bGQgc3RpbGwgYXBwbHkuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisj ZW5kaWYKK2NoYXIgUFJfR2V0RGVmYXVsdElPTWV0aG9kcyAoKTsKK2ludAorbWFpbiAoKQorewor cmV0dXJuIFBSX0dldERlZmF1bHRJT01ldGhvZHMgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9Citf QUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGli X25zcHI0X1BSX0dldERlZmF1bHRJT01ldGhvZHM9eWVzCitlbHNlCisgIGFjX2N2X2xpYl9uc3By NF9QUl9HZXREZWZhdWx0SU9NZXRob2RzPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIg Y29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRh Y19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCit7ICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9uc3ByNF9QUl9HZXRE ZWZhdWx0SU9NZXRob2RzIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX25zcHI0X1BSX0dldERl ZmF1bHRJT01ldGhvZHMiID4mNjsgfQoraWYgdGVzdCAieCRhY19jdl9saWJfbnNwcjRfUFJfR2V0 RGVmYXVsdElPTWV0aG9kcyIgPSB4eWVzOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9B Q0VPRgorI2RlZmluZSBIQVZFX0xJQk5TUFI0IDEKK19BQ0VPRgorCisgIExJQlM9Ii1sbnNwcjQg JExJQlMiCisKK2Vsc2UKKyAgYXNfZm5fZXJyb3IgJD8gImxpYnJhcnkgJ25zcHI0JyBpcyByZXF1 aXJlZCBmb3IgTlNTIiAiJExJTkVOTyIgNQorZmkKKworICB7ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBTU0xfR2V0SW1wbGVtZW50ZWRDaXBoZXJz IGluIC1sc3NsMyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgU1NMX0dldEltcGxlbWVu dGVkQ2lwaGVycyBpbiAtbHNzbDMuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfbGliX3NzbDNfU1NM X0dldEltcGxlbWVudGVkQ2lwaGVycys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihj YWNoZWQpICIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9 Ii1sc3NsMyAgJExJQlMiCitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNf ZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKy8qIE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJu YWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgorICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQg bWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCisgICBidWlsdGluIGFuZCB0aGVu IGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworI2lmZGVmIF9f Y3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKK2NoYXIgU1NMX0dldEltcGxlbWVudGVkQ2lw aGVycyAoKTsKK2ludAorbWFpbiAoKQoreworcmV0dXJuIFNTTF9HZXRJbXBsZW1lbnRlZENpcGhl cnMgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsg IiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGliX3NzbDNfU1NMX0dldEltcGxlbWVudGVkQ2lw aGVycz15ZXMKK2Vsc2UKKyAgYWNfY3ZfbGliX3NzbDNfU1NMX0dldEltcGxlbWVudGVkQ2lwaGVy cz1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAor ICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19s aWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiByZXN1bHQ6ICRhY19jdl9saWJfc3NsM19TU0xfR2V0SW1wbGVtZW50ZWRDaXBoZXJzIiA+JjUK KyRhc19lY2hvICIkYWNfY3ZfbGliX3NzbDNfU1NMX0dldEltcGxlbWVudGVkQ2lwaGVycyIgPiY2 OyB9CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9zc2wzX1NTTF9HZXRJbXBsZW1lbnRlZENpcGhlcnMi ID0geHllczsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFW RV9MSUJTU0wzIDEKK19BQ0VPRgorCisgIExJQlM9Ii1sc3NsMyAkTElCUyIKKworZWxzZQorICBh c19mbl9lcnJvciAkPyAibGlicmFyeSAnc3NsMycgaXMgcmVxdWlyZWQgZm9yIE5TUyIgIiRMSU5F Tk8iIDUKK2ZpCisKKworJGFzX2VjaG8gIiNkZWZpbmUgVVNFX05TUyAxIiA+PmNvbmZkZWZzLmgK KworZWxpZiB0ZXN0ICIkd2l0aF9zc2wiICE9IG5vIDsgdGhlbgorICBhc19mbl9lcnJvciAkPyAi LS13aXRoLXNzbCBtdXN0IHNwZWNpZnkgb25lIG9mIG9wZW5zc2wgb3IgbnNzIiAiJExJTkVOTyIg NQorZmkKKworCiBpZiB0ZXN0ICIkd2l0aF9wYW0iID0geWVzIDsgdGhlbgogICB7ICRhc19lY2hv ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBwYW1fc3RhcnQgaW4g LWxwYW0iID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHBhbV9zdGFydCBpbiAtbHBhbS4u LiAiID4mNjsgfQpAQCAtMTMzMjcsNyArMTM2MzcsNyBAQCBkb25lCiAKIGZpCiAKLWlmIHRlc3Qg IiR3aXRoX29wZW5zc2wiID0geWVzIDsgdGhlbgoraWYgdGVzdCAiJHdpdGhfc3NsIiA9IG9wZW5z c2wgOyB0aGVuCiAgIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwgIiRMSU5FTk8iICJvcGVu c3NsL3NzbC5oIiAiYWNfY3ZfaGVhZGVyX29wZW5zc2xfc3NsX2giICIkYWNfaW5jbHVkZXNfZGVm YXVsdCIKIGlmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX29wZW5zc2xfc3NsX2giID0geHllczsgdGhl biA6CiAKQEAgLTEzMzQ0LDYgKzEzNjU0LDI1IEBAIGVsc2UKIGZpCiAKIAorZmkKKworaWYgdGVz dCAiJHdpdGhfc3NsIiA9IG5zcyA7IHRoZW4KKyAgYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3Jl bCAiJExJTkVOTyIgIm5zcy9zc2wuaCIgImFjX2N2X2hlYWRlcl9uc3Nfc3NsX2giICIkYWNfaW5j bHVkZXNfZGVmYXVsdCIKK2lmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX25zc19zc2xfaCIgPSB4eWVz OyB0aGVuIDoKKworZWxzZQorICBhc19mbl9lcnJvciAkPyAiaGVhZGVyIGZpbGUgPG5zcy9zc2wu aD4gaXMgcmVxdWlyZWQgZm9yIE5TUyIgIiRMSU5FTk8iIDUKK2ZpCisKKworICBhY19mbl9jX2No ZWNrX2hlYWRlcl9tb25ncmVsICIkTElORU5PIiAibnNzL25zcy5oIiAiYWNfY3ZfaGVhZGVyX25z c19uc3NfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgoraWYgdGVzdCAieCRhY19jdl9oZWFkZXJf bnNzX25zc19oIiA9IHh5ZXM7IHRoZW4gOgorCitlbHNlCisgIGFzX2ZuX2Vycm9yICQ/ICJoZWFk ZXIgZmlsZSA8bnNzL25zcy5oPiBpcyByZXF1aXJlZCBmb3IgTlNTIiAiJExJTkVOTyIgNQorZmkK KworCiBmaQogCiBpZiB0ZXN0ICIkd2l0aF9wYW0iID0geWVzIDsgdGhlbgpAQCAtMTQ2ODksNyAr MTUwMTgsNyBAQCBlbHNlCiAgICAgV2UgY2FuJ3Qgc2ltcGx5IGRlZmluZSBMQVJHRV9PRkZfVCB0 byBiZSA5MjIzMzcyMDM2ODU0Nzc1ODA3LAogICAgIHNpbmNlIHNvbWUgQysrIGNvbXBpbGVycyBt YXNxdWVyYWRpbmcgYXMgQyBjb21waWxlcnMKICAgICBpbmNvcnJlY3RseSByZWplY3QgOTIyMzM3 MjAzNjg1NDc3NTgwNy4gICovCi0jZGVmaW5lIExBUkdFX09GRl9UICgoKG9mZl90KSAxIDw8IDYy KSAtIDEgKyAoKG9mZl90KSAxIDw8IDYyKSkKKyNkZWZpbmUgTEFSR0VfT0ZGX1QgKCgoKG9mZl90 KSAxIDw8IDMxKSA8PCAzMSkgLSAxICsgKCgob2ZmX3QpIDEgPDwgMzEpIDw8IDMxKSkKICAgaW50 IG9mZl90X2lzX2xhcmdlWyhMQVJHRV9PRkZfVCAlIDIxNDc0ODM2MjkgPT0gNzIxCiAJCSAgICAg ICAmJiBMQVJHRV9PRkZfVCAlIDIxNDc0ODM2NDcgPT0gMSkKIAkJICAgICAgPyAxIDogLTFdOwpA QCAtMTQ3MzUsNyArMTUwNjQsNyBAQCBlbHNlCiAgICAgV2UgY2FuJ3Qgc2ltcGx5IGRlZmluZSBM QVJHRV9PRkZfVCB0byBiZSA5MjIzMzcyMDM2ODU0Nzc1ODA3LAogICAgIHNpbmNlIHNvbWUgQysr IGNvbXBpbGVycyBtYXNxdWVyYWRpbmcgYXMgQyBjb21waWxlcnMKICAgICBpbmNvcnJlY3RseSBy ZWplY3QgOTIyMzM3MjAzNjg1NDc3NTgwNy4gICovCi0jZGVmaW5lIExBUkdFX09GRl9UICgoKG9m Zl90KSAxIDw8IDYyKSAtIDEgKyAoKG9mZl90KSAxIDw8IDYyKSkKKyNkZWZpbmUgTEFSR0VfT0ZG X1QgKCgoKG9mZl90KSAxIDw8IDMxKSA8PCAzMSkgLSAxICsgKCgob2ZmX3QpIDEgPDwgMzEpIDw8 IDMxKSkKICAgaW50IG9mZl90X2lzX2xhcmdlWyhMQVJHRV9PRkZfVCAlIDIxNDc0ODM2MjkgPT0g NzIxCiAJCSAgICAgICAmJiBMQVJHRV9PRkZfVCAlIDIxNDc0ODM2NDcgPT0gMSkKIAkJICAgICAg PyAxIDogLTFdOwpAQCAtMTQ3NTksNyArMTUwODgsNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVy ciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKICAgICBXZSBjYW4ndCBzaW1w bHkgZGVmaW5lIExBUkdFX09GRl9UIHRvIGJlIDkyMjMzNzIwMzY4NTQ3NzU4MDcsCiAgICAgc2lu Y2Ugc29tZSBDKysgY29tcGlsZXJzIG1hc3F1ZXJhZGluZyBhcyBDIGNvbXBpbGVycwogICAgIGlu Y29ycmVjdGx5IHJlamVjdCA5MjIzMzcyMDM2ODU0Nzc1ODA3LiAgKi8KLSNkZWZpbmUgTEFSR0Vf T0ZGX1QgKCgob2ZmX3QpIDEgPDwgNjIpIC0gMSArICgob2ZmX3QpIDEgPDwgNjIpKQorI2RlZmlu ZSBMQVJHRV9PRkZfVCAoKCgob2ZmX3QpIDEgPDwgMzEpIDw8IDMxKSAtIDEgKyAoKChvZmZfdCkg MSA8PCAzMSkgPDwgMzEpKQogICBpbnQgb2ZmX3RfaXNfbGFyZ2VbKExBUkdFX09GRl9UICUgMjE0 NzQ4MzYyOSA9PSA3MjEKIAkJICAgICAgICYmIExBUkdFX09GRl9UICUgMjE0NzQ4MzY0NyA9PSAx KQogCQkgICAgICA/IDEgOiAtMV07CkBAIC0xNDgwNCw3ICsxNTEzMyw3IEBAIGVsc2UKICAgICBX ZSBjYW4ndCBzaW1wbHkgZGVmaW5lIExBUkdFX09GRl9UIHRvIGJlIDkyMjMzNzIwMzY4NTQ3NzU4 MDcsCiAgICAgc2luY2Ugc29tZSBDKysgY29tcGlsZXJzIG1hc3F1ZXJhZGluZyBhcyBDIGNvbXBp bGVycwogICAgIGluY29ycmVjdGx5IHJlamVjdCA5MjIzMzcyMDM2ODU0Nzc1ODA3LiAgKi8KLSNk ZWZpbmUgTEFSR0VfT0ZGX1QgKCgob2ZmX3QpIDEgPDwgNjIpIC0gMSArICgob2ZmX3QpIDEgPDwg NjIpKQorI2RlZmluZSBMQVJHRV9PRkZfVCAoKCgob2ZmX3QpIDEgPDwgMzEpIDw8IDMxKSAtIDEg KyAoKChvZmZfdCkgMSA8PCAzMSkgPDwgMzEpKQogICBpbnQgb2ZmX3RfaXNfbGFyZ2VbKExBUkdF X09GRl9UICUgMjE0NzQ4MzYyOSA9PSA3MjEKIAkJICAgICAgICYmIExBUkdFX09GRl9UICUgMjE0 NzQ4MzY0NyA9PSAxKQogCQkgICAgICA/IDEgOiAtMV07CkBAIC0xNDgyOCw3ICsxNTE1Nyw3IEBA IHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFj X2V4dAogICAgIFdlIGNhbid0IHNpbXBseSBkZWZpbmUgTEFSR0VfT0ZGX1QgdG8gYmUgOTIyMzM3 MjAzNjg1NDc3NTgwNywKICAgICBzaW5jZSBzb21lIEMrKyBjb21waWxlcnMgbWFzcXVlcmFkaW5n IGFzIEMgY29tcGlsZXJzCiAgICAgaW5jb3JyZWN0bHkgcmVqZWN0IDkyMjMzNzIwMzY4NTQ3NzU4 MDcuICAqLwotI2RlZmluZSBMQVJHRV9PRkZfVCAoKChvZmZfdCkgMSA8PCA2MikgLSAxICsgKChv ZmZfdCkgMSA8PCA2MikpCisjZGVmaW5lIExBUkdFX09GRl9UICgoKChvZmZfdCkgMSA8PCAzMSkg PDwgMzEpIC0gMSArICgoKG9mZl90KSAxIDw8IDMxKSA8PCAzMSkpCiAgIGludCBvZmZfdF9pc19s YXJnZVsoTEFSR0VfT0ZGX1QgJSAyMTQ3NDgzNjI5ID09IDcyMQogCQkgICAgICAgJiYgTEFSR0Vf T0ZGX1QgJSAyMTQ3NDgzNjQ3ID09IDEpCiAJCSAgICAgID8gMSA6IC0xXTsKQEAgLTE4MTA2LDYg KzE4NDM1LDkgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hpY2ggcmFuZG9tIG51bWJlciBzb3Vy Y2UgdG8gdXNlLi4uICIgPiY2OyB9CiBpZiB0ZXN0IHgiJHdpdGhfb3BlbnNzbCIgPSB4InllcyIg OyB0aGVuCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0 OiBPcGVuU1NMIiA+JjUKICRhc19lY2hvICJPcGVuU1NMIiA+JjY7IH0KK2VsaWYgdGVzdCB4IiR3 aXRoX25zcyIgPSB4InllcyIgOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogcmVzdWx0OiBOU1MiID4mNQorJGFzX2VjaG8gIk5TUyIgPiY2OyB9CiBlbGlm IHRlc3QgeCIkUE9SVE5BTUUiID0geCJ3aW4zMiIgOyB0aGVuCiAgIHsgJGFzX2VjaG8gIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBXaW5kb3dzIG5hdGl2ZSIgPiY1CiAkYXNf ZWNobyAiV2luZG93cyBuYXRpdmUiID4mNjsgfQpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIv Y29uZmlndXJlLmFjCmluZGV4IDg2OGE5NGM5YmEuLjBkYThjYzliMGIgMTAwNjQ0Ci0tLSBhL2Nv bmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTg1MiwxNSArODUyLDYgQEAgUEdBQ19B UkdfQk9PTCh3aXRoLCBib25qb3VyLCBubywKIEFDX01TR19SRVNVTFQoWyR3aXRoX2JvbmpvdXJd KQogCiAKLSMKLSMgT3BlblNTTAotIwotQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGJ1aWxk IHdpdGggT3BlblNTTCBzdXBwb3J0XSkKLVBHQUNfQVJHX0JPT0wod2l0aCwgb3BlbnNzbCwgbm8s IFtidWlsZCB3aXRoIE9wZW5TU0wgc3VwcG9ydF0sCi0gICAgICAgICAgICAgIFtBQ19ERUZJTkUo W1VTRV9PUEVOU1NMXSwgMSwgW0RlZmluZSB0byBidWlsZCB3aXRoIE9wZW5TU0wgc3VwcG9ydC4g KC0td2l0aC1vcGVuc3NsKV0pXSkKLUFDX01TR19SRVNVTFQoWyR3aXRoX29wZW5zc2xdKQotQUNf U1VCU1Qod2l0aF9vcGVuc3NsKQotCiAjCiAjIFNFTGludXgKICMKQEAgLTEyMDksNyArMTIwMCwy MSBAQCBpZiB0ZXN0ICIkd2l0aF9nc3NhcGkiID0geWVzIDsgdGhlbgogICBmaQogZmkKIAorIwor IyBTU0wgTGlicmFyeQorIworIyBUaGVyZSBhcmUgY3VycmVudGx5IHR3byBzdXBwb3J0ZWQgU1NM L1RMUyBsaWJyYXJpZXMsIE9wZW5TU0wgYW5kIE5TUy4KKyMKK1BHQUNfQVJHX1JFUSh3aXRoLCBz c2wsIFtMSUJdLCBbdXNlIExJQiBmb3IgU1NML1RMUyBzdXBwb3J0IChvcGVuc3NsLCBuc3MpXSkK K2lmIHRlc3QgeCIkd2l0aF9zc2wiID0geCIiIDsgdGhlbgorICB3aXRoX3NzbD1ubworZmkKK1BH QUNfQVJHX0JPT0wod2l0aCwgb3BlbnNzbCwgbm8sIFtvYnNvbGV0ZSBzcGVsbGluZyBvZiAtLXdp dGgtc3NsPW9wZW5zc2xdKQogaWYgdGVzdCAiJHdpdGhfb3BlbnNzbCIgPSB5ZXMgOyB0aGVuCisg IHdpdGhfc3NsPW9wZW5zc2wKK2ZpCisKK2lmIHRlc3QgIiR3aXRoX3NzbCIgPSBvcGVuc3NsIDsg dGhlbgogICBkbmwgT3JkZXIgbWF0dGVycyEKICAgIyBNaW5pbXVtIHJlcXVpcmVkIE9wZW5TU0wg dmVyc2lvbiBpcyAxLjAuMQogICBBQ19ERUZJTkUoT1BFTlNTTF9BUElfQ09NUEFULCBbMHgxMDAw MTAwMExdLApAQCAtMTIzMyw3ICsxMjM4LDMxIEBAIGlmIHRlc3QgIiR3aXRoX29wZW5zc2wiID0g eWVzIDsgdGhlbgogICAjIHRocmVhZC1zYWZldHkuIEluIDEuMS4wLCBpdCdzIG5vIGxvbmdlciBy ZXF1aXJlZCwgYW5kIENSWVBUT19sb2NrKCkKICAgIyBmdW5jdGlvbiB3YXMgcmVtb3ZlZC4KICAg QUNfQ0hFQ0tfRlVOQ1MoW0NSWVBUT19sb2NrXSkKKyAgQUNfREVGSU5FKFtVU0VfT1BFTlNTTF0s IDEsIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSBPcGVuU1NMIHN1cHBvcnQuXSkKK2VsaWYgdGVz dCAiJHdpdGhfc3NsIiA9IG5zcyA7IHRoZW4KKyAgIyBUT0RPOiBmYWxsYmFjayBpbiBjYXNlIG5z cy1jb25maWcvbnNwci1jb25maWcgYXJlbid0IGZvdW5kLgorICBQR0FDX1BBVEhfUFJPR1MoTlNT X0NPTkZJRywgbnNzLWNvbmZpZykKKyAgUEdBQ19QQVRIX1BST0dTKE5TUFJfQ09ORklHLCBuc3By LWNvbmZpZykKKyAgaWYgdGVzdCAtbiAiJE5TU19DT05GSUciOyB0aGVuCisgICAgTlNTX0xJQlM9 YCROU1NfQ09ORklHIC0tbGlic2AKKwlOU1NfQ0ZMQUdTPWAkTlNTX0NPTkZJRyAtLWNmbGFnc2AK KyAgZmkKKyAgaWYgdGVzdCAtbiAiJE5TUFJfQ09ORklHIjsgdGhlbgorCU5TUFJfTElCUz1gJE5T UFJfQ09ORklHIC0tbGlic2AKKwlOU1BSX0NGTEFHUz1gJE5TUFJfQ09ORklHIC0tY2ZsYWdzYAor ICBmaQorCisgIExERkxBR1M9IiRMREZMQUdTICROU1NfTElCUyAkTlNQUl9MSUJTIgorICBDRkxB R1M9IiRDRkxBR1MgJE5TU19DRkxBR1MgJE5TUFJfQ0ZMQUdTIgorCisgIEFDX0NIRUNLX0xJQihu c3MzLCBOU1NfSW5pdENvbnRleHQsIFtdLCBbQUNfTVNHX0VSUk9SKFtsaWJyYXJ5ICduc3MzJyBp cyByZXF1aXJlZCBmb3IgTlNTXSldKQorICBBQ19DSEVDS19MSUIobnNwcjQsIFBSX0dldERlZmF1 bHRJT01ldGhvZHMsIFtdLCBbQUNfTVNHX0VSUk9SKFtsaWJyYXJ5ICduc3ByNCcgaXMgcmVxdWly ZWQgZm9yIE5TU10pXSkKKyAgQUNfQ0hFQ0tfTElCKHNzbDMsIFNTTF9HZXRJbXBsZW1lbnRlZENp cGhlcnMsIFtdLCBbQUNfTVNHX0VSUk9SKFtsaWJyYXJ5ICdzc2wzJyBpcyByZXF1aXJlZCBmb3Ig TlNTXSldKQorICBBQ19ERUZJTkUoW1VTRV9OU1NdLCAxLCBbRGVmaW5lIHRvIDEgaWYgeW91IGhh dmUgTlNTIHN1cHBvcnQsXSkKK2VsaWYgdGVzdCAiJHdpdGhfc3NsIiAhPSBubyA7IHRoZW4KKyAg QUNfTVNHX0VSUk9SKFstLXdpdGgtc3NsIG11c3Qgc3BlY2lmeSBvbmUgb2Ygb3BlbnNzbCBvciBu c3NdKQogZmkKK0FDX1NVQlNUKHdpdGhfc3NsKQogCiBpZiB0ZXN0ICIkd2l0aF9wYW0iID0geWVz IDsgdGhlbgogICBBQ19DSEVDS19MSUIocGFtLCAgICBwYW1fc3RhcnQsIFtdLCBbQUNfTVNHX0VS Uk9SKFtsaWJyYXJ5ICdwYW0nIGlzIHJlcXVpcmVkIGZvciBQQU1dKV0pCkBAIC0xNDA2LDExICsx NDM1LDE2IEBAIGlmIHRlc3QgIiR3aXRoX2dzc2FwaSIgPSB5ZXMgOyB0aGVuCiAJW0FDX0NIRUNL X0hFQURFUlMoZ3NzYXBpLmgsIFtdLCBbQUNfTVNHX0VSUk9SKFtnc3NhcGkuaCBoZWFkZXIgZmls ZSBpcyByZXF1aXJlZCBmb3IgR1NTQVBJXSldKV0pCiBmaQogCi1pZiB0ZXN0ICIkd2l0aF9vcGVu c3NsIiA9IHllcyA7IHRoZW4KK2lmIHRlc3QgIiR3aXRoX3NzbCIgPSBvcGVuc3NsIDsgdGhlbgog ICBBQ19DSEVDS19IRUFERVIob3BlbnNzbC9zc2wuaCwgW10sIFtBQ19NU0dfRVJST1IoW2hlYWRl ciBmaWxlIDxvcGVuc3NsL3NzbC5oPiBpcyByZXF1aXJlZCBmb3IgT3BlblNTTF0pXSkKICAgQUNf Q0hFQ0tfSEVBREVSKG9wZW5zc2wvZXJyLmgsIFtdLCBbQUNfTVNHX0VSUk9SKFtoZWFkZXIgZmls ZSA8b3BlbnNzbC9lcnIuaD4gaXMgcmVxdWlyZWQgZm9yIE9wZW5TU0xdKV0pCiBmaQogCitpZiB0 ZXN0ICIkd2l0aF9zc2wiID0gbnNzIDsgdGhlbgorICBBQ19DSEVDS19IRUFERVIobnNzL3NzbC5o LCBbXSwgW0FDX01TR19FUlJPUihbaGVhZGVyIGZpbGUgPG5zcy9zc2wuaD4gaXMgcmVxdWlyZWQg Zm9yIE5TU10pXSkKKyAgQUNfQ0hFQ0tfSEVBREVSKG5zcy9uc3MuaCwgW10sIFtBQ19NU0dfRVJS T1IoW2hlYWRlciBmaWxlIDxuc3MvbnNzLmg+IGlzIHJlcXVpcmVkIGZvciBOU1NdKV0pCitmaQor CiBpZiB0ZXN0ICIkd2l0aF9wYW0iID0geWVzIDsgdGhlbgogICBBQ19DSEVDS19IRUFERVJTKHNl Y3VyaXR5L3BhbV9hcHBsLmgsIFtdLAogICAgICAgICAgICAgICAgICAgIFtBQ19DSEVDS19IRUFE RVJTKHBhbS9wYW1fYXBwbC5oLCBbXSwKQEAgLTIxNjUsNiArMjE5OSw4IEBAIGZpCiBBQ19NU0df Q0hFQ0tJTkcoW3doaWNoIHJhbmRvbSBudW1iZXIgc291cmNlIHRvIHVzZV0pCiBpZiB0ZXN0IHgi JHdpdGhfb3BlbnNzbCIgPSB4InllcyIgOyB0aGVuCiAgIEFDX01TR19SRVNVTFQoW09wZW5TU0xd KQorZWxpZiB0ZXN0IHgiJHdpdGhfbnNzIiA9IHgieWVzIiA7IHRoZW4KKyAgQUNfTVNHX1JFU1VM VChbTlNTXSkKIGVsaWYgdGVzdCB4IiRQT1JUTkFNRSIgPSB4IndpbjMyIiA7IHRoZW4KICAgQUNf TVNHX1JFU1VMVChbV2luZG93cyBuYXRpdmVdKQogZWxzZQpkaWZmIC0tZ2l0IGEvY29udHJpYi9w b3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dCBiL2NvbnRyaWIvcG9zdGdyZXNf ZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQKaW5kZXggMWNhZDMxMTQzNi4uMWIwYzVjZTFm YSAxMDA2NDQKLS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3 Lm91dAorKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0 CkBAIC04OTIzLDcgKzg5MjMsNyBAQCBETyAkZCQKICAgICBFTkQ7CiAkZCQ7CiBFUlJPUjogIGlu dmFsaWQgb3B0aW9uICJwYXNzd29yZCIKLUhJTlQ6ICBWYWxpZCBvcHRpb25zIGluIHRoaXMgY29u dGV4dCBhcmU6IHNlcnZpY2UsIHBhc3NmaWxlLCBjaGFubmVsX2JpbmRpbmcsIGNvbm5lY3RfdGlt ZW91dCwgZGJuYW1lLCBob3N0LCBob3N0YWRkciwgcG9ydCwgb3B0aW9ucywgYXBwbGljYXRpb25f bmFtZSwga2VlcGFsaXZlcywga2VlcGFsaXZlc19pZGxlLCBrZWVwYWxpdmVzX2ludGVydmFsLCBr ZWVwYWxpdmVzX2NvdW50LCB0Y3BfdXNlcl90aW1lb3V0LCBzc2xtb2RlLCBzc2xjb21wcmVzc2lv biwgc3NsY2VydCwgc3Nsa2V5LCBzc2xyb290Y2VydCwgc3NsY3JsLCByZXF1aXJlcGVlciwgc3Ns X21pbl9wcm90b2NvbF92ZXJzaW9uLCBzc2xfbWF4X3Byb3RvY29sX3ZlcnNpb24sIGdzc2VuY21v ZGUsIGtyYnNydm5hbWUsIGdzc2xpYiwgdGFyZ2V0X3Nlc3Npb25fYXR0cnMsIHVzZV9yZW1vdGVf ZXN0aW1hdGUsIGZkd19zdGFydHVwX2Nvc3QsIGZkd190dXBsZV9jb3N0LCBleHRlbnNpb25zLCB1 cGRhdGFibGUsIGZldGNoX3NpemUKK0hJTlQ6ICBWYWxpZCBvcHRpb25zIGluIHRoaXMgY29udGV4 dCBhcmU6IHNlcnZpY2UsIHBhc3NmaWxlLCBjaGFubmVsX2JpbmRpbmcsIGNvbm5lY3RfdGltZW91 dCwgZGJuYW1lLCBob3N0LCBob3N0YWRkciwgcG9ydCwgb3B0aW9ucywgYXBwbGljYXRpb25fbmFt ZSwga2VlcGFsaXZlcywga2VlcGFsaXZlc19pZGxlLCBrZWVwYWxpdmVzX2ludGVydmFsLCBrZWVw YWxpdmVzX2NvdW50LCB0Y3BfdXNlcl90aW1lb3V0LCBzc2xtb2RlLCBzc2xjb21wcmVzc2lvbiwg c3NsY2VydCwgc3Nsa2V5LCBzc2xyb290Y2VydCwgc3NsY3JsLCByZXF1aXJlcGVlciwgc3NsX21p bl9wcm90b2NvbF92ZXJzaW9uLCBzc2xfbWF4X3Byb3RvY29sX3ZlcnNpb24sIGdzc2VuY21vZGUs IGtyYnNydm5hbWUsIGdzc2xpYiwgdGFyZ2V0X3Nlc3Npb25fYXR0cnMsIGNlcnRfZGF0YWJhc2Us IHVzZV9yZW1vdGVfZXN0aW1hdGUsIGZkd19zdGFydHVwX2Nvc3QsIGZkd190dXBsZV9jb3N0LCBl eHRlbnNpb25zLCB1cGRhdGFibGUsIGZldGNoX3NpemUKIENPTlRFWFQ6ICBTUUwgc3RhdGVtZW50 ICJBTFRFUiBTRVJWRVIgbG9vcGJhY2tfbm9wdyBPUFRJT05TIChBREQgcGFzc3dvcmQgJ2R1bW15 cHcnKSIKIFBML3BnU1FMIGZ1bmN0aW9uIGlubGluZV9jb2RlX2Jsb2NrIGxpbmUgMyBhdCBFWEVD VVRFCiAtLSBJZiB3ZSBhZGQgYSBwYXNzd29yZCBmb3Igb3VyIHVzZXIgbWFwcGluZyBpbnN0ZWFk LCB3ZSBzaG91bGQgZ2V0IGEgZGlmZmVyZW50CmRpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuZ2xv YmFsLmluIGIvc3JjL01ha2VmaWxlLmdsb2JhbC5pbgppbmRleCA3Y2ExZTlhYWM1Li5iZGFiMmE2 ODI1IDEwMDY0NAotLS0gYS9zcmMvTWFrZWZpbGUuZ2xvYmFsLmluCisrKyBiL3NyYy9NYWtlZmls ZS5nbG9iYWwuaW4KQEAgLTE4Myw3ICsxODMsNyBAQCB3aXRoX2ljdQk9IEB3aXRoX2ljdUAKIHdp dGhfcGVybAk9IEB3aXRoX3BlcmxACiB3aXRoX3B5dGhvbgk9IEB3aXRoX3B5dGhvbkAKIHdpdGhf dGNsCT0gQHdpdGhfdGNsQAotd2l0aF9vcGVuc3NsCT0gQHdpdGhfb3BlbnNzbEAKK3dpdGhfc3Ns CT0gQHdpdGhfc3NsQAogd2l0aF9yZWFkbGluZQk9IEB3aXRoX3JlYWRsaW5lQAogd2l0aF9zZWxp bnV4CT0gQHdpdGhfc2VsaW51eEAKIHdpdGhfc3lzdGVtZAk9IEB3aXRoX3N5c3RlbWRACmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9saWJwcS9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL2xpYnBxL01h a2VmaWxlCmluZGV4IGVmYzVlZjc2MGEuLjA0NWQyYzJmNmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2xpYnBxL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL2xpYnBxL01ha2VmaWxlCkBAIC0y OCw4ICsyOCwxMiBAQCBPQkpTID0gXAogCXBxbXEubyBcCiAJcHFzaWduYWwubwogCi1pZmVxICgk KHdpdGhfb3BlbnNzbCkseWVzKQoraWZlcSAoJCh3aXRoX3NzbCksb3BlbnNzbCkKIE9CSlMgKz0g YmUtc2VjdXJlLW9wZW5zc2wubworZWxzZQoraWZlcSAoJCh3aXRoX3NzbCksbnNzKQorT0JKUyAr PSBiZS1zZWN1cmUtbnNzLm8KK2VuZGlmCiBlbmRpZgogCiBpZmVxICgkKHdpdGhfZ3NzYXBpKSx5 ZXMpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9saWJwcS9hdXRoLmMgYi9zcmMvYmFja2VuZC9s aWJwcS9hdXRoLmMKaW5kZXggNTQ1NjM1ZjQxYS4uMDlhZDJhZDA2MyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvbGlicHEvYXV0aC5jCisrKyBiL3NyYy9iYWNrZW5kL2xpYnBxL2F1dGguYwpAQCAt Mjg0OSw3ICsyODQ5LDE0IEBAIENoZWNrQ2VydEF1dGgoUG9ydCAqcG9ydCkKIHsKIAlpbnQJCQlz dGF0dXNfY2hlY2tfdXNlcm1hcCA9IFNUQVRVU19FUlJPUjsKIAorI2lmIGRlZmluZWQoVVNFX09Q RU5TU0wpCiAJQXNzZXJ0KHBvcnQtPnNzbCk7CisjZWxpZiBkZWZpbmVkKFVTRV9OU1MpCisJLyog VE9ETzogc2hvdWxkIHdlIHJlbmFtZSBwcl9mZCB0byBzc2wsIHRvIGtlZXAgY29uc2lzdGVuY3k/ ICovCisJQXNzZXJ0KHBvcnQtPnByX2ZkKTsKKyNlbHNlCisJQXNzZXJ0KGZhbHNlKTsKKyNlbmRp ZgogCiAJLyogTWFrZSBzdXJlIHdlIGhhdmUgcmVjZWl2ZWQgYSB1c2VybmFtZSBpbiB0aGUgY2Vy dGlmaWNhdGUgKi8KIAlpZiAocG9ydC0+cGVlcl9jbiA9PSBOVUxMIHx8CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9saWJwcS9iZS1zZWN1cmUtbnNzLmMgYi9zcmMvYmFja2VuZC9saWJwcS9iZS1z ZWN1cmUtbnNzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uODBkNzU5 ODY2MgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL2xpYnBxL2JlLXNlY3VyZS1uc3Mu YwpAQCAtMCwwICsxLDEzNTkgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGJlLXNlY3Vy ZS1uc3MuYworICoJICBmdW5jdGlvbnMgZm9yIHN1cHBvcnRpbmcgTlNTIGFzIGEgVExTIGJhY2tl bmQKKyAqCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjAsIFBvc3RncmVT UUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5 OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIElERU5U SUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL2xpYnBxL2JlLXNlY3VyZS1uc3MuYworICoKKyAq LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVk ZSA8c3lzL3N0YXQuaD4KKworLyoKKyAqIEJJVFNfUEVSX0JZVEUgaXMgYWxzbyBkZWZpbmVkIGlu IHRoZSBOU1BSIGhlYWRlciBmaWxlcywgc28gd2UgbmVlZCB0byB1bmRlZgorICogb3VyIHZlcnNp b24gdG8gYXZvaWQgY29tcGlsZXIgd2FybmluZ3Mgb24gcmVkZWZpbml0aW9uLgorICovCisjZGVm aW5lIHBnX0JJVFNfUEVSX0JZVEUgQklUU19QRVJfQllURQorI3VuZGVmIEJJVFNfUEVSX0JZVEUK KworLyoKKyAqIFRoZSBuc3ByL29ic29sZXRlL3Byb3R5cGVzLmggTlNQUiBoZWFkZXIgdHlwZWRl ZnMgdWludDY0IGFuZCBpbnQ2NCB3aXRoCisgKiBjb2xsaWRpbmcgZGVmaW5pdGlvbnMgZnJvbSBv dXJzLCBjYXVzaW5nIGEgbXVjaCBleHBlY3RlZCBjb21waWxlciBlcnJvci4KKyAqIFJlbW92ZSBi YWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIGFuY2llbnQgTlNQUiB2ZXJzaW9ucyB0byBhdm9p ZCB0aGlzLgorICovCisjZGVmaW5lIE5PX05TUFJfMTBfU1VQUE9SVAorI2luY2x1ZGUgPG5zcHIv bnNwci5oPgorI2luY2x1ZGUgPG5zcHIvcHJlcnJvci5oPgorI2luY2x1ZGUgPG5zcHIvcHJpby5o PgorI2luY2x1ZGUgPG5zcHIvcHJtZW0uaD4KKyNpbmNsdWRlIDxuc3ByL3BydHlwZXMuaD4KKwor I2luY2x1ZGUgPG5zcy9uc3MuaD4KKyNpbmNsdWRlIDxuc3MvYmFzZTY0Lmg+CisjaW5jbHVkZSA8 bnNzL2NlcnQuaD4KKyNpbmNsdWRlIDxuc3MvY2VydGRiLmg+CisjaW5jbHVkZSA8bnNzL2hhc2h0 Lmg+CisjaW5jbHVkZSA8bnNzL2tleWhpLmg+CisjaW5jbHVkZSA8bnNzL3BrMTFwdWIuaD4KKyNp bmNsdWRlIDxuc3Mvc2VjZGVyLmg+CisjaW5jbHVkZSA8bnNzL3NlY2Vyci5oPgorI2luY2x1ZGUg PG5zcy9zZWNpdGVtLmg+CisjaW5jbHVkZSA8bnNzL3NlY29pZHQuaD4KKyNpbmNsdWRlIDxuc3Mv c2VjcG9ydC5oPgorI2luY2x1ZGUgPG5zcy9zc2wuaD4KKyNpbmNsdWRlIDxuc3Mvc3NsZXJyLmg+ CisjaW5jbHVkZSA8bnNzL3NzbHByb3RvLmg+CisKKy8qCisgKiBFbnN1cmUgdGhhdCB0aGUgY29s bGlkaW5nIGRlZmluaXRpb25zIG1hdGNoLCBlbHNlIHRocm93IGFuIGVycm9yLiBJbiBjYXNlCisg KiBOU1BSIGhhcyByZW1vdmVkIHRoZSBkZWZpbml0aW9uIGZvciBzb21lIHJlYXNvbiwgbWFrZSBz dXJlIHRvIHB1dCBvdXJzCisgKiBiYWNrIGFnYWluLgorICovCisjaWYgZGVmaW5lZChCSVRTX1BF Ul9CWVRFKQorI2lmIEJJVFNfUEVSX0JZVEUgIT0gcGdfQklUU19QRVJfQllURQorI2Vycm9yICJp bmNvbXBhdGlibGUgYnl0ZSB3aWR0aHMgYmV0d2VlbiBOU1BSIGFuZCBwb3N0Z3JlcyIKKyNlbmRp ZgorI2Vsc2UKKyNkZWZpbmUgQklUU19QRVJfQllURSBwZ19CSVRTX1BFUl9CWVRFCisjZW5kaWYK KyN1bmRlZiBwZ19CSVRTX1BFUl9CWVRFCisKKyNpbmNsdWRlICJjb21tb24vcGdfbnNzLmgiCisj aW5jbHVkZSAibGliL3N0cmluZ2luZm8uaCIKKyNpbmNsdWRlICJsaWJwcS9saWJwcS5oIgorI2lu Y2x1ZGUgIm5vZGVzL3BnX2xpc3QuaCIKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRl ICJzdG9yYWdlL2ZkLmgiCisjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCisjaW5jbHVkZSAidXRpbHMv bWVtdXRpbHMuaCIKKworCisvKiBkZWZhdWx0IGluaXQgaG9vayBjYW4gYmUgb3ZlcnJpZGRlbiBi eSBhIHNoYXJlZCBsaWJyYXJ5ICovCitzdGF0aWMgdm9pZCBkZWZhdWx0X25zc190bHNfaW5pdChi b29sIGlzU2VydmVyU3RhcnQpOworbnNzX3Rsc19pbml0X2hvb2tfdHlwZSBuc3NfdGxzX2luaXRf aG9vayA9IGRlZmF1bHRfbnNzX3Rsc19pbml0OworCitzdGF0aWMgUFJEZXNjSWRlbnRpdHkgcHJf aWQ7CisKK3N0YXRpYyBQUklPTWV0aG9kcyBwcl9pb21ldGhvZHM7CitzdGF0aWMgTlNTSW5pdENv bnRleHQgKiBuc3NfY29udGV4dCA9IE5VTEw7CitzdGF0aWMgU1NMVmVyc2lvblJhbmdlIGRlc2ly ZWRfc3NsdmVyOworCitzdGF0aWMgY2hhciAqZXh0ZXJuYWxfc3NsX3Bhc3NwaHJhc2VfY2IoUEsx MVNsb3RJbmZvICpzbG90LCBQUkJvb2wgcmV0cnksIHZvaWQgKmFyZyk7CitzdGF0aWMgYm9vbCBk dW1teV9zc2xfcGFzc3dkX2NiX2NhbGxlZCA9IGZhbHNlOworc3RhdGljIGJvb2wgc3NsX2lzX3Nl cnZlcl9zdGFydDsKKworLyoKKyAqIFBSX0ltcG9ydFRDUFNvY2tldCgpIGlzIGEgcHJpdmF0ZSBB UEksIGJ1dCB2ZXJ5IHdpZGVseSB1c2VkLCBhcyBpdCdzIHRoZQorICogb25seSB3YXkgdG8gbWFr ZSBOU1MgdXNlIGFuIGFscmVhZHkgc2V0IHVwIFBPU0lYIGZpbGUgZGVzY3JpcHRvciByYXRoZXIK KyAqIHRoYW4gb3BlbmluZyBvbmUgaXRzZWxmLiBUbyBxdW90ZSB0aGUgTlNTIGRvY3VtZW50YXRp b246CisgKgorICoJCSJJbiB0aGVvcnksIGNvZGUgdGhhdCB1c2VzIFBSX0ltcG9ydFRDUFNvY2tl dCBtYXkgYnJlYWsgd2hlbiBOU1BSJ3MKKyAqCQlpbXBsZW1lbnRhdGlvbiBjaGFuZ2VzLiBJbiBw cmFjdGljZSwgdGhpcyBpcyB1bmxpa2VseSB0byBoYXBwZW4gYmVjYXVzZQorICoJCU5TUFIncyBp bXBsZW1lbnRhdGlvbiBoYXMgYmVlbiBzdGFibGUgZm9yIHllYXJzIGFuZCBiZWNhdXNlIG9mIE5T UFIncworICoJCXN0cm9uZyBjb21taXRtZW50IHRvIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuIgor ICoKKyAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvTW96aWxsYS9Q cm9qZWN0cy9OU1BSL1JlZmVyZW5jZS9QUl9JbXBvcnRUQ1BTb2NrZXQKKyAqCisgKiBUaGUgZnVu Y3Rpb24gaXMgZGVjbGFyZWQgaW4gPHByaXZhdGUvcHByaW8uaD4sIGJ1dCBhcyBpdCBpcyBhIGhl YWRlciBtYXJrZWQKKyAqIHByaXZhdGUgd2UgZGVjbGFyZSBpdCBoZXJlIHJhdGhlciB0aGFuIGlu Y2x1ZGluZyBpdC4KKyAqLworTlNQUl9BUEkoUFJGaWxlRGVzYyAqKSBQUl9JbXBvcnRUQ1BTb2Nr ZXQoaW50KTsKKworLyogTlNTIElPIGxheWVyIGNhbGxiYWNrIG92ZXJyaWRlcyAqLworc3RhdGlj IFBSSW50MzIgcGdfc3NsX3JlYWQoUFJGaWxlRGVzYyAqIGZkLCB2b2lkICpidWYsIFBSSW50MzIg YW1vdW50LAorCQkJCQkJICAgUFJJbnRuIGZsYWdzLCBQUkludGVydmFsVGltZSB0aW1lb3V0KTsK K3N0YXRpYyBQUkludDMyIHBnX3NzbF93cml0ZShQUkZpbGVEZXNjICogZmQsIGNvbnN0IHZvaWQg KmJ1ZiwgUFJJbnQzMiBhbW91bnQsCisJCQkJCQkJUFJJbnRuIGZsYWdzLCBQUkludGVydmFsVGlt ZSB0aW1lb3V0KTsKK3N0YXRpYyBQUlN0YXR1cyBwZ19zc2xfY2xvc2UoUFJGaWxlRGVzYyAqIGZk KTsKKy8qIFV0aWxpdHkgZnVuY3Rpb25zICovCitzdGF0aWMgUFJGaWxlRGVzYyAqIGluaXRfaW9s YXllcihQb3J0ICpwb3J0KTsKK3N0YXRpYyB1aW50MTYgc3NsX3Byb3RvY29sX3ZlcnNpb25fdG9f bnNzKGludCB2LCBjb25zdCBjaGFyICpndWNfbmFtZSk7CisKK3N0YXRpYyBjaGFyICpwZ19TU0xl cnJtZXNzYWdlKFBSRXJyb3JDb2RlIGVycmNvZGUpOworc3RhdGljIGNoYXIgKnNzbF9wcm90b2Nv bF92ZXJzaW9uX3RvX3N0cmluZyhpbnQgdik7CitzdGF0aWMgU0VDU3RhdHVzIHBnX2NlcnRfYXV0 aF9oYW5kbGVyKHZvaWQgKmFyZywgUFJGaWxlRGVzYyAqIGZkLAorCQkJCQkJCQkJICBQUkJvb2wg Y2hlY2tzaWcsIFBSQm9vbCBpc1NlcnZlcik7CitzdGF0aWMgU0VDU3RhdHVzIHBnX2JhZF9jZXJ0 X2hhbmRsZXIodm9pZCAqYXJnLCBQUkZpbGVEZXNjICogZmQpOworc3RhdGljIGNoYXIgKmR1bW15 X3NzbF9wYXNzcGhyYXNlX2NiKFBLMTFTbG90SW5mbyAqIHNsb3QsIFBSQm9vbCByZXRyeSwgdm9p ZCAqYXJnKTsKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tICovCisvKgkJCQkJCSBQdWJsaWMgaW50ZXJmYWNlCQkJCQkJKi8K Ky8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSAqLworCisvKgorICogYmVfdGxzX2luaXQKKyAqCQkJSW5pdGlhbGl6ZSB0aGUgbnNz IFRMUyBsaWJyYXJ5IGluIHRoZSBwb3N0bWFzdGVyCisgKgorICogVGhlIG1ham9yaXR5IG9mIHRo ZSBzZXR1cCBuZWVkcyB0byBoYXBwZW4gaW4gYmVfdGxzX29wZW5fc2VydmVyIHNpbmNlIHRoZQor ICogTlNQUiBpbml0aWFsaXphdGlvbiBtdXN0IGhhcHBlbiBhZnRlciB0aGUgZm9ya2luZyBvZiB0 aGUgYmFja2VuZC4gV2UgY291bGQKKyAqIHBvdGVudGlhbGx5IG1vdmUgc29tZSBwYXJ0cyBpbiB1 bmRlciAhaXNTZXJ2ZXJTdGFydCwgYnV0IHNvIGZhciB0aGlzIGlzIHRoZQorICogc2VwYXJhdGlv biBjaG9zZW4uCisgKi8KK2ludAorYmVfdGxzX2luaXQoYm9vbCBpc1NlcnZlclN0YXJ0KQorewor CVNFQ1N0YXR1cwlzdGF0dXM7CisJU1NMVmVyc2lvblJhbmdlIHN1cHBvcnRlZF9zc2x2ZXI7CisK KwlzdGF0dXMgPSBTU0xfQ29uZmlnU2VydmVyU2Vzc2lvbklEQ2FjaGVXaXRoT3B0KDAsIDAsIE5V TEwsIDEsIDAsIDAsIFBSX0ZBTFNFKTsKKwlpZiAoc3RhdHVzICE9IFNFQ1N1Y2Nlc3MpCisJewor CQllcmVwb3J0KGlzU2VydmVyU3RhcnQgPyBGQVRBTCA6IExPRywKKwkJCQkoZXJybXNnKCJ1bmFi bGUgdG8gY29ubmVjdCB0byBUTFMgY29ubmVjdGlvbiBjYWNoZTogJXMiLAorCQkJCQkJcGdfU1NM ZXJybWVzc2FnZShQUl9HZXRFcnJvcigpKSkpKTsKKwkJcmV0dXJuIC0xOworCX0KKworCWlmICgh c3NsX2RhdGFiYXNlIHx8IHN0cmxlbihzc2xfZGF0YWJhc2UpID09IDApCisJeworCQllcmVwb3J0 KGlzU2VydmVyU3RhcnQgPyBGQVRBTCA6IExPRywKKwkJCQkoZXJybXNnKCJubyBjZXJ0aWZpY2F0 ZSBkYXRhYmFzZSBzcGVjaWZpZWQiKSkpOworCQlyZXR1cm4gLTE7CisJfQorCisJLyoKKwkgKiBX ZSBjaGVjayBmb3IgdGhlIGRlc2lyZWQgVExTIHZlcnNpb24gcmFuZ2UgaGVyZSwgZXZlbiB0aG91 Z2ggd2UgY2Fubm90CisJICogc2V0IGl0IHVudGlsIGJlX29wZW5fc2VydmVyIHN1Y2ggdGhhdCB3 ZSBjYW4gYmUgY29tcGF0aWJsZSB3aXRoIGhvdyB0aGUKKwkgKiBPcGVuU1NMIGJhY2tlbmQgcmVw b3J0cyBlcnJvcnMgZm9yIGluY29tcGF0aWJsZSByYW5nZSBjb25maWd1cmF0aW9ucy4KKwkgKiBT ZXQgZWl0aGVyIHRoZSBkZWZhdWx0IHN1cHBvcnRlZCBUTFMgdmVyc2lvbiByYW5nZSwgb3IgdGhl IGNvbmZpZ3VyZWQKKwkgKiByYW5nZSBmcm9tIHNzbF9taW5fcHJvdG9jb2xfdmVyc2lvbiBhbmQg c3NsX21heF9wcm90b2NvbCB2ZXJzaW9uLiBJbgorCSAqIGNhc2UgdGhlIHVzZXIgaGFzbid0IGRl ZmluZWQgdGhlIG1heGltdW0gYWxsb3dlZCB2ZXJzaW9uIHdlIGZhbGwgYmFjaworCSAqIHRvIHRo ZSBoaWdoZXN0IHZlcnNpb24gVExTIHRoYXQgdGhlIGxpYnJhcnkgc3VwcG9ydHMuCisJICovCisJ aWYgKFNTTF9WZXJzaW9uUmFuZ2VHZXRTdXBwb3J0ZWQoc3NsX3ZhcmlhbnRfc3RyZWFtLCAmc3Vw cG9ydGVkX3NzbHZlcikgIT0gU0VDU3VjY2VzcykKKwl7CisJCWVyZXBvcnQoaXNTZXJ2ZXJTdGFy dCA/IEZBVEFMIDogTE9HLAorCQkJCShlcnJtc2coInVuYWJsZSB0byBnZXQgZGVmYXVsdCBwcm90 b2NvbCBzdXBwb3J0IGZyb20gTlNTIikpKTsKKwkJcmV0dXJuIC0xOworCX0KKworCS8qCisJICog U2V0IHRoZSBmYWxsYmFjayB2ZXJzaW9ucyBmb3IgdGhlIFRMUyBwcm90b2NvbCB2ZXJzaW9uIHJh bmdlIHRvIGEKKwkgKiBjb21iaW5hdGlvbiBvZiBvdXIgbWluaW1hbCByZXF1aXJlbWVudCBhbmQg dGhlIGxpYnJhcnkgbWF4aW11bS4gRXJyb3IKKwkgKiBtZXNzYWdlcyBzaG91bGQgYmUga2VwdCBp ZGVudGljYWwgdG8gdGhvc2UgaW4gYmUtc2VjdXJlLW9wZW5zc2wuYyB0bworCSAqIG1ha2UgdHJh bnNsYXRpb25zIGVhc2llci4KKwkgKi8KKwlkZXNpcmVkX3NzbHZlci5taW4gPSBTU0xfTElCUkFS WV9WRVJTSU9OX1RMU18xXzA7CisJZGVzaXJlZF9zc2x2ZXIubWF4ID0gc3VwcG9ydGVkX3NzbHZl ci5tYXg7CisKKwlpZiAoc3NsX21pbl9wcm90b2NvbF92ZXJzaW9uKQorCXsKKwkJaW50CQkJdmVy ID0gc3NsX3Byb3RvY29sX3ZlcnNpb25fdG9fbnNzKHNzbF9taW5fcHJvdG9jb2xfdmVyc2lvbiwK KwkJCQkJCQkJCQkJCQkgICJzc2xfbWluX3Byb3RvY29sX3ZlcnNpb24iKTsKKworCQlpZiAodmVy ID09IC0xKQorCQl7CisJCQllcmVwb3J0KGlzU2VydmVyU3RhcnQgPyBGQVRBTCA6IExPRywKKwkJ CQkJKGVycm1zZygiXCIlc1wiIHNldHRpbmcgXCIlc1wiIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBi dWlsZCIsCisJCQkJCQkJInNzbF9taW5fcHJvdG9jb2xfdmVyc2lvbiIsCisJCQkJCQkJR2V0Q29u ZmlnT3B0aW9uKCJzc2xfbWluX3Byb3RvY29sX3ZlcnNpb24iLAorCQkJCQkJCQkJCQlmYWxzZSwg ZmFsc2UpKSkpOworCQkJcmV0dXJuIC0xOworCQl9CisKKwkJaWYgKHZlciA+IDApCisJCQlkZXNp cmVkX3NzbHZlci5taW4gPSB2ZXI7CisJfQorCisJaWYgKHNzbF9tYXhfcHJvdG9jb2xfdmVyc2lv bikKKwl7CisJCWludAkJCXZlciA9IHNzbF9wcm90b2NvbF92ZXJzaW9uX3RvX25zcyhzc2xfbWF4 X3Byb3RvY29sX3ZlcnNpb24sCisJCQkJCQkJCQkJCQkJICAic3NsX21heF9wcm90b2NvbF92ZXJz aW9uIik7CisKKwkJaWYgKHZlciA9PSAtMSkKKwkJeworCQkJZXJlcG9ydChpc1NlcnZlclN0YXJ0 ID8gRkFUQUwgOiBMT0csCisJCQkJCShlcnJtc2coIlwiJXNcIiBzZXR0aW5nIFwiJXNcIiBub3Qg c3VwcG9ydGVkIGJ5IHRoaXMgYnVpbGQiLAorCQkJCQkJCSJzc2xfbWF4X3Byb3RvY29sX3ZlcnNp b24iLAorCQkJCQkJCUdldENvbmZpZ09wdGlvbigic3NsX21heF9wcm90b2NvbF92ZXJzaW9uIiwK KwkJCQkJCQkJCQkJZmFsc2UsIGZhbHNlKSkpKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCQlpZiAo dmVyID4gMCkKKwkJCWRlc2lyZWRfc3NsdmVyLm1heCA9IHZlcjsKKworCQlpZiAodmVyIDwgZGVz aXJlZF9zc2x2ZXIubWluKQorCQl7CisJCQllcmVwb3J0KGlzU2VydmVyU3RhcnQgPyBGQVRBTCA6 IExPRywKKwkJCQkJKGVycm1zZygiY291bGQgbm90IHNldCBTU0wgcHJvdG9jb2wgdmVyc2lvbiBy YW5nZSIpLAorCQkJCQkgZXJyZGV0YWlsKCJcIiVzXCIgY2Fubm90IGJlIGhpZ2hlciB0aGFuIFwi JXNcIiIsCisJCQkJCQkJICAgInNzbF9taW5fcHJvdG9jb2xfdmVyc2lvbiIsCisJCQkJCQkJICAg InNzbF9tYXhfcHJvdG9jb2xfdmVyc2lvbiIpKSk7CisJCQlyZXR1cm4gLTE7CisJCX0KKwl9CisK KwkvKgorCSAqIFNldCB0aGUgcGFzc3BocmFzZSBjYWxsYmFjayB3aGljaCB3aWxsIGJlIHVzZWQg Ym90aCB0byBvYnRhaW4gdGhlCisJICogcGFzc3BocmFzZSBmcm9tIHRoZSB1c2VyLCBhcyB3ZWxs IGFzIGJ5IE5TUyB0byBvYnRhaW4gdGhlIHBocmFzZQorCSAqIHJlcGVhdGVkbHkuCisJICovCisJ c3NsX2lzX3NlcnZlcl9zdGFydCA9IGlzU2VydmVyU3RhcnQ7CisJKCpuc3NfdGxzX2luaXRfaG9v aykgKGlzU2VydmVyU3RhcnQpOworCisJcmV0dXJuIDA7Cit9CisKK2ludAorYmVfdGxzX29wZW5f c2VydmVyKFBvcnQgKnBvcnQpCit7CisJU0VDU3RhdHVzCXN0YXR1czsKKwlQUkZpbGVEZXNjICpt b2RlbDsKKwlQUkZpbGVEZXNjICpwcl9mZDsKKwlQUkZpbGVEZXNjICpsYXllcjsKKwlDRVJUQ2Vy dGlmaWNhdGUgKnNlcnZlcl9jZXJ0OworCVNFQ0tFWVByaXZhdGVLZXkgKnByaXZhdGVfa2V5Owor CUNFUlRTaWduZWRDcmwgKmNybDsKKwlTRUNJdGVtCQljcmxuYW1lOworCWNoYXIJICAgKmNlcnRf ZGF0YWJhc2U7CisJTlNTSW5pdFBhcmFtZXRlcnMgcGFyYW1zOworCisJLyoKKwkgKiBUaGUgTlNQ UiBkb2N1bWVudGF0aW9uIHN0YXRlcyB0aGF0IHJ1bnRpbWUgaW5pdGlhbGl6YXRpb24gdmlhIFBS X0luaXQKKwkgKiBpcyBubyBsb25nZXIgcmVxdWlyZWQsIGFzIHRoZSBmaXJzdCBjYWxsZXIgaW50 byBOU1BSIHdpbGwgcGVyZm9ybSB0aGUKKwkgKiBpbml0aWFsaXphdGlvbiBpbXBsaWNpdGx5LiBU aGUgZG9jdW1lbnRhdGlvbiBkb2Vzbid0IGhvd2V2ZXIgY2xhcmlmeQorCSAqIGZyb20gd2hpY2gg dmVyc2lvbiB0aGlzIGlzIGhvbGRzIHRydWUsIHNvIGxldCdzIHBlcmZvcm0gdGhlIHBvdGVudGlh bGx5CisJICogc3VwZXJmbHVvdXMgaW5pdGlhbGl6YXRpb24gYW55d2F5cyB0byBhdm9pZCBjcmFz aGluZyBvbiBvbGRlciB2ZXJzaW9ucworCSAqIG9mIE5TUFIsIGFzIHRoZXJlIGlzIG5vIGRpZmZl cmVuY2UgaW4gb3ZlcmhlYWQuICBUaGUgTlNTIGRvY3VtZW50YXRpb24KKwkgKiBzdGlsbCBzdGF0 ZXMgdGhhdCBQUl9Jbml0IG11c3QgYmUgY2FsbGVkIGluIHNvbWUgd2F5IChpbXBsaWNpdGx5IG9y CisJICogZXhwbGljaXRseSkuCisJICoKKwkgKiBUaGUgYmVsb3cgcGFyYW1ldGVycyBhcmUgd2hh dCB0aGUgaW1wbGljaXQgaW5pdGlhbGl6YXRpb24gd291bGQndmUgZG9uZQorCSAqIGZvciB1cywg YW5kIHNob3VsZCB3b3JrIGV2ZW4gZm9yIG9sZGVyIHZlcnNpb25zIHdoZXJlIGl0IG1pZ2h0IG5v dCBiZQorCSAqIGRvbmUgYXV0b21hdGljYWxseS4gVGhlIGxhc3QgcGFyYW1ldGVyLCBtYXhQVERz LCBpcyBzZXQgdG8gdmFyaW91cworCSAqIHZhbHVlcyBpbiBvdGhlciBjb2RlYmFzZXMsIGJ1dCBo YXMgYmVlbiB1bnVzZWQgc2luY2UgTlNQUiAyLjEgd2hpY2ggd2FzCisJICogcmVsZWFzZWQgc29t ZXRpbWUgaW4gMTk5OC4gSW4gY3VycmVudCB2ZXJzaW9ucyBvZiBOU1BSIGFsbCBwYXJhbWV0ZXJz CisJICogYXJlIGlnbm9yZWQuCisJICovCisJUFJfSW5pdChQUl9VU0VSX1RIUkVBRCwgUFJfUFJJ T1JJVFlfTk9STUFMLCAwIC8qIG1heFBURHMgKi8gKTsKKworCS8qCisJICogVGhlIGNlcnRpZmlj YXRlIHBhdGggKGNvbmZpZ2RpcikgbXVzdCBjb250YWluIGEgdmFsaWQgTlNTIGRhdGFiYXNlLiBJ ZgorCSAqIHRoZSBjZXJ0aWZpY2F0ZSBwYXRoIGlzbid0IGEgdmFsaWQgZGlyZWN0b3J5LCBOU1Mg d2lsbCBmYWxsIGJhY2sgb24gdGhlCisJICogc3lzdGVtIGNlcnRpZmljYXRlIGRhdGFiYXNlLiBJ ZiB0aGUgY2VydGlmaWNhdGUgcGF0aCBpcyBhIGRpcmVjdG9yeSBidXQKKwkgKiBpcyBlbXB0eSB0 aGVuIHRoZSBpbml0aWFsaXphdGlvbiB3aWxsIGZhaWwuIE9uIHRoZSBjbGllbnQgc2lkZSB0aGlz IGNhbgorCSAqIGJlIGFsbG93ZWQgZm9yIGFueSBzc2xtb2RlIGJ1dCB0aGUgdmVyaWZ5LXh4eCBv bmVzLgorCSAqIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NzI4 NTYyIEZvciB0aGUgc2VydmVyIHNpZGUKKwkgKiB3ZSB3b24ndCBhbGxvdyB0aGlzIHRvIGZhaWwg aG93ZXZlciwgYXMgd2UgcmVxdWlyZSB0aGUgY2VydGlmaWNhdGUgYW5kCisJICoga2V5IHRvIGV4 aXN0LgorCSAqCisJICogVGhlIG9yaWdpbmFsIGRlc2lnbiBvZiBOU1Mgd2FzIGZvciBhIHNpbmds ZSBhcHBsaWNhdGlvbiB0byB1c2UgYSBzaW5nbGUKKwkgKiBjb3B5IG9mIGl0LCBpbml0aWFsaXpl ZCB3aXRoIE5TU19Jbml0aWFsaXplKCkgd2hpY2ggaXNuJ3QgcmV0dXJuaW5nIGFueQorCSAqIGhh bmRsZSB3aXRoIHdoaWNoIHRvIHJlZmVyIHRvIE5TUy4gTlNTIGluaXRpYWxpemF0aW9uIGFuZCBz aHV0ZG93biBhcmUKKwkgKiBnbG9iYWwgZm9yIHRoZSBhcHBsaWNhdGlvbiwgc28gYSBzaHV0ZG93 biBpbiBhbm90aGVyIE5TUyBlbmFibGVkCisJICogbGlicmFyeSB3b3VsZCBjYXVzZSBOU1MgdG8g YmUgc3RvcHBlZCBmb3IgbGlicHEgYXMgd2VsbC4gIFRoZSBmaXggaGFzCisJICogYmVlbiB0byBp bnRyb2R1Y2UgTlNTX0luaXRDb250ZXh0IHdoaWNoIHJldHVybnMgYSBjb250ZXh0IGhhbmRsZSB0 bworCSAqIHBhc3MgdG8gTlNTX1NodXRkb3duQ29udGV4dC4gIE5TU19Jbml0Q29udGV4dCB3YXMg aW50cm9kdWNlZCBpbiBOU1MKKwkgKiAzLjEyLCBidXQgdGhlIHVzZSBvZiBpdCBpcyBub3QgdmVy eSB3ZWxsIGRvY3VtZW50ZWQuCisJICogaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3df YnVnLmNnaT9pZD03Mzg0NTYKKwkgKgorCSAqIFRoZSBJbml0UGFyYW1ldGVycyBzdHJ1Y3QgcGFz c2VkIGNhbiBiZSB1c2VkIHRvIG92ZXJyaWRlIGludGVybmFsCisJICogdmFsdWVzIGluIE5TUywg YnV0IHRoZSB1c2FnZSBpcyBub3QgZG9jdW1lbnRlZCBhdCBhbGwuIFdoZW4gdXNpbmcKKwkgKiBO U1NfSW5pdCBpbml0aWFsaXphdGlvbnMsIHRoZSB2YWx1ZXMgYXJlIGluc3RlYWQgc2V0IHZpYSBQ SzExX0NvbmZpZ3VyZQorCSAqIGNhbGxzIHNvIHRoZSBQSzExX0NvbmZpZ3VyZSBkb2N1bWVudGF0 aW9uIGNhbiBiZSB1c2VkIHRvIGdsZWFuIHNvbWUKKwkgKiBkZXRhaWxzIG9uIHRoZXNlLgorCSAq CisJICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9Nb3ppbGxhL1By b2plY3RzL05TUy9QS0NTMTEvTW9kdWxlX1NwZWNzCisJICovCisJbWVtc2V0KCZwYXJhbXMsICdc MCcsIHNpemVvZihwYXJhbXMpKTsKKwlwYXJhbXMubGVuZ3RoID0gc2l6ZW9mKHBhcmFtcyk7CisK KwlpZiAoIXNzbF9kYXRhYmFzZSB8fCBzdHJsZW4oc3NsX2RhdGFiYXNlKSA9PSAwKQorCQllcmVw b3J0KEZBVEFMLAorCQkJCShlcnJtc2coIm5vIGNlcnRpZmljYXRlIGRhdGFiYXNlIHNwZWNpZmll ZCIpKSk7CisKKwljZXJ0X2RhdGFiYXNlID0gcHNwcmludGYoInNxbDolcyIsIHNzbF9kYXRhYmFz ZSk7CisJbnNzX2NvbnRleHQgPSBOU1NfSW5pdENvbnRleHQoY2VydF9kYXRhYmFzZSwgIiIsICIi LCAiIiwKKwkJCQkJCQkJICAmcGFyYW1zLAorCQkJCQkJCQkgIE5TU19JTklUX1JFQURPTkxZIHwg TlNTX0lOSVRfUEsxMVJFTE9BRCk7CisJcGZyZWUoY2VydF9kYXRhYmFzZSk7CisKKwlpZiAoIW5z c19jb250ZXh0KQorCQllcmVwb3J0KEZBVEFMLAorCQkJCShlcnJtc2coInVuYWJsZSB0byByZWFk IGNlcnRpZmljYXRlIGRhdGFiYXNlIFwiJXNcIjogJXMiLAorCQkJCQkJc3NsX2RhdGFiYXNlLCBw Z19TU0xlcnJtZXNzYWdlKFBSX0dldEVycm9yKCkpKSkpOworCisJLyoKKwkgKiBJbXBvcnQgdGhl IGFscmVhZHkgb3BlbmVkIHNvY2tldCBhcyB3ZSBkb24ndCB3YW50IHRvIHVzZSBOU1BSIGZ1bmN0 aW9ucworCSAqIGZvciBvcGVuaW5nIHRoZSBuZXR3b3JrIHNvY2tldCBkdWUgdG8gaG93IHRoZSBQ b3N0Z3JlU1FMIHByb3RvY29sIHdvcmtzCisJICogd2l0aCBUTFMgY29ubmVjdGlvbnMuIFRoaXMg ZnVuY3Rpb24gaXMgbm90IHBhcnQgb2YgdGhlIE5TUFIgcHVibGljIEFQSSwKKwkgKiBzZWUgdGhl IGNvbW1lbnQgYXQgdGhlIHRvcCBvZiB0aGUgZmlsZSBmb3IgdGhlIHJhdGlvbmFsZSBvZiBzdGls bCB1c2luZworCSAqIGl0LgorCSAqLworCXByX2ZkID0gUFJfSW1wb3J0VENQU29ja2V0KHBvcnQt PnNvY2spOworCWlmICghcHJfZmQpCisJeworCQllcmVwb3J0KENPTU1FUlJPUiwKKwkJCQkoZXJy bXNnKCJ1bmFibGUgdG8gY29ubmVjdCB0byBzb2NrZXQiKSkpOworCQlyZXR1cm4gLTE7CisJfQor CisJLyoKKwkgKiBNb3N0IG9mIHRoZSBkb2N1bWVudGF0aW9uIGF2YWlsYWJsZSwgYW5kIGltcGxl bWVudGF0aW9ucyBvZiwgTlNTL05TUFIKKwkgKiB1c2UgdGhlIFBSX05ld1RDUFNvY2tldCgpIGZ1 bmN0aW9uIGhlcmUsIHdoaWNoIGhhcyB0aGUgZHJhd2JhY2sgdGhhdCBpdAorCSAqIGNhbiBvbmx5 IGNyZWF0ZSBJUHY0IHNvY2tldHMuIEluc3RlYWQgdXNlIFBSX09wZW5UQ1BTb2NrZXQoKSB3aGlj aAorCSAqIGNvcGVzIHdpdGggSVB2NiBhcyB3ZWxsLgorCSAqCisJICogV2UgdXNlIGEgbW9kZWwg ZmlsZWRlc2NyaXB0b3IgaGVyZSB3aGljaCBpcyBhIGNvbnN0cnVjdCBpbiBOU1BSL05TUyBpbgor CSAqIG9yZGVyIHRvIGNyZWF0ZSBhIGNvbmZpZ3VyYXRpb24gdGVtcGxhdGUgZm9yIHNvY2tldHMg d2hpY2ggY2FuIHRoZW4gYmUKKwkgKiBhcHBsaWVkIHRvIG5ldyBzb2NrZXRzIGNyZWF0ZWQuIFRo aXMgbWFrZXMgbW9yZSBzZW5zZSBpbiBhIHNlcnZlciB3aGljaAorCSAqIGFjY2VwdHMgbXVsdGlw bGUgY29ubmVjdGlvbnMgYW5kIHdhbnQgdG8gcGVyZm9ybSB0aGUgYm9pbGVycGxhdGUganVzdAor CSAqIG9uY2UsIGJ1dCBpdCBkb2VzIHByb3ZpZGUgYSBuaWNlIGFic3RyYWN0aW9uIGhlcmUgYXMg d2VsbCBpbiB0aGF0IHdlCisJICogY2FuIGVycm9yIG91dCBlYXJseSB3aXRob3V0IGhhdmluZyBw ZXJmb3JtZWQgYW55IG9wZXJhdGlvbiBvbiB0aGUgcmVhbAorCSAqIHNvY2tldC4KKwkgKi8KKwlt b2RlbCA9IFBSX09wZW5UQ1BTb2NrZXQocG9ydC0+bGFkZHIuYWRkci5zc19mYW1pbHkpOworCWlm ICghbW9kZWwpCisJeworCQllcmVwb3J0KENPTU1FUlJPUiwKKwkJCQkoZXJybXNnKCJ1bmFibGUg dG8gb3BlbiBzb2NrZXQiKSkpOworCQlyZXR1cm4gLTE7CisJfQorCisJLyoKKwkgKiBDb252ZXJ0 IHRoZSBOU1BSIHNvY2tldCB0byBhbiBTU0wgc29ja2V0LiBFbnN1cmluZyB0aGUgc3VjY2VzcyBv ZiB0aGlzCisJICogb3BlcmF0aW9uIGlzIGNyaXRpY2FsIGFzIE5TUyBTU0xfKiBmdW5jdGlvbnMg bWF5IHJldHVybiBTRUNTdWNjZXNzIG9uCisJICogdGhlIHNvY2tldCBldmVuIHRob3VnaCBTU0wg aGFzbid0IGJlZW4gZW5hYmxlZCwgd2hpY2ggaW50cm9kdWNlIGEgcmlzaworCSAqIG9mIHNpbGVu dCBkb3duZ3JhZGVzLgorCSAqLworCW1vZGVsID0gU1NMX0ltcG9ydEZEKE5VTEwsIG1vZGVsKTsK KwlpZiAoIW1vZGVsKQorCXsKKwkJZXJlcG9ydChDT01NRVJST1IsCisJCQkJKGVycm1zZygidW5h YmxlIHRvIGVuYWJsZSBUTFMgb24gc29ja2V0IikpKTsKKwkJcmV0dXJuIC0xOworCX0KKworCS8q CisJICogQ29uZmlndXJlIGJhc2ljIHNldHRpbmdzIGZvciB0aGUgY29ubmVjdGlvbiBvdmVyIHRo ZSBTU0wgc29ja2V0IGluCisJICogb3JkZXIgdG8gc2V0IGl0IHVwIGFzIGEgc2VydmVyLgorCSAq LworCWlmIChTU0xfT3B0aW9uU2V0KG1vZGVsLCBTU0xfU0VDVVJJVFksIFBSX1RSVUUpICE9IFNF Q1N1Y2Nlc3MpCisJeworCQllcmVwb3J0KENPTU1FUlJPUiwKKwkJCQkoZXJybXNnKCJ1bmFibGUg dG8gY29uZmlndXJlIFRMUyBjb25uZWN0aW9uIikpKTsKKwkJcmV0dXJuIC0xOworCX0KKworCWlm IChTU0xfT3B0aW9uU2V0KG1vZGVsLCBTU0xfSEFORFNIQUtFX0FTX1NFUlZFUiwgUFJfVFJVRSkg IT0gU0VDU3VjY2VzcyB8fAorCQlTU0xfT3B0aW9uU2V0KG1vZGVsLCBTU0xfSEFORFNIQUtFX0FT X0NMSUVOVCwgUFJfRkFMU0UpICE9IFNFQ1N1Y2Nlc3MpCisJeworCQllcmVwb3J0KENPTU1FUlJP UiwKKwkJCQkoZXJybXNnKCJ1bmFibGUgdG8gY29uZmlndXJlIFRMUyBjb25uZWN0aW9uIGFzIHNl cnZlciIpKSk7CisJCXJldHVybiAtMTsKKwl9CisKKwkvKgorCSAqIFNTTHYyIGlzIGRpc2FibGVk IGJ5IGRlZmF1bHQsIGFuZCBTU0x2MyB3aWxsIGJlIGV4Y2x1ZGVkIGZyb20gdGhlIHJhbmdlCisJ ICogb2YgYWxsb3dlZCBwcm90b2NvbHMgZnVydGhlciBkb3duLiBTaW5jZSB3ZSByZWFsbHkgZG9u J3Qgd2FudCB0aGVzZSB0bworCSAqIGV2ZXIgYmUgZW5hYmxlZCwgbGV0J3MgdXNlIGJlbHRzIGFu ZCBzdXNwZW5kZXJzIGFuZCBleHBsaWNpdGx5IHR1cm4KKwkgKiB0aGVtIG9mZiBhcyB3ZWxsLgor CSAqLworCVNTTF9PcHRpb25TZXQobW9kZWwsIFNTTF9FTkFCTEVfU1NMMiwgUFJfRkFMU0UpOwor CVNTTF9PcHRpb25TZXQobW9kZWwsIFNTTF9FTkFCTEVfU1NMMywgUFJfRkFMU0UpOworCisjaWZk ZWYgU1NMX0NCQ19SQU5ET01fSVYKKworCS8qCisJICogRW5hYmxlIHByb3RlY3Rpb24gYWdhaW5z dCB0aGUgQkVBU1QgYXR0YWNrIGluIGNhc2UgdGhlIE5TUyBzZXJ2ZXIgaGFzCisJICogc3VwcG9y dCBmb3IgdGhhdC4gV2hpbGUgU1NMdjMgaXMgZGlzYWJsZWQsIHdlIG1heSBzdGlsbCBhbGxvdyBU TFN2MQorCSAqIHdoaWNoIGlzIGFmZmVjdGVkLiBUaGUgb3B0aW9uIGlzbid0IGRvY3VtZW50ZWQg YXMgYW4gU1NMIG9wdGlvbiwgYnV0IGFzCisJICogYW4gTlNTIGVudmlyb25tZW50IHZhcmlhYmxl LgorCSAqLworCVNTTF9PcHRpb25TZXQobW9kZWwsIFNTTF9DQkNfUkFORE9NX0lWLCBQUl9UUlVF KTsKKyNlbmRpZgorCisJLyoKKwkgKiBDb25maWd1cmUgdGhlIGFsbG93ZWQgY2lwaGVycy4gSWYg dGhlcmUgYXJlIG5vIHVzZXIgcHJlZmVycmVkIHN1aXRlcywKKwkgKiBzZXQgdGhlIGRvbWVzdGlj IHBvbGljeS4KKwkgKgorCSAqIEhpc3RvcmljYWxseSB0aGVyZSB3ZXJlIGRpZmZlcmVudCBjaXBo ZXIgcG9saWNpZXMgYmFzZWQgb24gZXhwb3J0IChhbmQKKwkgKiBpbXBvcnQpIHJlc3RyaWN0aW9u czogRG9tZXN0aWMsIEV4cG9ydCBhbmQgRnJhbmNlLiBUaGVzZSBhcmUgc2luY2UgbG9uZworCSAq IHJlbW92ZWQgd2l0aCBhbGwgY2lwaGVycyBiZWluZyBlbmFibGVkIGJ5IGRlZmF1bHQuIER1ZSB0 byBiYWNrd2FyZHMKKwkgKiBjb21wYXRpYmlsaXR5LCB0aGUgb2xkIEFQSSBpcyBzdGlsbCB1c2Vk IGV2ZW4gdGhvdWdoIGFsbCB0aHJlZSBwb2xpY2llcworCSAqIG5vdyBkbyB0aGUgc2FtZSB0aGlu Zy4KKwkgKgorCSAqIElmIFNTTENpcGhlclN1aXRlcyBkZWZpbmUgYSBwb2xpY3kgb2YgdGhlIHVz ZXIsIHdlIHNldCB0aGF0IHJhdGhlciB0aGFuCisJICogZW5hYmxpbmcgYWxsIGNpcGhlcnMgdmlh IE5TU19TZXREb21lc3RpY1BvbGljeS4KKwkgKgorCSAqIFRPRE86IHdoaWxlIHRoaXMgY29kZSB3 b3JrcywgdGhlIHNldCBvZiBjaXBoZXJzIHdoaWNoIGNhbiBiZSBzZXQgYW5kCisJICogc3RpbGwg ZW5kIHVwIHdpdGggYSB3b3JraW5nIHNvY2tldCBpcyB3b2VmdWxseSB1bmRlcmRvY3VtZW50ZWQg Zm9yCisJICogYW55dGhpbmcgbW9yZSByZWNlbnQgdGhhbiBTU0x2MyAodGhlIGNvZGUgZm9yIFRM UyBhY3R1YWxseSBjYWxscyBzc2wzCisJICogZnVuY3Rpb25zIHVuZGVyIHRoZSBob29kIGZvciBT U0xfQ2lwaGVyUHJlZlNldCksIHNvIGl0J3MgdW5jbGVhciBpZgorCSAqIHRoaXMgaXMgaGVscGZ1 bCBvciBub3QuIFVzaW5nIHRoZSBwb2xpY2llcyB3b3JrcywgYnV0IG1heSBiZSB0b28KKwkgKiBj b2Fyc2VseSBncmFpbmVkLgorCSAqCisJICogQW5vdGhlciBUT0RPOiBUaGUgU1NMX0ltcGxlbWVu dGVkQ2lwaGVycyB0YWJsZSByZXR1cm5lZCB3aXRoIGNhbGxpbmcKKwkgKiBTU0xfR2V0SW1wbGVt ZW50ZWRDaXBoZXJzIGlzIHNvcnRlZCBpbiBzZXJ2ZXIgcHJlZmVyZW5jZSBvcmRlci4gU29ydGlu ZworCSAqIFNTTENpcGhlclN1aXRlcyBhY2NvcmRpbmcgdG8gdGhlIG9yZGVyIG9mIHRoZSBjaXBo ZXJzIHRoZXJlaW4gY291bGQgYmUKKwkgKiBhIHdheSB0byBpbXBsZW1lbnQgc3NsX3ByZWZlcl9z ZXJ2ZXJfY2lwaGVycyAtIGlmIHdlIGF0IGFsbCB3YW50IHRvIHVzZQorCSAqIGNpcGhlciBzZWxl Y3Rpb24gZm9yIE5TUyBsaWtlIGhvdyB3ZSBkbyBpdCBmb3IgT3BlblNTTCB0aGF0IGlzLgorCSAq LworCisJLyoKKwkgKiBJZiBubyBjaXBoZXJzIGFyZSBzcGVjaWZpZWQsIGVuYWJsZSB0aGVtIGFs bC4KKwkgKi8KKwlpZiAoIVNTTENpcGhlclN1aXRlcyB8fCBzdHJsZW4oU1NMQ2lwaGVyU3VpdGVz KSA9PSAwKQorCXsKKwkJc3RhdHVzID0gTlNTX1NldERvbWVzdGljUG9saWN5KCk7CisJCWlmIChz dGF0dXMgIT0gU0VDU3VjY2VzcykKKwkJeworCQkJZXJlcG9ydChDT01NRVJST1IsCisJCQkJCShl cnJtc2coInVuYWJsZSB0byBzZXQgY2lwaGVyIHBvbGljeTogJXMiLAorCQkJCQkJCXBnX1NTTGVy cm1lc3NhZ2UoUFJfR2V0RXJyb3IoKSkpKSk7CisJCQlyZXR1cm4gLTE7CisJCX0KKwl9CisJZWxz ZQorCXsKKwkJY2hhcgkgICAqY2lwaGVycywKKwkJCQkgICAqYzsKKworCQljaGFyCSAgICpzZXAg PSAiOjssICI7CisJCVBSVWludDE2CWNpcGhlcmNvZGU7CisJCWNvbnN0CQlQUlVpbnQxNiAqbnNz X2NpcGhlcnM7CisKKwkJLyoKKwkJICogSWYgdGhlIHVzZXIgaGFzIHNwZWNpZmllZCBhIHNldCBv ZiBwcmVmZXJyZWQgY2lwaGVyIHN1aXRlcyB3ZSBzdGFydAorCQkgKiBieSB0dXJuaW5nIG9mZiBh bGwgdGhlIGV4aXN0aW5nIHN1aXRlcyB0byBhdm9pZCB0aGUgcmlzayBvZiBkb3duLQorCQkgKiBn cmFkZXMgdG8gYSB3ZWFrZXIgY2lwaGVyIHRoYW4gZXhwZWN0ZWQuCisJCSAqLworCQluc3NfY2lw aGVycyA9IFNTTF9HZXRJbXBsZW1lbnRlZENpcGhlcnMoKTsKKwkJZm9yIChpbnQgaSA9IDA7IGkg PCBTU0xfR2V0TnVtSW1wbGVtZW50ZWRDaXBoZXJzKCk7IGkrKykKKwkJCVNTTF9DaXBoZXJQcmVm U2V0KG1vZGVsLCBuc3NfY2lwaGVyc1tpXSwgUFJfRkFMU0UpOworCisJCWNpcGhlcnMgPSBwc3Ry ZHVwKFNTTENpcGhlclN1aXRlcyk7CisKKwkJZm9yIChjID0gc3RydG9rKGNpcGhlcnMsIHNlcCk7 IGM7IGMgPSBzdHJ0b2soTlVMTCwgc2VwKSkKKwkJeworCQkJY2lwaGVyY29kZSA9IHBnX2ZpbmRf Y2lwaGVyKGMpOworCQkJaWYgKGNpcGhlcmNvZGUgIT0gSU5WQUxJRF9DSVBIRVIpCisJCQl7CisJ CQkJc3RhdHVzID0gU1NMX0NpcGhlclByZWZTZXQobW9kZWwsIGNpcGhlcmNvZGUsIFBSX1RSVUUp OworCQkJCWlmIChzdGF0dXMgIT0gU0VDU3VjY2VzcykKKwkJCQl7CisJCQkJCWVyZXBvcnQoQ09N TUVSUk9SLAorCQkJCQkJCShlcnJtc2coImludmFsaWQgY2lwaGVyLXN1aXRlIHNwZWNpZmllZDog JXMiLCBjKSkpOworCQkJCQlyZXR1cm4gLTE7CisJCQkJfQorCQkJfQorCQl9CisKKwkJcGZyZWUo Y2lwaGVycyk7CisJfQorCisJaWYgKFNTTF9WZXJzaW9uUmFuZ2VTZXQobW9kZWwsICZkZXNpcmVk X3NzbHZlcikgIT0gU0VDU3VjY2VzcykKKwl7CisJCWVyZXBvcnQoQ09NTUVSUk9SLAorCQkJCShl cnJtc2coInVuYWJsZSB0byBzZXQgcmVxdWVzdGVkIFNTTCBwcm90b2NvbCB2ZXJzaW9uIHJhbmdl IikpKTsKKwkJcmV0dXJuIC0xOworCX0KKworCS8qCisJICogU2V0IHVwIHRoZSBjdXN0b20gSU8g bGF5ZXIuCisJICovCisJbGF5ZXIgPSBpbml0X2lvbGF5ZXIocG9ydCk7CisJaWYgKCFsYXllcikK KwkJcmV0dXJuIC0xOworCisJaWYgKFBSX1B1c2hJT0xheWVyKHByX2ZkLCBQUl9UT1BfSU9fTEFZ RVIsIGxheWVyKSAhPSBQUl9TVUNDRVNTKQorCXsKKwkJUFJfQ2xvc2UobGF5ZXIpOworCQllcmVw b3J0KENPTU1FUlJPUiwKKwkJCQkoZXJybXNnKCJ1bmFibGUgdG8gcHVzaCBJTyBsYXllciIpKSk7 CisJCXJldHVybiAtMTsKKwl9CisKKwlzZXJ2ZXJfY2VydCA9IFBLMTFfRmluZENlcnRGcm9tTmlj a25hbWUoc3NsX2NlcnRfZmlsZSwgKHZvaWQgKikgcG9ydCk7CisJaWYgKCFzZXJ2ZXJfY2VydCkK Kwl7CisJCWlmIChkdW1teV9zc2xfcGFzc3dkX2NiX2NhbGxlZCkKKwkJeworCQkJZXJlcG9ydChD T01NRVJST1IsCisJCQkJCShlcnJtc2coInVuYWJsZSB0byBsb2FkIGNlcnRpZmljYXRlIGZvciBc IiVzXCI6ICVzIiwKKwkJCQkJCQlzc2xfY2VydF9maWxlLCBwZ19TU0xlcnJtZXNzYWdlKFBSX0dl dEVycm9yKCkpKSwKKwkJCQkJIGVycmhpbnQoIlRoZSBjZXJ0aWZpY2F0ZSByZXF1aXJlcyBhIHBh c3N3b3JkLiIpKSk7CisJCQlyZXR1cm4gLTE7CisJCX0KKwkJZWxzZQorCQl7CisJCQllcmVwb3J0 KENPTU1FUlJPUiwKKwkJCQkJKGVycm1zZygidW5hYmxlIHRvIGZpbmQgY2VydGlmaWNhdGUgZm9y IFwiJXNcIjogJXMiLAorCQkJCQkJCXNzbF9jZXJ0X2ZpbGUsIHBnX1NTTGVycm1lc3NhZ2UoUFJf R2V0RXJyb3IoKSkpKSk7CisJCQlyZXR1cm4gLTE7CisJCX0KKwl9CisKKwlwcml2YXRlX2tleSA9 IFBLMTFfRmluZEtleUJ5QW55Q2VydChzZXJ2ZXJfY2VydCwgKHZvaWQgKikgcG9ydCk7CisJaWYg KCFwcml2YXRlX2tleSkKKwl7CisJCWlmIChkdW1teV9zc2xfcGFzc3dkX2NiX2NhbGxlZCkKKwkJ eworCQkJZXJlcG9ydChDT01NRVJST1IsCisJCQkJCShlcnJtc2coInVuYWJsZSB0byBsb2FkIHBy aXZhdGUga2V5IGZvciBcIiVzXCI6ICVzIiwKKwkJCQkJCQlzc2xfY2VydF9maWxlLCBwZ19TU0xl cnJtZXNzYWdlKFBSX0dldEVycm9yKCkpKSwKKwkJCQkJIGVycmhpbnQoIlRoZSBwcml2YXRlIGtl eSByZXF1aXJlcyBhIHBhc3N3b3JkLiIpKSk7CisJCQlyZXR1cm4gLTE7CisJCX0KKwkJZWxzZQor CQl7CisJCQllcmVwb3J0KENPTU1FUlJPUiwKKwkJCQkJKGVycm1zZygidW5hYmxlIHRvIGZpbmQg cHJpdmF0ZSBrZXkgZm9yIFwiJXNcIjogJXMiLAorCQkJCQkJCXNzbF9jZXJ0X2ZpbGUsIHBnX1NT TGVycm1lc3NhZ2UoUFJfR2V0RXJyb3IoKSkpKSk7CisJCQlyZXR1cm4gLTE7CisJCX0KKwl9CisK KwkvKgorCSAqIE5TUyBkb2Vzbid0IHVzZSBDUkwgZmlsZXMgb24gZGlzaywgc28gd2UgdXNlIHRo ZSBzc2xfY3JsX2ZpbGUgZ3VjIHRvCisJICogY29udGFpbiB0aGUgQ1JMIG5pY2tuYW1lIGZvciB0 aGUgY3VycmVudCBzZXJ2ZXIgY2VydGlmaWNhdGUgaW4gdGhlIE5TUworCSAqIGNlcnRpZmljYXRl IGRhdGFiYXNlLiBUaGUgbWFpbiBkaWZmZXJlbmNlIGZyb20gdGhlIE9wZW5TU0wgYmFja2VuZCBp cworCSAqIHRoYXQgTlNTIHdpbGwgdXNlIHRoZSBDUkwgcmVnYXJkbGVzcywgYnV0IGJlaW5nIGFi bGUgdG8gbWFrZSBzdXJlIHRoZQorCSAqIENSTCBpcyBsb2FkZWQgc2VlbXMgbGlrZSBhIGdvb2Qg ZmVhdHVyZS4KKwkgKi8KKwlpZiAoc3NsX2NybF9maWxlWzBdKQorCXsKKwkJU0VDSVRFTV9Db3B5 SXRlbShOVUxMLCAmY3JsbmFtZSwgJnNlcnZlcl9jZXJ0LT5kZXJTdWJqZWN0KTsKKwkJY3JsID0g U0VDX0ZpbmRDcmxCeU5hbWUoQ0VSVF9HZXREZWZhdWx0Q2VydERCKCksICZjcmxuYW1lLCBTRUNf Q1JMX1RZUEUpOworCQlpZiAoIWNybCkKKwkJeworCQkJZXJlcG9ydChDT01NRVJST1IsCisJCQkJ CShlcnJtc2coInNwZWNpZmllZCBDUkwgbm90IGZvdW5kIGluIGRhdGFiYXNlIikpKTsKKwkJCXJl dHVybiAtMTsKKwkJfQorCQlTRUNfRGVzdHJveUNybChjcmwpOworCX0KKworCS8qCisJICogRmlu YWxseSB3ZSBtdXN0IGNvbmZpZ3VyZSB0aGUgc29ja2V0IGZvciBiZWluZyBhIHNlcnZlciBieSBz ZXR0aW5nIHRoZQorCSAqIGNlcnRpZmljYXRlIGFuZCBrZXkuIFRoZSBOVUxMIHBhcmFtZXRlciBp cyBhbiBTU0xFeHRyYVNlcnZlckNlcnREYXRhCisJICogcG9pbnRlciB3aXRoIHRoZSBmaW5hbCBw YXJhbWV0ZXIgYmVpbmcgdGhlIHNpemUgb2YgdGhlIGV4dHJhIHNlcnZlcgorCSAqIGNlcnQgZGF0 YSBzdHJ1Y3R1cmUgcG9pbnRlZCB0by4gVGhpcyBpcyB0eXBpY2FsbHkgb25seSB1c2VkIGZvcgor CSAqIGNyZWRlbnRpYWwgZGVsZWdhdGlvbi4KKwkgKi8KKwlzdGF0dXMgPSBTU0xfQ29uZmlnU2Vy dmVyQ2VydChtb2RlbCwgc2VydmVyX2NlcnQsIHByaXZhdGVfa2V5LCBOVUxMLCAwKTsKKwlpZiAo c3RhdHVzICE9IFNFQ1N1Y2Nlc3MpCisJeworCQllcmVwb3J0KENPTU1FUlJPUiwKKwkJCQkoZXJy bXNnKCJ1bmFibGUgdG8gY29uZmlndXJlIHNlcnZlciBmb3IgVExTIHNlcnZlciBjb25uZWN0aW9u czogJXMiLAorCQkJCQkJcGdfU1NMZXJybWVzc2FnZShQUl9HZXRFcnJvcigpKSkpKTsKKwkJcmV0 dXJuIC0xOworCX0KKworCXNzbF9sb2FkZWRfdmVyaWZ5X2xvY2F0aW9ucyA9IHRydWU7CisKKwkv KgorCSAqIEF0IHRoaXMgcG9pbnQsIHdlIG5vIGxvbmdlciBoYXZlIHVzZSBmb3IgdGhlIGNlcnRp ZmljYXRlIGFuZCBwcml2YXRlCisJICoga2V5IGFzIHRoZXkgaGF2ZSBiZWVuIGNvcGllZCBpbnRv IHRoZSBjb250ZXh0IGJ5IE5TUy4gRGVzdHJveSBvdXIKKwkgKiBjb3BpZXMgZXhwbGljaXRseSB0 byBjbGVhbiBvdXQgdGhlIG1lbW9yeSBhcyBiZXN0IHdlIGNhbi4KKwkgKi8KKwlDRVJUX0Rlc3Ry b3lDZXJ0aWZpY2F0ZShzZXJ2ZXJfY2VydCk7CisJU0VDS0VZX0Rlc3Ryb3lQcml2YXRlS2V5KHBy aXZhdGVfa2V5KTsKKworCXN0YXR1cyA9IFNTTF9BdXRoQ2VydGlmaWNhdGVIb29rKG1vZGVsLCBw Z19jZXJ0X2F1dGhfaGFuZGxlciwgKHZvaWQgKikgcG9ydCk7CisJaWYgKHN0YXR1cyAhPSBTRUNT dWNjZXNzKQorCXsKKwkJZXJlcG9ydChDT01NRVJST1IsCisJCQkJKGVycm1zZygidW5hYmxlIHRv IGluc3RhbGwgYXV0aGNlcnQgaG9vazogJXMiLAorCQkJCQkJcGdfU1NMZXJybWVzc2FnZShQUl9H ZXRFcnJvcigpKSkpKTsKKwkJcmV0dXJuIC0xOworCX0KKwlTU0xfQmFkQ2VydEhvb2sobW9kZWws IHBnX2JhZF9jZXJ0X2hhbmRsZXIsICh2b2lkICopIHBvcnQpOworCVNTTF9PcHRpb25TZXQobW9k ZWwsIFNTTF9SRVFVRVNUX0NFUlRJRklDQVRFLCBQUl9UUlVFKTsKKwlTU0xfT3B0aW9uU2V0KG1v ZGVsLCBTU0xfUkVRVUlSRV9DRVJUSUZJQ0FURSwgUFJfRkFMU0UpOworCisJcG9ydC0+cHJfZmQg PSBTU0xfSW1wb3J0RkQobW9kZWwsIHByX2ZkKTsKKwlpZiAoIXBvcnQtPnByX2ZkKQorCXsKKwkJ ZXJlcG9ydChDT01NRVJST1IsCisJCQkJKGVycm1zZygidW5hYmxlIHRvIGluaXRpYWxpemUiKSkp OworCQlyZXR1cm4gLTE7CisJfQorCisJUFJfQ2xvc2UobW9kZWwpOworCisJLyoKKwkgKiBGb3Jj ZSBhIGhhbmRzaGFrZSBvbiB0aGUgbmV4dCBJL08gcmVxdWVzdCwgdGhlIHNlY29uZCBwYXJhbWV0 ZXIgbWVhbnMKKwkgKiB0aGF0IHdlIGFyZSBhIHNlcnZlciwgUFJfRkFMU0Ugd291bGQgaW5kaWNh dGUgYmVpbmcgYSBjbGllbnQuIE5TUFIKKwkgKiByZXF1aXJlcyB1cyB0byBjYWxsIFNTTF9SZXNl dEhhbmRzaGFrZSBzaW5jZSB3ZSBpbXBvcnRlZCBhbiBhbHJlYWR5CisJICogZXN0YWJsaXNoZWQg c29ja2V0LgorCSAqLworCXN0YXR1cyA9IFNTTF9SZXNldEhhbmRzaGFrZShwb3J0LT5wcl9mZCwg UFJfVFJVRSk7CisJaWYgKHN0YXR1cyAhPSBTRUNTdWNjZXNzKQorCXsKKwkJZXJlcG9ydChDT01N RVJST1IsCisJCQkJKGVycm1zZygidW5hYmxlIHRvIGluaXRpYXRlIGhhbmRzaGFrZTogJXMiLAor CQkJCQkJcGdfU1NMZXJybWVzc2FnZShQUl9HZXRFcnJvcigpKSkpKTsKKwkJcmV0dXJuIC0xOwor CX0KKwlzdGF0dXMgPSBTU0xfRm9yY2VIYW5kc2hha2UocG9ydC0+cHJfZmQpOworCWlmIChzdGF0 dXMgIT0gU0VDU3VjY2VzcykKKwl7CisJCWVyZXBvcnQoQ09NTUVSUk9SLAorCQkJCShlcnJtc2co InVuYWJsZSB0byBoYW5kc2hha2U6ICVzIiwKKwkJCQkJCXBnX1NTTGVycm1lc3NhZ2UoUFJfR2V0 RXJyb3IoKSkpKSk7CisJCXJldHVybiAtMTsKKwl9CisKKwlwb3J0LT5zc2xfaW5fdXNlID0gdHJ1 ZTsKKwlyZXR1cm4gMDsKK30KKworc3NpemVfdAorYmVfdGxzX3JlYWQoUG9ydCAqcG9ydCwgdm9p ZCAqcHRyLCBzaXplX3QgbGVuLCBpbnQgKndhaXRmb3IpCit7CisJc3NpemVfdAkJbl9yZWFkOwor CVBSRXJyb3JDb2RlIGVycjsKKworCW5fcmVhZCA9IFBSX1JlYWQocG9ydC0+cHJfZmQsIHB0ciwg bGVuKTsKKworCWlmIChuX3JlYWQgPCAwKQorCXsKKwkJZXJyID0gUFJfR2V0RXJyb3IoKTsKKwor CQlpZiAoZXJyID09IFBSX1dPVUxEX0JMT0NLX0VSUk9SKQorCQl7CisJCQkqd2FpdGZvciA9IFdM X1NPQ0tFVF9SRUFEQUJMRTsKKwkJCWVycm5vID0gRVdPVUxEQkxPQ0s7CisJCX0KKwkJZWxzZQor CQkJZXJybm8gPSBFQ09OTlJFU0VUOworCX0KKworCXJldHVybiBuX3JlYWQ7Cit9CisKK3NzaXpl X3QKK2JlX3Rsc193cml0ZShQb3J0ICpwb3J0LCB2b2lkICpwdHIsIHNpemVfdCBsZW4sIGludCAq d2FpdGZvcikKK3sKKwlzc2l6ZV90CQluX3dyaXRlOworCVBSRXJyb3JDb2RlIGVycjsKKwlQUklu dG4JCWZsYWdzID0gMDsKKworCS8qCisJICogVGhlIGZsYWdzIHBhcmFtZXRlciB0byBQUl9TZW5k IGlzIG5vIGxvbmdlciB1c2VkIGFuZCBpcywgYWNjb3JkaW5nIHRvCisJICogdGhlIGRvY3VtZW50 YXRpb24sIHJlcXVpcmVkIHRvIGJlIHplcm8uCisJICovCisJbl93cml0ZSA9IFBSX1NlbmQocG9y dC0+cHJfZmQsIHB0ciwgbGVuLCBmbGFncywgUFJfSU5URVJWQUxfTk9fV0FJVCk7CisKKwlpZiAo bl93cml0ZSA8IDApCisJeworCQllcnIgPSBQUl9HZXRFcnJvcigpOworCisJCWlmIChlcnIgPT0g UFJfV09VTERfQkxPQ0tfRVJST1IpCisJCXsKKwkJCSp3YWl0Zm9yID0gV0xfU09DS0VUX1dSSVRF QUJMRTsKKwkJCWVycm5vID0gRVdPVUxEQkxPQ0s7CisJCX0KKwkJZWxzZQorCQkJZXJybm8gPSBF Q09OTlJFU0VUOworCX0KKworCXJldHVybiBuX3dyaXRlOworfQorCit2b2lkCitiZV90bHNfY2xv c2UoUG9ydCAqcG9ydCkKK3sKKwlpZiAoIXBvcnQpCisJCXJldHVybjsKKworCWlmIChwb3J0LT5w ZWVyX2NuKQorCXsKKwkJU1NMX0ludmFsaWRhdGVTZXNzaW9uKHBvcnQtPnByX2ZkKTsKKwkJcGZy ZWUocG9ydC0+cGVlcl9jbik7CisJCXBvcnQtPnBlZXJfY24gPSBOVUxMOworCX0KKworCVBSX0Ns b3NlKHBvcnQtPnByX2ZkKTsKKwlwb3J0LT5wcl9mZCA9IE5VTEw7CisJcG9ydC0+c3NsX2luX3Vz ZSA9IGZhbHNlOworCisJaWYgKG5zc19jb250ZXh0KQorCXsKKwkJTlNTX1NodXRkb3duQ29udGV4 dChuc3NfY29udGV4dCk7CisJCW5zc19jb250ZXh0ID0gTlVMTDsKKwl9Cit9CisKK3ZvaWQKK2Jl X3Rsc19kZXN0cm95KHZvaWQpCit7CisJLyoKKwkgKiBJdCByZWFkcyBhIGJpdCBvZGQgdG8gY2xl YXIgYSBzZXNzaW9uIGNhY2hlIHdoZW4gd2UgYXJlIGRlc3Ryb3lpbmcgdGhlCisJICogY29udGV4 dCBhbHRvZ2V0aGVyLCBidXQgaWYgdGhlIHNlc3Npb24gY2FjaGUgaXNuJ3QgY2xlYXJlZCBiZWZv cmUKKwkgKiBzaHV0dGluZyBkb3duIHRoZSBjb250ZXh0IGl0IHdpbGwgZmFpbCB3aXRoIFNFQ19F UlJPUl9CVVNZLgorCSAqLworCVNTTF9DbGVhclNlc3Npb25DYWNoZSgpOworfQorCitpbnQKK2Jl X3Rsc19nZXRfY2lwaGVyX2JpdHMoUG9ydCAqcG9ydCkKK3sKKwlTRUNTdGF0dXMJc3RhdHVzOwor CVNTTENoYW5uZWxJbmZvIGNoYW5uZWw7CisJU1NMQ2lwaGVyU3VpdGVJbmZvIHN1aXRlOworCisJ c3RhdHVzID0gU1NMX0dldENoYW5uZWxJbmZvKHBvcnQtPnByX2ZkLCAmY2hhbm5lbCwgc2l6ZW9m KGNoYW5uZWwpKTsKKwlpZiAoc3RhdHVzICE9IFNFQ1N1Y2Nlc3MpCisJCWdvdG8gZXJyb3I7CisK KwlzdGF0dXMgPSBTU0xfR2V0Q2lwaGVyU3VpdGVJbmZvKGNoYW5uZWwuY2lwaGVyU3VpdGUsICZz dWl0ZSwgc2l6ZW9mKHN1aXRlKSk7CisJaWYgKHN0YXR1cyAhPSBTRUNTdWNjZXNzKQorCQlnb3Rv IGVycm9yOworCisJcmV0dXJuIHN1aXRlLmVmZmVjdGl2ZUtleUJpdHM7CisKK2Vycm9yOgorCWVy ZXBvcnQoV0FSTklORywKKwkJCShlcnJtc2coInVuYWJsZSB0byBleHRyYWN0IFRMUyBzZXNzaW9u IGluZm9ybWF0aW9uOiAlcyIsCisJCQkJCXBnX1NTTGVycm1lc3NhZ2UoUFJfR2V0RXJyb3IoKSkp KSk7CisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBiZV90bHNfZ2V0X2NvbXByZXNzaW9uCisgKgor ICogTlNTIGRpc2FibGVkIHN1cHBvcnQgZm9yIFRMUyBjb21wcmVzc2lvbiBpbiB2ZXJzaW9uIDMu MzMgYW5kIHJlbW92ZWQgdGhlCisgKiBjb2RlIGluIGEgc3Vic2VxdWVudCByZWxlYXNlLiBUaGUg QVBJIGZvciByZXRyaWV2aW5nIGluZm9ybWF0aW9uIGFib3V0CisgKiBjb21wcmVzc2lvbiBhcyB3 ZWxsIGFzIGVuYWJsaW5nIGl0IGlzIGtlcHQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCBi dXQKKyAqIHdlIGRvbid0IG5lZWQgdG8gY29uc3VsdCBpdCBzaW5jZSBpdCB3YXMgb25seSBhdmFp bGFibGUgZm9yIFNTTHYzIHdoaWNoIHdlCisgKiBkb24ndCBzdXBwb3J0LgorICoKKyAqIGh0dHBz Oi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDk1ODcKKyAqLworYm9v bAorYmVfdGxzX2dldF9jb21wcmVzc2lvbihQb3J0ICpwb3J0KQoreworCXJldHVybiBmYWxzZTsK K30KKworLyoKKyAqIGJlX3Rsc19nZXRfdmVyc2lvbgorICoKKyAqIFJldHVybnMgdGhlIHByb3Rv Y29sIHZlcnNpb24gdXNlZCBmb3IgdGhlIGN1cnJlbnQgY29ubmVjdGlvbiwgb3IgTlVMTCBpbgor ICogY2FzZSBvZiBlcnJvcnMuCisgKi8KK2NvbnN0IGNoYXIgKgorYmVfdGxzX2dldF92ZXJzaW9u KFBvcnQgKnBvcnQpCit7CisJU0VDU3RhdHVzCXN0YXR1czsKKwlTU0xDaGFubmVsSW5mbyBjaGFu bmVsOworCisJc3RhdHVzID0gU1NMX0dldENoYW5uZWxJbmZvKHBvcnQtPnByX2ZkLCAmY2hhbm5l bCwgc2l6ZW9mKGNoYW5uZWwpKTsKKwlpZiAoc3RhdHVzICE9IFNFQ1N1Y2Nlc3MpCisJeworCQll cmVwb3J0KFdBUk5JTkcsCisJCQkJKGVycm1zZygidW5hYmxlIHRvIGV4dHJhY3QgVExTIHNlc3Np b24gaW5mb3JtYXRpb246ICVzIiwKKwkJCQkJCXBnX1NTTGVycm1lc3NhZ2UoUFJfR2V0RXJyb3Io KSkpKSk7CisJCXJldHVybiBOVUxMOworCX0KKworCXJldHVybiBzc2xfcHJvdG9jb2xfdmVyc2lv bl90b19zdHJpbmcoY2hhbm5lbC5wcm90b2NvbFZlcnNpb24pOworfQorCitjb25zdCBjaGFyICoK K2JlX3Rsc19nZXRfY2lwaGVyKFBvcnQgKnBvcnQpCit7CisJU0VDU3RhdHVzCXN0YXR1czsKKwlT U0xDaGFubmVsSW5mbyBjaGFubmVsOworCVNTTENpcGhlclN1aXRlSW5mbyBzdWl0ZTsKKworCXN0 YXR1cyA9IFNTTF9HZXRDaGFubmVsSW5mbyhwb3J0LT5wcl9mZCwgJmNoYW5uZWwsIHNpemVvZihj aGFubmVsKSk7CisJaWYgKHN0YXR1cyAhPSBTRUNTdWNjZXNzKQorCQlnb3RvIGVycm9yOworCisJ c3RhdHVzID0gU1NMX0dldENpcGhlclN1aXRlSW5mbyhjaGFubmVsLmNpcGhlclN1aXRlLCAmc3Vp dGUsIHNpemVvZihzdWl0ZSkpOworCWlmIChzdGF0dXMgIT0gU0VDU3VjY2VzcykKKwkJZ290byBl cnJvcjsKKworCXJldHVybiBzdWl0ZS5jaXBoZXJTdWl0ZU5hbWU7CisKK2Vycm9yOgorCWVyZXBv cnQoV0FSTklORywKKwkJCShlcnJtc2coInVuYWJsZSB0byBleHRyYWN0IFRMUyBzZXNzaW9uIGlu Zm9ybWF0aW9uOiAlcyIsCisJCQkJCXBnX1NTTGVycm1lc3NhZ2UoUFJfR2V0RXJyb3IoKSkpKSk7 CisJcmV0dXJuIE5VTEw7Cit9CisKK3ZvaWQKK2JlX3Rsc19nZXRfcGVlcl9zdWJqZWN0X25hbWUo UG9ydCAqcG9ydCwgY2hhciAqcHRyLCBzaXplX3QgbGVuKQoreworCUNFUlRDZXJ0aWZpY2F0ZSAq Y2VydGlmaWNhdGU7CisKKwljZXJ0aWZpY2F0ZSA9IFNTTF9QZWVyQ2VydGlmaWNhdGUocG9ydC0+ cHJfZmQpOworCWlmIChjZXJ0aWZpY2F0ZSkKKwkJc3RybGNweShwdHIsIENFUlRfTmFtZVRvQXNj aWkoJmNlcnRpZmljYXRlLT5zdWJqZWN0KSwgbGVuKTsKKwllbHNlCisJCXB0clswXSA9ICdcMCc7 Cit9CisKK3ZvaWQKK2JlX3Rsc19nZXRfcGVlcl9pc3N1ZXJfbmFtZShQb3J0ICpwb3J0LCBjaGFy ICpwdHIsIHNpemVfdCBsZW4pCit7CisJQ0VSVENlcnRpZmljYXRlICpjZXJ0aWZpY2F0ZTsKKwor CWNlcnRpZmljYXRlID0gU1NMX1BlZXJDZXJ0aWZpY2F0ZShwb3J0LT5wcl9mZCk7CisJaWYgKGNl cnRpZmljYXRlKQorCQlzdHJsY3B5KHB0ciwgQ0VSVF9OYW1lVG9Bc2NpaSgmY2VydGlmaWNhdGUt Pmlzc3VlciksIGxlbik7CisJZWxzZQorCQlwdHJbMF0gPSAnXDAnOworfQorCit2b2lkCitiZV90 bHNfZ2V0X3BlZXJfc2VyaWFsKFBvcnQgKnBvcnQsIGNoYXIgKnB0ciwgc2l6ZV90IGxlbikKK3sK KwlDRVJUQ2VydGlmaWNhdGUgKmNlcnRpZmljYXRlOworCisJY2VydGlmaWNhdGUgPSBTU0xfUGVl ckNlcnRpZmljYXRlKHBvcnQtPnByX2ZkKTsKKwlpZiAoY2VydGlmaWNhdGUpCisJCXNucHJpbnRm KHB0ciwgbGVuLCAiJWxpIiwgREVSX0dldEludGVnZXIoJihjZXJ0aWZpY2F0ZS0+c2VyaWFsTnVt YmVyKSkpOworCWVsc2UKKwkJcHRyWzBdID0gJ1wwJzsKK30KKworY2hhciAqCitiZV90bHNfZ2V0 X2NlcnRpZmljYXRlX2hhc2goUG9ydCAqcG9ydCwgc2l6ZV90ICpsZW4pCit7CisJQ0VSVENlcnRp ZmljYXRlICpjZXJ0aWZpY2F0ZTsKKwlTRUNPaWRUYWcJc2lnbmF0dXJlX2FsZzsKKwlTRUNPaWRU YWcJZGlnZXN0X2FsZzsKKwlpbnQJCQlkaWdlc3RfbGVuOworCWNvbnN0IE5TU1NpZ25hdHVyZUFs Z29yaXRobXMgKmNhbmRpZGF0ZTsKKwlTRUNTdGF0dXMJc3RhdHVzOworCVBMQXJlbmFQb29sICph cmVuYSA9IE5VTEw7CisJU0VDSXRlbQkJZGlnZXN0OworCWNoYXIJICAgKnJldDsKKworCSpsZW4g PSAwOworCWNlcnRpZmljYXRlID0gU1NMX0xvY2FsQ2VydGlmaWNhdGUocG9ydC0+cHJfZmQpOwor CWlmICghY2VydGlmaWNhdGUpCisJCXJldHVybiBOVUxMOworCisJc2lnbmF0dXJlX2FsZyA9IFNF Q09JRF9HZXRBbGdvcml0aG1UYWcoJmNlcnRpZmljYXRlLT5zaWduYXR1cmUpOworCisJY2FuZGlk YXRlID0gTlNTX1NDUkFNRGlnZXN0QWxnb3JpdGhtOworCXdoaWxlIChjYW5kaWRhdGUtPnNpZ25h dHVyZSkKKwl7CisJCWlmIChzaWduYXR1cmVfYWxnID09IGNhbmRpZGF0ZS0+c2lnbmF0dXJlKQor CQl7CisJCQlkaWdlc3RfYWxnID0gY2FuZGlkYXRlLT5oYXNoOworCQkJZGlnZXN0X2xlbiA9IGNh bmRpZGF0ZS0+bGVuOworCQkJYnJlYWs7CisJCX0KKworCQljYW5kaWRhdGUrKzsKKwl9CisKKwlp ZiAoIWNhbmRpZGF0ZS0+c2lnbmF0dXJlKQorCQllbG9nKEVSUk9SLCAiY291bGQgbm90IGZpbmQg ZGlnZXN0IGZvciBPSUQgJyVzJyIsCisJCQkgU0VDT0lEX0ZpbmRPSURUYWdEZXNjcmlwdGlvbihz aWduYXR1cmVfYWxnKSk7CisKKwlhcmVuYSA9IFBPUlRfTmV3QXJlbmEoU0VDX0FTTjFfREVGQVVM VF9BUkVOQV9TSVpFKTsKKwlkaWdlc3QuZGF0YSA9IFBPUlRfQXJlbmFaQWxsb2MoYXJlbmEsIHNp emVvZih1bnNpZ25lZCBjaGFyKSAqIGRpZ2VzdF9sZW4pOworCWRpZ2VzdC5sZW4gPSBkaWdlc3Rf bGVuOworCisJc3RhdHVzID0gUEsxMV9IYXNoQnVmKGRpZ2VzdF9hbGcsIGRpZ2VzdC5kYXRhLAor CQkJCQkJICBjZXJ0aWZpY2F0ZS0+ZGVyQ2VydC5kYXRhLAorCQkJCQkJICBjZXJ0aWZpY2F0ZS0+ ZGVyQ2VydC5sZW4pOworCisJaWYgKHN0YXR1cyAhPSBTRUNTdWNjZXNzKQorCXsKKwkJUE9SVF9G cmVlQXJlbmEoYXJlbmEsIFBSX1RSVUUpOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwlyZXQgPSBw YWxsb2MoZGlnZXN0Lmxlbik7CisJbWVtY3B5KHJldCwgZGlnZXN0LmRhdGEsIGRpZ2VzdC5sZW4p OworCSpsZW4gPSBkaWdlc3RfbGVuOworCVBPUlRfRnJlZUFyZW5hKGFyZW5hLCBQUl9UUlVFKTsK KworCXJldHVybiByZXQ7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyoJCQkJCQlJbnRlcm5hbCBmdW5jdGlv bnMJCQkJCQkqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tICovCisKKy8qCisgKiBkZWZhdWx0X25zc190bHNfaW5pdAorICoK KyAqIFRoZSBkZWZhdWx0IFRMUyBpbml0IGhvb2sgZnVuY3Rpb24gd2hpY2ggdXNlcnMgY2FuIG92 ZXJyaWRlIGZvciBpbnN0YWxsaW5nCisgKiB0aGVpciBvd24gcGFzc3BocmFzZSBjYWxsYmFja3Mg YW5kIHNpbWlsYXIgYWN0aW9ucy4gSW4gY2FzZSBubyBjYWxsYmFjayBoYXMKKyAqIGJlZW4gY29u ZmlndXJlZCwgb3IgdGhlIGNhbGxiYWNrIGlzbid0IHJlbG9hZCBjYXBhYmxlIGR1cmluZyBhIHNl cnZlcgorICogcmVsb2FkLCB0aGUgZHVtbXkgY2FsbGJhY2sgd2lsbCBiZSBpbnN0YWxsZWQuCisg KgorICogVGhlIHByaXZhdGUgZGF0YSBmb3IgdGhlIGNhbGxiYWNrIGlzIHNldCBkaWZmZXJlbnRs eSBkZXBlbmRpbmcgb24gaG93IGl0J3MKKyAqIGludm9rZWQuIEZvciBjYWxscyB3aGljaCBtYXkg aW52b2tlIHRoZSBjYWxsYmFjayBkZWVwZXIgaW4gdGhlIGNhbGxzdGFjaworICogdGhlIHByaXZh dGUgZGF0YSBpcyBzZXQgd2l0aCBTU0xfU2V0UEtDUzExUGluQXJnLiBXaGVuIHRoZSBjYWxsIGlz IGRpcmVjdGx5CisgKiBpbnZva2luZyB0aGUgY2FsbGJhY2ssIGxpa2UgUEsxMV9GaW5kQ2VydEZy b21OaWNrbmFtZSwgdGhlbiB0aGUgcHJpdmF0ZQorICogZGF0YSBpcyBwYXNzZWQgYXMgYSBwYXJh bWV0ZXIuIFNldHRpbmcgdGhlIGRhdGEgd2l0aCBTU0xfU2V0UEtDUzExUGluQXJnIGlzCisgKiB0 aHVzIG5vdCByZXF1aXJlZCBidXQgZ29vZCBwcmFjdGljZS4KKyAqCisgKiBOU1MgZG9lc24ndCBw cm92aWRlIGEgZGVmYXVsdCBjYWxsYmFjayBsaWtlIE9wZW5TU0wgZG9lcywgYnV0IGEgY2FsbGJh Y2sgaXMKKyAqIHJlcXVpcmVkIHRvIGJlIHNldC4gIFRoZSBwYXNzd29yZCBjYWxsYmFjayBjYW4g YmUgaW5zdGFsbGVkIGF0IGFueSB0aW1lLCBidXQKKyAqIHNldHRpbmcgdGhlIHByaXZhdGUgZGF0 YSB3aXRoIFNTTF9TZXRQS0NTMTFQaW5BcmcgcmVxdWlyZXMgYSBQUiBGaWxlZGVzYy4KKyAqLwor c3RhdGljIHZvaWQKK2RlZmF1bHRfbnNzX3Rsc19pbml0KGJvb2wgaXNTZXJ2ZXJTdGFydCkKK3sK KwkvKgorCSAqIE5vIHVzZXItZGVmaW5lZCBjYWxsYmFjayBoYXMgYmVlbiBjb25maWd1cmVkLCBp bnN0YWxsIHRoZSBkdW1teSBjYWxsLQorCSAqIGJhY2sgc2luY2Ugd2UgbXVzdCBzZXQgc29tZXRo aW5nLgorCSAqLworCWlmICghc3NsX3Bhc3NwaHJhc2VfY29tbWFuZFswXSkKKwkJUEsxMV9TZXRQ YXNzd29yZEZ1bmMoZHVtbXlfc3NsX3Bhc3NwaHJhc2VfY2IpOworCWVsc2UKKwl7CisJCS8qCisJ CSAqIFRoZXJlIGlzIGEgdXNlci1kZWZpbmVkIGNhbGxiYWNrLCBzZXQgaXQgdW5sZXNzIHdlIGFy ZSBpbiBhIHJlc3RhcnQKKwkJICogYW5kIGNhbm5vdCBoYW5kbGUgcmVzdGFydHMgZHVlIHRvIGFu IGludGVyYWN0aXZlIGNhbGxiYWNrLgorCQkgKi8KKwkJaWYgKGlzU2VydmVyU3RhcnQpCisJCQlQ SzExX1NldFBhc3N3b3JkRnVuYyhleHRlcm5hbF9zc2xfcGFzc3BocmFzZV9jYik7CisJCWVsc2UK KwkJeworCQkJaWYgKHNzbF9wYXNzcGhyYXNlX2NvbW1hbmRfc3VwcG9ydHNfcmVsb2FkKQorCQkJ CVBLMTFfU2V0UGFzc3dvcmRGdW5jKGV4dGVybmFsX3NzbF9wYXNzcGhyYXNlX2NiKTsKKwkJCWVs c2UKKwkJCQlQSzExX1NldFBhc3N3b3JkRnVuYyhkdW1teV9zc2xfcGFzc3BocmFzZV9jYik7CisJ CX0KKwl9Cit9CisKKy8qCisgKiBleHRlcm5hbF9zc2xfcGFzc3BocmFzZV9jYgorICoKKyAqIFJ1 bnMgdGhlIGNhbGxiYWNrIGNvbmZpZ3VyZWQgYnkgc3NsX3Bhc3NwaHJhc2VfY29tbWFuZCBhbmQg cmV0dXJucyB0aGUKKyAqIGNhcHR1cmVkIHBhc3N3b3JkIGJhY2sgdG8gTlNTLgorICovCitzdGF0 aWMgY2hhciAqCitleHRlcm5hbF9zc2xfcGFzc3BocmFzZV9jYihQSzExU2xvdEluZm8gKnNsb3Qs IFBSQm9vbCByZXRyeSwgdm9pZCAqYXJnKQoreworCS8qCisJICogTlNTIHVzZSBhIGhhcmRjb2Rl ZCAyNTYgYnl0ZSBidWZmZXIgZm9yIHJlYWRpbmcgdGhlIHBhc3N3b3JkIHNvIHNldCB0aGUKKwkg KiBzYW1lIGxpbWl0IGZvciBvdXIgY2FsbGJhY2sgYnVmZmVyLgorCSAqLworCWNoYXIJCWJ1Zlsy NTZdOworCWludAkJCWxlbjsKKwljaGFyCSAgICpwYXNzd29yZCA9IE5VTEw7CisJY2hhcgkgICAq cHJvbXB0OworCisJLyoKKwkgKiBTaW5jZSB0aGVyZSBpcyBubyBwYXNzd29yZCBjYWxsYmFjayBp biBOU1Mgd2hlbiB0aGUgc2VydmVyIHN0YXJ0cyB1cCwKKwkgKiBpdCBtYWtlcyBsaXR0bGUgc2Vu c2UgdG8gY3JlYXRlIGFuIGludGVyYWN0aXZlIGNhbGxiYWNrLiBUaHVzLCBpZiB0aGlzCisJICog aXMgYSByZXRyeSBhdHRlbXB0IHRoZW4gZ2l2ZSB1cCBpbW1lZGlhdGVseS4KKwkgKi8KKwlpZiAo cmV0cnkpCisJCXJldHVybiBOVUxMOworCisJLyoKKwkgKiBDb25zdHJ1Y3QgdGhlIHNhbWUgcHJv bXB0IHRoYXQgTlNTIHVzZXMgaW50ZXJuYWxseSBldmVuIHRob3VnaCBpdCBpcworCSAqIHVubGlr ZWx5IHRvIHNlcnZlIG11Y2ggcHVycG9zZSwgYnV0IHdlIG11c3Qgc2V0IGEgcHJvbXB0IHNvIHdl IG1pZ2h0IGFzCisJICogd2VsbCBkbyBpdCByaWdodC4KKwkgKi8KKwlwcm9tcHQgPSBwc3ByaW50 ZigiRW50ZXIgUGFzc3dvcmQgb3IgUGluIGZvciBcIiVzXCI6IiwKKwkJCQkJICBQSzExX0dldFRv a2VuTmFtZShzbG90KSk7CisKKwlsZW4gPSBydW5fc3NsX3Bhc3NwaHJhc2VfY29tbWFuZChwcm9t cHQsIHNzbF9pc19zZXJ2ZXJfc3RhcnQsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworCXBmcmVlKHByb21w dCk7CisKKwlpZiAoIWxlbikKKwkJcmV0dXJuIE5VTEw7CisKKwkvKgorCSAqIEF0IGxlYXN0IG9u ZSBieXRlIHdpdGggcGFzc3dvcmQgY29udGVudCB3YXMgcmV0dXJuZWQsIGFuZCBOU1MgcmVxdWly ZXMKKwkgKiB0aGF0IHdlIHJldHVybiBpdCBhbGxvY2F0ZWQgaW4gTlNTIGNvbnRyb2xsZWQgbWVt b3J5LiBJZiB3ZSBmYWlsIHRvCisJICogYWxsb2NhdGUgdGhlbiBhYm9ydCB3aXRob3V0IHBhc3Np bmcgYmFjayBOVUxMIGFuZCBidWJibGUgdXAgdGhlIGVycm9yCisJICogb24gdGhlIFBHIHNpZGUu CisJICovCisJcGFzc3dvcmQgPSAoY2hhciAqKSBQUl9NYWxsb2MobGVuICsgMSk7CisJaWYgKCFw YXNzd29yZCkKKwl7CisJCWV4cGxpY2l0X2J6ZXJvKGJ1Ziwgc2l6ZW9mKGJ1ZikpOworCQllcmVw b3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfT1VUX09GX01FTU9SWSksCisJCQkJIGVy cm1zZygib3V0IG9mIG1lbW9yeSIpKSk7CisJfQorCXN0cmxjcHkocGFzc3dvcmQsIGJ1Ziwgc2l6 ZW9mKHBhc3N3b3JkKSk7CisJZXhwbGljaXRfYnplcm8oYnVmLCBzaXplb2YoYnVmKSk7CisKKwly ZXR1cm4gcGFzc3dvcmQ7Cit9CisKKy8qCisgKiBkdW1teV9zc2xfcGFzc3BocmFzZV9jYgorICoK KyAqIFJldHVybiB1bnN1Y2Nlc3NmdWwgaWYgd2UgYXJlIGFza2VkIHRvIHByb3ZpZGUgdGhlIHBh c3NwaHJhc2UgZm9yIGEgY2VydCBvcgorICoga2V5LCB3aXRob3V0IGhhdmluZyBhIHBhc3NwaHJh c2UgY2FsbGJhY2sgaW5zdGFsbGVkLgorICovCitzdGF0aWMgY2hhciAqCitkdW1teV9zc2xfcGFz c3BocmFzZV9jYihQSzExU2xvdEluZm8gKnNsb3QsIFBSQm9vbCByZXRyeSwgdm9pZCAqYXJnKQor eworCWR1bW15X3NzbF9wYXNzd2RfY2JfY2FsbGVkID0gdHJ1ZTsKKwlyZXR1cm4gTlVMTDsKK30K Kworc3RhdGljIFNFQ1N0YXR1cworcGdfYmFkX2NlcnRfaGFuZGxlcih2b2lkICphcmcsIFBSRmls ZURlc2MgKiBmZCkKK3sKKwlQb3J0CSAgICpwb3J0ID0gKFBvcnQgKikgYXJnOworCisJcG9ydC0+ cGVlcl9jZXJ0X3ZhbGlkID0gZmFsc2U7CisJcmV0dXJuIFNFQ0ZhaWx1cmU7Cit9CisKKy8qCisg KiBSZXR1cm5zIHRoZSBTdWJqZWN0IENvbW1vbiBOYW1lIGZvciB0aGUgZ2l2ZW4gY2VydGlmaWNh dGUgYXMgYSByYXcgY2hhcgorICogYnVmZmVyICh0aGF0IGlzLCB3aXRob3V0IGFueSBmb3JtIG9m IGVzY2FwaW5nIGZvciB1bnByaW50YWJsZSBjaGFyYWN0ZXJzIG9yCisgKiBlbWJlZGRlZCBudWxs cyksIHdpdGggdGhlIGxlbmd0aCBvZiB0aGUgYnVmZmVyIHJldHVybmVkIGluIHRoZSBsZW4gcGFy YW1ldGVyLgorICogVGhlIGJ1ZmZlciBpcyBhbGxvY2F0ZWQgaW4gdGhlIFRvcE1lbW9yeUNvbnRl eHQgYW5kIGlzIGdpdmVuIGEgTlVMTAorICogdGVybWluYXRvciBzbyB0aGF0IGNhbGxlcnMgYXJl IHNhZmUgdG8gY2FsbCBzdHJsZW4oKSBvbiBpdC4KKyAqCisgKiBUaGlzIGlzIHVzZWQgaW5zdGVh ZCBvZiBDRVJUX0dldENvbW1vbk5hbWUoKSwgd2hpY2ggYWx3YXlzIHBlcmZvcm1zIHF1b3RpbmcK KyAqIGFuZC9vciBlc2NhcGluZy4gTlNTIGRvZXNuJ3QgYXBwZWFyIHRvIGdpdmUgdXMgYSB3YXkg dG8gZWFzaWx5IHVuZXNjYXBlIHRoZQorICogcmVzdWx0LCBhbmQgd2UgbmVlZCB0byBzdG9yZSB0 aGUgcmF3IENOIGludG8gcG9ydC0+cGVlcl9jbiBmb3IgY29tcGF0aWJpbGl0eQorICogd2l0aCB0 aGUgT3BlblNTTCBpbXBsZW1lbnRhdGlvbi4KKyAqLworc3RhdGljIGNoYXIgKgorcmF3X3N1Ympl Y3RfY29tbW9uX25hbWUoQ0VSVENlcnRpZmljYXRlICpjZXJ0LCB1bnNpZ25lZCBpbnQgKmxlbikK K3sKKwlDRVJUTmFtZQlzdWJqZWN0ID0gY2VydC0+c3ViamVjdDsKKwlDRVJUUkROCSAgKipyZG47 CisKKwlmb3IgKHJkbiA9IHN1YmplY3QucmRuczsgKnJkbjsgcmRuKyspCisJeworCQlDRVJUQVZB CSAgKiphdmE7CisKKwkJZm9yIChhdmEgPSAoKnJkbiktPmF2YXM7ICphdmE7IGF2YSsrKQorCQl7 CisJCQlTRUNJdGVtCSAgICpidWY7CisJCQljaGFyCSAgICpjbjsKKworCQkJaWYgKENFUlRfR2V0 QVZBVGFnKCphdmEpICE9IFNFQ19PSURfQVZBX0NPTU1PTl9OQU1FKQorCQkJCWNvbnRpbnVlOwor CisJCQkvKiBGb3VuZCBhIENOLiBEZWNvZGUgYW5kIGNvcHkgaXQgaW50byBhIG5ld2x5IGFsbG9j YXRlZCBidWZmZXIuICovCisJCQlidWYgPSBDRVJUX0RlY29kZUFWQVZhbHVlKCYoKmF2YSktPnZh bHVlKTsKKwkJCWlmICghYnVmKQorCQkJeworCQkJCS8qCisJCQkJICogVGhpcyBmYWlsdXJlIGNh c2UgaXMgZGlmZmljdWx0IHRvIHRlc3QuIChTaW5jZSB0aGlzIGNvZGUgcnVucworCQkJCSAqIGFm dGVyIGNlcnRpZmljYXRlIGF1dGhlbnRpY2F0aW9uIGhhcyBvdGhlcndpc2Ugc3VjY2VlZGVkLAor CQkJCSAqIHlvdSdkIG5lZWQgdG8gY29udmluY2UgYSBDQSBpbXBsZW1lbnRhdGlvbiB0byBzaWdu IGEKKwkJCQkgKiBjb3JydXB0ZWQgY2VydGlmaWNhdGUgaW4gb3JkZXIgdG8gZ2V0IGhlcmUuKQor CQkJCSAqCisJCQkJICogRm9sbG93IHRoZSBiZWhhdmlvciBvZiBDRVJUX0dldENvbW1vbk5hbWUo KSBpbiB0aGlzIGNhc2UgYW5kCisJCQkJICogc2ltcGx5IHJldHVybiBOVUxMLCBhcyBpZiBhIENv bW1vbiBOYW1lIGhhZCBub3QgYmVlbiBmb3VuZC4KKwkJCQkgKi8KKwkJCQlnb3RvIGZhaWw7CisJ CQl9CisKKwkJCWNuID0gTWVtb3J5Q29udGV4dEFsbG9jKFRvcE1lbW9yeUNvbnRleHQsIGJ1Zi0+ bGVuICsgMSk7CisJCQltZW1jcHkoY24sIGJ1Zi0+ZGF0YSwgYnVmLT5sZW4pOworCQkJY25bYnVm LT5sZW5dID0gJ1wwJzsKKworCQkJKmxlbiA9IGJ1Zi0+bGVuOworCisJCQlTRUNJVEVNX0ZyZWVJ dGVtKGJ1ZiwgUFJfVFJVRSk7CisJCQlyZXR1cm4gY247CisJCX0KKwl9CisKK2ZhaWw6CisJLyog Tm90IGZvdW5kLiAqLworCSpsZW4gPSAwOworCXJldHVybiBOVUxMOworfQorCitzdGF0aWMgU0VD U3RhdHVzCitwZ19jZXJ0X2F1dGhfaGFuZGxlcih2b2lkICphcmcsIFBSRmlsZURlc2MgKiBmZCwg UFJCb29sIGNoZWNrc2lnLCBQUkJvb2wgaXNTZXJ2ZXIpCit7CisJU0VDU3RhdHVzCXN0YXR1czsK KwlQb3J0CSAgICpwb3J0ID0gKFBvcnQgKikgYXJnOworCUNFUlRDZXJ0aWZpY2F0ZSAqY2VydDsK KwljaGFyCSAgICpwZWVyX2NuOworCXVuc2lnbmVkIGludCBsZW47CisKKwlzdGF0dXMgPSBTU0xf QXV0aENlcnRpZmljYXRlKENFUlRfR2V0RGVmYXVsdENlcnREQigpLCBwb3J0LT5wcl9mZCwgY2hl Y2tzaWcsIFBSX1RSVUUpOworCWlmIChzdGF0dXMgIT0gU0VDU3VjY2VzcykKKwkJcmV0dXJuIHN0 YXR1czsKKworCXBvcnQtPnBlZXJfY24gPSBOVUxMOworCXBvcnQtPnBlZXJfY2VydF92YWxpZCA9 IGZhbHNlOworCisJY2VydCA9IFNTTF9QZWVyQ2VydGlmaWNhdGUocG9ydC0+cHJfZmQpOworCWlm ICghY2VydCkKKwl7CisJCS8qIFNob3VsZG4ndCBiZSBwb3NzaWJsZTsgd2h5IGRpZCB3ZSBnZXQg YSBjbGllbnQgY2VydCBjYWxsYmFjaz8gKi8KKwkJQXNzZXJ0KGNlcnQgIT0gTlVMTCk7CisKKwkJ UFJfU2V0RXJyb3IoU0VDX0VSUk9SX0xJQlJBUllfRkFJTFVSRSwgMCk7CisJCXJldHVybiBTRUNG YWlsdXJlOworCX0KKworCXBlZXJfY24gPSByYXdfc3ViamVjdF9jb21tb25fbmFtZShjZXJ0LCAm bGVuKTsKKwlpZiAoIXBlZXJfY24pCisJeworCQkvKiBObyBDb21tb24gTmFtZSwgYnV0IHRoZSBj ZXJ0aWZpY2F0ZSBvdGhlcndpc2UgY2hlY2tzIG91dC4gKi8KKwkJcG9ydC0+cGVlcl9jZXJ0X3Zh bGlkID0gdHJ1ZTsKKworCQlzdGF0dXMgPSBTRUNTdWNjZXNzOworCQlnb3RvIGNsZWFudXA7CisJ fQorCisJLyoKKwkgKiBSZWplY3QgZW1iZWRkZWQgTlVMTHMgaW4gY2VydGlmaWNhdGUgY29tbW9u IG5hbWUgdG8gcHJldmVudCBhdHRhY2tzIGxpa2UKKwkgKiBDVkUtMjAwOS00MDM0LgorCSAqLwor CWlmIChsZW4gIT0gc3RybGVuKHBlZXJfY24pKQorCXsKKwkJZXJlcG9ydChDT01NRVJST1IsCisJ CQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAorCQkJCSBlcnJtc2coIlNT TCBjZXJ0aWZpY2F0ZSdzIGNvbW1vbiBuYW1lIGNvbnRhaW5zIGVtYmVkZGVkIG51bGwiKSkpOwor CisJCXBmcmVlKHBlZXJfY24pOworCQlQUl9TZXRFcnJvcihTRUNfRVJST1JfQ0VSVF9OT1RfVkFM SUQsIDApOworCisJCXN0YXR1cyA9IFNFQ0ZhaWx1cmU7CisJCWdvdG8gY2xlYW51cDsKKwl9CisK Kwlwb3J0LT5wZWVyX2NuID0gcGVlcl9jbjsKKwlwb3J0LT5wZWVyX2NlcnRfdmFsaWQgPSB0cnVl OworCisJc3RhdHVzID0gU0VDU3VjY2VzczsKKworY2xlYW51cDoKKwlDRVJUX0Rlc3Ryb3lDZXJ0 aWZpY2F0ZShjZXJ0KTsKKwlyZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgUFJJbnQzMgorcGdf c3NsX3JlYWQoUFJGaWxlRGVzYyAqZmQsIHZvaWQgKmJ1ZiwgUFJJbnQzMiBhbW91bnQsIFBSSW50 biBmbGFncywKKwkJCVBSSW50ZXJ2YWxUaW1lIHRpbWVvdXQpCit7CisJUFJSZWN2Rk4JcmVhZF9m bjsKKwlQUkludDMyCQluX3JlYWQ7CisKKwlyZWFkX2ZuID0gZmQtPmxvd2VyLT5tZXRob2RzLT5y ZWN2OworCW5fcmVhZCA9IHJlYWRfZm4oZmQtPmxvd2VyLCBidWYsIGFtb3VudCwgZmxhZ3MsIHRp bWVvdXQpOworCisJcmV0dXJuIG5fcmVhZDsKK30KKworc3RhdGljIFBSSW50MzIKK3BnX3NzbF93 cml0ZShQUkZpbGVEZXNjICpmZCwgY29uc3Qgdm9pZCAqYnVmLCBQUkludDMyIGFtb3VudCwgUFJJ bnRuIGZsYWdzLAorCQkJIFBSSW50ZXJ2YWxUaW1lIHRpbWVvdXQpCit7CisJUFJTZW5kRk4Jc2Vu ZF9mbjsKKwlQUkludDMyCQluX3dyaXRlOworCisJc2VuZF9mbiA9IGZkLT5sb3dlci0+bWV0aG9k cy0+c2VuZDsKKwluX3dyaXRlID0gc2VuZF9mbihmZC0+bG93ZXIsIGJ1ZiwgYW1vdW50LCBmbGFn cywgdGltZW91dCk7CisKKwlyZXR1cm4gbl93cml0ZTsKK30KKworc3RhdGljIFBSU3RhdHVzCitw Z19zc2xfY2xvc2UoUFJGaWxlRGVzYyAqZmQpCit7CisJLyoKKwkgKiBEaXNjb25uZWN0IG91ciBw cml2YXRlIFBvcnQgZnJvbSB0aGUgZmQgYmVmb3JlIGNsb3Npbmcgb3V0IHRoZSBzdGFjay4KKwkg KiAoRGVidWcgYnVpbGRzIG9mIE5TUFIgd2lsbCBhc3NlcnQgaWYgd2UgZG8gbm90LikKKwkgKi8K KwlmZC0+c2VjcmV0ID0gTlVMTDsKKwlyZXR1cm4gUFJfR2V0RGVmYXVsdElPTWV0aG9kcygpLT5j bG9zZShmZCk7Cit9CisKK3N0YXRpYyBQUkZpbGVEZXNjICoKK2luaXRfaW9sYXllcihQb3J0ICpw b3J0KQoreworCWNvbnN0CQlQUklPTWV0aG9kcyAqZGVmYXVsdF9tZXRob2RzOworCVBSRmlsZURl c2MgKmxheWVyOworCisJLyoKKwkgKiBTdGFydCBieSBpbml0aWFsaXppbmcgb3VyIGxheWVyIHdp dGggYWxsIHRoZSBkZWZhdWx0IG1ldGhvZHMgc28gdGhhdCB3ZQorCSAqIGNhbiBzZWxlY3RpdmVs eSBvdmVycmlkZSB0aGUgb25lcyB3ZSB3YW50IHdoaWxlIHN0aWxsIGVuc3VyaW5nIHRoYXQgd2UK KwkgKiBoYXZlIGEgY29tcGxldGUgbGF5ZXIgc3BlY2lmaWNhdGlvbi4KKwkgKi8KKwlkZWZhdWx0 X21ldGhvZHMgPSBQUl9HZXREZWZhdWx0SU9NZXRob2RzKCk7CisJbWVtY3B5KCZwcl9pb21ldGhv ZHMsIGRlZmF1bHRfbWV0aG9kcywgc2l6ZW9mKFBSSU9NZXRob2RzKSk7CisKKwlwcl9pb21ldGhv ZHMucmVjdiA9IHBnX3NzbF9yZWFkOworCXByX2lvbWV0aG9kcy5zZW5kID0gcGdfc3NsX3dyaXRl OworCXByX2lvbWV0aG9kcy5jbG9zZSA9IHBnX3NzbF9jbG9zZTsKKworCS8qCisJICogRWFjaCBJ TyBsYXllciBtdXN0IGJlIGlkZW50aWZpZWQgYnkgYSB1bmlxdWUgbmFtZSwgd2hlcmUgdW5pcXVl bmVzcyBpcworCSAqIHBlciBjb25uZWN0aW9uLiBFYWNoIGNvbm5lY3Rpb24gaW4gYSBwb3N0Z3Jl cyBjbHVzdGVyIGNhbiBnZW5lcmF0ZSB0aGUKKwkgKiBpZGVudGl0eSBmcm9tIHRoZSBzYW1lIHN0 cmluZyBhcyB0aGV5IHdpbGwgY3JlYXRlIHRoZWlyIElPIGxheWVycyBvbgorCSAqIGRpZmZlcmVu dCBzb2NrZXRzLiBPbmx5IG9uZSBsYXllciBwZXIgc29ja2V0IGNhbiBoYXZlIHRoZSBzYW1lIG5h bWUuCisJICovCisJcHJfaWQgPSBQUl9HZXRVbmlxdWVJZGVudGl0eSgiUG9zdGdyZVNRTCBTZXJ2 ZXIiKTsKKwlpZiAocHJfaWQgPT0gUFJfSU5WQUxJRF9JT19MQVlFUikKKwl7CisJCWVyZXBvcnQo RVJST1IsCisJCQkJKGVycm1zZygib3V0IG9mIG1lbW9yeSB3aGVuIHNldHRpbmcgdXAgVExTIGNv bm5lY3Rpb24iKSkpOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwkvKgorCSAqIENyZWF0ZSB0aGUg YWN0dWFsIElPIGxheWVyIGFzIGEgc3R1YiBzdWNoIHRoYXQgaXQgY2FuIGJlIHB1c2hlZCBvbnRv CisJICogdGhlIGxheWVyIHN0YWNrLiBUaGUgc3RlcCB2aWEgYSBzdHViIGlzIHJlcXVpcmVkIGFz IHdlIGRlZmluZSBjdXN0b20KKwkgKiBjYWxsYmFja3MuCisJICovCisJbGF5ZXIgPSBQUl9DcmVh dGVJT0xheWVyU3R1Yihwcl9pZCwgJnByX2lvbWV0aG9kcyk7CisJaWYgKCFsYXllcikKKwl7CisJ CWVyZXBvcnQoRVJST1IsCisJCQkJKGVycm1zZygidW5hYmxlIHRvIGNyZWF0ZSBOU1MgSS9PIGxh eWVyIikpKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJLyogU3RvcmUgdGhlIFBvcnQgYXMgcHJp dmF0ZSBkYXRhIGF2YWlsYWJsZSBpbiBjYWxsYmFja3MgKi8KKwlsYXllci0+c2VjcmV0ID0gKHZv aWQgKikgcG9ydDsKKworCXJldHVybiBsYXllcjsKK30KKworc3RhdGljIGNoYXIgKgorc3NsX3By b3RvY29sX3ZlcnNpb25fdG9fc3RyaW5nKGludCB2KQoreworCXN3aXRjaCAodikKKwl7CisJCQkv KiBTU0wgdjIgYW5kIHYzIGFyZSBub3Qgc3VwcG9ydGVkICovCisJCWNhc2UgU1NMX0xJQlJBUllf VkVSU0lPTl8yOgorCQljYXNlIFNTTF9MSUJSQVJZX1ZFUlNJT05fM18wOgorCQkJQXNzZXJ0KGZh bHNlKTsKKwkJCWJyZWFrOworCisJCWNhc2UgU1NMX0xJQlJBUllfVkVSU0lPTl9UTFNfMV8wOgor CQkJcmV0dXJuIHBzdHJkdXAoIlRMU3YxLjAiKTsKKwkJY2FzZSBTU0xfTElCUkFSWV9WRVJTSU9O X1RMU18xXzE6CisJCQlyZXR1cm4gcHN0cmR1cCgiVExTdjEuMSIpOworCQljYXNlIFNTTF9MSUJS QVJZX1ZFUlNJT05fVExTXzFfMjoKKwkJCXJldHVybiBwc3RyZHVwKCJUTFN2MS4yIik7CisJCWNh c2UgU1NMX0xJQlJBUllfVkVSU0lPTl9UTFNfMV8zOgorCQkJcmV0dXJuIHBzdHJkdXAoIlRMU3Yx LjMiKTsKKwl9CisKKwlyZXR1cm4gcHN0cmR1cCgidW5rbm93biIpOworfQorCisKKy8qCisgKiBz c2xfcHJvdG9jb2xfdmVyc2lvbl90b19uc3MKKyAqCQkJVHJhbnNsYXRlIFBvc3RncmVTUUwgVExT IHZlcnNpb24gdG8gTlNTIHZlcnNpb24KKyAqCisgKiBSZXR1cm5zIHplcm8gaW4gY2FzZSB0aGUg cmVxdWVzdGVkIFRMUyB2ZXJzaW9uIGlzIHVuZGVmaW5lZCAoUEdfQU5ZKSBhbmQKKyAqIHNob3Vs ZCBiZSBzZXQgYnkgdGhlIGNhbGxlciwgb3IgLTEgb24gZmFpbHVyZS4KKyAqLworc3RhdGljIHVp bnQxNgorc3NsX3Byb3RvY29sX3ZlcnNpb25fdG9fbnNzKGludCB2LCBjb25zdCBjaGFyICpndWNf bmFtZSkKK3sKKwlzd2l0Y2ggKHYpCisJeworCQkJLyoKKwkJCSAqIFRoZXJlIGlzIG5vIFNTTF9M SUJSQVJZXyBtYWNybyBkZWZpbmVkIGluIE5TUyB3aXRoIHRoZSB2YWx1ZQorCQkJICogemVybywg c28gd2UgdXNlIHRoaXMgdG8gc2lnbmFsIHRoZSBjYWxsZXIgdGhhdCB0aGUgaGlnaGVzdAorCQkJ ICogdXNlZnVsIHZlcnNpb24gc2hvdWxkIGJlIHNldCBvbiB0aGUgY29ubmVjdGlvbi4KKwkJCSAq LworCQljYXNlIFBHX1RMU19BTlk6CisJCQlyZXR1cm4gMDsKKworCQkJLyoKKwkJCSAqIE5vIGd1 YXJkIGlzIHJlcXVpcmVkIGhlcmUgYXMgdGhlcmUgYXJlIG5vIHZlcnNpb25zIG9mIE5TUworCQkJ ICogd2l0aG91dCBzdXBwb3J0IGZvciBUTFMxLgorCQkJICovCisJCWNhc2UgUEdfVExTMV9WRVJT SU9OOgorCQkJcmV0dXJuIFNTTF9MSUJSQVJZX1ZFUlNJT05fVExTXzFfMDsKKwkJY2FzZSBQR19U TFMxXzFfVkVSU0lPTjoKKyNpZmRlZiBTU0xfTElCUkFSWV9WRVJTSU9OX1RMU18xXzEKKwkJCXJl dHVybiBTU0xfTElCUkFSWV9WRVJTSU9OX1RMU18xXzE7CisjZWxzZQorCQkJYnJlYWs7CisjZW5k aWYKKwkJY2FzZSBQR19UTFMxXzJfVkVSU0lPTjoKKyNpZmRlZiBTU0xfTElCUkFSWV9WRVJTSU9O X1RMU18xXzIKKwkJCXJldHVybiBTU0xfTElCUkFSWV9WRVJTSU9OX1RMU18xXzI7CisjZWxzZQor CQkJYnJlYWs7CisjZW5kaWYKKwkJY2FzZSBQR19UTFMxXzNfVkVSU0lPTjoKKyNpZmRlZiBTU0xf TElCUkFSWV9WRVJTSU9OX1RMU18xXzMKKwkJCXJldHVybiBTU0xfTElCUkFSWV9WRVJTSU9OX1RM U18xXzM7CisjZWxzZQorCQkJYnJlYWs7CisjZW5kaWYKKwkJZGVmYXVsdDoKKwkJCWJyZWFrOwor CX0KKworCXJldHVybiAtMTsKK30KKworLyoKKyAqIHBnX1NTTGVycm1lc3NhZ2UKKyAqCQlDcmVh dGUgYW5kIHJldHVybiBhIGh1bWFuIHJlYWRhYmxlIGVycm9yIG1lc3NhZ2UgZ2l2ZW4KKyAqCQl0 aGUgc3BlY2lmaWVkIGVycm9yIGNvZGUKKyAqCisgKiBQUl9FcnJvclRvTmFtZSBvbmx5IGNvbnZl cnRzIHRoZSBlbnVtIGlkZW50aWZpZXIgb2YgdGhlIGVycm9yIHRvIHN0cmluZywKKyAqIGJ1dCB0 aGF0IGNhbiBiZSBxdWl0ZSB1c2VmdWwgZm9yIGRlYnVnZ2luZyAoYW5kIGluIGNhc2UgUFJfRXJy b3JUb1N0cmluZyBpcworICogdW5hYmxlIHRvIHJlbmRlciBhIG1lc3NhZ2UgdGhlbiB3ZSBhdCBs ZWFzdCBoYXZlIHNvbWV0aGluZykuCisgKi8KK3N0YXRpYyBjaGFyICoKK3BnX1NTTGVycm1lc3Nh Z2UoUFJFcnJvckNvZGUgZXJyY29kZSkKK3sKKwlyZXR1cm4gcHNwcmludGYoIiVzICglcykiLAor CQkJCQlQUl9FcnJvclRvU3RyaW5nKGVycmNvZGUsIFBSX0xBTkdVQUdFX0lfREVGQVVMVCksCisJ CQkJCVBSX0Vycm9yVG9OYW1lKGVycmNvZGUpKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2xpYnBxL2JlLXNlY3VyZS5jIGIvc3JjL2JhY2tlbmQvbGlicHEvYmUtc2VjdXJlLmMKaW5kZXgg NGNmMTM5YTIyMy4uNWUwYzI3YzEzNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbGlicHEvYmUt c2VjdXJlLmMKKysrIGIvc3JjL2JhY2tlbmQvbGlicHEvYmUtc2VjdXJlLmMKQEAgLTQ5LDYgKzQ5 LDkgQEAgYm9vbAkJc3NsX3Bhc3NwaHJhc2VfY29tbWFuZF9zdXBwb3J0c19yZWxvYWQ7CiAjaWZk ZWYgVVNFX1NTTAogYm9vbAkJc3NsX2xvYWRlZF92ZXJpZnlfbG9jYXRpb25zID0gZmFsc2U7CiAj ZW5kaWYKKyNpZmRlZiBVU0VfTlNTCitjaGFyCSAgICpzc2xfZGF0YWJhc2U7CisjZW5kaWYKIAog LyogR1VDIHZhcmlhYmxlIGNvbnRyb2xsaW5nIFNTTCBjaXBoZXIgbGlzdCAqLwogY2hhcgkgICAq U1NMQ2lwaGVyU3VpdGVzID0gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2xpYnBxL2hi YS5jIGIvc3JjL2JhY2tlbmQvbGlicHEvaGJhLmMKaW5kZXggMzcxZGNjYjg1Mi4uMTJiMTA1YmJk MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbGlicHEvaGJhLmMKKysrIGIvc3JjL2JhY2tlbmQv bGlicHEvaGJhLmMKQEAgLTEwNDEsNyArMTA0MSw3IEBAIHBhcnNlX2hiYV9saW5lKFRva2VuaXpl ZExpbmUgKnRva19saW5lLCBpbnQgZWxldmVsKQogCQkJZXJlcG9ydChlbGV2ZWwsCiAJCQkJCShl cnJjb2RlKEVSUkNPREVfQ09ORklHX0ZJTEVfRVJST1IpLAogCQkJCQkgZXJybXNnKCJob3N0c3Ns IHJlY29yZCBjYW5ub3QgbWF0Y2ggYmVjYXVzZSBTU0wgaXMgbm90IHN1cHBvcnRlZCBieSB0aGlz IGJ1aWxkIiksCi0JCQkJCSBlcnJoaW50KCJDb21waWxlIHdpdGggLS13aXRoLW9wZW5zc2wgdG8g dXNlIFNTTCBjb25uZWN0aW9ucy4iKSwKKwkJCQkJIGVycmhpbnQoIkNvbXBpbGUgd2l0aCAtLXdp dGgtb3BlbnNzbCBvciAtLXdpdGgtbnNzIHRvIHVzZSBTU0wgY29ubmVjdGlvbnMuIiksCiAJCQkJ CSBlcnJjb250ZXh0KCJsaW5lICVkIG9mIGNvbmZpZ3VyYXRpb24gZmlsZSBcIiVzXCIiLAogCQkJ CQkJCQlsaW5lX251bSwgSGJhRmlsZU5hbWUpKSk7CiAJCQkqZXJyX21zZyA9ICJob3N0c3NsIHJl Y29yZCBjYW5ub3QgbWF0Y2ggYmVjYXVzZSBTU0wgaXMgbm90IHN1cHBvcnRlZCBieSB0aGlzIGJ1 aWxkIjsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMgYi9zcmMvYmFj a2VuZC91dGlscy9taXNjL2d1Yy5jCmluZGV4IDE3NTc5ZWVhY2EuLjAwOTVhOTk4MGUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy9ndWMuYwpAQCAtNDMwOCw3ICs0MzA4LDExIEBAIHN0YXRpYyBzdHJ1Y3QgY29uZmln X3N0cmluZyBDb25maWd1cmVOYW1lc1N0cmluZ1tdID0KIAkJfSwKIAkJJnNzbF9saWJyYXJ5LAog I2lmZGVmIFVTRV9TU0wKKyNpZiBkZWZpbmVkKFVTRV9PUEVOU1NMKQogCQkiT3BlblNTTCIsCisj ZWxpZiBkZWZpbmVkKFVTRV9OU1MpCisJCSJOU1MiLAorI2VuZGlmCiAjZWxzZQogCQkiIiwKICNl bmRpZgpAQCAtNDM2Niw2ICs0MzcwLDE4IEBAIHN0YXRpYyBzdHJ1Y3QgY29uZmlnX3N0cmluZyBD b25maWd1cmVOYW1lc1N0cmluZ1tdID0KIAkJY2hlY2tfY2Fub25pY2FsX3BhdGgsIGFzc2lnbl9w Z3N0YXRfdGVtcF9kaXJlY3RvcnksIE5VTEwKIAl9LAogCisjaWZkZWYgVVNFX05TUworCXsKKwkJ eyJzc2xfZGF0YWJhc2UiLCBQR0NfU0lHSFVQLCBDT05OX0FVVEhfU1NMLAorCQkJZ2V0dGV4dF9u b29wKCJMb2NhdGlvbiBvZiB0aGUgTlNTIGNlcnRpZmljYXRlIGRhdGFiYXNlLiIpLAorCQkJTlVM TAorCQl9LAorCQkmc3NsX2RhdGFiYXNlLAorCQkiIiwKKwkJTlVMTCwgTlVMTCwgTlVMTAorCX0s CisjZW5kaWYKKwogCXsKIAkJeyJzeW5jaHJvbm91c19zdGFuZGJ5X25hbWVzIiwgUEdDX1NJR0hV UCwgUkVQTElDQVRJT05fUFJJTUFSWSwKIAkJCWdldHRleHRfbm9vcCgiTnVtYmVyIG9mIHN5bmNo cm9ub3VzIHN0YW5kYnlzIGFuZCBsaXN0IG9mIG5hbWVzIG9mIHBvdGVudGlhbCBzeW5jaHJvbm91 cyBvbmVzLiIpLApAQCAtNDM5NCw4ICs0NDEwLDEwIEBAIHN0YXRpYyBzdHJ1Y3QgY29uZmlnX3N0 cmluZyBDb25maWd1cmVOYW1lc1N0cmluZ1tdID0KIAkJCUdVQ19TVVBFUlVTRVJfT05MWQogCQl9 LAogCQkmU1NMQ2lwaGVyU3VpdGVzLAotI2lmZGVmIFVTRV9PUEVOU1NMCisjaWYgZGVmaW5lZChV U0VfT1BFTlNTTCkKIAkJIkhJR0g6TUVESVVNOiszREVTOiFhTlVMTCIsCisjZWxpZiBkZWZpbmVk IChVU0VfTlNTKQorCQkiIiwKICNlbHNlCiAJCSJub25lIiwKICNlbmRpZgpkaWZmIC0tZ2l0IGEv c3JjL2NvbW1vbi9NYWtlZmlsZSBiL3NyYy9jb21tb24vTWFrZWZpbGUKaW5kZXggOTNlYjI3YTJh YS4uN2E0YjNkYWQ1ZCAxMDA2NDQKLS0tIGEvc3JjL2NvbW1vbi9NYWtlZmlsZQorKysgYi9zcmMv Y29tbW9uL01ha2VmaWxlCkBAIC04MCw3ICs4MCw3IEBAIE9CSlNfQ09NTU9OID0gXAogCXdhaXRf ZXJyb3IubyBcCiAJd2NoYXIubwogCi1pZmVxICgkKHdpdGhfb3BlbnNzbCkseWVzKQoraWZlcSAo JCh3aXRoX3NzbCksb3BlbnNzbCkKIE9CSlNfQ09NTU9OICs9IFwKIAlwcm90b2NvbF9vcGVuc3Ns Lm8gXAogCWNyeXB0b2hhc2hfb3BlbnNzbC5vCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21t b24vcGdfbnNzLmggYi9zcmMvaW5jbHVkZS9jb21tb24vcGdfbnNzLmgKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMDA4ZmVlODVmMQotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy9pbmNsdWRlL2NvbW1vbi9wZ19uc3MuaApAQCAtMCwwICsxLDE3NSBAQAorLyotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgKgorICogcGdfbnNzLmgKKyAqCSAgU3VwcG9ydCBmb3IgTlNTIGFzIGEgVExTIGJh Y2tlbmQKKyAqCisgKiBUaGVzZSBkZWZpbml0aW9ucyBhcmUgdXNlZCBieSBib3RoIGZyb250ZW5k IGFuZCBiYWNrZW5kIGNvZGUuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDIwLCBQb3N0Z3JlU1FM IEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKiAgICAg ICAgc3JjL2luY2x1ZGUvY29tbW9uL3BnX25zcy5oCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg Ki8KKyNpZm5kZWYgUEdfTlNTX0gKKyNkZWZpbmUgUEdfTlNTX0gKKworI2lmZGVmIFVTRV9OU1MK KyNkZWZpbmUgTk9fTlNQUl8xMF9TVVBQT1JUCisjaW5jbHVkZSA8bnNzL2hhc2h0Lmg+CisjaW5j bHVkZSA8bnNzL3NlY29pZHQuaD4KKyNpbmNsdWRlIDxuc3Mvc3NscHJvdG8uaD4KKworUFJVaW50 MTYJcGdfZmluZF9jaXBoZXIoY2hhciAqbmFtZSk7CisKK3R5cGVkZWYgc3RydWN0Cit7CisJU0VD T2lkVGFnCXNpZ25hdHVyZTsKKwlTRUNPaWRUYWcJaGFzaDsKKwlpbnQJCQlsZW47Cit9CQkJTlNT U2lnbmF0dXJlQWxnb3JpdGhtczsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKwljb25zdCBjaGFyICpu YW1lOworCVBSVWludDE2CW51bWJlcjsKK30JCQlOU1NDaXBoZXJzOworCisjZGVmaW5lIElOVkFM SURfQ0lQSEVSCTB4RkZGRgorCitzdGF0aWMgY29uc3QgTlNTU2lnbmF0dXJlQWxnb3JpdGhtcyBO U1NfU0NSQU1EaWdlc3RBbGdvcml0aG1bXSA9IHsKKworCXtTRUNfT0lEX1BLQ1MxX01ENV9XSVRI X1JTQV9FTkNSWVBUSU9OLCBTRUNfT0lEX1NIQTI1NiwgU0hBMjU2X0xFTkdUSH0sCisJe1NFQ19P SURfUEtDUzFfU0hBMV9XSVRIX1JTQV9FTkNSWVBUSU9OLCBTRUNfT0lEX1NIQTI1NiwgU0hBMjU2 X0xFTkdUSH0sCisJe1NFQ19PSURfSVNPX1NIQV9XSVRIX1JTQV9TSUdOQVRVUkUsIFNFQ19PSURf U0hBMjU2LCBTSEEyNTZfTEVOR1RIfSwKKwl7U0VDX09JRF9JU09fU0hBMV9XSVRIX1JTQV9TSUdO QVRVUkUsIFNFQ19PSURfU0hBMjU2LCBTSEEyNTZfTEVOR1RIfSwKKwl7U0VDX09JRF9QS0NTNV9Q QkVfV0lUSF9NRDVfQU5EX0RFU19DQkMsIFNFQ19PSURfU0hBMjU2LCBTSEEyNTZfTEVOR1RIfSwK KworCXtTRUNfT0lEX0FOU0lYOTYyX0VDRFNBX1NIQTIyNF9TSUdOQVRVUkUsIFNFQ19PSURfU0hB MjI0LCBTSEEyMjRfTEVOR1RIfSwKKwl7U0VDX09JRF9QS0NTMV9TSEEyMjRfV0lUSF9SU0FfRU5D UllQVElPTiwgU0VDX09JRF9TSEEyMjQsIFNIQTIyNF9MRU5HVEh9LAorCXtTRUNfT0lEX05JU1Rf RFNBX1NJR05BVFVSRV9XSVRIX1NIQTIyNF9ESUdFU1QsIFNFQ19PSURfU0hBMjI0LCBTSEEyMjRf TEVOR1RIfSwKKworCXtTRUNfT0lEX0FOU0lYOTYyX0VDRFNBX1NIQTI1Nl9TSUdOQVRVUkUsIFNF Q19PSURfU0hBMjU2LCBTSEEyNTZfTEVOR1RIfSwKKwl7U0VDX09JRF9QS0NTMV9TSEEyNTZfV0lU SF9SU0FfRU5DUllQVElPTiwgU0VDX09JRF9TSEEyNTYsIFNIQTI1Nl9MRU5HVEh9LAorCXtTRUNf T0lEX05JU1RfRFNBX1NJR05BVFVSRV9XSVRIX1NIQTI1Nl9ESUdFU1QsIFNFQ19PSURfU0hBMjU2 LCBTSEEyNTZfTEVOR1RIfSwKKworCXtTRUNfT0lEX0FOU0lYOTYyX0VDRFNBX1NIQTM4NF9TSUdO QVRVUkUsIFNFQ19PSURfU0hBMzg0LCBTSEEzODRfTEVOR1RIfSwKKwl7U0VDX09JRF9QS0NTMV9T SEEzODRfV0lUSF9SU0FfRU5DUllQVElPTiwgU0VDX09JRF9TSEEzODQsIFNIQTM4NF9MRU5HVEh9 LAorCisJe1NFQ19PSURfQU5TSVg5NjJfRUNEU0FfU0hBNTEyX1NJR05BVFVSRSwgU0VDX09JRF9T SEE1MTIsIFNIQTUxMl9MRU5HVEh9LAorCXtTRUNfT0lEX1BLQ1MxX1NIQTUxMl9XSVRIX1JTQV9F TkNSWVBUSU9OLCBTRUNfT0lEX1NIQTUxMiwgU0hBNTEyX0xFTkdUSH0sCisKKwl7MCwgMH0KK307 CisKKy8qCisgKiBUaGlzIGxpc3QgaXMgYSBwYXJ0aWFsIGNvcHkgb2YgdGhlIGNpcGhlcnMgaW4g TlNTIGZpbGVzIGxpYi9zc2wvc3NscHJvdG8uaAorICogaW4gb3JkZXIgdG8gcHJvdmlkZSBhIGh1 bWFuIHJlYWRhYmxlIHZlcnNpb24gb2YgdGhlIGNpcGhlcnMuIEl0IHdvdWxkIGJlCisgKiBuaWNl IHRvIG5vdCBoYXZlIHRvIGhhdmUgdGhpcywgYnV0IE5TUyBkb2Vzbid0IHByb3ZpZGUgYW55IEFQ SSBhZGRyZXNzaW5nCisgKiB0aGUgY2lwaGVycyBieSBuYW1lLiBUT0RPOiBkbyB3ZSB3YW50IG1v cmUgb2YgdGhlIGNpcGhlcnMsIG9yIHBlcmhhcHMgbGVzcz8KKyAqLworc3RhdGljIGNvbnN0IE5T U0NpcGhlcnMgTlNTX0NpcGhlckxpc3RbXSA9IHsKKworCXsiVExTX05VTExfV0lUSF9OVUxMX05V TEwiLCBUTFNfTlVMTF9XSVRIX05VTExfTlVMTH0sCisKKwl7IlRMU19SU0FfV0lUSF9OVUxMX01E NSIsIFRMU19SU0FfV0lUSF9OVUxMX01ENX0sCisJeyJUTFNfUlNBX1dJVEhfTlVMTF9TSEEiLCBU TFNfUlNBX1dJVEhfTlVMTF9TSEF9LAorCXsiVExTX1JTQV9XSVRIX1JDNF8xMjhfTUQ1IiwgVExT X1JTQV9XSVRIX1JDNF8xMjhfTUQ1fSwKKwl7IlRMU19SU0FfV0lUSF9SQzRfMTI4X1NIQSIsIFRM U19SU0FfV0lUSF9SQzRfMTI4X1NIQX0sCisJeyJUTFNfUlNBX1dJVEhfSURFQV9DQkNfU0hBIiwg VExTX1JTQV9XSVRIX0lERUFfQ0JDX1NIQX0sCisJeyJUTFNfUlNBX1dJVEhfREVTX0NCQ19TSEEi LCBUTFNfUlNBX1dJVEhfREVTX0NCQ19TSEF9LAorCXsiVExTX1JTQV9XSVRIXzNERVNfRURFX0NC Q19TSEEiLCBUTFNfUlNBX1dJVEhfM0RFU19FREVfQ0JDX1NIQX0sCisKKwl7IlRMU19ESF9EU1Nf V0lUSF9ERVNfQ0JDX1NIQSIsIFRMU19ESF9EU1NfV0lUSF9ERVNfQ0JDX1NIQX0sCisJeyJUTFNf REhfRFNTX1dJVEhfM0RFU19FREVfQ0JDX1NIQSIsIFRMU19ESF9EU1NfV0lUSF8zREVTX0VERV9D QkNfU0hBfSwKKwl7IlRMU19ESF9SU0FfV0lUSF9ERVNfQ0JDX1NIQSIsIFRMU19ESF9SU0FfV0lU SF9ERVNfQ0JDX1NIQX0sCisJeyJUTFNfREhfUlNBX1dJVEhfM0RFU19FREVfQ0JDX1NIQSIsIFRM U19ESF9SU0FfV0lUSF8zREVTX0VERV9DQkNfU0hBfSwKKworCXsiVExTX0RIRV9EU1NfV0lUSF9E RVNfQ0JDX1NIQSIsIFRMU19ESEVfRFNTX1dJVEhfREVTX0NCQ19TSEF9LAorCXsiVExTX0RIRV9E U1NfV0lUSF8zREVTX0VERV9DQkNfU0hBIiwgVExTX0RIRV9EU1NfV0lUSF8zREVTX0VERV9DQkNf U0hBfSwKKwl7IlRMU19ESEVfUlNBX1dJVEhfREVTX0NCQ19TSEEiLCBUTFNfREhFX1JTQV9XSVRI X0RFU19DQkNfU0hBfSwKKwl7IlRMU19ESEVfUlNBX1dJVEhfM0RFU19FREVfQ0JDX1NIQSIsIFRM U19ESEVfUlNBX1dJVEhfM0RFU19FREVfQ0JDX1NIQX0sCisKKwl7IlRMU19ESF9hbm9uX1dJVEhf UkM0XzEyOF9NRDUiLCBUTFNfREhfYW5vbl9XSVRIX1JDNF8xMjhfTUQ1fSwKKwl7IlRMU19ESF9h bm9uX1dJVEhfREVTX0NCQ19TSEEiLCBUTFNfREhfYW5vbl9XSVRIX0RFU19DQkNfU0hBfSwKKwl7 IlRMU19ESF9hbm9uX1dJVEhfM0RFU19FREVfQ0JDX1NIQSIsIFRMU19ESF9hbm9uX1dJVEhfM0RF U19FREVfQ0JDX1NIQX0sCisKKwl7IlRMU19SU0FfV0lUSF9BRVNfMTI4X0NCQ19TSEEiLCBUTFNf UlNBX1dJVEhfQUVTXzEyOF9DQkNfU0hBfSwKKwl7IlRMU19ESF9EU1NfV0lUSF9BRVNfMTI4X0NC Q19TSEEiLCBUTFNfREhfRFNTX1dJVEhfQUVTXzEyOF9DQkNfU0hBfSwKKwl7IlRMU19ESF9SU0Ff V0lUSF9BRVNfMTI4X0NCQ19TSEEiLCBUTFNfREhfUlNBX1dJVEhfQUVTXzEyOF9DQkNfU0hBfSwK Kwl7IlRMU19ESEVfRFNTX1dJVEhfQUVTXzEyOF9DQkNfU0hBIiwgVExTX0RIRV9EU1NfV0lUSF9B RVNfMTI4X0NCQ19TSEF9LAorCXsiVExTX0RIRV9SU0FfV0lUSF9BRVNfMTI4X0NCQ19TSEEiLCBU TFNfREhFX1JTQV9XSVRIX0FFU18xMjhfQ0JDX1NIQX0sCisJeyJUTFNfREhfYW5vbl9XSVRIX0FF U18xMjhfQ0JDX1NIQSIsIFRMU19ESF9hbm9uX1dJVEhfQUVTXzEyOF9DQkNfU0hBfSwKKworCXsi VExTX1JTQV9XSVRIX0FFU18yNTZfQ0JDX1NIQSIsIFRMU19SU0FfV0lUSF9BRVNfMjU2X0NCQ19T SEF9LAorCXsiVExTX0RIX0RTU19XSVRIX0FFU18yNTZfQ0JDX1NIQSIsIFRMU19ESF9EU1NfV0lU SF9BRVNfMjU2X0NCQ19TSEF9LAorCXsiVExTX0RIX1JTQV9XSVRIX0FFU18yNTZfQ0JDX1NIQSIs IFRMU19ESF9SU0FfV0lUSF9BRVNfMjU2X0NCQ19TSEF9LAorCXsiVExTX0RIRV9EU1NfV0lUSF9B RVNfMjU2X0NCQ19TSEEiLCBUTFNfREhFX0RTU19XSVRIX0FFU18yNTZfQ0JDX1NIQX0sCisJeyJU TFNfREhFX1JTQV9XSVRIX0FFU18yNTZfQ0JDX1NIQSIsIFRMU19ESEVfUlNBX1dJVEhfQUVTXzI1 Nl9DQkNfU0hBfSwKKwl7IlRMU19ESF9hbm9uX1dJVEhfQUVTXzI1Nl9DQkNfU0hBIiwgVExTX0RI X2Fub25fV0lUSF9BRVNfMjU2X0NCQ19TSEF9LAorCXsiVExTX1JTQV9XSVRIX05VTExfU0hBMjU2 IiwgVExTX1JTQV9XSVRIX05VTExfU0hBMjU2fSwKKwl7IlRMU19SU0FfV0lUSF9BRVNfMTI4X0NC Q19TSEEyNTYiLCBUTFNfUlNBX1dJVEhfQUVTXzEyOF9DQkNfU0hBMjU2fSwKKwl7IlRMU19SU0Ff V0lUSF9BRVNfMjU2X0NCQ19TSEEyNTYiLCBUTFNfUlNBX1dJVEhfQUVTXzI1Nl9DQkNfU0hBMjU2 fSwKKworCXsiVExTX0RIRV9EU1NfV0lUSF9BRVNfMTI4X0NCQ19TSEEyNTYiLCBUTFNfREhFX0RT U19XSVRIX0FFU18xMjhfQ0JDX1NIQTI1Nn0sCisJeyJUTFNfUlNBX1dJVEhfQ0FNRUxMSUFfMTI4 X0NCQ19TSEEiLCBUTFNfUlNBX1dJVEhfQ0FNRUxMSUFfMTI4X0NCQ19TSEF9LAorCXsiVExTX0RI X0RTU19XSVRIX0NBTUVMTElBXzEyOF9DQkNfU0hBIiwgVExTX0RIX0RTU19XSVRIX0NBTUVMTElB XzEyOF9DQkNfU0hBfSwKKwl7IlRMU19ESF9SU0FfV0lUSF9DQU1FTExJQV8xMjhfQ0JDX1NIQSIs IFRMU19ESF9SU0FfV0lUSF9DQU1FTExJQV8xMjhfQ0JDX1NIQX0sCisJeyJUTFNfREhFX0RTU19X SVRIX0NBTUVMTElBXzEyOF9DQkNfU0hBIiwgVExTX0RIRV9EU1NfV0lUSF9DQU1FTExJQV8xMjhf Q0JDX1NIQX0sCisJeyJUTFNfREhFX1JTQV9XSVRIX0NBTUVMTElBXzEyOF9DQkNfU0hBIiwgVExT X0RIRV9SU0FfV0lUSF9DQU1FTExJQV8xMjhfQ0JDX1NIQX0sCisJeyJUTFNfREhfYW5vbl9XSVRI X0NBTUVMTElBXzEyOF9DQkNfU0hBIiwgVExTX0RIX2Fub25fV0lUSF9DQU1FTExJQV8xMjhfQ0JD X1NIQX0sCisKKwl7IlRMU19ESEVfRFNTX1dJVEhfUkM0XzEyOF9TSEEiLCBUTFNfREhFX0RTU19X SVRIX1JDNF8xMjhfU0hBfSwKKwl7IlRMU19ESEVfUlNBX1dJVEhfQUVTXzEyOF9DQkNfU0hBMjU2 IiwgVExTX0RIRV9SU0FfV0lUSF9BRVNfMTI4X0NCQ19TSEEyNTZ9LAorCXsiVExTX0RIRV9EU1Nf V0lUSF9BRVNfMjU2X0NCQ19TSEEyNTYiLCBUTFNfREhFX0RTU19XSVRIX0FFU18yNTZfQ0JDX1NI QTI1Nn0sCisJeyJUTFNfREhFX1JTQV9XSVRIX0FFU18yNTZfQ0JDX1NIQTI1NiIsIFRMU19ESEVf UlNBX1dJVEhfQUVTXzI1Nl9DQkNfU0hBMjU2fSwKKworCXsiVExTX1JTQV9XSVRIX0NBTUVMTElB XzI1Nl9DQkNfU0hBIiwgVExTX1JTQV9XSVRIX0NBTUVMTElBXzI1Nl9DQkNfU0hBfSwKKwl7IlRM U19ESF9EU1NfV0lUSF9DQU1FTExJQV8yNTZfQ0JDX1NIQSIsIFRMU19ESF9EU1NfV0lUSF9DQU1F TExJQV8yNTZfQ0JDX1NIQX0sCisJeyJUTFNfREhfUlNBX1dJVEhfQ0FNRUxMSUFfMjU2X0NCQ19T SEEiLCBUTFNfREhfUlNBX1dJVEhfQ0FNRUxMSUFfMjU2X0NCQ19TSEF9LAorCXsiVExTX0RIRV9E U1NfV0lUSF9DQU1FTExJQV8yNTZfQ0JDX1NIQSIsIFRMU19ESEVfRFNTX1dJVEhfQ0FNRUxMSUFf MjU2X0NCQ19TSEF9LAorCXsiVExTX0RIRV9SU0FfV0lUSF9DQU1FTExJQV8yNTZfQ0JDX1NIQSIs IFRMU19ESEVfUlNBX1dJVEhfQ0FNRUxMSUFfMjU2X0NCQ19TSEF9LAorCXsiVExTX0RIX2Fub25f V0lUSF9DQU1FTExJQV8yNTZfQ0JDX1NIQSIsIFRMU19ESF9hbm9uX1dJVEhfQ0FNRUxMSUFfMjU2 X0NCQ19TSEF9LAorCisJeyJUTFNfUlNBX1dJVEhfU0VFRF9DQkNfU0hBIiwgVExTX1JTQV9XSVRI X1NFRURfQ0JDX1NIQX0sCisKKwl7IlRMU19SU0FfV0lUSF9BRVNfMTI4X0dDTV9TSEEyNTYiLCBU TFNfUlNBX1dJVEhfQUVTXzEyOF9HQ01fU0hBMjU2fSwKKwl7IlRMU19SU0FfV0lUSF9BRVNfMjU2 X0dDTV9TSEEzODQiLCBUTFNfUlNBX1dJVEhfQUVTXzI1Nl9HQ01fU0hBMzg0fSwKKwl7IlRMU19E SEVfUlNBX1dJVEhfQUVTXzEyOF9HQ01fU0hBMjU2IiwgVExTX0RIRV9SU0FfV0lUSF9BRVNfMTI4 X0dDTV9TSEEyNTZ9LAorCXsiVExTX0RIRV9SU0FfV0lUSF9BRVNfMjU2X0dDTV9TSEEzODQiLCBU TFNfREhFX1JTQV9XSVRIX0FFU18yNTZfR0NNX1NIQTM4NH0sCisJeyJUTFNfREhFX0RTU19XSVRI X0FFU18xMjhfR0NNX1NIQTI1NiIsIFRMU19ESEVfRFNTX1dJVEhfQUVTXzEyOF9HQ01fU0hBMjU2 fSwKKwl7IlRMU19ESEVfRFNTX1dJVEhfQUVTXzI1Nl9HQ01fU0hBMzg0IiwgVExTX0RIRV9EU1Nf V0lUSF9BRVNfMjU2X0dDTV9TSEEzODR9LAorCisJeyJUTFNfQUVTXzEyOF9HQ01fU0hBMjU2Iiwg VExTX0FFU18xMjhfR0NNX1NIQTI1Nn0sCisJeyJUTFNfQUVTXzI1Nl9HQ01fU0hBMzg0IiwgVExT X0FFU18yNTZfR0NNX1NIQTM4NH0sCisJeyJUTFNfQ0hBQ0hBMjBfUE9MWTEzMDVfU0hBMjU2Iiwg VExTX0NIQUNIQTIwX1BPTFkxMzA1X1NIQTI1Nn0sCisJe05VTEwsIDB9Cit9OworCisvKgorICog cGdfZmluZF9jaXBoZXIKKyAqCQkJVHJhbnNsYXRlIGFuIE5TUyBjaXBoZXJuYW1lIHRvIHRoZSBj aXBoZXIgY29kZQorICoKKyAqIFNlYXJjaGVzIHRoZSBjb25maWd1cmVkIGNpcGhlcnMgZm9yIHRo ZSBjb3JyZXNwb25kaW5nIGNpcGhlciBjb2RlIHRvIHRoZQorICogbmFtZS4gU2VhcmNoIGlzIHBl cmZvcm1lZCBjYXNlIGluc2Vuc2l0aXZlLgorICovCitQUlVpbnQxNgorcGdfZmluZF9jaXBoZXIo Y2hhciAqbmFtZSkKK3sKKwljb25zdAkJTlNTQ2lwaGVycyAqY2lwaGVyX2xpc3QgPSBOU1NfQ2lw aGVyTGlzdDsKKworCXdoaWxlIChjaXBoZXJfbGlzdC0+bmFtZSkKKwl7CisJCWlmIChwZ19zdHJj YXNlY21wKGNpcGhlcl9saXN0LT5uYW1lLCBuYW1lKSA9PSAwKQorCQkJcmV0dXJuIGNpcGhlcl9s aXN0LT5udW1iZXI7CisKKwkJY2lwaGVyX2xpc3QrKzsKKwl9CisKKwlyZXR1cm4gMHhGRkZGOwor fQorCisjZW5kaWYJCQkJCQkJLyogVVNFX05TUyAqLworCisjZW5kaWYJCQkJCQkJLyogUEdfTlNT X0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2xpYnBxL2xpYnBxLWJlLmggYi9zcmMvaW5j bHVkZS9saWJwcS9saWJwcS1iZS5oCmluZGV4IDY2YTg2NzNkOTMuLmVhMzczYTBhZTAgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2xpYnBxL2xpYnBxLWJlLmgKKysrIGIvc3JjL2luY2x1ZGUvbGli cHEvbGlicHEtYmUuaApAQCAtMTkzLDEzICsxOTMsMTggQEAgdHlwZWRlZiBzdHJ1Y3QgUG9ydAog CWJvb2wJCXBlZXJfY2VydF92YWxpZDsKIAogCS8qCi0JICogT3BlblNTTCBzdHJ1Y3R1cmVzLiAo S2VlcCB0aGVzZSBsYXN0IHNvIHRoYXQgdGhlIGxvY2F0aW9ucyBvZiBvdGhlcgotCSAqIGZpZWxk cyBhcmUgdGhlIHNhbWUgd2hldGhlciBvciBub3QgeW91IGJ1aWxkIHdpdGggT3BlblNTTC4pCisJ ICogU1NMIGJhY2tlbmQgc3BlY2lmaWMgc3RydWN0dXJlcy4gKEtlZXAgdGhlc2UgbGFzdCBzbyB0 aGF0IHRoZSBsb2NhdGlvbnMKKwkgKiBvZiBvdGhlciBmaWVsZHMgYXJlIHRoZSBzYW1lIHdoZXRo ZXIgb3Igbm90IHlvdSBidWlsZCB3aXRoIFNTTAorCSAqIGVuYWJsZWQuKQogCSAqLwogI2lmZGVm IFVTRV9PUEVOU1NMCiAJU1NMCQkgICAqc3NsOwogCVg1MDkJICAgKnBlZXI7CiAjZW5kaWYKKwor I2lmZGVmIFVTRV9OU1MKKwl2b2lkCSAgICpwcl9mZDsKKyNlbmRpZgogfSBQb3J0OwogCiAjaWZk ZWYgVVNFX1NTTApAQCAtMjgzLDcgKzI4OCw3IEBAIGV4dGVybiB2b2lkIGJlX3Rsc19nZXRfcGVl cl9zZXJpYWwoUG9ydCAqcG9ydCwgY2hhciAqcHRyLCBzaXplX3QgbGVuKTsKICAqIFRoaXMgaXMg bm90IHN1cHBvcnRlZCB3aXRoIG9sZCB2ZXJzaW9ucyBvZiBPcGVuU1NMIHRoYXQgZG9uJ3QgaGF2 ZQogICogdGhlIFg1MDlfZ2V0X3NpZ25hdHVyZV9uaWQoKSBmdW5jdGlvbi4KICAqLwotI2lmIGRl ZmluZWQoVVNFX09QRU5TU0wpICYmIGRlZmluZWQoSEFWRV9YNTA5X0dFVF9TSUdOQVRVUkVfTklE KQorI2lmIGRlZmluZWQoVVNFX05TUykgfHwgKGRlZmluZWQoVVNFX09QRU5TU0wpICYmIGRlZmlu ZWQoSEFWRV9YNTA5X0dFVF9TSUdOQVRVUkVfTklEKSkKICNkZWZpbmUgSEFWRV9CRV9UTFNfR0VU X0NFUlRJRklDQVRFX0hBU0gKIGV4dGVybiBjaGFyICpiZV90bHNfZ2V0X2NlcnRpZmljYXRlX2hh c2goUG9ydCAqcG9ydCwgc2l6ZV90ICpsZW4pOwogI2VuZGlmCkBAIC0yOTMsNiArMjk4LDEwIEBA IGV4dGVybiBjaGFyICpiZV90bHNfZ2V0X2NlcnRpZmljYXRlX2hhc2goUG9ydCAqcG9ydCwgc2l6 ZV90ICpsZW4pOwogdHlwZWRlZiB2b2lkICgqb3BlbnNzbF90bHNfaW5pdF9ob29rX3R5cCkgKFNT TF9DVFggKmNvbnRleHQsIGJvb2wgaXNTZXJ2ZXJTdGFydCk7CiBleHRlcm4gUEdETExJTVBPUlQg b3BlbnNzbF90bHNfaW5pdF9ob29rX3R5cCBvcGVuc3NsX3Rsc19pbml0X2hvb2s7CiAjZW5kaWYK KyNpZmRlZiBVU0VfTlNTCit0eXBlZGVmIHZvaWQgKCpuc3NfdGxzX2luaXRfaG9va190eXBlKSAo Ym9vbCBpc1NlcnZlclN0YXJ0KTsKK2V4dGVybiBQR0RMTElNUE9SVCBuc3NfdGxzX2luaXRfaG9v a190eXBlIG5zc190bHNfaW5pdF9ob29rOworI2VuZGlmCiAKICNlbmRpZgkJCQkJCQkvKiBVU0Vf U1NMICovCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2xpYnBxL2xpYnBxLmggYi9zcmMvaW5j bHVkZS9saWJwcS9saWJwcS5oCmluZGV4IGE1NTg5OGM4NWEuLmQyODYwYjg1MmYgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2xpYnBxL2xpYnBxLmgKKysrIGIvc3JjL2luY2x1ZGUvbGlicHEvbGli cHEuaApAQCAtODgsNiArODgsOSBAQCBleHRlcm4gUEdETExJTVBPUlQgYm9vbCBzc2xfcGFzc3Bo cmFzZV9jb21tYW5kX3N1cHBvcnRzX3JlbG9hZDsKICNpZmRlZiBVU0VfU1NMCiBleHRlcm4gYm9v bCBzc2xfbG9hZGVkX3ZlcmlmeV9sb2NhdGlvbnM7CiAjZW5kaWYKKyNpZmRlZiBVU0VfTlNTCitl eHRlcm4gY2hhciAqc3NsX2RhdGFiYXNlOworI2VuZGlmCiAKIGV4dGVybiBpbnQJc2VjdXJlX2lu aXRpYWxpemUoYm9vbCBpc1NlcnZlclN0YXJ0KTsKIGV4dGVybiBib29sIHNlY3VyZV9sb2FkZWRf dmVyaWZ5X2xvY2F0aW9ucyh2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BnX2NvbmZp Zy5oLmluIGIvc3JjL2luY2x1ZGUvcGdfY29uZmlnLmguaW4KaW5kZXggZjRkOWYzYjQwOC4uNjdh OWY5MGU1ZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGdfY29uZmlnLmguaW4KKysrIGIvc3Jj L2luY2x1ZGUvcGdfY29uZmlnLmguaW4KQEAgLTkwNSw2ICs5MDUsOSBAQAogLyogRGVmaW5lIHRv IDEgdG8gYnVpbGQgd2l0aCBQQU0gc3VwcG9ydC4gKC0td2l0aC1wYW0pICovCiAjdW5kZWYgVVNF X1BBTQogCisvKiBEZWZpbmUgdG8gYnVpbGQgd2l0aCBOU1Mgc3VwcG9ydCAoLS13aXRoLW5zcykg Ki8KKyN1bmRlZiBVU0VfTlNTCisKIC8qIERlZmluZSB0byAxIHRvIHVzZSBzb2Z0d2FyZSBDUkMt MzJDIGltcGxlbWVudGF0aW9uIChzbGljaW5nLWJ5LTgpLiAqLwogI3VuZGVmIFVTRV9TTElDSU5H X0JZXzhfQ1JDMzJDCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BnX2NvbmZpZ19tYW51YWwu aCBiL3NyYy9pbmNsdWRlL3BnX2NvbmZpZ19tYW51YWwuaAppbmRleCBkMjdjODYwMWZhLi43ODYx Yjk0MjkwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wZ19jb25maWdfbWFudWFsLmgKKysrIGIv c3JjL2luY2x1ZGUvcGdfY29uZmlnX21hbnVhbC5oCkBAIC0xNzYsMTAgKzE3Niw5IEBACiAKIC8q CiAgKiBVU0VfU1NMIGNvZGUgc2hvdWxkIGJlIGNvbXBpbGVkIG9ubHkgd2hlbiBjb21waWxpbmcg d2l0aCBhbiBTU0wKLSAqIGltcGxlbWVudGF0aW9uLiAgKEN1cnJlbnRseSwgb25seSBPcGVuU1NM IGlzIHN1cHBvcnRlZCwgYnV0IHdlIG1pZ2h0IGFkZAotICogbW9yZSBpbXBsZW1lbnRhdGlvbnMg aW4gdGhlIGZ1dHVyZS4pCisgKiBpbXBsZW1lbnRhdGlvbi4KICAqLwotI2lmZGVmIFVTRV9PUEVO U1NMCisjaWYgZGVmaW5lZChVU0VfT1BFTlNTTCkgfHwgZGVmaW5lZChVU0VfTlNTKQogI2RlZmlu ZSBVU0VfU1NMCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvTWFr ZWZpbGUgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9NYWtlZmlsZQppbmRleCBjNGZkZTNmOTNkLi44 MzdlMTA1ZmZlIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9NYWtlZmlsZQorKysg Yi9zcmMvaW50ZXJmYWNlcy9saWJwcS9NYWtlZmlsZQpAQCAtNDUsMTIgKzQ1LDIxIEBAIE9CSlMg PSBcCiAJcHFleHBidWZmZXIubyBcCiAJZmUtYXV0aC5vCiAKLWlmZXEgKCQod2l0aF9vcGVuc3Ns KSx5ZXMpCitpZm5lcSAoJCh3aXRoX3NzbCksbm8pCitPQkpTICs9IFwKKwlmZS1zZWN1cmUtY29t bW9uLm8KK2VuZGlmCisKK2lmZXEgKCQod2l0aF9zc2wpLG9wZW5zc2wpCiBPQkpTICs9IFwKLQlm ZS1zZWN1cmUtY29tbW9uLm8gXAogCWZlLXNlY3VyZS1vcGVuc3NsLm8KIGVuZGlmCiAKK2lmZXEg KCQod2l0aF9zc2wpLCBuc3MpCitPQkpTICs9IFwKKwlmZS1zZWN1cmUtbnNzLm8KK2VuZGlmCisK IGlmZXEgKCQod2l0aF9nc3NhcGkpLHllcykKIE9CSlMgKz0gXAogCWZlLWdzc2FwaS1jb21tb24u byBcCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1jb25uZWN0LmMgYi9zcmMv aW50ZXJmYWNlcy9saWJwcS9mZS1jb25uZWN0LmMKaW5kZXggMmI3OGVkOGVjMy4uNzlkM2EzNTAw OSAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtY29ubmVjdC5jCisrKyBiL3Ny Yy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWNvbm5lY3QuYwpAQCAtMzU1LDYgKzM1NSwxMCBAQCBzdGF0 aWMgY29uc3QgaW50ZXJuYWxQUWNvbm5pbmZvT3B0aW9uIFBRY29ubmluZm9PcHRpb25zW10gPSB7 CiAJCSJUYXJnZXQtU2Vzc2lvbi1BdHRycyIsICIiLCAxMSwgLyogc2l6ZW9mKCJyZWFkLXdyaXRl IikgPSAxMSAqLwogCW9mZnNldG9mKHN0cnVjdCBwZ19jb25uLCB0YXJnZXRfc2Vzc2lvbl9hdHRy cyl9LAogCisJeyJjZXJ0X2RhdGFiYXNlIiwgTlVMTCwgTlVMTCwgTlVMTCwKKwkJIkNlcnRpZmlj YXRlRGF0YWJhc2UiLCAiIiwgNjQsCisJb2Zmc2V0b2Yoc3RydWN0IHBnX2Nvbm4sIGNlcnRfZGF0 YWJhc2UpfSwKKwogCS8qIFRlcm1pbmF0aW5nIGVudHJ5IC0tLSBNVVNUIEJFIExBU1QgKi8KIAl7 TlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwKIAlOVUxMLCBOVUxMLCAwfQpkaWZmIC0tZ2l0IGEvc3Jj L2ludGVyZmFjZXMvbGlicHEvZmUtc2VjdXJlLW5zcy5jIGIvc3JjL2ludGVyZmFjZXMvbGlicHEv ZmUtc2VjdXJlLW5zcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmRj YTA1NzJlNjcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1zZWN1 cmUtbnNzLmMKQEAgLTAsMCArMSwxMTEyIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBm ZS1zZWN1cmUtbnNzLmMKKyAqCSAgZnVuY3Rpb25zIGZvciBzdXBwb3J0aW5nIE5TUyBhcyBhIFRM UyBiYWNrZW5kIGZvciBmcm9udGVuZCBsaWJwcQorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAo YykgMTk5Ni0yMDIwLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9y dGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENh bGlmb3JuaWEKKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvaW50ZXJmYWNlcy9saWJw cS9mZS1zZWN1cmUtbnNzLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVk ZSAicG9zdGdyZXNfZmUuaCIKKworI2luY2x1ZGUgImxpYnBxLWZlLmgiCisjaW5jbHVkZSAiZmUt YXV0aC5oIgorI2luY2x1ZGUgImZlLXNlY3VyZS1jb21tb24uaCIKKyNpbmNsdWRlICJsaWJwcS1p bnQuaCIKKyNpbmNsdWRlICJjb21tb24vcGdfbnNzLmgiCisKKy8qCisgKiBCSVRTX1BFUl9CWVRF IGlzIGFsc28gZGVmaW5lZCBpbiB0aGUgTlNQUiBoZWFkZXIgZmlsZXMsIHNvIHdlIG5lZWQgdG8g dW5kZWYKKyAqIG91ciB2ZXJzaW9uIHRvIGF2b2lkIGNvbXBpbGVyIHdhcm5pbmdzIG9uIHJlZGVm aW5pdGlvbi4KKyAqLworI2RlZmluZSBwZ19CSVRTX1BFUl9CWVRFIEJJVFNfUEVSX0JZVEUKKyN1 bmRlZiBCSVRTX1BFUl9CWVRFCisKKy8qCisgKiBUaGUgbnNwci9vYnNvbGV0ZS9wcm90eXBlcy5o IE5TUFIgaGVhZGVyIHR5cGVkZWZzIHVpbnQ2NCBhbmQgaW50NjQgd2l0aAorICogY29sbGlkaW5n IGRlZmluaXRpb25zIGZyb20gb3VycywgY2F1c2luZyBhIG11Y2ggZXhwZWN0ZWQgY29tcGlsZXIg ZXJyb3IuCisgKiBSZW1vdmUgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBhbmNpZW50IE5T UFIgdmVyc2lvbnMgdG8gYXZvaWQgdGhpcy4KKyAqLworI2RlZmluZSBOT19OU1BSXzEwX1NVUFBP UlQKKyNpbmNsdWRlIDxuc3ByL25zcHIuaD4KKyNpbmNsdWRlIDxuc3ByL3ByZXJyb3IuaD4KKyNp bmNsdWRlIDxuc3ByL3ByaW5pdC5oPgorI2luY2x1ZGUgPG5zcHIvcHJpby5oPgorI2luY2x1ZGUg PG5zcy9oYXNodC5oPgorI2luY2x1ZGUgPG5zcy9uc3MuaD4KKyNpbmNsdWRlIDxuc3Mvc3NsLmg+ CisjaW5jbHVkZSA8bnNzL3NzbHByb3RvLmg+CisjaW5jbHVkZSA8bnNzL3BrMTFmdW5jLmg+Cisj aW5jbHVkZSA8bnNzL3NlY2Vyci5oPgorI2luY2x1ZGUgPG5zcy9zZWNvaWR0Lmg+CisjaW5jbHVk ZSA8bnNzL3NlY21vZC5oPgorCisvKgorICogRW5zdXJlIHRoYXQgdGhlIGNvbGxpZGluZyBkZWZp bml0aW9ucyBtYXRjaCwgZWxzZSB0aHJvdyBhbiBlcnJvci4gSW4gY2FzZQorICogTlNQUiByZW1v dmUgdGhlIGRlZmluaXRpb24gaW4gYSBmdXR1cmUgdmVyc2lvbiAoaG93ZXZlciB1bmxpa2VseSB0 aGF0IG1heQorICogYmUsIG1ha2Ugc3VyZSB0byBwdXQgb3VycyBiYWNrIGFnYWluLgorICovCisj aWYgZGVmaW5lZChCSVRTX1BFUl9CWVRFKQorI2lmIEJJVFNfUEVSX0JZVEUgIT0gcGdfQklUU19Q RVJfQllURQorI2Vycm9yICJpbmNvbXBhdGlibGUgYnl0ZSB3aWR0aHMgYmV0d2VlbiBOU1BSIGFu ZCBQb3N0Z3JlU1FMIgorI2VuZGlmCisjZWxzZQorI2RlZmluZSBCSVRTX1BFUl9CWVRFIHBnX0JJ VFNfUEVSX0JZVEUKKyNlbmRpZgorI3VuZGVmIHBnX0JJVFNfUEVSX0JZVEUKKworc3RhdGljIFNF Q1N0YXR1cyBwZ19sb2FkX25zc19tb2R1bGUoU0VDTU9ETW9kdWxlICogKm1vZHVsZSwgY29uc3Qg Y2hhciAqbGlicmFyeSwgY29uc3QgY2hhciAqbmFtZSk7CitzdGF0aWMgU0VDU3RhdHVzIHBnX2Jh ZF9jZXJ0X2hhbmRsZXIodm9pZCAqYXJnLCBQUkZpbGVEZXNjICogZmQpOworc3RhdGljIGNvbnN0 IGNoYXIgKnBnX1NTTGVycm1lc3NhZ2UoUFJFcnJvckNvZGUgZXJyY29kZSk7CitzdGF0aWMgU0VD U3RhdHVzIHBnX2NsaWVudF9hdXRoX2hhbmRsZXIodm9pZCAqYXJnLCBQUkZpbGVEZXNjICogc29j a2V0LCBDRVJURGlzdE5hbWVzICogY2FOYW1lcywKKwkJCQkJCQkJCQlDRVJUQ2VydGlmaWNhdGUg KiAqcFJldENlcnQsIFNFQ0tFWVByaXZhdGVLZXkgKiAqcFJldEtleSk7CitzdGF0aWMgU0VDU3Rh dHVzIHBnX2NlcnRfYXV0aF9oYW5kbGVyKHZvaWQgKmFyZywgUFJGaWxlRGVzYyAqIGZkLCBQUkJv b2wgY2hlY2tzaWcsIFBSQm9vbCBpc1NlcnZlcik7CitzdGF0aWMgaW50CXNzbF9wcm90b2NvbF92 ZXJzaW9uX3RvX25zcyhjb25zdCBjaGFyICpwcm90b2NvbCk7CitzdGF0aWMgYm9vbCBjZXJ0X2Rh dGFiYXNlX2hhc19DQShQR2Nvbm4gKmNvbm4pOworCitzdGF0aWMgY2hhciAqUFFzc2xfcGFzc3dk X2NiKFBLMTFTbG90SW5mbyAqIHNsb3QsIFBSQm9vbCByZXRyeSwgdm9pZCAqYXJnKTsKKworLyoK KyAqIFBSX0ltcG9ydFRDUFNvY2tldCgpIGlzIGEgcHJpdmF0ZSBBUEksIGJ1dCB2ZXJ5IHdpZGVs eSB1c2VkLCBhcyBpdCdzIHRoZQorICogb25seSB3YXkgdG8gbWFrZSBOU1MgdXNlIGFuIGFscmVh ZHkgc2V0IHVwIFBPU0lYIGZpbGUgZGVzY3JpcHRvciByYXRoZXIKKyAqIHRoYW4gb3BlbmluZyBv bmUgaXRzZWxmLiBUbyBxdW90ZSB0aGUgTlNTIGRvY3VtZW50YXRpb246CisgKgorICoJCSJJbiB0 aGVvcnksIGNvZGUgdGhhdCB1c2VzIFBSX0ltcG9ydFRDUFNvY2tldCBtYXkgYnJlYWsgd2hlbiBO U1BSJ3MKKyAqCQlpbXBsZW1lbnRhdGlvbiBjaGFuZ2VzLiBJbiBwcmFjdGljZSwgdGhpcyBpcyB1 bmxpa2VseSB0byBoYXBwZW4gYmVjYXVzZQorICoJCU5TUFIncyBpbXBsZW1lbnRhdGlvbiBoYXMg YmVlbiBzdGFibGUgZm9yIHllYXJzIGFuZCBiZWNhdXNlIG9mIE5TUFIncworICoJCXN0cm9uZyBj b21taXRtZW50IHRvIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuIgorICoKKyAqIGh0dHBzOi8vZGV2 ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvTW96aWxsYS9Qcm9qZWN0cy9OU1BSL1JlZmVy ZW5jZS9QUl9JbXBvcnRUQ1BTb2NrZXQKKyAqCisgKiBUaGUgZnVuY3Rpb24gaXMgZGVjbGFyZWQg aW4gPHByaXZhdGUvcHByaW8uaD4sIGJ1dCBhcyBpdCBpcyBhIGhlYWRlciBtYXJrZWQKKyAqIHBy aXZhdGUgd2UgZGVjbGFyZSBpdCBoZXJlIHJhdGhlciB0aGFuIGluY2x1ZGluZyBpdC4KKyAqLwor TlNQUl9BUEkoUFJGaWxlRGVzYyAqKSBQUl9JbXBvcnRUQ1BTb2NrZXQoaW50KTsKKworc3RhdGlj IFNFQ01PRE1vZHVsZSAqIGNhX3RydXN0ID0gTlVMTDsKK3N0YXRpYyBOU1NJbml0Q29udGV4dCAq IG5zc19jb250ZXh0ID0gTlVMTDsKKworLyoKKyAqIFRoaXMgbG9naWMgZXhpc3QgaW4gTlNTIGFz IHdlbGwsIGJ1dCBpdCdzIG9ubHkgYXZhaWxhYmxlIGZvciB3aGVuIHRoZXJlIGlzCisgKiBhIGRh dGFiYXNlIHRvIG9wZW4sIGFuZCBub3Qgb25seSB1c2luZyB0aGUgc3lzdGVtIHRydXN0IHN0b3Jl LiBUaHVzLCB3ZQorICogbmVlZCB0byBrZWVwIG91ciBvd24gY29weS4KKyAqLworI2lmIGRlZmlu ZWQoV0lOMzIpCitzdGF0aWMgY29uc3QgY2hhciAqY2FfdHJ1c3RfbmFtZSA9ICJuc3Nja2JpLmRs bCI7CisjZWxpZiBkZWZpbmVkKF9fZGFyd2luX18pCitzdGF0aWMgY29uc3QgY2hhciAqY2FfdHJ1 c3RfbmFtZSA9ICJsaWJuc3Nja2JpLmR5bGliIjsKKyNlbHNlCitzdGF0aWMgY29uc3QgY2hhciAq Y2FfdHJ1c3RfbmFtZSA9ICJsaWJuc3Nja2JpLnNvIjsKKyNlbmRpZgorCitzdGF0aWMgUFFzc2xL ZXlQYXNzSG9va19uc3NfdHlwZSBQUXNzbEtleVBhc3NIb29rID0gTlVMTDsKKworLyogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICov CisvKgkJCSBQcm9jZWR1cmVzIGNvbW1vbiB0byBhbGwgc2VjdXJlIHNlc3Npb25zCQkJKi8KKy8q IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSAqLworCisvKgorICogcGd0bHNfaW5pdF9saWJyYXJ5CisgKgorICogVGhlcmUgaXMgbm8g ZGlyZWN0IGVxdWl2YWxlbnQgZm9yIFBRaW5pdE9wZW5TU0wgaW4gTlNTL05TUFIsIHdpdGggUFJf SW5pdAorICogYmVpbmcgdGhlIGNsb3Nlc3QgbWF0Y2ggdGhlcmUgaXMuIFBSX0luaXQgaXMgaG93 ZXZlciBhbHJlYWR5IGRvY3VtZW50ZWQgdG8KKyAqIG5vdCBiZSByZXF1aXJlZCBzbyBzaW1wbHkg bWFraW5nIHRoaXMgYSBub29wIHNlZW1zIGxpa2UgdGhlIGJlc3Qgb3B0aW9uLgorICovCit2b2lk CitwZ3Rsc19pbml0X2xpYnJhcnkoYm9vbCBkb19zc2wsIGludCBkb19jcnlwdG8pCit7CisJLyog bm9vcCAqLworfQorCitpbnQKK3BndGxzX2luaXQoUEdjb25uICpjb25uKQoreworCWNvbm4tPnNz bF9pbl91c2UgPSBmYWxzZTsKKwljb25uLT5oYXNfcGFzc3dvcmQgPSBmYWxzZTsKKworCXJldHVy biAwOworfQorCit2b2lkCitwZ3Rsc19jbG9zZShQR2Nvbm4gKmNvbm4pCit7CisJaWYgKG5zc19j b250ZXh0KQorCXsKKwkJTlNTX1NodXRkb3duQ29udGV4dChuc3NfY29udGV4dCk7CisJCW5zc19j b250ZXh0ID0gTlVMTDsKKwl9Cit9CisKK1Bvc3RncmVzUG9sbGluZ1N0YXR1c1R5cGUKK3BndGxz X29wZW5fY2xpZW50KFBHY29ubiAqY29ubikKK3sKKwlTRUNTdGF0dXMJc3RhdHVzOworCVBSRmls ZURlc2MgKnByX2ZkOworCVBSRmlsZURlc2MgKm1vZGVsOworCU5TU0luaXRQYXJhbWV0ZXJzIHBh cmFtczsKKwlTU0xWZXJzaW9uUmFuZ2UgZGVzaXJlZF9yYW5nZTsKKworCS8qCisJICogVGhlIE5T UFIgZG9jdW1lbnRhdGlvbiBzdGF0ZXMgdGhhdCBydW50aW1lIGluaXRpYWxpemF0aW9uIHZpYSBQ Ul9Jbml0CisJICogaXMgbm8gbG9uZ2VyIHJlcXVpcmVkLCBhcyB0aGUgZmlyc3QgY2FsbGVyIGlu dG8gTlNQUiB3aWxsIHBlcmZvcm0gdGhlCisJICogaW5pdGlhbGl6YXRpb24gaW1wbGljaXRseS4g U2VlIGJlLXNlY3VyZS1uc3MuYyBmb3IgZnVydGhlciBkaXNjdXNzaW9uCisJICogb24gUFJfSW5p dC4KKwkgKi8KKwlQUl9Jbml0KFBSX1VTRVJfVEhSRUFELCBQUl9QUklPUklUWV9OT1JNQUwsIDAp OworCisJLyoKKwkgKiBOU1MgaW5pdGlhbGl6YXRpb24gYW5kIHRoZSB1c2Ugb2YgY29udGV4dHMg aXMgZnVydGhlciBkaXNjdXNzZWQgaW4KKwkgKiBiZS1zZWN1cmUtbnNzLmMKKwkgKi8KKwltZW1z ZXQoJnBhcmFtcywgMCwgc2l6ZW9mKHBhcmFtcykpOworCXBhcmFtcy5sZW5ndGggPSBzaXplb2Yo cGFyYW1zKTsKKworCWlmIChjb25uLT5jZXJ0X2RhdGFiYXNlICYmIHN0cmxlbihjb25uLT5jZXJ0 X2RhdGFiYXNlKSA+IDApCisJeworCQljaGFyCSAgICpjZXJ0X2RhdGFiYXNlX3BhdGggPSBwc3By aW50Zigic3FsOiVzIiwgY29ubi0+Y2VydF9kYXRhYmFzZSk7CisKKwkJbnNzX2NvbnRleHQgPSBO U1NfSW5pdENvbnRleHQoY2VydF9kYXRhYmFzZV9wYXRoLCAiIiwgIiIsICIiLAorCQkJCQkJCQkJ ICAmcGFyYW1zLAorCQkJCQkJCQkJICBOU1NfSU5JVF9SRUFET05MWSB8IE5TU19JTklUX1BLMTFS RUxPQUQpOworCQlwZnJlZShjZXJ0X2RhdGFiYXNlX3BhdGgpOworCisJCWlmICghbnNzX2NvbnRl eHQpCisJCXsKKwkJCXByaW50ZlBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJCQkJ CQkJICBsaWJwcV9nZXR0ZXh0KCJ1bmFibGUgdG8gb3BlbiBjZXJ0aWZpY2F0ZSBkYXRhYmFzZSBc IiVzXCI6ICVzIiksCisJCQkJCQkJICBjb25uLT5jZXJ0X2RhdGFiYXNlLAorCQkJCQkJCSAgcGdf U1NMZXJybWVzc2FnZShQUl9HZXRFcnJvcigpKSk7CisJCQlyZXR1cm4gUEdSRVNfUE9MTElOR19G QUlMRUQ7CisJCX0KKwl9CisJZWxzZQorCXsKKwkJbnNzX2NvbnRleHQgPSBOU1NfSW5pdENvbnRl eHQoIiIsICIiLCAiIiwgIiIsICZwYXJhbXMsCisJCQkJCQkJCQkgIE5TU19JTklUX1JFQURPTkxZ IHwgTlNTX0lOSVRfTk9DRVJUREIgfAorCQkJCQkJCQkJICBOU1NfSU5JVF9OT01PRERCIHwgTlNT X0lOSVRfRk9SQ0VPUEVOIHwKKwkJCQkJCQkJCSAgTlNTX0lOSVRfTk9ST09USU5JVCB8IE5TU19J TklUX1BLMTFSRUxPQUQpOworCQlpZiAoIW5zc19jb250ZXh0KQorCQl7CisJCQlwcmludGZQUUV4 cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAorCQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgidW5h YmxlIHRvIGNyZWF0ZSBjZXJ0aWZpY2F0ZSBkYXRhYmFzZTogJXMiKSwKKwkJCQkJCQkgIHBnX1NT TGVycm1lc3NhZ2UoUFJfR2V0RXJyb3IoKSkpOworCQkJcmV0dXJuIFBHUkVTX1BPTExJTkdfRkFJ TEVEOworCQl9CisJfQorCisJLyoKKwkgKiBDb25maWd1cmUgY2lwaGVyIHBvbGljeS4KKwkgKi8K KwlzdGF0dXMgPSBOU1NfU2V0RG9tZXN0aWNQb2xpY3koKTsKKwlpZiAoc3RhdHVzICE9IFNFQ1N1 Y2Nlc3MpCisJeworCQlwcmludGZQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAorCQkJ CQkJICBsaWJwcV9nZXR0ZXh0KCJ1bmFibGUgdG8gY29uZmlndXJlIGNpcGhlciBwb2xpY3k6ICVz IiksCisJCQkJCQkgIHBnX1NTTGVycm1lc3NhZ2UoUFJfR2V0RXJyb3IoKSkpOworCisJCXJldHVy biBQR1JFU19QT0xMSU5HX0ZBSUxFRDsKKwl9CisKKwkvKgorCSAqIElmIHdlIGRvbid0IGhhdmUg YSBjZXJ0aWZpY2F0ZSBkYXRhYmFzZSwgdGhlIHN5c3RlbSB0cnVzdCBzdG9yZSBpcyB0aGUKKwkg KiBmYWxsYmFjayB3ZSBjYW4gdXNlLiBJZiB3ZSBmYWlsIHRvIGluaXRpYWxpemUgdGhhdCBhcyB3 ZWxsLCB3ZSBjYW4KKwkgKiBzdGlsbCBhdHRlbXB0IGEgY29ubmVjdGlvbiBhcyBsb25nIGFzIHRo ZSBzc2xtb2RlIGlzbid0IHZlcmlmeSouCisJICovCisJaWYgKCFjb25uLT5jZXJ0X2RhdGFiYXNl ICYmIGNvbm4tPnNzbG1vZGVbMF0gPT0gJ3YnKQorCXsKKwkJc3RhdHVzID0gcGdfbG9hZF9uc3Nf bW9kdWxlKCZjYV90cnVzdCwgY2FfdHJ1c3RfbmFtZSwgIlwiUm9vdCBDZXJ0aWZpY2F0ZXNcIiIp OworCQlpZiAoc3RhdHVzICE9IFNFQ1N1Y2Nlc3MpCisJCXsKKwkJCXByaW50ZlBRRXhwQnVmZmVy KCZjb25uLT5lcnJvck1lc3NhZ2UsCisJCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJXQVJOSU5HOiB1 bmFibGUgdG8gbG9hZCBOU1MgdHJ1c3QgbW9kdWxlIFwiJXNcIiA6ICVzIiksCisJCQkJCQkJICBj YV90cnVzdF9uYW1lLAorCQkJCQkJCSAgcGdfU1NMZXJybWVzc2FnZShQUl9HZXRFcnJvcigpKSk7 CisKKwkJCXJldHVybiBQR1JFU19QT0xMSU5HX0ZBSUxFRDsKKwkJfQorCX0KKworCisJUEsxMV9T ZXRQYXNzd29yZEZ1bmMoUFFzc2xfcGFzc3dkX2NiKTsKKworCS8qCisJICogSW1wb3J0IHRoZSBh bHJlYWR5IG9wZW5lZCBzb2NrZXQgYXMgd2UgZG9uJ3Qgd2FudCB0byB1c2UgTlNQUiBmdW5jdGlv bnMKKwkgKiBmb3Igb3BlbmluZyB0aGUgbmV0d29yayBzb2NrZXQgZHVlIHRvIGhvdyB0aGUgUG9z dGdyZVNRTCBwcm90b2NvbCB3b3JrcworCSAqIHdpdGggVExTIGNvbm5lY3Rpb25zLiBUaGlzIGZ1 bmN0aW9uIGlzIG5vdCBwYXJ0IG9mIHRoZSBOU1BSIHB1YmxpYyBBUEksCisJICogc2VlIHRoZSBj b21tZW50IGF0IHRoZSB0b3Agb2YgdGhlIGZpbGUgZm9yIHRoZSByYXRpb25hbGUgb2Ygc3RpbGwg dXNpbmcKKwkgKiBpdC4KKwkgKi8KKwlwcl9mZCA9IFBSX0ltcG9ydFRDUFNvY2tldChjb25uLT5z b2NrKTsKKwlpZiAoIXByX2ZkKQorCXsKKwkJcHJpbnRmUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9y TWVzc2FnZSwKKwkJCQkJCSAgbGlicHFfZ2V0dGV4dCgidW5hYmxlIHRvIGF0dGFjaCB0byBzb2Nr ZXQ6ICVzIiksCisJCQkJCQkgIHBnX1NTTGVycm1lc3NhZ2UoUFJfR2V0RXJyb3IoKSkpOworCQly ZXR1cm4gUEdSRVNfUE9MTElOR19GQUlMRUQ7CisJfQorCisJLyoKKwkgKiBNb3N0IG9mIHRoZSBk b2N1bWVudGF0aW9uIGF2YWlsYWJsZSwgYW5kIGltcGxlbWVudGF0aW9ucyBvZiwgTlNTL05TUFIK KwkgKiB1c2UgdGhlIFBSX05ld1RDUFNvY2tldCgpIGZ1bmN0aW9uIGhlcmUsIHdoaWNoIGhhcyB0 aGUgZHJhd2JhY2sgdGhhdCBpdAorCSAqIGNhbiBvbmx5IGNyZWF0ZSBJUHY0IHNvY2tldHMuIElu c3RlYWQgdXNlIFBSX09wZW5UQ1BTb2NrZXQoKSB3aGljaAorCSAqIGNvcGVzIHdpdGggSVB2NiBh cyB3ZWxsLgorCSAqLworCW1vZGVsID0gU1NMX0ltcG9ydEZEKE5VTEwsIFBSX09wZW5UQ1BTb2Nr ZXQoY29ubi0+bGFkZHIuYWRkci5zc19mYW1pbHkpKTsKKwlpZiAoIW1vZGVsKQorCXsKKwkJcHJp bnRmUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJCSAgbGlicHFfZ2V0dGV4 dCgidW5hYmxlIHRvIGVuYWJsZSBUTFM6ICVzIiksCisJCQkJCQkgIHBnX1NTTGVycm1lc3NhZ2Uo UFJfR2V0RXJyb3IoKSkpOworCQlyZXR1cm4gUEdSRVNfUE9MTElOR19GQUlMRUQ7CisJfQorCisJ LyogRGlzYWJsZSBvbGQgcHJvdG9jb2wgdmVyc2lvbnMgKFNTTHYyIGFuZCBTU0x2MykgKi8KKwlT U0xfT3B0aW9uU2V0KG1vZGVsLCBTU0xfRU5BQkxFX1NTTDIsIFBSX0ZBTFNFKTsKKwlTU0xfT3B0 aW9uU2V0KG1vZGVsLCBTU0xfVjJfQ09NUEFUSUJMRV9IRUxMTywgUFJfRkFMU0UpOworCVNTTF9P cHRpb25TZXQobW9kZWwsIFNTTF9FTkFCTEVfU1NMMywgUFJfRkFMU0UpOworCisjaWZkZWYgU1NM X0NCQ19SQU5ET01fSVYKKworCS8qCisJICogRW5hYmxlIHByb3RlY3Rpb24gYWdhaW5zdCB0aGUg QkVBU1QgYXR0YWNrIGluIGNhc2UgdGhlIE5TUyBsaWJyYXJ5IGhhcworCSAqIHN1cHBvcnQgZm9y IHRoYXQuIFdoaWxlIFNTTHYzIGlzIGRpc2FibGVkLCB3ZSBtYXkgc3RpbGwgYWxsb3cgVExTdjEK KwkgKiB3aGljaCBpcyBhZmZlY3RlZC4gVGhlIG9wdGlvbiBpc24ndCBkb2N1bWVudGVkIGFzIGFu IFNTTCBvcHRpb24sIGJ1dCBhcworCSAqIGFuIE5TUyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KKwkg Ki8KKwlTU0xfT3B0aW9uU2V0KG1vZGVsLCBTU0xfQ0JDX1JBTkRPTV9JViwgUFJfVFJVRSk7Cisj ZW5kaWYKKworCS8qIFNldCB1cyB1cCBhcyBhIFRMUyBjbGllbnQgZm9yIHRoZSBoYW5kc2hha2Ug Ki8KKwlTU0xfT3B0aW9uU2V0KG1vZGVsLCBTU0xfSEFORFNIQUtFX0FTX0NMSUVOVCwgUFJfVFJV RSk7CisKKwkvKgorCSAqIFdoZW4gc2V0dGluZyB0aGUgYXZhaWxhYmxlIHByb3RvY29scywgd2Ug ZWl0aGVyIHVzZSB0aGUgdXNlciBkZWZpbmVkCisJICogY29uZmlndXJhdGlvbiB2YWx1ZXMsIGFu ZCBpZiBtaXNzaW5nIHdlIGFjY2VwdCB3aGF0ZXZlciBpcyB0aGUgaGlnaGVzdAorCSAqIHZlcnNp b24gc3VwcG9ydGVkIGJ5IHRoZSBsaWJyYXJ5IGFzIHRoZSBtYXggYW5kIG9ubHkgbGltaXQgdGhl IHJhbmdlIGluCisJICogdGhlIG90aGVyIGVuZCBhdCBUTFN2MS4wLiBzc2xfdmFyaWFudF9zdHJl YW0gaXMgYSBQcm90b2NvbFZhcmlhbnQgZW51bQorCSAqIGZvciBTdHJlYW0gcHJvdG9jb2xzLCBy YXRoZXIgdGhhbiBkYXRhZ3JhbS4KKwkgKi8KKwlTU0xfVmVyc2lvblJhbmdlR2V0U3VwcG9ydGVk KHNzbF92YXJpYW50X3N0cmVhbSwgJmRlc2lyZWRfcmFuZ2UpOworCWRlc2lyZWRfcmFuZ2UubWlu ID0gU1NMX0xJQlJBUllfVkVSU0lPTl9UTFNfMV8wOworCisJaWYgKGNvbm4tPnNzbF9taW5fcHJv dG9jb2xfdmVyc2lvbiAmJiBzdHJsZW4oY29ubi0+c3NsX21pbl9wcm90b2NvbF92ZXJzaW9uKSA+ IDApCisJeworCQlpbnQJCQlzc2xfbWluX3ZlciA9IHNzbF9wcm90b2NvbF92ZXJzaW9uX3RvX25z cyhjb25uLT5zc2xfbWluX3Byb3RvY29sX3ZlcnNpb24pOworCisJCWlmIChzc2xfbWluX3ZlciA9 PSAtMSkKKwkJeworCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJ CQkJCQkgIGxpYnBxX2dldHRleHQoImludmFsaWQgdmFsdWUgXCIlc1wiIGZvciBtaW5pbXVtIHZl cnNpb24gb2YgU1NMIHByb3RvY29sXG4iKSwKKwkJCQkJCQkgIGNvbm4tPnNzbF9taW5fcHJvdG9j b2xfdmVyc2lvbik7CisJCQlyZXR1cm4gLTE7CisJCX0KKworCQlkZXNpcmVkX3JhbmdlLm1pbiA9 IHNzbF9taW5fdmVyOworCX0KKworCWlmIChjb25uLT5zc2xfbWF4X3Byb3RvY29sX3ZlcnNpb24g JiYgc3RybGVuKGNvbm4tPnNzbF9tYXhfcHJvdG9jb2xfdmVyc2lvbikgPiAwKQorCXsKKwkJaW50 CQkJc3NsX21heF92ZXIgPSBzc2xfcHJvdG9jb2xfdmVyc2lvbl90b19uc3MoY29ubi0+c3NsX21h eF9wcm90b2NvbF92ZXJzaW9uKTsKKworCQlpZiAoc3NsX21heF92ZXIgPT0gLTEpCisJCXsKKwkJ CXByaW50ZlBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJCQkJCQkJICBsaWJwcV9n ZXR0ZXh0KCJpbnZhbGlkIHZhbHVlIFwiJXNcIiBmb3IgbWF4aW11bSB2ZXJzaW9uIG9mIFNTTCBw cm90b2NvbFxuIiksCisJCQkJCQkJICBjb25uLT5zc2xfbWF4X3Byb3RvY29sX3ZlcnNpb24pOwor CQkJcmV0dXJuIC0xOworCQl9CisKKwkJZGVzaXJlZF9yYW5nZS5tYXggPSBzc2xfbWF4X3ZlcjsK Kwl9CisKKwlpZiAoU1NMX1ZlcnNpb25SYW5nZVNldChtb2RlbCwgJmRlc2lyZWRfcmFuZ2UpICE9 IFNFQ1N1Y2Nlc3MpCisJeworCQlwcmludGZQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdl LAorCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJ1bmFibGUgdG8gc2V0IGFsbG93ZWQgU1NMIHByb3Rv Y29sIHZlcnNpb24gcmFuZ2U6ICVzIiksCisJCQkJCQkgIHBnX1NTTGVycm1lc3NhZ2UoUFJfR2V0 RXJyb3IoKSkpOworCQlyZXR1cm4gUEdSRVNfUE9MTElOR19GQUlMRUQ7CisJfQorCisJLyoKKwkg KiBTZXQgdXAgY2FsbGJhY2sgZm9yIHZlcmlmeWluZyBzZXJ2ZXIgY2VydGlmaWNhdGVzLCBhcyB3 ZWxsIGFzIGZvciBob3cKKwkgKiB0byBoYW5kbGUgZmFpbGVkIHZlcmlmaWNhdGlvbnMuCisJICov CisJU1NMX0F1dGhDZXJ0aWZpY2F0ZUhvb2sobW9kZWwsIHBnX2NlcnRfYXV0aF9oYW5kbGVyLCAo dm9pZCAqKSBjb25uKTsKKwlTU0xfQmFkQ2VydEhvb2sobW9kZWwsIHBnX2JhZF9jZXJ0X2hhbmRs ZXIsICh2b2lkICopIGNvbm4pOworCisJLyoKKwkgKiBDb252ZXJ0IHRoZSBOU1BSIHNvY2tldCB0 byBhbiBTU0wgc29ja2V0LiBFbnN1cmluZyB0aGUgc3VjY2VzcyBvZiB0aGlzCisJICogb3BlcmF0 aW9uIGlzIGNyaXRpY2FsIGFzIE5TUyBTU0xfKiBmdW5jdGlvbnMgbWF5IHJldHVybiBTRUNTdWNj ZXNzIG9uCisJICogdGhlIHNvY2tldCBldmVuIHRob3VnaCBTU0wgaGFzbid0IGJlZW4gZW5hYmxl ZCwgd2hpY2ggaW50cm9kdWNlIGEgcmlzaworCSAqIG9mIHNpbGVudCBkb3duZ3JhZGVzLgorCSAq LworCWNvbm4tPnByX2ZkID0gU1NMX0ltcG9ydEZEKG1vZGVsLCBwcl9mZCk7CisJaWYgKCFjb25u LT5wcl9mZCkKKwl7CisJCXByaW50ZlBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJ CQkJCQkgIGxpYnBxX2dldHRleHQoInVuYWJsZSB0byBjb25maWd1cmUgY2xpZW50IGZvciBUTFM6 ICVzIiksCisJCQkJCQkgIHBnX1NTTGVycm1lc3NhZ2UoUFJfR2V0RXJyb3IoKSkpOworCQlyZXR1 cm4gUEdSRVNfUE9MTElOR19GQUlMRUQ7CisJfQorCisJLyoKKwkgKiBUaGUgbW9kZWwgY2FuIG5v dyB3ZSBjbG9zZWQgYXMgd2UndmUgYXBwbGllZCB0aGUgc2V0dGluZ3Mgb2YgdGhlIG1vZGVsCisJ ICogb250byB0aGUgcmVhbCBzb2NrZXQuIEZyb20gaGVyZW9uIHdlIHNob3VsZCBvbmx5IHVzZSBj b25uLT5wcl9mZC4KKwkgKi8KKwlQUl9DbG9zZShtb2RlbCk7CisKKwkvKiBTZXQgdGhlIHByaXZh dGUgZGF0YSB0byBiZSBwYXNzZWQgdG8gdGhlIHBhc3N3b3JkIGNhbGxiYWNrICovCisJU1NMX1Nl dFBLQ1MxMVBpbkFyZyhjb25uLT5wcl9mZCwgKHZvaWQgKikgY29ubik7CisKKwkvKgorCSAqIElm IGEgQ1JMIGZpbGUgaGFzIGJlZW4gc3BlY2lmaWVkLCB2ZXJpZnkgaWYgaXQgZXhpc3RzIGluIHRo ZSBkYXRhYmFzZQorCSAqIGJ1dCBkb24ndCBmYWlsIGluIGNhc2UgaXQgZG9lc24ndC4KKwkgKi8K KwlpZiAoY29ubi0+c3NsY3JsICYmIHN0cmxlbihjb25uLT5zc2xjcmwpID4gMCkKKwl7CisJCS8q IFhYWDogSW1wbGVtZW50IG1lLi4gKi8KKwl9CisKKwlzdGF0dXMgPSBTU0xfUmVzZXRIYW5kc2hh a2UoY29ubi0+cHJfZmQsIFBSX0ZBTFNFKTsKKwlpZiAoc3RhdHVzICE9IFNFQ1N1Y2Nlc3MpCisJ eworCQlwcmludGZQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAorCQkJCQkJICBsaWJw cV9nZXR0ZXh0KCJ1bmFibGUgdG8gaW5pdGlhdGUgaGFuZHNoYWtlOiAlcyIpLAorCQkJCQkJICBw Z19TU0xlcnJtZXNzYWdlKFBSX0dldEVycm9yKCkpKTsKKwkJcmV0dXJuIFBHUkVTX1BPTExJTkdf RkFJTEVEOworCX0KKworCS8qCisJICogU2V0IGNhbGxiYWNrIGZvciBjbGllbnQgYXV0aGVudGlj YXRpb24gd2hlbiByZXF1ZXN0ZWQgYnkgdGhlIHNlcnZlci4KKwkgKi8KKwlTU0xfR2V0Q2xpZW50 QXV0aERhdGFIb29rKGNvbm4tPnByX2ZkLCBwZ19jbGllbnRfYXV0aF9oYW5kbGVyLCAodm9pZCAq KSBjb25uKTsKKworCS8qCisJICogU3BlY2lmeSB3aGljaCBob3N0bmFtZSB3ZSBhcmUgZXhwZWN0 aW5nIHRvIHRhbGsgdG8uIFRoaXMgaXMgcmVxdWlyZWQsCisJICogYWxiZWl0IG1vc3RseSBhcHBs aWVzIHRvIHdoZW4gb3BlbmluZyBhIGNvbm5lY3Rpb24gdG8gYSB0cmFkaXRpb25hbAorCSAqIGh0 dHAgc2VydmVyIGl0IHNlZW1zLgorCSAqLworCVNTTF9TZXRVUkwoY29ubi0+cHJfZmQsIChjb25u LT5jb25uaG9zdFtjb25uLT53aGljaGhvc3RdKS5ob3N0KTsKKworCWRvCisJeworCQlzdGF0dXMg PSBTU0xfRm9yY2VIYW5kc2hha2UoY29ubi0+cHJfZmQpOworCX0KKwl3aGlsZSAoc3RhdHVzICE9 IFNFQ1N1Y2Nlc3MgJiYgUFJfR2V0RXJyb3IoKSA9PSBQUl9XT1VMRF9CTE9DS19FUlJPUik7CisK KwlpZiAoc3RhdHVzICE9IFNFQ1N1Y2Nlc3MpCisJeworCQlwcmludGZQUUV4cEJ1ZmZlcigmY29u bi0+ZXJyb3JNZXNzYWdlLAorCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJTU0wgZXJyb3I6ICVzIiks CisJCQkJCQkgIHBnX1NTTGVycm1lc3NhZ2UoUFJfR2V0RXJyb3IoKSkpOworCQlyZXR1cm4gUEdS RVNfUE9MTElOR19GQUlMRUQ7CisJfQorCisJY29ubi0+c3NsX2luX3VzZSA9IHRydWU7CisJcmV0 dXJuIFBHUkVTX1BPTExJTkdfT0s7Cit9CisKK3NzaXplX3QKK3BndGxzX3JlYWQoUEdjb25uICpj b25uLCB2b2lkICpwdHIsIHNpemVfdCBsZW4pCit7CisJUFJJbnQzMgkJbnJlYWQ7CisJUFJFcnJv ckNvZGUgc3RhdHVzOworCWludAkJCXJlYWRfZXJybm8gPSAwOworCisJLyoKKwkgKiBQUl9SZWN2 IGJsb2NrcyB1bnRpbCB0aGVyZSBpcyBkYXRhIHRvIHJlYWQgb3IgdGhlIHRpbWVvdXQgZXhwaXJl cy4gV2UKKwkgKiBkb24ndCB3YW50IHRvIHNpdCBibG9ja2VkIGhlcmUsIHNvIHRoZSB0aW1lb3V0 IGlzIHR1cm5lZCBvZmYgYnkgdXNpbmcKKwkgKiBQUl9JTlRFUlZBTF9OT19XQUlUIHdoaWNoIG1l YW5zICJyZXR1cm4gaW1tZWRpYXRlbHkiLCAgWmVybyBpcyByZXR1cm5lZAorCSAqIGZvciBjbG9z ZWQgY29ubmVjdGlvbnMsIHdoaWxlIC0xIGluZGljYXRlcyBhbiBlcnJvciB3aXRoaW4gdGhlIG9u Z29pbmcKKwkgKiBjb25uZWN0aW9uLgorCSAqLworCW5yZWFkID0gUFJfUmVjdihjb25uLT5wcl9m ZCwgcHRyLCBsZW4sIDAsIFBSX0lOVEVSVkFMX05PX1dBSVQpOworCisJaWYgKG5yZWFkID09IDAp CisJeworCQlyZWFkX2Vycm5vID0gRUNPTk5SRVNFVDsKKwkJbnJlYWQgPSAtMTsKKwl9CisJZWxz ZSBpZiAobnJlYWQgPT0gLTEpCisJeworCQlzdGF0dXMgPSBQUl9HZXRFcnJvcigpOworCisJCXN3 aXRjaCAoc3RhdHVzKQorCQl7CisJCQljYXNlIFBSX0lPX1RJTUVPVVRfRVJST1I6CisJCQkJLyog Tm8gZGF0YSBhdmFpbGFibGUgeWV0LiAqLworCQkJCW5yZWFkID0gMDsKKwkJCQlicmVhazsKKwor CQkJY2FzZSBQUl9XT1VMRF9CTE9DS19FUlJPUjoKKwkJCQlyZWFkX2Vycm5vID0gRVdPVUxEQkxP Q0s7CisJCQkJYnJlYWs7CisKKwkJCQkvKgorCQkJCSAqIFRoZSBlcnJvciBjYXNlcyBmb3IgUFJf UmVjdiBhcmUgbm90IGRvY3VtZW50ZWQsIGJ1dCBjYW4gYmUKKwkJCQkgKiByZXZlcnNlIGVuZ2lu ZWVyZWQgZnJvbSBfTURfdW5peF9tYXBfZGVmYXVsdF9lcnJvcigpIGluIHRoZQorCQkJCSAqIE5T UFIgY29kZSwgZGVmaW5lZCBpbiBwci9zcmMvbWQvdW5peC91bml4X2Vycm9ycy5jLgorCQkJCSAq LworCQkJY2FzZSBQUl9ORVRXT1JLX1VOUkVBQ0hBQkxFX0VSUk9SOgorCQkJY2FzZSBQUl9DT05O RUNUX1JFU0VUX0VSUk9SOgorCQkJCXJlYWRfZXJybm8gPSBFQ09OTlJFU0VUOworCQkJCWJyZWFr OworCisJCQlkZWZhdWx0OgorCQkJCWJyZWFrOworCQl9CisKKwkJaWYgKG5yZWFkID09IC0xKQor CQl7CisJCQlwcmludGZQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAorCQkJCQkJCSAg bGlicHFfZ2V0dGV4dCgiVExTIHJlYWQgZXJyb3I6ICVzIiksCisJCQkJCQkJICBwZ19TU0xlcnJt ZXNzYWdlKHN0YXR1cykpOworCQl9CisJfQorCisJU09DS19FUlJOT19TRVQocmVhZF9lcnJubyk7 CisJcmV0dXJuIChzc2l6ZV90KSBucmVhZDsKK30KKworLyoKKyAqIHBndGxzX3JlYWRfcGVuZGlu ZworICoJCUNoZWNrIGZvciB0aGUgZXhpc3RlbmNlIG9mIGRhdGEgdG8gYmUgcmVhZC4KKyAqCisg KiBUaGlzIGlzIHBhcnQgb2YgdGhlIFBvc3RncmVTUUwgVExTIGJhY2tlbmQgQVBJLgorICovCiti b29sCitwZ3Rsc19yZWFkX3BlbmRpbmcoUEdjb25uICpjb25uKQoreworCXVuc2lnbmVkIGNoYXIg YzsKKwlpbnQJCQluOworCisJLyoKKwkgKiBQUl9SZWN2IHBlZWtzIGludG8gdGhlIHN0cmVhbSB3 aXRoIHRoZSB0aW1lb3VudCB0dXJuZWQgb2ZmLCB0byBzZWUgaWYKKwkgKiB0aGVyZSBpcyBhbm90 aGVyIGJ5dGUgdG8gcmVhZCBvZmYgdGhlIHdpcmUuIFRoZXJlIGlzIGFuIE5TUyBmdW5jdGlvbgor CSAqIFNTTF9EYXRhUGVuZGluZygpIHdoaWNoIG1pZ2h0IHNlZW0gbGlrZSBhIGJldHRlciBmaXQs IGJ1dCBpdCB3aWxsIG9ubHkKKwkgKiBjaGVjayBhbHJlYWR5IGVuY3J5cHRlZCBkYXRhIGluIHRo ZSBTU0wgYnVmZmVyLCBub3Qgc3RpbGwgdW5lbmNyeXB0ZWQKKwkgKiBkYXRhLCB0aHVzIGl0IGRv ZXNuJ3QgZ3VhcmFudGVlIHRoYXQgYSBzdWJzZXF1ZW50IGNhbGwgdG8KKwkgKiBQUl9SZWFkL1BS X1JlY3Ygd29uJ3QgYmxvY2suCisJICovCisJbiA9IFBSX1JlY3YoY29ubi0+cHJfZmQsICZjLCAx LCBQUl9NU0dfUEVFSywgUFJfSU5URVJWQUxfTk9fV0FJVCk7CisJcmV0dXJuIChuID4gMCk7Cit9 CisKK3NzaXplX3QKK3BndGxzX3dyaXRlKFBHY29ubiAqY29ubiwgY29uc3Qgdm9pZCAqcHRyLCBz aXplX3QgbGVuKQoreworCVBSSW50MzIJCW47CisJUFJFcnJvckNvZGUgc3RhdHVzOworCWludAkJ CXdyaXRlX2Vycm5vID0gMDsKKworCW4gPSBQUl9Xcml0ZShjb25uLT5wcl9mZCwgcHRyLCBsZW4p OworCisJaWYgKG4gPCAwKQorCXsKKwkJc3RhdHVzID0gUFJfR2V0RXJyb3IoKTsKKworCQlzd2l0 Y2ggKHN0YXR1cykKKwkJeworCQkJY2FzZSBQUl9XT1VMRF9CTE9DS19FUlJPUjoKKyNpZmRlZiBF QUdBSU4KKwkJCQl3cml0ZV9lcnJubyA9IEVBR0FJTjsKKyNlbHNlCisJCQkJd3JpdGVfZXJybm8g PSBFSU5UUjsKKyNlbmRpZgorCQkJCWJyZWFrOworCisJCQlkZWZhdWx0OgorCQkJCXByaW50ZlBR RXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJCQkJCQkJCSAgbGlicHFfZ2V0dGV4dCgi VExTIHdyaXRlIGVycm9yOiAlcyIpLAorCQkJCQkJCQkgIHBnX1NTTGVycm1lc3NhZ2Uoc3RhdHVz KSk7CisJCQkJd3JpdGVfZXJybm8gPSBFQ09OTlJFU0VUOworCQkJCWJyZWFrOworCQl9CisJfQor CisJU09DS19FUlJOT19TRVQod3JpdGVfZXJybm8pOworCXJldHVybiAoc3NpemVfdCkgbjsKK30K KworY2hhciAqCitwZ3Rsc19nZXRfcGVlcl9jZXJ0aWZpY2F0ZV9oYXNoKFBHY29ubiAqY29ubiwg c2l6ZV90ICpsZW4pCit7CisJQ0VSVENlcnRpZmljYXRlICpzZXJ2ZXJfY2VydDsKKwlTRUNPaWRU YWcJc2lnbmF0dXJlX2FsZzsKKwlTRUNPaWRUYWcJZGlnZXN0X2FsZzsKKwlpbnQJCQlkaWdlc3Rf bGVuOworCWNvbnN0IE5TU1NpZ25hdHVyZUFsZ29yaXRobXMgKmNhbmRpZGF0ZTsKKwlQTEFyZW5h UG9vbCAqYXJlbmE7CisJU0VDSXRlbQkJZGlnZXN0OworCWNoYXIJICAgKnJldDsKKwlTRUNTdGF0 dXMJc3RhdHVzOworCisJKmxlbiA9IDA7CisKKwlzZXJ2ZXJfY2VydCA9IFNTTF9QZWVyQ2VydGlm aWNhdGUoY29ubi0+cHJfZmQpOworCWlmICghc2VydmVyX2NlcnQpCisJCXJldHVybiBOVUxMOwor CisJc2lnbmF0dXJlX2FsZyA9IFNFQ09JRF9HZXRBbGdvcml0aG1UYWcoJnNlcnZlcl9jZXJ0LT5z aWduYXR1cmUpOworCisJY2FuZGlkYXRlID0gTlNTX1NDUkFNRGlnZXN0QWxnb3JpdGhtOworCXdo aWxlIChjYW5kaWRhdGUtPnNpZ25hdHVyZSkKKwl7CisJCWlmIChzaWduYXR1cmVfYWxnID09IGNh bmRpZGF0ZS0+c2lnbmF0dXJlKQorCQl7CisJCQlkaWdlc3RfYWxnID0gY2FuZGlkYXRlLT5oYXNo OworCQkJZGlnZXN0X2xlbiA9IGNhbmRpZGF0ZS0+bGVuOworCQkJYnJlYWs7CisJCX0KKworCQlj YW5kaWRhdGUrKzsKKwl9CisKKwlpZiAoIWNhbmRpZGF0ZS0+c2lnbmF0dXJlKQorCXsKKwkJcHJp bnRmUFFFeHBCdWZmZXIoJmNvbm4tPmVycm9yTWVzc2FnZSwKKwkJCQkJCSAgbGlicHFfZ2V0dGV4 dCgiY291bGQgbm90IGZpbmQgZGlnZXN0IGZvciBPSUQgJyVzJ1xuIiksCisJCQkJCQkgIFNFQ09J RF9GaW5kT0lEVGFnRGVzY3JpcHRpb24oc2lnbmF0dXJlX2FsZykpOworCQlyZXR1cm4gTlVMTDsK Kwl9CisKKwlhcmVuYSA9IFBPUlRfTmV3QXJlbmEoU0VDX0FTTjFfREVGQVVMVF9BUkVOQV9TSVpF KTsKKwlkaWdlc3QuZGF0YSA9IFBPUlRfQXJlbmFaQWxsb2MoYXJlbmEsIHNpemVvZih1bnNpZ25l ZCBjaGFyKSAqIGRpZ2VzdF9sZW4pOworCWRpZ2VzdC5sZW4gPSBkaWdlc3RfbGVuOworCisJc3Rh dHVzID0gUEsxMV9IYXNoQnVmKGRpZ2VzdF9hbGcsIGRpZ2VzdC5kYXRhLCBzZXJ2ZXJfY2VydC0+ ZGVyQ2VydC5kYXRhLAorCQkJCQkJICBzZXJ2ZXJfY2VydC0+ZGVyQ2VydC5sZW4pOworCisJaWYg KHN0YXR1cyAhPSBTRUNTdWNjZXNzKQorCXsKKwkJcHJpbnRmUFFFeHBCdWZmZXIoJmNvbm4tPmVy cm9yTWVzc2FnZSwKKwkJCQkJCSAgbGlicHFfZ2V0dGV4dCgidW5hYmxlIHRvIGdlbmVyYXRlIHBl ZXIgY2VydGlmaWNhdGUgZGlnZXN0OiAlcyIpLAorCQkJCQkJICBwZ19TU0xlcnJtZXNzYWdlKFBS X0dldEVycm9yKCkpKTsKKwkJUE9SVF9GcmVlQXJlbmEoYXJlbmEsIFBSX1RSVUUpOworCQlyZXR1 cm4gTlVMTDsKKwl9CisKKwlyZXQgPSBwZ19tYWxsb2MoZGlnZXN0Lmxlbik7CisJbWVtY3B5KHJl dCwgZGlnZXN0LmRhdGEsIGRpZ2VzdC5sZW4pOworCSpsZW4gPSBkaWdlc3RfbGVuOworCVBPUlRf RnJlZUFyZW5hKGFyZW5hLCBQUl9UUlVFKTsKKworCXJldHVybiByZXQ7Cit9CisKKy8qCisgKglW ZXJpZnkgdGhhdCB0aGUgc2VydmVyIGNlcnRpZmljYXRlIG1hdGNoZXMgdGhlIGhvc3RuYW1lIHdl IGNvbm5lY3RlZCB0by4KKyAqCisgKiBUaGUgY2VydGlmaWNhdGUncyBDb21tb24gTmFtZSBhbmQg U3ViamVjdCBBbHRlcm5hdGl2ZSBOYW1lcyBhcmUgY29uc2lkZXJlZC4KKyAqLworaW50CitwZ3Rs c192ZXJpZnlfcGVlcl9uYW1lX21hdGNoZXNfY2VydGlmaWNhdGVfZ3V0cyhQR2Nvbm4gKmNvbm4s CisJCQkJCQkJCQkJCQlpbnQgKm5hbWVzX2V4YW1pbmVkLAorCQkJCQkJCQkJCQkJY2hhciAqKmZp cnN0X25hbWUpCit7CisJY2hhcgkgICAqc2VydmVyX2hvc3RuYW1lID0gTlVMTDsKKwlDRVJUQ2Vy dGlmaWNhdGUgKnNlcnZlcl9jZXJ0ID0gTlVMTDsKKwlTRUNTdGF0dXMJc3RhdHVzID0gU0VDU3Vj Y2VzczsKKwlTRUNJdGVtCQlhbHRuYW1lX2l0ZW07CisJUExBcmVuYVBvb2wgKmFyZW5hID0gTlVM TDsKKwlDRVJUR2VuZXJhbE5hbWUgKnNhbl9saXN0OworCUNFUlRHZW5lcmFsTmFtZSAqY247CisK KwlzZXJ2ZXJfaG9zdG5hbWUgPSBTU0xfUmV2ZWFsVVJMKGNvbm4tPnByX2ZkKTsKKwlpZiAoIXNl cnZlcl9ob3N0bmFtZSB8fCBzZXJ2ZXJfaG9zdG5hbWVbMF0gPT0gJ1wwJykKKwkJZ290byBkb25l OworCisJLyoKKwkgKiBDRVJUX1ZlcmlmeUNlcnROYW1lIHdpbGwgaW50ZXJuYWxseSBwZXJmb3Jt IFJGQyAyODE4IFN1YmplY3RBbHROYW1lCisJICogdmVyaWZpY2F0aW9uLgorCSAqLworCXNlcnZl cl9jZXJ0ID0gU1NMX1BlZXJDZXJ0aWZpY2F0ZShjb25uLT5wcl9mZCk7CisJc3RhdHVzID0gQ0VS VF9WZXJpZnlDZXJ0TmFtZShzZXJ2ZXJfY2VydCwgc2VydmVyX2hvc3RuYW1lKTsKKwlpZiAoc3Rh dHVzICE9IFNFQ1N1Y2Nlc3MpCisJeworCQlwcmludGZQUUV4cEJ1ZmZlcigmY29ubi0+ZXJyb3JN ZXNzYWdlLAorCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJ1bmFibGUgdG8gdmVyaWZ5IHNlcnZlciBo b3N0bmFtZTogJXMiKSwKKwkJCQkJCSAgcGdfU1NMZXJybWVzc2FnZShQUl9HZXRFcnJvcigpKSk7 CisJCWdvdG8gZG9uZTsKKwl9CisKKwlzdGF0dXMgPSBDRVJUX0ZpbmRDZXJ0RXh0ZW5zaW9uKHNl cnZlcl9jZXJ0LCBTRUNfT0lEX1g1MDlfU1VCSkVDVF9BTFRfTkFNRSwKKwkJCQkJCQkJCSZhbHRu YW1lX2l0ZW0pOworCWlmIChzdGF0dXMgPT0gU0VDU3VjY2VzcykKKwl7CisJCWFyZW5hID0gUE9S VF9OZXdBcmVuYShERVJfREVGQVVMVF9DSFVOS1NJWkUpOworCQlpZiAoIWFyZW5hKQorCQl7CisJ CQlzdGF0dXMgPSBTRUNGYWlsdXJlOworCQkJZ290byBkb25lOworCQl9CisJCXNhbl9saXN0ID0g Q0VSVF9EZWNvZGVBbHROYW1lRXh0ZW5zaW9uKGFyZW5hLCAmYWx0bmFtZV9pdGVtKTsKKwkJaWYg KCFzYW5fbGlzdCkKKwkJeworCQkJc3RhdHVzID0gU0VDRmFpbHVyZTsKKwkJCWdvdG8gZG9uZTsK KwkJfQorCisJCWZvciAoY24gPSBzYW5fbGlzdDsgY24gIT0gc2FuX2xpc3Q7IGNuID0gQ0VSVF9H ZXROZXh0R2VuZXJhbE5hbWUoY24pKQorCQl7CisJCQljaGFyCSAgICphbHRfbmFtZTsKKwkJCWlu dAkJCXJ2OworCQkJY2hhcgkJdG1wWzUxMl07CisKKwkJCXN0YXR1cyA9IENFUlRfUkZDMTQ4NV9F c2NhcGVBbmRRdW90ZSh0bXAsIHNpemVvZih0bXApLAorCQkJCQkJCQkJCQkJIChjaGFyICopIGNu LT5uYW1lLm90aGVyLmRhdGEsCisJCQkJCQkJCQkJCQkgY24tPm5hbWUub3RoZXIubGVuKTsKKwor CQkJaWYgKHN0YXR1cyAhPSBTRUNTdWNjZXNzKQorCQkJCWdvdG8gZG9uZTsKKworCQkJcnYgPSBw cV92ZXJpZnlfcGVlcl9uYW1lX21hdGNoZXNfY2VydGlmaWNhdGVfbmFtZShjb25uLCB0bXAsCisJ CQkJCQkJCQkJCQkJCQkgIHN0cmxlbih0bXApLAorCQkJCQkJCQkJCQkJCQkJICAmYWx0X25hbWUp OworCQkJaWYgKGFsdF9uYW1lKQorCQkJeworCQkJCWlmICghKmZpcnN0X25hbWUpCisJCQkJCSpm aXJzdF9uYW1lID0gYWx0X25hbWU7CisJCQkJZWxzZQorCQkJCQlmcmVlKGFsdF9uYW1lKTsKKwkJ CX0KKworCQkJaWYgKHJ2ID09IDEpCisJCQkJc3RhdHVzID0gU0VDU3VjY2VzczsKKwkJCWVsc2UK KwkJCXsKKwkJCQlzdGF0dXMgPSBTRUNGYWlsdXJlOworCQkJCWJyZWFrOworCQkJfQorCQl9CisJ fQorCWVsc2UgaWYgKFBPUlRfR2V0RXJyb3IoKSA9PSBTRUNfRVJST1JfRVhURU5TSU9OX05PVF9G T1VORCkKKwkJc3RhdHVzID0gU0VDU3VjY2VzczsKKwllbHNlCisJCXN0YXR1cyA9IFNFQ1N1Y2Nl c3M7CisKK2RvbmU6CisJLyogc2FuX2xpc3Qgd2lsbCBiZSBmcmVlZCBieSBmcmVlaW5nIHRoZSBh cmVuYSBpdCB3YXMgYWxsb2NhdGVkIGluICovCisJaWYgKGFyZW5hKQorCQlQT1JUX0ZyZWVBcmVu YShhcmVuYSwgUFJfVFJVRSk7CisJUFJfRnJlZShzZXJ2ZXJfaG9zdG5hbWUpOworCisJaWYgKHN0 YXR1cyA9PSBTRUNTdWNjZXNzKQorCQlyZXR1cm4gMTsKKworCXJldHVybiAwOworfQorCisvKiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0gKi8KKy8qCQkJUG9zdGdyZVNRTCBzcGVjaWZpYyBUTFMgc3VwcG9ydCBmdW5jdGlvbnMJCQkq LworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tICovCisKK3N0YXRpYyBjb25zdCBjaGFyICoKK3BnX1NTTGVycm1lc3NhZ2UoUFJF cnJvckNvZGUgZXJyY29kZSkKK3sKKwljb25zdCBjaGFyICplcnJvcjsKKworCS8qCisJICogVHJ5 IHRvIGdldCB0aGUgdXNlciBmcmllbmRseSBlcnJvciBkZXNjcmlwdGlvbiwgYW5kIGlmIHRoYXQg ZmFpbHMgdHJ5CisJICogdG8gZmFsbCBiYWNrIG9uIHRoZSBuYW1lIG9mIHRoZSBQUkVycm9yQ29k ZS4KKwkgKi8KKwllcnJvciA9IFBSX0Vycm9yVG9TdHJpbmcoZXJyY29kZSwgUFJfTEFOR1VBR0Vf SV9ERUZBVUxUKTsKKwlpZiAoIWVycm9yKQorCQllcnJvciA9IFBSX0Vycm9yVG9OYW1lKGVycmNv ZGUpOworCWlmIChlcnJvcikKKwkJcmV0dXJuIGVycm9yOworCisJcmV0dXJuICJ1bmtub3duIFRM UyBlcnJvciI7Cit9CisKK3N0YXRpYyBTRUNTdGF0dXMKK3BnX2xvYWRfbnNzX21vZHVsZShTRUNN T0RNb2R1bGUgKiAqbW9kdWxlLCBjb25zdCBjaGFyICpsaWJyYXJ5LCBjb25zdCBjaGFyICpuYW1l KQoreworCVNFQ01PRE1vZHVsZSAqbW9kOworCWNoYXIJICAgKm1vZHVsZXNwZWM7CisKKwltb2R1 bGVzcGVjID0gcHNwcmludGYoImxpYnJhcnk9XCIlc1wiLCBuYW1lPVwiJXNcIiIsIGxpYnJhcnks IG5hbWUpOworCisJLyoKKwkgKiBBdHRlbXB0IHRvIGxvYWQgdGhlIHNwZWNpZmllZCBtb2R1bGUu IFRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzICJwYXJlbnQiCisJICogd2hpY2ggc2hvdWxkIGFsd2F5 cyBiZSBOVUxMIGZvciBhcHBsaWNhdGlvbiBjb2RlLiBUaGUgdGhpcmQgcGFyYW1ldGVyCisJICog ZGVmaW5lcyBpZiBsb2FkaW5nIHNob3VsZCByZWN1cnNlIHdoaWNoIGlzIG9ubHkgYXBwbGljYWJs ZSB3aGVuIGxvYWRpbmcKKwkgKiBhIG1vZHVsZSBmcm9tIHdpdGhpbiBhbm90aGVyIG1vZHVsZS4g VGhpcyBoaWVyYXJjaHkgd291bGQgaGF2ZSB0byBiZQorCSAqIGRlZmluZWQgaW4gdGhlIG1vZHVs ZXNwZWMsIGFuZCBzaW5jZSB3ZSBkb24ndCBzdXBwb3J0IGFueXRoaW5nIGJ1dAorCSAqIGRpcmVj dGx5IGFkZHJlc3NlZCBtb2R1bGVzIHdlIHNob3VsZCBwYXNzIFBSX0ZBTFNFLgorCSAqLworCW1v ZCA9IFNFQ01PRF9Mb2FkVXNlck1vZHVsZShtb2R1bGVzcGVjLCBOVUxMLCBQUl9GQUxTRSk7CisJ cGZyZWUobW9kdWxlc3BlYyk7CisKKwlpZiAobW9kICYmIG1vZC0+bG9hZGVkKQorCXsKKwkJKm1v ZHVsZSA9IG1vZDsKKwkJcmV0dXJuIFNFQ1N1Y2Nlc3M7CisJfQorCisJU0VDTU9EX0Rlc3Ryb3lN b2R1bGUobW9kKTsKKwlyZXR1cm4gU0VDRmFpbHVyZTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKgkJCQkJ CU5TUyBDYWxsYmFja3MJCQkJCQkJKi8KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisvKgorICogcGdfY2VydF9hdXRo X2hhbmRsZXIKKyAqCQkJQ2FsbGJhY2sgZm9yIGF1dGhlbnRpY2F0aW5nIHNlcnZlciBjZXJ0aWZp Y2F0ZQorICoKKyAqIFRoaXMgaXMgcHJldHR5IG11Y2ggdGhlIHNhbWUgcHJvY2VkdXJlIGFzIHRo ZSBTU0xfQXV0aENlcnRpZmljYXRlIGZ1bmN0aW9uCisgKiBwcm92aWRlZCBieSBOU1MsIHdpdGgg dGhlIGRpZmZlcmVuY2UgYmVpbmcgc2VydmVyIGhvc3RuYW1lIHZhbGlkYXRpb24uIFdpdGgKKyAq IFNTTF9BdXRoQ2VydGlmaWNhdGUgdGhlcmUgaXMgbm8gd2F5IHRvIGRvIHZlcmlmeS1jYSwgaXQg b25seSBkb2VzIHRoZSAtZnVsbAorICogZmxhdm9yIG9mIG91ciBzc2xtb2Rlcywgc28gd2UgbmVl ZCBvdXIgb3duIGltcGxlbWVudGF0aW9uLgorICovCitzdGF0aWMgU0VDU3RhdHVzCitwZ19jZXJ0 X2F1dGhfaGFuZGxlcih2b2lkICphcmcsIFBSRmlsZURlc2MgKmZkLCBQUkJvb2wgY2hlY2tzaWcs IFBSQm9vbCBpc1NlcnZlcikKK3sKKwlTRUNTdGF0dXMJc3RhdHVzOworCVBHY29ubgkgICAqY29u biA9IChQR2Nvbm4gKikgYXJnOworCUNFUlRDZXJ0aWZpY2F0ZSAqc2VydmVyX2NlcnQ7CisJdm9p ZAkgICAqcGluOworCisJQXNzZXJ0KCFpc1NlcnZlcik7CisKKwlwaW4gPSBTU0xfUmV2ZWFsUGlu QXJnKGNvbm4tPnByX2ZkKTsKKwlzZXJ2ZXJfY2VydCA9IFNTTF9QZWVyQ2VydGlmaWNhdGUoY29u bi0+cHJfZmQpOworCisJc3RhdHVzID0gQ0VSVF9WZXJpZnlDZXJ0aWZpY2F0ZU5vdygoQ0VSVENl cnREQkhhbmRsZSAqKSBDRVJUX0dldERlZmF1bHRDZXJ0REIoKSwKKwkJCQkJCQkJCSAgIHNlcnZl cl9jZXJ0LAorCQkJCQkJCQkJICAgY2hlY2tzaWcsCisJCQkJCQkJCQkgICBjZXJ0aWZpY2F0ZVVz YWdlU1NMU2VydmVyLAorCQkJCQkJCQkJICAgcGluLAorCQkJCQkJCQkJICAgTlVMTCk7CisKKwkv KgorCSAqIElmIHdlJ3ZlIGFscmVhZHkgZmFpbGVkIHZhbGlkYXRpb24gdGhlbiB0aGVyZSBpcyBu byBwb2ludCBpbiBhbHNvCisJICogcGVyZm9ybWluZyB0aGUgaG9zdG5hbWUgY2hlY2sgZm9yIHZl cmlmeS1mdWxsLgorCSAqLworCWlmIChzdGF0dXMgPT0gU0VDU3VjY2VzcykKKwl7CisJCWlmICgh cHFfdmVyaWZ5X3BlZXJfbmFtZV9tYXRjaGVzX2NlcnRpZmljYXRlKGNvbm4pKQorCQkJc3RhdHVz ID0gU0VDRmFpbHVyZTsKKwl9CisJZWxzZQorCXsKKwkJcHJpbnRmUFFFeHBCdWZmZXIoJmNvbm4t PmVycm9yTWVzc2FnZSwKKwkJCQkJCSAgbGlicHFfZ2V0dGV4dCgidW5hYmxlIHRvIHZlcmlmeSBj ZXJ0aWZpY2F0ZTogJXMiKSwKKwkJCQkJCSAgcGdfU1NMZXJybWVzc2FnZShQUl9HZXRFcnJvcigp KSk7CisJfQorCisJcmV0dXJuIHN0YXR1czsKK30KKworLyoKKyAqIHBnX2NsaWVudF9hdXRoX2hh bmRsZXIKKyAqCQlDYWxsYmFjayBmb3IgY2xpZW50IGNlcnRpZmljYXRlIHZhbGlkYXRpb24KKyAq CisgKiBUaGUgY2xpZW50IGF1dGggY2FsbGJhY2sgaXMgbm90IG9uIGJ5IGRlZmF1bHQgaW4gTlNT LCBzbyB3ZSBuZWVkIHRvIGludm9rZQorICogaXQgb3Vyc2VsdmVzIHRvIGVuc3VyZSB3ZSBjYW4g ZG8gY2VydCBhdXRoZW50aWNhdGlvbi4gQSBUT0RPIGlzIHRvIHN1cHBvcnQKKyAqIHJ1bm5pbmcg d2l0aG91dCBhIHNwZWNpZmllZCBzc2xjZXJ0IHBhcmFtZXRlci4gQnkgcmV0cmlldmluZyBhbGwg dGhlIGNlcnRzCisgKiB2aWEgbmlja25hbWUgZnJvbSB0aGUgY2VydCBkYXRhYmFzZSBhbmQgc2Vl IGlmIHdlIGZpbmQgb25lIHdoaWNoIGFwcGx5IHdpdGgKKyAqIE5TU19DbXBDZXJ0Q2hhaW5XQ0FO YW1lcygpIGFuZCBQSzExX0ZpbmRLZXlCeUFueUNlcnQoKSB3ZSBjb3VsZCBzdXBwb3J0CisgKiBq dXN0IHJ1bm5pbmcgd2l0aCBhIHNzbCBkYXRhYmFzZSBzcGVjaWZpZWQuCisgKgorICogRm9yIG5v dywgd2UgdXNlIHRoZSBkZWZhdWx0IGNsaWVudCBjZXJ0aWZpY2F0ZSB2YWxpZGF0aW9uIHdoaWNo IHJlcXVpcmVzIGEKKyAqIGRlZmluZWQgbmlja25hbWUgdG8gaWRlbnRpZnkgdGhlIGNlcnQgaW4g dGhlIGRhdGFiYXNlLgorICovCitzdGF0aWMgU0VDU3RhdHVzCitwZ19jbGllbnRfYXV0aF9oYW5k bGVyKHZvaWQgKmFyZywgUFJGaWxlRGVzYyAqIHNvY2tldCwgQ0VSVERpc3ROYW1lcyAqIGNhTmFt ZXMsCisJCQkJCSAgIENFUlRDZXJ0aWZpY2F0ZSAqICpwUmV0Q2VydCwgU0VDS0VZUHJpdmF0ZUtl eSAqICpwUmV0S2V5KQoreworCVBHY29ubgkgICAqY29ubiA9IChQR2Nvbm4gKikgYXJnOworCisJ cmV0dXJuIE5TU19HZXRDbGllbnRBdXRoRGF0YShjb25uLT5zc2xjZXJ0LCBzb2NrZXQsIGNhTmFt ZXMsIHBSZXRDZXJ0LCBwUmV0S2V5KTsKK30KKworLyoKKyAqIHBnX2JhZF9jZXJ0X2hhbmRsZXIK KyAqCQlDYWxsYmFjayBmb3IgZmFpbGVkIGNlcnRpZmljYXRlIHZhbGlkYXRpb24KKyAqCisgKiBU aGUgVExTIGhhbmRzaGFrZSB3aWxsIGNhbGwgdGhpcyBmdW5jdGlvbiBpZmYgdGhlIHNlcnZlciBj ZXJ0aWZpY2F0ZSBmYWlsZWQKKyAqIHZhbGlkYXRpb24uIERlcGVuZGluZyBvbiB0aGUgc3NsbW9k ZSwgd2UgYWxsb3cgdGhlIGNvbm5lY3Rpb24gYW55d2F5cy4KKyAqLworc3RhdGljIFNFQ1N0YXR1 cworcGdfYmFkX2NlcnRfaGFuZGxlcih2b2lkICphcmcsIFBSRmlsZURlc2MgKiBmZCkKK3sKKwlQ R2Nvbm4JICAgKmNvbm4gPSAoUEdjb25uICopIGFyZzsKKwlQUkVycm9yQ29kZSBlcnI7CisKKwkv KgorCSAqIFRoaXMgcmVhbGx5IHNob3VsZG4ndCBoYXBwZW4sIGFzIHdlJ3ZlIHNldCB0aGUgUEdj b25uIG9iamVjdCBhcyBvdXIKKwkgKiBjYWxsYmFjayBkYXRhLCBhbmQgYXQgdGhlIGNhbGxzaXRl IHdlIGtub3cgaXQgd2lsbCBiZSBwb3B1bGF0ZWQuIFRoYXQKKwkgKiBiZWluZyBzYWlkLCB0aGUg TlNTIGNvZGUgaXRzZWxmIHBlcmZvcm1zIHRoaXMgY2hlY2sgZXZlbiB3aGVuIGl0IHNob3VsZAor CSAqIG5vdCBiZSByZXF1aXJlZCBzbyBsZXQncyB1c2UgdGhlIHNhbWUgYmVsdHMgd2l0aCBvdXIg c3VzcGVuZGVycy4KKwkgKi8KKwlpZiAoIWFyZykKKwkJcmV0dXJuIFNFQ0ZhaWx1cmU7CisKKwkv KgorCSAqIEZvciBzc2xtb2RlcyBvdGhlciB0aGFuIHZlcmlmeS1mdWxsIGFuZCB2ZXJpZnktY2Eg d2UgZG9uJ3QgcGVyZm9ybSBwZWVyCisJICogdmFsaWRhdGlvbiwgc28gcmV0dXJuIGltbWVkaWF0 ZWx5LiAgc3NsbW9kZSByZXF1aXJlIHdpdGggYSBkYXRhYmFzZQorCSAqIHNwZWNpZmllZCB3aGlj aCBjb250YWlucyBhIENBIGNlcnRpZmljYXRlIHdpbGwgd29yayBsaWtlIHZlcmlmeS1jYSB0bwor CSAqIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgT3BlblNTTCBpbXBsZW1lbnRhdGlvbi4KKwkgKi8K KwlpZiAoc3RyY21wKGNvbm4tPnNzbG1vZGUsICJyZXF1aXJlIikgPT0gMCkKKwl7CisJCWlmIChj b25uLT5jZXJ0X2RhdGFiYXNlICYmIHN0cmxlbihjb25uLT5jZXJ0X2RhdGFiYXNlKSA+IDAgJiYg Y2VydF9kYXRhYmFzZV9oYXNfQ0EoY29ubikpCisJCQlyZXR1cm4gU0VDRmFpbHVyZTsKKwl9CisJ aWYgKGNvbm4tPnNzbG1vZGVbMF0gPT0gJ3YnKQorCQlyZXR1cm4gU0VDRmFpbHVyZTsKKworCWVy ciA9IFBPUlRfR2V0RXJyb3IoKTsKKworCS8qCisJICogVE9ETzogdGhlc2UgYXJlIHJlbGV2YW50 IGVycm9yIGNvZGVzIHRoYXQgY2FuIG9jY3VyIGluIGNlcnRpZmljYXRlCisJICogdmFsaWRhdGlv biwgZmlndXJlIG91dCB3aGljaCB3ZSBkb24ndCB3YW50IGZvciByZXF1aXJlL3ByZWZlciBldGMu CisJICovCisJc3dpdGNoIChlcnIpCisJeworCQljYXNlIFNFQ19FUlJPUl9JTlZBTElEX0FWQToK KwkJY2FzZSBTRUNfRVJST1JfSU5WQUxJRF9USU1FOgorCQljYXNlIFNFQ19FUlJPUl9CQURfU0lH TkFUVVJFOgorCQljYXNlIFNFQ19FUlJPUl9FWFBJUkVEX0NFUlRJRklDQVRFOgorCQljYXNlIFNF Q19FUlJPUl9VTktOT1dOX0lTU1VFUjoKKwkJY2FzZSBTRUNfRVJST1JfVU5UUlVTVEVEX0lTU1VF UjoKKwkJY2FzZSBTRUNfRVJST1JfVU5UUlVTVEVEX0NFUlQ6CisJCWNhc2UgU0VDX0VSUk9SX0NF UlRfVkFMSUQ6CisJCWNhc2UgU0VDX0VSUk9SX0VYUElSRURfSVNTVUVSX0NFUlRJRklDQVRFOgor CQljYXNlIFNFQ19FUlJPUl9DUkxfRVhQSVJFRDoKKwkJY2FzZSBTRUNfRVJST1JfQ1JMX0JBRF9T SUdOQVRVUkU6CisJCWNhc2UgU0VDX0VSUk9SX0VYVEVOU0lPTl9WQUxVRV9JTlZBTElEOgorCQlj YXNlIFNFQ19FUlJPUl9DQV9DRVJUX0lOVkFMSUQ6CisJCWNhc2UgU0VDX0VSUk9SX0NFUlRfVVNB R0VTX0lOVkFMSUQ6CisJCWNhc2UgU0VDX0VSUk9SX1VOS05PV05fQ1JJVElDQUxfRVhURU5TSU9O OgorCQkJcmV0dXJuIFNFQ1N1Y2Nlc3M7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCXJldHVy biBTRUNGYWlsdXJlOworCQkJYnJlYWs7CisJfQorCisJLyogVW5yZWFjaGFibGUgKi8KKwlyZXR1 cm4gU0VDU3VjY2VzczsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKgkJCQkJU1NMIGluZm9ybWF0aW9uIGZ1 bmN0aW9ucwkJCQkJKi8KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisvKgorICogUFFnZXRzc2wKKyAqCisgKiBSZXR1 cm4gTlVMTCBhcyB0aGlzIGlzIGxlZ2FjeSBhbmQgZGVmaW5lZCB0byBhbHdheXMgYmUgZXF1YWwg dG8gY2FsbGluZworICogUFFzc2xTdHJ1Y3QoY29ubiwgIk9wZW5TU0wiKTsgVGhpcyBzaG91bGQg aWRlYWxseSB0cmlnZ2VyIGEgbG9nZ2VkIHdhcm5pbmcKKyAqIHNvbWV3aGVyZSBhcyBpdCdzIG5v bnNlbnNpY2FsIHRvIHJ1biBpbiBhIG5vbi1PcGVuU1NMIGJ1aWxkLCBidXQgdGhlIGNvbG9yCisg KiBvZiBzYWlkIGJpa2VzaGVkIGhhc24ndCB5ZXQgYmVlbiBkZXRlcm1pbmVkLgorICovCit2b2lk ICoKK1BRZ2V0c3NsKFBHY29ubiAqY29ubikKK3sKKwlyZXR1cm4gTlVMTDsKK30KKwordm9pZCAq CitQUXNzbFN0cnVjdChQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKnN0cnVjdF9uYW1lKQorewor CWlmICghY29ubikKKwkJcmV0dXJuIE5VTEw7CisKKwkvKgorCSAqIFJldHVybiB0aGUgdW5kZXJs eWluZyBQUkZpbGVEZXNjIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGFjY2VzcworCSAqIGluZm9ybWF0 aW9uIG9uIHRoZSBjb25uZWN0aW9uIGRldGFpbHMuIFRoZXJlIGlzIG5vIFNTTCBjb250ZXh0IHBl ciBzZS4KKwkgKi8KKwlpZiAoc3RyY21wKHN0cnVjdF9uYW1lLCAiTlNTIikgPT0gMCkKKwkJcmV0 dXJuIGNvbm4tPnByX2ZkOworCXJldHVybiBOVUxMOworfQorCitjb25zdCBjaGFyICpjb25zdCAq CitQUXNzbEF0dHJpYnV0ZU5hbWVzKFBHY29ubiAqY29ubikKK3sKKwlzdGF0aWMgY29uc3QgY2hh ciAqY29uc3QgcmVzdWx0W10gPSB7CisJCSJsaWJyYXJ5IiwKKwkJImNpcGhlciIsCisJCSJwcm90 b2NvbCIsCisJCSJrZXlfYml0cyIsCisJCSJjb21wcmVzc2lvbiIsCisJCU5VTEwKKwl9OworCisJ cmV0dXJuIHJlc3VsdDsKK30KKworY29uc3QgY2hhciAqCitQUXNzbEF0dHJpYnV0ZShQR2Nvbm4g KmNvbm4sIGNvbnN0IGNoYXIgKmF0dHJpYnV0ZV9uYW1lKQoreworCVNFQ1N0YXR1cwlzdGF0dXM7 CisJU1NMQ2hhbm5lbEluZm8gY2hhbm5lbDsKKwlTU0xDaXBoZXJTdWl0ZUluZm8gc3VpdGU7CisK KwlpZiAoIWNvbm4gfHwgIWNvbm4tPnByX2ZkKQorCQlyZXR1cm4gTlVMTDsKKworCWlmIChzdHJj bXAoYXR0cmlidXRlX25hbWUsICJsaWJyYXJ5IikgPT0gMCkKKwkJcmV0dXJuICJOU1MiOworCisJ c3RhdHVzID0gU1NMX0dldENoYW5uZWxJbmZvKGNvbm4tPnByX2ZkLCAmY2hhbm5lbCwgc2l6ZW9m KGNoYW5uZWwpKTsKKwlpZiAoc3RhdHVzICE9IFNFQ1N1Y2Nlc3MpCisJCXJldHVybiBOVUxMOwor CisJc3RhdHVzID0gU1NMX0dldENpcGhlclN1aXRlSW5mbyhjaGFubmVsLmNpcGhlclN1aXRlLCAm c3VpdGUsIHNpemVvZihzdWl0ZSkpOworCWlmIChzdGF0dXMgIT0gU0VDU3VjY2VzcykKKwkJcmV0 dXJuIE5VTEw7CisKKwlpZiAoc3RyY21wKGF0dHJpYnV0ZV9uYW1lLCAiY2lwaGVyIikgPT0gMCkK KwkJcmV0dXJuIHN1aXRlLmNpcGhlclN1aXRlTmFtZTsKKworCWlmIChzdHJjbXAoYXR0cmlidXRl X25hbWUsICJrZXlfYml0cyIpID09IDApCisJeworCQlzdGF0aWMgY2hhciBrZXlfYml0c19zdHJb OF07CisKKwkJc25wcmludGYoa2V5X2JpdHNfc3RyLCBzaXplb2Yoa2V5X2JpdHNfc3RyKSwgIiVp Iiwgc3VpdGUuZWZmZWN0aXZlS2V5Qml0cyk7CisJCXJldHVybiBrZXlfYml0c19zdHI7CisJfQor CisJaWYgKHN0cmNtcChhdHRyaWJ1dGVfbmFtZSwgInByb3RvY29sIikgPT0gMCkKKwl7CisJCXN3 aXRjaCAoY2hhbm5lbC5wcm90b2NvbFZlcnNpb24pCisJCXsKKyNpZmRlZiBTU0xfTElCUkFSWV9W RVJTSU9OX1RMU18xXzMKKwkJCWNhc2UgU1NMX0xJQlJBUllfVkVSU0lPTl9UTFNfMV8zOgorCQkJ CXJldHVybiAiVExTdjEuMyI7CisjZW5kaWYKKyNpZmRlZiBTU0xfTElCUkFSWV9WRVJTSU9OX1RM U18xXzIKKwkJCWNhc2UgU1NMX0xJQlJBUllfVkVSU0lPTl9UTFNfMV8yOgorCQkJCXJldHVybiAi VExTdjEuMiI7CisjZW5kaWYKKyNpZmRlZiBTU0xfTElCUkFSWV9WRVJTSU9OX1RMU18xXzEKKwkJ CWNhc2UgU1NMX0xJQlJBUllfVkVSU0lPTl9UTFNfMV8xOgorCQkJCXJldHVybiAiVExTdjEuMSI7 CisjZW5kaWYKKwkJCWNhc2UgU1NMX0xJQlJBUllfVkVSU0lPTl9UTFNfMV8wOgorCQkJCXJldHVy biAiVExTdjEuMCI7CisJCQlkZWZhdWx0OgorCQkJCXJldHVybiAidW5rbm93biI7CisJCX0KKwl9 CisKKwkvKgorCSAqIE5TUyBkaXNhYmxlZCBzdXBwb3J0IGZvciBjb21wcmVzc2lvbiBpbiB2ZXJz aW9uIDMuMzMsIGFuZCBpdCB3YXMgb25seQorCSAqIGF2YWlsYWJsZSBmb3IgU1NMdjMgYXQgdGhh dCBwb2ludCBhbnl3YXlzLCBzbyB3ZSBjYW4gc2FmZWx5IHJldHVybiBvZmYKKwkgKiBoZXJlIHdp dGhvdXQgY2hlY2tpbmcuCisJICovCisJaWYgKHN0cmNtcChhdHRyaWJ1dGVfbmFtZSwgImNvbXBy ZXNzaW9uIikgPT0gMCkKKwkJcmV0dXJuICJvZmYiOworCisJcmV0dXJuIE5VTEw7Cit9CisKK3N0 YXRpYyBpbnQKK3NzbF9wcm90b2NvbF92ZXJzaW9uX3RvX25zcyhjb25zdCBjaGFyICpwcm90b2Nv bCkKK3sKKwlpZiAocGdfc3RyY2FzZWNtcCgiVExTdjEiLCBwcm90b2NvbCkgPT0gMCkKKwkJcmV0 dXJuIFNTTF9MSUJSQVJZX1ZFUlNJT05fVExTXzFfMDsKKworI2lmZGVmIFNTTF9MSUJSQVJZX1ZF UlNJT05fVExTXzFfMQorCWlmIChwZ19zdHJjYXNlY21wKCJUTFN2MS4xIiwgcHJvdG9jb2wpID09 IDApCisJCXJldHVybiBTU0xfTElCUkFSWV9WRVJTSU9OX1RMU18xXzE7CisjZW5kaWYKKworI2lm ZGVmIFNTTF9MSUJSQVJZX1ZFUlNJT05fVExTXzFfMgorCWlmIChwZ19zdHJjYXNlY21wKCJUTFN2 MS4yIiwgcHJvdG9jb2wpID09IDApCisJCXJldHVybiBTU0xfTElCUkFSWV9WRVJTSU9OX1RMU18x XzI7CisjZW5kaWYKKworI2lmZGVmIFNTTF9MSUJSQVJZX1ZFUlNJT05fVExTXzFfMworCWlmIChw Z19zdHJjYXNlY21wKCJUTFN2MS4zIiwgcHJvdG9jb2wpID09IDApCisJCXJldHVybiBTU0xfTElC UkFSWV9WRVJTSU9OX1RMU18xXzM7CisjZW5kaWYKKworCXJldHVybiAtMTsKK30KKworLyoKKyAq IGNlcnRfZGF0YWJhc2VfaGFzX0NBCisgKgorICogUmV0dXJucyB0cnVlIGluIGNhc2UgdGhlcmUg aXMgYSBDQSBjZXJ0aWZpY2F0ZSBpbiB0aGUgZGF0YWJhc2UgY29ubmVjdGVkCisgKiB0byBpbiB0 aGUgY29ubiBvYmplY3QsIGVsc2UgZmFsc2UuIFRoaXMgZnVuY3Rpb24gb25seSBjaGVja3MgZm9y IHRoZQorICogcHJlc2VuY2Ugb2YgYSBDQSBjZXJ0aWZpY2F0ZSwgbm90IGl0J3MgdmFsaWRpdHkg YW5kL29yIHVzZWZ1bG5lc3MuCisgKi8KK3N0YXRpYyBib29sCitjZXJ0X2RhdGFiYXNlX2hhc19D QShQR2Nvbm4gKmNvbm4pCit7CisJQ0VSVENlcnRMaXN0ICpjZXJ0aWZpY2F0ZXM7CisJYm9vbAkJ aGFzQ0E7CisKKwkvKgorCSAqIElmIHRoZSBjZXJ0aWZpY2F0ZSBkYXRhYmFzZSBoYXMgYSBwYXNz d29yZCB3ZSBtdXN0IHByb3ZpZGUgaXQsIHNpbmNlCisJICogdGhpcyBBUEkgZG9lc24ndCBpbnZv a2UgdGhlIHN0YW5kYXJkIHBhc3N3b3JkIGNhbGxiYWNrLgorCSAqLworCWlmIChjb25uLT5oYXNf cGFzc3dvcmQpCisJCWNlcnRpZmljYXRlcyA9IFBLMTFfTGlzdENlcnRzKFBLMTFDZXJ0TGlzdENB LCBQUXNzbF9wYXNzd2RfY2IoTlVMTCwgUFJfRkFMU0UsICh2b2lkICopIGNvbm4pKTsKKwllbHNl CisJCWNlcnRpZmljYXRlcyA9IFBLMTFfTGlzdENlcnRzKFBLMTFDZXJ0TGlzdENBLCBOVUxMKTsK KwloYXNDQSA9ICFDRVJUX0xJU1RfRU1QVFkoY2VydGlmaWNhdGVzKTsKKwlDRVJUX0Rlc3Ryb3lD ZXJ0TGlzdChjZXJ0aWZpY2F0ZXMpOworCisJcmV0dXJuIGhhc0NBOworfQorCitQUXNzbEtleVBh c3NIb29rX25zc190eXBlCitQUWdldFNTTEtleVBhc3NIb29rX25zcyh2b2lkKQoreworCXJldHVy biBQUXNzbEtleVBhc3NIb29rOworfQorCit2b2lkCitQUXNldFNTTEtleVBhc3NIb29rX25zcyhQ UXNzbEtleVBhc3NIb29rX25zc190eXBlIGhvb2spCit7CisJUFFzc2xLZXlQYXNzSG9vayA9IGhv b2s7Cit9CisKKy8qCisgKiBTdXBwbHkgYSBwYXNzd29yZCB0byBkZWNyeXB0IGEgY2xpZW50IGNl cnRpZmljYXRlLgorICoKKyAqIFRoaXMgbXVzdCBtYXRjaCBOU1MgdHlwZSBQSzExUGFzc3dvcmRG dW5jLgorICovCitzdGF0aWMgY2hhciAqCitQUXNzbF9wYXNzd2RfY2IoUEsxMVNsb3RJbmZvICpz bG90LCBQUkJvb2wgcmV0cnksIHZvaWQgKmFyZykKK3sKKwlQR2Nvbm4JICAgKmNvbm4gPSAoUEdj b25uICopIGFyZzsKKworCWNvbm4tPmhhc19wYXNzd29yZCA9IHRydWU7CisKKwlpZiAoUFFzc2xL ZXlQYXNzSG9vaykKKwkJcmV0dXJuIFBRc3NsS2V5UGFzc0hvb2soc2xvdCwgKFBSQm9vbCkgcmV0 cnksIGFyZyk7CisJZWxzZQorCQlyZXR1cm4gUFFkZWZhdWx0U1NMS2V5UGFzc0hvb2tfbnNzKHNs b3QsIHJldHJ5LCBhcmcpOworfQorCisvKgorICogVGhlIGRlZmF1bHQgcGFzc3dvcmQgaGFuZGxl ciBjYWxsYmFjay4KKyAqLworY2hhciAqCitQUWRlZmF1bHRTU0xLZXlQYXNzSG9va19uc3MoUEsx MVNsb3RJbmZvICogc2xvdCwgUFJCb29sIHJldHJ5LCB2b2lkICphcmcpCit7CisJUEdjb25uCSAg ICpjb25uID0gKFBHY29ubiAqKSBhcmc7CisKKwkvKgorCSAqIElmIHRoZSBwYXNzd29yZCBkaWRu J3Qgd29yayB0aGUgZmlyc3QgdGltZSB0aGVyZSBpcyBubyBwb2ludCBpbgorCSAqIHJldHJ5aW5n IGFzIGl0IGhhc24ndCBjaGFuZ2VkLgorCSAqLworCWlmIChyZXRyeSAhPSBQUl9UUlVFICYmIGNv bm4tPnNzbHBhc3N3b3JkICYmIHN0cmxlbihjb25uLT5zc2xwYXNzd29yZCkgPiAwKQorCQlyZXR1 cm4gUE9SVF9TdHJkdXAoY29ubi0+c3NscGFzc3dvcmQpOworCisJcmV0dXJuIE5VTEw7Cit9CmRp ZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1zZWN1cmUuYyBiL3NyYy9pbnRlcmZh Y2VzL2xpYnBxL2ZlLXNlY3VyZS5jCmluZGV4IDY3YjFlNzg1MTIuLjBhMWU0N2M1YTIgMTAwNjQ0 Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXNlY3VyZS5jCisrKyBiL3NyYy9pbnRlcmZh Y2VzL2xpYnBxL2ZlLXNlY3VyZS5jCkBAIC00MjcsNiArNDI3LDkgQEAgUFFzc2xBdHRyaWJ1dGVO YW1lcyhQR2Nvbm4gKmNvbm4pCiAKIAlyZXR1cm4gcmVzdWx0OwogfQorI2VuZGlmCQkJCQkJCS8q IFVTRV9TU0wgKi8KKworI2lmbmRlZiBVU0VfT1BFTlNTTAogCiBQUXNzbEtleVBhc3NIb29rX09w ZW5TU0xfdHlwZQogUFFnZXRTU0xLZXlQYXNzSG9va19PcGVuU1NMKHZvaWQpCkBAIC00NDUsNyAr NDQ4LDcgQEAgUFFkZWZhdWx0U1NMS2V5UGFzc0hvb2tfT3BlblNTTChjaGFyICpidWYsIGludCBz aXplLCBQR2Nvbm4gKmNvbm4pCiB7CiAJcmV0dXJuIDA7CiB9Ci0jZW5kaWYJCQkJCQkJLyogVVNF X1NTTCAqLworI2VuZGlmCQkJCQkJCS8qIFVTRV9PUEVOU1NMICovCiAKIC8qIER1bW15IHZlcnNp b24gb2YgR1NTQVBJIGluZm9ybWF0aW9uIGZ1bmN0aW9ucywgd2hlbiBidWlsdCB3aXRob3V0IEdT UyBzdXBwb3J0ICovCiAjaWZuZGVmIEVOQUJMRV9HU1MKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZh Y2VzL2xpYnBxL2xpYnBxLWZlLmggYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1mZS5oCmlu ZGV4IGMyNjZhZDViMTMuLmFiYTMyZTY2MzUgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xp YnBxL2xpYnBxLWZlLmgKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtZmUuaApAQCAt NjE5LDEyICs2MTksMjMgQEAgZXh0ZXJuIGludAlwZ192YWxpZF9zZXJ2ZXJfZW5jb2RpbmdfaWQo aW50IGVuY29kaW5nKTsKIAogLyogPT09IGluIGZlLXNlY3VyZS1vcGVuc3NsLmMgPT09ICovCiAK LS8qIFN1cHBvcnQgZm9yIG92ZXJyaWRpbmcgc3NscGFzc3dvcmQgaGFuZGxpbmcgd2l0aCBhIGNh bGxiYWNrLiAqLworLyogU3VwcG9ydCBmb3Igb3ZlcnJpZGluZyBzc2xwYXNzd29yZCBoYW5kbGlu ZyB3aXRoIGEgY2FsbGJhY2sgKi8KIHR5cGVkZWYgaW50ICgqUFFzc2xLZXlQYXNzSG9va19PcGVu U1NMX3R5cGUpIChjaGFyICpidWYsIGludCBzaXplLCBQR2Nvbm4gKmNvbm4pOwogZXh0ZXJuIFBR c3NsS2V5UGFzc0hvb2tfT3BlblNTTF90eXBlIFBRZ2V0U1NMS2V5UGFzc0hvb2tfT3BlblNTTCh2 b2lkKTsKIGV4dGVybiB2b2lkIFBRc2V0U1NMS2V5UGFzc0hvb2tfT3BlblNTTChQUXNzbEtleVBh c3NIb29rX09wZW5TU0xfdHlwZSBob29rKTsKIGV4dGVybiBpbnQJUFFkZWZhdWx0U1NMS2V5UGFz c0hvb2tfT3BlblNTTChjaGFyICpidWYsIGludCBzaXplLCBQR2Nvbm4gKmNvbm4pOwogCisvKiA9 PSBpbiBmZS1zZWN1cmUtbnNzLmMgPT09ICovCit0eXBlZGVmIHN0cnVjdCBQSzExU2xvdEluZm9T dHIgUEsxMVNsb3RJbmZvOwordHlwZWRlZiBpbnQgUFJJbnRuOwordHlwZWRlZiBQUkludG4gUFJC b29sOworCisvKiBTdXBwb3J0IGZvciBvdmVycmlkaW5nIHNzbHBhc3N3b3JkIGhhbmRsaW5nIHdp dGggYSBjYWxsYmFjayAqLwordHlwZWRlZiBjaGFyICooKlBRc3NsS2V5UGFzc0hvb2tfbnNzX3R5 cGUpIChQSzExU2xvdEluZm8gKnNsb3QsIFBSQm9vbCByZXRyeSwgdm9pZCAqYXJnKTsKK2V4dGVy biBQUXNzbEtleVBhc3NIb29rX25zc190eXBlIFBRZ2V0U1NMS2V5UGFzc0hvb2tfbnNzKHZvaWQp OworZXh0ZXJuIHZvaWQgUFFzZXRTU0xLZXlQYXNzSG9va19uc3MoUFFzc2xLZXlQYXNzSG9va19u c3NfdHlwZSBob29rKTsKK2V4dGVybiBjaGFyICpQUWRlZmF1bHRTU0xLZXlQYXNzSG9va19uc3Mo UEsxMVNsb3RJbmZvICpzbG90LCBQUkJvb2wgcmV0cnksIHZvaWQgKmFyZyk7CisKICNpZmRlZiBf X2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9s aWJwcS1pbnQuaCBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWludC5oCmluZGV4IDRkYjQ5 ODM2OWMuLmE5NTQ1MGZiYmEgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBx LWludC5oCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWludC5oCkBAIC0zNjIsNiAr MzYyLDcgQEAgc3RydWN0IHBnX2Nvbm4KIAljaGFyCSAgICpzc2xwYXNzd29yZDsJLyogY2xpZW50 IGtleSBmaWxlIHBhc3N3b3JkICovCiAJY2hhcgkgICAqc3Nscm9vdGNlcnQ7CS8qIHJvb3QgY2Vy dGlmaWNhdGUgZmlsZW5hbWUgKi8KIAljaGFyCSAgICpzc2xjcmw7CQkJLyogY2VydGlmaWNhdGUg cmV2b2NhdGlvbiBsaXN0IGZpbGVuYW1lICovCisJY2hhcgkgICAqY2VydF9kYXRhYmFzZTsJLyog TlNTIGNlcnRpZmljYXRlL2tleSBkYXRhYmFzZSAqLwogCWNoYXIJICAgKnJlcXVpcmVwZWVyOwkv KiByZXF1aXJlZCBwZWVyIGNyZWRlbnRpYWxzIGZvciBsb2NhbCBzb2NrZXRzICovCiAJY2hhcgkg ICAqZ3NzZW5jbW9kZTsJCS8qIEdTUyBtb2RlIChyZXF1aXJlLHByZWZlcixkaXNhYmxlKSAqLwog CWNoYXIJICAgKmtyYnNydm5hbWU7CQkvKiBLZXJiZXJvcyBzZXJ2aWNlIG5hbWUgKi8KQEAgLTQ4 NSw2ICs0ODYsMjMgQEAgc3RydWN0IHBnX2Nvbm4KIAkJCQkJCQkJICogT3BlblNTTCB2ZXJzaW9u IGNoYW5nZXMgKi8KICNlbmRpZgogI2VuZGlmCQkJCQkJCS8qIFVTRV9PUEVOU1NMICovCisKKyNp ZmRlZiBVU0VfTlNTCisJdm9pZAkgICAqcHJfZmQ7CQkJLyogTlNQUiBmaWxlIGRlc2NyaXB0b3Ig Zm9yIHRoZSBjb25uZWN0aW9uICovCisKKwkvKgorCSAqIFRyYWNrIHdoZXRoZXIgdGhlIE5TUyBk YXRhYmFzZSBoYXMgYSBwYXNzd29yZCBzZXQgb3Igbm90LiBUaGVyZSBpcyBubworCSAqIEFQSSBm dW5jdGlvbiBmb3IgcmV0cmlldmluZyBwYXNzd29yZCBzdGF0dXMgb2YgYSBkYXRhYmFzZSwgYnV0 IHdlIG5lZWQKKwkgKiB0byBrbm93IHNpbmNlIHNvbWUgTlNTIEFQSSBjYWxscyByZXF1aXJlIHRo ZSBwYXNzd29yZCBwYXNzZWQgaW4gKHRoZXkKKwkgKiBkb24ndCBjYWxsIHRoZSBjYWxsYmFjayB0 aGVtc2VsdmVzKS4gVG8gdHJhY2ssIHdlIHNpbXBseSBmbGlwIHRoaXMgdG8KKwkgKiB0cnVlIGlu IGNhc2UgTlNTIGludm9rZWQgdGhlIHBhc3N3b3JkIGNhbGxiYWNrIC0gYXMgdGhhdCB3aWxsIG9u bHkKKwkgKiBoYXBwZW4gaW4gY2FzZSB0aGVyZSBpcyBhIHBhc3N3b3JkLiBUaGUgcmVhc29uIGZv ciB0cmFja2luZyB0aGlzIGlzCisJICogdGhhdCB0aGVyZSBhcmUgY2FsbHMgd2hpY2ggcmVxdWly ZSBhIHBhc3N3b3JkIHBhcmFtZXRlciwgYnV0IGRvZXNuJ3QKKwkgKiB1c2UgdGhlIGNhbGxiYWNr cyBwcm92aWRlZCwgc28gd2UgbXVzdCBjYWxsIHRoZSBjYWxsYmFjayBvbiBiZWhhbGYgb2YKKwkg KiB0aGVzZS4KKwkgKi8KKwlib29sCQloYXNfcGFzc3dvcmQ7CisjZW5kaWYJCQkJCQkJLyogVVNF X05TUyAqLwogI2VuZGlmCQkJCQkJCS8qIFVTRV9TU0wgKi8KIAogI2lmZGVmIEVOQUJMRV9HU1MK QEAgLTc1OSw3ICs3NzcsNyBAQCBleHRlcm4gc3NpemVfdCBwZ3Rsc193cml0ZShQR2Nvbm4gKmNv bm4sIGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90IGxlbik7CiAgKiBUaGlzIGlzIG5vdCBzdXBwb3J0 ZWQgd2l0aCBvbGQgdmVyc2lvbnMgb2YgT3BlblNTTCB0aGF0IGRvbid0IGhhdmUKICAqIHRoZSBY NTA5X2dldF9zaWduYXR1cmVfbmlkKCkgZnVuY3Rpb24uCiAgKi8KLSNpZiBkZWZpbmVkKFVTRV9P UEVOU1NMKSAmJiBkZWZpbmVkKEhBVkVfWDUwOV9HRVRfU0lHTkFUVVJFX05JRCkKKyNpZiBkZWZp bmVkKFVTRV9OU1MpIHx8IChkZWZpbmVkKFVTRV9PUEVOU1NMKSAmJiBkZWZpbmVkKEhBVkVfWDUw OV9HRVRfU0lHTkFUVVJFX05JRCkpCiAjZGVmaW5lIEhBVkVfUEdUTFNfR0VUX1BFRVJfQ0VSVElG SUNBVEVfSEFTSAogZXh0ZXJuIGNoYXIgKnBndGxzX2dldF9wZWVyX2NlcnRpZmljYXRlX2hhc2go UEdjb25uICpjb25uLCBzaXplX3QgKmxlbik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy90b29s cy9tc3ZjL01rdmNidWlsZC5wbSBiL3NyYy90b29scy9tc3ZjL01rdmNidWlsZC5wbQppbmRleCA1 NjM0YjJkNDBjLi5hMjFlYjA4OGIzIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvbXN2Yy9Na3ZjYnVp bGQucG0KKysrIGIvc3JjL3Rvb2xzL21zdmMvTWt2Y2J1aWxkLnBtCkBAIC0xOTQsMTIgKzE5NCwx OSBAQCBzdWIgbWt2Y2J1aWxkCiAJJHBvc3RncmVzLT5GdWxsRXhwb3J0RExMKCdwb3N0Z3Jlcy5s aWInKTsKIAogCSMgVGhlIE9CSlMgc2NyYXBlciBkb2Vzbid0IGtub3cgYWJvdXQgaWZkZWZzLCBz byByZW1vdmUgYXBwcm9wcmlhdGUgZmlsZXMKLQkjIGlmIGJ1aWxkaW5nIHdpdGhvdXQgT3BlblNT TC4KLQlpZiAoISRzb2x1dGlvbi0+e29wdGlvbnN9LT57b3BlbnNzbH0pCisJIyBpZiBidWlsZGlu ZyB3aXRob3V0IHZhcmlvdXMgb3B0aW9ucy4KKwlpZiAoISRzb2x1dGlvbi0+e29wdGlvbnN9LT57 b3BlbnNzbH0gJiYgISRzb2x1dGlvbi0+e29wdGlvbnN9LT57bnNzfSkKIAl7CiAJCSRwb3N0Z3Jl cy0+UmVtb3ZlRmlsZSgnc3JjL2JhY2tlbmQvbGlicHEvYmUtc2VjdXJlLWNvbW1vbi5jJyk7CisJ fQorCWlmICghJHNvbHV0aW9uLT57b3B0aW9uc30tPntvcGVuc3NsfSkKKwl7CiAJCSRwb3N0Z3Jl cy0+UmVtb3ZlRmlsZSgnc3JjL2JhY2tlbmQvbGlicHEvYmUtc2VjdXJlLW9wZW5zc2wuYycpOwog CX0KKwlpZiAoISRzb2x1dGlvbi0+e29wdGlvbnN9LT57bnNzfSkKKwl7CisJCSRwb3N0Z3Jlcy0+ UmVtb3ZlRmlsZSgnc3JjL2JhY2tlbmQvbGlicHEvYmUtc2VjdXJlLW5zcy5jJyk7CisJfQogCWlm ICghJHNvbHV0aW9uLT57b3B0aW9uc30tPntnc3N9KQogCXsKIAkJJHBvc3RncmVzLT5SZW1vdmVG aWxlKCdzcmMvYmFja2VuZC9saWJwcS9iZS1nc3NhcGktY29tbW9uLmMnKTsKQEAgLTI1NywxMiAr MjY0LDE5IEBAIHN1YiBta3ZjYnVpbGQKIAkkbGlicHEtPkFkZFJlZmVyZW5jZSgkbGlicGdjb21t b24sICRsaWJwZ3BvcnQpOwogCiAJIyBUaGUgT0JKUyBzY3JhcGVyIGRvZXNuJ3Qga25vdyBhYm91 dCBpZmRlZnMsIHNvIHJlbW92ZSBhcHByb3ByaWF0ZSBmaWxlcwotCSMgaWYgYnVpbGRpbmcgd2l0 aG91dCBPcGVuU1NMLgotCWlmICghJHNvbHV0aW9uLT57b3B0aW9uc30tPntvcGVuc3NsfSkKKwkj IGlmIGJ1aWxkaW5nIHdpdGhvdXQgdmFyaW91cyBvcHRpb25zCisJaWYgKCEkc29sdXRpb24tPntv cHRpb25zfS0+e29wZW5zc2x9ICYmICEkc29sdXRpb24tPntvcHRpb25zfS0+e25zc30pCiAJewog CQkkbGlicHEtPlJlbW92ZUZpbGUoJ3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXNlY3VyZS1jb21t b24uYycpOworCX0KKwlpZiAoISRzb2x1dGlvbi0+e29wdGlvbnN9LT57b3BlbnNzbH0pCisJewog CQkkbGlicHEtPlJlbW92ZUZpbGUoJ3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXNlY3VyZS1vcGVu c3NsLmMnKTsKIAl9CisJaWYgKCEkc29sdXRpb24tPntvcHRpb25zfS0+e25zc30pCisJeworCQkk bGlicHEtPlJlbW92ZUZpbGUoJ3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXNlY3VyZS1uc3MuYycp OworCX0KIAlpZiAoISRzb2x1dGlvbi0+e29wdGlvbnN9LT57Z3NzfSkKIAl7CiAJCSRsaWJwcS0+ UmVtb3ZlRmlsZSgnc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtZ3NzYXBpLWNvbW1vbi5jJyk7CmRp ZmYgLS1naXQgYS9zcmMvdG9vbHMvbXN2Yy9Tb2x1dGlvbi5wbSBiL3NyYy90b29scy9tc3ZjL1Nv bHV0aW9uLnBtCmluZGV4IDU5YTQyYmVhOTcuLmQzZDBlYTNjOTUgMTAwNjQ0Ci0tLSBhL3NyYy90 b29scy9tc3ZjL1NvbHV0aW9uLnBtCisrKyBiL3NyYy90b29scy9tc3ZjL1NvbHV0aW9uLnBtCkBA IC00ODgsNiArNDg4LDcgQEAgc3ViIEdlbmVyYXRlRmlsZXMKIAkJVVNFX0xMVk0gICAgICAgICAg ICAgICAgICAgPT4gdW5kZWYsCiAJCVVTRV9OQU1FRF9QT1NJWF9TRU1BUEhPUkVTID0+IHVuZGVm LAogCQlVU0VfT1BFTlNTTCAgICAgICAgICAgICAgICA9PiB1bmRlZiwKKwkJVVNFX05TUyAgICAg ICAgICAgICAgICAgICAgPT4gdW5kZWYsCiAJCVVTRV9QQU0gICAgICAgICAgICAgICAgICAgID0+ IHVuZGVmLAogCQlVU0VfU0xJQ0lOR19CWV84X0NSQzMyQyAgICA9PiB1bmRlZiwKIAkJVVNFX1NT RTQyX0NSQzMyQyAgICAgICAgICAgPT4gdW5kZWYsCkBAIC01NDAsNiArNTQxLDEwIEBAIHN1YiBH ZW5lcmF0ZUZpbGVzCiAJCQkkZGVmaW5le0hBVkVfT1BFTlNTTF9JTklUX1NTTH0gICAgICA9IDE7 CiAJCX0KIAl9CisJaWYgKCRzZWxmLT57b3B0aW9uc30tPntuc3N9KQorCXsKKwkJJGRlZmluZXtV U0VfTlNTfSA9IDE7CisJfQogCiAJJHNlbGYtPkdlbmVyYXRlQ29uZmlnSGVhZGVyKCdzcmMvaW5j bHVkZS9wZ19jb25maWcuaCcsICAgICBcJWRlZmluZSwgMSk7CiAJJHNlbGYtPkdlbmVyYXRlQ29u ZmlnSGVhZGVyKCdzcmMvaW5jbHVkZS9wZ19jb25maWdfZXh0LmgnLCBcJWRlZmluZSwgMCk7CkBA IC0xMDA1LDYgKzEwMTAsMjEgQEAgc3ViIEFkZFByb2plY3QKIAkJCX0KIAkJfQogCX0KKwlpZiAo JHNlbGYtPntvcHRpb25zfS0+e25zc30pCisJeworCQkkcHJvai0+QWRkSW5jbHVkZURpcigkc2Vs Zi0+e29wdGlvbnN9LT57bnNzfSAuICdcLi5ccHVibGljXG5zcycpOworCQkkcHJvai0+QWRkSW5j bHVkZURpcigkc2VsZi0+e29wdGlvbnN9LT57bnNzfSAuICdcaW5jbHVkZVxuc3ByJyk7CisJCWZv cmVhY2ggbXkgJGxpYiAocXcocGxkczQgcGxjNCBuc3ByNCkpCisJCXsKKwkJCSRwcm9qLT5BZGRM aWJyYXJ5KCRzZWxmLT57b3B0aW9uc30tPntuc3N9IC4KKwkJCQkJCQkgICdcbGliXGxpYicgLiAi JGxpYi5saWIiLCAwKTsKKwkJfQorCQlmb3JlYWNoIG15ICRsaWIgKHF3KHNzbDMgc21pbWUzIG5z czMpKQorCQl7CisJCQkkcHJvai0+QWRkTGlicmFyeSgkc2VsZi0+e29wdGlvbnN9LT57bnNzfSAu CisJCQkJCQkJICAnXGxpYicgLiAiXFwkbGliLmRsbC5saWIiLCAwKTsKKwkJfQorCX0KIAlpZiAo JHNlbGYtPntvcHRpb25zfS0+e25sc30pCiAJewogCQkkcHJvai0+QWRkSW5jbHVkZURpcigkc2Vs Zi0+e29wdGlvbnN9LT57bmxzfSAuICdcaW5jbHVkZScpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xz L21zdmMvY29uZmlnX2RlZmF1bHQucGwgYi9zcmMvdG9vbHMvbXN2Yy9jb25maWdfZGVmYXVsdC5w bAppbmRleCAyZWYyY2ZjNGU5Li40OWRjNGQ1ODY0IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvbXN2 Yy9jb25maWdfZGVmYXVsdC5wbAorKysgYi9zcmMvdG9vbHMvbXN2Yy9jb25maWdfZGVmYXVsdC5w bApAQCAtMTcsNiArMTcsNyBAQCBvdXIgJGNvbmZpZyA9IHsKIAlwZXJsICAgICAgPT4gdW5kZWYs ICAgICMgLS13aXRoLXBlcmw9PHBhdGg+CiAJcHl0aG9uICAgID0+IHVuZGVmLCAgICAjIC0td2l0 aC1weXRob249PHBhdGg+CiAJb3BlbnNzbCAgID0+IHVuZGVmLCAgICAjIC0td2l0aC1vcGVuc3Ns PTxwYXRoPgorCW5zcyAgICAgICA9PiB1bmRlZiwgICAgIyAtLXdpdGgtbnNzPTxwYXRoPgogCXV1 aWQgICAgICA9PiB1bmRlZiwgICAgIyAtLXdpdGgtdXVpZD08cGF0aD4KIAl4bWwgICAgICAgPT4g dW5kZWYsICAgICMgLS13aXRoLWxpYnhtbD08cGF0aD4KIAl4c2x0ICAgICAgPT4gdW5kZWYsICAg ICMgLS13aXRoLWxpYnhzbHQ9PHBhdGg+Ci0tIAoyLjI1LjEKCg== --_008_a9b663ae4a4b71525e88b75463c865a6693cb4cecamelvmwarecom_ Content-Type: text/x-patch; name="v23-0002-NSS-Testharness-updates.patch" Content-Description: v23-0002-NSS-Testharness-updates.patch Content-Disposition: attachment; filename="v23-0002-NSS-Testharness-updates.patch"; size=58261; creation-date="Wed, 20 Jan 2021 17:07:08 GMT"; modification-date="Wed, 20 Jan 2021 17:07:08 GMT" Content-ID: <925E96E74A445E4FACC39DDCCF6DC526@namprd05.prod.outlook.com> Content-Transfer-Encoding: base64 RnJvbSBjZjM0NjBmMWVkNmIyNDE2MmUwOGFlOWExN2NmZTJmZmRkNDQxOGU4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgR3VzdGFmc3NvbiA8ZGFuaWVsQHllc3FsLnNlPgpE YXRlOiBXZWQsIDI4IE9jdCAyMDIwIDExOjIyOjI2ICswMTAwClN1YmplY3Q6IFtQQVRDSCB2MjMg Mi82XSBOU1MgVGVzdGhhcm5lc3MgdXBkYXRlcwoKVE9ETzoKCSogR2VuZXJhdGUgY2VydGlmaWNh dGUva2V5cyB3aXRoIE5TUyB0b29saW5nIGZvciBOU1Mgc3BlY2lmaWMgdGVzdAoJKiBBZGQgdGVz dCBmb3IgY2VydGlmaWNhdGUgd2l0aCBlbWJlZGRlZCBudWxscwoJKiBGaXggU0NSQU0gdGVzdHMg d2hlbiBjaGFubmVsIGJpbmRpbmcgd29ya3MKLS0tCiBzcmMvdGVzdC9NYWtlZmlsZSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUg ICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogLi4uL21vZHVsZXMvc3NsX3Bhc3NwaHJhc2Vf Y2FsbGJhY2svTWFrZWZpbGUgIHwgICAyICstCiAuLi4vc3NsX3Bhc3NwaHJhc2VfY2FsbGJhY2sv dC8wMDFfdGVzdGZ1bmMucGwgfCAgIDQgKy0KIHNyYy90ZXN0L3NzbC9NYWtlZmlsZSAgICAgICAg ICAgICAgICAgICAgICAgICB8IDIzNSArKysrKysrKysrKy0KIHNyYy90ZXN0L3NzbC90LzAwMV9z c2x0ZXN0cy5wbCAgICAgICAgICAgICAgICB8IDM0NiArKysrKysrKysrKy0tLS0tLS0KIHNyYy90 ZXN0L3NzbC90LzAwMl9zY3JhbS5wbCAgICAgICAgICAgICAgICAgICB8ICA5NyArKystLQogc3Jj L3Rlc3Qvc3NsL3QvU1NML0JhY2tlbmQvTlNTLnBtICAgICAgICAgICAgIHwgIDczICsrKysKIHNy Yy90ZXN0L3NzbC90L1NTTC9CYWNrZW5kL09wZW5TU0wucG0gICAgICAgICB8IDEwMyArKysrKysK IC4uLi9zc2wvdC97U1NMU2VydmVyLnBtID0+IFNTTC9TZXJ2ZXIucG19ICAgICB8ICA4MCArKyst CiAxMCBmaWxlcyBjaGFuZ2VkLCA3NDkgaW5zZXJ0aW9ucygrKSwgMTk1IGRlbGV0aW9ucygtKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3NzbC90L1NTTC9CYWNrZW5kL05TUy5wbQogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3NzbC90L1NTTC9CYWNrZW5kL09wZW5TU0wucG0KIHJl bmFtZSBzcmMvdGVzdC9zc2wvdC97U1NMU2VydmVyLnBtID0+IFNTTC9TZXJ2ZXIucG19ICg3OCUp CgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvTWFrZWZpbGUgYi9zcmMvdGVzdC9NYWtlZmlsZQppbmRl eCBhYjFlZjlhNDc1Li5jZWU0NTg2ZWI1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9NYWtlZmlsZQor KysgYi9zcmMvdGVzdC9NYWtlZmlsZQpAQCAtMjgsNyArMjgsNyBAQCBpZm5lcSAoLCQoZmlsdGVy IGxkYXAsJChQR19URVNUX0VYVFJBKSkpCiBTVUJESVJTICs9IGxkYXAKIGVuZGlmCiBlbmRpZgot aWZlcSAoJCh3aXRoX29wZW5zc2wpLHllcykKK2lmZXEgKCQod2l0aF9zc2wpLHllcykKIGlmbmVx ICgsJChmaWx0ZXIgc3NsLCQoUEdfVEVTVF9FWFRSQSkpKQogU1VCRElSUyArPSBzc2wKIGVuZGlm CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL01ha2VmaWxlIGIvc3JjL3Rlc3QvbW9kdWxl cy9NYWtlZmlsZQppbmRleCA1OTkyMWI0NmNmLi41MzkxZjQ2MWEyIDEwMDY0NAotLS0gYS9zcmMv dGVzdC9tb2R1bGVzL01ha2VmaWxlCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUKQEAg LTI4LDcgKzI4LDcgQEAgU1VCRElSUyA9IFwKIAkJICB1bnNhZmVfdGVzdHMgXAogCQkgIHdvcmtl cl9zcGkKIAotaWZlcSAoJCh3aXRoX29wZW5zc2wpLHllcykKK2lmZXEgKCQod2l0aF9zc2wpLG9w ZW5zc2wpCiBTVUJESVJTICs9IHNzbF9wYXNzcGhyYXNlX2NhbGxiYWNrCiBlbHNlCiBBTFdBWVNf U1VCRElSUyArPSBzc2xfcGFzc3BocmFzZV9jYWxsYmFjawpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv bW9kdWxlcy9zc2xfcGFzc3BocmFzZV9jYWxsYmFjay9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVs ZXMvc3NsX3Bhc3NwaHJhc2VfY2FsbGJhY2svTWFrZWZpbGUKaW5kZXggZjgxMjY1YzI5Ni4uYTM0 ZDdlYTQ2YSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9zc2xfcGFzc3BocmFzZV9jYWxs YmFjay9NYWtlZmlsZQorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3NzbF9wYXNzcGhyYXNlX2NhbGxi YWNrL01ha2VmaWxlCkBAIC0xLDYgKzEsNiBAQAogIyBzc2xfcGFzc3BocmFzZV9jYWxsYmFjayBN YWtlZmlsZQogCi1leHBvcnQgd2l0aF9vcGVuc3NsCitleHBvcnQgd2l0aF9zc2wKIAogTU9EVUxF X2JpZyA9IHNzbF9wYXNzcGhyYXNlX2Z1bmMKIE9CSlMgPSBzc2xfcGFzc3BocmFzZV9mdW5jLm8g JChXSU4zMlJFUykKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvc3NsX3Bhc3NwaHJhc2Vf Y2FsbGJhY2svdC8wMDFfdGVzdGZ1bmMucGwgYi9zcmMvdGVzdC9tb2R1bGVzL3NzbF9wYXNzcGhy YXNlX2NhbGxiYWNrL3QvMDAxX3Rlc3RmdW5jLnBsCmluZGV4IGRiYzA4NGY4NzAuLmEyYmVkNTMz NmMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvc3NsX3Bhc3NwaHJhc2VfY2FsbGJhY2sv dC8wMDFfdGVzdGZ1bmMucGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9zc2xfcGFzc3BocmFzZV9j YWxsYmFjay90LzAwMV90ZXN0ZnVuYy5wbApAQCAtNyw5ICs3LDkgQEAgdXNlIFRlc3RMaWI7CiB1 c2UgVGVzdDo6TW9yZTsKIHVzZSBQb3N0Z3Jlc05vZGU7CiAKLXVubGVzcyAoKCRFTlZ7d2l0aF9v cGVuc3NsfSB8fCAnbm8nKSBlcSAneWVzJykKK3VubGVzcyAoJEVOVnt3aXRoX3NzbH0gZXEgJ29w ZW5zc2wnKQogewotCXBsYW4gc2tpcF9hbGwgPT4gJ1NTTCBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMg YnVpbGQnOworCXBsYW4gc2tpcF9hbGwgPT4gJ09wZW5TU0wgbm90IHN1cHBvcnRlZCBieSB0aGlz IGJ1aWxkJzsKIH0KIAogbXkgJGNsZWFycGFzcyA9ICJGb29CYVIxIjsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3NzbC9NYWtlZmlsZSBiL3NyYy90ZXN0L3NzbC9NYWtlZmlsZQppbmRleCA5MzMzNWIx ZWEyLi5kMjc1Yzg5NjcyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zc2wvTWFrZWZpbGUKKysrIGIv c3JjL3Rlc3Qvc3NsL01ha2VmaWxlCkBAIC0xMyw3ICsxMyw3IEBAIHN1YmRpciA9IHNyYy90ZXN0 L3NzbAogdG9wX2J1aWxkZGlyID0gLi4vLi4vLi4KIGluY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3Ny Yy9NYWtlZmlsZS5nbG9iYWwKIAotZXhwb3J0IHdpdGhfb3BlbnNzbAorZXhwb3J0IHdpdGhfc3Ns CiAKIENFUlRJRklDQVRFUyA6PSBzZXJ2ZXJfY2Egc2VydmVyLWNuLWFuZC1hbHQtbmFtZXMgXAog CXNlcnZlci1jbi1vbmx5IHNlcnZlci1zaW5nbGUtYWx0LW5hbWUgc2VydmVyLW11bHRpcGxlLWFs dC1uYW1lcyBcCkBAIC0zMCw2ICszMCwzNSBAQCBTU0xGSUxFUyA6PSAkKENFUlRJRklDQVRFUzol PXNzbC8lLmtleSkgJChDRVJUSUZJQ0FURVM6JT1zc2wvJS5jcnQpIFwKIAlzc2wvY2xpZW50K2Ns aWVudF9jYS5jcnQgc3NsL2NsaWVudC1kZXIua2V5IFwKIAlzc2wvY2xpZW50LWVuY3J5cHRlZC1w ZW0ua2V5IHNzbC9jbGllbnQtZW5jcnlwdGVkLWRlci5rZXkKIAorIyBFdmVuIHRob3VnaCB3ZSBp biBwcmFjdGljZSBjb3VsZCBnZXQgYXdheSB3aXRoIGZhciBmZXdlciBOU1MgZGF0YWJhc2VzLCB0 aGV5CisjIGFyZSBnZW5lcmF0ZWQgdG8gbWltaWMgdGhlIHNldHVwIGZvciB0aGUgT3BlblNTTCB0 ZXN0cyBpbiBvcmRlciB0byBlbnN1cmUKKyMgd2UgaXNvbGF0ZSB0aGUgc2FtZSBiZWhhdmlvciBi ZXR3ZWVuIHRoZSBiYWNrZW5kcy4gVGhlIGRhdGFiYXNlIG5hbWUgc2hvdWxkCisjIGNvbnRhaW4g dGhlIGZpbGVzIGluY2x1ZGVkIGZvciBlYXNpZXIgdGVzdCBzdWl0ZSBjb2RlIHJlYWRpbmcuCitO U1NGSUxFUyA6PSBzc2wvbnNzL2NsaWVudF9jYS5jcnQuZGIgXAorCXNzbC9uc3Mvc2VydmVyX2Nh LmNydC5kYiBcCisJc3NsL25zcy9yb290K3NlcnZlcl9jYS5jcnQuZGIgXAorCXNzbC9uc3Mvcm9v dCtjbGllbnRfY2EuY3J0LmRiIFwKKwlzc2wvbnNzL2NsaWVudC5jcnRfX2NsaWVudC5rZXkuZGIg XAorCXNzbC9uc3MvY2xpZW50LXJldm9rZWQuY3J0X19jbGllbnQtcmV2b2tlZC5rZXkuZGIgXAor CXNzbC9uc3Mvc2VydmVyLWNuLW9ubHkuY3J0X19zZXJ2ZXItcGFzc3dvcmQua2V5LmRiIFwKKwlz c2wvbnNzL3NlcnZlci1jbi1vbmx5LmNydF9fc2VydmVyLWNuLW9ubHkua2V5LmRiIFwKKwlzc2wv bnNzL3Jvb3QuY3JsIFwKKwlzc2wvbnNzL3NlcnZlci5jcmwgXAorCXNzbC9uc3MvY2xpZW50LmNy bCBcCisJc3NsL25zcy9zZXJ2ZXItbXVsdGlwbGUtYWx0LW5hbWVzLmNydF9fc2VydmVyLW11bHRp cGxlLWFsdC1uYW1lcy5rZXkuZGIgXAorCXNzbC9uc3Mvc2VydmVyLXNpbmdsZS1hbHQtbmFtZS5j cnRfX3NlcnZlci1zaW5nbGUtYWx0LW5hbWUua2V5LmRiIFwKKwlzc2wvbnNzL3NlcnZlci1jbi1h bmQtYWx0LW5hbWVzLmNydF9fc2VydmVyLWNuLWFuZC1hbHQtbmFtZXMua2V5LmRiIFwKKwlzc2wv bnNzL3NlcnZlci1uby1uYW1lcy5jcnRfX3NlcnZlci1uby1uYW1lcy5rZXkuZGIgXAorCXNzbC9u c3Mvc2VydmVyLXJldm9rZWQuY3J0X19zZXJ2ZXItcmV2b2tlZC5rZXkuZGIgXAorCXNzbC9uc3Mv cm9vdCtjbGllbnQuY3JsIFwKKwlzc2wvbnNzL2NsaWVudCtjbGllbnRfY2EuY3J0X19jbGllbnQu a2V5LmRiIFwKKwlzc2wvbnNzL2NsaWVudC5jcnRfX2NsaWVudC1lbmNyeXB0ZWQtcGVtLmtleS5k YiBcCisJc3NsL25zcy9yb290K3NlcnZlcl9jYS5jcnRfX3NlcnZlci5jcmwuZGIgXAorCXNzbC9u c3Mvcm9vdCtzZXJ2ZXJfY2EuY3J0X19yb290K3NlcnZlci5jcmwuZGIgXAorCXNzbC9uc3MvbmF0 aXZlX2NhLXJvb3QuZGIgXAorCXNzbC9uc3MvbmF0aXZlX3NlcnZlci1yb290LmRiIFwKKwlzc2wv bnNzL25hdGl2ZV9jbGllbnQtcm9vdC5kYgorCiAjIFRoaXMgdGFyZ2V0IHJlLWdlbmVyYXRlcyBh bGwgdGhlIGtleSBhbmQgY2VydGlmaWNhdGUgZmlsZXMuIFVzdWFsbHkgd2UganVzdAogIyB1c2Ug dGhlIG9uZXMgdGhhdCBhcmUgY29tbWl0dGVkIHRvIHRoZSB0cmVlIHdpdGhvdXQgcmVidWlsZGlu ZyB0aGVtLgogIwpAQCAtMzcsNiArNjYsMTAgQEAgU1NMRklMRVMgOj0gJChDRVJUSUZJQ0FURVM6 JT1zc2wvJS5rZXkpICQoQ0VSVElGSUNBVEVTOiU9c3NsLyUuY3J0KSBcCiAjCiBzc2xmaWxlczog JChTU0xGSUxFUykKIAorIyBHZW5lcmF0ZSBOU1MgY2VydGlmaWNhdGUgZGF0YWJhc2VzIGNvcnJl c3BvbmRpbmcgdG8gdGhlIE9wZW5TU0wgY2VydGlmaWNhdGVzLgorIyBUaGlzIHRhcmdldCB3aWxs IGZhaWwgdW5sZXNzIHByZWNlZGVkIGJ5IG5zc2ZpbGVzLWNsZWFuLgorbnNzZmlsZXM6ICQoTlNT RklMRVMpCisKICMgT3BlblNTTCByZXF1aXJlcyBhIGRpcmVjdG9yeSB0byBwdXQgYWxsIGdlbmVy YXRlZCBjZXJ0aWZpY2F0ZXMgaW4uIFdlIGRvbid0CiAjIHVzZSB0aGlzIGZvciBhbnl0aGluZywg YnV0IHdlIG5lZWQgYSBsb2NhdGlvbi4KIHNzbC9uZXdfY2VydHNfZGlyOgpAQCAtNjQsNiArOTcs MjQgQEAgc3NsLyVfY2EuY3J0OiBzc2wvJV9jYS5rZXkgJV9jYS5jb25maWcgc3NsL3Jvb3RfY2Eu Y3J0IHNzbC9uZXdfY2VydHNfZGlyCiAJcm0gc3NsL3RlbXBfY2EuY3J0IHNzbC90ZW1wX2NhX3Np Z25lZC5jcnQKIAllY2hvICIwMSIgPiBzc2wvJCpfY2Euc3JsCiAKK3NzbC9uc3MvJV9jYS5jcnQu ZGI6IHNzbC8lX2NhLmNydAorCSQoTUtESVJfUCkgJEAKKwljZXJ0dXRpbCAtZCAic3FsOiRAIiAt TiAtLWVtcHR5LXBhc3N3b3JkCisJY2VydHV0aWwgLWQgInNxbDokQCIgLUEgLW4gJCpfY2EuY3J0 IC1pIHNzbC8kKl9jYS5jcnQgLXQgIkNULEMsQyIKKworc3NsL25zcy9yb290K3NlcnZlcl9jYS5j cnRfX3NlcnZlci5jcmwuZGI6IHNzbC9yb290K3NlcnZlcl9jYS5jcnQgc3NsL25zcy9zZXJ2ZXIu Y3JsCisJJChNS0RJUl9QKSAkQAorCWNlcnR1dGlsIC1kICJzcWw6JEAiIC1OIC0tZW1wdHktcGFz c3dvcmQKKwljZXJ0dXRpbCAtZCAic3FsOiRAIiAtQSAtbiBzc2wvcm9vdCtzZXJ2ZXJfY2EuY3J0 IC1pIHNzbC9yb290K3NlcnZlcl9jYS5jcnQgLXQgIkNULEMsQyIKKwljcmx1dGlsIC1JIC1pIHNz bC9uc3Mvc2VydmVyLmNybCAtZCAkQCAtQgorCitzc2wvbnNzL3Jvb3Qrc2VydmVyX2NhLmNydF9f cm9vdCtzZXJ2ZXIuY3JsLmRiOiBzc2wvcm9vdCtzZXJ2ZXJfY2EuY3J0IHNzbC9uc3Mvcm9vdC5j cmwgc3NsL25zcy9zZXJ2ZXIuY3JsCisJJChNS0RJUl9QKSAkQAorCWNlcnR1dGlsIC1kICJzcWw6 JEAiIC1OIC0tZW1wdHktcGFzc3dvcmQKKwljZXJ0dXRpbCAtZCAic3FsOiRAIiAtQSAtbiBzc2wv cm9vdCtzZXJ2ZXJfY2EuY3J0IC1pIHNzbC9yb290K3NlcnZlcl9jYS5jcnQgLXQgIkNULEMsQyIK Kwljcmx1dGlsIC1JIC1pIHNzbC9uc3Mvcm9vdC5jcmwgLWQgJEAgLUIKKwljcmx1dGlsIC1JIC1p IHNzbC9uc3Mvc2VydmVyLmNybCAtZCAkQCAtQgorCiAjIFNlcnZlciBjZXJ0aWZpY2F0ZXMsIHNp Z25lZCBieSBzZXJ2ZXIgQ0E6CiBzc2wvc2VydmVyLSUuY3J0OiBzc2wvc2VydmVyLSUua2V5IHNz bC9zZXJ2ZXJfY2EuY3J0IHNlcnZlci0lLmNvbmZpZwogCW9wZW5zc2wgcmVxIC1uZXcgLWtleSBz c2wvc2VydmVyLSQqLmtleSAtb3V0IHNzbC9zZXJ2ZXItJCouY3NyIC1jb25maWcgc2VydmVyLSQq LmNvbmZpZwpAQCAtNzcsNiArMTI4LDc4IEBAIHNzbC9zZXJ2ZXItc3MuY3J0OiBzc2wvc2VydmVy LWNuLW9ubHkua2V5IHNzbC9zZXJ2ZXItY24tb25seS5jcnQgc2VydmVyLWNuLW9ubHkuCiAJb3Bl bnNzbCB4NTA5IC1yZXEgLWRheXMgMTAwMDAgLWluIHNzbC9zZXJ2ZXItc3MuY3NyIC1zaWdua2V5 IHNzbC9zZXJ2ZXItY24tb25seS5rZXkgLW91dCBzc2wvc2VydmVyLXNzLmNydCAgLWV4dGVuc2lv bnMgdjNfcmVxIC1leHRmaWxlIHNlcnZlci1jbi1vbmx5LmNvbmZpZwogCXJtIHNzbC9zZXJ2ZXIt c3MuY3NyCiAKKyMgcGsxMnV0aWwgd29uJ3QgcHJlc2VydmUgdGhlIHBhc3N3b3JkIHdoZW4gaW1w b3J0aW5nIHRoZSBwYXNzd29yZCBwcm90ZWN0ZWQKKyMga2V5LCB0aGUgcGFzc3dvcmQgbXVzdCBi ZSBzZXQgb24gdGhlIGRhdGFiYXNlICpiZWZvcmUqIGltcG9ydGluZyBpdCBhcyB0aGUKKyMgcGFz c3dvcmQgaW4gdGhlIHBrY3MxMiBlbnZlbG9wZSB3aWxsIGJlIGRyb3BwZWQuCitzc2wvbnNzL3Nl cnZlci1jbi1vbmx5LmNydF9fc2VydmVyLXBhc3N3b3JkLmtleS5kYjogc3NsL3NlcnZlci1jbi1v bmx5LmNydAorCSQoTUtESVJfUCkgJEAKKwllY2hvICJzZWNyZXQxIiA+IHBhc3N3b3JkLnR4dAor CWNlcnR1dGlsIC1kICJzcWw6JEAiIC1OIC1mIHBhc3N3b3JkLnR4dAorCWNlcnR1dGlsIC1kICJz cWw6JEAiIC1BIC1uIHNzbC9zZXJ2ZXItY24tb25seS5jcnQgLWkgc3NsL3NlcnZlci1jbi1vbmx5 LmNydCAtdCAiQ1QsQyxDIiAtZiBwYXNzd29yZC50eHQKKwljZXJ0dXRpbCAtZCAic3FsOiRAIiAt QSAtbiBzZXJ2ZXJfY2EuY3J0IC1pIHNzbC9zZXJ2ZXJfY2EuY3J0IC10ICJDVCxDLEMiIC1mIHBh c3N3b3JkLnR4dAorCWNlcnR1dGlsIC1kICJzcWw6JEAiIC1BIC1uIHJvb3RfY2EuY3J0IC1pIHNz bC9yb290X2NhLmNydCAtdCAiQ1QsQyxDIiAtZiBwYXNzd29yZC50eHQKKwljZXJ0dXRpbCAtZCAi c3FsOiRAIiAtQSAtbiBjbGllbnRfY2EuY3J0IC1pIHNzbC9jbGllbnRfY2EuY3J0IC10ICJDVCxD LEMiIC1mIHBhc3N3b3JkLnR4dAorCW9wZW5zc2wgcGtjczEyIC1leHBvcnQgLW91dCBzc2wvbnNz L3NlcnZlci1wYXNzd29yZC5wZnggLWlua2V5IHNzbC9zZXJ2ZXItcGFzc3dvcmQua2V5IC1pbiBz c2wvc2VydmVyLWNuLW9ubHkuY3J0IC1jZXJ0ZmlsZSBzc2wvc2VydmVyX2NhLmNydCAtcGFzc2lu ICdwYXNzOnNlY3JldDEnIC1wYXNzb3V0ICdwYXNzOnNlY3JldDEnCisJcGsxMnV0aWwgLWkgc3Ns L25zcy9zZXJ2ZXItcGFzc3dvcmQucGZ4IC1kICJzcWw6JEAiIC1XICdzZWNyZXQxJyAtSyAnc2Vj cmV0MScKKworc3NsL25zcy9zZXJ2ZXItY24tb25seS5jcnRfX3NlcnZlci1jbi1vbmx5LmtleS5k Yjogc3NsL3NlcnZlci1jbi1vbmx5LmNydCBzc2wvc2VydmVyLWNuLW9ubHkua2V5CisJJChNS0RJ Ul9QKSAkQAorCWNlcnR1dGlsIC1kICJzcWw6JEAiIC1OIC0tZW1wdHktcGFzc3dvcmQKKwljZXJ0 dXRpbCAtZCAic3FsOiRAIiAtQSAtbiBzc2wvc2VydmVyLWNuLW9ubHkuY3J0IC1pIHNzbC9zZXJ2 ZXItY24tb25seS5jcnQgLXQgIkNULEMsQyIKKwljZXJ0dXRpbCAtZCAic3FsOiRAIiAtQSAtbiBz ZXJ2ZXJfY2EuY3J0IC1pIHNzbC9zZXJ2ZXJfY2EuY3J0IC10ICJDVCxDLEMiCisJb3BlbnNzbCBw a2NzMTIgLWV4cG9ydCAtb3V0IHNzbC9uc3Mvc2VydmVyLWNuLW9ubHkucGZ4IC1pbmtleSBzc2wv c2VydmVyLWNuLW9ubHkua2V5IC1pbiBzc2wvc2VydmVyLWNuLW9ubHkuY3J0IC1jZXJ0ZmlsZSBz c2wvc2VydmVyX2NhLmNydCAtcGFzc291dCBwYXNzOgorCXBrMTJ1dGlsIC1pIHNzbC9uc3Mvc2Vy dmVyLWNuLW9ubHkucGZ4IC1kICJzcWw6JEAiIC1XICcnCisKK3NzbC9uc3Mvc2VydmVyLW11bHRp cGxlLWFsdC1uYW1lcy5jcnRfX3NlcnZlci1tdWx0aXBsZS1hbHQtbmFtZXMua2V5LmRiOiBzc2wv c2VydmVyLW11bHRpcGxlLWFsdC1uYW1lcy5jcnQKKwkkKE1LRElSX1ApICRACisJY2VydHV0aWwg LWQgInNxbDokQCIgLU4gLS1lbXB0eS1wYXNzd29yZAorCWNlcnR1dGlsIC1kICJzcWw6JEAiIC1B IC1uIHNzbC9zZXJ2ZXItbXVsdGlwbGUtYWx0LW5hbWVzLmNydCAtaSBzc2wvc2VydmVyLW11bHRp cGxlLWFsdC1uYW1lcy5jcnQgLXQgIkNULEMsQyIKKwljZXJ0dXRpbCAtZCAic3FsOiRAIiAtQSAt biBzZXJ2ZXJfY2EuY3J0IC1pIHNzbC9zZXJ2ZXJfY2EuY3J0IC10ICJDVCxDLEMiCisJY2VydHV0 aWwgLWQgInNxbDokQCIgLUEgLW4gcm9vdF9jYS5jcnQgLWkgc3NsL3Jvb3RfY2EuY3J0IC10ICJD VCxDLEMiCisJY2VydHV0aWwgLWQgInNxbDokQCIgLUEgLW4gY2xpZW50X2NhLmNydCAtaSBzc2wv Y2xpZW50X2NhLmNydCAtdCAiQ1QsQyxDIgorCW9wZW5zc2wgcGtjczEyIC1leHBvcnQgLW91dCBz c2wvbnNzL3NlcnZlci1tdWx0aXBsZS1hbHQtbmFtZXMucGZ4IC1pbmtleSBzc2wvc2VydmVyLW11 bHRpcGxlLWFsdC1uYW1lcy5rZXkgLWluIHNzbC9zZXJ2ZXItbXVsdGlwbGUtYWx0LW5hbWVzLmNy dCAtY2VydGZpbGUgc3NsL3NlcnZlci1tdWx0aXBsZS1hbHQtbmFtZXMuY3J0IC1wYXNzb3V0IHBh c3M6CisJcGsxMnV0aWwgLWkgc3NsL25zcy9zZXJ2ZXItbXVsdGlwbGUtYWx0LW5hbWVzLnBmeCAt ZCAic3FsOiRAIiAtVyAnJworCitzc2wvbnNzL3NlcnZlci1zaW5nbGUtYWx0LW5hbWUuY3J0X19z ZXJ2ZXItc2luZ2xlLWFsdC1uYW1lLmtleS5kYjogc3NsL3NlcnZlci1zaW5nbGUtYWx0LW5hbWUu Y3J0CisJJChNS0RJUl9QKSAkQAorCWNlcnR1dGlsIC1kICJzcWw6JEAiIC1OIC0tZW1wdHktcGFz c3dvcmQKKwljZXJ0dXRpbCAtZCAic3FsOiRAIiAtQSAtbiBzc2wvc2VydmVyLXNpbmdsZS1hbHQt bmFtZS5jcnQgLWkgc3NsL3NlcnZlci1zaW5nbGUtYWx0LW5hbWUuY3J0IC10ICJDVCxDLEMiCisJ Y2VydHV0aWwgLWQgInNxbDokQCIgLUEgLW4gc2VydmVyX2NhLmNydCAtaSBzc2wvc2VydmVyX2Nh LmNydCAtdCAiQ1QsQyxDIgorCWNlcnR1dGlsIC1kICJzcWw6JEAiIC1BIC1uIHJvb3RfY2EuY3J0 IC1pIHNzbC9yb290X2NhLmNydCAtdCAiQ1QsQyxDIgorCWNlcnR1dGlsIC1kICJzcWw6JEAiIC1B IC1uIGNsaWVudF9jYS5jcnQgLWkgc3NsL2NsaWVudF9jYS5jcnQgLXQgIkNULEMsQyIKKwlvcGVu c3NsIHBrY3MxMiAtZXhwb3J0IC1vdXQgc3NsL25zcy9zZXJ2ZXItc2luZ2xlLWFsdC1uYW1lLnBm eCAtaW5rZXkgc3NsL3NlcnZlci1zaW5nbGUtYWx0LW5hbWUua2V5IC1pbiBzc2wvc2VydmVyLXNp bmdsZS1hbHQtbmFtZS5jcnQgLWNlcnRmaWxlIHNzbC9zZXJ2ZXItc2luZ2xlLWFsdC1uYW1lLmNy dCAtcGFzc291dCBwYXNzOgorCXBrMTJ1dGlsIC1pIHNzbC9uc3Mvc2VydmVyLXNpbmdsZS1hbHQt bmFtZS5wZnggLWQgInNxbDokQCIgLVcgJycKKworc3NsL25zcy9zZXJ2ZXItY24tYW5kLWFsdC1u YW1lcy5jcnRfX3NlcnZlci1jbi1hbmQtYWx0LW5hbWVzLmtleS5kYjogc3NsL3NlcnZlci1jbi1h bmQtYWx0LW5hbWVzLmNydAorCSQoTUtESVJfUCkgJEAKKwljZXJ0dXRpbCAtZCAic3FsOiRAIiAt TiAtLWVtcHR5LXBhc3N3b3JkCisJY2VydHV0aWwgLWQgInNxbDokQCIgLUEgLW4gc3NsL3NlcnZl ci1jbi1hbmQtYWx0LW5hbWVzLmNydCAtaSBzc2wvc2VydmVyLWNuLWFuZC1hbHQtbmFtZXMuY3J0 IC10ICJDVCxDLEMiCisJY2VydHV0aWwgLWQgInNxbDokQCIgLUEgLW4gc2VydmVyX2NhLmNydCAt aSBzc2wvc2VydmVyX2NhLmNydCAtdCAiQ1QsQyxDIgorCWNlcnR1dGlsIC1kICJzcWw6JEAiIC1B IC1uIHJvb3RfY2EuY3J0IC1pIHNzbC9yb290X2NhLmNydCAtdCAiQ1QsQyxDIgorCWNlcnR1dGls IC1kICJzcWw6JEAiIC1BIC1uIGNsaWVudF9jYS5jcnQgLWkgc3NsL2NsaWVudF9jYS5jcnQgLXQg IkNULEMsQyIKKwlvcGVuc3NsIHBrY3MxMiAtZXhwb3J0IC1vdXQgc3NsL25zcy9zZXJ2ZXItY24t YW5kLWFsdC1uYW1lcy5wZnggLWlua2V5IHNzbC9zZXJ2ZXItY24tYW5kLWFsdC1uYW1lcy5rZXkg LWluIHNzbC9zZXJ2ZXItY24tYW5kLWFsdC1uYW1lcy5jcnQgLWNlcnRmaWxlIHNzbC9zZXJ2ZXIt Y24tYW5kLWFsdC1uYW1lcy5jcnQgLXBhc3NvdXQgcGFzczoKKwlwazEydXRpbCAtaSBzc2wvbnNz L3NlcnZlci1jbi1hbmQtYWx0LW5hbWVzLnBmeCAtZCAkQCAtVyAnJworCitzc2wvbnNzL3NlcnZl ci1uby1uYW1lcy5jcnRfX3NlcnZlci1uby1uYW1lcy5rZXkuZGI6IHNzbC9zZXJ2ZXItbm8tbmFt ZXMuY3J0CisJJChNS0RJUl9QKSAkQAorCWNlcnR1dGlsIC1kICJzcWw6JEAiIC1OIC0tZW1wdHkt cGFzc3dvcmQKKwljZXJ0dXRpbCAtZCAic3FsOiRAIiAtQSAtbiBzc2wvc2VydmVyLW5vLW5hbWVz LmNydCAtaSBzc2wvc2VydmVyLW5vLW5hbWVzLmNydCAtdCAiQ1QsQyxDIgorCWNlcnR1dGlsIC1k ICJzcWw6JEAiIC1BIC1uIHNlcnZlcl9jYS5jcnQgLWkgc3NsL3NlcnZlcl9jYS5jcnQgLXQgIkNU LEMsQyIKKwljZXJ0dXRpbCAtZCAic3FsOiRAIiAtQSAtbiByb290X2NhLmNydCAtaSBzc2wvcm9v dF9jYS5jcnQgLXQgIkNULEMsQyIKKwljZXJ0dXRpbCAtZCAic3FsOiRAIiAtQSAtbiBjbGllbnRf Y2EuY3J0IC1pIHNzbC9jbGllbnRfY2EuY3J0IC10ICJDVCxDLEMiCisJb3BlbnNzbCBwa2NzMTIg LWV4cG9ydCAtb3V0IHNzbC9uc3Mvc2VydmVyLW5vLW5hbWVzLnBmeCAtaW5rZXkgc3NsL3NlcnZl ci1uby1uYW1lcy5rZXkgLWluIHNzbC9zZXJ2ZXItbm8tbmFtZXMuY3J0IC1jZXJ0ZmlsZSBzc2wv c2VydmVyLW5vLW5hbWVzLmNydCAtcGFzc291dCBwYXNzOgorCXBrMTJ1dGlsIC1pIHNzbC9uc3Mv c2VydmVyLW5vLW5hbWVzLnBmeCAtZCAic3FsOiRAIiAtVyAnJworCitzc2wvbnNzL3NlcnZlci1y ZXZva2VkLmNydF9fc2VydmVyLXJldm9rZWQua2V5LmRiOiBzc2wvc2VydmVyLXJldm9rZWQuY3J0 CisJJChNS0RJUl9QKSAkQAorCWNlcnR1dGlsIC1kICJzcWw6JEAiIC1OIC0tZW1wdHktcGFzc3dv cmQKKwljZXJ0dXRpbCAtZCAic3FsOiRAIiAtQSAtbiBzc2wvc2VydmVyLXJldm9rZWQuY3J0IC1p IHNzbC9zZXJ2ZXItcmV2b2tlZC5jcnQgLXQgIkNULEMsQyIKKwljZXJ0dXRpbCAtZCAic3FsOiRA IiAtQSAtbiBzZXJ2ZXJfY2EuY3J0IC1pIHNzbC9zZXJ2ZXJfY2EuY3J0IC10ICJDVCxDLEMiCisJ Y2VydHV0aWwgLWQgInNxbDokQCIgLUEgLW4gcm9vdF9jYS5jcnQgLWkgc3NsL3Jvb3RfY2EuY3J0 IC10ICJDVCxDLEMiCisJY2VydHV0aWwgLWQgInNxbDokQCIgLUEgLW4gY2xpZW50X2NhLmNydCAt aSBzc2wvY2xpZW50X2NhLmNydCAtdCAiQ1QsQyxDIgorCW9wZW5zc2wgcGtjczEyIC1leHBvcnQg LW91dCBzc2wvbnNzL3NlcnZlci1yZXZva2VkLnBmeCAtaW5rZXkgc3NsL3NlcnZlci1yZXZva2Vk LmtleSAtaW4gc3NsL3NlcnZlci1yZXZva2VkLmNydCAtY2VydGZpbGUgc3NsL3NlcnZlci1yZXZv a2VkLmNydCAtcGFzc291dCBwYXNzOgorCXBrMTJ1dGlsIC1pIHNzbC9uc3Mvc2VydmVyLXJldm9r ZWQucGZ4IC1kICJzcWw6JEAiIC1XICcnCisKICMgUGFzc3dvcmQtcHJvdGVjdGVkIHZlcnNpb24g b2Ygc2VydmVyLWNuLW9ubHkua2V5CiBzc2wvc2VydmVyLXBhc3N3b3JkLmtleTogc3NsL3NlcnZl ci1jbi1vbmx5LmtleQogCW9wZW5zc2wgcnNhIC1hZXMyNTYgLWluICQ8IC1vdXQgJEAgLXBhc3Nv dXQgJ3Bhc3M6c2VjcmV0MScKQEAgLTg4LDYgKzIxMSwyNyBAQCBzc2wvY2xpZW50LmNydDogc3Ns L2NsaWVudC5rZXkgc3NsL2NsaWVudF9jYS5jcnQKIAlvcGVuc3NsIHg1MDkgLWluIHNzbC90ZW1w LmNydCAtb3V0IHNzbC9jbGllbnQuY3J0ICMgdG8ga2VlcCBqdXN0IHRoZSBQRU0gY2VydAogCXJt IHNzbC9jbGllbnQuY3NyIHNzbC90ZW1wLmNydAogCisjIENsaWVudCBjZXJ0aWZpY2F0ZSwgc2ln bmVkIGJ5IGNsaWVudCBDQQorc3NsL25zcy9jbGllbnQuY3J0X19jbGllbnQua2V5LmRiOiBzc2wv Y2xpZW50LmNydAorCSQoTUtESVJfUCkgJEAKKwljZXJ0dXRpbCAtZCAic3FsOiRAIiAtTiAtLWVt cHR5LXBhc3N3b3JkCisJY2VydHV0aWwgLWQgInNxbDokQCIgLUEgLW4gc3NsL2NsaWVudC5jcnQg LWkgc3NsL2NsaWVudC5jcnQgLXQgIkNULEMsQyIKKwljZXJ0dXRpbCAtZCAic3FsOiRAIiAtQSAt biBjbGllbnRfY2EuY3J0IC1pIHNzbC9jbGllbnRfY2EuY3J0IC10ICJDVCxDLEMiCisJY2VydHV0 aWwgLWQgInNxbDokQCIgLUEgLW4gcm9vdCtjbGllbnRfY2EuY3J0IC1pIHNzbC9yb290K2NsaWVu dF9jYS5jcnQgLXQgIkNULEMsQyIKKwlvcGVuc3NsIHBrY3MxMiAtZXhwb3J0IC1vdXQgc3NsL25z cy9jbGllbnQucGZ4IC1pbmtleSBzc2wvY2xpZW50LmtleSAtaW4gc3NsL2NsaWVudC5jcnQgLWNl cnRmaWxlIHNzbC9jbGllbnRfY2EuY3J0IC1wYXNzb3V0IHBhc3M6CisJcGsxMnV0aWwgLWkgc3Ns L25zcy9jbGllbnQucGZ4IC1kICJzcWw6JEAiIC1XICcnCisKKyMgQ2xpZW50IGNlcnRpZmljYXRl IHdpdGggZW5jcnlwdGVkIGtleSwgc2lnbmVkIGJ5IGNsaWVudCBDQQorc3NsL25zcy9jbGllbnQu Y3J0X19jbGllbnQtZW5jcnlwdGVkLXBlbS5rZXkuZGI6IHNzbC9jbGllbnQuY3J0CisJJChNS0RJ Ul9QKSAkQAorCWVjaG8gJ2RVbW15UF4jKycgPiAkQC5wYXNzCisJY2VydHV0aWwgLWQgInNxbDok QCIgLU4gLWYgJEAucGFzcworCWNlcnR1dGlsIC1kICJzcWw6JEAiIC1BIC1mICRALnBhc3MgLW4g c3NsL2NsaWVudC5jcnQgLWkgc3NsL2NsaWVudC5jcnQgLXQgIkNULEMsQyIKKwljZXJ0dXRpbCAt ZCAic3FsOiRAIiAtQSAtZiAkQC5wYXNzIC1uIGNsaWVudF9jYS5jcnQgLWkgc3NsL2NsaWVudF9j YS5jcnQgLXQgIkNULEMsQyIKKwljZXJ0dXRpbCAtZCAic3FsOiRAIiAtQSAtZiAkQC5wYXNzIC1u IHJvb3Qrc2VydmVyX2NhLmNydCAtaSBzc2wvcm9vdCtzZXJ2ZXJfY2EuY3J0IC10ICJDVCxDLEMi CisJb3BlbnNzbCBwa2NzMTIgLWV4cG9ydCAtb3V0IHNzbC9uc3MvY2xpZW50LWVuY3J5cHRlZC1w ZW0ucGZ4IC1pbmtleSBzc2wvY2xpZW50LWVuY3J5cHRlZC1wZW0ua2V5IC1pbiBzc2wvY2xpZW50 LmNydCAtY2VydGZpbGUgc3NsL2NsaWVudF9jYS5jcnQgLXBhc3NpbiBwYXNzOidkVW1teVBeIysn IC1wYXNzb3V0IHBhc3M6J2RVbW15UF4jKycKKwlwazEydXRpbCAtaSBzc2wvbnNzL2NsaWVudC1l bmNyeXB0ZWQtcGVtLnBmeCAtZCAic3FsOiRAIiAtVyAnZFVtbXlQXiMrJyAtayAkQC5wYXNzCisK ICMgQW5vdGhlciBjbGllbnQgY2VydGlmaWNhdGUsIHNpZ25lZCBieSB0aGUgY2xpZW50IENBLiBU aGlzIG9uZSBpcyByZXZva2VkLgogc3NsL2NsaWVudC1yZXZva2VkLmNydDogc3NsL2NsaWVudC1y ZXZva2VkLmtleSBzc2wvY2xpZW50X2NhLmNydCBjbGllbnQuY29uZmlnCiAJb3BlbnNzbCByZXEg LW5ldyAta2V5IHNzbC9jbGllbnQtcmV2b2tlZC5rZXkgLW91dCBzc2wvY2xpZW50LXJldm9rZWQu Y3NyIC1jb25maWcgY2xpZW50LmNvbmZpZwpAQCAtOTUsNiArMjM5LDE0IEBAIHNzbC9jbGllbnQt cmV2b2tlZC5jcnQ6IHNzbC9jbGllbnQtcmV2b2tlZC5rZXkgc3NsL2NsaWVudF9jYS5jcnQgY2xp ZW50LmNvbmZpZwogCW9wZW5zc2wgeDUwOSAtaW4gc3NsL3RlbXAuY3J0IC1vdXQgc3NsL2NsaWVu dC1yZXZva2VkLmNydCAjIHRvIGtlZXAganVzdCB0aGUgUEVNIGNlcnQKIAlybSBzc2wvY2xpZW50 LXJldm9rZWQuY3NyIHNzbC90ZW1wLmNydAogCitzc2wvbnNzL2NsaWVudC1yZXZva2VkLmNydF9f Y2xpZW50LXJldm9rZWQua2V5LmRiOiBzc2wvY2xpZW50LXJldm9rZWQuY3J0CisJJChNS0RJUl9Q KSAkQAorCWNlcnR1dGlsIC1kICJzcWw6JEAiIC1OIC0tZW1wdHktcGFzc3dvcmQKKwljZXJ0dXRp bCAtZCAic3FsOiRAIiAtQSAtbiBzc2wvY2xpZW50LXJldm9rZWQuY3J0IC1pIHNzbC9jbGllbnQt cmV2b2tlZC5jcnQgLXQgIkNULEMsQyIKKwljZXJ0dXRpbCAtZCAic3FsOiRAIiAtQSAtbiBjbGll bnRfY2EuY3J0IC1pIHNzbC9jbGllbnRfY2EuY3J0IC10ICJDVCxDLEMiCisJb3BlbnNzbCBwa2Nz MTIgLWV4cG9ydCAtb3V0IHNzbC9uc3MvY2xpZW50LXJldm9rZWQucGZ4IC1pbmtleSBzc2wvY2xp ZW50LXJldm9rZWQua2V5IC1pbiBzc2wvY2xpZW50LXJldm9rZWQuY3J0IC1jZXJ0ZmlsZSBzc2wv Y2xpZW50X2NhLmNydCAtcGFzc291dCBwYXNzOgorCXBrMTJ1dGlsIC1pIHNzbC9uc3MvY2xpZW50 LXJldm9rZWQucGZ4IC1kICJzcWw6JEAiIC1XICcnCisKICMgQ29udmVydCB0aGUga2V5IHRvIERF UiwgdG8gdGVzdCBvdXIgYmVoYXZpb3VyIHRoZXJlIHRvbwogc3NsL2NsaWVudC1kZXIua2V5OiBz c2wvY2xpZW50LmtleQogCW9wZW5zc2wgcnNhIC1pbiBzc2wvY2xpZW50LmtleSAtb3V0Zm9ybSBE RVIgLW91dCBzc2wvY2xpZW50LWRlci5rZXkKQEAgLTEyNywxOSArMjc5LDQwIEBAIHNzbC9yb290 K2NsaWVudF9jYS5jcnQ6IHNzbC9yb290X2NhLmNydCBzc2wvY2xpZW50X2NhLmNydAogc3NsL2Ns aWVudCtjbGllbnRfY2EuY3J0OiBzc2wvY2xpZW50LmNydCBzc2wvY2xpZW50X2NhLmNydAogCWNh dCAkXiA+ICRACiAKKyMgQ2xpZW50IGNlcnRpZmljYXRlLCBzaWduZWQgYnkgY2xpZW50IENBCitz c2wvbnNzL2NsaWVudCtjbGllbnRfY2EuY3J0X19jbGllbnQua2V5LmRiOiBzc2wvY2xpZW50K2Ns aWVudF9jYS5jcnQKKwkkKE1LRElSX1ApICRACisJY2VydHV0aWwgLWQgInNxbDokQCIgLU4gLS1l bXB0eS1wYXNzd29yZAorCWNlcnR1dGlsIC1kICJzcWw6JEAiIC1BIC1uIHNzbC9jbGllbnQrY2xp ZW50X2NhLmNydCAtaSBzc2wvY2xpZW50K2NsaWVudF9jYS5jcnQgLXQgIkNULEMsQyIKKwljZXJ0 dXRpbCAtZCAic3FsOiRAIiAtQSAtbiBzc2wvcm9vdCtzZXJ2ZXJfY2EuY3J0IC1pIHNzbC9yb290 K3NlcnZlcl9jYS5jcnQgLXQgIkNULEMsQyIKKwlvcGVuc3NsIHBrY3MxMiAtZXhwb3J0IC1vdXQg c3NsL25zcy9jbGllbnQucGZ4IC1pbmtleSBzc2wvY2xpZW50LmtleSAtaW4gc3NsL2NsaWVudC5j cnQgLWNlcnRmaWxlIHNzbC9jbGllbnRfY2EuY3J0IC1wYXNzb3V0IHBhc3M6CisJcGsxMnV0aWwg LWkgc3NsL25zcy9jbGllbnQucGZ4IC1kICJzcWw6JEAiIC1XICcnCisKICMjIyMgQ1JMcwogCiBz c2wvY2xpZW50LmNybDogc3NsL2NsaWVudC1yZXZva2VkLmNydAogCW9wZW5zc2wgY2EgLWNvbmZp ZyBjYXMuY29uZmlnIC1uYW1lIGNsaWVudF9jYSAtcmV2b2tlIHNzbC9jbGllbnQtcmV2b2tlZC5j cnQKIAlvcGVuc3NsIGNhIC1jb25maWcgY2FzLmNvbmZpZyAtbmFtZSBjbGllbnRfY2EgLWdlbmNy bCAtb3V0IHNzbC9jbGllbnQuY3JsCiAKK3NzbC9uc3MvY2xpZW50LmNybDogc3NsL2NsaWVudC5j cmwKKwlvcGVuc3NsIGNybCAtaW4gJF4gLW91dGZvcm0gZGVyIC1vdXQgJEAKKwogc3NsL3NlcnZl ci5jcmw6IHNzbC9zZXJ2ZXItcmV2b2tlZC5jcnQKIAlvcGVuc3NsIGNhIC1jb25maWcgY2FzLmNv bmZpZyAtbmFtZSBzZXJ2ZXJfY2EgLXJldm9rZSBzc2wvc2VydmVyLXJldm9rZWQuY3J0CiAJb3Bl bnNzbCBjYSAtY29uZmlnIGNhcy5jb25maWcgLW5hbWUgc2VydmVyX2NhIC1nZW5jcmwgLW91dCBz c2wvc2VydmVyLmNybAogCitzc2wvbnNzL3NlcnZlci5jcmw6IHNzbC9zZXJ2ZXIuY3JsCisJb3Bl bnNzbCBjcmwgLWluICReIC1vdXRmb3JtIGRlciAtb3V0ICRACisKIHNzbC9yb290LmNybDogc3Ns L3Jvb3RfY2EuY3J0CiAJb3BlbnNzbCBjYSAtY29uZmlnIGNhcy5jb25maWcgLW5hbWUgcm9vdF9j YSAtZ2VuY3JsIC1vdXQgc3NsL3Jvb3QuY3JsCiAKK3NzbC9uc3Mvcm9vdC5jcmw6IHNzbC9yb290 LmNybAorCW9wZW5zc2wgY3JsIC1pbiAkXiAtb3V0Zm9ybSBkZXIgLW91dCAkQAorCitzc2wvbnNz L3Jvb3QrY2xpZW50LmNybDogc3NsL3Jvb3QrY2xpZW50LmNybAorCW9wZW5zc2wgY3JsIC1pbiAk XiAtb3V0Zm9ybSBkZXIgLW91dCAkQAorCiAjIElmIGEgQ1JMIGlzIHVzZWQsIE9wZW5TU0wgcmVx dWlyZXMgYSBDUkwgZmlsZSBmb3IgKmFsbCogdGhlIENBcyBpbiB0aGUKICMgY2hhaW4sIGV2ZW4g aWYgc29tZSBvZiB0aGVtIGFyZSBlbXB0eS4KIHNzbC9yb290K3NlcnZlci5jcmw6IHNzbC9yb290 LmNybCBzc2wvc2VydmVyLmNybApAQCAtMTQ3LDEzICszMjAsNzMgQEAgc3NsL3Jvb3Qrc2VydmVy LmNybDogc3NsL3Jvb3QuY3JsIHNzbC9zZXJ2ZXIuY3JsCiBzc2wvcm9vdCtjbGllbnQuY3JsOiBz c2wvcm9vdC5jcmwgc3NsL2NsaWVudC5jcmwKIAljYXQgJF4gPiAkQAogCisjIyMjIE5TUyBzcGVj aWZpYyBjZXJ0aWZpY2F0ZXMgYW5kIGtleXMKKworI05TU0ZJTEVTMiA6PSBzc2wvbnNzL25hdGl2 ZV9jYS1yb290LmRiIFwKKyMJc3NsL25zcy9uYXRpdmVfc2VydmVyLXJvb3QuZGIgXAorIwlzc2wv bnNzL25hdGl2ZV9jbGllbnQtcm9vdC5kYgorCisjbnNzZmlsZXMyOiAkKE5TU0ZJTEVTMikKKwor c3NsL25zcy9uYXRpdmVfY2EtJS5kYjoKKwkkKE1LRElSX1ApIHNzbC9uc3MvbmF0aXZlX2NhLSQq LmRiCisJY2VydHV0aWwgLU4gLWQgInNxbDpzc2wvbnNzL25hdGl2ZV9jYS0kKi5kYi8iIC0tZW1w dHktcGFzc3dvcmQKKwllY2hvIHkgPiBuc3NfY2FfcGFyYW1zLnR4dAorCWVjaG8gMTAgPj4gbnNz X2NhX3BhcmFtcy50eHQKKwllY2hvIHkgPj4gbnNzX2NhX3BhcmFtcy50eHQKKwljYXQgbnNzX2Nh X3BhcmFtcy50eHQgfCBjZXJ0dXRpbCAtUyAtZCAic3FsOnNzbC9uc3MvbmF0aXZlX2NhLSQqLmRi LyIgLW4gY2EtJCogXAorCS1zICJDTj1UZXN0IENBIGZvciBQb3N0Z3JlU1FMIFNTTCByZWdyZXNz aW9uIHRlc3RzLE9VPVBvc3RncmVTUUwgdGVzdCBzdWl0ZSIgXAorCS14IC1rIHJzYSAtZyAyMDQ4 IC1tIDU0MzIgLXQgQ1R1LENUdSxDVHUgXAorCS0ta2V5VXNhZ2UgY2VydFNpZ25pbmcgLTIgLS1u c0NlcnRUeXBlIHNzbENBLHNtaW1lQ0Esb2JqZWN0U2lnbmluZ0NBIFwKKwkteiBNYWtlZmlsZSAt WiBTSEEyNTYKKwlybSBuc3NfY2FfcGFyYW1zLnR4dAorCitzc2wvbnNzL25hdGl2ZV9jYS0lLnBl bTogc3NsL25zcy9uYXRpdmVfY2EtJS5kYgorCWNlcnR1dGlsIC1MIC1kICJzcWw6c3NsL25zcy9u YXRpdmVfY2EtJCouZGIvIiAtbiBjYS0kKiAtYSA+IHNzbC9uc3MvbmF0aXZlX2NhLSQqLnBlbQor CisjIENyZWF0ZSBhbmQgc2lnbiBhIHNlcnZlciBjZXJ0aWZpY2F0ZQorc3NsL25zcy9uYXRpdmVf c2VydmVyLSUuZGI6IHNzbC9uc3MvbmF0aXZlX2NhLSUucGVtCisJJChNS0RJUl9QKSBzc2wvbnNz L25hdGl2ZV9zZXJ2ZXItJCouZGIKKwljZXJ0dXRpbCAtTiAtZCAic3FsOnNzbC9uc3MvbmF0aXZl X3NlcnZlci0kKi5kYi8iIC0tZW1wdHktcGFzc3dvcmQKKwljZXJ0dXRpbCAtUiAtZCAic3FsOnNz bC9uc3MvbmF0aXZlX3NlcnZlci0kKi5kYi8iIFwKKwkJLXMgIkNOPWNvbW1vbi1uYW1lLnBnLXNz bHRlc3QudGVzdCxPVT1Qb3N0Z3JlU1FMIHRlc3Qgc3VpdGUiIFwKKwkJLW8gc3NsL25zcy9uYXRp dmVfc2VydmVyLSQqLmNzciAtZyAyMDQ4IC1aIFNIQTI1NiAteiBNYWtlZmlsZQorCWVjaG8gMSA+ IG5zc19zZXJ2ZXJfcGFyYW1zLnR4dAorCWVjaG8gOSA+PiBuc3Nfc2VydmVyX3BhcmFtcy50eHQK KwljYXQgbnNzX3NlcnZlcl9wYXJhbXMudHh0IHwgY2VydHV0aWwgLUMgLWQgInNxbDpzc2wvbnNz L25hdGl2ZV9jYS0kKi5kYi8iIC1jIGNhLXJvb3QgLWkgc3NsL25zcy9uYXRpdmVfc2VydmVyLSQq LmNzciBcCisJCS1vIHNzbC9uc3MvbmF0aXZlX3NlcnZlcl8kKi5kZXIgLW0gNTQzMyAtLWtleVVz YWdlIGRhdGFFbmNpcGhlcm1lbnQsZGlnaXRhbFNpZ25hdHVyZSxrZXlFbmNpcGhlcm1lbnQgXAor CQktLW5zQ2VydFR5cGUgc3NsU2VydmVyIC0tY2VydFZlcnNpb24gMSAtWiBTSEEyNTYKKwljZXJ0 dXRpbCAtQSAtZCAic3FsOnNzbC9uc3MvbmF0aXZlX3NlcnZlci0kKi5kYi8iIC1uIGNhLSQqIC10 IENUdSxDVHUsQ1R1IC1hIC1pIHNzbC9uc3MvbmF0aXZlX2NhLSQqLnBlbQorCWNlcnR1dGlsIC1B IC1kICJzcWw6c3NsL25zcy9uYXRpdmVfc2VydmVyLSQqLmRiLyIgLW4gc3NsL25hdGl2ZV9zZXJ2 ZXItJCouY3J0IC10IENUdSxDVHUsQ1R1IC1pIHNzbC9uc3MvbmF0aXZlX3NlcnZlcl8kKi5kZXIK KwlybSBuc3Nfc2VydmVyX3BhcmFtcy50eHQKKworIyBDcmVhdGUgYW5kIHNpZ24gYSBjbGllbnQg Y2VydGlmaWNhdGUKK3NzbC9uc3MvbmF0aXZlX2NsaWVudC0lLmRiOiBzc2wvbnNzL25hdGl2ZV9j YS0lLnBlbQorCSQoTUtESVJfUCkgc3NsL25zcy9uYXRpdmVfY2xpZW50LSQqLmRiCisJY2VydHV0 aWwgLU4gLWQgInNxbDpzc2wvbnNzL25hdGl2ZV9jbGllbnQtJCouZGIvIiAtLWVtcHR5LXBhc3N3 b3JkCisJY2VydHV0aWwgLVIgLWQgInNxbDpzc2wvbnNzL25hdGl2ZV9jbGllbnQtJCouZGIvIiAt cyAiQ049c3NsdGVzdHVzZXIsT1U9UG9zdGdyZVNRTCB0ZXN0IHN1aXRlIiBcCisJCS1vIHNzbC9u c3MvbmF0aXZlX2NsaWVudC0kKi5jc3IgLWcgMjA0OCAtWiBTSEEyNTYgLXogTWFrZWZpbGUKKwlj ZXJ0dXRpbCAtQyAtZCAic3FsOnNzbC9uc3MvbmF0aXZlX2NhLSQqLmRiLyIgLWMgY2EtJCogLWkg c3NsL25zcy9uYXRpdmVfY2xpZW50LSQqLmNzciAtbyBzc2wvbnNzL25hdGl2ZV9jbGllbnQtJCou ZGVyIFwKKwkJLW0gNTQzNCAtLWtleVVzYWdlIGtleUVuY2lwaGVybWVudCxkYXRhRW5jaXBoZXJt ZW50LGRpZ2l0YWxTaWduYXR1cmUgLS1uc0NlcnRUeXBlIHNzbENsaWVudCBcCisJCS0tY2VydFZl cnNpb24gMSAtWiBTSEEyNTYKKwljZXJ0dXRpbCAtQSAtZCAic3FsOnNzbC9uc3MvbmF0aXZlX2Ns aWVudC0kKi5kYiIgLW4gY2EtJCogLXQgQ1R1LENUdSxDVHUgLWEgLWkgc3NsL25zcy9uYXRpdmVf Y2EtJCoucGVtCisJY2VydHV0aWwgLUEgLWQgInNxbDpzc2wvbnNzL25hdGl2ZV9jbGllbnQtJCou ZGIiIC1uIG5hdGl2ZV9jbGllbnQtJCogLXQgQ1R1LENUdSxDVHUgLWkgc3NsL25zcy9uYXRpdmVf Y2xpZW50LSQqLmRlcgorCituc3NmaWxlczJjbGVhbjoKKwlybSAtcmYgc3NsL25zcworCiAuUEhP Tlk6IHNzbGZpbGVzLWNsZWFuCiBzc2xmaWxlcy1jbGVhbjoKIAlybSAtZiAkKFNTTEZJTEVTKSBz c2wvY2xpZW50X2NhLnNybCBzc2wvc2VydmVyX2NhLnNybCBzc2wvY2xpZW50X2NhLWNlcnRpbmRl eCogc3NsL3NlcnZlcl9jYS1jZXJ0aW5kZXgqIHNzbC9yb290X2NhLWNlcnRpbmRleCogc3NsL3Jv b3RfY2Euc3JsIHNzbC90ZW1wX2NhLmNydCBzc2wvdGVtcF9jYV9zaWduZWQuY3J0CiAKKy5QSE9O WTogbnNzZmlsZXMtY2xlYW4KK25zc2ZpbGVzLWNsZWFuOgorCXJtIC1yZiBzc2wvbnNzCisKIGNs ZWFuIGRpc3RjbGVhbiBtYWludGFpbmVyLWNsZWFuOgogCXJtIC1yZiB0bXBfY2hlY2sKIAlybSAt cmYgc3NsLyoub2xkIHNzbC9uZXdfY2VydHNfZGlyIHNzbC9jbGllbnQqX3RtcC5rZXkKKwlybSAt cmYgc3NsL25zcwogCiAjIERvZXNuJ3QgZGVwZW5kIG9uICQoU1NMRklMRVMpIGJlY2F1c2Ugd2Ug ZG9uJ3QgcmVidWlsZCB0aGVtIGJ5IGRlZmF1bHQKIGNoZWNrOgpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3Qvc3NsL3QvMDAxX3NzbHRlc3RzLnBsIGIvc3JjL3Rlc3Qvc3NsL3QvMDAxX3NzbHRlc3RzLnBs CmluZGV4IGZkMjcyN2I1NjguLjZiOGJjYTI4NDYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3NzbC90 LzAwMV9zc2x0ZXN0cy5wbAorKysgYi9zcmMvdGVzdC9zc2wvdC8wMDFfc3NsdGVzdHMucGwKQEAg LTQsMTcgKzQsMjQgQEAgdXNlIFBvc3RncmVzTm9kZTsKIHVzZSBUZXN0TGliOwogdXNlIFRlc3Q6 Ok1vcmU7CiAKLXVzZSBGaWxlOjpDb3B5OwotCiB1c2UgRmluZEJpbjsKIHVzZSBsaWIgJEZpbmRC aW46OlJlYWxCaW47CiAKLXVzZSBTU0xTZXJ2ZXI7Cit1c2UgU1NMOjpTZXJ2ZXI7CisKK215ICRv cGVuc3NsOworbXkgJG5zczsKIAotaWYgKCRFTlZ7d2l0aF9vcGVuc3NsfSBlcSAneWVzJykKK2lm ICgkRU5We3dpdGhfc3NsfSBlcSAnb3BlbnNzbCcpCiB7CisJJG9wZW5zc2wgPSAxOwogCXBsYW4g dGVzdHMgPT4gOTM7CiB9CitlbHNpZiAoJEVOVnt3aXRoX3NzbH0gZXEgJ25zcycpCit7CisJJG5z cyA9IDE7CisJcGxhbiB0ZXN0cyA9PiA5OTsKK30KIGVsc2UKIHsKIAlwbGFuIHNraXBfYWxsID0+ ICdTU0wgbm90IHN1cHBvcnRlZCBieSB0aGlzIGJ1aWxkJzsKQEAgLTMyLDMyICszOSw2IEBAIG15 ICRTRVJWRVJIT1NUQ0lEUiA9ICcxMjcuMC4wLjEvMzInOwogIyBBbGxvY2F0aW9uIG9mIGJhc2Ug Y29ubmVjdGlvbiBzdHJpbmcgc2hhcmVkIGFtb25nIG11bHRpcGxlIHRlc3RzLgogbXkgJGNvbW1v bl9jb25uc3RyOwogCi0jIFRoZSBjbGllbnQncyBwcml2YXRlIGtleSBtdXN0IG5vdCBiZSB3b3Js ZC1yZWFkYWJsZSwgc28gdGFrZSBhIGNvcHkKLSMgb2YgdGhlIGtleSBzdG9yZWQgaW4gdGhlIGNv ZGUgdHJlZSBhbmQgdXBkYXRlIGl0cyBwZXJtaXNzaW9ucy4KLSMKLSMgVGhpcyBjaGFuZ2VzIHNz bC9jbGllbnQua2V5IHRvIHNzbC9jbGllbnRfdG1wLmtleSBldGMgZm9yIHRoZSByZXN0Ci0jIG9m IHRoZSB0ZXN0cy4KLW15IEBrZXlzID0gKAotCSJjbGllbnQiLCAgICAgImNsaWVudC1yZXZva2Vk IiwKLQkiY2xpZW50LWRlciIsICJjbGllbnQtZW5jcnlwdGVkLXBlbSIsCi0JImNsaWVudC1lbmNy eXB0ZWQtZGVyIik7Ci1mb3JlYWNoIG15ICRrZXkgKEBrZXlzKQotewotCWNvcHkoInNzbC8ke2tl eX0ua2V5IiwgInNzbC8ke2tleX1fdG1wLmtleSIpCi0JICBvciBkaWUKLQkgICJjb3VsZG4ndCBj b3B5IHNzbC8ke2tleX0ua2V5IHRvIHNzbC8ke2tleX1fdG1wLmtleSBmb3IgcGVybWlzc2lvbnMg Y2hhbmdlOiAkISI7Ci0JY2htb2QgMDYwMCwgInNzbC8ke2tleX1fdG1wLmtleSIKLQkgIG9yIGRp ZSAiZmFpbGVkIHRvIGNoYW5nZSBwZXJtaXNzaW9ucyBvbiBzc2wvJHtrZXl9X3RtcC5rZXk6ICQh IjsKLX0KLQotIyBBbHNvIG1ha2UgYSBjb3B5IG9mIHRoYXQgZXhwbGljaXRseSB3b3JsZC1yZWFk YWJsZS4gIFdlIGNhbid0Ci0jIG5lY2Vzc2FyaWx5IHJlbHkgb24gdGhlIGZpbGUgaW4gdGhlIHNv dXJjZSB0cmVlIGhhdmluZyB0aG9zZQotIyBwZXJtaXNzaW9ucy4gIEFkZCBpdCB0byBAa2V5cyB0 byBpbmNsdWRlIGl0IGluIHRoZSBmaW5hbCBjbGVhbgotIyB1cCBwaGFzZS4KLWNvcHkoInNzbC9j bGllbnQua2V5IiwgInNzbC9jbGllbnRfd3JvbmdwZXJtc190bXAua2V5Iik7Ci1jaG1vZCAwNjQ0 LCAic3NsL2NsaWVudF93cm9uZ3Blcm1zX3RtcC5rZXkiOwotcHVzaCBAa2V5cywgJ2NsaWVudF93 cm9uZ3Blcm1zJzsKLQogIyMjIyBTZXQgdXAgdGhlIHNlcnZlci4KIAogbm90ZSAic2V0dGluZyB1 cCBkYXRhIGRpcmVjdG9yeSI7CkBAIC03MiwzNiArNTMsNjUgQEAgJG5vZGUtPnN0YXJ0OwogCiAj IFJ1biB0aGlzIGJlZm9yZSB3ZSBsb2NrIGRvd24gYWNjZXNzIGJlbG93LgogbXkgJHJlc3VsdCA9 ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNIT1cgc3NsX2xpYnJhcnkiKTsKLWlzKCRy ZXN1bHQsICdPcGVuU1NMJywgJ3NzbF9saWJyYXJ5IHBhcmFtZXRlcicpOworaXMoJHJlc3VsdCwg U1NMOjpTZXJ2ZXI6OnNzbF9saWJyYXJ5KCksICdzc2xfbGlicmFyeSBwYXJhbWV0ZXInKTsKIAog Y29uZmlndXJlX3Rlc3Rfc2VydmVyX2Zvcl9zc2woJG5vZGUsICRTRVJWRVJIT1NUQUREUiwgJFNF UlZFUkhPU1RDSURSLAogCSd0cnVzdCcpOwogCiBub3RlICJ0ZXN0aW5nIHBhc3N3b3JkLXByb3Rl Y3RlZCBrZXlzIjsKIAotb3BlbiBteSAkc3NsY29uZiwgJz4nLCAkbm9kZS0+ZGF0YV9kaXIgLiAi L3NzbGNvbmZpZy5jb25mIjsKLXByaW50ICRzc2xjb25mICJzc2w9b25cbiI7Ci1wcmludCAkc3Ns Y29uZiAic3NsX2NlcnRfZmlsZT0nc2VydmVyLWNuLW9ubHkuY3J0J1xuIjsKLXByaW50ICRzc2xj b25mICJzc2xfa2V5X2ZpbGU9J3NlcnZlci1wYXNzd29yZC5rZXknXG4iOwotcHJpbnQgJHNzbGNv bmYgInNzbF9wYXNzcGhyYXNlX2NvbW1hbmQ9J2VjaG8gd3JvbmdwYXNzd29yZCdcbiI7Ci1jbG9z ZSAkc3NsY29uZjsKKyMgU2luY2UgdGhlIHBhc3NwaHJhc2UgY2FsbGJhY2tzIG9wZXJhdGUgYXQg ZGlmZmVyZW50IHN0YWdlcyBpbiBPcGVuU1NMIGFuZAorIyBOU1Mgd2UgaGF2ZSB0d28gc2VwYXJh dGUgYmxvY2tzIGZvciB0aGVtLgorU0tJUDoKK3sKKwlza2lwICJDZXJ0aWZpY2F0ZSBwYXNzcGhy YXNlcyBhcmVuJ3QgY2hlY2tlZCBvbiBzZXJ2ZXIgcmVzdGFydCBpbiBOU1MiLCAyCisJICBpZiAo JG5zcyk7CisKKwlzZXRfc2VydmVyX2NlcnQoJG5vZGUsICdzZXJ2ZXItY24tb25seScsICdyb290 K2NsaWVudF9jYScsCisJCQkJCSAgICdzZXJ2ZXItcGFzc3dvcmQnLCAnZWNobyB3cm9uZ3Bhc3N3 b3JkJyk7CisJY29tbWFuZF9mYWlscygKKwkJWyAncGdfY3RsJywgJy1EJywgJG5vZGUtPmRhdGFf ZGlyLCAnLWwnLCAkbm9kZS0+bG9nZmlsZSwgJ3Jlc3RhcnQnIF0sCisJCSdyZXN0YXJ0IGZhaWxz IHdpdGggcGFzc3dvcmQtcHJvdGVjdGVkIGtleSBmaWxlIHdpdGggd3JvbmcgcGFzc3dvcmQnKTsK Kwkkbm9kZS0+X3VwZGF0ZV9waWQoMCk7CisKKwlzZXRfc2VydmVyX2NlcnQoJG5vZGUsICdzZXJ2 ZXItY24tb25seScsICdyb290K2NsaWVudF9jYScsCisJCQkJCSdzZXJ2ZXItcGFzc3dvcmQnLCAn ZWNobyBzZWNyZXQxJyk7CisJY29tbWFuZF9vaygKKwkJWyAncGdfY3RsJywgJy1EJywgJG5vZGUt PmRhdGFfZGlyLCAnLWwnLCAkbm9kZS0+bG9nZmlsZSwgJ3Jlc3RhcnQnIF0sCisJCSdyZXN0YXJ0 IHN1Y2NlZWRzIHdpdGggcGFzc3dvcmQtcHJvdGVjdGVkIGtleSBmaWxlJyk7CisJJG5vZGUtPl91 cGRhdGVfcGlkKDEpOworfQogCi1jb21tYW5kX2ZhaWxzKAotCVsgJ3BnX2N0bCcsICctRCcsICRu b2RlLT5kYXRhX2RpciwgJy1sJywgJG5vZGUtPmxvZ2ZpbGUsICdyZXN0YXJ0JyBdLAotCSdyZXN0 YXJ0IGZhaWxzIHdpdGggcGFzc3dvcmQtcHJvdGVjdGVkIGtleSBmaWxlIHdpdGggd3JvbmcgcGFz c3dvcmQnKTsKLSRub2RlLT5fdXBkYXRlX3BpZCgwKTsKK1NLSVA6Cit7CisJc2tpcCAiQ2VydGlm aWNhdGUgcGFzc3BocmFzZXMgYXJlIGNoZWNrZWQgb24gY29ubmVjdGlvbiBpbiBOU1MiLCA1CisJ ICBpZiAoJG9wZW5zc2wpOwogCi1vcGVuICRzc2xjb25mLCAnPicsICRub2RlLT5kYXRhX2RpciAu ICIvc3NsY29uZmlnLmNvbmYiOwotcHJpbnQgJHNzbGNvbmYgInNzbD1vblxuIjsKLXByaW50ICRz c2xjb25mICJzc2xfY2VydF9maWxlPSdzZXJ2ZXItY24tb25seS5jcnQnXG4iOwotcHJpbnQgJHNz bGNvbmYgInNzbF9rZXlfZmlsZT0nc2VydmVyLXBhc3N3b3JkLmtleSdcbiI7Ci1wcmludCAkc3Ns Y29uZiAic3NsX3Bhc3NwaHJhc2VfY29tbWFuZD0nZWNobyBzZWNyZXQxJ1xuIjsKLWNsb3NlICRz c2xjb25mOworCXNldF9zZXJ2ZXJfY2VydCgkbm9kZSwgJ3NlcnZlci1jbi1vbmx5JywgJ3Jvb3Qr Y2xpZW50X2NhJywKKwkJCQkJICAgJ3NlcnZlci1wYXNzd29yZCcsICdlY2hvIHdyb25ncGFzc3dv cmQnKTsKKwljb21tYW5kX29rKAorCQlbICdwZ19jdGwnLCAnLUQnLCAkbm9kZS0+ZGF0YV9kaXIs ICctbCcsICRub2RlLT5sb2dmaWxlLCAncmVzdGFydCcgXSwKKwkJJ3Jlc3RhcnQgZmFpbHMgd2l0 aCBwYXNzd29yZC1wcm90ZWN0ZWQga2V5IGZpbGUgd2l0aCB3cm9uZyBwYXNzd29yZCcpOworCSRu b2RlLT5fdXBkYXRlX3BpZCgxKTsKIAotY29tbWFuZF9vaygKLQlbICdwZ19jdGwnLCAnLUQnLCAk bm9kZS0+ZGF0YV9kaXIsICctbCcsICRub2RlLT5sb2dmaWxlLCAncmVzdGFydCcgXSwKLQkncmVz dGFydCBzdWNjZWVkcyB3aXRoIHBhc3N3b3JkLXByb3RlY3RlZCBrZXkgZmlsZScpOwotJG5vZGUt Pl91cGRhdGVfcGlkKDEpOworCXRlc3RfY29ubmVjdF9mYWlscygKKwkJInVzZXI9c3NsdGVzdHVz ZXIgZGJuYW1lPXRydXN0ZGIgc3NsY2VydD1pbnZhbGlkIGhvc3RhZGRyPSRTRVJWRVJIT1NUQURE UiBob3N0PWNvbW1vbi1uYW1lLnBnLXNzbHRlc3QudGVzdCIsCisJCSJzc2xyb290Y2VydD1pbnZh bGlkIHNzbG1vZGU9cmVxdWlyZSIsCisJCXFyL1xRU1NMIGVycm9yXEUvLAorCQkiY29ubmVjdCB0 byBzZXJ2ZXIgd2l0aCBpbmNvcnJlY3Qga2V5IHBhc3N3b3JkIGNvbmZpZ3VyZWQiKTsKKworCXNl dF9zZXJ2ZXJfY2VydCgkbm9kZSwgJ3NlcnZlci1jbi1vbmx5JywgJ3Jvb3QrY2xpZW50X2NhJywK KwkJCQkJICAgJ3NlcnZlci1wYXNzd29yZCcsICdlY2hvIHNlY3JldDEnKTsKKwljb21tYW5kX29r KAorCQlbICdwZ19jdGwnLCAnLUQnLCAkbm9kZS0+ZGF0YV9kaXIsICctbCcsICRub2RlLT5sb2dm aWxlLCAncmVzdGFydCcgXSwKKwkJJ3Jlc3RhcnQgZmFpbHMgd2l0aCBwYXNzd29yZC1wcm90ZWN0 ZWQga2V5IGZpbGUgd2l0aCB3cm9uZyBwYXNzd29yZCcpOworCSRub2RlLT5fdXBkYXRlX3BpZCgx KTsKKworCXRlc3RfY29ubmVjdF9vaygKKwkJInVzZXI9c3NsdGVzdHVzZXIgZGJuYW1lPXRydXN0 ZGIgc3NsY2VydD1pbnZhbGlkIGhvc3RhZGRyPSRTRVJWRVJIT1NUQUREUiBob3N0PWNvbW1vbi1u YW1lLnBnLXNzbHRlc3QudGVzdCIsCisJCSJzc2xyb290Y2VydD1pbnZhbGlkIHNzbG1vZGU9cmVx dWlyZSIsCisJCSJjb25uZWN0IHRvIHNlcnZlciB3aXRoIGNvcnJlY3Qga2V5IHBhc3N3b3JkIGNv bmZpZ3VyZWQiKTsKK30KIAogIyBUZXN0IGNvbXBhdGliaWxpdHkgb2YgU1NMIHByb3RvY29scy4K ICMgVExTdjEuMSBpcyBsb3dlciB0aGFuIFRMU3YxLjIsIHNvIGl0IHdvbid0IHdvcmsuCkBAIC0x NDksODIgKzE1OSwxMDUgQEAgdGVzdF9jb25uZWN0X29rKAogdGVzdF9jb25uZWN0X2ZhaWxzKAog CSRjb21tb25fY29ubnN0ciwKIAkic3Nscm9vdGNlcnQ9aW52YWxpZCBzc2xtb2RlPXZlcmlmeS1j YSIsCi0JcXIvcm9vdCBjZXJ0aWZpY2F0ZSBmaWxlICJpbnZhbGlkIiBkb2VzIG5vdCBleGlzdC8s CisJcXIvcm9vdCBjZXJ0aWZpY2F0ZSBmaWxlICJpbnZhbGlkIiBkb2VzIG5vdCBleGlzdHxQZWVy J3MgQ2VydGlmaWNhdGUgaXNzdWVyIGlzIG5vdCByZWNvZ25pemVkLywKIAkiY29ubmVjdCB3aXRo b3V0IHNlcnZlciByb290IGNlcnQgc3NsbW9kZT12ZXJpZnktY2EiKTsKIHRlc3RfY29ubmVjdF9m YWlscygKIAkkY29tbW9uX2Nvbm5zdHIsCiAJInNzbHJvb3RjZXJ0PWludmFsaWQgc3NsbW9kZT12 ZXJpZnktZnVsbCIsCi0JcXIvcm9vdCBjZXJ0aWZpY2F0ZSBmaWxlICJpbnZhbGlkIiBkb2VzIG5v dCBleGlzdC8sCisJcXIvcm9vdCBjZXJ0aWZpY2F0ZSBmaWxlICJpbnZhbGlkIiBkb2VzIG5vdCBl eGlzdHxQZWVyJ3MgQ2VydGlmaWNhdGUgaXNzdWVyIGlzIG5vdCByZWNvZ25pemVkLywKIAkiY29u bmVjdCB3aXRob3V0IHNlcnZlciByb290IGNlcnQgc3NsbW9kZT12ZXJpZnktZnVsbCIpOwogCiAj IFRyeSB3aXRoIHdyb25nIHJvb3QgY2VydCwgc2hvdWxkIGZhaWwuIChXZSdyZSB1c2luZyB0aGUg Y2xpZW50IENBIGFzIHRoZQogIyByb290LCBidXQgdGhlIHNlcnZlcidzIGtleSBpcyBzaWduZWQg YnkgdGhlIHNlcnZlciBDQS4pCi10ZXN0X2Nvbm5lY3RfZmFpbHMoJGNvbW1vbl9jb25uc3RyLAot CSJzc2xyb290Y2VydD1zc2wvY2xpZW50X2NhLmNydCBzc2xtb2RlPXJlcXVpcmUiLAotCXFyL1NT TCBlcnJvci8sICJjb25uZWN0IHdpdGggd3Jvbmcgc2VydmVyIHJvb3QgY2VydCBzc2xtb2RlPXJl cXVpcmUiKTsKLXRlc3RfY29ubmVjdF9mYWlscygkY29tbW9uX2Nvbm5zdHIsCi0JInNzbHJvb3Rj ZXJ0PXNzbC9jbGllbnRfY2EuY3J0IHNzbG1vZGU9dmVyaWZ5LWNhIiwKLQlxci9TU0wgZXJyb3Iv LCAiY29ubmVjdCB3aXRoIHdyb25nIHNlcnZlciByb290IGNlcnQgc3NsbW9kZT12ZXJpZnktY2Ei KTsKLXRlc3RfY29ubmVjdF9mYWlscygkY29tbW9uX2Nvbm5zdHIsCi0JInNzbHJvb3RjZXJ0PXNz bC9jbGllbnRfY2EuY3J0IHNzbG1vZGU9dmVyaWZ5LWZ1bGwiLAotCXFyL1NTTCBlcnJvci8sICJj b25uZWN0IHdpdGggd3Jvbmcgc2VydmVyIHJvb3QgY2VydCBzc2xtb2RlPXZlcmlmeS1mdWxsIik7 Ci0KLSMgVHJ5IHdpdGgganVzdCB0aGUgc2VydmVyIENBJ3MgY2VydC4gVGhpcyBmYWlscyBiZWNh dXNlIHRoZSByb290IGZpbGUKLSMgbXVzdCBjb250YWluIHRoZSB3aG9sZSBjaGFpbiB1cCB0byB0 aGUgcm9vdCBDQS4KLXRlc3RfY29ubmVjdF9mYWlscygkY29tbW9uX2Nvbm5zdHIsCi0JInNzbHJv b3RjZXJ0PXNzbC9zZXJ2ZXJfY2EuY3J0IHNzbG1vZGU9dmVyaWZ5LWNhIiwKLQlxci9TU0wgZXJy b3IvLCAiY29ubmVjdCB3aXRoIHNlcnZlciBDQSBjZXJ0LCB3aXRob3V0IHJvb3QgQ0EiKTsKK3Rl c3RfY29ubmVjdF9mYWlscygKKwkkY29tbW9uX2Nvbm5zdHIsCisJInNzbHJvb3RjZXJ0PXNzbC9j bGllbnRfY2EuY3J0IHNzbG1vZGU9cmVxdWlyZSBjZXJ0X2RhdGFiYXNlPXNzbC9uc3MvY2xpZW50 X2NhLmNydC5kYiIsCisJcXIvU1NMIGVycm9yLywKKwkiY29ubmVjdCB3aXRoIHdyb25nIHNlcnZl ciByb290IGNlcnQgc3NsbW9kZT1yZXF1aXJlIik7Cit0ZXN0X2Nvbm5lY3RfZmFpbHMoCisJJGNv bW1vbl9jb25uc3RyLAorCSJzc2xyb290Y2VydD1zc2wvY2xpZW50X2NhLmNydCBzc2xtb2RlPXZl cmlmeS1jYSBjZXJ0X2RhdGFiYXNlPXNzbC9uc3MvY2xpZW50X2NhLmNydC5kYiIsCisJcXIvU1NM IGVycm9yLywKKwkiY29ubmVjdCB3aXRoIHdyb25nIHNlcnZlciByb290IGNlcnQgc3NsbW9kZT12 ZXJpZnktY2EiKTsKK3Rlc3RfY29ubmVjdF9mYWlscygKKwkkY29tbW9uX2Nvbm5zdHIsCisJInNz bHJvb3RjZXJ0PXNzbC9jbGllbnRfY2EuY3J0IHNzbG1vZGU9dmVyaWZ5LWZ1bGwgY2VydF9kYXRh YmFzZT1zc2wvbnNzL2NsaWVudF9jYS5jcnQuZGIiLAorCXFyL1NTTCBlcnJvci8sCisJImNvbm5l Y3Qgd2l0aCB3cm9uZyBzZXJ2ZXIgcm9vdCBjZXJ0IHNzbG1vZGU9dmVyaWZ5LWZ1bGwiKTsKKwor U0tJUDoKK3sKKwkjIE5TUyBzdXBwb3J0cyBwYXJ0aWFsIGNoYWluIHZhbGlkYXRpb24sIHNvIHRo aXMgdGVzdCBkb2Vzbid0IHdvcmsgdGhlcmUuCisJIyBUaGlzIGlzIHNpbWlsYXIgdG8gdGhlIE9w ZW5TU0wgb3B0aW9uIFg1MDlfVl9GTEFHX1BBUlRJQUxfQ0hBSU4gd2hpY2gKKwkjIHdlIGRvbid0 IGFsbG93LgorCXNraXAgIk5TUyBzdXBwb3J0IHBhcnRpYWwgY2hhaW4gdmFsaWRhdGlvbiIsIDIg aWYgKCRuc3MpOworCSMgVHJ5IHdpdGgganVzdCB0aGUgc2VydmVyIENBJ3MgY2VydC4gVGhpcyBm YWlscyBiZWNhdXNlIHRoZSByb290IGZpbGUKKwkjIG11c3QgY29udGFpbiB0aGUgd2hvbGUgY2hh aW4gdXAgdG8gdGhlIHJvb3QgQ0EuCisJdGVzdF9jb25uZWN0X2ZhaWxzKCRjb21tb25fY29ubnN0 ciwKKwkJInNzbHJvb3RjZXJ0PXNzbC9zZXJ2ZXJfY2EuY3J0IHNzbG1vZGU9dmVyaWZ5LWNhIiwK KwkJcXIvU1NMIGVycm9yLywgImNvbm5lY3Qgd2l0aCBzZXJ2ZXIgQ0EgY2VydCwgd2l0aG91dCBy b290IENBIik7Cit9CiAKICMgQW5kIGZpbmFsbHksIHdpdGggdGhlIGNvcnJlY3Qgcm9vdCBjZXJ0 LgogdGVzdF9jb25uZWN0X29rKAogCSRjb21tb25fY29ubnN0ciwKLQkic3Nscm9vdGNlcnQ9c3Ns L3Jvb3Qrc2VydmVyX2NhLmNydCBzc2xtb2RlPXJlcXVpcmUiLAorCSJzc2xyb290Y2VydD1zc2wv cm9vdCtzZXJ2ZXJfY2EuY3J0IHNzbG1vZGU9cmVxdWlyZSBjZXJ0X2RhdGFiYXNlPXNzbC9uc3Mv cm9vdCtzZXJ2ZXJfY2EuY3J0LmRiIiwKIAkiY29ubmVjdCB3aXRoIGNvcnJlY3Qgc2VydmVyIENB IGNlcnQgZmlsZSBzc2xtb2RlPXJlcXVpcmUiKTsKIHRlc3RfY29ubmVjdF9vaygKIAkkY29tbW9u X2Nvbm5zdHIsCi0JInNzbHJvb3RjZXJ0PXNzbC9yb290K3NlcnZlcl9jYS5jcnQgc3NsbW9kZT12 ZXJpZnktY2EiLAorCSJzc2xyb290Y2VydD1zc2wvcm9vdCtzZXJ2ZXJfY2EuY3J0IHNzbG1vZGU9 dmVyaWZ5LWNhIGNlcnRfZGF0YWJhc2U9c3NsL25zcy9yb290K3NlcnZlcl9jYS5jcnQuZGIiLAog CSJjb25uZWN0IHdpdGggY29ycmVjdCBzZXJ2ZXIgQ0EgY2VydCBmaWxlIHNzbG1vZGU9dmVyaWZ5 LWNhIik7CiB0ZXN0X2Nvbm5lY3Rfb2soCiAJJGNvbW1vbl9jb25uc3RyLAotCSJzc2xyb290Y2Vy dD1zc2wvcm9vdCtzZXJ2ZXJfY2EuY3J0IHNzbG1vZGU9dmVyaWZ5LWZ1bGwiLAorCSJzc2xyb290 Y2VydD1zc2wvcm9vdCtzZXJ2ZXJfY2EuY3J0IHNzbG1vZGU9dmVyaWZ5LWZ1bGwgY2VydF9kYXRh YmFzZT1zc2wvbnNzL3Jvb3Qrc2VydmVyX2NhLmNydC5kYiIsCiAJImNvbm5lY3Qgd2l0aCBjb3Jy ZWN0IHNlcnZlciBDQSBjZXJ0IGZpbGUgc3NsbW9kZT12ZXJpZnktZnVsbCIpOwogCi0jIFRlc3Qg d2l0aCBjZXJ0IHJvb3QgZmlsZSB0aGF0IGNvbnRhaW5zIHR3byBjZXJ0aWZpY2F0ZXMuIFRoZSBj bGllbnQgc2hvdWxkCi0jIGJlIGFibGUgdG8gcGljayB0aGUgcmlnaHQgb25lLCByZWdhcmRsZXNz IG9mIHRoZSBvcmRlciBpbiB0aGUgZmlsZS4KLXRlc3RfY29ubmVjdF9vaygKLQkkY29tbW9uX2Nv bm5zdHIsCi0JInNzbHJvb3RjZXJ0PXNzbC9ib3RoLWNhcy0xLmNydCBzc2xtb2RlPXZlcmlmeS1j YSIsCi0JImNlcnQgcm9vdCBmaWxlIHRoYXQgY29udGFpbnMgdHdvIGNlcnRpZmljYXRlcywgb3Jk ZXIgMSIpOwotdGVzdF9jb25uZWN0X29rKAotCSRjb21tb25fY29ubnN0ciwKLQkic3Nscm9vdGNl cnQ9c3NsL2JvdGgtY2FzLTIuY3J0IHNzbG1vZGU9dmVyaWZ5LWNhIiwKLQkiY2VydCByb290IGZp bGUgdGhhdCBjb250YWlucyB0d28gY2VydGlmaWNhdGVzLCBvcmRlciAyIik7CitTS0lQOgorewor CXNraXAgIkNBIG9yZGVyaW5nIGlzIGlycmVsZXZhbnQgaW4gTlNTIGRhdGFiYXNlcyIsIDIgaWYg KCRuc3MpOwogCisJIyBUZXN0IHdpdGggY2VydCByb290IGZpbGUgdGhhdCBjb250YWlucyB0d28g Y2VydGlmaWNhdGVzLiBUaGUgY2xpZW50IHNob3VsZAorCSMgYmUgYWJsZSB0byBwaWNrIHRoZSBy aWdodCBvbmUsIHJlZ2FyZGxlc3Mgb2YgdGhlIG9yZGVyIGluIHRoZSBmaWxlLgorCXRlc3RfY29u bmVjdF9vaygKKwkJJGNvbW1vbl9jb25uc3RyLAorCQkic3Nscm9vdGNlcnQ9c3NsL2JvdGgtY2Fz LTEuY3J0IHNzbG1vZGU9dmVyaWZ5LWNhIiwKKwkJImNlcnQgcm9vdCBmaWxlIHRoYXQgY29udGFp bnMgdHdvIGNlcnRpZmljYXRlcywgb3JkZXIgMSIpOworCisJIyBIb3cgYWJvdXQgaW1wb3J0IHRo ZSBib3RoLWZpbGUgaW50byBhIGRhdGFiYXNlPworCXRlc3RfY29ubmVjdF9vaygKKwkJJGNvbW1v bl9jb25uc3RyLAorCQkic3Nscm9vdGNlcnQ9c3NsL2JvdGgtY2FzLTIuY3J0IHNzbG1vZGU9dmVy aWZ5LWNhIiwKKwkJImNlcnQgcm9vdCBmaWxlIHRoYXQgY29udGFpbnMgdHdvIGNlcnRpZmljYXRl cywgb3JkZXIgMiIpOworfQogIyBDUkwgdGVzdHMKIAogIyBJbnZhbGlkIENSTCBmaWxlbmFtZSBp cyB0aGUgc2FtZSBhcyBubyBDUkwsIHN1Y2NlZWRzCiB0ZXN0X2Nvbm5lY3Rfb2soCiAJJGNvbW1v bl9jb25uc3RyLAotCSJzc2xyb290Y2VydD1zc2wvcm9vdCtzZXJ2ZXJfY2EuY3J0IHNzbG1vZGU9 dmVyaWZ5LWNhIHNzbGNybD1pbnZhbGlkIiwKKwkic3Nscm9vdGNlcnQ9c3NsL3Jvb3Qrc2VydmVy X2NhLmNydCBzc2xtb2RlPXZlcmlmeS1jYSBzc2xjcmw9aW52YWxpZCBjZXJ0X2RhdGFiYXNlPXNz bC9uc3Mvcm9vdCtzZXJ2ZXJfY2EuY3J0LmRiIiwKIAkic3NsY3JsIG9wdGlvbiB3aXRoIGludmFs aWQgZmlsZSBuYW1lIik7CiAKLSMgQSBDUkwgYmVsb25naW5nIHRvIGEgZGlmZmVyZW50IENBIGlz IG5vdCBhY2NlcHRlZCwgZmFpbHMKLXRlc3RfY29ubmVjdF9mYWlscygKLQkkY29tbW9uX2Nvbm5z dHIsCi0JInNzbHJvb3RjZXJ0PXNzbC9yb290K3NlcnZlcl9jYS5jcnQgc3NsbW9kZT12ZXJpZnkt Y2Egc3NsY3JsPXNzbC9jbGllbnQuY3JsIiwKLQlxci9TU0wgZXJyb3IvLAotCSJDUkwgYmVsb25n aW5nIHRvIGEgZGlmZmVyZW50IENBIik7CitTS0lQOgoreworCXNraXAgIkNSTCdzIGFyZSB2ZXJp ZmllZCB3aGVuIGFkZGluZyB0byBOU1MgZGF0YWJhc2UiLCAyIGlmICgkbnNzKTsKKwkjIEEgQ1JM IGJlbG9uZ2luZyB0byBhIGRpZmZlcmVudCBDQSBpcyBub3QgYWNjZXB0ZWQsIGZhaWxzCisJdGVz dF9jb25uZWN0X2ZhaWxzKAorCQkkY29tbW9uX2Nvbm5zdHIsCisJCSJzc2xyb290Y2VydD1zc2wv cm9vdCtzZXJ2ZXJfY2EuY3J0IHNzbG1vZGU9dmVyaWZ5LWNhIHNzbGNybD1zc2wvY2xpZW50LmNy bCIsCisJCXFyL1NTTCBlcnJvci8sCisJCSJDUkwgYmVsb25naW5nIHRvIGEgZGlmZmVyZW50IENB Iik7Cit9CiAKICMgV2l0aCB0aGUgY29ycmVjdCBDUkwsIHN1Y2NlZWRzICh0aGlzIGNlcnQgaXMg bm90IHJldm9rZWQpCiB0ZXN0X2Nvbm5lY3Rfb2soCiAJJGNvbW1vbl9jb25uc3RyLAotCSJzc2xy b290Y2VydD1zc2wvcm9vdCtzZXJ2ZXJfY2EuY3J0IHNzbG1vZGU9dmVyaWZ5LWNhIHNzbGNybD1z c2wvcm9vdCtzZXJ2ZXIuY3JsIiwKKwkic3Nscm9vdGNlcnQ9c3NsL3Jvb3Qrc2VydmVyX2NhLmNy dCBzc2xtb2RlPXZlcmlmeS1jYSBzc2xjcmw9c3NsL3Jvb3Qrc2VydmVyLmNybCBjZXJ0X2RhdGFi YXNlPXNzbC9uc3Mvcm9vdCtzZXJ2ZXJfY2EuY3J0X19yb290K3NlcnZlci5jcmwuZGIiLAogCSJD Ukwgd2l0aCBhIG5vbi1yZXZva2VkIGNlcnQiKTsKIAogIyBDaGVjayB0aGF0IGNvbm5lY3Rpbmcg d2l0aCB2ZXJpZnktZnVsbCBmYWlscywgd2hlbiB0aGUgaG9zdG5hbWUgZG9lc24ndAogIyBtYXRj aCB0aGUgaG9zdG5hbWUgaW4gdGhlIHNlcnZlcidzIGNlcnRpZmljYXRlLgogJGNvbW1vbl9jb25u c3RyID0KLSAgInVzZXI9c3NsdGVzdHVzZXIgZGJuYW1lPXRydXN0ZGIgc3NsY2VydD1pbnZhbGlk IHNzbHJvb3RjZXJ0PXNzbC9yb290K3NlcnZlcl9jYS5jcnQgaG9zdGFkZHI9JFNFUlZFUkhPU1RB RERSIjsKKyAgInVzZXI9c3NsdGVzdHVzZXIgZGJuYW1lPXRydXN0ZGIgc3NsY2VydD1pbnZhbGlk IHNzbHJvb3RjZXJ0PXNzbC9yb290K3NlcnZlcl9jYS5jcnQgaG9zdGFkZHI9JFNFUlZFUkhPU1RB RERSIGNlcnRfZGF0YWJhc2U9c3NsL25zcy9yb290K3NlcnZlcl9jYS5jcnQuZGIiOwogCiB0ZXN0 X2Nvbm5lY3Rfb2soCiAJJGNvbW1vbl9jb25uc3RyLApAQCAtMjM3LDE0ICsyNzAsMTQgQEAgdGVz dF9jb25uZWN0X29rKAogdGVzdF9jb25uZWN0X2ZhaWxzKAogCSRjb21tb25fY29ubnN0ciwKIAki c3NsbW9kZT12ZXJpZnktZnVsbCBob3N0PXdyb25naG9zdC50ZXN0IiwKLQlxci9cUXNlcnZlciBj ZXJ0aWZpY2F0ZSBmb3IgImNvbW1vbi1uYW1lLnBnLXNzbHRlc3QudGVzdCIgZG9lcyBub3QgbWF0 Y2ggaG9zdCBuYW1lICJ3cm9uZ2hvc3QudGVzdCJcRS8sCisJcXIvXFFzZXJ2ZXIgY2VydGlmaWNh dGUgZm9yICJjb21tb24tbmFtZS5wZy1zc2x0ZXN0LnRlc3QiIGRvZXMgbm90IG1hdGNoIGhvc3Qg bmFtZSAid3Jvbmdob3N0LnRlc3QiXEV8cmVxdWVzdGVkIGRvbWFpbiBuYW1lIGRvZXMgbm90IG1h dGNoIHRoZSBzZXJ2ZXIncyBjZXJ0aWZpY2F0ZS8sCiAJIm1pc21hdGNoIGJldHdlZW4gaG9zdCBu YW1lIGFuZCBzZXJ2ZXIgY2VydGlmaWNhdGUgc3NsbW9kZT12ZXJpZnktZnVsbCIpOwogCiAjIFRl c3QgU3ViamVjdCBBbHRlcm5hdGl2ZSBOYW1lcy4KIHN3aXRjaF9zZXJ2ZXJfY2VydCgkbm9kZSwg J3NlcnZlci1tdWx0aXBsZS1hbHQtbmFtZXMnKTsKIAogJGNvbW1vbl9jb25uc3RyID0KLSAgInVz ZXI9c3NsdGVzdHVzZXIgZGJuYW1lPXRydXN0ZGIgc3NsY2VydD1pbnZhbGlkIHNzbHJvb3RjZXJ0 PXNzbC9yb290K3NlcnZlcl9jYS5jcnQgaG9zdGFkZHI9JFNFUlZFUkhPU1RBRERSIHNzbG1vZGU9 dmVyaWZ5LWZ1bGwiOworICAidXNlcj1zc2x0ZXN0dXNlciBkYm5hbWU9dHJ1c3RkYiBzc2xjZXJ0 PWludmFsaWQgc3Nscm9vdGNlcnQ9c3NsL3Jvb3Qrc2VydmVyX2NhLmNydCBob3N0YWRkcj0kU0VS VkVSSE9TVEFERFIgc3NsbW9kZT12ZXJpZnktZnVsbCBjZXJ0X2RhdGFiYXNlPXNzbC9uc3Mvcm9v dCtzZXJ2ZXJfY2EuY3J0LmRiIjsKIAogdGVzdF9jb25uZWN0X29rKAogCSRjb21tb25fY29ubnN0 ciwKQEAgLTI2MiwxMiArMjk1LDEyIEBAIHRlc3RfY29ubmVjdF9vaygKIHRlc3RfY29ubmVjdF9m YWlscygKIAkkY29tbW9uX2Nvbm5zdHIsCiAJImhvc3Q9d3Jvbmdob3N0LmFsdC1uYW1lLnBnLXNz bHRlc3QudGVzdCIsCi0JcXIvXFFzZXJ2ZXIgY2VydGlmaWNhdGUgZm9yICJkbnMxLmFsdC1uYW1l LnBnLXNzbHRlc3QudGVzdCIgKGFuZCAyIG90aGVyIG5hbWVzKSBkb2VzIG5vdCBtYXRjaCBob3N0 IG5hbWUgIndyb25naG9zdC5hbHQtbmFtZS5wZy1zc2x0ZXN0LnRlc3QiXEUvLAorCXFyL1xRc2Vy dmVyIGNlcnRpZmljYXRlIGZvciAiZG5zMS5hbHQtbmFtZS5wZy1zc2x0ZXN0LnRlc3QiIChhbmQg MiBvdGhlciBuYW1lcykgZG9lcyBub3QgbWF0Y2ggaG9zdCBuYW1lICJ3cm9uZ2hvc3QuYWx0LW5h bWUucGctc3NsdGVzdC50ZXN0IlxFfHJlcXVlc3RlZCBkb21haW4gbmFtZSBkb2VzIG5vdCBtYXRj aCB0aGUgc2VydmVyJ3MgY2VydGlmaWNhdGUvLAogCSJob3N0IG5hbWUgbm90IG1hdGNoaW5nIHdp dGggWC41MDkgU3ViamVjdCBBbHRlcm5hdGl2ZSBOYW1lcyIpOwogdGVzdF9jb25uZWN0X2ZhaWxz KAogCSRjb21tb25fY29ubnN0ciwKIAkiaG9zdD1kZWVwLnN1YmRvbWFpbi53aWxkY2FyZC5wZy1z c2x0ZXN0LnRlc3QiLAotCXFyL1xRc2VydmVyIGNlcnRpZmljYXRlIGZvciAiZG5zMS5hbHQtbmFt ZS5wZy1zc2x0ZXN0LnRlc3QiIChhbmQgMiBvdGhlciBuYW1lcykgZG9lcyBub3QgbWF0Y2ggaG9z dCBuYW1lICJkZWVwLnN1YmRvbWFpbi53aWxkY2FyZC5wZy1zc2x0ZXN0LnRlc3QiXEUvLAorCXFy L1xRc2VydmVyIGNlcnRpZmljYXRlIGZvciAiZG5zMS5hbHQtbmFtZS5wZy1zc2x0ZXN0LnRlc3Qi IChhbmQgMiBvdGhlciBuYW1lcykgZG9lcyBub3QgbWF0Y2ggaG9zdCBuYW1lICJkZWVwLnN1YmRv bWFpbi53aWxkY2FyZC5wZy1zc2x0ZXN0LnRlc3QiXEV8cmVxdWVzdGVkIGRvbWFpbiBuYW1lIGRv ZXMgbm90IG1hdGNoIHRoZSBzZXJ2ZXIncyBjZXJ0aWZpY2F0ZS8sCiAJImhvc3QgbmFtZSBub3Qg bWF0Y2hpbmcgd2l0aCBYLjUwOSBTdWJqZWN0IEFsdGVybmF0aXZlIE5hbWVzIHdpbGRjYXJkIik7 CiAKICMgVGVzdCBjZXJ0aWZpY2F0ZSB3aXRoIGEgc2luZ2xlIFN1YmplY3QgQWx0ZXJuYXRpdmUg TmFtZS4gKHRoaXMgZ2l2ZXMgYQpAQCAtMjc1LDcgKzMwOCw3IEBAIHRlc3RfY29ubmVjdF9mYWls cygKIHN3aXRjaF9zZXJ2ZXJfY2VydCgkbm9kZSwgJ3NlcnZlci1zaW5nbGUtYWx0LW5hbWUnKTsK IAogJGNvbW1vbl9jb25uc3RyID0KLSAgInVzZXI9c3NsdGVzdHVzZXIgZGJuYW1lPXRydXN0ZGIg c3NsY2VydD1pbnZhbGlkIHNzbHJvb3RjZXJ0PXNzbC9yb290K3NlcnZlcl9jYS5jcnQgaG9zdGFk ZHI9JFNFUlZFUkhPU1RBRERSIHNzbG1vZGU9dmVyaWZ5LWZ1bGwiOworICAidXNlcj1zc2x0ZXN0 dXNlciBkYm5hbWU9dHJ1c3RkYiBzc2xjZXJ0PWludmFsaWQgc3Nscm9vdGNlcnQ9c3NsL3Jvb3Qr c2VydmVyX2NhLmNydCBob3N0YWRkcj0kU0VSVkVSSE9TVEFERFIgc3NsbW9kZT12ZXJpZnktZnVs bCBjZXJ0X2RhdGFiYXNlPXNzbC9uc3Mvcm9vdCtzZXJ2ZXJfY2EuY3J0LmRiIjsKIAogdGVzdF9j b25uZWN0X29rKAogCSRjb21tb25fY29ubnN0ciwKQEAgLTI4NSwxMiArMzE4LDEyIEBAIHRlc3Rf Y29ubmVjdF9vaygKIHRlc3RfY29ubmVjdF9mYWlscygKIAkkY29tbW9uX2Nvbm5zdHIsCiAJImhv c3Q9d3Jvbmdob3N0LmFsdC1uYW1lLnBnLXNzbHRlc3QudGVzdCIsCi0JcXIvXFFzZXJ2ZXIgY2Vy dGlmaWNhdGUgZm9yICJzaW5nbGUuYWx0LW5hbWUucGctc3NsdGVzdC50ZXN0IiBkb2VzIG5vdCBt YXRjaCBob3N0IG5hbWUgIndyb25naG9zdC5hbHQtbmFtZS5wZy1zc2x0ZXN0LnRlc3QiXEUvLAor CXFyL1xRc2VydmVyIGNlcnRpZmljYXRlIGZvciAic2luZ2xlLmFsdC1uYW1lLnBnLXNzbHRlc3Qu dGVzdCIgZG9lcyBub3QgbWF0Y2ggaG9zdCBuYW1lICJ3cm9uZ2hvc3QuYWx0LW5hbWUucGctc3Ns dGVzdC50ZXN0IlxFfHJlcXVlc3RlZCBkb21haW4gbmFtZSBkb2VzIG5vdCBtYXRjaCB0aGUgc2Vy dmVyJ3MgY2VydGlmaWNhdGUvLAogCSJob3N0IG5hbWUgbm90IG1hdGNoaW5nIHdpdGggYSBzaW5n bGUgWC41MDkgU3ViamVjdCBBbHRlcm5hdGl2ZSBOYW1lIik7CiB0ZXN0X2Nvbm5lY3RfZmFpbHMo CiAJJGNvbW1vbl9jb25uc3RyLAogCSJob3N0PWRlZXAuc3ViZG9tYWluLndpbGRjYXJkLnBnLXNz bHRlc3QudGVzdCIsCi0JcXIvXFFzZXJ2ZXIgY2VydGlmaWNhdGUgZm9yICJzaW5nbGUuYWx0LW5h bWUucGctc3NsdGVzdC50ZXN0IiBkb2VzIG5vdCBtYXRjaCBob3N0IG5hbWUgImRlZXAuc3ViZG9t YWluLndpbGRjYXJkLnBnLXNzbHRlc3QudGVzdCJcRS8sCisJcXIvXFFzZXJ2ZXIgY2VydGlmaWNh dGUgZm9yICJzaW5nbGUuYWx0LW5hbWUucGctc3NsdGVzdC50ZXN0IiBkb2VzIG5vdCBtYXRjaCBo b3N0IG5hbWUgImRlZXAuc3ViZG9tYWluLndpbGRjYXJkLnBnLXNzbHRlc3QudGVzdCJcRXxyZXF1 ZXN0ZWQgZG9tYWluIG5hbWUgZG9lcyBub3QgbWF0Y2ggdGhlIHNlcnZlcidzIGNlcnRpZmljYXRl LywKIAkiaG9zdCBuYW1lIG5vdCBtYXRjaGluZyB3aXRoIGEgc2luZ2xlIFguNTA5IFN1YmplY3Qg QWx0ZXJuYXRpdmUgTmFtZSB3aWxkY2FyZCIKICk7CiAKQEAgLTI5OSw3ICszMzIsNyBAQCB0ZXN0 X2Nvbm5lY3RfZmFpbHMoCiBzd2l0Y2hfc2VydmVyX2NlcnQoJG5vZGUsICdzZXJ2ZXItY24tYW5k LWFsdC1uYW1lcycpOwogCiAkY29tbW9uX2Nvbm5zdHIgPQotICAidXNlcj1zc2x0ZXN0dXNlciBk Ym5hbWU9dHJ1c3RkYiBzc2xjZXJ0PWludmFsaWQgc3Nscm9vdGNlcnQ9c3NsL3Jvb3Qrc2VydmVy X2NhLmNydCBob3N0YWRkcj0kU0VSVkVSSE9TVEFERFIgc3NsbW9kZT12ZXJpZnktZnVsbCI7Cisg ICJ1c2VyPXNzbHRlc3R1c2VyIGRibmFtZT10cnVzdGRiIHNzbGNlcnQ9aW52YWxpZCBzc2xyb290 Y2VydD1zc2wvcm9vdCtzZXJ2ZXJfY2EuY3J0IGhvc3RhZGRyPSRTRVJWRVJIT1NUQUREUiBzc2xt b2RlPXZlcmlmeS1mdWxsIGNlcnRfZGF0YWJhc2U9c3NsL25zcy9yb290K3NlcnZlcl9jYS5jcnQu ZGIiOwogCiB0ZXN0X2Nvbm5lY3Rfb2soCiAJJGNvbW1vbl9jb25uc3RyLApAQCAtMzEyLDE0ICsz NDUsMTQgQEAgdGVzdF9jb25uZWN0X29rKAogdGVzdF9jb25uZWN0X2ZhaWxzKAogCSRjb21tb25f Y29ubnN0ciwKIAkiaG9zdD1jb21tb24tbmFtZS5wZy1zc2x0ZXN0LnRlc3QiLAotCXFyL1xRc2Vy dmVyIGNlcnRpZmljYXRlIGZvciAiZG5zMS5hbHQtbmFtZS5wZy1zc2x0ZXN0LnRlc3QiIChhbmQg MSBvdGhlciBuYW1lKSBkb2VzIG5vdCBtYXRjaCBob3N0IG5hbWUgImNvbW1vbi1uYW1lLnBnLXNz bHRlc3QudGVzdCJcRS8sCisJcXIvXFFzZXJ2ZXIgY2VydGlmaWNhdGUgZm9yICJkbnMxLmFsdC1u YW1lLnBnLXNzbHRlc3QudGVzdCIgKGFuZCAxIG90aGVyIG5hbWUpIGRvZXMgbm90IG1hdGNoIGhv c3QgbmFtZSAiY29tbW9uLW5hbWUucGctc3NsdGVzdC50ZXN0IlxFfHJlcXVlc3RlZCBkb21haW4g bmFtZSBkb2VzIG5vdCBtYXRjaCB0aGUgc2VydmVyJ3MgY2VydGlmaWNhdGUvLAogCSJjZXJ0aWZp Y2F0ZSB3aXRoIGJvdGggYSBDTiBhbmQgU0FOcyBpZ25vcmVzIENOIik7CiAKICMgRmluYWxseSwg dGVzdCBhIHNlcnZlciBjZXJ0aWZpY2F0ZSB0aGF0IGhhcyBubyBDTiBvciBTQU5zLiBPZiBjb3Vy c2UsIHRoYXQncwogIyBub3QgYSB2ZXJ5IHNlbnNpYmxlIGNlcnRpZmljYXRlLCBidXQgbGlicHEg c2hvdWxkIGhhbmRsZSBpdCBncmFjZWZ1bGx5Lgogc3dpdGNoX3NlcnZlcl9jZXJ0KCRub2RlLCAn c2VydmVyLW5vLW5hbWVzJyk7CiAkY29tbW9uX2Nvbm5zdHIgPQotICAidXNlcj1zc2x0ZXN0dXNl ciBkYm5hbWU9dHJ1c3RkYiBzc2xjZXJ0PWludmFsaWQgc3Nscm9vdGNlcnQ9c3NsL3Jvb3Qrc2Vy dmVyX2NhLmNydCBob3N0YWRkcj0kU0VSVkVSSE9TVEFERFIiOworICAidXNlcj1zc2x0ZXN0dXNl ciBkYm5hbWU9dHJ1c3RkYiBzc2xjZXJ0PWludmFsaWQgc3Nscm9vdGNlcnQ9c3NsL3Jvb3Qrc2Vy dmVyX2NhLmNydCBob3N0YWRkcj0kU0VSVkVSSE9TVEFERFIgY2VydF9kYXRhYmFzZT1zc2wvbnNz L3Jvb3Qrc2VydmVyX2NhLmNydC5kYiI7CiAKIHRlc3RfY29ubmVjdF9vaygKIAkkY29tbW9uX2Nv bm5zdHIsCkBAIC0zMjgsNyArMzYxLDcgQEAgdGVzdF9jb25uZWN0X29rKAogdGVzdF9jb25uZWN0 X2ZhaWxzKAogCSRjb21tb25fY29ubnN0ciwKIAkic3NsbW9kZT12ZXJpZnktZnVsbCBob3N0PWNv bW1vbi1uYW1lLnBnLXNzbHRlc3QudGVzdCIsCi0JcXIvY291bGQgbm90IGdldCBzZXJ2ZXIncyBo b3N0IG5hbWUgZnJvbSBzZXJ2ZXIgY2VydGlmaWNhdGUvLAorCXFyL2NvdWxkIG5vdCBnZXQgc2Vy dmVyJ3MgaG9zdCBuYW1lIGZyb20gc2VydmVyIGNlcnRpZmljYXRlfHJlcXVlc3RlZCBkb21haW4g bmFtZSBkb2VzIG5vdCBtYXRjaCB0aGUgc2VydmVyJ3MgY2VydGlmaWNhdGUuLywKIAkic2VydmVy IGNlcnRpZmljYXRlIHdpdGhvdXQgQ04gb3IgU0FOcyBzc2xtb2RlPXZlcmlmeS1mdWxsIik7CiAK ICMgVGVzdCB0aGF0IHRoZSBDUkwgd29ya3MKQEAgLTM0MCwxMSArMzczLDExIEBAICRjb21tb25f Y29ubnN0ciA9CiAjIFdpdGhvdXQgdGhlIENSTCwgc3VjY2VlZHMuIFdpdGggaXQsIGZhaWxzLgog dGVzdF9jb25uZWN0X29rKAogCSRjb21tb25fY29ubnN0ciwKLQkic3Nscm9vdGNlcnQ9c3NsL3Jv b3Qrc2VydmVyX2NhLmNydCBzc2xtb2RlPXZlcmlmeS1jYSIsCisJInNzbHJvb3RjZXJ0PXNzbC9y b290K3NlcnZlcl9jYS5jcnQgc3NsbW9kZT12ZXJpZnktY2EgY2VydF9kYXRhYmFzZT1zc2wvbnNz L3Jvb3Qrc2VydmVyX2NhLmNydC5kYiIsCiAJImNvbm5lY3RzIHdpdGhvdXQgY2xpZW50LXNpZGUg Q1JMIik7CiB0ZXN0X2Nvbm5lY3RfZmFpbHMoCiAJJGNvbW1vbl9jb25uc3RyLAotCSJzc2xyb290 Y2VydD1zc2wvcm9vdCtzZXJ2ZXJfY2EuY3J0IHNzbG1vZGU9dmVyaWZ5LWNhIHNzbGNybD1zc2wv cm9vdCtzZXJ2ZXIuY3JsIiwKKwkic3Nscm9vdGNlcnQ9c3NsL3Jvb3Qrc2VydmVyX2NhLmNydCBz c2xtb2RlPXZlcmlmeS1jYSBzc2xjcmw9c3NsL3NlcnZlci5jcmwgY2VydF9kYXRhYmFzZT1zc2wv bnNzL3Jvb3Qrc2VydmVyX2NhLmNydF9fc2VydmVyLmNybC5kYiIsCiAJcXIvU1NMIGVycm9yLywK IAkiZG9lcyBub3QgY29ubmVjdCB3aXRoIGNsaWVudC1zaWRlIENSTCIpOwogCkBAIC0zNjUsMzIg KzM5OCw1MCBAQCBjb21tYW5kX2xpa2UoCiAjIFRlc3QgbWluL21heCBTU0wgcHJvdG9jb2wgdmVy c2lvbnMuCiB0ZXN0X2Nvbm5lY3Rfb2soCiAJJGNvbW1vbl9jb25uc3RyLAotCSJzc2xyb290Y2Vy dD1zc2wvcm9vdCtzZXJ2ZXJfY2EuY3J0IHNzbG1vZGU9cmVxdWlyZSBzc2xfbWluX3Byb3RvY29s X3ZlcnNpb249VExTdjEuMiBzc2xfbWF4X3Byb3RvY29sX3ZlcnNpb249VExTdjEuMiIsCisJInNz bHJvb3RjZXJ0PXNzbC9yb290K3NlcnZlcl9jYS5jcnQgc3NsbW9kZT1yZXF1aXJlIHNzbF9taW5f cHJvdG9jb2xfdmVyc2lvbj1UTFN2MS4yIHNzbF9tYXhfcHJvdG9jb2xfdmVyc2lvbj1UTFN2MS4y IGNlcnRfZGF0YWJhc2U9c3NsL25zcy9yb290K3NlcnZlcl9jYS5jcnQuZGIiLAogCSJjb25uZWN0 aW9uIHN1Y2Nlc3Mgd2l0aCBjb3JyZWN0IHJhbmdlIG9mIFRMUyBwcm90b2NvbCB2ZXJzaW9ucyIp OwogdGVzdF9jb25uZWN0X2ZhaWxzKAogCSRjb21tb25fY29ubnN0ciwKLQkic3Nscm9vdGNlcnQ9 c3NsL3Jvb3Qrc2VydmVyX2NhLmNydCBzc2xtb2RlPXJlcXVpcmUgc3NsX21pbl9wcm90b2NvbF92 ZXJzaW9uPVRMU3YxLjIgc3NsX21heF9wcm90b2NvbF92ZXJzaW9uPVRMU3YxLjEiLAorCSJzc2xy b290Y2VydD1zc2wvcm9vdCtzZXJ2ZXJfY2EuY3J0IHNzbG1vZGU9cmVxdWlyZSBzc2xfbWluX3By b3RvY29sX3ZlcnNpb249VExTdjEuMiBzc2xfbWF4X3Byb3RvY29sX3ZlcnNpb249VExTdjEuMSBj ZXJ0X2RhdGFiYXNlPXNzbC9uc3Mvcm9vdCtzZXJ2ZXJfY2EuY3J0LmRiIiwKIAlxci9pbnZhbGlk IFNTTCBwcm90b2NvbCB2ZXJzaW9uIHJhbmdlLywKIAkiY29ubmVjdGlvbiBmYWlsdXJlIHdpdGgg aW5jb3JyZWN0IHJhbmdlIG9mIFRMUyBwcm90b2NvbCB2ZXJzaW9ucyIpOwogdGVzdF9jb25uZWN0 X2ZhaWxzKAogCSRjb21tb25fY29ubnN0ciwKLQkic3Nscm9vdGNlcnQ9c3NsL3Jvb3Qrc2VydmVy X2NhLmNydCBzc2xtb2RlPXJlcXVpcmUgc3NsX21pbl9wcm90b2NvbF92ZXJzaW9uPWluY29ycmVj dF90bHMiLAorCSJzc2xyb290Y2VydD1zc2wvcm9vdCtzZXJ2ZXJfY2EuY3J0IHNzbG1vZGU9cmVx dWlyZSBzc2xfbWluX3Byb3RvY29sX3ZlcnNpb249aW5jb3JyZWN0X3RscyBjZXJ0X2RhdGFiYXNl PXNzbC9uc3Mvcm9vdCtzZXJ2ZXJfY2EuY3J0LmRiIiwKIAlxci9pbnZhbGlkIHNzbF9taW5fcHJv dG9jb2xfdmVyc2lvbiB2YWx1ZS8sCiAJImNvbm5lY3Rpb24gZmFpbHVyZSB3aXRoIGFuIGluY29y cmVjdCBTU0wgcHJvdG9jb2wgbWluaW11bSBib3VuZCIpOwogdGVzdF9jb25uZWN0X2ZhaWxzKAog CSRjb21tb25fY29ubnN0ciwKLQkic3Nscm9vdGNlcnQ9c3NsL3Jvb3Qrc2VydmVyX2NhLmNydCBz c2xtb2RlPXJlcXVpcmUgc3NsX21heF9wcm90b2NvbF92ZXJzaW9uPWluY29ycmVjdF90bHMiLAor CSJzc2xyb290Y2VydD1zc2wvcm9vdCtzZXJ2ZXJfY2EuY3J0IHNzbG1vZGU9cmVxdWlyZSBzc2xf bWF4X3Byb3RvY29sX3ZlcnNpb249aW5jb3JyZWN0X3RscyBjZXJ0X2RhdGFiYXNlPXNzbC9uc3Mv cm9vdCtzZXJ2ZXJfY2EuY3J0LmRiIiwKIAlxci9pbnZhbGlkIHNzbF9tYXhfcHJvdG9jb2xfdmVy c2lvbiB2YWx1ZS8sCiAJImNvbm5lY3Rpb24gZmFpbHVyZSB3aXRoIGFuIGluY29ycmVjdCBTU0wg cHJvdG9jb2wgbWF4aW11bSBib3VuZCIpOwogCisjIHRlc3RzIG9mIE5TUyBnZW5lcmF0ZWQgY2Vy dGlmaWNhdGVzL2tleXMKK1NLSVA6Cit7CisJc2tpcCAiTlNTIHNwZWNpZmljIHRlc3RzIiwgICAg ICAgICAgICAxIGlmICgkb3BlbnNzbCk7CisKKwlzd2l0Y2hfc2VydmVyX2NlcnQoJG5vZGUsICdu YXRpdmVfc2VydmVyLXJvb3QnLCAnbmF0aXZlX2NhLXJvb3QnKTsKKwkkY29tbW9uX2Nvbm5zdHIg PQorCSAgInVzZXI9c3NsdGVzdHVzZXIgZGJuYW1lPXRydXN0ZGIgaG9zdGFkZHI9JFNFUlZFUkhP U1RBRERSIGhvc3Q9Y29tbW9uLW5hbWUucGctc3NsdGVzdC50ZXN0IjsKKworCXRlc3RfY29ubmVj dF9vaygKKwkJJGNvbW1vbl9jb25uc3RyLAorCQkic3NsbW9kZT1yZXF1aXJlIHVzZXI9c3NsdGVz dHVzZXIiLAorCQkiTlNTIGdlbmVyYXRlZCBjZXJ0aWZpY2F0ZXMiCisJKTsKK30KKwogIyMjIFNl cnZlci1zaWRlIHRlc3RzLgogIyMjCiAjIyMgVGVzdCBjZXJ0aWZpY2F0ZSBhdXRob3JpemF0aW9u LgogCitzd2l0Y2hfc2VydmVyX2NlcnQoJG5vZGUsICdzZXJ2ZXItcmV2b2tlZCcpOworCiBub3Rl ICJydW5uaW5nIHNlcnZlciB0ZXN0cyI7CiAKICRjb21tb25fY29ubnN0ciA9Ci0gICJzc2xyb290 Y2VydD1zc2wvcm9vdCtzZXJ2ZXJfY2EuY3J0IHNzbG1vZGU9cmVxdWlyZSBkYm5hbWU9Y2VydGRi IGhvc3RhZGRyPSRTRVJWRVJIT1NUQUREUiI7CisgICJzc2xyb290Y2VydD1zc2wvcm9vdCtzZXJ2 ZXJfY2EuY3J0IHNzbG1vZGU9cmVxdWlyZSBkYm5hbWU9Y2VydGRiIGhvc3RhZGRyPSRTRVJWRVJI T1NUQUREUiBjZXJ0X2RhdGFiYXNlPXNzbC9uc3MvY2xpZW50LmNydF9fY2xpZW50LmtleS5kYiI7 CiAKICMgbm8gY2xpZW50IGNlcnQKIHRlc3RfY29ubmVjdF9mYWlscygKQEAgLTQwNiwzMiArNDU3 LDQzIEBAIHRlc3RfY29ubmVjdF9vaygKIAkiY2VydGlmaWNhdGUgYXV0aG9yaXphdGlvbiBzdWNj ZWVkcyB3aXRoIGNvcnJlY3QgY2xpZW50IGNlcnQgaW4gUEVNIGZvcm1hdCIKICk7CiAKLSMgY29y cmVjdCBjbGllbnQgY2VydCBpbiB1bmVuY3J5cHRlZCBERVIKLXRlc3RfY29ubmVjdF9vaygKLQkk Y29tbW9uX2Nvbm5zdHIsCi0JInVzZXI9c3NsdGVzdHVzZXIgc3NsY2VydD1zc2wvY2xpZW50LmNy dCBzc2xrZXk9c3NsL2NsaWVudC1kZXJfdG1wLmtleSIsCi0JImNlcnRpZmljYXRlIGF1dGhvcml6 YXRpb24gc3VjY2VlZHMgd2l0aCBjb3JyZWN0IGNsaWVudCBjZXJ0IGluIERFUiBmb3JtYXQiCi0p OworJGNvbW1vbl9jb25uc3RyID0KKyAgInNzbHJvb3RjZXJ0PXNzbC9yb290K3NlcnZlcl9jYS5j cnQgc3NsbW9kZT1yZXF1aXJlIGRibmFtZT1jZXJ0ZGIgaG9zdGFkZHI9JFNFUlZFUkhPU1RBRERS IjsKKworU0tJUDoKK3sKKwlza2lwICJOU1MgZGF0YWJhc2Ugbm90IGltcGxlbWVudGVkIGluIHRo ZSBNYWtlZmlsZSIsIDEgaWYgKCRuc3MpOworCSMgY29ycmVjdCBjbGllbnQgY2VydCBpbiB1bmVu Y3J5cHRlZCBERVIKKwl0ZXN0X2Nvbm5lY3Rfb2soCisJCSRjb21tb25fY29ubnN0ciwKKwkJInVz ZXI9c3NsdGVzdHVzZXIgc3NsY2VydD1zc2wvY2xpZW50LmNydCBzc2xrZXk9c3NsL2NsaWVudC1k ZXJfdG1wLmtleSIsCisJCSJjZXJ0aWZpY2F0ZSBhdXRob3JpemF0aW9uIHN1Y2NlZWRzIHdpdGgg Y29ycmVjdCBjbGllbnQgY2VydCBpbiBERVIgZm9ybWF0IgorCSk7Cit9CiAKICMgY29ycmVjdCBj bGllbnQgY2VydCBpbiBlbmNyeXB0ZWQgUEVNCiB0ZXN0X2Nvbm5lY3Rfb2soCiAJJGNvbW1vbl9j b25uc3RyLAotCSJ1c2VyPXNzbHRlc3R1c2VyIHNzbGNlcnQ9c3NsL2NsaWVudC5jcnQgc3Nsa2V5 PXNzbC9jbGllbnQtZW5jcnlwdGVkLXBlbV90bXAua2V5IHNzbHBhc3N3b3JkPSdkVW1teVBeIysn IiwKKwkidXNlcj1zc2x0ZXN0dXNlciBzc2xjZXJ0PXNzbC9jbGllbnQuY3J0IHNzbGtleT1zc2wv Y2xpZW50LWVuY3J5cHRlZC1wZW1fdG1wLmtleSBzc2xwYXNzd29yZD0nZFVtbXlQXiMrJyBjZXJ0 X2RhdGFiYXNlPXNzbC9uc3MvY2xpZW50LmNydF9fY2xpZW50LWVuY3J5cHRlZC1wZW0ua2V5LmRi IiwKIAkiY2VydGlmaWNhdGUgYXV0aG9yaXphdGlvbiBzdWNjZWVkcyB3aXRoIGNvcnJlY3QgY2xp ZW50IGNlcnQgaW4gZW5jcnlwdGVkIFBFTSBmb3JtYXQiCiApOwogCi0jIGNvcnJlY3QgY2xpZW50 IGNlcnQgaW4gZW5jcnlwdGVkIERFUgotdGVzdF9jb25uZWN0X29rKAotCSRjb21tb25fY29ubnN0 ciwKLQkidXNlcj1zc2x0ZXN0dXNlciBzc2xjZXJ0PXNzbC9jbGllbnQuY3J0IHNzbGtleT1zc2wv Y2xpZW50LWVuY3J5cHRlZC1kZXJfdG1wLmtleSBzc2xwYXNzd29yZD0nZFVtbXlQXiMrJyIsCi0J ImNlcnRpZmljYXRlIGF1dGhvcml6YXRpb24gc3VjY2VlZHMgd2l0aCBjb3JyZWN0IGNsaWVudCBj ZXJ0IGluIGVuY3J5cHRlZCBERVIgZm9ybWF0IgotKTsKK1NLSVA6Cit7CisJc2tpcCAiTlNTIGRh dGFiYXNlIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgTWFrZWZpbGUiLCAxIGlmICgkbnNzKTsKKwkj IGNvcnJlY3QgY2xpZW50IGNlcnQgaW4gZW5jcnlwdGVkIERFUgorCXRlc3RfY29ubmVjdF9vaygK KwkJJGNvbW1vbl9jb25uc3RyLAorCQkidXNlcj1zc2x0ZXN0dXNlciBzc2xjZXJ0PXNzbC9jbGll bnQuY3J0IHNzbGtleT1zc2wvY2xpZW50LWVuY3J5cHRlZC1kZXJfdG1wLmtleSBzc2xwYXNzd29y ZD0nZFVtbXlQXiMrJyIsCisJCSJjZXJ0aWZpY2F0ZSBhdXRob3JpemF0aW9uIHN1Y2NlZWRzIHdp dGggY29ycmVjdCBjbGllbnQgY2VydCBpbiBlbmNyeXB0ZWQgREVSIGZvcm1hdCIKKwkpOworfQog CiAjIGNvcnJlY3QgY2xpZW50IGNlcnQgaW4gZW5jcnlwdGVkIFBFTSB3aXRoIHdyb25nIHBhc3N3 b3JkCiB0ZXN0X2Nvbm5lY3RfZmFpbHMoCiAJJGNvbW1vbl9jb25uc3RyLAotCSJ1c2VyPXNzbHRl c3R1c2VyIHNzbGNlcnQ9c3NsL2NsaWVudC5jcnQgc3Nsa2V5PXNzbC9jbGllbnQtZW5jcnlwdGVk LXBlbV90bXAua2V5IHNzbHBhc3N3b3JkPSd3cm9uZyciLAotCXFyIVxRcHJpdmF0ZSBrZXkgZmls ZSAic3NsL2NsaWVudC1lbmNyeXB0ZWQtcGVtX3RtcC5rZXkiOiBiYWQgZGVjcnlwdFxFISwKKwki dXNlcj1zc2x0ZXN0dXNlciBzc2xjZXJ0PXNzbC9jbGllbnQuY3J0IHNzbGtleT1zc2wvY2xpZW50 LWVuY3J5cHRlZC1wZW1fdG1wLmtleSBzc2xwYXNzd29yZD0nd3JvbmcnIGNlcnRfZGF0YWJhc2U9 c3NsL25zcy9jbGllbnQuY3J0X19jbGllbnQtZW5jcnlwdGVkLXBlbS5rZXkuZGIiLAorCXFyIWNv bm5lY3Rpb24gcmVxdWlyZXMgYSB2YWxpZCBjbGllbnQgY2VydGlmaWNhdGV8XFFwcml2YXRlIGtl eSBmaWxlICJzc2wvY2xpZW50LWVuY3J5cHRlZC1wZW1fdG1wLmtleSI6IGJhZCBkZWNyeXB0XEUh LAogCSJjZXJ0aWZpY2F0ZSBhdXRob3JpemF0aW9uIGZhaWxzIHdpdGggY29ycmVjdCBjbGllbnQg Y2VydCBhbmQgd3JvbmcgcGFzc3dvcmQgaW4gZW5jcnlwdGVkIFBFTSBmb3JtYXQiCiApOwogCkBA IC00NzEsMTggKzUzMywxOSBAQCBjb21tYW5kX2xpa2UoCiAJCSctUCcsCiAJCSdudWxsPV9udWxs XycsCiAJCSctZCcsCi0JCSIkY29tbW9uX2Nvbm5zdHIgdXNlcj1zc2x0ZXN0dXNlciBzc2xjZXJ0 PXNzbC9jbGllbnQuY3J0IHNzbGtleT1zc2wvY2xpZW50X3RtcC5rZXkiLAorCQkiJGNvbW1vbl9j b25uc3RyIHVzZXI9c3NsdGVzdHVzZXIgc3NsY2VydD1zc2wvY2xpZW50LmNydCBzc2xrZXk9c3Ns L2NsaWVudF90bXAua2V5IGNlcnRfZGF0YWJhc2U9c3NsL25zcy9jbGllbnQuY3J0X19jbGllbnQu a2V5LmRiIiwKIAkJJy1jJywKIAkJIlNFTEVDVCAqIEZST00gcGdfc3RhdF9zc2wgV0hFUkUgcGlk ID0gcGdfYmFja2VuZF9waWQoKSIKIAldLAogCXFye15waWQsc3NsLHZlcnNpb24sY2lwaGVyLGJp dHMsY29tcHJlc3Npb24sY2xpZW50X2RuLGNsaWVudF9zZXJpYWwsaXNzdWVyX2RuXHI/XG4KLQkJ CQleXGQrLHQsVExTdltcZC5dKyxbXHctXSssXGQrLGYsL0NOPXNzbHRlc3R1c2VyLDEsXFEvQ049 VGVzdCBDQSBmb3IgUG9zdGdyZVNRTCBTU0wgcmVncmVzc2lvbiB0ZXN0IGNsaWVudCBjZXJ0c1xF XHI/JH1teCwKKwkJCQleXGQrLHQsVExTdltcZC5dKyxbXHctXSssXGQrLGYsLz9DTj1zc2x0ZXN0 dXNlciwxLC8/XFFDTj1UZXN0IENBIGZvciBQb3N0Z3JlU1FMIFNTTCByZWdyZXNzaW9uIHRlc3Qg Y2xpZW50IGNlcnRzXEVccj8kfW14LAogCSdwZ19zdGF0X3NzbCB3aXRoIGNsaWVudCBjZXJ0aWZp Y2F0ZScpOwogCiAjIGNsaWVudCBrZXkgd2l0aCB3cm9uZyBwZXJtaXNzaW9ucwogU0tJUDoKIHsK IAlza2lwICJQZXJtaXNzaW9ucyBjaGVjayBub3QgZW5mb3JjZWQgb24gV2luZG93cyIsIDIgaWYg KCR3aW5kb3dzX29zKTsKKwlza2lwICJLZXkgbm90IG9uIGZpbGVzeXN0ZW0gd2l0aCBOU1MiLCAg ICAgICAgICAgIDIgaWYgKCRuc3MpOwogCiAJdGVzdF9jb25uZWN0X2ZhaWxzKAogCQkkY29tbW9u X2Nvbm5zdHIsCkBAIC00OTUsMTAgKzU1OCwxMyBAQCBTS0lQOgogdGVzdF9jb25uZWN0X2ZhaWxz KAogCSRjb21tb25fY29ubnN0ciwKIAkidXNlcj1hbm90aGVydXNlciBzc2xjZXJ0PXNzbC9jbGll bnQuY3J0IHNzbGtleT1zc2wvY2xpZW50X3RtcC5rZXkiLAotCXFyL2NlcnRpZmljYXRlIGF1dGhl bnRpY2F0aW9uIGZhaWxlZCBmb3IgdXNlciAiYW5vdGhlcnVzZXIiLywKKwlxci91bmFibGUgdG8g dmVyaWZ5IGNlcnRpZmljYXRlfGNlcnRpZmljYXRlIGF1dGhlbnRpY2F0aW9uIGZhaWxlZCBmb3Ig dXNlciAiYW5vdGhlcnVzZXIiLywKIAkiY2VydGlmaWNhdGUgYXV0aG9yaXphdGlvbiBmYWlscyB3 aXRoIGNsaWVudCBjZXJ0IGJlbG9uZ2luZyB0byBhbm90aGVyIHVzZXIiCiApOwogCiskY29tbW9u X2Nvbm5zdHIgPQorICAic3Nscm9vdGNlcnQ9c3NsL3Jvb3Qrc2VydmVyX2NhLmNydCBzc2xtb2Rl PXJlcXVpcmUgZGJuYW1lPWNlcnRkYiBob3N0YWRkcj0kU0VSVkVSSE9TVEFERFIgY2VydF9kYXRh YmFzZT1zc2wvbnNzL2NsaWVudC1yZXZva2VkLmNydF9fY2xpZW50LXJldm9rZWQua2V5LmRiIjsK KwogIyByZXZva2VkIGNsaWVudCBjZXJ0CiB0ZXN0X2Nvbm5lY3RfZmFpbHMoCiAJJGNvbW1vbl9j b25uc3RyLApAQCAtNTEwLDcgKzU3Niw3IEBAIHRlc3RfY29ubmVjdF9mYWlscygKICMgd29ya3Ms IGlmZiB1c2VybmFtZSBtYXRjaGVzIENvbW1vbiBOYW1lCiAjIGZhaWxzLCBpZmYgdXNlcm5hbWUg ZG9lc24ndCBtYXRjaCBDb21tb24gTmFtZS4KICRjb21tb25fY29ubnN0ciA9Ci0gICJzc2xyb290 Y2VydD1zc2wvcm9vdCtzZXJ2ZXJfY2EuY3J0IHNzbG1vZGU9cmVxdWlyZSBkYm5hbWU9dmVyaWZ5 ZGIgaG9zdGFkZHI9JFNFUlZFUkhPU1RBRERSIjsKKyAgInNzbHJvb3RjZXJ0PXNzbC9yb290K3Nl cnZlcl9jYS5jcnQgc3NsbW9kZT1yZXF1aXJlIGRibmFtZT12ZXJpZnlkYiBob3N0YWRkcj0kU0VS VkVSSE9TVEFERFIgY2VydF9kYXRhYmFzZT1zc2wvbnNzL2NsaWVudC5jcnRfX2NsaWVudC5rZXku ZGIiOwogCiB0ZXN0X2Nvbm5lY3Rfb2soCiAJJGNvbW1vbl9jb25uc3RyLApAQCAtNTM2LDE3ICs2 MDIsMjMgQEAgdGVzdF9jb25uZWN0X29rKAogIyBpbnRlcm1lZGlhdGUgY2xpZW50X2NhLmNydCBp cyBwcm92aWRlZCBieSBjbGllbnQsIGFuZCBpc24ndCBpbiBzZXJ2ZXIncyBzc2xfY2FfZmlsZQog c3dpdGNoX3NlcnZlcl9jZXJ0KCRub2RlLCAnc2VydmVyLWNuLW9ubHknLCAncm9vdF9jYScpOwog JGNvbW1vbl9jb25uc3RyID0KLSAgInVzZXI9c3NsdGVzdHVzZXIgZGJuYW1lPWNlcnRkYiBzc2xr ZXk9c3NsL2NsaWVudF90bXAua2V5IHNzbHJvb3RjZXJ0PXNzbC9yb290K3NlcnZlcl9jYS5jcnQg aG9zdGFkZHI9JFNFUlZFUkhPU1RBRERSIjsKKyAgInVzZXI9c3NsdGVzdHVzZXIgZGJuYW1lPWNl cnRkYiBzc2xrZXk9c3NsL2NsaWVudF90bXAua2V5IHNzbHJvb3RjZXJ0PXNzbC9yb290K3NlcnZl cl9jYS5jcnQgaG9zdGFkZHI9JFNFUlZFUkhPU1RBRERSIGNlcnRfZGF0YWJhc2U9c3NsL25zcy9j bGllbnQrY2xpZW50X2NhLmNydF9fY2xpZW50LmtleS5kYiI7CiAKLXRlc3RfY29ubmVjdF9vaygK K1RPRE86Cit7CisJbG9jYWwgJFRPRE8gPSAiV0lQIGZhaWx1cmUgY2F1c2UgY3VycmVudGx5IHVu a25vd24iOworCXRlc3RfY29ubmVjdF9vaygKKwkJJGNvbW1vbl9jb25uc3RyLAorCQkic3NsbW9k ZT1yZXF1aXJlIHNzbGNlcnQ9c3NsL2NsaWVudCtjbGllbnRfY2EuY3J0IiwKKwkJImludGVybWVk aWF0ZSBjbGllbnQgY2VydGlmaWNhdGUgaXMgcHJvdmlkZWQgYnkgY2xpZW50Iik7Cit9CisKK3Rl c3RfY29ubmVjdF9mYWlscygKIAkkY29tbW9uX2Nvbm5zdHIsCi0JInNzbG1vZGU9cmVxdWlyZSBz c2xjZXJ0PXNzbC9jbGllbnQrY2xpZW50X2NhLmNydCIsCi0JImludGVybWVkaWF0ZSBjbGllbnQg Y2VydGlmaWNhdGUgaXMgcHJvdmlkZWQgYnkgY2xpZW50Iik7Ci10ZXN0X2Nvbm5lY3RfZmFpbHMo JGNvbW1vbl9jb25uc3RyLCAic3NsbW9kZT1yZXF1aXJlIHNzbGNlcnQ9c3NsL2NsaWVudC5jcnQi LAotCXFyL1NTTCBlcnJvci8sICJpbnRlcm1lZGlhdGUgY2xpZW50IGNlcnRpZmljYXRlIGlzIG1p c3NpbmciKTsKKwkic3NsbW9kZT1yZXF1aXJlIHNzbGNlcnQ9c3NsL2NsaWVudC5jcnQiLAorCXFy L2Nvbm5lY3Rpb24gcmVxdWlyZXMgYSB2YWxpZCBjbGllbnQgY2VydGlmaWNhdGV8U1NMIGVycm9y LywKKwkiaW50ZXJtZWRpYXRlIGNsaWVudCBjZXJ0aWZpY2F0ZSBpcyBtaXNzaW5nIik7CiAKICMg Y2xlYW4gdXAKLWZvcmVhY2ggbXkgJGtleSAoQGtleXMpCi17Ci0JdW5saW5rKCJzc2wvJHtrZXl9 X3RtcC5rZXkiKTsKLX0KKworU1NMOjpTZXJ2ZXI6OmNsZWFudXAoKTsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3NzbC90LzAwMl9zY3JhbS5wbCBiL3NyYy90ZXN0L3NzbC90LzAwMl9zY3JhbS5wbApp bmRleCBhMDg4ZjcxYTFhLi5jZjU3MTRlNTQ0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zc2wvdC8w MDJfc2NyYW0ucGwKKysrIGIvc3JjL3Rlc3Qvc3NsL3QvMDAyX3NjcmFtLnBsCkBAIC0xMSwyNCAr MTEsMzkgQEAgdXNlIEZpbGU6OkNvcHk7CiB1c2UgRmluZEJpbjsKIHVzZSBsaWIgJEZpbmRCaW46 OlJlYWxCaW47CiAKLXVzZSBTU0xTZXJ2ZXI7Cit1c2UgU1NMOjpTZXJ2ZXI7CiAKLWlmICgkRU5W e3dpdGhfb3BlbnNzbH0gbmUgJ3llcycpCitteSAkb3BlbnNzbDsKK215ICRuc3M7CisKK215ICRz dXBwb3J0c190bHNfc2VydmVyX2VuZF9wb2ludDsKKworaWYgKCRFTlZ7d2l0aF9zc2x9IGVxICdu bycpCiB7CiAJcGxhbiBza2lwX2FsbCA9PiAnU1NMIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBidWls ZCc7CiB9CitlbHNlCit7CisJaWYgKCRFTlZ7d2l0aF9zc2x9IGVxICdvcGVuc3NsJykKKwl7CisJ CSRvcGVuc3NsID0gMTsKKwkJIyBEZXRlcm1pbmUgd2hldGhlciBidWlsZCBzdXBwb3J0cyB0bHMt c2VydmVyLWVuZC1wb2ludC4KKwkJJHN1cHBvcnRzX3Rsc19zZXJ2ZXJfZW5kX3BvaW50ID0KKwkJ CWNoZWNrX3BnX2NvbmZpZygiI2RlZmluZSBIQVZFX1g1MDlfR0VUX1NJR05BVFVSRV9OSUQgMSIp OworCQlwbGFuIHRlc3RzID0+ICRzdXBwb3J0c190bHNfc2VydmVyX2VuZF9wb2ludCA/IDkgOiAx MDsKKwl9CisJZWxzaWYgKCRFTlZ7d2l0aF9zc2x9IGVxICduc3MnKQorCXsKKwkJJG5zcyA9IDE7 CisJCXBsYW4gdGVzdHMgPT4gODsKKwl9Cit9CiAKICMgVGhpcyBpcyB0aGUgaG9zdG5hbWUgdXNl ZCB0byBjb25uZWN0IHRvIHRoZSBzZXJ2ZXIuCiBteSAkU0VSVkVSSE9TVEFERFIgPSAnMTI3LjAu MC4xJzsKICMgVGhpcyBpcyB0aGUgcGF0dGVybiB0byB1c2UgaW4gcGdfaGJhLmNvbmYgdG8gbWF0 Y2ggaW5jb21pbmcgY29ubmVjdGlvbnMuCiBteSAkU0VSVkVSSE9TVENJRFIgPSAnMTI3LjAuMC4x LzMyJzsKIAotIyBEZXRlcm1pbmUgd2hldGhlciBidWlsZCBzdXBwb3J0cyB0bHMtc2VydmVyLWVu ZC1wb2ludC4KLW15ICRzdXBwb3J0c190bHNfc2VydmVyX2VuZF9wb2ludCA9Ci0gIGNoZWNrX3Bn X2NvbmZpZygiI2RlZmluZSBIQVZFX1g1MDlfR0VUX1NJR05BVFVSRV9OSUQgMSIpOwotCi1teSAk bnVtYmVyX29mX3Rlc3RzID0gJHN1cHBvcnRzX3Rsc19zZXJ2ZXJfZW5kX3BvaW50ID8gOSA6IDEw OwotCiAjIEFsbG9jYXRpb24gb2YgYmFzZSBjb25uZWN0aW9uIHN0cmluZyBzaGFyZWQgYW1vbmcg bXVsdGlwbGUgdGVzdHMuCiBteSAkY29tbW9uX2Nvbm5zdHI7CiAKQEAgLTY2LDIwICs4MSwyNSBA QCB0ZXN0X2Nvbm5lY3Rfb2soCiAJJGNvbW1vbl9jb25uc3RyLAogCSJ1c2VyPXNzbHRlc3R1c2Vy IGNoYW5uZWxfYmluZGluZz1kaXNhYmxlIiwKIAkiU0NSQU0gd2l0aCBTU0wgYW5kIGNoYW5uZWxf YmluZGluZz1kaXNhYmxlIik7Ci1pZiAoJHN1cHBvcnRzX3Rsc19zZXJ2ZXJfZW5kX3BvaW50KQot ewotCXRlc3RfY29ubmVjdF9vaygKLQkJJGNvbW1vbl9jb25uc3RyLAotCQkidXNlcj1zc2x0ZXN0 dXNlciBjaGFubmVsX2JpbmRpbmc9cmVxdWlyZSIsCi0JCSJTQ1JBTSB3aXRoIFNTTCBhbmQgY2hh bm5lbF9iaW5kaW5nPXJlcXVpcmUiKTsKLX0KLWVsc2UKKworU0tJUDoKIHsKLQl0ZXN0X2Nvbm5l Y3RfZmFpbHMoCi0JCSRjb21tb25fY29ubnN0ciwKLQkJInVzZXI9c3NsdGVzdHVzZXIgY2hhbm5l bF9iaW5kaW5nPXJlcXVpcmUiLAotCQlxci9jaGFubmVsIGJpbmRpbmcgaXMgcmVxdWlyZWQsIGJ1 dCBzZXJ2ZXIgZGlkIG5vdCBvZmZlciBhbiBhdXRoZW50aWNhdGlvbiBtZXRob2QgdGhhdCBzdXBw b3J0cyBjaGFubmVsIGJpbmRpbmcvLAotCQkiU0NSQU0gd2l0aCBTU0wgYW5kIGNoYW5uZWxfYmlu ZGluZz1yZXF1aXJlIik7CisJc2tpcCAiTlNTIHN1cHBvcnQgZm9yIFRMUyBzZXJ2ZXIgZW5kcG9p bmcgaXMgbm90IGltcGxlbWVudGVkIiwgMSBpZiAoJG5zcyk7CisJaWYgKCRzdXBwb3J0c190bHNf c2VydmVyX2VuZF9wb2ludCkKKwl7CisJCXRlc3RfY29ubmVjdF9vaygKKwkJCSRjb21tb25fY29u bnN0ciwKKwkJCSJ1c2VyPXNzbHRlc3R1c2VyIGNoYW5uZWxfYmluZGluZz1yZXF1aXJlIiwKKwkJ CSJTQ1JBTSB3aXRoIFNTTCBhbmQgY2hhbm5lbF9iaW5kaW5nPXJlcXVpcmUiKTsKKwl9CisJZWxz ZQorCXsKKwkJdGVzdF9jb25uZWN0X2ZhaWxzKAorCQkJJGNvbW1vbl9jb25uc3RyLAorCQkJInVz ZXI9c3NsdGVzdHVzZXIgY2hhbm5lbF9iaW5kaW5nPXJlcXVpcmUiLAorCQkJcXIvY2hhbm5lbCBi aW5kaW5nIGlzIHJlcXVpcmVkLCBidXQgc2VydmVyIGRpZCBub3Qgb2ZmZXIgYW4gYXV0aGVudGlj YXRpb24gbWV0aG9kIHRoYXQgc3VwcG9ydHMgY2hhbm5lbCBiaW5kaW5nLywKKwkJCSJTQ1JBTSB3 aXRoIFNTTCBhbmQgY2hhbm5lbF9iaW5kaW5nPXJlcXVpcmUiKTsKKwl9CiB9CiAKICMgTm93IHRl c3Qgd2hlbiB0aGUgdXNlciBoYXMgYW4gTUQ1LWVuY3J5cHRlZCBwYXNzd29yZDsgc2hvdWxkIGZh aWwKQEAgLTg5LDIwICsxMDksMjEgQEAgdGVzdF9jb25uZWN0X2ZhaWxzKAogCXFyL2NoYW5uZWwg YmluZGluZyByZXF1aXJlZCBidXQgbm90IHN1cHBvcnRlZCBieSBzZXJ2ZXIncyBhdXRoZW50aWNh dGlvbiByZXF1ZXN0LywKIAkiTUQ1IHdpdGggU1NMIGFuZCBjaGFubmVsX2JpbmRpbmc9cmVxdWly ZSIpOwogCi0jIE5vdyB0ZXN0IHdpdGggYXV0aCBtZXRob2QgJ2NlcnQnIGJ5IGNvbm5lY3Rpbmcg dG8gJ2NlcnRkYicuIFNob3VsZCBmYWlsLAotIyBiZWNhdXNlIGNoYW5uZWwgYmluZGluZyBpcyBu b3QgcGVyZm9ybWVkLiAgTm90ZSB0aGF0IHNzbC9jbGllbnQua2V5IG1heQotIyBiZSB1c2VkIGlu IGEgZGlmZmVyZW50IHRlc3QsIHNvIHRoZSBuYW1lIG9mIHRoaXMgdGVtcG9yYXJ5IGNsaWVudCBr ZXkKLSMgaXMgY2hvc2VuIGhlcmUgdG8gYmUgdW5pcXVlLgotbXkgJGNsaWVudF90bXBfa2V5ID0g InNzbC9jbGllbnRfc2NyYW1fdG1wLmtleSI7Ci1jb3B5KCJzc2wvY2xpZW50LmtleSIsICRjbGll bnRfdG1wX2tleSk7Ci1jaG1vZCAwNjAwLCAkY2xpZW50X3RtcF9rZXk7Ci10ZXN0X2Nvbm5lY3Rf ZmFpbHMoCi0JInNzbGNlcnQ9c3NsL2NsaWVudC5jcnQgc3Nsa2V5PSRjbGllbnRfdG1wX2tleSBz c2xyb290Y2VydD1pbnZhbGlkIGhvc3RhZGRyPSRTRVJWRVJIT1NUQUREUiIsCi0JImRibmFtZT1j ZXJ0ZGIgdXNlcj1zc2x0ZXN0dXNlciBjaGFubmVsX2JpbmRpbmc9cmVxdWlyZSIsCi0JcXIvY2hh bm5lbCBiaW5kaW5nIHJlcXVpcmVkLCBidXQgc2VydmVyIGF1dGhlbnRpY2F0ZWQgY2xpZW50IHdp dGhvdXQgY2hhbm5lbCBiaW5kaW5nLywKLQkiQ2VydCBhdXRoZW50aWNhdGlvbiBhbmQgY2hhbm5l bF9iaW5kaW5nPXJlcXVpcmUiKTsKLQotIyBjbGVhbiB1cAotdW5saW5rKCRjbGllbnRfdG1wX2tl eSk7Ci0KLWRvbmVfdGVzdGluZygkbnVtYmVyX29mX3Rlc3RzKTsKK1NLSVA6Cit7CisJc2tpcCAi TlNTIHN1cHBvcnQgbm90IGltcGxlbWVudGVkIHlldCIsIDEgaWYgKCRuc3MpOworCSMgTm93IHRl c3Qgd2l0aCBhdXRoIG1ldGhvZCAnY2VydCcgYnkgY29ubmVjdGluZyB0byAnY2VydGRiJy4gU2hv dWxkIGZhaWwsCisJIyBiZWNhdXNlIGNoYW5uZWwgYmluZGluZyBpcyBub3QgcGVyZm9ybWVkLiAg Tm90ZSB0aGF0IHNzbC9jbGllbnQua2V5IG1heQorCSMgYmUgdXNlZCBpbiBhIGRpZmZlcmVudCB0 ZXN0LCBzbyB0aGUgbmFtZSBvZiB0aGlzIHRlbXBvcmFyeSBjbGllbnQga2V5CisJIyBpcyBjaG9z ZW4gaGVyZSB0byBiZSB1bmlxdWUuCisJbXkgJGNsaWVudF90bXBfa2V5ID0gInNzbC9jbGllbnRf c2NyYW1fdG1wLmtleSI7CisJY29weSgic3NsL2NsaWVudC5rZXkiLCAkY2xpZW50X3RtcF9rZXkp OworCWNobW9kIDA2MDAsICRjbGllbnRfdG1wX2tleTsKKwl0ZXN0X2Nvbm5lY3RfZmFpbHMoCisJ CSJzc2xjZXJ0PXNzbC9jbGllbnQuY3J0IHNzbGtleT0kY2xpZW50X3RtcF9rZXkgc3Nscm9vdGNl cnQ9aW52YWxpZCBob3N0YWRkcj0kU0VSVkVSSE9TVEFERFIiLAorCQkiZGJuYW1lPWNlcnRkYiB1 c2VyPXNzbHRlc3R1c2VyIGNoYW5uZWxfYmluZGluZz1yZXF1aXJlIiwKKwkJcXIvY2hhbm5lbCBi aW5kaW5nIHJlcXVpcmVkLCBidXQgc2VydmVyIGF1dGhlbnRpY2F0ZWQgY2xpZW50IHdpdGhvdXQg Y2hhbm5lbCBiaW5kaW5nLywKKwkJIkNlcnQgYXV0aGVudGljYXRpb24gYW5kIGNoYW5uZWxfYmlu ZGluZz1yZXF1aXJlIik7CisJIyBjbGVhbiB1cAorCXVubGluaygkY2xpZW50X3RtcF9rZXkpOwor fQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3NsL3QvU1NML0JhY2tlbmQvTlNTLnBtIGIvc3JjL3Rl c3Qvc3NsL3QvU1NML0JhY2tlbmQvTlNTLnBtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAuLmM1YjMxZTU4NGEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9zc2wvdC9T U0wvQmFja2VuZC9OU1MucG0KQEAgLTAsMCArMSw3MyBAQAorcGFja2FnZSBTU0w6OkJhY2tlbmQ6 Ok5TUzsKKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKK3VzZSBFeHBvcnRlcjsKKworb3Vy IEBJU0EgICAgICAgPSBxdyhFeHBvcnRlcik7CitvdXIgQEVYUE9SVF9PSyA9IHF3KGdldF9uZXdf bnNzX2JhY2tlbmQpOworCitzdWIgbmV3Cit7CisJbXkgKCRjbGFzcykgPSBAXzsKKworCW15ICRz ZWxmID0geyBfbGlicmFyeSA9PiAnTlNTJyB9OworCisJYmxlc3MgJHNlbGYsICRjbGFzczsKKwor CXJldHVybiAkc2VsZjsKK30KKworc3ViIGdldF9uZXdfbnNzX2JhY2tlbmQKK3sKKwlteSAkY2xh c3MgPSAnU1NMOjpCYWNrZW5kOjpOU1MnOworCisJcmV0dXJuICRjbGFzcy0+bmV3KCk7Cit9CisK K3N1YiBpbml0Cit7CisJIyBNYWtlIHN1cmUgdGhlIGNlcnRpZmljYXRlIGRhdGFiYXNlcyBhcmUg aW4gcGxhY2U/Cit9CisKK3N1YiBnZXRfbGlicmFyeQoreworCW15ICgkc2VsZikgPSBAXzsKKwor CXJldHVybiAkc2VsZi0+e19saWJyYXJ5fTsKK30KKworc3ViIHNldF9zZXJ2ZXJfY2VydAorewor CW15ICRzZWxmICAgICA9ICRfWzBdOworCW15ICRjZXJ0ZmlsZSA9ICRfWzFdOworCW15ICRjYWZp bGUgICA9ICRfWzJdOworCW15ICRrZXlmaWxlICA9ICRfWzNdOworCisJbXkgJGNlcnRfbmlja25h bWU7CisKKwlpZiAoJGNlcnRmaWxlID1+IC9uYXRpdmUvKQorCXsKKwkJJGNlcnRfbmlja25hbWUg PSAkY2VydGZpbGU7CisJfQorCWVsc2UKKwl7CisJCSRjZXJ0X25pY2tuYW1lID0gJGNlcnRmaWxl IC4gJy5jcnRfXycgLiAka2V5ZmlsZSAuICcua2V5JzsKKwl9CisJbXkgJGNlcnRfZGF0YWJhc2Ug PSAkY2VydF9uaWNrbmFtZSAuICcuZGInOworCisJbXkgJHNzbGNvbmYgPQorCSAgICAic3NsX2Nh X2ZpbGU9JyRjYWZpbGUuY3J0J1xuIgorCSAgLiAic3NsX2NlcnRfZmlsZT0nc3NsLyRjZXJ0Zmls ZS5jcnQnXG4iCisJICAuICJzc2xfY3JsX2ZpbGU9JydcbiIKKwkgIC4gInNzbF9kYXRhYmFzZT0n bnNzLyRjZXJ0X2RhdGFiYXNlJ1xuIjsKKworCXJldHVybiAkc3NsY29uZjsKK30KKworc3ViIGNs ZWFudXAKK3sKKwkjIFNvbWV0aGluZz8KK30KKworMTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Nz bC90L1NTTC9CYWNrZW5kL09wZW5TU0wucG0gYi9zcmMvdGVzdC9zc2wvdC9TU0wvQmFja2VuZC9P cGVuU1NMLnBtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjYyYjExYjc2 MzIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9zc2wvdC9TU0wvQmFja2VuZC9PcGVuU1NM LnBtCkBAIC0wLDAgKzEsMTAzIEBACitwYWNrYWdlIFNTTDo6QmFja2VuZDo6T3BlblNTTDsKKwor dXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKK3VzZSBFeHBvcnRlcjsKK3VzZSBGaWxlOjpDb3B5 OworCitvdXIgQElTQSAgICAgICA9IHF3KEV4cG9ydGVyKTsKK291ciBARVhQT1JUX09LID0gcXco Z2V0X25ld19vcGVuc3NsX2JhY2tlbmQpOworCitvdXIgKEBrZXlzKTsKKworSU5JVAoreworCUBr ZXlzID0gKAorCQkiY2xpZW50IiwgICAgICJjbGllbnQtcmV2b2tlZCIsCisJCSJjbGllbnQtZGVy IiwgImNsaWVudC1lbmNyeXB0ZWQtcGVtIiwKKwkJImNsaWVudC1lbmNyeXB0ZWQtZGVyIik7Cit9 CisKK3N1YiBuZXcKK3sKKwlteSAoJGNsYXNzKSA9IEBfOworCisJbXkgJHNlbGYgPSB7IF9saWJy YXJ5ID0+ICdPcGVuU1NMJyB9OworCisJYmxlc3MgJHNlbGYsICRjbGFzczsKKworCXJldHVybiAk c2VsZjsKK30KKworc3ViIGdldF9uZXdfb3BlbnNzbF9iYWNrZW5kCit7CisJbXkgJGNsYXNzID0g J1NTTDo6QmFja2VuZDo6T3BlblNTTCc7CisKKwlteSAkYmFja2VuZCA9ICRjbGFzcy0+bmV3KCk7 CisKKwlyZXR1cm4gJGJhY2tlbmQ7Cit9CisKK3N1YiBpbml0Cit7CisJIyBUaGUgY2xpZW50J3Mg cHJpdmF0ZSBrZXkgbXVzdCBub3QgYmUgd29ybGQtcmVhZGFibGUsIHNvIHRha2UgYSBjb3B5CisJ IyBvZiB0aGUga2V5IHN0b3JlZCBpbiB0aGUgY29kZSB0cmVlIGFuZCB1cGRhdGUgaXRzIHBlcm1p c3Npb25zLgorCSMKKwkjIFRoaXMgY2hhbmdlcyBzc2wvY2xpZW50LmtleSB0byBzc2wvY2xpZW50 X3RtcC5rZXkgZXRjIGZvciB0aGUgcmVzdAorCSMgb2YgdGhlIHRlc3RzLgorCWZvcmVhY2ggbXkg JGtleSAoQGtleXMpCisJeworCQljb3B5KCJzc2wvJHtrZXl9LmtleSIsICJzc2wvJHtrZXl9X3Rt cC5rZXkiKQorCQkgIG9yIGRpZQorCQkgICJjb3VsZG4ndCBjb3B5IHNzbC8ke2tleX0ua2V5IHRv IHNzbC8ke2tleX1fdG1wLmtleSBmb3IgcGVybWlzc2lvbnMgY2hhbmdlOiAkISI7CisJCWNobW9k IDA2MDAsICJzc2wvJHtrZXl9X3RtcC5rZXkiCisJCSAgb3IgZGllICJmYWlsZWQgdG8gY2hhbmdl IHBlcm1pc3Npb25zIG9uIHNzbC8ke2tleX1fdG1wLmtleTogJCEiOworCX0KKworCSMgQWxzbyBt YWtlIGEgY29weSBvZiB0aGF0IGV4cGxpY2l0bHkgd29ybGQtcmVhZGFibGUuICBXZSBjYW4ndAor CSMgbmVjZXNzYXJpbHkgcmVseSBvbiB0aGUgZmlsZSBpbiB0aGUgc291cmNlIHRyZWUgaGF2aW5n IHRob3NlCisJIyBwZXJtaXNzaW9ucy4gQWRkIGl0IHRvIEBrZXlzIHRvIGluY2x1ZGUgaXQgaW4g dGhlIGZpbmFsIGNsZWFuCisJIyB1cCBwaGFzZS4KKwljb3B5KCJzc2wvY2xpZW50LmtleSIsICJz c2wvY2xpZW50X3dyb25ncGVybXNfdG1wLmtleSIpCisJICBvciBkaWUKKwkgICJjb3VsZG4ndCBj b3B5IHNzbC9jbGllbnQua2V5IHRvIHNzbC9jbGllbnRfd3JvbmdwZXJtc190bXAua2V5OiAkISI7 CisJY2htb2QgMDY0NCwgInNzbC9jbGllbnRfd3JvbmdwZXJtc190bXAua2V5IgorCSAgb3IgZGll CisJICAiZmFpbGVkIHRvIGNoYW5nZSBwZXJtaXNzaW9ucyBvbiBzc2wvY2xpZW50X3dyb25ncGVy bXNfdG1wLmtleTogJCEiOworCXB1c2ggQGtleXMsICdjbGllbnRfd3JvbmdwZXJtcyc7Cit9CisK KyMgQ2hhbmdlIHRoZSBjb25maWd1cmF0aW9uIHRvIHVzZSBnaXZlbiBzZXJ2ZXIgY2VydCBmaWxl LCBhbmQgcmVsb2FkCisjIHRoZSBzZXJ2ZXIgc28gdGhhdCB0aGUgY29uZmlndXJhdGlvbiB0YWtl cyBlZmZlY3QuCitzdWIgc2V0X3NlcnZlcl9jZXJ0Cit7CisJbXkgJHNlbGYgICAgID0gJF9bMF07 CisJbXkgJGNlcnRmaWxlID0gJF9bMV07CisJbXkgJGNhZmlsZSAgID0gJF9bMl0gfHwgInJvb3Qr Y2xpZW50X2NhIjsKKwlteSAka2V5ZmlsZSAgPSAkX1szXSB8fCAkY2VydGZpbGU7CisKKwlteSAk c3NsY29uZiA9CisJICAgICJzc2xfY2FfZmlsZT0nJGNhZmlsZS5jcnQnXG4iCisJICAuICJzc2xf Y2VydF9maWxlPSckY2VydGZpbGUuY3J0J1xuIgorCSAgLiAic3NsX2tleV9maWxlPScka2V5Zmls ZS5rZXknXG4iCisJICAuICJzc2xfY3JsX2ZpbGU9J3Jvb3QrY2xpZW50LmNybCdcbiI7CisKKwly ZXR1cm4gJHNzbGNvbmY7Cit9CisKK3N1YiBnZXRfbGlicmFyeQoreworCW15ICgkc2VsZikgPSBA XzsKKworCXJldHVybiAkc2VsZi0+e19saWJyYXJ5fTsKK30KKworc3ViIGNsZWFudXAKK3sKKwlm b3JlYWNoIG15ICRrZXkgKEBrZXlzKQorCXsKKwkJdW5saW5rKCJzc2wvJHtrZXl9X3RtcC5rZXki KTsKKwl9Cit9CisKKzE7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zc2wvdC9TU0xTZXJ2ZXIucG0g Yi9zcmMvdGVzdC9zc2wvdC9TU0wvU2VydmVyLnBtCnNpbWlsYXJpdHkgaW5kZXggNzglCnJlbmFt ZSBmcm9tIHNyYy90ZXN0L3NzbC90L1NTTFNlcnZlci5wbQpyZW5hbWUgdG8gc3JjL3Rlc3Qvc3Ns L3QvU1NML1NlcnZlci5wbQppbmRleCBmNTk4N2EwMDNlLi5lZTkwMTg1NWI1IDEwMDY0NAotLS0g YS9zcmMvdGVzdC9zc2wvdC9TU0xTZXJ2ZXIucG0KKysrIGIvc3JjL3Rlc3Qvc3NsL3QvU1NML1Nl cnZlci5wbQpAQCAtMjMsMTkgKzIzLDM5IEBACiAjIGV4cGxpY2l0bHkgYmVjYXVzZSBhbiBpbnZh bGlkIHNzbGNlcnQgb3Igc3Nscm9vdGNlcnQsIHJlc3BlY3RpdmVseSwKICMgY2F1c2VzIHRob3Nl IHRvIGJlIGlnbm9yZWQuKQogCi1wYWNrYWdlIFNTTFNlcnZlcjsKK3BhY2thZ2UgU1NMOjpTZXJ2 ZXI7CiAKIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3M7CiB1c2UgUG9zdGdyZXNOb2RlOwordXNl IFJlY3Vyc2l2ZUNvcHk7CiB1c2UgVGVzdExpYjsKIHVzZSBGaWxlOjpCYXNlbmFtZTsKIHVzZSBG aWxlOjpDb3B5OwogdXNlIFRlc3Q6Ok1vcmU7Cit1c2UgU1NMOjpCYWNrZW5kOjpPcGVuU1NMIHF3 KGdldF9uZXdfb3BlbnNzbF9iYWNrZW5kKTsKK3VzZSBTU0w6OkJhY2tlbmQ6Ok5TUyBxdyhnZXRf bmV3X25zc19iYWNrZW5kKTsKKworb3VyICgkb3BlbnNzbCwgJG5zcywgJGJhY2tlbmQpOworCisj IFRoZSBUTFMgYmFja2VuZCB3aGljaCB0aGUgc2VydmVyIGlzIHVzaW5nIHNob3VsZCBiZSBtb3N0 bHkgdHJhbnNwYXJlbnQgZm9yCisjIHRoZSB1c2VyLCBhcGFydCBmcm9tIGluZGl2aWR1YWwgY29u ZmlndXJhdGlvbiBzZXR0aW5ncywgc28ga2VlcCB0aGUgYmFja2VuZAorIyBzcGVjaWZpYyB0aGlu Z3MgYWJzdHJhY3RlZCBiZWhpbmQgU1NMOjpTZXJ2ZXIuCitpZiAoJEVOVnt3aXRoX3NzbH0gZXEg J29wZW5zc2wnKQoreworCSRiYWNrZW5kID0gZ2V0X25ld19vcGVuc3NsX2JhY2tlbmQoKTsKKwkk b3BlbnNzbCA9IDE7Cit9CitlbHNpZiAoJEVOVnt3aXRoX3NzbH0gZXEgJ25zcycpCit7CisJJGJh Y2tlbmQgPSBnZXRfbmV3X25zc19iYWNrZW5kKCk7CisJJG5zcyAgICAgPSAxOworfQogCiB1c2Ug RXhwb3J0ZXIgJ2ltcG9ydCc7CiBvdXIgQEVYUE9SVCA9IHF3KAogICBjb25maWd1cmVfdGVzdF9z ZXJ2ZXJfZm9yX3NzbAorICBzZXRfc2VydmVyX2NlcnQKICAgc3dpdGNoX3NlcnZlcl9jZXJ0CiAg IHRlc3RfY29ubmVjdF9mYWlscwogICB0ZXN0X2Nvbm5lY3Rfb2sKQEAgLTE0NCwxMiArMTY0LDE5 IEBAIHN1YiBjb25maWd1cmVfdGVzdF9zZXJ2ZXJfZm9yX3NzbAogCWNsb3NlICRzc2xjb25mOwog CiAJIyBDb3B5IGFsbCBzZXJ2ZXIgY2VydGlmaWNhdGVzIGFuZCBrZXlzLCBhbmQgY2xpZW50IHJv b3QgY2VydCwgdG8gdGhlIGRhdGEgZGlyCi0JY29weV9maWxlcygic3NsL3NlcnZlci0qLmNydCIs ICRwZ2RhdGEpOwotCWNvcHlfZmlsZXMoInNzbC9zZXJ2ZXItKi5rZXkiLCAkcGdkYXRhKTsKLQlj aG1vZCgwNjAwLCBnbG9iICIkcGdkYXRhL3NlcnZlci0qLmtleSIpIG9yIGRpZSAkITsKLQljb3B5 X2ZpbGVzKCJzc2wvcm9vdCtjbGllbnRfY2EuY3J0IiwgJHBnZGF0YSk7Ci0JY29weV9maWxlcygi c3NsL3Jvb3RfY2EuY3J0IiwgICAgICAgICRwZ2RhdGEpOwotCWNvcHlfZmlsZXMoInNzbC9yb290 K2NsaWVudC5jcmwiLCAgICAkcGdkYXRhKTsKKwlpZiAoZGVmaW5lZCgkb3BlbnNzbCkpCisJewor CQljb3B5X2ZpbGVzKCJzc2wvc2VydmVyLSouY3J0IiwgJHBnZGF0YSk7CisJCWNvcHlfZmlsZXMo InNzbC9zZXJ2ZXItKi5rZXkiLCAkcGdkYXRhKTsKKwkJY2htb2QoMDYwMCwgZ2xvYiAiJHBnZGF0 YS9zZXJ2ZXItKi5rZXkiKSBvciBkaWUgJCE7CisJCWNvcHlfZmlsZXMoInNzbC9yb290K2NsaWVu dF9jYS5jcnQiLCAkcGdkYXRhKTsKKwkJY29weV9maWxlcygic3NsL3Jvb3RfY2EuY3J0IiwgICAg ICAgICRwZ2RhdGEpOworCQljb3B5X2ZpbGVzKCJzc2wvcm9vdCtjbGllbnQuY3JsIiwgICAgJHBn ZGF0YSk7CisJfQorCWVsc2lmIChkZWZpbmVkKCRuc3MpKQorCXsKKwkJUmVjdXJzaXZlQ29weTo6 Y29weXBhdGgoInNzbC9uc3MiLCAkcGdkYXRhIC4gIi9uc3MiKSBpZiAtZSAic3NsL25zcyI7CisJ fQogCiAJIyBTdG9wIGFuZCByZXN0YXJ0IHNlcnZlciB0byBsb2FkIG5ldyBsaXN0ZW5fYWRkcmVz c2VzLgogCSRub2RlLT5yZXN0YXJ0OwpAQCAtMTU3LDI2ICsxODQsNTEgQEAgc3ViIGNvbmZpZ3Vy ZV90ZXN0X3NlcnZlcl9mb3Jfc3NsCiAJIyBDaGFuZ2UgcGdfaGJhIGFmdGVyIHJlc3RhcnQgYmVj YXVzZSBob3N0c3NsIHJlcXVpcmVzIHNzbD1vbgogCWNvbmZpZ3VyZV9oYmFfZm9yX3NzbCgkbm9k ZSwgJHNlcnZlcmNpZHIsICRhdXRobWV0aG9kKTsKIAorCSMgRmluYWxseSwgcGVyZm9ybSBiYWNr ZW5kIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24KKwkkYmFja2VuZC0+aW5pdCgpOworCiAJcmV0dXJu OwogfQogCi0jIENoYW5nZSB0aGUgY29uZmlndXJhdGlvbiB0byB1c2UgZ2l2ZW4gc2VydmVyIGNl cnQgZmlsZSwgYW5kIHJlbG9hZAotIyB0aGUgc2VydmVyIHNvIHRoYXQgdGhlIGNvbmZpZ3VyYXRp b24gdGFrZXMgZWZmZWN0Lgotc3ViIHN3aXRjaF9zZXJ2ZXJfY2VydAorc3ViIHNzbF9saWJyYXJ5 Cit7CisJcmV0dXJuICRiYWNrZW5kLT5nZXRfbGlicmFyeSgpOworfQorCitzdWIgY2xlYW51cAor eworCSRiYWNrZW5kLT5jbGVhbnVwKCk7Cit9CisKKyMgQ2hhbmdlIHRoZSBjb25maWd1cmF0aW9u IHRvIHVzZSBnaXZlbiBzZXJ2ZXIgY2VydCBmaWxlLAorc3ViIHNldF9zZXJ2ZXJfY2VydAogewog CW15ICRub2RlICAgICA9ICRfWzBdOwogCW15ICRjZXJ0ZmlsZSA9ICRfWzFdOwogCW15ICRjYWZp bGUgICA9ICRfWzJdIHx8ICJyb290K2NsaWVudF9jYSI7CisJbXkgJGtleWZpbGUgID0gJF9bM10g fHwgJyc7CisJbXkgJHB3Y21kICAgID0gJF9bNF0gfHwgJyc7CiAJbXkgJHBnZGF0YSAgID0gJG5v ZGUtPmRhdGFfZGlyOwogCisJJGtleWZpbGUgPSAkY2VydGZpbGUgaWYgJGtleWZpbGUgZXEgJyc7 CisKIAlvcGVuIG15ICRzc2xjb25mLCAnPicsICIkcGdkYXRhL3NzbGNvbmZpZy5jb25mIjsKIAlw cmludCAkc3NsY29uZiAic3NsPW9uXG4iOwotCXByaW50ICRzc2xjb25mICJzc2xfY2FfZmlsZT0n JGNhZmlsZS5jcnQnXG4iOwotCXByaW50ICRzc2xjb25mICJzc2xfY2VydF9maWxlPSckY2VydGZp bGUuY3J0J1xuIjsKLQlwcmludCAkc3NsY29uZiAic3NsX2tleV9maWxlPSckY2VydGZpbGUua2V5 J1xuIjsKLQlwcmludCAkc3NsY29uZiAic3NsX2NybF9maWxlPSdyb290K2NsaWVudC5jcmwnXG4i OworCXByaW50ICRzc2xjb25mICRiYWNrZW5kLT5zZXRfc2VydmVyX2NlcnQoJGNlcnRmaWxlLCAk Y2FmaWxlLCAka2V5ZmlsZSk7CisJcHJpbnQgJHNzbGNvbmYgInNzbF9wYXNzcGhyYXNlX2NvbW1h bmQ9JyRwd2NtZCdcbiIKKwkgIHVubGVzcyAkcHdjbWQgZXEgJyc7CiAJY2xvc2UgJHNzbGNvbmY7 CisJcmV0dXJuOworfQogCisjIENoYW5nZSB0aGUgY29uZmlndXJhdGlvbiB0byB1c2UgZ2l2ZW4g c2VydmVyIGNlcnQgZmlsZSwgYW5kIHJlbG9hZAorIyB0aGUgc2VydmVyIHNvIHRoYXQgdGhlIGNv bmZpZ3VyYXRpb24gdGFrZXMgZWZmZWN0LgorIyBUYWtlcyB0aGUgc2FtZSBhcmd1bWVudHMgYXMg c2V0X3NlcnZlcl9jZXJ0LCB3aGljaCBpdCBjYWxscyB0byBkbyB0aGF0CisjIHBpZWNlIG9mIHRo ZSB3b3JrLgorc3ViIHN3aXRjaF9zZXJ2ZXJfY2VydAoreworCW15ICRub2RlID0gJF9bMF07CisJ c2V0X3NlcnZlcl9jZXJ0KEBfKTsKIAkkbm9kZS0+cmVzdGFydDsKIAlyZXR1cm47CiB9Ci0tIAoy LjI1LjEKCg== --_008_a9b663ae4a4b71525e88b75463c865a6693cb4cecamelvmwarecom_ Content-Type: text/x-patch; name="v23-0003-NSS-pg_strong_random-support.patch" Content-Description: v23-0003-NSS-pg_strong_random-support.patch Content-Disposition: attachment; filename="v23-0003-NSS-pg_strong_random-support.patch"; size=3917; creation-date="Wed, 20 Jan 2021 17:07:08 GMT"; modification-date="Wed, 20 Jan 2021 17:07:08 GMT" Content-ID: <883D0142EC9C6A4797EF0C069A31B44D@namprd05.prod.outlook.com> Content-Transfer-Encoding: base64 RnJvbSA3Y2I1NDU0MzFiNWQzOTJlOTg2YzgxYTYyNTNlNDRiMjRmZDhiOGQxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgR3VzdGFmc3NvbiA8ZGFuaWVsQHllc3FsLnNlPgpE YXRlOiBXZWQsIDI4IE9jdCAyMDIwIDExOjI0OjAyICswMTAwClN1YmplY3Q6IFtQQVRDSCB2MjMg My82XSBOU1MgcGdfc3Ryb25nX3JhbmRvbSBzdXBwb3J0CgotLS0KIGNvbmZpZ3VyZSAgICAgICAg ICAgICAgICAgICB8ICAzICsrLQogY29uZmlndXJlLmFjICAgICAgICAgICAgICAgIHwgIDMgKyst CiBzcmMvaW5jbHVkZS9wZ19jb25maWcuaC5pbiAgfCAgMyArKysKIHNyYy9wb3J0L3BnX3N0cm9u Z19yYW5kb20uYyB8IDUwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIDQg ZmlsZXMgY2hhbmdlZCwgNTYgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKaW5kZXggY2M2MDg4YjU0NS4uODc2YTBlYTgzOSAx MDA3NTUKLS0tIGEvY29uZmlndXJlCisrKyBiL2NvbmZpZ3VyZQpAQCAtMTg0NDEsNiArMTg0NDEs NyBAQCAkYXNfZWNobyAiTlNTIiA+JjY7IH0KIGVsaWYgdGVzdCB4IiRQT1JUTkFNRSIgPSB4Indp bjMyIiA7IHRoZW4KICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy ZXN1bHQ6IFdpbmRvd3MgbmF0aXZlIiA+JjUKICRhc19lY2hvICJXaW5kb3dzIG5hdGl2ZSIgPiY2 OyB9CisKIGVsc2UKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy ZXN1bHQ6IC9kZXYvdXJhbmRvbSIgPiY1CiAkYXNfZWNobyAiL2Rldi91cmFuZG9tIiA+JjY7IH0K QEAgLTE4NDY3LDcgKzE4NDY4LDcgQEAgZmkKICAgaWYgdGVzdCB4IiRhY19jdl9maWxlX19kZXZf dXJhbmRvbSIgPSB4Im5vIiA7IHRoZW4KICAgICBhc19mbl9lcnJvciAkPyAiCiBubyBzb3VyY2Ug b2Ygc3Ryb25nIHJhbmRvbSBudW1iZXJzIHdhcyBmb3VuZAotUG9zdGdyZVNRTCBjYW4gdXNlIE9w ZW5TU0wsIG5hdGl2ZSBXaW5kb3dzIEFQSSBvciAvZGV2L3VyYW5kb20gYXMgYSBzb3VyY2Ugb2Yg cmFuZG9tIG51bWJlcnMuIiAiJExJTkVOTyIgNQorUG9zdGdyZVNRTCBjYW4gdXNlIE9wZW5TU0ws IE5TUywgbmF0aXZlIFdpbmRvd3MgQVBJIG9yIC9kZXYvdXJhbmRvbSBhcyBhIHNvdXJjZSBvZiBy YW5kb20gbnVtYmVycy4iICIkTElORU5PIiA1CiAgIGZpCiBmaQogCmRpZmYgLS1naXQgYS9jb25m aWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggMGRhOGNjOWIwYi4uNmI2NjQxYTA5NCAxMDA2 NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtMjIwMyw2ICsyMjAz LDcgQEAgZWxpZiB0ZXN0IHgiJHdpdGhfbnNzIiA9IHgieWVzIiA7IHRoZW4KICAgQUNfTVNHX1JF U1VMVChbTlNTXSkKIGVsaWYgdGVzdCB4IiRQT1JUTkFNRSIgPSB4IndpbjMyIiA7IHRoZW4KICAg QUNfTVNHX1JFU1VMVChbV2luZG93cyBuYXRpdmVdKQorCiBlbHNlCiAgIEFDX01TR19SRVNVTFQo Wy9kZXYvdXJhbmRvbV0pCiAgIEFDX0NIRUNLX0ZJTEUoWy9kZXYvdXJhbmRvbV0sIFtdLCBbXSkK QEAgLTIyMTAsNyArMjIxMSw3IEBAIGVsc2UKICAgaWYgdGVzdCB4IiRhY19jdl9maWxlX19kZXZf dXJhbmRvbSIgPSB4Im5vIiA7IHRoZW4KICAgICBBQ19NU0dfRVJST1IoWwogbm8gc291cmNlIG9m IHN0cm9uZyByYW5kb20gbnVtYmVycyB3YXMgZm91bmQKLVBvc3RncmVTUUwgY2FuIHVzZSBPcGVu U1NMLCBuYXRpdmUgV2luZG93cyBBUEkgb3IgL2Rldi91cmFuZG9tIGFzIGEgc291cmNlIG9mIHJh bmRvbSBudW1iZXJzLl0pCitQb3N0Z3JlU1FMIGNhbiB1c2UgT3BlblNTTCwgTlNTLCBuYXRpdmUg V2luZG93cyBBUEkgb3IgL2Rldi91cmFuZG9tIGFzIGEgc291cmNlIG9mIHJhbmRvbSBudW1iZXJz Ll0pCiAgIGZpCiBmaQogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wZ19jb25maWcuaC5pbiBi L3NyYy9pbmNsdWRlL3BnX2NvbmZpZy5oLmluCmluZGV4IDY3YTlmOTBlNWUuLjA4OTRmZjJiZWYg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BnX2NvbmZpZy5oLmluCisrKyBiL3NyYy9pbmNsdWRl L3BnX2NvbmZpZy5oLmluCkBAIC05MDgsNiArOTA4LDkgQEAKIC8qIERlZmluZSB0byBidWlsZCB3 aXRoIE5TUyBzdXBwb3J0ICgtLXdpdGgtbnNzKSAqLwogI3VuZGVmIFVTRV9OU1MKIAorLyogRGVm aW5lIHRvIHVzZSBOU1MgZm9yIHJhbmRvbSBudW1iZXIgZ2VuZXJhdGlvbiAqLworI3VuZGVmIFVT RV9OU1NfUkFORE9NCisKIC8qIERlZmluZSB0byAxIHRvIHVzZSBzb2Z0d2FyZSBDUkMtMzJDIGlt cGxlbWVudGF0aW9uIChzbGljaW5nLWJ5LTgpLiAqLwogI3VuZGVmIFVTRV9TTElDSU5HX0JZXzhf Q1JDMzJDCiAKZGlmZiAtLWdpdCBhL3NyYy9wb3J0L3BnX3N0cm9uZ19yYW5kb20uYyBiL3NyYy9w b3J0L3BnX3N0cm9uZ19yYW5kb20uYwppbmRleCAwN2YyNGMwMDg5Li40MGRlMjM3NjI4IDEwMDY0 NAotLS0gYS9zcmMvcG9ydC9wZ19zdHJvbmdfcmFuZG9tLmMKKysrIGIvc3JjL3BvcnQvcGdfc3Ry b25nX3JhbmRvbS5jCkBAIC0xMzcsNyArMTM3LDU1IEBAIHBnX3N0cm9uZ19yYW5kb20odm9pZCAq YnVmLCBzaXplX3QgbGVuKQogCXJldHVybiBmYWxzZTsKIH0KIAotI2Vsc2UJCQkJCQkJLyogbm90 IFVTRV9PUEVOU1NMIG9yIFdJTjMyICovCisjZWxpZiBkZWZpbmVkKFVTRV9OU1MpCisKKyNkZWZp bmUgcGdfQklUU19QRVJfQllURSBCSVRTX1BFUl9CWVRFCisjdW5kZWYgQklUU19QRVJfQllURQor I2RlZmluZSBOT19OU1BSXzEwX1NVUFBPUlQKKyNpbmNsdWRlIDxuc3MvbnNzLmg+CisjaW5jbHVk ZSA8bnNzL3BrMTFwdWIuaD4KKyNpZiBkZWZpbmVkKEJJVFNfUEVSX0JZVEUpCisjaWYgQklUU19Q RVJfQllURSAhPSBwZ19CSVRTX1BFUl9CWVRFCisjZXJyb3IgImluY29tcGF0aWJsZSBieXRlIHdp ZHRocyBiZXR3ZWVuIE5TUFIgYW5kIHBvc3RncmVzIgorI2VuZGlmCisjZWxzZQorI2RlZmluZSBC SVRTX1BFUl9CWVRFIHBnX0JJVFNfUEVSX0JZVEUKKyNlbmRpZgorI3VuZGVmIHBnX0JJVFNfUEVS X0JZVEUKKwordm9pZAorcGdfc3Ryb25nX3JhbmRvbV9pbml0KHZvaWQpCit7CisJLyogTm8gaW5p dGlhbGl6YXRpb24gbmVlZGVkIG9uIE5TUyAqLworfQorCitib29sCitwZ19zdHJvbmdfcmFuZG9t KHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbikKK3sKKwlOU1NJbml0UGFyYW1ldGVycyBwYXJhbXM7CisJ TlNTSW5pdENvbnRleHQgKm5zc19jb250ZXh0OworCVNFQ1N0YXR1cwlzdGF0dXM7CisKKwltZW1z ZXQoJnBhcmFtcywgMCwgc2l6ZW9mKHBhcmFtcykpOworCXBhcmFtcy5sZW5ndGggPSBzaXplb2Yo cGFyYW1zKTsKKwluc3NfY29udGV4dCA9IE5TU19Jbml0Q29udGV4dCgiIiwgIiIsICIiLCAiIiwg JnBhcmFtcywKKwkJCQkJCQkJICBOU1NfSU5JVF9SRUFET05MWSB8IE5TU19JTklUX05PQ0VSVERC IHwKKwkJCQkJCQkJICBOU1NfSU5JVF9OT01PRERCIHwgTlNTX0lOSVRfRk9SQ0VPUEVOIHwKKwkJ CQkJCQkJICBOU1NfSU5JVF9OT1JPT1RJTklUIHwgTlNTX0lOSVRfUEsxMVJFTE9BRCk7CisKKwlp ZiAoIW5zc19jb250ZXh0KQorCQlyZXR1cm4gZmFsc2U7CisKKwlzdGF0dXMgPSBQSzExX0dlbmVy YXRlUmFuZG9tKGJ1ZiwgbGVuKTsKKwlOU1NfU2h1dGRvd25Db250ZXh0KG5zc19jb250ZXh0KTsK KworCWlmIChzdGF0dXMgPT0gU0VDU3VjY2VzcykKKwkJcmV0dXJuIHRydWU7CisKKwlyZXR1cm4g ZmFsc2U7Cit9CisKKyNlbHNlCQkJCQkJCS8qIG5vdCBVU0VfT1BFTlNTTCwgVVNFX05TUyBvciBX SU4zMiAqLwogCiAvKgogICogV2l0aG91dCBPcGVuU1NMIG9yIFdpbjMyIHN1cHBvcnQsIGp1c3Qg cmVhZCAvZGV2L3VyYW5kb20gb3Vyc2VsdmVzLgotLSAKMi4yNS4xCgo= --_008_a9b663ae4a4b71525e88b75463c865a6693cb4cecamelvmwarecom_ Content-Type: text/x-patch; name="v23-0004-NSS-Documentation.patch" Content-Description: v23-0004-NSS-Documentation.patch Content-Disposition: attachment; filename="v23-0004-NSS-Documentation.patch"; size=20290; creation-date="Wed, 20 Jan 2021 17:07:08 GMT"; modification-date="Wed, 20 Jan 2021 17:07:08 GMT" Content-ID: <328CCAB2E5552C4584A1D7F3AC0C2250@namprd05.prod.outlook.com> Content-Transfer-Encoding: base64 RnJvbSA1ZDA2ZDY1OWExMDI5NDhiNWQ2OTA3MTc0OWEzYjQ2M2UzNTRmYjFmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgR3VzdGFmc3NvbiA8ZGFuaWVsQHllc3FsLnNlPgpE YXRlOiBXZWQsIDI4IE9jdCAyMDIwIDExOjI2OjMxICswMTAwClN1YmplY3Q6IFtQQVRDSCB2MjMg NC82XSBOU1MgRG9jdW1lbnRhdGlvbgoKLS0tCiBkb2Mvc3JjL3NnbWwvYWNyb255bXMuc2dtbCAg ICAgfCAgNDMgKysrKysrKysrKysrCiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgICAgICAgfCAg MjggKysrKysrKy0KIGRvYy9zcmMvc2dtbC9pbnN0YWxsYXRpb24uc2dtbCB8ICAzMCArKysrKysr LQogZG9jL3NyYy9zZ21sL2xpYnBxLnNnbWwgICAgICAgIHwgIDk5ICsrKysrKysrKysrKysrKysr KysrKysrKystCiBkb2Mvc3JjL3NnbWwvcnVudGltZS5zZ21sICAgICAgfCAxMjMgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tCiA1IGZpbGVzIGNoYW5nZWQsIDMxMSBpbnNlcnRpb25z KCspLCAxMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvYWNyb255bXMu c2dtbCBiL2RvYy9zcmMvc2dtbC9hY3Jvbnltcy5zZ21sCmluZGV4IDRlNWVjOTgzYzAuLjdiMDJj OGE2MjIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9hY3Jvbnltcy5zZ21sCisrKyBiL2RvYy9z cmMvc2dtbC9hY3Jvbnltcy5zZ21sCkBAIC00NDEsNiArNDQxLDI4IEBACiAgICAgPC9saXN0aXRl bT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxh Y3JvbnltPk5TUFI8L2Fjcm9ueW0+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+ CisgICAgICA8dWxpbmsKKyAgICAgIHVybD0iaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcv ZW4tVVMvZG9jcy9Nb3ppbGxhL1Byb2plY3RzL05TUFIiPgorICAgICAgTmV0c2NhcGUgUG9ydGFi bGUgUnVudGltZTwvdWxpbms+CisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92 YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PGFjcm9ueW0+TlNT PC9hY3JvbnltPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgPHVs aW5rCisgICAgICB1cmw9Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3Mv TW96aWxsYS9Qcm9qZWN0cy9OU1MiPgorICAgICAgTmV0d29yayBTZWN1cml0eSBTZXJ2aWNlczwv dWxpbms+CisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+ CisKICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgPHRlcm0+PGFjcm9ueW0+T0RCQzwvYWNyb255bT48 L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgpAQCAtNTM5LDYgKzU2MSwxNyBAQAogICAgIDwvbGlzdGl0 ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48 YWNyb255bT5QS0NTIzEyPC9hY3JvbnltPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxw YXJhPgorICAgICAgPHVsaW5rCisgICAgICB1cmw9Imh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93 aWtpL1BLQ1NfMTIiPgorICAgICAgUHVibGljLUtleSBDcnlwdG9ncmFwaHkgU3RhbmRhcmRzICMx MjwvdWxpbms+CisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50 cnk+CisKICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgPHRlcm0+PGFjcm9ueW0+UEw8L2Fjcm9ueW0+ PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KQEAgLTY4NCw2ICs3MTcsMTYgQEAKICAgICA8L2xpc3Rp dGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+ PGFjcm9ueW0+VExTPC9hY3JvbnltPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJh PgorICAgICAgPHVsaW5rIHVybD0iaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVHJhbnNw b3J0X0xheWVyX1NlY3VyaXR5Ij4KKyAgICAgIFRyYW5zcG9ydCBMYXllciBTZWN1cml0eTwvdWxp bms+CisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisK ICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgPHRlcm0+PGFjcm9ueW0+VE9BU1Q8L2Fjcm9ueW0+PC90 ZXJtPgogICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dt bCBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAppbmRleCA4Mjg2NGJiYjI0Li42NzM4ZjgwMDFm IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L2NvbmZpZy5zZ21sCkBAIC0xMjM2LDYgKzEyMzYsMjMgQEAgaW5jbHVkZV9kaXIgJ2NvbmYuZCcK ICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgIDx2YXJsaXN0 ZW50cnkgaWQ9Imd1Yy1zc2wtZGF0YWJhc2UiIHhyZWZsYWJlbD0ic3NsX2RhdGFiYXNlIj4KKyAg ICAgIDx0ZXJtPjx2YXJuYW1lPnNzbF9kYXRhYmFzZTwvdmFybmFtZT4gKDx0eXBlPnN0cmluZzwv dHlwZT4pCisgICAgICA8aW5kZXh0ZXJtPgorICAgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPnNzbF9k YXRhYmFzZTwvdmFybmFtZT4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAg ICA8L2luZGV4dGVybT4KKyAgICAgIDwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8 cGFyYT4KKyAgICAgICAgU3BlY2lmaWVzIHRoZSBuYW1lIG9mIHRoZSBmaWxlIGNvbnRhaW5pbmcg dGhlIHNlcnZlciBjZXJ0aWZpY2F0ZXMgYW5kCisgICAgICAgIGtleXMgd2hlbiB1c2luZyA8cHJv ZHVjdG5hbWU+TlNTPC9wcm9kdWN0bmFtZT4gZm9yIDxhY3JvbnltPlNTTDwvYWNyb255bT4KKyAg ICAgICAgY29ubmVjdGlvbnMuIFRoaXMgcGFyYW1ldGVyIGNhbiBvbmx5IGJlIHNldCBpbiB0aGUK KyAgICAgICAgPGZpbGVuYW1lPnBvc3RncmVzcWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgb3Igb24g dGhlIHNlcnZlciBjb21tYW5kCisgICAgICAgIGxpbmUuCisgICAgICAgPC9wYXJhPgorICAgICAg PC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPHZhcmxpc3RlbnRyeSBp ZD0iZ3VjLXNzbC1jaXBoZXJzIiB4cmVmbGFiZWw9InNzbF9jaXBoZXJzIj4KICAgICAgIDx0ZXJt Pjx2YXJuYW1lPnNzbF9jaXBoZXJzPC92YXJuYW1lPiAoPHR5cGU+c3RyaW5nPC90eXBlPikKICAg ICAgIDxpbmRleHRlcm0+CkBAIC0xMjUyLDcgKzEyNjksOSBAQCBpbmNsdWRlX2RpciAnY29uZi5k JwogICAgICAgICBjb25uZWN0aW9ucyB1c2luZyBUTFMgdmVyc2lvbiAxLjIgYW5kIGxvd2VyIGFy ZSBhZmZlY3RlZC4gIFRoZXJlIGlzCiAgICAgICAgIGN1cnJlbnRseSBubyBzZXR0aW5nIHRoYXQg Y29udHJvbHMgdGhlIGNpcGhlciBjaG9pY2VzIHVzZWQgYnkgVExTCiAgICAgICAgIHZlcnNpb24g MS4zIGNvbm5lY3Rpb25zLiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMKLSAgICAgICAgPGxpdGVyYWw+ SElHSDpNRURJVU06KzNERVM6IWFOVUxMPC9saXRlcmFsPi4gIFRoZSBkZWZhdWx0IGlzIHVzdWFs bHkgYQorICAgICAgICA8bGl0ZXJhbD5ISUdIOk1FRElVTTorM0RFUzohYU5VTEw8L2xpdGVyYWw+ IGZvciBzZXJ2ZXJzIHdoaWNoIGhhdmUKKyAgICAgICAgYmVlbiBidWlsdCB3aXRoIDxwcm9kdWN0 bmFtZT5PcGVuU1NMPC9wcm9kdWN0bmFtZT4gYXMgdGhlCisgICAgICAgIDxhY3JvbnltPlNTTDwv YWNyb255bT4gbGlicmFyeS4gIFRoZSBkZWZhdWx0IGlzIHVzdWFsbHkgYQogICAgICAgICByZWFz b25hYmxlIGNob2ljZSB1bmxlc3MgeW91IGhhdmUgc3BlY2lmaWMgc2VjdXJpdHkgcmVxdWlyZW1l bnRzLgogICAgICAgIDwvcGFyYT4KIApAQCAtMTQ1NCw4ICsxNDczLDExIEBAIGluY2x1ZGVfZGly ICdjb25mLmQnCiAgICAgICAgPHBhcmE+CiAgICAgICAgIFNldHMgYW4gZXh0ZXJuYWwgY29tbWFu ZCB0byBiZSBpbnZva2VkIHdoZW4gYSBwYXNzcGhyYXNlIGZvcgogICAgICAgICBkZWNyeXB0aW5n IGFuIFNTTCBmaWxlIHN1Y2ggYXMgYSBwcml2YXRlIGtleSBuZWVkcyB0byBiZSBvYnRhaW5lZC4g IEJ5Ci0gICAgICAgIGRlZmF1bHQsIHRoaXMgcGFyYW1ldGVyIGlzIGVtcHR5LCB3aGljaCBtZWFu cyB0aGUgYnVpbHQtaW4gcHJvbXB0aW5nCi0gICAgICAgIG1lY2hhbmlzbSBpcyB1c2VkLgorICAg ICAgICBkZWZhdWx0LCB0aGlzIHBhcmFtZXRlciBpcyBlbXB0eS4gV2hlbiB0aGUgc2VydmVyIGlz IHVzaW5nCisgICAgICAgIDxwcm9kdWN0bmFtZT5PcGVuU1NMPC9wcm9kdWN0bmFtZT4sIHRoaXMg bWVhbnMgdGhlIGJ1aWx0LWluIHByb21wdGluZworICAgICAgICBtZWNoYW5pc20gaXMgdXNlZC4g V2hlbiB1c2luZyA8cHJvZHVjdG5hbWU+TlNTPC9wcm9kdWN0bmFtZT4sIHRoZXJlIGlzCisgICAg ICAgIG5vIGRlZmF1bHQgcHJvbXB0aW5nIHNvIGEgYmxhbmsgY2FsbGJhY2sgd2lsbCBiZSB1c2Vk IHJldHVybmluZyBhbgorICAgICAgICBlbXB0eSBwYXNzd29yZC4KICAgICAgICA8L3BhcmE+CiAg ICAgICAgPHBhcmE+CiAgICAgICAgIFRoZSBjb21tYW5kIG11c3QgcHJpbnQgdGhlIHBhc3NwaHJh c2UgdG8gdGhlIHN0YW5kYXJkIG91dHB1dCBhbmQgZXhpdApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL2luc3RhbGxhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL2luc3RhbGxhdGlvbi5zZ21sCmlu ZGV4IDBhYzFjYjk5OTkuLmJkMDkxMjRmYjAgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9pbnN0 YWxsYXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvaW5zdGFsbGF0aW9uLnNnbWwKQEAgLTI1 MCw3ICsyNTAsNyBAQCBzdSAtIHBvc3RncmVzCiAKICAgICA8bGlzdGl0ZW0+CiAgICAgIDxwYXJh PgotICAgICAgWW91IG5lZWQgPHByb2R1Y3RuYW1lPk9wZW5TU0w8L3Byb2R1Y3RuYW1lPiwgaWYg eW91IHdhbnQgdG8gc3VwcG9ydAorICAgICAgWW91IG5lZWQgYSBzdXBwb3J0ZWQgPGFjcm9ueW0+ U1NMPC9hY3JvbnltPiBsaWJyYXJ5LCBpZiB5b3Ugd2FudCB0byBzdXBwb3J0CiAgICAgICBlbmNy eXB0ZWQgY2xpZW50IGNvbm5lY3Rpb25zLiAgPHByb2R1Y3RuYW1lPk9wZW5TU0w8L3Byb2R1Y3Ru YW1lPiBpcwogICAgICAgYWxzbyByZXF1aXJlZCBmb3IgcmFuZG9tIG51bWJlciBnZW5lcmF0aW9u IG9uIHBsYXRmb3JtcyB0aGF0IGRvIG5vdAogICAgICAgaGF2ZSA8ZmlsZW5hbWU+L2Rldi91cmFu ZG9tPC9maWxlbmFtZT4gKGV4Y2VwdCBXaW5kb3dzKS4gIFRoZSBtaW5pbXVtCkBAIC05NjYsNiAr OTY2LDMxIEBAIGJ1aWxkLXBvc3RncmVzcWw6CiAgICAgICAgPC9saXN0aXRlbT4KICAgICAgIDwv dmFybGlzdGVudHJ5PgogCisgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgIDx0ZXJtPjxvcHRp b24+LS13aXRoLW5zczwvb3B0aW9uPgorICAgICAgIDxpbmRleHRlcm0+CisgICAgICAgIDxwcmlt YXJ5Pk5TUzwvcHJpbWFyeT4KKyAgICAgICAgPHNlY29uZGFyeT5OU1BSPC9zZWNvbmRhcnk+Cisg ICAgICAgIDxzZWVhbHNvPlNTTDwvc2VlYWxzbz4KKyAgICAgICA8L2luZGV4dGVybT4KKyAgICAg ICA8L3Rlcm0+CisgICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIEJ1 aWxkIHdpdGggc3VwcG9ydCBmb3IgPGFjcm9ueW0+U1NMPC9hY3JvbnltPiAoZW5jcnlwdGVkKQor ICAgICAgICAgY29ubmVjdGlvbnMgdXNpbmcgPHByb2R1Y3RuYW1lPk5TUzwvcHJvZHVjdG5hbWU+ LiBUaGlzIHJlcXVpcmVzIHRoZQorICAgICAgICAgPHByb2R1Y3RuYW1lPk5TUzwvcHJvZHVjdG5h bWU+IHBhY2thZ2UgdG8gYmUgaW5zdGFsbGVkLiBBZGRpdGlvbmFsbHksCisgICAgICAgICA8cHJv ZHVjdG5hbWU+TlNTPC9wcm9kdWN0bmFtZT4gcmVxdWlyZXMgPHByb2R1Y3RuYW1lPk5TUFI8L3By b2R1Y3RuYW1lPgorICAgICAgICAgdG8gYmUgaW5zdGFsbGVkLiA8ZmlsZW5hbWU+Y29uZmlndXJl PC9maWxlbmFtZT4gd2lsbCBjaGVjayBmb3IgdGhlCisgICAgICAgICByZXF1aXJlZCBoZWFkZXIg ZmlsZXMgYW5kIGxpYnJhcmllcyB0byBtYWtlIHN1cmUgdGhhdCB5b3VyCisgICAgICAgICA8cHJv ZHVjdG5hbWU+TlNTPC9wcm9kdWN0bmFtZT4gaW5zdGFsbGF0aW9uIGlzIHN1ZmZpY2llbnQgYmVm b3JlCisgICAgICAgICBwcm9jZWVkaW5nLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJh PgorICAgICAgICAgVGhpcyBvcHRpb24gaXMgaW5jb21wYXRpYmxlIHdpdGggPGxpdGVyYWw+LS13 aXRoLW9wZW5zc2w8L2xpdGVyYWw+LgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRl bT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAg IDx0ZXJtPjxvcHRpb24+LS13aXRoLW9wZW5zc2w8L29wdGlvbj4KICAgICAgICA8aW5kZXh0ZXJt PgpAQCAtOTgyLDYgKzEwMDcsOSBAQCBidWlsZC1wb3N0Z3Jlc3FsOgogICAgICAgICAgeW91ciA8 cHJvZHVjdG5hbWU+T3BlblNTTDwvcHJvZHVjdG5hbWU+IGluc3RhbGxhdGlvbiBpcyBzdWZmaWNp ZW50CiAgICAgICAgICBiZWZvcmUgcHJvY2VlZGluZy4KICAgICAgICAgPC9wYXJhPgorICAgICAg ICA8cGFyYT4KKyAgICAgICAgIFRoaXMgb3B0aW9uIGlzIGluY29tcGF0aWJsZSB3aXRoIDxsaXRl cmFsPi0td2l0aC1uc3M8L2xpdGVyYWw+LgorICAgICAgICA8L3BhcmE+CiAgICAgICAgPC9saXN0 aXRlbT4KICAgICAgIDwvdmFybGlzdGVudHJ5PgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv bGlicHEuc2dtbCBiL2RvYy9zcmMvc2dtbC9saWJwcS5zZ21sCmluZGV4IDJiYjNiZjc3ZTQuLjMy MjU3MzZmNTYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9saWJwcS5zZ21sCisrKyBiL2RvYy9z cmMvc2dtbC9saWJwcS5zZ21sCkBAIC04MzAsNiArODMwLDEyIEBAIGludCBjYWxsYmFja19mbihj aGFyICpidWYsIGludCBzaXplLCBQR2Nvbm4gKmNvbm4pOwogICAgICAgIDxmdW5jdGlvbj5sb25n am1wKC4uLik8L2Z1bmN0aW9uPiwgZXRjLiBJdCBtdXN0IHJldHVybiBub3JtYWxseS4KICAgICAg IDwvcGFyYT4KIAorICAgICAgPHBhcmE+CisgICAgICAgIDxmdW5jdGlvbj5QUXNldFNTTEtleVBh c3NIb29rX09wZW5TU0w8L2Z1bmN0aW9uPiBpcyBvbmx5IGF2YWlsYWJsZQorICAgICAgICB3aGVu IHRoZSBzZXJ2ZXIgd2FzIGNvbXBpbGVkIHdpdGggPHByb2R1Y3RuYW1lPk9wZW5TU0w8L3Byb2R1 Y3RuYW1lPgorICAgICAgICBzdXBwb3J0LgorICAgICAgPC9wYXJhPgorCiAgICAgIDwvbGlzdGl0 ZW0+CiAgICAgPC92YXJsaXN0ZW50cnk+CiAKQEAgLTg0Niw2ICs4NTIsNzIgQEAgUFFzc2xLZXlQ YXNzSG9va19PcGVuU1NMX3R5cGUgUFFnZXRTU0xLZXlQYXNzSG9va19PcGVuU1NMKHZvaWQpOwog PC9zeW5vcHNpcz4KICAgICAgIDwvcGFyYT4KIAorICAgICAgPHBhcmE+CisgICAgICAgIDxmdW5j dGlvbj5QUWdldFNTTEtleVBhc3NIb29rX09wZW5TU0w8L2Z1bmN0aW9uPiBpcyBvbmx5IGF2YWls YWJsZQorICAgICAgICB3aGVuIHRoZSBzZXJ2ZXIgd2FzIGNvbXBpbGVkIHdpdGggPHByb2R1Y3Ru YW1lPk9wZW5TU0w8L3Byb2R1Y3RuYW1lPgorICAgICAgICBzdXBwb3J0LgorICAgICAgPC9wYXJh PgorCisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICA8dmFybGlz dGVudHJ5IGlkPSJsaWJwcS1wcXNldHNzbGtleXBhc3Nob29rLW5zcyI+CisgICAgIDx0ZXJtPjxm dW5jdGlvbj5QUXNldFNTTEtleVBhc3NIb29rX25zczwvZnVuY3Rpb24+PGluZGV4dGVybT48cHJp bWFyeT5QUXNldFNTTEtleVBhc3NIb29rX25zczwvcHJpbWFyeT48L2luZGV4dGVybT48L3Rlcm0+ CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIDxmdW5jdGlvbj5QUXNldFNT TEtleVBhc3NIb29rX25zczwvZnVuY3Rpb24+IGxldHMgYW4gYXBwbGljYXRpb24gb3ZlcnJpZGUK KyAgICAgICA8YXBwbGljYXRpb24+bGlicHE8L2FwcGxpY2F0aW9uPidzIGRlZmF1bHQgaGFuZGxp bmcgb2YgcGFzc3dvcmQgcHJvdGVjdGVkCisgICAgICAgb2JqZWN0cyBpbiB0aGUgPGFwcGxpY2F0 aW9uPk5TUzwvYXBwbGljYXRpb24+IGRhdGFiYXNlIHVzaW5nCisgICAgICAgPHhyZWYgbGlua2Vu ZD0ibGlicHEtY29ubmVjdC1zc2xwYXNzd29yZCIvPiBvciBpbnRlcmFjdGl2ZSBwcm9tcHRpbmcu CisKKzxzeW5vcHNpcz4KK3ZvaWQgUFFzZXRTU0xLZXlQYXNzSG9va19uc3MoUFFzc2xLZXlQYXNz SG9va19uc3NfdHlwZSBob29rKTsKKzwvc3lub3BzaXM+CisKKyAgICAgICBUaGUgYXBwbGljYXRp b24gcGFzc2VzIGEgcG9pbnRlciB0byBhIGNhbGxiYWNrIGZ1bmN0aW9uIHdpdGggc2lnbmF0dXJl OgorPHByb2dyYW1saXN0aW5nPgorY2hhciAqY2FsbGJhY2tfZm4oUEsxMVNsb3RJbmZvICpzbG90 LCBQUkJvb2wgcmV0cnksIHZvaWQgKmFyZyk7Cis8L3Byb2dyYW1saXN0aW5nPgorICAgICAgIHdo aWNoIDxhcHBsaWNhdGlvbj5saWJwcTwvYXBwbGljYXRpb24+IHdpbGwgY2FsbAorICAgICAgIDxl bXBoYXNpcz5pbnN0ZWFkIG9mPC9lbXBoYXNpcz4gaXRzIGRlZmF1bHQKKyAgICAgICA8ZnVuY3Rp b24+UFFkZWZhdWx0U1NMS2V5UGFzc0hvb2tfbnNzPC9mdW5jdGlvbj4gcGFzc3dvcmQgaGFuZGxl ci4gVGhlCisgICAgICAgY2FsbGJhY2sgc2hvdWxkIGRldGVybWluZSB0aGUgcGFzc3dvcmQgZm9y IHRoZSB0b2tlbiBhbmQgcmV0dXJuIGEKKyAgICAgICBwb2ludGVyIHRvIGl0LiBUaGUgcmV0dXJu ZWQgcG9pbnRlciBzaG91bGQgYmUgYWxsb2NhdGVkIHdpdGggdGhlIE5TUworICAgICAgIDxmdW5j dGlvbj5QT1JUX1N0cmR1cDwvZnVuY3Rpb24+IGZ1bmN0aW9uLiBUaGUgdG9rZW4gZm9yIHdoaWNo IHRoZQorICAgICAgIHBhc3N3b3JkIGlzIHJlcXVlc3RlZCBpcyByZWNvcmRlZCBpbiB0aGUgc2xv dCBhbmMgY2FuIGJlIGlkZW50aWZpZWQgYnkKKyAgICAgICBjYWxsaW5nIDxmdW5jdGlvbj5QSzEx X0dldFRva2VuTmFtZTwvZnVuY3Rpb24+LiBJZiBubyBwYXNzd29yZCBpcworICAgICAgIGtub3du LCB0aGUgY2FsbGJhY2sgc2hvdWxkIHJldHVybiA8bGl0ZXJhbD5OVUxMPC9saXRlcmFsPi4gVGhl IG1lbW9yeQorICAgICAgIHdpbGwgYmUgb3duZWQgYnkgPHByb2R1Y3RuYW1lPk5TUzwvcHJvZHVj dG5hbWU+IGFuZCBzaG91bGQgbm90IGJlCisgICAgICAgZnJlZWQuCisgICAgICA8L3BhcmE+CisK KyAgICAgIDxwYXJhPgorICAgICAgICA8ZnVuY3Rpb24+UFFzZXRTU0xLZXlQYXNzSG9va19uc3M8 L2Z1bmN0aW9uPiBpcyBvbmx5IGF2YWlsYWJsZQorICAgICAgICB3aGVuIHRoZSBzZXJ2ZXIgd2Fz IGNvbXBpbGVkIHdpdGggPHByb2R1Y3RuYW1lPk5TUzwvcHJvZHVjdG5hbWU+CisgICAgICAgIHN1 cHBvcnQuCisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC92YXJsaXN0ZW50 cnk+CisKKyAgICA8dmFybGlzdGVudHJ5IGlkPSJsaWJwcS1wcWdldHNzbGtleXBhc3Nob29rLW5z cyI+CisgICAgIDx0ZXJtPjxmdW5jdGlvbj5QUWdldFNTTEtleVBhc3NIb29rX25zczwvZnVuY3Rp b24+PGluZGV4dGVybT48cHJpbWFyeT5QUWdldFNTTEtleVBhc3NIb29rX25zczwvcHJpbWFyeT48 L2luZGV4dGVybT48L3Rlcm0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAg IDxmdW5jdGlvbj5QUWdldFNTTEtleVBhc3NIb29rX25zczwvZnVuY3Rpb24+IHJldHVybnMgdGhl IGN1cnJlbnQKKyAgICAgICA8cHJvZHVjdG5hbWU+TlNTPC9wcm9kdWN0bmFtZT4gcGFzc3dvcmQg aG9vaywgb3IgPGxpdGVyYWw+TlVMTDwvbGl0ZXJhbD4KKyAgICAgICBpZiBub25lIGhhcyBiZWVu IHNldC4KKworPHN5bm9wc2lzPgorUFFzc2xLZXlQYXNzSG9va19uc3NfdHlwZSBQUWdldFNTTEtl eVBhc3NIb29rX25zcyh2b2lkKTsKKzwvc3lub3BzaXM+CisgICAgICA8L3BhcmE+CisKKyAgICAg IDxwYXJhPgorICAgICAgICA8ZnVuY3Rpb24+UFFnZXRTU0xLZXlQYXNzSG9va19uc3M8L2Z1bmN0 aW9uPiBpcyBvbmx5IGF2YWlsYWJsZQorICAgICAgICB3aGVuIHRoZSBzZXJ2ZXIgd2FzIGNvbXBp bGVkIHdpdGggPHByb2R1Y3RuYW1lPm5zczwvcHJvZHVjdG5hbWU+CisgICAgICAgIHN1cHBvcnQu CisgICAgICA8L3BhcmE+CisKICAgICAgPC9saXN0aXRlbT4KICAgICA8L3Zhcmxpc3RlbnRyeT4K IApAQCAtMjQ5Nyw2ICsyNTY5LDggQEAgdm9pZCAqUFFzc2xTdHJ1Y3QoY29uc3QgUEdjb25uICpj b25uLCBjb25zdCBjaGFyICpzdHJ1Y3RfbmFtZSk7CiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFy YT4KICAgICAgICBUaGUgc3RydWN0KHMpIGF2YWlsYWJsZSBkZXBlbmQgb24gdGhlIFNTTCBpbXBs ZW1lbnRhdGlvbiBpbiB1c2UuCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KICAgICAgICBG b3IgPHByb2R1Y3RuYW1lPk9wZW5TU0w8L3Byb2R1Y3RuYW1lPiwgdGhlcmUgaXMgb25lIHN0cnVj dCwKICAgICAgICBhdmFpbGFibGUgdW5kZXIgdGhlIG5hbWUgIk9wZW5TU0wiLCBhbmQgaXQgcmV0 dXJucyBhIHBvaW50ZXIgdG8gdGhlCiAgICAgICAgPHByb2R1Y3RuYW1lPk9wZW5TU0w8L3Byb2R1 Y3RuYW1lPiA8bGl0ZXJhbD5TU0w8L2xpdGVyYWw+IHN0cnVjdC4KQEAgLTI1MjAsOSArMjU5NCwx NCBAQCB2b2lkICpQUXNzbFN0cnVjdChjb25zdCBQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKnN0 cnVjdF9uYW1lKTsKIF1dPjwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICA8L3BhcmE+CiAgICAgICA8 cGFyYT4KLSAgICAgICBUaGlzIHN0cnVjdHVyZSBjYW4gYmUgdXNlZCB0byB2ZXJpZnkgZW5jcnlw dGlvbiBsZXZlbHMsIGNoZWNrIHNlcnZlcgotICAgICAgIGNlcnRpZmljYXRlcywgYW5kIG1vcmUu IFJlZmVyIHRvIHRoZSA8cHJvZHVjdG5hbWU+T3BlblNTTDwvcHJvZHVjdG5hbWU+Ci0gICAgICAg ZG9jdW1lbnRhdGlvbiBmb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBzdHJ1Y3R1cmUuCisgICAg ICAgRm9yIDxwcm9kdWN0bmFtZT5OU1M8L3Byb2R1Y3RuYW1lPiwgdGhlcmUgaXMgb25lIHN0cnVj dCBhdmFpbGFibGUgdW5kZXIKKyAgICAgICB0aGUgbmFtZSAiTlNTIiwgYW5kIGl0IHJldHVybnMg YSBwb2ludGVyIHRvIHRoZQorICAgICAgIDxwcm9kdWN0bmFtZT5OU1M8L3Byb2R1Y3RuYW1lPiA8 bGl0ZXJhbD5QUkZpbGVEZXNjPC9saXRlcmFsPi4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJh PgorICAgICAgIFRoZXNlIHN0cnVjdHVyZXMgY2FuIGJlIHVzZWQgdG8gdmVyaWZ5IGVuY3J5cHRp b24gbGV2ZWxzLCBjaGVjayBzZXJ2ZXIKKyAgICAgICBjZXJ0aWZpY2F0ZXMsIGFuZCBtb3JlLiBS ZWZlciB0byB0aGUgPGFjcm9ueW0+U1NMPC9hY3JvbnltPiBsaWJyYXJ5CisgICAgICAgZG9jdW1l bnRhdGlvbiBmb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlc2Ugc3RydWN0dXJlcy4KICAgICAgIDwv cGFyYT4KICAgICAgPC9saXN0aXRlbT4KICAgICA8L3Zhcmxpc3RlbnRyeT4KQEAgLTI1NDksNiAr MjYyOCwxMCBAQCB2b2lkICpQUWdldHNzbChjb25zdCBQR2Nvbm4gKmNvbm4pOwogICAgICAgIDx4 cmVmIGxpbmtlbmQ9ImxpYnBxLVBRc3NsSW5Vc2UiLz4gaW5zdGVhZCwgYW5kIGZvciBtb3JlIGRl dGFpbHMgYWJvdXQgdGhlCiAgICAgICAgY29ubmVjdGlvbiwgdXNlIDx4cmVmIGxpbmtlbmQ9Imxp YnBxLVBRc3NsQXR0cmlidXRlIi8+LgogICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAg ICAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIDxsaXRlcmFsPk5VTEw8L2xpdGVyYWw+IHdoZW4gPGFj cm9ueW0+U1NMPC9hY3JvbnltPgorICAgICAgIGxpYnJhcmlhZXMgb3RoZXIgdGhhbiA8cHJvZHVj dG5hbWU+T3BlblNTTDwvcHJvZHVjdG5hbWU+IGFyZSB1c2VkLgorICAgICAgPC9wYXJhPgogICAg ICA8L2xpc3RpdGVtPgogICAgIDwvdmFybGlzdGVudHJ5PgogCkBAIC03OTgyLDYgKzgwNjUsMTEg QEAgdm9pZCBQUWluaXRPcGVuU1NMKGludCBkb19zc2wsIGludCBkb19jcnlwdG8pOwogICAgICAg IGJlZm9yZSBmaXJzdCBvcGVuaW5nIGEgZGF0YWJhc2UgY29ubmVjdGlvbi4gIEFsc28gYmUgc3Vy ZSB0aGF0IHlvdQogICAgICAgIGhhdmUgZG9uZSB0aGF0IGluaXRpYWxpemF0aW9uIGJlZm9yZSBv cGVuaW5nIGEgZGF0YWJhc2UgY29ubmVjdGlvbi4KICAgICAgIDwvcGFyYT4KKworICAgICAgPHBh cmE+CisgICAgICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcgd2hlbiB1c2luZyA8cHJvZHVj dG5hbWU+TlNTPC9wcm9kdWN0bmFtZT4gYXMKKyAgICAgICB0aGUgPGFjcm9ueW0+U1NMPC9hY3Jv bnltPiBsaWJyYXJ5LgorICAgICAgPC9wYXJhPgogICAgICA8L2xpc3RpdGVtPgogICAgIDwvdmFy bGlzdGVudHJ5PgogCkBAIC04MDA4LDYgKzgwOTYsMTEgQEAgdm9pZCBQUWluaXRTU0woaW50IGRv X3NzbCk7CiAgICAgICAgbWlnaHQgYmUgcHJlZmVyYWJsZSBmb3IgYXBwbGljYXRpb25zIHRoYXQg bmVlZCB0byB3b3JrIHdpdGggb2xkZXIKICAgICAgICB2ZXJzaW9ucyBvZiA8YXBwbGljYXRpb24+ bGlicHE8L2FwcGxpY2F0aW9uPi4KICAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAg ICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcgd2hlbiB1c2luZyA8cHJvZHVjdG5hbWU+TlNT PC9wcm9kdWN0bmFtZT4gYXMKKyAgICAgICB0aGUgPGFjcm9ueW0+U1NMPC9hY3JvbnltPiBsaWJy YXJ5LgorICAgICAgPC9wYXJhPgogICAgICA8L2xpc3RpdGVtPgogICAgIDwvdmFybGlzdGVudHJ5 PgogICAgPC92YXJpYWJsZWxpc3Q+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcnVudGltZS5z Z21sIGIvZG9jL3NyYy9zZ21sL3J1bnRpbWUuc2dtbAppbmRleCAyODMzNTJkM2E0Li4wOTAwZWJm MjhmIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcnVudGltZS5zZ21sCisrKyBiL2RvYy9zcmMv c2dtbC9ydW50aW1lLnNnbWwKQEAgLTIxODMsMTUgKzIxODMsMjEgQEAgcGdfZHVtcGFsbCAtcCA1 NDMyIHwgcHNxbCAtZCBwb3N0Z3JlcyAtcCA1NDMzCiAKICAgPGluZGV4dGVybSB6b25lPSJzc2wt dGNwIj4KICAgIDxwcmltYXJ5PlNTTDwvcHJpbWFyeT4KKyAgIDxzZWNvbmRhcnk+VExTPC9zZWNv bmRhcnk+CiAgIDwvaW5kZXh0ZXJtPgogCiAgIDxwYXJhPgogICAgPHByb2R1Y3RuYW1lPlBvc3Rn cmVTUUw8L3Byb2R1Y3RuYW1lPiBoYXMgbmF0aXZlIHN1cHBvcnQgZm9yIHVzaW5nCiAgICA8YWNy b255bT5TU0w8L2Fjcm9ueW0+IGNvbm5lY3Rpb25zIHRvIGVuY3J5cHQgY2xpZW50L3NlcnZlciBj b21tdW5pY2F0aW9ucwogICAgZm9yIGluY3JlYXNlZCBzZWN1cml0eS4gVGhpcyByZXF1aXJlcyB0 aGF0Ci0gICA8cHJvZHVjdG5hbWU+T3BlblNTTDwvcHJvZHVjdG5hbWU+IGlzIGluc3RhbGxlZCBv biBib3RoIGNsaWVudCBhbmQKKyAgIGEgc3VwcG9ydGVkIFRMUyBsaWJyYXJ5IGlzIGluc3RhbGxl ZCBvbiBib3RoIGNsaWVudCBhbmQKICAgIHNlcnZlciBzeXN0ZW1zIGFuZCB0aGF0IHN1cHBvcnQg aW4gPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBpcwogICAgZW5hYmxlZCBh dCBidWlsZCB0aW1lIChzZWUgPHhyZWYgbGlua2VuZD0iaW5zdGFsbGF0aW9uIi8+KS4KKyAgIFN1 cHBvcnRlZCBsaWJyYXJpZXMgYXJlIDxwcm9kdWN0bmFtZT5PcGVuU1NMPC9wcm9kdWN0bmFtZT4g YW5kCisgICA8cHJvZHVjdG5hbWU+TlNTPC9wcm9kdWN0bmFtZT4uIFRoZSB0ZXJtcyA8YWNyb255 bT5TU0w8L2Fjcm9ueW0+IGFuZAorICAgPGFjcm9ueW0+VExTPC9hY3JvbnltPiBhcmUgb2Z0ZW4g dXNlZCBpbnRlcmNoYW5nZWFibHkgdG8gbWVhbiBhIHNlY3VyZQorICAgY29ubmVjdGlvbiB1c2lu ZyBhIDxhY3JvbnltPlRMUzwvYWNyb255bT4gcHJvdG9jb2wsIGV2ZW4gdGhvdWdoCisgICA8YWNy b255bT5TU0w8L2Fjcm9ueW0+IHByb3RvY29scyBhcmUgbm8gbG9uZ2VyIHN1cHBvcnRlZC4KICAg PC9wYXJhPgogCiAgIDxzZWN0MiBpZD0ic3NsLXNldHVwIj4KQEAgLTIyMTEsOCArMjIxNywxMyBA QCBwZ19kdW1wYWxsIC1wIDU0MzIgfCBwc3FsIC1kIHBvc3RncmVzIC1wIDU0MzMKICAgPC9wYXJh PgogCiAgIDxwYXJhPgotICAgVG8gc3RhcnQgaW4gPGFjcm9ueW0+U1NMPC9hY3JvbnltPiBtb2Rl LCBmaWxlcyBjb250YWluaW5nIHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUKLSAgIGFuZCBwcml2YXRl IGtleSBtdXN0IGV4aXN0LiAgQnkgZGVmYXVsdCwgdGhlc2UgZmlsZXMgYXJlIGV4cGVjdGVkIHRv IGJlCisgICBUbyBzdGFydCBpbiA8YWNyb255bT5TU0w8L2Fjcm9ueW0+IG1vZGUsIGEgc2VydmVy IGNlcnRpZmljYXRlCisgICBhbmQgcHJpdmF0ZSBrZXkgbXVzdCBleGlzdC4gVGhlIGJlbG93IHNl Y3Rpb25zIG9uIHRoZSBkaWZmZXJlbnQgbGlicmFyaWVzCisgICB3aWxsIGRpc2N1c3MgaG93IHRv IGNvbmZpZ3VyZSB0aGVzZS4KKyAgPC9wYXJhPgorICAgCisgIDxwYXJhPgorICAgQnkgZGVmYXVs dCwgdGhlc2UgZmlsZXMgYXJlIGV4cGVjdGVkIHRvIGJlCiAgICBuYW1lZCA8ZmlsZW5hbWU+c2Vy dmVyLmNydDwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+c2VydmVyLmtleTwvZmlsZW5hbWU+LCBy ZXNwZWN0aXZlbHksIGluCiAgICB0aGUgc2VydmVyJ3MgZGF0YSBkaXJlY3RvcnksIGJ1dCBvdGhl ciBuYW1lcyBhbmQgbG9jYXRpb25zIGNhbiBiZSBzcGVjaWZpZWQKICAgIHVzaW5nIHRoZSBjb25m aWd1cmF0aW9uIHBhcmFtZXRlcnMgPHhyZWYgbGlua2VuZD0iZ3VjLXNzbC1jZXJ0LWZpbGUiLz4K QEAgLTIzMDIsNiArMjMxMywxOCBAQCBwZ19kdW1wYWxsIC1wIDU0MzIgfCBwc3FsIC1kIHBvc3Rn cmVzIC1wIDU0MzMKICAgPC9ub3RlPgogICA8L3NlY3QyPgogCisgIDxzZWN0MiBpZD0ic3NsLW5z cy1jb25maWciPgorICAgPHRpdGxlPk5TUyBDb25maWd1cmF0aW9uPC90aXRsZT4KKworICA8cGFy YT4KKyAgIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gd2lsbCBsb29rIGZv ciBjZXJ0aWZpY2F0ZXMgYW5kIGtleXMKKyAgIGluIHRoZSA8cHJvZHVjdG5hbWU+TlNTPC9wcm9k dWN0bmFtZT4gZGF0YWJhc2Ugc3BlY2lmaWVkIGJ5IHRoZSBwYXJhbWV0ZXIKKyAgIDx4cmVmIGxp bmtlbmQ9Imd1Yy1zc2wtZGF0YWJhc2UiLz4gaW4gPGZpbGVuYW1lPnBvc3RncmVzcWwuY29uZjwv ZmlsZW5hbWU+LgorICAgVGhlIHBhcmFtZXRlcnMgZm9yIGNlcnRpZmljYXRlIGFuZCBrZXkgZmls ZW5hbWVzIGFyZSB1c2VkIHRvIGlkZW50aWZ5IHRoZQorICAgbmlja25hbWVzIGluIHRoZSBkYXRh YmFzZS4KKyAgPC9wYXJhPgorICA8L3NlY3QyPgorCiAgIDxzZWN0MiBpZD0ic3NsLWNsaWVudC1j ZXJ0aWZpY2F0ZXMiPgogICAgPHRpdGxlPlVzaW5nIENsaWVudCBDZXJ0aWZpY2F0ZXM8L3RpdGxl PgogCkBAIC0yMzc2LDcgKzIzOTksNyBAQCBwZ19kdW1wYWxsIC1wIDU0MzIgfCBwc3FsIC1kIHBv c3RncmVzIC1wIDU0MzMKICAgPC9zZWN0Mj4KIAogICA8c2VjdDIgaWQ9InNzbC1zZXJ2ZXItZmls ZXMiPgotICAgPHRpdGxlPlNTTCBTZXJ2ZXIgRmlsZSBVc2FnZTwvdGl0bGU+CisgICA8dGl0bGU+ U1NMIFNlcnZlciBGaWxlIFBhcmFtZXRlciBVc2FnZTwvdGl0bGU+CiAKICAgIDxwYXJhPgogICAg IDx4cmVmIGxpbmtlbmQ9InNzbC1maWxlLXVzYWdlIi8+IHN1bW1hcml6ZXMgdGhlIGZpbGVzIHRo YXQgYXJlCkBAIC0yNDIzLDYgKzI0NDYsMTQgQEAgcGdfZHVtcGFsbCAtcCA1NDMyIHwgcHNxbCAt ZCBwb3N0Z3JlcyAtcCA1NDMzCiAgICAgICA8ZW50cnk+Y2xpZW50IGNlcnRpZmljYXRlIG11c3Qg bm90IGJlIG9uIHRoaXMgbGlzdDwvZW50cnk+CiAgICAgIDwvcm93PgogCisgICAgIDxyb3c+Cisg ICAgICA8ZW50cnk+PHhyZWYgbGlua2VuZD0iZ3VjLXNzbC1kYXRhYmFzZSIvPjwvZW50cnk+Cisg ICAgICA8ZW50cnk+Y2VydGlmaWNhdGUgZGF0YWJhc2U8L2VudHJ5PgorICAgICAgPGVudHJ5PmNv bnRhaW5zIHNlcnZlciBjZXJ0aWZpY2F0ZXMsIGtleXMgYW5kIHJldm9jYXRpb24gbGlzdHM7IG9u bHkKKyAgICAgIHVzZWQgd2hlbiA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+ IGlzIGJ1aWx0IHdpdGggc3VwcG9ydAorICAgICAgZm9yIDxwcm9kdWN0bmFtZT5OU1M8L3Byb2R1 Y3RuYW1lPi48L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgIDwvdGJvZHk+CiAgICA8L3Rncm91 cD4KICAgPC90YWJsZT4KQEAgLTI0NDYsNyArMjQ3Nyw3IEBAIHBnX2R1bXBhbGwgLXAgNTQzMiB8 IHBzcWwgLWQgcG9zdGdyZXMgLXAgNTQzMwogICA8L3NlY3QyPgogCiAgIDxzZWN0MiBpZD0ic3Ns LWNlcnRpZmljYXRlLWNyZWF0aW9uIj4KLSAgIDx0aXRsZT5DcmVhdGluZyBDZXJ0aWZpY2F0ZXM8 L3RpdGxlPgorICAgPHRpdGxlPkNyZWF0aW5nIENlcnRpZmljYXRlcyB3aXRoIE9wZW5TU0w8L3Rp dGxlPgogCiAgICA8cGFyYT4KICAgICAgVG8gY3JlYXRlIGEgc2ltcGxlIHNlbGYtc2lnbmVkIGNl cnRpZmljYXRlIGZvciB0aGUgc2VydmVyLCB2YWxpZCBmb3IgMzY1CkBAIC0yNTUwLDYgKzI1ODEs ODggQEAgb3BlbnNzbCB4NTA5IC1yZXEgLWluIHNlcnZlci5jc3IgLXRleHQgLWRheXMgMzY1IFwK ICAgIDwvcGFyYT4KICAgPC9zZWN0Mj4KIAorICA8c2VjdDIgaWQ9Im5zcy1jZXJ0aWZpY2F0ZS1k YXRhYmFzZSI+CisgICA8dGl0bGU+TlNTIENlcnRpZmljYXRlIERhdGFiYXNlczwvdGl0bGU+CisK KyAgIDxwYXJhPgorICAgIFdoZW4gdXNpbmcgPHByb2R1Y3RuYW1lPk5TUzwvcHJvZHVjdG5hbWU+ LCBhbGwgY2VydGlmaWNhdGVzIGFuZCBrZXlzIG11c3QKKyAgICBiZSBsb2FkZWQgaW50byBhbiA8 cHJvZHVjdG5hbWU+TlNTPC9wcm9kdWN0bmFtZT4gY2VydGlmaWNhdGUgZGF0YWJhc2UuCisgICA8 L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIFRvIGNyZWF0ZSBhIG5ldyA8cHJvZHVjdG5hbWU+TlNT PC9wcm9kdWN0bmFtZT4gY2VydGlmaWNhdGUgZGF0YWJhc2UgYW5kCisgICAgbG9hZCB0aGUgY2Vy dGlmaWNhdGVzIGNyZWF0ZWQgaW4gPHhyZWYgbGlua2VuZD0ic3NsLWNlcnRpZmljYXRlLWNyZWF0 aW9uIiAvPiwKKyAgICB1c2UgdGhlIGZvbGxvd2luZyA8cHJvZHVjdG5hbWU+TlNTPC9wcm9kdWN0 bmFtZT4gY29tbWFuZHM6Cis8cHJvZ3JhbWxpc3Rpbmc+CitjZXJ0dXRpbCAtZCAic3FsOnNlcnZl ci5kYiIgLU4gLS1lbXB0eS1wYXNzd29yZAorY2VydHV0aWwgLWQgInNxbDpzZXJ2ZXIuZGIiIC1B IC1uIHNlcnZlci5jcnQgLWkgc2VydmVyLmNydCAtdCAiQ1QsQyxDIgorY2VydHV0aWwgLWQgInNx bDpzZXJ2ZXIuZGIiIC1BIC1uIHJvb3QuY3J0IC1pIHJvb3QuY3J0IC10ICJDVCxDLEMiCis8L3By b2dyYW1saXN0aW5nPgorICAgIFRoaXMgd2lsbCBnaXZlIHRoZSBjZXJ0aWZpY2F0ZSB0aGUgZmls ZW5hbWUgYXMgdGhlIG5pY2tuYW1lIGlkZW50aWZpZXIgaW4KKyAgICB0aGUgZGF0YWJhc2Ugd2hp Y2ggaXMgY3JlYXRlZCBhcyA8ZmlsZW5hbWU+c2VydmVyLmRiPC9maWxlbmFtZT4uCisgICA8L3Bh cmE+CisgICA8cGFyYT4KKyAgICBUaGVuIGxvYWQgdGhlIHNlcnZlciBrZXksIHdoaWNoIHJlcXVp cmUgY29udmVydGluZyBpdCB0bworICAgIDxhY3JvbnltPlBLQ1MjMTI8L2Fjcm9ueW0+IGZvcm1h dCB1c2luZyB0aGUKKyAgICA8cHJvZHVjdG5hbWU+T3BlblNTTDwvcHJvZHVjdG5hbWU+IHRvb2xz OgorPHByb2dyYW1saXN0aW5nPgorb3BlbnNzbCBwa2NzMTIgLWV4cG9ydCAtb3V0IHNlcnZlci5w ZnggLWlua2V5IHNlcnZlci5rZXkgLWluIHNlcnZlci5jcnQgXAorICAtY2VydGZpbGUgcm9vdC5j cnQgLXBhc3NvdXQgcGFzczoKK3BrMTJ1dGlsIC1pIHNlcnZlci5wZnggLWQgc2VydmVyLmRiIC1X ICcnCis8L3Byb2dyYW1saXN0aW5nPgorICAgPC9wYXJhPgorICAgPHBhcmE+CisgICAgRmluYWxs eSBhIGNlcnRpZmljYXRlIHJldm9jYXRpb24gbGlzdCBjYW4gYmUgbG9hZGVkIHdpdGggdGhlIGZv bGxvd2luZworICAgIGNvbW1hbmRzOgorPHByb2dyYW1saXN0aW5nPgorY3JsdXRpbCAtSSAtaSBz ZXJ2ZXIuY3JsIC1kIHNlcnZlci5kYiAtQgorPC9wcm9ncmFtbGlzdGluZz4KKyAgIDwvcGFyYT4K KyAgPC9zZWN0Mj4KKworICA8c2VjdDIgaWQ9Im5zcy1zc2wtY2VydGlmaWNhdGUtY3JlYXRpb24i IC8+CisgICA8dGl0bGU+Q3JlYXRpbmcgQ2VydGlmaWNhdGVzIHdpdGggTlNTPC90aXRsZT4KKwor ICAgPHBhcmE+CisgICAgVG8gY3JlYXRlIGEgc2ltcGxlIHNlbGYtc2lnbmVkIENBIGFuZCBjZXJ0 aWZpY2F0ZSBmb3IgdGhlIHNlcnZlciwgdXNlIHRoZQorICAgIGZvbGxvd2luZyBOU1MgY29tbWFu ZHMuIFJlcGxhY2UKKyAgICA8cmVwbGFjZWFibGU+Ki55b3VyZG9tYWluLmNvbTwvcmVwbGFjZWFi bGU+IHdpdGggdGhlIHNlcnZlcidzIGhvc3QKKyAgICBuYW1lLiBSZW1vdmUgPHJlcGxhY2VhYmxl Pi0tZW1wdHktcGFzc3dvcmQ8L3JlcGxhY2VhYmxlPiBpbiBvcmRlciB0byBzZXQKKyAgICBhIHBh c3N3b3JkIHByb3RlY3RpbmcgdGhlIGRhdGFiYXNlcy4gVGhlIHBhc3N3b3JkIGNhbiBiZSBwYXNz ZWQgdG8KKyAgICA8YXBwbGljYXRpb24+Y2VydHV0aWw8L2NlcnR1dGlsPiB3aXRoIHRoZSA8bGl0 ZXJhbD4tZjwvbGl0ZXJhbD4gcGFyYW1ldGVyLgorICAgIEZpcnN0IGNyZWF0ZSBhIHNlbGYtc2ln bmVkIENBLiBUbyB1c2UgYSBkaWZmZXJlbnQgY2VydGlmaWNhdGUgdmFsaWRpdHkKKyAgICB0aW1l IHRoYW4gdGhlIGRlZmF1bHQsIHVzZSA8cmVwbGFjZWFibGU+LXY8L3JlcGxhY2VhYmxlPiB0byBz cGVjaWZ5IHRoZQorICAgIG51bWJlciBvZiBtb250aHMgb2YgdmFsaWRpdHkuCis8cHJvZ3JhbWxp c3Rpbmc+Citta2RpciByb290X2NhLmRiCitjZXJ0dXRpbCAtTiAtZCAic3FsOnJvb3RfY2EuZGIv IiAtLWVtcHR5LXBhc3N3b3JkCitjZXJ0dXRpbCAtUyAtZCAic3FsOnJvb3RfY2EuZGIvIiAtbiBy b290X2NhIC1zICJDTj08cmVwbGFjZWFibGU+Y2EueW91cmRvbWFpbi5jb208L3JlcGxhY2VhYmxl PiIgXAorICAteCAtayByc2EgLWcgMjA0OCAtbSA8cmVwbGFjZWFibGU+NTQzMjwvcmVwbGFjZWFi bGU+IC10IENUdSxDVHUsQ1R1IFwKKyAgLS1rZXlVc2FnZSBjZXJ0U2lnbmluZyAtMiAtLW5zQ2Vy dFR5cGUgc3NsQ0Esc21pbWVDQSxvYmplY3RTaWduaW5nQ0EgXAorICAtWiBTSEEyNTYKK2NlcnR1 dGlsIC1MIC1kICJzcWw6cm9vdF9jYS5kYi8iIC1uIHJvb3RfY2EgLWEgPiByb290X2NhLnBlbQor PC9wcm9ncmFtbGlzdGluZz4KKyAgICBOb3cgY3JlYXRlIGEgc2VydmVyIGNlcnRpZmljYXRlIGRh dGFiYXNlLCBhbmQgY3JlYXRlIGEgY2VydGlmaWNhdGUgc2lnbmluZworICAgIHJlcXVlc3QgZm9y IHRoZSBDQS4gVGhlbiBzaWduIHRoZSByZXF1ZXN0IHdpdGggdGhlIGFscmVhZHkgY3JlYXRlZCBD QSBhbmQKKyAgICBpbnNlcnQgdGhlIGNlcnRpZmljYXRlIGNoYWluIGludG8gdGhlIGNlcnRpZmlj YXRlIGRhdGFiYXNlLgorPHByb2dyYW1saXN0aW5nPgorbWtkaXIgc2VydmVyX2NlcnQuZGIKK2Nl cnR1dGlsIC1OIC1kICJzcWw6c2VydmVyX2NlcnQuZGIvIiAtLWVtcHR5LXBhc3N3b3JkCitjZXJ0 dXRpbCAtUiAtZCAic3FsOnNlcnZlcl9jZXJ0LmRiLyIgLXMgIkNOPWRiaG9zdC55b3VyZG9tYWlu LmNvbSIgXAorICAtbyBzZXJ2ZXJfY2VydC5jc3IgLWcgMjA0OCAtWiBTSEEyNTYKKworY2VydHV0 aWwgLUMgLWQgInNxbDpyb290X2NhLmRiLyIgLWMgcm9vdF9jYSAtaSBzZXJ2ZXJfY2VydC5jc3Ig XAorICAtbyBzZXJ2ZXJfY2VydC5kZXIgLW0gPHJlcGxhY2VhYmxlPjU0MzM8L3JlcGxhY2VhYmxl PiBcCisgIC0ta2V5VXNhZ2Uga2V5RW5jaXBoZXJtZW50LGRhdGFFbmNpcGhlcm1lbnQsZGlnaXRh bFNpZ25hdHVyZSBcCisgIC0tbnNDZXJ0VHlwZSBzc2xTZXJ2ZXIgLVogU0hBMjU2CisKK2NlcnR1 dGlsIC1BIC1kICJzcWw6c2VydmVyX2NlcnQuZGIvIiAtbiByb290X2NhIC10IENUdSxDVHUsQ1R1 IC1hIC1pIHJvb3RfY2EucGVtCitjZXJ0dXRpbCAtQSAtZCAic3FsOnNlcnZlcl9jZXJ0LmRiLyIg LW4gc2VydmVyX2NlcnQgLXQgQ1R1LENUdSxDVHUgLWkgc2VydmVyX2NlcnQuZGVyCis8L3Byb2dy YW1saXN0aW5nPgorICAgIFRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUgaXMgbG9hZGVkIGludG8gdGhl IGNlcnRpZmljYXRlIGRhdGFiYXNlIGFzIHdlbGwgYXMKKyAgICB0aGUgQ0EgY2VydGlmaWNhdGUg aW4gb3JkZXIgdG8gcHJvdmlkZSB0aGUgY2hhaW4gb2YgY2VydGlmaWNhdGVzLgorICA8L3NlY3Qy PgorCiAgPC9zZWN0MT4KIAogIDxzZWN0MSBpZD0iZ3NzYXBpLWVuYyI+Ci0tIAoyLjI1LjEKCg== --_008_a9b663ae4a4b71525e88b75463c865a6693cb4cecamelvmwarecom_ Content-Type: text/x-patch; name="v23-0005-NSS-contrib-modules.patch" Content-Description: v23-0005-NSS-contrib-modules.patch Content-Disposition: attachment; filename="v23-0005-NSS-contrib-modules.patch"; size=30638; creation-date="Wed, 20 Jan 2021 17:07:08 GMT"; modification-date="Wed, 20 Jan 2021 17:07:08 GMT" Content-ID: <986844E76511EA40B4753F38EB683CC1@namprd05.prod.outlook.com> Content-Transfer-Encoding: base64 RnJvbSA3Y2QwOWNkOTdmYWI5ZGIwOGMxY2M0MDc5ZjcxODU0NWRhMTYzMDc2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgR3VzdGFmc3NvbiA8ZGFuaWVsQHllc3FsLnNlPgpE YXRlOiBXZWQsIDI4IE9jdCAyMDIwIDExOjM0OjM3ICswMTAwClN1YmplY3Q6IFtQQVRDSCB2MjMg NS82XSBOU1MgY29udHJpYiBtb2R1bGVzCgotLS0KIGNvbnRyaWIvTWFrZWZpbGUgICAgICAgICAg ICB8ICAgMiArLQogY29udHJpYi9wZ2NyeXB0by9NYWtlZmlsZSAgIHwgICA3ICstCiBjb250cmli L3BnY3J5cHRvL25zcy5jICAgICAgfCA3NzMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCiBjb250cmliL3NzbGluZm8vc3NsaW5mby5jICAgfCAgMzIgKysKIGRvYy9zcmMvc2dt bC9wZ2NyeXB0by5zZ21sICB8ICAzOCArLQogZG9jL3NyYy9zZ21sL3NzbGluZm8uc2dtbCAgIHwg IDEyICstCiBzcmMvdG9vbHMvbXN2Yy9JbnN0YWxsLnBtICAgfCAgIDMgKy0KIHNyYy90b29scy9t c3ZjL01rdmNidWlsZC5wbSB8ICAxMiArLQogOCBmaWxlcyBjaGFuZ2VkLCA4NjQgaW5zZXJ0aW9u cygrKSwgMTUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi9wZ2NyeXB0 by9uc3MuYwoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvTWFrZWZpbGUgYi9jb250cmliL01ha2VmaWxl CmluZGV4IDdhNDg2NmUzMzguLmMyMjMyZTVhNGQgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvTWFrZWZp bGUKKysrIGIvY29udHJpYi9NYWtlZmlsZQpAQCAtNTIsNyArNTIsNyBAQCBTVUJESVJTID0gXAog CQl1bmFjY2VudAlcCiAJCXZhY3V1bWxvCiAKLWlmZXEgKCQod2l0aF9vcGVuc3NsKSx5ZXMpCitp Zm5lcSAoJCh3aXRoX3NzbCksbm8pCiBTVUJESVJTICs9IHNzbGluZm8KIGVsc2UKIEFMV0FZU19T VUJESVJTICs9IHNzbGluZm8KZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdjcnlwdG8vTWFrZWZpbGUg Yi9jb250cmliL3BnY3J5cHRvL01ha2VmaWxlCmluZGV4IGQ4ODFlODVhZGQuLjZmODA0YmYwMzIg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdjcnlwdG8vTWFrZWZpbGUKKysrIGIvY29udHJpYi9wZ2Ny eXB0by9NYWtlZmlsZQpAQCAtNywxMSArNywxNCBAQCBJTlRfVEVTVFMgPSBzaGEyCiBPU1NMX1NS Q1MgPSBvcGVuc3NsLmMgcGdwLW1waS1vcGVuc3NsLmMKIE9TU0xfVEVTVFMgPSBzaGEyIGRlcyAz ZGVzIGNhc3Q1CiAKK05TU19TUkNTID0gbnNzLmMgcGdwLW1waS1pbnRlcm5hbC5jIGltYXRoLmMg YmxmLmMKK05TU19URVNUUyA9IHNoYTIgZGVzIDNkZXMKKwogWkxJQl9UU1QgPSBwZ3AtY29tcHJl c3Npb24KIFpMSUJfT0ZGX1RTVCA9IHBncC16bGliLURJU0FCTEVECiAKLUNGX1NSQ1MgPSAkKGlm ICQoc3Vic3Qgbm8sLCQod2l0aF9vcGVuc3NsKSksICQoT1NTTF9TUkNTKSwgJChJTlRfU1JDUykp Ci1DRl9URVNUUyA9ICQoaWYgJChzdWJzdCBubywsJCh3aXRoX29wZW5zc2wpKSwgJChPU1NMX1RF U1RTKSwgJChJTlRfVEVTVFMpKQorQ0ZfU1JDUyA9ICQoaWYgJChmaW5kc3RyaW5nIG9wZW5zc2ws ICQod2l0aF9zc2wpKSwgJChPU1NMX1NSQ1MpLCAkKGlmICQoZmluZHN0cmluZyBuc3MsICQod2l0 aF9zc2wpKSwgJChOU1NfU1JDUyksICQoSU5UX1NSQ1MpKSkKK0NGX1RFU1RTID0gJChpZiAkKGZp bmRzdHJpbmcgb3BlbnNzbCwgJCh3aXRoX3NzbCkpLCAkKE9TU0xfVEVTVFMpLCAkKGlmICQoZmlu ZHN0cmluZyBuc3MsICQod2l0aF9zc2wpKSwgJChOU1NfVEVTVFMpLCAkKElOVF9URVNUUykpKQog Q0ZfUEdQX1RFU1RTID0gJChpZiAkKHN1YnN0IG5vLCwkKHdpdGhfemxpYikpLCAkKFpMSUJfVFNU KSwgJChaTElCX09GRl9UU1QpKQogCiBTUkNTID0gXApkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ2Ny eXB0by9uc3MuYyBiL2NvbnRyaWIvcGdjcnlwdG8vbnNzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMC4uZGE2NjE1MmQ2NQotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIv cGdjcnlwdG8vbnNzLmMKQEAgLTAsMCArMSw3NzMgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoK KyAqIG5zcy5jCisgKgkgIFdyYXBwZXIgZm9yIHVzaW5nIE5TUyBhcyBhIGJhY2tlbmQgZm9yIHBn Y3J5cHRvIFBYCisgKgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDIwLCBQ b3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0 IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisg KiBJREVOVElGSUNBVElPTgorICoJICBjb250cmliL3BnY3J5cHRvL25zcy5jCisgKgorICotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgKi8KKworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJw eC5oIgorI2luY2x1ZGUgImJsZi5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisKKy8q CisgKiBCSVRTX1BFUl9CWVRFIGlzIGFsc28gZGVmaW5lZCBpbiB0aGUgTlNQUiBoZWFkZXIgZmls ZXMsIHNvIHdlIG5lZWQgdG8gdW5kZWYKKyAqIG91ciB2ZXJzaW9uIHRvIGF2b2lkIGNvbXBpbGVy IHdhcm5pbmdzIG9uIHJlZGVmaW5pdGlvbi4KKyAqLworI2RlZmluZSBwZ19CSVRTX1BFUl9CWVRF IEJJVFNfUEVSX0JZVEUKKyN1bmRlZiBCSVRTX1BFUl9CWVRFCisKKyNpbmNsdWRlIDxuc3MvbnNz Lmg+CisjaW5jbHVkZSA8bnNzL2hhc2h0Lmg+CisjaW5jbHVkZSA8bnNzL3BrMTFmdW5jLmg+Cisj aW5jbHVkZSA8bnNzL3BrMTFwdWIuaD4KKyNpbmNsdWRlIDxuc3Mvc2VjaXRlbS5oPgorI2luY2x1 ZGUgPG5zcy9zZWNoYXNoLmg+CisjaW5jbHVkZSA8bnNzL3NlY29pZC5oPgorI2luY2x1ZGUgPG5z cy9zZWNlcnIuaD4KKworLyoKKyAqIEVuc3VyZSB0aGF0IHRoZSBjb2xsaWRpbmcgZGVmaW5pdGlv bnMgbWF0Y2gsIGVsc2UgdGhyb3cgYW4gZXJyb3IuIEluIGNhc2UKKyAqIE5TUFIgaGFzIHJlbW92 ZWQgdGhlIGRlZmluaXRpb24gZm9yIHNvbWUgcmVhc29uLCBtYWtlIHN1cmUgdG8gcHV0IG91cnMK KyAqIGJhY2sgYWdhaW4uCisgKi8KKyNpZiBkZWZpbmVkKEJJVFNfUEVSX0JZVEUpCisjaWYgQklU U19QRVJfQllURSAhPSBwZ19CSVRTX1BFUl9CWVRFCisjZXJyb3IgImluY29tcGF0aWJsZSBieXRl IHdpZHRocyBiZXR3ZWVuIE5TUFIgYW5kIHBvc3RncmVzIgorI2VuZGlmCisjZWxzZQorI2RlZmlu ZSBCSVRTX1BFUl9CWVRFIHBnX0JJVFNfUEVSX0JZVEUKKyNlbmRpZgorI3VuZGVmIHBnX0JJVFNf UEVSX0JZVEUKKworLyoKKyAqIERlZmluZSBvdXIgb3duIG1lY2hhbmlzbXMgZm9yIEJsb3dmaXNo IGFzIGl0J3Mgbm90IGltcGxlbWVudGVkIGJ5IE5TUy4KKyAqLworI2RlZmluZSBCTE9XRklTSF9D QkMJKDEpCisjZGVmaW5lIEJMT1dGSVNIX0VDQgkoMikKKworLyoKKyAqIERhdGEgc3RydWN0dXJl cyBmb3IgcmVjb3JkaW5nIGNpcGhlciBpbXBsZW1lbnRhdGlvbnMgYXMgd2VsbCBhcyBvbmdvaW5n CisgKiBjaXBoZXIgb3BlcmF0aW9ucy4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgbnNzX2RpZ2VzdAor eworCU5TU0luaXRDb250ZXh0ICpjb250ZXh0OworCVBLMTFDb250ZXh0ICpoYXNoX2NvbnRleHQ7 CisJSEFTSF9IYXNoVHlwZSBoYXNoX3R5cGU7Cit9CQkJbnNzX2RpZ2VzdDsKKwordHlwZWRlZiBz dHJ1Y3QgY2lwaGVyX2ltcGxlbWVudGF0aW9uCit7CisJLyogRnVuY3Rpb24gcG9pbnRlcnMgdG8g Y2lwaGVyIG9wZXJhdGlvbnMgKi8KKwlpbnQJCQkoKmluaXQpIChQWF9DaXBoZXIgKnB4YywgY29u c3QgdWludDggKmtleSwgdW5zaWduZWQga2xlbiwgY29uc3QgdWludDggKml2KTsKKwl1bnNpZ25l ZAkoKmdldF9ibG9ja19zaXplKSAoUFhfQ2lwaGVyICpweGMpOworCXVuc2lnbmVkCSgqZ2V0X2tl eV9zaXplKSAoUFhfQ2lwaGVyICpweGMpOworCXVuc2lnbmVkCSgqZ2V0X2l2X3NpemUpIChQWF9D aXBoZXIgKnB4Yyk7CisJaW50CQkJKCplbmNyeXB0KSAoUFhfQ2lwaGVyICpweGMsIGNvbnN0IHVp bnQ4ICpkYXRhLCB1bnNpZ25lZCBkbGVuLCB1aW50OCAqcmVzKTsKKwlpbnQJCQkoKmRlY3J5cHQp IChQWF9DaXBoZXIgKnB4YywgY29uc3QgdWludDggKmRhdGEsIHVuc2lnbmVkIGRsZW4sIHVpbnQ4 ICpyZXMpOworCXZvaWQJCSgqZnJlZSkgKFBYX0NpcGhlciAqcHhjKTsKKworCS8qIFRoZSBtZWNo YW5pc20gZGVzY3JpYmluZyB0aGUgY2lwaGVyIHVzZWQgKi8KKwl1bmlvbgorCXsKKwkJQ0tfTUVD SEFOSVNNX1RZUEUgbnNzOworCQlDS19VTE9ORwlpbnRlcm5hbDsKKwl9CQkJbWVjaGFuaXNtOwor CWludAkJCWtleWxlbjsKKwlib29sCQlpc19uc3M7Cit9CQkJY2lwaGVyX2ltcGxlbWVudGF0aW9u OworCit0eXBlZGVmIHN0cnVjdCBuc3NfY2lwaGVyCit7CisJY29uc3QgY2lwaGVyX2ltcGxlbWVu dGF0aW9uICppbXBsOworCU5TU0luaXRDb250ZXh0ICpjb250ZXh0OworCVBLMTFDb250ZXh0ICpj cnlwdF9jb250ZXh0OworCVNFQ0l0ZW0gICAgKnBhcmFtczsKKworCVBLMTFTeW1LZXkgKmVuY3J5 cHRfa2V5OworCVBLMTFTeW1LZXkgKmRlY3J5cHRfa2V5OworfQkJCW5zc19jaXBoZXI7CisKK3R5 cGVkZWYgc3RydWN0IGludGVybmFsX2NpcGhlcgoreworCWNvbnN0IGNpcGhlcl9pbXBsZW1lbnRh dGlvbiAqaW1wbDsKKwlCbG93ZmlzaENvbnRleHQgY29udGV4dDsKK30JCQlpbnRlcm5hbF9jaXBo ZXI7CisKK3R5cGVkZWYgc3RydWN0IG5zc19jaXBoZXJfcmVmCit7CisJY29uc3QgY2hhciAqbmFt ZTsKKwljb25zdCBjaXBoZXJfaW1wbGVtZW50YXRpb24gKmltcGw7Cit9CQkJbnNzX2NpcGhlcl9y ZWY7CisKKy8qCisgKiBQcm90b3R5cGVzCisgKi8KK3N0YXRpYyB1bnNpZ25lZCBuc3NfZ2V0X2l2 X3NpemUoUFhfQ2lwaGVyICpweGMpOworc3RhdGljIHVuc2lnbmVkIG5zc19nZXRfYmxvY2tfc2l6 ZShQWF9DaXBoZXIgKnB4Yyk7CisKKy8qCisgKiBuc3NfR2V0SGFzaE9pZFRhZ0J5SGFzaFR5cGUK KyAqCisgKiBSZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIFNFQ09pZFRhZyBmb3IgdGhlIHBhc3Nl ZCBoYXNoIHR5cGUuIE5TUyAzLjQzCisgKiBpbmNsdWRlcyBIQVNIX0dldEhhc2hPaWRUYWdCeUhh c2hUeXBlIGZvciB0aGlzIHB1cnBvc2UsIGJ1dCBhdCB0aGUgdGltZSBvZgorICogd3JpdGluZyBp cyBub3QgY29tbW9ubHkgYXZhaWxhYmxlIHNvIHdlIG5lZWQgb3VyIG93biB2ZXJzaW9uIHRpbGwg dGhlbi4KKyAqLworc3RhdGljIFNFQ09pZFRhZworbnNzX0dldEhhc2hPaWRUYWdCeUhhc2hUeXBl KEhBU0hfSGFzaFR5cGUgdHlwZSkKK3sKKwlpZiAodHlwZSA9PSBIQVNIX0FsZ01EMikKKwkJcmV0 dXJuIFNFQ19PSURfTUQyOworCWlmICh0eXBlID09IEhBU0hfQWxnTUQ1KQorCQlyZXR1cm4gU0VD X09JRF9NRDU7CisJaWYgKHR5cGUgPT0gSEFTSF9BbGdTSEExKQorCQlyZXR1cm4gU0VDX09JRF9T SEExOworCWlmICh0eXBlID09IEhBU0hfQWxnU0hBMjI0KQorCQlyZXR1cm4gU0VDX09JRF9TSEEy MjQ7CisJaWYgKHR5cGUgPT0gSEFTSF9BbGdTSEEyNTYpCisJCXJldHVybiBTRUNfT0lEX1NIQTI1 NjsKKwlpZiAodHlwZSA9PSBIQVNIX0FsZ1NIQTM4NCkKKwkJcmV0dXJuIFNFQ19PSURfU0hBMzg0 OworCWlmICh0eXBlID09IEhBU0hfQWxnU0hBNTEyKQorCQlyZXR1cm4gU0VDX09JRF9TSEE1MTI7 CisKKwlyZXR1cm4gU0VDX09JRF9VTktOT1dOOworfQorCitzdGF0aWMgdW5zaWduZWQKK25zc19k aWdlc3RfYmxvY2tfc2l6ZShQWF9NRCAqcHhtZCkKK3sKKwluc3NfZGlnZXN0ICpkaWdlc3QgPSAo bnNzX2RpZ2VzdCAqKSBweG1kLT5wLnB0cjsKKwljb25zdCBTRUNIYXNoT2JqZWN0ICpvYmplY3Q7 CisKKwlvYmplY3QgPSBIQVNIX0dldEhhc2hPYmplY3QoZGlnZXN0LT5oYXNoX3R5cGUpOworCXJl dHVybiBvYmplY3QtPmJsb2NrbGVuZ3RoOworfQorCitzdGF0aWMgdW5zaWduZWQKK25zc19kaWdl c3RfcmVzdWx0X3NpemUoUFhfTUQgKnB4bWQpCit7CisJbnNzX2RpZ2VzdCAqZGlnZXN0ID0gKG5z c19kaWdlc3QgKikgcHhtZC0+cC5wdHI7CisJY29uc3QgU0VDSGFzaE9iamVjdCAqb2JqZWN0Owor CisJb2JqZWN0ID0gSEFTSF9HZXRIYXNoT2JqZWN0KGRpZ2VzdC0+aGFzaF90eXBlKTsKKwlyZXR1 cm4gb2JqZWN0LT5sZW5ndGg7Cit9CisKK3N0YXRpYyB2b2lkCituc3NfZGlnZXN0X2ZyZWUoUFhf TUQgKnB4bWQpCit7CisJbnNzX2RpZ2VzdCAqZGlnZXN0ID0gKG5zc19kaWdlc3QgKikgcHhtZC0+ cC5wdHI7CisJUFJCb29sCQlmcmVlX2N0eCA9IFBSX1RSVUU7CisKKwlQSzExX0Rlc3Ryb3lDb250 ZXh0KGRpZ2VzdC0+aGFzaF9jb250ZXh0LCBmcmVlX2N0eCk7CisJTlNTX1NodXRkb3duQ29udGV4 dChkaWdlc3QtPmNvbnRleHQpOworfQorCitzdGF0aWMgdm9pZAorbnNzX2RpZ2VzdF91cGRhdGUo UFhfTUQgKnB4bWQsIGNvbnN0IHVpbnQ4ICpkYXRhLCB1bnNpZ25lZCBkbGVuKQoreworCW5zc19k aWdlc3QgKmRpZ2VzdCA9IChuc3NfZGlnZXN0ICopIHB4bWQtPnAucHRyOworCisJUEsxMV9EaWdl c3RPcChkaWdlc3QtPmhhc2hfY29udGV4dCwgZGF0YSwgZGxlbik7Cit9CisKK3N0YXRpYyB2b2lk Cituc3NfZGlnZXN0X3Jlc2V0KFBYX01EICpweG1kKQoreworCW5zc19kaWdlc3QgKmRpZ2VzdCA9 IChuc3NfZGlnZXN0ICopIHB4bWQtPnAucHRyOworCisJUEsxMV9EaWdlc3RCZWdpbihkaWdlc3Qt Pmhhc2hfY29udGV4dCk7Cit9CisKK3N0YXRpYyB2b2lkCituc3NfZGlnZXN0X2ZpbmlzaChQWF9N RCAqcHhtZCwgdWludDggKmRzdCkKK3sKKwl1bnNpZ25lZCBpbnQgb3V0bGVuOworCW5zc19kaWdl c3QgKmRpZ2VzdCA9IChuc3NfZGlnZXN0ICopIHB4bWQtPnAucHRyOworCWNvbnN0IFNFQ0hhc2hP YmplY3QgKm9iamVjdDsKKworCW9iamVjdCA9IEhBU0hfR2V0SGFzaE9iamVjdChkaWdlc3QtPmhh c2hfdHlwZSk7CisJUEsxMV9EaWdlc3RGaW5hbChkaWdlc3QtPmhhc2hfY29udGV4dCwgZHN0LCAm b3V0bGVuLCBvYmplY3QtPmxlbmd0aCk7Cit9CisKK2ludAorcHhfZmluZF9kaWdlc3QoY29uc3Qg Y2hhciAqbmFtZSwgUFhfTUQgKipyZXMpCit7CisJUFhfTUQJICAgKnB4bWQ7CisJTlNTSW5pdFBh cmFtZXRlcnMgcGFyYW1zOworCU5TU0luaXRDb250ZXh0ICpuc3NfY29udGV4dDsKKwlib29sCQlm b3VuZCA9IGZhbHNlOworCW5zc19kaWdlc3QgKmRpZ2VzdDsKKwlTRUNTdGF0dXMJc3RhdHVzOwor CVNFQ09pZERhdGEgKmhhc2g7CisJSEFTSF9IYXNoVHlwZSB0OworCisJLyoKKwkgKiBJbml0aWFs aXplIG91ciBvd24gTlNTIGNvbnRleHQgd2l0aG91dCBhIGRhdGFiYXNlIGJhY2tpbmcgaXQuCisJ ICovCisJbWVtc2V0KCZwYXJhbXMsIDAsIHNpemVvZihwYXJhbXMpKTsKKwlwYXJhbXMubGVuZ3Ro ID0gc2l6ZW9mKHBhcmFtcyk7CisJbnNzX2NvbnRleHQgPSBOU1NfSW5pdENvbnRleHQoIiIsICIi LCAiIiwgIiIsICZwYXJhbXMsCisJCQkJCQkJCSAgTlNTX0lOSVRfUkVBRE9OTFkgfCBOU1NfSU5J VF9OT0NFUlREQiB8CisJCQkJCQkJCSAgTlNTX0lOSVRfTk9NT0REQiB8IE5TU19JTklUX0ZPUkNF T1BFTiB8CisJCQkJCQkJCSAgTlNTX0lOSVRfTk9ST09USU5JVCB8IE5TU19JTklUX1BLMTFSRUxP QUQpOworCisJLyoKKwkgKiBUaGVyZSBpcyBubyBBUEkgZnVuY3Rpb24gZm9yIGxvb2tpbmcgdXAg YSBkaWdlc3QgYWxnb3JpdGhtIGZyb20gYSBuYW1lCisJICogc3RyaW5nLCBidXQgdGhlcmUgaXMg YSBwdWJsaWNseSBhY2Nlc3NpYmxlIGFycmF5IHdoaWNoIGNhbiBiZSBzY2FubmVkCisJICogZm9y IHRoZSBuYW1lLgorCSAqLworCWZvciAodCA9IEhBU0hfQWxnTlVMTCArIDE7IHQgPCBIQVNIX0Fs Z1RPVEFMOyB0KyspCisJeworCQlTRUNPaWRUYWcJaGFzaF9vaWQ7CisJCWNoYXIJICAgKnA7CisK KwkJaGFzaF9vaWQgPSBuc3NfR2V0SGFzaE9pZFRhZ0J5SGFzaFR5cGUodCk7CisKKwkJaWYgKGhh c2hfb2lkID09IFNFQ19PSURfVU5LTk9XTikKKwkJCXJldHVybiBQWEVfTk9fSEFTSDsKKworCQlo YXNoID0gU0VDT0lEX0ZpbmRPSURCeVRhZyhoYXNoX29pZCk7CisJCWlmIChwZ19zdHJjYXNlY21w KGhhc2gtPmRlc2MsIG5hbWUpID09IDApCisJCXsKKwkJCWZvdW5kID0gdHJ1ZTsKKwkJCWJyZWFr OworCQl9CisKKwkJLyoKKwkJICogTlNTIHNhdmVzIHRoZSBhbGdvcml0aG0gbmFtZXMgdXNpbmcg U0hBLXh4eCBub3RhdGlvbiB3aGVyZWFzCisJCSAqIE9wZW5TU0wgdXNlIFNIQXh4eC4gVG8gbWFr ZSBzdXJlIHRoZSB1c2VyIGZpbmRzIHRoZSByZXF1ZXN0ZWQKKwkJICogYWxnb3JpdGhtIGxldCdz IHJlbW92ZSB0aGUgZGFzaCBhbmQgY29tcGFyZSB0aGF0IHNwZWxsaW5nIGFzIHdlbGwuCisJCSAq LworCQlpZiAoKHAgPSBzdHJjaHIoaGFzaC0+ZGVzYywgJy0nKSkgIT0gTlVMTCkKKwkJeworCQkJ Y2hhcgkJdG1wWzEyXTsKKworCQkJbWVtY3B5KHRtcCwgaGFzaC0+ZGVzYywgcCAtIGhhc2gtPmRl c2MpOworCQkJbWVtY3B5KHRtcCArIChwIC0gaGFzaC0+ZGVzYyksIHAgKyAxLCBzdHJsZW4oaGFz aC0+ZGVzYykgLSAocCAtIGhhc2gtPmRlc2MpICsgMSk7CisJCQlpZiAocGdfc3RyY2FzZWNtcCh0 bXAsIG5hbWUpID09IDApCisJCQl7CisJCQkJZm91bmQgPSB0cnVlOworCQkJCWJyZWFrOworCQkJ fQorCQl9CisJfQorCisJaWYgKCFmb3VuZCkKKwkJcmV0dXJuIFBYRV9OT19IQVNIOworCisJZGln ZXN0ID0gcGFsbG9jKHNpemVvZigqZGlnZXN0KSk7CisKKwlkaWdlc3QtPmNvbnRleHQgPSBuc3Nf Y29udGV4dDsKKwlkaWdlc3QtPmhhc2hfY29udGV4dCA9IFBLMTFfQ3JlYXRlRGlnZXN0Q29udGV4 dChoYXNoLT5vZmZzZXQpOworCWRpZ2VzdC0+aGFzaF90eXBlID0gdDsKKwlpZiAoZGlnZXN0LT5o YXNoX2NvbnRleHQgPT0gTlVMTCkKKwl7CisJCXBmcmVlKGRpZ2VzdCk7CisJCXJldHVybiAtMTsK Kwl9CisKKwlzdGF0dXMgPSBQSzExX0RpZ2VzdEJlZ2luKGRpZ2VzdC0+aGFzaF9jb250ZXh0KTsK KwlpZiAoc3RhdHVzICE9IFNFQ1N1Y2Nlc3MpCisJeworCQlQSzExX0Rlc3Ryb3lDb250ZXh0KGRp Z2VzdC0+aGFzaF9jb250ZXh0LCBQUl9UUlVFKTsKKwkJcGZyZWUoZGlnZXN0KTsKKwkJcmV0dXJu IC0xOworCX0KKworCXB4bWQgPSBwYWxsb2Moc2l6ZW9mKCpweG1kKSk7CisJcHhtZC0+cmVzdWx0 X3NpemUgPSBuc3NfZGlnZXN0X3Jlc3VsdF9zaXplOworCXB4bWQtPmJsb2NrX3NpemUgPSBuc3Nf ZGlnZXN0X2Jsb2NrX3NpemU7CisJcHhtZC0+cmVzZXQgPSBuc3NfZGlnZXN0X3Jlc2V0OworCXB4 bWQtPnVwZGF0ZSA9IG5zc19kaWdlc3RfdXBkYXRlOworCXB4bWQtPmZpbmlzaCA9IG5zc19kaWdl c3RfZmluaXNoOworCXB4bWQtPmZyZWUgPSBuc3NfZGlnZXN0X2ZyZWU7CisJcHhtZC0+cC5wdHIg PSAodm9pZCAqKSBkaWdlc3Q7CisKKwkqcmVzID0gcHhtZDsKKworCXJldHVybiAwOworfQorCitz dGF0aWMgaW50CitiZl9pbml0KFBYX0NpcGhlciAqcHhjLCBjb25zdCB1aW50OCAqa2V5LCB1bnNp Z25lZCBrbGVuLCBjb25zdCB1aW50OCAqaXYpCit7CisJaW50ZXJuYWxfY2lwaGVyICpjaXBoZXIg PSAoaW50ZXJuYWxfY2lwaGVyICopIHB4Yy0+cHRyOworCisJYmxvd2Zpc2hfc2V0a2V5KCZjaXBo ZXItPmNvbnRleHQsIGtleSwga2xlbik7CisJaWYgKGl2KQorCQlibG93ZmlzaF9zZXRpdigmY2lw aGVyLT5jb250ZXh0LCBpdik7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludAorYmZfZW5j cnlwdChQWF9DaXBoZXIgKnB4YywgY29uc3QgdWludDggKmRhdGEsIHVuc2lnbmVkIGRsZW4sIHVp bnQ4ICpyZXMpCit7CisJaW50ZXJuYWxfY2lwaGVyICpjaXBoZXIgPSAoaW50ZXJuYWxfY2lwaGVy ICopIHB4Yy0+cHRyOworCXVpbnQ4CSAgICpidWY7CisKKwlpZiAoZGxlbiA9PSAwKQorCQlyZXR1 cm4gMDsKKworCWlmIChkbGVuICYgNykKKwkJcmV0dXJuIFBYRV9OT1RCTE9DS1NJWkU7CisKKwli dWYgPSBwYWxsb2MoZGxlbik7CisJbWVtY3B5KGJ1ZiwgZGF0YSwgZGxlbik7CisKKwlpZiAoY2lw aGVyLT5pbXBsLT5tZWNoYW5pc20uaW50ZXJuYWwgPT0gQkxPV0ZJU0hfRUNCKQorCQlibG93Zmlz aF9lbmNyeXB0X2VjYihidWYsIGRsZW4sICZjaXBoZXItPmNvbnRleHQpOworCWVsc2UKKwkJYmxv d2Zpc2hfZW5jcnlwdF9jYmMoYnVmLCBkbGVuLCAmY2lwaGVyLT5jb250ZXh0KTsKKworCW1lbWNw eShyZXMsIGJ1ZiwgZGxlbik7CisJcGZyZWUoYnVmKTsKKworCXJldHVybiAwOworfQorCitzdGF0 aWMgaW50CitiZl9kZWNyeXB0KFBYX0NpcGhlciAqcHhjLCBjb25zdCB1aW50OCAqZGF0YSwgdW5z aWduZWQgZGxlbiwgdWludDggKnJlcykKK3sKKwlpbnRlcm5hbF9jaXBoZXIgKmNpcGhlciA9IChp bnRlcm5hbF9jaXBoZXIgKikgcHhjLT5wdHI7CisKKwlpZiAoZGxlbiA9PSAwKQorCQlyZXR1cm4g MDsKKworCWlmIChkbGVuICYgNykKKwkJcmV0dXJuIFBYRV9OT1RCTE9DS1NJWkU7CisKKwltZW1j cHkocmVzLCBkYXRhLCBkbGVuKTsKKwlpZiAoY2lwaGVyLT5pbXBsLT5tZWNoYW5pc20uaW50ZXJu YWwgPT0gQkxPV0ZJU0hfRUNCKQorCQlibG93ZmlzaF9kZWNyeXB0X2VjYihyZXMsIGRsZW4sICZj aXBoZXItPmNvbnRleHQpOworCWVsc2UKKwkJYmxvd2Zpc2hfZGVjcnlwdF9jYmMocmVzLCBkbGVu LCAmY2lwaGVyLT5jb250ZXh0KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorYmZf ZnJlZShQWF9DaXBoZXIgKnB4YykKK3sKKwlpbnRlcm5hbF9jaXBoZXIgKmNpcGhlciA9IChpbnRl cm5hbF9jaXBoZXIgKikgcHhjLT5wdHI7CisKKwlwZnJlZShjaXBoZXIpOworCXBmcmVlKHB4Yyk7 Cit9CisKK3N0YXRpYyBpbnQKK25zc19zeW1rZXlfYmxvY2tjaXBoZXJfaW5pdChQWF9DaXBoZXIg KnB4YywgY29uc3QgdWludDggKmtleSwgdW5zaWduZWQga2xlbiwKKwkJCQkJCQljb25zdCB1aW50 OCAqaXYpCit7CisJbnNzX2NpcGhlciAqY2lwaGVyID0gKG5zc19jaXBoZXIgKikgcHhjLT5wdHI7 CisJU0VDSXRlbQkJaXZfaXRlbTsKKwl1bnNpZ25lZCBjaGFyICppdl9pdGVtX2RhdGE7CisJU0VD SXRlbQkJa2V5X2l0ZW07CisJaW50CQkJa2V5bGVuOworCVBLMTFTbG90SW5mbyAqc2xvdDsKKwor CWlmIChjaXBoZXItPmltcGwtPm1lY2hhbmlzbS5uc3MgPT0gQ0tNX0FFU19DQkMgfHwKKwkJY2lw aGVyLT5pbXBsLT5tZWNoYW5pc20ubnNzID09IENLTV9BRVNfRUNCKQorCXsKKwkJaWYgKGtsZW4g PD0gMTI4IC8gOCkKKwkJCWtleWxlbiA9IDEyOCAvIDg7CisJCWVsc2UgaWYgKGtsZW4gPD0gMTky IC8gOCkKKwkJCWtleWxlbiA9IDE5MiAvIDg7CisJCWVsc2UgaWYgKGtsZW4gPD0gMjU2IC8gOCkK KwkJCWtleWxlbiA9IDI1NiAvIDg7CisJCWVsc2UKKwkJCXJldHVybiBQWEVfQ0lQSEVSX0lOSVQ7 CisJfQorCWVsc2UKKwkJa2V5bGVuID0gY2lwaGVyLT5pbXBsLT5rZXlsZW47CisKKwlrZXlfaXRl bS50eXBlID0gc2lCdWZmZXI7CisJa2V5X2l0ZW0uZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopIGtl eTsKKwlrZXlfaXRlbS5sZW4gPSBrZXlsZW47CisKKwkvKgorCSAqIElmIGhhcmR3YXJlIGFjY2Vs ZXJhdGlvbiBpcyBjb25maWd1cmVkIGluIE5TUyBvbmUgY2FuIHRoZW9yZXRpY2FsbHkgZ2V0CisJ ICogYSBiZXR0ZXIgc2xvdCBieSBjYWxsaW5nIFBLMTFfR2V0QmVzdFNsb3QoKSB3aXRoIHRoZSBt ZWNoYW5pc20gcGFzc2VkCisJICogdG8gaXQuIFVubGVzcyB0aGVyZSBhcmUgY29tcGxhaW50cywg dXNpbmcgdGhlIHNpbXBsZXIgQVBJIHdpbGwgbWFrZQorCSAqIGVycm9yIGhhbmRsaW5nIGVhc2ll ciB0aG91Z2guCisJICovCisJc2xvdCA9IFBLMTFfR2V0SW50ZXJuYWxTbG90KCk7CisJaWYgKCFz bG90KQorCQlyZXR1cm4gUFhFX0NJUEhFUl9JTklUOworCisJLyoKKwkgKiBUaGUga2V5IG11c3Qg YmUgc2V0IHVwIGZvciB0aGUgb3BlcmF0aW9uLCBhbmQgc2luY2Ugd2UgZG9uJ3Qga25vdyBhdAor CSAqIHRoaXMgcG9pbnQgd2hldGhlciB3ZSBhcmUgYXNrZWQgdG8gZW5jcnlwdCBvciBkZWNyeXB0 IHdlIG5lZWQgdG8gc3RvcmUKKwkgKiBib3RoIHZlcnNpb25zLgorCSAqLworCWNpcGhlci0+ZGVj cnlwdF9rZXkgPSBQSzExX0ltcG9ydFN5bUtleShzbG90LCBjaXBoZXItPmltcGwtPm1lY2hhbmlz bS5uc3MsCisJCQkJCQkJCQkJCVBLMTFfT3JpZ2luVW53cmFwLAorCQkJCQkJCQkJCQlDS0FfREVD UllQVCwgJmtleV9pdGVtLAorCQkJCQkJCQkJCQlOVUxMKTsKKwljaXBoZXItPmVuY3J5cHRfa2V5 ID0gUEsxMV9JbXBvcnRTeW1LZXkoc2xvdCwgY2lwaGVyLT5pbXBsLT5tZWNoYW5pc20ubnNzLAor CQkJCQkJCQkJCQlQSzExX09yaWdpblVud3JhcCwKKwkJCQkJCQkJCQkJQ0tBX0VOQ1JZUFQsICZr ZXlfaXRlbSwKKwkJCQkJCQkJCQkJTlVMTCk7CisJUEsxMV9GcmVlU2xvdChzbG90KTsKKworCWlm ICghY2lwaGVyLT5kZWNyeXB0X2tleSB8fCAhY2lwaGVyLT5lbmNyeXB0X2tleSkKKwkJcmV0dXJu IFBYRV9DSVBIRVJfSU5JVDsKKworCWlmIChpdikKKwl7CisJCWl2X2l0ZW0udHlwZSA9IHNpQnVm ZmVyOworCQlpdl9pdGVtLmRhdGEgPSAodW5zaWduZWQgY2hhciAqKSBpdjsKKwkJaXZfaXRlbS5s ZW4gPSBuc3NfZ2V0X2l2X3NpemUocHhjKTsKKwl9CisJZWxzZQorCXsKKwkJLyoKKwkJICogVGhl IGRvY3VtZW50YXRpb24gc3RhdGVzIHRoYXQgZWl0aGVyIHBhc3NpbmcgLmRhdGEgPSAwOyAubGVu ID0gMDsKKwkJICogaW4gdGhlIGl2X2l0ZW0sIG9yIE5VTEwgYXMgaXZfaXRlbSwgdG8gUEsxMV9Q YXJhbUZyb21JViBzaG91bGQgYmUKKwkJICogZG9uZSB3aGVuIElWIGlzIG1pc3NpbmcuIFRoYXQg aG93ZXZlciBsZWFkcyB0byBzZWdmYXVsdHMgaW4gdGhlCisJCSAqIGxpYnJhcnksIHRoZSB3b3Jr YXJvdW5kIHRoYXQgd29ya3MgaW4gbW9kZXJuICBsaWJyYXJ5IHZlcnNpb25zIGlzCisJCSAqIHRv IHBhc3MgaW4gYSBrZXlzaXplZCB6ZXJvZWQgb3V0IElWLgorCQkgKi8KKwkJaXZfaXRlbV9kYXRh ID0gcGFsbG9jMChuc3NfZ2V0X2l2X3NpemUocHhjKSk7CisJCWl2X2l0ZW0udHlwZSA9IHNpQnVm ZmVyOworCQlpdl9pdGVtLmRhdGEgPSBpdl9pdGVtX2RhdGE7CisJCWl2X2l0ZW0ubGVuID0gbnNz X2dldF9pdl9zaXplKHB4Yyk7CisJfQorCisJY2lwaGVyLT5wYXJhbXMgPSBQSzExX1BhcmFtRnJv bUlWKGNpcGhlci0+aW1wbC0+bWVjaGFuaXNtLm5zcywgJml2X2l0ZW0pOworCisJLyogSWYgd2Ug aGFkIHRvIG1ha2UgYSBtb2NrIElWLCBmcmVlIGl0IG9uY2UgbWFkZSBpbnRvIGEgcGFyYW0gKi8K KwlpZiAoIWl2KQorCQlwZnJlZShpdl9pdGVtX2RhdGEpOworCisJaWYgKGNpcGhlci0+cGFyYW1z ID09IE5VTEwpCisJCXJldHVybiBQWEVfQ0lQSEVSX0lOSVQ7CisKKwlyZXR1cm4gMDsKK30KKwor c3RhdGljIGludAorbnNzX2RlY3J5cHQoUFhfQ2lwaGVyICpweGMsIGNvbnN0IHVpbnQ4ICpkYXRh LCB1bnNpZ25lZCBkbGVuLCB1aW50OCAqcmVzKQoreworCW5zc19jaXBoZXIgKmNpcGhlciA9IChu c3NfY2lwaGVyICopIHB4Yy0+cHRyOworCVNFQ1N0YXR1cwlzdGF0dXM7CisJaW50CQkJb3V0bGVu OworCisJaWYgKCFjaXBoZXItPmNyeXB0X2NvbnRleHQpCisJeworCQljaXBoZXItPmNyeXB0X2Nv bnRleHQgPQorCQkJUEsxMV9DcmVhdGVDb250ZXh0QnlTeW1LZXkoY2lwaGVyLT5pbXBsLT5tZWNo YW5pc20ubnNzLCBDS0FfREVDUllQVCwKKwkJCQkJCQkJCSAgIGNpcGhlci0+ZGVjcnlwdF9rZXks IGNpcGhlci0+cGFyYW1zKTsKKwl9CisKKwlzdGF0dXMgPSBQSzExX0NpcGhlck9wKGNpcGhlci0+ Y3J5cHRfY29udGV4dCwgcmVzLCAmb3V0bGVuLCBkbGVuLCBkYXRhLCBkbGVuKTsKKwlpZiAoc3Rh dHVzICE9IFNFQ1N1Y2Nlc3MpCisJCXJldHVybiBQWEVfREVDUllQVF9GQUlMRUQ7CisKKwlyZXR1 cm4gMDsKK30KKworc3RhdGljIGludAorbnNzX2VuY3J5cHQoUFhfQ2lwaGVyICpweGMsIGNvbnN0 IHVpbnQ4ICpkYXRhLCB1bnNpZ25lZCBkbGVuLCB1aW50OCAqcmVzKQoreworCW5zc19jaXBoZXIg KmNpcGhlciA9IChuc3NfY2lwaGVyICopIHB4Yy0+cHRyOworCVNFQ1N0YXR1cwlzdGF0dXM7CisJ aW50CQkJb3V0bGVuOworCisJaWYgKCFjaXBoZXItPmNyeXB0X2NvbnRleHQpCisJeworCQljaXBo ZXItPmNyeXB0X2NvbnRleHQgPQorCQkJUEsxMV9DcmVhdGVDb250ZXh0QnlTeW1LZXkoY2lwaGVy LT5pbXBsLT5tZWNoYW5pc20ubnNzLCBDS0FfRU5DUllQVCwKKwkJCQkJCQkJCSAgIGNpcGhlci0+ ZGVjcnlwdF9rZXksIGNpcGhlci0+cGFyYW1zKTsKKwl9CisKKwlzdGF0dXMgPSBQSzExX0NpcGhl ck9wKGNpcGhlci0+Y3J5cHRfY29udGV4dCwgcmVzLCAmb3V0bGVuLCBkbGVuLCBkYXRhLCBkbGVu KTsKKworCWlmIChzdGF0dXMgIT0gU0VDU3VjY2VzcykKKwkJcmV0dXJuIFBYRV9ERUNSWVBUX0ZB SUxFRDsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorbnNzX2ZyZWUoUFhfQ2lwaGVy ICpweGMpCit7CisJbnNzX2NpcGhlciAqY2lwaGVyID0gcHhjLT5wdHI7CisJUFJCb29sCQlmcmVl X2N0eCA9IFBSX1RSVUU7CisKKwlQSzExX0ZyZWVTeW1LZXkoY2lwaGVyLT5lbmNyeXB0X2tleSk7 CisJUEsxMV9GcmVlU3ltS2V5KGNpcGhlci0+ZGVjcnlwdF9rZXkpOworCVBLMTFfRGVzdHJveUNv bnRleHQoY2lwaGVyLT5jcnlwdF9jb250ZXh0LCBmcmVlX2N0eCk7CisJTlNTX1NodXRkb3duQ29u dGV4dChjaXBoZXItPmNvbnRleHQpOworCXBmcmVlKGNpcGhlcik7CisKKwlwZnJlZShweGMpOwor fQorCitzdGF0aWMgdW5zaWduZWQKK25zc19nZXRfYmxvY2tfc2l6ZShQWF9DaXBoZXIgKnB4YykK K3sKKwluc3NfY2lwaGVyICpjaXBoZXIgPSBweGMtPnB0cjsKKworCXJldHVybiBQSzExX0dldEJs b2NrU2l6ZShjaXBoZXItPmltcGwtPm1lY2hhbmlzbS5uc3MsIE5VTEwpOworfQorCitzdGF0aWMg dW5zaWduZWQKK25zc19nZXRfa2V5X3NpemUoUFhfQ2lwaGVyICpweGMpCit7CisJbnNzX2NpcGhl ciAqY2lwaGVyID0gcHhjLT5wdHI7CisKKwlyZXR1cm4gY2lwaGVyLT5pbXBsLT5rZXlsZW47Cit9 CisKK3N0YXRpYyB1bnNpZ25lZAorbnNzX2dldF9pdl9zaXplKFBYX0NpcGhlciAqcHhjKQorewor CW5zc19jaXBoZXIgKmNpcGhlciA9IHB4Yy0+cHRyOworCisJcmV0dXJuIFBLMTFfR2V0SVZMZW5n dGgoY2lwaGVyLT5pbXBsLT5tZWNoYW5pc20ubnNzKTsKK30KKworc3RhdGljIHVuc2lnbmVkCiti Zl9nZXRfYmxvY2tfc2l6ZShQWF9DaXBoZXIgKnB4YykKK3sKKwlyZXR1cm4gODsKK30KKworc3Rh dGljIHVuc2lnbmVkCitiZl9nZXRfa2V5X3NpemUoUFhfQ2lwaGVyICpweGMpCit7CisJcmV0dXJu IDQ0OCAvIDg7Cit9CisKK3N0YXRpYyB1bnNpZ25lZAorYmZfZ2V0X2l2X3NpemUoUFhfQ2lwaGVy ICpweGMpCit7CisJcmV0dXJuIDg7Cit9CisKKy8qCisgKiBDaXBoZXIgSW1wbGVtZW50YXRpb25z CisgKi8KK3N0YXRpYyBjb25zdCBjaXBoZXJfaW1wbGVtZW50YXRpb24gbnNzX2Rlc19jYmMgPSB7 CisJLmluaXQgPSBuc3Nfc3lta2V5X2Jsb2NrY2lwaGVyX2luaXQsCisJLmdldF9ibG9ja19zaXpl ID0gbnNzX2dldF9ibG9ja19zaXplLAorCS5nZXRfa2V5X3NpemUgPSBuc3NfZ2V0X2tleV9zaXpl LAorCS5nZXRfaXZfc2l6ZSA9IG5zc19nZXRfaXZfc2l6ZSwKKwkuZW5jcnlwdCA9IG5zc19lbmNy eXB0LAorCS5kZWNyeXB0ID0gbnNzX2RlY3J5cHQsCisJLmZyZWUgPSBuc3NfZnJlZSwKKwkubWVj aGFuaXNtLm5zcyA9IENLTV9ERVNfQ0JDLAorCS5rZXlsZW4gPSA4LAorCS5pc19uc3MgPSB0cnVl Cit9OworCitzdGF0aWMgY29uc3QgY2lwaGVyX2ltcGxlbWVudGF0aW9uIG5zc19kZXNfZWNiID0g eworCS5pbml0ID0gbnNzX3N5bWtleV9ibG9ja2NpcGhlcl9pbml0LAorCS5nZXRfYmxvY2tfc2l6 ZSA9IG5zc19nZXRfYmxvY2tfc2l6ZSwKKwkuZ2V0X2tleV9zaXplID0gbnNzX2dldF9rZXlfc2l6 ZSwKKwkuZ2V0X2l2X3NpemUgPSBuc3NfZ2V0X2l2X3NpemUsCisJLmVuY3J5cHQgPSBuc3NfZW5j cnlwdCwKKwkuZGVjcnlwdCA9IG5zc19kZWNyeXB0LAorCS5mcmVlID0gbnNzX2ZyZWUsCisJLm1l Y2hhbmlzbS5uc3MgPSBDS01fREVTX0VDQiwKKwkua2V5bGVuID0gOCwKKwkuaXNfbnNzID0gdHJ1 ZQorfTsKKworc3RhdGljIGNvbnN0IGNpcGhlcl9pbXBsZW1lbnRhdGlvbiBuc3NfZGVzM19jYmMg PSB7CisJLmluaXQgPSBuc3Nfc3lta2V5X2Jsb2NrY2lwaGVyX2luaXQsCisJLmdldF9ibG9ja19z aXplID0gbnNzX2dldF9ibG9ja19zaXplLAorCS5nZXRfa2V5X3NpemUgPSBuc3NfZ2V0X2tleV9z aXplLAorCS5nZXRfaXZfc2l6ZSA9IG5zc19nZXRfaXZfc2l6ZSwKKwkuZW5jcnlwdCA9IG5zc19l bmNyeXB0LAorCS5kZWNyeXB0ID0gbnNzX2RlY3J5cHQsCisJLmZyZWUgPSBuc3NfZnJlZSwKKwku bWVjaGFuaXNtLm5zcyA9IENLTV9ERVMzX0NCQywKKwkua2V5bGVuID0gMjQsCisJLmlzX25zcyA9 IHRydWUKK307CisKK3N0YXRpYyBjb25zdCBjaXBoZXJfaW1wbGVtZW50YXRpb24gbnNzX2RlczNf ZWNiID0geworCS5pbml0ID0gbnNzX3N5bWtleV9ibG9ja2NpcGhlcl9pbml0LAorCS5nZXRfYmxv Y2tfc2l6ZSA9IG5zc19nZXRfYmxvY2tfc2l6ZSwKKwkuZ2V0X2tleV9zaXplID0gbnNzX2dldF9r ZXlfc2l6ZSwKKwkuZ2V0X2l2X3NpemUgPSBuc3NfZ2V0X2l2X3NpemUsCisJLmVuY3J5cHQgPSBu c3NfZW5jcnlwdCwKKwkuZGVjcnlwdCA9IG5zc19kZWNyeXB0LAorCS5mcmVlID0gbnNzX2ZyZWUs CisJLm1lY2hhbmlzbS5uc3MgPSBDS01fREVTM19FQ0IsCisJLmtleWxlbiA9IDI0LAorCS5pc19u c3MgPSB0cnVlCit9OworCitzdGF0aWMgY29uc3QgY2lwaGVyX2ltcGxlbWVudGF0aW9uIG5zc19h ZXNfY2JjID0geworCS5pbml0ID0gbnNzX3N5bWtleV9ibG9ja2NpcGhlcl9pbml0LAorCS5nZXRf YmxvY2tfc2l6ZSA9IG5zc19nZXRfYmxvY2tfc2l6ZSwKKwkuZ2V0X2tleV9zaXplID0gbnNzX2dl dF9rZXlfc2l6ZSwKKwkuZ2V0X2l2X3NpemUgPSBuc3NfZ2V0X2l2X3NpemUsCisJLmVuY3J5cHQg PSBuc3NfZW5jcnlwdCwKKwkuZGVjcnlwdCA9IG5zc19kZWNyeXB0LAorCS5mcmVlID0gbnNzX2Zy ZWUsCisJLm1lY2hhbmlzbS5uc3MgPSBDS01fQUVTX0NCQywKKwkua2V5bGVuID0gMzIsCisJLmlz X25zcyA9IHRydWUKK307CisKK3N0YXRpYyBjb25zdCBjaXBoZXJfaW1wbGVtZW50YXRpb24gbnNz X2Flc19lY2IgPSB7CisJLmluaXQgPSBuc3Nfc3lta2V5X2Jsb2NrY2lwaGVyX2luaXQsCisJLmdl dF9ibG9ja19zaXplID0gbnNzX2dldF9ibG9ja19zaXplLAorCS5nZXRfa2V5X3NpemUgPSBuc3Nf Z2V0X2tleV9zaXplLAorCS5nZXRfaXZfc2l6ZSA9IG5zc19nZXRfaXZfc2l6ZSwKKwkuZW5jcnlw dCA9IG5zc19lbmNyeXB0LAorCS5kZWNyeXB0ID0gbnNzX2RlY3J5cHQsCisJLmZyZWUgPSBuc3Nf ZnJlZSwKKwkubWVjaGFuaXNtLm5zcyA9IENLTV9BRVNfRUNCLAorCS5rZXlsZW4gPSAzMiwKKwku aXNfbnNzID0gdHJ1ZQorfTsKKworc3RhdGljIGNvbnN0IGNpcGhlcl9pbXBsZW1lbnRhdGlvbiBu c3NfYmZfZWNiID0geworCS5pbml0ID0gYmZfaW5pdCwKKwkuZ2V0X2Jsb2NrX3NpemUgPSBiZl9n ZXRfYmxvY2tfc2l6ZSwKKwkuZ2V0X2tleV9zaXplID0gYmZfZ2V0X2tleV9zaXplLAorCS5nZXRf aXZfc2l6ZSA9IGJmX2dldF9pdl9zaXplLAorCS5lbmNyeXB0ID0gYmZfZW5jcnlwdCwKKwkuZGVj cnlwdCA9IGJmX2RlY3J5cHQsCisJLmZyZWUgPSBiZl9mcmVlLAorCS5tZWNoYW5pc20uaW50ZXJu YWwgPSBCTE9XRklTSF9FQ0IsCisJLmtleWxlbiA9IDU2LAorCS5pc19uc3MgPSBmYWxzZQorfTsK Kworc3RhdGljIGNvbnN0IGNpcGhlcl9pbXBsZW1lbnRhdGlvbiBuc3NfYmZfY2JjID0geworCS5p bml0ID0gYmZfaW5pdCwKKwkuZ2V0X2Jsb2NrX3NpemUgPSBiZl9nZXRfYmxvY2tfc2l6ZSwKKwku Z2V0X2tleV9zaXplID0gYmZfZ2V0X2tleV9zaXplLAorCS5nZXRfaXZfc2l6ZSA9IGJmX2dldF9p dl9zaXplLAorCS5lbmNyeXB0ID0gYmZfZW5jcnlwdCwKKwkuZGVjcnlwdCA9IGJmX2RlY3J5cHQs CisJLmZyZWUgPSBiZl9mcmVlLAorCS5tZWNoYW5pc20uaW50ZXJuYWwgPSBCTE9XRklTSF9DQkMs CisJLmtleWxlbiA9IDU2LAorCS5pc19uc3MgPSBmYWxzZQorfTsKKworLyoKKyAqIExvb2t1cCB0 YWJsZSBmb3IgZmluZGluZyB0aGUgaW1wbGVtZW50YXRpb24gYmFzZWQgb24gYSBuYW1lLiBDQVNU NSBhcyB3ZWxsCisgKiBhcyBCTE9XRklTSCBhcmUgZGVmaW5lZCBhcyBjaXBoZXIgbWVjaGFuaXNt cyBpbiBOU1MgYnV0IGVycm9yIG91dCB3aXRoCisgKiBTRUNfRVJST1JfSU5WQUxJRF9BTEdPUklU SE0uIEJsb3dmaXNoIGlzIGltcGxlbWVudGVkIHVzaW5nIHRoZSBpbnRlcm5hbAorICogaW1wbGVt ZW50YXRpb24gd2hpbGUgQ0FTVDUgaXNuJ3Qgc3VwcG9ydGVkIGF0IGFsbCBhdCB0aGlzIHRpbWUs CisgKi8KK3N0YXRpYyBjb25zdCBuc3NfY2lwaGVyX3JlZiBuc3NfY2lwaGVyX2xvb2t1cFtdID0g eworCXsiZGVzIiwgJm5zc19kZXNfY2JjfSwKKwl7ImRlcy1jYmMiLCAmbnNzX2Rlc19jYmN9LAor CXsiZGVzLWVjYiIsICZuc3NfZGVzX2VjYn0sCisJeyJkZXMzLWNiYyIsICZuc3NfZGVzM19jYmN9 LAorCXsiM2RlcyIsICZuc3NfZGVzM19jYmN9LAorCXsiM2Rlcy1jYmMiLCAmbnNzX2RlczNfY2Jj fSwKKwl7ImRlczMtZWNiIiwgJm5zc19kZXMzX2VjYn0sCisJeyIzZGVzLWVjYiIsICZuc3NfZGVz M19lY2J9LAorCXsiYWVzIiwgJm5zc19hZXNfY2JjfSwKKwl7ImFlcy1jYmMiLCAmbnNzX2Flc19j YmN9LAorCXsiYWVzLWVjYiIsICZuc3NfYWVzX2VjYn0sCisJeyJyaWpuZGFlbCIsICZuc3NfYWVz X2NiY30sCisJeyJyaWpuZGFlbC1jYmMiLCAmbnNzX2Flc19jYmN9LAorCXsicmlqbmRhZWwtZWNi IiwgJm5zc19hZXNfZWNifSwKKwl7ImJsb3dmaXNoIiwgJm5zc19iZl9jYmN9LAorCXsiYmxvd2Zp c2gtY2JjIiwgJm5zc19iZl9jYmN9LAorCXsiYmxvd2Zpc2gtZWNiIiwgJm5zc19iZl9lY2J9LAor CXsiYmYiLCAmbnNzX2JmX2NiY30sCisJeyJiZi1jYmMiLCAmbnNzX2JmX2NiY30sCisJeyJiZi1l Y2IiLCAmbnNzX2JmX2VjYn0sCisJe05VTEx9Cit9OworCisvKgorICogcHhfZmluZF9jaXBoZXIK KyAqCisgKiBTZWFyY2ggZm9yIHRoZSByZXF1ZXN0ZWQgY2lwaGVyIGFuZCBzZWUgaWYgdGhlcmUg aXMgc3VwcG9ydCBmb3IgaXQsIGFuZCBpZgorICogc28gcmV0dXJuIGFuIGFsbG9jYXRlZCBvYmpl Y3QgY29udGFpbmluZyB0aGUgcGxheWJvb2sgZm9yIGhvdyB0byBlbmNyeXB0CisgKiBhbmQgZGVj cnlwdCB1c2luZyB0aGUgY2lwaGVyLgorICovCitpbnQKK3B4X2ZpbmRfY2lwaGVyKGNvbnN0IGNo YXIgKmFsaWFzLCBQWF9DaXBoZXIgKipyZXMpCit7CisJY29uc3QgbnNzX2NpcGhlcl9yZWYgKmNp cGhlcl9yZWY7CisJUFhfQ2lwaGVyICAqcHhfY2lwaGVyOworCU5TU0luaXRQYXJhbWV0ZXJzIHBh cmFtczsKKwlOU1NJbml0Q29udGV4dCAqbnNzX2NvbnRleHQ7CisJbnNzX2NpcGhlciAqY2lwaGVy OworCWludGVybmFsX2NpcGhlciAqaW50X2NpcGhlcjsKKworCWZvciAoY2lwaGVyX3JlZiA9IG5z c19jaXBoZXJfbG9va3VwOyBjaXBoZXJfcmVmLT5uYW1lOyBjaXBoZXJfcmVmKyspCisJeworCQlp ZiAoc3RyY21wKGNpcGhlcl9yZWYtPm5hbWUsIGFsaWFzKSA9PSAwKQorCQkJYnJlYWs7CisJfQor CisJaWYgKCFjaXBoZXJfcmVmLT5uYW1lKQorCQlyZXR1cm4gUFhFX05PX0NJUEhFUjsKKworCS8q CisJICogRmlsbCBpbiB0aGUgUFhfQ2lwaGVyIHRvIHBhc3MgYmFjayB0byBQWCBkZXNjcmliaW5n IHRoZSBvcGVyYXRpb25zIHRvCisJICogcGVyZm9ybSBpbiBvcmRlciB0byB1c2UgdGhlIGNpcGhl ci4KKwkgKi8KKwlweF9jaXBoZXIgPSBwYWxsb2Moc2l6ZW9mKCpweF9jaXBoZXIpKTsKKwlweF9j aXBoZXItPmJsb2NrX3NpemUgPSBjaXBoZXJfcmVmLT5pbXBsLT5nZXRfYmxvY2tfc2l6ZTsKKwlw eF9jaXBoZXItPmtleV9zaXplID0gY2lwaGVyX3JlZi0+aW1wbC0+Z2V0X2tleV9zaXplOworCXB4 X2NpcGhlci0+aXZfc2l6ZSA9IGNpcGhlcl9yZWYtPmltcGwtPmdldF9pdl9zaXplOworCXB4X2Np cGhlci0+ZnJlZSA9IGNpcGhlcl9yZWYtPmltcGwtPmZyZWU7CisJcHhfY2lwaGVyLT5pbml0ID0g Y2lwaGVyX3JlZi0+aW1wbC0+aW5pdDsKKwlweF9jaXBoZXItPmVuY3J5cHQgPSBjaXBoZXJfcmVm LT5pbXBsLT5lbmNyeXB0OworCXB4X2NpcGhlci0+ZGVjcnlwdCA9IGNpcGhlcl9yZWYtPmltcGwt PmRlY3J5cHQ7CisKKwkvKgorCSAqIFNldCB0aGUgcHJpdmF0ZSBkYXRhLCB3aGljaCBpcyBkaWZm ZXJlbnQgZm9yIE5TUyBhbmQgaW50ZXJuYWwgY2lwaGVycworCSAqLworCWlmIChjaXBoZXJfcmVm LT5pbXBsLT5pc19uc3MpCisJeworCQkvKgorCQkgKiBJbml0aWFsaXplIG91ciBvd24gTlNTIGNv bnRleHQgd2l0aG91dCBhIGRhdGFiYXNlIGJhY2tpbmcgaXQuIEF0CisJCSAqIHNvbWUgcG9pbnQg d2UgbWlnaHQgd2FudCB0byBhbGxvdyB1c2VycyB0byB1c2Ugc3RvcmVkIGtleXMgaW4gdGhlCisJ CSAqIGRhdGFiYXNlIHJhdGhlciB0aGFuIHBhc3NpbmcgdGhlbSB2aWEgU0VMRUNUIGVuY3J5cHQo KSwgYW5kIHRoZW4KKwkJICogdGhpcyBuZWVkIHRvIGJlIGNoYW5nZWQgdG8gb3BlbiBhIHVzZXIg c3BlY2lmaWVkIGRhdGFiYXNlLgorCQkgKi8KKwkJbWVtc2V0KCZwYXJhbXMsIDAsIHNpemVvZihw YXJhbXMpKTsKKwkJcGFyYW1zLmxlbmd0aCA9IHNpemVvZihwYXJhbXMpOworCQluc3NfY29udGV4 dCA9IE5TU19Jbml0Q29udGV4dCgiIiwgIiIsICIiLCAiIiwgJnBhcmFtcywKKwkJCQkJCQkJCSAg TlNTX0lOSVRfUkVBRE9OTFkgfCBOU1NfSU5JVF9OT0NFUlREQiB8CisJCQkJCQkJCQkgIE5TU19J TklUX05PTU9EREIgfCBOU1NfSU5JVF9GT1JDRU9QRU4gfAorCQkJCQkJCQkJICBOU1NfSU5JVF9O T1JPT1RJTklUIHwgTlNTX0lOSVRfUEsxMVJFTE9BRCk7CisKKwkJLyogbnNzX2NpcGhlciBpcyB0 aGUgcHJpdmF0ZSBzdGF0ZSBzdHJ1Y3QgZm9yIHRoZSBvcGVyYXRpb24gKi8KKwkJY2lwaGVyID0g cGFsbG9jKHNpemVvZigqY2lwaGVyKSk7CisJCWNpcGhlci0+Y29udGV4dCA9IG5zc19jb250ZXh0 OworCQljaXBoZXItPmltcGwgPSBjaXBoZXJfcmVmLT5pbXBsOworCQljaXBoZXItPmNyeXB0X2Nv bnRleHQgPSBOVUxMOworCisJCXB4X2NpcGhlci0+cHRyID0gY2lwaGVyOworCX0KKwllbHNlCisJ eworCQlpbnRfY2lwaGVyID0gcGFsbG9jMChzaXplb2YoKmludF9jaXBoZXIpKTsKKworCQlpbnRf Y2lwaGVyLT5pbXBsID0gY2lwaGVyX3JlZi0+aW1wbDsKKwkJcHhfY2lwaGVyLT5wdHIgPSBpbnRf Y2lwaGVyOworCX0KKworCSpyZXMgPSBweF9jaXBoZXI7CisJcmV0dXJuIDA7Cit9CmRpZmYgLS1n aXQgYS9jb250cmliL3NzbGluZm8vc3NsaW5mby5jIGIvY29udHJpYi9zc2xpbmZvL3NzbGluZm8u YwppbmRleCAzMGNhZTBiYjk4Li4zYWFkZDkwYWE2IDEwMDY0NAotLS0gYS9jb250cmliL3NzbGlu Zm8vc3NsaW5mby5jCisrKyBiL2NvbnRyaWIvc3NsaW5mby9zc2xpbmZvLmMKQEAgLTksOSArOSwx MSBAQAogCiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAorI2lmZGVmIFVTRV9PUEVOU1NMCiAjaW5j bHVkZSA8b3BlbnNzbC94NTA5Lmg+CiAjaW5jbHVkZSA8b3BlbnNzbC94NTA5djMuaD4KICNpbmNs dWRlIDxvcGVuc3NsL2FzbjEuaD4KKyNlbmRpZgogCiAjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0 YWlscy5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKQEAgLTIxLDYgKzIzLDcgQEAKIAogUEdfTU9E VUxFX01BR0lDOwogCisjaWZkZWYgVVNFX09QRU5TU0wKIHN0YXRpYyBEYXR1bSBYNTA5X05BTUVf ZmllbGRfdG9fdGV4dChYNTA5X05BTUUgKm5hbWUsIHRleHQgKmZpZWxkTmFtZSk7CiBzdGF0aWMg RGF0dW0gQVNOMV9TVFJJTkdfdG9fdGV4dChBU04xX1NUUklORyAqc3RyKTsKIApAQCAtMzEsNiAr MzQsNyBAQCB0eXBlZGVmIHN0cnVjdAogewogCVR1cGxlRGVzYwl0dXBkZXNjOwogfSBTU0xFeHRl bnNpb25JbmZvQ29udGV4dDsKKyNlbmRpZgogCiAvKgogICogSW5kaWNhdGVzIHdoZXRoZXIgY3Vy cmVudCBzZXNzaW9uIHVzZXMgU1NMCkBAIC0xMzEsNiArMTM1LDcgQEAgc3NsX2NsaWVudF9zZXJp YWwoUEdfRlVOQ1RJT05fQVJHUykKIH0KIAogCisjaWZkZWYgVVNFX09QRU5TU0wKIC8qCiAgKiBD b252ZXJ0cyBPcGVuU1NMIEFTTjFfU1RSSU5HIHN0cnVjdHVyZSBpbnRvIHRleHQKICAqCkBAIC0y ODIsNyArMjg3LDIzIEBAIHNzbF9pc3N1ZXJfZmllbGQoUEdfRlVOQ1RJT05fQVJHUykKIAllbHNl CiAJCXJldHVybiByZXN1bHQ7CiB9CisjZW5kaWYJCQkJCQkJLyogVVNFX09QRU5TU0wgKi8KIAor I2lmZGVmIFVTRV9OU1MKK1BHX0ZVTkNUSU9OX0lORk9fVjEoc3NsX2NsaWVudF9kbl9maWVsZCk7 CitEYXR1bQorc3NsX2NsaWVudF9kbl9maWVsZChQR19GVU5DVElPTl9BUkdTKQoreworCVBHX1JF VFVSTl9OVUxMKCk7Cit9CisKK1BHX0ZVTkNUSU9OX0lORk9fVjEoc3NsX2lzc3Vlcl9maWVsZCk7 CitEYXR1bQorc3NsX2lzc3Vlcl9maWVsZChQR19GVU5DVElPTl9BUkdTKQoreworCVBHX1JFVFVS Tl9OVUxMKCk7Cit9CisjZW5kaWYJCQkJCQkJLyogVVNFX05TUyAqLwogCiAvKgogICogUmV0dXJu cyBjdXJyZW50IGNsaWVudCBjZXJ0aWZpY2F0ZSBzdWJqZWN0IGFzIG9uZSBzdHJpbmcKQEAgLTMz OCw2ICszNTksNyBAQCBzc2xfaXNzdWVyX2RuKFBHX0ZVTkNUSU9OX0FSR1MpCiB9CiAKIAorI2lm ZGVmIFVTRV9PUEVOU1NMCiAvKgogICogUmV0dXJucyBpbmZvcm1hdGlvbiBhYm91dCBhdmFpbGFi bGUgU1NMIGV4dGVuc2lvbnMuCiAgKgpAQCAtNDcxLDMgKzQ5MywxMyBAQCBzc2xfZXh0ZW5zaW9u X2luZm8oUEdfRlVOQ1RJT05fQVJHUykKIAkvKiBBbGwgZG9uZSAqLwogCVNSRl9SRVRVUk5fRE9O RShmdW5jY3R4KTsKIH0KKyNlbmRpZgkJCQkJCQkvKiBVU0VfT1BFTlNTTCAqLworCisjaWZkZWYg VVNFX05TUworUEdfRlVOQ1RJT05fSU5GT19WMShzc2xfZXh0ZW5zaW9uX2luZm8pOworRGF0dW0K K3NzbF9leHRlbnNpb25faW5mbyhQR19GVU5DVElPTl9BUkdTKQoreworCVBHX1JFVFVSTl9OVUxM KCk7Cit9CisjZW5kaWYJCQkJCQkJLyogVVNFX05TUyAqLwpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL3BnY3J5cHRvLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcGdjcnlwdG8uc2dtbAppbmRleCAzZDc0 ZTE1ZWM5Li45ZWI4YTNmNzRkIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcGdjcnlwdG8uc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvcGdjcnlwdG8uc2dtbApAQCAtNDUsOCArNDUsOSBAQCBkaWdl c3QoZGF0YSBieXRlYSwgdHlwZSB0ZXh0KSByZXR1cm5zIGJ5dGVhCiAgICAgPGxpdGVyYWw+c2hh MjI0PC9saXRlcmFsPiwgPGxpdGVyYWw+c2hhMjU2PC9saXRlcmFsPiwKICAgICA8bGl0ZXJhbD5z aGEzODQ8L2xpdGVyYWw+IGFuZCA8bGl0ZXJhbD5zaGE1MTI8L2xpdGVyYWw+LgogICAgIElmIDxm aWxlbmFtZT5wZ2NyeXB0bzwvZmlsZW5hbWU+IHdhcyBidWlsdCB3aXRoCi0gICAgPHByb2R1Y3Ru YW1lPk9wZW5TU0w8L3Byb2R1Y3RuYW1lPiwgbW9yZSBhbGdvcml0aG1zIGFyZSBhdmFpbGFibGUs IGFzCi0gICAgZGV0YWlsZWQgaW4gPHhyZWYgbGlua2VuZD0icGdjcnlwdG8td2l0aC13aXRob3V0 LW9wZW5zc2wiLz4uCisgICAgPHByb2R1Y3RuYW1lPk9wZW5TU0w8L3Byb2R1Y3RuYW1lPiBvciA8 cHJvZHVjdG5hbWU+TlNTPC9wcm9kdWN0bmFtZT4sCisgICAgbW9yZSBhbGdvcml0aG1zIGFyZSBh dmFpbGFibGUsIGFzCisgICAgZGV0YWlsZWQgaW4gPHhyZWYgbGlua2VuZD0icGdjcnlwdG8td2l0 aC13aXRob3V0LW9wZW5zc2wtbnNzIi8+LgogICAgPC9wYXJhPgogCiAgICA8cGFyYT4KQEAgLTc2 NCw3ICs3NjUsNyBAQCBwZ3Bfc3ltX2VuY3J5cHQoZGF0YSwgcHN3LCAnY29tcHJlc3MtYWxnbz0x LCBjaXBoZXItYWxnbz1hZXMyNTYnKQogICAgIFdoaWNoIGNpcGhlciBhbGdvcml0aG0gdG8gdXNl LgogICAgPC9wYXJhPgogPGxpdGVyYWxsYXlvdXQ+Ci1WYWx1ZXM6IGJmLCBhZXMxMjgsIGFlczE5 MiwgYWVzMjU2IChPcGVuU1NMLW9ubHk6IDxsaXRlcmFsPjNkZXM8L2xpdGVyYWw+LCA8bGl0ZXJh bD5jYXN0NTwvbGl0ZXJhbD4pCitWYWx1ZXM6IGJmLCBhZXMxMjgsIGFlczE5MiwgYWVzMjU2IChP cGVuU1NMLW9ubHk6IDxsaXRlcmFsPjNkZXM8L2xpdGVyYWw+LCA8bGl0ZXJhbD5jYXN0NTwvbGl0 ZXJhbD47IE5TUy1vbmx5OiA8bGl0ZXJhbD4zZGVzPC9saXRlcmFsPikKIERlZmF1bHQ6IGFlczEy OAogQXBwbGllcyB0bzogcGdwX3N5bV9lbmNyeXB0LCBwZ3BfcHViX2VuY3J5cHQKIDwvbGl0ZXJh bGxheW91dD4KQEAgLTExNTMsOCArMTE1NCw4IEBAIGdlbl9yYW5kb21fdXVpZCgpIHJldHVybnMg dXVpZAogICAgPHBhcmE+CiAgICAgPGZpbGVuYW1lPnBnY3J5cHRvPC9maWxlbmFtZT4gY29uZmln dXJlcyBpdHNlbGYgYWNjb3JkaW5nIHRvIHRoZSBmaW5kaW5ncyBvZiB0aGUKICAgICBtYWluIFBv c3RncmVTUUwgPGxpdGVyYWw+Y29uZmlndXJlPC9saXRlcmFsPiBzY3JpcHQuICBUaGUgb3B0aW9u cyB0aGF0Ci0gICAgYWZmZWN0IGl0IGFyZSA8bGl0ZXJhbD4tLXdpdGgtemxpYjwvbGl0ZXJhbD4g YW5kCi0gICAgPGxpdGVyYWw+LS13aXRoLW9wZW5zc2w8L2xpdGVyYWw+LgorICAgIGFmZmVjdCBp dCBhcmUgPGxpdGVyYWw+LS13aXRoLXpsaWI8L2xpdGVyYWw+LAorICAgIDxsaXRlcmFsPi0td2l0 aC1vcGVuc3NsPC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+LS13aXRoLW5zczwvbGl0ZXJhbD4uCiAg ICA8L3BhcmE+CiAKICAgIDxwYXJhPgpAQCAtMTE2OSwxNCArMTE3MCwxNiBAQCBnZW5fcmFuZG9t X3V1aWQoKSByZXR1cm5zIHV1aWQKICAgICBCSUdOVU0gZnVuY3Rpb25zLgogICAgPC9wYXJhPgog Ci0gICA8dGFibGUgaWQ9InBnY3J5cHRvLXdpdGgtd2l0aG91dC1vcGVuc3NsIj4KLSAgICA8dGl0 bGU+U3VtbWFyeSBvZiBGdW5jdGlvbmFsaXR5IHdpdGggYW5kIHdpdGhvdXQgT3BlblNTTDwvdGl0 bGU+Ci0gICAgPHRncm91cCBjb2xzPSIzIj4KKyAgIDx0YWJsZSBpZD0icGdjcnlwdG8td2l0aC13 aXRob3V0LW9wZW5zc2wtbnNzIj4KKyAgICA8dGl0bGU+U3VtbWFyeSBvZiBGdW5jdGlvbmFsaXR5 IHdpdGggYW5kIHdpdGhvdXQgZXh0ZXJuYWwgY3J5cHRvZ3JhcGhpYworICAgICAgbGlicmFyeTwv dGl0bGU+CisgICAgPHRncm91cCBjb2xzPSI0Ij4KICAgICAgPHRoZWFkPgogICAgICAgPHJvdz4K ICAgICAgICA8ZW50cnk+RnVuY3Rpb25hbGl0eTwvZW50cnk+CiAgICAgICAgPGVudHJ5PkJ1aWx0 LWluPC9lbnRyeT4KICAgICAgICA8ZW50cnk+V2l0aCBPcGVuU1NMPC9lbnRyeT4KKyAgICAgICA8 ZW50cnk+V2l0aCBOU1M8L2VudHJ5PgogICAgICAgPC9yb3c+CiAgICAgIDwvdGhlYWQ+CiAgICAg IDx0Ym9keT4KQEAgLTExODQsNTEgKzExODcsNjcgQEAgZ2VuX3JhbmRvbV91dWlkKCkgcmV0dXJu cyB1dWlkCiAgICAgICAgPGVudHJ5Pk1ENTwvZW50cnk+CiAgICAgICAgPGVudHJ5PnllczwvZW50 cnk+CiAgICAgICAgPGVudHJ5PnllczwvZW50cnk+CisgICAgICAgPGVudHJ5PnllczwvZW50cnk+ CiAgICAgICA8L3Jvdz4KICAgICAgIDxyb3c+CiAgICAgICAgPGVudHJ5PlNIQTE8L2VudHJ5Pgog ICAgICAgIDxlbnRyeT55ZXM8L2VudHJ5PgogICAgICAgIDxlbnRyeT55ZXM8L2VudHJ5PgorICAg ICAgIDxlbnRyeT55ZXM8L2VudHJ5PgogICAgICAgPC9yb3c+CiAgICAgICA8cm93PgogICAgICAg IDxlbnRyeT5TSEEyMjQvMjU2LzM4NC81MTI8L2VudHJ5PgogICAgICAgIDxlbnRyeT55ZXM8L2Vu dHJ5PgogICAgICAgIDxlbnRyeT55ZXM8L2VudHJ5PgorICAgICAgIDxlbnRyeT55ZXM8L2VudHJ5 PgogICAgICAgPC9yb3c+CiAgICAgICA8cm93PgogICAgICAgIDxlbnRyeT5PdGhlciBkaWdlc3Qg YWxnb3JpdGhtczwvZW50cnk+CiAgICAgICAgPGVudHJ5Pm5vPC9lbnRyeT4KICAgICAgICA8ZW50 cnk+eWVzIChOb3RlIDEpPC9lbnRyeT4KKyAgICAgICA8ZW50cnk+eWVzIChOb3RlIDEpPC9lbnRy eT4KICAgICAgIDwvcm93PgogICAgICAgPHJvdz4KICAgICAgICA8ZW50cnk+Qmxvd2Zpc2g8L2Vu dHJ5PgogICAgICAgIDxlbnRyeT55ZXM8L2VudHJ5PgogICAgICAgIDxlbnRyeT55ZXM8L2VudHJ5 PgorICAgICAgIDxlbnRyeT55ZXM8L2VudHJ5PgogICAgICAgPC9yb3c+CiAgICAgICA8cm93Pgog ICAgICAgIDxlbnRyeT5BRVM8L2VudHJ5PgogICAgICAgIDxlbnRyeT55ZXM8L2VudHJ5PgogICAg ICAgIDxlbnRyeT55ZXM8L2VudHJ5PgorICAgICAgIDxlbnRyeT55ZXM8L2VudHJ5PgogICAgICAg PC9yb3c+CiAgICAgICA8cm93PgogICAgICAgIDxlbnRyeT5ERVMvM0RFUy9DQVNUNTwvZW50cnk+ CiAgICAgICAgPGVudHJ5Pm5vPC9lbnRyeT4KICAgICAgICA8ZW50cnk+eWVzPC9lbnRyeT4KKyAg ICAgICA8ZW50cnk+eWVzPC9lbnRyeT4KKyAgICAgIDwvcm93PgorICAgICAgPHJvdz4KKyAgICAg ICA8ZW50cnk+Q0FTVDU8L2VudHJ5PgorICAgICAgIDxlbnRyeT5ubzwvZW50cnk+CisgICAgICAg PGVudHJ5PnllczwvZW50cnk+CisgICAgICAgPGVudHJ5Pm5vPC9lbnRyeT4KICAgICAgIDwvcm93 PgogICAgICAgPHJvdz4KICAgICAgICA8ZW50cnk+UmF3IGVuY3J5cHRpb248L2VudHJ5PgogICAg ICAgIDxlbnRyeT55ZXM8L2VudHJ5PgogICAgICAgIDxlbnRyeT55ZXM8L2VudHJ5PgorICAgICAg IDxlbnRyeT55ZXM8L2VudHJ5PgogICAgICAgPC9yb3c+CiAgICAgICA8cm93PgogICAgICAgIDxl bnRyeT5QR1AgU3ltbWV0cmljIGVuY3J5cHRpb248L2VudHJ5PgogICAgICAgIDxlbnRyeT55ZXM8 L2VudHJ5PgogICAgICAgIDxlbnRyeT55ZXM8L2VudHJ5PgorICAgICAgIDxlbnRyeT55ZXM8L2Vu dHJ5PgogICAgICAgPC9yb3c+CiAgICAgICA8cm93PgogICAgICAgIDxlbnRyeT5QR1AgUHVibGlj LUtleSBlbmNyeXB0aW9uPC9lbnRyeT4KICAgICAgICA8ZW50cnk+eWVzPC9lbnRyeT4KICAgICAg ICA8ZW50cnk+eWVzPC9lbnRyeT4KKyAgICAgICA8ZW50cnk+eWVzPC9lbnRyeT4KICAgICAgIDwv cm93PgogICAgICA8L3Rib2R5PgogICAgIDwvdGdyb3VwPgpAQCAtMTI0MSw3ICsxMjYwLDggQEAg Z2VuX3JhbmRvbV91dWlkKCkgcmV0dXJucyB1dWlkCiAgICA8b3JkZXJlZGxpc3Q+CiAgICAgPGxp c3RpdGVtPgogICAgICA8cGFyYT4KLSAgICAgIEFueSBkaWdlc3QgYWxnb3JpdGhtIDxwcm9kdWN0 bmFtZT5PcGVuU1NMPC9wcm9kdWN0bmFtZT4gc3VwcG9ydHMKKyAgICAgIEFueSBkaWdlc3QgYWxn b3JpdGhtIDxwcm9kdWN0bmFtZT5PcGVuU1NMPC9wcm9kdWN0bmFtZT4gYW5kCisgICAgICA8cHJv ZHVjdG5hbWU+TlNTPC9wcm9kdWN0bmFtZT4gc3VwcG9ydHMKICAgICAgIGlzIGF1dG9tYXRpY2Fs bHkgcGlja2VkIHVwLgogICAgICAgVGhpcyBpcyBub3QgcG9zc2libGUgd2l0aCBjaXBoZXJzLCB3 aGljaCBuZWVkIHRvIGJlIHN1cHBvcnRlZAogICAgICAgZXhwbGljaXRseS4KZGlmZiAtLWdpdCBh L2RvYy9zcmMvc2dtbC9zc2xpbmZvLnNnbWwgYi9kb2Mvc3JjL3NnbWwvc3NsaW5mby5zZ21sCmlu ZGV4IDMyMTNjMDM5Y2EuLmQyMjcwY2JlN2MgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9zc2xp bmZvLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3NzbGluZm8uc2dtbApAQCAtMjIsNyArMjIsOCBA QAogCiAgPHBhcmE+CiAgIFRoaXMgZXh0ZW5zaW9uIHdvbid0IGJ1aWxkIGF0IGFsbCB1bmxlc3Mg dGhlIGluc3RhbGxhdGlvbiB3YXMKLSAgY29uZmlndXJlZCB3aXRoIDxsaXRlcmFsPi0td2l0aC1v cGVuc3NsPC9saXRlcmFsPi4KKyAgY29uZmlndXJlZCB3aXRoIFNTTCBzdXBwb3J0LCBzdWNoIGFz IDxsaXRlcmFsPi0td2l0aC1vcGVuc3NsPC9saXRlcmFsPgorICBvciA8bGl0ZXJhbD4tLXdpdGgt bnNzPC9saXRlcmFsPi4KICA8L3BhcmE+CiAKICA8c2VjdDI+CkBAIC0yMDgsNiArMjA5LDkgQEAg ZW1haWxBZGRyZXNzCiAgICAgIHRoZSBYLjUwMCBhbmQgWC41MDkgc3RhbmRhcmRzLCBzbyB5b3Ug Y2Fubm90IGp1c3QgYXNzaWduIGFyYml0cmFyeQogICAgICBtZWFuaW5nIHRvIHRoZW0uCiAgICAg PC9wYXJhPgorICAgIDxwYXJhPgorICAgICBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxl IHdoZW4gdXNpbmcgPHByb2R1Y3RuYW1lPk9wZW5TU0w8L3Byb2R1Y3RuYW1lPi4KKyAgICA8L3Bh cmE+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCkBAIC0yMjMsNiArMjI3 LDkgQEAgZW1haWxBZGRyZXNzCiAgICAgIFNhbWUgYXMgPGZ1bmN0aW9uPnNzbF9jbGllbnRfZG5f ZmllbGQ8L2Z1bmN0aW9uPiwgYnV0IGZvciB0aGUgY2VydGlmaWNhdGUgaXNzdWVyCiAgICAgIHJh dGhlciB0aGFuIHRoZSBjZXJ0aWZpY2F0ZSBzdWJqZWN0LgogICAgIDwvcGFyYT4KKyAgICA8cGFy YT4KKyAgICAgVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSB3aGVuIHVzaW5nIDxwcm9k dWN0bmFtZT5PcGVuU1NMPC9wcm9kdWN0bmFtZT4uCisgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0 ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIApAQCAtMjM4LDYgKzI0NSw5IEBAIGVtYWlsQWRkcmVz cwogICAgICBQcm92aWRlIGluZm9ybWF0aW9uIGFib3V0IGV4dGVuc2lvbnMgb2YgY2xpZW50IGNl cnRpZmljYXRlOiBleHRlbnNpb24gbmFtZSwKICAgICAgZXh0ZW5zaW9uIHZhbHVlLCBhbmQgaWYg aXQgaXMgYSBjcml0aWNhbCBleHRlbnNpb24uCiAgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAg ICBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIHdoZW4gdXNpbmcgPHByb2R1Y3RuYW1l Pk9wZW5TU0w8L3Byb2R1Y3RuYW1lPi4KKyAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KICAg IDwvdmFybGlzdGVudHJ5PgogICA8L3ZhcmlhYmxlbGlzdD4KZGlmZiAtLWdpdCBhL3NyYy90b29s cy9tc3ZjL0luc3RhbGwucG0gYi9zcmMvdG9vbHMvbXN2Yy9JbnN0YWxsLnBtCmluZGV4IGVhM2Fm NDg3NzcuLmFmZTcyYTdlOTcgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9tc3ZjL0luc3RhbGwucG0K KysrIGIvc3JjL3Rvb2xzL21zdmMvSW5zdGFsbC5wbQpAQCAtNDM4LDcgKzQzOCw4IEBAIHN1YiBD b3B5Q29udHJpYkZpbGVzCiAJCXsKIAkJCSMgVGhlc2UgY29uZmlndXJhdGlvbi1iYXNlZCBleGNs dXNpb25zIG11c3QgbWF0Y2ggdmNyZWdyZXNzLnBsCiAJCQluZXh0IGlmICgkZCBlcSAidXVpZC1v c3NwIiAgJiYgIWRlZmluZWQoJGNvbmZpZy0+e3V1aWR9KSk7Ci0JCQluZXh0IGlmICgkZCBlcSAi c3NsaW5mbyIgICAgJiYgIWRlZmluZWQoJGNvbmZpZy0+e29wZW5zc2x9KSk7CisJCQluZXh0IGlm ICgkZCBlcSAic3NsaW5mbyIgICAgJiYgIWRlZmluZWQoJGNvbmZpZy0+e29wZW5zc2x9KQorCQkJ ICAmJiAhZGVmaW5lZCgkY29uZmlnLT57bnNzfSkpOwogCQkJbmV4dCBpZiAoJGQgZXEgInhtbDIi ICAgICAgICYmICFkZWZpbmVkKCRjb25maWctPnt4bWx9KSk7CiAJCQluZXh0IGlmICgkZCA9fiAv X3BscGVybCQvICAgJiYgIWRlZmluZWQoJGNvbmZpZy0+e3Blcmx9KSk7CiAJCQluZXh0IGlmICgk ZCA9fiAvX3BscHl0aG9uJC8gJiYgIWRlZmluZWQoJGNvbmZpZy0+e3B5dGhvbn0pKTsKZGlmZiAt LWdpdCBhL3NyYy90b29scy9tc3ZjL01rdmNidWlsZC5wbSBiL3NyYy90b29scy9tc3ZjL01rdmNi dWlsZC5wbQppbmRleCBhMjFlYjA4OGIzLi4wYzQ4OWY5ZjM0IDEwMDY0NAotLS0gYS9zcmMvdG9v bHMvbXN2Yy9Na3ZjYnVpbGQucG0KKysrIGIvc3JjL3Rvb2xzL21zdmMvTWt2Y2J1aWxkLnBtCkBA IC00NDQsOSArNDQ0LDE0IEBAIHN1YiBta3ZjYnVpbGQKIAkJcHVzaCBAY29udHJpYl9leGNsdWRl cywgJ3htbDInOwogCX0KIAorCWlmICghJHNvbHV0aW9uLT57b3B0aW9uc30tPntvcGVuc3NsfSAm JiAhJHNvbHV0aW9uLT57b3B0aW9uc30tPntuc3N9KQorCXsKKwkJcHVzaCBAY29udHJpYl9leGNs dWRlcywgJ3NzbGluZm8nOworCX0KKwogCWlmICghJHNvbHV0aW9uLT57b3B0aW9uc30tPntvcGVu c3NsfSkKIAl7Ci0JCXB1c2ggQGNvbnRyaWJfZXhjbHVkZXMsICdzc2xpbmZvJywgJ3NzbF9wYXNz cGhyYXNlX2NhbGxiYWNrJzsKKwkJcHVzaCBAY29udHJpYl9leGNsdWRlcywgJ3NzbF9wYXNzcGhy YXNlX2NhbGxiYWNrJzsKIAl9CiAKIAlpZiAoISRzb2x1dGlvbi0+e29wdGlvbnN9LT57dXVpZH0p CkBAIC00NzYsNiArNDgxLDExIEBAIHN1YiBta3ZjYnVpbGQKIAkJJHBnY3J5cHRvLT5BZGRGaWxl cygnY29udHJpYi9wZ2NyeXB0bycsICdvcGVuc3NsLmMnLAogCQkJJ3BncC1tcGktb3BlbnNzbC5j Jyk7CiAJfQorCWVsc2lmICgkc29sdXRpb24tPntvcHRpb25zfS0+e25zc30pCisJeworCQkkcGdj cnlwdG8tPkFkZEZpbGVzKCdjb250cmliL3BnY3J5cHRvJywgJ25zcy5jJywKKwkJCSdwZ3AtbXBp LWludGVybmFsLmMnLCAnaW1hdGguYycsICdibGYuYycpOworCX0KIAllbHNlCiAJewogCQkkcGdj cnlwdG8tPkFkZEZpbGVzKAotLSAKMi4yNS4xCgo= --_008_a9b663ae4a4b71525e88b75463c865a6693cb4cecamelvmwarecom_ Content-Type: text/x-patch; name="v23-0006-NSS-cryptohash-support.patch" Content-Description: v23-0006-NSS-cryptohash-support.patch Content-Disposition: attachment; filename="v23-0006-NSS-cryptohash-support.patch"; size=6693; creation-date="Wed, 20 Jan 2021 17:07:08 GMT"; modification-date="Wed, 20 Jan 2021 17:07:08 GMT" Content-ID: <9B301087A8AE4B4683A7B4035137C913@namprd05.prod.outlook.com> Content-Transfer-Encoding: base64 RnJvbSAxNDM2YjhiNzRmMjVjN2ExNjdjZjc4ZTdlZjAzOGRlMDJmOTExYmQ4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgR3VzdGFmc3NvbiA8ZGFuaWVsQHllc3FsLnNlPgpE YXRlOiBNb24sIDE4IEphbiAyMDIxIDEzOjA0OjQ5ICswMTAwClN1YmplY3Q6IFtQQVRDSCB2MjMg Ni82XSBOU1MgY3J5cHRvaGFzaCBzdXBwb3J0CgotLS0KIHNyYy9jb21tb24vTWFrZWZpbGUgICAg ICAgICB8ICAgNSArCiBzcmMvY29tbW9uL2NyeXB0b2hhc2hfbnNzLmMgfCAyNDMgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDI0OCBpbnNlcnRp b25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2NvbW1vbi9jcnlwdG9oYXNoX25zcy5jCgpk aWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi9NYWtlZmlsZSBiL3NyYy9jb21tb24vTWFrZWZpbGUKaW5k ZXggN2E0YjNkYWQ1ZC4uNWEyNWU1YjM5MCAxMDA2NDQKLS0tIGEvc3JjL2NvbW1vbi9NYWtlZmls ZQorKysgYi9zcmMvY29tbW9uL01ha2VmaWxlCkBAIC04NSwxMSArODUsMTYgQEAgT0JKU19DT01N T04gKz0gXAogCXByb3RvY29sX29wZW5zc2wubyBcCiAJY3J5cHRvaGFzaF9vcGVuc3NsLm8KIGVs c2UKK2lmZXEgKCQod2l0aF9zc2wpLG5zcykKK09CSlNfQ09NTU9OICs9IFwKKwljcnlwdG9oYXNo X25zcy5vCitlbHNlCiBPQkpTX0NPTU1PTiArPSBcCiAJY3J5cHRvaGFzaC5vIFwKIAltZDUubyBc CiAJc2hhMi5vCiBlbmRpZgorZW5kaWYKIAogIyBBIGZldyBmaWxlcyBhcmUgY3VycmVudGx5IG9u bHkgYnVpbHQgZm9yIGZyb250ZW5kLCBub3Qgc2VydmVyCiAjIChNa3ZjYnVpbGQucG0gaGFzIGEg Y29weSBvZiB0aGlzIGxpc3QsIHRvbykuICBsb2dnaW5nLmMgaXMgZXhjbHVkZWQKZGlmZiAtLWdp dCBhL3NyYy9jb21tb24vY3J5cHRvaGFzaF9uc3MuYyBiL3NyYy9jb21tb24vY3J5cHRvaGFzaF9u c3MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi45Y2Q5YzlmM2YzCi0t LSAvZGV2L251bGwKKysrIGIvc3JjL2NvbW1vbi9jcnlwdG9oYXNoX25zcy5jCkBAIC0wLDAgKzEs MjQzIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBjcnlwdG9oYXNoX25zcy5jCisgKgkg IFNldCBvZiB3cmFwcGVyIHJvdXRpbmVzIG9uIHRvcCBvZiBOU1MgdG8gc3VwcG9ydCBjcnlwdG9n cmFwaGljCisgKgkgIGhhc2ggZnVuY3Rpb25zLgorICoKKyAqIFRoaXMgc2hvdWxkIG9ubHkgYmUg dXNlZCBpZiBjb2RlIGlzIGNvbXBpbGVkIHdpdGggTlNTIHN1cHBvcnQuCisgKgorICogUG9ydGlv bnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjAsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50 IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVu aXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkJICBzcmMv Y29tbW9uL2NyeXB0b2hhc2hfbnNzLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisj aWZuZGVmIEZST05URU5ECisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKyNlbHNlCisjaW5jbHVkZSAi cG9zdGdyZXNfZmUuaCIKKyNlbmRpZgorCisvKgorICogQklUU19QRVJfQllURSBpcyBhbHNvIGRl ZmluZWQgaW4gdGhlIE5TUFIgaGVhZGVyIGZpbGVzLCBzbyB3ZSBuZWVkIHRvIHVuZGVmCisgKiBv dXIgdmVyc2lvbiB0byBhdm9pZCBjb21waWxlciB3YXJuaW5ncyBvbiByZWRlZmluaXRpb24uCisg Ki8KKyNkZWZpbmUgcGdfQklUU19QRVJfQllURSBCSVRTX1BFUl9CWVRFCisjdW5kZWYgQklUU19Q RVJfQllURQorCisjaW5jbHVkZSA8bnNzL25zcy5oPgorI2luY2x1ZGUgPG5zcy9oYXNodC5oPgor I2luY2x1ZGUgPG5zcy9wazExZnVuYy5oPgorI2luY2x1ZGUgPG5zcy9wazExcHViLmg+CisjaW5j bHVkZSA8bnNzL3NlY2l0ZW0uaD4KKyNpbmNsdWRlIDxuc3Mvc2VjaGFzaC5oPgorI2luY2x1ZGUg PG5zcy9zZWNvaWQuaD4KKyNpbmNsdWRlIDxuc3Mvc2VjZXJyLmg+CisKKy8qCisgKiBFbnN1cmUg dGhhdCB0aGUgY29sbGlkaW5nIGRlZmluaXRpb25zIG1hdGNoLCBlbHNlIHRocm93IGFuIGVycm9y LiBJbiBjYXNlCisgKiBOU1BSIGhhcyByZW1vdmVkIHRoZSBkZWZpbml0aW9uIGZvciBzb21lIHJl YXNvbiwgbWFrZSBzdXJlIHRvIHB1dCBvdXJzCisgKiBiYWNrIGFnYWluLgorICovCisjaWYgZGVm aW5lZChCSVRTX1BFUl9CWVRFKQorI2lmIEJJVFNfUEVSX0JZVEUgIT0gcGdfQklUU19QRVJfQllU RQorI2Vycm9yICJpbmNvbXBhdGlibGUgYnl0ZSB3aWR0aHMgYmV0d2VlbiBOU1BSIGFuZCBwb3N0 Z3JlcyIKKyNlbmRpZgorI2Vsc2UKKyNkZWZpbmUgQklUU19QRVJfQllURSBwZ19CSVRTX1BFUl9C WVRFCisjZW5kaWYKKyN1bmRlZiBwZ19CSVRTX1BFUl9CWVRFCisKKyNpbmNsdWRlICJjb21tb24v Y3J5cHRvaGFzaC5oIgorI2lmbmRlZiBGUk9OVEVORAorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxz LmgiCisjaW5jbHVkZSAidXRpbHMvcmVzb3duZXIuaCIKKyNpbmNsdWRlICJ1dGlscy9yZXNvd25l cl9wcml2YXRlLmgiCisjZW5kaWYKKworLyoKKyAqIEludGVybmFsIHBnX2NyeXB0b2hhc2hfY3R4 IHN0cnVjdHVyZS4KKyAqLworc3RydWN0IHBnX2NyeXB0b2hhc2hfY3R4Cit7CisJcGdfY3J5cHRv aGFzaF90eXBlIHR5cGU7CisKKwlOU1NJbml0Q29udGV4dCAqbnNzX2NvbnRleHQ7CisJUEsxMUNv bnRleHQgKnBrMTFfY29udGV4dDsKKwlIQVNIX0hhc2hUeXBlIGhhc2hfdHlwZTsKKworI2lmbmRl ZiBGUk9OVEVORAorCVJlc291cmNlT3duZXIgcmVzb3duZXI7CisjZW5kaWYKK307CisKKy8qCisg KiBwZ19jcnlwdG9oYXNoX2NyZWF0ZQorICoKKyAqIENyZWF0ZSBhbmQgYWxsb2NhdGUgYSBuZXcg aGFzaCBjb250ZXh0LiBSZXR1cm5zIE5VTEwgb24gZmFpbHVyZSBpbiB0aGUKKyAqIGZyb250ZW5k LCBhbmQgcmFpc2UgZXJyb3Igd2l0aG91dCByZXR1cm5pbmcgaW4gdGhlIGJhY2tlbmQuCisgKi8K K3BnX2NyeXB0b2hhc2hfY3R4ICoKK3BnX2NyeXB0b2hhc2hfY3JlYXRlKHBnX2NyeXB0b2hhc2hf dHlwZSB0eXBlKQoreworCU5TU0luaXRQYXJhbWV0ZXJzIHBhcmFtczsKKwlwZ19jcnlwdG9oYXNo X2N0eCAqY3R4OworCVNFQ09pZERhdGEgKmhhc2g7CisKKyNpZm5kZWYgRlJPTlRFTkQKKwkvKgor CSAqIE1ha2Ugc3VyZSB0aGF0IHRoZSByZXNvdXJjZSBvd25lciBoYXMgc3BhY2UgdG8gcmVtZW1i ZXIgdGhpcyByZWZlcmVuY2UuCisJICogVGhpcyBjYW4gZXJyb3Igb3V0IHdpdGggIm91dCBvZiBt ZW1vcnkiLCBzbyBkbyB0aGlzIGJlZm9yZSBhbnkgb3RoZXIKKwkgKiBhbGxvY2F0aW9uIHRvIGF2 b2lkIGxlYWtpbmcuCisJICovCisJUmVzb3VyY2VPd25lckVubGFyZ2VDcnlwdG9IYXNoKEN1cnJl bnRSZXNvdXJjZU93bmVyKTsKKwljdHggPSBNZW1vcnlDb250ZXh0QWxsb2MoVG9wTWVtb3J5Q29u dGV4dCwgc2l6ZW9mKHBnX2NyeXB0b2hhc2hfY3R4KSk7CisjZWxzZQorCWN0eCA9IHBnX21hbGxv YyhzaXplb2YocGdfY3J5cHRvaGFzaF9jdHgpKTsKKyNlbmRpZgorCisJaWYgKCFjdHgpCisJCWdv dG8gZXJyb3I7CisKKwlzd2l0Y2godHlwZSkKKwl7CisJCWNhc2UgUEdfTUQ1OgorCQkJY3R4LT5o YXNoX3R5cGUgPSBTRUNfT0lEX01ENTsKKwkJCWJyZWFrOworCQljYXNlIFBHX1NIQTIyNDoKKwkJ CWN0eC0+aGFzaF90eXBlID0gU0VDX09JRF9TSEEyMjQ7CisJCQlicmVhazsKKwkJY2FzZSBQR19T SEEyNTY6CisJCQljdHgtPmhhc2hfdHlwZSA9IFNFQ19PSURfU0hBMjU2OworCQkJYnJlYWs7CisJ CWNhc2UgUEdfU0hBMzg0OgorCQkJY3R4LT5oYXNoX3R5cGUgPSBTRUNfT0lEX1NIQTM4NDsKKwkJ CWJyZWFrOworCQljYXNlIFBHX1NIQTUxMjoKKwkJCWN0eC0+aGFzaF90eXBlID0gU0VDX09JRF9T SEE1MTI7CisJCQlicmVhazsKKwl9CisKKwkvKgorCSAqIEluaXRpYWxpemUgb3VyIG93biBOU1Mg Y29udGV4dCB3aXRob3V0IGEgZGF0YWJhc2UgYmFja2luZyBpdC4KKwkgKi8KKwltZW1zZXQoJnBh cmFtcywgMCwgc2l6ZW9mKHBhcmFtcykpOworCXBhcmFtcy5sZW5ndGggPSBzaXplb2YocGFyYW1z KTsKKwljdHgtPm5zc19jb250ZXh0ID0gTlNTX0luaXRDb250ZXh0KCIiLCAiIiwgIiIsICIiLCAm cGFyYW1zLAorCQkJCQkJCQkJICAgTlNTX0lOSVRfUkVBRE9OTFkgfCBOU1NfSU5JVF9OT0NFUlRE QiB8CisJCQkJCQkJCQkgICBOU1NfSU5JVF9OT01PRERCIHwgTlNTX0lOSVRfRk9SQ0VPUEVOIHwK KwkJCQkJCQkJCSAgIE5TU19JTklUX05PUk9PVElOSVQgfCBOU1NfSU5JVF9QSzExUkVMT0FEKTsK KwlpZiAoIWN0eC0+bnNzX2NvbnRleHQpCisJeworCQlleHBsaWNpdF9iemVybyhjdHgsIHNpemVv ZihwZ19jcnlwdG9oYXNoX2N0eCkpOworCQlwZnJlZShjdHgpOworCQlnb3RvIGVycm9yOworCX0K KwljdHgtPnR5cGUgPSB0eXBlOworCWhhc2ggPSBTRUNPSURfRmluZE9JREJ5VGFnKGN0eC0+aGFz aF90eXBlKTsKKwljdHgtPnBrMTFfY29udGV4dCA9IFBLMTFfQ3JlYXRlRGlnZXN0Q29udGV4dCho YXNoLT5vZmZzZXQpOworCWlmICghY3R4LT5wazExX2NvbnRleHQpCisJeworCQlleHBsaWNpdF9i emVybyhjdHgsIHNpemVvZihwZ19jcnlwdG9oYXNoX2N0eCkpOworCQlwZnJlZShjdHgpOworCQln b3RvIGVycm9yOworCX0KKworI2lmbmRlZiBGUk9OVEVORAorCWN0eC0+cmVzb3duZXIgPSBDdXJy ZW50UmVzb3VyY2VPd25lcjsKKwlSZXNvdXJjZU93bmVyUmVtZW1iZXJDcnlwdG9IYXNoKEN1cnJl bnRSZXNvdXJjZU93bmVyLAorCQkJCQkJCQkJUG9pbnRlckdldERhdHVtKGN0eCkpOworI2VuZGlm CisKKwlyZXR1cm4gY3R4OworCitlcnJvcjoKKyNpZm5kZWYgRlJPTlRFTkQKKwllcmVwb3J0KEVS Uk9SLAorCQkJKGVycmNvZGUoRVJSQ09ERV9PVVRfT0ZfTUVNT1JZKSwKKwkJCSBlcnJtc2coIm91 dCBvZiBtZW1vcnkiKSkpOworI2VuZGlmCisJcmV0dXJuIE5VTEw7Cit9CisKKy8qCisgKiBwZ19j cnlwdG9oYXNoX2luaXQKKyAqCQkJSW5pdGlhbGl6ZSB0aGUgcGFzc2VkIGhhc2ggY29udGV4dAor ICoKKyAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCAtMSBvbiBmYWlsdXJlLgorICovCitpbnQKK3Bn X2NyeXB0b2hhc2hfaW5pdChwZ19jcnlwdG9oYXNoX2N0eCAqY3R4KQoreworCVNFQ1N0YXR1cwkJ c3RhdHVzOworCisJc3RhdHVzID0gUEsxMV9EaWdlc3RCZWdpbihjdHgtPnBrMTFfY29udGV4dCk7 CisKKwlpZiAoc3RhdHVzICE9IFNFQ1N1Y2Nlc3MpCisJCXJldHVybiAxOworCXJldHVybiAwOwor fQorCisvKgorICogcGdfY3J5cHRvaGFzaF91cGRhdGUKKyAqCisgKiBVcGRhdGUgYSBoYXNoIGNv bnRleHQuICBSZXR1cm5zIDAgb24gc3VjY2VzcywgLTEgb24gZmFpbHVyZS4KKyAqLworaW50Citw Z19jcnlwdG9oYXNoX3VwZGF0ZShwZ19jcnlwdG9oYXNoX2N0eCAqY3R4LCBjb25zdCB1aW50OCAq ZGF0YSwgc2l6ZV90IGxlbikKK3sKKwlTRUNTdGF0dXMJc3RhdHVzOworCisJaWYgKGN0eCA9PSBO VUxMKQorCQlyZXR1cm4gLTE7CisJCisJc3RhdHVzID0gUEsxMV9EaWdlc3RPcChjdHgtPnBrMTFf Y29udGV4dCwgZGF0YSwgbGVuKTsKKwlpZiAoc3RhdHVzICE9IFNFQ1N1Y2Nlc3MpCisJCXJldHVy biAtMTsKKwkKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIHBnX2NyeXB0b2hhc2hfZmluYWwKKyAq CisgKiBGaW5hbGl6ZSBhIGhhc2ggY29udGV4dC4gIFJldHVybnMgMCBvbiBzdWNjZXNzLCAtMSBv biBmYWlsdXJlLgorICovCitpbnQKK3BnX2NyeXB0b2hhc2hfZmluYWwocGdfY3J5cHRvaGFzaF9j dHggKmN0eCwgdWludDggKmRlc3QpCit7CisJU0VDU3RhdHVzCXN0YXR1czsKKwl1bnNpZ25lZCBp bnQgb3V0bGVuOworCWNvbnN0IFNFQ0hhc2hPYmplY3QgKm9iamVjdDsKKworCW9iamVjdCA9IEhB U0hfR2V0SGFzaE9iamVjdChjdHgtPmhhc2hfdHlwZSk7CisJc3RhdHVzID0gUEsxMV9EaWdlc3RG aW5hbChjdHgtPnBrMTFfY29udGV4dCwgZGVzdCwgJm91dGxlbiwgb2JqZWN0LT5sZW5ndGgpOwor CisJaWYgKHN0YXR1cyAhPSBTRUNTdWNjZXNzKQorCQlyZXR1cm4gLTE7CisJcmV0dXJuIDA7Cit9 CisKKy8qCisgKiBwZ19jcnlwdG9oYXNoX2ZyZWUKKyAqCisgKiBGcmVlIGEgaGFzaCBjb250ZXh0 IGFuZCB0aGUgYXNzb2NpYXRlZCBOU1MgY29udGV4dC4KKyAqLwordm9pZAorcGdfY3J5cHRvaGFz aF9mcmVlKHBnX2NyeXB0b2hhc2hfY3R4ICpjdHgpCit7CisJUFJCb29sCQlmcmVlX2NvbnRleHQg PSBQUl9UUlVFOworCWlmICghY3R4KQorCQlyZXR1cm47CisJCisJUEsxMV9EZXN0cm95Q29udGV4 dChjdHgtPnBrMTFfY29udGV4dCwgZnJlZV9jb250ZXh0KTsKKyNpZm5kZWYgRlJPTlRFTkQKKwlS ZXNvdXJjZU93bmVyRm9yZ2V0Q3J5cHRvSGFzaChjdHgtPnJlc293bmVyLCBQb2ludGVyR2V0RGF0 dW0oY3R4KSk7CisjZW5kaWYKKwlOU1NfU2h1dGRvd25Db250ZXh0KGN0eC0+bnNzX2NvbnRleHQp OworCWV4cGxpY2l0X2J6ZXJvKGN0eCwgc2l6ZW9mKHBnX2NyeXB0b2hhc2hfY3R4KSk7CisJcGZy ZWUoY3R4KTsKK30KLS0gCjIuMjUuMQoK --_008_a9b663ae4a4b71525e88b75463c865a6693cb4cecamelvmwarecom_--