From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0b-002e3701.pphosted.com (mx0b-002e3701.pphosted.com [148.163.143.35]) by mx.groups.io with SMTP id smtpd.web08.2773.1608092428440465539 for ; Tue, 15 Dec 2020 20:20:28 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@hpe.com header.s=pps0720 header.b=aKc1/lRe; spf=pass (domain: hpe.com, ip: 148.163.143.35, mailfrom: prvs=0619d1d483=abner.chang@hpe.com) Received: from pps.filterd (m0150244.ppops.net [127.0.0.1]) by mx0b-002e3701.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 0BG4J196015422; Wed, 16 Dec 2020 04:20:27 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hpe.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pps0720; bh=6SxzifHn5uTxnsTXzwQvQl9kMkIFyyldZXngI8WOQQw=; b=aKc1/lReXyqEzB1nwhXdz5owvC+CUxho4XtY28CBNcRO3fPipSiNU4M5MmblYPxHcj64 SMvBfYQPydwQkf8e6zDVMxXX59k/HYhir0lwv8TDnkmPapu6P95blz8tVdNWCKUd1oX1 wN6zPnOkCHJS6SX0K0bPszS6PFyIyPlmDEvhi8qILavwTRuIEMq35z5bl/ZQ7KCCT8h6 lHI7+cy+4jUuUii888uhYSzga+9kQFXg1NJne6nidJnGKG8J2AW5WXVq+99EfmfVSZdh yTfs6hu40onB9ZWzpnOcZx/GiYkLGBXZB2NkodQB0ojx65/muWgG8KOi6HK9gOsz3EgN pA== Received: from g9t5008.houston.hpe.com (g9t5008.houston.hpe.com [15.241.48.72]) by mx0b-002e3701.pphosted.com with ESMTP id 35cph7nxeb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 16 Dec 2020 04:20:26 +0000 Received: from G9W8455.americas.hpqcorp.net (g9w8455.houston.hp.com [16.216.161.94]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by g9t5008.houston.hpe.com (Postfix) with ESMTPS id 425196F; Wed, 16 Dec 2020 04:20:26 +0000 (UTC) Received: from G1W8107.americas.hpqcorp.net (2002:10c1:483b::10c1:483b) by G9W8455.americas.hpqcorp.net (2002:10d8:a15e::10d8:a15e) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 16 Dec 2020 04:20:26 +0000 Received: from NAM04-BN8-obe.outbound.protection.outlook.com (15.241.52.13) by G1W8107.americas.hpqcorp.net (16.193.72.59) with Microsoft SMTP Server (TLS) id 15.0.1497.2 via Frontend Transport; Wed, 16 Dec 2020 04:20:26 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=oEDmV4fe9QLVXC7CQyRNz+UEPKGSh71jt80WqT1KOfa4H/TlDMTJj0efNUXgbg5JhUNAuY00d+zqZWWAdPYapjHgj/A+g821Jql3HkVISvdyJuwKWe/ky9NFmvoojKqZWDOW/9ZWKyvPgsohlYSvWi/9tGhLE2i4HHj7WAnoa5RYgYJq7JIyMJ6dOwJyW6apatsNNem52TLLNXEHgWx2dLSICysxCp8feso8vlfQu85F7pVai/trzwgDqqraXH1jiqwSe7yAdwHubVZpGNUyfj5GLggJeOENZ3oTG43JptGzuFJKItQAJ0f7KBuHPu4nL6ac7lo/pm5npXb229tmWQ== 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-SenderADCheck; bh=ykRWFaLJiaF5IRiH1V2+lwb7TWK5tm5JY9w/oQXVkIg=; b=GI7xoJ/YYUpw3H9+OHnLCF7nMOb+UyHCNxm7K/p5SD/aSoaB60N2wDoblZvsJ+MyxDRpO+1yZSOoJ8x2RCq4ZlVYZFX5lhzLJHtbM7vYhVD3BJhcjgaCtKtj09S7DgQzXh/DR1UxWFGXWhzX9FhbZ5iL7NV8nvcXXtqEGOAr6wcOko2eqs90oxybiU3BIxdnZAOkAhqTGvzzMIK5jaH9E2iPtPNDbt/J5WsFIrfHmVulIQ2/G+xZZl3/N8KFzJ+NQ7sLgVQqsAYXyPZrt0MqgMb9BLwws779h6BJO7PE/FLXyGH71dgyf0FTiTeK8wMUDXK8FBCCPWJOM4uNmg7Rig== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=hpe.com; dmarc=pass action=none header.from=hpe.com; dkim=pass header.d=hpe.com; arc=none Received: from CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:7508::16) by CS1PR8401MB0471.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:750d::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3654.14; Wed, 16 Dec 2020 04:20:23 +0000 Received: from CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM ([fe80::a094:ed67:fb40:340e]) by CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM ([fe80::a094:ed67:fb40:340e%10]) with mapi id 15.20.3654.025; Wed, 16 Dec 2020 04:20:22 +0000 From: "Abner Chang" To: "devel@edk2.groups.io" , "michael.d.kinney@intel.com" CC: Leif Lindholm , "Wang, Nickle (HPS SW)" , "O'Hanley, Peter (EXL)" Subject: Re: [edk2-devel] [PATCH v6 3/6] RedfishPkg/CrtLib: C runtime library Thread-Topic: [edk2-devel] [PATCH v6 3/6] RedfishPkg/CrtLib: C runtime library Thread-Index: AQHW0nEY9ZknCiqcYkm8poCnEy7pLKn4/siA Date: Wed, 16 Dec 2020 04:20:22 +0000 Message-ID: References: <20201214035321.17000-1-abner.chang@hpe.com> <20201214035321.17000-4-abner.chang@hpe.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=hpe.com; x-originating-ip: [16.242.247.131] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 1de61ab9-c5cb-4c00-eecb-08d8a179e811 x-ms-traffictypediagnostic: CS1PR8401MB0471: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8273; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 79ld5N6w5ftLa8GSF5RigEXJ3TjAWoP1gHYtmcF6Q/QNGx+9BrAV43BxpgFNW/JuqZ1uUeQOHKf3BWB2/CO5WgPRwe7b9wx+qDZNiAI6l9qYhvnCvlCNlYRofl7TxFCoYnxUzhjsAWzUUfp7cs2nY3QDWxOVSKAspIT+3JMIlM9gpGPPEh373GJ3fGys9O3f7RUv+vjmWtmFp+YZRxGFR9QErGGCvVhuFt/61GmmPOxTsz5x95zuItphzpxwcSOmO/DdRz1Rk9VNiu7Y8qwQ7VKEy+W7McSh+U7028xNoHoPuYgeovn+uJlyI0n3nF8WOqe7D6a8OaK2xAzc7uKwcuBoYAtPIOGPrKyzJYFwY6zaAbK7mSLYqYOkO6Wta5j+fWB0dm0IuZnkM/fbM6P7o7eF9Y+wDrOi/2aVSk2cwuUOhyKgKDC+V3YpID5nRmu66AMRV89iGA2VlwgoI7T7TRYVHralmA9m/WuOQiIuqzk= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(396003)(39850400004)(136003)(366004)(376002)(346002)(6506007)(2906002)(52536014)(316002)(26005)(66946007)(64756008)(86362001)(76116006)(9686003)(19627235002)(66556008)(110136005)(66476007)(8936002)(7696005)(83380400001)(30864003)(478600001)(55016002)(66446008)(966005)(5660300002)(53546011)(186003)(71200400001)(8676002)(33656002)(4326008)(54906003)(461764006)(21314003)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?utf-8?B?SW9WbGlRalZPSHdZRVdRaGpPMWhLVm9zUUd3cW81VzRKTHVmd1JkN293d3dy?= =?utf-8?B?WTBwMURwdmJOUU1mbExOSG1wa09pdkU2ZkZ3R09MTWl3RTdjYzZ1UnhENXBn?= =?utf-8?B?NWRqRTVqSmxzS3FFd1dCdi82VnIzS2dnYitvQm5rNXh2d2hTQjNvaGVaVXBR?= =?utf-8?B?NTcvdGhrRk42Zk9vZDA3MnVGZ2Y4VDdMMVhlVC9uSDdwSG81cTRDR0Fyc1FZ?= =?utf-8?B?c0J6anZVSDBWQkx4UXBnSkIyREwwWXF5SnF0ZmR5NkpUY0dESStxSDZqdVlx?= =?utf-8?B?ajdOSk56RXFwZm1hUjlVZlNzSnlTNDFPdUNXbDhqbnpFaHZEUHJLSzZWc2ta?= =?utf-8?B?Nmg2ODRsendqcnZySldnUnFyWHE5ZDUxYXA0QS9YTFhURVdCUHgzS2xwMmJk?= =?utf-8?B?cFRxWkwxd0lKenhRV2ROOXRVNlVVeUxWSzNUL1JtVitWVDMzbUVIeXdSUGM5?= =?utf-8?B?ODlVeGEvL085QXc4ZnArdDE2ak1WbUtLMzg5eG0wcHMyMjU2eEVGSXFjbE5k?= =?utf-8?B?aUhlZldwZ2N1eVdLQXNLSVZadjZuenJtbWF2MFlqWnFmNXZlQy9MRHRNcy81?= =?utf-8?B?dDdyRDh0ajR1Smo0cFZ4SHIyYzNHZkZyQ3Qwak04TVhyd000NjFqYXhXdFll?= =?utf-8?B?V1JmSm9QMkZKVFkwdG81NkxyMWR3WGR1amNWOVB4OTJwYWc2YmpFc1lwZk9Y?= =?utf-8?B?cVFrNkVBNmQ5eENLTlYrWXVBa3MvQUhoVkxkWUhhSHpoOXE0WmVQVWFRNGpw?= =?utf-8?B?bTlIVkt6eXlNemFhc1F1VVVBSFRJckEzODhUZlp2L3lHSVhZQmRldmUzNHBx?= =?utf-8?B?Z21GMklsSzdRTElPdG1DU01pa3hnbktiYzRaQnh3aEcyMGpDbGNHc0h3OXJi?= =?utf-8?B?b1FGdytPTFNHZ1NpTjRFRWtvR2xDSlpFSkpxTFdYbHVZY1BDbmMzV3l1RkFq?= =?utf-8?B?UHFVcHhNMVdSOWlXSVIzVEs4SGxxMTdyQ1A2eVg3M3Q4dXEzTFNtRGxNc1VO?= =?utf-8?B?a2ppbUlZbXFrdzlFUFJVdWZ0QjRpeURFbTN4ZmxScGNEc0UxYU5Fa3NpQmNP?= =?utf-8?B?ZUxqVTkyM0hvV3A2NFNOZ1pOc2tMOGpZUnhzVThOMnJnZW44NzJBMTJFVS9z?= =?utf-8?B?TkFqSjA5b1l6UDY2Rzg4NXRRTG1kTml4SnVyamZBWXgvZ3Vlakd5aG04ZUJX?= =?utf-8?B?MDl4UjB0SG1pMGJaNUQ4Y3Rtd3ljdUpRdkpxbWVOeEJIcDhMa3N3Q0piV1hp?= =?utf-8?B?NlM3QWs1aFFrVTlSd2E3cHBSSUdYMU1wd2pzMVc3d3VqWGVUcjJITnV6SlI4?= =?utf-8?Q?rF23AmldVjEqI=3D?= X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: 1de61ab9-c5cb-4c00-eecb-08d8a179e811 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Dec 2020 04:20:22.7580 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 105b2061-b669-4b31-92ac-24d304d195dc X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: o+E4xVzs9SE2WYOmziaKArI5ndwsb9eqqpF8AOxcq6zldfEN9ZLJO3Qe/L86iFOXEkCu9JgSYhyS+RKLrB55UQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CS1PR8401MB0471 X-OriginatorOrg: hpe.com X-Proofpoint-UnRewURL: 0 URL was un-rewritten MIME-Version: 1.0 X-HPE-SCL: -1 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.343,18.0.737 definitions=2020-12-16_01:2020-12-15,2020-12-16 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 malwarescore=0 phishscore=0 mlxlogscore=999 spamscore=0 adultscore=0 bulkscore=0 mlxscore=0 clxscore=1015 impostorscore=0 lowpriorityscore=0 priorityscore=1501 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2012160026 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogZGV2ZWxAZWRrMi5ncm91 cHMuaW8gW21haWx0bzpkZXZlbEBlZGsyLmdyb3Vwcy5pb10gT24gQmVoYWxmIE9mDQo+IE1pY2hh ZWwgRCBLaW5uZXkNCj4gU2VudDogVHVlc2RheSwgRGVjZW1iZXIgMTUsIDIwMjAgNzozMCBBTQ0K PiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IENoYW5nLCBBYm5lciAoSFBTIFNXL0ZXIFRlY2hu b2xvZ2lzdCkNCj4gPGFibmVyLmNoYW5nQGhwZS5jb20+OyBLaW5uZXksIE1pY2hhZWwgRCA8bWlj aGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+IENjOiBMZWlmIExpbmRob2xtIDxsZWlmQG51dmlh aW5jLmNvbT47IFdhbmcsIE5pY2tsZSAoSFBTIFNXKQ0KPiA8bmlja2xlLndhbmdAaHBlLmNvbT47 IE8nSGFubGV5LCBQZXRlciAoRVhMKSA8cGV0ZXIub2hhbmxleUBocGUuY29tPg0KPiBTdWJqZWN0 OiBSZTogW2VkazItZGV2ZWxdIFtQQVRDSCB2NiAzLzZdIFJlZGZpc2hQa2cvQ3J0TGliOiBDIHJ1 bnRpbWUgbGlicmFyeQ0KPiANCj4gSGkgQWJuZXIsDQo+IA0KPiBDb21tZW50cyBpbmNsdWRlZCBi ZWxvdy4NCj4gDQo+IE1pa2UNCj4gDQo+IA0KPiANCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2Ut LS0tLQ0KPiA+IEZyb206IGRldmVsQGVkazIuZ3JvdXBzLmlvIDxkZXZlbEBlZGsyLmdyb3Vwcy5p bz4gT24gQmVoYWxmIE9mIEFibmVyDQo+ID4gQ2hhbmcNCj4gPiBTZW50OiBTdW5kYXksIERlY2Vt YmVyIDEzLCAyMDIwIDc6NTMgUE0NCj4gPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gPiBD YzogTGVpZiBMaW5kaG9sbSA8bGVpZkBudXZpYWluYy5jb20+OyBOaWNrbGUgV2FuZw0KPiA+IDxu aWNrbGUud2FuZ0BocGUuY29tPjsgUGV0ZXIgTydIYW5sZXkgPHBldGVyLm9oYW5sZXlAaHBlLmNv bT4NCj4gPiBTdWJqZWN0OiBbZWRrMi1kZXZlbF0gW1BBVENIIHY2IDMvNl0gUmVkZmlzaFBrZy9D cnRMaWI6IEMgcnVudGltZQ0KPiA+IGxpYnJhcnkNCj4gPg0KPiA+IENSVCBsaWJyYXJ5IGlzIGN1 cnJlbnRseSB1c2VkIGJ5IGVkazIgSnNvbkxpYiAob3BlbiBzb3VyY2UgamFuc3Nvbg0KPiA+IHBy b2plY3QpIGFuZCBlZGsyIFJlZGZpc2hMaWIgKGxpYnJlZGZpc2ggb3BlbiBzb3VyY2UgcHJvamVj dCkuIENydExpYg0KPiA+IGxpYnJhcnkgcHJvdmlkZXMgdGhlIG5lY2Vzc2FyeSBDIHJ1bnRpbWUg ZXF1aXZhbGVudCBlZGsyIGZ1bmN0aW9ucyBmb3INCj4gPiBvcGVuIHNvdXJjZSBwcm9qZWN0cy4N Cj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IEFibmVyIENoYW5nIDxhYm5lci5jaGFuZ0BocGUuY29t Pg0KPiA+DQo+ID4gQ2M6IExlaWYgTGluZGhvbG0gPGxlaWZAbnV2aWFpbmMuY29tPg0KPiA+IENj OiBOaWNrbGUgV2FuZyA8bmlja2xlLndhbmdAaHBlLmNvbT4NCj4gPiBDYzogUGV0ZXIgTydIYW5s ZXkgPHBldGVyLm9oYW5sZXlAaHBlLmNvbT4NCj4gPiAtLS0NCj4gPiAgUmVkZmlzaFBrZy9JbmNs dWRlL0NydC9hc3NlcnQuaCAgICAgIHwgIDE2ICsNCj4gPiAgUmVkZmlzaFBrZy9JbmNsdWRlL0Ny dC9lcnJuby5oICAgICAgIHwgIDE2ICsNCj4gPiAgUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9saW1p dHMuaCAgICAgIHwgIDE2ICsNCj4gPiAgUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9tYXRoLmggICAg ICAgIHwgIDE2ICsNCj4gPiAgUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdGRhcmcuaCAgICAgIHwg IDE1ICsNCj4gPiAgUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdGRkZWYuaCAgICAgIHwgIDE2ICsN Cj4gPiAgUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdGRpby5oICAgICAgIHwgIDE1ICsNCj4gPiAg UmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdGRsaWIuaCAgICAgIHwgIDE2ICsNCj4gPiAgUmVkZmlz aFBrZy9JbmNsdWRlL0NydC9zdHJpbmcuaCAgICAgIHwgIDE2ICsNCj4gPiAgUmVkZmlzaFBrZy9J bmNsdWRlL0NydC9zeXMvdGltZS5oICAgIHwgIDE1ICsNCj4gPiAgUmVkZmlzaFBrZy9JbmNsdWRl L0NydC9zeXMvdHlwZXMuaCAgIHwgIDE1ICsNCj4gPiAgUmVkZmlzaFBrZy9JbmNsdWRlL0NydC90 aW1lLmggICAgICAgIHwgIDE1ICsNCj4gPiAgUmVkZmlzaFBrZy9JbmNsdWRlL0xpYnJhcnkvQ3J0 TGliLmggIHwgMTk1ICsrKysrKysrDQo+ID4gIFJlZGZpc2hQa2cvTGlicmFyeS9DcnRMaWIvQ3J0 TGliLmMgICB8IDcwNQ0KPiArKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gPiAgUmVkZmlz aFBrZy9MaWJyYXJ5L0NydExpYi9DcnRMaWIuaW5mIHwgIDM3ICsrDQo+ID4gIFJlZGZpc2hQa2cv UmVkZmlzaExpYnMuZHNjLmluYyAgICAgICB8ICAgMSArDQo+ID4gIFJlZGZpc2hQa2cvUmVkZmlz aFBrZy5jaS55YW1sICAgICAgICB8ICAxOSArDQo+ID4gIFJlZGZpc2hQa2cvUmVkZmlzaFBrZy5k ZWMgICAgICAgICAgICB8ICAgOCArDQo+ID4gIFJlZGZpc2hQa2cvUmVkZmlzaFBrZy5kc2MgICAg ICAgICAgICB8ICAgMSArDQo+ID4gIDE5IGZpbGVzIGNoYW5nZWQsIDExNTMgaW5zZXJ0aW9ucygr KQ0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9hc3NlcnQu aCAgY3JlYXRlIG1vZGUNCj4gPiAxMDA2NDQgUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9lcnJuby5o ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gPiBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L2xpbWl0cy5o ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gPiBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L21hdGguaCAg Y3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4gUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdGRhcmcuaCAg Y3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4gUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdGRkZWYuaCAg Y3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4gUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdGRpby5oICBj cmVhdGUgbW9kZSAxMDA2NDQNCj4gPiBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0ZGxpYi5oICBj cmVhdGUgbW9kZSAxMDA2NDQNCj4gPiBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0cmluZy5oICBj cmVhdGUgbW9kZSAxMDA2NDQNCj4gPiBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N5cy90aW1lLmgg IGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+IFJlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3lzL3R5cGVz LmgNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IFJlZGZpc2hQa2cvSW5jbHVkZS9DcnQvdGltZS5o ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gPiBSZWRmaXNoUGtnL0luY2x1ZGUvTGlicmFyeS9DcnRM aWIuaA0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgUmVkZmlzaFBrZy9MaWJyYXJ5L0NydExpYi9D cnRMaWIuYw0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgUmVkZmlzaFBrZy9MaWJyYXJ5L0NydExp Yi9DcnRMaWIuaW5mDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvUmVkZmlzaFBrZy9JbmNsdWRlL0Ny dC9hc3NlcnQuaA0KPiA+IGIvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9hc3NlcnQuaCBuZXcgZmls ZSBtb2RlIDEwMDY0NCBpbmRleA0KPiA+IDAwMDAwMDAwMDAuLmY5YWI3ZWY5Y2ENCj4gPiAtLS0g L2Rldi9udWxsDQo+ID4gKysrIGIvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9hc3NlcnQuaA0KPiA+ IEBAIC0wLDAgKzEsMTYgQEANCj4gPiArLyoqIEBmaWxlDQo+ID4gKyAgSW5jbHVkZSBmaWxlIHRv IHN1cHBvcnQgYnVpbGRpbmcgdGhlIHRoaXJkLXBhcnR5IGphbnNzb24gbGlicmFyeS4NCj4gPiAr DQo+ID4gKyBDb3B5cmlnaHQgKGMpIDIwMTksIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRz IHJlc2VydmVkLjxCUj4NCj4gPiArIChDKSBDb3B5cmlnaHQgMjAyMCBIZXdsZXR0IFBhY2thcmQg RW50ZXJwcmlzZSBEZXZlbG9wbWVudCBMUDxCUj4NCj4gPiArDQo+ID4gKyAgICBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ICsNCj4gPiArKiovDQo+ID4g Kw0KPiA+ICsjaWZuZGVmIENSVF9BU1NFUlRfSF8NCj4gPiArI2RlZmluZSBDUlRfQVNTRVJUX0hf DQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9DcnRMaWIuaD4NCj4gPiArDQo+ID4gKyNl bmRpZg0KPiA+IGRpZmYgLS1naXQgYS9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L2Vycm5vLmgNCj4g PiBiL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQvZXJybm8uaCBuZXcgZmlsZSBtb2RlIDEwMDY0NCBp bmRleA0KPiA+IDAwMDAwMDAwMDAuLmQzMGFlZTE0ZGUNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4g KysrIGIvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9lcnJuby5oDQo+ID4gQEAgLTAsMCArMSwxNiBA QA0KPiA+ICsvKiogQGZpbGUNCj4gPiArICBJbmNsdWRlIGZpbGUgdG8gc3VwcG9ydCBidWlsZGlu ZyB0aGUgdGhpcmQtcGFydHkgamFuc3NvbiBsaWJyYXJ5Lg0KPiA+ICsNCj4gPiArIENvcHlyaWdo dCAoYykgMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0K PiA+ICsgKEMpIENvcHlyaWdodCAyMDIwIEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIERldmVs b3BtZW50IExQPEJSPg0KPiA+ICsNCj4gPiArICAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBC U0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArDQo+ID4gKyNpZm5kZWYg Q1JUX0VSUk5PX0hfDQo+ID4gKyNkZWZpbmUgQ1JUX0VSUk5PX0hfDQo+ID4gKw0KPiA+ICsjaW5j bHVkZSA8TGlicmFyeS9DcnRMaWIuaD4NCj4gPiArDQo+ID4gKyNlbmRpZg0KPiA+IGRpZmYgLS1n aXQgYS9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L2xpbWl0cy5oDQo+ID4gYi9SZWRmaXNoUGtnL0lu Y2x1ZGUvQ3J0L2xpbWl0cy5oIG5ldyBmaWxlIG1vZGUgMTAwNjQ0IGluZGV4DQo+ID4gMDAwMDAw MDAwMC4uZjNiZGQzM2YyYQ0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9SZWRmaXNoUGtn L0luY2x1ZGUvQ3J0L2xpbWl0cy5oDQo+ID4gQEAgLTAsMCArMSwxNiBAQA0KPiA+ICsvKiogQGZp bGUNCj4gPiArICBJbmNsdWRlIGZpbGUgdG8gc3VwcG9ydCBidWlsZGluZyB0aGUgdGhpcmQtcGFy dHkgamFuc3NvbiBsaWJyYXJ5Lg0KPiA+ICsNCj4gPiArIENvcHlyaWdodCAoYykgMjAxOSwgSW50 ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICsgKEMpIENvcHly aWdodCAyMDIwIEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIERldmVsb3BtZW50IExQPEJSPg0K PiA+ICsNCj4gPiArICAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0 ZW50DQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArDQo+ID4gKyNpZm5kZWYgQ1JUX0xJTUlUU19IXw0K PiA+ICsjZGVmaW5lIENSVF9MSU1JVFNfSF8NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5 L0NydExpYi5oPg0KPiA+ICsNCj4gPiArI2VuZGlmDQo+ID4gZGlmZiAtLWdpdCBhL1JlZGZpc2hQ a2cvSW5jbHVkZS9DcnQvbWF0aC5oDQo+ID4gYi9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L21hdGgu aCBuZXcgZmlsZSBtb2RlIDEwMDY0NCBpbmRleA0KPiA+IDAwMDAwMDAwMDAuLjk4NGMwY2NjMjEN Cj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9tYXRo LmgNCj4gPiBAQCAtMCwwICsxLDE2IEBADQo+ID4gKy8qKiBAZmlsZQ0KPiA+ICsgIEluY2x1ZGUg ZmlsZSB0byBzdXBwb3J0IGJ1aWxkaW5nIHRoZSB0aGlyZC1wYXJ0eSBqYW5zc29uIGxpYnJhcnku DQo+ID4gKw0KPiA+ICsgQ29weXJpZ2h0IChjKSAyMDE5LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs IHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gKyAoQykgQ29weXJpZ2h0IDIwMjAgSGV3bGV0dCBQ YWNrYXJkIEVudGVycHJpc2UgRGV2ZWxvcG1lbnQgTFA8QlI+DQo+ID4gKw0KPiA+ICsgICAgU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiArDQo+ID4gKyoq Lw0KPiA+ICsNCj4gPiArI2lmbmRlZiBDUlRfTUFUSF9IXw0KPiA+ICsjZGVmaW5lIENSVF9NQVRI X0hfDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9DcnRMaWIuaD4NCj4gPiArDQo+ID4g KyNlbmRpZg0KPiA+IGRpZmYgLS1naXQgYS9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0ZGFyZy5o DQo+ID4gYi9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0ZGFyZy5oIG5ldyBmaWxlIG1vZGUgMTAw NjQ0IGluZGV4DQo+ID4gMDAwMDAwMDAwMC4uZDVhMzE0YWQzYg0KPiA+IC0tLSAvZGV2L251bGwN Cj4gPiArKysgYi9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0ZGFyZy5oDQo+ID4gQEAgLTAsMCAr MSwxNSBAQA0KPiA+ICsvKiogQGZpbGUNCj4gPiArICBJbmNsdWRlIGZpbGUgdG8gc3VwcG9ydCBi dWlsZGluZyB0aGUgdGhpcmQtcGFydHkgamFuc3NvbiBsaWJyYXJ5Lg0KPiA+ICsNCj4gPiArIENv cHlyaWdodCAoYykgMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQu PEJSPg0KPiA+ICsgKEMpIENvcHlyaWdodCAyMDIwIEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNl IERldmVsb3BtZW50IExQPEJSPg0KPiA+ICsNCj4gPiArICAgIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArI2lmbmRlZiBD UlRfU1REQVJHX0hfDQo+ID4gKyNkZWZpbmUgQ1JUX1NUREFSR19IXw0KPiA+ICsNCj4gPiArI2lu Y2x1ZGUgPExpYnJhcnkvQ3J0TGliLmg+DQo+ID4gKw0KPiA+ICsjZW5kaWYNCj4gPiBkaWZmIC0t Z2l0IGEvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdGRkZWYuaA0KPiA+IGIvUmVkZmlzaFBrZy9J bmNsdWRlL0NydC9zdGRkZWYuaCBuZXcgZmlsZSBtb2RlIDEwMDY0NCBpbmRleA0KPiA+IDAwMDAw MDAwMDAuLjE1YTM3YmY1MGUNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvUmVkZmlzaFBr Zy9JbmNsdWRlL0NydC9zdGRkZWYuaA0KPiA+IEBAIC0wLDAgKzEsMTYgQEANCj4gPiArLyoqIEBm aWxlDQo+ID4gKyAgSW5jbHVkZSBmaWxlIHRvIHN1cHBvcnQgYnVpbGRpbmcgdGhlIHRoaXJkLXBh cnR5IGphbnNzb24gbGlicmFyeS4NCj4gPiArDQo+ID4gKyBDb3B5cmlnaHQgKGMpIDIwMTksIElu dGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiArIChDKSBDb3B5 cmlnaHQgMjAyMCBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBEZXZlbG9wbWVudCBMUDxCUj4N Cj4gPiArDQo+ID4gKyAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBh dGVudA0KPiA+ICsNCj4gPiArKiovDQo+ID4gKw0KPiA+ICsjaWZuZGVmIENSVF9TVERERUZfSF8N Cj4gPiArI2RlZmluZSBDUlRfU1REREVGX0hfDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8TGlicmFy eS9DcnRMaWIuaD4NCj4gPiArDQo+ID4gKyNlbmRpZg0KPiA+IGRpZmYgLS1naXQgYS9SZWRmaXNo UGtnL0luY2x1ZGUvQ3J0L3N0ZGlvLmgNCj4gPiBiL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3Rk aW8uaCBuZXcgZmlsZSBtb2RlIDEwMDY0NCBpbmRleA0KPiA+IDAwMDAwMDAwMDAuLjI1ZTYxMGJl MTANCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9z dGRpby5oDQo+ID4gQEAgLTAsMCArMSwxNSBAQA0KPiA+ICsvKiogQGZpbGUNCj4gPiArICBJbmNs dWRlIGZpbGUgdG8gc3VwcG9ydCBidWlsZGluZyB0aGUgdGhpcmQtcGFydHkgamFuc3NvbiBsaWJy YXJ5Lg0KPiA+ICsNCj4gPiArIENvcHlyaWdodCAoYykgMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24u IEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICsgKEMpIENvcHlyaWdodCAyMDIwIEhld2xl dHQgUGFja2FyZCBFbnRlcnByaXNlIERldmVsb3BtZW50IExQPEJSPg0KPiA+ICsNCj4gPiArICAg IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gKw0KPiA+ ICsqKi8NCj4gPiArI2lmbmRlZiBDUlRfU1RESU9fSF8NCj4gPiArI2RlZmluZSBDUlRfU1RESU9f SF8NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0NydExpYi5oPg0KPiA+ICsNCj4gPiAr I2VuZGlmDQo+ID4gZGlmZiAtLWdpdCBhL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3RkbGliLmgN Cj4gPiBiL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3RkbGliLmggbmV3IGZpbGUgbW9kZSAxMDA2 NDQgaW5kZXgNCj4gPiAwMDAwMDAwMDAwLi41YjNkZDI3M2M4DQo+ID4gLS0tIC9kZXYvbnVsbA0K PiA+ICsrKyBiL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3RkbGliLmgNCj4gPiBAQCAtMCwwICsx LDE2IEBADQo+ID4gKy8qKiBAZmlsZQ0KPiA+ICsgIEluY2x1ZGUgZmlsZSB0byBzdXBwb3J0IGJ1 aWxkaW5nIHRoZSB0aGlyZC1wYXJ0eSBqYW5zc29uIGxpYnJhcnkuDQo+ID4gKw0KPiA+ICsgQ29w eXJpZ2h0IChjKSAyMDE5LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48 QlI+DQo+ID4gKyAoQykgQ29weXJpZ2h0IDIwMjAgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2Ug RGV2ZWxvcG1lbnQgTFA8QlI+DQo+ID4gKw0KPiA+ICsgICAgU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiArDQo+ID4gKyoqLw0KPiA+ICsNCj4gPiArI2lm bmRlZiBDUlRfU1RETElCX0hfDQo+ID4gKyNkZWZpbmUgQ1JUX1NURExJQl9IXw0KPiA+ICsNCj4g PiArI2luY2x1ZGUgPExpYnJhcnkvQ3J0TGliLmg+DQo+ID4gKw0KPiA+ICsjZW5kaWYNCj4gPiBk aWZmIC0tZ2l0IGEvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdHJpbmcuaA0KPiA+IGIvUmVkZmlz aFBrZy9JbmNsdWRlL0NydC9zdHJpbmcuaCBuZXcgZmlsZSBtb2RlIDEwMDY0NCBpbmRleA0KPiA+ IDAwMDAwMDAwMDAuLmY2MGI4N2NjZDINCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvUmVk ZmlzaFBrZy9JbmNsdWRlL0NydC9zdHJpbmcuaA0KPiA+IEBAIC0wLDAgKzEsMTYgQEANCj4gPiAr LyoqIEBmaWxlDQo+ID4gKyAgSW5jbHVkZSBmaWxlIHRvIHN1cHBvcnQgYnVpbGRpbmcgdGhlIHRo aXJkLXBhcnR5IGphbnNzb24gbGlicmFyeS4NCj4gPiArDQo+ID4gKyBDb3B5cmlnaHQgKGMpIDIw MTksIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiArIChD KSBDb3B5cmlnaHQgMjAyMCBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBEZXZlbG9wbWVudCBM UDxCUj4NCj4gPiArDQo+ID4gKyAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xh dXNlLVBhdGVudA0KPiA+ICsNCj4gPiArKiovDQo+ID4gKw0KPiA+ICsjaWZuZGVmIENSVF9TVFJJ TkdfSF8NCj4gPiArI2RlZmluZSBDUlRfU1RSSU5HX0hfDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8 TGlicmFyeS9DcnRMaWIuaD4NCj4gPiArDQo+ID4gKyNlbmRpZg0KPiA+IGRpZmYgLS1naXQgYS9S ZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N5cy90aW1lLmgNCj4gPiBiL1JlZGZpc2hQa2cvSW5jbHVk ZS9DcnQvc3lzL3RpbWUuaA0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAw MDAwMDAwMC4uNGNlZDE3NmNkYQ0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9SZWRmaXNo UGtnL0luY2x1ZGUvQ3J0L3N5cy90aW1lLmgNCj4gPiBAQCAtMCwwICsxLDE1IEBADQo+ID4gKy8q KiBAZmlsZQ0KPiA+ICsgIEluY2x1ZGUgZmlsZSB0byBzdXBwb3J0IGJ1aWxkaW5nIHRoZSB0aGly ZC1wYXJ0eSBqYW5zc29uIGxpYnJhcnkuDQo+ID4gKw0KPiA+ICsgQ29weXJpZ2h0IChjKSAyMDE5 LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gKyAoQykg Q29weXJpZ2h0IDIwMjAgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgRGV2ZWxvcG1lbnQgTFA8 QlI+DQo+ID4gKw0KPiA+ICsgICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVz ZS1QYXRlbnQNCj4gPiArDQo+ID4gKyoqLw0KPiA+ICsjaWZuZGVmIENSVF9TWVNfVElNRV9IXw0K PiA+ICsjZGVmaW5lIENSVF9TWVNfVElNRV9IXw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPExpYnJh cnkvQ3J0TGliLmg+DQo+ID4gKw0KPiA+ICsjZW5kaWYNCj4gPiBkaWZmIC0tZ2l0IGEvUmVkZmlz aFBrZy9JbmNsdWRlL0NydC9zeXMvdHlwZXMuaA0KPiA+IGIvUmVkZmlzaFBrZy9JbmNsdWRlL0Ny dC9zeXMvdHlwZXMuaA0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAw MDAwMC4uYzRmODA3MjE0Yw0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9SZWRmaXNoUGtn L0luY2x1ZGUvQ3J0L3N5cy90eXBlcy5oDQo+ID4gQEAgLTAsMCArMSwxNSBAQA0KPiA+ICsvKiog QGZpbGUNCj4gPiArICBJbmNsdWRlIGZpbGUgdG8gc3VwcG9ydCBidWlsZGluZyB0aGUgdGhpcmQt cGFydHkgamFuc3NvbiBsaWJyYXJ5Lg0KPiA+ICsNCj4gPiArIENvcHlyaWdodCAoYykgMjAxOSwg SW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICsgKEMpIENv cHlyaWdodCAyMDIwIEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIERldmVsb3BtZW50IExQPEJS Pg0KPiA+ICsNCj4gPiArICAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2Ut UGF0ZW50DQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArI2lmbmRlZiBDUlRfU1lTX1RZUEVTX0hfDQo+ ID4gKyNkZWZpbmUgQ1JUX1NZU19UWVBFU19IXw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPExpYnJh cnkvQ3J0TGliLmg+DQo+ID4gKw0KPiA+ICsjZW5kaWYNCj4gPiBkaWZmIC0tZ2l0IGEvUmVkZmlz aFBrZy9JbmNsdWRlL0NydC90aW1lLmgNCj4gPiBiL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQvdGlt ZS5oIG5ldyBmaWxlIG1vZGUgMTAwNjQ0IGluZGV4DQo+ID4gMDAwMDAwMDAwMC4uY2EwNGFjODcz MA0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3Rp bWUuaA0KPiA+IEBAIC0wLDAgKzEsMTUgQEANCj4gPiArLyoqIEBmaWxlDQo+ID4gKyAgSW5jbHVk ZSBmaWxlIHRvIHN1cHBvcnQgYnVpbGRpbmcgdGhlIHRoaXJkLXBhcnR5IGphbnNzb24gbGlicmFy eS4NCj4gPiArDQo+ID4gKyBDb3B5cmlnaHQgKGMpIDIwMTksIEludGVsIENvcnBvcmF0aW9uLiBB bGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiArIChDKSBDb3B5cmlnaHQgMjAyMCBIZXdsZXR0 IFBhY2thcmQgRW50ZXJwcmlzZSBEZXZlbG9wbWVudCBMUDxCUj4NCj4gPiArDQo+ID4gKyAgICBT UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ICsNCj4gPiAr KiovDQo+ID4gKyNpZm5kZWYgQ1JUX1RJTUVfSF8NCj4gPiArI2RlZmluZSBDUlRfVElNRV9IXw0K PiA+ICsNCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvQ3J0TGliLmg+DQo+ID4gKw0KPiA+ICsjZW5k aWYNCj4gPiBkaWZmIC0tZ2l0IGEvUmVkZmlzaFBrZy9JbmNsdWRlL0xpYnJhcnkvQ3J0TGliLmgN Cj4gPiBiL1JlZGZpc2hQa2cvSW5jbHVkZS9MaWJyYXJ5L0NydExpYi5oDQo+ID4gbmV3IGZpbGUg bW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwLi44Yzc0ODRlNzViDQo+ID4gLS0tIC9k ZXYvbnVsbA0KPiA+ICsrKyBiL1JlZGZpc2hQa2cvSW5jbHVkZS9MaWJyYXJ5L0NydExpYi5oDQo+ ID4gQEAgLTAsMCArMSwxOTUgQEANCj4gPiArLyoqIEBmaWxlDQo+ID4gKyAgQ1JUIHdyYXBwZXIg aGVhZCBmdW5jdGlvbnMgZm9yIGphbnNzb24gc3lzdGVtIGNhbGwuDQo+ID4gKw0KPiA+ICsgIENv cHlyaWdodCAoYykgMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQu PEJSPg0KPiA+ICsgIChDKSBDb3B5cmlnaHQgMjAyMCBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlz ZSBEZXZlbG9wbWVudCBMUDxCUj4NCj4gPiArDQo+ID4gKyAgICBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ICsNCj4gPiArKiovDQo+ID4gKw0KPiA+ICsj aWZuZGVmIENSVF9MSUJfSF8NCj4gPiArI2RlZmluZSBDUlRfTElCX0hfDQo+ID4gKw0KPiA+ICsj aW5jbHVkZSA8TGlicmFyeS9CYXNlTGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VN ZW1vcnlMaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvRGVidWdMaWIuaD4NCj4gPiArI2lu Y2x1ZGUgPExpYnJhcnkvUHJpbnRMaWIuaD4NCj4gPiArDQo+ID4gKyNkZWZpbmUgTUFYX1NUUklO R19TSVpFICAweDEwMDAwMDAwDQo+ID4gKw0KPiA+ICsvLyBNaW5pbXVtIHZhbHVlIGZvciBhbiBv YmplY3Qgb2YgdHlwZSBsb25nIGxvbmcgaW50Lg0KPiA+ICsjZGVmaW5lIExMT05HX01JTiAgIE1J Tl9JTlQ2NA0KPiA+ICsNCj4gPiArLy8gTWF4aW11bSB2YWx1ZSBmb3IgYW4gb2JqZWN0IG9mIHR5 cGUgbG9uZyBsb25nIGludC4NCj4gPiArI2RlZmluZSBMTE9OR19NQVggICBNQVhfSU5UNjQNCj4g PiArDQo+ID4gKy8vIFdlIGRvbnQgc3VwcG9ydCBkb3VibGUgb24gZWRrMg0KPiA+ICsjZGVmaW5l IEhVR0VfVkFMICAgIDANCj4gPiArDQo+ID4gKyNpZiBkZWZpbmVkKE1ERV9DUFVfWDY0KSB8fCBk ZWZpbmVkKE1ERV9DUFVfQUFSQ0g2NCkgfHwNCj4gPiArZGVmaW5lZChNREVfQ1BVX0lBNjQpIHx8 IGRlZmluZWQoTURFX0NQVV9SSVNDVjY0KSAvLyAvLyBXaXRoIEdDQw0KPiB3ZQ0KPiA+ICt3b3Vs ZCBub3JtYWxseSB1c2UgU0lYVFlfRk9VUl9CSVRfTE9ORywgYnV0IE1TVkMgbmVlZHMgLy8NCj4g PiArU0lYVFlfRk9VUl9CSVQsIGJlY2F1c2UgJ2xvbmcnIGlzIDMyLWJpdCBhbmQgb25seSAnbG9u ZyBsb25nJyBpcyAvLw0KPiA+ICs2NC1iaXQuIFNpbmNlIHVzaW5nICdsb25nIGxvbmcnIHdvcmtz IGZpbmUgb24gR0NDIHRvbywganVzdCBkbyB0aGF0Lg0KPiA+ICsvLw0KPiA+ICsjZGVmaW5lIFNJ WFRZX0ZPVVJfQklUDQo+ID4gKyNlbGlmIGRlZmluZWQoTURFX0NQVV9JQTMyKSB8fCBkZWZpbmVk KE1ERV9DUFVfQVJNKSB8fA0KPiA+ICtkZWZpbmVkKE1ERV9DUFVfRUJDKSAjZGVmaW5lIFRISVJU WV9UV09fQklUICNlbmRpZg0KPiA+ICsNCj4gPiArLy8NCj4gPiArLy8gTWFwIGFsbCB2YV94eHh4 IGVsZW1lbnRzIHRvIFZBX3h4eCBkZWZpbmVkIGluDQo+ID4gK01kZVBrZy9JbmNsdWRlL0Jhc2Uu aCAvLyAjaWYgIWRlZmluZWQoX19DQ19BUk0pIC8vIGlmIHZhX2xpc3QgaXMgbm90DQo+ID4gK2Fs cmVhZHkgZGVmaW5lZA0KPiA+ICsjZGVmaW5lIHZhX2xpc3QgICBWQV9MSVNUDQo+ID4gKyNkZWZp bmUgdmFfYXJnICAgIFZBX0FSRw0KPiA+ICsjZGVmaW5lIHZhX3N0YXJ0ICBWQV9TVEFSVA0KPiA+ ICsjZGVmaW5lIHZhX2VuZCAgICBWQV9FTkQNCj4gPiArI2Vsc2UgLy8gX19DQ19BUk0NCj4gPiAr I2RlZmluZSB2YV9zdGFydChNYXJrZXIsIFBhcmFtZXRlcikgICBfX3ZhX3N0YXJ0KE1hcmtlciwg UGFyYW1ldGVyKQ0KPiA+ICsjZGVmaW5lIHZhX2FyZyhNYXJrZXIsIFRZUEUpICAgICAgICAgIF9f dmFfYXJnKE1hcmtlciwgVFlQRSkNCj4gPiArI2RlZmluZSB2YV9lbmQoTWFya2VyKSAgICAgICAg ICAgICAgICAoKHZvaWQpMCkNCj4gPiArI2VuZGlmDQo+ID4gKw0KPiA+ICsvLw0KPiA+ICsvLyBE ZWZpbml0aW9ucyBmb3IgZ2xvYmFsIGNvbnN0YW50cyB1c2VkIGJ5IENSVCBsaWJyYXJ5IHJvdXRp bmVzIC8vDQo+ID4gKyNkZWZpbmUgSU5UX01BWCAgICAgIE1BWF9JTlQzMiAgICAgICAgLyogTWF4 aW11bSAoc2lnbmVkKSBpbnQgdmFsdWUgKi8NCj4gPiArI2RlZmluZSBMT05HX01BWCAgICAgMFg3 RkZGRkZGRkwgICAgICAvKiBtYXggdmFsdWUgZm9yIGEgbG9uZyAqLw0KPiA+ICsjZGVmaW5lIExP TkdfTUlOICAgICAoLUxPTkdfTUFYLTEpICAgIC8qIG1pbiB2YWx1ZSBmb3IgYSBsb25nICovDQo+ ID4gKyNkZWZpbmUgVUxPTkdfTUFYICAgIDB4RkZGRkZGRkYgICAgICAgLyogTWF4aW11bSB1bnNp Z25lZCBsb25nIHZhbHVlDQo+ICovDQo+ID4gKyNkZWZpbmUgQ0hBUl9CSVQgICAgIDggICAgICAg ICAgICAgICAgLyogTnVtYmVyIG9mIGJpdHMgaW4gYSBjaGFyICovDQo+ID4gKw0KPiA+ICsvLyBN YXhpbXVtIHZhbHVlIGZvciBhbiBvYmplY3Qgb2YgdHlwZSB1bnNpZ25lZCBsb25nIGxvbmcgaW50 Lg0KPiA+ICsjZGVmaW5lIFVMTE9OR19NQVggIDB4RkZGRkZGRkZGRkZGRkZGRlVMTCAvLyAyXjY0 IC0gMSAvLyBNYXhpbXVtDQo+ID4gK3ZhbHVlIGZvciBhbiBvYmplY3Qgb2YgdHlwZSB1bnNpZ25l ZCBjaGFyLg0KPiA+ICsjZGVmaW5lIFVDSEFSX01BWCAgIDI1NSAgLy8gMl44IC0gMQ0KPiA+ICsN Cj4gPiArLy8NCj4gPiArLy8gQmFzaWMgdHlwZXMgbWFwcGluZw0KPiA+ICsvLw0KPiA+ICt0eXBl ZGVmIFVJTlROICAgICAgICAgIHNpemVfdDsNCj4gPiArdHlwZWRlZiBJTlROICAgICAgICAgICBz c2l6ZV90Ow0KPiA+ICt0eXBlZGVmIElOVDMyICAgICAgICAgIHRpbWVfdDsNCj4gPiArdHlwZWRl ZiBVSU5UOCAgICAgICAgICBfX3VpbnQ4X3Q7DQo+ID4gK3R5cGVkZWYgVUlOVDggICAgICAgICAg c2FfZmFtaWx5X3Q7DQo+ID4gK3R5cGVkZWYgVUlOVDMyICAgICAgICAgdWlkX3Q7DQo+ID4gK3R5 cGVkZWYgVUlOVDMyICAgICAgICAgZ2lkX3Q7DQo+ID4gK3R5cGVkZWYgSU5UMzIgICAgICAgICAg aW50MzJfdDsNCj4gPiArdHlwZWRlZiBVSU5UMzIgICAgICAgICB1aW50MzJfdDsNCj4gPiArdHlw ZWRlZiBVSU5UMTYgICAgICAgICB1aW50MTZfdDsNCj4gPiArdHlwZWRlZiBVSU5UOCAgICAgICAg ICB1aW50OF90Ow0KPiA+ICt0eXBlZGVmIGVudW0ge2ZhbHNlLCB0cnVlfSBib29sOw0KPiA+ICsN Cj4gPiArLy8NCj4gPiArLy8gRmlsZSBvcGVyYXRpb25zIGFyZSBub3QgcmVxdWlyZWQgZm9yIEVG SSBidWlsZGluZywgLy8gc28gRklMRSBpcw0KPiA+ICttYXBwZWQgdG8gVk9JRCAqIHRvIHBhc3Mg YnVpbGQgLy8gdHlwZWRlZiBWT0lEICAqRklMRTsNCj4gPiArDQo+ID4gKy8vDQo+ID4gKy8vIEds b2JhbCB2YXJpYWJsZXMNCj4gPiArLy8NCj4gPiArZXh0ZXJuIGludCAgZXJybm87DQo+ID4gK2V4 dGVybiBGSUxFICpzdGRlcnI7DQo+ID4gKw0KPiA+ICsvLw0KPiA+ICsvLyBGdW5jdGlvbiBwcm90 b3R5cGVzIG9mIENSVCBMaWJyYXJ5IHJvdXRpbmVzIC8vDQo+ID4gK3ZvaWQgICAgICAgICAgICpt YWxsb2MgICAgIChzaXplX3QpOw0KPiA+ICt2b2lkICAgICAgICAgICAqcmVhbGxvYyAgICAodm9p ZCAqLCBzaXplX3QpOw0KPiA+ICt2b2lkICAgICAgICAgICAqY2FsbG9jICAgICAoc2l6ZV90IE51 bSwgc2l6ZV90IFNpemUpOw0KPiA+ICt2b2lkICAgICAgICAgICBmcmVlICAgICAgICAodm9pZCAq KTsNCj4gPiArdm9pZCAgICAgICAgICAgKm1lbXNldCAgICAgKHZvaWQgKiwgaW50LCBzaXplX3Qp Ow0KPiA+ICtpbnQgICAgICAgICAgICBtZW1jbXAgICAgICAoY29uc3Qgdm9pZCAqLCBjb25zdCB2 b2lkICosIHNpemVfdCk7DQo+ID4gK2ludCAgICAgICAgICAgIGlzZGlnaXQgICAgIChpbnQpOw0K PiA+ICtpbnQgICAgICAgICAgICBpc3NwYWNlICAgICAoaW50KTsNCj4gPiAraW50ICAgICAgICAg ICAgdG9sb3dlciAgICAgKGludCk7DQo+ID4gK2ludCAgICAgICAgICAgIGlzdXBwZXIgICAgIChp bnQpOw0KPiA+ICtpbnQgICAgICAgICAgICBpc3hkaWdpdCAgICAoaW50KTsNCj4gPiAraW50ICAg ICAgICAgICAgaXNhbG51bSAgICAgKGludCk7DQo+ID4gK3ZvaWQgICAgICAgICAgICptZW1jcHkg ICAgICh2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsNCj4gPiArdm9pZCAgICAgICAgICAg Km1lbXNldCAgICAgKHZvaWQgKiwgaW50LCBzaXplX3QpOw0KPiA+ICt2b2lkICAgICAgICAgICAq bWVtY2hyICAgICAoY29uc3Qgdm9pZCAqLCBpbnQsIHNpemVfdCk7DQo+ID4gK2ludCAgICAgICAg ICAgIG1lbWNtcCAgICAgIChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsNCj4g PiArdm9pZCAgICAgICAgICAgKm1lbW1vdmUgICAgKHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBzaXpl X3QpOw0KPiA+ICtpbnQgICAgICAgICAgICBzdHJjbXAgICAgICAoY29uc3QgY2hhciAqLCBjb25z dCBjaGFyICopOw0KPiA+ICtpbnQgICAgICAgICAgICBzdHJuY21wICAgICAoY29uc3QgY2hhciAq LCBjb25zdCBjaGFyICosIHNpemVfdCk7DQo+ID4gK2NoYXIgICAgICAgICAgICpzdHJjcHkgICAg IChjaGFyICosIGNvbnN0IGNoYXIgKik7DQo+ID4gK3NpemVfdCAgICAgICAgIHN0cmxlbiAgICAg IChjb25zdCBjaGFyICopOw0KPiA+ICtjaGFyICAgICAgICAgICAqc3RyY2F0ICAgICAoY2hhciAq LCBjb25zdCBjaGFyICopOw0KPiA+ICtjaGFyICAgICAgICAgICAqc3RyY2hyICAgICAoY29uc3Qg Y2hhciAqLCBpbnQpOw0KPiA+ICtpbnQgICAgICAgICAgICBzdHJjYXNlY21wICAoY29uc3QgY2hh ciAqLCBjb25zdCBjaGFyICopOw0KPiA+ICtpbnQgICAgICAgICAgICBzdHJuY2FzZWNtcCAoY29u c3QgY2hhciAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7DQo+ID4gK2NoYXIgICAgICAgICAgICpz dHJuY3B5ICAgIChjaGFyICosIHNpemVfdCwgY29uc3QgY2hhciAqLCBzaXplX3QpOw0KPiA+ICtp bnQgICAgICAgICAgICBzdHJuY21wICAgICAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHNp emVfdCk7DQo+ID4gK2NoYXIgICAgICAgICAgICpzdHJyY2hyICAgIChjb25zdCBjaGFyICosIGlu dCk7DQo+ID4gK3Vuc2lnbmVkIGxvbmcgIHN0cnRvdWwgICAgIChjb25zdCBjaGFyICosIGNoYXIg KiosIGludCk7DQo+ID4gK2NoYXIgKiAgICAgICAgIHN0cnN0ciAgICAgIChjb25zdCBjaGFyICpz MSAsIGNvbnN0IGNoYXIgKnMyKTsNCj4gPiArbG9uZyAgICAgICAgICAgc3RydG9sICAgICAgKGNv bnN0IGNoYXIgKiwgY2hhciAqKiwgaW50KTsNCj4gPiArY2hhciAgICAgICAgICAgKnN0cmVycm9y ICAgKGludCk7DQo+ID4gK3NpemVfdCAgICAgICAgIHN0cnNwbiAgICAgIChjb25zdCBjaGFyICos IGNvbnN0IGNoYXIgKik7DQo+ID4gK2NoYXIgKiAgICAgICAgIHN0cmR1cCAgICAgIChjb25zdCBj aGFyICpzdHIpOw0KPiA+ICtjaGFyICogICAgICAgICBzdHJwYnJrICAgICAoY29uc3QgY2hhciAq czEsIGNvbnN0IGNoYXIgKnMyKTsNCj4gPiArdW5zaWduZWQgbG9uZyBsb25nIHN0cnRvdWxsKGNv bnN0IGNoYXIgKiBucHRyLCBjaGFyICoqIGVuZHB0ciwgaW50IGJhc2UpOw0KPiA+ICtsb25nIGxv bmcgICAgICBzdHJ0b2xsICAgICAoY29uc3QgY2hhciAqIG5wdHIsIGNoYXIgKiogZW5kcHRyLCBp bnQgYmFzZSk7DQo+ID4gK2xvbmcgICAgICAgICAgIHN0cnRvbCAgICAgIChjb25zdCBjaGFyICog bnB0ciwgY2hhciAqKiBlbmRwdHIsIGludCBiYXNlKTsNCj4gPiArZG91YmxlICAgICAgICAgc3Ry dG9kICAgICAgKGNvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0IG5wdHIsIGNoYXIgKiogX19yZXN0cmlj dA0KPiBlbmRwdHIpOw0KPiA+ICtzaXplX3QgICAgICAgICBzdHJjc3BuICAgICAoY29uc3QgY2hh ciAqLCBjb25zdCBjaGFyICopOw0KPiA+ICtpbnQgICAgICAgICAgICBwcmludGYgICAgICAoY29u c3QgY2hhciAqLCAuLi4pOw0KPiA+ICtpbnQgICAgICAgICAgICBzc2NhbmYgICAgICAoY29uc3Qg Y2hhciAqLCBjb25zdCBjaGFyICosIC4uLik7DQo+ID4gK0ZJTEUgICAgICAgICAgICpmb3BlbiAg ICAgIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7DQo+ID4gK3NpemVfdCAgICAgICAgIGZy ZWFkICAgICAgICh2b2lkICosIHNpemVfdCwgc2l6ZV90LCBGSUxFICopOw0KPiA+ICtzaXplX3Qg ICAgICAgICBmd3JpdGUgICAgICAoY29uc3Qgdm9pZCAqLCBzaXplX3QsIHNpemVfdCwgRklMRSAq KTsNCj4gPiAraW50ICAgICAgICAgICAgZmNsb3NlICAgICAgKEZJTEUgKik7DQo+ID4gK2ludCAg ICAgICAgICAgIGZwcmludGYgICAgIChGSUxFICosIGNvbnN0IGNoYXIgKiwgLi4uKTsNCj4gPiAr aW50ICAgICAgICAgICAgZmdldGMgICAgICAgKEZJTEUgKiBfRmlsZSk7DQo+ID4gK3VpZF90ICAg ICAgICAgIGdldHVpZCAgICAgICh2b2lkKTsNCj4gPiArdWlkX3QgICAgICAgICAgZ2V0ZXVpZCAg ICAgKHZvaWQpOw0KPiA+ICtnaWRfdCAgICAgICAgICBnZXRnaWQgICAgICAodm9pZCk7DQo+ID4g K2dpZF90ICAgICAgICAgIGdldGVnaWQgICAgICh2b2lkKTsNCj4gPiArdm9pZCAgICAgICAgICAg cXNvcnQgICAgICAgKHZvaWQgKiwgc2l6ZV90LCBzaXplX3QsIGludCAoKikoY29uc3Qgdm9pZCAq LCBjb25zdCB2b2lkDQo+ICopKTsNCj4gPiArY2hhciAgICAgICAgICAgKmdldGVudiAgICAgKGNv bnN0IGNoYXIgKik7DQo+ID4gKyNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPj0g MikNCj4gPiArdm9pZCAgICAgICAgICAgYWJvcnQgICAgICAgKHZvaWQpIF9fYXR0cmlidXRlX18o KF9fbm9yZXR1cm5fXykpOw0KPiA+ICsjZWxzZQ0KPiA+ICt2b2lkICAgICAgICAgICBhYm9ydCAg ICAgICAodm9pZCk7DQo+ID4gKyNlbmRpZg0KPiA+ICtpbnQgICAgICAgICAgICB0b3VwcGVyICAg ICAoaW50KTsNCj4gPiAraW50ICAgICAgICAgICAgRGlnaXQyVmFsICAgKGludCk7DQo+ID4gK3Rp bWVfdCAgICAgICAgIHRpbWUgICAgICAgICh0aW1lX3QgKik7DQo+ID4gKw0KPiA+ICsvLw0KPiA+ ICsvLyBNYWNyb3MgdGhhdCBkaXJlY3RseSBtYXAgZnVuY3Rpb25zIHRvIEJhc2VMaWIsIEJhc2VN ZW1vcnlMaWIsIGFuZA0KPiA+ICtEZWJ1Z0xpYiBmdW5jdGlvbnMgLy8NCj4gPiArI2RlZmluZSBz dHJjbXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXNjaWlTdHJDbXANCj4gPiArI2RlZmlu ZSBtZW1jcHkoZGVzdCxzb3VyY2UsY291bnQpDQo+IENvcHlNZW0oZGVzdCxzb3VyY2UsKFVJTlRO KShjb3VudCkpDQo+ID4gKyNkZWZpbmUgbWVtc2V0KGRlc3QsY2gsY291bnQpDQo+IFNldE1lbShk ZXN0LChVSU5UTikoY291bnQpLChVSU5UOCkoY2gpKQ0KPiA+ICsjZGVmaW5lIG1lbWNocihidWYs Y2gsY291bnQpDQo+IFNjYW5NZW04KGJ1ZiwoVUlOVE4pKGNvdW50KSwoVUlOVDgpY2gpDQo+ID4g KyNkZWZpbmUgbWVtY21wKGJ1ZjEsYnVmMixjb3VudCkNCj4gKGludCkoQ29tcGFyZU1lbShidWYx LGJ1ZjIsKFVJTlROKShjb3VudCkpKQ0KPiA+ICsjZGVmaW5lIG1lbW1vdmUoZGVzdCxzb3VyY2Us Y291bnQpDQo+IENvcHlNZW0oZGVzdCxzb3VyY2UsKFVJTlROKShjb3VudCkpDQo+ID4gKyNkZWZp bmUgc3RybGVuKHN0cikNCj4gKHNpemVfdCkoQXNjaWlTdHJuTGVuUyhzdHIsTUFYX1NUUklOR19T SVpFKSkNCj4gDQo+IFdoYXQgaXMgTUFYX1NUUklOR19TSVpFPyAgSG93IGRvIHlvdSBrbm93IHRo ZXJlIGFyZSBubyBidWZmZXIgb3ZlcnJ1bnMNCj4gbG9va2luZyBmb3IgdGhlIGVuZCBvZiB0aGUg c3RyaW5nPyAgSSBndWVzcyB0aGlzIGlzIG1vcmUgb2YgYSBqYW5zc29uIGxpYg0KPiBxdWVzdGlv bj8/Pw0KTm8sIHRoYXQgaXMgYmVjYXVzZSB3ZSB1c2UgQXNjaWlTdHJuTGVuUyBmb3Igc3RybGVu KCkuIFdlIGNvdWxkIGp1c3QgdXNlIEFzY2lpU3RyTGVuKCkgZm9yIHN0cmxlbigpIHRoYXQgbWFr ZXMgbW9yZSBzZW5zZS4gd2hhdCBkbyB5b3UgdGhpbms/DQo+IA0KPiA+ICsjZGVmaW5lIHN0cmNw eShzdHJEZXN0LHN0clNvdXJjZSkNCj4gQXNjaWlTdHJDcHlTKHN0ckRlc3QsKHN0cmxlbihzdHJT b3VyY2UpKzEpLHN0clNvdXJjZSkNCj4gPiArI2RlZmluZSBzdHJuY3B5KHN0ckRlc3Qsc3RyU291 cmNlLGNvdW50KQ0KPiA+ICtBc2NpaVN0cm5DcHlTKHN0ckRlc3QsKFVJTlROKWNvdW50LHN0clNv dXJjZSwoVUlOVE4pY291bnQpDQo+ID4gKyNkZWZpbmUgc3RybmNweXMoc3RyRGVzdCwgRGVzdExl biwgc3RyU291cmNlLGNvdW50KQ0KPiBBc2NpaVN0cm5DcHlTKHN0ckRlc3QsRGVzdExlbixzdHJT b3VyY2UsKFVJTlROKWNvdW50KQ0KPiA+ICsjZGVmaW5lIHN0cmNhdChzdHJEZXN0LHN0clNvdXJj ZSkNCj4gQXNjaWlTdHJDYXRTKHN0ckRlc3QsKHN0cmxlbihzdHJTb3VyY2UpK3N0cmxlbihzdHJE ZXN0KSsxKSxzdHJTb3VyY2UpDQo+ID4gKyNkZWZpbmUgc3RyY2hyKHN0cixjaCkgICAgICAgICAg ICAgICAgICAgIFNjYW5NZW04KChWT0lEDQo+ICopKHN0ciksQXNjaWlTdHJTaXplKHN0ciksKFVJ TlQ4KWNoKQ0KPiA+ICsjZGVmaW5lIHN0cm5jbXAoc3RyaW5nMSxzdHJpbmcyLGNvdW50KQ0KPiAo aW50KShBc2NpaVN0cm5DbXAoc3RyaW5nMSxzdHJpbmcyLChVSU5UTikoY291bnQpKSkNCj4gPiAr I2RlZmluZSBzdHJjYXNlY21wKHN0cjEsc3RyMikgICAgICAgICAgICAgKGludClBc2NpaVN0cmlD bXAoc3RyMSxzdHIyKQ0KPiA+ICsjZGVmaW5lIHN0cnN0cihzMSxzMikgICAgICAgICAgICAgICAg ICAgICBBc2NpaVN0clN0cihzMSxzMikNCj4gPiArI2RlZmluZSBzcHJpbnRmKGJ1ZiwuLi4pDQo+ IEFzY2lpU1ByaW50KGJ1ZixNQVhfU1RSSU5HX1NJWkUsX19WQV9BUkdTX18pDQo+ID4gKyNkZWZp bmUgc25wcmludGYoYnVmLGxlbiwuLi4pICAgICAgICAgICAgIEFzY2lpU1ByaW50KGJ1ZixsZW4s X19WQV9BUkdTX18pDQo+ID4gKyNkZWZpbmUgdnNucHJpbnRmKGJ1ZixsZW4sZm9ybWF0LG1hcmtl cikNCj4gPiArQXNjaWlWU1ByaW50KChidWYpLChsZW4pLChmb3JtYXQpLChtYXJrZXIpKQ0KPiAN Cj4gVGhlIEVESyBJSSBQcmludExpYiBmb3JtYXQgc3RyaW5nIGlzIG5vdCBpZGVudGljYWwgdG8g bGliYyBwcmludGYoKSBmb3JtYXQgc3RyaW5nLg0KPiBBcmUgeW91IHN1cmUgdGhlIHVzYWdlIGJ5 IGphbnNzb24gaXMgY29tcGF0aWJsZT8NCg0KVGhlIG9uZSBwcm9ibGVtIEkgY2FuIHNlZSBpcyBz cHJpbnRmDQojZGVmaW5lIHNwcmludGYoYnVmLC4uLikgIEFzY2lpU1ByaW50KGJ1ZixNQVhfU1RS SU5HX1NJWkUsX19WQV9BUkdTX18pDQp3aGljaCBoYXMgdGhlIGRpZmZlcmVudCBwcm90b3R5cGUu IEx1Y2tpbHkgd2UgZG9u4oCZdCBlbmNvdW50ZXIgcHJvYmxlbSBiZWNhdXNlIHRoZSBqYW5zc29u IHNvdXJjZSBjb2RlIHdlIHVzZSBkb2VzbuKAmXQgdXNlIHNwcmludGYoKSwgaXQgb25seSB1c2Vk IGluIHNvbWUgamFuc3NvbiB0ZXN0IHRvb2wuIEkgd2lsbCByZW1vdmUgdGhpcyBkZWZpbml0aW9u IGFuZCBvdGhlciB1bnVzZWQgb25lcyBhcyB3ZWxsLg0KSSBkb27igJl0IHNlZSBhbnkgcGFydGlj dWxhciBpc3N1ZXMgd2hlbiB3ZSBydW4gZWRrMiBSZWRmaXNoIGNvZGUgb24gb3RoZXIgcHJpbnQg ZnVuY3Rpb25zLg0KDQo+IA0KPiA+ICsjZGVmaW5lIGFzc2VydChleHByZXNzaW9uKSAgICAgICAg ICAgICAgICBBU1NFUlQoZXhwcmVzc2lvbikNCj4gPiArI2RlZmluZSBhdG9pKG5wdHIpICAgICAg ICAgICAgICAgICAgICAgICAgQXNjaWlTdHJEZWNpbWFsVG9VaW50bihucHRyKQ0KPiANCj4gSXMg dGhpcyByZWFsbHkgY29tcGF0aWJsZSBpbiBiZWhhdmlvcj8NCj4gDQo+ID4gKyNkZWZpbmUgZmFi cyh4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKHgpIDwgMC4wKT8gKC14KTogKHgpKQ0K PiANCj4gSXMgZmFicygpIGFjdHVhbGx5IHVzZWQ/ICBVc2luZyBmbG9hdGluZyBwb2ludCBmcm9t IFVFRkkvUEkgZW52aXJvbm1lbnQgaXMNCj4gY29tcGxleCBhbmQgcmVxdWlyZXMgaW50ZXJydXB0 cyB0byBiZSBkaXNhYmxlZC9yZXN0b3JlZCBhbmQgcG90ZW50aWFsbHkNCj4gc29tZSBjb250ZXh0 IHNhdmUvcmVzdG9yZSBhcm91bmQgdXNlIG9mIGZsb2F0aW5nIHBvaW50IHJlZ2lzdGVycy4gIElm IHRoZXJlIGlzDQo+IGFueXdheXMgdG8gZWxpbWluYXRlIGFsbCB1c2VzIG9mIGZsb2F0aW5nIHBv aW50LCB0aGF0IHdvdWxkIGJlIG11Y2ggYmV0dGVyLg0KTm8gdGhpcyBpcyBub3QgdXNlZCwgd2ls bCByZW1vdmUgdGhpcy4gSSBtaXNzZWQgdG8gY2hlY2sgaXQuDQpUaGVzZSBDIGZ1bmN0aW9ucyBh cmUgdXNlZCBpbiBib3RoIGphbnNzb24gYW5kIGxpYnJlZGZpc2ggbGlicmFyeS4gV2lsbCByZXZp ZXcgdGhvc2UgYWdhaW4uDQo+IA0KPiA+ICsjZGVmaW5lIG9mZnNldG9mKHR5cGUsbWVtYmVyKSAg ICAgICAgICAgICBPRkZTRVRfT0YodHlwZSxtZW1iZXIpDQo+ID4gKw0KPiA+ICsjZGVmaW5lIEVP RiAoLTEpDQo+ID4gKw0KPiA+ICtleHRlcm4gaW50ICBlcnJubzsNCj4gPiArDQo+ID4gKyNkZWZp bmUgRVJBTkdFICAgMzQgICAgICAgICAgICAgICAgLyogMzQgICBSZXN1bHQgdG9vIGxhcmdlICov DQo+ID4gKw0KPiA+ICsjZW5kaWYNCj4gPiBkaWZmIC0tZ2l0IGEvUmVkZmlzaFBrZy9MaWJyYXJ5 L0NydExpYi9DcnRMaWIuYw0KPiA+IGIvUmVkZmlzaFBrZy9MaWJyYXJ5L0NydExpYi9DcnRMaWIu Yw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMC4uMWZmNDAy M2RiZQ0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9SZWRmaXNoUGtnL0xpYnJhcnkvQ3J0 TGliL0NydExpYi5jDQo+ID4gQEAgLTAsMCArMSw3MDUgQEANCj4gPiArLyoqIEBmaWxlDQo+ID4g KyAgQ1JUIHdyYXBwZXIgZnVuY3Rpb25zIGZvciBzeXN0ZW0gY2FsbC4NCj4gPiArDQo+ID4gKyAg Q29weXJpZ2h0IChjKSAyMDE5LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl ZC48QlI+DQo+ID4gKyAgKEMpIENvcHlyaWdodCAyMDIwIEhld2xldHQgUGFja2FyZCBFbnRlcnBy aXNlIERldmVsb3BtZW50IExQPEJSPg0KPiA+ICsNCj4gPiArICAgIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArI2luY2x1 ZGUgPFVlZmkuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvQ3J0TGliLmg+DQo+ID4gKyNpbmNs dWRlIDxMaWJyYXJ5L01lbW9yeUFsbG9jYXRpb25MaWIuaD4gI2luY2x1ZGUNCj4gPiArPExpYnJh cnkvVWVmaVJ1bnRpbWVTZXJ2aWNlc1RhYmxlTGliLmg+DQo+ID4gKw0KPiA+ICtpbnQgIGVycm5v ID0gMDsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIERldGVybWluZSBpZiBhIHBhcnRpY3VsYXIg Y2hhcmFjdGVyIGlzIGFuIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXINCj4gPiArICBAcmV0dXJuICBS ZXR1cm5zIDEgaWYgYyBpcyBhbiBhbHBoYW51bWVyaWMgY2hhcmFjdGVyLCBvdGhlcndpc2UgcmV0 dXJucyAwLg0KPiA+ICsqKi8NCj4gPiAraW50IGlzYWxudW0gKGludCBjKQ0KPiA+ICt7DQo+ID4g KyAgLy8NCj4gPiArICAvLyA8YWxudW0+IDo6PSBbMC05XSB8IFthLXpdIHwgW0EtWl0NCj4gPiAr ICAvLw0KPiA+ICsgIHJldHVybiAoKCgnMCcgPD0gKGMpKSAmJiAoKGMpIDw9ICc5JykpIHx8DQo+ ID4gKyAgICAgICAgICAoKCdhJyA8PSAoYykpICYmICgoYykgPD0gJ3onKSkgfHwNCj4gPiArICAg ICAgICAgICgoJ0EnIDw9IChjKSkgJiYgKChjKSA8PSAnWicpKSk7IH0NCj4gPiArDQo+ID4gKy8q Kg0KPiA+ICsgIERldGVybWluZSBpZiBhIHBhcnRpY3VsYXIgY2hhcmFjdGVyIGlzIGEgZGlnaXRh bCBjaGFyYWN0ZXINCj4gPiArDQo+ID4gKyAgQHJldHVybiAgUmV0dXJucyAxIGlmIGMgaXMgYW4g ZGlnaXRhbCBjaGFyYWN0ZXIsIG90aGVyd2lzZSByZXR1cm5zIDAuDQo+ID4gKyoqLw0KPiA+ICtp bnQgaXNkY2hhciAoaW50IGMpDQo+ID4gK3sNCj4gPiArICAvLw0KPiA+ICsgIC8vIFswLTldIHwg W2UgKy0uXQ0KPiA+ICsgIC8vDQo+ID4gKyAgcmV0dXJuICgoKCcwJyA8PSAoYykpICYmICgoYykg PD0gJzknKSkgfHwNCj4gPiArICAgICAgICAgIChjID09ICdlJykgfHwgKGMgPT0gJ0UnKSB8fA0K PiA+ICsgICAgICAgICAgKGMgPT0gJysnKSB8fCAoYyA9PSAnLScpIHx8DQo+ID4gKyAgICAgICAg ICAoYyA9PSAnLicpKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgRGV0ZXJtaW5l IGlmIGEgcGFydGljdWxhciBjaGFyYWN0ZXIgaXMgYSBzcGFjZSBjaGFyYWN0ZXINCj4gPiArDQo+ ID4gKyAgQHJldHVybiAgUmV0dXJucyAxIGlmIGMgaXMgYSBzcGFjZSBjaGFyYWN0ZXIgKiovIGlu dCBpc3NwYWNlIChpbnQNCj4gPiArYykgew0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gPHNwYWNlPiA6 Oj0gWyBdDQo+ID4gKyAgLy8NCj4gPiArICByZXR1cm4gKChjKSA9PSAnICcpIHx8ICgoYykgPT0g J1x0JykgfHwgKChjKSA9PSAnXHInKSB8fCAoKGMpID09DQo+ID4gKydcbicpIHx8ICgoYykgPT0g J1x2JykgIHx8ICgoYykgPT0gJ1xmJyk7IH0NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIEFsbG9j YXRlcyBtZW1vcnkgYmxvY2tzDQo+ID4gKyovDQo+ID4gK3ZvaWQgKm1hbGxvYyAoc2l6ZV90IHNp emUpDQo+ID4gK3sNCj4gPiArICByZXR1cm4gQWxsb2NhdGVQb29sICgoVUlOVE4pIHNpemUpOyB9 DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBEZS1hbGxvY2F0ZXMgb3IgZnJlZXMgYSBtZW1vcnkg YmxvY2sgKi8gdm9pZCBmcmVlICh2b2lkICpwdHIpIHsNCj4gPiArICAvLw0KPiA+ICsgIC8vIElu IFN0YW5kYXJkIEMsIGZyZWUoKSBoYW5kbGVzIGEgbnVsbCBwb2ludGVyIGFyZ3VtZW50DQo+ID4g K3RyYW5zcGFyZW50bHkuIFRoaXMNCj4gPiArICAvLyBpcyBub3QgdHJ1ZSBvZiBGcmVlUG9vbCgp IGJlbG93LCBzbyBwcm90ZWN0IGl0Lg0KPiA+ICsgIC8vDQo+ID4gKyAgaWYgKHB0ciAhPSBOVUxM KSB7DQo+ID4gKyAgICBGcmVlUG9vbCAocHRyKTsNCj4gPiArICB9DQo+ID4gK30NCj4gPiArDQo+ ID4gKy8qKg0KPiA+ICsgIE5ldEJTRCBDb21wYXRpYmlsaXR5IEZ1bmN0aW9uIHN0cmR1cCBjcmVh dGVzIGEgZHVwbGljYXRlIGNvcHkgb2YgYSBzdHJpbmcuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4g IFJldHVybnMgdGhlIHBvaW50ZXIgdG8gZHVwbGljYXRlZCBzdHJpbmcuDQo+ID4gKyoqLw0KPiA+ ICtjaGFyICogc3RyZHVwKGNvbnN0IGNoYXIgKnN0cikNCj4gPiArew0KPiA+ICsgIHNpemVfdCBs ZW47DQo+ID4gKyAgY2hhciAqY29weTsNCj4gPiArDQo+ID4gKyAgbGVuID0gc3RybGVuKHN0cikg KyAxOw0KPiA+ICsgIGlmICgoY29weSA9IG1hbGxvYyhsZW4pKSA9PSBOVUxMKQ0KPiA+ICsgICAg cmV0dXJuIChOVUxMKTsNCj4gPiArICBtZW1jcHkoY29weSwgc3RyLCBsZW4pOw0KPiA+ICsgIHJl dHVybiAoY29weSk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKiBUaGUgdG91cHBlciBmdW5jdGlv biBjb252ZXJ0cyBhIGxvd2VyY2FzZSBsZXR0ZXIgdG8gYSBjb3JyZXNwb25kaW5nDQo+ID4gKyAg ICB1cHBlcmNhc2UgbGV0dGVyLg0KPiA+ICsNCj4gPiArICAgIEBwYXJhbVtpbl0gICAgYyAgIFRo ZSBjaGFyYWN0ZXIgdG8gYmUgY29udmVydGVkLg0KPiA+ICsNCj4gPiArICAgIEByZXR1cm4gICBJ ZiB0aGUgYXJndW1lbnQgaXMgYSBjaGFyYWN0ZXIgZm9yIHdoaWNoIGlzbG93ZXIgaXMgdHJ1ZSBh bmQNCj4gPiArICAgICAgICAgICAgICB0aGVyZSBhcmUgb25lIG9yIG1vcmUgY29ycmVzcG9uZGlu ZyBjaGFyYWN0ZXJzLCBhcyBzcGVjaWZpZWQgYnkNCj4gPiArICAgICAgICAgICAgICB0aGUgY3Vy cmVudCBsb2NhbGUsIGZvciB3aGljaCBpc3VwcGVyIGlzIHRydWUsIHRoZSB0b3VwcGVyDQo+ID4g KyAgICAgICAgICAgICAgZnVuY3Rpb24gcmV0dXJucyBvbmUgb2YgdGhlIGNvcnJlc3BvbmRpbmcg Y2hhcmFjdGVycyAoYWx3YXlzIHRoZQ0KPiA+ICsgICAgICAgICAgICAgIHNhbWUgb25lIGZvciBh bnkgZ2l2ZW4gbG9jYWxlKTsgb3RoZXJ3aXNlLCB0aGUgYXJndW1lbnQgaXMNCj4gPiArICAgICAg ICAgICAgICByZXR1cm5lZCB1bmNoYW5nZWQuDQo+ID4gKyoqLw0KPiA+ICtpbnQNCj4gPiArdG91 cHBlcigNCj4gPiArICBJTiAgaW50IGMNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBpZiAoIChj ID49ICdhJykgJiYgKGMgPD0gJ3onKSApIHsNCj4gPiArICAgIGMgPSBjIC0gKCdhJyAtICdBJyk7 DQo+ID4gKyAgfQ0KPiA+ICsgIHJldHVybiBjOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4g PiArICBEaWdpdCB0byBhIHZhbHVlLg0KPiA+ICsNCj4gPiArICBAcmV0dXJuICBSZXR1cm5zIHRo ZSB2YWx1ZSBvZiBkaWdpdC4NCj4gPiArKiovDQo+ID4gK2ludA0KPiA+ICtEaWdpdDJWYWwoIGlu dCBjKQ0KPiA+ICt7DQo+ID4gKyAgaWYgKCgoYyA+PSAnYScpICYmIChjIDw9ICd6JykpIHx8ICgo YyA+PSAnQScpICYmIChjIDw9ICdaJykpKSB7ICAvKiBJZiBjIGlzIG9uZSBvZiBbQS0NCj4gWmEt el0uLi4gKi8NCj4gPiArICAgIGMgPSB0b3VwcGVyKGMpIC0gNzsgICAvLyBBZGp1c3Qgc28gJ0En IGlzICgnOScgKyAxKQ0KPiA+ICsgIH0NCj4gPiArICByZXR1cm4gYyAtICcwJzsgICAvLyBWYWx1 ZSByZXR1cm5lZCBpcyBiZXR3ZWVuIDAgYW5kIDM1LCBpbmNsdXNpdmUuDQo+ID4gK30NCj4gPiAr DQo+ID4gKw0KPiA+ICsvKiogVGhlIHN0cnRvbGwgZnVuY3Rpb24gY29udmVydHMgdGhlIGluaXRp YWwgcG9ydGlvbiBvZiB0aGUgc3RyaW5nIHBvaW50ZWQgdG8NCj4gPiArICAgIGJ5IG5wdHIgdG8g bG9uZyBsb25nIGludCByZXByZXNlbnRhdGlvbi4NCj4gPiArDQo+ID4gKyAgICBTZWUgdGhlIGRl c2NyaXB0aW9uIGZvciBzdHJ0b2wgZm9yIG1vcmUgaW5mb3JtYXRpb24uDQo+ID4gKw0KPiA+ICsg IEByZXR1cm4gICBUaGUgc3RydG9sbCBmdW5jdGlvbiByZXR1cm5zIHRoZSBjb252ZXJ0ZWQgdmFs dWUsIGlmIGFueS4gSWYgbm8NCj4gPiArICAgICAgICAgICAgY29udmVyc2lvbiBjb3VsZCBiZSBw ZXJmb3JtZWQsIHplcm8gaXMgcmV0dXJuZWQuIElmIHRoZSBjb3JyZWN0DQo+ID4gKyAgICAgICAg ICAgIHZhbHVlIGlzIG91dHNpZGUgdGhlIHJhbmdlIG9mIHJlcHJlc2VudGFibGUgdmFsdWVzLCBM TE9OR19NSU4gb3INCj4gPiArICAgICAgICAgICAgTExPTkdfTUFYIGlzIHJldHVybmVkIChhY2Nv cmRpbmcgdG8gdGhlIHNpZ24gb2YgdGhlIHZhbHVlLCBpZiBhbnkpLA0KPiA+ICsgICAgICAgICAg ICBhbmQgdGhlIHZhbHVlIG9mIHRoZSBtYWNybyBFUkFOR0UgaXMgc3RvcmVkIGluIGVycm5vLg0K PiA+ICsqKi8NCj4gPiArbG9uZyBsb25nDQo+ID4gK3N0cnRvbGwoY29uc3QgY2hhciAqIG5wdHIs IGNoYXIgKiogZW5kcHRyLCBpbnQgYmFzZSkgew0KPiA+ICsgIGNvbnN0IGNoYXIgKnBFbmQ7DQo+ ID4gKyAgbG9uZyBsb25nICAgUmVzdWx0ID0gMDsNCj4gPiArICBsb25nIGxvbmcgICBQcmV2aW91 czsNCj4gPiArICBpbnQgICAgICAgICB0ZW1wOw0KPiA+ICsgIEJPT0xFQU4gICAgIE5lZ2F0aXZl ID0gRkFMU0U7DQo+ID4gKw0KPiA+ICsgIHBFbmQgPSBucHRyOw0KPiA+ICsNCj4gPiArICBpZigo YmFzZSA8IDApIHx8IChiYXNlID09IDEpIHx8IChiYXNlID4gMzYpKSB7DQo+ID4gKyAgICBpZihl bmRwdHIgIT0gTlVMTCkgew0KPiA+ICsgICAgKmVuZHB0ciA9IE5VTEw7DQo+ID4gKyAgICB9DQo+ ID4gKyAgICByZXR1cm4gMDsNCj4gPiArICB9DQo+ID4gKyAgLy8gU2tpcCBsZWFkaW5nIHNwYWNl cy4NCj4gPiArICB3aGlsZShpc3NwYWNlKCpucHRyKSkgICArK25wdHI7DQo+ID4gKw0KPiA+ICsg IC8vIFByb2Nlc3MgU3ViamVjdCBzZXF1ZW5jZTogb3B0aW9uYWwgc2lnbiBmb2xsb3dlZCBieSBk aWdpdHMuDQo+ID4gKyAgaWYoKm5wdHIgPT0gJysnKSB7DQo+ID4gKyAgICBOZWdhdGl2ZSA9IEZB TFNFOw0KPiA+ICsgICAgKytucHRyOw0KPiA+ICsgIH0NCj4gPiArICBlbHNlIGlmKCpucHRyID09 ICctJykgew0KPiA+ICsgICAgTmVnYXRpdmUgPSBUUlVFOw0KPiA+ICsgICAgKytucHRyOw0KPiA+ ICsgIH0NCj4gPiArDQo+ID4gKyAgaWYoKm5wdHIgPT0gJzAnKSB7ICAvKiBNaWdodCBiZSBPY3Rh bCBvciBIZXggKi8NCj4gPiArICAgIGlmKHRvdXBwZXIobnB0clsxXSkgPT0gJ1gnKSB7ICAgLyog TG9va3MgbGlrZSBIZXggKi8NCj4gPiArICAgICAgaWYoKGJhc2UgPT0gMCkgfHwgKGJhc2UgPT0g MTYpKSB7DQo+ID4gKyAgICAgICAgbnB0ciArPSAyOyAgLyogU2tpcCB0aGUgIjBYIiAgICAgICov DQo+ID4gKyAgICAgICAgYmFzZSA9IDE2OyAgLyogSW4gY2FzZSBiYXNlIHdhcyAwICovDQo+ID4g KyAgICAgIH0NCj4gPiArICAgIH0NCj4gPiArICAgIGVsc2UgeyAgICAvKiBMb29rcyBsaWtlIE9j dGFsICovDQo+ID4gKyAgICAgIGlmKChiYXNlID09IDApIHx8IChiYXNlID09IDgpKSB7DQo+ID4g KyAgICAgICAgKytucHRyOyAgICAgLyogU2tpcCB0aGUgbGVhZGluZyAiMCIgKi8NCj4gPiArICAg ICAgICBiYXNlID0gODsgICAvKiBJbiBjYXNlIGJhc2Ugd2FzIDAgICAqLw0KPiA+ICsgICAgICB9 DQo+ID4gKyAgICB9DQo+ID4gKyAgfQ0KPiA+ICsgIGlmKGJhc2UgPT0gMCkgeyAgIC8qIElmIHN0 aWxsIHplcm8gdGhlbiBtdXN0IGJlIGRlY2ltYWwgKi8NCj4gPiArICAgIGJhc2UgPSAxMDsNCj4g PiArICB9DQo+ID4gKyAgaWYoKm5wdHIgID09ICcwJykgew0KPiA+ICsgICAgZm9yKCA7ICpucHRy ID09ICcwJzsgKytucHRyKTsgIC8qIFNraXAgYW55IHJlbWFpbmluZyBsZWFkaW5nIHplcm9zICov DQo+ID4gKyAgICBwRW5kID0gbnB0cjsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIHdoaWxlKCBp c2FsbnVtKCpucHRyKSAmJiAoKHRlbXAgPSBEaWdpdDJWYWwoKm5wdHIpKSA8IGJhc2UpKSB7DQo+ ID4gKyAgICBQcmV2aW91cyA9IFJlc3VsdDsNCj4gPiArICAgIFJlc3VsdCA9IE11bHRTNjR4NjQg KFJlc3VsdCwgYmFzZSkgKyAobG9uZyBsb25nIGludCl0ZW1wOw0KPiA+ICsgICAgaWYoIFJlc3Vs dCA8PSBQcmV2aW91cykgeyAgIC8vIERldGVjdCBPdmVyZmxvdw0KPiA+ICsgICAgICBpZihOZWdh dGl2ZSkgew0KPiA+ICsgICAgICAgIFJlc3VsdCA9IExMT05HX01JTjsNCj4gPiArICAgICAgfQ0K PiA+ICsgICAgICBlbHNlIHsNCj4gPiArICAgICAgICBSZXN1bHQgPSBMTE9OR19NQVg7DQo+ID4g KyAgICAgIH0NCj4gPiArICAgICAgTmVnYXRpdmUgPSBGQUxTRTsNCj4gPiArICAgICAgZXJybm8g PSBFUkFOR0U7DQo+ID4gKyAgICAgIGJyZWFrOw0KPiA+ICsgICAgfQ0KPiA+ICsgICAgcEVuZCA9 ICsrbnB0cjsNCj4gPiArICB9DQo+ID4gKyAgaWYoTmVnYXRpdmUpIHsNCj4gPiArICAgIFJlc3Vs dCA9IC1SZXN1bHQ7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAvLyBTYXZlIHBvaW50ZXIgdG8g ZmluYWwgc2VxdWVuY2UNCj4gPiArICBpZihlbmRwdHIgIT0gTlVMTCkgew0KPiA+ICsgICAgKmVu ZHB0ciA9IChjaGFyICopcEVuZDsNCj4gPiArICB9DQo+ID4gKyAgcmV0dXJuIFJlc3VsdDsNCj4g PiArfQ0KPiA+ICsNCj4gPiArLyoqIFRoZSBzdHJ0b2wsIHN0cnRvbGwsIHN0cnRvdWwsIGFuZCBz dHJ0b3VsbCBmdW5jdGlvbnMgY29udmVydCB0aGUgaW5pdGlhbA0KPiA+ICsgICAgcG9ydGlvbiBv ZiB0aGUgc3RyaW5nIHBvaW50ZWQgdG8gYnkgbnB0ciB0byBsb25nIGludCwgbG9uZyBsb25nIGlu dCwNCj4gPiArICAgIHVuc2lnbmVkIGxvbmcgaW50LCBhbmQgdW5zaWduZWQgbG9uZyBsb25nIGlu dCByZXByZXNlbnRhdGlvbiwNCj4gcmVzcGVjdGl2ZWx5Lg0KPiA+ICsgICAgRmlyc3QsIHRoZXkg ZGVjb21wb3NlIHRoZSBpbnB1dCBzdHJpbmcgaW50byB0aHJlZSBwYXJ0czogYW4gaW5pdGlhbCwN Cj4gPiArICAgIHBvc3NpYmx5IGVtcHR5LCBzZXF1ZW5jZSBvZiB3aGl0ZS1zcGFjZSBjaGFyYWN0 ZXJzIChhcyBzcGVjaWZpZWQgYnkNCj4gdGhlDQo+ID4gKyAgICBpc3NwYWNlIGZ1bmN0aW9uKSwg YSBzdWJqZWN0IHNlcXVlbmNlIHJlc2VtYmxpbmcgYW4gaW50ZWdlcg0KPiByZXByZXNlbnRlZCBp bg0KPiA+ICsgICAgc29tZSByYWRpeCBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiBiYXNlLCBh bmQgYSBmaW5hbCBzdHJpbmcgb2Ygb25lIG9yDQo+ID4gKyAgICBtb3JlIHVucmVjb2duaXplZCBj aGFyYWN0ZXJzLCBpbmNsdWRpbmcgdGhlIHRlcm1pbmF0aW5nIG51bGwgY2hhcmFjdGVyDQo+IG9m DQo+ID4gKyAgICB0aGUgaW5wdXQgc3RyaW5nLiBUaGVuLCB0aGV5IGF0dGVtcHQgdG8gY29udmVy dCB0aGUgc3ViamVjdCBzZXF1ZW5jZSB0bw0KPiBhbg0KPiA+ICsgICAgaW50ZWdlciwgYW5kIHJl dHVybiB0aGUgcmVzdWx0Lg0KPiA+ICsNCj4gPiArICAgIElmIHRoZSB2YWx1ZSBvZiBiYXNlIGlz IHplcm8sIHRoZSBleHBlY3RlZCBmb3JtIG9mIHRoZSBzdWJqZWN0IHNlcXVlbmNlDQo+IGlzDQo+ ID4gKyAgICB0aGF0IG9mIGFuIGludGVnZXIgY29uc3RhbnQsIG9wdGlvbmFsbHkgcHJlY2VkZWQN Cj4gPiArICAgIGJ5IGEgcGx1cyBvciBtaW51cyBzaWduLCBidXQgbm90IGluY2x1ZGluZyBhbiBp bnRlZ2VyIHN1ZmZpeC4gSWYgdGhlIHZhbHVlDQo+ID4gKyAgICBvZiBiYXNlIGlzIGJldHdlZW4g MiBhbmQgMzYgKGluY2x1c2l2ZSksIHRoZSBleHBlY3RlZCBmb3JtIG9mIHRoZQ0KPiBzdWJqZWN0 DQo+ID4gKyAgICBzZXF1ZW5jZSBpcyBhIHNlcXVlbmNlIG9mIGxldHRlcnMgYW5kIGRpZ2l0cyBy ZXByZXNlbnRpbmcgYW4gaW50ZWdlcg0KPiB3aXRoDQo+ID4gKyAgICB0aGUgcmFkaXggc3BlY2lm aWVkIGJ5IGJhc2UsIG9wdGlvbmFsbHkgcHJlY2VkZWQgYnkgYSBwbHVzIG9yIG1pbnVzIHNpZ24s DQo+ID4gKyAgICBidXQgbm90IGluY2x1ZGluZyBhbiBpbnRlZ2VyIHN1ZmZpeC4gVGhlIGxldHRl cnMgZnJvbSBhIChvciBBKSB0aHJvdWdoIHoNCj4gPiArICAgIChvciBaKSBhcmUgYXNjcmliZWQg dGhlIHZhbHVlcyAxMCB0aHJvdWdoIDM1OyBvbmx5IGxldHRlcnMgYW5kIGRpZ2l0cw0KPiB3aG9z ZQ0KPiA+ICsgICAgYXNjcmliZWQgdmFsdWVzIGFyZSBsZXNzIHRoYW4gdGhhdCBvZiBiYXNlIGFy ZSBwZXJtaXR0ZWQuIElmIHRoZSB2YWx1ZSBvZg0KPiA+ICsgICAgYmFzZSBpcyAxNiwgdGhlIGNo YXJhY3RlcnMgMHggb3IgMFggbWF5IG9wdGlvbmFsbHkgcHJlY2VkZSB0aGUgc2VxdWVuY2UNCj4g b2YNCj4gPiArICAgIGxldHRlcnMgYW5kIGRpZ2l0cywgZm9sbG93aW5nIHRoZSBzaWduIGlmIHBy ZXNlbnQuDQo+ID4gKw0KPiA+ICsgICAgVGhlIHN1YmplY3Qgc2VxdWVuY2UgaXMgZGVmaW5lZCBh cyB0aGUgbG9uZ2VzdCBpbml0aWFsIHN1YnNlcXVlbmNlIG9mDQo+IHRoZQ0KPiA+ICsgICAgaW5w dXQgc3RyaW5nLCBzdGFydGluZyB3aXRoIHRoZSBmaXJzdCBub24td2hpdGUtc3BhY2UgY2hhcmFj dGVyLCB0aGF0IGlzIG9mDQo+ID4gKyAgICB0aGUgZXhwZWN0ZWQgZm9ybS4gVGhlIHN1YmplY3Qg c2VxdWVuY2UgY29udGFpbnMgbm8gY2hhcmFjdGVycyBpZiB0aGUNCj4gaW5wdXQNCj4gPiArICAg IHN0cmluZyBpcyBlbXB0eSBvciBjb25zaXN0cyBlbnRpcmVseSBvZiB3aGl0ZSBzcGFjZSwgb3Ig aWYgdGhlIGZpcnN0DQo+ID4gKyAgICBub24td2hpdGUtc3BhY2UgY2hhcmFjdGVyIGlzIG90aGVy IHRoYW4gYSBzaWduIG9yIGEgcGVybWlzc2libGUgbGV0dGVyIG9yDQo+IGRpZ2l0Lg0KPiA+ICsN Cj4gPiArICAgIElmIHRoZSBzdWJqZWN0IHNlcXVlbmNlIGhhcyB0aGUgZXhwZWN0ZWQgZm9ybSBh bmQgdGhlIHZhbHVlIG9mIGJhc2UgaXMNCj4gPiArICAgIHplcm8sIHRoZSBzZXF1ZW5jZSBvZiBj aGFyYWN0ZXJzIHN0YXJ0aW5nIHdpdGggdGhlIGZpcnN0IGRpZ2l0IGlzDQo+ID4gKyAgICBpbnRl cnByZXRlZCBhcyBhbiBpbnRlZ2VyIGNvbnN0YW50LiBJZiB0aGUgc3ViamVjdCBzZXF1ZW5jZSBo YXMgdGhlDQo+ID4gKyAgICBleHBlY3RlZCBmb3JtIGFuZCB0aGUgdmFsdWUgb2YgYmFzZSBpcyBi ZXR3ZWVuIDIgYW5kIDM2LCBpdCBpcyB1c2VkIGFzDQo+IHRoZQ0KPiA+ICsgICAgYmFzZSBmb3Ig Y29udmVyc2lvbiwgYXNjcmliaW5nIHRvIGVhY2ggbGV0dGVyIGl0cyB2YWx1ZSBhcyBnaXZlbiBh Ym92ZS4gSWYNCj4gPiArICAgIHRoZSBzdWJqZWN0IHNlcXVlbmNlIGJlZ2lucyB3aXRoIGEgbWlu dXMgc2lnbiwgdGhlIHZhbHVlIHJlc3VsdGluZyBmcm9tDQo+IHRoZQ0KPiA+ICsgICAgY29udmVy c2lvbiBpcyBuZWdhdGVkIChpbiB0aGUgcmV0dXJuIHR5cGUpLiBBIHBvaW50ZXIgdG8gdGhlIGZp bmFsIHN0cmluZw0KPiA+ICsgICAgaXMgc3RvcmVkIGluIHRoZSBvYmplY3QgcG9pbnRlZCB0byBi eSBlbmRwdHIsIHByb3ZpZGVkIHRoYXQgZW5kcHRyIGlzDQo+ID4gKyAgICBub3QgYSBudWxsIHBv aW50ZXIuDQo+ID4gKw0KPiA+ICsgICAgSW4gb3RoZXIgdGhhbiB0aGUgIkMiIGxvY2FsZSwgYWRk aXRpb25hbCBsb2NhbGUtc3BlY2lmaWMgc3ViamVjdCBzZXF1ZW5jZQ0KPiA+ICsgICAgZm9ybXMg bWF5IGJlIGFjY2VwdGVkLg0KPiA+ICsNCj4gPiArICAgIElmIHRoZSBzdWJqZWN0IHNlcXVlbmNl IGlzIGVtcHR5IG9yIGRvZXMgbm90IGhhdmUgdGhlIGV4cGVjdGVkIGZvcm0sDQo+IG5vDQo+ID4g KyAgICBjb252ZXJzaW9uIGlzIHBlcmZvcm1lZDsgdGhlIHZhbHVlIG9mIG5wdHIgaXMgc3RvcmVk IGluIHRoZSBvYmplY3QNCj4gcG9pbnRlZA0KPiA+ICsgICAgdG8gYnkgZW5kcHRyLCBwcm92aWRl ZCB0aGF0IGVuZHB0ciBpcyBub3QgYSBudWxsIHBvaW50ZXIuDQo+ID4gKw0KPiA+ICsgIEByZXR1 cm4gICBUaGUgc3RydG9sLCBzdHJ0b2xsLCBzdHJ0b3VsLCBhbmQgc3RydG91bGwgZnVuY3Rpb25z IHJldHVybiB0aGUNCj4gPiArICAgICAgICAgICAgY29udmVydGVkIHZhbHVlLCBpZiBhbnkuIElm IG5vIGNvbnZlcnNpb24gY291bGQgYmUgcGVyZm9ybWVkLCB6ZXJvDQo+ID4gKyAgICAgICAgICAg IGlzIHJldHVybmVkLiBJZiB0aGUgY29ycmVjdCB2YWx1ZSBpcyBvdXRzaWRlIHRoZSByYW5nZSBv Zg0KPiA+ICsgICAgICAgICAgICByZXByZXNlbnRhYmxlIHZhbHVlcywgTE9OR19NSU4sIExPTkdf TUFYLCBMTE9OR19NSU4sDQo+IExMT05HX01BWCwNCj4gPiArICAgICAgICAgICAgVUxPTkdfTUFY LCBvciBVTExPTkdfTUFYIGlzIHJldHVybmVkIChhY2NvcmRpbmcgdG8gdGhlIHJldHVybg0KPiB0 eXBlDQo+ID4gKyAgICAgICAgICAgIGFuZCBzaWduIG9mIHRoZSB2YWx1ZSwgaWYgYW55KSwgYW5k IHRoZSB2YWx1ZSBvZiB0aGUgbWFjcm8gRVJBTkdFDQo+ID4gKyAgICAgICAgICAgIGlzIHN0b3Jl ZCBpbiBlcnJuby4NCj4gPiArKiovDQo+ID4gK2xvbmcNCj4gPiArc3RydG9sKGNvbnN0IGNoYXIg KiBucHRyLCBjaGFyICoqIGVuZHB0ciwgaW50IGJhc2UpIHsNCj4gPiArICBjb25zdCBjaGFyICpw RW5kOw0KPiA+ICsgIGxvbmcgICAgICAgIFJlc3VsdCA9IDA7DQo+ID4gKyAgbG9uZyAgICAgICAg UHJldmlvdXM7DQo+ID4gKyAgaW50ICAgICAgICAgdGVtcDsNCj4gPiArICBCT09MRUFOICAgICBO ZWdhdGl2ZSA9IEZBTFNFOw0KPiA+ICsNCj4gPiArICBwRW5kID0gbnB0cjsNCj4gPiArDQo+ID4g KyAgaWYoKGJhc2UgPCAwKSB8fCAoYmFzZSA9PSAxKSB8fCAoYmFzZSA+IDM2KSkgew0KPiA+ICsg ICAgaWYoZW5kcHRyICE9IE5VTEwpIHsNCj4gPiArICAgICplbmRwdHIgPSBOVUxMOw0KPiA+ICsg ICAgfQ0KPiA+ICsgICAgcmV0dXJuIDA7DQo+ID4gKyAgfQ0KPiA+ICsgIC8vIFNraXAgbGVhZGlu ZyBzcGFjZXMuDQo+ID4gKyAgd2hpbGUoaXNzcGFjZSgqbnB0cikpICAgKytucHRyOw0KPiA+ICsN Cj4gPiArICAvLyBQcm9jZXNzIFN1YmplY3Qgc2VxdWVuY2U6IG9wdGlvbmFsIHNpZ24gZm9sbG93 ZWQgYnkgZGlnaXRzLg0KPiA+ICsgIGlmKCpucHRyID09ICcrJykgew0KPiA+ICsgICAgTmVnYXRp dmUgPSBGQUxTRTsNCj4gPiArICAgICsrbnB0cjsNCj4gPiArICB9DQo+ID4gKyAgZWxzZSBpZigq bnB0ciA9PSAnLScpIHsNCj4gPiArICAgIE5lZ2F0aXZlID0gVFJVRTsNCj4gPiArICAgICsrbnB0 cjsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIGlmKCpucHRyID09ICcwJykgeyAgLyogTWlnaHQg YmUgT2N0YWwgb3IgSGV4ICovDQo+ID4gKyAgICBpZih0b3VwcGVyKG5wdHJbMV0pID09ICdYJykg eyAgIC8qIExvb2tzIGxpa2UgSGV4ICovDQo+ID4gKyAgICAgIGlmKChiYXNlID09IDApIHx8IChi YXNlID09IDE2KSkgew0KPiA+ICsgICAgICAgIG5wdHIgKz0gMjsgIC8qIFNraXAgdGhlICIwWCIg ICAgICAqLw0KPiA+ICsgICAgICAgIGJhc2UgPSAxNjsgIC8qIEluIGNhc2UgYmFzZSB3YXMgMCAq Lw0KPiA+ICsgICAgICB9DQo+ID4gKyAgICB9DQo+ID4gKyAgICBlbHNlIHsgICAgLyogTG9va3Mg bGlrZSBPY3RhbCAqLw0KPiA+ICsgICAgICBpZigoYmFzZSA9PSAwKSB8fCAoYmFzZSA9PSA4KSkg ew0KPiA+ICsgICAgICAgICsrbnB0cjsgICAgIC8qIFNraXAgdGhlIGxlYWRpbmcgIjAiICovDQo+ ID4gKyAgICAgICAgYmFzZSA9IDg7ICAgLyogSW4gY2FzZSBiYXNlIHdhcyAwICAgKi8NCj4gPiAr ICAgICAgfQ0KPiA+ICsgICAgfQ0KPiA+ICsgIH0NCj4gPiArICBpZihiYXNlID09IDApIHsgICAv KiBJZiBzdGlsbCB6ZXJvIHRoZW4gbXVzdCBiZSBkZWNpbWFsICovDQo+ID4gKyAgICBiYXNlID0g MTA7DQo+ID4gKyAgfQ0KPiA+ICsgIGlmKCpucHRyICA9PSAnMCcpIHsNCj4gPiArICAgIGZvcigg OyAqbnB0ciA9PSAnMCc7ICsrbnB0cik7ICAvKiBTa2lwIGFueSByZW1haW5pbmcgbGVhZGluZyB6 ZXJvcyAqLw0KPiA+ICsgICAgcEVuZCA9IG5wdHI7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICB3 aGlsZSggaXNhbG51bSgqbnB0cikgJiYgKCh0ZW1wID0gRGlnaXQyVmFsKCpucHRyKSkgPCBiYXNl KSkgew0KPiA+ICsgICAgUHJldmlvdXMgPSBSZXN1bHQ7DQo+ID4gKyAgICBSZXN1bHQgPSAoUmVz dWx0ICogYmFzZSkgKyAobG9uZyBpbnQpdGVtcDsNCj4gPiArICAgIGlmKCBSZXN1bHQgPD0gUHJl dmlvdXMpIHsgICAvLyBEZXRlY3QgT3ZlcmZsb3cNCj4gPiArICAgICAgaWYoTmVnYXRpdmUpIHsN Cj4gPiArICAgICAgICBSZXN1bHQgPSBMT05HX01JTjsNCj4gPiArICAgICAgfQ0KPiA+ICsgICAg ICBlbHNlIHsNCj4gPiArICAgICAgICBSZXN1bHQgPSBMT05HX01BWDsNCj4gPiArICAgICAgfQ0K PiA+ICsgICAgICBOZWdhdGl2ZSA9IEZBTFNFOw0KPiA+ICsgICAgICBlcnJubyA9IEVSQU5HRTsN Cj4gPiArICAgICAgYnJlYWs7DQo+ID4gKyAgICB9DQo+ID4gKyAgICBwRW5kID0gKytucHRyOw0K PiA+ICsgIH0NCj4gPiArICBpZihOZWdhdGl2ZSkgew0KPiA+ICsgICAgUmVzdWx0ID0gLVJlc3Vs dDsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIC8vIFNhdmUgcG9pbnRlciB0byBmaW5hbCBzZXF1 ZW5jZQ0KPiA+ICsgIGlmKGVuZHB0ciAhPSBOVUxMKSB7DQo+ID4gKyAgICAqZW5kcHRyID0gKGNo YXIgKilwRW5kOw0KPiA+ICsgIH0NCj4gPiArICByZXR1cm4gUmVzdWx0Ow0KPiA+ICt9DQo+ID4g Kw0KPiA+ICsvKiogVGhlIHN0cnRvdWxsIGZ1bmN0aW9uIGNvbnZlcnRzIHRoZSBpbml0aWFsIHBv cnRpb24gb2YgdGhlIHN0cmluZyBwb2ludGVkDQo+IHRvDQo+ID4gKyAgICBieSBucHRyIHRvIHVu c2lnbmVkIGxvbmcgbG9uZyBpbnQgcmVwcmVzZW50YXRpb24uDQo+ID4gKw0KPiA+ICsgICAgU2Vl IHRoZSBkZXNjcmlwdGlvbiBmb3Igc3RydG9sIGZvciBtb3JlIGluZm9ybWF0aW9uLg0KPiA+ICsN Cj4gPiArICBAcmV0dXJuICAgVGhlIHN0cnRvdWxsIGZ1bmN0aW9uIHJldHVybnMgdGhlIGNvbnZl cnRlZCB2YWx1ZSwgaWYgYW55LiBJZiBubw0KPiA+ICsgICAgICAgICAgICBjb252ZXJzaW9uIGNv dWxkIGJlIHBlcmZvcm1lZCwgemVybyBpcyByZXR1cm5lZC4gSWYgdGhlIGNvcnJlY3QNCj4gPiAr ICAgICAgICAgICAgdmFsdWUgaXMgb3V0c2lkZSB0aGUgcmFuZ2Ugb2YgcmVwcmVzZW50YWJsZSB2 YWx1ZXMsIFVMTE9OR19NQVggaXMNCj4gPiArICAgICAgICAgICAgcmV0dXJuZWQgYW5kIHRoZSB2 YWx1ZSBvZiB0aGUgbWFjcm8gRVJBTkdFIGlzIHN0b3JlZCBpbiBlcnJuby4NCj4gPiArKiovDQo+ ID4gK3Vuc2lnbmVkIGxvbmcgbG9uZw0KPiA+ICtzdHJ0b3VsbChjb25zdCBjaGFyICogbnB0ciwg Y2hhciAqKiBlbmRwdHIsIGludCBiYXNlKSB7DQo+ID4gKyAgY29uc3QgY2hhciAgICAgICAgICAg KnBFbmQ7DQo+ID4gKyAgdW5zaWduZWQgbG9uZyBsb25nICAgIFJlc3VsdCA9IDA7DQo+ID4gKyAg dW5zaWduZWQgbG9uZyBsb25nICAgIFByZXZpb3VzOw0KPiA+ICsgIGludCAgICAgICAgICAgICAg ICAgICB0ZW1wOw0KPiA+ICsNCj4gPiArICBwRW5kID0gbnB0cjsNCj4gPiArDQo+ID4gKyAgaWYo KGJhc2UgPCAwKSB8fCAoYmFzZSA9PSAxKSB8fCAoYmFzZSA+IDM2KSkgew0KPiA+ICsgICAgaWYo ZW5kcHRyICE9IE5VTEwpIHsNCj4gPiArICAgICplbmRwdHIgPSBOVUxMOw0KPiA+ICsgICAgfQ0K PiA+ICsgICAgcmV0dXJuIDA7DQo+ID4gKyAgfQ0KPiA+ICsgIC8vIFNraXAgbGVhZGluZyBzcGFj ZXMuDQo+ID4gKyAgd2hpbGUoaXNzcGFjZSgqbnB0cikpICAgKytucHRyOw0KPiA+ICsNCj4gPiAr ICAvLyBQcm9jZXNzIFN1YmplY3Qgc2VxdWVuY2U6IG9wdGlvbmFsICsgc2lnbiBmb2xsb3dlZCBi eSBkaWdpdHMuDQo+ID4gKyAgaWYoKm5wdHIgPT0gJysnKSB7DQo+ID4gKyAgICArK25wdHI7DQo+ ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBpZigqbnB0ciA9PSAnMCcpIHsgIC8qIE1pZ2h0IGJlIE9j dGFsIG9yIEhleCAqLw0KPiA+ICsgICAgaWYodG91cHBlcihucHRyWzFdKSA9PSAnWCcpIHsgICAv KiBMb29rcyBsaWtlIEhleCAqLw0KPiA+ICsgICAgICBpZigoYmFzZSA9PSAwKSB8fCAoYmFzZSA9 PSAxNikpIHsNCj4gPiArICAgICAgICBucHRyICs9IDI7ICAvKiBTa2lwIHRoZSAiMFgiICAgICAg Ki8NCj4gPiArICAgICAgICBiYXNlID0gMTY7ICAvKiBJbiBjYXNlIGJhc2Ugd2FzIDAgKi8NCj4g PiArICAgICAgfQ0KPiA+ICsgICAgfQ0KPiA+ICsgICAgZWxzZSB7ICAgIC8qIExvb2tzIGxpa2Ug T2N0YWwgKi8NCj4gPiArICAgICAgaWYoKGJhc2UgPT0gMCkgfHwgKGJhc2UgPT0gOCkpIHsNCj4g PiArICAgICAgICArK25wdHI7ICAgICAvKiBTa2lwIHRoZSBsZWFkaW5nICIwIiAqLw0KPiA+ICsg ICAgICAgIGJhc2UgPSA4OyAgIC8qIEluIGNhc2UgYmFzZSB3YXMgMCAgICovDQo+ID4gKyAgICAg IH0NCj4gPiArICAgIH0NCj4gPiArICB9DQo+ID4gKyAgaWYoYmFzZSA9PSAwKSB7ICAgLyogSWYg c3RpbGwgemVybyB0aGVuIG11c3QgYmUgZGVjaW1hbCAqLw0KPiA+ICsgICAgYmFzZSA9IDEwOw0K PiA+ICsgIH0NCj4gPiArICBpZigqbnB0ciAgPT0gJzAnKSB7DQo+ID4gKyAgICBmb3IoIDsgKm5w dHIgPT0gJzAnOyArK25wdHIpOyAgLyogU2tpcCBhbnkgcmVtYWluaW5nIGxlYWRpbmcgemVyb3Mg Ki8NCj4gPiArICAgIHBFbmQgPSBucHRyOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgd2hpbGUo IGlzYWxudW0oKm5wdHIpICYmICgodGVtcCA9IERpZ2l0MlZhbCgqbnB0cikpIDwgYmFzZSkpIHsN Cj4gPiArICAgIFByZXZpb3VzID0gUmVzdWx0Ow0KPiA+ICsgICAgUmVzdWx0ID0gRGl2VTY0eDMy IChSZXN1bHQsIGJhc2UpICsgKHVuc2lnbmVkIGxvbmcgbG9uZyl0ZW1wOw0KPiA+ICsgICAgaWYo IFJlc3VsdCA8IFByZXZpb3VzKSAgeyAgIC8vIElmIHdlIG92ZXJmbG93ZWQNCj4gPiArICAgICAg UmVzdWx0ID0gVUxMT05HX01BWDsNCj4gPiArICAgICAgZXJybm8gPSBFUkFOR0U7DQo+ID4gKyAg ICAgIGJyZWFrOw0KPiA+ICsgICAgfQ0KPiA+ICsgICAgcEVuZCA9ICsrbnB0cjsNCj4gPiArICB9 DQo+ID4gKw0KPiA+ICsgIC8vIFNhdmUgcG9pbnRlciB0byBmaW5hbCBzZXF1ZW5jZQ0KPiA+ICsg IGlmKGVuZHB0ciAhPSBOVUxMKSB7DQo+ID4gKyAgICAqZW5kcHRyID0gKGNoYXIgKilwRW5kOw0K PiA+ICsgIH0NCj4gPiArICByZXR1cm4gUmVzdWx0Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioN Cj4gPiArICBlZGsyIEphbnNzb24gcG9ydCBkb2VzIG5vdCBzdXBwb3J0IGRvdWJsZXMsIHNpbXBs eSByZXR1cm4gMC4NCj4gPiArDQo+ID4gKyAgVGhlc2UgY29udmVyc2lvbiBmdW5jdGlvbnMgY29u dmVydCB0aGUgaW5pdGlhbCBwb3J0aW9uIG9mIHRoZQ0KPiA+ICsgc3RyaW5nICBwb2ludGVkIHRv IGJ5IG5wdHIgdG8gZG91YmxlLCBmbG9hdCwgYW5kIGxvbmcgZG91YmxlDQo+ID4gKyByZXByZXNl bnRhdGlvbiwgIHJlc3BlY3RpdmVseS4NCj4gPiArDQo+ID4gKyAgVGhlIHN0cnRvZCgpLCBzdHJ0 b2YoKSwgYW5kIHN0cnRvbGQoKSBmdW5jdGlvbnMgcmV0dXJuIHRoZQ0KPiA+ICsgY29udmVydGVk ICB2YWx1ZSwgaWYgYW55Lg0KPiA+ICsNCj4gPiArICBJZiBlbmRwdHIgaXMgbm90IE5VTEwsIGEg cG9pbnRlciB0byB0aGUgY2hhcmFjdGVyIGFmdGVyIHRoZSBsYXN0DQo+ID4gKyBjaGFyYWMtICB0 ZXIgdXNlZCBpbiB0aGUgY29udmVyc2lvbiBpcyBzdG9yZWQgaW4gdGhlIGxvY2F0aW9uDQo+ID4g KyByZWZlcmVuY2VkIGJ5ICBlbmRwdHIuDQo+ID4gKw0KPiA+ICsgIElmIG5vIGNvbnZlcnNpb24g aXMgcGVyZm9ybWVkLCB6ZXJvIGlzIHJldHVybmVkIGFuZCB0aGUgdmFsdWUgb2YNCj4gPiArIG5w dHIgaXMgIHN0b3JlZCBpbiB0aGUgbG9jYXRpb24gcmVmZXJlbmNlZCBieSBlbmRwdHIuDQo+ID4g Kw0KPiA+ICsgIElmIHRoZSBjb3JyZWN0IHZhbHVlIHdvdWxkIGNhdXNlIG92ZXJmbG93LCBwbHVz IG9yIG1pbnVzIEhVR0VfVkFMLA0KPiA+ICsgSFVHRV9WQUxGLCBvciBIVUdFX1ZBTEwgaXMgcmV0 dXJuZWQgKGFjY29yZGluZyB0byB0aGUgc2lnbiBhbmQgdHlwZQ0KPiA+ICsgb2YgIHRoZSByZXR1 cm4gdmFsdWUpLCBhbmQgRVJBTkdFIGlzIHN0b3JlZCBpbiBlcnJuby4gIElmIHRoZQ0KPiA+ICsg Y29ycmVjdCB2YWx1ZSAgd291bGQgY2F1c2UgdW5kZXJmbG93LCB6ZXJvIGlzIHJldHVybmVkIGFu ZCBFUkFOR0UgaXMNCj4gc3RvcmVkIGluIGVycm5vLg0KPiA+ICsNCj4gPiArICBAcmV0dXJuICBS ZXR1cm4gMC4NCj4gPiArKiovDQo+ID4gK2RvdWJsZQ0KPiA+ICtzdHJ0b2QgKGNvbnN0IGNoYXIg KiBfX3Jlc3RyaWN0IG5wdHIsIGNoYXIgKiogX19yZXN0cmljdCBlbmRwdHIpIHsNCj4gPiArICAg IGlmKGVuZHB0cikNCj4gPiArICAgICAgKmVuZHB0ciA9IChjaGFyICopKG5wdHIgKyBzdHJsZW4o bnB0cikpOw0KPiA+ICsNCj4gPiArICAgIHJldHVybiAoZG91YmxlKTA7DQo+ID4gK30NCj4gDQo+ IEV2ZW4gdGhlIHVzZSBvZiB0aGUgdHlwZSBkb3VibGUgdG8gcmV0dXJuIDAgaGFzIGlzc3VlcyBp biBVRUZJL1BJLg0KPiBDYW4geW91IGZpZ3VyZSBvdXQgaG93IHRvIHJlbW92ZSB0aGUgdXNlIG9m IHN0cnRvZCgpIGJ5IGphbnNzb24/DQpUaGVyZSBpcyBubyBvcHRpb24gZm9yIGphbnNzb24gdG8g cmVtb3ZlIHN0cnRvZCwgdGhhdCBpcyB0b28gc3BlY2lmaWMuIGRvdWJsZSB0eXBlIGlzIHVzZWQg aW4gSlNPTiBhbmQgaXQgaXMgYSBkZWZhdWx0IHN1cHBvcnRlZCBudW1iZXIuDQpUaGUgaW1wbGVt ZW50YXRpb24gd2UgaGF2ZSBub3cgaXMgdG8gcmV0dXJuIDAgd2hpY2ggaXMgdGhlIHNhbWUgYXMg dGhlIGRlZmluaXRpb24gb2YgSFVHRV9WQUwgaW4gQ3J0TGliLmguIEhVR0VfVkFMIGlzIHVzZWQg aW4gamFubnNvbiB0byBjaGVjayBpZiB0aGUgdmFsdWUgaXMgb3ZlcmZsb3cuIFNldCBIVUdFX1ZB TCB0byAwIGxlYWRzIGpzb25wX3N0cnRvZCB0byByZXR1cm4gLTEgdG8gdGhlIGNhbGxlci4NCkkg dGhpbmsgd2UgY2FuIGdpdmUgc3RydG9kIGFuIEFTU0VSVCB0byBub3QgcmV0dXJuaW5nIGRvdWJs ZSBhbmQgb3V0cHV0IHRoZSBlcnJvciBtZXNzYWdlLg0KDQpCdXQgd2UgbWF5IG5lZWQgdG8gZml4 IHRoZSBwcm9ibGVtIG9mIHVzaW5nIGZsb2F0aW5nIHBvaW50IG9uIGVkazIgbGF0ZXIuDQoNCj4g DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBBbGxvY2F0ZSBhbmQgemVyby1pbml0aWFsaXplIGFy cmF5Lg0KPiA+ICsqKi8NCj4gPiArdm9pZCAqDQo+ID4gK2NhbGxvYyhzaXplX3QgTnVtLCBzaXpl X3QgU2l6ZSkNCj4gPiArew0KPiA+ICsgIHZvaWQgICAgICAgKlJldFZhbDsNCj4gPiArICBzaXpl X3QgICAgICBOdW1TaXplOw0KPiA+ICsNCj4gPiArICBOdW1TaXplID0gTnVtICogU2l6ZTsNCj4g PiArICBSZXRWYWwgID0gTlVMTDsNCj4gPiArICBpZiAoTnVtU2l6ZSAhPSAwKSB7DQo+ID4gKyAg UmV0VmFsID0gbWFsbG9jKE51bVNpemUpOw0KPiA+ICsgIGlmKCBSZXRWYWwgIT0gTlVMTCkgew0K PiA+ICsgICAgKFZPSUQpWmVyb01lbSggUmV0VmFsLCBOdW1TaXplKTsNCj4gPiArICB9DQo+ID4g KyAgfQ0KPiA+ICsgIERFQlVHKChERUJVR19QT09MLCAiMHglcCA9IGNhbGxvYyglZCwgJWQpXG4i LCBSZXRWYWwsIE51bSwgU2l6ZSkpOw0KPiA+ICsNCj4gPiArICByZXR1cm4gUmV0VmFsOw0KPiA+ ICt9DQo+ID4gKw0KPiA+ICsvLw0KPiA+ICsvLyAgVGhlIGFycmF5cyBnaXZlIHRoZSBjdW11bGF0 aXZlIG51bWJlciBvZiBkYXlzIHVwIHRvIHRoZSBmaXJzdCBvZg0KPiA+ICt0aGUgLy8gIG1vbnRo IG51bWJlciB1c2VkIGFzIHRoZSBpbmRleCAoMSAtPiAxMikgZm9yIHJlZ3VsYXIgYW5kIGxlYXAN Cj4geWVhcnMuDQo+ID4gKy8vICBUaGUgdmFsdWUgYXQgaW5kZXggMTMgaXMgZm9yIHRoZSB3aG9s ZSB5ZWFyLg0KPiA+ICsvLw0KPiA+ICtVSU5UTiBDdW11bGF0aXZlRGF5c1syXVsxNF0gPSB7DQo+ ID4gKyAgew0KPiA+ICsgICAgMCwNCj4gPiArICAgIDAsDQo+ID4gKyAgICAzMSwNCj4gPiArICAg IDMxICsgMjgsDQo+ID4gKyAgICAzMSArIDI4ICsgMzEsDQo+ID4gKyAgICAzMSArIDI4ICsgMzEg KyAzMCwNCj4gPiArICAgIDMxICsgMjggKyAzMSArIDMwICsgMzEsDQo+ID4gKyAgICAzMSArIDI4 ICsgMzEgKyAzMCArIDMxICsgMzAsDQo+ID4gKyAgICAzMSArIDI4ICsgMzEgKyAzMCArIDMxICsg MzAgKyAzMSwNCj4gPiArICAgIDMxICsgMjggKyAzMSArIDMwICsgMzEgKyAzMCArIDMxICsgMzEs DQo+ID4gKyAgICAzMSArIDI4ICsgMzEgKyAzMCArIDMxICsgMzAgKyAzMSArIDMxICsgMzAsDQo+ ID4gKyAgICAzMSArIDI4ICsgMzEgKyAzMCArIDMxICsgMzAgKyAzMSArIDMxICsgMzAgKyAzMSwN Cj4gPiArICAgIDMxICsgMjggKyAzMSArIDMwICsgMzEgKyAzMCArIDMxICsgMzEgKyAzMCArIDMx ICsgMzAsDQo+ID4gKyAgICAzMSArIDI4ICsgMzEgKyAzMCArIDMxICsgMzAgKyAzMSArIDMxICsg MzAgKyAzMSArIDMwICsgMzENCj4gPiArICB9LA0KPiA+ICsgIHsNCj4gPiArICAgIDAsDQo+ID4g KyAgICAwLA0KPiA+ICsgICAgMzEsDQo+ID4gKyAgICAzMSArIDI5LA0KPiA+ICsgICAgMzEgKyAy OSArIDMxLA0KPiA+ICsgICAgMzEgKyAyOSArIDMxICsgMzAsDQo+ID4gKyAgICAzMSArIDI5ICsg MzEgKyAzMCArIDMxLA0KPiA+ICsgICAgMzEgKyAyOSArIDMxICsgMzAgKyAzMSArIDMwLA0KPiA+ ICsgICAgMzEgKyAyOSArIDMxICsgMzAgKyAzMSArIDMwICsgMzEsDQo+ID4gKyAgICAzMSArIDI5 ICsgMzEgKyAzMCArIDMxICsgMzAgKyAzMSArIDMxLA0KPiA+ICsgICAgMzEgKyAyOSArIDMxICsg MzAgKyAzMSArIDMwICsgMzEgKyAzMSArIDMwLA0KPiA+ICsgICAgMzEgKyAyOSArIDMxICsgMzAg KyAzMSArIDMwICsgMzEgKyAzMSArIDMwICsgMzEsDQo+ID4gKyAgICAzMSArIDI5ICsgMzEgKyAz MCArIDMxICsgMzAgKyAzMSArIDMxICsgMzAgKyAzMSArIDMwLA0KPiA+ICsgICAgMzEgKyAyOSAr IDMxICsgMzAgKyAzMSArIDMwICsgMzEgKyAzMSArIDMwICsgMzEgKyAzMCArIDMxDQo+ID4gKyAg fQ0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArI2RlZmluZSBJc0xlYXAoeSkgICAoKCh5KSAlIDQpID09 IDAgJiYgKCgoeSkgJSAxMDApICE9IDAgfHwgKCh5KSAlIDQwMCkgPT0gMCkpDQo+ID4gKyNkZWZp bmUgU0VDU1BFUk1JTiAgKDYwKQ0KPiA+ICsjZGVmaW5lIFNFQ1NQRVJIT1VSICg2MCAqIDYwKQ0K PiA+ICsjZGVmaW5lIFNFQ1NQRVJEQVkgICgyNCAqIFNFQ1NQRVJIT1VSKQ0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gKyAgR2V0IHRoZSBzeXN0ZW0gdGltZSBhcyBzZWNvbmRzIGVsYXBzZWQgc2luY2Ug bWlkbmlnaHQsIEphbnVhcnkgMSwgMTk3MC4NCj4gPiArKiovDQo+ID4gK3RpbWVfdCB0aW1lICh0 aW1lX3QgKnRpbWVyKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1RJTUUgIFRpbWU7DQo+ID4gKyAgdGlt ZV90ICAgIENhbFRpbWU7DQo+ID4gKyAgVUlOVE4gICAgIFllYXI7DQo+ID4gKw0KPiA+ICsgIC8v DQo+ID4gKyAgLy8gR2V0IHRoZSBjdXJyZW50IHRpbWUgYW5kIGRhdGUgaW5mb3JtYXRpb24gIC8v ICBnUlQtPkdldFRpbWUNCj4gPiArICgmVGltZSwgTlVMTCk7DQo+ID4gKw0KPiA+ICsgIC8vDQo+ ID4gKyAgLy8gWWVhcnMgSGFuZGxpbmcNCj4gPiArICAvLyBVVGltZSBzaG91bGQgbm93IGJlIHNl dCB0byAwMDowMDowMCBvbiBKYW4gMSBvZiB0aGUgY3VycmVudCB5ZWFyLg0KPiA+ICsgIC8vDQo+ ID4gKyAgZm9yIChZZWFyID0gMTk3MCwgQ2FsVGltZSA9IDA7IFllYXIgIT0gVGltZS5ZZWFyOyBZ ZWFyKyspIHsNCj4gPiArICAgIENhbFRpbWUgPSBDYWxUaW1lICsgKHRpbWVfdCkoQ3VtdWxhdGl2 ZURheXNbSXNMZWFwKFllYXIpXVsxM10gKg0KPiA+ICsgU0VDU1BFUkRBWSk7ICB9DQo+ID4gKw0K PiA+ICsgIC8vDQo+ID4gKyAgLy8gQWRkIGluIG51bWJlciBvZiBzZWNvbmRzIGZvciBjdXJyZW50 IE1vbnRoLCBEYXksIEhvdXIsIE1pbnV0ZSwNCj4gPiArIFNlY29uZHMsIGFuZCBUaW1lWm9uZSBh ZGp1c3RtZW50ICAvLyAgQ2FsVGltZSA9IENhbFRpbWUgKw0KPiA+ICsgICAgICAgICAgICAodGlt ZV90KSgoVGltZS5UaW1lWm9uZSAhPSBFRklfVU5TUEVDSUZJRURfVElNRVpPTkUpID8NCj4gKFRp bWUuVGltZVpvbmUgKiA2MCkgOiAwKSArDQo+ID4gKyAgICAgICAgICAgICh0aW1lX3QpKEN1bXVs YXRpdmVEYXlzW0lzTGVhcChUaW1lLlllYXIpXVtUaW1lLk1vbnRoXSAqDQo+IFNFQ1NQRVJEQVkp ICsNCj4gPiArICAgICAgICAgICAgKHRpbWVfdCkoKChUaW1lLkRheSA+IDApID8gVGltZS5EYXkg LSAxIDogMCkgKiBTRUNTUEVSREFZKSArDQo+ID4gKyAgICAgICAgICAgICh0aW1lX3QpKFRpbWUu SG91ciAqIFNFQ1NQRVJIT1VSKSArDQo+ID4gKyAgICAgICAgICAgICh0aW1lX3QpKFRpbWUuTWlu dXRlICogNjApICsNCj4gPiArICAgICAgICAgICAgKHRpbWVfdClUaW1lLlNlY29uZDsNCj4gPiAr DQo+ID4gKyAgaWYgKHRpbWVyICE9IE5VTEwpIHsNCj4gPiArICAgICp0aW1lciA9IENhbFRpbWU7 DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICByZXR1cm4gQ2FsVGltZTsNCj4gPiArfQ0KPiA+ICsN Cj4gPiArdHlwZWRlZg0KPiA+ICtpbnQNCj4gPiArKCpTT1JUX0NPTVBBUkUpKA0KPiA+ICsgIElO ICBWT0lEICAqQnVmZmVyMSwNCj4gPiArICBJTiAgVk9JRCAgKkJ1ZmZlcjINCj4gPiArICApOw0K PiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgRHVwbGljYXRlZCBmcm9tIEVES0lJIEJhc2VTb3J0TGli IGZvciBxc29ydCgpIHdyYXBwZXINCj4gPiArICBAcGFyYW1baW4sIG91dF0gQnVmZmVyVG9Tb3J0 ICAgb24gY2FsbCBhIEJ1ZmZlciBvZiAocG9zc2libHkgc29ydGVkKQ0KPiBlbGVtZW50cw0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbiByZXR1cm4gYSBidWZmZXIgb2Yg c29ydGVkIGVsZW1lbnRzDQo+ID4gKyAgQHBhcmFtW2luXSBDb3VudCAgICAgICAgICAgICAgIHRo ZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIGJ1ZmZlciB0byBzb3J0DQo+ID4gKyAgQHBhcmFt W2luXSBFbGVtZW50U2l6ZSAgICAgICAgIFNpemUgb2YgYW4gZWxlbWVudCBpbiBieXRlcw0KPiA+ ICsgIEBwYXJhbVtpbl0gQ29tcGFyZUZ1bmN0aW9uICAgICBUaGUgZnVuY3Rpb24gdG8gY2FsbCB0 byBwZXJmb3JtIHRoZQ0KPiBjb21wYXJpc29uDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG9mIGFueSAyIGVsZW1lbnRzDQo+ID4gKyAgQHBhcmFtW2luXSBCdWZmZXIgICAg ICAgICAgICAgIEJ1ZmZlciBvZiBzaXplIEVsZW1lbnRTaXplIGZvciB1c2UgaW4gc3dhcHBpbmcN Cj4gPiArKiovDQo+ID4gK1NUQVRJQw0KPiA+ICtWT0lEDQo+ID4gK1F1aWNrU29ydFdvcmtlciAo DQo+ID4gKyAgSU4gT1VUICAgIFZPSUQgICAgICAgICAgKkJ1ZmZlclRvU29ydCwNCj4gPiArICBJ TiBDT05TVCAgVUlOVE4gICAgICAgICBDb3VudCwNCj4gPiArICBJTiBDT05TVCAgVUlOVE4gICAg ICAgICBFbGVtZW50U2l6ZSwNCj4gPiArICBJTiAgICAgICAgU09SVF9DT01QQVJFICBDb21wYXJl RnVuY3Rpb24sDQo+ID4gKyAgSU4gICAgICAgIFZPSUQgICAgICAgICAgKkJ1ZmZlcg0KPiA+ICsg ICkNCj4gPiArew0KPiA+ICsgIFZPSUQgICAgICAgICpQaXZvdDsNCj4gPiArICBVSU5UTiAgICAg ICBMb29wQ291bnQ7DQo+ID4gKyAgVUlOVE4gICAgICAgTmV4dFN3YXBMb2NhdGlvbjsNCj4gPiAr DQo+ID4gKyAgQVNTRVJUKEJ1ZmZlclRvU29ydCAgICAhPSBOVUxMKTsNCj4gPiArICBBU1NFUlQo Q29tcGFyZUZ1bmN0aW9uICE9IE5VTEwpOw0KPiA+ICsgIEFTU0VSVChCdWZmZXIgICAgICAgICAg IT0gTlVMTCk7DQo+ID4gKw0KPiA+ICsgIGlmIChDb3VudCA8IDIgfHwgRWxlbWVudFNpemUgIDwg MSkgew0KPiA+ICsgICAgcmV0dXJuOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgTmV4dFN3YXBM b2NhdGlvbiA9IDA7DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gUGljayBhIHBpdm90ICh3 ZSBjaG9vc2UgbGFzdCBlbGVtZW50KSAgLy8gIFBpdm90ID0gKChVSU5UOA0KPiA+ICsgKilCdWZm ZXJUb1NvcnQgKyAoKENvdW50IC0gMSkgKiBFbGVtZW50U2l6ZSkpOw0KPiA+ICsNCj4gPiArICAv Lw0KPiA+ICsgIC8vIE5vdyBnZXQgdGhlIHBpdm90IHN1Y2ggdGhhdCBhbGwgb24gImxlZnQiIGFy ZSBiZWxvdyBpdCAgLy8gYW5kDQo+ID4gKyBldmVyeXRoaW5nICJyaWdodCIgYXJlIGFib3ZlIGl0 ICAvLyAgZm9yIChMb29wQ291bnQgPSAwOyBMb29wQ291bnQgPA0KPiA+ICsgQ291bnQgLSAxOyAg TG9vcENvdW50KyspICB7DQo+ID4gKyAgICAvLw0KPiA+ICsgICAgLy8gSWYgdGhlIGVsZW1lbnQg aXMgbGVzcyB0aGFuIHRoZSBwaXZvdA0KPiA+ICsgICAgLy8NCj4gPiArICAgIGlmIChDb21wYXJl RnVuY3Rpb24gKChWT0lEICopKChVSU5UOCAqKUJ1ZmZlclRvU29ydCArICgoTG9vcENvdW50KSAq DQo+IEVsZW1lbnRTaXplKSksIFBpdm90KSA8PSAwKSB7DQo+ID4gKyAgICAgIC8vDQo+ID4gKyAg ICAgIC8vIFN3YXANCj4gPiArICAgICAgLy8NCj4gPiArICAgICAgQ29weU1lbSAoQnVmZmVyLCAo VUlOVDggKilCdWZmZXJUb1NvcnQgKyAoTmV4dFN3YXBMb2NhdGlvbiAqDQo+IEVsZW1lbnRTaXpl KSwgRWxlbWVudFNpemUpOw0KPiA+ICsgICAgICBDb3B5TWVtICgoVUlOVDggKilCdWZmZXJUb1Nv cnQgKyAoTmV4dFN3YXBMb2NhdGlvbiAqDQo+ID4gKyBFbGVtZW50U2l6ZSksIChVSU5UOCAqKUJ1 ZmZlclRvU29ydCArICgoTG9vcENvdW50KSAqDQo+ID4gRWxlbWVudFNpemUpLCBFbGVtZW50U2l6 ZSk7DQo+ID4gKyAgICAgIENvcHlNZW0gKChVSU5UOCAqKUJ1ZmZlclRvU29ydCArICgoTG9vcENv dW50KSAqIEVsZW1lbnRTaXplKSwNCj4gPiArIEJ1ZmZlciwgRWxlbWVudFNpemUpOw0KPiA+ICsN Cj4gPiArICAgICAgLy8NCj4gPiArICAgICAgLy8gSW5jcmVtZW50IE5leHRTd2FwTG9jYXRpb24N Cj4gPiArICAgICAgLy8NCj4gPiArICAgICAgTmV4dFN3YXBMb2NhdGlvbisrOw0KPiA+ICsgICAg fQ0KPiA+ICsgIH0NCj4gPiArICAvLw0KPiA+ICsgIC8vIFN3YXAgcGl2b3QgdG8gaXQncyBmaW5h bCBwb3NpdGlvbiAoTmV4dFN3YXBMb2NhaXRvbikgIC8vDQo+ID4gKyBDb3B5TWVtIChCdWZmZXIs IFBpdm90LCBFbGVtZW50U2l6ZSk7ICBDb3B5TWVtIChQaXZvdCwgKFVJTlQ4DQo+ID4gKyAqKUJ1 ZmZlclRvU29ydCArIChOZXh0U3dhcExvY2F0aW9uICogRWxlbWVudFNpemUpLCBFbGVtZW50U2l6 ZSk7DQo+ID4gKyBDb3B5TWVtICgoVUlOVDggKilCdWZmZXJUb1NvcnQgKyAoTmV4dFN3YXBMb2Nh dGlvbiAqIEVsZW1lbnRTaXplKSwNCj4gPiArIEJ1ZmZlciwgRWxlbWVudFNpemUpOw0KPiA+ICsN Cj4gPiArICAvLw0KPiA+ICsgIC8vIE5vdyByZWN1cnNlIG9uIDIgcGFyaXRpYWwgbGlzdHMuICBO ZWl0aGVyIG9mIHRoZXNlIHdpbGwgaGF2ZSB0aGUgJ3Bpdm90Jw0KPiBlbGVtZW50Lg0KPiA+ICsg IC8vIElFIGxpc3QgaXMgc29ydGVkIGxlZnQgaGFsZiwgcGl2b3QgZWxlbWVudCwgc29ydGVkIHJp Z2h0IGhhbGYuLi4NCj4gPiArICAvLw0KPiA+ICsgIFF1aWNrU29ydFdvcmtlciAoDQo+ID4gKyAg ICBCdWZmZXJUb1NvcnQsDQo+ID4gKyAgICBOZXh0U3dhcExvY2F0aW9uLA0KPiA+ICsgICAgRWxl bWVudFNpemUsDQo+ID4gKyAgICBDb21wYXJlRnVuY3Rpb24sDQo+ID4gKyAgICBCdWZmZXINCj4g PiArICAgICk7DQo+ID4gKw0KPiA+ICsgIFF1aWNrU29ydFdvcmtlciAoDQo+ID4gKyAgICAoVUlO VDggKilCdWZmZXJUb1NvcnQgKyAoTmV4dFN3YXBMb2NhdGlvbiArIDEpICogRWxlbWVudFNpemUs DQo+ID4gKyAgICBDb3VudCAtIE5leHRTd2FwTG9jYXRpb24gLSAxLA0KPiA+ICsgICAgRWxlbWVu dFNpemUsDQo+ID4gKyAgICBDb21wYXJlRnVuY3Rpb24sDQo+ID4gKyAgICBCdWZmZXINCj4gPiAr ICAgICk7DQo+ID4gKw0KPiA+ICsgIHJldHVybjsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ ID4gKyAgUGVyZm9ybXMgYSBxdWljayBzb3J0DQo+ID4gKyoqLw0KPiA+ICt2b2lkIHFzb3J0ICh2 b2lkICpiYXNlLCBzaXplX3QgbnVtLCBzaXplX3Qgd2lkdGgsIGludA0KPiA+ICsoKmNvbXBhcmUp KGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSkgew0KPiA+ICsgIFZPSUQgICpCdWZmZXI7DQo+ ID4gKw0KPiA+ICsgIEFTU0VSVCAoYmFzZSAgICAhPSBOVUxMKTsNCj4gPiArICBBU1NFUlQgKGNv bXBhcmUgIT0gTlVMTCk7DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gVXNlIENSVC1zdHls ZSBtYWxsb2MgdG8gY292ZXIgQlMgYW5kIFJUIG1lbW9yeSBhbGxvY2F0aW9uLg0KPiA+ICsgIC8v DQo+ID4gKyAgQnVmZmVyID0gbWFsbG9jICh3aWR0aCk7DQo+ID4gKyAgQVNTRVJUIChCdWZmZXIg IT0gTlVMTCk7DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gUmUtdXNlIFBlcmZvcm1RdWlj a1NvcnQoKSBmdW5jdGlvbiBJbXBsZW1lbnRhdGlvbiBpbiBFREtJSQ0KPiBCYXNlU29ydExpYi4N Cj4gPiArICAvLw0KPiA+ICsgIFF1aWNrU29ydFdvcmtlciAoYmFzZSwgKFVJTlROKW51bSwgKFVJ TlROKXdpZHRoLA0KPiA+ICsgKFNPUlRfQ09NUEFSRSljb21wYXJlLCBCdWZmZXIpOw0KPiA+ICsN Cj4gPiArICBmcmVlIChCdWZmZXIpOw0KPiA+ICsgIHJldHVybjsNCj4gPiArfQ0KPiA+ICsNCj4g PiArLyoqDQo+ID4gKyAgR2V0IGNoYXJhY3RlciBmcm9tIHN0cmVhbSwgd2UgZG9uJ3Qgc3VwcG9y dCBmaWxlIG9wZXJhc3Rpb24gb24gZWRrMg0KPiBKU09OIGxpYnJhcnkuDQo+ID4gKw0KPiA+ICsg IEByZXR1cm4gUmV0dXJucyB0aGUgY2hhcmFjdGVyIGN1cnJlbnRseSBwb2ludGVkIGJ5IHRoZSBp bnRlcm5hbA0KPiA+ICsgZmlsZSBwb3NpdGlvbiBpbmRpY2F0b3Igb2YgdGhlIHNwZWNpZmllZCBz dHJlYW0NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtpbnQgZmdldGMoRklMRSAqIF9GaWxlKXsNCj4g PiArICAgcmV0dXJuIDA7DQo+ID4gK30NCj4gPiBkaWZmIC0tZ2l0IGEvUmVkZmlzaFBrZy9MaWJy YXJ5L0NydExpYi9DcnRMaWIuaW5mDQo+ID4gYi9SZWRmaXNoUGtnL0xpYnJhcnkvQ3J0TGliL0Ny dExpYi5pbmYNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAu LmI1MTQ4MTdjZjQNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvUmVkZmlzaFBrZy9MaWJy YXJ5L0NydExpYi9DcnRMaWIuaW5mDQo+ID4gQEAgLTAsMCArMSwzNyBAQA0KPiA+ICsjIyBAZmls ZQ0KPiA+ICsjIEVESzIgQyBSdW50aW1lIExpYnJhcnkgZm9yIG9wZW5zb3VyY2UgcHJvamVjdC4N Cj4gPiArIw0KPiA+ICsjIENvcHlyaWdodCAoYykgMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uIEFs bCByaWdodHMgcmVzZXJ2ZWQuPEJSPiAjDQo+ID4gKyhDKSBDb3B5cmlnaHQgMjAyMCBIZXdsZXR0 IFBhY2thcmQgRW50ZXJwcmlzZSBEZXZlbG9wbWVudCBMUDxCUj4gIw0KPiA+ICsjICAgIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gKyMNCj4gPiArIyMN Cj4gPiArDQo+ID4gK1tEZWZpbmVzXQ0KPiA+ICsgIElORl9WRVJTSU9OICAgICAgICAgICAgICAg ICAgICA9IDB4MDAwMTAwMWINCj4gPiArICBCQVNFX05BTUUgICAgICAgICAgICAgICAgICAgICAg PSBDcnRMaWINCj4gPiArICBGSUxFX0dVSUQgICAgICAgICAgICAgICAgICAgICAgPSA4MjYzQjhB Qy1EMDIxLTQyNUQtQjMzNy0zRUM5NkY1REMxOUINCj4gPiArICBNT0RVTEVfVFlQRSAgICAgICAg ICAgICAgICAgICAgPSBEWEVfRFJJVkVSDQo+ID4gKyAgVkVSU0lPTl9TVFJJTkcgICAgICAgICAg ICAgICAgID0gMS4wDQo+ID4gKyAgTElCUkFSWV9DTEFTUyAgICAgICAgICAgICAgICAgID0gQ3J0 TGlifERYRV9DT1JFIERYRV9EUklWRVINCj4gRFhFX1JVTlRJTUVfRFJJVkVSIERYRV9TTU1fRFJJ VkVSIFVFRklfQVBQTElDQVRJT04NCj4gPiBVRUZJX0RSSVZFUg0KPiA+ICsNCj4gPiArIw0KPiA+ ICsjICBWQUxJRF9BUkNISVRFQ1RVUkVTICAgICAgICAgICA9IElBMzIgWDY0IEFSTSBBQVJDSDY0 IFJJU0NWNjQNCj4gPiArIw0KPiA+ICsNCj4gPiArW1NvdXJjZXNdDQo+ID4gKyAgQ3J0TGliLmMN Cj4gPiArDQo+ID4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gPiArICBCYXNlTGliDQo+ID4gKyAgRGVi dWdMaWINCj4gPiArICBNZW1vcnlBbGxvY2F0aW9uTGliDQo+ID4gKyAgVWVmaVJ1bnRpbWVTZXJ2 aWNlc1RhYmxlTGliDQo+ID4gKw0KPiA+ICtbUGFja2FnZXNdDQo+ID4gKyAgTWRlUGtnL01kZVBr Zy5kZWMNCj4gPiArICBNZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KPiA+ICsgIFJlZGZp c2hQa2cvUmVkZmlzaFBrZy5kZWMNCj4gPiArDQo+ID4gKw0KPiA+IGRpZmYgLS1naXQgYS9SZWRm aXNoUGtnL1JlZGZpc2hMaWJzLmRzYy5pbmMNCj4gPiBiL1JlZGZpc2hQa2cvUmVkZmlzaExpYnMu ZHNjLmluYyBpbmRleCBkNGMwOGUxOGFjLi4yYTk1MWJkOGZhIDEwMDY0NA0KPiA+IC0tLSBhL1Jl ZGZpc2hQa2cvUmVkZmlzaExpYnMuZHNjLmluYw0KPiA+ICsrKyBiL1JlZGZpc2hQa2cvUmVkZmlz aExpYnMuZHNjLmluYw0KPiA+IEBAIC0xMiw1ICsxMiw2IEBADQo+ID4gICMjDQo+ID4gICFpZiAk KFJFREZJU0hfRU5BQkxFKSA9PSBUUlVFDQo+ID4gICAgVWNzMlV0ZjhMaWJ8UmVkZmlzaFBrZy9M aWJyYXJ5L0Jhc2VVY3MyVXRmOExpYi9CYXNlVWNzMlV0ZjhMaWIuaW5mDQo+ID4gKyAgQ3J0TGli fFJlZGZpc2hQa2cvTGlicmFyeS9DcnRMaWIvQ3J0TGliLmluZg0KPiA+ICAhZW5kaWYNCj4gPg0K PiA+IGRpZmYgLS1naXQgYS9SZWRmaXNoUGtnL1JlZGZpc2hQa2cuY2kueWFtbA0KPiA+IGIvUmVk ZmlzaFBrZy9SZWRmaXNoUGtnLmNpLnlhbWwgaW5kZXggMjBjMjk3YWQyMi4uOTg5NWZkYWM5OSAx MDA2NDQNCj4gPiAtLS0gYS9SZWRmaXNoUGtnL1JlZGZpc2hQa2cuY2kueWFtbA0KPiA+ICsrKyBi L1JlZGZpc2hQa2cvUmVkZmlzaFBrZy5jaS55YW1sDQo+ID4gQEAgLTE3LDYgKzE3LDI1IEBADQo+ ID4gICAgICAgICAgXSwNCj4gPiAgICAgICAgICAjIyBCb3RoIGZpbGUgcGF0aCBhbmQgZGlyZWN0 b3J5IHBhdGggYXJlIGFjY2VwdGVkLg0KPiA+ICAgICAgICAgICJJZ25vcmVGaWxlcyI6IFsNCj4g PiArICAgICAgICAgICAgIyMgQmVsb3cgYXJlIGZpbGVzIGluY29ycG9yYXRlZCB3aXRoIG9wZW4g c291cmNlIHdoaWNoIGFyZQ0KPiA+ICsgICAgICAgICAgICAjIyBub3QgZWRrMiBjb2Rpbmcgc3Rh bmRhcmQgY29tcGxpYW50Lg0KPiA+ICsgICAgICAgICAgICAjIw0KPiA+ICsgICAgICAgICAgICAj IyBFREsyIENSVCBsaWJyYXJ5IHdoaWNoIGlzIG5vdCBlZGsyIGNvZGluZw0KPiA+ICsgICAgICAg ICAgICAjIyBzdGFuZGFyZCBjb21wbGlhbnQuDQo+ID4gKyAgICAgICAgICAgICMjIEMgcnVudGlt ZSBsaWJyYXJ5IGZvciBFREtJSSBKc29uTGliLg0KPiA+ICsgICAgICAgICAgICAiSW5jbHVkZS9D cnQvc3lzIiwNCj4gPiArICAgICAgICAgICAgIkluY2x1ZGUvQ3J0L2Fzc2VydC5oIiwNCj4gPiAr ICAgICAgICAgICAgIkluY2x1ZGUvQ3J0L2Vycm5vLmgiLA0KPiA+ICsgICAgICAgICAgICAiSW5j bHVkZS9DcnQvbGltaXRzLmgiLA0KPiA+ICsgICAgICAgICAgICAiSW5jbHVkZS9DcnQvbWF0aC5o IiwNCj4gPiArICAgICAgICAgICAgIkluY2x1ZGUvQ3J0L3N0ZGFyZy5oIiwNCj4gPiArICAgICAg ICAgICAgIkluY2x1ZGUvQ3J0L3N0ZGRlZi5oIiwNCj4gPiArICAgICAgICAgICAgIkluY2x1ZGUv Q3J0L3N0ZGlvLmgiLA0KPiA+ICsgICAgICAgICAgICAiSW5jbHVkZS9DcnQvc3RkbGliLmgiLA0K PiA+ICsgICAgICAgICAgICAiSW5jbHVkZS9DcnQvc3RyaW5nLmgiLA0KPiA+ICsgICAgICAgICAg ICAiSW5jbHVkZS9DcnQvdGltZS5oIiwNCj4gPiArICAgICAgICAgICAgIkluY2x1ZGUvTGlicmFy eS9DcnRMaWIuaCIsDQo+ID4gKyAgICAgICAgICAgICJMaWJyYXJ5L0NydExpYi9DcnRMaWIuYyIN Cj4gPiAgICAgICAgICBdDQo+ID4gICAgICB9LA0KPiA+ICAgICAgIkNvbXBpbGVyUGx1Z2luIjog ew0KPiA+IGRpZmYgLS1naXQgYS9SZWRmaXNoUGtnL1JlZGZpc2hQa2cuZGVjIGIvUmVkZmlzaFBr Zy9SZWRmaXNoUGtnLmRlYw0KPiA+IGluZGV4IGFlY2MxZjRhM2EuLjIxNDJiNDM2NDAgMTAwNjQ0 DQo+ID4gLS0tIGEvUmVkZmlzaFBrZy9SZWRmaXNoUGtnLmRlYw0KPiA+ICsrKyBiL1JlZGZpc2hQ a2cvUmVkZmlzaFBrZy5kZWMNCj4gPiBAQCAtMTUsMTYgKzE1LDI0IEBADQo+ID4NCj4gPiAgW0lu Y2x1ZGVzXQ0KPiA+ICAgIEluY2x1ZGUNCj4gPiArICBJbmNsdWRlL0NydCAgICAgICAgICAgICAg ICAgICAjIEhlYWRlciBmaWxlcyBmb3IgQyBSVEwuDQo+ID4NCj4gPiAgW0xpYnJhcnlDbGFzc2Vz XQ0KPiA+ICAgICMjICBAbGlicmFyeWNsYXNzIFBsYXRmb3JtIFJlZGZpc2ggSG9zdCBJbnRlcmZh Y2UgTGlicmFyeQ0KPiA+ICAgICMgICBQbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyBS ZWRmaXNoIEhvc3QgSW50ZXJmYWNlLg0KPiA+DQo+ID4gUmVkZmlzaFBsYXRmb3JtSG9zdEludGVy ZmFjZUxpYnxJbmNsdWRlL0xpYnJhcnkvUmVkZmlzaEhvc3RJbnRlcmZhY2VMaQ0KPiA+IGIuaA0K PiA+ICsNCj4gPiAgICAjIyAgQGxpYnJhcnljbGFzcyAgVGhpcyBsaWJyYXJ5IHByb3ZpZGVzIFVD UzIgdG8gVVRGOCBtYW5pcHVsYXRpb24NCj4gPiAgICAjICAgZnVuY3Rpb25zLg0KPiA+ICAgICMN Cj4gPiAgICBVY3MyVXRmOExpYnxJbmNsdWRlL0xpYnJhcnkvQmFzZVVjczJVdGY4TGliLmgNCj4g Pg0KPiA+ICsgICMjICBAbGlicmFyeWNsYXNzICBQcm92aWRlcyB0aGUgQyBydW50aW1lIGxpYnJh cnkgZnVuY3Rpb25zDQo+ID4gKyAgIyAgIENSVCBsaWJyYXJ5IGlzIGN1cnJlbnRseSB1c2VkIGJ5 IGVkazIgSnNvbkxpYiAob3BlbiBzb3VyY2UNCj4gPiArICAjICAgamFuc3NvbiBwcm9qZWN0KSBh bmQgZWRrMiBSZWRmaXNoTGliIChsaWJyZWRmaXNoIG9wZW4gc291cmNlDQo+ID4gKyAgIyAgIHBy b2plY3QpLg0KPiA+ICsgIENydExpYnxJbmNsdWRlL0xpYnJhcnkvQ3J0TGliLmgNCj4gPiArDQo+ ID4gIFtQcm90b2NvbHNdDQo+ID4gICAgIyMgSW5jbHVkZS9Qcm90b2NvbC9SZWRmaXNoRGlzY292 ZXIuaA0KPiA+ICAgIGdFZmlSZWRmaXNoRGlzY292ZXJQcm90b2NvbEd1aWQgICAgICA9IHsgMHg1 ZGIxMjUwOSwgMHg0NTUwLCAweDQzNDcsIHsgMHg5NiwNCj4gMHhiMywgMHg3MywgMHhjMCwgMHhm ZiwgMHg2ZSwgMHg4NiwgMHg5Zg0KPiA+IH19DQo+ID4gZGlmZiAtLWdpdCBhL1JlZGZpc2hQa2cv UmVkZmlzaFBrZy5kc2MgYi9SZWRmaXNoUGtnL1JlZGZpc2hQa2cuZHNjDQo+ID4gaW5kZXggMzYz OWI2MjBlNi4uYWExY2NkNWE5NSAxMDA2NDQNCj4gPiAtLS0gYS9SZWRmaXNoUGtnL1JlZGZpc2hQ a2cuZHNjDQo+ID4gKysrIGIvUmVkZmlzaFBrZy9SZWRmaXNoUGtnLmRzYw0KPiA+IEBAIC00OCw1 ICs0OCw2IEBADQo+ID4gIFtDb21wb25lbnRzXQ0KPiA+DQo+IFJlZGZpc2hQa2cvTGlicmFyeS9Q bGF0Zm9ybUhvc3RJbnRlcmZhY2VMaWJOdWxsL1BsYXRmb3JtSG9zdEludGVyZmFjZUxpYk4NCj4g dWxsLmluZg0KPiA+ICAgIFJlZGZpc2hQa2cvTGlicmFyeS9CYXNlVWNzMlV0ZjhMaWIvQmFzZVVj czJVdGY4TGliLmluZg0KPiA+ICsgIFJlZGZpc2hQa2cvTGlicmFyeS9DcnRMaWIvQ3J0TGliLmlu Zg0KPiA+DQo+ID4gICAgIWluY2x1ZGUgUmVkZmlzaFBrZy9SZWRmaXNoLmRzYy5pbmMNCj4gPiAt LQ0KPiA+IDIuMTcuMQ0KPiA+DQo+ID4NCj4gPg0KPiA+DQo+ID4NCj4gDQo+IA0KPiANCj4gDQo+ IA0KDQo=