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 AC9ADA0508; Tue, 29 Mar 2022 15:20:44 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 826F040691; Tue, 29 Mar 2022 15:20:44 +0200 (CEST) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by mails.dpdk.org (Postfix) with ESMTP id 390E040141 for ; Tue, 29 Mar 2022 15:20:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1648560043; x=1680096043; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=f2qjygx40qN1XdtnAJGnxOIpBnQyY+W2Z0pKoOTEtxM=; b=RAp3mXFydQ1sffabMuNvf7EjOfhof8uQ9LexaWQoFwznh4YLVFZsPOta 1sMM2HPk2bEdpYHId3HIPSRfdHe+FIdFBoM8dvcH9MBw13OrXAolTZRPS LDzS2TaWGAlYcuCCuNj9HefW74w5cKTscrFKJUPP+B+7UDhVrOKPHuGiS b3UzIL42psidHNVkrLAOXTvaG9B2BhjXQOjXG4OUUts/bS7SEcurTuqtO fXmam1ZMfT/iIKjHaSlgwdkDDrhSQoWYpX7o6bEaZVH4x4tIDlk2IOlZJ 36zyFsbLttPVJb9y1cKzXAbjl+pDs+YPKJXLZyKRx4NN+gipWgeaaPw/9 Q==; X-IronPort-AV: E=McAfee;i="6200,9189,10300"; a="258962816" X-IronPort-AV: E=Sophos;i="5.90,220,1643702400"; d="scan'208";a="258962816" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Mar 2022 06:20:42 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,220,1643702400"; d="scan'208";a="585572962" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orsmga001.jf.intel.com with ESMTP; 29 Mar 2022 06:20:42 -0700 Received: from orsmsx607.amr.corp.intel.com (10.22.229.20) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Tue, 29 Mar 2022 06:20:41 -0700 Received: from orsmsx601.amr.corp.intel.com (10.22.229.14) by ORSMSX607.amr.corp.intel.com (10.22.229.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Tue, 29 Mar 2022 06:20:41 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27 via Frontend Transport; Tue, 29 Mar 2022 06:20:41 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.175) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.21; Tue, 29 Mar 2022 06:20:41 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mr+nDe4bnk5yJDMmO/xc5mJ4LAEMo/dl1Nf6Avs/megRpRPe0WhkQqXbgVXxWhrYl3Sz5Iqc5uCWXyzebL1oWCQFUdXLq2SttbO3xa0TfYMxprxaB2F9RApQnhMzEiqcCQZ1c7ElccsJB2NeOBH8MViMoCTV/308EWyRzh4AVKNcddXBo4sHQSRuwX0l/ALnRJoOJ+Q1IN55huVb5zkyUIgZnTPlDIhWGqJrlNdqriyWvjxEaKNk2SjO8k/UC0Q9LYVV1Z/F5zyidZLyfc4OCAj4aZXL9JBCGYeeeVDmcjs0LTKyxdUpeZB/ZmNuPAkvT6HYOLTu61zzhoX90bb9qQ== 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=f2qjygx40qN1XdtnAJGnxOIpBnQyY+W2Z0pKoOTEtxM=; b=hS1lcSTHH+4gKOOn8cAucvXobol6tPPv4sMrU1iZC/WcP0mdqDINaKvvZelR65+E9htKSFCS+g7G3zs8RLpQ9kXsA5ZvTg0BX/kIIYdWzUstI/C2LJOtT20XEL0DNAEA6PXSeTeqpAG3hZ0uGlEQgyNt7xFlpvK9syIKiyrl+nc0N1ArawuMacPEHnTpcr7EioxfXO5Z/lJ4RQP9qJ/ZK8wd183WNWYg37c42J4+S6VlZi5B7UV2iZi/bx3hefUJQS+v3YjXLxERT3Vn4FAJ4lyfzDLTf33Dan0F8dUoTigWnrnqP6uP64rcPSB215fHN2CNq/FCKmgaHgrJRwSamQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from DM6PR11MB4491.namprd11.prod.outlook.com (2603:10b6:5:204::19) by DM5PR11MB1531.namprd11.prod.outlook.com (2603:10b6:4:10::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.18; Tue, 29 Mar 2022 13:20:33 +0000 Received: from DM6PR11MB4491.namprd11.prod.outlook.com ([fe80::ad2b:63fd:4cdd:130d]) by DM6PR11MB4491.namprd11.prod.outlook.com ([fe80::ad2b:63fd:4cdd:130d%4]) with mapi id 15.20.5102.023; Tue, 29 Mar 2022 13:20:33 +0000 From: "Ananyev, Konstantin" To: mattias.ronnblom , Ola Liljedahl , "dev@dpdk.org" CC: Thomas Monjalon , David Marchand , "Olsen, Onar" , "Honnappa.Nagarahalli@arm.com" , "nd@arm.com" , "mb@smartsharesystems.com" , "stephen@networkplumber.org" Subject: RE: [RFC] eal: add seqlock Thread-Topic: [RFC] eal: add seqlock Thread-Index: AQHYQIaKHXaPgtdbSEGn3Z4qILHbfKzTTrBwgAA0UACAAQHTIIAAVCWAgAE0/QCAAE8gMA== Date: Tue, 29 Mar 2022 13:20:33 +0000 Message-ID: References: <20220325202428.94628-1-mattias.ronnblom@ericsson.com> <77168168-eadb-9a0b-b51e-9ccdf8ad7230@ericsson.com> In-Reply-To: Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.401.20 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 43023ab7-e5cb-4e5f-d069-08da1186e77e x-ms-traffictypediagnostic: DM5PR11MB1531:EE_ x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: xMmXvMSbOOo7R+35nTfef2OY/tddswmtZOMrUAkLTHAqhvrZOtdcqppiidJCoelVHusv5J5V1rF/4PMDXoJ9OZKzTLzaSHW8kznKuWfyF1T7y0St/r2HlkEIsp5v92/DrvA1mx9ELA+o8WQenQb1WCmN78QQemriigVDsZEH9NpMdWwmyzpDYLjjQKQVJisrZKzIbCOGBmvgFYAbv+FuzarFOhdYFA0lSQTu9fW9U0dqMPH01YSdNOSV0e7si/ZKNbxT3Ho+I6WIGGgziA3whhSDmoT/h6kqqcyWpOEPnIP9P8zX1ZqNZMWB3QiRVDzHZ7mVj2O039AJHBZokoShdPieodTK4OqKWRRb6TZsuGoq/VkZUy60a8fp6Zf8HTtaNvMVzBdCKximMUi1Afnyz4UBoSOAhZtin/QCDEF3r2tsws+GYXYQB+iO5ly0r2QMSobm4XyreXQ8fIqmoTPQ9iXQvmXZowEmr+Oynh/xYlh5NPxTq5dYkb7jOZhp0X3cgn2krTKeQLyeuiEZiuNm99wzAuo5yPOXt/5aUZOD09srF7dHGZ3Dx4QivoO5al00Mt6+Fc0boarohxC7ht71m04DsTK8LE+4KuG7tPs6FSKqTcvcsyS9MI38tLAgV8Wd6xhtfDs1Ior9wQnBnfj45K6R3eFTBWR1MqKzE6Oqz81PUHE/RKIP0F7rKXuVUlnnqcF5gUuSqNIUVAbvrQA0jTSe6OeTyJgNrudNMsU8VIlHxISfYzpHK7w1Ppt5RcZmIOD93iyqtB16dAa0rg8jJnOiNEXRSfvrO/+O1dJQNhA= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM6PR11MB4491.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(52536014)(8936002)(110136005)(4326008)(76116006)(316002)(2906002)(66476007)(66446008)(83380400001)(7416002)(5660300002)(64756008)(55016003)(54906003)(66556008)(8676002)(66946007)(38070700005)(6506007)(38100700002)(33656002)(122000001)(86362001)(82960400001)(71200400001)(7696005)(9686003)(508600001)(966005)(186003)(26005); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?bDVzTXBpbzR1bm9uRTZMcHNqYVRiemRNK0YvRXZVdzNrc0liL0RBWGZvTmZt?= =?utf-8?B?ZGlFZlVDWktwclJhVVVrZW96c1o1cFN6czNPUXBFYml6c3o4VS9iMVNhUm1R?= =?utf-8?B?Uk9aL2xMQ05hRnNBbDNRbXNmbWE5dlJ3Vkd5alVBNjVKZnJtWVZGMStiOHZu?= =?utf-8?B?RWI5ajlPZjlBQlZSZGM3RVBNdmRxc0tpalVFWHp0bTZ3Q1N0NzFIdmlkVmFh?= =?utf-8?B?S21GOEVvWUtudExOb3R0ZEhPcnFxMEVFT1lEQzRtQm4rVnh2K3R0SkdnQzdx?= =?utf-8?B?UVllc1JIanJXcmdTRnd5eHEvYTV3R1l2QkdQYkJuK3dJRFNrcEd1a2ZKOE1u?= =?utf-8?B?dE1sQWxDRjgwNWgzSFNMUHRxMC9KUHkwL0d1d1lRM1FnWi9rRjBVT2xTUjUx?= =?utf-8?B?OE5VblpvRHVlcXRUUHBTK0FQTWphb2lDUDZheXU4ckNMQlhWVUNoTEI0STkv?= =?utf-8?B?MTJucWRpMG16UlY2bU51T2JVOEU5Wmxma0MzNTgwTjF4S01DRzRGMFV2ZVl3?= =?utf-8?B?N3hLNW1mOFVRZmFOTHVlYXAvT01tazhVRGp2Z0NrOVMzOXk4SW1VYzBiZzdr?= =?utf-8?B?WjJ1dTlhMHA0MDUzZnk3TG1BVVk3ZGhDWi9OaFp2M21yUUFVYWw5c1psa2pU?= =?utf-8?B?K0hBTFBIZnBFZGFjUEVpekFrQlJjTFdqakUvaG16WWc2akdwcU81Mm9qNnNy?= =?utf-8?B?emxySzdsalc2YlFrSHpNVzh4bVVqMUNoSEltMm1qQzlCWkdBM21xbi9pcE9t?= =?utf-8?B?emEwa1R4VTl0am1jVk4xbGRqNUxsdDQ1eDk3SlNwcElSR0JuQ25qUVhpTHA0?= =?utf-8?B?YUZYcmRRMTdrd3J3eUsvTkprY0ZadGVBOGxpUjN4SHpWOEtGWGlJNXJzdzhi?= =?utf-8?B?MXhBSlQvREtnQjY0UFJ4S0ZOVFFmQUQ4bWtpOHF0VVQyL0Rxclo4eHN2Mi9C?= =?utf-8?B?QVFQRnBqZEFNdUxZMnAvK1pTSFpPWnlKcWRCaHpueXQycUtMRUFRb0syRHdo?= =?utf-8?B?T3lCZWFOK05lUS9RL3MwN2d1bjZTZU5SUFVnU1Q5dG5KUXN4L3V0VmlpQ3Zp?= =?utf-8?B?WG9HOU9uVnlYRCt6Yy9DVytUVXVzN3VuSWovcmI0QlVBUUtib1Y5L0tJcmx2?= =?utf-8?B?RW5rYWw5a2tzb2tpaUtIMVcwbWt3TStrYTVUelhtemsxM1ZzMDlHc2xsakh1?= =?utf-8?B?Njc2cThFdmUwQjVKTE9xTWI0YzhEMmEvOU1jTUtpNnRzTWRyODg0ckVzTUdp?= =?utf-8?B?WkQ4ZFd0U0lCMTFmb250cGM0WmVETEkxNWREUTR3U1hCeWgvUWxmRFBiR05v?= =?utf-8?B?Y0plTXJ6cjkyRGcvQXR2dHczOUpGelZpUkxzSy85RWgra3d0RHF1d1dBRFNK?= =?utf-8?B?T2NjWm8vRTJlMjJmaWhnUk1aOXlpZUgrcEdjdmdQWm9IeGdMNnFDbHJkRWh2?= =?utf-8?B?cFR5UFVESUhESUFMOWhhT0R2OE14Q0VqYXN4eDJydUwzTFhUcm45eW9VbGNE?= =?utf-8?B?SVJiV01IZEI2WUM4QzYzdVFRcVh0emFXczQwbFpmKzRzdmMrbzFsRWVaMlZQ?= =?utf-8?B?U0M3eWVwMkZwRG9GR016eXpWeGJFT0VBL0UyUnRPbVJjSFQ5dGVmcXV5UlNS?= =?utf-8?B?VFdKaXNFTHJBOHl5Sy9wOEtNZmVaeVB3RDlFTERBRFk1MEFNMzVoL0ZYcktp?= =?utf-8?B?T1pLbXpHdWM4ZFpkY1F3MnNuYWU0Z0pzcmVwemtoM0YvaCtLc0ZXQVF5TEd0?= =?utf-8?B?cENESStWRklGdWw3ZG5aSjBuc0M5allpRTByUFBRVGRKUFI0OVFLbkR4dFAr?= =?utf-8?B?OUdzcEcrMHlWeGt3S3pWaTk2em1Xd1BMcVJ6N0pNNVNKUkRNemxtSEpzZEgv?= =?utf-8?B?WXdVb1JSeVRNeFcya0loT01wZEtJeTNDNXdLL3BaQndPbG9XL0ZIc2Z5dmtu?= =?utf-8?B?ei9VWHZIc1I3T2VtdFNSM0Z0cTlSREh1TGJMUUo3TkUvUzc1K3pmbGNqUkkz?= =?utf-8?B?dXcyRUdGbCtaVkdKYXpBTldiaFVwOWg1dWZJV1VhczcvMS82c3o0dnloNG5J?= =?utf-8?B?aThqTnl0c2pXWmkxUUhVUm5zemFaRmNJZ2hpWDgvekZCRk9ocllDTU94VXg1?= =?utf-8?B?aDBxQUIrc0FBTTd2U3c2Q2J5M1dEUGp0d1dmZ21jSlJOR2RBMUxwWVFnL2p3?= =?utf-8?B?a2l5MjVwa2twVWo0c0JwdGpLZlJOYmxFZHJRYmdWS0k4VzhLWUNjWGxvVHha?= =?utf-8?B?bE0xUnN5czM0SjNLc2FrRmkrdUlJVUZtSG1aVUFkY1pqYkZuZUlxd0hVbFQ1?= =?utf-8?B?Z0RYUjVNZ2VBV3FZNEd1SG4rakZrclB5NVBvY3RaK1ZsUGREdFZMQlVLVUhI?= =?utf-8?Q?1r4xpUl8umMpKiv4=3D?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR11MB4491.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 43023ab7-e5cb-4e5f-d069-08da1186e77e X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Mar 2022 13:20:33.2702 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: glQpcBum77Z8uYr7tsUAqslvQmH7fIGwWHqeieKJlu76eLlBCP9mtapEZMfk7MFqAArTIcR06t9Tp31Ca6F+O9VnMBnF6RmnCeMzOehG45M= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR11MB1531 X-OriginatorOrg: intel.com 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 DQo+ID4+Pj4+IGRpZmYgLS1naXQgYS9saWIvZWFsL2luY2x1ZGUvbWVzb24uYnVpbGQNCj4gPj4+ Pj4gYi9saWIvZWFsL2luY2x1ZGUvbWVzb24uYnVpbGQNCj4gPj4+Pj4gaW5kZXggOTcwMDQ5NDgx Ni4uNDhkZjVmMWEyMSAxMDA2NDQNCj4gPj4+Pj4gLS0tIGEvbGliL2VhbC9pbmNsdWRlL21lc29u LmJ1aWxkDQo+ID4+Pj4+ICsrKyBiL2xpYi9lYWwvaW5jbHVkZS9tZXNvbi5idWlsZA0KPiA+Pj4+ PiBAQCAtMzYsNiArMzYsNyBAQCBoZWFkZXJzICs9IGZpbGVzKA0KPiA+Pj4+PiDCoMKgwqDCoMKg wqDCoMKgwqDCoCAncnRlX3Blcl9sY29yZS5oJywNCj4gPj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKg wqAgJ3J0ZV9yYW5kb20uaCcsDQo+ID4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgICdydGVfcmVj aXByb2NhbC5oJywNCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgICdydGVfc2VxbG9jay5oJywNCj4g Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqAgJ3J0ZV9zZXJ2aWNlLmgnLA0KPiA+Pj4+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoCAncnRlX3NlcnZpY2VfY29tcG9uZW50LmgnLA0KPiA+Pj4+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoCAncnRlX3N0cmluZ19mbnMuaCcsDQo+ID4+Pj4+IGRpZmYgLS1naXQg YS9saWIvZWFsL2luY2x1ZGUvcnRlX3NlcWxvY2suaA0KPiA+Pj4+PiBiL2xpYi9lYWwvaW5jbHVk ZS9ydGVfc2VxbG9jay5oDQo+ID4+Pj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4+Pj4+IGlu ZGV4IDAwMDAwMDAwMDAuLmI5NzVjYTg0OGENCj4gPj4+Pj4gLS0tIC9kZXYvbnVsbA0KPiA+Pj4+ PiArKysgYi9saWIvZWFsL2luY2x1ZGUvcnRlX3NlcWxvY2suaA0KPiA+Pj4+PiBAQCAtMCwwICsx LDg0IEBADQo+ID4+Pj4+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNl DQo+ID4+Pj4+ICsgKiBDb3B5cmlnaHQoYykgMjAyMiBFcmljc3NvbiBBQg0KPiA+Pj4+PiArICov DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyNpZm5kZWYgX1JURV9TRVFMT0NLX0hfDQo+ID4+Pj4+ICsj ZGVmaW5lIF9SVEVfU0VRTE9DS19IXw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsjaW5jbHVkZSA8c3Rk Ym9vbC5oPg0KPiA+Pj4+PiArI2luY2x1ZGUgPHN0ZGludC5oPg0KPiA+Pj4+PiArDQo+ID4+Pj4+ ICsjaW5jbHVkZSA8cnRlX2F0b21pYy5oPg0KPiA+Pj4+PiArI2luY2x1ZGUgPHJ0ZV9icmFuY2hf cHJlZGljdGlvbi5oPg0KPiA+Pj4+PiArI2luY2x1ZGUgPHJ0ZV9zcGlubG9jay5oPg0KPiA+Pj4+ PiArDQo+ID4+Pj4+ICtzdHJ1Y3QgcnRlX3NlcWxvY2sgew0KPiA+Pj4+PiArwqDCoMKgIHVpbnQ2 NF90IHNuOw0KPiA+Pj4+PiArwqDCoMKgIHJ0ZV9zcGlubG9ja190IGxvY2s7DQo+ID4+Pj4+ICt9 Ow0KPiA+Pj4+PiArDQo+ID4+Pj4+ICt0eXBlZGVmIHN0cnVjdCBydGVfc2VxbG9jayBydGVfc2Vx bG9ja190Ow0KPiA+Pj4+PiArDQo+ID4+Pj4+ICtfX3J0ZV9leHBlcmltZW50YWwNCj4gPj4+Pj4g K3ZvaWQNCj4gPj4+Pj4gK3J0ZV9zZXFsb2NrX2luaXQocnRlX3NlcWxvY2tfdCAqc2VxbG9jayk7 DQo+ID4+Pj4gUHJvYmFibHkgd29ydGggdG8gaGF2ZSBzdGF0aWMgaW5pdGlhbGl6ZXIgdG9vLg0K PiA+Pj4+DQo+ID4+Pg0KPiA+Pj4gSSB3aWxsIGFkZCB0aGF0IGluIHRoZSBuZXh0IHZlcnNpb24s IHRoYW5rcy4NCj4gPj4+DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gK19fcnRlX2V4cGVyaW1lbnRhbA0K PiA+Pj4+PiArc3RhdGljIGlubGluZSB1aW50NjRfdA0KPiA+Pj4+PiArcnRlX3NlcWxvY2tfcmVh ZF9iZWdpbihjb25zdCBydGVfc2VxbG9ja190ICpzZXFsb2NrKQ0KPiA+Pj4+PiArew0KPiA+Pj4+ PiArwqDCoMKgIC8qIF9fQVRPTUlDX0FDUVVJUkUgdG8gcHJldmVudCBsb2FkcyBhZnRlciAoaW4g cHJvZ3JhbSBvcmRlcikNCj4gPj4+Pj4gK8KgwqDCoMKgICogZnJvbSBoYXBwZW5pbmcgYmVmb3Jl IHRoZSBzbiBsb2FkLiBTeW5jcm9uaXplcy13aXRoIHRoZQ0KPiA+Pj4+PiArwqDCoMKgwqAgKiBz dG9yZSByZWxlYXNlIGluIHJ0ZV9zZXFsb2NrX2VuZCgpLg0KPiA+Pj4+PiArwqDCoMKgwqAgKi8N Cj4gPj4+Pj4gK8KgwqDCoCByZXR1cm4gX19hdG9taWNfbG9hZF9uKCZzZXFsb2NrLT5zbiwgX19B VE9NSUNfQUNRVUlSRSk7DQo+ID4+Pj4+ICt9DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gK19fcnRlX2V4 cGVyaW1lbnRhbA0KPiA+Pj4+PiArc3RhdGljIGlubGluZSBib29sDQo+ID4+Pj4+ICtydGVfc2Vx bG9ja19yZWFkX3JldHJ5KGNvbnN0IHJ0ZV9zZXFsb2NrX3QgKnNlcWxvY2ssIHVpbnQ2NF90DQo+ ID4+Pj4+IGJlZ2luX3NuKQ0KPiA+Pj4+PiArew0KPiA+Pj4+PiArwqDCoMKgIHVpbnQ2NF90IGVu ZF9zbjsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArwqDCoMKgIC8qIG1ha2Ugc3VyZSB0aGUgZGF0YSBs b2FkcyBoYXBwZW5zIGJlZm9yZSB0aGUgc24gbG9hZCAqLw0KPiA+Pj4+PiArwqDCoMKgIHJ0ZV9h dG9taWNfdGhyZWFkX2ZlbmNlKF9fQVRPTUlDX0FDUVVJUkUpOw0KPiA+Pj4+IFRoYXQncyBzb3J0 IG9mICdyZWFkX2VuZCcgY29ycmVjdD8NCj4gPj4+PiBJZiBzbywgc2hvdWxkbid0IGl0IGJlICdf X0FUT01JQ19SRUxFQVNFJyBpbnN0ZWFkIGhlcmUsDQo+ID4+Pj4gYW5kDQo+ID4+Pj4gZW5kX3Nu ID0gX19hdG9taWNfbG9hZF9uKC4uLiwgKF9fQVRPTUlDX0FDUVVJUkUpDQo+ID4+Pj4gb24gdGhl IGxpbmUgYmVsb3c/DQo+ID4+Pg0KPiA+Pj4gQSByZWxlYXNlIGZlbmNlIHByZXZlbnRzIHJlb3Jk ZXJpbmcgb2Ygc3RvcmVzLiBUaGUgcmVhZGVyIGRvZXNuJ3QgZG8NCj4gPj4+IGFueQ0KPiA+Pj4g c3RvcmVzLCBzbyBJIGRvbid0IHVuZGVyc3RhbmQgd2h5IHlvdSB3b3VsZCB1c2UgYSByZWxlYXNl IGZlbmNlIGhlcmUuDQo+ID4+PiBDb3VsZCB5b3UgZWxhYm9yYXRlPw0KPiA+Pg0KPiA+PiDCoEZy b20gbXkgdW5kZXJzdGFuZGluZzoNCj4gPj4gcnRlX2F0b21pY190aHJlYWRfZmVuY2UoX19BVE9N SUNfQUNRVUlSRSk7DQo+ID4+IHNlcnZlcyBhcyBhIGhvaXN0IGJhcnJpZXIgaGVyZSwgc28gaXQg d291bGQgb25seSBwcmV2ZW50IGxhdGVyDQo+ID4+IGluc3RydWN0aW9ucw0KPiA+PiB0byBiZSBl eGVjdXRlZCBiZWZvcmUgdGhhdCBwb2ludC4NCj4gPj4gQnV0IGl0IHdvdWxkbid0IHByZXZlbnQg ZWFybGllciBpbnN0cnVjdGlvbnMgdG8gYmUgZXhlY3V0ZWQgYWZ0ZXINCj4gPj4gdGhhdCBwb2lu dC4NCj4gPj4gV2hpbGUgd2UgZG8gbmVlZCB0byBndWFyYW50ZWUgdGhhdCBjcHUgd2lsbCBmaW5p c2ggYWxsIHByZXZpb3VzIHJlYWRzDQo+ID4+IGJlZm9yZQ0KPiA+PiBwcm9ncmVzc2luZyBmdXJ0 aGVyLg0KPiA+Pg0KPiA+PiBTdXBwb3NlIHdlIGhhdmUgc29tZXRoaW5nIGxpa2UgdGhhdDoNCj4g Pj4NCj4gPj4gc3RydWN0IHsNCj4gPj4gwqDCoMKgwqB1aW50NjRfdCBzaGFyZWQ7DQo+ID4+IMKg wqDCoMKgcnRlX3NlcWxvY2tfdCBsb2NrOw0KPiA+PiB9IGRhdGE7DQo+ID4+DQo+ID4+IC4uLg0K PiA+PiBzbiA9IC4uLg0KPiA+PiB1aW50NjRfdCB4ID0gZGF0YS5zaGFyZWQ7DQo+ID4+IC8qIGlu c2lkZSBydGVfc2VxbG9ja19yZWFkX3JldHJ5KCk6ICovDQo+ID4+IC4uLg0KPiA+PiBydGVfYXRv bWljX3RocmVhZF9mZW5jZShfX0FUT01JQ19BQ1FVSVJFKTsNCj4gPj4gZW5kX3NuID0gX19hdG9t aWNfbG9hZF9uKCZkYXRhLmxvY2suc24sIF9fQVRPTUlDX1JFTEFYRUQpOw0KPiA+Pg0KPiA+PiBI ZXJlIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgcmVhZCBvZiBkYXRhLnNoYXJlZCB3aWxsIGFs d2F5cyBoYXBwZW4NCj4gPj4gYmVmb3JlIHJlYWRpbmcgb2YgZGF0YS5sb2NrLnNuLg0KPiA+PiBJ dCBpcyBub3QgYSBwcm9ibGVtIG9uIElBIChhcyByZWFkcyBhcmUgbm90IHJlb3JkZXJlZCksIGJ1 dCBvbg0KPiA+PiBtYWNoaW5lcyB3aXRoDQo+ID4+IHJlbGF4ZWQgbWVtb3J5IG9yZGVyaW5nIChB Uk0sIGV0Yy4pwqAgaXQgY2FuIGhhcHBlbi4NCj4gPj4gU28gdG8gcHJldmVudCBpdCB3ZSBkbyBu ZWVkIGEgc2luayBiYXJyaWVyIGhlcmUgZmlyc3QgKEFUT01JQ19SRUxFQVNFKQ0KPiA+IFdlIGNh bid0IHVzZSBzdG9yZS1yZWxlYXNlIHNpbmNlIHRoZXJlIGlzIG5vIHdyaXRlIG9uIHRoZSByZWFk ZXItc2lkZS4NCj4gPiBBbmQgZmVuY2UtcmVsZWFzZSBvcmRlcnMgYWdhaW5zdCBsYXRlciBzdG9y ZXMsIG5vdCBsYXRlciBsb2Fkcy4NCj4gPg0KPiA+Pg0KPiA+PiBIb25uYXBwYSBhbmQgb3RoZXIg QVJNICYgYXRvbWljcyBleHBlcnRzLCBwbGVhc2UgY29ycmVjdCBtZSBpZiBJIGFtDQo+ID4+IHdy b25nIGhlcmUuDQo+ID4gVGhlIEMgc3RhbmRhcmQgKGNoYXB0ZXIgNy4xNy40IGluIHRoZSBDMTEg KGRyYWZ0KSkgaXNuJ3Qgc28gZWFzeSB0bw0KPiA+IGRpZ2VzdC4gSWYgd2UgdHJ1c3QgUHJlc2hp bmcsIGhlIGhhcyBhIG1vcmUgYWNjZXNzaWJsZSBkZXNjcmlwdGlvbg0KPiA+IGhlcmU6DQo+ID4g aHR0cHM6Ly9wcm90ZWN0Mi5maXJlZXllLmNvbS92MS91cmw/az0zMTMyMzMzNC01MDFkNTEyMi0z MTMyNzNhZi00NTQ0NDU1NTU3MzEtZjRmNWIxZWVjMjk4MDI4MyZxPTEmZT0zNDc5ZWJmYS1lMThk LTRiZjgtDQo+IDg4ZmUtNzY4MjNhNTMxOTEyJnU9aHR0cHMlM0ElMkYlMkZwcmVzaGluZy5jb20l MkYyMDEzMDkyMiUyRmFjcXVpcmUtYW5kLXJlbGVhc2UtZmVuY2VzJTJGDQo+ID4gIkFuIGFjcXVp cmUgZmVuY2UgcHJldmVudHMgdGhlIG1lbW9yeSByZW9yZGVyaW5nIG9mIGFueSByZWFkIHdoaWNo DQo+ID4gcHJlY2VkZXMgaXQgaW4gcHJvZ3JhbSBvcmRlciB3aXRoIGFueSByZWFkIG9yIHdyaXRl IHdoaWNoIGZvbGxvd3MgaXQNCj4gPiBpbiBwcm9ncmFtIG9yZGVyLiINCj4gPiBhbmQgaGVyZToN Cj4gPiBodHRwczovL3Byb3RlY3QyLmZpcmVleWUuY29tL3YxL3VybD9rPTMxMzIzMzM0LTUwMWQ1 MTIyLTMxMzI3M2FmLTQ1NDQ0NTU1NTczMS02NGIwZWJhNDUwYmU5MzRiJnE9MSZlPTM0NzllYmZh LWUxOGQtNGJmOC0NCj4gODhmZS03NjgyM2E1MzE5MTImdT1odHRwcyUzQSUyRiUyRnByZXNoaW5n LmNvbSUyRjIwMTMxMTI1JTJGYWNxdWlyZS1hbmQtcmVsZWFzZS1mZW5jZXMtZG9udC13b3JrLXRo ZS13YXkteW91ZC1leHBlY3QlMkYNCj4gPiAoZm9yIEMrKyBidXQgdGhlIGRlZmluaXRpb24gc2Vl bXMgdG8gYmUgaWRlbnRpY2FsIHRvIHRoYXQgb2YgQzExKS4NCj4gPiBFc3NlbnRpYWxseSBhIExv YWRMb2FkK0xvYWRTdG9yZSBiYXJyaWVyIHdoaWNoIGlzIHdoYXQgd2Ugd2FudCB0bw0KPiA+IGFj aGlldmUuDQo+ID4NCj4gPiBHQ0MgMTAuMyBmb3IgQUFyY2g2NC9BNjQgSVNBIGdlbmVyYXRlcyBh ICJETUIgSVNITEQiIGluc3RydWN0aW9uLiBUaGlzDQo+ID4gd2FpdHMgZm9yIGFsbCBsb2FkcyBw cmVjZWRpbmcgKGluIHByb2dyYW0gb3JkZXIpIHRoZSBtZW1vcnkgYmFycmllciB0bw0KPiA+IGJl IG9ic2VydmVkIGJlZm9yZSBhbnkgbWVtb3J5IGFjY2Vzc2VzIGFmdGVyIChpbiBwcm9ncmFtIG9y ZGVyKSB0aGUNCj4gPiBtZW1vcnkgYmFycmllci4NCj4gPg0KPiA+IEkgdGhpbmsgdGhlIGtleSB0 byB1bmRlcnN0YW5kaW5nIGF0b21pYyB0aHJlYWQgZmVuY2VzIGlzIHRoYXQgdGhleSBhcmUNCj4g PiBub3QgYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWMgbWVtb3J5IGFjY2VzcyAodW5saWtlIGxv YWQtYWNxdWlyZSBhbmQNCj4gPiBzdG9yZS1yZWxlYXNlKSBzbyB0aGV5IGNhbid0IG9yZGVyIGVh cmxpZXIgb3IgbGF0ZXIgbWVtb3J5IGFjY2Vzc2VzDQo+ID4gYWdhaW5zdCBzb21lIHNwZWNpZmlj IG1lbW9yeSBhY2Nlc3MuIEluc3RlYWQgdGhlIGZlbmNlIG9yZGVycyBhbnkvYWxsDQo+ID4gZWFy bGllciBsb2FkcyBhbmQvb3Igc3RvcmVzIGFnYWluc3QgYW55L2FsbCBsYXRlciBsb2FkcyBvciBz dG9yZXMNCj4gPiAoZGVwZW5kaW5nIG9uIGFjcXVpcmUgb3IgcmVsZWFzZSkuDQo+ID4NCj4gPj4N Cj4gPj4+Pj4gKw0KPiA+Pj4+PiArwqDCoMKgIGVuZF9zbiA9IF9fYXRvbWljX2xvYWRfbigmc2Vx bG9jay0+c24sIF9fQVRPTUlDX1JFTEFYRUQpOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICvCoMKgwqAg cmV0dXJuIHVubGlrZWx5KGJlZ2luX3NuICYgMSB8fCBiZWdpbl9zbiAhPSBlbmRfc24pOw0KPiA+ Pj4+PiArfQ0KPiA+Pj4+PiArDQo+ID4+Pj4+ICtfX3J0ZV9leHBlcmltZW50YWwNCj4gPj4+Pj4g K3N0YXRpYyBpbmxpbmUgdm9pZA0KPiA+Pj4+PiArcnRlX3NlcWxvY2tfd3JpdGVfYmVnaW4ocnRl X3NlcWxvY2tfdCAqc2VxbG9jaykNCj4gPj4+Pj4gK3sNCj4gPj4+Pj4gK8KgwqDCoCB1aW50NjRf dCBzbjsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArwqDCoMKgIC8qIHRvIHN5bmNocm9uaXplIHdpdGgg b3RoZXIgd3JpdGVycyAqLw0KPiA+Pj4+PiArwqDCoMKgIHJ0ZV9zcGlubG9ja19sb2NrKCZzZXFs b2NrLT5sb2NrKTsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArwqDCoMKgIHNuID0gc2VxbG9jay0+c24g KyAxOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICvCoMKgwqAgX19hdG9taWNfc3RvcmVfbigmc2VxbG9j ay0+c24sIHNuLCBfX0FUT01JQ19SRUxBWEVEKTsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArwqDCoMKg IC8qIF9fQVRPTUlDX1JFTEVBU0UgdG8gcHJldmVudCBzdG9yZXMgYWZ0ZXIgKGluIHByb2dyYW0g b3JkZXIpDQo+ID4+Pj4+ICvCoMKgwqDCoCAqIGZyb20gaGFwcGVuaW5nIGJlZm9yZSB0aGUgc24g c3RvcmUuDQo+ID4+Pj4+ICvCoMKgwqDCoCAqLw0KPiA+Pj4+PiArwqDCoMKgIHJ0ZV9hdG9taWNf dGhyZWFkX2ZlbmNlKF9fQVRPTUlDX1JFTEVBU0UpOw0KPiA+Pj4+IEkgdGhpbmsgaXQgbmVlZHMg dG8gYmUgJ19fQVRPTUlDX0FDUVVJUkUnIGhlcmUgaW5zdGVhZCBvZg0KPiA+Pj4+ICdfX0FUT01J Q19SRUxFQVNFJy4NCj4gPj4+DQo+ID4+PiBQbGVhc2UgZWxhYm9yYXRlIG9uIHdoeS4NCj4gPj4N Cj4gPj4gQXMgeW91IHNhaWQgaW4gdGhlIGNvbW1lbnRzIGFib3ZlLCB3ZSBuZWVkIHRvIHByZXZl bnQgbGF0ZXIgc3RvcmVzDQo+ID4+IHRvIGJlIGV4ZWN1dGVkIGJlZm9yZSB0aGF0IHBvaW50LiBT byB3ZSBkbyBuZWVkIGEgaG9pc3QgYmFycmllciBoZXJlLg0KPiA+PiBBRkFJSyB0byBndWFyYW50 ZWUgYSBob2lzdCBiYXJyaWVyICdfX0FUT01JQ19BQ1FVSVJFJyBpcyByZXF1aXJlZC4NCj4gPiBB biBhY3F1aXJlIGZlbmNlIHdvdWxkbid0IG9yZGVyIGFuIGVhcmxpZXIgc3RvcmUgKHRoZSB3cml0 ZSB0bw0KPiA+IHNlcWxvY2stPnNuKSBmcm9tIGJlaW5nIHJlb3JkZXJlZCB3aXRoIHNvbWUgbGF0 ZXIgc3RvcmUgKGUuZy4gd3JpdGVzDQo+ID4gdG8gdGhlIHByb3RlY3RlZCBkYXRhKSwgdGh1cyBp dCB3b3VsZCBhbGxvdyByZWFkZXJzIHRvIHNlZSB1cGRhdGVkDQo+ID4gZGF0YSAocG9zc2libHkg dG9ybikgd2l0aCBhIHByZS11cGRhdGUgc2VxdWVuY2UgbnVtYmVyLiBXZSBuZWVkIGENCj4gPiBT dG9yZVN0b3JlIGJhcnJpZXIgZm9yIG9yZGVyaW5nIHRoZSBTTiBzdG9yZSBhbmQgZGF0YSBzdG9y ZXMgPT4NCj4gPiBmZW5jZShyZWxlYXNlKS4NCj4gPg0KPiA+IEFjcXVpcmUgYW5kIHJlbGVhc2Vz IGZlbmNlcyBjYW4gKGFsc28pIGJlIHVzZWQgdG8gY3JlYXRlDQo+ID4gc3luY2hyb25pemUtd2l0 aCByZWxhdGlvbnNoaXBzICh0aGlzIGlzIGhvdyB0aGUgQyBzdGFuZGFyZCBkZWZpbmVzDQo+ID4g dGhlbSkuIFByZXNoaW5nIGhhcyBhIGdvb2QgZXhhbXBsZSBvbiB0aGlzLiBCYXNpY2FsbHkNCj4g PiBUaHJlYWQgMToNCj4gPiBkYXRhID0gMjQyOw0KPiA+IGF0b21pY190aHJlYWRfZmVuY2UoYXRv bWljX3JlbGVhc2UpOw0KPiA+IGF0b21pY19zdG9yZV9uKCZndWFyZCwgMSwgYXRvbWljX3JlbGF4 ZWQpOw0KPiA+DQo+ID4gVGhyZWFkIDI6DQo+ID4gd2hpbGUgKGF0b21pY19sb2FkX24oJmd1YXJk LCBhdG9taWNfcmVsYXhlZCkgIT0gMSkgOw0KPiA+IGF0b21pY190aHJlYWRfZmVuY2UoYXRvbWlj X2FjcXVpcmUpOw0KPiA+IGRvX3NvbWV0aGluZyhkYXRhKTsNCj4gPg0KPiA+IFRoZXNlIGFyZSBv YnZpb3VzIGFuYWxvZ3VlcyB0byBzdG9yZS1yZWxlYXNlIGFuZCBsb2FkLWFjcXVpcmUsIHRodXMN Cj4gPiB0aGUgYWNxdWlyZSAmIHJlbGVhc2UgbmFtZXMgb2YgdGhlIGZlbmNlcy4NCj4gPg0KPiA+ IC0gT2xhDQo+ID4NCj4gPj4NCj4gPj4+DQo+ID4+Pj4+ICt9DQo+ID4+Pj4+ICsNCj4gPj4+Pj4g K19fcnRlX2V4cGVyaW1lbnRhbA0KPiA+Pj4+PiArc3RhdGljIGlubGluZSB2b2lkDQo+ID4+Pj4+ ICtydGVfc2VxbG9ja193cml0ZV9lbmQocnRlX3NlcWxvY2tfdCAqc2VxbG9jaykNCj4gPj4+Pj4g K3sNCj4gPj4+Pj4gK8KgwqDCoCB1aW50NjRfdCBzbjsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArwqDC oMKgIHNuID0gc2VxbG9jay0+c24gKyAxOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICvCoMKgwqAgLyog c3luY2hyb25pemVzLXdpdGggdGhlIGxvYWQgYWNxdWlyZSBpbiBydGVfc2VxbG9ja19iZWdpbigp ICovDQo+ID4+Pj4+ICvCoMKgwqAgX19hdG9taWNfc3RvcmVfbigmc2VxbG9jay0+c24sIHNuLCBf X0FUT01JQ19SRUxFQVNFKTsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArwqDCoMKgIHJ0ZV9zcGlubG9j a191bmxvY2soJnNlcWxvY2stPmxvY2spOw0KPiA+Pj4+PiArfQ0KPiA+Pj4+PiArDQo+ID4+DQo+ IA0KPiBJIGhhdmUgbm90aGluZyB0byBhZGQsIGJ1dCBPbGEncyBtYWlsIHNlZW1zIHRvIGhhdmUg YmVlbiBibG9ja2VkIGZyb20NCj4gdGhlIGRldiBsaXN0LCBzbyBJJ20gcG9zdGluZyB0aGlzIGFn YWluLg0KDQpPaywgdGhhbmtzIE9sYSBmb3IgZGV0YWlsZWQgZXhwbGFuYXRpb24uDQpIYXZlIHRv IGFkbWl0IHRoZW4gdGhhdCBteSB1bmRlcnN0YW5kaW5nIG9mIGF0b21pY19mZW5jZSgpIGJlaGF2 aW91ciB3YXMgaW5jb3JyZWN0Lg0KUGxlYXNlIGRpc3JlZ2FyZCBteSBjb21tZW50cyBhYm92ZSBh Ym91dCBydGVfc2VxbG9ja19yZWFkX3JldHJ5KCkNCmFuZCAgcnRlX3NlcWxvY2tfd3JpdGVfYmVn aW4oKS4NCg0KS29uc3RhbnRpbiAgDQoNCg0K