From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 33981A04F3; Fri, 3 Jan 2020 11:19:00 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 6B5F01C2EA; Fri, 3 Jan 2020 11:18:59 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by dpdk.org (Postfix) with ESMTP id 9C9FD1C2B4 for ; Fri, 3 Jan 2020 11:18:57 +0100 (CET) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 003AGHUa032155; Fri, 3 Jan 2020 02:18:56 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pfpt0818; bh=oanueApZ8w+12BMQ4oW2KsiX5yWrpNTl/QAaP5DNpxE=; b=YzE5aFdxF4wku/s81f0x+Y+lzCoTn056ImVaITGgpAuaM5kAk18M/KgUNSK0C/WMrZPo JzY/U9KpR58yKuVl5YPIdGa6jOrjPPA2t/rJUIGouUcMMSoVB2fbeOJirJuGJkSrkJhn HM4jWmq/YVNXXRdx62/NeIpnUUTUDYZtCfLvp4fzfcqjg41aY4xmRLoNoqCkdiGAbt95 sefJO1R5/b5Dx/Ycnxx97fuS767ALFq6iYbAoAGnZFnKzIgRLXPYEJJ50I5MjkjEgiQv F99Ah9QBA1s0f5JfaT0O0dgBJ4nrFcrUXY9xRn8MKOVmf+ZMh2U0v+TTaXgQRCvQUxFW ZA== Received: from sc-exch02.marvell.com ([199.233.58.182]) by mx0b-0016f401.pphosted.com with ESMTP id 2x67etr6ks-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Fri, 03 Jan 2020 02:18:56 -0800 Received: from SC-EXCH03.marvell.com (10.93.176.83) by SC-EXCH02.marvell.com (10.93.176.82) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 3 Jan 2020 02:18:54 -0800 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.41) by SC-EXCH03.marvell.com (10.93.176.83) with Microsoft SMTP Server (TLS) id 15.0.1497.2 via Frontend Transport; Fri, 3 Jan 2020 02:18:54 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jgg2h44lXTXVFkgrWKd2T/72LDU9n5MNTMo4IBEpMmgo5ulQFriTGtDAh9KkYxRKnGRrPLVmt26Nly1MPtwJi7CkaayRxKAVws7robHuVlWYYiWIeZfYVBkVu9q/ihRgfHmmXkL5n2m4cH7Xgbxq3YuuCgMBCdFXmnf60c5bGzV9ijJhcMJKf6eAMZcMBa0vYHJAXKeYG6A+V/gaGlGHKJn2ze+dSCpbLpyE4K+qMjcEnMaHzuRHol4L0EHdQsblVUmoWhrjLuKoPlZ0D1+/Ld2uTjGbv5ULAhl5WF59M9ZuGpWFX4JnvF5ZBNKXJ13fWsppJwgwQbofFMC9ZXix0w== 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=oanueApZ8w+12BMQ4oW2KsiX5yWrpNTl/QAaP5DNpxE=; b=fxH6pyeD9BnDTjtyu9vSvYtvPc6cu+CHKFMIPu9R431H+roZxbkR6I5PGCO31y3VPvC8Kj6d8YqcGn3Spafmb5dRosaOiqk7J/QFXI2ItW8eh911DuZ9ff7SZs6bKOkK7+cHx8T3Zc6ciIO3TW3syZUFrEomssJaP9w/t0V6M2xuLXLoLuJcSqv8gTehloY+hV6YFgFqoceCbTErbYliW2gHldg4mL6sfx+Z0X6pa5PGr+nilHDGcqooahianBhh1Q6DpOvig3aR3Hz7NRA7QBj1Wd/SVG0juiP9QrexIjdEM4tMNK7vl9gURvmsFzoF1i9duJaOK332DCykgUHlIQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=oanueApZ8w+12BMQ4oW2KsiX5yWrpNTl/QAaP5DNpxE=; b=LNtMgN7oteicvUZUNihL5B2ADfKBijlSaczNk/p1q7DHThPbeh27/cXmYepLU3lZwQ4Myi5ZUGKQQSN+35ZKz0XthDa5C7SuhepmyKm7qJu6RxVZrngeGhzFjz4qP/bus0CZvuWPDakjcaxAjBUlDD45ha9RBPRhw4tulLU7aWI= Received: from MN2PR18MB2877.namprd18.prod.outlook.com (20.179.20.218) by MN2PR18MB2829.namprd18.prod.outlook.com (20.179.20.211) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2602.12; Fri, 3 Jan 2020 10:18:53 +0000 Received: from MN2PR18MB2877.namprd18.prod.outlook.com ([fe80::5db5:d179:8a01:4636]) by MN2PR18MB2877.namprd18.prod.outlook.com ([fe80::5db5:d179:8a01:4636%7]) with mapi id 15.20.2602.012; Fri, 3 Jan 2020 10:18:53 +0000 From: Anoob Joseph To: "Ananyev, Konstantin" , Akhil Goyal , "Nicolau, Radu" , "Thomas Monjalon" CC: Lukas Bartosik , Jerin Jacob Kollanukkaran , Narayana Prasad Raju Athreya , Ankur Dwivedi , Archana Muniganti , Tejasree Kondoj , "Vamsi Krishna Attunuru" , "dev@dpdk.org" Thread-Topic: [dpdk-dev] [PATCH 09/14] examples/ipsec-secgw: add eventmode to ipsec-secgw Thread-Index: AQHVubBXrrByYIiAQkO/gWXVzcKiJ6fXIvog Date: Fri, 3 Jan 2020 10:18:52 +0000 Message-ID: References: <1575808249-31135-1-git-send-email-anoobj@marvell.com> <1575808249-31135-10-git-send-email-anoobj@marvell.com> In-Reply-To: Accept-Language: en-IN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [14.140.231.66] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 7bb93af4-7a8e-46ae-bdbd-08d790365551 x-ms-traffictypediagnostic: MN2PR18MB2829: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:568; x-forefront-prvs: 0271483E06 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(136003)(396003)(39860400002)(366004)(376002)(346002)(13464003)(199004)(189003)(66476007)(30864003)(64756008)(4326008)(66946007)(6506007)(53546011)(55236004)(26005)(33656002)(52536014)(5660300002)(66446008)(2906002)(66556008)(76116006)(478600001)(86362001)(54906003)(110136005)(316002)(71200400001)(8936002)(81166006)(9686003)(81156014)(186003)(55016002)(7696005)(579004); DIR:OUT; SFP:1101; SCL:1; SRVR:MN2PR18MB2829; H:MN2PR18MB2877.namprd18.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: marvell.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 6dpFRnhyqdibkQTlXY8Fg6hfyHcTXxXm8xLS7dpw7VxU+dSfet5gh9b2+HkykaTdozkRvWGjZA1ZVS0cj8ecXhCEUoRmNKabBjrxjt+C2pmIElgO0x2iC+dx7lv7Yu8bf9/PxUudW1X+ZCrE162vuOEUgPc/9OM1WPinkI8w1RUQgO2ylPGYrHCIRguPX5+Xtou6CO1UMioCSnJJ+oPMBbJUqBXALxCurmjdy/uyOVp44wTUJw+KI8EZGqwAD7zdLB/8GmQchJ2uGH4hJEO7ZWn8DcvBAk0yvjals8VrLxDwiWm38rKFVrpiV9x8RuNlhCbxzevAebfVphInhpIHdlQ5DCf00+/2bskcplZqORapAXqUX1PRrirPzilv5S5CPsUZrX+e/ra/pc9I6+iQ9q1xvrZRjbyXD74FQhvrL7ilyu0DlWtiXgYGd6eupPy8h0w9r4dKP9f4R7qC3Jxd9+XxOSH8drgFR+uEGWlWwqMAHsungm+Cy99ZxPrYpaWP Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 7bb93af4-7a8e-46ae-bdbd-08d790365551 X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Jan 2020 10:18:52.8299 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: yyx1rwhTDd+Sf8dIoKBDiKLtl21J1NUmBCk+7vL0RDBf3ewMT3CrtoClFDxXZhgdQsL24Z3/Y1oQ7Fi8Ym4/Cw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR18MB2829 X-OriginatorOrg: marvell.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,18.0.572 definitions=2020-01-03_02:2020-01-02,2020-01-03 signatures=0 Subject: Re: [dpdk-dev] [PATCH 09/14] examples/ipsec-secgw: add eventmode to ipsec-secgw X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" SGkgS29uc3RhbnRpbiwNCg0KUGxlYXNlIHNlZSBpbmxpbmUuDQoNClRoYW5rcywNCkFub29iDQoN Cj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogZGV2IDxkZXYtYm91bmNlc0Bk cGRrLm9yZz4gT24gQmVoYWxmIE9mIEFuYW55ZXYsIEtvbnN0YW50aW4NCj4gU2VudDogTW9uZGF5 LCBEZWNlbWJlciAyMywgMjAxOSAxMDoxMyBQTQ0KPiBUbzogQW5vb2IgSm9zZXBoIDxhbm9vYmpA bWFydmVsbC5jb20+OyBBa2hpbCBHb3lhbA0KPiA8YWtoaWwuZ295YWxAbnhwLmNvbT47IE5pY29s YXUsIFJhZHUgPHJhZHUubmljb2xhdUBpbnRlbC5jb20+OyBUaG9tYXMNCj4gTW9uamFsb24gPHRo b21hc0Btb25qYWxvbi5uZXQ+DQo+IENjOiBMdWthcyBCYXJ0b3NpayA8bGJhcnRvc2lrQG1hcnZl bGwuY29tPjsgSmVyaW4gSmFjb2IgS29sbGFudWtrYXJhbg0KPiA8amVyaW5qQG1hcnZlbGwuY29t PjsgTmFyYXlhbmEgUHJhc2FkIFJhanUgQXRocmV5YQ0KPiA8cGF0aHJleWFAbWFydmVsbC5jb20+ OyBBbmt1ciBEd2l2ZWRpIDxhZHdpdmVkaUBtYXJ2ZWxsLmNvbT47DQo+IEFyY2hhbmEgTXVuaWdh bnRpIDxtYXJjaGFuYUBtYXJ2ZWxsLmNvbT47IFRlamFzcmVlIEtvbmRvag0KPiA8a3RlamFzcmVl QG1hcnZlbGwuY29tPjsgVmFtc2kgS3Jpc2huYSBBdHR1bnVydQ0KPiA8dmF0dHVudXJ1QG1hcnZl bGwuY29tPjsgZGV2QGRwZGsub3JnDQo+IFN1YmplY3Q6IFJlOiBbZHBkay1kZXZdIFtQQVRDSCAw OS8xNF0gZXhhbXBsZXMvaXBzZWMtc2VjZ3c6IGFkZA0KPiBldmVudG1vZGUgdG8gaXBzZWMtc2Vj Z3cNCj4gDQo+ID4NCj4gPiBBZGQgZXZlbnRtb2RlIHN1cHBvcnQgdG8gaXBzZWMtc2VjZ3cuIFRo aXMgdXNlcyBldmVudCBoZWxwZXIgdG8gc2V0dXANCj4gPiBhbmQgdXNlIHRoZSBldmVudG1vZGUg Y2FwYWJpbGl0aWVzLiBBZGQgZHJpdmVyIGluYm91bmQgd29ya2VyLg0KPiA+DQo+ID4gRXhhbXBs ZSBjb21tYW5kOg0KPiA+IC4vaXBzZWMtc2VjZ3cgLWMgMHgxIC13IDAwMDI6MDI6MDAuMCxpcHNl Y19pbl9tYXhfc3BpPTEwMCAtdw0KPiA+IDAwMDI6MDc6MDAuMCAgLXcgMDAwMjowZTowMC4wIC13 IDAwMDI6MTA6MDAuMSAtLSAtUCAtcCAweDMgLXUgMHgxDQo+ID4gLS1jb25maWcgIigwLDAsMCks KDEsMCwwKSIgLWYgYS1hZXMtZ2NtLW1zYS5jZmcgLS10cmFuc2Zlci1tb2RlIDENCj4gPiAtLXNj aGVkdWxlLXR5cGUgMiAtLXByb2Nlc3MtbW9kZSBkcnYgLS1wcm9jZXNzLWRpciBpbg0KPiA+DQo+ ID4gU2lnbmVkLW9mZi1ieTogQW5vb2IgSm9zZXBoIDxhbm9vYmpAbWFydmVsbC5jb20+DQo+ID4g U2lnbmVkLW9mZi1ieTogTHVrYXN6IEJhcnRvc2lrIDxsYmFydG9zaWtAbWFydmVsbC5jb20+DQo+ ID4gLS0tDQo+ID4gIGV4YW1wbGVzL2lwc2VjLXNlY2d3L01ha2VmaWxlICAgICAgIHwgICAxICsN Cj4gPiAgZXhhbXBsZXMvaXBzZWMtc2VjZ3cvZXZlbnRfaGVscGVyLmMgfCAgIDMgKw0KPiA+ICBl eGFtcGxlcy9pcHNlYy1zZWNndy9ldmVudF9oZWxwZXIuaCB8ICAyNiArKysNCj4gPiBleGFtcGxl cy9pcHNlYy1zZWNndy9pcHNlYy1zZWNndy5jICB8IDM0NA0KPiArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0NCj4gPiAgZXhhbXBsZXMvaXBzZWMtc2VjZ3cvaXBzZWMuaCAgICAg ICAgfCAgIDcgKw0KPiA+ICBleGFtcGxlcy9pcHNlYy1zZWNndy9pcHNlY193b3JrZXIuYyB8IDE4 MCArKysrKysrKysrKysrKysrKysrDQo+ID4gIGV4YW1wbGVzL2lwc2VjLXNlY2d3L21lc29uLmJ1 aWxkICAgIHwgICAyICstDQo+ID4gIDcgZmlsZXMgY2hhbmdlZCwgNTU1IGluc2VydGlvbnMoKyks IDggZGVsZXRpb25zKC0pICBjcmVhdGUgbW9kZQ0KPiA+IDEwMDY0NCBleGFtcGxlcy9pcHNlYy1z ZWNndy9pcHNlY193b3JrZXIuYw0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2V4YW1wbGVzL2lwc2Vj LXNlY2d3L01ha2VmaWxlDQo+ID4gYi9leGFtcGxlcy9pcHNlYy1zZWNndy9NYWtlZmlsZSBpbmRl eCAwOWUzYzVhLi5mNmZkOTRjIDEwMDY0NA0KPiA+IC0tLSBhL2V4YW1wbGVzL2lwc2VjLXNlY2d3 L01ha2VmaWxlDQo+ID4gKysrIGIvZXhhbXBsZXMvaXBzZWMtc2VjZ3cvTWFrZWZpbGUNCj4gPiBA QCAtMTUsNiArMTUsNyBAQCBTUkNTLXkgKz0gc2EuYw0KPiA+ICBTUkNTLXkgKz0gcnQuYw0KPiA+ ICBTUkNTLXkgKz0gaXBzZWNfcHJvY2Vzcy5jDQo+ID4gIFNSQ1MteSArPSBpcHNlYy1zZWNndy5j DQo+ID4gK1NSQ1MteSArPSBpcHNlY193b3JrZXIuYw0KPiA+ICBTUkNTLXkgKz0gZXZlbnRfaGVs cGVyLmMNCj4gPg0KPiA+ICBDRkxBR1MgKz0gLWdkd2FyZi0yDQo+ID4gZGlmZiAtLWdpdCBhL2V4 YW1wbGVzL2lwc2VjLXNlY2d3L2V2ZW50X2hlbHBlci5jDQo+ID4gYi9leGFtcGxlcy9pcHNlYy1z ZWNndy9ldmVudF9oZWxwZXIuYw0KPiA+IGluZGV4IDY1NDk4NzUuLjQ0Zjk5N2QgMTAwNjQ0DQo+ ID4gLS0tIGEvZXhhbXBsZXMvaXBzZWMtc2VjZ3cvZXZlbnRfaGVscGVyLmMNCj4gPiArKysgYi9l eGFtcGxlcy9pcHNlYy1zZWNndy9ldmVudF9oZWxwZXIuYw0KPiA+IEBAIC05ODQsNiArOTg0LDkg QEAgZWhfZmluZF93b3JrZXIodWludDMyX3QgbGNvcmVfaWQsIHN0cnVjdCBlaF9jb25mDQo+ICpj b25mLA0KPiA+ICAJZWxzZQ0KPiA+ICAJCWN1cnJfY29uZi5jYXAuYnVyc3QgPSBFSF9SWF9UWVBF X05PTl9CVVJTVDsNCj4gPg0KPiA+ICsJY3Vycl9jb25mLmNhcC5pcHNlY19tb2RlID0gY29uZi0+ aXBzZWNfbW9kZTsNCj4gPiArCWN1cnJfY29uZi5jYXAuaXBzZWNfZGlyID0gY29uZi0+aXBzZWNf ZGlyOw0KPiA+ICsNCj4gPiAgCS8qIFBhcnNlIHRoZSBwYXNzZWQgbGlzdCBhbmQgc2VlIGlmIHdl IGhhdmUgbWF0Y2hpbmcgY2FwYWJpbGl0aWVzICovDQo+ID4NCj4gPiAgCS8qIEluaXRpYWxpemUg dGhlIHBvaW50ZXIgdXNlZCB0byB0cmF2ZXJzZSB0aGUgbGlzdCAqLyBkaWZmIC0tZ2l0DQo+ID4g YS9leGFtcGxlcy9pcHNlYy1zZWNndy9ldmVudF9oZWxwZXIuaA0KPiA+IGIvZXhhbXBsZXMvaXBz ZWMtc2VjZ3cvZXZlbnRfaGVscGVyLmgNCj4gPiBpbmRleCAyODk1ZGZhLi4wNzg0OWIwIDEwMDY0 NA0KPiA+IC0tLSBhL2V4YW1wbGVzL2lwc2VjLXNlY2d3L2V2ZW50X2hlbHBlci5oDQo+ID4gKysr IGIvZXhhbXBsZXMvaXBzZWMtc2VjZ3cvZXZlbnRfaGVscGVyLmgNCj4gPiBAQCAtNzQsNiArNzQs MjIgQEAgZW51bSBlaF90eF90eXBlcyB7DQo+ID4gIAlFSF9UWF9UWVBFX05PX0lOVEVSTkFMX1BP UlQNCj4gPiAgfTsNCj4gPg0KPiA+ICsvKioNCj4gPiArICogRXZlbnQgbW9kZSBpcHNlYyBtb2Rl IHR5cGVzDQo+ID4gKyAqLw0KPiA+ICtlbnVtIGVoX2lwc2VjX21vZGVfdHlwZXMgew0KPiA+ICsJ RUhfSVBTRUNfTU9ERV9UWVBFX0FQUCA9IDAsDQo+ID4gKwlFSF9JUFNFQ19NT0RFX1RZUEVfRFJJ VkVSDQo+ID4gK307DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogRXZlbnQgbW9kZSBpcHNlYyBk aXJlY3Rpb24gdHlwZXMNCj4gPiArICovDQo+ID4gK2VudW0gZWhfaXBzZWNfZGlyX3R5cGVzIHsN Cj4gPiArCUVIX0lQU0VDX0RJUl9UWVBFX09VVEJPVU5EID0gMCwNCj4gPiArCUVIX0lQU0VDX0RJ Ul9UWVBFX0lOQk9VTkQsDQo+ID4gK307DQo+ID4gKw0KPiA+ICAvKiBFdmVudCBkZXYgcGFyYW1z ICovDQo+ID4gIHN0cnVjdCBldmVudGRldl9wYXJhbXMgew0KPiA+ICAJdWludDhfdCBldmVudGRl dl9pZDsNCj4gPiBAQCAtMTgzLDYgKzE5OSwxMiBAQCBzdHJ1Y3QgZWhfY29uZiB7DQo+ID4gIAkJ ICovDQo+ID4gIAl2b2lkICptb2RlX3BhcmFtczsNCj4gPiAgCQkvKio8IE1vZGUgc3BlY2lmaWMg cGFyYW1ldGVycyAqLw0KPiA+ICsNCj4gPiArCQkvKiogQXBwbGljYXRpb24gc3BlY2lmaWMgcGFy YW1zICovDQo+ID4gKwllbnVtIGVoX2lwc2VjX21vZGVfdHlwZXMgaXBzZWNfbW9kZTsNCj4gPiAr CQkvKio8IE1vZGUgb2YgaXBzZWMgcnVuICovDQo+ID4gKwllbnVtIGVoX2lwc2VjX2Rpcl90eXBl cyBpcHNlY19kaXI7DQo+ID4gKwkJLyoqPCBEaXJlY3Rpb24gb2YgaXBzZWMgcHJvY2Vzc2luZyAq Lw0KPiA+ICB9Ow0KPiA+DQo+ID4gIC8qIFdvcmtlcnMgcmVnaXN0ZXJlZCBieSB0aGUgYXBwbGlj YXRpb24gKi8gQEAgLTE5NCw2ICsyMTYsMTAgQEANCj4gPiBzdHJ1Y3QgZWhfYXBwX3dvcmtlcl9w YXJhbXMgew0KPiA+ICAJCQkvKio8IFNwZWNpZnkgc3RhdHVzIG9mIHJ4IHR5cGUgYnVyc3QgKi8N Cj4gPiAgCQkJdWludDY0X3QgdHhfaW50ZXJuYWxfcG9ydCA6IDE7DQo+ID4gIAkJCS8qKjwgU3Bl Y2lmeSB3aGV0aGVyIHR4IGludGVybmFsIHBvcnQgaXMgYXZhaWxhYmxlICovDQo+ID4gKwkJCXVp bnQ2NF90IGlwc2VjX21vZGUgOiAxOw0KPiA+ICsJCQkvKio8IFNwZWNpZnkgaXBzZWMgcHJvY2Vz c2luZyBsZXZlbCAqLw0KPiA+ICsJCQl1aW50NjRfdCBpcHNlY19kaXIgOiAxOw0KPiA+ICsJCQkv Kio8IFNwZWNpZnkgZGlyZWN0aW9uIG9mIGlwc2VjICovDQo+ID4gIAkJfTsNCj4gPiAgCQl1aW50 NjRfdCB1NjQ7DQo+ID4gIAl9IGNhcDsNCj4gPiBkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvaXBzZWMt c2VjZ3cvaXBzZWMtc2VjZ3cuYw0KPiA+IGIvZXhhbXBsZXMvaXBzZWMtc2VjZ3cvaXBzZWMtc2Vj Z3cuYw0KPiA+IGluZGV4IDc1MDY5MjIuLmM1ZDk1YjkgMTAwNjQ0DQo+ID4gLS0tIGEvZXhhbXBs ZXMvaXBzZWMtc2VjZ3cvaXBzZWMtc2VjZ3cuYw0KPiA+ICsrKyBiL2V4YW1wbGVzL2lwc2VjLXNl Y2d3L2lwc2VjLXNlY2d3LmMNCj4gPiBAQCAtMiw2ICsyLDcgQEANCj4gPiAgICogQ29weXJpZ2h0 KGMpIDIwMTYgSW50ZWwgQ29ycG9yYXRpb24NCj4gPiAgICovDQo+ID4NCj4gPiArI2luY2x1ZGUg PHN0ZGJvb2wuaD4NCj4gPiAgI2luY2x1ZGUgPHN0ZGlvLmg+DQo+ID4gICNpbmNsdWRlIDxzdGRs aWIuaD4NCj4gPiAgI2luY2x1ZGUgPHN0ZGludC5oPg0KPiA+IEBAIC0xNCw2ICsxNSw3IEBADQo+ ID4gICNpbmNsdWRlIDxzeXMvcXVldWUuaD4NCj4gPiAgI2luY2x1ZGUgPHN0ZGFyZy5oPg0KPiA+ ICAjaW5jbHVkZSA8ZXJybm8uaD4NCj4gPiArI2luY2x1ZGUgPHNpZ25hbC5oPg0KPiA+ICAjaW5j bHVkZSA8Z2V0b3B0Lmg+DQo+ID4NCj4gPiAgI2luY2x1ZGUgPHJ0ZV9jb21tb24uaD4NCj4gPiBA QCAtNDEsMTIgKzQzLDE3IEBADQo+ID4gICNpbmNsdWRlIDxydGVfamhhc2guaD4NCj4gPiAgI2lu Y2x1ZGUgPHJ0ZV9jcnlwdG9kZXYuaD4NCj4gPiAgI2luY2x1ZGUgPHJ0ZV9zZWN1cml0eS5oPg0K PiA+ICsjaW5jbHVkZSA8cnRlX2JpdG1hcC5oPg0KPiA+ICsjaW5jbHVkZSA8cnRlX2V2ZW50ZGV2 Lmg+DQo+ID4gICNpbmNsdWRlIDxydGVfaXAuaD4NCj4gPiAgI2luY2x1ZGUgPHJ0ZV9pcF9mcmFn Lmg+DQo+ID4NCj4gPiArI2luY2x1ZGUgImV2ZW50X2hlbHBlci5oIg0KPiA+ICAjaW5jbHVkZSAi aXBzZWMuaCINCj4gPiAgI2luY2x1ZGUgInBhcnNlci5oIg0KPiA+DQo+ID4gK3ZvbGF0aWxlIGJv b2wgZm9yY2VfcXVpdDsNCj4gPiArDQo+ID4gICNkZWZpbmUgUlRFX0xPR1RZUEVfSVBTRUMgUlRF X0xPR1RZUEVfVVNFUjENCj4gPg0KPiA+ICAjZGVmaW5lIE1BWF9KVU1CT19QS1RfTEVOICA5NjAw DQo+ID4gQEAgLTEzMywxMiArMTQwLDIxIEBAIHN0cnVjdCBmbG93X2luZm8NCj4gZmxvd19pbmZv X3RibFtSVEVfTUFYX0VUSFBPUlRTXTsNCj4gPiAgI2RlZmluZSBDTURfTElORV9PUFRfQ09ORklH CQkiY29uZmlnIg0KPiA+ICAjZGVmaW5lIENNRF9MSU5FX09QVF9TSU5HTEVfU0EJCSJzaW5nbGUt c2EiDQo+ID4gICNkZWZpbmUgQ01EX0xJTkVfT1BUX0NSWVBUT0RFVl9NQVNLCSJjcnlwdG9kZXZf bWFzayINCj4gPiArI2RlZmluZSBDTURfTElORV9PUFRfVFJBTlNGRVJfTU9ERQkidHJhbnNmZXIt bW9kZSINCj4gPiArI2RlZmluZSBDTURfTElORV9PUFRfU0NIRURVTEVfVFlQRQkic2NoZWR1bGUt dHlwZSINCj4gPiArI2RlZmluZSBDTURfTElORV9PUFRfSVBTRUNfTU9ERQkJInByb2Nlc3MtbW9k ZSINCj4gPiArI2RlZmluZSBDTURfTElORV9PUFRfSVBTRUNfRElSCQkicHJvY2Vzcy1kaXIiDQo+ ID4gICNkZWZpbmUgQ01EX0xJTkVfT1BUX1JYX09GRkxPQUQJCSJyeG9mZmxvYWQiDQo+ID4gICNk ZWZpbmUgQ01EX0xJTkVfT1BUX1RYX09GRkxPQUQJCSJ0eG9mZmxvYWQiDQo+ID4gICNkZWZpbmUg Q01EX0xJTkVfT1BUX1JFQVNTRU1CTEUJCSJyZWFzc2VtYmxlIg0KPiA+ICAjZGVmaW5lIENNRF9M SU5FX09QVF9NVFUJCSJtdHUiDQo+ID4gICNkZWZpbmUgQ01EX0xJTkVfT1BUX0ZSQUdfVFRMCQki ZnJhZy10dGwiDQo+ID4NCj4gPiArI2RlZmluZSBDTURfTElORV9BUkdfQVBQICJhcHAiDQo+ID4g KyNkZWZpbmUgQ01EX0xJTkVfQVJHX0RSViAiZHJ2Ig0KPiA+ICsjZGVmaW5lIENNRF9MSU5FX0FS R19JTkIgImluIg0KPiA+ICsjZGVmaW5lIENNRF9MSU5FX0FSR19PVVQgIm91dCINCj4gPiArDQo+ ID4gIGVudW0gew0KPiA+ICAJLyogbG9uZyBvcHRpb25zIG1hcHBlZCB0byBhIHNob3J0IG9wdGlv biAqLw0KPiA+DQo+ID4gQEAgLTE0OSw3ICsxNjUsMTEgQEAgZW51bSB7DQo+ID4gIAlDTURfTElO RV9PUFRfQ09ORklHX05VTSwNCj4gPiAgCUNNRF9MSU5FX09QVF9TSU5HTEVfU0FfTlVNLA0KPiA+ ICAJQ01EX0xJTkVfT1BUX0NSWVBUT0RFVl9NQVNLX05VTSwNCj4gPiArCUNNRF9MSU5FX09QVF9U UkFOU0ZFUl9NT0RFX05VTSwNCj4gPiArCUNNRF9MSU5FX09QVF9TQ0hFRFVMRV9UWVBFX05VTSwN Cj4gPiAgCUNNRF9MSU5FX09QVF9SWF9PRkZMT0FEX05VTSwNCj4gPiArCUNNRF9MSU5FX09QVF9J UFNFQ19NT0RFX05VTSwNCj4gPiArCUNNRF9MSU5FX09QVF9JUFNFQ19ESVJfTlVNLA0KPiA+ICAJ Q01EX0xJTkVfT1BUX1RYX09GRkxPQURfTlVNLA0KPiA+ICAJQ01EX0xJTkVfT1BUX1JFQVNTRU1C TEVfTlVNLA0KPiA+ICAJQ01EX0xJTkVfT1BUX01UVV9OVU0sDQo+ID4gQEAgLTE2MCw2ICsxODAs MTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvcHRpb24gbGdvcHRzW10gPSB7DQo+ID4gIAl7Q01E X0xJTkVfT1BUX0NPTkZJRywgMSwgMCwgQ01EX0xJTkVfT1BUX0NPTkZJR19OVU19LA0KPiA+ICAJ e0NNRF9MSU5FX09QVF9TSU5HTEVfU0EsIDEsIDAsDQo+IENNRF9MSU5FX09QVF9TSU5HTEVfU0Ff TlVNfSwNCj4gPiAgCXtDTURfTElORV9PUFRfQ1JZUFRPREVWX01BU0ssIDEsIDAsDQo+ID4gQ01E X0xJTkVfT1BUX0NSWVBUT0RFVl9NQVNLX05VTX0sDQo+ID4gKwl7Q01EX0xJTkVfT1BUX1RSQU5T RkVSX01PREUsIDEsIDAsDQo+IENNRF9MSU5FX09QVF9UUkFOU0ZFUl9NT0RFX05VTX0sDQo+ID4g Kwl7Q01EX0xJTkVfT1BUX1NDSEVEVUxFX1RZUEUsIDEsIDAsDQo+IENNRF9MSU5FX09QVF9TQ0hF RFVMRV9UWVBFX05VTX0sDQo+ID4gKwl7Q01EX0xJTkVfT1BUX0lQU0VDX01PREUsIDEsIDAsDQo+ IENNRF9MSU5FX09QVF9JUFNFQ19NT0RFX05VTX0sDQo+ID4gKwl7Q01EX0xJTkVfT1BUX0lQU0VD X0RJUiwgMSwgMCwNCj4gQ01EX0xJTkVfT1BUX0lQU0VDX0RJUl9OVU19LA0KPiA+ICAJe0NNRF9M SU5FX09QVF9SWF9PRkZMT0FELCAxLCAwLA0KPiBDTURfTElORV9PUFRfUlhfT0ZGTE9BRF9OVU19 LA0KPiA+ICAJe0NNRF9MSU5FX09QVF9UWF9PRkZMT0FELCAxLCAwLA0KPiBDTURfTElORV9PUFRf VFhfT0ZGTE9BRF9OVU19LA0KPiA+ICAJe0NNRF9MSU5FX09QVF9SRUFTU0VNQkxFLCAxLCAwLA0K PiBDTURfTElORV9PUFRfUkVBU1NFTUJMRV9OVU19LCBAQA0KPiA+IC0xMDk0LDggKzExMTgsOCBA QCBkcmFpbl9vdXRib3VuZF9jcnlwdG9fcXVldWVzKGNvbnN0IHN0cnVjdA0KPiA+IGxjb3JlX2Nv bmYgKnFjb25mLCAgfQ0KPiA+DQo+ID4gIC8qIG1haW4gcHJvY2Vzc2luZyBsb29wICovDQo+ID4g LXN0YXRpYyBpbnQzMl90DQo+ID4gLW1haW5fbG9vcChfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSB2 b2lkICpkdW1teSkNCj4gPiArdm9pZA0KPiA+ICtpcHNlY19wb2xsX21vZGVfd29ya2VyKHZvaWQp DQo+ID4gIHsNCj4gPiAgCXN0cnVjdCBydGVfbWJ1ZiAqcGt0c1tNQVhfUEtUX0JVUlNUXTsNCj4g PiAgCXVpbnQzMl90IGxjb3JlX2lkOw0KPiA+IEBAIC0xMTM3LDcgKzExNjEsNyBAQCBtYWluX2xv b3AoX19hdHRyaWJ1dGVfXygodW51c2VkKSkgdm9pZA0KPiAqZHVtbXkpDQo+ID4gIAlpZiAocWNv bmYtPm5iX3J4X3F1ZXVlID09IDApIHsNCj4gPiAgCQlSVEVfTE9HKERFQlVHLCBJUFNFQywgImxj b3JlICV1IGhhcyBub3RoaW5nIHRvIGRvXG4iLA0KPiA+ICAJCQlsY29yZV9pZCk7DQo+ID4gLQkJ cmV0dXJuIDA7DQo+ID4gKwkJcmV0dXJuOw0KPiA+ICAJfQ0KPiA+DQo+ID4gIAlSVEVfTE9HKElO Rk8sIElQU0VDLCAiZW50ZXJpbmcgbWFpbiBsb29wIG9uIGxjb3JlICV1XG4iLCBsY29yZV9pZCk7 DQo+ID4gQEAgLTExNTAsNyArMTE3NCw3IEBAIG1haW5fbG9vcChfX2F0dHJpYnV0ZV9fKCh1bnVz ZWQpKSB2b2lkDQo+ICpkdW1teSkNCj4gPiAgCQkJbGNvcmVfaWQsIHBvcnRpZCwgcXVldWVpZCk7 DQo+ID4gIAl9DQo+ID4NCj4gPiAtCXdoaWxlICgxKSB7DQo+ID4gKwl3aGlsZSAoIWZvcmNlX3F1 aXQpIHsNCj4gPiAgCQljdXJfdHNjID0gcnRlX3JkdHNjKCk7DQo+ID4NCj4gPiAgCQkvKiBUWCBx dWV1ZSBidWZmZXIgZHJhaW4gKi8NCj4gPiBAQCAtMTI3Nyw2ICsxMzAxLDEwIEBAIHByaW50X3Vz YWdlKGNvbnN0IGNoYXIgKnByZ25hbWUpDQo+ID4gIAkJIiAtLWNvbmZpZyAocG9ydCxxdWV1ZSxs Y29yZSlbLChwb3J0LHF1ZXVlLGxjb3JlKV0iDQo+ID4gIAkJIiBbLS1zaW5nbGUtc2EgU0FJRFhd Ig0KPiA+ICAJCSIgWy0tY3J5cHRvZGV2X21hc2sgTUFTS10iDQo+ID4gKwkJIiBbLS10cmFuc2Zl ci1tb2RlIE1PREVdIg0KPiA+ICsJCSIgWy0tc2NoZWR1bGUtdHlwZSBUWVBFXSINCj4gPiArCQki IFstLXByb2Nlc3MtbW9kZSBNT0RFXSINCj4gPiArCQkiIFstLXByb2Nlc3MtZGlyIERJUl0iDQo+ ID4gIAkJIiBbLS0iIENNRF9MSU5FX09QVF9SWF9PRkZMT0FEICIgUlhfT0ZGTE9BRF9NQVNLXSIN Cj4gPiAgCQkiIFstLSIgQ01EX0xJTkVfT1BUX1RYX09GRkxPQUQgIiBUWF9PRkZMT0FEX01BU0td Ig0KPiA+ICAJCSIgWy0tIiBDTURfTElORV9PUFRfUkVBU1NFTUJMRSAiDQo+IFJFQVNTRU1CTEVf VEFCTEVfU0laRV0iDQo+ID4gQEAgLTEyOTgsNiArMTMyNiwyMiBAQCBwcmludF91c2FnZShjb25z dCBjaGFyICpwcmduYW1lKQ0KPiA+ICAJCSIgICAgICAgICAgICAgICAgICAgICBieXBhc3Npbmcg dGhlIFNQXG4iDQo+ID4gIAkJIiAgLS1jcnlwdG9kZXZfbWFzayBNQVNLOiBIZXhhZGVjaW1hbCBi aXRtYXNrIG9mIHRoZQ0KPiBjcnlwdG9cbiINCj4gPiAgCQkiICAgICAgICAgICAgICAgICAgICAg ICAgIGRldmljZXMgdG8gY29uZmlndXJlXG4iDQo+ID4gKwkJIiAgLS10cmFuc2Zlci1tb2RlIE1P REVcbiINCj4gPiArCQkiICAgICAgICAgICAgICAgMDogUGFja2V0IHRyYW5zZmVyIHZpYSBwb2xs aW5nIChkZWZhdWx0KVxuIg0KPiA+ICsJCSIgICAgICAgICAgICAgICAxOiBQYWNrZXQgdHJhbnNm ZXIgdmlhIGV2ZW50ZGV2XG4iDQo+ID4gKwkJIiAgLS1zY2hlZHVsZS10eXBlIFRZUEUgcXVldWUg c2NoZWR1bGUgdHlwZSwgdXNlZCBvbmx5DQo+IHdoZW5cbiINCj4gPiArCQkiICAgICAgICAgICAg ICAgICAgICAgICB0cmFuc2ZlciBtb2RlIGlzIHNldCB0byBldmVudGRldlxuIg0KPiA+ICsJCSIg ICAgICAgICAgICAgICAwOiBPcmRlcmVkIChkZWZhdWx0KVxuIg0KPiA+ICsJCSIgICAgICAgICAg ICAgICAxOiBBdG9taWNcbiINCj4gPiArCQkiICAgICAgICAgICAgICAgMjogUGFyYWxsZWxcbiIN Cj4gDQo+IEZvciBsYXN0IHR3bywgd2h5IG5vdCBzb21ldGhpbmcgaHVtYS1yZWFkYWJsZT8NCj4g SS5FLiA9PSAtLXRyYW5mZXItbW9kZT0ocG9sbHxldmVudCkgb3Igc28uDQo+IFNhbWUgZm9yIHNj aGVkdWxlLXR5cGUuDQoNCltBbm9vYl0gV2lsbCBkbyBzbyBpbiB2Mi4NCiANCj4gDQo+ID4gKwkJ IiAgLS1wcm9jZXNzLW1vZGUgTU9ERSBwcm9jZXNzaW5nIG1vZGUsIHVzZWQgb25seQ0KPiB3aGVu XG4iDQo+ID4gKwkJIiAgICAgICAgICAgICAgICAgICAgICB0cmFuc2ZlciBtb2RlIGlzIHNldCB0 byBldmVudGRldlxuIg0KPiA+ICsJCSIgICAgICAgICAgICAgICBcImFwcFwiIDogYXBwbGljYXRp b24gbW9kZSAoZGVmYXVsdClcbiINCj4gPiArCQkiICAgICAgICAgICAgICAgXCJkcnZcIiA6IGRy aXZlciBtb2RlXG4iDQo+ID4gKwkJIiAgLS1wcm9jZXNzLWRpciBESVIgcHJvY2Vzc2luZyBkaXJl Y3Rpb24sIHVzZWQgb25seSB3aGVuXG4iDQo+ID4gKwkJIiAgICAgICAgICAgICAgICAgICAgdHJh bnNmZXIgbW9kZSBpcyBzZXQgdG8gZXZlbnRkZXZcbiINCj4gPiArCQkiICAgICAgICAgICAgICAg XCJvdXRcIiA6IG91dGJvdW5kIChkZWZhdWx0KVxuIg0KPiA+ICsJCSIgICAgICAgICAgICAgICBc ImluXCIgIDogaW5ib3VuZFxuIg0KPiANCj4gSG1tIGFuZCB3aHkgaW4gZXZlbnRkZXYgbW9kZSBp dCBpcyBub3QgcG9zc2libGUgdG8gaGFuZGxlIGJvdGggaW5ib3VuZA0KPiBhbmQgb3V0Ym91bmQg dHJhZmZpYz8NCj4gV2hlcmUgaXMgdGhlIGxpbWl0YXRpb246IGV2ZW50ZGV2IGZyYW1ld29yay9Q TUQvaXBzZWMtc2VjZ3c/DQoNCltBbm9vYl0gSXQncyBub3QgYSBsaW1pdGF0aW9uIG9mIGFueSBv ZiB0aGUgbm9kZXMuIFRoZSBjdXJyZW50IGlwc2VjLXNlZ2N3IGhhcyBhIGRhdGEgcGF0aCBjaGVj ayBvZiBwb3J0IHRvIGRldGVybWluZSB3aGV0aGVyIGluYm91bmQgb3Igb3V0Ym91bmQgcHJvY2Vz c2luZyBuZWVkIHRvIGJlIGRvbmUuIEluIGNhc2Ugb2YgcG9sbC1tb2RlLCB3ZSBoYXZlIHNwZWNp ZmljIGNvcmVzIHBvbGxpbmcgZml4ZWQgZXRoIHBvcnQgJiBxdWV1ZS4gU28gdGhlIGV4dHJhIGNo ZWNrIGludm9sdmVkIGRvZXNuJ3QgY29zdCBtdWNoLg0KDQpCdXQgaW4gY2FzZSBvZiBldmVudC1t b2RlLCB3ZSB3aWxsIGhhdmUgYm90aCBpbmJvdW5kICYgb3V0Ym91bmQgcGFja2V0cyBlbmRpbmcg dXAgb24gc2FtZSBjb3JlLiBTbyB0aGUgcGVuYWx0eSBvZiBydW5uaW5nIGluYm91bmQgJiBvdXRi b3VuZCBhdCB0aGUgc2FtZSB0aW1lIChhbmQgcmVseWluZyBvbiBkYXRhIHBhdGggY2hlY2spIGlz IG1vcmUgaW4gY2FzZSBvZiBldmVudCBtb2RlLiBGb3IgaW5saW5lIGlwc2VjIGltcGxlbWVudGF0 aW9uLCB0aGlzIGltcGFjdCBpc24ndCB0aGF0IG11Y2ggYW5kIHdlIHdlcmUgYWJsZSB0byBtaW5p bWl6ZSB0aGUgcGVyZiBkZWdyYWRhdGlvbiB0byAxJS4gSSB3b3VsZCBleHBlY3QgbG9va2FzaWRl IGNyeXB0by9wcm90b2NvbCB0byBoYXZlIGhpZ2hlciBpbXBhY3RzLiANCg0KU2FpZCB0aGF0LCBJ J20gb2theSB3aXRoIHJlbW92aW5nIHRoZSBleHRyYSBvcHRpb24gYW5kIHJldGFpbmluZyB0aGUg Y3VycmVudCBiZWhhdmlvci4gSWYgeW91IHRoaW5rIHNpbmdsZSBpbnN0YW5jZSBvZiBpcHNlYy1z ZWNndyBzaG91bGQgd29yayBiaWRpcmVjdGlvbmFsLCBJIGNhbiBtYWtlIHRoZSByZXF1aXJlZCBj aGFuZ2VzIGFuZCBzZWUgdGhlIHBlcmYgaW1wYWN0Lg0KDQo+IA0KPiA+ICAJCSIgIC0tIiBDTURf TElORV9PUFRfUlhfT0ZGTE9BRA0KPiA+ICAJCSI6IGJpdG1hc2sgb2YgdGhlIFJYIEhXIG9mZmxv YWQgY2FwYWJpbGl0aWVzIHRvIGVuYWJsZS91c2VcbiINCj4gPiAgCQkiICAgICAgICAgICAgICAg ICAgICAgICAgIChERVZfUlhfT0ZGTE9BRF8qKVxuIg0KPiA+IEBAIC0xNDMzLDcgKzE0NzcsODkg QEAgcHJpbnRfYXBwX3NhX3BybShjb25zdCBzdHJ1Y3QgYXBwX3NhX3BybQ0KPiAqcHJtKQ0KPiA+ IH0NCj4gPg0KPiA+ICBzdGF0aWMgaW50MzJfdA0KPiA+IC1wYXJzZV9hcmdzKGludDMyX3QgYXJn YywgY2hhciAqKmFyZ3YpDQo+ID4gK2VoX3BhcnNlX2RlY2ltYWwoY29uc3QgY2hhciAqc3RyKQ0K PiA+ICt7DQo+ID4gKwl1bnNpZ25lZCBsb25nIG51bTsNCj4gPiArCWNoYXIgKmVuZCA9IE5VTEw7 DQo+ID4gKw0KPiA+ICsJbnVtID0gc3RydG91bChzdHIsICZlbmQsIDEwKTsNCj4gPiArCWlmICgo c3RyWzBdID09ICdcMCcpIHx8IChlbmQgPT0gTlVMTCkgfHwgKCplbmQgIT0gJ1wwJykpDQo+ID4g KwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIG51bTsNCj4gPiArfQ0KPiAN Cj4gVGhlcmUgYWxyZWFkeSBleGlzdHMgcGFyc2VfZGVjaW1hbCgpLCB3aHkgdG8gY3JlYXRlIGEg ZHVwPw0KDQpbQW5vb2JdIFdpbGwgdGhpcyBpbiB2Mi4NCg0KPiANCj4gPiArDQo+ID4gK3N0YXRp YyBpbnQNCj4gPiArcGFyc2VfdHJhbnNmZXJfbW9kZShzdHJ1Y3QgZWhfY29uZiAqY29uZiwgY29u c3QgY2hhciAqb3B0YXJnKSB7DQo+ID4gKwlpbnQzMl90IHBhcnNlZF9kZWM7DQo+ID4gKw0KPiA+ ICsJcGFyc2VkX2RlYyA9IGVoX3BhcnNlX2RlY2ltYWwob3B0YXJnKTsNCj4gPiArCWlmIChwYXJz ZWRfZGVjICE9IEVIX1BLVF9UUkFOU0ZFUl9NT0RFX1BPTEwgJiYNCj4gPiArCSAgICBwYXJzZWRf ZGVjICE9IEVIX1BLVF9UUkFOU0ZFUl9NT0RFX0VWRU5UKSB7DQo+ID4gKwkJcHJpbnRmKCJVbnN1 cHBvcnRlZCBwYWNrZXQgdHJhbnNmZXIgbW9kZSIpOw0KPiA+ICsJCXJldHVybiAtRUlOVkFMOw0K PiA+ICsJfQ0KPiA+ICsJY29uZi0+bW9kZSA9IHBhcnNlZF9kZWM7DQo+ID4gKwlyZXR1cm4gMDsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludA0KPiA+ICtwYXJzZV9zY2hlZHVsZV90eXBl KHN0cnVjdCBlaF9jb25mICpjb25mLCBjb25zdCBjaGFyICpvcHRhcmcpIHsNCj4gPiArCXN0cnVj dCBldmVudG1vZGVfY29uZiAqZW1fY29uZiA9IE5VTEw7DQo+ID4gKwlpbnQzMl90IHBhcnNlZF9k ZWM7DQo+ID4gKw0KPiA+ICsJcGFyc2VkX2RlYyA9IGVoX3BhcnNlX2RlY2ltYWwob3B0YXJnKTsN Cj4gPiArCWlmIChwYXJzZWRfZGVjICE9IFJURV9TQ0hFRF9UWVBFX09SREVSRUQgJiYNCj4gPiAr CSAgICBwYXJzZWRfZGVjICE9IFJURV9TQ0hFRF9UWVBFX0FUT01JQyAmJg0KPiA+ICsJICAgIHBh cnNlZF9kZWMgIT0gUlRFX1NDSEVEX1RZUEVfUEFSQUxMRUwpDQo+ID4gKwkJcmV0dXJuIC1FSU5W QUw7DQo+ID4gKw0KPiA+ICsJLyogR2V0IGV2ZW50bW9kZSBjb25mICovDQo+ID4gKwllbV9jb25m ID0gKHN0cnVjdCBldmVudG1vZGVfY29uZiAqKShjb25mLT5tb2RlX3BhcmFtcyk7DQo+ID4gKw0K PiA+ICsJZW1fY29uZi0+ZXh0X3BhcmFtcy5zY2hlZF90eXBlID0gcGFyc2VkX2RlYzsNCj4gPiAr DQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludA0KPiA+ICtw YXJzZV9pcHNlY19tb2RlKHN0cnVjdCBlaF9jb25mICpjb25mLCBjb25zdCBjaGFyICpvcHRhcmcp IHsNCj4gPiArCWlmICghc3RybmNtcChDTURfTElORV9BUkdfQVBQLCBvcHRhcmcsDQo+IHN0cmxl bihDTURfTElORV9BUkdfQVBQKSkgJiYNCj4gPiArCSAgICBzdHJsZW4ob3B0YXJnKSA9PSBzdHJs ZW4oQ01EX0xJTkVfQVJHX0FQUCkpDQo+IA0KPiBVZ2gsIHRoYXQncyBhbiB1Z2x5IGNvbnN0cnVj dGlvbiwgd2h5IG5vdCBqdXN0Og0KPiBpZiAoc3RyY21wKENNRF9MSU5FX0FSR19BUFAsIG9wdGFy ZykgPT0gMCkgPw0KDQpbQW5vb2JdIFdpbGwgZml4IHRoaXMgaW4gdjIuDQoNCj4gDQo+ID4gKwkJ Y29uZi0+aXBzZWNfbW9kZSA9IEVIX0lQU0VDX01PREVfVFlQRV9BUFA7DQo+ID4gKwllbHNlIGlm ICghc3RybmNtcChDTURfTElORV9BUkdfRFJWLCBvcHRhcmcsDQo+IHN0cmxlbihDTURfTElORV9B UkdfRFJWKSkgJiYNCj4gPiArCQkgc3RybGVuKG9wdGFyZykgPT0gc3RybGVuKENNRF9MSU5FX0FS R19EUlYpKQ0KPiA+ICsJCWNvbmYtPmlwc2VjX21vZGUgPSBFSF9JUFNFQ19NT0RFX1RZUEVfRFJJ VkVSOw0KPiA+ICsJZWxzZSB7DQo+ID4gKwkJcHJpbnRmKCJVbnN1cHBvcnRlZCBpcHNlYyBtb2Rl XG4iKTsNCj4gPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlyZXR1 cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludA0KPiA+ICtwYXJzZV9pcHNlY19k aXIoc3RydWN0IGVoX2NvbmYgKmNvbmYsIGNvbnN0IGNoYXIgKm9wdGFyZykgew0KPiA+ICsJaWYg KCFzdHJuY21wKENNRF9MSU5FX0FSR19JTkIsIG9wdGFyZywNCj4gc3RybGVuKENNRF9MSU5FX0FS R19JTkIpKSAmJg0KPiA+ICsJICAgIHN0cmxlbihvcHRhcmcpID09IHN0cmxlbihDTURfTElORV9B UkdfSU5CKSkNCj4gPiArCQljb25mLT5pcHNlY19kaXIgPSBFSF9JUFNFQ19ESVJfVFlQRV9JTkJP VU5EOw0KPiA+ICsJZWxzZSBpZiAoIXN0cm5jbXAoQ01EX0xJTkVfQVJHX09VVCwgb3B0YXJnLA0K PiBzdHJsZW4oQ01EX0xJTkVfQVJHX09VVCkpICYmDQo+ID4gKwkJIHN0cmxlbihvcHRhcmcpID09 IHN0cmxlbihDTURfTElORV9BUkdfT1VUKSkNCj4gPiArCQljb25mLT5pcHNlY19kaXIgPSBFSF9J UFNFQ19ESVJfVFlQRV9PVVRCT1VORDsNCj4gPiArCWVsc2Ugew0KPiA+ICsJCXByaW50ZigiVW5z dXBwb3J0ZWQgaXBzZWMgZGlyZWN0aW9uXG4iKTsNCj4gPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4g PiArCX0NCj4gPiArDQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGlj IGludDMyX3QNCj4gPiArcGFyc2VfYXJncyhpbnQzMl90IGFyZ2MsIGNoYXIgKiphcmd2LCBzdHJ1 Y3QgZWhfY29uZiAqZWhfY29uZikNCj4gPiAgew0KPiA+ICAJaW50IG9wdDsNCj4gPiAgCWludDY0 X3QgcmV0Ow0KPiA+IEBAIC0xNTM2LDYgKzE2NjIsNDMgQEAgcGFyc2VfYXJncyhpbnQzMl90IGFy Z2MsIGNoYXIgKiphcmd2KQ0KPiA+ICAJCQkvKiBlbHNlICovDQo+ID4gIAkJCWVuYWJsZWRfY3J5 cHRvZGV2X21hc2sgPSByZXQ7DQo+ID4gIAkJCWJyZWFrOw0KPiA+ICsNCj4gPiArCQljYXNlIENN RF9MSU5FX09QVF9UUkFOU0ZFUl9NT0RFX05VTToNCj4gPiArCQkJcmV0ID0gcGFyc2VfdHJhbnNm ZXJfbW9kZShlaF9jb25mLCBvcHRhcmcpOw0KPiA+ICsJCQlpZiAocmV0IDwgMCkgew0KPiA+ICsJ CQkJcHJpbnRmKCJJbnZhbGlkIHBhY2tldCB0cmFuc2ZlciBtb2RlXG4iKTsNCj4gPiArCQkJCXBy aW50X3VzYWdlKHByZ25hbWUpOw0KPiA+ICsJCQkJcmV0dXJuIC0xOw0KPiA+ICsJCQl9DQo+ID4g KwkJCWJyZWFrOw0KPiA+ICsNCj4gPiArCQljYXNlIENNRF9MSU5FX09QVF9TQ0hFRFVMRV9UWVBF X05VTToNCj4gPiArCQkJcmV0ID0gcGFyc2Vfc2NoZWR1bGVfdHlwZShlaF9jb25mLCBvcHRhcmcp Ow0KPiA+ICsJCQlpZiAocmV0IDwgMCkgew0KPiA+ICsJCQkJcHJpbnRmKCJJbnZhbGlkIHF1ZXVl IHNjaGVkdWxlIHR5cGVcbiIpOw0KPiA+ICsJCQkJcHJpbnRfdXNhZ2UocHJnbmFtZSk7DQo+ID4g KwkJCQlyZXR1cm4gLTE7DQo+ID4gKwkJCX0NCj4gPiArCQkJYnJlYWs7DQo+ID4gKw0KPiA+ICsJ CWNhc2UgQ01EX0xJTkVfT1BUX0lQU0VDX01PREVfTlVNOg0KPiA+ICsJCQlyZXQgPSBwYXJzZV9p cHNlY19tb2RlKGVoX2NvbmYsIG9wdGFyZyk7DQo+ID4gKwkJCWlmIChyZXQgPCAwKSB7DQo+ID4g KwkJCQlwcmludGYoIkludmFsaWQgaXBzZWMgbW9kZVxuIik7DQo+ID4gKwkJCQlwcmludF91c2Fn ZShwcmduYW1lKTsNCj4gPiArCQkJCXJldHVybiAtMTsNCj4gPiArCQkJfQ0KPiA+ICsJCQlicmVh azsNCj4gPiArDQo+ID4gKwkJY2FzZSBDTURfTElORV9PUFRfSVBTRUNfRElSX05VTToNCj4gPiAr CQkJcmV0ID0gcGFyc2VfaXBzZWNfZGlyKGVoX2NvbmYsIG9wdGFyZyk7DQo+ID4gKwkJCWlmIChy ZXQgPCAwKSB7DQo+ID4gKwkJCQlwcmludGYoIkludmFsaWQgaXBzZWMgZGlyZWN0aW9uXG4iKTsN Cj4gPiArCQkJCXByaW50X3VzYWdlKHByZ25hbWUpOw0KPiA+ICsJCQkJcmV0dXJuIC0xOw0KPiA+ ICsJCQl9DQo+ID4gKwkJCWJyZWFrOw0KPiA+ICsNCj4gPiAgCQljYXNlIENNRF9MSU5FX09QVF9S WF9PRkZMT0FEX05VTToNCj4gPiAgCQkJcmV0ID0gcGFyc2VfbWFzayhvcHRhcmcsICZkZXZfcnhf b2ZmbG9hZCk7DQo+ID4gIAkJCWlmIChyZXQgIT0gMCkgew0KPiA+IEBAIC0yNDU3LDYgKzI2MjAs MTMyIEBAIGNyZWF0ZV9kZWZhdWx0X2lwc2VjX2Zsb3codWludDE2X3QgcG9ydF9pZCwNCj4gdWlu dDY0X3Qgcnhfb2ZmbG9hZHMpDQo+ID4gIAlyZXR1cm4gcmV0Ow0KPiA+ICB9DQo+ID4NCj4gPiAr c3RhdGljIHN0cnVjdCBlaF9jb25mICoNCj4gPiArZWhfY29uZl9pbml0KHZvaWQpDQo+ID4gK3sN Cj4gPiArCXN0cnVjdCBldmVudG1vZGVfY29uZiAqZW1fY29uZiA9IE5VTEw7DQo+ID4gKwlzdHJ1 Y3QgZWhfY29uZiAqY29uZiA9IE5VTEw7DQo+ID4gKwl1bnNpZ25lZCBpbnQgZXRoX2NvcmVfaWQ7 DQo+ID4gKwl1aW50MzJfdCBuYl9ieXRlczsNCj4gPiArCXZvaWQgKm1lbSA9IE5VTEw7DQo+ID4g Kw0KPiA+ICsJLyogQWxsb2NhdGUgbWVtb3J5IGZvciBjb25maWcgKi8NCj4gPiArCWNvbmYgPSBj YWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBlaF9jb25mKSk7DQo+ID4gKwlpZiAoY29uZiA9PSBOVUxM KSB7DQo+ID4gKwkJcHJpbnRmKCJGYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBldmVudG1v ZGUgaGVscGVyDQo+IGNvbmYiKTsNCj4gPiArCQlnb3RvIGVycjsNCj4gPiArCX0NCj4gPiArDQo+ ID4gKwkvKiBTZXQgZGVmYXVsdCBjb25mICovDQo+ID4gKw0KPiA+ICsJLyogUGFja2V0IHRyYW5z ZmVyIG1vZGU6IHBvbGwgKi8NCj4gPiArCWNvbmYtPm1vZGUgPSBFSF9QS1RfVFJBTlNGRVJfTU9E RV9QT0xMOw0KPiA+ICsJY29uZi0+aXBzZWNfbW9kZSA9IEVIX0lQU0VDX01PREVfVFlQRV9BUFA7 DQo+ID4gKwljb25mLT5pcHNlY19kaXIgPSBFSF9JUFNFQ19ESVJfVFlQRV9PVVRCT1VORDsNCj4g PiArDQo+ID4gKwkvKiBLZWVwIGFsbCBldGhlcm5ldCBwb3J0cyBlbmFibGVkIGJ5IGRlZmF1bHQg Ki8NCj4gPiArCWNvbmYtPmV0aF9wb3J0bWFzayA9IC0xOw0KPiA+ICsNCj4gPiArCS8qIEFsbG9j YXRlIG1lbW9yeSBmb3IgZXZlbnQgbW9kZSBwYXJhbXMgKi8NCj4gPiArCWNvbmYtPm1vZGVfcGFy YW1zID0NCj4gPiArCQljYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBldmVudG1vZGVfY29uZikpOw0K PiA+ICsJaWYgKGNvbmYtPm1vZGVfcGFyYW1zID09IE5VTEwpIHsNCj4gPiArCQlwcmludGYoIkZh aWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIGV2ZW50IG1vZGUgcGFyYW1zIik7DQo+ID4gKwkJ Z290byBlcnI7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJLyogR2V0IGV2ZW50bW9kZSBjb25mICov DQo+ID4gKwllbV9jb25mID0gKHN0cnVjdCBldmVudG1vZGVfY29uZiAqKShjb25mLT5tb2RlX3Bh cmFtcyk7DQo+ID4gKw0KPiA+ICsJLyogQWxsb2NhdGUgYW5kIGluaXRpYWxpemUgYml0bWFwIGZv ciBldGggY29yZXMgKi8NCj4gPiArCW5iX2J5dGVzID0gcnRlX2JpdG1hcF9nZXRfbWVtb3J5X2Zv b3RwcmludChSVEVfTUFYX0xDT1JFKTsNCj4gPiArCWlmICghbmJfYnl0ZXMpIHsNCj4gPiArCQlw cmludGYoIkZhaWxlZCB0byBnZXQgYml0bWFwIGZvb3RwcmludCIpOw0KPiA+ICsJCWdvdG8gZXJy Ow0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCW1lbSA9IHJ0ZV96bWFsbG9jKCJldmVudC1oZWxwZXIt ZXRoY29yZS1iaXRtYXAiLCBuYl9ieXRlcywNCj4gPiArCQkJICBSVEVfQ0FDSEVfTElORV9TSVpF KTsNCj4gPiArCWlmICghbWVtKSB7DQo+ID4gKwkJcHJpbnRmKCJGYWlsZWQgdG8gYWxsb2NhdGUg bWVtb3J5IGZvciBldGggY29yZXMgYml0bWFwXG4iKTsNCj4gPiArCQlnb3RvIGVycjsNCj4gPiAr CX0NCj4gPiArDQo+ID4gKwllbV9jb25mLT5ldGhfY29yZV9tYXNrID0gcnRlX2JpdG1hcF9pbml0 KFJURV9NQVhfTENPUkUsDQo+IG1lbSwgbmJfYnl0ZXMpOw0KPiA+ICsJaWYgKCFlbV9jb25mLT5l dGhfY29yZV9tYXNrKSB7DQo+ID4gKwkJcHJpbnRmKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBiaXRt YXAiKTsNCj4gPiArCQlnb3RvIGVycjsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwkvKiBTY2hlZHVs ZSB0eXBlOiBvcmRlcmVkICovDQo+ID4gKwllbV9jb25mLT5leHRfcGFyYW1zLnNjaGVkX3R5cGUg PSBSVEVfU0NIRURfVFlQRV9PUkRFUkVEOw0KPiA+ICsNCj4gPiArCS8qIFNldCB0d28gY29yZXMg YXMgZXRoIGNvcmVzIGZvciBSeCAmIFR4ICovDQo+ID4gKw0KPiA+ICsJLyogVXNlIGZpcnN0IGNv cmUgb3RoZXIgdGhhbiBtYXN0ZXIgY29yZSBhcyBSeCBjb3JlICovDQo+ID4gKwlldGhfY29yZV9p ZCA9IHJ0ZV9nZXRfbmV4dF9sY29yZSgwLAkvKiBjdXJyIGNvcmUgKi8NCj4gPiArCQkJCQkgMSwJ Lyogc2tpcCBtYXN0ZXIgY29yZSAqLw0KPiA+ICsJCQkJCSAwCS8qIHdyYXAgKi8pOw0KPiA+ICsN Cj4gPiArCXJ0ZV9iaXRtYXBfc2V0KGVtX2NvbmYtPmV0aF9jb3JlX21hc2ssIGV0aF9jb3JlX2lk KTsNCj4gPiArDQo+ID4gKwkvKiBVc2UgbmV4dCBjb3JlIGFzIFR4IGNvcmUgKi8NCj4gPiArCWV0 aF9jb3JlX2lkID0gcnRlX2dldF9uZXh0X2xjb3JlKGV0aF9jb3JlX2lkLAkvKiBjdXJyIGNvcmUN Cj4gKi8NCj4gPiArCQkJCQkgMSwJCS8qIHNraXAgbWFzdGVyIGNvcmUgKi8NCj4gPiArCQkJCQkg MAkJLyogd3JhcCAqLyk7DQo+ID4gKw0KPiA+ICsJcnRlX2JpdG1hcF9zZXQoZW1fY29uZi0+ZXRo X2NvcmVfbWFzaywgZXRoX2NvcmVfaWQpOw0KPiA+ICsNCj4gPiArCXJldHVybiBjb25mOw0KPiA+ ICtlcnI6DQo+ID4gKwlydGVfZnJlZShtZW0pOw0KPiA+ICsJZnJlZShlbV9jb25mKTsNCj4gPiAr CWZyZWUoY29uZik7DQo+ID4gKwlyZXR1cm4gTlVMTDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3Rh dGljIHZvaWQNCj4gPiArZWhfY29uZl91bmluaXQoc3RydWN0IGVoX2NvbmYgKmNvbmYpDQo+ID4g K3sNCj4gPiArCXN0cnVjdCBldmVudG1vZGVfY29uZiAqZW1fY29uZiA9IE5VTEw7DQo+ID4gKw0K PiA+ICsJLyogR2V0IGV2ZW50bW9kZSBjb25mICovDQo+ID4gKwllbV9jb25mID0gKHN0cnVjdCBl dmVudG1vZGVfY29uZiAqKShjb25mLT5tb2RlX3BhcmFtcyk7DQo+ID4gKw0KPiA+ICsJLyogRnJl ZSBldmVubW9kZSBjb25maWd1cmF0aW9uIG1lbW9yeSAqLw0KPiA+ICsJcnRlX2ZyZWUoZW1fY29u Zi0+ZXRoX2NvcmVfbWFzayk7DQo+ID4gKwlmcmVlKGVtX2NvbmYpOw0KPiA+ICsJZnJlZShjb25m KTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQNCj4gPiArc2lnbmFsX2hhbmRsZXIo aW50IHNpZ251bSkNCj4gPiArew0KPiA+ICsJaWYgKHNpZ251bSA9PSBTSUdJTlQgfHwgc2lnbnVt ID09IFNJR1RFUk0pIHsNCj4gPiArCQl1aW50MTZfdCBwb3J0X2lkOw0KPiA+ICsJCXByaW50Zigi XG5cblNpZ25hbCAlZCByZWNlaXZlZCwgcHJlcGFyaW5nIHRvIGV4aXQuLi5cbiIsDQo+ID4gKwkJ CQlzaWdudW0pOw0KPiA+ICsJCWZvcmNlX3F1aXQgPSB0cnVlOw0KPiA+ICsNCj4gPiArCQkvKiBE ZXN0cm95IHRoZSBkZWZhdWx0IGlwc2VjIGZsb3cgKi8NCj4gPiArCQlSVEVfRVRIX0ZPUkVBQ0hf REVWKHBvcnRfaWQpIHsNCj4gPiArCQkJaWYgKChlbmFibGVkX3BvcnRfbWFzayAmICgxIDw8IHBv cnRfaWQpKSA9PSAwKQ0KPiA+ICsJCQkJY29udGludWU7DQo+ID4gKwkJCWlmIChmbG93X2luZm9f dGJsW3BvcnRfaWRdLnJ4X2RlZl9mbG93KSB7DQo+ID4gKwkJCQlzdHJ1Y3QgcnRlX2Zsb3dfZXJy b3IgZXJyOw0KPiA+ICsJCQkJaW50IHJldDsNCj4gDQo+IEFzIHdlIGFyZSBnb2luZyB0byBjYWxs IGRldl9zdG9wKCksIGV0Yy4gYXQgZm9yY2VfcXVpdCBiZWxvdywgaXMgdGhlcmUgYW55DQo+IHJl YXNvbiB0byBjYWxsIHJ0ZV9mbG93X2Rlc3Ryb3koKSBoZXJlPw0KPiBKdXN0IGN1cmlvdXMuDQoN CltBbm9vYl0gZGV2X3N0b3AoKSBzaG91bGQgY2xlYXIgYWxsIHRoZSBydGVfZmxvdyBlbnRyaWVz LiBCdXQgZG9pbmcgaXQgZnJvbSB0aGUgYXBwIGFzIGEgZ29vZCBjaXRpemVuLiDwn5iKDQoNCkkg Y2FuIHJlbW92ZSBpdCBzaW5jZSB0aGUgc2FtZSBpcyBub3QgZG9uZSBmb3IgU0Egc3BlY2lmaWMg cnRlX2Zsb3dzIGNyZWF0ZWQgZm9yIGlubGluZSBjcnlwdG8uDQoNCj4gDQo+ID4gKwkJCQlyZXQg PSBydGVfZmxvd19kZXN0cm95KHBvcnRfaWQsDQo+ID4gKwkJCQkJZmxvd19pbmZvX3RibFtwb3J0 X2lkXS5yeF9kZWZfZmxvdywNCj4gPiArCQkJCQkmZXJyKTsNCj4gPiArCQkJCWlmIChyZXQpDQo+ ID4gKwkJCQkJUlRFX0xPRyhFUlIsIElQU0VDLA0KPiA+ICsJCQkJCSJGYWlsZWQgdG8gZGVzdHJv eSBmbG93IGZvciBwb3J0ICV1LCAiDQo+ID4gKwkJCQkJImVyciBtc2c6ICVzXG4iLCBwb3J0X2lk LA0KPiBlcnIubWVzc2FnZSk7DQo+ID4gKwkJCX0NCj4gPiArCQl9DQo+ID4gKwl9DQo+ID4gK30N Cj4gPiArDQo+ID4gIGludDMyX3QNCj4gPiAgbWFpbihpbnQzMl90IGFyZ2MsIGNoYXIgKiphcmd2 KQ0KPiA+ICB7DQo+ID4gQEAgLTI0NjYsNiArMjc1NSw3IEBAIG1haW4oaW50MzJfdCBhcmdjLCBj aGFyICoqYXJndikNCj4gPiAgCXVpbnQ4X3Qgc29ja2V0X2lkOw0KPiA+ICAJdWludDE2X3QgcG9y dGlkOw0KPiA+ICAJdWludDY0X3QgcmVxX3J4X29mZmxvYWRzLCByZXFfdHhfb2ZmbG9hZHM7DQo+ ID4gKwlzdHJ1Y3QgZWhfY29uZiAqZWhfY29uZiA9IE5VTEw7DQo+ID4gIAlzaXplX3Qgc2Vzc19z ejsNCj4gPg0KPiA+ICAJLyogaW5pdCBFQUwgKi8NCj4gPiBAQCAtMjQ3NSw4ICsyNzY1LDE3IEBA IG1haW4oaW50MzJfdCBhcmdjLCBjaGFyICoqYXJndikNCj4gPiAgCWFyZ2MgLT0gcmV0Ow0KPiA+ ICAJYXJndiArPSByZXQ7DQo+ID4NCj4gPiArCWZvcmNlX3F1aXQgPSBmYWxzZTsNCj4gPiArCXNp Z25hbChTSUdJTlQsIHNpZ25hbF9oYW5kbGVyKTsNCj4gPiArCXNpZ25hbChTSUdURVJNLCBzaWdu YWxfaGFuZGxlcik7DQo+ID4gKw0KPiA+ICsJLyogaW5pdGlhbGl6ZSBldmVudCBoZWxwZXIgY29u ZmlndXJhdGlvbiAqLw0KPiA+ICsJZWhfY29uZiA9IGVoX2NvbmZfaW5pdCgpOw0KPiA+ICsJaWYg KGVoX2NvbmYgPT0gTlVMTCkNCj4gPiArCQlydGVfZXhpdChFWElUX0ZBSUxVUkUsICJGYWlsZWQg dG8gaW5pdCBldmVudCBoZWxwZXIgY29uZmlnIik7DQo+ID4gKw0KPiA+ICAJLyogcGFyc2UgYXBw bGljYXRpb24gYXJndW1lbnRzIChhZnRlciB0aGUgRUFMIG9uZXMpICovDQo+ID4gLQlyZXQgPSBw YXJzZV9hcmdzKGFyZ2MsIGFyZ3YpOw0KPiA+ICsJcmV0ID0gcGFyc2VfYXJncyhhcmdjLCBhcmd2 LCBlaF9jb25mKTsNCj4gPiAgCWlmIChyZXQgPCAwKQ0KPiA+ICAJCXJ0ZV9leGl0KEVYSVRfRkFJ TFVSRSwgIkludmFsaWQgcGFyYW1ldGVyc1xuIik7DQo+ID4NCj4gPiBAQCAtMjU5MiwxMiArMjg5 MSw0MyBAQCBtYWluKGludDMyX3QgYXJnYywgY2hhciAqKmFyZ3YpDQo+ID4NCj4gPiAgCWNoZWNr X2FsbF9wb3J0c19saW5rX3N0YXR1cyhlbmFibGVkX3BvcnRfbWFzayk7DQo+ID4NCj4gPiArCS8q DQo+ID4gKwkgKiBTZXQgdGhlIGVuYWJsZWQgcG9ydCBtYXNrIGluIGhlbHBlciBjb25maWcgZm9y IHVzZSBieSBoZWxwZXINCj4gPiArCSAqIHN1Yi1zeXN0ZW0uIFRoaXMgd2lsbCBiZSB1c2VkIHdo aWxlIGludGlhbGl6aW5nIGRldmljZXMgdXNpbmcNCj4gPiArCSAqIGhlbHBlciBzdWItc3lzdGVt Lg0KPiA+ICsJICovDQo+ID4gKwllaF9jb25mLT5ldGhfcG9ydG1hc2sgPSBlbmFibGVkX3BvcnRf bWFzazsNCj4gPiArDQo+ID4gKwkvKiBJbml0aWFsaXplIGV2ZW50bW9kZSBjb21wb25lbnRzICov DQo+ID4gKwlyZXQgPSBlaF9kZXZzX2luaXQoZWhfY29uZik7DQo+ID4gKwlpZiAocmV0IDwgMCkN Cj4gPiArCQlydGVfZXhpdChFWElUX0ZBSUxVUkUsICJlaF9kZXZzX2luaXQgZmFpbGVkLCBlcnI9 JWRcbiIsDQo+IHJldCk7DQo+ID4gKw0KPiA+ICAJLyogbGF1bmNoIHBlci1sY29yZSBpbml0IG9u IGV2ZXJ5IGxjb3JlICovDQo+ID4gLQlydGVfZWFsX21wX3JlbW90ZV9sYXVuY2gobWFpbl9sb29w LCBOVUxMLCBDQUxMX01BU1RFUik7DQo+ID4gKwlydGVfZWFsX21wX3JlbW90ZV9sYXVuY2goaXBz ZWNfbGF1bmNoX29uZV9sY29yZSwgZWhfY29uZiwNCj4gPiArQ0FMTF9NQVNURVIpOw0KPiA+ICsN Cj4gPiAgCVJURV9MQ09SRV9GT1JFQUNIX1NMQVZFKGxjb3JlX2lkKSB7DQo+ID4gIAkJaWYgKHJ0 ZV9lYWxfd2FpdF9sY29yZShsY29yZV9pZCkgPCAwKQ0KPiA+ICAJCQlyZXR1cm4gLTE7DQo+ID4g IAl9DQo+ID4NCj4gPiArCS8qIFVuaW5pdGlhbGl6ZSBldmVudG1vZGUgY29tcG9uZW50cyAqLw0K PiA+ICsJcmV0ID0gZWhfZGV2c191bmluaXQoZWhfY29uZik7DQo+ID4gKwlpZiAocmV0IDwgMCkN Cj4gPiArCQlydGVfZXhpdChFWElUX0ZBSUxVUkUsICJlaF9kZXZzX3VuaW5pdCBmYWlsZWQsIGVy cj0lZFxuIiwNCj4gcmV0KTsNCj4gPiArDQo+ID4gKwkvKiBGcmVlIGV2ZW50bW9kZSBjb25maWd1 cmF0aW9uIG1lbW9yeSAqLw0KPiA+ICsJZWhfY29uZl91bmluaXQoZWhfY29uZik7DQo+ID4gKw0K PiA+ICsJUlRFX0VUSF9GT1JFQUNIX0RFVihwb3J0aWQpIHsNCj4gPiArCQlpZiAoKGVuYWJsZWRf cG9ydF9tYXNrICYgKDEgPDwgcG9ydGlkKSkgPT0gMCkNCj4gPiArCQkJY29udGludWU7DQo+ID4g KwkJcHJpbnRmKCJDbG9zaW5nIHBvcnQgJWQuLi4iLCBwb3J0aWQpOw0KPiA+ICsJCXJ0ZV9ldGhf ZGV2X3N0b3AocG9ydGlkKTsNCj4gPiArCQlydGVfZXRoX2Rldl9jbG9zZShwb3J0aWQpOw0KPiA+ ICsJCXByaW50ZigiIERvbmVcbiIpOw0KPiA+ICsJfQ0KPiA+ICsJcHJpbnRmKCJCeWUuLi5cbiIp Ow0KPiA+ICsNCj4gPiAgCXJldHVybiAwOw0KPiA+ICB9DQo=