From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01on060f.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe1e::60f]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 3E4DA82132 for ; Fri, 17 Feb 2017 03:53:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=H4DxYJAdMRe0IPWHy78NpTg3rF5mUblPh5uY/xXh4cM=; b=VuazBxPHmKYn10+JGyLjVcFj1pIvf3RJqSpgqDRvQw2voaY/duTDX2thPPYkPHorFzerYH3Biglvh6uXtROKutsTLfGH/WIPLYK+ukDnU6I9U/A8RXSPlaKmE6ru4Kl/yyTXuwbUr3PCxDZAB+xQRFs42gEHDeqleS7E4S2HuHU= Received: from AM5PR0801MB1762.eurprd08.prod.outlook.com (10.169.247.16) by AM5PR0801MB1763.eurprd08.prod.outlook.com (10.169.247.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.888.16; Fri, 17 Feb 2017 11:53:31 +0000 Received: from AM5PR0801MB1762.eurprd08.prod.outlook.com ([10.169.247.16]) by AM5PR0801MB1762.eurprd08.prod.outlook.com ([10.169.247.16]) with mapi id 15.01.0888.034; Fri, 17 Feb 2017 11:53:31 +0000 From: Evan Lloyd To: "ard.biesheuvel@linaro.org" CC: "edk2-devel@lists.01.org" , Leif Lindholm , "ryan.harkin@linaro.org" Thread-Topic: [PATCH 4/4] ArmPkg:Provide GetTriggerType/SetTriggerType functions Thread-Index: AQHShfnaXCNsxuUDmUuF6CXqVeSQxaFsEpuQgAAND4CAAO90wA== Date: Fri, 17 Feb 2017 11:53:30 +0000 Message-ID: References: <20170209192623.262044-1-evan.lloyd@arm.com> <20170209192623.262044-5-evan.lloyd@arm.com> In-Reply-To: Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Evan.Lloyd@arm.com; x-originating-ip: [217.140.96.140] x-ld-processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr x-ms-office365-filtering-correlation-id: cb3e3108-c271-43fd-6261-08d4572b97f2 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081); SRVR:AM5PR0801MB1763; x-microsoft-exchange-diagnostics: 1; AM5PR0801MB1763; 7:wkpD32Ixei2DYmN9SUCifLc2CrP1iPrsA096ko7e3XTm/9ymFWP1yYByDumd9TCQbXZW7Sp7JbaCnuOxYZyEGuWd/W1d0zpe4YL53nvqzLDPpbMwG3iIm3dFSo4jCYxMsOSp9Brdfw1/+3JDT6wix1+NE2YPNiZOfgf48o9c+LvGE0W19XMEveKgjIvnXnNEZRdjk6SIj0xKmcUzje8wMfjt0KwgFW/m8hNMNluFTGLKtG0FSwN8OGvnz4K6QiYPIRa3xDM8CMTC673vWf/1NNTYfA/6w626Vx6cHj2vrhG25P3PBkozc1GJZnq8RppiBVeJJeIgDEEXayXuZ8/d2g== x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(180628864354917)(192374486261705)(100405760836317)(162533806227266); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6055026)(6041248)(20161123560025)(20161123555025)(20161123562025)(20161123564025)(20161123558025)(6072148); SRVR:AM5PR0801MB1763; BCL:0; PCL:0; RULEID:; SRVR:AM5PR0801MB1763; x-forefront-prvs: 02213C82F8 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(6009001)(7916002)(39450400003)(39840400002)(39850400002)(39860400002)(39410400002)(40434004)(199003)(189002)(13464003)(24454002)(106116001)(97736004)(54906002)(106356001)(110136004)(99286003)(9686003)(6246003)(105586002)(92566002)(38730400002)(6436002)(5890100001)(2501003)(77096006)(81166006)(229853002)(33656002)(81156014)(8936002)(53936002)(2900100001)(68736007)(122556002)(7736002)(2906002)(5660300001)(3846002)(6116002)(102836003)(53946003)(86362001)(575784001)(305945005)(54356999)(66066001)(76176999)(50986999)(93886004)(2351001)(55016002)(189998001)(8676002)(6506006)(5640700003)(74316002)(3660700001)(101416001)(6916009)(2950100002)(4326007)(7696004)(3280700002)(25786008)(579004)(19627235001); DIR:OUT; SFP:1101; SCL:1; SRVR:AM5PR0801MB1763; H:AM5PR0801MB1762.eurprd08.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Feb 2017 11:53:30.6243 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB1763 Subject: Re: [PATCH 4/4] ArmPkg:Provide GetTriggerType/SetTriggerType functions X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Feb 2017 11:53:35 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 DQoNCj4tLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPkZyb206IEFyZCBCaWVzaGV1dmVsIFtt YWlsdG86YXJkLmJpZXNoZXV2ZWxAbGluYXJvLm9yZ10NCj5TZW50OiAxNiBGZWJydWFyeSAyMDE3 IDIwOjQ3DQo+VG86IEV2YW4gTGxveWQNCj5DYzogZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc7IExl aWYgTGluZGhvbG07IHJ5YW4uaGFya2luQGxpbmFyby5vcmcNCj5TdWJqZWN0OiBSZTogW1BBVENI IDQvNF0gQXJtUGtnOlByb3ZpZGUgR2V0VHJpZ2dlclR5cGUvU2V0VHJpZ2dlclR5cGUNCj5mdW5j dGlvbnMNCj4NCj5PbiAxNiBGZWJydWFyeSAyMDE3IGF0IDIwOjE2LCBFdmFuIExsb3lkIDxFdmFu Lkxsb3lkQGFybS5jb20+IHdyb3RlOg0KPj4gSGkgQXJkLg0KPj4gWW91ciBjb21tZW50cyBtYWtl IHNlbnNlIGFuZCB3ZSB3aWxsIGNvbXBseSAoaW5jbHVkaW5nICJQbGVhc2Ugbm8NCj5zcGFjZXMg YWZ0ZXIgY2FzdHMiKS4NCj4+IEhvd2V2ZXIsIEkgY2FuIGZpbmQgbm90aGluZyByZXF1aXJpbmcg bm8gc3BhY2UgYWZ0ZXIgY2FzdHMgaW4gdGhlIENDUy4NCj4+IEl0IGRvZXMgaGF2ZSBzb21lIGNh c3RzIGluIGV4YW1wbGUgY29kZToNCj4+IDUuNy4yLjMgaGFzICJpZiAoKElOVE4pZm9vID49IDAp IiB3aXRoIG5vIHNwYWNlDQo+PiA1LjcuMi40IGhhcyAiaWYgKCggTG9nRW50cnlBcnJheVtJbmRl eF0uSGFuZGxlID09DQo+KEVGSV9QSFlTSUNBTF9BRERSRVNTKSAoVUlOVE4pIEhhbmRsZSkiIHdp dGggc3BhY2VzIChhbmQgb3RoZXJzKS4NCj4+DQo+PiBCeSB0aGUgc3RhbmRhcmQgZWRrMiBwcm9j ZXNzIHdlIHNob3VsZCBkZXRlcm1pbmUgd2hpY2ggaXMgdGhlIG1vc3QNCj5wb3B1bGFyIGFuZCBp bnNpc3Qgb24gdGhlIHJldmVyc2UuICA6LSkNCj4+DQo+DQo+VGhpcyBjb21lcyB1cCBub3cgYW5k IGFnYWluIG9uIHRoZSBtYWlsaW5nIGxpc3QsIGFuZCB0aGVyZSBpcw0KPmNvbnNlbnN1cyB0aGF0 LCBkdWUgdG8gdGhlIGhpZ2ggcHJlY2VkZW5jZSBvZiB0aGUgY2FzdCBvcGVyYXRvciwNCj5wdXR0 aW5nIGEgc3BhY2UgYWZ0ZXIgaXQgaXMgY291bnRlciBpbnR1aXRpdmUuIFNvIHBsZWFzZSBvbWl0 IHRoZW0sDQo+YW5kIGNlcnRhaW5seSBkb24ndCBhZGQgc3BhY2VzIGFmdGVyIGNhc3RzIHdoZW4g aXQgaXMgdGhlIG9ubHkgY2hhbmdlDQo+bWFkZSBvbiB0aG9zZSBwYXJ0aWN1bGFyIGxpbmVzLg0K Pg0KPlRoYW5rcywNCj5BcmQuDQo+DQoNCkFzIHN0YXRlZCwgbm8gYXJndW1lbnQuICBJdCBpcyBu b3Qgc29tZXRoaW5nIHdlIGZlZWwgc3Ryb25nbHkgYWJvdXQgZWl0aGVyIHdheSwgYW5kIGFzIHlv dSBkbywgd2UnbGwgY29tcGx5Lg0KV2hhdCBJIGRvIGZlZWwgc3Ryb25nbHkgYWJvdXQgaXMgdGhh dCB0aGUgQ1NTIHNob3VsZCBwcm92aWRlIGEgZ3VpZGUgYXMgdG8gaG93IHRvIHdyaXRlIGNvZGUg dGhhdCB3aWxsIG5vdCBnZXQgcmVqZWN0ZWQuDQpJIHJhaXNlZCB0aGUgY29tbWVudCB3aXRoIGEg dmlldyB0byBnZXR0aW5nIGEgcnVsZSBhYm91dCBjYXN0cyBpbnRvIHRoZSBDU1MsIGJlY2F1c2Ug b3RoZXJ3aXNlIGRldmVsb3BlcnMgc3VmZmVyIGF0IHRoZSB3aGltIG9mIGluZGl2aWR1YWwgbWFp bnRhaW5lcnMsIHdpdGggc29tZSBwcmVmZXJyaW5nIG9uZSBzdHlsZSBhbmQgb3RoZXJzIGFub3Ro ZXIuDQpJZiwgYXMgeW91IHNheSwgdGhlcmUgaXMgYSBjb25zZW5zdXMsIHN1cmVseSB0aGF0IHNo b3VsZCB0cmFuc2xhdGUgaW50byBhIENTUyBzdGF0ZW1lbnQgb2YgdGhhdCBjb25zZW5zdXM/DQpX aG8gc2hvdWxkIEkgYmFkZ2VyIHRvIGdldCB0aGF0IGRvbmU/DQoNCj4NCj4NCj4+Pi0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQo+Pj5Gcm9tOiBBcmQgQmllc2hldXZlbCBbbWFpbHRvOmFyZC5i aWVzaGV1dmVsQGxpbmFyby5vcmddDQo+Pj5TZW50OiAxMyBGZWJydWFyeSAyMDE3IDEzOjA1DQo+ Pj5UbzogRXZhbiBMbG95ZA0KPj4+Q2M6IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnOyBMZWlmIExp bmRob2xtOyByeWFuLmhhcmtpbkBsaW5hcm8ub3JnDQo+Pj5TdWJqZWN0OiBSZTogW1BBVENIIDQv NF0gQXJtUGtnOlByb3ZpZGUgR2V0VHJpZ2dlclR5cGUvU2V0VHJpZ2dlclR5cGUNCj4+PmZ1bmN0 aW9ucw0KPj4+DQo+Pj4oYXBvbG9naWVzIGZvciB0aGUgZGVsYXllZCBbYW5kIG5vdyBzb21ld2hh dCByZWR1bmRhbnRdIHJlc3BvbnNlLA0KPnRoaXMNCj4+PnNhdCBpbiBteSBvdXRib3ggc2luY2Ug dGhpcyBtb3JuaW5nKQ0KPj4+DQo+Pj5PbiA5IEZlYnJ1YXJ5IDIwMTcgYXQgMTk6MjYsICA8ZXZh bi5sbG95ZEBhcm0uY29tPiB3cm90ZToNCj4+Pj4gRnJvbTogR2lyaXNoIFBhdGhhayA8Z2lyaXNo LnBhdGhha0Bhcm0uY29tPg0KPj4+Pg0KPj4+PiBUaGlzIGNoYW5nZSBpbXBsZW1lbnRzIEdldFRy aWdnZXJUeXBlIGFuZCBTZXRUcmlnZ2VyVHlwZSBmdW5jdGlvbnMNCj4+Pj4gaW4gQXJtR2ljVjJE eGUgKEdpY1YyR2V0VHJpZ2dlclR5cGUvR2ljVjJTZXRUcmlnZ2VyVHlwZSkNCj4+Pj4gYW5kIEFy bUdpY1YzRHhlIChHaWNWM0dldFRyaWdnZXJUeXBlL0dpY1YzU2V0VHJpZ2dlclR5cGUpDQo+Pj4+ DQo+Pj4+IFNldFRyaWdnZXJUeXBlIGNvbmZpZ3VyZXMgdGhlIGludGVycnVwdCBtb2RlIG9mIGFu IGludGVycnVwdA0KPj4+PiBhcyBlZGdlIHNlbnNpdGl2ZSBvciBsZXZlbCBzZW5zaXRpdmUuDQo+ Pj4+DQo+Pj4+IEdldFRyaWdnZXJUeXBlIGZ1bmN0aW9uIHJldHVybnMgdGhlIG1vZGUgb2YgYW4g aW50ZXJydXB0Lg0KPj4+Pg0KPj4+PiBUaGUgcmVxdWlyZW1lbnQgZm9yIHRoaXMgY2hhbmdlIGRl cml2ZXMgZnJvbSBhIHByb2JsZW0gZGV0ZWN0ZWQgb24NCj4+PkFSTQ0KPj4+PiBKdW5vIGJvYXJk cywgYnV0IHRoZSBjaGFuZ2UgaXMgb2YgZ2VuZXJpYyByZWxldmFuY2UuDQo+Pj4+DQo+Pj4+IE5P VEU6IEF0IHRoaXMgcG9pbnQgdGhlIEdJQ3YzIGNvZGUgaXMgbm90IHRlc3RlZC4NCj4+Pj4NCj4+ Pj4gQ29udHJpYnV0ZWQtdW5kZXI6IFRpYW5vQ29yZSBDb250cmlidXRpb24gQWdyZWVtZW50IDEu MA0KPj4+PiBTaWduZWQtb2ZmLWJ5OiBHaXJpc2ggUGF0aGFrIDxnaXJpc2gucGF0aGFrQGFybS5j b20+DQo+Pj4+IFNpZ25lZC1vZmYtYnk6IEV2YW4gTGxveWQgPGV2YW4ubGxveWRAYXJtLmNvbT4N Cj4+Pj4gVGVzdGVkLWJ5OiBHaXJpc2ggUGF0aGFrIDxnaXJpc2gucGF0aGFrQGFybS5jb20+DQo+ Pj4NCj4+Pkl0J3MgcHJvYmFibHkgYmVzdCB0byByZW9yZGVyIHRoaXMgcGF0Y2ggd2l0aCAjMywg b3IgcGVyaGFwcyBmb2xkIGl0DQo+Pj5pbnRvICMyIGVudGlyZWx5Lg0KPj4+DQo+Pj4+IC0tLQ0K Pj4+PiAgQXJtUGtnL0luY2x1ZGUvTGlicmFyeS9Bcm1HaWNMaWIuaCAgICAgICAgfCAgIDQgKw0K Pj4+PiAgQXJtUGtnL0RyaXZlcnMvQXJtR2ljL0dpY1YyL0FybUdpY1YyRHhlLmMgfCAxNjUNCj4+ PisrKysrKysrKysrKysrKysrKy0tDQo+Pj4+ICBBcm1Qa2cvRHJpdmVycy9Bcm1HaWMvR2ljVjMv QXJtR2ljVjNEeGUuYyB8IDE1OQ0KPj4+KysrKysrKysrKysrKysrKystLQ0KPj4+PiAgMyBmaWxl cyBjaGFuZ2VkLCAzMDggaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pDQo+Pj4+DQo+Pj4+ IGRpZmYgLS1naXQgYS9Bcm1Qa2cvSW5jbHVkZS9MaWJyYXJ5L0FybUdpY0xpYi5oDQo+Pj5iL0Fy bVBrZy9JbmNsdWRlL0xpYnJhcnkvQXJtR2ljTGliLmgNCj4+Pj4gaW5kZXgNCj4+PjQzNjRmM2Zm ZWY0NjQ1OTZmNjRjZjU5ODgxZDcwM2NmNTRjZjBkZGQuLjY2MTBmMzU2YzIwZTczZDg0ZmYzYmE1 MTkNCj45NQ0KPj4+NmI0MjZkOTdlZjFlYiAxMDA2NDQNCj4+Pj4gLS0tIGEvQXJtUGtnL0luY2x1 ZGUvTGlicmFyeS9Bcm1HaWNMaWIuaA0KPj4+PiArKysgYi9Bcm1Qa2cvSW5jbHVkZS9MaWJyYXJ5 L0FybUdpY0xpYi5oDQo+Pj4+IEBAIC01MSw2ICs1MSwxMCBAQA0KPj4+PiAgI2RlZmluZSBBUk1f R0lDX0lDRERDUl9BUkUgICAgICAoMSA8PCA0KSAvLyBBZmZpbml0eSBSb3V0aW5nIEVuYWJsZQ0K Pj4+KEFSRSkNCj4+Pj4gICNkZWZpbmUgQVJNX0dJQ19JQ0REQ1JfRFMgICAgICAgKDEgPDwgNikg Ly8gRGlzYWJsZSBTZWN1cml0eSAoRFMpDQo+Pj4+DQo+Pj4+ICsvLyBHSUNEX0lDRElDRlIgYml0 cw0KPj4+PiArI2RlZmluZSBBUk1fR0lDX0lDRElDRlJfTEVWRUxfVFJJR0dFUkVEICAweDAgLy8g TGV2ZWwgdHJpZ2dlcmVkDQo+Pj5pbnRlcnJ1cHQNCj4+Pj4gKyNkZWZpbmUgQVJNX0dJQ19JQ0RJ Q0ZSX0VER0VfVFJJR0dFUkVEICAgMHgxIC8vIEVkZ2UgdHJpZ2dlcmVkDQo+Pj5pbnRlcnJ1cHQN Cj4+Pj4gKw0KPj4+PiAgLy8NCj4+Pj4gIC8vIEdJQyBSZWRpc3RyaWJ1dG9yDQo+Pj4+ICAvLw0K Pj4+PiBkaWZmIC0tZ2l0IGEvQXJtUGtnL0RyaXZlcnMvQXJtR2ljL0dpY1YyL0FybUdpY1YyRHhl LmMNCj4+PmIvQXJtUGtnL0RyaXZlcnMvQXJtR2ljL0dpY1YyL0FybUdpY1YyRHhlLmMNCj4+Pj4g aW5kZXgNCj4+PjhjNGQ2NjEyNWUyZThjN2FmOTg5OGYzMzZlZTc0MmVkMGFlYmYwNTguLjFmNDc0 MDNjNmNkYzdlOGMwZjZhYzY1DQo+ZDMNCj4+PmI5NWE1NjJkYTZhMmQzMiAxMDA2NDQNCj4+Pj4g LS0tIGEvQXJtUGtnL0RyaXZlcnMvQXJtR2ljL0dpY1YyL0FybUdpY1YyRHhlLmMNCj4+Pj4gKysr IGIvQXJtUGtnL0RyaXZlcnMvQXJtR2ljL0dpY1YyL0FybUdpY1YyRHhlLmMNCj4+Pj4gQEAgLTI5 LDYgKzI5LDcgQEAgQWJzdHJhY3Q6DQo+Pj4+ICAjZGVmaW5lIEFSTV9HSUNfREVGQVVMVF9QUklP UklUWSAgMHg4MA0KPj4+Pg0KPj4+PiAgZXh0ZXJuIEVGSV9IQVJEV0FSRV9JTlRFUlJVUFRfUFJP VE9DT0wNCj4+PmdIYXJkd2FyZUludGVycnVwdFYyUHJvdG9jb2w7DQo+Pj4+ICtleHRlcm4gRUZJ X0hBUkRXQVJFX0lOVEVSUlVQVDJfUFJPVE9DT0wNCj4+PmdIYXJkd2FyZUludGVycnVwdDJWMlBy b3RvY29sOw0KPj4+Pg0KPj4+PiAgU1RBVElDIFVJTlQzMiBtR2ljSW50ZXJydXB0SW50ZXJmYWNl QmFzZTsNCj4+Pj4gIFNUQVRJQyBVSU5UMzIgbUdpY0Rpc3RyaWJ1dG9yQmFzZTsNCj4+Pj4gQEAg LTE5MywxOSArMTk0LDk1IEBAIEVGSV9IQVJEV0FSRV9JTlRFUlJVUFRfUFJPVE9DT0wNCj4+PmdI YXJkd2FyZUludGVycnVwdFYyUHJvdG9jb2wgPSB7DQo+Pj4+ICAgIEdpY1YyRW5kT2ZJbnRlcnJ1 cHQNCj4+Pj4gIH07DQo+Pj4+DQo+Pj4+ICsvKioNCj4+Pj4gKyAgQ2FsY3VsYXRlIEdJQ0RfSUNG R1JuIGJhc2UgYWRkcmVzcyBhbmQgY29ycmVzcG9uZGluZyBiaXQNCj4+Pj4gKyAgZmllbGQgSW50 X2NvbmZpZ1sxXSBvZiB0aGUgR0lDIGRpc3RyaWJ1dG9yIHJlZ2lzdGVyLg0KPj4+PiArDQo+Pj4+ ICsgIEBwYXJhbSBTb3VyY2UgICAgICAgSGFyZHdhcmUgc291cmNlIG9mIHRoZSBpbnRlcnJ1cHQu DQo+Pj4+ICsgIEBwYXJhbSBSZWdBZGRyZXNzICAgQ29ycmVzcG9uZGluZyBHSUNEX0lDRkdSbiBi YXNlIGFkZHJlc3MuDQo+Pj4+ICsgIEBwYXJhbSBCaXROdW1iZXIgICAgQml0IG51bWJlciBpbiB0 aGUgcmVnaXN0ZXIgdG8gc2V0L3Jlc2V0Lg0KPj4+PiArDQo+Pj4+ICsgIEByZXR2YWwgRUZJX1NV Q0NFU1MgICAgICAgU291cmNlIGludGVycnVwdCBzdXBwb3J0ZWQuDQo+Pj4+ICsgIEByZXR2YWwg RUZJX1VOU1VQUE9SVEVEICAgU291cmNlIGludGVycnVwdCBpcyBub3Qgc3VwcG9ydGVkLg0KPj4+ PiArKiovDQo+Pj4+ICBTVEFUSUMNCj4+Pj4gIEVGSV9TVEFUVVMNCj4+Pj4gK0dpY0dldERpc3Ry aWJ1dG9ySW50ckNmZ0Jhc2VBbmRCaXRGaWVsZCAoDQo+Pj4+ICsgIElOIEhBUkRXQVJFX0lOVEVS UlVQVF9TT1VSQ0UgICAgICAgICAgICAgU291cmNlLA0KPj4+PiArICBPVVQgVUlOVE4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKlJlZ0FkZHJlc3MsDQo+Pj4+ICsgIE9VVCBVSU5UTiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqQml0TnVtYmVyDQo+Pj4+ICsgICkNCj4+Pj4g K3sNCj4+Pj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICBSZWdPZmZzZXQ7DQo+Pj4+ICsgIFVJ TlROICAgICAgICAgICAgICAgICAgRmllbGQ7DQo+Pj4+ICsNCj4+Pj4gKyAgaWYgKFNvdXJjZSA+ PSBtR2ljTnVtSW50ZXJydXB0cykgew0KPj4+PiArICAgIEFTU0VSVChTb3VyY2UgPCBtR2ljTnVt SW50ZXJydXB0cyk7DQo+Pj4+ICsgICAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4+Pj4gKyAg fQ0KPj4+PiArDQo+Pj4+ICsgIFJlZ09mZnNldCA9IFNvdXJjZSAvIDE2Ow0KPj4+PiArICBGaWVs ZCA9IFNvdXJjZSAlIDE2Ow0KPj4+PiArICAqUmVnQWRkcmVzcyA9IFBjZEdldDY0IChQY2RHaWNE aXN0cmlidXRvckJhc2UpDQo+Pj4+ICsgICAgICAgICAgICAgICAgICArIEFSTV9HSUNfSUNESUNG Ug0KPj4+PiArICAgICAgICAgICAgICAgICAgKyAoNCAqIFJlZ09mZnNldCk7DQo+Pj4+ICsgICpC aXROdW1iZXIgPSAoRmllbGQgKiAyKSArIDE7DQo+Pj4+ICsNCj4+Pj4gKyAgcmV0dXJuIEVGSV9T VUNDRVNTOw0KPj4+PiArfQ0KPj4+PiArDQo+Pj4+ICsvKioNCj4+Pj4gKyAgR2V0IGludGVycnVw dCB0cmlnZ2VyIHR5cGUgb2YgYW4gaW50ZXJydXB0DQo+Pj4+ICsNCj4+Pj4gKyAgQHBhcmFtIFRo aXMgICAgICAgICAgSW5zdGFuY2UgcG9pbnRlciBmb3IgdGhpcyBwcm90b2NvbA0KPj4+PiArICBA cGFyYW0gU291cmNlICAgICAgICBIYXJkd2FyZSBzb3VyY2Ugb2YgdGhlIGludGVycnVwdC4NCj4+ Pj4gKyAgQHBhcmFtIFRyaWdnZXJUeXBlICAgUmV0dXJucyBpbnRlcnJ1cHQgdHJpZ2dlciB0eXBl Lg0KPj4+PiArDQo+Pj4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgU291cmNlIGludGVy cnVwdCBzdXBwb3J0ZWQuDQo+Pj4+ICsgIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgU291cmNl IGludGVycnVwdCBpcyBub3Qgc3VwcG9ydGVkLg0KPj4+PiArKiovDQo+Pj4+ICtFRklfU1RBVFVT DQo+Pj4NCj4+PlNUQVRJQyA/DQo+Pj4NCj4+Pj4gIEVGSUFQSQ0KPj4+PiAgR2ljVjJHZXRUcmln Z2VyVHlwZSAoDQo+Pj4+ICAgIElOICBFRklfSEFSRFdBUkVfSU5URVJSVVBUMl9QUk9UT0NPTCAg ICAgICpUaGlzLA0KPj4+PiAtICBJTiAgSEFSRFdBUkVfSU5URVJSVVBUX1NPVVJDRSAgICAgICAg ICAgICBTb3VyY2UsDQo+Pj4+ICsgIElOICBIQVJEV0FSRV9JTlRFUlJVUFRfU09VUkNFICAgICAg ICAgICAgICBTb3VyY2UsDQo+Pj4+ICAgIE9VVCBFRklfSEFSRFdBUkVfSU5URVJSVVBUMl9UUklH R0VSX1RZUEUgICpUcmlnZ2VyVHlwZQ0KPj4+PiAgICApDQo+Pj4+ICB7DQo+Pj4+ICsgIFVJTlRO ICAgICAgICAgICAgICAgICAgIFJlZ0FkZHJlc3M7DQo+Pj4+ICsgIFVJTlROICAgICAgICAgICAg ICAgICAgIEJpdE51bWJlcjsNCj4+Pj4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgU3RhdHVz Ow0KPj4+PiArDQo+Pj4+ICsgIFJlZ0FkZHJlc3MgPSAwOw0KPj4+PiArICBCaXROdW1iZXIgID0g MDsNCj4+Pj4gKw0KPj4+PiArICBTdGF0dXMgPSBHaWNHZXREaXN0cmlidXRvckludHJDZmdCYXNl QW5kQml0RmllbGQgKA0KPj4+PiArICAgICAgICAgICAgICBTb3VyY2UsDQo+Pj4+ICsgICAgICAg ICAgICAgICZSZWdBZGRyZXNzLA0KPj4+PiArICAgICAgICAgICAgICAmQml0TnVtYmVyDQo+Pj4+ ICsgICAgICAgICAgICAgICk7DQo+Pj4+ICsNCj4+Pj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVz KSkgew0KPj4+PiArICAgIHJldHVybiBTdGF0dXM7DQo+Pj4+ICsgIH0NCj4+Pj4gKw0KPj4+PiAr ICAqVHJpZ2dlclR5cGUgPSAoTW1pb0JpdEZpZWxkUmVhZDMyIChSZWdBZGRyZXNzLCBCaXROdW1i ZXIsDQo+Pj5CaXROdW1iZXIpID09IDApDQo+Pj4+ICsgICAgICAgICAgICAgICAgID8gIEVGSV9I QVJEV0FSRV9JTlRFUlJVUFQyX1RSSUdHRVJfTEVWRUxfSElHSA0KPj4+PiArICAgICAgICAgICAg ICAgICA6ICBFRklfSEFSRFdBUkVfSU5URVJSVVBUMl9UUklHR0VSX0VER0VfUklTSU5HOw0KPj4+ PiArDQo+Pj4+ICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4+Pj4gIH0NCj4+Pj4NCj4+Pj4gLVNU QVRJQw0KPj4+DQo+Pj4/DQo+Pj4NCj4+Pj4gKy8qKg0KPj4+PiArICBTZXQgaW50ZXJydXB0IHRy aWdnZXIgdHlwZSBvZiBhbiBpbnRlcnJ1cHQNCj4+Pj4gKw0KPj4+PiArICBAcGFyYW0gVGhpcyAg ICAgICAgICBJbnN0YW5jZSBwb2ludGVyIGZvciB0aGlzIHByb3RvY29sDQo+Pj4+ICsgIEBwYXJh bSBTb3VyY2UgICAgICAgIEhhcmR3YXJlIHNvdXJjZSBvZiB0aGUgaW50ZXJydXB0Lg0KPj4+PiAr ICBAcGFyYW0gVHJpZ2dlclR5cGUgICBJbnRlcnJ1cHQgdHJpZ2dlciB0eXBlLg0KPj4+PiArDQo+ Pj4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgU291cmNlIGludGVycnVwdCBzdXBwb3J0 ZWQuDQo+Pj4+ICsgIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgU291cmNlIGludGVycnVwdCBp cyBub3Qgc3VwcG9ydGVkLg0KPj4+PiArKiovDQo+Pj4+ICBFRklfU1RBVFVTDQo+Pj4+ICBFRklB UEkNCj4+Pj4gIEdpY1YyU2V0VHJpZ2dlclR5cGUgKA0KPj4+PiBAQCAtMjE0LDIwICsyOTEsODMg QEAgR2ljVjJTZXRUcmlnZ2VyVHlwZSAoDQo+Pj4+ICAgIElOICBFRklfSEFSRFdBUkVfSU5URVJS VVBUMl9UUklHR0VSX1RZUEUgIFRyaWdnZXJUeXBlDQo+Pj4+ICAgICkNCj4+Pj4gIHsNCj4+Pj4g KyAgVUlOVE4gICAgICAgICAgICAgICAgICAgUmVnQWRkcmVzcyA9IDA7DQo+Pj4+ICsgIFVJTlRO ICAgICAgICAgICAgICAgICAgIEJpdE51bWJlciA9IDA7DQo+Pj4+ICsgIFVJTlQzMiAgICAgICAg ICAgICAgICAgIFZhbHVlOw0KPj4+PiArICBFRklfU1RBVFVTICAgICAgICAgICAgICBTdGF0dXM7 DQo+Pj4+ICsgIEJPT0xFQU4gICAgICAgICAgICAgICAgIEludHJTb3VyY2VFbmFibGVkOw0KPj4+ PiArDQo+Pj4+ICsgIGlmIChUcmlnZ2VyVHlwZSAhPQ0KPj4+RUZJX0hBUkRXQVJFX0lOVEVSUlVQ VDJfVFJJR0dFUl9FREdFX1JJU0lORw0KPj4+PiArICAgICAmJiBUcmlnZ2VyVHlwZSAhPQ0KPj4+ RUZJX0hBUkRXQVJFX0lOVEVSUlVQVDJfVFJJR0dFUl9MRVZFTF9ISUdIKSB7DQo+Pj4+ICsgICAg ICAgICAgREVCVUcgKChFRklfRF9FUlJPUiwgIkludmFsaWQgaW50ZXJydXB0IHRyaWdnZXIgdHlw ZTogJWRcbiIsIFwNCj4+Pj4gKyAgICAgICAgICAgICAgICAgIFRyaWdnZXJUeXBlKSk7DQo+Pj4+ ICsgICAgICAgICAgQVNTRVJUIChGQUxTRSk7DQo+Pj4+ICsgICAgICAgICAgcmV0dXJuIEVGSV9V TlNVUFBPUlRFRDsNCj4+Pj4gKyAgfQ0KPj4+PiArDQo+Pj4+ICsgIFN0YXR1cyA9IEdpY0dldERp c3RyaWJ1dG9ySW50ckNmZ0Jhc2VBbmRCaXRGaWVsZCAoDQo+Pj4+ICsgICAgICAgICAgICAgU291 cmNlLA0KPj4+PiArICAgICAgICAgICAgICZSZWdBZGRyZXNzLA0KPj4+PiArICAgICAgICAgICAg ICZCaXROdW1iZXINCj4+Pj4gKyAgICAgICAgICAgICApOw0KPj4+PiArDQo+Pj4+ICsgIGlmIChF RklfRVJST1IgKFN0YXR1cykpIHsNCj4+Pj4gKyAgICByZXR1cm4gU3RhdHVzOw0KPj4+PiArICB9 DQo+Pj4+ICsNCj4+Pj4gKyAgU3RhdHVzID0gR2ljVjJHZXRJbnRlcnJ1cHRTb3VyY2VTdGF0ZSAo DQo+Pj4+ICsgICAgICAgICAgICAgKEVGSV9IQVJEV0FSRV9JTlRFUlJVUFRfUFJPVE9DT0wqKVRo aXMsDQo+Pj4+ICsgICAgICAgICAgICAgU291cmNlLA0KPj4+PiArICAgICAgICAgICAgICZJbnRy U291cmNlRW5hYmxlZA0KPj4+PiArICAgICAgICAgICAgICk7DQo+Pj4+ICsNCj4+Pj4gKyAgaWYg KEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPj4+PiArICAgIHJldHVybiBTdGF0dXM7DQo+Pj4+ICsg IH0NCj4+Pj4gKw0KPj4+PiArICBWYWx1ZSA9IChUcmlnZ2VyVHlwZSA9PQ0KPj4+RUZJX0hBUkRX QVJFX0lOVEVSUlVQVDJfVFJJR0dFUl9FREdFX1JJU0lORykNCj4+Pj4gKyAgICAgICAgICA/ICBB Uk1fR0lDX0lDRElDRlJfRURHRV9UUklHR0VSRUQNCj4+Pj4gKyAgICAgICAgICA6ICBBUk1fR0lD X0lDRElDRlJfTEVWRUxfVFJJR0dFUkVEOw0KPj4+PiArDQo+Pj4+ICsgIC8vDQo+Pj4+ICsgIC8v IEJlZm9yZSBjaGFuZ2luZyB0aGUgdmFsdWUsIHdlIG11c3QgZGlzYWJsZSB0aGUgaW50ZXJydXB0 LA0KPj4+PiArICAvLyBvdGhlcndpc2UgR0lDIGJlaGF2aW9yIGlzIFVOUFJFRElDVEFCTEUuDQo+ Pj4+ICsgIC8vDQo+Pj4+ICsgIGlmIChJbnRyU291cmNlRW5hYmxlZCkgew0KPj4+PiArICAgIEdp Y1YyRGlzYWJsZUludGVycnVwdFNvdXJjZSAoDQo+Pj4+ICsgICAgICAoRUZJX0hBUkRXQVJFX0lO VEVSUlVQVF9QUk9UT0NPTCopVGhpcywNCj4+Pj4gKyAgICAgIFNvdXJjZQ0KPj4+PiArICAgICAg KTsNCj4+Pj4gKyAgfQ0KPj4+PiArDQo+Pj4+ICsgIE1taW9BbmRUaGVuT3IzMiAoDQo+Pj4+ICsg ICAgUmVnQWRkcmVzcywNCj4+Pj4gKyAgICB+KDB4MSA8PCBCaXROdW1iZXIpLA0KPj4+PiArICAg IFZhbHVlIDw8IEJpdE51bWJlcg0KPj4+PiArICAgICk7DQo+Pj4+ICsgIC8vDQo+Pj4+ICsgIC8v IFJlc3RvcmUgaW50ZXJydXB0IHN0YXRlDQo+Pj4+ICsgIC8vDQo+Pj4+ICsgIGlmIChJbnRyU291 cmNlRW5hYmxlZCkgew0KPj4+PiArICAgIEdpY1YyRW5hYmxlSW50ZXJydXB0U291cmNlICgNCj4+ Pj4gKyAgICAgIChFRklfSEFSRFdBUkVfSU5URVJSVVBUX1BST1RPQ09MKilUaGlzLA0KPj4+PiAr ICAgICAgU291cmNlDQo+Pj4+ICsgICAgICApOw0KPj4+PiArICB9DQo+Pj4+ICsNCj4+Pj4gICAg cmV0dXJuIEVGSV9TVUNDRVNTOw0KPj4+PiAgfQ0KPj4+Pg0KPj4+PiAtU1RBVElDIEVGSV9IQVJE V0FSRV9JTlRFUlJVUFQyX1BST1RPQ09MDQo+Pj5nSGFyZHdhcmVJbnRlcnJ1cHQyVjJQcm90b2Nv bCA9IHsNCj4+Pj4gLSAgKEhBUkRXQVJFX0lOVEVSUlVQVDJfUkVHSVNURVIpUmVnaXN0ZXJJbnRl cnJ1cHRTb3VyY2UsDQo+Pj4+IC0gIChIQVJEV0FSRV9JTlRFUlJVUFQyX0VOQUJMRSlHaWNWMkVu YWJsZUludGVycnVwdFNvdXJjZSwNCj4+Pj4gLSAgKEhBUkRXQVJFX0lOVEVSUlVQVDJfRElTQUJM RSlHaWNWMkRpc2FibGVJbnRlcnJ1cHRTb3VyY2UsDQo+Pj4+IC0NCj4+PihIQVJEV0FSRV9JTlRF UlJVUFQyX0lOVEVSUlVQVF9TVEFURSlHaWNWMkdldEludGVycnVwdFNvdXJjZQ0KPlN0YQ0KPj4+ dGUsDQo+Pj4+IC0NCj4oSEFSRFdBUkVfSU5URVJSVVBUMl9FTkRfT0ZfSU5URVJSVVBUKUdpY1Yy RW5kT2ZJbnRlcnJ1cHQsDQo+Pj4+ICtFRklfSEFSRFdBUkVfSU5URVJSVVBUMl9QUk9UT0NPTA0K Pj4+Z0hhcmR3YXJlSW50ZXJydXB0MlYyUHJvdG9jb2wgPSB7DQo+Pj4+ICsgIChIQVJEV0FSRV9J TlRFUlJVUFQyX1JFR0lTVEVSKSBSZWdpc3RlckludGVycnVwdFNvdXJjZSwNCj4+Pj4gKyAgKEhB UkRXQVJFX0lOVEVSUlVQVDJfRU5BQkxFKSBHaWNWMkVuYWJsZUludGVycnVwdFNvdXJjZSwNCj4+ Pj4gKyAgKEhBUkRXQVJFX0lOVEVSUlVQVDJfRElTQUJMRSkgR2ljVjJEaXNhYmxlSW50ZXJydXB0 U291cmNlLA0KPj4+PiArICAoSEFSRFdBUkVfSU5URVJSVVBUMl9JTlRFUlJVUFRfU1RBVEUpDQo+ Pj5HaWNWMkdldEludGVycnVwdFNvdXJjZVN0YXRlLA0KPj4+PiArICAoSEFSRFdBUkVfSU5URVJS VVBUMl9FTkRfT0ZfSU5URVJSVVBUKQ0KPkdpY1YyRW5kT2ZJbnRlcnJ1cHQsDQo+Pj4NCj4+PlBs ZWFzZSBubyBzcGFjZXMgYWZ0ZXIgY2FzdHMNCj4+Pg0KPj4+PiAgICBHaWNWMkdldFRyaWdnZXJU eXBlLA0KPj4+PiAgICBHaWNWMlNldFRyaWdnZXJUeXBlDQo+Pj4+ICB9Ow0KPj4+Pg0KPj4+PiAt DQo+Pj4NCj4+PlNwdXJpb3VzIHdoaXRlc3BhY2UgY2hhbmdlDQo+Pj4NCj4+Pj4gIC8qKg0KPj4+ PiAgICBTaHV0ZG93biBvdXIgaGFyZHdhcmUNCj4+Pj4NCj4+Pj4gQEAgLTM0Niw4ICs0ODYsMTEg QEAgR2ljVjJEeGVJbml0aWFsaXplICgNCj4+Pj4gICAgQXJtR2ljRW5hYmxlRGlzdHJpYnV0b3Ig KG1HaWNEaXN0cmlidXRvckJhc2UpOw0KPj4+Pg0KPj4+PiAgICBTdGF0dXMgPSBJbnN0YWxsQW5k UmVnaXN0ZXJJbnRlcnJ1cHRTZXJ2aWNlICgNCj4+Pj4gLSAgICAgICAgICAgICAmZ0hhcmR3YXJl SW50ZXJydXB0VjJQcm90b2NvbCwNCj4+PiZnSGFyZHdhcmVJbnRlcnJ1cHQyVjJQcm90b2NvbCwN Cj4+Pj4gLSAgICAgICAgICAgICBHaWNWMklycUludGVycnVwdEhhbmRsZXIsIEdpY1YyRXhpdEJv b3RTZXJ2aWNlc0V2ZW50KTsNCj4+Pj4gKyAgICAgICAgICAgICAmZ0hhcmR3YXJlSW50ZXJydXB0 VjJQcm90b2NvbCwNCj4+Pj4gKyAgICAgICAgICAgICAmZ0hhcmR3YXJlSW50ZXJydXB0MlYyUHJv dG9jb2wsDQo+Pj4+ICsgICAgICAgICAgICAgR2ljVjJJcnFJbnRlcnJ1cHRIYW5kbGVyLA0KPj4+ PiArICAgICAgICAgICAgIEdpY1YyRXhpdEJvb3RTZXJ2aWNlc0V2ZW50DQo+Pj4+ICsgICAgICAg ICAgICAgKTsNCj4+Pj4NCj4+Pg0KPj4+U3B1cmlvdXMgd2hpdGVzcGFjZSBjaGFuZ2UNCj4+Pg0K Pj4+PiAgICByZXR1cm4gU3RhdHVzOw0KPj4+PiAgfQ0KPj4+PiBkaWZmIC0tZ2l0IGEvQXJtUGtn L0RyaXZlcnMvQXJtR2ljL0dpY1YzL0FybUdpY1YzRHhlLmMNCj4+PmIvQXJtUGtnL0RyaXZlcnMv QXJtR2ljL0dpY1YzL0FybUdpY1YzRHhlLmMNCj4+Pj4gaW5kZXgNCj4+PjAyZGVlZWY3OGI2ZDc3 MzcxNzJhNTk5MmM2ZGVjYWM0M2NmZGQ2NGEuLmEwMzgzZWNkNzczODc1MGY3M2EyMjUNCj4zODEN Cj4+PjE0MDNkNmVkMGQyZmQ1MSAxMDA2NDQNCj4+Pj4gLS0tIGEvQXJtUGtnL0RyaXZlcnMvQXJt R2ljL0dpY1YzL0FybUdpY1YzRHhlLmMNCj4+Pj4gKysrIGIvQXJtUGtnL0RyaXZlcnMvQXJtR2lj L0dpY1YzL0FybUdpY1YzRHhlLmMNCj4+Pj4gQEAgLTE5LDYgKzE5LDcgQEANCj4+Pj4gICNkZWZp bmUgQVJNX0dJQ19ERUZBVUxUX1BSSU9SSVRZICAweDgwDQo+Pj4+DQo+Pj4+ICBleHRlcm4gRUZJ X0hBUkRXQVJFX0lOVEVSUlVQVF9QUk9UT0NPTA0KPj4+Z0hhcmR3YXJlSW50ZXJydXB0VjNQcm90 b2NvbDsNCj4+Pj4gK2V4dGVybiBFRklfSEFSRFdBUkVfSU5URVJSVVBUMl9QUk9UT0NPTA0KPj4+ Z0hhcmR3YXJlSW50ZXJydXB0MlYzUHJvdG9jb2w7DQo+Pj4+DQo+Pj4+ICBTVEFUSUMgVUlOVE4g bUdpY0Rpc3RyaWJ1dG9yQmFzZTsNCj4+Pj4gIFNUQVRJQyBVSU5UTiBtR2ljUmVkaXN0cmlidXRv cnNCYXNlOw0KPj4+PiBAQCAtMTg0LDggKzE4NSw1NCBAQCBFRklfSEFSRFdBUkVfSU5URVJSVVBU X1BST1RPQ09MDQo+Pj5nSGFyZHdhcmVJbnRlcnJ1cHRWM1Byb3RvY29sID0gew0KPj4+PiAgICBH aWNWM0VuZE9mSW50ZXJydXB0DQo+Pj4+ICB9Ow0KPj4+Pg0KPj4+PiArLyoqDQo+Pj4+ICsgIENh bGN1bGF0ZSBHSUNEX0lDRkdSbiBiYXNlIGFkZHJlc3MgYW5kIGNvcnJlc3BvbmRpbmcgYml0DQo+ Pj4+ICsgIGZpZWxkIEludF9jb25maWdbMV0gaW4gdGhlIEdJQyBkaXN0cmlidXRvciByZWdpc3Rl ci4NCj4+Pj4gKw0KPj4+PiArICBAcGFyYW0gU291cmNlICAgICAgIEhhcmR3YXJlIHNvdXJjZSBv ZiB0aGUgaW50ZXJydXB0Lg0KPj4+PiArICBAcGFyYW0gUmVnQWRkcmVzcyAgIENvcnJlc3BvbmRp bmcgR0lDRF9JQ0ZHUm4gYmFzZSBhZGRyZXNzLg0KPj4+PiArICBAcGFyYW0gQml0TnVtYmVyICAg IEJpdCBudW1iZXIgaW4gdGhlIHJlZ2lzdGVyIHRvIHNldC9yZXNldC4NCj4+Pj4gKw0KPj4+PiAr ICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgIFNvdXJjZSBpbnRlcnJ1cHQgc3VwcG9ydGVkLg0K Pj4+PiArICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgIFNvdXJjZSBpbnRlcnJ1cHQgaXMgbm90 IHN1cHBvcnRlZC4NCj4+Pj4gKyoqLw0KPj4+PiAgU1RBVElDDQo+Pj4+ICBFRklfU1RBVFVTDQo+ Pj4+ICtHaWNHZXREaXN0cmlidXRvckludHJDZmdCYXNlQW5kQml0RmllbGQgKA0KPj4+PiArICBJ TiBIQVJEV0FSRV9JTlRFUlJVUFRfU09VUkNFICAgICAgICAgICAgICBTb3VyY2UsDQo+Pj4+ICsg IE9VVCBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlJlZ0FkZHJlc3MsDQo+ Pj4+ICsgIE9VVCBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKkJpdE51bWJl cg0KPj4+PiArICApDQo+Pj4+ICt7DQo+Pj4+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgIFJl Z09mZnNldDsNCj4+Pj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgRmllbGQ7DQo+Pj4+ICsN Cj4+Pj4gKyAgaWYgKFNvdXJjZSA+PSBtR2ljTnVtSW50ZXJydXB0cykgew0KPj4+PiArICAgIEFT U0VSVChGQUxTRSk7DQo+Pj4+ICsgICAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4+Pj4gKyAg fQ0KPj4+PiArDQo+Pj4+ICsgIFJlZ09mZnNldCA9IFNvdXJjZSAvIDE2Ow0KPj4+PiArICBGaWVs ZCA9IFNvdXJjZSAlIDE2Ow0KPj4+PiArICAqUmVnQWRkcmVzcyA9IFBjZEdldDY0IChQY2RHaWNE aXN0cmlidXRvckJhc2UpDQo+Pj4+ICsgICAgICAgICAgICAgICAgICArIEFSTV9HSUNfSUNESUNG Ug0KPj4+PiArICAgICAgICAgICAgICAgICAgKyAoNCAqIFJlZ09mZnNldCk7DQo+Pj4+ICsgICpC aXROdW1iZXIgPSAoRmllbGQgKiAyKSArIDE7DQo+Pj4+ICsNCj4+Pj4gKyAgcmV0dXJuIEVGSV9T VUNDRVNTOw0KPj4+PiArfQ0KPj4+PiArDQo+Pj4+ICsvKioNCj4+Pj4gKyAgR2V0IGludGVycnVw dCB0cmlnZ2VyIHR5cGUgb2YgYW4gaW50ZXJydXB0DQo+Pj4+ICsNCj4+Pj4gKyAgQHBhcmFtIFRo aXMgICAgICAgICAgSW5zdGFuY2UgcG9pbnRlciBmb3IgdGhpcyBwcm90b2NvbA0KPj4+PiArICBA cGFyYW0gU291cmNlICAgICAgICBIYXJkd2FyZSBzb3VyY2Ugb2YgdGhlIGludGVycnVwdC4NCj4+ Pj4gKyAgQHBhcmFtIFRyaWdnZXJUeXBlICAgUmV0dXJucyBpbnRlcnJ1cHQgdHJpZ2dlciB0eXBl Lg0KPj4+PiArDQo+Pj4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgU291cmNlIGludGVy cnVwdCBzdXBwb3J0ZWQuDQo+Pj4+ICsgIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgU291cmNl IGludGVycnVwdCBpcyBub3Qgc3VwcG9ydGVkLg0KPj4+PiArKiovDQo+Pj4+ICtFRklfU1RBVFVT DQo+Pj4NCj4+PlNUQVRJQyA/DQo+Pj4NCj4+Pj4gIEVGSUFQSQ0KPj4+PiAgR2ljVjNHZXRUcmln Z2VyVHlwZSAoDQo+Pj4+ICAgIElOICBFRklfSEFSRFdBUkVfSU5URVJSVVBUMl9QUk9UT0NPTCAg ICAgICpUaGlzLA0KPj4+PiBAQCAtMTkzLDEwICsyNDAsMzcgQEAgR2ljVjNHZXRUcmlnZ2VyVHlw ZSAoDQo+Pj4+ICAgIE9VVCBFRklfSEFSRFdBUkVfSU5URVJSVVBUMl9UUklHR0VSX1RZUEUgICpU cmlnZ2VyVHlwZQ0KPj4+PiAgICApDQo+Pj4+ICB7DQo+Pj4+ICsgIFVJTlROICAgICAgICAgICAg ICAgICAgIFJlZ0FkZHJlc3MgPSAwOw0KPj4+PiArICBVSU5UTiAgICAgICAgICAgICAgICAgICBC aXROdW1iZXIgPSAwOw0KPj4+PiArICBFRklfU1RBVFVTICAgICAgICAgICAgICBTdGF0dXM7DQo+ Pj4+ICsNCj4+Pj4gKyAgU3RhdHVzID0gR2ljR2V0RGlzdHJpYnV0b3JJbnRyQ2ZnQmFzZUFuZEJp dEZpZWxkICgNCj4+Pj4gKyAgICAgICAgICAgICBTb3VyY2UsDQo+Pj4+ICsgICAgICAgICAgICAg JlJlZ0FkZHJlc3MsDQo+Pj4+ICsgICAgICAgICAgICAgJkJpdE51bWJlcg0KPj4+PiArICAgICAg ICAgICAgICk7DQo+Pj4+ICsNCj4+Pj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPj4+ PiArICAgIHJldHVybiBTdGF0dXM7DQo+Pj4+ICsgIH0NCj4+Pj4gKw0KPj4+PiArICAqVHJpZ2dl clR5cGUgPSAoTW1pb0JpdEZpZWxkUmVhZDMyIChSZWdBZGRyZXNzLCBCaXROdW1iZXIsDQo+Pj5C aXROdW1iZXIpID09IDApDQo+Pj4+ICsgICAgICAgICAgICAgICAgID8gIEVGSV9IQVJEV0FSRV9J TlRFUlJVUFQyX1RSSUdHRVJfTEVWRUxfSElHSA0KPj4+PiArICAgICAgICAgICAgICAgICA6ICBF RklfSEFSRFdBUkVfSU5URVJSVVBUMl9UUklHR0VSX0VER0VfUklTSU5HOw0KPj4+PiArDQo+Pj4+ ICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4+Pj4gIH0NCj4+Pj4NCj4+Pj4gLVNUQVRJQw0KPj4+ PiArLyoqDQo+Pj4+ICsgIFNldCBpbnRlcnJ1cHQgdHJpZ2dlciB0eXBlIG9mIGFuIGludGVycnVw dA0KPj4+PiArDQo+Pj4+ICsgIEBwYXJhbSBUaGlzICAgICAgICAgIEluc3RhbmNlIHBvaW50ZXIg Zm9yIHRoaXMgcHJvdG9jb2wNCj4+Pj4gKyAgQHBhcmFtIFNvdXJjZSAgICAgICAgSGFyZHdhcmUg c291cmNlIG9mIHRoZSBpbnRlcnJ1cHQuDQo+Pj4+ICsgIEBwYXJhbSBUcmlnZ2VyVHlwZSAgIElu dGVycnVwdCB0cmlnZ2VyIHR5cGUuDQo+Pj4+ICsNCj4+Pj4gKyAgQHJldHZhbCBFRklfU1VDQ0VT UyAgICAgICBTb3VyY2UgaW50ZXJydXB0IHN1cHBvcnRlZC4NCj4+Pj4gKyAgQHJldHZhbCBFRklf VU5TVVBQT1JURUQgICBTb3VyY2UgaW50ZXJydXB0IGlzIG5vdCBzdXBwb3J0ZWQuDQo+Pj4+ICsq Ki8NCj4+Pj4gIEVGSV9TVEFUVVMNCj4+Pj4gIEVGSUFQSQ0KPj4+PiAgR2ljVjNTZXRUcmlnZ2Vy VHlwZSAoDQo+Pj4+IEBAIC0yMDUsMTUgKzI3OSw3OSBAQCBHaWNWM1NldFRyaWdnZXJUeXBlICgN Cj4+Pj4gICAgSU4gIEVGSV9IQVJEV0FSRV9JTlRFUlJVUFQyX1RSSUdHRVJfVFlQRSAgVHJpZ2dl clR5cGUNCj4+Pj4gICAgKQ0KPj4+PiAgew0KPj4+PiArICBVSU5UTiAgICAgICAgICAgICAgICAg ICBSZWdBZGRyZXNzOw0KPj4+PiArICBVSU5UTiAgICAgICAgICAgICAgICAgICBCaXROdW1iZXI7 DQo+Pj4+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgIFZhbHVlOw0KPj4+PiArICBFRklfU1RB VFVTICAgICAgICAgICAgICBTdGF0dXM7DQo+Pj4+ICsgIEJPT0xFQU4gICAgICAgICAgICAgICAg IEludHJTb3VyY2VFbmFibGVkOw0KPj4+PiArDQo+Pj4+ICsgIGlmIChUcmlnZ2VyVHlwZSAhPQ0K Pj4+RUZJX0hBUkRXQVJFX0lOVEVSUlVQVDJfVFJJR0dFUl9FREdFX1JJU0lORw0KPj4+PiArICAg ICAmJiBUcmlnZ2VyVHlwZSAhPQ0KPj4+RUZJX0hBUkRXQVJFX0lOVEVSUlVQVDJfVFJJR0dFUl9M RVZFTF9ISUdIKSB7DQo+Pj4+ICsgICAgICAgICAgREVCVUcgKChFRklfRF9FUlJPUiwgIkludmFs aWQgaW50ZXJydXB0IHRyaWdnZXIgdHlwZTogJWRcbiIsIFwNCj4+Pj4gKyAgICAgICAgICAgICAg ICAgVHJpZ2dlclR5cGUpKTsNCj4+Pj4gKyAgICAgICAgICBBU1NFUlQgKEZBTFNFKTsNCj4+Pj4g KyAgICAgICAgICByZXR1cm4gRUZJX1VOU1VQUE9SVEVEOw0KPj4+PiArICB9DQo+Pj4+ICsNCj4+ Pj4gKyAgU3RhdHVzID0gR2ljR2V0RGlzdHJpYnV0b3JJbnRyQ2ZnQmFzZUFuZEJpdEZpZWxkICgN Cj4+Pj4gKyAgICAgICAgICAgICBTb3VyY2UsDQo+Pj4+ICsgICAgICAgICAgICAgJlJlZ0FkZHJl c3MsDQo+Pj4+ICsgICAgICAgICAgICAgJkJpdE51bWJlcg0KPj4+PiArICAgICAgICAgICAgICk7 DQo+Pj4+ICsNCj4+Pj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPj4+PiArICAgIHJl dHVybiBTdGF0dXM7DQo+Pj4+ICsgIH0NCj4+Pj4gKw0KPj4+PiArICBTdGF0dXMgPSBHaWNWM0dl dEludGVycnVwdFNvdXJjZVN0YXRlICgNCj4+Pj4gKyAgICAgICAgICAgICAoRUZJX0hBUkRXQVJF X0lOVEVSUlVQVF9QUk9UT0NPTCopVGhpcywNCj4+Pj4gKyAgICAgICAgICAgICBTb3VyY2UsDQo+ Pj4+ICsgICAgICAgICAgICAgJkludHJTb3VyY2VFbmFibGVkDQo+Pj4+ICsgICAgICAgICAgICAg KTsNCj4+Pj4gKw0KPj4+PiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+Pj4+ICsgICAg cmV0dXJuIFN0YXR1czsNCj4+Pj4gKyAgfQ0KPj4+PiArDQo+Pj4+ICsgIFZhbHVlID0gKFRyaWdn ZXJUeXBlID09DQo+Pj5FRklfSEFSRFdBUkVfSU5URVJSVVBUMl9UUklHR0VSX0VER0VfUklTSU5H KQ0KPj4+PiArICAgICAgICAgID8gIEFSTV9HSUNfSUNESUNGUl9FREdFX1RSSUdHRVJFRA0KPj4+ PiArICAgICAgICAgIDogIEFSTV9HSUNfSUNESUNGUl9MRVZFTF9UUklHR0VSRUQ7DQo+Pj4+ICsN Cj4+Pj4gKyAgLy8NCj4+Pj4gKyAgLy8gQmVmb3JlIGNoYW5naW5nIHRoZSB2YWx1ZSwgd2UgbXVz dCBkaXNhYmxlIHRoZSBpbnRlcnJ1cHQsDQo+Pj4+ICsgIC8vIG90aGVyd2lzZSBHSUMgYmVoYXZp b3IgaXMgVU5QUkVESUNUQUJMRS4NCj4+Pj4gKyAgLy8NCj4+Pj4gKyAgaWYgKEludHJTb3VyY2VF bmFibGVkKSB7DQo+Pj4+ICsgICAgR2ljVjNEaXNhYmxlSW50ZXJydXB0U291cmNlICgNCj4+Pj4g KyAgICAgIChFRklfSEFSRFdBUkVfSU5URVJSVVBUX1BST1RPQ09MKilUaGlzLA0KPj4+PiArICAg ICAgU291cmNlDQo+Pj4+ICsgICAgICApOw0KPj4+PiArICB9DQo+Pj4+ICsNCj4+Pj4gKyAgTW1p b0FuZFRoZW5PcjMyICgNCj4+Pj4gKyAgICBSZWdBZGRyZXNzLA0KPj4+PiArICAgIH4oMHgxIDw8 IEJpdE51bWJlciksDQo+Pj4+ICsgICAgVmFsdWUgPDwgQml0TnVtYmVyDQo+Pj4+ICsgICAgKTsN Cj4+Pj4gKyAgLy8NCj4+Pj4gKyAgLy8gUmVzdG9yZSBpbnRlcnJ1cHQgc3RhdGUNCj4+Pj4gKyAg Ly8NCj4+Pj4gKyAgaWYgKEludHJTb3VyY2VFbmFibGVkKSB7DQo+Pj4+ICsgICAgR2ljVjNFbmFi bGVJbnRlcnJ1cHRTb3VyY2UgKA0KPj4+PiArICAgICAgKEVGSV9IQVJEV0FSRV9JTlRFUlJVUFRf UFJPVE9DT0wqKVRoaXMsDQo+Pj4+ICsgICAgICBTb3VyY2UNCj4+Pj4gKyAgICAgICk7DQo+Pj4+ ICsgIH0NCj4+Pj4gKw0KPj4+PiAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+Pj4+ICB9DQo+Pj4+ DQo+Pj4+IC1TVEFUSUMgRUZJX0hBUkRXQVJFX0lOVEVSUlVQVDJfUFJPVE9DT0wNCj4+PmdIYXJk d2FyZUludGVycnVwdDJWM1Byb3RvY29sID0gew0KPj4+PiAtICAoSEFSRFdBUkVfSU5URVJSVVBU Ml9SRUdJU1RFUilSZWdpc3RlckludGVycnVwdFNvdXJjZSwNCj4+Pj4gLSAgKEhBUkRXQVJFX0lO VEVSUlVQVDJfRU5BQkxFKUdpY1YzRW5hYmxlSW50ZXJydXB0U291cmNlLA0KPj4+PiAtICAoSEFS RFdBUkVfSU5URVJSVVBUMl9ESVNBQkxFKUdpY1YzRGlzYWJsZUludGVycnVwdFNvdXJjZSwNCj4+ Pj4gLQ0KPj4+KEhBUkRXQVJFX0lOVEVSUlVQVDJfSU5URVJSVVBUX1NUQVRFKUdpY1YzR2V0SW50 ZXJydXB0U291cmNlDQo+U3RhDQo+Pj50ZSwNCj4+Pj4gLQ0KPihIQVJEV0FSRV9JTlRFUlJVUFQy X0VORF9PRl9JTlRFUlJVUFQpR2ljVjNFbmRPZkludGVycnVwdCwNCj4+Pj4gK0VGSV9IQVJEV0FS RV9JTlRFUlJVUFQyX1BST1RPQ09MDQo+Pj5nSGFyZHdhcmVJbnRlcnJ1cHQyVjNQcm90b2NvbCA9 IHsNCj4+Pj4gKyAgKEhBUkRXQVJFX0lOVEVSUlVQVDJfUkVHSVNURVIpIFJlZ2lzdGVySW50ZXJy dXB0U291cmNlLA0KPj4+PiArICAoSEFSRFdBUkVfSU5URVJSVVBUMl9FTkFCTEUpIEdpY1YzRW5h YmxlSW50ZXJydXB0U291cmNlLA0KPj4+PiArICAoSEFSRFdBUkVfSU5URVJSVVBUMl9ESVNBQkxF KSBHaWNWM0Rpc2FibGVJbnRlcnJ1cHRTb3VyY2UsDQo+Pj4+ICsgIChIQVJEV0FSRV9JTlRFUlJV UFQyX0lOVEVSUlVQVF9TVEFURSkNCj4+PkdpY1YzR2V0SW50ZXJydXB0U291cmNlU3RhdGUsDQo+ Pj4+ICsgIChIQVJEV0FSRV9JTlRFUlJVUFQyX0VORF9PRl9JTlRFUlJVUFQpDQo+R2ljVjNFbmRP ZkludGVycnVwdCwNCj4+Pj4gICAgR2ljVjNHZXRUcmlnZ2VyVHlwZSwNCj4+Pj4gICAgR2ljVjNT ZXRUcmlnZ2VyVHlwZQ0KPj4+PiAgfTsNCj4+Pj4gQEAgLTM2NSw4ICs1MDMsMTEgQEAgR2ljVjNE eGVJbml0aWFsaXplICgNCj4+Pj4gICAgQXJtR2ljRW5hYmxlRGlzdHJpYnV0b3IgKG1HaWNEaXN0 cmlidXRvckJhc2UpOw0KPj4+Pg0KPj4+PiAgICBTdGF0dXMgPSBJbnN0YWxsQW5kUmVnaXN0ZXJJ bnRlcnJ1cHRTZXJ2aWNlICgNCj4+Pj4gLSAgICAgICAgICAgICAmZ0hhcmR3YXJlSW50ZXJydXB0 VjNQcm90b2NvbCwNCj4+PiZnSGFyZHdhcmVJbnRlcnJ1cHQyVjNQcm90b2NvbCwNCj4+Pj4gLSAg ICAgICAgICAgICBHaWNWM0lycUludGVycnVwdEhhbmRsZXIsIEdpY1YzRXhpdEJvb3RTZXJ2aWNl c0V2ZW50KTsNCj4+Pj4gKyAgICAgICAgICAgICAmZ0hhcmR3YXJlSW50ZXJydXB0VjNQcm90b2Nv bCwNCj4+Pj4gKyAgICAgICAgICAgICAmZ0hhcmR3YXJlSW50ZXJydXB0MlYzUHJvdG9jb2wsDQo+ Pj4+ICsgICAgICAgICAgICAgR2ljVjNJcnFJbnRlcnJ1cHRIYW5kbGVyLA0KPj4+PiArICAgICAg ICAgICAgIEdpY1YzRXhpdEJvb3RTZXJ2aWNlc0V2ZW50DQo+Pj4+ICsgICAgICAgICAgICAgKTsN Cj4+Pj4NCj4+Pj4gICAgcmV0dXJuIFN0YXR1czsNCj4+Pj4gIH0NCj4+Pj4gLS0NCj4+Pj4gR3Vp ZCgiQ0UxNjU2NjktM0VGMy00OTNGLUI4NUQtNjE5MEVFNUI5NzU5IikNCj4+Pj4NCj4+IElNUE9S VEFOVCBOT1RJQ0U6IFRoZSBjb250ZW50cyBvZiB0aGlzIGVtYWlsIGFuZCBhbnkgYXR0YWNobWVu dHMgYXJlDQo+Y29uZmlkZW50aWFsIGFuZCBtYXkgYWxzbyBiZSBwcml2aWxlZ2VkLiBJZiB5b3Ug YXJlIG5vdCB0aGUgaW50ZW5kZWQNCj5yZWNpcGllbnQsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRl ciBpbW1lZGlhdGVseSBhbmQgZG8gbm90IGRpc2Nsb3NlIHRoZQ0KPmNvbnRlbnRzIHRvIGFueSBv dGhlciBwZXJzb24sIHVzZSBpdCBmb3IgYW55IHB1cnBvc2UsIG9yIHN0b3JlIG9yIGNvcHkgdGhl DQo+aW5mb3JtYXRpb24gaW4gYW55IG1lZGl1bS4gVGhhbmsgeW91Lg0KSU1QT1JUQU5UIE5PVElD RTogVGhlIGNvbnRlbnRzIG9mIHRoaXMgZW1haWwgYW5kIGFueSBhdHRhY2htZW50cyBhcmUgY29u ZmlkZW50aWFsIGFuZCBtYXkgYWxzbyBiZSBwcml2aWxlZ2VkLiBJZiB5b3UgYXJlIG5vdCB0aGUg aW50ZW5kZWQgcmVjaXBpZW50LCBwbGVhc2Ugbm90aWZ5IHRoZSBzZW5kZXIgaW1tZWRpYXRlbHkg YW5kIGRvIG5vdCBkaXNjbG9zZSB0aGUgY29udGVudHMgdG8gYW55IG90aGVyIHBlcnNvbiwgdXNl IGl0IGZvciBhbnkgcHVycG9zZSwgb3Igc3RvcmUgb3IgY29weSB0aGUgaW5mb3JtYXRpb24gaW4g YW55IG1lZGl1bS4gVGhhbmsgeW91Lg0K