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=-1.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,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 A3952C4360F for ; Fri, 5 Apr 2019 10:18:29 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 67ADD21850 for ; Fri, 5 Apr 2019 10:18:29 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730646AbfDEKS2 (ORCPT ); Fri, 5 Apr 2019 06:18:28 -0400 Received: from mail-lj1-f193.google.com ([209.85.208.193]:36472 "EHLO mail-lj1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730283AbfDEKS2 (ORCPT ); Fri, 5 Apr 2019 06:18:28 -0400 Received: by mail-lj1-f193.google.com with SMTP id r24so4770063ljg.3 for ; Fri, 05 Apr 2019 03:18:26 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:references:date :message-id:mime-version:content-transfer-encoding; bh=pbGyXI2Owfzn/1uBz7QxeLH/8si7BwfSy+2KWUOdwZc=; b=SO3zECIYezUG+tiVrkjMUvdc/oM9PorFWFJSw2sE0bnSUJz8p/eX7NfUXY3FPoAWWB QCIwA9HpCNiB70yJM/JbAPJ1Rjjipo0S3aTjc61jqKC2uaLWqvTsNkHSf31H+7JVoopi jsaZIz5uY2exlzxjJfD4HuSmgKSivU9V8dlKFR2/TkbGNpmc6+zQRm/KXJsEcnJjebCJ 5vAIlNcehBEIkMAPrdmiv497TtULmUiRMmqDSLmYctz56KGJpeaf8oqhXXCB5AWZjQ9O 7GSp0FfXu8dLOnoq2F02ah+7C1hQhCs6fsyExpNnW36dBUnwuLqWFNJGD9HpdR+YIv+Y jwFg== X-Gm-Message-State: APjAAAVxUFTzGxJfmt6WuENodAdEJYHaHpV3KABHGgPtT5lqrfGKdsBs a2AvyyIEim0twKzuslbKHk4+qw== X-Google-Smtp-Source: APXvYqwfMquVjQ5bCDF1hlip+pqBSXJoyO/HtXCWCnJEO00IXtLNjzjaO5LmQloOHjuMqZHVqEWm4A== X-Received: by 2002:a2e:8550:: with SMTP id u16mr26374ljj.11.1554459505363; Fri, 05 Apr 2019 03:18:25 -0700 (PDT) Received: from alrua-x1.borgediget.toke.dk (borgediget.toke.dk. [85.204.121.218]) by smtp.gmail.com with ESMTPSA id d17sm4247781lfb.60.2019.04.05.03.18.23 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 05 Apr 2019 03:18:24 -0700 (PDT) Received: by alrua-x1.borgediget.toke.dk (Postfix, from userid 1000) id 76C9D1804A5; Fri, 5 Apr 2019 12:18:23 +0200 (CEST) From: Toke =?utf-8?Q?H=C3=B8iland-J=C3=B8rgensen?= To: Toshiaki Makita , Felix Fietkau , =?utf-8?Q?Rafa=C5=82_Mi=C5=82ecki?= Cc: Toshiaki Makita , netdev@vger.kernel.org, "David S. Miller" , Stefano Brivio , Sabrina Dubroca , David Ahern , Jo-Philipp Wich , Koen Vandeputte Subject: Re: NAT performance regression caused by vlan GRO support In-Reply-To: <67d634cd-cf16-df21-7b8a-5d865d95e4e6@lab.ntt.co.jp> References: <73223229-6bc0-2647-6952-975961811866@gmail.com> <75961408-fd62-0f12-bd4b-79008b27576c@gmail.com> <53588a9f-8cc8-0ee5-0947-8ab2b2e56f15@gmail.com> <45b6fe37-ba1a-91c2-1d4a-2d045793babd@nbd.name> <67d634cd-cf16-df21-7b8a-5d865d95e4e6@lab.ntt.co.jp> X-Clacks-Overhead: GNU Terry Pratchett Date: Fri, 05 Apr 2019 12:18:23 +0200 Message-ID: <87mul421sg.fsf@toke.dk> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org VG9zaGlha2kgTWFraXRhIDxtYWtpdGEudG9zaGlha2lAbGFiLm50dC5jby5qcD4gd3JpdGVzOg0K DQo+IE9uIDIwMTkvMDQvMDUgMTY6MTQsIEZlbGl4IEZpZXRrYXUgd3JvdGU6DQo+PiBPbiAyMDE5 LTA0LTA1IDA5OjExLCBSYWZhxYIgTWnFgmVja2kgd3JvdGU6DQo+Pj4gT24gMDUuMDQuMjAxOSAw Nzo0OCwgUmFmYcWCIE1pxYJlY2tpIHdyb3RlOg0KPj4+PiBPbiAwNS4wNC4yMDE5IDA2OjI2LCBU b3NoaWFraSBNYWtpdGEgd3JvdGU6DQo+Pj4+PiBNeSB0ZXN0IHJlc3VsdHM6DQo+Pj4+Pg0KPj4+ Pj4gUmVjZWl2aW5nIHBhY2tldHMgZnJvbSBldGgwLjEwLCBmb3J3YXJkaW5nIHRoZW0gdG8gZXRo MC4yMCBhbmQgYXBwbHlpbmcNCj4+Pj4+IE1BU1FVRVJBREUgb24gZXRoMC4yMCwgdXNpbmcgaTQw ZSAyNUcgTklDIG9uIGtlcm5lbCA0LjIwLjEzLg0KPj4+Pj4gRGlzYWJsZWQgcnh2bGFuIGJ5IGV0 aHRvb2wgLUsgdG8gZXhlcmNpc2Ugdmxhbl9ncm9fcmVjZWl2ZSgpLg0KPj4+Pj4gTWVhc3VyZWQg VENQIHRocm91Z2hwdXQgYnkgbmV0cGVyZi4NCj4+Pj4+DQo+Pj4+PiBHUk8gb24gOiAxNyBHYnBz DQo+Pj4+PiBHUk8gb2ZmOsKgIDUgR2Jwcw0KPj4+Pj4NCj4+Pj4+IFNvIEkgZmFpbGVkIHRvIHJl cHJvZHVjZSB5b3VyIHByb2JsZW0uDQo+Pj4+DQo+Pj4+IDooIFRoYW5rcyBmb3IgdHJ5aW5nICYg Y2hlY2tpbmcgdGhhdCENCj4+Pj4NCj4+Pj4NCj4+Pj4+IFdvdWxkIHlvdSBjaGVjayB0aGUgQ1BV IHVzYWdlIGJ5ICJtcHN0YXQgLVAgQUxMIiBvciBzaW1pbGFyIChsaWtlICJzYXINCj4+Pj4+IC11 IEFMTCAtUCBBTEwiKSB0byBjaGVjayBpZiB0aGUgdHJhZmZpYyBpcyBhYmxlIHRvIGNvbnN1bWUg MTAwJSBDUFUgb24NCj4+Pj4+IHlvdXIgbWFjaGluZT8NCj4+Pj4NCj4+Pj4gMSkgZXRodG9vbCAt SyBldGgwIGdybyBvbiArIGlwZXJmIHJ1bm5pbmcgKDU3NyBNYi9zKQ0KPj4+PiByb290QE9wZW5X cnQ6LyMgbXBzdGF0IC1QIEFMTCAxMCAzDQo+Pj4+IExpbnV4IDUuMS4wLXJjMysgKE9wZW5XcnQp wqDCoMKgwqDCoCAwMy8yNy8xOcKgwqDCoMKgwqDCoMKgIF9hcm12N2xfwqDCoMKgwqDCoMKgwqAg KDIgQ1BVKQ0KPj4+Pg0KPj4+PiAxNjozMzo0MMKgwqDCoMKgIENQVcKgwqDCoCAldXNywqDCoCAl bmljZcKgwqDCoCAlc3lzICVpb3dhaXTCoMKgwqAgJWlyccKgwqAgJXNvZnTCoCAlc3RlYWzCoCAl Z3Vlc3TCoMKgICVpZGxlDQo+Pj4+IDE2OjMzOjUwwqDCoMKgwqAgYWxswqDCoMKgIDAuMDDCoMKg wqAgMC4wMMKgwqDCoCAwLjAwwqDCoMKgIDAuMDDCoMKgwqAgMC4wMMKgwqAgNTguNznCoMKgwqAg MC4wMMKgwqDCoCAwLjAwwqDCoCA0MS4yMQ0KPj4+PiAxNjozMzo1MMKgwqDCoMKgwqDCoCAwwqDC oMKgIDAuMDDCoMKgwqAgMC4wMMKgwqDCoCAwLjAwwqDCoMKgIDAuMDDCoMKgwqAgMC4wMMKgIDEw MC4wMMKgwqDCoCAwLjAwwqDCoMKgIDAuMDDCoMKgwqAgMC4wMA0KPj4+PiAxNjozMzo1MMKgwqDC oMKgwqDCoCAxwqDCoMKgIDAuMDDCoMKgwqAgMC4wMMKgwqDCoCAwLjAwwqDCoMKgIDAuMDDCoMKg wqAgMC4wMMKgwqAgMTcuNTjCoMKgwqAgMC4wMMKgwqDCoCAwLjAwwqDCoCA4Mi40Mg0KPj4+Pg0K Pj4+PiAxNjozMzo1MMKgwqDCoMKgIENQVcKgwqDCoCAldXNywqDCoCAlbmljZcKgwqDCoCAlc3lz ICVpb3dhaXTCoMKgwqAgJWlyccKgwqAgJXNvZnTCoCAlc3RlYWzCoCAlZ3Vlc3TCoMKgICVpZGxl DQo+Pj4+IDE2OjM0OjAwwqDCoMKgwqAgYWxswqDCoMKgIDAuMDDCoMKgwqAgMC4wMMKgwqDCoCAw LjA1wqDCoMKgIDAuMDDCoMKgwqAgMC4wMMKgwqAgNTkuNDTCoMKgwqAgMC4wMMKgwqDCoCAwLjAw wqDCoCA0MC41MQ0KPj4+PiAxNjozNDowMMKgwqDCoMKgwqDCoCAwwqDCoMKgIDAuMDDCoMKgwqAg MC4wMMKgwqDCoCAwLjEwwqDCoMKgIDAuMDDCoMKgwqAgMC4wMMKgwqAgOTkuOTDCoMKgwqAgMC4w MMKgwqDCoCAwLjAwwqDCoMKgIDAuMDANCj4+Pj4gMTY6MzQ6MDDCoMKgwqDCoMKgwqAgMcKgwqDC oCAwLjAwwqDCoMKgIDAuMDDCoMKgwqAgMC4wMMKgwqDCoCAwLjAwwqDCoMKgIDAuMDDCoMKgIDE4 Ljk4wqDCoMKgIDAuMDDCoMKgwqAgMC4wMMKgwqAgODEuMDINCj4+Pj4NCj4+Pj4gMTY6MzQ6MDDC oMKgwqDCoCBDUFXCoMKgwqAgJXVzcsKgwqAgJW5pY2XCoMKgwqAgJXN5cyAlaW93YWl0wqDCoMKg ICVpcnHCoMKgICVzb2Z0wqAgJXN0ZWFswqAgJWd1ZXN0wqDCoCAlaWRsZQ0KPj4+PiAxNjozNDox MMKgwqDCoMKgIGFsbMKgwqDCoCAwLjAwwqDCoMKgIDAuMDDCoMKgwqAgMC4wMMKgwqDCoCAwLjAw wqDCoMKgIDAuMDDCoMKgIDU5LjU5wqDCoMKgIDAuMDDCoMKgwqAgMC4wMMKgwqAgNDAuNDENCj4+ Pj4gMTY6MzQ6MTDCoMKgwqDCoMKgwqAgMMKgwqDCoCAwLjAwwqDCoMKgIDAuMDDCoMKgwqAgMC4w MMKgwqDCoCAwLjAwwqDCoMKgIDAuMDDCoCAxMDAuMDDCoMKgwqAgMC4wMMKgwqDCoCAwLjAwwqDC oMKgIDAuMDANCj4+Pj4gMTY6MzQ6MTDCoMKgwqDCoMKgwqAgMcKgwqDCoCAwLjAwwqDCoMKgIDAu MDDCoMKgwqAgMC4wMMKgwqDCoCAwLjAwwqDCoMKgIDAuMDDCoMKgIDE5LjE4wqDCoMKgIDAuMDDC oMKgwqAgMC4wMMKgwqAgODAuODINCj4+Pj4NCj4+Pj4gQXZlcmFnZTrCoMKgwqDCoCBDUFXCoMKg wqAgJXVzcsKgwqAgJW5pY2XCoMKgwqAgJXN5cyAlaW93YWl0wqDCoMKgICVpcnHCoMKgICVzb2Z0 wqAgJXN0ZWFswqAgJWd1ZXN0wqDCoCAlaWRsZQ0KPj4+PiBBdmVyYWdlOsKgwqDCoMKgIGFsbMKg wqDCoCAwLjAwwqDCoMKgIDAuMDDCoMKgwqAgMC4wMsKgwqDCoCAwLjAwwqDCoMKgIDAuMDDCoMKg IDU5LjI3wqDCoMKgIDAuMDDCoMKgwqAgMC4wMMKgwqAgNDAuNzENCj4+Pj4gQXZlcmFnZTrCoMKg wqDCoMKgwqAgMMKgwqDCoCAwLjAwwqDCoMKgIDAuMDDCoMKgwqAgMC4wM8KgwqDCoCAwLjAwwqDC oMKgIDAuMDDCoMKgIDk5Ljk3wqDCoMKgIDAuMDDCoMKgwqAgMC4wMMKgwqDCoCAwLjAwDQo+Pj4+ IEF2ZXJhZ2U6wqDCoMKgwqDCoMKgIDHCoMKgwqAgMC4wMMKgwqDCoCAwLjAwwqDCoMKgIDAuMDDC oMKgwqAgMC4wMMKgwqDCoCAwLjAwwqDCoCAxOC41OMKgwqDCoCAwLjAwwqDCoMKgIDAuMDDCoMKg IDgxLjQyDQo+Pj4+DQo+Pj4+DQo+Pj4+IDIpIGV0aHRvb2wgLUsgZXRoMCBncm8gb2ZmICsgaXBl cmYgcnVubmluZyAoOTQxIE1iL3MpDQo+Pj4+IHJvb3RAT3BlbldydDovIyBtcHN0YXQgLVAgQUxM IDEwIDMNCj4+Pj4gTGludXggNS4xLjAtcmMzKyAoT3BlbldydCnCoMKgwqDCoMKgIDAzLzI3LzE5 wqDCoMKgwqDCoMKgwqAgX2FybXY3bF/CoMKgwqDCoMKgwqDCoCAoMiBDUFUpDQo+Pj4+DQo+Pj4+ IDE2OjM0OjM5wqDCoMKgwqAgQ1BVwqDCoMKgICV1c3LCoMKgICVuaWNlwqDCoMKgICVzeXMgJWlv d2FpdMKgwqDCoCAlaXJxwqDCoCAlc29mdMKgICVzdGVhbMKgICVndWVzdMKgwqAgJWlkbGUNCj4+ Pj4gMTY6MzQ6NDnCoMKgwqDCoCBhbGzCoMKgwqAgMC4wMMKgwqDCoCAwLjAwwqDCoMKgIDAuMDXC oMKgwqAgMC4wMMKgwqDCoCAwLjAwwqDCoCA4Ni45McKgwqDCoCAwLjAwwqDCoMKgIDAuMDDCoMKg IDEzLjA0DQo+Pj4+IDE2OjM0OjQ5wqDCoMKgwqDCoMKgIDDCoMKgwqAgMC4wMMKgwqDCoCAwLjAw wqDCoMKgIDAuMTDCoMKgwqAgMC4wMMKgwqDCoCAwLjAwwqDCoCA3OC4yMsKgwqDCoCAwLjAwwqDC oMKgIDAuMDDCoMKgIDIxLjY4DQo+Pj4+IDE2OjM0OjQ5wqDCoMKgwqDCoMKgIDHCoMKgwqAgMC4w MMKgwqDCoCAwLjAwwqDCoMKgIDAuMDDCoMKgwqAgMC4wMMKgwqDCoCAwLjAwwqDCoCA5NS42MMKg wqDCoCAwLjAwwqDCoMKgIDAuMDDCoMKgwqAgNC40MA0KPj4+Pg0KPj4+PiAxNjozNDo0OcKgwqDC oMKgIENQVcKgwqDCoCAldXNywqDCoCAlbmljZcKgwqDCoCAlc3lzICVpb3dhaXTCoMKgwqAgJWly ccKgwqAgJXNvZnTCoCAlc3RlYWzCoCAlZ3Vlc3TCoMKgICVpZGxlDQo+Pj4+IDE2OjM0OjU5wqDC oMKgwqAgYWxswqDCoMKgIDAuMDDCoMKgwqAgMC4wMMKgwqDCoCAwLjEwwqDCoMKgIDAuMDDCoMKg wqAgMC4wMMKgwqAgODcuMDbCoMKgwqAgMC4wMMKgwqDCoCAwLjAwwqDCoCAxMi44NA0KPj4+PiAx NjozNDo1OcKgwqDCoMKgwqDCoCAwwqDCoMKgIDAuMDDCoMKgwqAgMC4wMMKgwqDCoCAwLjIwwqDC oMKgIDAuMDDCoMKgwqAgMC4wMMKgwqAgNzkuNzLCoMKgwqAgMC4wMMKgwqDCoCAwLjAwwqDCoCAy MC4wOA0KPj4+PiAxNjozNDo1OcKgwqDCoMKgwqDCoCAxwqDCoMKgIDAuMDDCoMKgwqAgMC4wMMKg wqDCoCAwLjAwwqDCoMKgIDAuMDDCoMKgwqAgMC4wMMKgwqAgOTQuNDHCoMKgwqAgMC4wMMKgwqDC oCAwLjAwwqDCoMKgIDUuNTkNCj4+Pj4NCj4+Pj4gMTY6MzQ6NTnCoMKgwqDCoCBDUFXCoMKgwqAg JXVzcsKgwqAgJW5pY2XCoMKgwqAgJXN5cyAlaW93YWl0wqDCoMKgICVpcnHCoMKgICVzb2Z0wqAg JXN0ZWFswqAgJWd1ZXN0wqDCoCAlaWRsZQ0KPj4+PiAxNjozNTowOcKgwqDCoMKgIGFsbMKgwqDC oCAwLjAwwqDCoMKgIDAuMDDCoMKgwqAgMC4wNcKgwqDCoCAwLjAwwqDCoMKgIDAuMDDCoMKgIDg1 LjcxwqDCoMKgIDAuMDDCoMKgwqAgMC4wMMKgwqAgMTQuMjQNCj4+Pj4gMTY6MzU6MDnCoMKgwqDC oMKgwqAgMMKgwqDCoCAwLjAwwqDCoMKgIDAuMDDCoMKgwqAgMC4xMMKgwqDCoCAwLjAwwqDCoMKg IDAuMDDCoMKgIDc5LjQywqDCoMKgIDAuMDDCoMKgwqAgMC4wMMKgwqAgMjAuNDgNCj4+Pj4gMTY6 MzU6MDnCoMKgwqDCoMKgwqAgMcKgwqDCoCAwLjAwwqDCoMKgIDAuMDDCoMKgwqAgMC4wMMKgwqDC oCAwLjAwwqDCoMKgIDAuMDDCoMKgIDkyLjAxwqDCoMKgIDAuMDDCoMKgwqAgMC4wMMKgwqDCoCA3 Ljk5DQo+Pj4+DQo+Pj4+IEF2ZXJhZ2U6wqDCoMKgwqAgQ1BVwqDCoMKgICV1c3LCoMKgICVuaWNl wqDCoMKgICVzeXMgJWlvd2FpdMKgwqDCoCAlaXJxwqDCoCAlc29mdMKgICVzdGVhbMKgICVndWVz dMKgwqAgJWlkbGUNCj4+Pj4gQXZlcmFnZTrCoMKgwqDCoCBhbGzCoMKgwqAgMC4wMMKgwqDCoCAw LjAwwqDCoMKgIDAuMDfCoMKgwqAgMC4wMMKgwqDCoCAwLjAwwqDCoCA4Ni41NsKgwqDCoCAwLjAw wqDCoMKgIDAuMDDCoMKgIDEzLjM3DQo+Pj4+IEF2ZXJhZ2U6wqDCoMKgwqDCoMKgIDDCoMKgwqAg MC4wMMKgwqDCoCAwLjAwwqDCoMKgIDAuMTPCoMKgwqAgMC4wMMKgwqDCoCAwLjAwwqDCoCA3OS4x MsKgwqDCoCAwLjAwwqDCoMKgIDAuMDDCoMKgIDIwLjc1DQo+Pj4+IEF2ZXJhZ2U6wqDCoMKgwqDC oMKgIDHCoMKgwqAgMC4wMMKgwqDCoCAwLjAwwqDCoMKgIDAuMDDCoMKgwqAgMC4wMMKgwqDCoCAw LjAwwqDCoCA5NC4wMcKgwqDCoCAwLjAwwqDCoMKgIDAuMDDCoMKgwqAgNS45OQ0KPj4+Pg0KPj4+ Pg0KPj4+PiAzKSBTeXN0ZW0gaWRsZSAobm8gaXBlcmYpDQo+Pj4+IHJvb3RAT3BlbldydDovIyBt cHN0YXQgLVAgQUxMIDEwIDENCj4+Pj4gTGludXggNS4xLjAtcmMzKyAoT3BlbldydCnCoMKgwqDC oMKgIDAzLzI3LzE5wqDCoMKgwqDCoMKgwqAgX2FybXY3bF/CoMKgwqDCoMKgwqDCoCAoMiBDUFUp DQo+Pj4+DQo+Pj4+IDE2OjM1OjMxwqDCoMKgwqAgQ1BVwqDCoMKgICV1c3LCoMKgICVuaWNlwqDC oMKgICVzeXMgJWlvd2FpdMKgwqDCoCAlaXJxwqDCoCAlc29mdMKgICVzdGVhbMKgICVndWVzdMKg wqAgJWlkbGUNCj4+Pj4gMTY6MzU6NDHCoMKgwqDCoCBhbGzCoMKgwqAgMC4wMMKgwqDCoCAwLjAw wqDCoMKgIDAuMDDCoMKgwqAgMC4wMMKgwqDCoCAwLjAwwqDCoMKgIDAuMDDCoMKgwqAgMC4wMMKg wqDCoCAwLjAwwqAgMTAwLjAwDQo+Pj4+IDE2OjM1OjQxwqDCoMKgwqDCoMKgIDDCoMKgwqAgMC4w MMKgwqDCoCAwLjAwwqDCoMKgIDAuMDDCoMKgwqAgMC4wMMKgwqDCoCAwLjAwwqDCoMKgIDAuMDDC oMKgwqAgMC4wMMKgwqDCoCAwLjAwwqAgMTAwLjAwDQo+Pj4+IDE2OjM1OjQxwqDCoMKgwqDCoMKg IDHCoMKgwqAgMC4wMMKgwqDCoCAwLjAwwqDCoMKgIDAuMDDCoMKgwqAgMC4wMMKgwqDCoCAwLjAw wqDCoMKgIDAuMDDCoMKgwqAgMC4wMMKgwqDCoCAwLjAwwqAgMTAwLjAwDQo+Pj4+DQo+Pj4+IEF2 ZXJhZ2U6wqDCoMKgwqAgQ1BVwqDCoMKgICV1c3LCoMKgICVuaWNlwqDCoMKgICVzeXMgJWlvd2Fp dMKgwqDCoCAlaXJxwqDCoCAlc29mdMKgICVzdGVhbMKgICVndWVzdMKgwqAgJWlkbGUNCj4+Pj4g QXZlcmFnZTrCoMKgwqDCoCBhbGzCoMKgwqAgMC4wMMKgwqDCoCAwLjAwwqDCoMKgIDAuMDDCoMKg wqAgMC4wMMKgwqDCoCAwLjAwwqDCoMKgIDAuMDDCoMKgwqAgMC4wMMKgwqDCoCAwLjAwwqAgMTAw LjAwDQo+Pj4+IEF2ZXJhZ2U6wqDCoMKgwqDCoMKgIDDCoMKgwqAgMC4wMMKgwqDCoCAwLjAwwqDC oMKgIDAuMDDCoMKgwqAgMC4wMMKgwqDCoCAwLjAwwqDCoMKgIDAuMDDCoMKgwqAgMC4wMMKgwqDC oCAwLjAwwqAgMTAwLjAwDQo+Pj4+IEF2ZXJhZ2U6wqDCoMKgwqDCoMKgIDHCoMKgwqAgMC4wMMKg wqDCoCAwLjAwwqDCoMKgIDAuMDDCoMKgwqAgMC4wMMKgwqDCoCAwLjAwwqDCoMKgIDAuMDDCoMKg wqAgMC4wMMKgwqDCoCAwLjAwwqAgMTAwLjAwDQo+Pj4+DQo+Pj4+DQo+Pj4+PiBJZiBDUFUgaXMg MTAwJSwgcGVyZiBtYXkgaGVscCB1cyBhbmFseXplIHlvdXIgcHJvYmxlbS4gSWYgaXQncw0KPj4+ Pj4gYXZhaWxhYmxlLCB0cnkgcnVubmluZyBiZWxvdyB3aGlsZSB0ZXN0aW5nOg0KPj4+Pj4gIyBw ZXJmIHJlY29yZCAtYSAtZyAtLSBzbGVlcCA1DQo+Pj4+Pg0KPj4+Pj4gQW5kIHRoZW4gcnVuIHRo aXMgYWZ0ZXIgdGVzdGluZzoNCj4+Pj4+ICMgcGVyZiByZXBvcnQgLS1uby1jaGlsZA0KPj4+Pg0K Pj4+PiBJIGNhbiBzZWUgbXkgQ1BVIDAgaXMgZnVsbHkgbG9hZGVkIHdoZW4gdXNpbmcgImdybyBv biIuIEknbGwgdHJ5IHBlcmYgbm93Lg0KPj4+DQo+Pj4gSSBndWVzcyBpdHMgR1JPICsgY3N1bV9w YXJ0aWFsKCkgdG8gYmUgYmxhbWVkIGZvciB0aGlzIHBlcmZvcm1hbmNlIGRyb3AuDQo+Pj4NCj4+ PiBNYXliZSBjc3VtX3BhcnRpYWwoKSBpcyB2ZXJ5IGZhc3Qgb24geW91ciBwb3dlcmZ1bCBtYWNo aW5lIGFuZCBmZXcgZXh0cmEgY2FsbHMNCj4+PiBkb24ndCBtYWtlIGEgZGlmZmVyZW5jZT8gSSBj YW4gaW1hZ2luZSBpdCBhZmZlY3RpbmcgbXVjaCBzbG93ZXIgaG9tZSByb3V0ZXIgd2l0aA0KPj4+ IEFSTSBjb3Jlcy4NCj4+IE1vc3QgaGlnaCBwZXJmb3JtYW5jZSBFdGhlcm5ldCBkZXZpY2VzIGlt cGxlbWVudCBoYXJkd2FyZSBjaGVja3N1bQ0KPj4gb2ZmbG9hZCwgd2hpY2ggY29tcGxldGVseSBn ZXRzIHJpZCBvZiB0aGlzIG92ZXJoZWFkLg0KPj4gVW5mb3J0dW5hdGVseSwgdGhlIEJDTTUzeHgv NDd4eCBFdGhlcm5ldCBNQUMgZG9lc24ndCBoYXZlIHRoaXMsIHdoaWNoIGlzDQo+PiB3aHkgeW91 J3JlIGdldHRpbmcgc3VjaCBjcmFwcHkgcGVyZm9ybWFuY2UuDQo+DQo+IEhtbS4uLiBub3cgSSBk aXNhYmxlZCByeCBjaGVja3N1bSBhbmQgdHJpZWQgdGhlIHRlc3QgYWdhaW4sIGFuZCBpbmRlZWQg SQ0KPiBzZWUgY3N1bV9wYXJ0aWFsIGZyb20gR1JPIHBhdGguIEJ1dCBJIGFsc28gc2VlIGNzdW1f cGFydGlhbCBldmVuIHdpdGhvdXQNCj4gR1JPIGZyb20gbmZfY29ubnRyYWNrX2luIC0+IHRjcF9w YWNrZXQgLT4gX19za2JfY2hlY2tzdW1fY29tcGxldGUuDQo+IFByb2JhYmx5IFJhZmHFgiBkaXNh YmxlZCBuZl9jb25udHJhY2tfY2hlY2tzdW0gc3lzY3RsIGtub2I/DQo+DQo+IEJ1dCBhbnl3YXkg ZXZlbiB3aXRoIGRpc2FibGluZyByeCBjc3VtIG9mZmxvYWQgbXkgbWFjaGluZSBoYXMgYmV0dGVy DQo+IHBlcmZvcm1hbmNlIHdpdGggR1JPLg0KDQpCdXQgeW91J3JlIGFsc28gcnVubmluZyBhdCB3 YXkgaGlnaGVyIHNwZWVkcywgd2hlcmUgdGhlIGJlbmVmaXQgb2YgR1JPDQppcyBoaWdoZXIuDQoN Cj4gSSdtIHN1cmUgaW4gc29tZSBjYXNlcyBHUk8gc2hvdWxkIGJlIGRpc2FibGVkLCBidXQgSSBn dWVzcyBpdCdzDQo+IGRpZmZpY3VsdCB0byBkZXRlcm1pbmUgd2hldGhlciB3ZSBzaG91bGQgZGlz YWJsZSBHUk8gb3Igbm90DQo+IGF1dG9tYXRpY2FsbHkgd2hlbiBjc3VtIG9mZmxvYWQgaXMgbm90 IGF2YWlsYWJsZS4NCg0KQXMgYSBmaXJzdCBhcHByb3hpbWF0aW9uLCBtYXliZSBqdXN0Og0KDQpp ZiAoIWhhc19oYXJkd2FyZV9ja3N1bV9vZmZsb2FkKG5ldGRldikgJiYgbGlua19yYXRlKG5ldGRl dikgPD0gMUdicHMpDQogIGRpc2FibGVfZ3JvKCk7DQoNCldlIHVzZWQgMUdicHMgYXMgdGhlIHRo cmVzaG9sZCBmb3Igd2hlbiB0byBzcGxpdCBHUk8gcGFja2V0cyBieSBkZWZhdWx0DQppbiBzY2tf Y2FrZSBhcyB3ZWxsLi4uDQoNCi1Ub2tlDQo=