From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id C6B56AC0D92 for ; Mon, 24 Jul 2023 09:50:21 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=hFyI7cVuQAII0Mqa7AlRxVf0Bw8VaGvqf/ABWTyzgc4=; c=relaxed/simple; d=groups.io; h=X-Received:X-Received:ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:X-Received:X-Received:From:To:CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References:In-Reply-To:Accept-Language:X-MS-Has-Attach:X-MS-TNEF-Correlator:x-ts-tracking-id:x-checkrecipientchecked:x-ms-publictraffictype:x-ms-traffictypediagnostic:x-ms-office365-filtering-correlation-id:nodisclaimer:x-ms-exchange-senderadcheck:x-ms-exchange-antispam-relay:x-microsoft-antispam-message-info:x-ms-exchange-antispam-messagedata-chunkcount:x-ms-exchange-antispam-messagedata-0:MIME-Version:X-OriginatorOrg:X-MS-Exchange-CrossTenant-AuthAs:X-MS-Exchange-CrossTenant-AuthSource:X-MS-Exchange-CrossTenant-Network-Message-Id:X-MS-Exchange-CrossTenant-originalarrivaltime:X-MS-Exchange-CrossTenant-fromentityheader:X-MS-Exchange-CrossTenant-id:X-MS-Exchange-CrossTenant-mailboxtype:X-MS-Exchange-CrossTenant-userprincipalname:X-MS-Exchange-Transport-CrossTenantHeadersStamped:Precedence:List-Subscribe:List-Help:Sender:L ist-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:X-Gm-Message-State:Content-Language:Content-Type:Content-Transfer-Encoding; s=20140610; t=1690192220; v=1; b=qnX/W6QjZfoNGj8EL6CJxwWap+nVH5QW7bk35IHNe2DBgw0acsjdHjnkDAPPhtoozJAy4QNv MpbWXuBzjkh5ioyxycdJ99MYYgN+O9aBhB4hE7/q8sf/grBcFpEgQBwcUi5M4j5PqQqRBmhPdUF fi7pUIb6HK4iMlT+kxewcCU0= X-Received: by 127.0.0.2 with SMTP id 8HkmYY7687511xc28LpH30rC; Mon, 24 Jul 2023 02:50:20 -0700 X-Received: from EUR04-HE1-obe.outbound.protection.outlook.com (EUR04-HE1-obe.outbound.protection.outlook.com [40.107.7.43]) by mx.groups.io with SMTP id smtpd.web11.44501.1690192218365474277 for ; Mon, 24 Jul 2023 02:50:19 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hw5yWEmBORD5KD0QoTOr511Jcs+e7aU6oEpuZKEzEG7VIQiCrT6EsZ9+t8VnfFeNj2PxI1aBz9AGeFuDzOzQyRno86NzSt80eMPItaAp2Peopa0SOcxPRYS//vF3u3vJO7NzK/rZO8Z7yGgqRjLhiFR0oliVbVyfhGYW0d3NZchtyXh/KDkE3n5oD+TBmO3MqmFEd5DAb7wzahNkEPigdAKAWmrmkADALYL8TrzbLYPaJaZ3SL31EUtktYfDyFHesImmzA+oFn2fDjlBAPIxPBOxoRmWRRG4SeB515So3gnritDIfXwGFImbz1m5ycvTYFWUR4/N9WV+3F1sCBthcw== 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=2raa2LTTKlhmQ4JJVNjNzuMwjENUkcQoZzSLGMBbPEw=; b=a3QUJl7RlpuEwkhvvQmAUJAgcpcSNxGO8lbDCB72Tk00KmJZdGF44swGFqicyllhtYPx3JQkpskhESD/Ao/QJm/EN7VheYcA9TuxQ62bTL6D2uIlv5PFCVqwg3MHfD3BmiehqDjdnWDfTBPC0FkG+GfDZVg13qa3pcNZAesrYxw3fFwOdh6q2sn1DXAVh5oJDkmbSqwnuwgrVgPBMecAPftG39k6nOeLurz6D+iSVG+Vt0faWWXDj7YW3+Zp5w1idpPo0LjrsHS7YSdzFU0lWi66ik7cPBd9qO7eqZaJIW/HteLMQPUjeizBj6m0u1o/EnwedbqMEi9zO2mdSZk0Cw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none X-Received: from AM6PR08MB3783.eurprd08.prod.outlook.com (2603:10a6:20b:8a::13) by DBBPR08MB6202.eurprd08.prod.outlook.com (2603:10a6:10:209::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6609.32; Mon, 24 Jul 2023 09:50:13 +0000 X-Received: from AM6PR08MB3783.eurprd08.prod.outlook.com ([fe80::d8fc:fefa:d63b:74f5]) by AM6PR08MB3783.eurprd08.prod.outlook.com ([fe80::d8fc:fefa:d63b:74f5%5]) with mapi id 15.20.6609.032; Mon, 24 Jul 2023 09:50:13 +0000 From: "Rohit Mathew" To: Pierre Gondois , "devel@edk2.groups.io" CC: Thomas Abraham , Sami Mujawar , James Morse , Ray Ni , Zhichao Gao , nd Subject: Re: [edk2-devel] [PATCH V3 3/3] ShellPkg/AcpiView: Add MPAM Parser Thread-Topic: [edk2-devel] [PATCH V3 3/3] ShellPkg/AcpiView: Add MPAM Parser Thread-Index: AQHZux5eoG2wGh4yBkiE9zmUG6eNZ6/IrSIg Date: Mon, 24 Jul 2023 09:50:12 +0000 Message-ID: References: <20230522144506.2799121-1-Rohit.Mathew@arm.com> In-Reply-To: Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: C3811DEE0A7681418FFDD6A8DAA6DCC5.0 x-checkrecipientchecked: true x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AM6PR08MB3783:EE_|DBBPR08MB6202:EE_ x-ms-office365-filtering-correlation-id: 77584160-45d8-4cb1-ae75-08db8c2b601b nodisclaimer: true x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: nuPXR0cDNGIWbyGm3ARYNgI0O6tOQ3eFF45cJbsWOC+g7nLh3I18HkIZ5J/W4uF0TG8KgnVBHaG0VCL02lHr/UzZ3v/P0FJ5grpwgjaW2sV8tEnrmPbxJLov5q1Mn0+RULb6bnz/r1LztO+Xm1mUCYfDFREKgDI+iMztCJRlyKUngnqbp9FvhZiJmAxHUjdMymeKMb6fCCEwBvDcLq/GI4EpJdfLMnApubna8lFaikCh5E6jd5f4fylCYTSVyuoR0PS3OlMsLRbtXlBRc+/QAZZdHRLSzHWql7sQM8PG+9mWeM9bXMNgLyeF2OvbF+NreGY2O0fqCNzOrz97OcmixhXh+8i37q+x2qvW7NjF4nNNH/49w/5XrSYDuRt4PoDh4a4axGzKc/2ENUw6wpO0eOXteomeFqXVtN2rsZOhWJC1Nmt/Z2nDJoODDroNbRzWfVhMbZxig0JaUSJalZvNLuf04oKLiQMXpWspxpfed0IGDysHEAVuVYG11DxgStfwETgCvlD0uox0f1qUwM0gsu8OdjXvfgKLCz9BByN8du6owEEZ2TSaZ/yGM1gc7QpYOvZ7GdqemTQIcXDImdMmxQ6+27sk4AuBnVwedTROvfERkCtcU99QjIy+7RAFk+Pdm9PvBE4pAfIL+Pg0yTZAeQ== x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ZlB5TmhrSHVCNHQxaTNXSnphTnVlQ1VQYkhNRC8vVWdxWWdSQUx2alFwUlBq?= =?utf-8?B?M2RWYjMwU1BLNFFmUm9qc2FGWmJjcTdFWEQvZmtIWk1ObkZjR1RlcnRzeDFi?= =?utf-8?B?VHAwbHYzaDhoeUw1SXhlTHZYZDBhNjl3TUhpZ3MvNTlrZ25BRllOQTdJRVJR?= =?utf-8?B?U3BjY1hTaklsSDlxdkJ6OFpzOVBtOWF6OWJUSmFwc3FlU0diUFJIMXA2YTB0?= =?utf-8?B?RlpWWHg0bEp4TndkU3pkb09ScG1uU1FOZ0VQTE9mVnhaRUpEWnU0eHZ3QjVj?= =?utf-8?B?aG5WZi94bUxjOFkwek1XN1pJL0VqWlZobFRHenhwQlpzTHIwcmtCd2pmSGgx?= =?utf-8?B?Q2t2VzQxclZOQ3ljM1pSVHR3VzJoT0dSMGRWQXFPSjVyblcrb3BHNXorUlg3?= =?utf-8?B?LzI1U1dsaXBWYWt2dDJRSndpZ1dWcDcyT285S2IwY21sTFdOTEl1UENrRmNx?= =?utf-8?B?d2I5M2FFK2NUYkxSNHZybWoxb0VZWlZ2N2pPTXhTMWxqUjEwbnE3aW9sRVFR?= =?utf-8?B?c2JDcm1na2t5NlBmdlkzTFluVGlQV25RWG5vOUZYMFl4d1NiRkxzTHJBa3Zv?= =?utf-8?B?SUhkNGNXeHJXYVJ4VmpvbU1SVE5YTERvaWx2NWNJcUNBR2dsZXdJWXV4cUll?= =?utf-8?B?bzEzRC9YT1dOVkQ1Z1dKUWZqMkdkTzFjTnZJREwxSDQ3VVNMazZxMzJZSHZW?= =?utf-8?B?MUdiS2oxenFHZy9rWSt6NWNGRlQzWmRkNWNrOVVGQ1ByNXN1VCt5MGpIeHNs?= =?utf-8?B?RE55b1FlRW1UT2x5c3Q1eEsrUks4ZzFHK3o1YmJ6bjVGVmRUaHQwUElqaEVF?= =?utf-8?B?Qlk5amxjZkZ5NjI5SHhhTzdpR0VhN1QwdC9aZDZwa1JuRWc2eXZqNjhWN2tE?= =?utf-8?B?SmNPcU1XOEt5S00vSUlnYlhXY3ZlMTl1ZmtOUmNmZW9rMDZMRzVqS2ZtbkFV?= =?utf-8?B?K2QrZ1lzYUpvZi9JN1YrRkdGamtZbGRFMlhVU3k3QXhQRmpzeTRLNHNRNnJF?= =?utf-8?B?a0JKdERSQmtDak8wVEx2ekVuczV4WGtGa1R2Ti9JM1RYdEdPWGRESzJObWIx?= =?utf-8?B?UEo2RzdEVzV1VzJOQ0xkb28xemJlNmFjMXptUDl3VEJpaEQ3R0J6c0hrMEt0?= =?utf-8?B?QVpyZTNhWERQZHNIYnRGNmRQNnFjWldtcjgyclU2YnBZdW9vS01BUEFjZnhp?= =?utf-8?B?VUptRTdIZktRNVc0blJRSHJ0YkxlTmtJOUIvcVFSdEV4NEE1bmF5NEFnNUc2?= =?utf-8?B?WWdpMTJ4L2tmMEtGUzhUeVJHRDhmUlpqVDEvbGZrZEs2YndNM3haSTJRNGwz?= =?utf-8?B?L09FNUtlaHRzRUN1b1NFbTVTNlJrVDRxNE1YVFVsTEUwdk5zWUdUTlluNWIz?= =?utf-8?B?OFdxRlBFNVVnM0NrUVd1dDAxNjJwVzFUS2VOQVhqaXZZWVhsUlhMUE5nTDFM?= =?utf-8?B?TFkvVUpBNGIrUThIU2ZuMWlseGprUnJ0aDJVM1h3c3E3eHQ3ZWMxbkt1bDJa?= =?utf-8?B?SmF2cDY3WDZvZmUzVWpVYXkvWFZxTSthZGZ5NElxR2xPMTRYQ05TRHRqc3py?= =?utf-8?B?eTkxY1hBSjB1bXZFVzhaVXJwQ2xJdFA3OW91YnpMWTFuL2pWTWFKRThSUVpB?= =?utf-8?B?djVmQmZWSk5tYU1JdEsxMnVIQUd6RGlOVXNmcGQzRHMxZUIrSTNmdWRrVmJ4?= =?utf-8?B?c2xOYkwzRVN4Y3hzUi9jSEQyMituRXg5N1VKbjQ4YjduRXh4MGE2WHNmdzla?= =?utf-8?B?VXFwLzUrUk0zaTUyWGROYllsMFl3WUZJTXVaL2JqUHF5dnBKOGxIL0djMzFE?= =?utf-8?B?UVZaNVloTkNLeVhSY1dZWCt5Y0RhYmcwUExZcjRiallwN09GaXc0dmg4cVl4?= =?utf-8?B?RUNERi9iTFU3bkxldi9SUmRpOGh4L204anlqVTB0WjhIK3hTTEJJNmk0cjhS?= =?utf-8?B?TXJMVVYwL0hyWUpjVFMwd1lhTkR0eDFrQlRrYVduRm9lb3U3RGlvRGV2RUhw?= =?utf-8?B?SDk1T0lkUXRla1ZJL2d4em5UNXJyNXZUQzhQOVk4Z1FWMXBmZVFiLzI3MlVq?= =?utf-8?B?MitaZ2c2aXJnaFhDb0xRSk1yOXhESkFCUkV5ZEVNTUJ6M2lFTHFyVUVaUkNQ?= =?utf-8?Q?XtFo=3D?= MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AM6PR08MB3783.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 77584160-45d8-4cb1-ae75-08db8c2b601b X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jul 2023 09:50:12.6160 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: mOnjAoliZZFxhsF+iZQ7tFiBi81dH2MRJ7v+ZBquE+2EC/QBKclCcExDzxmMMujg+/4aPT0uXUnpNdWkcj2sGg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB6202 Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,rohit.mathew@arm.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: tb6EsNKWQbYuxcQmVgQS9gjgx7686176AA= Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b="qnX/W6Qj"; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}"); dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=arm.com (policy=none); spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io SGkgUGllcnJlLA0KDQpUaGFuayB5b3UgZm9yIHRoZSBkZXRhaWxlZCByZXZpZXcuIFBsZWFzZSBm aW5kIG15IHJlc3BvbnNlIGlubGluZS4NCg0KPiBPbiA1LzIyLzIzIDE2OjQ1LCBSb2hpdCBNYXRo ZXcgdmlhIGdyb3Vwcy5pbyB3cm90ZToNCj4gPiBBZGQgYSBwYXJzZXIgZm9yIHRoZSBNUEFNIChN ZW1vcnkgc3lzdGVtIHJlc291cmNlIHBhcnRpdGlvbmluZyBhbmQNCj4gPiBtb25pdG9yaW5nKSBB Q1BJIHRhYmxlLiBUaGlzIHBhcnNlciB3b3VsZCBwYXJzZSBhbGwgTVBBTSByZWxhdGVkDQo+ID4g c3RydWN0dXJlcyBlbWJlZGRlZCBhcyBwYXJ0IG9mIHRoZSBBQ1BJIHRhYmxlLiBOZWNlc3Nhcnkg dmFsaWRhdGlvbnMgYXJlDQo+ID4gYWxzbyBwZXJmb3JtZWQgd2hlcmUgYW5kIHdoZW4gcmVxdWly ZWQuDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBSb2hpdCBNYXRoZXcgPFJvaGl0Lk1hdGhld0Bh cm0uY29tPg0KPiA+IC0tLQ0KPiA+ICAgU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmll d0NvbW1hbmRMaWIvQWNwaVBhcnNlci5oICAgICAgICAgICAgICAgICAgICB8DQo+IDIxICsNCj4g Pg0KPiBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJz L01wYW0vTXBhbVBhcnNlcg0KPiAuYyAgICAgICB8IDEzMzEgKysrKysrKysrKysrKysrKysrKysN Cj4gPg0KPiBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJz ZXJzL01wYW0vTXBhbVBhcnNlcg0KPiAuaCAgICAgICB8ICAgMjUgKw0KPiA+DQo+IFNoZWxsUGtn L0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1VlZmlTaGVsbEFjcGlWaWV3Q29t bWFuDQo+IGRMaWIuYyAgIHwgICAgMyArLQ0KPiA+DQo+IFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNo ZWxsQWNwaVZpZXdDb21tYW5kTGliL1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuDQo+IGRMaWIuaW5m IHwgICAgNCArLQ0KPiA+DQo+IFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21t YW5kTGliL1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuDQo+IGRMaWIudW5pIHwgICAgMyArLQ0KPiA+ ICAgNiBmaWxlcyBjaGFuZ2VkLCAxMzg0IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pDQo+ ID4NCj4gPiBkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0Nv bW1hbmRMaWIvQWNwaVBhcnNlci5oDQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3Bp Vmlld0NvbW1hbmRMaWIvQWNwaVBhcnNlci5oDQo+ID4gaW5kZXggYzlmNDE2NTBkOS4uZmVmMDhl NzE0ZCAxMDA2NDQNCj4gPiAtLS0gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3 Q29tbWFuZExpYi9BY3BpUGFyc2VyLmgNCj4gPiArKysgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlT aGVsbEFjcGlWaWV3Q29tbWFuZExpYi9BY3BpUGFyc2VyLmgNCj4gPiBAQCAtODI1LDYgKzgyNSwy NyBAQCBQYXJzZUFjcGlNY2ZnICgNCj4gPiAgICAgSU4gVUlOVDggICAgQWNwaVRhYmxlUmV2aXNp b24NCj4gPiAgICAgKTsNCj4gPg0KPiA+ICsvKioNCj4gPiArICBUaGlzIGZ1bmN0aW9uIHBhcnNl cyB0aGUgQUNQSSBNUEFNIHRhYmxlLg0KPiA+ICsgIFdoZW4gdHJhY2UgaXMgZW5hYmxlZCB0aGlz IGZ1bmN0aW9uIHBhcnNlcyB0aGUgTUNGRyB0YWJsZSBhbmQNCj4gPiArICB0cmFjZXMgdGhlIEFD UEkgdGFibGUgZmllbGRzLg0KPiA+ICsNCj4gPiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9y bXMgdmFsaWRhdGlvbiBvZiB0aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ID4gKw0KPiA+ICsgIEBw YXJhbSBbaW5dIFRyYWNlICAgICAgICAgICAgICBJZiBUUlVFLCB0cmFjZSB0aGUgQUNQSSBmaWVs ZHMuDQo+ID4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhl IHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3Ro ICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gPiArICBAcGFyYW0gW2luXSBBY3BpVGFi bGVSZXZpc2lvbiAgUmV2aXNpb24gb2YgdGhlIEFDUEkgdGFibGUuDQo+ID4gKyoqLw0KPiA+ICtW T0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtQYXJzZUFjcGlNcGFtICgNCj4gPiArICBJTiBCT09MRUFO ICBUcmFjZSwNCj4gPiArICBJTiBVSU5UOCAgICAqUHRyLA0KPiA+ICsgIElOIFVJTlQzMiAgIEFj cGlUYWJsZUxlbmd0aCwNCj4gPiArICBJTiBVSU5UOCAgICBBY3BpVGFibGVSZXZpc2lvbg0KPiA+ ICsgICk7DQo+ID4gKw0KPiA+ICAgLyoqDQo+ID4gICAgIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRo ZSBBQ1BJIFBDQ1QgdGFibGUgaW5jbHVkaW5nIGl0cyBzdWItc3RydWN0dXJlcw0KPiA+ICAgICBv ZiB0eXBlIDAgdGhyb3VnaCA0Lg0KPiA+IGRpZmYgLS1naXQNCj4gYS9TaGVsbFBrZy9MaWJyYXJ5 L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL01wYW0vTXBhbVBhcg0KPiBzZXIu Yw0KPiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNl cnMvTXBhbS9NcGFtUGFyDQo+IHNlci5jDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBp bmRleCAwMDAwMDAwMDAwLi45MzUyMzU3MzE4DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKw0K PiBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMv TXBhbS9NcGFtUGFyDQo+IHNlci5jDQo+ID4gQEAgLTAsMCArMSwxMzMxIEBADQo+ID4gKy8qKiBA ZmlsZQ0KPiA+ICsgIE1QQU0gdGFibGUgcGFyc2VyDQo+ID4gKw0KPiA+ICsgIENvcHlyaWdodCAo YykgMjAyMywgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ID4gKyAgU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiArDQo+ID4gKyAgQHBh ciBTcGVjaWZpY2F0aW9uIFJlZmVyZW5jZToNCj4gPiArICAgLSBbMV0gQUNQSSBmb3IgTWVtb3J5 IFN5c3RlbSBSZXNvdXJjZSBQYXJ0aXRpb25pbmcgYW5kIE1vbml0b3JpbmcgMi4wDQo+ID4gKyAg ICAgKGh0dHBzOi8vZGV2ZWxvcGVyLmFybS5jb20vZG9jdW1lbnRhdGlvbi9kZW4wMDY1L2xhdGVz dCkNCj4gPiArDQo+ID4gKyAgQHBhciBHbG9zc2FyeToNCj4gPiArICAgIC0gTVBBTSAtIE1lbW9y eSBTeXN0ZW0gUmVzb3VyY2UgUGFydGl0aW9uaW5nIEFuZCBNb25pdG9yaW5nDQo+ID4gKyAgICAt IE1TQyAgLSBNZW1vcnkgU3lzdGVtIENvbXBvbmVudA0KPiA+ICsgICAgLSBQQ0MgIC0gUGxhdGZv cm0gQ29tbXVuaWNhdGlvbiBDaGFubmVsDQo+ID4gKyAgICAtIFJJUyAgLSBSZXNvdXJjZSBJbnN0 YW5jZSBTZWxlY3Rpb24NCj4gPiArICAgIC0gU01NVSAtIEFybSBTeXN0ZW0gTWVtb3J5IE1hbmFn ZW1lbnQgVW5pdA0KPiA+ICsgKiovDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFu ZGFyZC9NcGFtLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L1ByaW50TGliLmg+DQo+ID4gKyNp bmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCj4gPiArI2luY2x1ZGUgIkFjcGlQYXJzZXIuaCIN Cj4gPiArI2luY2x1ZGUgIkFjcGlWaWV3LmgiDQo+ID4gKyNpbmNsdWRlICJBY3BpVmlld0NvbmZp Zy5oIg0KPiA+ICsjaW5jbHVkZSAiTXBhbVBhcnNlci5oIg0KPiA+ICsNCj4gPiArLy8gTG9jYWwg dmFyaWFibGVzDQo+ID4gK1NUQVRJQyBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAqTG9j YXRvcjsNCj4gPiArU1RBVElDIENPTlNUIFVJTlQ4ICAgICAgICAgICAgICAgICAgICpMb2NhdG9y VHlwZTsNCj4gPiArU1RBVElDIENPTlNUIFVJTlQxNiAgICAgICAgICAgICAgICAgICpNcGFtTXNj Tm9kZUxlbmd0aDsNCj4gPiArU1RBVElDIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgIE1w YW1Nc2NOb2RlTGVuZ3RoQ3VtdWxhdGl2ZTsNCj4gPiArU1RBVElDIFVJTlQzMiAgICAgICAgICAg ICAgICAgICAgICAgIEhlYWRlclNpemU7DQo+ID4gK1NUQVRJQyBDT05TVCBVSU5UMzIgICAgICAg ICAgICAgICAgICAqRXJyb3JJbnRlcnJ1cHQ7DQo+ID4gK1NUQVRJQyBDT05TVCBVSU5UMzIgICAg ICAgICAgICAgICAgICAqSW50ZXJmYWNlVHlwZTsNCj4gPiArU1RBVElDIENPTlNUIFVJTlQzMiAg ICAgICAgICAgICAgICAgICpOdW1iZXJPZk1zY1Jlc291cmNlczsNCj4gPiArU1RBVElDIENPTlNU IFVJTlQzMiAgICAgICAgICAgICAgICAgICpOdW1iZXJPZkZ1bmN0aW9uYWxEZXBlbmRlbmNpZXM7 DQo+ID4gK1NUQVRJQyBDT05TVCBVSU5UMzIgICAgICAgICAgICAgICAgICAqTnVtYmVyT2ZJbnRl cmNvbm5lY3REZXNjcmlwdG9yczsNCj4gPiArU1RBVElDIENPTlNUIFVJTlQzMiAgICAgICAgICAg ICAgICAgICpPdmVyZmxvd0ludGVycnVwdDsNCj4gPiArU1RBVElDIEFDUElfREVTQ1JJUFRJT05f SEVBREVSX0lORk8gIEFjcGlIZHJJbmZvOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgV2hlbiB0 aGUgbGVuZ3RoIG9mIHRoZSB0YWJsZSBpcyBpbnN1ZmZpY2llbnQgdG8gYmUgcGFyc2VkLCB0aGlz IGZ1bmN0aW9uDQo+IGNvdWxkDQo+ID4gKyAgYmUgdXNlZCB0byBkaXNwbGF5IGFuIGFwcHJvcHJp YXRlIGVycm9yIG1lc3NhZ2UuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSBbaW5dIEVycm9yTXNnICAg ICAgRXJyb3IgbWVzc2FnZSBzdHJpbmcgdGhhdCBoYXMgdG8gYmUgYXBwZW5kZWQgdG8NCj4gdGhl DQo+IA0KPiAoYWxpZ25tZW50KQ0KDQpbUm9oaXRdIEFjay4NCg0KPiANCj4gPiArICAgICAgICAg IG1haW4gZXJyb3IgbG9nLiBUaGlzIHN0cmluZyBjb3VsZCBleHBsYWluIHRoZSByZWFzb24NCj4g PiArICAgICAgICAgIHdoeSBhIGluc3VmZmljaWVudCBsZW5ndGggZXJyb3Igd2FzIGVuY291bnRl cmVkIGluDQo+ID4gKyAgICAgICAgICB0aGUgZmlyc3QgcGxhY2UuDQo+ID4gKyoqLw0KPiA+ICtT VEFUSUMNCj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gDQo+IEl0IHNlZW1zIHRoaXMgZnVuY3Rp b24gaXMgbm90IHVzZWQgZm9yIGxlbmd0aCByZWxhdGVkIGlzc3Vlcy4gTWF5YmUgaXQgc2hvdWxk IGJlDQo+IHJlbmFtZWQNCj4gYW5kIHRoZSAnSW5zdWZmaWNpZW50IE1QQU0gTVNDIE5vZGUgbGVu Z3RoIC4uLicgbWVzc2FnZSBiZSByZW1vdmVkLg0KDQpbUm9oaXRdIC0gSSByZXNwb25kZWQgdG8g Y291cGxlIG9mIGNvbW1lbnRzIGFkZHJlc3Npbmcgd2h5IHdlIHVzZSB0aGlzIGZ1bmN0aW9uLCBi ZWxvdy4gTGV0IG1lIGtub3cgeW91ciB0aG91Z2h0cy4gKEFnYWluLCBJIG1vdmVkIGJvdHRvbSAt IHVwIHdoaWxlIGFkZHJlc3NpbmcgY29tbWVudHMgYXMgaXQgd2FzIGVhc2llciB0byB3YWxrIHRo ZSBjb2RlIHRoYXQgd2F5KQ0KDQo+IA0KPiA+ICtNcGFtTGVuZ3RoRXJyb3IgKA0KPiA+ICsgIElO IENPTlNUIENIQVIxNiAgKkVycm9yTXNnDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgSW5jcmVt ZW50RXJyb3JDb3VudCAoKTsNCj4gPiArICBQcmludCAoTCJcbkVSUk9SIDogIik7DQo+ID4gKyAg UHJpbnQgKEVycm9yTXNnKTsNCj4gPiArICBQcmludCAoDQo+ID4gKyAgICBMIlxuRXJyb3IgOiBJ bnN1ZmZpY2llbnQgTVBBTSBNU0MgTm9kZSBsZW5ndGguIFRhYmxlIGxlbmd0aCA6ICV1LlxuIiwN Cj4gPiArICAgICooQWNwaUhkckluZm8uTGVuZ3RoKQ0KPiA+ICsgICAgKTsNCj4gPiArfQ0KPiA+ ICsNCj4gPiArLyoqDQo+ID4gKyAgVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIHBhc3NlZCBy ZXNlcnZlZCBwYXJhbWV0ZXIuIEFueSByZXNlcnZlZCBmaWVsZA0KPiA+ICsgIHdpdGhpbiB0aGUg TVBBTSBzcGVjaWZpY2F0aW9uIG11c3QgYmUgMC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtIFtpbl0g UmVzZXJ2ZWQgICAgIFJlc2VydmVkIHBhcmFtIHRoYXQgaGFzIHRvIGJlIHZhbGlkYXRlZC4NCj4g PiArKiovDQo+ID4gK1NUQVRJQw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiANCj4gSXQgc2Vl bXMgdGhlICdSZXNlcnZlZCcgZmllbGRzIGlzIGFsc28gY2hlY2tlZCBpbiB0aGUgU1JBVCB0YWJs ZSBwYXJzaW5nLCBjZi4NCj4gVmFsaWRhdGVTcmF0UmVzZXJ2ZWQoKS4gTWF5YmUgaXQgd291bGQg YmUgZ29vZCB0byByZS11c2UgeW91ciBnZW5lcmljDQo+IGltcGxlbWVudGF0aW9uDQo+IHRoZXJl IGFzd2VsbCAoanVzdCBhIHN1Z2dlc3Rpb24sIG1heWJlIHRvIGJlIGRvbmUgaW4gYSBsYXRlciBw YXRjaCkuDQo+IA0KPiANCg0KW1JvaGl0XSBJZiBpdCdzIG9rYXksIEkgY291bGQgd29yayBvdXQg dGhlc2UgY2hhbmdlcyBvbmNlIHdlIGdldCB0aGUgTVBBTSBjaGFuZ2VzIGluPw0KDQo+ID4gK1Zh bGlkYXRlUmVzZXJ2ZWQgKA0KPiA+ICsgIElOIENPTlNUIFVJTlQ2NCAgUmVzZXJ2ZWQNCj4gPiAr ICApDQo+ID4gK3sNCj4gPiArICBpZiAoUmVzZXJ2ZWQgIT0gMCkgew0KPiA+ICsgICAgSW5jcmVt ZW50RXJyb3JDb3VudCAoKTsNCj4gPiArICAgIFByaW50IChMIlxuRVJST1IgOiBSZXNlcnZlZCBm aWVsZCBzaG91bGQgYmUgMFxuIik7DQo+ID4gKyAgfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioN Cj4gPiArICBUaGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyByZXNlcnZlZCBmaWVsZHMuIEFueSByZXNl cnZlZCBmaWVsZCB3aXRoaW4gdGhlDQo+IE1QQU0NCj4gPiArICBzcGVjaWZpY2F0aW9uIG11c3Qg YmUgMC4NCj4gPiArDQo+ID4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgIFBvaW50ZXIgdG8gdGhl IHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiA+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgICBQ b2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRpb24uIEZvciB0aGlzDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgIHBhcnRpY3VsYXIgZnVuY3Rpb24sIGNvbnRleHQgaG9sZHMg dGhlIHNpemUgb2YgdGhlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkIGZp ZWxkIHRoYXQgbmVlZHMgdG8gYmUgdmFsaWRhdGVkLg0KPiA+ICsqKi8NCj4gPiArU1RBVElDDQo+ ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK1ZhbGlkYXRlUmVzZXJ2ZWRHZW5lcmljICgNCj4g PiArICBJTiBVSU5UOCAgKlB0ciwNCj4gPiArICBJTiBWT0lEICAgKkNvbnRleHQNCj4gPiArICAp DQo+ID4gK3sNCj4gPiArICBVSU5UNjQgIFJlc2VydmVkOw0KPiA+ICsNCj4gPiArICAvLyBJZiBD b250ZXh0IGlzIG5vdCBwYXNzZWQgb24sIGRvbid0IHZhbGlkYXRlLiB3aXRob3V0IHRoZSBsZW5n dGgsIGl0IGlzIG5vdA0KPiA+ICsgIC8vIHBvc3NpYmxlIHRvIGRlY29kZSB0aGUgcmVzZXJ2ZWQg ZmllbGQgb3IgcGxhbiBvdXQgYWxpZ25tZW50DQo+IHJlcXVpcmVtZW50cy4NCj4gPiArICBpZiAo Q29udGV4dCA9PSBOVUxMKSB7DQo+ID4gKyAgICByZXR1cm47DQo+ID4gKyAgfQ0KPiA+ICsNCj4g PiArICAvLyBPbmx5IHRob3NlIGNhc2VzIHdoaWNoIGFyZSBoYW5kbGVkIGN1cnJlbnRseSBoYXZl IGJlZW4gaW1wbGVtZW50ZWQuDQo+ID4gKyAgc3dpdGNoICgoVUlOVDY0KUNvbnRleHQpIHsNCj4g PiArICAgIGNhc2UgMToNCj4gPiArICAgICAgUmVzZXJ2ZWQgPSAqUHRyOw0KPiA+ICsgICAgICBi cmVhazsNCj4gPiArICAgIGNhc2UgMjoNCj4gPiArICAgICAgaWYgKCgoVUlOVDY0KVB0cikgJSAy ID09IDApIHsNCj4gPiArICAgICAgICBSZXNlcnZlZCA9ICooKFVJTlQxNiAqKVB0cik7DQo+ID4g KyAgICAgIH0gZWxzZSB7DQo+ID4gKyAgICAgICAgUmVzZXJ2ZWQgID0gKCooUHRyICsgMSkgPDwg OCk7DQo+ID4gKyAgICAgICAgUmVzZXJ2ZWQgfD0gKlB0cjsNCj4gPiArICAgICAgfQ0KPiA+ICsN Cj4gPiArICAgICAgYnJlYWs7DQo+ID4gKyAgICBjYXNlIDQ6DQo+ID4gKyAgICAgIGlmICgoKFVJ TlQ2NClQdHIpICUgNCA9PSAwKSB7DQo+ID4gKyAgICAgICAgUmVzZXJ2ZWQgPSAqKChVSU5UMzIg KilQdHIpOw0KPiA+ICsgICAgICB9IGVsc2Ugew0KPiA+ICsgICAgICAgIFJlc2VydmVkICA9ICgq KFB0ciArIDMpIDw8IDI0KTsNCj4gPiArICAgICAgICBSZXNlcnZlZCB8PSAoKihQdHIgKyAyKSA8 PCAxNik7DQo+ID4gKyAgICAgICAgUmVzZXJ2ZWQgfD0gKCooUHRyICsgMSkgPDwgOCk7DQo+ID4g KyAgICAgICAgUmVzZXJ2ZWQgfD0gKCpQdHIpOw0KPiA+ICsgICAgICB9DQo+ID4gKw0KPiA+ICsg ICAgICBicmVhazsNCj4gPiArICAgIGRlZmF1bHQ6DQo+ID4gKyAgICAgIHJldHVybjsNCj4gPiAr ICB9DQo+ID4gKw0KPiA+ICsgIFZhbGlkYXRlUmVzZXJ2ZWQgKFJlc2VydmVkKTsNCj4gPiArfQ0K PiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgRmllbGRzIHRoYXQgbmVlZCBhZGRpdGlvbmFsIGRlY29k aW5nIGNvdWxkIHVzZSB0aGlzIGZ1bmN0aW9uIHRvIHByaW50IG91dA0KPiB0aGUNCj4gPiArICBk ZWNvZGVkIHZhbHVlIGZvciBhIHBhcnRpY3VsYXIgZmllbGQuIFRoZSBkZWNvZGVkIHZhbHVlIGhh bmRsZWQgaW4gdGhpcw0KPiA+ICsgIGZ1bmN0aW9uIGlzIGEgc3RyaW5nLg0KPiA+ICsNCj4gPiAr ICBAcGFyYW0gW2luXSBJbmRlbnQgICAgICAgICAgICAgIE51bWJlciBvZiBzcGFjZXMgdG8gYWRk IHRvIHRoZSBnbG9iYWwgdGFibGUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGluZGVudC4gVGhlIGdsb2JhbCB0YWJsZSBpbmRlbnQgaXMgMCBieQ0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDsgaG93ZXZlciB0aGlzIHZhbHVlIGlz IHVwZGF0ZWQgb24NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5 IHRvIHRoZSBQYXJzZUFjcGkoKSBieSBhZGRpbmcgdGhlIGluZGVudA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgcHJvdmlkZWQgdG8gUGFyc2VBY3BpKCkgYW5k IHJlc3RvcmVkDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrIG9u IGV4aXQuICBUaGVyZWZvcmUgdGhlIHRvdGFsIGluZGVudCBpbg0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdGhlIG91dHB1dCBpcyBkZXBlbmRlbnQgb24gZnJvbSB3aGVy ZSB0aGlzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBp cyBjYWxsZWQuDQo+ID4gKyAgQHBhcmFtIFtpbl0gRmllbGRTdHIgICAgICAgICAgICBUaXRsZSBz dHJpbmcgZm9yIHRoZSBmaWVsZCBvZiBpbnRlcmVzdC4NCj4gPiArICBAcGFyYW0gW2luXSBEZWNv ZGVkU3RyICAgICAgICAgIERlY29kZWQgdmFsdWUgdG8gYmUgcHJpbnRlZCBmb3IgdGhlIEZpZWxk U3RyLg0KPiA+ICsqKi8NCj4gPiArU1RBVElDDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4g K1ByaW50RGVjb2RlZEZpZWxkICgNCj4gPiArICBJTiBVSU5UMzIgICAgICAgIEluZGVudCwNCj4g PiArICBJTiBDT05TVCBDSEFSMTYgICpGaWVsZFN0ciwNCj4gPiArICBJTiBDT05TVCBDSEFSMTYg ICpEZWNvZGVkU3RyDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgUHJpbnQgKEwiXG4iKTsNCj4g PiArICBQcmludEZpZWxkTmFtZSAoSW5kZW50LCBGaWVsZFN0cik7DQo+ID4gKyAgUHJpbnQgKERl Y29kZWRTdHIpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBUaGlzIGZ1bmN0aW9u IHZhbGlkYXRlcyB0aGUgTU1JTyBzaXplIHdpdGhpbiB0aGUgTVNDIG5vZGUgYm9keSBmb3INCj4g TVBBTSBBQ1BJDQo+ID4gKyAgdGFibGUuIE1QQU0gQUNQSSBzcGVjaWZpY2F0aW9uIHN0YXRlcyB0 aGF0IHRoZSBNTUlPIHNpemUgZm9yIGFuIE1TQw0KPiBoYXZpbmcgUENDDQo+ID4gKyAgdHlwZSBp bnRlcmZhY2Ugc2hvdWxkIGJlIHplcm8uDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSBbaW5dIFB0ciAg ICAgICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ID4gKyAgQHBh cmFtIFtpbl0gQ29udGV4dCAgICBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3JtYXRp b24uIEZvciB0aGlzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiwgY29u dGV4dCBob2xkcyB0aGUgcGFyZW50L2RvdWJsZSBwb2ludGVyIHRvIGENCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgIHZhcmlhYmxlIGhvbGRpbmcgdGhlIGludGVyZmFjZSB0eXBlLiBNYWtl IHN1cmUgdG8gY2FsbA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZ1bmN0aW9u IGFjY29yZGluZ2x5Lg0KPiA+ICsqKi8NCj4gPiArU1RBVElDDQo+ID4gK1ZPSUQNCj4gPiArRUZJ QVBJDQo+ID4gK1ZhbGlkYXRlTW1pb1NpemUgKA0KPiA+ICsgIElOIFVJTlQ4ICAqUHRyLA0KPiA+ ICsgIElOIFZPSUQgICAqQ29udGV4dA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIFVJTlQ4ICAg SW50ZXJmYWNlVHlwZTsNCj4gPiArICBVSU5UOCAgICoqSW50ZXJmYWNlVHlwZVBhcmVudFB0cjsN Cj4gPiArICBVSU5UMzIgIE1taW9TaXplOw0KPiA+ICsNCj4gPiArICBJbnRlcmZhY2VUeXBlUGFy ZW50UHRyID0gKFVJTlQ4ICoqKUNvbnRleHQ7DQo+IA0KPiBJIGRvbid0IHRoaW5rIHRoZXNlIGNv bW1lbnRzIGFyZSBuZWNlc3NhcnkgYXMgdGhpcyBpcyBnZW5lcmljIGZvciBhY3Bpdmlldy4NCg0K W1JvaGl0XSBJIGFkZGVkIHRoZXNlIGNvbW1lbnRzIGFzIEkgY291bGQgbm90IGZpbmQgYW55IG90 aGVyIHVzZS1jYXNlIG9mICpDb250ZXh0IHBvaW50ZXIgd2l0aGluIGFueSBwYXJzZXJzIChvciBh bnl3aGVyZSkuIFRoZXJlZm9yZSwgdGhlc2UgY29tbWVudHMgd2VyZSBhIHdheSB0byBzaG93IGhv dyAnTVBBTSBwYXJzZXInIHV0aWxpemVkIGNvbnRleHQgcG9pbnRlciBmb3IgZGlmZmVyZW50IHZh bGlkYXRvcnMuIA0KQWxzbywgdGhlIHdheSB3ZSB1c2UgY29udGV4dCB3aXRoaW4gVmFsaWRhdGVS ZXNlcnZlZEdlbmVyaWMgaXMgcXVpdGUgZGlmZmVyZW50IGZyb20gVmFsaWRhdGVNbWlvU2l6ZSBk dWUgdG8gY29tcGlsZXIgcmVzdHJpY3Rpb25zIG9uIHVzaW5nIGNvbnN0YW50cyBmb3IgaW5pdGlh bGl6ZXIgbGlzdHMuDQoNCklmIHRoZXkgc2VlbSBvYnZpb3VzLCBJIGNvdWxkIHJlbW92ZSB0aGVt LiBMZXQgbWUga25vdy4NCg0KPiANCj4gPiArICAvLyBDb250ZXh0ICAgIC0gZG91YmxlIHBvaW50 ZXIgdG8gaW50ZXJmYWNlIHR5cGUuIChSZWZlcg0KPiBNcGFtTXNjTm9kZVBhcnNlDQo+ID4gKyAg Ly8gICAgICAgICAgICAgIHRhYmxlKS4NCj4gPiArICAvLyAqQ29udGV4dCAgIC0gYWRkcmVzcyBv ZiBvYmplY3QgaG9sZGluZyBpbnRlcmZhY2UgdHlwZS4NCj4gPiArICAvLyAqKkNvbnRleHQgIC0g aW50ZXJmYWNlIHR5cGUuDQo+ID4gKyAgaWYgKCpJbnRlcmZhY2VUeXBlUGFyZW50UHRyID09IE5V TEwpIHsNCj4gPiArICAgIE1wYW1MZW5ndGhFcnJvciAoTCJJbnRlcmZhY2UgdHlwZSBub3Qgc2V0 ISIpOw0KPiA+ICsgICAgcmV0dXJuOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgSW50ZXJmYWNl VHlwZSA9ICoqSW50ZXJmYWNlVHlwZVBhcmVudFB0cjsNCj4gPiArPiArICBpZiAoSW50ZXJmYWNl VHlwZSA9PSBFRklfQUNQSV9NUEFNX0lOVEVSRkFDRV9QQ0MpIHsNCj4gPiArICAgIE1taW9TaXpl ID0gKigoVUlOVDMyICopUHRyKTsNCj4gPiArDQo+ID4gKyAgICBpZiAoTW1pb1NpemUgIT0gMCkg ew0KPiA+ICsgICAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiA+ICsgICAgICBQcmludCAo DQo+ID4gKyAgICAgICAgTCJcbkVSUk9SOiBNTUlPIHNpemUgc2hvdWxkIGJlIDAgZm9yIFBDQyBp bnRlcmZhY2UgdHlwZS4gU2l6ZSAtICV1XG4iLA0KPiA+ICsgICAgICAgIE1taW9TaXplDQo+ID4g KyAgICAgICAgKTsNCj4gPiArICAgIH0NCj4gPiArICB9DQo+ID4gK30NCj4gPiArDQo+ID4gKy8q Kg0KPiA+ICsgIFRoaXMgZnVuY3Rpb24gZGVjb2RlcyBhbmQgdmFsaWRhdGVzIHRoZSBsaW5rIHR5 cGUgZm9yIE1QQU0ncyBpbnRlcmNvbm5lY3QNCj4gPiArICBkZXNjcmlwdG9yLiBWYWxpZCBsaW5r cyBhcmUgb2YgTlVNQSBhbmQgUFJPQyB0eXBlLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gW2luXSBQ dHIgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCj4gPiAr ICBAcGFyYW0gW2luXSBDb250ZXh0ICAgICBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5m b3JtYXRpb24uIEZvciB0aGlzDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rp b24sIGNvbnRleHQgaXMgaWdub3JlZC4NCj4gPiArKiovDQo+ID4gK1NUQVRJQw0KPiA+ICtWT0lE DQo+ID4gK0VGSUFQSQ0KPiA+ICtEZWNvZGVMaW5rVHlwZSAoDQo+ID4gKyAgSU4gVUlOVDggICpQ dHIsDQo+ID4gKyAgSU4gVk9JRCAgICpDb250ZXh0DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAg VUlOVDggIExpbmtUeXBlOw0KPiA+ICsNCj4gPiArICBMaW5rVHlwZSA9ICpQdHI7DQo+ID4gKw0K PiA+ICsgIGlmIChMaW5rVHlwZSA9PSBFRklfQUNQSV9NUEFNX0xJTktfVFlQRV9OVU1BKSB7DQo+ ID4gKyAgICBQcmludERlY29kZWRGaWVsZCAoDQo+ID4gKyAgICAgIDIsDQo+IA0KPiBUaGUgbmFt ZSBvZiB0aGUgZmllbGQgc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIHByaW50ZWQsDQo+IEkgbSBu b3Qgc3VyZSBJIHNlZSB0aGUgdXNlIG9mIHByaW50aW5nOiAiKiBMaW5rIHR5cGUgZGVjb2RlZCIu DQo+IFNpbWlsYXIgY29tbWVudCBmb3IgdGhlIFByaW50RGVjb2RlZEZpZWxkKCkgaW4gZ2VuZXJh bCwgSSB0aGluaw0KPiBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gcHJpbnQgdGhlIHZhbHVlIGFuZCB0 aGUgaW50ZXJwcmV0YXRpb24gb2YNCj4gdGhlIHZhbHVlLCBhczogTlVNQSAoMCkgZm9yIGluc3Rh bmNlLg0KPiANCg0KW1JvaGl0XSBBY2sgLSBJIHNlZSB0aGF0IEknbSBhZGRpbmcgYSBcbiB0byBw cmludCB7ZGVjb2RlZCBzdHJpbmcgLSBkZWNvZGUgdmFsdWV9LiBTbywgSSBjb3VsZCBwcm9iYWJs eSBoYXZlIHRoZSByYXcgZm9sbG93ZWQgYnkgZGVjb2RlZCB2YWx1ZSBvbiB0aGUgc2FtZSBsaW5l IGJ5IGF2b2lkaW5nIHRoZSBuZXdsaW5lLiBJdCB3b3VsZCBiZSB0aGUgb3RoZXIgd2F5IGFyb3Vu ZCBJIGFzc3VtZSAgLSAwIChOVU1BKS4NCg0KPiA+ICsgICAgICBMIiogTGluayB0eXBlIGRlY29k ZWQiLA0KPiA+ICsgICAgICBMIk5VTUEiDQo+ID4gKyAgICAgICk7DQo+ID4gKyAgfSBlbHNlIGlm IChMaW5rVHlwZSA9PSBFRklfQUNQSV9NUEFNX0xJTktfVFlQRV9QUk9DKSB7DQo+ID4gKyAgICBQ cmludERlY29kZWRGaWVsZCAoDQo+ID4gKyAgICAgIDIsDQo+ID4gKyAgICAgIEwiKiBMaW5rIHR5 cGUgZGVjb2RlZCIsDQo+ID4gKyAgICAgIEwiUFJPQyINCj4gPiArICAgICAgKTsNCj4gPiArICB9 IGVsc2Ugew0KPiA+ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPiArICAgIFByaW50 ICgNCj4gPiArICAgICAgTCJcbkVSUk9SOiBJbnZhbGlkIGxpbmsgdHlwZSAtICV1XG4iLA0KPiA+ ICsgICAgICAoVUlOVDMyKUxpbmtUeXBlDQo+ID4gKyAgICAgICk7DQo+ID4gKyAgfQ0KPiA+ICt9 DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBUaGlzIGZ1bmN0aW9uIGRlY29kZXMgdGhlIGhhcmR3 YXJlIElEIGZpZWxkIHByZXNlbnQgd2l0aGluIE1QQU0gQUNQSQ0KPiB0YWJsZS4NCj4gPiArICBU aGUgc3BlY2lmaWNhdGlvbiBzdGF0ZXMgdGhhdCB0aGUgaGFyZHdhcmUgSUQgaGFzIHRvIGJlIHNl dCB0byB6ZXJvIGlmIG5vdA0KPiA+ICsgIGJlaW5nIHVzZWQuDQo+ID4gKw0KPiA+ICsgIEBwYXJh bSBbaW5dIFB0ciAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRh Lg0KPiA+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgICAgIFBvaW50ZXIgdG8gY29udGV4dCBzcGVj aWZpYyBpbmZvcm1hdGlvbi4gRm9yIHRoaXMNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICBmdW5jdGlvbiwgY29udGV4dCBpcyBpZ25vcmVkLg0KPiA+ICsqKi8NCj4gPiArU1RBVElDDQo+ ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK0RlY29kZUhhcmR3YXJlSWQgKA0KPiA+ICsgIElO IFVJTlQ4ICAqUHRyLA0KPiA+ICsgIElOIFZPSUQgICAqQ29udGV4dA0KPiA+ICsgICkNCj4gPiAr ew0KPiA+ICsgIFVJTlQ2NCAgSGFyZHdhcmVJZDsNCj4gPiArDQo+IA0KPiBJIGRvbid0IHRoaW5r IHRoaXMgY29tbWVudCBpcyBuZWNlc3NhcnkuDQoNCltSb2hpdF0gQWNrDQoNCj4gDQo+ID4gKyAg Ly8gSGFyZHdhcmUgSWQgZmllbGRzIHdpdGhpbiBNUEFNIHRhYmxlIGFsd2F5cyBmYWxscyBvbiBv ZmZzZXQgZGl2aXNpYmxlIGJ5DQo+IDguDQo+ID4gKyAgLy8gUHJvY2VlZCB0byBkZXJlZmVyZW5j ZSA4IGJ5dGVzIGluIG9uZSBnby4NCj4gPiArICBIYXJkd2FyZUlkID0gKigoVUlOVDY0ICopUHRy KTsNCj4gPiArDQo+ID4gKyAgaWYgKEhhcmR3YXJlSWQgIT0gMCkgew0KPiA+ICsgICAgUHJpbnQg KEwiXG4iKTsNCj4gDQo+IElzIGl0IG5lY2Vzc2FyeSB0byBwcmludCAnKiBIYXJkd2FyZSBJRCB0 eXBlIGRlY29kZWQnIGFzIHRoZSBmaWVsZCBuYW1lIHNob3VsZA0KPiBoYXZlIGFscmVhZHkgYmVl biBwcmludGVkID8NCj4gDQoNCltSb2hpdF0gQWNrLiAocmVzcG9uZGVkIHRvIGEgc2ltaWxhciBj b21tZW50LCBhYm92ZSkNCg0KPiA+ICsgICAgUHJpbnRGaWVsZE5hbWUgKDIsIEwiKiBIYXJkd2Fy ZSBJRCB0eXBlIGRlY29kZWQiKTsNCj4gPiArICAgIER1bXA4Q2hhcnMgKE5VTEwsIFB0cik7DQo+ ID4gKyAgfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBUaGlzIGZ1bmN0aW9uIGRl Y29kZXMgYW5kIHZhbGlkYXRlcyB0aGUgaW50ZXJmYWNlIHR5cGUgZm9yIE1QQU0uIFZhbGlkDQo+ ID4gKyAgaW50ZXJmYWNlcyBhcmUgb2YgTU1JTyBhbmQgUENDIHR5cGUuDQo+ID4gKw0KPiA+ICsg IEBwYXJhbSBbaW5dIFB0ciAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVs ZCBkYXRhLg0KPiA+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgICAgIFBvaW50ZXIgdG8gY29udGV4 dCBzcGVjaWZpYyBpbmZvcm1hdGlvbi4gRm9yIHRoaXMNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICBmdW5jdGlvbiwgY29udGV4dCBpcyBpZ25vcmVkLg0KPiA+ICsqKi8NCj4gPiArU1RB VElDDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK0RlY29kZUludGVyZmFjZVR5cGUgKA0K PiA+ICsgIElOIFVJTlQ4ICAqUHRyLA0KPiA+ICsgIElOIFZPSUQgICAqQ29udGV4dA0KPiA+ICsg ICkNCj4gPiArew0KPiA+ICsgIFVJTlQ4ICBJbnRlcmZhY2VUeXBlOw0KPiA+ICsNCj4gPiArICBJ bnRlcmZhY2VUeXBlID0gKlB0cjsNCj4gPiArDQo+ID4gKyAgaWYgKEludGVyZmFjZVR5cGUgPT0g RUZJX0FDUElfTVBBTV9JTlRFUkZBQ0VfTU1JTykgew0KPiA+ICsgICAgUHJpbnREZWNvZGVkRmll bGQgKA0KPiA+ICsgICAgICAyLA0KPiA+ICsgICAgICBMIiogSW50ZXJmYWNlIHR5cGUgZGVjb2Rl ZCIsDQo+ID4gKyAgICAgIEwiTU1JTyINCj4gPiArICAgICAgKTsNCj4gPiArICB9IGVsc2UgaWYg KEludGVyZmFjZVR5cGUgPT0gRUZJX0FDUElfTVBBTV9JTlRFUkZBQ0VfUENDKSB7DQo+ID4gKyAg ICBQcmludERlY29kZWRGaWVsZCAoDQo+ID4gKyAgICAgIDIsDQo+ID4gKyAgICAgIEwiKiBJbnRl cmZhY2UgdHlwZSBkZWNvZGVkIiwNCj4gPiArICAgICAgTCJQQ0MiDQo+ID4gKyAgICAgICk7DQo+ ID4gKyAgfSBlbHNlIHsNCj4gPiArICAgIEluY3JlbWVudEVycm9yQ291bnQgKCk7DQo+ID4gKyAg ICBQcmludCAoDQo+ID4gKyAgICAgIEwiXG5FUlJPUjogSQl5cGUgLSAldVxuIiwNCj4gPiArICAg ICAgKFVJTlQzMilJbnRlcmZhY2VUeXBlDQo+ID4gKyAgICAgICk7DQo+ID4gKyAgfQ0KPiA+ICt9 DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBUaGlzIGZ1bmN0aW9uIGRlY29kZXMgYW5kIHZhbGlk YXRlcyB0aGUgaW50ZXJydXB0IGZsYWdzIHByZXNlbnQgaW4gdGhlDQo+IE1QQU0NCj4gPiArICBN U0Mgbm9kZSBib2R5Lg0KPiA+ICsNCj4gPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgIFBvaW50 ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmaWVsZCBkYXRhLg0KPiA+ICsgIEBwYXJhbSBbaW5dIENv bnRleHQgICAgUG9pbnRlciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uLiBGb3IgdGhp cw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24sIGNvbnRleHQgaG9sZHMg dGhlIHBhcmVudC9kb3VibGUgcG9pbnRlciB0byBhDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICB2YXJpYWJsZSBob2xkaW5nIHRoZSBpbnRlcnJ1cHQgZ3Npdi4gTWFrZSBzdXJlIHRvIGNh bGwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmdW5jdGlvbiBhY2NvcmRpbmds eS4NCj4gPiArKiovDQo+ID4gK1NUQVRJQw0KPiA+ICtWT0lEDQo+ID4gK0VGSUFQSQ0KPiA+ICtE ZWNvZGVJbnRlcnJ1cHRGbGFncyAoDQo+ID4gKyAgSU4gVUlOVDggICpQdHIsDQo+ID4gKyAgSU4g Vk9JRCAgICpDb250ZXh0DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgVUlOVDggICBJbnRlcnJ1 cHRNb2RlOw0KPiA+ICsgIFVJTlQ4ICAgSW50ZXJydXB0VHlwZTsNCj4gPiArICBVSU5UOCAgIElu dGVycnVwdEFmZmluaXR5VHlwZTsNCj4gPiArICBVSU5UOCAgIEludGVycnVwdEFmZmluaXR5VmFs aWQ7DQo+ID4gKyAgVUlOVDMyICBJbnRlcnJ1cHRGbGFnOw0KPiA+ICsgIFVJTlQzMiAgSW50ZXJy dXB0R3NpdjsNCj4gPiArICBVSU5UMzIgICoqSW50ZXJydXB0R3NpdlBhcmVudFB0cjsNCj4gPiAr ICBVSU5UMzIgIFJlc2VydmVkOw0KPiA+ICsNCj4gPiArICBJbnRlcnJ1cHRHc2l2UGFyZW50UHRy ID0gKFVJTlQzMiAqKilDb250ZXh0Ow0KPiA+ICsgIC8vIENvbnRleHQgICAgLSBkb3VibGUgcG9p bnRlciB0byB0aGUgZ3NpdiBvYmplY3QuIChSZWZlcg0KPiBNcGFtTXNjTm9kZVBhcnNlDQo+ID4g KyAgLy8gICAgICAgICAgICAgIHRhYmxlKS4NCj4gPiArICAvLyAqQ29udGV4dCAgIC0gcG9pbnRl ciB0byBnc2l2IG9iamVjdC4NCj4gPiArICAvLyAqKkNvbnRleHQgIC0gZ3Npdi4NCj4gPiArICBp ZiAoKkludGVycnVwdEdzaXZQYXJlbnRQdHIgPT0gTlVMTCkgew0KPiA+ICsgICAgTXBhbUxlbmd0 aEVycm9yIChMIkludGVycnVwdCBnc2l2IG5vdCBzZXQhIik7DQo+ID4gKyAgICByZXR1cm47DQo+ ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBJbnRlcnJ1cHRHc2l2ID0gKipJbnRlcnJ1cHRHc2l2UGFy ZW50UHRyOw0KPiA+ICsNCj4gPiArICAvLyBJZiBJbnRlcnJ1cHRzIGFyZSBhYnNlbnQgZm9yIHNv bWUgcmVhc29uLCB0aGUgZmxhZ3Mgd291bGRuJ3QgbmVlZCBhbnkNCj4gPiArICAvLyBwYXJzaW5n Lg0KPiA+ICsgIGlmIChJbnRlcnJ1cHRHc2l2ID09IDApIHsNCj4gPiArICAgIHJldHVybjsNCj4g PiArICB9DQo+IA0KPiBJIHRoaW5rIHRoZXJlIGlzIHNvbWV0aGluZyB0byBwYXJzZSBiaXRmaWVs ZHMgaW4gYWNwaXZpZXcsIGNmOg0KPiBodHRwczovL2VkazIuZ3JvdXBzLmlvL2cvZGV2ZWwvbWVz c2FnZS8xMDUwMjkNCj4gDQo+IFdvdWxkIGl0IGZpdCB0aGlzIGZpZWxkIHBhcnNpbmcgYXN3ZWxs ID8NCj4gDQoNCltSb2hpdF0gU29ycnksIHRoZSBsaW5rIHBvaW50cyB0byBWMiBvZiB0aGlzIHBh dGNoLiBXYXMgdGhpcyB0aGUgaW50ZW5kZWQgbGluaz8NCg0KPiA+ICsNCj4gPiArICBJbnRlcnJ1 cHRGbGFnID0gKigoVUlOVDMyICopUHRyKTsNCj4gPiArDQo+ID4gKyAgLy8gRGVjb2RlIGludGVy cnVwdCBtb2RlLg0KPiA+ICsgIEludGVycnVwdE1vZGUgPSAoSW50ZXJydXB0RmxhZyAmDQo+IEVG SV9BQ1BJX01QQU1fSU5URVJSVVBUX01PREVfTUFTSykNCj4gPiArICAgICAgICAgICAgICAgICAg Pj4gRUZJX0FDUElfTVBBTV9JTlRFUlJVUFRfTU9ERV9TSElGVDsNCj4gPiArDQo+ID4gKyAgaWYg KEludGVycnVwdE1vZGUgPT0gRUZJX0FDUElfTVBBTV9JTlRFUlJVUFRfTEVWRUxfVFJJR0dFUkVE KSB7DQo+ID4gKyAgICBQcmludERlY29kZWRGaWVsZCAoDQo+ID4gKyAgICAgIDIsDQo+ID4gKyAg ICAgIEwiKiBJbnRlcnJ1cHQgbW9kZSBkZWNvZGVkIiwNCj4gPiArICAgICAgTCJMZXZlbCB0cmln Z2VyZWQiDQo+ID4gKyAgICAgICk7DQo+ID4gKyAgfSBlbHNlIHsNCj4gPiArICAgIFByaW50RGVj b2RlZEZpZWxkICgNCj4gPiArICAgICAgMiwNCj4gPiArICAgICAgTCIqIEludGVycnVwdCBtb2Rl IGRlY29kZWQiLA0KPiA+ICsgICAgICBMIkVkZ2UgdHJpZ2dlcmVkIg0KPiA+ICsgICAgICApOw0K PiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgLy8gRGVjb2RlIGludGVycnVwdCB0eXBlLg0KPiA+ICsg IEludGVycnVwdFR5cGUgPSAoSW50ZXJydXB0RmxhZyAmDQo+IEVGSV9BQ1BJX01QQU1fSU5URVJS VVBUX1RZUEVfTUFTSykNCj4gPiArICAgICAgICAgICAgICAgICAgPj4gRUZJX0FDUElfTVBBTV9J TlRFUlJVUFRfVFlQRV9TSElGVDsNCj4gPiArDQo+ID4gKyAgaWYgKEludGVycnVwdFR5cGUgPT0g RUZJX0FDUElfTVBBTV9JTlRFUlJVUFRfV0lSRUQpIHsNCj4gPiArICAgIFByaW50RGVjb2RlZEZp ZWxkICgNCj4gPiArICAgICAgMiwNCj4gPiArICAgICAgTCIqIEludGVycnVwdCB0eXBlIGRlY29k ZWQiLA0KPiA+ICsgICAgICBMIldpcmVkIGludGVycnVwdCINCj4gPiArICAgICAgKTsNCj4gPiAr ICB9IGVsc2Ugew0KPiA+ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPiArICAgIFBy aW50IChMIlxuIik7DQo+ID4gKyAgICBQcmludEZpZWxkTmFtZSAoMiwgTCIqIEludGVycnVwdCB0 eXBlIGRlY29kZWQiKTsNCj4gPiArICAgIFByaW50IChMIiV1IiwgSW50ZXJydXB0VHlwZSk7DQo+ ID4gKyAgICBQcmludCAoTCJcbkVSUk9SIDogSW50ZXJydXB0IHR5cGUgcmVzZXJ2ZWRcbiIpOw0K PiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgLy8gRGVjb2RlIGFmZmluaXR5IHZhbGlkLg0KPiA+ICsg IEludGVycnVwdEFmZmluaXR5VmFsaWQgPSAoSW50ZXJydXB0RmxhZw0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJiBFRklfQUNQSV9NUEFNX0lOVEVSUlVQVF9BRkZJTklUWV9WQUxJ RF9NQVNLKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICA+PiBFRklfQUNQSV9NUEFN X0lOVEVSUlVQVF9BRkZJTklUWV9WQUxJRF9TSElGVDsNCj4gPiArDQo+ID4gKyAgaWYgKEludGVy cnVwdEFmZmluaXR5VmFsaWQgIT0NCj4gRUZJX0FDUElfTVBBTV9JTlRFUlJVUFRfQUZGSU5JVFlf VkFMSUQpIHsNCj4gPiArICAgIFByaW50RGVjb2RlZEZpZWxkICgNCj4gPiArICAgICAgMiwNCj4g PiArICAgICAgTCIqIEludGVycnVwdCBhZmZpbml0eSB2YWxpZCBkZWNvZGVkIiwNCj4gPiArICAg ICAgTCJBZmZpbml0eSBub3QgdmFsaWQiDQo+ID4gKyAgICAgICk7DQo+ID4gKyAgfSBlbHNlIHsN Cj4gPiArICAgIFByaW50RGVjb2RlZEZpZWxkICgNCj4gPiArICAgICAgMiwNCj4gPiArICAgICAg TCIqIEludGVycnVwdCBhZmZpbml0eSB2YWxpZCBkZWNvZGVkIiwNCj4gPiArICAgICAgTCJBZmZp bml0eSB2YWxpZCINCj4gPiArICAgICAgKTsNCj4gPiArDQo+ID4gKyAgICAvLyBEZWNvZGUgYWZm aW5pdHkgdHlwZS4NCj4gPiArICAgIEludGVycnVwdEFmZmluaXR5VHlwZSA9IChJbnRlcnJ1cHRG bGFnDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiBFRklfQUNQSV9NUEFNX0lO VEVSUlVQVF9BRkZJTklUWV9UWVBFX01BU0spDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICA+PiBFRklfQUNQSV9NUEFNX0lOVEVSUlVQVF9BRkZJTklUWV9UWVBFX1NISUZUOw0KPiA+ ICsNCj4gPiArICAgIGlmIChJbnRlcnJ1cHRBZmZpbml0eVR5cGUgPT0NCj4gRUZJX0FDUElfTVBB TV9JTlRFUlJVUFRfUFJPQ0VTU09SX0FGRklOSVRZKSB7DQo+ID4gKyAgICAgIFByaW50RGVjb2Rl ZEZpZWxkICgNCj4gPiArICAgICAgICAyLA0KPiA+ICsgICAgICAgIEwiKiBJbnRlcnJ1cHQgYWZm aW5pdHkgdHlwZSBkZWNvZGVkIiwNCj4gPiArICAgICAgICBMIlByb2Nlc3NvciBhZmZpbml0eSIN Cj4gPiArICAgICAgICApOw0KPiA+ICsgICAgfSBlbHNlIHsNCj4gPiArICAgICAgUHJpbnREZWNv ZGVkRmllbGQgKA0KPiA+ICsgICAgICAgIDIsDQo+ID4gKyAgICAgICAgTCIqIEludGVycnVwdCBh ZmZpbml0eSB0eXBlIGRlY29kZWQiLA0KPiA+ICsgICAgICAgIEwiUHJvY2Vzc29yIGNvbnRhaW5l ciBhZmZpbml0eSINCj4gPiArICAgICAgICApOw0KPiA+ICsgICAgfQ0KPiA+ICsgIH0NCj4gPiAr DQo+ID4gKyAgLy8gRGVjb2RlIHJlc2VydmVkIGZpZWxkLg0KPiA+ICsgIFJlc2VydmVkID0gKElu dGVycnVwdEZsYWcgJg0KPiBFRklfQUNQSV9NUEFNX0lOVEVSUlVQVF9SRVNFUlZFRF9NQVNLKQ0K PiA+ICsgICAgICAgICAgICAgPj4gRUZJX0FDUElfTVBBTV9JTlRFUlJVUFRfUkVTRVJWRURfU0hJ RlQ7DQo+ID4gKyAgUHJpbnQgKEwiXG4iKTsNCj4gPiArICBQcmludEZpZWxkTmFtZSAoMiwgTCIq IFJlc2VydmVkIGRlY29kZWQiKTsNCj4gPiArICBQcmludCAoTCIldSIsIFJlc2VydmVkKTsNCj4g PiArDQo+ID4gKyAgVmFsaWRhdGVSZXNlcnZlZCAoUmVzZXJ2ZWQpOw0KPiA+ICt9DQo+ID4gKw0K PiA+ICsvKioNCj4gPiArICBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBHZW5lcmlj IEFDUEkgTVBBTSB0YWJsZSBoZWFkZXIuDQo+ID4gKyoqLw0KPiA+ICtTVEFUSUMgQ09OU1QgQUNQ SV9QQVJTRVIgIE1wYW1QYXJzZXJbXSA9IHsNCj4gPiArICBQQVJTRV9BQ1BJX0hFQURFUiAoJkFj cGlIZHJJbmZvKQ0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgQUNQSV9QQVJTRVIg YXJyYXkgZGVzY3JpYmluZyB0aGUgTVBBTSBNU0Mgbm9kZSBvYmplY3QuDQo+ID4gKyoqLw0KPiA+ ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgIE1wYW1Nc2NOb2RlUGFyc2VyW10gPSB7DQo+ID4g KyAgeyBMIkxlbmd0aCIsICAgICAgICAgICAgICAgICAgICAgICAyLCAwLCAgTCIldSIsICAgIE5V TEwsDQo+ID4gKyAgICAoVk9JRCAqKikmTXBhbU1zY05vZGVMZW5ndGgsIE5VTEwsIE5VTEwgfSwN Cj4gPiArICAvLyBPbmNlIEludGVyZmFjZSB0eXBlIGlzIGRlY29kZWQsIHRoZSBhZGRyZXNzIG9m IGludGVyZmFjZSB0eXBlIGZpZWxkIGlzDQo+ID4gKyAgLy8gY2FwdHVyZWQgaW50byBJbnRlcmZh Y2VUeXBlIHBvaW50ZXIgc28gdGhhdCBpdCBjb3VsZCBiZSB1c2VkIHRvIGNoZWNrIGlmDQo+ID4g KyAgLy8gTU1JTyBTaXplIGZpZWxkIGlzIHNldCBhcyBwZXIgdGhlIHNwZWNpZmljYXRpb24uDQo+ ID4gKyAgeyBMIkludGVyZmFjZSB0eXBlIiwgICAgICAgICAgICAgICAxLCAyLCAgTCIweCV4Iiwg IE5VTEwsDQo+ID4gKyAgICAoVk9JRCAqKikmSW50ZXJmYWNlVHlwZSwgRGVjb2RlSW50ZXJmYWNl VHlwZSwgTlVMTCB9LA0KPiA+ICsgIHsgTCJSZXNlcnZlZCIsICAgICAgICAgICAgICAgICAgICAg MSwgMywgIEwiMHgleCIsICBOVUxMLA0KPiA+ICsgICAgTlVMTCwgVmFsaWRhdGVSZXNlcnZlZEdl bmVyaWMsIChWT0lEICopMSB9LA0KPiA+ICsgIHsgTCJJZGVudGlmaWVyIiwgICAgICAgICAgICAg ICAgICAgNCwgNCwgIEwiJXUiLCAgICBOVUxMLA0KPiA+ICsgICAgTlVMTCwgTlVMTCwgTlVMTCB9 LA0KPiA+ICsgIHsgTCJCYXNlIGFkZHJlc3MiLCAgICAgICAgICAgICAgICAgOCwgOCwgIEwiMHgl bHgiLCBOVUxMLA0KPiA+ICsgICAgTlVMTCwgTlVMTCwgTlVMTCB9LA0KPiA+ICsgIHsgTCJNTUlP IFNpemUiLCAgICAgICAgICAgICAgICAgICAgNCwgMTYsIEwiMHgleCIsICBOVUxMLA0KPiA+ICsg ICAgTlVMTCwgVmFsaWRhdGVNbWlvU2l6ZSwgKFZPSUQgKiopJkludGVyZmFjZVR5cGUgfSwNCj4g PiArICB7IEwiT3ZlcmZsb3cgaW50ZXJydXB0IiwgICAgICAgICAgIDQsIDIwLCBMIiV1IiwgICAg TlVMTCwNCj4gPiArICAgIChWT0lEICoqKSZPdmVyZmxvd0ludGVycnVwdCwgTlVMTCwgTlVMTCB9 LA0KPiA+ICsgIHsgTCJPdmVyZmxvdyBpbnRlcnJ1cHQgZmxhZ3MiLCAgICAgNCwgMjQsIEwiMHgl eCIsICBOVUxMLA0KPiA+ICsgICAgLy8gSW5pdGlhbGl6ZXIgbGlzdCBoYXMgdG8gaGF2ZSBjb25z dGFudHMuIFBhc3MgdGhlIGFkZHJlc3Mgb2YNCj4gPiArICAgIC8vIE92ZXJmbG93SW50ZXJydXB0 IHRvIHNhdGlzZnkgdGhpcy4gV2hpbGUgdXNpbmcgaXQgd2l0aGluIHRoZSB2YWxpZGF0b3INCj4g PiArICAgIC8vIG1ha2Ugc3VyZSB0byBkZXJlZmVyZW5jZSBhY2NvcmRpbmdseS4NCj4gPiArICAg IE5VTEwsIERlY29kZUludGVycnVwdEZsYWdzLCAoVk9JRCAqKSZPdmVyZmxvd0ludGVycnVwdCB9 LA0KPiA+ICsgIHsgTCJSZXNlcnZlZDEiLCAgICAgICAgICAgICAgICAgICAgNCwgMjgsIEwiMHgl eCIsICBOVUxMLA0KPiA+ICsgICAgTlVMTCwgVmFsaWRhdGVSZXNlcnZlZEdlbmVyaWMsIChWT0lE ICopNCB9LA0KPiA+ICsgIHsgTCJPdmVyZmxvdyBpbnRlcnJ1cHQgYWZmaW5pdHkiLCAgNCwgMzIs IEwiMHgleCIsICBOVUxMLA0KPiA+ICsgICAgTlVMTCwgTlVMTCwgTlVMTCB9LA0KPiA+ICsgIHsg TCJFcnJvciBpbnRlcnJ1cHQiLCAgICAgICAgICAgICAgNCwgMzYsIEwiJXUiLCAgICBOVUxMLA0K PiA+ICsgICAgKFZPSUQgKiopJkVycm9ySW50ZXJydXB0LCBOVUxMLCBOVUxMIH0sDQo+ID4gKyAg eyBMIkVycm9yIGludGVycnVwdCBmbGFncyIsICAgICAgICA0LCA0MCwgTCIweCV4IiwgIE5VTEws DQo+ID4gKyAgICAvLyBJbml0aWFsaXplciBsaXN0IGhhcyB0byBoYXZlIGNvbnN0YW50cy4gUGFz cyB0aGUgYWRkcmVzcyBvZg0KPiA+ICsgICAgLy8gT3ZlcmZsb3dJbnRlcnJ1cHQgdG8gc2F0aXNm eSB0aGlzLiBXaGlsZSB1c2luZyBpdCB3aXRoaW4gdGhlIHZhbGlkYXRvcg0KPiA+ICsgICAgLy8g bWFrZSBzdXJlIHRvIGRlcmVmZXJlbmNlIGFjY29yZGluZ2x5Lg0KPiA+ICsgICAgTlVMTCwgRGVj b2RlSW50ZXJydXB0RmxhZ3MsIChWT0lEICopJkVycm9ySW50ZXJydXB0IH0sDQo+ID4gKyAgeyBM IlJlc2VydmVkMiIsICAgICAgICAgICAgICAgICAgICA0LCA0NCwgTCIweCV4IiwgIE5VTEwsDQo+ ID4gKyAgICBOVUxMLCBWYWxpZGF0ZVJlc2VydmVkR2VuZXJpYywgKFZPSUQgKik0IH0sDQo+ID4g KyAgeyBMIkVycm9yIGludGVycnVwdCBhZmZpbml0eSIsICAgICA0LCA0OCwgTCIweCV4IiwgIE5V TEwsDQo+ID4gKyAgICBOVUxMLCBOVUxMLCBOVUxMIH0sDQo+ID4gKyAgeyBMIk1BWF9OUkRZX1VT RUMiLCAgICAgICAgICAgICAgICA0LCA1MiwgTCIweCV4IiwgIE5VTEwsDQo+ID4gKyAgICBOVUxM LCBOVUxMLCBOVUxMIH0sDQo+ID4gKyAgeyBMIkhhcmR3YXJlIElEIG9mIGxpbmtlZCBkZXZpY2Ui LCA4LCA1NiwgTCIweCVseCIsIE5VTEwsDQo+ID4gKyAgICBOVUxMLCBEZWNvZGVIYXJkd2FyZUlk LCBOVUxMIH0sDQo+ID4gKyAgeyBMIkluc3RhbmNlIElEIG9mIGxpbmtlZCBkZXZpY2UiLCA0LCA2 NCwgTCIweCV4IiwgIE5VTEwsDQo+ID4gKyAgICBOVUxMLCBOVUxMLCBOVUxMIH0sDQo+ID4gKyAg eyBMIk51bWJlciBvZiByZXNvdXJjZSBub2RlcyIsICAgICA0LCA2OCwgTCIldSIsICAgIE5VTEws DQo+ID4gKyAgICAoVk9JRCAqKikmTnVtYmVyT2ZNc2NSZXNvdXJjZXMsIE5VTEwsIE5VTEwgfQ0K PiA+ICt9Ow0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3Jp YmluZyB0aGUgTVBBTSBNU0MgcmVzb3VyY2UgZmllbGRzIHRpbGwgbG9jYXRvcg0KPiB0eXBlLg0K PiA+ICsqKi8NCj4gPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSICBNcGFtTXNjUmVzb3VyY2VQ YXJzZXJbXSA9IHsNCj4gPiArICB7IEwiSWRlbnRpZmllciIsICAgNCwgMCwgTCIldSIsICAgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTCB9LA0KPiA+ICsgIHsgTCJSSVMgaW5kZXgiLCAgICAxLCA0LCBM IiV1IiwgICBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMIH0sDQo+ID4gKyAgeyBMIlJlc2VydmVkMSIs ICAgIDIsIDUsIEwiMHgleCIsIE5VTEwsDQo+ID4gKyAgICBOVUxMLCBWYWxpZGF0ZVJlc2VydmVk R2VuZXJpYywgKFZPSUQgKikyIH0sDQo+ID4gKyAgeyBMIkxvY2F0b3IgdHlwZSIsIDEsIDcsIEwi MHgleCIsIE5VTEwsDQo+ID4gKyAgICAoVk9JRCAqKikmTG9jYXRvclR5cGUsDQo+ID4gKyAgICBO VUxMLCBOVUxMIH0NCj4gPiArfTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIEFDUElfUEFSU0VS IGFycmF5IGRlc2NyaWJpbmcgdGhlIE1QQU0gTVNDIHJlc291cmNlIGxvY2F0b3IgZmllbGQuDQo+ ID4gKyoqLw0KPiA+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgIE1wYW1Nc2NSZXNvdXJjZUxv Y2F0b3JQYXJzZXJbXSA9IHsNCj4gPiArICB7IEwiTG9jYXRvciIsIDEyLCAwLCBOVUxMLCBOVUxM LCAoVk9JRCAqKikmTG9jYXRvciwgTlVMTCwNCj4gPiArICAgIE5VTEwgfQ0KPiA+ICt9Ow0KPiA+ ICsNCj4gPiArLyoqDQo+ID4gKyAgQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgTVBB TSBNU0MgcmVzb3VyY2UncyBmdW5jdGlvbmFsDQo+IGRlcGVuZGVuY2llcw0KPiA+ICsgIGNvdW50 Lg0KPiA+ICsqKi8NCj4gPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSDQo+IE1wYW1Nc2NGdW5j dGlvbmFsRGVwZW5kZW5jeUNvdW50UGFyc2VyW10gPSB7DQo+ID4gKyAgeyBMIk51bWJlciBvZiBm dW5jIGRlcGVuZGVuY2llcyIsIDQsIDAsIEwiJXUiLCBOVUxMLA0KPiA+ICsgICAgKFZPSUQgKiop Jk51bWJlck9mRnVuY3Rpb25hbERlcGVuZGVuY2llcywgTlVMTCwgTlVMTCB9DQo+ID4gK307DQo+ ID4gKw0KPiA+ICsvKioNCj4gPiArICBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBN UEFNIE1TQyByZXNvdXJjZSdzIGZ1bmN0aW9uYWwNCj4gZGVwZW5kZW5jaWVzLg0KPiA+ICsqKi8N Cj4gPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSICBNcGFtTXNjRnVuY3Rpb25hbERlcGVuZGVu Y3lQYXJzZXJbXSA9IHsNCj4gPiArICB7IEwiUHJvZHVjZXIiLCA0LCAwLCBMIjB4JXgiLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMIH0sDQo+ID4gKyAgeyBMIlJlc2VydmVkIiwgNCwgNCwgTCIweCV4 IiwgTlVMTCwNCj4gPiArICAgIE5VTEwsIFZhbGlkYXRlUmVzZXJ2ZWRHZW5lcmljLCAoVk9JRCAq KTQgfSwNCj4gPiArfTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIEFDUElfUEFSU0VSIGFycmF5 IGRlc2NyaWJpbmcgdGhlIGludGVyY29ubmVjdCBkZXNjcmlwdG9yIHRhYmxlIGFzc29jaWF0ZWQN Cj4gd2l0aA0KPiA+ICsgIHRoZSBpbnRlcmNvbm5lY3QgbG9jYXRvciB0eXBlLg0KPiA+ICsqKi8N Cj4gPiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSICBNcGFtSW50ZXJjb25uZWN0RGVzY3JpcHRv clRhYmxlUGFyc2VyW10gPSB7DQo+ID4gKyAgeyBMIlNpZ25hdHVyZSIsICAgICAgICAgICAgICAg ICAgIDE2LCAwLA0KPiA+ICsgICAgTCIleCV4JXgleC0leCV4LSV4JXgtJXgleC0leCV4JXgleCV4 JXgiLCBEdW1wMTZDaGFycywNCj4gTlVMTCwgTlVMTCwgTlVMTCB9LA0KPiA+ICsgIHsgTCJOdW1i ZXIgb2YgSW50ZXJjb25uZWN0IGRlc2MiLCA0LCAgMTYsTCIweCV4IiwgTlVMTCwNCj4gPiArICAg IChWT0lEICoqKSZOdW1iZXJPZkludGVyY29ubmVjdERlc2NyaXB0b3JzLCBOVUxMLCBOVUxMIH0N Cj4gPiArfTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIEFDUElfUEFSU0VSIGFycmF5IGRlc2Ny aWJpbmcgdGhlIGludGVyY29ubmVjdCBkZXNjcmlwdG9yIGFzc29jaWF0ZWQgd2l0aA0KPiB0aGUN Cj4gPiArICBpbnRlcmNvbm5lY3QgbG9jYXRvciB0eXBlLiBUaGUgc3BlY2lmaWNhdGlvbiBpbmNs dWRlcyBhbiBhZGRpdGlvbmFsIHJlc2VydmVkDQo+ID4gKyAgZmllbGQgYWxzbyB3aXRoaW4gdGhl IGludGVyY29ubmVjdCBkZXNjcmlwdG9yLiBUaGlzIGlzIG5vdCBpbmNsdWRlZCBpbiB0aGUNCj4g PiArICBwYXJzZXIgb2JqZWN0IG9uIHB1cnBvc2UuIFRoZSBmdW5jdGlvbiBpcyBvZiAzIGJ5dGVz IGxlbmd0aCB3aGljaCB0aGUNCj4gPiArICBQYXJzZUFjcGkgZnVuY3Rpb24gY2FuJ3QgcGFyc2Uu IFRoaXMgaGFzIGJlZW4gaGFuZGxlZCBzZXBhcmF0ZWx5Lg0KPiA+ICsqKi8NCj4gPiArU1RBVElD IENPTlNUIEFDUElfUEFSU0VSICBNcGFtSW50ZXJjb25uZWN0RGVzY3JpcHRvclBhcnNlcltdID0g ew0KPiA+ICsgIHsgTCJTb3VyY2UgSUQiLCAgICAgIDQsIDAsIEwiJXUiLCAgIE5VTEwsIE5VTEws IE5VTEwsIE5VTEwgfSwNCj4gPiArICB7IEwiRGVzdGluYXRpb24gSUQiLCA0LCA0LCBMIiV1Iiwg ICBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMIH0sDQo+ID4gKyAgeyBMIkxpbmsgdHlwZSIsICAgICAg MSwgOCwgTCIweCV4IiwgTlVMTCwNCj4gPiArICAgIE5VTEwsIERlY29kZUxpbmtUeXBlLCBOVUxM IH0NCj4gPiArfTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFByaW50TG9jYXRvclRpdGxlIGNv dWxkIGJlIHVzZWQgdG8gcHJpbnQgdGhlIGRlY29kZWQgbG9jYXRvciB0aXRsZS4NCj4gPiArDQo+ ID4gKyAgQHBhcmFtIFtpbl0gSW5kZW50ICAgICAgICAgICAgICBOdW1iZXIgb2Ygc3BhY2VzIHRv IGFkZCB0byB0aGUgZ2xvYmFsIHRhYmxlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbmRlbnQuIFRoZSBnbG9iYWwgdGFibGUgaW5kZW50IGlzIDAgYnkNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ7IGhvd2V2ZXIgdGhpcyB2YWx1 ZSBpcyB1cGRhdGVkIG9uDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl bnRyeSB0byB0aGUgUGFyc2VBY3BpKCkgYnkgYWRkaW5nIHRoZSBpbmRlbnQNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlIHByb3ZpZGVkIHRvIFBhcnNlQWNwaSgp IGFuZCByZXN0b3JlZA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFj ayBvbiBleGl0LiAgVGhlcmVmb3JlIHRoZSB0b3RhbCBpbmRlbnQgaW4NCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBvdXRwdXQgaXMgZGVwZW5kZW50IG9uIGZyb20g d2hlcmUgdGhpcw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rp b24gaXMgY2FsbGVkLg0KPiA+ICsgIEBwYXJhbSBbaW5dIExvY2F0b3JUaXRsZSAgICAgICAgVGl0 bGUgc3RyaW5nIHRvIGJlIHVzZWQgZm9yIHRoZSBsb2NhdG9yLg0KPiA+ICsqKi8NCj4gPiArU1RB VElDDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK1ByaW50TG9jYXRvclRpdGxlICgNCj4g PiArICBJTiBVSU5UMzIgICAgICAgIEluZGVudCwNCj4gPiArICBJTiBDT05TVCBDSEFSMTYgICpM b2NhdG9yVGl0bGUNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBQcmludEZpZWxkTmFtZSAoSW5k ZW50LCBMIiogTG9jYXRvciB0eXBlIGRlY29kZWQiKTsNCj4gPiArICBQcmludCAoTG9jYXRvclRp dGxlKTsNCj4gPiArICBQcmludCAoTCJcbiIpOw0KPiA+ICsgIFByaW50RmllbGROYW1lIChJbmRl bnQsIEwiTG9jYXRvciIpOw0KPiA+ICsgIFByaW50IChMIlxuIik7DQo+ID4gK30NCj4gPiArDQo+ ID4gKy8qKg0KPiA+ICsgIFByaW50TG9jYXRvckRlc2NyaXB0b3I2NCBjb3VsZCBiZSB1c2VkIHRv IHByaW50IHRoZSA4IGJ5dGUgZmllbGQNCj4gPiArICB3aXRoaW4gdGhlIDEyIGJ5dGUgbG9jYXRv ciBkZXNjcmlwdG9yLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gW2luXSBJbmRlbnQgICAgICAgICAg ICAgIE51bWJlciBvZiBzcGFjZXMgdG8gYWRkIHRvIHRoZSBnbG9iYWwgdGFibGUNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudC4gVGhlIGdsb2JhbCB0YWJsZSBp bmRlbnQgaXMgMCBieQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVm YXVsdDsgaG93ZXZlciB0aGlzIHZhbHVlIGlzIHVwZGF0ZWQgb24NCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGVudHJ5IHRvIHRoZSBQYXJzZUFjcGkoKSBieSBhZGRpbmcg dGhlIGluZGVudA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUg cHJvdmlkZWQgdG8gUGFyc2VBY3BpKCkgYW5kIHJlc3RvcmVkDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBiYWNrIG9uIGV4aXQuICBUaGVyZWZvcmUgdGhlIHRvdGFsIGlu ZGVudCBpbg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG91dHB1 dCBpcyBkZXBlbmRlbnQgb24gZnJvbSB3aGVyZSB0aGlzDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmdW5jdGlvbiBpcyBjYWxsZWQuDQo+ID4gKyAgQHBhcmFtIFtpbl0g RGVzY3JpcHRvclRpdGxlICAgICBUaXRsZSBzdHJpbmcgdG8gYmUgdXNlZCBmb3IgdGhlIGRlc2Ny aXB0b3IuDQo+ID4gKyAgQHBhcmFtIFtpbl0gRGVzY3JpcHRvcjY0ICAgICAgICBEZXNjcmlwdG9y IHRvIGJlIHByaW50ZWQuDQo+ID4gKyAgQHBhcmFtIFtpbl0gVmFsaWRhdGUgICAgICAgICAgICBC b29sZWFuIHRvIGluZGljYXRlIGlmIHRoZSBzZWNvbmQgNCBieXRlIGZpZWxkDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWVkcyB0byBiZSB2YWxpZGF0ZWQgYXMgYSBy ZXNlcnZlZCBmaWVsZC4NCj4gPiArKiovDQo+ID4gK1NUQVRJQw0KPiA+ICtWT0lEDQo+ID4gK0VG SUFQSQ0KPiA+ICtQcmludExvY2F0b3JEZXNjcmlwdG9yNjQgKA0KPiA+ICsgIElOIFVJTlQzMiAg ICAgICAgSW5kZW50LA0KPiA+ICsgIElOIENPTlNUIENIQVIxNiAgKkRlc2NyaXB0b3JUaXRsZSwN Cj4gPiArICBJTiBDT05TVCBVSU5UNjQgIERlc2NyaXB0b3I2NCwNCj4gPiArICBJTiBCT09MRUFO ICAgICAgIFZhbGlkYXRlDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgUHJpbnRGaWVsZE5hbWUg KEluZGVudCwgRGVzY3JpcHRvclRpdGxlKTsNCj4gPiArICBQcmludCAoTCIlbHUiLCBEZXNjcmlw dG9yNjQpOw0KPiA+ICsNCj4gPiArICBpZiAoVmFsaWRhdGUpIHsNCj4gPiArICAgIFZhbGlkYXRl UmVzZXJ2ZWQgKERlc2NyaXB0b3I2NCk7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBQcmludCAo TCJcbiIpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBQcmludExvY2F0b3JEZXNj cmlwdG9yMzIgY291bGQgYmUgdXNlZCB0byBwcmludCB0aGUgNCBieXRlIGZpZWxkDQo+ID4gKyAg d2l0aGluIHRoZSAxMiBieXRlIGxvY2F0b3IgZGVzY3JpcHRvci4NCj4gPiArDQo+ID4gKyAgQHBh cmFtIFtpbl0gSW5kZW50ICAgICAgICAgICAgICBOdW1iZXIgb2Ygc3BhY2VzIHRvIGFkZCB0byB0 aGUgZ2xvYmFsIHRhYmxlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bmRlbnQuIFRoZSBnbG9iYWwgdGFibGUgaW5kZW50IGlzIDAgYnkNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ7IGhvd2V2ZXIgdGhpcyB2YWx1ZSBpcyB1cGRh dGVkIG9uDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeSB0byB0 aGUgUGFyc2VBY3BpKCkgYnkgYWRkaW5nIHRoZSBpbmRlbnQNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHZhbHVlIHByb3ZpZGVkIHRvIFBhcnNlQWNwaSgpIGFuZCByZXN0 b3JlZA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFjayBvbiBleGl0 LiAgVGhlcmVmb3JlIHRoZSB0b3RhbCBpbmRlbnQgaW4NCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRoZSBvdXRwdXQgaXMgZGVwZW5kZW50IG9uIGZyb20gd2hlcmUgdGhp cw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaXMgY2Fs bGVkLg0KPiA+ICsgIEBwYXJhbSBbaW5dIERlc2NyaXB0b3JUaXRsZSAgICAgVGl0bGUgc3RyaW5n IHRvIGJlIHVzZWQgZm9yIHRoZSBkZXNjcmlwdG9yLg0KPiA+ICsgIEBwYXJhbSBbaW5dIERlc2Ny aXB0b3IzMiAgICAgICAgRGVzY3JpcHRvciB0byBiZSBwcmludGVkLg0KPiA+ICsgIEBwYXJhbSBb aW5dIFZhbGlkYXRlICAgICAgICAgICAgQm9vbGVhbiB0byBpbmRpY2F0ZSBpZiB0aGUgc2Vjb25k IDQgYnl0ZSBmaWVsZA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVl ZHMgdG8gYmUgdmFsaWRhdGVkIGFzIGEgcmVzZXJ2ZWQgZmllbGQuDQo+ID4gKyoqLw0KPiA+ICtT VEFUSUMNCj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArUHJpbnRMb2NhdG9yRGVzY3JpcHRv cjMyICgNCj4gPiArICBJTiBVSU5UMzIgICAgICAgIEluZGVudCwNCj4gPiArICBJTiBDT05TVCBD SEFSMTYgICpEZXNjcmlwdG9yVGl0bGUsDQo+ID4gKyAgSU4gQ09OU1QgVUlOVDMyICBEZXNjcmlw dG9yMzIsDQo+ID4gKyAgSU4gQk9PTEVBTiAgICAgICBWYWxpZGF0ZQ0KPiA+ICsgICkNCj4gPiAr ew0KPiA+ICsgIFByaW50RmllbGROYW1lIChJbmRlbnQsIERlc2NyaXB0b3JUaXRsZSk7DQo+ID4g KyAgUHJpbnQgKEwiMHgleCIsIERlc2NyaXB0b3IzMik7DQo+ID4gKw0KPiA+ICsgIGlmIChWYWxp ZGF0ZSkgew0KPiA+ICsgICAgVmFsaWRhdGVSZXNlcnZlZCAoRGVzY3JpcHRvcjMyKTsNCj4gPiAr ICB9DQo+ID4gKw0KPiA+ICsgIFByaW50IChMIlxuIik7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8q Kg0KPiA+ICsgIFByaW50R2VuZXJpY0xvY2F0b3JEZXNjcmlwdG9yIHNob3VsZCBiZSB1c2VkIGZv ciBkZWNvZGluZyBhbmQgcHJpbnRpbmcNCj4gbG9jYXRvcg0KPiA+ICsgIGRlc2NyaXB0b3IgdGhh dCBjb3VsZCBiZSBzcGxpdCBhcyB0d28gOCBhbmQgNCBieXRlIGZpZWxkcy4gVGhlIExvY2F0b3JQ dHINCj4gPiArICBmaWVsZCBpcyBjYXN0ZWQgdG8gKFVJTlQ2NCAqKSBhbmQgZGVjb2RlZCB3aXRo aW4gdGhlIG1hY3JvLiBGcm9tIHRoZQ0KPiBNUEFNIEFDUEkNCj4gPiArICBzcGVjaWZpY2F0aW9u LCB0aGUgb2Zmc2V0IG9mIHRoZSBsb2NhdG9yIGRlc2NyaXB0b3IgZmllbGQgaXMgZGl2aXNpYmxl IGJ5IDguDQo+ID4gKyAgSXQgaXMgYXNzdW1lZCB0aGF0IEFDUEkgdGFibGVzIGFyZSBwbGFjZWQg YXQgOCBieXRlIGFsaWduZWQgYWRkcmVzcyBhbmQNCj4gdGh1cw0KPiA+ICsgIHVuYWxpZ25lZCBh Y2Nlc3Mgc2hvdWxkIG5vdCBiZSBhIGNvbmNlcm4uDQo+ID4gKw0KPiA+ICsgIE9ubHkgbG9jYXRv cnMgd2hpY2ggaGF2ZSBpdHMgc2Vjb25kIGZpZWxkIGFzIHJlc2VydmVkIHNob3VsZCB1c2UgdGhp cw0KPiA+ICsgIGZ1bmN0aW9uLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gW2luXSBJbmRlbnQgICAg ICAgICAgICAgIE51bWJlciBvZiBzcGFjZXMgdG8gYWRkIHRvIHRoZSBnbG9iYWwgdGFibGUNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudC4gVGhlIGdsb2JhbCB0 YWJsZSBpbmRlbnQgaXMgMCBieQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZGVmYXVsdDsgaG93ZXZlciB0aGlzIHZhbHVlIGlzIHVwZGF0ZWQgb24NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5IHRvIHRoZSBQYXJzZUFjcGkoKSBieSBh ZGRpbmcgdGhlIGluZGVudA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dmFsdWUgcHJvdmlkZWQgdG8gUGFyc2VBY3BpKCkgYW5kIHJlc3RvcmVkDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrIG9uIGV4aXQuICBUaGVyZWZvcmUgdGhlIHRv dGFsIGluZGVudCBpbg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhl IG91dHB1dCBpcyBkZXBlbmRlbnQgb24gZnJvbSB3aGVyZSB0aGlzDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBpcyBjYWxsZWQuDQo+ID4gKyAgQHBhcmFt IFtpbl0gTG9jYXRvclRpdGxlICAgICAgICBUaXRsZSBzdHJpbmcgdG8gYmUgdXNlZCBmb3IgdGhl IGxvY2F0b3INCj4gPiArICBAcGFyYW0gW2luXSBEZXNjcmlwdG9yMVRpdGxlICAgIFRpdGxlIHN0 cmluZyB0byBiZSB1c2VkIGZvciBkZXNjcmlwdG9yMQ0KPiA+ICsgIEBwYXJhbSBbaW5dIERlc2Ny aXB0b3IyVGl0bGUgICAgVGl0bGUgc3RyaW5nIHRvIGJlIHVzZWQgZm9yIGRlc2NyaXB0b3IyDQo+ ID4gKyAgQHBhcmFtIFtpbl0gTG9jYXRvclB0ciAgICAgICAgICBQdHIgdG8gdGhlIHN0YXJ0IG9m IGxvY2F0b3INCj4gPiArICBAcGFyYW0gW2luXSBWYWxpZGF0ZSAgICAgICAgICAgIEJvb2xlYW4g dG8gaW5kaWNhdGUgaWYgdGhlIHNlY29uZCA0IGJ5dGUgZmllbGQNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG5lZWRzIHRvIGJlIHZhbGlkYXRlZCBhcyBhIHJlc2VydmVk IGZpZWxkLg0KPiA+ICsqKi8NCj4gPiArU1RBVElDDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ ID4gK1ByaW50R2VuZXJpY0xvY2F0b3JEZXNjcmlwdG9yICgNCj4gPiArICBJTiBVSU5UMzIgICAg ICAgIEluZGVudCwNCj4gPiArICBJTiBDT05TVCBDSEFSMTYgICpMb2NhdG9yVGl0bGUsDQo+ID4g KyAgSU4gQ09OU1QgQ0hBUjE2ICAqRGVzY3JpcHRvcjFUaXRsZSwNCj4gPiArICBJTiBDT05TVCBD SEFSMTYgICpEZXNjcmlwdG9yMlRpdGxlLA0KPiA+ICsgIElOIFVJTlQ4ICAgICAgICAgKkxvY2F0 b3JQdHIsDQo+ID4gKyAgSU4gQk9PTEVBTiAgICAgICBWYWxpZGF0ZQ0KPiA+ICsgICkNCj4gPiAr ew0KPiA+ICsgIFByaW50TG9jYXRvclRpdGxlIChJbmRlbnQsIExvY2F0b3JUaXRsZSk7DQo+ID4g KyAgUHJpbnRMb2NhdG9yRGVzY3JpcHRvcjY0ICgNCj4gPiArICAgIEluZGVudCwNCj4gPiArICAg IERlc2NyaXB0b3IxVGl0bGUsDQo+ID4gKyAgICAqKChVSU5UNjQgKilMb2NhdG9yUHRyKSwNCj4g PiArICAgIEZBTFNFDQo+ID4gKyAgICApOw0KPiA+ICsNCj4gPiArICAvLyBNb3ZlIGRlc2NyaXB0 b3IgdG8gcG9pbnQgdG8gbmV4dCBmaWVsZC4NCj4gPiArICBMb2NhdG9yUHRyICs9IHNpemVvZiAo VUlOVDY0KTsNCj4gPiArDQo+ID4gKyAgUHJpbnRMb2NhdG9yRGVzY3JpcHRvcjMyICgNCj4gPiAr ICAgIEluZGVudCwNCj4gPiArICAgIERlc2NyaXB0b3IyVGl0bGUsDQo+ID4gKyAgICAqKChVSU5U NjQgKilMb2NhdG9yUHRyKSwNCj4gPiArICAgIFZhbGlkYXRlDQo+ID4gKyAgICApOw0KPiA+ICt9 DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgbG9jYXRv ciBmaWVsZCB3aXRoaW4gdGhlIHJlc291cmNlIG5vZGUgZm9yIEFDUEkNCj4gTVBBTQ0KPiA+ICsg IHRhYmxlLiBUaGUgcGFyc2luZyBpcyBiYXNlZCBvbiB0aGUgbG9jYXRvciB0eXBlIGZpZWxkLg0K PiA+ICsNCj4gPiArICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMgdmFsaWRhdGlvbiBvZiB0 aGUgbG9jYXRvciBmaWVsZC4NCj4gPiArICoqLw0KPiA+ICtTVEFUSUMNCj4gPiArVk9JRA0KPiA+ ICtFRklBUEkNCj4gPiArUGFyc2VMb2NhdG9yICgNCj4gPiArICBWT0lEDQo+ID4gKyAgKQ0KPiA+ ICt7DQo+ID4gKyAgVUlOVDggICpMb2NhdG9yUHRyOw0KPiA+ICsNCj4gPiArICBMb2NhdG9yUHRy ID0gTG9jYXRvcjsNCj4gPiArDQo+ID4gKyAgc3dpdGNoICgqTG9jYXRvclR5cGUpIHsNCj4gDQo+ IEkgdGhpbmsgaXQgd291bGQgYmUgc2ltcGxlciB0byBkZWZpbmUgbmFtZXMgYXM6DQo+IA0KPiBT VEFUSUMgQ09OU1QgQ0hBUjE2ICAqTXBhbUxvY2F0aW9uTmFtZXNbXSA9IHsNCj4gICAgTCJQcm9j ZXNzb3IgY2FjaGUiLA0KPiAgICBMIk1lbW9yeSIsDQo+ICAgIC4uLg0KPiANCj4gYW5kIGFsc28g dG8gZGVmaW5lIEFDUElfUEFSU0VSIHRhYmxlcyBmb3IgdGhlIGxvY2F0b3IgZGVzY3JpcHRvcnMN Cj4gaW5zdGVhZCBvZiB1c2luZyBQcmludEdlbmVyaWNMb2NhdG9yRGVzY3JpcHRvcigpLg0KPiBF ZzoNCj4gU1RBVElDIENPTlNUIEFDUElfUEFSU0VSICBTbW11TG9jYXRvckRlc2NyaXB0b3JQYXJz ZXJbXSA9IHsNCj4gICAgeyBMIlNNTVUgaW50ZXJmYWNlIiwgOCwgMCwgTCIlbHUiLCAgIE5VTEws IE5VTEwsIE5VTEwsIE5VTEwgfSwNCj4gICAgeyBMIlJlc2VydmVkIElEIiwgNCwgOCwgTCIldSIs IE5VTEwsIE5VTEwsIFZhbGlkYXRlUmVzZXJ2ZWRHZW5lcmljLCAoVk9JRA0KPiAqKTIgfSwNCj4g DQoNCltSb2hpdF0gVGhlIG9ubHkgcmVhc29uIEkgZGlkIG5vdCB3YW50IHRvIGRvIHRoaXMgd2Fz IHRvIGF2b2lkIG1hbnVhbGx5IG1vdmluZyB0aGUgb2Zmc2V0IGJhY2sgYnkgeCBieXRlcyB0byBy ZXBhcnNlIHRoZSBsb2NhdG9yLiBXZSBwYXJzZSB0aGUgbG9jYXRvciB1c2luZyBNcGFtTXNjUmVz b3VyY2VMb2NhdG9yUGFyc2VyLiBJZiB3ZSB3b3VsZCBuZWVkIHRvIHVzZSBBQ1BJX1BBUlNFUiwg d2Ugd291bGQgbmVlZCB0byBzdGVwIGJhY2sgYnkgMTIgYnl0ZXMgKGFzc3VtaW5nIG9mZnNldCBp cyB1c2VkIHJpZ2h0IGFmdGVyIHdlIHBhcnNlIHRoZSBsb2NhdG9yKSBhbmQgcmVwYXJzZSB0aGUg bG9jYXRvciB1bmRlciB0aGUgcmVzcGVjdGl2ZSBzd2l0Y2ggY2FzZS4gV2UgbWlnaHQgbm90IGJl IGFibGUgdG8gc2tpcCBNcGFtTXNjUmVzb3VyY2VMb2NhdG9yUGFyc2VyIGFzIEVGSV9BQ1BJX01Q QU1fTE9DQVRJT05fTUVNT1JZX0NBQ0hFIGNhbid0IGJlIHBhcnNlZCBieSBBQ1BJX1BBUlNFUi4g V291bGQgdGhpcyBiZSBjbGVhbmVyLCB3aGF0IGFyZSB5b3VyIHRob3VnaHRzPw0KDQo+IA0KPiA+ ICsgICAgY2FzZSBFRklfQUNQSV9NUEFNX0xPQ0FUSU9OX1BST0NFU1NPUl9DQUNIRToNCj4gPiAr ICAgICAgUHJpbnRHZW5lcmljTG9jYXRvckRlc2NyaXB0b3IgKA0KPiA+ICsgICAgICAgIDQsDQo+ ID4gKyAgICAgICAgTCJQcm9jZXNzb3IgY2FjaGUiLA0KPiA+ICsgICAgICAgIEwiKiBDYWNoZSBy ZWZlcmVuY2UiLA0KPiA+ICsgICAgICAgIEwiKiBSZXNlcnZlZCIsDQo+ID4gKyAgICAgICAgTG9j YXRvclB0ciwNCj4gPiArICAgICAgICBUUlVFDQo+ID4gKyAgICAgICAgKTsNCj4gPiArICAgICAg YnJlYWs7DQo+ID4gKyAgICBjYXNlIEVGSV9BQ1BJX01QQU1fTE9DQVRJT05fTUVNT1JZOg0KPiA+ ICsgICAgICBQcmludEdlbmVyaWNMb2NhdG9yRGVzY3JpcHRvciAoDQo+ID4gKyAgICAgICAgNCwN Cj4gPiArICAgICAgICBMIk1lbW9yeSIsDQo+ID4gKyAgICAgICAgTCIqIFByb3hpbWl0eSBkb21h aW4iLA0KPiA+ICsgICAgICAgIEwiKiBSZXNlcnZlZCIsDQo+ID4gKyAgICAgICAgTG9jYXRvclB0 ciwNCj4gPiArICAgICAgICBUUlVFDQo+ID4gKyAgICAgICAgKTsNCj4gPiArICAgICAgYnJlYWs7 DQo+ID4gKyAgICBjYXNlIEVGSV9BQ1BJX01QQU1fTE9DQVRJT05fU01NVToNCj4gPiArICAgICAg UHJpbnRHZW5lcmljTG9jYXRvckRlc2NyaXB0b3IgKA0KPiA+ICsgICAgICAgIDQsDQo+ID4gKyAg ICAgICAgTCJTTU1VIiwNCj4gPiArICAgICAgICBMIiogU01NVSBpbnRlcmZhY2UiLA0KPiA+ICsg ICAgICAgIEwiKiBSZXNlcnZlZCIsDQo+ID4gKyAgICAgICAgTG9jYXRvclB0ciwNCj4gPiArICAg ICAgICBUUlVFDQo+ID4gKyAgICAgICAgKTsNCj4gPiArICAgICAgYnJlYWs7DQo+ID4gKyAgICBj YXNlIEVGSV9BQ1BJX01QQU1fTE9DQVRJT05fTUVNT1JZX0NBQ0hFOg0KPiANCj4gVGhlIGNvZGUg d291bGQgYmUgbW9yZSBnZW5lcmljIHdpdGggQUNQSV9QQVJTRVIgc3RydWN0dXJlcyBJIHRoaW5r DQoNCltSb2hpdF0gSSBiZWxpZXZlIEFDUElfUEFSU0VSIHdvbid0IHBhcnNlIE1lbW9yeS1zaWRl IGNhY2hlIGxvY2F0b3IgZGVzY3JpcHRvciBkdWUgdG8gaXRzIG9kZCBmaWVsZCBsZW5ndGguIA0K DQovLyBzbmlwcGV0IGZyb20gQUNQSV9QQVJTRVIncyBjb2RlDQoNCiAgICAgICBzd2l0Y2ggKFBh cnNlcltJbmRleF0uTGVuZ3RoKSB7DQogICAgICAgICAgY2FzZSAxOg0KICAgICAgICAgICAgRHVt cFVpbnQ4IChQYXJzZXJbSW5kZXhdLkZvcm1hdCwgUHRyKTsNCiAgICAgICAgICAgIGJyZWFrOw0K ICAgICAgICAgIGNhc2UgMjoNCiAgICAgICAgICAgIER1bXBVaW50MTYgKFBhcnNlcltJbmRleF0u Rm9ybWF0LCBQdHIpOw0KICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgY2FzZSA0Og0KICAg ICAgICAgICAgRHVtcFVpbnQzMiAoUGFyc2VyW0luZGV4XS5Gb3JtYXQsIFB0cik7DQogICAgICAg ICAgICBicmVhazsNCiAgICAgICAgICBjYXNlIDg6DQogICAgICAgICAgICBEdW1wVWludDY0IChQ YXJzZXJbSW5kZXhdLkZvcm1hdCwgUHRyKTsNCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAg IGRlZmF1bHQ6DQogICAgICAgICAgICBQcmludCAoDQogICAgICAgICAgICAgIEwiXG5FUlJPUjog JWE6IENBTk5PVCBQQVJTRSBUSElTIEZJRUxELCBGaWVsZCBMZW5ndGggPSAlZFxuIiwNCiAgICAg ICAgICAgICAgQXNjaWlOYW1lLA0KICAgICAgICAgICAgICBQYXJzZXJbSW5kZXhdLkxlbmd0aA0K ICAgICAgICAgICAgICApOw0KICAgICAgICB9IC8vIHN3aXRjaA0KCQkNCkkgaGF2ZSBub3QgdGVz dGVkIHRoaXMgLSBidXQgSSBkbyByZW1lbWJlciBzZWVpbmcgc3VjaCBhIGJlaGF2aW9yIGZvciBJ bnRlcmNvbm5lY3QgZGVzY3JpcHRvcidzIHJlc2VydmVkIGZpZWxkLg0KDQo+IA0KPiA+ICsgICAg ICAvLyBQcmludEdlbmVyaWNMb2NhdG9yRGVzY3JpcHRvciBjYW4ndCBiZSB1c2VkIGhlcmUgYXMg dGhlIGZpZWxkcw0KPiA+ICsgICAgICAvLyBGb3IgYSBtZW1vcnkgY2FjaGUgbG9jYXRvciBkZXNj cmlwdG9yIGRvbid0IGZhbGwgaW4gdGhlIDY0Yml0LTMyIGJpdA0KPiA+ICsgICAgICAvLyBmaWVs ZCBsZW5ndGggZGl2aXNpb24uIFBhcnNlIHRoZXNlIGZpZWxkcyBtYW51YWxseS4NCj4gPiArICAg ICAgUHJpbnRMb2NhdG9yVGl0bGUgKDQsIEwiTWVtb3J5IGNhY2hlIik7DQo+ID4gKw0KPiA+ICsg ICAgICAvLyBQYXJzZSBmaWVsZCAxDQo+ID4gKyAgICAgIFByaW50TG9jYXRvckRlc2NyaXB0b3I2 NCAoDQo+ID4gKyAgICAgICAgNCwNCj4gPiArICAgICAgICBMIiogUmVzZXJ2ZWQiLA0KPiA+ICsg ICAgICAgIE1QQU1fTUVNT1JZX0xPQ0FUT1JfRVhUUkFDVF9SRVNFUlZFRF9GSUVMRCAoDQo+ID4g KyAgICAgICAgICAqKChVSU5UNjQgKikoTG9jYXRvclB0cikpDQo+ID4gKyAgICAgICAgICApLA0K PiA+ICsgICAgICAgIFRSVUUNCj4gPiArICAgICAgICApOw0KPiA+ICsNCj4gPiArICAgICAgLy8g UGFyc2UgZmllbGQgMg0KPiA+ICsgICAgICBQcmludExvY2F0b3JEZXNjcmlwdG9yNjQgKA0KPiA+ ICsgICAgICAgIDQsDQo+ID4gKyAgICAgICAgTCIqIExldmVsIiwNCj4gPiArICAgICAgICBNUEFN X01FTU9SWV9MT0NBVE9SX0VYVFJBQ1RfTEVWRUxfRklFTEQgKA0KPiA+ICsgICAgICAgICAgKigo VUlOVDY0ICopKExvY2F0b3JQdHIpKQ0KPiA+ICsgICAgICAgICAgKSwNCj4gPiArICAgICAgICBG QUxTRQ0KPiA+ICsgICAgICAgICk7DQo+ID4gKw0KPiA+ICsgICAgICBMb2NhdG9yUHRyICs9IHNp emVvZiAoVUlOVDY0KTsNCj4gPiArDQo+ID4gKyAgICAgIC8vIFBhcnNlIGZpZWxkIDMNCj4gPiAr ICAgICAgUHJpbnRMb2NhdG9yRGVzY3JpcHRvcjMyICgNCj4gPiArICAgICAgICA0LA0KPiA+ICsg ICAgICAgIEwiKiBSZWZlcmVuY2UiLA0KPiA+ICsgICAgICAgICooKFVJTlQzMiAqKShMb2NhdG9y UHRyKSksDQo+ID4gKyAgICAgICAgRkFMU0UNCj4gPiArICAgICAgICApOw0KPiA+ICsgICAgICBi cmVhazsNCj4gPiArICAgIGNhc2UgRUZJX0FDUElfTVBBTV9MT0NBVElPTl9BQ1BJX0RFVklDRToN Cj4gPiArICAgICAgLy8gQUNQSSBoYXJkd2FyZSBJRCB3b3VsZCBoYXZlIHRvIHByaW50ZWQgdmlh IER1bXA4Q2hhcnMuDQo+ID4gKyAgICAgIFByaW50TG9jYXRvclRpdGxlICg0LCBMIkFDUEkgZGV2 aWNlIik7DQo+ID4gKyAgICAgIFByaW50RmllbGROYW1lICg0LCBMIiogQUNQSSBoYXJkd2FyZSBJ RCIpOw0KPiA+ICsgICAgICBEdW1wOENoYXJzIChOVUxMLCBMb2NhdG9yUHRyKTsNCj4gPiArICAg ICAgUHJpbnQgKEwiXG4iKTsNCj4gPiArDQo+ID4gKyAgICAgIExvY2F0b3JQdHIgKz0gc2l6ZW9m IChVSU5UNjQpOw0KPiA+ICsNCj4gPiArICAgICAgLy8gUGFyc2UgZmllbGQgMg0KPiA+ICsgICAg ICBQcmludExvY2F0b3JEZXNjcmlwdG9yMzIgKA0KPiA+ICsgICAgICAgIDQsDQo+ID4gKyAgICAg ICAgTCIqIEFDUEkgdW5pcXVlIElEIiwNCj4gPiArICAgICAgICAqKChVSU5UMzIgKikoTG9jYXRv clB0cikpLA0KPiA+ICsgICAgICAgIEZBTFNFDQo+ID4gKyAgICAgICAgKTsNCj4gPiArICAgICAg YnJlYWs7DQo+ID4gKyAgICBjYXNlIEVGSV9BQ1BJX01QQU1fTE9DQVRJT05fSU5URVJDT05ORUNU Og0KPiANCj4gSSBtIG5vdCBzdXJlIEkgdW5kZXJzdGFuZCB3aHkgUGFyc2VJbnRlcmNvbm5lY3RE ZXNjcmlwdG9yVGFibGUgKCkNCj4gaXMgbm90IGNhbGxlZCBmcm9tIGhlcmUgYXMgdGhlIHBvaW50 ZXIgdG8gdGhlIHN0cnVjdCBpcyBhdmFpbGFibGUgaGVyZS4NCj4gDQoNCltSb2hpdF0gQWxsIG9m IHRoZSBsb2NhdG9ycyBleGNlcHQgaW50ZXJjb25uZWN0IGxvY2F0b3IgaGF2ZSB2ZXJ5IHNpbXBs ZSBwYXJzaW5nIGZvciB0aGVpciBmaWVsZHMuIFRoaXMgd291bGQgbWVhbiBrZWVwaW5nIHRoZSBw cm90b3R5cGUgZm9yIFBhcnNlTG9jYXRvciBzaW1wbGUgd2l0aG91dCBhbnkgcGFyYW1zIHJlbGF0 ZWQgdG8gQUNQSSBwYXJzZXIgcG9pbnRlciwgb2Zmc2V0IGV0YyBwcm92aWRlZCB3ZSBvZmZsb2Fk IHRoZSBpbnRlcmNvbm5lY3QgZGVzY3JpcHRvcidzIGludGVybmFsIHBhcnNpbmcgdG8gYSBzY29w ZSB3aGVyZSB3ZSBoYXZlIHRoZXNlIGZpZWxkcyBhdmFpbGFibGUuIFdlIGNvdWxkIHZlcnkgd2Vs bCBkbyB0aGUgcGFyc2luZyBpbnRlcm5hbGx5IC0gaG93ZXZlciB0aGlzIHdvdWxkIG1lYW4gY2hh bmdpbmcgdGhlIHByb3RvdHlwZSBqdXN0IGZvciBpbnRlcmNvbm5lY3QgZGVzY3JpcHRvciBsb2Nh dG9yLiANCg0KVGhlIHByb3RvdHlwZSBjaGFuZ2UgaXMgdHdvZm9sZCAocmV0dXJuIGFuZCBwYXJh bXMpLiBXaXRob3V0IFBhcnNlSW50ZXJjb25uZWN0RGVzY3JpcHRvclRhYmxlLCB3ZSBjb3VsZCBn ZXQgYXdheSB3aXRob3V0IHJldHVybmluZyBhbnl0aGluZy4gSG93ZXZlciwgaWYgd2UgaGF2ZSBQ YXJzZUludGVyY29ubmVjdERlc2NyaXB0b3JUYWJsZSBoYW5kbGVkIHdpdGhpbiBQYXJzZUxvY2F0 b3IsIHdlIHdvdWxkIG5lZWQgdG8gaGFuZGxlIHRoZSByZXR1cm4gYXMgd2VsbC4gU2luY2UgaW50 ZXJjb25uZWN0IGxvY2F0b3IgaXMgYW4gZXhjZXB0aW9uIHdpdGggcmVzcGVjdCB0byBhbGwgb3Ro ZXIgbG9jYXRvcnMsIGl0IGlzIGhhbmRsZWQgYXMgYW4gZXhjZXB0aW9uIG91dHNpZGUgb2YgUGFy c2VMb2NhdG9yLiBJZiB3ZSBoYWQgcXVpdGUgYSBsb3Qgb2YgbG9jYXRvcnMgd2l0aCBkZXRhaWxl ZCBpbnRlcm5hbCBwYXJzaW5nLCB3ZSBzaG91bGQgaGF2ZSBoYW5kbGVkIHRoaXMgaW50ZXJuYWxs eS4NCg0KPiA+ICsgICAgICBQcmludEdlbmVyaWNMb2NhdG9yRGVzY3JpcHRvciAoDQo+ID4gKyAg ICAgICAgNCwNCj4gPiArICAgICAgICBMIkludGVyY29ubmVjdCIsDQo+ID4gKyAgICAgICAgTCIq IEludGVyY29ubmVjdCBkZXNjIHRibCBvZmZzZXQiLA0KPiA+ICsgICAgICAgIEwiKiBSZXNlcnZl ZCIsDQo+ID4gKyAgICAgICAgTG9jYXRvclB0ciwNCj4gPiArICAgICAgICBUUlVFDQo+ID4gKyAg ICAgICAgKTsNCj4gPiArICAgICAgYnJlYWs7DQo+ID4gKyAgICBjYXNlIEVGSV9BQ1BJX01QQU1f TE9DQVRJT05fVU5LTk9XTjoNCj4gPiArICAgICAgUHJpbnRHZW5lcmljTG9jYXRvckRlc2NyaXB0 b3IgKA0KPiA+ICsgICAgICAgIDQsDQo+ID4gKyAgICAgICAgTCJVbmtub3duIiwNCj4gPiArICAg ICAgICBMIiogRGVzY3JpcHRvcjEiLA0KPiA+ICsgICAgICAgIEwiKiBEZXNjcmlwdG9yMiIsDQo+ ID4gKyAgICAgICAgTG9jYXRvclB0ciwNCj4gPiArICAgICAgICBGQUxTRQ0KPiA+ICsgICAgICAg ICk7DQo+ID4gKyAgICAgIGJyZWFrOw0KPiA+ICsgICAgZGVmYXVsdDoNCj4gPiArICAgICAgUHJp bnQgKEwiXG5XQVJOSU5HIDogUmVzZXJ2ZWQgbG9jYXRvciB0eXBlXG4iKTsNCj4gPiArDQo+ID4g KyAgICAgIEluY3JlbWVudFdhcm5pbmdDb3VudCAoKTsNCj4gPiArICAgICAgYnJlYWs7DQo+ID4g KyAgfSAvLyBzd2l0Y2gNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUHJpbnRCbG9j a1RpdGxlIGNvdWxkIGJlIHVzZWQgdG8gcHJpbnQgdGhlIHRpdGxlIG9mIGJsb2NrcyB0aGF0DQo+ ID4gKyAgYXBwZWFyIG1vcmUgdGhhbiBvbmNlIGluIHRoZSBNUEFNIEFDUEkgdGFibGUuDQo+ID4g Kw0KPiA+ICsgIEBwYXJhbSBbaW5dIEluZGVudCAgICAgICAgICAgICAgTnVtYmVyIG9mIHNwYWNl cyB0byBhZGQgdG8gdGhlIGdsb2JhbCB0YWJsZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW5kZW50LiBUaGUgZ2xvYmFsIHRhYmxlIGluZGVudCBpcyAwIGJ5DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OyBob3dldmVyIHRoaXMg dmFsdWUgaXMgdXBkYXRlZCBvbg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZW50cnkgdG8gdGhlIFBhcnNlQWNwaSgpIGJ5IGFkZGluZyB0aGUgaW5kZW50DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSBwcm92aWRlZCB0byBQYXJzZUFj cGkoKSBhbmQgcmVzdG9yZWQNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGJhY2sgb24gZXhpdC4gIFRoZXJlZm9yZSB0aGUgdG90YWwgaW5kZW50IGluDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgb3V0cHV0IGlzIGRlcGVuZGVudCBvbiBm cm9tIHdoZXJlIHRoaXMNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1 bmN0aW9uIGlzIGNhbGxlZC4NCj4gPiArICBAcGFyYW0gW2luXSBUaXRsZSAgICAgICAgICAgICAg IFRpdGxlIHN0cmluZyB0byBiZSB1c2VkIGZvciB0aGUgYmxvY2suDQo+ID4gKyAgQHBhcmFtIFtp bl0gSW5kZXggICAgICAgICAgICAgICBJbmRleCBvZiB0aGUgYmxvY2suDQo+ID4gKyoqLw0KPiA+ ICtTVEFUSUMNCj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArUHJpbnRCbG9ja1RpdGxlICgN Cj4gPiArICBJTiBVSU5UMzIgICAgICAgIEluZGVudCwNCj4gPiArICBJTiBDT05TVCBDSEFSMTYg ICpUaXRsZSwNCj4gPiArICBJTiBDT05TVCBVSU5UMzIgIEluZGV4DQo+ID4gKyAgKQ0KPiA+ICt7 DQo+ID4gKyAgUHJpbnQgKEwiXG4iKTsNCj4gPiArICBQcmludEZpZWxkTmFtZSAoSW5kZW50LCBU aXRsZSk7DQo+ID4gKyAgUHJpbnQgKEwiJXVcblxuIiwgSW5kZXgpOw0KPiA+ICt9DQo+ID4gKw0K PiA+ICsvKioNCj4gDQo+IGFzc3NvY2lhdGVkIC0+IGFzc29jaWF0ZWQNCj4gSSB0aGluayB0aGlz IG1pZ2h0IGJlIGNhdWdodCBieSBydW5uaW5nIHRoZSBDSSBsb2NhbGx5IG9uIHRoZSBTaGVsbFBr Zw0KPiBvciBieSBtYWtpbmcgYSAnZmFrZScgcHVsbCByZXF1ZXN0IHRvIHRyaWdnZXIgdGhlIGVk azIgdXBzdHJlYW0gQ0kuDQoNCg0KW1JvaGl0XSBBY2suIEkgZGlkIHJ1biBVbmNydXN0aWZ5IGFu ZCBzdGF1cnQgQ0kuIEkgdmVyeSB3ZWxsIGNvdWxkIGhhdmUgbWlzc2VkIHRoaXMgYml0LiBUaGFu a3MgZm9yIHRoZSBoaW50Lg0KDQo+IA0KPiA+ICsgIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBp bnRlcmNvbm5lY3QgZGVzY3JpcHRvcihzKSBhc3Nzb2NpYXRlZCB3aXRoDQo+ID4gKyAgYW4gaW50 ZXJjb25uZWN0IHR5cGUgbG9jYXRvciBvYmplY3QuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSBbaW5d IFB0ciAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0K PiA+ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZUxlbmd0aCAgICBMZW5ndGggb2YgdGhlIEFDUEkg dGFibGUuDQo+ID4gKyAgQHBhcmFtIFtpbl0gT2Zmc2V0ICAgICAgICAgICAgIFBvaW50ZXIgdG8g Y3VycmVudCBvZmZzZXQgd2l0aGluIFB0ci4NCj4gPiArDQo+ID4gK1JldHVybnM6DQo+ID4gKw0K PiA+ICsgIFN0YXR1cw0KPiA+ICsNCj4gPiArICBFRklfU1VDQ0VTUyAgICAgICAgICAgICAgICAg ICAgTVBBTSBNU0MgTm9kZXMgd2VyZSBwYXJzZWQgcHJvcGVybHkuDQo+ID4gKyAgRUZJX0JBRF9C VUZGRVJfU0laRSAgICAgICAgICAgIFRoZSBidWZmZXIgcG9pbnRlciBwcm92aWRlZCBhcyBpbnB1 dCBpcyBub3QNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBlbm91 Z2ggdG8gYmUgcGFyc2VkIGNvcnJlY3RseS4NCj4gPiArKiovDQo+ID4gK1NUQVRJQw0KPiA+ICtF RklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtQYXJzZUludGVyY29ubmVjdERlc2NyaXB0b3Jz ICgNCj4gPiArICBJTiBVSU5UOCAgICpQdHIsDQo+ID4gKyAgSU4gVUlOVDMyICBBY3BpVGFibGVM ZW5ndGgsDQo+ID4gKyAgSU4gVUlOVDMyICAqT2Zmc2V0DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4g KyAgVUlOVDMyICBJbnRlcmNvbm5lY3REZXNjcmlwdG9ySW5kZXg7DQo+ID4gKyAgVUlOVDMyICBS ZXNlcnZlZDsNCj4gPiArDQo+ID4gKyAgSW50ZXJjb25uZWN0RGVzY3JpcHRvckluZGV4ID0gMDsN Cj4gPiArDQo+ID4gKyAgLy8gUGFyc2UgTVBBTSBNU0MgcmVzb3VyY2VzIHdpdGhpbiB0aGUgTVND IGJvZHkNCj4gDQo+IEkgbSBub3Qgc3VyZSB0aGlzIGNhc2UgaXMgcG9zc2libGUgYXMgTnVtYmVy T2ZJbnRlcmNvbm5lY3REZXNjcmlwdG9ycyBpcw0KPiBzdGF0aWNhbGx5IGRlZmluZWQuDQo+IA0K DQpbUm9oaXRdIEkgaGF2ZSByZXNwb25kZWQgdG8gY29tbWVudHMgZm9yIE51bWJlck9mRnVuY3Rp b25hbERlcGVuZGVuY2llcyBhbmQgTXBhbU1zY05vZGVMZW5ndGggYWRkcmVzc2luZyB0aGlzIGNv bmNlcm4uIFNvcnJ5LCBJIGhhZCB0byBzdGFydCBmcm9tIHRoZSBib3R0b20gd2hpbGUgYWRkcmVz c2luZyBjb21tZW50cyBhcyB0aGF0IGhlbHBlZCB3aXRoIHRoZSBjb2RlIGZsb3cgOikNCg0KPiA+ ICsgIGlmIChOdW1iZXJPZkludGVyY29ubmVjdERlc2NyaXB0b3JzID09IE5VTEwpIHsNCj4gPiAr ICAgIE1wYW1MZW5ndGhFcnJvciAoTCJOdW1iZXIgb2YgaW50ZXJjb25uZWN0IGRlc2NyaXB0b3Jz IG5vdCBzZXQhIik7DQo+ID4gKyAgICByZXR1cm4gRUZJX0JBRF9CVUZGRVJfU0laRTsNCj4gPiAr ICB9DQo+ID4gKw0KPiA+ICsgIHdoaWxlIChJbnRlcmNvbm5lY3REZXNjcmlwdG9ySW5kZXggPCAq TnVtYmVyT2ZJbnRlcmNvbm5lY3REZXNjcmlwdG9ycykNCj4gew0KPiA+ICsgICAgUHJpbnRCbG9j a1RpdGxlICgNCj4gPiArICAgICAgNiwNCj4gPiArICAgICAgTCIqIEludGVyY29ubmVjdCBkZXNj cmlwdG9yICoiLA0KPiA+ICsgICAgICBJbnRlcmNvbm5lY3REZXNjcmlwdG9ySW5kZXgNCj4gPiAr ICAgICAgKTsNCj4gPiArDQo+ID4gKyAgICAvLyBQYXJzZSBpbnRlcmNvbm5lY3QgZGVzY3JpcHRv cg0KPiA+ICsgICAgKk9mZnNldCArPSBQYXJzZUFjcGkgKA0KPiA+ICsgICAgICAgICAgICAgICAg IFRSVUUsDQo+ID4gKyAgICAgICAgICAgICAgICAgNCwNCj4gPiArICAgICAgICAgICAgICAgICBO VUxMLA0KPiA+ICsgICAgICAgICAgICAgICAgIFB0ciArICpPZmZzZXQsDQo+ID4gKyAgICAgICAg ICAgICAgICAgQWNwaVRhYmxlTGVuZ3RoIC0gKk9mZnNldCwNCj4gPiArICAgICAgICAgICAgICAg ICBQQVJTRVJfUEFSQU1TIChNcGFtSW50ZXJjb25uZWN0RGVzY3JpcHRvclBhcnNlcikNCj4gPiAr ICAgICAgICAgICAgICAgICApOw0KPiA+ICsNCj4gPiArICAgIFJlc2VydmVkID0gKigoVUlOVDMy ICopKFB0ciArICpPZmZzZXQpKSAmIDB4MDBGRkZGRkY7DQo+ID4gKyAgICBQcmludEZpZWxkTmFt ZSAoNiwgTCJSZXNlcnZlZCIpOw0KPiA+ICsgICAgUHJpbnQgKEwiJXVcbiIsIFJlc2VydmVkKTsN Cj4gPiArICAgIFZhbGlkYXRlUmVzZXJ2ZWQgKFJlc2VydmVkKTsNCj4gPiArICAgICpPZmZzZXQg Kz0gMzsNCj4gPiArDQo+ID4gKyAgICBJbnRlcmNvbm5lY3REZXNjcmlwdG9ySW5kZXgrKzsNCj4g PiArICB9DQo+ID4gKw0KPiA+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiArfQ0KPiA+ICsN Cj4gPiArLyoqDQo+ID4gKyAgVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIGludGVyY29ubmVjdCBk ZXNjcmlwdG9yIHRhYmxlIGFzc3NvY2lhdGVkIHdpdGggYW4NCj4gPiArICBpbnRlcmNvbm5lY3Qg dHlwZSBsb2NhdG9yIG9iamVjdC4gSXQgYWxzbyBwZXJmb3JtcyBuZWNlc3NhcnkgdmFsaWRhdGlv biB0bw0KPiA+ICsgIG1ha2Ugc3VyZSB0aGUgaW50ZXJjb25uZWN0IGRlc2NyaXB0b3IgaXMgYXQg YSB2YWxpZCBsb2NhdGlvbi4NCj4gPiArDQo+ID4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAg ICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4gKyAgQHBhcmFt IFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gPiAr ICBAcGFyYW0gW2luXSBPZmZzZXQgICAgICAgICAgICAgUG9pbnRlciB0byBjdXJyZW50IG9mZnNl dCB3aXRoaW4gUHRyLg0KPiA+ICsgIEBwYXJhbSBbaW5dIEludGVyY29ubmVjdE9mZnNldCBPZmZz ZXQgdG8gdGhlIGludGVyY29ubmVjdCBkZXNjcmlwdG9yDQo+IHRhYmxlLg0KPiA+ICsNCj4gPiAr UmV0dXJuczoNCj4gPiArDQo+ID4gKyAgU3RhdHVzDQo+ID4gKw0KPiA+ICsgIEVGSV9TVUNDRVNT ICAgICAgICAgICAgICAgICAgICBNUEFNIE1TQyBOb2RlcyB3ZXJlIHBhcnNlZCBwcm9wZXJseS4N Cj4gPiArICBFRklfQkFEX0JVRkZFUl9TSVpFICAgICAgICAgICAgVGhlIGJ1ZmZlciBwb2ludGVy IHByb3ZpZGVkIGFzIGlucHV0IGlzIG5vdA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBsb25nIGVub3VnaCB0byBiZSBwYXJzZWQgY29ycmVjdGx5Lg0KPiA+ICsgIEVGSV9J TlZBTElEX1BBUkFNRVRFUiAgICAgICAgICBUaGUgT2Zmc2V0IHBhcmFtZXRlciBlbmNvZGVkIHdp dGhpbiB0aGUNCj4gUHRyDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1 ZmZlciBpcyBub3QgdmFsaWQuDQo+ID4gKyoqLw0KPiA+ICtTVEFUSUMNCj4gPiArRUZJX1NUQVRV Uw0KPiA+ICtFRklBUEkNCj4gPiArUGFyc2VJbnRlcmNvbm5lY3REZXNjcmlwdG9yVGFibGUgKA0K PiA+ICsgIElOIFVJTlQ4ICAgKlB0ciwNCj4gPiArICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0 aCwNCj4gPiArICBJTiBVSU5UMzIgICpPZmZzZXQsDQo+ID4gKyAgSU4gVUlOVDY0ICBJbnRlcmNv bm5lY3RPZmZzZXQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBFRklfU1RBVFVTICBTdGF0dXM7 DQo+ID4gKw0KPiA+ICsgIC8vIFRoZSBzcGVjaWZpY2F0aW9uIGRvZXNuJ3Qgc3RyaWN0bHkgc3Rh dGUgdGhhdCB0aGUgaW50ZXJjb25uZWN0IHRhYmxlIGJlDQo+ID4gKyAgLy8gcGxhY2VkIGV4YWN0 bHkgYWZ0ZXIgc2F5LCBmdW5jdGlvbmFsIGRlcGVuZGVuY3kgdGFibGUgb3IgdGhlIHJlc291cmNl DQo+IG5vZGUuDQo+ID4gKyAgLy8gSW5zdGVhZCwgdGhlIGludGVyY29ubmVjdCBsb2NhdG9yJ3Mg ZGVzY3JpcHRvciBmaWVsZCAxIGdpdmVzIHRoZSBvZmZzZXQNCj4gPiArICAvLyBmcm9tIHRoZSBz dGFydCBvZiB0aGUgTVNDIG5vZGUgd2hlcmUgdGhlIHRhYmxlIGNvdWxkIGJlIGZvdW5kLg0KPiA+ ICsgIGlmICgqT2Zmc2V0ID4gKE1wYW1Nc2NOb2RlTGVuZ3RoQ3VtdWxhdGl2ZSArDQo+ID4gKyAg ICAgICAgICAgICAgICAgSW50ZXJjb25uZWN0T2Zmc2V0ICsgSGVhZGVyU2l6ZSkpDQo+ID4gKyAg ew0KPiA+ICsgICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPiArICAgIFByaW50IChMIlxu RVJST1IgOiBQYXJzaW5nIEludGVyY29ubmVjdCBkZXNjcmlwdG9yIHRhYmxlIGZhaWxlZCFcbiIp Ow0KPiA+ICsgICAgUHJpbnQgKA0KPiA+ICsgICAgICBMIkVSUk9SIDogT2Zmc2V0IG92ZXJsYXBz IHdpdGggb3RoZXIgb2JqZWN0cyB3aXRoaW4gdGhlIE1TQy4gT2Zmc2V0DQo+ICV1LlxuIiwNCj4g PiArICAgICAgSW50ZXJjb25uZWN0T2Zmc2V0DQo+ID4gKyAgICAgICk7DQo+ID4gKw0KPiA+ICsg ICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsg IGlmIChJbnRlcmNvbm5lY3RPZmZzZXQgPiAoKk1wYW1Nc2NOb2RlTGVuZ3RoKSkgew0KPiA+ICsg ICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPiArICAgIFByaW50IChMIlxuRVJST1IgOiBQ YXJzaW5nIEludGVyY29ubmVjdCBkZXNjcmlwdG9yIHRhYmxlIGZhaWxlZCFcbiIpOw0KPiA+ICsg ICAgUHJpbnQgKA0KPiA+ICsgICAgICBMIkVSUk9SIDogT2Zmc2V0IGZhbGxzIG91dHNpZGUgTVND J3Mgc3BhY2UuIE9mZnNldCAldS5cbiIsDQo+ID4gKyAgICAgIEludGVyY29ubmVjdE9mZnNldA0K PiA+ICsgICAgICApOw0KPiA+ICsNCj4gPiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVU RVI7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAqT2Zmc2V0ID0gSGVhZGVyU2l6ZSArIE1wYW1N c2NOb2RlTGVuZ3RoQ3VtdWxhdGl2ZSArDQo+IEludGVyY29ubmVjdE9mZnNldDsNCj4gPiArDQo+ ID4gKyAgUHJpbnQgKEwiXG4iKTsNCj4gPiArICBQcmludEZpZWxkTmFtZSAoNiwgTCIqIEludGVy Y29ubmVjdCBkZXNjIHRhYmxlICoiKTsNCj4gPiArICBQcmludCAoTCJcblxuIik7DQo+ID4gKw0K PiA+ICsgIC8vIFBhcnNlIGludGVyY29ubmVjdCBkZXNjcmlwdG9yIHRhYmxlDQo+ID4gKyAgKk9m ZnNldCArPSBQYXJzZUFjcGkgKA0KPiA+ICsgICAgICAgICAgICAgICBUUlVFLA0KPiA+ICsgICAg ICAgICAgICAgICA0LA0KPiA+ICsgICAgICAgICAgICAgICBOVUxMLA0KPiA+ICsgICAgICAgICAg ICAgICBQdHIgKyAqT2Zmc2V0LA0KPiA+ICsgICAgICAgICAgICAgICBBY3BpVGFibGVMZW5ndGgg LSAqT2Zmc2V0LA0KPiA+ICsgICAgICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChNcGFtSW50ZXJj b25uZWN0RGVzY3JpcHRvclRhYmxlUGFyc2VyKQ0KPiA+ICsgICAgICAgICAgICAgICApOw0KPiA+ ICsNCj4gPiArICBTdGF0dXMgPSBQYXJzZUludGVyY29ubmVjdERlc2NyaXB0b3JzIChQdHIsIEFj cGlUYWJsZUxlbmd0aCwgT2Zmc2V0KTsNCj4gPiArICByZXR1cm4gU3RhdHVzOw0KPiA+ICt9DQo+ ID4gKw0KPiA+ICsvKioNCj4gPiArICBUaGlzIGZ1bmN0aW9uIHBhcnNlcyBhbGwgdGhlIE1QQU0g ZnVuY3Rpb25hbCBkZXBlbmRlbmN5IG5vZGVzIHdpdGhpbiBhDQo+ID4gKyAgc2luZ2xlIHJlc291 cmNlIG5vZGUuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQ b2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+ICsgIEBwYXJhbSBbaW5dIEFj cGlUYWJsZUxlbmd0aCAgICBMZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ID4gKyAgQHBhcmFt IFtpbl0gT2Zmc2V0ICAgICAgICAgICAgIFBvaW50ZXIgdG8gY3VycmVudCBvZmZzZXQgd2l0aGlu IFB0ci4NCj4gPiArDQo+ID4gK1JldHVybnM6DQo+ID4gKw0KPiA+ICsgIFN0YXR1cw0KPiA+ICsN Cj4gPiArICBFRklfU1VDQ0VTUyAgICAgICAgICAgICAgICAgICAgTVBBTSBNU0MgTm9kZXMgd2Vy ZSBwYXJzZWQgcHJvcGVybHkuDQo+ID4gKyAgRUZJX0JBRF9CVUZGRVJfU0laRSAgICAgICAgICAg IFRoZSBidWZmZXIgcG9pbnRlciBwcm92aWRlZCBhcyBpbnB1dCBpcyBub3QNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBlbm91Z2ggdG8gYmUgcGFyc2VkIGNvcnJl Y3RseS4NCj4gPiArKiovDQo+ID4gK1NUQVRJQw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQ SQ0KPiA+ICtQYXJzZU1wYW1Nc2NGdW5jdGlvbmFsRGVwZW5kZW5jaWVzICgNCj4gPiArICBJTiBV SU5UOCAgICpQdHIsDQo+ID4gKyAgSU4gVUlOVDMyICBBY3BpVGFibGVMZW5ndGgsDQo+ID4gKyAg SU4gVUlOVDMyICAqT2Zmc2V0DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgVUlOVDMyICBGdW5j dGlvbmFsRGVwZW5kZW5jeUluZGV4Ow0KPiA+ICsNCj4gPiArICBGdW5jdGlvbmFsRGVwZW5kZW5j eUluZGV4ID0gMDsNCj4gPiArDQo+ID4gKyAgLy8gUGFyc2UgTVBBTSBNU0MgcmVzb3VyY2VzIHdp dGhpbiB0aGUgTVNDIGJvZHkNCj4gDQo+IEkgdGhpbmsgdGhpcyBzaG91bGQgYmUgKCpOdW1iZXJP ZkZ1bmN0aW9uYWxEZXBlbmRlbmNpZXMgPT0gMCkNCg0KW1JvaGl0XSBUaGlzIG1vZGVsIG9mIGNo ZWNrIGlzIHByZXNlbnQgaW4gbW9zdCBvZiB0aGUgcGFyc2VyIGZ1bmN0aW9ucy4gVGhpcyBpcyBh IGNoZWNrIHRvIGNhdGNoIHRoZSBjYXNlIHdoZXJlIHRoZSBwb3B1bGF0ZWQgTVBBTSB0YWJsZSBs YWNrcyBOdW1iZXJPZkZ1bmN0aW9uYWxEZXBlbmRlbmNpZXMuIElmIGEgcmVzb3VyY2UgaGFzIGJl ZW4gZGVmaW5lZCwgdGhlIHRhYmxlIHNob3VsZCBiZSBsb25nIGVub3VnaCB0byBoYXZlIE51bWJl ck9mRnVuY3Rpb25hbERlcGVuZGVuY2llcyBkZWZpbmVkLCB3aGV0aGVyIHplcm8gb3Igbm9uLXpy ZW8uIFRoaXMgaXMgdGhlIHJlYXNvbiB3aHkgd2UgdGhyb3cgTXBhbUxlbmd0aEVycm9yLCB3aGlj aCBpcyBhbiBlcnJvciBzcGVjaWZpY2FsbHkgaW5kaWNhdGluZyB0aGF0IHRoZSB0YWJsZSBsZW5n dGggaXMgbm90IGxvbmcgZW5vdWdoIHRvIG1ha2UgdGhlIHRhYmxlIHZhbGlkLg0KDQo+IA0KPiA+ ICsgIGlmIChOdW1iZXJPZkZ1bmN0aW9uYWxEZXBlbmRlbmNpZXMgPT0gTlVMTCkgew0KPiA+ICsg ICAgTXBhbUxlbmd0aEVycm9yIChMIk51bWJlciBvZiBmdW5jdGlvbmFsIGRlcGVuZGVuY2llcyBu b3Qgc2V0ISIpOw0KPiA+ICsgICAgcmV0dXJuIEVGSV9CQURfQlVGRkVSX1NJWkU7DQo+ID4gKyAg fQ0KPiA+ICsNCj4gPiArICB3aGlsZSAoRnVuY3Rpb25hbERlcGVuZGVuY3lJbmRleCA8DQo+ICpO dW1iZXJPZkZ1bmN0aW9uYWxEZXBlbmRlbmNpZXMpIHsNCj4gPiArICAgIFByaW50QmxvY2tUaXRs ZSAoDQo+ID4gKyAgICAgIDYsDQo+ID4gKyAgICAgIEwiKiBGdW5jdGlvbmFsIGRlcGVuZGVuY3kg KiIsDQo+ID4gKyAgICAgIEZ1bmN0aW9uYWxEZXBlbmRlbmN5SW5kZXgNCj4gPiArICAgICAgKTsN Cj4gPiArDQo+ID4gKyAgICAvLyBQYXJzZSBmdW5jdGlvbmFsIGRlcGVuZGVuY3kNCj4gPiArICAg ICpPZmZzZXQgKz0gUGFyc2VBY3BpICgNCj4gPiArICAgICAgICAgICAgICAgICBUUlVFLA0KPiA+ ICsgICAgICAgICAgICAgICAgIDQsDQo+ID4gKyAgICAgICAgICAgICAgICAgTlVMTCwNCj4gPiAr ICAgICAgICAgICAgICAgICBQdHIgKyAqT2Zmc2V0LA0KPiA+ICsgICAgICAgICAgICAgICAgIEFj cGlUYWJsZUxlbmd0aCAtICpPZmZzZXQsDQo+ID4gKyAgICAgICAgICAgICAgICAgUEFSU0VSX1BB UkFNUyAoTXBhbU1zY0Z1bmN0aW9uYWxEZXBlbmRlbmN5UGFyc2VyKQ0KPiA+ICsgICAgICAgICAg ICAgICAgICk7DQo+ID4gKw0KPiA+ICsgICAgRnVuY3Rpb25hbERlcGVuZGVuY3lJbmRleCsrOw0K PiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ICt9DQo+ID4g Kw0KPiA+ICsvKioNCj4gPiArICBUaGlzIGZ1bmN0aW9uIHBhcnNlcyBhbGwgdGhlIE1QQU0gcmVz b3VyY2Ugbm9kZXMgd2l0aGluIGEgc2luZ2xlIE1TQw0KPiA+ICsgIG5vZGUgd2l0aGluIHRoZSBN UEFNIEFDUEkgdGFibGUuICBJdCBhbHNvIGludm9rZXMgaGVscGVyIGZ1bmN0aW9ucyB0bw0KPiA+ ICsgIHZhbGlkYXRlIGFuZCBwYXJzZSBsb2NhdG9ycyBhbmQgZnVuY3Rpb25hbCBkZXBlbmRlbmN5 IGRlc2NyaXB0b3JzLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICAgICAg ICAgUG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlci4NCj4gPiArICBAcGFyYW0gW2lu XSBBY3BpVGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+ICsgIEBw YXJhbSBbaW5dIE9mZnNldCAgICAgICAgICAgICBQb2ludGVyIHRvIGN1cnJlbnQgb2Zmc2V0IHdp dGhpbiBQdHIuDQo+ID4gKw0KPiA+ICtSZXR1cm5zOg0KPiA+ICsNCj4gPiArICBTdGF0dXMNCj4g PiArDQo+ID4gKyAgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgICAgICAgIE1QQU0gTVNDIE5vZGVz IHdlcmUgcGFyc2VkIHByb3Blcmx5Lg0KPiA+ICsgIEVGSV9CQURfQlVGRkVSX1NJWkUgICAgICAg ICAgICBUaGUgYnVmZmVyIHBvaW50ZXIgcHJvdmlkZWQgYXMgaW5wdXQgaXMgbm90DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZW5vdWdoIHRvIGJlIHBhcnNlZCBj b3JyZWN0bHkuDQo+ID4gKyoqLw0KPiA+ICtTVEFUSUMNCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtF RklBUEkNCj4gPiArUGFyc2VNcGFtTXNjUmVzb3VyY2VzICgNCj4gPiArICBJTiBVSU5UOCAgICpQ dHIsDQo+ID4gKyAgSU4gVUlOVDMyICBBY3BpVGFibGVMZW5ndGgsDQo+ID4gKyAgSU4gVUlOVDMy ICAqT2Zmc2V0DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NUQVRVUyAgU3RhdHVzOw0K PiA+ICsgIFVJTlQ2NCAgICAgICpJbnRlcmNvbm5lY3RPZmZzZXRQdHI7DQo+ID4gKyAgVUlOVDMy ICAgICAgUmVzb3VyY2VJbmRleDsNCj4gPiArDQo+ID4gKyAgUmVzb3VyY2VJbmRleCA9IDA7DQo+ ID4gKw0KPiA+ICsgIGlmIChOdW1iZXJPZk1zY1Jlc291cmNlcyA9PSBOVUxMKSB7DQo+ID4gKyAg ICBNcGFtTGVuZ3RoRXJyb3IgKEwiTnVtYmVyIG9mIE1TQyByZXNvdXJjZSBub3Qgc2V0ISIpOw0K PiA+ICsgICAgcmV0dXJuIEVGSV9CQURfQlVGRkVSX1NJWkU7DQo+ID4gKyAgfQ0KPiA+ICsNCj4g PiArICB3aGlsZSAoUmVzb3VyY2VJbmRleCA8ICpOdW1iZXJPZk1zY1Jlc291cmNlcykgew0KPiA+ ICsgICAgUHJpbnRCbG9ja1RpdGxlICgNCj4gPiArICAgICAgNCwNCj4gPiArICAgICAgTCIqIFJl c291cmNlICoiLA0KPiA+ICsgICAgICBSZXNvdXJjZUluZGV4DQo+ID4gKyAgICAgICk7DQo+ID4g Kw0KPiA+ICsgICAgLy8gUGFyc2UgTVBBTSBNU0MgcmVzb3VyY2VzIHdpdGhpbiB0aGUgTVNDIGJv ZHkuIFRoaXMgY291bGQgYmUNCj4gdHJhY2VkLg0KPiA+ICsgICAgKk9mZnNldCArPSBQYXJzZUFj cGkgKA0KPiA+ICsgICAgICAgICAgICAgICAgIFRSVUUsDQo+ID4gKyAgICAgICAgICAgICAgICAg MiwNCj4gPiArICAgICAgICAgICAgICAgICBOVUxMLA0KPiA+ICsgICAgICAgICAgICAgICAgIFB0 ciArICpPZmZzZXQsDQo+ID4gKyAgICAgICAgICAgICAgICAgQWNwaVRhYmxlTGVuZ3RoIC0gKk9m ZnNldCwNCj4gPiArICAgICAgICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChNcGFtTXNjUmVzb3Vy Y2VQYXJzZXIpDQo+ID4gKyAgICAgICAgICAgICAgICAgKTsNCj4gPiArDQo+IA0KPiBJIHVuZGVy c3RhbmQgdGhhdCB0aGUgbG9jYXRvciBzaG91bGQgYmUgcHJpbnRlZCBiZWZvcmUgdGhlIGZ1bmN0 aW9uYWwNCj4gZGVwZW5kZW5jaWVzLA0KPiBidXQgY291bGRudCd0IHRoZSBNcGFtTXNjUmVzb3Vy Y2VQYXJzZXIgYW5kDQo+IE1wYW1Nc2NSZXNvdXJjZUxvY2F0b3JQYXJzZXIgc3RydWN0dXJlcw0K PiBiZSBtZXJnZWQgPw0KPiANCg0KW1JvaGl0XSBUaGUgcmVhc29uIHdlIHBhcnNlIGl0IHNlcGFy YXRlbHkgaXMgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGRpc3BsYXkgTXBhbU1zY1Jlc291cmNl TG9jYXRvclBhcnNlciBmaWVsZHMgKFRyYWNlID0gRkFMU0UpLiBQYXJzZUxvY2F0b3Igd291bGQg ZGVhbCB3aXRoIHBhcnNpbmcgdGhlIDEyIGJ5dGUgbG9jYXRvci4NCg0KPiA+ICsgICAgLy8gUGFy c2UgTVBBTSBNU0MgcmVzb3VyY2VzIHdpdGhpbiB0aGUgTVNDIGJvZHkuIFRoZXNlIGZpZWxkcyBh cmVuJ3QNCj4gdHJhY2VkLg0KPiA+ICsgICAgLy8gUGFyc2VMb2NhdG9yIHdvdWxkIHRyYWNlIGFu ZCBkaXNwbGF5IHRoZSBmaWVsZHMuDQo+ID4gKyAgICAqT2Zmc2V0ICs9IFBhcnNlQWNwaSAoDQo+ ID4gKyAgICAgICAgICAgICAgICAgRkFMU0UsDQo+ID4gKyAgICAgICAgICAgICAgICAgMiwNCj4g PiArICAgICAgICAgICAgICAgICBOVUxMLA0KPiA+ICsgICAgICAgICAgICAgICAgIFB0ciArICpP ZmZzZXQsDQo+ID4gKyAgICAgICAgICAgICAgICAgQWNwaVRhYmxlTGVuZ3RoIC0gKk9mZnNldCwN Cj4gPiArICAgICAgICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChNcGFtTXNjUmVzb3VyY2VMb2Nh dG9yUGFyc2VyKQ0KPiA+ICsgICAgICAgICAgICAgICAgICk7DQo+ID4gKw0KPiANCj4gU2hvdWxk bid0IGl0IGp1c3QgYmUgY291bnRlZCBhcyBhbiBlcnJvciBhbmQgcHJvY2VlZCA/DQoNClNob3Vs ZG4ndCBpdCBqdXN0IGJlIGNvdW50ZWQgYXMgYW4gZXJyb3IgYW5kIHByb2NlZWQgPw0KDQpbUm9o aXRdIFRoZSBzcGVjIGRvZXMgdGFsayBhYm91dCB0aGUgY2FzZSB3aGVyZSBhIHRhYmxlIGNvdWxk IGhhdmUgbm8gbG9jYXRvcnMgKDIuMi4yIEVtcHR5IE1TQyBub2RlKS4NCi0tLSBBbiBlbXB0eSBN U0Mgbm9kZSBoYXMgbm8gcmVzb3VyY2Ugbm9kZXMsIGFuZCBpdHMgbnVtYmVyIG9mIHJlc291cmNl IG5vZGVzIGlzIHNldCB0byAwLg0KDQpIb3dldmVyLCBzaW5jZSAqTnVtYmVyT2ZNc2NSZXNvdXJj ZXMgaXMgbm9uLXplcm8sIHRoaXMgc2VlbXMgdG8gYmUgYSBjYXNlIHdlIHNob3VsZCBub3QgbGV0 IHNsaXAgYnkuDQoNCj4gDQo+ID4gKyAgICAvLyBQcm9jZWVkIHdpdGggcGFyc2luZyBvbmx5IGlm IGEgdmFsaWQgbG9jYXRvciBoYXMgYmVlbiBzZXQuDQo+ID4gKyAgICBpZiAoKExvY2F0b3JUeXBl ID09IE5VTEwpIHx8IChMb2NhdG9yID09IE5VTEwpKSB7DQo+ID4gKyAgICAgIE1wYW1MZW5ndGhF cnJvciAoTCJMb2NhdG9yIHR5cGUgb3IgTG9jYXRvciBub3Qgc2V0Iik7DQo+ID4gKyAgICAgIHJl dHVybiBFRklfQkFEX0JVRkZFUl9TSVpFOw0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiArICAgIFBh cnNlTG9jYXRvciAoKTsNCj4gPiArDQo+ID4gKyAgICAvLyBQYXJzZSB0aGUgbnVtYmVyIG9mIGZ1 bmN0aW9uYWwgZGVwZW5kZW5jeSBkZXNjcmlwdG9ycy4NCj4gPiArICAgICpPZmZzZXQgKz0gUGFy c2VBY3BpICgNCj4gPiArICAgICAgICAgICAgICAgICBUUlVFLA0KPiA+ICsgICAgICAgICAgICAg ICAgIDIsDQo+ID4gKyAgICAgICAgICAgICAgICAgTlVMTCwNCj4gPiArICAgICAgICAgICAgICAg ICBQdHIgKyAqT2Zmc2V0LA0KPiA+ICsgICAgICAgICAgICAgICAgIEFjcGlUYWJsZUxlbmd0aCAt ICpPZmZzZXQsDQo+ID4gKyAgICAgICAgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoTXBhbU1zY0Z1 bmN0aW9uYWxEZXBlbmRlbmN5Q291bnRQYXJzZXIpDQo+ID4gKyAgICAgICAgICAgICAgICAgKTsN Cj4gPiArDQo+ID4gKyAgICBTdGF0dXMgPSBQYXJzZU1wYW1Nc2NGdW5jdGlvbmFsRGVwZW5kZW5j aWVzIChQdHIsIEFjcGlUYWJsZUxlbmd0aCwNCj4gT2Zmc2V0KTsNCj4gDQo+IFdpdGhvdXQgZW1w dHkgbGluZSBpZiBwb3NzaWJsZSAobWF5YmUgdGhlIGNvbW1lbnQgYXBwbGllcyB0byBvdGhlciBw bGFjZXMNCj4gdG9vKS4NCg0KW1JvaGl0XSBBY2suIElzIHRoZXJlIGEgZ3VpZGVsaW5lIG9uIGxp bmUgc3BhY2luZyBJIGNvdWxkIGZpbmQgc29tZXdoZXJlPw0KDQo+IA0KPiA+ICsNCj4gPiArICAg IGlmIChTdGF0dXMgIT0gRUZJX1NVQ0NFU1MpIHsNCj4gPiArICAgICAgcmV0dXJuIFN0YXR1czsN Cj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAgICAvLyBSZXNldCBsb2NhdG9yIHRvIHN0YXJ0IG9m IHRoZSBsb2NhdG9yIGRlc2NyaXB0b3IuDQo+ID4gKyAgICBJbnRlcmNvbm5lY3RPZmZzZXRQdHIg PSAoVUlOVDY0ICopTG9jYXRvcjsNCj4gPiArDQo+ID4gKyAgICAvLyBJZiBvZmZzZXQgZmllbGQg aGFzIGJlZW4gc2V0LCBwYXJzZSB0aGUgaW50ZXJjb25uZWN0IGRlc2NyaXB0aW9uIHRhYmxlLg0K PiANCj4gaWYgKCgNCj4gKHdpdGhvdXQgZXh0cmEgc3BhY2VzKQ0KDQpbUm9oaXRdIEFjay4NCg0K PiANCj4gPiArICAgIGlmICggICgqTG9jYXRvclR5cGUgPT0gRUZJX0FDUElfTVBBTV9MT0NBVElP Tl9JTlRFUkNPTk5FQ1QpDQo+ID4gKyAgICAgICAmJiAoSW50ZXJjb25uZWN0T2Zmc2V0UHRyICE9 IE5VTEwpKQ0KPiA+ICsgICAgew0KPiA+ICsgICAgICBTdGF0dXMgPSBQYXJzZUludGVyY29ubmVj dERlc2NyaXB0b3JUYWJsZSAoDQo+ID4gKyAgICAgICAgICAgICAgICAgUHRyLA0KPiA+ICsgICAg ICAgICAgICAgICAgIEFjcGlUYWJsZUxlbmd0aCwNCj4gPiArICAgICAgICAgICAgICAgICBPZmZz ZXQsDQo+ID4gKyAgICAgICAgICAgICAgICAgKkludGVyY29ubmVjdE9mZnNldFB0cg0KPiA+ICsg ICAgICAgICAgICAgICAgICk7DQo+ID4gKw0KPiA+ICsgICAgICBpZiAoU3RhdHVzICE9IEVGSV9T VUNDRVNTKSB7DQo+ID4gKyAgICAgICAgcmV0dXJuIFN0YXR1czsNCj4gPiArICAgICAgfQ0KPiA+ ICsgICAgfQ0KPiA+ICsNCj4gPiArICAgIFJlc291cmNlSW5kZXgrKzsNCj4gPiArICB9DQo+ID4g Kw0KPiA+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ ID4gKyAgVGhpcyBmdW5jdGlvbiBwYXJzZXMgYWxsIHRoZSBNUEFNIE1TQyBub2RlcyB3aXRoaW4g dGhlIE1QQU0gQUNQSQ0KPiB0YWJsZS4gIEl0DQo+ID4gKyAgYWxzbyBpbnZva2VzIGEgaGVscGVy IGZ1bmN0aW9uIHRvIGRldGVjdCBhbmQgcGFyc2UgcmVzb3VyY2Ugbm9kZXMgdGhhdA0KPiBtYXli ZQ0KPiA+ICsgIHByZXNlbnQuDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAg ICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+ICsgIEBwYXJh bSBbaW5dIEFjcGlUYWJsZUxlbmd0aCAgICBMZW5ndGggb2YgdGhlIEFDUEkgdGFibGUuDQo+ID4g KyAgQHBhcmFtIFtpbl0gT2Zmc2V0ICAgICAgICAgICAgIEN1cnJlbnQgb2Zmc2V0IHdpdGhpbiBQ dHIuDQo+ID4gKw0KPiA+ICtSZXR1cm5zOg0KPiA+ICsNCj4gPiArICBTdGF0dXMNCj4gPiArDQo+ ID4gKyAgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgICAgICAgIE1QQU0gTVNDIE5vZGVzIHdlcmUg cGFyc2VkIHByb3Blcmx5Lg0KPiA+ICsgIEVGSV9CQURfQlVGRkVSX1NJWkUgICAgICAgICAgICBU aGUgYnVmZmVyIHBvaW50ZXIgcHJvdmlkZWQgYXMgaW5wdXQgaXMgbm90DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZW5vdWdoIHRvIGJlIHBhcnNlZCBjb3JyZWN0 bHkuDQo+ID4gKyoqLw0KPiA+ICtTVEFUSUMNCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtFRklBUEkN Cj4gPiArUGFyc2VNcGFtTXNjTm9kZXMgKA0KPiA+ICsgIElOIFVJTlQ4ICAgKlB0ciwNCj4gPiAr ICBJTiBVSU5UMzIgIEFjcGlUYWJsZUxlbmd0aCwNCj4gPiArICBJTiBVSU5UMzIgIE9mZnNldA0K PiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEVGSV9TVEFUVVMgIFN0YXR1czsNCj4gPiArICBVSU5U MzIgICAgICBNc2NJbmRleDsNCj4gPiArDQo+ID4gKyAgTXNjSW5kZXggPSAwOw0KPiA+ICsNCj4g PiArICB3aGlsZSAoT2Zmc2V0IDwgQWNwaVRhYmxlTGVuZ3RoKSB7DQo+ID4gKyAgICBQcmludEJs b2NrVGl0bGUgKDIsIEwiKiBNc2MgKiIsIE1zY0luZGV4KTsNCj4gPiArICAgIC8vIFBhcnNlIE1Q QU0gbXNjIG5vZGUNCj4gPiArICAgIE9mZnNldCArPSBQYXJzZUFjcGkgKA0KPiA+ICsgICAgICAg ICAgICAgICAgVFJVRSwNCj4gPiArICAgICAgICAgICAgICAgIDAsDQo+ID4gKyAgICAgICAgICAg ICAgICBOVUxMLA0KPiA+ICsgICAgICAgICAgICAgICAgUHRyICsgT2Zmc2V0LA0KPiA+ICsgICAg ICAgICAgICAgICAgQWNwaVRhYmxlTGVuZ3RoIC0gT2Zmc2V0LA0KPiA+ICsgICAgICAgICAgICAg ICAgUEFSU0VSX1BBUkFNUyAoTXBhbU1zY05vZGVQYXJzZXIpDQo+ID4gKyAgICAgICAgICAgICAg ICApOw0KPiA+ICsNCj4gPiArICAgIC8vIFBhcnNlIE1QQU0gTVNDIHJlc291cmNlcyB3aXRoaW4g dGhlIE1TQyBib2R5DQo+IA0KPiBJIG0gbm90IHN1cmUgdGhpcyBjYXNlIGlzIHBvc3NpYmxlIGFz IE1wYW1Nc2NOb2RlTGVuZ3RoIGlzIHN0YXRpY2FsbHkNCj4gZGVmaW5lZC4gTWF5YmUgaXQgc2hv dWxkIGJlICgqTXBhbU1zY05vZGVMZW5ndGggPT0gMCkuDQoNCltSb2hpdF0gVGhpcyBpcyBhIGNv cm5lciBjYXNlIGNoZWNrIHRvIHNlZSBpZiBzb21lb25lIGhhcyBwb3B1bGF0ZWQgYSBNUEFNIEFD UEkgdGFibGUgd2l0aG91dCB0aGUgTVNDIGJvZHkuIFRoZSBzdGF0aWNhbGx5IGRlZmluZWQgcG9p bnRlciB3b3VsZCBiZSBOVUxMIGluIHRoaXMgY2FzZS4gKk1wYW1Nc2NOb2RlTGVuZ3RoJ3MgdmFs dWUgaXMgbm90IHJlc3RyaWN0ZWQgZnJvbSB0aGUgc3BlYyBidXQgaXQgY2VydGFpbmx5IGhhcyB0 byBiZSBhdCBsZWFzdCBzaXplb2YoTXBhbU1zY05vZGVib2R5KSB3aGljaCB3ZSB0YWxseSB1c2lu ZyANCk1wYW1Nc2NOb2RlTGVuZ3RoQ3VtdWxhdGl2ZSBmaWVsZC4gKHNpbWlsYXIgZXhwbGFuYXRp b24gYWRkZWQgZm9yIE51bWJlck9mRnVuY3Rpb25hbERlcGVuZGVuY2llcykNCg0KPiANCj4gPiAr ICAgIGlmIChNcGFtTXNjTm9kZUxlbmd0aCA9PSBOVUxMKSB7DQo+ID4gKyAgICAgIE1wYW1MZW5n dGhFcnJvciAoTCJNUEFNIE1TQyBub2RlIGxlbmd0aCBub3Qgc2V0ISIpOw0KPiA+ICsgICAgICBy ZXR1cm4gRUZJX0JBRF9CVUZGRVJfU0laRTsNCj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAgICBT dGF0dXMgPSBQYXJzZU1wYW1Nc2NSZXNvdXJjZXMgKFB0ciwgQWNwaVRhYmxlTGVuZ3RoLCAmT2Zm c2V0KTsNCj4gDQo+IFdpdGhvdXQgZW1wdHkgbGluZSBpZiBwb3NzaWJsZS4NCg0KW1JvaGl0XSBB Y2suDQoNCj4gDQo+ID4gKw0KPiA+ICsgICAgaWYgKFN0YXR1cyAhPSBFRklfU1VDQ0VTUykgew0K PiA+ICsgICAgICByZXR1cm4gU3RhdHVzOw0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiArICAgIE1w YW1Nc2NOb2RlTGVuZ3RoQ3VtdWxhdGl2ZSArPSAoKk1wYW1Nc2NOb2RlTGVuZ3RoKTsNCj4gPiAr ICAgIE1zY0luZGV4Kys7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICByZXR1cm4gRUZJX1NVQ0NF U1M7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIFRoaXMgZnVuY3Rpb24gcGFyc2Vz IHRoZSBNUEFNIEFDUEkgdGFibGUncyBnZW5lcmljIGhlYWRlci4gSXQgYWxzbyBpbnZva2VzDQo+ IGENCj4gPiArICBzdWIgcm91dGluZSB0aGF0IHdvdWxkIGhlbHAgd2l0aCBwYXJzaW5nIHJlc3Qg b2YgdGhlIHRhYmxlLg0KPiA+ICsNCj4gPiArICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAgICAg ICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KPiA+ICsgIEBwYXJhbSBbaW5dIFB0 ciAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+ ICsgIEBwYXJhbSBbaW5dIEFjcGlUYWJsZUxlbmd0aCAgICBMZW5ndGggb2YgdGhlIEFDUEkgdGFi bGUuDQo+ID4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRo ZSBBQ1BJIHRhYmxlLg0KPiA+ICsqKi8NCj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArUGFy c2VBY3BpTXBhbSAoDQo+ID4gKyAgSU4gQk9PTEVBTiAgVHJhY2UsDQo+ID4gKyAgSU4gVUlOVDgg ICAgKlB0ciwNCj4gPiArICBJTiBVSU5UMzIgICBBY3BpVGFibGVMZW5ndGgsDQo+ID4gKyAgSU4g VUlOVDggICAgQWNwaVRhYmxlUmV2aXNpb24NCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBFRklf U1RBVFVTICBTdGF0dXM7DQo+ID4gKw0KPiA+ICsgIGlmICghVHJhY2UpIHsNCj4gPiArICAgIHJl dHVybjsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIC8vIFBhcnNlIGdlbmVyaWMgdGFibGUgaGVh ZGVyDQo+ID4gKyAgSGVhZGVyU2l6ZSA9IFBhcnNlQWNwaSAoDQo+ID4gKyAgICAgICAgICAgICAg ICAgVFJVRSwNCj4gPiArICAgICAgICAgICAgICAgICAwLA0KPiA+ICsgICAgICAgICAgICAgICAg ICJNUEFNIiwNCj4gPiArICAgICAgICAgICAgICAgICBQdHIsDQo+ID4gKyAgICAgICAgICAgICAg ICAgQWNwaVRhYmxlTGVuZ3RoLA0KPiA+ICsgICAgICAgICAgICAgICAgIFBBUlNFUl9QQVJBTVMg KE1wYW1QYXJzZXIpDQo+ID4gKyAgICAgICAgICAgICAgICAgKTsNCj4gPiArDQo+ID4gKyAgU3Rh dHVzID0gUGFyc2VNcGFtTXNjTm9kZXMgKFB0ciwgQWNwaVRhYmxlTGVuZ3RoLCBIZWFkZXJTaXpl KTsNCj4gPiArDQo+ID4gKyAgaWYgKFN0YXR1cyA9PSBFRklfU1VDQ0VTUykgew0KPiA+ICsgICAg Ly8gQ2hlY2sgaWYgdGhlIGxlbmd0aCBvZiBhbGwgTVBBTSBNU0NzIHdpdGggdGhlIGhlYWRlciwg bWF0Y2hlcyB3aXRoDQo+IHRoZQ0KPiA+ICsgICAgLy8gQUNQSSB0YWJsZSdzIGxlbmd0aCBmaWVs ZC4NCj4gPiArICAgIGlmICgqKEFjcGlIZHJJbmZvLkxlbmd0aCkgIT0gKE1wYW1Nc2NOb2RlTGVu Z3RoQ3VtdWxhdGl2ZSArDQo+IEhlYWRlclNpemUpKSB7DQo+ID4gKyAgICAgIEluY3JlbWVudEVy cm9yQ291bnQgKCk7DQo+ID4gKyAgICAgIFByaW50IChMIlxuRVJST1I6IExlbmd0aCBtaXNtYXRj aCEgOiAiKTsNCj4gPiArICAgICAgUHJpbnQgKEwiTXNjIExlbmd0aCB0b3RhbCAhPSBNUEFNIHRh YmxlIGxlbmd0aC4iKTsNCj4gPiArICAgICAgUHJpbnQgKA0KPiA+ICsgICAgICAgIEwidGFibGUg bGVuZ3RoIDogJXUgTXNjIHRvdGFsIDogJXVcbiIsDQo+ID4gKyAgICAgICAgKihBY3BpSGRySW5m by5MZW5ndGgpLA0KPiA+ICsgICAgICAgIE1wYW1Nc2NOb2RlTGVuZ3RoQ3VtdWxhdGl2ZQ0KPiA+ ICsgICAgICAgICk7DQo+ID4gKyAgICB9DQo+ID4gKyAgfQ0KPiA+ICt9DQoNCn5+DQoNClJlZ2Fy ZHMsDQpSb2hpdA0KDQoKLT0tPS09LT0tPS09LT0tPS09LT0tPS0KR3JvdXBzLmlvIExpbmtzOiBZ b3UgcmVjZWl2ZSBhbGwgbWVzc2FnZXMgc2VudCB0byB0aGlzIGdyb3VwLgpWaWV3L1JlcGx5IE9u bGluZSAoIzEwNzE2NSk6IGh0dHBzOi8vZWRrMi5ncm91cHMuaW8vZy9kZXZlbC9tZXNzYWdlLzEw NzE2NQpNdXRlIFRoaXMgVG9waWM6IGh0dHBzOi8vZ3JvdXBzLmlvL210Lzk5MDY2MTg4Lzc2ODYx NzYKR3JvdXAgT3duZXI6IGRldmVsK293bmVyQGVkazIuZ3JvdXBzLmlvClVuc3Vic2NyaWJlOiBo dHRwczovL2VkazIuZ3JvdXBzLmlvL2cvZGV2ZWwvdW5zdWIgW3JlYmVjY2FAb3BlbmZ3LmlvXQot PS09LT0tPS09LT0tPS09LT0tPS09LQoKDQo=