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=-9.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 81EC4C433E0 for ; Sat, 8 Aug 2020 21:09:12 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 2314A206B6 for ; Sat, 8 Aug 2020 21:09:12 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="XJx+44m3"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=netapp.onmicrosoft.com header.i=@netapp.onmicrosoft.com header.b="TjZ07fOo" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2314A206B6 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=netapp.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-nvme-bounces+linux-nvme=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:Content-ID:In-Reply-To:References: Message-ID:Date:Subject:To:From:Reply-To:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=ktsaToXjOuCq+k314+TOPFk0nbaE2iTwhJc8IbARnPU=; b=XJx+44m3LlSomRWikhy0WpI1K qL/s9Dl8AupjJVe3C/SSxqHN6Pt1JHIi6cXGyPjz3qM8+lnZKqPPTWgvAsEU6jf/sixS4BGZ0VzLr SXx2gNVbxChosfCEzSAfz1m69xqV1a7b88jhEmsqDFdrHnJVSQ1NqhcAySOniftFW6OF3ngDtMT8t SyLjWTwuWZ99DQGJhvKcZJ+JC7sVJTZjF0RDp5FgrejsVl3V11/v7vTE49zBErXNl4kk1qjlkhFuk BclXU8/tGncAi7QG+GSNG5r0QUyPWW8e++OvauIB9ol2+W0uN+fedNyXRjX/VIgrLfCsnYxNNoYUI peYJ6kaiQ==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1k4W5P-0008H1-69; Sat, 08 Aug 2020 21:09:03 +0000 Received: from mail-bn8nam12on2056.outbound.protection.outlook.com ([40.107.237.56] helo=NAM12-BN8-obe.outbound.protection.outlook.com) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1k4W5D-0008GD-MJ for linux-nvme@lists.infradead.org; Sat, 08 Aug 2020 21:08:53 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=C1Zju2fTs/6D8HgV3u/CzfbpfZztm89/UhUSpTtnoYQlJUZTx2fRh1jmM1TSO+he7g1gBTBUmoUAt6VKJusaIfdAMMA5w2sg/CGZCN5vAzbjN4pUvQrDtbK8COB72JK08fiGSpzjetmP9P5Iw8oi584cgmLErIn7S4hnvAqytmA+rVI/6VSBlLbLmwx2SbBdM1+Z9oY5chRIVBmlqltvNain/8tQxbGEb5O40pvgm5henATgK8BI8TDa0VDbSOroLZf4Ea4+iUgvJ9k2XuUklA6iNmQ04F/cojHjtPnMdSU5byBSiuU+2jiZ7vzRTugwioq6oUPro35FRGUj2UmSZg== 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=RIWv2jlxadPybY7ndHoC2DU/A+PsAZ01bW9+W1x6dXM=; b=BARpCEYVwv4E9yt4oG2bInzDEexWyxdmMTcPNXJgddavXqTgKKok8JcjQxbcMxp0okAXSOud4g3zKDeHqt2p6U+qkzDqm7vVLh1/aTZPkBtowr1yhmmEKUHYm1UAlVt2CYx++1Jt/mxu7EjFi6ygtlSVwutdy4QuIpFkzZqTxhQylfvfxxfubtvKxriCNzENCe/h5ahZqt8ZTD/XrMEJmlnEmXzkjO4V1x3AePhm90iYd3KOINAJKit5WNk+gyMUBMVRkn2o8A5lPcXNzpp5Yz/RP6Orqt6dmQnwp0erHWy5KiLdlNO+/8OjuvcKP/zO20zGtPRKD8Kkrinf3uOgzg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=netapp.com; dmarc=pass action=none header.from=netapp.com; dkim=pass header.d=netapp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netapp.onmicrosoft.com; s=selector1-netapp-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RIWv2jlxadPybY7ndHoC2DU/A+PsAZ01bW9+W1x6dXM=; b=TjZ07fOoW2JBUX4sC9mqzGqMMy0kkyBFjdJVVRTEZ9L5Y3ciHkcBO1VOHoIK53ZMXOcWLPwiiBEeT3tRD6ELUKcNocvwVCg55RAClMxZhKvgRBAO2ShOuxrH537JlhlXsIb4hlx1Ie28sHQhu2XaasOKHF4G+bfzvdFRxfmWcN8= Received: from BN8PR06MB5714.namprd06.prod.outlook.com (2603:10b6:408:d2::32) by BN8PR06MB5459.namprd06.prod.outlook.com (2603:10b6:408:66::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3261.20; Sat, 8 Aug 2020 21:08:45 +0000 Received: from BN8PR06MB5714.namprd06.prod.outlook.com ([fe80::9438:86ca:efca:18b9]) by BN8PR06MB5714.namprd06.prod.outlook.com ([fe80::9438:86ca:efca:18b9%3]) with mapi id 15.20.3261.022; Sat, 8 Aug 2020 21:08:44 +0000 From: "Meneghini, John" To: Sagi Grimberg , Mike Snitzer Subject: Re: nvme: restore use of blk_path_error() in nvme_complete_rq() Thread-Topic: nvme: restore use of blk_path_error() in nvme_complete_rq() Thread-Index: AQHWbE7UEz3pfV4MbE+GFAiYSFQMcKkr2WqAgAA6c4CAATpzAIABJjWA Date: Sat, 8 Aug 2020 21:08:44 +0000 Message-ID: <842F6313-F3CC-46AC-A15A-A44E50C5BD18@netapp.com> References: <20200805152905.GB1982647@dhcp-10-100-145-180.wdl.wdc.com> <255d55e3-f824-a968-e478-3efeda095696@huawei.com> <20200806142625.GA3075319@dhcp-10-100-145-180.wdl.wdc.com> <729820BC-5F38-4E22-A83A-862E57BAE201@netapp.com> <20200806184057.GA27858@redhat.com> <20200806191943.GA27868@redhat.com> <6B826235-C504-4621-B8F7-34475B200979@netapp.com> <20200807000755.GA28957@redhat.com> <510f5aff-0437-b1ce-f7ab-c812edbea880@grimberg.me> <20200807045015.GA29737@redhat.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Microsoft-MacOutlook/16.39.20071300 authentication-results: grimberg.me; dkim=none (message not signed) header.d=none;grimberg.me; dmarc=none action=none header.from=netapp.com; x-originating-ip: [216.240.30.25] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: c0d67c7e-f883-4f15-69da-08d83bdf3c5e x-ms-traffictypediagnostic: BN8PR06MB5459: 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: vN6360j0rLNe7OBeqn5Fni8O198IwgaS1mDWta0h5PuZgrgKPN3qhdZMaKR2gBa6rKS7H5x6EZCxk7XocwOYrIxgJ8av0jk2T5fcSO3u2QHW3KXTvrstH/YvXGMXwMid6XFiHGLGD3Ss+fzy4sswLQISrkaFKfYzr1gnlvHu5cA9kgi5NHwOaml+tGuFpfIdHhn0ybEa01zvC/4+kuVWKpdEZ6h3EkcvqpopJBpnIAcIGBYkDf9sS2xCvb5ZjP5DApApdIkC72OAY3MC37k6KSBthK1ng9CPoAmU2gUXC2VHuicH35JMQAWDO/iUhfNHF4HZqUYos/uGDwmbPsSJeA2Y04lqp9C9ojrIdBLR0Z+rbDsJYsdBYEh6+MXEU71MY+hF8HDzt54AxJwce9GhAIxFy8Y27AeH137BgdnVYY5vbFZHyXl/3lJ8K5WRydO1fHgUt7QB8UYkL7JyTXrPOYK8htMzkXtVOuaPwy9CkcG1/81u7eHk/uZfUPIySs+76qNJtwwabCJlgxOQlNwQ7g== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN8PR06MB5714.namprd06.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(346002)(396003)(376002)(136003)(39860400002)(366004)(26005)(107886003)(86362001)(30864003)(36756003)(33656002)(186003)(2906002)(83380400001)(110136005)(6512007)(478600001)(71200400001)(6486002)(316002)(8936002)(76116006)(966005)(66946007)(8676002)(6506007)(66446008)(4326008)(66476007)(91956017)(5660300002)(2616005)(66556008)(54906003)(64756008)(43620500001)(15398625002)(19623455009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: tIbmckbEBbWiFkDscD7UzSdppeTkDvdrjhRiXCE8SMoPpgBr7kpgvsRYHLt2sgdj27Ep8GF+7jzOxjRQWLw/wGkeRqvxgUOrLOThbhDh+LNXPKLZpd47YWduwy2LG0kqvFTC+xpXe5kFe/GLfdQRJbdja1udDl1ZbPW5XlvmIyyD/WC2r6eXj59UNIjCvvStiTb0XE0TJjic/67n8t0ZRs+VukTHyhJtSYhqy8ZANucAAd/2Wi7kp9lSJwR4jJP25+L4gxaOD6/63IX2mg8oy8z/2rEFsMcc+tFdqFu6qJIiwbi5g2r2PMGjhC2Qa+NLQn/b9gMMqR3+kBR2K1Rz7mkDKn/bA2iPA6K/5j3VfnxKVACoB2++uDccGcELzrEaRDXcn6Rd1hejtRE43JY1SKaN2xN5jSDj4bVNzAJfd15zm+M8frfY5uHjJGKetD6KkAEDd/W/xdbwr/8IUCpiYyPCFxiwchf41r6J8J4vyrtKUM+Bw7RT9lPrO6lW0BXkNUveOiPrGA6IrK0ux7bPyv2h/GgH21DM0nFnhdDWWiAHPIdJGvR/4wblXmQDLCvtJvI78HF+7g0C7Ehws+xkDL6kZUXUdTBhIUHdsH/BG0TtOimsX0v7kznhRTD8pWsNsvN/Qx1ACmRRPFYAnKZIog== Content-ID: MIME-Version: 1.0 X-OriginatorOrg: netapp.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN8PR06MB5714.namprd06.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c0d67c7e-f883-4f15-69da-08d83bdf3c5e X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Aug 2020 21:08:44.6822 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4b0911a0-929b-4715-944b-c03745165b3a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: x1Q+HytapLpXW4bRn2C5Su51NV18m/PJNn3Vcl9CE/pE2gP5B38fmfpyfHqHmr8WwrleiYSh/JxjT48Co0Dfuw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN8PR06MB5459 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200808_170852_202665_C5A366D0 X-CRM114-Status: GOOD ( 25.62 ) X-BeenThere: linux-nvme@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "linux-nvme@lists.infradead.org" , Christoph Hellwig , "dm-devel@redhat.com" , Ewan Milne , Chao Leng , Keith Busch , "Meneghini, John" , Hannes Reinecke Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-nvme" Errors-To: linux-nvme-bounces+linux-nvme=archiver.kernel.org@lists.infradead.org SSdkIGxpa2UgdG8gdXAgbGV2ZWwgdGhpcyB3aG9sZSBjb252ZXJzYXRpb24gZm9yIGEgbWludXRl IGJ5IHRhbGtpbmcgYWJvdXQgZXhhY3RseSB3aGF0IEFDUkUgZG9lcy4NCg0KVGhlIGdlbmVzaXMg b2YgdGhlIGNoYW5nZXMgZGlzY3Vzc2VkIGluIHRoaXMgdGhyZWFkIGlzIE5WTWUgVFAtNDAzMyAt IEVuaGFuY2VkIENvbW1hbmQgUmV0cnkuICBZb3UgY2FuIGZpbmQgYSBjb3B5IG9mIHRoaXMgVFAg aGVyZToNCg0KaHR0cDovL252bWV4cHJlc3Mub3JnL3dwLWNvbnRlbnQvdXBsb2Fkcy9OVk0tRXhw cmVzcy0xLjMtUmF0aWZpZWQtVFBzLnppcA0KDQpUaGlzIHRlY2huaWNhbCBwcm9wb3NhbCBhZGRl ZCBhIGNvbW1hbmQgcmV0cnkgZGVsYXkgZmVhdHVyZSB3aGljaCBpcyBwcm9ncmFtbWVkIGJ5IHRo ZSBjb250cm9sbGVyLiBUaGUgY29udHJvbGxlciBhZHZlcnRpc2VzIGEgc2V0IG9mIDMgZGlmZmVy ZW50IHRpbWluZyBkZWxheXMgdGhvdWdoIHRoZSBJZGVudGlmeSBDb250cm9sbGVyIGRhdGEgc3Ry dWN0dXJlIENSRFR7MS0yfSBmaWVsZHMuICBUbyBtYWtlIHVzZSBvZiB0aGVzZSBkZWxheSBmaWVs ZHMgYSBuZXcgQ1JEIGZpZWxkIHdhcyBhZGRlZCB0byB0aGUgQ1FFIFN0YXR1cyBGaWVsZC4gIFRo aXMgYWxsb3dzIHRoZSBOVk1lIGNvbnRyb2xsZXIgdG8gc3BlY2lmeSBleGFjdGx5IGhvdyBsb25n IGEgY29tbWFuZCByZXRyeSBzaG91bGQgYmUgZGVsYXllZCwgd2l0aCAzIHBvc3NpYmxlIHRpbWVy cyB0aGF0IGl0IGNob29zZXMgYW5kIGNvbnRyb2xzLiAgQ1JEVHMgY2FuIHJhbmdlIGZyb20gMTAw IG1pbGxpc2Vjb25kcyB0byA2NTU5IHNlY29uZHMuICBCZWNhdXNlIHRoaXMgY2FwYWJpbGl0eSBj YW4gaGF2ZSBzdWNoIGEgcmFkaWNhbCBlZmZlY3Qgb24gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkg YSBuZXcgTlZNZSBGZWF0dXJlIElkZW50aWZpZXIgd2FzIGFkZGVkIChIb3N0IEJlaGF2aW9yIFN1 cHBvcnQgLSBGZWF0dXJlIElEIDE2aCkgd2l0aCBhbiBBZHZhbmNlZCBDb21tYW5kIFJldHJ5IEVu YWJsZSAoQUNSRSkgYml0LiAgVGhpcyBhbGxvd3MgdGhlIGhvc3QgdG8gZW5hYmxlIG9yIGRpc2Fi bGUgdGhlIGZlYXR1cmUuIA0KDQpXaXRoIHRoaXMgYmFja2dyb3VuZCB0aGVyZSBhcmUgYSBjb3Vw bGUgb2YgbWlzY29uY2VwdGlvbnMgaW4gdGhpcyB0aHJlYWQgd2hpY2ggSSdkIGxpa2UgdG8gYWRk cmVzcy4gIA0KDQpUaGUgZmlyc3QgaXM6IEFDUkUgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCB0aGUg TlZNRV9TQ19DTURfSU5URVJSVVBURUQgc3RhdHVzLiAgWWVzLCB0aGlzIG5ldyBlcnJvciBzdGF0 dXMgd2FzIGFkZGVkIGFzIGEgcGFydCBvZiBUUC00MDMzIGJ1dCB0aGUgQ1JEIGZpZWxkIG9mIHRo ZSBDUUUgc3RhdHVzIGNhbiBiZSBzZXQgYnkgdGhlIGNvbnRyb2xsZXIgd2l0aCAqYW55KiBOVk1l IGVycm9yIHN0YXR1cy4gQXMgbG9uZyBhcyB0aGUgRE5SIGJpdCBpcyBub3Qgc2V0IHRoZSBDb21t YW5kIFJldHJ5IERlbGF5IGNhbiBjb21lIGludG8gZWZmZWN0LiBUaGlzIGlzIGhvdyB0aGUgc3Bl YyBpcyB3cml0dGVuIGFuZCB0aGlzIGlzIGV4YWN0bHkgaG93IGl0IGhhcyBiZWVuIGltcGxlbWVu dGVkIGluIHRoZSBjb3JlIG52bWVfY29tcGxldGVfcnEoKSBmdW5jdGlvbg0KKGFmdGVyIGNoYW5n ZSA1MDdmZTQ2YWM5MTI3NjEyMCkuIEZvciBleGFtcGxlLCB0aGUgY29udHJvbGxlciBjYW4gcmV0 dXJuIE5WTUVfU0NfTlNfTk9UX1JFQURZIHdpdGggYSBDUkRUIG9mIDIgc2Vjb25kcy5eICBTbyBD RFJUIG5lZWRzIHRvIGJlIHN1cHBvcnRlZCB3aXRoIGFsbCBlcnJvciBzdGF0dXMgaWYgdGhlIGhv c3QgaXMgZ29pbmcgdG8gZW5hYmxlIEFDUkUsIGFuZCBJIHRoaW5rIGl0J3MgYSBiaWcgbWlzdGFr ZSB0byBnZXQgaHVuZyB1cCBvdmVyIHRoZSBOVk1FX1NDX0NNRF9JTlRFUlJVUFRFRCBzdGF0dXMg dHJhbnNsYXRpb24uIFRoZSBOVk1FX1NDX0NNRF9JTlRFUlJVUFRFRCBzdGF0dXMgd2FzIG9ubHkg YWRkZWQgdG8gdGhlIHNwZWMgdG8gcHJvdmlkZSBhIGdlbmVyYWwgcHVycG9zZSAiYnVzeSIgc3Rh dHVzLCBzb21ldGhpbmcgdGhhdCB3YXMgbWlzc2luZyBmcm9tIE5WTWUsIGFuZCBmb2N1c2luZyB5 b3VyIHNvbHV0aW9uIG9uIE5WTUVfU0NfQ01EX0lOVEVSUlVQVEVELCBvciBhbnkgb3RoZXIgc3Bl Y2lmaWMgTlZNZSBlcnJvciBzdGF0dXMsIGlzIHRoZSB3cm9uZyB0aGluZyB0byBkby4gIFRoZXJl IGlzIGEgbXVjaCBsYXJnZXIgY2hhbmdlIGluIGVycm9yIHNlbWFudGljcyBnb2luZyBvbiB3aXRo IEFDUkUgdGhhbiBqdXN0IHRoaXMgc2luZ2xlIGVycm9yLg0KDQpUaGUgc2Vjb25kIGlzOiAgQWxs IE5WTWUgZXJyb3Igc3RhdHVzIHRoYXQgZG8gbm90IGhhdmUgYSBTdGF0dXMgQ29kZSBUeXBlIG9m IDNoIChQYXRoIFJlbGF0ZWQgU3RhdHVzKSBhcmUgc3Vic3lzdGVtIHNjb3BlZC4gVGhpcyBpcyBh IHRvcGljIHRoYXQgaGFzIGdvbmUgdGhyb3VnaCBzb21lIGRlYmF0ZSBvbiB0aGUgbGludXgtbnZt ZSBtYWlsaW5nIGxpc3QgYW5kIGF0IE5WTWV4cHJlc3Mub3JnOyBhbmQgdGhlcmUgaGF2ZSBiZWVu IHNvbWUgRUNOcyB0byB0aGUgc3BlYyB0byBhZGRyZXNzIHRoaXMuIFRoZXJlIG1heSBiZSBzb21l IGV4Y2VwdGlvbnMgdG8gdGhpcyBydWxlIGJlY2F1c2UgdGhlcmUgYXJlIGFsd2F5cyBpbXBsZW1l bnRhdGlvbnMgb3V0IHRoZXJlIHRoYXQgbWF5IG5vdCBmb2xsb3csIGFuZCB0aGVyZSBhcmUgYnVn cyBpbiB0aGUgc3BlYy4gIEhvd2V2ZXIsIHRoaXMgaXMgdGhlIGludGVudGlvbiBvZiB0aGUgTlZN ZSBzcGVjIGFuZCBpdCBtYXR0ZXJzLiBUaGlzIG1lYW5zIHRoYXQsIGluIGEgbXVsdGktcGF0aGlu ZyBlbnZpcm9ubWVudCwgcmV0cnlpbmcgYW55IGNvbW1hbmQgb24gYSBkaWZmZXJlbnQgcGF0aCB3 aWxsIG5vdCBwcm92aWRlIGEgZGlmZmVyZW50IHJlc3VsdC4gUmV0cmllcyBzaG91bGQgYWxsIG9j Y3VyIG9uIHRoZSBzYW1lIGNvbnRyb2xsZXIgLSB1bmxlc3MgaXQgaXMgYSBwYXRoIHJlbGF0ZWQg c3RhdHVzLiAgVGhpcyBpcyBob3cgTlZNZSBlcnJvciBzZW1hbnRpY3Mgd29yayBhbmQgdGhpcyBp cyBhIHBhcnQgb2Ygd2hhdCB3YXMgYmVoaW5kIEtlaXRoJ3MgcGF0Y2ggLiANCg0KaHR0cHM6Ly9n aXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvc3RhYmxlL2xpbnV4LmdpdC9j b21taXQvP2lkPTM1MDM4YmZmYTg3ZGENCg0KUmV0cnlpbmcgTlZNRV9TQ19OU19OT1RfUkVBRFkg b3IgTlZNRV9TQ19DTURfSU5URVJSVVBURUQgb24gYW5vdGhlciBwYXRoIGlzIHNpbXBseSBub3Qg dGhlIHJpZ2h0IHRoaW5nIHRvIGRvLCBhbmQgcmV0dXJuaW5nIEJMS19TVFNfVEFSR0VUIGFmdGVy IGFsbCBjb21tYW5kIHJldHJpZXMsIHdpdGggQ1JEVCwgaGF2ZSBiZWVuIGV4aGF1c3RlZCBjb21t dW5pY2F0ZXMgdGhlIHJpZ2h0IHRoaW5nIHRvIHRoZSB1cHBlciBsYXllci4gRnJvbSB0aGUgcGVy c3BlY3RpdmUgb2YgbnZtZS1tdWx0aXBhdGhpbmcgS2VpdGgncyBwYXRjaCB3YXMgZXhhY3RseSB0 aGUgY29ycmVjdCB0aGluZyB0byBkby4gIEkgdW5kZXJzdGFuZCB0aGF0IHRoaXMgbWF5IGhhdmUg Y2F1c2VkIGEgYmFja3dhcmRzIGNvbXBhdGlibHkgcHJvYmxlbSB3aXRoIGRtLW11bHRpcGF0aCwg YW5kIHRoYXQncyB0aGUgb25seSByZWFzb24gd2h5IEkndmUgdGFsa2VkIGFib3V0IGJhY2tpbmcg aXQgb3V0LiAgSG93ZXZlciwgdWx0aW1hdGVseSwgSSB0aGluayBudm1lLWNvcmUgc2hvdWxkIHJl dHVybiBhbiBlcnJvciBzdGF0dXMgbGlrZSAgQkxLX1NUU19UQVJHRVQgdGhhdCBzYXlzLCBzZW1h bnRpY2FsbHkgLSB0aGUgSU8gaGFzIGZhaWxlZCwgbm8gcmV0cnkgd2lsbCB3b3JrIC0gYmVjYXVz ZSB0aGlzIGlzIHdoYXQgdGhlIE5WTWUgZXJyb3Igc2VtYW50aWNzIGFyZS4NCg0KVGFrZW4gdG9n ZXRoZXIgYm90aCBvZiB0aGVzZSBmYWN0cyBhYm91dCB0aGUgTlZNZSBwcm90b2NvbCBzZW1hbnRp Y3MgYXJlIHdoYXQncyBiZWhpbmQgbXkgcGF0Y2ggd2hpY2ggcmVtb3ZlZCBibGtfcGF0aF9lcnJv cigpIGZyb20gbnZtZV9jb21wbGV0ZV9ycSgpDQoNCmh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHVi L3NjbS9saW51eC9rZXJuZWwvZ2l0L3N0YWJsZS9saW51eC5naXQvY29tbWl0Lz9pZD03NjRlOTMz MjA5OGMwZTYwMjUxMzg2YTUwN2ZlNDZhYzkxMjc2MTIwDQoNCkkgdW5kZXJzdGFuZCB0aGF0IHRo ZXJlIGlzIGEgZ29hbCB0byB0cnkgYW5kIGF2b2lkIGhhdmluZyBkaWZmZXJlbnQgZmFpbHVyZS9y ZWNvdmVyeSBoYW5kbGluZyBzZW1hbnRpY2FsbHkgaW4gcmVzcG9uc2UgdG8gZGlmZmVyZW50IGVy cm9yIHN0YXR1cyBiZXR3ZWVuIG52bWUtbXVsdGlwYXRoIGFuZCBkbS1tdWx0aXBhdGgsIGJ1dCBO Vk1lIGVycm9yIHNlbWFudGljcyBhcmUgdHJ1bHkgZGlmZmVyZW50IGZyb20gU0NTSSBlcnJvciBz ZW1hbnRpY3MsIGFuZCB0aGV5IGFyZSBjaGFuZ2luZy4gVGhlIExpbnV4IGhvc3QgbmVlZHMgdG8g ZW5hYmxlIGFuZCBzdXBwb3J0IHRob3NlIGNoYW5nZXMgdW5oYW1wZXJlZCBieSB0aGUgcGFzdC4g V2l0aCB0aGlzIGdvYWwgaW4gbWluZCwgcmVtb3ZpbmcgdGhlIGJsa19wYXRoX2Vycm9yKCkgY29k ZSBmcm9tIG52bWUtY29yZSB3YXMgdGhlIHJpZ2h0IHRoaW5nIHRvIGRvLiAgSGFubmVzIGFuZCBJ IHN0cnVnZ2xlZCB3aXRoIHRoZSBwYXRjaCB0byB0cnkgYW5kIG1ha2UgaXQgd29yayB3aXRoIGJs a19wYXRoX2Vycm9yKCkgZm9yIHdlZWtzLiAgQXMgcG9pbnRlZCBvdXQgaW4gdGhlIHRocmVhZCBi ZWxvdywgYmxrX3BhdGhfZXJyb3IoKSBpcyB0aGUgU0NTSSBtdWx0aXBhdGhpbmcgbG9naWMgYW5k IHdlIGNhbid0IHVzZSBpdCBpbiBudm1lX2NvbXBsZXRlX3JxKCkuICBBbGwgaXQgZG9lcyBpcyBp bXBvcnQgYWxsIG9mIHRoZSBsZWdhY3kgcHJvYmxlbXMgb2YgZG0tbXVsdGlwYXRoLCBhbmQgb2Yg U0NTSSwgaW50byB0aGUgbnZtZSBjb21wbGV0aW9uL211bHRpcGF0aCBsb2dpYy4gIA0KDQpBdCBO Vk1leHByZXNzLm9yZyB3ZSBjb25zY2lvdXNseSBhZGRlZCB0aGUgQUNSRSBmZWF0dXJlIGJlY2F1 c2UgdGhlIFNDU0kgcHJvdG9jb2wgaGFkIG5vIHN1Y2ggY2FwYWJpbGl0eS4gIFRoaXMgaXMgc29t ZXRoaW5nIHdoaWNoIGhhcyBwbGFndWVkIFNDU0kgaW1wbGVtZW50YXRpb25zIGZvciB5ZWFycywg IGFuZCBhbGwga2luZHMgb2YgdHJpY2tzIGhhdmUgYmVlbiBwbGF5ZWQsIGluIGJvdGggdGhlIFND U0kgaG9zdCBzdGFjayBhbmQgaW4gU0NTSSB0YXJnZXQgc3RhY2ssIHRvIGRlYWwgd2l0aCB0aGUg cHJvYmxlbS4gVGhlIGdvYWwgb2YgTlZNZSBpcyB0byBjcmVhdGUgYSBiZXR0ZXIgYmxvY2sgc3Rv cmFnZSBwcm90b2NvbCBhbmQgQUNSRSBpcyBqdXN0IG9uZSBleGFtcGxlIG9mIG1hbnkgcGxhY2Vz IHdoZXJlIHRoZSBpbmR1c3RyeSBpcyB0cnlpbmcgdG8gZG8gdGhpcy4gIFRoZXJlIGFyZSBwbGFu cyB0byBpbnRyb2R1Y2UgbW9yZSBIb3N0IEJlaGF2aW9yIFN1cHBvcnQgZmVhdHVyZXMgaW4gdGhl IGZ1dHVyZS4gIA0KDQpJbiB0aGUgZW5kLCB3ZSBhcmUgY29uc2Npb3VzbHkgY2hhbmdpbmcgTlZN ZSwgYm90aCBpbiB0aGUgc3BlYyBhbmQgaW4gaXRzIGltcGxlbWVudGF0aW9uLCB0byBtYWtlIGl0 IGRpZmZlcmVudCBmcm9tIFNDU0kuIEkgdGhpbmsgdGhpcyBpcyB3aGF0J3MgYXQgdGhlIGJvdHRv bSBvZiB0aGUgY2hhbmdlcyBkaXNjdXNzZWQgaW4gdGhpcyB0aHJlYWQsIGFuZCB0aGlzIGlzIHdo eSBzbyBtYW55IHBlb3BsZSBhcmUgc28gcGFzc2lvbmF0ZSBhYm91dCB0aGlzLiAgV2UgZG9uJ3Qg d2FudCB0byB0dXJuIE5WTWUgaW50byBTQ1NJLiAgSSBrbm93IEkgZG9uJ3Qgd2FudCB0by4NCg0K L0pvaG4NCg0KXk5vdGU6IChtYXliZSBhIDIgc2Vjb25kIGRlbGF5IHNvdW5kcyB1bnJlYXNvbmFi bGUgZm9yIGEgZmxhc2ggc3RvcmFnZSBkZXZpY2UgYnV0IHRoZXJlIGltcGxlbWVudG9ycyB0aGF0 IHRoYXQgd2FudCB0byB1c2UgTlZNZSB3aXRoIHNwaW5uaW5nIGRpc2tzLi4uIHNvIHRoZSBDRFJU IGdpdmVzIHRoZW0gZXhhY3RseSB3aGF0IHRoZXkgbmVlZCkuICANCg0K77u/T24gOC83LzIwLCA3 OjM1IFBNLCAiU2FnaSBHcmltYmVyZyIgPHNhZ2lAZ3JpbWJlcmcubWU+IHdyb3RlOg0KDQogICAg Pj4gSGV5IE1pa2UsDQogICAgPj4NCiAgICA+Pj4+IFRoZSBwb2ludCBpczogYmxrX3BhdGhfZXJy b3IoKSBoYXMgbm90aGluZyB0byBkbyB3aXRoIE5WTWUgZXJyb3JzLg0KICAgID4+Pj4gVGhpcyBp cyBkbS1tdWx0aXBhdGggbG9naWMgc3R1Y2sgaW4gdGhlIG1pZGRsZSBvZiB0aGUgTlZNZSBlcnJv cg0KICAgID4+Pj4gaGFuZGxpbmcgY29kZS4NCiAgICA+Pj4NCiAgICA+Pj4gTm8sIGl0IGlzIGEg bWVhbnMgdG8gaGF2ZSBtdWx0aXBsZSBzdWJzeXN0ZW1zICh0byB0aGlzIHBvaW50IGJvdGggU0NT SQ0KICAgID4+PiBhbmQgTlZNZSkgZG9pbmcgdGhlIGNvcnJlY3QgdGhpbmcgd2hlbiB0cmFuc2xh dGluZyBzdWJzeXN0ZW0gc3BlY2lmaWMNCiAgICA+Pj4gZXJyb3IgY29kZXMgdG8gQkxLX1NUUyBj b2Rlcy4NCiAgICA+Pg0KICAgID4+IE5vdCBleGFjdGx5LCBkb24ndCBmaW5kIGFueSB1c2Ugb2Yg dGhpcyBpbiBzY3NpLiBUaGUgcHVycG9zZSBpcyB0byBtYWtlDQogICAgPj4gc3VyZSB0aGF0IG52 bWUgYW5kIGRtIHNwZWFrIHRoZSBzYW1lIGxhbmd1YWdlLg0KICAgID4NCiAgICA+IFNDU0kgZG9l c24ndCBuZWVkIHRvIGRvIGFkZGl0aW9uYWwgd29yayB0byB0cmFpbiBhIG11bHRpcGF0aCBsYXll cg0KICAgID4gYmVjYXVzZSBkbS1tdWx0aXBhdGggX2lzXyBTQ1NJJ3MgbXVsdGlwYXRoaW5nIGlu IExpbnV4Lg0KDQogICAgQWdyZWUuDQoNCiAgICA+IFNvIGVuc3VyaW5nIFNDU0kgcHJvcGVybHkg Y2xhc3NpZmllcyBpdHMgZXJyb3IgY29kZXMgaGFwcGVucyBhcyBhDQogICAgPiBzaWRlLWVmZmVj dCBvZiBlbnN1cmluZyBjb250aW51ZWQgbXVsdGlwYXRoIGZ1bmN0aW9uYWxpdHkuDQogICAgPg0K ICAgID4gSGFubmVzIGludHJvZHVjZWQgYWxsIHRoZXNlIGRpZmZlcmVudGlhdGVkIGVycm9yIGNv ZGVzIGluIGJsb2NrIGNvcmUNCiAgICA+IGJlY2F1c2Ugb2YgU0NTSS4gIE5WTWUgaXMgbWVhbnQg dG8gYnVpbGQgb24gdGhlIGluZnJhc3RydWN0dXJlIHRoYXQgd2FzDQogICAgPiBlc3RhYmxpc2hl ZC4NCg0KICAgIFllcywgZXhhY3RseSBteSBwb2ludC4gYmxrX3BhdGhfZXJyb3IgaXMgZGVzaWdu ZWQgdG8gbWFrZSBudm1lIGFuZA0KICAgIGRtLW11bHRpcGF0aCBzcGVhayB0aGUgc2FtZSBsYW5n dWFnZS4NCg0KICAgID4+PiBJZiB5b3UsIG9yIG90aGVycyB5b3UgbmFtZSBkcm9wIGJlbG93LCB1 bmRlcnN0b29kIHRoZSBwb2ludCB3ZSB3b3VsZG4ndA0KICAgID4+PiBiZSBoYXZpbmcgdGhpcyBj b252ZXJzYXRpb24uICBZb3UnZCBhY2NlcHQgdGhlIHBvaW50IG9mIGJsa19wYXRoX2Vycm9yKCkN CiAgICA+Pj4gdG8gYmUgdmFsaWQgYW5kIHJlcXVpcmVkIGNvZGlmaWNhdGlvbiBvZiB3aGF0IGNv bnN0aXR1dGVzIGEgcmV0cnlhYmxlDQogICAgPj4+IHBhdGggZXJyb3IgZm9yIHRoZSBMaW51eCBi bG9jayBsYXllci4NCiAgICA+Pg0KICAgID4+IFRoaXMgaW5jaWRlbnQgaXMgYSBjYXNlIHdoZXJl IHRoZSBzcGVjaWZpYyBudm1lIHN0YXR1cyB3YXMgZGVzaWduZWQNCiAgICA+PiB0byByZXRyeSBv biB0aGUgc2FtZSBwYXRoIHJlc3BlY3RpbmcgdGhlIGNvbnRyb2xsZXIgcmV0cnkgZGVsYXkuDQog ICAgPj4gQW5kIGJlY2F1c2UgbnZtZSB1c2VkIGJsa19wYXRoX2Vycm9yIGF0IHRoZSB0aW1lIGl0 IGNhdXNlZCB1cyB0byB1c2UgYQ0KICAgID4+IG5vbi1yZXRyeWFibGUgc3RhdHVzIHRvIGdldCBh cm91bmQgdGhhdC4gR3JhbnRlZCwgbm8gb25lIGhhZA0KICAgID4+IGRtLW11bHRpcGF0aCBpbiBt aW5kLg0KICAgID4+DQogICAgPj4gU28gaW4gYSBzZW5zZSwgdGhlcmUgaXMgY29uc2Vuc3VzIG9u IGNoYW5naW5nIHBhdGNoIDM1MDM4YmZmYTg3ZGENCiAgICA+PiBfYmVjYXVzZV8gbnZtZSBubyBs b25nZXIgdXNlcyBibGtfcGF0aF9lcnJvci4gT3RoZXJ3aXNlIGl0IHdvdWxkIGJyZWFrLg0KICAg ID4NCiAgICA+ICJicmVhayIgbWVhbmluZyBpdCB3b3VsZCBkbyBmYWlsb3ZlciBpbnN0ZWFkIG9m IHRoZSBtb3JlIG9wdGltYWwgbG9jYWwNCiAgICA+IHJldHJ5IHRvIHRoZSBzYW1lIGNvbnRyb2xs ZXIuDQogICAgPg0KICAgID4gSSBzZWUuICBXaXNoIHRoZSBoZWFkZXIgZm9yIGNvbW1pdCAzNTAz OGJmZmE4N2RhIHRvdWNoZWQgb24gdGhpcyBldmVuIGENCiAgICA+IGxpdHRsZSBiaXQgOykNCg0K ICAgIEkgdGhpbmsgaXQgZGlkLCBidXQgbWF5YmUgZGlkbid0IHB1dCB0b28gbXVjaCBlbXBoYXNp cyBvbiBpdC4NCg0KICAgID4gQnV0IEFGQUlDVCB0aGUgcGF0Y2ggSSBwcm92aWRlZCBkb2Vzbid0 IGNvbXByb21pc2UgcHJvcGVyIGxvY2FsIHJldHJ5IC0tDQogICAgPiBhcyBsb25nIGFzIHdlIGZp cnN0IGZpeCBudm1lX2Vycm9yX3N0YXR1cygpIHRvIHJldHVybiBhIHJldHJ5YWJsZQ0KICAgID4g QkxLX1NUUyBmb3IgTlZNRV9TQ19DTURfSU5URVJSVVBURUQgLS0gd2hpY2ggSSBhc3N1bWVkIGFz IGEgcHJlcmVxLg0KICAgID4NCiAgICA+IFRoaW5rIG9mIGJsa19wYXRoX2Vycm9yKCkgYXMgYSBt b3JlIGNvYXJzZS1ncmFpbmVkICJpcyB0aGlzIHJldHJ5YWJsZSBvcg0KICAgID4gYSBoYXJkIGZh aWx1cmU/IiBjaGVjay4gIFNvIGZvciBOVk1FX1NDX0NNRF9JTlRFUlJVUFRFRCwNCiAgICA+IG52 bWVfZXJyb3Jfc3RhdHVzKCkgX3Nob3VsZF8gcmVzcG9uZCB3aXRoIHNvbWV0aGluZyByZXRyeWFi bGUgKEknZA0KICAgID4gcHJlZmVyIEJMS19TVFNfUkVTT1VSQ0UgdG8gYmUgaG9uZXN0KS4NCg0K ICAgIEJ1dCBibGtfcGF0aF9lcnJvciBzZW1hbnRpY2FsbHkgbWVhbiAiaXMgdGhpcyBhIHBhdGhp bmcgZXJyb3IiLCBvciBhdA0KICAgIGxlYXN0IHRoYXQgd2hhdCBpdHMgbmFtZSBzdWdnZXN0Lg0K DQogICAgPiBBbmQgdGhlbiBudm1lX2ZhaWxvdmVyX3JlcSgpIGlzIGZpbmVyLWdyYWluZWQ7IGJ5 IHJldHVybmluZyBmYWxzZSBpdCBub3cNCiAgICA+IGFsbG93cyBzaG9ydC1jaXJjdWl0aW5nIGZh aWxvdmVyIGFuZCByZXZlcnRpbmcgYmFjayB0byBOVk1lJ3Mgbm9ybWFsDQogICAgPiBjb250cm9s bGVyIGJhc2VkIGVycm9yIHJlY292ZXJ5IC0tIHdoaWNoIGl0IGRvZXMgZm9yDQogICAgPiBOVk1F X1NDX0NNRF9JTlRFUlJVUFRFRCBkdWUgdG8gImRlZmF1bHQiIGNhc2UgaW4gbnZtZV9mYWlsb3Zl cl9yZXEoKS4NCiAgICA+DQogICAgPiBBbmQgdGhlbiB0aGUgcHJldmlvdXMgbnZtZV9lcnJvcl9z dGF0dXMoKSBjbGFzc2lmaWNhdGlvbiBvZiByZXRyeWFibGUNCiAgICA+IEJMS19TVFMgb2J2aW91 c2x5IG5ldmVyIGdldHMgcmV0dXJuZWQgdXAgdGhlIElPIHN0YWNrOyBpdCBnZXRzIHRocm93bg0K ICAgID4gYXdheS4NCg0KICAgIEkgc2VlIHdoYXQgeW91IGFyZSBzYXlpbmcuIFRoZSBpc3N1ZSBp cyB0aGF0IHRoZSBjb2RlIGJlY29tZXMNCiAgICBjb252b2x1dGVkIChpdCdzIGEgcGF0aGluZyBl cnJvciwgb2ggd2FpdCwgbm8gaXRzIG5vdCBhIHBhdGhpbmcgZXJyb3IpLg0KDQogICAgPj4+IEFu eSBCTEtfU1RTIG1hcHBpbmcgb2YgTlZNZSBzcGVjaWZpYyBlcnJvciBjb2RlcyB3b3VsZCBuZWVk IHRvIG5vdCBzY3Jldw0KICAgID4+PiB1cCBieSBjYXRlZ29yaXppbmcgYSByZXRyeWFibGUgZXJy b3IgYXMgbm9uLXJldHJ5YWJsZSAoYW5kIHZpY2UtdmVyc2EpLg0KICAgID4+DQogICAgPj4gQnV0 IGl0IGlzIGEgc3BlY2lhbCB0eXBlIG9mIHJldHJ5YWJsZS4gVGhlcmUgaXMgbm90aGluZyB0aGF0 IGZpdHMgdGhlDQogICAgPj4gc2VtYW50aWNzIG9mIHRoZSBjdXJyZW50IGJlaGF2aW9yLg0KICAg ID4NCiAgICA+IEkgYWdyZWUuICBCdXQgdGhhdCdzIGZpbmUgYWN0dWFsbHkuDQogICAgPg0KICAg ID4gQW5kIHRoaXMgaXNzdWUgaXMgdGhlIHBvc3Rlci1jaGlsZCBmb3Igd2h5IHByb3Blcmx5IHN1 cHBvcnRpbmcgYSBkdWFsaXR5DQogICAgPiBvZiBkcml2ZXItbGV2ZWwgdnMgdXBwZXIgbGV2ZWwg bXVsdGlwYXRoaW5nIGNhcGFiaWxpdGllcyBpcyBwcmV0dHkgbXVjaA0KICAgID4gaW1wb3NzaWJs ZSB1bmxlc3MgYSBjbGVhbiBkZXNpZ24gZmFjdG9ycyBvdXQgdGhlIGRpZmZlcmVudCBlcnJvciBj bGFzc2VzDQogICAgPiAtLSBhbmQgbG9jYWwgZXJyb3IgcmV0cnkgaXMgaGFuZGxlZCBiZWZvcmUg cHVudGluZyB0byBoaWdoZXIgbGV2ZWwNCiAgICA+IGZhaWxvdmVyIHJldHJ5LiAgVGhpbmsgaWYg TlZNZSB3ZXJlIHRvIGFkb3B0IGEgYml0IG1vcmUgZGlzY2lwbGluZWQNCiAgICA+ICJsb2NhbCB0 aGVuIGZhaWxvdmVyIiBlcnJvciBoYW5kbGluZyBpdCBhbGwgZ2V0cyBlYXNpZXIuDQoNCiAgICBJ IGRvbid0IHRoaW5rIHB1bnRpbmcgYmVmb3JlIGlzIGVhc2llciwgYmVjYXVzZSB3ZSBkbyBhIGxv Y2FsIHJldHJ5IGlmOg0KICAgIC0gbm8gbXVsdGlwYXRoaW5nIHN3IG9uIHRvcA0KICAgIC0gcmVx dWVzdCBuZWVkcyByZXRyeSAoZS5nLiBubyBETlIsIG5vdHJldHJ5IGlzIG9mZiBldGMuLikNCiAg ICAtIG52bWUgZXJyb3IgaXMgbm90IHBhdGhpbmcgcmVsYXRlZCAobnZtZV9mYWlsb3Zlcl9yZXEg cmV0dXJuZWQgZmFsc2UpDQoNCiAgICA+IFRoaXMgbG9jYWwgcmV0cnkgX2lzXyBOVk1lIHNwZWNp ZmljLiAgTlZNZSBzaG91bGQganVzdCBvd24gcmV0cnlpbmcgb24NCiAgICA+IHRoZSBzYW1lIGNv bnRyb2xsZXIgbm8gbWF0dGVyIHdoYXQgKEknbGwgaG9wZSB0aGF0IHN1Y2ggcmV0cnkgaGFzDQog ICAgPiBhd2FyZW5lc3MgdG8gbm90IHJldHJ5IGluZGVmaW5pdGVseSB0aG91Z2ghKS4NCg0KICAg IGl0IHdpbGwgcmV0cnkgdW50aWwgdGhlIHJldHJ5IGxpbWl0Lg0KDQogICAgPiAgQW5kIHRoaXMg aGFzIG5vdGhpbmcgdG8NCiAgICA+IGRvIHdpdGggbXVsdGlwYXRoaW5nLCBzbyB0aGUgbG9naWMg dG8gaGFuZGxlIGl0IHNob3VsZG4ndCBiZSB0cmFwcGVkIGluDQogICAgPiBudm1lX2ZhaWxvdmVy X3JlcSgpLg0KDQogICAgV2VsbCBnaXZlbiB0aGF0IG52bWVfZmFpbG92ZXJfcmVxIGFscmVhZHkg bWF5IG5vdCBhY3R1YWxseSBmYWlsb3ZlciB0aGlzDQogICAgbWFrZXMgc29tZSBzZW5zZSB0byBt ZSAoYWx0aG91Z2ggSSBkaWQgaGF2ZSBzb21lIHJlc2lzdGFuY2UgdG8gbWFrZSBpdA0KICAgIHRo YXQgd2F5IGluIHRoZSBmaXJzdCBwbGFjZSwgYnV0IHdhcyBjb252aW5jZWQgb3RoZXJ3aXNlKS4N Cg0KICAgID4gSSB0aGluayBOVk1lIGNhbiBlYXNpbHkgZml4IHRoaXMgYnkgaGF2aW5nIGFuIGVh cmxpZXIgc3RhZ2Ugb2YgY2hlY2tpbmcsDQogICAgPiBlLmcuIG52bWVfbG9jYWxfcmV0cnlfcmVx KCksIHRoYXQgc2hvcnRjaXJjdWl0cyBldmVyIGdldHRpbmcgdG8NCiAgICA+IGhpZ2hlci1sZXZl bCBtdWx0aXBhdGhpbmcgY29uc2lkZXJhdGlvbiAoYmUgaXQgbmF0aXZlIE5WTWUgb3IgRE0NCiAg ICA+IG11bHRpcGF0aGluZykgZm9yIGNhc2VzIGxpa2UgTlZNRV9TQ19DTURfSU5URVJSVVBURUQu DQogICAgPiBUbyBiZSBjbGVhcjogdGhlICJkZWZhdWx0IiBjYXNlIG9mIG52bWVfZmFpbG92ZXJf cmVxKCkgdGhhdCByZXR1cm5zDQogICAgPiBmYWxzZSB0byBmYWxsYmFjayB0byBOVk1lJ3MgImxv Y2FsIiBub3JtYWwgTlZNZSBlcnJvciBoYW5kbGluZyAtLSB0aGF0DQogICAgPiBjYW4gc3RheS4u IGJ1dCBhIG1vcmUgZXhwbGljaXQgaGFuZGxpbmcgb2YgY2FzZXMgbGlrZQ0KICAgID4gTlZNRV9T Q19DTURfSU5URVJSVVBURUQgc2hvdWxkIGJlIGFkZGVkIHRvIGEgbnZtZV9sb2NhbF9yZXRyeV9y ZXEoKQ0KICAgID4gY2hlY2sgdGhhdCBoYXBwZW5zIGJlZm9yZSBudm1lX2ZhaWxvdmVyX3JlcSgp IGluIG52bWVfY29tcGxldGVfcnEoKS4NCg0KICAgIEkgZG9uJ3QgbmVjZXNzYXJpbHkgYWdyZWUg d2l0aCBoYXZpbmcgYSBkZWRpY2F0ZWQgbnZtZV9sb2NhbF9yZXRyeV9yZXEoKS4NCiAgICBhIHJl cXVlc3QgdGhhdCBpc24ndCBmYWlsZWQgb3ZlciwgZ29lcyB0byBsb2NhbCBlcnJvciBoYW5kbGlu ZyAocmV0cnkgb3INCiAgICBub3QpLiBJIGFjdHVhbGx5IHRoaW5rIHRoYXQganVzdCBhZGRpbmcg dGhlIGNvbmRpdGlvbiB0bw0KICAgIG52bWVfY29tcGxldGVfcmVxIGFuZCBoYXZpbmcgbnZtZV9m YWlsb3Zlcl9yZXEgcmVqZWN0IGl0IHdvdWxkIHdvcmsuDQoNCiAgICBLZWl0aD8NCg0KICAgID4+ PiBBbnl3YXksIG5vIG5ldyBCTEtfU1RTIGlzIG5lZWRlZCBhdCB0aGlzIHBvaW50LiAgTW9yZSBk aXNjaXBsaW5lIHdpdGgNCiAgICA+Pj4gaG93IE5WTWUncyBlcnJvciBoYW5kbGluZyBpcyBjaGFu Z2VkIGlzLg0KICAgID4+DQogICAgPj4gUGxlYXNlIHJlYWQgdGhlIGFib3ZlLg0KICAgID4NCiAg ICA+IEkgYWdyZWUgd2UnZCBuZWVkIGEgbmV3IEJMS19TVFMgb25seSBpZiBOVk1lIGNhbm5vdCBi ZSBtYWRlIHRvIHRyYXANCiAgICA+IE5WTUVfU0NfQ01EX0lOVEVSUlVQVEVEIGZvciBsb2NhbCBy ZXRyeSBfYmVmb3JlXyBjb25zaWRlcmluZyBwYXRoDQogICAgPiBmYWlsb3Zlci4NCg0KICAgIE5v dCBzdXJlIHRoYXQgaXMgYmV0dGVyLCBidXQgd2UgY2FuIHNlZSBhIHBhdGNoIGZpcnN0IHRvIGRl dGVybWluZS4NCg0KICAgID4+PiBJZiBOVk1lIHdhbnRzIHRvIGVuc3VyZSBpdHMNCiAgICA+Pj4g aW50ZXJmYWNlIGlzbid0IGJyb2tlbiByZWd1bGFybHkgaXQgX3Nob3VsZF8gdXNlIGJsa19wYXRo X2Vycm9yKCkgdG8NCiAgICA+Pj4gdmFsaWRhdGUgZnV0dXJlIG52bWVfZXJyb3Jfc3RhdHVzKCkg Y2hhbmdlcy4gIE1pc2NhdGVnb3JpemluZyBOVk1lDQogICAgPj4+IGVycm9ycyB0byB1cHBlciBs YXllcnMgaXMgYSBidWcgLS0gbm90IG9wZW4gZm9yIGRlYmF0ZS4NCiAgICA+Pg0KICAgID4+IEFn YWluLCBkb24ndCBhZ3JlZSBpcyBhIE1pc2NhdGVnb3JpemF0aW9uIG5vciBhIGJ1ZywgaXRzIGp1 c3Qgc29tZXRoaW5nDQogICAgPj4gdGhhdCBpcyBOVk1lIHNwZWNpZmljLg0KICAgID4NCiAgICA+ IFJpZ2h0IEkgdW5kZXJzdGFuZC4NCiAgICA+DQogICAgPiBUaGluayBpdCBzYWZlIHRvIGFzc3Vt ZSB0aGVzZSB0eXBlcyBvZiBkZXRhaWxzIGFyZSB3aHkgQ2hyaXN0b3BoIHdhbnRlZA0KICAgID4g dG8gYXZvaWQgdGhlIG5vdGlvbiBvZiBuYXRpdmUgTlZNZSBhbmQgRE0gbXVsdGlwYXRoaW5nIGhh dmluZw0KICAgID4gY29tcGF0aWJsZSBlcnJvciBoYW5kbGluZy4gIFRoZXJlIHdhcyBzb21lIHdp c2RvbSB3aXRoIHRoYXQgcG9zaXRpb24NCiAgICA+IChlc3BlY2lhbGx5IHdpdGggbmF0aXZlIE5W TWUgZ29hbHMgaW4gbWluZCkuICBCdXQgaWYgdGhpbmdzIGFyZSB0d2Vha2VkDQogICAgPiBzbGln aHRseSB0aGVuIGJvdGggY2FtcHMgX2Nhbl8gYmUgbWFkZSBoYXBweS4NCiAgICA+DQogICAgPiBU aGVyZSBqdXN0IG5lZWRzIHRvIGJlIGEgd2lsbGluZ25lc3MgdG8gd29yayB0aHJvdWdoIHRoZSBk ZXRhaWxzLA0KICAgID4gZGVmZW5zaXZlbmVzcyBuZWVkcyB0byBiZSBzaGVkIG9uIGJvdGggc2lk ZXMsIHNvIGNvbnN0cnVjdGl2ZQ0KICAgID4gcmV2aWV3L2NvbnNpZGVyYXRpb24gb2YgcHJvYmxl bXMgY2FuIGhhcHBlbi4NCg0KICAgIEFncmVlZC4NCg0KICAgID4gVGhpbmsgdGhhdCBoYXMgYWxy ZWFkeQ0KICAgID4gaGFwcGVuZWQgaGVyZSB3aXRoIG91ciBleGNoYW5nZS4gIEknbSBvcGVuIHRv IGludmVzdGluZyBlZmZvcnQgaGVyZSBpZg0KICAgID4gb3RoZXJzIGFyZSB1cCBmb3IgaHVtb3Jp bmcgbXkgYXR0ZW1wdCB0byBleHBsb3JlIGZpeGluZyB0aGUgaXNzdWVzIGluIGENCiAgICA+IG11 dHVhbGx5IGJlbmVmaWNpYWwgd2F5LiAgV2hhdCdzIHRoZSB3b3JzdCB0aGF0IGNhbiBoYXBwZW4/ ICBNeSBzaW1wbGUNCiAgICA+IHBhdGNoZXMgbWlnaHQgY29udGludWUgdG8gYmUgaWdub3JlZD8g OykNCg0KICAgIEkgd29uJ3QgaWdub3JlIGl0LCBhbmQgSSBhcG9sb2dpemUgb2YgaWdub3Jpbmcg dGhlIG9yaWdpbmFsIHBhdGNoDQogICAgcG9zdGVkLCBJIGd1ZXNzIGl0IGZsZXcgdW5kZXIgdGhl IHJhZGFyLi4uDQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkxpbnV4LW52bWUgbWFpbGluZyBsaXN0CkxpbnV4LW52bWVAbGlzdHMuaW5mcmFkZWFkLm9y ZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LW52bWUK From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Meneghini, John" Subject: Re: nvme: restore use of blk_path_error() in nvme_complete_rq() Date: Sat, 8 Aug 2020 21:08:44 +0000 Message-ID: <842F6313-F3CC-46AC-A15A-A44E50C5BD18@netapp.com> References: <20200805152905.GB1982647@dhcp-10-100-145-180.wdl.wdc.com> <255d55e3-f824-a968-e478-3efeda095696@huawei.com> <20200806142625.GA3075319@dhcp-10-100-145-180.wdl.wdc.com> <729820BC-5F38-4E22-A83A-862E57BAE201@netapp.com> <20200806184057.GA27858@redhat.com> <20200806191943.GA27868@redhat.com> <6B826235-C504-4621-B8F7-34475B200979@netapp.com> <20200807000755.GA28957@redhat.com> <510f5aff-0437-b1ce-f7ab-c812edbea880@grimberg.me> <20200807045015.GA29737@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Language: en-US Content-ID: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dm-devel-bounces@redhat.com Errors-To: dm-devel-bounces@redhat.com To: Sagi Grimberg , Mike Snitzer Cc: "linux-nvme@lists.infradead.org" , Christoph Hellwig , "dm-devel@redhat.com" , Ewan Milne , Chao Leng , Busch , "Meneghini, John" , Keith List-Id: dm-devel.ids SSdkIGxpa2UgdG8gdXAgbGV2ZWwgdGhpcyB3aG9sZSBjb252ZXJzYXRpb24gZm9yIGEgbWludXRl IGJ5IHRhbGtpbmcgYWJvdXQgZXhhY3RseSB3aGF0IEFDUkUgZG9lcy4KClRoZSBnZW5lc2lzIG9m IHRoZSBjaGFuZ2VzIGRpc2N1c3NlZCBpbiB0aGlzIHRocmVhZCBpcyBOVk1lIFRQLTQwMzMgLSBF bmhhbmNlZCBDb21tYW5kIFJldHJ5LiAgWW91IGNhbiBmaW5kIGEgY29weSBvZiB0aGlzIFRQIGhl cmU6CgpodHRwOi8vbnZtZXhwcmVzcy5vcmcvd3AtY29udGVudC91cGxvYWRzL05WTS1FeHByZXNz LTEuMy1SYXRpZmllZC1UUHMuemlwCgpUaGlzIHRlY2huaWNhbCBwcm9wb3NhbCBhZGRlZCBhIGNv bW1hbmQgcmV0cnkgZGVsYXkgZmVhdHVyZSB3aGljaCBpcyBwcm9ncmFtbWVkIGJ5IHRoZSBjb250 cm9sbGVyLiBUaGUgY29udHJvbGxlciBhZHZlcnRpc2VzIGEgc2V0IG9mIDMgZGlmZmVyZW50IHRp bWluZyBkZWxheXMgdGhvdWdoIHRoZSBJZGVudGlmeSBDb250cm9sbGVyIGRhdGEgc3RydWN0dXJl IENSRFR7MS0yfSBmaWVsZHMuICBUbyBtYWtlIHVzZSBvZiB0aGVzZSBkZWxheSBmaWVsZHMgYSBu ZXcgQ1JEIGZpZWxkIHdhcyBhZGRlZCB0byB0aGUgQ1FFIFN0YXR1cyBGaWVsZC4gIFRoaXMgYWxs b3dzIHRoZSBOVk1lIGNvbnRyb2xsZXIgdG8gc3BlY2lmeSBleGFjdGx5IGhvdyBsb25nIGEgY29t bWFuZCByZXRyeSBzaG91bGQgYmUgZGVsYXllZCwgd2l0aCAzIHBvc3NpYmxlIHRpbWVycyB0aGF0 IGl0IGNob29zZXMgYW5kIGNvbnRyb2xzLiAgQ1JEVHMgY2FuIHJhbmdlIGZyb20gMTAwIG1pbGxp c2Vjb25kcyB0byA2NTU5IHNlY29uZHMuICBCZWNhdXNlIHRoaXMgY2FwYWJpbGl0eSBjYW4gaGF2 ZSBzdWNoIGEgcmFkaWNhbCBlZmZlY3Qgb24gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgYSBuZXcg TlZNZSBGZWF0dXJlIElkZW50aWZpZXIgd2FzIGFkZGVkIChIb3N0IEJlaGF2aW9yIFN1cHBvcnQg LSBGZWF0dXJlIElEIDE2aCkgd2l0aCBhbiBBZHZhbmNlZCBDb21tYW5kIFJldHJ5IEVuYWJsZSAo QUNSRSkgYml0LiAgVGhpcyBhbGxvd3MgdGhlIGhvc3QgdG8gZW5hYmxlIG9yIGRpc2FibGUgdGhl IGZlYXR1cmUuIAoKV2l0aCB0aGlzIGJhY2tncm91bmQgdGhlcmUgYXJlIGEgY291cGxlIG9mIG1p c2NvbmNlcHRpb25zIGluIHRoaXMgdGhyZWFkIHdoaWNoIEknZCBsaWtlIHRvIGFkZHJlc3MuICAK ClRoZSBmaXJzdCBpczogQUNSRSBoYXMgbm90aGluZyB0byBkbyB3aXRoIHRoZSBOVk1FX1NDX0NN RF9JTlRFUlJVUFRFRCBzdGF0dXMuICBZZXMsIHRoaXMgbmV3IGVycm9yIHN0YXR1cyB3YXMgYWRk ZWQgYXMgYSBwYXJ0IG9mIFRQLTQwMzMgYnV0IHRoZSBDUkQgZmllbGQgb2YgdGhlIENRRSBzdGF0 dXMgY2FuIGJlIHNldCBieSB0aGUgY29udHJvbGxlciB3aXRoICphbnkqIE5WTWUgZXJyb3Igc3Rh dHVzLiBBcyBsb25nIGFzIHRoZSBETlIgYml0IGlzIG5vdCBzZXQgdGhlIENvbW1hbmQgUmV0cnkg RGVsYXkgY2FuIGNvbWUgaW50byBlZmZlY3QuIFRoaXMgaXMgaG93IHRoZSBzcGVjIGlzIHdyaXR0 ZW4gYW5kIHRoaXMgaXMgZXhhY3RseSBob3cgaXQgaGFzIGJlZW4gaW1wbGVtZW50ZWQgaW4gdGhl IGNvcmUgbnZtZV9jb21wbGV0ZV9ycSgpIGZ1bmN0aW9uCihhZnRlciBjaGFuZ2UgNTA3ZmU0NmFj OTEyNzYxMjApLiBGb3IgZXhhbXBsZSwgdGhlIGNvbnRyb2xsZXIgY2FuIHJldHVybiBOVk1FX1ND X05TX05PVF9SRUFEWSB3aXRoIGEgQ1JEVCBvZiAyIHNlY29uZHMuXiAgU28gQ0RSVCBuZWVkcyB0 byBiZSBzdXBwb3J0ZWQgd2l0aCBhbGwgZXJyb3Igc3RhdHVzIGlmIHRoZSBob3N0IGlzIGdvaW5n IHRvIGVuYWJsZSBBQ1JFLCBhbmQgSSB0aGluayBpdCdzIGEgYmlnIG1pc3Rha2UgdG8gZ2V0IGh1 bmcgdXAgb3ZlciB0aGUgTlZNRV9TQ19DTURfSU5URVJSVVBURUQgc3RhdHVzIHRyYW5zbGF0aW9u LiBUaGUgTlZNRV9TQ19DTURfSU5URVJSVVBURUQgc3RhdHVzIHdhcyBvbmx5IGFkZGVkIHRvIHRo ZSBzcGVjIHRvIHByb3ZpZGUgYSBnZW5lcmFsIHB1cnBvc2UgImJ1c3kiIHN0YXR1cywgc29tZXRo aW5nIHRoYXQgd2FzIG1pc3NpbmcgZnJvbSBOVk1lLCBhbmQgZm9jdXNpbmcgeW91ciBzb2x1dGlv biBvbiBOVk1FX1NDX0NNRF9JTlRFUlJVUFRFRCwgb3IgYW55IG90aGVyIHNwZWNpZmljIE5WTWUg ZXJyb3Igc3RhdHVzLCBpcyB0aGUgd3JvbmcgdGhpbmcgdG8gZG8uICBUaGVyZSBpcyBhIG11Y2gg bGFyZ2VyIGNoYW5nZSBpbiBlcnJvciBzZW1hbnRpY3MgZ29pbmcgb24gd2l0aCBBQ1JFIHRoYW4g anVzdCB0aGlzIHNpbmdsZSBlcnJvci4KClRoZSBzZWNvbmQgaXM6ICBBbGwgTlZNZSBlcnJvciBz dGF0dXMgdGhhdCBkbyBub3QgaGF2ZSBhIFN0YXR1cyBDb2RlIFR5cGUgb2YgM2ggKFBhdGggUmVs YXRlZCBTdGF0dXMpIGFyZSBzdWJzeXN0ZW0gc2NvcGVkLiBUaGlzIGlzIGEgdG9waWMgdGhhdCBo YXMgZ29uZSB0aHJvdWdoIHNvbWUgZGViYXRlIG9uIHRoZSBsaW51eC1udm1lIG1haWxpbmcgbGlz dCBhbmQgYXQgTlZNZXhwcmVzcy5vcmc7IGFuZCB0aGVyZSBoYXZlIGJlZW4gc29tZSBFQ05zIHRv IHRoZSBzcGVjIHRvIGFkZHJlc3MgdGhpcy4gVGhlcmUgbWF5IGJlIHNvbWUgZXhjZXB0aW9ucyB0 byB0aGlzIHJ1bGUgYmVjYXVzZSB0aGVyZSBhcmUgYWx3YXlzIGltcGxlbWVudGF0aW9ucyBvdXQg dGhlcmUgdGhhdCBtYXkgbm90IGZvbGxvdywgYW5kIHRoZXJlIGFyZSBidWdzIGluIHRoZSBzcGVj LiAgSG93ZXZlciwgdGhpcyBpcyB0aGUgaW50ZW50aW9uIG9mIHRoZSBOVk1lIHNwZWMgYW5kIGl0 IG1hdHRlcnMuIFRoaXMgbWVhbnMgdGhhdCwgaW4gYSBtdWx0aS1wYXRoaW5nIGVudmlyb25tZW50 LCByZXRyeWluZyBhbnkgY29tbWFuZCBvbiBhIGRpZmZlcmVudCBwYXRoIHdpbGwgbm90IHByb3Zp ZGUgYSBkaWZmZXJlbnQgcmVzdWx0LiBSZXRyaWVzIHNob3VsZCBhbGwgb2NjdXIgb24gdGhlIHNh bWUgY29udHJvbGxlciAtIHVubGVzcyBpdCBpcyBhIHBhdGggcmVsYXRlZCBzdGF0dXMuICBUaGlz IGlzIGhvdyBOVk1lIGVycm9yIHNlbWFudGljcyB3b3JrIGFuZCB0aGlzIGlzIGEgcGFydCBvZiB3 aGF0IHdhcyBiZWhpbmQgS2VpdGgncyBwYXRjaCAuIAoKaHR0cHM6Ly9naXQua2VybmVsLm9yZy9w dWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvc3RhYmxlL2xpbnV4LmdpdC9jb21taXQvP2lkPTM1MDM4 YmZmYTg3ZGEKClJldHJ5aW5nIE5WTUVfU0NfTlNfTk9UX1JFQURZIG9yIE5WTUVfU0NfQ01EX0lO VEVSUlVQVEVEIG9uIGFub3RoZXIgcGF0aCBpcyBzaW1wbHkgbm90IHRoZSByaWdodCB0aGluZyB0 byBkbywgYW5kIHJldHVybmluZyBCTEtfU1RTX1RBUkdFVCBhZnRlciBhbGwgY29tbWFuZCByZXRy aWVzLCB3aXRoIENSRFQsIGhhdmUgYmVlbiBleGhhdXN0ZWQgY29tbXVuaWNhdGVzIHRoZSByaWdo dCB0aGluZyB0byB0aGUgdXBwZXIgbGF5ZXIuIEZyb20gdGhlIHBlcnNwZWN0aXZlIG9mIG52bWUt bXVsdGlwYXRoaW5nIEtlaXRoJ3MgcGF0Y2ggd2FzIGV4YWN0bHkgdGhlIGNvcnJlY3QgdGhpbmcg dG8gZG8uICBJIHVuZGVyc3RhbmQgdGhhdCB0aGlzIG1heSBoYXZlIGNhdXNlZCBhIGJhY2t3YXJk cyBjb21wYXRpYmx5IHByb2JsZW0gd2l0aCBkbS1tdWx0aXBhdGgsIGFuZCB0aGF0J3MgdGhlIG9u bHkgcmVhc29uIHdoeSBJJ3ZlIHRhbGtlZCBhYm91dCBiYWNraW5nIGl0IG91dC4gIEhvd2V2ZXIs IHVsdGltYXRlbHksIEkgdGhpbmsgbnZtZS1jb3JlIHNob3VsZCByZXR1cm4gYW4gZXJyb3Igc3Rh dHVzIGxpa2UgIEJMS19TVFNfVEFSR0VUIHRoYXQgc2F5cywgc2VtYW50aWNhbGx5IC0gdGhlIElP IGhhcyBmYWlsZWQsIG5vIHJldHJ5IHdpbGwgd29yayAtIGJlY2F1c2UgdGhpcyBpcyB3aGF0IHRo ZSBOVk1lIGVycm9yIHNlbWFudGljcyBhcmUuCgpUYWtlbiB0b2dldGhlciBib3RoIG9mIHRoZXNl IGZhY3RzIGFib3V0IHRoZSBOVk1lIHByb3RvY29sIHNlbWFudGljcyBhcmUgd2hhdCdzIGJlaGlu ZCBteSBwYXRjaCB3aGljaCByZW1vdmVkIGJsa19wYXRoX2Vycm9yKCkgZnJvbSBudm1lX2NvbXBs ZXRlX3JxKCkKCmh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0 L3N0YWJsZS9saW51eC5naXQvY29tbWl0Lz9pZD03NjRlOTMzMjA5OGMwZTYwMjUxMzg2YTUwN2Zl NDZhYzkxMjc2MTIwCgpJIHVuZGVyc3RhbmQgdGhhdCB0aGVyZSBpcyBhIGdvYWwgdG8gdHJ5IGFu ZCBhdm9pZCBoYXZpbmcgZGlmZmVyZW50IGZhaWx1cmUvcmVjb3ZlcnkgaGFuZGxpbmcgc2VtYW50 aWNhbGx5IGluIHJlc3BvbnNlIHRvIGRpZmZlcmVudCBlcnJvciBzdGF0dXMgYmV0d2VlbiBudm1l LW11bHRpcGF0aCBhbmQgZG0tbXVsdGlwYXRoLCBidXQgTlZNZSBlcnJvciBzZW1hbnRpY3MgYXJl IHRydWx5IGRpZmZlcmVudCBmcm9tIFNDU0kgZXJyb3Igc2VtYW50aWNzLCBhbmQgdGhleSBhcmUg Y2hhbmdpbmcuIFRoZSBMaW51eCBob3N0IG5lZWRzIHRvIGVuYWJsZSBhbmQgc3VwcG9ydCB0aG9z ZSBjaGFuZ2VzIHVuaGFtcGVyZWQgYnkgdGhlIHBhc3QuIFdpdGggdGhpcyBnb2FsIGluIG1pbmQs IHJlbW92aW5nIHRoZSBibGtfcGF0aF9lcnJvcigpIGNvZGUgZnJvbSBudm1lLWNvcmUgd2FzIHRo ZSByaWdodCB0aGluZyB0byBkby4gIEhhbm5lcyBhbmQgSSBzdHJ1Z2dsZWQgd2l0aCB0aGUgcGF0 Y2ggdG8gdHJ5IGFuZCBtYWtlIGl0IHdvcmsgd2l0aCBibGtfcGF0aF9lcnJvcigpIGZvciB3ZWVr cy4gIEFzIHBvaW50ZWQgb3V0IGluIHRoZSB0aHJlYWQgYmVsb3csIGJsa19wYXRoX2Vycm9yKCkg aXMgdGhlIFNDU0kgbXVsdGlwYXRoaW5nIGxvZ2ljIGFuZCB3ZSBjYW4ndCB1c2UgaXQgaW4gbnZt ZV9jb21wbGV0ZV9ycSgpLiAgQWxsIGl0IGRvZXMgaXMgaW1wb3J0IGFsbCBvZiB0aGUgbGVnYWN5 IHByb2JsZW1zIG9mIGRtLW11bHRpcGF0aCwgYW5kIG9mIFNDU0ksIGludG8gdGhlIG52bWUgY29t cGxldGlvbi9tdWx0aXBhdGggbG9naWMuICAKCkF0IE5WTWV4cHJlc3Mub3JnIHdlIGNvbnNjaW91 c2x5IGFkZGVkIHRoZSBBQ1JFIGZlYXR1cmUgYmVjYXVzZSB0aGUgU0NTSSBwcm90b2NvbCBoYWQg bm8gc3VjaCBjYXBhYmlsaXR5LiAgVGhpcyBpcyBzb21ldGhpbmcgd2hpY2ggaGFzIHBsYWd1ZWQg U0NTSSBpbXBsZW1lbnRhdGlvbnMgZm9yIHllYXJzLCAgYW5kIGFsbCBraW5kcyBvZiB0cmlja3Mg aGF2ZSBiZWVuIHBsYXllZCwgaW4gYm90aCB0aGUgU0NTSSBob3N0IHN0YWNrIGFuZCBpbiBTQ1NJ IHRhcmdldCBzdGFjaywgdG8gZGVhbCB3aXRoIHRoZSBwcm9ibGVtLiBUaGUgZ29hbCBvZiBOVk1l IGlzIHRvIGNyZWF0ZSBhIGJldHRlciBibG9jayBzdG9yYWdlIHByb3RvY29sIGFuZCBBQ1JFIGlz IGp1c3Qgb25lIGV4YW1wbGUgb2YgbWFueSBwbGFjZXMgd2hlcmUgdGhlIGluZHVzdHJ5IGlzIHRy eWluZyB0byBkbyB0aGlzLiAgVGhlcmUgYXJlIHBsYW5zIHRvIGludHJvZHVjZSBtb3JlIEhvc3Qg QmVoYXZpb3IgU3VwcG9ydCBmZWF0dXJlcyBpbiB0aGUgZnV0dXJlLiAgCgpJbiB0aGUgZW5kLCB3 ZSBhcmUgY29uc2Npb3VzbHkgY2hhbmdpbmcgTlZNZSwgYm90aCBpbiB0aGUgc3BlYyBhbmQgaW4g aXRzIGltcGxlbWVudGF0aW9uLCB0byBtYWtlIGl0IGRpZmZlcmVudCBmcm9tIFNDU0kuIEkgdGhp bmsgdGhpcyBpcyB3aGF0J3MgYXQgdGhlIGJvdHRvbSBvZiB0aGUgY2hhbmdlcyBkaXNjdXNzZWQg aW4gdGhpcyB0aHJlYWQsIGFuZCB0aGlzIGlzIHdoeSBzbyBtYW55IHBlb3BsZSBhcmUgc28gcGFz c2lvbmF0ZSBhYm91dCB0aGlzLiAgV2UgZG9uJ3Qgd2FudCB0byB0dXJuIE5WTWUgaW50byBTQ1NJ LiAgSSBrbm93IEkgZG9uJ3Qgd2FudCB0by4KCi9Kb2huCgpeTm90ZTogKG1heWJlIGEgMiBzZWNv bmQgZGVsYXkgc291bmRzIHVucmVhc29uYWJsZSBmb3IgYSBmbGFzaCBzdG9yYWdlIGRldmljZSBi dXQgdGhlcmUgaW1wbGVtZW50b3JzIHRoYXQgdGhhdCB3YW50IHRvIHVzZSBOVk1lIHdpdGggc3Bp bm5pbmcgZGlza3MuLi4gc28gdGhlIENEUlQgZ2l2ZXMgdGhlbSBleGFjdGx5IHdoYXQgdGhleSBu ZWVkKS4gIAoK77u/T24gOC83LzIwLCA3OjM1IFBNLCAiU2FnaSBHcmltYmVyZyIgPHNhZ2lAZ3Jp bWJlcmcubWU+IHdyb3RlOgoKICAgID4+IEhleSBNaWtlLAogICAgPj4KICAgID4+Pj4gVGhlIHBv aW50IGlzOiBibGtfcGF0aF9lcnJvcigpIGhhcyBub3RoaW5nIHRvIGRvIHdpdGggTlZNZSBlcnJv cnMuCiAgICA+Pj4+IFRoaXMgaXMgZG0tbXVsdGlwYXRoIGxvZ2ljIHN0dWNrIGluIHRoZSBtaWRk bGUgb2YgdGhlIE5WTWUgZXJyb3IKICAgID4+Pj4gaGFuZGxpbmcgY29kZS4KICAgID4+PgogICAg Pj4+IE5vLCBpdCBpcyBhIG1lYW5zIHRvIGhhdmUgbXVsdGlwbGUgc3Vic3lzdGVtcyAodG8gdGhp cyBwb2ludCBib3RoIFNDU0kKICAgID4+PiBhbmQgTlZNZSkgZG9pbmcgdGhlIGNvcnJlY3QgdGhp bmcgd2hlbiB0cmFuc2xhdGluZyBzdWJzeXN0ZW0gc3BlY2lmaWMKICAgID4+PiBlcnJvciBjb2Rl cyB0byBCTEtfU1RTIGNvZGVzLgogICAgPj4KICAgID4+IE5vdCBleGFjdGx5LCBkb24ndCBmaW5k IGFueSB1c2Ugb2YgdGhpcyBpbiBzY3NpLiBUaGUgcHVycG9zZSBpcyB0byBtYWtlCiAgICA+PiBz dXJlIHRoYXQgbnZtZSBhbmQgZG0gc3BlYWsgdGhlIHNhbWUgbGFuZ3VhZ2UuCiAgICA+CiAgICA+ IFNDU0kgZG9lc24ndCBuZWVkIHRvIGRvIGFkZGl0aW9uYWwgd29yayB0byB0cmFpbiBhIG11bHRp cGF0aCBsYXllcgogICAgPiBiZWNhdXNlIGRtLW11bHRpcGF0aCBfaXNfIFNDU0kncyBtdWx0aXBh dGhpbmcgaW4gTGludXguCgogICAgQWdyZWUuCgogICAgPiBTbyBlbnN1cmluZyBTQ1NJIHByb3Bl cmx5IGNsYXNzaWZpZXMgaXRzIGVycm9yIGNvZGVzIGhhcHBlbnMgYXMgYQogICAgPiBzaWRlLWVm ZmVjdCBvZiBlbnN1cmluZyBjb250aW51ZWQgbXVsdGlwYXRoIGZ1bmN0aW9uYWxpdHkuCiAgICA+ CiAgICA+IEhhbm5lcyBpbnRyb2R1Y2VkIGFsbCB0aGVzZSBkaWZmZXJlbnRpYXRlZCBlcnJvciBj b2RlcyBpbiBibG9jayBjb3JlCiAgICA+IGJlY2F1c2Ugb2YgU0NTSS4gIE5WTWUgaXMgbWVhbnQg dG8gYnVpbGQgb24gdGhlIGluZnJhc3RydWN0dXJlIHRoYXQgd2FzCiAgICA+IGVzdGFibGlzaGVk LgoKICAgIFllcywgZXhhY3RseSBteSBwb2ludC4gYmxrX3BhdGhfZXJyb3IgaXMgZGVzaWduZWQg dG8gbWFrZSBudm1lIGFuZAogICAgZG0tbXVsdGlwYXRoIHNwZWFrIHRoZSBzYW1lIGxhbmd1YWdl LgoKICAgID4+PiBJZiB5b3UsIG9yIG90aGVycyB5b3UgbmFtZSBkcm9wIGJlbG93LCB1bmRlcnN0 b29kIHRoZSBwb2ludCB3ZSB3b3VsZG4ndAogICAgPj4+IGJlIGhhdmluZyB0aGlzIGNvbnZlcnNh dGlvbi4gIFlvdSdkIGFjY2VwdCB0aGUgcG9pbnQgb2YgYmxrX3BhdGhfZXJyb3IoKQogICAgPj4+ IHRvIGJlIHZhbGlkIGFuZCByZXF1aXJlZCBjb2RpZmljYXRpb24gb2Ygd2hhdCBjb25zdGl0dXRl cyBhIHJldHJ5YWJsZQogICAgPj4+IHBhdGggZXJyb3IgZm9yIHRoZSBMaW51eCBibG9jayBsYXll ci4KICAgID4+CiAgICA+PiBUaGlzIGluY2lkZW50IGlzIGEgY2FzZSB3aGVyZSB0aGUgc3BlY2lm aWMgbnZtZSBzdGF0dXMgd2FzIGRlc2lnbmVkCiAgICA+PiB0byByZXRyeSBvbiB0aGUgc2FtZSBw YXRoIHJlc3BlY3RpbmcgdGhlIGNvbnRyb2xsZXIgcmV0cnkgZGVsYXkuCiAgICA+PiBBbmQgYmVj YXVzZSBudm1lIHVzZWQgYmxrX3BhdGhfZXJyb3IgYXQgdGhlIHRpbWUgaXQgY2F1c2VkIHVzIHRv IHVzZSBhCiAgICA+PiBub24tcmV0cnlhYmxlIHN0YXR1cyB0byBnZXQgYXJvdW5kIHRoYXQuIEdy YW50ZWQsIG5vIG9uZSBoYWQKICAgID4+IGRtLW11bHRpcGF0aCBpbiBtaW5kLgogICAgPj4KICAg ID4+IFNvIGluIGEgc2Vuc2UsIHRoZXJlIGlzIGNvbnNlbnN1cyBvbiBjaGFuZ2luZyBwYXRjaCAz NTAzOGJmZmE4N2RhCiAgICA+PiBfYmVjYXVzZV8gbnZtZSBubyBsb25nZXIgdXNlcyBibGtfcGF0 aF9lcnJvci4gT3RoZXJ3aXNlIGl0IHdvdWxkIGJyZWFrLgogICAgPgogICAgPiAiYnJlYWsiIG1l YW5pbmcgaXQgd291bGQgZG8gZmFpbG92ZXIgaW5zdGVhZCBvZiB0aGUgbW9yZSBvcHRpbWFsIGxv Y2FsCiAgICA+IHJldHJ5IHRvIHRoZSBzYW1lIGNvbnRyb2xsZXIuCiAgICA+CiAgICA+IEkgc2Vl LiAgV2lzaCB0aGUgaGVhZGVyIGZvciBjb21taXQgMzUwMzhiZmZhODdkYSB0b3VjaGVkIG9uIHRo aXMgZXZlbiBhCiAgICA+IGxpdHRsZSBiaXQgOykKCiAgICBJIHRoaW5rIGl0IGRpZCwgYnV0IG1h eWJlIGRpZG4ndCBwdXQgdG9vIG11Y2ggZW1waGFzaXMgb24gaXQuCgogICAgPiBCdXQgQUZBSUNU IHRoZSBwYXRjaCBJIHByb3ZpZGVkIGRvZXNuJ3QgY29tcHJvbWlzZSBwcm9wZXIgbG9jYWwgcmV0 cnkgLS0KICAgID4gYXMgbG9uZyBhcyB3ZSBmaXJzdCBmaXggbnZtZV9lcnJvcl9zdGF0dXMoKSB0 byByZXR1cm4gYSByZXRyeWFibGUKICAgID4gQkxLX1NUUyBmb3IgTlZNRV9TQ19DTURfSU5URVJS VVBURUQgLS0gd2hpY2ggSSBhc3N1bWVkIGFzIGEgcHJlcmVxLgogICAgPgogICAgPiBUaGluayBv ZiBibGtfcGF0aF9lcnJvcigpIGFzIGEgbW9yZSBjb2Fyc2UtZ3JhaW5lZCAiaXMgdGhpcyByZXRy eWFibGUgb3IKICAgID4gYSBoYXJkIGZhaWx1cmU/IiBjaGVjay4gIFNvIGZvciBOVk1FX1NDX0NN RF9JTlRFUlJVUFRFRCwKICAgID4gbnZtZV9lcnJvcl9zdGF0dXMoKSBfc2hvdWxkXyByZXNwb25k IHdpdGggc29tZXRoaW5nIHJldHJ5YWJsZSAoSSdkCiAgICA+IHByZWZlciBCTEtfU1RTX1JFU09V UkNFIHRvIGJlIGhvbmVzdCkuCgogICAgQnV0IGJsa19wYXRoX2Vycm9yIHNlbWFudGljYWxseSBt ZWFuICJpcyB0aGlzIGEgcGF0aGluZyBlcnJvciIsIG9yIGF0CiAgICBsZWFzdCB0aGF0IHdoYXQg aXRzIG5hbWUgc3VnZ2VzdC4KCiAgICA+IEFuZCB0aGVuIG52bWVfZmFpbG92ZXJfcmVxKCkgaXMg ZmluZXItZ3JhaW5lZDsgYnkgcmV0dXJuaW5nIGZhbHNlIGl0IG5vdwogICAgPiBhbGxvd3Mgc2hv cnQtY2lyY3VpdGluZyBmYWlsb3ZlciBhbmQgcmV2ZXJ0aW5nIGJhY2sgdG8gTlZNZSdzIG5vcm1h bAogICAgPiBjb250cm9sbGVyIGJhc2VkIGVycm9yIHJlY292ZXJ5IC0tIHdoaWNoIGl0IGRvZXMg Zm9yCiAgICA+IE5WTUVfU0NfQ01EX0lOVEVSUlVQVEVEIGR1ZSB0byAiZGVmYXVsdCIgY2FzZSBp biBudm1lX2ZhaWxvdmVyX3JlcSgpLgogICAgPgogICAgPiBBbmQgdGhlbiB0aGUgcHJldmlvdXMg bnZtZV9lcnJvcl9zdGF0dXMoKSBjbGFzc2lmaWNhdGlvbiBvZiByZXRyeWFibGUKICAgID4gQkxL X1NUUyBvYnZpb3VzbHkgbmV2ZXIgZ2V0cyByZXR1cm5lZCB1cCB0aGUgSU8gc3RhY2s7IGl0IGdl dHMgdGhyb3duCiAgICA+IGF3YXkuCgogICAgSSBzZWUgd2hhdCB5b3UgYXJlIHNheWluZy4gVGhl IGlzc3VlIGlzIHRoYXQgdGhlIGNvZGUgYmVjb21lcwogICAgY29udm9sdXRlZCAoaXQncyBhIHBh dGhpbmcgZXJyb3IsIG9oIHdhaXQsIG5vIGl0cyBub3QgYSBwYXRoaW5nIGVycm9yKS4KCiAgICA+ Pj4gQW55IEJMS19TVFMgbWFwcGluZyBvZiBOVk1lIHNwZWNpZmljIGVycm9yIGNvZGVzIHdvdWxk IG5lZWQgdG8gbm90IHNjcmV3CiAgICA+Pj4gdXAgYnkgY2F0ZWdvcml6aW5nIGEgcmV0cnlhYmxl IGVycm9yIGFzIG5vbi1yZXRyeWFibGUgKGFuZCB2aWNlLXZlcnNhKS4KICAgID4+CiAgICA+PiBC dXQgaXQgaXMgYSBzcGVjaWFsIHR5cGUgb2YgcmV0cnlhYmxlLiBUaGVyZSBpcyBub3RoaW5nIHRo YXQgZml0cyB0aGUKICAgID4+IHNlbWFudGljcyBvZiB0aGUgY3VycmVudCBiZWhhdmlvci4KICAg ID4KICAgID4gSSBhZ3JlZS4gIEJ1dCB0aGF0J3MgZmluZSBhY3R1YWxseS4KICAgID4KICAgID4g QW5kIHRoaXMgaXNzdWUgaXMgdGhlIHBvc3Rlci1jaGlsZCBmb3Igd2h5IHByb3Blcmx5IHN1cHBv cnRpbmcgYSBkdWFsaXR5CiAgICA+IG9mIGRyaXZlci1sZXZlbCB2cyB1cHBlciBsZXZlbCBtdWx0 aXBhdGhpbmcgY2FwYWJpbGl0aWVzIGlzIHByZXR0eSBtdWNoCiAgICA+IGltcG9zc2libGUgdW5s ZXNzIGEgY2xlYW4gZGVzaWduIGZhY3RvcnMgb3V0IHRoZSBkaWZmZXJlbnQgZXJyb3IgY2xhc3Nl cwogICAgPiAtLSBhbmQgbG9jYWwgZXJyb3IgcmV0cnkgaXMgaGFuZGxlZCBiZWZvcmUgcHVudGlu ZyB0byBoaWdoZXIgbGV2ZWwKICAgID4gZmFpbG92ZXIgcmV0cnkuICBUaGluayBpZiBOVk1lIHdl cmUgdG8gYWRvcHQgYSBiaXQgbW9yZSBkaXNjaXBsaW5lZAogICAgPiAibG9jYWwgdGhlbiBmYWls b3ZlciIgZXJyb3IgaGFuZGxpbmcgaXQgYWxsIGdldHMgZWFzaWVyLgoKICAgIEkgZG9uJ3QgdGhp bmsgcHVudGluZyBiZWZvcmUgaXMgZWFzaWVyLCBiZWNhdXNlIHdlIGRvIGEgbG9jYWwgcmV0cnkg aWY6CiAgICAtIG5vIG11bHRpcGF0aGluZyBzdyBvbiB0b3AKICAgIC0gcmVxdWVzdCBuZWVkcyBy ZXRyeSAoZS5nLiBubyBETlIsIG5vdHJldHJ5IGlzIG9mZiBldGMuLikKICAgIC0gbnZtZSBlcnJv ciBpcyBub3QgcGF0aGluZyByZWxhdGVkIChudm1lX2ZhaWxvdmVyX3JlcSByZXR1cm5lZCBmYWxz ZSkKCiAgICA+IFRoaXMgbG9jYWwgcmV0cnkgX2lzXyBOVk1lIHNwZWNpZmljLiAgTlZNZSBzaG91 bGQganVzdCBvd24gcmV0cnlpbmcgb24KICAgID4gdGhlIHNhbWUgY29udHJvbGxlciBubyBtYXR0 ZXIgd2hhdCAoSSdsbCBob3BlIHRoYXQgc3VjaCByZXRyeSBoYXMKICAgID4gYXdhcmVuZXNzIHRv IG5vdCByZXRyeSBpbmRlZmluaXRlbHkgdGhvdWdoISkuCgogICAgaXQgd2lsbCByZXRyeSB1bnRp bCB0aGUgcmV0cnkgbGltaXQuCgogICAgPiAgQW5kIHRoaXMgaGFzIG5vdGhpbmcgdG8KICAgID4g ZG8gd2l0aCBtdWx0aXBhdGhpbmcsIHNvIHRoZSBsb2dpYyB0byBoYW5kbGUgaXQgc2hvdWxkbid0 IGJlIHRyYXBwZWQgaW4KICAgID4gbnZtZV9mYWlsb3Zlcl9yZXEoKS4KCiAgICBXZWxsIGdpdmVu IHRoYXQgbnZtZV9mYWlsb3Zlcl9yZXEgYWxyZWFkeSBtYXkgbm90IGFjdHVhbGx5IGZhaWxvdmVy IHRoaXMKICAgIG1ha2VzIHNvbWUgc2Vuc2UgdG8gbWUgKGFsdGhvdWdoIEkgZGlkIGhhdmUgc29t ZSByZXNpc3RhbmNlIHRvIG1ha2UgaXQKICAgIHRoYXQgd2F5IGluIHRoZSBmaXJzdCBwbGFjZSwg YnV0IHdhcyBjb252aW5jZWQgb3RoZXJ3aXNlKS4KCiAgICA+IEkgdGhpbmsgTlZNZSBjYW4gZWFz aWx5IGZpeCB0aGlzIGJ5IGhhdmluZyBhbiBlYXJsaWVyIHN0YWdlIG9mIGNoZWNraW5nLAogICAg PiBlLmcuIG52bWVfbG9jYWxfcmV0cnlfcmVxKCksIHRoYXQgc2hvcnRjaXJjdWl0cyBldmVyIGdl dHRpbmcgdG8KICAgID4gaGlnaGVyLWxldmVsIG11bHRpcGF0aGluZyBjb25zaWRlcmF0aW9uIChi ZSBpdCBuYXRpdmUgTlZNZSBvciBETQogICAgPiBtdWx0aXBhdGhpbmcpIGZvciBjYXNlcyBsaWtl IE5WTUVfU0NfQ01EX0lOVEVSUlVQVEVELgogICAgPiBUbyBiZSBjbGVhcjogdGhlICJkZWZhdWx0 IiBjYXNlIG9mIG52bWVfZmFpbG92ZXJfcmVxKCkgdGhhdCByZXR1cm5zCiAgICA+IGZhbHNlIHRv IGZhbGxiYWNrIHRvIE5WTWUncyAibG9jYWwiIG5vcm1hbCBOVk1lIGVycm9yIGhhbmRsaW5nIC0t IHRoYXQKICAgID4gY2FuIHN0YXkuLiBidXQgYSBtb3JlIGV4cGxpY2l0IGhhbmRsaW5nIG9mIGNh c2VzIGxpa2UKICAgID4gTlZNRV9TQ19DTURfSU5URVJSVVBURUQgc2hvdWxkIGJlIGFkZGVkIHRv IGEgbnZtZV9sb2NhbF9yZXRyeV9yZXEoKQogICAgPiBjaGVjayB0aGF0IGhhcHBlbnMgYmVmb3Jl IG52bWVfZmFpbG92ZXJfcmVxKCkgaW4gbnZtZV9jb21wbGV0ZV9ycSgpLgoKICAgIEkgZG9uJ3Qg bmVjZXNzYXJpbHkgYWdyZWUgd2l0aCBoYXZpbmcgYSBkZWRpY2F0ZWQgbnZtZV9sb2NhbF9yZXRy eV9yZXEoKS4KICAgIGEgcmVxdWVzdCB0aGF0IGlzbid0IGZhaWxlZCBvdmVyLCBnb2VzIHRvIGxv Y2FsIGVycm9yIGhhbmRsaW5nIChyZXRyeSBvcgogICAgbm90KS4gSSBhY3R1YWxseSB0aGluayB0 aGF0IGp1c3QgYWRkaW5nIHRoZSBjb25kaXRpb24gdG8KICAgIG52bWVfY29tcGxldGVfcmVxIGFu ZCBoYXZpbmcgbnZtZV9mYWlsb3Zlcl9yZXEgcmVqZWN0IGl0IHdvdWxkIHdvcmsuCgogICAgS2Vp dGg/CgogICAgPj4+IEFueXdheSwgbm8gbmV3IEJMS19TVFMgaXMgbmVlZGVkIGF0IHRoaXMgcG9p bnQuICBNb3JlIGRpc2NpcGxpbmUgd2l0aAogICAgPj4+IGhvdyBOVk1lJ3MgZXJyb3IgaGFuZGxp bmcgaXMgY2hhbmdlZCBpcy4KICAgID4+CiAgICA+PiBQbGVhc2UgcmVhZCB0aGUgYWJvdmUuCiAg ICA+CiAgICA+IEkgYWdyZWUgd2UnZCBuZWVkIGEgbmV3IEJMS19TVFMgb25seSBpZiBOVk1lIGNh bm5vdCBiZSBtYWRlIHRvIHRyYXAKICAgID4gTlZNRV9TQ19DTURfSU5URVJSVVBURUQgZm9yIGxv Y2FsIHJldHJ5IF9iZWZvcmVfIGNvbnNpZGVyaW5nIHBhdGgKICAgID4gZmFpbG92ZXIuCgogICAg Tm90IHN1cmUgdGhhdCBpcyBiZXR0ZXIsIGJ1dCB3ZSBjYW4gc2VlIGEgcGF0Y2ggZmlyc3QgdG8g ZGV0ZXJtaW5lLgoKICAgID4+PiBJZiBOVk1lIHdhbnRzIHRvIGVuc3VyZSBpdHMKICAgID4+PiBp bnRlcmZhY2UgaXNuJ3QgYnJva2VuIHJlZ3VsYXJseSBpdCBfc2hvdWxkXyB1c2UgYmxrX3BhdGhf ZXJyb3IoKSB0bwogICAgPj4+IHZhbGlkYXRlIGZ1dHVyZSBudm1lX2Vycm9yX3N0YXR1cygpIGNo YW5nZXMuICBNaXNjYXRlZ29yaXppbmcgTlZNZQogICAgPj4+IGVycm9ycyB0byB1cHBlciBsYXll cnMgaXMgYSBidWcgLS0gbm90IG9wZW4gZm9yIGRlYmF0ZS4KICAgID4+CiAgICA+PiBBZ2Fpbiwg ZG9uJ3QgYWdyZWUgaXMgYSBNaXNjYXRlZ29yaXphdGlvbiBub3IgYSBidWcsIGl0cyBqdXN0IHNv bWV0aGluZwogICAgPj4gdGhhdCBpcyBOVk1lIHNwZWNpZmljLgogICAgPgogICAgPiBSaWdodCBJ IHVuZGVyc3RhbmQuCiAgICA+CiAgICA+IFRoaW5rIGl0IHNhZmUgdG8gYXNzdW1lIHRoZXNlIHR5 cGVzIG9mIGRldGFpbHMgYXJlIHdoeSBDaHJpc3RvcGggd2FudGVkCiAgICA+IHRvIGF2b2lkIHRo ZSBub3Rpb24gb2YgbmF0aXZlIE5WTWUgYW5kIERNIG11bHRpcGF0aGluZyBoYXZpbmcKICAgID4g Y29tcGF0aWJsZSBlcnJvciBoYW5kbGluZy4gIFRoZXJlIHdhcyBzb21lIHdpc2RvbSB3aXRoIHRo YXQgcG9zaXRpb24KICAgID4gKGVzcGVjaWFsbHkgd2l0aCBuYXRpdmUgTlZNZSBnb2FscyBpbiBt aW5kKS4gIEJ1dCBpZiB0aGluZ3MgYXJlIHR3ZWFrZWQKICAgID4gc2xpZ2h0bHkgdGhlbiBib3Ro IGNhbXBzIF9jYW5fIGJlIG1hZGUgaGFwcHkuCiAgICA+CiAgICA+IFRoZXJlIGp1c3QgbmVlZHMg dG8gYmUgYSB3aWxsaW5nbmVzcyB0byB3b3JrIHRocm91Z2ggdGhlIGRldGFpbHMsCiAgICA+IGRl ZmVuc2l2ZW5lc3MgbmVlZHMgdG8gYmUgc2hlZCBvbiBib3RoIHNpZGVzLCBzbyBjb25zdHJ1Y3Rp dmUKICAgID4gcmV2aWV3L2NvbnNpZGVyYXRpb24gb2YgcHJvYmxlbXMgY2FuIGhhcHBlbi4KCiAg ICBBZ3JlZWQuCgogICAgPiBUaGluayB0aGF0IGhhcyBhbHJlYWR5CiAgICA+IGhhcHBlbmVkIGhl cmUgd2l0aCBvdXIgZXhjaGFuZ2UuICBJJ20gb3BlbiB0byBpbnZlc3RpbmcgZWZmb3J0IGhlcmUg aWYKICAgID4gb3RoZXJzIGFyZSB1cCBmb3IgaHVtb3JpbmcgbXkgYXR0ZW1wdCB0byBleHBsb3Jl IGZpeGluZyB0aGUgaXNzdWVzIGluIGEKICAgID4gbXV0dWFsbHkgYmVuZWZpY2lhbCB3YXkuICBX aGF0J3MgdGhlIHdvcnN0IHRoYXQgY2FuIGhhcHBlbj8gIE15IHNpbXBsZQogICAgPiBwYXRjaGVz IG1pZ2h0IGNvbnRpbnVlIHRvIGJlIGlnbm9yZWQ/IDspCgogICAgSSB3b24ndCBpZ25vcmUgaXQs IGFuZCBJIGFwb2xvZ2l6ZSBvZiBpZ25vcmluZyB0aGUgb3JpZ2luYWwgcGF0Y2gKICAgIHBvc3Rl ZCwgSSBndWVzcyBpdCBmbGV3IHVuZGVyIHRoZSByYWRhci4uLgoKCi0tCmRtLWRldmVsIG1haWxp bmcgbGlzdApkbS1kZXZlbEByZWRoYXQuY29tCmh0dHBzOi8vd3d3LnJlZGhhdC5jb20vbWFpbG1h bi9saXN0aW5mby9kbS1kZXZlbA==