Received: by 2002:a05:7412:518d:b0:e2:908c:2ebd with SMTP id fn13csp403630rdb; Thu, 5 Oct 2023 09:07:36 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFJlZF10+YBZptLY/tIPfmMIsPORAawodHrcaMal82GuwLmscsXpDBChhTpkFEqZxGVYsml X-Received: by 2002:a17:90a:8a8c:b0:26d:5049:cf48 with SMTP id x12-20020a17090a8a8c00b0026d5049cf48mr5253795pjn.40.1696522056559; Thu, 05 Oct 2023 09:07:36 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1696522056; cv=pass; d=google.com; s=arc-20160816; b=zgHbpzI74S7V6vTbATvRVAGOTmv5levz08Zehh+1VJYCkm0N0l/nC2+xgz1OJc7LYU x2nPUyS7sF1msZqWZgV5w9Tpv6rLqdP4tGGYDEQb82M4terwD66JX3u+r+9WIl9tXMtr 3XiyQyXLsVm/i09LovS8+VskR83dKzVZKse51vpnH9w0XlZudcNjtvO183hstPAdsuSp EBbEnlj131OTn2dyO53looPtIPU73SafavvR2h8JdTRKCV2j7i/I3Y4463bUsudDRJ1D WY0yBtLsJ5tvXX8GY3Qn7C4SKwNHpzI3At9Qd1AMrYZm8iIgHrHrrGwFrcbtMfPGHkzq dgXQ== 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-id:content-language:accept-language:in-reply-to:references :message-id:date:thread-index:thread-topic:subject:cc:to:from :dkim-signature:dkim-signature; bh=3rLO5uTnK8e0OuiKZY71qRzDuvA8zpk3L96z8YGe3NQ=; fh=rAI92Hyp744fijWA/KOUDNeZfRzpPTiqEfaeeGYL9TQ=; b=ayMl0qZnfmqTzE0xGEoGwTj3EZY97iayzyhQaXLT1Sh1jiLHrApiTmZi4okuT3f1qq BkKIZJyn0JBRuaTFIQCjgLfEb00nfP1jrxpK3nv3qUJPp2Pss5Ftn2lDfvpgaKuTHIU7 W7WHRy6g2W3uFN/+PlpF+vx6BsscRH3xO24VZ8TuUc6TkBLsOzP7mIwTqNsZYjNeNQDH j16ISN+Gi6MS1vrZGutaeIYfqrR2tGI9xymWK0DOVUTLQW2kINBznq2K2yYs43/4OC2u 9dpGtoAPLajIWlBt0W/ZVp36E3zPzYgGHizdfnzmRrbvSavANfz/2l3i4my6kwWbtTS2 zoaA== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=ghJlfBcY; dkim=pass header.i=@microchiptechnology.onmicrosoft.com header.s=selector2-microchiptechnology-onmicrosoft-com header.b=X1gH6M2G; arc=pass (i=1 spf=pass spfdomain=microchip.com dkim=pass dkdomain=microchip.com dmarc=pass fromdomain=microchip.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=microchip.com Return-Path: Received: from agentk.vger.email (agentk.vger.email. [2620:137:e000::3:2]) by mx.google.com with ESMTPS id pc13-20020a17090b3b8d00b002774cdc919csi4065743pjb.176.2023.10.05.09.07.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Oct 2023 09:07:36 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) client-ip=2620:137:e000::3:2; Authentication-Results: mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=ghJlfBcY; dkim=pass header.i=@microchiptechnology.onmicrosoft.com header.s=selector2-microchiptechnology-onmicrosoft-com header.b=X1gH6M2G; arc=pass (i=1 spf=pass spfdomain=microchip.com dkim=pass dkdomain=microchip.com dmarc=pass fromdomain=microchip.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=microchip.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by agentk.vger.email (Postfix) with ESMTP id B941D805B9E3; Thu, 5 Oct 2023 09:07:11 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238269AbjJEQFh (ORCPT + 99 others); Thu, 5 Oct 2023 12:05:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58098 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237508AbjJEQEE (ORCPT ); Thu, 5 Oct 2023 12:04:04 -0400 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.154.123]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0091016847; Thu, 5 Oct 2023 07:11:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1696515120; x=1728051120; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=3rLO5uTnK8e0OuiKZY71qRzDuvA8zpk3L96z8YGe3NQ=; b=ghJlfBcYf98L3chiIKqWUffkv4FqEqRhhBe3wTS/HDYL7s8ERJ8gvksJ cIuhdM7S585Bl6H9Udq6sluFDL7GAvn8g6GqKA1pmV61QzVEmWr26ORLI IKgMKUukY6hKC86Quu0+lpFSmiZDPjEULdcDtyTe6vRdEuISLnX06utE3 DHfu4spZObp652sKsGK0+qyO6Zj6m7oRHF1fhDNVVNr3Z8ObvcxIPRSWl MADR+wJkxjNru7ZW5fC0P7ftuS480qbYpGzqHv9d3pucayaH2KBdEne2K gPoRFoM2bM/MROmV66s1booQSBYbaYJpvarPWWzwdfuiu9HUQxus5tGMr A==; X-CSE-ConnectionGUID: 3lDO1RFxQ4usIlUXQkID2Q== X-CSE-MsgGUID: ajq/zORqSDKAQW2JyBz/YQ== X-ThreatScanner-Verdict: Negative X-IronPort-AV: E=Sophos;i="6.03,202,1694761200"; d="scan'208";a="8257866" X-Amp-Result: SKIPPED(no attachment in message) Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa2.microchip.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 05 Oct 2023 03:59:17 -0700 Received: from chn-vm-ex01.mchp-main.com (10.10.85.143) by chn-vm-ex04.mchp-main.com (10.10.85.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Thu, 5 Oct 2023 03:58:40 -0700 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (10.10.215.89) by email.microchip.com (10.10.87.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21 via Frontend Transport; Thu, 5 Oct 2023 03:58:40 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QrGsl92r8tisFDBdQz7+4b4jeIRis4yV0hKWU0Fcm0R0StM79jDXtE3SbuYnXyvDyMRqJSsuaZp1wGJUpnzAoqFTPtGBo3NdSP0DxTFk5W5q1oHe/M84C4DdrGsiQcdn5GSpkKHyTSO1/eBaGwDK5/vCmU+9E1TDRhK8Qj6+jAOds5D/6MyaqBwSuxDBLiTChqdktlVBnhlCLVAFF1O7V82w+Rj6S6IpW5Hblw06hpeT8ciSFbF+vROe7dplUtSFiKfWvETMNYbfTuZel6iHGxi1HUN2caFs2s1vxQfyG3SLTq2vGaaCaYszFbJUMDRF+yjr2802Mckr5y4fsKCVnQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=3rLO5uTnK8e0OuiKZY71qRzDuvA8zpk3L96z8YGe3NQ=; b=A0KY9wkIhrppVsx25AAsfNGM1gBnR1vVgMSOwD4A4ELttuXoQSYXYknHkrFI6APEzvN11jbubYqj+O7g+XUcWv2eDy8TrTw4LMEe+BGUG5jon9KXSfLYwMWcw2uWp2yADiK/1rpL6mPOY/kCgUveijlYcF/K/uU1xVhCnkub9StTw5OHP6qJcHO2jlQuu6UW0nVIS5hWBHDPM6640W4Na8GpjrTbMZQtoF6G2FxS7ic6/9zbc5bnVV5rXUu3SY7nr4XJzg6gyk8XLdwzRiQTrdxXbaPGIoUmjgue5+QMV73NL8i0C/k02i/TCibAVwGFOTrcih2f7/k+7flsjEV13Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microchip.com; dmarc=pass action=none header.from=microchip.com; dkim=pass header.d=microchip.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microchiptechnology.onmicrosoft.com; s=selector2-microchiptechnology-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3rLO5uTnK8e0OuiKZY71qRzDuvA8zpk3L96z8YGe3NQ=; b=X1gH6M2G4ge8NfBvmuoDgywokVyLumPX19BnSFgHe6+FSingmy7/f67WvywN190dBOL01jPJgp1UHm7EfJ6glxMiQW5UHuZu9bLqKReTAJyaHJ7IT+FhyTXbbtwhE/ogtv+n3yCM+FD/5gGahHcQ1GOWQukXziL9G7mkNfqgZys= Received: from CY8PR11MB7688.namprd11.prod.outlook.com (2603:10b6:930:75::20) by IA0PR11MB8397.namprd11.prod.outlook.com (2603:10b6:208:48b::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Thu, 5 Oct 2023 10:58:37 +0000 Received: from CY8PR11MB7688.namprd11.prod.outlook.com ([fe80::77ff:74d2:4d5a:875]) by CY8PR11MB7688.namprd11.prod.outlook.com ([fe80::77ff:74d2:4d5a:875%6]) with mapi id 15.20.6838.024; Thu, 5 Oct 2023 10:58:37 +0000 From: To: , , CC: , , , , , , Subject: Re: [PATCH net-next] net: microchip: lan743x: improve throughput with rx timestamp config Thread-Topic: [PATCH net-next] net: microchip: lan743x: improve throughput with rx timestamp config Thread-Index: AQHZ8GQzSatw7vX1TECH+oIn8mKcFLAtxw4AgA1OkAA= Date: Thu, 5 Oct 2023 10:58:37 +0000 Message-ID: <6e596bc99585020112f02fb9d46081e129ceda8e.camel@microchip.com> References: <20230926155658.159184-1-vishvambarpanth.s@microchip.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=microchip.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CY8PR11MB7688:EE_|IA0PR11MB8397:EE_ x-ms-office365-filtering-correlation-id: 6374ae02-277f-45a0-a35b-08dbc59206bd x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: c1nAd0QbFjPQkNScoQiyO35AafL/ODUFmInzkCJ57p44tFjCme8ayy2j5WsTL+WWLyeHd1mhlAfQoC2vUFx/xhBq0M6RS0lXvt07ocoNaR3K8pyYu8KkAmIfchEILJEz3Dq4F+nb5McF/M60c7n6k0WjMT4xZN87WuuG5ImGzMKgFiLSgBZ9bWigWP/V7pFQNiaTmqGkcNwvh2mKMwCQiDIPDC238ZHWk4diqIu8zejaqk7DUmBt/N0mvg+879t8YyIypCTamRDsQO8BvpIW5wvsKO/gz6DdYq/8sNpJTx38V9vZstR4CpZfYO9msY5XKpI6TSlDxNYfIRZwRtDK4z2kSyWBlkYZMP5dy1u4SbReUuYDRrgPGTAxg9s1QH0Yc4ZEky4RoCqpNQe0C3+XyF5Njvbv76NYIXzHw2MCmZPzaxeJVpvThXBS7TvuvJ53QGj9NLfTIe9PuMfs0QkDksks/dTE0igzX+mUT6TioXR4pJLcIKisYdEI3fNNag1O3Hr8NWgCCCaqD9Ekrhs12kFzgMAdd//drWuJhjAqBZCuO/6rb13vMlAOVYBVsk9jxOmsgGEAj7oGyEsgHkKSGdsqufseUaif557IjZ6HJbE= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY8PR11MB7688.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(136003)(376002)(346002)(39860400002)(396003)(366004)(230922051799003)(451199024)(1800799009)(186009)(64100799003)(71200400001)(6512007)(6506007)(6486002)(53546011)(122000001)(86362001)(38100700002)(38070700005)(36756003)(26005)(2616005)(91956017)(83380400001)(64756008)(66556008)(76116006)(66946007)(66476007)(66446008)(54906003)(110136005)(41300700001)(2906002)(5660300002)(8936002)(8676002)(4326008)(316002)(966005)(478600001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?bzNxc3o4eHRPdEZqeTUvVWtoT0thSnBUUjBBZE5PeGl2RTJYOFJpYlUwSnVs?= =?utf-8?B?Mng5eXdyQitOY3I3cVJmVmlFaEt0M3BTdG5jLzIvQ2VXWmpnb3FGblNIc1Bp?= =?utf-8?B?c1ZzM2tJaCt6cWEyTzRYRHN0ejFCdTU0RmhrY1pHd3M1bWpKWE5kbkRnaWhV?= =?utf-8?B?VW5LWjVrdXM1R1p2aU85amNtaWRscnJvMi9qNkhWNlBnYmh3Y1ZFUTZpcWtl?= =?utf-8?B?UXcrWEtQZXU5ZStHanM4eDJ2YWI1eWFVazBFNVJZNDZySzRJSFNISjd1RkNz?= =?utf-8?B?VlUyZURpL0NnRlZCTktGYzRoMmJUNnhIRWM2cjBhZVdHYkJJNmVlTnFHWUhM?= =?utf-8?B?QWEza3RrSDNmbHBnOGd4ajNyRWhmcGVjTTYvM0JTZHY3TmlGQ2NSbE5QRkxl?= =?utf-8?B?Q1VIRm52cC9VMG5EQ1VGRTFxUkllL25VYzloSy9FZHN2Vk1Nc20vTndyWmZj?= =?utf-8?B?cFNnM205SkUwa2JhVlNFeTNaV1JUZUJHaWZML0lvRHN3ZVZ5Nmx6N21YaXdI?= =?utf-8?B?VEo4bkgxdXc5bEMwS2Z2ZGJTSEllY0RsZTlsUC9oL1doVWpXVU52dWYzZkVD?= =?utf-8?B?VmptRXpiTjFqUCtQQXgxWTF4UWwxTU9uZGQrcWpFNTcrbTZYeWNvbktDSHl4?= =?utf-8?B?WDh6RWplT09WRGkzSERoMzhzOU16WXZoTkliVjExbDhWenpMd0VVdndQSzlh?= =?utf-8?B?Y1czamxlVlZUTzl1bXJWSHRPZlpFMFl2dW1PUmlSRXB4U2VlSXBrK3lra2ZL?= =?utf-8?B?cHM0cWpMeis5Q2hnL1l4UVV4bVJQakh1bDBERFJ0L0NScUJkQXZGMTUyd1k0?= =?utf-8?B?MFBDYUdabXYzc010N0JJZWdnZTgrQW1HeGlmYWp2SWtEeHRBYnZ2SllOdDI4?= =?utf-8?B?dmhDRlVXajlOV2t6V20zM3M5ajM4WkxDV0VhU2d4bWt2aUtGQ1BTaFlkdTZP?= =?utf-8?B?YUM1akhTVndkcUgyRkNQMmtBVXcvUDhJdGlidmp2aUlTTmQzZTRJOEZvaWlV?= =?utf-8?B?WHNEa0ZCaTZoN2ZmckRtT2hEUGwxaFJ2SkgveHNSTlpHaGlla0ovMHpRSGdP?= =?utf-8?B?R0gxK3dFY0tLcGdKU1lDRkkrRCs3WGwvcVMySFZvVUVGRytNOUxVeGlxclVs?= =?utf-8?B?MFh4VTM3VmZDUVZyYVVyTWlONnVsUTh1amVsa0U0MlRUeGUxM21mVjRxVlNr?= =?utf-8?B?S21TdGtYdk9UN1llc3htUXFDNkhpcW5lSmNwSjIvd3k1VW5DVUNXNEJ5L2po?= =?utf-8?B?emR1WVFPaHoxTUJUZ3R2TFhGSVFzakVPY0NTdG4yVWJVZU15Zjc2NE83VDN3?= =?utf-8?B?L3o3WENNaCtpTmpobjA1T2wyNWpOMGV4eE5ERGpRa0RRS3NYbVkwNFE0Sk9S?= =?utf-8?B?NnVCWG1FYy92blNXOWl4UStwVXFUMGtPSFRvc2lMRWwrRFEzSnRXRzdCZEpM?= =?utf-8?B?YnptZStMajFhL3F0UTdueG1rYlFjSkFueGNncGZ2NVRVcXhodGZucnh2cCtm?= =?utf-8?B?OGw0SDM1endGMGZLMmplaVJnRGpPNVRNdU5wSWl1TjI3MlBvLzFqMCswWGp5?= =?utf-8?B?VmYyUWF6ZGJQRkM3M3RvcWM1QTJ3U3JzSWN4WjBna25lMzBuZncra0dpL0Jj?= =?utf-8?B?Z0ZnRE1pbDBGbGNYNG1rUThIZnZmNWdtcXhWOFBKVVdwU2FuRDdPK3A2NVBH?= =?utf-8?B?NDBxS0JQTzNVYUZEYklrL3JwcDIxYmFBODFsNG5Da01nRTBjaisrNEY3QzA5?= =?utf-8?B?UUQ4N3pnQzZ5dlpwcWdweHozQXFHUnVLTzY5Smh3Ui9jcDhYUWdiNFdnRE1v?= =?utf-8?B?YmNZMEFDSFFNWGxrVGJZN1JhNEpCcm9qUE0zVWwvcHptMW4zVTB1aDRnM0ty?= =?utf-8?B?cnJKYVplNWpLS1BzYzBWdmE4RFpWbjBDelBIREVROUg2YVZyaENXT3Q5Z05D?= =?utf-8?B?cjAvTVowTUlaRnZrWnJIVFFJV2l5WFh5cUZjTXp0WjdwRUFLQVpKRU1YNmt2?= =?utf-8?B?eDJtVTZ3Y3pjK2czQ1VHSmFFK090S2trZDJmeEtMN3VRcng1KzFKVEhPODF5?= =?utf-8?B?MjJ5THBUNEpDQVQrc28rRzdiY3BQbXk0SVhpTllUeHdYTnB3dDZVd3VmTktw?= =?utf-8?B?V3BGT0ZHYkIzS3NUZm1oZnNhaGthYWcxN2o2YWFuS3dVY1N2ckFPK0JGQWcx?= =?utf-8?Q?K67ljHUxb9Ps4r2Hh9qR9qw=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <8319C5DD0096E0478E65A922057AEDA5@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CY8PR11MB7688.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6374ae02-277f-45a0-a35b-08dbc59206bd X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Oct 2023 10:58:37.1602 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3f4057f3-b418-4d4e-ba84-d55b4e897d88 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: mx2Ikb6MHYisNu37I3Rxpalu5aW5RQEL02rO34Nbzkm6w6tDKUApHls27u3FRZ159+xeWP9+9UEpF/m16LXuxfCn1L0kt7/oG7dGeJufggY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR11MB8397 X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on agentk.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (agentk.vger.email [0.0.0.0]); Thu, 05 Oct 2023 09:07:12 -0700 (PDT) T24gVHVlLCAyMDIzLTA5LTI2IGF0IDE2OjQ4IC0wNzAwLCBKYWNvYiBLZWxsZXIgd3JvdGU6Cj4g RVhURVJOQUwgRU1BSUw6IERvIG5vdCBjbGljayBsaW5rcyBvciBvcGVuIGF0dGFjaG1lbnRzIHVu bGVzcyB5b3UKPiBrbm93IHRoZSBjb250ZW50IGlzIHNhZmUKPiAKPiBPbiA5LzI2LzIwMjMgODo1 NiBBTSwgVmlzaHZhbWJhciBQYW50aCBTIHdyb3RlOgo+ID4gQ3VycmVudGx5IGFsbCBSWCBmcmFt ZXMgYXJlIHRpbWVzdGFtcGVkIHdoaWNoIHJlc3VsdHMgaW4gYQo+ID4gcGVyZm9ybWFuY2UKPiA+ IHBlbmFsdHkgd2hlbiB0aW1lc3RhbXBpbmcgaXMgbm90IG5lZWRlZC7CoCBUaGUgZGVmYXVsdCBp cyBub3cgYmVpbmcKPiA+IGNoYW5nZWQgdG8gbm90IHRpbWVzdGFtcCBhbnkgUnggZnJhbWVzIChI V1RTVEFNUF9GSUxURVJfTk9ORSksIGJ1dAo+ID4gc3VwcG9ydCBoYXMgYmVlbiBhZGRlZCB0byBh bGxvdyBjaGFuZ2luZyB0aGUgZGVzaXJlZCBSWAo+ID4gdGltZXN0YW1waW5nCj4gPiBtb2RlIChI V1RTVEFNUF9GSUxURVJfQUxMIC3CoCB3aGljaCB3YXMgdGhlIHByZXZpb3VzIHNldHRpbmcsCj4g PiBIV1RTVEFNUF9GSUxURVJfUFRQX1YyX0VWRU5ULCBIV1RTVEFNUF9GSUxURVJfUFRQX1YyX1NZ TkMgYW5kCj4gPiBIV1RTVEFNUF9GSUxURVJfUFRQX1YyX0RFTEFZX1JFUSBhcmUgdGhlIHN1cHBv cnRlZCBvcHRpb25zKSB1c2luZwo+ID4gU0lPQ1NIV1RTVEFNUC4gQWxsIHNldHRpbmdzIHdlcmUg dGVzdGVkIHVzaW5nIHRoZSBod3N0YW1wX2N0bAo+ID4gYXBwbGljYXRpb24uCj4gPiBJdCBpcyBh bHNvIG5vdGVkIHRoYXQgcHRwNGwsIHdoZW4gc3RhcnRlZCwgcHJlY29uZmlndXJlcyB0aGUgZGV2 aWNlCj4gPiB0bwo+ID4gdGltZXN0YW1wIHVzaW5nIEhXVFNUQU1QX0ZJTFRFUl9QVFBfVjJfRVZF TlQsIHNvIHRoaXMgZHJpdmVyCj4gPiBjb250aW51ZXMKPiA+IHRvIHdvcmsgcHJvcGVybHkgIm91 dCBvZiB0aGUgYm94Ii4KPiA+IAo+ID4gVGVzdCBzZXR1cDrCoCB4NjQgUEMgd2l0aCBMQU43NDMw IC0tLT4geDY0IFBDIGFzIHBhcnRuZXIKPiA+IAo+IAo+IEkgZG9uJ3QgdGhpbmsgSSB3b3VsZCBi b3RoZXIgdG8gc3VwcG9ydAo+IEhXVFNUQU1QX0ZJTFRFUl9QVFBfVjJfREVMQVlfUkVRCj4gb3Ig SFdUU1RBTVBfRklMVEVSX1BUUF9WMl9TWU5DIGFzIHRoZXNlIGFyZSBwcmV0dHkgaGlzdG9yaWMg YW5kIG9ubHkKPiB1c2VmdWwgZm9yIGhhcmR3YXJlIHdoaWNoIGNhbid0IGRvIEhXVFNUQU1QX0ZJ TFRFUl9QVFBfVjJfRVZFTlQuCj4gCkhpIEphY29iLApUaGFua3MgZm9yIHRoZSBjb21tZW50cy4g SnVzdCBhZGRlZCB0aGVzZSBmaWx0ZXJzLCBhcyB0aGUgSFcgc3VwcG9ydHMKdGhlc2UgaW5kaXZp ZHVhbGx5LiBTaW5jZSBIVyBhbHNvIHN1cHBvcnRzCkhXVFNUQU1QX0ZJTFRFUl9QVFBfVjJfRVZF TlQsIHdpbGwgZHJvcCB0aGUgc3VwcG9ydCBmb3IKaW5kaXZpZHVhbMKgSFdUU1RBTVBfRklMVEVS X1BUUF9WMl9TWU5DIGFuZApIV1RTVEFNUF9GSUxURVJfUFRQX1YyX0RFTEFZX1JFUSBjYXNlcyBp biB2MiBwYXRjaC4gCgo+ID4gaXBlcmYzIHdpdGggLSBUaW1lc3RhbXAgYWxsIGluY29taW5nIHBh Y2tldHM6Cj4gPiAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0g LSAtCj4gPiBbIElEXSBJbnRlcnZhbMKgwqDCoMKgwqDCoMKgwqDCoMKgIFRyYW5zZmVywqDCoMKg wqAgQml0cmF0ZcKgwqDCoMKgwqDCoMKgwqAgUmV0cgo+ID4gW8KgIDVdwqDCoCAwLjAwLTUuMDXC oMKgIHNlY8KgwqAgNTE3IE1CeXRlc8KgwqAgODU5IE1iaXRzL3NlY8KgwqDCoCAwwqDCoMKgIHNl bmRlcgo+ID4gW8KgIDVdwqDCoCAwLjAwLTUuMDDCoMKgIHNlY8KgwqAgNTE1IE1CeXRlc8KgwqAg ODY0IE1iaXRzL3NlY8KgwqDCoMKgwqDCoMKgwqAKPiA+IHJlY2VpdmVyCj4gPiAKPiA+IGlwZXJm IERvbmUuCj4gPiAKPiA+IGlwZXJmMyB3aXRoIC0gVGltZXN0YW1wIG9ubHkgUFRQIHBhY2tldHM6 Cj4gPiAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtCj4g PiBbIElEXSBJbnRlcnZhbMKgwqDCoMKgwqDCoMKgwqDCoMKgIFRyYW5zZmVywqDCoMKgwqAgQml0 cmF0ZcKgwqDCoMKgwqDCoMKgwqAgUmV0cgo+ID4gW8KgIDVdwqDCoCAwLjAwLTUuMDTCoMKgIHNl Y8KgwqAgNTYzIE1CeXRlc8KgwqAgOTM3IE1iaXRzL3NlY8KgwqDCoCAwwqDCoMKgIHNlbmRlcgo+ ID4gW8KgIDVdwqDCoCAwLjAwLTUuMDDCoMKgIHNlY8KgwqAgNTYxIE1CeXRlc8KgwqAgOTQxIE1i aXRzL3NlY8KgwqDCoMKgwqDCoMKgwqAKPiA+IHJlY2VpdmVyCj4gPiAKPiA+IAo+IAo+IFByZXR0 eSBzaWduaWZpY2FudCBjb3N0IGhlcmUgZm9yIHRoZSB0aW1lc3RhbXBpbmcgYWxsIGZyYW1lcy4g TWFrZXMKPiBzZW5zZSB0byBsZWF2ZSB0aGUgZGVmYXVsdCB0byBOT05FIHVubGVzcyByZXF1ZXN0 ZWQuCgpUaGFua3MgZm9yIHRoZSBjb21tZW50LCB3aWxsIG1haW50YWluIGFzIGlzLgoKPiAKPiBQ bGVhc2UgZmluZCB0aGUgZWFybGllciBjb252ZXJzYXRpb24gYXQgdGhlIGxpbmsgYmVsb3cKPiA+ IExpbms6Cj4gPiBodHRwczovL2xvcmUua2VybmVsLm9yZy9hbGwvMjAyMzA3MzExMjU0MTguNzUx NDAtMS12aXNodmFtYmFycGFudGguc0BtaWNyb2NoaXAuY29tLwo+ID4gCj4gPiBTaWduZWQtb2Zm LWJ5OiBWaXNodmFtYmFyIFBhbnRoIFMgPHZpc2h2YW1iYXJwYW50aC5zQG1pY3JvY2hpcC5jb20+ Cj4gPiAtLS0KPiA+IMKgLi4uL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29s LmPCoCB8wqAgNSArLQo+ID4gwqBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQz eF9tYWluLmMgfCA1OAo+ID4gKysrKysrKysrKysrKysrKysrLQo+ID4gwqBkcml2ZXJzL25ldC9l dGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmggfMKgIDggKysrCj4gPiDCoGRyaXZlcnMv bmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X3B0cC5jwqAgfMKgIDkgKysrCj4gPiDCoDQg ZmlsZXMgY2hhbmdlZCwgNzggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKPiA+IAo+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X2V0aHRv b2wuYwo+ID4gYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29s LmMKPiA+IGluZGV4IDJkYjU5NDliNGM3ZS4uODU1ODQ0ZGY1ZWExIDEwMDY0NAo+ID4gLS0tIGEv ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfZXRodG9vbC5jCj4gPiArKysg Yi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9ldGh0b29sLmMKPiA+IEBA IC0xMDQ3LDcgKzEwNDcsMTAgQEAgc3RhdGljIGludAo+ID4gbGFuNzQzeF9ldGh0b29sX2dldF90 c19pbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCSVQoSFdUU1RBTVBfVFhfT04pIHwKPiA+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVChI V1RTVEFNUF9UWF9PTkVTVEVQX1NZTkMpOwo+ID4gwqDCoMKgwqDCoCB0c19pbmZvLT5yeF9maWx0 ZXJzID0gQklUKEhXVFNUQU1QX0ZJTFRFUl9OT05FKSB8Cj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCSVQoSFdUU1RBTVBfRklMVEVSX0FM TCk7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBCSVQoSFdUU1RBTVBfRklMVEVSX0FMTCkgfAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKEhXVFNUQU1QX0ZJTFRFUl9QVFBf VjJfRVZFTlQpIHwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIEJJVChIV1RTVEFNUF9GSUxURVJfUFRQX1YyX1NZTkMpIHwKPiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVChIV1RT VEFNUF9GSUxURVJfUFRQX1YyX0RFTEFZX1JFUSk7Cj4gPiDCoMKgwqDCoMKgIHJldHVybiAwOwo+ ID4gwqB9Cj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2No aXAvbGFuNzQzeF9tYWluLmMKPiA+IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xh bjc0M3hfbWFpbi5jCj4gPiBpbmRleCBmOTQwODk1YjE0ZTguLjAzODliYzdjZjYwMyAxMDA2NDQK PiA+IC0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYwo+ ID4gKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jCj4g PiBAQCAtMTg3MCw2ICsxODcwLDYzIEBAIHN0YXRpYyBpbnQgbGFuNzQzeF90eF9nZXRfYXZhaWxf ZGVzYyhzdHJ1Y3QKPiA+IGxhbjc0M3hfdHggKnR4KQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgcmV0dXJuIGxhc3RfaGVhZCAtIGxhc3RfdGFpbCAtIDE7Cj4gPiDCoH0KPiA+IAoKPiA+ ICtpbnQgbGFuNzQzeF9yeF9zZXRfdHN0YW1wX21vZGUoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAq YWRhcHRlciwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgaW50IHJ4X2ZpbHRlcikKPiA+ICt7Cj4gPiArwqDCoMKgwqAgaW50IGNoYW5u ZWxfbnVtYmVyOwo+ID4gK8KgwqDCoMKgIGludCBpbmRleDsKPiA+ICvCoMKgwqDCoCB1MzIgZGF0 YTsKPiA+ICsKPiA+ICvCoMKgwqDCoCBzd2l0Y2ggKHJ4X2ZpbHRlcikgewo+ID4gK8KgwqDCoMKg IGNhc2UgSFdUU1RBTVBfRklMVEVSX1BUUF9WMl9TWU5DOgo+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGF0YSA9IGxhbjc0M3hfY3NyX3JlYWQoYWRhcHRlciwK PiA+IFBUUF9SWF9UU19DRkcpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgZGF0YSAmPSB+UFRQX1JYX1RTX0NGR19FVkVOVF9NU0dTXzsKPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRhdGEgfD0gUFRQX1JYX1RTX0NGR19T WU5DX01TR187Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBs YW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBQVFBfUlhfVFNfQ0ZHLAo+ID4gZGF0YSk7Cj4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPiA+ICvCoMKg wqDCoCBjYXNlIEhXVFNUQU1QX0ZJTFRFUl9QVFBfVjJfREVMQVlfUkVROgo+ID4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGF0YSA9IGxhbjc0M3hfY3NyX3JlYWQo YWRhcHRlciwKPiA+IFBUUF9SWF9UU19DRkcpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZGF0YSAmPSB+UFRQX1JYX1RTX0NGR19FVkVOVF9NU0dTXzsKPiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRhdGEgfD0gUFRQX1JY X1RTX0NGR19ERUxBWV9SRVFfTVNHXzsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGxhbjc0M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIFBUUF9SWF9UU19DRkcsCj4g PiBkYXRhKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJy ZWFrOwo+ID4gK8KgwqDCoMKgIGNhc2UgSFdUU1RBTVBfRklMVEVSX1BUUF9WMl9FVkVOVDoKPiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRhdGEgPSBsYW43NDN4 X2Nzcl9yZWFkKGFkYXB0ZXIsCj4gPiBQVFBfUlhfVFNfQ0ZHKTsKPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRhdGEgfD0gUFRQX1JYX1RTX0NGR19FVkVOVF9N U0dTXzsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxhbjc0 M3hfY3NyX3dyaXRlKGFkYXB0ZXIsIFBUUF9SWF9UU19DRkcsCj4gPiBkYXRhKTsKPiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+ID4gK8KgwqDCoMKg IGNhc2UgSFdUU1RBTVBfRklMVEVSX05PTkU6Cj4gPiArwqDCoMKgwqAgY2FzZSBIV1RTVEFNUF9G SUxURVJfQUxMOgo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg YnJlYWs7Cj4gCj4gQXQgZmlyc3QgdGhpcyBicmVhayB3YXMgYSBiaXQgY29uZnVzaW5nIHRvIG1l LCBzaW5jZSBub3RoaW5nIGlzIHNldAo+IGhlcmUuCgpUaGUgaWRlYSB3YXMgdGhhdCBpbiB0aGUg Tk9ORSBhbmQgQUxMIGNhc2UsIHRoZXJlIG5lZWQgbm90IGJlIGFueQptb2RpZmljYXRpb24gaW4g dGhpcyByZWdpc3Rlci4gQnV0IHdpbGwgYWRhcHQgdG8gYSBtb3JlIHJlYWRhYmxlCmltcGxlbWVu dGF0aW9uIGluIHYyIHBhdGNoLgoKPiAKPiA+ICvCoMKgwqDCoCBkZWZhdWx0Ogo+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbmV0aWZfd2FybihhZGFwdGVyLCBk cnYsIGFkYXB0ZXItPm5ldGRldiwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAicnggdGltZXN0YW1wID0gJWQgaXMgbm90 Cj4gPiBzdXBwb3J0ZWRcbiIsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcnhfZmlsdGVyKTsKPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAtRUlOVkFMOwo+ID4gK8KgwqDC oMKgIH0KPiA+ICsKPiA+ICvCoMKgwqDCoCBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBMQU43NDNY X1VTRURfUlhfQ0hBTk5FTFM7IGluZGV4KyspIHsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgY2hhbm5lbF9udW1iZXIgPSBhZGFwdGVyLT5yeFtpbmRleF0uY2hhbm5lbF9udW1iZXI7Cj4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRhdGEgPSBsYW43NDN4X2Nzcl9yZWFkKGFkYXB0 ZXIsCj4gPiBSWF9DRkdfQihjaGFubmVsX251bWJlcikpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBpZiAocnhfZmlsdGVyID09IEhXVFNUQU1QX0ZJTFRFUl9OT05FKSB7Cj4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkYXRhICY9IH4oUlhfQ0ZHX0Jf VFNfQUxMX1JYXyB8Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIFJYX0NGR19CX1RTX0RFU0NSX0VOXyk7Cj4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIH0gZWxzZSBpZiAocnhfZmlsdGVyID09IEhXVFNUQU1QX0ZJTFRF Ul9BTEwpIHsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRh dGEgfD0gUlhfQ0ZHX0JfVFNfQUxMX1JYXzsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fSBlbHNlIHsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8q IGVuYWJsZSBzdG9yaW5nIHRpbWVzdGFtcGluZyBpbiBleHRlbnNpb24KPiA+IGRlc2NyaXB0b3IK PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBpbnN0ZWFk IG9mIHRpbWVzdGFtcGluZyBhbGwgdGhlIHBhY2tldHMKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGRhdGEgJj0gflJYX0NGR19CX1RTX0FMTF9SWF87Cj4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkYXRhIHw9IFJYX0NGR19CX1RTX0RF U0NSX0VOXzsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+IAo+IEkgbWlnaHQgaGF2 ZSBtYWRlIHRoZSBkZWNpc2lvbiBvZiB3aGF0IHRvIHByb2dyYW0gaW4gdGhlIHN3aXRjaCBjYXNl Cj4gYWJvdmUgYW5kIHRoZW4gZG9uZSB0aGUgd3JpdGUgaGVyZSB3aXRoICJkYXRhICY9IH5NQVNL OyBkYXRhIHw9Cj4gc2V0dGluZyIKPiByYXRoZXIgdGhhbiBoYXZpbmcgdHdvIHNlcGFyYXRlIGRl Y2lzaW9uIHBvaW50cy4KClN1cmUsIHdpbGwgdHJ5IGFuZCBhZGFwdCB0byB0aGlzLgo+IAo+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsYW43NDN4X2Nzcl93cml0ZShhZGFwdGVyLCBSWF9D RkdfQihjaGFubmVsX251bWJlciksCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRhdGEpOwo+ID4gK8KgwqDCoMKgIH0KPiA+ ICsKPiA+ICvCoMKgwqDCoCByZXR1cm4gMDsKPiA+ICt9Cj4gPiArCj4gCj4gUmVzdCBvZiB0aGUg Y29kZSBzZWVtcyBmaW5lLCBhbmQgdGhlIGltcGxlbWVudGF0aW9uIGxvb2tzIG9rLgo+IAo+IEkn ZCBzdWdnZXN0IGRyb3BwaW5nIHRoZSBub3Qgc28gdXNlZnVsIHRpbWVzdGFtcCBmaWx0ZXJzIGZv ciBvbmx5Cj4gc3luYwo+IG9yIG9ubHkgZGVsYXkgcmVxdWVzdCwga2VlcGluZyBvbmx5IFYyX0VW RU5ULCBidXQgZWl0aGVyIHdheToKClRoYW5rcywgd2lsbCBkcm9wIHRoZSBub3Qgc28gdXNlZnVs IGZpbHRlcnMgYW5kIHN1Ym1pdCBhIHYyIHBhdGNoIHdpdGgKcmVxdWlyZWQgY2hhbmdlcy4KPiAK PiBSZXZpZXdlZC1ieTogSmFjb2IgS2VsbGVyIDxqYWNvYi5lLmtlbGxlckBpbnRlbC5jb20+Cgo=