From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0a-00082601.pphosted.com (mx0b-00082601.pphosted.com [67.231.153.30]) by mail.toke.dk (Postfix) with ESMTPS id 0A9129B0F2F for ; Mon, 31 Oct 2022 20:37:31 +0100 (CET) Authentication-Results: mail.toke.dk; dkim=pass (2048-bit key; unprotected) header.d=meta.com header.i=@meta.com header.a=rsa-sha256 header.s=s2048-2021-q4 header.b=nxasd5++ Received: from pps.filterd (m0001303.ppops.net [127.0.0.1]) by m0001303.ppops.net (8.17.1.5/8.17.1.5) with ESMTP id 29VIA18o009806; Mon, 31 Oct 2022 12:36:55 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=meta.com; h=message-id : date : subject : to : cc : references : from : in-reply-to : content-type : content-transfer-encoding : mime-version; s=s2048-2021-q4; bh=IzeHw3OH1Z60P630CD5x1jMkdYyasJ2kWkvDSVnrPkM=; b=nxasd5++m0JtaS2asiyorv84uGfAWURyVJDabG1OSvUqwMpC09ynLXUgjUsVlo04EDXl V6yzBNe22NtNr1TGX30TS8Flm0RVDNgl+05FTjs6+JtxPGRCIwvFKXRUAPU66ooMq/fB cxasUVjntVyRwEwAP1DjtP9+Vj0icGaWu6c3SsPtaSACK8G6GHBcIfok1ykZ8ZmZQrbP Z7OV958QnBSPrWWnTWBh6hG62Ex3oysMAGmgAQnO99Rb/QFOeCTH0n48umFhBls8sL5a +WjekJn1qE1lCBa4uPXm2iYCl5BOgEIoGH9BYPPtQ5NxcgrpQI5nkJxde5OA2MDzjYIc sw== Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2177.outbound.protection.outlook.com [104.47.59.177]) by m0001303.ppops.net (PPS) with ESMTPS id 3kgyux2rp0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 31 Oct 2022 12:36:55 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QiWApkqNiCmP4jhL1ywoCpqN1x3ONcpMam2riyF6KUJ5+6JyTMF5ah0UFVyR2XWpmiYmrU+MrX1eMhUsUo8vDjYaeo7bUZeVSCqmVc9f9uxrmw+vCS1TnqLe96ZJAVFFlTj4CpNjbGfAgspgM6hcj/SYaT8TPPxJ9XxDLYo6dzGgz/Z1uZ5OmytzRJnfPbIwWL9re+UAiJ9Ckh+eFUbC0rVM9StHPdZR1Z9OcX371Dj8UUv/pFf3MWuGPeMQ/x0ds2wnbQHaYDrQCRUUAijUohYyIJxIiEe3mBUW10Kc1Hp1MKtjaTghjLPwLKaB+ymNKNZIQizjKDj8xsTiViFCfg== 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=IzeHw3OH1Z60P630CD5x1jMkdYyasJ2kWkvDSVnrPkM=; b=jfueU9+rZUnGdTBAtykkrK0rnXet4dbwb0UjSbYxSEXJoUfiqNXIKK6rogNckYSRPk/+P1dU9iTtIJKB7uwi4RJ3NghujeAW1tkkAccAxWFyI4xYT+ighvXPvcIrN5HJKW/uwsI5gBJYnNXPdvEpijXwJA/ac+Oz2BMfwl1tB8U1jHaNAIQV9YY/8Z6Kj9l5xWnPnxgB1EOy8wQ+fiTsbtcwwmnVlD04g5wA7ScVoGHgqDZ7BNKwieSj/t/MMCjFAeObl1ZKcIMt+XaIsvHgCqeGiR3ROpbAFUp+IqouR7bPptdoi11l1gAiEWrTGzS09mm9hgy7AOv+glUzfguvqQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=meta.com; dmarc=pass action=none header.from=meta.com; dkim=pass header.d=meta.com; arc=none Received: from SN6PR1501MB2064.namprd15.prod.outlook.com (2603:10b6:805:d::27) by DM6PR15MB2331.namprd15.prod.outlook.com (2603:10b6:5:8d::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5769.16; Mon, 31 Oct 2022 19:36:45 +0000 Received: from SN6PR1501MB2064.namprd15.prod.outlook.com ([fe80::e25d:b529:7556:1e26]) by SN6PR1501MB2064.namprd15.prod.outlook.com ([fe80::e25d:b529:7556:1e26%5]) with mapi id 15.20.5769.019; Mon, 31 Oct 2022 19:36:45 +0000 Message-ID: <663fb4f4-04b7-5c1f-899c-bdac3010f073@meta.com> Date: Mon, 31 Oct 2022 12:36:42 -0700 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.4.1 To: =?UTF-8?Q?Toke_H=c3=b8iland-J=c3=b8rgensen?= , "Bezdeka, Florian" , "kuba@kernel.org" , "john.fastabend@gmail.com" References: <20221027200019.4106375-1-sdf@google.com> <635bfc1a7c351_256e2082f@john.notmuch> <20221028110457.0ba53d8b@kernel.org> <635c62c12652d_b1ba208d0@john.notmuch> <20221028181431.05173968@kernel.org> <5aeda7f6bb26b20cb74ef21ae9c28ac91d57fae6.camel@siemens.com> <875yg057x1.fsf@toke.dk> Content-Language: en-US From: Yonghong Song In-Reply-To: <875yg057x1.fsf@toke.dk> Content-Type: text/plain; charset="utf-8"; format="flowed" Content-Transfer-Encoding: base64 X-ClientProxiedBy: SJ0PR13CA0134.namprd13.prod.outlook.com (2603:10b6:a03:2c6::19) To SN6PR1501MB2064.namprd15.prod.outlook.com (2603:10b6:805:d::27) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN6PR1501MB2064:EE_|DM6PR15MB2331:EE_ X-MS-Office365-Filtering-Correlation-Id: a976f06d-0804-4ed0-d2e7-08dabb773ec7 X-FB-Source: Internal X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ZmnMIkUvJyP2yyvI+wyXpy7pmLKyz76gF0LGtRK7zq3O728n7/wWI9kdAiilKV1ZACAlsXzVNZWBJjnsC+QeY1AH36yhkHB0gxvlgI0caWZhS2eamdvZDZvBTNzInKqaFu2GKr24xgzcuxdr0wVxZKGXXNFo8szCvfs4hp1CePMFskQTvg6MLl17daImk2B5hdS4sppapquWWyIUAp5jvkv3MmjXZeeiknE3aLZAEIE10tGMj2YRjOHxssVGKVs4NQEdaRUt1amikXparqjB+M11qC60smxJmNbKdso/+JIOJSOFizNnPdmFWv3tbv8x2WcxElVP176W/l407PhsdGhbc0cN1Qkhmlir03aZT8HZasL+PT9NS/NZA+XTFkdVteegX9qSPVKul9ZRhHrOR/WKjAKCRVwCSxjZlCp6sansa56EaMN4Ytn7sEv4EdDxZGSnAG3QEUOV32rGlGgQyP9nHg8kgWut6TAsTaNyJU6idE8Hazfvy+JNIb3rwVPWjulkrmB2qU5ms9Nuuh59OgDv6uVu4xuGXThE2714KDG+SgONUl9kVyVdOWaJNAu/Zx7751e6K+V5HMmD0x9N8VXoaYVPsDBHK39b9XLnG0Ezu1fHWvQ3Kxx4jXtkkq7Xzbt576631lou0+atE02ogHVlt7nYOcJXt4bM9DbFlnjQ9GtCSdICO8oYaP8qiLuOlE4L3nNrDpBDU2L8TRDEXAyGsPXW4TTjSoejyDzHiD4lldS97mbpQaZsHP08+mouRAp16DFyigyFn9drbid6D5XD+r154vnHCqP6mNA0QYM= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN6PR1501MB2064.namprd15.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(346002)(396003)(136003)(376002)(366004)(39860400002)(451199015)(478600001)(54906003)(2616005)(36756003)(4326008)(8676002)(41300700001)(5660300002)(7416002)(8936002)(66556008)(66476007)(6486002)(66946007)(110136005)(316002)(83380400001)(53546011)(86362001)(6666004)(6506007)(31696002)(6512007)(66574015)(186003)(31686004)(38100700002)(66899015)(2906002)(4001150100001)(45980500001)(43740500002);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?YjNHajdxVktDZDY5MjJ6N0FLbG9JdHpUNUJLWEt4anRkSWwxalJoM0RUNU1H?= =?utf-8?B?cmpDSVNuVENqc2hMNDYzKzNLUStMSWkyZSs0ZWlwOWxoNWcrWjZHZUtWazZa?= =?utf-8?B?MDJnNnRSWFVIZHhZVUtYWW05YnlHR3p5SG4vbUVOVTRqeCtFekhCbnVtNDRn?= =?utf-8?B?ckpFZElFSkpacER0Z3Y3ajF2TVZRU3NIQ3ZmcnE1eFBzaVJsZGlWekcxRSth?= =?utf-8?B?UGh0NGc2cTBZb2J6SmgrNGVxbUV1SitkTUtJdFliMzZIQk1JTWxaUTh4UG94?= =?utf-8?B?TDBaWnFqNXN0Y2p4NU5Vd1JEeCtDaDBXaXR6azZieERDcXlmKzNUZWE5SnBO?= =?utf-8?B?Z2ZKdFc4QnRzUDNwSGhQbEJBTVdKcG1HZ0JPSTE1Q2NOZ09yYkFEWWE1aWRQ?= =?utf-8?B?aW1IZDlUeVVSN25NUkU2dnV1SXZNQjFSR2xWTjlSMktGYkVuN0NHNFdRVTFa?= =?utf-8?B?R2tjWnRrcTFSR01DY3NST0FIeVpSZ1Myd2p6a0xKWWNQbXNXVHIvaTdlTVM2?= =?utf-8?B?aDJXOFVOYlc1ajIvY2llWGdkY1Qya0tTOFpGTUNlSWU0cEI4Nm5pRlZySUdF?= =?utf-8?B?Uk9qdkpFSGN3cU9LbXFBL3p1NStSbk9WM1RPSFRnWFV0NEp5dFlUL2RSYkww?= =?utf-8?B?NCtPbURHU1NrbWU2czkzTmo5SVhBUmVzNXl6UWozRTdkT2JjeHRWanlZcTVt?= =?utf-8?B?WGtoT1A1WHhqRmNkQ0xESTgzeDloNlRBZHpoRW00MklBaW9CaHhCRldTNkNS?= =?utf-8?B?YW5nTGZkVnFtbmpwSzRWbVpuZmNQaW5JWEF2WnpxTVNXNGxRam1ML0pHNnZk?= =?utf-8?B?TGJ2eGtMZjRuM2gvR1hKNEJIaGM1MTE3dGZ6cEZESFNYRm04bURoMjJ5V1Nh?= =?utf-8?B?OXVDSk81QnBleCtTeEtNVEl2bDc2enZTZmZqTVFzZ0hteERVUXN4RllvWmNN?= =?utf-8?B?eXY0dzVjSWR4S0IyVGMvRjVkMnBYNXo2MlFSdlozb004M2VQbERZY1d3dHkz?= =?utf-8?B?Sjh5OU1CTTcxMXd5RUNQdHMvSThldHErcHBSVXpzQkh2NkxSM3RURlE3ZWYv?= =?utf-8?B?QjhyaHBFR0N3bWF4cE8xNlc0eXd0OHNScWJ6ZWQ0Zm9odjF2Y2ZBb2p5eUhi?= =?utf-8?B?QzBoV0RsSnNNRlkyclNyaHZST25TcWp5ZDZuVXlSSCtLdnJFbTUwTWtPVHB3?= =?utf-8?B?WER5RkRMYjI0LzhucjJZVU1peVgrcnFsUkFXRUdLZHZBTzBUeHBzeGpZMEhM?= =?utf-8?B?RXBUVDUyNVJRYnAzSUpTdHZnUHdOT0VoSkdpTGpkTTNFVDh6c0U5a0FZamxY?= =?utf-8?B?SEk5N0JWZ3FZQzdYWG44OHpmVC9YeHlCbDlleThzekxoWlJuY3dXN3ZJMHcv?= =?utf-8?B?THp6NXR4TENoZEhzOUp1MTRKMUEzNHRySnMrK0lYTjAwWDZBdmdUVDk0dDEx?= =?utf-8?B?STNWNTdIQWRKVWJ5VFlzaVRwVHdacUo4Wk5MTUNWWkNHYmtYWHNNWHFMQjJF?= =?utf-8?B?ZDFiNXBkOXlCdm5XdXRXT0x2VUE2RTBDazFGOEI0U00zalNLaXVyVzljYWNn?= =?utf-8?B?c2lEUWZmQ1JwYlY1SlkwY01aY3lTVlRvcm9SS2Q3ek52OUNjQ0M4bXd6bHd6?= =?utf-8?B?MjZsaGU2cVcrdkt4VEVqVU01b2JCTm9NdlhpcFhGbExiWG1LdVlsL0hQZmxv?= =?utf-8?B?VFAvcHpNT05KRzBaNVBaSmxJKzFyODFNRTRUaHVhemRmcDRIc0U4SlN4Ulh5?= =?utf-8?B?UVpNMUZGZmExM1hVbGN2N0Z3elpqR1dFNlIrQXNZa1dwQ0l3YlByYkQ4Z1Mw?= =?utf-8?B?OHRLVmFFUkFPTHdyWDhJWEsvVHlSUnJTY0ZTOXo2YW1OWm1UU3NBQmNHMnVD?= =?utf-8?B?TXBzNEs2Qk53ZlhaeW5GRE9uTk5uaklwaXlpamJmeWpITDBDT3NKVnEvOHJI?= =?utf-8?B?bVdLMHVLTXZRUEFyNmwra1RSVy9OZGZ1dThDN2tMcHlBRkdvMEMxVGRqMVVs?= =?utf-8?B?M1dwMHpXb0RGZUwzMEhYdnd3aVNiYkJTRktzTzRwdkZTMzAxS0Rhb3Fvdjl4?= =?utf-8?B?dVo5aXhnVTRsOWxnSUxCVDlHRkVNVmd6MUNnMHVmUkJYTFRKQmhCUHpXRlFX?= =?utf-8?B?eEtNYnJHcXB3YXh0bDN3dW5qNWVHOCtJUXB4ZnQ3NHI5ZHZHdU1QZTRETjA0?= =?utf-8?B?VHc9PQ==?= X-OriginatorOrg: meta.com X-MS-Exchange-CrossTenant-Network-Message-Id: a976f06d-0804-4ed0-d2e7-08dabb773ec7 X-MS-Exchange-CrossTenant-AuthSource: SN6PR1501MB2064.namprd15.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Oct 2022 19:36:45.6850 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 8ae927fe-1255-47a7-a2af-5f3a069daaa2 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: pJ6Xs2h54XZUkhbIljndaByFf2ODshOI+8s1ZoMdC7hEjHPB9AjQfI+xh7o7nkz2 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR15MB2331 X-Proofpoint-ORIG-GUID: _IjqWFLEZnLRLp87KjLIRg-6BYkGpqe_ X-Proofpoint-GUID: _IjqWFLEZnLRLp87KjLIRg-6BYkGpqe_ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.895,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-10-31_20,2022-10-31_01,2022-06-22_01 Message-ID-Hash: SXLPH7MRLN5PU2E4ANMKNHZBFUKJ4GDO X-Message-ID-Hash: SXLPH7MRLN5PU2E4ANMKNHZBFUKJ4GDO X-MailFrom: prvs=230321e6af=yhs@meta.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: "alexandr.lobakin@intel.com" , "anatoly.burakov@intel.com" , "sdf@google.com" , "song@kernel.org" , "Deric, Nemanja" , "andrii@kernel.org" , "Kiszka, Jan" , "magnus.karlsson@gmail.com" , "willemb@google.com" , "ast@kernel.org" , "brouer@redhat.com" , "yhs@fb.com" , "martin.lau@linux.dev" , "kpsingh@kernel.org" , "daniel@iogearbox.net" , "bpf@vger.kernel.org" , "mtahhan@redhat.com" , "xdp-hints@xdp-project.net" , "netdev@vger.kernel.org" , "jolsa@kernel.org" , "haoluo@google.com" X-Mailman-Version: 3.3.5 Precedence: list Subject: [xdp-hints] Re: [RFC bpf-next 0/5] xdp: hints via kfuncs List-Id: XDP hardware hints design discussion Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: DQoNCk9uIDEwLzMxLzIyIDg6MjggQU0sIFRva2UgSMO4aWxhbmQtSsO4cmdlbnNlbiB3cm90ZToN Cj4gIkJlemRla2EsIEZsb3JpYW4iIDxmbG9yaWFuLmJlemRla2FAc2llbWVucy5jb20+IHdyaXRl czoNCj4gDQo+PiBIaSBhbGwsDQo+Pg0KPj4gSSB3YXMgY2xvc2VseSBmb2xsb3dpbmcgdGhpcyBk aXNjdXNzaW9uIGZvciBzb21lIHRpbWUgbm93LiBTZWVtcyB3ZQ0KPj4gcmVhY2hlZCB0aGUgcG9p bnQgd2hlcmUgaXQncyBnZXR0aW5nIGludGVyZXN0aW5nIGZvciBtZS4NCj4+DQo+PiBPbiBGcmks IDIwMjItMTAtMjggYXQgMTg6MTQgLTA3MDAsIEpha3ViIEtpY2luc2tpIHdyb3RlOg0KPj4+IE9u IEZyaSwgMjggT2N0IDIwMjIgMTY6MTY6MTcgLTA3MDAgSm9obiBGYXN0YWJlbmQgd3JvdGU6DQo+ Pj4+Pj4gQW5kIGl0J3MgYWN0dWFsbHkgaGFyZGVyIHRvIGFic3RyYWN0IGF3YXkgaW50ZXIgSFcg Z2VuZXJhdGlvbg0KPj4+Pj4+IGRpZmZlcmVuY2VzIGlmIHRoZSB1c2VyIHNwYWNlIGNvZGUgaGFz IHRvIGhhbmRsZSBhbGwgb2YgaXQuDQo+Pj4+DQo+Pj4+IEkgZG9uJ3Qgc2VlIGhvdyBpdHMgYW55 IGhhcmRlciBpbiBwcmFjdGljZSB0aG91Z2g/DQo+Pj4NCj4+PiBZb3UgbmVlZCB0byBmaW5kIG91 dCB3aGF0IEhXL0ZXL2NvbmZpZyB5b3UncmUgcnVubmluZywgcmlnaHQ/DQo+Pj4gQW5kIGFsbCB5 b3UgaGF2ZSBpcyBhIHBvaW50ZXIgdG8gYSBibG9iIG9mIHVua25vd24gdHlwZS4NCj4+Pg0KPj4+ IFRha2UgdGltZXN0YW1wcyBmb3IgZXhhbXBsZSwgc29tZSBOSUNzIHN1cHBvcnQgYWRqdXN0aW5n IHRoZSBQSEMNCj4+PiBvciBkb2luZyBTVyBjb3JyZWN0aW9ucyAod2l0aCBkaWZmZXJlbnQgdmVy c2lvbnMgb2YgaHcvZncvc2VydmVyDQo+Pj4gcGxhdGZvcm1zIGJlaW5nIGNhcGFibGUgb2YgYm90 aC9vbmUvbmVpdGhlcikuDQo+Pj4NCj4+PiBTdXJlIHlvdSBjYW4gZXh0cmFjdCBhbGwgdGhpcyBp bmZvIHdpdGggdHJhY2luZyBhbmQgY2FyZWZ1bA0KPj4+IGluc3BlY3Rpb24gdmlhIHVBUEkuIEJ1 dCBJIGRvbid0IHRoaW5rIHRoYXQncyBfZWFzaWVyXy4NCj4+PiBBbmQgdGhlIHZlbmRvcnMgY2Fu J3QgcnVuIHRoZSByZXN1bHRzIHRocnUgdGhlaXIgdmFsaWRhdGlvbg0KPj4+IChmb3Igd2hhdGV2 ZXIgdGhhdCdzIHdvcnRoKS4NCj4+Pg0KPj4+Pj4gSSd2ZSBoYWQgdGhlIHNhbWUgY29uY2VybjoN Cj4+Pj4+DQo+Pj4+PiBVbnRpbCB3ZSBoYXZlIHNvbWUgdXNlcnNwYWNlIGxpYnJhcnkgdGhhdCBh YnN0cmFjdHMgYWxsIHRoZXNlIGRldGFpbHMsDQo+Pj4+PiBpdCdzIG5vdCByZWFsbHkgY29udmVu aWVudCB0byB1c2UuIElJVUMsIHdpdGggYSBrcHRyLCBJJ2QgZ2V0IGEgYmxvYg0KPj4+Pj4gb2Yg ZGF0YSBhbmQgSSBuZWVkIHRvIGdvIHRocm91Z2ggdGhlIGNvZGUgYW5kIHNlZSB3aGF0IHBhcnRp Y3VsYXIgdHlwZQ0KPj4+Pj4gaXQgcmVwcmVzZW50cyBmb3IgbXkgcGFydGljdWxhciBkZXZpY2Ug YW5kIGhvdyB0aGUgZGF0YSBJIG5lZWQgaXMNCj4+Pj4+IHJlcHJlc2VudGVkIHRoZXJlLiBUaGVy ZSBhcmUgYWxzbyB0aGVzZSAiaWYgdGhpcyBpcyBkZXZpY2UgdjEgLT4gdXNlDQo+Pj4+PiB2MSBk ZXNjcmlwdG9yIGZvcm1hdDsgaWYgaXQncyBhIHYyLT51c2UgdGhpcyBhbm90aGVyIHN0cnVjdDsg ZXRjIg0KPj4+Pj4gY29tcGxleGl0aWVzIHRoYXQgd2UnbGwgYmUgcHVzaGluZyBvbnRvIHRoZSB1 c2Vycy4gV2l0aCBrZnVuY3MsIHdlIHB1dA0KPj4+Pj4gdGhpcyBidXJkZW4gb24gdGhlIGRyaXZl ciBkZXZlbG9wZXJzLCBidXQgSSBhZ3JlZSB0aGF0IHRoZSBkcmF3YmFjaw0KPj4+Pj4gaGVyZSBp cyB0aGF0IHdlIGFjdHVhbGx5IGhhdmUgdG8gd2FpdCBmb3IgdGhlIGltcGxlbWVudGF0aW9ucyB0 byBjYXRjaA0KPj4+Pj4gdXAuDQo+Pj4+DQo+Pj4+IEkgYWdyZWUgd2l0aCBldmVyeXRoaW5nIHRo ZXJlLCB5b3Ugd2lsbCBnZXQgYSBibG9iIG9mIGRhdGEgYW5kIHRoZW4NCj4+Pj4gd2lsbCBuZWVk IHRvIGtub3cgd2hhdCBmaWVsZCB5b3Ugd2FudCB0byByZWFkIHVzaW5nIEJURi4gQnV0LCB3ZQ0K Pj4+PiBhbHJlYWR5IGRvIHRoaXMgZm9yIEJQRiBwcm9ncmFtcyBhbGwgb3ZlciB0aGUgcGxhY2Ug c28gaXRzIG5vdCBhIGJpZw0KPj4+PiBsaWZ0IGZvciB1cy4gQWxsIG90aGVyIEJQRiB0cmFjaW5n L29ic2VydmFiaWxpdHkgcmVxdWlyZXMgdGhlIHNhbWUNCj4+Pj4gbG9naWMuIEkgdGhpbmsgdXNl cnMgb2YgQlBGIGluIGdlbmVyYWwgcGVyaGFwcyBYRFAvdGMgYXJlIHRoZSBvbmx5DQo+Pj4+IHBs YWNlIGxlZnQgdG8gd3JpdGUgQlBGIHByb2dyYW1zIHdpdGhvdXQgdGhpbmtpbmcgYWJvdXQgQlRG IGFuZA0KPj4+PiBrZXJuZWwgZGF0YSBzdHJ1Y3R1cmVzLg0KPj4+Pg0KPj4+PiBCdXQsIHdpdGgg cHJvcG9zZWQga3B0ciB0aGUgY29tcGxleGl0eSBsaXZlcyBpbiB1c2Vyc3BhY2UgYW5kIGNhbiBi ZQ0KPj4+PiBmaXhlZCwgYWRkZWQsIHVwZGF0ZWQgd2l0aG91dCBoYXZpbmcgdG8gYm90aGVyIHdp dGgga2VybmVsIHVwZGF0ZXMsIGV0Yy4NCj4+Pj4gIEZyb20gbXkgcG9pbnQgb2YgdmlldyBvZiBz dXBwb3J0aW5nIENpbGl1bSBpdHMgYSB3aW4gYW5kIG11Y2ggcHJlZmVycmVkDQo+Pj4+IHRvIGhh dmluZyB0byBkZWFsIHdpdGggZHJpdmVyIG93bmVycyBvbiBhbGwgY2xvdWQgdmVuZG9ycywgZGlz dHJpYnV0aW9ucywNCj4+Pj4gYW5kIHNvIG9uLg0KPj4+Pg0KPj4+PiBJZiB2ZW5kb3IgdXBkYXRl cyBmaXJtd2FyZSB3aXRoIG5ldyBmaWVsZHMgSSBnZXQgdGhvc2UgaW1tZWRpYXRlbHkuDQo+Pj4N Cj4+PiBDb252ZXJzZWx5IGl0J3MgYSB2YWxpZCBjb25jZXJuIHRoYXQgdGhvc2Ugd2hvICpkbyog YWN0dWFsbHkgdXBkYXRlDQo+Pj4gdGhlaXIga2VybmVsIHJlZ3VsYXJseSB3aWxsIGhhdmUgbW9y ZSB0aGluZ3MgdG8gd29ycnkgYWJvdXQuDQo+Pj4NCj4+Pj4+IEpha3ViIG1lbnRpb25zIEZXIGFu ZCBJIGhhdmVuJ3QgZXZlbiB0aG91Z2h0IGFib3V0IHRoYXQ7IHNvIHllYWgsIGJwZg0KPj4+Pj4g cHJvZ3JhbXMgbWlnaHQgaGF2ZSB0byB0YWtlIGEgbG90IG9mIG90aGVyIHN0YXRlIGludG8gY29u c2lkZXJhdGlvbg0KPj4+Pj4gd2hlbiBwYXJzaW5nIHRoZSBkZXNjcmlwdG9yczsgYWxsIHRob3Nl IGRldGFpbHMgZG8gc2VlbSBsaWtlIHRoZXkNCj4+Pj4+IGJlbG9uZyB0byB0aGUgZHJpdmVyIGNv ZGUuDQo+Pj4+DQo+Pj4+IEkgd291bGQgcHJlZmVyIHRvIGF2b2lkIGJlaW5nIHN0dWNrIG9uIHJl cXVpcmluZyBkcml2ZXIgd3JpdGVycyB0bw0KPj4+PiBiZSBpbnZvbHZlZC4gV2l0aCBqdXN0IGEg a3B0ciBJIGNhbiBzdXBwb3J0IHRoZSBkZXZpY2UgYW5kIGFueQ0KPj4+PiBmaXJ3bWFyZSB2ZXJz aW9ucyB3aXRob3V0IHJlcXVpcmluZyBoZWxwLg0KPj4+DQo+Pj4gMSkgd2hlcmUgYXJlIHlvdSBn ZXR0aW5nIGFsbCB0aG9zZSBIVyAvIEZXIHNwZWNzIDpTDQo+Pj4gMikgbWF5YmUgKnlvdSogY2Fu IGJ1dCB5b3UncmUgbm90IGV4YWN0bHkgbm90IGFuIGV4LWRyaXZlciBkZXZlbG9wZXIgOlMNCj4+ Pg0KPj4+Pj4gRmVlbCBmcmVlIHRvIHNlbmQgaXQgZWFybHkgd2l0aCBqdXN0IGEgaGFuZGZ1bCBv ZiBkcml2ZXJzIGltcGxlbWVudGVkOw0KPj4+Pj4gSSdtIG1vcmUgaW50ZXJlc3RlZCBhYm91dCBi cGYvYWZfeGRwL3VzZXIgYXBpIHN0b3J5OyBpZiB3ZSBoYXZlIHNvbWUNCj4+Pj4+IG5pY2Ugc2Ft cGxlL3Rlc3QgY2FzZSB0aGF0IHNob3dzIGhvdyB0aGUgbWV0YWRhdGEgY2FuIGJlIHVzZWQsIHRo YXQNCj4+Pj4+IG1pZ2h0IHB1c2ggdXMgY2xvc2VyIHRvIHRoZSBhZ3JlZW1lbnQgb24gdGhlIGJl c3Qgd2F5IHRvIHByb2NlZWQuDQo+Pj4+DQo+Pj4+IEknbGwgdHJ5IHRvIGRvIGEgaW50ZWwgYW5k IG1seCBpbXBsZW1lbnRhdGlvbiB0byBnZXQgYSBjcm9zcyBzZWN0aW9uLg0KPj4+PiBJIGhhdmUg YSBnb29kIGNvbGxlY3Rpb24gb2YgbmljcyBoZXJlIHNvIHNob3VsZCBiZSBhYmxlIHRvIHNob3cg YQ0KPj4+PiBjb3VwbGUgZmlybXdhcmUgdmVyc2lvbnMuIEl0IGNvdWxkIGJlIGZpbmUgSSB0aGlu ayB0byBoYXZlIHRoZSByYXcNCj4+Pj4ga3B0ciBhY2Nlc3MgYW5kIHRoZW4gYWxzbyBrZnVuY3Mg Zm9yIHNvbWUgdGhpbmdzIHBlcmhhcHMuDQo+Pj4+DQo+Pj4+Pj4gSSdkIHByZWZlciBpZiB3ZSBs ZWZ0IHRoZSBkb29yIG9wZW4gZm9yIG5ldyB2ZW5kb3JzLiBQdW50aW5nIGRlc2NyaXB0b3INCj4+ Pj4+PiBwYXJzaW5nIHRvIHVzZXIgc3BhY2Ugd2lsbCBpbmRlZWQgcmVzdWx0IGluIHdoYXQgeW91 IGp1c3Qgc2FpZCAtIG1ham9yDQo+Pj4+Pj4gdmVuZG9ycyBhcmUgc3VwcG9ydGVkIGFuZCB0aGF0 J3MgaXQuDQo+Pj4+DQo+Pj4+IEknbSBub3Qgc3VyZSBhYm91dCB3aHkgaXQgd291bGQgbWFrZSBp dCBoYXJkZXIgZm9yIG5ldyB2ZW5kb3JzPyBJIHRoaW5rDQo+Pj4+IHRoZSBvcHBvc2l0ZSwNCj4+ Pg0KPj4+IFRCSCBJJ20gb25seSByZXBseWluZyB0byB0aGUgZW1haWwgYmVjYXVzZSBvZiB0aGUg YWJvdmUgcGFydCA6KQ0KPj4+IEkgdGhvdWdodCB0aGlzIHdvdWxkIGJlIHNlbGYgZXZpZGVudCwg YnV0IEkgZ3Vlc3Mgb3VyIHBlcnNwZWN0aXZlcw0KPj4+IGFyZSBkaWZmZXJlbnQuDQo+Pj4NCj4+ PiBQZXJoYXBzIHlvdSBsb29rIGF0IGl0IGZyb20gdGhlIHBlcnNwZWN0aXZlIG9mIFNXIHJ1bm5p bmcgb24gc29tZW9uZQ0KPj4+IGVsc2UncyBjbG91ZCwgYW4gYmVpbmcgYWJsZSB0byBtb3ZlIHRv IGFub3RoZXIgY2xvdWQsIHdpdGhvdXQgaGF2aW5nDQo+Pj4gdG8gd29ycnkgaWYgZmVhdHVyZSBY IGlzIGF2YWlsYWJsZSBpbiB4ZHAgb3IganVzdCBza2IuDQo+Pj4NCj4+PiBJIGxvb2sgYXQgaXQg ZnJvbSB0aGUgcGVyc3BlY3RpdmUgb2YgbWFpbnRhaW5pbmcgYSBjbG91ZCwgd2l0aCBwZW9wbGUN Cj4+PiB3cml0aW5nIHJhbmRvbSBYRFAgYXBwbGljYXRpb25zLiBJZiBJIHN3YXAgYSBOSUMgZnJv bSBhbiBpbmN1bWJlbnQgdG8gYQ0KPj4+IChzdXBlcmlvcikgc3RhcnR1cCwgYW5kIGNsb3VkIHVz ZXJzIGFyZSBtZXNzaW5nIHdpdGggcmF3IGRlc2NyaXB0b3IgLQ0KPj4+IEknZCBuZWVkIHRvIGdv IGZpbmQgZXZlcnkgWERQIHByb2dyYW0gb3V0IHRoZXJlIGFuZCBtYWtlIHN1cmUgaXQNCj4+PiB1 bmRlcnN0YW5kcyB0aGUgbmV3IGRlc2NyaXB0b3JzLg0KPj4NCj4+IEhlcmUgaXMgYW5vdGhlciBw ZXJzcGVjdGl2ZToNCj4+DQo+PiBBcyBBRl9YRFAgYXBwbGljYXRpb24gZGV2ZWxvcGVyIEkgZG9u J3Qgd2FuJ3QgdG8gZGVhbCB3aXRoIHRoZQ0KPj4gdW5kZXJseWluZyBoYXJkd2FyZSBpbiBkZXRh aWwuIEkgbGlrZSB0byByZXF1ZXN0IGEgZmVhdHVyZSBmcm9tIHRoZSBPUw0KPj4gKGluIHRoaXMg Y2FzZSByeC90eCB0aW1lc3RhbXBpbmcpLiBJZiB0aGUgZmVhdHVyZSBpcyBhdmFpbGFibGUgSSB3 aWxsDQo+PiBzaW1wbHkgdXNlIGl0LCBpZiBub3QgSSBtaWdodCBoYXZlIHRvIHdvcmsgYXJvdW5k IGl0IC0gbWF5YmUgYnkgZmFsbGluZw0KPj4gYmFjayB0byBTVyB0aW1lc3RhbXBpbmcuDQo+Pg0K Pj4gQWxsIHBhcnRzIG9mIG15IGFwcGxpY2F0aW9uIChCUEYgcHJvZ3JhbSBpbmNsdWRlZCkgc2hv dWxkIG5vdCBiZQ0KPj4gb3B0aW1pemVkL2FkanVzdGVkIGZvciBhbGwgdGhlIGRpZmZlcmVudCBI VyB2YXJpYW50cyBvdXQgdGhlcmUuDQo+IA0KPiBZZXMsIGFic29sdXRlbHkgYWdyZWVkLiBBYnN0 cmFjdGluZyBhd2F5IHRob3NlIGtpbmRzIG9mIGhhcmR3YXJlDQo+IGRpZmZlcmVuY2VzIGlzIHRo ZSB3aG9sZSAqcG9pbnQqIG9mIGhhdmluZyBhbiBPUy9kcml2ZXIgbW9kZWwuIEkuZS4sDQo+IGl0 J3Mgd2hhdCB0aGUga2VybmVsIGlzIHRoZXJlIGZvciEgSWYgcGVvcGxlIHdhbnQgdG8gYnlwYXNz IHRoYXQgYW5kIGdldA0KPiBkaXJlY3QgYWNjZXNzIHRvIHRoZSBoYXJkd2FyZSwgdGhleSBjYW4g YWxyZWFkeSBkbyB0aGF0IGJ5IHVzaW5nIERQREsuDQo+IA0KPiBTbyBpbiBvdGhlciB3b3Jkcywg MTAwJSBhZ3JlZWQgdGhhdCB3ZSBzaG91bGQgbm90IGV4cGVjdCB0aGUgQlBGDQo+IGRldmVsb3Bl cnMgdG8gZGVhbCB3aXRoIGhhcmR3YXJlIGRldGFpbHMgYXMgd291bGQgYmUgcmVxdWlyZWQgd2l0 aCBhDQo+IGtwdHItYmFzZWQgaW50ZXJmYWNlLg0KPiANCj4gQXMgZm9yIHRoZSBrZnVuYy1iYXNl ZCBpbnRlcmZhY2UsIEkgdGhpbmsgaXQgc2hvd3Mgc29tZSBwcm9taXNlLg0KPiBFeHBvc2luZyBh IGxpc3Qgb2YgZnVuY3Rpb24gbmFtZXMgdG8gcmV0cmlldmUgaW5kaXZpZHVhbCBtZXRhZGF0YSBp dGVtcw0KPiBpbnN0ZWFkIG9mIGEgc3RydWN0IGxheW91dCBpcyBzb3J0YSBjb21wYXJhYmxlIGlu IHRlcm1zIG9mIGRldmVsb3BlciBVSQ0KPiBhY2Nlc3NpYmlsaXR5IGV0YyAoSU1PKS4NCg0KTG9v a3MgbGlrZSB0aGVyZSBhcmUgcXVpdGUgc29tZSB1c2UgY2FzZXMgZm9yIGh3X3RpbWVzdGFtcC4N CkRvIHlvdSB0aGluayB3ZSBjb3VsZCBhZGQgaXQgdG8gdGhlIHVhcGkgbGlrZSBzdHJ1Y3QgeGRw X21kPw0KDQpUaGUgZm9sbG93aW5nIGlzIHRoZSBjdXJyZW50IHhkcF9tZDoNCnN0cnVjdCB4ZHBf bWQgew0KICAgICAgICAgX191MzIgZGF0YTsNCiAgICAgICAgIF9fdTMyIGRhdGFfZW5kOw0KICAg ICAgICAgX191MzIgZGF0YV9tZXRhOw0KICAgICAgICAgLyogQmVsb3cgYWNjZXNzIGdvIHRocm91 Z2ggc3RydWN0IHhkcF9yeHFfaW5mbyAqLw0KICAgICAgICAgX191MzIgaW5ncmVzc19pZmluZGV4 OyAvKiByeHEtPmRldi0+aWZpbmRleCAqLw0KICAgICAgICAgX191MzIgcnhfcXVldWVfaW5kZXg7 ICAvKiByeHEtPnF1ZXVlX2luZGV4ICAqLw0KDQogICAgICAgICBfX3UzMiBlZ3Jlc3NfaWZpbmRl eDsgIC8qIHR4cS0+ZGV2LT5pZmluZGV4ICovDQp9Ow0KDQpXZSBjb3VsZCBhZGQgIF9fdTY0IGh3 X3RpbWVzdGFtcCB0byB0aGUgeGRwX21kIHNvIHVzZXINCmNhbiBqdXN0IGRvIHhkcF9tZC0+aHdf dGltZXN0YW1wIHRvIGdldCB0aGUgdmFsdWUuDQp4ZHBfbWQtPmh3X3RpbWVzdGFtcCA9PSAwIG1l YW5zIGh3X3RpbWVzdGFtcCBpcyBub3QNCmF2YWlsYWJsZS4NCg0KSW5zaWRlIHRoZSBrZXJuZWws IHRoZSBjdHggcmV3cml0ZXIgY2FuIGdlbmVyYXRlIGNvZGUNCnRvIGNhbGwgZHJpdmVyIHNwZWNp ZmljIGZ1bmN0aW9uIHRvIHJldHJpZXZlIHRoZSBkYXRhLg0KDQpUaGUga2Z1bmMgYXBwcm9hY2gg Y2FuIGJlIHVzZWQgdG8gKmxlc3MqIGNvbW1vbiB1c2UgY2FzZXM/DQoNCj4gDQo+IFRoZXJlIGFy ZSB0aHJlZSBtYWluIGRyYXdiYWNrcywgQUZBSUNUOg0KPiANCj4gMS4gSXQgcmVxdWlyZXMgZHJp dmVyIGRldmVsb3BlcnMgdG8gd3JpdGUgYW5kIG1haW50YWluIHRoZSBjb2RlIHRoYXQNCj4gZ2Vu ZXJhdGVzIHRoZSB1bnJvbGxlZCBCUEYgYnl0ZWNvZGUgdG8gYWNjZXNzIHRoZSBtZXRhZGF0YSBm aWVsZHMsIHdoaWNoDQo+IGlzIGEgbm9uLXRyaXZpYWwgYW1vdW50IG9mIGNvbXBsZXhpdHkuIE1h eWJlIHRoaXMgY2FuIGJlIGFic3RyYWN0ZWQgYXdheQ0KPiB3aXRoIHNvbWUgaW50ZXJuYWwgaGVs cGVycyB0aG91Z2ggKGxpa2UsIGUuZy4sIGENCj4gYnBmX3hkcF9tZXRhZGF0YV9jb3B5X3U2NChk c3QsIHNyYywgb2Zmc2V0KSBoZWxwZXIgd2hpY2ggd291bGQgc3BpdCBvdXQNCj4gdGhlIHJlcXVp cmVkIEpNUC9NT1YvTERYIGluc3RydWN0aW9ucz8NCj4gDQo+IDIuIEFGX1hEUCBwcm9ncmFtcyB3 b24ndCBiZSBhYmxlIHRvIGFjY2VzcyB0aGUgbWV0YWRhdGEgd2l0aG91dCB1c2luZyBhDQo+IGN1 c3RvbSBYRFAgcHJvZ3JhbSB0aGF0IGNhbGxzIHRoZSBrZnVuY3MgYW5kIHB1dHMgdGhlIGRhdGEg aW50byB0aGUNCj4gbWV0YWRhdGEgYXJlYS4gV2UgY291bGQgc29sdmUgdGhpcyB3aXRoIHNvbWUg Y29kZSBpbiBsaWJ4ZHAsIHRob3VnaDsgaWYNCj4gdGhpcyBjb2RlIGNhbiBiZSBtYWRlIGdlbmVy aWMgZW5vdWdoIChzbyBpdCBqdXN0IGR1bXBzIHRoZSBhdmFpbGFibGUNCj4gbWV0YWRhdGEgZnVu Y3Rpb25zIGZyb20gdGhlIHJ1bm5pbmcga2VybmVsIGF0IGxvYWQgdGltZSksIGl0IG1heSBiZQ0K PiBwb3NzaWJsZSB0byBtYWtlIGl0IGdlbmVyaWMgZW5vdWdoIHRoYXQgaXQgd2lsbCBiZSBmb3J3 YXJkLWNvbXBhdGlibGUNCj4gd2l0aCBuZXcgdmVyc2lvbnMgb2YgdGhlIGtlcm5lbCB0aGF0IGFk ZCBuZXcgZmllbGRzLCB3aGljaCBzaG91bGQNCj4gYWxsZXZpYXRlIEZsb3JpYW4ncyBjb25jZXJu IGFib3V0IGtlZXBpbmcgdGhpbmdzIGluIHN5bmMuDQo+IA0KPiAzLiBJdCB3aWxsIG1ha2UgaXQg aGFyZGVyIHRvIGNvbnN1bWUgdGhlIG1ldGFkYXRhIHdoZW4gYnVpbGRpbmcgU0tCcy4gSQ0KPiB0 aGluayB0aGUgQ1BVTUFQIGFuZCB2ZXRoIHVzZSBjYXNlcyBhcmUgYWxzbyBxdWl0ZSBpbXBvcnRh bnQsIGFuZCB0aGF0DQo+IHdlIHdhbnQgbWV0YWRhdGEgdG8gYmUgYXZhaWxhYmxlIGZvciBidWls ZGluZyBTS0JzIGluIHRoaXMgcGF0aC4gTWF5YmUNCj4gdGhpcyBjYW4gYmUgcmVzb2x2ZWQgYnkg aGF2aW5nIGEgY29udmVuaWVudCBrZnVuYyBmb3IgdGhpcyB0aGF0IGNhbiBiZQ0KPiB1c2VkIGZv ciBwcm9ncmFtcyBkb2luZyBzdWNoIHJlZGlyZWN0cy4gRS5nLiwgeW91IGNvdWxkIGp1c3QgY2Fs bA0KPiB4ZHBfY29weV9tZXRhZGF0YV9mb3Jfc2tiKCkgYmVmb3JlIGRvaW5nIHRoZSBicGZfcmVk aXJlY3QsIGFuZCB0aGF0DQo+IHdvdWxkIHJlY3Vyc2l2ZWx5IGV4cGFuZCBpbnRvIGFsbCB0aGUg a2Z1bmMgY2FsbHMgbmVlZGVkIHRvIGV4dHJhY3QgdGhlDQo+IG1ldGFkYXRhIHN1cHBvcnRlZCBi eSB0aGUgU0tCIHBhdGg/DQo+IA0KPiAtVG9rZQ0KPiANCg==