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 4A0609419AE for ; Mon, 24 Jul 2023 16:08:06 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=DvpcixmPElAYEsnTZv/MpGV5MmiBc8BSQ/XaV8+nRjE=; 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=1690214884; v=1; b=cc46iXXyourIuL+VVh76heTAervNQtxkJ+4e2PstC/C0YYMj3kYXvTNAsp17Z5VeOQOhUC8X K29wtVtw3Ch/7AZjCvMx88oF5oL8UMva4mbpIbSHZ+WwFk0yJzRJR4jB5Pg8n40uciLCRhqBBo4 N3rn88CPKdpugS8PmYgFHAoA= X-Received: by 127.0.0.2 with SMTP id 4A3jYY7687511xha59OqzBqy; Mon, 24 Jul 2023 09:08:04 -0700 X-Received: from EUR05-AM6-obe.outbound.protection.outlook.com (EUR05-AM6-obe.outbound.protection.outlook.com [40.107.22.86]) by mx.groups.io with SMTP id smtpd.web11.52326.1690214883343581591 for ; Mon, 24 Jul 2023 09:08:04 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=L65JcqP+U4d/IrMG7bA+bTMoOk4Y2q9FJJW2bNMjvh740ILwP3fP+9A9bO5pGkc0AmxYsFtHLP4HhuCBHH1T67WeUYxiymYHhY8hcNJpklka1bB0F3NmzggdkfRljOjzKSw6zzDIDR7lZt2RFV8HWeda3CqnIFUV01hbbMddwSBGzZ44dqijDHpeEnkjRBAb4UWdld4yD4EeQjPF6isk1NX3KN/hE76uQBEXDdHr6TeKhglGT8OvZ13SYGg/nxezpPtoLSae1qCRiQnbK81E2+jz+lCW63S+WXJNzHL8j8E7MgiqOp8fJ6qpqBnTdDrdbpCFgo+WUw0Dxt1qsW7Huw== 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=0OoJpOlxDAYZkvDjueUdpc+LdcWow5aGxQOeg+5f6iU=; b=DKZ8F4ruexZ7LO2cjiRgkT9XRrgahvCPq0lBjLMPJoKLMpvxMIzfm76XIO0jnVMNU5N6NwVCA6qod4DCINlXJoSppvXFhFMgUT+pxkdVDel6bjUCuah2nCWIoswgkBrcv60c4f5PlYNpqs01CWV/c/2gZ2NPKpwjWQ5MLcf4Mff0M9QigER1jKq8QAjiKTDJdkNparnKHIQlcXz4LPIn2ZaxjorlGTAt8/+48wXblVpYTeMyxx1yaJwxtDVhaYZ4DNalN7WPfn3EdzkATtJSZkcu/ZVsGkZghtH8+nfO1c4YLBVu40AgZ06lW0To9ArUKlLsJy4YUbP1/ygJvCbcXw== 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 AS4PR08MB7629.eurprd08.prod.outlook.com (2603:10a6:20b:4cc::18) 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 16:07:58 +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 16:07:58 +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/IrSIggABWMACAAAgi4A== Date: Mon, 24 Jul 2023 16:07:58 +0000 Message-ID: References: <20230522144506.2799121-1-Rohit.Mathew@arm.com> <3bf3780a-b064-1d60-78ed-0e323726adc7@arm.com> In-Reply-To: <3bf3780a-b064-1d60-78ed-0e323726adc7@arm.com> Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: DBB5D011F34E9346862E29BB9D554AAE.0 x-checkrecipientchecked: true x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AM6PR08MB3783:EE_|AS4PR08MB7629:EE_ x-ms-office365-filtering-correlation-id: 1d2e47ee-5b5e-4be0-db32-08db8c60260c nodisclaimer: true x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: L6vyEF0yKJfzdVnZBpJ5hHblUrAX4FzhkqLE2rM3ra/4dACydi7l9e8bCD56ClV4ilel+Pne7IaTRbyRzQootKDMo6LCkdCRZ2TU5TUZhILnB1iE58oBy4YWzk70qeqhv4zGpzclvDkH+uhKd+fhTvmRfEMJnmlfPngZR0jkKtc54MxqGfRhGB85/aHNYqIY+GN5gFv7r4UrK7E/v0/pBisAx6K8xiymz83LNjNDMix0yE17vvpsFB9976SA4GiWgz9o1A4A00SmeMSOR+k75Ek086NqKIg/VLhkDW9kgQSv6RDD8c8wx7zv0xwfM+Vp8CaJ3s8wEUs8tlLVxRreuXZHAxHb/+IwqZLmLEy1QVk7WNSw1mYNuY8cJdTjt4bebnQyBsROTq8CPJe5Cmvn1moMZApg5vM3S2jCy3QF6EUG8FNW0rZEoFZGNFt1dX01i5xAck9inqqmEgmrA+IeKhfW2239oP55/H6Wz77AdKbQH/f4hlPLVwR/SK1MSig344dC/AdPY0x3dm6Y0yq4tyxfk8N5wcVAwhXPQboQ+btogBxvhe5RyV6MUw+IBF5D3zvUwzk70BlF8lP9nQlNk8zSp0lCHttsJpJhFAdlvUWAM+2wOnrj91sn86vp6qsIV+xjMrqa7K82ktiBhsGvrw== x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?SjQzdFV5SEJjNnp1eGpkZktOK0M0eHpuZy9YWFJ2eG5rdkpWdXZTdm9udXZ2?= =?utf-8?B?TExzSnl0NGFTcEdNc1ExWEMvd3Fyam9VYi9FVVRFdU84QUsrR0FOREVvcW1r?= =?utf-8?B?WTBFRnBwUG54UCtpVldOMkhXTlBtRzNwR2Fnb2l2Rm1xbzBRdVlJMFQ0WTRy?= =?utf-8?B?NHA2RnJWR3J0RU5IdXB5UXB0dURVckxjUDVSRXlyM09GRGNhenlsbWoyb3lH?= =?utf-8?B?c1QrZFZzaUlMSmVoSDFtSlRBUzlBQU4wSTd5bjdIcWJjS2FtVGhzd25XZVVW?= =?utf-8?B?V1k1R0RSNmU0emJCR29LZHlRZjFtRGtBUVlHbjNIMTRoYmRQaEJaakFycDFF?= =?utf-8?B?SGkzdHIzWjAyR2pBdVkvWGh2SnlQZXNsWDV2Sk15Q1YyaXdSR055a29OT2JI?= =?utf-8?B?WVplWnNIWURGdWZ5dXV2bXJXU2Z4THpLYXRoM1NoZEVrOFpyOFR3TXc2K3p6?= =?utf-8?B?VVdzOElNc3NFekJvcmJ1MUZpS2x2UlljQUczQ0gwMmpzVzJ3bmE4S2dlWXRy?= =?utf-8?B?THVMUkRHQXpTLytwUzFzeU9xU3REc0JsTmJEZ3NUbFZ1R1ZVSENCTERhN2lR?= =?utf-8?B?NHY1R2VsMlo1YkNRaXUwRk9FNDc2S2RrRGhGTFNoenJST1ZmZVA0M1dreTM1?= =?utf-8?B?czlicVE1cnhCQ21YWFBibFgyV3FDUWJtMERMd25iQndjd2tEZElsamtLd1lU?= =?utf-8?B?d2IxRC9wWEFkK3ZXNTQ4aElDQys1V0JMMDBFb2sxNnRsT2dRKzNBNXN6SUFU?= =?utf-8?B?eFBsZFd0bWo0WXdXcTNFRWxZT1ZURFIvN29yR1h5QzVORWFIbmxGazRWTHBZ?= =?utf-8?B?aFMzOFg2bzc0UG5GOFZ6cXdUbVR1b0lBaUNZTjNmcHdwekZIb0J5NDNhN1px?= =?utf-8?B?djI3ZXk1RmwyM29BRHFXbmRkYzRORURPYmRjQXpTQVU2Y0hzQUJjeWY5ZGsv?= =?utf-8?B?MFgxOWNxWDYrdG9aK2Vrd0JiU2ZkcTMrSzQ1aDQ5VTRZZHdnWGJYUU16c1Jv?= =?utf-8?B?VENtSGN6blhGTmp5aUcvTGI5MUI0Qm1ML2VoOG5PdkxPTTFhZXJQUXNueUJL?= =?utf-8?B?clJ0VzJnWCs5V05VUHVqV01sMVpGbzl2Z1JWSkEzR2dCQmhBM1NzbmhLRElh?= =?utf-8?B?T05TWHB5ZjhyVFkvdEpMM2cxc2JIZ21iSWx3Wmg0c2dMUURqN21rSG93TCtT?= =?utf-8?B?bVFWcUJSanFXbXo2TGsxNTMyYnJjM2ZjRGFFV2ZRNEN6MldGRkxka1JmYU43?= =?utf-8?B?WlltcjJVc3JQaU9ubE5ReWxsRUNsTFJXQUE3QXc3NmRTbHo3UHJhWm9DYUZW?= =?utf-8?B?MW91VTMyd0RwOWUxZWFFVGhqbEhJWHJoWDRVZENSQnVsRWx3MjdkL3pHMjN4?= =?utf-8?B?VTdqckpkSUE1SWhSaWN4U3NlSFRSeHZDUFVxT0JKbzVnWWp5K0NSdjM2ckRH?= =?utf-8?B?MEw2aUd0TzNsT3FEWlBHaWFBeWhVMDhnWTc3RG83REJEdVlxWUhremRKMG5X?= =?utf-8?B?VGxTNnBTaldjQjB3Y2U0MWwvaWNrZSsyWDZDZlZCTDljdGgvMXlQN1ovUXVF?= =?utf-8?B?L09TYnJmbXVVaVJWUEYvUTFnc2hud1NaQmtjQ2xWaGFKN1Z6eDBkRDhSaXBq?= =?utf-8?B?RXFjNnpCeUl3SFBaWkNYZ0tIeXRxbDdxT2Y5cDR1VndOdDBob2UrNDJBQnda?= =?utf-8?B?VllSL0hMMjZtaDhaeEVqUFl5SER3QVQwZ2lyQ0wxOSt0eWZ5bC9FdnFJL0o2?= =?utf-8?B?dE9GdkNBV3R2RFB0TFBEbkJCUVVGY0JRNHgyaWkwc081L3Q3WHhTbW8yMU5Q?= =?utf-8?B?NlZKOVp3aytDVnMyKzJOWDAzUWVIcG90bnNVNmpXeUFsQm03L2RQS25obVN4?= =?utf-8?B?MU1CbENaY0RJMUdqVC9ISGVDdkNqRUlCc3NyeldCM2d0VTFOZGdkRi9kQVdi?= =?utf-8?B?dHRvMUtGVjZSeUg1SjNFK2loWmNRc056WHVlSG1aa1lsRkR5ckQzNE9zRHJT?= =?utf-8?B?RlB4TTJLQ3JMYXpJZ0F0M1lHYTVxVnlMYjhCdGtjVEIzK1BNbXRFdlBrcnZ2?= =?utf-8?B?RjZoNWlDMTlEbzlrVlRudXZ4ZnBOa3dGNkdDNitudUZTTlNjRThrQVl4KzZn?= =?utf-8?Q?ifzk=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: 1d2e47ee-5b5e-4be0-db32-08db8c60260c X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jul 2023 16:07:58.6129 (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: R50ubzBwfosvO9PSlGvIpR6KQz6cs0AWy+bh7uJmN3LtH8YQ4dWNnpXTP8lrnNw/FZAc9sTIFly9uPvyuG7KEg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR08MB7629 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: GXqGPiDp1d0OulPYHDKS5mrcx7686176AA= 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=cc46iXXy; 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 SGkgUGllcnJlLA0KDQpUaGFuayB5b3UgZm9yIHRoZSByZXNwb25zZS4gRmV3IGNvbW1lbnRzIGlu bGluZSAtDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogUGllcnJlIEdv bmRvaXMgPHBpZXJyZS5nb25kb2lzQGFybS5jb20+DQo+IFNlbnQ6IE1vbmRheSwgSnVseSAyNCwg MjAyMyAzOjQwIFBNDQo+IFRvOiBSb2hpdCBNYXRoZXcgPFJvaGl0Lk1hdGhld0Bhcm0uY29tPjsg ZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gQ2M6IFRob21hcyBBYnJhaGFtIDx0aG9tYXMuYWJyYWhh bUBhcm0uY29tPjsgU2FtaSBNdWphd2FyDQo+IDxTYW1pLk11amF3YXJAYXJtLmNvbT47IEphbWVz IE1vcnNlIDxKYW1lcy5Nb3JzZUBhcm0uY29tPjsgUmF5IE5pDQo+IDxyYXkubmlAaW50ZWwuY29t PjsgWmhpY2hhbyBHYW8gPHpoaWNoYW8uZ2FvQGludGVsLmNvbT47IG5kDQo+IDxuZEBhcm0uY29t Pg0KPiBTdWJqZWN0OiBSZTogW2VkazItZGV2ZWxdIFtQQVRDSCBWMyAzLzNdIFNoZWxsUGtnL0Fj cGlWaWV3OiBBZGQgTVBBTQ0KPiBQYXJzZXINCj4gDQo+IEhlbGxvIFJvaGl0LA0KPiBUaGFua3Mg Zm9yIHRoZSBhbnN3ZXJzLCBJIHNob3VsZCBoYXZlIGFsc28gYW5zd2VyZWQgeW91ciBxdWVzdGlv bnMsDQo+IA0KPiBSZWdhcmRzLA0KPiBQaWVycmUNCj4gDQo+IE9uIDcvMjQvMjMgMTE6NTAsIFJv aGl0IE1hdGhldyB3cm90ZToNCj4gPiBIaSBQaWVycmUsDQo+ID4NCj4gPiBUaGFuayB5b3UgZm9y IHRoZSBkZXRhaWxlZCByZXZpZXcuIFBsZWFzZSBmaW5kIG15IHJlc3BvbnNlIGlubGluZS4NCj4g Pg0KPiA+PiBPbiA1LzIyLzIzIDE2OjQ1LCBSb2hpdCBNYXRoZXcgdmlhIGdyb3Vwcy5pbyB3cm90 ZToNCj4gPj4+IEFkZCBhIHBhcnNlciBmb3IgdGhlIE1QQU0gKE1lbW9yeSBzeXN0ZW0gcmVzb3Vy Y2UgcGFydGl0aW9uaW5nIGFuZA0KPiA+Pj4gbW9uaXRvcmluZykgQUNQSSB0YWJsZS4gVGhpcyBw YXJzZXIgd291bGQgcGFyc2UgYWxsIE1QQU0gcmVsYXRlZA0KPiA+Pj4gc3RydWN0dXJlcyBlbWJl ZGRlZCBhcyBwYXJ0IG9mIHRoZSBBQ1BJIHRhYmxlLiBOZWNlc3NhcnkgdmFsaWRhdGlvbnMgYXJl DQo+ID4+PiBhbHNvIHBlcmZvcm1lZCB3aGVyZSBhbmQgd2hlbiByZXF1aXJlZC4NCj4gPj4+DQo+ ID4+PiBTaWduZWQtb2ZmLWJ5OiBSb2hpdCBNYXRoZXcgPFJvaGl0Lk1hdGhld0Bhcm0uY29tPg0K PiA+Pj4gLS0tDQo+ID4+PiAgICBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29t bWFuZExpYi9BY3BpUGFyc2VyLmgNCj4gfA0KPiA+PiAyMSArDQo+ID4+Pg0KPiA+Pg0KPiBTaGVs bFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL01wYW0vTXBh bVBhcnNlDQo+IHINCj4gPj4gLmMgICAgICAgfCAxMzMxICsrKysrKysrKysrKysrKysrKysrDQo+ ID4+Pg0KPiA+Pg0KPiBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExp Yi9QYXJzZXJzL01wYW0vTXBhbVBhcnNlDQo+IHINCj4gPj4gLmggICAgICAgfCAgIDI1ICsNCj4g Pj4+DQo+ID4+DQo+IFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGli L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuDQo+ID4+IGRMaWIuYyAgIHwgICAgMyArLQ0KPiA+Pj4N Cj4gPj4NCj4gU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxBY3BpVmlld0NvbW1hbmRMaWIvVWVm aVNoZWxsQWNwaVZpZXdDb21tYW4NCj4gPj4gZExpYi5pbmYgfCAgICA0ICstDQo+ID4+Pg0KPiA+ Pg0KPiBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9VZWZpU2hl bGxBY3BpVmlld0NvbW1hbg0KPiA+PiBkTGliLnVuaSB8ICAgIDMgKy0NCj4gPj4+ICAgIDYgZmls ZXMgY2hhbmdlZCwgMTM4NCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQ0KPiA+Pj4NCj4g Pj4+IGRpZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFu ZExpYi9BY3BpUGFyc2VyLmgNCj4gPj4gYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlW aWV3Q29tbWFuZExpYi9BY3BpUGFyc2VyLmgNCj4gPj4+IGluZGV4IGM5ZjQxNjUwZDkuLmZlZjA4 ZTcxNGQgMTAwNjQ0DQo+ID4+PiAtLS0gYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEFjcGlW aWV3Q29tbWFuZExpYi9BY3BpUGFyc2VyLmgNCj4gPj4+ICsrKyBiL1NoZWxsUGtnL0xpYnJhcnkv VWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL0FjcGlQYXJzZXIuaA0KPiA+Pj4gQEAgLTgyNSw2 ICs4MjUsMjcgQEAgUGFyc2VBY3BpTWNmZyAoDQo+ID4+PiAgICAgIElOIFVJTlQ4ICAgIEFjcGlU YWJsZVJldmlzaW9uDQo+ID4+PiAgICAgICk7DQo+ID4+Pg0KPiA+Pj4gKy8qKg0KPiA+Pj4gKyAg VGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIEFDUEkgTVBBTSB0YWJsZS4NCj4gPj4+ICsgIFdoZW4g dHJhY2UgaXMgZW5hYmxlZCB0aGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgTUNGRyB0YWJsZSBhbmQN Cj4gPj4+ICsgIHRyYWNlcyB0aGUgQUNQSSB0YWJsZSBmaWVsZHMuDQo+ID4+PiArDQo+ID4+PiAr ICBUaGlzIGZ1bmN0aW9uIGFsc28gcGVyZm9ybXMgdmFsaWRhdGlvbiBvZiB0aGUgQUNQSSB0YWJs ZSBmaWVsZHMuDQo+ID4+PiArDQo+ID4+PiArICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAgICAg ICAgSWYgVFJVRSwgdHJhY2UgdGhlIEFDUEkgZmllbGRzLg0KPiA+Pj4gKyAgQHBhcmFtIFtpbl0g UHRyICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ ID4+PiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJ IHRhYmxlLg0KPiA+Pj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24gIFJldmlzaW9u IG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+Pj4gKyoqLw0KPiA+Pj4gK1ZPSUQNCj4gPj4+ICtFRklB UEkNCj4gPj4+ICtQYXJzZUFjcGlNcGFtICgNCj4gPj4+ICsgIElOIEJPT0xFQU4gIFRyYWNlLA0K PiA+Pj4gKyAgSU4gVUlOVDggICAgKlB0ciwNCj4gPj4+ICsgIElOIFVJTlQzMiAgIEFjcGlUYWJs ZUxlbmd0aCwNCj4gPj4+ICsgIElOIFVJTlQ4ICAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ID4+PiAr ICApOw0KPiA+Pj4gKw0KPiA+Pj4gICAgLyoqDQo+ID4+PiAgICAgIFRoaXMgZnVuY3Rpb24gcGFy c2VzIHRoZSBBQ1BJIFBDQ1QgdGFibGUgaW5jbHVkaW5nIGl0cyBzdWItc3RydWN0dXJlcw0KPiA+ Pj4gICAgICBvZiB0eXBlIDAgdGhyb3VnaCA0Lg0KPiA+Pj4gZGlmZiAtLWdpdA0KPiA+Pg0KPiBh L1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQWNwaVZpZXdDb21tYW5kTGliL1BhcnNlcnMvTXBh bS9NcGFtUGFyDQo+ID4+IHNlci5jDQo+ID4+DQo+IGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hl bGxBY3BpVmlld0NvbW1hbmRMaWIvUGFyc2Vycy9NcGFtL01wYW1QYXINCj4gPj4gc2VyLmMNCj4g Pj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4+PiBpbmRleCAwMDAwMDAwMDAwLi45MzUyMzU3 MzE4DQo+ID4+PiAtLS0gL2Rldi9udWxsDQo+ID4+PiArKysNCj4gPj4NCj4gYi9TaGVsbFBrZy9M aWJyYXJ5L1VlZmlTaGVsbEFjcGlWaWV3Q29tbWFuZExpYi9QYXJzZXJzL01wYW0vTXBhbVBhcg0K PiA+PiBzZXIuYw0KPiA+Pj4gQEAgLTAsMCArMSwxMzMxIEBADQo+ID4+PiArLyoqIEBmaWxlDQo+ ID4+PiArICBNUEFNIHRhYmxlIHBhcnNlcg0KPiA+Pj4gKw0KPiA+Pj4gKyAgQ29weXJpZ2h0IChj KSAyMDIzLCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gPj4+ICsgIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4+PiArDQo+ID4+PiAr ICBAcGFyIFNwZWNpZmljYXRpb24gUmVmZXJlbmNlOg0KPiA+Pj4gKyAgIC0gWzFdIEFDUEkgZm9y IE1lbW9yeSBTeXN0ZW0gUmVzb3VyY2UgUGFydGl0aW9uaW5nIGFuZCBNb25pdG9yaW5nIDIuMA0K PiA+Pj4gKyAgICAgKGh0dHBzOi8vZGV2ZWxvcGVyLmFybS5jb20vZG9jdW1lbnRhdGlvbi9kZW4w MDY1L2xhdGVzdCkNCj4gPj4+ICsNCj4gPj4+ICsgIEBwYXIgR2xvc3Nhcnk6DQo+ID4+PiArICAg IC0gTVBBTSAtIE1lbW9yeSBTeXN0ZW0gUmVzb3VyY2UgUGFydGl0aW9uaW5nIEFuZCBNb25pdG9y aW5nDQo+ID4+PiArICAgIC0gTVNDICAtIE1lbW9yeSBTeXN0ZW0gQ29tcG9uZW50DQo+ID4+PiAr ICAgIC0gUENDICAtIFBsYXRmb3JtIENvbW11bmljYXRpb24gQ2hhbm5lbA0KPiA+Pj4gKyAgICAt IFJJUyAgLSBSZXNvdXJjZSBJbnN0YW5jZSBTZWxlY3Rpb24NCj4gPj4+ICsgICAgLSBTTU1VIC0g QXJtIFN5c3RlbSBNZW1vcnkgTWFuYWdlbWVudCBVbml0DQo+ID4+PiArICoqLw0KPiA+Pj4gKw0K PiA+Pj4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL01wYW0uaD4NCj4gPj4+ICsjaW5jbHVk ZSA8TGlicmFyeS9QcmludExpYi5oPg0KPiA+Pj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIu aD4NCj4gPj4+ICsjaW5jbHVkZSAiQWNwaVBhcnNlci5oIg0KPiA+Pj4gKyNpbmNsdWRlICJBY3Bp Vmlldy5oIg0KPiA+Pj4gKyNpbmNsdWRlICJBY3BpVmlld0NvbmZpZy5oIg0KPiA+Pj4gKyNpbmNs dWRlICJNcGFtUGFyc2VyLmgiDQo+ID4+PiArDQo+ID4+PiArLy8gTG9jYWwgdmFyaWFibGVzDQo+ ID4+PiArU1RBVElDIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICpMb2NhdG9yOw0KPiA+ Pj4gK1NUQVRJQyBDT05TVCBVSU5UOCAgICAgICAgICAgICAgICAgICAqTG9jYXRvclR5cGU7DQo+ ID4+PiArU1RBVElDIENPTlNUIFVJTlQxNiAgICAgICAgICAgICAgICAgICpNcGFtTXNjTm9kZUxl bmd0aDsNCj4gPj4+ICtTVEFUSUMgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgTXBhbU1z Y05vZGVMZW5ndGhDdW11bGF0aXZlOw0KPiA+Pj4gK1NUQVRJQyBVSU5UMzIgICAgICAgICAgICAg ICAgICAgICAgICBIZWFkZXJTaXplOw0KPiA+Pj4gK1NUQVRJQyBDT05TVCBVSU5UMzIgICAgICAg ICAgICAgICAgICAqRXJyb3JJbnRlcnJ1cHQ7DQo+ID4+PiArU1RBVElDIENPTlNUIFVJTlQzMiAg ICAgICAgICAgICAgICAgICpJbnRlcmZhY2VUeXBlOw0KPiA+Pj4gK1NUQVRJQyBDT05TVCBVSU5U MzIgICAgICAgICAgICAgICAgICAqTnVtYmVyT2ZNc2NSZXNvdXJjZXM7DQo+ID4+PiArU1RBVElD IENPTlNUIFVJTlQzMiAgICAgICAgICAgICAgICAgICpOdW1iZXJPZkZ1bmN0aW9uYWxEZXBlbmRl bmNpZXM7DQo+ID4+PiArU1RBVElDIENPTlNUIFVJTlQzMiAgICAgICAgICAgICAgICAgICpOdW1i ZXJPZkludGVyY29ubmVjdERlc2NyaXB0b3JzOw0KPiA+Pj4gK1NUQVRJQyBDT05TVCBVSU5UMzIg ICAgICAgICAgICAgICAgICAqT3ZlcmZsb3dJbnRlcnJ1cHQ7DQo+ID4+PiArU1RBVElDIEFDUElf REVTQ1JJUFRJT05fSEVBREVSX0lORk8gIEFjcGlIZHJJbmZvOw0KPiA+Pj4gKw0KPiA+Pj4gKy8q Kg0KPiA+Pj4gKyAgV2hlbiB0aGUgbGVuZ3RoIG9mIHRoZSB0YWJsZSBpcyBpbnN1ZmZpY2llbnQg dG8gYmUgcGFyc2VkLCB0aGlzIGZ1bmN0aW9uDQo+ID4+IGNvdWxkDQo+ID4+PiArICBiZSB1c2Vk IHRvIGRpc3BsYXkgYW4gYXBwcm9wcmlhdGUgZXJyb3IgbWVzc2FnZS4NCj4gPj4+ICsNCj4gPj4+ ICsgIEBwYXJhbSBbaW5dIEVycm9yTXNnICAgICAgRXJyb3IgbWVzc2FnZSBzdHJpbmcgdGhhdCBo YXMgdG8gYmUgYXBwZW5kZWQNCj4gdG8NCj4gPj4gdGhlDQo+ID4+DQo+ID4+IChhbGlnbm1lbnQp DQo+ID4NCj4gPiBbUm9oaXRdIEFjay4NCj4gPg0KPiA+Pg0KPiA+Pj4gKyAgICAgICAgICBtYWlu IGVycm9yIGxvZy4gVGhpcyBzdHJpbmcgY291bGQgZXhwbGFpbiB0aGUgcmVhc29uDQo+ID4+PiAr ICAgICAgICAgIHdoeSBhIGluc3VmZmljaWVudCBsZW5ndGggZXJyb3Igd2FzIGVuY291bnRlcmVk IGluDQo+ID4+PiArICAgICAgICAgIHRoZSBmaXJzdCBwbGFjZS4NCj4gPj4+ICsqKi8NCj4gPj4+ ICtTVEFUSUMNCj4gPj4+ICtWT0lEDQo+ID4+PiArRUZJQVBJDQo+ID4+DQo+ID4+IEl0IHNlZW1z IHRoaXMgZnVuY3Rpb24gaXMgbm90IHVzZWQgZm9yIGxlbmd0aCByZWxhdGVkIGlzc3Vlcy4gTWF5 YmUgaXQgc2hvdWxkDQo+IGJlDQo+ID4+IHJlbmFtZWQNCj4gPj4gYW5kIHRoZSAnSW5zdWZmaWNp ZW50IE1QQU0gTVNDIE5vZGUgbGVuZ3RoIC4uLicgbWVzc2FnZSBiZSByZW1vdmVkLg0KPiA+DQo+ ID4gW1JvaGl0XSAtIEkgcmVzcG9uZGVkIHRvIGNvdXBsZSBvZiBjb21tZW50cyBhZGRyZXNzaW5n IHdoeSB3ZSB1c2UgdGhpcw0KPiBmdW5jdGlvbiwgYmVsb3cuIExldCBtZSBrbm93IHlvdXIgdGhv dWdodHMuIChBZ2FpbiwgSSBtb3ZlZCBib3R0b20gLSB1cA0KPiB3aGlsZSBhZGRyZXNzaW5nIGNv bW1lbnRzIGFzIGl0IHdhcyBlYXNpZXIgdG8gd2FsayB0aGUgY29kZSB0aGF0IHdheSkNCj4gPg0K PiA+Pg0KPiA+Pj4gK01wYW1MZW5ndGhFcnJvciAoDQo+ID4+PiArICBJTiBDT05TVCBDSEFSMTYg ICpFcnJvck1zZw0KPiA+Pj4gKyAgKQ0KPiA+Pj4gK3sNCj4gPj4+ICsgIEluY3JlbWVudEVycm9y Q291bnQgKCk7DQo+ID4+PiArICBQcmludCAoTCJcbkVSUk9SIDogIik7DQo+ID4+PiArICBQcmlu dCAoRXJyb3JNc2cpOw0KPiA+Pj4gKyAgUHJpbnQgKA0KPiA+Pj4gKyAgICBMIlxuRXJyb3IgOiBJ bnN1ZmZpY2llbnQgTVBBTSBNU0MgTm9kZSBsZW5ndGguIFRhYmxlIGxlbmd0aCA6ICV1LlxuIiwN Cj4gPj4+ICsgICAgKihBY3BpSGRySW5mby5MZW5ndGgpDQo+ID4+PiArICAgICk7DQo+ID4+PiAr fQ0KPiA+Pj4gKw0KPiA+Pj4gKy8qKg0KPiA+Pj4gKyAgVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMg dGhlIHBhc3NlZCByZXNlcnZlZCBwYXJhbWV0ZXIuIEFueSByZXNlcnZlZA0KPiBmaWVsZA0KPiA+ Pj4gKyAgd2l0aGluIHRoZSBNUEFNIHNwZWNpZmljYXRpb24gbXVzdCBiZSAwLg0KPiA+Pj4gKw0K PiA+Pj4gKyAgQHBhcmFtIFtpbl0gUmVzZXJ2ZWQgICAgIFJlc2VydmVkIHBhcmFtIHRoYXQgaGFz IHRvIGJlIHZhbGlkYXRlZC4NCj4gPj4+ICsqKi8NCj4gPj4+ICtTVEFUSUMNCj4gPj4+ICtWT0lE DQo+ID4+PiArRUZJQVBJDQo+ID4+DQo+ID4+IEl0IHNlZW1zIHRoZSAnUmVzZXJ2ZWQnIGZpZWxk cyBpcyBhbHNvIGNoZWNrZWQgaW4gdGhlIFNSQVQgdGFibGUgcGFyc2luZywgY2YuDQo+ID4+IFZh bGlkYXRlU3JhdFJlc2VydmVkKCkuIE1heWJlIGl0IHdvdWxkIGJlIGdvb2QgdG8gcmUtdXNlIHlv dXIgZ2VuZXJpYw0KPiA+PiBpbXBsZW1lbnRhdGlvbg0KPiA+PiB0aGVyZSBhc3dlbGwgKGp1c3Qg YSBzdWdnZXN0aW9uLCBtYXliZSB0byBiZSBkb25lIGluIGEgbGF0ZXIgcGF0Y2gpLg0KPiA+Pg0K PiA+Pg0KPiA+DQo+ID4gW1JvaGl0XSBJZiBpdCdzIG9rYXksIEkgY291bGQgd29yayBvdXQgdGhl c2UgY2hhbmdlcyBvbmNlIHdlIGdldCB0aGUgTVBBTQ0KPiBjaGFuZ2VzIGluPw0KPiANCj4gWWVz IHN1cmUsIGl0IHdhcyBqdXN0IGEgcmVtYXJrLg0KPiANCj4gPg0KPiA+Pj4gK1ZhbGlkYXRlUmVz ZXJ2ZWQgKA0KPiA+Pj4gKyAgSU4gQ09OU1QgVUlOVDY0ICBSZXNlcnZlZA0KPiA+Pj4gKyAgKQ0K PiA+Pj4gK3sNCj4gPj4+ICsgIGlmIChSZXNlcnZlZCAhPSAwKSB7DQo+ID4+PiArICAgIEluY3Jl bWVudEVycm9yQ291bnQgKCk7DQo+ID4+PiArICAgIFByaW50IChMIlxuRVJST1IgOiBSZXNlcnZl ZCBmaWVsZCBzaG91bGQgYmUgMFxuIik7DQo+ID4+PiArICB9DQo+ID4+PiArfQ0KPiA+Pj4gKw0K PiA+Pj4gKy8qKg0KPiA+Pj4gKyAgVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgcmVzZXJ2ZWQgZmll bGRzLiBBbnkgcmVzZXJ2ZWQgZmllbGQgd2l0aGluIHRoZQ0KPiA+PiBNUEFNDQo+ID4+PiArICBz cGVjaWZpY2F0aW9uIG11c3QgYmUgMC4NCj4gPj4+ICsNCj4gPj4+ICsgIEBwYXJhbSBbaW5dIFB0 ciAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgZmllbGQgZGF0YS4NCj4gPj4+ICsg IEBwYXJhbSBbaW5dIENvbnRleHQgICBQb2ludGVyIHRvIGNvbnRleHQgc3BlY2lmaWMgaW5mb3Jt YXRpb24uIEZvciB0aGlzDQo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgICAgcGFydGljdWxh ciBmdW5jdGlvbiwgY29udGV4dCBob2xkcyB0aGUgc2l6ZSBvZiB0aGUNCj4gPj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICByZXNlcnZlZCBmaWVsZCB0aGF0IG5lZWRzIHRvIGJlIHZhbGlkYXRl ZC4NCj4gPj4+ICsqKi8NCj4gPj4+ICtTVEFUSUMNCj4gPj4+ICtWT0lEDQo+ID4+PiArRUZJQVBJ DQo+ID4+PiArVmFsaWRhdGVSZXNlcnZlZEdlbmVyaWMgKA0KPiA+Pj4gKyAgSU4gVUlOVDggICpQ dHIsDQo+ID4+PiArICBJTiBWT0lEICAgKkNvbnRleHQNCj4gPj4+ICsgICkNCj4gPj4+ICt7DQo+ ID4+PiArICBVSU5UNjQgIFJlc2VydmVkOw0KPiA+Pj4gKw0KPiA+Pj4gKyAgLy8gSWYgQ29udGV4 dCBpcyBub3QgcGFzc2VkIG9uLCBkb24ndCB2YWxpZGF0ZS4gd2l0aG91dCB0aGUgbGVuZ3RoLCBp dCBpcw0KPiBub3QNCj4gPj4+ICsgIC8vIHBvc3NpYmxlIHRvIGRlY29kZSB0aGUgcmVzZXJ2ZWQg ZmllbGQgb3IgcGxhbiBvdXQgYWxpZ25tZW50DQo+ID4+IHJlcXVpcmVtZW50cy4NCj4gPj4+ICsg IGlmIChDb250ZXh0ID09IE5VTEwpIHsNCj4gPj4+ICsgICAgcmV0dXJuOw0KPiA+Pj4gKyAgfQ0K PiA+Pj4gKw0KPiA+Pj4gKyAgLy8gT25seSB0aG9zZSBjYXNlcyB3aGljaCBhcmUgaGFuZGxlZCBj dXJyZW50bHkgaGF2ZSBiZWVuDQo+IGltcGxlbWVudGVkLg0KPiA+Pj4gKyAgc3dpdGNoICgoVUlO VDY0KUNvbnRleHQpIHsNCj4gPj4+ICsgICAgY2FzZSAxOg0KPiA+Pj4gKyAgICAgIFJlc2VydmVk ID0gKlB0cjsNCj4gPj4+ICsgICAgICBicmVhazsNCj4gPj4+ICsgICAgY2FzZSAyOg0KPiA+Pj4g KyAgICAgIGlmICgoKFVJTlQ2NClQdHIpICUgMiA9PSAwKSB7DQo+ID4+PiArICAgICAgICBSZXNl cnZlZCA9ICooKFVJTlQxNiAqKVB0cik7DQo+ID4+PiArICAgICAgfSBlbHNlIHsNCj4gPj4+ICsg ICAgICAgIFJlc2VydmVkICA9ICgqKFB0ciArIDEpIDw8IDgpOw0KPiA+Pj4gKyAgICAgICAgUmVz ZXJ2ZWQgfD0gKlB0cjsNCj4gPj4+ICsgICAgICB9DQo+ID4+PiArDQo+ID4+PiArICAgICAgYnJl YWs7DQo+ID4+PiArICAgIGNhc2UgNDoNCj4gPj4+ICsgICAgICBpZiAoKChVSU5UNjQpUHRyKSAl IDQgPT0gMCkgew0KPiA+Pj4gKyAgICAgICAgUmVzZXJ2ZWQgPSAqKChVSU5UMzIgKilQdHIpOw0K PiA+Pj4gKyAgICAgIH0gZWxzZSB7DQo+ID4+PiArICAgICAgICBSZXNlcnZlZCAgPSAoKihQdHIg KyAzKSA8PCAyNCk7DQo+ID4+PiArICAgICAgICBSZXNlcnZlZCB8PSAoKihQdHIgKyAyKSA8PCAx Nik7DQo+ID4+PiArICAgICAgICBSZXNlcnZlZCB8PSAoKihQdHIgKyAxKSA8PCA4KTsNCj4gPj4+ ICsgICAgICAgIFJlc2VydmVkIHw9ICgqUHRyKTsNCj4gPj4+ICsgICAgICB9DQo+ID4+PiArDQo+ ID4+PiArICAgICAgYnJlYWs7DQo+ID4+PiArICAgIGRlZmF1bHQ6DQo+ID4+PiArICAgICAgcmV0 dXJuOw0KPiA+Pj4gKyAgfQ0KPiA+Pj4gKw0KPiA+Pj4gKyAgVmFsaWRhdGVSZXNlcnZlZCAoUmVz ZXJ2ZWQpOw0KPiA+Pj4gK30NCj4gPj4+ICsNCj4gPj4+ICsvKioNCj4gPj4+ICsgIEZpZWxkcyB0 aGF0IG5lZWQgYWRkaXRpb25hbCBkZWNvZGluZyBjb3VsZCB1c2UgdGhpcyBmdW5jdGlvbiB0byBw cmludCBvdXQNCj4gPj4gdGhlDQo+ID4+PiArICBkZWNvZGVkIHZhbHVlIGZvciBhIHBhcnRpY3Vs YXIgZmllbGQuIFRoZSBkZWNvZGVkIHZhbHVlIGhhbmRsZWQgaW4gdGhpcw0KPiA+Pj4gKyAgZnVu Y3Rpb24gaXMgYSBzdHJpbmcuDQo+ID4+PiArDQo+ID4+PiArICBAcGFyYW0gW2luXSBJbmRlbnQg ICAgICAgICAgICAgIE51bWJlciBvZiBzcGFjZXMgdG8gYWRkIHRvIHRoZSBnbG9iYWwgdGFibGUN Cj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZW50LiBUaGUgZ2xv YmFsIHRhYmxlIGluZGVudCBpcyAwIGJ5DQo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRlZmF1bHQ7IGhvd2V2ZXIgdGhpcyB2YWx1ZSBpcyB1cGRhdGVkIG9uDQo+ID4+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5IHRvIHRoZSBQYXJzZUFj cGkoKSBieSBhZGRpbmcgdGhlIGluZGVudA0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB2YWx1ZSBwcm92aWRlZCB0byBQYXJzZUFjcGkoKSBhbmQgcmVzdG9yZWQNCj4g Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFjayBvbiBleGl0LiAgVGhl cmVmb3JlIHRoZSB0b3RhbCBpbmRlbnQgaW4NCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdGhlIG91dHB1dCBpcyBkZXBlbmRlbnQgb24gZnJvbSB3aGVyZSB0aGlzDQo+ ID4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGlzIGNhbGxl ZC4NCj4gPj4+ICsgIEBwYXJhbSBbaW5dIEZpZWxkU3RyICAgICAgICAgICAgVGl0bGUgc3RyaW5n IGZvciB0aGUgZmllbGQgb2YgaW50ZXJlc3QuDQo+ID4+PiArICBAcGFyYW0gW2luXSBEZWNvZGVk U3RyICAgICAgICAgIERlY29kZWQgdmFsdWUgdG8gYmUgcHJpbnRlZCBmb3IgdGhlDQo+IEZpZWxk U3RyLg0KPiA+Pj4gKyoqLw0KPiA+Pj4gK1NUQVRJQw0KPiA+Pj4gK1ZPSUQNCj4gPj4+ICtFRklB UEkNCj4gPj4+ICtQcmludERlY29kZWRGaWVsZCAoDQo+ID4+PiArICBJTiBVSU5UMzIgICAgICAg IEluZGVudCwNCj4gPj4+ICsgIElOIENPTlNUIENIQVIxNiAgKkZpZWxkU3RyLA0KPiA+Pj4gKyAg SU4gQ09OU1QgQ0hBUjE2ICAqRGVjb2RlZFN0cg0KPiA+Pj4gKyAgKQ0KPiA+Pj4gK3sNCj4gPj4+ ICsgIFByaW50IChMIlxuIik7DQo+ID4+PiArICBQcmludEZpZWxkTmFtZSAoSW5kZW50LCBGaWVs ZFN0cik7DQo+ID4+PiArICBQcmludCAoRGVjb2RlZFN0cik7DQo+ID4+PiArfQ0KPiA+Pj4gKw0K PiA+Pj4gKy8qKg0KPiA+Pj4gKyAgVGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIE1NSU8gc2l6 ZSB3aXRoaW4gdGhlIE1TQyBub2RlIGJvZHkgZm9yDQo+ID4+IE1QQU0gQUNQSQ0KPiA+Pj4gKyAg dGFibGUuIE1QQU0gQUNQSSBzcGVjaWZpY2F0aW9uIHN0YXRlcyB0aGF0IHRoZSBNTUlPIHNpemUg Zm9yIGFuIE1TQw0KPiA+PiBoYXZpbmcgUENDDQo+ID4+PiArICB0eXBlIGludGVyZmFjZSBzaG91 bGQgYmUgemVyby4NCj4gPj4+ICsNCj4gPj4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgUG9p bnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZpZWxkIGRhdGEuDQo+ID4+PiArICBAcGFyYW0gW2lu XSBDb250ZXh0ICAgIFBvaW50ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbi4gRm9y IHRoaXMNCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24sIGNvbnRleHQg aG9sZHMgdGhlIHBhcmVudC9kb3VibGUgcG9pbnRlciB0byBhDQo+ID4+PiArICAgICAgICAgICAg ICAgICAgICAgICAgIHZhcmlhYmxlIGhvbGRpbmcgdGhlIGludGVyZmFjZSB0eXBlLiBNYWtlIHN1 cmUgdG8gY2FsbA0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZnVuY3Rpb24g YWNjb3JkaW5nbHkuDQo+ID4+PiArKiovDQo+ID4+PiArU1RBVElDDQo+ID4+PiArVk9JRA0KPiA+ Pj4gK0VGSUFQSQ0KPiA+Pj4gK1ZhbGlkYXRlTW1pb1NpemUgKA0KPiA+Pj4gKyAgSU4gVUlOVDgg ICpQdHIsDQo+ID4+PiArICBJTiBWT0lEICAgKkNvbnRleHQNCj4gPj4+ICsgICkNCj4gPj4+ICt7 DQo+ID4+PiArICBVSU5UOCAgIEludGVyZmFjZVR5cGU7DQo+ID4+PiArICBVSU5UOCAgICoqSW50 ZXJmYWNlVHlwZVBhcmVudFB0cjsNCj4gPj4+ICsgIFVJTlQzMiAgTW1pb1NpemU7DQo+ID4+PiAr DQo+ID4+PiArICBJbnRlcmZhY2VUeXBlUGFyZW50UHRyID0gKFVJTlQ4ICoqKUNvbnRleHQ7DQo+ ID4+DQo+ID4+IEkgZG9uJ3QgdGhpbmsgdGhlc2UgY29tbWVudHMgYXJlIG5lY2Vzc2FyeSBhcyB0 aGlzIGlzIGdlbmVyaWMgZm9yIGFjcGl2aWV3Lg0KPiA+DQo+ID4gW1JvaGl0XSBJIGFkZGVkIHRo ZXNlIGNvbW1lbnRzIGFzIEkgY291bGQgbm90IGZpbmQgYW55IG90aGVyIHVzZS1jYXNlIG9mDQo+ ICpDb250ZXh0IHBvaW50ZXIgd2l0aGluIGFueSBwYXJzZXJzIChvciBhbnl3aGVyZSkuIFRoZXJl Zm9yZSwgdGhlc2UNCj4gY29tbWVudHMgd2VyZSBhIHdheSB0byBzaG93IGhvdyAnTVBBTSBwYXJz ZXInIHV0aWxpemVkIGNvbnRleHQgcG9pbnRlcg0KPiBmb3IgZGlmZmVyZW50IHZhbGlkYXRvcnMu DQo+ID4gQWxzbywgdGhlIHdheSB3ZSB1c2UgY29udGV4dCB3aXRoaW4gVmFsaWRhdGVSZXNlcnZl ZEdlbmVyaWMgaXMgcXVpdGUNCj4gZGlmZmVyZW50IGZyb20gVmFsaWRhdGVNbWlvU2l6ZSBkdWUg dG8gY29tcGlsZXIgcmVzdHJpY3Rpb25zIG9uIHVzaW5nDQo+IGNvbnN0YW50cyBmb3IgaW5pdGlh bGl6ZXIgbGlzdHMuDQo+IA0KPiBUT0RPDQoNCltSb2hpdF0gSSB0aGluayB0aGUgc3VnZ2VzdGlv biB3YXMgdG8gcmVtb3ZlIGl0IGZyb20gb25lIG9mIHRoZSBjb21tZW50cyBiZWxvdy4gSSdsbCBy ZW1vdmUgaXQuDQoNCj4gDQo+ID4NCj4gPiBJZiB0aGV5IHNlZW0gb2J2aW91cywgSSBjb3VsZCBy ZW1vdmUgdGhlbS4gTGV0IG1lIGtub3cuDQo+ID4NCj4gPj4NCj4gPj4+ICsgIC8vIENvbnRleHQg ICAgLSBkb3VibGUgcG9pbnRlciB0byBpbnRlcmZhY2UgdHlwZS4gKFJlZmVyDQo+ID4+IE1wYW1N c2NOb2RlUGFyc2UNCj4gPj4+ICsgIC8vICAgICAgICAgICAgICB0YWJsZSkuDQo+ID4+PiArICAv LyAqQ29udGV4dCAgIC0gYWRkcmVzcyBvZiBvYmplY3QgaG9sZGluZyBpbnRlcmZhY2UgdHlwZS4N Cj4gPj4+ICsgIC8vICoqQ29udGV4dCAgLSBpbnRlcmZhY2UgdHlwZS4NCj4gPj4+ICsgIGlmICgq SW50ZXJmYWNlVHlwZVBhcmVudFB0ciA9PSBOVUxMKSB7DQo+ID4+PiArICAgIE1wYW1MZW5ndGhF cnJvciAoTCJJbnRlcmZhY2UgdHlwZSBub3Qgc2V0ISIpOw0KPiA+Pj4gKyAgICByZXR1cm47DQo+ ID4+PiArICB9DQo+ID4+PiArDQo+ID4+PiArICBJbnRlcmZhY2VUeXBlID0gKipJbnRlcmZhY2VU eXBlUGFyZW50UHRyOw0KPiA+Pj4gKz4gKyAgaWYgKEludGVyZmFjZVR5cGUgPT0gRUZJX0FDUElf TVBBTV9JTlRFUkZBQ0VfUENDKSB7DQo+ID4+PiArICAgIE1taW9TaXplID0gKigoVUlOVDMyICop UHRyKTsNCj4gPj4+ICsNCj4gPj4+ICsgICAgaWYgKE1taW9TaXplICE9IDApIHsNCj4gPj4+ICsg ICAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiA+Pj4gKyAgICAgIFByaW50ICgNCj4gPj4+ ICsgICAgICAgIEwiXG5FUlJPUjogTU1JTyBzaXplIHNob3VsZCBiZSAwIGZvciBQQ0MgaW50ZXJm YWNlIHR5cGUuIFNpemUgLQ0KPiAldVxuIiwNCj4gPj4+ICsgICAgICAgIE1taW9TaXplDQo+ID4+ PiArICAgICAgICApOw0KPiA+Pj4gKyAgICB9DQo+ID4+PiArICB9DQo+ID4+PiArfQ0KPiA+Pj4g Kw0KPiA+Pj4gKy8qKg0KPiA+Pj4gKyAgVGhpcyBmdW5jdGlvbiBkZWNvZGVzIGFuZCB2YWxpZGF0 ZXMgdGhlIGxpbmsgdHlwZSBmb3IgTVBBTSdzDQo+IGludGVyY29ubmVjdA0KPiA+Pj4gKyAgZGVz Y3JpcHRvci4gVmFsaWQgbGlua3MgYXJlIG9mIE5VTUEgYW5kIFBST0MgdHlwZS4NCj4gPj4+ICsN Cj4gPj4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9m IHRoZSBmaWVsZCBkYXRhLg0KPiA+Pj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCAgICAgUG9pbnRl ciB0byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uLiBGb3IgdGhpcw0KPiA+Pj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24sIGNvbnRleHQgaXMgaWdub3JlZC4NCj4gPj4+ ICsqKi8NCj4gPj4+ICtTVEFUSUMNCj4gPj4+ICtWT0lEDQo+ID4+PiArRUZJQVBJDQo+ID4+PiAr RGVjb2RlTGlua1R5cGUgKA0KPiA+Pj4gKyAgSU4gVUlOVDggICpQdHIsDQo+ID4+PiArICBJTiBW T0lEICAgKkNvbnRleHQNCj4gPj4+ICsgICkNCj4gPj4+ICt7DQo+ID4+PiArICBVSU5UOCAgTGlu a1R5cGU7DQo+ID4+PiArDQo+ID4+PiArICBMaW5rVHlwZSA9ICpQdHI7DQo+ID4+PiArDQo+ID4+ PiArICBpZiAoTGlua1R5cGUgPT0gRUZJX0FDUElfTVBBTV9MSU5LX1RZUEVfTlVNQSkgew0KPiA+ Pj4gKyAgICBQcmludERlY29kZWRGaWVsZCAoDQo+ID4+PiArICAgICAgMiwNCj4gPj4NCj4gPj4g VGhlIG5hbWUgb2YgdGhlIGZpZWxkIHNob3VsZCBoYXZlIGFscmVhZHkgYmVlbiBwcmludGVkLA0K PiA+PiBJIG0gbm90IHN1cmUgSSBzZWUgdGhlIHVzZSBvZiBwcmludGluZzogIiogTGluayB0eXBl IGRlY29kZWQiLg0KPiA+PiBTaW1pbGFyIGNvbW1lbnQgZm9yIHRoZSBQcmludERlY29kZWRGaWVs ZCgpIGluIGdlbmVyYWwsIEkgdGhpbmsNCj4gPj4gaXQgd291bGQgYmUgYmV0dGVyIHRvIHByaW50 IHRoZSB2YWx1ZSBhbmQgdGhlIGludGVycHJldGF0aW9uIG9mDQo+ID4+IHRoZSB2YWx1ZSwgYXM6 IE5VTUEgKDApIGZvciBpbnN0YW5jZS4NCj4gPj4NCj4gPg0KPiA+IFtSb2hpdF0gQWNrIC0gSSBz ZWUgdGhhdCBJJ20gYWRkaW5nIGEgXG4gdG8gcHJpbnQge2RlY29kZWQgc3RyaW5nIC0gZGVjb2Rl DQo+IHZhbHVlfS4gU28sIEkgY291bGQgcHJvYmFibHkgaGF2ZSB0aGUgcmF3IGZvbGxvd2VkIGJ5 IGRlY29kZWQgdmFsdWUgb24gdGhlDQo+IHNhbWUgbGluZSBieSBhdm9pZGluZyB0aGUgbmV3bGlu ZS4gSXQgd291bGQgYmUgdGhlIG90aGVyIHdheSBhcm91bmQgSSBhc3N1bWUNCj4gLSAwIChOVU1B KS4NCj4gDQo+IG9rIHllcywgYm90aCBzaG91bGQgYmUgZmluZS4NCj4gDQo+ID4NCj4gPj4+ICsg ICAgICBMIiogTGluayB0eXBlIGRlY29kZWQiLA0KPiA+Pj4gKyAgICAgIEwiTlVNQSINCj4gPj4+ ICsgICAgICApOw0KPiA+Pj4gKyAgfSBlbHNlIGlmIChMaW5rVHlwZSA9PSBFRklfQUNQSV9NUEFN X0xJTktfVFlQRV9QUk9DKSB7DQo+ID4+PiArICAgIFByaW50RGVjb2RlZEZpZWxkICgNCj4gPj4+ ICsgICAgICAyLA0KPiA+Pj4gKyAgICAgIEwiKiBMaW5rIHR5cGUgZGVjb2RlZCIsDQo+ID4+PiAr ICAgICAgTCJQUk9DIg0KPiA+Pj4gKyAgICAgICk7DQo+ID4+PiArICB9IGVsc2Ugew0KPiA+Pj4g KyAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0KPiA+Pj4gKyAgICBQcmludCAoDQo+ID4+PiAr ICAgICAgTCJcbkVSUk9SOiBJbnZhbGlkIGxpbmsgdHlwZSAtICV1XG4iLA0KPiA+Pj4gKyAgICAg IChVSU5UMzIpTGlua1R5cGUNCj4gPj4+ICsgICAgICApOw0KPiA+Pj4gKyAgfQ0KPiA+Pj4gK30N Cj4gPj4+ICsNCj4gPj4+ICsvKioNCj4gPj4+ICsgIFRoaXMgZnVuY3Rpb24gZGVjb2RlcyB0aGUg aGFyZHdhcmUgSUQgZmllbGQgcHJlc2VudCB3aXRoaW4gTVBBTSBBQ1BJDQo+ID4+IHRhYmxlLg0K PiA+Pj4gKyAgVGhlIHNwZWNpZmljYXRpb24gc3RhdGVzIHRoYXQgdGhlIGhhcmR3YXJlIElEIGhh cyB0byBiZSBzZXQgdG8gemVybyBpZiBub3QNCj4gPj4+ICsgIGJlaW5nIHVzZWQuDQo+ID4+PiAr DQo+ID4+PiArICBAcGFyYW0gW2luXSBQdHIgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBv ZiB0aGUgZmllbGQgZGF0YS4NCj4gPj4+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgICAgIFBvaW50 ZXIgdG8gY29udGV4dCBzcGVjaWZpYyBpbmZvcm1hdGlvbi4gRm9yIHRoaXMNCj4gPj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uLCBjb250ZXh0IGlzIGlnbm9yZWQuDQo+ID4+ PiArKiovDQo+ID4+PiArU1RBVElDDQo+ID4+PiArVk9JRA0KPiA+Pj4gK0VGSUFQSQ0KPiA+Pj4g K0RlY29kZUhhcmR3YXJlSWQgKA0KPiA+Pj4gKyAgSU4gVUlOVDggICpQdHIsDQo+ID4+PiArICBJ TiBWT0lEICAgKkNvbnRleHQNCj4gPj4+ICsgICkNCj4gPj4+ICt7DQo+ID4+PiArICBVSU5UNjQg IEhhcmR3YXJlSWQ7DQo+ID4+PiArDQo+ID4+DQo+ID4+IEkgZG9uJ3QgdGhpbmsgdGhpcyBjb21t ZW50IGlzIG5lY2Vzc2FyeS4NCj4gPg0KPiA+IFtSb2hpdF0gQWNrDQo+ID4NCj4gPj4NCj4gPj4+ ICsgIC8vIEhhcmR3YXJlIElkIGZpZWxkcyB3aXRoaW4gTVBBTSB0YWJsZSBhbHdheXMgZmFsbHMg b24gb2Zmc2V0IGRpdmlzaWJsZQ0KPiBieQ0KPiA+PiA4Lg0KPiA+Pj4gKyAgLy8gUHJvY2VlZCB0 byBkZXJlZmVyZW5jZSA4IGJ5dGVzIGluIG9uZSBnby4NCj4gPj4+ICsgIEhhcmR3YXJlSWQgPSAq KChVSU5UNjQgKilQdHIpOw0KPiA+Pj4gKw0KPiA+Pj4gKyAgaWYgKEhhcmR3YXJlSWQgIT0gMCkg ew0KPiA+Pj4gKyAgICBQcmludCAoTCJcbiIpOw0KPiA+Pg0KPiA+PiBJcyBpdCBuZWNlc3Nhcnkg dG8gcHJpbnQgJyogSGFyZHdhcmUgSUQgdHlwZSBkZWNvZGVkJyBhcyB0aGUgZmllbGQgbmFtZQ0K PiBzaG91bGQNCj4gPj4gaGF2ZSBhbHJlYWR5IGJlZW4gcHJpbnRlZCA/DQo+ID4+DQo+ID4NCj4g PiBbUm9oaXRdIEFjay4gKHJlc3BvbmRlZCB0byBhIHNpbWlsYXIgY29tbWVudCwgYWJvdmUpDQo+ ID4NCj4gPj4+ICsgICAgUHJpbnRGaWVsZE5hbWUgKDIsIEwiKiBIYXJkd2FyZSBJRCB0eXBlIGRl Y29kZWQiKTsNCj4gPj4+ICsgICAgRHVtcDhDaGFycyAoTlVMTCwgUHRyKTsNCj4gPj4+ICsgIH0N Cj4gPj4+ICt9DQo+ID4+PiArDQo+ID4+PiArLyoqDQo+ID4+PiArICBUaGlzIGZ1bmN0aW9uIGRl Y29kZXMgYW5kIHZhbGlkYXRlcyB0aGUgaW50ZXJmYWNlIHR5cGUgZm9yIE1QQU0uIFZhbGlkDQo+ ID4+PiArICBpbnRlcmZhY2VzIGFyZSBvZiBNTUlPIGFuZCBQQ0MgdHlwZS4NCj4gPj4+ICsNCj4g Pj4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRo ZSBmaWVsZCBkYXRhLg0KPiA+Pj4gKyAgQHBhcmFtIFtpbl0gQ29udGV4dCAgICAgUG9pbnRlciB0 byBjb250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uLiBGb3IgdGhpcw0KPiA+Pj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgZnVuY3Rpb24sIGNvbnRleHQgaXMgaWdub3JlZC4NCj4gPj4+ICsq Ki8NCj4gPj4+ICtTVEFUSUMNCj4gPj4+ICtWT0lEDQo+ID4+PiArRUZJQVBJDQo+ID4+PiArRGVj b2RlSW50ZXJmYWNlVHlwZSAoDQo+ID4+PiArICBJTiBVSU5UOCAgKlB0ciwNCj4gPj4+ICsgIElO IFZPSUQgICAqQ29udGV4dA0KPiA+Pj4gKyAgKQ0KPiA+Pj4gK3sNCj4gPj4+ICsgIFVJTlQ4ICBJ bnRlcmZhY2VUeXBlOw0KPiA+Pj4gKw0KPiA+Pj4gKyAgSW50ZXJmYWNlVHlwZSA9ICpQdHI7DQo+ ID4+PiArDQo+ID4+PiArICBpZiAoSW50ZXJmYWNlVHlwZSA9PSBFRklfQUNQSV9NUEFNX0lOVEVS RkFDRV9NTUlPKSB7DQo+ID4+PiArICAgIFByaW50RGVjb2RlZEZpZWxkICgNCj4gPj4+ICsgICAg ICAyLA0KPiA+Pj4gKyAgICAgIEwiKiBJbnRlcmZhY2UgdHlwZSBkZWNvZGVkIiwNCj4gPj4+ICsg ICAgICBMIk1NSU8iDQo+ID4+PiArICAgICAgKTsNCj4gPj4+ICsgIH0gZWxzZSBpZiAoSW50ZXJm YWNlVHlwZSA9PSBFRklfQUNQSV9NUEFNX0lOVEVSRkFDRV9QQ0MpIHsNCj4gPj4+ICsgICAgUHJp bnREZWNvZGVkRmllbGQgKA0KPiA+Pj4gKyAgICAgIDIsDQo+ID4+PiArICAgICAgTCIqIEludGVy ZmFjZSB0eXBlIGRlY29kZWQiLA0KPiA+Pj4gKyAgICAgIEwiUENDIg0KPiA+Pj4gKyAgICAgICk7 DQo+ID4+PiArICB9IGVsc2Ugew0KPiA+Pj4gKyAgICBJbmNyZW1lbnRFcnJvckNvdW50ICgpOw0K PiA+Pj4gKyAgICBQcmludCAoDQo+ID4+PiArICAgICAgTCJcbkVSUk9SOiBJCXlwZSAtICV1XG4i LA0KPiA+Pj4gKyAgICAgIChVSU5UMzIpSW50ZXJmYWNlVHlwZQ0KPiA+Pj4gKyAgICAgICk7DQo+ ID4+PiArICB9DQo+ID4+PiArfQ0KPiA+Pj4gKw0KPiA+Pj4gKy8qKg0KPiA+Pj4gKyAgVGhpcyBm dW5jdGlvbiBkZWNvZGVzIGFuZCB2YWxpZGF0ZXMgdGhlIGludGVycnVwdCBmbGFncyBwcmVzZW50 IGluIHRoZQ0KPiA+PiBNUEFNDQo+ID4+PiArICBNU0Mgbm9kZSBib2R5Lg0KPiA+Pj4gKw0KPiA+ Pj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUg ZmllbGQgZGF0YS4NCj4gPj4+ICsgIEBwYXJhbSBbaW5dIENvbnRleHQgICAgUG9pbnRlciB0byBj b250ZXh0IHNwZWNpZmljIGluZm9ybWF0aW9uLiBGb3IgdGhpcw0KPiA+Pj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICBmdW5jdGlvbiwgY29udGV4dCBob2xkcyB0aGUgcGFyZW50L2RvdWJsZSBw b2ludGVyIHRvIGENCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaG9s ZGluZyB0aGUgaW50ZXJydXB0IGdzaXYuIE1ha2Ugc3VyZSB0byBjYWxsDQo+ID4+PiArICAgICAg ICAgICAgICAgICAgICAgICAgIHRoZSBmdW5jdGlvbiBhY2NvcmRpbmdseS4NCj4gPj4+ICsqKi8N Cj4gPj4+ICtTVEFUSUMNCj4gPj4+ICtWT0lEDQo+ID4+PiArRUZJQVBJDQo+ID4+PiArRGVjb2Rl SW50ZXJydXB0RmxhZ3MgKA0KPiA+Pj4gKyAgSU4gVUlOVDggICpQdHIsDQo+ID4+PiArICBJTiBW T0lEICAgKkNvbnRleHQNCj4gPj4+ICsgICkNCj4gPj4+ICt7DQo+ID4+PiArICBVSU5UOCAgIElu dGVycnVwdE1vZGU7DQo+ID4+PiArICBVSU5UOCAgIEludGVycnVwdFR5cGU7DQo+ID4+PiArICBV SU5UOCAgIEludGVycnVwdEFmZmluaXR5VHlwZTsNCj4gPj4+ICsgIFVJTlQ4ICAgSW50ZXJydXB0 QWZmaW5pdHlWYWxpZDsNCj4gPj4+ICsgIFVJTlQzMiAgSW50ZXJydXB0RmxhZzsNCj4gPj4+ICsg IFVJTlQzMiAgSW50ZXJydXB0R3NpdjsNCj4gPj4+ICsgIFVJTlQzMiAgKipJbnRlcnJ1cHRHc2l2 UGFyZW50UHRyOw0KPiA+Pj4gKyAgVUlOVDMyICBSZXNlcnZlZDsNCj4gPj4+ICsNCj4gPj4+ICsg IEludGVycnVwdEdzaXZQYXJlbnRQdHIgPSAoVUlOVDMyICoqKUNvbnRleHQ7DQo+ID4+PiArICAv LyBDb250ZXh0ICAgIC0gZG91YmxlIHBvaW50ZXIgdG8gdGhlIGdzaXYgb2JqZWN0LiAoUmVmZXIN Cj4gPj4gTXBhbU1zY05vZGVQYXJzZQ0KPiA+Pj4gKyAgLy8gICAgICAgICAgICAgIHRhYmxlKS4N Cj4gPj4+ICsgIC8vICpDb250ZXh0ICAgLSBwb2ludGVyIHRvIGdzaXYgb2JqZWN0Lg0KPiA+Pj4g KyAgLy8gKipDb250ZXh0ICAtIGdzaXYuDQo+ID4+PiArICBpZiAoKkludGVycnVwdEdzaXZQYXJl bnRQdHIgPT0gTlVMTCkgew0KPiA+Pj4gKyAgICBNcGFtTGVuZ3RoRXJyb3IgKEwiSW50ZXJydXB0 IGdzaXYgbm90IHNldCEiKTsNCj4gPj4+ICsgICAgcmV0dXJuOw0KPiA+Pj4gKyAgfQ0KPiA+Pj4g Kw0KPiA+Pj4gKyAgSW50ZXJydXB0R3NpdiA9ICoqSW50ZXJydXB0R3NpdlBhcmVudFB0cjsNCj4g Pj4+ICsNCj4gPj4+ICsgIC8vIElmIEludGVycnVwdHMgYXJlIGFic2VudCBmb3Igc29tZSByZWFz b24sIHRoZSBmbGFncyB3b3VsZG4ndCBuZWVkIGFueQ0KPiA+Pj4gKyAgLy8gcGFyc2luZy4NCj4g Pj4+ICsgIGlmIChJbnRlcnJ1cHRHc2l2ID09IDApIHsNCj4gPj4+ICsgICAgcmV0dXJuOw0KPiA+ Pj4gKyAgfQ0KPiA+Pg0KPiA+PiBJIHRoaW5rIHRoZXJlIGlzIHNvbWV0aGluZyB0byBwYXJzZSBi aXRmaWVsZHMgaW4gYWNwaXZpZXcsIGNmOg0KPiA+PiBodHRwczovL2VkazIuZ3JvdXBzLmlvL2cv ZGV2ZWwvbWVzc2FnZS8xMDUwMjkNCj4gPj4NCj4gPj4gV291bGQgaXQgZml0IHRoaXMgZmllbGQg cGFyc2luZyBhc3dlbGwgPw0KPiA+Pg0KPiA+DQo+ID4gW1JvaGl0XSBTb3JyeSwgdGhlIGxpbmsg cG9pbnRzIHRvIFYyIG9mIHRoaXMgcGF0Y2guIFdhcyB0aGlzIHRoZSBpbnRlbmRlZCBsaW5rPw0K PiANCj4gWWVzIHJpZ2h0LCBzb3JyeSBmb3IgdGhlIHdyb25nIGxpbmssIEkgbWVhbnQ6DQo+IGh0 dHBzOi8vZWRrMi5ncm91cHMuaW8vZy9kZXZlbC9tZXNzYWdlLzEwNjk1Nw0KPiANCg0KW1JvaGl0 XSBPbiBhIHF1aWNrIGxvb2ssIEkgZmVlbCB0aGlzIGNvdWxkIGJlIHV0aWxpemVkLiBJJ2xsIGdl dCBiYWNrIElmIEkgc2VlIGFueSBjb25jZXJucy4gDQoNCj4gPg0KPiA+Pj4gKw0KPiA+Pj4gKyAg SW50ZXJydXB0RmxhZyA9ICooKFVJTlQzMiAqKVB0cik7DQo+ID4+PiArDQo+ID4+PiArICAvLyBE ZWNvZGUgaW50ZXJydXB0IG1vZGUuDQo+ID4+PiArICBJbnRlcnJ1cHRNb2RlID0gKEludGVycnVw dEZsYWcgJg0KPiA+PiBFRklfQUNQSV9NUEFNX0lOVEVSUlVQVF9NT0RFX01BU0spDQo+ID4+PiAr ICAgICAgICAgICAgICAgICAgPj4gRUZJX0FDUElfTVBBTV9JTlRFUlJVUFRfTU9ERV9TSElGVDsN Cj4gPj4+ICsNCj4gPj4+ICsgIGlmIChJbnRlcnJ1cHRNb2RlID09IEVGSV9BQ1BJX01QQU1fSU5U RVJSVVBUX0xFVkVMX1RSSUdHRVJFRCkNCj4gew0KPiA+Pj4gKyAgICBQcmludERlY29kZWRGaWVs ZCAoDQo+ID4+PiArICAgICAgMiwNCj4gPj4+ICsgICAgICBMIiogSW50ZXJydXB0IG1vZGUgZGVj b2RlZCIsDQo+ID4+PiArICAgICAgTCJMZXZlbCB0cmlnZ2VyZWQiDQo+ID4+PiArICAgICAgKTsN Cj4gPj4+ICsgIH0gZWxzZSB7DQo+ID4+PiArICAgIFByaW50RGVjb2RlZEZpZWxkICgNCj4gPj4+ ICsgICAgICAyLA0KPiA+Pj4gKyAgICAgIEwiKiBJbnRlcnJ1cHQgbW9kZSBkZWNvZGVkIiwNCj4g Pj4+ICsgICAgICBMIkVkZ2UgdHJpZ2dlcmVkIg0KPiA+Pj4gKyAgICAgICk7DQo+ID4+PiArICB9 DQo+ID4+PiArDQo+ID4+PiArICAvLyBEZWNvZGUgaW50ZXJydXB0IHR5cGUuDQo+ID4+PiArICBJ bnRlcnJ1cHRUeXBlID0gKEludGVycnVwdEZsYWcgJg0KPiA+PiBFRklfQUNQSV9NUEFNX0lOVEVS UlVQVF9UWVBFX01BU0spDQo+ID4+PiArICAgICAgICAgICAgICAgICAgPj4gRUZJX0FDUElfTVBB TV9JTlRFUlJVUFRfVFlQRV9TSElGVDsNCj4gPj4+ICsNCj4gPj4+ICsgIGlmIChJbnRlcnJ1cHRU eXBlID09IEVGSV9BQ1BJX01QQU1fSU5URVJSVVBUX1dJUkVEKSB7DQo+ID4+PiArICAgIFByaW50 RGVjb2RlZEZpZWxkICgNCj4gPj4+ICsgICAgICAyLA0KPiA+Pj4gKyAgICAgIEwiKiBJbnRlcnJ1 cHQgdHlwZSBkZWNvZGVkIiwNCj4gPj4+ICsgICAgICBMIldpcmVkIGludGVycnVwdCINCj4gPj4+ ICsgICAgICApOw0KPiA+Pj4gKyAgfSBlbHNlIHsNCj4gPj4+ICsgICAgSW5jcmVtZW50RXJyb3JD b3VudCAoKTsNCj4gPj4+ICsgICAgUHJpbnQgKEwiXG4iKTsNCj4gPj4+ICsgICAgUHJpbnRGaWVs ZE5hbWUgKDIsIEwiKiBJbnRlcnJ1cHQgdHlwZSBkZWNvZGVkIik7DQo+ID4+PiArICAgIFByaW50 IChMIiV1IiwgSW50ZXJydXB0VHlwZSk7DQo+ID4+PiArICAgIFByaW50IChMIlxuRVJST1IgOiBJ bnRlcnJ1cHQgdHlwZSByZXNlcnZlZFxuIik7DQo+ID4+PiArICB9DQo+ID4+PiArDQo+ID4+PiAr ICAvLyBEZWNvZGUgYWZmaW5pdHkgdmFsaWQuDQo+ID4+PiArICBJbnRlcnJ1cHRBZmZpbml0eVZh bGlkID0gKEludGVycnVwdEZsYWcNCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg JiBFRklfQUNQSV9NUEFNX0lOVEVSUlVQVF9BRkZJTklUWV9WQUxJRF9NQVNLKQ0KPiA+Pj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgID4+IEVGSV9BQ1BJX01QQU1fSU5URVJSVVBUX0FGRklO SVRZX1ZBTElEX1NISUZUOw0KPiA+Pj4gKw0KPiA+Pj4gKyAgaWYgKEludGVycnVwdEFmZmluaXR5 VmFsaWQgIT0NCj4gPj4gRUZJX0FDUElfTVBBTV9JTlRFUlJVUFRfQUZGSU5JVFlfVkFMSUQpIHsN Cj4gPj4+ICsgICAgUHJpbnREZWNvZGVkRmllbGQgKA0KPiA+Pj4gKyAgICAgIDIsDQo+ID4+PiAr ICAgICAgTCIqIEludGVycnVwdCBhZmZpbml0eSB2YWxpZCBkZWNvZGVkIiwNCj4gPj4+ICsgICAg ICBMIkFmZmluaXR5IG5vdCB2YWxpZCINCj4gPj4+ICsgICAgICApOw0KPiA+Pj4gKyAgfSBlbHNl IHsNCj4gPj4+ICsgICAgUHJpbnREZWNvZGVkRmllbGQgKA0KPiA+Pj4gKyAgICAgIDIsDQo+ID4+ PiArICAgICAgTCIqIEludGVycnVwdCBhZmZpbml0eSB2YWxpZCBkZWNvZGVkIiwNCj4gPj4+ICsg ICAgICBMIkFmZmluaXR5IHZhbGlkIg0KPiA+Pj4gKyAgICAgICk7DQo+ID4+PiArDQo+ID4+PiAr ICAgIC8vIERlY29kZSBhZmZpbml0eSB0eXBlLg0KPiA+Pj4gKyAgICBJbnRlcnJ1cHRBZmZpbml0 eVR5cGUgPSAoSW50ZXJydXB0RmxhZw0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJiBFRklfQUNQSV9NUEFNX0lOVEVSUlVQVF9BRkZJTklUWV9UWVBFX01BU0spDQo+ID4+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgID4+IEVGSV9BQ1BJX01QQU1fSU5URVJSVVBUX0FG RklOSVRZX1RZUEVfU0hJRlQ7DQo+ID4+PiArDQo+ID4+PiArICAgIGlmIChJbnRlcnJ1cHRBZmZp bml0eVR5cGUgPT0NCj4gPj4gRUZJX0FDUElfTVBBTV9JTlRFUlJVUFRfUFJPQ0VTU09SX0FGRklO SVRZKSB7DQo+ID4+PiArICAgICAgUHJpbnREZWNvZGVkRmllbGQgKA0KPiA+Pj4gKyAgICAgICAg MiwNCj4gPj4+ICsgICAgICAgIEwiKiBJbnRlcnJ1cHQgYWZmaW5pdHkgdHlwZSBkZWNvZGVkIiwN Cj4gPj4+ICsgICAgICAgIEwiUHJvY2Vzc29yIGFmZmluaXR5Ig0KPiA+Pj4gKyAgICAgICAgKTsN Cj4gPj4+ICsgICAgfSBlbHNlIHsNCj4gPj4+ICsgICAgICBQcmludERlY29kZWRGaWVsZCAoDQo+ ID4+PiArICAgICAgICAyLA0KPiA+Pj4gKyAgICAgICAgTCIqIEludGVycnVwdCBhZmZpbml0eSB0 eXBlIGRlY29kZWQiLA0KPiA+Pj4gKyAgICAgICAgTCJQcm9jZXNzb3IgY29udGFpbmVyIGFmZmlu aXR5Ig0KPiA+Pj4gKyAgICAgICAgKTsNCj4gPj4+ICsgICAgfQ0KPiA+Pj4gKyAgfQ0KPiA+Pj4g Kw0KPiA+Pj4gKyAgLy8gRGVjb2RlIHJlc2VydmVkIGZpZWxkLg0KPiA+Pj4gKyAgUmVzZXJ2ZWQg PSAoSW50ZXJydXB0RmxhZyAmDQo+ID4+IEVGSV9BQ1BJX01QQU1fSU5URVJSVVBUX1JFU0VSVkVE X01BU0spDQo+ID4+PiArICAgICAgICAgICAgID4+IEVGSV9BQ1BJX01QQU1fSU5URVJSVVBUX1JF U0VSVkVEX1NISUZUOw0KPiA+Pj4gKyAgUHJpbnQgKEwiXG4iKTsNCj4gPj4+ICsgIFByaW50Rmll bGROYW1lICgyLCBMIiogUmVzZXJ2ZWQgZGVjb2RlZCIpOw0KPiA+Pj4gKyAgUHJpbnQgKEwiJXUi LCBSZXNlcnZlZCk7DQo+ID4+PiArDQo+ID4+PiArICBWYWxpZGF0ZVJlc2VydmVkIChSZXNlcnZl ZCk7DQo+ID4+PiArfQ0KPiA+Pj4gKw0KPiA+Pj4gKy8qKg0KPiA+Pj4gKyAgQUNQSV9QQVJTRVIg YXJyYXkgZGVzY3JpYmluZyB0aGUgR2VuZXJpYyBBQ1BJIE1QQU0gdGFibGUgaGVhZGVyLg0KPiA+ Pj4gKyoqLw0KPiA+Pj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiAgTXBhbVBhcnNlcltdID0g ew0KPiA+Pj4gKyAgUEFSU0VfQUNQSV9IRUFERVIgKCZBY3BpSGRySW5mbykNCj4gPj4+ICt9Ow0K PiA+Pj4gKw0KPiA+Pj4gKy8qKg0KPiA+Pj4gKyAgQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmlu ZyB0aGUgTVBBTSBNU0Mgbm9kZSBvYmplY3QuDQo+ID4+PiArKiovDQo+ID4+PiArU1RBVElDIENP TlNUIEFDUElfUEFSU0VSICBNcGFtTXNjTm9kZVBhcnNlcltdID0gew0KPiA+Pj4gKyAgeyBMIkxl bmd0aCIsICAgICAgICAgICAgICAgICAgICAgICAyLCAwLCAgTCIldSIsICAgIE5VTEwsDQo+ID4+ PiArICAgIChWT0lEICoqKSZNcGFtTXNjTm9kZUxlbmd0aCwgTlVMTCwgTlVMTCB9LA0KPiA+Pj4g KyAgLy8gT25jZSBJbnRlcmZhY2UgdHlwZSBpcyBkZWNvZGVkLCB0aGUgYWRkcmVzcyBvZiBpbnRl cmZhY2UgdHlwZSBmaWVsZCBpcw0KPiA+Pj4gKyAgLy8gY2FwdHVyZWQgaW50byBJbnRlcmZhY2VU eXBlIHBvaW50ZXIgc28gdGhhdCBpdCBjb3VsZCBiZSB1c2VkIHRvIGNoZWNrDQo+IGlmDQo+ID4+ PiArICAvLyBNTUlPIFNpemUgZmllbGQgaXMgc2V0IGFzIHBlciB0aGUgc3BlY2lmaWNhdGlvbi4N Cj4gPj4+ICsgIHsgTCJJbnRlcmZhY2UgdHlwZSIsICAgICAgICAgICAgICAgMSwgMiwgIEwiMHgl eCIsICBOVUxMLA0KPiA+Pj4gKyAgICAoVk9JRCAqKikmSW50ZXJmYWNlVHlwZSwgRGVjb2RlSW50 ZXJmYWNlVHlwZSwgTlVMTCB9LA0KPiA+Pj4gKyAgeyBMIlJlc2VydmVkIiwgICAgICAgICAgICAg ICAgICAgICAxLCAzLCAgTCIweCV4IiwgIE5VTEwsDQo+ID4+PiArICAgIE5VTEwsIFZhbGlkYXRl UmVzZXJ2ZWRHZW5lcmljLCAoVk9JRCAqKTEgfSwNCj4gPj4+ICsgIHsgTCJJZGVudGlmaWVyIiwg ICAgICAgICAgICAgICAgICAgNCwgNCwgIEwiJXUiLCAgICBOVUxMLA0KPiA+Pj4gKyAgICBOVUxM LCBOVUxMLCBOVUxMIH0sDQo+ID4+PiArICB7IEwiQmFzZSBhZGRyZXNzIiwgICAgICAgICAgICAg ICAgIDgsIDgsICBMIjB4JWx4IiwgTlVMTCwNCj4gPj4+ICsgICAgTlVMTCwgTlVMTCwgTlVMTCB9 LA0KPiA+Pj4gKyAgeyBMIk1NSU8gU2l6ZSIsICAgICAgICAgICAgICAgICAgICA0LCAxNiwgTCIw eCV4IiwgIE5VTEwsDQo+ID4+PiArICAgIE5VTEwsIFZhbGlkYXRlTW1pb1NpemUsIChWT0lEICoq KSZJbnRlcmZhY2VUeXBlIH0sDQo+ID4+PiArICB7IEwiT3ZlcmZsb3cgaW50ZXJydXB0IiwgICAg ICAgICAgIDQsIDIwLCBMIiV1IiwgICAgTlVMTCwNCj4gPj4+ICsgICAgKFZPSUQgKiopJk92ZXJm bG93SW50ZXJydXB0LCBOVUxMLCBOVUxMIH0sDQo+ID4+PiArICB7IEwiT3ZlcmZsb3cgaW50ZXJy dXB0IGZsYWdzIiwgICAgIDQsIDI0LCBMIjB4JXgiLCAgTlVMTCwNCj4gPj4+ICsgICAgLy8gSW5p dGlhbGl6ZXIgbGlzdCBoYXMgdG8gaGF2ZSBjb25zdGFudHMuIFBhc3MgdGhlIGFkZHJlc3Mgb2YN Cj4gPj4+ICsgICAgLy8gT3ZlcmZsb3dJbnRlcnJ1cHQgdG8gc2F0aXNmeSB0aGlzLiBXaGlsZSB1 c2luZyBpdCB3aXRoaW4gdGhlIHZhbGlkYXRvcg0KPiA+Pj4gKyAgICAvLyBtYWtlIHN1cmUgdG8g ZGVyZWZlcmVuY2UgYWNjb3JkaW5nbHkuDQo+ID4+PiArICAgIE5VTEwsIERlY29kZUludGVycnVw dEZsYWdzLCAoVk9JRCAqKSZPdmVyZmxvd0ludGVycnVwdCB9LA0KPiA+Pj4gKyAgeyBMIlJlc2Vy dmVkMSIsICAgICAgICAgICAgICAgICAgICA0LCAyOCwgTCIweCV4IiwgIE5VTEwsDQo+ID4+PiAr ICAgIE5VTEwsIFZhbGlkYXRlUmVzZXJ2ZWRHZW5lcmljLCAoVk9JRCAqKTQgfSwNCj4gPj4+ICsg IHsgTCJPdmVyZmxvdyBpbnRlcnJ1cHQgYWZmaW5pdHkiLCAgNCwgMzIsIEwiMHgleCIsICBOVUxM LA0KPiA+Pj4gKyAgICBOVUxMLCBOVUxMLCBOVUxMIH0sDQo+ID4+PiArICB7IEwiRXJyb3IgaW50 ZXJydXB0IiwgICAgICAgICAgICAgIDQsIDM2LCBMIiV1IiwgICAgTlVMTCwNCj4gPj4+ICsgICAg KFZPSUQgKiopJkVycm9ySW50ZXJydXB0LCBOVUxMLCBOVUxMIH0sDQo+ID4+PiArICB7IEwiRXJy b3IgaW50ZXJydXB0IGZsYWdzIiwgICAgICAgIDQsIDQwLCBMIjB4JXgiLCAgTlVMTCwNCj4gPj4+ ICsgICAgLy8gSW5pdGlhbGl6ZXIgbGlzdCBoYXMgdG8gaGF2ZSBjb25zdGFudHMuIFBhc3MgdGhl IGFkZHJlc3Mgb2YNCj4gPj4+ICsgICAgLy8gT3ZlcmZsb3dJbnRlcnJ1cHQgdG8gc2F0aXNmeSB0 aGlzLiBXaGlsZSB1c2luZyBpdCB3aXRoaW4gdGhlIHZhbGlkYXRvcg0KPiA+Pj4gKyAgICAvLyBt YWtlIHN1cmUgdG8gZGVyZWZlcmVuY2UgYWNjb3JkaW5nbHkuDQo+ID4+PiArICAgIE5VTEwsIERl Y29kZUludGVycnVwdEZsYWdzLCAoVk9JRCAqKSZFcnJvckludGVycnVwdCB9LA0KPiA+Pj4gKyAg eyBMIlJlc2VydmVkMiIsICAgICAgICAgICAgICAgICAgICA0LCA0NCwgTCIweCV4IiwgIE5VTEws DQo+ID4+PiArICAgIE5VTEwsIFZhbGlkYXRlUmVzZXJ2ZWRHZW5lcmljLCAoVk9JRCAqKTQgfSwN Cj4gPj4+ICsgIHsgTCJFcnJvciBpbnRlcnJ1cHQgYWZmaW5pdHkiLCAgICAgNCwgNDgsIEwiMHgl eCIsICBOVUxMLA0KPiA+Pj4gKyAgICBOVUxMLCBOVUxMLCBOVUxMIH0sDQo+ID4+PiArICB7IEwi TUFYX05SRFlfVVNFQyIsICAgICAgICAgICAgICAgIDQsIDUyLCBMIjB4JXgiLCAgTlVMTCwNCj4g Pj4+ICsgICAgTlVMTCwgTlVMTCwgTlVMTCB9LA0KPiA+Pj4gKyAgeyBMIkhhcmR3YXJlIElEIG9m IGxpbmtlZCBkZXZpY2UiLCA4LCA1NiwgTCIweCVseCIsIE5VTEwsDQo+ID4+PiArICAgIE5VTEws IERlY29kZUhhcmR3YXJlSWQsIE5VTEwgfSwNCj4gPj4+ICsgIHsgTCJJbnN0YW5jZSBJRCBvZiBs aW5rZWQgZGV2aWNlIiwgNCwgNjQsIEwiMHgleCIsICBOVUxMLA0KPiA+Pj4gKyAgICBOVUxMLCBO VUxMLCBOVUxMIH0sDQo+ID4+PiArICB7IEwiTnVtYmVyIG9mIHJlc291cmNlIG5vZGVzIiwgICAg IDQsIDY4LCBMIiV1IiwgICAgTlVMTCwNCj4gPj4+ICsgICAgKFZPSUQgKiopJk51bWJlck9mTXNj UmVzb3VyY2VzLCBOVUxMLCBOVUxMIH0NCj4gPj4+ICt9Ow0KPiA+Pj4gKw0KPiA+Pj4gKy8qKg0K PiA+Pj4gKyAgQUNQSV9QQVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgTVBBTSBNU0MgcmVzb3Vy Y2UgZmllbGRzIHRpbGwgbG9jYXRvcg0KPiA+PiB0eXBlLg0KPiA+Pj4gKyoqLw0KPiA+Pj4gK1NU QVRJQyBDT05TVCBBQ1BJX1BBUlNFUiAgTXBhbU1zY1Jlc291cmNlUGFyc2VyW10gPSB7DQo+ID4+ PiArICB7IEwiSWRlbnRpZmllciIsICAgNCwgMCwgTCIldSIsICAgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTCB9LA0KPiA+Pj4gKyAgeyBMIlJJUyBpbmRleCIsICAgIDEsIDQsIEwiJXUiLCAgIE5VTEws IE5VTEwsIE5VTEwsIE5VTEwgfSwNCj4gPj4+ICsgIHsgTCJSZXNlcnZlZDEiLCAgICAyLCA1LCBM IjB4JXgiLCBOVUxMLA0KPiA+Pj4gKyAgICBOVUxMLCBWYWxpZGF0ZVJlc2VydmVkR2VuZXJpYywg KFZPSUQgKikyIH0sDQo+ID4+PiArICB7IEwiTG9jYXRvciB0eXBlIiwgMSwgNywgTCIweCV4Iiwg TlVMTCwNCj4gPj4+ICsgICAgKFZPSUQgKiopJkxvY2F0b3JUeXBlLA0KPiA+Pj4gKyAgICBOVUxM LCBOVUxMIH0NCj4gPj4+ICt9Ow0KPiA+Pj4gKw0KPiA+Pj4gKy8qKg0KPiA+Pj4gKyAgQUNQSV9Q QVJTRVIgYXJyYXkgZGVzY3JpYmluZyB0aGUgTVBBTSBNU0MgcmVzb3VyY2UgbG9jYXRvciBmaWVs ZC4NCj4gPj4+ICsqKi8NCj4gPj4+ICtTVEFUSUMgQ09OU1QgQUNQSV9QQVJTRVIgIE1wYW1Nc2NS ZXNvdXJjZUxvY2F0b3JQYXJzZXJbXSA9IHsNCj4gPj4+ICsgIHsgTCJMb2NhdG9yIiwgMTIsIDAs IE5VTEwsIE5VTEwsIChWT0lEICoqKSZMb2NhdG9yLCBOVUxMLA0KPiA+Pj4gKyAgICBOVUxMIH0N Cj4gPj4+ICt9Ow0KPiA+Pj4gKw0KPiA+Pj4gKy8qKg0KPiA+Pj4gKyAgQUNQSV9QQVJTRVIgYXJy YXkgZGVzY3JpYmluZyB0aGUgTVBBTSBNU0MgcmVzb3VyY2UncyBmdW5jdGlvbmFsDQo+ID4+IGRl cGVuZGVuY2llcw0KPiA+Pj4gKyAgY291bnQuDQo+ID4+PiArKiovDQo+ID4+PiArU1RBVElDIENP TlNUIEFDUElfUEFSU0VSDQo+ID4+IE1wYW1Nc2NGdW5jdGlvbmFsRGVwZW5kZW5jeUNvdW50UGFy c2VyW10gPSB7DQo+ID4+PiArICB7IEwiTnVtYmVyIG9mIGZ1bmMgZGVwZW5kZW5jaWVzIiwgNCwg MCwgTCIldSIsIE5VTEwsDQo+ID4+PiArICAgIChWT0lEICoqKSZOdW1iZXJPZkZ1bmN0aW9uYWxE ZXBlbmRlbmNpZXMsIE5VTEwsIE5VTEwgfQ0KPiA+Pj4gK307DQo+ID4+PiArDQo+ID4+PiArLyoq DQo+ID4+PiArICBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBNUEFNIE1TQyByZXNv dXJjZSdzIGZ1bmN0aW9uYWwNCj4gPj4gZGVwZW5kZW5jaWVzLg0KPiA+Pj4gKyoqLw0KPiA+Pj4g K1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiAgTXBhbU1zY0Z1bmN0aW9uYWxEZXBlbmRlbmN5UGFy c2VyW10gPQ0KPiB7DQo+ID4+PiArICB7IEwiUHJvZHVjZXIiLCA0LCAwLCBMIjB4JXgiLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMIH0sDQo+ID4+PiArICB7IEwiUmVzZXJ2ZWQiLCA0LCA0LCBMIjB4 JXgiLCBOVUxMLA0KPiA+Pj4gKyAgICBOVUxMLCBWYWxpZGF0ZVJlc2VydmVkR2VuZXJpYywgKFZP SUQgKik0IH0sDQo+ID4+PiArfTsNCj4gPj4+ICsNCj4gPj4+ICsvKioNCj4gPj4+ICsgIEFDUElf UEFSU0VSIGFycmF5IGRlc2NyaWJpbmcgdGhlIGludGVyY29ubmVjdCBkZXNjcmlwdG9yIHRhYmxl DQo+IGFzc29jaWF0ZWQNCj4gPj4gd2l0aA0KPiA+Pj4gKyAgdGhlIGludGVyY29ubmVjdCBsb2Nh dG9yIHR5cGUuDQo+ID4+PiArKiovDQo+ID4+PiArU1RBVElDIENPTlNUIEFDUElfUEFSU0VSICBN cGFtSW50ZXJjb25uZWN0RGVzY3JpcHRvclRhYmxlUGFyc2VyW10NCj4gPSB7DQo+ID4+PiArICB7 IEwiU2lnbmF0dXJlIiwgICAgICAgICAgICAgICAgICAgMTYsIDAsDQo+ID4+PiArICAgIEwiJXgl eCV4JXgtJXgleC0leCV4LSV4JXgtJXgleCV4JXgleCV4IiwgRHVtcDE2Q2hhcnMsDQo+ID4+IE5V TEwsIE5VTEwsIE5VTEwgfSwNCj4gPj4+ICsgIHsgTCJOdW1iZXIgb2YgSW50ZXJjb25uZWN0IGRl c2MiLCA0LCAgMTYsTCIweCV4IiwgTlVMTCwNCj4gPj4+ICsgICAgKFZPSUQgKiopJk51bWJlck9m SW50ZXJjb25uZWN0RGVzY3JpcHRvcnMsIE5VTEwsIE5VTEwgfQ0KPiA+Pj4gK307DQo+ID4+PiAr DQo+ID4+PiArLyoqDQo+ID4+PiArICBBQ1BJX1BBUlNFUiBhcnJheSBkZXNjcmliaW5nIHRoZSBp bnRlcmNvbm5lY3QgZGVzY3JpcHRvciBhc3NvY2lhdGVkDQo+IHdpdGgNCj4gPj4gdGhlDQo+ID4+ PiArICBpbnRlcmNvbm5lY3QgbG9jYXRvciB0eXBlLiBUaGUgc3BlY2lmaWNhdGlvbiBpbmNsdWRl cyBhbiBhZGRpdGlvbmFsDQo+IHJlc2VydmVkDQo+ID4+PiArICBmaWVsZCBhbHNvIHdpdGhpbiB0 aGUgaW50ZXJjb25uZWN0IGRlc2NyaXB0b3IuIFRoaXMgaXMgbm90IGluY2x1ZGVkIGluIHRoZQ0K PiA+Pj4gKyAgcGFyc2VyIG9iamVjdCBvbiBwdXJwb3NlLiBUaGUgZnVuY3Rpb24gaXMgb2YgMyBi eXRlcyBsZW5ndGggd2hpY2ggdGhlDQo+ID4+PiArICBQYXJzZUFjcGkgZnVuY3Rpb24gY2FuJ3Qg cGFyc2UuIFRoaXMgaGFzIGJlZW4gaGFuZGxlZCBzZXBhcmF0ZWx5Lg0KPiA+Pj4gKyoqLw0KPiA+ Pj4gK1NUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiAgTXBhbUludGVyY29ubmVjdERlc2NyaXB0b3JQ YXJzZXJbXSA9IHsNCj4gPj4+ICsgIHsgTCJTb3VyY2UgSUQiLCAgICAgIDQsIDAsIEwiJXUiLCAg IE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwgfSwNCj4gPj4+ICsgIHsgTCJEZXN0aW5hdGlvbiBJRCIs IDQsIDQsIEwiJXUiLCAgIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwgfSwNCj4gPj4+ICsgIHsgTCJM aW5rIHR5cGUiLCAgICAgIDEsIDgsIEwiMHgleCIsIE5VTEwsDQo+ID4+PiArICAgIE5VTEwsIERl Y29kZUxpbmtUeXBlLCBOVUxMIH0NCj4gPj4+ICt9Ow0KPiA+Pj4gKw0KPiA+Pj4gKy8qKg0KPiA+ Pj4gKyAgUHJpbnRMb2NhdG9yVGl0bGUgY291bGQgYmUgdXNlZCB0byBwcmludCB0aGUgZGVjb2Rl ZCBsb2NhdG9yIHRpdGxlLg0KPiA+Pj4gKw0KPiA+Pj4gKyAgQHBhcmFtIFtpbl0gSW5kZW50ICAg ICAgICAgICAgICBOdW1iZXIgb2Ygc3BhY2VzIHRvIGFkZCB0byB0aGUgZ2xvYmFsIHRhYmxlDQo+ ID4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudC4gVGhlIGdsb2Jh bCB0YWJsZSBpbmRlbnQgaXMgMCBieQ0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkZWZhdWx0OyBob3dldmVyIHRoaXMgdmFsdWUgaXMgdXBkYXRlZCBvbg0KPiA+Pj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeSB0byB0aGUgUGFyc2VBY3Bp KCkgYnkgYWRkaW5nIHRoZSBpbmRlbnQNCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdmFsdWUgcHJvdmlkZWQgdG8gUGFyc2VBY3BpKCkgYW5kIHJlc3RvcmVkDQo+ID4+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2sgb24gZXhpdC4gIFRoZXJl Zm9yZSB0aGUgdG90YWwgaW5kZW50IGluDQo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRoZSBvdXRwdXQgaXMgZGVwZW5kZW50IG9uIGZyb20gd2hlcmUgdGhpcw0KPiA+ Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBpcyBjYWxsZWQu DQo+ID4+PiArICBAcGFyYW0gW2luXSBMb2NhdG9yVGl0bGUgICAgICAgIFRpdGxlIHN0cmluZyB0 byBiZSB1c2VkIGZvciB0aGUgbG9jYXRvci4NCj4gPj4+ICsqKi8NCj4gPj4+ICtTVEFUSUMNCj4g Pj4+ICtWT0lEDQo+ID4+PiArRUZJQVBJDQo+ID4+PiArUHJpbnRMb2NhdG9yVGl0bGUgKA0KPiA+ Pj4gKyAgSU4gVUlOVDMyICAgICAgICBJbmRlbnQsDQo+ID4+PiArICBJTiBDT05TVCBDSEFSMTYg ICpMb2NhdG9yVGl0bGUNCj4gPj4+ICsgICkNCj4gPj4+ICt7DQo+ID4+PiArICBQcmludEZpZWxk TmFtZSAoSW5kZW50LCBMIiogTG9jYXRvciB0eXBlIGRlY29kZWQiKTsNCj4gPj4+ICsgIFByaW50 IChMb2NhdG9yVGl0bGUpOw0KPiA+Pj4gKyAgUHJpbnQgKEwiXG4iKTsNCj4gPj4+ICsgIFByaW50 RmllbGROYW1lIChJbmRlbnQsIEwiTG9jYXRvciIpOw0KPiA+Pj4gKyAgUHJpbnQgKEwiXG4iKTsN Cj4gPj4+ICt9DQo+ID4+PiArDQo+ID4+PiArLyoqDQo+ID4+PiArICBQcmludExvY2F0b3JEZXNj cmlwdG9yNjQgY291bGQgYmUgdXNlZCB0byBwcmludCB0aGUgOCBieXRlIGZpZWxkDQo+ID4+PiAr ICB3aXRoaW4gdGhlIDEyIGJ5dGUgbG9jYXRvciBkZXNjcmlwdG9yLg0KPiA+Pj4gKw0KPiA+Pj4g KyAgQHBhcmFtIFtpbl0gSW5kZW50ICAgICAgICAgICAgICBOdW1iZXIgb2Ygc3BhY2VzIHRvIGFk ZCB0byB0aGUgZ2xvYmFsIHRhYmxlDQo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGluZGVudC4gVGhlIGdsb2JhbCB0YWJsZSBpbmRlbnQgaXMgMCBieQ0KPiA+Pj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OyBob3dldmVyIHRoaXMgdmFs dWUgaXMgdXBkYXRlZCBvbg0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBlbnRyeSB0byB0aGUgUGFyc2VBY3BpKCkgYnkgYWRkaW5nIHRoZSBpbmRlbnQNCj4gPj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgcHJvdmlkZWQgdG8gUGFyc2VB Y3BpKCkgYW5kIHJlc3RvcmVkDQo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGJhY2sgb24gZXhpdC4gIFRoZXJlZm9yZSB0aGUgdG90YWwgaW5kZW50IGluDQo+ID4+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBvdXRwdXQgaXMgZGVwZW5kZW50 IG9uIGZyb20gd2hlcmUgdGhpcw0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBmdW5jdGlvbiBpcyBjYWxsZWQuDQo+ID4+PiArICBAcGFyYW0gW2luXSBEZXNjcmlwdG9y VGl0bGUgICAgIFRpdGxlIHN0cmluZyB0byBiZSB1c2VkIGZvciB0aGUgZGVzY3JpcHRvci4NCj4g Pj4+ICsgIEBwYXJhbSBbaW5dIERlc2NyaXB0b3I2NCAgICAgICAgRGVzY3JpcHRvciB0byBiZSBw cmludGVkLg0KPiA+Pj4gKyAgQHBhcmFtIFtpbl0gVmFsaWRhdGUgICAgICAgICAgICBCb29sZWFu IHRvIGluZGljYXRlIGlmIHRoZSBzZWNvbmQgNCBieXRlIGZpZWxkDQo+ID4+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRzIHRvIGJlIHZhbGlkYXRlZCBhcyBhIHJlc2Vy dmVkIGZpZWxkLg0KPiA+Pj4gKyoqLw0KPiA+Pj4gK1NUQVRJQw0KPiA+Pj4gK1ZPSUQNCj4gPj4+ ICtFRklBUEkNCj4gPj4+ICtQcmludExvY2F0b3JEZXNjcmlwdG9yNjQgKA0KPiA+Pj4gKyAgSU4g VUlOVDMyICAgICAgICBJbmRlbnQsDQo+ID4+PiArICBJTiBDT05TVCBDSEFSMTYgICpEZXNjcmlw dG9yVGl0bGUsDQo+ID4+PiArICBJTiBDT05TVCBVSU5UNjQgIERlc2NyaXB0b3I2NCwNCj4gPj4+ ICsgIElOIEJPT0xFQU4gICAgICAgVmFsaWRhdGUNCj4gPj4+ICsgICkNCj4gPj4+ICt7DQo+ID4+ PiArICBQcmludEZpZWxkTmFtZSAoSW5kZW50LCBEZXNjcmlwdG9yVGl0bGUpOw0KPiA+Pj4gKyAg UHJpbnQgKEwiJWx1IiwgRGVzY3JpcHRvcjY0KTsNCj4gPj4+ICsNCj4gPj4+ICsgIGlmIChWYWxp ZGF0ZSkgew0KPiA+Pj4gKyAgICBWYWxpZGF0ZVJlc2VydmVkIChEZXNjcmlwdG9yNjQpOw0KPiA+ Pj4gKyAgfQ0KPiA+Pj4gKw0KPiA+Pj4gKyAgUHJpbnQgKEwiXG4iKTsNCj4gPj4+ICt9DQo+ID4+ PiArDQo+ID4+PiArLyoqDQo+ID4+PiArICBQcmludExvY2F0b3JEZXNjcmlwdG9yMzIgY291bGQg YmUgdXNlZCB0byBwcmludCB0aGUgNCBieXRlIGZpZWxkDQo+ID4+PiArICB3aXRoaW4gdGhlIDEy IGJ5dGUgbG9jYXRvciBkZXNjcmlwdG9yLg0KPiA+Pj4gKw0KPiA+Pj4gKyAgQHBhcmFtIFtpbl0g SW5kZW50ICAgICAgICAgICAgICBOdW1iZXIgb2Ygc3BhY2VzIHRvIGFkZCB0byB0aGUgZ2xvYmFs IHRhYmxlDQo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudC4g VGhlIGdsb2JhbCB0YWJsZSBpbmRlbnQgaXMgMCBieQ0KPiA+Pj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkZWZhdWx0OyBob3dldmVyIHRoaXMgdmFsdWUgaXMgdXBkYXRlZCBv bg0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeSB0byB0aGUg UGFyc2VBY3BpKCkgYnkgYWRkaW5nIHRoZSBpbmRlbnQNCj4gPj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdmFsdWUgcHJvdmlkZWQgdG8gUGFyc2VBY3BpKCkgYW5kIHJlc3Rv cmVkDQo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2sgb24gZXhp dC4gIFRoZXJlZm9yZSB0aGUgdG90YWwgaW5kZW50IGluDQo+ID4+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRoZSBvdXRwdXQgaXMgZGVwZW5kZW50IG9uIGZyb20gd2hlcmUg dGhpcw0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBp cyBjYWxsZWQuDQo+ID4+PiArICBAcGFyYW0gW2luXSBEZXNjcmlwdG9yVGl0bGUgICAgIFRpdGxl IHN0cmluZyB0byBiZSB1c2VkIGZvciB0aGUgZGVzY3JpcHRvci4NCj4gPj4+ICsgIEBwYXJhbSBb aW5dIERlc2NyaXB0b3IzMiAgICAgICAgRGVzY3JpcHRvciB0byBiZSBwcmludGVkLg0KPiA+Pj4g KyAgQHBhcmFtIFtpbl0gVmFsaWRhdGUgICAgICAgICAgICBCb29sZWFuIHRvIGluZGljYXRlIGlm IHRoZSBzZWNvbmQgNCBieXRlIGZpZWxkDQo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG5lZWRzIHRvIGJlIHZhbGlkYXRlZCBhcyBhIHJlc2VydmVkIGZpZWxkLg0KPiA+ Pj4gKyoqLw0KPiA+Pj4gK1NUQVRJQw0KPiA+Pj4gK1ZPSUQNCj4gPj4+ICtFRklBUEkNCj4gPj4+ ICtQcmludExvY2F0b3JEZXNjcmlwdG9yMzIgKA0KPiA+Pj4gKyAgSU4gVUlOVDMyICAgICAgICBJ bmRlbnQsDQo+ID4+PiArICBJTiBDT05TVCBDSEFSMTYgICpEZXNjcmlwdG9yVGl0bGUsDQo+ID4+ PiArICBJTiBDT05TVCBVSU5UMzIgIERlc2NyaXB0b3IzMiwNCj4gPj4+ICsgIElOIEJPT0xFQU4g ICAgICAgVmFsaWRhdGUNCj4gPj4+ICsgICkNCj4gPj4+ICt7DQo+ID4+PiArICBQcmludEZpZWxk TmFtZSAoSW5kZW50LCBEZXNjcmlwdG9yVGl0bGUpOw0KPiA+Pj4gKyAgUHJpbnQgKEwiMHgleCIs IERlc2NyaXB0b3IzMik7DQo+ID4+PiArDQo+ID4+PiArICBpZiAoVmFsaWRhdGUpIHsNCj4gPj4+ ICsgICAgVmFsaWRhdGVSZXNlcnZlZCAoRGVzY3JpcHRvcjMyKTsNCj4gPj4+ICsgIH0NCj4gPj4+ ICsNCj4gPj4+ICsgIFByaW50IChMIlxuIik7DQo+ID4+PiArfQ0KPiA+Pj4gKw0KPiA+Pj4gKy8q Kg0KPiA+Pj4gKyAgUHJpbnRHZW5lcmljTG9jYXRvckRlc2NyaXB0b3Igc2hvdWxkIGJlIHVzZWQg Zm9yIGRlY29kaW5nIGFuZCBwcmludGluZw0KPiA+PiBsb2NhdG9yDQo+ID4+PiArICBkZXNjcmlw dG9yIHRoYXQgY291bGQgYmUgc3BsaXQgYXMgdHdvIDggYW5kIDQgYnl0ZSBmaWVsZHMuIFRoZSBM b2NhdG9yUHRyDQo+ID4+PiArICBmaWVsZCBpcyBjYXN0ZWQgdG8gKFVJTlQ2NCAqKSBhbmQgZGVj b2RlZCB3aXRoaW4gdGhlIG1hY3JvLiBGcm9tIHRoZQ0KPiA+PiBNUEFNIEFDUEkNCj4gPj4+ICsg IHNwZWNpZmljYXRpb24sIHRoZSBvZmZzZXQgb2YgdGhlIGxvY2F0b3IgZGVzY3JpcHRvciBmaWVs ZCBpcyBkaXZpc2libGUgYnkgOC4NCj4gPj4+ICsgIEl0IGlzIGFzc3VtZWQgdGhhdCBBQ1BJIHRh YmxlcyBhcmUgcGxhY2VkIGF0IDggYnl0ZSBhbGlnbmVkIGFkZHJlc3MgYW5kDQo+ID4+IHRodXMN Cj4gPj4+ICsgIHVuYWxpZ25lZCBhY2Nlc3Mgc2hvdWxkIG5vdCBiZSBhIGNvbmNlcm4uDQo+ID4+ PiArDQo+ID4+PiArICBPbmx5IGxvY2F0b3JzIHdoaWNoIGhhdmUgaXRzIHNlY29uZCBmaWVsZCBh cyByZXNlcnZlZCBzaG91bGQgdXNlIHRoaXMNCj4gPj4+ICsgIGZ1bmN0aW9uLg0KPiA+Pj4gKw0K PiA+Pj4gKyAgQHBhcmFtIFtpbl0gSW5kZW50ICAgICAgICAgICAgICBOdW1iZXIgb2Ygc3BhY2Vz IHRvIGFkZCB0byB0aGUgZ2xvYmFsIHRhYmxlDQo+ID4+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGluZGVudC4gVGhlIGdsb2JhbCB0YWJsZSBpbmRlbnQgaXMgMCBieQ0KPiA+ Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OyBob3dldmVyIHRo aXMgdmFsdWUgaXMgdXBkYXRlZCBvbg0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBlbnRyeSB0byB0aGUgUGFyc2VBY3BpKCkgYnkgYWRkaW5nIHRoZSBpbmRlbnQNCj4g Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgcHJvdmlkZWQgdG8g UGFyc2VBY3BpKCkgYW5kIHJlc3RvcmVkDQo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJhY2sgb24gZXhpdC4gIFRoZXJlZm9yZSB0aGUgdG90YWwgaW5kZW50IGluDQo+ ID4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBvdXRwdXQgaXMgZGVw ZW5kZW50IG9uIGZyb20gd2hlcmUgdGhpcw0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmdW5jdGlvbiBpcyBjYWxsZWQuDQo+ID4+PiArICBAcGFyYW0gW2luXSBMb2Nh dG9yVGl0bGUgICAgICAgIFRpdGxlIHN0cmluZyB0byBiZSB1c2VkIGZvciB0aGUgbG9jYXRvcg0K PiA+Pj4gKyAgQHBhcmFtIFtpbl0gRGVzY3JpcHRvcjFUaXRsZSAgICBUaXRsZSBzdHJpbmcgdG8g YmUgdXNlZCBmb3IgZGVzY3JpcHRvcjENCj4gPj4+ICsgIEBwYXJhbSBbaW5dIERlc2NyaXB0b3Iy VGl0bGUgICAgVGl0bGUgc3RyaW5nIHRvIGJlIHVzZWQgZm9yIGRlc2NyaXB0b3IyDQo+ID4+PiAr ICBAcGFyYW0gW2luXSBMb2NhdG9yUHRyICAgICAgICAgIFB0ciB0byB0aGUgc3RhcnQgb2YgbG9j YXRvcg0KPiA+Pj4gKyAgQHBhcmFtIFtpbl0gVmFsaWRhdGUgICAgICAgICAgICBCb29sZWFuIHRv IGluZGljYXRlIGlmIHRoZSBzZWNvbmQgNCBieXRlIGZpZWxkDQo+ID4+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG5lZWRzIHRvIGJlIHZhbGlkYXRlZCBhcyBhIHJlc2VydmVk IGZpZWxkLg0KPiA+Pj4gKyoqLw0KPiA+Pj4gK1NUQVRJQw0KPiA+Pj4gK1ZPSUQNCj4gPj4+ICtF RklBUEkNCj4gPj4+ICtQcmludEdlbmVyaWNMb2NhdG9yRGVzY3JpcHRvciAoDQo+ID4+PiArICBJ TiBVSU5UMzIgICAgICAgIEluZGVudCwNCj4gPj4+ICsgIElOIENPTlNUIENIQVIxNiAgKkxvY2F0 b3JUaXRsZSwNCj4gPj4+ICsgIElOIENPTlNUIENIQVIxNiAgKkRlc2NyaXB0b3IxVGl0bGUsDQo+ ID4+PiArICBJTiBDT05TVCBDSEFSMTYgICpEZXNjcmlwdG9yMlRpdGxlLA0KPiA+Pj4gKyAgSU4g VUlOVDggICAgICAgICAqTG9jYXRvclB0ciwNCj4gPj4+ICsgIElOIEJPT0xFQU4gICAgICAgVmFs aWRhdGUNCj4gPj4+ICsgICkNCj4gPj4+ICt7DQo+ID4+PiArICBQcmludExvY2F0b3JUaXRsZSAo SW5kZW50LCBMb2NhdG9yVGl0bGUpOw0KPiA+Pj4gKyAgUHJpbnRMb2NhdG9yRGVzY3JpcHRvcjY0 ICgNCj4gPj4+ICsgICAgSW5kZW50LA0KPiA+Pj4gKyAgICBEZXNjcmlwdG9yMVRpdGxlLA0KPiA+ Pj4gKyAgICAqKChVSU5UNjQgKilMb2NhdG9yUHRyKSwNCj4gPj4+ICsgICAgRkFMU0UNCj4gPj4+ ICsgICAgKTsNCj4gPj4+ICsNCj4gPj4+ICsgIC8vIE1vdmUgZGVzY3JpcHRvciB0byBwb2ludCB0 byBuZXh0IGZpZWxkLg0KPiA+Pj4gKyAgTG9jYXRvclB0ciArPSBzaXplb2YgKFVJTlQ2NCk7DQo+ ID4+PiArDQo+ID4+PiArICBQcmludExvY2F0b3JEZXNjcmlwdG9yMzIgKA0KPiA+Pj4gKyAgICBJ bmRlbnQsDQo+ID4+PiArICAgIERlc2NyaXB0b3IyVGl0bGUsDQo+ID4+PiArICAgICooKFVJTlQ2 NCAqKUxvY2F0b3JQdHIpLA0KPiA+Pj4gKyAgICBWYWxpZGF0ZQ0KPiA+Pj4gKyAgICApOw0KPiA+ Pj4gK30NCj4gPj4+ICsNCj4gPj4+ICsvKioNCj4gPj4+ICsgIFRoaXMgZnVuY3Rpb24gcGFyc2Vz IHRoZSBsb2NhdG9yIGZpZWxkIHdpdGhpbiB0aGUgcmVzb3VyY2Ugbm9kZSBmb3IgQUNQSQ0KPiA+ PiBNUEFNDQo+ID4+PiArICB0YWJsZS4gVGhlIHBhcnNpbmcgaXMgYmFzZWQgb24gdGhlIGxvY2F0 b3IgdHlwZSBmaWVsZC4NCj4gPj4+ICsNCj4gPj4+ICsgIFRoaXMgZnVuY3Rpb24gYWxzbyBwZXJm b3JtcyB2YWxpZGF0aW9uIG9mIHRoZSBsb2NhdG9yIGZpZWxkLg0KPiA+Pj4gKyAqKi8NCj4gPj4+ ICtTVEFUSUMNCj4gPj4+ICtWT0lEDQo+ID4+PiArRUZJQVBJDQo+ID4+PiArUGFyc2VMb2NhdG9y ICgNCj4gPj4+ICsgIFZPSUQNCj4gPj4+ICsgICkNCj4gPj4+ICt7DQo+ID4+PiArICBVSU5UOCAg KkxvY2F0b3JQdHI7DQo+ID4+PiArDQo+ID4+PiArICBMb2NhdG9yUHRyID0gTG9jYXRvcjsNCj4g Pj4+ICsNCj4gPj4+ICsgIHN3aXRjaCAoKkxvY2F0b3JUeXBlKSB7DQo+ID4+DQo+ID4+IEkgdGhp bmsgaXQgd291bGQgYmUgc2ltcGxlciB0byBkZWZpbmUgbmFtZXMgYXM6DQo+ID4+DQo+ID4+IFNU QVRJQyBDT05TVCBDSEFSMTYgICpNcGFtTG9jYXRpb25OYW1lc1tdID0gew0KPiA+PiAgICAgTCJQ cm9jZXNzb3IgY2FjaGUiLA0KPiA+PiAgICAgTCJNZW1vcnkiLA0KPiA+PiAgICAgLi4uDQo+ID4+ DQo+ID4+IGFuZCBhbHNvIHRvIGRlZmluZSBBQ1BJX1BBUlNFUiB0YWJsZXMgZm9yIHRoZSBsb2Nh dG9yIGRlc2NyaXB0b3JzDQo+ID4+IGluc3RlYWQgb2YgdXNpbmcgUHJpbnRHZW5lcmljTG9jYXRv ckRlc2NyaXB0b3IoKS4NCj4gPj4gRWc6DQo+ID4+IFNUQVRJQyBDT05TVCBBQ1BJX1BBUlNFUiAg U21tdUxvY2F0b3JEZXNjcmlwdG9yUGFyc2VyW10gPSB7DQo+ID4+ICAgICB7IEwiU01NVSBpbnRl cmZhY2UiLCA4LCAwLCBMIiVsdSIsICAgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCB9LA0KPiA+PiAg ICAgeyBMIlJlc2VydmVkIElEIiwgNCwgOCwgTCIldSIsIE5VTEwsIE5VTEwsIFZhbGlkYXRlUmVz ZXJ2ZWRHZW5lcmljLA0KPiAoVk9JRA0KPiA+PiAqKTIgfSwNCj4gPj4NCj4gPg0KPiA+IFtSb2hp dF0gVGhlIG9ubHkgcmVhc29uIEkgZGlkIG5vdCB3YW50IHRvIGRvIHRoaXMgd2FzIHRvIGF2b2lk IG1hbnVhbGx5DQo+IG1vdmluZyB0aGUgb2Zmc2V0IGJhY2sgYnkgeCBieXRlcyB0byByZXBhcnNl IHRoZSBsb2NhdG9yLiBXZSBwYXJzZSB0aGUgbG9jYXRvcg0KPiB1c2luZyBNcGFtTXNjUmVzb3Vy Y2VMb2NhdG9yUGFyc2VyLiBJZiB3ZSB3b3VsZCBuZWVkIHRvIHVzZQ0KPiBBQ1BJX1BBUlNFUiwg d2Ugd291bGQgbmVlZCB0byBzdGVwIGJhY2sgYnkgMTIgYnl0ZXMgKGFzc3VtaW5nIG9mZnNldCBp cw0KPiB1c2VkIHJpZ2h0IGFmdGVyIHdlIHBhcnNlIHRoZSBsb2NhdG9yKSBhbmQgcmVwYXJzZSB0 aGUgbG9jYXRvciB1bmRlciB0aGUNCj4gcmVzcGVjdGl2ZSBzd2l0Y2ggY2FzZS4gV2UgbWlnaHQg bm90IGJlIGFibGUgdG8gc2tpcA0KPiBNcGFtTXNjUmVzb3VyY2VMb2NhdG9yUGFyc2VyIGFzDQo+ IEVGSV9BQ1BJX01QQU1fTE9DQVRJT05fTUVNT1JZX0NBQ0hFIGNhbid0IGJlIHBhcnNlZCBieQ0K PiBBQ1BJX1BBUlNFUi4gV291bGQgdGhpcyBiZSBjbGVhbmVyLCB3aGF0IGFyZSB5b3VyIHRob3Vn aHRzPw0KPiANCj4gT2sgcmlnaHQsIEkgbWlzcmVhZCB0aGUgc3RydWN0dXJlIHRoZSBmaXJzdCB0 aW1lLg0KPiBJbiB0aGF0IGNhc2UsIHdvdWxkIGl0IGJlIHBvc3NpYmxlIHRvIHVzZSBQYXJzZUxv Y2F0b3IoKSAob3IgYSByZW1ha2Ugb2YgdGhlDQo+IGZ1bmN0aW9uKQ0KPiBhcyBhIEFDUElfUEFS U0VSJ3MgUHJpbnRGb3JtYXR0ZXIoKSBjYWxsYmFjayA/DQo+IA0KPiBDZi4gdGhlIGNvbW1lbnQg YmVsb3csIEkgdGhpbmsgdGhpcyBzaG91bGQgYmUgcG9zc2libGUgdG8gcGFyc2UgYQ0KPiBFRklf QUNQSV9NUEFNX0xPQ0FUSU9OX01FTU9SWV9DQUNIRQ0KPiBzdHJ1Y3QgdXNpbmcgYSBBQ1BJX1BB UlNFUiBzdHJ1Y3R1cmUuDQo+IA0KDQpbUm9oaXRdIFByaW50Rm9tYXR0ZXIgd291bGQgb25seSBi ZSBjYWxsZWQgZm9yIGEgY2FsbCB3aXRoIFRyYWNlID0gVFJVRS4gV2hpbGUgcGFyc2luZyBNcGFt TXNjUmVzb3VyY2VMb2NhdG9yUGFyc2VyLCBUcmFjZSBpcyBzZXQgdG8gRkFMU0UuIA0KDQovLyBT bmlwcGV0DQogICAgaWYgKFRyYWNlKSB7DQogICAgICAvLyBpZiB0aGVyZSBpcyBhIEZvcm1hdHRl ciBmdW5jdGlvbiBsZXQgdGhlIGZ1bmN0aW9uIGhhbmRsZQ0KICAgICAgLy8gdGhlIHByaW50aW5n IGVsc2UgaWYgYSBGb3JtYXQgaXMgc3BlY2lmaWVkIGluIHRoZSB0YWJsZSB1c2UNCiAgICAgIC8v IHRoZSBGb3JtYXQgZm9yIHByaW50aW5nDQogICAgICBQcmludEZpZWxkTmFtZSAoMiwgUGFyc2Vy W0luZGV4XS5OYW1lU3RyKTsNCiAgICAgIGlmIChQYXJzZXJbSW5kZXhdLlByaW50Rm9ybWF0dGVy ICE9IE5VTEwpIHsNCiAgICAgICAgUGFyc2VyW0luZGV4XS5QcmludEZvcm1hdHRlciAoUGFyc2Vy W0luZGV4XS5Gb3JtYXQsIFB0cik7DQoNCg0KPiA+DQo+ID4+DQo+ID4+PiArICAgIGNhc2UgRUZJ X0FDUElfTVBBTV9MT0NBVElPTl9QUk9DRVNTT1JfQ0FDSEU6DQo+ID4+PiArICAgICAgUHJpbnRH ZW5lcmljTG9jYXRvckRlc2NyaXB0b3IgKA0KPiA+Pj4gKyAgICAgICAgNCwNCj4gPj4+ICsgICAg ICAgIEwiUHJvY2Vzc29yIGNhY2hlIiwNCj4gPj4+ICsgICAgICAgIEwiKiBDYWNoZSByZWZlcmVu Y2UiLA0KPiA+Pj4gKyAgICAgICAgTCIqIFJlc2VydmVkIiwNCj4gPj4+ICsgICAgICAgIExvY2F0 b3JQdHIsDQo+ID4+PiArICAgICAgICBUUlVFDQo+ID4+PiArICAgICAgICApOw0KPiA+Pj4gKyAg ICAgIGJyZWFrOw0KPiA+Pj4gKyAgICBjYXNlIEVGSV9BQ1BJX01QQU1fTE9DQVRJT05fTUVNT1JZ Og0KPiA+Pj4gKyAgICAgIFByaW50R2VuZXJpY0xvY2F0b3JEZXNjcmlwdG9yICgNCj4gPj4+ICsg ICAgICAgIDQsDQo+ID4+PiArICAgICAgICBMIk1lbW9yeSIsDQo+ID4+PiArICAgICAgICBMIiog UHJveGltaXR5IGRvbWFpbiIsDQo+ID4+PiArICAgICAgICBMIiogUmVzZXJ2ZWQiLA0KPiA+Pj4g KyAgICAgICAgTG9jYXRvclB0ciwNCj4gPj4+ICsgICAgICAgIFRSVUUNCj4gPj4+ICsgICAgICAg ICk7DQo+ID4+PiArICAgICAgYnJlYWs7DQo+ID4+PiArICAgIGNhc2UgRUZJX0FDUElfTVBBTV9M T0NBVElPTl9TTU1VOg0KPiA+Pj4gKyAgICAgIFByaW50R2VuZXJpY0xvY2F0b3JEZXNjcmlwdG9y ICgNCj4gPj4+ICsgICAgICAgIDQsDQo+ID4+PiArICAgICAgICBMIlNNTVUiLA0KPiA+Pj4gKyAg ICAgICAgTCIqIFNNTVUgaW50ZXJmYWNlIiwNCj4gPj4+ICsgICAgICAgIEwiKiBSZXNlcnZlZCIs DQo+ID4+PiArICAgICAgICBMb2NhdG9yUHRyLA0KPiA+Pj4gKyAgICAgICAgVFJVRQ0KPiA+Pj4g KyAgICAgICAgKTsNCj4gPj4+ICsgICAgICBicmVhazsNCj4gPj4+ICsgICAgY2FzZSBFRklfQUNQ SV9NUEFNX0xPQ0FUSU9OX01FTU9SWV9DQUNIRToNCj4gPj4NCj4gPj4gVGhlIGNvZGUgd291bGQg YmUgbW9yZSBnZW5lcmljIHdpdGggQUNQSV9QQVJTRVIgc3RydWN0dXJlcyBJIHRoaW5rDQo+ID4N Cj4gPiBbUm9oaXRdIEkgYmVsaWV2ZSBBQ1BJX1BBUlNFUiB3b24ndCBwYXJzZSBNZW1vcnktc2lk ZSBjYWNoZSBsb2NhdG9yDQo+IGRlc2NyaXB0b3IgZHVlIHRvIGl0cyBvZGQgZmllbGQgbGVuZ3Ro Lg0KPiANCj4gSSB0aGluayB0aGVyZSBpcyBhIHNpbWlsYXIgY2FzZSBmb3IgdGhlIFJlc2VydmVk IGZpZWxkIG9mIHRoZSAnR1QgQmxvY2sgVGltZXINCj4gU3RydWN0dXJlJywNCj4gQ2YgQUNQSSA2 LjUsIFRhYmxlIDUuMTIxOiBHVCBCbG9jayBUaW1lciBTdHJ1Y3R1cmUgRm9ybWF0DQo+IGFuZCBp biB0aGUgR3RkdFBhcnNlciBmb3IgdGhlIEd0QmxvY2tUaW1lclBhcnNlciBzdHJ1Y3R1cmUuDQo+ IA0KPiBBIER1bXA3Q2hhcnMgZnVuY3Rpb24gd291bGQgbmVlZCB0byBiZSBhZGRlZCBmb3Igb3Vy IGNhc2UgSSBiZWxlaXZlLg0KPiANCg0KW1JvaGl0XSBJZiB3ZSBhcmUgdG8gZ28gd2l0aCB0aGUg QUNQSV9QQVJTRVJTLCBJIGNhbiBhZGQgdGhpcy4gSSBkbyBoYXZlIGEgY29uY2VybiBvbiB1c2lu ZyBBQ1BJX1BBUlNFUiB3aGljaCBJIGhhdmUgYWRkZWQgYWJvdmUuDQoNCj4gPg0KPiA+IC8vIHNu aXBwZXQgZnJvbSBBQ1BJX1BBUlNFUidzIGNvZGUNCj4gPg0KPiA+ICAgICAgICAgc3dpdGNoIChQ YXJzZXJbSW5kZXhdLkxlbmd0aCkgew0KPiA+ICAgICAgICAgICAgY2FzZSAxOg0KPiA+ICAgICAg ICAgICAgICBEdW1wVWludDggKFBhcnNlcltJbmRleF0uRm9ybWF0LCBQdHIpOw0KPiA+ICAgICAg ICAgICAgICBicmVhazsNCj4gPiAgICAgICAgICAgIGNhc2UgMjoNCj4gPiAgICAgICAgICAgICAg RHVtcFVpbnQxNiAoUGFyc2VyW0luZGV4XS5Gb3JtYXQsIFB0cik7DQo+ID4gICAgICAgICAgICAg IGJyZWFrOw0KPiA+ICAgICAgICAgICAgY2FzZSA0Og0KPiA+ICAgICAgICAgICAgICBEdW1wVWlu dDMyIChQYXJzZXJbSW5kZXhdLkZvcm1hdCwgUHRyKTsNCj4gPiAgICAgICAgICAgICAgYnJlYWs7 DQo+ID4gICAgICAgICAgICBjYXNlIDg6DQo+ID4gICAgICAgICAgICAgIER1bXBVaW50NjQgKFBh cnNlcltJbmRleF0uRm9ybWF0LCBQdHIpOw0KPiA+ICAgICAgICAgICAgICBicmVhazsNCj4gPiAg ICAgICAgICAgIGRlZmF1bHQ6DQo+ID4gICAgICAgICAgICAgIFByaW50ICgNCj4gPiAgICAgICAg ICAgICAgICBMIlxuRVJST1I6ICVhOiBDQU5OT1QgUEFSU0UgVEhJUyBGSUVMRCwgRmllbGQgTGVu Z3RoID0gJWRcbiIsDQo+ID4gICAgICAgICAgICAgICAgQXNjaWlOYW1lLA0KPiA+ICAgICAgICAg ICAgICAgIFBhcnNlcltJbmRleF0uTGVuZ3RoDQo+ID4gICAgICAgICAgICAgICAgKTsNCj4gPiAg ICAgICAgICB9IC8vIHN3aXRjaA0KPiA+DQo+ID4gSSBoYXZlIG5vdCB0ZXN0ZWQgdGhpcyAtIGJ1 dCBJIGRvIHJlbWVtYmVyIHNlZWluZyBzdWNoIGEgYmVoYXZpb3IgZm9yDQo+IEludGVyY29ubmVj dCBkZXNjcmlwdG9yJ3MgcmVzZXJ2ZWQgZmllbGQuDQo+ID4NCj4gPj4NCj4gPj4+ICsgICAgICAv LyBQcmludEdlbmVyaWNMb2NhdG9yRGVzY3JpcHRvciBjYW4ndCBiZSB1c2VkIGhlcmUgYXMgdGhl IGZpZWxkcw0KPiA+Pj4gKyAgICAgIC8vIEZvciBhIG1lbW9yeSBjYWNoZSBsb2NhdG9yIGRlc2Ny aXB0b3IgZG9uJ3QgZmFsbCBpbiB0aGUgNjRiaXQtMzIgYml0DQo+ID4+PiArICAgICAgLy8gZmll bGQgbGVuZ3RoIGRpdmlzaW9uLiBQYXJzZSB0aGVzZSBmaWVsZHMgbWFudWFsbHkuDQo+ID4+PiAr ICAgICAgUHJpbnRMb2NhdG9yVGl0bGUgKDQsIEwiTWVtb3J5IGNhY2hlIik7DQo+ID4+PiArDQo+ ID4+PiArICAgICAgLy8gUGFyc2UgZmllbGQgMQ0KPiA+Pj4gKyAgICAgIFByaW50TG9jYXRvckRl c2NyaXB0b3I2NCAoDQo+ID4+PiArICAgICAgICA0LA0KPiA+Pj4gKyAgICAgICAgTCIqIFJlc2Vy dmVkIiwNCj4gPj4+ICsgICAgICAgIE1QQU1fTUVNT1JZX0xPQ0FUT1JfRVhUUkFDVF9SRVNFUlZF RF9GSUVMRCAoDQo+ID4+PiArICAgICAgICAgICooKFVJTlQ2NCAqKShMb2NhdG9yUHRyKSkNCj4g Pj4+ICsgICAgICAgICAgKSwNCj4gPj4+ICsgICAgICAgIFRSVUUNCj4gPj4+ICsgICAgICAgICk7 DQo+ID4+PiArDQo+ID4+PiArICAgICAgLy8gUGFyc2UgZmllbGQgMg0KPiA+Pj4gKyAgICAgIFBy aW50TG9jYXRvckRlc2NyaXB0b3I2NCAoDQo+ID4+PiArICAgICAgICA0LA0KPiA+Pj4gKyAgICAg ICAgTCIqIExldmVsIiwNCj4gPj4+ICsgICAgICAgIE1QQU1fTUVNT1JZX0xPQ0FUT1JfRVhUUkFD VF9MRVZFTF9GSUVMRCAoDQo+ID4+PiArICAgICAgICAgICooKFVJTlQ2NCAqKShMb2NhdG9yUHRy KSkNCj4gPj4+ICsgICAgICAgICAgKSwNCj4gPj4+ICsgICAgICAgIEZBTFNFDQo+ID4+PiArICAg ICAgICApOw0KPiA+Pj4gKw0KPiA+Pj4gKyAgICAgIExvY2F0b3JQdHIgKz0gc2l6ZW9mIChVSU5U NjQpOw0KPiA+Pj4gKw0KPiA+Pj4gKyAgICAgIC8vIFBhcnNlIGZpZWxkIDMNCj4gPj4+ICsgICAg ICBQcmludExvY2F0b3JEZXNjcmlwdG9yMzIgKA0KPiA+Pj4gKyAgICAgICAgNCwNCj4gPj4+ICsg ICAgICAgIEwiKiBSZWZlcmVuY2UiLA0KPiA+Pj4gKyAgICAgICAgKigoVUlOVDMyICopKExvY2F0 b3JQdHIpKSwNCj4gPj4+ICsgICAgICAgIEZBTFNFDQo+ID4+PiArICAgICAgICApOw0KPiA+Pj4g KyAgICAgIGJyZWFrOw0KPiA+Pj4gKyAgICBjYXNlIEVGSV9BQ1BJX01QQU1fTE9DQVRJT05fQUNQ SV9ERVZJQ0U6DQo+ID4+PiArICAgICAgLy8gQUNQSSBoYXJkd2FyZSBJRCB3b3VsZCBoYXZlIHRv IHByaW50ZWQgdmlhIER1bXA4Q2hhcnMuDQo+ID4+PiArICAgICAgUHJpbnRMb2NhdG9yVGl0bGUg KDQsIEwiQUNQSSBkZXZpY2UiKTsNCj4gPj4+ICsgICAgICBQcmludEZpZWxkTmFtZSAoNCwgTCIq IEFDUEkgaGFyZHdhcmUgSUQiKTsNCj4gPj4+ICsgICAgICBEdW1wOENoYXJzIChOVUxMLCBMb2Nh dG9yUHRyKTsNCj4gPj4+ICsgICAgICBQcmludCAoTCJcbiIpOw0KPiA+Pj4gKw0KPiA+Pj4gKyAg ICAgIExvY2F0b3JQdHIgKz0gc2l6ZW9mIChVSU5UNjQpOw0KPiA+Pj4gKw0KPiA+Pj4gKyAgICAg IC8vIFBhcnNlIGZpZWxkIDINCj4gPj4+ICsgICAgICBQcmludExvY2F0b3JEZXNjcmlwdG9yMzIg KA0KPiA+Pj4gKyAgICAgICAgNCwNCj4gPj4+ICsgICAgICAgIEwiKiBBQ1BJIHVuaXF1ZSBJRCIs DQo+ID4+PiArICAgICAgICAqKChVSU5UMzIgKikoTG9jYXRvclB0cikpLA0KPiA+Pj4gKyAgICAg ICAgRkFMU0UNCj4gPj4+ICsgICAgICAgICk7DQo+ID4+PiArICAgICAgYnJlYWs7DQo+ID4+PiAr ICAgIGNhc2UgRUZJX0FDUElfTVBBTV9MT0NBVElPTl9JTlRFUkNPTk5FQ1Q6DQo+ID4+DQo+ID4+ IEkgbSBub3Qgc3VyZSBJIHVuZGVyc3RhbmQgd2h5IFBhcnNlSW50ZXJjb25uZWN0RGVzY3JpcHRv clRhYmxlICgpDQo+ID4+IGlzIG5vdCBjYWxsZWQgZnJvbSBoZXJlIGFzIHRoZSBwb2ludGVyIHRv IHRoZSBzdHJ1Y3QgaXMgYXZhaWxhYmxlIGhlcmUuDQo+ID4+DQo+ID4NCj4gPiBbUm9oaXRdIEFs bCBvZiB0aGUgbG9jYXRvcnMgZXhjZXB0IGludGVyY29ubmVjdCBsb2NhdG9yIGhhdmUgdmVyeSBz aW1wbGUNCj4gcGFyc2luZyBmb3IgdGhlaXIgZmllbGRzLiBUaGlzIHdvdWxkIG1lYW4ga2VlcGlu ZyB0aGUgcHJvdG90eXBlIGZvcg0KPiBQYXJzZUxvY2F0b3Igc2ltcGxlIHdpdGhvdXQgYW55IHBh cmFtcyByZWxhdGVkIHRvIEFDUEkgcGFyc2VyIHBvaW50ZXIsIG9mZnNldA0KPiBldGMgcHJvdmlk ZWQgd2Ugb2ZmbG9hZCB0aGUgaW50ZXJjb25uZWN0IGRlc2NyaXB0b3IncyBpbnRlcm5hbCBwYXJz aW5nIHRvIGENCj4gc2NvcGUgd2hlcmUgd2UgaGF2ZSB0aGVzZSBmaWVsZHMgYXZhaWxhYmxlLiBX ZSBjb3VsZCB2ZXJ5IHdlbGwgZG8gdGhlIHBhcnNpbmcNCj4gaW50ZXJuYWxseSAtIGhvd2V2ZXIg dGhpcyB3b3VsZCBtZWFuIGNoYW5naW5nIHRoZSBwcm90b3R5cGUganVzdCBmb3INCj4gaW50ZXJj b25uZWN0IGRlc2NyaXB0b3IgbG9jYXRvci4NCj4gPg0KPiA+IFRoZSBwcm90b3R5cGUgY2hhbmdl IGlzIHR3b2ZvbGQgKHJldHVybiBhbmQgcGFyYW1zKS4gV2l0aG91dA0KPiBQYXJzZUludGVyY29u bmVjdERlc2NyaXB0b3JUYWJsZSwgd2UgY291bGQgZ2V0IGF3YXkgd2l0aG91dCByZXR1cm5pbmcN Cj4gYW55dGhpbmcuIEhvd2V2ZXIsIGlmIHdlIGhhdmUgUGFyc2VJbnRlcmNvbm5lY3REZXNjcmlw dG9yVGFibGUgaGFuZGxlZA0KPiB3aXRoaW4gUGFyc2VMb2NhdG9yLCB3ZSB3b3VsZCBuZWVkIHRv IGhhbmRsZSB0aGUgcmV0dXJuIGFzIHdlbGwuIFNpbmNlDQo+IGludGVyY29ubmVjdCBsb2NhdG9y IGlzIGFuIGV4Y2VwdGlvbiB3aXRoIHJlc3BlY3QgdG8gYWxsIG90aGVyIGxvY2F0b3JzLCBpdCBp cw0KPiBoYW5kbGVkIGFzIGFuIGV4Y2VwdGlvbiBvdXRzaWRlIG9mIFBhcnNlTG9jYXRvci4gSWYg d2UgaGFkIHF1aXRlIGEgbG90IG9mDQo+IGxvY2F0b3JzIHdpdGggZGV0YWlsZWQgaW50ZXJuYWwg cGFyc2luZywgd2Ugc2hvdWxkIGhhdmUgaGFuZGxlZCB0aGlzIGludGVybmFsbHkuDQo+IA0KPiBN YXliZSB0aGVyZSdzIHNvbWV0aGluZyBJIGRvbid0IHVuZGVyc3RhbmQgY29ycmVjdGx5LCBidXQg SSB0aGluayBJIG0gcmVhZGluZw0KPiB0aGUgY29kZSB3aGlsZSBpbiB0aGUgb3B0aWMgb2YgaGF2 aW5nIGEgQUNQSV9QQVJTRVINCj4gc3RydWN0dXJlIChhbmQgYSBQcmludEZvcm1hdHRlcikgZm9y IGVhY2ggbG9jYXRvci4gSW4gdGhpcyBjYXNlLCBmcm9tIHdpdGhpbiB0aGUNCj4gaW50ZXJjb25u ZWN0IGxvY2F0b3IgcGFyc2VyLCB0aGUgb2Zmc2V0IG9mIHRoZQ0KPiBJbnRlcmNvbm5lY3QgZGVz Y3JpcHRvciBpcyBhdmFpbGFibGUgYW5kIGNvdWxkIGJlIHBhcnNlZCB1c2luZyBhbm90aGVyDQo+ IEFDUElfUEFSU0VSIHN0cnVjdHVyZS4NCj4gSSBtIG5vdCBzdXJlIHdoYXQgSSBzYXkgaXMgcmVh bGx5IGNsZWFyLCBwbGVhc2UgcGluZyBtZSBpbiBjYXNlIGl0J3Mgbm90Lg0KPiANCg0KW1JvaGl0 XSBJIG1pc3NlZCBhbm90aGVyIGFzcGVjdCBmb3IgbW92aW5nIHRoaXMgb3V0LiBXZSB3b3VsZCBu ZWVkIHRoZSBmdW5jdGlvbmFsIGRlcGVuZGVuY2llcyBwYXJzZWQgYW5kIHByaW50ZWQgYmVmb3Jl IGhhdmluZyBpbnRlcmNvbm5lY3QgZGVzY3JpcHRvcnMgcGFyc2VkLiBUaGUgcmVhc29uIGJlaW5n IE1QQU0gTXNjIGJvZHkgaXMgZm9sbG93ZWQgYnkgTVBBTSBNU0MgcmVzb3VyY2UuIE1QQU0gTVND IHJlc291cmNlIGlzIGZvbGxvd2VkIGJ5IE1QQU0gcmVzb3VyY2UgZnVuY3Rpb25hbCBkZXBlbmRl bmN5IGxpc3QgKGZyb20gdGhlIHNwZWMpLiBUaGUgaW50ZXJjb25uZWN0IGRlc2NyaXB0b3JzIGFy ZSBvbmx5IHBsYWNlZCBhZnRlciB0aGUgZnVuY3Rpb25hbCBkZXBlbmRlbmN5IGxpc3QuIA0KDQo+ ID4NCj4gPj4+ICsgICAgICBQcmludEdlbmVyaWNMb2NhdG9yRGVzY3JpcHRvciAoDQo+ID4+PiAr ICAgICAgICA0LA0KPiA+Pj4gKyAgICAgICAgTCJJbnRlcmNvbm5lY3QiLA0KPiA+Pj4gKyAgICAg ICAgTCIqIEludGVyY29ubmVjdCBkZXNjIHRibCBvZmZzZXQiLA0KPiA+Pj4gKyAgICAgICAgTCIq IFJlc2VydmVkIiwNCj4gPj4+ICsgICAgICAgIExvY2F0b3JQdHIsDQo+ID4+PiArICAgICAgICBU UlVFDQo+ID4+PiArICAgICAgICApOw0KPiA+Pj4gKyAgICAgIGJyZWFrOw0KPiA+Pj4gKyAgICBj YXNlIEVGSV9BQ1BJX01QQU1fTE9DQVRJT05fVU5LTk9XTjoNCj4gPj4+ICsgICAgICBQcmludEdl bmVyaWNMb2NhdG9yRGVzY3JpcHRvciAoDQo+ID4+PiArICAgICAgICA0LA0KPiA+Pj4gKyAgICAg ICAgTCJVbmtub3duIiwNCj4gPj4+ICsgICAgICAgIEwiKiBEZXNjcmlwdG9yMSIsDQo+ID4+PiAr ICAgICAgICBMIiogRGVzY3JpcHRvcjIiLA0KPiA+Pj4gKyAgICAgICAgTG9jYXRvclB0ciwNCj4g Pj4+ICsgICAgICAgIEZBTFNFDQo+ID4+PiArICAgICAgICApOw0KPiA+Pj4gKyAgICAgIGJyZWFr Ow0KPiA+Pj4gKyAgICBkZWZhdWx0Og0KPiA+Pj4gKyAgICAgIFByaW50IChMIlxuV0FSTklORyA6 IFJlc2VydmVkIGxvY2F0b3IgdHlwZVxuIik7DQo+ID4+PiArDQo+ID4+PiArICAgICAgSW5jcmVt ZW50V2FybmluZ0NvdW50ICgpOw0KPiA+Pj4gKyAgICAgIGJyZWFrOw0KPiA+Pj4gKyAgfSAvLyBz d2l0Y2gNCj4gPj4+ICt9DQo+ID4+PiArDQo+ID4+PiArLyoqDQo+ID4+PiArICBQcmludEJsb2Nr VGl0bGUgY291bGQgYmUgdXNlZCB0byBwcmludCB0aGUgdGl0bGUgb2YgYmxvY2tzIHRoYXQNCj4g Pj4+ICsgIGFwcGVhciBtb3JlIHRoYW4gb25jZSBpbiB0aGUgTVBBTSBBQ1BJIHRhYmxlLg0KPiA+ Pj4gKw0KPiA+Pj4gKyAgQHBhcmFtIFtpbl0gSW5kZW50ICAgICAgICAgICAgICBOdW1iZXIgb2Yg c3BhY2VzIHRvIGFkZCB0byB0aGUgZ2xvYmFsIHRhYmxlDQo+ID4+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGluZGVudC4gVGhlIGdsb2JhbCB0YWJsZSBpbmRlbnQgaXMgMCBi eQ0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OyBob3dl dmVyIHRoaXMgdmFsdWUgaXMgdXBkYXRlZCBvbg0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBlbnRyeSB0byB0aGUgUGFyc2VBY3BpKCkgYnkgYWRkaW5nIHRoZSBpbmRl bnQNCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgcHJvdmlk ZWQgdG8gUGFyc2VBY3BpKCkgYW5kIHJlc3RvcmVkDQo+ID4+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGJhY2sgb24gZXhpdC4gIFRoZXJlZm9yZSB0aGUgdG90YWwgaW5kZW50 IGluDQo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBvdXRwdXQg aXMgZGVwZW5kZW50IG9uIGZyb20gd2hlcmUgdGhpcw0KPiA+Pj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmdW5jdGlvbiBpcyBjYWxsZWQuDQo+ID4+PiArICBAcGFyYW0gW2lu XSBUaXRsZSAgICAgICAgICAgICAgIFRpdGxlIHN0cmluZyB0byBiZSB1c2VkIGZvciB0aGUgYmxv Y2suDQo+ID4+PiArICBAcGFyYW0gW2luXSBJbmRleCAgICAgICAgICAgICAgIEluZGV4IG9mIHRo ZSBibG9jay4NCj4gPj4+ICsqKi8NCj4gPj4+ICtTVEFUSUMNCj4gPj4+ICtWT0lEDQo+ID4+PiAr RUZJQVBJDQo+ID4+PiArUHJpbnRCbG9ja1RpdGxlICgNCj4gPj4+ICsgIElOIFVJTlQzMiAgICAg ICAgSW5kZW50LA0KPiA+Pj4gKyAgSU4gQ09OU1QgQ0hBUjE2ICAqVGl0bGUsDQo+ID4+PiArICBJ TiBDT05TVCBVSU5UMzIgIEluZGV4DQo+ID4+PiArICApDQo+ID4+PiArew0KPiA+Pj4gKyAgUHJp bnQgKEwiXG4iKTsNCj4gPj4+ICsgIFByaW50RmllbGROYW1lIChJbmRlbnQsIFRpdGxlKTsNCj4g Pj4+ICsgIFByaW50IChMIiV1XG5cbiIsIEluZGV4KTsNCj4gPj4+ICt9DQo+ID4+PiArDQo+ID4+ PiArLyoqDQo+ID4+DQo+ID4+IGFzc3NvY2lhdGVkIC0+IGFzc29jaWF0ZWQNCj4gPj4gSSB0aGlu ayB0aGlzIG1pZ2h0IGJlIGNhdWdodCBieSBydW5uaW5nIHRoZSBDSSBsb2NhbGx5IG9uIHRoZSBT aGVsbFBrZw0KPiA+PiBvciBieSBtYWtpbmcgYSAnZmFrZScgcHVsbCByZXF1ZXN0IHRvIHRyaWdn ZXIgdGhlIGVkazIgdXBzdHJlYW0gQ0kuDQo+ID4NCj4gPg0KPiA+IFtSb2hpdF0gQWNrLiBJIGRp ZCBydW4gVW5jcnVzdGlmeSBhbmQgc3RhdXJ0IENJLiBJIHZlcnkgd2VsbCBjb3VsZCBoYXZlIG1p c3NlZA0KPiB0aGlzIGJpdC4gVGhhbmtzIGZvciB0aGUgaGludC4NCj4gPg0KPiA+Pg0KPiA+Pj4g KyAgVGhpcyBmdW5jdGlvbiBwYXJzZXMgdGhlIGludGVyY29ubmVjdCBkZXNjcmlwdG9yKHMpIGFz c3NvY2lhdGVkIHdpdGgNCj4gPj4+ICsgIGFuIGludGVyY29ubmVjdCB0eXBlIGxvY2F0b3Igb2Jq ZWN0Lg0KPiA+Pj4gKw0KPiA+Pj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAgICAgIFBv aW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4+PiArICBAcGFyYW0gW2luXSBB Y3BpVGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+Pj4gKyAgQHBh cmFtIFtpbl0gT2Zmc2V0ICAgICAgICAgICAgIFBvaW50ZXIgdG8gY3VycmVudCBvZmZzZXQgd2l0 aGluIFB0ci4NCj4gPj4+ICsNCj4gPj4+ICtSZXR1cm5zOg0KPiA+Pj4gKw0KPiA+Pj4gKyAgU3Rh dHVzDQo+ID4+PiArDQo+ID4+PiArICBFRklfU1VDQ0VTUyAgICAgICAgICAgICAgICAgICAgTVBB TSBNU0MgTm9kZXMgd2VyZSBwYXJzZWQgcHJvcGVybHkuDQo+ID4+PiArICBFRklfQkFEX0JVRkZF Ul9TSVpFICAgICAgICAgICAgVGhlIGJ1ZmZlciBwb2ludGVyIHByb3ZpZGVkIGFzIGlucHV0IGlz IG5vdA0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZW5vdWdo IHRvIGJlIHBhcnNlZCBjb3JyZWN0bHkuDQo+ID4+PiArKiovDQo+ID4+PiArU1RBVElDDQo+ID4+ PiArRUZJX1NUQVRVUw0KPiA+Pj4gK0VGSUFQSQ0KPiA+Pj4gK1BhcnNlSW50ZXJjb25uZWN0RGVz Y3JpcHRvcnMgKA0KPiA+Pj4gKyAgSU4gVUlOVDggICAqUHRyLA0KPiA+Pj4gKyAgSU4gVUlOVDMy ICBBY3BpVGFibGVMZW5ndGgsDQo+ID4+PiArICBJTiBVSU5UMzIgICpPZmZzZXQNCj4gPj4+ICsg ICkNCj4gPj4+ICt7DQo+ID4+PiArICBVSU5UMzIgIEludGVyY29ubmVjdERlc2NyaXB0b3JJbmRl eDsNCj4gPj4+ICsgIFVJTlQzMiAgUmVzZXJ2ZWQ7DQo+ID4+PiArDQo+ID4+PiArICBJbnRlcmNv bm5lY3REZXNjcmlwdG9ySW5kZXggPSAwOw0KPiA+Pj4gKw0KPiA+Pj4gKyAgLy8gUGFyc2UgTVBB TSBNU0MgcmVzb3VyY2VzIHdpdGhpbiB0aGUgTVNDIGJvZHkNCj4gPj4NCj4gPj4gSSBtIG5vdCBz dXJlIHRoaXMgY2FzZSBpcyBwb3NzaWJsZSBhcyBOdW1iZXJPZkludGVyY29ubmVjdERlc2NyaXB0 b3JzIGlzDQo+ID4+IHN0YXRpY2FsbHkgZGVmaW5lZC4NCj4gPj4NCj4gPg0KPiA+IFtSb2hpdF0g SSBoYXZlIHJlc3BvbmRlZCB0byBjb21tZW50cyBmb3INCj4gTnVtYmVyT2ZGdW5jdGlvbmFsRGVw ZW5kZW5jaWVzIGFuZCBNcGFtTXNjTm9kZUxlbmd0aCBhZGRyZXNzaW5nDQo+IHRoaXMgY29uY2Vy bi4gU29ycnksIEkgaGFkIHRvIHN0YXJ0IGZyb20gdGhlIGJvdHRvbSB3aGlsZSBhZGRyZXNzaW5n IGNvbW1lbnRzDQo+IGFzIHRoYXQgaGVscGVkIHdpdGggdGhlIGNvZGUgZmxvdyA6KQ0KPiANCj4g T2sgeWVzIG5vIHdvcnJpZXMgOikNCj4gDQo+ID4NCj4gPj4+ICsgIGlmIChOdW1iZXJPZkludGVy Y29ubmVjdERlc2NyaXB0b3JzID09IE5VTEwpIHsNCj4gPj4+ICsgICAgTXBhbUxlbmd0aEVycm9y IChMIk51bWJlciBvZiBpbnRlcmNvbm5lY3QgZGVzY3JpcHRvcnMgbm90IHNldCEiKTsNCj4gPj4+ ICsgICAgcmV0dXJuIEVGSV9CQURfQlVGRkVSX1NJWkU7DQo+ID4+PiArICB9DQo+ID4+PiArDQo+ ID4+PiArICB3aGlsZSAoSW50ZXJjb25uZWN0RGVzY3JpcHRvckluZGV4IDwNCj4gKk51bWJlck9m SW50ZXJjb25uZWN0RGVzY3JpcHRvcnMpDQo+ID4+IHsNCj4gPj4+ICsgICAgUHJpbnRCbG9ja1Rp dGxlICgNCj4gPj4+ICsgICAgICA2LA0KPiA+Pj4gKyAgICAgIEwiKiBJbnRlcmNvbm5lY3QgZGVz Y3JpcHRvciAqIiwNCj4gPj4+ICsgICAgICBJbnRlcmNvbm5lY3REZXNjcmlwdG9ySW5kZXgNCj4g Pj4+ICsgICAgICApOw0KPiA+Pj4gKw0KPiA+Pj4gKyAgICAvLyBQYXJzZSBpbnRlcmNvbm5lY3Qg ZGVzY3JpcHRvcg0KPiA+Pj4gKyAgICAqT2Zmc2V0ICs9IFBhcnNlQWNwaSAoDQo+ID4+PiArICAg ICAgICAgICAgICAgICBUUlVFLA0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgNCwNCj4gPj4+ICsg ICAgICAgICAgICAgICAgIE5VTEwsDQo+ID4+PiArICAgICAgICAgICAgICAgICBQdHIgKyAqT2Zm c2V0LA0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgQWNwaVRhYmxlTGVuZ3RoIC0gKk9mZnNldCwN Cj4gPj4+ICsgICAgICAgICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKE1wYW1JbnRlcmNvbm5lY3RE ZXNjcmlwdG9yUGFyc2VyKQ0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgKTsNCj4gPj4+ICsNCj4g Pj4+ICsgICAgUmVzZXJ2ZWQgPSAqKChVSU5UMzIgKikoUHRyICsgKk9mZnNldCkpICYgMHgwMEZG RkZGRjsNCj4gPj4+ICsgICAgUHJpbnRGaWVsZE5hbWUgKDYsIEwiUmVzZXJ2ZWQiKTsNCj4gPj4+ ICsgICAgUHJpbnQgKEwiJXVcbiIsIFJlc2VydmVkKTsNCj4gPj4+ICsgICAgVmFsaWRhdGVSZXNl cnZlZCAoUmVzZXJ2ZWQpOw0KPiA+Pj4gKyAgICAqT2Zmc2V0ICs9IDM7DQo+ID4+PiArDQo+ID4+ PiArICAgIEludGVyY29ubmVjdERlc2NyaXB0b3JJbmRleCsrOw0KPiA+Pj4gKyAgfQ0KPiA+Pj4g Kw0KPiA+Pj4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+Pj4gK30NCj4gPj4+ICsNCj4gPj4+ ICsvKioNCj4gPj4+ICsgIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBpbnRlcmNvbm5lY3QgZGVz Y3JpcHRvciB0YWJsZSBhc3Nzb2NpYXRlZCB3aXRoDQo+IGFuDQo+ID4+PiArICBpbnRlcmNvbm5l Y3QgdHlwZSBsb2NhdG9yIG9iamVjdC4gSXQgYWxzbyBwZXJmb3JtcyBuZWNlc3NhcnkgdmFsaWRh dGlvbiB0bw0KPiA+Pj4gKyAgbWFrZSBzdXJlIHRoZSBpbnRlcmNvbm5lY3QgZGVzY3JpcHRvciBp cyBhdCBhIHZhbGlkIGxvY2F0aW9uLg0KPiA+Pj4gKw0KPiA+Pj4gKyAgQHBhcmFtIFtpbl0gUHRy ICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4+ PiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRh YmxlLg0KPiA+Pj4gKyAgQHBhcmFtIFtpbl0gT2Zmc2V0ICAgICAgICAgICAgIFBvaW50ZXIgdG8g Y3VycmVudCBvZmZzZXQgd2l0aGluIFB0ci4NCj4gPj4+ICsgIEBwYXJhbSBbaW5dIEludGVyY29u bmVjdE9mZnNldCBPZmZzZXQgdG8gdGhlIGludGVyY29ubmVjdCBkZXNjcmlwdG9yDQo+ID4+IHRh YmxlLg0KPiA+Pj4gKw0KPiA+Pj4gK1JldHVybnM6DQo+ID4+PiArDQo+ID4+PiArICBTdGF0dXMN Cj4gPj4+ICsNCj4gPj4+ICsgIEVGSV9TVUNDRVNTICAgICAgICAgICAgICAgICAgICBNUEFNIE1T QyBOb2RlcyB3ZXJlIHBhcnNlZCBwcm9wZXJseS4NCj4gPj4+ICsgIEVGSV9CQURfQlVGRkVSX1NJ WkUgICAgICAgICAgICBUaGUgYnVmZmVyIHBvaW50ZXIgcHJvdmlkZWQgYXMgaW5wdXQgaXMgbm90 DQo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBlbm91Z2ggdG8g YmUgcGFyc2VkIGNvcnJlY3RseS4NCj4gPj4+ICsgIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgICAg ICAgICBUaGUgT2Zmc2V0IHBhcmFtZXRlciBlbmNvZGVkIHdpdGhpbg0KPiB0aGUNCj4gPj4gUHRy DQo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyIGlzIG5vdCB2 YWxpZC4NCj4gPj4+ICsqKi8NCj4gPj4+ICtTVEFUSUMNCj4gPj4+ICtFRklfU1RBVFVTDQo+ID4+ PiArRUZJQVBJDQo+ID4+PiArUGFyc2VJbnRlcmNvbm5lY3REZXNjcmlwdG9yVGFibGUgKA0KPiA+ Pj4gKyAgSU4gVUlOVDggICAqUHRyLA0KPiA+Pj4gKyAgSU4gVUlOVDMyICBBY3BpVGFibGVMZW5n dGgsDQo+ID4+PiArICBJTiBVSU5UMzIgICpPZmZzZXQsDQo+ID4+PiArICBJTiBVSU5UNjQgIElu dGVyY29ubmVjdE9mZnNldA0KPiA+Pj4gKyAgKQ0KPiA+Pj4gK3sNCj4gPj4+ICsgIEVGSV9TVEFU VVMgIFN0YXR1czsNCj4gPj4+ICsNCj4gPj4+ICsgIC8vIFRoZSBzcGVjaWZpY2F0aW9uIGRvZXNu J3Qgc3RyaWN0bHkgc3RhdGUgdGhhdCB0aGUgaW50ZXJjb25uZWN0IHRhYmxlIGJlDQo+ID4+PiAr ICAvLyBwbGFjZWQgZXhhY3RseSBhZnRlciBzYXksIGZ1bmN0aW9uYWwgZGVwZW5kZW5jeSB0YWJs ZSBvciB0aGUgcmVzb3VyY2UNCj4gPj4gbm9kZS4NCj4gPj4+ICsgIC8vIEluc3RlYWQsIHRoZSBp bnRlcmNvbm5lY3QgbG9jYXRvcidzIGRlc2NyaXB0b3IgZmllbGQgMSBnaXZlcyB0aGUgb2Zmc2V0 DQo+ID4+PiArICAvLyBmcm9tIHRoZSBzdGFydCBvZiB0aGUgTVNDIG5vZGUgd2hlcmUgdGhlIHRh YmxlIGNvdWxkIGJlIGZvdW5kLg0KPiA+Pj4gKyAgaWYgKCpPZmZzZXQgPiAoTXBhbU1zY05vZGVM ZW5ndGhDdW11bGF0aXZlICsNCj4gPj4+ICsgICAgICAgICAgICAgICAgIEludGVyY29ubmVjdE9m ZnNldCArIEhlYWRlclNpemUpKQ0KPiA+Pj4gKyAgew0KPiA+Pj4gKyAgICBJbmNyZW1lbnRFcnJv ckNvdW50ICgpOw0KPiA+Pj4gKyAgICBQcmludCAoTCJcbkVSUk9SIDogUGFyc2luZyBJbnRlcmNv bm5lY3QgZGVzY3JpcHRvciB0YWJsZSBmYWlsZWQhXG4iKTsNCj4gPj4+ICsgICAgUHJpbnQgKA0K PiA+Pj4gKyAgICAgIEwiRVJST1IgOiBPZmZzZXQgb3ZlcmxhcHMgd2l0aCBvdGhlciBvYmplY3Rz IHdpdGhpbiB0aGUgTVNDLiBPZmZzZXQNCj4gPj4gJXUuXG4iLA0KPiA+Pj4gKyAgICAgIEludGVy Y29ubmVjdE9mZnNldA0KPiA+Pj4gKyAgICAgICk7DQo+ID4+PiArDQo+ID4+PiArICAgIHJldHVy biBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4+PiArICB9DQo+ID4+PiArDQo+ID4+PiArICBp ZiAoSW50ZXJjb25uZWN0T2Zmc2V0ID4gKCpNcGFtTXNjTm9kZUxlbmd0aCkpIHsNCj4gPj4+ICsg ICAgSW5jcmVtZW50RXJyb3JDb3VudCAoKTsNCj4gPj4+ICsgICAgUHJpbnQgKEwiXG5FUlJPUiA6 IFBhcnNpbmcgSW50ZXJjb25uZWN0IGRlc2NyaXB0b3IgdGFibGUgZmFpbGVkIVxuIik7DQo+ID4+ PiArICAgIFByaW50ICgNCj4gPj4+ICsgICAgICBMIkVSUk9SIDogT2Zmc2V0IGZhbGxzIG91dHNp ZGUgTVNDJ3Mgc3BhY2UuIE9mZnNldCAldS5cbiIsDQo+ID4+PiArICAgICAgSW50ZXJjb25uZWN0 T2Zmc2V0DQo+ID4+PiArICAgICAgKTsNCj4gPj4+ICsNCj4gPj4+ICsgICAgcmV0dXJuIEVGSV9J TlZBTElEX1BBUkFNRVRFUjsNCj4gPj4+ICsgIH0NCj4gPj4+ICsNCj4gPj4+ICsgICpPZmZzZXQg PSBIZWFkZXJTaXplICsgTXBhbU1zY05vZGVMZW5ndGhDdW11bGF0aXZlICsNCj4gPj4gSW50ZXJj b25uZWN0T2Zmc2V0Ow0KPiA+Pj4gKw0KPiA+Pj4gKyAgUHJpbnQgKEwiXG4iKTsNCj4gPj4+ICsg IFByaW50RmllbGROYW1lICg2LCBMIiogSW50ZXJjb25uZWN0IGRlc2MgdGFibGUgKiIpOw0KPiA+ Pj4gKyAgUHJpbnQgKEwiXG5cbiIpOw0KPiA+Pj4gKw0KPiA+Pj4gKyAgLy8gUGFyc2UgaW50ZXJj b25uZWN0IGRlc2NyaXB0b3IgdGFibGUNCj4gPj4+ICsgICpPZmZzZXQgKz0gUGFyc2VBY3BpICgN Cj4gPj4+ICsgICAgICAgICAgICAgICBUUlVFLA0KPiA+Pj4gKyAgICAgICAgICAgICAgIDQsDQo+ ID4+PiArICAgICAgICAgICAgICAgTlVMTCwNCj4gPj4+ICsgICAgICAgICAgICAgICBQdHIgKyAq T2Zmc2V0LA0KPiA+Pj4gKyAgICAgICAgICAgICAgIEFjcGlUYWJsZUxlbmd0aCAtICpPZmZzZXQs DQo+ID4+PiArICAgICAgICAgICAgICAgUEFSU0VSX1BBUkFNUyAoTXBhbUludGVyY29ubmVjdERl c2NyaXB0b3JUYWJsZVBhcnNlcikNCj4gPj4+ICsgICAgICAgICAgICAgICApOw0KPiA+Pj4gKw0K PiA+Pj4gKyAgU3RhdHVzID0gUGFyc2VJbnRlcmNvbm5lY3REZXNjcmlwdG9ycyAoUHRyLCBBY3Bp VGFibGVMZW5ndGgsIE9mZnNldCk7DQo+ID4+PiArICByZXR1cm4gU3RhdHVzOw0KPiA+Pj4gK30N Cj4gPj4+ICsNCj4gPj4+ICsvKioNCj4gPj4+ICsgIFRoaXMgZnVuY3Rpb24gcGFyc2VzIGFsbCB0 aGUgTVBBTSBmdW5jdGlvbmFsIGRlcGVuZGVuY3kgbm9kZXMgd2l0aGluDQo+IGENCj4gPj4+ICsg IHNpbmdsZSByZXNvdXJjZSBub2RlLg0KPiA+Pj4gKw0KPiA+Pj4gKyAgQHBhcmFtIFtpbl0gUHRy ICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4+ PiArICBAcGFyYW0gW2luXSBBY3BpVGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRh YmxlLg0KPiA+Pj4gKyAgQHBhcmFtIFtpbl0gT2Zmc2V0ICAgICAgICAgICAgIFBvaW50ZXIgdG8g Y3VycmVudCBvZmZzZXQgd2l0aGluIFB0ci4NCj4gPj4+ICsNCj4gPj4+ICtSZXR1cm5zOg0KPiA+ Pj4gKw0KPiA+Pj4gKyAgU3RhdHVzDQo+ID4+PiArDQo+ID4+PiArICBFRklfU1VDQ0VTUyAgICAg ICAgICAgICAgICAgICAgTVBBTSBNU0MgTm9kZXMgd2VyZSBwYXJzZWQgcHJvcGVybHkuDQo+ID4+ PiArICBFRklfQkFEX0JVRkZFUl9TSVpFICAgICAgICAgICAgVGhlIGJ1ZmZlciBwb2ludGVyIHBy b3ZpZGVkIGFzIGlucHV0IGlzIG5vdA0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxvbmcgZW5vdWdoIHRvIGJlIHBhcnNlZCBjb3JyZWN0bHkuDQo+ID4+PiArKiovDQo+ ID4+PiArU1RBVElDDQo+ID4+PiArRUZJX1NUQVRVUw0KPiA+Pj4gK0VGSUFQSQ0KPiA+Pj4gK1Bh cnNlTXBhbU1zY0Z1bmN0aW9uYWxEZXBlbmRlbmNpZXMgKA0KPiA+Pj4gKyAgSU4gVUlOVDggICAq UHRyLA0KPiA+Pj4gKyAgSU4gVUlOVDMyICBBY3BpVGFibGVMZW5ndGgsDQo+ID4+PiArICBJTiBV SU5UMzIgICpPZmZzZXQNCj4gPj4+ICsgICkNCj4gPj4+ICt7DQo+ID4+PiArICBVSU5UMzIgIEZ1 bmN0aW9uYWxEZXBlbmRlbmN5SW5kZXg7DQo+ID4+PiArDQo+ID4+PiArICBGdW5jdGlvbmFsRGVw ZW5kZW5jeUluZGV4ID0gMDsNCj4gPj4+ICsNCj4gPj4+ICsgIC8vIFBhcnNlIE1QQU0gTVNDIHJl c291cmNlcyB3aXRoaW4gdGhlIE1TQyBib2R5DQo+ID4+DQo+ID4+IEkgdGhpbmsgdGhpcyBzaG91 bGQgYmUgKCpOdW1iZXJPZkZ1bmN0aW9uYWxEZXBlbmRlbmNpZXMgPT0gMCkNCj4gPg0KPiA+IFtS b2hpdF0gVGhpcyBtb2RlbCBvZiBjaGVjayBpcyBwcmVzZW50IGluIG1vc3Qgb2YgdGhlIHBhcnNl ciBmdW5jdGlvbnMuIFRoaXMgaXMNCj4gYSBjaGVjayB0byBjYXRjaCB0aGUgY2FzZSB3aGVyZSB0 aGUgcG9wdWxhdGVkIE1QQU0gdGFibGUgbGFja3MNCj4gTnVtYmVyT2ZGdW5jdGlvbmFsRGVwZW5k ZW5jaWVzLiBJZiBhIHJlc291cmNlIGhhcyBiZWVuIGRlZmluZWQsIHRoZSB0YWJsZQ0KPiBzaG91 bGQgYmUgbG9uZyBlbm91Z2ggdG8gaGF2ZSBOdW1iZXJPZkZ1bmN0aW9uYWxEZXBlbmRlbmNpZXMg ZGVmaW5lZCwNCj4gd2hldGhlciB6ZXJvIG9yIG5vbi16cmVvLiBUaGlzIGlzIHRoZSByZWFzb24g d2h5IHdlIHRocm93DQo+IE1wYW1MZW5ndGhFcnJvciwgd2hpY2ggaXMgYW4gZXJyb3Igc3BlY2lm aWNhbGx5IGluZGljYXRpbmcgdGhhdCB0aGUgdGFibGUgbGVuZ3RoDQo+IGlzIG5vdCBsb25nIGVu b3VnaCB0byBtYWtlIHRoZSB0YWJsZSB2YWxpZC4NCj4gDQo+IEkgdGhpbmsgaXQgaXMgb2sgdG8g cmVtb3ZlIGl0IGFzIHRoZSBDb250ZXh0IGNhbiBkaXJlY3RseSBiZSByZWFkIGZyb20gdGhlDQo+ IEFDUElfUEFSU0VSIHRhYmxlLg0KPiANCg0KW1JvaGl0XSBJIHRoaW5rIHRoaXMgY29tbWVudCBn b3QgY29waWVkIHVuaW50ZW50aW9uYWxseS4gSSBoYXZlIHJlc3BvbmRlZCB0byBpdCBhdCB0aGUg cmlnaHQgcGxhY2UuDQoNCj4gPg0KPiA+Pg0KPiA+Pj4gKyAgaWYgKE51bWJlck9mRnVuY3Rpb25h bERlcGVuZGVuY2llcyA9PSBOVUxMKSB7DQo+ID4+PiArICAgIE1wYW1MZW5ndGhFcnJvciAoTCJO dW1iZXIgb2YgZnVuY3Rpb25hbCBkZXBlbmRlbmNpZXMgbm90IHNldCEiKTsNCj4gPj4+ICsgICAg cmV0dXJuIEVGSV9CQURfQlVGRkVSX1NJWkU7DQo+ID4+PiArICB9DQo+ID4+PiArDQo+ID4+PiAr ICB3aGlsZSAoRnVuY3Rpb25hbERlcGVuZGVuY3lJbmRleCA8DQo+ID4+ICpOdW1iZXJPZkZ1bmN0 aW9uYWxEZXBlbmRlbmNpZXMpIHsNCj4gPj4+ICsgICAgUHJpbnRCbG9ja1RpdGxlICgNCj4gPj4+ ICsgICAgICA2LA0KPiA+Pj4gKyAgICAgIEwiKiBGdW5jdGlvbmFsIGRlcGVuZGVuY3kgKiIsDQo+ ID4+PiArICAgICAgRnVuY3Rpb25hbERlcGVuZGVuY3lJbmRleA0KPiA+Pj4gKyAgICAgICk7DQo+ ID4+PiArDQo+ID4+PiArICAgIC8vIFBhcnNlIGZ1bmN0aW9uYWwgZGVwZW5kZW5jeQ0KPiA+Pj4g KyAgICAqT2Zmc2V0ICs9IFBhcnNlQWNwaSAoDQo+ID4+PiArICAgICAgICAgICAgICAgICBUUlVF LA0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgNCwNCj4gPj4+ICsgICAgICAgICAgICAgICAgIE5V TEwsDQo+ID4+PiArICAgICAgICAgICAgICAgICBQdHIgKyAqT2Zmc2V0LA0KPiA+Pj4gKyAgICAg ICAgICAgICAgICAgQWNwaVRhYmxlTGVuZ3RoIC0gKk9mZnNldCwNCj4gPj4+ICsgICAgICAgICAg ICAgICAgIFBBUlNFUl9QQVJBTVMgKE1wYW1Nc2NGdW5jdGlvbmFsRGVwZW5kZW5jeVBhcnNlcikN Cj4gPj4+ICsgICAgICAgICAgICAgICAgICk7DQo+ID4+PiArDQo+ID4+PiArICAgIEZ1bmN0aW9u YWxEZXBlbmRlbmN5SW5kZXgrKzsNCj4gPj4+ICsgIH0NCj4gPj4+ICsNCj4gPj4+ICsgIHJldHVy biBFRklfU1VDQ0VTUzsNCj4gPj4+ICt9DQo+ID4+PiArDQo+ID4+PiArLyoqDQo+ID4+PiArICBU aGlzIGZ1bmN0aW9uIHBhcnNlcyBhbGwgdGhlIE1QQU0gcmVzb3VyY2Ugbm9kZXMgd2l0aGluIGEg c2luZ2xlIE1TQw0KPiA+Pj4gKyAgbm9kZSB3aXRoaW4gdGhlIE1QQU0gQUNQSSB0YWJsZS4gIEl0 IGFsc28gaW52b2tlcyBoZWxwZXIgZnVuY3Rpb25zIHRvDQo+ID4+PiArICB2YWxpZGF0ZSBhbmQg cGFyc2UgbG9jYXRvcnMgYW5kIGZ1bmN0aW9uYWwgZGVwZW5kZW5jeSBkZXNjcmlwdG9ycy4NCj4g Pj4+ICsNCj4gPj4+ICsgIEBwYXJhbSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2ludGVyIHRv IHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLg0KPiA+Pj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxl TGVuZ3RoICAgIExlbmd0aCBvZiB0aGUgQUNQSSB0YWJsZS4NCj4gPj4+ICsgIEBwYXJhbSBbaW5d IE9mZnNldCAgICAgICAgICAgICBQb2ludGVyIHRvIGN1cnJlbnQgb2Zmc2V0IHdpdGhpbiBQdHIu DQo+ID4+PiArDQo+ID4+PiArUmV0dXJuczoNCj4gPj4+ICsNCj4gPj4+ICsgIFN0YXR1cw0KPiA+ Pj4gKw0KPiA+Pj4gKyAgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgICAgICAgIE1QQU0gTVNDIE5v ZGVzIHdlcmUgcGFyc2VkIHByb3Blcmx5Lg0KPiA+Pj4gKyAgRUZJX0JBRF9CVUZGRVJfU0laRSAg ICAgICAgICAgIFRoZSBidWZmZXIgcG9pbnRlciBwcm92aWRlZCBhcyBpbnB1dCBpcyBub3QNCj4g Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGVub3VnaCB0byBiZSBw YXJzZWQgY29ycmVjdGx5Lg0KPiA+Pj4gKyoqLw0KPiA+Pj4gK1NUQVRJQw0KPiA+Pj4gK0VGSV9T VEFUVVMNCj4gPj4+ICtFRklBUEkNCj4gPj4+ICtQYXJzZU1wYW1Nc2NSZXNvdXJjZXMgKA0KPiA+ Pj4gKyAgSU4gVUlOVDggICAqUHRyLA0KPiA+Pj4gKyAgSU4gVUlOVDMyICBBY3BpVGFibGVMZW5n dGgsDQo+ID4+PiArICBJTiBVSU5UMzIgICpPZmZzZXQNCj4gPj4+ICsgICkNCj4gPj4+ICt7DQo+ ID4+PiArICBFRklfU1RBVFVTICBTdGF0dXM7DQo+ID4+PiArICBVSU5UNjQgICAgICAqSW50ZXJj b25uZWN0T2Zmc2V0UHRyOw0KPiA+Pj4gKyAgVUlOVDMyICAgICAgUmVzb3VyY2VJbmRleDsNCj4g Pj4+ICsNCj4gPj4+ICsgIFJlc291cmNlSW5kZXggPSAwOw0KPiA+Pj4gKw0KPiA+Pj4gKyAgaWYg KE51bWJlck9mTXNjUmVzb3VyY2VzID09IE5VTEwpIHsNCj4gPj4+ICsgICAgTXBhbUxlbmd0aEVy cm9yIChMIk51bWJlciBvZiBNU0MgcmVzb3VyY2Ugbm90IHNldCEiKTsNCj4gPj4+ICsgICAgcmV0 dXJuIEVGSV9CQURfQlVGRkVSX1NJWkU7DQo+ID4+PiArICB9DQo+ID4+PiArDQo+ID4+PiArICB3 aGlsZSAoUmVzb3VyY2VJbmRleCA8ICpOdW1iZXJPZk1zY1Jlc291cmNlcykgew0KPiA+Pj4gKyAg ICBQcmludEJsb2NrVGl0bGUgKA0KPiA+Pj4gKyAgICAgIDQsDQo+ID4+PiArICAgICAgTCIqIFJl c291cmNlICoiLA0KPiA+Pj4gKyAgICAgIFJlc291cmNlSW5kZXgNCj4gPj4+ICsgICAgICApOw0K PiA+Pj4gKw0KPiA+Pj4gKyAgICAvLyBQYXJzZSBNUEFNIE1TQyByZXNvdXJjZXMgd2l0aGluIHRo ZSBNU0MgYm9keS4gVGhpcyBjb3VsZCBiZQ0KPiA+PiB0cmFjZWQuDQo+ID4+PiArICAgICpPZmZz ZXQgKz0gUGFyc2VBY3BpICgNCj4gPj4+ICsgICAgICAgICAgICAgICAgIFRSVUUsDQo+ID4+PiAr ICAgICAgICAgICAgICAgICAyLA0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgTlVMTCwNCj4gPj4+ ICsgICAgICAgICAgICAgICAgIFB0ciArICpPZmZzZXQsDQo+ID4+PiArICAgICAgICAgICAgICAg ICBBY3BpVGFibGVMZW5ndGggLSAqT2Zmc2V0LA0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgUEFS U0VSX1BBUkFNUyAoTXBhbU1zY1Jlc291cmNlUGFyc2VyKQ0KPiA+Pj4gKyAgICAgICAgICAgICAg ICAgKTsNCj4gPj4+ICsNCj4gPj4NCj4gPj4gSSB1bmRlcnN0YW5kIHRoYXQgdGhlIGxvY2F0b3Ig c2hvdWxkIGJlIHByaW50ZWQgYmVmb3JlIHRoZSBmdW5jdGlvbmFsDQo+ID4+IGRlcGVuZGVuY2ll cywNCj4gPj4gYnV0IGNvdWxkbnQndCB0aGUgTXBhbU1zY1Jlc291cmNlUGFyc2VyIGFuZA0KPiA+ PiBNcGFtTXNjUmVzb3VyY2VMb2NhdG9yUGFyc2VyIHN0cnVjdHVyZXMNCj4gPj4gYmUgbWVyZ2Vk ID8NCj4gPj4NCj4gPg0KPiA+IFtSb2hpdF0gVGhlIHJlYXNvbiB3ZSBwYXJzZSBpdCBzZXBhcmF0 ZWx5IGlzIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBkaXNwbGF5DQo+IE1wYW1Nc2NSZXNvdXJj ZUxvY2F0b3JQYXJzZXIgZmllbGRzIChUcmFjZSA9IEZBTFNFKS4gUGFyc2VMb2NhdG9yIHdvdWxk DQo+IGRlYWwgd2l0aCBwYXJzaW5nIHRoZSAxMiBieXRlIGxvY2F0b3IuDQo+IA0KPiBPaywgaXQg d2FzIHdyaXR0ZW4gaW5kZWVkIC4uLg0KPiANCj4gPg0KPiA+Pj4gKyAgICAvLyBQYXJzZSBNUEFN IE1TQyByZXNvdXJjZXMgd2l0aGluIHRoZSBNU0MgYm9keS4gVGhlc2UgZmllbGRzIGFyZW4ndA0K PiA+PiB0cmFjZWQuDQo+ID4+PiArICAgIC8vIFBhcnNlTG9jYXRvciB3b3VsZCB0cmFjZSBhbmQg ZGlzcGxheSB0aGUgZmllbGRzLg0KPiA+Pj4gKyAgICAqT2Zmc2V0ICs9IFBhcnNlQWNwaSAoDQo+ ID4+PiArICAgICAgICAgICAgICAgICBGQUxTRSwNCj4gPj4+ICsgICAgICAgICAgICAgICAgIDIs DQo+ID4+PiArICAgICAgICAgICAgICAgICBOVUxMLA0KPiA+Pj4gKyAgICAgICAgICAgICAgICAg UHRyICsgKk9mZnNldCwNCj4gPj4+ICsgICAgICAgICAgICAgICAgIEFjcGlUYWJsZUxlbmd0aCAt ICpPZmZzZXQsDQo+ID4+PiArICAgICAgICAgICAgICAgICBQQVJTRVJfUEFSQU1TIChNcGFtTXNj UmVzb3VyY2VMb2NhdG9yUGFyc2VyKQ0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgKTsNCj4gPj4+ ICsNCj4gPj4NCj4gPj4gU2hvdWxkbid0IGl0IGp1c3QgYmUgY291bnRlZCBhcyBhbiBlcnJvciBh bmQgcHJvY2VlZCA/DQo+ID4NCj4gPiBTaG91bGRuJ3QgaXQganVzdCBiZSBjb3VudGVkIGFzIGFu IGVycm9yIGFuZCBwcm9jZWVkID8NCj4gPg0KPiA+IFtSb2hpdF0gVGhlIHNwZWMgZG9lcyB0YWxr IGFib3V0IHRoZSBjYXNlIHdoZXJlIGEgdGFibGUgY291bGQgaGF2ZSBubw0KPiBsb2NhdG9ycyAo Mi4yLjIgRW1wdHkgTVNDIG5vZGUpLg0KPiA+IC0tLSBBbiBlbXB0eSBNU0Mgbm9kZSBoYXMgbm8g cmVzb3VyY2Ugbm9kZXMsIGFuZCBpdHMgbnVtYmVyIG9mIHJlc291cmNlDQo+IG5vZGVzIGlzIHNl dCB0byAwLg0KPiA+DQo+ID4gSG93ZXZlciwgc2luY2UgKk51bWJlck9mTXNjUmVzb3VyY2VzIGlz IG5vbi16ZXJvLCB0aGlzIHNlZW1zIHRvIGJlIGENCj4gY2FzZSB3ZSBzaG91bGQgbm90IGxldCBz bGlwIGJ5Lg0KPiA+DQo+IA0KPiBPayByaWdodC4NCj4gDQo+ID4+DQo+ID4+PiArICAgIC8vIFBy b2NlZWQgd2l0aCBwYXJzaW5nIG9ubHkgaWYgYSB2YWxpZCBsb2NhdG9yIGhhcyBiZWVuIHNldC4N Cj4gPj4+ICsgICAgaWYgKChMb2NhdG9yVHlwZSA9PSBOVUxMKSB8fCAoTG9jYXRvciA9PSBOVUxM KSkgew0KPiA+Pj4gKyAgICAgIE1wYW1MZW5ndGhFcnJvciAoTCJMb2NhdG9yIHR5cGUgb3IgTG9j YXRvciBub3Qgc2V0Iik7DQo+ID4+PiArICAgICAgcmV0dXJuIEVGSV9CQURfQlVGRkVSX1NJWkU7 DQo+ID4+PiArICAgIH0NCj4gPj4+ICsNCj4gPj4+ICsgICAgUGFyc2VMb2NhdG9yICgpOw0KPiA+ Pj4gKw0KPiA+Pj4gKyAgICAvLyBQYXJzZSB0aGUgbnVtYmVyIG9mIGZ1bmN0aW9uYWwgZGVwZW5k ZW5jeSBkZXNjcmlwdG9ycy4NCj4gPj4+ICsgICAgKk9mZnNldCArPSBQYXJzZUFjcGkgKA0KPiA+ Pj4gKyAgICAgICAgICAgICAgICAgVFJVRSwNCj4gPj4+ICsgICAgICAgICAgICAgICAgIDIsDQo+ ID4+PiArICAgICAgICAgICAgICAgICBOVUxMLA0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgUHRy ICsgKk9mZnNldCwNCj4gPj4+ICsgICAgICAgICAgICAgICAgIEFjcGlUYWJsZUxlbmd0aCAtICpP ZmZzZXQsDQo+ID4+PiArICAgICAgICAgICAgICAgICBQQVJTRVJfUEFSQU1TDQo+IChNcGFtTXNj RnVuY3Rpb25hbERlcGVuZGVuY3lDb3VudFBhcnNlcikNCj4gPj4+ICsgICAgICAgICAgICAgICAg ICk7DQo+ID4+PiArDQo+ID4+PiArICAgIFN0YXR1cyA9IFBhcnNlTXBhbU1zY0Z1bmN0aW9uYWxE ZXBlbmRlbmNpZXMgKFB0ciwNCj4gQWNwaVRhYmxlTGVuZ3RoLA0KPiA+PiBPZmZzZXQpOw0KPiA+ Pg0KPiA+PiBXaXRob3V0IGVtcHR5IGxpbmUgaWYgcG9zc2libGUgKG1heWJlIHRoZSBjb21tZW50 IGFwcGxpZXMgdG8gb3RoZXIgcGxhY2VzDQo+ID4+IHRvbykuDQo+ID4NCj4gPiBbUm9oaXRdIEFj ay4gSXMgdGhlcmUgYSBndWlkZWxpbmUgb24gbGluZSBzcGFjaW5nIEkgY291bGQgZmluZCBzb21l d2hlcmU/DQo+IA0KPiBJIG0gbm90IHN1cmUgdGhlcmUgaXMsIHRoaXMgd2FzIGp1c3QgdG8gaGF2 ZSB0aGUgZnVuY3Rpb24gY2FsbCBhbmQgcmVzdWx0DQo+IGNoZWNrIGluIG9uZSBzbWFsbCBibG9j ay4NCj4gDQo+ID4NCj4gPj4NCj4gPj4+ICsNCj4gPj4+ICsgICAgaWYgKFN0YXR1cyAhPSBFRklf U1VDQ0VTUykgew0KPiA+Pj4gKyAgICAgIHJldHVybiBTdGF0dXM7DQo+ID4+PiArICAgIH0NCj4g Pj4+ICsNCj4gPj4+ICsgICAgLy8gUmVzZXQgbG9jYXRvciB0byBzdGFydCBvZiB0aGUgbG9jYXRv ciBkZXNjcmlwdG9yLg0KPiA+Pj4gKyAgICBJbnRlcmNvbm5lY3RPZmZzZXRQdHIgPSAoVUlOVDY0 ICopTG9jYXRvcjsNCj4gPj4+ICsNCj4gPj4+ICsgICAgLy8gSWYgb2Zmc2V0IGZpZWxkIGhhcyBi ZWVuIHNldCwgcGFyc2UgdGhlIGludGVyY29ubmVjdCBkZXNjcmlwdGlvbiB0YWJsZS4NCj4gPj4N Cj4gPj4gaWYgKCgNCj4gPj4gKHdpdGhvdXQgZXh0cmEgc3BhY2VzKQ0KPiA+DQo+ID4gW1JvaGl0 XSBBY2suDQo+ID4NCj4gPj4NCj4gPj4+ICsgICAgaWYgKCAgKCpMb2NhdG9yVHlwZSA9PSBFRklf QUNQSV9NUEFNX0xPQ0FUSU9OX0lOVEVSQ09OTkVDVCkNCj4gPj4+ICsgICAgICAgJiYgKEludGVy Y29ubmVjdE9mZnNldFB0ciAhPSBOVUxMKSkNCj4gPj4+ICsgICAgew0KPiA+Pj4gKyAgICAgIFN0 YXR1cyA9IFBhcnNlSW50ZXJjb25uZWN0RGVzY3JpcHRvclRhYmxlICgNCj4gPj4+ICsgICAgICAg ICAgICAgICAgIFB0ciwNCj4gPj4+ICsgICAgICAgICAgICAgICAgIEFjcGlUYWJsZUxlbmd0aCwN Cj4gPj4+ICsgICAgICAgICAgICAgICAgIE9mZnNldCwNCj4gPj4+ICsgICAgICAgICAgICAgICAg ICpJbnRlcmNvbm5lY3RPZmZzZXRQdHINCj4gPj4+ICsgICAgICAgICAgICAgICAgICk7DQo+ID4+ PiArDQo+ID4+PiArICAgICAgaWYgKFN0YXR1cyAhPSBFRklfU1VDQ0VTUykgew0KPiA+Pj4gKyAg ICAgICAgcmV0dXJuIFN0YXR1czsNCj4gPj4+ICsgICAgICB9DQo+ID4+PiArICAgIH0NCj4gPj4+ ICsNCj4gPj4+ICsgICAgUmVzb3VyY2VJbmRleCsrOw0KPiA+Pj4gKyAgfQ0KPiA+Pj4gKw0KPiA+ Pj4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+Pj4gK30NCj4gPj4+ICsNCj4gPj4+ICsvKioN Cj4gPj4+ICsgIFRoaXMgZnVuY3Rpb24gcGFyc2VzIGFsbCB0aGUgTVBBTSBNU0Mgbm9kZXMgd2l0 aGluIHRoZSBNUEFNIEFDUEkNCj4gPj4gdGFibGUuICBJdA0KPiA+Pj4gKyAgYWxzbyBpbnZva2Vz IGEgaGVscGVyIGZ1bmN0aW9uIHRvIGRldGVjdCBhbmQgcGFyc2UgcmVzb3VyY2Ugbm9kZXMgdGhh dA0KPiA+PiBtYXliZQ0KPiA+Pj4gKyAgcHJlc2VudC4NCj4gPj4+ICsNCj4gPj4+ICsgIEBwYXJh bSBbaW5dIFB0ciAgICAgICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgYnVm ZmVyLg0KPiA+Pj4gKyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlTGVuZ3RoICAgIExlbmd0aCBvZiB0 aGUgQUNQSSB0YWJsZS4NCj4gPj4+ICsgIEBwYXJhbSBbaW5dIE9mZnNldCAgICAgICAgICAgICBD dXJyZW50IG9mZnNldCB3aXRoaW4gUHRyLg0KPiA+Pj4gKw0KPiA+Pj4gK1JldHVybnM6DQo+ID4+ PiArDQo+ID4+PiArICBTdGF0dXMNCj4gPj4+ICsNCj4gPj4+ICsgIEVGSV9TVUNDRVNTICAgICAg ICAgICAgICAgICAgICBNUEFNIE1TQyBOb2RlcyB3ZXJlIHBhcnNlZCBwcm9wZXJseS4NCj4gPj4+ ICsgIEVGSV9CQURfQlVGRkVSX1NJWkUgICAgICAgICAgICBUaGUgYnVmZmVyIHBvaW50ZXIgcHJv dmlkZWQgYXMgaW5wdXQgaXMgbm90DQo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbG9uZyBlbm91Z2ggdG8gYmUgcGFyc2VkIGNvcnJlY3RseS4NCj4gPj4+ICsqKi8NCj4g Pj4+ICtTVEFUSUMNCj4gPj4+ICtFRklfU1RBVFVTDQo+ID4+PiArRUZJQVBJDQo+ID4+PiArUGFy c2VNcGFtTXNjTm9kZXMgKA0KPiA+Pj4gKyAgSU4gVUlOVDggICAqUHRyLA0KPiA+Pj4gKyAgSU4g VUlOVDMyICBBY3BpVGFibGVMZW5ndGgsDQo+ID4+PiArICBJTiBVSU5UMzIgIE9mZnNldA0KPiA+ Pj4gKyAgKQ0KPiA+Pj4gK3sNCj4gPj4+ICsgIEVGSV9TVEFUVVMgIFN0YXR1czsNCj4gPj4+ICsg IFVJTlQzMiAgICAgIE1zY0luZGV4Ow0KPiA+Pj4gKw0KPiA+Pj4gKyAgTXNjSW5kZXggPSAwOw0K PiA+Pj4gKw0KPiA+Pj4gKyAgd2hpbGUgKE9mZnNldCA8IEFjcGlUYWJsZUxlbmd0aCkgew0KPiA+ Pj4gKyAgICBQcmludEJsb2NrVGl0bGUgKDIsIEwiKiBNc2MgKiIsIE1zY0luZGV4KTsNCj4gPj4+ ICsgICAgLy8gUGFyc2UgTVBBTSBtc2Mgbm9kZQ0KPiA+Pj4gKyAgICBPZmZzZXQgKz0gUGFyc2VB Y3BpICgNCj4gPj4+ICsgICAgICAgICAgICAgICAgVFJVRSwNCj4gPj4+ICsgICAgICAgICAgICAg ICAgMCwNCj4gPj4+ICsgICAgICAgICAgICAgICAgTlVMTCwNCj4gPj4+ICsgICAgICAgICAgICAg ICAgUHRyICsgT2Zmc2V0LA0KPiA+Pj4gKyAgICAgICAgICAgICAgICBBY3BpVGFibGVMZW5ndGgg LSBPZmZzZXQsDQo+ID4+PiArICAgICAgICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKE1wYW1Nc2NO b2RlUGFyc2VyKQ0KPiA+Pj4gKyAgICAgICAgICAgICAgICApOw0KPiA+Pj4gKw0KPiA+Pj4gKyAg ICAvLyBQYXJzZSBNUEFNIE1TQyByZXNvdXJjZXMgd2l0aGluIHRoZSBNU0MgYm9keQ0KPiA+Pg0K PiA+PiBJIG0gbm90IHN1cmUgdGhpcyBjYXNlIGlzIHBvc3NpYmxlIGFzIE1wYW1Nc2NOb2RlTGVu Z3RoIGlzIHN0YXRpY2FsbHkNCj4gPj4gZGVmaW5lZC4gTWF5YmUgaXQgc2hvdWxkIGJlICgqTXBh bU1zY05vZGVMZW5ndGggPT0gMCkuDQo+ID4NCj4gPiBbUm9oaXRdIFRoaXMgaXMgYSBjb3JuZXIg Y2FzZSBjaGVjayB0byBzZWUgaWYgc29tZW9uZSBoYXMgcG9wdWxhdGVkIGEgTVBBTQ0KPiBBQ1BJ IHRhYmxlIHdpdGhvdXQgdGhlIE1TQyBib2R5LiBUaGUgc3RhdGljYWxseSBkZWZpbmVkIHBvaW50 ZXIgd291bGQgYmUNCj4gTlVMTCBpbiB0aGlzIGNhc2UuICpNcGFtTXNjTm9kZUxlbmd0aCdzIHZh bHVlIGlzIG5vdCByZXN0cmljdGVkIGZyb20gdGhlDQo+IHNwZWMgYnV0IGl0IGNlcnRhaW5seSBo YXMgdG8gYmUgYXQgbGVhc3Qgc2l6ZW9mKE1wYW1Nc2NOb2RlYm9keSkgd2hpY2ggd2UNCj4gdGFs bHkgdXNpbmcNCj4gPiBNcGFtTXNjTm9kZUxlbmd0aEN1bXVsYXRpdmUgZmllbGQuIChzaW1pbGFy IGV4cGxhbmF0aW9uIGFkZGVkIGZvcg0KPiBOdW1iZXJPZkZ1bmN0aW9uYWxEZXBlbmRlbmNpZXMp DQo+IA0KPiBPayByaWdodCwgc29ycnkgSSBtaXNyZWFkLg0KPiBUaGFua3MgZm9yIHRoZSBleHBs YW5hdGlvbi4NCj4gDQo+ID4NCj4gPj4NCj4gPj4+ICsgICAgaWYgKE1wYW1Nc2NOb2RlTGVuZ3Ro ID09IE5VTEwpIHsNCj4gPj4+ICsgICAgICBNcGFtTGVuZ3RoRXJyb3IgKEwiTVBBTSBNU0Mgbm9k ZSBsZW5ndGggbm90IHNldCEiKTsNCj4gPj4+ICsgICAgICByZXR1cm4gRUZJX0JBRF9CVUZGRVJf U0laRTsNCj4gPj4+ICsgICAgfQ0KPiA+Pj4gKw0KPiA+Pj4gKyAgICBTdGF0dXMgPSBQYXJzZU1w YW1Nc2NSZXNvdXJjZXMgKFB0ciwgQWNwaVRhYmxlTGVuZ3RoLCAmT2Zmc2V0KTsNCj4gPj4NCj4g Pj4gV2l0aG91dCBlbXB0eSBsaW5lIGlmIHBvc3NpYmxlLg0KPiA+DQo+ID4gW1JvaGl0XSBBY2su DQo+ID4NCj4gPj4NCj4gPj4+ICsNCj4gPj4+ICsgICAgaWYgKFN0YXR1cyAhPSBFRklfU1VDQ0VT Uykgew0KPiA+Pj4gKyAgICAgIHJldHVybiBTdGF0dXM7DQo+ID4+PiArICAgIH0NCj4gPj4+ICsN Cj4gPj4+ICsgICAgTXBhbU1zY05vZGVMZW5ndGhDdW11bGF0aXZlICs9ICgqTXBhbU1zY05vZGVM ZW5ndGgpOw0KPiA+Pj4gKyAgICBNc2NJbmRleCsrOw0KPiA+Pj4gKyAgfQ0KPiA+Pj4gKw0KPiA+ Pj4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+Pj4gK30NCj4gPj4+ICsNCj4gPj4+ICsvKioN Cj4gPj4+ICsgIFRoaXMgZnVuY3Rpb24gcGFyc2VzIHRoZSBNUEFNIEFDUEkgdGFibGUncyBnZW5l cmljIGhlYWRlci4gSXQgYWxzbw0KPiBpbnZva2VzDQo+ID4+IGENCj4gPj4+ICsgIHN1YiByb3V0 aW5lIHRoYXQgd291bGQgaGVscCB3aXRoIHBhcnNpbmcgcmVzdCBvZiB0aGUgdGFibGUuDQo+ID4+ PiArDQo+ID4+PiArICBAcGFyYW0gW2luXSBUcmFjZSAgICAgICAgICAgICAgSWYgVFJVRSwgdHJh Y2UgdGhlIEFDUEkgZmllbGRzLg0KPiA+Pj4gKyAgQHBhcmFtIFtpbl0gUHRyICAgICAgICAgICAg ICAgIFBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuDQo+ID4+PiArICBAcGFyYW0g W2luXSBBY3BpVGFibGVMZW5ndGggICAgTGVuZ3RoIG9mIHRoZSBBQ1BJIHRhYmxlLg0KPiA+Pj4g KyAgQHBhcmFtIFtpbl0gQWNwaVRhYmxlUmV2aXNpb24gIFJldmlzaW9uIG9mIHRoZSBBQ1BJIHRh YmxlLg0KPiA+Pj4gKyoqLw0KPiA+Pj4gK1ZPSUQNCj4gPj4+ICtFRklBUEkNCj4gPj4+ICtQYXJz ZUFjcGlNcGFtICgNCj4gPj4+ICsgIElOIEJPT0xFQU4gIFRyYWNlLA0KPiA+Pj4gKyAgSU4gVUlO VDggICAgKlB0ciwNCj4gPj4+ICsgIElOIFVJTlQzMiAgIEFjcGlUYWJsZUxlbmd0aCwNCj4gPj4+ ICsgIElOIFVJTlQ4ICAgIEFjcGlUYWJsZVJldmlzaW9uDQo+ID4+PiArICApDQo+ID4+PiArew0K PiA+Pj4gKyAgRUZJX1NUQVRVUyAgU3RhdHVzOw0KPiA+Pj4gKw0KPiA+Pj4gKyAgaWYgKCFUcmFj ZSkgew0KPiA+Pj4gKyAgICByZXR1cm47DQo+ID4+PiArICB9DQo+ID4+PiArDQo+ID4+PiArICAv LyBQYXJzZSBnZW5lcmljIHRhYmxlIGhlYWRlcg0KPiA+Pj4gKyAgSGVhZGVyU2l6ZSA9IFBhcnNl QWNwaSAoDQo+ID4+PiArICAgICAgICAgICAgICAgICBUUlVFLA0KPiA+Pj4gKyAgICAgICAgICAg ICAgICAgMCwNCj4gPj4+ICsgICAgICAgICAgICAgICAgICJNUEFNIiwNCj4gPj4+ICsgICAgICAg ICAgICAgICAgIFB0ciwNCj4gPj4+ICsgICAgICAgICAgICAgICAgIEFjcGlUYWJsZUxlbmd0aCwN Cj4gPj4+ICsgICAgICAgICAgICAgICAgIFBBUlNFUl9QQVJBTVMgKE1wYW1QYXJzZXIpDQo+ID4+ PiArICAgICAgICAgICAgICAgICApOw0KPiA+Pj4gKw0KPiA+Pj4gKyAgU3RhdHVzID0gUGFyc2VN cGFtTXNjTm9kZXMgKFB0ciwgQWNwaVRhYmxlTGVuZ3RoLCBIZWFkZXJTaXplKTsNCj4gPj4+ICsN Cj4gPj4+ICsgIGlmIChTdGF0dXMgPT0gRUZJX1NVQ0NFU1MpIHsNCj4gPj4+ICsgICAgLy8gQ2hl Y2sgaWYgdGhlIGxlbmd0aCBvZiBhbGwgTVBBTSBNU0NzIHdpdGggdGhlIGhlYWRlciwgbWF0Y2hl cyB3aXRoDQo+ID4+IHRoZQ0KPiA+Pj4gKyAgICAvLyBBQ1BJIHRhYmxlJ3MgbGVuZ3RoIGZpZWxk Lg0KPiA+Pj4gKyAgICBpZiAoKihBY3BpSGRySW5mby5MZW5ndGgpICE9IChNcGFtTXNjTm9kZUxl bmd0aEN1bXVsYXRpdmUgKw0KPiA+PiBIZWFkZXJTaXplKSkgew0KPiA+Pj4gKyAgICAgIEluY3Jl bWVudEVycm9yQ291bnQgKCk7DQo+ID4+PiArICAgICAgUHJpbnQgKEwiXG5FUlJPUjogTGVuZ3Ro IG1pc21hdGNoISA6ICIpOw0KPiA+Pj4gKyAgICAgIFByaW50IChMIk1zYyBMZW5ndGggdG90YWwg IT0gTVBBTSB0YWJsZSBsZW5ndGguIik7DQo+ID4+PiArICAgICAgUHJpbnQgKA0KPiA+Pj4gKyAg ICAgICAgTCJ0YWJsZSBsZW5ndGggOiAldSBNc2MgdG90YWwgOiAldVxuIiwNCj4gPj4+ICsgICAg ICAgICooQWNwaUhkckluZm8uTGVuZ3RoKSwNCj4gPj4+ICsgICAgICAgIE1wYW1Nc2NOb2RlTGVu Z3RoQ3VtdWxhdGl2ZQ0KPiA+Pj4gKyAgICAgICAgKTsNCj4gPj4+ICsgICAgfQ0KPiA+Pj4gKyAg fQ0KPiA+Pj4gK30NCj4gPg0KPiA+IH5+DQo+ID4NCj4gPiBSZWdhcmRzLA0KPiA+IFJvaGl0DQoN CgotPS09LT0tPS09LT0tPS09LT0tPS09LQpHcm91cHMuaW8gTGlua3M6IFlvdSByZWNlaXZlIGFs bCBtZXNzYWdlcyBzZW50IHRvIHRoaXMgZ3JvdXAuClZpZXcvUmVwbHkgT25saW5lICgjMTA3MTc2 KTogaHR0cHM6Ly9lZGsyLmdyb3Vwcy5pby9nL2RldmVsL21lc3NhZ2UvMTA3MTc2Ck11dGUgVGhp cyBUb3BpYzogaHR0cHM6Ly9ncm91cHMuaW8vbXQvOTkwNjYxODgvNzY4NjE3NgpHcm91cCBPd25l cjogZGV2ZWwrb3duZXJAZWRrMi5ncm91cHMuaW8KVW5zdWJzY3JpYmU6IGh0dHBzOi8vZWRrMi5n cm91cHMuaW8vZy9kZXZlbC91bnN1YiBbcmViZWNjYUBvcGVuZncuaW9dCi09LT0tPS09LT0tPS09 LT0tPS09LT0tCgoNCg==