From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mauro Rossi Subject: [PATCH 04/10] drm/amd/display: dc/bios: add support for DCE6 Date: Mon, 8 Oct 2018 04:23:38 +0200 Message-ID: <20181008022344.10247-5-issor.oruam@gmail.com> References: <20181008022344.10247-1-issor.oruam@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181008022344.10247-1-issor.oruam-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: harry.wentland-5C7GfCeVMHo@public.gmane.org RENFNiB0YXJnZXRzIGFyZSBhZGRlZCByZXBsaWNhdGluZyBleGlzdGluZyBEQ0U4IGltcGxlbWVu dGF0aW9uLgotLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9iaW9zL01ha2VmaWxl ICB8ICAgOSArCiAuLi4vZGlzcGxheS9kYy9iaW9zL2NvbW1hbmRfdGFibGVfaGVscGVyLmMgICAg fCAgIDggKwogLi4uL2Rpc3BsYXkvZGMvYmlvcy9jb21tYW5kX3RhYmxlX2hlbHBlci5oICAgIHwg ICAzICsKIC4uLi9kaXNwbGF5L2RjL2Jpb3MvY29tbWFuZF90YWJsZV9oZWxwZXIyLmMgICB8ICAg OCArCiAuLi4vZGlzcGxheS9kYy9iaW9zL2NvbW1hbmRfdGFibGVfaGVscGVyMi5oICAgfCAgIDMg KwogLi4uL2Jpb3MvZGNlNjAvY29tbWFuZF90YWJsZV9oZWxwZXJfZGNlNjAuYyAgIHwgMzU0ICsr KysrKysrKysrKysrKysrKwogLi4uL2Jpb3MvZGNlNjAvY29tbWFuZF90YWJsZV9oZWxwZXJfZGNl NjAuaCAgIHwgIDMzICsrCiA3IGZpbGVzIGNoYW5nZWQsIDQxOCBpbnNlcnRpb25zKCspCiBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2Jpb3MvZGNlNjAv Y29tbWFuZF90YWJsZV9oZWxwZXJfZGNlNjAuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv Z3B1L2RybS9hbWQvZGlzcGxheS9kYy9iaW9zL2RjZTYwL2NvbW1hbmRfdGFibGVfaGVscGVyX2Rj ZTYwLmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvYmlvcy9N YWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9iaW9zL01ha2VmaWxlCmlu ZGV4IDIzOWU4NmJiZWM1YS4uZWQ2YjVlOTc2M2Y2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2Rpc3BsYXkvZGMvYmlvcy9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2Rpc3BsYXkvZGMvYmlvcy9NYWtlZmlsZQpAQCAtMzEsNiArMzEsMTUgQEAgQU1EX0RBTF9CSU9T ID0gJChhZGRwcmVmaXggJChBTUREQUxQQVRIKS9kYy9iaW9zLywkKEJJT1MpKQogCiBBTURfRElT UExBWV9GSUxFUyArPSAkKEFNRF9EQUxfQklPUykKIAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor IyBEQ0UgNngKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgQWxsIERDRTYueCBhcmUgZGVyaXZl ZCBmcm9tIERDRTYuMCwgc28gNi4wIE1VU1QgYmUgZGVmaW5lZCBpZiBBTlkgb2YKKyMgRENFNi54 IGlzIGNvbXBpbGVkLgoraWZkZWYgQ09ORklHX0RSTV9BTURfRENfU0kKK0FNRF9ESVNQTEFZX0ZJ TEVTICs9ICQoQU1EREFMUEFUSCkvZGMvYmlvcy9kY2U2MC9jb21tYW5kX3RhYmxlX2hlbHBlcl9k Y2U2MC5vCitlbmRpZgorCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIERDRSA4eAogIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5 L2RjL2Jpb3MvY29tbWFuZF90YWJsZV9oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlz cGxheS9kYy9iaW9zL2NvbW1hbmRfdGFibGVfaGVscGVyLmMKaW5kZXggMjUzYmJiMWVlYTYwLi40 OGI0ZWYwM2ZjOGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9i aW9zL2NvbW1hbmRfdGFibGVfaGVscGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNw bGF5L2RjL2Jpb3MvY29tbWFuZF90YWJsZV9oZWxwZXIuYwpAQCAtMzYsNiArMzYsMTQgQEAgYm9v bCBkYWxfYmlvc19wYXJzZXJfaW5pdF9jbWRfdGJsX2hlbHBlcigKIAllbnVtIGRjZV92ZXJzaW9u IGRjZSkKIHsKIAlzd2l0Y2ggKGRjZSkgeworI2lmIGRlZmluZWQoQ09ORklHX0RSTV9BTURfRENf U0kpCisJY2FzZSBEQ0VfVkVSU0lPTl82XzA6CisJY2FzZSBEQ0VfVkVSU0lPTl82XzE6CisJY2Fz ZSBEQ0VfVkVSU0lPTl82XzQ6CisJCSpoID0gZGFsX2NtZF90YmxfaGVscGVyX2RjZTYwX2dldF90 YWJsZSgpOworCQlyZXR1cm4gdHJ1ZTsKKyNlbmRpZgorCiAJY2FzZSBEQ0VfVkVSU0lPTl84XzA6 CiAJY2FzZSBEQ0VfVkVSU0lPTl84XzE6CiAJY2FzZSBEQ0VfVkVSU0lPTl84XzM6CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvYmlvcy9jb21tYW5kX3RhYmxlX2hl bHBlci5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2Jpb3MvY29tbWFuZF90YWJs ZV9oZWxwZXIuaAppbmRleCA0YzM3ODlkZjI1M2QuLmRmZDMwYWFmNDAzMiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2Jpb3MvY29tbWFuZF90YWJsZV9oZWxwZXIu aAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvYmlvcy9jb21tYW5kX3RhYmxl X2hlbHBlci5oCkBAIC0yNiw2ICsyNiw5IEBACiAjaWZuZGVmIF9fREFMX0NPTU1BTkRfVEFCTEVf SEVMUEVSX0hfXwogI2RlZmluZSBfX0RBTF9DT01NQU5EX1RBQkxFX0hFTFBFUl9IX18KIAorI2lm IGRlZmluZWQoQ09ORklHX0RSTV9BTURfRENfU0kpCisjaW5jbHVkZSAiZGNlNjAvY29tbWFuZF90 YWJsZV9oZWxwZXJfZGNlNjAuaCIKKyNlbmRpZgogI2luY2x1ZGUgImRjZTgwL2NvbW1hbmRfdGFi bGVfaGVscGVyX2RjZTgwLmgiCiAjaW5jbHVkZSAiZGNlMTEwL2NvbW1hbmRfdGFibGVfaGVscGVy X2RjZTExMC5oIgogI2luY2x1ZGUgImRjZTExMi9jb21tYW5kX3RhYmxlX2hlbHBlcl9kY2UxMTIu aCIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9iaW9zL2NvbW1h bmRfdGFibGVfaGVscGVyMi5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2Jpb3Mv Y29tbWFuZF90YWJsZV9oZWxwZXIyLmMKaW5kZXggYmJiY2VmNTY2YzU1Li5kYWQzMDI1NjRkYTQg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9iaW9zL2NvbW1hbmRf dGFibGVfaGVscGVyMi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9iaW9z L2NvbW1hbmRfdGFibGVfaGVscGVyMi5jCkBAIC0zNyw2ICszNywxNCBAQCBib29sIGRhbF9iaW9z X3BhcnNlcl9pbml0X2NtZF90YmxfaGVscGVyMigKIAllbnVtIGRjZV92ZXJzaW9uIGRjZSkKIHsK IAlzd2l0Y2ggKGRjZSkgeworI2lmIGRlZmluZWQoQ09ORklHX0RSTV9BTURfRENfU0kpCisJY2Fz ZSBEQ0VfVkVSU0lPTl82XzA6CisJY2FzZSBEQ0VfVkVSU0lPTl82XzE6CisJY2FzZSBEQ0VfVkVS U0lPTl82XzQ6CisJCSpoID0gZGFsX2NtZF90YmxfaGVscGVyX2RjZTYwX2dldF90YWJsZSgpOwor CQlyZXR1cm4gdHJ1ZTsKKyNlbmRpZgorCiAJY2FzZSBEQ0VfVkVSU0lPTl84XzA6CiAJY2FzZSBE Q0VfVkVSU0lPTl84XzE6CiAJY2FzZSBEQ0VfVkVSU0lPTl84XzM6CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvYmlvcy9jb21tYW5kX3RhYmxlX2hlbHBlcjIuaCBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9iaW9zL2NvbW1hbmRfdGFibGVfaGVscGVy Mi5oCmluZGV4IDc4NWZjYjIwYTFiOS4uNjZlMGEzZTczNzY4IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvYmlvcy9jb21tYW5kX3RhYmxlX2hlbHBlcjIuaAorKysg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvYmlvcy9jb21tYW5kX3RhYmxlX2hlbHBl cjIuaApAQCAtMjYsNiArMjYsOSBAQAogI2lmbmRlZiBfX0RBTF9DT01NQU5EX1RBQkxFX0hFTFBF UjJfSF9fCiAjZGVmaW5lIF9fREFMX0NPTU1BTkRfVEFCTEVfSEVMUEVSMl9IX18KIAorI2lmIGRl ZmluZWQoQ09ORklHX0RSTV9BTURfRENfU0kpCisjaW5jbHVkZSAiZGNlNjAvY29tbWFuZF90YWJs ZV9oZWxwZXJfZGNlNjAuaCIKKyNlbmRpZgogI2luY2x1ZGUgImRjZTgwL2NvbW1hbmRfdGFibGVf aGVscGVyX2RjZTgwLmgiCiAjaW5jbHVkZSAiZGNlMTEwL2NvbW1hbmRfdGFibGVfaGVscGVyX2Rj ZTExMC5oIgogI2luY2x1ZGUgImRjZTExMi9jb21tYW5kX3RhYmxlX2hlbHBlcjJfZGNlMTEyLmgi CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvYmlvcy9kY2U2MC9j b21tYW5kX3RhYmxlX2hlbHBlcl9kY2U2MC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5 L2RjL2Jpb3MvZGNlNjAvY29tbWFuZF90YWJsZV9oZWxwZXJfZGNlNjAuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjU1Mjc3OGNlOTgzNQotLS0gL2Rldi9udWxsCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9iaW9zL2RjZTYwL2NvbW1hbmRfdGFi bGVfaGVscGVyX2RjZTYwLmMKQEAgLTAsMCArMSwzNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAx Mi0xNSBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuCisgKgorICogUGVybWlzc2lvbiBpcyBo ZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEK KyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZp bGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0 IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRz IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGlj ZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJt aXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNv LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUg Y29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNs dWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29m dHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQg V0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBC VVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICog RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElO IE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQ09QWVJJR0hUIEhPTERFUihTKSBPUiBBVVRIT1IoUykg QkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKKyAqIE9USEVSIExJQUJJTElUWSwg V0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAorICog QVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBP UiBUSEUgVVNFIE9SCisgKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgorICog QXV0aG9yczogQU1ECisgKgorICovCisKKyNpbmNsdWRlICJkbV9zZXJ2aWNlcy5oIgorCisjaW5j bHVkZSAiYXRvbS5oIgorCisjaW5jbHVkZSAiaW5jbHVkZS9ncnBoX29iamVjdF9pZC5oIgorI2lu Y2x1ZGUgImluY2x1ZGUvZ3JwaF9vYmplY3RfZGVmcy5oIgorI2luY2x1ZGUgImluY2x1ZGUvYmlv c19wYXJzZXJfdHlwZXMuaCIKKworI2luY2x1ZGUgIi4uL2NvbW1hbmRfdGFibGVfaGVscGVyLmgi CisKK3N0YXRpYyB1aW50OF90IGVuY29kZXJfYWN0aW9uX3RvX2F0b20oZW51bSBicF9lbmNvZGVy X2NvbnRyb2xfYWN0aW9uIGFjdGlvbikKK3sKKwl1aW50OF90IGF0b21fYWN0aW9uID0gMDsKKwor CXN3aXRjaCAoYWN0aW9uKSB7CisJY2FzZSBFTkNPREVSX0NPTlRST0xfRU5BQkxFOgorCQlhdG9t X2FjdGlvbiA9IEFUT01fRU5BQkxFOworCQlicmVhazsKKwljYXNlIEVOQ09ERVJfQ09OVFJPTF9E SVNBQkxFOgorCQlhdG9tX2FjdGlvbiA9IEFUT01fRElTQUJMRTsKKwkJYnJlYWs7CisJY2FzZSBF TkNPREVSX0NPTlRST0xfU0VUVVA6CisJCWF0b21fYWN0aW9uID0gQVRPTV9FTkNPREVSX0NNRF9T RVRVUDsKKwkJYnJlYWs7CisJY2FzZSBFTkNPREVSX0NPTlRST0xfSU5JVDoKKwkJYXRvbV9hY3Rp b24gPSBBVE9NX0VOQ09ERVJfSU5JVDsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJQlJFQUtfVE9f REVCVUdHRVIoKTsgLyogVW5oYW5kbGUgYWN0aW9uIGluIGRyaXZlci4hISAqLworCQlicmVhazsK Kwl9CisKKwlyZXR1cm4gYXRvbV9hY3Rpb247Cit9CisKK3N0YXRpYyBib29sIGVuZ2luZV9icF90 b19hdG9tKGVudW0gZW5naW5lX2lkIGlkLCB1aW50MzJfdCAqYXRvbV9lbmdpbmVfaWQpCit7CisJ Ym9vbCByZXN1bHQgPSBmYWxzZTsKKworCWlmIChhdG9tX2VuZ2luZV9pZCAhPSBOVUxMKQorCQlz d2l0Y2ggKGlkKSB7CisJCWNhc2UgRU5HSU5FX0lEX0RJR0E6CisJCQkqYXRvbV9lbmdpbmVfaWQg PSBBU0lDX0lOVF9ESUcxX0VOQ09ERVJfSUQ7CisJCQlyZXN1bHQgPSB0cnVlOworCQkJYnJlYWs7 CisJCWNhc2UgRU5HSU5FX0lEX0RJR0I6CisJCQkqYXRvbV9lbmdpbmVfaWQgPSBBU0lDX0lOVF9E SUcyX0VOQ09ERVJfSUQ7CisJCQlyZXN1bHQgPSB0cnVlOworCQkJYnJlYWs7CisJCWNhc2UgRU5H SU5FX0lEX0RJR0M6CisJCQkqYXRvbV9lbmdpbmVfaWQgPSBBU0lDX0lOVF9ESUczX0VOQ09ERVJf SUQ7CisJCQlyZXN1bHQgPSB0cnVlOworCQkJYnJlYWs7CisJCWNhc2UgRU5HSU5FX0lEX0RJR0Q6 CisJCQkqYXRvbV9lbmdpbmVfaWQgPSBBU0lDX0lOVF9ESUc0X0VOQ09ERVJfSUQ7CisJCQlyZXN1 bHQgPSB0cnVlOworCQkJYnJlYWs7CisJCWNhc2UgRU5HSU5FX0lEX0RJR0U6CisJCQkqYXRvbV9l bmdpbmVfaWQgPSBBU0lDX0lOVF9ESUc1X0VOQ09ERVJfSUQ7CisJCQlyZXN1bHQgPSB0cnVlOwor CQkJYnJlYWs7CisJCWNhc2UgRU5HSU5FX0lEX0RJR0Y6CisJCQkqYXRvbV9lbmdpbmVfaWQgPSBB U0lDX0lOVF9ESUc2X0VOQ09ERVJfSUQ7CisJCQlyZXN1bHQgPSB0cnVlOworCQkJYnJlYWs7CisJ CWNhc2UgRU5HSU5FX0lEX0RJR0c6CisJCQkqYXRvbV9lbmdpbmVfaWQgPSBBU0lDX0lOVF9ESUc3 X0VOQ09ERVJfSUQ7CisJCQlyZXN1bHQgPSB0cnVlOworCQkJYnJlYWs7CisJCWNhc2UgRU5HSU5F X0lEX0RBQ0E6CisJCQkqYXRvbV9lbmdpbmVfaWQgPSBBU0lDX0lOVF9EQUMxX0VOQ09ERVJfSUQ7 CisJCQlyZXN1bHQgPSB0cnVlOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlicmVhazsKKwkJ fQorCisJcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGJvb2wgY2xvY2tfc291cmNlX2lkX3Rv X2F0b20oCisJZW51bSBjbG9ja19zb3VyY2VfaWQgaWQsCisJdWludDMyX3QgKmF0b21fcGxsX2lk KQoreworCWJvb2wgcmVzdWx0ID0gdHJ1ZTsKKworCWlmIChhdG9tX3BsbF9pZCAhPSBOVUxMKQor CQlzd2l0Y2ggKGlkKSB7CisJCWNhc2UgQ0xPQ0tfU09VUkNFX0lEX1BMTDA6CisJCQkqYXRvbV9w bGxfaWQgPSBBVE9NX1BQTEwwOworCQkJYnJlYWs7CisJCWNhc2UgQ0xPQ0tfU09VUkNFX0lEX1BM TDE6CisJCQkqYXRvbV9wbGxfaWQgPSBBVE9NX1BQTEwxOworCQkJYnJlYWs7CisJCWNhc2UgQ0xP Q0tfU09VUkNFX0lEX1BMTDI6CisJCQkqYXRvbV9wbGxfaWQgPSBBVE9NX1BQTEwyOworCQkJYnJl YWs7CisJCWNhc2UgQ0xPQ0tfU09VUkNFX0lEX0VYVEVSTkFMOgorCQkJKmF0b21fcGxsX2lkID0g QVRPTV9QUExMX0lOVkFMSUQ7CisJCQlicmVhazsKKwkJY2FzZSBDTE9DS19TT1VSQ0VfSURfREZT OgorCQkJKmF0b21fcGxsX2lkID0gQVRPTV9FWFRfUExMMTsKKwkJCWJyZWFrOworCQljYXNlIENM T0NLX1NPVVJDRV9JRF9WQ0U6CisJCQkvKiBmb3IgVkNFIGVuY29kaW5nLAorCQkJICogd2UgbmVl ZCB0byBwYXNzIGluIEFUT01fUFBMTF9JTlZBTElECisJCQkgKi8KKwkJCSphdG9tX3BsbF9pZCA9 IEFUT01fUFBMTF9JTlZBTElEOworCQkJYnJlYWs7CisJCWNhc2UgQ0xPQ0tfU09VUkNFX0lEX0RQ X0RUTzoKKwkJCS8qIFdoZW4gcHJvZ3JhbW1pbmcgRFAgRFRPIFBMTCBJRCBzaG91bGQgYmUgaW52 YWxpZCAqLworCQkJKmF0b21fcGxsX2lkID0gQVRPTV9QUExMX0lOVkFMSUQ7CisJCQlicmVhazsK KwkJY2FzZSBDTE9DS19TT1VSQ0VfSURfVU5ERUZJTkVEOgorCQkJQlJFQUtfVE9fREVCVUdHRVIo KTsgLyogY2hlY2sgd2hlbiB0aGlzIHdpbGwgaGFwcGVuISAqLworCQkJKmF0b21fcGxsX2lkID0g QVRPTV9QUExMX0lOVkFMSUQ7CisJCQlyZXN1bHQgPSBmYWxzZTsKKwkJCWJyZWFrOworCQlkZWZh dWx0OgorCQkJcmVzdWx0ID0gZmFsc2U7CisJCQlicmVhazsKKwkJfQorCisJcmV0dXJuIHJlc3Vs dDsKK30KKworc3RhdGljIHVpbnQ4X3QgY2xvY2tfc291cmNlX2lkX3RvX2F0b21fcGh5X2Nsa19z cmNfaWQoCisJCWVudW0gY2xvY2tfc291cmNlX2lkIGlkKQoreworCXVpbnQ4X3QgYXRvbV9waHlf Y2xrX3NyY19pZCA9IDA7CisKKwlzd2l0Y2ggKGlkKSB7CisJY2FzZSBDTE9DS19TT1VSQ0VfSURf UExMMDoKKwkJYXRvbV9waHlfY2xrX3NyY19pZCA9IEFUT01fVFJBTlNNSVRURVJfQ09ORklHX1Y1 X1AwUExMOworCQlicmVhazsKKwljYXNlIENMT0NLX1NPVVJDRV9JRF9QTEwxOgorCQlhdG9tX3Bo eV9jbGtfc3JjX2lkID0gQVRPTV9UUkFOU01JVFRFUl9DT05GSUdfVjVfUDFQTEw7CisJCWJyZWFr OworCWNhc2UgQ0xPQ0tfU09VUkNFX0lEX1BMTDI6CisJCWF0b21fcGh5X2Nsa19zcmNfaWQgPSBB VE9NX1RSQU5TTUlUVEVSX0NPTkZJR19WNV9QMlBMTDsKKwkJYnJlYWs7CisJY2FzZSBDTE9DS19T T1VSQ0VfSURfRVhURVJOQUw6CisJCWF0b21fcGh5X2Nsa19zcmNfaWQgPSBBVE9NX1RSQU5TTUlU VEVSX0NPTkZJR19WNV9SRUZDTEtfU1JDX0VYVDsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJYXRv bV9waHlfY2xrX3NyY19pZCA9IEFUT01fVFJBTlNNSVRURVJfQ09ORklHX1Y1X1AxUExMOworCQli cmVhazsKKwl9CisKKwlyZXR1cm4gYXRvbV9waHlfY2xrX3NyY19pZCA+PiAyOworfQorCitzdGF0 aWMgdWludDhfdCBzaWduYWxfdHlwZV90b19hdG9tX2RpZ19tb2RlKGVudW0gc2lnbmFsX3R5cGUg cykKK3sKKwl1aW50OF90IGF0b21fZGlnX21vZGUgPSBBVE9NX1RSQU5TTUlUVEVSX0RJR01PREVf VjVfRFA7CisKKwlzd2l0Y2ggKHMpIHsKKwljYXNlIFNJR05BTF9UWVBFX0RJU1BMQVlfUE9SVDoK KwljYXNlIFNJR05BTF9UWVBFX0VEUDoKKwkJYXRvbV9kaWdfbW9kZSA9IEFUT01fVFJBTlNNSVRU RVJfRElHTU9ERV9WNV9EUDsKKwkJYnJlYWs7CisJY2FzZSBTSUdOQUxfVFlQRV9MVkRTOgorCQlh dG9tX2RpZ19tb2RlID0gQVRPTV9UUkFOU01JVFRFUl9ESUdNT0RFX1Y1X0xWRFM7CisJCWJyZWFr OworCWNhc2UgU0lHTkFMX1RZUEVfRFZJX1NJTkdMRV9MSU5LOgorCWNhc2UgU0lHTkFMX1RZUEVf RFZJX0RVQUxfTElOSzoKKwkJYXRvbV9kaWdfbW9kZSA9IEFUT01fVFJBTlNNSVRURVJfRElHTU9E RV9WNV9EVkk7CisJCWJyZWFrOworCWNhc2UgU0lHTkFMX1RZUEVfSERNSV9UWVBFX0E6CisJCWF0 b21fZGlnX21vZGUgPSBBVE9NX1RSQU5TTUlUVEVSX0RJR01PREVfVjVfSERNSTsKKwkJYnJlYWs7 CisJY2FzZSBTSUdOQUxfVFlQRV9ESVNQTEFZX1BPUlRfTVNUOgorCQlhdG9tX2RpZ19tb2RlID0g QVRPTV9UUkFOU01JVFRFUl9ESUdNT0RFX1Y1X0RQX01TVDsKKwkJYnJlYWs7CisJZGVmYXVsdDoK KwkJYXRvbV9kaWdfbW9kZSA9IEFUT01fVFJBTlNNSVRURVJfRElHTU9ERV9WNV9EVkk7CisJCWJy ZWFrOworCX0KKworCXJldHVybiBhdG9tX2RpZ19tb2RlOworfQorCitzdGF0aWMgdWludDhfdCBo cGRfc2VsX3RvX2F0b20oZW51bSBocGRfc291cmNlX2lkIGlkKQoreworCXVpbnQ4X3QgYXRvbV9o cGRfc2VsID0gMDsKKworCXN3aXRjaCAoaWQpIHsKKwljYXNlIEhQRF9TT1VSQ0VJRDE6CisJCWF0 b21faHBkX3NlbCA9IEFUT01fVFJBTlNNSVRURVJfQ09ORklHX1Y1X0hQRDFfU0VMOworCQlicmVh azsKKwljYXNlIEhQRF9TT1VSQ0VJRDI6CisJCWF0b21faHBkX3NlbCA9IEFUT01fVFJBTlNNSVRU RVJfQ09ORklHX1Y1X0hQRDJfU0VMOworCQlicmVhazsKKwljYXNlIEhQRF9TT1VSQ0VJRDM6CisJ CWF0b21faHBkX3NlbCA9IEFUT01fVFJBTlNNSVRURVJfQ09ORklHX1Y1X0hQRDNfU0VMOworCQli cmVhazsKKwljYXNlIEhQRF9TT1VSQ0VJRDQ6CisJCWF0b21faHBkX3NlbCA9IEFUT01fVFJBTlNN SVRURVJfQ09ORklHX1Y1X0hQRDRfU0VMOworCQlicmVhazsKKwljYXNlIEhQRF9TT1VSQ0VJRDU6 CisJCWF0b21faHBkX3NlbCA9IEFUT01fVFJBTlNNSVRURVJfQ09ORklHX1Y1X0hQRDVfU0VMOwor CQlicmVhazsKKwljYXNlIEhQRF9TT1VSQ0VJRDY6CisJCWF0b21faHBkX3NlbCA9IEFUT01fVFJB TlNNSVRURVJfQ09ORklHX1Y1X0hQRDZfU0VMOworCQlicmVhazsKKwljYXNlIEhQRF9TT1VSQ0VJ RF9VTktOT1dOOgorCWRlZmF1bHQ6CisJCWF0b21faHBkX3NlbCA9IDA7CisJCWJyZWFrOworCX0K KwlyZXR1cm4gYXRvbV9ocGRfc2VsID4+IDQ7Cit9CisKK3N0YXRpYyB1aW50OF90IGRpZ19lbmNv ZGVyX3NlbF90b19hdG9tKGVudW0gZW5naW5lX2lkIGlkKQoreworCXVpbnQ4X3QgYXRvbV9kaWdf ZW5jb2Rlcl9zZWwgPSAwOworCisJc3dpdGNoIChpZCkgeworCWNhc2UgRU5HSU5FX0lEX0RJR0E6 CisJCWF0b21fZGlnX2VuY29kZXJfc2VsID0gQVRPTV9UUkFOTVNJVFRFUl9WNV9fRElHQV9TRUw7 CisJCWJyZWFrOworCWNhc2UgRU5HSU5FX0lEX0RJR0I6CisJCWF0b21fZGlnX2VuY29kZXJfc2Vs ID0gQVRPTV9UUkFOTVNJVFRFUl9WNV9fRElHQl9TRUw7CisJCWJyZWFrOworCWNhc2UgRU5HSU5F X0lEX0RJR0M6CisJCWF0b21fZGlnX2VuY29kZXJfc2VsID0gQVRPTV9UUkFOTVNJVFRFUl9WNV9f RElHQ19TRUw7CisJCWJyZWFrOworCWNhc2UgRU5HSU5FX0lEX0RJR0Q6CisJCWF0b21fZGlnX2Vu Y29kZXJfc2VsID0gQVRPTV9UUkFOTVNJVFRFUl9WNV9fRElHRF9TRUw7CisJCWJyZWFrOworCWNh c2UgRU5HSU5FX0lEX0RJR0U6CisJCWF0b21fZGlnX2VuY29kZXJfc2VsID0gQVRPTV9UUkFOTVNJ VFRFUl9WNV9fRElHRV9TRUw7CisJCWJyZWFrOworCWNhc2UgRU5HSU5FX0lEX0RJR0Y6CisJCWF0 b21fZGlnX2VuY29kZXJfc2VsID0gQVRPTV9UUkFOTVNJVFRFUl9WNV9fRElHRl9TRUw7CisJCWJy ZWFrOworCWNhc2UgRU5HSU5FX0lEX0RJR0c6CisJCWF0b21fZGlnX2VuY29kZXJfc2VsID0gQVRP TV9UUkFOTVNJVFRFUl9WNV9fRElHR19TRUw7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWF0b21f ZGlnX2VuY29kZXJfc2VsID0gQVRPTV9UUkFOTVNJVFRFUl9WNV9fRElHQV9TRUw7CisJCWJyZWFr OworCX0KKworCXJldHVybiBhdG9tX2RpZ19lbmNvZGVyX3NlbDsKK30KKworc3RhdGljIHVpbnQ4 X3QgcGh5X2lkX3RvX2F0b20oZW51bSB0cmFuc21pdHRlciB0KQoreworCXVpbnQ4X3QgYXRvbV9w aHlfaWQ7CisKKwlzd2l0Y2ggKHQpIHsKKwljYXNlIFRSQU5TTUlUVEVSX1VOSVBIWV9BOgorCQlh dG9tX3BoeV9pZCA9IEFUT01fUEhZX0lEX1VOSVBIWUE7CisJCWJyZWFrOworCWNhc2UgVFJBTlNN SVRURVJfVU5JUEhZX0I6CisJCWF0b21fcGh5X2lkID0gQVRPTV9QSFlfSURfVU5JUEhZQjsKKwkJ YnJlYWs7CisJY2FzZSBUUkFOU01JVFRFUl9VTklQSFlfQzoKKwkJYXRvbV9waHlfaWQgPSBBVE9N X1BIWV9JRF9VTklQSFlDOworCQlicmVhazsKKwljYXNlIFRSQU5TTUlUVEVSX1VOSVBIWV9EOgor CQlhdG9tX3BoeV9pZCA9IEFUT01fUEhZX0lEX1VOSVBIWUQ7CisJCWJyZWFrOworCWNhc2UgVFJB TlNNSVRURVJfVU5JUEhZX0U6CisJCWF0b21fcGh5X2lkID0gQVRPTV9QSFlfSURfVU5JUEhZRTsK KwkJYnJlYWs7CisJY2FzZSBUUkFOU01JVFRFUl9VTklQSFlfRjoKKwkJYXRvbV9waHlfaWQgPSBB VE9NX1BIWV9JRF9VTklQSFlGOworCQlicmVhazsKKwljYXNlIFRSQU5TTUlUVEVSX1VOSVBIWV9H OgorCQlhdG9tX3BoeV9pZCA9IEFUT01fUEhZX0lEX1VOSVBIWUc7CisJCWJyZWFrOworCWRlZmF1 bHQ6CisJCWF0b21fcGh5X2lkID0gQVRPTV9QSFlfSURfVU5JUEhZQTsKKwkJYnJlYWs7CisJfQor CXJldHVybiBhdG9tX3BoeV9pZDsKK30KKworc3RhdGljIHVpbnQ4X3QgZGlzcF9wb3dlcl9nYXRp bmdfYWN0aW9uX3RvX2F0b20oCisJZW51bSBicF9waXBlX2NvbnRyb2xfYWN0aW9uIGFjdGlvbikK K3sKKwl1aW50OF90IGF0b21fcGlwZV9hY3Rpb24gPSAwOworCisJc3dpdGNoIChhY3Rpb24pIHsK KwljYXNlIEFTSUNfUElQRV9ESVNBQkxFOgorCQlhdG9tX3BpcGVfYWN0aW9uID0gQVRPTV9ESVNB QkxFOworCQlicmVhazsKKwljYXNlIEFTSUNfUElQRV9FTkFCTEU6CisJCWF0b21fcGlwZV9hY3Rp b24gPSBBVE9NX0VOQUJMRTsKKwkJYnJlYWs7CisJY2FzZSBBU0lDX1BJUEVfSU5JVDoKKwkJYXRv bV9waXBlX2FjdGlvbiA9IEFUT01fSU5JVDsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJQlJFQUtf VE9fREVCVUdHRVIoKTsgLyogVW5oYW5kbGUgYWN0aW9uIGluIGRyaXZlciEgKi8KKwkJYnJlYWs7 CisJfQorCisJcmV0dXJuIGF0b21fcGlwZV9hY3Rpb247Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgY29tbWFuZF90YWJsZV9oZWxwZXIgY29tbWFuZF90YWJsZV9oZWxwZXJfZnVuY3MgPSB7CisJ LmNvbnRyb2xsZXJfaWRfdG9fYXRvbSA9IGRhbF9jbWRfdGFibGVfaGVscGVyX2NvbnRyb2xsZXJf aWRfdG9fYXRvbSwKKwkuZW5jb2Rlcl9hY3Rpb25fdG9fYXRvbSA9IGVuY29kZXJfYWN0aW9uX3Rv X2F0b20sCisJLmVuZ2luZV9icF90b19hdG9tID0gZW5naW5lX2JwX3RvX2F0b20sCisJLmNsb2Nr X3NvdXJjZV9pZF90b19hdG9tID0gY2xvY2tfc291cmNlX2lkX3RvX2F0b20sCisJLmNsb2NrX3Nv dXJjZV9pZF90b19hdG9tX3BoeV9jbGtfc3JjX2lkID0KKwkJY2xvY2tfc291cmNlX2lkX3RvX2F0 b21fcGh5X2Nsa19zcmNfaWQsCisJLnNpZ25hbF90eXBlX3RvX2F0b21fZGlnX21vZGUgPSBzaWdu YWxfdHlwZV90b19hdG9tX2RpZ19tb2RlLAorCS5ocGRfc2VsX3RvX2F0b20gPSBocGRfc2VsX3Rv X2F0b20sCisJLmRpZ19lbmNvZGVyX3NlbF90b19hdG9tID0gZGlnX2VuY29kZXJfc2VsX3RvX2F0 b20sCisJLnBoeV9pZF90b19hdG9tID0gcGh5X2lkX3RvX2F0b20sCisJLmRpc3BfcG93ZXJfZ2F0 aW5nX2FjdGlvbl90b19hdG9tID0gZGlzcF9wb3dlcl9nYXRpbmdfYWN0aW9uX3RvX2F0b20sCisJ LmFzc2lnbl9jb250cm9sX3BhcmFtZXRlciA9CisJCWRhbF9jbWRfdGFibGVfaGVscGVyX2Fzc2ln bl9jb250cm9sX3BhcmFtZXRlciwKKwkuY2xvY2tfc291cmNlX2lkX3RvX3JlZl9jbGtfc3JjID0K KwkJZGFsX2NtZF90YWJsZV9oZWxwZXJfY2xvY2tfc291cmNlX2lkX3RvX3JlZl9jbGtfc3JjLAor CS50cmFuc21pdHRlcl9icF90b19hdG9tID0gZGFsX2NtZF90YWJsZV9oZWxwZXJfdHJhbnNtaXR0 ZXJfYnBfdG9fYXRvbSwKKwkuZW5jb2Rlcl9pZF90b19hdG9tID0gZGFsX2NtZF90YWJsZV9oZWxw ZXJfZW5jb2Rlcl9pZF90b19hdG9tLAorCS5lbmNvZGVyX21vZGVfYnBfdG9fYXRvbSA9CisJCWRh bF9jbWRfdGFibGVfaGVscGVyX2VuY29kZXJfbW9kZV9icF90b19hdG9tLAorfTsKKworY29uc3Qg c3RydWN0IGNvbW1hbmRfdGFibGVfaGVscGVyICpkYWxfY21kX3RibF9oZWxwZXJfZGNlNjBfZ2V0 X3RhYmxlKHZvaWQpCit7CisJcmV0dXJuICZjb21tYW5kX3RhYmxlX2hlbHBlcl9mdW5jczsKK30K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9iaW9zL2RjZTYwL2Nv bW1hbmRfdGFibGVfaGVscGVyX2RjZTYwLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkv ZGMvYmlvcy9kY2U2MC9jb21tYW5kX3RhYmxlX2hlbHBlcl9kY2U2MC5oCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNTkxYzc5NmQwYmYxCi0tLSAvZGV2L251bGwKKysr IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2Jpb3MvZGNlNjAvY29tbWFuZF90YWJs ZV9oZWxwZXJfZGNlNjAuaApAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IDIwMTIt MTUgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVy ZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisg KiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxl cyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCBy ZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0 byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vu c2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0 IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywg c3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNv cHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVk ZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3 YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdB UlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVU IE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBO TyBFVkVOVCBTSEFMTAorICogVEhFIENPUFlSSUdIVCBIT0xERVIoUykgT1IgQVVUSE9SKFMpIEJF IExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCisgKiBPVEhFUiBMSUFCSUxJVFksIFdI RVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKKyAqIEFS SVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1Ig VEhFIFVTRSBPUgorICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIEF1 dGhvcnM6IEFNRAorICoKKyAqLworCisjaWZuZGVmIF9fREFMX0NPTU1BTkRfVEFCTEVfSEVMUEVS X0RDRTYwX0hfXworI2RlZmluZSBfX0RBTF9DT01NQU5EX1RBQkxFX0hFTFBFUl9EQ0U2MF9IX18K Kworc3RydWN0IGNvbW1hbmRfdGFibGVfaGVscGVyOworCitjb25zdCBzdHJ1Y3QgY29tbWFuZF90 YWJsZV9oZWxwZXIgKmRhbF9jbWRfdGJsX2hlbHBlcl9kY2U2MF9nZXRfdGFibGUodm9pZCk7CisK KyNlbmRpZgotLSAKMi4xNy4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1n ZngK