From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM02-BN1-obe.outbound.protection.outlook.com (NAM02-BN1-obe.outbound.protection.outlook.com [40.107.212.75]) by mx.groups.io with SMTP id smtpd.web11.21788.1682105508048863389 for ; Fri, 21 Apr 2023 12:31:48 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@ami.com header.s=selector1 header.b=UwBi73jO; spf=pass (domain: ami.com, ip: 40.107.212.75, mailfrom: igork@ami.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=R59rE38SxDuHLGHCcttFr9wl0rpjM5cc52z+M2t69QQv6i9pfebNE+EN1qCtxihe/ArZ0YbYjwTul+Ll+Y1Z98EqRDATL1WVzX0IYr5BKclMWCi4ktoUwRZD67OSl2Xk4jZrwQ89DO/KsHbeMrELXWc7IeTuwns2Q7EruQCC3g3S41QtnHsbB39rwMDq0x8Ow4iAeuR0t6CQz56iVW6IohKwHez3h7BV3NmK1AT1ONqo3Bxw6Zh0c+Lc/gXr46X1sjh25ShGWJoG+ar68H/Chzv41HCN7mTOtVXRqoXnIKJqLmXlENOgOwd7PAxHhQOwkNIY3KB7D96oB0IPROa74Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=1dkyZOtVv0JVx/vI9me/qnvAufPHhnCfyrUUQY8FFLo=; b=Iqn7BHnvps9i1VTixn/FCIMwaGntpVz7JXkGCskzeKS/jPZKSBtl2YUTW5JLGFaZS+Slgs2h584MsH6u5VRQC946ujnvhnUkV7sOqI1BI+qK5NEa35VZe/BFdI6SLv+F/7X5unyR1zdxxKer1HCP4CXbCg+CPXqweo0a3FoptAJHc7CTLJMrtDHFL6c819dRJHInTtT5/+kkg7Gp6GuLkcTsv/dWNI+aY0rSmNZMhLSOdejE95GN9jj695RQaAMkI7bjHB1cSif/b6rH/aK4hDkOR1qNsBO3W+OnBTuELyL6PRcAsW96+A31T9G1y/ZP8IwY/lSmJPVk8Zpq9eGCBA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=ami.com; dmarc=pass action=none header.from=ami.com; dkim=pass header.d=ami.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ami.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1dkyZOtVv0JVx/vI9me/qnvAufPHhnCfyrUUQY8FFLo=; b=UwBi73jOBMRZNDl93cZf9MlulXS162qxcxDmyy7Sw5pElwNMvFbJ/AA2Nr/B5x6k8uZTLJcJCcJIUjfWnRkRxXS84Euf/czRMz/f5L56JXq6p4SpJq8n6BGRiDlVvjAbI/PmKvPC3cWIyoaZhF0aQMsapITP3dSpERFSo4cSorU= Received: from BLAPR10MB5185.namprd10.prod.outlook.com (2603:10b6:208:328::16) by IA1PR10MB6781.namprd10.prod.outlook.com (2603:10b6:208:42b::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6319.22; Fri, 21 Apr 2023 19:31:45 +0000 Received: from BLAPR10MB5185.namprd10.prod.outlook.com ([fe80::d79d:9060:94d8:b4b0]) by BLAPR10MB5185.namprd10.prod.outlook.com ([fe80::d79d:9060:94d8:b4b0%7]) with mapi id 15.20.6319.022; Fri, 21 Apr 2023 19:31:44 +0000 From: "Igor Kulchytskyy" To: "Chang, Abner" , "devel@edk2.groups.io" CC: Nickle Wang Subject: Re: [PATCH] RedfishPkg: Remove the global variables related to Discover Token functionality Thread-Topic: [EXTERNAL] RE: [PATCH] RedfishPkg: Remove the global variables related to Discover Token functionality Thread-Index: AQHZctAydhY3Kcy4cUiFhJsstK/5NK8zVjUggAE0RiCAAFtdAIABQ/kQ Date: Fri, 21 Apr 2023 19:31:44 +0000 Message-ID: References: <20230419150328.1097-1-igork@ami.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Enabled=true; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SetDate=2023-04-21T00:12:51Z; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Method=Standard; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_Name=General; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ActionId=cac95486-7a38-4271-80cf-70c6c065edd4; MSIP_Label_4342314e-0df4-4b58-84bf-38bed6170a0f_ContentBits=1 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=ami.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BLAPR10MB5185:EE_|IA1PR10MB6781:EE_ x-ms-office365-filtering-correlation-id: 3c0c6034-5167-408d-36ea-08db429f0a6a x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: ehP272I91Ct9NKVZ0ugTWgGLkoCWg7LV9N185spLgCMpN1D3Ah+SnZvIL1N0E+WZfS3/sG096uJ1/GpMWLxyrAnH1Xk9hSCusACQtXDeCeQl8pbsgWlDZ66wTnDly57utMoJWUg97i8OlEPI6q/yBV89O8RmJz//LtCrzLs1gcSqWgCyFY9z/jc7IJsFRFqoBIekRn5pd/k+UkEY34FvJ75qwr7EQx02KfLIzkz1ovX7a3Ae0vb5bBDjMa3aL2FjcnzKAyrXcfd7/l0W4biUAFFUYd4YFfvix4zAGXuOB08Ldkqkgwr2cqsSi7mn4rGGxP0XOOucZ64t4Tn5dGhO6AQQTbssDTEMqVJb82zoc8ASec8Zs8GHLvpYD5A7TIRlCWCMttUlQAU4uyQ3KI3UFfRzskEc7XJohNXTsmxxjB8+rd5W8CMSjx6okCTeL46o8TWp/7WE83pB4B3UsPXGi09Jx+aTfj9t5WQmofN5pjegHKEylKj1Xcxil4aj5iQhHkmPsA/poEBvcv0mkbkDqxMNyGHk3y/WkwQ/pv2RqEWf2XMmpP0RQrVPwS3m5o1GqIxAXJXYpcCEKVyF0/IwHogQ5jVXdups/1YogqjxcbLb6jZVWeKIZ1kgUmr7WTAq x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BLAPR10MB5185.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(136003)(39850400004)(376002)(396003)(346002)(366004)(451199021)(33656002)(38100700002)(40140700001)(316002)(2906002)(30864003)(55016003)(52536014)(8936002)(8676002)(38070700005)(86362001)(41300700001)(5660300002)(66946007)(66446008)(66476007)(64756008)(76116006)(66556008)(122000001)(966005)(83380400001)(4326008)(6506007)(186003)(53546011)(26005)(110136005)(9686003)(7696005)(45080400002)(478600001)(71200400001)(559001)(579004)(44824005);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?VnpuNFFtalQwZUxmVGhsQ1ZWT0VranR5enlldm5EcXhXaUNiNTlnMEVrb0V5?= =?utf-8?B?T0dtNkFLVXhCNXE1MkZJZUtLdFNJemo2aUcyc2JNZFl2OTN4QWVWWEJPRzJP?= =?utf-8?B?RVdsYzcwVk1XWlFYUkZjeEUvR1NyNjdmeEtvVFhIMklKbWV1OHFjcW5ZNjBZ?= =?utf-8?B?ZlZqeWdOK3ZsSW84c3JqWHlwcElQWWlGOGFEZ0tIRHlBckZoU1pvMEJNZzVs?= =?utf-8?B?TDJRNEVFVjd3VzQvaW1BeXVkYXkwVmczY2pTNGlicDF5QnFmSmg3cUJUMnVX?= =?utf-8?B?R0x3ZnNzeEFjdUZrMHhDQnM4NHRxN0RFczJnWURXVEFRZGhIQnprVFZmT0tI?= =?utf-8?B?c2YvcmVqWjE3RmVuT3JkdDdkeTZ5MXhCcDVNZldBaGdPbEk0REtkTjlwM0Q4?= =?utf-8?B?UG9CeTh2ZWZJSkhzUVM5d09hNjlvSCtIc05uRmlsZ2llRkxYODNXbHU3Y0Rt?= =?utf-8?B?NzUzdmpBcVlYRG1RTGpLQ3NsdmJZTUNLVGw2eHZ5ZllyUlJUNkxIWWNXK3Vk?= =?utf-8?B?bUd6dFhDTGFPcVRLOVpERzVvQVkxRmZOSklyRUkxeVU2bXVia20wOW9KTWdt?= =?utf-8?B?ak1PVWdKV0VlZjgyZXc5dzdmemxROUNYZWVEaXNaZWViSlIxeU1Mc1ArRERt?= =?utf-8?B?azVtUmdlb3RiNkF2VVN0c0hJaTlONDVLaFlJUlBlRXdtS3MzK2lUd1pYeWVY?= =?utf-8?B?Tnd4UFh4bWtDR2RnbVZvQTczU2pkOEpjdHR5aVZ3eUZvRXBFdnJkMTE3Y0Vl?= =?utf-8?B?VHI3WFlDS3BZdzlOSllWdzFJWmtNRExuMVlJOGxDd28vMWRJdWRXRHNCREtR?= =?utf-8?B?ZXRPZC9vOG10THhFb0VsY2E5Rk5Mam82ODI1dm1menA5dDRsVExtRXpqN0NC?= =?utf-8?B?YnFmT21yd2JTdlhZTXRVMU5sdXFVS2hCTDV5VEphZ1o5bXBheTFZWHcwd1lQ?= =?utf-8?B?ZEZlL0RQeTJ5RXVDbzBtc0lsNDR5TkZIWEkvS3dNMFFEYzg1Y3lYY2xuQ05J?= =?utf-8?B?UElYa1pHYVJwWGR4bi8vbzJDMkZ1Q0VGQStPYVJEcitoRTlkNGFWOE5rVXcv?= =?utf-8?B?cHZ5eDZqUmxxUHNEamhXNjhhS1cwRWdjM1RSVGVQeG4vcisxcWhnanlubFhr?= =?utf-8?B?MWtNWGVJTVN4WUc3TXk2WktzYmtVRjMvaHRwY29UdkFLK2xRa1E4VTJFaUVp?= =?utf-8?B?VFczK3ZuQWlwRDc1citpQkxHdGJnOG9Wa1RjYmxPQzM2THBCODhoMEU2MFp2?= =?utf-8?B?ajBCb3hjN1NuUktIdm4rL2RYanJBcjBKTGNvV3NVVzQ5UkN2OFNla09lUTFm?= =?utf-8?B?dkt6L2M1clRzK2VEaXlOVDRiczRYeUJzcEh6R1VyYlU5ODA1SVZzS1gycmMz?= =?utf-8?B?MlNWMitScHlSaHBvVGk4cDF5SHUvRFVOdGhzY3V5ZlI2Ris5enkyS3NoVEJ1?= =?utf-8?B?U096TzZycUhiSHpSaHEweEsxRVNQL1pHZnlOSFR4dlRtdlVjQ3E5WVJyZ094?= =?utf-8?B?YWZDT2wwbXVNcTVLQW9qV0FnMEwrd2d0WGZxNWNBVjZIc1lNYTg1OGJGelpn?= =?utf-8?B?Qld6RW9GZzBqaEptSDhTbTRDcG1BZ3IwRFJ5MHlsYWljeTJWdjJydEtFV21I?= =?utf-8?B?YmhJdUtFNG9mVEk0WHU4Y1ROdWxBZFFqZXB5SWV5bEQvMkd2WmgrYnE5bEVX?= =?utf-8?B?VUg0MmtES3krS2pScnVtU004QkJlQjl4ek9Ecml0cFRuNFlFd3F0OVQ4dXlm?= =?utf-8?B?V2h2dyt2TE1FQ1MrVll0eVJQblBheDdMZEorWjdJbTZ1cXhpdlFRZnVqaGFY?= =?utf-8?B?d24zU2U0dGR0ZVhWVzc1bWxhQUNoTkZkWit5cWNZNXlrSFovNWQ2MkF6MXdO?= =?utf-8?B?QS8rUWVYMU9Pank1M3cyQnJMUnRNMnpHSm94SzdRaGF4S1lhRk5pUE5HVjZE?= =?utf-8?B?dXVmYTVpREhRVXhjcmVncWZObGE1anE1RjVqYTkxaUhXT1hpZkxPblhOdU1l?= =?utf-8?B?UW9uQzA5K1hMeGp0dTFNY0ZHVG10eVZ4UU1oV0NCc1RxVktyVTV2ZnFLWjBD?= =?utf-8?B?Q0h5K3lhSUswV0ZJNnFuK01Ib3dLVmZ4SGVlbm5FajBiUDJvWWRJakJEcVlI?= =?utf-8?Q?UMv4=3D?= MIME-Version: 1.0 X-OriginatorOrg: ami.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BLAPR10MB5185.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3c0c6034-5167-408d-36ea-08db429f0a6a X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Apr 2023 19:31:44.4643 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 27e97857-e15f-486c-b58e-86c2b3040f93 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: baxYA/SWovgSFQTVJIY7ZpgSGlJTewr0bfTNqsaG+J2CICnbJVvopsYrMTkbl7MA X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR10MB6781 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgQWJuZXIsDQpJIGNyZWF0ZWQgUFIuDQpodHRwczovL2dpdGh1Yi5jb20vdGlhbm9jb3JlL2Vk azIvcHVsbC80Mjk3DQpTaW5jZSBpdCBpcyBteSBmaXJzdCBQUiBjcmVhdGVkLCBJJ20gbm90IHN1 cmUgaWYgZXZlcnl0aGluZyBkb25lIGNvcnJlY3RseS4NClBsZWFzZSBkb3VibGUgY2hlY2sgZXZl cnl0aGluZy4NClRoYW5rIHlvdSwNCklnb3INCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0N CkZyb206IENoYW5nLCBBYm5lciA8QWJuZXIuQ2hhbmdAYW1kLmNvbT4NClNlbnQ6IFRodXJzZGF5 LCBBcHJpbCAyMCwgMjAyMyA4OjEzIFBNDQpUbzogSWdvciBLdWxjaHl0c2t5eSA8aWdvcmtAYW1p LmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvDQpDYzogTmlja2xlIFdhbmcgPG5pY2tsZXdAbnZp ZGlhLmNvbT4NClN1YmplY3Q6IFJFOiBbRVhURVJOQUxdIFJFOiBbUEFUQ0hdIFJlZGZpc2hQa2c6 IFJlbW92ZSB0aGUgZ2xvYmFsIHZhcmlhYmxlcyByZWxhdGVkIHRvIERpc2NvdmVyIFRva2VuIGZ1 bmN0aW9uYWxpdHkNCg0KW0FNRCBPZmZpY2lhbCBVc2UgT25seSAtIEdlbmVyYWxdDQoNClRoYW5r cyBJZ29yLA0KWW91IHByb2JhYmx5IGNhbiBhc2sgY29tbXVuaXR5IGlmIGFueSBvbmUgaGFzIHRo ZSBzaW1pbGFyIGlzc3VlIG9uIHBhdGNoIGVtYWlsIGZvcm1hdC4NCg0KSSBhbHJlYWR5IGdhdmUg Ui1CIHRvIHRoaXMgY2hhbmdlLCBwbGVhc2UgY3JlYXRlIGEgUFIgYWdhaW5zdCB0byBlZGsyIGFu ZCBsZXQgbWUga25vdyB0aGUgUFIjLiBJIHdpbGwgcHVzaCBpdCBvbmNlIGl0IHBhc3NlcyBDSS4N ClRoYW5rcw0KQWJuZXINCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBJ Z29yIEt1bGNoeXRza3l5IDxpZ29ya0BhbWkuY29tPg0KPiBTZW50OiBGcmlkYXksIEFwcmlsIDIx LCAyMDIzIDI6NDYgQU0NCj4gVG86IENoYW5nLCBBYm5lciA8QWJuZXIuQ2hhbmdAYW1kLmNvbT47 IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+IENjOiBOaWNrbGUgV2FuZyA8bmlja2xld0BudmlkaWEu Y29tPg0KPiBTdWJqZWN0OiBSRTogW0VYVEVSTkFMXSBSRTogW1BBVENIXSBSZWRmaXNoUGtnOiBS ZW1vdmUgdGhlIGdsb2JhbA0KPiB2YXJpYWJsZXMgcmVsYXRlZCB0byBEaXNjb3ZlciBUb2tlbiBm dW5jdGlvbmFsaXR5DQo+DQo+IENhdXRpb246IFRoaXMgbWVzc2FnZSBvcmlnaW5hdGVkIGZyb20g YW4gRXh0ZXJuYWwgU291cmNlLiBVc2UgcHJvcGVyDQo+IGNhdXRpb24gd2hlbiBvcGVuaW5nIGF0 dGFjaG1lbnRzLCBjbGlja2luZyBsaW5rcywgb3IgcmVzcG9uZGluZy4NCj4NCj4NCj4gSGkgQWJu ZXIsDQo+IEkgZGlkIHdoYXQgeW91IGFza2VkIHRvIGRvIC0gUGF0Y2hjaGVjay5weSBhbmQgVW5j cnVzdGl5Q2hlY2sgKGdvdCBiaW5hcnkpLg0KPiBHb2luZyB0byBzZW5kIFBBVENIIFYyLg0KPiBC dXQgSSdtIG5vdCBzdXJlIHdoYXQgaGFwcGVuZWQgd2l0aCB3aGl0ZSBzcGFjZS4gR29pbmcgdG8g Y2hlY2sgd2l0aCBNSVMuDQo+IFRoYW5rIHlvdSwNCj4gSWdvcg0KPg0KPiAtLS0tLU9yaWdpbmFs IE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBDaGFuZywgQWJuZXIgPEFibmVyLkNoYW5nQGFtZC5jb20+ DQo+IFNlbnQ6IFdlZG5lc2RheSwgQXByaWwgMTksIDIwMjMgOTowMCBQTQ0KPiBUbzogSWdvciBL dWxjaHl0c2t5eSA8aWdvcmtAYW1pLmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+IENjOiBO aWNrbGUgV2FuZyA8bmlja2xld0BudmlkaWEuY29tPg0KPiBTdWJqZWN0OiBbRVhURVJOQUxdIFJF OiBbUEFUQ0hdIFJlZGZpc2hQa2c6IFJlbW92ZSB0aGUgZ2xvYmFsIHZhcmlhYmxlcw0KPiByZWxh dGVkIHRvIERpc2NvdmVyIFRva2VuIGZ1bmN0aW9uYWxpdHkNCj4NCj4NCj4gKipDQVVUSU9OOiBU aGUgZS1tYWlsIGJlbG93IGlzIGZyb20gYW4gZXh0ZXJuYWwgc291cmNlLiBQbGVhc2UgZXhlcmNp c2UNCj4gY2F1dGlvbiBiZWZvcmUgb3BlbmluZyBhdHRhY2htZW50cywgY2xpY2tpbmcgbGlua3Ms IG9yIGZvbGxvd2luZyBndWlkYW5jZS4qKg0KPg0KPiBbQU1EIE9mZmljaWFsIFVzZSBPbmx5IC0g R2VuZXJhbF0NCj4NCj4gSGkgSWdvciwNCj4gSSBoYXZlIG5vIHByb2JsZW0gd2l0aCB0aGlzIGNo YW5nZSwgaG93ZXZlciBzb21lIHVwc3RyZWFtIHByYWN0aWNlcyBoZXJlLA0KPg0KPiAtIFBsZWFz ZSBzaG9ydGVuIHRoZSBzdWJqZWN0IHRvIDw9IDc2DQo+IC0gRWFjaCBsaW5lIGluIHRoZSBjb21t aXQgbWVzc2FnZSBzaG91bGQgYmUgPD03NiBZb3UgY2FuIHJ1biBQYXRjaGNoZWNrLnB5DQo+ICho ZXJlOiBCYXNlVG9vbHNcU2NyaXB0cykgYmVmb3JlIHlvdSBzZW5kaW5nIG91dCB0aGUgcGF0Y2hl cy4NCj4NCj4gUGxlYXNlIHJ1biBVbmNydXN0aXlDaGVjayBmb3IgZWFjaCBzb3VyY2UgY29kZSB5 b3UgbW9kaWZpZWQsIC4NCj4gcHl0b29sL1BsdWdpbi9VbmNydXN0aWZ5Q2hlY2svIGFuZCB1c2Vk IGZvciBiZWF1dGlmeWluZyB0aGUgc291cmNlIGNvZGUuDQo+IFlvdSBjYW4gZ2V0IHRoZSBiaW5h cnkgZnJvbSBoZXJlOg0KPiBodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy91bmNydXN0 aWZ5L2ZpbGVzLg0KPg0KPiBQbGVhc2UgcmVzZW5kIHRoZSBwYXRjaCB3aXRoIGFib3ZlIGlzc3Vl IGZpeGVkLg0KPg0KPiBCVFcsIHRoZSBwYXRjaCB5b3Ugc2VudCB0byBncm91cC5pbyBzdGlsbCBo YXMgYSBwcm9ibGVtLiBUaGUgd2hpdGUgc3BhY2Ugb2YNCj4gZWFjaCBibGFuayBsaW5lIGluIHRo ZSBwYXRjaCBmaWxlIHdlcmUgZ29uZSAoeW91IGNhbiB0YWtlIGEgbG9vayBhdCB5b3VyDQo+IG1l c3NhZ2Ugc2VudCB0byBncm91cC5pbykuIFRoaXMgbGVhZHMgdG8gYSBmYWlsdXJlIG9mIHBhdGNo IGFwcGx5LiBJIHJlY292ZXINCj4gdGhvc2Ugd2hpdGUgc3BhY2UgaW4gdGhlIGJsYW5rIGxpbmVz IGFuZCB0aGUgcGF0Y2ggY2FuIGJlIGFwcGxpZWQuIEhvd2V2ZXIsIEkNCj4gY2FuIGRvIHRoaXMg anVzdCBmb3IgYSBzaG9ydCBwYXRjaC4g8J+YiiBQbGVhc2UgZmlndXJlIGl0IG91dCBhdCB5b3Vy IGVuZC4gIFRoYXQncw0KPiBmaW5lIGlmIHRoaXMgcHJvYmxlbSBzdGlsbCBleGlzdCBvbiB5b3Vy IHJlc2VudCBwYXRjaCBpbiBjYXNlIHlvdSBuZWVkIHNvbWUNCj4gdGltZSB0byBmaWd1cmUgb3V0 IHRoZSBlbWFpbCBwcm9ibGVtLg0KPg0KPiBUaGFua3MNCj4gQWJuZXINCj4NCj4gPiAtLS0tLU9y aWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IElnb3IgS3VsY2h5dHNreXkgPGlnb3JrQGFt aS5jb20+DQo+ID4gU2VudDogV2VkbmVzZGF5LCBBcHJpbCAxOSwgMjAyMyAxMTowNCBQTQ0KPiA+ IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiA+IENjOiBDaGFuZywgQWJuZXIgPEFibmVyLkNo YW5nQGFtZC5jb20+OyBOaWNrbGUgV2FuZw0KPiA+IDxuaWNrbGV3QG52aWRpYS5jb20+DQo+ID4g U3ViamVjdDogW1BBVENIXSBSZWRmaXNoUGtnOiBSZW1vdmUgdGhlIGdsb2JhbCB2YXJpYWJsZXMg cmVsYXRlZCB0bw0KPiA+IERpc2NvdmVyIFRva2VuIGZ1bmN0aW9uYWxpdHkNCj4gPg0KPiA+IENh dXRpb246IFRoaXMgbWVzc2FnZSBvcmlnaW5hdGVkIGZyb20gYW4gRXh0ZXJuYWwgU291cmNlLiBV c2UgcHJvcGVyDQo+ID4gY2F1dGlvbiB3aGVuIG9wZW5pbmcgYXR0YWNobWVudHMsIGNsaWNraW5n IGxpbmtzLCBvciByZXNwb25kaW5nLg0KPiA+DQo+ID4NCj4gPiBnUmVkZmlzaERpc2NvdmVyZWRU b2tlbiBtYXkgYmUgYWxsb2NhdGVkIHNldmVyYWwgdGltZXMsIGlmIG11bHRpcGxlDQo+ID4gTklD IGluc3RhbGxlZCBvbiB0aGUgc3lzdGVtLg0KPiA+IFRvIGF2b2lkIHRoaXMgaXNzdWUgRGlzY292 ZXIgVG9rZW4gcmVsYXRlZCBnbG9iYWwgdmFyaWFibGVzIHJlcGxhY2VkDQo+ID4gd2l0aCB0aGUg bG9jYWwgdmFyaWFibGVzLg0KPiA+DQo+ID4gQ2M6IEFibmVyIENoYW5nIDxhYm5lci5jaGFuZ0Bh bWQuY29tPg0KPiA+IENjOiBOaWNrbGUgV2FuZyA8bmlja2xld0BudmlkaWEuY29tPg0KPiA+IFNp Z25lZC1vZmYtYnk6IElnb3IgS3VsY2h5dHNreXkgPGlnb3JrQGFtaS5jb20+DQo+ID4gLS0tDQo+ ID4gIFJlZGZpc2hQa2cvUmVkZmlzaENvbmZpZ0hhbmRsZXIvUmVkZmlzaENvbmZpZ0hhbmRsZXJE cml2ZXIuYyB8IDEzOQ0KPiA+ICsrKysrKysrLS0tLS0tLS0tLS0tDQo+ID4gIFJlZGZpc2hQa2cv UmVkZmlzaERpc2NvdmVyRHhlL1JlZGZpc2hEaXNjb3ZlckR4ZS5jICAgICAgICAgICB8ICA4Nw0K PiArKysrKysrKy0NCj4gPiAtLS0NCj4gPiAgUmVkZmlzaFBrZy9SZWRmaXNoRGlzY292ZXJEeGUv UmVkZmlzaERpc2NvdmVySW50ZXJuYWwuaCAgICAgIHwgIDI4ICsrKy0NCj4gPiAgMyBmaWxlcyBj aGFuZ2VkLCAxNDAgaW5zZXJ0aW9ucygrKSwgMTE0IGRlbGV0aW9ucygtKQ0KPiA+DQo+ID4gZGlm ZiAtLWdpdA0KPiA+IGEvUmVkZmlzaFBrZy9SZWRmaXNoQ29uZmlnSGFuZGxlci9SZWRmaXNoQ29u ZmlnSGFuZGxlckRyaXZlci5jDQo+ID4gYi9SZWRmaXNoUGtnL1JlZGZpc2hDb25maWdIYW5kbGVy L1JlZGZpc2hDb25maWdIYW5kbGVyRHJpdmVyLmMNCj4gPiBpbmRleCA5OTNhZDMzLi44Zjg1NDkx IDEwMDY0NA0KPiA+IC0tLSBhL1JlZGZpc2hQa2cvUmVkZmlzaENvbmZpZ0hhbmRsZXIvUmVkZmlz aENvbmZpZ0hhbmRsZXJEcml2ZXIuYw0KPiA+ICsrKyBiL1JlZGZpc2hQa2cvUmVkZmlzaENvbmZp Z0hhbmRsZXIvUmVkZmlzaENvbmZpZ0hhbmRsZXJEcml2ZXIuYw0KPiA+IEBAIC0yMiwxMiArMjIs NiBAQCBFRklfSEFORExFDQo+ID4gZ0VmaVJlZGZpc2hEaXNjb3ZlckNvbnRyb2xsZXJIYW5kbGUg PSBOVUxMOw0KPiA+ICBFRklfUkVERklTSF9ESVNDT1ZFUl9QUk9UT0NPTCAgKmdFZmlSZWRmaXNo RGlzY292ZXJQcm90b2NvbCAgICAgICAgPQ0KPiA+IE5VTEw7DQo+ID4gIEJPT0xFQU4gICAgICAg ICAgICAgICAgICAgICAgICBnUmVkZmlzaERpc2NvdmVyQWN0aXZhdGVkICAgICAgICAgICA9IEZB TFNFOw0KPiA+ICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgZ1JlZGZpc2hTZXJ2aWNl RGlzY292ZXJlZCAgICAgICAgICAgPSBGQUxTRTsNCj4gPiAtLy8NCj4gPiAtLy8gTmV0d29yayBp bnRlcmZhY2VzIGRpc2NvdmVyZWQgYnkgRUZJIFJlZGZpc2ggRGlzY292ZXIgUHJvdG9jb2wuDQo+ ID4gLS8vDQo+ID4gLVVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnTnVt YmVyT2ZOZXR3b3JrSW50ZXJmYWNlczsNCj4gPiAtRUZJX1JFREZJU0hfRElTQ09WRVJfTkVUV09S S19JTlRFUkZBQ0UNCj4gPiAqZ05ldHdvcmtJbnRlcmZhY2VJbnN0YW5jZXMgPSBOVUxMOw0KPiA+ IC1FRklfUkVERklTSF9ESVNDT1ZFUkVEX1RPS0VOICAgICAgICAgICAgKmdSZWRmaXNoRGlzY292 ZXJlZFRva2VuICAgID0NCj4gPiBOVUxMOw0KPiA+DQo+ID4gIC8vLw0KPiA+ICAvLy8gRHJpdmVy IEJpbmRpbmcgUHJvdG9jb2wgaW5zdGFuY2UNCj4gPiBAQCAtNTgsMTMgKzUyLDYgQEAgUmVkZmlz aENvbmZpZ1N0b3BSZWRmaXNoRGlzY292ZXJ5ICgNCj4gPiAgICAgICAgZ0JTLT5DbG9zZUV2ZW50 IChnRWZpUmVkZmlzaERpc2NvdmVyUHJvdG9jb2xFdmVudCk7DQo+ID4gICAgICB9DQo+ID4NCj4g PiAtICAgIC8vDQo+ID4gLSAgICAvLyBTdG9wIFJlZGZpc2ggc2VydmljZSBkaXNjb3ZlcnkuDQo+ ID4gLSAgICAvLw0KPiA+IC0gICAgZ0VmaVJlZGZpc2hEaXNjb3ZlclByb3RvY29sLT5BYm9ydEFj cXVpcmVSZWRmaXNoU2VydmljZSAoDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ0VmaVJlZGZpc2hEaXNjb3ZlclByb3RvY29sLA0KPiA+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGdOZXR3b3JrSW50ZXJmYWNlSW5zdGFuY2VzDQo+ID4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gPiAgICAgIGdFZmlSZWRmaXNoRGlz Y292ZXJDb250cm9sbGVySGFuZGxlID0gTlVMTDsNCj4gPiAgICAgIGdFZmlSZWRmaXNoRGlzY292 ZXJQcm90b2NvbCAgICAgICAgID0gTlVMTDsNCj4gPiAgICAgIGdSZWRmaXNoRGlzY292ZXJBY3Rp dmF0ZWQgICAgICAgICAgID0gRkFMU0U7DQo+ID4gQEAgLTMxOCwzNiArMzA1LDM5IEBAIFJlZGZp c2hTZXJ2aWNlRGlzY292ZXJlZENhbGxiYWNrICgNCj4gPiAgICBFRklfUkVERklTSF9ESVNDT1ZF UkVEX1RPS0VOICAgICAqUmVkZmlzaERpc2NvdmVyZWRUb2tlbjsNCj4gPiAgICBFRklfUkVERklT SF9ESVNDT1ZFUkVEX0lOU1RBTkNFICAqUmVkZmlzaEluc3RhbmNlOw0KPiA+DQo+ID4gLSAgaWYg KGdSZWRmaXNoU2VydmljZURpc2NvdmVyZWQpIHsNCj4gPiAtICAgIC8vDQo+ID4gLSAgICAvLyBP bmx5IHN1cHBvcnQgb25lIFJlZGZpc2ggc2VydmljZSBvbiBwbGF0Zm9ybS4NCj4gPiAtICAgIC8v DQo+ID4gLSAgICByZXR1cm47DQo+ID4gLSAgfQ0KPiA+IC0NCj4gPiAgICBSZWRmaXNoRGlzY292 ZXJlZFRva2VuID0gKEVGSV9SRURGSVNIX0RJU0NPVkVSRURfVE9LRU4gKilDb250ZXh0Ow0KPiA+ IC0gIFJlZGZpc2hJbnN0YW5jZSAgICAgICAgPSBSZWRmaXNoRGlzY292ZXJlZFRva2VuLQ0KPiA+ ID5EaXNjb3Zlckxpc3QuUmVkZmlzaEluc3RhbmNlczsNCj4gPiArICBnQlMtPkNsb3NlRXZlbnQg KFJlZGZpc2hEaXNjb3ZlcmVkVG9rZW4tPkV2ZW50KTsNCj4gPiArDQo+ID4gICAgLy8NCj4gPiAt ICAvLyBPbmx5IHBpY2sgdXAgdGhlIGZpcnN0IGZvdW5kIFJlZGZpc2ggc2VydmljZS4NCj4gPiAr ICAvLyBPbmx5IHN1cHBvcnQgb25lIFJlZGZpc2ggc2VydmljZSBvbiBwbGF0Zm9ybS4NCj4gPiAg ICAvLw0KPiA+IC0gIGlmIChSZWRmaXNoSW5zdGFuY2UtPlN0YXR1cyA9PSBFRklfU1VDQ0VTUykg ew0KPiA+IC0gICAgZ1JlZGZpc2hDb25maWdEYXRhLlJlZGZpc2hTZXJ2aWNlSW5mby5SZWRmaXNo U2VydmljZVJlc3RFeEhhbmRsZSA9DQo+ID4gUmVkZmlzaEluc3RhbmNlLT5JbmZvcm1hdGlvbi5S ZWRmaXNoUmVzdEV4SGFuZGxlOw0KPiA+IC0gICAgZ1JlZGZpc2hDb25maWdEYXRhLlJlZGZpc2hT ZXJ2aWNlSW5mby5SZWRmaXNoU2VydmljZVZlcnNpb24gICAgICA9DQo+ID4gUmVkZmlzaEluc3Rh bmNlLT5JbmZvcm1hdGlvbi5SZWRmaXNoVmVyc2lvbjsNCj4gPiAtICAgIGdSZWRmaXNoQ29uZmln RGF0YS5SZWRmaXNoU2VydmljZUluZm8uUmVkZmlzaFNlcnZpY2VMb2NhdGlvbiAgICAgPQ0KPiA+ IFJlZGZpc2hJbnN0YW5jZS0+SW5mb3JtYXRpb24uTG9jYXRpb247DQo+ID4gLSAgICBnUmVkZmlz aENvbmZpZ0RhdGEuUmVkZmlzaFNlcnZpY2VJbmZvLlJlZGZpc2hTZXJ2aWNlVXVpZCAgICAgICAg ID0NCj4gPiBSZWRmaXNoSW5zdGFuY2UtPkluZm9ybWF0aW9uLlV1aWQ7DQo+ID4gLSAgICBnUmVk ZmlzaENvbmZpZ0RhdGEuUmVkZmlzaFNlcnZpY2VJbmZvLlJlZGZpc2hTZXJ2aWNlT3MgICAgICAg ICAgID0NCj4gPiBSZWRmaXNoSW5zdGFuY2UtPkluZm9ybWF0aW9uLk9zOw0KPiA+IC0gICAgZ1Jl ZGZpc2hDb25maWdEYXRhLlJlZGZpc2hTZXJ2aWNlSW5mby5SZWRmaXNoU2VydmljZU9zVmVyc2lv biAgICA9DQo+ID4gUmVkZmlzaEluc3RhbmNlLT5JbmZvcm1hdGlvbi5Pc1ZlcnNpb247DQo+ID4g LSAgICBnUmVkZmlzaENvbmZpZ0RhdGEuUmVkZmlzaFNlcnZpY2VJbmZvLlJlZGZpc2hTZXJ2aWNl UHJvZHVjdCAgICAgID0NCj4gPiBSZWRmaXNoSW5zdGFuY2UtPkluZm9ybWF0aW9uLlByb2R1Y3Q7 DQo+ID4gLSAgICBnUmVkZmlzaENvbmZpZ0RhdGEuUmVkZmlzaFNlcnZpY2VJbmZvLlJlZGZpc2hT ZXJ2aWNlUHJvZHVjdFZlciAgID0NCj4gPiBSZWRmaXNoSW5zdGFuY2UtPkluZm9ybWF0aW9uLlBy b2R1Y3RWZXI7DQo+ID4gLSAgICBnUmVkZmlzaENvbmZpZ0RhdGEuUmVkZmlzaFNlcnZpY2VJbmZv LlJlZGZpc2hTZXJ2aWNlVXNlSHR0cHMgICAgID0NCj4gPiBSZWRmaXNoSW5zdGFuY2UtPkluZm9y bWF0aW9uLlVzZUh0dHBzOw0KPiA+IC0gICAgZ1JlZGZpc2hTZXJ2aWNlRGlzY292ZXJlZCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFRSVUU7DQo+ID4gKyAgaWYgKCFn UmVkZmlzaFNlcnZpY2VEaXNjb3ZlcmVkKSB7DQo+ID4gKyAgICBSZWRmaXNoSW5zdGFuY2UgICAg ICAgID0gUmVkZmlzaERpc2NvdmVyZWRUb2tlbi0NCj4gPiA+RGlzY292ZXJMaXN0LlJlZGZpc2hJ bnN0YW5jZXM7DQo+ID4gKyAgICAvLw0KPiA+ICsgICAgLy8gT25seSBwaWNrIHVwIHRoZSBmaXJz dCBmb3VuZCBSZWRmaXNoIHNlcnZpY2UuDQo+ID4gKyAgICAvLw0KPiA+ICsgICAgaWYgKFJlZGZp c2hJbnN0YW5jZS0+U3RhdHVzID09IEVGSV9TVUNDRVNTKSB7DQo+ID4gKw0KPiA+ICsgZ1JlZGZp c2hDb25maWdEYXRhLlJlZGZpc2hTZXJ2aWNlSW5mby5SZWRmaXNoU2VydmljZVJlc3RFeEhhbmRs ZSA9DQo+ID4gUmVkZmlzaEluc3RhbmNlLT5JbmZvcm1hdGlvbi5SZWRmaXNoUmVzdEV4SGFuZGxl Ow0KPiA+ICsgICAgICBnUmVkZmlzaENvbmZpZ0RhdGEuUmVkZmlzaFNlcnZpY2VJbmZvLlJlZGZp c2hTZXJ2aWNlVmVyc2lvbiAgICAgID0NCj4gPiBSZWRmaXNoSW5zdGFuY2UtPkluZm9ybWF0aW9u LlJlZGZpc2hWZXJzaW9uOw0KPiA+ICsgICAgICBnUmVkZmlzaENvbmZpZ0RhdGEuUmVkZmlzaFNl cnZpY2VJbmZvLlJlZGZpc2hTZXJ2aWNlTG9jYXRpb24gICAgID0NCj4gPiBSZWRmaXNoSW5zdGFu Y2UtPkluZm9ybWF0aW9uLkxvY2F0aW9uOw0KPiA+ICsgICAgICBnUmVkZmlzaENvbmZpZ0RhdGEu UmVkZmlzaFNlcnZpY2VJbmZvLlJlZGZpc2hTZXJ2aWNlVXVpZCAgICAgICAgID0NCj4gPiBSZWRm aXNoSW5zdGFuY2UtPkluZm9ybWF0aW9uLlV1aWQ7DQo+ID4gKyAgICAgIGdSZWRmaXNoQ29uZmln RGF0YS5SZWRmaXNoU2VydmljZUluZm8uUmVkZmlzaFNlcnZpY2VPcyAgICAgICAgICAgPQ0KPiA+ IFJlZGZpc2hJbnN0YW5jZS0+SW5mb3JtYXRpb24uT3M7DQo+ID4gKyAgICAgIGdSZWRmaXNoQ29u ZmlnRGF0YS5SZWRmaXNoU2VydmljZUluZm8uUmVkZmlzaFNlcnZpY2VPc1ZlcnNpb24gICAgPQ0K PiA+IFJlZGZpc2hJbnN0YW5jZS0+SW5mb3JtYXRpb24uT3NWZXJzaW9uOw0KPiA+ICsgICAgICBn UmVkZmlzaENvbmZpZ0RhdGEuUmVkZmlzaFNlcnZpY2VJbmZvLlJlZGZpc2hTZXJ2aWNlUHJvZHVj dCAgICAgID0NCj4gPiBSZWRmaXNoSW5zdGFuY2UtPkluZm9ybWF0aW9uLlByb2R1Y3Q7DQo+ID4g KyAgICAgIGdSZWRmaXNoQ29uZmlnRGF0YS5SZWRmaXNoU2VydmljZUluZm8uUmVkZmlzaFNlcnZp Y2VQcm9kdWN0VmVyICAgPQ0KPiA+IFJlZGZpc2hJbnN0YW5jZS0+SW5mb3JtYXRpb24uUHJvZHVj dFZlcjsNCj4gPiArICAgICAgZ1JlZGZpc2hDb25maWdEYXRhLlJlZGZpc2hTZXJ2aWNlSW5mby5S ZWRmaXNoU2VydmljZVVzZUh0dHBzICAgICA9DQo+ID4gUmVkZmlzaEluc3RhbmNlLT5JbmZvcm1h dGlvbi5Vc2VIdHRwczsNCj4gPiArICAgICAgZ1JlZGZpc2hTZXJ2aWNlRGlzY292ZXJlZCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFRSVUU7DQo+ID4gKyAgICB9DQo+ ID4gKw0KPiA+ICsgICAgLy8NCj4gPiArICAgIC8vIEludm9rZSBSZWRmaXNoQ29uZmlnSGFuZGxl ckluc3RhbGxlZENhbGxiYWNrIHRvIGV4ZWN1dGUNCj4gPiArICAgIC8vIHRoZSBpbml0aWFsaXph dGlvbiBvZiBSZWRmaXNoIENvbmZpZ3VyZSBIYW5kbGVyIGluc3RhbmNlLg0KPiA+ICsgICAgLy8N Cj4gPiArICAgIFJlZGZpc2hDb25maWdIYW5kbGVySW5zdGFsbGVkQ2FsbGJhY2sgKGdSZWRmaXNo Q29uZmlnRGF0YS5FdmVudCwNCj4gPiArICZnUmVkZmlzaENvbmZpZ0RhdGEpOw0KPiA+ICAgIH0N Cj4gPg0KPiA+IC0gIC8vDQo+ID4gLSAgLy8gSW52b2tlIFJlZGZpc2hDb25maWdIYW5kbGVySW5z dGFsbGVkQ2FsbGJhY2sgdG8gZXhlY3V0ZQ0KPiA+IC0gIC8vIHRoZSBpbml0aWFsaXphdGlvbiBv ZiBSZWRmaXNoIENvbmZpZ3VyZSBIYW5kbGVyIGluc3RhbmNlLg0KPiA+IC0gIC8vDQo+ID4gLSAg UmVkZmlzaENvbmZpZ0hhbmRsZXJJbnN0YWxsZWRDYWxsYmFjayAoZ1JlZGZpc2hDb25maWdEYXRh LkV2ZW50LA0KPiA+ICZnUmVkZmlzaENvbmZpZ0RhdGEpOw0KPiA+ICsgIEZyZWVQb29sKFJlZGZp c2hEaXNjb3ZlcmVkVG9rZW4pOw0KPiA+ICsNCj4gPiAgfQ0KPiA+DQo+ID4gIC8qKg0KPiA+IEBA IC0zNzEsNiArMzYxLDcgQEAgUmVkZmlzaERpc2NvdmVyUHJvdG9jb2xJbnN0YWxsZWQgKA0KPiA+ ICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXR3b3JrSW50ZXJm YWNlSW5kZXg7DQo+ID4gICAgRUZJX1JFREZJU0hfRElTQ09WRVJfTkVUV09SS19JTlRFUkZBQ0Ug ICpUaGlzTmV0d29ya0ludGVyZmFjZTsNCj4gPiAgICBFRklfUkVERklTSF9ESVNDT1ZFUkVEX1RP S0VOICAgICAgICAgICAgKlRoaXNSZWRmaXNoRGlzY292ZXJlZFRva2VuOw0KPiA+ICsgIFVJTlRO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOdW1iZXJPZk5ldHdvcmtJbnRlcmZh Y2VzOw0KPiA+DQo+ID4gICAgREVCVUcgKChERUJVR19JTkZPLCAiJWE6IE5ldyBuZXR3b3JrIGlu dGVyZmFjZSBpcyBpbnN0YWxsZWQgb24NCj4gPiBzeXN0ZW0gYnkgRUZJIFJlZGZpc2ggZGlzY292 ZXIgZHJpdmVyLlxuIiwgX19mdW5jX18pKTsNCj4gPg0KPiA+IEBAIC00MDgsMzYgKzM5OSwzMSBA QCBSZWRmaXNoRGlzY292ZXJQcm90b2NvbEluc3RhbGxlZCAoDQo+ID4gICAgICB9DQo+ID4gICAg fQ0KPiA+DQo+ID4gLSAgLy8NCj4gPiAtICAvLyBDaGVjayB0aGUgbmV3IGZvdW5kIG5ldHdvcmsg aW50ZXJmYWNlLg0KPiA+IC0gIC8vDQo+ID4gLSAgaWYgKGdOZXR3b3JrSW50ZXJmYWNlSW5zdGFu Y2VzICE9IE5VTEwpIHsNCj4gPiAtICAgIEZyZWVQb29sIChnTmV0d29ya0ludGVyZmFjZUluc3Rh bmNlcyk7DQo+ID4gLSAgfQ0KPiA+DQo+ID4gICAgU3RhdHVzID0gZ0VmaVJlZGZpc2hEaXNjb3Zl clByb3RvY29sLT5HZXROZXR3b3JrSW50ZXJmYWNlTGlzdCAoDQo+ID4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdFZmlSZWRmaXNoRGlzY292ZXJQcm90b2NvbCwN Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ1JlZGZpc2hD b25maWdEYXRhLkltYWdlLA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmZ051bWJlck9mTmV0d29ya0ludGVyZmFjZXMsDQo+ID4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZnTmV0d29ya0ludGVyZmFjZUluc3RhbmNlcw0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmTnVtYmVyT2ZO ZXR3b3JrSW50ZXJmYWNlcywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJlRoaXNOZXR3b3JrSW50ZXJmYWNlDQo+ID4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICk7DQo+ID4gLSAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSB8 fCAoZ051bWJlck9mTmV0d29ya0ludGVyZmFjZXMgPT0gMCkpIHsNCj4gPiArICBpZiAoRUZJX0VS Uk9SIChTdGF0dXMpIHx8IChOdW1iZXJPZk5ldHdvcmtJbnRlcmZhY2VzID09IDApKSB7DQo+ID4g ICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IE5vIG5ldHdvcmsgaW50ZXJmYWNlcyBmb3Vu ZCBvbiB0aGUNCj4gPiBoYW5kbGUuXG4iLCBfX2Z1bmNfXykpOw0KPiA+ICAgICAgcmV0dXJuOw0K PiA+ICAgIH0NCj4gPg0KPiA+IC0gIGdSZWRmaXNoRGlzY292ZXJlZFRva2VuID0gQWxsb2NhdGVa ZXJvUG9vbA0KPiA+IChnTnVtYmVyT2ZOZXR3b3JrSW50ZXJmYWNlcyAqIHNpemVvZg0KPiAoRUZJ X1JFREZJU0hfRElTQ09WRVJFRF9UT0tFTikpOw0KPiA+IC0gIGlmIChnUmVkZmlzaERpc2NvdmVy ZWRUb2tlbiA9PSBOVUxMKSB7DQo+ID4gKyAgLy8NCj4gPiArICAvLyBMb29wIHRvIGRpc2NvdmVy IFJlZGZpc2ggc2VydmljZSBvbiBlYWNoIG5ldHdvcmsgaW50ZXJmYWNlLg0KPiA+ICsgIC8vDQo+ ID4gKyAgZm9yIChOZXR3b3JrSW50ZXJmYWNlSW5kZXggPSAwOyBOZXR3b3JrSW50ZXJmYWNlSW5k ZXggPA0KPiA+ICsgTnVtYmVyT2ZOZXR3b3JrSW50ZXJmYWNlczsgTmV0d29ya0ludGVyZmFjZUlu ZGV4KyspIHsNCj4gPiArDQo+ID4gKyAgICBUaGlzUmVkZmlzaERpc2NvdmVyZWRUb2tlbiA9IChF RklfUkVERklTSF9ESVNDT1ZFUkVEX1RPS0VODQo+ID4gKilBbGxvY2F0ZVplcm9Qb29sKHNpemVv ZiAoRUZJX1JFREZJU0hfRElTQ09WRVJFRF9UT0tFTikpOw0KPiA+ICsgICAgaWYgKFRoaXNSZWRm aXNoRGlzY292ZXJlZFRva2VuID09IE5VTEwpIHsNCj4gPiAgICAgIERFQlVHICgoREVCVUdfRVJS T1IsICIlYTogTm90IGVub3VnaCBtZW1vcnkgZm9yDQo+ID4gRUZJX1JFREZJU0hfRElTQ09WRVJF RF9UT0tFTi5cbiIsIF9fZnVuY19fKSk7DQo+ID4gICAgICByZXR1cm47DQo+ID4gICAgfQ0KPiA+ DQo+ID4gLSAgVGhpc05ldHdvcmtJbnRlcmZhY2UgICAgICAgPSBnTmV0d29ya0ludGVyZmFjZUlu c3RhbmNlczsNCj4gPiAtICBUaGlzUmVkZmlzaERpc2NvdmVyZWRUb2tlbiA9IGdSZWRmaXNoRGlz Y292ZXJlZFRva2VuOw0KPiA+IC0gIC8vDQo+ID4gLSAgLy8gTG9vcCB0byBkaXNjb3ZlciBSZWRm aXNoIHNlcnZpY2Ugb24gZWFjaCBuZXR3b3JrIGludGVyZmFjZS4NCj4gPiAtICAvLw0KPiA+IC0g IGZvciAoTmV0d29ya0ludGVyZmFjZUluZGV4ID0gMDsgTmV0d29ya0ludGVyZmFjZUluZGV4IDwN Cj4gPiBnTnVtYmVyT2ZOZXR3b3JrSW50ZXJmYWNlczsgTmV0d29ya0ludGVyZmFjZUluZGV4Kysp IHsNCj4gPiArICAgIFRoaXNSZWRmaXNoRGlzY292ZXJlZFRva2VuLT5TaWduYXR1cmUgPQ0KPiA+ ICsgUkVERklTSF9ESVNDT1ZFUl9UT0tFTl9TSUdOQVRVUkU7DQo+ID4gKw0KPiA+ICAgICAgLy8N Cj4gPiAgICAgIC8vIEluaXRpYWwgdGhpcyBSZWRmaXNoIERpc2NvdmVyZWQgVG9rZW4NCj4gPiAg ICAgIC8vDQo+ID4gQEAgLTQ0OSwxMyArNDM1LDExIEBAIFJlZGZpc2hEaXNjb3ZlclByb3RvY29s SW5zdGFsbGVkICgNCj4gPiAgICAgICAgICAgICAgICAgICAgICAmVGhpc1JlZGZpc2hEaXNjb3Zl cmVkVG9rZW4tPkV2ZW50DQo+ID4gICAgICAgICAgICAgICAgICAgICAgKTsNCj4gPiAgICAgIGlm IChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgICAgRnJlZVBvb2woVGhpc1JlZGZpc2hE aXNjb3ZlcmVkVG9rZW4pOw0KPiA+ICAgICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IEZh aWxlZCB0byBjcmVhdGUgZXZlbnQgZm9yIFJlZGZpc2gNCj4gPiBkaXNjb3ZlcmVkIHRva2VuLlxu IiwgX19mdW5jX18pKTsNCj4gPiAtICAgICAgZ290byBFcnJvclJldHVybjsNCj4gPiArICAgICAg cmV0dXJuOw0KPiA+ICAgICAgfQ0KPiA+DQo+ID4gLSAgICBUaGlzUmVkZmlzaERpc2NvdmVyZWRU b2tlbi0+U2lnbmF0dXJlICAgICAgICAgICAgICAgICAgICAgICAgID0NCj4gPiBSRURGSVNIX0RJ U0NPVkVSX1RPS0VOX1NJR05BVFVSRTsNCj4gPiAtICAgIFRoaXNSZWRmaXNoRGlzY292ZXJlZFRv a2VuLT5EaXNjb3Zlckxpc3QuTnVtYmVyT2ZTZXJ2aWNlRm91bmQgPSAwOw0KPiA+IC0gICAgVGhp c1JlZGZpc2hEaXNjb3ZlcmVkVG9rZW4tPkRpc2NvdmVyTGlzdC5SZWRmaXNoSW5zdGFuY2VzICAg ICA9IE5VTEw7DQo+ID4gICAgICAvLw0KPiA+ICAgICAgLy8gQWNxdWlyZSBmb3IgUmVkZmlzaCBz ZXJ2aWNlIHdoaWNoIGlzIHJlcG9ydGVkIGJ5DQo+ID4gICAgICAvLyBSZWRmaXNoIEhvc3QgSW50 ZXJmYWNlLg0KPiA+IEBAIC00NjcsMjEgKzQ1MSwyMyBAQCBSZWRmaXNoRGlzY292ZXJQcm90b2Nv bEluc3RhbGxlZCAoDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRUZJX1JFREZJU0hfRElTQ09WRVJfSE9TVF9JTlRFUkZBQ0UsDQo+ID4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpc1JlZGZpc2hEaXNjb3ZlcmVk VG9rZW4NCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAp Ow0KPiA+IC0gICAgVGhpc05ldHdvcmtJbnRlcmZhY2UrKzsNCj4gPiAtICAgIFRoaXNSZWRmaXNo RGlzY292ZXJlZFRva2VuKys7DQo+ID4gLSAgfQ0KPiA+DQo+ID4gLSAgaWYgKEVGSV9FUlJPUiAo U3RhdHVzKSkgew0KPiA+IC0gICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOiBBY3F1aXJlIFJl ZGZpc2ggc2VydmljZSBmYWlsLlxuIiwNCj4gX19mdW5jX18pKTsNCj4gPiAtICAgIGdvdG8gRXJy b3JSZXR1cm47DQo+ID4gKyAgICAvLw0KPiA+ICsgICAgLy8gRnJlZSBSZWRmaXNoIERpc2NvdmVy ZWQgVG9rZW4gaWYgRGlzY292ZXIgSW5zdGFuY2Ugd2FzIG5vdA0KPiA+ICsgY3JlYXRlZA0KPiA+ IGFuZA0KPiA+ICsgICAgLy8gUmVkZmlzaCBTZXJ2aWNlIERpc2NvdmVyZWQgQ2FsbGJhY2sgZXZl bnQgd2FzIG5vdCB0cmlnZ2VyZWQuDQo+ID4gKyAgICAvLw0KPiA+ICsgICAgaWYoVGhpc1JlZGZp c2hEaXNjb3ZlcmVkVG9rZW4tPkRpc2NvdmVyTGlzdC5OdW1iZXJPZlNlcnZpY2VGb3VuZA0KPiA+ ICsgPT0NCj4gPiAwIHx8DQo+ID4gKyAgICAgICAgRUZJX0VSUk9SKFRoaXNSZWRmaXNoRGlzY292 ZXJlZFRva2VuLQ0KPiA+ID5EaXNjb3Zlckxpc3QuUmVkZmlzaEluc3RhbmNlcy0+U3RhdHVzKSl7 DQo+ID4gKyAgICAgIGdCUy0+Q2xvc2VFdmVudCAoVGhpc1JlZGZpc2hEaXNjb3ZlcmVkVG9rZW4t PkV2ZW50KTsNCj4gPiArICAgICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOiBGcmVlIFJlZGZp c2ggZGlzY292ZXJlZCB0b2tlbiAtICV4LlxuIiwNCj4gPiArICAgICAgICAgIF9fZnVuY19fLCBU aGlzUmVkZmlzaERpc2NvdmVyZWRUb2tlbikpOw0KPiA+ICsgICAgICBGcmVlUG9vbChUaGlzUmVk ZmlzaERpc2NvdmVyZWRUb2tlbik7DQo+ID4gKyAgICB9DQo+ID4gKyAgICBUaGlzTmV0d29ya0lu dGVyZmFjZSsrOw0KPiA+ICAgIH0NCj4gPg0KPiA+ICAgIHJldHVybjsNCj4gPg0KPiA+IC1FcnJv clJldHVybjoNCj4gPiAtICBpZiAoZ1JlZGZpc2hEaXNjb3ZlcmVkVG9rZW4gIT0gTlVMTCkgew0K PiA+IC0gICAgRnJlZVBvb2wgKGdSZWRmaXNoRGlzY292ZXJlZFRva2VuKTsNCj4gPiAtICB9DQo+ ID4gIH0NCj4gPg0KPiA+ICAvKioNCj4gPiBAQCAtNDk4LDI1ICs0ODQsMTAgQEAgUmVkZmlzaENv bmZpZ0hhbmRsZXJEcml2ZXJVbmxvYWQgKA0KPiA+ICAgIElOIEVGSV9IQU5ETEUgIEltYWdlSGFu ZGxlDQo+ID4gICAgKQ0KPiA+ICB7DQo+ID4gLSAgRUZJX1JFREZJU0hfRElTQ09WRVJFRF9UT0tF TiAgKlRoaXNSZWRmaXNoRGlzY292ZXJlZFRva2VuOw0KPiA+IC0gIFVJTlROICAgICAgICAgICAg ICAgICAgICAgICAgIE51bWJlck9mTmV0d29ya0ludGVyZmFjZXNJbmRleDsNCj4gPg0KPiA+ICAg IFJlZGZpc2hDb25maWdEcml2ZXJDb21tb25VbmxvYWQgKEltYWdlSGFuZGxlKTsNCj4gPg0KPiA+ ICAgIFJlZGZpc2hDb25maWdTdG9wUmVkZmlzaERpc2NvdmVyeSAoKTsNCj4gPiAtICBpZiAoZ1Jl ZGZpc2hEaXNjb3ZlcmVkVG9rZW4gIT0gTlVMTCkgew0KPiA+IC0gICAgVGhpc1JlZGZpc2hEaXNj b3ZlcmVkVG9rZW4gPSBnUmVkZmlzaERpc2NvdmVyZWRUb2tlbjsNCj4gPiAtICAgIGZvciAoTnVt YmVyT2ZOZXR3b3JrSW50ZXJmYWNlc0luZGV4ID0gMDsNCj4gPiBOdW1iZXJPZk5ldHdvcmtJbnRl cmZhY2VzSW5kZXggPCBnTnVtYmVyT2ZOZXR3b3JrSW50ZXJmYWNlczsNCj4gPiBOdW1iZXJPZk5l dHdvcmtJbnRlcmZhY2VzSW5kZXgrKykgew0KPiA+IC0gICAgICBpZiAoVGhpc1JlZGZpc2hEaXNj b3ZlcmVkVG9rZW4tPkV2ZW50ICE9IE5VTEwpIHsNCj4gPiAtICAgICAgICBnQlMtPkNsb3NlRXZl bnQgKFRoaXNSZWRmaXNoRGlzY292ZXJlZFRva2VuLT5FdmVudCk7DQo+ID4gLSAgICAgIH0NCj4g PiAtDQo+ID4gLSAgICAgIEZyZWVQb29sIChUaGlzUmVkZmlzaERpc2NvdmVyZWRUb2tlbik7DQo+ ID4gLSAgICAgIFRoaXNSZWRmaXNoRGlzY292ZXJlZFRva2VuKys7DQo+ID4gLSAgICB9DQo+ID4g LQ0KPiA+IC0gICAgZ1JlZGZpc2hEaXNjb3ZlcmVkVG9rZW4gPSBOVUxMOw0KPiA+IC0gIH0NCj4g Pg0KPiA+ICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiAgfQ0KPiA+IGRpZmYgLS1naXQgYS9S ZWRmaXNoUGtnL1JlZGZpc2hEaXNjb3ZlckR4ZS9SZWRmaXNoRGlzY292ZXJEeGUuYw0KPiA+IGIv UmVkZmlzaFBrZy9SZWRmaXNoRGlzY292ZXJEeGUvUmVkZmlzaERpc2NvdmVyRHhlLmMNCj4gPiBp bmRleCA1ODNjNmY3Li5hNmM4ZDYwIDEwMDY0NA0KPiA+IC0tLSBhL1JlZGZpc2hQa2cvUmVkZmlz aERpc2NvdmVyRHhlL1JlZGZpc2hEaXNjb3ZlckR4ZS5jDQo+ID4gKysrIGIvUmVkZmlzaFBrZy9S ZWRmaXNoRGlzY292ZXJEeGUvUmVkZmlzaERpc2NvdmVyRHhlLmMNCj4gPiBAQCAtMTA5NSw4ICsx MDk1LDEwIEBAIFJlZGZpc2hTZXJ2aWNlR2V0TmV0d29ya0ludGVyZmFjZSAoICB7DQo+ID4gICAg RUZJX1JFREZJU0hfRElTQ09WRVJfTkVUV09SS19JTlRFUkZBQ0VfSU5URVJOQUwNCj4gPiAqVGhp c05ldHdvcmtJbnRlcmZhY2VJbnRuOw0KPiA+ICAgIEVGSV9SRURGSVNIX0RJU0NPVkVSX05FVFdP UktfSU5URVJGQUNFDQo+ID4gKlRoaXNOZXR3b3JrSW50ZXJmYWNlOw0KPiA+ICsgIEVGSV9SRURG SVNIX0RJU0NPVkVSX1JFU1RfRVhfSU5TVEFOQ0VfSU5URVJOQUwNCj4gKlJlc3RFeEluc3RhbmNl Ow0KPiA+DQo+ID4gLSAgaWYgKChOZXR3b3JrSW50Zkluc3RhbmNlcyA9PSBOVUxMKSB8fCAoTnVt YmVyT2ZOZXR3b3JrSW50ZnMgPT0NCj4gPiBOVUxMKQ0KPiA+IHx8IChJbWFnZUhhbmRsZSA9PSBO VUxMKSkgew0KPiA+ICsgIGlmICgoVGhpcyA9PSBOVUxMKSB8fCAoTmV0d29ya0ludGZJbnN0YW5j ZXMgPT0gTlVMTCkgfHwNCj4gPiAoTnVtYmVyT2ZOZXR3b3JrSW50ZnMgPT0gTlVMTCkgfHwNCj4g PiArICAgICAgKEltYWdlSGFuZGxlID09IE5VTEwpKSB7DQo+ID4gICAgICByZXR1cm4gRUZJX0lO VkFMSURfUEFSQU1FVEVSOw0KPiA+ICAgIH0NCj4gPg0KPiA+IEBAIC0xMTA3LDE0ICsxMTA5LDMw IEBAIFJlZGZpc2hTZXJ2aWNlR2V0TmV0d29ya0ludGVyZmFjZSAoDQo+ID4gICAgICByZXR1cm4g RUZJX05PVF9GT1VORDsNCj4gPiAgICB9DQo+ID4NCj4gPiArICBSZXN0RXhJbnN0YW5jZSA9DQo+ ID4gKyBFRklfUkVERklTSF9ESVNPVkVSX0RBVEFfRlJPTV9ESVNDT1ZFUl9QUk9UT0NPTChUaGlz KTsNCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBDaGVjayB0aGUgbmV3IGZvdW5kIG5ldHdv cmsgaW50ZXJmYWNlLg0KPiA+ICsgIC8vDQo+ID4gKyAgaWYgKFJlc3RFeEluc3RhbmNlLT5OZXR3 b3JrSW50ZXJmYWNlSW5zdGFuY2VzICE9IE5VTEwpIHsNCj4gPiArICAgIEZyZWVQb29sIChSZXN0 RXhJbnN0YW5jZS0+TmV0d29ya0ludGVyZmFjZUluc3RhbmNlcyk7DQo+ID4gKyAgICBSZXN0RXhJ bnN0YW5jZS0+TmV0d29ya0ludGVyZmFjZUluc3RhbmNlcyA9IE5VTEw7ICB9DQo+ID4gKw0KPiA+ ICAgIFRoaXNOZXR3b3JrSW50ZXJmYWNlID0gKEVGSV9SRURGSVNIX0RJU0NPVkVSX05FVFdPUktf SU5URVJGQUNFDQo+ID4gKilBbGxvY2F0ZVplcm9Qb29sIChzaXplb2YNCj4gKEVGSV9SRURGSVNI X0RJU0NPVkVSX05FVFdPUktfSU5URVJGQUNFKQ0KPiA+ICogbU51bU5ldHdvcmtJbnRlcmZhY2Up Ow0KPiA+ICAgIGlmIChUaGlzTmV0d29ya0ludGVyZmFjZSA9PSBOVUxMKSB7DQo+ID4gICAgICBy ZXR1cm4gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ID4gICAgfQ0KPiA+DQo+ID4gICAgKk5ldHdv cmtJbnRmSW5zdGFuY2VzICAgID0gVGhpc05ldHdvcmtJbnRlcmZhY2U7DQo+ID4gKw0KPiA+ICsN Cj4gPiArICBSZXN0RXhJbnN0YW5jZS0+TmV0d29ya0ludGVyZmFjZUluc3RhbmNlcyA9IFRoaXNO ZXR3b3JrSW50ZXJmYWNlOw0KPiA+ICsgUmVzdEV4SW5zdGFuY2UtPk51bWJlck9mTmV0d29ya0lu dGVyZmFjZXMgPSAwOw0KPiA+ICsNCj4gPiAgICBUaGlzTmV0d29ya0ludGVyZmFjZUludG4gPQ0K PiA+IChFRklfUkVERklTSF9ESVNDT1ZFUl9ORVRXT1JLX0lOVEVSRkFDRV9JTlRFUk5BTA0KPiAq KUdldEZpcnN0Tm9kZQ0KPiA+ICgmbUVmaVJlZGZpc2hEaXNjb3Zlck5ldHdvcmtJbnRlcmZhY2Up Ow0KPiA+ICAgIHdoaWxlIChUUlVFKSB7DQo+ID4gKw0KPiA+ICAgICAgVGhpc05ldHdvcmtJbnRl cmZhY2UtPklzSXB2NiA9IEZBTFNFOw0KPiA+ICAgICAgaWYgKENoZWNrSXNJcFZlcnNpb242IChU aGlzTmV0d29ya0ludGVyZmFjZUludG4pKSB7DQo+ID4gICAgICAgIFRoaXNOZXR3b3JrSW50ZXJm YWNlLT5Jc0lwdjYgPSBUUlVFOyBAQCAtMTEzMCw3ICsxMTQ4LDcgQEANCj4gPiBSZWRmaXNoU2Vy dmljZUdldE5ldHdvcmtJbnRlcmZhY2UgKA0KPiA+DQo+ID4gICAgICBUaGlzTmV0d29ya0ludGVy ZmFjZS0+U3VibmV0UHJlZml4TGVuZ3RoID0NCj4gPiBUaGlzTmV0d29ya0ludGVyZmFjZUludG4t DQo+ID4gPlN1Ym5ldFByZWZpeExlbmd0aDsNCj4gPiAgICAgIFRoaXNOZXR3b3JrSW50ZXJmYWNl LT5WbGFuSWQgICAgICAgICAgICAgPSBUaGlzTmV0d29ya0ludGVyZmFjZUludG4tDQo+ID5WbGFu SWQ7DQo+ID4gLSAgICAoKk51bWJlck9mTmV0d29ya0ludGZzKSsrOw0KPiA+ICsgICAgUmVzdEV4 SW5zdGFuY2UtPk51bWJlck9mTmV0d29ya0ludGVyZmFjZXMrKzsNCj4gPiAgICAgIGlmIChJc05v ZGVBdEVuZCAoJm1FZmlSZWRmaXNoRGlzY292ZXJOZXR3b3JrSW50ZXJmYWNlLA0KPiA+ICZUaGlz TmV0d29ya0ludGVyZmFjZUludG4tPkVudHJ5KSkgew0KPiA+ICAgICAgICBicmVhazsNCj4gPiAg ICAgIH0NCj4gPiBAQCAtMTEzOSw2ICsxMTU3LDggQEAgUmVkZmlzaFNlcnZpY2VHZXROZXR3b3Jr SW50ZXJmYWNlICgNCj4gPiAgICAgIFRoaXNOZXR3b3JrSW50ZXJmYWNlKys7DQo+ID4gICAgfQ0K PiA+DQo+ID4gKyAgKk51bWJlck9mTmV0d29ya0ludGZzID0gUmVzdEV4SW5zdGFuY2UtDQo+ID4g Pk51bWJlck9mTmV0d29ya0ludGVyZmFjZXM7DQo+ID4gKw0KPiA+ICAgIHJldHVybiBFRklfU1VD Q0VTUzsNCj4gPiAgfQ0KPiA+DQo+ID4gQEAgLTExNzgsNyArMTE5OCw2IEBAIFJlZGZpc2hTZXJ2 aWNlQWNxdWlyZVNlcnZpY2UgKCAgew0KPiA+ICAgIEVGSV9SRURGSVNIX0RJU0NPVkVSRURfSU5U RVJOQUxfSU5TVEFOQ0UgICAgICAgICAqSW5zdGFuY2U7DQo+ID4gICAgRUZJX1NUQVRVUyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czE7DQo+ID4gLSAgRUZJX1NU QVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czI7DQo+ID4g ICAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ld0lu c3RhbmNlOw0KPiA+ICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBOdW1OZXR3b3JrSW50ZXJmYWNlczsNCj4gPiAgICBVSU5UTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0d29ya0ludGVyZmFjZXNJbmRleDsNCj4g PiBAQCAtMTIxNSw3ICsxMjM0LDYgQEAgUmVkZmlzaFNlcnZpY2VBY3F1aXJlU2VydmljZSAoDQo+ ID4NCj4gPiAgICBmb3IgKE5ldHdvcmtJbnRlcmZhY2VzSW5kZXggPSAwOyBOZXR3b3JrSW50ZXJm YWNlc0luZGV4IDwNCj4gPiBOdW1OZXR3b3JrSW50ZXJmYWNlczsgTmV0d29ya0ludGVyZmFjZXNJ bmRleCsrKSB7DQo+ID4gICAgICBTdGF0dXMxICAgICA9IEVGSV9TVUNDRVNTOw0KPiA+IC0gICAg U3RhdHVzMiAgICAgPSBFRklfU1VDQ0VTUzsNCj4gPiAgICAgIE5ld0luc3RhbmNlID0gRkFMU0U7 DQo+ID4gICAgICBJbnN0YW5jZSAgICA9IEdldEluc3RhbmNlQnlPd25lciAoSW1hZ2VIYW5kbGUs DQo+ID4gVGFyZ2V0TmV0d29ya0ludGVyZmFjZUludGVybmFsLCBGbGFncyAmDQo+ID4gfkVGSV9S RURGSVNIX0RJU0NPVkVSX1ZBTElEQVRJT04pOyAvLyBDaGVjayBpZiB3ZSBjYW4gcmUtdXNlDQo+ IHByZXZpb3VzDQo+ID4gaW5zdGFuY2UuDQo+ID4gICAgICBpZiAoSW5zdGFuY2UgPT0gTlVMTCkg ew0KPiA+IEBAIC0xMjIzLDYgKzEyNDEsNyBAQCBSZWRmaXNoU2VydmljZUFjcXVpcmVTZXJ2aWNl ICgNCj4gPiAgICAgICAgSW5zdGFuY2UgPSAoRUZJX1JFREZJU0hfRElTQ09WRVJFRF9JTlRFUk5B TF9JTlNUQU5DRQ0KPiA+ICopQWxsb2NhdGVaZXJvUG9vbCAoc2l6ZW9mDQo+ID4gKEVGSV9SRURG SVNIX0RJU0NPVkVSRURfSU5URVJOQUxfSU5TVEFOQ0UpKTsNCj4gPiAgICAgICAgaWYgKEluc3Rh bmNlID09IE5VTEwpIHsNCj4gPiAgICAgICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6TWVt b3J5IGFsbG9jYXRpb24gZmFpbC5cbiIsDQo+ID4gX19mdW5jX18pKTsNCj4gPiArICAgICAgICBy ZXR1cm4gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQo+ID4gICAgICAgIH0NCj4gPg0KPiA+ICAgICAg ICBJbml0aWFsaXplTGlzdEhlYWQgKCZJbnN0YW5jZS0+RW50cnkpOyBAQCAtMTI1OCw5ICsxMjc3 LDExIEBADQo+ID4gUmVkZmlzaFNlcnZpY2VBY3F1aXJlU2VydmljZSAoDQo+ID4gICAgICAgIERF QlVHICgoREVCVUdfRVJST1IsICIlYTpSZWRmaXNoIHNlcnZpY2UgZGlzY292ZXJ5IHRocm91Z2gg U1NEUA0KPiA+IGlzIG5vdCBzdXBwb3J0ZWRcbiIsIF9fZnVuY19fKSk7DQo+ID4gICAgICAgIHJl dHVybiBFRklfVU5TVVBQT1JURUQ7DQo+ID4gICAgICB9IGVsc2Ugew0KPiA+IC0gICAgICBpZiAo RUZJX0VSUk9SIChTdGF0dXMxKSAmJiBFRklfRVJST1IgKFN0YXR1czIpKSB7DQo+ID4gLSAgICAg ICAgRnJlZVBvb2wgKChWT0lEICopSW5zdGFuY2UpOw0KPiA+IC0gICAgICAgIERFQlVHICgoREVC VUdfRVJST1IsICIlYTpTb21ldGhpbmcgd3Jvbmcgb24gUmVkZmlzaCBzZXJ2aWNlDQo+ID4gZGlz Y292ZXJ5IFN0YXR1czE9JXgsIFN0YXR1czI9JXguXG4iLCBfX2Z1bmNfXywgU3RhdHVzMSwgU3Rh dHVzMikpOw0KPiA+ICsgICAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMxKSkgew0KPiA+ICsgICAg ICAgIGlmIChOZXdJbnN0YW5jZSkgew0KPiA+ICsgICAgICAgICAgRnJlZVBvb2wgKChWT0lEICop SW5zdGFuY2UpOw0KPiA+ICsgICAgICAgIH0NCj4gPiArICAgICAgICBERUJVRyAoKERFQlVHX0VS Uk9SLCAiJWE6U29tZXRoaW5nIHdyb25nIG9uIFJlZGZpc2ggc2VydmljZQ0KPiA+ICsgZGlzY292 ZXJ5IFN0YXR1czE9JXIuXG4iLCBfX2Z1bmNfXywgU3RhdHVzMSkpOw0KPiA+ICAgICAgICB9IGVs c2Ugew0KPiA+ICAgICAgICAgIGlmIChOZXdJbnN0YW5jZSkgew0KPiA+ICAgICAgICAgICAgSW5z ZXJ0VGFpbExpc3QgKCZtUmVkZmlzaERpc2NvdmVyTGlzdCwgJkluc3RhbmNlLT5FbnRyeSk7DQo+ ID4gQEAgLTEzODcsMTMNCj4gPiArMTQwOCw2IEBAIFJlbGVhc2VOZXh0OjsNCj4gPiAgICB9DQo+ ID4gIH0NCj4gPg0KPiA+IC1FRklfUkVERklTSF9ESVNDT1ZFUl9QUk9UT0NPTCAgbVJlZGZpc2hE aXNjb3ZlciA9IHsNCj4gPiAtICBSZWRmaXNoU2VydmljZUdldE5ldHdvcmtJbnRlcmZhY2UsDQo+ ID4gLSAgUmVkZmlzaFNlcnZpY2VBY3F1aXJlU2VydmljZSwNCj4gPiAtICBSZWRmaXNoU2Vydmlj ZUFib3J0QWNxdWlyZSwNCj4gPiAtICBSZWRmaXNoU2VydmljZVJlbGVhc2VTZXJ2aWNlDQo+ID4g LX07DQo+ID4gLQ0KPiA+ICAvKioNCj4gPiAgICBUaGlzIGZ1bmN0aW9uIGNyZWF0ZSBhbg0KPiA+ IEVGSV9SRURGSVNIX0RJU0NPVkVSX05FVFdPUktfSU5URVJGQUNFX0lOVEVSTkFMIGZvciB0aGUN Cj4gPiAgICBnaXZlbiBuZXR3b3JrIGludGVyZmFjZS4NCj4gPiBAQCAtMTcxMywxMiArMTcyNywy MCBAQCBCdWlsZHVwTmV0d29ya0ludGVyZmFjZSAoDQo+ID4NCj4gPiAgICAgICAgICAgIE5ld05l dHdvcmtJbnRlcmZhY2VJbnN0YWxsZWQgICAgICAgICAgICAgICAgICAgICAgID0gRkFMU0U7DQo+ ID4gICAgICAgICAgICBOZXR3b3JrSW50ZXJmYWNlLT5FZmlSZWRmaXNoRGlzY292ZXJQcm90b2Nv bEhhbmRsZSA9IE5VTEw7DQo+ID4gLSAgICAgICAgICBTdGF0dXMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA9IGdCUy0+SW5zdGFsbFByb3RvY29sSW50ZXJmYWNl ICgNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICZOZXR3b3JrSW50ZXJmYWNlLQ0KPiA+ID5FZmlSZWRmaXNo RGlzY292ZXJQcm90b2NvbEhhbmRsZSwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZnRWZpUmVkZmlzaERp c2NvdmVyUHJvdG9jb2xHdWlkLA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX05BVElWRV9JTlRFUkZB Q0UsDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoVk9JRCAqKSZtUmVkZmlzaERpc2NvdmVyDQo+ID4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICApOw0KPiA+ICsNCj4gPiArICAgICAgICAgIFJlc3RFeEluc3RhbmNlLT5TaWdu YXR1cmUgPQ0KPiA+ICsgRUZJX1JFREZJU0hfRElTQ09WRVJfREFUQV9TSUdOQVRVUkU7DQo+ID4g Kw0KPiA+ICsNCj4gPiArIFJlc3RFeEluc3RhbmNlLT5SZWRmaXNoRGlzY292ZXJQcm90b2NvbC5H ZXROZXR3b3JrSW50ZXJmYWNlTGlzdCA9DQo+ID4gUmVkZmlzaFNlcnZpY2VHZXROZXR3b3JrSW50 ZXJmYWNlOw0KPiA+ICsNCj4gPiArIFJlc3RFeEluc3RhbmNlLT5SZWRmaXNoRGlzY292ZXJQcm90 b2NvbC5BY3F1aXJlUmVkZmlzaFNlcnZpY2UgPQ0KPiA+IFJlZGZpc2hTZXJ2aWNlQWNxdWlyZVNl cnZpY2U7DQo+ID4gKw0KPiA+ICsgUmVzdEV4SW5zdGFuY2UtPlJlZGZpc2hEaXNjb3ZlclByb3Rv Y29sLkFib3J0QWNxdWlyZVJlZGZpc2hTZXJ2aWNlDQo+ID4gPSBSZWRmaXNoU2VydmljZUFib3J0 QWNxdWlyZTsNCj4gPiArDQo+ID4gKyBSZXN0RXhJbnN0YW5jZS0+UmVkZmlzaERpc2NvdmVyUHJv dG9jb2wuUmVsZWFzZVJlZGZpc2hTZXJ2aWNlDQo+ID4gKyA9IFJlZGZpc2hTZXJ2aWNlUmVsZWFz ZVNlcnZpY2U7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgU3RhdHVzID0gZ0JTLT5JbnN0YWxsUHJv dG9jb2xJbnRlcmZhY2UgKA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICZOZXR3b3Jr SW50ZXJmYWNlLT5FZmlSZWRmaXNoRGlzY292ZXJQcm90b2NvbEhhbmRsZSwNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAmZ0VmaVJlZGZpc2hEaXNjb3ZlclByb3RvY29sR3VpZCwNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfTkFUSVZFX0lOVEVSRkFDRSwNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAoVk9JRCAqKSZSZXN0RXhJbnN0YW5jZS0+UmVkZmlz aERpc2NvdmVyUHJvdG9jb2wNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KPiA+ ICAgICAgICAgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ICAgICAgICAgICAgICBE RUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IEZhaWwgdG8gaW5zdGFsbA0KPiA+IEVGSV9SRURGSVNI X0RJU0NPVkVSX1BST1RPQ09MXG4iLCBfX2Z1bmNfXykpOw0KPiA+ICAgICAgICAgICAgfQ0KPiA+ IEBAIC0xODE1LDYgKzE4MzcsNyBAQCBTdG9wU2VydmljZU9uTmV0d29ya0ludGVyZmFjZSAoDQo+ ID4gICAgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERp c2NvdmVyUHJvdG9jb2xIYW5kbGU7DQo+ID4gICAgRUZJX1JFREZJU0hfRElTQ09WRVJfTkVUV09S S19JTlRFUkZBQ0VfSU5URVJOQUwNCj4gPiAqVGhpc05ldHdvcmtJbnRlcmZhY2U7DQo+ID4gICAg RUZJX1JFREZJU0hfRElTQ09WRVJfUkVTVF9FWF9JTlNUQU5DRV9JTlRFUk5BTA0KPiAqUmVzdEV4 SW5zdGFuY2U7DQo+ID4gKyAgRUZJX1JFREZJU0hfRElTQ09WRVJfUFJPVE9DT0wgICAgICAgICAg ICAgICAgICAgICpSZWRmaXNoRGlzY292ZXJQcm90b2NvbDsNCj4gPg0KPiA+ICAgIGZvciAoSW5k ZXggPSAwOyBJbmRleCA8IChzaXplb2YgKGdSZXF1aXJlZFByb3RvY29sKSAvIHNpemVvZg0KPiA+ IChSRURGSVNIX0RJU0NPVkVSX1JFUVVJUkVEX1BST1RPQ09MKSk7IEluZGV4KyspIHsNCj4gPiAg ICAgIFN0YXR1cyA9IGdCUy0+SGFuZGxlUHJvdG9jb2wgKA0KPiA+IEBAIC0xODU0LDEyICsxODc3 LDMwIEBAIFN0b3BTZXJ2aWNlT25OZXR3b3JrSW50ZXJmYWNlICgNCj4gPiAgICAgICAgICAgICAg Ly8gY2xpZW50IHdoaWNoIHVzZXMgLkVGSSBSZWRmaXNoIGRpc2NvdmVyIHByb3RvY29sLg0KPiA+ ICAgICAgICAgICAgICAvLw0KPiA+ICAgICAgICAgICAgICBpZiAoRGlzY292ZXJQcm90b2NvbEhh bmRsZSAhPSBOVUxMKSB7DQo+ID4gLSAgICAgICAgICAgICAgZ0JTLT5EaXNjb25uZWN0Q29udHJv bGxlciAoRGlzY292ZXJQcm90b2NvbEhhbmRsZSwgTlVMTCwgTlVMTCk7DQo+ID4gLSAgICAgICAg ICAgICAgU3RhdHVzID0gZ0JTLT5Vbmluc3RhbGxQcm90b2NvbEludGVyZmFjZSAoDQo+ID4gKw0K PiA+ICsgICAgICAgICAgICAgIFN0YXR1cyA9IGdCUy0+SGFuZGxlUHJvdG9jb2wgKA0KPiA+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaXNjb3ZlclByb3RvY29sSGFuZGxlLA0KPiA+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZ0VmaVJlZGZpc2hEaXNjb3ZlclByb3Rv Y29sR3VpZCwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFZPSUQgKikmbVJl ZGZpc2hEaXNjb3Zlcg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVk9JRCAq KikgJlJlZGZpc2hEaXNjb3ZlclByb3RvY29sDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICk7DQo+ID4gKyAgICAgICAgICAgICAgaWYgKCFFRklfRVJST1IgKFN0YXR1cykpIHsN Cj4gPiArICAgICAgICAgICAgICAgIFJlc3RFeEluc3RhbmNlID0NCj4gPg0KPiBFRklfUkVERklT SF9ESVNPVkVSX0RBVEFfRlJPTV9ESVNDT1ZFUl9QUk9UT0NPTChSZWRmaXNoRGlzY292ZQ0KPiA+ IHJQcm90b2NvbCk7DQo+ID4gKyAgICAgICAgICAgICAgICAvLw0KPiA+ICsgICAgICAgICAgICAg ICAgLy8gU3RvcCBSZWRmaXNoIHNlcnZpY2UgZGlzY292ZXJ5Lg0KPiA+ICsgICAgICAgICAgICAg ICAgLy8NCj4gPiArICAgICAgICAgICAgICAgIFJlZGZpc2hEaXNjb3ZlclByb3RvY29sLT5BYm9y dEFjcXVpcmVSZWRmaXNoU2VydmljZSAoDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBSZWRmaXNoRGlzY292ZXJQcm90b2NvbCwNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3RFeEluc3RhbmNlLT5OZXR3b3Jr SW50ZXJmYWNlSW5zdGFuY2VzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICApOw0KPiA+ICsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgICBnQlMtPkRp c2Nvbm5lY3RDb250cm9sbGVyIChEaXNjb3ZlclByb3RvY29sSGFuZGxlLCBOVUxMLCBOVUxMKTsN Cj4gPiArICAgICAgICAgICAgICAgIFN0YXR1cyA9IGdCUy0+VW5pbnN0YWxsUHJvdG9jb2xJbnRl cmZhY2UgKA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpc2NvdmVyUHJv dG9jb2xIYW5kbGUsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmdFZmlS ZWRmaXNoRGlzY292ZXJQcm90b2NvbEd1aWQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKFZPSUQgKikmUmVzdEV4SW5zdGFuY2UtPlJlZGZpc2hEaXNjb3ZlclByb3RvY29s DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCj4gPiArICAgICAgICAg ICAgICB9DQo+ID4gICAgICAgICAgICAgIH0NCj4gPg0KPiA+ICAgICAgICAgICAgICByZXR1cm4g U3RhdHVzOw0KPiA+IGRpZmYgLS1naXQgYS9SZWRmaXNoUGtnL1JlZGZpc2hEaXNjb3ZlckR4ZS9S ZWRmaXNoRGlzY292ZXJJbnRlcm5hbC5oDQo+ID4gYi9SZWRmaXNoUGtnL1JlZGZpc2hEaXNjb3Zl ckR4ZS9SZWRmaXNoRGlzY292ZXJJbnRlcm5hbC5oDQo+ID4gaW5kZXggMjcwNGNkOS4uZGRiNWYy ZSAxMDA2NDQNCj4gPiAtLS0gYS9SZWRmaXNoUGtnL1JlZGZpc2hEaXNjb3ZlckR4ZS9SZWRmaXNo RGlzY292ZXJJbnRlcm5hbC5oDQo+ID4gKysrIGIvUmVkZmlzaFBrZy9SZWRmaXNoRGlzY292ZXJE eGUvUmVkZmlzaERpc2NvdmVySW50ZXJuYWwuaA0KPiA+IEBAIC0xMTgsMTYgKzExOCwzMCBAQCB0 eXBlZGVmIHN0cnVjdCB7ICB9DQo+ID4gRUZJX1JFREZJU0hfRElTQ09WRVJfTkVUV09SS19JTlRF UkZBQ0VfSU5URVJOQUw7DQo+ID4NCj4gPiAgLy8NCj4gPiArLy8gUmVkZmlzaCBEaXNjb3ZlciBJ bnN0YW5jZSBzaWduYXR1cmUgLy8NCj4gPiArDQo+ID4gKyNkZWZpbmUgRUZJX1JFREZJU0hfRElT Q09WRVJfREFUQV9TSUdOQVRVUkUgICBTSUdOQVRVUkVfMzIgKCdFJywNCj4gPiAnUicsICdEJywg J0QnKQ0KPiA+ICsNCj4gPiArI2RlZmluZSBFRklfUkVERklTSF9ESVNPVkVSX0RBVEFfRlJPTV9E SVNDT1ZFUl9QUk9UT0NPTChhKSBcDQo+ID4gKyAgQ1IgKGEsIEVGSV9SRURGSVNIX0RJU0NPVkVS X1JFU1RfRVhfSU5TVEFOQ0VfSU5URVJOQUwsDQo+ID4gK1JlZGZpc2hEaXNjb3ZlclByb3RvY29s LCBFRklfUkVERklTSF9ESVNDT1ZFUl9EQVRBX1NJR05BVFVSRSkNCj4gPiArDQo+ID4gKy8vDQo+ ID4gIC8vIEludGVybmFsIHN0cnVjdHVyZSB1c2VkIHRvIG1haW50YWluIFJFU1QgRVggcHJvcGVy dGllcy4NCj4gPiAgLy8NCj4gPiAgdHlwZWRlZiBzdHJ1Y3Qgew0KPiA+IC0gIExJU1RfRU5UUlkg ICAgICAgICAgICAgIEVudHJ5OyAgICAgICAgICAgICAgICAgICAgICAvLy88IExpbmsgbGlzdCBl bnRyeS4NCj4gPiAtICBFRklfSEFORExFICAgICAgICAgICAgICBPcGVuRHJpdmVyQWdlbnRIYW5k bGU7ICAgICAgLy8vPCBUaGUgYWdlbnQgdG8gb3Blbg0KPiA+IG5ldHdvcmsgcHJvdG9jb2wuDQo+ ID4gLSAgRUZJX0hBTkRMRSAgICAgICAgICAgICAgT3BlbkRyaXZlckNvbnRyb2xsZXJIYW5kbGU7 IC8vLzwgVGhlIGNvbnRyb2xsZXINCj4gaGFuZGxlDQo+ID4gdG8gb3BlbiBuZXR3b3JrIHByb3Rv Y29sLg0KPiA+IC0gIEVGSV9IQU5ETEUgICAgICAgICAgICAgIFJlc3RFeENoaWxkSGFuZGxlOyAg ICAgICAgICAvLy88IFRoZSBjaGlsZCBoYW5kbGUgY3JlYXRlZA0KPiA+IHRocm91Z2ggUkVTVCBF WCBTZXJ2aWNlIFByb3RvY29sLg0KPiA+IC0gIEVGSV9IQU5ETEUgICAgICAgICAgICAgIFJlc3RF eENvbnRyb2xsZXJIYW5kbGU7ICAgICAvLy88IFRoZSBjb250cm9sbGVyIGhhbmRsZQ0KPiA+IHdo aWNoIHByb3ZpZGUgUkVTVCBFWCBwcm90b2NvbC4NCj4gPiAtICBFRklfUkVTVF9FWF9QUk9UT0NP TCAgICAqUmVzdEV4UHJvdG9jb2xJbnRlcmZhY2U7ICAgLy8vPCBQb2ludGVyIHRvDQo+ID4gRUZJ X1JFU1RfRVhfUFJPVE9DT0wuDQo+ID4gLSAgVUlOVDMyICAgICAgICAgICAgICAgICAgUmVzdEV4 SWQ7ICAgICAgICAgICAgICAgICAgIC8vLzwgVGhlIGlkZW50aWZpZXIgaW5zdGFsbGVkIG9uIFJF U1QgRVgNCj4gPiBjb250cm9sbGVyIGhhbmRsZS4NCj4gPiArICBMSVNUX0VOVFJZICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgRW50cnk7ICAgICAgICAgICAgICAgICAgICAgIC8vLzwgTGlu ayBsaXN0IGVudHJ5Lg0KPiA+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBTaWduYXR1cmU7ICAgICAgICAgICAgICAgICAgLy8vPCBJbnN0YW5jZSBzaWduYXR1cmUu DQo+ID4gKyAgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5Ecml2 ZXJBZ2VudEhhbmRsZTsgICAgICAvLy88IFRoZSBhZ2VudCB0bw0KPiA+IG9wZW4gbmV0d29yayBw cm90b2NvbC4NCj4gPiArICBFRklfSEFORExFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg T3BlbkRyaXZlckNvbnRyb2xsZXJIYW5kbGU7IC8vLzwgVGhlDQo+ID4gY29udHJvbGxlciBoYW5k bGUgdG8gb3BlbiBuZXR3b3JrIHByb3RvY29sLg0KPiA+ICsgIEVGSV9IQU5ETEUgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBSZXN0RXhDaGlsZEhhbmRsZTsgICAgICAgICAgLy8vPCBUaGUg Y2hpbGQgaGFuZGxlDQo+ID4gY3JlYXRlZCB0aHJvdWdoIFJFU1QgRVggU2VydmljZSBQcm90b2Nv bC4NCj4gPiArICBFRklfSEFORExFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdEV4 Q29udHJvbGxlckhhbmRsZTsgICAgIC8vLzwgVGhlIGNvbnRyb2xsZXINCj4gPiBoYW5kbGUgd2hp Y2ggcHJvdmlkZSBSRVNUIEVYIHByb3RvY29sLg0KPiA+ICsgIEVGSV9SRVNUX0VYX1BST1RPQ09M ICAgICAgICAgICAgICAgICAgICAqUmVzdEV4UHJvdG9jb2xJbnRlcmZhY2U7ICAgLy8vPA0KPiBQ b2ludGVyDQo+ID4gdG8gRUZJX1JFU1RfRVhfUFJPVE9DT0wuDQo+ID4gKyAgVUlOVDMyICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3RFeElkOyAgICAgICAgICAgICAgICAgICAv Ly88IFRoZSBpZGVudGlmaWVyIGluc3RhbGxlZCBvbg0KPiA+IFJFU1QgRVggY29udHJvbGxlciBo YW5kbGUuDQo+ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51 bWJlck9mTmV0d29ya0ludGVyZmFjZXM7ICAvLy88IE51bWJlciBvZg0KPiA+IG5ldHdvcmsgaW50 ZXJmYWNlcyBjYW4gZG8gUmVkZmlzaCBzZXJ2aWNlIGRpc2NvdmVyeS4NCj4gPiArICBFRklfUkVE RklTSF9ESVNDT1ZFUl9ORVRXT1JLX0lOVEVSRkFDRQ0KPiA+ICpOZXR3b3JrSW50ZXJmYWNlSW5z dGFuY2VzOyAvLy88IE5ldHdvcmsgaW50ZXJmYWNlIGluc3RhbmNlcy4gSXQncyBhbg0KPiA+IGFy cmF5IG9mIGluc3RhbmNlcy4gVGhlIG51bWJlciBvZiBlbnRyaWVzDQo+ID4gKw0KPiA+ICsgLy8v PCBpbiBhcnJheSBpcyBpbmRpY2F0ZWQgYnkNCj4gPiBOdW1iZXJPZk5ldHdvcmtJbnRlcmZhY2Vz Lg0KPiA+ICsgIEVGSV9SRURGSVNIX0RJU0NPVkVSX1BST1RPQ09MICAgICAgICAgICBSZWRmaXNo RGlzY292ZXJQcm90b2NvbDsNCj4gLy8vPA0KPiA+IEVGSV9SRURGSVNIX0RJU0NPVkVSX1BST1RP Q09MIHByb3RvY29sLg0KPiA+ICB9IEVGSV9SRURGSVNIX0RJU0NPVkVSX1JFU1RfRVhfSU5TVEFO Q0VfSU5URVJOQUw7DQo+ID4NCj4gPiAgLyoqDQo+ID4gLS0NCj4gPiAyLjYuMS53aW5kb3dzLjEN Cj4gPiAtVGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZCBpbiB0aGlzIG1lc3NhZ2UgbWF5IGJlIGNv bmZpZGVudGlhbCBhbmQNCj4gPiBwcm9wcmlldGFyeSB0byBBbWVyaWNhbiBNZWdhdHJlbmRzIChB TUkpLiBUaGlzIGNvbW11bmljYXRpb24gaXMNCj4gPiBpbnRlbmRlZCB0byBiZSByZWFkIG9ubHkg YnkgdGhlIGluZGl2aWR1YWwgb3IgZW50aXR5IHRvIHdob20gaXQgaXMNCj4gPiBhZGRyZXNzZWQg b3IgYnkgdGhlaXIgZGVzaWduZWUuIElmIHRoZSByZWFkZXIgb2YgdGhpcyBtZXNzYWdlIGlzIG5v dA0KPiA+IHRoZSBpbnRlbmRlZCByZWNpcGllbnQsIHlvdSBhcmUgb24gbm90aWNlIHRoYXQgYW55 IGRpc3RyaWJ1dGlvbiBvZg0KPiA+IHRoaXMgbWVzc2FnZSwgaW4gYW55IGZvcm0sIGlzIHN0cmlj dGx5IHByb2hpYml0ZWQuIFBsZWFzZSBwcm9tcHRseQ0KPiA+IG5vdGlmeSB0aGUgc2VuZGVyIGJ5 IHJlcGx5IGUtbWFpbCBvciBieSB0ZWxlcGhvbmUgYXQgNzcwLTI0Ni04NjAwLCBhbmQNCj4gPiB0 aGVuIGRlbGV0ZSBvciBkZXN0cm95IGFsbCBjb3BpZXMgb2YgdGhlIHRyYW5zbWlzc2lvbi4NCj4g LVRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQgaW4gdGhpcyBtZXNzYWdlIG1heSBiZSBjb25maWRl bnRpYWwgYW5kDQo+IHByb3ByaWV0YXJ5IHRvIEFtZXJpY2FuIE1lZ2F0cmVuZHMgKEFNSSkuIFRo aXMgY29tbXVuaWNhdGlvbiBpcyBpbnRlbmRlZA0KPiB0byBiZSByZWFkIG9ubHkgYnkgdGhlIGlu ZGl2aWR1YWwgb3IgZW50aXR5IHRvIHdob20gaXQgaXMgYWRkcmVzc2VkIG9yIGJ5IHRoZWlyDQo+ IGRlc2lnbmVlLiBJZiB0aGUgcmVhZGVyIG9mIHRoaXMgbWVzc2FnZSBpcyBub3QgdGhlIGludGVu ZGVkIHJlY2lwaWVudCwgeW91IGFyZQ0KPiBvbiBub3RpY2UgdGhhdCBhbnkgZGlzdHJpYnV0aW9u IG9mIHRoaXMgbWVzc2FnZSwgaW4gYW55IGZvcm0sIGlzIHN0cmljdGx5DQo+IHByb2hpYml0ZWQu IFBsZWFzZSBwcm9tcHRseSBub3RpZnkgdGhlIHNlbmRlciBieSByZXBseSBlLW1haWwgb3IgYnkN Cj4gdGVsZXBob25lIGF0IDc3MC0yNDYtODYwMCwgYW5kIHRoZW4gZGVsZXRlIG9yIGRlc3Ryb3kg YWxsIGNvcGllcyBvZiB0aGUNCj4gdHJhbnNtaXNzaW9uLg0KLVRoZSBpbmZvcm1hdGlvbiBjb250 YWluZWQgaW4gdGhpcyBtZXNzYWdlIG1heSBiZSBjb25maWRlbnRpYWwgYW5kIHByb3ByaWV0YXJ5 IHRvIEFtZXJpY2FuIE1lZ2F0cmVuZHMgKEFNSSkuIFRoaXMgY29tbXVuaWNhdGlvbiBpcyBpbnRl bmRlZCB0byBiZSByZWFkIG9ubHkgYnkgdGhlIGluZGl2aWR1YWwgb3IgZW50aXR5IHRvIHdob20g aXQgaXMgYWRkcmVzc2VkIG9yIGJ5IHRoZWlyIGRlc2lnbmVlLiBJZiB0aGUgcmVhZGVyIG9mIHRo aXMgbWVzc2FnZSBpcyBub3QgdGhlIGludGVuZGVkIHJlY2lwaWVudCwgeW91IGFyZSBvbiBub3Rp Y2UgdGhhdCBhbnkgZGlzdHJpYnV0aW9uIG9mIHRoaXMgbWVzc2FnZSwgaW4gYW55IGZvcm0sIGlz IHN0cmljdGx5IHByb2hpYml0ZWQuIFBsZWFzZSBwcm9tcHRseSBub3RpZnkgdGhlIHNlbmRlciBi eSByZXBseSBlLW1haWwgb3IgYnkgdGVsZXBob25lIGF0IDc3MC0yNDYtODYwMCwgYW5kIHRoZW4g ZGVsZXRlIG9yIGRlc3Ryb3kgYWxsIGNvcGllcyBvZiB0aGUgdHJhbnNtaXNzaW9uLg0K