From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 5E039A00C4; Mon, 25 Jul 2022 03:17:49 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id EA1BB4021E; Mon, 25 Jul 2022 03:17:47 +0200 (CEST) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2072.outbound.protection.outlook.com [40.107.21.72]) by mails.dpdk.org (Postfix) with ESMTP id B6761400D4 for ; Mon, 25 Jul 2022 03:17:46 +0200 (CEST) ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=crlzpgxIHgeUyk45JUCdfSlGpRpM01Jk5odasxOYtQM9Krp8+z1eX2ShOod2nTg/m3ZQVM7F88EFNxikMxkn0gD6SsGi2eRL0h/64yNMM3VdbIKV0hhdkn/kEQPTY4HjhvhkMTOyyuIozESd6bfN4kfEXk/FvEYXViDbG4me44yErP+4Vs8gWmN8zSpw7alkQWiNodmRcRJQ4QGS178ZnkS8Knx9yoteJm3vUHu5JmVW8T2dwf9ZgTFL4AsHwhG7JK4fuJgkYBhLXJ5rY0/3OnBRU4V5v3/0MYhvQAW55sX2xPlnTkij6wXWa8i4z2kxXyXkNb95cfWMSYjhb+QJ3A== ARC-Message-Signature: i=2; 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=zs4/04e/76IItetd7sgsmR5XK7SWznnqwEMK4BrLJxc=; b=YTNHNyh4ZvYu8dbYTFqSmM3dp4nBH9XptxRpW2aDKMyfgCQUw8hInc2ZiNMGNV59ZEPvWOxOm9q0aT7fOBwCf6qRnsmqIRy0Z3CQsC0hp9bMzyjEvOvt8ITaik5S0UE5mVd3kD/xSPfl/WuOMyljM480sDz0443fKR87jWDV5yG8t/SIzb8u/OnyjU1eOtTZwIswe2uwPVe3kEQqmRiwUb//VyU115ZIIkNSDkdE3C/tvOKA+ExYgekWwQXndQeosGXNJF29dHfTinuKEczKLEBP2IDMHJdWl9ctYg4k6zjN6AsmbkfRSvMrW06hgy4uL2s8G8fWJRh1hOZ7aaqXbA== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=dpdk.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zs4/04e/76IItetd7sgsmR5XK7SWznnqwEMK4BrLJxc=; b=OVZk7gBDSlmIOStC4/e4cHrR08jAjNEtA/SCxHNIf6NFzP447PpetSgxj47T4spdku6DxfSP6pEWdAgjT8cBPZnGhzkrDNIIWuCe6sbTL/jLLVhXRDwOLN8KUCgSeQ/YunKVbbhspnCi73qOBMZX4LlVMIU0eZSlt2x9kcsNqRo= Received: from AS8PR04CA0139.eurprd04.prod.outlook.com (2603:10a6:20b:127::24) by PAXPR08MB7645.eurprd08.prod.outlook.com (2603:10a6:102:240::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5458.24; Mon, 25 Jul 2022 01:17:44 +0000 Received: from AM5EUR03FT046.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:127:cafe::39) by AS8PR04CA0139.outlook.office365.com (2603:10a6:20b:127::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5458.24 via Frontend Transport; Mon, 25 Jul 2022 01:17:44 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM5EUR03FT046.mail.protection.outlook.com (10.152.16.164) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5458.17 via Frontend Transport; Mon, 25 Jul 2022 01:17:44 +0000 Received: ("Tessian outbound 63c09d5d38ac:v123"); Mon, 25 Jul 2022 01:17:44 +0000 X-CR-MTA-TID: 64aa7808 Received: from 0eb8781ecd19.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 7FEE2D5B-A975-40B5-8CD1-0FFC4C3ACDAF.1; Mon, 25 Jul 2022 01:17:39 +0000 Received: from EUR05-AM6-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 0eb8781ecd19.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 25 Jul 2022 01:17:39 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jYS/1HCdp/nrTrGcL038cC30M4ZA3wqk4Gn8DBaIwMMeAHCxYvXoMC4rKr4NzucpZibCkalqmC2PNn7WkmMwdcdtqNdx5OHrzIzG9TQjk77iBNPQRqF+ow6BcGFN0nO4RS5SxKuBiNFSDJgiTk4yg//rxCxdzm1+GoODgjG110ZUImZUv4rCEknwJC/wrTevo5R7uFmVT1MrFsQGpjYfJC9as8APS2FHlNvFCbu3d+31nKKl4wbEM04ng6n9lQpTgv//SvzePIiWfydlEQlghSpApWvy4Qcb45nd0t20jL7C1Y+ScZYMutXsb5US2Xw5NjuR31gXrCjXPmpUUm6aZw== 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=zs4/04e/76IItetd7sgsmR5XK7SWznnqwEMK4BrLJxc=; b=XiyGItIMLndJNmXYE26LjgIBh/jEPYwkuI+iYtXtnj21B+wAyXbvfWYruyG7AimMVZX+PRFFz+OH3Hq2iQ6WBDJSNUFQyO8o76bcpGLDQZUEdPiRcuc+aT0xCheid3smhWpOvyNzOiz43HHJeUxciuOvLMEA9YgjG/EjJL3WwOuj82zwQgKxKhZQ02baoCyAURWKndOK26OMj43Dap53EG+GIzUfMorRtl4LSGiMn7wM9kBjLpn9+u0TvRMClKQDfNRwUM8z8J1+dLjhBLzN+96Gn77cRymTMr35j3G/qYsOSETMiDzJtN//LPehjLTmoh4wzm+mpqBdoCe8K+mYhw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zs4/04e/76IItetd7sgsmR5XK7SWznnqwEMK4BrLJxc=; b=OVZk7gBDSlmIOStC4/e4cHrR08jAjNEtA/SCxHNIf6NFzP447PpetSgxj47T4spdku6DxfSP6pEWdAgjT8cBPZnGhzkrDNIIWuCe6sbTL/jLLVhXRDwOLN8KUCgSeQ/YunKVbbhspnCi73qOBMZX4LlVMIU0eZSlt2x9kcsNqRo= Received: from DBAPR08MB5814.eurprd08.prod.outlook.com (2603:10a6:10:1b1::6) by DB6PR0801MB2054.eurprd08.prod.outlook.com (2603:10a6:4:77::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5458.20; Mon, 25 Jul 2022 01:17:36 +0000 Received: from DBAPR08MB5814.eurprd08.prod.outlook.com ([fe80::f9bc:749e:7a65:a2fc]) by DBAPR08MB5814.eurprd08.prod.outlook.com ([fe80::f9bc:749e:7a65:a2fc%7]) with mapi id 15.20.5458.024; Mon, 25 Jul 2022 01:17:36 +0000 From: Honnappa Nagarahalli To: Konstantin Ananyev , =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= , "dev@dpdk.org" , Bruce Richardson CC: Jan Viktorin , Ruifeng Wang , David Christensen , Stanislaw Kardach , nd , nd Subject: RE: [RFC v2] non-temporal memcpy Thread-Topic: [RFC v2] non-temporal memcpy Thread-Index: AdiMgG8wV8KKmxnURxm0C2yHsgRJzAO+5XRQAHcUDgAAF+qXAABqjEcAABhfkMA= Date: Mon, 25 Jul 2022 01:17:36 +0000 Message-ID: References: <98CBD80474FA8B44BF855DF32C47DC35D871D4@smartserver.smartshare.dk> <98CBD80474FA8B44BF855DF32C47DC35D871DB@smartserver.smartshare.dk> <262c214b-7870-a221-2621-6684dce42823@yandex.ru> In-Reply-To: <262c214b-7870-a221-2621-6684dce42823@yandex.ru> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 50221DF568F5B44FBA706E51924BF16A.0 x-checkrecipientchecked: true Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-MS-Office365-Filtering-Correlation-Id: ee028b46-cf5a-4632-cb7e-08da6ddb7a83 x-ms-traffictypediagnostic: DB6PR0801MB2054:EE_|AM5EUR03FT046:EE_|PAXPR08MB7645:EE_ x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: 6wTFcms4Hbn0+cdVcY+22z4JbuqN5hIKK2bJobBt4pRLyHKvJjHYX1RqEDu8fy/ueqAbGA7Uze7ArnHRc1spIEwis++4YvSca1UwtWYTxJGen5zCYfrE2wkbY82an5iU9lX2JR1MCHXuEUOm+cdsNSJbwf7nyxLZ90q35n/LgExhWzJc+VEFoEjC5fxpEYEovL5cnKBpRPw4iunzs608ZGI2F83flkWW8drP6DiJ5vLRJC8nqMDxyASIdT6O2ev+7wrZ9s4NmGnTINPWbRlbeK72ktTOfhFyRutQCvvwIFsYIbXL0oObSq88je7XSobemP8Ub+9Jc21iDsmb8bAL48xpcouU1KyYBNNu+5KimIjd/cStPpgAY+5n4fyA6n6FXAZQkO9oX1xRwMLGtiD4MJq9j5jSnzlKchH4bd3TyFjUXGZOY2X0I91NXfLLWlInRSU4XQ2fLpynyOF8nNE3g5cnpmUNnh9JnCf7iT2rUdZREFXAxUWu+bPT2PLxwh2/l4D5Xy5Fr/RqBsodHygVhVecuD7Y/m+DT6MfHBukhhZeve/mXykZDr67UBv8rsgAf/QzGhTsBy12U6QHgKRC6szhR5lNcCnNqclq82enezj23tiZh7m13UnJDOFzieSlI8dEZbvWBE0o3HCoZO2H1L7bEAxb/EOPyK/hUiMmMNqk+/G/YToiERlgDbbTFAAltt4ctWxSrYCWix3l+uBaYWIp+k99hgO4TF4Kpcdtciiwp9cXcI400oQTpgNZy5/OBH4/bCHjbZ/u6OX9nGBmwjbAbcshHwtnRGC7+GWE09O75Uj19NugauDnGklweIFzhca0FdcmW2UEpOsTvglgbgxnBZpLWTE+VVRP78fVP2nSliWMChg12lNSxQVWwMGg/1wImSGpLzdE6d2EiixPaw== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DBAPR08MB5814.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(4636009)(396003)(136003)(346002)(376002)(366004)(39860400002)(66946007)(5660300002)(8936002)(76116006)(52536014)(66556008)(4326008)(64756008)(66446008)(66476007)(30864003)(8676002)(55016003)(33656002)(2906002)(86362001)(38070700005)(7696005)(66574015)(83380400001)(122000001)(478600001)(71200400001)(966005)(110136005)(38100700002)(54906003)(316002)(41300700001)(9686003)(6506007)(186003)(26005)(23180200003); DIR:OUT; SFP:1101; Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0801MB2054 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM5EUR03FT046.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 53579f2f-b4c7-41e0-d19e-08da6ddb7568 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: CCqdPPtwaSCgM6GVwDxr+V6qqDt+shKDaBwLlsfLx+ywDxUp/QlGzAwUgxtIohRuZhUnIVM6rs5qqd7/59/Y+TJ8vP1la/W67JbUGk4QRkKC/JrdCRW5Xv2UOgzfRpKF1J6blBi+k2BH1EZylCe5F6oAVNcPnk/s1sWm/iVhx0bFL8MgW9I5zYk+S4kfCNEe20T7gNGo1tlXMyHymUhv97y7GABwgOlMdnUFBbs8fr5l8NHQ/dd4IaQln1OiYtBdKxIps5BoCZhUxhnVqj4cHBB7UFcQW4EPMlbT8AExpm+BRtXL93F0X8/91bB/VdbIvvMV7pNek530a2c8p6BjpdQJb+zmmmMITqGwwnfsMNimPvKYwwHJMLeoxi+HtFSm6c0FjHIlSmjPhjTtx2CCu4TO8427w4wGM6v37n4EIs6nCsq8LTjMVkir/cTL+VjDKcH+7ZHaoywBtCP1Zxk8wuNcgAPetO1s/f+1KChIDNphclrNCuG5QQqAUgamCfSzIvZWKsFPjYVc1yyZpKLxbHFvod2UCFu3VTIoTCPqFG/G0qIHM+4YNwy+xkaqG3LNfoTcb0uzEidLyOu3Fs7mVU3jl/+HC9nNuoaLLA9afSJ2Af2pGqJcwgY8xhHUzsYEwY/w43FDxE4sfLDFfAdx6L7DBuRL4kMLX/zm0Z95vKO1aQ+/TiPCgwhIIKi7eBIxu5ZenuRqP7JLdZ5n/6mi/aCyE41SIw/EHCwLYgLhqc1ARYzd3gKZR/TElgAiMncgVhlpeCHg5Y+BlZr3vRKSdOfVUjqW6CxBAPXJO25imxB6FsFNeG7Ik6mX4oPFElkbe5lhXSeRhO7nisg/cYlzU2Z0Y3LpXGJ00Z/Fa+wMtV7xW7ueDhRuPAbFiRgxS7Eo X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(13230016)(4636009)(346002)(376002)(39860400002)(136003)(396003)(36840700001)(46966006)(82310400005)(36860700001)(33656002)(86362001)(81166007)(356005)(82740400003)(55016003)(478600001)(966005)(52536014)(30864003)(8936002)(5660300002)(316002)(54906003)(110136005)(4326008)(70206006)(70586007)(336012)(66574015)(47076005)(8676002)(186003)(40480700001)(83380400001)(6506007)(7696005)(41300700001)(2906002)(26005)(9686003)(23180200003); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jul 2022 01:17:44.6231 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ee028b46-cf5a-4632-cb7e-08da6ddb7a83 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: AM5EUR03FT046.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR08MB7645 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org PHNuaXA+DQo+IA0KPiAyMi8wNy8yMDIyIDExOjQ0LCBNb3J0ZW4gQnLDuHJ1cCDQv9C40YjQtdGC Og0KPiA+PiBGcm9tOiBLb25zdGFudGluIEFuYW55ZXYgW21haWx0bzprb25zdGFudGluLnYuYW5h bnlldkB5YW5kZXgucnVdDQo+ID4+IFNlbnQ6IEZyaWRheSwgMjIgSnVseSAyMDIyIDAxLjIwDQo+ ID4+DQo+ID4+IEhpIE1vcnRlbiwNCj4gPj4NCj4gPj4+IFRoaXMgUkZDIHByb3Bvc2VzIGEgc2V0 IG9mIGZ1bmN0aW9ucyBvcHRpbWl6ZWQgZm9yIG5vbi10ZW1wb3JhbA0KPiA+PiBtZW1vcnkgY29w eS4NCj4gPj4+DQo+ID4+PiBBdCB0aGlzIHN0YWdlLCBJIGFtIGFza2luZyBmb3IgZmVlZGJhY2sg b24gdGhlIGNvbmNlcHQuDQo+ID4+Pg0KPiA+Pj4gQXBwbGljYXRpb25zIHNvbWV0aW1lcyBkYXRh IHRvIGFub3RoZXIgbWVtb3J5IGxvY2F0aW9uLCB3aGljaCBpcw0KPiA+Pj4gb25seQ0KPiA+PiB1 c2VkDQo+ID4+PiBtdWNoIGxhdGVyLg0KPiA+Pj4gSW4gdGhpcyBjYXNlLCBpdCBpcyBpbmVmZmlj aWVudCB0byBwb2xsdXRlIHRoZSBkYXRhIGNhY2hlIHdpdGggdGhlDQo+ID4+IGNvcGllZA0KPiA+ Pj4gZGF0YS4NCj4gPj4+DQo+ID4+PiBBbiBleGFtcGxlIHVzZSBjYXNlIChvcmlnaW5hdGluZyBm cm9tIGEgcmVhbCBsaWZlIGFwcGxpY2F0aW9uKToNCj4gPj4+IENvcHlpbmcgZmlsdGVyZWQgcGFj a2V0cywgb3IgdGhlIGZpcnN0IHBhcnQgb2YgdGhlbSwgaW50byBhIGNhcHR1cmUNCj4gPj4gYnVm ZmVyDQo+ID4+PiBmb3Igb2ZmbGluZSBhbmFseXNpcy4NCj4gPj4+DQo+ID4+PiBUaGUgcHVycG9z ZSBvZiB0aGVzZSBmdW5jdGlvbnMgaXMgdG8gYWNoaWV2ZSBhIHBlcmZvcm1hbmNlIGdhaW4gYnkN Cj4gPj4gbm90DQo+ID4+PiBwb2xsdXRpbmcgdGhlIGNhY2hlIHdoZW4gY29weWluZyBkYXRhLg0K PiA+Pj4gQWx0aG91Z2ggdGhlIHRocm91Z2hwdXQgbWF5IGJlIGltcHJvdmVkIGJ5IGZ1cnRoZXIg b3B0aW1pemF0aW9uLCBJDQo+ID4+PiBkbw0KPiA+PiBub3QNCj4gPj4+IGNvbnNpZGVyIHRocm91 Z3B1dCBvcHRpbWl6YXRpb24gcmVsZXZhbnQgaW5pdGlhbGx5Lg0KPiA+Pj4NCj4gPj4+IFRoZSB4 ODYgbm9uLXRlbXBvcmFsIGxvYWQgaW5zdHJ1Y3Rpb25zIGhhdmUgMTYgYnl0ZSBhbGlnbm1lbnQN Cj4gPj4+IHJlcXVpcmVtZW50cyBbMV0sIHdoaWxlIEFSTSBub24tdGVtcG9yYWwgbG9hZCBpbnN0 cnVjdGlvbnMgYXJlDQo+ID4+IGF2YWlsYWJsZSB3aXRoDQo+ID4+PiA0IGJ5dGUgYWxpZ25tZW50 IHJlcXVpcmVtZW50cyBbMl0uDQo+ID4+PiBCb3RoIHBsYXRmb3JtcyBvZmZlciBub24tdGVtcG9y YWwgc3RvcmUgaW5zdHJ1Y3Rpb25zIHdpdGggNCBieXRlDQo+ID4+IGFsaWdubWVudA0KPiA+Pj4g cmVxdWlyZW1lbnRzLg0KPiA+Pj4NCj4gPj4+IEluIGFkZGl0aW9uIHRvIHRoZSBwcmltYXJ5IGZ1 bmN0aW9uIHdpdGhvdXQgYW55IGFsaWdubWVudA0KPiA+PiByZXF1aXJlbWVudHMsIHdlDQo+ID4+ PiBhbHNvIHByb3ZpZGUgZnVuY3Rpb25zIGZvciByZXNwZWN0aXZseSAxNiBhbmQgNCBieXRlIGFs aWduZWQgYWNjZXNzDQo+ID4+IGZvcg0KPiA+Pj4gcGVyZm9ybWFuY2UgcHVycG9zZXMuDQo+ID4+ Pg0KPiA+Pj4gVGhlIGZ1bmN0aW9uIG5hbWVzIHJlc2VtYmxlIHN0YW5kYXJkIEMgbGlicmFyeSBm dW5jdGlvbiBuYW1lcywgYnV0DQo+ID4+IHRoZWlyDQo+ID4+PiBzaWduYXR1cmVzIGFyZSBpbnRl bnRpb25hbGx5IGRpZmZlcmVudC4gTm8gbmVlZCB0byBkcmFnIGxlZ2FjeSBpbnRvDQo+ID4+IGl0 Lg0KPiA+Pj4NCj4gPj4+IE5COiBEb24ndCBjb21tZW50IG9uIHNwYWNlcyBmb3IgaW5kZW50YXRp b247IGEgcGF0Y2ggd2lsbCBmb2xsb3cNCj4gPj4+IERQREsNCj4gPj4gY29kaW5nDQo+ID4+PiBz dHlsZSBhbmQgdXNlIFRBQi4NCj4gPj4NCj4gPj4NCj4gPj4gSSB0aGluayB0aGVyZSB3ZXJlIGRp c2N1c3Npb25zIGluIG90aGVyIGRpcmVjdGlvbiAtIHJlbW92ZQ0KPiA+PiBydGVfbWVtY3B5KCkg Y29tcGxldGVseSBhbmQgdXNlIG1lbWNweSgpIGluc3RlYWQuLi4NCj4gPg0KPiA+IFllcywgdGhl IGhpZ2hseSBvcHRpbWl6ZWQgcnRlX21lbWNweSgpIGltcGxlbWVudGF0aW9uIG9mIG1lbWNweSgp IGhhcw0KPiBiZWNvbWUgb2Jzb2xldGUsIG5vdyB0aGF0IG1vZGVybiBjb21waWxlcnMgcHJvdmlk ZSBhbiBlZmZpY2llbnQgbWVtY3B5KCkNCj4gaW1wbGVtZW50YXRpb24uDQo+ID4NCj4gPiBJdCdz IGFuIGV4Y2VsbGVudCByZWZlcmVuY2UsIGJlY2F1c2Ugd2Ugc2hvdWxkIGxlYXJuIGZyb20gaXQs IGFuZCBhdm9pZA0KPiBpbnRyb2R1Y2luZyBzaW1pbGFyIG1pc3Rha2VzIHdpdGggbm9uLXRlbXBv cmFsIG1lbWNweS4NCj4gPg0KPiA+PiBCdXQgaWYgd2UgaGF2ZSBhIGdvb2QgdXNlIGNhc2UgZm9y IHRoYXQsIHRoZW4gSSBhbSBwb3NpdGl2ZSBpbg0KPiA+PiBwcmluY2lwbGUuDQo+ID4NCj4gPiBU aGUgc3RhbmRhcmQgQyBsaWJyYXJ5IGRvZXNuJ3Qgb2ZmZXIgbm9uLXRlbXBvcmFsIG1lbWNweSgp LCBzbyB3ZSBuZWVkIHRvDQo+IGltcGxlbWVudCBpdCBvdXJzZWx2ZXMuDQo+ID4NCj4gPj4gVGhv dWdoIEkgdGhpbmsgd2UgbmVlZCBhIGNsZWFyIHVzZS1jYXNlIHdpdGhpbiBkcGRrIGZvciBpdCB0 bw0KPiA+PiBkZW1vbnN0cmF0ZSBwZXJmb21hbmNlIGdhaW4uDQo+ID4NCj4gPiBUaGUgcGVyZm9y bWFuY2UgZ2FpbiBpcyB0byBhdm9pZCBwb2xsdXRpbmcgdGhlIGRhdGEgY2FjaGUuIERQREsgZXhh bXBsZQ0KPiBhcHBsaWNhdGlvbnMsIGxpa2UgbDNmd2QsIGFyZSBwcm9iYWJseSB0b28gcHJpbWl0 aXZlIHRvIG1lYXN1cmUgYW55IGJlbmVmaXQgaW4gdGhpcw0KPiByZWdhcmQuDQo+ID4NCj4gPj4g UHJvYmFibHkgY29weWluZyBwYWNrZXRzIHdpdGhpbiBwZHVtcCBsaWIsIG9yIGV4YW1wbGVzL2Rt YS4gb3IgLi4uDQo+ID4NCj4gPiBHb29kIHBvaW50IC0gdGhlIG5ldyBmdW5jdGlvbnMgc2hvdWxk IGJlIHVzZWQgc29tZXdoZXJlIHdpdGhpbiBEUERLLiBGb3INCj4gdGhpcyBwdXJwb3NlLCBJIHdp bGwgbG9vayBpbnRvIG1vZGlmeWluZyBydGVfcGt0bWJ1Zl9jb3B5KCksIHdoaWNoIGlzIHVzZWQg YnkNCj4gcGR1bXBfY29weSgpLCB0byB1c2Ugbm9uLXRlbXBvcmFsIGNvcHlpbmcgb2YgdGhlIHBh Y2tldCBkYXRhLg0KPiA+DQo+ID4+IEFub3RoZXIgdGhvdWdodCAtIGRvIHdlIHJlYWxseSBuZWVk IGEgc2VwYXJhdGUgaW5saW5lIGZ1bmN0aW9uIGZvcg0KPiA+PiBlYWNoIGZsYXZvdXI/DQo+ID4+ IE1pZ2h0IGJlIGp1c3Qgb25lIG5vbi1pbmxpbmUgcnRlX21lbWNweV9udChkc3QsIHNyYywgc2l6 ZSwgZmxhZ3MpLA0KPiA+PiB3aGVyZSBmbGFncyBjb3VsZCBiZSBjb21iaW5hdGlvbiBvZiBOVF9T UkMsIE5UX0RTVCwgYW5kIGtlZXANCj4gPj4gYWxpZ25tZW50IGRldGVjdGlvbi9kZWNpc2lvbnMg dG8gcGFydGljdWxhciBpbXBsZW1lbnRhdGlvbj8NCj4gPg0KPiA+IFRoYW5rIHlvdSBmb3IgdGhl IGZlZWRiYWNrLCBLb25zdGFudGluLg0KPiA+DQo+ID4gTXkgYW5zd2VyIHRvIHRoaXMgc3VnZ2Vz dGlvbiBnZXRzIGEgbGl0dGxlIGxvbmd3aW5kZWQuLi4NCj4gPg0KPiA+IExvb2tpbmcgYXQgdGhl IERQREsgcGNhcG5nIGxpYnJhcnksIGl0IGNvcGllcyBhIDQgYnl0ZSBhbGlnbmVkIG1ldGFkYXRh DQo+IHN0cnVjdHVyZSBzaXplZCAyOCBieXRlLiBTbyBpdCBjYW4gZG8gd2l0aCA0IGJ5dGUgYWxp Z25lZCBmdW5jdGlvbnMuDQo+ID4NCj4gPiBPdXIgYXBwbGljYXRpb24gY2FuIGNhcHR1cmUgcGFj a2V0cyBzdGFydGluZyBhdCB0aGUgSVAgaGVhZGVyLCB3aGljaCBpcyBvZmZzZXQNCj4gYnkgMTQg Ynl0ZSAoRXRoZXJuZXQgaGVhZGVyIHNpemUpIGZyb20gdGhlIHBhY2tldCBidWZmZXIsIHNvIGl0 IHJlcXVpcmVzIDIgYnl0ZQ0KPiBhbGlnbm1lbnQuIEFuZCB0aHVzLCByZXF1aXJpbmcgNCBieXRl IGFsaWdubWVudCBpcyBub3QgYWNjZXB0YWJsZS4NCj4gPg0KPiA+IE91ciBhcHBsaWNhdGlvbiB1 c2VzIDE2IGJ5dGUgYWxpZ25tZW50IGluIHRoZSBjYXB0dXJlIGJ1ZmZlciBhcmVhLCBhbmQgY2Fu DQo+IGJlbmVmaXQgZnJvbSAxNiBieXRlIGFsaWduZWQgZnVuY3Rpb25zLiBGdXJ0aGVybW9yZSwg eDg2IHByb2Nlc3NvcnMgcmVxdWlyZSAxNg0KPiBieXRlIGFsaWdubWVudCBmb3Igbm9uLXRlbXBv cmFsIGxvYWQgaW5zdHJ1Y3Rpb25zLCBzbyBJIHRoaW5rIGEgMTYgYnl0ZSBhbGlnbmVkDQo+IG5v bi10ZW1wb3JhbCBtZW1jcHkgZnVuY3Rpb24gc2hvdWxkIGJlIG9mZmVyZWQuDQo+IA0KPiANCj4g WWVzLCB4ODYgbmVlZHMgMTZCIGFsaWdubWVudCBmb3IgTlQgbG9hZC9zdG9yZXMgQnV0IHRoYXQn cyBzdXBwb3NlZCB0byBiZSBhcmNoDQo+IHNwZWNpZmljIGxpbWl0YXRpb24sIHRoYXQgd2UgcHJv YmFibHkgd2FudCB0byBoaWRlLCBubz8NCj4gSW5zaWRlIHRoZSBmdW5jdGlvbiBjYW4gY2hlY2sg YWxpZ25tZW50IG9mIGJvdGggc3JjIGFuZCBkc3QgYW5kIGRlY2lkZSBzaG91bGQgaXQNCj4gdXNl IE5UIGxvYWQvc3RvcmUgaW5zdHJ1Y3Rpb25zIG9yIGp1c3QgZG8gbm9ybWFsIGNvcHkuDQpJTU8s IHRoZSBub3JtYWwgY29weSBzaG91bGQgbm90IGJlIGRvbmUgYnkgdGhpcyBBUEkgdW5kZXIgYW55 IGNvbmRpdGlvbnMuIFdoeSBub3QgbGV0IHRoZSBhcHBsaWNhdGlvbiBjYWxsIG1lbWNweS9ydGVf bWVtY3B5IHdoZW4gdGhlIE5UIGNvcHkgaXMgbm90IGFwcGxpY2FibGU/IEl0IGhlbHBzIHRoZSBw cm9ncmFtbWVyIHRvIHVuZGVyc3RhbmQgYW5kIGRlYnVnIHRoZSBpc3N1ZXMgbXVjaCBlYXNpZXIu DQoNCj4gDQo+IA0KPiA+IFdoaWxlIHdvcmtpbmcgb24gdGhlc2UgZnVudGlvbnMsIEkgZXhwZXJp bWVudGVkIHdpdGggYW4gcnRlX21lbWNweV9udCgpDQo+IHRha2luZyBmbGFncywgd2hpY2ggaXMg YWxzbyBteSBwZXJzb25hbCBwcmVmZXJlbmNlLCBidXQgaGF2ZW4ndCBzdWNjZWVkIHlldC4NCj4g RXNwZWNpYWxseSB3aGVuIGNvcHlpbmcgYSAxNiBieXRlIGFsaWduZWQgc3RydWN0dXJlIG9mIG9u bHkgMTYgYnl0ZSwgdGhlDQo+IG92ZXJoZWFkIG9mIHRoZSBmdW5jdGlvbiBjYWxsICsgY29tcGFy aW5nIHRoZSBmbGFncyArIHRoZSBjb3B5IGxvb3Agb3ZlcmhlYWQgaXMNCj4gc2lnbmlmaWNhbnQs IGNvbXBhcmVkIHRvIGlubGluZSBjb2RlIGNvbnNpc3Rpbmcgb2Ygb25seSBvbmUgcGFpciBvZiAi bW92bnRkcWENCj4gKCVyc2kpLCV4bW0wOyBtb3ZudGRxICV4bW0wLCglcmRpKSIgaW5zdHJ1Y3Rp b25zLg0KPiA+DQo+ID4gUmVtZW1iZXIgdGhhdCBhIG5vbi1pbmxpbmVkIHJ0ZV9tZW1jcHlfbnQo KSB3aWxsIGJlIGNhbGxlZCB3aXRoIHZlcnkNCj4gdmFyeWluZyBzaXplLCBkdWUgdG8gdGhlIHR5 cGljYWwgbWl4IG9mIHNtYWxsIGFuZCBiaWcgcGFja2V0cywgc28gYnJhbmNoIHByZWRpY3Rpb24N Cj4gd2lsbCBub3QgaGVscC4NCj4gPg0KPiA+IFRoaXMgUkZDIGRvZXMgbm90IHlldCBzaG93IHRo ZSBydGVfbWVtY3B5X250KCkgZnVuY3Rpb24gaGFuZGxpbmcgdW5hbGlnbmVkDQo+IGxvYWQvc3Rv cmUsIGJ1dCBpdCBpcyBtb3JlIGNvbXBsZXggdGhhbiB0aGUgYWxpZ25lZCBmdW5jdGlvbnMuIFNv IEkgdGhpbmsgdGhlDQo+IGFsaWduZWQgdmFyaWFudHMgYXJlIHdhcnJhbnRlZCAtIGZvciBwZXJm b3JtYW5jZSByZWFzb25zLg0KPiA+DQo+ID4gU29tZSBvZiB0aGUgbmVlZCBmb3IgZXhwb3Npbmcg aW5kaXZpZHVhbCBmdW5jdGlvbnMgZm9yIGRpZmZlcmVudCBhbGlnbm1lbnQNCj4gc3RlbXMgZnJv bSB0aGUgY29tcGlsZXIgYmVpbmcgdW5hYmxlIHRvIGRldGVybWluZSB0aGUgYWxpZ25tZW50IG9m IHRoZSBzb3VyY2UNCj4gYW5kIGRlc3RpbmF0aW9uIHBvaW50ZXJzIGF0IGJ1aWxkIHRpbWUuIFNv IHdlIG5lZWQgdG8gaGVscCB0aGUgY29tcGlsZXIgd2l0aCB0aGlzDQo+IGF0IGJ1aWxkIHRpbWUs IGFuZCB0aHVzIHRoZSBuZWVkIGZvciBpbmxpbmluZyB0aGUgZnVuY3Rpb24uIElmIHdlIGV4cG9z ZSBhIGJ1bmNoDQo+IG9mIHNtYWxsIGlubGluZSBmdW5jdGlvbnMgb3IgYSBiaWcgaW5saW5lIGZ1 bmN0aW9uIHdpdGggZmxhZ3Mgc2VlbXMgdG8gYmUgYSBtYXR0ZXINCj4gb2YgdGFzdGUuDQo+ID4N Cj4gPiBUaGlua2luZyBhYm91dCBpdCwgeW91IGFyZSBwcm9iYWJseSByaWdodCB0aGF0IGV4cG9z aW5nIGEgc2luZ2xlIGZ1bmN0aW9uIHdpdGgNCj4gZmxhZ3MgaXMgYmV0dGVyIGZvciBkb2N1bWVu dGF0aW9uIHB1cnBvc2VzIGFuZCBlYXNpZXIgZm9yIG90aGVyIGFyY2hpdGVjdHVyZXMgdG8NCj4g aW1wbGVtZW50LiBCdXQgaXQgc3RpbGwgbmVlZHMgdG8gYmUgaW5saW5lLCBmb3IgdGhlIHJlYXNv bnMgZGVzY3JpYmVkIGFib3ZlLg0KPiANCj4gDQo+IE9rLCBteSBpbml0aWFsIHRob3VnaHQgd2Fz IHRoYXQgbWFpbiB1c2UtY2FzZSBmb3IgaXQgd291bGQgYmUgY29weWluZyBvZiBiaWcNCj4gY2h1 bmtzIG9mIGRhdGEsIGJ1dCBmcm9tIHlvdXIgZGVzY3JpcHRpb24gaXQgbWlnaHQgbm90IGJlIHRo ZSBjYXNlLg0KPiBZZXMsIGZvciBqdXN0IDE2LzMyQiBjb3B5IGZ1bmN0aW9uIGNhbGwgb3Zlcmhl YWQgbWlnaHQgYmUgd2F5IHRvbyBoaWdoLi4uDQo+IEFzIGFub3RoZXIgYWx0ZXJuYXRpdmUgLSB3 b3VsZCBtZW1jcHlfbnRfYnVsaygpIGhlbHAgc29tZWhvdz8NCj4gSXQgY2FuIGRvIGNvcHlpbmcg Zm9yIHRoZSBzZXZlcmFsIHNyYy9kc3QgcGFpcnMgYXQgb25jZSBhbmQgdGhhdCBtaWdodCBoZWxw IHRvDQo+IGFtb3J0aXplIGNvc3Qgb2YgZnVuY3Rpb24gY2FsbC4NCj4gDQo+IA0KPiA+DQo+ID4+ DQo+ID4+DQo+ID4+PiBbMV0gaHR0cHM6Ly93d3cuaW50ZWwuY29tL2NvbnRlbnQvd3d3L3VzL2Vu L2RvY3MvaW50cmluc2ljcy0NCj4gPj4gZ3VpZGUvaW5kZXguaHRtbCN0ZXh0PV9tbV9zdHJlYW1f bG9hZA0KPiA+Pj4gWzJdIGh0dHBzOi8vZGV2ZWxvcGVyLmFybS5jb20vZG9jdW1lbnRhdGlvbi8x MDAwNzYvMDEwMC9BNjQtDQo+ID4+IEluc3RydWN0aW9uLVNldC1SZWZlcmVuY2UvQTY0LUZsb2F0 aW5nLXBvaW50LUluc3RydWN0aW9ucy9MRE5QLS1TSU1ELQ0KPiA+PiBhbmQtRlAtDQo+ID4+Pg0K PiA+Pj4gVjI6DQo+ID4+PiAtIE9ubHkgY29weSBmcm9tIG5vbi10ZW1wb3JhbCBzb3VyY2UgdG8g bm9uLXRlbXBvcmFsIGRlc3RpbmF0aW9uLg0KPiA+Pj4gICAgIEkuZS4gcmVtb3ZlIHRoZSB0d28g dmFyaWFudHMgd2l0aCBvbmx5IHNvdXJjZSBhbmQvb3IgZGVzdGluYXRpb24NCj4gPj4gYmVpbmcN Cj4gPj4+ICAgICBub24tdGVtcG9yYWwuDQo+ID4+PiAtIERvIG5vdCByZXF1aXJlIGFsaWdubWVu dC4NCj4gPj4+ICAgICBJbnN0ZWFkLCBvZmZlciBhZGRpdGlvbmFsIDQgYW5kIDE2IGJ5dGUgYWxp Z25lZCBmdW5jdGlvbnMgZm9yDQo+ID4+IHBlcmZvcm1hbmNlDQo+ID4+PiAgICAgcHVycG9zZXMu DQo+ID4+PiAtIEltcGxlbWVudGVkIHR3byBvZiB0aGUgZnVuY3Rpb25zIGZvciB4ODYuDQo+ID4+ PiAtIFJlbW92ZSBtZW1zZXQgZnVuY3Rpb24uDQo+ID4+Pg0KPiA+Pj4gU2lnbmVkLW9mZi1ieTog TW9ydGVuIEJyw7hydXAgPG1iQHNtYXJ0c2hhcmVzeXN0ZW1zLmNvbT4NCj4gPj4+IC0tLQ0KPiA+ Pj4NCj4gPj4+IC8qKg0KPiA+Pj4gICAgKiBAd2FybmluZw0KPiA+Pj4gICAgKiBAYiBFWFBFUklN RU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2Ugd2l0aG91dCBwcmlvciBub3RpY2UuDQo+ID4+PiAg ICAqDQo+ID4+PiAgICAqIENvcHkgZGF0YSBmcm9tIG5vbi10ZW1wb3JhbCBzb3VyY2UgdG8gbm9u LXRlbXBvcmFsIGRlc3RpbmF0aW9uLg0KPiA+Pj4gICAgKg0KPiA+Pj4gICAgKiBAcGFyYW0gZHN0 DQo+ID4+PiAgICAqICAgUG9pbnRlciB0byB0aGUgbm9uLXRlbXBvcmFsIGRlc3RpbmF0aW9uIG9m IHRoZSBkYXRhLg0KPiA+Pj4gICAgKiAgIFNob3VsZCBiZSA0IGJ5dGUgYWxpZ25lZCwgZm9yIG9w dGltYWwgcGVyZm9ybWFuY2UuDQo+ID4+PiAgICAqIEBwYXJhbSBzcmMNCj4gPj4+ICAgICogICBQ b2ludGVyIHRvIHRoZSBub24tdGVtcG9yYWwgc291cmNlIGRhdGEuDQo+ID4+PiAgICAqICAgTm8g YWxpZ25tZW50IHJlcXVpcmVtZW50cy4NCj4gPj4+ICAgICogQHBhcmFtIGxlbg0KPiA+Pj4gICAg KiAgIE51bWJlciBvZiBieXRlcyB0byBjb3B5Lg0KPiA+Pj4gICAgKiAgIFNob3VsZCBiZSBiZSBk aXZpc2libGUgYnkgNCwgZm9yIG9wdGltYWwgcGVyZm9ybWFuY2UuDQo+ID4+PiAgICAqLw0KPiA+ Pj4gX19ydGVfZXhwZXJpbWVudGFsDQo+ID4+PiBzdGF0aWMgX19ydGVfYWx3YXlzX2lubGluZQ0K PiA+Pj4gX19hdHRyaWJ1dGVfXygoX19ub25udWxsX18oMSwgMiksIF9fYWNjZXNzX18od3JpdGVf b25seSwgMSwgMyksDQo+ID4+IF9fYWNjZXNzX18ocmVhZF9vbmx5LCAyLCAzKSkpDQo+ID4+PiB2 b2lkIHJ0ZV9tZW1jcHlfbnQodm9pZCAqIF9fcnRlX3Jlc3RyaWN0IGRzdCwgY29uc3Qgdm9pZCAq DQo+ID4+IF9fcnRlX3Jlc3RyaWN0IHNyYywgc2l6ZV90IGxlbikNCj4gPj4+IC8qIEltcGxlbWVu dGF0aW9uIFQuQi5ELiAqLw0KPiA+Pj4NCj4gPj4+IC8qKg0KPiA+Pj4gICAgKiBAd2FybmluZw0K PiA+Pj4gICAgKiBAYiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2Ugd2l0aG91dCBw cmlvciBub3RpY2UuDQo+ID4+PiAgICAqDQo+ID4+PiAgICAqIENvcHkgZGF0YSBpbiBibG9ja3Mg b2YgMTYgYnl0ZSBmcm9tIGFsaWduZWQgbm9uLXRlbXBvcmFsIHNvdXJjZQ0KPiA+Pj4gICAgKiB0 byBhbGlnbmVkIG5vbi10ZW1wb3JhbCBkZXN0aW5hdGlvbi4NCj4gPj4+ICAgICoNCj4gPj4+ICAg ICogQHBhcmFtIGRzdA0KPiA+Pj4gICAgKiAgIFBvaW50ZXIgdG8gdGhlIG5vbi10ZW1wb3JhbCBk ZXN0aW5hdGlvbiBvZiB0aGUgZGF0YS4NCj4gPj4+ICAgICogICBNdXN0IGJlIDE2IGJ5dGUgYWxp Z25lZC4NCj4gPj4+ICAgICogQHBhcmFtIHNyYw0KPiA+Pj4gICAgKiAgIFBvaW50ZXIgdG8gdGhl IG5vbi10ZW1wb3JhbCBzb3VyY2UgZGF0YS4NCj4gPj4+ICAgICogICBNdXN0IGJlIDE2IGJ5dGUg YWxpZ25lZC4NCj4gPj4+ICAgICogQHBhcmFtIGxlbg0KPiA+Pj4gICAgKiAgIE51bWJlciBvZiBi eXRlcyB0byBjb3B5Lg0KPiA+Pj4gICAgKiAgIE11c3QgYmUgZGl2aXNpYmxlIGJ5IDE2Lg0KPiA+ Pj4gICAgKi8NCj4gPj4+IF9fcnRlX2V4cGVyaW1lbnRhbA0KPiA+Pj4gc3RhdGljIF9fcnRlX2Fs d2F5c19pbmxpbmUNCj4gPj4+IF9fYXR0cmlidXRlX18oKF9fbm9ubnVsbF9fKDEsIDIpLCBfX2Fj Y2Vzc19fKHdyaXRlX29ubHksIDEsIDMpLA0KPiA+PiBfX2FjY2Vzc19fKHJlYWRfb25seSwgMiwg MykpKQ0KPiA+Pj4gdm9pZCBydGVfbWVtY3B5X250MTZhKHZvaWQgKiBfX3J0ZV9yZXN0cmljdCBk c3QsIGNvbnN0IHZvaWQgKg0KPiA+PiBfX3J0ZV9yZXN0cmljdCBzcmMsIHNpemVfdCBsZW4pDQo+ ID4+PiB7DQo+ID4+PiAgICAgICBjb25zdCB2b2lkICogY29uc3QgIGVuZCA9IFJURV9QVFJfQURE KHNyYywgbGVuKTsNCj4gPj4+DQo+ID4+PiAgICAgICBSVEVfQVNTRVJUKHJ0ZV9pc19hbGlnbmVk KGRzdCwgc2l6ZW9mKF9fbTEyOGkpKSk7DQo+ID4+PiAgICAgICBSVEVfQVNTRVJUKHJ0ZV9pc19h bGlnbmVkKHNyYywgc2l6ZW9mKF9fbTEyOGkpKSk7DQo+ID4+PiAgICAgICBSVEVfQVNTRVJUKHJ0 ZV9pc19hbGlnbmVkKGxlbiwgc2l6ZW9mKF9fbTEyOGkpKSk7DQo+ID4+Pg0KPiA+Pj4gICAgICAg LyogQ29weSBsYXJnZSBwb3J0aW9uIG9mIGRhdGEuICovDQo+ID4+PiAgICAgICB3aGlsZSAoUlRF X1BUUl9ESUZGKGVuZCwgc3JjKSA+PSA0ICogc2l6ZW9mKF9fbTEyOGkpKSB7DQo+ID4+PiAgICAg ICAgICAgcmVnaXN0ZXIgX19tMTI4aSAgICB4bW0wLCB4bW0xLCB4bW0yLCB4bW0zOw0KPiA+Pj4N Cj4gPj4+IC8qIE5vdGU6IFdvcmthcm91bmQgZm9yIF9tbV9zdHJlYW1fbG9hZF9zaTEyOCgpIG5v dCB0YWtpbmcgYSBjb25zdA0KPiA+PiBwb2ludGVyIGFzIHBhcmFtZXRlci4gKi8NCj4gPj4+ICNw cmFnbWEgR0NDIGRpYWdub3N0aWMgcHVzaA0KPiA+Pj4gI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBp Z25vcmVkICItV2Rpc2NhcmRlZC1xdWFsaWZpZXJzIg0KPiA+Pj4gICAgICAgICAgIHhtbTAgPSBf bW1fc3RyZWFtX2xvYWRfc2kxMjgoUlRFX1BUUl9BREQoc3JjLCAwICoNCj4gPj4gc2l6ZW9mKF9f bTEyOGkpKSk7DQo+ID4+PiAgICAgICAgICAgeG1tMSA9IF9tbV9zdHJlYW1fbG9hZF9zaTEyOChS VEVfUFRSX0FERChzcmMsIDEgKg0KPiA+PiBzaXplb2YoX19tMTI4aSkpKTsNCj4gPj4+ICAgICAg ICAgICB4bW0yID0gX21tX3N0cmVhbV9sb2FkX3NpMTI4KFJURV9QVFJfQUREKHNyYywgMiAqDQo+ ID4+IHNpemVvZihfX20xMjhpKSkpOw0KPiA+Pj4gICAgICAgICAgIHhtbTMgPSBfbW1fc3RyZWFt X2xvYWRfc2kxMjgoUlRFX1BUUl9BREQoc3JjLCAzICoNCj4gPj4gc2l6ZW9mKF9fbTEyOGkpKSk7 DQo+ID4+PiAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcA0KPiA+Pj4gICAgICAgICAgIF9tbV9z dHJlYW1fc2kxMjgoUlRFX1BUUl9BREQoZHN0LCAwICogc2l6ZW9mKF9fbTEyOGkpKSwNCj4gPj4g eG1tMCk7DQo+ID4+PiAgICAgICAgICAgX21tX3N0cmVhbV9zaTEyOChSVEVfUFRSX0FERChkc3Qs IDEgKiBzaXplb2YoX19tMTI4aSkpLA0KPiA+PiB4bW0xKTsNCj4gPj4+ICAgICAgICAgICBfbW1f c3RyZWFtX3NpMTI4KFJURV9QVFJfQUREKGRzdCwgMiAqIHNpemVvZihfX20xMjhpKSksDQo+ID4+ IHhtbTIpOw0KPiA+Pj4gICAgICAgICAgIF9tbV9zdHJlYW1fc2kxMjgoUlRFX1BUUl9BREQoZHN0 LCAzICogc2l6ZW9mKF9fbTEyOGkpKSwNCj4gPj4geG1tMyk7DQo+ID4+PiAgICAgICAgICAgc3Jj ID0gUlRFX1BUUl9BREQoc3JjLCA0ICogc2l6ZW9mKF9fbTEyOGkpKTsNCj4gPj4+ICAgICAgICAg ICBkc3QgPSBSVEVfUFRSX0FERChkc3QsIDQgKiBzaXplb2YoX19tMTI4aSkpOw0KPiA+Pj4gICAg ICAgfQ0KPiA+Pj4NCj4gPj4+ICAgICAgIC8qIENvcHkgcmVtYWluaW5nIGRhdGEuICovDQo+ID4+ PiAgICAgICB3aGlsZSAoc3JjICE9IGVuZCkgew0KPiA+Pj4gICAgICAgICAgIHJlZ2lzdGVyIF9f bTEyOGkgICAgeG1tOw0KPiA+Pj4NCj4gPj4+IC8qIE5vdGU6IFdvcmthcm91bmQgZm9yIF9tbV9z dHJlYW1fbG9hZF9zaTEyOCgpIG5vdCB0YWtpbmcgYSBjb25zdA0KPiA+PiBwb2ludGVyIGFzIHBh cmFtZXRlci4gKi8NCj4gPj4+ICNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcHVzaA0KPiA+Pj4gI3By YWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV2Rpc2NhcmRlZC1xdWFsaWZpZXJzIg0KPiA+ Pj4gICAgICAgICAgIHhtbSA9IF9tbV9zdHJlYW1fbG9hZF9zaTEyOChzcmMpOyAjcHJhZ21hIEdD QyBkaWFnbm9zdGljDQo+ID4+PiBwb3ANCj4gPj4+ICAgICAgICAgICBfbW1fc3RyZWFtX3NpMTI4 KGRzdCwgeG1tKTsNCj4gPj4+ICAgICAgICAgICBzcmMgPSBSVEVfUFRSX0FERChzcmMsIHNpemVv ZihfX20xMjhpKSk7DQo+ID4+PiAgICAgICAgICAgZHN0ID0gUlRFX1BUUl9BREQoZHN0LCBzaXpl b2YoX19tMTI4aSkpOw0KPiA+Pj4gICAgICAgfQ0KPiA+Pj4gfQ0KPiA+Pj4NCj4gPj4+IC8qKg0K PiA+Pj4gICAgKiBAd2FybmluZw0KPiA+Pj4gICAgKiBAYiBFWFBFUklNRU5UQUw6IHRoaXMgQVBJ IG1heSBjaGFuZ2Ugd2l0aG91dCBwcmlvciBub3RpY2UuDQo+ID4+PiAgICAqDQo+ID4+PiAgICAq IENvcHkgZGF0YSBpbiBibG9ja3Mgb2YgNCBieXRlIGZyb20gYWxpZ25lZCBub24tdGVtcG9yYWwg c291cmNlDQo+ID4+PiAgICAqIHRvIGFsaWduZWQgbm9uLXRlbXBvcmFsIGRlc3RpbmF0aW9uLg0K PiA+Pj4gICAgKg0KPiA+Pj4gICAgKiBAcGFyYW0gZHN0DQo+ID4+PiAgICAqICAgUG9pbnRlciB0 byB0aGUgbm9uLXRlbXBvcmFsIGRlc3RpbmF0aW9uIG9mIHRoZSBkYXRhLg0KPiA+Pj4gICAgKiAg IE11c3QgYmUgNCBieXRlIGFsaWduZWQuDQo+ID4+PiAgICAqIEBwYXJhbSBzcmMNCj4gPj4+ICAg ICogICBQb2ludGVyIHRvIHRoZSBub24tdGVtcG9yYWwgc291cmNlIGRhdGEuDQo+ID4+PiAgICAq ICAgTXVzdCBiZSA0IGJ5dGUgYWxpZ25lZC4NCj4gPj4+ICAgICogQHBhcmFtIGxlbg0KPiA+Pj4g ICAgKiAgIE51bWJlciBvZiBieXRlcyB0byBjb3B5Lg0KPiA+Pj4gICAgKiAgIE11c3QgYmUgZGl2 aXNpYmxlIGJ5IDQuDQo+ID4+PiAgICAqLw0KPiA+Pj4gX19ydGVfZXhwZXJpbWVudGFsDQo+ID4+ PiBzdGF0aWMgX19ydGVfYWx3YXlzX2lubGluZQ0KPiA+Pj4gX19hdHRyaWJ1dGVfXygoX19ub25u dWxsX18oMSwgMiksIF9fYWNjZXNzX18od3JpdGVfb25seSwgMSwgMyksDQo+ID4+IF9fYWNjZXNz X18ocmVhZF9vbmx5LCAyLCAzKSkpDQo+ID4+PiB2b2lkIHJ0ZV9tZW1jcHlfbnQ0YSh2b2lkICog X19ydGVfcmVzdHJpY3QgZHN0LCBjb25zdCB2b2lkICoNCj4gPj4gX19ydGVfcmVzdHJpY3Qgc3Jj LCBzaXplX3QgbGVuKQ0KPiA+Pj4gew0KPiA+Pj4gICAgICAgaW50MzJfdCAgICAgICAgICAgICBi dWZbc2l6ZW9mKF9fbTEyOGkpIC8gc2l6ZW9mKGludDMyX3QpXQ0KPiA+PiBfX3J0ZV9hbGlnbmVk KHNpemVvZihfX20xMjhpKSk7DQo+ID4+PiAgICAgICAvKiogQWRkcmVzcyBvZiBzb3VyY2UgZGF0 YSwgcm91bmRlZCBkb3duIHRvIGFjaGlldmUgYWxpZ25tZW50Lg0KPiA+PiAqLw0KPiA+Pj4gICAg ICAgY29uc3Qgdm9pZCAqICAgICAgICBzcmNhID0gUlRFX1BUUl9BTElHTl9GTE9PUihzcmMsDQo+ ID4+IHNpemVvZihfX20xMjhpKSk7DQo+ID4+PiAgICAgICAvKiogQWRkcmVzcyBvZiBlbmQgb2Yg c291cmNlIGRhdGEsIHJvdW5kZWQgZG93biB0byBhY2hpZXZlDQo+ID4+IGFsaWdubWVudC4gKi8N Cj4gPj4+ICAgICAgIGNvbnN0IHZvaWQgKiBjb25zdCAgc3JjZW5kYSA9DQo+ID4+IFJURV9QVFJf QUxJR05fRkxPT1IoUlRFX1BUUl9BREQoc3JjLCBsZW4pLCBzaXplb2YoX19tMTI4aSkpOw0KPiA+ Pj4gICAgICAgY29uc3QgaW50ICAgICAgICAgICBvZmZzZXQgPSAgUlRFX1BUUl9ESUZGKHNyYywg c3JjYSkgLw0KPiA+PiBzaXplb2YoaW50MzJfdCk7DQo+ID4+PiAgICAgICByZWdpc3RlciBfX20x MjhpICAgIHhtbTA7DQo+ID4+Pg0KPiA+Pj4gICAgICAgUlRFX0FTU0VSVChydGVfaXNfYWxpZ25l ZChkc3QsIHNpemVvZihpbnQzMl90KSkpOw0KPiA+Pj4gICAgICAgUlRFX0FTU0VSVChydGVfaXNf YWxpZ25lZChzcmMsIHNpemVvZihpbnQzMl90KSkpOw0KPiA+Pj4gICAgICAgUlRFX0FTU0VSVChy dGVfaXNfYWxpZ25lZChsZW4sIHNpemVvZihpbnQzMl90KSkpOw0KPiA+Pj4NCj4gPj4+ICAgICAg IGlmICh1bmxpa2VseShsZW4gPT0gMCkpIHJldHVybjsNCj4gPj4+DQo+ID4+PiAgICAgICAvKiBD b3B5IGZpcnN0LCBub24tX19tMTI4aSBhbGlnbmVkLCBwYXJ0IG9mIHNvdXJjZSBkYXRhLiAqLw0K PiA+Pj4gICAgICAgaWYgKG9mZnNldCkgew0KPiA+Pj4gLyogTm90ZTogV29ya2Fyb3VuZCBmb3Ig X21tX3N0cmVhbV9sb2FkX3NpMTI4KCkgbm90IHRha2luZyBhIGNvbnN0DQo+ID4+IHBvaW50ZXIg YXMgcGFyYW1ldGVyLiAqLw0KPiA+Pj4gI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoDQo+ID4+ PiAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGlzY2FyZGVkLXF1YWxpZmllcnMi DQo+ID4+PiAgICAgICAgICAgeG1tMCA9IF9tbV9zdHJlYW1fbG9hZF9zaTEyOChzcmNhKTsNCj4g Pj4+ICAgICAgICAgICBfbW1fc3RvcmVfc2kxMjgoKHZvaWQgKilidWYsIHhtbTApOyAjcHJhZ21h IEdDQyBkaWFnbm9zdGljDQo+ID4+PiBwb3ANCj4gPj4+ICAgICAgICAgICBzd2l0Y2ggKG9mZnNl dCkgew0KPiA+Pj4gICAgICAgICAgICAgICBjYXNlIDE6DQo+ID4+PiAgICAgICAgICAgICAgICAg ICBfbW1fc3RyZWFtX3NpMzIoUlRFX1BUUl9BREQoZHN0LCAwICoNCj4gPj4gc2l6ZW9mKGludDMy X3QpKSwgYnVmWzFdKTsNCj4gPj4+ICAgICAgICAgICAgICAgICAgIGlmICh1bmxpa2VseShsZW4g PT0gMSAqIHNpemVvZihpbnQzMl90KSkpIHJldHVybjsNCj4gPj4+ICAgICAgICAgICAgICAgICAg IF9tbV9zdHJlYW1fc2kzMihSVEVfUFRSX0FERChkc3QsIDEgKg0KPiA+PiBzaXplb2YoaW50MzJf dCkpLCBidWZbMl0pOw0KPiA+Pj4gICAgICAgICAgICAgICAgICAgaWYgKHVubGlrZWx5KGxlbiA9 PSAyICogc2l6ZW9mKGludDMyX3QpKSkgcmV0dXJuOw0KPiA+Pj4gICAgICAgICAgICAgICAgICAg X21tX3N0cmVhbV9zaTMyKFJURV9QVFJfQUREKGRzdCwgMiAqDQo+ID4+IHNpemVvZihpbnQzMl90 KSksIGJ1ZlszXSk7DQo+ID4+PiAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gPj4+ICAgICAg ICAgICAgICAgY2FzZSAyOg0KPiA+Pj4gICAgICAgICAgICAgICAgICAgX21tX3N0cmVhbV9zaTMy KFJURV9QVFJfQUREKGRzdCwgMCAqDQo+ID4+IHNpemVvZihpbnQzMl90KSksIGJ1ZlsyXSk7DQo+ ID4+PiAgICAgICAgICAgICAgICAgICBpZiAodW5saWtlbHkobGVuID09IDEgKiBzaXplb2YoaW50 MzJfdCkpKSByZXR1cm47DQo+ID4+PiAgICAgICAgICAgICAgICAgICBfbW1fc3RyZWFtX3NpMzIo UlRFX1BUUl9BREQoZHN0LCAxICoNCj4gPj4gc2l6ZW9mKGludDMyX3QpKSwgYnVmWzNdKTsNCj4g Pj4+ICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+Pj4gICAgICAgICAgICAgICBjYXNlIDM6 DQo+ID4+PiAgICAgICAgICAgICAgICAgICBfbW1fc3RyZWFtX3NpMzIoUlRFX1BUUl9BREQoZHN0 LCAwICoNCj4gPj4gc2l6ZW9mKGludDMyX3QpKSwgYnVmWzNdKTsNCj4gPj4+ICAgICAgICAgICAg ICAgICAgIGJyZWFrOw0KPiA+Pj4gICAgICAgICAgIH0NCj4gPj4+ICAgICAgICAgICBzcmNhID0g UlRFX1BUUl9BREQoc3JjYSwgKDQgLSBvZmZzZXQpICogc2l6ZW9mKGludDMyX3QpKTsNCj4gPj4+ ICAgICAgICAgICBkc3QgPSBSVEVfUFRSX0FERChkc3QsICg0IC0gb2Zmc2V0KSAqIHNpemVvZihp bnQzMl90KSk7DQo+ID4+PiAgICAgICB9DQo+ID4+Pg0KPiA+Pj4gICAgICAgLyogQ29weSBtaWRk bGUsIF9fbTEyOGkgYWxpZ25lZCwgcGFydCBvZiBzb3VyY2UgZGF0YS4gKi8NCj4gPj4+ICAgICAg IHdoaWxlIChzcmNhICE9IHNyY2VuZGEpIHsNCj4gPj4+IC8qIE5vdGU6IFdvcmthcm91bmQgZm9y IF9tbV9zdHJlYW1fbG9hZF9zaTEyOCgpIG5vdCB0YWtpbmcgYSBjb25zdA0KPiA+PiBwb2ludGVy IGFzIHBhcmFtZXRlci4gKi8NCj4gPj4+ICNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcHVzaA0KPiA+ Pj4gI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV2Rpc2NhcmRlZC1xdWFsaWZpZXJz Ig0KPiA+Pj4gICAgICAgICAgIHhtbTAgPSBfbW1fc3RyZWFtX2xvYWRfc2kxMjgoc3JjYSk7ICNw cmFnbWEgR0NDIGRpYWdub3N0aWMNCj4gPj4+IHBvcA0KPiA+Pj4gICAgICAgICAgIF9tbV9zdG9y ZV9zaTEyOCgodm9pZCAqKWJ1ZiwgeG1tMCk7DQo+ID4+PiAgICAgICAgICAgX21tX3N0cmVhbV9z aTMyKFJURV9QVFJfQUREKGRzdCwgMCAqIHNpemVvZihpbnQzMl90KSksDQo+ID4+IGJ1ZlswXSk7 DQo+ID4+PiAgICAgICAgICAgX21tX3N0cmVhbV9zaTMyKFJURV9QVFJfQUREKGRzdCwgMSAqIHNp emVvZihpbnQzMl90KSksDQo+ID4+IGJ1ZlsxXSk7DQo+ID4+PiAgICAgICAgICAgX21tX3N0cmVh bV9zaTMyKFJURV9QVFJfQUREKGRzdCwgMiAqIHNpemVvZihpbnQzMl90KSksDQo+ID4+IGJ1Zlsy XSk7DQo+ID4+PiAgICAgICAgICAgX21tX3N0cmVhbV9zaTMyKFJURV9QVFJfQUREKGRzdCwgMyAq IHNpemVvZihpbnQzMl90KSksDQo+ID4+IGJ1ZlszXSk7DQo+ID4+PiAgICAgICAgICAgc3JjYSA9 IFJURV9QVFJfQUREKHNyY2EsIHNpemVvZihfX20xMjhpKSk7DQo+ID4+PiAgICAgICAgICAgZHN0 ID0gUlRFX1BUUl9BREQoZHN0LCA0ICogc2l6ZW9mKGludDMyX3QpKTsNCj4gPj4+ICAgICAgIH0N Cj4gPj4+DQo+ID4+PiAgICAgICAvKiBDb3B5IGxhc3QsIG5vbi1fX20xMjhpIGFsaWduZWQsIHBh cnQgb2Ygc291cmNlIGRhdGEuICovDQo+ID4+PiAgICAgICBpZiAoUlRFX1BUUl9ESUZGKHNyY2Es IHNyYykgIT0gNCkgew0KPiA+Pj4gLyogTm90ZTogV29ya2Fyb3VuZCBmb3IgX21tX3N0cmVhbV9s b2FkX3NpMTI4KCkgbm90IHRha2luZyBhIGNvbnN0DQo+ID4+IHBvaW50ZXIgYXMgcGFyYW1ldGVy LiAqLw0KPiA+Pj4gI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoDQo+ID4+PiAjcHJhZ21hIEdD QyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGlzY2FyZGVkLXF1YWxpZmllcnMiDQo+ID4+PiAgICAg ICAgICAgeG1tMCA9IF9tbV9zdHJlYW1fbG9hZF9zaTEyOChzcmNhKTsNCj4gPj4+ICAgICAgICAg ICBfbW1fc3RvcmVfc2kxMjgoKHZvaWQgKilidWYsIHhtbTApOyAjcHJhZ21hIEdDQyBkaWFnbm9z dGljDQo+ID4+PiBwb3ANCj4gPj4+ICAgICAgICAgICBzd2l0Y2ggKG9mZnNldCkgew0KPiA+Pj4g ICAgICAgICAgICAgICBjYXNlIDE6DQo+ID4+PiAgICAgICAgICAgICAgICAgICBfbW1fc3RyZWFt X3NpMzIoUlRFX1BUUl9BREQoZHN0LCAwICoNCj4gPj4gc2l6ZW9mKGludDMyX3QpKSwgYnVmWzBd KTsNCj4gPj4+ICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+Pj4gICAgICAgICAgICAgICBj YXNlIDI6DQo+ID4+PiAgICAgICAgICAgICAgICAgICBfbW1fc3RyZWFtX3NpMzIoUlRFX1BUUl9B REQoZHN0LCAwICoNCj4gPj4gc2l6ZW9mKGludDMyX3QpKSwgYnVmWzBdKTsNCj4gPj4+ICAgICAg ICAgICAgICAgICAgIGlmICh1bmxpa2VseShSVEVfUFRSX0RJRkYoc3JjYSwgc3JjKSA9PSAxICoN Cj4gPj4gc2l6ZW9mKGludDMyX3QpKSkgcmV0dXJuOw0KPiA+Pj4gICAgICAgICAgICAgICAgICAg X21tX3N0cmVhbV9zaTMyKFJURV9QVFJfQUREKGRzdCwgMSAqDQo+ID4+IHNpemVvZihpbnQzMl90 KSksIGJ1ZlsxXSk7DQo+ID4+PiAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gPj4+ICAgICAg ICAgICAgICAgY2FzZSAzOg0KPiA+Pj4gICAgICAgICAgICAgICAgICAgX21tX3N0cmVhbV9zaTMy KFJURV9QVFJfQUREKGRzdCwgMCAqDQo+ID4+IHNpemVvZihpbnQzMl90KSksIGJ1ZlswXSk7DQo+ ID4+PiAgICAgICAgICAgICAgICAgICBpZiAodW5saWtlbHkoUlRFX1BUUl9ESUZGKHNyY2EsIHNy YykgPT0gMSAqDQo+ID4+IHNpemVvZihpbnQzMl90KSkpIHJldHVybjsNCj4gPj4+ICAgICAgICAg ICAgICAgICAgIF9tbV9zdHJlYW1fc2kzMihSVEVfUFRSX0FERChkc3QsIDEgKg0KPiA+PiBzaXpl b2YoaW50MzJfdCkpLCBidWZbMV0pOw0KPiA+Pj4gICAgICAgICAgICAgICAgICAgaWYgKHVubGlr ZWx5KFJURV9QVFJfRElGRihzcmNhLCBzcmMpID09IDIgKg0KPiA+PiBzaXplb2YoaW50MzJfdCkp KSByZXR1cm47DQo+ID4+PiAgICAgICAgICAgICAgICAgICBfbW1fc3RyZWFtX3NpMzIoUlRFX1BU Ul9BREQoZHN0LCAyICoNCj4gPj4gc2l6ZW9mKGludDMyX3QpKSwgYnVmWzJdKTsNCj4gPj4+ICAg ICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+Pj4gICAgICAgICAgIH0NCj4gPj4+ICAgICAgIH0N Cj4gPj4+IH0NCj4gPj4+DQo+ID4+DQo+ID4NCg0K