From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by mx.groups.io with SMTP id smtpd.web10.149922.1680750459550078914 for ; Wed, 05 Apr 2023 20:07:39 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=OjgOEE2W; spf=pass (domain: intel.com, ip: 134.134.136.126, mailfrom: michael.d.kinney@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1680750459; x=1712286459; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=FKbeVuORQTgnYly4ofx7CjsF7Vc44FVX7lnZlph/0Sc=; b=OjgOEE2W9EDEtUh9LOt8AEAlztgFYVMbubzRaw/sz0oWhmiJH7M3LyV7 m+5S+6fHTrPngnSj7zN24z6+2AJSIkTvWuDEGf4AKhFfASyMPQxuegoQl 3CYF3DngjdHNGwzrksM3hLlKGvLhDC4Y+EjAtKbQSRxi58k03pDDT2uiB BbVRYRpF3J7l9bUlYqJTC7p9QyyuXmmc1xoIJbZ5RByMjd73cvWpAS0MQ V6gTcCzr5D4/kAv37G/L983CUX5E2R+excWdc479kB502XcckdzJcd6Nd g/P4isU76TPLnkRlAa/B2juGwr5iVKkVJv/xE6melAIgxDErp2ggz+S+f g==; X-IronPort-AV: E=McAfee;i="6600,9927,10671"; a="326665448" X-IronPort-AV: E=Sophos;i="5.98,322,1673942400"; d="scan'208";a="326665448" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Apr 2023 20:07:38 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10671"; a="933053068" X-IronPort-AV: E=Sophos;i="5.98,322,1673942400"; d="scan'208";a="933053068" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by fmsmga006.fm.intel.com with ESMTP; 05 Apr 2023 20:07:38 -0700 Received: from fmsmsx602.amr.corp.intel.com (10.18.126.82) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Wed, 5 Apr 2023 20:07:37 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21 via Frontend Transport; Wed, 5 Apr 2023 20:07:37 -0700 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (104.47.70.107) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.21; Wed, 5 Apr 2023 20:07:37 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dqOKP5S1trl8hjSm33jZ+ofnfRB6uqcGV58eTo8FS3w4FO7F2A9T85dbq4ap8E+1LclgsGG6pFu785fNPSI6kosgiX+bC0bYyVQZy3TSNvHKo8jEIc4o0yCyPS1Bnoc9/u5XydJvARPgVVxbWAQ1fUp8VO0zKbc7YCbaPs2R7NgUY2nnt/nIEJFbdvuwxgfEeTDoK32hPOXBCscM4OykhZUAuoU3XlokmixdMwcYK8+MtXmlK4S47o6S3B0ueYIueBo1b17EQPQiJCovzRgvZz9dqWjoZ90pNbQ6HqdHw5wSbTrvBLuMR9S9Bnl+AdwzzhKSO40BGJboOI0NGJjJqw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=FKbeVuORQTgnYly4ofx7CjsF7Vc44FVX7lnZlph/0Sc=; b=mxOBT21J7LwcJGLm+E3PRzdEiqY6CspJO52AAjijm+5vIwf2L4gByhXyfAtnP/dTi9XOFXaOe4sAqM4WG+ICSOKX4uGXzR+d31Dbz96oQ0X/7JwfQGjeDNPxvbZj6eVl1vTGtmq0hj6IfNzVYy1LBZVJwD/oftYkusLqvt+x8yfIK/fU4uXj/s4KNJKXx5WQKaDoMouQE4BuDgPTUqd3gSLXq/Rh7+mgQd+ChajFOnx2FqqwPpOtRxC8BuDZllVKp/k3zoEygkP6yGsDbd/HJ8bwf9dobiy8H9YIWzSOO8njbXAiNqv0V9Q4zZx0ail3M3hBCsknTaBTLrjtw7rg3A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from CO1PR11MB4929.namprd11.prod.outlook.com (2603:10b6:303:6d::19) by CO6PR11MB5652.namprd11.prod.outlook.com (2603:10b6:5:35e::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6254.35; Thu, 6 Apr 2023 03:07:34 +0000 Received: from CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::76be:1164:2c1f:90a5]) by CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::76be:1164:2c1f:90a5%6]) with mapi id 15.20.6277.030; Thu, 6 Apr 2023 03:07:34 +0000 From: "Michael D Kinney" To: Pedro Falcato , "devel@edk2.groups.io" CC: "Gao, Liming" , "Liu, Zhiguang" , "Lin, Benny" , "Kinney, Michael D" Subject: Re: [RFC PATCH 1/1] MdePkg: Add a libc implementation Thread-Topic: [RFC PATCH 1/1] MdePkg: Add a libc implementation Thread-Index: AQHZY3jYcxZIMYMf5E6+Z11qZkZAj68dob2w Date: Thu, 6 Apr 2023 03:07:33 +0000 Message-ID: References: <20230331023045.66516-1-pedro.falcato@gmail.com> In-Reply-To: <20230331023045.66516-1-pedro.falcato@gmail.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CO1PR11MB4929:EE_|CO6PR11MB5652:EE_ x-ms-office365-filtering-correlation-id: bd86c613-ce9e-4803-ec23-08db364c113f x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: fxppRzKctMrzs6VxuIE0kE5hjv98wj0dxBB9xKwm+QAOSkcnziE6Bhq5QxC4KFS4y03tzTpIwcxvlpl/c+0mCwuGP/7Nu5qM4RMJ4R4+EXSq7X+R5yJ04kq3mP9s8QKjV31UBBWDe2zzaNKH/c7+c58LAlxLx0T+JSybL22sVQlIbOi8NEM6n0Dqs53lipHfiRtSdWkS1jGcxlgtlNlhzrstG1UvTPvImLT+PV5azcuphKNEz3Lek7oy4EiOGcyiCUlHoagcMHVpWWtKpfHT3MQhz5rEPe+kBXNBSCNcWvCbzNmTRG/V+uQiLLM2DikrxmMfAX3cr2zINyl/ZbS3DoCa++pu9uTnNHQBCvjk9JqwE4Mwo6O44nVJx4v47+J7DBOTMb4ngz4BbdIbgRKTlPwkTBCJVJrHyowNwWTsG5nvloyrXbuX2SQDuO+0PP6pNdX3QOPR92YYQgo5n0+un1eVbnKtYCurVIv3plOEb18X2jXuyyLFL1+Se1KeFRK7bXGX1gpvE1dCC6EtUiplXfpcrc1MZOSVYec3LG8q3uS9T97JXjaGHJs8g9BbfdZyh9fhSJ7DmGXj6yvjAOFGq4/LR7JL1ZTrQHJLW0ZZkAw= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR11MB4929.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(366004)(376002)(396003)(346002)(39860400002)(136003)(451199021)(122000001)(55016003)(66476007)(76116006)(64756008)(4326008)(8676002)(66946007)(478600001)(66446008)(41300700001)(82960400001)(66556008)(316002)(52536014)(30864003)(54906003)(8936002)(5660300002)(38100700002)(110136005)(107886003)(53546011)(83380400001)(7696005)(966005)(186003)(71200400001)(6506007)(26005)(9686003)(86362001)(2906002)(33656002)(38070700005)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?bG83L2NVcEIzOHhDMmxtTHhuNmw2eVhOWGJHMzVYdkFQVnlFbVpBNXUwMk5R?= =?utf-8?B?N0xKZStONGpsZlRBNlNJNUFhZ0c5QWllbmRONkdRLzV6cDlyRjR5TlNVTGlz?= =?utf-8?B?NFc2cnArZytHRWZQUFFqMFUxOWVtcFRuUXdqVWgzL1pHZ2lPbHV6Y0s4UTlF?= =?utf-8?B?ZmdwQ0JxcFBzYkNOTVNqeG1hYytNVGxmdUk3Z2NMZ2xkRk5ucjB6anVoMzIr?= =?utf-8?B?T083bW1xWFY1N0hubWl1MnhxWk9pdVVyQU9Bd3FnUlE4NXNncUlVSVkvR0RR?= =?utf-8?B?c0xMK0pEVlFZV05RbXBOVDRoNE9pU3dnZjc1UTZHellNUDVZemxBcnlTZmRU?= =?utf-8?B?L25rMlFXejVIdjVTWGN2ak42enAxQXR5bXlmSitzQUV5NHV0UUR1b3V6cFN1?= =?utf-8?B?aEMyUzkxMXA5Z3U4MkpZY2pkN1dtV3FiWkptTDNJdHJNMzlKUi9Kb3lZcTZ1?= =?utf-8?B?Z0Z3d1RWOXlobnRxMUNLS05wd0h5SUxUQjkrdkFLUEZqNUhVbWt1cUpORWJi?= =?utf-8?B?SExYUS9xUlhUN0JVdFV4azlpZkRSTE4wckZlRUJzUGFYOHRsTFJJZ2JkcVIv?= =?utf-8?B?YndqMExRcGswZXVoWW5xcUlaQjZtNEJ3R2EvVUpPbUZWZDhDcWhaNDNjTXBp?= =?utf-8?B?SlBreld6YjhrekxkOGYwMFR0cmhpUzNPMHhsSmp3UlR3ZHd2b1hiNDNGMGNS?= =?utf-8?B?SFJuWTh4Y29SaXB6VjgyN0toMjBHMDdPNXpMQkVSZENzZUFIV3BhVHhVeHRR?= =?utf-8?B?ZkR0SWYrdWN1Qlg3dFg2TXNEYlYvSlZIS0VkczZsKzBUdityYkVDV3p6dmlw?= =?utf-8?B?YXFlSGJidjFmZCt2MXp6WlF5QnJtTjRtWTZUWElVNFBoS0JFSFNZOEROeldX?= =?utf-8?B?UmZoOTJKUXBnVUk5bUJNZmZwbmxzcm14NU5jd3gwdGpUOG9WYmpSNkNTZVNo?= =?utf-8?B?M2xGWVQ3QncxUTcvZmZmeGw2VTQrWlRwSWxEYldid1p2d2syYWQ5RGVOU0lG?= =?utf-8?B?dEVwdlN4U0tVdWZjNFU0ZVZmbjNCQW0rOUs2Z2tyVjZwd2ZubnRKUXdCaFZJ?= =?utf-8?B?Mld3OUJJbXlYSktUclpOcnR6QUhLTlV4S1NyTHRTVVlYbjl6WFAvMEJzb0Rx?= =?utf-8?B?Wk51TlJkLy9DV0pPK0l2cTFzTndsUDgxN05odVF6bUhVRkFIVU1JYXVMTWZj?= =?utf-8?B?Qy9BZThPeUkxekhPV3c0Q3dIOTlCbDUwREJBRndxWkhyTTZyZFhQK1puNk14?= =?utf-8?B?MEFkZ1VOYlJtK0xqeCtuSDZUZTk5V0JtM3A4azVFRGJ3cjhOU0NjL2VmZFAz?= =?utf-8?B?dUFHZzkxcjhRbTR1cGFKVUZXalNRak5XSVFzWE12REQ3dW9rUlh2a0pkU2dK?= =?utf-8?B?VXhBeHpBTjdzcmo3citZdy9tSTcydmJrcWR1VHhzUEtCVWZRSlBEMjU0NkUr?= =?utf-8?B?K2pYUzFIOWxYOU81ZWN4YkhJTVVpelBYb3JyWWFqZWZKZ20zZjZkSUtOZm4y?= =?utf-8?B?akM0ZG11UW1VTWkxbmE1WFh4YzROSXhmRGNoWGEwY2R1QS9sK1hmd2pZN1ND?= =?utf-8?B?YWxwYVN3dWZUV0ZzYkhDVUc5VGQrYThpT3NTeGF5WGl1UlZYb1ZMcTFYRXBW?= =?utf-8?B?RUtOZTVad2tFL011emZ5Y0FaUlVJanVHUzFHemh5M1d3WFdkQ0FrbG5hWFFh?= =?utf-8?B?bUtwQjZhK2EwQjh6VS80WVhzTTRXNWhMbUovc3JKWGppS0tPMFMrNjlaYzBZ?= =?utf-8?B?ZDhjcGExZ1NmUGtLQ0NmbDBGaFRSNklzeW84K2FWWEZieTBIYmNXemhZT3BX?= =?utf-8?B?bDA2UHdzNWJtdklhdjFFa1Nyc1Z4dHlGbk8wVFdhc0t3MlZ5cjk4TTRPS1pv?= =?utf-8?B?MmZRZm5zc3pGN2tYVWNidjFpRFkybUdGNWY1NW4rQVRGY1ZQZE5PVWlYTS9Z?= =?utf-8?B?ZFNPQzEvVlZBMm03MHZ1dTRYdXB3ZVdVbkJDbE9ETTlmWk9SSktTamZDSTBQ?= =?utf-8?B?NURwbE8rdkRvZzJFd01xY3hYd1RUOVhsVDd2OXFjbTFnaVlRNlZmd0JwenN0?= =?utf-8?B?SHJSbWhTSG1WNHFIOUoza0FoMHhJYzZMVW5XRFpjUlVZZG5VNUNOa2dyRlpY?= =?utf-8?Q?YRy8j+YQ8FTZ5aioSszH/bOtY?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO1PR11MB4929.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: bd86c613-ce9e-4803-ec23-08db364c113f X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Apr 2023 03:07:33.7371 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: GDuvuyUlh1PGYHT8hw1sFtucJ8M/c8JjSkxaHJG9RsOthlRyMnE4/XKLZNDColiJ0brCg6YnoAcOca4pr9XS2mOvE5GKWeKyWFSz6+H8Vx8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR11MB5652 Return-Path: michael.d.kinney@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgUGVkcm8sDQoNClRoYW5rIHlvdSBmb3Igc3RhcnRpbmcgdGhpcy4NCg0KSSByZWNhbGwgc29t ZSBjaGFsbGVuZ2VzIHdpdGggdGhlIE9wZW5zc2wgbGliYyB3cmFwcGVyLCBzbyBsZXQncyB3b3Jr IG9uIHRoYXQgb25lIGxhc3QuDQoNCklmIHdlIGNhbiBnZXQgYSBsaWJjIHdyYXBwZXIgdGhhdCBp cyBjb21wYXRpYmxlIHdpdGggQnJvdGxpLCByZWd1bGFyIGV4cHJlc3Npb24sDQpqYW5uc29uLCBh bmQgZmR0bGliIHRoYXQgd291bGQgYmUgYSBodWdlIHN0ZXAgZm9yd2FyZC4NCg0KQ2FuIHlvdSB0 ZXN0IHlvdXIgY29kZSBhZ2FpbnN0IHRoZXNlIDMgdXNlIGNhc2VzIHRoYXQgYXJlIGFscmVhZHkg aW4gZWRrMj8NCg0KKiBNZGVNb2R1bGVQa2dcTGlicmFyeVxCcm90bGlDdXN0b21EZWNvbXByZXNz TGliDQoqIE1kZU1vZHVsZVBrZ1xVbml2ZXJzYWxcUmVndWxhckV4cHJlc3Npb25EeGUNCiogUmVk ZmlzaFBrZ1xQcml2YXRlSW5jbHVkZVxDcnQNCg0KTWlrZQ0KDQo+IC0tLS0tT3JpZ2luYWwgTWVz c2FnZS0tLS0tDQo+IEZyb206IFBlZHJvIEZhbGNhdG8gPHBlZHJvLmZhbGNhdG9AZ21haWwuY29t Pg0KPiBTZW50OiBUaHVyc2RheSwgTWFyY2ggMzAsIDIwMjMgNzozMSBQTQ0KPiBUbzogZGV2ZWxA ZWRrMi5ncm91cHMuaW8NCj4gQ2M6IFBlZHJvIEZhbGNhdG8gPHBlZHJvLmZhbGNhdG9AZ21haWwu Y29tPjsgS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsgR2Fv LCBMaW1pbmcNCj4gPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj47IExpdSwgWmhpZ3VhbmcgPHpo aWd1YW5nLmxpdUBpbnRlbC5jb20+OyBMaW4sIEJlbm55IDxiZW5ueS5saW5AaW50ZWwuY29tPg0K PiBTdWJqZWN0OiBbUkZDIFBBVENIIDEvMV0gTWRlUGtnOiBBZGQgYSBsaWJjIGltcGxlbWVudGF0 aW9uDQo+IA0KPiBBZGQgTGliY0xpYiwgYSBsaWJjIGltcGxlbWVudGF0aW9uIG1lYW50IHRvIGNl bnRyYWxpemUgYWxsIGxpYmMgYml0cyBpbg0KPiBlZGsyLg0KPiANCj4gV29yayBpbiBwcm9ncmVz cywgZG9lcyBub3Qgc3VwcG9ydCBXaW5kb3dzIHRhcmdldHMgKENMQU5HUERCIGFuZCBNU1ZDKQ0K PiBqdXN0IHlldC4NCj4gDQo+IENjOiBNaWNoYWVsIEQgS2lubmV5IDxtaWNoYWVsLmQua2lubmV5 QGludGVsLmNvbT4NCj4gQ2M6IExpbWluZyBHYW8gPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj4N Cj4gQ2M6IFpoaWd1YW5nIExpdSA8emhpZ3VhbmcubGl1QGludGVsLmNvbT4NCj4gQ2M6IEJlbm55 IExpbiA8YmVubnkubGluQGludGVsLmNvbT4NCj4gU2lnbmVkLW9mZi1ieTogUGVkcm8gRmFsY2F0 byA8cGVkcm8uZmFsY2F0b0BnbWFpbC5jb20+DQo+IC0tLQ0KPiAgV3JvdGUgdGhpcyB0byBmdWxm aWxsIHRoZSBuZXcgbmVlZHMgZm9yIEJhc2VGZHRMaWIgYW5kIGxpYmZkdC4NCj4gIEl0J3MgdmVy eSBtdWNoIGEgd29yayBpbiBwcm9ncmVzcy4gUGxlYXNlIHRlc3QgKEkgaGF2ZSBubyB3YXkgdG8g dGVzdCB0aGlzLA0KPiAgYW5kIEkgaGF2ZSBub3QgYXR0ZW1wdGVkIHRvIHJlcGxhY2UgT3BlblNT TCBzdHVmZiBqdXN0IHlldCkuIEl0J3Mgbm90IHBlcmZlY3QsDQo+ICBidXQgSSBhdHRlbXB0ZWQg dG8gYmUgYXMgY29ycmVjdCBhcyBwb3NzaWJsZS4gUGxlYXNlLCBjb21tZW50Lg0KPiANCj4gIFNv bWUgZGV0YWlsczoNCj4gIDEpIEkgYXR0ZW1wdGVkIHRvIGJlIGFzIHN0YW5kYXJkcy1jb3JyZWN0 IGFzIHBvc3NpYmxlLCB1c2VkIF9fbmFtZSBhbmQgX05hbWUgdG8gYXZvaWQgbmFtZXNwYWNlIHBv bHV0aW9uLg0KPiAgICAgSSAodW5mb3J0dW5hdGVseSkgaGFkIHRvIGluY2x1ZGUgQmFzZS5oIGZv ciBOVUxMLCBiZWNhdXNlIGRlZmluaW5nIG15IG93biB3b3VsZCBwb3NzaWJseSBzcGVsbCBkaXNh c3Rlcg0KPiAgICAgaWYgc29tZW9uZSBpbmNsdWRlZCBhIEMgc3RhbmRhcmQgaGVhZGVyIGFuZCBC YXNlLmguDQo+ICAyKSBQcm9jZXNzb3JCaW5kLmggaW1wbGljaXRseSBwb2x1dGVzIHRoZSBnbG9i YWwgbmFtZXNwYWNlLiBJIGRvbid0IHRoaW5rIHRoaXMgaXMgZml4YWJsZS4NCj4gIDMpIEluIHNv bWUgcGxhY2VzLCBJIHdyb3RlIG15IG93biBmdW5jdGlvbnMgd2hlbiBJIGNvdWxkIHJlZGlyZWN0 IHRvIEJhc2VNZW1vcnlMaWIgc3R1ZmYuDQo+ICAgICBUaGUgYW1vdW50IG9mIHBvc3NpYmxlIHBv aW50cyBvZiBmYWlsdXJlIG1hZGUgbWUgbmVydm91cyAobWF4IHN0cmluZyBzaXplIFBDRCwgZXRj KS4gVG8gYmUgZGlzY3Vzc2VkLg0KPiAgNCkgVGhpcyBzaG91bGQgZnVsZmlsbCBCYXNlRmR0TGli J3MgbmVlZHMuIEkgd2VudCBhIGJpdCBtb3JlIGluLWRlcHRoIHdoZXJlIEkgY291bGQgKHdpdGhv dXQgd2FzdGluZyB0b28gbXVjaCB0aW1lKS4NCj4gICAgIE9mIGNvdXJzZSwgdGhpcyBtZWFucyBp dCdzIHN0aWxsIG1pc3NpbmcgYSAqSFVHRSogY2h1bmsgb2YgbGliYy4gSSBkb24ndCB0aGluayBJ J20gYWltaW5nIHRvIHdyaXRlIGEgZnVsbCBsaWJjIGhlcmUNCj4gKGhhaGEpLg0KPiAgICAgSnVz dCB0aGUgY29tbW9uIGJpdHMgdGhhdCBtYXkgYmUgdXNlZnVsIGZvciBlZGsyLg0KPiAgNSkgQXMg ZGlzY3Vzc2VkIGJlZm9yZSAoaW4gdGhlIGNvbnRleHQgb2YgY29tcGlsZXIgaW50cmluc2ljcyks IEdDQyBhbmQgY2xhbmcgcmVxdWlyZSBtZW1jcHksIG1lbXNldCwgYW5kIHNvbWUgb3RoZXJzIGZv cg0KPiB2YWxpZA0KPiAgICAgY29kZWdlbi4gVGhpcyBzaG91bGQgcG9zc2libHkgYmUgZG9uZSBp bXBsaWNpdGx5IGJ5IEJhc2VUb29scy4NCj4gIDYpIEFnYWluLCBwbGVhc2UsIGNvbW1lbnQgb3Ig Y29udHJpYnV0ZS4gSWYgYW55b25lIHdhbnRzIHRvIHNlbmQgUFJzIG9yIGNoZWNrb3V0IGRpcmVj dGx5LCBmZWVsIGZyZWU6DQo+IGh0dHBzOi8vZ2l0aHViLmNvbS9oZWF0ZC9lZGsyL3RyZWUvd2lw LWxpYmMNCj4gDQo+ICBNZGVQa2cvSW5jbHVkZS9saW1pdHMuaCAgICAgICAgICAgICAgICAgfCAg NjkgKysrKysrKysrKysrKysNCj4gIE1kZVBrZy9JbmNsdWRlL3N0ZGJvb2wuaCAgICAgICAgICAg ICAgICB8ICAxNyArKysrDQo+ICBNZGVQa2cvSW5jbHVkZS9zdGRkZWYuaCAgICAgICAgICAgICAg ICAgfCAgMjYgKysrKysNCj4gIE1kZVBrZy9JbmNsdWRlL3N0ZGludC5oICAgICAgICAgICAgICAg ICB8IDExNiArKysrKysrKysrKysrKysrKysrKysrKw0KPiAgTWRlUGtnL0luY2x1ZGUvc3RkbGli LmggICAgICAgICAgICAgICAgIHwgIDIxICsrKysNCj4gIE1kZVBrZy9JbmNsdWRlL3N0cmluZy5o ICAgICAgICAgICAgICAgICB8ICA4NiArKysrKysrKysrKysrKysrKw0KPiAgTWRlUGtnL0luY2x1 ZGUvdHlwZXMuaCAgICAgICAgICAgICAgICAgIHwgIDI3ICsrKysrKw0KPiAgTWRlUGtnL0xpYnJh cnkvTGliY0xpYi9MaWJjTGliLmluZiAgICAgIHwgIDM4ICsrKysrKysrDQo+ICBNZGVQa2cvTGli cmFyeS9MaWJjTGliL1N0ZGxpYi9zdHJ0b3VsLmMgfCAxMjEgKysrKysrKysrKysrKysrKysrKysr KysrDQo+ICBNZGVQa2cvTGlicmFyeS9MaWJjTGliL1N0cmluZy9tZW1jaHIuYyAgfCAgMTkgKysr Kw0KPiAgTWRlUGtnL0xpYnJhcnkvTGliY0xpYi9TdHJpbmcvbWVtY21wLmMgIHwgIDE5ICsrKysN Cj4gIE1kZVBrZy9MaWJyYXJ5L0xpYmNMaWIvU3RyaW5nL21lbWNweS5jICB8ICAyOSArKysrKysN Cj4gIE1kZVBrZy9MaWJyYXJ5L0xpYmNMaWIvU3RyaW5nL21lbXNldC5jICB8ICAyMSArKysrDQo+ ICBNZGVQa2cvTGlicmFyeS9MaWJjTGliL1N0cmluZy9zdHJjaHIuYyAgfCAgNTYgKysrKysrKysr KysNCj4gIE1kZVBrZy9MaWJyYXJ5L0xpYmNMaWIvU3RyaW5nL3N0cmNtcC5jICB8ICAyNyArKysr KysNCj4gIE1kZVBrZy9MaWJyYXJ5L0xpYmNMaWIvU3RyaW5nL3N0cmNweS5jICB8ICA1OSArKysr KysrKysrKysNCj4gIE1kZVBrZy9MaWJyYXJ5L0xpYmNMaWIvU3RyaW5nL3N0cmxlbi5jICB8ICAx NiArKysrDQo+ICBNZGVQa2cvTWRlTGlicy5kc2MuaW5jICAgICAgICAgICAgICAgICAgfCAgIDEg Kw0KPiAgTWRlUGtnL01kZVBrZy5kZWMgICAgICAgICAgICAgICAgICAgICAgIHwgICA0ICsNCj4g IE1kZVBrZy9NZGVQa2cuZHNjICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArDQo+ICAyMCBm aWxlcyBjaGFuZ2VkLCA3NzMgaW5zZXJ0aW9ucygrKQ0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IE1k ZVBrZy9JbmNsdWRlL2xpbWl0cy5oDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgTWRlUGtnL0luY2x1 ZGUvc3RkYm9vbC5oDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgTWRlUGtnL0luY2x1ZGUvc3RkZGVm LmgNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBNZGVQa2cvSW5jbHVkZS9zdGRpbnQuaA0KPiAgY3Jl YXRlIG1vZGUgMTAwNjQ0IE1kZVBrZy9JbmNsdWRlL3N0ZGxpYi5oDQo+ICBjcmVhdGUgbW9kZSAx MDA2NDQgTWRlUGtnL0luY2x1ZGUvc3RyaW5nLmgNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBNZGVQ a2cvSW5jbHVkZS90eXBlcy5oDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgTWRlUGtnL0xpYnJhcnkv TGliY0xpYi9MaWJjTGliLmluZg0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IE1kZVBrZy9MaWJyYXJ5 L0xpYmNMaWIvU3RkbGliL3N0cnRvdWwuYw0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IE1kZVBrZy9M aWJyYXJ5L0xpYmNMaWIvU3RyaW5nL21lbWNoci5jDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgTWRl UGtnL0xpYnJhcnkvTGliY0xpYi9TdHJpbmcvbWVtY21wLmMNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0 NCBNZGVQa2cvTGlicmFyeS9MaWJjTGliL1N0cmluZy9tZW1jcHkuYw0KPiAgY3JlYXRlIG1vZGUg MTAwNjQ0IE1kZVBrZy9MaWJyYXJ5L0xpYmNMaWIvU3RyaW5nL21lbXNldC5jDQo+ICBjcmVhdGUg bW9kZSAxMDA2NDQgTWRlUGtnL0xpYnJhcnkvTGliY0xpYi9TdHJpbmcvc3RyY2hyLmMNCj4gIGNy ZWF0ZSBtb2RlIDEwMDY0NCBNZGVQa2cvTGlicmFyeS9MaWJjTGliL1N0cmluZy9zdHJjbXAuYw0K PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IE1kZVBrZy9MaWJyYXJ5L0xpYmNMaWIvU3RyaW5nL3N0cmNw eS5jDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgTWRlUGtnL0xpYnJhcnkvTGliY0xpYi9TdHJpbmcv c3RybGVuLmMNCj4gDQo+IGRpZmYgLS1naXQgYS9NZGVQa2cvSW5jbHVkZS9saW1pdHMuaCBiL01k ZVBrZy9JbmNsdWRlL2xpbWl0cy5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAw MDAwMDAwMDAwMC4uZjg3Yjg3MGU2Y2JjDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvTWRlUGtn L0luY2x1ZGUvbGltaXRzLmgNCj4gQEAgLTAsMCArMSw2OSBAQA0KPiArLyoqIEBmaWxlDQo+ICsg IElTTyBDIGxpbWl0cy5oDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDIzIFBlZHJvIEZhbGNh dG8gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJT RC0yLUNsYXVzZS1QYXRlbnQNCj4gKyoqLw0KPiArDQo+ICsjaWZuZGVmIF9MSU1JVFNfSA0KPiAr I2RlZmluZSBfTElNSVRTX0gNCj4gKw0KPiArI2lmIGRlZmluZWQgKE1ERV9DUFVfWDY0KSB8fCBk ZWZpbmVkIChNREVfQ1BVX0FBUkNINjQpDQo+ICsvLyBIaW50IGZvciBMT05HXyogc3R1ZmYNCj4g KyNkZWZpbmUgX19MSU1JVFNfNjRCSVQNCj4gKyNlbmRpZg0KPiArDQo+ICsjaWZuZGVmIF9fR05V Q19fDQo+ICsvLyBUT0RPOiBNU1ZDIHN1cHBvcnQgaXMgbWlzc2luZyAoc29tZSB0eXBlcyBhcmUg bm90IGV4YWN0bHkgdGhlIHNhbWUpDQo+ICsvLyBTaG91bGQgdGhpcyB3aG9sZSBsb2dpYyBiZSBp biBQcm9jZXNzb3JCaW5kLmggb3Igc29tZXRoaW5nPw0KPiArICAjZXJyb3IgIk1TVkMgc3VwcG9y dCBUT0RPIg0KPiArI2VuZGlmDQo+ICsNCj4gKyNkZWZpbmUgQ0hBUl9CSVQgIDgNCj4gKw0KPiAr LyogQ2hhciBsaW1pdHMgLSBmb3IgY2hhciwgc2lnbmVkIGNoYXIsIHVuc2lnbmVkIGNoYXIgKi8N Cj4gKyNkZWZpbmUgU0NIQVJfTUlOICAtMTI4DQo+ICsjZGVmaW5lIFNDSEFSX01BWCAgMTI3DQo+ ICsjZGVmaW5lIFVDSEFSX01BWCAgMjU1DQo+ICsNCj4gKy8vIE5vdGU6IFdlIG11c3QgY2hlY2sg aWYgY2hhcnMgYXJlIHNpZ25lZCBvciB1bnNpZ25lZCBoZXJlLiAweGZmID0gLTEyOCBmb3Igc2ln bmVkIGNoYXJzDQo+ICsjaWYgJ1x4ZmYnIDwgMA0KPiArI2RlZmluZSBfX0NIQVJfSVNfU0lHTkVE DQo+ICsjZW5kaWYNCj4gKw0KPiArI2lmZGVmIF9fQ0hBUl9JU19TSUdORUQNCj4gKyNkZWZpbmUg Q0hBUl9NSU4gIFNDSEFSX01JTg0KPiArI2RlZmluZSBDSEFSX01BWCAgU0NIQVJfTUFYDQo+ICsj ZWxzZQ0KPiArI2RlZmluZSBDSEFSX01JTiAgMA0KPiArI2RlZmluZSBDSEFSX01BWCAgVUNIQVJf TUFYDQo+ICsjZW5kaWYNCj4gKw0KPiArLyogU2hvcnQgbGltaXRzIC0gZm9yIHNob3J0LCB1bnNp Z25lZCBzaG9ydCAqLw0KPiArI2RlZmluZSBTSFJUX01JTiAgICgtMSAtIDB4N2ZmZikNCj4gKyNk ZWZpbmUgU0hSVF9NQVggICAweDdmZmYNCj4gKyNkZWZpbmUgVVNIUlRfTUFYICAweGZmZmYNCj4g Kw0KPiArLyogSW50IGxpbWl0cyAtIGZvciBpbnQsIHVuc2lnbmVkIGludCAqLw0KPiArI2RlZmlu ZSBJTlRfTUlOICAgKC0xIC0gMHg3ZmZmZmZmZikNCj4gKyNkZWZpbmUgSU5UX01BWCAgIDB4N2Zm ZmZmZmYNCj4gKyNkZWZpbmUgVUlOVF9NQVggIDB4ZmZmZmZmZmZVDQo+ICsNCj4gKy8qIExvbmcg bGltaXRzIC0gZm9yIGxvbmcsIHVuc2lnbmVkIGxvbmcgYW5kIGxvbmcgbG9uZyB2YXJpYW50cyAq Lw0KPiArDQo+ICsjaWZkZWYgX19MSU1JVFNfNjRCSVQNCj4gKyNkZWZpbmUgTE9OR19NQVggICAw eDdmZmZmZmZmZmZmZmZmZmZMDQo+ICsjZGVmaW5lIExPTkdfTUlOICAgKC0xIC0gMHg3ZmZmZmZm ZmZmZmZmZmZmTCkNCj4gKyNkZWZpbmUgVUxPTkdfTUFYICAweGZmZmZmZmZmZmZmZmZmZmZVTA0K PiArI2Vsc2UNCj4gKyNkZWZpbmUgTE9OR19NQVggICAweDdmZmZmZmZmTA0KPiArI2RlZmluZSBM T05HX01JTiAgICgtMSAtIDB4N2ZmZmZmZmZMKQ0KPiArI2RlZmluZSBVTE9OR19NQVggIDB4ZmZm ZmZmZmZVTA0KPiArI2VuZGlmDQo+ICsNCj4gKy8qIGxvbmcgbG9uZyBtdXN0IGFsd2F5cyBiZSA2 NC1iaXQgZm9yIEVGSSBVSU5UNjQgKi8NCj4gKyNkZWZpbmUgTExPTkdfTUlOICAgKC0xIC0gMHg3 ZmZmZmZmZmZmZmZmZmZmTEwpDQo+ICsjZGVmaW5lIExMT05HX01BWCAgIDB4N2ZmZmZmZmZmZmZm ZmZmZkxMDQo+ICsjZGVmaW5lIFVMTE9OR19NQVggIDB4ZmZmZmZmZmZmZmZmZmZmZlVMTA0KPiAr DQo+ICsjZW5kaWYNCj4gZGlmZiAtLWdpdCBhL01kZVBrZy9JbmNsdWRlL3N0ZGJvb2wuaCBiL01k ZVBrZy9JbmNsdWRlL3N0ZGJvb2wuaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAw MDAwMDAwMDAwMDAuLmMzNjVmYmNjNGYwZg0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL01kZVBr Zy9JbmNsdWRlL3N0ZGJvb2wuaA0KPiBAQCAtMCwwICsxLDE3IEBADQo+ICsvKiogQGZpbGUNCj4g KyAgSVNPIEMgc3RkYm9vbC5oDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDIzIFBlZHJvIEZh bGNhdG8gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gKyoqLw0KPiArDQo+ICsjaWZuZGVmIF9TVERCT09MX0gN Cj4gKyNkZWZpbmUgX1NUREJPT0xfSA0KPiArDQo+ICsjZGVmaW5lIGJvb2wgICBfQm9vbA0KPiAr I2RlZmluZSB0cnVlICAgMQ0KPiArI2RlZmluZSBmYWxzZSAgMA0KPiArDQo+ICsjZGVmaW5lIF9f Ym9vbF90cnVlX2ZhbHNlX2FyZV9kZWZpbmVkICAxDQo+ICsNCj4gKyNlbmRpZg0KPiBkaWZmIC0t Z2l0IGEvTWRlUGtnL0luY2x1ZGUvc3RkZGVmLmggYi9NZGVQa2cvSW5jbHVkZS9zdGRkZWYuaA0K PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAuLjg2YzE3MTAyZjRi Mg0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL01kZVBrZy9JbmNsdWRlL3N0ZGRlZi5oDQo+IEBA IC0wLDAgKzEsMjYgQEANCj4gKy8qKiBAZmlsZQ0KPiArICBJU08gQyBzdGRkZWYuaA0KPiArDQo+ ICsgIENvcHlyaWdodCAoYykgMjAyMyBQZWRybyBGYWxjYXRvIEFsbCByaWdodHMgcmVzZXJ2ZWQu DQo+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsq Ki8NCj4gKw0KPiArI2lmbmRlZiBfU1REREVGX0gNCj4gKyNkZWZpbmUgX1NURERFRl9IDQo+ICsN Cj4gKyNpbmNsdWRlIDxCYXNlLmg+IC8vIEZvciBOVUxMDQo+ICsvLyBUT0RPOiBOYW1lc3BhY2Ug cG9sdXRpb24NCj4gKw0KPiArdHlwZWRlZiBJTlROICAgIHB0cmRpZmZfdDsNCj4gK3R5cGVkZWYg VUlOVE4gICBzaXplX3Q7DQo+ICt0eXBlZGVmIENIQVIxNiAgd2NoYXJfdDsNCj4gKw0KPiArLy8g b2Zmc2V0b2YgdGFrZW4gZnJvbSBCYXNlLmgNCj4gKw0KPiArI2lmIChkZWZpbmVkIChfX0dOVUNf XykgJiYgX19HTlVDX18gPj0gNCkgfHwgZGVmaW5lZCAoX19jbGFuZ19fKQ0KPiArI2RlZmluZSBv ZmZzZXRvZihUWVBFLCBGaWVsZCkgICgoVUlOVE4pIF9fYnVpbHRpbl9vZmZzZXRvZihUWVBFLCBG aWVsZCkpDQo+ICsjZWxzZQ0KPiArI2RlZmluZSBvZmZzZXRvZihUWVBFLCBGaWVsZCkgICgoVUlO VE4pICYoKChUWVBFICopMCktPkZpZWxkKSkNCj4gKyNlbmRpZg0KPiArDQo+ICsjZW5kaWYNCj4g ZGlmZiAtLWdpdCBhL01kZVBrZy9JbmNsdWRlL3N0ZGludC5oIGIvTWRlUGtnL0luY2x1ZGUvc3Rk aW50LmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwLi5lZDU1 NGZmMTc3M2QNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9NZGVQa2cvSW5jbHVkZS9zdGRpbnQu aA0KPiBAQCAtMCwwICsxLDExNiBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIElTTyBDIHN0ZGludC5o DQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDIzIFBlZHJvIEZhbGNhdG8gQWxsIHJpZ2h0cyBy ZXNlcnZlZC4NCj4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRl bnQNCj4gKyoqLw0KPiArDQo+ICsjaWZuZGVmIF9TVERJTlRfSA0KPiArI2RlZmluZSBfU1RESU5U X0gNCj4gKw0KPiArLy8gSU5UKE4pLCBVSU5UKE4pIHRha2VuIGZyb20gUHJvY2Vzc29yQmluZC5o DQo+ICt0eXBlZGVmIElOVDggICBpbnQ4X3Q7DQo+ICt0eXBlZGVmIElOVDE2ICBpbnQxNl90Ow0K PiArdHlwZWRlZiBJTlQzMiAgaW50MzJfdDsNCj4gK3R5cGVkZWYgSU5UNjQgIGludDY0X3Q7DQo+ ICsNCj4gK3R5cGVkZWYgVUlOVDggICB1aW50OF90Ow0KPiArdHlwZWRlZiBVSU5UMTYgIHVpbnQx Nl90Ow0KPiArdHlwZWRlZiBVSU5UMzIgIHVpbnQzMl90Ow0KPiArdHlwZWRlZiBVSU5UNjQgIHVp bnQ2NF90Ow0KPiArDQo+ICt0eXBlZGVmIGludDhfdCAgIGludF9sZWFzdDhfdDsNCj4gK3R5cGVk ZWYgaW50MTZfdCAgaW50X2xlYXN0MTZfdDsNCj4gK3R5cGVkZWYgaW50MzJfdCAgaW50X2xlYXN0 MzJfdDsNCj4gK3R5cGVkZWYgaW50NjRfdCAgaW50X2xlYXN0NjRfdDsNCj4gKw0KPiArdHlwZWRl ZiB1aW50OF90ICAgdWludF9sZWFzdDhfdDsNCj4gK3R5cGVkZWYgdWludDE2X3QgIHVpbnRfbGVh c3QxNl90Ow0KPiArdHlwZWRlZiB1aW50MzJfdCAgdWludF9sZWFzdDMyX3Q7DQo+ICt0eXBlZGVm IHVpbnQ2NF90ICB1aW50X2xlYXN0NjRfdDsNCj4gKw0KPiArdHlwZWRlZiBpbnQ4X3QgICBpbnRf ZmFzdDhfdDsNCj4gK3R5cGVkZWYgaW50MTZfdCAgaW50X2Zhc3QxNl90Ow0KPiArdHlwZWRlZiBp bnQzMl90ICBpbnRfZmFzdDMyX3Q7DQo+ICt0eXBlZGVmIGludDY0X3QgIGludF9mYXN0NjRfdDsN Cj4gKw0KPiArdHlwZWRlZiB1aW50OF90ICAgdWludF9mYXN0OF90Ow0KPiArdHlwZWRlZiB1aW50 MTZfdCAgdWludF9mYXN0MTZfdDsNCj4gK3R5cGVkZWYgdWludDMyX3QgIHVpbnRfZmFzdDMyX3Q7 DQo+ICt0eXBlZGVmIHVpbnQ2NF90ICB1aW50X2Zhc3Q2NF90Ow0KPiArDQo+ICt0eXBlZGVmIElO VE4gICBpbnRwdHJfdDsNCj4gK3R5cGVkZWYgVUlOVE4gIHVpbnRwdHJfdDsNCj4gKw0KPiArdHlw ZWRlZiBJTlQ2NCAgIGludG1heF90Ow0KPiArdHlwZWRlZiBVSU5UNjQgIHVpbnRtYXhfdDsNCj4g Kw0KPiArLyogTGltaXRzIGZvciB0aGUgdHlwZXMgZGVjbGFyZWQgYWJvdmUgKi8NCj4gKyNkZWZp bmUgSU5UOF9NSU4gICAgLTEyOA0KPiArI2RlZmluZSBJTlQ4X01BWCAgICAxMjcNCj4gKyNkZWZp bmUgVUlOVDhfTUFYICAgMjU1DQo+ICsjZGVmaW5lIElOVDE2X01JTiAgICgtMSAtIDB4N2ZmZikN Cj4gKyNkZWZpbmUgSU5UMTZfTUFYICAgMHg3ZmZmDQo+ICsjZGVmaW5lIFVJTlQxNl9NQVggIDB4 ZmZmZg0KPiArI2RlZmluZSBJTlQzMl9NSU4gICAoLTEgLSAweDdmZmZmZmZmKQ0KPiArI2RlZmlu ZSBJTlQzMl9NQVggICAweDdmZmZmZmZmDQo+ICsjZGVmaW5lIFVJTlQzMl9NQVggIDB4ZmZmZmZm ZmZVDQo+ICsjZGVmaW5lIElOVDY0X01JTiAgICgtMSAtIDB4N2ZmZmZmZmZmZmZmZmZmZkxMKQ0K PiArI2RlZmluZSBJTlQ2NF9NQVggICAweDdmZmZmZmZmZmZmZmZmZmZMTA0KPiArI2RlZmluZSBV SU5UNjRfTUFYICAweGZmZmZmZmZmZmZmZmZmZmZVTEwNCj4gKw0KPiArI2RlZmluZSBJTlRfTEVB U1Q4X01JTiAgICBJTlQ4X01JTg0KPiArI2RlZmluZSBJTlRfTEVBU1Q4X01BWCAgICBJTlQ4X01B WA0KPiArI2RlZmluZSBVSU5UX0xFQVNUOF9NQVggICBVSU5UOF9NQVgNCj4gKyNkZWZpbmUgSU5U X0xFQVNUMTZfTUlOICAgSU5UMTZfTUlODQo+ICsjZGVmaW5lIElOVF9MRUFTVDE2X01BWCAgIElO VDE2X01BWA0KPiArI2RlZmluZSBVSU5UX0xFQVNUMTZfTUFYICBVSU5UMTZfTUFYDQo+ICsjZGVm aW5lIElOVF9MRUFTVDMyX01JTiAgIElOVDMyX01JTg0KPiArI2RlZmluZSBJTlRfTEVBU1QzMl9N QVggICBJTlQzMl9NQVgNCj4gKyNkZWZpbmUgVUlOVF9MRUFTVDMyX01BWCAgVUlOVDMyX01BWA0K PiArI2RlZmluZSBJTlRfTEVBU1Q2NF9NSU4gICBJTlQ2NF9NSU4NCj4gKyNkZWZpbmUgSU5UX0xF QVNUNjRfTUFYICAgSU5UNjRfTUFYDQo+ICsjZGVmaW5lIFVJTlRfTEVBU1Q2NF9NQVggIFVJTlQ2 NF9NQVgNCj4gKw0KPiArI2RlZmluZSBJTlRfRkFTVDhfTUlOICAgIElOVDhfTUlODQo+ICsjZGVm aW5lIElOVF9GQVNUOF9NQVggICAgSU5UOF9NQVgNCj4gKyNkZWZpbmUgVUlOVF9GQVNUOF9NQVgg ICBVSU5UOF9NQVgNCj4gKyNkZWZpbmUgSU5UX0ZBU1QxNl9NSU4gICBJTlQxNl9NSU4NCj4gKyNk ZWZpbmUgSU5UX0ZBU1QxNl9NQVggICBJTlQxNl9NQVgNCj4gKyNkZWZpbmUgVUlOVF9GQVNUMTZf TUFYICBVSU5UMTZfTUFYDQo+ICsjZGVmaW5lIElOVF9GQVNUMzJfTUlOICAgSU5UMzJfTUlODQo+ ICsjZGVmaW5lIElOVF9GQVNUMzJfTUFYICAgSU5UMzJfTUFYDQo+ICsjZGVmaW5lIFVJTlRfRkFT VDMyX01BWCAgVUlOVDMyX01BWA0KPiArI2RlZmluZSBJTlRfRkFTVDY0X01JTiAgIElOVDY0X01J Tg0KPiArI2RlZmluZSBJTlRfRkFTVDY0X01BWCAgIElOVDY0X01BWA0KPiArI2RlZmluZSBVSU5U X0ZBU1Q2NF9NQVggIFVJTlQ2NF9NQVgNCj4gKw0KPiArI2RlZmluZSBJTlRQVFJfTUlOICAgKDEg LSBNQVhfSU5UTikNCj4gKyNkZWZpbmUgSU5UUFRSX01BWCAgIE1BWF9JTlRODQo+ICsjZGVmaW5l IFVJTlRQVFJfTUFYICBNQVhfVUlOVE4NCj4gKw0KPiArI2RlZmluZSBJTlRNQVhfTUlOICAgSU5U NjRfTUlODQo+ICsjZGVmaW5lIElOVE1BWF9NQVggICBJTlQ2NF9NQVgNCj4gKyNkZWZpbmUgVUlO VE1BWF9NQVggIFVJTlQ2NF9NQVgNCj4gKw0KPiArI2RlZmluZSBQVFJESUZGX01JTiAgSU5UUFRS X01JTg0KPiArI2RlZmluZSBQVFJESUZGX01BWCAgSU5UUFRSX01BWA0KPiArI2RlZmluZSBTSVpF X01BWCAgICAgTUFYX1VJTlRODQo+ICsNCj4gKy8vIFRPRE86IFNJR19BVE9NSUMsIFdDSEFSLCBX SU5UDQo+ICsNCj4gKy8qIE1hY3JvcyB0byBkZWNsYXJlICh1KWludChOKV90IGNvbnN0YW50cyAq Lw0KPiArDQo+ICsjZGVmaW5lIElOVDhfQyhjKSAgICBjDQo+ICsjZGVmaW5lIElOVDE2X0MoYykg ICBjDQo+ICsjZGVmaW5lIElOVDMyX0MoYykgICBjDQo+ICsjZGVmaW5lIElOVDY0X0MoYykgICBj ICMjIExMDQo+ICsjZGVmaW5lIFVJTlQ4X0MoYykgICBjDQo+ICsjZGVmaW5lIFVJTlQxNl9DKGMp ICBjDQo+ICsjZGVmaW5lIFVJTlQzMl9DKGMpICBjICMjIFUNCj4gKyNkZWZpbmUgVUlOVDY0X0Mo YykgIGMgIyMgVUxMDQo+ICsNCj4gKyNkZWZpbmUgSU5UTUFYX0MoYykgICBjICMjIExMDQo+ICsj ZGVmaW5lIFVJTlRNQVhfQyhjKSAgYyAjIyBVTEwNCj4gKw0KPiArI2VuZGlmDQo+IGRpZmYgLS1n aXQgYS9NZGVQa2cvSW5jbHVkZS9zdGRsaWIuaCBiL01kZVBrZy9JbmNsdWRlL3N0ZGxpYi5oDQo+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uOTU0ZGE0YmJlYThl DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvTWRlUGtnL0luY2x1ZGUvc3RkbGliLmgNCj4gQEAg LTAsMCArMSwyMSBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIElTTyBDIHN0ZGxpYi5oDQo+ICsNCj4g KyAgQ29weXJpZ2h0IChjKSAyMDIzIFBlZHJvIEZhbGNhdG8gQWxsIHJpZ2h0cyByZXNlcnZlZC4N Cj4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gKyoq Lw0KPiArDQo+ICsjaWZuZGVmIF9TVERMSUJfSA0KPiArI2RlZmluZSBfU1RETElCX0gNCj4gKw0K PiArI2RlZmluZSBfX05FRURfTlVMTA0KPiArI2luY2x1ZGUgPHR5cGVzLmg+DQo+ICsNCj4gK3Vu c2lnbmVkIGxvbmcNCj4gK3N0cnRvdWwgKA0KPiArICBjb25zdCBjaGFyICAqTnB0ciwNCj4gKyAg Y2hhciAgICAgICAgKipFbmRQdHIsDQo+ICsgIGludCAgICAgICAgIEJhc2UNCj4gKyAgKTsNCj4g Kw0KPiArI2VuZGlmDQo+IGRpZmYgLS1naXQgYS9NZGVQa2cvSW5jbHVkZS9zdHJpbmcuaCBiL01k ZVBrZy9JbmNsdWRlL3N0cmluZy5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAw MDAwMDAwMDAwMC4uMzFkOTVkYjkxY2ZlDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvTWRlUGtn L0luY2x1ZGUvc3RyaW5nLmgNCj4gQEAgLTAsMCArMSw4NiBAQA0KPiArLyoqIEBmaWxlDQo+ICsg IElTTyBDIHN0cmluZy5oDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDIzIFBlZHJvIEZhbGNh dG8gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJT RC0yLUNsYXVzZS1QYXRlbnQNCj4gKyoqLw0KPiArDQo+ICsjaWZuZGVmIF9TVFJJTkdfSA0KPiAr I2RlZmluZSBfU1RSSU5HX0gNCj4gKw0KPiArI2RlZmluZSBfX05FRURfc2l6ZV90DQo+ICsjZGVm aW5lIF9fTkVFRF9OVUxMDQo+ICsjaW5jbHVkZSA8dHlwZXMuaD4NCj4gKw0KPiArdm9pZCAqDQo+ ICttZW1jcHkgKA0KPiArICB2b2lkICpyZXN0cmljdCAgICAgICAgRHN0LA0KPiArICBjb25zdCB2 b2lkICpyZXN0cmljdCAgU3JjLA0KPiArICBzaXplX3QgICAgICAgICAgICAgICAgQ291bnQNCj4g KyAgKTsNCj4gKw0KPiArdm9pZCAqDQo+ICttZW1tb3ZlICgNCj4gKyAgdm9pZCAgICAgICAgKkRz dCwNCj4gKyAgY29uc3Qgdm9pZCAgKlNyYywNCj4gKyAgc2l6ZV90ICAgICAgQ291bnQNCj4gKyAg KTsNCj4gKw0KPiArdm9pZCAqDQo+ICttZW1zZXQgKA0KPiArICB2b2lkICAgICpCdWYsDQo+ICsg IGludCAgICAgVmFsLA0KPiArICBzaXplX3QgIENvdW50DQo+ICsgICk7DQo+ICsNCj4gK3ZvaWQg Kg0KPiArbWVtY2hyICgNCj4gKyAgY29uc3Qgdm9pZCAgKkJ1ZiwNCj4gKyAgaW50ICAgICAgICAg Q2hhciwNCj4gKyAgc2l6ZV90ICAgICAgQ291bnQNCj4gKyAgKTsNCj4gKw0KPiAraW50DQo+ICtt ZW1jbXAgKA0KPiArICBjb25zdCB2b2lkICAqUzEsDQo+ICsgIGNvbnN0IHZvaWQgICpTMiwNCj4g KyAgc2l6ZV90ICAgICAgQ291bnQNCj4gKyAgKTsNCj4gKw0KPiArc2l6ZV90DQo+ICtzdHJsZW4g KA0KPiArICBjb25zdCBjaGFyICAqU3RyDQo+ICsgICk7DQo+ICsNCj4gK2NoYXIgKg0KPiArc3Ry Y3B5ICgNCj4gKyAgY2hhciAqcmVzdHJpY3QgICAgICAgIERlc3QsDQo+ICsgIGNvbnN0IGNoYXIg KnJlc3RyaWN0ICBTb3VyY2UNCj4gKyAgKTsNCj4gKw0KPiArY2hhciAqDQo+ICtzdHJuY3B5ICgN Cj4gKyAgY2hhciAgICAgICAgKnJlc3RyaWN0ICBEZXN0LA0KPiArICBjb25zdCBjaGFyICAqcmVz dHJpY3QgIFNvdXJjZSwNCj4gKyAgc2l6ZV90ICAgICAgICAgICAgICAgICBDb3VudA0KPiArICAp Ow0KPiArDQo+ICtjaGFyICoNCj4gK3N0cmNhdCAoDQo+ICsgIGNoYXIgICAgICAgICpyZXN0cmlj dCAgRGVzdCwNCj4gKyAgY29uc3QgY2hhciAgKnJlc3RyaWN0ICBTb3VyY2UNCj4gKyAgKTsNCj4g Kw0KPiArY2hhciAqDQo+ICtzdHJjaHIgKA0KPiArICBjb25zdCBjaGFyICAqU3RyLA0KPiArICBp bnQgICAgICAgICBDaGFyDQo+ICsgICk7DQo+ICsNCj4gK2NoYXIgKg0KPiArc3RycmNociAoDQo+ ICsgIGNvbnN0IGNoYXIgICpTdHIsDQo+ICsgIGludCAgICAgICAgIENoYXINCj4gKyAgKTsNCj4g Kw0KPiArI2VuZGlmDQo+IGRpZmYgLS1naXQgYS9NZGVQa2cvSW5jbHVkZS90eXBlcy5oIGIvTWRl UGtnL0luY2x1ZGUvdHlwZXMuaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAw MDAwMDAwMDAuLjk3ZTkwZDdiMzFlMw0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL01kZVBrZy9J bmNsdWRlL3R5cGVzLmgNCj4gQEAgLTAsMCArMSwyNyBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIElT TyBDIGF1eGlsaWFyeSB0eXBlcyBmaWxlDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDIzIFBl ZHJvIEZhbGNhdG8gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAgU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gKyoqLw0KPiArDQo+ICsjaWZuZGVmIF9UWVBF U19IDQo+ICsjZGVmaW5lIF9UWVBFU19IDQo+ICsNCj4gKy8qIEMgaGFzIGEgdmFyaWV0eSBvZiB0 eXBlcyB3ZSBtdXN0IGRlZmluZSBpbiBhIGxvdCBvZiBoZWFkZXIgZmlsZXMsIHdpdGhvdXQNCj4g KyAgIGluY2x1ZGluZyB0aGUgImNhbm9uaWNhbCIgaGVhZGVyIGZpbGUgZHVlIHRvIG5hbWVzcGFj ZSBwb2xsdXRpb24gcmVhc29ucy4NCj4gKyAgIFNvIGRlZmluZSB0aGVtIGhlcmUgYW5kIHVzZSBf X05FRURfIG1hY3JvcyB0byBhc2sgZm9yIGNlcnRhaW4gZGVmaW5pdGlvbnMuDQo+ICsgKi8NCj4g Kw0KPiArI2lmIGRlZmluZWQgKF9fTkVFRF9zaXplX3QpICYmICFkZWZpbmVkIChfX2RlZmluZWRf c2l6ZV90KQ0KPiArdHlwZWRlZiBVSU5UTiBzaXplX3Q7DQo+ICsjZGVmaW5lIF9fZGVmaW5lZF9z aXplX3QNCj4gKyNlbmRpZg0KPiArDQo+ICsjaWYgZGVmaW5lZCAoX19ORUVEX05VTEwpICYmICFk ZWZpbmVkIChfX2RlZmluZWRfTlVMTCkNCj4gKyAgI2luY2x1ZGUgPEJhc2UuaD4NCj4gKyNkZWZp bmUgX19kZWZpbmVkX05VTEwNCj4gKy8vIFRPRE86IE5hbWVzcGFjZSBwb2xsdXRpb24NCj4gKyNl bmRpZg0KPiArDQo+ICsjZW5kaWYNCj4gZGlmZiAtLWdpdCBhL01kZVBrZy9MaWJyYXJ5L0xpYmNM aWIvTGliY0xpYi5pbmYgYi9NZGVQa2cvTGlicmFyeS9MaWJjTGliL0xpYmNMaWIuaW5mDQo+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uZDE1ZGVmNzk0OTczDQo+ IC0tLSAvZGV2L251bGwNCj4gKysrIGIvTWRlUGtnL0xpYnJhcnkvTGliY0xpYi9MaWJjTGliLmlu Zg0KPiBAQCAtMCwwICsxLDM4IEBADQo+ICsjIyBAZmlsZQ0KPiArIyBJU08gQyBsaWJjIGltcGxl bWVudGF0aW9uIGZvciBFREsyIG1vZHVsZXMNCj4gKyMNCj4gKyMgIENvcHlyaWdodCAoYykgMjAy MyBQZWRybyBGYWxjYXRvIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsjICBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiArIyMNCj4gKw0KPiArW0RlZmluZXNd DQo+ICsgIElORl9WRVJTSU9OICAgICAgICAgICAgICAgICAgICA9IDB4MDAwMTAwMUINCj4gKyAg QkFTRV9OQU1FICAgICAgICAgICAgICAgICAgICAgID0gTGliY0xpYg0KPiArICBGSUxFX0dVSUQg ICAgICAgICAgICAgICAgICAgICAgPSA0NjkyMDFkNy0wODg0LTQ5N2EtYmE5My1lYzVlZTkxMWIw ZTgNCj4gKyAgTU9EVUxFX1RZUEUgICAgICAgICAgICAgICAgICAgID0gQkFTRQ0KPiArICBWRVJT SU9OX1NUUklORyAgICAgICAgICAgICAgICAgPSAxLjANCj4gKyAgTElCUkFSWV9DTEFTUyAgICAg ICAgICAgICAgICAgID0gTGliY0xpYnxCQVNFDQo+ICsNCj4gKyMNCj4gKyMgVGhlIGZvbGxvd2lu ZyBpbmZvcm1hdGlvbiBpcyBmb3IgcmVmZXJlbmNlIG9ubHkgYW5kIG5vdCByZXF1aXJlZCBieSB0 aGUgYnVpbGQgdG9vbHMuDQo+ICsjDQo+ICsjICBWQUxJRF9BUkNISVRFQ1RVUkVTICAgICAgICAg ICA9IElBMzIgWDY0IEFBUkNINjQNCj4gKyMNCj4gKw0KPiArW1NvdXJjZXNdDQo+ICsgIFN0cmlu Zy9zdHJjcHkuYw0KPiArICBTdHJpbmcvc3RyY21wLmMNCj4gKyAgU3RyaW5nL3N0cmxlbi5jDQo+ ICsgIFN0cmluZy9zdHJjaHIuYw0KPiArICBTdHJpbmcvbWVtY3B5LmMNCj4gKyAgU3RyaW5nL21l bXNldC5jDQo+ICsgIFN0cmluZy9tZW1jaHIuYw0KPiArICBTdHJpbmcvbWVtY21wLmMNCj4gKyAg U3RkbGliL3N0cnRvdWwuYw0KPiArDQo+ICtbUGFja2FnZXNdDQo+ICsgIE1kZVBrZy9NZGVQa2cu ZGVjDQo+ICsNCj4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gKyAgQmFzZUxpYg0KPiArICBCYXNlTWVt b3J5TGliDQo+IGRpZmYgLS1naXQgYS9NZGVQa2cvTGlicmFyeS9MaWJjTGliL1N0ZGxpYi9zdHJ0 b3VsLmMgYi9NZGVQa2cvTGlicmFyeS9MaWJjTGliL1N0ZGxpYi9zdHJ0b3VsLmMNCj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwLi45NTJkM2I4OTljNWUNCj4gLS0t IC9kZXYvbnVsbA0KPiArKysgYi9NZGVQa2cvTGlicmFyeS9MaWJjTGliL1N0ZGxpYi9zdHJ0b3Vs LmMNCj4gQEAgLTAsMCArMSwxMjEgQEANCj4gKy8qKiBAZmlsZQ0KPiArICBtZW1jcHktbGlrZSBm dW5jdGlvbnMNCj4gKw0KPiArICBDb3B5cmlnaHQgKGMpIDIwMjMgUGVkcm8gRmFsY2F0byBBbGwg cmlnaHRzIHJlc2VydmVkLg0KPiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xh dXNlLVBhdGVudA0KPiArKiovDQo+ICsNCj4gKyNpbmNsdWRlIDxzdGRsaWIuaD4NCj4gKyNpbmNs dWRlIDxsaW1pdHMuaD4NCj4gKw0KPiArU1RBVElDDQo+ICtpbnQNCj4gK19faXNzcGFjZSAoDQo+ ICsgIGludCAgY2gNCj4gKyAgKQ0KPiArew0KPiArICAvLyBiYXNpYyBBU0NJSSBjdHlwZS5oOmlz c3BhY2UoKS4gTm90IGVmZmljaWVudA0KPiArICByZXR1cm4gY2ggPT0gJ1xyJyB8fCBjaCA9PSAn XG4nIHx8IGNoID09ICcgJyB8fCBjaCA9PSAnXHQnIHx8IGNoID09ICdcdicgfHwgY2ggPT0gJ1xm JzsNCj4gK30NCj4gKw0KPiArdW5zaWduZWQgbG9uZw0KPiArc3RydG91bCAoDQo+ICsgIGNvbnN0 IGNoYXIgICpOcHRyLA0KPiArICBjaGFyICAgICAgICAqKkVuZFB0ciwNCj4gKyAgaW50ICAgICAg ICAgQmFzZQ0KPiArICApDQo+ICt7DQo+ICsgIEJPT0xFQU4gICAgICAgIE5lZ2F0ZTsNCj4gKyAg Qk9PTEVBTiAgICAgICAgT3ZlcmZsb3c7DQo+ICsgIHVuc2lnbmVkIGxvbmcgIFZhbDsNCj4gKw0K PiArICBOZWdhdGUgICA9IEZBTFNFOw0KPiArICBPdmVyZmxvdyA9IEZBTFNFOw0KPiArICBWYWwg ICAgICA9IDA7DQo+ICsNCj4gKyAgLy8gUmVqZWN0IGJhZCBudW1lcmljIGJhc2VzDQo+ICsgIGlm ICgoQmFzZSA8IDApIHx8IChCYXNlID09IDEpIHx8IChCYXNlID4gMzYpKSB7DQo+ICsgICAgcmV0 dXJuIDA7DQo+ICsgIH0NCj4gKw0KPiArICAvLyBTa2lwIHdoaXRlc3BhY2UNCj4gKyAgd2hpbGUg KF9faXNzcGFjZSAoKk5wdHIpKSB7DQo+ICsgICAgTnB0cisrOw0KPiArICB9DQo+ICsNCj4gKyAg Ly8gQ2hlY2sgZm9yICsgb3IgLSBwcmVmaXhlcw0KPiArICBpZiAoKk5wdHIgPT0gJy0nKSB7DQo+ ICsgICAgTmVnYXRlID0gVFJVRTsNCj4gKyAgICBOcHRyKys7DQo+ICsgIH0gZWxzZSBpZiAoKk5w dHIgPT0gJysnKSB7DQo+ICsgICAgTnB0cisrOw0KPiArICB9DQo+ICsNCj4gKyAgLy8gQ29uc3Vt ZSB0aGUgc3RhcnQsIGF1dG9kZXRlY3RpbmcgYmFzZSBpZiBuZWVkZWQNCj4gKyAgaWYgKChOcHRy WzBdID09ICcwJykgJiYgKChOcHRyWzFdID09ICd4JykgfHwgKE5wdHJbMV0gPT0gJ1gnKSkgJiYg KChCYXNlID09IDApIHx8IChCYXNlID09IDE2KSkpIHsNCj4gKyAgICAvLyBIZXgNCj4gKyAgICBO cHRyICs9IDI7DQo+ICsgICAgQmFzZSAgPSAxNjsNCj4gKyAgfSBlbHNlIGlmICgoTnB0clswXSA9 PSAnMCcpICYmICgoTnB0clsxXSA9PSAnYicpIHx8IChOcHRyWzFdID09ICdCJykpICYmICgoQmFz ZSA9PSAwKSB8fCAoQmFzZSA9PSAyKSkpIHsNCj4gKyAgICAvLyBCaW5hcnkgKHN0YW5kYXJkIHBl bmRpbmcgQzIzKQ0KPiArICAgIE5wdHIgKz0gMjsNCj4gKyAgICBCYXNlICA9IDI7DQo+ICsgIH0g ZWxzZSBpZiAoKE5wdHJbMF0gPT0gJzAnKSAmJiAoKEJhc2UgPT0gMCkgfHwgKEJhc2UgPT0gOCkp KSB7DQo+ICsgICAgLy8gT2N0YWwNCj4gKyAgICBOcHRyKys7DQo+ICsgICAgQmFzZSA9IDg7DQo+ ICsgIH0gZWxzZSB7DQo+ICsgICAgaWYgKEJhc2UgPT0gMCkgew0KPiArICAgICAgLy8gQXNzdW1l IGRlY2ltYWwNCj4gKyAgICAgIEJhc2UgPSAxMDsNCj4gKyAgICB9DQo+ICsgIH0NCj4gKw0KPiAr ICB3aGlsZSAoVFJVRSkgew0KPiArICAgIGludCAgICAgICAgICAgIERpZ2l0Ow0KPiArICAgIGNo YXIgICAgICAgICAgIEM7DQo+ICsgICAgdW5zaWduZWQgbG9uZyAgTmV3VmFsOw0KPiArDQo+ICsg ICAgQyAgICAgPSAqTnB0cjsNCj4gKyAgICBEaWdpdCA9IC0xOw0KPiArDQo+ICsgICAgaWYgKChD ID49ICcwJykgJiYgKEMgPD0gJzknKSkgew0KPiArICAgICAgRGlnaXQgPSBDIC0gJzAnOw0KPiAr ICAgIH0gZWxzZSBpZiAoKEMgPj0gJ2EnKSAmJiAoQyA8PSAneicpKSB7DQo+ICsgICAgICBEaWdp dCA9IEMgLSAnYScgKyAxMDsNCj4gKyAgICB9IGVsc2UgaWYgKChDID49ICdBJykgJiYgKEMgPD0g J1onKSkgew0KPiArICAgICAgRGlnaXQgPSBDIC0gJ0EnICsgMTA7DQo+ICsgICAgfQ0KPiArDQo+ ICsgICAgaWYgKChEaWdpdCA9PSAtMSkgfHwgKERpZ2l0ID49IEJhc2UpKSB7DQo+ICsgICAgICAv LyBOb3RlIHRoYXQgdGhpcyBjYXNlIGFsc28gaGFuZGxlcyB0aGUgXDANCj4gKyAgICAgIGlmIChF bmRQdHIpIHsNCj4gKyAgICAgICAgKkVuZFB0ciA9IChjaGFyICopTnB0cjsNCj4gKyAgICAgIH0N Cj4gKw0KPiArICAgICAgYnJlYWs7DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgTmV3VmFsID0gVmFs ICogQmFzZSArIERpZ2l0Ow0KPiArDQo+ICsgICAgaWYgKE5ld1ZhbCA8IFZhbCkgew0KPiArICAg ICAgLy8gT3ZlcmZsb3cNCj4gKyAgICAgIE92ZXJmbG93ID0gVFJVRTsNCj4gKyAgICB9DQo+ICsN Cj4gKyAgICBWYWwgPSBOZXdWYWw7DQo+ICsNCj4gKyAgICBOcHRyKys7DQo+ICsgIH0NCj4gKw0K PiArICBpZiAoTmVnYXRlKSB7DQo+ICsgICAgVmFsID0gLVZhbDsNCj4gKyAgfQ0KPiArDQo+ICsg IGlmIChPdmVyZmxvdykgew0KPiArICAgIFZhbCA9IFVMT05HX01BWDsNCj4gKyAgfQ0KPiArDQo+ ICsgIC8vIFRPRE86IFdlJ3JlIGxhY2tpbmcgZXJybm8gaGVyZS4NCj4gKyAgcmV0dXJuIFZhbDsN Cj4gK30NCj4gZGlmZiAtLWdpdCBhL01kZVBrZy9MaWJyYXJ5L0xpYmNMaWIvU3RyaW5nL21lbWNo ci5jIGIvTWRlUGtnL0xpYnJhcnkvTGliY0xpYi9TdHJpbmcvbWVtY2hyLmMNCj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwLi5jZWE4YjcxMzQ5ZjANCj4gLS0tIC9k ZXYvbnVsbA0KPiArKysgYi9NZGVQa2cvTGlicmFyeS9MaWJjTGliL1N0cmluZy9tZW1jaHIuYw0K PiBAQCAtMCwwICsxLDE5IEBADQo+ICsvKiogQGZpbGUNCj4gKyAgbWVtY2hyLWxpa2UgZnVuY3Rp b25zDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDIzIFBlZHJvIEZhbGNhdG8gQWxsIHJpZ2h0 cyByZXNlcnZlZC4NCj4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1Q YXRlbnQNCj4gKyoqLw0KPiArDQo+ICsjaW5jbHVkZSA8c3RyaW5nLmg+DQo+ICsjaW5jbHVkZSA8 TGlicmFyeS9CYXNlTWVtb3J5TGliLmg+DQo+ICsNCj4gK3ZvaWQgKg0KPiArbWVtY2hyICgNCj4g KyAgY29uc3Qgdm9pZCAgKkJ1ZiwNCj4gKyAgaW50ICAgICAgICAgQ2hhciwNCj4gKyAgc2l6ZV90 ICAgICAgQ291bnQNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gU2Nhbk1lbTggKEJ1ZiwgQ291 bnQsIENoYXIpOw0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEvTWRlUGtnL0xpYnJhcnkvTGliY0xpYi9T dHJpbmcvbWVtY21wLmMgYi9NZGVQa2cvTGlicmFyeS9MaWJjTGliL1N0cmluZy9tZW1jbXAuYw0K PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAuLmQwMmFhNWQ5ODBm Nw0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL01kZVBrZy9MaWJyYXJ5L0xpYmNMaWIvU3RyaW5n L21lbWNtcC5jDQo+IEBAIC0wLDAgKzEsMTkgQEANCj4gKy8qKiBAZmlsZQ0KPiArICBtZW1jbXAt bGlrZSBmdW5jdGlvbnMNCj4gKw0KPiArICBDb3B5cmlnaHQgKGMpIDIwMjMgUGVkcm8gRmFsY2F0 byBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNE LTItQ2xhdXNlLVBhdGVudA0KPiArKiovDQo+ICsNCj4gKyNpbmNsdWRlIDxzdHJpbmcuaD4NCj4g KyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VNZW1vcnlMaWIuaD4NCj4gKw0KPiAraW50DQo+ICttZW1j bXAgKA0KPiArICBjb25zdCB2b2lkICAqUzEsDQo+ICsgIGNvbnN0IHZvaWQgICpTMiwNCj4gKyAg c2l6ZV90ICAgICAgQ291bnQNCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gKGludClDb21wYXJl TWVtIChTMSwgUzIsIENvdW50KTsNCj4gK30NCj4gZGlmZiAtLWdpdCBhL01kZVBrZy9MaWJyYXJ5 L0xpYmNMaWIvU3RyaW5nL21lbWNweS5jIGIvTWRlUGtnL0xpYnJhcnkvTGliY0xpYi9TdHJpbmcv bWVtY3B5LmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwLi5k NmU4NWY3ZWIzN2YNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9NZGVQa2cvTGlicmFyeS9MaWJj TGliL1N0cmluZy9tZW1jcHkuYw0KPiBAQCAtMCwwICsxLDI5IEBADQo+ICsvKiogQGZpbGUNCj4g KyAgbWVtY3B5LWxpa2UgZnVuY3Rpb25zDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDIzIFBl ZHJvIEZhbGNhdG8gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyAgU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gKyoqLw0KPiArDQo+ICsjaW5jbHVkZSA8c3Ry aW5nLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9CYXNlTWVtb3J5TGliLmg+DQo+ICsNCj4gK3Zv aWQgKg0KPiArbWVtY3B5ICgNCj4gKyAgdm9pZCAqcmVzdHJpY3QgICAgICAgIERzdCwNCj4gKyAg Y29uc3Qgdm9pZCAqcmVzdHJpY3QgIFNyYywNCj4gKyAgc2l6ZV90ICAgICAgICAgICAgICAgIENv dW50DQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIENvcHlNZW0gKERzdCwgU3JjLCBDb3VudCk7 DQo+ICt9DQo+ICsNCj4gK3ZvaWQgKg0KPiArbWVtbW92ZSAoDQo+ICsgIHZvaWQgICAgICAgICpE c3QsDQo+ICsgIGNvbnN0IHZvaWQgICpTcmMsDQo+ICsgIHNpemVfdCAgICAgIENvdW50DQo+ICsg ICkNCj4gK3sNCj4gKyAgcmV0dXJuIENvcHlNZW0gKERzdCwgU3JjLCBDb3VudCk7DQo+ICt9DQo+ IGRpZmYgLS1naXQgYS9NZGVQa2cvTGlicmFyeS9MaWJjTGliL1N0cmluZy9tZW1zZXQuYyBiL01k ZVBrZy9MaWJyYXJ5L0xpYmNMaWIvU3RyaW5nL21lbXNldC5jDQo+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uZTY2ZDZhZGU1NTgyDQo+IC0tLSAvZGV2L251bGwN Cj4gKysrIGIvTWRlUGtnL0xpYnJhcnkvTGliY0xpYi9TdHJpbmcvbWVtc2V0LmMNCj4gQEAgLTAs MCArMSwyMSBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIG1lbWNweS1saWtlIGZ1bmN0aW9ucw0KPiAr DQo+ICsgIENvcHlyaWdodCAoYykgMjAyMyBQZWRybyBGYWxjYXRvIEFsbCByaWdodHMgcmVzZXJ2 ZWQuDQo+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ ICsqKi8NCj4gKw0KPiArI2luY2x1ZGUgPHN0cmluZy5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkv QmFzZU1lbW9yeUxpYi5oPg0KPiArDQo+ICt2b2lkICoNCj4gK21lbXNldCAoDQo+ICsgIHZvaWQg ICAgKkJ1ZiwNCj4gKyAgaW50ICAgICBWYWwsDQo+ICsgIHNpemVfdCAgQ291bnQNCj4gKyAgKQ0K PiArew0KPiArICAvLyBUaGUgc3RhbmRhcmQgZGVmaW5lcyBtZW1zZXQgYXMgY29udmVydGluZyBW YWwgaW50byBhbiB1bnNpZ25lZCBjaGFyIGJlZm9yZSBzdG9yaW5nLA0KPiArICAvLyBzbyB0aGlz IGNhc3QgaXMgZW50aXJlbHkgc2FmZS4NCj4gKyAgcmV0dXJuIFNldE1lbSAoQnVmLCBDb3VudCwg KFVJTlQ4KVZhbCk7DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9NZGVQa2cvTGlicmFyeS9MaWJjTGli L1N0cmluZy9zdHJjaHIuYyBiL01kZVBrZy9MaWJyYXJ5L0xpYmNMaWIvU3RyaW5nL3N0cmNoci5j DQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uNWUwY2U3YzQz Yzk4DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvTWRlUGtnL0xpYnJhcnkvTGliY0xpYi9TdHJp bmcvc3RyY2hyLmMNCj4gQEAgLTAsMCArMSw1NiBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIHN0cmNo ci1saWtlIGltcGxlbWVudGF0aW9ucw0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAyMyBQZWRy byBGYWxjYXRvIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsqKi8NCj4gKyNpbmNsdWRlIDxCYXNlLmg+DQo+ ICsNCj4gKy8vIFZlcnkgcXVpY2sgbm90ZXM6DQo+ICsvLyBXZSBvbmx5IGdvIHRocm91Z2ggdGhl IHN0cmluZyBvbmNlIGZvciBib3RoIGZ1bmN0aW9ucw0KPiArLy8gVGhleSBhcmUgbWluaW1hbCBp bXBsZW1lbnRhdGlvbnMgKG5vdCBzcGVlZCBvcHRpbWl6ZWQpIG9mIElTTyBDIHNlbWFudGljcw0K PiArLy8gc3RyY2hyIGFuZCBzdHJyY2hyIGFsc28gaW5jbHVkZSB0aGUgbnVsbCB0ZXJtaW5hdG9y IGFzIHBhcnQgb2YgdGhlIHN0cmluZw0KPiArLy8gc28gdGhlIGNvZGUgZ2V0cyBhIGJpdCBjbHVu a3kgdG8gaGFuZGxlIHRoYXQgY2FzZSBzcGVjaWZpY2FsbHkuDQo+ICsNCj4gK2NoYXIgKg0KPiAr c3RyY2hyICgNCj4gKyAgY29uc3QgY2hhciAgKlN0ciwNCj4gKyAgaW50ICAgICAgICAgQ2hhcg0K PiArICApDQo+ICt7DQo+ICsgIGNoYXIgICpTOw0KPiArDQo+ICsgIFMgPSAoY2hhciAqKVN0cjsN Cj4gKw0KPiArICBmb3IgKCA7IDsgUysrKSB7DQo+ICsgICAgaWYgKCpTID09IENoYXIpIHsNCj4g KyAgICAgIHJldHVybiBTOw0KPiArICAgIH0NCj4gKw0KPiArICAgIGlmICgqUyA9PSAnXDAnKSB7 DQo+ICsgICAgICByZXR1cm4gTlVMTDsNCj4gKyAgICB9DQo+ICsgIH0NCj4gK30NCj4gKw0KPiAr Y2hhciAqDQo+ICtzdHJyY2hyICgNCj4gKyAgY29uc3QgY2hhciAgKlN0ciwNCj4gKyAgaW50ICAg ICAgICAgQ2hhcg0KPiArICApDQo+ICt7DQo+ICsgIGNoYXIgICpTLCAqbGFzdDsNCj4gKw0KPiAr ICBTICAgID0gKGNoYXIgKilTdHI7DQo+ICsgIGxhc3QgPSBOVUxMOw0KPiArDQo+ICsgIGZvciAo IDsgOyBTKyspIHsNCj4gKyAgICBpZiAoKlMgPT0gQ2hhcikgew0KPiArICAgICAgbGFzdCA9IFM7 DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgaWYgKCpTID09ICdcMCcpIHsNCj4gKyAgICAgIHJldHVy biBsYXN0Ow0KPiArICAgIH0NCj4gKyAgfQ0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEvTWRlUGtnL0xp YnJhcnkvTGliY0xpYi9TdHJpbmcvc3RyY21wLmMgYi9NZGVQa2cvTGlicmFyeS9MaWJjTGliL1N0 cmluZy9zdHJjbXAuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAw MDAuLjk1NjFmYWQzODlkMw0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL01kZVBrZy9MaWJyYXJ5 L0xpYmNMaWIvU3RyaW5nL3N0cmNtcC5jDQo+IEBAIC0wLDAgKzEsMjcgQEANCj4gKy8qKiBAZmls ZQ0KPiArICBzdHJjbXAtbGlrZSBpbXBsZW1lbnRhdGlvbnMNCj4gKw0KPiArICBDb3B5cmlnaHQg KGMpIDIwMjMgUGVkcm8gRmFsY2F0byBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArICBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiArKiovDQo+ICsjaW5jbHVk ZSA8c3RyaW5nLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9CYXNlTGliLmg+DQo+ICsNCj4gK2lu dA0KPiArc3RyY21wICgNCj4gKyAgY29uc3QgY2hhciAgKlN0cjEsDQo+ICsgIGNvbnN0IGNoYXIg ICpTdHIyDQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIChpbnQpQXNjaWlTdHJDbXAgKFN0cjEs IFN0cjIpOw0KPiArfQ0KPiArDQo+ICtpbnQNCj4gK3N0cm5jbXAgKA0KPiArICBjb25zdCBjaGFy ICAqU3RyMSwNCj4gKyAgY29uc3QgY2hhciAgKlN0cjIsDQo+ICsgIHNpemVfdCAgICAgIENvdW50 DQo+ICsgICkNCj4gK3sNCj4gKyAgcmV0dXJuIChpbnQpQXNjaWlTdHJuQ21wIChTdHIxLCBTdHIy LCBDb3VudCk7DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9NZGVQa2cvTGlicmFyeS9MaWJjTGliL1N0 cmluZy9zdHJjcHkuYyBiL01kZVBrZy9MaWJyYXJ5L0xpYmNMaWIvU3RyaW5nL3N0cmNweS5jDQo+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uNzY3YzE4ZDZhNDY0 DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvTWRlUGtnL0xpYnJhcnkvTGliY0xpYi9TdHJpbmcv c3RyY3B5LmMNCj4gQEAgLTAsMCArMSw1OSBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIHN0cmNweS1s aWtlIGltcGxlbWVudGF0aW9ucw0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAyMyBQZWRybyBG YWxjYXRvIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ICsqKi8NCj4gKyNpbmNsdWRlIDxzdHJpbmcuaD4NCj4g KyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VN ZW1vcnlMaWIuaD4NCj4gKw0KPiArY2hhciAqDQo+ICtzdHJjcHkgKA0KPiArICBjaGFyICAgICAg ICAqcmVzdHJpY3QgIERlc3QsDQo+ICsgIGNvbnN0IGNoYXIgICpyZXN0cmljdCAgU291cmNlDQo+ ICsgICkNCj4gK3sNCj4gKyAgY2hhciAgKlJldDsNCj4gKw0KPiArICBSZXQgPSBEZXN0Ow0KPiAr DQo+ICsgIGZvciAoIDsgKlNvdXJjZSAhPSAnXDAnOyBTb3VyY2UrKywgRGVzdCsrKSB7DQo+ICsg ICAgKkRlc3QgPSAqU291cmNlOw0KPiArICB9DQo+ICsNCj4gKyAgKkRlc3QgPSAnXDAnOw0KPiAr DQo+ICsgIHJldHVybiBSZXQ7DQo+ICt9DQo+ICsNCj4gK2NoYXIgKg0KPiArc3RybmNweSAoDQo+ ICsgIGNoYXIgICAgICAgICpyZXN0cmljdCAgRGVzdCwNCj4gKyAgY29uc3QgY2hhciAgKnJlc3Ry aWN0ICBTb3VyY2UsDQo+ICsgIHNpemVfdCAgICAgICAgICAgICAgICAgQ291bnQNCj4gKyAgKQ0K PiArew0KPiArICBjaGFyICAqUmV0Ow0KPiArDQo+ICsgIFJldCA9IERlc3Q7DQo+ICsNCj4gKyAg d2hpbGUgKENvdW50LS0pIHsNCj4gKyAgICBpZiAoKlNvdXJjZSAhPSAnXDAnKSB7DQo+ICsgICAg ICAqRGVzdCsrID0gKlNvdXJjZSsrOw0KPiArICAgIH0gZWxzZSB7DQo+ICsgICAgICAqRGVzdCsr ID0gJ1wwJzsNCj4gKyAgICB9DQo+ICsgIH0NCj4gKw0KPiArICByZXR1cm4gUmV0Ow0KPiArfQ0K PiArDQo+ICtjaGFyICoNCj4gK3N0cmNhdCAoDQo+ICsgIGNoYXIgICAgICAgICpyZXN0cmljdCAg RGVzdCwNCj4gKyAgY29uc3QgY2hhciAgKnJlc3RyaWN0ICBTb3VyY2UNCj4gKyAgKQ0KPiArew0K PiArICByZXR1cm4gc3RyY3B5IChEZXN0ICsgc3RybGVuIChEZXN0KSwgU291cmNlKTsNCj4gK30N Cj4gZGlmZiAtLWdpdCBhL01kZVBrZy9MaWJyYXJ5L0xpYmNMaWIvU3RyaW5nL3N0cmxlbi5jIGIv TWRlUGtnL0xpYnJhcnkvTGliY0xpYi9TdHJpbmcvc3RybGVuLmMNCj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwLi5hOTVmYjdhMThmN2INCj4gLS0tIC9kZXYvbnVs bA0KPiArKysgYi9NZGVQa2cvTGlicmFyeS9MaWJjTGliL1N0cmluZy9zdHJsZW4uYw0KPiBAQCAt MCwwICsxLDE2IEBADQo+ICsvKiogQGZpbGUNCj4gKyAgc3RybGVuIGltcGxlbWVudGF0aW9uDQo+ ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDIzIFBlZHJvIEZhbGNhdG8gQWxsIHJpZ2h0cyByZXNl cnZlZC4NCj4gKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQN Cj4gKyoqLw0KPiArI2luY2x1ZGUgPHN0cmluZy5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvQmFz ZUxpYi5oPg0KPiArDQo+ICtzaXplX3QNCj4gK3N0cmxlbiAoDQo+ICsgIGNvbnN0IGNoYXIgICpT dHINCj4gKyAgKQ0KPiArew0KPiArICByZXR1cm4gQXNjaWlTdHJMZW4gKFN0cik7DQo+ICt9DQo+ IGRpZmYgLS1naXQgYS9NZGVQa2cvTWRlTGlicy5kc2MuaW5jIGIvTWRlUGtnL01kZUxpYnMuZHNj LmluYw0KPiBpbmRleCA0NTgwNDgxY2I1ODAuLmYxN2Q3OTI4NmVjNCAxMDA2NDQNCj4gLS0tIGEv TWRlUGtnL01kZUxpYnMuZHNjLmluYw0KPiArKysgYi9NZGVQa2cvTWRlTGlicy5kc2MuaW5jDQo+ IEBAIC0xNiwzICsxNiw0IEBADQo+ICAgIFJlZ2lzdGVyRmlsdGVyTGlifE1kZVBrZy9MaWJyYXJ5 L1JlZ2lzdGVyRmlsdGVyTGliTnVsbC9SZWdpc3RlckZpbHRlckxpYk51bGwuaW5mDQo+ICAgIENw dUxpYnxNZGVQa2cvTGlicmFyeS9CYXNlQ3B1TGliL0Jhc2VDcHVMaWIuaW5mDQo+ICAgIFNtbUNw dVJlbmRlenZvdXNMaWJ8TWRlUGtnL0xpYnJhcnkvU21tQ3B1UmVuZGV6dm91c0xpYk51bGwvU21t Q3B1UmVuZGV6dm91c0xpYk51bGwuaW5mDQo+ICsgIExpYmNMaWJ8TWRlUGtnL0xpYnJhcnkvTGli Y0xpYi9MaWJjTGliLmluZg0KPiBkaWZmIC0tZ2l0IGEvTWRlUGtnL01kZVBrZy5kZWMgYi9NZGVQ a2cvTWRlUGtnLmRlYw0KPiBpbmRleCBlNDliMmQ1YjVmMjguLjhjMzdkODlmNTQxOCAxMDA2NDQN Cj4gLS0tIGEvTWRlUGtnL01kZVBrZy5kZWMNCj4gKysrIGIvTWRlUGtnL01kZVBrZy5kZWMNCj4g QEAgLTI4NCw2ICsyODQsMTAgQEANCj4gICAgIw0KPiAgICBBcm1Ucm5nTGlifEluY2x1ZGUvTGli cmFyeS9Bcm1Ucm5nTGliLmgNCj4gDQo+ICsgICMjICBAbGlicmFyeWNsYXNzICBQcm92aWRlcyB2 YXJpb3VzIGJpdHMgb2YgYSBDIHN0YW5kYXJkIGxpYnJhcnkuDQo+ICsgICMNCj4gKyAgTGliY0xp YnxNZGVQa2cvTGlicmFyeS9MaWJjTGliL0xpYmNMaWIuaW5mDQo+ICsNCj4gIFtMaWJyYXJ5Q2xh c3Nlcy5JQTMyLCBMaWJyYXJ5Q2xhc3Nlcy5YNjQsIExpYnJhcnlDbGFzc2VzLkFBUkNINjRdDQo+ ICAgICMjICBAbGlicmFyeWNsYXNzICBQcm92aWRlcyBzZXJ2aWNlcyB0byBnZW5lcmF0ZSByYW5k b20gbnVtYmVyLg0KPiAgICAjDQo+IGRpZmYgLS1naXQgYS9NZGVQa2cvTWRlUGtnLmRzYyBiL01k ZVBrZy9NZGVQa2cuZHNjDQo+IGluZGV4IDMyYTg1MmRjNDY2ZS4uMDk4MjhhZTEyNjQ3IDEwMDY0 NA0KPiAtLS0gYS9NZGVQa2cvTWRlUGtnLmRzYw0KPiArKysgYi9NZGVQa2cvTWRlUGtnLmRzYw0K PiBAQCAtMTM1LDYgKzEzNSw3IEBADQo+ICAgIE1kZVBrZy9MaWJyYXJ5L1JlZ2lzdGVyRmlsdGVy TGliTnVsbC9SZWdpc3RlckZpbHRlckxpYk51bGwuaW5mDQo+ICAgIE1kZVBrZy9MaWJyYXJ5L0Nj UHJvYmVMaWJOdWxsL0NjUHJvYmVMaWJOdWxsLmluZg0KPiAgICBNZGVQa2cvTGlicmFyeS9TbW1D cHVSZW5kZXp2b3VzTGliTnVsbC9TbW1DcHVSZW5kZXp2b3VzTGliTnVsbC5pbmYNCj4gKyAgTWRl UGtnL0xpYnJhcnkvTGliY0xpYi9MaWJjTGliLmluZg0KPiANCj4gIFtDb21wb25lbnRzLklBMzIs IENvbXBvbmVudHMuWDY0LCBDb21wb25lbnRzLkFSTSwgQ29tcG9uZW50cy5BQVJDSDY0XQ0KPiAg ICAjDQo+IC0tDQo+IDIuNDAuMA0KDQo=