From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-ed1-x52d.google.com (mail-ed1-x52d.google.com [IPv6:2a00:1450:4864:20::52d]) by mail.toke.dk (Postfix) with ESMTPS id 1D5369DC9A6 for ; Thu, 12 Jan 2023 09:07:24 +0100 (CET) Authentication-Results: mail.toke.dk; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=N5FTNt+x Received: by mail-ed1-x52d.google.com with SMTP id j16so25715403edw.11 for ; Thu, 12 Jan 2023 00:07:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=CbhF/nnSJPwM2+rbbAW9sDr9asQP06rO56ZNRMmJ5Fk=; b=N5FTNt+xG/Sz+q4+gZzkgbPaTj84jHnLeFwdrg5xGbgmr+D9/choE46LyGuu7MisoH tgXpWFC7koZU74la0/dgGXayzalbQBa3FaugpO2knQK5KmXR+n/053VCza+ROzE9h1PH +JBeTLatPN/v1wUYAlTTOGnDPH5RMu9Gf59kxa55aTuelr/qBmh79kztbW/9/Rwg4q1J TYHi0vPxQUXaij0Sw5+7AQd+44ZXn/1GEuK99pfCdwa5vru4eDQN6SrpSsJO6n20caJ8 ZyeDTsDYz1BJUeYoTvQnVKNc8Dvg+9AvgdxInxlH9OaELRfVPX+pZqBCRNjCq4SC2OC6 EQqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=CbhF/nnSJPwM2+rbbAW9sDr9asQP06rO56ZNRMmJ5Fk=; b=E3jATS9Z9lSJGZ4NahLByQ3ywldsQJf9hhlBOyPE2t+zebDXCaz7PxjF/GptC+Yyk1 /ilnhZ461kHjI7VDi6dTGCRkEwIsrRFnud1mSVjBwSV/4LFKH2tTc4+vTHOES7vOdB/L xu9t4vbARWSf1JjhOMAzYV88imIzDNeYYEjNg5S8k+jDCLeNachb4Zf9PeW7lkuJjuVC bIcx1P07/ho6yljHnDtGzbD2sZz6VyfPgEj1gGdm0/KrxJCF6LKyfrEvA75/WyMPU6Ma qa/L8uyv/QwYUT8EBrnFXuDqcoRF+OMphyGJdnaLsSXB5p9azjT31Tg9dM1W5UDu7Cj9 gP9g== X-Gm-Message-State: AFqh2krEnS5hYnUtpzPSVNq6DTfV2MVNE26ibeHU9xcs5E4WObEGSHh0 L3wiK+6nRUgh93XwkqNmzZ8= X-Google-Smtp-Source: AMrXdXtGiYH6c1xl+TLPb2WFGew1k2Hk3MAWLvnj/C29vnxGb6+FKKPkbK0tBRDrW+CK7RCnlri0rw== X-Received: by 2002:a05:6402:528c:b0:48e:c073:9453 with SMTP id en12-20020a056402528c00b0048ec0739453mr30507056edb.15.1673510843900; Thu, 12 Jan 2023 00:07:23 -0800 (PST) Received: from [192.168.0.105] ([77.126.9.245]) by smtp.gmail.com with ESMTPSA id 17-20020a170906201100b007bff9fb211fsm7051222ejo.57.2023.01.12.00.07.20 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 12 Jan 2023 00:07:23 -0800 (PST) Message-ID: Date: Thu, 12 Jan 2023 10:07:20 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.6.1 Content-Language: en-US To: Stanislav Fomichev , bpf@vger.kernel.org References: <20230112003230.3779451-1-sdf@google.com> <20230112003230.3779451-16-sdf@google.com> From: Tariq Toukan In-Reply-To: <20230112003230.3779451-16-sdf@google.com> Content-Type: text/plain; charset="utf-8"; format="flowed" Content-Transfer-Encoding: base64 Message-ID-Hash: 4WTFBWUSGMEEFSXOSCNJU5VTQB2LDXP4 X-Message-ID-Hash: 4WTFBWUSGMEEFSXOSCNJU5VTQB2LDXP4 X-MailFrom: ttoukan.linux@gmail.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: ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org, martin.lau@linux.dev, song@kernel.org, yhs@fb.com, john.fastabend@gmail.com, kpsingh@kernel.org, haoluo@google.com, jolsa@kernel.org, =?UTF-8?Q?Toke_H=c3=b8iland-J=c3=b8rgensen?= , Tariq Toukan , Saeed Mahameed , David Ahern , Jakub Kicinski , Willem de Bruijn , Jesper Dangaard Brouer , Anatoly Burakov , Alexander Lobakin , Magnus Karlsson , Maryam Tahhan , xdp-hints@xdp-project.net, netdev@vger.kernel.org X-Mailman-Version: 3.3.7 Precedence: list Subject: [xdp-hints] Re: [PATCH bpf-next v7 15/17] net/mlx5e: Introduce wrapper for xdp_buff List-Id: XDP hardware hints design discussion Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: DQoNCk9uIDEyLzAxLzIwMjMgMjozMiwgU3RhbmlzbGF2IEZvbWljaGV2IHdyb3RlOg0KPiBGcm9t OiBUb2tlIEjDuGlsYW5kLUrDuHJnZW5zZW4gPHRva2VAcmVkaGF0LmNvbT4NCj4gDQo+IFByZXBh cmF0aW9uIGZvciBpbXBsZW1lbnRpbmcgSFcgbWV0YWRhdGEga2Z1bmNzLiBObyBmdW5jdGlvbmFs IGNoYW5nZS4NCj4gDQo+IENjOiBUYXJpcSBUb3VrYW4gPHRhcmlxdEBudmlkaWEuY29tPg0KPiBD YzogU2FlZWQgTWFoYW1lZWQgPHNhZWVkbUBudmlkaWEuY29tPg0KPiBDYzogSm9obiBGYXN0YWJl bmQgPGpvaG4uZmFzdGFiZW5kQGdtYWlsLmNvbT4NCj4gQ2M6IERhdmlkIEFoZXJuIDxkc2FoZXJu QGdtYWlsLmNvbT4NCj4gQ2M6IE1hcnRpbiBLYUZhaSBMYXUgPG1hcnRpbi5sYXVAbGludXguZGV2 Pg0KPiBDYzogSmFrdWIgS2ljaW5za2kgPGt1YmFAa2VybmVsLm9yZz4NCj4gQ2M6IFdpbGxlbSBk ZSBCcnVpam4gPHdpbGxlbWJAZ29vZ2xlLmNvbT4NCj4gQ2M6IEplc3BlciBEYW5nYWFyZCBCcm91 ZXIgPGJyb3VlckByZWRoYXQuY29tPg0KPiBDYzogQW5hdG9seSBCdXJha292IDxhbmF0b2x5LmJ1 cmFrb3ZAaW50ZWwuY29tPg0KPiBDYzogQWxleGFuZGVyIExvYmFraW4gPGFsZXhhbmRyLmxvYmFr aW5AaW50ZWwuY29tPg0KPiBDYzogTWFnbnVzIEthcmxzc29uIDxtYWdudXMua2FybHNzb25AZ21h aWwuY29tPg0KPiBDYzogTWFyeWFtIFRhaGhhbiA8bXRhaGhhbkByZWRoYXQuY29tPg0KPiBDYzog eGRwLWhpbnRzQHhkcC1wcm9qZWN0Lm5ldA0KPiBDYzogbmV0ZGV2QHZnZXIua2VybmVsLm9yZw0K PiBTaWduZWQtb2ZmLWJ5OiBUb2tlIEjDuGlsYW5kLUrDuHJnZW5zZW4gPHRva2VAcmVkaGF0LmNv bT4NCj4gU2lnbmVkLW9mZi1ieTogU3RhbmlzbGF2IEZvbWljaGV2IDxzZGZAZ29vZ2xlLmNvbT4N Cj4gLS0tDQo+ICAgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgg IHwgIDEgKw0KPiAgIC4uLi9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5j ICB8ICAzICstDQo+ICAgLi4uL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRw LmggIHwgIDYgKy0NCj4gICAuLi4vZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay9y eC5jICAgfCAyNSArKysrLS0tLQ0KPiAgIC4uLi9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9j b3JlL2VuX3J4LmMgICB8IDU4ICsrKysrKysrKy0tLS0tLS0tLS0NCj4gICA1IGZpbGVzIGNoYW5n ZWQsIDUwIGluc2VydGlvbnMoKyksIDQzIGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oIGIvZHJpdmVycy9u ZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgNCj4gaW5kZXggMmQ3N2ZiOGE4YTAx Li5hZjY2Mzk3OGQxYjQgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxh bm94L21seDUvY29yZS9lbi5oDQo+ICsrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94 L21seDUvY29yZS9lbi5oDQo+IEBAIC00NjksNiArNDY5LDcgQEAgc3RydWN0IG1seDVlX3R4cXNx IHsNCj4gICB1bmlvbiBtbHg1ZV9hbGxvY191bml0IHsNCj4gICAJc3RydWN0IHBhZ2UgKnBhZ2U7 DQo+ICAgCXN0cnVjdCB4ZHBfYnVmZiAqeHNrOw0KPiArCXN0cnVjdCBtbHg1ZV94ZHBfYnVmZiAq bXhidWY7DQoNCkluIFhTSyBmaWxlcyBiZWxvdyB5b3UgbWl4IHVzYWdlIG9mIGJvdGggYWxsb2Nf dW5pdHNbcGFnZV9pZHhdLm14YnVmIGFuZCANCmFsbG9jX3VuaXRzW3BhZ2VfaWR4XS54c2ssIHdo aWxlIGJvdGggZmllbGRzIHNoYXJlIHRoZSBtZW1vcnkgb2YgYSB1bmlvbi4NCg0KQXMgc3RydWN0 IG1seDVlX3hkcF9idWZmIHdyYXBzIHN0cnVjdCB4ZHBfYnVmZiwgSSB0aGluayB0aGF0IHlvdSBq dXN0IA0KbmVlZCB0byBjaGFuZ2UgdGhlIGV4aXN0aW5nIHhzayBmaWVsZCB0eXBlIGZyb20gc3Ry dWN0IHhkcF9idWZmICp4c2sgDQppbnRvIHN0cnVjdCBtbHg1ZV94ZHBfYnVmZiAqeHNrIGFuZCBh bGlnbiB0aGUgdXNhZ2UuDQoNCj4gICB9Ow0KPiAgIA0KPiAgIC8qIFhEUCBwYWNrZXRzIGNhbiBi ZSB0cmFuc21pdHRlZCBpbiBkaWZmZXJlbnQgd2F5cy4gT24gY29tcGxldGlvbiwgd2UgbmVlZCB0 bw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3Jl L2VuL3hkcC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hk cC5jDQo+IGluZGV4IDIwNTA3ZWYyZjk1Ni4uMzFiYjY4MDZiZjVkIDEwMDY0NA0KPiAtLS0gYS9k cml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRwLmMNCj4gKysrIGIv ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hkcC5jDQo+IEBAIC0x NTgsOCArMTU4LDkgQEAgbWx4NWVfeG1pdF94ZHBfYnVmZihzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNx LCBzdHJ1Y3QgbWx4NWVfcnEgKnJxLA0KPiAgIA0KPiAgIC8qIHJldHVybnMgdHJ1ZSBpZiBwYWNr ZXQgd2FzIGNvbnN1bWVkIGJ5IHhkcCAqLw0KPiAgIGJvb2wgbWx4NWVfeGRwX2hhbmRsZShzdHJ1 Y3QgbWx4NWVfcnEgKnJxLCBzdHJ1Y3QgcGFnZSAqcGFnZSwNCj4gLQkJICAgICAgc3RydWN0IGJw Zl9wcm9nICpwcm9nLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCkNCj4gKwkJICAgICAgc3RydWN0IGJw Zl9wcm9nICpwcm9nLCBzdHJ1Y3QgbWx4NWVfeGRwX2J1ZmYgKm14YnVmKQ0KPiAgIHsNCj4gKwlz dHJ1Y3QgeGRwX2J1ZmYgKnhkcCA9ICZteGJ1Zi0+eGRwOw0KPiAgIAl1MzIgYWN0Ow0KPiAgIAlp bnQgZXJyOw0KPiAgIA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFu b3gvbWx4NS9jb3JlL2VuL3hkcC5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4 NS9jb3JlL2VuL3hkcC5oDQo+IGluZGV4IGJjMmQ5MDM0YWY1Yi4uMzg5ODE4YmY2ODMzIDEwMDY0 NA0KPiAtLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veGRw LmgNCj4gKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hk cC5oDQo+IEBAIC00NCwxMCArNDQsMTQgQEANCj4gICAJKE1MWDVFX1hEUF9JTkxJTkVfV1FFX01B WF9EU19DTlQgKiBNTFg1X1NFTkRfV1FFX0RTIC0gXA0KPiAgIAkgc2l6ZW9mKHN0cnVjdCBtbHg1 X3dxZV9pbmxpbmVfc2VnKSkNCj4gICANCj4gK3N0cnVjdCBtbHg1ZV94ZHBfYnVmZiB7DQo+ICsJ c3RydWN0IHhkcF9idWZmIHhkcDsNCj4gK307DQo+ICsNCj4gICBzdHJ1Y3QgbWx4NWVfeHNrX3Bh cmFtOw0KPiAgIGludCBtbHg1ZV94ZHBfbWF4X210dShzdHJ1Y3QgbWx4NWVfcGFyYW1zICpwYXJh bXMsIHN0cnVjdCBtbHg1ZV94c2tfcGFyYW0gKnhzayk7DQo+ICAgYm9vbCBtbHg1ZV94ZHBfaGFu ZGxlKHN0cnVjdCBtbHg1ZV9ycSAqcnEsIHN0cnVjdCBwYWdlICpwYWdlLA0KPiAtCQkgICAgICBz dHJ1Y3QgYnBmX3Byb2cgKnByb2csIHN0cnVjdCB4ZHBfYnVmZiAqeGRwKTsNCj4gKwkJICAgICAg c3RydWN0IGJwZl9wcm9nICpwcm9nLCBzdHJ1Y3QgbWx4NWVfeGRwX2J1ZmYgKm1sY3R4KTsNCj4g ICB2b2lkIG1seDVlX3hkcF9tcHdxZV9jb21wbGV0ZShzdHJ1Y3QgbWx4NWVfeGRwc3EgKnNxKTsN Cj4gICBib29sIG1seDVlX3BvbGxfeGRwc3FfY3Eoc3RydWN0IG1seDVlX2NxICpjcSk7DQo+ICAg dm9pZCBtbHg1ZV9mcmVlX3hkcHNxX2Rlc2NzKHN0cnVjdCBtbHg1ZV94ZHBzcSAqc3EpOw0KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hz ay9yeC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay9y eC5jDQo+IGluZGV4IGM5MWI1NGQ5ZmYyNy4uOWNmZjgyZDc2NGUzIDEwMDY0NA0KPiAtLS0gYS9k cml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4veHNrL3J4LmMNCj4gKysr IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3hzay9yeC5jDQo+ IEBAIC0yMiw2ICsyMiw3IEBAIGludCBtbHg1ZV94c2tfYWxsb2NfcnhfbXB3cWUoc3RydWN0IG1s eDVlX3JxICpycSwgdTE2IGl4KQ0KPiAgIAkJZ290byBlcnI7DQo+ICAgDQo+ICAgCUJVSUxEX0JV R19PTihzaXplb2Yod2ktPmFsbG9jX3VuaXRzWzBdKSAhPSBzaXplb2Yod2ktPmFsbG9jX3VuaXRz WzBdLnhzaykpOw0KPiArCVhTS19DSEVDS19QUklWX1RZUEUoc3RydWN0IG1seDVlX3hkcF9idWZm KTsNCj4gICAJYmF0Y2ggPSB4c2tfYnVmZl9hbGxvY19iYXRjaChycS0+eHNrX3Bvb2wsIChzdHJ1 Y3QgeGRwX2J1ZmYgKiopd2ktPmFsbG9jX3VuaXRzLA0KPiAgIAkJCQkgICAgIHJxLT5tcHdxZS5w YWdlc19wZXJfd3FlKTsNCj4gICANCj4gQEAgLTIzMyw3ICsyMzQsNyBAQCBzdHJ1Y3Qgc2tfYnVm ZiAqbWx4NWVfeHNrX3NrYl9mcm9tX2NxZV9tcHdycV9saW5lYXIoc3RydWN0IG1seDVlX3JxICpy cSwNCj4gICAJCQkJCQkgICAgdTMyIGhlYWRfb2Zmc2V0LA0KPiAgIAkJCQkJCSAgICB1MzIgcGFn ZV9pZHgpDQo+ICAgew0KPiAtCXN0cnVjdCB4ZHBfYnVmZiAqeGRwID0gd2ktPmFsbG9jX3VuaXRz W3BhZ2VfaWR4XS54c2s7DQo+ICsJc3RydWN0IG1seDVlX3hkcF9idWZmICpteGJ1ZiA9IHdpLT5h bGxvY191bml0c1twYWdlX2lkeF0ubXhidWY7DQo+ICAgCXN0cnVjdCBicGZfcHJvZyAqcHJvZzsN Cj4gICANCj4gICAJLyogQ2hlY2sgcGFja2V0IHNpemUuIE5vdGUgTFJPIGRvZXNuJ3QgdXNlIGxp bmVhciBTS0IgKi8NCj4gQEAgLTI0OSw5ICsyNTAsOSBAQCBzdHJ1Y3Qgc2tfYnVmZiAqbWx4NWVf eHNrX3NrYl9mcm9tX2NxZV9tcHdycV9saW5lYXIoc3RydWN0IG1seDVlX3JxICpycSwNCj4gICAJ ICovDQo+ICAgCVdBUk5fT05fT05DRShoZWFkX29mZnNldCk7DQo+ICAgDQo+IC0JeHNrX2J1ZmZf c2V0X3NpemUoeGRwLCBjcWVfYmNudCk7DQo+IC0JeHNrX2J1ZmZfZG1hX3N5bmNfZm9yX2NwdSh4 ZHAsIHJxLT54c2tfcG9vbCk7DQo+IC0JbmV0X3ByZWZldGNoKHhkcC0+ZGF0YSk7DQo+ICsJeHNr X2J1ZmZfc2V0X3NpemUoJm14YnVmLT54ZHAsIGNxZV9iY250KTsNCj4gKwl4c2tfYnVmZl9kbWFf c3luY19mb3JfY3B1KCZteGJ1Zi0+eGRwLCBycS0+eHNrX3Bvb2wpOw0KPiArCW5ldF9wcmVmZXRj aChteGJ1Zi0+eGRwLmRhdGEpOw0KPiAgIA0KPiAgIAkvKiBQb3NzaWJsZSBmbG93czoNCj4gICAJ ICogLSBYRFBfUkVESVJFQ1QgdG8gWFNLTUFQOg0KPiBAQCAtMjY5LDcgKzI3MCw3IEBAIHN0cnVj dCBza19idWZmICptbHg1ZV94c2tfc2tiX2Zyb21fY3FlX21wd3JxX2xpbmVhcihzdHJ1Y3QgbWx4 NWVfcnEgKnJxLA0KPiAgIAkgKi8NCj4gICANCj4gICAJcHJvZyA9IHJjdV9kZXJlZmVyZW5jZShy cS0+eGRwX3Byb2cpOw0KPiAtCWlmIChsaWtlbHkocHJvZyAmJiBtbHg1ZV94ZHBfaGFuZGxlKHJx LCBOVUxMLCBwcm9nLCB4ZHApKSkgew0KPiArCWlmIChsaWtlbHkocHJvZyAmJiBtbHg1ZV94ZHBf aGFuZGxlKHJxLCBOVUxMLCBwcm9nLCBteGJ1ZikpKSB7DQo+ICAgCQlpZiAobGlrZWx5KF9fdGVz dF9hbmRfY2xlYXJfYml0KE1MWDVFX1JRX0ZMQUdfWERQX1hNSVQsIHJxLT5mbGFncykpKQ0KPiAg IAkJCV9fc2V0X2JpdChwYWdlX2lkeCwgd2ktPnhkcF94bWl0X2JpdG1hcCk7IC8qIG5vbi1hdG9t aWMgKi8NCj4gICAJCXJldHVybiBOVUxMOyAvKiBwYWdlL3BhY2tldCB3YXMgY29uc3VtZWQgYnkg WERQICovDQo+IEBAIC0yNzgsMTQgKzI3OSwxNCBAQCBzdHJ1Y3Qgc2tfYnVmZiAqbWx4NWVfeHNr X3NrYl9mcm9tX2NxZV9tcHdycV9saW5lYXIoc3RydWN0IG1seDVlX3JxICpycSwNCj4gICAJLyog WERQX1BBU1M6IGNvcHkgdGhlIGRhdGEgZnJvbSB0aGUgVU1FTSB0byBhIG5ldyBTS0IgYW5kIHJl dXNlIHRoZQ0KPiAgIAkgKiBmcmFtZS4gT24gU0tCIGFsbG9jYXRpb24gZmFpbHVyZSwgTlVMTCBp cyByZXR1cm5lZC4NCj4gICAJICovDQo+IC0JcmV0dXJuIG1seDVlX3hza19jb25zdHJ1Y3Rfc2ti KHJxLCB4ZHApOw0KPiArCXJldHVybiBtbHg1ZV94c2tfY29uc3RydWN0X3NrYihycSwgJm14YnVm LT54ZHApOw0KPiAgIH0NCj4gICANCj4gICBzdHJ1Y3Qgc2tfYnVmZiAqbWx4NWVfeHNrX3NrYl9m cm9tX2NxZV9saW5lYXIoc3RydWN0IG1seDVlX3JxICpycSwNCj4gICAJCQkJCSAgICAgIHN0cnVj dCBtbHg1ZV93cWVfZnJhZ19pbmZvICp3aSwNCj4gICAJCQkJCSAgICAgIHUzMiBjcWVfYmNudCkN Cj4gICB7DQo+IC0Jc3RydWN0IHhkcF9idWZmICp4ZHAgPSB3aS0+YXUtPnhzazsNCj4gKwlzdHJ1 Y3QgbWx4NWVfeGRwX2J1ZmYgKm14YnVmID0gd2ktPmF1LT5teGJ1ZjsNCj4gICAJc3RydWN0IGJw Zl9wcm9nICpwcm9nOw0KPiAgIA0KPiAgIAkvKiB3aS0+b2Zmc2V0IGlzIG5vdCB1c2VkIGluIHRo aXMgZnVuY3Rpb24sIGJlY2F1c2UgeGRwLT5kYXRhIGFuZCB0aGUNCj4gQEAgLTI5NSwxNyArMjk2 LDE3IEBAIHN0cnVjdCBza19idWZmICptbHg1ZV94c2tfc2tiX2Zyb21fY3FlX2xpbmVhcihzdHJ1 Y3QgbWx4NWVfcnEgKnJxLA0KPiAgIAkgKi8NCj4gICAJV0FSTl9PTl9PTkNFKHdpLT5vZmZzZXQp Ow0KPiAgIA0KPiAtCXhza19idWZmX3NldF9zaXplKHhkcCwgY3FlX2JjbnQpOw0KPiAtCXhza19i dWZmX2RtYV9zeW5jX2Zvcl9jcHUoeGRwLCBycS0+eHNrX3Bvb2wpOw0KPiAtCW5ldF9wcmVmZXRj aCh4ZHAtPmRhdGEpOw0KPiArCXhza19idWZmX3NldF9zaXplKCZteGJ1Zi0+eGRwLCBjcWVfYmNu dCk7DQo+ICsJeHNrX2J1ZmZfZG1hX3N5bmNfZm9yX2NwdSgmbXhidWYtPnhkcCwgcnEtPnhza19w b29sKTsNCj4gKwluZXRfcHJlZmV0Y2gobXhidWYtPnhkcC5kYXRhKTsNCj4gICANCj4gICAJcHJv ZyA9IHJjdV9kZXJlZmVyZW5jZShycS0+eGRwX3Byb2cpOw0KPiAtCWlmIChsaWtlbHkocHJvZyAm JiBtbHg1ZV94ZHBfaGFuZGxlKHJxLCBOVUxMLCBwcm9nLCB4ZHApKSkNCj4gKwlpZiAobGlrZWx5 KHByb2cgJiYgbWx4NWVfeGRwX2hhbmRsZShycSwgTlVMTCwgcHJvZywgbXhidWYpKSkNCj4gICAJ CXJldHVybiBOVUxMOyAvKiBwYWdlL3BhY2tldCB3YXMgY29uc3VtZWQgYnkgWERQICovDQo+ICAg DQo+ICAgCS8qIFhEUF9QQVNTOiBjb3B5IHRoZSBkYXRhIGZyb20gdGhlIFVNRU0gdG8gYSBuZXcg U0tCLiBUaGUgZnJhbWUgcmV1c2UNCj4gICAJICogd2lsbCBiZSBoYW5kbGVkIGJ5IG1seDVlX2Zy ZWVfcnhfd3FlLg0KPiAgIAkgKiBPbiBTS0IgYWxsb2NhdGlvbiBmYWlsdXJlLCBOVUxMIGlzIHJl dHVybmVkLg0KPiAgIAkgKi8NCj4gLQlyZXR1cm4gbWx4NWVfeHNrX2NvbnN0cnVjdF9za2IocnEs IHhkcCk7DQo+ICsJcmV0dXJuIG1seDVlX3hza19jb25zdHJ1Y3Rfc2tiKHJxLCAmbXhidWYtPnhk cCk7DQo+ICAgfQ0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gv bWx4NS9jb3JlL2VuX3J4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2Nv cmUvZW5fcnguYw0KPiBpbmRleCBjODgyMGFiMjIxNjkuLjZhZmZkZGRmNWJjZiAxMDA2NDQNCj4g LS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3J4LmMNCj4g KysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3J4LmMNCj4g QEAgLTE1NzUsMTEgKzE1NzUsMTEgQEAgc3RydWN0IHNrX2J1ZmYgKm1seDVlX2J1aWxkX2xpbmVh cl9za2Ioc3RydWN0IG1seDVlX3JxICpycSwgdm9pZCAqdmEsDQo+ICAgCXJldHVybiBza2I7DQo+ ICAgfQ0KPiAgIA0KPiAtc3RhdGljIHZvaWQgbWx4NWVfZmlsbF94ZHBfYnVmZihzdHJ1Y3QgbWx4 NWVfcnEgKnJxLCB2b2lkICp2YSwgdTE2IGhlYWRyb29tLA0KPiAtCQkJCXUzMiBsZW4sIHN0cnVj dCB4ZHBfYnVmZiAqeGRwKQ0KPiArc3RhdGljIHZvaWQgbWx4NWVfZmlsbF9teGJ1ZihzdHJ1Y3Qg bWx4NWVfcnEgKnJxLCB2b2lkICp2YSwgdTE2IGhlYWRyb29tLA0KPiArCQkJICAgICB1MzIgbGVu LCBzdHJ1Y3QgbWx4NWVfeGRwX2J1ZmYgKm14YnVmKQ0KPiAgIHsNCj4gLQl4ZHBfaW5pdF9idWZm KHhkcCwgcnEtPmJ1ZmYuZnJhbWUwX3N6LCAmcnEtPnhkcF9yeHEpOw0KPiAtCXhkcF9wcmVwYXJl X2J1ZmYoeGRwLCB2YSwgaGVhZHJvb20sIGxlbiwgdHJ1ZSk7DQo+ICsJeGRwX2luaXRfYnVmZigm bXhidWYtPnhkcCwgcnEtPmJ1ZmYuZnJhbWUwX3N6LCAmcnEtPnhkcF9yeHEpOw0KPiArCXhkcF9w cmVwYXJlX2J1ZmYoJm14YnVmLT54ZHAsIHZhLCBoZWFkcm9vbSwgbGVuLCB0cnVlKTsNCj4gICB9 DQo+ICAgDQo+ICAgc3RhdGljIHN0cnVjdCBza19idWZmICoNCj4gQEAgLTE2MDYsMTYgKzE2MDYs MTYgQEAgbWx4NWVfc2tiX2Zyb21fY3FlX2xpbmVhcihzdHJ1Y3QgbWx4NWVfcnEgKnJxLCBzdHJ1 Y3QgbWx4NWVfd3FlX2ZyYWdfaW5mbyAqd2ksDQo+ICAgDQo+ICAgCXByb2cgPSByY3VfZGVyZWZl cmVuY2UocnEtPnhkcF9wcm9nKTsNCj4gICAJaWYgKHByb2cpIHsNCj4gLQkJc3RydWN0IHhkcF9i dWZmIHhkcDsNCj4gKwkJc3RydWN0IG1seDVlX3hkcF9idWZmIG14YnVmOw0KPiAgIA0KPiAgIAkJ bmV0X3ByZWZldGNodyh2YSk7IC8qIHhkcF9mcmFtZSBkYXRhIGFyZWEgKi8NCj4gLQkJbWx4NWVf ZmlsbF94ZHBfYnVmZihycSwgdmEsIHJ4X2hlYWRyb29tLCBjcWVfYmNudCwgJnhkcCk7DQo+IC0J CWlmIChtbHg1ZV94ZHBfaGFuZGxlKHJxLCBhdS0+cGFnZSwgcHJvZywgJnhkcCkpDQo+ICsJCW1s eDVlX2ZpbGxfbXhidWYocnEsIGNxZSwgdmEsIHJ4X2hlYWRyb29tLCBjcWVfYmNudCwgJm14YnVm KTsNCj4gKwkJaWYgKG1seDVlX3hkcF9oYW5kbGUocnEsIGF1LT5wYWdlLCBwcm9nLCAmbXhidWYp KQ0KPiAgIAkJCXJldHVybiBOVUxMOyAvKiBwYWdlL3BhY2tldCB3YXMgY29uc3VtZWQgYnkgWERQ ICovDQo+ICAgDQo+IC0JCXJ4X2hlYWRyb29tID0geGRwLmRhdGEgLSB4ZHAuZGF0YV9oYXJkX3N0 YXJ0Ow0KPiAtCQltZXRhc2l6ZSA9IHhkcC5kYXRhIC0geGRwLmRhdGFfbWV0YTsNCj4gLQkJY3Fl X2JjbnQgPSB4ZHAuZGF0YV9lbmQgLSB4ZHAuZGF0YTsNCj4gKwkJcnhfaGVhZHJvb20gPSBteGJ1 Zi54ZHAuZGF0YSAtIG14YnVmLnhkcC5kYXRhX2hhcmRfc3RhcnQ7DQo+ICsJCW1ldGFzaXplID0g bXhidWYueGRwLmRhdGEgLSBteGJ1Zi54ZHAuZGF0YV9tZXRhOw0KPiArCQljcWVfYmNudCA9IG14 YnVmLnhkcC5kYXRhX2VuZCAtIG14YnVmLnhkcC5kYXRhOw0KPiAgIAl9DQo+ICAgCWZyYWdfc2l6 ZSA9IE1MWDVfU0tCX0ZSQUdfU1oocnhfaGVhZHJvb20gKyBjcWVfYmNudCk7DQo+ICAgCXNrYiA9 IG1seDVlX2J1aWxkX2xpbmVhcl9za2IocnEsIHZhLCBmcmFnX3NpemUsIHJ4X2hlYWRyb29tLCBj cWVfYmNudCwgbWV0YXNpemUpOw0KPiBAQCAtMTYzNyw5ICsxNjM3LDkgQEAgbWx4NWVfc2tiX2Zy b21fY3FlX25vbmxpbmVhcihzdHJ1Y3QgbWx4NWVfcnEgKnJxLCBzdHJ1Y3QgbWx4NWVfd3FlX2Zy YWdfaW5mbyAqd2kNCj4gICAJdW5pb24gbWx4NWVfYWxsb2NfdW5pdCAqYXUgPSB3aS0+YXU7DQo+ ICAgCXUxNiByeF9oZWFkcm9vbSA9IHJxLT5idWZmLmhlYWRyb29tOw0KPiAgIAlzdHJ1Y3Qgc2ti X3NoYXJlZF9pbmZvICpzaW5mbzsNCj4gKwlzdHJ1Y3QgbWx4NWVfeGRwX2J1ZmYgbXhidWY7DQo+ ICAgCXUzMiBmcmFnX2NvbnN1bWVkX2J5dGVzOw0KPiAgIAlzdHJ1Y3QgYnBmX3Byb2cgKnByb2c7 DQo+IC0Jc3RydWN0IHhkcF9idWZmIHhkcDsNCj4gICAJc3RydWN0IHNrX2J1ZmYgKnNrYjsNCj4g ICAJZG1hX2FkZHJfdCBhZGRyOw0KPiAgIAl1MzIgdHJ1ZXNpemU7DQo+IEBAIC0xNjU0LDggKzE2 NTQsOCBAQCBtbHg1ZV9za2JfZnJvbV9jcWVfbm9ubGluZWFyKHN0cnVjdCBtbHg1ZV9ycSAqcnEs IHN0cnVjdCBtbHg1ZV93cWVfZnJhZ19pbmZvICp3aQ0KPiAgIAluZXRfcHJlZmV0Y2h3KHZhKTsg LyogeGRwX2ZyYW1lIGRhdGEgYXJlYSAqLw0KPiAgIAluZXRfcHJlZmV0Y2godmEgKyByeF9oZWFk cm9vbSk7DQo+ICAgDQo+IC0JbWx4NWVfZmlsbF94ZHBfYnVmZihycSwgdmEsIHJ4X2hlYWRyb29t LCBmcmFnX2NvbnN1bWVkX2J5dGVzLCAmeGRwKTsNCj4gLQlzaW5mbyA9IHhkcF9nZXRfc2hhcmVk X2luZm9fZnJvbV9idWZmKCZ4ZHApOw0KPiArCW1seDVlX2ZpbGxfbXhidWYocnEsIHZhLCByeF9o ZWFkcm9vbSwgZnJhZ19jb25zdW1lZF9ieXRlcywgJm14YnVmKTsNCj4gKwlzaW5mbyA9IHhkcF9n ZXRfc2hhcmVkX2luZm9fZnJvbV9idWZmKCZteGJ1Zi54ZHApOw0KPiAgIAl0cnVlc2l6ZSA9IDA7 DQo+ICAgDQo+ICAgCWNxZV9iY250IC09IGZyYWdfY29uc3VtZWRfYnl0ZXM7DQo+IEBAIC0xNjcz LDEzICsxNjczLDEzIEBAIG1seDVlX3NrYl9mcm9tX2NxZV9ub25saW5lYXIoc3RydWN0IG1seDVl X3JxICpycSwgc3RydWN0IG1seDVlX3dxZV9mcmFnX2luZm8gKndpDQo+ICAgCQlkbWFfc3luY19z aW5nbGVfZm9yX2NwdShycS0+cGRldiwgYWRkciArIHdpLT5vZmZzZXQsDQo+ICAgCQkJCQlmcmFn X2NvbnN1bWVkX2J5dGVzLCBycS0+YnVmZi5tYXBfZGlyKTsNCj4gICANCj4gLQkJaWYgKCF4ZHBf YnVmZl9oYXNfZnJhZ3MoJnhkcCkpIHsNCj4gKwkJaWYgKCF4ZHBfYnVmZl9oYXNfZnJhZ3MoJm14 YnVmLnhkcCkpIHsNCj4gICAJCQkvKiBJbml0IG9uIHRoZSBmaXJzdCBmcmFnbWVudCB0byBhdm9p ZCBjb2xkIGNhY2hlIGFjY2Vzcw0KPiAgIAkJCSAqIHdoZW4gcG9zc2libGUuDQo+ICAgCQkJICov DQo+ICAgCQkJc2luZm8tPm5yX2ZyYWdzID0gMDsNCj4gICAJCQlzaW5mby0+eGRwX2ZyYWdzX3Np emUgPSAwOw0KPiAtCQkJeGRwX2J1ZmZfc2V0X2ZyYWdzX2ZsYWcoJnhkcCk7DQo+ICsJCQl4ZHBf YnVmZl9zZXRfZnJhZ3NfZmxhZygmbXhidWYueGRwKTsNCj4gICAJCX0NCj4gICANCj4gICAJCWZy YWcgPSAmc2luZm8tPmZyYWdzW3NpbmZvLT5ucl9mcmFncysrXTsNCj4gQEAgLTE2ODgsNyArMTY4 OCw3IEBAIG1seDVlX3NrYl9mcm9tX2NxZV9ub25saW5lYXIoc3RydWN0IG1seDVlX3JxICpycSwg c3RydWN0IG1seDVlX3dxZV9mcmFnX2luZm8gKndpDQo+ICAgCQlza2JfZnJhZ19zaXplX3NldChm cmFnLCBmcmFnX2NvbnN1bWVkX2J5dGVzKTsNCj4gICANCj4gICAJCWlmIChwYWdlX2lzX3BmbWVt YWxsb2MoYXUtPnBhZ2UpKQ0KPiAtCQkJeGRwX2J1ZmZfc2V0X2ZyYWdfcGZtZW1hbGxvYygmeGRw KTsNCj4gKwkJCXhkcF9idWZmX3NldF9mcmFnX3BmbWVtYWxsb2MoJm14YnVmLnhkcCk7DQo+ICAg DQo+ICAgCQlzaW5mby0+eGRwX2ZyYWdzX3NpemUgKz0gZnJhZ19jb25zdW1lZF9ieXRlczsNCj4g ICAJCXRydWVzaXplICs9IGZyYWdfaW5mby0+ZnJhZ19zdHJpZGU7DQo+IEBAIC0xNzAxLDcgKzE3 MDEsNyBAQCBtbHg1ZV9za2JfZnJvbV9jcWVfbm9ubGluZWFyKHN0cnVjdCBtbHg1ZV9ycSAqcnEs IHN0cnVjdCBtbHg1ZV93cWVfZnJhZ19pbmZvICp3aQ0KPiAgIAlhdSA9IGhlYWRfd2ktPmF1Ow0K PiAgIA0KPiAgIAlwcm9nID0gcmN1X2RlcmVmZXJlbmNlKHJxLT54ZHBfcHJvZyk7DQo+IC0JaWYg KHByb2cgJiYgbWx4NWVfeGRwX2hhbmRsZShycSwgYXUtPnBhZ2UsIHByb2csICZ4ZHApKSB7DQo+ ICsJaWYgKHByb2cgJiYgbWx4NWVfeGRwX2hhbmRsZShycSwgYXUtPnBhZ2UsIHByb2csICZteGJ1 ZikpIHsNCj4gICAJCWlmICh0ZXN0X2JpdChNTFg1RV9SUV9GTEFHX1hEUF9YTUlULCBycS0+Zmxh Z3MpKSB7DQo+ICAgCQkJaW50IGk7DQo+ICAgDQo+IEBAIC0xNzExLDIyICsxNzExLDIyIEBAIG1s eDVlX3NrYl9mcm9tX2NxZV9ub25saW5lYXIoc3RydWN0IG1seDVlX3JxICpycSwgc3RydWN0IG1s eDVlX3dxZV9mcmFnX2luZm8gKndpDQo+ICAgCQlyZXR1cm4gTlVMTDsgLyogcGFnZS9wYWNrZXQg d2FzIGNvbnN1bWVkIGJ5IFhEUCAqLw0KPiAgIAl9DQo+ICAgDQo+IC0Jc2tiID0gbWx4NWVfYnVp bGRfbGluZWFyX3NrYihycSwgeGRwLmRhdGFfaGFyZF9zdGFydCwgcnEtPmJ1ZmYuZnJhbWUwX3N6 LA0KPiAtCQkJCSAgICAgeGRwLmRhdGEgLSB4ZHAuZGF0YV9oYXJkX3N0YXJ0LA0KPiAtCQkJCSAg ICAgeGRwLmRhdGFfZW5kIC0geGRwLmRhdGEsDQo+IC0JCQkJICAgICB4ZHAuZGF0YSAtIHhkcC5k YXRhX21ldGEpOw0KPiArCXNrYiA9IG1seDVlX2J1aWxkX2xpbmVhcl9za2IocnEsIG14YnVmLnhk cC5kYXRhX2hhcmRfc3RhcnQsIHJxLT5idWZmLmZyYW1lMF9zeiwNCj4gKwkJCQkgICAgIG14YnVm LnhkcC5kYXRhIC0gbXhidWYueGRwLmRhdGFfaGFyZF9zdGFydCwNCj4gKwkJCQkgICAgIG14YnVm LnhkcC5kYXRhX2VuZCAtIG14YnVmLnhkcC5kYXRhLA0KPiArCQkJCSAgICAgbXhidWYueGRwLmRh dGEgLSBteGJ1Zi54ZHAuZGF0YV9tZXRhKTsNCj4gICAJaWYgKHVubGlrZWx5KCFza2IpKQ0KPiAg IAkJcmV0dXJuIE5VTEw7DQo+ICAgDQo+ICAgCXBhZ2VfcmVmX2luYyhhdS0+cGFnZSk7DQo+ICAg DQo+IC0JaWYgKHVubGlrZWx5KHhkcF9idWZmX2hhc19mcmFncygmeGRwKSkpIHsNCj4gKwlpZiAo dW5saWtlbHkoeGRwX2J1ZmZfaGFzX2ZyYWdzKCZteGJ1Zi54ZHApKSkgew0KPiAgIAkJaW50IGk7 DQo+ICAgDQo+ICAgCQkvKiBzaW5mby0+bnJfZnJhZ3MgaXMgcmVzZXQgYnkgYnVpbGRfc2tiLCBj YWxjdWxhdGUgYWdhaW4uICovDQo+ICAgCQl4ZHBfdXBkYXRlX3NrYl9zaGFyZWRfaW5mbyhza2Is IHdpIC0gaGVhZF93aSAtIDEsDQo+ICAgCQkJCQkgICBzaW5mby0+eGRwX2ZyYWdzX3NpemUsIHRy dWVzaXplLA0KPiAtCQkJCQkgICB4ZHBfYnVmZl9pc19mcmFnX3BmbWVtYWxsb2MoJnhkcCkpOw0K PiArCQkJCQkgICB4ZHBfYnVmZl9pc19mcmFnX3BmbWVtYWxsb2MoJm14YnVmLnhkcCkpOw0KPiAg IA0KPiAgIAkJZm9yIChpID0gMDsgaSA8IHNpbmZvLT5ucl9mcmFnczsgaSsrKSB7DQo+ICAgCQkJ c2tiX2ZyYWdfdCAqZnJhZyA9ICZzaW5mby0+ZnJhZ3NbaV07DQo+IEBAIC0yMDA3LDE5ICsyMDA3 LDE5IEBAIG1seDVlX3NrYl9mcm9tX2NxZV9tcHdycV9saW5lYXIoc3RydWN0IG1seDVlX3JxICpy cSwgc3RydWN0IG1seDVlX21wd19pbmZvICp3aSwNCj4gICANCj4gICAJcHJvZyA9IHJjdV9kZXJl ZmVyZW5jZShycS0+eGRwX3Byb2cpOw0KPiAgIAlpZiAocHJvZykgew0KPiAtCQlzdHJ1Y3QgeGRw X2J1ZmYgeGRwOw0KPiArCQlzdHJ1Y3QgbWx4NWVfeGRwX2J1ZmYgbXhidWY7DQo+ICAgDQo+ICAg CQluZXRfcHJlZmV0Y2h3KHZhKTsgLyogeGRwX2ZyYW1lIGRhdGEgYXJlYSAqLw0KPiAtCQltbHg1 ZV9maWxsX3hkcF9idWZmKHJxLCB2YSwgcnhfaGVhZHJvb20sIGNxZV9iY250LCAmeGRwKTsNCj4g LQkJaWYgKG1seDVlX3hkcF9oYW5kbGUocnEsIGF1LT5wYWdlLCBwcm9nLCAmeGRwKSkgew0KPiAr CQltbHg1ZV9maWxsX214YnVmKHJxLCB2YSwgcnhfaGVhZHJvb20sIGNxZV9iY250LCAmbXhidWYp Ow0KPiArCQlpZiAobWx4NWVfeGRwX2hhbmRsZShycSwgYXUtPnBhZ2UsIHByb2csICZteGJ1Zikp IHsNCj4gICAJCQlpZiAoX190ZXN0X2FuZF9jbGVhcl9iaXQoTUxYNUVfUlFfRkxBR19YRFBfWE1J VCwgcnEtPmZsYWdzKSkNCj4gICAJCQkJX19zZXRfYml0KHBhZ2VfaWR4LCB3aS0+eGRwX3htaXRf Yml0bWFwKTsgLyogbm9uLWF0b21pYyAqLw0KPiAgIAkJCXJldHVybiBOVUxMOyAvKiBwYWdlL3Bh Y2tldCB3YXMgY29uc3VtZWQgYnkgWERQICovDQo+ICAgCQl9DQo+ICAgDQo+IC0JCXJ4X2hlYWRy b29tID0geGRwLmRhdGEgLSB4ZHAuZGF0YV9oYXJkX3N0YXJ0Ow0KPiAtCQltZXRhc2l6ZSA9IHhk cC5kYXRhIC0geGRwLmRhdGFfbWV0YTsNCj4gLQkJY3FlX2JjbnQgPSB4ZHAuZGF0YV9lbmQgLSB4 ZHAuZGF0YTsNCj4gKwkJcnhfaGVhZHJvb20gPSBteGJ1Zi54ZHAuZGF0YSAtIG14YnVmLnhkcC5k YXRhX2hhcmRfc3RhcnQ7DQo+ICsJCW1ldGFzaXplID0gbXhidWYueGRwLmRhdGEgLSBteGJ1Zi54 ZHAuZGF0YV9tZXRhOw0KPiArCQljcWVfYmNudCA9IG14YnVmLnhkcC5kYXRhX2VuZCAtIG14YnVm LnhkcC5kYXRhOw0KPiAgIAl9DQo+ICAgCWZyYWdfc2l6ZSA9IE1MWDVfU0tCX0ZSQUdfU1oocnhf aGVhZHJvb20gKyBjcWVfYmNudCk7DQo+ICAgCXNrYiA9IG1seDVlX2J1aWxkX2xpbmVhcl9za2Io cnEsIHZhLCBmcmFnX3NpemUsIHJ4X2hlYWRyb29tLCBjcWVfYmNudCwgbWV0YXNpemUpOw0K