From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Tvrtko Ursulin Date: Mon, 14 Jan 2019 10:29:54 +0000 Message-Id: <20190114102955.10721-4-tvrtko.ursulin@linux.intel.com> In-Reply-To: <20190114102955.10721-1-tvrtko.ursulin@linux.intel.com> References: <20190114102955.10721-1-tvrtko.ursulin@linux.intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH i-g-t 3/4] tests/gem_media_vme: Simple test to exercise the VME block List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: igt-dev@lists.freedesktop.org Cc: Intel-gfx@lists.freedesktop.org List-ID: RnJvbTogVG9ueSBZZSA8dG9ueS55ZUBpbnRlbC5jb20+CgpTaW1wbGUgdGVzdCB3aGljaCBleGVy Y2lzZXMgdGhlIFZNRSBmaXhlZCBmdW5jdGlvbiBibG9jay4KCnYyOiAoVHZydGtvIFVyc3VsaW4p CiAqIFNtYWxsIGNsZWFudXBzIGxpa2UgY29weXJpZ2h0IGRhdGUsIHRhYnMsIHJlbW92ZSB1bnVz ZWQgYml0cy4KCnYzOiAoVG9ueSBZZSkKICogQWRkZWQgY3VyYmUgZGF0YSBlbnRyeSBmb3IgZHN0 IHN1cmZhY2UuCiAqIFJlYWQgdGhlIGRzdCBzdXJmYWNlIGFmdGVyIHRoZSBWTUUga2VybmVsIGJl aW5nIGV4ZWN1dGVkLgoKdjQ6IChUb255IFllKQogKiBBZGRlZCB0aGUgbWVkaWFfdm1lLmd4YSBr ZXJuZWwgc291cmNlIGNvZGUgYW5kIGNvbXBpbGUgaW5zdHJ1Y3Rpb25zLgoKdjU6IChUdnJ0a28g VXJzdWxpbikKICogQWRkZWQgaGFuZyBkZXRlY3Rvci4KCnY2OiAoVHZydGtvIFVyc3VsaW4pCiAq IFJlcGxhY2UgZ2VtX3JlYWQgd2l0aCBnZW1fc3luYy4gKENocmlzIFdpbHNvbikKClNpZ25lZC1v ZmYtYnk6IFRvbnkgWWUgPHRvbnkueWVAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBUdnJ0a28g VXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgpDYzogVG9ueSBZZSA8dG9ueS55ZUBp bnRlbC5jb20+ClJldmlld2VkLWJ5OiBKb29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBs aW51eC5pbnRlbC5jb20+Ci0tLQogbGliL2dwdV9jbWRzLmMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IDEzNiArKysrKysrKysrKysrKysrKysrKwogbGliL2dwdV9jbWRzLmggICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAyMCArKy0KIGxpYi9pOTE1L3NoYWRlcnMvbWVkaWEv UkVBRE1FX21lZGlhX3ZtZS50eHQgfCAgNjUgKysrKysrKysrKwogbGliL2k5MTUvc2hhZGVycy9t ZWRpYS9tZWRpYV92bWUuZ3hhICAgICAgICB8ICA1MSArKysrKysrKwogbGliL2ludGVsX2JhdGNo YnVmZmVyLmMgICAgICAgICAgICAgICAgICAgICB8ICAgOSArKwogbGliL2ludGVsX2JhdGNoYnVm ZmVyLmggICAgICAgICAgICAgICAgICAgICB8ICAgNyArCiBsaWIvbWVkaWFfZmlsbC5jICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgMTEwICsrKysrKysrKysrKysrKysKIGxpYi9tZWRpYV9m aWxsLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKwogbGliL3N1cmZhY2Vmb3Jt YXQuaCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiB0ZXN0cy9NYWtlZmlsZS5zb3Vy Y2VzICAgICAgICAgICAgICAgICAgICAgIHwgICAzICsKIHRlc3RzL2k5MTUvZ2VtX21lZGlhX3Zt ZS5jICAgICAgICAgICAgICAgICAgfCAxMTcgKysrKysrKysrKysrKysrKysKIHRlc3RzL21lc29u LmJ1aWxkICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogMTIgZmlsZXMgY2hhbmdl ZCwgNTI1IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA3NTUg bGliL2k5MTUvc2hhZGVycy9tZWRpYS9SRUFETUVfbWVkaWFfdm1lLnR4dAogY3JlYXRlIG1vZGUg MTAwNzU1IGxpYi9pOTE1L3NoYWRlcnMvbWVkaWEvbWVkaWFfdm1lLmd4YQogY3JlYXRlIG1vZGUg MTAwNjQ0IHRlc3RzL2k5MTUvZ2VtX21lZGlhX3ZtZS5jCgpkaWZmIC0tZ2l0IGEvbGliL2dwdV9j bWRzLmMgYi9saWIvZ3B1X2NtZHMuYwppbmRleCA1NTZhOTRjNmYwYjYuLmI0OTBhNjNiZGZlZiAx MDA2NDQKLS0tIGEvbGliL2dwdV9jbWRzLmMKKysrIGIvbGliL2dwdV9jbWRzLmMKQEAgLTUyLDYg KzUyLDIyIEBAIGdlbjdfZmlsbF9jdXJiZV9idWZmZXJfZGF0YShzdHJ1Y3QgaW50ZWxfYmF0Y2hi dWZmZXIgKmJhdGNoLAogCXJldHVybiBvZmZzZXQ7CiB9CiAKK3VpbnQzMl90CitnZW4xMV9maWxs X2N1cmJlX2J1ZmZlcl9kYXRhKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gpCit7CisJ dWludDMyX3QgKmN1cmJlX2J1ZmZlcjsKKwl1aW50MzJfdCBvZmZzZXQ7CisKKwljdXJiZV9idWZm ZXIgPSBpbnRlbF9iYXRjaGJ1ZmZlcl9zdWJkYXRhX2FsbG9jKGJhdGNoLAorCQkJCQkJICAgICAg IHNpemVvZih1aW50MzJfdCkgKiA4LAorCQkJCQkJICAgICAgIDY0KTsKKwlvZmZzZXQgPSBpbnRl bF9iYXRjaGJ1ZmZlcl9zdWJkYXRhX29mZnNldChiYXRjaCwgY3VyYmVfYnVmZmVyKTsKKwkqY3Vy YmVfYnVmZmVyKysgPSAwOworCSpjdXJiZV9idWZmZXIgICA9IDE7CisKKwlyZXR1cm4gb2Zmc2V0 OworfQorCiB1aW50MzJfdAogZ2VuN19maWxsX3N1cmZhY2Vfc3RhdGUoc3RydWN0IGludGVsX2Jh dGNoYnVmZmVyICpiYXRjaCwKIAkJCWNvbnN0IHN0cnVjdCBpZ3RfYnVmICpidWYsCkBAIC0xMTks NiArMTM1LDI2IEBAIGdlbjdfZmlsbF9iaW5kaW5nX3RhYmxlKHN0cnVjdCBpbnRlbF9iYXRjaGJ1 ZmZlciAqYmF0Y2gsCiAJcmV0dXJuIG9mZnNldDsKIH0KIAordWludDMyX3QKK2dlbjExX2ZpbGxf YmluZGluZ190YWJsZShzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAorCQkJY29uc3Qg c3RydWN0IGlndF9idWYgKnNyYyxjb25zdCBzdHJ1Y3QgaWd0X2J1ZiAqZHN0KQoreworCXVpbnQz Ml90ICpiaW5kaW5nX3RhYmxlLCBvZmZzZXQ7CisKKwliaW5kaW5nX3RhYmxlID0gaW50ZWxfYmF0 Y2hidWZmZXJfc3ViZGF0YV9hbGxvYyhiYXRjaCwgNjQsIDY0KTsKKwlvZmZzZXQgPSBpbnRlbF9i YXRjaGJ1ZmZlcl9zdWJkYXRhX29mZnNldChiYXRjaCwgYmluZGluZ190YWJsZSk7CisJYmluZGlu Z190YWJsZVswXSA9IGdlbjExX2ZpbGxfc3VyZmFjZV9zdGF0ZShiYXRjaCwgc3JjLAorCQkJCQkJ U1VSRkFDRV8xRCxTVVJGQUNFRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKKwkJCQkJCTAsMCwK KwkJCQkJCTApOworCWJpbmRpbmdfdGFibGVbMV0gPSBnZW4xMV9maWxsX3N1cmZhY2Vfc3RhdGUo YmF0Y2gsIGRzdCwKKwkJCQkJCVNVUkZBQ0VfQlVGRkVSLCBTVVJGQUNFRk9STUFUX1JBVywKKwkJ CQkJCTEsMSwKKwkJCQkJCTEpOworCisJcmV0dXJuIG9mZnNldDsKK30KKwogdWludDMyX3QKIGdl bjdfZmlsbF9rZXJuZWwoc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwKIAkJY29uc3Qg dWludDMyX3Qga2VybmVsW11bNF0sCkBAIC0zODQsNiArNDIwLDcxIEBAIGdlbjhfZmlsbF9zdXJm YWNlX3N0YXRlKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCiAJcmV0dXJuIG9mZnNl dDsKIH0KIAordWludDMyX3QKK2dlbjExX2ZpbGxfc3VyZmFjZV9zdGF0ZShzdHJ1Y3QgaW50ZWxf YmF0Y2hidWZmZXIgKmJhdGNoLAorCQkJY29uc3Qgc3RydWN0IGlndF9idWYgKmJ1ZiwKKwkJCXVp bnQzMl90IHN1cmZhY2VfdHlwZSwKKwkJCXVpbnQzMl90IGZvcm1hdCwKKwkJCXVpbnQzMl90IHZl cnRpY2FsX2FsaWdubWVudCwKKwkJCXVpbnQzMl90IGhvcml6b250YWxfYWxpZ25tZW50LAorCQkJ aW50IGlzX2RzdCkKK3sKKwlzdHJ1Y3QgZ2VuOF9zdXJmYWNlX3N0YXRlICpzczsKKwl1aW50MzJf dCB3cml0ZV9kb21haW4sIHJlYWRfZG9tYWluLCBvZmZzZXQ7CisJaW50IHJldDsKKworCWlmIChp c19kc3QpIHsKKwkJd3JpdGVfZG9tYWluID0gcmVhZF9kb21haW4gPSBJOTE1X0dFTV9ET01BSU5f UkVOREVSOworCX0gZWxzZSB7CisJCXdyaXRlX2RvbWFpbiA9IDA7CisJCXJlYWRfZG9tYWluID0g STkxNV9HRU1fRE9NQUlOX1NBTVBMRVI7CisJfQorCisJc3MgPSBpbnRlbF9iYXRjaGJ1ZmZlcl9z dWJkYXRhX2FsbG9jKGJhdGNoLCBzaXplb2YoKnNzKSwgNjQpOworCW9mZnNldCA9IGludGVsX2Jh dGNoYnVmZmVyX3N1YmRhdGFfb2Zmc2V0KGJhdGNoLCBzcyk7CisKKwlzcy0+c3MwLnN1cmZhY2Vf dHlwZSA9IHN1cmZhY2VfdHlwZTsKKwlzcy0+c3MwLnN1cmZhY2VfZm9ybWF0ID0gZm9ybWF0Owor CXNzLT5zczAucmVuZGVyX2NhY2hlX3JlYWRfd3JpdGUgPSAxOworCXNzLT5zczAudmVydGljYWxf YWxpZ25tZW50ID0gdmVydGljYWxfYWxpZ25tZW50OyAvKiBhbGlnbiA0ICovCisJc3MtPnNzMC5o b3Jpem9udGFsX2FsaWdubWVudCA9IGhvcml6b250YWxfYWxpZ25tZW50OyAvKiBhbGlnbiA0ICov CisKKwlpZiAoYnVmLT50aWxpbmcgPT0gSTkxNV9USUxJTkdfWCkKKwkJc3MtPnNzMC50aWxlZF9t b2RlID0gMjsKKwllbHNlIGlmIChidWYtPnRpbGluZyA9PSBJOTE1X1RJTElOR19ZKQorCQlzcy0+ c3MwLnRpbGVkX21vZGUgPSAzOworCWVsc2UKKwkJc3MtPnNzMC50aWxlZF9tb2RlID0gMDsKKwor CXNzLT5zczguYmFzZV9hZGRyID0gYnVmLT5iby0+b2Zmc2V0OworCisJcmV0ID0gZHJtX2ludGVs X2JvX2VtaXRfcmVsb2MoYmF0Y2gtPmJvLAorCQkJCWludGVsX2JhdGNoYnVmZmVyX3N1YmRhdGFf b2Zmc2V0KGJhdGNoLCBzcykgKyA4ICogNCwKKwkJCQlidWYtPmJvLCAwLCByZWFkX2RvbWFpbiwg d3JpdGVfZG9tYWluKTsKKwlpZ3RfYXNzZXJ0KHJldCA9PSAwKTsKKworCWlmIChpc19kc3QpIHsK KwkJc3MtPnNzMS5tZW1vcnlfb2JqZWN0X2NvbnRyb2wgPSAyOworCQlzcy0+c3MyLmhlaWdodCA9 IDE7CisJCXNzLT5zczIud2lkdGggID0gOTU7CisJCXNzLT5zczMucGl0Y2ggID0gMDsKKwkJc3Mt PnNzNy5zaGFkZXJfY2hhbmVsX3NlbGVjdF9yID0gNDsKKwkJc3MtPnNzNy5zaGFkZXJfY2hhbmVs X3NlbGVjdF9nID0gNTsKKwkJc3MtPnNzNy5zaGFkZXJfY2hhbmVsX3NlbGVjdF9iID0gNjsKKwkJ c3MtPnNzNy5zaGFkZXJfY2hhbmVsX3NlbGVjdF9hID0gNzsKKwl9CisJZWxzZSB7CisJCXNzLT5z czEucXBpdGNoID0gNDA0MDsKKwkJc3MtPnNzMS5iYXNlX21pcF9sZXZlbCA9IDMxOworCQlzcy0+ c3MyLmhlaWdodCA9IDkyMTY7CisJCXNzLT5zczIud2lkdGggID0gMTAxOTsKKwkJc3MtPnNzMy5w aXRjaCAgPSA2NDsKKwkJc3MtPnNzNS5taXBfY291bnQgPSAyOworCX0KKworCXJldHVybiBvZmZz ZXQ7Cit9CisKIHVpbnQzMl90CiBnZW44X2ZpbGxfaW50ZXJmYWNlX2Rlc2NyaXB0b3Ioc3RydWN0 IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwKIAkJCSAgICAgICBjb25zdCBzdHJ1Y3QgaWd0X2J1 ZiAqZHN0LApAQCAtNDE5LDYgKzUyMCw0MSBAQCBnZW44X2ZpbGxfaW50ZXJmYWNlX2Rlc2NyaXB0 b3Ioc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwKIAlyZXR1cm4gb2Zmc2V0OwogfQog Cit1aW50MzJfdAorZ2VuMTFfZmlsbF9pbnRlcmZhY2VfZGVzY3JpcHRvcihzdHJ1Y3QgaW50ZWxf YmF0Y2hidWZmZXIgKmJhdGNoLAorCQkJICAgICAgIGNvbnN0IHN0cnVjdCBpZ3RfYnVmICpzcmMs Y29uc3Qgc3RydWN0IGlndF9idWYgKmRzdCwKKwkJCSAgICAgICBjb25zdCB1aW50MzJfdCBrZXJu ZWxbXVs0XSwKKwkJCSAgICAgICBzaXplX3Qgc2l6ZSkKK3sKKwlzdHJ1Y3QgZ2VuOF9pbnRlcmZh Y2VfZGVzY3JpcHRvcl9kYXRhICppZGQ7CisJdWludDMyX3Qgb2Zmc2V0OworCXVpbnQzMl90IGJp bmRpbmdfdGFibGVfb2Zmc2V0LCBrZXJuZWxfb2Zmc2V0OworCisJYmluZGluZ190YWJsZV9vZmZz ZXQgPSBnZW4xMV9maWxsX2JpbmRpbmdfdGFibGUoYmF0Y2gsIHNyYyxkc3QpOworCWtlcm5lbF9v ZmZzZXQgPSBnZW43X2ZpbGxfa2VybmVsKGJhdGNoLCBrZXJuZWwsIHNpemUpOworCisJaWRkID0g aW50ZWxfYmF0Y2hidWZmZXJfc3ViZGF0YV9hbGxvYyhiYXRjaCwgc2l6ZW9mKCppZGQpLCA2NCk7 CisJb2Zmc2V0ID0gaW50ZWxfYmF0Y2hidWZmZXJfc3ViZGF0YV9vZmZzZXQoYmF0Y2gsIGlkZCk7 CisKKwlpZGQtPmRlc2MwLmtlcm5lbF9zdGFydF9wb2ludGVyID0gKGtlcm5lbF9vZmZzZXQgPj4g Nik7CisKKwlpZGQtPmRlc2MyLnNpbmdsZV9wcm9ncmFtX2Zsb3cgPSAxOworCWlkZC0+ZGVzYzIu ZmxvYXRpbmdfcG9pbnRfbW9kZSA9IEdFTjhfRkxPQVRJTkdfUE9JTlRfSUVFRV83NTQ7CisKKwlp ZGQtPmRlc2MzLnNhbXBsZXJfY291bnQgPSAwOyAgICAgIC8qIDAgc2FtcGxlcnMgdXNlZCAqLwor CWlkZC0+ZGVzYzMuc2FtcGxlcl9zdGF0ZV9wb2ludGVyID0gMDsKKworCWlkZC0+ZGVzYzQuYmlu ZGluZ190YWJsZV9lbnRyeV9jb3VudCA9IDA7CisJaWRkLT5kZXNjNC5iaW5kaW5nX3RhYmxlX3Bv aW50ZXIgPSAoYmluZGluZ190YWJsZV9vZmZzZXQgPj4gNSk7CisKKwlpZGQtPmRlc2M1LmNvbnN0 YW50X3VyYl9lbnRyeV9yZWFkX29mZnNldCA9IDA7CisJaWRkLT5kZXNjNS5jb25zdGFudF91cmJf ZW50cnlfcmVhZF9sZW5ndGggPSAxOyAvKiBncmYgMSAqLworCisJaWRkLT5kZXNjNi5udW1fdGhy ZWFkc19pbl90ZyA9IDE7CisKKwlyZXR1cm4gb2Zmc2V0OworfQorCiB2b2lkCiBnZW44X2VtaXRf c3RhdGVfYmFzZV9hZGRyZXNzKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gpCiB7CmRp ZmYgLS1naXQgYS9saWIvZ3B1X2NtZHMuaCBiL2xpYi9ncHVfY21kcy5oCmluZGV4IDc5YmM0ZDY0 NzNiYS4uY2E2NzFmYjUyZGFmIDEwMDY0NAotLS0gYS9saWIvZ3B1X2NtZHMuaAorKysgYi9saWIv Z3B1X2NtZHMuaApAQCAtNDMsNiArNDMsOCBAQCBnZW43X3JlbmRlcl9mbHVzaChzdHJ1Y3QgaW50 ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLCB1aW50MzJfdCBiYXRjaF9lbmQpOwogdWludDMyX3QKIGdl bjdfZmlsbF9jdXJiZV9idWZmZXJfZGF0YShzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNo LAogCQkJdWludDhfdCBjb2xvcik7Cit1aW50MzJfdAorZ2VuMTFfZmlsbF9jdXJiZV9idWZmZXJf ZGF0YShzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoKTsKIAogdWludDMyX3QKIGdlbjdf ZmlsbF9zdXJmYWNlX3N0YXRlKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCkBAIC01 Myw2ICs1NSw5IEBAIGdlbjdfZmlsbF9zdXJmYWNlX3N0YXRlKHN0cnVjdCBpbnRlbF9iYXRjaGJ1 ZmZlciAqYmF0Y2gsCiB1aW50MzJfdAogZ2VuN19maWxsX2JpbmRpbmdfdGFibGUoc3RydWN0IGlu dGVsX2JhdGNoYnVmZmVyICpiYXRjaCwKIAkJCWNvbnN0IHN0cnVjdCBpZ3RfYnVmICpkc3QpOwor dWludDMyX3QKK2dlbjExX2ZpbGxfYmluZGluZ190YWJsZShzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZm ZXIgKmJhdGNoLAorCQkJY29uc3Qgc3RydWN0IGlndF9idWYgKnNyYyxjb25zdCBzdHJ1Y3QgaWd0 X2J1ZiAqZHN0KTsKIAogdWludDMyX3QKIGdlbjdfZmlsbF9rZXJuZWwoc3RydWN0IGludGVsX2Jh dGNoYnVmZmVyICpiYXRjaCwKQEAgLTk5LDEzICsxMDQsMjQgQEAgZ2VuOF9maWxsX3N1cmZhY2Vf c3RhdGUoc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwKIAkJCWNvbnN0IHN0cnVjdCBp Z3RfYnVmICpidWYsCiAJCQl1aW50MzJfdCBmb3JtYXQsCiAJCQlpbnQgaXNfZHN0KTsKLQordWlu dDMyX3QKK2dlbjExX2ZpbGxfc3VyZmFjZV9zdGF0ZShzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIg KmJhdGNoLAorCQkJY29uc3Qgc3RydWN0IGlndF9idWYgKmJ1ZiwKKwkJCXVpbnQzMl90IHN1cmZh Y2VfdHlwZSwKKwkJCXVpbnQzMl90IGZvcm1hdCwKKwkJCXVpbnQzMl90IHZlcnRpY2FsX2FsaWdu bWVudCwKKwkJCXVpbnQzMl90IGhvcml6b250YWxfYWxpZ25tZW50LAorCQkJaW50IGlzX2RzdCk7 CiB1aW50MzJfdAogZ2VuOF9maWxsX2ludGVyZmFjZV9kZXNjcmlwdG9yKHN0cnVjdCBpbnRlbF9i YXRjaGJ1ZmZlciAqYmF0Y2gsCiAJCQkgICAgICAgY29uc3Qgc3RydWN0IGlndF9idWYgKmRzdCwK IAkJCSAgICAgICBjb25zdCB1aW50MzJfdCBrZXJuZWxbXVs0XSwKIAkJCSAgICAgICBzaXplX3Qg c2l6ZSk7Ci0KK3VpbnQzMl90CitnZW4xMV9maWxsX2ludGVyZmFjZV9kZXNjcmlwdG9yKHN0cnVj dCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCisJCQkgICAgICAgY29uc3Qgc3RydWN0IGlndF9i dWYgKnNyYyxjb25zdCBzdHJ1Y3QgaWd0X2J1ZiAqZHN0LAorCQkJICAgICAgIGNvbnN0IHVpbnQz Ml90IGtlcm5lbFtdWzRdLAorCQkJICAgICAgIHNpemVfdCBzaXplKTsKIHZvaWQKIGdlbjhfZW1p dF9zdGF0ZV9iYXNlX2FkZHJlc3Moc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCk7CiAK ZGlmZiAtLWdpdCBhL2xpYi9pOTE1L3NoYWRlcnMvbWVkaWEvUkVBRE1FX21lZGlhX3ZtZS50eHQg Yi9saWIvaTkxNS9zaGFkZXJzL21lZGlhL1JFQURNRV9tZWRpYV92bWUudHh0Cm5ldyBmaWxlIG1v ZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMC4uMjQ3MGZkZDg5ODI1Ci0tLSAvZGV2L251bGwK KysrIGIvbGliL2k5MTUvc2hhZGVycy9tZWRpYS9SRUFETUVfbWVkaWFfdm1lLnR4dApAQCAtMCww ICsxLDY1IEBACitTdGVwMTogQnVpbGRpbmcgSUdBIChJbnRlbCBHcmFwaGljcyBBc3NlbWJsZXIp Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKworMS4gRG93bmxvYWQgb3IgY2xvbmUgSUdDIChJbnRlbCBHcmFw aGljcyBDb21waWxlcikKKworICAgaHR0cHM6Ly9naXRodWIuY29tL2ludGVsL2ludGVsLWdyYXBo aWNzLWNvbXBpbGVyLmdpdAorCisyLiBDaGRpciBpbnRvICdpbnRlbC1ncmFwaGljcy1jb21waWxl cicgKG9yIGFueSBvdGhlciB3b3Jrc3BhY2UgZm9sZGVyIG9mIGNob2ljZSkKKworICAgSXQgc2hv dWxkIHJlYWQgdGhlIGZvbGxvd2luZyBmb2xkZXIgc3RydWN1dHJlOgorCisgICB3b3Jrc3BhY2UK KyAgICAgIHwtIHZpc2EKKyAgICAgIHwtIElHQworICAgICAgfC0gaW5jCisgICAgICB8LSAzZAor ICAgICAgfC0gc2t1d2EKKworMy4gQ2hkaXIgaW50byBJR0Egc3ViLWNvbXBvbmVudAorCisgICBj ZCB2aXNhL2lnYQorCis0LiBDcmVhdGUgYnVpbGQgZGlyZWN0b3J5CisKKyAgICBta2RpciBidWls ZAorCis1LiBDaGFuZ2UgaW50byBidWlsZCBkaXJlY3RvcnkKKworICAgIGNkIGJ1aWxkCisKKzYu IFJ1biBjbWFrZQorCisgICBjbWFrZSAuLi8KKworNy4gUnVuIG1ha2UgdG8gYnVpbGQgSUdBIHBy b2plY3QKKworICAgbWFrZQorCis4LiBHZXQgdGhlIG91dHB1dCBleGVjdXRhYmxlICJpZ2E2NCIg aW4gSUdBRXhlIGZvbGRlcgorCisgICB1c2FnZTogLi9pZ2E2NCBPUFRJT05TIEFSR1MKKyAgIHdo ZXJlIE9QVElPTlM6CisgICAgIC1oICAgICAtLWhlbHAgICAgICAgICAgICAgICAgICAgICBzaG93 cyBoZWxwIG9uIGFuIG9wdGlvbgorICAgICAtZCAgICAgLS1kaXNhc3NlbWJsZSAgICAgICAgICAg ICAgZGlzYXNzZW1ibGVzIHRoZSBpbnB1dCBmaWxlCisgICAgIC1hICAgICAtLWFzc2VtYmxlICAg ICAgICAgICAgICAgICBhc3NlbWJsZXMgdGhlIGlucHV0IGZpbGUKKyAgICAgLW4gICAgIC0tbnVt ZXJpYy1sYWJlbHMgICAgICAgICAgIHVzZSBudW1lcmljIGxhYmVscworICAgICAtcCAgICAgLS1w bGF0Zm9ybSAgICAgICAgREVWSUNFICAgc3BlY2lmaWVzIHRoZSBwbGF0Zm9ybSAoZS5nLiAiR0VO OSIpCisgICAgIC1vICAgICAtLW91dHB1dCAgICAgICAgICBGSUxFICAgICBzcGVjaWZpZXMgdGhl IG91dHB1dCBmaWxlCisKKyAgIEVYQU1QTEVTOgorICAgLi9pZ2E2NCAgZmlsZS5neGEgIC1wPTEx IC1hICAtbyBmaWxlLmtybgorCitTdGVwMjogQnVpbGRpbmcgQVNNIGNvZGUKKz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorMS4gQ29tbWFuZCBsaW5lIHRvIGNvbnZlcnQgYXNtIGNvZGUgdG8gYmluYXJ5OgorCisg ICBpZ2E2NCBtZWRpYV92bWUuZ3hhIC1wPTExIC1hIC1vIG1lZGlhX3ZtZS5rcm4KKworMi4gUGFk IDEyOCBieXRlcyB6ZXJvcyB0byB0aGUga2VybmVsOgorCisgICBkZCBpZj0vZGV2L3plcm8gYnM9 MSBjb3VudD0xMjggPj4gbWVkaWFfdm1lLmtybgorCiszLiBHZW5lcmF0ZSBoZXhkdW1wOgorCisg ICBoZXhkdW1wIC12ICAtZSAnNC80ICIweCUwOHggIiAiXG4iJyBtZWRpYV92bWUua3JuID4gbWVk aWFfdm1lLmhleApkaWZmIC0tZ2l0IGEvbGliL2k5MTUvc2hhZGVycy9tZWRpYS9tZWRpYV92bWUu Z3hhIGIvbGliL2k5MTUvc2hhZGVycy9tZWRpYS9tZWRpYV92bWUuZ3hhCm5ldyBmaWxlIG1vZGUg MTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMC4uOTNhMGVkMmYxMmQ2Ci0tLSAvZGV2L251bGwKKysr IGIvbGliL2k5MTUvc2hhZGVycy9tZWRpYS9tZWRpYV92bWUuZ3hhCkBAIC0wLDAgKzEsNTEgQEAK Ky8qCisqIENvcHlyaWdodCAoYykgMjAxOCwgSW50ZWwgQ29ycG9yYXRpb24KKyoKKyogUGVybWlz c2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0 YWluaW5nIGEKKyogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50 YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUg d2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorKiB0aGUg cmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwg c3VibGljZW5zZSwKKyogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRv IHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBk byBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisqCisqIFRoZSBhYm92 ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGlu Y2x1ZGVkCisqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNv ZnR3YXJlLgorKgorKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBX QVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUworKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVU IE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyogRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8g RVZFTlQgU0hBTEwKKyogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxF IEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKKyogT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElO IEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCisqIEFSSVNJTkcgRlJP TSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBP UgorKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisqLworCisgICAgICAgbW92ICg4 fE0wKSAgICAgICByMS44PDE+OncgICAgICAgMHgyMDAwMDAwMDp2CisgICAgICAgbW92ICg4fE0w KSAgICAgICByMjAuMDwxPjp3ICAgICAgMHgxOnYKKyhXKSAgICBtb3YgKDF8TTApICAgICAgIHIx LjI8MT46ZiAgICAgICAweDM4MTgwMDBDOmYKKyAgICAgICBtb3YgKDh8TTApICAgICAgIHIyMC44 PDE+OncgICAgICAweDEwOnYKKyAgICAgICBtb3YgKDh8TTApICAgICAgIHIyMS4wPDE+OncgICAg ICAweDEwMDAwOnYKKyhXKSAgICBtb3YgKDF8TTApICAgICAgIHIxLjM8MT46ZiAgICAgICAweDIy MjIyMjIyOmYKKyAgICAgICBhZGQgKDF8TTApICAgICAgIGEwLjA8MT46ZCAgICAgICByMS4wPDA7 MSwwPjpkICAgICAyNzYzMDc5Njg6ZAorICAgICAgIG1vdiAoOHxNMCkgICAgICAgcjIuMDwxPjpm ICAgICAgIDB4MDpmCisgICAgICAgbW92ICg4fE0wKSAgICAgICByNS4wPDE+OmYgICAgICAgMHgw OmYKKyAgICAgICBtb3YgKDh8TTApICAgICAgIHI2LjA8MT46ZiAgICAgICAweDA6ZgorICAgICAg IG1vdiAoOHxNMCkgICAgICAgcjkuMDwxPjpmICAgICAgIDB4MDpmCisgICAgICAgbW92ICg4fE0w KSAgICAgICByMy4wPDE+OmQgICAgICAgcjEuODw4OzgsMT46dworICAgICAgIG11bCAoOHxNMCkg ICAgICAgcjQuMDwxPjpkICAgICAgIHIxLjI8MDsxLDA+OmQgICAgIHIyMC4wPDg7OCwxPjp3Cisg ICAgICAgbXVsICg4fE0wKSAgICAgICByNy4wPDE+OmQgICAgICAgcjIwLjg8ODs4LDE+OncgICAg MjU2OncKKyAgICAgICBtdWwgKDh8TTApICAgICAgIHI4LjA8MT46ZCAgICAgICByMS4zPDA7MSww PjpkICAgICByMjEuMDw4OzgsMT46dworKFcpICAgIG1vdiAoMXxNMCkgICAgICAgcjE3LjI8MT46 ZiAgICAgIDB4MDpmCisgICAgICAgc2VuZCAoMTZ8TTApICAgICByMTA6dXcgICAgICAgICAgcjI6 ZiAgICAgICAgICAgICAgMHhEICAgICBhMC4we05vUHJlZW1wdH0KKyAgICAgICBtb3YgKDF8TTAp ICAgICAgIHIxMC4xNDwxPjpoZiAgICAweEJFRUY6aGYKKyhXKSAgICBhZGQgKDF8TTApICAgICAg IGEwLjA8MT46dWQgICAgICByMS4xPDA7MSwwPjp1ZCAgICAweDIwQTA0MDA6dWQKKyAgICAgICBt b3YgKDF8TTApICAgICAgIHIxMC4xNTwxPjpoZiAgICAweERFQUQ6aGYKKyhXKSAgICBtb3YgKDF8 TTApICAgICAgIHIxOC4yPDE+OmYgICAgICAweDg6ZgorKFcpICAgIG1vdiAoMXxNMCkgICAgICAg cjE5LjI8MT46ZiAgICAgIDB4QzpmCisoVykgICAgbW92ICg4fE0wKSAgICAgICByMTI3LjA8MT46 ZiAgICAgcjAuMDw4OzgsMT46ZgorKFcpICAgIHNlbmRzICgxNnxNMCkgICAgbnVsbDp1dyAgICAg ICAgIHIxNyAgICAgICAgICAgICAgIHIxMCAgICAgMHgxMEEgICAgYTAuMAorKFcpICAgIGFkZCAo MXxNMCkgICAgICAgYTAuMDwxPjp1ZCAgICAgIHIxLjE8MDsxLDA+OnVkICAgIDB4MjBBMDMwMDp1 ZAorKFcpICAgIHNlbmRzICgxNnxNMCkgICAgbnVsbDp1dyAgICAgICAgIHIxOCAgICAgICAgICAg ICAgIHIxNCAgICAgMHg4QSAgICAgYTAuMAorKFcpICAgIGFkZCAoMXxNMCkgICAgICAgYTAuMDwx Pjp1ZCAgICAgIHIxLjE8MDsxLDA+OnVkICAgIDB4MjBBMDIwMDp1ZAorKFcpICAgIHNlbmRzICg4 fE0wKSAgICAgbnVsbDp1ZCAgICAgICAgIHIxOSAgICAgICAgICAgICAgIHIxNiAgICAgMHg0QSAg ICAgYTAuMAorKFcpICAgIHNlbmQgKDh8TTApICAgICAgbnVsbCAgICAgICAgICAgIHIxMjc6ZiAg ICAgICAgICAgIDB4MjcgICAgMHgyMDAwMDEwIHtFT1R9CmRpZmYgLS1naXQgYS9saWIvaW50ZWxf YmF0Y2hidWZmZXIuYyBiL2xpYi9pbnRlbF9iYXRjaGJ1ZmZlci5jCmluZGV4IGFkMmU3MThmODk4 Yy4uMjI2OTdjOTRmYjEzIDEwMDY0NAotLS0gYS9saWIvaW50ZWxfYmF0Y2hidWZmZXIuYworKysg Yi9saWIvaW50ZWxfYmF0Y2hidWZmZXIuYwpAQCAtODczLDYgKzg3MywxNSBAQCBpZ3RfZmlsbGZ1 bmNfdCBpZ3RfZ2V0X21lZGlhX2ZpbGxmdW5jKGludCBkZXZpZCkKIAlyZXR1cm4gZmlsbDsKIH0K IAoraWd0X3ZtZV9mdW5jX3QgaWd0X2dldF9tZWRpYV92bWVfZnVuYyhpbnQgZGV2aWQpCit7CisJ aWd0X3ZtZV9mdW5jX3QgZmlsbCA9IE5VTEw7CisKKwlpZiAoSVNfR0VOOShkZXZpZCkgfHwgSVNf R0VOMTAoZGV2aWQpIHx8IElTX0dFTjExKGRldmlkKSkKKwkJZmlsbCA9IGdlbjExX21lZGlhX3Zt ZV9mdW5jOworCisJcmV0dXJuIGZpbGw7Cit9CiAvKioKICAqIGlndF9nZXRfZ3BncHVfZmlsbGZ1 bmM6CiAgKiBAZGV2aWQ6IHBjaSBkZXZpY2UgaWQKZGlmZiAtLWdpdCBhL2xpYi9pbnRlbF9iYXRj aGJ1ZmZlci5oIGIvbGliL2ludGVsX2JhdGNoYnVmZmVyLmgKaW5kZXggZWNjMjNmMDhkYTc3Li5l NWY2ZTZkMDQ1YjggMTAwNjQ0Ci0tLSBhL2xpYi9pbnRlbF9iYXRjaGJ1ZmZlci5oCisrKyBiL2xp Yi9pbnRlbF9iYXRjaGJ1ZmZlci5oCkBAIC0zMjUsNiArMzI1LDEzIEBAIHR5cGVkZWYgdm9pZCAo KmlndF9maWxsZnVuY190KShzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAogaWd0X2Zp bGxmdW5jX3QgaWd0X2dldF9tZWRpYV9maWxsZnVuYyhpbnQgZGV2aWQpOwogaWd0X2ZpbGxmdW5j X3QgaWd0X2dldF9ncGdwdV9maWxsZnVuYyhpbnQgZGV2aWQpOwogCit0eXBlZGVmIHZvaWQgKCpp Z3Rfdm1lX2Z1bmNfdCkoc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwKKwkJCSAgICAg ICBjb25zdCBzdHJ1Y3QgaWd0X2J1ZiAqc3JjLAorCQkJICAgICAgIHVuc2lnbmVkIGludCB3aWR0 aCwgdW5zaWduZWQgaW50IGhlaWdodCwKKwkJCSAgICAgICBjb25zdCBzdHJ1Y3QgaWd0X2J1ZiAq ZHN0KTsKKworaWd0X3ZtZV9mdW5jX3QgaWd0X2dldF9tZWRpYV92bWVfZnVuYyhpbnQgZGV2aWQp OworCiAvKioKICAqIGlndF9tZWRpYV9zcGluZnVuY190OgogICogQGJhdGNoOiBiYXRjaGJ1ZmZl ciBvYmplY3QKZGlmZiAtLWdpdCBhL2xpYi9tZWRpYV9maWxsLmMgYi9saWIvbWVkaWFfZmlsbC5j CmluZGV4IDQ5NDIyMjk1MDVmZi4uYjFlODQ3MjczOTRhIDEwMDY0NAotLS0gYS9saWIvbWVkaWFf ZmlsbC5jCisrKyBiL2xpYi9tZWRpYV9maWxsLmMKQEAgLTYxLDYgKzYxLDQ2IEBAIHN0YXRpYyBj b25zdCB1aW50MzJfdCBnZW44X21lZGlhX2tlcm5lbFtdWzRdID0gewogCXsgMHgwNzgwMDAzMSwg MHgyMDAwMGE0MCwgMHgwZTAwMGUwMCwgMHg4MjAwMDAxMCB9LAogfTsKIAorc3RhdGljIGNvbnN0 IHVpbnQzMl90IGdlbjExX21lZGlhX3ZtZV9rZXJuZWxbXVs0XSA9IHsKKwl7IDB4MDA2MDAwMDEs IDB4MjAzMDJlNjgsICAweDAwMDAwMDAwLCAgMHgyMDAwMDAwMCB9LAorCXsgMHgwMDYwMDAwMSwg MHgyMjgwMmU2OCwgIDB4MDAwMDAwMDAsICAweDAwMDAwMDAxIH0sCisJeyAweDAwMDAwMDAxLCAw eDIwMjg0ZjJjLCAgMHgwMDAwMDAwMCwgIDB4MzgxODAwMGMgfSwKKwl7IDB4MDA2MDAwMDEsIDB4 MjI5MDJlNjgsICAweDAwMDAwMDAwLCAgMHgwMDAwMDAxMCB9LAorCXsgMHgwMDYwMDAwMSwgMHgy MmEwMmU2OCwgIDB4MDAwMDAwMDAsICAweDAwMDEwMDAwIH0sCisJeyAweDAwMDAwMDAxLCAweDIw MmM0ZjJjLCAgMHgwMDAwMDAwMCwgIDB4MjIyMjIyMjIgfSwKKwl7IDB4MDAwMDAwNDAsIDB4MjIw MDBhMjAsICAweDBlMDAwMDIwLCAgMHgxMDc4MjAwMCB9LAorCXsgMHgwMDYwMDAwMSwgMHgyMDQw NGYyOCwgIDB4MDAwMDAwMDAsICAweDAwMDAwMDAwIH0sCisJeyAweDAwNjAwMDAxLCAweDIwYTA0 ZjI4LCAgMHgwMDAwMDAwMCwgIDB4MDAwMDAwMDAgfSwKKwl7IDB4MDA2MDAwMDEsIDB4MjBjMDRm MjgsICAweDAwMDAwMDAwLCAgMHgwMDAwMDAwMCB9LAorCXsgMHgwMDYwMDAwMSwgMHgyMTIwNGYy OCwgIDB4MDAwMDAwMDAsICAweDAwMDAwMDAwIH0sCisJeyAweDAwNjAwMDAxLCAweDIwNjAxYTI4 LCAgMHgwMDhkMDAzMCwgIDB4MDAwMDAwMDAgfSwKKwl7IDB4MDA2MDAwNDEsIDB4MjA4MDBhMjgs ICAweDFhMDAwMDI4LCAgMHgwMDhkMDI4MCB9LAorCXsgMHgwMDYwMDA0MSwgMHgyMGUwMWEyOCwg IDB4MWU4ZDAyOTAsICAweDAxMDAwMTAwIH0sCisJeyAweDAwNjAwMDQxLCAweDIxMDAwYTI4LCAg MHgxYTAwMDAyYywgIDB4MDA4ZDAyYTAgfSwKKwl7IDB4MDAwMDAwMDEsIDB4MjIyODRmMmMsICAw eDAwMDAwMDAwLCAgMHgwMDAwMDAwMCB9LAorCXsgMHgwZDgwYzAzMSwgMHgyMTQwNGE0OCwgIDB4 MDAwMDAwNDAsICAweDAwMDAwMjAwIH0sCisJeyAweDAwMDAwMDAxLCAweDIxNWM0NzA4LCAgMHgw MDAwMDAwMCwgIDB4YmVlZmJlZWYgfSwKKwl7IDB4MDAwMDAwNDAsIDB4MjIwMDAyMDQsICAweDA2 MDAwMDI0LCAgMHgwMjBhMDQwMCB9LAorCXsgMHgwMDAwMDAwMSwgMHgyMTVlNDcwOCwgIDB4MDAw MDAwMDAsICAweGRlYWRkZWFkIH0sCisJeyAweDAwMDAwMDAxLCAweDIyNDg0ZjJjLCAgMHgwMDAw MDAwMCwgIDB4MDAwMDAwMDggfSwKKwl7IDB4MDAwMDAwMDEsIDB4MjI2ODRmMmMsICAweDAwMDAw MDAwLCAgMHgwMDAwMDAwYyB9LAorCXsgMHgwMDYwMDAwMSwgMHgyZmUwNGIyYywgIDB4MDA4ZDAw MDAsICAweDAwMDAwMDAwIH0sCisJeyAweDBhODAwMDMzLCAweDAwMDBhMDU0LCAgMHgwMDAwMjIy NCwgIDB4MDAwMDAwMDAgfSwKKwl7IDB4MDAwMDAwNDAsIDB4MjIwMDAyMDQsICAweDA2MDAwMDI0 LCAgMHgwMjBhMDMwMCB9LAorCXsgMHgwYTgwMDAzMywgMHgwMDAwZTA1NCwgIDB4MDAwMDIyNDIs ICAweDAwMDAwMDAwIH0sCisJeyAweDAwMDAwMDQwLCAweDIyMDAwMjA0LCAgMHgwNjAwMDAyNCwg IDB4MDIwYTAyMDAgfSwKKwl7IDB4MGE2MDAwMzMsIDB4MDAwMTAwMTQsICAweDAwMDAyMjYxLCAg MHgwMDAwMDAwMCB9LAorCXsgMHgwNzYwMDAzMSwgMHgyMDAwNGEwNCwgIDB4MDYwMDBmZTAsICAw eDgyMDAwMDEwIH0sCisJeyAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAgMHgwMDAwMDAwMCwgIDB4 MDAwMDAwMDAgfSwKKwl7IDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsICAweDAwMDAwMDAwLCAgMHgw MDAwMDAwMCB9LAorCXsgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgIDB4MDAwMDAwMDAsICAweDAw MDAwMDAwIH0sCisJeyAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAgMHgwMDAwMDAwMCwgIDB4MDAw MDAwMDAgfSwKKwl7IDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsICAweDAwMDAwMDAwLCAgMHgwMDAw MDAwMCB9LAorCXsgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgIDB4MDAwMDAwMDAsICAweDAwMDAw MDAwIH0sCisJeyAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAgMHgwMDAwMDAwMCwgIDB4MDAwMDAw MDAgfSwKKwl7IDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsICAweDAwMDAwMDAwLCAgMHgwMDAwMDAw MCB9LAorfTsKKwogLyoKICAqIFRoaXMgc2V0cyB1cCB0aGUgbWVkaWEgcGlwZWxpbmUsCiAgKgpA QCAtMjQ1LDMgKzI4NSw3MyBAQCBnZW45X21lZGlhX2ZpbGxmdW5jKHN0cnVjdCBpbnRlbF9iYXRj aGJ1ZmZlciAqYmF0Y2gsCiAJCQkgICAgICBnZW44X21lZGlhX2tlcm5lbCwgc2l6ZW9mKGdlbjhf bWVkaWFfa2VybmVsKSk7CiAKIH0KKworc3RhdGljIHZvaWQKK19fZ2VuMTFfbWVkaWFfdm1lX2Z1 bmMoc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwKKwkJICAgICAgIGNvbnN0IHN0cnVj dCBpZ3RfYnVmICpzcmMsCisJCSAgICAgICB1bnNpZ25lZCBpbnQgd2lkdGgsIHVuc2lnbmVkIGlu dCBoZWlnaHQsCisJCSAgICAgICBjb25zdCBzdHJ1Y3QgaWd0X2J1ZiAqZHN0LAorCQkgICAgICAg Y29uc3QgdWludDMyX3Qga2VybmVsW11bNF0sCisJCSAgICAgICBzaXplX3Qga2VybmVsX3NpemUp Cit7CisJdWludDMyX3QgY3VyYmVfYnVmZmVyLCBpbnRlcmZhY2VfZGVzY3JpcHRvcjsKKwl1aW50 MzJfdCBiYXRjaF9lbmQ7CisKKwlpbnRlbF9iYXRjaGJ1ZmZlcl9mbHVzaChiYXRjaCk7CisKKwkv KiBzZXR1cCBzdGF0ZXMgKi8KKwliYXRjaC0+cHRyID0gJmJhdGNoLT5idWZmZXJbQkFUQ0hfU1RB VEVfU1BMSVRdOworCisJY3VyYmVfYnVmZmVyID0gZ2VuMTFfZmlsbF9jdXJiZV9idWZmZXJfZGF0 YShiYXRjaCk7CisJaW50ZXJmYWNlX2Rlc2NyaXB0b3IgPSBnZW4xMV9maWxsX2ludGVyZmFjZV9k ZXNjcmlwdG9yKGJhdGNoLCBzcmMsIGRzdCwKKwkJCQkJa2VybmVsLCBrZXJuZWxfc2l6ZSk7CisJ YXNzZXJ0KGJhdGNoLT5wdHIgPCAmYmF0Y2gtPmJ1ZmZlcls0MDk1XSk7CisKKwkvKiBtZWRpYSBw aXBlbGluZSAqLworCWJhdGNoLT5wdHIgPSBiYXRjaC0+YnVmZmVyOworCU9VVF9CQVRDSChHRU44 X1BJUEVMSU5FX1NFTEVDVCB8IFBJUEVMSU5FX1NFTEVDVF9NRURJQSB8CisJCSAgR0VOOV9GT1JD RV9NRURJQV9BV0FLRV9FTkFCTEUgfAorCQkgIEdFTjlfU0FNUExFUl9ET1BfR0FURV9ESVNBQkxF IHwKKwkJICBHRU45X1BJUEVMSU5FX1NFTEVDVElPTl9NQVNLIHwKKwkJICBHRU45X1NBTVBMRVJf RE9QX0dBVEVfTUFTSyB8CisJCSAgR0VOOV9GT1JDRV9NRURJQV9BV0FLRV9NQVNLKTsKKwlnZW45 X2VtaXRfc3RhdGVfYmFzZV9hZGRyZXNzKGJhdGNoKTsKKworCWdlbjhfZW1pdF92ZmVfc3RhdGUo YmF0Y2gsIFRIUkVBRFMsIE1FRElBX1VSQl9FTlRSSUVTLCBNRURJQV9VUkJfU0laRSwKKwkJCSAg ICBNRURJQV9DVVJCRV9TSVpFKTsKKworCWdlbjdfZW1pdF9jdXJiZV9sb2FkKGJhdGNoLCBjdXJi ZV9idWZmZXIpOworCisJZ2VuN19lbWl0X2ludGVyZmFjZV9kZXNjcmlwdG9yX2xvYWQoYmF0Y2gs IGludGVyZmFjZV9kZXNjcmlwdG9yKTsKKworCWdlbjdfZW1pdF9tZWRpYV9vYmplY3RzKGJhdGNo LCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKKworCU9VVF9CQVRDSChHRU44X1BJUEVMSU5FX1NFTEVD VCB8IFBJUEVMSU5FX1NFTEVDVF9NRURJQSB8CisJCSAgR0VOOV9GT1JDRV9NRURJQV9BV0FLRV9E SVNBQkxFIHwKKwkJICBHRU45X1NBTVBMRVJfRE9QX0dBVEVfRU5BQkxFIHwKKwkJICBHRU45X1BJ UEVMSU5FX1NFTEVDVElPTl9NQVNLIHwKKwkJICBHRU45X1NBTVBMRVJfRE9QX0dBVEVfTUFTSyB8 CisJCSAgR0VOOV9GT1JDRV9NRURJQV9BV0FLRV9NQVNLKTsKKworCU9VVF9CQVRDSChNSV9CQVRD SF9CVUZGRVJfRU5EKTsKKworCWJhdGNoX2VuZCA9IGludGVsX2JhdGNoYnVmZmVyX2FsaWduKGJh dGNoLCA4KTsKKwlhc3NlcnQoYmF0Y2hfZW5kIDwgQkFUQ0hfU1RBVEVfU1BMSVQpOworCisJZ2Vu N19yZW5kZXJfZmx1c2goYmF0Y2gsIGJhdGNoX2VuZCk7CisJaW50ZWxfYmF0Y2hidWZmZXJfcmVz ZXQoYmF0Y2gpOworfQorCit2b2lkCitnZW4xMV9tZWRpYV92bWVfZnVuYyhzdHJ1Y3QgaW50ZWxf YmF0Y2hidWZmZXIgKmJhdGNoLAorCQkgICAgIGNvbnN0IHN0cnVjdCBpZ3RfYnVmICpzcmMsCisJ CSAgICAgdW5zaWduZWQgaW50IHdpZHRoLCB1bnNpZ25lZCBpbnQgaGVpZ2h0LAorCQkgICAgIGNv bnN0IHN0cnVjdCBpZ3RfYnVmICpkc3QpCit7CisJX19nZW4xMV9tZWRpYV92bWVfZnVuYyhiYXRj aCwKKwkJCSAgICAgICBzcmMsCisJCQkgICAgICAgd2lkdGgsIGhlaWdodCwKKwkJCSAgICAgICBk c3QsCisJCQkgICAgICAgZ2VuMTFfbWVkaWFfdm1lX2tlcm5lbCwKKwkJCSAgICAgICBzaXplb2Yo Z2VuMTFfbWVkaWFfdm1lX2tlcm5lbCkpOworfQpkaWZmIC0tZ2l0IGEvbGliL21lZGlhX2ZpbGwu aCBiL2xpYi9tZWRpYV9maWxsLmgKaW5kZXggZTM2NWRhOWU0N2QyLi4xZDVjNWZhODI2YTMgMTAw NjQ0Ci0tLSBhL2xpYi9tZWRpYV9maWxsLmgKKysrIGIvbGliL21lZGlhX2ZpbGwuaApAQCAtNDks NCArNDksMTAgQEAgZ2VuOV9tZWRpYV9maWxsZnVuYyhzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIg KmJhdGNoLAogCQkgICAgdW5zaWduZWQgaW50IHdpZHRoLCB1bnNpZ25lZCBpbnQgaGVpZ2h0LAog CQkgICAgdWludDhfdCBjb2xvcik7CiAKK3ZvaWQKK2dlbjExX21lZGlhX3ZtZV9mdW5jKHN0cnVj dCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCisJCSAgICAgY29uc3Qgc3RydWN0IGlndF9idWYg KnNyYywKKwkJICAgICB1bnNpZ25lZCBpbnQgd2lkdGgsIHVuc2lnbmVkIGludCBoZWlnaHQsCisJ CSAgICAgY29uc3Qgc3RydWN0IGlndF9idWYgKmRzdCk7CisKICNlbmRpZiAvKiBSRU5ERV9NRURJ QV9GSUxMX0ggKi8KZGlmZiAtLWdpdCBhL2xpYi9zdXJmYWNlZm9ybWF0LmggYi9saWIvc3VyZmFj ZWZvcm1hdC5oCmluZGV4IDVkN2VkMmNhZGMyZC4uMzJlYTM3MzI2MmNhIDEwMDY0NAotLS0gYS9s aWIvc3VyZmFjZWZvcm1hdC5oCisrKyBiL2xpYi9zdXJmYWNlZm9ybWF0LmgKQEAgLTE3MSw2ICsx NzEsOCBAQAogI2RlZmluZSBTVVJGQUNFRk9STUFUX1IxNkcxNkIxNl9TU0NBTEVECTB4MTlFCiAj ZGVmaW5lIFNVUkZBQ0VGT1JNQVRfUjE2RzE2QjE2X1VTQ0FMRUQJMHgxOUYKIAorI2RlZmluZSBT VVJGQUNFRk9STUFUX1JBVwkweDFGRgorCiAjZGVmaW5lIFNVUkZBQ0VSRVRVUk5GT1JNQVRfRkxP QVQzMgkwCiAjZGVmaW5lIFNVUkZBQ0VSRVRVUk5GT1JNQVRfUzEJMQogCmRpZmYgLS1naXQgYS90 ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwppbmRleCAzZGZl YjViNjcyNzQuLjZkYWJiOWRiZjI0NyAxMDA2NDQKLS0tIGEvdGVzdHMvTWFrZWZpbGUuc291cmNl cworKysgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCkBAIC0zMDIsNiArMzAyLDkgQEAgZ2VtX21h ZHZpc2VfU09VUkNFUyA9IGk5MTUvZ2VtX21hZHZpc2UuYwogVEVTVFNfcHJvZ3MgKz0gZ2VtX21l ZGlhX2ZpbGwKIGdlbV9tZWRpYV9maWxsX1NPVVJDRVMgPSBpOTE1L2dlbV9tZWRpYV9maWxsLmMK IAorVEVTVFNfcHJvZ3MgKz0gZ2VtX21lZGlhX3ZtZQorZ2VtX21lZGlhX3ZtZV9TT1VSQ0VTID0g aTkxNS9nZW1fbWVkaWFfdm1lLmMKKwogVEVTVFNfcHJvZ3MgKz0gZ2VtX21tYXAKIGdlbV9tbWFw X1NPVVJDRVMgPSBpOTE1L2dlbV9tbWFwLmMKIApkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1f bWVkaWFfdm1lLmMgYi90ZXN0cy9pOTE1L2dlbV9tZWRpYV92bWUuYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjhkOWZkODIyYjJlZQotLS0gL2Rldi9udWxsCisrKyBi L3Rlc3RzL2k5MTUvZ2VtX21lZGlhX3ZtZS5jCkBAIC0wLDAgKzEsMTE3IEBACisvKgorICogQ29w eXJpZ2h0IMKpIDIwMTggSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhl cmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQor ICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmls ZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQg cmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMg dG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNl bnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1p dCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28s IHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBj b3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhl IG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBz dWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZU V0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBF WFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhF IEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERB TUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09O VFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4g Q09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdT CisgKiBJTiBUSEUgU09GVFdBUkUuCisgKi8KKyNpbmNsdWRlICJpZ3QuaCIKKyNpbmNsdWRlIDxz dGRib29sLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5j bHVkZSA8c3lzL2lvY3RsLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcu aD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPGludHR5cGVzLmg+CisjaW5jbHVkZSA8 ZXJybm8uaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHN5cy90aW1lLmg+Cisj aW5jbHVkZSAiZHJtLmgiCisjaW5jbHVkZSAiaW50ZWxfYnVmbWdyLmgiCisKK0lHVF9URVNUX0RF U0NSSVBUSU9OKCJBIHZlcnkgc2ltcGxlIHdvcmtsb2FkIGZvciB0aGUgVk1FIG1lZGlhIGJsb2Nr LiIpOworCisjZGVmaW5lIFdJRFRICTY0CisjZGVmaW5lIFNUUklERQkoV0lEVEgpCisjZGVmaW5l IEhFSUdIVAk2NAorCisjZGVmaW5lIElOUFVUX1NJWkUJKFdJRFRIICogSEVJR0hUICogc2l6ZW9m KGNoYXIpICogMS41KQorI2RlZmluZSBPVVRQVVRfU0laRQkoNTYqc2l6ZW9mKGludCkpCisKK3N0 YXRpYyB2b2lkCitzY3JhdGNoX2J1Zl9pbml0KGRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1nciwKKwkJ IHN0cnVjdCBpZ3RfYnVmICpidWYsCisJCSB1bnNpZ25lZCBpbnQgc2l6ZSkKK3sKKwlkcm1faW50 ZWxfYm8gKmJvOworCisJYm8gPSBkcm1faW50ZWxfYm9fYWxsb2MoYnVmbWdyLCAiIiwgc2l6ZSwg NDA5Nik7CisJaWd0X2Fzc2VydChibyk7CisKKwltZW1zZXQoYnVmLCAwLCBzaXplb2YoKmJ1Zikp OworCisJYnVmLT5ibyA9IGJvOworCWJ1Zi0+dGlsaW5nID0gSTkxNV9USUxJTkdfTk9ORTsKKwli dWYtPnNpemUgPSBzaXplOworfQorCitzdGF0aWMgdm9pZCBzY3JhdGNoX2J1Zl9pbml0X3NyYyhk cm1faW50ZWxfYnVmbWdyICpidWZtZ3IsIHN0cnVjdCBpZ3RfYnVmICpidWYpCit7CisJc2NyYXRj aF9idWZfaW5pdChidWZtZ3IsIGJ1ZiwgSU5QVVRfU0laRSk7CisKKwkvKgorCSAqIElkZWFsbHkg d2Ugd291bGQgcmVhZCBzcmMgc3VyZmFjZSBmcm9tIGZpbGUgIlNvdXJjZUZyYW1lSS55dTEyIi4K KwkgKiBCdXQgZXZlbiB3aXRob3V0IGl0LCB3ZSBjYW4gc3RpbGwgdHJpZ2VyIHRoZSByY3MwIHJl c2V0dGluZworCSAqIHdpdGggdGhpcyB2bWUga2VybmVsLgorCSAqLworCisJYnVmLT5zdHJpZGUg PSBTVFJJREU7Cit9CisKK3N0YXRpYyB2b2lkIHNjcmF0Y2hfYnVmX2luaXRfZHN0KGRybV9pbnRl bF9idWZtZ3IgKmJ1Zm1nciwgc3RydWN0IGlndF9idWYgKmJ1ZikKK3sKKwlzY3JhdGNoX2J1Zl9p bml0KGJ1Zm1nciwgYnVmLCBPVVRQVVRfU0laRSk7CisKKwlidWYtPnN0cmlkZSA9IDE7Cit9CisK K2lndF9zaW1wbGVfbWFpbgoreworCWludCBkcm1fZmQ7CisJdWludDMyX3QgZGV2aWQ7CisJZHJt X2ludGVsX2J1Zm1nciAqYnVmbWdyOworCWlndF92bWVfZnVuY190IG1lZGlhX3ZtZTsKKwlzdHJ1 Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoOworCXN0cnVjdCBpZ3RfYnVmIHNyYywgZHN0Owor CisJZHJtX2ZkID0gZHJtX29wZW5fZHJpdmVyKERSSVZFUl9JTlRFTCk7CisJaWd0X3JlcXVpcmVf Z2VtKGRybV9mZCk7CisKKwlkZXZpZCA9IGludGVsX2dldF9kcm1fZGV2aWQoZHJtX2ZkKTsKKwor CW1lZGlhX3ZtZSA9IGlndF9nZXRfbWVkaWFfdm1lX2Z1bmMoZGV2aWQpOworCWlndF9yZXF1aXJl X2YobWVkaWFfdm1lLCAibm8gbWVkaWEtdm1lIGZ1bmN0aW9uXG4iKTsKKworCWJ1Zm1nciA9IGRy bV9pbnRlbF9idWZtZ3JfZ2VtX2luaXQoZHJtX2ZkLCA0MDk2KTsKKwlpZ3RfYXNzZXJ0KGJ1Zm1n cik7CisKKwliYXRjaCA9IGludGVsX2JhdGNoYnVmZmVyX2FsbG9jKGJ1Zm1nciwgZGV2aWQpOwor CWlndF9hc3NlcnQoYmF0Y2gpOworCisJc2NyYXRjaF9idWZfaW5pdF9zcmMoYnVmbWdyLCAmc3Jj KTsKKwlzY3JhdGNoX2J1Zl9pbml0X2RzdChidWZtZ3IsICZkc3QpOworCisJaWd0X2ZvcmtfaGFu Z19kZXRlY3Rvcihkcm1fZmQpOworCisJbWVkaWFfdm1lKGJhdGNoLCAmc3JjLCBXSURUSCwgSEVJ R0hULCAmZHN0KTsKKworCWdlbV9zeW5jKGRybV9mZCwgZHN0LmJvLT5oYW5kbGUpOworCisJaWd0 X3N0b3BfaGFuZ19kZXRlY3RvcigpOworfQpkaWZmIC0tZ2l0IGEvdGVzdHMvbWVzb24uYnVpbGQg Yi90ZXN0cy9tZXNvbi5idWlsZAppbmRleCBmNDFmNzI0YWY4YWYuLmUzYTRhODRlYTdjYyAxMDA2 NDQKLS0tIGEvdGVzdHMvbWVzb24uYnVpbGQKKysrIGIvdGVzdHMvbWVzb24uYnVpbGQKQEAgLTE2 Niw2ICsxNjYsNyBAQCBnZW1fcHJvZ3MgPSBbCiAJJ2dlbV9sdXRfaGFuZGxlJywKIAknZ2VtX21h ZHZpc2UnLAogCSdnZW1fbWVkaWFfZmlsbCcsCisJJ2dlbV9tZWRpYV92bWUnLAogCSdnZW1fbW1h cCcsCiAJJ2dlbV9tbWFwX2d0dCcsCiAJJ2dlbV9tbWFwX29mZnNldF9leGhhdXN0aW9uJywKLS0g CjIuMTkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==