From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D8A9EC55186 for ; Sat, 25 Apr 2020 08:56:27 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 9F28720700 for ; Sat, 25 Apr 2020 08:56:27 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=nxp.com header.i=@nxp.com header.b="EwmPARN1" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726139AbgDYI40 (ORCPT ); Sat, 25 Apr 2020 04:56:26 -0400 Received: from mail-eopbgr80080.outbound.protection.outlook.com ([40.107.8.80]:58499 "EHLO EUR04-VI1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726062AbgDYI4Z (ORCPT ); Sat, 25 Apr 2020 04:56:25 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TlBf+5im+ad8jwpU8vsPt+zulVRtE9C4GKoMKSKHuy0DNCS18f6s96v16FZD+jiRxRvD9hk/giWtDlbjN9Wv6LqrvXYLwcjXt02bRdOpMcAf8B+VF+IkCg7TTiy9GC0ipyqDtnGuxwT5MTD+gyFY4TyBuBo1gN0FXYsOhF13drh/t6wsroXeNuZc9mFShAzpM8UD5/yjQPssLHQpmH5YzykbOQXIvQy14GX/hyuGyPaktp5GwieJYHV3GeOAdo5RpTjLpGb6TFj+9Kn+9VSj7ycWKpXcJpePfmsbqNGSeP7I6t8GuB67IYKRN/KW1c+EBnwIqc30TyrQLouMQB1jIw== 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=PXBXJ9RqFLBq0Ev7tkODEQVqtHhOpvYGS43NDlWX7a0=; b=AVdpg0Y+jmucDFlSJqG+gKURpl9dgqaPs11ChPsJeZM8bVaqpruIhI7NkaY5imHtzucoOGrTiWVSjegGItf9ICjBcBvAVf0KR7Z/6KG5Yjtewl1hAoGVnhW+6U3cX0Yjt6GkI0jvnufKl9cH++wt48Ooj2qk7mMgZMrxViluVwjlblIZ2eEwmiJUAOndm+bMEREVA1DxbKKcS8CNaUBp6yYHNvntzllwFC0gynsj6PKrSMgbUeyESgEwvhLZWYvfXgkRgBzwAOYrES0m1OxV7Yn8fGz6erE+oZpi0iNUs3zisgx+lhprVB0mFPyJPWipjvT5qJtv8bPtBRY7QNMCQw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PXBXJ9RqFLBq0Ev7tkODEQVqtHhOpvYGS43NDlWX7a0=; b=EwmPARN1/bILpmeI2tujkHU6WD6Eukq1M/xYDS9CR7EzTyNmdj9s8UA772nprvsCdLZI8GXQzyDS+Tk9WfEXp/NiYrq1jsHo4xEQbxLEFzWW1SPCrtaABLvzphP6f5BdLTEMU3i4XWsxZEaWUgMPThxP+Jw0RTcl18J/1USNdtU= Received: from VE1PR04MB6496.eurprd04.prod.outlook.com (2603:10a6:803:11c::29) by VE1PR04MB6445.eurprd04.prod.outlook.com (2603:10a6:803:11c::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2937.22; Sat, 25 Apr 2020 08:56:06 +0000 Received: from VE1PR04MB6496.eurprd04.prod.outlook.com ([fe80::1479:38ea:d4f7:a173]) by VE1PR04MB6496.eurprd04.prod.outlook.com ([fe80::1479:38ea:d4f7:a173%7]) with mapi id 15.20.2937.020; Sat, 25 Apr 2020 08:56:06 +0000 From: Po Liu To: Vlad Buslov CC: "davem@davemloft.net" , "linux-kernel@vger.kernel.org" , "netdev@vger.kernel.org" , "vinicius.gomes@intel.com" , Claudiu Manoil , Vladimir Oltean , Alexandru Marginean , "michael.chan@broadcom.com" , "vishal@chelsio.com" , "saeedm@mellanox.com" , "leon@kernel.org" , "jiri@mellanox.com" , "idosch@mellanox.com" , "alexandre.belloni@bootlin.com" , "UNGLinuxDriver@microchip.com" , "kuba@kernel.org" , "jhs@mojatatu.com" , "xiyou.wangcong@gmail.com" , "simon.horman@netronome.com" , "pablo@netfilter.org" , "moshe@mellanox.com" , "m-karicheri2@ti.com" , "andre.guedes@linux.intel.com" , "stephen@networkplumber.org" Subject: RE: Re: [v3,net-next 1/4] net: qos: introduce a gate control flow action Thread-Topic: Re: [v3,net-next 1/4] net: qos: introduce a gate control flow action Thread-Index: AdYa3I0pdwwo77FvSTm4SK00e8zC1g== Date: Sat, 25 Apr 2020 08:56:05 +0000 Message-ID: Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=po.liu@nxp.com; x-originating-ip: [119.31.174.68] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 55cba0b5-c9cb-4b3c-4466-08d7e8f67de2 x-ms-traffictypediagnostic: VE1PR04MB6445:|VE1PR04MB6445: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-forefront-prvs: 0384275935 x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB6496.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(4636009)(136003)(396003)(39860400002)(376002)(366004)(346002)(76116006)(2906002)(4326008)(64756008)(30864003)(66946007)(53546011)(26005)(66446008)(71200400001)(7416002)(66556008)(6916009)(66476007)(55016002)(316002)(8676002)(5660300002)(478600001)(54906003)(6506007)(9686003)(7696005)(8936002)(186003)(44832011)(52536014)(81156014)(86362001)(33656002)(579004);DIR:OUT;SFP:1101; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: BKRi7eS7LZZXQFGKilfLYx9GwtE4qN/ov0k6WSsEHkG/bl57378V0lXI7/hV/0GLlu4VjAXjaWRsfbtEHwBxy8sqpBFIV6DWL4mVhnS+le5EpGzsfceRvfNYqVFh4mqqC5HHp4/FVRl8arpViSgkpzdPJnDXGinK8ugYnLOOQidke85tL7sjO//4XyXOQcsrt0Lt6jH+kP91kyxGR+fqNhreI0h/lW/Ov8G5quKzQ1yn5k0OlgEVAdggqfFJ7fe4Slii8F0WRyUvfaZAbjoO5LH9cuRB3GbL/B82hnKjZVd8pXZ4vAr9fq2c6K9vDz1PwyhU9MaTtOTphaIkIWsxjvL6WqladB3UWMsVOo3sdJQcwuTy0NkDgl/+P6aCYlRwnUeVfDeYyfyIeKDIEKD0eNJh4vYNKVDkxpECl8W6S6W06IH1v3k2GieoWb/Y6oxG x-ms-exchange-antispam-messagedata: j/7HdKREPhHLFKlhA8QpaPtgnHT7e6TDWCXl0f1Vbx381rhdkeK5g6sSSfrG4amYviVFA4GLwnx1gXBY5TION66jqFvGE9+/V+Kkn0+XxlUsBuUJhAQpe+ognWvR0wJrjTUqW//nuNYmjP5jtnbQzXtKx7WDJTx6TQ8H8BZuBNeiqKPeNl3JWmt6P+9xTK1gTZI2ruVYZGuyVebkSUM4fDRaVpJDQHipj1GpLcU33LL8DK4LBGTz2CeHDWfcWnTYf1RZTRDMMyrR+Wg9XJKL2X7fBWL+HjZZlGgfyh8HlOWOWIVVPgHPm6qfGPYPG25L5kbN/nodUZl1CB/hs9DoFYklyNfqFik1hVPQodg4/uF1HqCHCI4mzcyiLrqhmNII5q/fcvdKwv/qhY4ZJs67SrCRlxwbVdu5gUOYBYbAr1fNOvmBRmk0oKa97Dk3iX4ljDhPoitbdeH2Uyj+QBkxhkoTFvVdQqMMogyJs+E6KRSwGEXllVC0wMOmzIMY25EQhpXWDK4RYjUe9JOROHbfFOwCm8FmhkWYR+lpGzq6IqF75QPD2MJTsx5arqtIfQilP8hwUw2JaTji6w3G+CywW3HKJcBT5yWzrJxmnbzJ8Z/VWkHSjIfIgQiRjh0zLHrkP6i7vrGZVY8vU/kXX9RvGObZKhvw+eYDgtbFO6kLXQEI/+2wW0anTxQyiZapxOnBlwROYf41OMOQDnwjndbKgR1qFcKz5C5NK0fQv6cfx0K6GZTjNW9i0yqkHMT5D6rfvEQPq+Toua15i0bJNPV3IStXXNzrn9KvZWVBvRrOYTA= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 55cba0b5-c9cb-4b3c-4466-08d7e8f67de2 X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Apr 2020 08:56:05.9478 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: VIsmqr/frUv0SInhkp3Y08uhIvRuMYCMWUccC/W9+4ny5ajLtKqx4icF4gE1T96J X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR04MB6445 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgVmxhZCwNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBWbGFkIEJ1 c2xvdiA8dmxhZEBidXNsb3YuZGV2Pg0KPiBTZW50OiAyMDIw5bm0NOaciDIz5pelIDE5OjAzDQo+ IFRvOiBQbyBMaXUgPHBvLmxpdUBueHAuY29tPg0KPiBDYzogZGF2ZW1AZGF2ZW1sb2Z0Lm5ldDsg bGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsNCj4gbmV0ZGV2QHZnZXIua2VybmVsLm9yZzsg dmluaWNpdXMuZ29tZXNAaW50ZWwuY29tOyBDbGF1ZGl1IE1hbm9pbA0KPiA8Y2xhdWRpdS5tYW5v aWxAbnhwLmNvbT47IFZsYWRpbWlyIE9sdGVhbiA8dmxhZGltaXIub2x0ZWFuQG54cC5jb20+Ow0K PiBBbGV4YW5kcnUgTWFyZ2luZWFuIDxhbGV4YW5kcnUubWFyZ2luZWFuQG54cC5jb20+Ow0KPiBt aWNoYWVsLmNoYW5AYnJvYWRjb20uY29tOyB2aXNoYWxAY2hlbHNpby5jb207DQo+IHNhZWVkbUBt ZWxsYW5veC5jb207IGxlb25Aa2VybmVsLm9yZzsgamlyaUBtZWxsYW5veC5jb207DQo+IGlkb3Nj aEBtZWxsYW5veC5jb207IGFsZXhhbmRyZS5iZWxsb25pQGJvb3RsaW4uY29tOw0KPiBVTkdMaW51 eERyaXZlckBtaWNyb2NoaXAuY29tOyBrdWJhQGtlcm5lbC5vcmc7IGpoc0Btb2phdGF0dS5jb207 DQo+IHhpeW91Lndhbmdjb25nQGdtYWlsLmNvbTsgc2ltb24uaG9ybWFuQG5ldHJvbm9tZS5jb207 DQo+IHBhYmxvQG5ldGZpbHRlci5vcmc7IG1vc2hlQG1lbGxhbm94LmNvbTsgbS1rYXJpY2hlcmky QHRpLmNvbTsNCj4gYW5kcmUuZ3VlZGVzQGxpbnV4LmludGVsLmNvbTsgc3RlcGhlbkBuZXR3b3Jr cGx1bWJlci5vcmcNCj4gU3ViamVjdDogUmU6IFtFWFRdIFJlOiBbdjMsbmV0LW5leHQgMS80XSBu ZXQ6IHFvczogaW50cm9kdWNlIGEgZ2F0ZSBjb250cm9sDQo+IGZsb3cgYWN0aW9uDQo+IA0KPiBD YXV0aW9uOiBFWFQgRW1haWwNCj4gDQo+IE9uIFRodSAyMyBBcHIgMjAyMCBhdCAxMTozMiwgUG8g TGl1IDxwby5saXVAbnhwLmNvbT4gd3JvdGU6DQo+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t LS0tDQo+ID4+IEZyb206IFZsYWQgQnVzbG92IDx2bGFkQGJ1c2xvdi5kZXY+DQo+ID4+IFNlbnQ6 IDIwMjDlubQ05pyIMjPml6UgMTU6NDMNCj4gPj4gVG86IFBvIExpdSA8cG8ubGl1QG54cC5jb20+ DQo+ID4+IENjOiBWbGFkIEJ1c2xvdiA8dmxhZEBidXNsb3YuZGV2PjsgZGF2ZW1AZGF2ZW1sb2Z0 Lm5ldDsgbGludXgtDQo+ID4+IGtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7IG5ldGRldkB2Z2VyLmtl cm5lbC5vcmc7DQo+ID4+IHZpbmljaXVzLmdvbWVzQGludGVsLmNvbTsgQ2xhdWRpdSBNYW5vaWwg PGNsYXVkaXUubWFub2lsQG54cC5jb20+Ow0KPiA+PiBWbGFkaW1pciBPbHRlYW4gPHZsYWRpbWly Lm9sdGVhbkBueHAuY29tPjsgQWxleGFuZHJ1IE1hcmdpbmVhbg0KPiA+PiA8YWxleGFuZHJ1Lm1h cmdpbmVhbkBueHAuY29tPjsgbWljaGFlbC5jaGFuQGJyb2FkY29tLmNvbTsNCj4gPj4gdmlzaGFs QGNoZWxzaW8uY29tOyBzYWVlZG1AbWVsbGFub3guY29tOyBsZW9uQGtlcm5lbC5vcmc7DQo+ID4+ IGppcmlAbWVsbGFub3guY29tOyBpZG9zY2hAbWVsbGFub3guY29tOw0KPiA+PiBhbGV4YW5kcmUu YmVsbG9uaUBib290bGluLmNvbTsgVU5HTGludXhEcml2ZXJAbWljcm9jaGlwLmNvbTsNCj4gPj4g a3ViYUBrZXJuZWwub3JnOyBqaHNAbW9qYXRhdHUuY29tOyB4aXlvdS53YW5nY29uZ0BnbWFpbC5j b207DQo+ID4+IHNpbW9uLmhvcm1hbkBuZXRyb25vbWUuY29tOyBwYWJsb0BuZXRmaWx0ZXIub3Jn Ow0KPiBtb3NoZUBtZWxsYW5veC5jb207DQo+ID4+IG0ta2FyaWNoZXJpMkB0aS5jb207IGFuZHJl Lmd1ZWRlc0BsaW51eC5pbnRlbC5jb207DQo+ID4+IHN0ZXBoZW5AbmV0d29ya3BsdW1iZXIub3Jn DQo+ID4+IFN1YmplY3Q6IFJlOiBbRVhUXSBSZTogW3YzLG5ldC1uZXh0IDEvNF0gbmV0OiBxb3M6 IGludHJvZHVjZSBhIGdhdGUNCj4gPj4gY29udHJvbCBmbG93IGFjdGlvbg0KPiA+Pg0KPiA+PiBD YXV0aW9uOiBFWFQgRW1haWwNCj4gPj4NCj4gPj4gT24gVGh1IDIzIEFwciAyMDIwIGF0IDA2OjE0 LCBQbyBMaXUgPHBvLmxpdUBueHAuY29tPiB3cm90ZToNCj4gPj4gPiBIaSBWbGFkIEJ1c2xvdiwN Cj4gPj4gPg0KPiA+PiA+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+PiA+PiBGcm9t OiBWbGFkIEJ1c2xvdiA8dmxhZEBidXNsb3YuZGV2Pg0KPiA+PiA+PiBTZW50OiAyMDIw5bm0NOac iDIy5pelIDIxOjIzDQo+ID4+ID4+IFRvOiBQbyBMaXUgPHBvLmxpdUBueHAuY29tPg0KPiA+PiA+ PiBDYzogZGF2ZW1AZGF2ZW1sb2Z0Lm5ldDsgbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsN Cj4gPj4gPj4gbmV0ZGV2QHZnZXIua2VybmVsLm9yZzsgdmluaWNpdXMuZ29tZXNAaW50ZWwuY29t OyBDbGF1ZGl1IE1hbm9pbA0KPiA+PiA+PiA8Y2xhdWRpdS5tYW5vaWxAbnhwLmNvbT47IFZsYWRp bWlyIE9sdGVhbg0KPiA+PiA8dmxhZGltaXIub2x0ZWFuQG54cC5jb20+Ow0KPiA+PiA+PiBBbGV4 YW5kcnUgTWFyZ2luZWFuIDxhbGV4YW5kcnUubWFyZ2luZWFuQG54cC5jb20+Ow0KPiA+PiA+PiBt aWNoYWVsLmNoYW5AYnJvYWRjb20uY29tOyB2aXNoYWxAY2hlbHNpby5jb207DQo+ID4+IHNhZWVk bUBtZWxsYW5veC5jb207DQo+ID4+ID4+IGxlb25Aa2VybmVsLm9yZzsgamlyaUBtZWxsYW5veC5j b207IGlkb3NjaEBtZWxsYW5veC5jb207DQo+ID4+ID4+IGFsZXhhbmRyZS5iZWxsb25pQGJvb3Rs aW4uY29tOyBVTkdMaW51eERyaXZlckBtaWNyb2NoaXAuY29tOw0KPiA+PiA+PiBrdWJhQGtlcm5l bC5vcmc7IGpoc0Btb2phdGF0dS5jb207IHhpeW91Lndhbmdjb25nQGdtYWlsLmNvbTsNCj4gPj4g Pj4gc2ltb24uaG9ybWFuQG5ldHJvbm9tZS5jb207IHBhYmxvQG5ldGZpbHRlci5vcmc7DQo+ID4+ IG1vc2hlQG1lbGxhbm94LmNvbTsNCj4gPj4gPj4gbS1rYXJpY2hlcmkyQHRpLmNvbTsgYW5kcmUu Z3VlZGVzQGxpbnV4LmludGVsLmNvbTsNCj4gPj4gPj4gc3RlcGhlbkBuZXR3b3JrcGx1bWJlci5v cmcNCj4gPj4gPj4gU3ViamVjdDogW0VYVF0gUmU6IFt2MyxuZXQtbmV4dCAxLzRdIG5ldDogcW9z OiBpbnRyb2R1Y2UgYSBnYXRlDQo+ID4+ID4+IGNvbnRyb2wgZmxvdyBhY3Rpb24NCj4gPj4gPj4N Cj4gPj4gPj4gQ2F1dGlvbjogRVhUIEVtYWlsDQo+ID4+ID4+DQo+ID4+ID4+IEhpIFBvLA0KPiA+ PiA+Pg0KPiA+PiA+PiBPbiBXZWQgMjIgQXByIDIwMjAgYXQgMDU6NDgsIFBvIExpdSA8UG8uTGl1 QG54cC5jb20+IHdyb3RlOg0KPiA+PiA+PiA+IEludHJvZHVjZSBhIGluZ3Jlc3MgZnJhbWUgZ2F0 ZSBjb250cm9sIGZsb3cgYWN0aW9uLg0KPiA+PiA+PiA+IFRjIGdhdGUgYWN0aW9uIGRvZXMgdGhl IHdvcmsgbGlrZSB0aGlzOg0KPiA+PiA+PiA+IEFzc3VtZSB0aGVyZSBpcyBhIGdhdGUgYWxsb3cg c3BlY2lmaWVkIGluZ3Jlc3MgZnJhbWVzIGNhbiBiZQ0KPiA+PiA+PiA+IHBhc3NlZCBhdCBzcGVj aWZpYyB0aW1lIHNsb3QsIGFuZCBiZSBkcm9wcGVkIGF0IHNwZWNpZmljIHRpbWUNCj4gPj4gPj4g PiBzbG90LiBUYyBmaWx0ZXIgY2hvb3NlcyB0aGUgaW5ncmVzcyBmcmFtZXMsIGFuZCB0YyBnYXRl IGFjdGlvbg0KPiA+PiA+PiA+IHdvdWxkIHNwZWNpZnkgd2hhdCBzbG90IGRvZXMgdGhlc2UgZnJh bWVzIGNhbiBiZSBwYXNzZWQgdG8NCj4gPj4gPj4gPiBkZXZpY2UgYW5kIHdoYXQgdGltZSBzbG90 IHdvdWxkIGJlIGRyb3BwZWQuDQo+ID4+ID4+ID4gVGMgZ2F0ZSBhY3Rpb24gd291bGQgcHJvdmlk ZSBhbiBlbnRyeSBsaXN0IHRvIHRlbGwgaG93IG11Y2ggdGltZQ0KPiA+PiA+PiA+IGdhdGUga2Vl cCBvcGVuIGFuZCBob3cgbXVjaCB0aW1lIGdhdGUga2VlcCBzdGF0ZSBjbG9zZS4gR2F0ZQ0KPiA+ PiBhY3Rpb24NCj4gPj4gPj4gPiBhbHNvIGFzc2lnbiBhIHN0YXJ0IHRpbWUgdG8gdGVsbCB3aGVu IHRoZSBlbnRyeSBsaXN0IHN0YXJ0LiBUaGVuDQo+ID4+ID4+ID4gZHJpdmVyIHdvdWxkIHJlcGVh dCB0aGUgZ2F0ZSBlbnRyeSBsaXN0IGN5Y2xpY2FsbHkuDQo+ID4+ID4+ID4gRm9yIHRoZSBzb2Z0 d2FyZSBzaW11bGF0aW9uLCBnYXRlIGFjdGlvbiByZXF1aXJlcyB0aGUgdXNlcg0KPiA+PiA+PiA+ IGFzc2lnbiBhIHRpbWUgY2xvY2sgdHlwZS4NCj4gPj4gPj4gPg0KPiA+PiA+PiA+IEJlbG93IGlz IHRoZSBzZXR0aW5nIGV4YW1wbGUgaW4gdXNlciBzcGFjZS4gVGMgZmlsdGVyIGEgc3RyZWFtDQo+ ID4+ID4+ID4gc291cmNlIGlwIGFkZHJlc3MgaXMgMTkyLjE2OC4wLjIwIGFuZCBnYXRlIGFjdGlv biBvd24gdHdvIHRpbWUNCj4gPj4gPj4gPiBzbG90cy4gT25lIGlzIGxhc3QgMjAwbXMgZ2F0ZSBv cGVuIGxldCBmcmFtZSBwYXNzIGFub3RoZXIgaXMNCj4gPj4gPj4gPiBsYXN0IDEwMG1zIGdhdGUg Y2xvc2UgbGV0IGZyYW1lcyBkcm9wcGVkLiBXaGVuIHRoZSBmcmFtZXMgaGF2ZQ0KPiA+PiA+PiA+ IHBhc3NlZCB0b3RhbCBmcmFtZXMgb3Zlcg0KPiA+PiA+PiA+IDgwMDAwMDAgYnl0ZXMsIGZyYW1l cyB3aWxsIGJlIGRyb3BwZWQgaW4gb25lIDIwMDAwMDAwMG5zIHRpbWUNCj4gc2xvdC4NCj4gPj4g Pj4gPg0KPiA+PiA+PiA+PiB0YyBxZGlzYyBhZGQgZGV2IGV0aDAgaW5ncmVzcw0KPiA+PiA+PiA+ DQo+ID4+ID4+ID4+IHRjIGZpbHRlciBhZGQgZGV2IGV0aDAgcGFyZW50IGZmZmY6IHByb3RvY29s IGlwIFwNCj4gPj4gPj4gPiAgICAgICAgICBmbG93ZXIgc3JjX2lwIDE5Mi4xNjguMC4yMCBcDQo+ ID4+ID4+ID4gICAgICAgICAgYWN0aW9uIGdhdGUgaW5kZXggMiBjbG9ja2lkIENMT0NLX1RBSSBc DQo+ID4+ID4+ID4gICAgICAgICAgc2NoZWQtZW50cnkgb3BlbiAyMDAwMDAwMDAgLTEgODAwMDAw MCBcDQo+ID4+ID4+ID4gICAgICAgICAgc2NoZWQtZW50cnkgY2xvc2UgMTAwMDAwMDAwIC0xIC0x DQo+ID4+ID4+ID4NCj4gPj4gPj4gPj4gdGMgY2hhaW4gZGVsIGRldiBldGgwIGluZ3Jlc3MgY2hh aW4gMA0KPiA+PiA+PiA+DQo+ID4+ID4+ID4gInNjaGVkLWVudHJ5IiBmb2xsb3cgdGhlIG5hbWUg dGFwcmlvIHN0eWxlLiBHYXRlIHN0YXRlIGlzDQo+ID4+ID4+ID4gIm9wZW4iLyJjbG9zZSIuIEZv bGxvdyB3aXRoIHBlcmlvZCBuYW5vc2Vjb25kLiBUaGVuIG5leHQgaXRlbSBpcw0KPiA+PiA+PiA+ IGludGVybmFsIHByaW9yaXR5IHZhbHVlIG1lYW5zIHdoaWNoIGluZ3Jlc3MgcXVldWUgc2hvdWxk IHB1dC4gIi0xIg0KPiA+PiA+PiA+IG1lYW5zIHdpbGRjYXJkLiBUaGUgbGFzdCB2YWx1ZSBvcHRp b25hbCBzcGVjaWZpZXMgdGhlIG1heGltdW0NCj4gPj4gPj4gPiBudW1iZXIgb2YgTVNEVSBvY3Rl dHMgdGhhdCBhcmUgcGVybWl0dGVkIHRvIHBhc3MgdGhlIGdhdGUgZHVyaW5nDQo+ID4+ID4+ID4g dGhlIHNwZWNpZmllZCB0aW1lIGludGVydmFsLg0KPiA+PiA+PiA+IEJhc2UtdGltZSBpcyBub3Qg c2V0IHdpbGwgYmUgMCBhcyBkZWZhdWx0LCBhcyByZXN1bHQgc3RhcnQgdGltZQ0KPiA+PiA+PiA+ IHdvdWxkIGJlICgoTiArIDEpICogY3ljbGV0aW1lKSB3aGljaCBpcyB0aGUgbWluaW1hbCBvZiBm dXR1cmUgdGltZS4NCj4gPj4gPj4gPg0KPiA+PiA+PiA+IEJlbG93IGV4YW1wbGUgc2hvd3MgZmls dGVyaW5nIGEgc3RyZWFtIHdpdGggZGVzdGluYXRpb24gbWFjDQo+ID4+ID4+ID4gYWRkcmVzcyBp cw0KPiA+PiA+PiA+IDEwOjAwOjgwOjAwOjAwOjAwIGFuZCBpcCB0eXBlIGlzIElDTVAsIGZvbGxv dyB0aGUgYWN0aW9uIGdhdGUuDQo+ID4+ID4+ID4gVGhlIGdhdGUgYWN0aW9uIHdvdWxkIHJ1biB3 aXRoIG9uZSBjbG9zZSB0aW1lIHNsb3Qgd2hpY2ggbWVhbnMNCj4gPj4gPj4gPiBhbHdheXMga2Vl cA0KPiA+PiA+PiBjbG9zZS4NCj4gPj4gPj4gPiBUaGUgdGltZSBjeWNsZSBpcyB0b3RhbCAyMDAw MDAwMDBucy4gVGhlIGJhc2UtdGltZSB3b3VsZCBjYWxjdWxhdGUNCj4gYnk6DQo+ID4+ID4+ID4N Cj4gPj4gPj4gPiAgMTM1NzAwMDAwMDAwMCArIChOICsgMSkgKiBjeWNsZXRpbWUNCj4gPj4gPj4g Pg0KPiA+PiA+PiA+IFdoZW4gdGhlIHRvdGFsIHZhbHVlIGlzIHRoZSBmdXR1cmUgdGltZSwgaXQg d2lsbCBiZSB0aGUgc3RhcnQgdGltZS4NCj4gPj4gPj4gPiBUaGUgY3ljbGV0aW1lIGhlcmUgd291 bGQgYmUgMjAwMDAwMDAwbnMgZm9yIHRoaXMgY2FzZS4NCj4gPj4gPj4gPg0KPiA+PiA+PiA+PiB0 YyBmaWx0ZXIgYWRkIGRldiBldGgwIHBhcmVudCBmZmZmOiAgcHJvdG9jb2wgaXAgXA0KPiA+PiA+ PiA+ICAgICAgICAgIGZsb3dlciBza2lwX2h3IGlwX3Byb3RvIGljbXAgZHN0X21hYyAxMDowMDo4 MDowMDowMDowMCBcDQo+ID4+ID4+ID4gICAgICAgICAgYWN0aW9uIGdhdGUgaW5kZXggMTIgYmFz ZS10aW1lIDEzNTcwMDAwMDAwMDAgXA0KPiA+PiA+PiA+ICAgICAgICAgIHNjaGVkLWVudHJ5IGNs b3NlIDIwMDAwMDAwMCAtMSAtMSBcDQo+ID4+ID4+ID4gICAgICAgICAgY2xvY2tpZCBDTE9DS19U QUkNCj4gPj4gPj4gPg0KPiA+PiA+PiA+IFNpZ25lZC1vZmYtYnk6IFBvIExpdSA8UG8uTGl1QG54 cC5jb20+DQo+ID4+ID4+ID4gLS0tDQo+ID4+ID4+ID4gIGluY2x1ZGUvbmV0L3RjX2FjdC90Y19n YXRlLmggICAgICAgIHwgIDU0ICsrKw0KPiA+PiA+PiA+ICBpbmNsdWRlL3VhcGkvbGludXgvcGt0 X2Nscy5oICAgICAgICB8ICAgMSArDQo+ID4+ID4+ID4gIGluY2x1ZGUvdWFwaS9saW51eC90Y19h Y3QvdGNfZ2F0ZS5oIHwgIDQ3ICsrDQo+ID4+ID4+ID4gIG5ldC9zY2hlZC9LY29uZmlnICAgICAg ICAgICAgICAgICAgIHwgIDEzICsNCj4gPj4gPj4gPiAgbmV0L3NjaGVkL01ha2VmaWxlICAgICAg ICAgICAgICAgICAgfCAgIDEgKw0KPiA+PiA+PiA+ICBuZXQvc2NoZWQvYWN0X2dhdGUuYyAgICAg ICAgICAgICAgICB8IDY0Nw0KPiA+PiArKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ID4+ ID4+ID4gIDYgZmlsZXMgY2hhbmdlZCwgNzYzIGluc2VydGlvbnMoKykgIGNyZWF0ZSBtb2RlIDEw MDY0NA0KPiA+PiA+PiA+IGluY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmggIGNyZWF0ZSBtb2Rl IDEwMDY0NA0KPiA+PiA+PiA+IGluY2x1ZGUvdWFwaS9saW51eC90Y19hY3QvdGNfZ2F0ZS5oDQo+ ID4+ID4+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBuZXQvc2NoZWQvYWN0X2dhdGUuYw0KPiA+PiA+ PiA+DQo+ID4+ID4+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmgN Cj4gPj4gPj4gPiBiL2luY2x1ZGUvbmV0L3RjX2FjdC90Y19nYXRlLmggbmV3IGZpbGUgbW9kZSAx MDA2NDQgaW5kZXgNCj4gPj4gPj4gPiAwMDAwMDAwMDAwMDAuLmIwYWNlNTViMmFhYQ0KPiA+PiA+ PiA+IC0tLSAvZGV2L251bGwNCj4gPj4gPj4gPiArKysgYi9pbmNsdWRlL25ldC90Y19hY3QvdGNf Z2F0ZS5oDQo+ID4+ID4+ID4gQEAgLTAsMCArMSw1NCBAQA0KPiA+PiA+PiA+ICsvKiBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlciAqLw0KPiA+PiA+PiA+ICsvKiBDb3B5 cmlnaHQgMjAyMCBOWFAgKi8NCj4gPj4gPj4gPiArDQo+ID4+ID4+ID4gKyNpZm5kZWYgX19ORVRf VENfR0FURV9IDQo+ID4+ID4+ID4gKyNkZWZpbmUgX19ORVRfVENfR0FURV9IDQo+ID4+ID4+ID4g Kw0KPiA+PiA+PiA+ICsjaW5jbHVkZSA8bmV0L2FjdF9hcGkuaD4NCj4gPj4gPj4gPiArI2luY2x1 ZGUgPGxpbnV4L3RjX2FjdC90Y19nYXRlLmg+DQo+ID4+ID4+ID4gKw0KPiA+PiA+PiA+ICtzdHJ1 Y3QgdGNmZ19nYXRlX2VudHJ5IHsNCj4gPj4gPj4gPiArICAgICBpbnQgICAgICAgICAgICAgICAg ICAgICBpbmRleDsNCj4gPj4gPj4gPiArICAgICB1OCAgICAgICAgICAgICAgICAgICAgICBnYXRl X3N0YXRlOw0KPiA+PiA+PiA+ICsgICAgIHUzMiAgICAgICAgICAgICAgICAgICAgIGludGVydmFs Ow0KPiA+PiA+PiA+ICsgICAgIHMzMiAgICAgICAgICAgICAgICAgICAgIGlwdjsNCj4gPj4gPj4g PiArICAgICBzMzIgICAgICAgICAgICAgICAgICAgICBtYXhvY3RldHM7DQo+ID4+ID4+ID4gKyAg ICAgc3RydWN0IGxpc3RfaGVhZCAgICAgICAgbGlzdDsNCj4gPj4gPj4gPiArfTsNCj4gPj4gPj4g PiArDQo+ID4+ID4+ID4gK3N0cnVjdCB0Y2ZfZ2F0ZV9wYXJhbXMgew0KPiA+PiA+PiA+ICsgICAg IHMzMiAgICAgICAgICAgICAgICAgICAgIHRjZmdfcHJpb3JpdHk7DQo+ID4+ID4+ID4gKyAgICAg dTY0ICAgICAgICAgICAgICAgICAgICAgdGNmZ19iYXNldGltZTsNCj4gPj4gPj4gPiArICAgICB1 NjQgICAgICAgICAgICAgICAgICAgICB0Y2ZnX2N5Y2xldGltZTsNCj4gPj4gPj4gPiArICAgICB1 NjQgICAgICAgICAgICAgICAgICAgICB0Y2ZnX2N5Y2xldGltZV9leHQ7DQo+ID4+ID4+ID4gKyAg ICAgdTMyICAgICAgICAgICAgICAgICAgICAgdGNmZ19mbGFnczsNCj4gPj4gPj4gPiArICAgICBz MzIgICAgICAgICAgICAgICAgICAgICB0Y2ZnX2Nsb2NraWQ7DQo+ID4+ID4+ID4gKyAgICAgc2l6 ZV90ICAgICAgICAgICAgICAgICAgbnVtX2VudHJpZXM7DQo+ID4+ID4+ID4gKyAgICAgc3RydWN0 IGxpc3RfaGVhZCAgICAgICAgZW50cmllczsNCj4gPj4gPj4gPiArfTsNCj4gPj4gPj4gPiArDQo+ ID4+ID4+ID4gKyNkZWZpbmUgR0FURV9BQ1RfR0FURV9PUEVOICAgQklUKDApDQo+ID4+ID4+ID4g KyNkZWZpbmUgR0FURV9BQ1RfUEVORElORyAgICAgQklUKDEpDQo+ID4+ID4+ID4gK3N0cnVjdCBn YXRlX2FjdGlvbiB7DQo+ID4+ID4+ID4gKyAgICAgc3RydWN0IHRjZl9nYXRlX3BhcmFtcyBwYXJh bTsNCj4gPj4gPj4gPiArICAgICBzcGlubG9ja190IGVudHJ5X2xvY2s7DQo+ID4+ID4+ID4gKyAg ICAgdTggY3VycmVudF9nYXRlX3N0YXR1czsNCj4gPj4gPj4gPiArICAgICBrdGltZV90IGN1cnJl bnRfY2xvc2VfdGltZTsNCj4gPj4gPj4gPiArICAgICB1MzIgY3VycmVudF9lbnRyeV9vY3RldHM7 DQo+ID4+ID4+ID4gKyAgICAgczMyIGN1cnJlbnRfbWF4X29jdGV0czsNCj4gPj4gPj4gPiArICAg ICBzdHJ1Y3QgdGNmZ19nYXRlX2VudHJ5IF9fcmN1ICpuZXh0X2VudHJ5Ow0KPiA+PiA+PiA+ICsg ICAgIHN0cnVjdCBocnRpbWVyIGhpdGltZXI7DQo+ID4+ID4+ID4gKyAgICAgZW51bSB0a19vZmZz ZXRzIHRrX29mZnNldDsNCj4gPj4gPj4gPiArICAgICBzdHJ1Y3QgcmN1X2hlYWQgcmN1Ow0KPiA+ PiA+PiA+ICt9Ow0KPiA+PiA+PiA+ICsNCj4gPj4gPj4gPiArc3RydWN0IHRjZl9nYXRlIHsNCj4g Pj4gPj4gPiArICAgICBzdHJ1Y3QgdGNfYWN0aW9uICAgICAgICAgICAgICAgIGNvbW1vbjsNCj4g Pj4gPj4gPiArICAgICBzdHJ1Y3QgZ2F0ZV9hY3Rpb24gX19yY3UgICAgICAgICphY3RnOw0KPiA+ PiA+PiA+ICt9Ow0KPiA+PiA+PiA+ICsjZGVmaW5lIHRvX2dhdGUoYSkgKChzdHJ1Y3QgdGNmX2dh dGUgKilhKQ0KPiA+PiA+PiA+ICsNCj4gPj4gPj4gPiArI2RlZmluZSBnZXRfZ2F0ZV9wYXJhbShh Y3QpICgoc3RydWN0IHRjZl9nYXRlX3BhcmFtcyAqKWFjdCkNCj4gPj4gPj4gPiArI2RlZmluZQ0K PiA+PiA+PiA+ICtnZXRfZ2F0ZV9hY3Rpb24ocCkgKChzdHJ1Y3QgZ2F0ZV9hY3Rpb24gKilwKQ0K PiA+PiA+PiA+ICsNCj4gPj4gPj4gPiArI2VuZGlmDQo+ID4+ID4+ID4gZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvdWFwaS9saW51eC9wa3RfY2xzLmgNCj4gPj4gPj4gPiBiL2luY2x1ZGUvdWFwaS9saW51 eC9wa3RfY2xzLmggaW5kZXggOWYwNmQyOWNhYjcwLi5mYzY3MmIyMzI0MzcNCj4gPj4gPj4gMTAw NjQ0DQo+ID4+ID4+ID4gLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L3BrdF9jbHMuaA0KPiA+PiA+ PiA+ICsrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9wa3RfY2xzLmgNCj4gPj4gPj4gPiBAQCAtMTM0 LDYgKzEzNCw3IEBAIGVudW0gdGNhX2lkIHsNCj4gPj4gPj4gPiAgICAgICBUQ0FfSURfQ1RJTkZP LA0KPiA+PiA+PiA+ICAgICAgIFRDQV9JRF9NUExTLA0KPiA+PiA+PiA+ICAgICAgIFRDQV9JRF9D VCwNCj4gPj4gPj4gPiArICAgICBUQ0FfSURfR0FURSwNCj4gPj4gPj4gPiAgICAgICAvKiBvdGhl ciBhY3Rpb25zIGdvIGhlcmUgKi8NCj4gPj4gPj4gPiAgICAgICBfX1RDQV9JRF9NQVggPSAyNTUN Cj4gPj4gPj4gPiAgfTsNCj4gPj4gPj4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4 L3RjX2FjdC90Y19nYXRlLmgNCj4gPj4gPj4gPiBiL2luY2x1ZGUvdWFwaS9saW51eC90Y19hY3Qv dGNfZ2F0ZS5oDQo+ID4+ID4+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPj4gPj4gPiBpbmRl eCAwMDAwMDAwMDAwMDAuLmYyMTRiM2E2ZDQ0Zg0KPiA+PiA+PiA+IC0tLSAvZGV2L251bGwNCj4g Pj4gPj4gPiArKysgYi9pbmNsdWRlL3VhcGkvbGludXgvdGNfYWN0L3RjX2dhdGUuaA0KPiA+PiA+ PiA+IEBAIC0wLDAgKzEsNDcgQEANCj4gPj4gPj4gPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEdQTC0yLjArIFdJVEggTGludXgtc3lzY2FsbC1ub3RlICovDQo+ID4+ID4+ID4gKy8qIENv cHlyaWdodCAyMDIwIE5YUCAqLw0KPiA+PiA+PiA+ICsNCj4gPj4gPj4gPiArI2lmbmRlZiBfX0xJ TlVYX1RDX0dBVEVfSA0KPiA+PiA+PiA+ICsjZGVmaW5lIF9fTElOVVhfVENfR0FURV9IDQo+ID4+ ID4+ID4gKw0KPiA+PiA+PiA+ICsjaW5jbHVkZSA8bGludXgvcGt0X2Nscy5oPg0KPiA+PiA+PiA+ ICsNCj4gPj4gPj4gPiArc3RydWN0IHRjX2dhdGUgew0KPiA+PiA+PiA+ICsgICAgIHRjX2dlbjsN Cj4gPj4gPj4gPiArfTsNCj4gPj4gPj4gPiArDQo+ID4+ID4+ID4gK2VudW0gew0KPiA+PiA+PiA+ ICsgICAgIFRDQV9HQVRFX0VOVFJZX1VOU1BFQywNCj4gPj4gPj4gPiArICAgICBUQ0FfR0FURV9F TlRSWV9JTkRFWCwNCj4gPj4gPj4gPiArICAgICBUQ0FfR0FURV9FTlRSWV9HQVRFLA0KPiA+PiA+ PiA+ICsgICAgIFRDQV9HQVRFX0VOVFJZX0lOVEVSVkFMLA0KPiA+PiA+PiA+ICsgICAgIFRDQV9H QVRFX0VOVFJZX0lQViwNCj4gPj4gPj4gPiArICAgICBUQ0FfR0FURV9FTlRSWV9NQVhfT0NURVRT LA0KPiA+PiA+PiA+ICsgICAgIF9fVENBX0dBVEVfRU5UUllfTUFYLA0KPiA+PiA+PiA+ICt9Ow0K PiA+PiA+PiA+ICsjZGVmaW5lIFRDQV9HQVRFX0VOVFJZX01BWCAoX19UQ0FfR0FURV9FTlRSWV9N QVggLSAxKQ0KPiA+PiA+PiA+ICsNCj4gPj4gPj4gPiArZW51bSB7DQo+ID4+ID4+ID4gKyAgICAg VENBX0dBVEVfT05FX0VOVFJZX1VOU1BFQywNCj4gPj4gPj4gPiArICAgICBUQ0FfR0FURV9PTkVf RU5UUlksDQo+ID4+ID4+ID4gKyAgICAgX19UQ0FfR0FURV9PTkVfRU5UUllfTUFYLA0KPiA+PiA+ PiA+ICt9Ow0KPiA+PiA+PiA+ICsjZGVmaW5lIFRDQV9HQVRFX09ORV9FTlRSWV9NQVgNCj4gPj4g KF9fVENBX0dBVEVfT05FX0VOVFJZX01BWA0KPiA+PiA+PiAtIDEpDQo+ID4+ID4+ID4gKw0KPiA+ PiA+PiA+ICtlbnVtIHsNCj4gPj4gPj4gPiArICAgICBUQ0FfR0FURV9VTlNQRUMsDQo+ID4+ID4+ ID4gKyAgICAgVENBX0dBVEVfVE0sDQo+ID4+ID4+ID4gKyAgICAgVENBX0dBVEVfUEFSTVMsDQo+ ID4+ID4+ID4gKyAgICAgVENBX0dBVEVfUEFELA0KPiA+PiA+PiA+ICsgICAgIFRDQV9HQVRFX1BS SU9SSVRZLA0KPiA+PiA+PiA+ICsgICAgIFRDQV9HQVRFX0VOVFJZX0xJU1QsDQo+ID4+ID4+ID4g KyAgICAgVENBX0dBVEVfQkFTRV9USU1FLA0KPiA+PiA+PiA+ICsgICAgIFRDQV9HQVRFX0NZQ0xF X1RJTUUsDQo+ID4+ID4+ID4gKyAgICAgVENBX0dBVEVfQ1lDTEVfVElNRV9FWFQsDQo+ID4+ID4+ ID4gKyAgICAgVENBX0dBVEVfRkxBR1MsDQo+ID4+ID4+ID4gKyAgICAgVENBX0dBVEVfQ0xPQ0tJ RCwNCj4gPj4gPj4gPiArICAgICBfX1RDQV9HQVRFX01BWCwNCj4gPj4gPj4gPiArfTsNCj4gPj4g Pj4gPiArI2RlZmluZSBUQ0FfR0FURV9NQVggKF9fVENBX0dBVEVfTUFYIC0gMSkNCj4gPj4gPj4g PiArDQo+ID4+ID4+ID4gKyNlbmRpZg0KPiA+PiA+PiA+IGRpZmYgLS1naXQgYS9uZXQvc2NoZWQv S2NvbmZpZyBiL25ldC9zY2hlZC9LY29uZmlnIGluZGV4DQo+ID4+ID4+ID4gYmZiZWZiN2JmZjlk Li4xMzE0NTQ5Yzc1NjcgMTAwNjQ0DQo+ID4+ID4+ID4gLS0tIGEvbmV0L3NjaGVkL0tjb25maWcN Cj4gPj4gPj4gPiArKysgYi9uZXQvc2NoZWQvS2NvbmZpZw0KPiA+PiA+PiA+IEBAIC05ODEsNiAr OTgxLDE5IEBAIGNvbmZpZyBORVRfQUNUX0NUDQo+ID4+ID4+ID4gICAgICAgICBUbyBjb21waWxl IHRoaXMgY29kZSBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlDQo+ID4+ID4+ID4gICAg ICAgICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgYWN0X2N0Lg0KPiA+PiA+PiA+DQo+ID4+ID4+ID4g K2NvbmZpZyBORVRfQUNUX0dBVEUNCj4gPj4gPj4gPiArICAgICB0cmlzdGF0ZSAiRnJhbWUgZ2F0 ZSBlbnRyeSBsaXN0IGNvbnRyb2wgdGMgYWN0aW9uIg0KPiA+PiA+PiA+ICsgICAgIGRlcGVuZHMg b24gTkVUX0NMU19BQ1QNCj4gPj4gPj4gPiArICAgICBoZWxwDQo+ID4+ID4+ID4gKyAgICAgICBT YXkgWSBoZXJlIHRvIGFsbG93IHRvIGNvbnRyb2wgdGhlIGluZ3Jlc3MgZmxvdyB0byBiZSBwYXNz ZWQNCj4gYXQNCj4gPj4gPj4gPiArICAgICAgIHNwZWNpZmljIHRpbWUgc2xvdCBhbmQgYmUgZHJv cHBlZCBhdCBvdGhlciBzcGVjaWZpYyB0aW1lIHNsb3QNCj4gYnkNCj4gPj4gPj4gPiArICAgICAg IHRoZSBnYXRlIGVudHJ5IGxpc3QuIFRoZSBtYW5pcHVsYXRpb24gd2lsbCBzaW11bGF0ZSB0aGUg SUVFRQ0KPiA+PiA+PiA+ICsgICAgICAgODAyLjFRY2kgc3RyZWFtIGdhdGUgY29udHJvbCBiZWhh dmlvci4NCj4gPj4gPj4gPiArDQo+ID4+ID4+ID4gKyAgICAgICBJZiB1bnN1cmUsIHNheSBOLg0K PiA+PiA+PiA+ICsgICAgICAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29z ZSBNIGhlcmU6IHRoZQ0KPiA+PiA+PiA+ICsgICAgICAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGFj dF9nYXRlLg0KPiA+PiA+PiA+ICsNCj4gPj4gPj4gPiAgY29uZmlnIE5FVF9JRkVfU0tCTUFSSw0K PiA+PiA+PiA+ICAgICAgIHRyaXN0YXRlICJTdXBwb3J0IHRvIGVuY29kaW5nIGRlY29kaW5nIHNr YiBtYXJrIG9uIElGRSBhY3Rpb24iDQo+ID4+ID4+ID4gICAgICAgZGVwZW5kcyBvbiBORVRfQUNU X0lGRQ0KPiA+PiA+PiA+IGRpZmYgLS1naXQgYS9uZXQvc2NoZWQvTWFrZWZpbGUgYi9uZXQvc2No ZWQvTWFrZWZpbGUgaW5kZXgNCj4gPj4gPj4gPiAzMWMzNjdhNmNkMDkuLjY2YmJmOWE5OGY5ZSAx MDA2NDQNCj4gPj4gPj4gPiAtLS0gYS9uZXQvc2NoZWQvTWFrZWZpbGUNCj4gPj4gPj4gPiArKysg Yi9uZXQvc2NoZWQvTWFrZWZpbGUNCj4gPj4gPj4gPiBAQCAtMzAsNiArMzAsNyBAQCBvYmotJChD T05GSUdfTkVUX0lGRV9TS0JQUklPKSAgICAgICArPQ0KPiA+PiA+PiBhY3RfbWV0YV9za2Jwcmlv Lm8NCj4gPj4gPj4gPiAgb2JqLSQoQ09ORklHX05FVF9JRkVfU0tCVENJTkRFWCkgICAgICs9IGFj dF9tZXRhX3NrYnRjaW5kZXgubw0KPiA+PiA+PiA+ICBvYmotJChDT05GSUdfTkVUX0FDVF9UVU5O RUxfS0VZKSs9IGFjdF90dW5uZWxfa2V5Lm8NCj4gPj4gPj4gPiAgb2JqLSQoQ09ORklHX05FVF9B Q1RfQ1QpICAgICArPSBhY3RfY3Qubw0KPiA+PiA+PiA+ICtvYmotJChDT05GSUdfTkVUX0FDVF9H QVRFKSAgICs9IGFjdF9nYXRlLm8NCj4gPj4gPj4gPiAgb2JqLSQoQ09ORklHX05FVF9TQ0hfRklG TykgICArPSBzY2hfZmlmby5vDQo+ID4+ID4+ID4gIG9iai0kKENPTkZJR19ORVRfU0NIX0NCUSkg ICAgKz0gc2NoX2NicS5vDQo+ID4+ID4+ID4gIG9iai0kKENPTkZJR19ORVRfU0NIX0hUQikgICAg Kz0gc2NoX2h0Yi5vDQo+ID4+ID4+ID4gZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9hY3RfZ2F0ZS5j IGIvbmV0L3NjaGVkL2FjdF9nYXRlLmMgbmV3DQo+ID4+ID4+ID4gZmlsZSBtb2RlDQo+ID4+ID4+ ID4gMTAwNjQ0IGluZGV4IDAwMDAwMDAwMDAwMC4uZTkzMmY0MDJiNGYxDQo+ID4+ID4+ID4gLS0t IC9kZXYvbnVsbA0KPiA+PiA+PiA+ICsrKyBiL25ldC9zY2hlZC9hY3RfZ2F0ZS5jDQo+ID4+ID4+ ID4gQEAgLTAsMCArMSw2NDcgQEANCj4gPj4gPj4gPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEdQTC0yLjAtb3ItbGF0ZXINCj4gPj4gPj4gPiArLyogQ29weXJpZ2h0IDIwMjAgTlhQICov DQo+ID4+ID4+ID4gKw0KPiA+PiA+PiA+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQo+ID4+ ID4+ID4gKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPg0KPiA+PiA+PiA+ICsjaW5jbHVkZSA8bGlu dXgva2VybmVsLmg+DQo+ID4+ID4+ID4gKyNpbmNsdWRlIDxsaW51eC9zdHJpbmcuaD4NCj4gPj4g Pj4gPiArI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+DQo+ID4+ID4+ID4gKyNpbmNsdWRlIDxsaW51 eC9za2J1ZmYuaD4NCj4gPj4gPj4gPiArI2luY2x1ZGUgPGxpbnV4L3J0bmV0bGluay5oPg0KPiA+ PiA+PiA+ICsjaW5jbHVkZSA8bGludXgvaW5pdC5oPg0KPiA+PiA+PiA+ICsjaW5jbHVkZSA8bGlu dXgvc2xhYi5oPg0KPiA+PiA+PiA+ICsjaW5jbHVkZSA8bmV0L2FjdF9hcGkuaD4NCj4gPj4gPj4g PiArI2luY2x1ZGUgPG5ldC9uZXRsaW5rLmg+DQo+ID4+ID4+ID4gKyNpbmNsdWRlIDxuZXQvcGt0 X2Nscy5oPg0KPiA+PiA+PiA+ICsjaW5jbHVkZSA8bmV0L3RjX2FjdC90Y19nYXRlLmg+DQo+ID4+ ID4+ID4gKw0KPiA+PiA+PiA+ICtzdGF0aWMgdW5zaWduZWQgaW50IGdhdGVfbmV0X2lkOyBzdGF0 aWMgc3RydWN0IHRjX2FjdGlvbl9vcHMNCj4gPj4gPj4gPiArYWN0X2dhdGVfb3BzOw0KPiA+PiA+ PiA+ICsNCj4gPj4gPj4gPiArc3RhdGljIGt0aW1lX3QgZ2F0ZV9nZXRfdGltZShzdHJ1Y3QgZ2F0 ZV9hY3Rpb24gKmdhY3QpIHsNCj4gPj4gPj4gPiArICAgICBrdGltZV90IG1vbm8gPSBrdGltZV9n ZXQoKTsNCj4gPj4gPj4gPiArDQo+ID4+ID4+ID4gKyAgICAgc3dpdGNoIChnYWN0LT50a19vZmZz ZXQpIHsNCj4gPj4gPj4gPiArICAgICBjYXNlIFRLX09GRlNfTUFYOg0KPiA+PiA+PiA+ICsgICAg ICAgICAgICAgcmV0dXJuIG1vbm87DQo+ID4+ID4+ID4gKyAgICAgZGVmYXVsdDoNCj4gPj4gPj4g PiArICAgICAgICAgICAgIHJldHVybiBrdGltZV9tb25vX3RvX2FueShtb25vLCBnYWN0LT50a19v ZmZzZXQpOw0KPiA+PiA+PiA+ICsgICAgIH0NCj4gPj4gPj4gPiArDQo+ID4+ID4+ID4gKyAgICAg cmV0dXJuIEtUSU1FX01BWDsNCj4gPj4gPj4gPiArfQ0KPiA+PiA+PiA+ICsNCj4gPj4gPj4gPiAr c3RhdGljIGludCBnYXRlX2dldF9zdGFydF90aW1lKHN0cnVjdCBnYXRlX2FjdGlvbiAqZ2FjdCwN Cj4gPj4gPj4gPiAra3RpbWVfdA0KPiA+PiA+PiA+ICsqc3RhcnQpIHsNCj4gPj4gPj4gPiArICAg ICBzdHJ1Y3QgdGNmX2dhdGVfcGFyYW1zICpwYXJhbSA9IGdldF9nYXRlX3BhcmFtKGdhY3QpOw0K PiA+PiA+PiA+ICsgICAgIGt0aW1lX3Qgbm93LCBiYXNlLCBjeWNsZTsNCj4gPj4gPj4gPiArICAg ICB1NjQgbjsNCj4gPj4gPj4gPiArDQo+ID4+ID4+ID4gKyAgICAgYmFzZSA9IG5zX3RvX2t0aW1l KHBhcmFtLT50Y2ZnX2Jhc2V0aW1lKTsNCj4gPj4gPj4gPiArICAgICBub3cgPSBnYXRlX2dldF90 aW1lKGdhY3QpOw0KPiA+PiA+PiA+ICsNCj4gPj4gPj4gPiArICAgICBpZiAoa3RpbWVfYWZ0ZXIo YmFzZSwgbm93KSkgew0KPiA+PiA+PiA+ICsgICAgICAgICAgICAgKnN0YXJ0ID0gYmFzZTsNCj4g Pj4gPj4gPiArICAgICAgICAgICAgIHJldHVybiAwOw0KPiA+PiA+PiA+ICsgICAgIH0NCj4gPj4g Pj4gPiArDQo+ID4+ID4+ID4gKyAgICAgY3ljbGUgPSBwYXJhbS0+dGNmZ19jeWNsZXRpbWU7DQo+ ID4+ID4+ID4gKw0KPiA+PiA+PiA+ICsgICAgIC8qIGN5Y2xlIHRpbWUgc2hvdWxkIG5vdCBiZSB6 ZXJvICovDQo+ID4+ID4+ID4gKyAgICAgaWYgKFdBUk5fT04oIWN5Y2xlKSkNCj4gPj4gPj4gPiAr ICAgICAgICAgICAgIHJldHVybiAtRUZBVUxUOw0KPiA+PiA+Pg0KPiA+PiA+PiBMb29raW5nIGF0 IHRoZSBpbml0IGNvZGUgaXQgc2VlbXMgdGhhdCB0aGlzIHZhbHVlIGNhbiBiZSBzZXQgdG8gMA0K PiA+PiA+PiBkaXJlY3RseSBmcm9tIG5ldGxpbmsgcGFja2V0IHdpdGhvdXQgZnVydGhlciB2YWxp ZGF0aW9uLCB3aGljaA0KPiA+PiA+PiB3b3VsZCBhbGxvdyB1c2VyIHRvIHRyaWdnZXIgd2Fybmlu ZyBoZXJlLg0KPiA+PiA+DQo+ID4+ID4gWWVzLCAgd2lsbCBhdm9pZCBhdCBhaGVhZCBwb2ludC4N Cj4gPj4gPg0KPiA+PiA+Pg0KPiA+PiA+PiA+ICsNCj4gPj4gPj4gPiArICAgICBuID0gZGl2NjRf dTY0KGt0aW1lX3N1Yl9ucyhub3csIGJhc2UpLCBjeWNsZSk7DQo+ID4+ID4+ID4gKyAgICAgKnN0 YXJ0ID0ga3RpbWVfYWRkX25zKGJhc2UsIChuICsgMSkgKiBjeWNsZSk7DQo+ID4+ID4+ID4gKyAg ICAgcmV0dXJuIDA7DQo+ID4+ID4+ID4gK30NCj4gPj4gPj4gPiArDQo+ID4+ID4+ID4gK3N0YXRp YyB2b2lkIGdhdGVfc3RhcnRfdGltZXIoc3RydWN0IGdhdGVfYWN0aW9uICpnYWN0LCBrdGltZV90 DQo+ID4+ID4+ID4gK3N0YXJ0KSB7DQo+ID4+ID4+ID4gKyAgICAga3RpbWVfdCBleHBpcmVzOw0K PiA+PiA+PiA+ICsNCj4gPj4gPj4gPiArICAgICBleHBpcmVzID0gaHJ0aW1lcl9nZXRfZXhwaXJl cygmZ2FjdC0+aGl0aW1lcik7DQo+ID4+ID4+ID4gKyAgICAgaWYgKGV4cGlyZXMgPT0gMCkNCj4g Pj4gPj4gPiArICAgICAgICAgICAgIGV4cGlyZXMgPSBLVElNRV9NQVg7DQo+ID4+ID4+ID4gKw0K PiA+PiA+PiA+ICsgICAgIHN0YXJ0ID0gbWluX3Qoa3RpbWVfdCwgc3RhcnQsIGV4cGlyZXMpOw0K PiA+PiA+PiA+ICsNCj4gPj4gPj4gPiArICAgICBocnRpbWVyX3N0YXJ0KCZnYWN0LT5oaXRpbWVy LCBzdGFydCwgSFJUSU1FUl9NT0RFX0FCUyk7IH0NCj4gPj4gPj4gPiArDQo+ID4+ID4+ID4gK3N0 YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBnYXRlX3RpbWVyX2Z1bmMoc3RydWN0IGhydGltZXIN Cj4gKnRpbWVyKSB7DQo+ID4+ID4+ID4gKyAgICAgc3RydWN0IGdhdGVfYWN0aW9uICpnYWN0ID0g Y29udGFpbmVyX29mKHRpbWVyLCBzdHJ1Y3QNCj4gZ2F0ZV9hY3Rpb24sDQo+ID4+ID4+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpdGltZXIpOw0KPiA+ PiA+PiA+ICsgICAgIHN0cnVjdCB0Y2ZfZ2F0ZV9wYXJhbXMgKnAgPSBnZXRfZ2F0ZV9wYXJhbShn YWN0KTsNCj4gPj4gPj4gPiArICAgICBzdHJ1Y3QgdGNmZ19nYXRlX2VudHJ5ICpuZXh0Ow0KPiA+ PiA+PiA+ICsgICAgIGt0aW1lX3QgY2xvc2VfdGltZSwgbm93Ow0KPiA+PiA+PiA+ICsNCj4gPj4g Pj4gPiArICAgICBzcGluX2xvY2soJmdhY3QtPmVudHJ5X2xvY2spOw0KPiA+PiA+PiA+ICsNCj4g Pj4gPj4gPiArICAgICBuZXh0ID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChnYWN0LT5uZXh0 X2VudHJ5LA0KPiA+PiA+PiA+ICsNCj4gPj4gPj4gPiArIGxvY2tkZXBfaXNfaGVsZCgmZ2FjdC0+ ZW50cnlfbG9jaykpOw0KPiA+PiA+PiA+ICsNCj4gPj4gPj4gPiArICAgICAvKiBjeWNsZSBzdGFy dCwgY2xlYXIgcGVuZGluZyBiaXQsIGNsZWFyIHRvdGFsIG9jdGV0cyAqLw0KPiA+PiA+PiA+ICsg ICAgIGdhY3QtPmN1cnJlbnRfZ2F0ZV9zdGF0dXMgPSBuZXh0LT5nYXRlX3N0YXRlID8NCj4gPj4g Pj4gR0FURV9BQ1RfR0FURV9PUEVOIDogMDsNCj4gPj4gPj4gPiArICAgICBnYWN0LT5jdXJyZW50 X2VudHJ5X29jdGV0cyA9IDA7DQo+ID4+ID4+ID4gKyAgICAgZ2FjdC0+Y3VycmVudF9tYXhfb2N0 ZXRzID0gbmV4dC0+bWF4b2N0ZXRzOw0KPiA+PiA+PiA+ICsNCj4gPj4gPj4gPiArICAgICBnYWN0 LT5jdXJyZW50X2Nsb3NlX3RpbWUgPSBrdGltZV9hZGRfbnMoZ2FjdC0NCj4gPj4gPmN1cnJlbnRf Y2xvc2VfdGltZSwNCj4gPj4gPj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbmV4dC0+aW50ZXJ2YWwpOw0KPiA+PiA+PiA+ICsNCj4gPj4gPj4gPiArICAg ICBjbG9zZV90aW1lID0gZ2FjdC0+Y3VycmVudF9jbG9zZV90aW1lOw0KPiA+PiA+PiA+ICsNCj4g Pj4gPj4gPiArICAgICBpZiAobGlzdF9pc19sYXN0KCZuZXh0LT5saXN0LCAmcC0+ZW50cmllcykp DQo+ID4+ID4+ID4gKyAgICAgICAgICAgICBuZXh0ID0gbGlzdF9maXJzdF9lbnRyeSgmcC0+ZW50 cmllcywNCj4gPj4gPj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCB0Y2ZnX2dhdGVfZW50cnksIGxpc3QpOw0KPiA+PiA+PiA+ICsgICAgIGVsc2UNCj4gPj4g Pj4gPiArICAgICAgICAgICAgIG5leHQgPSBsaXN0X25leHRfZW50cnkobmV4dCwgbGlzdCk7DQo+ ID4+ID4+ID4gKw0KPiA+PiA+PiA+ICsgICAgIG5vdyA9IGdhdGVfZ2V0X3RpbWUoZ2FjdCk7DQo+ ID4+ID4+ID4gKw0KPiA+PiA+PiA+ICsgICAgIGlmIChrdGltZV9hZnRlcihub3csIGNsb3NlX3Rp bWUpKSB7DQo+ID4+ID4+ID4gKyAgICAgICAgICAgICBrdGltZV90IGN5Y2xlLCBiYXNlOw0KPiA+ PiA+PiA+ICsgICAgICAgICAgICAgdTY0IG47DQo+ID4+ID4+ID4gKw0KPiA+PiA+PiA+ICsgICAg ICAgICAgICAgY3ljbGUgPSBwLT50Y2ZnX2N5Y2xldGltZTsNCj4gPj4gPj4gPiArICAgICAgICAg ICAgIGJhc2UgPSBuc190b19rdGltZShwLT50Y2ZnX2Jhc2V0aW1lKTsNCj4gPj4gPj4gPiArICAg ICAgICAgICAgIG4gPSBkaXY2NF91NjQoa3RpbWVfc3ViX25zKG5vdywgYmFzZSksIGN5Y2xlKTsN Cj4gPj4gPj4gPiArICAgICAgICAgICAgIGNsb3NlX3RpbWUgPSBrdGltZV9hZGRfbnMoYmFzZSwg KG4gKyAxKSAqIGN5Y2xlKTsNCj4gPj4gPj4gPiArICAgICB9DQo+ID4+ID4+ID4gKw0KPiA+PiA+ PiA+ICsgICAgIHJjdV9hc3NpZ25fcG9pbnRlcihnYWN0LT5uZXh0X2VudHJ5LCBuZXh0KTsNCj4g Pj4gPj4gPiArICAgICBzcGluX3VubG9jaygmZ2FjdC0+ZW50cnlfbG9jayk7DQo+ID4+ID4+DQo+ ID4+ID4+IEkgaGF2ZSBjb3VwbGUgb2YgcXVlc3Rpb24gYWJvdXQgc3luY2hyb25pemF0aW9uIGhl cmU6DQo+ID4+ID4+DQo+ID4+ID4+IC0gV2h5IGRvIHlvdSBuZWVkIG5leHRfZW50cnkgdG8gYmUg cmN1IHBvaW50ZXI/IEl0IGlzIG9ubHkNCj4gPj4gPj4gYXNzaWduZWQgaGVyZSB3aXRoIGVudHJ5 X2xvY2sgcHJvdGVjdGlvbiBhbmQgaW4gaW5pdCBjb2RlIGJlZm9yZQ0KPiA+PiA+PiBhY3Rpb24g aXMgdmlzaWJsZSB0byBjb25jdXJyZW50IHVzZXJzLiBJIGRvbid0IHNlZSBhbnkgdW5sb2NrZWQN Cj4gPj4gPj4gcmN1LXByb3RlY3RlZCByZWFkZXJzIGhlcmUgdGhhdCBjb3VsZCBiZW5lZml0IGZy b20gaXQuDQo+ID4+ID4+DQo+ID4+ID4+IC0gV2h5IGNyZWF0ZSBkZWRpY2F0ZWQgZW50cnlfbG9j ayBpbnN0ZWFkIG9mIHVzaW5nIGFscmVhZHkNCj4gPj4gPj4gZXhpc3RpbmcNCj4gPj4gPj4gcGVy LSBhY3Rpb24gdGNmX2xvY2s/DQo+ID4+ID4NCj4gPj4gPiBXaWxsIHRyeSB0byB1c2UgdGhlIHRj Zl9sb2NrIGZvciB2ZXJpZmljYXRpb24uDQo+ID4+ID4gVGhlIHRob3VnaHRzIGNhbWUgZnJvbSB0 aGF0IHRoZSB0aW1lciBwZXJpb2QgYXJyaXZlZCB0aGVuIGNoZWNrDQo+ID4+ID4gdGhyb3VnaCB0 aGUgbGlzdCBhbmQgdGhlbiB1cGRhdGUgbmV4dCB0aW1lIHdvdWxkIHRha2UgbXVjaCBtb3JlDQo+ IHRpbWUuDQo+ID4+ID4gQWN0aW9uIGZ1bmN0aW9uIHdvdWxkIGJlIGJ1c3kgd2hlbiB0cmFmZmlj LiBTbyB1c2UgYSBzZXBhcmF0ZSBsb2NrDQo+ID4+ID4gaGVyZSBmb3INCj4gPj4gPg0KPiA+PiA+ Pg0KPiA+PiA+PiA+ICsNCj4gPj4gPj4gPiArICAgICBocnRpbWVyX3NldF9leHBpcmVzKCZnYWN0 LT5oaXRpbWVyLCBjbG9zZV90aW1lKTsNCj4gPj4gPj4gPiArDQo+ID4+ID4+ID4gKyAgICAgcmV0 dXJuIEhSVElNRVJfUkVTVEFSVDsNCj4gPj4gPj4gPiArfQ0KPiA+PiA+PiA+ICsNCj4gPj4gPj4g PiArc3RhdGljIGludCB0Y2ZfZ2F0ZV9hY3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3Qgc3Ry dWN0IHRjX2FjdGlvbg0KPiAqYSwNCj4gPj4gPj4gPiArICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IHRjZl9yZXN1bHQgKnJlcykgew0KPiA+PiA+PiA+ICsgICAgIHN0cnVjdCB0Y2ZfZ2F0ZSAq ZyA9IHRvX2dhdGUoYSk7DQo+ID4+ID4+ID4gKyAgICAgc3RydWN0IGdhdGVfYWN0aW9uICpnYWN0 Ow0KPiA+PiA+PiA+ICsgICAgIGludCBhY3Rpb247DQo+ID4+ID4+ID4gKw0KPiA+PiA+PiA+ICsg ICAgIHRjZl9sYXN0dXNlX3VwZGF0ZSgmZy0+dGNmX3RtKTsNCj4gPj4gPj4gPiArICAgICBic3Rh dHNfY3B1X3VwZGF0ZSh0aGlzX2NwdV9wdHIoZy0+Y29tbW9uLmNwdV9ic3RhdHMpLA0KPiA+PiA+ PiA+ICsgc2tiKTsNCj4gPj4gPj4gPiArDQo+ID4+ID4+ID4gKyAgICAgYWN0aW9uID0gUkVBRF9P TkNFKGctPnRjZl9hY3Rpb24pOw0KPiA+PiA+PiA+ICsgICAgIHJjdV9yZWFkX2xvY2soKTsNCj4g Pj4gPj4NCj4gPj4gPj4gQWN0aW9uIGZhc3RwYXRoIGlzIGFscmVhZHkgcmN1IHJlYWQgbG9jayBw cm90ZWN0ZWQsIHlvdSBkb24ndCBuZWVkDQo+ID4+ID4+IHRvIG1hbnVhbGx5IG9idGFpbiBpdC4N Cj4gPj4gPg0KPiA+PiA+IFdpbGwgYmUgcmVtb3ZlZC4NCj4gPj4gPg0KPiA+PiA+Pg0KPiA+PiA+ PiA+ICsgICAgIGdhY3QgPSByY3VfZGVyZWZlcmVuY2VfYmgoZy0+YWN0Zyk7DQo+ID4+ID4+ID4g KyAgICAgaWYgKHVubGlrZWx5KGdhY3QtPmN1cnJlbnRfZ2F0ZV9zdGF0dXMgJg0KPiA+PiA+PiA+ ICsgR0FURV9BQ1RfUEVORElORykpIHsNCj4gPj4gPj4NCj4gPj4gPj4gQ2FuJ3QgY3VycmVudF9n YXRlX3N0YXR1cyBiZSBjb25jdXJyZW50bHkgbW9kaWZpZWQgYnkgdGltZXINCj4gY2FsbGJhY2s/ DQo+ID4+ID4+IFRoaXMgZnVuY3Rpb24gZG9lc24ndCB1c2UgZW50cnlfbG9jayB0byBzeW5jaHJv bml6ZSB3aXRoIHRpbWVyLg0KPiA+PiA+DQo+ID4+ID4gV2lsbCB0cnkgdGNmX2xvY2sgZWl0aGVy Lg0KPiA+PiA+DQo+ID4+ID4+DQo+ID4+ID4+ID4gKyAgICAgICAgICAgICByY3VfcmVhZF91bmxv Y2soKTsNCj4gPj4gPj4gPiArICAgICAgICAgICAgIHJldHVybiBhY3Rpb247DQo+ID4+ID4+ID4g KyAgICAgfQ0KPiA+PiA+PiA+ICsNCj4gPj4gPj4gPiArICAgICBpZiAoIShnYWN0LT5jdXJyZW50 X2dhdGVfc3RhdHVzICYgR0FURV9BQ1RfR0FURV9PUEVOKSkNCj4gPj4gPj4NCj4gPj4gPj4gLi4u YW5kIGhlcmUNCj4gPj4gPj4NCj4gPj4gPj4gPiArICAgICAgICAgICAgIGdvdG8gZHJvcDsNCj4g Pj4gPj4gPiArDQo+ID4+ID4+ID4gKyAgICAgaWYgKGdhY3QtPmN1cnJlbnRfbWF4X29jdGV0cyA+ PSAwKSB7DQo+ID4+ID4+ID4gKyAgICAgICAgICAgICBnYWN0LT5jdXJyZW50X2VudHJ5X29jdGV0 cyArPSBxZGlzY19wa3RfbGVuKHNrYik7DQo+ID4+ID4+ID4gKyAgICAgICAgICAgICBpZiAoZ2Fj dC0+Y3VycmVudF9lbnRyeV9vY3RldHMgPg0KPiA+PiA+PiA+ICsgZ2FjdC0+Y3VycmVudF9tYXhf b2N0ZXRzKSB7DQo+ID4+ID4+DQo+ID4+ID4+IGhlcmUgYWxzby4NCj4gPj4gPj4NCj4gPj4gPj4g PiArDQo+ID4+ID4+ID4gKyBxc3RhdHNfb3ZlcmxpbWl0X2luYyh0aGlzX2NwdV9wdHIoZy0+Y29t bW9uLmNwdV9xc3RhdHMpKTsNCj4gPj4gPj4NCj4gPj4gPj4gUGxlYXNlIHVzZSB0Y2ZfYWN0aW9u X2luY19vdmVybGltaXRfcXN0YXRzKCkgYW5kIG90aGVyIHdyYXBwZXJzDQo+ID4+ID4+IGZvcg0K PiA+PiBzdGF0cy4NCj4gPj4gPj4gT3RoZXJ3aXNlIGl0IHdpbGwgY3Jhc2ggaWYgdXNlciBwYXNz ZXMNCj4gPj4gVENBX0FDVF9GTEFHU19OT19QRVJDUFVfU1RBVFMNCj4gPj4gPj4gZmxhZy4NCj4g Pj4gPg0KPiA+PiA+IFRoZSB0Y2ZfYWN0aW9uX2luY19vdmVybGltaXRfcXN0YXRzKCkgY2FuJ3Qg c2hvdyBsaW1pdCBjb3VudHMgaW4gdGMNCj4gPj4gPiBzaG93DQo+ID4+IGNvbW1hbmQuIElzIHRo ZXJlIGFueXRoaW5nIG5lZWQgdG8gZG8/DQo+ID4+DQo+ID4+IFdoYXQgZG8geW91IG1lYW4/IElu dGVybmFsbHkgdGNmX2FjdGlvbl9pbmNfb3ZlcmxpbWl0X3FzdGF0cygpIGp1c3QNCj4gPj4gY2Fs bHMgcXN0YXRzX292ZXJsaW1pdF9pbmMsIGlmIGNwdV9xc3RhdHMgcGVyY3B1IGNvdW50ZXIgaXMg bm90IE5VTEw6DQo+ID4+DQo+ID4+DQo+ID4+ICAgICAgICAgaWYgKGxpa2VseShhLT5jcHVfcXN0 YXRzKSkgew0KPiA+PiAgICAgICAgICAgICAgICAgcXN0YXRzX292ZXJsaW1pdF9pbmModGhpc19j cHVfcHRyKGEtPmNwdV9xc3RhdHMpKTsNCj4gPj4gICAgICAgICAgICAgICAgIHJldHVybjsNCj4g Pj4gICAgICAgICB9DQo+ID4+DQo+ID4+IElzIHRoZXJlIGEgc3VidGxlIGJ1ZyBzb21ld2hlcmUg aW4gdGhpcyBmdW5jdGlvbj8NCj4gPg0KPiA+IFNvcnJ5LCBJIHVwZGF0ZWQgdXNpbmcgdGhlIHRj Zl9hY3Rpb25fKiwgYW5kIHRoZSBjb3VudGluZyBpcyBvay4gSSBtb3ZlZA0KPiBiYWNrIHRvIHRo ZSBxc3RhdHNfb3ZlcmxpbWl0X2luYygpIGJlY2F1c2UgdGNmX2FjdGlvbl8qICgpIGluY2x1ZGUg dGhlDQo+IHNwaW5fbG9jaygmYS0+dGNmYV9sb2NrKS4NCj4gPiBJIHdvdWxkIHVwZGF0ZSB0byAg dGNmX2FjdGlvbl8qICgpIGluY3JlYXRlLg0KPiANCj4gQlRXIGlmIHlvdSBlbmQgdXAgd2l0aCBz eW5jaHJvbml6aW5nIGZhc3RwYXRoIHdpdGggdGNmYV9sb2NrLCB0aGVuIHlvdQ0KPiBkb24ndCBu ZWVkIHRvIHVzZSB0Y2ZfYWN0aW9uXypzdGF0cygpIGhlbHBlcnMgYW5kIHBlcmNwdSBjb3VudGVy cyAodGhleQ0KPiB3aWxsIG9ubHkgc2xvdyBkb3duIGFjdGlvbiBpbml0IGFuZCBpbmNyZWFzZSBt ZW1vcnkgdXNhZ2Ugd2l0aG91dA0KPiBwcm92aWRpbmcgYW55IGltcHJvdmVtZW50cyBmb3IgcGFy YWxsZWxpc20pLiBJbnN0ZWFkLCB5b3UgY2FuIGp1c3QgZGlyZWN0bHkNCj4gY2hhbmdlIHRoZSB0 Y2Zfe3F8Yn1zdGF0cyB3aGlsZSBob2xkaW5nIHRoZSB0Y2ZhX2xvY2suIENoZWNrIHBlZGl0IGZv cg0KPiBleGFtcGxlIG9mIHN1Y2ggYWN0aW9uLg0KDQpJIHRyaWVkIGZpeCB0d28gdmVyc2lvbnMg YXMgeW91ciBzdWdnZXN0aW9uLiBPbmUgaXMga2VlcCBnYXRlX2FjdGlvbiBzdHJ1Y3R1cmUgYXMg cG9pbnRlciBhbmQgYWxzbyBrZWVwIHRoZSBlbnRyeV9sb2NrIHRvIGZpeCB0aGUgcmN1IGZyZWUg cmVsYXRlZCBpc3N1ZS4gQW5vdGhlciB3YXkgdG8gcmVtb3ZlIHRoZSBzdHJ1Y3QgZ2F0ZV9hY3Rp b24gYW5kIG1vdmUgdGhlbSB0byBzdHJ1Y3QgdGNmX2dhdGUgYWxpZ24gd2l0aCBzdHJ1Y3QgdGNf YWN0aW9uLiBJIHdvdWxkIGNob29zZSBzZWNvbmQgb25lIGZvciBuZXh0IHZlcnNpb24gdXBsb2Fk aW5nIHNpbmNlIGl0IHdvdWxkIG5vdCB1c2UgcmN1IHdoaWNoIG1vcmUgc2ltcGxlKHJlZmVyIHRo ZSBwZWRpdCBhY3Rpb24pLiBJIG1ldCB0aGUgc3RhdHVzIHVwZGF0ZSBzZWxlY3Rpb24gbGlrZSBo ZXJlIHlvdXIgbWVudGlvbi4gIFNpbmNlIEkgdXNlIHNwaW5fbG9jaygmYS0+dGNmYV9sb2NrKSwg YnV0IEkgY2FuJ3QgdXNpbmcgY29kZSBsaWtlOg0KcC0+dGNmX3FzdGF0cy5vdmVybGltaXRzKys7 DQpUaGlzIHdvbid0IHNob3cgYnkgInRjIGZpbHRlciBzaG93IiBzaW5jZSBpdCBpcyBzaG93aW5n IG92ZXJsaW1pdHMgYW5kIGRyb3AgZnJvbSAicXN0YXRzX292ZXJsaW1pdF9pbmModGhpc19jcHVf cHRyKGEtPmNwdV9xc3RhdHMpKTsiDQpTbyBJIGNob29zZSB0aGUgInRjZl9hY3Rpb25faW5jX292 ZXJsaW1pdF9xc3RhdHMoKSIgYW5kIGV4Y2x1ZGVkIGluIHRoZSBzcGluX2xvY2suDQoNCj4gDQo+ ID4NCj4gPj4NCj4gPj4gPg0KPiA+PiA+IEJyLA0KPiA+PiA+IFBvIExpdQ0KPiA+DQo+ID4gVGhh bmtzIGEgbG90Lg0KPiA+DQo+ID4gQnIsDQo+ID4gUG8gTGl1DQoNClRoYW5rcyBhIGxvdC4NCkJy LA0KUG8gTGl1DQo=