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 Received: from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 76C72C77B7C for ; Sun, 28 May 2023 06:40:41 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id D58B941E25; Sun, 28 May 2023 06:40:40 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org D58B941E25 Authentication-Results: smtp4.osuosl.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=C3XZmk2d X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 2h1hpX-8uRpO; Sun, 28 May 2023 06:40:38 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [IPv6:2605:bc80:3010:104::8cd3:938]) by smtp4.osuosl.org (Postfix) with ESMTPS id B6F8441DA8; Sun, 28 May 2023 06:40:37 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp4.osuosl.org B6F8441DA8 Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 7A707C0036; Sun, 28 May 2023 06:40:37 +0000 (UTC) Received: from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by lists.linuxfoundation.org (Postfix) with ESMTP id 25C8BC002A for ; Sun, 28 May 2023 06:40:37 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id ED83281EF1 for ; Sun, 28 May 2023 06:40:36 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org ED83281EF1 Authentication-Results: smtp1.osuosl.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=C3XZmk2d X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 2s6-HqKZaygk for ; Sun, 28 May 2023 06:40:35 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 5B2B281EDA Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by smtp1.osuosl.org (Postfix) with ESMTPS id 5B2B281EDA for ; Sun, 28 May 2023 06:40:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1685256034; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=8QYlBHTB2cWeSDeDa6j2ExXKXJkK86ds7nWJ9n+wiYA=; b=C3XZmk2dxb+FzNor0gLqnMP5mAGTuNiCb51TXRXsLGCRkmosy32WAJqW7oVB9SguCt0VQn iXmVjTlxN8JVgLi+XH33kSBt6XoyZ6VkkmWy1xBfYM1TVS0iSxLVNVUxPDWt68ALJqcTiI wI1gbyrOcT5wxTl13lywJtrSDT0MTK8= Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-93-fnVfu8fLMLCpL83NDgchlQ-1; Sun, 28 May 2023 02:40:32 -0400 X-MC-Unique: fnVfu8fLMLCpL83NDgchlQ-1 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-3f60481749eso11961675e9.1 for ; Sat, 27 May 2023 23:40:32 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685256031; x=1687848031; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=8QYlBHTB2cWeSDeDa6j2ExXKXJkK86ds7nWJ9n+wiYA=; b=JfSFHeFFqTgjAZj6AVPYl9EBy3FNJOK/52WGcAK3J/93CW8CnabPO0MfSiCrz7NoFu hehFU3tLQrXcNP+exqAifr/lxG23Y7dKkQ7+/Q5NxXin3FJIVd8bL34cap+/sGNh+0Hr HL40oqW6ITXgmFLfb2PlT7S4HEWvkkB1GU48mLMJOrqdKjj02+B9jVcqRbmHBtfjznmi yzF35RIHw8BM6MASqEzDE00m3WhyqU4NWVY1OhBGcHMsPKFqLr8mx3mc6mz2UY1bQaQL D7XlEREyC8KDe28YE2pbfd5/C6PIs7lciNDMur/NM7zRiyUjSWaUev4XK1jpKi9DjoE1 nvHg== X-Gm-Message-State: AC+VfDyCTzy5Sllr2F/hslr1ruVFjbziQdLhPkEDAu6K9Gdh2Qos0wN9 uAlRtyJocEXYQBVTc3FGk7WNNhk6Way27bDpKbSWNK/+Zn9UkDiFlifXCd26prfrfTFIvqA+Xrv Q0jY2ytzrY7KalvKXQdjuafdxC4UPmDY5UbrQAIKuKg== X-Received: by 2002:a05:600c:82c5:b0:3f5:a54:9f97 with SMTP id eo5-20020a05600c82c500b003f50a549f97mr4132788wmb.0.1685256031648; Sat, 27 May 2023 23:40:31 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6carfBTFTY4poallAVBlDBPUIDVfLDD46smd64cTSCUbV8twVW3Yl6/MXRl0LYrWO0pV7R+w== X-Received: by 2002:a05:600c:82c5:b0:3f5:a54:9f97 with SMTP id eo5-20020a05600c82c500b003f50a549f97mr4132776wmb.0.1685256031258; Sat, 27 May 2023 23:40:31 -0700 (PDT) Received: from redhat.com ([2.52.146.27]) by smtp.gmail.com with ESMTPSA id u3-20020a7bc043000000b003f17848673fsm10203265wmc.27.2023.05.27.23.40.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 May 2023 23:40:30 -0700 (PDT) Date: Sun, 28 May 2023 02:40:27 -0400 From: "Michael S. Tsirkin" To: Liang Chen Subject: Re: [PATCH net-next 2/5] virtio_net: Add page_pool support to improve performance Message-ID: <20230528023956-mutt-send-email-mst@kernel.org> References: <20230526054621.18371-1-liangchen.linux@gmail.com> <20230526054621.18371-2-liangchen.linux@gmail.com> MIME-Version: 1.0 In-Reply-To: X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Disposition: inline Cc: xuanzhuo@linux.alibaba.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, alexander.duyck@gmail.com, virtualization@lists.linux-foundation.org, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, davem@davemloft.net X-BeenThere: virtualization@lists.linux-foundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Linux virtualization List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: virtualization-bounces@lists.linux-foundation.org Sender: "Virtualization" T24gU2F0LCBNYXkgMjcsIDIwMjMgYXQgMDg6MzU6MDFQTSArMDgwMCwgTGlhbmcgQ2hlbiB3cm90 ZToKPiBPbiBGcmksIE1heSAyNiwgMjAyMyBhdCAyOjUx4oCvUE0gSmFzb24gV2FuZyA8amFzb3dh bmdAcmVkaGF0LmNvbT4gd3JvdGU6Cj4gPgo+ID4gT24gRnJpLCBNYXkgMjYsIDIwMjMgYXQgMTo0 NuKAr1BNIExpYW5nIENoZW4gPGxpYW5nY2hlbi5saW51eEBnbWFpbC5jb20+IHdyb3RlOgo+ID4g Pgo+ID4gPiBUaGUgaW1wbGVtZW50YXRpb24gYXQgdGhlIG1vbWVudCB1c2VzIG9uZSBwYWdlIHBl ciBwYWNrZXQgaW4gYm90aCB0aGUKPiA+ID4gbm9ybWFsIGFuZCBYRFAgcGF0aC4KPiA+Cj4gPiBJ dCdzIGJldHRlciB0byBleHBsYWluIHdoeSB3ZSBuZWVkIGEgcGFnZSBwb29sIGFuZCBob3cgaXQg Y2FuIGhlbHAgdGhlCj4gPiBwZXJmb3JtYW5jZS4KPiA+Cj4gCj4gU3VyZSwgSSB3aWxsIGluY2x1 ZGUgdGhhdCBvbiB2Mi4KPiA+ID4gSW4gYWRkaXRpb24sIGludHJvZHVjaW5nIGEgbW9kdWxlIHBh cmFtZXRlciB0byBlbmFibGUKPiA+ID4gb3IgZGlzYWJsZSB0aGUgdXNhZ2Ugb2YgcGFnZSBwb29s IChkaXNhYmxlZCBieSBkZWZhdWx0KS4KPiA+Cj4gPiBJZiBwYWdlIHBvb2wgd2lucyBmb3IgbW9z dCBvZiB0aGUgY2FzZXMsIGFueSByZWFzb24gdG8gZGlzYWJsZSBpdCBieSBkZWZhdWx0Pwo+ID4K PiAKPiBUaGFuayB5b3UgZm9yIHJhaXNpbmcgdGhlIHBvaW50LiBJdCBkb2VzIG1ha2Ugc2Vuc2Ug dG8gZW5hYmxlIGl0IGJ5IGRlZmF1bHQuCgpJJ2QgbGlrZSB0byBzZWUgbW9yZSBiZW5jaG1hcmtz IHBscyB0aGVuLCB3aXRoIGEgdmFyaWV0eSBvZiBwYWNrZXQKc2l6ZXMsIHVkcCBhbmQgdGNwLgoK PiA+ID4KPiA+ID4gSW4gc2luZ2xlLWNvcmUgdm0gdGVzdGluZyBlbnZpcm9ubWVudHMsIGl0IGdp dmVzIGEgbW9kZXN0IHBlcmZvcm1hbmNlIGdhaW4KPiA+ID4gaW4gdGhlIG5vcm1hbCBwYXRoLgo+ ID4gPiAgIFVwc3RyZWFtIGNvZGViYXNlOiA0Ny41IEdiaXRzL3NlYwo+ID4gPiAgIFVwc3RyZWFt IGNvZGViYXNlICsgcGFnZV9wb29sIHN1cHBvcnQ6IDUwLjIgR2JpdHMvc2VjCj4gPiA+Cj4gPiA+ IEluIG11bHRpLWNvcmUgdm0gdGVzdGluZyBlbnZpcm9ubWVudHMsIFRoZSBtb3N0IHNpZ25pZmlj YW50IHBlcmZvcm1hbmNlCj4gPiA+IGdhaW4gaXMgb2JzZXJ2ZWQgaW4gWERQIGNwdW1hcDoKPiA+ ID4gICBVcHN0cmVhbSBjb2RlYmFzZTogMS4zOCBHYml0cy9zZWMKPiA+ID4gICBVcHN0cmVhbSBj b2RlYmFzZSArIHBhZ2VfcG9vbCBzdXBwb3J0OiA5Ljc0IEdiaXRzL3NlYwo+ID4KPiA+IFBsZWFz ZSBzaG93IG1vcmUgZGV0YWlscyBvbiB0aGUgdGVzdC4gRS5nIHdoaWNoIGtpbmRzIG9mIHRlc3Rz IGhhdmUKPiA+IHlvdSBtZWFzdXJlZD8KPiA+Cj4gPiBCdHcsIGl0IHdvdWxkIGJlIGJldHRlciB0 byBtZWFzdXJlIFBQUyBhcyB3ZWxsLgo+ID4KPiAKPiBTdXJlLiBJdCB3aWxsIGJlIGFkZGVkIG9u IHYyLgo+ID4gPgo+ID4gPiBXaXRoIHRoaXMgZm91bmRhdGlvbiwgd2UgY2FuIGZ1cnRoZXIgaW50 ZWdyYXRlIHBhZ2UgcG9vbCBmcmFnbWVudGF0aW9uIGFuZAo+ID4gPiBETUEgbWFwL3VubWFwIHN1 cHBvcnQuCj4gPiA+Cj4gPiA+IFNpZ25lZC1vZmYtYnk6IExpYW5nIENoZW4gPGxpYW5nY2hlbi5s aW51eEBnbWFpbC5jb20+Cj4gPiA+IC0tLQo+ID4gPiAgZHJpdmVycy9uZXQvdmlydGlvX25ldC5j IHwgMTg4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQo+ID4KPiA+IEkg YmVsaWV2ZSB3ZSBzaG91bGQgbWFrZSB2aXJ0aW8tbmV0IHRvIHNlbGVjdCBDT05GSUdfUEFHRV9Q T09MIG9yIGRvCj4gPiB0aGUgaWZkZWYgdHJpY2tzIGF0IGxlYXN0Lgo+ID4KPiAKPiBTdXJlLiBp dCB3aWxsIGJlIGRvbmUgb24gdjIuCj4gPiA+ICAxIGZpbGUgY2hhbmdlZCwgMTQ2IGluc2VydGlv bnMoKyksIDQyIGRlbGV0aW9ucygtKQo+ID4gPgo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9u ZXQvdmlydGlvX25ldC5jIGIvZHJpdmVycy9uZXQvdmlydGlvX25ldC5jCj4gPiA+IGluZGV4IGM1 ZGNhMGQ5MmU2NC4uOTljMGNhMGMxNzgxIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL25ldC92 aXJ0aW9fbmV0LmMKPiA+ID4gKysrIGIvZHJpdmVycy9uZXQvdmlydGlvX25ldC5jCj4gPiA+IEBA IC0zMSw2ICszMSw5IEBAIG1vZHVsZV9wYXJhbShjc3VtLCBib29sLCAwNDQ0KTsKPiA+ID4gIG1v ZHVsZV9wYXJhbShnc28sIGJvb2wsIDA0NDQpOwo+ID4gPiAgbW9kdWxlX3BhcmFtKG5hcGlfdHgs IGJvb2wsIDA2NDQpOwo+ID4gPgo+ID4gPiArc3RhdGljIGJvb2wgcGFnZV9wb29sX2VuYWJsZWQ7 Cj4gPiA+ICttb2R1bGVfcGFyYW0ocGFnZV9wb29sX2VuYWJsZWQsIGJvb2wsIDA0MDApOwo+ID4g PiArCj4gPiA+ICAvKiBGSVhNRTogTVRVIGluIGNvbmZpZy4gKi8KPiA+ID4gICNkZWZpbmUgR09P RF9QQUNLRVRfTEVOIChFVEhfSExFTiArIFZMQU5fSExFTiArIEVUSF9EQVRBX0xFTikKPiA+ID4g ICNkZWZpbmUgR09PRF9DT1BZX0xFTiAgMTI4Cj4gPiA+IEBAIC0xNTksNiArMTYyLDkgQEAgc3Ry dWN0IHJlY2VpdmVfcXVldWUgewo+ID4gPiAgICAgICAgIC8qIENoYWluIHBhZ2VzIGJ5IHRoZSBw cml2YXRlIHB0ci4gKi8KPiA+ID4gICAgICAgICBzdHJ1Y3QgcGFnZSAqcGFnZXM7Cj4gPiA+Cj4g PiA+ICsgICAgICAgLyogUGFnZSBwb29sICovCj4gPiA+ICsgICAgICAgc3RydWN0IHBhZ2VfcG9v bCAqcGFnZV9wb29sOwo+ID4gPiArCj4gPiA+ICAgICAgICAgLyogQXZlcmFnZSBwYWNrZXQgbGVu Z3RoIGZvciBtZXJnZWFibGUgcmVjZWl2ZSBidWZmZXJzLiAqLwo+ID4gPiAgICAgICAgIHN0cnVj dCBld21hX3BrdF9sZW4gbXJnX2F2Z19wa3RfbGVuOwo+ID4gPgo+ID4gPiBAQCAtNDU5LDYgKzQ2 NSwxNCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnZpcnRuZXRfYnVpbGRfc2tiKHZvaWQgKmJ1 ZiwgdW5zaWduZWQgaW50IGJ1ZmxlbiwKPiA+ID4gICAgICAgICByZXR1cm4gc2tiOwo+ID4gPiAg fQo+ID4gPgo+ID4gPiArc3RhdGljIHZvaWQgdmlydG5ldF9wdXRfcGFnZShzdHJ1Y3QgcmVjZWl2 ZV9xdWV1ZSAqcnEsIHN0cnVjdCBwYWdlICpwYWdlKQo+ID4gPiArewo+ID4gPiArICAgICAgIGlm IChycS0+cGFnZV9wb29sKQo+ID4gPiArICAgICAgICAgICAgICAgcGFnZV9wb29sX3B1dF9mdWxs X3BhZ2UocnEtPnBhZ2VfcG9vbCwgcGFnZSwgdHJ1ZSk7Cj4gPiA+ICsgICAgICAgZWxzZQo+ID4g PiArICAgICAgICAgICAgICAgcHV0X3BhZ2UocGFnZSk7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4g IC8qIENhbGxlZCBmcm9tIGJvdHRvbSBoYWxmIGNvbnRleHQgKi8KPiA+ID4gIHN0YXRpYyBzdHJ1 Y3Qgc2tfYnVmZiAqcGFnZV90b19za2Ioc3RydWN0IHZpcnRuZXRfaW5mbyAqdmksCj4gPiA+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJlY2VpdmVfcXVldWUgKnJx LAo+ID4gPiBAQCAtNTU1LDcgKzU2OSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcGFnZV90 b19za2Ioc3RydWN0IHZpcnRuZXRfaW5mbyAqdmksCj4gPiA+ICAgICAgICAgaGRyID0gc2tiX3Zu ZXRfaGRyKHNrYik7Cj4gPiA+ICAgICAgICAgbWVtY3B5KGhkciwgaGRyX3AsIGhkcl9sZW4pOwo+ ID4gPiAgICAgICAgIGlmIChwYWdlX3RvX2ZyZWUpCj4gPiA+IC0gICAgICAgICAgICAgICBwdXRf cGFnZShwYWdlX3RvX2ZyZWUpOwo+ID4gPiArICAgICAgICAgICAgICAgdmlydG5ldF9wdXRfcGFn ZShycSwgcGFnZV90b19mcmVlKTsKPiA+ID4KPiA+ID4gICAgICAgICByZXR1cm4gc2tiOwo+ID4g PiAgfQo+ID4gPiBAQCAtODAyLDcgKzgxNiw3IEBAIHN0YXRpYyBpbnQgdmlydG5ldF94ZHBfeG1p dChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAo+ID4gPiAgICAgICAgIHJldHVybiByZXQ7Cj4gPiA+ ICB9Cj4gPiA+Cj4gPiA+IC1zdGF0aWMgdm9pZCBwdXRfeGRwX2ZyYWdzKHN0cnVjdCB4ZHBfYnVm ZiAqeGRwKQo+ID4gPiArc3RhdGljIHZvaWQgcHV0X3hkcF9mcmFncyhzdHJ1Y3QgeGRwX2J1ZmYg KnhkcCwgc3RydWN0IHJlY2VpdmVfcXVldWUgKnJxKQo+ID4gPiAgewo+ID4KPiA+IHJxIGNvdWxk IGJlIGZldGNoZWQgZnJvbSB4ZHBfcnhxX2luZm8/Cj4gCj4gWWVhaCwgaXQgaGFzIHRoZSBxdWV1 ZV9pbmRleCB0aGVyZS4KPiA+Cj4gPiA+ICAgICAgICAgc3RydWN0IHNrYl9zaGFyZWRfaW5mbyAq c2hpbmZvOwo+ID4gPiAgICAgICAgIHN0cnVjdCBwYWdlICp4ZHBfcGFnZTsKPiA+ID4gQEAgLTgx Miw3ICs4MjYsNyBAQCBzdGF0aWMgdm9pZCBwdXRfeGRwX2ZyYWdzKHN0cnVjdCB4ZHBfYnVmZiAq eGRwKQo+ID4gPiAgICAgICAgICAgICAgICAgc2hpbmZvID0geGRwX2dldF9zaGFyZWRfaW5mb19m cm9tX2J1ZmYoeGRwKTsKPiA+ID4gICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaGlu Zm8tPm5yX2ZyYWdzOyBpKyspIHsKPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgeGRwX3Bh Z2UgPSBza2JfZnJhZ19wYWdlKCZzaGluZm8tPmZyYWdzW2ldKTsKPiA+ID4gLSAgICAgICAgICAg ICAgICAgICAgICAgcHV0X3BhZ2UoeGRwX3BhZ2UpOwo+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICB2aXJ0bmV0X3B1dF9wYWdlKHJxLCB4ZHBfcGFnZSk7Cj4gPiA+ICAgICAgICAgICAgICAg ICB9Cj4gPiA+ICAgICAgICAgfQo+ID4gPiAgfQo+ID4gPiBAQCAtOTAzLDcgKzkxNywxMSBAQCBz dGF0aWMgc3RydWN0IHBhZ2UgKnhkcF9saW5lYXJpemVfcGFnZShzdHJ1Y3QgcmVjZWl2ZV9xdWV1 ZSAqcnEsCj4gPiA+ICAgICAgICAgaWYgKHBhZ2Vfb2ZmICsgKmxlbiArIHRhaWxyb29tID4gUEFH RV9TSVpFKQo+ID4gPiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Cj4gPiA+Cj4gPiA+IC0g ICAgICAgcGFnZSA9IGFsbG9jX3BhZ2UoR0ZQX0FUT01JQyk7Cj4gPiA+ICsgICAgICAgaWYgKHJx LT5wYWdlX3Bvb2wpCj4gPiA+ICsgICAgICAgICAgICAgICBwYWdlID0gcGFnZV9wb29sX2Rldl9h bGxvY19wYWdlcyhycS0+cGFnZV9wb29sKTsKPiA+ID4gKyAgICAgICBlbHNlCj4gPiA+ICsgICAg ICAgICAgICAgICBwYWdlID0gYWxsb2NfcGFnZShHRlBfQVRPTUlDKTsKPiA+ID4gKwo+ID4gPiAg ICAgICAgIGlmICghcGFnZSkKPiA+ID4gICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwo+ID4g Pgo+ID4gPiBAQCAtOTI2LDIxICs5NDQsMjQgQEAgc3RhdGljIHN0cnVjdCBwYWdlICp4ZHBfbGlu ZWFyaXplX3BhZ2Uoc3RydWN0IHJlY2VpdmVfcXVldWUgKnJxLAo+ID4gPiAgICAgICAgICAgICAg ICAgICogaXMgc2VuZGluZyBwYWNrZXQgbGFyZ2VyIHRoYW4gdGhlIE1UVS4KPiA+ID4gICAgICAg ICAgICAgICAgICAqLwo+ID4gPiAgICAgICAgICAgICAgICAgaWYgKChwYWdlX29mZiArIGJ1Zmxl biArIHRhaWxyb29tKSA+IFBBR0VfU0laRSkgewo+ID4gPiAtICAgICAgICAgICAgICAgICAgICAg ICBwdXRfcGFnZShwKTsKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgdmlydG5ldF9wdXRf cGFnZShycSwgcCk7Cj4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyX2J1ZjsK PiA+ID4gICAgICAgICAgICAgICAgIH0KPiA+ID4KPiA+ID4gICAgICAgICAgICAgICAgIG1lbWNw eShwYWdlX2FkZHJlc3MocGFnZSkgKyBwYWdlX29mZiwKPiA+ID4gICAgICAgICAgICAgICAgICAg ICAgICBwYWdlX2FkZHJlc3MocCkgKyBvZmYsIGJ1Zmxlbik7Cj4gPiA+ICAgICAgICAgICAgICAg ICBwYWdlX29mZiArPSBidWZsZW47Cj4gPiA+IC0gICAgICAgICAgICAgICBwdXRfcGFnZShwKTsK PiA+ID4gKyAgICAgICAgICAgICAgIHZpcnRuZXRfcHV0X3BhZ2UocnEsIHApOwo+ID4gPiAgICAg ICAgIH0KPiA+ID4KPiA+ID4gICAgICAgICAvKiBIZWFkcm9vbSBkb2VzIG5vdCBjb250cmlidXRl IHRvIHBhY2tldCBsZW5ndGggKi8KPiA+ID4gICAgICAgICAqbGVuID0gcGFnZV9vZmYgLSBWSVJU SU9fWERQX0hFQURST09NOwo+ID4gPiAgICAgICAgIHJldHVybiBwYWdlOwo+ID4gPiAgZXJyX2J1 ZjoKPiA+ID4gLSAgICAgICBfX2ZyZWVfcGFnZXMocGFnZSwgMCk7Cj4gPiA+ICsgICAgICAgaWYg KHJxLT5wYWdlX3Bvb2wpCj4gPiA+ICsgICAgICAgICAgICAgICBwYWdlX3Bvb2xfcHV0X2Z1bGxf cGFnZShycS0+cGFnZV9wb29sLCBwYWdlLCB0cnVlKTsKPiA+ID4gKyAgICAgICBlbHNlCj4gPiA+ ICsgICAgICAgICAgICAgICBfX2ZyZWVfcGFnZXMocGFnZSwgMCk7Cj4gPiA+ICAgICAgICAgcmV0 dXJuIE5VTEw7Cj4gPiA+ICB9Cj4gPiA+Cj4gPiA+IEBAIC0xMTQ0LDcgKzExNjUsNyBAQCBzdGF0 aWMgdm9pZCBtZXJnZWFibGVfYnVmX2ZyZWUoc3RydWN0IHJlY2VpdmVfcXVldWUgKnJxLCBpbnQg bnVtX2J1ZiwKPiA+ID4gICAgICAgICAgICAgICAgIH0KPiA+ID4gICAgICAgICAgICAgICAgIHN0 YXRzLT5ieXRlcyArPSBsZW47Cj4gPiA+ICAgICAgICAgICAgICAgICBwYWdlID0gdmlydF90b19o ZWFkX3BhZ2UoYnVmKTsKPiA+ID4gLSAgICAgICAgICAgICAgIHB1dF9wYWdlKHBhZ2UpOwo+ID4g PiArICAgICAgICAgICAgICAgdmlydG5ldF9wdXRfcGFnZShycSwgcGFnZSk7Cj4gPiA+ICAgICAg ICAgfQo+ID4gPiAgfQo+ID4gPgo+ID4gPiBAQCAtMTI2NCw3ICsxMjg1LDcgQEAgc3RhdGljIGlu dCB2aXJ0bmV0X2J1aWxkX3hkcF9idWZmX21yZyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAo+ID4g PiAgICAgICAgICAgICAgICAgY3VyX2ZyYWdfc2l6ZSA9IHRydWVzaXplOwo+ID4gPiAgICAgICAg ICAgICAgICAgeGRwX2ZyYWdzX3RydWVzeiArPSBjdXJfZnJhZ19zaXplOwo+ID4gPiAgICAgICAg ICAgICAgICAgaWYgKHVubGlrZWx5KGxlbiA+IHRydWVzaXplIC0gcm9vbSB8fCBjdXJfZnJhZ19z aXplID4gUEFHRV9TSVpFKSkgewo+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICBwdXRfcGFn ZShwYWdlKTsKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgdmlydG5ldF9wdXRfcGFnZShy cSwgcGFnZSk7Cj4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIHByX2RlYnVnKCIlczogcngg ZXJyb3I6IGxlbiAldSBleGNlZWRzIHRydWVzaXplICVsdVxuIiwKPiA+ID4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZGV2LT5uYW1lLCBsZW4sICh1bnNpZ25lZCBsb25nKSh0cnVl c2l6ZSAtIHJvb20pKTsKPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgZGV2LT5zdGF0cy5y eF9sZW5ndGhfZXJyb3JzKys7Cj4gPiA+IEBAIC0xMjgzLDcgKzEzMDQsNyBAQCBzdGF0aWMgaW50 IHZpcnRuZXRfYnVpbGRfeGRwX2J1ZmZfbXJnKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCj4gPiA+ ICAgICAgICAgcmV0dXJuIDA7Cj4gPiA+Cj4gPiA+ICBlcnI6Cj4gPiA+IC0gICAgICAgcHV0X3hk cF9mcmFncyh4ZHApOwo+ID4gPiArICAgICAgIHB1dF94ZHBfZnJhZ3MoeGRwLCBycSk7Cj4gPiA+ ICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gPiA+ICB9Cj4gPiA+Cj4gPiA+IEBAIC0xMzQ0LDcg KzEzNjUsMTAgQEAgc3RhdGljIHZvaWQgKm1lcmdlYWJsZV94ZHBfZ2V0X2J1ZihzdHJ1Y3Qgdmly dG5ldF9pbmZvICp2aSwKPiA+ID4gICAgICAgICAgICAgICAgIGlmICgqbGVuICsgeGRwX3Jvb20g PiBQQUdFX1NJWkUpCj4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwo+ ID4gPgo+ID4gPiAtICAgICAgICAgICAgICAgeGRwX3BhZ2UgPSBhbGxvY19wYWdlKEdGUF9BVE9N SUMpOwo+ID4gPiArICAgICAgICAgICAgICAgaWYgKHJxLT5wYWdlX3Bvb2wpCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgIHhkcF9wYWdlID0gcGFnZV9wb29sX2Rldl9hbGxvY19wYWdlcyhy cS0+cGFnZV9wb29sKTsKPiA+ID4gKyAgICAgICAgICAgICAgIGVsc2UKPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgeGRwX3BhZ2UgPSBhbGxvY19wYWdlKEdGUF9BVE9NSUMpOwo+ID4gPiAg ICAgICAgICAgICAgICAgaWYgKCF4ZHBfcGFnZSkKPiA+ID4gICAgICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIE5VTEw7Cj4gPiA+Cj4gPiA+IEBAIC0xMzU0LDcgKzEzNzgsNyBAQCBzdGF0aWMg dm9pZCAqbWVyZ2VhYmxlX3hkcF9nZXRfYnVmKHN0cnVjdCB2aXJ0bmV0X2luZm8gKnZpLAo+ID4g Pgo+ID4gPiAgICAgICAgICpmcmFtZV9zeiA9IFBBR0VfU0laRTsKPiA+ID4KPiA+ID4gLSAgICAg ICBwdXRfcGFnZSgqcGFnZSk7Cj4gPiA+ICsgICAgICAgdmlydG5ldF9wdXRfcGFnZShycSwgKnBh Z2UpOwo+ID4gPgo+ID4gPiAgICAgICAgICpwYWdlID0geGRwX3BhZ2U7Cj4gPiA+Cj4gPiA+IEBA IC0xNDAwLDYgKzE0MjQsOCBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnJlY2VpdmVfbWVyZ2Vh YmxlX3hkcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAo+ID4gPiAgICAgICAgICAgICAgICAgaGVh ZF9za2IgPSBidWlsZF9za2JfZnJvbV94ZHBfYnVmZihkZXYsIHZpLCAmeGRwLCB4ZHBfZnJhZ3Nf dHJ1ZXN6KTsKPiA+ID4gICAgICAgICAgICAgICAgIGlmICh1bmxpa2VseSghaGVhZF9za2IpKQo+ ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPiA+ID4gKyAgICAgICAgICAgICAg IGlmIChycS0+cGFnZV9wb29sKQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICBza2JfbWFy a19mb3JfcmVjeWNsZShoZWFkX3NrYik7Cj4gPiA+ICAgICAgICAgICAgICAgICByZXR1cm4gaGVh ZF9za2I7Cj4gPiA+Cj4gPiA+ICAgICAgICAgY2FzZSBYRFBfVFg6Cj4gPiA+IEBAIC0xNDEwLDEw ICsxNDM2LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcmVjZWl2ZV9tZXJnZWFibGVfeGRw KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCj4gPiA+ICAgICAgICAgICAgICAgICBicmVhazsKPiA+ ID4gICAgICAgICB9Cj4gPiA+Cj4gPiA+IC0gICAgICAgcHV0X3hkcF9mcmFncygmeGRwKTsKPiA+ ID4gKyAgICAgICBwdXRfeGRwX2ZyYWdzKCZ4ZHAsIHJxKTsKPiA+ID4KPiA+ID4gIGVycl94ZHA6 Cj4gPiA+IC0gICAgICAgcHV0X3BhZ2UocGFnZSk7Cj4gPiA+ICsgICAgICAgdmlydG5ldF9wdXRf cGFnZShycSwgcGFnZSk7Cj4gPiA+ICAgICAgICAgbWVyZ2VhYmxlX2J1Zl9mcmVlKHJxLCBudW1f YnVmLCBkZXYsIHN0YXRzKTsKPiA+ID4KPiA+ID4gICAgICAgICBzdGF0cy0+eGRwX2Ryb3BzKys7 Cj4gPiA+IEBAIC0xNDY3LDYgKzE0OTMsOSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnJlY2Vp dmVfbWVyZ2VhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCj4gPiA+ICAgICAgICAgaGVhZF9z a2IgPSBwYWdlX3RvX3NrYih2aSwgcnEsIHBhZ2UsIG9mZnNldCwgbGVuLCB0cnVlc2l6ZSwgaGVh ZHJvb20pOwo+ID4gPiAgICAgICAgIGN1cnJfc2tiID0gaGVhZF9za2I7Cj4gPiA+Cj4gPiA+ICsg ICAgICAgaWYgKHJxLT5wYWdlX3Bvb2wpCj4gPiA+ICsgICAgICAgICAgICAgICBza2JfbWFya19m b3JfcmVjeWNsZShjdXJyX3NrYik7Cj4gPiA+ICsKPiA+ID4gICAgICAgICBpZiAodW5saWtlbHko IWN1cnJfc2tiKSkKPiA+ID4gICAgICAgICAgICAgICAgIGdvdG8gZXJyX3NrYjsKPiA+ID4gICAg ICAgICB3aGlsZSAoLS1udW1fYnVmKSB7Cj4gPiA+IEBAIC0xNTA5LDYgKzE1MzgsOCBAQCBzdGF0 aWMgc3RydWN0IHNrX2J1ZmYgKnJlY2VpdmVfbWVyZ2VhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpk ZXYsCj4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJfc2tiID0gbnNrYjsKPiA+ID4g ICAgICAgICAgICAgICAgICAgICAgICAgaGVhZF9za2ItPnRydWVzaXplICs9IG5za2ItPnRydWVz aXplOwo+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICBudW1fc2tiX2ZyYWdzID0gMDsKPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJxLT5wYWdlX3Bvb2wpCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tiX21hcmtfZm9yX3JlY3ljbGUoY3Vycl9za2Ip Owo+ID4gPiAgICAgICAgICAgICAgICAgfQo+ID4gPiAgICAgICAgICAgICAgICAgaWYgKGN1cnJf c2tiICE9IGhlYWRfc2tiKSB7Cj4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRfc2ti LT5kYXRhX2xlbiArPSBsZW47Cj4gPiA+IEBAIC0xNTE3LDcgKzE1NDgsNyBAQCBzdGF0aWMgc3Ry dWN0IHNrX2J1ZmYgKnJlY2VpdmVfbWVyZ2VhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCj4g PiA+ICAgICAgICAgICAgICAgICB9Cj4gPiA+ICAgICAgICAgICAgICAgICBvZmZzZXQgPSBidWYg LSBwYWdlX2FkZHJlc3MocGFnZSk7Cj4gPiA+ICAgICAgICAgICAgICAgICBpZiAoc2tiX2Nhbl9j b2FsZXNjZShjdXJyX3NrYiwgbnVtX3NrYl9mcmFncywgcGFnZSwgb2Zmc2V0KSkgewo+ID4gPiAt ICAgICAgICAgICAgICAgICAgICAgICBwdXRfcGFnZShwYWdlKTsKPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgdmlydG5ldF9wdXRfcGFnZShycSwgcGFnZSk7Cj4gPgo+ID4gSSB3b25kZXIg d2h5IG5vdCB3ZSBjYW4ndCBkbyB0aGlzIGR1cmluZyBidWZmZXIgYWxsb2NhdGlvbiBsaWtlIG90 aGVyIGRyaXZlcnM/Cj4gPgo+IAo+IFNvcnJ5LCBJIGRvbid0IHF1aXRlIHVuZGVyc3RhbmQgdGhl IHBvaW50IGhlcmUuIFdvdWxkIHlvdSBwbGVhc2UKPiBlbGFib3JhdGUgYSBiaXQgbW9yZT8KPiA+ ID4gICAgICAgICAgICAgICAgICAgICAgICAgc2tiX2NvYWxlc2NlX3J4X2ZyYWcoY3Vycl9za2Is IG51bV9za2JfZnJhZ3MgLSAxLAo+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBsZW4sIHRydWVzaXplKTsKPiA+ID4gICAgICAgICAgICAgICAgIH0gZWxz ZSB7Cj4gPiA+IEBAIC0xNTMwLDcgKzE1NjEsNyBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnJl Y2VpdmVfbWVyZ2VhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCj4gPiA+ICAgICAgICAgcmV0 dXJuIGhlYWRfc2tiOwo+ID4gPgo+ID4gPiAgZXJyX3NrYjoKPiA+ID4gLSAgICAgICBwdXRfcGFn ZShwYWdlKTsKPiA+ID4gKyAgICAgICB2aXJ0bmV0X3B1dF9wYWdlKHJxLCBwYWdlKTsKPiA+ID4g ICAgICAgICBtZXJnZWFibGVfYnVmX2ZyZWUocnEsIG51bV9idWYsIGRldiwgc3RhdHMpOwo+ID4g Pgo+ID4gPiAgZXJyX2J1ZjoKPiA+ID4gQEAgLTE3MzcsMzEgKzE3NjgsNDAgQEAgc3RhdGljIGlu dCBhZGRfcmVjdmJ1Zl9tZXJnZWFibGUoc3RydWN0IHZpcnRuZXRfaW5mbyAqdmksCj4gPiA+ICAg ICAgICAgICogZGlzYWJsZWQgR1NPIGZvciBYRFAsIGl0IHdvbid0IGJlIGEgYmlnIGlzc3VlLgo+ ID4gPiAgICAgICAgICAqLwo+ID4gPiAgICAgICAgIGxlbiA9IGdldF9tZXJnZWFibGVfYnVmX2xl bihycSwgJnJxLT5tcmdfYXZnX3BrdF9sZW4sIHJvb20pOwo+ID4gPiAtICAgICAgIGlmICh1bmxp a2VseSghc2tiX3BhZ2VfZnJhZ19yZWZpbGwobGVuICsgcm9vbSwgYWxsb2NfZnJhZywgZ2ZwKSkp Cj4gPiA+IC0gICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKPiA+ID4gKyAgICAgICBpZiAo cnEtPnBhZ2VfcG9vbCkgewo+ID4gPiArICAgICAgICAgICAgICAgc3RydWN0IHBhZ2UgKnBhZ2U7 Cj4gPiA+Cj4gPiA+IC0gICAgICAgYnVmID0gKGNoYXIgKilwYWdlX2FkZHJlc3MoYWxsb2NfZnJh Zy0+cGFnZSkgKyBhbGxvY19mcmFnLT5vZmZzZXQ7Cj4gPiA+IC0gICAgICAgYnVmICs9IGhlYWRy b29tOyAvKiBhZHZhbmNlIGFkZHJlc3MgbGVhdmluZyBob2xlIGF0IGZyb250IG9mIHBrdCAqLwo+ ID4gPiAtICAgICAgIGdldF9wYWdlKGFsbG9jX2ZyYWctPnBhZ2UpOwo+ID4gPiAtICAgICAgIGFs bG9jX2ZyYWctPm9mZnNldCArPSBsZW4gKyByb29tOwo+ID4gPiAtICAgICAgIGhvbGUgPSBhbGxv Y19mcmFnLT5zaXplIC0gYWxsb2NfZnJhZy0+b2Zmc2V0Owo+ID4gPiAtICAgICAgIGlmIChob2xl IDwgbGVuICsgcm9vbSkgewo+ID4gPiAtICAgICAgICAgICAgICAgLyogVG8gYXZvaWQgaW50ZXJu YWwgZnJhZ21lbnRhdGlvbiwgaWYgdGhlcmUgaXMgdmVyeSBsaWtlbHkgbm90Cj4gPiA+IC0gICAg ICAgICAgICAgICAgKiBlbm91Z2ggc3BhY2UgZm9yIGFub3RoZXIgYnVmZmVyLCBhZGQgdGhlIHJl bWFpbmluZyBzcGFjZSB0bwo+ID4gPiAtICAgICAgICAgICAgICAgICogdGhlIGN1cnJlbnQgYnVm ZmVyLgo+ID4gPiAtICAgICAgICAgICAgICAgICogWERQIGNvcmUgYXNzdW1lcyB0aGF0IGZyYW1l X3NpemUgb2YgeGRwX2J1ZmYgYW5kIHRoZSBsZW5ndGgKPiA+ID4gLSAgICAgICAgICAgICAgICAq IG9mIHRoZSBmcmFnIGFyZSBQQUdFX1NJWkUsIHNvIHdlIGRpc2FibGUgdGhlIGhvbGUgbWVjaGFu aXNtLgo+ID4gPiAtICAgICAgICAgICAgICAgICovCj4gPiA+IC0gICAgICAgICAgICAgICBpZiAo IWhlYWRyb29tKQo+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICBsZW4gKz0gaG9sZTsKPiA+ ID4gLSAgICAgICAgICAgICAgIGFsbG9jX2ZyYWctPm9mZnNldCArPSBob2xlOwo+ID4gPiAtICAg ICAgIH0KPiA+ID4gKyAgICAgICAgICAgICAgIHBhZ2UgPSBwYWdlX3Bvb2xfZGV2X2FsbG9jX3Bh Z2VzKHJxLT5wYWdlX3Bvb2wpOwo+ID4gPiArICAgICAgICAgICAgICAgaWYgKHVubGlrZWx5KCFw YWdlKSkKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4gPiA+ ICsgICAgICAgICAgICAgICBidWYgPSAoY2hhciAqKXBhZ2VfYWRkcmVzcyhwYWdlKTsKPiA+ID4g KyAgICAgICAgICAgICAgIGJ1ZiArPSBoZWFkcm9vbTsgLyogYWR2YW5jZSBhZGRyZXNzIGxlYXZp bmcgaG9sZSBhdCBmcm9udCBvZiBwa3QgKi8KPiA+ID4gKyAgICAgICB9IGVsc2Ugewo+ID4gPiAr ICAgICAgICAgICAgICAgaWYgKHVubGlrZWx5KCFza2JfcGFnZV9mcmFnX3JlZmlsbChsZW4gKyBy b29tLCBhbGxvY19mcmFnLCBnZnApKSkKPiA+Cj4gPiBXaHkgbm90IHNpbXBseSB1c2UgYSBoZWxw ZXIgbGlrZSB2aXJ0bmV0X3BhZ2VfZnJhZ19yZWZpbGwoKSBhbmQgYWRkCj4gPiB0aGUgcGFnZV9w b29sIGFsbG9jYXRpb24gbG9naWMgdGhlcmU/IEl0IGhlbHBzIHRvIHJlZHVjZSB0aGUKPiA+IGNo YW5nZXNldC4KPiA+Cj4gCj4gU3VyZS4gV2lsbCBkbyB0aGF0IG9uIHYyLgo+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKPiA+ID4KPiA+ID4gKyAgICAgICAgICAg ICAgIGJ1ZiA9IChjaGFyICopcGFnZV9hZGRyZXNzKGFsbG9jX2ZyYWctPnBhZ2UpICsgYWxsb2Nf ZnJhZy0+b2Zmc2V0Owo+ID4gPiArICAgICAgICAgICAgICAgYnVmICs9IGhlYWRyb29tOyAvKiBh ZHZhbmNlIGFkZHJlc3MgbGVhdmluZyBob2xlIGF0IGZyb250IG9mIHBrdCAqLwo+ID4gPiArICAg ICAgICAgICAgICAgZ2V0X3BhZ2UoYWxsb2NfZnJhZy0+cGFnZSk7Cj4gPiA+ICsgICAgICAgICAg ICAgICBhbGxvY19mcmFnLT5vZmZzZXQgKz0gbGVuICsgcm9vbTsKPiA+ID4gKyAgICAgICAgICAg ICAgIGhvbGUgPSBhbGxvY19mcmFnLT5zaXplIC0gYWxsb2NfZnJhZy0+b2Zmc2V0Owo+ID4gPiAr ICAgICAgICAgICAgICAgaWYgKGhvbGUgPCBsZW4gKyByb29tKSB7Cj4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgIC8qIFRvIGF2b2lkIGludGVybmFsIGZyYWdtZW50YXRpb24sIGlmIHRoZXJl IGlzIHZlcnkgbGlrZWx5IG5vdAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgKiBlbm91 Z2ggc3BhY2UgZm9yIGFub3RoZXIgYnVmZmVyLCBhZGQgdGhlIHJlbWFpbmluZyBzcGFjZSB0bwo+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgY3VycmVudCBidWZmZXIuCj4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAqIFhEUCBjb3JlIGFzc3VtZXMgdGhhdCBmcmFtZV9z aXplIG9mIHhkcF9idWZmIGFuZCB0aGUgbGVuZ3RoCj4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAqIG9mIHRoZSBmcmFnIGFyZSBQQUdFX1NJWkUsIHNvIHdlIGRpc2FibGUgdGhlIGhvbGUg bWVjaGFuaXNtLgo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgKi8KPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgaWYgKCFoZWFkcm9vbSkKPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBsZW4gKz0gaG9sZTsKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg YWxsb2NfZnJhZy0+b2Zmc2V0ICs9IGhvbGU7Cj4gPiA+ICsgICAgICAgICAgICAgICB9Cj4gPiA+ ICsgICAgICAgfQo+ID4gPiAgICAgICAgIHNnX2luaXRfb25lKHJxLT5zZywgYnVmLCBsZW4pOwo+ ID4gPiAgICAgICAgIGN0eCA9IG1lcmdlYWJsZV9sZW5fdG9fY3R4KGxlbiArIHJvb20sIGhlYWRy b29tKTsKPiA+ID4gICAgICAgICBlcnIgPSB2aXJ0cXVldWVfYWRkX2luYnVmX2N0eChycS0+dnEs IHJxLT5zZywgMSwgYnVmLCBjdHgsIGdmcCk7Cj4gPiA+ICAgICAgICAgaWYgKGVyciA8IDApCj4g PiA+IC0gICAgICAgICAgICAgICBwdXRfcGFnZSh2aXJ0X3RvX2hlYWRfcGFnZShidWYpKTsKPiA+ ID4gKyAgICAgICAgICAgICAgIHZpcnRuZXRfcHV0X3BhZ2UocnEsIHZpcnRfdG9faGVhZF9wYWdl KGJ1ZikpOwo+ID4gPgo+ID4gPiAgICAgICAgIHJldHVybiBlcnI7Cj4gPiA+ICB9Cj4gPiA+IEBA IC0xOTk0LDggKzIwMzQsMTUgQEAgc3RhdGljIGludCB2aXJ0bmV0X2VuYWJsZV9xdWV1ZV9wYWly KHN0cnVjdCB2aXJ0bmV0X2luZm8gKnZpLCBpbnQgcXBfaW5kZXgpCj4gPiA+ICAgICAgICAgaWYg KGVyciA8IDApCj4gPiA+ICAgICAgICAgICAgICAgICByZXR1cm4gZXJyOwo+ID4gPgo+ID4gPiAt ICAgICAgIGVyciA9IHhkcF9yeHFfaW5mb19yZWdfbWVtX21vZGVsKCZ2aS0+cnFbcXBfaW5kZXhd LnhkcF9yeHEsCj4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TUVNX1RZUEVfUEFHRV9TSEFSRUQsIE5VTEwpOwo+ID4gPiArICAgICAgIGlmICh2aS0+cnFbcXBf aW5kZXhdLnBhZ2VfcG9vbCkKPiA+ID4gKyAgICAgICAgICAgICAgIGVyciA9IHhkcF9yeHFfaW5m b19yZWdfbWVtX21vZGVsKCZ2aS0+cnFbcXBfaW5kZXhdLnhkcF9yeHEsCj4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRU1fVFlQRV9QQUdFX1BP T0wsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB2aS0+cnFbcXBfaW5kZXhdLnBhZ2VfcG9vbCk7Cj4gPiA+ICsgICAgICAgZWxzZQo+ID4gPiAr ICAgICAgICAgICAgICAgZXJyID0geGRwX3J4cV9pbmZvX3JlZ19tZW1fbW9kZWwoJnZpLT5ycVtx cF9pbmRleF0ueGRwX3J4cSwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE1FTV9UWVBFX1BBR0VfU0hBUkVELAo+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Cj4gPiA+ICsKPiA+ID4g ICAgICAgICBpZiAoZXJyIDwgMCkKPiA+ID4gICAgICAgICAgICAgICAgIGdvdG8gZXJyX3hkcF9y ZWdfbWVtX21vZGVsOwo+ID4gPgo+ID4gPiBAQCAtMjk1MSw2ICsyOTk4LDcgQEAgc3RhdGljIHZv aWQgdmlydG5ldF9nZXRfc3RyaW5ncyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgc3RyaW5n c2V0LCB1OCAqZGF0YSkKPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGh0 b29sX3NwcmludGYoJnAsICJ0eF9xdWV1ZV8ldV8lcyIsIGksCj4gPiA+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpcnRuZXRfc3Ffc3RhdHNfZGVzY1tq XS5kZXNjKTsKPiA+ID4gICAgICAgICAgICAgICAgIH0KPiA+ID4gKyAgICAgICAgICAgICAgIHBh Z2VfcG9vbF9ldGh0b29sX3N0YXRzX2dldF9zdHJpbmdzKHApOwo+ID4gPiAgICAgICAgICAgICAg ICAgYnJlYWs7Cj4gPiA+ICAgICAgICAgfQo+ID4gPiAgfQo+ID4gPiBAQCAtMjk2MiwxMiArMzAx MCwzMCBAQCBzdGF0aWMgaW50IHZpcnRuZXRfZ2V0X3NzZXRfY291bnQoc3RydWN0IG5ldF9kZXZp Y2UgKmRldiwgaW50IHNzZXQpCj4gPiA+ICAgICAgICAgc3dpdGNoIChzc2V0KSB7Cj4gPiA+ICAg ICAgICAgY2FzZSBFVEhfU1NfU1RBVFM6Cj4gPiA+ICAgICAgICAgICAgICAgICByZXR1cm4gdmkt PmN1cnJfcXVldWVfcGFpcnMgKiAoVklSVE5FVF9SUV9TVEFUU19MRU4gKwo+ID4gPiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZJUlRORVRfU1FfU1RBVFNf TEVOKTsKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBWSVJUTkVUX1NRX1NUQVRTX0xFTiArCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChwYWdlX3Bvb2xfZW5hYmxlZCAmJiB2aS0+bWVyZ2VhYmxl X3J4X2J1ZnMgPwo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcGFnZV9wb29sX2V0aHRvb2xfc3RhdHNfZ2V0X2NvdW50KCkgOiAwKSk7Cj4gPiA+ ICAgICAgICAgZGVmYXVsdDoKPiA+ID4gICAgICAgICAgICAgICAgIHJldHVybiAtRU9QTk9UU1VQ UDsKPiA+ID4gICAgICAgICB9Cj4gPiA+ICB9Cj4gPiA+Cj4gPiA+ICtzdGF0aWMgdm9pZCB2aXJ0 bmV0X2dldF9wYWdlX3Bvb2xfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTY0ICpkYXRh KQo+ID4gPiArewo+ID4gPiArI2lmZGVmIENPTkZJR19QQUdFX1BPT0xfU1RBVFMKPiA+ID4gKyAg ICAgICBzdHJ1Y3QgdmlydG5ldF9pbmZvICp2aSA9IG5ldGRldl9wcml2KGRldik7Cj4gPiA+ICsg ICAgICAgc3RydWN0IHBhZ2VfcG9vbF9zdGF0cyBwcF9zdGF0cyA9IHt9Owo+ID4gPiArICAgICAg IGludCBpOwo+ID4gPiArCj4gPiA+ICsgICAgICAgZm9yIChpID0gMDsgaSA8IHZpLT5jdXJyX3F1 ZXVlX3BhaXJzOyBpKyspIHsKPiA+ID4gKyAgICAgICAgICAgICAgIGlmICghdmktPnJxW2ldLnBh Z2VfcG9vbCkKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4gPiA+ICsg ICAgICAgICAgICAgICBwYWdlX3Bvb2xfZ2V0X3N0YXRzKHZpLT5ycVtpXS5wYWdlX3Bvb2wsICZw cF9zdGF0cyk7Cj4gPiA+ICsgICAgICAgfQo+ID4gPiArICAgICAgIHBhZ2VfcG9vbF9ldGh0b29s X3N0YXRzX2dldChkYXRhLCAmcHBfc3RhdHMpOwo+ID4gPiArI2VuZGlmIC8qIENPTkZJR19QQUdF X1BPT0xfU1RBVFMgKi8KPiA+ID4gK30KPiA+ID4gKwo+ID4gPiAgc3RhdGljIHZvaWQgdmlydG5l dF9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAo+ID4gPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBldGh0b29sX3N0YXRzICpzdGF0 cywgdTY0ICpkYXRhKQo+ID4gPiAgewo+ID4gPiBAQCAtMzAwMyw2ICszMDY5LDggQEAgc3RhdGlj IHZvaWQgdmlydG5ldF9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAo+ ID4gPiAgICAgICAgICAgICAgICAgfSB3aGlsZSAodTY0X3N0YXRzX2ZldGNoX3JldHJ5KCZzcS0+ c3RhdHMuc3luY3AsIHN0YXJ0KSk7Cj4gPiA+ICAgICAgICAgICAgICAgICBpZHggKz0gVklSVE5F VF9TUV9TVEFUU19MRU47Cj4gPiA+ICAgICAgICAgfQo+ID4gPiArCj4gPiA+ICsgICAgICAgdmly dG5ldF9nZXRfcGFnZV9wb29sX3N0YXRzKGRldiwgJmRhdGFbaWR4XSk7Cj4gPiA+ICB9Cj4gPiA+ Cj4gPiA+ICBzdGF0aWMgdm9pZCB2aXJ0bmV0X2dldF9jaGFubmVscyhzdHJ1Y3QgbmV0X2Rldmlj ZSAqZGV2LAo+ID4gPiBAQCAtMzYyMyw2ICszNjkxLDggQEAgc3RhdGljIHZvaWQgdmlydG5ldF9m cmVlX3F1ZXVlcyhzdHJ1Y3QgdmlydG5ldF9pbmZvICp2aSkKPiA+ID4gICAgICAgICBmb3IgKGkg PSAwOyBpIDwgdmktPm1heF9xdWV1ZV9wYWlyczsgaSsrKSB7Cj4gPiA+ICAgICAgICAgICAgICAg ICBfX25ldGlmX25hcGlfZGVsKCZ2aS0+cnFbaV0ubmFwaSk7Cj4gPiA+ICAgICAgICAgICAgICAg ICBfX25ldGlmX25hcGlfZGVsKCZ2aS0+c3FbaV0ubmFwaSk7Cj4gPiA+ICsgICAgICAgICAgICAg ICBpZiAodmktPnJxW2ldLnBhZ2VfcG9vbCkKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg cGFnZV9wb29sX2Rlc3Ryb3kodmktPnJxW2ldLnBhZ2VfcG9vbCk7Cj4gPiA+ICAgICAgICAgfQo+ ID4gPgo+ID4gPiAgICAgICAgIC8qIFdlIGNhbGxlZCBfX25ldGlmX25hcGlfZGVsKCksCj4gPiA+ IEBAIC0zNjc5LDEyICszNzQ5LDE5IEBAIHN0YXRpYyB2b2lkIHZpcnRuZXRfcnFfZnJlZV91bnVz ZWRfYnVmKHN0cnVjdCB2aXJ0cXVldWUgKnZxLCB2b2lkICpidWYpCj4gPiA+ICAgICAgICAgc3Ry dWN0IHZpcnRuZXRfaW5mbyAqdmkgPSB2cS0+dmRldi0+cHJpdjsKPiA+ID4gICAgICAgICBpbnQg aSA9IHZxMnJ4cSh2cSk7Cj4gPiA+Cj4gPiA+IC0gICAgICAgaWYgKHZpLT5tZXJnZWFibGVfcnhf YnVmcykKPiA+ID4gLSAgICAgICAgICAgICAgIHB1dF9wYWdlKHZpcnRfdG9faGVhZF9wYWdlKGJ1 ZikpOwo+ID4gPiAtICAgICAgIGVsc2UgaWYgKHZpLT5iaWdfcGFja2V0cykKPiA+ID4gKyAgICAg ICBpZiAodmktPm1lcmdlYWJsZV9yeF9idWZzKSB7Cj4gPiA+ICsgICAgICAgICAgICAgICBpZiAo dmktPnJxW2ldLnBhZ2VfcG9vbCkgewo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICBwYWdl X3Bvb2xfcHV0X2Z1bGxfcGFnZSh2aS0+cnFbaV0ucGFnZV9wb29sLAo+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXJ0X3RvX2hlYWRfcGFnZShi dWYpLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0cnVlKTsKPiA+ID4gKyAgICAgICAgICAgICAgIH0gZWxzZSB7Cj4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgIHB1dF9wYWdlKHZpcnRfdG9faGVhZF9wYWdlKGJ1ZikpOwo+ID4gPiArICAg ICAgICAgICAgICAgfQo+ID4gPiArICAgICAgIH0gZWxzZSBpZiAodmktPmJpZ19wYWNrZXRzKSB7 Cj4gPiA+ICAgICAgICAgICAgICAgICBnaXZlX3BhZ2VzKCZ2aS0+cnFbaV0sIGJ1Zik7Cj4gPgo+ ID4gQW55IHJlYXNvbiBvbmx5IG1lcmdlYWJsZSB3ZXJlIG1vZGlmaWVkIGJ1dCBub3QgZm9yIHNt YWxsIGFuZCBiaWc/Cj4gPgo+ID4gVGhhbmtzCj4gPgo+IAo+IEJpZyBtb2RlIHVzZXMgdGhlIHBh Z2UgY2hhaW4gdG8gcmVjeWNsZSBwYWdlcywgdGh1cyB0aGUgdXNpbmcgb2YKPiAicHJpdmF0ZSIg b2YgdGhlIGJ1ZmZlciBwYWdlLiBJIHdpbGwgdGFrZSBmdXJ0aGVyIGxvb2sgaW50byB0aGF0IHRv Cj4gc2VlIGlmIGl0IGlzIGJldHRlciB0byB1c2UgcGFnZSBwb29sIGluIHRoZXNlIGNhc2VzLiBU aGFua3MhCj4gCj4gCj4gCj4gPiA+IC0gICAgICAgZWxzZQo+ID4gPiArICAgICAgIH0gZWxzZSB7 Cj4gPiA+ICAgICAgICAgICAgICAgICBwdXRfcGFnZSh2aXJ0X3RvX2hlYWRfcGFnZShidWYpKTsK PiA+ID4gKyAgICAgICB9Cj4gPiA+ICB9Cj4gPiA+Cj4gPiA+ICBzdGF0aWMgdm9pZCBmcmVlX3Vu dXNlZF9idWZzKHN0cnVjdCB2aXJ0bmV0X2luZm8gKnZpKQo+ID4gPiBAQCAtMzcxOCw2ICszNzk1 LDI2IEBAIHN0YXRpYyB2b2lkIHZpcnRuZXRfZGVsX3ZxcyhzdHJ1Y3QgdmlydG5ldF9pbmZvICp2 aSkKPiA+ID4gICAgICAgICB2aXJ0bmV0X2ZyZWVfcXVldWVzKHZpKTsKPiA+ID4gIH0KPiA+ID4K PiA+ID4gK3N0YXRpYyB2b2lkIHZpcnRuZXRfYWxsb2NfcGFnZV9wb29sKHN0cnVjdCByZWNlaXZl X3F1ZXVlICpycSkKPiA+ID4gK3sKPiA+ID4gKyAgICAgICBzdHJ1Y3QgdmlydGlvX2RldmljZSAq dmRldiA9IHJxLT52cS0+dmRldjsKPiA+ID4gKwo+ID4gPiArICAgICAgIHN0cnVjdCBwYWdlX3Bv b2xfcGFyYW1zIHBwX3BhcmFtcyA9IHsKPiA+ID4gKyAgICAgICAgICAgICAgIC5vcmRlciA9IDAs Cj4gPiA+ICsgICAgICAgICAgICAgICAucG9vbF9zaXplID0gcnEtPnZxLT5udW1fbWF4LAo+ID4g PiArICAgICAgICAgICAgICAgLm5pZCA9IGRldl90b19ub2RlKHZkZXYtPmRldi5wYXJlbnQpLAo+ ID4gPiArICAgICAgICAgICAgICAgLmRldiA9IHZkZXYtPmRldi5wYXJlbnQsCj4gPiA+ICsgICAg ICAgICAgICAgICAub2Zmc2V0ID0gMCwKPiA+ID4gKyAgICAgICB9Owo+ID4gPiArCj4gPiA+ICsg ICAgICAgcnEtPnBhZ2VfcG9vbCA9IHBhZ2VfcG9vbF9jcmVhdGUoJnBwX3BhcmFtcyk7Cj4gPiA+ ICsgICAgICAgaWYgKElTX0VSUihycS0+cGFnZV9wb29sKSkgewo+ID4gPiArICAgICAgICAgICAg ICAgZGV2X3dhcm4oJnZkZXYtPmRldiwgInBhZ2UgcG9vbCBjcmVhdGlvbiBmYWlsZWQ6ICVsZFxu IiwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgIFBUUl9FUlIocnEtPnBhZ2VfcG9vbCkp Owo+ID4gPiArICAgICAgICAgICAgICAgcnEtPnBhZ2VfcG9vbCA9IE5VTEw7Cj4gPiA+ICsgICAg ICAgfQo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICAvKiBIb3cgbGFyZ2Ugc2hvdWxkIGEgc2luZ2xl IGJ1ZmZlciBiZSBzbyBhIHF1ZXVlIGZ1bGwgb2YgdGhlc2UgY2FuIGZpdCBhdAo+ID4gPiAgICog bGVhc3Qgb25lIGZ1bGwgcGFja2V0Pwo+ID4gPiAgICogTG9naWMgYmVsb3cgYXNzdW1lcyB0aGUg bWVyZ2VhYmxlIGJ1ZmZlciBoZWFkZXIgaXMgdXNlZC4KPiA+ID4gQEAgLTM4MDEsNiArMzg5OCwx MyBAQCBzdGF0aWMgaW50IHZpcnRuZXRfZmluZF92cXMoc3RydWN0IHZpcnRuZXRfaW5mbyAqdmkp Cj4gPiA+ICAgICAgICAgICAgICAgICB2aS0+cnFbaV0udnEgPSB2cXNbcnhxMnZxKGkpXTsKPiA+ ID4gICAgICAgICAgICAgICAgIHZpLT5ycVtpXS5taW5fYnVmX2xlbiA9IG1lcmdlYWJsZV9taW5f YnVmX2xlbih2aSwgdmktPnJxW2ldLnZxKTsKPiA+ID4gICAgICAgICAgICAgICAgIHZpLT5zcVtp XS52cSA9IHZxc1t0eHEydnEoaSldOwo+ID4gPiArCj4gPiA+ICsgICAgICAgICAgICAgICBpZiAo cGFnZV9wb29sX2VuYWJsZWQgJiYgdmktPm1lcmdlYWJsZV9yeF9idWZzKQo+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICB2aXJ0bmV0X2FsbG9jX3BhZ2VfcG9vbCgmdmktPnJxW2ldKTsKPiA+ ID4gKyAgICAgICAgICAgICAgIGVsc2UKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgZGV2 X3dhcm4oJnZpLT52ZGV2LT5kZXYsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJwYWdlIHBvb2wgb25seSBzdXBwb3J0IG1lcmdlYWJsZSBtb2RlXG4iKTsKPiA+ID4gKwo+ ID4gPiAgICAgICAgIH0KPiA+ID4KPiA+ID4gICAgICAgICAvKiBydW4gaGVyZTogcmV0ID09IDAu ICovCj4gPiA+IC0tCj4gPiA+IDIuMzEuMQo+ID4gPgo+ID4KCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fClZpcnR1YWxpemF0aW9uIG1haWxpbmcgbGlzdApW aXJ0dWFsaXphdGlvbkBsaXN0cy5saW51eC1mb3VuZGF0aW9uLm9yZwpodHRwczovL2xpc3RzLmxp bnV4Zm91bmRhdGlvbi5vcmcvbWFpbG1hbi9saXN0aW5mby92aXJ0dWFsaXphdGlvbg==