From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maxime Ripard Subject: [PATCH v4 6/8] drm/panel: Add Ilitek ILI9881c panel driver Date: Wed, 4 Apr 2018 11:57:14 +0200 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail.bootlin.com (mail.bootlin.com [62.4.15.54]) by gabe.freedesktop.org (Postfix) with ESMTP id 2BD776E293 for ; Wed, 4 Apr 2018 09:57:41 +0000 (UTC) In-Reply-To: In-Reply-To: References: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Thierry Reding , Chen-Yu Tsai , Maxime Ripard , Mark Rutland , Rob Herring , Frank Rowand Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Thomas Petazzoni , Daniel Vetter , linux-arm-kernel@lists.infradead.org List-Id: dri-devel@lists.freedesktop.org VGhlIExIUjA1MEg0MSBwYW5lbCBpcyB0aGUgcGFuZWwgc2hpcHBlZCB3aXRoIHRoZSBCYW5hbmFQ aSBNMi1NYWdpYywgYW5kIGlzCmJhc2VkIG9uIHRoZSBJbGl0ZWsgSUxJOTg4MWMgQ29udHJvbGxl ci4gQWRkIGEgZHJpdmVyIGZvciBpdCwgbW9kZWxsZWQKYWZ0ZXIgdGhlIG90aGVyIElsaXRlayBj b250cm9sbGVyIGRyaXZlcnMuCgpTaWduZWQtb2ZmLWJ5OiBNYXhpbWUgUmlwYXJkIDxtYXhpbWUu cmlwYXJkQGJvb3RsaW4uY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnICAg ICAgICAgICAgICAgICB8ICAgOSArLQogZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2VmaWxlICAg ICAgICAgICAgICAgIHwgICAxICstCiBkcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtaWxpdGVr LWlsaTk4ODFjLmMgfCA0ODkgKysrKysrKysrKysrKysrKysrKy0KIDMgZmlsZXMgY2hhbmdlZCwg NDk5IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vcGFu ZWwvcGFuZWwtaWxpdGVrLWlsaTk4ODFjLmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v cGFuZWwvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnCmluZGV4IDI1Njgy ZmYzNDQ5YS4uNjAyMGMzMGEzM2IzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwv S2NvbmZpZworKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZwpAQCAtNDYsNiArNDYs MTUgQEAgY29uZmlnIERSTV9QQU5FTF9JTElURUtfSUw5MzIyCiAJICBTYXkgWSBoZXJlIGlmIHlv dSB3YW50IHRvIGVuYWJsZSBzdXBwb3J0IGZvciBJbGl0ZWsgSUw5MzIyCiAJICBRVkdBICgzMjB4 MjQwKSBSR0IsIFlVViBhbmQgSVRVLVQgQlQuNjU2IHBhbmVscy4KIAorY29uZmlnIERSTV9QQU5F TF9JTElURUtfSUxJOTg4MUMKKwl0cmlzdGF0ZSAiSWxpdGVrIElMSTk4ODFDLWJhc2VkIHBhbmVs cyIKKwlkZXBlbmRzIG9uIE9GCisJZGVwZW5kcyBvbiBEUk1fTUlQSV9EU0kKKwlkZXBlbmRzIG9u IEJBQ0tMSUdIVF9DTEFTU19ERVZJQ0UKKwloZWxwCisJICBTYXkgWSBpZiB5b3Ugd2FudCB0byBl bmFibGUgc3VwcG9ydCBmb3IgcGFuZWxzIGJhc2VkIG9uIHRoZQorCSAgSWxpdGVrIElMSTk4ODFj IGNvbnRyb2xsZXIuCisKIGNvbmZpZyBEUk1fUEFORUxfSU5OT0xVWF9QMDc5WkNBCiAJdHJpc3Rh dGUgIklubm9sdXggUDA3OVpDQSBwYW5lbCIKIAlkZXBlbmRzIG9uIE9GCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFr ZWZpbGUKaW5kZXggZjI2ZWZjMTFkNzQ2Li41Y2NhYWE5ZDEzYWYgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFr ZWZpbGUKQEAgLTMsNiArMyw3IEBAIG9iai0kKENPTkZJR19EUk1fUEFORUxfQVJNX1ZFUlNBVElM RSkgKz0gcGFuZWwtYXJtLXZlcnNhdGlsZS5vCiBvYmotJChDT05GSUdfRFJNX1BBTkVMX0xWRFMp ICs9IHBhbmVsLWx2ZHMubwogb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9TSU1QTEUpICs9IHBhbmVs LXNpbXBsZS5vCiBvYmotJChDT05GSUdfRFJNX1BBTkVMX0lMSVRFS19JTDkzMjIpICs9IHBhbmVs LWlsaXRlay1pbGk5MzIyLm8KK29iai0kKENPTkZJR19EUk1fUEFORUxfSUxJVEVLX0lMSTk4ODFD KSArPSBwYW5lbC1pbGl0ZWstaWxpOTg4MWMubwogb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9JTk5P TFVYX1AwNzlaQ0EpICs9IHBhbmVsLWlubm9sdXgtcDA3OXpjYS5vCiBvYmotJChDT05GSUdfRFJN X1BBTkVMX0pESV9MVDA3ME1FMDUwMDApICs9IHBhbmVsLWpkaS1sdDA3MG1lMDUwMDAubwogb2Jq LSQoQ09ORklHX0RSTV9QQU5FTF9MR19MRzQ1NzMpICs9IHBhbmVsLWxnLWxnNDU3My5vCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtaWxpdGVrLWlsaTk4ODFjLmMgYi9k cml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtaWxpdGVrLWlsaTk4ODFjLmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44OTkyYTY0MzFjMzAKLS0tIC9kZXYvbnVsbAor KysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtaWxpdGVrLWlsaTk4ODFjLmMKQEAgLTAs MCArMSw0ODkgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKworLyoKKyAq IENvcHlyaWdodCAoQykgMjAxNywgRnJlZSBFbGVjdHJvbnMKKyAqIEF1dGhvcjogTWF4aW1lIFJp cGFyZCA8bWF4aW1lLnJpcGFyZEBmcmVlLWVsZWN0cm9ucy5jb20+CisgKi8KKworI2luY2x1ZGUg PGxpbnV4L2JhY2tsaWdodC5oPgorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVkZSA8 bGludXgvZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvZXJyLmg+CisjaW5jbHVkZSA8bGludXgv ZXJybm8uaD4KKyNpbmNsdWRlIDxsaW51eC9mYi5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5o PgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorCisjaW5jbHVkZSA8bGludXgvZ3Bpby9jb25z dW1lci5oPgorCisjaW5jbHVkZSA8ZHJtL2RybV9taXBpX2RzaS5oPgorI2luY2x1ZGUgPGRybS9k cm1fbW9kZXMuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX3BhbmVsLmg+CisKKyNpbmNsdWRlIDx2aWRl by9taXBpX2Rpc3BsYXkuaD4KKworc3RydWN0IGlsaTk4ODFjIHsKKwlzdHJ1Y3QgZHJtX3BhbmVs CXBhbmVsOworCXN0cnVjdCBtaXBpX2RzaV9kZXZpY2UJKmRzaTsKKworCXN0cnVjdCBiYWNrbGln aHRfZGV2aWNlICpiYWNrbGlnaHQ7CisJc3RydWN0IGdwaW9fZGVzYwkqcG93ZXI7CisJc3RydWN0 IGdwaW9fZGVzYwkqcmVzZXQ7Cit9OworCitlbnVtIGlsaTk4ODFjX29wIHsKKwlJTEk5ODgxQ19T V0lUQ0hfUEFHRSwKKwlJTEk5ODgxQ19DT01NQU5ELAorfTsKKworc3RydWN0IGlsaTk4ODFjX2lu c3RyIHsKKwllbnVtIGlsaTk4ODFjX29wCW9wOworCisJdW5pb24gYXJnIHsKKwkJc3RydWN0IGNt ZCB7CisJCQl1OAljbWQ7CisJCQl1OAlkYXRhOworCQl9IGNtZDsKKwkJdTgJcGFnZTsKKwl9IGFy ZzsKK307CisKKyNkZWZpbmUgSUxJOTg4MUNfU1dJVENIX1BBR0VfSU5TVFIoX3BhZ2UpCVwKKwl7 CQkJCQlcCisJCS5vcCA9IElMSTk4ODFDX1NXSVRDSF9QQUdFLAlcCisJCS5hcmcgPSB7CQkJXAor CQkJLnBhZ2UgPSAoX3BhZ2UpLAlcCisJCX0sCQkJCVwKKwl9CisKKyNkZWZpbmUgSUxJOTg4MUNf Q09NTUFORF9JTlNUUihfY21kLCBfZGF0YSkJCVwKKwl7CQkJCQkJXAorCQkub3AgPSBJTEk5ODgx Q19DT01NQU5ELAkJXAorCQkuYXJnID0gewkJCQlcCisJCQkuY21kID0gewkJCVwKKwkJCQkuY21k ID0gKF9jbWQpLAkJXAorCQkJCS5kYXRhID0gKF9kYXRhKSwJXAorCQkJfSwJCQkJXAorCQl9LAkJ CQkJXAorCX0KKworc3RhdGljIHN0cnVjdCBpbGk5ODgxY19pbnN0ciBpbGk5ODgxY19pbml0W10g PSB7CisJSUxJOTg4MUNfU1dJVENIX1BBR0VfSU5TVFIoMyksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDAxLCAweDAwKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4MDIsIDB4MDApLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgwMywgMHg3MyksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDA0LCAweDAzKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4MDUsIDB4MDApLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgwNiwgMHgwNiksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDA3LCAweDA2KSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4MDgsIDB4MDApLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgwOSwgMHgxOCksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDBhLCAweDA0KSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4MGIsIDB4MDApLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgwYywgMHgwMiksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDBkLCAweDAzKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4MGUsIDB4MDApLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgwZiwgMHgyNSksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDEwLCAweDI1KSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4MTEsIDB4MDApLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgxMiwgMHgwMCksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDEzLCAweDAwKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4MTQsIDB4MDApLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgxNSwgMHgwMCksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDE2LCAweDBDKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4MTcsIDB4MDApLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgxOCwgMHgwMCksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDE5LCAweDAwKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4MWEsIDB4MDApLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgxYiwgMHgwMCksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDFjLCAweDAwKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4MWQsIDB4MDApLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgxZSwgMHhDMCksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDFmLCAweDgwKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4MjAsIDB4MDQpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgyMSwgMHgwMSksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDIyLCAweDAwKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4MjMsIDB4MDApLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgyNCwgMHgwMCksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDI1LCAweDAwKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4MjYsIDB4MDApLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgyNywgMHgwMCksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDI4LCAweDMzKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4MjksIDB4MDMpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgyYSwgMHgwMCksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDJiLCAweDAwKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4MmMsIDB4MDApLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgyZCwgMHgwMCksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDJlLCAweDAwKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4MmYsIDB4MDApLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgzMCwgMHgwMCksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDMxLCAweDAwKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4MzIsIDB4MDApLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgzMywgMHgwMCksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDM0LCAweDA0KSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4MzUsIDB4MDApLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgzNiwgMHgwMCksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDM3LCAweDAwKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4MzgsIDB4M0MpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgzOSwgMHgwMCksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDNhLCAweDAwKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4M2IsIDB4MDApLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgzYywgMHgwMCksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDNkLCAweDAwKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4M2UsIDB4MDApLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgzZiwgMHgwMCksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDQwLCAweDAwKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4NDEsIDB4MDApLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg0MiwgMHgwMCksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDQzLCAweDAwKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4NDQsIDB4MDApLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg1MCwgMHgwMSksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDUxLCAweDIzKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4NTIsIDB4NDUpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg1MywgMHg2NyksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDU0LCAweDg5KSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4NTUsIDB4YWIpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg1NiwgMHgwMSksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDU3LCAweDIzKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4NTgsIDB4NDUpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg1OSwgMHg2NyksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDVhLCAweDg5KSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4NWIsIDB4YWIpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg1YywgMHhjZCksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDVkLCAweGVmKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4NWUsIDB4MTEpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg1ZiwgMHgwMiksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDYwLCAweDAyKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4NjEsIDB4MDIpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg2MiwgMHgwMiksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDYzLCAweDAyKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4NjQsIDB4MDIpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg2NSwgMHgwMiksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDY2LCAweDAyKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4NjcsIDB4MDIpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg2OCwgMHgwMiksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDY5LCAweDAyKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4NmEsIDB4MEMpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg2YiwgMHgwMiksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDZjLCAweDBGKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4NmQsIDB4MEUpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg2ZSwgMHgwRCksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDZmLCAweDA2KSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4NzAsIDB4MDcpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg3MSwgMHgwMiksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDcyLCAweDAyKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4NzMsIDB4MDIpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg3NCwgMHgwMiksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDc1LCAweDAyKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4NzYsIDB4MDIpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg3NywgMHgwMiksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDc4LCAweDAyKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4NzksIDB4MDIpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg3YSwgMHgwMiksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDdiLCAweDAyKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4N2MsIDB4MDIpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg3ZCwgMHgwMiksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDdlLCAweDAyKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4N2YsIDB4MDIpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg4MCwgMHgwQyksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDgxLCAweDAyKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4ODIsIDB4MEYpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg4MywgMHgwRSksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDg0LCAweDBEKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4ODUsIDB4MDYpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg4NiwgMHgwNyksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDg3LCAweDAyKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4ODgsIDB4MDIpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg4OSwgMHgwMiksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDhBLCAweDAyKSwKKwlJTEk5ODgxQ19TV0lUQ0hfUEFHRV9JTlNUUig0KSwKKwlJTEk5 ODgxQ19DT01NQU5EX0lOU1RSKDB4NkMsIDB4MTUpLAorCUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIo MHg2RSwgMHgyMiksCisJSUxJOTg4MUNfQ09NTUFORF9JTlNUUigweDZGLCAweDMzKSwKKwlJTEk5 ODgxQ19DT01NQU5EX0lOU1RSKDB4M0EsIDB4QTQpLAorCUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIo MHg4RCwgMHgwRCksCisJSUxJOTg4MUNfQ09NTUFORF9JTlNUUigweDg3LCAweEJBKSwKKwlJTEk5 ODgxQ19DT01NQU5EX0lOU1RSKDB4MjYsIDB4NzYpLAorCUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIo MHhCMiwgMHhEMSksCisJSUxJOTg4MUNfU1dJVENIX1BBR0VfSU5TVFIoMSksCisJSUxJOTg4MUNf Q09NTUFORF9JTlNUUigweDIyLCAweDBBKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4NTMs IDB4REMpLAorCUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg1NSwgMHhBNyksCisJSUxJOTg4MUNf Q09NTUFORF9JTlNUUigweDUwLCAweDc4KSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4NTEs IDB4NzgpLAorCUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgzMSwgMHgwMiksCisJSUxJOTg4MUNf Q09NTUFORF9JTlNUUigweDYwLCAweDE0KSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4QTAs IDB4MkEpLAorCUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHhBMSwgMHgzOSksCisJSUxJOTg4MUNf Q09NTUFORF9JTlNUUigweEEyLCAweDQ2KSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4QTMs IDB4MGUpLAorCUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHhBNCwgMHgxMiksCisJSUxJOTg4MUNf Q09NTUFORF9JTlNUUigweEE1LCAweDI1KSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4QTYs IDB4MTkpLAorCUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHhBNywgMHgxZCksCisJSUxJOTg4MUNf Q09NTUFORF9JTlNUUigweEE4LCAweGE2KSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4QTks IDB4MUMpLAorCUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHhBQSwgMHgyOSksCisJSUxJOTg4MUNf Q09NTUFORF9JTlNUUigweEFCLCAweDg1KSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4QUMs IDB4MUMpLAorCUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHhBRCwgMHgxQiksCisJSUxJOTg4MUNf Q09NTUFORF9JTlNUUigweEFFLCAweDUxKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4QUYs IDB4MjIpLAorCUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHhCMCwgMHgyZCksCisJSUxJOTg4MUNf Q09NTUFORF9JTlNUUigweEIxLCAweDRmKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4QjIs IDB4NTkpLAorCUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHhCMywgMHgzRiksCisJSUxJOTg4MUNf Q09NTUFORF9JTlNUUigweEMwLCAweDJBKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4QzEs IDB4M2EpLAorCUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHhDMiwgMHg0NSksCisJSUxJOTg4MUNf Q09NTUFORF9JTlNUUigweEMzLCAweDBlKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4QzQs IDB4MTEpLAorCUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHhDNSwgMHgyNCksCisJSUxJOTg4MUNf Q09NTUFORF9JTlNUUigweEM2LCAweDFhKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4Qzcs IDB4MWMpLAorCUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHhDOCwgMHhhYSksCisJSUxJOTg4MUNf Q09NTUFORF9JTlNUUigweEM5LCAweDFDKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4Q0Es IDB4MjkpLAorCUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHhDQiwgMHg5NiksCisJSUxJOTg4MUNf Q09NTUFORF9JTlNUUigweENDLCAweDFDKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4Q0Qs IDB4MUIpLAorCUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHhDRSwgMHg1MSksCisJSUxJOTg4MUNf Q09NTUFORF9JTlNUUigweENGLCAweDIyKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4RDAs IDB4MmIpLAorCUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHhEMSwgMHg0YiksCisJSUxJOTg4MUNf Q09NTUFORF9JTlNUUigweEQyLCAweDU5KSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4RDMs IDB4M0YpLAorfTsKKworc3RhdGljIGlubGluZSBzdHJ1Y3QgaWxpOTg4MWMgKnBhbmVsX3RvX2ls aTk4ODFjKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQoreworCXJldHVybiBjb250YWluZXJfb2Yo cGFuZWwsIHN0cnVjdCBpbGk5ODgxYywgcGFuZWwpOworfQorCitzdGF0aWMgaW50IGlsaTk4ODFj X3N3aXRjaF9wYWdlKHN0cnVjdCBpbGk5ODgxYyAqY3R4LCB1OCBwYWdlKQoreworCXU4IGJ1Zls0 XSA9IHsgMHhmZiwgMHg5OCwgMHg4MSwgcGFnZSB9OworCWludCByZXQ7CisKKwlyZXQgPSBtaXBp X2RzaV9kY3Nfd3JpdGVfYnVmZmVyKGN0eC0+ZHNpLCBidWYsIHNpemVvZihidWYpKTsKKwlpZiAo cmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGls aTk4ODFjX3NlbmRfY21kX2RhdGEoc3RydWN0IGlsaTk4ODFjICpjdHgsIHU4IGNtZCwgdTggZGF0 YSkKK3sKKwl1OCBidWZbMl0gPSB7IGNtZCwgZGF0YSB9OworCWludCByZXQ7CisKKwlyZXQgPSBt aXBpX2RzaV9kY3Nfd3JpdGVfYnVmZmVyKGN0eC0+ZHNpLCBidWYsIHNpemVvZihidWYpKTsKKwlp ZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50 IGlsaTk4ODFjX3ByZXBhcmUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCit7CisJc3RydWN0IGls aTk4ODFjICpjdHggPSBwYW5lbF90b19pbGk5ODgxYyhwYW5lbCk7CisJdW5zaWduZWQgaW50IGk7 CisJaW50IHJldDsKKworCS8qIFBvd2VyIHRoZSBwYW5lbCAqLworCWdwaW9kX3NldF92YWx1ZShj dHgtPnBvd2VyLCAxKTsKKwltc2xlZXAoNSk7CisKKwkvKiBBbmQgcmVzZXQgaXQgKi8KKwlncGlv ZF9zZXRfdmFsdWUoY3R4LT5yZXNldCwgMSk7CisJbXNsZWVwKDIwKTsKKworCWdwaW9kX3NldF92 YWx1ZShjdHgtPnJlc2V0LCAwKTsKKwltc2xlZXAoMjApOworCisJZm9yIChpID0gMDsgaSA8IEFS UkFZX1NJWkUoaWxpOTg4MWNfaW5pdCk7IGkrKykgeworCQlzdHJ1Y3QgaWxpOTg4MWNfaW5zdHIg Kmluc3RyID0gJmlsaTk4ODFjX2luaXRbaV07CisKKwkJaWYgKGluc3RyLT5vcCA9PSBJTEk5ODgx Q19TV0lUQ0hfUEFHRSkKKwkJCXJldCA9IGlsaTk4ODFjX3N3aXRjaF9wYWdlKGN0eCwgaW5zdHIt PmFyZy5wYWdlKTsKKwkJZWxzZSBpZiAoaW5zdHItPm9wID09IElMSTk4ODFDX0NPTU1BTkQpCisJ CQlyZXQgPSBpbGk5ODgxY19zZW5kX2NtZF9kYXRhKGN0eCwgaW5zdHItPmFyZy5jbWQuY21kLAor CQkJCQkJICAgICAgaW5zdHItPmFyZy5jbWQuZGF0YSk7CisKKwkJaWYgKHJldCkKKwkJCXJldHVy biByZXQ7CisJfQorCisJcmV0ID0gaWxpOTg4MWNfc3dpdGNoX3BhZ2UoY3R4LCAwKTsKKwlpZiAo cmV0KQorCQlyZXR1cm4gcmV0OworCisJcmV0ID0gbWlwaV9kc2lfZGNzX3NldF90ZWFyX29uKGN0 eC0+ZHNpLCBNSVBJX0RTSV9EQ1NfVEVBUl9NT0RFX1ZCTEFOSyk7CisJaWYgKHJldCkKKwkJcmV0 dXJuIHJldDsKKworCW1pcGlfZHNpX2Rjc19leGl0X3NsZWVwX21vZGUoY3R4LT5kc2kpOworCWlm IChyZXQpCisJCXJldHVybiByZXQ7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBpbGk5 ODgxY19lbmFibGUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCit7CisJc3RydWN0IGlsaTk4ODFj ICpjdHggPSBwYW5lbF90b19pbGk5ODgxYyhwYW5lbCk7CisKKwltc2xlZXAoMTIwKTsKKworCW1p cGlfZHNpX2Rjc19zZXRfZGlzcGxheV9vbihjdHgtPmRzaSk7CisJYmFja2xpZ2h0X2VuYWJsZShj dHgtPmJhY2tsaWdodCk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBpbGk5ODgxY19k aXNhYmxlKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQoreworCXN0cnVjdCBpbGk5ODgxYyAqY3R4 ID0gcGFuZWxfdG9faWxpOTg4MWMocGFuZWwpOworCisJYmFja2xpZ2h0X2Rpc2FibGUoY3R4LT5i YWNrbGlnaHQpOworCXJldHVybiBtaXBpX2RzaV9kY3Nfc2V0X2Rpc3BsYXlfb2ZmKGN0eC0+ZHNp KTsKK30KKworc3RhdGljIGludCBpbGk5ODgxY191bnByZXBhcmUoc3RydWN0IGRybV9wYW5lbCAq cGFuZWwpCit7CisJc3RydWN0IGlsaTk4ODFjICpjdHggPSBwYW5lbF90b19pbGk5ODgxYyhwYW5l bCk7CisKKwltaXBpX2RzaV9kY3NfZW50ZXJfc2xlZXBfbW9kZShjdHgtPmRzaSk7CisJZ3Bpb2Rf c2V0X3ZhbHVlKGN0eC0+cG93ZXIsIDApOworCWdwaW9kX3NldF92YWx1ZShjdHgtPnJlc2V0LCAx KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgZGVmYXVsdF9tb2RlID0geworCS5jbG9jawkJPSA2MjAwMCwKKwkudnJlZnJlc2gJPSA2MCwK KworCS5oZGlzcGxheQk9IDcyMCwKKwkuaHN5bmNfc3RhcnQJPSA3MjAgKyAxMCwKKwkuaHN5bmNf ZW5kCT0gNzIwICsgMTAgKyAyMCwKKwkuaHRvdGFsCQk9IDcyMCArIDEwICsgMjAgKyAzMCwKKwor CS52ZGlzcGxheQk9IDEyODAsCisJLnZzeW5jX3N0YXJ0CT0gMTI4MCArIDEwLAorCS52c3luY19l bmQJPSAxMjgwICsgMTAgKyAxMCwKKwkudnRvdGFsCQk9IDEyODAgKyAxMCArIDEwICsgMjAsCit9 OworCitzdGF0aWMgaW50IGlsaTk4ODFjX2dldF9tb2RlcyhzdHJ1Y3QgZHJtX3BhbmVsICpwYW5l bCkKK3sKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gcGFuZWwtPmNvbm5lY3Rv cjsKKwlzdHJ1Y3QgaWxpOTg4MWMgKmN0eCA9IHBhbmVsX3RvX2lsaTk4ODFjKHBhbmVsKTsKKwlz dHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZTsKKworCW1vZGUgPSBkcm1fbW9kZV9kdXBsaWNh dGUocGFuZWwtPmRybSwgJmRlZmF1bHRfbW9kZSk7CisJaWYgKCFtb2RlKSB7CisJCWRldl9lcnIo JmN0eC0+ZHNpLT5kZXYsICJmYWlsZWQgdG8gYWRkIG1vZGUgJXV4JXV4QCV1XG4iLAorCQkJZGVm YXVsdF9tb2RlLmhkaXNwbGF5LCBkZWZhdWx0X21vZGUudmRpc3BsYXksCisJCQlkZWZhdWx0X21v ZGUudnJlZnJlc2gpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKKwlkcm1fbW9kZV9zZXRfbmFt ZShtb2RlKTsKKworCW1vZGUtPnR5cGUgPSBEUk1fTU9ERV9UWVBFX0RSSVZFUiB8IERSTV9NT0RF X1RZUEVfUFJFRkVSUkVEOworCWRybV9tb2RlX3Byb2JlZF9hZGQoY29ubmVjdG9yLCBtb2RlKTsK KworCXBhbmVsLT5jb25uZWN0b3ItPmRpc3BsYXlfaW5mby53aWR0aF9tbSA9IDYyOworCXBhbmVs LT5jb25uZWN0b3ItPmRpc3BsYXlfaW5mby5oZWlnaHRfbW0gPSAxMTA7CisKKwlyZXR1cm4gMTsK K30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGFuZWxfZnVuY3MgaWxpOTg4MWNfZnVuY3Mg PSB7CisJLnByZXBhcmUJPSBpbGk5ODgxY19wcmVwYXJlLAorCS51bnByZXBhcmUJPSBpbGk5ODgx Y191bnByZXBhcmUsCisJLmVuYWJsZQkJPSBpbGk5ODgxY19lbmFibGUsCisJLmRpc2FibGUJPSBp bGk5ODgxY19kaXNhYmxlLAorCS5nZXRfbW9kZXMJPSBpbGk5ODgxY19nZXRfbW9kZXMsCit9Owor CitzdGF0aWMgaW50IGlsaTk4ODFjX2RzaV9wcm9iZShzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpk c2kpCit7CisJc3RydWN0IGRldmljZV9ub2RlICpucDsKKwlzdHJ1Y3QgaWxpOTg4MWMgKmN0eDsK KwlpbnQgcmV0OworCisJY3R4ID0gZGV2bV9remFsbG9jKCZkc2ktPmRldiwgc2l6ZW9mKCpjdHgp LCBHRlBfS0VSTkVMKTsKKwlpZiAoIWN0eCkKKwkJcmV0dXJuIC1FTk9NRU07CisJbWlwaV9kc2lf c2V0X2RydmRhdGEoZHNpLCBjdHgpOworCWN0eC0+ZHNpID0gZHNpOworCisJZHJtX3BhbmVsX2lu aXQoJmN0eC0+cGFuZWwpOworCWN0eC0+cGFuZWwuZGV2ID0gJmRzaS0+ZGV2OworCWN0eC0+cGFu ZWwuZnVuY3MgPSAmaWxpOTg4MWNfZnVuY3M7CisKKwljdHgtPnBvd2VyID0gZGV2bV9ncGlvZF9n ZXQoJmRzaS0+ZGV2LCAicG93ZXIiLCBHUElPRF9PVVRfTE9XKTsKKwlpZiAoSVNfRVJSKGN0eC0+ cG93ZXIpKSB7CisJCWRldl9lcnIoJmRzaS0+ZGV2LCAiQ291bGRuJ3QgZ2V0IG91ciBwb3dlciBH UElPXG4iKTsKKwkJcmV0dXJuIFBUUl9FUlIoY3R4LT5wb3dlcik7CisJfQorCisJY3R4LT5yZXNl dCA9IGRldm1fZ3Bpb2RfZ2V0KCZkc2ktPmRldiwgInJlc2V0IiwgR1BJT0RfT1VUX0xPVyk7CisJ aWYgKElTX0VSUihjdHgtPnJlc2V0KSkgeworCQlkZXZfZXJyKCZkc2ktPmRldiwgIkNvdWxkbid0 IGdldCBvdXIgcmVzZXQgR1BJT1xuIik7CisJCXJldHVybiBQVFJfRVJSKGN0eC0+cmVzZXQpOwor CX0KKworCW5wID0gb2ZfcGFyc2VfcGhhbmRsZShkc2ktPmRldi5vZl9ub2RlLCAiYmFja2xpZ2h0 IiwgMCk7CisJaWYgKG5wKSB7CisJCWN0eC0+YmFja2xpZ2h0ID0gb2ZfZmluZF9iYWNrbGlnaHRf Ynlfbm9kZShucCk7CisJCW9mX25vZGVfcHV0KG5wKTsKKworCQlpZiAoIWN0eC0+YmFja2xpZ2h0 KQorCQkJcmV0dXJuIC1FUFJPQkVfREVGRVI7CisJfQorCisJcmV0ID0gZHJtX3BhbmVsX2FkZCgm Y3R4LT5wYW5lbCk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwlkc2ktPm1vZGVf ZmxhZ3MgPSBNSVBJX0RTSV9NT0RFX1ZJREVPX1NZTkNfUFVMU0U7CisJZHNpLT5mb3JtYXQgPSBN SVBJX0RTSV9GTVRfUkdCODg4OworCWRzaS0+bGFuZXMgPSA0OworCisJcmV0dXJuIG1pcGlfZHNp X2F0dGFjaChkc2kpOworfQorCitzdGF0aWMgaW50IGlsaTk4ODFjX2RzaV9yZW1vdmUoc3RydWN0 IG1pcGlfZHNpX2RldmljZSAqZHNpKQoreworCXN0cnVjdCBpbGk5ODgxYyAqY3R4ID0gbWlwaV9k c2lfZ2V0X2RydmRhdGEoZHNpKTsKKworCW1pcGlfZHNpX2RldGFjaChkc2kpOworCWRybV9wYW5l bF9yZW1vdmUoJmN0eC0+cGFuZWwpOworCisJaWYgKGN0eC0+YmFja2xpZ2h0KQorCQlwdXRfZGV2 aWNlKCZjdHgtPmJhY2tsaWdodC0+ZGV2KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgY29u c3Qgc3RydWN0IG9mX2RldmljZV9pZCBpbGk5ODgxY19vZl9tYXRjaFtdID0geworCXsgLmNvbXBh dGlibGUgPSAiYmFuYW5hcGksbGhyMDUwaDQxIiB9LAorCXsgfQorfTsKK01PRFVMRV9ERVZJQ0Vf VEFCTEUob2YsIGlsaTk4ODFjX29mX21hdGNoKTsKKworc3RhdGljIHN0cnVjdCBtaXBpX2RzaV9k cml2ZXIgaWxpOTg4MWNfZHNpX2RyaXZlciA9IHsKKwkucHJvYmUJCT0gaWxpOTg4MWNfZHNpX3By b2JlLAorCS5yZW1vdmUJCT0gaWxpOTg4MWNfZHNpX3JlbW92ZSwKKwkuZHJpdmVyID0geworCQku bmFtZQkJPSAiaWxpOTg4MWMtZHNpIiwKKwkJLm9mX21hdGNoX3RhYmxlCT0gaWxpOTg4MWNfb2Zf bWF0Y2gsCisJfSwKK307Cittb2R1bGVfbWlwaV9kc2lfZHJpdmVyKGlsaTk4ODFjX2RzaV9kcml2 ZXIpOworCitNT0RVTEVfQVVUSE9SKCJNYXhpbWUgUmlwYXJkIDxtYXhpbWUucmlwYXJkQGZyZWUt ZWxlY3Ryb25zLmNvbT4iKTsKK01PRFVMRV9ERVNDUklQVElPTigiSWxpdGVrIElMSTk4ODFDIENv bnRyb2xsZXIgRHJpdmVyIik7CitNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7Ci0tIApnaXQtc2Vy aWVzIDAuOS4xCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=