From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andy Shevchenko Subject: [PATCH v2 1/5] acpi, nfit: Switch to use new generic UUID API Date: Wed, 31 May 2017 22:41:48 +0300 Message-ID: <20170531194152.65927-2-andriy.shevchenko@linux.intel.com> References: <20170531194152.65927-1-andriy.shevchenko@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170531194152.65927-1-andriy.shevchenko@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: Christoph Hellwig , linux-kernel@vger.kernel.org, "Rafael J . Wysocki " , linux-acpi@vger.kernel.org, Dan Williams , Mika Westerberg , Borislav Petkov , intel-gfx@lists.freedesktop.org Cc: Andy Shevchenko List-Id: linux-acpi@vger.kernel.org VGhlcmUgYXJlIG5ldyB0eXBlcyBhbmQgaGVscGVycyB0aGF0IGFyZSBzdXBwb3NlZCB0byBiZSB1 c2VkIGluIG5ldyBjb2RlLgoKQXMgYSBwcmVwYXJhdGlvbiB0byBnZXQgcmlkIG9mIGxlZ2FjeSB0 eXBlcyBhbmQgQVBJIGZ1bmN0aW9ucyBkbwp0aGUgY29udmVyc2lvbiBoZXJlLgoKQ2M6IERhbiBX aWxsaWFtcyA8ZGFuLmoud2lsbGlhbXNAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBBbmR5IFNo ZXZjaGVua28gPGFuZHJpeS5zaGV2Y2hlbmtvQGxpbnV4LmludGVsLmNvbT4KLS0tCiBkcml2ZXJz L2FjcGkvbmZpdC9jb3JlLmMgfCA1NCArKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvYWNwaS9uZml0L25maXQuaCB8ICAzICstLQogaW5jbHVk ZS9saW51eC9hY3BpLmggICAgIHwgIDEgKwogMyBmaWxlcyBjaGFuZ2VkLCAyOSBpbnNlcnRpb25z KCspLCAyOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvbmZpdC9jb3Jl LmMgYi9kcml2ZXJzL2FjcGkvbmZpdC9jb3JlLmMKaW5kZXggNjU2YWNiNWQ3MTY2Li41MDc1MzU4 MmEwYjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9uZml0L2NvcmUuYworKysgYi9kcml2ZXJz L2FjcGkvbmZpdC9jb3JlLmMKQEAgLTc0LDExICs3NCwxMSBAQCBzdHJ1Y3QgbmZpdF90YWJsZV9w cmV2IHsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGZsdXNoZXM7CiB9OwogCi1zdGF0aWMgdTggbmZpdF91 dWlkW05GSVRfVVVJRF9NQVhdWzE2XTsKK3N0YXRpYyBndWlkX3QgbmZpdF91dWlkW05GSVRfVVVJ RF9NQVhdOwogCi1jb25zdCB1OCAqdG9fbmZpdF91dWlkKGVudW0gbmZpdF91dWlkcyBpZCkKK2Nv bnN0IGd1aWRfdCAqdG9fbmZpdF91dWlkKGVudW0gbmZpdF91dWlkcyBpZCkKIHsKLQlyZXR1cm4g bmZpdF91dWlkW2lkXTsKKwlyZXR1cm4gJm5maXRfdXVpZFtpZF07CiB9CiBFWFBPUlRfU1lNQk9M KHRvX25maXRfdXVpZCk7CiAKQEAgLTIyMiw3ICsyMjIsNyBAQCBpbnQgYWNwaV9uZml0X2N0bChz dHJ1Y3QgbnZkaW1tX2J1c19kZXNjcmlwdG9yICpuZF9kZXNjLCBzdHJ1Y3QgbnZkaW1tICpudmRp bW0sCiAJdTMyIG9mZnNldCwgZndfc3RhdHVzID0gMDsKIAlhY3BpX2hhbmRsZSBoYW5kbGU7CiAJ dW5zaWduZWQgaW50IGZ1bmM7Ci0JY29uc3QgdTggKnV1aWQ7CisJY29uc3QgZ3VpZF90ICpndWlk OwogCWludCByYywgaTsKIAogCWZ1bmMgPSBjbWQ7CkBAIC0yNDUsNyArMjQ1LDcgQEAgaW50IGFj cGlfbmZpdF9jdGwoc3RydWN0IG52ZGltbV9idXNfZGVzY3JpcHRvciAqbmRfZGVzYywgc3RydWN0 IG52ZGltbSAqbnZkaW1tLAogCQljbWRfbWFzayA9IG52ZGltbV9jbWRfbWFzayhudmRpbW0pOwog CQlkc21fbWFzayA9IG5maXRfbWVtLT5kc21fbWFzazsKIAkJZGVzYyA9IG5kX2NtZF9kaW1tX2Rl c2MoY21kKTsKLQkJdXVpZCA9IHRvX25maXRfdXVpZChuZml0X21lbS0+ZmFtaWx5KTsKKwkJZ3Vp ZCA9IHRvX25maXRfdXVpZChuZml0X21lbS0+ZmFtaWx5KTsKIAkJaGFuZGxlID0gYWRldi0+aGFu ZGxlOwogCX0gZWxzZSB7CiAJCXN0cnVjdCBhY3BpX2RldmljZSAqYWRldiA9IHRvX2FjcGlfZGV2 KGFjcGlfZGVzYyk7CkBAIC0yNTQsNyArMjU0LDcgQEAgaW50IGFjcGlfbmZpdF9jdGwoc3RydWN0 IG52ZGltbV9idXNfZGVzY3JpcHRvciAqbmRfZGVzYywgc3RydWN0IG52ZGltbSAqbnZkaW1tLAog CQljbWRfbWFzayA9IG5kX2Rlc2MtPmNtZF9tYXNrOwogCQlkc21fbWFzayA9IGNtZF9tYXNrOwog CQlkZXNjID0gbmRfY21kX2J1c19kZXNjKGNtZCk7Ci0JCXV1aWQgPSB0b19uZml0X3V1aWQoTkZJ VF9ERVZfQlVTKTsKKwkJZ3VpZCA9IHRvX25maXRfdXVpZChORklUX0RFVl9CVVMpOwogCQloYW5k bGUgPSBhZGV2LT5oYW5kbGU7CiAJCWRpbW1fbmFtZSA9ICJidXMiOwogCX0KQEAgLTI4OSw3ICsy ODksNyBAQCBpbnQgYWNwaV9uZml0X2N0bChzdHJ1Y3QgbnZkaW1tX2J1c19kZXNjcmlwdG9yICpu ZF9kZXNjLCBzdHJ1Y3QgbnZkaW1tICpudmRpbW0sCiAJCQlpbl9idWYuYnVmZmVyLnBvaW50ZXIs CiAJCQltaW5fdCh1MzIsIDI1NiwgaW5fYnVmLmJ1ZmZlci5sZW5ndGgpLCB0cnVlKTsKIAotCW91 dF9vYmogPSBhY3BpX2V2YWx1YXRlX2RzbShoYW5kbGUsIHV1aWQsIDEsIGZ1bmMsICZpbl9vYmop OworCW91dF9vYmogPSBhY3BpX2V2YWx1YXRlX2RzbShoYW5kbGUsIGd1aWQuYiwgMSwgZnVuYywg JmluX29iaik7CiAJaWYgKCFvdXRfb2JqKSB7CiAJCWRldl9kYmcoZGV2LCAiJXM6JXMgX0RTTSBm YWlsZWQgY21kOiAlc1xuIiwgX19mdW5jX18sIGRpbW1fbmFtZSwKIAkJCQljbWRfbmFtZSk7CkBA IC00MDksNyArNDA5LDcgQEAgaW50IG5maXRfc3BhX3R5cGUoc3RydWN0IGFjcGlfbmZpdF9zeXN0 ZW1fYWRkcmVzcyAqc3BhKQogCWludCBpOwogCiAJZm9yIChpID0gMDsgaSA8IE5GSVRfVVVJRF9N QVg7IGkrKykKLQkJaWYgKG1lbWNtcCh0b19uZml0X3V1aWQoaSksIHNwYS0+cmFuZ2VfZ3VpZCwg MTYpID09IDApCisJCWlmICghZ3VpZF9lcXVhbCh0b19uZml0X3V1aWQoaSksIChndWlkX3QgKikm c3BhLT5yYW5nZV9ndWlkKSkKIAkJCXJldHVybiBpOwogCXJldHVybiAtMTsKIH0KQEAgLTE0MTUs NyArMTQxNSw3IEBAIHN0YXRpYyBpbnQgYWNwaV9uZml0X2FkZF9kaW1tKHN0cnVjdCBhY3BpX25m aXRfZGVzYyAqYWNwaV9kZXNjLAogCXN0cnVjdCBhY3BpX2RldmljZSAqYWRldiwgKmFkZXZfZGlt bTsKIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBhY3BpX2Rlc2MtPmRldjsKIAl1bnNpZ25lZCBsb25n IGRzbV9tYXNrOwotCWNvbnN0IHU4ICp1dWlkOworCWNvbnN0IGd1aWRfdCAqZ3VpZDsKIAlpbnQg aTsKIAlpbnQgZmFtaWx5ID0gLTE7CiAKQEAgLTE0NDQsNyArMTQ0NCw3IEBAIHN0YXRpYyBpbnQg YWNwaV9uZml0X2FkZF9kaW1tKHN0cnVjdCBhY3BpX25maXRfZGVzYyAqYWNwaV9kZXNjLAogCS8q CiAJICogVW50aWwgc3RhbmRhcmRpemF0aW9uIG1hdGVyaWFsaXplcyB3ZSBuZWVkIHRvIGNvbnNp ZGVyIDQKIAkgKiBkaWZmZXJlbnQgY29tbWFuZCBzZXRzLiAgTm90ZSwgdGhhdCBjaGVja2luZyBm b3IgZnVuY3Rpb24wIChiaXQwKQotCSAqIHRlbGxzIHVzIGlmIGFueSBjb21tYW5kcyBhcmUgcmVh Y2hhYmxlIHRocm91Z2ggdGhpcyB1dWlkLgorCSAqIHRlbGxzIHVzIGlmIGFueSBjb21tYW5kcyBh cmUgcmVhY2hhYmxlIHRocm91Z2ggdGhpcyBHVUlELgogCSAqLwogCWZvciAoaSA9IE5WRElNTV9G QU1JTFlfSU5URUw7IGkgPD0gTlZESU1NX0ZBTUlMWV9NU0ZUOyBpKyspCiAJCWlmIChhY3BpX2No ZWNrX2RzbShhZGV2X2RpbW0tPmhhbmRsZSwgdG9fbmZpdF91dWlkKGkpLCAxLCAxKSkKQEAgLTE0 NzQsOSArMTQ3NCw5IEBAIHN0YXRpYyBpbnQgYWNwaV9uZml0X2FkZF9kaW1tKHN0cnVjdCBhY3Bp X25maXRfZGVzYyAqYWNwaV9kZXNjLAogCQlyZXR1cm4gMDsKIAl9CiAKLQl1dWlkID0gdG9fbmZp dF91dWlkKG5maXRfbWVtLT5mYW1pbHkpOworCWd1aWQgPSB0b19uZml0X3V1aWQobmZpdF9tZW0t PmZhbWlseSk7CiAJZm9yX2VhY2hfc2V0X2JpdChpLCAmZHNtX21hc2ssIEJJVFNfUEVSX0xPTkcp Ci0JCWlmIChhY3BpX2NoZWNrX2RzbShhZGV2X2RpbW0tPmhhbmRsZSwgdXVpZCwgMSwgMVVMTCA8 PCBpKSkKKwkJaWYgKGFjcGlfY2hlY2tfZHNtKGFkZXZfZGltbS0+aGFuZGxlLCBndWlkLmIsIDEs IDFVTEwgPDwgaSkpCiAJCQlzZXRfYml0KGksICZuZml0X21lbS0+ZHNtX21hc2spOwogCiAJcmV0 dXJuIDA7CkBAIC0xNjExLDcgKzE2MTEsNyBAQCBzdGF0aWMgaW50IGFjcGlfbmZpdF9yZWdpc3Rl cl9kaW1tcyhzdHJ1Y3QgYWNwaV9uZml0X2Rlc2MgKmFjcGlfZGVzYykKIHN0YXRpYyB2b2lkIGFj cGlfbmZpdF9pbml0X2RzbXMoc3RydWN0IGFjcGlfbmZpdF9kZXNjICphY3BpX2Rlc2MpCiB7CiAJ c3RydWN0IG52ZGltbV9idXNfZGVzY3JpcHRvciAqbmRfZGVzYyA9ICZhY3BpX2Rlc2MtPm5kX2Rl c2M7Ci0JY29uc3QgdTggKnV1aWQgPSB0b19uZml0X3V1aWQoTkZJVF9ERVZfQlVTKTsKKwljb25z dCBndWlkX3QgKmd1aWQgPSB0b19uZml0X3V1aWQoTkZJVF9ERVZfQlVTKTsKIAlzdHJ1Y3QgYWNw aV9kZXZpY2UgKmFkZXY7CiAJaW50IGk7CiAKQEAgLTE2MjEsNyArMTYyMSw3IEBAIHN0YXRpYyB2 b2lkIGFjcGlfbmZpdF9pbml0X2RzbXMoc3RydWN0IGFjcGlfbmZpdF9kZXNjICphY3BpX2Rlc2Mp CiAJCXJldHVybjsKIAogCWZvciAoaSA9IE5EX0NNRF9BUlNfQ0FQOyBpIDw9IE5EX0NNRF9DTEVB Ul9FUlJPUjsgaSsrKQotCQlpZiAoYWNwaV9jaGVja19kc20oYWRldi0+aGFuZGxlLCB1dWlkLCAx LCAxVUxMIDw8IGkpKQorCQlpZiAoYWNwaV9jaGVja19kc20oYWRldi0+aGFuZGxlLCBndWlkLmIs IDEsIDFVTEwgPDwgaSkpCiAJCQlzZXRfYml0KGksICZuZF9kZXNjLT5jbWRfbWFzayk7CiB9CiAK QEAgLTMwNTEsMTkgKzMwNTEsMTkgQEAgc3RhdGljIF9faW5pdCBpbnQgbmZpdF9pbml0KHZvaWQp CiAJQlVJTERfQlVHX09OKHNpemVvZihzdHJ1Y3QgYWNwaV9uZml0X2NvbnRyb2xfcmVnaW9uKSAh PSA4MCk7CiAJQlVJTERfQlVHX09OKHNpemVvZihzdHJ1Y3QgYWNwaV9uZml0X2RhdGFfcmVnaW9u KSAhPSA0MCk7CiAKLQlhY3BpX3N0cl90b191dWlkKFVVSURfVk9MQVRJTEVfTUVNT1JZLCBuZml0 X3V1aWRbTkZJVF9TUEFfVk9MQVRJTEVdKTsKLQlhY3BpX3N0cl90b191dWlkKFVVSURfUEVSU0lT VEVOVF9NRU1PUlksIG5maXRfdXVpZFtORklUX1NQQV9QTV0pOwotCWFjcGlfc3RyX3RvX3V1aWQo VVVJRF9DT05UUk9MX1JFR0lPTiwgbmZpdF91dWlkW05GSVRfU1BBX0RDUl0pOwotCWFjcGlfc3Ry X3RvX3V1aWQoVVVJRF9EQVRBX1JFR0lPTiwgbmZpdF91dWlkW05GSVRfU1BBX0JEV10pOwotCWFj cGlfc3RyX3RvX3V1aWQoVVVJRF9WT0xBVElMRV9WSVJUVUFMX0RJU0ssIG5maXRfdXVpZFtORklU X1NQQV9WRElTS10pOwotCWFjcGlfc3RyX3RvX3V1aWQoVVVJRF9WT0xBVElMRV9WSVJUVUFMX0NE LCBuZml0X3V1aWRbTkZJVF9TUEFfVkNEXSk7Ci0JYWNwaV9zdHJfdG9fdXVpZChVVUlEX1BFUlNJ U1RFTlRfVklSVFVBTF9ESVNLLCBuZml0X3V1aWRbTkZJVF9TUEFfUERJU0tdKTsKLQlhY3BpX3N0 cl90b191dWlkKFVVSURfUEVSU0lTVEVOVF9WSVJUVUFMX0NELCBuZml0X3V1aWRbTkZJVF9TUEFf UENEXSk7Ci0JYWNwaV9zdHJfdG9fdXVpZChVVUlEX05GSVRfQlVTLCBuZml0X3V1aWRbTkZJVF9E RVZfQlVTXSk7Ci0JYWNwaV9zdHJfdG9fdXVpZChVVUlEX05GSVRfRElNTSwgbmZpdF91dWlkW05G SVRfREVWX0RJTU1dKTsKLQlhY3BpX3N0cl90b191dWlkKFVVSURfTkZJVF9ESU1NX05fSFBFMSwg bmZpdF91dWlkW05GSVRfREVWX0RJTU1fTl9IUEUxXSk7Ci0JYWNwaV9zdHJfdG9fdXVpZChVVUlE X05GSVRfRElNTV9OX0hQRTIsIG5maXRfdXVpZFtORklUX0RFVl9ESU1NX05fSFBFMl0pOwotCWFj cGlfc3RyX3RvX3V1aWQoVVVJRF9ORklUX0RJTU1fTl9NU0ZULCBuZml0X3V1aWRbTkZJVF9ERVZf RElNTV9OX01TRlRdKTsKKwlndWlkX3BhcnNlKFVVSURfVk9MQVRJTEVfTUVNT1JZLCAmbmZpdF91 dWlkW05GSVRfU1BBX1ZPTEFUSUxFXSk7CisJZ3VpZF9wYXJzZShVVUlEX1BFUlNJU1RFTlRfTUVN T1JZLCAmbmZpdF91dWlkW05GSVRfU1BBX1BNXSk7CisJZ3VpZF9wYXJzZShVVUlEX0NPTlRST0xf UkVHSU9OLCAmbmZpdF91dWlkW05GSVRfU1BBX0RDUl0pOworCWd1aWRfcGFyc2UoVVVJRF9EQVRB X1JFR0lPTiwgJm5maXRfdXVpZFtORklUX1NQQV9CRFddKTsKKwlndWlkX3BhcnNlKFVVSURfVk9M QVRJTEVfVklSVFVBTF9ESVNLLCAmbmZpdF91dWlkW05GSVRfU1BBX1ZESVNLXSk7CisJZ3VpZF9w YXJzZShVVUlEX1ZPTEFUSUxFX1ZJUlRVQUxfQ0QsICZuZml0X3V1aWRbTkZJVF9TUEFfVkNEXSk7 CisJZ3VpZF9wYXJzZShVVUlEX1BFUlNJU1RFTlRfVklSVFVBTF9ESVNLLCAmbmZpdF91dWlkW05G SVRfU1BBX1BESVNLXSk7CisJZ3VpZF9wYXJzZShVVUlEX1BFUlNJU1RFTlRfVklSVFVBTF9DRCwg Jm5maXRfdXVpZFtORklUX1NQQV9QQ0RdKTsKKwlndWlkX3BhcnNlKFVVSURfTkZJVF9CVVMsICZu Zml0X3V1aWRbTkZJVF9ERVZfQlVTXSk7CisJZ3VpZF9wYXJzZShVVUlEX05GSVRfRElNTSwgJm5m aXRfdXVpZFtORklUX0RFVl9ESU1NXSk7CisJZ3VpZF9wYXJzZShVVUlEX05GSVRfRElNTV9OX0hQ RTEsICZuZml0X3V1aWRbTkZJVF9ERVZfRElNTV9OX0hQRTFdKTsKKwlndWlkX3BhcnNlKFVVSURf TkZJVF9ESU1NX05fSFBFMiwgJm5maXRfdXVpZFtORklUX0RFVl9ESU1NX05fSFBFMl0pOworCWd1 aWRfcGFyc2UoVVVJRF9ORklUX0RJTU1fTl9NU0ZULCAmbmZpdF91dWlkW05GSVRfREVWX0RJTU1f Tl9NU0ZUXSk7CiAKIAluZml0X3dxID0gY3JlYXRlX3NpbmdsZXRocmVhZF93b3JrcXVldWUoIm5m aXQiKTsKIAlpZiAoIW5maXRfd3EpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvbmZpdC9uZml0 LmggYi9kcml2ZXJzL2FjcGkvbmZpdC9uZml0LmgKaW5kZXggNThmYjdkNjhlMDRhLi4yOWJkZDk1 OTUxN2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9uZml0L25maXQuaAorKysgYi9kcml2ZXJz L2FjcGkvbmZpdC9uZml0LmgKQEAgLTE4LDcgKzE4LDYgQEAKICNpbmNsdWRlIDxsaW51eC9saWJu dmRpbW0uaD4KICNpbmNsdWRlIDxsaW51eC9uZGN0bC5oPgogI2luY2x1ZGUgPGxpbnV4L3R5cGVz Lmg+Ci0jaW5jbHVkZSA8bGludXgvdXVpZC5oPgogI2luY2x1ZGUgPGxpbnV4L2FjcGkuaD4KICNp bmNsdWRlIDxhY3BpL2FjdXVpZC5oPgogCkBAIC0yMzcsNyArMjM2LDcgQEAgc3RhdGljIGlubGlu ZSBzdHJ1Y3QgYWNwaV9uZml0X2Rlc2MgKnRvX2FjcGlfZGVzYygKIAlyZXR1cm4gY29udGFpbmVy X29mKG5kX2Rlc2MsIHN0cnVjdCBhY3BpX25maXRfZGVzYywgbmRfZGVzYyk7CiB9CiAKLWNvbnN0 IHU4ICp0b19uZml0X3V1aWQoZW51bSBuZml0X3V1aWRzIGlkKTsKK2NvbnN0IGd1aWRfdCAqdG9f bmZpdF91dWlkKGVudW0gbmZpdF91dWlkcyBpZCk7CiBpbnQgYWNwaV9uZml0X2luaXQoc3RydWN0 IGFjcGlfbmZpdF9kZXNjICphY3BpX2Rlc2MsIHZvaWQgKm5maXQsIGFjcGlfc2l6ZSBzeik7CiB2 b2lkIGFjcGlfbmZpdF9zaHV0ZG93bih2b2lkICpkYXRhKTsKIHZvaWQgX19hY3BpX25maXRfbm90 aWZ5KHN0cnVjdCBkZXZpY2UgKmRldiwgYWNwaV9oYW5kbGUgaGFuZGxlLCB1MzIgZXZlbnQpOwpk aWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9hY3BpLmggYi9pbmNsdWRlL2xpbnV4L2FjcGkuaApp bmRleCAxMzdlNGEzZDg5YzUuLmIwZTE2MzZjYTVjMyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51 eC9hY3BpLmgKKysrIGIvaW5jbHVkZS9saW51eC9hY3BpLmgKQEAgLTM5LDYgKzM5LDcgQEAKICNp bmNsdWRlIDxsaW51eC9keW5hbWljX2RlYnVnLmg+CiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+ CiAjaW5jbHVkZSA8bGludXgvbXV0ZXguaD4KKyNpbmNsdWRlIDxsaW51eC91dWlkLmg+CiAKICNp bmNsdWRlIDxhY3BpL2FjcGlfYnVzLmg+CiAjaW5jbHVkZSA8YWNwaS9hY3BpX2RyaXZlcnMuaD4K LS0gCjIuMTEuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==