From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anshuman Gupta Subject: [PATCH 05/10] drm/i915/tgl:Added helper function to prefer dc3co over dc5. Date: Fri, 28 Jun 2019 18:37:49 +0530 Message-ID: <20190628130754.9527-6-anshuman.gupta@intel.com> References: <20190628130754.9527-1-anshuman.gupta@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 722096E924 for ; Fri, 28 Jun 2019 13:12:47 +0000 (UTC) In-Reply-To: <20190628130754.9527-1-anshuman.gupta@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: jani.nikula@intel.com List-Id: intel-gfx@lists.freedesktop.org VGhpcyBwYXRjaCBjaGVjayBpZiBpdCBpcyBvbmx5IGVkcCBkaXNwbGF5IGNvbm5lY3RlZCBhbmQK Y3J0YyBoYXMgcHNyMiBjYXBhYmlsaXR5LCB0aGVuIGl0IHNldHMgdGhlIHByZWZlcl9kYzNjbyBm bGFnIHRvCnRydWUuIEl0IGFsc28gZW5hYmxlIERDM0NPIFBTUjIgdHJhbnNjb2RlciBlYXJseSBl eGl0bGluZSBldmVudAppbiBoYXN3ZWxsX2NydGNfZW5hYmxlKCkgZnVuY3Rpb24uCgpUT0RPOiBC LiBTcGVjcyBzYXlzIGRjM2NvIHNob3VsZCBiZSBhbGxvdyBvbmx5IGluIHZpZGVvIHBsYXliYWNr CmNhc2UsIGN1cnJlbnRseSBkcml2ZXIgZG9lc24ndCBkaWZmZXJlbnRpYXRlIGJldHdlZW4gdmlk ZW8gcGxheWJhY2sKYW5kIGEgbm9ybWFsIGZsaXAuClVzZXIgc3BhY2Ugd2lsbCBiZSB0aGUgYmVz dCB0byBqdWRnZSBpZiBpdCBpcyBWUEIgY2FzZQpvdGhlcndpc2Ugd2UgbmVlZCB0byBoYXZlIHRo YXQgaW50ZWxsaWdlbmNlIGluIGRyaXZlci4KCkNjOiBqYW5pLm5pa3VsYUBpbnRlbC5jb20KQ2M6 IGltcmUuZGVha0BpbnRlbC5jb20KQ2M6IGFuaW1lc2gubWFubmFAaW50ZWwuY29tClNpZ25lZC1v ZmYtYnk6IEFuc2h1bWFuIEd1cHRhIDxhbnNodW1hbi5ndXB0YUBpbnRlbC5jb20+Ci0tLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgIHwgIDEgKwogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jICAgIHwgMTIgKysrLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcG0uYyAgICAgICAgIHwgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3BtLmggICAgICAgICB8ICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVf cG0uYyB8IDk1ICsrKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3J1bnRpbWVfcG0uaCB8ICAzICsKIDYgZmlsZXMgY2hhbmdlZCwgMTEyIGluc2VydGlv bnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggNTgwMWY1 NDA3NTg5Li5hY2MxYmM5NjNiMDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMzU5LDYg KzM1OSw3IEBAIHN0cnVjdCBpbnRlbF9jc3IgewogCXUzMiBkY19zdGF0ZTsKIAl1MzIgYWxsb3dl ZF9kY19tYXNrOwogCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOworCWJvb2wgcHJlZmVyX2RjM2Nv OwogfTsKIAogZW51bSBpOTE1X2NhY2hlX2xldmVsIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuYwppbmRleCA5MGNkMWY1MWVkYTYuLjFiOWFiOWJmNGRhYSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuYwpAQCAtNjAzMCw2ICs2MDMwLDkgQEAgc3RhdGljIHZvaWQgaGFz d2VsbF9jcnRjX2VuYWJsZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCiAK IAlpZiAoV0FSTl9PTihpbnRlbF9jcnRjLT5hY3RpdmUpKQogCQlyZXR1cm47CisJLyogRW5hYmxl IFBTUjIgdHJhbnNjb2RlciBleGl0IGxpbmUgKi8KKwlpZiAocGlwZV9jb25maWctPmhhc19wc3Iy ICYmIGRldl9wcml2LT5jc3IucHJlZmVyX2RjM2NvKQorCQl0Z2xfZW5hYmxlX3BzcjJfdHJhbnNj b2Rlcl9leGl0bGluZShwaXBlX2NvbmZpZyk7CiAKIAlpbnRlbF9lbmNvZGVyc19wcmVfcGxsX2Vu YWJsZShjcnRjLCBwaXBlX2NvbmZpZywgb2xkX3N0YXRlKTsKIApAQCAtMTMxMTksNyArMTMxMjIs MTQgQEAgc3RhdGljIGludCBpbnRlbF9hdG9taWNfY2hlY2soc3RydWN0IGRybV9kZXZpY2UgKmRl diwKIAkJcmV0dXJuIHJldDsKIAogCWludGVsX2ZiY19jaG9vc2VfY3J0YyhkZXZfcHJpdiwgaW50 ZWxfc3RhdGUpOwotCXJldHVybiBjYWxjX3dhdGVybWFya19kYXRhKGludGVsX3N0YXRlKTsKKwor CXJldCA9IGNhbGNfd2F0ZXJtYXJrX2RhdGEoaW50ZWxfc3RhdGUpOworCWlmIChyZXQpCisJCXJl dHVybiByZXQ7CisKKwl0Z2xfcHJlZmVyX2RjM2NvX292ZXJfZGM1X2NoZWNrKGRldl9wcml2LCBz dGF0ZSk7CisKKwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludCBpbnRlbF9hdG9taWNfcHJlcGFy ZV9jb21taXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCmlu ZGV4IGRlY2RkNzljMzgwNS4uOGRiMDIzNmFkOTlhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9wbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMK QEAgLTQ1OTQsNyArNDU5NCw3IEBAIHNrbF93bV9tZXRob2QyKHUzMiBwaXhlbF9yYXRlLCB1MzIg cGlwZV9odG90YWwsIHUzMiBsYXRlbmN5LAogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyB1aW50 X2ZpeGVkXzE2XzE2X3QKK3VpbnRfZml4ZWRfMTZfMTZfdAogaW50ZWxfZ2V0X2xpbmV0aW1lX3Vz KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUpCiB7CiAJdTMyIHBpeGVsX3Jh dGU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uaAppbmRleCAxNzMzOWM5OTQ0MGMuLjRjMThlMjBiNTBj MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uaAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5oCkBAIC03Niw2ICs3Niw3IEBAIHU2NCBpbnRlbF9y YzZfcmVzaWRlbmN5X25zKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaTkxNV9y ZWdfdCByZWcpOwogdTY0IGludGVsX3JjNl9yZXNpZGVuY3lfdXMoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LCBpOTE1X3JlZ190IHJlZyk7CiAKIHUzMiBpbnRlbF9nZXRfY2FnZihz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBycHN0YXQxKTsKK3VpbnRfZml4 ZWRfMTZfMTZfdCBpbnRlbF9nZXRfbGluZXRpbWVfdXMoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNzdGF0ZSk7CiAKIAogI2VuZGlmIC8qIF9fSU5URUxfUE1fSF9fICovCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKaW5kZXggM2Y4N2U5YmI5Zjk0Li4wNTZiMDJj MWFiNmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0u YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKQEAgLTQyLDYg KzQyLDcgQEAKICNpbmNsdWRlICJpbnRlbF9kcnYuaCIKICNpbmNsdWRlICJpbnRlbF9ob3RwbHVn LmgiCiAjaW5jbHVkZSAiaW50ZWxfc2lkZWJhbmQuaCIKKyNpbmNsdWRlICJpbnRlbF9wbS5oIgog CiAvKioKICAqIERPQzogcnVudGltZSBwbQpAQCAtMTAyMiw2ICsxMDIzLDEwMCBAQCBzdGF0aWMg dm9pZCBnZW45X3NldF9kY19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs IHUzMiBzdGF0ZSkKIAlkZXZfcHJpdi0+Y3NyLmRjX3N0YXRlID0gdmFsICYgbWFzazsKIH0KIAor dm9pZCB0Z2xfZW5hYmxlX3BzcjJfdHJhbnNjb2Rlcl9leGl0bGluZShzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAgKmNzdGF0ZSkKK3sKKwl1MzIgbGluZXRpbWVfdXMsIHZhbCwgZXhpdF9zY2FubGlu ZXM7CisJdTMyIGNydGNfdmRpc3BsYXkgPSBjc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRj X3ZkaXNwbGF5OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo Y3N0YXRlLT5iYXNlLmNydGMtPmRldik7CisKKwlpZiAoV0FSTl9PTihjc3RhdGUtPmNwdV90cmFu c2NvZGVyICE9IFRSQU5TQ09ERVJfQSkpCisJCXJldHVybjsKKworCWxpbmV0aW1lX3VzID0gZml4 ZWQxNl90b191MzJfcm91bmRfdXAoaW50ZWxfZ2V0X2xpbmV0aW1lX3VzKGNzdGF0ZSkpOworCWlm IChXQVJOX09OKCFsaW5ldGltZV91cykpCisJCXJldHVybjsKKwkvKgorCSAqIERDM0NPIEV4aXQg dGltZSAyMDB1cyBCLlNwZWMgNDkxOTYKKwkgKiBQU1IyIHRyYW5zY29kZXIgRWFybHkgRXhpdCBz Y2FubGluZXMgPSBST1VORFVQKDIwMCAvIGxpbmUgdGltZSkgKyAxCisJICogRXhpdCBsaW5lIGV2 ZW50IG5lZWQgdG8gcHJvZ3JhbSBhYm92ZSBjYWxjdWxhdGVkIHNjYW4gbGluZXMgYmVmb3JlCisJ ICogbmV4dCBWQkxBTksuCisJICovCisJZXhpdF9zY2FubGluZXMgPSBESVZfUk9VTkRfVVAoMjAw LCBsaW5ldGltZV91cykgKyAxOworCWlmIChXQVJOX09OKGV4aXRfc2NhbmxpbmVzID4gY3J0Y192 ZGlzcGxheSkpCisJCXJldHVybjsKKworCWV4aXRfc2NhbmxpbmVzID0gY3J0Y192ZGlzcGxheSAt IGV4aXRfc2NhbmxpbmVzOworCWV4aXRfc2NhbmxpbmVzIDw8PSBFWElUTElORV9TSElGVDsKKwl2 YWwgPSBJOTE1X1JFQUQoRVhJVExJTkUoY3N0YXRlLT5jcHVfdHJhbnNjb2RlcikpOworCXZhbCAm PSB+KEVYSVRMSU5FX01BU0sgfCBFWElUTElORV9FTkFCTEUpOworCXZhbCB8PSBleGl0X3NjYW5s aW5lczsKKwl2YWwgfD0gRVhJVExJTkVfRU5BQkxFOworCUk5MTVfV1JJVEUoRVhJVExJTkUoY3N0 YXRlLT5jcHVfdHJhbnNjb2RlciksIHZhbCk7Cit9CisKK3N0YXRpYyBib29sIHRnbF9pc19vbmx5 X2VkcF9jb25uZWN0ZWQoc3RydWN0IGludGVsX2NydGNfc3RhdGUgICpjcnRjX3N0YXRlKQorewor CXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSA9IGNydGNfc3RhdGUtPmJhc2Uuc3RhdGU7 CisJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJh c2UuY3J0Yyk7CisJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgKmVkcF9jb25uZWN0 b3IgPSBOVUxMOworCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uZWN0b3Jfc3RhdGU7 CisJaW50IGk7CisKKwlmb3JfZWFjaF9uZXdfY29ubmVjdG9yX2luX3N0YXRlKHN0YXRlLCBjb25u ZWN0b3IsIGNvbm5lY3Rvcl9zdGF0ZSwgaSkgeworCQlpZiAoY29ubmVjdG9yX3N0YXRlLT5jcnRj ICE9ICZjcnRjLT5iYXNlKQorCQkJY29udGludWU7CisKKwkJaWYgKGNvbm5lY3Rvci0+c3RhdHVz ID09IGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkICYmCisJCSAgICBjb25uZWN0b3ItPmNvbm5l Y3Rvcl90eXBlICE9IERSTV9NT0RFX0NPTk5FQ1RPUl9lRFApCisJCQlyZXR1cm4gZmFsc2U7CisJ CWVsc2UgaWYgKGNvbm5lY3Rvci0+Y29ubmVjdG9yX3R5cGUgPT0gRFJNX01PREVfQ09OTkVDVE9S X2VEUCAmJgorCQkJIGNvbm5lY3Rvci0+c3RhdHVzID09IGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVj dGVkKQorCQkJZWRwX2Nvbm5lY3RvciA9IGNvbm5lY3RvcjsKKwl9CisKKwlpZiAoZWRwX2Nvbm5l Y3RvcikKKwkJcmV0dXJuIHRydWU7CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKKy8qCisgKiB0Z2xf cHJlZmVyX2RjM2NvX292ZXJfZGM1X2NoZWNrIGNoZWNrIHdoZXRoZXIgaXQgaXMgd29ydGggdG8g Y2hvb3NlCisgKiBEQzNDTyBvdmVyIERDNS4gQ3VycmVudGx5IGl0IGp1c3QgY2hlY2sgY3J0YyBw c3IyIGNhcGViaWx0eSBhbmQgb25seQorICogZWRwIGRpc3BsYXkgc2hvdWxkIGJlIGNvbm5lY3Rl ZC4KKyAqIFRPRE86IFByZWZlciBEQzNDTyBvdmVyIERDNSBvbmx5IGluIHZpZGVvIHBsYXliYWNr LgorICovCit2b2lkIHRnbF9wcmVmZXJfZGMzY29fb3Zlcl9kYzVfY2hlY2soc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJCSAgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUg KnN0YXRlKQoreworCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZV9kcm07CisJc3Ry dWN0IGRybV9jcnRjICpjcnRjOworCWludCBpOworCisJZGV2X3ByaXYtPmNzci5wcmVmZXJfZGMz Y28gPSBmYWxzZTsKKworCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgMTIpCisJCXJldHVybjsK KworCWZvcl9lYWNoX25ld19jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlX2Ry bSwgaSkgeworCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9CisJCQl0b19p bnRlbF9jcnRjX3N0YXRlKGNydGNfc3RhdGVfZHJtKTsKKwkJaWYgKCFjcnRjX3N0YXRlLT5oYXNf cHNyMiAmJiBjcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSkgeworCQkJZGV2X3ByaXYtPmNzci5wcmVm ZXJfZGMzY28gPSBmYWxzZTsKKwkJCXJldHVybjsKKwkJfSBlbHNlIGlmIChjcnRjX3N0YXRlLT5o YXNfcHNyMikgeworCQkJaWYgKHRnbF9pc19vbmx5X2VkcF9jb25uZWN0ZWQoY3J0Y19zdGF0ZSkg JiYKKwkJCSAgICBjcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSkgeworCQkJCWRldl9wcml2LT5jc3Iu cHJlZmVyX2RjM2NvID0gdHJ1ZTsKKwkJCQljb250aW51ZTsKKwkJCX0gZWxzZSB7CisJCQkJZGV2 X3ByaXYtPmNzci5wcmVmZXJfZGMzY28gPSBmYWxzZTsKKwkJCQlyZXR1cm47CisJCQl9CisJCX0K Kwl9Cit9CisKIHN0YXRpYyB2b2lkIHRnbF9hbGxvd19kYzNjbyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCiB7CiAJZ2VuOV9zZXRfZGNfc3RhdGUoZGV2X3ByaXYsIERDX1NUQVRF X0VOX0RDM0NPKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRp bWVfcG0uaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uaAppbmRleCBi OTY0Y2E3YWY5YzguLmQ3NGRjMDI1MTQwMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcnVudGltZV9wbS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1 bnRpbWVfcG0uaApAQCAtNDQsNiArNDQsOSBAQCB2b2lkIGJ4dF9kaXNwbGF5X2NvcmVfdW5pbml0 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiB2b2lkIGludGVsX3J1bnRpbWVf cG1fZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiB2b2lkIGludGVs X3J1bnRpbWVfcG1fZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwog dm9pZCBpbnRlbF9ydW50aW1lX3BtX2NsZWFudXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KTsKK3ZvaWQgdGdsX3ByZWZlcl9kYzNjb19vdmVyX2RjNV9jaGVjayhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJICAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0 ZSAqc3RhdGUpOwordm9pZCB0Z2xfZW5hYmxlX3BzcjJfdHJhbnNjb2Rlcl9leGl0bGluZShzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAgKmNzdGF0ZSk7CiAKIGNvbnN0IGNoYXIgKgogaW50ZWxfZGlz cGxheV9wb3dlcl9kb21haW5fc3RyKGVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gZG9t YWluKTsKLS0gCjIuMjEuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4