Received: by 2002:a05:6a10:17d3:0:0:0:0 with SMTP id hz19csp3126441pxb; Tue, 20 Apr 2021 00:49:19 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx23xzzxwxAFWUz6AulKYhq+fJNQGfX1xTfy1d1xUocIDns7RZII0tRNZAh3ooOHK4cvAhp X-Received: by 2002:a65:6856:: with SMTP id q22mr6822672pgt.5.1618904959299; Tue, 20 Apr 2021 00:49:19 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1618904959; cv=pass; d=google.com; s=arc-20160816; b=nTxPYuk6OfajkI3DG+PJ7EighgSeF1p2Zc4CZSFYO6RCbTIUXFInZzzBAi1L2304cG 9l9ss9JaAnV/bszyj/C3yVHNKrEnRVkCNpUXJKZeShUFd99my4OMVViAUHUFxPoNnCjR kseEa+puULhnIOcfGGn92ZQHMfzzu/+Is9MIFdvIAnLHWvmrnerob5cd4nIp38AEmyCQ C7J99LOV8vqoRCYcn26ja6VPuVCnTlM5dNYzIKZn+u66V6HVi4kN76PIVetUEa6zIUT1 XZKzZuKJzb10Ja9xIN44X4z7lZ2YB2VHWjVyOBA9c0J065E7hWm5wD2ynunXdYJRlm7O HrOQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature; bh=CqQd2JIbX9ed4uHEuKrb32JY0syfJkE7Tu+L2P82ZL0=; b=yO5gOYmBkKK+N2bV2fMacRcHW8B4SBO1NZ/puaQUo17D0jwUGRHCO6rzmrXW9gXduM RGDYku/6zaz+I28CoVcuxa4UR+HCE/cEZw+uK92ZwzhjURuo2NfwDxzvT9/3K8oEQCtQ Sy8fbN1ev0IneN5o/Yr00fbYu4kzWPzo3S1CoT9hlDkH39YhawtTKHaOZCgs6K+W43PJ 9sOEH7Ggr5knPAKCZRHykikd8Drv/DigL3IzZ9DCaXpM2zuydGlfSIuC+yxEB0XuJftW 474Lm7jvMXw3cDeYXfg3MWpp/pkSaSTHqFeGdyXGiWjWQ/3eu7RDWDTaearoqmog2gmL 5XcA== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@nxp.com header.s=selector2 header.b=mV8rT2Rm; arc=pass (i=1 spf=pass spfdomain=nxp.com dkim=pass dkdomain=nxp.com dmarc=pass fromdomain=nxp.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id kk12si2325591pjb.120.2021.04.20.00.49.07; Tue, 20 Apr 2021 00:49:19 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@nxp.com header.s=selector2 header.b=mV8rT2Rm; arc=pass (i=1 spf=pass spfdomain=nxp.com dkim=pass dkdomain=nxp.com dmarc=pass fromdomain=nxp.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229941AbhDTHsv (ORCPT + 99 others); Tue, 20 Apr 2021 03:48:51 -0400 Received: from mail-vi1eur05on2088.outbound.protection.outlook.com ([40.107.21.88]:45761 "EHLO EUR05-VI1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S229551AbhDTHss (ORCPT ); Tue, 20 Apr 2021 03:48:48 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KuEY5+32HzNe7fk5iyFRCsNUDE3fyrpslCp4blpOl0uQlaPGUeN9cBJdV99oKjBBoeswjLXTCXTPGs9szAeDtivYkqcRK8vm0oQA8XSwRO5cypFKZR4XuSWMWSyZRD0Iki0RUofnon+8fMm8RPgIcsBYX8YYaVi5CnHX8vTtQYBLfASLrZ8tk2HDxXNTq8s0WqK6uxkCa91ai0V3x04CH1aaZ/zfPX9Yr7v0mUew0qfr2iAryQJLi/p0jbC1W2VGKqbm/oCQpYB4dmbsXn0y1SQx/HSDeeLmry1YYFgwSTHfgo3bLmHWxrUTqqUAMV7MSGEM+KZgl0GMO79kdjhTUg== 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=CqQd2JIbX9ed4uHEuKrb32JY0syfJkE7Tu+L2P82ZL0=; b=cSzxwpParJJiCz4H1f7GVYdrpV23qAZSoy6YzH8PV9eLBCfzSXbcMqZuzs51T0q5zAhJqAPhyaqilat+XrD9lbfvAiLiHXkYlxJKX0VmVznj6yCGVaU3ObjRWt/MLlWJRL4oLcqTsvNmnV2InkfZrxl0LHzyJgDC29e61i0Vg9tlNi58peLWNxeRBvoX86cNUhwGvkMDfjHWRaGAWawL8d8fGppz/WkROWSpMN9JpzWh8bgEsedEx3YzuOZhISX2u36eXA6vTl+qwvZKtyk8ad5Cv+ZcgqKPA9uFJJDsAkO0pGnFUo+KH65ZWS3wy8ZRIKms9jPQ2Bgze/tvo6Oq1Q== 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=CqQd2JIbX9ed4uHEuKrb32JY0syfJkE7Tu+L2P82ZL0=; b=mV8rT2RmEAL28vfZm80s47J1ig0NF+27lCyrbupqLVC8GSgllAAAWtOy5S8KsKbXoYGKREGUjyaJWtFL2FDP1kwsVYjiRvXAh9w6ji+qgO3/nZEzkpDqF5FRITfnu65cEkC1HhOmD0SuZovROFgoIjFkP3NqgtPpwTsKDZkyLPE= Received: from AM7PR04MB6885.eurprd04.prod.outlook.com (2603:10a6:20b:10d::24) by AM6PR04MB5991.eurprd04.prod.outlook.com (2603:10a6:20b:9d::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4042.16; Tue, 20 Apr 2021 07:48:13 +0000 Received: from AM7PR04MB6885.eurprd04.prod.outlook.com ([fe80::358e:fb22:2f7c:2777]) by AM7PR04MB6885.eurprd04.prod.outlook.com ([fe80::358e:fb22:2f7c:2777%3]) with mapi id 15.20.4042.024; Tue, 20 Apr 2021 07:48:13 +0000 From: "Y.b. Lu" To: Vladimir Oltean CC: "netdev@vger.kernel.org" , Richard Cochran , Vladimir Oltean , "David S . Miller" , Jakub Kicinski , Jonathan Corbet , Kurt Kanzenbach , Andrew Lunn , Vivien Didelot , Florian Fainelli , Claudiu Manoil , Alexandre Belloni , "UNGLinuxDriver@microchip.com" , "linux-doc@vger.kernel.org" , "linux-kernel@vger.kernel.org" Subject: RE: [net-next 1/3] net: dsa: optimize tx timestamp request handling Thread-Topic: [net-next 1/3] net: dsa: optimize tx timestamp request handling Thread-Index: AQHXMrxTcFa/yb7c402hVeJWcQQ266q6Ai0AgAMKN1A= Date: Tue, 20 Apr 2021 07:48:13 +0000 Message-ID: References: <20210416123655.42783-1-yangbo.lu@nxp.com> <20210416123655.42783-2-yangbo.lu@nxp.com> <20210418091842.slmcybvjfkvkatiq@skbuf> In-Reply-To: <20210418091842.slmcybvjfkvkatiq@skbuf> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: gmail.com; dkim=none (message not signed) header.d=none;gmail.com; dmarc=none action=none header.from=nxp.com; x-originating-ip: [119.31.174.73] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 2f8dda90-02ea-49e6-21c2-08d903d0a6b3 x-ms-traffictypediagnostic: AM6PR04MB5991: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: V5HYCvBEHrXx/tKjdNIenfKbLuB+USZoePSnU+4VYTGb3Ug/wmE+vz+kay1KRuVhDfTtp/bbxFrw5SGJRp2o9KdZxyQh4iBgykBrShYpnZalzhuN36erzBU6lH9MH4zCSOO03rqSx7a2CNt39XPaJ1BIPwbOuNC3aFFflnsfQc8CcmvmdqGQZa5PywGb4QNhU0xvB8Xom+wqK1/UldyC9NuRJwPrklhQwvIMlQlNPXeo9p3Pymo6qGs7guIxrWJQraUmNHfNt11JHEM+Z7/bOg3OHu5ILlsbgSbbzENIFw3+GPALY03wjxfs8cpKod3WYMdPpVZhi0OoV2USLzGzns9qUOYo8HYsH9fgnRXXomRWSFpFlJRr+aasY9nyDoiGcKODAvRALQEPJ9ZamxtRtU8VvYFNB+f7QHKijhudKCWgdKhWX28j7zurPt4OAye0t6oeXVi4EjI/ql5KrIBCN+oOHWnwtCqyWK43cFDgQJujTOehrmni0815FiBhGMtC9a1nLbo8kJIhSe2CStrAW46e/4bi/8liR/uZ10Bsvo5ZgKZpvP/ZkNuCY+BQ8ZRNp98eE/9H3fJcjrnzvlSoWnKqbYz9prjGPWewq963ZC0FOzH4LIb5xbXENCtZ9MHqu990AaT1h9kbT4IazAUF302/aR5CmHVuFMktv7ieOSuBt9v91+2yv43oWnfU/3Gr x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM7PR04MB6885.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(498600001)(33656002)(86362001)(2906002)(76116006)(45080400002)(186003)(4326008)(52536014)(55016002)(966005)(6916009)(8676002)(26005)(5660300002)(71200400001)(66476007)(54906003)(9686003)(7416002)(7696005)(122000001)(66556008)(8936002)(64756008)(66446008)(83380400001)(66946007)(6506007)(38100700002)(30864003)(53546011);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: =?gb2312?B?UklURy84MERMbXFLRVBFRWpibjNNcjZUZXBUeEVpMlVlZDBORjNqMlVYQnJM?= =?gb2312?B?VDlvRU1NTWhuSCsvWHJjM2lhRE4yU25yRDR3MXBPaUlNZEg5bEs4RFZ5MEVx?= =?gb2312?B?ME42aEt4SjVTaWhqeFBrTDZTL3NSbFkydHJQaU1vM2YzWWFGcEpxdGxUWTFY?= =?gb2312?B?SVg3MnN3eC9jSDNsSE95ZWJqa0RpY0NKMXdscCtabER4eVdzRDE1b25PUSsr?= =?gb2312?B?dnJ3OEJnQk9lK3RPOUtVTk9Oa0svYnZ2OHlmTnZkTFdaQlNDcmIwNFYyZlRp?= =?gb2312?B?aWduODFka2RtK3lPNW5WQWtIZndyOWNwajhsc1ExYU9zaU1NbU1ncFUrVlFF?= =?gb2312?B?NFRIUTRkZmI0Nm5QWnppSlR2b3RlNmtRRWhiakZmbUQyQXNodTg1NHFwamZS?= =?gb2312?B?QUJNdncwenN0bEFPcm1CbVc5UlBTQ25rSkpUWlhOTVlwUEFzOWtWYXFFSG5R?= =?gb2312?B?YTUyS0xab2crNkZzaE1CYXJIU1o4dmtiNnpVajRYU1FNQkR4K2E3bDlib2Zy?= =?gb2312?B?dWE4WjMybVVNZ0t2UUJsYWxCMWVKekluNG5uWDN1VW9seTE5bUxQejRkRzZw?= =?gb2312?B?b0NBWDBRY2Z4WTFpekpjZmlvNS9leXVwNTg5ZnliSDI1djY5a0pjUkZWUmp3?= =?gb2312?B?eVRTOEpJbjZIdjBFMHJkOE9Zck5jcit3M0RLZlZZazJHaDM3QjF2UVhOcm1D?= =?gb2312?B?dXRhcWNhODdqZ0dMMkNDWXlMMlJZTDRFTnU5TU1oYzI2T0hJeHNJNlVsa3h0?= =?gb2312?B?MllCbDYydVVoZjduNW5BNVpCMC83N0pmWXNRZTZqQkR4K2hzU1pXTkI3MWpZ?= =?gb2312?B?TnhYRldKeitKU2NRT1ZjZDd1d0NULzhuY0tvMkk4OUZKT3YyY3lIUU9nbEZR?= =?gb2312?B?MU14VGRxWDU3VTRndmdvaWZaTG40YzhiSmJPL1VUb1djUDYwbHNUbWxWWG5z?= =?gb2312?B?dkhEaWFvUlhsczZmUndYUXpIVHE1THIxbUl6RzduYmxmbC9hTlRvWndEWkE2?= =?gb2312?B?cVFCWWY5MGdrdDRiQWFhVDZPRTU4N0JUOUpvd05QcXNNYXRkdmxVQ3FiWUJw?= =?gb2312?B?RDVQOTdxZlhvdG1UTnRzVmZDZFp2ZHVqNk9JbDRzRFFLcGllQmlUenZKM09Q?= =?gb2312?B?c09JOWNtWVFCMzlQb3l4VW1wcEl4ekk3ekVlalRwSlF6ZjhRbVhJM2p3bkE1?= =?gb2312?B?eE1Wc1pLVXVIdk12b2RtOHhBUTdQK2xZazNicFZVOVFpOTBjUk5tZG5GMnN3?= =?gb2312?B?TXNkdVhhVG9RU2dFcTVkT0QyNk9QRUZiVmVkVWVWbWViZnoxaVc5Tmt5dmtI?= =?gb2312?B?TEQ1bEg5dlZ6WWMvZFZJRUN2cTZhRm1VOXozSzkxeUZnK1owWU00NXNlZVdD?= =?gb2312?B?YmxGdVluNjl5Zjc2QURNNlZybmtoVWo0aGs3WlpDbEhZblYxU0dhb2VDR0Ri?= =?gb2312?B?Qlp3OUR3U3YyVnlkd2oyMTdsbFdYb2w1cllUekhMai84ajN6WEhXYjkyaURP?= =?gb2312?B?bUpIcC9aMjZMZjMxL1pIdWoyTWI1Nm02WWdhS3h0VGFMYnVZNk1nalhRTThX?= =?gb2312?B?OGR0bFlxbzBxUXRYa0lrSWtURDdLY2I1TFZiYVZOVW5SY0NJTFpnNkhkekdQ?= =?gb2312?B?NHZIQmdhNHlpMlFmYUx4YlJKZit6TkdZdjVKNkRmSWJXd3BJSDhBaVlrVi9n?= =?gb2312?B?VHZwS0M4NU9qMEFjQk1BbXBvNjR4Ulpoc0pjUGJ0aTNhMHhmeGx5NnRQd0V4?= =?gb2312?Q?sbhDwvQOZvXJX2TqIn+1ViV6nETWzPNxuw20tXq?= Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AM7PR04MB6885.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2f8dda90-02ea-49e6-21c2-08d903d0a6b3 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Apr 2021 07:48:13.2672 (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: RK4r16QNXFNmzoSlhBEiISLaRMoBhkBalcxbm0AzdpUxL6SuEXeP+kv+GmUYoBU1WG+je0U29bkboY2eDbgnCA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB5991 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBWbGFkaW1pciBPbHRlYW4gPG9s dGVhbnZAZ21haWwuY29tPg0KPiBTZW50OiAyMDIxxOo01MIxOMjVIDE3OjE5DQo+IFRvOiBZLmIu IEx1IDx5YW5nYm8ubHVAbnhwLmNvbT4NCj4gQ2M6IG5ldGRldkB2Z2VyLmtlcm5lbC5vcmc7IFJp Y2hhcmQgQ29jaHJhbiA8cmljaGFyZGNvY2hyYW5AZ21haWwuY29tPjsNCj4gVmxhZGltaXIgT2x0 ZWFuIDx2bGFkaW1pci5vbHRlYW5AbnhwLmNvbT47IERhdmlkIFMgLiBNaWxsZXINCj4gPGRhdmVt QGRhdmVtbG9mdC5uZXQ+OyBKYWt1YiBLaWNpbnNraSA8a3ViYUBrZXJuZWwub3JnPjsgSm9uYXRo YW4gQ29yYmV0DQo+IDxjb3JiZXRAbHduLm5ldD47IEt1cnQgS2FuemVuYmFjaCA8a3VydEBsaW51 dHJvbml4LmRlPjsgQW5kcmV3IEx1bm4NCj4gPGFuZHJld0BsdW5uLmNoPjsgVml2aWVuIERpZGVs b3QgPHZpdmllbi5kaWRlbG90QGdtYWlsLmNvbT47IEZsb3JpYW4NCj4gRmFpbmVsbGkgPGYuZmFp bmVsbGlAZ21haWwuY29tPjsgQ2xhdWRpdSBNYW5vaWwgPGNsYXVkaXUubWFub2lsQG54cC5jb20+ Ow0KPiBBbGV4YW5kcmUgQmVsbG9uaSA8YWxleGFuZHJlLmJlbGxvbmlAYm9vdGxpbi5jb20+Ow0K PiBVTkdMaW51eERyaXZlckBtaWNyb2NoaXAuY29tOyBsaW51eC1kb2NAdmdlci5rZXJuZWwub3Jn Ow0KPiBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnDQo+IFN1YmplY3Q6IFJlOiBbbmV0LW5l eHQgMS8zXSBuZXQ6IGRzYTogb3B0aW1pemUgdHggdGltZXN0YW1wIHJlcXVlc3QgaGFuZGxpbmcN Cj4gDQo+IE9uIEZyaSwgQXByIDE2LCAyMDIxIGF0IDA4OjM2OjUzUE0gKzA4MDAsIFlhbmdibyBM dSB3cm90ZToNCj4gPiBPcHRpbWl6YXRpb24gY291bGQgYmUgZG9uZSBvbiBkc2Ffc2tiX3R4X3Rp bWVzdGFtcCgpLCBhbmQgZHNhIGRldmljZQ0KPiA+IGRyaXZlcnMgc2hvdWxkIGFkYXB0IHRvIGl0 Lg0KPiA+DQo+ID4gLSBDaGVjayBTS0JUWF9IV19UU1RBTVAgcmVxdWVzdCBmbGFnIGF0IHRoZSB2 ZXJ5IGJlZ2lubmluZywgaW5zdGVhZCBvZiBpbg0KPiA+ICAgcG9ydF90eHRzdGFtcCwgc28gdGhh dCBtb3N0IHNrYnMgbm90IHJlcXVpcmluZyB0eCB0aW1lc3RhbXAganVzdCByZXR1cm4uDQo+IA0K PiBBZ3JlZSB0aGF0IHRoaXMgaXMgYSB0cml2aWFsIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiB3 aXRoIG5vIGRvd25zaWRlIHRoYXQgd2UNCj4gc2hvdWxkIGJlIG1ha2luZy4NCj4gDQo+ID4gLSBO byBsb25nZXIgdG8gaWRlbnRpZnkgUFRQIHBhY2tldHMsIGFuZCBsaW1pdCB0eCB0aW1lc3RhbXBp bmcgb25seSBmb3IgUFRQDQo+ID4gICBwYWNrZXRzLiBJZiBkZXZpY2UgZHJpdmVyIGxpa2VzLCBs ZXQgZGV2aWNlIGRyaXZlciBkby4NCj4gDQo+IEFncmVlIHRoYXQgRFNBIGhhcyBhIHdheSB0b28g aGVhdnkgaGFuZCBpbiBpbXBvc2luZyB1cG9uIHRoZSBkcml2ZXIgd2hpY2gNCj4gcGFja2V0cyBz aG91bGQgYmUgdGltZXN0YW1wYWJsZSBhbmQgd2hpY2ggb25lcyBzaG91bGRuJ3QuDQo+IA0KPiBG b3IgZXhhbXBsZSwgSSBoYXZlIGEgbGF0ZW5jeSBtZWFzdXJlbWVudCB0b29sIGNhbGxlZCBpc29j aHJvbiB3aGljaCBpcyBiYXNlZA0KPiBvbiBoYXJkd2FyZSB0aW1lc3RhbXBpbmcgb2Ygbm9uLVBU UCBwYWNrZXRzIChpbiBvcmRlciB0byBub3QgZGlzdHVyYiB0aGUgUFRQDQo+IHN0YXRlIG1hY2hp bmVzKToNCj4gaHR0cHM6Ly9ldXIwMS5zYWZlbGlua3MucHJvdGVjdGlvbi5vdXRsb29rLmNvbS8/ dXJsPWh0dHBzJTNBJTJGJTJGZ2l0aHViLg0KPiBjb20lMkZ2bGFkaW1pcm9sdGVhbiUyRnRzbi1z Y3JpcHRzJmFtcDtkYXRhPTA0JTdDMDElN0N5YW5nYm8ubHUlNDANCj4gbnhwLmNvbSU3QzM3NzJm NjNkZWI2ZjQ0OTE5MzMyMDhkOTAyNGFmNzUwJTdDNjg2ZWExZDNiYzJiNGM2ZmE5DQo+IDJjZDk5 YzVjMzAxNjM1JTdDMCU3QzAlN0M2Mzc1NDMzNDMyNjc5MTQwMTglN0NVbmtub3duJTdDVFcNCj4g RnBiR1pzYjNkOGV5SldJam9pTUM0d0xqQXdNREFpTENKUUlqb2lWMmx1TXpJaUxDSkJUaUk2SWsx aGFXd2lMQ0pYVg0KPiBDSTZNbjAlM0QlN0MxMDAwJmFtcDtzZGF0YT1kZU9uMDNqNmJpUEVVd3Bw Tmt2JTJGOWlmMXU1SElkTEV0enoNCj4gQWtXVzBwMXJjJTNEJmFtcDtyZXNlcnZlZD0wDQo+IA0K PiBJIGNhbid0IHVzZSBpdCBvbiBEU0EgaW50ZXJmYWNlcywgZm9yIHJhdGhlciBhcnRpZmljaWFs IHJlYXNvbnMuDQo+IA0KPiA+IC0gSXQgaXMgYSB3YXN0ZSB0byBjbG9uZSBza2IgZGlyZWN0bHkg aW4gZHNhX3NrYl90eF90aW1lc3RhbXAoKS4NCj4gPiAgIEZvciBvbmUtc3RlcCB0aW1lc3RhbXBp bmcsIGEgY2xvbmUgaXMgbm90IG5lZWRlZC4gRm9yIGFueSBmYWlsdXJlIG9mDQo+ID4gICBwb3J0 X3R4dHN0YW1wICh0aGlzIG1heSB1c3VhbGx5IGhhcHBlbiksIHRoZSBza2IgY2xvbmUgaGFzIHRv IGJlIGZyZWVkLg0KPiA+ICAgU28gcHV0IHNrYiBjbG9uaW5nIGludG8gcG9ydF90eHRzdGFtcCB3 aGVyZSBpdCByZWFsbHkgbmVlZHMuDQo+IA0KPiBNb3N0bHkgYWdyZWUuIEZvciB0d28tc3RlcCB0 aW1lc3RhbXBpbmcsIGl0IGlzIGFuIG9wZXJhdGlvbiB3aGljaCBhbGwgZHJpdmVycw0KPiBuZWVk IHRvIGRvLCBzbyBpdCBpcyBpbiB0aGUgY29tbW9uIHBvdGlvbi4gSWYgd2Ugd2FudCB0byBzdXBw b3J0IG9uZS1zdGVwLCB3ZQ0KPiBuZWVkIHRvIGF2b2lkIGNsb25pbmcgdGhlIFBUUCBwYWNrZXRz Lg0KPiANCg0KVGhhbmtzIGEgbG90IGZvciB5b3VyIEFDSy4NCg0KPiA+IFNpZ25lZC1vZmYtYnk6 IFlhbmdibyBMdSA8eWFuZ2JvLmx1QG54cC5jb20+DQo+ID4gLS0tDQo+ID4gIERvY3VtZW50YXRp b24vbmV0d29ya2luZy90aW1lc3RhbXBpbmcucnN0ICAgICB8ICA3ICsrKysrLS0NCj4gPiAgLi4u L25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWtfaHd0c3RhbXAuYyAgIHwgMjAgKysrKysrKysr KysrLS0tLS0tDQo+ID4gIC4uLi9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrX2h3dHN0YW1w LmggICB8ICAyICstDQo+ID4gIGRyaXZlcnMvbmV0L2RzYS9tdjg4ZTZ4eHgvaHd0c3RhbXAuYyAg ICAgICAgICB8IDIxDQo+ICsrKysrKysrKysrKystLS0tLS0NCj4gPiAgZHJpdmVycy9uZXQvZHNh L212ODhlNnh4eC9od3RzdGFtcC5oICAgICAgICAgIHwgIDYgKysrLS0tDQo+ID4gIGRyaXZlcnMv bmV0L2RzYS9vY2Vsb3QvZmVsaXguYyAgICAgICAgICAgICAgICB8IDExICsrKysrKy0tLS0NCj4g PiAgZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9wdHAuYyAgICAgICAgIHwgIDYgKysr KystDQo+ID4gIGRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfcHRwLmggICAgICAgICB8 ICAyICstDQo+ID4gIGluY2x1ZGUvbmV0L2RzYS5oICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAyICstDQo+ID4gIG5ldC9kc2Evc2xhdmUuYyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IDIwICsrKysrLS0tLS0tLS0tLS0tLQ0KPiA+ICAxMCBmaWxlcyBjaGFuZ2VkLCA1NyBp bnNlcnRpb25zKCspLCA0MCBkZWxldGlvbnMoLSkNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9Eb2N1 bWVudGF0aW9uL25ldHdvcmtpbmcvdGltZXN0YW1waW5nLnJzdA0KPiA+IGIvRG9jdW1lbnRhdGlv bi9uZXR3b3JraW5nL3RpbWVzdGFtcGluZy5yc3QNCj4gPiBpbmRleCBmNjgyZTg4ZmE4N2UuLjdm MDRhNjk5YTVkMSAxMDA2NDQNCj4gPiAtLS0gYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvdGlt ZXN0YW1waW5nLnJzdA0KPiA+ICsrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy90aW1lc3Rh bXBpbmcucnN0DQo+ID4gQEAgLTYzNSw4ICs2MzUsOCBAQCBpbiBnZW5lcmljIGNvZGU6IGEgQlBG IGNsYXNzaWZpZXINCj4gPiAoYGBwdHBfY2xhc3NpZnlfcmF3YGApIGlzIHVzZWQgdG8gaWRlbnRp ZnkgIFBUUCBldmVudCBtZXNzYWdlcyAoYW55DQo+ID4gb3RoZXIgcGFja2V0cywgaW5jbHVkaW5n IFBUUCBnZW5lcmFsIG1lc3NhZ2VzLCBhcmUgbm90ICB0aW1lc3RhbXBlZCksIGFuZA0KPiBwcm92 aWRlcyB0d28gaG9va3MgdG8gZHJpdmVyczoNCj4gPg0KPiA+IC0tIGBgLnBvcnRfdHh0c3RhbXAo KWBgOiBUaGUgZHJpdmVyIGlzIHBhc3NlZCBhIGNsb25lIG9mIHRoZQ0KPiA+IHRpbWVzdGFtcGFi bGUgc2tiDQo+ID4gLSAgdG8gYmUgdHJhbnNtaXR0ZWQsIGJlZm9yZSBhY3R1YWxseSB0cmFuc21p dHRpbmcgaXQuIFR5cGljYWxseSwgYQ0KPiA+IHN3aXRjaCB3aWxsDQo+ID4gKy0gYGAucG9ydF90 eHRzdGFtcCgpYGA6IEEgY2xvbmUgb2YgdGhlIHRpbWVzdGFtcGFibGUgc2tiIHRvIGJlDQo+ID4g K3RyYW5zbWl0dGVkDQo+ID4gKyAgaXMgbmVlZGVkLCBiZWZvcmUgYWN0dWFsbHkgdHJhbnNtaXR0 aW5nIGl0LiBUeXBpY2FsbHksIGEgc3dpdGNoDQo+ID4gK3dpbGwNCj4gPiAgICBoYXZlIGEgUFRQ IFRYIHRpbWVzdGFtcCByZWdpc3RlciAob3Igc29tZXRpbWVzIGEgRklGTykgd2hlcmUgdGhlDQo+ IHRpbWVzdGFtcA0KPiA+ICAgIGJlY29tZXMgYXZhaWxhYmxlLiBUaGVyZSBtYXkgYmUgYW4gSVJR IHRoYXQgaXMgcmFpc2VkIHVwb24gdGhpcw0KPiB0aW1lc3RhbXAncw0KPiA+ICAgIGF2YWlsYWJp bGl0eSwgb3IgdGhlIGRyaXZlciBtaWdodCBoYXZlIHRvIHBvbGwgYWZ0ZXIgaW52b2tpbmcgQEAN Cj4gPiAtNjQ1LDYgKzY0NSw5IEBAIHRpbWVzdGFtcGVkKSwgYW5kIHByb3ZpZGVzIHR3byBob29r cyB0byBkcml2ZXJzOg0KPiA+ICAgIGxhdGVyIHVzZSAod2hlbiB0aGUgdGltZXN0YW1wIGJlY29t ZXMgYXZhaWxhYmxlKS4gRWFjaCBza2IgaXMgYW5ub3RhdGVkDQo+IHdpdGgNCj4gPiAgICBhIHBv aW50ZXIgdG8gaXRzIGNsb25lLCBpbiBgYERTQV9TS0JfQ0Ioc2tiKS0+Y2xvbmVgYCwgdG8gZWFz ZSB0aGUgZHJpdmVyJ3MNCj4gPiAgICBqb2Igb2Yga2VlcGluZyB0cmFjayBvZiB3aGljaCBjbG9u ZSBiZWxvbmdzIHRvIHdoaWNoIHNrYi4NCj4gPiArICBCdXQgb25lLXN0ZXAgdGltZXN0YW1waW5n IHJlcXVlc3QgaXMgaGFuZGxlZCBkaWZmZXJlbnRseSB3aXRoIGFib3ZlDQo+ID4gKyB0d28tc3Rl cCAgdGltZXN0YW1waW5nLiBUaGUgc2tiIGNsb25lIGlzIG5vIGxvbmdlciBuZWVkZWQgc2luY2UN Cj4gPiArIGhhcmR3YXJlIHdpbGwgaW5zZXJ0ICBUWCB0aW1lIGluZm9ybWF0aW9uIG9uIHBhY2tl dCBkdXJpbmcgZWdyZXNzLg0KPiANCj4gQm9udXMgcG9pbnRzIGZvciB1cGRhdGluZyB0aGUgZG9j dW1lbnRhdGlvbiwgYnV0IEkgZG9uJ3QgcXVpdGUgbGlrZSB0aGUgZW5kDQo+IHJlc3VsdC4gUGxl YXNlIGZlZWwgZnJlZSB0byByZXN0cnVjdHVyZSBtb3JlLCBpbiBvcmRlciB0byBoYXZlIGEgY2xl YXJlciBhbmQgbW9yZQ0KPiBjb2hlcmVudCBleHBsYW5hdGlvbi4NCj4gDQo+IEFsc28sIHRoaXMg cGFyYWdyYXBoIGZyb20gcmlnaHQgYWJvdmUgaXMgbm8gbG9uZ2VyIHRydWU6DQo+IA0KPiAJSW4g Y29kZSwgRFNBIHByb3ZpZGVzIGZvciBtb3N0IG9mIHRoZSBpbmZyYXN0cnVjdHVyZSBmb3IgdGlt ZXN0YW1waW5nDQo+IGFscmVhZHksDQo+IAlpbiBnZW5lcmljIGNvZGU6IGEgQlBGIGNsYXNzaWZp ZXIgKGBgcHRwX2NsYXNzaWZ5X3Jhd2BgKSBpcyB1c2VkIHRvIGlkZW50aWZ5DQo+IAlQVFAgZXZl bnQgbWVzc2FnZXMgKGFueSBvdGhlciBwYWNrZXRzLCBpbmNsdWRpbmcgUFRQIGdlbmVyYWwgbWVz c2FnZXMsDQo+IGFyZSBub3QNCj4gCXRpbWVzdGFtcGVkKSwgYW5kIHByb3ZpZGVzIHR3byBob29r cyB0byBkcml2ZXJzOg0KPiANCj4gSXQncyBub3RoaW5nIGxpa2UgdGhhdCBhbnltb3JlLiBJdCdz IG1vcmUgb2YgYSBwYXNzdGhyb3VnaCBub3cgd2l0aCB5b3VyDQo+IGNoYW5nZXMsIHRoZSBCUEYg Y2xhc3NpZmllciBpcyBub3QgcnVuIGJ5IHRoZSBEU0EgY29yZSBidXQgb3B0aW9uYWxseSBieQ0K PiBpbmRpdmlkdWFsIHRhZ2dlcnMuDQo+IA0KPiBIZXJlIGlzIG15IGF0dGVtcHQgb2YgcmV3cml0 aW5nIHRoaXMgZG9jdW1lbnRhdGlvbiBwYXJhZ3JhcGgsIGZlZWwgZnJlZSB0bw0KPiB0YWtlIHdo aWNoIHBhcnRzIHlvdSBjb25zaWRlciByZWxldmFudDoNCj4gDQo+IC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tW2N1dCBoZXJlXS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+IA0K PiBJbiB0aGUgZ2VuZXJpYyBsYXllciwgRFNBIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgaW5mcmFz dHJ1Y3R1cmUgZm9yIFBUUA0KPiB0aW1lc3RhbXBpbmc6DQo+IA0KPiAtIGBgLnBvcnRfdHh0c3Rh bXAoKWBgOiBhIGhvb2sgY2FsbGVkIHByaW9yIHRvIHRoZSB0cmFuc21pc3Npb24gb2YNCj4gICBw YWNrZXRzIHdpdGggYSBoYXJkd2FyZSBUWCB0aW1lc3RhbXBpbmcgcmVxdWVzdCBmcm9tIHVzZXIg c3BhY2UuDQo+ICAgVGhpcyBpcyByZXF1aXJlZCBmb3IgdHdvLXN0ZXAgdGltZXN0YW1waW5nLCBz aW5jZSB0aGUgaGFyZHdhcmUNCj4gICB0aW1lc3RhbXAgYmVjb21lcyBhdmFpbGFibGUgYWZ0ZXIg dGhlIGFjdHVhbCBNQUMgdHJhbnNtaXNzaW9uLCBzbyB0aGUNCj4gICBkcml2ZXIgbXVzdCBiZSBw cmVwYXJlZCB0byBjb3JyZWxhdGUgdGhlIHRpbWVzdGFtcCB3aXRoIHRoZSBvcmlnaW5hbA0KPiAg IHBhY2tldCBzbyB0aGF0IGl0IGNhbiByZS1lbnF1ZXVlIHRoZSBwYWNrZXQgYmFjayBpbnRvIHRo ZSBzb2NrZXQncw0KPiAgIGVycm9yIHF1ZXVlLiBUbyBzYXZlIHRoZSBwYWNrZXQgZm9yIHdoZW4g dGhlIHRpbWVzdGFtcCBiZWNvbWVzDQo+ICAgYXZhaWxhYmxlLCB0aGUgZHJpdmVyIGNhbiBjYWxs IGBgc2tiX2Nsb25lX3NrYGAgYW5kIHNhdmUgdGhlIHJlc3VsdGluZw0KPiAgIGNsb25lIGluIGBg RFNBX1NLQl9DQihza2IpLT5jbG9uZWBgLiBUeXBpY2FsbHksIGEgc3dpdGNoIHdpbGwgaGF2ZSBh DQo+ICAgUFRQIFRYIHRpbWVzdGFtcCByZWdpc3RlciAob3Igc29tZXRpbWVzIGEgRklGTykgd2hl cmUgdGhlIHRpbWVzdGFtcA0KPiAgIGJlY29tZXMgYXZhaWxhYmxlLiBJbiBjYXNlIG9mIGEgRklG TywgdGhlIGhhcmR3YXJlIG1pZ2h0IHN0b3JlDQo+ICAga2V5LXZhbHVlIHBhaXJzIG9mIFBUUCBz ZXF1ZW5jZSBJRC9tZXNzYWdlIHR5cGUvZG9tYWluIG51bWJlciBhbmQgdGhlDQo+ICAgYWN0dWFs IHRpbWVzdGFtcC4gVG8gcGVyZm9ybSB0aGUgY29ycmVsYXRpb24gY29ycmVjdGx5IGJldHdlZW4g dGhlDQo+ICAgcGFja2V0cyBpbiBhIHF1ZXVlIHdhaXRpbmcgZm9yIHRpbWVzdGFtcGluZyBhbmQg dGhlIGFjdHVhbCB0aW1lc3RhbXBzLA0KPiAgIGRyaXZlcnMgY2FuIHVzZSBhIEJQRiBjbGFzc2lm aWVyIChgYHB0cF9jbGFzc2lmeV9yYXdgYCkgdG8gaWRlbnRpZnkNCj4gICB0aGUgUFRQIHRyYW5z cG9ydCB0eXBlLCBhbmQgYGBwdHBfcGFyc2VfaGVhZGVyYGAgdG8gaW50ZXJwcmV0IHRoZSBQVFAN Cj4gICBoZWFkZXIgZmllbGRzLiBUaGVyZSBtYXkgYmUgYW4gSVJRIHRoYXQgaXMgcmFpc2VkIHVw b24gdGhpcw0KPiAgIHRpbWVzdGFtcCdzIGF2YWlsYWJpbGl0eSwgb3IgdGhlIGRyaXZlciBtaWdo dCBoYXZlIHRvIHBvbGwgYWZ0ZXINCj4gICBpbnZva2luZyBgYGRldl9xdWV1ZV94bWl0KClgYCB0 b3dhcmRzIHRoZSBob3N0IGludGVyZmFjZS4NCj4gICBPbmUtc3RlcCBUWCB0aW1lc3RhbXBpbmcg ZG8gbm90IHJlcXVpcmUgcGFja2V0IGNsb25pbmcsIHNpbmNlIHRoZXJlIGlzDQo+ICAgbm8gZm9s bG93LXVwIG1lc3NhZ2UgcmVxdWlyZWQgYnkgdGhlIFBUUCBwcm90b2NvbCAoYmVjYXVzZSB0aGUN Cj4gICBUWCB0aW1lc3RhbXAgaXMgZW1iZWRkZWQgaW50byB0aGUgcGFja2V0IGJ5IHRoZSBNQUMp LCBhbmQgdGhlcmVmb3JlDQo+ICAgdXNlciBzcGFjZSBkb2VzIG5vdCBleHBlY3QgdGhlIHBhY2tl dCBhbm5vdGF0ZWQgd2l0aCB0aGUgVFggdGltZXN0YW1wDQo+ICAgdG8gYmUgcmUtZW5xdWV1ZWQg aW50byBpdHMgc29ja2V0J3MgZXJyb3IgcXVldWUuDQo+IA0KPiAtIGBgLnBvcnRfcnh0c3RhbXAo KWBgOiBPbiBSWCwgdGhlIEJQRiBjbGFzc2lmaWVyIGlzIHJ1biBieSBEU0EgdG8NCj4gICBpZGVu dGlmeSBQVFAgZXZlbnQgbWVzc2FnZXMgKGFueSBvdGhlciBwYWNrZXRzLCBpbmNsdWRpbmcgUFRQ IGdlbmVyYWwNCj4gICBtZXNzYWdlcywgYXJlIG5vdCB0aW1lc3RhbXBlZCkuIFRoZSBvcmlnaW5h bCAoYW5kIG9ubHkpIHRpbWVzdGFtcGFibGUNCj4gICBza2IgaXMgcHJvdmlkZWQgdG8gdGhlIGRy aXZlciwgZm9yIGl0IHRvIGFubm90YXRlIGl0IHdpdGggYSB0aW1lc3RhbXAsDQo+ICAgaWYgdGhh dCBpcyBpbW1lZGlhdGVseSBhdmFpbGFibGUsIG9yIGRlZmVyIHRvIGxhdGVyLiBPbiByZWNlcHRp b24sDQo+ICAgdGltZXN0YW1wcyBtaWdodCBlaXRoZXIgYmUgYXZhaWxhYmxlIGluLWJhbmQgKHRo cm91Z2ggbWV0YWRhdGEgaW4gdGhlDQo+ICAgRFNBIGhlYWRlciwgb3IgYXR0YWNoZWQgaW4gb3Ro ZXIgd2F5cyB0byB0aGUgcGFja2V0KSwgb3Igb3V0LW9mLWJhbmQNCj4gICAodGhyb3VnaCBhbm90 aGVyIFJYIHRpbWVzdGFtcGluZyBGSUZPKS4gRGVmZXJyYWwgb24gUlggaXMgdHlwaWNhbGx5DQo+ ICAgbmVjZXNzYXJ5IHdoZW4gcmV0cmlldmluZyB0aGUgdGltZXN0YW1wIG5lZWRzIGEgc2xlZXBh YmxlIGNvbnRleHQuIEluDQo+ICAgdGhhdCBjYXNlLCBpdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkg b2YgdGhlIERTQSBkcml2ZXIgdG8gY2FsbA0KPiAgIGBgbmV0aWZfcnhfbmkoKWBgIG9uIHRoZSBm cmVzaGx5IHRpbWVzdGFtcGVkIHNrYi4NCj4gDQo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tW2N1dCBoZXJlXS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+IA0KDQpUaGF0J3Mg cmVhbGx5IGNvbnNpZGVyYXRlIGFuZCBhY2N1cmFjeSBkZXNjcmlwdGlvbi4gSSB3aWxsIHVwZGF0 ZSB3aXRoIHRoaXMuIChXaWxsIGFkanVzdCBpZiB3ZSBjYW4gZHJvcCBkc2Ffc2tiX2NiIGluIGRz YSBjb3JlLikNClRoYW5rcy4NCg0KPiA+DQo+ID4gIC0gYGAucG9ydF9yeHRzdGFtcCgpYGA6IFRo ZSBvcmlnaW5hbCAoYW5kIG9ubHkpIHRpbWVzdGFtcGFibGUgc2tiIGlzIHByb3ZpZGVkDQo+ID4g ICAgdG8gdGhlIGRyaXZlciwgZm9yIGl0IHRvIGFubm90YXRlIGl0IHdpdGggYSB0aW1lc3RhbXAs IGlmIHRoYXQgaXMNCj4gPiBpbW1lZGlhdGVseSBkaWZmIC0tZ2l0DQo+ID4gYS9kcml2ZXJzL25l dC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWtfaHd0c3RhbXAuYw0KPiA+IGIvZHJpdmVycy9uZXQv ZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrX2h3dHN0YW1wLmMNCj4gPiBpbmRleCA2OWRkOWEyZThi YjYuLjJmZjRiN2MwOGI3MiAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL25ldC9kc2EvaGlyc2No bWFubi9oZWxsY3JlZWtfaHd0c3RhbXAuYw0KPiA+ICsrKyBiL2RyaXZlcnMvbmV0L2RzYS9oaXJz Y2htYW5uL2hlbGxjcmVla19od3RzdGFtcC5jDQo+ID4gQEAgLTM3NCwzMSArMzc0LDM5IEBAIGxv bmcgaGVsbGNyZWVrX2h3dHN0YW1wX3dvcmsoc3RydWN0DQo+ID4gcHRwX2Nsb2NrX2luZm8gKnB0 cCkgIH0NCj4gPg0KPiA+ICBib29sIGhlbGxjcmVla19wb3J0X3R4dHN0YW1wKHN0cnVjdCBkc2Ff c3dpdGNoICpkcywgaW50IHBvcnQsDQo+ID4gLQkJCSAgICAgc3RydWN0IHNrX2J1ZmYgKmNsb25l LCB1bnNpZ25lZCBpbnQgdHlwZSkNCj4gPiArCQkJICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBz dHJ1Y3Qgc2tfYnVmZiAqKmNsb25lKQ0KPiA+ICB7DQo+ID4gIAlzdHJ1Y3QgaGVsbGNyZWVrICpo ZWxsY3JlZWsgPSBkcy0+cHJpdjsNCj4gPiAgCXN0cnVjdCBoZWxsY3JlZWtfcG9ydF9od3RzdGFt cCAqcHM7DQo+ID4gIAlzdHJ1Y3QgcHRwX2hlYWRlciAqaGRyOw0KPiA+ICsJdW5zaWduZWQgaW50 IHR5cGU7DQo+ID4NCj4gPiAgCXBzID0gJmhlbGxjcmVlay0+cG9ydHNbcG9ydF0ucG9ydF9od3Rz dGFtcDsNCj4gPg0KPiA+IC0JLyogQ2hlY2sgaWYgdGhlIGRyaXZlciBpcyBleHBlY3RlZCB0byBk byBIVyB0aW1lc3RhbXBpbmcgKi8NCj4gPiAtCWlmICghKHNrYl9zaGluZm8oY2xvbmUpLT50eF9m bGFncyAmIFNLQlRYX0hXX1RTVEFNUCkpDQo+ID4gKwl0eXBlID0gcHRwX2NsYXNzaWZ5X3Jhdyhz a2IpOw0KPiA+ICsJaWYgKHR5cGUgPT0gUFRQX0NMQVNTX05PTkUpDQo+ID4gIAkJcmV0dXJuIGZh bHNlOw0KPiA+DQo+ID4gIAkvKiBNYWtlIHN1cmUgdGhlIG1lc3NhZ2UgaXMgYSBQVFAgbWVzc2Fn ZSB0aGF0IG5lZWRzIHRvIGJlDQo+IHRpbWVzdGFtcGVkDQo+ID4gIAkgKiBhbmQgdGhlIGludGVy YWN0aW9uIHdpdGggdGhlIEhXIHRpbWVzdGFtcGluZyBpcyBlbmFibGVkLiBJZiBub3QsIHN0b3AN Cj4gPiAgCSAqIGhlcmUNCj4gPiAgCSAqLw0KPiA+IC0JaGRyID0gaGVsbGNyZWVrX3Nob3VsZF90 c3RhbXAoaGVsbGNyZWVrLCBwb3J0LCBjbG9uZSwgdHlwZSk7DQo+ID4gKwloZHIgPSBoZWxsY3Jl ZWtfc2hvdWxkX3RzdGFtcChoZWxsY3JlZWssIHBvcnQsIHNrYiwgdHlwZSk7DQo+ID4gIAlpZiAo IWhkcikNCj4gPiAgCQlyZXR1cm4gZmFsc2U7DQo+ID4NCj4gPiArCSpjbG9uZSA9IHNrYl9jbG9u ZV9zayhza2IpOw0KPiA+ICsJaWYgKCEoKmNsb25lKSkNCj4gPiArCQlyZXR1cm4gZmFsc2U7DQo+ ID4gKw0KPiA+ICAJaWYgKHRlc3RfYW5kX3NldF9iaXRfbG9jayhIRUxMQ1JFRUtfSFdUU1RBTVBf VFhfSU5fUFJPR1JFU1MsDQo+ID4gLQkJCQkgICZwcy0+c3RhdGUpKQ0KPiA+ICsJCQkJICAmcHMt PnN0YXRlKSkgew0KPiA+ICsJCWtmcmVlX3NrYigqY2xvbmUpOw0KPiA+ICsJCSpjbG9uZSA9IE5V TEw7DQo+ID4gIAkJcmV0dXJuIGZhbHNlOw0KPiA+ICsJfQ0KPiA+DQo+ID4gLQlwcy0+dHhfc2ti ID0gY2xvbmU7DQo+ID4gKwlwcy0+dHhfc2tiID0gKmNsb25lOw0KPiA+DQo+ID4gIAkvKiBzdG9y ZSB0aGUgbnVtYmVyIG9mIHRpY2tzIG9jY3VycmVkIHNpbmNlIHN5c3RlbSBzdGFydC11cCB0aWxs IHRoaXMNCj4gPiAgCSAqIG1vbWVudA0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2Ev aGlyc2NobWFubi9oZWxsY3JlZWtfaHd0c3RhbXAuaA0KPiA+IGIvZHJpdmVycy9uZXQvZHNhL2hp cnNjaG1hbm4vaGVsbGNyZWVrX2h3dHN0YW1wLmgNCj4gPiBpbmRleCBjMDc0NWZmYTFlYmIuLjU4 Y2M5NjY0MjA3NiAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9o ZWxsY3JlZWtfaHd0c3RhbXAuaA0KPiA+ICsrKyBiL2RyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5u L2hlbGxjcmVla19od3RzdGFtcC5oDQo+ID4gQEAgLTQ1LDcgKzQ1LDcgQEAgaW50IGhlbGxjcmVl a19wb3J0X2h3dHN0YW1wX2dldChzdHJ1Y3QgZHNhX3N3aXRjaA0KPiA+ICpkcywgaW50IHBvcnQs ICBib29sIGhlbGxjcmVla19wb3J0X3J4dHN0YW1wKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50 IHBvcnQsDQo+ID4gIAkJCSAgICAgc3RydWN0IHNrX2J1ZmYgKmNsb25lLCB1bnNpZ25lZCBpbnQg dHlwZSk7ICBib29sDQo+ID4gaGVsbGNyZWVrX3BvcnRfdHh0c3RhbXAoc3RydWN0IGRzYV9zd2l0 Y2ggKmRzLCBpbnQgcG9ydCwNCj4gPiAtCQkJICAgICBzdHJ1Y3Qgc2tfYnVmZiAqY2xvbmUsIHVu c2lnbmVkIGludCB0eXBlKTsNCj4gPiArCQkJICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1 Y3Qgc2tfYnVmZiAqKmNsb25lKTsNCj4gPg0KPiA+ICBpbnQgaGVsbGNyZWVrX2dldF90c19pbmZv KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsDQo+ID4gIAkJCSAgc3RydWN0IGV0aHRv b2xfdHNfaW5mbyAqaW5mbyk7DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9tdjg4 ZTZ4eHgvaHd0c3RhbXAuYw0KPiA+IGIvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFt cC5jDQo+ID4gaW5kZXggMDk0ZDE3YTFkMDM3Li4yODBhOTU5NjI4NjEgMTAwNjQ0DQo+ID4gLS0t IGEvZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5jDQo+ID4gKysrIGIvZHJpdmVy cy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5jDQo+ID4gQEAgLTQ2OSwyNCArNDY5LDMzIEBA IGxvbmcgbXY4OGU2eHh4X2h3dHN0YW1wX3dvcmsoc3RydWN0DQo+ID4gcHRwX2Nsb2NrX2luZm8g KnB0cCkgIH0NCj4gPg0KPiA+ICBib29sIG12ODhlNnh4eF9wb3J0X3R4dHN0YW1wKHN0cnVjdCBk c2Ffc3dpdGNoICpkcywgaW50IHBvcnQsDQo+ID4gLQkJCSAgICAgc3RydWN0IHNrX2J1ZmYgKmNs b25lLCB1bnNpZ25lZCBpbnQgdHlwZSkNCj4gPiArCQkJICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2ti LCBzdHJ1Y3Qgc2tfYnVmZiAqKmNsb25lKQ0KPiA+ICB7DQo+ID4gIAlzdHJ1Y3QgbXY4OGU2eHh4 X2NoaXAgKmNoaXAgPSBkcy0+cHJpdjsNCj4gPiAgCXN0cnVjdCBtdjg4ZTZ4eHhfcG9ydF9od3Rz dGFtcCAqcHMgPSAmY2hpcC0+cG9ydF9od3RzdGFtcFtwb3J0XTsNCj4gPiAgCXN0cnVjdCBwdHBf aGVhZGVyICpoZHI7DQo+ID4gKwl1bnNpZ25lZCBpbnQgdHlwZTsNCj4gPg0KPiA+IC0JaWYgKCEo c2tiX3NoaW5mbyhjbG9uZSktPnR4X2ZsYWdzICYgU0tCVFhfSFdfVFNUQU1QKSkNCj4gPiAtCQly ZXR1cm4gZmFsc2U7DQo+ID4gKwl0eXBlID0gcHRwX2NsYXNzaWZ5X3Jhdyhza2IpOw0KPiA+ICsJ aWYgKHR5cGUgPT0gUFRQX0NMQVNTX05PTkUpDQo+ID4gKwkJcmV0dXJuIGZhbHNlDQo+ID4NCj4g PiAtCWhkciA9IG12ODhlNnh4eF9zaG91bGRfdHN0YW1wKGNoaXAsIHBvcnQsIGNsb25lLCB0eXBl KTsNCj4gPiArCWhkciA9IG12ODhlNnh4eF9zaG91bGRfdHN0YW1wKGNoaXAsIHBvcnQsIHNrYiwg dHlwZSk7DQo+ID4gIAlpZiAoIWhkcikNCj4gPiAgCQlyZXR1cm4gZmFsc2U7DQo+ID4NCj4gPiAr CSpjbG9uZSA9IHNrYl9jbG9uZV9zayhza2IpOw0KPiA+ICsJaWYgKCEoKmNsb25lKSkNCj4gPiAr CQlyZXR1cm4gZmFsc2U7DQo+ID4gKw0KPiA+ICAJaWYgKHRlc3RfYW5kX3NldF9iaXRfbG9jayhN Vjg4RTZYWFhfSFdUU1RBTVBfVFhfSU5fUFJPR1JFU1MsDQo+ID4gLQkJCQkgICZwcy0+c3RhdGUp KQ0KPiA+ICsJCQkJICAmcHMtPnN0YXRlKSkgew0KPiA+ICsJCWtmcmVlX3NrYigqY2xvbmUpOw0K PiA+ICsJCSpjbG9uZSA9IE5VTEw7DQo+ID4gIAkJcmV0dXJuIGZhbHNlOw0KPiA+ICsJfQ0KPiA+ DQo+ID4gLQlwcy0+dHhfc2tiID0gY2xvbmU7DQo+ID4gKwlwcy0+dHhfc2tiID0gKmNsb25lOw0K PiA+ICAJcHMtPnR4X3RzdGFtcF9zdGFydCA9IGppZmZpZXM7DQo+ID4gIAlwcy0+dHhfc2VxX2lk ID0gYmUxNl90b19jcHUoaGRyLT5zZXF1ZW5jZV9pZCk7DQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9uZXQvZHNhL212ODhlNnh4eC9od3RzdGFtcC5oDQo+ID4gYi9kcml2ZXJzL25ldC9k c2EvbXY4OGU2eHh4L2h3dHN0YW1wLmgNCj4gPiBpbmRleCA5ZGE5ZjE5N2JhMDIuLmRhMmIyNTMz MzRkMCAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1w LmgNCj4gPiArKysgYi9kcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4L2h3dHN0YW1wLmgNCj4gPiBA QCAtMTE4LDcgKzExOCw3IEBAIGludCBtdjg4ZTZ4eHhfcG9ydF9od3RzdGFtcF9nZXQoc3RydWN0 DQo+IGRzYV9zd2l0Y2gNCj4gPiAqZHMsIGludCBwb3J0LCAgYm9vbCBtdjg4ZTZ4eHhfcG9ydF9y eHRzdGFtcChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludA0KPiBwb3J0LA0KPiA+ICAJCQkgICAg IHN0cnVjdCBza19idWZmICpjbG9uZSwgdW5zaWduZWQgaW50IHR5cGUpOyAgYm9vbA0KPiA+IG12 ODhlNnh4eF9wb3J0X3R4dHN0YW1wKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsDQo+ ID4gLQkJCSAgICAgc3RydWN0IHNrX2J1ZmYgKmNsb25lLCB1bnNpZ25lZCBpbnQgdHlwZSk7DQo+ ID4gKwkJCSAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNrX2J1ZmYgKipjbG9uZSk7 DQo+ID4NCj4gPiAgaW50IG12ODhlNnh4eF9nZXRfdHNfaW5mbyhzdHJ1Y3QgZHNhX3N3aXRjaCAq ZHMsIGludCBwb3J0LA0KPiA+ICAJCQkgIHN0cnVjdCBldGh0b29sX3RzX2luZm8gKmluZm8pOw0K PiA+IEBAIC0xNTIsOCArMTUyLDggQEAgc3RhdGljIGlubGluZSBib29sIG12ODhlNnh4eF9wb3J0 X3J4dHN0YW1wKHN0cnVjdA0KPiA+IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgIH0NCj4gPg0K PiA+ICBzdGF0aWMgaW5saW5lIGJvb2wgbXY4OGU2eHh4X3BvcnRfdHh0c3RhbXAoc3RydWN0IGRz YV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwNCj4gPiAtCQkJCQkgICBzdHJ1Y3Qgc2tfYnVmZiAqY2xv bmUsDQo+ID4gLQkJCQkJICAgdW5zaWduZWQgaW50IHR5cGUpDQo+ID4gKwkJCQkJICAgc3RydWN0 IHNrX2J1ZmYgKnNrYiwNCj4gPiArCQkJCQkgICBzdHJ1Y3Qgc2tfYnVmZiAqKmNsb25lKQ0KPiA+ ICB7DQo+ID4gIAlyZXR1cm4gZmFsc2U7DQo+ID4gIH0NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jDQo+ID4gYi9kcml2ZXJzL25ldC9kc2Evb2NlbG90L2Zl bGl4LmMgaW5kZXggNmI1NDQyYmUwMjMwLi5jZGVjMmY1ZTI3MWMNCj4gPiAxMDA2NDQNCj4gPiAt LS0gYS9kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmMNCj4gPiArKysgYi9kcml2ZXJzL25l dC9kc2Evb2NlbG90L2ZlbGl4LmMNCj4gPiBAQCAtMTM5NiwxNCArMTM5NiwxNyBAQCBzdGF0aWMg Ym9vbCBmZWxpeF9yeHRzdGFtcChzdHJ1Y3QgZHNhX3N3aXRjaA0KPiA+ICpkcywgaW50IHBvcnQs ICB9DQo+ID4NCj4gPiAgc3RhdGljIGJvb2wgZmVsaXhfdHh0c3RhbXAoc3RydWN0IGRzYV9zd2l0 Y2ggKmRzLCBpbnQgcG9ydCwNCj4gPiAtCQkJICAgc3RydWN0IHNrX2J1ZmYgKmNsb25lLCB1bnNp Z25lZCBpbnQgdHlwZSkNCj4gPiArCQkJICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNr X2J1ZmYgKipjbG9uZSkNCj4gPiAgew0KPiA+ICAJc3RydWN0IG9jZWxvdCAqb2NlbG90ID0gZHMt PnByaXY7DQo+ID4gIAlzdHJ1Y3Qgb2NlbG90X3BvcnQgKm9jZWxvdF9wb3J0ID0gb2NlbG90LT5w b3J0c1twb3J0XTsNCj4gPg0KPiA+IC0JaWYgKG9jZWxvdC0+cHRwICYmIChza2Jfc2hpbmZvKGNs b25lKS0+dHhfZmxhZ3MgJiBTS0JUWF9IV19UU1RBTVApDQo+ICYmDQo+ID4gLQkgICAgb2NlbG90 X3BvcnQtPnB0cF9jbWQgPT0gSUZIX1JFV19PUF9UV09fU1RFUF9QVFApIHsNCj4gPiAtCQlvY2Vs b3RfcG9ydF9hZGRfdHh0c3RhbXBfc2tiKG9jZWxvdCwgcG9ydCwgY2xvbmUpOw0KPiA+ICsJaWYg KG9jZWxvdC0+cHRwICYmIG9jZWxvdF9wb3J0LT5wdHBfY21kID09DQo+IElGSF9SRVdfT1BfVFdP X1NURVBfUFRQKSB7DQo+ID4gKwkJKmNsb25lID0gc2tiX2Nsb25lX3NrKHNrYik7DQo+ID4gKwkJ aWYgKCEoKmNsb25lKSkNCj4gPiArCQkJcmV0dXJuIGZhbHNlOw0KPiA+ICsNCj4gPiArCQlvY2Vs b3RfcG9ydF9hZGRfdHh0c3RhbXBfc2tiKG9jZWxvdCwgcG9ydCwgKmNsb25lKTsNCj4gPiAgCQly ZXR1cm4gdHJ1ZTsNCj4gPiAgCX0NCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9k c2Evc2phMTEwNS9zamExMTA1X3B0cC5jDQo+ID4gYi9kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9z amExMTA1X3B0cC5jDQo+ID4gaW5kZXggMWI5MDU3MGIyNTdiLi42YTFmODU0YThjMzMgMTAwNjQ0 DQo+ID4gLS0tIGEvZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9wdHAuYw0KPiA+ICsr KyBiL2RyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfcHRwLmMNCj4gPiBAQCAtNDM2LDcg KzQzNiw3IEBAIGJvb2wgc2phMTEwNV9wb3J0X3J4dHN0YW1wKHN0cnVjdCBkc2Ffc3dpdGNoICpk cywNCj4gaW50IHBvcnQsDQo+ID4gICAqIGNhbGxiYWNrLCB3aGVyZSB3ZSB3aWxsIHRpbWVzdGFt cCBpdCBzeW5jaHJvbm91c2x5Lg0KPiA+ICAgKi8NCj4gPiAgYm9vbCBzamExMTA1X3BvcnRfdHh0 c3RhbXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwNCj4gPiAtCQkJICAgc3RydWN0 IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IHR5cGUpDQo+ID4gKwkJCSAgIHN0cnVjdCBza19i dWZmICpza2IsIHN0cnVjdCBza19idWZmICoqY2xvbmUpDQo+ID4gIHsNCj4gPiAgCXN0cnVjdCBz amExMTA1X3ByaXZhdGUgKnByaXYgPSBkcy0+cHJpdjsNCj4gPiAgCXN0cnVjdCBzamExMTA1X3Bv cnQgKnNwID0gJnByaXYtPnBvcnRzW3BvcnRdOyBAQCAtNDQ0LDYgKzQ0NCwxMCBAQA0KPiA+IGJv b2wgc2phMTEwNV9wb3J0X3R4dHN0YW1wKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQs DQo+ID4gIAlpZiAoIXNwLT5od3RzX3R4X2VuKQ0KPiA+ICAJCXJldHVybiBmYWxzZTsNCj4gPg0K PiA+ICsJKmNsb25lID0gc2tiX2Nsb25lX3NrKHNrYik7DQo+ID4gKwlpZiAoISgqY2xvbmUpKQ0K PiA+ICsJCXJldHVybiBmYWxzZTsNCj4gPiArDQo+ID4gIAlyZXR1cm4gdHJ1ZTsNCj4gPiAgfQ0K PiA+DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfcHRw LmgNCj4gPiBiL2RyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfcHRwLmgNCj4gPiBpbmRl eCAzZGFhMzNlOThlNzcuLmFiODBiNzMyMTljYiAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL25l dC9kc2Evc2phMTEwNS9zamExMTA1X3B0cC5oDQo+ID4gKysrIGIvZHJpdmVycy9uZXQvZHNhL3Nq YTExMDUvc2phMTEwNV9wdHAuaA0KPiA+IEBAIC0xMDUsNyArMTA1LDcgQEAgYm9vbCBzamExMTA1 X3BvcnRfcnh0c3RhbXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLA0KPiBpbnQgcG9ydCwNCj4gPiAg CQkJICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IHR5cGUpOw0KPiA+DQo+ID4g IGJvb2wgc2phMTEwNV9wb3J0X3R4dHN0YW1wKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBv cnQsDQo+ID4gLQkJCSAgIHN0cnVjdCBza19idWZmICpza2IsIHVuc2lnbmVkIGludCB0eXBlKTsN Cj4gPiArCQkJICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNrX2J1ZmYgKipjbG9uZSk7 DQo+ID4NCj4gPiAgaW50IHNqYTExMDVfaHd0c3RhbXBfZ2V0KHN0cnVjdCBkc2Ffc3dpdGNoICpk cywgaW50IHBvcnQsIHN0cnVjdA0KPiA+IGlmcmVxICppZnIpOw0KPiA+DQo+ID4gZGlmZiAtLWdp dCBhL2luY2x1ZGUvbmV0L2RzYS5oIGIvaW5jbHVkZS9uZXQvZHNhLmggaW5kZXgNCj4gPiAxMjU5 YjBmNDA2ODQuLmM4NDE1YzMyNGUyNyAxMDA2NDQNCj4gPiAtLS0gYS9pbmNsdWRlL25ldC9kc2Eu aA0KPiA+ICsrKyBiL2luY2x1ZGUvbmV0L2RzYS5oDQo+ID4gQEAgLTczNCw3ICs3MzQsNyBAQCBz dHJ1Y3QgZHNhX3N3aXRjaF9vcHMgew0KPiA+ICAJaW50CSgqcG9ydF9od3RzdGFtcF9zZXQpKHN0 cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsDQo+ID4gIAkJCQkgICAgIHN0cnVjdCBpZnJl cSAqaWZyKTsNCj4gPiAgCWJvb2wJKCpwb3J0X3R4dHN0YW1wKShzdHJ1Y3QgZHNhX3N3aXRjaCAq ZHMsIGludCBwb3J0LA0KPiA+IC0JCQkJIHN0cnVjdCBza19idWZmICpjbG9uZSwgdW5zaWduZWQg aW50IHR5cGUpOw0KPiA+ICsJCQkJIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBza19idWZm ICoqY2xvbmUpOw0KPiANCj4gSG93IGFib3V0IG5vdCBwYXNzaW5nICJjbG9uZSIgYmFjayB0byBE U0EgYXMgYW4gYXJndW1lbnQgYnkgcmVmZXJlbmNlLCBidXQNCj4gaW5zdGVhZCByZXF1aXJlIHRo ZSBkcml2ZXIgdG8gcG9wdWxhdGUgRFNBX1NLQl9DQihza2IpLT5jbG9uZSBpZiBpdCBuZWVkcyB0 byBkbw0KPiBzbz8NCj4gDQo+IEFsc28sIGhvdyBhYm91dCBjaGFuZ2luZyB0aGUgcmV0dXJuIHR5 cGUgdG8gdm9pZD8gUmV0dXJuaW5nIHRydWUgb3IgZmFsc2UNCj4gbWFrZXMgbm8gZGlmZmVyZW5j ZS4NCj4gDQo+ID4gIAlib29sCSgqcG9ydF9yeHRzdGFtcCkoc3RydWN0IGRzYV9zd2l0Y2ggKmRz LCBpbnQgcG9ydCwNCj4gPiAgCQkJCSBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQg dHlwZSk7DQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvbmV0L2RzYS9zbGF2ZS5jIGIvbmV0L2RzYS9z bGF2ZS5jIGluZGV4DQo+ID4gOTMwMGNiNjZlNTAwLi41Yjc0NmE5MDNlZjQgMTAwNjQ0DQo+ID4g LS0tIGEvbmV0L2RzYS9zbGF2ZS5jDQo+ID4gKysrIGIvbmV0L2RzYS9zbGF2ZS5jDQo+ID4gQEAg LTE5LDcgKzE5LDYgQEANCj4gPiAgI2luY2x1ZGUgPGxpbnV4L2lmX2JyaWRnZS5oPg0KPiA+ICAj aW5jbHVkZSA8bGludXgvaWZfaHNyLmg+DQo+ID4gICNpbmNsdWRlIDxsaW51eC9uZXRwb2xsLmg+ DQo+ID4gLSNpbmNsdWRlIDxsaW51eC9wdHBfY2xhc3NpZnkuaD4NCj4gPg0KPiA+ICAjaW5jbHVk ZSAiZHNhX3ByaXYuaCINCj4gPg0KPiA+IEBAIC01NTUsMjYgKzU1NCwxOSBAQCBzdGF0aWMgdm9p ZCBkc2Ffc2tiX3R4X3RpbWVzdGFtcChzdHJ1Y3QNCj4gZHNhX3NsYXZlX3ByaXYgKnAsDQo+ID4g IAkJCQkgc3RydWN0IHNrX2J1ZmYgKnNrYikNCj4gPiAgew0KPiA+ICAJc3RydWN0IGRzYV9zd2l0 Y2ggKmRzID0gcC0+ZHAtPmRzOw0KPiA+IC0Jc3RydWN0IHNrX2J1ZmYgKmNsb25lOw0KPiA+IC0J dW5zaWduZWQgaW50IHR5cGU7DQo+ID4gKwlzdHJ1Y3Qgc2tfYnVmZiAqY2xvbmUgPSBOVUxMOw0K PiA+DQo+ID4gLQl0eXBlID0gcHRwX2NsYXNzaWZ5X3Jhdyhza2IpOw0KPiA+IC0JaWYgKHR5cGUg PT0gUFRQX0NMQVNTX05PTkUpDQo+ID4gKwlpZiAoIShza2Jfc2hpbmZvKHNrYiktPnR4X2ZsYWdz ICYgU0tCVFhfSFdfVFNUQU1QKSkNCj4gPiAgCQlyZXR1cm47DQo+ID4NCj4gPiAgCWlmICghZHMt Pm9wcy0+cG9ydF90eHRzdGFtcCkNCj4gPiAgCQlyZXR1cm47DQo+ID4NCj4gPiAtCWNsb25lID0g c2tiX2Nsb25lX3NrKHNrYik7DQo+ID4gLQlpZiAoIWNsb25lKQ0KPiA+ICsJaWYgKCFkcy0+b3Bz LT5wb3J0X3R4dHN0YW1wKGRzLCBwLT5kcC0+aW5kZXgsIHNrYiwgJmNsb25lKSkNCj4gPiAgCQly ZXR1cm47DQo+ID4NCj4gPiAtCWlmIChkcy0+b3BzLT5wb3J0X3R4dHN0YW1wKGRzLCBwLT5kcC0+ aW5kZXgsIGNsb25lLCB0eXBlKSkgew0KPiA+ICsJaWYgKGNsb25lKQ0KPiA+ICAJCURTQV9TS0Jf Q0Ioc2tiKS0+Y2xvbmUgPSBjbG9uZTsNCj4gPiAtCQlyZXR1cm47DQo+ID4gLQl9DQo+ID4gLQ0K PiA+IC0Ja2ZyZWVfc2tiKGNsb25lKTsNCj4gPiAgfQ0KPiA+DQo+ID4gIG5ldGRldl90eF90IGRz YV9lbnF1ZXVlX3NrYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZQ0KPiA+ ICpkZXYpIEBAIC02MjgsOSArNjIwLDcgQEAgc3RhdGljIG5ldGRldl90eF90IGRzYV9zbGF2ZV94 bWl0KHN0cnVjdA0KPiA+IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldikNCj4g Pg0KPiA+ICAJRFNBX1NLQl9DQihza2IpLT5jbG9uZSA9IE5VTEw7DQo+ID4NCj4gPiAtCS8qIElk ZW50aWZ5IFBUUCBwcm90b2NvbCBwYWNrZXRzLCBjbG9uZSB0aGVtLCBhbmQgcGFzcyB0aGVtIHRv IHRoZQ0KPiA+IC0JICogc3dpdGNoIGRyaXZlcg0KPiA+IC0JICovDQo+ID4gKwkvKiBIYW5kbGUg dHggdGltZXN0YW1wIHJlcXVlc3QgaWYgaGFzICovDQo+IA0KPiBzL2lmIGhhcy9pZiBhbnkvDQoN ClNvcnJ5LiBXaWxsIGZpeC4NCg0KPiANCj4gPiAgCWRzYV9za2JfdHhfdGltZXN0YW1wKHAsIHNr Yik7DQo+ID4NCj4gPiAgCWlmIChkc2FfcmVhbGxvY19za2Ioc2tiLCBkZXYpKSB7DQo+ID4gLS0N Cj4gPiAyLjI1LjENCj4gPg0K