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=-8.5 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 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 82D6AC433DF for ; Wed, 24 Jun 2020 11:53:16 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 5DF4620857 for ; Wed, 24 Jun 2020 11:53:16 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5DF4620857 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id EFA826EB11; Wed, 24 Jun 2020 11:53:15 +0000 (UTC) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9298C6EB11 for ; Wed, 24 Jun 2020 11:53:14 +0000 (UTC) IronPort-SDR: Cab2Z2wvf6RW+QE53MwtwkIP3T0YFAnFM+k0Ojahp+Usq6Xdz18giVS+jmBUS3uEDZRhjCJKPN t4+kOPlY/PSw== X-IronPort-AV: E=McAfee;i="6000,8403,9661"; a="142653091" X-IronPort-AV: E=Sophos;i="5.75,275,1589266800"; d="scan'208";a="142653091" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Jun 2020 04:53:14 -0700 IronPort-SDR: RZJWBcIDNG0bAiNWf1NCdeNLFeVO/3cCMaEzjc+/ALTHSHuqtd9ebY9+xuvjTuF/eivtGE1hdy 15aNW5VIP2fg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,275,1589266800"; d="scan'208";a="319432199" Received: from kbs1-mobl1.gar.corp.intel.com (HELO [10.215.181.220]) ([10.215.181.220]) by FMSMGA003.fm.intel.com with ESMTP; 24 Jun 2020 04:53:11 -0700 To: =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= References: <20200528053931.29282-1-karthik.b.s@intel.com> <20200528053931.29282-4-karthik.b.s@intel.com> <20200617155719.GN6112@intel.com> From: Karthik B S Message-ID: <5a4f9bfe-6664-e388-6a69-bf5aa89087b9@intel.com> Date: Wed, 24 Jun 2020 17:23:10 +0530 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.8.1 MIME-Version: 1.0 In-Reply-To: <20200617155719.GN6112@intel.com> Content-Language: en-US Subject: Re: [Intel-gfx] [PATCH v3 3/5] drm/i915: Add checks specific to async flips X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: intel-gfx@lists.freedesktop.org, paulo.r.zanoni@intel.com Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" CgpPbiA2LzE3LzIwMjAgOToyNyBQTSwgVmlsbGUgU3lyasOkbMOkIHdyb3RlOgo+IE9uIFRodSwg TWF5IDI4LCAyMDIwIGF0IDExOjA5OjI5QU0gKzA1MzAsIEthcnRoaWsgQiBTIHdyb3RlOgo+PiBT dXBwb3J0IGFkZGVkIG9ubHkgZm9yIGFzeW5jIGZsaXBzIG9uIHByaW1hcnkgcGxhbmUuCj4+IElm IGZsaXAgaXMgcmVxdWVzdGVkIG9uIGFueSBvdGhlciBwbGFuZSwgcmVqZWN0IGl0Lgo+Pgo+PiBN YWtlIHN1cmUgdGhlcmUgaXMgbm8gY2hhbmdlIGluIGZiYywgb2Zmc2V0IGFuZCBmcmFtZWJ1ZmZl ciBtb2RpZmllcnMKPj4gd2hlbiBhc3luYyBmbGlwIGlzIHJlcXVlc3RlZC4KPj4KPj4gSWYgYW55 IG9mIHRoZXNlIGFyZSBtb2RpZmllZCwgcmVqZWN0IGFzeW5jIGZsaXAuCj4+Cj4+IHYyOiAtUmVw bGFjZSBEUk1fRVJST1IgKFBhdWxvKQo+PiAgICAgIC1BZGQgY2hlY2sgZm9yIGNoYW5nZXMgaW4g T0ZGU0VULCBGQkMsIFJDKFBhdWxvKQo+Pgo+PiB2MzogLVJlbW92ZWQgVE9ETyBhcyBiZW5jaG1h cmtpbmcgdGVzdHMgaGF2ZSBiZWVuIHJ1biBub3cuCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IEthcnRo aWsgQiBTIDxrYXJ0aGlrLmIuc0BpbnRlbC5jb20+Cj4+IC0tLQo+PiAgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jIHwgNTUgKysrKysrKysrKysrKysrKysrKysK Pj4gICAxIGZpbGUgY2hhbmdlZCwgNTUgaW5zZXJ0aW9ucygrKQo+Pgo+PiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYwo+PiBpbmRleCBlYjFjMzYwNDMxYWUu LjIzMDdmOTI0NzMyYyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9kaXNwbGF5LmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9kaXNwbGF5LmMKPj4gQEAgLTE0Nzk4LDYgKzE0Nzk4LDUzIEBAIHN0YXRpYyBib29sIGlu dGVsX2NwdV90cmFuc2NvZGVyc19uZWVkX21vZGVzZXQoc3RydWN0IGludGVsX2F0b21pY19zdGF0 ZSAqc3RhdGUsCj4+ICAgCXJldHVybiBmYWxzZTsKPj4gICB9Cj4+ICAgCj4+ICtzdGF0aWMgaW50 IGludGVsX2F0b21pY19jaGVja19hc3luYyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0 ZSkKPj4gK3sKPj4gKwlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKPj4gKwlzdHJ1Y3QgZHJtX3Bs YW5lX3N0YXRlICpwbGFuZV9zdGF0ZTsKPj4gKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xk X2NydGNfc3RhdGUsICpuZXdfY3J0Y19zdGF0ZTsKPj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3Rh dGUgKm5ld19wbGFuZV9zdGF0ZSwgKm9sZF9wbGFuZV9zdGF0ZTsKPj4gKwlzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YzsKPj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lOwo+PiArCWlu dCBpLCBqOwo+PiArCj4+ICsJLypGSVhNRTogQXN5bmMgZmxpcCBpcyBvbmx5IHN1cHBvcnRlZCBm b3IgcHJpbWFyeSBwbGFuZSBjdXJyZW50bHkKPj4gKwkgKiBTdXBwb3J0IGZvciBvdmVybGF5cyB0 byBiZSBhZGRlZC4KPj4gKwkgKi8KPj4gKwlmb3JfZWFjaF9uZXdfcGxhbmVfaW5fc3RhdGUoJnN0 YXRlLT5iYXNlLCBwbGFuZSwgcGxhbmVfc3RhdGUsIGopIHsKPj4gKwkJaWYgKHBsYW5lLT50eXBl ICE9IERSTV9QTEFORV9UWVBFX1BSSU1BUlkpIHsKPiAKPiBJIHRoaW5rIHNrbCsgY2FuIGRvIGFz eW5jIGZsaXBzIG9uIGFueSB1bml2ZXJzYWwgcGxhbmVzLiBFYXJsaWVyCj4gcGxhdGZvcm1zIHdl cmUgbGltaXRlZCB0byBwcmltYXJ5IG9ubHkgSSB0aGluay4gQ2FuJ3QgcmVtZW1iZXIgaWYgZzR4 Cj4gYWxyZWFkeSBoYWQgdXNhYmxlIGFzeW5jIGZsaXAgdmlhIG1taW8uIFByZXR0eSBzdXJlIGF0 IGxlYXN0IGlsaysgaGFkCj4gaXQuCj4gCgpUaGFua3MgZm9yIHRoZSByZXZpZXcuClN1cmUgSSds bCB1cGRhdGUgdGhpcy4KPiBBbHNvIGludGVsXyB0eXBlcyBhcmUgcHJlZmVycmVkLCBzbyB0aGlz IHNob3VsZCB1c2UgdGhvc2UsIGFuZCBJCj4gdGhpbmsgc2luY2Ugd2UncmUgdGFsa2luZyBhYm91 dCBodyBwbGFuZXMgd2Ugc2hvdWxkIHJhdGhlciBjaGVjayBmb3IKPiBQTEFORV9QUklNQVJZIGhl cmUuCgpTdXJlLCBJJ2xsIGNoYW5nZSB0aGlzLgo+IAo+PiArCQkJRFJNX0RFQlVHX0tNUygiQXN5 bmMgZmxpcHMgaXMgTk9UIHN1cHBvcnRlZCBmb3Igbm9uLXByaW1hcnkgcGxhbmVcbiIpOwo+PiAr CQkJcmV0dXJuIC1FSU5WQUw7Cj4+ICsJCX0KPj4gKwl9Cj4+ICsKPj4gKwlmb3JfZWFjaF9vbGRu ZXdfaW50ZWxfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsCj4+ICsJ CQkJCSAgICBuZXdfY3J0Y19zdGF0ZSwgaSkgewo+PiArCQlpZiAob2xkX2NydGNfc3RhdGUtPmVu YWJsZV9mYmMgIT0gbmV3X2NydGNfc3RhdGUtPmVuYWJsZV9mYmMpIHsKPiAKPiBlbmFibGVfZmJj IGlzIGJvcmssIHNvIHRoaXMgcHJvYmFibHkgZG9lc24ndCBkbyBhbnl0aGluZyBwYXJ0aWN1bGFy bHkKPiBzZW5zaWJsZS4KPiAKClN1cmUuIEknbGwgcmVtb3ZlIHRoaXMuCj4+ICsJCQlEUk1fREVC VUdfS01TKCJGQkMgc3RhdHVzIGNhbm5vdCBiZSBjaGFuZ2VkIGluIGFzeW5jIGZsaXBcbiIpOwo+ PiArCQkJcmV0dXJuIC1FSU5WQUw7Cj4+ICsJCX0KPj4gKwl9Cj4+ICsKPj4gKwlmb3JfZWFjaF9v bGRuZXdfaW50ZWxfcGxhbmVfaW5fc3RhdGUoc3RhdGUsIGludGVsX3BsYW5lLCBvbGRfcGxhbmVf c3RhdGUsCj4+ICsJCQkJCSAgICAgbmV3X3BsYW5lX3N0YXRlLCBpKSB7Cj4+ICsJCWlmICgob2xk X3BsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVswXS54ICE9Cj4+ICsJCSAgICAgbmV3X3BsYW5lX3N0 YXRlLT5jb2xvcl9wbGFuZVswXS54KSB8fAo+PiArCQkgICAgKG9sZF9wbGFuZV9zdGF0ZS0+Y29s b3JfcGxhbmVbMF0ueSAhPQo+PiArCQkgICAgIG5ld19wbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVb MF0ueSkpIHsKPiAKPiBEb24ndCB0aGluayB3ZSd2ZSBldmVuIGNhbGN1bGF0ZWQgdGhvc2UgYnkg dGhlIHRpbWUgeW91IGNhbGwgdGhpcy4gU28KPiB0aGlzIHN0dWZmIGhhcyB0byBiZSBjYWxsZWQg bXVjaCBsYXRlciBJIHRoaW5rLgo+IAoKU3VyZS4gSSdsbCBjaGVjayB0aGlzIGFuZCBtb3ZlIGl0 IHRvIHRoZSByaWdodCBwbGFjZS4KCj4+ICsJCQlEUk1fREVCVUdfS01TKCJPZmZzZXRzIGNhbm5v dCBiZSBjaGFuZ2VkIGluIGFzeW5jXG4iKTsKPj4gKwkJCXJldHVybiAtRUlOVkFMOwo+PiArCQl9 Cj4+ICsKPj4gKwkJaWYgKG9sZF9wbGFuZV9zdGF0ZS0+dWFwaS5mYi0+bW9kaWZpZXIgIT0KPj4g KwkJICAgIG5ld19wbGFuZV9zdGF0ZS0+dWFwaS5mYi0+bW9kaWZpZXIpIHsKPiAKPiBXZSBzZWVt IHRvIGJlIG1pc3NpbmcgYSBsb3Qgb2Ygc3RhdGUgaGVyZS4gQmFzaWNhbGx5IEkgdGhpbmsgYXN5 bmMgZmxpcAo+IGNhbiAqb25seSogY2hhbmdlIHRoZSBwbGFuZSBzdXJmYWNlIGFkZHJlc3MsIHNv IGFueXRoaW5nIGVsc2UgY2hhbmdpbmcKPiB3ZSBzaG91bGQgcmVqZWN0LiBJIGd1ZXNzIGlmIHRo aXMgY29tZXMgaW4gdmlhIHRoZSBsZWdhY3kgcGFnZSBmbGlwIHBhdGgKPiB0aGUgY29kZS9oZWxw ZXJzIGRvIHByZXZlbnQgbW9zdCBvdGhlciB0aGluZ3MgY2hhbmdpbmcsIGJ1dCBub3Qgc3VyZS4K PiBJIGRvbid0IHJlYWxseSBsaWtlIHJlbHlpbmcgb24gc3VjaCBjb3JlIGNoZWNrcyBzaW5jZSBz b21lb25lIGNvdWxkCj4gYmxpbmRseSBleHBvc2UgdGhpcyB2aWEgdGhlIGF0b21pYyBpb2N0bCB3 aXRob3V0IGhhdmluZyB0aG9zZSBzYW1lCj4gcmVzdHJpY3Rpb25zIGluIHBsYWNlLgo+IAoKWWVz LiBJIGhhdmUgbm90IGFkZGVkIHRoZSBjaGVja3Mgd2hpY2ggd2VyZSBwcmVzZW50IGluIHRoZSBs ZWdhY3kgcGFnZSAKZmxpcCBwYXRoLiBEb2VzIGl0IG1lYW4gdGhhdCBJIHNob3VsZCBhZGQgdGhv c2UgY2hlY2tzIGFsc28gaW4gaGVyZT8gT3IgCkFtIEkgbWlzc2luZyBzb21ldGhpbmcgaW4gdW5k ZXJzdGFuZGluZyB0aGUgY29tbWVudD8gSXMgdGhlcmUgYW55IG90aGVyIAp3YXkgdG8gbWFrZSBz dXJlIG9ubHkgdGhlIHBsYW5lIHN1cmZhY2UgYWRkcmVzcyBpcyBjaGFuZ2luZy4KCj4gV2UgbWln aHQgYWxzbyB3YW50IGEgZGVkaWNhdGVkIHBsYW5lIGhvb2sgZm9yIGFzeW5jIGZsaXBzIHNpbmNl IHdyaXRpbmcKPiBhbGwgdGhlIHBsYW5lIHJlZ2lzdGVycyBmb3IgdGhlc2UgaXMgcmF0aGVyIHBv aW50bGVzcy4gSSdtIG5vdCBldmVuIHN1cmUKPiB3aGF0IGhhcHBlbnMgd2l0aCBhbGwgdGhlIG90 aGVyIGRvdWJsZSBidWZmZXJlZCByZWdpc3RlcnMgaWYgeW91IHdyaXRlCj4gdGhlbSBhbmQgdGhl biBkbyBhbiBhc3luYyBzdXJmYWNlIGFkZHJlc3MgdXBkYXRlLgo+CgpTdXJlLiBJJ2xsIG1ha2Ug YSBkZWRpY2F0ZWQgcGxhbmUgaG9vayBmb3IgYXN5bmMgZmxpcHMgc28gdGhhdCB3ZSBvbmx5IAp1 cGRhdGUgdGhlIFN1cmZhY2UgYWRkcmVzcyByZWdpc3RlciBoZXJlLgoKPiBBbHNvIGlmIHdlIHdh bnQgbW9yZSBhY2N1cmF0ZSB0aW1lc3RtYXBzIGJhc2VkIG9uIHRoZSBmbGlwIHRpbWVzdGFtcAo+ IHJlZ2lzdGVyIHRoZW4gd2UncmUgZ29pbmcgdG8gaGF2ZSB0byBsaW1pdCBhc3luYyBmbGlwcyB0 byBzaW5nbGUgcGxhbmUKPiBwZXIgcGlwZSBhdCBhIHRpbWUgYmVjYXN1ZSB0aGUgdGltZXN0YW1w IGNhbiBvbmx5IGJlIHNhbXBsZWQgZnJvbQo+IGEgc2luZ2xlIHBsYW5lLgo+IAoKU3VyZS4gSSds bCBtYWtlIHN1cmUgYXN5bmMgZmxpcHMgYXJlIGxpbWl0ZWQgdG8gYSBzaW5nbGUgcGxhbmUgcGVy IHBpcGUuCgo+PiArCQkJRFJNX0RFQlVHX0tNUygiRnJhbWVidWZmZXIgbW9kaWZpZXJzIGNhbm5v dCBiZSBjaGFuZ2VkIGluIGFzeW5jIGZsaXBcbiIpOwo+PiArCQkJcmV0dXJuIC1FSU5WQUw7Cj4+ ICsJCX0KPj4gKwl9Cj4+ICsJcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gICAvKioKPj4gICAgKiBp bnRlbF9hdG9taWNfY2hlY2sgLSB2YWxpZGF0ZSBzdGF0ZSBvYmplY3QKPj4gICAgKiBAZGV2OiBk cm0gZGV2aWNlCj4+IEBAIC0xNDgyNSw2ICsxNDg3MiwxNCBAQCBzdGF0aWMgaW50IGludGVsX2F0 b21pY19jaGVjayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+PiAgIAlpZiAocmV0KQo+PiAgIAkJ Z290byBmYWlsOwo+PiAgIAo+PiArCWZvcl9lYWNoX25ld19pbnRlbF9jcnRjX2luX3N0YXRlKHN0 YXRlLCBjcnRjLCBuZXdfY3J0Y19zdGF0ZSwgaSkgewo+PiArCQlpZiAobmV3X2NydGNfc3RhdGUt PnVhcGkuYXN5bmNfZmxpcCkgewo+PiArCQkJcmV0ID0gaW50ZWxfYXRvbWljX2NoZWNrX2FzeW5j KHN0YXRlKTsKPiAKPiBLaW5kYSByZWR1bmRhbnQgdG8gY2FsbCB0aGlzIG11bHRpcGxlIHRpbWVz LiBJIHRoaW5rIHRoZSBhc3luY19mbGlwIGZsYWcKPiBpcyBhY3R1YWxseSBtaXNwbGFjZWQuIEl0 IHNob3VsZCBwcm9iYWJseSBiZSBpbiB0aGUgZHJtX2F0b21pY19zdGF0ZQo+IGluc3RlYWQgb2Yg dGhlIGNydGMgc3RhdGUuCj4gCj4gQWxzbyBzdGlsbCBub3QgYSBodWdlIGZhbiBvZiB1c2luZyB0 aGUgImFzeW5jIGZsaXAiIHRlcm1vbm9sb2d5IGluCj4gdGhlIGRybSBjb3JlLiBJTU8gd2Ugc2hv dWxkIGp1c3QgYWRvcHQgdGhlIHZ1bGthbiB0ZXJtaW5vbG9neSBmb3IKPiB0aGlzIHN0dWZmIHNv IGl0J3Mgb2J2aXVvcyB3aGF0IHBlb3BsZSBtZWFuIHdoZW4gdGhleSB0YWxrIGFib3V0IHRoZXNl Cj4gdGhpbmdzLgoKQSBsaXR0bGUgbG9zdCBoZXJlLkNvdWxkIHlvdSBwbGVhc2UgaGVscCBtZSBv dXQ/IEkgc2hvdWxkIG1vdmUgdGhlIAphc3luY19mbGlwIGZsYWcgdG8gZHJtX2F0b21pY19zdGF0 ZSBmcm9tIGNydGNfc3RhdGUgYW5kIHRoZW4gY2hhbmdlIGl0cyAKbmFtZT8gV2hhdCB3b3VsZCBi ZSB0aGUgcHJvcGVyIHZ1bGthbiB0ZXJtaW5vbG9neSBmb3IgdGhpcz8KClRoYW5rcyBhbmQgUmVn YXJkcywKS2FydGhpay5CLlMKPiAKPj4gKwkJCWlmICAocmV0KQo+PiArCQkJCWdvdG8gZmFpbDsK Pj4gKwkJfQo+PiArCX0KPj4gKwo+PiAgIAlmb3JfZWFjaF9vbGRuZXdfaW50ZWxfY3J0Y19pbl9z dGF0ZShzdGF0ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsCj4+ICAgCQkJCQkgICAgbmV3X2NydGNf c3RhdGUsIGkpIHsKPj4gICAJCWlmICghbmVlZHNfbW9kZXNldChuZXdfY3J0Y19zdGF0ZSkpIHsK Pj4gLS0gCj4+IDIuMTcuMQo+IApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK