From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH v2 6/7] drm/atomic: Convert get_existing_state callers to get_old/new_state Date: Tue, 10 Jan 2017 11:21:37 +0100 Message-ID: <1484043698-6703-7-git-send-email-maarten.lankhorst@linux.intel.com> References: <1484043698-6703-1-git-send-email-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1484043698-6703-1-git-send-email-maarten.lankhorst@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: dri-devel@lists.freedesktop.org Cc: intel-gfx@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org U2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4 LmludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jICAgICAgICB8ICA2 ICsrKy0tLQogZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgfCAzOSArKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2JsZW5k LmMgICAgICAgICB8ICAzICstLQogMyBmaWxlcyBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspLCAy NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5j IGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYwppbmRleCA3YjYxZTBkYTlhY2UuLjY0Mjhl OTQ2OTYwNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jCkBAIC0xMzYyLDggKzEzNjIsOCBAQCBkcm1fYXRv bWljX3NldF9jcnRjX2Zvcl9jb25uZWN0b3Ioc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNv bm5fc3RhdGUsCiAJCXJldHVybiAwOwogCiAJaWYgKGNvbm5fc3RhdGUtPmNydGMpIHsKLQkJY3J0 Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X2V4aXN0aW5nX2NydGNfc3RhdGUoY29ubl9zdGF0ZS0+ c3RhdGUsCi0JCQkJCQkJCWNvbm5fc3RhdGUtPmNydGMpOworCQljcnRjX3N0YXRlID0gZHJtX2F0 b21pY19nZXRfbmV3X2NydGNfc3RhdGUoY29ubl9zdGF0ZS0+c3RhdGUsCisJCQkJCQkJICAgY29u bl9zdGF0ZS0+Y3J0Yyk7CiAKIAkJY3J0Y19zdGF0ZS0+Y29ubmVjdG9yX21hc2sgJj0KIAkJCX4o MSA8PCBkcm1fY29ubmVjdG9yX2luZGV4KGNvbm5fc3RhdGUtPmNvbm5lY3RvcikpOwpAQCAtMTQ4 MCw3ICsxNDgwLDcgQEAgZHJtX2F0b21pY19hZGRfYWZmZWN0ZWRfcGxhbmVzKHN0cnVjdCBkcm1f YXRvbWljX3N0YXRlICpzdGF0ZSwKIHsKIAlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKIAotCVdB Uk5fT04oIWRybV9hdG9taWNfZ2V0X2V4aXN0aW5nX2NydGNfc3RhdGUoc3RhdGUsIGNydGMpKTsK KwlXQVJOX09OKCFkcm1fYXRvbWljX2dldF9uZXdfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0YykpOwog CiAJZHJtX2Zvcl9lYWNoX3BsYW5lX21hc2socGxhbmUsIHN0YXRlLT5kZXYsIGNydGMtPnN0YXRl LT5wbGFuZV9tYXNrKSB7CiAJCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlID0K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jIGIvZHJpdmVy cy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMKaW5kZXggYjU3Nzk3NzMyMmQwLi4wYjc3MGVl ZTA5NTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCkBAIC03MCw4ICs3MCw3IEBA IGRybV9hdG9taWNfaGVscGVyX3BsYW5lX2NoYW5nZWQoc3RydWN0IGRybV9hdG9taWNfc3RhdGUg KnN0YXRlLAogCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKIAogCWlmIChvbGRf cGxhbmVfc3RhdGUtPmNydGMpIHsKLQkJY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X2V4aXN0 aW5nX2NydGNfc3RhdGUoc3RhdGUsCi0JCQkJCQkJCW9sZF9wbGFuZV9zdGF0ZS0+Y3J0Yyk7CisJ CWNydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9uZXdfY3J0Y19zdGF0ZShzdGF0ZSwgb2xkX3Bs YW5lX3N0YXRlLT5jcnRjKTsKIAogCQlpZiAoV0FSTl9PTighY3J0Y19zdGF0ZSkpCiAJCQlyZXR1 cm47CkBAIC04MCw4ICs3OSw3IEBAIGRybV9hdG9taWNfaGVscGVyX3BsYW5lX2NoYW5nZWQoc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAogCX0KIAogCWlmIChwbGFuZV9zdGF0ZS0+Y3J0 YykgewotCQljcnRjX3N0YXRlID0gZHJtX2F0b21pY19nZXRfZXhpc3RpbmdfY3J0Y19zdGF0ZShz dGF0ZSwKLQkJCQkJCQkJcGxhbmVfc3RhdGUtPmNydGMpOworCQljcnRjX3N0YXRlID0gZHJtX2F0 b21pY19nZXRfbmV3X2NydGNfc3RhdGUoc3RhdGUsIHBsYW5lX3N0YXRlLT5jcnRjKTsKIAogCQlp ZiAoV0FSTl9PTighY3J0Y19zdGF0ZSkpCiAJCQlyZXR1cm47CkBAIC0xNTAsNyArMTQ4LDcgQEAg c3RhdGljIGludCBoYW5kbGVfY29uZmxpY3RpbmdfZW5jb2RlcnMoc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKnN0YXRlLAogCWRybV9mb3JfZWFjaF9jb25uZWN0b3JfaXRlcihjb25uZWN0b3IsICZj b25uX2l0ZXIpIHsKIAkJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwogCi0JCWlm IChkcm1fYXRvbWljX2dldF9leGlzdGluZ19jb25uZWN0b3Jfc3RhdGUoc3RhdGUsIGNvbm5lY3Rv cikpCisJCWlmIChkcm1fYXRvbWljX2dldF9uZXdfY29ubmVjdG9yX3N0YXRlKHN0YXRlLCBjb25u ZWN0b3IpKQogCQkJY29udGludWU7CiAKIAkJZW5jb2RlciA9IGNvbm5lY3Rvci0+c3RhdGUtPmJl c3RfZW5jb2RlcjsKQEAgLTE3OCw3ICsxNzYsNyBAQCBzdGF0aWMgaW50IGhhbmRsZV9jb25mbGlj dGluZ19lbmNvZGVycyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCiAJCQkJIGNvbm5f c3RhdGUtPmNydGMtPmJhc2UuaWQsIGNvbm5fc3RhdGUtPmNydGMtPm5hbWUsCiAJCQkJIGNvbm5l Y3Rvci0+YmFzZS5pZCwgY29ubmVjdG9yLT5uYW1lKTsKIAotCQljcnRjX3N0YXRlID0gZHJtX2F0 b21pY19nZXRfZXhpc3RpbmdfY3J0Y19zdGF0ZShzdGF0ZSwgY29ubl9zdGF0ZS0+Y3J0Yyk7CisJ CWNydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9uZXdfY3J0Y19zdGF0ZShzdGF0ZSwgY29ubl9z dGF0ZS0+Y3J0Yyk7CiAKIAkJcmV0ID0gZHJtX2F0b21pY19zZXRfY3J0Y19mb3JfY29ubmVjdG9y KGNvbm5fc3RhdGUsIE5VTEwpOwogCQlpZiAocmV0KQpAQCAtMjE5LDcgKzIxNyw3IEBAIHNldF9i ZXN0X2VuY29kZXIoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAogCQkgKi8KIAkJV0FS Tl9PTighY3J0YyAmJiBlbmNvZGVyICE9IGNvbm5fc3RhdGUtPmJlc3RfZW5jb2Rlcik7CiAJCWlm IChjcnRjKSB7Ci0JCQljcnRjX3N0YXRlID0gZHJtX2F0b21pY19nZXRfZXhpc3RpbmdfY3J0Y19z dGF0ZShzdGF0ZSwgY3J0Yyk7CisJCQljcnRjX3N0YXRlID0gZHJtX2F0b21pY19nZXRfbmV3X2Ny dGNfc3RhdGUoc3RhdGUsIGNydGMpOwogCiAJCQljcnRjX3N0YXRlLT5lbmNvZGVyX21hc2sgJj0K IAkJCQl+KDEgPDwgZHJtX2VuY29kZXJfaW5kZXgoY29ubl9zdGF0ZS0+YmVzdF9lbmNvZGVyKSk7 CkBAIC0yMzAsNyArMjI4LDcgQEAgc2V0X2Jlc3RfZW5jb2RlcihzdHJ1Y3QgZHJtX2F0b21pY19z dGF0ZSAqc3RhdGUsCiAJCWNydGMgPSBjb25uX3N0YXRlLT5jcnRjOwogCQlXQVJOX09OKCFjcnRj KTsKIAkJaWYgKGNydGMpIHsKLQkJCWNydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9leGlzdGlu Z19jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsKKwkJCWNydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dl dF9uZXdfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7CiAKIAkJCWNydGNfc3RhdGUtPmVuY29kZXJf bWFzayB8PQogCQkJCTEgPDwgZHJtX2VuY29kZXJfaW5kZXgoZW5jb2Rlcik7CkBAIC0yNjMsNyAr MjYxLDcgQEAgc3RlYWxfZW5jb2RlcihzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCiAK IAkJc2V0X2Jlc3RfZW5jb2RlcihzdGF0ZSwgbmV3X2Nvbm5lY3Rvcl9zdGF0ZSwgTlVMTCk7CiAK LQkJY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X2V4aXN0aW5nX2NydGNfc3RhdGUoc3RhdGUs IGVuY29kZXJfY3J0Yyk7CisJCWNydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9uZXdfY3J0Y19z dGF0ZShzdGF0ZSwgZW5jb2Rlcl9jcnRjKTsKIAkJY3J0Y19zdGF0ZS0+Y29ubmVjdG9yc19jaGFu Z2VkID0gdHJ1ZTsKIAogCQlyZXR1cm47CkBAIC0yODYsMTIgKzI4NCwxMiBAQCB1cGRhdGVfY29u bmVjdG9yX3JvdXRpbmcoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAogCiAJaWYgKG9s ZF9jb25uZWN0b3Jfc3RhdGUtPmNydGMgIT0gbmV3X2Nvbm5lY3Rvcl9zdGF0ZS0+Y3J0Yykgewog CQlpZiAob2xkX2Nvbm5lY3Rvcl9zdGF0ZS0+Y3J0YykgewotCQkJY3J0Y19zdGF0ZSA9IGRybV9h dG9taWNfZ2V0X2V4aXN0aW5nX2NydGNfc3RhdGUoc3RhdGUsIG9sZF9jb25uZWN0b3Jfc3RhdGUt PmNydGMpOworCQkJY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0 YXRlLCBvbGRfY29ubmVjdG9yX3N0YXRlLT5jcnRjKTsKIAkJCWNydGNfc3RhdGUtPmNvbm5lY3Rv cnNfY2hhbmdlZCA9IHRydWU7CiAJCX0KIAogCQlpZiAobmV3X2Nvbm5lY3Rvcl9zdGF0ZS0+Y3J0 YykgewotCQkJY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X2V4aXN0aW5nX2NydGNfc3RhdGUo c3RhdGUsIG5ld19jb25uZWN0b3Jfc3RhdGUtPmNydGMpOworCQkJY3J0Y19zdGF0ZSA9IGRybV9h dG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRlLCBuZXdfY29ubmVjdG9yX3N0YXRlLT5jcnRj KTsKIAkJCWNydGNfc3RhdGUtPmNvbm5lY3RvcnNfY2hhbmdlZCA9IHRydWU7CiAJCX0KIAl9CkBA IC0zNDksNyArMzQ3LDcgQEAgdXBkYXRlX2Nvbm5lY3Rvcl9yb3V0aW5nKHN0cnVjdCBkcm1fYXRv bWljX3N0YXRlICpzdGF0ZSwKIAogCXNldF9iZXN0X2VuY29kZXIoc3RhdGUsIG5ld19jb25uZWN0 b3Jfc3RhdGUsIG5ld19lbmNvZGVyKTsKIAotCWNydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9l eGlzdGluZ19jcnRjX3N0YXRlKHN0YXRlLCBuZXdfY29ubmVjdG9yX3N0YXRlLT5jcnRjKTsKKwlj cnRjX3N0YXRlID0gZHJtX2F0b21pY19nZXRfbmV3X2NydGNfc3RhdGUoc3RhdGUsIG5ld19jb25u ZWN0b3Jfc3RhdGUtPmNydGMpOwogCWNydGNfc3RhdGUtPmNvbm5lY3RvcnNfY2hhbmdlZCA9IHRy dWU7CiAKIAlEUk1fREVCVUdfQVRPTUlDKCJbQ09OTkVDVE9SOiVkOiVzXSB1c2luZyBbRU5DT0RF UjolZDolc10gb24gW0NSVEM6JWQ6JXNdXG4iLApAQCAtMzkwLDggKzM4OCw3IEBAIG1vZGVfZml4 dXAoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQogCQlpZiAoIWNvbm5fc3RhdGUtPmNy dGMgfHwgIWNvbm5fc3RhdGUtPmJlc3RfZW5jb2RlcikKIAkJCWNvbnRpbnVlOwogCi0JCWNydGNf c3RhdGUgPSBkcm1fYXRvbWljX2dldF9leGlzdGluZ19jcnRjX3N0YXRlKHN0YXRlLAotCQkJCQkJ CQljb25uX3N0YXRlLT5jcnRjKTsKKwkJY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X25ld19j cnRjX3N0YXRlKHN0YXRlLCBjb25uX3N0YXRlLT5jcnRjKTsKIAogCQkvKgogCQkgKiBFYWNoIGVu Y29kZXIgaGFzIGF0IG1vc3Qgb25lIGNvbm5lY3RvciAoc2luY2Ugd2UgYWx3YXlzIHN0ZWFsCkBA IC02OTgsOCArNjk1LDcgQEAgZGlzYWJsZV9vdXRwdXRzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCiAJCWlmICghb2xkX2Nvbm5fc3Rh dGUtPmNydGMpCiAJCQljb250aW51ZTsKIAotCQlvbGRfY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNf Z2V0X2V4aXN0aW5nX2NydGNfc3RhdGUob2xkX3N0YXRlLAotCQkJCQkJCQkgICAgb2xkX2Nvbm5f c3RhdGUtPmNydGMpOworCQlvbGRfY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X25ld19jcnRj X3N0YXRlKG9sZF9zdGF0ZSwgb2xkX2Nvbm5fc3RhdGUtPmNydGMpOwogCiAJCWlmICghb2xkX2Ny dGNfc3RhdGUtPmFjdGl2ZSB8fAogCQkgICAgIWRybV9hdG9taWNfY3J0Y19uZWVkc19tb2Rlc2V0 KG9sZF9jb25uX3N0YXRlLT5jcnRjLT5zdGF0ZSkpCkBAIC04MjgsMTQgKzgyNCwxNSBAQCBkcm1f YXRvbWljX2hlbHBlcl91cGRhdGVfbGVnYWN5X21vZGVzZXRfc3RhdGUoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKIAkvKiBzZXQgbGVnYWN5IHN0YXRlIGluIHRoZSBjcnRjIHN0cnVjdHVyZSAqLwog CWZvcl9lYWNoX25ld19jcnRjX2luX3N0YXRlKG9sZF9zdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwg aSkgewogCQlzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5ID0gY3J0Yy0+cHJpbWFyeTsKKwkJc3Ry dWN0IGRybV9wbGFuZV9zdGF0ZSAqb2xkX3BsYW5lX3N0YXRlOwogCiAJCWNydGMtPm1vZGUgPSBj cnRjX3N0YXRlLT5tb2RlOwogCQljcnRjLT5lbmFibGVkID0gY3J0Y19zdGF0ZS0+ZW5hYmxlOwog Ci0JCWlmIChkcm1fYXRvbWljX2dldF9leGlzdGluZ19wbGFuZV9zdGF0ZShvbGRfc3RhdGUsIHBy aW1hcnkpICYmCi0JCSAgICBwcmltYXJ5LT5zdGF0ZS0+Y3J0YyA9PSBjcnRjKSB7Ci0JCQljcnRj LT54ID0gcHJpbWFyeS0+c3RhdGUtPnNyY194ID4+IDE2OwotCQkJY3J0Yy0+eSA9IHByaW1hcnkt PnN0YXRlLT5zcmNfeSA+PiAxNjsKKwkJb2xkX3BsYW5lX3N0YXRlID0gZHJtX2F0b21pY19nZXRf b2xkX3BsYW5lX3N0YXRlKG9sZF9zdGF0ZSwgcHJpbWFyeSk7CisJCWlmIChvbGRfcGxhbmVfc3Rh dGUgJiYgb2xkX3BsYW5lX3N0YXRlLT5jcnRjID09IGNydGMpIHsKKwkJCWNydGMtPnggPSBvbGRf cGxhbmVfc3RhdGUtPnNyY194ID4+IDE2OworCQkJY3J0Yy0+eSA9IG9sZF9wbGFuZV9zdGF0ZS0+ c3JjX3kgPj4gMTY7CiAJCX0KIAogCQlpZiAoY3J0Y19zdGF0ZS0+ZW5hYmxlKQpAQCAtMTgzNSw3 ICsxODMyLDcgQEAgZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X3BsYW5lc19vbl9jcnRjKHN0cnVj dCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUpCiAKIAlkcm1fZm9yX2VhY2hfcGxhbmVf bWFzayhwbGFuZSwgY3J0Yy0+ZGV2LCBwbGFuZV9tYXNrKSB7CiAJCXN0cnVjdCBkcm1fcGxhbmVf c3RhdGUgKm9sZF9wbGFuZV9zdGF0ZSA9Ci0JCQlkcm1fYXRvbWljX2dldF9leGlzdGluZ19wbGFu ZV9zdGF0ZShvbGRfc3RhdGUsIHBsYW5lKTsKKwkJCWRybV9hdG9taWNfZ2V0X29sZF9wbGFuZV9z dGF0ZShvbGRfc3RhdGUsIHBsYW5lKTsKIAkJY29uc3Qgc3RydWN0IGRybV9wbGFuZV9oZWxwZXJf ZnVuY3MgKnBsYW5lX2Z1bmNzOwogCiAJCXBsYW5lX2Z1bmNzID0gcGxhbmUtPmhlbHBlcl9wcml2 YXRlOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9ibGVuZC5jIGIvZHJpdmVycy9n cHUvZHJtL2RybV9ibGVuZC5jCmluZGV4IDFmMjQxMmM3Y2NmZC4uNWM0NWQwODUyNjA4IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2JsZW5kLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2RybV9ibGVuZC5jCkBAIC0zODgsOCArMzg4LDcgQEAgaW50IGRybV9hdG9taWNfbm9ybWFsaXpl X3pwb3Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJaWYgKCFjcnRjKQogCQkJY29udGludWU7 CiAJCWlmIChwbGFuZS0+c3RhdGUtPnpwb3MgIT0gcGxhbmVfc3RhdGUtPnpwb3MpIHsKLQkJCWNy dGNfc3RhdGUgPQotCQkJCWRybV9hdG9taWNfZ2V0X2V4aXN0aW5nX2NydGNfc3RhdGUoc3RhdGUs IGNydGMpOworCQkJY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0 YXRlLCBjcnRjKTsKIAkJCWNydGNfc3RhdGUtPnpwb3NfY2hhbmdlZCA9IHRydWU7CiAJCX0KIAl9 Ci0tIAoyLjcuNAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==