From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50049.outbound.protection.outlook.com [40.107.5.49]) by dpdk.org (Postfix) with ESMTP id 3649DA488 for ; Mon, 22 Jan 2018 14:12:49 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=eYlyrYHcKhtDrSa15blS1zvSfw18PQ0ckuqq8FkYgoY=; b=PxXrWse877EH72eVYQXRIn5W2Y2byqLQeipMQRnP89wVacL4VzSE5iJRGNeSW0SiTD6oJ7DBauJohRTiZgBirAYCVSMJQ59rvq88nZNmhy82Bcn0RBCeWDvIZBEChBmh8tlc174qJ5QksOgf47RLOcOmy93In2ooMS7sUxF0q4w= Received: from AM2PR04MB0753.eurprd04.prod.outlook.com (10.160.56.141) by AM2PR04MB0754.eurprd04.prod.outlook.com (10.160.56.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.428.17; Mon, 22 Jan 2018 12:57:32 +0000 Received: from AM2PR04MB0753.eurprd04.prod.outlook.com ([fe80::611d:d573:928:ad23]) by AM2PR04MB0753.eurprd04.prod.outlook.com ([fe80::611d:d573:928:ad23%13]) with mapi id 15.20.0428.019; Mon, 22 Jan 2018 12:57:32 +0000 From: Hemant Agrawal To: Lee Daly , "olivier.matz@6wind.com" , "remy.horton@intel.com" , "orika@mellanox.com" , "bruce.richardson@intel.com" , "pablo.de.lara.guarch@intel.com" , "radu.nicolau@intel.com" , "tomasz.kantecki@intel.com" , "cristian.dumitrescu@intel.com" , "chaozhu@linux.vnet.ibm.com" , "john.mcnamara@intel.com" , "harry.van.haaren@intel.com" , "jijiang.liu@intel.com" CC: "dev@dpdk.org" Thread-Topic: [dpdk-dev] [PATCH] examples: update copyright and license Thread-Index: AQHTj6D/cpidVgjRfEK2ni5WKvAMA6N/4LAg Date: Mon, 22 Jan 2018 12:57:32 +0000 Message-ID: References: <1516199949-116789-1-git-send-email-lee.daly@intel.com> In-Reply-To: <1516199949-116789-1-git-send-email-lee.daly@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=hemant.agrawal@nxp.com; x-originating-ip: [192.88.169.1] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; AM2PR04MB0754; 7:1PyShQfn7Iibejay3Y6JLsMc53SYDf0z5g8E8j4Jd+/oeRPfWe6f01ZZamesJmU4TZPJ100CiyRylS/YRT6JPIoLSQU+ldICimUPxir0jXyvY3kQwOmsEzyAVabi/7rYWiR76DKzJ1LCjcaXPDbjWpbQ+qYhKID67tRwAlHxnHJ8VArXzJdomSf7MF/7x+5md+0rolmglFMRO3qVW3NtJdsShb5dKqxJYCcz40/q8NqcQef5AGhLzKbp1uW4A+EI x-ms-exchange-antispam-srfa-diagnostics: SSOS; x-ms-office365-filtering-correlation-id: 72deb707-74c6-4206-365a-08d56197b39a x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4604075)(3008032)(48565401081)(2017052603307)(7153060)(7193020); SRVR:AM2PR04MB0754; x-ms-traffictypediagnostic: AM2PR04MB0754: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(189930954265078)(85827821059158)(45079756050767)(104084551191319)(228905959029699); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(6040501)(2401047)(8121501046)(5005006)(10201501046)(93006095)(93001095)(3002001)(3231023)(2400081)(944501161)(6055026)(6041288)(20161123562045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:AM2PR04MB0754; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:AM2PR04MB0754; x-forefront-prvs: 0560A2214D x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39380400002)(396003)(376002)(346002)(366004)(39860400002)(13464003)(189003)(199004)(2900100001)(6116002)(7416002)(3846002)(105586002)(15650500001)(3280700002)(3660700001)(5660300001)(33656002)(99286004)(478600001)(102836004)(7736002)(81166006)(81156014)(26005)(8676002)(966005)(305945005)(76176011)(55016002)(8936002)(7696005)(6306002)(53546011)(6506007)(74316002)(66066001)(45080400002)(2906002)(97736004)(9686003)(4326008)(59450400001)(2201001)(53946003)(14454004)(2950100002)(16200700003)(6436002)(68736007)(86362001)(575784001)(25786009)(229853002)(2501003)(6246003)(316002)(110136005)(53936002)(106356001)(5250100002)(921003)(1121003)(579004)(559001)(569006); DIR:OUT; SFP:1101; SCL:1; SRVR:AM2PR04MB0754; H:AM2PR04MB0753.eurprd04.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: 8NgCQjlUZM3lAXoEYQKkavbdHmuJOVwTLsXRrfS/n4dCDFAEXC8VYCf/2/iTSUPHAQd9qGicwGM3zOyfEkmlBw== spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 72deb707-74c6-4206-365a-08d56197b39a X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Jan 2018 12:57:32.1946 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM2PR04MB0754 Subject: Re: [dpdk-dev] [PATCH] examples: update copyright and license X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 22 Jan 2018 13:12:49 -0000 SSB3aWxsIHN1Z2dlc3QgdG8gYXZvaWQgdGhpcyBraW5kIG9mIHBhdGNoIHdpdGggc28gbWFueSBk aWZmZXJlbnQgY29weXJpZ2h0cy4NCg0KIFlvdSBuZWVkIHRvIGJyZWFrIGl0IGludG8gc2V2ZXJh bCBwYXRjaGVzIHdpdGggZGlmZmVyZW50IGNvcHlyaWdodCBjYXRlZ29yeS4NCg0KU2ltcGxlIHJ1 bGVzOg0KMS4gWW91IGNhbiBhZGQgU1BEWCBmb3IgYW55IGNvbXBhbnkgY29weXJpZ2h0IHBhdGNo ZXMgLSB3aXRob3V0IHJlbW92aW5nIHRoZSBsaWNlbnNlIHRleHQuDQoyLiBpZiB5b3UgYXJlIG1v ZGlmeWluZyBvciByZW1vdmluZyB0aGUgbGljZW5zZSB0ZXh0LCB5b3UgbmVlZCBhbiBleHBsaWNp dCBhY2svcGVybWlzc2lvbnMgZnJvbSBjb3B5cmlnaHQgaG9sZGVyLg0KIA0KR2V0dGluZyBzbyBt YW55IGFjayBmb3IgYSBzaW5nbGUgcGF0Y2ggd2lsbCBiZSBkaWZmaWN1bHQg8J+Yig0KDQpSZWdh cmRzLA0KSGVtYW50DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogZGV2 IFttYWlsdG86ZGV2LWJvdW5jZXNAZHBkay5vcmddIE9uIEJlaGFsZiBPZiBMZWUgRGFseQ0KPiBT ZW50OiBXZWRuZXNkYXksIEphbnVhcnkgMTcsIDIwMTggODowOSBQTQ0KPiBUbzogb2xpdmllci5t YXR6QDZ3aW5kLmNvbTsgcmVteS5ob3J0b25AaW50ZWwuY29tOw0KPiBvcmlrYUBtZWxsYW5veC5j b207IGJydWNlLnJpY2hhcmRzb25AaW50ZWwuY29tOw0KPiBwYWJsby5kZS5sYXJhLmd1YXJjaEBp bnRlbC5jb207IHJhZHUubmljb2xhdUBpbnRlbC5jb207DQo+IHRvbWFzei5rYW50ZWNraUBpbnRl bC5jb207IGNyaXN0aWFuLmR1bWl0cmVzY3VAaW50ZWwuY29tOw0KPiBjaGFvemh1QGxpbnV4LnZu ZXQuaWJtLmNvbTsgam9obi5tY25hbWFyYUBpbnRlbC5jb207DQo+IGhhcnJ5LnZhbi5oYWFyZW5A aW50ZWwuY29tOyBqaWppYW5nLmxpdUBpbnRlbC5jb20NCj4gQ2M6IGRldkBkcGRrLm9yZzsgTGVl IERhbHkgPGxlZS5kYWx5QGludGVsLmNvbT4NCj4gU3ViamVjdDogW2RwZGstZGV2XSBbUEFUQ0hd IGV4YW1wbGVzOiB1cGRhdGUgY29weXJpZ2h0IGFuZCBsaWNlbnNlDQo+IA0KPiBUaGlzIHVwZGF0 ZXMgdGhlIGxpY2Vuc2Ugb24gZmlsZXMgaW4gZXhhbXBsZXMgdG8gYmUgdGhlIHN0YW5kYXJkDQo+ IEJTRC0zLUNsYXVzZSBsaWNlbnNlIHVzZWQgZm9yIHRoZSByZXN0IG9mIERQREssDQo+IGJyaW5n aW5nIHRoZSBmaWxlcyBpbiBjb21wbGlhbmNlIHdpdGggdGhlIERQREsgbGljZW5zaW5nIHBvbGlj eS4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IExlZSBEYWx5IDxsZWUuZGFseUBpbnRlbC5jb20+DQo+ IC0tLQ0KPiAgZXhhbXBsZXMvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAzMSArLS0tLS0tLS0tDQo+ICBleGFtcGxlcy9jbWRsaW5lL2NvbW1hbmRzLmMgICAgICAg ICAgICAgICAgICAgICAgICB8IDU4ICstLS0tLS0tLS0tLS0tLS0tLQ0KPiAgZXhhbXBsZXMvY21k bGluZS9tYWluLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA1OCArLS0tLS0tLS0tLS0t LS0tLS0NCj4gIGV4YW1wbGVzL2NtZGxpbmUvcGFyc2Vfb2JqX2xpc3QuYyAgICAgICAgICAgICAg ICAgIHwgNTggKy0tLS0tLS0tLS0tLS0tLS0tDQo+ICBleGFtcGxlcy9jbWRsaW5lL3BhcnNlX29i al9saXN0LmggICAgICAgICAgICAgICAgICB8IDU4ICstLS0tLS0tLS0tLS0tLS0tLQ0KPiAgZXhh bXBsZXMvZmxvd19maWx0ZXJpbmcvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgfCAzMyArLS0t LS0tLS0tLQ0KPiAgZXhhbXBsZXMvZmxvd19maWx0ZXJpbmcvZmxvd19ibG9ja3MuYyAgICAgICAg ICAgICAgfCAzMiArLS0tLS0tLS0tDQo+ICBleGFtcGxlcy9mbG93X2ZpbHRlcmluZy9tYWluLmMg ICAgICAgICAgICAgICAgICAgICB8IDMyICstLS0tLS0tLS0NCj4gIGV4YW1wbGVzL2lwX3BpcGVs aW5lL3BhcnNlci5jICAgICAgICAgICAgICAgICAgICAgIHwgNjkgKy0tLS0tLS0tLS0tLS0tLS0t LS0tLQ0KPiAgZXhhbXBsZXMvaXBfcGlwZWxpbmUvcGlwZWxpbmUvaGFzaF9mdW5jX2FybTY0Lmgg ICAgfCAzNSArKy0tLS0tLS0tLQ0KPiAgZXhhbXBsZXMvbDNmd2QvbDNmd2RfYWx0aXZlYy5oICAg ICAgICAgICAgICAgICAgICAgfCAzNyArKy0tLS0tLS0tLS0NCj4gIGV4YW1wbGVzL2wzZndkL2wz ZndkX2NvbW1vbi5oICAgICAgICAgICAgICAgICAgICAgIHwgMzIgKy0tLS0tLS0tLQ0KPiAgZXhh bXBsZXMvbDNmd2QvbDNmd2RfZW1faGxtLmggICAgICAgICAgICAgICAgICAgICAgfCAzNyArKy0t LS0tLS0tLS0NCj4gIGV4YW1wbGVzL2wzZndkL2wzZndkX2VtX2hsbV9uZW9uLmggICAgICAgICAg ICAgICAgIHwgMzYgKystLS0tLS0tLS0NCj4gIGV4YW1wbGVzL2wzZndkL2wzZndkX2xwbV9hbHRp dmVjLmggICAgICAgICAgICAgICAgIHwgMzYgKystLS0tLS0tLS0NCj4gIGV4YW1wbGVzL2wzZndk L2wzZndkX2xwbV9uZW9uLmggICAgICAgICAgICAgICAgICAgIHwgMzYgKystLS0tLS0tLS0NCj4g IGV4YW1wbGVzL2wzZndkL2wzZndkX25lb24uaCAgICAgICAgICAgICAgICAgICAgICAgIHwgMzYg KystLS0tLS0tLS0NCj4gIGV4YW1wbGVzL25ldG1hcF9jb21wYXQvbmV0bWFwL25ldG1hcC5oICAg ICAgICAgICAgIHwgMzAgKy0tLS0tLS0tLQ0KPiAgZXhhbXBsZXMvbmV0bWFwX2NvbXBhdC9uZXRt YXAvbmV0bWFwX3VzZXIuaCAgICAgICAgfCAzMCArLS0tLS0tLS0tDQo+ICBleGFtcGxlcy9wZXJm b3JtYW5jZS10aHJlYWQvY29tbW9uL2FyY2gveDg2L2N0eC5jICB8IDU4ICstLS0tLS0tLS0tLS0t LS0tLQ0KPiAgLi4uL3BlcmZvcm1hbmNlLXRocmVhZC9jb21tb24vYXJjaC94ODYvc3RhY2suaCAg ICAgfCA2MSArKy0tLS0tLS0tLS0tLS0tLS0tDQo+ICBleGFtcGxlcy9wZXJmb3JtYW5jZS10aHJl YWQvY29tbW9uL2x0aHJlYWQuYyAgICAgICB8IDU2ICstLS0tLS0tLS0tLS0tLS0tLQ0KPiAgZXhh bXBsZXMvcGVyZm9ybWFuY2UtdGhyZWFkL2NvbW1vbi9sdGhyZWFkLmggICAgICAgfCA1NiArLS0t LS0tLS0tLS0tLS0tLS0NCj4gIGV4YW1wbGVzL3BlcmZvcm1hbmNlLXRocmVhZC9jb21tb24vbHRo cmVhZF9hcGkuaCAgIHwgNTYgKy0tLS0tLS0tLS0tLS0tLS0tDQo+ICBleGFtcGxlcy9wZXJmb3Jt YW5jZS10aHJlYWQvY29tbW9uL2x0aHJlYWRfY29uZC5jICB8IDU2ICstLS0tLS0tLS0tLS0tLS0t DQo+IC0NCj4gIGV4YW1wbGVzL3BlcmZvcm1hbmNlLXRocmVhZC9jb21tb24vbHRocmVhZF9jb25k LmggIHwgNTYgKy0tLS0tLS0tLS0tLS0tLS0NCj4gLQ0KPiAgZXhhbXBsZXMvcGVyZm9ybWFuY2Ut dGhyZWFkL2NvbW1vbi9sdGhyZWFkX2ludC5oICAgfCA1OCArKy0tLS0tLS0tLS0tLS0tLS0NCj4g IDI3IGZpbGVzIGNoYW5nZWQsIDc5IGluc2VydGlvbnMoKyksIDExNTIgZGVsZXRpb25zKC0pDQo+ IA0KPiBkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvTWFrZWZpbGUgYi9leGFtcGxlcy9NYWtlZmlsZQ0K PiBpbmRleCA5Zjc5NzRhLi5mMGNmMmExIDEwMDY0NA0KPiAtLS0gYS9leGFtcGxlcy9NYWtlZmls ZQ0KPiArKysgYi9leGFtcGxlcy9NYWtlZmlsZQ0KPiBAQCAtMSwzMiArMSw1IEBADQo+IC0jICAg QlNEIExJQ0VOU0UNCj4gLSMNCj4gLSMgICBDb3B5cmlnaHQoYykgMjAxNiA2V0lORCBTLkEuDQo+ IC0jDQo+IC0jICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm b3Jtcywgd2l0aCBvciB3aXRob3V0DQo+IC0jICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQo+IC0jICAgYXJlIG1ldDoN Cj4gLSMNCj4gLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0 YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCj4gLSMgICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KPiAtIyAgICAgKiBSZWRp c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly aWdodA0KPiAtIyAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4NCj4gLSMgICAgICAgdGhlIGRvY3VtZW50YXRpb24gYW5k L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQ0KPiAtIyAgICAgICBkaXN0cmli dXRpb24uDQo+IC0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgNldJTkQgUy5BLiBub3IgdGhl IG5hbWVzIG9mIGl0cw0KPiAtIyAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQNCj4gLSMgICAgICAgZnJvbSB0aGlzIHNv ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KPiAtIw0K PiAtIyAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT IEFORA0KPiBDT05UUklCVVRPUlMNCj4gLSMgICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUDQo+IE5PVA0KPiAtIyAgIExJTUlURUQg VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORA0KPiBGSVRO RVNTIEZPUg0KPiAtIyAgIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO TyBFVkVOVCBTSEFMTCBUSEUNCj4gQ09QWVJJR0hUDQo+IC0jICAgT1dORVIgT1IgQ09OVFJJQlVU T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsDQo+IElOQ0lERU5UQUwsDQo+ IC0jICAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV RElORywgQlVUDQo+IE5PVA0KPiAtIyAgIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MNCj4gT0YgVVNFLA0KPiAtIyAgIERBVEEsIE9S IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQNCj4gQU5E IE9OIEFOWQ0KPiAtIyAgIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs IFNUUklDVCBMSUFCSUxJVFksIE9SDQo+IFRPUlQNCj4gLSMgICAoSU5DTFVESU5HIE5FR0xJR0VO Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GDQo+IFRIRSBVU0UNCj4g LSMgICBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ IE9GIFNVQ0gNCj4gREFNQUdFLg0KPiArIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMt Q2xhdXNlDQo+ICsjIENvcHlyaWdodChjKSAyMDE2IDZXSU5EIFMuQS4NCj4gDQo+ICBpZmVxICgk KFJURV9TREspLCkNCj4gICQoZXJyb3IgIlBsZWFzZSBkZWZpbmUgUlRFX1NESyBlbnZpcm9ubWVu dCB2YXJpYWJsZSIpDQo+IGRpZmYgLS1naXQgYS9leGFtcGxlcy9jbWRsaW5lL2NvbW1hbmRzLmMN Cj4gYi9leGFtcGxlcy9jbWRsaW5lL2NvbW1hbmRzLmMNCj4gaW5kZXggZjNiYTI0Ny4uMDY5MTZk NyAxMDA2NDQNCj4gLS0tIGEvZXhhbXBsZXMvY21kbGluZS9jb21tYW5kcy5jDQo+ICsrKyBiL2V4 YW1wbGVzL2NtZGxpbmUvY29tbWFuZHMuYw0KPiBAQCAtMSw2MSArMSw3IEBADQo+IC0vKi0NCj4g LSAqICAgQlNEIExJQ0VOU0UNCj4gLSAqDQo+IC0gKiAgIENvcHlyaWdodChjKSAyMDEwLTIwMTQg SW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+IC0gKiAgIEFsbCByaWdo dHMgcmVzZXJ2ZWQuDQo+IC0gKg0KPiAtICogICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCj4gLSAqICAgbW9kaWZpY2F0 aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z DQo+IC0gKiAgIGFyZSBtZXQ6DQo+IC0gKg0KPiAtICogICAgICogUmVkaXN0cmlidXRpb25zIG9m IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCj4gLSAqICAgICAg IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh aW1lci4NCj4gLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQo+IC0gKiAgICAgICBub3RpY2UsIHRoaXMgbGlz dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4NCj4gLSAqICAg ICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0 aCB0aGUNCj4gLSAqICAgICAgIGRpc3RyaWJ1dGlvbi4NCj4gLSAqICAgICAqIE5laXRoZXIgdGhl IG5hbWUgb2YgSW50ZWwgQ29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMNCj4gLSAqICAg ICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj dHMgZGVyaXZlZA0KPiAtICogICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KPiAtICoNCj4gLSAqICAgVEhJUyBTT0ZUV0FS RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EDQo+IENPTlRSSUJVVE9S Uw0KPiAtICogICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs IElOQ0xVRElORywgQlVUDQo+IE5PVA0KPiAtICogICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQNCj4gRklUTkVTUyBGT1INCj4gLSAqICAg QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI RQ0KPiBDT1BZUklHSFQNCj4gLSAqICAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsDQo+IElOQ0lERU5UQUwsDQo+IC0gKiAgIFNQRUNJQUws IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVA0KPiBO T1QNCj4gLSAqICAgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP UiBTRVJWSUNFUzsgTE9TUw0KPiBPRiBVU0UsDQo+IC0gKiAgIERBVEEsIE9SIFBST0ZJVFM7IE9S IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQNCj4gQU5EIE9OIEFOWQ0KPiAt ICogICBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB QklMSVRZLCBPUg0KPiBUT1JUDQo+IC0gKiAgIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YNCj4gVEhFIFVTRQ0KPiAtICogICBPRiBU SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gN Cj4gREFNQUdFLg0KPiAtICovDQo+IC0NCj4gLS8qDQo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogQlNELTMtQ2xhdXNlDQo+ICsgKiBDb3B5cmlnaHQoYykgMjAxMC0yMDE0IEludGVsIENv cnBvcmF0aW9uLg0KPiAgICogQ29weXJpZ2h0IChjKSAyMDA5LCBPbGl2aWVyIE1BVFogPHplcjBA ZHJvaWRzLWNvcnAub3JnPg0KPiAgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gLSAqIFJlZGlz dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0 aG91dA0KPiAtICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQ0KPiBtZXQ6DQo+IC0gKg0KPiAtICogICAgICogUmVk aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln aHQNCj4gLSAqICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm b2xsb3dpbmcgZGlzY2xhaW1lci4NCj4gLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQo+IC0gKiAgICAgICBu b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt ZXIgaW4gdGhlDQo+IC0gKiAgICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh bHMgcHJvdmlkZWQgd2l0aCB0aGUNCj4gZGlzdHJpYnV0aW9uLg0KPiAtICogICAgICogTmVpdGhl ciB0aGUgbmFtZSBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLCBCZXJrZWxleSBub3Ig dGhlDQo+IC0gKiAgICAgICBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv IGVuZG9yc2Ugb3IgcHJvbW90ZQ0KPiBwcm9kdWN0cw0KPiAtICogICAgICAgZGVyaXZlZCBmcm9t IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u DQo+IC0gKg0KPiAtICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgUkVHRU5UUyBB TkQgQ09OVFJJQlVUT1JTIGBgQVMNCj4gSVMnJyBBTkQgQU5ZDQo+IC0gKiBFWFBSRVNTIE9SIElN UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sDQo+IFRIRSBJ TVBMSUVEDQo+IC0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSDQo+IFBVUlBPU0UgQVJFDQo+IC0gKiBESVNDTEFJTUVELiBJTiBOTyBF VkVOVCBTSEFMTCBUSEUgUkVHRU5UUyBBTkQgQ09OVFJJQlVUT1JTIEJFDQo+IExJQUJMRSBGT1Ig QU5ZDQo+IC0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB UlksIE9SDQo+IENPTlNFUVVFTlRJQUwgREFNQUdFUw0KPiAtICogKElOQ0xVRElORywgQlVUIE5P VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFDQo+IEdPT0RTIE9SIFNFUlZJ Q0VTOw0KPiAtICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO VEVSUlVQVElPTikNCj4gSE9XRVZFUiBDQVVTRUQgQU5EDQo+IC0gKiBPTiBBTlkgVEhFT1JZIE9G IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwNCj4gT1Ig VE9SVA0KPiAtICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ TiBBTlkgV0FZIE9VVCBPRg0KPiBUSEUgVVNFIE9GIFRISVMNCj4gLSAqIFNPRlRXQVJFLCBFVkVO IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KPiAgICovDQo+ IA0KPiAgI2luY2x1ZGUgPHN0ZGlvLmg+DQo+IGRpZmYgLS1naXQgYS9leGFtcGxlcy9jbWRsaW5l L21haW4uYyBiL2V4YW1wbGVzL2NtZGxpbmUvbWFpbi5jDQo+IGluZGV4IGM2ZGU5NDQuLmYyZjJl NWEgMTAwNjQ0DQo+IC0tLSBhL2V4YW1wbGVzL2NtZGxpbmUvbWFpbi5jDQo+ICsrKyBiL2V4YW1w bGVzL2NtZGxpbmUvbWFpbi5jDQo+IEBAIC0xLDYxICsxLDcgQEANCj4gLS8qLQ0KPiAtICogICBC U0QgTElDRU5TRQ0KPiAtICoNCj4gLSAqICAgQ29weXJpZ2h0KGMpIDIwMTAtMjAxNCBJbnRlbCBD b3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gLSAqICAgQWxsIHJpZ2h0cyByZXNl cnZlZC4NCj4gLSAqDQo+IC0gKiAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KPiAtICogICBtb2RpZmljYXRpb24sIGFy ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCj4gLSAq ICAgYXJlIG1ldDoNCj4gLSAqDQo+IC0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KPiAtICogICAgICAgbm90aWNl LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0K PiAtICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl IHRoZSBhYm92ZSBjb3B5cmlnaHQNCj4gLSAqICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbg0KPiAtICogICAgICAgdGhl IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQ0K PiAtICogICAgICAgZGlzdHJpYnV0aW9uLg0KPiAtICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv ZiBJbnRlbCBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cw0KPiAtICogICAgICAgY29u dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp dmVkDQo+IC0gKiAgICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv ciB3cml0dGVuIHBlcm1pc3Npb24uDQo+IC0gKg0KPiAtICogICBUSElTIFNPRlRXQVJFIElTIFBS T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQNCj4gQ09OVFJJQlVUT1JTDQo+IC0g KiAgICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE SU5HLCBCVVQNCj4gTk9UDQo+IC0gKiAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORA0KPiBGSVRORVNTIEZPUg0KPiAtICogICBBIFBBUlRJ Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFDQo+IENP UFlSSUdIVA0KPiAtICogICBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg RElSRUNULCBJTkRJUkVDVCwNCj4gSU5DSURFTlRBTCwNCj4gLSAqICAgU1BFQ0lBTCwgRVhFTVBM QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUDQo+IE5PVA0KPiAt ICogICBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ Q0VTOyBMT1NTDQo+IE9GIFVTRSwNCj4gLSAqICAgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRA0KPiBBTkQgT04gQU5ZDQo+IC0gKiAgIFRI RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks IE9SDQo+IFRPUlQNCj4gLSAqICAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRg0KPiBUSEUgVVNFDQo+IC0gKiAgIE9GIFRISVMgU09G VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSA0KPiBEQU1B R0UuDQo+IC0gKi8NCj4gLQ0KPiAtLyoNCj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBC U0QtMy1DbGF1c2UNCj4gKyAqIENvcHlyaWdodChjKSAyMDEwLTIwMTQgSW50ZWwgQ29ycG9yYXRp b24uDQo+ICAgKiBDb3B5cmlnaHQgKGMpIDIwMDksIE9saXZpZXIgTUFUWiA8emVyMEBkcm9pZHMt Y29ycC5vcmc+DQo+ICAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiAtICogUmVkaXN0cmlidXRp b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQo+ IC0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93 aW5nIGNvbmRpdGlvbnMgYXJlDQo+IG1ldDoNCj4gLSAqDQo+IC0gKiAgICAgKiBSZWRpc3RyaWJ1 dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KPiAt ICogICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu ZyBkaXNjbGFpbWVyLg0KPiAtICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQNCj4gLSAqICAgICAgIG5vdGljZSwg dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0 aGUNCj4gLSAqICAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92 aWRlZCB3aXRoIHRoZQ0KPiBkaXN0cmlidXRpb24uDQo+IC0gKiAgICAgKiBOZWl0aGVyIHRoZSBu YW1lIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEsIEJlcmtlbGV5IG5vciB0aGUNCj4g LSAqICAgICAgIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz ZSBvciBwcm9tb3RlDQo+IHByb2R1Y3RzDQo+IC0gKiAgICAgICBkZXJpdmVkIGZyb20gdGhpcyBz b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCj4gLSAq DQo+IC0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBSRUdFTlRTIEFORCBDT05U UklCVVRPUlMgYGBBUw0KPiBJUycnIEFORCBBTlkNCj4gLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywNCj4gVEhFIElNUExJRUQN Cj4gLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVINCj4gUFVSUE9TRSBBUkUNCj4gLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI QUxMIFRIRSBSRUdFTlRTIEFORCBDT05UUklCVVRPUlMgQkUNCj4gTElBQkxFIEZPUiBBTlkNCj4g LSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IN Cj4gQ09OU0VRVUVOVElBTCBEQU1BR0VTDQo+IC0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUNCj4gR09PRFMgT1IgU0VSVklDRVM7DQo+ IC0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU SU9OKQ0KPiBIT1dFVkVSIENBVVNFRCBBTkQNCj4gLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLA0KPiBPUiBUT1JUDQo+ IC0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX QVkgT1VUIE9GDQo+IFRIRSBVU0UgT0YgVEhJUw0KPiAtICogU09GVFdBUkUsIEVWRU4gSUYgQURW SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQo+ICAgKi8NCj4gDQo+ICAj aW5jbHVkZSA8c3RkaW8uaD4NCj4gZGlmZiAtLWdpdCBhL2V4YW1wbGVzL2NtZGxpbmUvcGFyc2Vf b2JqX2xpc3QuYw0KPiBiL2V4YW1wbGVzL2NtZGxpbmUvcGFyc2Vfb2JqX2xpc3QuYw0KPiBpbmRl eCBjZGJhZjJmLi42OWViNDQ4IDEwMDY0NA0KPiAtLS0gYS9leGFtcGxlcy9jbWRsaW5lL3BhcnNl X29ial9saXN0LmMNCj4gKysrIGIvZXhhbXBsZXMvY21kbGluZS9wYXJzZV9vYmpfbGlzdC5jDQo+ IEBAIC0xLDYxICsxLDcgQEANCj4gLS8qLQ0KPiAtICogICBCU0QgTElDRU5TRQ0KPiAtICoNCj4g LSAqICAgQ29weXJpZ2h0KGMpIDIwMTAtMjAxNCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0 cyByZXNlcnZlZC4NCj4gLSAqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gLSAqDQo+IC0gKiAg IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg b3Igd2l0aG91dA0KPiAtICogICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCj4gLSAqICAgYXJlIG1ldDoNCj4gLSAqDQo+ IC0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl IGFib3ZlIGNvcHlyaWdodA0KPiAtICogICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0 aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KPiAtICogICAgICogUmVkaXN0cmli dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQN Cj4gLSAqICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs b3dpbmcgZGlzY2xhaW1lciBpbg0KPiAtICogICAgICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29y IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQ0KPiAtICogICAgICAgZGlzdHJpYnV0 aW9uLg0KPiAtICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBJbnRlbCBDb3Jwb3JhdGlvbiBu b3IgdGhlIG5hbWVzIG9mIGl0cw0KPiAtICogICAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkDQo+IC0gKiAgICAgICBmcm9t IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u DQo+IC0gKg0KPiAtICogICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH SFQgSE9MREVSUyBBTkQNCj4gQ09OVFJJQlVUT1JTDQo+IC0gKiAgICJBUyBJUyIgQU5EIEFOWSBF WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQNCj4gTk9UDQo+IC0g KiAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ IEFORA0KPiBGSVRORVNTIEZPUg0KPiAtICogICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFDQo+IENPUFlSSUdIVA0KPiAtICogICBPV05F UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwNCj4g SU5DSURFTlRBTCwNCj4gLSAqICAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM IERBTUFHRVMgKElOQ0xVRElORywgQlVUDQo+IE5PVA0KPiAtICogICBMSU1JVEVEIFRPLCBQUk9D VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTDQo+IE9GIFVTRSwN Cj4gLSAqICAgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF VkVSIENBVVNFRA0KPiBBTkQgT04gQU5ZDQo+IC0gKiAgIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SDQo+IFRPUlQNCj4gLSAqICAg KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V VCBPRg0KPiBUSEUgVVNFDQo+IC0gKiAgIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSA0KPiBEQU1BR0UuDQo+IC0gKi8NCj4gLQ0KPiAt LyoNCj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UNCj4gKyAqIENv cHlyaWdodChjKSAyMDEwLTIwMTQgSW50ZWwgQ29ycG9yYXRpb24uDQo+ICAgKiBDb3B5cmlnaHQg KGMpIDIwMDksIE9saXZpZXIgTUFUWiA8emVyMEBkcm9pZHMtY29ycC5vcmc+DQo+ICAgKiBBbGwg cmlnaHRzIHJlc2VydmVkLg0KPiAtICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQo+IC0gKiBtb2RpZmljYXRpb24sIGFy ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlDQo+ IG1ldDoNCj4gLSAqDQo+IC0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KPiAtICogICAgICAgbm90aWNlLCB0aGlz IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KPiAtICog ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh Ym92ZSBjb3B5cmlnaHQNCj4gLSAqICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUNCj4gLSAqICAgICAgIGRvY3Vt ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQ0KPiBkaXN0 cmlidXRpb24uDQo+IC0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBVbml2ZXJzaXR5 IG9mIENhbGlmb3JuaWEsIEJlcmtlbGV5IG5vciB0aGUNCj4gLSAqICAgICAgIG5hbWVzIG9mIGl0 cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlDQo+IHByb2R1 Y3RzDQo+IC0gKiAgICAgICBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCj4gLSAqDQo+IC0gKiBUSElTIFNPRlRXQVJF IElTIFBST1ZJREVEIEJZIFRIRSBSRUdFTlRTIEFORCBDT05UUklCVVRPUlMgYGBBUw0KPiBJUycn IEFORCBBTlkNCj4gLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs IEJVVCBOT1QgTElNSVRFRCBUTywNCj4gVEhFIElNUExJRUQNCj4gLSAqIFdBUlJBTlRJRVMgT0Yg TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVINCj4gUFVSUE9TRSBB UkUNCj4gLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBSRUdFTlRTIEFORCBD T05UUklCVVRPUlMgQkUNCj4gTElBQkxFIEZPUiBBTlkNCj4gLSAqIERJUkVDVCwgSU5ESVJFQ1Qs IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1INCj4gQ09OU0VRVUVOVElBTCBEQU1B R0VTDQo+IC0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G IFNVQlNUSVRVVEUNCj4gR09PRFMgT1IgU0VSVklDRVM7DQo+IC0gKiBMT1NTIE9GIFVTRSwgREFU QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQ0KPiBIT1dFVkVSIENBVVNF RCBBTkQNCj4gLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS QUNULCBTVFJJQ1QgTElBQklMSVRZLA0KPiBPUiBUT1JUDQo+IC0gKiAoSU5DTFVESU5HIE5FR0xJ R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GDQo+IFRIRSBVU0Ug T0YgVEhJUw0KPiAtICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ VFkgT0YgU1VDSCBEQU1BR0UuDQo+ICAgKi8NCj4gDQo+ICAjaW5jbHVkZSA8c3RkaW8uaD4NCj4g ZGlmZiAtLWdpdCBhL2V4YW1wbGVzL2NtZGxpbmUvcGFyc2Vfb2JqX2xpc3QuaA0KPiBiL2V4YW1w bGVzL2NtZGxpbmUvcGFyc2Vfb2JqX2xpc3QuaA0KPiBpbmRleCA4NzFjNTNhLi42NTE2ZDNlIDEw MDY0NA0KPiAtLS0gYS9leGFtcGxlcy9jbWRsaW5lL3BhcnNlX29ial9saXN0LmgNCj4gKysrIGIv ZXhhbXBsZXMvY21kbGluZS9wYXJzZV9vYmpfbGlzdC5oDQo+IEBAIC0xLDYxICsxLDcgQEANCj4g LS8qLQ0KPiAtICogICBCU0QgTElDRU5TRQ0KPiAtICoNCj4gLSAqICAgQ29weXJpZ2h0KGMpIDIw MTAtMjAxNCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gLSAqICAg QWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gLSAqDQo+IC0gKiAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1 c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KPiAtICogICBt b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv bmRpdGlvbnMNCj4gLSAqICAgYXJlIG1ldDoNCj4gLSAqDQo+IC0gKiAgICAgKiBSZWRpc3RyaWJ1 dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KPiAt ICogICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu ZyBkaXNjbGFpbWVyLg0KPiAtICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQNCj4gLSAqICAgICAgIG5vdGljZSwg dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbg0K PiAtICogICAgICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92 aWRlZCB3aXRoIHRoZQ0KPiAtICogICAgICAgZGlzdHJpYnV0aW9uLg0KPiAtICogICAgICogTmVp dGhlciB0aGUgbmFtZSBvZiBJbnRlbCBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cw0K PiAtICogICAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90 ZSBwcm9kdWN0cyBkZXJpdmVkDQo+IC0gKiAgICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91 dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQo+IC0gKg0KPiAtICogICBUSElT IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQNCj4gQ09O VFJJQlVUT1JTDQo+IC0gKiAgICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS UkFOVElFUywgSU5DTFVESU5HLCBCVVQNCj4gTk9UDQo+IC0gKiAgIExJTUlURUQgVE8sIFRIRSBJ TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORA0KPiBGSVRORVNTIEZPUg0K PiAtICogICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg U0hBTEwgVEhFDQo+IENPUFlSSUdIVA0KPiAtICogICBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwNCj4gSU5DSURFTlRBTCwNCj4gLSAqICAg U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg QlVUDQo+IE5PVA0KPiAtICogICBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTDQo+IE9GIFVTRSwNCj4gLSAqICAgREFUQSwgT1IgUFJP RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRA0KPiBBTkQgT04g QU5ZDQo+IC0gKiAgIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU UklDVCBMSUFCSUxJVFksIE9SDQo+IFRPUlQNCj4gLSAqICAgKElOQ0xVRElORyBORUdMSUdFTkNF IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRg0KPiBUSEUgVVNFDQo+IC0g KiAgIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg T0YgU1VDSA0KPiBEQU1BR0UuDQo+IC0gKi8NCj4gLQ0KPiAtLyoNCj4gKy8qIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UNCj4gKyAqIENvcHlyaWdodChjKSAyMDEwLTIwMTQg SW50ZWwgQ29ycG9yYXRpb24uDQo+ICAgKiBDb3B5cmlnaHQgKGMpIDIwMDksIE9saXZpZXIgTUFU WiA8emVyMEBkcm9pZHMtY29ycC5vcmc+DQo+ICAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiAt ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0 aCBvciB3aXRob3V0DQo+IC0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlDQo+IG1ldDoNCj4gLSAqDQo+IC0gKiAg ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl IGNvcHlyaWdodA0KPiAtICogICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KPiAtICogICAgICogUmVkaXN0cmlidXRpb25z IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQNCj4gLSAq ICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg ZGlzY2xhaW1lciBpbiB0aGUNCj4gLSAqICAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQ0KPiBkaXN0cmlidXRpb24uDQo+IC0gKiAgICAg KiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEsIEJlcmtl bGV5IG5vciB0aGUNCj4gLSAqICAgICAgIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgbWF5IGJl IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlDQo+IHByb2R1Y3RzDQo+IC0gKiAgICAgICBkZXJp dmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy bWlzc2lvbi4NCj4gLSAqDQo+IC0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBS RUdFTlRTIEFORCBDT05UUklCVVRPUlMgYGBBUw0KPiBJUycnIEFORCBBTlkNCj4gLSAqIEVYUFJF U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywN Cj4gVEhFIElNUExJRUQNCj4gLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVINCj4gUFVSUE9TRSBBUkUNCj4gLSAqIERJU0NMQUlNRUQu IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBSRUdFTlRTIEFORCBDT05UUklCVVRPUlMgQkUNCj4gTElB QkxFIEZPUiBBTlkNCj4gLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws IEVYRU1QTEFSWSwgT1INCj4gQ09OU0VRVUVOVElBTCBEQU1BR0VTDQo+IC0gKiAoSU5DTFVESU5H LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUNCj4gR09PRFMg T1IgU0VSVklDRVM7DQo+IC0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT SU5FU1MgSU5URVJSVVBUSU9OKQ0KPiBIT1dFVkVSIENBVVNFRCBBTkQNCj4gLSAqIE9OIEFOWSBU SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ LA0KPiBPUiBUT1JUDQo+IC0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GDQo+IFRIRSBVU0UgT0YgVEhJUw0KPiAtICogU09GVFdB UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQo+ ICAgKi8NCj4gDQo+ICAjaWZuZGVmIF9QQVJTRV9PQkpfTElTVF9IXw0KPiBkaWZmIC0tZ2l0IGEv ZXhhbXBsZXMvZmxvd19maWx0ZXJpbmcvTWFrZWZpbGUNCj4gYi9leGFtcGxlcy9mbG93X2ZpbHRl cmluZy9NYWtlZmlsZQ0KPiBpbmRleCA3MGI4MmZlLi4yNzY1ZWJkIDEwMDY0NA0KPiAtLS0gYS9l eGFtcGxlcy9mbG93X2ZpbHRlcmluZy9NYWtlZmlsZQ0KPiArKysgYi9leGFtcGxlcy9mbG93X2Zp bHRlcmluZy9NYWtlZmlsZQ0KPiBAQCAtMSwzNCArMSw1IEBADQo+IC0jDQo+IC0jICAgQlNEIExJ Q0VOU0UNCj4gLSMNCj4gLSMgICBDb3B5cmlnaHQgMjAxNyBNZWxsYW5veC4NCj4gLSMNCj4gLSMg ICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo IG9yIHdpdGhvdXQNCj4gLSMgICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCj4gLSMgICBhcmUgbWV0Og0KPiAtIw0KPiAt IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi b3ZlIGNvcHlyaWdodA0KPiAtIyAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQo+IC0jICAgICAqIFJlZGlzdHJpYnV0aW9u cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQo+IC0j ICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg ZGlzY2xhaW1lciBpbg0KPiAtIyAgICAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlDQo+IC0jICAgICAgIGRpc3RyaWJ1dGlvbi4NCj4g LSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBNZWxsYW5veCBub3IgdGhlIG5hbWVzIG9mIGl0 cw0KPiAtIyAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t b3RlIHByb2R1Y3RzIGRlcml2ZWQNCj4gLSMgICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KPiAtIw0KPiAtIyAgIFRISVMg U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORA0KPiBDT05U UklCVVRPUlMNCj4gLSMgICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB TlRJRVMsIElOQ0xVRElORywgQlVUDQo+IE5PVA0KPiAtIyAgIExJTUlURUQgVE8sIFRIRSBJTVBM SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORA0KPiBGSVRORVNTIEZPUg0KPiAt IyAgIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM TCBUSEUNCj4gQ09QWVJJR0hUDQo+IC0jICAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsDQo+IElOQ0lERU5UQUwsDQo+IC0jICAgU1BFQ0lB TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUDQo+ IE5PVA0KPiAtIyAgIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg T1IgU0VSVklDRVM7IExPU1MNCj4gT0YgVVNFLA0KPiAtIyAgIERBVEEsIE9SIFBST0ZJVFM7IE9S IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQNCj4gQU5EIE9OIEFOWQ0KPiAt IyAgIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC SUxJVFksIE9SDQo+IFRPUlQNCj4gLSMgICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GDQo+IFRIRSBVU0UNCj4gLSMgICBPRiBUSElT IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gNCj4g REFNQUdFLg0KPiAtIw0KPiArIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNl DQo+ICsjIENvcHlyaWdodChjKSAyMDE3IE1lbGxhbm94DQo+IA0KPiAgaWZlcSAoJChSVEVfU0RL KSwpDQo+ICAkKGVycm9yICJQbGVhc2UgZGVmaW5lIFJURV9TREsgZW52aXJvbm1lbnQgdmFyaWFi bGUiKQ0KPiBkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvZmxvd19maWx0ZXJpbmcvZmxvd19ibG9ja3Mu Yw0KPiBiL2V4YW1wbGVzL2Zsb3dfZmlsdGVyaW5nL2Zsb3dfYmxvY2tzLmMNCj4gaW5kZXggZjky ZGYxMC4uZWYzNmU0OSAxMDA2NDQNCj4gLS0tIGEvZXhhbXBsZXMvZmxvd19maWx0ZXJpbmcvZmxv d19ibG9ja3MuYw0KPiArKysgYi9leGFtcGxlcy9mbG93X2ZpbHRlcmluZy9mbG93X2Jsb2Nrcy5j DQo+IEBAIC0xLDMzICsxLDUgQEANCj4gLS8qLQ0KPiAtICogICBCU0QgTElDRU5TRQ0KPiAtICoN Cj4gLSAqICAgQ29weXJpZ2h0IDIwMTcgTWVsbGFub3guDQo+IC0gKg0KPiAtICogICBSZWRpc3Ry aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv dXQNCj4gLSAqICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl IGZvbGxvd2luZyBjb25kaXRpb25zDQo+IC0gKiAgIGFyZSBtZXQ6DQo+IC0gKg0KPiAtICogICAg ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj b3B5cmlnaHQNCj4gLSAqICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCj4gLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQo+IC0gKiAg ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp c2NsYWltZXIgaW4NCj4gLSAqICAgICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUNCj4gLSAqICAgICAgIGRpc3RyaWJ1dGlvbi4NCj4g LSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgTWVsbGFub3ggbm9yIHRoZSBuYW1lcyBvZiBp dHMNCj4gLSAqICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy b21vdGUgcHJvZHVjdHMgZGVyaXZlZA0KPiAtICogICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdp dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KPiAtICoNCj4gLSAqICAg VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EDQo+ IENPTlRSSUJVVE9SUw0KPiAtICogICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUDQo+IE5PVA0KPiAtICogICBMSU1JVEVEIFRPLCBU SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQNCj4gRklUTkVTUyBG T1INCj4gLSAqICAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW RU5UIFNIQUxMIFRIRQ0KPiBDT1BZUklHSFQNCj4gLSAqICAgT1dORVIgT1IgQ09OVFJJQlVUT1JT IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsDQo+IElOQ0lERU5UQUwsDQo+IC0g KiAgIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ TkcsIEJVVA0KPiBOT1QNCj4gLSAqICAgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUw0KPiBPRiBVU0UsDQo+IC0gKiAgIERBVEEsIE9S IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQNCj4gQU5E IE9OIEFOWQ0KPiAtICogICBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU LCBTVFJJQ1QgTElBQklMSVRZLCBPUg0KPiBUT1JUDQo+IC0gKiAgIChJTkNMVURJTkcgTkVHTElH RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YNCj4gVEhFIFVTRQ0K PiAtICogICBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM SVRZIE9GIFNVQ0gNCj4gREFNQUdFLg0KPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJT RC0zLUNsYXVzZQ0KPiArICogQ29weXJpZ2h0KGMpIDIwMTcgTWVsbGFub3gNCj4gICAqLw0KPiAN Cj4gICNkZWZpbmUgTUFYX1BBVFRFUk5fTlVNCQk0DQo+IGRpZmYgLS1naXQgYS9leGFtcGxlcy9m bG93X2ZpbHRlcmluZy9tYWluLmMNCj4gYi9leGFtcGxlcy9mbG93X2ZpbHRlcmluZy9tYWluLmMN Cj4gaW5kZXggN2Q3MzliNC4uYjczM2I0YyAxMDA2NDQNCj4gLS0tIGEvZXhhbXBsZXMvZmxvd19m aWx0ZXJpbmcvbWFpbi5jDQo+ICsrKyBiL2V4YW1wbGVzL2Zsb3dfZmlsdGVyaW5nL21haW4uYw0K PiBAQCAtMSwzMyArMSw1IEBADQo+IC0vKi0NCj4gLSAqICAgQlNEIExJQ0VOU0UNCj4gLSAqDQo+ IC0gKiAgIENvcHlyaWdodCAyMDE3IE1lbGxhbm94Lg0KPiAtICoNCj4gLSAqICAgUmVkaXN0cmli dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0 DQo+IC0gKiAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm b2xsb3dpbmcgY29uZGl0aW9ucw0KPiAtICogICBhcmUgbWV0Og0KPiAtICoNCj4gLSAqICAgICAq IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w eXJpZ2h0DQo+IC0gKiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0 aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQo+IC0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KPiAtICogICAg ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj bGFpbWVyIGluDQo+IC0gKiAgICAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0 ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlDQo+IC0gKiAgICAgICBkaXN0cmlidXRpb24uDQo+IC0g KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIE1lbGxhbm94LiBub3IgdGhlIG5hbWVzIG9mIGl0 cw0KPiAtICogICAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv bW90ZSBwcm9kdWN0cyBkZXJpdmVkDQo+IC0gKiAgICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0 aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQo+IC0gKg0KPiAtICogICBU SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQNCj4g Q09OVFJJQlVUT1JTDQo+IC0gKiAgICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQNCj4gTk9UDQo+IC0gKiAgIExJTUlURUQgVE8sIFRI RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORA0KPiBGSVRORVNTIEZP Ug0KPiAtICogICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF TlQgU0hBTEwgVEhFDQo+IENPUFlSSUdIVA0KPiAtICogICBPV05FUiBPUiBDT05UUklCVVRPUlMg QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwNCj4gSU5DSURFTlRBTCwNCj4gLSAq ICAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO RywgQlVUDQo+IE5PVA0KPiAtICogICBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTDQo+IE9GIFVTRSwNCj4gLSAqICAgREFUQSwgT1Ig UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRA0KPiBBTkQg T04gQU5ZDQo+IC0gKiAgIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs IFNUUklDVCBMSUFCSUxJVFksIE9SDQo+IFRPUlQNCj4gLSAqICAgKElOQ0xVRElORyBORUdMSUdF TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRg0KPiBUSEUgVVNFDQo+ IC0gKiAgIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ VFkgT0YgU1VDSA0KPiBEQU1BR0UuDQo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNE LTMtQ2xhdXNlDQo+ICsgKiBDb3B5cmlnaHQoYykgMjAxNyBNZWxsYW5veA0KPiAgICovDQo+IA0K PiAgI2luY2x1ZGUgPHN0ZGlvLmg+DQo+IGRpZmYgLS1naXQgYS9leGFtcGxlcy9pcF9waXBlbGlu ZS9wYXJzZXIuYyBiL2V4YW1wbGVzL2lwX3BpcGVsaW5lL3BhcnNlci5jDQo+IGluZGV4IDY4OWUy MDYuLjM2OWY1MGMgMTAwNjQ0DQo+IC0tLSBhL2V4YW1wbGVzL2lwX3BpcGVsaW5lL3BhcnNlci5j DQo+ICsrKyBiL2V4YW1wbGVzL2lwX3BpcGVsaW5lL3BhcnNlci5jDQo+IEBAIC0xLDM0ICsxLDYg QEANCj4gLS8qLQ0KPiAtICogICBCU0QgTElDRU5TRQ0KPiAtICoNCj4gLSAqICAgQ29weXJpZ2h0 KGMpIDIwMTYgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+IC0gKiAg IEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+IC0gKg0KPiAtICogICBSZWRpc3RyaWJ1dGlvbiBhbmQg dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCj4gLSAqICAg bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj b25kaXRpb25zDQo+IC0gKiAgIGFyZSBtZXQ6DQo+IC0gKg0KPiAtICogICAgICogUmVkaXN0cmli dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCj4g LSAqICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp bmcgZGlzY2xhaW1lci4NCj4gLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQo+IC0gKiAgICAgICBub3RpY2Us IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4N Cj4gLSAqICAgICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv dmlkZWQgd2l0aCB0aGUNCj4gLSAqICAgICAgIGRpc3RyaWJ1dGlvbi4NCj4gLSAqICAgICAqIE5l aXRoZXIgdGhlIG5hbWUgb2YgSW50ZWwgQ29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMN Cj4gLSAqICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v dGUgcHJvZHVjdHMgZGVyaXZlZA0KPiAtICogICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KPiAtICoNCj4gLSAqICAgVEhJ UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EDQo+IENP TlRSSUJVVE9SUw0KPiAtICogICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB UlJBTlRJRVMsIElOQ0xVRElORywgQlVUDQo+IE5PVA0KPiAtICogICBMSU1JVEVEIFRPLCBUSEUg SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQNCj4gRklUTkVTUyBGT1IN Cj4gLSAqICAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U IFNIQUxMIFRIRQ0KPiBDT1BZUklHSFQNCj4gLSAqICAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsDQo+IElOQ0lERU5UQUwsDQo+IC0gKiAg IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs IEJVVA0KPiBOT1QNCj4gLSAqICAgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUw0KPiBPRiBVU0UsDQo+IC0gKiAgIERBVEEsIE9SIFBS T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQNCj4gQU5EIE9O IEFOWQ0KPiAtICogICBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT VFJJQ1QgTElBQklMSVRZLCBPUg0KPiBUT1JUDQo+IC0gKiAgIChJTkNMVURJTkcgTkVHTElHRU5D RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YNCj4gVEhFIFVTRQ0KPiAt ICogICBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ IE9GIFNVQ0gNCj4gREFNQUdFLg0KPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0z LUNsYXVzZQ0KPiArICogQ29weXJpZ2h0KGMpIDIwMTYgSW50ZWwgQ29ycG9yYXRpb24uDQo+ICsg KiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiAgICovDQo+IA0KPiAgLyoNCj4gQEAgLTM2LDQ3ICs4 LDEyIEBADQo+ICAgKg0KPiAgICogQ29weXJpZ2h0IChjKSAyMDA5LCBPbGl2aWVyIE1BVFogPHpl cjBAZHJvaWRzLWNvcnAub3JnPg0KPiAgICogQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gLSAqIFJl ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig d2l0aG91dA0KPiAtICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQ0KPiBtZXQ6DQo+IC0gKg0KPiAtICogICAgICog UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5 cmlnaHQNCj4gLSAqICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCj4gLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQo+IC0gKiAgICAg ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns YWltZXIgaW4gdGhlDQo+IC0gKiAgICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUNCj4gZGlzdHJpYnV0aW9uLg0KPiAtICogICAgICogTmVp dGhlciB0aGUgbmFtZSBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLCBCZXJrZWxleSBu b3IgdGhlDQo+IC0gKiAgICAgICBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZQ0KPiBwcm9kdWN0cw0KPiAtICogICAgICAgZGVyaXZlZCBm cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np b24uDQo+IC0gKg0KPiAtICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgUkVHRU5U UyBBTkQgQ09OVFJJQlVUT1JTIGBgQVMNCj4gSVMnJyBBTkQgQU5ZDQo+IC0gKiBFWFBSRVNTIE9S IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sDQo+IFRI RSBJTVBMSUVEDQo+IC0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSDQo+IFBVUlBPU0UgQVJFDQo+IC0gKiBESVNDTEFJTUVELiBJTiBO TyBFVkVOVCBTSEFMTCBUSEUgUkVHRU5UUyBBTkQgQ09OVFJJQlVUT1JTIEJFDQo+IExJQUJMRSBG T1IgQU5ZDQo+IC0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN UExBUlksIE9SDQo+IENPTlNFUVVFTlRJQUwgREFNQUdFUw0KPiAtICogKElOQ0xVRElORywgQlVU IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFDQo+IEdPT0RTIE9SIFNF UlZJQ0VTOw0KPiAtICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT IElOVEVSUlVQVElPTikNCj4gSE9XRVZFUiBDQVVTRUQgQU5EDQo+IC0gKiBPTiBBTlkgVEhFT1JZ IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwNCj4g T1IgVE9SVA0KPiAtICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO RyBJTiBBTlkgV0FZIE9VVCBPRg0KPiBUSEUgVVNFIE9GIFRISVMNCj4gLSAqIFNPRlRXQVJFLCBF VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLg0KPiAgICov DQo+IA0KPiAgLyoNCj4gICAqIEZvciBpbmV0X3B0b240KCkgYW5kIGluZXRfcHRvbjYoKSBmdW5j dGlvbnM6DQo+ICAgKg0KPiAgICogQ29weXJpZ2h0IChjKSAxOTk2IGJ5IEludGVybmV0IFNvZnR3 YXJlIENvbnNvcnRpdW0uDQo+IC0gKg0KPiAtICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1v ZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55DQo+IC0gKiBwdXJwb3Nl IHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhl IGFib3ZlDQo+IC0gKiBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNl IGFwcGVhciBpbiBhbGwgY29waWVzLg0KPiAtICoNCj4gLSAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9W SURFRCAiQVMgSVMiIEFORCBJTlRFUk5FVCBTT0ZUV0FSRQ0KPiBDT05TT1JUSVVNIERJU0NMQUlN Uw0KPiAtICogQUxMIFdBUlJBTlRJRVMgV0lUSCBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNM VURJTkcgQUxMDQo+IElNUExJRUQgV0FSUkFOVElFUw0KPiAtICogT0YgTUVSQ0hBTlRBQklMSVRZ IEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBJTlRFUk5FVA0KPiBTT0ZUV0FSRQ0KPiAt ICogQ09OU09SVElVTSBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsIElORElSRUNU LCBPUg0KPiBDT05TRVFVRU5USUFMDQo+IC0gKiBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRT T0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRg0KPiBVU0UsIERBVEEgT1INCj4gLSAqIFBST0ZJ VFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SDQo+IE9U SEVSIFRPUlRJT1VTDQo+IC0gKiBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJ T04gV0lUSCBUSEUgVVNFIE9SDQo+IFBFUkZPUk1BTkNFIE9GIFRISVMNCj4gLSAqIFNPRlRXQVJF Lg0KPiAgICovDQo+IA0KPiAgI2luY2x1ZGUgPHN0ZGludC5oPg0KPiBkaWZmIC0tZ2l0IGEvZXhh bXBsZXMvaXBfcGlwZWxpbmUvcGlwZWxpbmUvaGFzaF9mdW5jX2FybTY0LmgNCj4gYi9leGFtcGxl cy9pcF9waXBlbGluZS9waXBlbGluZS9oYXNoX2Z1bmNfYXJtNjQuaA0KPiBpbmRleCBhZTZjMGY0 Li43MDBmM2IwIDEwMDY0NA0KPiAtLS0gYS9leGFtcGxlcy9pcF9waXBlbGluZS9waXBlbGluZS9o YXNoX2Z1bmNfYXJtNjQuaA0KPiArKysgYi9leGFtcGxlcy9pcF9waXBlbGluZS9waXBlbGluZS9o YXNoX2Z1bmNfYXJtNjQuaA0KPiBAQCAtMSwzNSArMSw4IEBADQo+IC0vKi0NCj4gLSAqICAgQlNE IExJQ0VOU0UNCj4gLSAqDQo+IC0gKiAgIENvcHlyaWdodChjKSAyMDE3IExpbmFybyBMaW1pdGVk LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiAtICogICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiAt ICoNCj4gLSAqICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm b3Jtcywgd2l0aCBvciB3aXRob3V0DQo+IC0gKiAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KPiAtICogICBhcmUgbWV0 Og0KPiAtICoNCj4gLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0 IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQo+IC0gKiAgICAgICBub3RpY2UsIHRoaXMgbGlz dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQo+IC0gKiAgICAg KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl IGNvcHlyaWdodA0KPiAtICogICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluDQo+IC0gKiAgICAgICB0aGUgZG9jdW1lbnRh dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlDQo+IC0gKiAgICAg ICBkaXN0cmlidXRpb24uDQo+IC0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEludGVsIENv cnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzDQo+IC0gKiAgICAgICBjb250cmlidXRvcnMg bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQNCj4gLSAq ICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g cGVybWlzc2lvbi4NCj4gLSAqDQo+IC0gKiAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORA0KPiBDT05UUklCVVRPUlMNCj4gLSAqICAgIkFTIElT IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVA0K PiBOT1QNCj4gLSAqICAgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD SEFOVEFCSUxJVFkgQU5EDQo+IEZJVE5FU1MgRk9SDQo+IC0gKiAgIEEgUEFSVElDVUxBUiBQVVJQ T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUNCj4gQ09QWVJJR0hUDQo+ IC0gKiAgIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO RElSRUNULA0KPiBJTkNJREVOVEFMLA0KPiAtICogICBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQNCj4gTk9UDQo+IC0gKiAgIExJTUlU RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MN Cj4gT0YgVVNFLA0KPiAtICogICBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV UFRJT04pIEhPV0VWRVIgQ0FVU0VEDQo+IEFORCBPTiBBTlkNCj4gLSAqICAgVEhFT1JZIE9GIExJ QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1INCj4gVE9S VA0KPiAtICogICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO IEFOWSBXQVkgT1VUIE9GDQo+IFRIRSBVU0UNCj4gLSAqICAgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIDQo+IERBTUFHRS4NCj4gKy8q IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UNCj4gKyAqIENvcHlyaWdodChj KSAyMDE3IExpbmFybyBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICogQWxsIHJp Z2h0cyByZXNlcnZlZC4NCj4gICAqLw0KPiArDQo+ICAjaWZuZGVmIF9fSEFTSF9GVU5DX0FSTTY0 X0hfXw0KPiAgI2RlZmluZSBfX0hBU0hfRlVOQ19BUk02NF9IX18NCj4gDQo+IGRpZmYgLS1naXQg YS9leGFtcGxlcy9sM2Z3ZC9sM2Z3ZF9hbHRpdmVjLmgNCj4gYi9leGFtcGxlcy9sM2Z3ZC9sM2Z3 ZF9hbHRpdmVjLmgNCj4gaW5kZXggYTFkMjVlYS4uNWVjOTlmOSAxMDA2NDQNCj4gLS0tIGEvZXhh bXBsZXMvbDNmd2QvbDNmd2RfYWx0aXZlYy5oDQo+ICsrKyBiL2V4YW1wbGVzL2wzZndkL2wzZndk X2FsdGl2ZWMuaA0KPiBAQCAtMSwzOCArMSw5IEBADQo+IC0vKi0NCj4gLSAqICAgQlNEIExJQ0VO U0UNCj4gLSAqDQo+IC0gKiAgIENvcHlyaWdodChjKSAyMDE2IEludGVsIENvcnBvcmF0aW9uLiBB bGwgcmlnaHRzIHJlc2VydmVkLg0KPiAtICogICBDb3B5cmlnaHQoYykgMjAxNyBJQk0gQ29ycG9y YXRpb24uDQo+IC0gKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+IC0gKg0KPiAtICogICBSZWRp c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp dGhvdXQNCj4gLSAqICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg dGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQo+IC0gKiAgIGFyZSBtZXQ6DQo+IC0gKg0KPiAtICog ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92 ZSBjb3B5cmlnaHQNCj4gLSAqICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCj4gLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQo+IC0g KiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n IGRpc2NsYWltZXIgaW4NCj4gLSAqICAgICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUNCj4gLSAqICAgICAgIGRpc3RyaWJ1dGlvbi4N Cj4gLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgSW50ZWwgQ29ycG9yYXRpb24gbm9yIHRo ZSBuYW1lcyBvZiBpdHMNCj4gLSAqICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZA0KPiAtICogICAgICAgZnJvbSB0aGlz IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KPiAt ICoNCj4gLSAqICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP TERFUlMgQU5EDQo+IENPTlRSSUJVVE9SUw0KPiAtICogICAiQVMgSVMiIEFORCBBTlkgRVhQUkVT UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUDQo+IE5PVA0KPiAtICogICBM SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQN Cj4gRklUTkVTUyBGT1INCj4gLSAqICAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQ0KPiBDT1BZUklHSFQNCj4gLSAqICAgT1dORVIgT1Ig Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsDQo+IElOQ0lE RU5UQUwsDQo+IC0gKiAgIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B R0VTIChJTkNMVURJTkcsIEJVVA0KPiBOT1QNCj4gLSAqICAgTElNSVRFRCBUTywgUFJPQ1VSRU1F TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUw0KPiBPRiBVU0UsDQo+IC0g KiAgIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD QVVTRUQNCj4gQU5EIE9OIEFOWQ0KPiAtICogICBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUg0KPiBUT1JUDQo+IC0gKiAgIChJTkNM VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YN Cj4gVEhFIFVTRQ0KPiAtICogICBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gNCj4gREFNQUdFLg0KPiArLyogU1BEWC1MaWNlbnNlLUlk ZW50aWZpZXI6IEJTRC0zLUNsYXVzZQ0KPiArICogQ29weXJpZ2h0KGMpIDIwMTYgSW50ZWwgQ29y cG9yYXRpb24uDQo+ICsgKiBDb3B5cmlnaHQoYykgMjAxNyBJQk0gQ29ycG9yYXRpb24uDQo+ICsg KiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiAgICovDQo+IA0KPiAtDQo+ICAjaWZuZGVmIF9MM0ZX RF9BTFRJVkVDX0hfDQo+ICAjZGVmaW5lIF9MM0ZXRF9BTFRJVkVDX0hfDQo+IA0KPiBkaWZmIC0t Z2l0IGEvZXhhbXBsZXMvbDNmd2QvbDNmd2RfY29tbW9uLmgNCj4gYi9leGFtcGxlcy9sM2Z3ZC9s M2Z3ZF9jb21tb24uaA0KPiBpbmRleCA3MDAyYTQzLi4wYjQ3Mjc5IDEwMDY0NA0KPiAtLS0gYS9l eGFtcGxlcy9sM2Z3ZC9sM2Z3ZF9jb21tb24uaA0KPiArKysgYi9leGFtcGxlcy9sM2Z3ZC9sM2Z3 ZF9jb21tb24uaA0KPiBAQCAtMSwzNSArMSw3IEBADQo+IC0vKi0NCj4gLSAqICAgQlNEIExJQ0VO U0UNCj4gLSAqDQo+IC0gKiAgIENvcHlyaWdodChjKSAyMDE2IEludGVsIENvcnBvcmF0aW9uLiBB bGwgcmlnaHRzIHJlc2VydmVkLg0KPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0z LUNsYXVzZQ0KPiArICogICBDb3B5cmlnaHQoYykgMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbi4NCj4g ICAqICAgQ29weXJpZ2h0KGMpIDIwMTcsIExpbmFybyBMaW1pdGVkDQo+ICAgKiAgIEFsbCByaWdo dHMgcmVzZXJ2ZWQuDQo+IC0gKg0KPiAtICogICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCj4gLSAqICAgbW9kaWZpY2F0 aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z DQo+IC0gKiAgIGFyZSBtZXQ6DQo+IC0gKg0KPiAtICogICAgICogUmVkaXN0cmlidXRpb25zIG9m IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCj4gLSAqICAgICAg IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh aW1lci4NCj4gLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQo+IC0gKiAgICAgICBub3RpY2UsIHRoaXMgbGlz dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4NCj4gLSAqICAg ICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0 aCB0aGUNCj4gLSAqICAgICAgIGRpc3RyaWJ1dGlvbi4NCj4gLSAqICAgICAqIE5laXRoZXIgdGhl IG5hbWUgb2YgSW50ZWwgQ29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMNCj4gLSAqICAg ICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj dHMgZGVyaXZlZA0KPiAtICogICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KPiAtICoNCj4gLSAqICAgVEhJUyBTT0ZUV0FS RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EDQo+IENPTlRSSUJVVE9S Uw0KPiAtICogICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs IElOQ0xVRElORywgQlVUDQo+IE5PVA0KPiAtICogICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQNCj4gRklUTkVTUyBGT1INCj4gLSAqICAg QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI RQ0KPiBDT1BZUklHSFQNCj4gLSAqICAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsDQo+IElOQ0lERU5UQUwsDQo+IC0gKiAgIFNQRUNJQUws IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVA0KPiBO T1QNCj4gLSAqICAgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP UiBTRVJWSUNFUzsgTE9TUw0KPiBPRiBVU0UsDQo+IC0gKiAgIERBVEEsIE9SIFBST0ZJVFM7IE9S IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQNCj4gQU5EIE9OIEFOWQ0KPiAt ICogICBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB QklMSVRZLCBPUg0KPiBUT1JUDQo+IC0gKiAgIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YNCj4gVEhFIFVTRQ0KPiAtICogICBPRiBU SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gN Cj4gREFNQUdFLg0KPiAgICovDQo+IA0KPiANCj4gZGlmZiAtLWdpdCBhL2V4YW1wbGVzL2wzZndk L2wzZndkX2VtX2hsbS5oDQo+IGIvZXhhbXBsZXMvbDNmd2QvbDNmd2RfZW1faGxtLmgNCj4gaW5k ZXggOWQ3YWZlMC4uZjBiN2QwOSAxMDA2NDQNCj4gLS0tIGEvZXhhbXBsZXMvbDNmd2QvbDNmd2Rf ZW1faGxtLmgNCj4gKysrIGIvZXhhbXBsZXMvbDNmd2QvbDNmd2RfZW1faGxtLmgNCj4gQEAgLTEs MzcgKzEsOCBAQA0KPiAtLyotDQo+IC0gKiAgIEJTRCBMSUNFTlNFDQo+IC0gKg0KPiAtICogICBD b3B5cmlnaHQoYykgMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4N Cj4gLSAqICAgQ29weXJpZ2h0KGMpIDIwMTcsIExpbmFybyBMaW1pdGVkDQo+IC0gKiAgIEFsbCBy aWdodHMgcmVzZXJ2ZWQuDQo+IC0gKg0KPiAtICogICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCj4gLSAqICAgbW9kaWZp Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp b25zDQo+IC0gKiAgIGFyZSBtZXQ6DQo+IC0gKg0KPiAtICogICAgICogUmVkaXN0cmlidXRpb25z IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCj4gLSAqICAg ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz Y2xhaW1lci4NCj4gLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0 IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQo+IC0gKiAgICAgICBub3RpY2UsIHRoaXMg bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4NCj4gLSAq ICAgICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg d2l0aCB0aGUNCj4gLSAqICAgICAgIGRpc3RyaWJ1dGlvbi4NCj4gLSAqICAgICAqIE5laXRoZXIg dGhlIG5hbWUgb2YgSW50ZWwgQ29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMNCj4gLSAq ICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv ZHVjdHMgZGVyaXZlZA0KPiAtICogICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KPiAtICoNCj4gLSAqICAgVEhJUyBTT0ZU V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EDQo+IENPTlRSSUJV VE9SUw0KPiAtICogICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ RVMsIElOQ0xVRElORywgQlVUDQo+IE5PVA0KPiAtICogICBMSU1JVEVEIFRPLCBUSEUgSU1QTElF RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQNCj4gRklUTkVTUyBGT1INCj4gLSAq ICAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM IFRIRQ0KPiBDT1BZUklHSFQNCj4gLSAqICAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsDQo+IElOQ0lERU5UQUwsDQo+IC0gKiAgIFNQRUNJ QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVA0K PiBOT1QNCj4gLSAqICAgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E UyBPUiBTRVJWSUNFUzsgTE9TUw0KPiBPRiBVU0UsDQo+IC0gKiAgIERBVEEsIE9SIFBST0ZJVFM7 IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQNCj4gQU5EIE9OIEFOWQ0K PiAtICogICBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg TElBQklMSVRZLCBPUg0KPiBUT1JUDQo+IC0gKiAgIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YNCj4gVEhFIFVTRQ0KPiAtICogICBP RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV Q0gNCj4gREFNQUdFLg0KPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVz ZQ0KPiArICogQ29weXJpZ2h0KGMpIDIwMTYgSW50ZWwgQ29ycG9yYXRpb24uDQo+ICsgKiBDb3B5 cmlnaHQoYykgMjAxNywgTGluYXJvIExpbWl0ZWQNCj4gKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu DQo+ICAgKi8NCj4gLQ0KPiAgI2lmbmRlZiBfX0wzRldEX0VNX0hMTV9IX18NCj4gICNkZWZpbmUg X19MM0ZXRF9FTV9ITE1fSF9fDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvbDNmd2QvbDNm d2RfZW1faGxtX25lb24uaA0KPiBiL2V4YW1wbGVzL2wzZndkL2wzZndkX2VtX2hsbV9uZW9uLmgN Cj4gaW5kZXggZGFlMWFjZi4uMzBlMGVkNyAxMDA2NDQNCj4gLS0tIGEvZXhhbXBsZXMvbDNmd2Qv bDNmd2RfZW1faGxtX25lb24uaA0KPiArKysgYi9leGFtcGxlcy9sM2Z3ZC9sM2Z3ZF9lbV9obG1f bmVvbi5oDQo+IEBAIC0xLDM1ICsxLDcgQEANCj4gLS8qLQ0KPiAtICogICBCU0QgTElDRU5TRQ0K PiAtICoNCj4gLSAqICAgQ29weXJpZ2h0KGMpIDIwMTYgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCBy aWdodHMgcmVzZXJ2ZWQuDQo+IC0gKiAgIENvcHlyaWdodChjKSAyMDE3LCBMaW5hcm8gTGltaXRl ZA0KPiAtICogICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiAtICoNCj4gLSAqICAgUmVkaXN0cmli dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0 DQo+IC0gKiAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm b2xsb3dpbmcgY29uZGl0aW9ucw0KPiAtICogICBhcmUgbWV0Og0KPiAtICoNCj4gLSAqICAgICAq IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w eXJpZ2h0DQo+IC0gKiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0 aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQo+IC0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KPiAtICogICAg ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj bGFpbWVyIGluDQo+IC0gKiAgICAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0 ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlDQo+IC0gKiAgICAgICBkaXN0cmlidXRpb24uDQo+IC0g KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEludGVsIENvcnBvcmF0aW9uIG5vciB0aGUgbmFt ZXMgb2YgaXRzDQo+IC0gKiAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQNCj4gLSAqICAgICAgIGZyb20gdGhpcyBzb2Z0 d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCj4gLSAqDQo+ IC0gKiAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT IEFORA0KPiBDT05UUklCVVRPUlMNCj4gLSAqICAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVA0KPiBOT1QNCj4gLSAqICAgTElNSVRF RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EDQo+IEZJ VE5FU1MgRk9SDQo+IC0gKiAgIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ TiBOTyBFVkVOVCBTSEFMTCBUSEUNCj4gQ09QWVJJR0hUDQo+IC0gKiAgIE9XTkVSIE9SIENPTlRS SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULA0KPiBJTkNJREVOVEFM LA0KPiAtICogICBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo SU5DTFVESU5HLCBCVVQNCj4gTk9UDQo+IC0gKiAgIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MNCj4gT0YgVVNFLA0KPiAtICogICBE QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE DQo+IEFORCBPTiBBTlkNCj4gLSAqICAgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1INCj4gVE9SVA0KPiAtICogICAoSU5DTFVESU5H IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GDQo+IFRI RSBVU0UNCj4gLSAqICAgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ T1NTSUJJTElUWSBPRiBTVUNIDQo+IERBTUFHRS4NCj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBCU0QtMy1DbGF1c2UNCj4gKyAqIENvcHlyaWdodChjKSAyMDE2IEludGVsIENvcnBvcmF0 aW9uLg0KPiArICogQ29weXJpZ2h0KGMpIDIwMTcsIExpbmFybyBMaW1pdGVkDQo+ICsgKiBBbGwg cmlnaHRzIHJlc2VydmVkLg0KPiAgICovDQo+IA0KPiAgI2lmbmRlZiBfX0wzRldEX0VNX0hMTV9O RU9OX0hfXw0KPiBkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvbDNmd2QvbDNmd2RfbHBtX2FsdGl2ZWMu aA0KPiBiL2V4YW1wbGVzL2wzZndkL2wzZndkX2xwbV9hbHRpdmVjLmgNCj4gaW5kZXggMzZjYTk4 My4uNGM5ZTI0MyAxMDA2NDQNCj4gLS0tIGEvZXhhbXBsZXMvbDNmd2QvbDNmd2RfbHBtX2FsdGl2 ZWMuaA0KPiArKysgYi9leGFtcGxlcy9sM2Z3ZC9sM2Z3ZF9scG1fYWx0aXZlYy5oDQo+IEBAIC0x LDM1ICsxLDcgQEANCj4gLS8qLQ0KPiAtICogICBCU0QgTElDRU5TRQ0KPiAtICoNCj4gLSAqICAg Q29weXJpZ2h0KGMpIDIwMTAtMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNl cnZlZC4NCj4gLSAqICAgQ29weXJpZ2h0KGMpIDIwMTcgSUJNIENvcnBvcmF0aW9uLg0KPiAtICog ICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiAtICoNCj4gLSAqICAgUmVkaXN0cmlidXRpb24gYW5k IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQo+IC0gKiAg IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg Y29uZGl0aW9ucw0KPiAtICogICBhcmUgbWV0Og0KPiAtICoNCj4gLSAqICAgICAqIFJlZGlzdHJp YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQo+ IC0gKiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93 aW5nIGRpc2NsYWltZXIuDQo+IC0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KPiAtICogICAgICAgbm90aWNl LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu DQo+IC0gKiAgICAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy b3ZpZGVkIHdpdGggdGhlDQo+IC0gKiAgICAgICBkaXN0cmlidXRpb24uDQo+IC0gKiAgICAgKiBO ZWl0aGVyIHRoZSBuYW1lIG9mIEludGVsIENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRz DQo+IC0gKiAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t b3RlIHByb2R1Y3RzIGRlcml2ZWQNCj4gLSAqICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCj4gLSAqDQo+IC0gKiAgIFRI SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORA0KPiBD T05UUklCVVRPUlMNCj4gLSAqICAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVA0KPiBOT1QNCj4gLSAqICAgTElNSVRFRCBUTywgVEhF IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EDQo+IEZJVE5FU1MgRk9S DQo+IC0gKiAgIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO VCBTSEFMTCBUSEUNCj4gQ09QWVJJR0hUDQo+IC0gKiAgIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULA0KPiBJTkNJREVOVEFMLA0KPiAtICog ICBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H LCBCVVQNCj4gTk9UDQo+IC0gKiAgIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MNCj4gT0YgVVNFLA0KPiAtICogICBEQVRBLCBPUiBQ Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEDQo+IEFORCBP TiBBTlkNCj4gLSAqICAgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg U1RSSUNUIExJQUJJTElUWSwgT1INCj4gVE9SVA0KPiAtICogICAoSU5DTFVESU5HIE5FR0xJR0VO Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GDQo+IFRIRSBVU0UNCj4g LSAqICAgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU WSBPRiBTVUNIDQo+IERBTUFHRS4NCj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0Qt My1DbGF1c2UNCj4gKyAqIENvcHlyaWdodChjKSAyMDEwLTIwMTYgSW50ZWwgQ29ycG9yYXRpb24u DQo+ICsgKiBDb3B5cmlnaHQoYykgMjAxNyBJQk0gQ29ycG9yYXRpb24uDQo+ICsgKiBBbGwgcmln aHRzIHJlc2VydmVkLg0KPiAgICovDQo+IA0KPiAgI2lmbmRlZiBfX0wzRldEX0xQTV9BTFRJVkVD X0hfXw0KPiBkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvbDNmd2QvbDNmd2RfbHBtX25lb24uaA0KPiBi L2V4YW1wbGVzL2wzZndkL2wzZndkX2xwbV9uZW9uLmgNCj4gaW5kZXggODVmMzE0ZC4uYzUyNDM1 YiAxMDA2NDQNCj4gLS0tIGEvZXhhbXBsZXMvbDNmd2QvbDNmd2RfbHBtX25lb24uaA0KPiArKysg Yi9leGFtcGxlcy9sM2Z3ZC9sM2Z3ZF9scG1fbmVvbi5oDQo+IEBAIC0xLDM1ICsxLDcgQEANCj4g LS8qLQ0KPiAtICogICBCU0QgTElDRU5TRQ0KPiAtICoNCj4gLSAqICAgQ29weXJpZ2h0KGMpIDIw MTAtMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gLSAqICAg Q29weXJpZ2h0KGMpIDIwMTcsIExpbmFybyBMaW1pdGVkDQo+IC0gKiAgIEFsbCByaWdodHMgcmVz ZXJ2ZWQuDQo+IC0gKg0KPiAtICogICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCj4gLSAqICAgbW9kaWZpY2F0aW9uLCBh cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQo+IC0g KiAgIGFyZSBtZXQ6DQo+IC0gKg0KPiAtICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCj4gLSAqICAgICAgIG5vdGlj ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4N Cj4gLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj ZSB0aGUgYWJvdmUgY29weXJpZ2h0DQo+IC0gKiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4NCj4gLSAqICAgICAgIHRo ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUN Cj4gLSAqICAgICAgIGRpc3RyaWJ1dGlvbi4NCj4gLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg b2YgSW50ZWwgQ29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMNCj4gLSAqICAgICAgIGNv bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy aXZlZA0KPiAtICogICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp b3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KPiAtICoNCj4gLSAqICAgVEhJUyBTT0ZUV0FSRSBJUyBQ Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EDQo+IENPTlRSSUJVVE9SUw0KPiAt ICogICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV RElORywgQlVUDQo+IE5PVA0KPiAtICogICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQNCj4gRklUTkVTUyBGT1INCj4gLSAqICAgQSBQQVJU SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQ0KPiBD T1BZUklHSFQNCj4gLSAqICAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z IERJUkVDVCwgSU5ESVJFQ1QsDQo+IElOQ0lERU5UQUwsDQo+IC0gKiAgIFNQRUNJQUwsIEVYRU1Q TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVA0KPiBOT1QNCj4g LSAqICAgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW SUNFUzsgTE9TUw0KPiBPRiBVU0UsDQo+IC0gKiAgIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQNCj4gQU5EIE9OIEFOWQ0KPiAtICogICBU SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ LCBPUg0KPiBUT1JUDQo+IC0gKiAgIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YNCj4gVEhFIFVTRQ0KPiAtICogICBPRiBUSElTIFNP RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gNCj4gREFN QUdFLg0KPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQ0KPiArICog Q29weXJpZ2h0KGMpIDIwMTAtMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbi4NCj4gKyAqIENvcHlyaWdo dChjKSAyMDE3LCBMaW5hcm8gTGltaXRlZA0KPiArICogQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4g ICAqLw0KPiANCj4gICNpZm5kZWYgX19MM0ZXRF9MUE1fTkVPTl9IX18NCj4gZGlmZiAtLWdpdCBh L2V4YW1wbGVzL2wzZndkL2wzZndkX25lb24uaCBiL2V4YW1wbGVzL2wzZndkL2wzZndkX25lb24u aA0KPiBpbmRleCBiMzE5YjVhLi5iYTNkNzY4IDEwMDY0NA0KPiAtLS0gYS9leGFtcGxlcy9sM2Z3 ZC9sM2Z3ZF9uZW9uLmgNCj4gKysrIGIvZXhhbXBsZXMvbDNmd2QvbDNmd2RfbmVvbi5oDQo+IEBA IC0xLDM1ICsxLDcgQEANCj4gLS8qLQ0KPiAtICogICBCU0QgTElDRU5TRQ0KPiAtICoNCj4gLSAq ICAgQ29weXJpZ2h0KGMpIDIwMTYgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2 ZWQuDQo+IC0gKiAgIENvcHlyaWdodChjKSAyMDE3LCBMaW5hcm8gTGltaXRlZA0KPiAtICogICBB bGwgcmlnaHRzIHJlc2VydmVkLg0KPiAtICoNCj4gLSAqICAgUmVkaXN0cmlidXRpb24gYW5kIHVz ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQo+IC0gKiAgIG1v ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u ZGl0aW9ucw0KPiAtICogICBhcmUgbWV0Og0KPiAtICoNCj4gLSAqICAgICAqIFJlZGlzdHJpYnV0 aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQo+IC0g KiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n IGRpc2NsYWltZXIuDQo+IC0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KPiAtICogICAgICAgbm90aWNlLCB0 aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluDQo+ IC0gKiAgICAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp ZGVkIHdpdGggdGhlDQo+IC0gKiAgICAgICBkaXN0cmlidXRpb24uDQo+IC0gKiAgICAgKiBOZWl0 aGVyIHRoZSBuYW1lIG9mIEludGVsIENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzDQo+ IC0gKiAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl IHByb2R1Y3RzIGRlcml2ZWQNCj4gLSAqICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0 IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCj4gLSAqDQo+IC0gKiAgIFRISVMg U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORA0KPiBDT05U UklCVVRPUlMNCj4gLSAqICAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS QU5USUVTLCBJTkNMVURJTkcsIEJVVA0KPiBOT1QNCj4gLSAqICAgTElNSVRFRCBUTywgVEhFIElN UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EDQo+IEZJVE5FU1MgRk9SDQo+ IC0gKiAgIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT SEFMTCBUSEUNCj4gQ09QWVJJR0hUDQo+IC0gKiAgIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULA0KPiBJTkNJREVOVEFMLA0KPiAtICogICBT UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC VVQNCj4gTk9UDQo+IC0gKiAgIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg R09PRFMgT1IgU0VSVklDRVM7IExPU1MNCj4gT0YgVVNFLA0KPiAtICogICBEQVRBLCBPUiBQUk9G SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEDQo+IEFORCBPTiBB TlkNCj4gLSAqICAgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS SUNUIExJQUJJTElUWSwgT1INCj4gVE9SVA0KPiAtICogICAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GDQo+IFRIRSBVU0UNCj4gLSAq ICAgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP RiBTVUNIDQo+IERBTUFHRS4NCj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1D bGF1c2UNCj4gKyAqIENvcHlyaWdodChjKSAyMDE2IEludGVsIENvcnBvcmF0aW9uLg0KPiArICog Q29weXJpZ2h0KGMpIDIwMTcsIExpbmFybyBMaW1pdGVkDQo+ICsgKiBBbGwgcmlnaHRzIHJlc2Vy dmVkLg0KPiAgICovDQo+IA0KPiANCj4gZGlmZiAtLWdpdCBhL2V4YW1wbGVzL25ldG1hcF9jb21w YXQvbmV0bWFwL25ldG1hcC5oDQo+IGIvZXhhbXBsZXMvbmV0bWFwX2NvbXBhdC9uZXRtYXAvbmV0 bWFwLmgNCj4gaW5kZXggNjc3YzhhOS4uYzJjZmRkNSAxMDA2NDQNCj4gLS0tIGEvZXhhbXBsZXMv bmV0bWFwX2NvbXBhdC9uZXRtYXAvbmV0bWFwLmgNCj4gKysrIGIvZXhhbXBsZXMvbmV0bWFwX2Nv bXBhdC9uZXRtYXAvbmV0bWFwLmgNCj4gQEAgLTEsMzMgKzEsNSBAQA0KPiAtLyoNCj4gKy8qIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UNCj4gICAqIENvcHlyaWdodCAoQykg MjAxMSBNYXR0ZW8gTGFuZGksIEx1aWdpIFJpenpvLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiAt ICoNCj4gLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y bXMsIHdpdGggb3Igd2l0aG91dA0KPiAtICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQ0KPiAtICogbWV0Og0KPiAt ICoNCj4gLSAqICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu IHRoZSBhYm92ZSBjb3B5cmlnaHQNCj4gLSAqICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KPiAtICoNCj4gLSAqICAgMi4g UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj b3B5cmlnaHQNCj4gLSAqICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQ0KPiAtICogICAgICBkb2N1bWVudGF0aW9u IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUNCj4gLSAqICAgICAgZGlz dHJpYnV0aW9uLg0KPiAtICoNCj4gLSAqICAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0 aG9ycyBub3IgdGhlIG5hbWVzIG9mIHRoZWlyIGNvbnRyaWJ1dG9ycw0KPiAtICogICAgICBtYXkg YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMN Cj4gLSAqICAgICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p c3Npb24uDQo+IC0gKg0KPiAtICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBNQVRURU8g TEFOREkgQU5EIENPTlRSSUJVVE9SUw0KPiAiQVMgSVMiIEFORA0KPiAtICogQU5ZIEVYUFJFU1Mg T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRA0KPiBUTywg VEhFDQo+IC0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO RVNTIEZPUiBBDQo+IFBBUlRJQ1VMQVINCj4gLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO IE5PIEVWRU5UIFNIQUxMIE1BVFRFTyBMQU5ESSBPUg0KPiBDT05UUklCVVRPUlMNCj4gLSAqIEJF IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY RU1QTEFSWSwNCj4gT1INCj4gLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC VVQgTk9UIExJTUlURUQgVE8sDQo+IFBST0NVUkVNRU5UIE9GDQo+IC0gKiBTVUJTVElUVVRFIEdP T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1INCj4gQlVT SU5FU1MNCj4gLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP UlkgT0YgTElBQklMSVRZLA0KPiBXSEVUSEVSIElODQo+IC0gKiBDT05UUkFDVCwgU1RSSUNUIExJ QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1INCj4gT1RIRVJXSVNFKQ0K PiAtICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs IEVWRU4gSUYNCj4gQURWSVNFRCBPRg0KPiAtICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN QUdFLg0KPiAgICovDQo+IA0KPiAgLyoNCj4gZGlmZiAtLWdpdCBhL2V4YW1wbGVzL25ldG1hcF9j b21wYXQvbmV0bWFwL25ldG1hcF91c2VyLmgNCj4gYi9leGFtcGxlcy9uZXRtYXBfY29tcGF0L25l dG1hcC9uZXRtYXBfdXNlci5oDQo+IGluZGV4IGYzNjk1OTIuLjZiM2E0ZjEgMTAwNjQ0DQo+IC0t LSBhL2V4YW1wbGVzL25ldG1hcF9jb21wYXQvbmV0bWFwL25ldG1hcF91c2VyLmgNCj4gKysrIGIv ZXhhbXBsZXMvbmV0bWFwX2NvbXBhdC9uZXRtYXAvbmV0bWFwX3VzZXIuaA0KPiBAQCAtMSwzMyAr MSw1IEBADQo+IC0vKg0KPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVz ZQ0KPiAgICogQ29weXJpZ2h0IChDKSAyMDExIE1hdHRlbyBMYW5kaSwgTHVpZ2kgUml6em8uIEFs bCByaWdodHMgcmVzZXJ2ZWQuDQo+IC0gKg0KPiAtICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQo+IC0gKiBtb2RpZmlj YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv bnMgYXJlDQo+IC0gKiBtZXQ6DQo+IC0gKg0KPiAtICogICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KPiAtICogICAgICBu b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt ZXIuDQo+IC0gKg0KPiAtICogICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KPiAtICogICAgICBub3RpY2UsIHRoaXMg bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlDQo+ IC0gKiAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3 aXRoIHRoZQ0KPiAtICogICAgICBkaXN0cmlidXRpb24uDQo+IC0gKg0KPiAtICogICAzLiBOZWl0 aGVyIHRoZSBuYW1lIG9mIHRoZSBhdXRob3JzIG5vciB0aGUgbmFtZXMgb2YgdGhlaXIgY29udHJp YnV0b3JzDQo+IC0gKiAgICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k dWN0cyBkZXJpdmVkIGZyb20gdGhpcw0KPiAtICogICAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCj4gLSAqDQo+IC0gKiBUSElTIFNPRlRXQVJF IElTIFBST1ZJREVEIEJZIE1BVFRFTyBMQU5ESSBBTkQgQ09OVFJJQlVUT1JTDQo+ICJBUyBJUyIg QU5EDQo+IC0gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg QlVUIE5PVCBMSU1JVEVEDQo+IFRPLCBUSEUNCj4gLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEENCj4gUEFSVElDVUxBUg0KPiAtICogUFVS UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgTUFUVEVPIExBTkRJIE9SDQo+ IENPTlRSSUJVVE9SUw0KPiAtICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLA0KPiBPUg0KPiAtICogQ09OU0VRVUVOVElB TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywNCj4gUFJPQ1VSRU1FTlQg T0YNCj4gLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB LCBPUiBQUk9GSVRTOyBPUg0KPiBCVVNJTkVTUw0KPiAtICogSU5URVJSVVBUSU9OKSBIT1dFVkVS IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksDQo+IFdIRVRIRVIgSU4NCj4g LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH RU5DRSBPUg0KPiBPVEhFUldJU0UpDQo+IC0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRg0KPiBBRFZJU0VEIE9GDQo+IC0gKiBUSEUg UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQo+ICAgKi8NCj4gDQo+ICAvKg0KPiBkaWZmIC0t Z2l0IGEvZXhhbXBsZXMvcGVyZm9ybWFuY2UtdGhyZWFkL2NvbW1vbi9hcmNoL3g4Ni9jdHguYw0K PiBiL2V4YW1wbGVzL3BlcmZvcm1hbmNlLXRocmVhZC9jb21tb24vYXJjaC94ODYvY3R4LmMNCj4g aW5kZXggMWU4ZTI3MS4uN2IyMDZlMyAxMDA2NDQNCj4gLS0tIGEvZXhhbXBsZXMvcGVyZm9ybWFu Y2UtdGhyZWFkL2NvbW1vbi9hcmNoL3g4Ni9jdHguYw0KPiArKysgYi9leGFtcGxlcy9wZXJmb3Jt YW5jZS10aHJlYWQvY29tbW9uL2FyY2gveDg2L2N0eC5jDQo+IEBAIC0xLDY1ICsxLDEzIEBADQo+ IC0vKi0NCj4gLSAqICAgQlNEIExJQ0VOU0UNCj4gLSAqDQo+IC0gKiAgIENvcHlyaWdodChjKSAy MDE1ICBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gLSAqICAgQWxs IHJpZ2h0cyByZXNlcnZlZC4NCj4gLSAqDQo+IC0gKiAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KPiAtICogICBtb2Rp ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp dGlvbnMNCj4gLSAqICAgYXJlIG1ldDoNCj4gLSAqDQo+IC0gKiAgICAgKiBSZWRpc3RyaWJ1dGlv bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KPiAtICog ICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk aXNjbGFpbWVyLg0KPiAtICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11 c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQNCj4gLSAqICAgICAgIG5vdGljZSwgdGhp cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbg0KPiAt ICogICAgICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl ZCB3aXRoIHRoZQ0KPiAtICogICAgICAgZGlzdHJpYnV0aW9uLg0KPiAtICogICAgICogTmVpdGhl ciB0aGUgbmFtZSBvZiBJbnRlbCBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cw0KPiAt ICogICAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw cm9kdWN0cyBkZXJpdmVkDQo+IC0gKiAgICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQo+IC0gKg0KPiAtICogICBUSElTIFNP RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQNCj4gQ09OVFJJ QlVUT1JTDQo+IC0gKiAgICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO VElFUywgSU5DTFVESU5HLCBCVVQNCj4gTk9UDQo+IC0gKiAgIExJTUlURUQgVE8sIFRIRSBJTVBM SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORA0KPiBGSVRORVNTIEZPUg0KPiAt ICogICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB TEwgVEhFDQo+IENPUFlSSUdIVA0KPiAtICogICBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwNCj4gSU5DSURFTlRBTCwNCj4gLSAqICAgU1BF Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU DQo+IE5PVA0KPiAtICogICBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP T0RTIE9SIFNFUlZJQ0VTOyBMT1NTDQo+IE9GIFVTRSwNCj4gLSAqICAgREFUQSwgT1IgUFJPRklU UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRA0KPiBBTkQgT04gQU5Z DQo+IC0gKiAgIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD VCBMSUFCSUxJVFksIE9SDQo+IFRPUlQNCj4gLSAqICAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRg0KPiBUSEUgVVNFDQo+IC0gKiAg IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg U1VDSA0KPiBEQU1BR0UuDQo+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xh dXNlDQo+ICsgKiBDb3B5cmlnaHQoYykgMjAxNSAgSW50ZWwgQ29ycG9yYXRpb24uDQo+ICsgKiBB bGwgcmlnaHRzIHJlc2VydmVkDQo+ICAgKi8NCj4gDQo+ICAvKg0KPiAgICoNCj4gaHR0cHM6Ly9l bWVhMDEuc2FmZWxpbmtzLnByb3RlY3Rpb24ub3V0bG9vay5jb20vP3VybD1odHRwcyUzQSUyRiUy RmdpDQo+IHRodWIuY29tJTJGaGFsYXlsaSUyRmx0aHJlYWQmZGF0YT0wMiU3QzAxJTdDaGVtYW50 LmFncmF3YWwlNDBueA0KPiBwLmNvbSU3Qzc5ODU0ZTg2YWMwNTQ3YjMxMmE3MDhkNTVkYjgxY2U4 JTdDNjg2ZWExZDNiYzJiNGM2ZmENCj4gOTJjZDk5YzVjMzAxNjM1JTdDMCU3QzAlN0M2MzY1MTc5 Njc3NTIxMjg4NjYmc2RhdGE9UGsxeEgxOTgNCj4gNjE1aDAlMkZCaU16T20wYTZSSDFSVzBaOXlE dzFRSUVTVmIxZyUzRCZyZXNlcnZlZD0wIHdoaWNoDQo+IGNhcnJpZXMgdGhlIGZvbGxvd2luZyBs aWNlbnNlLg0KPiAtICoNCj4gICAqIENvcHlyaWdodCAoQykgMjAxMiwgSGFzYW4gQWxheWxpIDxo YWxheWxpQGdtYWlsLmNvbT4NCj4gLSAqDQo+IC0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCj4gLSAqIG1vZGlmaWNh dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u cw0KPiAtICogYXJlIG1ldDoNCj4gLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQo+IC0gKiAgICBub3RpY2UsIHRoaXMg bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQo+IC0gKiAy LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl IGNvcHlyaWdodA0KPiAtICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQ0KPiAtICogICAgZG9jdW1lbnRhdGlvbiBh bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCj4g LSAqDQo+IC0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFVVEhPUiBBTkQgQ09OVFJJ QlVUT1JTIGBgQVMgSVMnJw0KPiBBTkQNCj4gLSAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQNCj4gVE8sIFRIRQ0KPiAtICogSU1Q TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQQ0KPiBQ QVJUSUNVTEFSIFBVUlBPU0UNCj4gLSAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB TEwgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRQ0KPiBMSUFCTEUNCj4gLSAqIEZPUiBBTlkgRElS RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUg0KPiBDT05T RVFVRU5USUFMDQo+IC0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg UFJPQ1VSRU1FTlQgT0YNCj4gU1VCU1RJVFVURSBHT09EUw0KPiAtICogT1IgU0VSVklDRVM7IExP U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUw0KPiBJTlRFUlJVUFRJT04p DQo+IC0gKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI RVRIRVIgSU4NCj4gQ09OVFJBQ1QsIFNUUklDVA0KPiAtICogTElBQklMSVRZLCBPUiBUT1JUIChJ TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4NCj4gQU5ZIFdBWQ0K PiAtICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G IFRIRQ0KPiBQT1NTSUJJTElUWSBPRg0KPiAtICogU1VDSCBEQU1BR0UuDQo+ICAgKi8NCj4gDQo+ IC0NCj4gLQ0KPiAgI2lmIGRlZmluZWQoX194ODZfNjRfXykNCj4gIF9fYXNtX18gKA0KPiAgIi50 ZXh0XG4iDQo+IGRpZmYgLS1naXQgYS9leGFtcGxlcy9wZXJmb3JtYW5jZS10aHJlYWQvY29tbW9u L2FyY2gveDg2L3N0YWNrLmgNCj4gYi9leGFtcGxlcy9wZXJmb3JtYW5jZS10aHJlYWQvY29tbW9u L2FyY2gveDg2L3N0YWNrLmgNCj4gaW5kZXggOTg3MjNiYS4uMmMzMWY3YyAxMDA2NDQNCj4gLS0t IGEvZXhhbXBsZXMvcGVyZm9ybWFuY2UtdGhyZWFkL2NvbW1vbi9hcmNoL3g4Ni9zdGFjay5oDQo+ ICsrKyBiL2V4YW1wbGVzL3BlcmZvcm1hbmNlLXRocmVhZC9jb21tb24vYXJjaC94ODYvc3RhY2su aA0KPiBAQCAtMSw2NiArMSwxNSBAQA0KPiAtLyotDQo+IC0gKiAgIEJTRCBMSUNFTlNFDQo+IC0g Kg0KPiAtICogICBDb3B5cmlnaHQoYykgMjAxNSBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0 cyByZXNlcnZlZC4NCj4gLSAqICAgQ29weXJpZ2h0KGMpIENhdml1bSwgSW5jLiAyMDE3Lg0KPiAt ICogICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiAtICoNCj4gLSAqICAgUmVkaXN0cmlidXRpb24g YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQo+IC0g KiAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp bmcgY29uZGl0aW9ucw0KPiAtICogICBhcmUgbWV0Og0KPiAtICoNCj4gLSAqICAgICAqIFJlZGlz dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0 DQo+IC0gKiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s bG93aW5nIGRpc2NsYWltZXIuDQo+IC0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5 IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KPiAtICogICAgICAgbm90 aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy IGluDQo+IC0gKiAgICAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz IHByb3ZpZGVkIHdpdGggdGhlDQo+IC0gKiAgICAgICBkaXN0cmlidXRpb24uDQo+IC0gKiAgICAg KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEludGVsIENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2Yg aXRzDQo+IC0gKiAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQNCj4gLSAqICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3 aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCj4gLSAqDQo+IC0gKiAg IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORA0K PiBDT05UUklCVVRPUlMNCj4gLSAqICAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVA0KPiBOT1QNCj4gLSAqICAgTElNSVRFRCBUTywg VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EDQo+IEZJVE5FU1Mg Rk9SDQo+IC0gKiAgIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF VkVOVCBTSEFMTCBUSEUNCj4gQ09QWVJJR0hUDQo+IC0gKiAgIE9XTkVSIE9SIENPTlRSSUJVVE9S UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULA0KPiBJTkNJREVOVEFMLA0KPiAt ICogICBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE SU5HLCBCVVQNCj4gTk9UDQo+IC0gKiAgIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MNCj4gT0YgVVNFLA0KPiAtICogICBEQVRBLCBP UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEDQo+IEFO RCBPTiBBTlkNCj4gLSAqICAgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD VCwgU1RSSUNUIExJQUJJTElUWSwgT1INCj4gVE9SVA0KPiAtICogICAoSU5DTFVESU5HIE5FR0xJ R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GDQo+IFRIRSBVU0UN Cj4gLSAqICAgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ TElUWSBPRiBTVUNIDQo+IERBTUFHRS4NCj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBC U0QtMy1DbGF1c2UNCj4gKyAqIENvcHlyaWdodChjKSAyMDE1IEludGVsIENvcnBvcmF0aW9uLg0K PiArICogQ29weXJpZ2h0KGMpIENhdml1bSwgSW5jLiAyMDE3Lg0KPiArICogQWxsIHJpZ2h0cyBy ZXNlcnZlZA0KPiAgICovDQo+IA0KPiAgLyoNCj4gICAqIFNvbWUgcG9ydGlvbnMgb2YgdGhpcyBz b2Z0d2FyZSBpcyBkZXJpdmVkIGZyb20gdGhlDQo+IC0gKg0KPiBodHRwczovL2VtZWEwMS5zYWZl bGlua3MucHJvdGVjdGlvbi5vdXRsb29rLmNvbS8/dXJsPWh0dHBzJTNBJTJGJTJGZ2kNCj4gdGh1 Yi5jb20lMkZoYWxheWxpJTJGbHRocmVhZCZkYXRhPTAyJTdDMDElN0NoZW1hbnQuYWdyYXdhbCU0 MG54DQo+IHAuY29tJTdDNzk4NTRlODZhYzA1NDdiMzEyYTcwOGQ1NWRiODFjZTglN0M2ODZlYTFk M2JjMmI0YzZmYQ0KPiA5MmNkOTljNWMzMDE2MzUlN0MwJTdDMCU3QzYzNjUxNzk2Nzc1MjEyODg2 NiZzZGF0YT1QazF4SDE5OA0KPiA2MTVoMCUyRkJpTXpPbTBhNlJIMVJXMFo5eUR3MVFJRVNWYjFn JTNEJnJlc2VydmVkPTAgd2hpY2gNCj4gY2FycnlzIHRoZSBmb2xsb3dpbmcgbGljZW5zZS4NCj4g LSAqDQo+ICsgKg0KPiBodHRwczovL2VtZWEwMS5zYWZlbGlua3MucHJvdGVjdGlvbi5vdXRsb29r LmNvbS8/dXJsPWh0dHBzJTNBJTJGJTJGZ2kNCj4gdGh1Yi5jb20lMkZoYWxheWxpJTJGbHRocmVh ZCZkYXRhPTAyJTdDMDElN0NoZW1hbnQuYWdyYXdhbCU0MG54DQo+IHAuY29tJTdDNzk4NTRlODZh YzA1NDdiMzEyYTcwOGQ1NWRiODFjZTglN0M2ODZlYTFkM2JjMmI0YzZmYQ0KPiA5MmNkOTljNWMz MDE2MzUlN0MwJTdDMCU3QzYzNjUxNzk2Nzc1MjEyODg2NiZzZGF0YT1QazF4SDE5OA0KPiA2MTVo MCUyRkJpTXpPbTBhNlJIMVJXMFo5eUR3MVFJRVNWYjFnJTNEJnJlc2VydmVkPTAgd2hpY2gNCj4g Y2FycmllcyB0aGUgZm9sbG93aW5nIGxpY2Vuc2UuDQo+ICAgKiBDb3B5cmlnaHQgKEMpIDIwMTIs IEhhc2FuIEFsYXlsaSA8aGFsYXlsaUBnbWFpbC5jb20+DQo+IC0gKg0KPiAtICogUmVkaXN0cmli dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0 DQo+IC0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s bG93aW5nIGNvbmRpdGlvbnMNCj4gLSAqIGFyZSBtZXQ6DQo+IC0gKiAxLiBSZWRpc3RyaWJ1dGlv bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KPiAtICog ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj bGFpbWVyLg0KPiAtICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQNCj4gLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUNCj4gLSAqICAg IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk aXN0cmlidXRpb24uDQo+IC0gKg0KPiAtICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB VVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycNCj4gQU5EDQo+IC0gKiBBTlkgRVhQUkVT UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEDQo+IFRP LCBUSEUNCj4gLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ VE5FU1MgRk9SIEENCj4gUEFSVElDVUxBUiBQVVJQT1NFDQo+IC0gKiBBUkUgRElTQ0xBSU1FRC4g IElOIE5PIEVWRU5UIFNIQUxMIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUNCj4gTElBQkxFDQo+ IC0gKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q TEFSWSwgT1INCj4gQ09OU0VRVUVOVElBTA0KPiAtICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GDQo+IFNVQlNUSVRVVEUgR09PRFMNCj4gLSAq IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MN Cj4gSU5URVJSVVBUSU9OKQ0KPiAtICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg T0YgTElBQklMSVRZLCBXSEVUSEVSIElODQo+IENPTlRSQUNULCBTVFJJQ1QNCj4gLSAqIExJQUJJ TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H IElODQo+IEFOWSBXQVkNCj4gLSAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW RU4gSUYgQURWSVNFRCBPRiBUSEUNCj4gUE9TU0lCSUxJVFkgT0YNCj4gLSAqIFNVQ0ggREFNQUdF Lg0KPiAgICovDQo+IA0KPiAtDQo+ICAjaWZuZGVmIFNUQUNLX0gNCj4gICNkZWZpbmUgU1RBQ0tf SA0KPiANCj4gZGlmZiAtLWdpdCBhL2V4YW1wbGVzL3BlcmZvcm1hbmNlLXRocmVhZC9jb21tb24v bHRocmVhZC5jDQo+IGIvZXhhbXBsZXMvcGVyZm9ybWFuY2UtdGhyZWFkL2NvbW1vbi9sdGhyZWFk LmMNCj4gaW5kZXggN2Q3NmM4Yy4uMWVmNmUxMiAxMDA2NDQNCj4gLS0tIGEvZXhhbXBsZXMvcGVy Zm9ybWFuY2UtdGhyZWFkL2NvbW1vbi9sdGhyZWFkLmMNCj4gKysrIGIvZXhhbXBsZXMvcGVyZm9y bWFuY2UtdGhyZWFkL2NvbW1vbi9sdGhyZWFkLmMNCj4gQEAgLTEsNjIgKzEsMTIgQEANCj4gLS8q LQ0KPiAtICogICBCU0QgTElDRU5TRQ0KPiAtICoNCj4gLSAqICAgQ29weXJpZ2h0KGMpIDIwMTUg SW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+IC0gKiAgIEFsbCByaWdo dHMgcmVzZXJ2ZWQuDQo+IC0gKg0KPiAtICogICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCj4gLSAqICAgbW9kaWZpY2F0 aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z DQo+IC0gKiAgIGFyZSBtZXQ6DQo+IC0gKg0KPiAtICogICAgICogUmVkaXN0cmlidXRpb25zIG9m IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCj4gLSAqICAgICAg IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh aW1lci4NCj4gLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQo+IC0gKiAgICAgICBub3RpY2UsIHRoaXMgbGlz dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4NCj4gLSAqICAg ICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0 aCB0aGUNCj4gLSAqICAgICAgIGRpc3RyaWJ1dGlvbi4NCj4gLSAqICAgICAqIE5laXRoZXIgdGhl IG5hbWUgb2YgSW50ZWwgQ29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMNCj4gLSAqICAg ICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj dHMgZGVyaXZlZA0KPiAtICogICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KPiAtICoNCj4gLSAqICAgVEhJUyBTT0ZUV0FS RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EDQo+IENPTlRSSUJVVE9S Uw0KPiAtICogICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs IElOQ0xVRElORywgQlVUDQo+IE5PVA0KPiAtICogICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQNCj4gRklUTkVTUyBGT1INCj4gLSAqICAg QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI RQ0KPiBDT1BZUklHSFQNCj4gLSAqICAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsDQo+IElOQ0lERU5UQUwsDQo+IC0gKiAgIFNQRUNJQUws IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVA0KPiBO T1QNCj4gLSAqICAgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP UiBTRVJWSUNFUzsgTE9TUw0KPiBPRiBVU0UsDQo+IC0gKiAgIERBVEEsIE9SIFBST0ZJVFM7IE9S IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQNCj4gQU5EIE9OIEFOWQ0KPiAt ICogICBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB QklMSVRZLCBPUg0KPiBUT1JUDQo+IC0gKiAgIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YNCj4gVEhFIFVTRQ0KPiAtICogICBPRiBU SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gN Cj4gREFNQUdFLg0KPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQ0K PiArICogQ29weXJpZ2h0KGMpIDIwMTUgSW50ZWwgQ29ycG9yYXRpb24uDQo+ICsgKiBBbGwgcmln aHRzIHJlc2VydmVkLg0KPiAgICovDQo+IA0KPiAgLyoNCj4gICAqIFNvbWUgcG9ydGlvbnMgb2Yg dGhpcyBzb2Z0d2FyZSBpcyBkZXJpdmVkIGZyb20gdGhlDQo+ICAgKg0KPiBodHRwczovL2VtZWEw MS5zYWZlbGlua3MucHJvdGVjdGlvbi5vdXRsb29rLmNvbS8/dXJsPWh0dHBzJTNBJTJGJTJGZ2kN Cj4gdGh1Yi5jb20lMkZoYWxheWxpJTJGbHRocmVhZCZkYXRhPTAyJTdDMDElN0NoZW1hbnQuYWdy YXdhbCU0MG54DQo+IHAuY29tJTdDNzk4NTRlODZhYzA1NDdiMzEyYTcwOGQ1NWRiODFjZTglN0M2 ODZlYTFkM2JjMmI0YzZmYQ0KPiA5MmNkOTljNWMzMDE2MzUlN0MwJTdDMCU3QzYzNjUxNzk2Nzc1 MjEyODg2NiZzZGF0YT1QazF4SDE5OA0KPiA2MTVoMCUyRkJpTXpPbTBhNlJIMVJXMFo5eUR3MVFJ RVNWYjFnJTNEJnJlc2VydmVkPTAgd2hpY2gNCj4gY2FycnlzIHRoZSBmb2xsb3dpbmcgbGljZW5z ZS4NCj4gLSAqDQo+ICAgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIEhhc2FuIEFsYXlsaSA8aGFsYXls aUBnbWFpbC5jb20+DQo+IC0gKg0KPiAtICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQo+IC0gKiBtb2RpZmljYXRpb24s IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCj4g LSAqIGFyZSBtZXQ6DQo+IC0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KPiAtICogICAgbm90aWNlLCB0aGlzIGxpc3Qg b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KPiAtICogMi4gUmVk aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5 cmlnaHQNCj4gLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUNCj4gLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQo+IC0gKg0K PiAtICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBVVRIT1IgQU5EIENPTlRSSUJVVE9S UyBgYEFTIElTJycNCj4gQU5EDQo+IC0gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEDQo+IFRPLCBUSEUNCj4gLSAqIElNUExJRUQg V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEENCj4gUEFSVElD VUxBUiBQVVJQT1NFDQo+IC0gKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFV VEhPUiBPUiBDT05UUklCVVRPUlMgQkUNCj4gTElBQkxFDQo+IC0gKiBGT1IgQU5ZIERJUkVDVCwg SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1INCj4gQ09OU0VRVUVO VElBTA0KPiAtICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV UkVNRU5UIE9GDQo+IFNVQlNUSVRVVEUgR09PRFMNCj4gLSAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9G IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MNCj4gSU5URVJSVVBUSU9OKQ0KPiAt ICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS IElODQo+IENPTlRSQUNULCBTVFJJQ1QNCj4gLSAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElODQo+IEFOWSBXQVkNCj4gLSAq IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUN Cj4gUE9TU0lCSUxJVFkgT0YNCj4gLSAqIFNVQ0ggREFNQUdFLg0KPiAgICovDQo+IA0KPiAgI2Rl ZmluZSBSVEVfTUVNIDENCj4gZGlmZiAtLWdpdCBhL2V4YW1wbGVzL3BlcmZvcm1hbmNlLXRocmVh ZC9jb21tb24vbHRocmVhZC5oDQo+IGIvZXhhbXBsZXMvcGVyZm9ybWFuY2UtdGhyZWFkL2NvbW1v bi9sdGhyZWFkLmgNCj4gaW5kZXggMGNkZTU5MS4uYWRjNTIwOCAxMDA2NDQNCj4gLS0tIGEvZXhh bXBsZXMvcGVyZm9ybWFuY2UtdGhyZWFkL2NvbW1vbi9sdGhyZWFkLmgNCj4gKysrIGIvZXhhbXBs ZXMvcGVyZm9ybWFuY2UtdGhyZWFkL2NvbW1vbi9sdGhyZWFkLmgNCj4gQEAgLTEsNjIgKzEsMTIg QEANCj4gLS8qLQ0KPiAtICogICBCU0QgTElDRU5TRQ0KPiAtICoNCj4gLSAqICAgQ29weXJpZ2h0 KGMpIDIwMTUgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+IC0gKiAg IEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+IC0gKg0KPiAtICogICBSZWRpc3RyaWJ1dGlvbiBhbmQg dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCj4gLSAqICAg bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj b25kaXRpb25zDQo+IC0gKiAgIGFyZSBtZXQ6DQo+IC0gKg0KPiAtICogICAgICogUmVkaXN0cmli dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCj4g LSAqICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp bmcgZGlzY2xhaW1lci4NCj4gLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQo+IC0gKiAgICAgICBub3RpY2Us IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4N Cj4gLSAqICAgICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv dmlkZWQgd2l0aCB0aGUNCj4gLSAqICAgICAgIGRpc3RyaWJ1dGlvbi4NCj4gLSAqICAgICAqIE5l aXRoZXIgdGhlIG5hbWUgb2YgSW50ZWwgQ29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMN Cj4gLSAqICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v dGUgcHJvZHVjdHMgZGVyaXZlZA0KPiAtICogICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KPiAtICoNCj4gLSAqICAgVEhJ UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EDQo+IENP TlRSSUJVVE9SUw0KPiAtICogICAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB UlJBTlRJRVMsIElOQ0xVRElORywgQlVUDQo+IE5PVA0KPiAtICogICBMSU1JVEVEIFRPLCBUSEUg SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQNCj4gRklUTkVTUyBGT1IN Cj4gLSAqICAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U IFNIQUxMIFRIRQ0KPiBDT1BZUklHSFQNCj4gLSAqICAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsDQo+IElOQ0lERU5UQUwsDQo+IC0gKiAg IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs IEJVVA0KPiBOT1QNCj4gLSAqICAgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUw0KPiBPRiBVU0UsDQo+IC0gKiAgIERBVEEsIE9SIFBS T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQNCj4gQU5EIE9O IEFOWQ0KPiAtICogICBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT VFJJQ1QgTElBQklMSVRZLCBPUg0KPiBUT1JUDQo+IC0gKiAgIChJTkNMVURJTkcgTkVHTElHRU5D RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YNCj4gVEhFIFVTRQ0KPiAt ICogICBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ IE9GIFNVQ0gNCj4gREFNQUdFLg0KPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0z LUNsYXVzZQ0KPiArICogQ29weXJpZ2h0KGMpIDIwMTUgSW50ZWwgQ29ycG9yYXRpb24uDQo+ICsg KiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiAgICovDQo+IA0KPiAgLyoNCj4gICAqIFNvbWUgcG9y dGlvbnMgb2YgdGhpcyBzb2Z0d2FyZSBpcyBkZXJpdmVkIGZyb20gdGhlDQo+ICAgKg0KPiBodHRw czovL2VtZWEwMS5zYWZlbGlua3MucHJvdGVjdGlvbi5vdXRsb29rLmNvbS8/dXJsPWh0dHBzJTNB JTJGJTJGZ2kNCj4gdGh1Yi5jb20lMkZoYWxheWxpJTJGbHRocmVhZCZkYXRhPTAyJTdDMDElN0No ZW1hbnQuYWdyYXdhbCU0MG54DQo+IHAuY29tJTdDNzk4NTRlODZhYzA1NDdiMzEyYTcwOGQ1NWRi ODFjZTglN0M2ODZlYTFkM2JjMmI0YzZmYQ0KPiA5MmNkOTljNWMzMDE2MzUlN0MwJTdDMCU3QzYz NjUxNzk2Nzc1MjEyODg2NiZzZGF0YT1QazF4SDE5OA0KPiA2MTVoMCUyRkJpTXpPbTBhNlJIMVJX MFo5eUR3MVFJRVNWYjFnJTNEJnJlc2VydmVkPTAgd2hpY2gNCj4gY2FycnlzIHRoZSBmb2xsb3dp bmcgbGljZW5zZS4NCj4gLSAqDQo+ICAgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIEhhc2FuIEFsYXls aSA8aGFsYXlsaUBnbWFpbC5jb20+DQo+IC0gKg0KPiAtICogUmVkaXN0cmlidXRpb24gYW5kIHVz ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQo+IC0gKiBtb2Rp ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp dGlvbnMNCj4gLSAqIGFyZSBtZXQ6DQo+IC0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KPiAtICogICAgbm90aWNlLCB0 aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KPiAt ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh Ym92ZSBjb3B5cmlnaHQNCj4gLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUNCj4gLSAqICAgIGRvY3VtZW50YXRp b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u DQo+IC0gKg0KPiAtICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBVVRIT1IgQU5EIENP TlRSSUJVVE9SUyBgYEFTIElTJycNCj4gQU5EDQo+IC0gKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEDQo+IFRPLCBUSEUNCj4gLSAq IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEN Cj4gUEFSVElDVUxBUiBQVVJQT1NFDQo+IC0gKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U IFNIQUxMIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUNCj4gTElBQkxFDQo+IC0gKiBGT1IgQU5Z IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1INCj4g Q09OU0VRVUVOVElBTA0KPiAtICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg VE8sIFBST0NVUkVNRU5UIE9GDQo+IFNVQlNUSVRVVEUgR09PRFMNCj4gLSAqIE9SIFNFUlZJQ0VT OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MNCj4gSU5URVJSVVBU SU9OKQ0KPiAtICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ LCBXSEVUSEVSIElODQo+IENPTlRSQUNULCBTVFJJQ1QNCj4gLSAqIExJQUJJTElUWSwgT1IgVE9S VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElODQo+IEFOWSBX QVkNCj4gLSAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF RCBPRiBUSEUNCj4gUE9TU0lCSUxJVFkgT0YNCj4gLSAqIFNVQ0ggREFNQUdFLg0KPiAgICovDQo+ IA0KPiAgI2lmbmRlZiBMVEhSRUFEX0hfDQo+IGRpZmYgLS1naXQgYS9leGFtcGxlcy9wZXJmb3Jt YW5jZS10aHJlYWQvY29tbW9uL2x0aHJlYWRfYXBpLmgNCj4gYi9leGFtcGxlcy9wZXJmb3JtYW5j ZS10aHJlYWQvY29tbW9uL2x0aHJlYWRfYXBpLmgNCj4gaW5kZXggZmYyNDVhMC4uYmRjMDY4ZCAx MDA2NDQNCj4gLS0tIGEvZXhhbXBsZXMvcGVyZm9ybWFuY2UtdGhyZWFkL2NvbW1vbi9sdGhyZWFk X2FwaS5oDQo+ICsrKyBiL2V4YW1wbGVzL3BlcmZvcm1hbmNlLXRocmVhZC9jb21tb24vbHRocmVh ZF9hcGkuaA0KPiBAQCAtMSw2MiArMSwxMiBAQA0KPiAtLyotDQo+IC0gKiAgIEJTRCBMSUNFTlNF DQo+IC0gKg0KPiAtICogICBDb3B5cmlnaHQoYykgMjAxNSBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs IHJpZ2h0cyByZXNlcnZlZC4NCj4gLSAqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gLSAqDQo+ IC0gKiAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs IHdpdGggb3Igd2l0aG91dA0KPiAtICogICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCj4gLSAqICAgYXJlIG1ldDoNCj4g LSAqDQo+IC0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh aW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KPiAtICogICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KPiAtICogICAgICogUmVk aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5 cmlnaHQNCj4gLSAqICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbg0KPiAtICogICAgICAgdGhlIGRvY3VtZW50YXRpb24g YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQ0KPiAtICogICAgICAgZGlz dHJpYnV0aW9uLg0KPiAtICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBJbnRlbCBDb3Jwb3Jh dGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cw0KPiAtICogICAgICAgY29udHJpYnV0b3JzIG1heSBi ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkDQo+IC0gKiAgICAg ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p c3Npb24uDQo+IC0gKg0KPiAtICogICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD T1BZUklHSFQgSE9MREVSUyBBTkQNCj4gQ09OVFJJQlVUT1JTDQo+IC0gKiAgICJBUyBJUyIgQU5E IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQNCj4gTk9U DQo+IC0gKiAgIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB QklMSVRZIEFORA0KPiBGSVRORVNTIEZPUg0KPiAtICogICBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFDQo+IENPUFlSSUdIVA0KPiAtICog ICBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD VCwNCj4gSU5DSURFTlRBTCwNCj4gLSAqICAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUDQo+IE5PVA0KPiAtICogICBMSU1JVEVEIFRP LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTDQo+IE9G IFVTRSwNCj4gLSAqICAgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O KSBIT1dFVkVSIENBVVNFRA0KPiBBTkQgT04gQU5ZDQo+IC0gKiAgIFRIRU9SWSBPRiBMSUFCSUxJ VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SDQo+IFRPUlQNCj4g LSAqICAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg V0FZIE9VVCBPRg0KPiBUSEUgVVNFDQo+IC0gKiAgIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSA0KPiBEQU1BR0UuDQo+ICsvKiBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlDQo+ICsgKiBDb3B5cmlnaHQoYykgMjAx NSBJbnRlbCBDb3Jwb3JhdGlvbi4NCj4gKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICAgKi8N Cj4gDQo+ICAvKg0KPiAgICogU29tZSBwb3J0aW9ucyBvZiB0aGlzIHNvZnR3YXJlIG1heSBoYXZl IGJlZW4gZGVyaXZlZCBmcm9tIHRoZQ0KPiAgICoNCj4gaHR0cHM6Ly9lbWVhMDEuc2FmZWxpbmtz LnByb3RlY3Rpb24ub3V0bG9vay5jb20vP3VybD1odHRwcyUzQSUyRiUyRmdpDQo+IHRodWIuY29t JTJGaGFsYXlsaSUyRmx0aHJlYWQmZGF0YT0wMiU3QzAxJTdDaGVtYW50LmFncmF3YWwlNDBueA0K PiBwLmNvbSU3Qzc5ODU0ZTg2YWMwNTQ3YjMxMmE3MDhkNTVkYjgxY2U4JTdDNjg2ZWExZDNiYzJi NGM2ZmENCj4gOTJjZDk5YzVjMzAxNjM1JTdDMCU3QzAlN0M2MzY1MTc5Njc3NTIxMjg4NjYmc2Rh dGE9UGsxeEgxOTgNCj4gNjE1aDAlMkZCaU16T20wYTZSSDFSVzBaOXlEdzFRSUVTVmIxZyUzRCZy ZXNlcnZlZD0wIHdoaWNoDQo+IGNhcnJ5cyB0aGUgZm9sbG93aW5nIGxpY2Vuc2UuDQo+IC0gKg0K PiAgICogQ29weXJpZ2h0IChDKSAyMDEyLCBIYXNhbiBBbGF5bGkgPGhhbGF5bGlAZ21haWwuY29t Pg0KPiAtICoNCj4gLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KPiAtICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0 dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQo+IC0gKiBhcmUgbWV0 Og0KPiAtICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo ZSBhYm92ZSBjb3B5cmlnaHQNCj4gLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCj4gLSAqIDIuIFJlZGlzdHJpYnV0aW9u cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQo+IC0g KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp c2NsYWltZXIgaW4gdGhlDQo+IC0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLg0KPiAtICoNCj4gLSAqIFRISVMg U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycn DQo+IEFORA0KPiAtICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ TkcsIEJVVCBOT1QgTElNSVRFRA0KPiBUTywgVEhFDQo+IC0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBDQo+IFBBUlRJQ1VMQVIgUFVSUE9T RQ0KPiAtICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBVVRIT1IgT1IgQ09O VFJJQlVUT1JTIEJFDQo+IExJQUJMRQ0KPiAtICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SDQo+IENPTlNFUVVFTlRJQUwNCj4gLSAq IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRg0K PiBTVUJTVElUVVRFIEdPT0RTDQo+IC0gKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTDQo+IElOVEVSUlVQVElPTikNCj4gLSAqIEhPV0VWRVIg Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTg0KPiBDT05U UkFDVCwgU1RSSUNUDQo+IC0gKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTg0KPiBBTlkgV0FZDQo+IC0gKiBPVVQgT0YgVEhF IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFDQo+IFBPU1NJQklM SVRZIE9GDQo+IC0gKiBTVUNIIERBTUFHRS4NCj4gICAqLw0KPiANCj4gIC8qKg0KPiBkaWZmIC0t Z2l0IGEvZXhhbXBsZXMvcGVyZm9ybWFuY2UtdGhyZWFkL2NvbW1vbi9sdGhyZWFkX2NvbmQuYw0K PiBiL2V4YW1wbGVzL3BlcmZvcm1hbmNlLXRocmVhZC9jb21tb24vbHRocmVhZF9jb25kLmMNCj4g aW5kZXggOTZmY2NlMC4uMTg4MGJiOSAxMDA2NDQNCj4gLS0tIGEvZXhhbXBsZXMvcGVyZm9ybWFu Y2UtdGhyZWFkL2NvbW1vbi9sdGhyZWFkX2NvbmQuYw0KPiArKysgYi9leGFtcGxlcy9wZXJmb3Jt YW5jZS10aHJlYWQvY29tbW9uL2x0aHJlYWRfY29uZC5jDQo+IEBAIC0xLDYyICsxLDEyIEBADQo+ IC0vKi0NCj4gLSAqICAgQlNEIExJQ0VOU0UNCj4gLSAqDQo+IC0gKiAgIENvcHlyaWdodChjKSAy MDE1IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiAtICogICBBbGwg cmlnaHRzIHJlc2VydmVkLg0KPiAtICoNCj4gLSAqICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQo+IC0gKiAgIG1vZGlm aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0 aW9ucw0KPiAtICogICBhcmUgbWV0Og0KPiAtICoNCj4gLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQo+IC0gKiAg ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp c2NsYWltZXIuDQo+IC0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KPiAtICogICAgICAgbm90aWNlLCB0aGlz IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluDQo+IC0g KiAgICAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk IHdpdGggdGhlDQo+IC0gKiAgICAgICBkaXN0cmlidXRpb24uDQo+IC0gKiAgICAgKiBOZWl0aGVy IHRoZSBuYW1lIG9mIEludGVsIENvcnBvcmF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzDQo+IC0g KiAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy b2R1Y3RzIGRlcml2ZWQNCj4gLSAqICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCj4gLSAqDQo+IC0gKiAgIFRISVMgU09G VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORA0KPiBDT05UUklC VVRPUlMNCj4gLSAqICAgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U SUVTLCBJTkNMVURJTkcsIEJVVA0KPiBOT1QNCj4gLSAqICAgTElNSVRFRCBUTywgVEhFIElNUExJ RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EDQo+IEZJVE5FU1MgRk9SDQo+IC0g KiAgIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM TCBUSEUNCj4gQ09QWVJJR0hUDQo+IC0gKiAgIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULA0KPiBJTkNJREVOVEFMLA0KPiAtICogICBTUEVD SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQN Cj4gTk9UDQo+IC0gKiAgIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P RFMgT1IgU0VSVklDRVM7IExPU1MNCj4gT0YgVVNFLA0KPiAtICogICBEQVRBLCBPUiBQUk9GSVRT OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEDQo+IEFORCBPTiBBTlkN Cj4gLSAqICAgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU IExJQUJJTElUWSwgT1INCj4gVE9SVA0KPiAtICogICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GDQo+IFRIRSBVU0UNCj4gLSAqICAg T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT VUNIDQo+IERBTUFHRS4NCj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1 c2UNCj4gKyAqIENvcHlyaWdodChjKSAyMDE1IEludGVsIENvcnBvcmF0aW9uLg0KPiArICogQWxs IHJpZ2h0cyByZXNlcnZlZC4NCj4gICAqLw0KPiANCj4gIC8qDQo+ICAgKiBTb21lIHBvcnRpb25z IG9mIHRoaXMgc29mdHdhcmUgbWF5IGhhdmUgYmVlbiBkZXJpdmVkIGZyb20gdGhlDQo+ICAgKg0K PiBodHRwczovL2VtZWEwMS5zYWZlbGlua3MucHJvdGVjdGlvbi5vdXRsb29rLmNvbS8/dXJsPWh0 dHBzJTNBJTJGJTJGZ2kNCj4gdGh1Yi5jb20lMkZoYWxheWxpJTJGbHRocmVhZCZkYXRhPTAyJTdD MDElN0NoZW1hbnQuYWdyYXdhbCU0MG54DQo+IHAuY29tJTdDNzk4NTRlODZhYzA1NDdiMzEyYTcw OGQ1NWRiODFjZTglN0M2ODZlYTFkM2JjMmI0YzZmYQ0KPiA5MmNkOTljNWMzMDE2MzUlN0MwJTdD MCU3QzYzNjUxNzk2Nzc1MjEyODg2NiZzZGF0YT1QazF4SDE5OA0KPiA2MTVoMCUyRkJpTXpPbTBh NlJIMVJXMFo5eUR3MVFJRVNWYjFnJTNEJnJlc2VydmVkPTAgd2hpY2gNCj4gY2FycnlzIHRoZSBm b2xsb3dpbmcgbGljZW5zZS4NCj4gLSAqDQo+ICAgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIEhhc2Fu IEFsYXlsaSA8aGFsYXlsaUBnbWFpbC5jb20+DQo+IC0gKg0KPiAtICogUmVkaXN0cmlidXRpb24g YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQo+IC0g KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n IGNvbmRpdGlvbnMNCj4gLSAqIGFyZSBtZXQ6DQo+IC0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KPiAtICogICAgbm90 aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy Lg0KPiAtICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl IHRoZSBhYm92ZSBjb3B5cmlnaHQNCj4gLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUNCj4gLSAqICAgIGRvY3Vt ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli dXRpb24uDQo+IC0gKg0KPiAtICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBVVRIT1Ig QU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycNCj4gQU5EDQo+IC0gKiBBTlkgRVhQUkVTUyBPUiBJ TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEDQo+IFRPLCBUSEUN Cj4gLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg Rk9SIEENCj4gUEFSVElDVUxBUiBQVVJQT1NFDQo+IC0gKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5P IEVWRU5UIFNIQUxMIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUNCj4gTElBQkxFDQo+IC0gKiBG T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg T1INCj4gQ09OU0VRVUVOVElBTA0KPiAtICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GDQo+IFNVQlNUSVRVVEUgR09PRFMNCj4gLSAqIE9SIFNF UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MNCj4gSU5U RVJSVVBUSU9OKQ0KPiAtICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB QklMSVRZLCBXSEVUSEVSIElODQo+IENPTlRSQUNULCBTVFJJQ1QNCj4gLSAqIExJQUJJTElUWSwg T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElODQo+ IEFOWSBXQVkNCj4gLSAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg QURWSVNFRCBPRiBUSEUNCj4gUE9TU0lCSUxJVFkgT0YNCj4gLSAqIFNVQ0ggREFNQUdFLg0KPiAg ICovDQo+IA0KPiAgI2luY2x1ZGUgPHN0ZGlvLmg+DQo+IGRpZmYgLS1naXQgYS9leGFtcGxlcy9w ZXJmb3JtYW5jZS10aHJlYWQvY29tbW9uL2x0aHJlYWRfY29uZC5oDQo+IGIvZXhhbXBsZXMvcGVy Zm9ybWFuY2UtdGhyZWFkL2NvbW1vbi9sdGhyZWFkX2NvbmQuaA0KPiBpbmRleCA1ZTVmMTRiLi45 OTI3YzlhIDEwMDY0NA0KPiAtLS0gYS9leGFtcGxlcy9wZXJmb3JtYW5jZS10aHJlYWQvY29tbW9u L2x0aHJlYWRfY29uZC5oDQo+ICsrKyBiL2V4YW1wbGVzL3BlcmZvcm1hbmNlLXRocmVhZC9jb21t b24vbHRocmVhZF9jb25kLmgNCj4gQEAgLTEsNjIgKzEsMTIgQEANCj4gLS8qLQ0KPiAtICogICBC U0QgTElDRU5TRQ0KPiAtICoNCj4gLSAqICAgQ29weXJpZ2h0KGMpIDIwMTUgSW50ZWwgQ29ycG9y YXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+IC0gKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQu DQo+IC0gKg0KPiAtICogICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCj4gLSAqICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVy bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQo+IC0gKiAgIGFy ZSBtZXQ6DQo+IC0gKg0KPiAtICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCj4gLSAqICAgICAgIG5vdGljZSwgdGhp cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCj4gLSAq ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg YWJvdmUgY29weXJpZ2h0DQo+IC0gKiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4NCj4gLSAqICAgICAgIHRoZSBkb2N1 bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUNCj4gLSAq ICAgICAgIGRpc3RyaWJ1dGlvbi4NCj4gLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgSW50 ZWwgQ29ycG9yYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMNCj4gLSAqICAgICAgIGNvbnRyaWJ1 dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZA0K PiAtICogICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp dHRlbiBwZXJtaXNzaW9uLg0KPiAtICoNCj4gLSAqICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EDQo+IENPTlRSSUJVVE9SUw0KPiAtICogICAi QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg QlVUDQo+IE5PVA0KPiAtICogICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G IE1FUkNIQU5UQUJJTElUWSBBTkQNCj4gRklUTkVTUyBGT1INCj4gLSAqICAgQSBQQVJUSUNVTEFS IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQ0KPiBDT1BZUklH SFQNCj4gLSAqICAgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD VCwgSU5ESVJFQ1QsDQo+IElOQ0lERU5UQUwsDQo+IC0gKiAgIFNQRUNJQUwsIEVYRU1QTEFSWSwg T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVA0KPiBOT1QNCj4gLSAqICAg TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg TE9TUw0KPiBPRiBVU0UsDQo+IC0gKiAgIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQNCj4gQU5EIE9OIEFOWQ0KPiAtICogICBUSEVPUlkg T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUg0K PiBUT1JUDQo+IC0gKiAgIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ TkcgSU4gQU5ZIFdBWSBPVVQgT0YNCj4gVEhFIFVTRQ0KPiAtICogICBPRiBUSElTIFNPRlRXQVJF LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gNCj4gREFNQUdFLg0K PiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQ0KPiArICogQ29weXJp Z2h0KGMpIDIwMTUgSW50ZWwgQ29ycG9yYXRpb24uDQo+ICsgKiBBbGwgcmlnaHRzIHJlc2VydmVk Lg0KPiAgICovDQo+IA0KPiAgLyoNCj4gICAqIFNvbWUgcG9ydGlvbnMgb2YgdGhpcyBzb2Z0d2Fy ZSBtYXkgaGF2ZSBiZWVuIGRlcml2ZWQgZnJvbSB0aGUNCj4gICAqDQo+IGh0dHBzOi8vZW1lYTAx LnNhZmVsaW5rcy5wcm90ZWN0aW9uLm91dGxvb2suY29tLz91cmw9aHR0cHMlM0ElMkYlMkZnaQ0K PiB0aHViLmNvbSUyRmhhbGF5bGklMkZsdGhyZWFkJmRhdGE9MDIlN0MwMSU3Q2hlbWFudC5hZ3Jh d2FsJTQwbngNCj4gcC5jb20lN0M3OTg1NGU4NmFjMDU0N2IzMTJhNzA4ZDU1ZGI4MWNlOCU3QzY4 NmVhMWQzYmMyYjRjNmZhDQo+IDkyY2Q5OWM1YzMwMTYzNSU3QzAlN0MwJTdDNjM2NTE3OTY3NzUy MTI4ODY2JnNkYXRhPVBrMXhIMTk4DQo+IDYxNWgwJTJGQmlNek9tMGE2UkgxUlcwWjl5RHcxUUlF U1ZiMWclM0QmcmVzZXJ2ZWQ9MCB3aGljaA0KPiBjYXJyeXMgdGhlIGZvbGxvd2luZyBsaWNlbnNl Lg0KPiAtICoNCj4gICAqIENvcHlyaWdodCAoQykgMjAxMiwgSGFzYW4gQWxheWxpIDxoYWxheWxp QGdtYWlsLmNvbT4NCj4gLSAqDQo+IC0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQNCj4gLSAqIG1vZGlmaWNhdGlvbiwg YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KPiAt ICogYXJlIG1ldDoNCj4gLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0 IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0DQo+IC0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQo+IC0gKiAyLiBSZWRp c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly aWdodA0KPiAtICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQ0KPiAtICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCj4gLSAqDQo+ IC0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JT IGBgQVMgSVMnJw0KPiBBTkQNCj4gLSAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQNCj4gVE8sIFRIRQ0KPiAtICogSU1QTElFRCBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQQ0KPiBQQVJUSUNV TEFSIFBVUlBPU0UNCj4gLSAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVVU SE9SIE9SIENPTlRSSUJVVE9SUyBCRQ0KPiBMSUFCTEUNCj4gLSAqIEZPUiBBTlkgRElSRUNULCBJ TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUg0KPiBDT05TRVFVRU5U SUFMDQo+IC0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS RU1FTlQgT0YNCj4gU1VCU1RJVFVURSBHT09EUw0KPiAtICogT1IgU0VSVklDRVM7IExPU1MgT0Yg VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUw0KPiBJTlRFUlJVUFRJT04pDQo+IC0g KiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg SU4NCj4gQ09OVFJBQ1QsIFNUUklDVA0KPiAtICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4NCj4gQU5ZIFdBWQ0KPiAtICog T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQ0K PiBQT1NTSUJJTElUWSBPRg0KPiAtICogU1VDSCBEQU1BR0UuDQo+ICAgKi8NCj4gDQo+ICAjaWZu ZGVmIExUSFJFQURfQ09ORF9IXw0KPiBkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvcGVyZm9ybWFuY2Ut dGhyZWFkL2NvbW1vbi9sdGhyZWFkX2ludC5oDQo+IGIvZXhhbXBsZXMvcGVyZm9ybWFuY2UtdGhy ZWFkL2NvbW1vbi9sdGhyZWFkX2ludC5oDQo+IGluZGV4IGUxZGEyNDYuLjhkNzlmYTEgMTAwNjQ0 DQo+IC0tLSBhL2V4YW1wbGVzL3BlcmZvcm1hbmNlLXRocmVhZC9jb21tb24vbHRocmVhZF9pbnQu aA0KPiArKysgYi9leGFtcGxlcy9wZXJmb3JtYW5jZS10aHJlYWQvY29tbW9uL2x0aHJlYWRfaW50 LmgNCj4gQEAgLTEsNjMgKzEsMTUgQEANCj4gLS8qLQ0KPiAtICogICBCU0QgTElDRU5TRQ0KPiAt ICoNCj4gLSAqICAgQ29weXJpZ2h0KGMpIDIwMTUgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdo dHMgcmVzZXJ2ZWQuDQo+IC0gKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+IC0gKg0KPiAtICog ICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo IG9yIHdpdGhvdXQNCj4gLSAqICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQo+IC0gKiAgIGFyZSBtZXQ6DQo+IC0gKg0K PiAtICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo ZSBhYm92ZSBjb3B5cmlnaHQNCj4gLSAqICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCj4gLSAqICAgICAqIFJlZGlzdHJp YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0 DQo+IC0gKiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s bG93aW5nIGRpc2NsYWltZXIgaW4NCj4gLSAqICAgICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUNCj4gLSAqICAgICAgIGRpc3RyaWJ1 dGlvbi4NCj4gLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgSW50ZWwgQ29ycG9yYXRpb24g bm9yIHRoZSBuYW1lcyBvZiBpdHMNCj4gLSAqICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZA0KPiAtICogICAgICAgZnJv bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u Lg0KPiAtICoNCj4gLSAqICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ R0hUIEhPTERFUlMgQU5EDQo+IENPTlRSSUJVVE9SUw0KPiAtICogICAiQVMgSVMiIEFORCBBTlkg RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUDQo+IE5PVA0KPiAt ICogICBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU WSBBTkQNCj4gRklUTkVTUyBGT1INCj4gLSAqICAgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQ0KPiBDT1BZUklHSFQNCj4gLSAqICAgT1dO RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsDQo+ IElOQ0lERU5UQUwsDQo+IC0gKiAgIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVA0KPiBOT1QNCj4gLSAqICAgTElNSVRFRCBUTywgUFJP Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUw0KPiBPRiBVU0Us DQo+IC0gKiAgIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X RVZFUiBDQVVTRUQNCj4gQU5EIE9OIEFOWQ0KPiAtICogICBUSEVPUlkgT0YgTElBQklMSVRZLCBX SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUg0KPiBUT1JUDQo+IC0gKiAg IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP VVQgT0YNCj4gVEhFIFVTRQ0KPiAtICogICBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gNCj4gREFNQUdFLg0KPiArLyogU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQ0KPiArICogQ29weXJpZ2h0KGMpIDIwMTUgSW50 ZWwgQ29ycG9yYXRpb24uDQo+ICsgKiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiAgICovDQo+IA0K PiAgLyoNCj4gICAqIFNvbWUgcG9ydGlvbnMgb2YgdGhpcyBzb2Z0d2FyZSBtYXkgaGF2ZSBiZWVu IGRlcml2ZWQgZnJvbSB0aGUNCj4gICAqDQo+IGh0dHBzOi8vZW1lYTAxLnNhZmVsaW5rcy5wcm90 ZWN0aW9uLm91dGxvb2suY29tLz91cmw9aHR0cHMlM0ElMkYlMkZnaQ0KPiB0aHViLmNvbSUyRmhh bGF5bGklMkZsdGhyZWFkJmRhdGE9MDIlN0MwMSU3Q2hlbWFudC5hZ3Jhd2FsJTQwbngNCj4gcC5j b20lN0M3OTg1NGU4NmFjMDU0N2IzMTJhNzA4ZDU1ZGI4MWNlOCU3QzY4NmVhMWQzYmMyYjRjNmZh DQo+IDkyY2Q5OWM1YzMwMTYzNSU3QzAlN0MwJTdDNjM2NTE3OTY3NzUyMTI4ODY2JnNkYXRhPVBr MXhIMTk4DQo+IDYxNWgwJTJGQmlNek9tMGE2UkgxUlcwWjl5RHcxUUlFU1ZiMWclM0QmcmVzZXJ2 ZWQ9MCB3aGljaA0KPiBjYXJyeXMgdGhlIGZvbGxvd2luZyBsaWNlbnNlLg0KPiAtICoNCj4gICAq IENvcHlyaWdodCAoQykgMjAxMiwgSGFzYW4gQWxheWxpIDxoYWxheWxpQGdtYWlsLmNvbT4NCj4g LSAqDQo+IC0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv cm1zLCB3aXRoIG9yIHdpdGhvdXQNCj4gLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KPiAtICogYXJlIG1ldDoNCj4g LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv dmUgY29weXJpZ2h0DQo+IC0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuDQo+IC0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KPiAtICogICAg bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp bWVyIGluIHRoZQ0KPiAtICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4NCj4gLSAqDQo+IC0gKiBUSElTIFNPRlRX QVJFIElTIFBST1ZJREVEIEJZIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJw0KPiBB TkQNCj4gLSAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC VVQgTk9UIExJTUlURUQNCj4gVE8sIFRIRQ0KPiAtICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQQ0KPiBQQVJUSUNVTEFSIFBVUlBPU0UNCj4g LSAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVVUSE9SIE9SIENPTlRSSUJV VE9SUyBCRQ0KPiBMSUFCTEUNCj4gLSAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUg0KPiBDT05TRVFVRU5USUFMDQo+IC0gKiBEQU1B R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YNCj4gU1VC U1RJVFVURSBHT09EUw0KPiAtICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ Uk9GSVRTOyBPUiBCVVNJTkVTUw0KPiBJTlRFUlJVUFRJT04pDQo+IC0gKiBIT1dFVkVSIENBVVNF RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4NCj4gQ09OVFJBQ1Qs IFNUUklDVA0KPiAtICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4NCj4gQU5ZIFdBWQ0KPiAtICogT1VUIE9GIFRIRSBVU0Ug T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQ0KPiBQT1NTSUJJTElUWSBP Rg0KPiAtICogU1VDSCBEQU1BR0UuDQo+ICAgKi8NCj4gKw0KPiArDQo+ICAjaWZuZGVmIExUSFJF QURfSU5UX0gNCj4gICNkZWZpbmUgTFRIUkVBRF9JTlRfSA0KPiANCj4gLS0NCj4gMi43LjQNCg0K