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=-7.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CF0CBC5B578 for ; Mon, 1 Jul 2019 21:04:52 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 770E620665 for ; Mon, 1 Jul 2019 21:04:52 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=fb.com header.i=@fb.com header.b="Teyyrqoc"; dkim=pass (1024-bit key) header.d=fb.onmicrosoft.com header.i=@fb.onmicrosoft.com header.b="Toqf6ut/" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726734AbfGAVEv (ORCPT ); Mon, 1 Jul 2019 17:04:51 -0400 Received: from mx0a-00082601.pphosted.com ([67.231.145.42]:19536 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726509AbfGAVEv (ORCPT ); Mon, 1 Jul 2019 17:04:51 -0400 Received: from pps.filterd (m0044010.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x61L1hll011523; Mon, 1 Jul 2019 14:04:29 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-id : content-transfer-encoding : mime-version; s=facebook; bh=xXuSF95emkuZGGOOvYk0tJqCr+/USirPBzQuiQVvniQ=; b=TeyyrqocBkJYzjrRqwHRm+oX4jMnj583FgK6LV/36IxjJpXBTv8OHhLfSxJIUDfo8GNW svVu6wZmUGpUmDLMTmXVShbSNwYgr0gyOqFwVpPBBM8OASSUqcu7aX5VeYWj/YFXg/cV J/V9feWy7uWQwL7LiTAXwythuEKjE5MU8/E= Received: from maileast.thefacebook.com ([163.114.130.16]) by mx0a-00082601.pphosted.com with ESMTP id 2tfhyahwgw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT); Mon, 01 Jul 2019 14:04:29 -0700 Received: from ash-exhub104.TheFacebook.com (2620:10d:c0a8:82::d) by ash-exhub101.TheFacebook.com (2620:10d:c0a8:82::e) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Mon, 1 Jul 2019 14:04:27 -0700 Received: from NAM01-BY2-obe.outbound.protection.outlook.com (100.104.31.183) by o365-in.thefacebook.com (100.104.35.175) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1713.5 via Frontend Transport; Mon, 1 Jul 2019 14:04:27 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.onmicrosoft.com; s=selector1-fb-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xXuSF95emkuZGGOOvYk0tJqCr+/USirPBzQuiQVvniQ=; b=Toqf6ut/o5WqoCad1HYGQqB1LPF1R5RLxerKfNNkRH2VCNPIHxBN9aHzMT3WP3iwlgt/0FL/2IqhDQNJyMQXwGKg4SiTiBWkLN+9/wi1GZ0hOqg+ESZW4FL71H80yEZhGVJqaHdeftcqlrqzqFySe0OqLMDQlOonqqkr8JqzUXc= Received: from BYAPR15MB3384.namprd15.prod.outlook.com (20.179.59.17) by BYAPR15MB3383.namprd15.prod.outlook.com (20.179.59.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2032.20; Mon, 1 Jul 2019 21:04:25 +0000 Received: from BYAPR15MB3384.namprd15.prod.outlook.com ([fe80::850b:bed:29d5:ae79]) by BYAPR15MB3384.namprd15.prod.outlook.com ([fe80::850b:bed:29d5:ae79%7]) with mapi id 15.20.2032.019; Mon, 1 Jul 2019 21:04:25 +0000 From: Yonghong Song To: Lawrence Brakmo , netdev CC: Alexei Starovoitov , Andrii Nakryiko , Daniel Borkmann , "Eric Dumazet" , Kernel Team Subject: Re: [PATCH v2 bpf-next] bpf: Add support for fq's EDT to HBM Thread-Topic: [PATCH v2 bpf-next] bpf: Add support for fq's EDT to HBM Thread-Index: AQHVLemG/TfWhHSOs0eS1YSg+YyqJKa2RUiA Date: Mon, 1 Jul 2019 21:04:25 +0000 Message-ID: References: <20190628194133.2831708-1-brakmo@fb.com> In-Reply-To: <20190628194133.2831708-1-brakmo@fb.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: CO2PR07CA0051.namprd07.prod.outlook.com (2603:10b6:100::19) To BYAPR15MB3384.namprd15.prod.outlook.com (2603:10b6:a03:10e::17) x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [2620:10d:c090:200::1:fe3a] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 2a76cde3-0497-4815-023d-08d6fe67b2b2 x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020);SRVR:BYAPR15MB3383; x-ms-traffictypediagnostic: BYAPR15MB3383: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-forefront-prvs: 00851CA28B x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(396003)(136003)(346002)(39860400002)(376002)(366004)(189003)(199004)(14454004)(4326008)(6246003)(53936002)(66476007)(486006)(316002)(5660300002)(7736002)(25786009)(46003)(68736007)(2906002)(6116002)(478600001)(6512007)(53946003)(31686004)(6436002)(36756003)(81166006)(476003)(52116002)(71200400001)(8936002)(229853002)(186003)(76176011)(71190400001)(31696002)(86362001)(102836004)(386003)(53546011)(6506007)(6486002)(30864003)(81156014)(446003)(110136005)(54906003)(2616005)(8676002)(99286004)(305945005)(5024004)(14444005)(256004)(11346002)(66446008)(66556008)(66946007)(64756008)(73956011)(2004002);DIR:OUT;SFP:1102;SCL:1;SRVR:BYAPR15MB3383;H:BYAPR15MB3384.namprd15.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: fb.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: hgrGBJpqAaSLDSU6oGmd9cKbGyKJrtCBub5vg+nSeETuNRMHelirS62wDQtW34ZX9fqKcTCsC3fWc1XW4DDmxU0FL27P8m5HQR3sha5UmGOkgGRRMCjrv4klKRDwPjOtMuM7JhK4YkTLSfuDgt3If1qw5/K8MK0MFdB/HrvKX2JYu84CybQQjtXMh+2YfrmAcrYEDpKaBLGR4Hl6pJ7MCVzNIbtgwUO3TGeN58uY6W5I0rVVFkQZNJ3eS2QdvSB2oLc9Jitu+xs+iPYpaglWOl+hJ54mYueHB3X4U9/GzgsMzfnG+H72/UJhqDZzxYGKByyGGqJpyw7UWjIEUdEiAvmGY1N1PmnF23bsuW5XmCKpPKVRCwBThxY/6EbU2ab2wp+0p35Iloa+61IS6nN5gtJs1BTFNuZVdD2T9pYPvrg= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 2a76cde3-0497-4815-023d-08d6fe67b2b2 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Jul 2019 21:04:25.5589 (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: yhs@fb.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR15MB3383 X-OriginatorOrg: fb.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2019-07-01_12:,, signatures=0 X-Proofpoint-Spam-Details: rule=fb_default_notspam policy=fb_default score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1011 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1810050000 definitions=main-1907010244 X-FB-Internal: deliver Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org DQoNCk9uIDYvMjgvMTkgMTI6NDEgUE0sIGJyYWttbyB3cm90ZToNCj4gQWRkcyBzdXBwb3J0IGZv ciBmcSdzIEVhcmxpZXN0IERlcGFydHVyZSBUaW1lIHRvIEhCTSAoSG9zdCBCYW5kd2lkdGgNCj4g TWFuYWdlcikuIEluY2x1ZGVzIGEgbmV3IEJQRiBwcm9ncmFtIHN1cHBvcnRpbmcgRURULCBhbmQg YWxzbyB1cGRhdGVzDQo+IGNvcnJlc3BvbmRpbmcgcHJvZ3JhbXMuDQo+IA0KPiBJdCB3aWxsIGRy b3AgcGFja2V0cyB3aXRoIGFuIEVEVCBvZiBtb3JlIHRoYW4gNTAwdXMgaW4gdGhlIGZ1dHVyZQ0K PiB1bmxlc3MgdGhlIHBhY2tldCBiZWxvbmdzIHRvIGEgZmxvdyB3aXRoIGxlc3MgdGhhbiAyIHBh Y2tldHMgaW4gZmxpZ2h0Lg0KPiBUaGlzIGlzIGRvbmUgc28gZWFjaCBmbG93IGhhcyBhdCBsZWFz dCAyIHBhY2tldHMgaW4gZmxpZ2h0LCBzbyB0aGV5DQo+IHdpbGwgbm90IHN0YXJ2ZSwgYW5kIGFs c28gdG8gaGVscCBwcmV2ZW50IGRlbGF5ZWQgQUNLIHRpbWVvdXRzLg0KPiANCj4gSXQgd2lsbCBh bHNvIHdvcmsgd2l0aCBFQ04gZW5hYmxlZCB0cmFmZmljLCB3aGVyZSB0aGUgcGFja2V0cyB3aWxs IGJlDQo+IENFIG1hcmtlZCBpZiB0aGVpciBFRFQgaXMgbW9yZSB0aGFuIDUwdXMgaW4gdGhlIGZ1 dHVyZS4NCj4gDQo+IFRoZSB0YWJsZSBiZWxvdyBzaG93cyBzb21lIHBlcmZvcm1hbmNlIG51bWJl cnMuIFRoZSBmbG93cyBhcmUgYmFjayB0bw0KPiBiYWNrIFJQQ1MuIE9uZSBzZXJ2ZXIgc2VuZGlu ZyB0byBhbm90aGVyLCBlaXRoZXIgMiBvciA0IGZsb3dzLg0KPiBPbmUgZmxvdyBpcyBhIDEwS0Ig UlBDLCB0aGUgcmVzdCBhcmUgMU1CIFJQQ3MuIFdoZW4gdGhlcmUgYXJlIG1vcmUNCj4gdGhhbiBv bmUgZmxvdyBvZiBhIGdpdmVuIFJQQyBzaXplLCB0aGUgbnVtYmVycyByZXByZXNlbnQgYXZlcmFn ZXMuDQo+IA0KPiBUaGUgcmF0ZSBsaW1pdCBhcHBsaWVzIHRvIGFsbCBmbG93cyAodGhleSBhcmUg aW4gdGhlIHNhbWUgY2dyb3VwKS4NCj4gVGVzdHMgZW5kaW5nIHdpdGggIi1lZHQiIHJhbiB3aXRo IHRoZSBuZXcgQlBGIHByb2dyYW0gc3VwcG9ydGluZyBFRFQuDQo+IFRlc3RzIGVuZGluZyB3aXRo ICItaGJ0IiByYW4gb24gdG9wIEhCVCBxZGlzYyB3aXRoIHRoZSBzcGVjaWZpZWQgcmF0ZQ0KPiAo aS5lLiBubyBIQk0pLiBUaGUgb3RoZXIgdGVzdHMgcmFuIHdpdGggdGhlIEhCTSBCUEYgcHJvZ3Jh bSBpbmNsdWRlZA0KPiBpbiB0aGUgSEJNIHBhdGNoLXNldC4NCj4gDQo+IEVEVCBoYXMgbGltaXRl ZCB2YWx1ZSB3aGVuIHVzaW5nIERDVENQLCBidXQgaXQgaGVscHMgaW4gbWFueSBjYXNlcyB3aGVu DQo+IHVzaW5nIEN1YmljLiBJdCB1c3VhbGx5IGFjaGlldmVzIGxhcmdlciBsaW5rIHV0aWxpemF0 aW9uIGFuZCBsb3dlcg0KPiA5OSUgbGF0ZW5jaWVzIGZvciB0aGUgMU1CIFJQQ3MuDQo+IEhCTSBl bmRzIHVwIHF1ZXVlaW5nIGEgbG90IG9mIHBhY2tldHMgd2l0aCBpdHMgZGVmYXVsdCBwYXJhbWV0 ZXIgdmFsdWVzLA0KPiByZWR1Y2luZyB0aGUgZ29vZHB1dCBvZiB0aGUgMTBLQiBSUENzIGFuZCBp bmNyZWFzaW5nIHRoZWlyIGxhdGVuY3kuIEFsc28sDQo+IHRoZSBSVFRzIHNlZW4gYnkgdGhlIGZs b3dzIGFyZSBxdWl0ZSBsYXJnZS4NCj4gDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgQWdn ciAgICAgICAgICAgICAgMTBLICAxMEsgIDEwSyAgIDFNQiAgMU1CICAxTUINCj4gICAgICAgICAg IExpbWl0ICAgICAgICAgICByYXRlIGRyb3BzICBSVFQgIHJhdGUgIFA5MCAgUDk5ICByYXRlICBQ OTAgIFA5OQ0KPiBUZXN0ICAgICAgcmF0ZSAgRmxvd3MgICAgTWJwcyAgICUgICAgIHVzICBNYnBz ICAgdXMgICB1cyAgTWJwcyAgIG1zICAgbXMNCj4gLS0tLS0tLS0gIC0tLS0gIC0tLS0tICAgIC0t LS0gLS0tLS0gIC0tLSAgLS0tLSAtLS0tIC0tLS0gIC0tLS0gLS0tLSAtLS0tDQo+IGN1YmljICAg ICAgIDFHICAgIDIgICAgICAgOTA0ICAwLjAyICAxMDggICAyNTcgIDUxMSAgNTM5ICAgNjQ3IDEz LjQgMjQuNQ0KPiBjdWJpYy1lZHQgICAxRyAgICAyICAgICAgIDk4MiAgMC4wMSAgMTU2ICAgMjM5 ICA2NTYgIDk2NyAgIDc0MyAxNC4wIDE3LjINCj4gZGN0Y3AgICAgICAgMUcgICAgMiAgICAgICA5 NzcgIDAuMDAgIDEwNSAgIDMyNCAgNDA4ICA3NDQgICA2NTMgMTQuNSAxNS45DQo+IGRjdGNwLWVk dCAgIDFHICAgIDIgICAgICAgOTgxICAwLjAxICAxNDIgICAzMjEgIDQxNyAgODExICAgNjYwIDE1 LjcgMTcuMA0KPiBjdWJpYy1odGIgICAxRyAgICAyICAgICAgIDkxOSAgMC4wMCAxODI1ICAgIDQw IDI4MjIgNDE0MCAgIDg3OSAgOS43ICA5LjkNCj4gDQo+IGN1YmljICAgICAyMDBNICAgIDIgICAg ICAgMTU1ICAwLjMwICAyMjAgICAgODEgIDUzMiAgNjU1ICAgIDc0ICAyODMgIDQ1MA0KPiBjdWJp Yy1lZHQgMjAwTSAgICAyICAgICAgIDE4OCAgMC4wMiAgMjIyICAgIDg3IDEwMzUgMTA5NSAgIDEw MSAgIDg0ICAgODUNCj4gZGN0Y3AgICAgIDIwME0gICAgMiAgICAgICAxODggIDAuMDMgIDExMSAg ICA3NyAgOTEyICA5MzkgICAxMTEgICA3NiAgMzI1DQo+IGRjdGNwLWVkdCAyMDBNICAgIDIgICAg ICAgMTg4ICAwLjAzICAyMTcgICAgNzQgMTQxNiAxNzM4ICAgMTE0ICAgNzYgICA3OQ0KPiBjdWJp Yy1odGIgMjAwTSAgICAyICAgICAgIDE4OCAgMC4wMCA1MDE1ICAgICA4IDE0bXMgMTVtcyAgIDE4 MCAgIDQ4ICAgNTANCj4gDQo+IGN1YmljICAgICAgIDFHICAgIDQgICAgICAgOTUyICAwLjAzICAx MTAgICAxNjUgIDUxNiAgNTQ2ICAgMjYyICAgMzggIDE1NA0KPiBjdWJpYy1lZHQgICAxRyAgICA0 ICAgICAgIDk3MyAgMC4wMSAgMTkwICAgMTExIDEwMzQgMTMxNCAgIDI4NyAgIDY1ICAgNzkNCj4g ZGN0Y3AgICAgICAgMUcgICAgNCAgICAgICA5NTEgIDAuMDAgIDEwMyAgIDE4MCAgNjE3ICA5MDUg ICAyNTcgICAzNyAgIDM4DQo+IGRjdGNwLWVkdCAgIDFHICAgIDQgICAgICAgOTY3ICAwLjAwICAx NjMgICAxNTEgIDczMiAxMTI2ICAgMjcyICAgNDMgICA1NQ0KPiBjdWJpYy1odGIgICAxRyAgICA0 ICAgICAgIDkxNCAgMC4wMCAzMjQ5ICAgIDEzICA3bXMgIDhtcyAgIDMwMCAgIDI5ICAgMzQNCj4g DQo+IGN1YmljICAgICAgIDVHICAgIDQgICAgICA0MjM2ICAwLjAwICAxMzQgICAzMDUgIDQ5MCAg NjI0ICAxMzEwICAgMTAgICAxNw0KPiBjdWJpYy1lZHQgICA1RyAgICA0ICAgICAgNDg2NSAgMC4w MCAgMTU2ICAgMzA2ICA0MjUgIDc1OSAgMTUyMCAgIDEwICAgMTYNCj4gZGN0Y3AgICAgICAgNUcg ICAgNCAgICAgIDQ5MzYgIDAuMDAgIDEyOCAgIDQ4NSAgMjIxICA0MDkgIDE0ODQgICAgNyAgICA5 DQo+IGRjdGNwLWVkdCAgIDVHICAgIDQgICAgICA0OTI0ICAwLjAwICAxNDggICAzOTAgIDM5MiAg NjIzICAxNTA4ICAgMTEgICAyNg0KPiANCj4gdjEgLT4gdjI6IEluY29ycG9yYXRlZCBBbmRyaWkn cyBzdWdnZXN0aW9ucw0KPiANCj4gU2lnbmVkLW9mZi1ieTogTGF3cmVuY2UgQnJha21vIDxicmFr bW9AZmIuY29tPg0KPiAtLS0NCj4gICBzYW1wbGVzL2JwZi9NYWtlZmlsZSAgICAgICB8ICAgMiAr DQo+ICAgc2FtcGxlcy9icGYvZG9faGJtX3Rlc3Quc2ggfCAgMjIgKystLS0NCj4gICBzYW1wbGVz L2JwZi9oYm0uYyAgICAgICAgICB8ICAxOCArKystDQo+ICAgc2FtcGxlcy9icGYvaGJtX2VkdF9r ZXJuLmMgfCAxNzEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiAgIHNh bXBsZXMvYnBmL2hibV9rZXJuLmggICAgIHwgIDQwICsrKysrKystLQ0KPiAgIDUgZmlsZXMgY2hh bmdlZCwgMjM0IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQ0KPiAgIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzYW1wbGVzL2JwZi9oYm1fZWR0X2tlcm4uYw0KPiANCj4gZGlmZiAtLWdpdCBhL3Nh bXBsZXMvYnBmL01ha2VmaWxlIGIvc2FtcGxlcy9icGYvTWFrZWZpbGUNCj4gaW5kZXggMDkxN2Y4 Y2Y0ZmFiLi4zNTY0MDQxNGViYjMgMTAwNjQ0DQo+IC0tLSBhL3NhbXBsZXMvYnBmL01ha2VmaWxl DQo+ICsrKyBiL3NhbXBsZXMvYnBmL01ha2VmaWxlDQo+IEBAIC0xNjgsNiArMTY4LDcgQEAgYWx3 YXlzICs9IHRhc2tfZmRfcXVlcnlfa2Vybi5vDQo+ICAgYWx3YXlzICs9IHhkcF9zYW1wbGVfcGt0 c19rZXJuLm8NCj4gICBhbHdheXMgKz0gaWJ1bWFkX2tlcm4ubw0KPiAgIGFsd2F5cyArPSBoYm1f b3V0X2tlcm4ubw0KPiArYWx3YXlzICs9IGhibV9lZHRfa2Vybi5vDQo+ICAgDQo+ICAgS0JVSUxE X0hPU1RDRkxBR1MgKz0gLUkkKG9ianRyZWUpL3Vzci9pbmNsdWRlDQo+ICAgS0JVSUxEX0hPU1RD RkxBR1MgKz0gLUkkKHNyY3RyZWUpL3Rvb2xzL2xpYi9icGYvDQo+IEBAIC0yNzIsNiArMjczLDcg QEAgJChzcmMpLyouYzogdmVyaWZ5X3RhcmdldF9icGYgJChMSUJCUEYpDQo+ICAgJChvYmopL3Ry YWNleDVfa2Vybi5vOiAkKG9iaikvc3lzY2FsbF9ucnMuaA0KPiAgICQob2JqKS9oYm1fb3V0X2tl cm4ubzogJChzcmMpL2hibS5oICQoc3JjKS9oYm1fa2Vybi5oDQo+ICAgJChvYmopL2hibS5vOiAk KHNyYykvaGJtLmgNCj4gKyQob2JqKS9oYm1fZWR0X2tlcm4ubzogJChzcmMpL2hibS5oICQoc3Jj KS9oYm1fa2Vybi5oDQo+ICAgDQo+ICAgIyBhc20vc3lzcmVnLmggLSBpbmxpbmUgYXNzZW1ibHkg dXNlZCBieSBpdCBpcyBpbmNvbXBhdGlibGUgd2l0aCBsbHZtLg0KPiAgICMgQnV0LCB0aGVyZSBp cyBubyBlYXN5IHdheSB0byBmaXggaXQsIHNvIGp1c3QgZXhjbHVkZSBpdCBzaW5jZSBpdCBpcw0K PiBkaWZmIC0tZ2l0IGEvc2FtcGxlcy9icGYvZG9faGJtX3Rlc3Quc2ggYi9zYW1wbGVzL2JwZi9k b19oYm1fdGVzdC5zaA0KPiBpbmRleCBlNDhiMDQ3ZDQ2NDYuLmZmZTRjMDYwNzM0MSAxMDA3NTUN Cj4gLS0tIGEvc2FtcGxlcy9icGYvZG9faGJtX3Rlc3Quc2gNCj4gKysrIGIvc2FtcGxlcy9icGYv ZG9faGJtX3Rlc3Quc2gNCj4gQEAgLTE0LDcgKzE0LDcgQEAgVXNhZ2UoKSB7DQo+ICAgICBlY2hv ICJsb2Fkcy4gVGhlIG91dHB1dCBpcyB0aGUgZ29vZHB1dCBpbiBNYnBzICh1bmxlc3MgLUQgd2Fz IHVzZWQpLiINCj4gICAgIGVjaG8gIiINCj4gICAgIGVjaG8gIlVTQUdFOiAkbmFtZSBbb3V0XSBb LWI9PHByb2c+fC0tYnBmPTxwcm9nPl0gWy1jPTxjYz58LS1jYz08Y2M+XSINCj4gLSAgZWNobyAi ICAgICAgICAgICAgIFstRF0gWy1kPTxkZWxheT58LS1kZWxheT08ZGVsYXk+XSBbLS1kZWJ1Z10g Wy1FXSINCj4gKyAgZWNobyAiICAgICAgICAgICAgIFstRF0gWy1kPTxkZWxheT58LS1kZWxheT08 ZGVsYXk+XSBbLS1kZWJ1Z10gWy1FXSBbLS1lZHRdIg0KPiAgICAgZWNobyAiICAgICAgICAgICAg IFstZj08I2Zsb3dzPnwtLWZsb3dzPTwjZmxvd3M+XSBbLWhdIFstaT08aWQ+fC0taWQ9PGlkID5d Ig0KPiAgICAgZWNobyAiICAgICAgICAgICAgIFstbF0gWy1OXSBbLS1ub19jbl0gWy1wPTxwb3J0 PnwtLXBvcnQ9PHBvcnQ+XSBbLVBdIg0KPiAgICAgZWNobyAiICAgICAgICAgICAgIFstcT08cWRp c2M+XSBbLVJdIFstcz08c2VydmVyPnwtLXNlcnZlcj08c2VydmVyXSINCj4gQEAgLTMwLDYgKzMw LDcgQEAgVXNhZ2UoKSB7DQo+ICAgICBlY2hvICIgICAgICAgICAgICAgICAgICAgICAgb3RoZXIg ZGV0YWlsZWQgaW5mb3JtYXRpb24uIFRoaXMgaW5mb3JtYXRpb24gaXMiDQo+ICAgICBlY2hvICIg ICAgICAgICAgICAgICAgICAgICAgdGVzdCBkZXBlbmRlbnQgKGkuZS4gaXBlcmYzIG9yIG5ldHBl cmYpLiINCj4gICAgIGVjaG8gIiAgICAtRSAgICAgICAgICAgICAgICBlbmFibGUgRUNOIChub3Qg cmVxdWlyZWQgZm9yIGRjdGNwKSINCj4gKyAgZWNobyAiICAgIC0tZWR0ICAgICAgICAgICAgIHVz ZSBmcSdzIEVhcmxpZXN0IERlcGFydHVyZSBUaW1lIChyZXF1aXJlcyBmcSkiDQo+ICAgICBlY2hv ICIgICAgLWYgb3IgLS1mbG93cyAgICAgbnVtYmVyIG9mIGNvbmN1cnJlbnQgZmxvd3MgKGRlZmF1 bHQ9MSkiDQo+ICAgICBlY2hvICIgICAgLWkgb3IgLS1pZCAgICAgICAgY2dyb3VwIGlkIChhbiBp bnRlZ2VyLCBkZWZhdWx0IGlzIDEpIg0KPiAgICAgZWNobyAiICAgIC1OICAgICAgICAgICAgICAg IHVzZSBuZXRwZXJmIGluc3RlYWQgb2YgaXBlcmYzIg0KPiBAQCAtMTMwLDEzICsxMzEsMTIgQEAg cHJvY2Vzc0FyZ3MgKCkgew0KPiAgICAgICAgIGRldGFpbHM9MQ0KPiAgICAgICAgIDs7DQo+ICAg ICAgIC1FKQ0KPiAtICAgICBlY249MQ0KPiArICAgICAgZWNuPTENCj4gKyAgICAgIDs7DQo+ICsg ICAgLS1lZHQpDQo+ICsgICAgICBmbGFncz0iJGZsYWdzIC0tZWR0Ig0KPiArICAgICAgcWRpc2M9 ImZxIg0KPiAgICAgICAgOzsNCj4gLSAgICAjIFN1cHBvcnQgZm9yIHVwY29tbWluZyBmcSBFYXJs eSBEZXBhcnR1cmUgVGltZSBlZ3Jlc3MgcmF0ZSBsaW1pdGluZw0KPiAtICAgICMtLWVkdCkNCj4g LSAgICAjIHByb2c9ImhibV9vdXRfZWR0X2tlcm4ubyINCj4gLSAgICAjIHFkaXNjPSJmcSINCj4g LSAgICAjIDs7DQo+ICAgICAgIC1mPSp8LS1mbG93cz0qKQ0KPiAgICAgICAgIGZsb3dzPSIke2kj Kj19Ig0KPiAgICAgICAgIDs7DQo+IEBAIC0yMjgsOCArMjI4LDggQEAgaWYgWyAiJG5ldGVtIiAt bmUgIjAiIF0gOyB0aGVuDQo+ICAgICB0YyBxZGlzYyBkZWwgZGV2IGxvIHJvb3QgPiAvZGV2L251 bGwgMj4mMQ0KPiAgICAgdGMgcWRpc2MgYWRkIGRldiBsbyByb290IG5ldGVtIGRlbGF5ICRuZXRl bVxtcyA+IC9kZXYvbnVsbCAyPiYxDQo+ICAgZWxpZiBbICIkcWRpc2MiICE9ICIiIF0gOyB0aGVu DQo+IC0gIHRjIHFkaXNjIGRlbCBkZXYgbG8gcm9vdCA+IC9kZXYvbnVsbCAyPiYxDQo+IC0gIHRj IHFkaXNjIGFkZCBkZXYgbG8gcm9vdCAkcWRpc2MgPiAvZGV2L251bGwgMj4mMQ0KPiArICB0YyBx ZGlzYyBkZWwgZGV2IGV0aDAgcm9vdCA+IC9kZXYvbnVsbCAyPiYxDQo+ICsgIHRjIHFkaXNjIGFk ZCBkZXYgZXRoMCByb290ICRxZGlzYyA+IC9kZXYvbnVsbCAyPiYxDQo+ICAgZmkNCj4gICANCj4g ICBuPTANCj4gQEAgLTM5OSw3ICszOTksOSBAQCBmaQ0KPiAgIGlmIFsgIiRuZXRlbSIgLW5lICIw IiBdIDsgdGhlbg0KPiAgICAgdGMgcWRpc2MgZGVsIGRldiBsbyByb290ID4gL2Rldi9udWxsIDI+ JjENCj4gICBmaQ0KPiAtDQo+ICtpZiBbICIkcWRpc2MiICE9ICIiIF0gOyB0aGVuDQo+ICsgIHRj IHFkaXNjIGRlbCBkZXYgZXRoMCByb290ID4gL2Rldi9udWxsIDI+JjENCj4gK2ZpDQo+ICAgc2xl ZXAgMg0KPiAgIA0KPiAgIGhibVBpZD1gcHMgYXggfCBncmVwICJoYm0gIiB8IGdyZXAgLS1pbnZl cnQtbWF0Y2ggImdyZXAiIHwgYXdrICd7IHByaW50ICQxIH0nYA0KPiBkaWZmIC0tZ2l0IGEvc2Ft cGxlcy9icGYvaGJtLmMgYi9zYW1wbGVzL2JwZi9oYm0uYw0KPiBpbmRleCBiOTA1YjMyZmYxODUu LmUwZmJhYjliZWM4MyAxMDA2NDQNCj4gLS0tIGEvc2FtcGxlcy9icGYvaGJtLmMNCj4gKysrIGIv c2FtcGxlcy9icGYvaGJtLmMNCj4gQEAgLTYyLDYgKzYyLDcgQEAgYm9vbCBsb29wYmFja19mbGFn Ow0KPiAgIGJvb2wgZGVidWdGbGFnOw0KPiAgIGJvb2wgd29ya19jb25zZXJ2aW5nX2ZsYWc7DQo+ ICAgYm9vbCBub19jbl9mbGFnOw0KPiArYm9vbCBlZHRfZmxhZzsNCj4gICANCj4gICBzdGF0aWMg dm9pZCBVc2FnZSh2b2lkKTsNCj4gICBzdGF0aWMgdm9pZCByZWFkX3RyYWNlX3BpcGUyKHZvaWQp Ow0KPiBAQCAtMzcyLDkgKzM3MywxNCBAQCBzdGF0aWMgaW50IHJ1bl9icGZfcHJvZyhjaGFyICpw cm9nLCBpbnQgY2dfaWQpDQo+ICAgCQlmcHJpbnRmKGZvdXQsICJhdmcgcnR0OiVkXG4iLA0KPiAg IAkJCShpbnQpKHFzdGF0cy5zdW1fcnR0IC8gKHFzdGF0cy5wa3RzX3RvdGFsICsgMSkpKTsNCj4g ICAJCS8vIEF2ZXJhZ2UgY3JlZGl0DQo+IC0JCWZwcmludGYoZm91dCwgImF2ZyBjcmVkaXQ6JWRc biIsDQo+IC0JCQkoaW50KShxc3RhdHMuc3VtX2NyZWRpdCAvDQo+IC0JCQkgICAgICAoMTUwMCAq ICgoaW50KXFzdGF0cy5wa3RzX3RvdGFsKSArIDEpKSk7DQo+ICsJCWlmIChlZHRfZmxhZykNCj4g KwkJCWZwcmludGYoZm91dCwgImF2ZyBjcmVkaXRfbXM6JS4wM2ZcbiIsDQo+ICsJCQkJKHFzdGF0 cy5zdW1fY3JlZGl0IC8NCj4gKwkJCQkgKHFzdGF0cy5wa3RzX3RvdGFsICsgMS4wKSkgLyAxMDAw MDAwLjApOw0KPiArCQllbHNlDQo+ICsJCQlmcHJpbnRmKGZvdXQsICJhdmcgY3JlZGl0OiVkXG4i LA0KPiArCQkJCShpbnQpKHFzdGF0cy5zdW1fY3JlZGl0IC8NCj4gKwkJCQkgICAgICAoMTUwMCAq ICgoaW50KXFzdGF0cy5wa3RzX3RvdGFsICkgKyAxKSkpOw0KPiAgIA0KPiAgIAkJLy8gUmV0dXJu IHZhbHVlcyBzdGF0cw0KPiAgIAkJZm9yIChrID0gMDsgayA8IFJFVF9WQUxfQ09VTlQ7IGsrKykg ew0KPiBAQCAtNDA4LDYgKzQxNCw3IEBAIHN0YXRpYyB2b2lkIFVzYWdlKHZvaWQpDQo+ICAgCSAg ICAgICAiICBXaGVyZTpcbiINCj4gICAJICAgICAgICIgICAgLW8gICAgICAgICBpbmRpY2F0ZXMg ZWdyZXNzIGRpcmVjdGlvbiAoZGVmYXVsdClcbiINCj4gICAJICAgICAgICIgICAgLWQgICAgICAg ICBwcmludCBCUEYgdHJhY2UgZGVidWcgYnVmZmVyXG4iDQo+ICsJICAgICAgICIgICAgLS1lZHQg ICAgICB1c2UgZnEncyBFYXJsaWVzdCBEZXBhcnR1cmUgVGltZVxuIg0KPiAgIAkgICAgICAgIiAg ICAtbCAgICAgICAgIGFsc28gbGltaXQgZmxvd3MgdXNpbmcgbG9vcGJhY2tcbiINCj4gICAJICAg ICAgICIgICAgLW4gPCM+ICAgICB0byBjcmVhdGUgY2dyb3VwIFwiL2hibSNcIiBhbmQgYXR0YWNo IHByb2dcbiINCj4gICAJICAgICAgICIgICAgICAgICAgICAgICBEZWZhdWx0IGlzIC9oYm0xXG4i DQo+IEBAIC00MzMsNiArNDQwLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQ0K PiAgIAljaGFyICpvcHRzdHJpbmcgPSAiaW9kbG46cjpzdDp3aCI7DQo+ICAgCXN0cnVjdCBvcHRp b24gbG9wdGlvbnNbXSA9IHsNCj4gICAJCXsibm9fY24iLCAwLCBOVUxMLCAxfSwNCj4gKwkJeyJl ZHQiLCAwLCBOVUxMLCAyfSwNCj4gICAJCXtOVUxMLCAwLCBOVUxMLCAwfQ0KPiAgIAl9Ow0KPiAg IA0KPiBAQCAtNDQxLDYgKzQ0OSwxMCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp DQo+ICAgCQljYXNlIDE6DQo+ICAgCQkJbm9fY25fZmxhZyA9IHRydWU7DQo+ICAgCQkJYnJlYWs7 DQo+ICsJCWNhc2UgMjoNCj4gKwkJCXByb2cgPSAiaGJtX2VkdF9rZXJuLm8iOw0KPiArCQkJZWR0 X2ZsYWcgPSB0cnVlOw0KPiArCQkJYnJlYWs7DQo+ICAgCQljYXNlJ28nOg0KPiAgIAkJCWJyZWFr Ow0KPiAgIAkJY2FzZSAnZCc6DQo+IGRpZmYgLS1naXQgYS9zYW1wbGVzL2JwZi9oYm1fZWR0X2tl cm4uYyBiL3NhbXBsZXMvYnBmL2hibV9lZHRfa2Vybi5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uMDA0YTQ0YTgzZTFlDQo+IC0tLSAvZGV2L251bGwNCj4g KysrIGIvc2FtcGxlcy9icGYvaGJtX2VkdF9rZXJuLmMNCj4gQEAgLTAsMCArMSwxNzEgQEANCj4g Ky8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wDQo+ICsvKiBDb3B5cmlnaHQgKGMp IDIwMTkgRmFjZWJvb2sNCj4gKyAqDQo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yDQo+ICsgKiBtb2RpZnkgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHZlcnNpb24gMiBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQo+ICsgKiBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLg0KPiAr ICoNCj4gKyAqIFNhbXBsZSBIb3N0IEJhbmR3aWR0aCBNYW5hZ2VyIChIQk0pIEJQRiBwcm9ncmFt Lg0KPiArICoNCj4gKyAqIEEgY2dyb3VwIHNrYiBCUEYgZWdyZXNzIHByb2dyYW0gdG8gbGltaXQg Y2dyb3VwIG91dHB1dCBiYW5kd2lkdGguDQo+ICsgKiBJdCB1c2VzIGEgbW9kaWZpZWQgdmlydHVh bCB0b2tlbiBidWNrZXQgcXVldWUgdG8gbGltaXQgYXZlcmFnZQ0KPiArICogZWdyZXNzIGJhbmR3 aWR0aC4gVGhlIGltcGxlbWVudGF0aW9uIHVzZXMgY3JlZGl0cyBpbnN0ZWFkIG9mIHRva2Vucy4N Cj4gKyAqIE5lZ2F0aXZlIGNyZWRpdHMgaW1wbHkgdGhhdCBxdWV1ZWluZyB3b3VsZCBoYXZlIGhh cHBlbmVkICh0aGlzIGlzDQo+ICsgKiBhIHZpcnR1YWwgcXVldWUsIHNvIG5vIHF1ZXVlaW5nIGlz IGRvbmUgYnkgaXQuIEhvd2V2ZXIsIHF1ZXVlaW5nIG1heQ0KPiArICogb2NjdXIgYXQgdGhlIGFj dHVhbCBxZGlzYyAod2hpY2ggaXMgbm90IHVzZWQgZm9yIHJhdGUgbGltaXRpbmcpLg0KPiArICoN Cj4gKyAqIFRoaXMgaW1wbGVtZW50YXRpb24gdXNlcyAzIHRocmVzaG9sZHMsIG9uZSB0byBzdGFy dCBtYXJraW5nIHBhY2tldHMgYW5kDQo+ICsgKiB0aGUgb3RoZXIgdHdvIHRvIGRyb3AgcGFja2V0 czoNCj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENSRURJVA0KPiArICog ICAgICAgIC0gPC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLT4gKw0KPiArICogICAgICAgICAgICAgIHwgICAgfCAgICAgICAgICB8ICAgICAgMA0KPiAr ICogICAgICAgICAgICAgIHwgIExhcmdlIHBrdCAgICB8DQo+ICsgKiAgICAgICAgICAgICAgfCAg ZHJvcCB0aHJlc2ggIHwNCj4gKyAqICAgU21hbGwgcGt0IGRyb3AgICAgICAgICAgICAgTWFyayB0 aHJlc2hvbGQNCj4gKyAqICAgICAgIHRocmVzaA0KPiArICoNCj4gKyAqIFRoZSBlZmZlY3Qgb2Yg bWFya2luZyBkZXBlbmRzIG9uIHRoZSB0eXBlIG9mIHBhY2tldDoNCj4gKyAqIGEpIElmIHRoZSBw YWNrZXQgaXMgRUNOIGVuYWJsZWQgYW5kIGl0IGlzIGEgVENQIHBhY2tldCwgdGhlbiB0aGUgcGFj a2V0DQo+ICsgKiAgICBpcyBFQ04gbWFya2VkLg0KPiArICogYikgSWYgdGhlIHBhY2tldCBpcyBh IFRDUCBwYWNrZXQsIHRoZW4gd2UgcHJvYmFiaWxpc3RpY2FsbHkgY2FsbCB0Y3BfY3dyDQo+ICsg KiAgICB0byByZWR1Y2UgdGhlIGNvbmdlc3Rpb24gd2luZG93LiBUaGUgY3VycmVudCBpbXBsZW1l bnRhdGlvbiB1c2VzIGEgbGluZWFyDQo+ICsgKiAgICBkaXN0cmlidXRpb24gKDAlIHByb2JhYmls aXR5IGF0IG1hcmtpbmcgdGhyZXNob2xkLCAxMDAlIHByb2JhYmlsaXR5DQo+ICsgKiAgICBhdCBk cm9wIHRocmVzaG9sZCkuDQo+ICsgKiBjKSBJZiB0aGUgcGFja2V0IGlzIG5vdCBhIFRDUCBwYWNr ZXQsIHRoZW4gaXQgaXMgZHJvcHBlZC4NCj4gKyAqDQo+ICsgKiBJZiB0aGUgY3JlZGl0IGlzIGJl bG93IHRoZSBkcm9wIHRocmVzaG9sZCwgdGhlIHBhY2tldCBpcyBkcm9wcGVkLiBJZiBpdA0KPiAr ICogaXMgYSBUQ1AgcGFja2V0LCB0aGVuIGl0IGFsc28gY2FsbHMgdGNwX2N3ciBzaW5jZSBwYWNr ZXRzIGRyb3BwZWQgYnkNCj4gKyAqIGJ5IGEgY2dyb3VwIHNrYiBCUEYgcHJvZ3JhbSBkbyBub3Qg YXV0b21hdGljYWxseSB0cmlnZ2VyIGEgY2FsbCB0bw0KPiArICogdGNwX2N3ciBpbiB0aGUgY3Vy cmVudCBrZXJuZWwgY29kZS4NCj4gKyAqDQo+ICsgKiBUaGlzIEJQRiBwcm9ncmFtIGFjdHVhbGx5 IHVzZXMgMiBkcm9wIHRocmVzaG9sZHMsIG9uZSB0aHJlc2hvbGQNCj4gKyAqIGZvciBsYXJnZXIg cGFja2V0cyAoPj0gMTIwIGJ5dGVzKSBhbmQgYW5vdGhlciBmb3Igc21hbGxlciBwYWNrZXRzLiBU aGlzDQo+ICsgKiBwcm90ZWN0cyBzbWFsbGVyIHBhY2tldHMgc3VjaCBhcyBTWU5zLCBBQ0tzLCBl dGMuDQo+ICsgKg0KPiArICogVGhlIGRlZmF1bHQgYmFuZHdpZHRoIGxpbWl0IGlzIHNldCBhdCAx R2JwcyBidXQgdGhpcyBjYW4gYmUgY2hhbmdlZCBieQ0KPiArICogYSB1c2VyIHByb2dyYW0gdGhy b3VnaCBhIHNoYXJlZCBCUEYgbWFwLiBJbiBhZGRpdGlvbiwgYnkgZGVmYXVsdCB0aGlzIEJQRg0K PiArICogcHJvZ3JhbSBkb2VzIG5vdCBsaW1pdCBjb25uZWN0aW9ucyB1c2luZyBsb29wYmFjay4g VGhpcyBiZWhhdmlvciBjYW4gYmUNCj4gKyAqIG92ZXJ3cml0dGVuIGJ5IHRoZSB1c2VyIHByb2dy YW0uIFRoZXJlIGlzIGFsc28gYW4gb3B0aW9uIHRvIGNhbGN1bGF0ZQ0KPiArICogc29tZSBzdGF0 aXN0aWNzLCBzdWNoIGFzIHBlcmNlbnQgb2YgcGFja2V0cyBtYXJrZWQgb3IgZHJvcHBlZCwgd2hp Y2gNCj4gKyAqIGEgdXNlciBwcm9ncmFtLCBzdWNoIGFzIGhibSwgY2FuIGFjY2Vzcy4NCj4gKyAq Lw0KPiArDQo+ICsjaW5jbHVkZSAiaGJtX2tlcm4uaCINCj4gKw0KPiArU0VDKCJjZ3JvdXBfc2ti L2VncmVzcyIpDQo+ICtpbnQgX2hibV9vdXRfY2coc3RydWN0IF9fc2tfYnVmZiAqc2tiKQ0KPiAr ew0KPiArCXNpZ25lZCBsb25nIGxvbmcgZGVsdGEgPSAwLCBkZWx0YV9zZW5kOw0KDQoic2lnbmVk IiBpcyBub3QgbmVlZGVkIGhlcmUuDQoNCj4gKwl1bnNpZ25lZCBsb25nIGxvbmcgY3VydGltZSwg c2VuZHRpbWU7DQo+ICsJc3RydWN0IGhibV9xdWV1ZV9zdGF0cyAqcXNwID0gTlVMTDsNCj4gKwl1 bnNpZ25lZCBpbnQgcXVldWVfaW5kZXggPSAwOw0KPiArCWJvb2wgY29uZ2VzdGlvbl9mbGFnID0g ZmFsc2U7DQo+ICsJYm9vbCBlY25fY2VfZmxhZyA9IGZhbHNlOw0KPiArCXN0cnVjdCBoYm1fcGt0 X2luZm8gcGt0aTsNCj4gKwlzdHJ1Y3QgaGJtX3ZxdWV1ZSAqcWRwOw0KPiArCWJvb2wgZHJvcF9m bGFnID0gZmFsc2U7DQo+ICsJYm9vbCBjd3JfZmxhZyA9IGZhbHNlOw0KPiArCWludCBsZW4gPSBz a2ItPmxlbjsNCj4gKwlpbnQgcnYgPSBBTExPV19QS1Q7DQo+ICsNCj4gKwlxc3AgPSBicGZfbWFw X2xvb2t1cF9lbGVtKCZxdWV1ZV9zdGF0cywgJnF1ZXVlX2luZGV4KTsNCj4gKwlpZiAocXNwICE9 IE5VTEwgJiYgIXFzcC0+bG9vcGJhY2sgJiYgKHNrYi0+aWZpbmRleCA9PSAxKSkNCg0KVGhlIHNr Yi0+aWZpbmRleCA9IDEgaXMgc2tpcHBlZC4gV2h5PyBTb21lIGNvbW1lbnRzIHdpbGwNCmJlIGhl bHBmdWwgdG8gdW5kZXJzdGFuZC4NCg0KPiArCQlyZXR1cm4gQUxMT1dfUEtUOw0KPiArDQo+ICsJ aGJtX2dldF9wa3RfaW5mbyhza2IsICZwa3RpKTsNCj4gKw0KPiArCS8vIFdlIG1heSB3YW50IHRv IGFjY291bnQgZm9yIHRoZSBsZW5ndGggb2YgaGVhZGVycyBpbiBsZW4NCj4gKwkvLyBjYWxjdWxh dGlvbiwgbGlrZSBFVEggaGVhZGVyICsgb3ZlcmhlYWQsIHNwZWNpYWxseSBpZiBpdA0KPiArCS8v IGlzIGEgZ3NvIHBhY2tldC4gQnV0IEkgYW0gbm90IGRvaW5nIGl0IHJpZ2h0IG5vdy4NCj4gKw0K PiArCXFkcCA9IGJwZl9nZXRfbG9jYWxfc3RvcmFnZSgmcXVldWVfc3RhdGUsIDApOw0KPiArCWlm ICghcWRwKQ0KPiArCQlyZXR1cm4gQUxMT1dfUEtUOw0KPiArCWlmIChxZHAtPmxhc3R0aW1lID09 IDApDQo+ICsJCWhibV9pbml0X2VkdF92cXVldWUocWRwLCAxMDI0KTsNCj4gKw0KPiArCWN1cnRp bWUgPSBicGZfa3RpbWVfZ2V0X25zKCk7DQo+ICsNCj4gKwkvLyBCZWdpbiBjcml0aWNhbCBzZWN0 aW9uDQo+ICsJYnBmX3NwaW5fbG9jaygmcWRwLT5sb2NrKTsNCj4gKwlkZWx0YSA9IHFkcC0+bGFz dHRpbWUgLSBjdXJ0aW1lOw0KPiArCS8vIGJvdW5kIGJ1cnN0cyB0byAxMDB1cw0KPiArCWlmIChk ZWx0YSA8IC1CVVJTVF9TSVpFX05TKSB7DQo+ICsJCS8vIG5lZ2F0aXZlIGRlbHRhIGlzIGEgY3Jl ZGl0IHRoYXQgYWxsb3dzIGJ1cnN0cw0KPiArCQlxZHAtPmxhc3R0aW1lID0gY3VydGltZSAtIEJV UlNUX1NJWkVfTlM7DQo+ICsJCWRlbHRhID0gLUJVUlNUX1NJWkVfTlM7DQo+ICsJfQ0KPiArCXNl bmR0aW1lID0gcWRwLT5sYXN0dGltZTsNCj4gKwlkZWx0YV9zZW5kID0gQllURVNfVE9fTlMobGVu LCBxZHAtPnJhdGUpOw0KPiArCXFkcC0+bGFzdHRpbWUgKz0gZGVsdGFfc2VuZDsNCj4gKwlicGZf c3Bpbl91bmxvY2soJnFkcC0+bG9jayk7DQo+ICsJLy8gRW5kIGNyaXRpY2FsIHNlY3Rpb24NCj4g Kw0KPiArCS8vIFNldCBFRFQgb2YgcGFja2V0DQo+ICsJc2tiLT50c3RhbXAgPSBzZW5kdGltZTsN Cj4gKw0KPiArCS8vIENoZWNrIGlmIHdlIHNob3VsZCB1cGRhdGUgcmF0ZQ0KPiArCWlmIChxc3Ag IT0gTlVMTCAmJiAocXNwLT5yYXRlICogMTI4KSAhPSBxZHAtPnJhdGUpIHsNCj4gKwkJcWRwLT5y YXRlID0gcXNwLT5yYXRlICogMTI4Ow0KPiArCQlicGZfcHJpbnRrKCJVcGRhdGluZyByYXRlOiAl ZCAoMXNlYzolbGx1IGJpdHMpXG4iLA0KPiArCQkJICAgKGludClxZHAtPnJhdGUsDQo+ICsJCQkg ICBDUkVESVRfUEVSX05TKDEwMDAwMDAwMDAsIHFkcC0+cmF0ZSkgKiA4KTsNCg0KSG93IG9mdGVu IHRoaXMgYnBmX3ByaW50ayB3aWxsIGZpcmUgYXQgcnVudGltZT8NCklmIGl0IGZpcmVzIHJlbGF0 aXZlbHkgZnJlcXVlbnRseSwgbWF5YmUgd29ydGggdG8gcHV0IGl0DQp1bmRlciBkZWJ1Zz8NCg0K PiArCX0NCj4gKw0KPiArCS8vIFNldCBmbGFncyAoZHJvcCwgY29uZ2VzdGlvbiwgY3dyKQ0KPiAr CS8vIGxhc3QgcGFja2V0IHdpbGwgYmUgc2VudCBpbiB0aGUgZnV0dXJlLCBib3VuZCBsYXRlbmN5 DQo+ICsJaWYgKGRlbHRhID4gRFJPUF9USFJFU0hfTlMgfHwgKGRlbHRhID4gTEFSR0VfUEtUX0RS T1BfVEhSRVNIX05TICYmDQo+ICsJCQkJICAgICAgIGxlbiA+IExBUkdFX1BLVF9USFJFU0gpKSB7 DQo+ICsJCWRyb3BfZmxhZyA9IHRydWU7DQo+ICsJCWlmIChwa3RpLmlzX3RjcCAmJiBwa3RpLmVj biA9PSAwKQ0KPiArCQkJY3dyX2ZsYWcgPSB0cnVlOw0KPiArCX0gZWxzZSBpZiAoZGVsdGEgPiBN QVJLX1RIUkVTSF9OUykgew0KPiArCQlpZiAocGt0aS5pc190Y3ApDQo+ICsJCQljb25nZXN0aW9u X2ZsYWcgPSB0cnVlOw0KPiArCQllbHNlDQo+ICsJCQlkcm9wX2ZsYWcgPSB0cnVlOw0KPiArCX0N Cj4gKw0KPiArCWlmIChjb25nZXN0aW9uX2ZsYWcpIHsNCj4gKwkJaWYgKGJwZl9za2JfZWNuX3Nl dF9jZShza2IpKSB7DQo+ICsJCQllY25fY2VfZmxhZyA9IHRydWU7DQo+ICsJCX0gZWxzZSB7DQo+ ICsJCQlpZiAocGt0aS5pc190Y3ApIHsNCj4gKwkJCQl1bnNpZ25lZCBpbnQgcmFuZCA9IGJwZl9n ZXRfcHJhbmRvbV91MzIoKTsNCj4gKw0KPiArCQkJCWlmIChkZWx0YSA+PSBNQVJLX1RIUkVTSF9O UyArDQo+ICsJCQkJICAgIChyYW5kICUgTUFSS19SRUdJT05fU0laRV9OUykpIHsNCj4gKwkJCQkJ Ly8gRG8gY29uZ2VzdGlvbiBjb250cm9sDQo+ICsJCQkJCWN3cl9mbGFnID0gdHJ1ZTsNCj4gKwkJ CQl9DQo+ICsJCQl9IGVsc2UgaWYgKGxlbiA+IExBUkdFX1BLVF9USFJFU0gpIHsNCj4gKwkJCQkv LyBQcm9ibGVtIGlmIHRvbyBtYW55IHNtYWxsIHBhY2tldHM/DQo+ICsJCQkJZHJvcF9mbGFnID0g dHJ1ZTsNCj4gKwkJCQljb25nZXN0aW9uX2ZsYWcgPSBmYWxzZTsNCj4gKwkJCX0NCj4gKwkJfQ0K PiArCX0NCj4gKw0KPiArCWlmIChwa3RpLmlzX3RjcCAmJiBkcm9wX2ZsYWcgJiYgcGt0aS5wYWNr ZXRzX291dCA8PSAxKSB7DQo+ICsJCWRyb3BfZmxhZyA9IGZhbHNlOw0KPiArCQljd3JfZmxhZyA9 IHRydWU7DQo+ICsJCWNvbmdlc3Rpb25fZmxhZyA9IGZhbHNlOw0KPiArCX0NCj4gKw0KPiArCWlm IChxc3AgIT0gTlVMTCAmJiBxc3AtPm5vX2NuKQ0KPiArCQkJY3dyX2ZsYWcgPSBmYWxzZTsNCj4g Kw0KPiArCWhibV91cGRhdGVfc3RhdHMocXNwLCBsZW4sIGN1cnRpbWUsIGNvbmdlc3Rpb25fZmxh ZywgZHJvcF9mbGFnLA0KPiArCQkJIGN3cl9mbGFnLCBlY25fY2VfZmxhZywgJnBrdGksIChpbnQp IGRlbHRhKTsNCj4gKw0KPiArCWlmIChkcm9wX2ZsYWcpIHsNCj4gKwkJX19zeW5jX2FkZF9hbmRf ZmV0Y2goJihxZHAtPmNyZWRpdCksIGxlbik7DQo+ICsJCV9fc3luY19hZGRfYW5kX2ZldGNoKCYo cWRwLT5sYXN0dGltZSksIC1kZWx0YV9zZW5kKTsNCg0KV2UgaGF2ZSByYWNlIGhlcmUuIFVwZGF0 aW5nIHFkcC0+bGFzdHRpbWUgbWF5IGhhcHBlbiBjb25jdXJyZW50bHkgd2l0aA0KdGhlIHVwZGF0 ZSBpbiBicGZfc3Bpbl9sb2NrIHJlZ2lvbi4gRG8gd2UgaGF2ZSBhbnkgaXNzdWUgaGVyZT8NCg0K PiArCQlydiA9IERST1BfUEtUOw0KPiArCX0NCj4gKw0KPiArCWlmIChjd3JfZmxhZykNCj4gKwkJ cnYgfD0gQ1dSOw0KPiArCXJldHVybiBydjsNCj4gK30NCj4gK2NoYXIgX2xpY2Vuc2VbXSBTRUMo ImxpY2Vuc2UiKSA9ICJHUEwiOw0KPiBkaWZmIC0tZ2l0IGEvc2FtcGxlcy9icGYvaGJtX2tlcm4u aCBiL3NhbXBsZXMvYnBmL2hibV9rZXJuLmgNCj4gaW5kZXggYmUxOWNmMWQ1Y2Q1Li5hYTIwN2Ey ZWViYmQgMTAwNjQ0DQo+IC0tLSBhL3NhbXBsZXMvYnBmL2hibV9rZXJuLmgNCj4gKysrIGIvc2Ft cGxlcy9icGYvaGJtX2tlcm4uaA0KPiBAQCAtMjksNiArMjksNyBAQA0KPiAgICNkZWZpbmUgRFJP UF9QS1QJMA0KPiAgICNkZWZpbmUgQUxMT1dfUEtUCTENCj4gICAjZGVmaW5lIFRDUF9FQ05fT0sJ MQ0KPiArI2RlZmluZSBDV1IJCTINCj4gICANCj4gICAjaWZuZGVmIEhCTV9ERUJVRyAgLy8gRGVm aW5lIEhCTV9ERUJVRyB0byBlbmFibGUgZGVidWdnaW5nDQo+ICAgI3VuZGVmIGJwZl9wcmludGsN Cj4gQEAgLTQ1LDggKzQ2LDE4IEBADQo+ICAgI2RlZmluZSBNQVhfQ1JFRElUCQkoMTAwICogTUFY X0JZVEVTX1BFUl9QQUNLRVQpDQo+ICAgI2RlZmluZSBJTklUX0NSRURJVAkJKElOSVRJQUxfQ1JF RElUX1BBQ0tFVFMgKiBNQVhfQllURVNfUEVSX1BBQ0tFVCkNCj4gICANCj4gKy8vIFRpbWUgYmFz ZSBhY2NvdW50aW5nIGZvciBmcSdzIEVEVA0KPiArI2RlZmluZSBCVVJTVF9TSVpFX05TCQkxMDAw MDAgLy8gMTAwdXMNCj4gKyNkZWZpbmUgTUFSS19USFJFU0hfTlMJCTUwMDAwIC8vIDUwdXMNCj4g KyNkZWZpbmUgRFJPUF9USFJFU0hfTlMJCTUwMDAwMCAvLyA1MDB1cw0KPiArLy8gUmVzZXJ2ZSAy MHVzIG9mIHF1ZXVpbmcgZm9yIHNtYWxsIHBhY2tldHMgKGxlc3MgdGhhbiAxMjAgYnl0ZXMpDQo+ ICsjZGVmaW5lIExBUkdFX1BLVF9EUk9QX1RIUkVTSF9OUyAoRFJPUF9USFJFU0hfTlMgLSAyMDAw MCkNCj4gKyNkZWZpbmUgTUFSS19SRUdJT05fU0laRV9OUwkoTEFSR0VfUEtUX0RST1BfVEhSRVNI X05TIC0gTUFSS19USFJFU0hfTlMpDQo+ICsNCj4gICAvLyByYXRlIGluIGJ5dGVzIHBlciBucyA8 PCAyMA0KPiAgICNkZWZpbmUgQ1JFRElUX1BFUl9OUyhkZWx0YSwgcmF0ZSkgKCgoKHU2NCkoZGVs dGEpKSAqIChyYXRlKSkgPj4gMjApDQo+ICsjZGVmaW5lIEJZVEVTX1BFUl9OUyhkZWx0YSwgcmF0 ZSkgKCgoKHU2NCkoZGVsdGEpKSAqIChyYXRlKSkgPj4gMjApDQo+ICsjZGVmaW5lIEJZVEVTX1RP X05TKGJ5dGVzLCByYXRlKSBkaXY2NF91NjQoKCh1NjQpKGJ5dGVzKSkgPDwgMjAsICh1NjQpKHJh dGUpKQ0KPiAgIA0KPiAgIHN0cnVjdCBicGZfbWFwX2RlZiBTRUMoIm1hcHMiKSBxdWV1ZV9zdGF0 ZSA9IHsNCj4gICAJLnR5cGUgPSBCUEZfTUFQX1RZUEVfQ0dST1VQX1NUT1JBR0UsDQo+IEBAIC02 Nyw2ICs3OCw3IEBAIEJQRl9BTk5PVEFURV9LVl9QQUlSKHF1ZXVlX3N0YXRzLCBpbnQsIHN0cnVj dCBoYm1fcXVldWVfc3RhdHMpOw0KPiAgIHN0cnVjdCBoYm1fcGt0X2luZm8gew0KPiAgIAlpbnQJ Y3duZDsNCj4gICAJaW50CXJ0dDsNCj4gKwlpbnQJcGFja2V0c19vdXQ7DQo+ICAgCWJvb2wJaXNf aXA7DQo+ICAgCWJvb2wJaXNfdGNwOw0KPiAgIAlzaG9ydAllY247DQo+IEBAIC04NiwxNiArOTgs MjAgQEAgc3RhdGljIGludCBnZXRfdGNwX2luZm8oc3RydWN0IF9fc2tfYnVmZiAqc2tiLCBzdHJ1 Y3QgaGJtX3BrdF9pbmZvICpwa3RpKQ0KPiAgIAkJCQlpZiAodHApIHsNCj4gICAJCQkJCXBrdGkt PmN3bmQgPSB0cC0+c25kX2N3bmQ7DQo+ICAgCQkJCQlwa3RpLT5ydHQgPSB0cC0+c3J0dF91cyA+ PiAzOw0KPiArCQkJCQlwa3RpLT5wYWNrZXRzX291dCA9IHRwLT5wYWNrZXRzX291dDsNCj4gICAJ CQkJCXJldHVybiAwOw0KPiAgIAkJCQl9DQo+ICAgCQkJfQ0KPiAgIAkJfQ0KPiAgIAl9DQo+ICsJ cGt0aS0+Y3duZCA9IDA7DQo+ICsJcGt0aS0+cnR0ID0gMDsNCj4gKwlwa3RpLT5wYWNrZXRzX291 dCA9IDA7DQo+ICAgCXJldHVybiAxOw0KPiAgIH0NCj4gICANCj4gLXN0YXRpYyBfX2Fsd2F5c19p bmxpbmUgdm9pZCBoYm1fZ2V0X3BrdF9pbmZvKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYiwNCj4gLQkJ CQkJICAgICBzdHJ1Y3QgaGJtX3BrdF9pbmZvICpwa3RpKQ0KPiArc3RhdGljIHZvaWQgaGJtX2dl dF9wa3RfaW5mbyhzdHJ1Y3QgX19za19idWZmICpza2IsDQo+ICsJCQkgICAgIHN0cnVjdCBoYm1f cGt0X2luZm8gKnBrdGkpDQo+ICAgew0KPiAgIAlzdHJ1Y3QgaXBoZHIgaXBoOw0KPiAgIAlzdHJ1 Y3QgaXB2NmhkciAqaXA2aDsNCj4gQEAgLTEyMywxMCArMTM5LDIyIEBAIHN0YXRpYyBfX2Fsd2F5 c19pbmxpbmUgdm9pZCBoYm1fZ2V0X3BrdF9pbmZvKHN0cnVjdCBfX3NrX2J1ZmYgKnNrYiwNCj4g ICANCj4gICBzdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQgaGJtX2luaXRfdnF1ZXVlKHN0cnVj dCBoYm1fdnF1ZXVlICpxZHAsIGludCByYXRlKQ0KPiAgIHsNCj4gLQkJYnBmX3ByaW50aygiSW5p dGlhbGl6aW5nIHF1ZXVlX3N0YXRlLCByYXRlOiVkXG4iLCByYXRlICogMTI4KTsNCj4gLQkJcWRw LT5sYXN0dGltZSA9IGJwZl9rdGltZV9nZXRfbnMoKTsNCj4gLQkJcWRwLT5jcmVkaXQgPSBJTklU X0NSRURJVDsNCj4gLQkJcWRwLT5yYXRlID0gcmF0ZSAqIDEyODsNCj4gKwlicGZfcHJpbnRrKCJJ bml0aWFsaXppbmcgcXVldWVfc3RhdGUsIHJhdGU6JWRcbiIsIHJhdGUgKiAxMjgpOw0KPiArCXFk cC0+bGFzdHRpbWUgPSBicGZfa3RpbWVfZ2V0X25zKCk7DQo+ICsJcWRwLT5jcmVkaXQgPSBJTklU X0NSRURJVDsNCj4gKwlxZHAtPnJhdGUgPSByYXRlICogMTI4Ow0KPiArfQ0KPiArDQo+ICtzdGF0 aWMgX19hbHdheXNfaW5saW5lIHZvaWQgaGJtX2luaXRfZWR0X3ZxdWV1ZShzdHJ1Y3QgaGJtX3Zx dWV1ZSAqcWRwLA0KPiArCQkJCQkJaW50IHJhdGUpDQo+ICt7DQo+ICsJdW5zaWduZWQgbG9uZyBs b25nIGN1cnRpbWU7DQo+ICsNCj4gKwljdXJ0aW1lID0gYnBmX2t0aW1lX2dldF9ucygpOw0KPiAr CWJwZl9wcmludGsoIkluaXRpYWxpemluZyBxdWV1ZV9zdGF0ZSwgcmF0ZTolZFxuIiwgcmF0ZSAq IDEyOCk7DQo+ICsJcWRwLT5sYXN0dGltZSA9IGN1cnRpbWUgLSBCVVJTVF9TSVpFX05TOwkvLyBz dXBwb3J0IGluaXRpYWwgYnVyc3QNCj4gKwlxZHAtPmNyZWRpdCA9IDA7CQkJCS8vIG5vdCB1c2Vk DQo+ICsJcWRwLT5yYXRlID0gcmF0ZSAqIDEyODsNCj4gICB9DQo+ICAgDQo+ICAgc3RhdGljIF9f YWx3YXlzX2lubGluZSB2b2lkIGhibV91cGRhdGVfc3RhdHMoc3RydWN0IGhibV9xdWV1ZV9zdGF0 cyAqcXNwLA0KPiANCg==